Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mfcr9-0001gK-5G for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Oct 2021 06:56:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mfcr7-0005Up-QM for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Oct 2021 06:56:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mfcr7-0005Ug-8j for pgsql-hackers@lists.postgresql.org; Wed, 27 Oct 2021 06:56:13 +0000 Received: from smtp-fw-6002.amazon.com ([52.95.49.90]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mfcr1-00082C-Mu for pgsql-hackers@postgresql.org; Wed, 27 Oct 2021 06:56:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1635317768; x=1666853768; h=message-id:date:mime-version:subject:from:to:cc: references:in-reply-to; bh=8UElCgesJuGP/pRQZ48Ct74JuEm5cuq8diY/ypHGPsE=; b=bafM1q/10iEqxXcU1rRYv9dRfv+uD15cwA8TOduG/pBWzpTVazcbUXWz 0BCuPK7OG3PM3d4l3TpYZ4L8Fa2FAD9rx9hXLmd8ZlaGF9+f7rHlBVlwe mxco3jppLeiy+GmoswUBkRzPRKX0C4m6xQwHna38TIu2Mq4PbzW5WvMiv Y=; X-Amazon-filename: v25-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch, v25-0002-Handle-logical-slot-conflicts-on-standby.patch, v25-0003-Allow-logical-decoding-on-standby.patch, v25-0004-New-TAP-test-for-logical-decoding-on-standby.patch, v25-0005-Doc-changes-describing-details-about-logical-dec.patch, v25-0006-Fixing-Walsender-corner-cases-with-logical-decod.patch X-IronPort-AV: E=Sophos;i="5.87,186,1631577600"; d="scan'208,217,223";a="150811207" Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-pdx-2a-92ba9394.us-west-2.amazon.com) ([10.43.8.2]) by smtp-border-fw-6002.iad6.amazon.com with ESMTP; 27 Oct 2021 06:55:58 +0000 Received: from EX13D03EUC003.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan2.pdx.amazon.com [10.236.137.194]) by email-inbound-relay-pdx-2a-92ba9394.us-west-2.amazon.com (Postfix) with ESMTPS id BA26941B27; Wed, 27 Oct 2021 06:55:55 +0000 (UTC) Received: from [192.168.28.212] (10.43.161.86) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.24; Wed, 27 Oct 2021 06:55:50 +0000 Content-Type: multipart/mixed; boundary="------------ut3TX0W0zxc9jxmQce5fK1MC" Message-ID: <688cbedf-a172-f0d8-8352-d4ea223bceeb@amazon.com> Date: Wed, 27 Oct 2021 08:55:45 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.2.1 Subject: Re: Minimal logical decoding on standbys Content-Language: en-US From: "Drouvot, Bertrand" To: Alvaro Herrera , Andres Freund CC: Ibrar Ahmed , Amit Khandekar , , tushar , "[pgdg] Robert Haas" , Rahila Syed , pgsql-hackers References: <202107281526.o74ieuj6sj7z@alvherre.pgsql> <2b14d595-1e8b-e5b6-6098-6a11d19fa1c7@amazon.com> In-Reply-To: <2b14d595-1e8b-e5b6-6098-6a11d19fa1c7@amazon.com> X-Originating-IP: [10.43.161.86] X-ClientProxiedBy: EX13D08UWC001.ant.amazon.com (10.43.162.110) To EX13D03EUC003.ant.amazon.com (10.43.164.192) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --------------ut3TX0W0zxc9jxmQce5fK1MC Content-Type: multipart/alternative; boundary="------------23Km0FNFtRKeEE9gTi0z4Aii" --------------23Km0FNFtRKeEE9gTi0z4Aii Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit Hi, On 9/15/21 1:36 PM, Drouvot, Bertrand wrote: > > Hi, > > On 9/9/21 9:17 AM, Drouvot, Bertrand wrote: >> >> Hi Alvaro, >> >> On 8/2/21 4:56 PM, Drouvot, Bertrand wrote: >>> Hi Alvaro, >>> >>> On 7/28/21 5:26 PM, Alvaro Herrera wrote: >>>> On 2021-Jul-27, Drouvot, Bertrand wrote: >>>> >>>>> diff --git a/src/backend/utils/cache/lsyscache.c >>>>> b/src/backend/utils/cache/lsyscache.c >>>>> +bool >>>>> +get_rel_logical_catalog(Oid relid) >>>>> +{ >>>>> +     bool    res; >>>>> +     Relation rel; >>>>> + >>>>> +     /* assume previously locked */ >>>>> +     rel = table_open(relid, NoLock); >>>>> +     res = RelationIsAccessibleInLogicalDecoding(rel); >>>>> +     table_close(rel, NoLock); >>>>> + >>>>> +     return res; >>>>> +} >>>> So RelationIsAccessibleInLogicalDecoding() does a cheap check for >>>> wal_level which can be done without opening the table; I think this >>>> function should be rearranged to avoid doing that when not needed. >>> >>> Thanks for looking at it. >>> >>> >>>> Also, putting this function in lsyscache.c seems somewhat wrong since >>>> it's not merely accessing the system caches ... >>>> >>>> I think it would be better to move this elsewhere (relcache.c, >>>> proto in >>>> relcache.h, perhaps call it >>>> RelationIdIsAccessibleInLogicalDecoding) and >>>> short-circuit for the check that can be done before opening the table. >> >> So you have in mind to check for XLogLogicalInfoActive() first, and >> if true, then open the relation and call >> RelationIsAccessibleInLogicalDecoding()? >> >> If so, then what about also creating a new >> RelationIsAccessibleWhileLogicalWalLevel() or something like this >> doing the same as RelationIsAccessibleInLogicalDecoding() but without >> the XLogLogicalInfoActive() check? >> >>>> At least the GiST code appears to be able to call this several >>>> times per >>>> vacuum run, so it makes sense to short-circuit it for the fast case. >>>> >>>> ... though looking at the GiST code again I wonder if it would be more >>>> sensible to just stash the table's Relation pointer somewhere in the >>>> context structs >> >> Do you have a "good place" in mind? >> > Another rebase attached. > > The patch proposal to address Andre's walsender corner cases is still > a dedicated commit (as i think it may be easier to discuss). > Another rebase attached (mainly to fix TAP tests failing due to b3b4d8e68a). @Andres, the patch file number 6 contains an attempt to fix the Walsender corner case you pointed out. @Alvaro, I did not look at your remark yet. Do you have a "good place" in mind? (related to "just stash the table's Relation pointer somewhere in the context structs") Given the size of this patch series, I'm wondering if we could start committing piece per piece (while still working on the corner cases in parallel). That would maximize the amount of coverage it gets in the v15 development cycle. What do you think? Thanks Bertrand --------------23Km0FNFtRKeEE9gTi0z4Aii Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 8bit

Hi,

On 9/15/21 1:36 PM, Drouvot, Bertrand wrote:

Hi,

On 9/9/21 9:17 AM, Drouvot, Bertrand wrote:

Hi Alvaro,

On 8/2/21 4:56 PM, Drouvot, Bertrand wrote:
Hi Alvaro,

On 7/28/21 5:26 PM, Alvaro Herrera wrote:
On 2021-Jul-27, Drouvot, Bertrand wrote:

diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c
+bool
+get_rel_logical_catalog(Oid relid)
+{
+     bool    res;
+     Relation rel;
+
+     /* assume previously locked */
+     rel = table_open(relid, NoLock);
+     res = RelationIsAccessibleInLogicalDecoding(rel);
+     table_close(rel, NoLock);
+
+     return res;
+}
So RelationIsAccessibleInLogicalDecoding() does a cheap check for
wal_level which can be done without opening the table; I think this
function should be rearranged to avoid doing that when not needed.

Thanks for looking at it.


Also, putting this function in lsyscache.c seems somewhat wrong since
it's not merely accessing the system caches ...

I think it would be better to move this elsewhere (relcache.c, proto in
relcache.h, perhaps call it RelationIdIsAccessibleInLogicalDecoding) and
short-circuit for the check that can be done before opening the table.

So you have in mind to check for XLogLogicalInfoActive() first, and if true, then open the relation and call
RelationIsAccessibleInLogicalDecoding()?

If so, then what about also creating a new RelationIsAccessibleWhileLogicalWalLevel() or something like this doing the same as RelationIsAccessibleInLogicalDecoding() but without the XLogLogicalInfoActive() check?

At least the GiST code appears to be able to call this several times per
vacuum run, so it makes sense to short-circuit it for the fast case.

... though looking at the GiST code again I wonder if it would be more
sensible to just stash the table's Relation pointer somewhere in the
context structs

Do you have a "good place" in mind?

Another rebase attached.

The patch proposal to address Andre's walsender corner cases is still a dedicated commit (as i think it may be easier to discuss).

Another rebase attached (mainly to fix TAP tests failing due to b3b4d8e68a).

@Andres, the patch file number 6 contains an attempt to fix the Walsender corner case you pointed out.

@Alvaro, I did not look at your remark yet. Do you have a "good place" in mind? (related to "just stash the table's Relation pointer somewhere in the context structs")

Given the size of this patch series, I'm wondering if we could start committing piece per piece (while still working on the corner cases in parallel).

That would maximize the amount of coverage it gets in the v15 development cycle.

What do you think?

Thanks

Bertrand

--------------23Km0FNFtRKeEE9gTi0z4Aii-- --------------ut3TX0W0zxc9jxmQce5fK1MC Content-Type: text/plain; charset="UTF-8"; name="v25-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v25-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3NDhiMTEwNGJmMmY1YWNmZDk5MzZlNDg2NDEyNTEwZDIyODAzOWNkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyNiBPY3QgMjAyMSAxNDozMDoyMiArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjI1IDEvNl0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y IGxvZ2ljYWwKIHNsb3QgY29uZmxpY3QgaGFuZGxpbmcuCgpXaGVuIGEgV0FMIHJlcGxheSBv biBzdGFuZGJ5IGluZGljYXRlcyB0aGF0IGEgY2F0YWxvZyB0YWJsZSB0dXBsZSBpcwp0byBi ZSBkZWxldGVkIGJ5IGFuIHhpZCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBhIGxvZ2ljYWwgc2xv dCdzCmNhdGFsb2dfeG1pbiwgdGhlbiB0aGF0IG1lYW5zIHRoZSBzbG90J3MgY2F0YWxvZ194 bWluIGNvbmZsaWN0cyB3aXRoCnRoZSB4aWQsIGFuZCB3ZSBuZWVkIHRvIGhhbmRsZSB0aGUg Y29uZmxpY3QuICBXaGlsZSBzdWJzZXF1ZW50IGNvbW1pdHMKd2lsbCBkbyB0aGUgYWN0dWFs IGNvbmZsaWN0IGhhbmRsaW5nLCB0aGlzIGNvbW1pdCBhZGRzIGEgbmV3IGZpZWxkCm9uQ2F0 YWxvZ1RhYmxlIGluIHN1Y2ggV0FMIHJlY29yZHMsIHRoYXQgaXMgdHJ1ZSBmb3IgY2F0YWxv ZyB0YWJsZXMsCnNvIGFzIHRvIGFycmFuZ2UgZm9yIGNvbmZsaWN0IGhhbmRsaW5nLgoKQXV0 aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVr YXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFu ZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYyAgICAgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYyAgICAgIHwgIDQgKystLQogc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyAgICAgIHwgIDQgKysrLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaGluc2VydC5jICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMgICAgICAgIHwgIDQgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJp bGl0eW1hcC5jIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5j ICAgICB8IDEyICsrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2 YWN1dW0uYyAgIHwgIDggKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNj YWNoZS5jICAgICB8IDE1ICsrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvYWNjZXNzL2dp c3RfcHJpdmF0ZS5oICAgICAgIHwgIDYgKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dHhsb2cuaCAgICAgICAgICAgfCAgMyArKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hs b2cuaCAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o ICAgICAgICB8ICA1ICsrKystCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oICAgICAg ICAgICAgfCAgMiArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCAgICAgICAgICAg IHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggICAgICAgICAgIHwgIDEg Kwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgIHwgIDkgKysrKysr KysrCiAxOSBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMo LSkKICAxNy45JSBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC8KICAxMy4xJSBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC8KICAxNC41JSBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlLwogICA4 LjklIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3QvCiAgIDcuMiUgc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvCiAgMTkuNiUgc3JjL2luY2x1ZGUvYWNjZXNzLwogIDE2LjYlIHNyYy9pbmNs dWRlL3V0aWxzLwoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Qu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwppbmRleCAwNjgzZjQyYzI1Li5i NmU2MzQwYzNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCkBAIC0zNDgsNyArMzQ4LDcg QEAgZ2lzdHBsYWNldG9wYWdlKFJlbGF0aW9uIHJlbCwgU2l6ZSBmcmVlc3BhY2UsIEdJU1RT VEFURSAqZ2lzdHN0YXRlLAogCQlmb3IgKDsgcHRyOyBwdHIgPSBwdHItPm5leHQpCiAJCXsK IAkJCS8qIEFsbG9jYXRlIG5ldyBwYWdlICovCi0JCQlwdHItPmJ1ZmZlciA9IGdpc3ROZXdC dWZmZXIocmVsKTsKKwkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihoZWFwUmVsLCBy ZWwpOwogCQkJR0lTVEluaXRCdWZmZXIocHRyLT5idWZmZXIsIChpc19sZWFmKSA/IEZfTEVB RiA6IDApOwogCQkJcHRyLT5wYWdlID0gQnVmZmVyR2V0UGFnZShwdHItPmJ1ZmZlcik7CiAJ CQlwdHItPmJsb2NrLmJsa25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocHRyLT5idWZmZXIp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwppbmRleCBiYWFkMjhjMDlmLi42 ZDk0ODU0OGMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVp bGQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtMjkw LDcgKzI5MCw3IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAJCVBhZ2UJCXBhZ2U7CiAKIAkJLyogaW5pdGlhbGl6 ZSB0aGUgcm9vdCBwYWdlICovCi0JCWJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIoaW5kZXgpOwor CQlidWZmZXIgPSBnaXN0TmV3QnVmZmVyKGhlYXAsIGluZGV4KTsKIAkJQXNzZXJ0KEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGJ1ZmZlcikgPT0gR0lTVF9ST09UX0JMS05PKTsKIAkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHV0aWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGls LmMKaW5kZXggNDNiYTAzYjZlYi4uMWQxZTIxMTEyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dXRpbC5jCkBAIC04MjAsNyArODIwLDcgQEAgZ2lzdGNoZWNrcGFnZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYpCiAgKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGluaXRp YWxpemluZyB0aGUgcGFnZSBieSBjYWxsaW5nIEdJU1RJbml0QnVmZmVyCiAgKi8KIEJ1ZmZl cgotZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKQorZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiBo ZWFwUmVsLCBSZWxhdGlvbiByKQogewogCUJ1ZmZlcgkJYnVmZmVyOwogCWJvb2wJCW5lZWRM b2NrOwpAQCAtODY0LDcgKzg2NCw3IEBAIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcikKIAkJ CQkgKiBwYWdlJ3MgZGVsZXRlWGlkLgogCQkJCSAqLwogCQkJCWlmIChYTG9nU3RhbmRieUlu Zm9BY3RpdmUoKSAmJiBSZWxhdGlvbk5lZWRzV0FMKHIpKQotCQkJCQlnaXN0WExvZ1BhZ2VS ZXVzZShyLCBibGtubywgR2lzdFBhZ2VHZXREZWxldGVYaWQocGFnZSkpOworCQkJCQlnaXN0 WExvZ1BhZ2VSZXVzZShoZWFwUmVsLCByLCBibGtubywgR2lzdFBhZ2VHZXREZWxldGVYaWQo cGFnZSkpOwogCiAJCQkJcmV0dXJuIGJ1ZmZlcjsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0eGxvZy5jCmluZGV4IDY0NjRjYjkyODEuLjQ2YWVlNmYyYTkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtNTk2LDcgKzU5Niw4IEBAIGdpc3RYTG9nQXNz aWduTFNOKHZvaWQpCiAgKiBXcml0ZSBYTE9HIHJlY29yZCBhYm91dCByZXVzZSBvZiBhIGRl bGV0ZWQgcGFnZS4KICAqLwogdm9pZAotZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhp ZCkKK2dpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIGhlYXBSZWwsIFJlbGF0aW9uIHJlbCwK KwkJCQkgIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1v dmVkWGlkKQogewogCWdpc3R4bG9nUGFnZVJldXNlIHhscmVjX3JldXNlOwogCkBAIC02MDcs NiArNjA4LDcgQEAgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3YKIAkgKi8KIAogCS8qIFhM T0cgc3R1ZmYgKi8KKwl4bHJlY19yZXVzZS5vbkNhdGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNB Y2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcFJlbCk7CiAJeGxyZWNfcmV1c2Uubm9k ZSA9IHJlbC0+cmRfbm9kZTsKIAl4bHJlY19yZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVj X3JldXNlLmxhdGVzdFJlbW92ZWRGdWxsWGlkID0gbGF0ZXN0UmVtb3ZlZFhpZDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwppbmRleCBmZTlmMGRmMjBiLi5jMmI2N2Ey NWUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCkBAIC0zOTgsNiAr Mzk4LDcgQEAgX2hhc2hfdmFjdXVtX29uZV9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aHJlbCwgQnVmZmVyIG1ldGFidWYsIEJ1ZmZlciBidWYpCiAJCQl4bF9oYXNoX3ZhY3V1bV9v bmVfcGFnZSB4bHJlYzsKIAkJCVhMb2dSZWNQdHIJcmVjcHRyOwogCisJCQl4bHJlYy5vbkNh dGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaHJl bCk7CiAJCQl4bHJlYy5sYXRlc3RSZW1vdmVkWGlkID0gbGF0ZXN0UmVtb3ZlZFhpZDsKIAkJ CXhscmVjLm50dXBsZXMgPSBuZGVsZXRhYmxlOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCmluZGV4IDJkYTJiZTE2OTYuLjNjNDVjNTgzY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbS5jCkBAIC03OTQ1LDYgKzc5NDUsNyBAQCBsb2dfaGVhcF9mcmVlemUoUmVsYXRp b24gcmVsbiwgQnVmZmVyIGJ1ZmZlciwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAogCS8q IG5vciB3aGVuIHRoZXJlIGFyZSBubyB0dXBsZXMgdG8gZnJlZXplICovCiAJQXNzZXJ0KG50 dXBsZXMgPiAwKTsKIAorCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vz c2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxuKTsKIAl4bHJlYy5jdXRvZmZfeGlkID0gY3V0 b2ZmX3hpZDsKIAl4bHJlYy5udHVwbGVzID0gbnR1cGxlczsKIApAQCAtNzk3NSw3ICs3OTc2 LDcgQEAgbG9nX2hlYXBfZnJlZXplKFJlbGF0aW9uIHJlbG4sIEJ1ZmZlciBidWZmZXIsIFRy YW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKICAqIGhlYXBfYnVmZmVyLCBpZiBuZWNlc3Nhcnku CiAgKi8KIFhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZU5vZGUgcm5vZGUs IEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKK2xvZ19oZWFwX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIs CiAJCQkJIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwgdWludDggdm1mbGFncykKIHsKIAl4 bF9oZWFwX3Zpc2libGUgeGxyZWM7CkBAIC03OTg1LDYgKzc5ODYsNyBAQCBsb2dfaGVhcF92 aXNpYmxlKFJlbEZpbGVOb2RlIHJub2RlLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2 bV9idWZmZXIsCiAJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9idWZmZXIpKTsKIAlBc3Nl cnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKIAorCXhscmVjLm9uQ2F0YWxvZ1RhYmxl ID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpOwogCXhscmVj LmN1dG9mZl94aWQgPSBjdXRvZmZfeGlkOwogCXhscmVjLmZsYWdzID0gdm1mbGFnczsKIAlY TG9nQmVnaW5JbnNlcnQoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5k ZXggZGI2OTEyZTlmYS4uYjg0OGQwZTVhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKQEAgLTMyMyw2ICszMjMsNyBAQCBoZWFwX3BhZ2VfcHJ1bmUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQl4bHJlYy5sYXRlc3RSZW1vdmVkWGlkID0g cHJzdGF0ZS5sYXRlc3RSZW1vdmVkWGlkOwogCQkJeGxyZWMubnJlZGlyZWN0ZWQgPSBwcnN0 YXRlLm5yZWRpcmVjdGVkOwogCQkJeGxyZWMubmRlYWQgPSBwcnN0YXRlLm5kZWFkOworCQkJ eGxyZWMub25DYXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERl Y29kaW5nKHJlbGF0aW9uKTsKIAogCQkJWExvZ0JlZ2luSW5zZXJ0KCk7CiAJCQlYTG9nUmVn aXN0ZXJEYXRhKChjaGFyICopICZ4bHJlYywgU2l6ZU9mSGVhcFBydW5lKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwppbmRleCAxMTRmYmJkZDMwLi4yNTk3 NjM2YmYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5 bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBA IC0yODIsNyArMjgyLDcgQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKIAkJCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHJlY3B0cikpCiAJCQl7CiAJCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQly ZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbC0+cmRfbm9kZSwgaGVhcEJ1Ziwgdm1CdWYs CisJCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlzaWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLAog CQkJCQkJCQkJCSAgY3V0b2ZmX3hpZCwgZmxhZ3MpOwogCiAJCQkJLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRwYWdlLmMKaW5kZXggNWJjN2MzNjE2YS4uM2ZkNTliMmEzYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNp bmNsdWRlICJ1dGlscy9tZW1kZWJ1Zy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogCiBzdGF0aWMgQlRNZXRhUGFnZURhdGEgKl9idF9nZXRtZXRhKFJlbGF0aW9uIHJl bCwgQnVmZmVyIG1ldGFidWYpOwogc3RhdGljIHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCkBAIC00Myw3ICs0NCw4IEBAIHN0YXRp YyB2b2lkIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJs a25vLAogc3RhdGljIHZvaWQgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCiAJCQkJCQkJCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwKIAkJ CQkJCQkJT2Zmc2V0TnVtYmVyICpkZWxldGFibGUsIGludCBuZGVsZXRhYmxlLAotCQkJCQkJ CQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUpOworCQkJCQkJ CQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCisJCQkJCQkJ CVJlbGF0aW9uIGhlYXBSZWwpOwogc3RhdGljIGNoYXIgKl9idF9kZWxpdGVtc191cGRhdGUo QlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAogCQkJCQkJCQkg T2Zmc2V0TnVtYmVyICp1cGRhdGVkb2Zmc2V0cywKIAkJCQkJCQkJIFNpemUgKnVwZGF0ZWRi dWZsZW4sIGJvb2wgbmVlZHN3YWwpOwpAQCAtODM2LDYgKzgzOCw3IEBAIF9idF9sb2dfcmV1 c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rp b25JZCBzYWZleGlkKQogCSAqLwogCiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3JldXNl Lm9uQ2F0YWxvZ1RhYmxlID0gZ2V0X3JlbF9sb2dpY2FsX2NhdGFsb2cocmVsLT5yZF9pbmRl eC0+aW5kcmVsaWQpOwogCXhscmVjX3JldXNlLm5vZGUgPSByZWwtPnJkX25vZGU7CiAJeGxy ZWNfcmV1c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5sYXRlc3RSZW1vdmVkRnVs bFhpZCA9IHNhZmV4aWQ7CkBAIC0xMjk2LDcgKzEyOTksOCBAQCBfYnRfZGVsaXRlbXNfdmFj dXVtKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIHN0YXRpYyB2b2lkCiBfYnRfZGVsaXRl bXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgVHJhbnNhY3Rpb25JZCBsYXRl c3RSZW1vdmVkWGlkLAogCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5kZWxl dGFibGUsCi0JCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJs ZSkKKwkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAor CQkJCQlSZWxhdGlvbiBoZWFwUmVsKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1Zik7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTEzNTgsNiArMTM2Miw4IEBAIF9i dF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBUcmFuc2FjdGlv bklkIGxhdGVzdFJlbW92ZWRYaWQsCiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCQl4bF9idHJl ZV9kZWxldGUgeGxyZWNfZGVsZXRlOwogCisJCXhscmVjX2RlbGV0ZS5vbkNhdGFsb2dUYWJs ZSA9CisJCQlSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXBSZWwp OwogCQl4bHJlY19kZWxldGUubGF0ZXN0UmVtb3ZlZFhpZCA9IGxhdGVzdFJlbW92ZWRYaWQ7 CiAJCXhscmVjX2RlbGV0ZS5uZGVsZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2RlbGV0 ZS5udXBkYXRlZCA9IG51cGRhdGFibGU7CkBAIC0xNjg1LDcgKzE2OTEsNyBAQCBfYnRfZGVs aXRlbXNfZGVsZXRlX2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRpb24g aGVhcFJlbCwKIAogCS8qIFBoeXNpY2FsbHkgZGVsZXRlIHR1cGxlcyAob3IgVElEcykgdXNp bmcgZGVsZXRhYmxlIChvciB1cGRhdGFibGUpICovCiAJX2J0X2RlbGl0ZW1zX2RlbGV0ZShy ZWwsIGJ1ZiwgbGF0ZXN0UmVtb3ZlZFhpZCwgZGVsZXRhYmxlLCBuZGVsZXRhYmxlLAotCQkJ CQkJdXBkYXRhYmxlLCBudXBkYXRhYmxlKTsKKwkJCQkJCXVwZGF0YWJsZSwgbnVwZGF0YWJs ZSwgaGVhcFJlbCk7CiAKIAkvKiBiZSB0aWR5ICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBu dXBkYXRhYmxlOyBpKyspCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0 L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpp bmRleCA3NmZiMDM3NGM0Li4zMTg2ODg1ZDE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdp c3Qvc3BndmFjdXVtLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2lu ZGV4ZnNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMv c25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCiAKIC8qIEVudHJ5 IGluIHBlbmRpbmctbGlzdCBvZiBUSURzIHdlIG5lZWQgdG8gcmV2aXNpdCAqLwpAQCAtNTAz LDYgKzUwNCwxMyBAQCB2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGlu ZGV4LCBCdWZmZXIgYnVmZmVyKQogCXNwZ3hsb2dWYWN1dW1SZWRpcmVjdCB4bHJlYzsKIAlH bG9iYWxWaXNTdGF0ZSAqdmlzdGVzdDsKIAorCS8qCisJICogVGhlcmUgaXMgbm8gY2hhbmNl IG9mIGVuZGxlc3MgcmVjdXJzaW9uIGV2ZW4gd2hlbiB3ZSBhcmUgZG9pbmcgY2F0YWxvZwor CSAqIGFjY2VzZXMgaGVyZTsgYmVjYXVzZSwgc3BnaXN0IGlzIG5ldmVyIHVzZWQgZm9yIGNh dGFsb2dzLiBDaGVjaworCSAqIGNvbW1lbnRzIGluIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5M b2dpY2FsRGVjb2RpbmcoKS4KKwkgKi8KKwl4bHJlYy5vbkNhdGFsb2dUYWJsZSA9IGdldF9y ZWxfbG9naWNhbF9jYXRhbG9nKGluZGV4LT5yZF9pbmRleC0+aW5kcmVsaWQpOworCiAJeGxy ZWMublRvUGxhY2Vob2xkZXIgPSAwOwogCXhscmVjLm5ld2VzdFJlZGlyZWN0WGlkID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMK aW5kZXggNGViYWE1NTJhMi4uMmZkYTIzODg3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv bHN5c2NhY2hlLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5o IgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3Mv bmJ0cmVlLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiYm9vdHN0 cmFwL2Jvb3RzdHJhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19hbS5oIgpAQCAtMjA2Miw2ICsyMDYzLDIwIEBAIGdldF9yZWxf cGVyc2lzdGVuY2UoT2lkIHJlbGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wKK2dl dF9yZWxfbG9naWNhbF9jYXRhbG9nKE9pZCByZWxpZCkKK3sKKwlib29sCXJlczsKKwlSZWxh dGlvbiByZWw7CisKKwkvKiBhc3N1bWUgcHJldmlvdXNseSBsb2NrZWQgKi8KKwlyZWwgPSB0 YWJsZV9vcGVuKHJlbGlkLCBOb0xvY2spOworCXJlcyA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxl SW5Mb2dpY2FsRGVjb2RpbmcocmVsKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisK KwlyZXR1cm4gcmVzOworfQorCiAKIC8qCQkJCS0tLS0tLS0tLS0gVFJBTlNGT1JNIENBQ0hF IC0tLS0tLS0tLS0JCQkJCQkgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L2dpc3RfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCmlu ZGV4IDU1M2QzNjRlMmQuLmEwZjQwMTU1NTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9naXN0X3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2 YXRlLmgKQEAgLTQ0MCw4ICs0NDAsOCBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1Bh Z2VEZWxldGUoQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSBGdWxsVHJhbnNhY3Rpb25JZCB4 aWQsIEJ1ZmZlciBwYXJlbnRCdWZmZXIsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyIGRvd25s aW5rT2Zmc2V0KTsKIAotZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBibGtubywKLQkJCQkJCQkgIEZ1bGxUcmFuc2FjdGlvbklkIGxh dGVzdFJlbW92ZWRYaWQpOworZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRp b24gaGVhcFJlbCwgUmVsYXRpb24gcmVsLAorCQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1 bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQpOwogCiBleHRlcm4gWExvZ1JlY1B0 ciBnaXN0WExvZ1VwZGF0ZShCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgT2Zmc2V0TnVtYmVy ICp0b2RlbGV0ZSwgaW50IG50b2RlbGV0ZSwKQEAgLTQ4NSw3ICs0ODUsNyBAQCBleHRlcm4g Ym9vbCBnaXN0cHJvcGVydHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vLAogZXh0ZXJuIGJv b2wgZ2lzdGZpdHBhZ2UoSW5kZXhUdXBsZSAqaXR2ZWMsIGludCBsZW4pOwogZXh0ZXJuIGJv b2wgZ2lzdG5vc3BhY2UoUGFnZSBwYWdlLCBJbmRleFR1cGxlICppdHZlYywgaW50IGxlbiwg T2Zmc2V0TnVtYmVyIHRvZGVsZXRlLCBTaXplIGZyZWVzcGFjZSk7CiBleHRlcm4gdm9pZCBn aXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVmZmVy IGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcik7CitleHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZm ZXIoUmVsYXRpb24gaGVhcFJlbCwgUmVsYXRpb24gcik7CiBleHRlcm4gYm9vbCBnaXN0UGFn ZVJlY3ljbGFibGUoUGFnZSBwYWdlKTsKIGV4dGVybiB2b2lkIGdpc3RmaWxsYnVmZmVyKFBh Z2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR1cCwgaW50IGxlbiwKIAkJCQkJCSAgIE9mZnNldE51 bWJlciBvZmYpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAppbmRleCBmZDUxNDRmMjU4Li43Mzk5 OWRkYzcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaApAQCAtNDksOSArNDksOSBAQCB0eXBl ZGVmIHN0cnVjdCBnaXN0eGxvZ1BhZ2VVcGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgZ2lz dHhsb2dEZWxldGUKIHsKKwlib29sCQlvbkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklk IGxhdGVzdFJlbW92ZWRYaWQ7CiAJdWludDE2CQludG9kZWxldGU7CQkvKiBudW1iZXIgb2Yg ZGVsZXRlZCBvZmZzZXRzICovCi0KIAkvKgogCSAqIEluIHBheWxvYWQgb2YgYmxrIDAgOiB0 b2RlbGV0ZSBPZmZzZXROdW1iZXJzCiAJICovCkBAIC05Nyw2ICs5Nyw3IEBAIHR5cGVkZWYg c3RydWN0IGdpc3R4bG9nUGFnZURlbGV0ZQogICovCiB0eXBlZGVmIHN0cnVjdCBnaXN0eGxv Z1BhZ2VSZXVzZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVJlbEZpbGVOb2RlIG5v ZGU7CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVt b3ZlZEZ1bGxYaWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9n LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggNDM1M2EzMmRiYi4u OTRjMzI5MmMxZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApAQCAtMjUwLDYgKzI1MCw3 IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hhc2hfaW5pdF9iaXRtYXBfcGFnZQogICovCiB0eXBl ZGVmIHN0cnVjdCB4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZQogeworCWJvb2wJCW9uQ2F0YWxv Z1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAlpbnQJCQludHVw bGVzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDI3ZGI0ODE4NGUuLmVi YTQ4YjBhZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0yNDIsNiArMjQy LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1 Y3QgeGxfaGVhcF9wcnVuZQogeworCWJvb2wgICAgICBvbkNhdGFsb2dUYWJsZTsKIAlUcmFu c2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQ7CiAJdWludDE2CQlucmVkaXJlY3RlZDsKIAl1 aW50MTYJCW5kZWFkOwpAQCAtMzM4LDYgKzMzOSw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hl YXBfZnJlZXplX3R1cGxlCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJlZXplX3Bh Z2UKIHsKKwlib29sCQlvbkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklkIGN1dG9mZl94 aWQ7CiAJdWludDE2CQludHVwbGVzOwogfSB4bF9oZWFwX2ZyZWV6ZV9wYWdlOwpAQCAtMzUy LDYgKzM1NCw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJlZXplX3BhZ2UKICAqLwog dHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF92aXNpYmxlCiB7CisJYm9vbAkJb25DYXRhbG9nVGFi bGU7CiAJVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkOwogCXVpbnQ4CQlmbGFnczsKIH0geGxf aGVhcF92aXNpYmxlOwpAQCAtNDEzLDcgKzQxNiw3IEBAIGV4dGVybiBib29sIGhlYXBfcHJl cGFyZV9mcmVlemVfdHVwbGUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLAogCQkJCQkJCQkJICBi b29sICp0b3RhbGx5X2Zyb3plbik7CiBleHRlcm4gdm9pZCBoZWFwX2V4ZWN1dGVfZnJlZXpl X3R1cGxlKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwKIAkJCQkJCQkJCSAgeGxfaGVhcF9mcmVl emVfdHVwbGUgKnhscmVjX3RwKTsKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2li bGUoUmVsRmlsZU5vZGUgcm5vZGUsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKK2V4dGVybiBYTG9n UmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZm ZXIsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsIFRyYW5zYWN0aW9uSWQgY3V0b2Zm X3hpZCwgdWludDggZmxhZ3MpOwogCiAjZW5kaWYJCQkJCQkJLyogSEVBUEFNX1hMT0dfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9uYnR4bG9nLmgKaW5kZXggMGY3NzMxODU2Yi4uYjE1YWE0N2YxYiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvbmJ0eGxvZy5oCkBAIC0xODUsNiArMTg1LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg eGxfYnRyZWVfZGVkdXAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfcmV1c2VfcGFn ZQogeworCWJvb2wgICAgICAgIG9uQ2F0YWxvZ1RhYmxlOwogCVJlbEZpbGVOb2RlIG5vZGU7 CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3Zl ZEZ1bGxYaWQ7CkBAIC0yMzIsNiArMjMzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVf dmFjdXVtCiAKIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX2RlbGV0ZQogeworCWJvb2wJCW9u Q2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAl1aW50 MTYJCW5kZWxldGVkOwogCXVpbnQxNgkJbnVwZGF0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3Mvc3BneGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaApp bmRleCA2OTQwNWI1NzUwLi4wNmI5MWY0ZDA0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc3BneGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKQEAg LTIzNyw2ICsyMzcsNyBAQCB0eXBlZGVmIHN0cnVjdCBzcGd4bG9nVmFjdXVtUm9vdAogCiB0 eXBlZGVmIHN0cnVjdCBzcGd4bG9nVmFjdXVtUmVkaXJlY3QKIHsKKwlib29sCQlvbkNhdGFs b2dUYWJsZTsKIAl1aW50MTYJCW5Ub1BsYWNlaG9sZGVyOyAvKiBudW1iZXIgb2YgcmVkaXJl Y3RzIHRvIG1ha2UgcGxhY2Vob2xkZXJzICovCiAJT2Zmc2V0TnVtYmVyIGZpcnN0UGxhY2Vo b2xkZXI7CS8qIGZpcnN0IHBsYWNlaG9sZGVyIHR1cGxlIHRvIHJlbW92ZSAqLwogCVRyYW5z YWN0aW9uSWQgbmV3ZXN0UmVkaXJlY3RYaWQ7CS8qIG5ld2VzdCBYSUQgb2YgcmVtb3ZlZCBy ZWRpcmVjdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggNzc4NzFhYWVmYy4uZTJh NWVmZWQzMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBl eHRlcm4gY2hhciBnZXRfcmVsX3JlbGtpbmQoT2lkIHJlbGlkKTsKIGV4dGVybiBib29sIGdl dF9yZWxfcmVsaXNwYXJ0aXRpb24oT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90 YWJsZXNwYWNlKE9pZCByZWxpZCk7CiBleHRlcm4gY2hhciBnZXRfcmVsX3BlcnNpc3RlbmNl KE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBnZXRfcmVsX2xvZ2ljYWxfY2F0YWxvZyhPaWQg cmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX2Zyb21zcWwoT2lkIHR5cGlkLCBP aWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1f dG9zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4g Ym9vbCBnZXRfdHlwaXNkZWZpbmVkKE9pZCB0eXBpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IGI0ZmFh MWMxMjMuLjY0OGFlYWNkNzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j bHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9n LmgiCiAKIAogLyoKQEAgLTM2NSw2ICszNjYsOSBAQCB0eXBlZGVmIHN0cnVjdCBTdGRSZE9w dGlvbnMKICAqIFJlbGF0aW9uSXNVc2VkQXNDYXRhbG9nVGFibGUKICAqCQlSZXR1cm5zIHdo ZXRoZXIgdGhlIHJlbGF0aW9uIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2F0YWxvZyB0YWJs ZQogICoJCWZyb20gdGhlIHBvdiBvZiBsb2dpY2FsIGRlY29kaW5nLiAgTm90ZSBtdWx0aXBs ZSBldmFsIG9mIGFyZ3VtZW50IQorICoJCVRoaXMgZGVmaW5pdGlvbiBzaG91bGQgbm90IGlu dm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNhdGFsb2cKKyAqCQlhY2Nlc3M7IG90aGVy d2lzZSBpdCBtYXkgY2F1c2UgaW5maW5pdGUgcmVjdXJzaW9uLiBDaGVjayB0aGUgY29tbWVu dHMKKyAqCQlpbiBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKCkgZm9y IGRldGFpbHMuCiAgKi8KICNkZWZpbmUgUmVsYXRpb25Jc1VzZWRBc0NhdGFsb2dUYWJsZShy ZWxhdGlvbikJXAogCSgocmVsYXRpb24pLT5yZF9vcHRpb25zICYmIFwKQEAgLTY1Myw2ICs2 NTcsMTEgQEAgUmVsYXRpb25HZXRTbWdyKFJlbGF0aW9uIHJlbCkKICAqIFJlbGF0aW9uSXNB Y2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcKICAqCQlUcnVlIGlmIHdlIG5lZWQgdG8gbG9n IGVub3VnaCBpbmZvcm1hdGlvbiB0byBoYXZlIGFjY2VzcyB2aWEKICAqCQlkZWNvZGluZyBz bmFwc2hvdC4KKyAqCQlUaGlzIGRlZmluaXRpb24gc2hvdWxkIG5vdCBpbnZva2UgYW55dGhp bmcgdGhhdCBwZXJmb3JtcyBjYXRhbG9nCisgKgkJYWNjZXNzLiBPdGhlcndpc2UsIGUuZy4g bG9nZ2luZyBhIFdBTCBlbnRyeSBmb3IgY2F0YWxvZyByZWxhdGlvbiBtYXkKKyAqCQlpbnZv a2UgdGhpcyBmdW5jdGlvbiwgd2hpY2ggd2lsbCBpbiB0dXJuIGRvIGNhdGFsb2cgYWNjZXNz LCB3aGljaCBtYXkKKyAqCQlpbiB0dXJuIGNhdXNlIGFub3RoZXIgc2ltaWxhciBXQUwgZW50 cnkgdG8gYmUgbG9nZ2VkLCBsZWFkaW5nIHRvCisgKgkJaW5maW5pdGUgcmVjdXJzaW9uLgog ICovCiAjZGVmaW5lIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVs YXRpb24pIFwKIAkoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkgJiYgXAotLSAKMi4xOC40Cgo= --------------ut3TX0W0zxc9jxmQce5fK1MC Content-Type: text/plain; charset="UTF-8"; name="v25-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v25-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAyNGIwNTQxNjE5YTJhMTc2ZTUwMjEyMGMzYmIxYzhlN2QzYWQyMjc2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyNiBPY3QgMjAyMSAxNDozMToxNCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjI1IDIvNl0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLAppbnZhbGlkYXRlIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhp bmcgaWYgd2FsX2xldmVsIG9uIG1hc3RlcgppcyByZWR1Y2VkIHRvIGJlbG93IGxvZ2ljYWwg YW5kIHRoZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0YW5kYnkuIEludHJv ZHVjZSBhIG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90CmNvbmZsaWN0IHJl Y292ZXJ5LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2dldF9hY3Rpdml0eSBmaWVsZDoK Y29uZmxfbG9naWNhbHNsb3QuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVy IHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1C eTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJp emlvIGRlIFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAg ICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4 bG9nLmMgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aF94bG9nLmMgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYyAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0eGxvZy5jICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd4bG9nLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAxMyArKwogc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3Bnc3RhdC5jICAgICAgICAgICAgICAgfCAgMjAgKysKIC4uLi9yZXBsaWNhdGlv bi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwgMjA5ICsrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwg ICA4ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAgICAgICAgICB8 ICAgNCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAg fCAgIDMgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAg IHwgIDExICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAg ICAgfCAgMjIgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAgICAg ICAgICB8ICAxNiArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAg ICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggICAgICAg ICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oICAgICAg ICAgICAgICAgICB8ICAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQgICAgICAgICAgIHwgICAzICstCiAyMyBmaWxlcyBjaGFuZ2VkLCAzNTAgaW5zZXJ0aW9u cygrKSwgMTUgZGVsZXRpb25zKC0pCiAgIDQuMSUgc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv CiAgIDQuNyUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgIDUuMSUgc3JjL2JhY2tl bmQvYWNjZXNzLwogICA0LjMlIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvCiAgIDMuNSUgc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1Mi4yJSBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi8KICAgNS42JSBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy8KICAgNy4xJSBzcmMv YmFja2VuZC90Y29wLwogICAzLjYlIHNyYy9iYWNrZW5kLwogICA2LjMlIHNyYy9pbmNsdWRl LwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDMxNzNlYzI1NjYuLmJkNjcyM2JkNjMgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDAxOCw2ICs0MDE4LDE2IEBAIFNFTEVDVCBwaWQs IHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hF UkUgd2FpdF9ldmVudCBpCiAgICAgICAgZGVhZGxvY2tzCiAgICAgICA8L3BhcmE+PC9lbnRy eT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPmNvbmZsX2xvZ2ljYWxzbG90PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVt YmVyIG9mIHF1ZXJpZXMgaW4gdGhpcyBkYXRhYmFzZSB0aGF0IGhhdmUgYmVlbiBjYW5jZWxl ZCBkdWUgdG8KKyAgICAgICBsb2dpY2FsIHNsb3RzCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggNDZhZWU2ZjJhOS4uNTk2M2U2 MzlkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xOTUsNyArMTk1 LDggQEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAK IAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsK IAotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVz dFJlbW92ZWRYaWQsIHJub2RlKTsKKwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3QoeGxkYXRhLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4bGRhdGEtPm9u Q2F0YWxvZ1RhYmxlLCBybm9kZSk7CiAJfQogCiAJaWYgKFhMb2dSZWFkQnVmZmVyRm9yUmVk byhyZWNvcmQsIDAsICZidWZmZXIpID09IEJMS19ORUVEU19SRURPKQpAQCAtMzk1LDYgKzM5 Niw3IEBAIGdpc3RSZWRvUGFnZVJldXNlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAq LwogCWlmIChJbkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90RnVsbFhpZCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCisJCQkJCQkJCQkJ CQkgICB4bHJlYy0+b25DYXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bm9k ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMjc0NzVm Y2JkNi4uZTVjNjEyNDQwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaF94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMK QEAgLTEwMDIsNyArMTAwMiw4IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCVJlbEZpbGVOb2RlIHJub2RlOwogCiAJCVhMb2dSZWNH ZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybm9kZSwgTlVMTCwgTlVMTCk7Ci0JCVJlc29sdmVS ZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+bGF0ZXN0UmVtb3ZlZFhpZCwg cm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEt PmxhdGVzdFJlbW92ZWRYaWQsCisJCQkJCQkJCQkJCXhsZGF0YS0+b25DYXRhbG9nVGFibGUs IHJub2RlKTsKIAl9CiAKIAlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRl ZChyZWNvcmQsIDAsIFJCTV9OT1JNQUwsIHRydWUsICZidWZmZXIpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYwppbmRleCAzYzQ1YzU4M2NkLi40MzYyNDYwM2EwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtODQyMyw3ICs4NDIzLDggQEAgaGVhcF94bG9nX3By dW5lKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqIG5vIHF1ZXJpZXMgcnVubmluZyBm b3Igd2hpY2ggdGhlIHJlbW92ZWQgdHVwbGVzIGFyZSBzdGlsbCB2aXNpYmxlLgogCSAqLwog CWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLCBybm9kZSk7CisJCVJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJ CQkJCQl4bHJlYy0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsKIAogCS8qCiAJICogSWYgd2Ug aGF2ZSBhIGZ1bGwtcGFnZSBpbWFnZSwgcmVzdG9yZSBpdCAodXNpbmcgYSBjbGVhbnVwIGxv Y2spIGFuZApAQCAtODU5MSw3ICs4NTkyLDkgQEAgaGVhcF94bG9nX3Zpc2libGUoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJICogcmF0aGVyIHRoYW4ga2lsbGluZyB0aGUgdHJhbnNh Y3Rpb24gb3V0cmlnaHQuCiAJICovCiAJaWYgKEluSG90U3RhbmRieSkKLQkJUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPmN1dG9mZl94aWQsIHJub2RlKTsK KwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPmN1dG9mZl94 aWQsCisJCQkJCQkJCQkJCXhscmVjLT5vbkNhdGFsb2dUYWJsZSwKKwkJCQkJCQkJCQkJcm5v ZGUpOwogCiAJLyoKIAkgKiBSZWFkIHRoZSBoZWFwIHBhZ2UsIGlmIGl0IHN0aWxsIGV4aXN0 cy4gSWYgdGhlIGhlYXAgZmlsZSBoYXMgZHJvcHBlZCBvcgpAQCAtODcyOCw3ICs4NzMxLDgg QEAgaGVhcF94bG9nX2ZyZWV6ZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlU cmFuc2FjdGlvbklkUmV0cmVhdChsYXRlc3RSZW1vdmVkWGlkKTsKIAogCQlYTG9nUmVjR2V0 QmxvY2tUYWcocmVjb3JkLCAwLCAmcm5vZGUsIE5VTEwsIE5VTEwpOwotCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVkWGlkLCBybm9kZSk7CisJ CVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KGxhdGVzdFJlbW92ZWRYaWQs CisJCQkJCQkJCQkJCXhscmVjLT5vbkNhdGFsb2dUYWJsZSwgcm5vZGUpOwogCX0KIAogCWlm IChYTG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAwLCAmYnVmZmVyKSA9PSBCTEtfTkVF RFNfUkVETykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKaW5kZXggNzg2YzA4 YzBjZS4uNDFiN2VjOGUyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnR4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMK QEAgLTY2OCw3ICs2NjgsOCBAQCBidHJlZV94bG9nX2RlbGV0ZShYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcm5vZGUsIE5V TEwsIE5VTEwpOwogCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhs cmVjLT5sYXRlc3RSZW1vdmVkWGlkLCBybm9kZSk7CisJCVJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFNuYXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4 bHJlYy0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsKIAl9CiAKIAkvKgpAQCAtMTAwNiw2ICsx MDA3LDcgQEAgYnRyZWVfeGxvZ19yZXVzZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCiAJaWYgKEluSG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRo U25hcHNob3RGdWxsWGlkKHhscmVjLT5sYXRlc3RSZW1vdmVkRnVsbFhpZCwKKwkJCQkJCQkJ CQkJCSAgIHhscmVjLT5vbkNhdGFsb2dUYWJsZSwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5u b2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4 bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwppbmRleCAzZGZk MmFhMzE3Li5hZGQ0ZGE0ZTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cu YwpAQCAtODgxLDYgKzg4MSw3IEBAIHNwZ1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCkKIAogCQkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJm5v ZGUsIE5VTEwsIE5VTEwpOwogCQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3QoeGxkYXRhLT5uZXdlc3RSZWRpcmVjdFhpZCwKKwkJCQkJCQkJCQkJCXhsZGF0YS0+b25D YXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQlub2RlKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYwppbmRleCBmNTQ3ZWZkMjk0Li4wZDI1OTBlYmViIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC0xMDU3Nyw2ICsxMDU3NywxOSBAQCB4bG9n X3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCS8qIFVwZGF0ZSBvdXIgY29weSBv ZiB0aGUgcGFyYW1ldGVycyBpbiBwZ19jb250cm9sICovCiAJCW1lbWNweSgmeGxyZWMsIFhM b2dSZWNHZXREYXRhKHJlY29yZCksIHNpemVvZih4bF9wYXJhbWV0ZXJfY2hhbmdlKSk7CiAK KwkJLyoKKwkJICogSW52YWxpZGF0ZSBsb2dpY2FsIHNsb3RzIGlmIHdlIGFyZSBpbiBob3Qg c3RhbmRieSBhbmQgdGhlIHByaW1hcnkgZG9lcyBub3QKKwkJICogaGF2ZSBhIFdBTCBsZXZl bCBzdWZmaWNpZW50IGZvciBsb2dpY2FsIGRlY29kaW5nLiBObyBuZWVkIHRvIHNlYXJjaAor CQkgKiBmb3IgcG90ZW50aWFsbHkgY29uZmxpY3RpbmcgbG9naWNhbGx5IHNsb3RzIGlmIHN0 YW5kYnkgaXMgcnVubmluZworCQkgKiB3aXRoIHdhbF9sZXZlbCBsb3dlciB0aGFuIGxvZ2lj YWwsIGJlY2F1c2UgaW4gdGhhdCBjYXNlLCB3ZSB3b3VsZAorCQkgKiBoYXZlIGVpdGhlciBk aXNhbGxvd2VkIGNyZWF0aW9uIG9mIGxvZ2ljYWwgc2xvdHMgb3IgaW52YWxpZGF0ZWQgZXhp c3RpbmcKKwkJICogb25lcy4KKwkJICovCisJCWlmIChJblJlY292ZXJ5ICYmIEluSG90U3Rh bmRieSAmJgorCQkJeGxyZWMud2FsX2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwgJiYKKwkJ CXdhbF9sZXZlbCA+PSBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJCUludmFsaWRhdGVDb25mbGlj dGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKEludmFsaWRPaWQsSW52YWxpZFRyYW5zYWN0 aW9uSWQpOworCiAJCUxXTG9ja0FjcXVpcmUoQ29udHJvbEZpbGVMb2NrLCBMV19FWENMVVNJ VkUpOwogCQlDb250cm9sRmlsZS0+TWF4Q29ubmVjdGlvbnMgPSB4bHJlYy5NYXhDb25uZWN0 aW9uczsKIAkJQ29udHJvbEZpbGUtPm1heF93b3JrZXJfcHJvY2Vzc2VzID0geGxyZWMubWF4 X3dvcmtlcl9wcm9jZXNzZXM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwK aW5kZXggNTVmNmUzNzExZC4uY2QxZmM4OGQxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbApAQCAtMTAyMCw3ICsxMDIwLDggQEAgQ1JFQVRFIFZJRVcgcGdfc3Rh dF9kYXRhYmFzZV9jb25mbGljdHMgQVMKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X2xvY2soRC5vaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgICAgICAgICBwZ19zdGF0 X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdChELm9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAg ICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4oRC5vaWQpIEFT IGNvbmZsX2J1ZmZlcnBpbiwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X3N0YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrCisgICAgICAgICAg ICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKEQub2lkKSBBUyBj b25mbF9kZWFkbG9jaywKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xv Z2ljYWxzbG90KEQub2lkKSBBUyBjb25mbF9sb2dpY2Fsc2xvdAogICAgIEZST00gcGdfZGF0 YWJhc2UgRDsKIAogQ1JFQVRFIFZJRVcgcGdfc3RhdF91c2VyX2Z1bmN0aW9ucyBBUwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcGdzdGF0LmMKaW5kZXggYjdkMGZiYWVmZC4uNGZhZDRhOWIxYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jCkBAIC0xODY5LDYgKzE4NjksMjIgQEAgcGdzdGF0 X3JlcG9ydF9yZXBsc2xvdF9kcm9wKGNvbnN0IGNoYXIgKnNsb3RuYW1lKQogCXBnc3RhdF9z ZW5kKCZtc2csIHNpemVvZihQZ1N0YXRfTXNnUmVwbFNsb3QpKTsKIH0KIAorLyogLS0tLS0t LS0tLQorICogcGdzdGF0X3JlcG9ydF9yZXBsc2xvdF9jb25mbGljdCgpCisgKiBUZWxsIHRo ZSBjb2xsZWN0b3IgYWJvdXQgYSBsb2dpY2FsIHNsb3QgYmVpbmcgY29uZmxpY3RpbmcKKyAq IHdpdGggcmVjb3ZlcnkuCisgKiAtLS0tLS0tLS0tCisgKi8KK3ZvaWQKK3Bnc3RhdF9yZXBv cnRfcmVwbHNsb3RfY29uZmxpY3QoT2lkIGRib2lkKQoreworCVBnU3RhdF9Nc2dSZWNvdmVy eUNvbmZsaWN0IG1zZzsKKwlwZ3N0YXRfc2V0aGVhZGVyKCZtc2cubV9oZHIsIFBHU1RBVF9N VFlQRV9SRUNPVkVSWUNPTkZMSUNUKTsKKwltc2cubV9kYXRhYmFzZWlkID0gZGJvaWQ7CisJ bXNnLm1fcmVhc29uID0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDsK KwlwZ3N0YXRfc2VuZCgmbXNnLCBzaXplb2YobXNnKSk7Cit9CisKIC8qIC0tLS0tLS0tLS0K ICAqIHBnc3RhdF9waW5nKCkgLQogICoKQEAgLTM2MzMsNiArMzY0OSw3IEBAIHJlc2V0X2Ri ZW50cnlfY291bnRlcnMoUGdTdGF0X1N0YXREQkVudHJ5ICpkYmVudHJ5KQogCWRiZW50cnkt Pm5fY29uZmxpY3RfdGFibGVzcGFjZSA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGljdF9sb2Nr ID0gMDsKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X3NuYXBzaG90ID0gMDsKKwlkYmVudHJ5LT5u X2NvbmZsaWN0X2xvZ2ljYWxzbG90ID0gMDsKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X2J1ZmZl cnBpbiA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrID0gMDsK IAlkYmVudHJ5LT5uX3RlbXBfZmlsZXMgPSAwOwpAQCAtNTU4MCw2ICs1NTk3LDkgQEAgcGdz dGF0X3JlY3ZfcmVjb3Zlcnljb25mbGljdChQZ1N0YXRfTXNnUmVjb3ZlcnlDb25mbGljdCAq bXNnLCBpbnQgbGVuKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNI T1Q6CiAJCQlkYmVudHJ5LT5uX2NvbmZsaWN0X3NuYXBzaG90Kys7CiAJCQlicmVhazsKKwkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZGJlbnRy eS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU46CiAJCQlkYmVudHJ5LT5uX2NvbmZsaWN0 X2J1ZmZlcnBpbisrOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwppbmRleCBlNTk5MzlhYWQxLi44MDVkNGM1YTVi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1 bmNzLmMKQEAgLTIzMiwxMSArMjMyLDE0IEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdl c19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmlu CiAKIAkJLyoKIAkJICogQWZ0ZXIgdGhlIHNhbml0eSBjaGVja3MgaW4gQ3JlYXRlRGVjb2Rp bmdDb250ZXh0LCBtYWtlIHN1cmUgdGhlCi0JCSAqIHJlc3RhcnRfbHNuIGlzIHZhbGlkLiAg QXZvaWQgImNhbm5vdCBnZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0aGlzCisJCSAqIHJlc3Rh cnRfbHNuIGlzIHZhbGlkIG9yIGJvdGggeG1pbiBhbmQgY2F0YWxvZ194bWluIGFyZSB2YWxp ZC4KKwkJICogQXZvaWQgImNhbm5vdCBnZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0aGlzCiAJ CSAqIGVycm1zZyBiZWNhdXNlIHRoYXQnZCBiZSBjb25mdXNpbmdseSBhbWJpZ3VvdXMgYWJv dXQgbm8gY2hhbmdlcwogCQkgKiBiZWluZyBhdmFpbGFibGUuCiAJCSAqLwotCQlpZiAoWExv Z1JlY1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikp CisJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnJl c3RhcnRfbHNuKQorCQkJfHwgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9u U2xvdC0+ZGF0YS54bWluKQorCQkJCSYmICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxp Y2F0aW9uU2xvdC0+ZGF0YS5jYXRhbG9nX3htaW4pKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAogCQkJCQkgZXJybXNnKCJjYW4gbm8gbG9uZ2VyIGdldCBjaGFuZ2VzIGZyb20gcmVwbGlj YXRpb24gc2xvdCBcIiVzXCIiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IDFjNmMw YzdjZTIuLjE4ODcxNjk1N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTEzNTAs NiArMTM1MCwyMTUgQEAgcmVzdGFydDoKIAlyZXR1cm4gaW52YWxpZGF0ZWQ7CiB9CiAKKy8q CisgKiBIZWxwZXIgZm9yIEludmFsaWRhdGVDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlv blNsb3QgLS0gYWNxdWlyZXMgdGhlIGdpdmVuIHNsb3QKKyAqIGFuZCBtYXJrIGl0IGludmFs aWQsIGlmIG5lY2Vzc2FyeSBhbmQgcG9zc2libGUuCisgKgorICogUmV0dXJucyB3aGV0aGVy IFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrIHdhcyByZWxlYXNlZCBpbiB0aGUgaW50ZXJp bSAoYW5kCisgKiBpbiB0aGF0IGNhc2Ugd2UncmUgbm90IGhvbGRpbmcgdGhlIGxvY2sgYXQg cmV0dXJuLCBvdGhlcndpc2Ugd2UgYXJlKS4KKyAqCisgKiBUaGlzIGlzIGluaGVyZW50bHkg cmFjeSwgYmVjYXVzZSB3ZSByZWxlYXNlIHRoZSBMV0xvY2sKKyAqIGZvciBzeXNjYWxscywg c28gY2FsbGVyIG11c3QgcmVzdGFydCBpZiB3ZSByZXR1cm4gdHJ1ZS4KKyAqLworc3RhdGlj IGJvb2wKK0ludmFsaWRhdGVQb3NzaWJseUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9u U2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWludAkJ bGFzdF9zaWduYWxlZF9waWQgPSAwOworCWJvb2wJcmVsZWFzZWRfbG9jayA9IGZhbHNlOwor CisJZm9yICg7OykKKwl7CisJCVRyYW5zYWN0aW9uSWQgc2xvdF94bWluOworCQlUcmFuc2Fj dGlvbklkIHNsb3RfY2F0YWxvZ194bWluOworCQlOYW1lRGF0YQlzbG90bmFtZTsKKwkJaW50 CQkJYWN0aXZlX3BpZCA9IDA7CisKKwkJQXNzZXJ0KExXTG9ja0hlbGRCeU1lSW5Nb2RlKFJl cGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpKTsKKworCQlpZiAoIXMtPmlu X3VzZSkKKwkJeworCQkJaWYgKHJlbGVhc2VkX2xvY2spCisJCQkJTFdMb2NrUmVsZWFzZShS ZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7CisJCQlicmVhazsKKwkJfQorCisJCS8qCisJ CSAqIENoZWNrIGlmIHRoZSBzbG90IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkLiBJZiBpdCBu ZWVkcyB0byBiZQorCQkgKiBpbnZhbGlkYXRlZCwgYW5kIGlzIG5vdCBjdXJyZW50bHkgYWNx dWlyZWQsIGFjcXVpcmUgaXQgYW5kIG1hcmsgaXQKKwkJICogYXMgaGF2aW5nIGJlZW4gaW52 YWxpZGF0ZWQuIFdlIGRvIHRoaXMgd2l0aCB0aGUgc3BpbmxvY2sgaGVsZCB0bworCQkgKiBh dm9pZCByYWNlIGNvbmRpdGlvbnMgLS0gZm9yIGV4YW1wbGUgdGhlIHhtaW4ocykgY291bGQg bW92ZSBmb3J3YXJkCisJCSAqICwgb3IgdGhlIHNsb3QgY291bGQgYmUgZHJvcHBlZC4KKwkJ ICovCisJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOworCisJCXNsb3RfeG1pbiA9IHMt PmRhdGEueG1pbjsKKwkJc2xvdF9jYXRhbG9nX3htaW4gPSBzLT5kYXRhLmNhdGFsb2dfeG1p bjsKKworCQkvKgorCQkgKiBJZiB0aGUgc2xvdCBpcyBhbHJlYWR5IGludmFsaWQgb3IgaXMg bm90IGNvbmZsaWN0aW5nLCB3ZSBkb24ndCBuZWVkIHRvCisJCSAqIGRvIGFueXRoaW5nLgor CQkgKi8KKworCQkvKiBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkICovCisJCWlmICgoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKHNsb3RfeG1pbikgJiYgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHNsb3RfY2F0YWxvZ194bWluKSkKKwkJCXx8CisJCS8qCisJCSAqIHdlIGFyZSBub3QgZm9y Y2luZyBmb3IgaW52YWxpZGF0aW9uIGJlY2F1c2UgdGhlIHhpZCBpcyB2YWxpZAorCQkgKiBh bmQgdGhpcyBpcyBhIG5vbiBjb25mbGljdGluZyBzbG90CisJCSAqLworCQkJKFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHhpZCkgJiYgISgKKwkJCQkoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xv dF94bWluKSAmJiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X3htaW4sIHhp ZCkpCisJCQkJfHwKKwkJCQkoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF9jYXRhbG9nX3ht aW4pICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNsb3RfY2F0YWxvZ194bWlu LCB4aWQpKQorCQkJCSkpCisJCQkpCisJCXsKKwkJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0 ZXgpOworCQkJaWYgKHJlbGVhc2VkX2xvY2spCisJCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNh dGlvblNsb3RDb250cm9sTG9jayk7CisJCQlicmVhazsKKwkJfQorCisJCXNsb3RuYW1lID0g cy0+ZGF0YS5uYW1lOworCQlhY3RpdmVfcGlkID0gcy0+YWN0aXZlX3BpZDsKKworCQkvKgor CQkgKiBJZiB0aGUgc2xvdCBjYW4gYmUgYWNxdWlyZWQsIGRvIHNvIGFuZCBtYXJrIGl0IGlu dmFsaWRhdGVkCisJCSAqIGltbWVkaWF0ZWx5LiAgT3RoZXJ3aXNlIHdlJ2xsIHNpZ25hbCB0 aGUgb3duaW5nIHByb2Nlc3MsIGJlbG93LCBhbmQKKwkJICogcmV0cnkuCisJCSAqLworCQlp ZiAoYWN0aXZlX3BpZCA9PSAwKQorCQl7CisJCQlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7CisJ CQlzLT5hY3RpdmVfcGlkID0gTXlQcm9jUGlkOworCQkJcy0+ZGF0YS54bWluID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CisJCQlzLT5kYXRhLmNhdGFsb2dfeG1pbiA9IEludmFsaWRUcmFu c2FjdGlvbklkOworCQl9CisKKwkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CisKKwkJ aWYgKGFjdGl2ZV9waWQgIT0gMCkKKwkJeworCQkJLyoKKwkJCSAqIFByZXBhcmUgdGhlIHNs ZWVwIG9uIHRoZSBzbG90J3MgY29uZGl0aW9uIHZhcmlhYmxlIGJlZm9yZQorCQkJICogcmVs ZWFzaW5nIHRoZSBsb2NrLCB0byBjbG9zZSBhIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uIGlm IHRoZQorCQkJICogc2xvdCBpcyByZWxlYXNlZCBiZWZvcmUgdGhlIHNsZWVwIGJlbG93Lgor CQkJICovCisKKwkJCUNvbmRpdGlvblZhcmlhYmxlUHJlcGFyZVRvU2xlZXAoJnMtPmFjdGl2 ZV9jdik7CisKKwkJCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2sp OworCQkJcmVsZWFzZWRfbG9jayA9IHRydWU7CisKKwkJCS8qCisJCQkgKiBTaWduYWwgdG8g dGVybWluYXRlIHRoZSBwcm9jZXNzIHRoYXQgb3ducyB0aGUgc2xvdCwgaWYgd2UKKwkJCSAq IGhhdmVuJ3QgYWxyZWFkeSBzaWduYWxsZWQgaXQuICAoQXZvaWRhbmNlIG9mIHJlcGVhdGVk CisJCQkgKiBzaWduYWxsaW5nIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgdGhlcmUgdG8gYmUg YSBsb29wIGluIHRoaXMKKwkJCSAqIHJvdXRpbmU7IG90aGVyd2lzZSB3ZSBjb3VsZCByZWx5 IG9uIGNhbGxlcidzIHJlc3RhcnQgbG9vcC4pCisJCQkgKgorCQkJICogVGhlcmUgaXMgdGhl IHJhY2UgY29uZGl0aW9uIHRoYXQgb3RoZXIgcHJvY2VzcyBtYXkgb3duIHRoZSBzbG90CisJ CQkgKiBhZnRlciBpdHMgY3VycmVudCBvd25lciBwcm9jZXNzIGlzIHRlcm1pbmF0ZWQgYW5k IGJlZm9yZSB0aGlzCisJCQkgKiBwcm9jZXNzIG93bnMgaXQuIFRvIGhhbmRsZSB0aGF0LCB3 ZSBzaWduYWwgb25seSBpZiB0aGUgUElEIG9mCisJCQkgKiB0aGUgb3duaW5nIHByb2Nlc3Mg aGFzIGNoYW5nZWQgZnJvbSB0aGUgcHJldmlvdXMgdGltZS4gKFRoaXMKKwkJCSAqIGxvZ2lj IGFzc3VtZXMgdGhhdCB0aGUgc2FtZSBQSUQgaXMgbm90IHJldXNlZCB2ZXJ5IHF1aWNrbHku KQorCQkJICovCisJCQlpZiAobGFzdF9zaWduYWxlZF9waWQgIT0gYWN0aXZlX3BpZCkKKwkJ CXsKKwkJCQllcmVwb3J0KExPRywKKwkJCQkJCShlcnJtc2coInRlcm1pbmF0aW5nIHByb2Nl c3MgJWQgYmVjYXVzZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBjb25mbGljdHMgd2l0aCBy ZWNvdmVyeSIsCisJCQkJCQkJCWFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUpKSkpOwor CisJCQkJKHZvaWQpIGtpbGwoYWN0aXZlX3BpZCwgU0lHVEVSTSk7CisJCQkJbGFzdF9zaWdu YWxlZF9waWQgPSBhY3RpdmVfcGlkOworCQkJfQorCisJCQkvKiBXYWl0IHVudGlsIHRoZSBz bG90IGlzIHJlbGVhc2VkLiAqLworCQkJQ29uZGl0aW9uVmFyaWFibGVTbGVlcCgmcy0+YWN0 aXZlX2N2LAorCQkJCQkJCQkJV0FJVF9FVkVOVF9SRVBMSUNBVElPTl9TTE9UX0RST1ApOwor CisJCQkvKgorCQkJICogUmUtYWNxdWlyZSBsb2NrIGFuZCBzdGFydCBvdmVyOyB3ZSBleHBl Y3QgdG8gaW52YWxpZGF0ZSB0aGUKKwkJCSAqIHNsb3QgbmV4dCB0aW1lICh1bmxlc3MgYW5v dGhlciBwcm9jZXNzIGFjcXVpcmVzIHRoZSBzbG90IGluIHRoZQorCQkJICogbWVhbnRpbWUp LgorCQkJICovCisJCQlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2Nr LCBMV19TSEFSRUQpOworCQkJY29udGludWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgor CQkJICogV2UgaG9sZCB0aGUgc2xvdCBub3cgYW5kIGhhdmUgYWxyZWFkeSBpbnZhbGlkYXRl ZCBpdDsgZmx1c2ggaXQKKwkJCSAqIHRvIGVuc3VyZSB0aGF0IHN0YXRlIHBlcnNpc3RzLgor CQkJICoKKwkJCSAqIERvbid0IHdhbnQgdG8gaG9sZCBSZXBsaWNhdGlvblNsb3RDb250cm9s TG9jayBhY3Jvc3MgZmlsZQorCQkJICogc3lzdGVtIG9wZXJhdGlvbnMsIHNvIHJlbGVhc2Ug aXQgbm93IGJ1dCBiZSBzdXJlIHRvIHRlbGwgY2FsbGVyCisJCQkgKiB0byByZXN0YXJ0IGZy b20gc2NyYXRjaC4KKwkJCSAqLworCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RD b250cm9sTG9jayk7CisJCQlyZWxlYXNlZF9sb2NrID0gdHJ1ZTsKKworCQkJLyogTWFrZSBz dXJlIHRoZSBpbnZhbGlkYXRlZCBzdGF0ZSBwZXJzaXN0cyBhY3Jvc3Mgc2VydmVyIHJlc3Rh cnQgKi8KKwkJCVJlcGxpY2F0aW9uU2xvdE1hcmtEaXJ0eSgpOworCQkJUmVwbGljYXRpb25T bG90U2F2ZSgpOworCQkJUmVwbGljYXRpb25TbG90UmVsZWFzZSgpOworCQkJcGdzdGF0X3Jl cG9ydF9yZXBsc2xvdF9jb25mbGljdChzLT5kYXRhLmRhdGFiYXNlKTsKKworCQkJZXJlcG9y dChMT0csCisJCQkJCShlcnJtc2coImludmFsaWRhdGluZyBzbG90IFwiJXNcIiBiZWNhdXNl IGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgTmFtZVN0cihzbG90bmFtZSkpKSk7CisK KwkJCS8qIGRvbmUgd2l0aCB0aGlzIHNsb3QgZm9yIG5vdyAqLworCQkJYnJlYWs7CisJCX0K Kwl9CisKKwlBc3NlcnQoIXJlbGVhc2VkX2xvY2sgPT0gTFdMb2NrSGVsZEJ5TWVJbk1vZGUo UmVwbGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCkpOworCisJcmV0dXJuIHJl bGVhc2VkX2xvY2s7Cit9CisKKy8qCisgKiBSZXNvbHZlIHJlY292ZXJ5IGNvbmZsaWN0cyB3 aXRoIGxvZ2ljYWwgc2xvdHMuCisgKgorICogV2hlbiB4aWQgaXMgdmFsaWQsIGl0IG1lYW5z IHRoYXQgd2UgYXJlIGFib3V0IHRvIHJlbW92ZSByb3dzIG9sZGVyIHRoYW4geGlkLgorICog VGhlcmVmb3JlIHdlIG5lZWQgdG8gaW52YWxpZGF0ZSBzbG90cyB0aGF0IGRlcGVuZCBvbiBz ZWVpbmcgdGhvc2Ugcm93cy4KKyAqIFdoZW4geGlkIGlzIGludmFsaWQsIGludmFsaWRhdGUg YWxsIGxvZ2ljYWwgc2xvdHMuIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiB0aGUKKyAqIG1hc3Rl ciB3YWxfbGV2ZWwgaXMgc2V0IGJhY2sgdG8gcmVwbGljYSwgc28gZXhpc3RpbmcgbG9naWNh bCBzbG90cyBuZWVkIHRvCisgKiBiZSBpbnZhbGlkYXRlZC4KKyAqLwordm9pZAorSW52YWxp ZGF0ZUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMoT2lkIGRib2lkLCBUcmFu c2FjdGlvbklkIHhpZCkKK3sKKworCUFzc2VydChtYXhfcmVwbGljYXRpb25fc2xvdHMgPj0g MCk7CisKKwlpZiAobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID09IDApCisJCXJldHVybjsKK3Jl c3RhcnQ6CisJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdf U0hBUkVEKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IG1heF9yZXBsaWNhdGlvbl9zbG90czsg aSsrKQorCXsKKwkJUmVwbGljYXRpb25TbG90ICpzID0gJlJlcGxpY2F0aW9uU2xvdEN0bC0+ cmVwbGljYXRpb25fc2xvdHNbaV07CisKKwkJaWYgKCFzLT5pbl91c2UpCisJCQljb250aW51 ZTsKKworCQkvKiBXZSBhcmUgb25seSBkZWFsaW5nIHdpdGggKmxvZ2ljYWwqIHNsb3QgY29u ZmxpY3RzLiAqLworCQlpZiAoIVNsb3RJc0xvZ2ljYWwocykpCisJCQljb250aW51ZTsKKwor CQkvKiBub3Qgb3VyIGRhdGFiYXNlIGFuZCB3ZSBkb24ndCB3YW50IGFsbCB0aGUgZGF0YWJh c2UsIHNraXAgKi8KKwkJaWYgKHMtPmRhdGEuZGF0YWJhc2UgIT0gZGJvaWQgJiYgVHJhbnNh Y3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChJbnZhbGlkYXRl UG9zc2libHlDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3QocywgeGlkKSkKKwkJ eworCQkJLyogaWYgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLCB3ZSBuZWVkIHRvIHJlc3RhcnQg ZnJvbSBzY3JhdGNoICovCisJCQlnb3RvIHJlc3RhcnQ7CisJCX0KKwl9CisJTFdMb2NrUmVs ZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7Cit9CisKIC8qCiAgKiBGbHVzaCBh bGwgcmVwbGljYXRpb24gc2xvdHMgdG8gZGlzay4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jCmluZGV4IGQ5YWI2ZDZkZTIuLjYzYzBkZDJmNjIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0xMjQ2LDYgKzEyNDYsMTQgQEAgU3RhcnRM b2dpY2FsUmVwbGljYXRpb24oU3RhcnRSZXBsaWNhdGlvbkNtZCAqY21kKQogCiAJUmVwbGlj YXRpb25TbG90QWNxdWlyZShjbWQtPnNsb3RuYW1lLCB0cnVlKTsKIAorCWlmICghVHJhbnNh Y3Rpb25JZElzVmFsaWQoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEueG1pbikKKwkJICYmICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5jYXRhbG9nX3ht aW4pKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImNhbm5vdCByZWFkIGZy b20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCisJCQkJCQljbWQtPnNsb3Ru YW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJUaGlzIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQg YmVjYXVzZSBpdCB3YXMgY29uZmxpY3Rpbmcgd2l0aCByZWNvdmVyeS4iKSkpOworCiAJaWYg KFhMb2dSZWNQdHJJc0ludmFsaWQoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEucmVzdGFydF9s c24pKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvcHJvY2FycmF5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJy YXkuYwppbmRleCBiZDNjN2E0N2ZlLi4yM2ZmYzM5YTBhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jYXJyYXkuYwpAQCAtMzQ0Myw2ICszNDQzLDEwIEBAIFNpZ25hbFZpcnR1YWxU cmFuc2FjdGlvbihWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBQcm9jU2lnbmFsUmVhc29u IHNpZ21vZGUsCiAKIAkJR0VUX1ZYSURfRlJPTV9QR1BST0MocHJvY3Z4aWQsICpwcm9jKTsK IAorCQkvKgorCQkgKiBOb3RlOiB2eGlkLmxvY2FsVHJhbnNhY3Rpb25JZCBjYW4gYmUgaW52 YWxpZCwgd2hpY2ggbWVhbnMgdGhlCisJCSAqIHJlcXVlc3QgaXMgdG8gc2lnbmFsIHRoZSBw aWQgdGhhdCBpcyBub3QgcnVubmluZyBhIHRyYW5zYWN0aW9uLgorCQkgKi8KIAkJaWYgKHBy b2N2eGlkLmJhY2tlbmRJZCA9PSB2eGlkLmJhY2tlbmRJZCAmJgogCQkJcHJvY3Z4aWQubG9j YWxUcmFuc2FjdGlvbklkID09IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklkKQogCQl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggZGVmYjc1YWEyNi4uMzE1ZDVh MWUzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtNjczLDYg KzY3Myw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlm IChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCkp CiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9TTkFQU0hPVCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfTE9HSUNBTFNMT1QpKQorCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpOworCiAJaWYgKENoZWNrUHJv Y1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0spKQog CQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf U1RBUlRVUF9ERUFETE9DSyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRl eCBiMTczMjZiYzIwLi4xMTFmZWMxYjlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCiAj aW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5o IgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKIAogLyogVXNlci1zZXR0YWJsZSBH VUMgcGFyYW1ldGVycyAqLwogaW50CQkJdmFjdXVtX2RlZmVyX2NsZWFudXBfYWdlOwpAQCAt NDQwLDcgKzQ0MSw4IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1YWxYSURz KFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKIH0KIAogdm9pZAotUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVk WGlkLCBSZWxGaWxlTm9kZSBub2RlKQorUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJYm9vbCBv bkNhdGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUgbm9kZSkKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rp b25JZCAqYmFja2VuZHM7CiAKQEAgLTQ2NSw2ICs0NjcsOSBAQCBSZXNvbHZlUmVjb3ZlcnlD b25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQsIFJl bEZpbGVOb2RlCiAJCQkJCQkJCQkJICAgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQ U0hPVCwKIAkJCQkJCQkJCQkgICBXQUlUX0VWRU5UX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBT SE9ULAogCQkJCQkJCQkJCSAgIHRydWUpOworCisJaWYgKG9uQ2F0YWxvZ1RhYmxlKQorCQlJ bnZhbGlkYXRlQ29uZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRpb25TbG90cyhub2RlLmRiTm9k ZSwgbGF0ZXN0UmVtb3ZlZFhpZCk7CiB9CiAKIC8qCkBAIC00NzMsNyArNDc4LDcgQEAgUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RS ZW1vdmVkWGlkLCBSZWxGaWxlTm9kZQogICovCiB2b2lkCiBSZXNvbHZlUmVjb3ZlcnlDb25m bGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3Zl ZEZ1bGxYaWQsCi0JCQkJCQkJCQkJICAgUmVsRmlsZU5vZGUgbm9kZSkKKwkJCQkJCQkJCQkg ICBib29sIG9uQ2F0YWxvZ1RhYmxlLCBSZWxGaWxlTm9kZSBub2RlKQogewogCS8qCiAJICog UmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3Qgb3BlcmF0ZXMgb24gMzItYml0 IFRyYW5zYWN0aW9uSWRzLApAQCAtNDkxLDcgKzQ5Niw3IEBAIFJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1v dmVkRnVsbFhpCiAJCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAogCQlsYXRl c3RSZW1vdmVkWGlkID0gWGlkRnJvbUZ1bGxUcmFuc2FjdGlvbklkKGxhdGVzdFJlbW92ZWRG dWxsWGlkKTsKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QobGF0ZXN0 UmVtb3ZlZFhpZCwgbm9kZSk7CisJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90KGxhdGVzdFJlbW92ZWRYaWQsIG9uQ2F0YWxvZ1RhYmxlLCBub2RlKTsKIAl9CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYwppbmRleCAwNzc1YWJlMzVkLi42OTdiMGVhN2FkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCkBAIC0yNDY3LDYgKzI0NjcsOSBAQCBlcnJkZXRhaWxfcmVjb3Zlcnlf Y29uZmxpY3Qodm9pZCkKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBT SE9UOgogCQkJZXJyZGV0YWlsKCJVc2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNl ZSByb3cgdmVyc2lvbnMgdGhhdCBtdXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVhazsKKwkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZXJyZGV0 YWlsKCJVc2VyIHdhcyB1c2luZyB0aGUgbG9naWNhbCBzbG90IHRoYXQgbXVzdCBiZSBkcm9w cGVkLiIpOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9T VEFSVFVQX0RFQURMT0NLOgogCQkJZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0aW9uIGNhdXNl ZCBidWZmZXIgZGVhZGxvY2sgd2l0aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFrOwpAQCAtMzAz Nyw2ICszMDQwLDI1IEBAIFJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJl YXNvbiByZWFzb24pCiAJCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoK IAkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJY2Fz ZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgorCQkJY2FzZSBQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJCS8qCisJCQkJICogRm9yIGNv bmZsaWN0cyB0aGF0IHJlcXVpcmUgYSBsb2dpY2FsIHNsb3QgdG8gYmUgaW52YWxpZGF0ZWQs IHRoZQorCQkJCSAqIHJlcXVpcmVtZW50IGlzIGZvciB0aGUgc2lnbmFsIHJlY2VpdmVyIHRv IHJlbGVhc2UgdGhlIHNsb3QsCisJCQkJICogc28gdGhhdCBpdCBjb3VsZCBiZSBpbnZhbGlk YXRlZCBieSB0aGUgc2lnbmFsIHNlbmRlci4gU28gZm9yCisJCQkJICogbm9ybWFsIGJhY2tl bmRzLCB0aGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIGFib3J0ZWQsIGp1c3QKKwkJCQkgKiBs aWtlIGZvciBvdGhlciByZWNvdmVyeSBjb25mbGljdHMuIEJ1dCBpZiBpdCdzIHdhbHNlbmRl ciBvbgorCQkJCSAqIHN0YW5kYnksIHRoZW4gaXQgaGFzIHRvIGJlIGtpbGxlZCBzbyBhcyB0 byByZWxlYXNlIGFuCisJCQkJICogYWNxdWlyZWQgbG9naWNhbCBzbG90LgorCQkJCSAqLwor CQkJCWlmIChhbV9jYXNjYWRpbmdfd2Fsc2VuZGVyICYmCisJCQkJCXJlYXNvbiA9PSBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UICYmCisJCQkJCU15UmVwbGljYXRp b25TbG90ICYmIFNsb3RJc0xvZ2ljYWwoTXlSZXBsaWNhdGlvblNsb3QpKQorCQkJCXsKKwkJ CQkJUmVjb3ZlcnlDb25mbGljdFBlbmRpbmcgPSB0cnVlOworCQkJCQlRdWVyeUNhbmNlbFBl bmRpbmcgPSB0cnVlOworCQkJCQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJYnJl YWs7CisJCQkJfQogCiAJCQkJLyoKIAkJCQkgKiBJZiB3ZSBhcmVuJ3QgaW4gYSB0cmFuc2Fj dGlvbiBhbnkgbG9uZ2VyIHRoZW4gaWdub3JlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0 ZnVuY3MuYwppbmRleCBmZjVhZWRjOTljLi4wNzNiNDAyYmFjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcGdzdGF0ZnVuY3MuYwpAQCAtMTQ5Nyw2ICsxNDk3LDIxIEBAIHBnX3N0YXRfZ2V0 X2RiX2NvbmZsaWN0X3NuYXBzaG90KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0lO VDY0KHJlc3VsdCk7CiB9CiAKK0RhdHVtCitwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dp Y2Fsc2xvdChQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCWRiaWQgPSBQR19HRVRBUkdf T0lEKDApOworCWludDY0CQlyZXN1bHQ7CisJUGdTdGF0X1N0YXREQkVudHJ5ICpkYmVudHJ5 OworCisJaWYgKChkYmVudHJ5ID0gcGdzdGF0X2ZldGNoX3N0YXRfZGJlbnRyeShkYmlkKSkg PT0gTlVMTCkKKwkJcmVzdWx0ID0gMDsKKwllbHNlCisJCXJlc3VsdCA9IChpbnQ2NCkgKGRi ZW50cnktPm5fY29uZmxpY3RfbG9naWNhbHNsb3QpOworCisJUEdfUkVUVVJOX0lOVDY0KHJl c3VsdCk7Cit9CisKIERhdHVtCiBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4o UEdfRlVOQ1RJT05fQVJHUykKIHsKQEAgLTE1NDAsNiArMTU1NSw3IEBAIHBnX3N0YXRfZ2V0 X2RiX2NvbmZsaWN0X2FsbChQR19GVU5DVElPTl9BUkdTKQogCQlyZXN1bHQgPSAoaW50NjQp IChkYmVudHJ5LT5uX2NvbmZsaWN0X3RhYmxlc3BhY2UgKwogCQkJCQkJICBkYmVudHJ5LT5u X2NvbmZsaWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5LT5uX2NvbmZsaWN0X3NuYXBzaG90 ICsKKwkJCQkJCSAgZGJlbnRyeS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCArCiAJCQkJCQkg IGRiZW50cnktPm5fY29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJCSAgZGJlbnRyeS0+bl9j b25mbGljdF9zdGFydHVwX2RlYWRsb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggZDA2OGQ2NTMyZS4uZTQwZjU3YTU0OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CkBAIC01NTAyLDYgKzU1MDIsMTEgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRf ZGJfY29uZmxpY3Rfc25hcHNob3QnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3BhcmFs bGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQn LAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90JyB9LAor eyBvaWQgPT4gJzQ1NDQnLAorICBkZXNjciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29u ZmxpY3RzIGluIGRhdGFiYXNlIGNhdXNlZCBieSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qn LAorICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdCcs IHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBl ID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3Rh dF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QnIH0sCiB7IG9pZCA9PiAnMzA2OCcsCiAg IGRlc2NyID0+ICdzdGF0aXN0aWNzOiByZWNvdmVyeSBjb25mbGljdHMgaW4gZGF0YWJhc2Ug Y2F1c2VkIGJ5IHNoYXJlZCBidWZmZXIgcGluJywKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9n ZXRfZGJfY29uZmxpY3RfYnVmZmVycGluJywgcHJvdm9sYXRpbGUgPT4gJ3MnLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRl eCBiY2QzNTg4ZWEyLi4zNTcwZTQ5MzNhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0 YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtNzQ3LDYgKzc0Nyw3IEBAIHR5 cGVkZWYgc3RydWN0IFBnU3RhdF9TdGF0REJFbnRyeQogCVBnU3RhdF9Db3VudGVyIG5fY29u ZmxpY3RfdGFibGVzcGFjZTsKIAlQZ1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X2xvY2s7CiAJ UGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF9zbmFwc2hvdDsKKwlQZ1N0YXRfQ291bnRlciBu X2NvbmZsaWN0X2xvZ2ljYWxzbG90OwogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3RfYnVm ZmVycGluOwogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jazsK IAlQZ1N0YXRfQ291bnRlciBuX3RlbXBfZmlsZXM7CkBAIC0xMDM4LDYgKzEwMzksNyBAQCBl eHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2NoZWNrc3VtX2ZhaWx1cmUodm9pZCk7CiBleHRl cm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3JlcGxzbG90KGNvbnN0IFBnU3RhdF9TdGF0UmVwbFNs b3RFbnRyeSAqcmVwU2xvdFN0YXQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9yZXBs c2xvdF9jcmVhdGUoY29uc3QgY2hhciAqc2xvdG5hbWUpOwogZXh0ZXJuIHZvaWQgcGdzdGF0 X3JlcG9ydF9yZXBsc2xvdF9kcm9wKGNvbnN0IGNoYXIgKnNsb3RuYW1lKTsKK2V4dGVybiB2 b2lkIHBnc3RhdF9yZXBvcnRfcmVwbHNsb3RfY29uZmxpY3QoT2lkIGRiT2lkKTsKIAogZXh0 ZXJuIHZvaWQgcGdzdGF0X2luaXRpYWxpemUodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Ns b3QuaAppbmRleCA1M2Q3NzNjY2ZmLi5jY2E0YmIwNThjIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v c2xvdC5oCkBAIC0yMTQsNiArMjE0LDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgUmVwbGljYXRp b25TbG90c0NvbXB1dGVMb2dpY2FsUmVzdGFydExTTih2b2lkKTsKIGV4dGVybiBib29sIFJl cGxpY2F0aW9uU2xvdHNDb3VudERCU2xvdHMoT2lkIGRib2lkLCBpbnQgKm5zbG90cywgaW50 ICpuYWN0aXZlKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdHNEcm9wREJTbG90cyhP aWQgZGJvaWQpOwogZXh0ZXJuIGJvb2wgSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25T bG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8pOworZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZUNv bmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMoT2lkIGRib2lkLCBUcmFuc2FjdGlv bklkIHhpZCk7CiBleHRlcm4gUmVwbGljYXRpb25TbG90ICpTZWFyY2hOYW1lZFJlcGxpY2F0 aW9uU2xvdChjb25zdCBjaGFyICpuYW1lLCBib29sIG5lZWRfbG9jayk7CiBleHRlcm4gdm9p ZCBSZXBsaWNhdGlvblNsb3ROYW1lRm9yVGFibGVzeW5jKE9pZCBzdWJvaWQsIE9pZCByZWxp ZCwgY2hhciAqc3luY3Nsb3RuYW1lLCBpbnQgc3pzbG90KTsKIGV4dGVybiB2b2lkIFJlcGxp Y2F0aW9uU2xvdERyb3BBdFB1Yk5vZGUoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4sIGNoYXIg KnNsb3RuYW1lLCBib29sIG1pc3Npbmdfb2spOwpAQCAtMjIzLDUgKzIyNCw2IEBAIGV4dGVy biB2b2lkIENoZWNrUG9pbnRSZXBsaWNhdGlvblNsb3RzKHZvaWQpOwogCiBleHRlcm4gdm9p ZCBDaGVja1Nsb3RSZXF1aXJlbWVudHModm9pZCk7CiBleHRlcm4gdm9pZCBDaGVja1Nsb3RQ ZXJtaXNzaW9ucyh2b2lkKTsKK2V4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aExvZ2ljYWxTbG90cyhPaWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyICpy ZWFzb24pOwogCiAjZW5kaWYJCQkJCQkJLyogU0xPVF9IICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJv Y3NpZ25hbC5oCmluZGV4IGVlYzE4NmJlMmUuLmY4NmIwNzBkYmMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvY3NpZ25hbC5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgZW51bQogCVBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRSwKIAlQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX0xPQ0ssCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwKKwlQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9ULAogCVBST0NTSUdfUkVDT1ZF UllfQ09ORkxJQ1RfQlVGRkVSUElOLAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RB UlRVUF9ERUFETE9DSywKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFu ZGJ5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaAppbmRleCAzOGZkODVhNDMx Li4zYmExODgyMjE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnku aAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaApAQCAtMzAsOSArMzAsOSBA QCBleHRlcm4gdm9pZCBJbml0UmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25tZW50KHZvaWQp OwogZXh0ZXJuIHZvaWQgU2h1dGRvd25SZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQo dm9pZCk7CiAKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90KFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwKLQkJCQkJCQkJCQkJCVJlbEZp bGVOb2RlIG5vZGUpOworCQkJCQkJCQkJCQkJYm9vbCBvbkNhdGFsb2dUYWJsZSwgUmVsRmls ZU5vZGUgbm9kZSk7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhT bmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZEZ1bGxYaWQs Ci0JCQkJCQkJCQkJCQkJICAgUmVsRmlsZU5vZGUgbm9kZSk7CisJCQkJCQkJCQkJCQkJICAg Ym9vbCBvbkNhdGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUgbm9kZSk7CiBleHRlcm4gdm9pZCBS ZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhUYWJsZXNwYWNlKE9pZCB0c2lkKTsKIGV4dGVy biB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aERhdGFiYXNlKE9pZCBkYmlkKTsK IApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCAyZmEwMGEzYzI5Li43 Y2Y5MTg2MzRjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVz Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTg3 MSw3ICsxODcxLDggQEAgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHN8IFNFTEVDVCBkLm9p ZCBBUyBkYXRpZCwKICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2NrKGQub2lkKSBB UyBjb25mbF9sb2NrLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90KGQu b2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9i dWZmZXJwaW4oZC5vaWQpIEFTIGNvbmZsX2J1ZmZlcnBpbiwKLSAgICBwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKGQub2lkKSBBUyBjb25mbF9kZWFkbG9jawor ICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2soZC5vaWQpIEFT IGNvbmZsX2RlYWRsb2NrLAorICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxz bG90KGQub2lkKSBBUyBjb25mbF9sb2dpY2Fsc2xvdAogICAgRlJPTSBwZ19kYXRhYmFzZSBk OwogcGdfc3RhdF9nc3NhcGl8IFNFTEVDVCBzLnBpZCwKICAgICBzLmdzc19hdXRoIEFTIGdz c19hdXRoZW50aWNhdGVkLAotLSAKMi4xOC40Cgo= --------------ut3TX0W0zxc9jxmQce5fK1MC Content-Type: text/plain; charset="UTF-8"; name="v25-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v25-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAxNzhhNmQxYzhmZWNmMTMxNjRhNWI2NWE4ZDU2NzdiOTJkYzQwYWE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyNiBPY3QgMjAyMSAxNDozMjoxMSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjI1IDMvNl0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCBvbiBzdGFuZGJ5LiBSZXN0cmljdCBpdHMg dXNhZ2UKb3IgaXRzIGNyZWF0aW9uIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIGxlc3Mg dGhhbiBsb2dpY2FsLgpEdXJpbmcgc2xvdCBjcmVhdGlvbiwgaXQncyByZXN0YXJ0X2xzbiBp cyBzZXQgdG8gdGhlIGxhc3QgcmVwbGF5ZWQKTFNOLiBFZmZlY3RpdmVseSwgYSBsb2dpY2Fs IHNsb3QgY3JlYXRpb24gb24gc3RhbmRieSB3YWl0cyBmb3IgYW4KeGxfcnVubmluZ194YWN0 IHJlY29yZCB0byBhcnJpdmUgZnJvbSBwcmltYXJ5LiBDb25mbGljdGluZyBzbG90cwp3b3Vs ZCBiZSBoYW5kbGVkIGluIG5leHQgY29tbWl0cy4KCkF1dGhvcjogQW5kcmVzIEZyZXVuZCAo aW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90 ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQg SGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVsbG8KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgICAgICAgICAgICAgfCAzMyArKysrKysrKysrLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jICAgICAgICB8ICAyICstCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jICAgICAgICAgfCAgNCArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAgICAgIHwgMjIgKysrKysrKy0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jICAgICB8IDM3ICsr KysrKy0tLS0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAg ICAgICB8IDU2ICsrKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3RmdW5jcy5jICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxyZWNlaXZlci5jICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2FscmVjZWl2ZXJmdW5jcy5jICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHNlbmRlci5jICAgICAgICAgICB8IDI4ICsrKysrKystLS0KIHNyYy9pbmNsdWRl L2FjY2Vzcy94bG9nLmggICAgICAgICAgICAgICAgICAgICB8ICAzICstCiAxMyBmaWxlcyBj aGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCiAgMTYuNCUgc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgMzIuMiUgc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC8KICA0Ni4wJSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi8KICAgNS4yJSBz cmMvCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDBkMjU5MGViZWIuLjFl OWY5NDkyN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTUxMjMsNiAr NTEyMywxNyBAQCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KQogCVJlYWRD b250cm9sRmlsZSgpOwogfQogCisvKgorICogR2V0IHRoZSB3YWxfbGV2ZWwgZnJvbSB0aGUg Y29udHJvbCBmaWxlLiBGb3IgYSBzdGFuZGJ5LCB0aGlzIHZhbHVlIHNob3VsZCBiZQorICog Y29uc2lkZXJlZCBhcyBpdHMgYWN0aXZlIHdhbF9sZXZlbCwgYmVjYXVzZSBpdCBtYXkgYmUg ZGlmZmVyZW50IGZyb20gd2hhdAorICogd2FzIG9yaWdpbmFsbHkgY29uZmlndXJlZCBvbiBz dGFuZGJ5LgorICovCitXYWxMZXZlbAorR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkodm9p ZCkKK3sKKwlyZXR1cm4gQ29udHJvbEZpbGUtPndhbF9sZXZlbDsKK30KKwogLyoKICAqIElu aXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIFhMT0cKICAqLwpAQCAtOTc4Nyw3 ICs5Nzk4LDcgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAkgKiB3aGljaGV2 ZXIgaXMgbGF0ZXIuCiAJICovCiAJcmVjZWl2ZVB0ciA9IEdldFdhbFJjdkZsdXNoUmVjUHRy KE5VTEwsIE5VTEwpOwotCXJlcGxheVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxh eVRMSSk7CisJcmVwbGF5UHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cigmcmVwbGF5VExJLCBm YWxzZSk7CiAJZW5kcHRyID0gKHJlY2VpdmVQdHIgPCByZXBsYXlQdHIpID8gcmVwbGF5UHRy IDogcmVjZWl2ZVB0cjsKIAlLZWVwTG9nU2VnKGVuZHB0ciwgJl9sb2dTZWdObyk7CiAJaWYg KEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoX2xvZ1NlZ05vKSkKQEAgLTEx OTUyLDcgKzExOTYzLDcgQEAgcmVnaXN0ZXJfcGVyc2lzdGVudF9hYm9ydF9iYWNrdXBfaGFu ZGxlcih2b2lkKQogICogRXhwb3J0ZWQgdG8gYWxsb3cgV0FMUmVjZWl2ZXIgdG8gcmVhZCB0 aGUgcG9pbnRlciBkaXJlY3RseS4KICAqLwogWExvZ1JlY1B0cgotR2V0WExvZ1JlcGxheVJl Y1B0cihUaW1lTGluZUlEICpyZXBsYXlUTEkpCitHZXRYTG9nUmVwbGF5UmVjUHRyKFRpbWVM aW5lSUQgKnJlcGxheVRMSSwgYm9vbCBhdm9pZF9oZWFkZXIpCiB7CiAJWExvZ1JlY1B0cgly ZWNwdHI7CiAJVGltZUxpbmVJRAl0bGk7CkBAIC0xMTk2NCw2ICsxMTk3NSwyNCBAQCBHZXRY TG9nUmVwbGF5UmVjUHRyKFRpbWVMaW5lSUQgKnJlcGxheVRMSSkKIAogCWlmIChyZXBsYXlU TEkpCiAJCSpyZXBsYXlUTEkgPSB0bGk7CisKKwkvKgorCSAqIFJlcGxheSBwb2ludGVyIG1h eSBwb2ludCBvbmUgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWNvcmQuIElmIHRoYXQKKwkgKiBp cyBhIFhMT0cgcGFnZSBib3VuZGFyeSwgaXQgd2lsbCBub3QgYmUgYSB2YWxpZCBMU04gZm9y IHRoZQorCSAqIHN0YXJ0IG9mIGEgcmVjb3JkLCBzbyBidW1wIGl0IHVwIHBhc3QgdGhlIHBh Z2UgaGVhZGVyLgorCSAqLworCWlmIChhdm9pZF9oZWFkZXIgJiYgIVhSZWNPZmZJc1ZhbGlk KHJlY3B0cikpCisJeworCQlpZiAocmVjcHRyICUgWExPR19CTENLU1ogIT0gMCkKKwkJCWVs b2coRVJST1IsICJpbnZhbGlkIHJlcGxheSBwb2ludGVyIik7CisKKwkJLyogRm9yIHRoZSBm aXJzdCBwYWdlIG9mIGEgc2VnbWVudCBmaWxlLCBpdCdzIGEgbG9uZyBoZWFkZXIgKi8KKwkJ aWYgKFhMb2dTZWdtZW50T2Zmc2V0KHJlY3B0ciwgd2FsX3NlZ21lbnRfc2l6ZSkgPT0gMCkK KwkJCXJlY3B0ciArPSBTaXplT2ZYTG9nTG9uZ1BIRDsKKwkJZWxzZQorCQkJcmVjcHRyICs9 IFNpemVPZlhMb2dTaG9ydFBIRDsKKwl9CisKIAlyZXR1cm4gcmVjcHRyOwogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCmluZGV4IGI5OGRlYjcyZWMuLmEx NzNmOGQ2ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCkBA IC00MTcsNyArNDE3LDcgQEAgcGdfbGFzdF93YWxfcmVwbGF5X2xzbihQR19GVU5DVElPTl9B UkdTKQogewogCVhMb2dSZWNQdHIJcmVjcHRyOwogCi0JcmVjcHRyID0gR2V0WExvZ1JlcGxh eVJlY1B0cihOVUxMKTsKKwlyZWNwdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwsIGZh bHNlKTsKIAogCWlmIChyZWNwdHIgPT0gMCkKIAkJUEdfUkVUVVJOX05VTEwoKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKaW5kZXggODhhMWJmZDkzOS4uYWFh ZGU5MzgyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0 aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAg LTg3MCw3ICs4NzAsNyBAQCByZWFkX2xvY2FsX3hsb2dfcGFnZShYTG9nUmVhZGVyU3RhdGUg KnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsCiAJCWlmICghUmVjb3ZlcnlJblBy b2dyZXNzKCkpCiAJCQlyZWFkX3VwdG8gPSBHZXRGbHVzaFJlY1B0cigpOwogCQllbHNlCi0J CQlyZWFkX3VwdG8gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCk7CisJ CQlyZWFkX3VwdG8gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCwgZmFs c2UpOwogCQl0bGkgPSBUaGlzVGltZUxpbmVJRDsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvY2hlY2twb2ludGVyLmMKaW5kZXggYmU3MzY2Mzc5ZC4uZWExYmY3ZDI0NyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCkBAIC00MzQsNyArNDM0LDcg QEAgQ2hlY2twb2ludGVyTWFpbih2b2lkKQogCQkJICovCiAJCQlja3B0X2FjdGl2ZSA9IHRy dWU7CiAJCQlpZiAoZG9fcmVzdGFydHBvaW50KQotCQkJCWNrcHRfc3RhcnRfcmVjcHRyID0g R2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwkJCQlja3B0X3N0YXJ0X3JlY3B0ciA9IEdl dFhMb2dSZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCQkJZWxzZQogCQkJCWNrcHRfc3Rh cnRfcmVjcHRyID0gR2V0SW5zZXJ0UmVjUHRyKCk7CiAJCQlja3B0X3N0YXJ0X3RpbWUgPSBu b3c7CkBAIC03OTQsNyArNzk0LDcgQEAgSXNDaGVja3BvaW50T25TY2hlZHVsZShkb3VibGUg cHJvZ3Jlc3MpCiAJICogdmFsdWUgdGhhdCB3YXMgaW4gZWZmZWN0IHdoZW4gdGhlIFdBTCB3 YXMgZ2VuZXJhdGVkKS4KIAkgKi8KIAlpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkpCi0JCXJl Y3B0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCXJlY3B0ciA9IEdldFhMb2dS ZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCWVsc2UKIAkJcmVjcHRyID0gR2V0SW5zZXJ0 UmVjUHRyKCk7CiAJZWxhcHNlZF94bG9ncyA9ICgoKGRvdWJsZSkgKHJlY3B0ciAtIGNrcHRf c3RhcnRfcmVjcHRyKSkgLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVj b2RlLmMKaW5kZXggMjg3NGRjMDYxMi4uYjhiZTBjODNlZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC0yMTUsMTEgKzIxNSwzMSBAQCBEZWNv ZGVYTG9nT3AoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVy ICpidWYpCiAJCQkgKiBjYW4gcmVzdGFydCBmcm9tIHRoZXJlLgogCQkJICovCiAJCQlicmVh azsKKwkJY2FzZSBYTE9HX1BBUkFNRVRFUl9DSEFOR0U6CisJCXsKKwkJCXhsX3BhcmFtZXRl cl9jaGFuZ2UgKnhscmVjID0KKwkJCQkoeGxfcGFyYW1ldGVyX2NoYW5nZSAqKSBYTG9nUmVj R2V0RGF0YShidWYtPnJlY29yZCk7CisKKwkJCS8qCisJCQkgKiBJZiB3YWxfbGV2ZWwgb24g cHJpbWFyeSBpcyByZWR1Y2VkIHRvIGxlc3MgdGhhbiBsb2dpY2FsLCB0aGVuIHdlCisJCQkg KiB3YW50IHRvIHByZXZlbnQgZXhpc3RpbmcgbG9naWNhbCBzbG90cyBmcm9tIGJlaW5nIHVz ZWQuCisJCQkgKiBFeGlzdGluZyBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkgZ2V0IGludmFs aWRhdGVkIHdoZW4gdGhpcyBXQUwKKwkJCSAqIHJlY29yZCBpcyByZXBsYXllZDsgYW5kIGZ1 cnRoZXIsIHNsb3QgY3JlYXRpb24gZmFpbHMgd2hlbiB0aGUKKwkJCSAqIHdhbCBsZXZlbCBp cyBub3Qgc3VmZmljaWVudDsgYnV0IGFsbCB0aGVzZSBvcGVyYXRpb25zIGFyZSBub3QKKwkJ CSAqIHN5bmNocm9uaXplZCwgc28gYSBsb2dpY2FsIHNsb3QgbWF5IGNyZWVwIGluIHdoaWxl IHRoZSB3YWxfbGV2ZWwKKwkJCSAqIGlzIGJlaW5nIHJlZHVjZWQuIEhlbmNlIHRoaXMgZXh0 cmEgY2hlY2suCisJCQkgKi8KKwkJCWlmICh4bHJlYy0+d2FsX2xldmVsIDwgV0FMX0xFVkVM X0xPR0lDQUwpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVf T0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJIGVycm1zZygibG9n aWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzICIKKwkJCQkJCQkJIndhbF9sZXZl bCA+PSBsb2dpY2FsIG9uIG1hc3RlciIpKSk7CisJCQlicmVhazsKKwkJfQogCQljYXNlIFhM T0dfTk9PUDoKIAkJY2FzZSBYTE9HX05FWFRPSUQ6CiAJCWNhc2UgWExPR19TV0lUQ0g6CiAJ CWNhc2UgWExPR19CQUNLVVBfRU5EOgotCQljYXNlIFhMT0dfUEFSQU1FVEVSX0NIQU5HRToK IAkJY2FzZSBYTE9HX1JFU1RPUkVfUE9JTlQ6CiAJCWNhc2UgWExPR19GUFdfQ0hBTkdFOgog CQljYXNlIFhMT0dfRlBJX0ZPUl9ISU5UOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xvZ2ljYWwuYwppbmRleCBhYWUwYWU1YjhhLi4xZThiMjgwOGQ1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwpAQCAtMTE5LDIzICsx MTksMjIgQEAgQ2hlY2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHModm9pZCkKIAkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJ CQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5nIHJlcXVpcmVzIGEgZGF0YWJhc2UgY29ubmVj dGlvbiIpKSk7CiAKLQkvKiAtLS0tCi0JICogVE9ETzogV2UgZ290IHRvIGNoYW5nZSB0aGF0 IHNvbWVkYXkgc29vbi4uLgotCSAqCi0JICogVGhlcmUncyBiYXNpY2FsbHkgdGhyZWUgdGhp bmdzIG1pc3NpbmcgdG8gYWxsb3cgdGhpczoKLQkgKiAxKSBXZSBuZWVkIHRvIGJlIGFibGUg dG8gY29ycmVjdGx5IGFuZCBxdWlja2x5IGlkZW50aWZ5IHRoZSB0aW1lbGluZSBhCi0JICoJ ICBMU04gYmVsb25ncyB0bwotCSAqIDIpIFdlIG5lZWQgdG8gZm9yY2UgaG90X3N0YW5kYnlf ZmVlZGJhY2sgdG8gYmUgZW5hYmxlZCBhdCBhbGwgdGltZXMgc28KLQkgKgkgIHRoZSBwcmlt YXJ5IGNhbm5vdCByZW1vdmUgcm93cyB3ZSBuZWVkLgotCSAqIDMpIHN1cHBvcnQgZHJvcHBp bmcgcmVwbGljYXRpb24gc2xvdHMgcmVmZXJyaW5nIHRvIGEgZGF0YWJhc2UsIGluCi0JICoJ ICBkYmFzZV9yZWRvLiBUaGVyZSBjYW4ndCBiZSBhbnkgYWN0aXZlIG9uZXMgZHVlIHRvIEhT IHJlY292ZXJ5Ci0JICoJICBjb25mbGljdHMsIHNvIHRoYXQgc2hvdWxkIGJlIHJlbGF0aXZl bHkgZWFzeS4KLQkgKiAtLS0tCi0JICovCiAJaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQot CQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKLQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5nIGNhbm5vdCBiZSB1c2Vk IHdoaWxlIGluIHJlY292ZXJ5IikpKTsKKwl7CisJCS8qCisJCSAqIFRoaXMgY2hlY2sgbWF5 IGhhdmUgcmFjZSBjb25kaXRpb25zLCBidXQgd2hlbmV2ZXIKKwkJICogWExPR19QQVJBTUVU RVJfQ0hBTkdFIGluZGljYXRlcyB0aGF0IHdhbF9sZXZlbCBoYXMgY2hhbmdlZCwgd2UKKwkJ ICogdmVyaWZ5IHRoYXQgdGhlcmUgYXJlIG5vIGV4aXN0aW5nIGxvZ2ljYWwgcmVwbGljYXRp b24gc2xvdHMuIEFuZCB0bworCQkgKiBhdm9pZCByYWNlcyBhcm91bmQgY3JlYXRpbmcgYSBu ZXcgc2xvdCwKKwkJICogQ2hlY2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHMoKSBpcyBj YWxsZWQgb25jZSBiZWZvcmUgY3JlYXRpbmcKKwkJICogdGhlIHNsb3QsIGFuZCBvbmNlIHdo ZW4gbG9naWNhbCBkZWNvZGluZyBpcyBpbml0aWFsbHkgc3RhcnRpbmcgdXAuCisJCSAqLwor CQlpZiAoR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkoKSA8IFdBTF9MRVZFTF9MT0dJQ0FM KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rp bmcgb24gc3RhbmRieSByZXF1aXJlcyAiCisJCQkJCQkJIndhbF9sZXZlbCA+PSBsb2dpY2Fs IG9uIG1hc3RlciIpKSk7CisJfQogfQogCiAvKgpAQCAtMzMwLDYgKzMyOSwxMiBAQCBDcmVh dGVJbml0RGVjb2RpbmdDb250ZXh0KGNvbnN0IGNoYXIgKnBsdWdpbiwKIAlMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHg7CiAJTWVtb3J5Q29udGV4dCBvbGRfY29udGV4dDsKIAorCS8q CisJICogT24gc3RhbmRieSwgdGhpcyBjaGVjayBpcyBhbHNvIHJlcXVpcmVkIHdoaWxlIGNy ZWF0aW5nIHRoZSBzbG90LiBDaGVjaworCSAqIHRoZSBjb21tZW50cyBpbiB0aGlzIGZ1bmN0 aW9uLgorCSAqLworCUNoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKCk7CisKIAkv KiBzaG9ydGVyIGxpbmVzLi4uICovCiAJc2xvdCA9IE15UmVwbGljYXRpb25TbG90OwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5j cy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwpp bmRleCA4MDVkNGM1YTViLi43ZDg4OTBhMjJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKQEAgLTIxNCw3ICsyMTQsNyBAQCBw Z19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXNfZ3V0cyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5m bywgYm9vbCBjb25maXJtLCBib29sIGJpbgogCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkp CiAJCWVuZF9vZl93YWwgPSBHZXRGbHVzaFJlY1B0cigpOwogCWVsc2UKLQkJZW5kX29mX3dh bCA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJlRoaXNUaW1lTGluZUlEKTsKKwkJZW5kX29mX3dh bCA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJlRoaXNUaW1lTGluZUlELCBmYWxzZSk7CiAKIAlS ZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKm5hbWUpLCB0cnVlKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc2xvdC5jCmluZGV4IDE4ODcxNjk1N2YuLjgxYTNlNzI3MzIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90LmMKQEAgLTExMDAsMzcgKzExMDAsMjggQEAgUmVwbGljYXRpb25T bG90UmVzZXJ2ZVdhbCh2b2lkKQogCQkvKgogCQkgKiBGb3IgbG9naWNhbCBzbG90cyBsb2cg YSBzdGFuZGJ5IHNuYXBzaG90IGFuZCBzdGFydCBsb2dpY2FsIGRlY29kaW5nCiAJCSAqIGF0 IGV4YWN0bHkgdGhhdCBwb3NpdGlvbi4gVGhhdCBhbGxvd3MgdGhlIHNsb3QgdG8gc3RhcnQg dXAgbW9yZQotCQkgKiBxdWlja2x5LgorCQkgKiBxdWlja2x5LiBCdXQgb24gYSBzdGFuZGJ5 IHdlIGNhbm5vdCBkbyBXQUwgd3JpdGVzLCBzbyBqdXN0IHVzZSB0aGUKKwkJICogcmVwbGF5 IHBvaW50ZXI7IGVmZmVjdGl2ZWx5LCBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIGxvZ2ljYWwg c2xvdCBvbgorCQkgKiBzdGFuZGJ5IHdpbGwgY2F1c2UgaXQgdG8gd2FpdCBmb3IgYW4geGxf cnVubmluZ194YWN0IHJlY29yZCB0byBiZQorCQkgKiBsb2dnZWQgaW5kZXBlbmRlbnRseSBv biB0aGUgcHJpbWFyeSwgc28gdGhhdCBhIHNuYXBzaG90IGNhbiBiZSBidWlsdAorCQkgKiB1 c2luZyB0aGUgcmVjb3JkLgogCQkgKgotCQkgKiBUaGF0J3Mgbm90IG5lZWRlZCAob3IgaW5k ZWVkIGhlbHBmdWwpIGZvciBwaHlzaWNhbCBzbG90cyBhcyB0aGV5J2xsCi0JCSAqIHN0YXJ0 IHJlcGxheSBhdCB0aGUgbGFzdCBsb2dnZWQgY2hlY2twb2ludCBhbnl3YXkuIEluc3RlYWQg cmV0dXJuCi0JCSAqIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFzdCByZWRvIExTTi4gV2hpbGUg dGhhdCBzbGlnaHRseSBpbmNyZWFzZXMKLQkJICogdGhlIGNoYW5jZSB0aGF0IHdlIGhhdmUg dG8gcmV0cnksIGl0J3Mgd2hlcmUgYSBiYXNlIGJhY2t1cCBoYXMgdG8KLQkJICogc3RhcnQg cmVwbGF5IGF0LgorCQkgKiBOb25lIG9mIHRoaXMgaXMgbmVlZGVkIChvciBpbmRlZWQgaGVs cGZ1bCkgZm9yIHBoeXNpY2FsIHNsb3RzIGFzCisJCSAqIHRoZXknbGwgc3RhcnQgcmVwbGF5 IGF0IHRoZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50IGFueXdheS4gSW5zdGVhZAorCQkgKiBy ZXR1cm4gdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNs aWdodGx5CisJCSAqIGluY3JlYXNlcyB0aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0byByZXRy eSwgaXQncyB3aGVyZSBhIGJhc2UgYmFja3VwCisJCSAqIGhhcyB0byBzdGFydCByZXBsYXkg YXQuCiAJCSAqLwotCQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpICYmIFNsb3RJc0xvZ2lj YWwoc2xvdCkpCi0JCXsKLQkJCVhMb2dSZWNQdHIJZmx1c2hwdHI7Ci0KLQkJCS8qIHN0YXJ0 IGF0IGN1cnJlbnQgaW5zZXJ0IHBvc2l0aW9uICovCisJCWlmIChTbG90SXNQaHlzaWNhbChz bG90KSkKKwkJCXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0cigpOworCQllbHNlIGlmIChS ZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJCXJlc3RhcnRfbHNuID0gR2V0WExvZ1JlcGxheVJl Y1B0cihOVUxMLCB0cnVlKTsKKwkJZWxzZQogCQkJcmVzdGFydF9sc24gPSBHZXRYTG9nSW5z ZXJ0UmVjUHRyKCk7Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJCXNs b3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKLQkJCVNwaW5Mb2NrUmVsZWFz ZSgmc2xvdC0+bXV0ZXgpOwotCi0JCQkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggaW5m b3JtYXRpb24gdG8gc3RhcnQgKi8KLQkJCWZsdXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90 KCk7CiAKLQkJCS8qIGFuZCBtYWtlIHN1cmUgaXQncyBmc3luY2VkIHRvIGRpc2sgKi8KLQkJ CVhMb2dGbHVzaChmbHVzaHB0cik7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlyZXN0YXJ0X2xz biA9IEdldFJlZG9SZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgp OwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOwotCQkJU3Bpbkxv Y2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0JCX0KKwkJU3BpbkxvY2tBY3F1aXJlKCZzbG90 LT5tdXRleCk7CisJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKKwkJ U3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7CiAKIAkJLyogcHJldmVudCBXQUwgcmVt b3ZhbCBhcyBmYXN0IGFzIHBvc3NpYmxlICovCiAJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRl UmVxdWlyZWRMU04oKTsKQEAgLTExNDYsNiArMTEzNywxNyBAQCBSZXBsaWNhdGlvblNsb3RS ZXNlcnZlV2FsKHZvaWQpCiAJCWlmIChYTG9nR2V0TGFzdFJlbW92ZWRTZWdubygpIDwgc2Vn bm8pCiAJCQlicmVhazsKIAl9CisKKwlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpICYmIFNs b3RJc0xvZ2ljYWwoc2xvdCkpCisJeworCQlYTG9nUmVjUHRyCWZsdXNocHRyOworCisJCS8q IG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBzdGFydCAqLworCQlm bHVzaHB0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOworCisJCS8qIGFuZCBtYWtlIHN1cmUg aXQncyBmc3luY2VkIHRvIGRpc2sgKi8KKwkJWExvZ0ZsdXNoKGZsdXNocHRyKTsKKwl9CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3Mu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCmluZGV4IDE3ZGY5OWMy YWMuLjk0OGFjYjFjY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3RmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCkBA IC02MjcsNyArNjI3LDcgQEAgcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKFBHX0ZVTkNU SU9OX0FSR1MpCiAJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJbW92ZXRvID0gTWlu KG1vdmV0bywgR2V0Rmx1c2hSZWNQdHIoKSk7CiAJZWxzZQotCQltb3ZldG8gPSBNaW4obW92 ZXRvLCBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCkpOworCQltb3ZldG8g PSBNaW4obW92ZXRvLCBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCwgZmFs c2UpKTsKIAogCS8qIEFjcXVpcmUgdGhlIHNsb3Qgc28gd2UgIm93biIgaXQgKi8KIAlSZXBs aWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RuYW1lKSwgdHJ1ZSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwppbmRleCBiOTBlNWNhOThlLi4yOGNjMTIz YzA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKQEAgLTQwOCw3 ICs0MDgsNyBAQCBXYWxSZWNlaXZlck1haW4odm9pZCkKIAkJCWZpcnN0X3N0cmVhbSA9IGZh bHNlOwogCiAJCQkvKiBJbml0aWFsaXplIExvZ3N0cmVhbVJlc3VsdCBhbmQgYnVmZmVycyBm b3IgcHJvY2Vzc2luZyBtZXNzYWdlcyAqLwotCQkJTG9nc3RyZWFtUmVzdWx0LldyaXRlID0g TG9nc3RyZWFtUmVzdWx0LkZsdXNoID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwkJ CUxvZ3N0cmVhbVJlc3VsdC5Xcml0ZSA9IExvZ3N0cmVhbVJlc3VsdC5GbHVzaCA9IEdldFhM b2dSZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCQkJaW5pdFN0cmluZ0luZm8oJnJlcGx5 X21lc3NhZ2UpOwogCQkJaW5pdFN0cmluZ0luZm8oJmluY29taW5nX21lc3NhZ2UpOwogCkBA IC0xMDk4LDcgKzEwOTgsNyBAQCBYTG9nV2FsUmN2U2VuZFJlcGx5KGJvb2wgZm9yY2UsIGJv b2wgcmVxdWVzdFJlcGx5KQogCS8qIENvbnN0cnVjdCBhIG5ldyBtZXNzYWdlICovCiAJd3Jp dGVQdHIgPSBMb2dzdHJlYW1SZXN1bHQuV3JpdGU7CiAJZmx1c2hQdHIgPSBMb2dzdHJlYW1S ZXN1bHQuRmx1c2g7Ci0JYXBwbHlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOwor CWFwcGx5UHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMLCBmYWxzZSk7CiAKIAlyZXNl dFN0cmluZ0luZm8oJnJlcGx5X21lc3NhZ2UpOwogCXBxX3NlbmRieXRlKCZyZXBseV9tZXNz YWdlLCAncicpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVj ZWl2ZXJmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5j cy5jCmluZGV4IDZmMGFjYmZkZWYuLmYyNjRiNzFmNzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMKQEAgLTM3Miw3ICszNzIsNyBAQCBHZXRS ZXBsaWNhdGlvbkFwcGx5RGVsYXkodm9pZCkKIAlyZWNlaXZlUHRyID0gd2FscmN2LT5mbHVz aGVkVXB0bzsKIAlTcGluTG9ja1JlbGVhc2UoJndhbHJjdi0+bXV0ZXgpOwogCi0JcmVwbGF5 UHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwlyZXBsYXlQdHIgPSBHZXRYTG9n UmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAogCWlmIChyZWNlaXZlUHRyID09IHJlcGxh eVB0cikKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmlu ZGV4IDYzYzBkZDJmNjIuLjJlYTRkMjdiNjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jCkBAIC01MzUsNyArNTM1LDcgQEAgUmVhZFJlcGxpY2F0aW9uU2xvdChSZWFk UmVwbGljYXRpb25TbG90Q21kICpjbWQpCiAJCQkgKiB0byBnZXQgdGhlIExTTiBwb3NpdGlv bidzIGhpc3RvcnkuCiAJCQkgKi8KIAkJCWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKLQkJ CQkodm9pZCkgR2V0WExvZ1JlcGxheVJlY1B0cigmY3VycmVudF90aW1lbGluZSk7CisJCQkJ KHZvaWQpIEdldFhMb2dSZXBsYXlSZWNQdHIoJmN1cnJlbnRfdGltZWxpbmUsIGZhbHNlKTsK IAkJCWVsc2UKIAkJCQljdXJyZW50X3RpbWVsaW5lID0gVGhpc1RpbWVMaW5lSUQ7CiAKQEAg LTEyNzMsNiArMTI3MywxNiBAQCBTdGFydExvZ2ljYWxSZXBsaWNhdGlvbihTdGFydFJlcGxp Y2F0aW9uQ21kICpjbWQpCiAJCWdvdF9TVE9QUElORyA9IHRydWU7CiAJfQogCisJLyoKKwkg KiBJbiBjYXNlIG9mIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBpdCBtYXkgYmUgdGhh dCBUaGlzVGltZUxpbmVJRAorCSAqIGlzIG5vdCBzZXQgeWV0LgorCSAqIEluZGVlZCB3ZSBh cmUgbm90IGdvaW5nIHRocm91Z2ggSW5pdFhMT0dBY2Nlc3Mgb24gYSBTdGFuZGJ5IGFuZAor CSAqIGl0IG1heSBhbHNvIGJlIHRoYXQgSWRlbnRpZnlTeXN0ZW0gaGFzIG5vdCBiZWVuIGNh bGxlZCB5ZXQuCisJICogU28gbGV0J3MgZ2V0IGl0IHRocm91Z2ggR2V0WExvZ1JlcGxheVJl Y1B0cigpLgorCSAqLworCWlmIChUaGlzVGltZUxpbmVJRCA9PSAwKQorCQkodm9pZCkgR2V0 WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQsIGZhbHNlKTsKKwogCS8qCiAJICog Q3JlYXRlIG91ciBkZWNvZGluZyBjb250ZXh0LCBtYWtpbmcgaXQgc3RhcnQgYXQgdGhlIHBy ZXZpb3VzbHkgYWNrJ2VkCiAJICogcG9zaXRpb24uCkBAIC0xNDk3LDcgKzE1MDcsNyBAQCBX YWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCWlmICghUmVjb3ZlcnlJblByb2dy ZXNzKCkpCiAJCVJlY2VudEZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIoKTsKIAllbHNlCi0J CVJlY2VudEZsdXNoUHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwkJUmVjZW50 Rmx1c2hQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAogCWZvciAo OzspCiAJewpAQCAtMTUzMSw3ICsxNTQxLDcgQEAgV2FsU25kV2FpdEZvcldhbChYTG9nUmVj UHRyIGxvYykKIAkJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJCVJlY2VudEZsdXNo UHRyID0gR2V0Rmx1c2hSZWNQdHIoKTsKIAkJZWxzZQotCQkJUmVjZW50Rmx1c2hQdHIgPSBH ZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQkJUmVjZW50Rmx1c2hQdHIgPSBHZXRYTG9n UmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAogCQkvKgogCQkgKiBJZiBwb3N0bWFzdGVy IGFza2VkIHVzIHRvIHN0b3AsIGRvbid0IHdhaXQgYW55bW9yZS4KQEAgLTMwMDQsMTAgKzMw MTQsMTIgQEAgWExvZ1NlbmRMb2dpY2FsKHZvaWQpCiAJICogSWYgZmlyc3QgdGltZSB0aHJv dWdoIGluIHRoaXMgc2Vzc2lvbiwgaW5pdGlhbGl6ZSBmbHVzaFB0ci4gIE90aGVyd2lzZSwK IAkgKiB3ZSBvbmx5IG5lZWQgdG8gdXBkYXRlIGZsdXNoUHRyIGlmIEVuZFJlY1B0ciBpcyBw YXN0IGl0LgogCSAqLwotCWlmIChmbHVzaFB0ciA9PSBJbnZhbGlkWExvZ1JlY1B0cikKLQkJ Zmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cigpOwotCWVsc2UgaWYgKGxvZ2ljYWxfZGVjb2Rp bmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKLQkJZmx1c2hQdHIgPSBH ZXRGbHVzaFJlY1B0cigpOworCWlmIChmbHVzaFB0ciA9PSBJbnZhbGlkWExvZ1JlY1B0ciB8 fAorCQlsb2dpY2FsX2RlY29kaW5nX2N0eC0+cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQ dHIpCisJeworCQlmbHVzaFB0ciA9IChhbV9jYXNjYWRpbmdfd2Fsc2VuZGVyID8KKwkJCQkJ R2V0U3RhbmRieUZsdXNoUmVjUHRyKCkgOiBHZXRGbHVzaFJlY1B0cigpKTsKKwl9CiAKIAkv KiBJZiBFbmRSZWNQdHIgaXMgc3RpbGwgcGFzdCBvdXIgZmx1c2hQdHIsIGl0IG1lYW5zIHdl IGNhdWdodCB1cC4gKi8KIAlpZiAobG9naWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5k UmVjUHRyID49IGZsdXNoUHRyKQpAQCAtMzA5Niw3ICszMTA4LDcgQEAgR2V0U3RhbmRieUZs dXNoUmVjUHRyKHZvaWQpCiAJICovCiAKIAlyZWNlaXZlUHRyID0gR2V0V2FsUmN2Rmx1c2hS ZWNQdHIoTlVMTCwgJnJlY2VpdmVUTEkpOwotCXJlcGxheVB0ciA9IEdldFhMb2dSZXBsYXlS ZWNQdHIoJnJlcGxheVRMSSk7CisJcmVwbGF5UHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cigm cmVwbGF5VExJLCBmYWxzZSk7CiAKIAlUaGlzVGltZUxpbmVJRCA9IHJlcGxheVRMSTsKIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nLmgKaW5kZXggNWUyYzk0YTA1Zi4uOTcwNjEyNTNlNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxv Zy5oCkBAIC0yODIsNyArMjgyLDcgQEAgZXh0ZXJuIGJvb2wgSG90U3RhbmRieUFjdGl2ZSh2 b2lkKTsKIGV4dGVybiBib29sIEhvdFN0YW5kYnlBY3RpdmVJblJlcGxheSh2b2lkKTsKIGV4 dGVybiBib29sIFhMb2dJbnNlcnRBbGxvd2VkKHZvaWQpOwogZXh0ZXJuIHZvaWQgR2V0WExv Z1JlY2VpcHRUaW1lKFRpbWVzdGFtcFR6ICpydGltZSwgYm9vbCAqZnJvbVN0cmVhbSk7Ci1l eHRlcm4gWExvZ1JlY1B0ciBHZXRYTG9nUmVwbGF5UmVjUHRyKFRpbWVMaW5lSUQgKnJlcGxh eVRMSSk7CitleHRlcm4gWExvZ1JlY1B0ciBHZXRYTG9nUmVwbGF5UmVjUHRyKFRpbWVMaW5l SUQgKnJlcGxheVRMSSwgYm9vbCBhdm9pZF9oZWFkZXIpOwogZXh0ZXJuIFhMb2dSZWNQdHIg R2V0WExvZ0luc2VydFJlY1B0cih2b2lkKTsKIGV4dGVybiBYTG9nUmVjUHRyIEdldFhMb2dX cml0ZVJlY1B0cih2b2lkKTsKIGV4dGVybiBSZWNvdmVyeVBhdXNlU3RhdGUgR2V0UmVjb3Zl cnlQYXVzZVN0YXRlKHZvaWQpOwpAQCAtMjk5LDYgKzI5OSw3IEBAIGV4dGVybiBTaXplIFhM T0dTaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBYTE9HU2htZW1Jbml0KHZvaWQpOwog ZXh0ZXJuIHZvaWQgQm9vdFN0cmFwWExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIExvY2FsUHJv Y2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpOworZXh0ZXJuIFdhbExldmVsIEdldEFjdGl2 ZVdhbExldmVsT25TdGFuZGJ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgU3RhcnR1cFhMT0codm9p ZCk7CiBleHRlcm4gdm9pZCBTaHV0ZG93blhMT0coaW50IGNvZGUsIERhdHVtIGFyZyk7CiBl eHRlcm4gdm9pZCBJbml0WExPR0FjY2Vzcyh2b2lkKTsKLS0gCjIuMTguNAoK --------------ut3TX0W0zxc9jxmQce5fK1MC Content-Type: text/plain; charset="UTF-8"; name="v25-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v25-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA4NzM4ODJiOGRhZDE5NjkxMjQwMTY3ODViYzYxMjQzYTY1ODYzMmE3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyNiBPY3QgMjAyMSAxNDozMzo1MiArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjI1IDQvNl0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpBdXRob3I6IENyYWlnIFJpbmdlciAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQg S2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91 dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVs bG8KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtICAgICAg fCAgMzcgKysKIC4uLi90LzAyN19zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAg ICB8IDQ5OCArKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNTM1IGluc2Vy dGlvbnMoKykKICAgNi4wJSBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC8KICA5My45 JSBzcmMvdGVzdC9yZWNvdmVyeS90LwoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9z dGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVz dC9DbHVzdGVyLnBtCmluZGV4IDg2ZWI5MjBlYTEuLjg5ZTQ5ZmFjYjQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KKysrIGIvc3JjL3Rl c3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQpAQCAtMjgwNCw2ICsyODA0LDQz IEBAIHN1YiBwZ19yZWN2bG9naWNhbF91cHRvCiAKID1wb2QKIAorPWl0ZW0gJG5vZGUtPmNy ZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieShzZWxmLCBtYXN0ZXIsIHNsb3RfbmFtZSwg ZGJuYW1lKQorCitDcmVhdGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9uIGdpdmVuIHN0 YW5kYnkKKworPWN1dAorCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5Cit7 CisJbXkgKCRzZWxmLCAkbWFzdGVyLCAkc2xvdF9uYW1lLCAkZGJuYW1lKSA9IEBfOworCW15 ICgkc3Rkb3V0LCAkc3RkZXJyKTsKKworCW15ICRoYW5kbGU7CisKKwkkaGFuZGxlID0gSVBD OjpSdW46OnN0YXJ0KFsncGdfcmVjdmxvZ2ljYWwnLCAnLWQnLCAkc2VsZi0+Y29ubnN0cigk ZGJuYW1lKSwgJy1QJywgJ3Rlc3RfZGVjb2RpbmcnLCAnLVMnLCAkc2xvdF9uYW1lLCAnLS1j cmVhdGUtc2xvdCddLCAnPicsIFwkc3Rkb3V0LCAnMj4nLCBcJHN0ZGVycik7CisKKwkjIE9u Y2Ugc2xvdCByZXN0YXJ0X2xzbiBpcyBjcmVhdGVkLCB0aGUgc3RhbmRieSBsb29rcyBmb3Ig eGxfcnVubmluZ194YWN0cworCSMgV0FMIHJlY29yZCBmcm9tIHRoZSByZXN0YXJ0X2xzbiBv bndhcmRzLiBTbyBmaXJzdGx5LCB3YWl0IHVudGlsIHRoZSBzbG90CisJIyByZXN0YXJ0X2xz biBpcyBldmFsdWF0ZWQuCisKKwkkc2VsZi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3Rn cmVzJywgcXFbCisJCVNFTEVDVCByZXN0YXJ0X2xzbiBJUyBOT1QgTlVMTAorCQlGUk9NIHBn X2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90 X25hbWUnCisJXSkgb3IgZGllICJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgbG9naWNhbCBzbG90 IHRvIGNhbGN1bGF0ZSBpdHMgcmVzdGFydF9sc24iOworCisJIyBOb3cgYXJyYW5nZSBmb3Ig dGhlIHhsX3J1bm5pbmdfeGFjdHMgcmVjb3JkIGZvciB3aGljaCBwZ19yZWN2bG9naWNhbAor CSMgaXMgd2FpdGluZy4KKwkkbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NIRUNL UE9JTlQnKTsKKworCSRoYW5kbGUtPmZpbmlzaCgpOworCisJaXMoJHNlbGYtPnNsb3QoJHNs b3RfbmFtZSktPnsnc2xvdF90eXBlJ30sICdsb2dpY2FsJywgJHNsb3RfbmFtZSAuICcgb24g c3RhbmRieSBjcmVhdGVkJykKKwkJb3IgZGllICJjb3VsZCBub3QgY3JlYXRlIHNsb3QiIC4g JHNsb3RfbmFtZTsKK30KKworPXBvZAorCiA9YmFjawogCiA9Y3V0CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWNvdmVyeS90LzAyN19zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9z cmMvdGVzdC9yZWNvdmVyeS90LzAyN19zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uY2I3NWYyYjBjMwotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDI3X3N0YW5kYnlfbG9naWNhbF9k ZWNvZGluZy5wbApAQCAtMCwwICsxLDQ5OCBAQAorIyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0 YW5kYnkgOiB0ZXN0IGxvZ2ljYWwgZGVjb2RpbmcsCisjIHJlY292ZXJ5IGNvbmZsaWN0IGFu ZCBzdGFuZGJ5IHByb21vdGlvbi4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9 PiAzODsKK3VzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOworCitteSAoJHN0ZGluLCAkc3Rk b3V0LCAkc3RkZXJyLCAkcmV0LCAkaGFuZGxlLCAkc2xvdCk7CisKK215ICRub2RlX3ByaW1h cnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnknKTsKK215ICRu b2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnkn KTsKKworIyBOYW1lIGZvciB0aGUgcGh5c2ljYWwgc2xvdCBvbiBwcmltYXJ5CitteSAkcHJp bWFyeV9zbG90bmFtZSA9ICdwcmltYXJ5X3BoeXNpY2FsJzsKKworIyByZXR1cm4gdGhlIHNp emUgb2YgbG9nZmlsZSBvZiAkbm9kZSBpbiBieXRlcworc3ViIGdldF9sb2dfc2l6ZQorewor CW15ICgkbm9kZSkgPSBAXzsKKworCXJldHVybiAoc3RhdCAkbm9kZS0+bG9nZmlsZSlbN107 Cit9CisKKyMgZmluZCAkcGF0IGluIGxvZ2ZpbGUgb2YgJG5vZGUgYWZ0ZXIgJG9mZi10aCBi eXRlCitzdWIgZmluZF9pbl9sb2cKK3sKKwlteSAoJG5vZGUsICRwYXQsICRvZmYpID0gQF87 CisKKwkkb2ZmID0gMCB1bmxlc3MgZGVmaW5lZCAkb2ZmOworCW15ICRsb2cgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczo6c2x1cnBfZmlsZSgkbm9kZS0+bG9nZmlsZSk7CisJcmV0dXJu IDAgaWYgKGxlbmd0aCgkbG9nKSA8PSAkb2ZmKTsKKworCSRsb2cgPSBzdWJzdHIoJGxvZywg JG9mZik7CisKKwlyZXR1cm4gJGxvZyA9fiBtLyRwYXQvOworfQorCisjIEZldGNoIHhtaW4g Y29sdW1ucyBmcm9tIHNsb3QncyBwZ19yZXBsaWNhdGlvbl9zbG90cyByb3csIGFmdGVyIHdh aXRpbmcgZm9yCisjIGdpdmVuIGJvb2xlYW4gY29uZGl0aW9uIHRvIGJlIHRydWUgdG8gZW5z dXJlIHdlJ3ZlIHJlYWNoZWQgYSBxdWllc2NlbnQgc3RhdGUuCitzdWIgd2FpdF9mb3JfeG1p bnMKK3sKKwlteSAoJG5vZGUsICRzbG90bmFtZSwgJGNoZWNrX2V4cHIpID0gQF87CisKKwkk bm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCAk Y2hlY2tfZXhwcgorCQlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMKKwkJ V0hFUkUgc2xvdF9uYW1lID0gJyRzbG90bmFtZSc7CisJXSkgb3IgZGllICJUaW1lZCBvdXQg d2FpdGluZyBmb3Igc2xvdCB4bWlucyB0byBhZHZhbmNlIjsKK30KKworIyBDcmVhdGUgdGhl IHJlcXVpcmVkIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieS4KK3N1YiBjcmVhdGVfbG9naWNh bF9zbG90cworeworCSRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3Rh bmRieSgkbm9kZV9wcmltYXJ5LCAnaW5hY3RpdmVzbG90JywgJ3Rlc3RkYicpOworCSRub2Rl X3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieSgkbm9kZV9wcmltYXJ5 LCAnYWN0aXZlc2xvdCcsICd0ZXN0ZGInKTsKK30KKworIyBBY3F1aXJlIG9uZSBvZiB0aGUg c3RhbmRieSBsb2dpY2FsIHNsb3RzIGNyZWF0ZWQgYnkgY3JlYXRlX2xvZ2ljYWxfc2xvdHMo KS4KKyMgSW4gY2FzZSB3YWl0IGlzIHRydWUgd2UgYXJlIHdhaXRpbmcgZm9yIGFuIGFjdGl2 ZSBwaWQgb24gdGhlICdhY3RpdmVzbG90JyBzbG90LgorIyBJZiB3YWl0IGlzIG5vdCB0cnVl IGl0IG1lYW5zIHdlIGFyZSB0ZXN0aW5nIGEga25vd24gZmFpbHVyZSBzY2VuYXJpby4KK3N1 YiBtYWtlX3Nsb3RfYWN0aXZlCit7CisJbXkgJHdhaXQgPSBzaGlmdDsKKwlteSAkc2xvdF91 c2VyX2hhbmRsZTsKKworCXByaW50ICJzdGFydGluZyBwZ19yZWN2bG9naWNhbFxuIjsKKwkk c2xvdF91c2VyX2hhbmRsZSA9IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2FsJywg Jy1kJywgJG5vZGVfc3RhbmRieS0+Y29ubnN0cigndGVzdGRiJyksICctUycsICdhY3RpdmVz bG90JywgJy1mJywgJy0nLCAnLS1uby1sb29wJywgJy0tc3RhcnQnXSwgJz4nLCBcJHN0ZG91 dCwgJzI+JywgXCRzdGRlcnIpOworCisJaWYgKCR3YWl0KQorCSMgbWFrZSBzdXJlIGFjdGl2 ZXNsb3QgaXMgaW4gdXNlCisJeworCQkkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGls KCd0ZXN0ZGInLAorCQkJIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdfcmVwbGlj YXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2FjdGl2ZXNsb3QnIEFORCBhY3RpdmVf cGlkIElTIE5PVCBOVUxMKSIKKwkJKSBvciBkaWUgInNsb3QgbmV2ZXIgYmVjYW1lIGFjdGl2 ZSI7CisJfQorCisJcmV0dXJuICRzbG90X3VzZXJfaGFuZGxlOworfQorCisjIENoZWNrIGlm IGFsbCB0aGUgc2xvdHMgb24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhlc2UgaW5jbHVkZSB0 aGUgJ2FjdGl2ZXNsb3QnCisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1ha2Vfc2xvdF9hY3Rp dmUoKSwgYW5kIHRoZSBub24tYWN0aXZlICdpbmFjdGl2ZXNsb3QnLgorc3ViIGNoZWNrX3Ns b3RzX2Ryb3BwZWQKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUpID0gQF87CisJbXkgJHJl dHVybjsKKworCWlzKCRub2RlX3N0YW5kYnktPnNsb3QoJ2luYWN0aXZlc2xvdCcpLT57J3Ns b3RfdHlwZSd9LCAnJywgJ2luYWN0aXZlc2xvdCBvbiBzdGFuZGJ5IGRyb3BwZWQnKTsKKwlp cygkbm9kZV9zdGFuZGJ5LT5zbG90KCdhY3RpdmVzbG90JyktPnsnc2xvdF90eXBlJ30sICcn LCAnYWN0aXZlc2xvdCBvbiBzdGFuZGJ5IGRyb3BwZWQnKTsKKworCSMgb3VyIGNsaWVudCBz aG91bGQndmUgdGVybWluYXRlZCBpbiByZXNwb25zZSB0byB0aGUgd2Fsc2VuZGVyIGVycm9y CisJJHNsb3RfdXNlcl9oYW5kbGUtPmZpbmlzaDsKKwkkcmV0dXJuID0gJD87CisJY21wX29r KCRyZXR1cm4sICIhPSIsIDAsICJwZ19yZWN2bG9naWNhbCBleGl0ZWQgbm9uLXplcm8iKTsK KwlpZiAoJHJldHVybikgeworCQlsaWtlKCRzdGRlcnIsIHFyL2NvbmZsaWN0IHdpdGggcmVj b3ZlcnkvLCAnc2xvdCBoYXZlIGJlZW4gZHJvcHBlZCcpOworCX0KKworCXJldHVybiAwOwor fQorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFsaXplIHByaW1hcnkg bm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3ByaW1hcnktPmluaXQo YWxsb3dzX3N0cmVhbWluZyA9PiAxLCBoYXNfYXJjaGl2aW5nID0+IDEpOworJG5vZGVfcHJp bWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHF7Cit3YWxfbGV2ZWwgPSAn bG9naWNhbCcKK21heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKK21heF93YWxfc2VuZGVycyA9 IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAnZGVidWcyJworbG9nX2Vycm9yX3ZlcmJvc2l0eSA9 IHZlcmJvc2UKK30pOworJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOworJG5vZGVfcHJpbWFy eS0+c3RhcnQ7CisKKyRub2RlX3ByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywgcVtDUkVBVEUg REFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xv dCgnJHByaW1hcnlfc2xvdG5hbWUnKTtdKTsKK215ICRiYWNrdXBfbmFtZSA9ICdiMSc7Cisk bm9kZV9wcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBzdGFuZGJ5IG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKyRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoCisJJG5vZGVfcHJp bWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9y aW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsCisJcXFbcHJpbWFyeV9zbG90X25hbWUgPSAnJHByaW1hcnlfc2xvdG5hbWUnXSk7Cisk bm9kZV9zdGFuZGJ5LT5zdGFydDsKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAo JG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7 CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgVGVzdCB0aGF0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gdGhlIHN0YW5kYnkKKyMgYmVo YXZlcyBjb3JyZWN0bHkuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCiskbm9kZV9wcmlt YXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGluZ190ZXN0 KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVz dGRiJywgcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0 ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHM7XSk7CisKKyRub2RlX3ByaW1hcnkt PndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1h cnktPmxzbignZmx1c2gnKSk7CisKK215ICRyZXN1bHQgPSAkbm9kZV9zdGFuZGJ5LT5zYWZl X3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdl cygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpO10pOworCisjIHRlc3QgaWYgYmFzaWMgZGVj b2Rpbmcgd29ya3MKK2lzKHNjYWxhcihteSBAZm9vYmFyID0gc3BsaXQgL14vbSwgJHJlc3Vs dCksCisJMTQsICdEZWNvZGluZyBwcm9kdWNlZCAxNCByb3dzJyk7CisKKyMgSW5zZXJ0IHNv bWUgcm93cyBhbmQgdmVyaWZ5IHRoYXQgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdHMgZnJvbSBw Z19yZWN2bG9naWNhbAorIyBhbmQgdGhlIFNRTCBpbnRlcmZhY2UuCiskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4 LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCisp OworCitteSAkZXhwZWN0ZWQgPSBxe0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVz dDogSU5TRVJUOiB4W2ludGVnZXJdOjEgeVt0ZXh0XTonMScKK3RhYmxlIHB1YmxpYy5kZWNv ZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MiB5W3RleHRdOicyJwordGFibGUgcHVi bGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTozIHlbdGV4dF06JzMnCit0 YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjQgeVt0ZXh0 XTonNCcKK0NPTU1JVH07CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5v ZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisK K215ICRzdGRvdXRfc3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAor CXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnYWN0 aXZlc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5 LXhhY3RzJywgJzEnKTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4cGVjdGVkLCAnZ290 IGV4cGVjdGVkIG91dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9uJyk7CisKK215ICRl bmRwb3MgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJIlNFTEVDVCBs c24gRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90JywgTlVM TCwgTlVMTCkgT1JERVIgQlkgbHNuIERFU0MgTElNSVQgMTsiCispOworcHJpbnQgIndhaXRp bmcgdG8gcmVwbGF5ICRlbmRwb3NcbiI7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhZnRlciAk ZW5kcG9zLCB3aGljaCB3ZSB3b24ndCByZWFkLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qg cywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDUwKSBzO10KKyk7CisKKyRub2Rl X3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRu b2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRfcmVjdiA9ICRub2Rl X3N0YW5kYnktPnBnX3JlY3Zsb2dpY2FsX3VwdG8oCisgICAgJ3Rlc3RkYicsICdhY3RpdmVz bG90JywgJGVuZHBvcywgMTgwLAorICAgICdpbmNsdWRlLXhpZHMnICAgICA9PiAnMCcsCisg ICAgJ3NraXAtZW1wdHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rkb3V0X3JlY3YpOwor aXMoJHN0ZG91dF9yZWN2LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91 dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24nKTsKKworJG5vZGVf c3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkiU0VMRUNUIEVYSVNUUyAo U0VMRUNUIDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAn YWN0aXZlc2xvdCcgQU5EIGFjdGl2ZV9waWQgSVMgTlVMTCkiCispIG9yIGRpZSAic2xvdCBu ZXZlciBiZWNhbWUgaW5hY3RpdmUiOworCiskc3Rkb3V0X3JlY3YgPSAkbm9kZV9zdGFuZGJ5 LT5wZ19yZWN2bG9naWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xvdCcsICRl bmRwb3MsIDE4MCwKKyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAnLAorICAgICdza2lw LWVtcHR5LXhhY3RzJyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2KTsKK2lzKCRzdGRv dXRfcmVjdiwgJycsICdwZ19yZWN2bG9naWNhbCBhY2tub3dsZWRnZWQgY2hhbmdlcycpOwor Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBEQVRBQkFT RSBvdGhlcmRiJyk7CisKK2lzKCAkbm9kZV9wcmltYXJ5LT5wc3FsKAorICAgICAgICAnb3Ro ZXJkYicsCisgICAgICAgICJTRUxFQ1QgbHNuIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtf Y2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpIE9SREVSIEJZIGxzbiBERVNDIExJ TUlUIDE7IgorICAgICksCisgICAgMywKKyAgICAncmVwbGF5aW5nIGxvZ2ljYWwgc2xvdCBm cm9tIGFub3RoZXIgZGF0YWJhc2UgZmFpbHMnKTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNs b3RzCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3Bf cmVwbGljYXRpb25fc2xvdCgnaW5hY3RpdmVzbG90JyldKTsKKyRub2RlX3N0YW5kYnktPnBz cWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3Rp dmVzbG90JyldKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rp bmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFyaW8gMTogaG90X3N0 YW5kYnlfZmVlZGJhY2sgb2ZmIGFuZCB2YWN1dW0gRlVMTAorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY3JlYXRlX2xvZ2ljYWxfc2xv dHMoKTsKKworIyBPbmUgd2F5IHRvIHJlcHJvZHVjZSByZWNvdmVyeSBjb25mbGljdCBpcyB0 byBydW4gVkFDVVVNIEZVTEwgd2l0aAorIyBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJuZWQg b2ZmIG9uIHRoZSBzdGFuZGJ5LgorJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb2ZmCitdKTsKKyRub2Rl X3N0YW5kYnktPnJlc3RhcnQ7CisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBvZmYg Ynkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWluIG9uIHBy aW1hcnkuIEJvdGggc2hvdWxkIGJlIE5VTEwgc2luY2UgaHNfZmVlZGJhY2sgaXMgb2ZmCit3 YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90bmFtZSwKKwkJCSAg ICJ4bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyRoYW5kbGUg PSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNv bmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0gRlVM TCcpOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnks ICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ug c2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwK KyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25m bGljdHMgd2l0aCByZWNvdmVyeSIpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0 aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMJyk7CisKK29rKCBmaW5kX2luX2xvZygK KyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3Rc IiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisgICdhY3RpdmVzbG90 IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMJyk7CisKKyMg VmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfbG9naWNhbHNs b3QgaGFzIGJlZW4gdXBkYXRlZAorb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50 aWwoCisJJ3Bvc3RncmVzJywKKwkic2VsZWN0IChjb25mbF9sb2dpY2Fsc2xvdCA9IDIpIGZy b20gcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGIn IiwgJ3QnKSwKKwknY29uZmxfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQg b3V0IHdhaXRpbmcgY29uZmxfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyRoYW5k bGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDApOwordXNsZWVwKDEwMF8wMDApOworCisjIFdlIGFy ZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52YWxp ZGF0ZWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJjYW5ub3Qg cmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpLAor ICAnY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QnKTsKKworIyBU dXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KKyRub2RlX3N0YW5kYnktPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9u CitdKTsKKyRub2RlX3N0YW5kYnktPnJlc3RhcnQ7CisKKyMgZW5zdXJlIHdhbHJlY2VpdmVy IGZlZWRiYWNrIHNlbnQgYnkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0 YWxvZ194bWluIG9uIHByaW1hcnkuIFdpdGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHht aW4gc2hvdWxkIGFkdmFuY2UsCisjIGJ1dCBjYXRhbG9nX3htaW4gc2hvdWxkIHN0aWxsIHJl bWFpbiBOVUxMIHNpbmNlIHRoZXJlIGlzIG5vIGxvZ2ljYWwgc2xvdC4KK3dhaXRfZm9yX3ht aW5zKCRub2RlX3ByaW1hcnksICRwcmltYXJ5X3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMg Tk9UIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZs aWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNs b3RzCisjIFNjZW5hcmlvIDI6IGNvbmZsaWN0IGR1ZSB0byByb3cgcmVtb3ZhbCB3aXRoIGhv dF9zdGFuZGJ5X2ZlZWRiYWNrIG9mZi4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2gg ZnJvbSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCitteSAkbG9nc3RhcnQgPSBnZXRfbG9nX3Np emUoJG5vZGVfc3RhbmRieSk7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworJG5vZGVf c3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9u X3Nsb3QoJ2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jl cycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnYWN0aXZlc2xvdCcpXSk7 CisKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJl Y292ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24gYW5kIGxhdW5j aCBhIHZhY3V1bQorIyB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1cm5lZCBvZmYgb24g dGhlIHN0YW5kYnkuCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvZmYKK10pOworJG5vZGVfc3RhbmRi eS0+cmVzdGFydDsKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNrIG9mZiBieSB3YWl0 aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4gb24gcHJpbWFyeS4g Qm90aCBzaG91bGQgYmUgTlVMTCBzaW5jZSBoc19mZWVkYmFjayBpcyBvZmYKK3dhaXRfZm9y X3htaW5zKCRub2RlX3ByaW1hcnksICRwcmltYXJ5X3Nsb3RuYW1lLAorCQkJICAgInhtaW4g SVMgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworJGhhbmRsZSA9IG1ha2Vf c2xvdF9hY3RpdmUoMSk7CisKKyMgVGhpcyBzaG91bGQgdHJpZ2dlciB0aGUgY29uZmxpY3QK KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGNv bmZsaWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOworJG5vZGVfcHJpbWFyeS0+c2Fm ZV9wc3FsKCd0ZXN0ZGInLCBxcVtEUk9QIFRBQkxFIGNvbmZsaWN0X3Rlc3Q7XSk7Ciskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0nKTsKKworJG5vZGVfcHJp bWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVf cHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQK K29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcg c2xvdCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3Zl cnkiLCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlz IGxvZ2dlZCBkdWUgdG8gcm93IHJlbW92YWwnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAg JG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJl Y2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0 aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHJvdyByZW1vdmFs Jyk7CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxf bG9naWNhbHNsb3QgaGFzIGJlZW4gdXBkYXRlZAorb2soICRub2RlX3N0YW5kYnktPnBvbGxf cXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywKKwkic2VsZWN0IChjb25mbF9sb2dpY2Fsc2xv dCA9IDIpIGZyb20gcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9 ICd0ZXN0ZGInIiwgJ3QnKSwKKwknY29uZmxfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRp ZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7 CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDApOwordXNsZWVwKDEwMF8wMDApOwor CisjIFdlIGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJl ZW4gaW52YWxpZGF0ZWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisg ICJjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNs b3RcIiIsICRsb2dzdGFydCksCisgICdjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGlj YXRpb24gc2xvdCcpOworCisjIFR1cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgor JG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK2hvdF9z dGFuZGJ5X2ZlZWRiYWNrID0gb24KK10pOworJG5vZGVfc3RhbmRieS0+cmVzdGFydDsKKwor IyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sgc2VudCBieSB3YWl0aW5nIGZvciBleHBl Y3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4gb24gcHJpbWFyeS4gV2l0aCBob3Rfc3Rh bmRieV9mZWVkYmFjayBvbiwgeG1pbiBzaG91bGQgYWR2YW5jZSwKKyMgYnV0IGNhdGFsb2df eG1pbiBzaG91bGQgc3RpbGwgcmVtYWluIE5VTEwgc2luY2UgdGhlcmUgaXMgbm8gbG9naWNh bCBzbG90Lgord2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xvdG5h bWUsCisJCQkgICAieG1pbiBJUyBOT1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwi KTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgUmVjb3ZlcnkgY29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMs IGluY2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFyaW8gMzogaW5jb3JyZWN0IHdhbF9s ZXZlbCBvbiBwcmltYXJ5LgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tIGlu IHRoZSBzdGFuZGJ5IGxvZ2ZpbGUKKyRsb2dzdGFydCA9IGdldF9sb2dfc2l6ZSgkbm9kZV9z dGFuZGJ5KTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCiskbm9kZV9zdGFuZGJ5LT5w c3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnaW5h Y3RpdmVzbG90JyldKTsKKyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxF Q1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsKKworY3JlYXRl X2xvZ2ljYWxfc2xvdHMoKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisK KyMgTWFrZSBwcmltYXJ5IHdhbF9sZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBz bG90IGNvbmZsaWN0LgorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicscVsKK3dhbF9sZXZlbCA9ICdyZXBsaWNhJworXSk7Ciskbm9kZV9wcmltYXJ5LT5y ZXN0YXJ0OworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5k YnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3Nh Z2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRi eSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBj b25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qg c2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1ZSB0byB3YWxfbGV2ZWwnKTsKKworb2so IGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90 IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAk bG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQg ZHVlIHRvIHdhbF9sZXZlbCcpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2Vf Y29uZmxpY3RzLmNvbmZsX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9k ZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAo Y29uZmxfbG9naWNhbHNsb3QgPSAyKSBmcm9tIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3Rz IHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJJ2NvbmZsX2xvZ2ljYWxzbG90 IHVwZGF0ZWQnKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGNvbmZsX2xvZ2ljYWxzbG90 IHRvIGJlIHVwZGF0ZWQiOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKK3Vz bGVlcCgxMDBfMDAwKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwK KyAgImxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgPj0g bG9naWNhbCBvbiBtYXN0ZXIiLCAkbG9nc3RhcnQpLAorICAnY2Fubm90IHN0YXJ0IHJlcGxp Y2F0aW9uIGJlY2F1c2Ugd2FsX2xldmVsIDwgbG9naWNhbCBvbiBtYXN0ZXInKTsKKworIyBS ZXN0b3JlIHByaW1hcnkgd2FsX2xldmVsCiskbm9kZV9wcmltYXJ5LT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJyxxWword2FsX2xldmVsID0gJ2xvZ2ljYWwnCitdKTsKKyRub2Rl X3ByaW1hcnktPnJlc3RhcnQ7Ciskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRu b2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOwor CiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKK3VzbGVlcCgxMDBfMDAwKTsKKwor IyBhcyB0aGUgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCB3ZSBzaG91bGQgbm90IGJlIGFi bGUgdG8gcmVhZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImNh bm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwi IiwgJGxvZ3N0YXJ0KSwKKyAgJ2Nhbm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNhdGlv biBzbG90Jyk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIERST1AgREFUQUJBU0Ugc2hvdWxkIGRyb3BzIGl0J3Mgc2xvdHMsIGlu Y2x1ZGluZyBhY3RpdmUgc2xvdHMuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jlcycs IHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnaW5hY3RpdmVzbG90JyldKTsK KyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBs aWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7 CiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsKKyMgQ3JlYXRlIGEgc2xvdCBvbiBh IGRhdGFiYXNlIHRoYXQgd291bGQgbm90IGJlIGRyb3BwZWQuIFRoaXMgc2xvdCBzaG91bGQg bm90CisjIGdldCBkcm9wcGVkLgorJG5vZGVfc3RhbmRieS0+Y3JlYXRlX2xvZ2ljYWxfc2xv dF9vbl9zdGFuZGJ5KCRub2RlX3ByaW1hcnksICdvdGhlcnNsb3QnLCAncG9zdGdyZXMnKTsK KworIyBkcm9wZGIgb24gdGhlIHByaW1hcnkgdG8gdmVyaWZ5IHNsb3RzIGFyZSBkcm9wcGVk IG9uIHN0YW5kYnkKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxW0RS T1AgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNo dXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gn KSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXFbU0VM RUNUIEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSAn dGVzdGRiJyldKSwgJ2YnLAorCSdkYXRhYmFzZSBkcm9wcGVkIG9uIHN0YW5kYnknKTsKKwor Y2hlY2tfc2xvdHNfZHJvcHBlZCgkaGFuZGxlKTsKKworaXMoJG5vZGVfc3RhbmRieS0+c2xv dCgnb3RoZXJzbG90JyktPnsnc2xvdF90eXBlJ30sICdsb2dpY2FsJywKKwknb3RoZXJzbG90 IG9uIHN0YW5kYnkgbm90IGRyb3BwZWQnKTsKKworIyBDbGVhbnVwIDogbWFudWFsbHkgZHJv cCB0aGUgc2xvdCB0aGF0IHdhcyBub3QgZHJvcHBlZC4KKyRub2RlX3N0YW5kYnktPnBzcWwo J3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdvdGhlcnNs b3QnKV0pOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBUZXN0IHN0YW5kYnkgcHJvbW90aW9uIGFuZCBsb2dpY2FsIGRlY29kaW5n IGJlaGF2aW9yCisjIGFmdGVyIHRoZSBzdGFuZGJ5IGdldHMgcHJvbW90ZWQuCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9kZV9w cmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbQ1JFQVRFIERBVEFCQVNFIHRlc3RkYl0pOwor JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFCTEUgZGVj b2RpbmdfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7XSk7CisKKyMgY3JlYXRlIHRoZSBsb2dp Y2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCisjIEluc2VydCBzb21lIHJv d3MgYmVmb3JlIHRoZSBwcm9tb3Rpb24KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVz dGRiJywKKwlxcVtJTlNFUlQgSU5UTyBkZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6 OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw0KSBzO10KKyk7CisKKyRub2RlX3ByaW1h cnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3By aW1hcnktPmxzbignZmx1c2gnKSk7CisKKyMgcHJvbW90ZQorJG5vZGVfc3RhbmRieS0+cHJv bW90ZTsKKworIyBpbnNlcnQgc29tZSByb3dzIG9uIHByb21vdGVkIHN0YW5kYnkKKyRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtJTlNFUlQgSU5UTyBkZWNvZGlu Z190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSw3 KSBzO10KKyk7CisKKworJGV4cGVjdGVkID0gcXtCRUdJTgordGFibGUgcHVibGljLmRlY29k aW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToxIHlbdGV4dF06JzEnCit0YWJsZSBwdWJs aWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjIgeVt0ZXh0XTonMicKK3Rh YmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MyB5W3RleHRd OiczJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo0 IHlbdGV4dF06JzQnCitDT01NSVQKK0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVz dDogSU5TRVJUOiB4W2ludGVnZXJdOjUgeVt0ZXh0XTonNScKK3RhYmxlIHB1YmxpYy5kZWNv ZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NiB5W3RleHRdOic2JwordGFibGUgcHVi bGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo3IHlbdGV4dF06JzcnCitD T01NSVR9OworCisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29kaW5nIHByZSBhbmQgcG9zdCBw cm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworJHN0ZG91dF9zcWwgPSAkbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Ns b3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlk cycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScpO10KKyk7CisKK2lzKCRzdGRvdXRf c3FsLCAkZXhwZWN0ZWQsICdnb3QgZXhwZWN0ZWQgb3V0cHV0IGZyb20gU1FMIGRlY29kaW5n IHNlc3Npb24gb24gcHJvbW90ZWQgc3RhbmRieScpOwotLSAKMi4xOC40Cgo= --------------ut3TX0W0zxc9jxmQce5fK1MC Content-Type: text/plain; charset="UTF-8"; name="v25-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v25-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3YjEwNTI0ZjJlODFlNGEwYmViMTYwZTYyOTdjZmI2ZDYwMWI2ZDY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyNiBPY3QgMjAyMSAxNDozNDozNyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjI1IDUvNl0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj YWwKIGRlY29kaW5nLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJz aW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJl cnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBk ZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCB8 IDIxICsrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IGI2MzUzYzdhMTIuLjk4ZmZmYzQzNTIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjcgQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2 ZW4gdGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBU byBwcmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmlu ZyByZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5h bWU+aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhl CisgICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dz IGdldCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGludmFsaWRhdGVkLiBJdCdzIGhp Z2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSBwaHlzaWNhbCBzbG90IGJldHdlZW4gdGhlIHBy aW1hcnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LiBPdGhlcndpc2UsIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHdpbGwgd29yaywgYnV0IG9ubHkgd2hpbGUgdGhlIAorICAgICBjb25uZWN0aW9u IGlzIGFsaXZlIChmb3IgZXhhbXBsZSBhIG5vZGUgcmVzdGFydCB3b3VsZCBicmVhayBpdCku IEV4aXN0aW5nIAorICAgICBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkgYWxzbyBnZXQgaW52 YWxpZGF0ZWQgaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgcmVkdWNlZCB0bworICAgICBs ZXNzIHRoYW4gJ2xvZ2ljYWwnLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBG b3IgYSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCwgaXQgYnVpbGRzIGEgaGlzdG9yaWMg c25hcHNob3QsIGZvciB3aGljaAorICAgICBpbmZvcm1hdGlvbiBvZiBhbGwgdGhlIGN1cnJl bnRseSBydW5uaW5nIHRyYW5zYWN0aW9ucyBpcyBlc3NlbnRpYWwuIE9uCisgICAgIHByaW1h cnksIHRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLCBidXQgb24gc3RhbmRieSwgdGhp cyBpbmZvcm1hdGlvbgorICAgICBoYXMgdG8gYmUgb2J0YWluZWQgZnJvbSBwcmltYXJ5LiBT bywgc2xvdCBjcmVhdGlvbiBtYXkgd2FpdCBmb3Igc29tZQorICAgICBhY3Rpdml0eSB0byBo YXBwZW4gb24gdGhlIHByaW1hcnkuIElmIHRoZSBwcmltYXJ5IGlzIGlkbGUsIGNyZWF0aW5n IGEKKyAgICAgbG9naWNhbCBzbG90IG9uIHN0YW5kYnkgbWF5IHRha2UgYSBub3RpY2VhYmxl IHRpbWUuCisgICAgPC9wYXJhPgorCiAgICAgPGNhdXRpb24+CiAgICAgIDxwYXJhPgogICAg ICAgUmVwbGljYXRpb24gc2xvdHMgcGVyc2lzdCBhY3Jvc3MgY3Jhc2hlcyBhbmQga25vdyBu b3RoaW5nIGFib3V0IHRoZSBzdGF0ZQotLSAKMi4xOC40Cgo= --------------ut3TX0W0zxc9jxmQce5fK1MC Content-Type: text/plain; charset="UTF-8"; name="v25-0006-Fixing-Walsender-corner-cases-with-logical-decod.patch" Content-Disposition: attachment; filename*0="v25-0006-Fixing-Walsender-corner-cases-with-logical-decod.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5NWNkZDkzOWI3MDlhMmExZjE0NjJiNmE5MmM2Y2MyMDFhM2FkZGU3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyNiBPY3QgMjAyMSAxNDozNToyMyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjI1IDYvNl0gRml4aW5nIFdhbHNlbmRlciBjb3JuZXIgY2FzZXMgd2l0aCBsb2dpY2Fs IGRlY29kaW5nCiBvbiBzdGFuZGJ5LgoKVGhlIHByb2JsZW0gaXMgdGhhdCBXYWxTbmRXYWl0 Rm9yV2FsKCkgd2FpdHMgZm9yIHRoZSAqcmVwbGF5KiBMU04gdG8KaW5jcmVhc2UsIGJ1dCBn ZXRzIHdva2VuIHVwIGJ5IHdhbHJlY2VpdmVyIHdoZW4gbmV3IFdBTCBoYXMgYmVlbgpmbHVz aGVkLiBXaGljaCBtZWFucyB0aGF0IHR5cGljYWxseSB3YWxzZW5kZXJzIHdpbGwgZ2V0IHdv a2VuIHVwIGF0IHRoZQpzYW1lIHRpbWUgdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNzIHdpbGwg YmUgLSB3aGljaCBtZWFucyB0aGF0IGJ5IHRoZQp0aW1lIHRoZSBsb2dpY2FsIHdhbHNlbmRl ciBjaGVja3MgR2V0WExvZ1JlcGxheVJlY1B0cigpIGl0J3MgdW5saWtlbHkKdGhhdCB0aGUg c3RhcnR1cCBwcm9jZXNzIGFscmVhZHkgcmVwbGF5ZWQgdGhlIHJlY29yZCBhbmQgdXBkYXRl ZApYTG9nQ3RsLT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIuCgpGaXhlZCBieSBtYWtpbmcgdXNl ZCBvZiBhIGNvbmRpdGlvbiB2YXJpYWJsZSBvbiB0aGUgcmVwbGF5IHBvc2l0aW9uLgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICB8IDIwICsrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgfCAy OSArKysrKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS93YWl0X2V2ZW50LmMgfCAgMyArKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5oICAgICB8IDEyICsrKysrKysrKysKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZl bnQuaCAgICAgICAgICB8ICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygr KSwgMTIgZGVsZXRpb25zKC0pCiAgMjkuNiUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v CiAgNTIuNyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDQuMSUgc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvCiAgMTEuNyUgc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDFlOWY5NDkyN2MuLjNkMTI1MjI4ZmUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTczNyw2ICs3MzcsNyBAQCB0 eXBlZGVmIHN0cnVjdCBYTG9nQ3RsRGF0YQogfSBYTG9nQ3RsRGF0YTsKIAogc3RhdGljIFhM b2dDdGxEYXRhICpYTG9nQ3RsID0gTlVMTDsKK1hMb2dDdGxDdkRhdGEgKlhMb2dDdGxDdiA9 IE5VTEw7CiAKIC8qIGEgcHJpdmF0ZSBjb3B5IG9mIFhMb2dDdGwtPkluc2VydC5XQUxJbnNl cnRMb2NrcywgZm9yIGNvbnZlbmllbmNlICovCiBzdGF0aWMgV0FMSW5zZXJ0TG9ja1BhZGRl ZCAqV0FMSW5zZXJ0TG9ja3MgPSBOVUxMOwpAQCAtNTE4Miw3ICs1MTgzLDggQEAgdm9pZAog WExPR1NobWVtSW5pdCh2b2lkKQogewogCWJvb2wJCWZvdW5kQ0ZpbGUsCi0JCQkJZm91bmRY TG9nOworCQkJCWZvdW5kWExvZywKKwkJCQlmb3VuZFhMb2dDdjsKIAljaGFyCSAgICphbGxv Y3B0cjsKIAlpbnQJCQlpOwogCUNvbnRyb2xGaWxlRGF0YSAqbG9jYWxDb250cm9sRmlsZTsK QEAgLTUyMDcsMTQgKzUyMDksMTcgQEAgWExPR1NobWVtSW5pdCh2b2lkKQogCVhMb2dDdGwg PSAoWExvZ0N0bERhdGEgKikKIAkJU2htZW1Jbml0U3RydWN0KCJYTE9HIEN0bCIsIFhMT0dT aG1lbVNpemUoKSwgJmZvdW5kWExvZyk7CiAKKwlYTG9nQ3RsQ3YgPSAoWExvZ0N0bEN2RGF0 YSAqKQorCQlTaG1lbUluaXRTdHJ1Y3QoIlhMT0cgQ3YgQ3RsIiwgc2l6ZW9mKFhMb2dDdGxD dkRhdGEpLCAmZm91bmRYTG9nQ3YpOworCiAJbG9jYWxDb250cm9sRmlsZSA9IENvbnRyb2xG aWxlOwogCUNvbnRyb2xGaWxlID0gKENvbnRyb2xGaWxlRGF0YSAqKQogCQlTaG1lbUluaXRT dHJ1Y3QoIkNvbnRyb2wgRmlsZSIsIHNpemVvZihDb250cm9sRmlsZURhdGEpLCAmZm91bmRD RmlsZSk7CiAKLQlpZiAoZm91bmRDRmlsZSB8fCBmb3VuZFhMb2cpCisJaWYgKGZvdW5kQ0Zp bGUgfHwgZm91bmRYTG9nIHx8IGZvdW5kWExvZ0N2KQogCXsKLQkJLyogYm90aCBzaG91bGQg YmUgcHJlc2VudCBvciBuZWl0aGVyICovCi0JCUFzc2VydChmb3VuZENGaWxlICYmIGZvdW5k WExvZyk7CisJCS8qIEFsbCBzaG91bGQgYmUgcHJlc2VudCBvciBuZWl0aGVyICovCisJCUFz c2VydChmb3VuZENGaWxlICYmIGZvdW5kWExvZyAmJiBmb3VuZFhMb2dDdik7CiAKIAkJLyog SW5pdGlhbGl6ZSBsb2NhbCBjb3B5IG9mIFdBTEluc2VydExvY2tzICovCiAJCVdBTEluc2Vy dExvY2tzID0gWExvZ0N0bC0+SW5zZXJ0LldBTEluc2VydExvY2tzOwpAQCAtNTIyNCw2ICs1 MjI5LDcgQEAgWExPR1NobWVtSW5pdCh2b2lkKQogCQlyZXR1cm47CiAJfQogCW1lbXNldChY TG9nQ3RsLCAwLCBzaXplb2YoWExvZ0N0bERhdGEpKTsKKwltZW1zZXQoWExvZ0N0bEN2LCAw LCBzaXplb2YoWExvZ0N0bEN2RGF0YSkpOwogCiAJLyoKIAkgKiBBbHJlYWR5IGhhdmUgcmVh ZCBjb250cm9sIGZpbGUgbG9jYWxseSwgdW5sZXNzIGluIGJvb3RzdHJhcCBtb2RlLiBNb3Zl CkBAIC01Mjg1LDYgKzUyOTEsNyBAQCBYTE9HU2htZW1Jbml0KHZvaWQpCiAJU3BpbkxvY2tJ bml0KCZYTG9nQ3RsLT51bHNuX2xjayk7CiAJSW5pdFNoYXJlZExhdGNoKCZYTG9nQ3RsLT5y ZWNvdmVyeVdha2V1cExhdGNoKTsKIAlDb25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dDdGwt PnJlY292ZXJ5Tm90UGF1c2VkQ1YpOworCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ0N0 bEN2LT5yZXBsYXllZENWKTsKIH0KIAogLyoKQEAgLTc2ODQsNiArNzY5MSwxMSBAQCBTdGFy dHVwWExPRyh2b2lkKQogCQkJCVhMb2dDdGwtPmxhc3RSZXBsYXllZFRMSSA9IFRoaXNUaW1l TGluZUlEOwogCQkJCVNwaW5Mb2NrUmVsZWFzZSgmWExvZ0N0bC0+aW5mb19sY2spOwogCisJ CQkJLyoKKwkJCQkgKiB3YWtlIHVwIHdhbHNlbmRlcihzKSB1c2VkIGJ5IGxvZ2ljYWwgZGVj b2Rpbmcgb24gc3RhbmRieS4KKwkJCQkgKi8KKwkJCQlDb25kaXRpb25WYXJpYWJsZUJyb2Fk Y2FzdCgmWExvZ0N0bEN2LT5yZXBsYXllZENWKTsKKwogCQkJCS8qCiAJCQkJICogSWYgcm1f cmVkbyBjYWxsZWQgWExvZ1JlcXVlc3RXYWxSZWNlaXZlclJlcGx5LCB0aGVuIHdlIHdha2UK IAkJCQkgKiB1cCB0aGUgcmVjZWl2ZXIgc28gdGhhdCBpdCBub3RpY2VzIHRoZSB1cGRhdGVk CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IDJlYTRkMjdiNjMuLjg0 NjA0MTMwMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0xNDkz LDYgKzE0OTMsNyBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogewogCWlu dAkJCXdha2VFdmVudHM7CiAJc3RhdGljIFhMb2dSZWNQdHIgUmVjZW50Rmx1c2hQdHIgPSBJ bnZhbGlkWExvZ1JlY1B0cjsKKwlYTG9nQ3RsQ3ZEYXRhICp4bG9nY3RsY3YgPSBYTG9nQ3Rs Q3Y7CiAKIAkvKgogCSAqIEZhc3QgcGF0aCB0byBhdm9pZCBhY3F1aXJpbmcgdGhlIHNwaW5s b2NrIGluIGNhc2Ugd2UgYWxyZWFkeSBrbm93IHdlCkBAIC0xNTExLDcgKzE1MTIsNiBAQCBX YWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCiAJZm9yICg7OykKIAl7Ci0JCWxv bmcJCXNsZWVwdGltZTsKIAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1 cHMgKi8KIAkJUmVzZXRMYXRjaChNeUxhdGNoKTsKQEAgLTE1OTUsMjAgKzE1OTUsMzMgQEAg V2FsU25kV2FpdEZvcldhbChYTG9nUmVjUHRyIGxvYykKIAkJV2FsU25kS2VlcGFsaXZlSWZO ZWNlc3NhcnkoKTsKIAogCQkvKgotCQkgKiBTbGVlcCB1bnRpbCBzb21ldGhpbmcgaGFwcGVu cyBvciB3ZSB0aW1lIG91dC4gIEFsc28gd2FpdCBmb3IgdGhlCi0JCSAqIHNvY2tldCBiZWNv bWluZyB3cml0YWJsZSwgaWYgdGhlcmUncyBzdGlsbCBwZW5kaW5nIG91dHB1dC4KKwkJICog V2hlbiBub3QgaW4gcmVjb3ZlcnksIHNsZWVwIHVudGlsIHNvbWV0aGluZyBoYXBwZW5zIG9y IHdlIHRpbWUgb3V0LgorCQkgKiBBbHNvIHdhaXQgZm9yIHRoZSBzb2NrZXQgYmVjb21pbmcg d3JpdGFibGUsIGlmIHRoZXJlJ3Mgc3RpbGwgcGVuZGluZyBvdXRwdXQuCiAJCSAqIE90aGVy d2lzZSB3ZSBtaWdodCBzaXQgb24gc2VuZGFibGUgb3V0cHV0IGRhdGEgd2hpbGUgd2FpdGlu ZyBmb3IKIAkJICogbmV3IFdBTCB0byBiZSBnZW5lcmF0ZWQuICAoQnV0IGlmIHdlIGhhdmUg bm90aGluZyB0byBzZW5kLCB3ZSBkb24ndAogCQkgKiB3YW50IHRvIHdha2Ugb24gc29ja2V0 LXdyaXRhYmxlLikKIAkJICovCi0JCXNsZWVwdGltZSA9IFdhbFNuZENvbXB1dGVTbGVlcHRp bWUoR2V0Q3VycmVudFRpbWVzdGFtcCgpKTsKKwkJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3Mo KSkKKwkJeworCQkJbG9uZwkJc2xlZXB0aW1lOworCQkJc2xlZXB0aW1lID0gV2FsU25kQ29t cHV0ZVNsZWVwdGltZShHZXRDdXJyZW50VGltZXN0YW1wKCkpOwogCi0JCXdha2VFdmVudHMg PSBXTF9TT0NLRVRfUkVBREFCTEU7CisJCQl3YWtlRXZlbnRzID0gV0xfU09DS0VUX1JFQURB QkxFOwogCi0JCWlmIChwcV9pc19zZW5kX3BlbmRpbmcoKSkKLQkJCXdha2VFdmVudHMgfD0g V0xfU09DS0VUX1dSSVRFQUJMRTsKKwkJCWlmIChwcV9pc19zZW5kX3BlbmRpbmcoKSkKKwkJ CQl3YWtlRXZlbnRzIHw9IFdMX1NPQ0tFVF9XUklURUFCTEU7CiAKLQkJV2FsU25kV2FpdCh3 YWtlRXZlbnRzLCBzbGVlcHRpbWUsIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9XQUlUX1dBTCk7 CisJCQlXYWxTbmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSAqIDEwLCBXQUlUX0VWRU5U X1dBTF9TRU5ERVJfV0FJVF9XQUwpOworCQl9CisJCWVsc2UKKwkJLyoKKwkJICogV2UgYXJl IGluIHRoZSBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgY2FzZS4KKwkJICogV2UgYXJl IHdhaXRpbmcgZm9yIHRoZSBzdGFydHVwIHByb2Nlc3MgdG8gcmVwbGF5IHdhbCByZWNvcmQo cykuCisJCSAqLworCQl7CisJCQlDb25kaXRpb25WYXJpYWJsZVByZXBhcmVUb1NsZWVwKCZ4 bG9nY3RsY3YtPnJlcGxheWVkQ1YpOworCQkJQ29uZGl0aW9uVmFyaWFibGVTbGVlcCgmeGxv Z2N0bGN2LT5yZXBsYXllZENWLCBXQUlUX0VWRU5UX1dBTF9TRU5ERVJfV0FJVF9SRVBMQVkp OworCQl9CiAJfQogCiAJLyogcmVhY3RpdmF0ZSBsYXRjaCBzbyBXYWxTbmRMb29wIGtub3dz IHRvIGNvbnRpbnVlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50 LmMKaW5kZXggNGE1Yjc1MDJmNS4uOTJkYzE3YmFmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtNDQ4LDYgKzQ0OCw5IEBAIHBnc3RhdF9nZXRf d2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9XQUxfUkVDRUlW RVJfV0FJVF9TVEFSVDoKIAkJCWV2ZW50X25hbWUgPSAiV2FsUmVjZWl2ZXJXYWl0U3RhcnQi OwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZ OgorCQkJZXZlbnRfbmFtZSA9ICJXYWxSZWNlaXZlcldhaXRSZXBsYXkiOworCQkJYnJlYWs7 CiAJCWNhc2UgV0FJVF9FVkVOVF9YQUNUX0dST1VQX1VQREFURToKIAkJCWV2ZW50X25hbWUg PSAiWGFjdEdyb3VwVXBkYXRlIjsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuaAppbmRleCA4MjgxMDY5MzNjLi43YTJjMDRjOTM3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93YWxzZW5kZXIuaApAQCAtMTMsNiArMTMsNyBAQAogI2RlZmluZSBfV0FM U0VOREVSX0gKIAogI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgInN0b3JhZ2UvY29u ZGl0aW9uX3ZhcmlhYmxlLmgiCiAKIC8qCiAgKiBXaGF0IHRvIGRvIHdpdGggYSBzbmFwc2hv dCBpbiBjcmVhdGUgcmVwbGljYXRpb24gc2xvdCBjb21tYW5kLgpAQCAtNDgsNiArNDksMTcg QEAgZXh0ZXJuIHZvaWQgV2FsU25kV2FpdFN0b3BwaW5nKHZvaWQpOwogZXh0ZXJuIHZvaWQg SGFuZGxlV2FsU25kSW5pdFN0b3BwaW5nKHZvaWQpOwogZXh0ZXJuIHZvaWQgV2FsU25kUnFz dEZpbGVSZWxvYWQodm9pZCk7CiAKKy8qCisgKiBzaGFyZWQtbWVtb3J5IHN0YXRlIGZvciBD b25kaXRpb24gVmFyaWFibGUocykKKyAqIGJldHdlZW4gdGhlIHN0YXJ0dXAgcHJvY2VzcyBh bmQgdGhlIHdhbHNlbmRlci4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgWExvZ0N0bEN2RGF0YQor eworCUNvbmRpdGlvblZhcmlhYmxlIHJlcGxheWVkQ1Y7Cit9IFhMb2dDdGxDdkRhdGE7CisK K2V4dGVybiBYTG9nQ3RsQ3ZEYXRhICpYTG9nQ3RsQ3Y7CisKIC8qCiAgKiBSZW1lbWJlciB0 aGF0IHdlIHdhbnQgdG8gd2FrZXVwIHdhbHNlbmRlcnMgbGF0ZXIKICAqCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93 YWl0X2V2ZW50LmgKaW5kZXggYzIyMTQyMzY1Zi4uYjFhMjdmNWU4NCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L3dhaXRfZXZlbnQuaApAQCAtMTI1LDYgKzEyNSw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRf RVZFTlRfU1lOQ19SRVAsCiAJV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfRVhJVCwKIAlXQUlU X0VWRU5UX1dBTF9SRUNFSVZFUl9XQUlUX1NUQVJULAorCVdBSVRfRVZFTlRfV0FMX1NFTkRF Ul9XQUlUX1JFUExBWSwKIAlXQUlUX0VWRU5UX1hBQ1RfR1JPVVBfVVBEQVRFCiB9IFdhaXRF dmVudElQQzsKIAotLSAKMi4xOC40Cgo= --------------ut3TX0W0zxc9jxmQce5fK1MC--