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 1lOfVt-00043V-4z for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Mar 2021 11:47:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lOfVr-0005dS-Qo for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Mar 2021 11:47:55 +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 1lOfVr-0005dL-46 for pgsql-hackers@lists.postgresql.org; Tue, 23 Mar 2021 11:47:55 +0000 Received: from smtp-fw-4101.amazon.com ([72.21.198.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lOfVm-00041h-2A for pgsql-hackers@postgresql.org; Tue, 23 Mar 2021 11:47:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1616500070; x=1648036070; h=subject:from:to:cc:references:message-id:date: mime-version:in-reply-to; bh=hiIYgIENzerW6QxAvPZKvkUMM2NYXX1hCqVQq21Uq6A=; b=VuKNu+G1mu84mHV2bfBfL9pQDmx5tuhqiiF47tZC5qxzmsGEkLf26k2w Ntzkz4s1YxpsnoWoe/zTuQXAX6rfizpYGaKxpne14ER/icvJDpp8oxfxq tYpmNFiSPdeq0LWOrQ8pJUHVGunhE3Exmivvy6uLrtjcd+OdXbqm1ngub g=; X-Amazon-filename: v12-0005-Doc-changes-describing-details-about-logical-dec.patch, v12-0004-New-TAP-test-for-logical-decoding-on-standby.patch, v12-0003-Handle-logical-slot-conflicts-on-standby.patch, v12-0002-Add-info-in-WAL-records-in-preparation-for-logic.patch, v12-0001-Allow-logical-decoding-on-standby.patch X-IronPort-AV: E=Sophos;i="5.81,271,1610409600"; d="scan'208,217,223";a="95540877" Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-1e-a70de69e.us-east-1.amazon.com) ([10.43.8.2]) by smtp-border-fw-out-4101.iad4.amazon.com with ESMTP; 23 Mar 2021 11:47:42 +0000 Received: from EX13D03EUC003.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan2.iad.amazon.com [10.40.163.34]) by email-inbound-relay-1e-a70de69e.us-east-1.amazon.com (Postfix) with ESMTPS id 733DFA0723; Tue, 23 Mar 2021 11:47:38 +0000 (UTC) Received: from 38f9d36c4abb.ant.amazon.com (10.43.160.48) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 23 Mar 2021 11:47:33 +0000 Subject: Re: Minimal logical decoding on standbys From: "Drouvot, Bertrand" To: CC: Alvaro Herrera , Andres Freund , tushar , "[pgdg] Robert Haas" , Amit Khandekar , Rahila Syed , pgsql-hackers References: <20200318184249.GA29007@alvherre.pgsql> <20200318195038.GA7123@alvherre.pgsql> <1ab609c9-2c16-26ff-5fbe-c3195e541f9c@amazon.com> <6e1dda09-0c4f-b196-a589-fb741f11686f@amazon.com> Message-ID: Date: Tue, 23 Mar 2021 12:47:29 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------231B584EBEAF0BECAF3ACC2D" Content-Language: en-US X-Originating-IP: [10.43.160.48] X-ClientProxiedBy: EX13D41UWC002.ant.amazon.com (10.43.162.127) 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 --------------231B584EBEAF0BECAF3ACC2D Content-Type: multipart/alternative; boundary="------------CC03C6A2BAFC90C58C4E38D6" --------------CC03C6A2BAFC90C58C4E38D6 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit On 3/22/21 4:56 PM, Drouvot, Bertrand wrote: > > > On 3/22/21 3:57 PM, Drouvot, Bertrand wrote: >> >> >> On 3/22/21 3:10 PM, Fabrízio de Royes Mello wrote: >>> >>> On Thu, Mar 18, 2021 at 5:34 AM Drouvot, Bertrand >>> > wrote: >>> > >>> > Thanks! >>> > >>> > Just made minor changes to make it compiling again on current >>> master (mainly had to take care of >>> ResolveRecoveryConflictWithSnapshotFullXid() that has been >>> introduced in e5d8a99903). >>> > >>> > Please find enclosed the new patch version that currently passes >>> "make check" and the 2 associated TAP tests. >>> > >>> >>> Unfortunately it still not applying to the current master: >>> >>> $ git am ~/Downloads/v10-000*.patch >>> Applying: Allow logical decoding on standby. >>> Applying: Add info in WAL records in preparation for logical slot >>> conflict handling. >>> error: patch failed: src/backend/access/nbtree/nbtpage.c:32 >>> error: src/backend/access/nbtree/nbtpage.c: patch does not apply >>> Patch failed at 0002 Add info in WAL records in preparation for >>> logical slot conflict handling. >>> hint: Use 'git am --show-current-patch' to see the failed patch >>> When you have resolved this problem, run "git am --continue". >>> If you prefer to skip this patch, run "git am --skip" instead. >>> To restore the original branch and stop patching, run "git am --abort". >> >> oh Indeed, it's moving so fast! >> >> Let me rebase it (It was already my plan to do so as I have observed >> during the week end that the >> v7-0003-Handle-logical-slot-conflicts-on-standby.patch >> >> introduced incorrect changes (that should not be there at all in >> ReplicationSlotReserveWal()) that have been kept in v8, v9 and v10. >> > please find enclosed the rebase version, that also contains the fix > for ReplicationSlotReserveWal() mentioned above. > > Going back to looking at the whole thread. > I have one remark regarding the conflicts: The logical slots are dropped if a conflict is detected. But, if the slot is not active before being dropped (say wal_level is changed to  < logical on master and a logical slot is not active on the standby) then its corresponding pg_stat_database_conflicts.confl_logicalslot is not incremented (as it would be incremented "only" during the cancel of an "active" backend). I think, it should be incremented in all the cases (active or not), what do you think? I updated the patch to handle this scenario (see the new pgstat_send_droplogicalslot() in v12-0003-Handle-logical-slot-conflicts-on-standby.patch). I also added more tests in 023_standby_logical_decoding_conflicts.pl to verify that pg_stat_database_conflicts.confl_logicalslot is updated as expected (see check_confl_logicalslot() in v12-0004-New-TAP-test-for-logical-decoding-on-standby.patch). Except this remark and the associated changes, then it looks good to me. Bertrand --------------CC03C6A2BAFC90C58C4E38D6 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 8bit


On 3/22/21 4:56 PM, Drouvot, Bertrand wrote:


On 3/22/21 3:57 PM, Drouvot, Bertrand wrote:


On 3/22/21 3:10 PM, Fabrízio de Royes Mello wrote:

On Thu, Mar 18, 2021 at 5:34 AM Drouvot, Bertrand <bdrouvot@amazon.com> wrote:
>
> Thanks!
>
> Just made minor changes to make it compiling again on current master (mainly had to take care of ResolveRecoveryConflictWithSnapshotFullXid() that has been introduced in e5d8a99903).
>
> Please find enclosed the new patch version that currently passes "make check" and the 2 associated TAP tests.
>

Unfortunately it still not applying to the current master:

$ git am ~/Downloads/v10-000*.patch                                                    
Applying: Allow logical decoding on standby.
Applying: Add info in WAL records in preparation for logical slot conflict handling.
error: patch failed: src/backend/access/nbtree/nbtpage.c:32
error: src/backend/access/nbtree/nbtpage.c: patch does not apply
Patch failed at 0002 Add info in WAL records in preparation for logical slot conflict handling.
hint: Use 'git am --show-current-patch' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

oh Indeed, it's moving so fast!

Let me rebase it (It was already my plan to do so as I have observed during the week end that the v7-0003-Handle-logical-slot-conflicts-on-standby.patch introduced incorrect changes (that should not be there at all in ReplicationSlotReserveWal()) that have been kept in v8, v9 and v10.

please find enclosed the rebase version, that also contains the fix for ReplicationSlotReserveWal() mentioned above.

Going back to looking at the whole thread.

I have one remark regarding the conflicts:

The logical slots are dropped if a conflict is detected.

But, if the slot is not active before being dropped (say wal_level is changed to  < logical on master and a logical slot is not active on the standby) then its corresponding pg_stat_database_conflicts.confl_logicalslot is not incremented (as it would be incremented "only" during the cancel of an "active" backend).

I think, it should be incremented in all the cases (active or not), what do you think?

I updated the patch to handle this scenario (see the new pgstat_send_droplogicalslot() in v12-0003-Handle-logical-slot-conflicts-on-standby.patch).

I also added more tests in 023_standby_logical_decoding_conflicts.pl to verify that pg_stat_database_conflicts.confl_logicalslot is updated as expected (see check_confl_logicalslot() in v12-0004-New-TAP-test-for-logical-decoding-on-standby.patch).

Except this remark and the associated changes, then it looks good to me.

Bertrand

--------------CC03C6A2BAFC90C58C4E38D6-- --------------231B584EBEAF0BECAF3ACC2D Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v12-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v12-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" RnJvbSA0YzcwY2JmNTUwMTM1ZTdmM2I2M2VlNGU4OTdlMDIzOWMxNjA1ZjY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyMyBNYXIgMjAyMSAxMToxOToxOCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjEyIDUvNV0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj YWwKIGRlY29kaW5nLgoKLS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwg fCAxOCArKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25z KCspCiAxMDAuMCUgZG9jL3NyYy9zZ21sLwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9s b2dpY2FsZGVjb2Rpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dt bAppbmRleCA4MGViOTZkNjA5Li5hMmE3NmQyZjY1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbG9naWNhbGRlY29kaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNv ZGluZy5zZ21sCkBAIC0yOTcsNiArMjk3LDI0IEBAIHBvc3RncmVzPSMgc2VsZWN0ICogZnJv bSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEws IE5VCiAgICAgIG1heSBjb25zdW1lIGNoYW5nZXMgZnJvbSBhIHNsb3QgYXQgYW55IGdpdmVu IHRpbWUuCiAgICAgPC9wYXJhPgogCisgICAgPHBhcmE+CisgICAgIEEgbG9naWNhbCByZXBs aWNhdGlvbiBzbG90IGNhbiBhbHNvIGJlIGNyZWF0ZWQgb24gYSBob3Qgc3RhbmRieS4gVG8g cHJldmVudAorICAgICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IGZyb20gcmVtb3Zpbmcg cmVxdWlyZWQgcm93cyBmcm9tIHRoZSBzeXN0ZW0KKyAgICAgY2F0YWxvZ3MsIDx2YXJuYW1l PmhvdF9zdGFuZGJ5X2ZlZWRiYWNrPC92YXJuYW1lPiBzaG91bGQgYmUgc2V0IG9uIHRoZQor ICAgICBzdGFuZGJ5LiBJbiBzcGl0ZSBvZiB0aGF0LCBpZiBhbnkgcmVxdWlyZWQgcm93cyBn ZXQgcmVtb3ZlZCwgdGhlIHNsb3QgZ2V0cworICAgICBkcm9wcGVkLiAgRXhpc3RpbmcgbG9n aWNhbCBzbG90cyBvbiBzdGFuZGJ5IGFsc28gZ2V0IGRyb3BwZWQgaWYgd2FsX2xldmVsCisg ICAgIG9uIHByaW1hcnkgaXMgcmVkdWNlZCB0byBsZXNzIHRoYW4gJ2xvZ2ljYWwnLgorICAg IDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBGb3IgYSBsb2dpY2FsIHNsb3QgdG8gYmUg Y3JlYXRlZCwgaXQgYnVpbGRzIGEgaGlzdG9yaWMgc25hcHNob3QsIGZvciB3aGljaAorICAg ICBpbmZvcm1hdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRyYW5zYWN0aW9u cyBpcyBlc3NlbnRpYWwuIE9uCisgICAgIHByaW1hcnksIHRoaXMgaW5mb3JtYXRpb24gaXMg YXZhaWxhYmxlLCBidXQgb24gc3RhbmRieSwgdGhpcyBpbmZvcm1hdGlvbgorICAgICBoYXMg dG8gYmUgb2J0YWluZWQgZnJvbSBwcmltYXJ5LiBTbywgc2xvdCBjcmVhdGlvbiBtYXkgd2Fp dCBmb3Igc29tZQorICAgICBhY3Rpdml0eSB0byBoYXBwZW4gb24gdGhlIHByaW1hcnkuIElm IHRoZSBwcmltYXJ5IGlzIGlkbGUsIGNyZWF0aW5nIGEKKyAgICAgbG9naWNhbCBzbG90IG9u IHN0YW5kYnkgbWF5IHRha2UgYSBub3RpY2VhYmxlIHRpbWUuCisgICAgPC9wYXJhPgorCiAg ICAgPGNhdXRpb24+CiAgICAgIDxwYXJhPgogICAgICAgUmVwbGljYXRpb24gc2xvdHMgcGVy c2lzdCBhY3Jvc3MgY3Jhc2hlcyBhbmQga25vdyBub3RoaW5nIGFib3V0IHRoZSBzdGF0ZQot LSAKMi4xOC40Cgo= --------------231B584EBEAF0BECAF3ACC2D Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v12-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v12-0004-New-TAP-test-for-logical-decoding-on-standby.patch" RnJvbSBmOWRkYWZhZTBiNzYyODFhNDc2OGM1OGQxNGYzOTllYTE4NTdjMDY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyMyBNYXIgMjAyMSAxMToxODozMyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjEyIDQvNV0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpUaGlzIHRlc3Qgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBDcmFpZyBSaW5nZXIs IHRoZW4KZXh0ZW5kZWQvbW9kaWZpZWQgYnkgbWUsIHRvIHRlc3QgdmFyaW91cyBzbG90IGNv bmZsaWN0IHNjZW5hcmlvcy4KCkF1dGhvcnM6IENyYWlnIFJpbmdlciwgQW1pdCBLaGFuZGVr YXIuCi0tLQogc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jlc05vZGUucG0gICAgICAgICAgICAgICAg IHwgIDM3ICsrKwogLi4uL3QvMDIyX3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZ194bWlucy5w bCAgIHwgMjcyICsrKysrKysrKysrKysrKysrKwogLi4uLzAyM19zdGFuZGJ5X2xvZ2ljYWxf ZGVjb2RpbmdfY29uZmxpY3RzLnBsIHwgMjI4ICsrKysrKysrKysrKysrKwogMyBmaWxlcyBj aGFuZ2VkLCA1MzcgaW5zZXJ0aW9ucygrKQogICA1LjglIHNyYy90ZXN0L3BlcmwvCiAgOTQu MSUgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8KCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bv c3RncmVzTm9kZS5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZXNOb2RlLnBtCmluZGV4IDk3 ZTA1OTkzYmUuLjhhMTA4ZTllMTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3BlcmwvUG9zdGdy ZXNOb2RlLnBtCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZXNOb2RlLnBtCkBAIC0yMjQ1 LDYgKzIyNDUsNDMgQEAgc3ViIHBnX3JlY3Zsb2dpY2FsX3VwdG8KIAogPXBvZAogCis9aXRl bSAkbm9kZS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIG1hc3Rlciwg c2xvdF9uYW1lLCBkYm5hbWUpCisKK0NyZWF0ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qg b24gZ2l2ZW4gc3RhbmRieQorCis9Y3V0CisKK3N1YiBjcmVhdGVfbG9naWNhbF9zbG90X29u X3N0YW5kYnkKK3sKKwlteSAoJHNlbGYsICRtYXN0ZXIsICRzbG90X25hbWUsICRkYm5hbWUp ID0gQF87CisJbXkgKCRzdGRvdXQsICRzdGRlcnIpOworCisJbXkgJGhhbmRsZTsKKworCSRo YW5kbGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRzZWxm LT5jb25uc3RyKCRkYm5hbWUpLCAnLVAnLCAndGVzdF9kZWNvZGluZycsICctUycsICRzbG90 X25hbWUsICctLWNyZWF0ZS1zbG90J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJy KTsKKworCSMgT25jZSBzbG90IHJlc3RhcnRfbHNuIGlzIGNyZWF0ZWQsIHRoZSBzdGFuZGJ5 IGxvb2tzIGZvciB4bF9ydW5uaW5nX3hhY3RzCisJIyBXQUwgcmVjb3JkIGZyb20gdGhlIHJl c3RhcnRfbHNuIG9ud2FyZHMuIFNvIGZpcnN0bHksIHdhaXQgdW50aWwgdGhlIHNsb3QKKwkj IHJlc3RhcnRfbHNuIGlzIGV2YWx1YXRlZC4KKworCSRzZWxmLT5wb2xsX3F1ZXJ5X3VudGls KAorCQkncG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUIHJlc3RhcnRfbHNuIElTIE5PVCBOVUxM CisJCUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25h bWUgPSAnJHNsb3RfbmFtZScKKwldKSBvciBkaWUgInRpbWVkIG91dCB3YWl0aW5nIGZvciBs b2dpY2FsIHNsb3QgdG8gY2FsY3VsYXRlIGl0cyByZXN0YXJ0X2xzbiI7CisKKwkjIE5vdyBh cnJhbmdlIGZvciB0aGUgeGxfcnVubmluZ194YWN0cyByZWNvcmQgZm9yIHdoaWNoIHBnX3Jl Y3Zsb2dpY2FsCisJIyBpcyB3YWl0aW5nLgorCSRtYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnQ0hFQ0tQT0lOVCcpOworCisJJGhhbmRsZS0+ZmluaXNoKCk7CisKKwlpcygkc2Vs Zi0+c2xvdCgkc2xvdF9uYW1lKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLCAkc2xvdF9u YW1lIC4gJyBvbiBzdGFuZGJ5IGNyZWF0ZWQnKQorCQlvciBkaWUgImNvdWxkIG5vdCBjcmVh dGUgc2xvdCIgLiAkc2xvdF9uYW1lOworfQorCis9cG9kCisKID1iYWNrCiAKID1jdXQKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDIyX3N0YW5kYnlfbG9naWNhbF9kZWNv ZGluZ194bWlucy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDIyX3N0YW5kYnlfbG9naWNh bF9kZWNvZGluZ194bWlucy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi5kNjU0ZDc5NTI2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wMjJfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nX3htaW5zLnBsCkBAIC0wLDAgKzEsMjcy IEBACisjIGxvZ2ljYWwgZGVjb2Rpbmcgb24gYSBzdGFuZGJ5IDogZW5zdXJlIHhtaW5zIGFy ZSBhcHByb3ByaWF0ZWx5IHVwZGF0ZWQKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsK KwordXNlIFBvc3RncmVzTm9kZTsKK3VzZSBUZXN0TGliOwordXNlIFRlc3Q6Ok1vcmUgdGVz dHMgPT4gMjM7Cit1c2UgUmVjdXJzaXZlQ29weTsKK3VzZSBGaWxlOjpDb3B5OwordXNlIFRp bWU6OkhpUmVzIHF3KHVzbGVlcCk7CisKK215ICgkc3RkaW4sICRzdGRvdXQsICRzdGRlcnIs ICRyZXQsICRoYW5kbGUsICRzbG90KTsKKworbXkgJG5vZGVfbWFzdGVyID0gZ2V0X25ld19u b2RlKCdtYXN0ZXInKTsKK215ICRub2RlX3N0YW5kYnkgPSBnZXRfbmV3X25vZGUoJ3N0YW5k YnknKTsKKworIyBOYW1lIGZvciB0aGUgcGh5c2ljYWwgc2xvdCBvbiBtYXN0ZXIKK215ICRt YXN0ZXJfc2xvdG5hbWUgPSAnbWFzdGVyX3BoeXNpY2FsJzsKKyMgTmFtZSBmb3IgdGhlIGxv Z2ljYWwgc2xvdCBvbiBzdGFuZGJ5CitteSAkc3RhbmRieV9zbG90bmFtZSA9ICdzdGFuZGJ5 X2xvZ2ljYWwnOworCisjIEZldGNoIHhtaW4gY29sdW1ucyBmcm9tIHNsb3QncyBwZ19yZXBs aWNhdGlvbl9zbG90cyByb3csIGFmdGVyIHdhaXRpbmcgZm9yCisjIGdpdmVuIGJvb2xlYW4g Y29uZGl0aW9uIHRvIGJlIHRydWUgdG8gZW5zdXJlIHdlJ3ZlIHJlYWNoZWQgYSBxdWllc2Nl bnQgc3RhdGUKK3N1YiB3YWl0X2Zvcl94bWlucworeworCW15ICgkbm9kZSwgJHNsb3RuYW1l LCAkY2hlY2tfZXhwcikgPSBAXzsKKworCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkn cG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUICRjaGVja19leHByCisJCUZST00gcGdfY2F0YWxv Zy5wZ19yZXBsaWNhdGlvbl9zbG90cworCQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3RuYW1l JzsKKwldKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzbG90IHhtaW5zIHRvIGFk dmFuY2UiOworfQorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFsaXpl IG1hc3RlciBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfbWFzdGVy LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSwgaGFzX2FyY2hpdmluZyA9PiAxKTsKKyRu b2RlX21hc3Rlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHF7Cit3YWxfbGV2 ZWwgPSAnbG9naWNhbCcKK21heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKK21heF93YWxfc2Vu ZGVycyA9IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAnZGVidWcyJworbG9nX2Vycm9yX3ZlcmJv c2l0eSA9IHZlcmJvc2UKKyMgdmVyeSBwcm9tcHRseSB0ZXJtaW5hdGUgY29uZmxpY3Rpbmcg YmFja2VuZHMKK21heF9zdGFuZGJ5X3N0cmVhbWluZ19kZWxheSA9ICcycycKK30pOworJG5v ZGVfbWFzdGVyLT5kdW1wX2luZm87Ciskbm9kZV9tYXN0ZXItPnN0YXJ0OworCiskbm9kZV9t YXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVtTRUxFQ1QgKiBGUk9NIHBnX2NyZWF0 ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KCckbWFzdGVyX3Nsb3RuYW1lJyk7XSk7Citt eSAkYmFja3VwX25hbWUgPSAnYjEnOworJG5vZGVfbWFzdGVyLT5iYWNrdXAoJGJhY2t1cF9u YW1lKTsKKworIyBBZnRlciBzbG90IGNyZWF0aW9uLCB4bWlucyBtdXN0IGJlIG51bGwKKyRz bG90ID0gJG5vZGVfbWFzdGVyLT5zbG90KCRtYXN0ZXJfc2xvdG5hbWUpOworaXMoJHNsb3Qt PnsneG1pbid9LCAnJywgInhtaW4gbnVsbCIpOworaXMoJHNsb3QtPnsnY2F0YWxvZ194bWlu J30sICcnLCAiY2F0YWxvZ194bWluIG51bGwiKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgSW5pdGlhbGl6ZSBzbGF2ZSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor Ciskbm9kZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKAorCSRub2RlX21hc3RlciwgJGJh Y2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEp OworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXFb cHJpbWFyeV9zbG90X25hbWUgPSAnJG1hc3Rlcl9zbG90bmFtZSddKTsKKyRub2RlX3N0YW5k YnktPnN0YXJ0OworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5k YnksICdyZXBsYXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgeG1pbi9jYXRhbG9nX3htaW4gdmVyaWZp Y2F0aW9uIGJlZm9yZSBhbmQgYWZ0ZXIgc3RhbmRieS1sb2dpY2FsLXNsb3QgY3JlYXRpb24u CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFdpdGggaG90X3N0YW5k YnlfZmVlZGJhY2sgb2ZmLCB4bWluIGFuZCBjYXRhbG9nX3htaW4gbXVzdCBzdGlsbCBiZSBu dWxsCiskc2xvdCA9ICRub2RlX21hc3Rlci0+c2xvdCgkbWFzdGVyX3Nsb3RuYW1lKTsKK2lz KCRzbG90LT57J3htaW4nfSwgJycsICJ4bWluIG51bGwgYWZ0ZXIgc3RhbmRieSBqb2luIik7 Citpcygkc2xvdC0+eydjYXRhbG9nX3htaW4nfSwgJycsICJjYXRhbG9nX3htaW4gbnVsbCBh ZnRlciBzdGFuZGJ5IGpvaW4iKTsKKworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KKyMgc2VuZCBz dGF0dXMgcmFwaWRseSBzbyB3ZSBwcm9tcHRseSBhZHZhbmNlIHhtaW4gb24gbWFzdGVyCit3 YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsID0gMQorXSk7Ciskbm9kZV9zdGFuZGJ5LT5y ZXN0YXJ0OworCisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBzZW50IGJ5IHdhaXRp bmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1pbiBvbiBtYXN0ZXIuIFdp dGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gc2hvdWxkIGFkdmFuY2UsCisjIGJ1 dCBjYXRhbG9nX3htaW4gc2hvdWxkIHN0aWxsIHJlbWFpbiBOVUxMIHNpbmNlIHRoZXJlIGlz IG5vIGxvZ2ljYWwgc2xvdC4KK3dhaXRfZm9yX3htaW5zKCRub2RlX21hc3RlciwgJG1hc3Rl cl9zbG90bmFtZSwgInhtaW4gSVMgTk9UIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxM Iik7CisKKyMgQ3JlYXRlIG5ldyBzbG90cyBvbiB0aGUgc3RhbmRieSwgaWdub3JpbmcgdGhl IG9uZXMgb24gdGhlIG1hc3RlciBjb21wbGV0ZWx5LgorIworIyBUaGlzIG11c3Qgc3VjY2Vl ZCBzaW5jZSB3ZSBrbm93IHdlIGhhdmUgYSBjYXRhbG9nX3htaW4gcmVzZXJ2YXRpb24uIFdl CisjIG1pZ2h0J3ZlIGFscmVhZHkgc2VudCBob3Qgc3RhbmRieSBmZWVkYmFjayB0byBhZHZh bmNlIG91ciBwaHlzaWNhbCBzbG90J3MKKyMgY2F0YWxvZ194bWluIGJ1dCBub3QgcmVjZWl2 ZWQgdGhlIGNvcnJlc3BvbmRpbmcgeGxvZyBmb3IgdGhlIGNhdGFsb2cgeG1pbgorIyBhZHZh bmNlLCBpbiB3aGljaCBjYXNlIHdlJ2xsIGNyZWF0ZSBhIHNsb3QgdGhhdCBpc24ndCB1c2Fi bGUuIFRoZSBjYWxsaW5nCisjIGFwcGxpY2F0aW9uIGNhbiBwcmV2ZW50IHRoaXMgYnkgY3Jl YXRpbmcgYSB0ZW1wb3Jhcnkgc2xvdCBvbiB0aGUgbWFzdGVyIHRvCisjIGxvY2sgaW4gaXRz IGNhdGFsb2dfeG1pbi4gRm9yIGEgdHJ1bHkgcmFjZS1mcmVlIHNvbHV0aW9uIHdlJ2QgbmVl ZAorIyBtYXN0ZXItdG8tc3RhbmRieSBob3Rfc3RhbmRieV9mZWVkYmFjayByZXBsaWVzLgor IworIyBJbiB0aGlzIGNhc2UgaXQgd29uJ3QgcmFjZSBiZWNhdXNlIHRoZXJlJ3Mgbm8gY29u Y3VycmVudCBhY3Rpdml0eSBvbiB0aGUKKyMgbWFzdGVyLgorIworJG5vZGVfc3RhbmRieS0+ Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX21hc3RlciwgJHN0YW5kYnlf c2xvdG5hbWUsICdwb3N0Z3JlcycpOworCiskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNo dXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcp KTsKKworIyBOb3cgdGhhdCBzbG90IGlzIGNyZWF0ZWQgb24gc3RhbmRieSwgeG1pbiBhbmQg Y2F0YWxvZ194bWluIHNob3VsZCBiZSBub24gTlVMTAorIyBvbiBib3RoIG1hc3RlciBhbmQg c3RhbmRieS4gQnV0IG9uIG1hc3RlciwgdGhlIHhtaW5zIHdpbGwgYmUgdXBkYXRlZCBvbmx5 CisjIGFmdGVyIGhvdCBzdGFuZGJ5IGZlZWRiYWNrIGlzIHJlY2VpdmVkLgord2FpdF9mb3Jf eG1pbnMoJG5vZGVfbWFzdGVyLCAkbWFzdGVyX3Nsb3RuYW1lLCAieG1pbiBJUyBOT1QgTlVM TCBBTkQgY2F0YWxvZ194bWluIElTIE5PVCBOVUxMIik7CisKKyRzbG90ID0gJG5vZGVfc3Rh bmRieS0+c2xvdCgkc3RhbmRieV9zbG90bmFtZSk7Citpcygkc2xvdC0+eyd4bWluJ30sICcn LCAibG9naWNhbCB4bWluIG51bGwiKTsKK2lzbnQoJHNsb3QtPnsnY2F0YWxvZ194bWluJ30s ICcnLCAibG9naWNhbCBjYXRhbG9nX3htaW4gbm90IG51bGwiKTsKKworCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTdGFuZGJ5IGxvZ2ljYWwgc2xvdCBzaG91bGQg YmUgYWJsZSB0byBmZXRjaCB0aGUgdGFibGUgY2hhbmdlcyBldmVuIHdoZW4gdGhlCisjIHRh YmxlIGlzIGRyb3BwZWQuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisk bm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIFRBQkxFIHRlc3Rf dGFibGUoaWQgc2VyaWFsIHByaW1hcnkga2V5LCBibGFoIHRleHQpJyk7Ciskbm9kZV9tYXN0 ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxW0lOU0VSVCBJTlRPIHRlc3RfdGFibGUoYmxh aCkgdmFsdWVzICgnaXR3b3JrcycpXSk7Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnRFJPUCBUQUJMRSB0ZXN0X3RhYmxlJyk7Ciskbm9kZV9tYXN0ZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAnVkFDVVVNJyk7CisKKyRub2RlX21hc3Rlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2Zs dXNoJykpOworCisjIFNob3VsZCBzaG93IHRoZSBpbnNlcnRzIGV2ZW4gd2hlbiB0aGUgdGFi bGUgaXMgZHJvcHBlZCBvbiBtYXN0ZXIKKygkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRu b2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19s b2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJyRzdGFuZGJ5X3Nsb3RuYW1lJywgTlVMTCwgTlVM TCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNs dWRlLXRpbWVzdGFtcCcsICcwJyldKTsKK2lzKCRzdGRlcnIsICcnLCAnc3RkZXJyIGlzIGVt cHR5Jyk7CitpcygkcmV0LCAwLCAncmVwbGF5IGZyb20gc2xvdCBzdWNjZWVkZWQnKQorCW9y IGRpZSAnY2Fubm90IGNvbnRpbnVlIGlmIHNsb3QgcmVwbGF5IGZhaWxzJzsKK2lzKCRzdGRv dXQsIHF7QkVHSU4KK3RhYmxlIHB1YmxpYy50ZXN0X3RhYmxlOiBJTlNFUlQ6IGlkW2ludGVn ZXJdOjEgYmxhaFt0ZXh0XTonaXR3b3JrcycKK0NPTU1JVH0sICdyZXBsYXkgcmVzdWx0cyBt YXRjaCcpOworCiskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRi eSwgJ3JlcGxheScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworJHNsb3QgPSAk bm9kZV9tYXN0ZXItPnNsb3QoJG1hc3Rlcl9zbG90bmFtZSk7Citpc250KCRzbG90LT57J3ht aW4nfSwgJycsICJwaHlzaWNhbCB4bWluIG5vdCBudWxsIik7CitteSAkc2F2ZWRfcGh5c2lj YWxfY2F0YWxvZ194bWluID0gJHNsb3QtPnsnY2F0YWxvZ194bWluJ307Citpc250KCRzYXZl ZF9waHlzaWNhbF9jYXRhbG9nX3htaW4sICcnLCAicGh5c2ljYWwgY2F0YWxvZ194bWluIG5v dCBudWxsIik7CisKKyRzbG90ID0gJG5vZGVfc3RhbmRieS0+c2xvdCgkc3RhbmRieV9zbG90 bmFtZSk7Citpcygkc2xvdC0+eyd4bWluJ30sICcnLCAibG9naWNhbCB4bWluIG51bGwiKTsK K215ICRzYXZlZF9sb2dpY2FsX2NhdGFsb2dfeG1pbiA9ICRzbG90LT57J2NhdGFsb2dfeG1p bid9OworaXNudCgkc2F2ZWRfbG9naWNhbF9jYXRhbG9nX3htaW4sICcnLCAibG9naWNhbCBj YXRhbG9nX3htaW4gbm90IG51bGwiKTsKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBDYXRhbG9nIHhtaW5zIHNob3VsZCBhZHZhbmNlIGFmdGVyIHN0YW5kYnkg bG9naWNhbCBzbG90IGZldGNoZXMgdGhlIGNoYW5nZXMuCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisjIElkZWFsbHkgd2UnZCBqdXN0IGhvbGQgY2F0YWxvZ194bWlu LCBidXQgc2luY2UgaHNfZmVlZGJhY2sgY3VycmVudGx5IHVzZXMgdGhlIHNsb3QsCisjIHdl IGhvbGQgZG93biB4bWluLgorJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXFbQ1JFQVRFIFRBQkxFIGNhdGFsb2dfaW5jcmVhc2VfMSgpO10pOworJG5vZGVfbWFzdGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxlKGlkIHNl cmlhbCBwcmltYXJ5IGtleSwgYmxhaCB0ZXh0KScpOworZm9yIG15ICRpICgwIC4uIDIwMDAp Cit7CisgICAgJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbSU5TRVJU IElOVE8gdGVzdF90YWJsZShibGFoKSBWQUxVRVMgKCdlbnRyeSAkaScpXSk7Cit9Ciskbm9k ZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVtDUkVBVEUgVEFCTEUgY2F0YWxv Z19pbmNyZWFzZV8yKCk7XSk7Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnVkFDVVVNJyk7CisKKyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9z dGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCitjbXBf b2soJG5vZGVfc3RhbmRieS0+c2xvdCgkc3RhbmRieV9zbG90bmFtZSktPnsnY2F0YWxvZ194 bWluJ30sICI9PSIsCisJICAgJHNhdmVkX2xvZ2ljYWxfY2F0YWxvZ194bWluLAorCSAgICJs b2dpY2FsIHNsb3QgY2F0YWxvZ194bWluIGhhc24ndCBhZHZhbmNlZCBiZWZvcmUgZ2V0X2No YW5nZXMiKTsKKworKCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfc3RhbmRieS0+ cHNxbCgncG9zdGdyZXMnLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90 X2dldF9jaGFuZ2VzKCckc3RhbmRieV9zbG90bmFtZScsIE5VTEwsIE5VTEwsICdpbmNsdWRl LXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS10aW1lc3Rh bXAnLCAnMCcpXSk7CitpcygkcmV0LCAwLCAncmVwbGF5IG9mIGJpZyBzZXJpZXMgc3VjY2Vl ZGVkJyk7Citpc250KCRzdGRvdXQsICcnLCAncmVwbGF5ZWQgc29tZSByb3dzJyk7CisKKyRu b2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5Jywg JG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCisjIGxvZ2ljYWwgc2xvdCBjYXRhbG9n X3htaW4gb24gc2xhdmUgc2hvdWxkIGFkdmFuY2UgYWZ0ZXIgcGdfbG9naWNhbF9zbG90X2dl dF9jaGFuZ2VzCit3YWl0X2Zvcl94bWlucygkbm9kZV9zdGFuZGJ5LCAkc3RhbmRieV9zbG90 bmFtZSwKKwkJCSAgICJjYXRhbG9nX3htaW46OnZhcmNoYXI6OmludCA+ICR7c2F2ZWRfbG9n aWNhbF9jYXRhbG9nX3htaW59Iik7Ciskc2xvdCA9ICRub2RlX3N0YW5kYnktPnNsb3QoJHN0 YW5kYnlfc2xvdG5hbWUpOworbXkgJG5ld19sb2dpY2FsX2NhdGFsb2dfeG1pbiA9ICRzbG90 LT57J2NhdGFsb2dfeG1pbid9OworaXMoJHNsb3QtPnsneG1pbid9LCAnJywgImxvZ2ljYWwg eG1pbiBudWxsIik7CisKKyMgaG90IHN0YW5kYnkgZmVlZGJhY2sgc2hvdWxkIGFkdmFuY2Ug bWFzdGVyJ3MgcGh5cyBjYXRhbG9nX3htaW4gbm93IHRoYXQgdGhlCisjIHN0YW5kYnkncyBz bG90IGRvZXNuJ3QgaG9sZCBpdCBkb3duIGFzIGZhci4KKyMgQnV0IG1hc3RlcidzIHBoeXMg Y2F0YWxvZ194bWluIHNob3VsZCBub3QgZ28gcGFzdCB0aGUgc2xhdmUncyBsb2dpY2FsIHNs b3QncworIyBjYXRhbG9nX3htaW4sIGV2ZW4gd2hpbGUgbWFzdGVyJ3MgcGh5cyB4bWluIGFk dmFuY2VzLgorIworIyBGaXJzdCwgbWFrZSBzdXJlIG1hc3RlcidzIHhtaW4gaXMgYWR2YW5j ZWQuIFRoaXMgaGFwcGVucyBvbiBob3Qgc3RhbmRieQorIyBmZWVkYmFjay4gU28gdGhpcyBj aGVjayBmb3IgbWFzdGVyJ3MgeG1pbiBhZHZhbmNlIGFsc28gbWFrZXMgc3VyZSBob3Qgc3Rh bmRieQorIyBmZWVkYmFjayBoYXMgcmVhY2hlZCB0aGUgbWFzdGVyLCB3aGljaCBpcyByZXF1 aXJlZCBmb3IgdGhlIHN1YnNlcXVlbnQKKyMgY2F0YWxvZ194bWluIHRlc3QuCitteSAkdGVt cF9waHlzX3htaW4gPSAkbm9kZV9tYXN0ZXItPnNsb3QoJG1hc3Rlcl9zbG90bmFtZSktPnsn eG1pbid9OworJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCB0 eGlkX2N1cnJlbnQoKScpOword2FpdF9mb3JfeG1pbnMoJG5vZGVfbWFzdGVyLCAkbWFzdGVy X3Nsb3RuYW1lLAorCQkJICAgInhtaW46OnZhcmNoYXI6OmludCA+ICR7dGVtcF9waHlzX3ht aW59Iik7Ciskc2xvdCA9ICRub2RlX21hc3Rlci0+c2xvdCgkbWFzdGVyX3Nsb3RuYW1lKTsK KyMgTm93IGNoZWNrIHRoYXQgdGhlIG1hc3RlcidzIHBoeXMgY2F0YWxvZ194bWluIGhhcyBh ZHZhbmNlZCBidXQgbm90IGJleW9uZAorIyBzdGFuZGJ5J3MgbG9naWNhbCBjYXRhbG9nX3ht aW4KK2NtcF9vaygkc2xvdC0+eydjYXRhbG9nX3htaW4nfSwgIj4iLCAkc2F2ZWRfcGh5c2lj YWxfY2F0YWxvZ194bWluLAorCSd1cHN0cmVhbSBwaHlzaWNhbCBzbG90IGNhdGFsb2dfeG1p biBoYXMgYWR2YW5jZWQgd2l0aCBoc19mZWVkYmFjayBvbicpOworY21wX29rKCRzbG90LT57 J2NhdGFsb2dfeG1pbid9LCAiPT0iLCAkbmV3X2xvZ2ljYWxfY2F0YWxvZ194bWluLAorCSd1 cHN0cmVhbSBwaHlzaWNhbCBzbG90IGNhdGFsb2dfeG1pbiBub3QgcGFzdCBkb3duc3RyZWFt IGNhdGFsb2dfeG1pbiB3aXRoIGhzX2ZlZWRiYWNrIG9uJyk7CisKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBVcHN0cmVhbSBvbGRlc3RYaWQgc2hvdWxkIG5vdCBnbyBwYXN0IGRv d25zdHJlYW0gY2F0YWxvZ194bWluCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgRmly c3QgYnVybiBzb21lIHhpZHMgb24gdGhlIG1hc3RlciBpbiBhbm90aGVyIERCLCBzbyB3ZSBw dXNoIHRoZSBtYXN0ZXIncworIyBuZXh0WGlkIGFoZWFkLgorZm9yZWFjaCBteSAkaSAoMSAu LiAxMDApCit7CisJJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVD VCB0eGlkX2N1cnJlbnQoKScpOworfQorCisjIEZvcmNlIHZhY3V1bSBmcmVlemUgb24gdGhl IG1hc3RlciBhbmQgZW5zdXJlIGl0cyBvbGRlc3RYbWluIGRvZXNuJ3QgYWR2YW5jZQorIyBw YXN0IG91ciBuZWVkZWQgeG1pbi4gVGhlIG9ubHkgd2F5IHdlIGhhdmUgdmlzaWJpbGl0eSBp bnRvIHRoYXQgaXMgdG8gZm9yY2UKKyMgYSBjaGVja3BvaW50LgorJG5vZGVfbWFzdGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlVQREFURSBwZ19kYXRhYmFzZSBTRVQgZGF0YWxsb3dj b25uID0gdHJ1ZSBXSEVSRSBkYXRuYW1lID0gJ3RlbXBsYXRlMCciKTsKK2ZvcmVhY2ggbXkg JGRibmFtZSAoJ3RlbXBsYXRlMScsICdwb3N0Z3JlcycsICdwb3N0Z3JlcycsICd0ZW1wbGF0 ZTAnKQoreworCSRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCRkYm5hbWUsICdWQUNVVU0gRlJF RVpFJyk7Cit9Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ0hFQ0tQ T0lOVCcpOworSVBDOjpSdW46OnJ1bihbJ3BnX2NvbnRyb2xkYXRhJywgJG5vZGVfbWFzdGVy LT5kYXRhX2RpcigpXSwgJz4nLCBcJHN0ZG91dCkKKwlvciBkaWUgInBnX2NvbnRyb2xkYXRh IGZhaWxlZCB3aXRoICQ/IjsKK215IEBjaGVja3BvaW50ID0gc3BsaXQoJ1xuJywgJHN0ZG91 dCk7CitteSAkb2xkZXN0WGlkID0gJyc7Citmb3JlYWNoIG15ICRsaW5lIChAY2hlY2twb2lu dCkKK3sKKwlpZiAoJGxpbmUgPX4gcXIvXkxhdGVzdCBjaGVja3BvaW50J3Mgb2xkZXN0WElE OlxzKyhcZCspLykKKwl7CisJCSRvbGRlc3RYaWQgPSAkMTsKKwl9Cit9CitkaWUgJ25vIG9s ZGVzdFhJRCBmb3VuZCBpbiBjaGVja3BvaW50JyB1bmxlc3MgJG9sZGVzdFhpZDsKKworY21w X29rKCRvbGRlc3RYaWQsICI8PSIsICRub2RlX3N0YW5kYnktPnNsb3QoJHN0YW5kYnlfc2xv dG5hbWUpLT57J2NhdGFsb2dfeG1pbid9LAorCSAgICd1cHN0cmVhbSBvbGRlc3RYaWQgbm90 IHBhc3QgZG93bnN0cmVhbSBjYXRhbG9nX3htaW4gd2l0aCBoc19mZWVkYmFjayBvbicpOwor Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJVUERBVEUgcGdfZGF0 YWJhc2UgU0VUIGRhdGFsbG93Y29ubiA9IGZhbHNlIFdIRVJFIGRhdG5hbWUgPSAndGVtcGxh dGUwJyIpOworCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIERyb3Agc2xvdAorIyBNYWtlIHN1cmUgc3RhbmRieSBzbG90cyBhcmUg ZHJvcHBhYmxlLCBhbmQgcHJvcGVybHkgY2xlYXIgdGhlIHVwc3RyZWFtJ3MgeG1pbgorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaXMo JG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTSE9XIGhvdF9zdGFuZGJ5 X2ZlZWRiYWNrJyksICdvbicsICdoc19mZWVkYmFjayBpcyBvbicpOworCiskbm9kZV9zdGFu ZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Ns b3QoJyRzdGFuZGJ5X3Nsb3RuYW1lJyldKTsKKworaXMoJG5vZGVfc3RhbmRieS0+c2xvdCgk c3RhbmRieV9zbG90bmFtZSktPnsnc2xvdF90eXBlJ30sICcnLCAnc2xvdCBvbiBzdGFuZGJ5 IGRyb3BwZWQgbWFudWFsbHknKTsKKworIyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sg c2VudCBieSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4g b24gbWFzdGVyLiBjYXRhbG9nX3htaW4gc2hvdWxkIGJlY29tZSBOVUxMIGJlY2F1c2Ugd2Ug ZHJvcHBlZAorIyB0aGUgbG9naWNhbCBzbG90Lgord2FpdF9mb3JfeG1pbnMoJG5vZGVfbWFz dGVyLCAkbWFzdGVyX3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMgTk9UIE5VTEwgQU5EIGNh dGFsb2dfeG1pbiBJUyBOVUxMIik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90 LzAyM19zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmdfY29uZmxpY3RzLnBsIGIvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMjNfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nX2NvbmZsaWN0cy5wbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40MjZhNDEyYjFmCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjNfc3RhbmRieV9sb2dpY2Fs X2RlY29kaW5nX2NvbmZsaWN0cy5wbApAQCAtMCwwICsxLDIyOCBAQAorIyBsb2dpY2FsIGRl Y29kaW5nIG9uIGEgc3RhbmRieSA6IHRlc3QgY29uZmxpY3QgcmVjb3Zlcnk7IGFuZCBvdGhl ciB0ZXN0cyB0aGF0CisjIHZlcmlmeSBzbG90cyBnZXQgZHJvcHBlZCBhcyBleHBlY3RlZC4K KwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVzTm9kZTsKK3Vz ZSBUZXN0TGliOwordXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMjY7Cit1c2UgUmVjdXJzaXZl Q29weTsKK3VzZSBGaWxlOjpDb3B5OwordXNlIFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CisK K215ICgkc3RkaW4sICRzdGRvdXQsICRzdGRlcnIsICRyZXQsICRoYW5kbGUsICRzbG90KTsK KworbXkgJG5vZGVfbWFzdGVyID0gZ2V0X25ld19ub2RlKCdtYXN0ZXInKTsKK215ICRub2Rl X3N0YW5kYnkgPSBnZXRfbmV3X25vZGUoJ3N0YW5kYnknKTsKKworIyBOYW1lIGZvciB0aGUg cGh5c2ljYWwgc2xvdCBvbiBtYXN0ZXIKK215ICRtYXN0ZXJfc2xvdG5hbWUgPSAnbWFzdGVy X3BoeXNpY2FsJzsKKworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90J3MgcGdfcmVw bGljYXRpb25fc2xvdHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgorIyBnaXZlbiBib29sZWFu IGNvbmRpdGlvbiB0byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVkIGEgcXVpZXNj ZW50IHN0YXRlCitzdWIgd2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJG5vZGUsICRzbG90bmFt ZSwgJGNoZWNrX2V4cHIpID0gQF87CisKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJ J3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCAkY2hlY2tfZXhwcgorCQlGUk9NIHBnX2NhdGFs b2cucGdfcmVwbGljYXRpb25fc2xvdHMKKwkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90bmFt ZSc7CisJXSkgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3Igc2xvdCB4bWlucyB0byBh ZHZhbmNlIjsKK30KKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 cy5jb25mbF9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCitzdWIgY2hlY2tfY29uZmxf bG9naWNhbHNsb3QKK3sKKwlvayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgK KwkJJ3Bvc3RncmVzJywKKwkJInNlbGVjdCAoY29uZmxfbG9naWNhbHNsb3QgPSAyKSBmcm9t IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIs ICd0JyksCisJCSdjb25mbF9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBv dXQgd2FpdGluZyBjb25mbF9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVkIjsKK30KKworIyBD cmVhdGUgdGhlIHJlcXVpcmVkIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieS4KK3N1YiBjcmVh dGVfbG9naWNhbF9zbG90cworeworCSRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Ns b3Rfb25fc3RhbmRieSgkbm9kZV9tYXN0ZXIsICdkcm9wc2xvdCcsICd0ZXN0ZGInKTsKKwkk bm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfbWFz dGVyLCAnYWN0aXZlc2xvdCcsICd0ZXN0ZGInKTsKK30KKworIyBBY3F1aXJlIG9uZSBvZiB0 aGUgc3RhbmRieSBsb2dpY2FsIHNsb3RzIGNyZWF0ZWQgYnkgY3JlYXRlX2xvZ2ljYWxfc2xv dHMoKQorc3ViIG1ha2Vfc2xvdF9hY3RpdmUKK3sKKwlteSAkc2xvdF91c2VyX2hhbmRsZTsK KworCSMgbWFrZSBzdXJlIGFjdGl2ZXNsb3QgaXMgaW4gdXNlCisJcHJpbnQgInN0YXJ0aW5n IHBnX3JlY3Zsb2dpY2FsXG4iOworCSRzbG90X3VzZXJfaGFuZGxlID0gSVBDOjpSdW46OnN0 YXJ0KFsncGdfcmVjdmxvZ2ljYWwnLCAnLWQnLCAkbm9kZV9zdGFuZGJ5LT5jb25uc3RyKCd0 ZXN0ZGInKSwgJy1TJywgJ2FjdGl2ZXNsb3QnLCAnLWYnLCAnLScsICctLW5vLWxvb3AnLCAn LS1zdGFydCddLCAnPicsIFwkc3Rkb3V0LCAnMj4nLCBcJHN0ZGVycik7CisKKwl3aGlsZSAo ISRub2RlX3N0YW5kYnktPnNsb3QoJ2FjdGl2ZXNsb3QnKS0+eydhY3RpdmVfcGlkJ30pCisJ eworCQl1c2xlZXAoMTAwXzAwMCk7CisJCXByaW50ICJ3YWl0aW5nIGZvciBzbG90IHRvIGJl Y29tZSBhY3RpdmVcbiI7CisJfQorCXJldHVybiAkc2xvdF91c2VyX2hhbmRsZTsKK30KKwor IyBDaGVjayBpZiBhbGwgdGhlIHNsb3RzIG9uIHN0YW5kYnkgYXJlIGRyb3BwZWQuIFRoZXNl IGluY2x1ZGUgdGhlICdhY3RpdmVzbG90JworIyB0aGF0IHdhcyBhY3F1aXJlZCBieSBtYWtl X3Nsb3RfYWN0aXZlKCksIGFuZCB0aGUgbm9uLWFjdGl2ZSAnZHJvcHNsb3QnLgorc3ViIGNo ZWNrX3Nsb3RzX2Ryb3BwZWQKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUpID0gQF87CisJ bXkgJHJldHVybjsKKworCWlzKCRub2RlX3N0YW5kYnktPnNsb3QoJ2Ryb3BzbG90JyktPnsn c2xvdF90eXBlJ30sICcnLCAnZHJvcHNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisJaXMo JG5vZGVfc3RhbmRieS0+c2xvdCgnYWN0aXZlc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywg J2FjdGl2ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisKKwkjIG91ciBjbGllbnQgc2hv dWxkJ3ZlIHRlcm1pbmF0ZWQgaW4gcmVzcG9uc2UgdG8gdGhlIHdhbHNlbmRlciBlcnJvcgor CWV2YWwgeworCQkkc2xvdF91c2VyX2hhbmRsZS0+ZmluaXNoOworCX07CisJJHJldHVybiA9 ICQ/OworCWNtcF9vaygkcmV0dXJuLCAiIT0iLCAwLCAicGdfcmVjdmxvZ2ljYWwgZXhpdGVk IG5vbi16ZXJvXG4iKTsKKwlpZiAoJHJldHVybikgeworCQlsaWtlKCRzdGRlcnIsIHFyL2Nv bmZsaWN0IHdpdGggcmVjb3ZlcnkvLCAncmVjdmxvZ2ljYWwgcmVjb3ZlcnkgY29uZmxpY3Qn KTsKKwkJbGlrZSgkc3RkZXJyLCBxci9tdXN0IGJlIGRyb3BwZWQvLCAncmVjdmxvZ2ljYWwg ZXJyb3IgZGV0YWlsJyk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIEluaXRpYWxpemUgbWFzdGVyIG5vZGUKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCiskbm9kZV9tYXN0ZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAx LCBoYXNfYXJjaGl2aW5nID0+IDEpOworJG5vZGVfbWFzdGVyLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywgcXsKK3dhbF9sZXZlbCA9ICdsb2dpY2FsJworbWF4X3JlcGxpY2F0 aW9uX3Nsb3RzID0gNAorbWF4X3dhbF9zZW5kZXJzID0gNAorbG9nX21pbl9tZXNzYWdlcyA9 ICdkZWJ1ZzInCitsb2dfZXJyb3JfdmVyYm9zaXR5ID0gdmVyYm9zZQorIyBzZW5kIHN0YXR1 cyByYXBpZGx5IHNvIHdlIHByb21wdGx5IGFkdmFuY2UgeG1pbiBvbiBtYXN0ZXIKK3dhbF9y ZWNlaXZlcl9zdGF0dXNfaW50ZXJ2YWwgPSAxCisjIHZlcnkgcHJvbXB0bHkgdGVybWluYXRl IGNvbmZsaWN0aW5nIGJhY2tlbmRzCittYXhfc3RhbmRieV9zdHJlYW1pbmdfZGVsYXkgPSAn MnMnCit9KTsKKyRub2RlX21hc3Rlci0+ZHVtcF9pbmZvOworJG5vZGVfbWFzdGVyLT5zdGFy dDsKKworJG5vZGVfbWFzdGVyLT5wc3FsKCdwb3N0Z3JlcycsIHFbQ1JFQVRFIERBVEFCQVNF IHRlc3RkYl0pOworCiskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VM RUNUICogRlJPTSBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJG1hc3Rl cl9zbG90bmFtZScpO10pOworbXkgJGJhY2t1cF9uYW1lID0gJ2IxJzsKKyRub2RlX21hc3Rl ci0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IEluaXRpYWxpemUgc2xhdmUgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5v ZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgKKwkkbm9kZV9tYXN0ZXIsICRiYWNrdXBf bmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAxKTsKKyRu b2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3ByaW1h cnlfc2xvdF9uYW1lID0gJyRtYXN0ZXJfc2xvdG5hbWUnXSk7Ciskbm9kZV9zdGFuZGJ5LT5z dGFydDsKKyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAn cmVwbGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCisKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNv bmZsaWN0OiBEcm9wIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3Rz CisjIFNjZW5hcmlvIDEgOiBob3Rfc3RhbmRieV9mZWVkYmFjayBvZmYKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NyZWF0ZV9sb2dp Y2FsX3Nsb3RzKCk7CisKKyMgT25lIHdheSB0byByZXByb2R1Y2UgcmVjb3ZlcnkgY29uZmxp Y3QgaXMgdG8gcnVuIFZBQ1VVTSBGVUxMIHdpdGgKKyMgaG90X3N0YW5kYnlfZmVlZGJhY2sg dHVybmVkIG9mZiBvbiBzbGF2ZS4KKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9mZgorXSk7Ciskbm9k ZV9zdGFuZGJ5LT5yZXN0YXJ0OworIyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sgb2Zm IGJ5IHdhaXRpbmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1pbiBvbiBt YXN0ZXIuIEJvdGggc2hvdWxkIGJlIE5VTEwgc2luY2UgaHNfZmVlZGJhY2sgaXMgb2ZmCit3 YWl0X2Zvcl94bWlucygkbm9kZV9tYXN0ZXIsICRtYXN0ZXJfc2xvdG5hbWUsCisJCQkgICAi eG1pbiBJUyBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTlVMTCIpOworCiskaGFuZGxlID0g bWFrZV9zbG90X2FjdGl2ZSgpOworCisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZs aWN0Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgndGVzdGRiJywgJ1ZBQ1VVTSBGVUxMJyk7 CisKKyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVw bGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCitjaGVja19zbG90c19kcm9w cGVkKCRoYW5kbGUpOworCitjaGVja19jb25mbF9sb2dpY2Fsc2xvdCgpOworCisjIFR1cm4g aG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorJG5vZGVfc3RhbmRieS0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK10p OworJG5vZGVfc3RhbmRieS0+cmVzdGFydDsKKworIyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVl ZGJhY2sgc2VudCBieSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9n X3htaW4gb24gbWFzdGVyLiBXaXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIHNo b3VsZCBhZHZhbmNlLAorIyBidXQgY2F0YWxvZ194bWluIHNob3VsZCBzdGlsbCByZW1haW4g TlVMTCBzaW5jZSB0aGVyZSBpcyBubyBsb2dpY2FsIHNsb3QuCit3YWl0X2Zvcl94bWlucygk bm9kZV9tYXN0ZXIsICRtYXN0ZXJfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOT1QgTlVM TCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxpY3Q6IERy b3AgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFy aW8gMiA6IGluY29ycmVjdCB3YWxfbGV2ZWwgYXQgbWFzdGVyCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjcmVhdGVfbG9naWNhbF9z bG90cygpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgpOworCisjIE1ha2UgbWFz dGVyIHdhbF9sZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0 LgorJG5vZGVfbWFzdGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJyxxWword2Fs X2xldmVsID0gJ3JlcGxpY2EnCitdKTsKKyRub2RlX21hc3Rlci0+cmVzdGFydDsKKworJG5v ZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAk bm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKK2NoZWNrX3Nsb3RzX2Ryb3BwZWQoJGhh bmRsZSk7CisKK2NoZWNrX2NvbmZsX2xvZ2ljYWxzbG90KCk7CisKKyMgUmVzdG9yZSBtYXN0 ZXIgd2FsX2xldmVsCiskbm9kZV9tYXN0ZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLHFbCit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK10pOworJG5vZGVfbWFzdGVyLT5yZXN0 YXJ0OworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdy ZXBsYXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgRFJPUCBEQVRBQkFT RSBzaG91bGQgZHJvcHMgaXQncyBzbG90cywgaW5jbHVkaW5nIGFjdGl2ZSBzbG90cy4KKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Ny ZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgpOwor IyBDcmVhdGUgYSBzbG90IG9uIGEgZGF0YWJhc2UgdGhhdCB3b3VsZCBub3QgYmUgZHJvcHBl ZC4gVGhpcyBzbG90IHNob3VsZCBub3QKKyMgZ2V0IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5 LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfbWFzdGVyLCAnb3RoZXJz bG90JywgJ3Bvc3RncmVzJyk7CisKKyMgZHJvcGRiIG9uIHRoZSBtYXN0ZXIgdG8gdmVyaWZ5 IHNsb3RzIGFyZSBkcm9wcGVkIG9uIHN0YW5kYnkKKyRub2RlX21hc3Rlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFbRFJPUCBEQVRBQkFTRSB0ZXN0ZGJdKTsKKworJG5vZGVfbWFzdGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9tYXN0 ZXItPmxzbignZmx1c2gnKSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCXFbU0VMRUNUIEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX2RhdGFiYXNlIFdI RVJFIGRhdG5hbWUgPSAndGVzdGRiJyldKSwgJ2YnLAorCSdkYXRhYmFzZSBkcm9wcGVkIG9u IHN0YW5kYnknKTsKKworY2hlY2tfc2xvdHNfZHJvcHBlZCgkaGFuZGxlKTsKKworaXMoJG5v ZGVfc3RhbmRieS0+c2xvdCgnb3RoZXJzbG90JyktPnsnc2xvdF90eXBlJ30sICdsb2dpY2Fs JywKKwknb3RoZXJzbG90IG9uIHN0YW5kYnkgbm90IGRyb3BwZWQnKTsKKworIyBDbGVhbnVw IDogbWFudWFsbHkgZHJvcCB0aGUgc2xvdCB0aGF0IHdhcyBub3QgZHJvcHBlZC4KKyRub2Rl X3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlv bl9zbG90KCdvdGhlcnNsb3QnKV0pOwotLSAKMi4xOC40Cgo= --------------231B584EBEAF0BECAF3ACC2D Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v12-0003-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v12-0003-Handle-logical-slot-conflicts-on-standby.patch" RnJvbSA1NzJhNmViZDg3MTM5MGY1ZGQ2NzczNjVjOTY3OTE4ZGI1NGNlNGUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyMyBNYXIgMjAyMSAxMToxNzozMyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjEyIDMvNV0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLApkcm9wIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhpbmcgaWYg d2FsX2xldmVsIG9uIG1hc3RlcgppcyByZWR1Y2VkIHRvIGJlbG93IGxvZ2ljYWwgYW5kIHRo ZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0YW5kYnkuIEludHJvZHVjZSBh IG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90CmNvbmZsaWN0IHJlY292ZXJ5 LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2dldF9hY3Rpdml0eSBmaWVsZDoKY29uZmxf bG9naWNhbHNsb3QuCgpBbWl0IEtoYW5kZWthciwgcmV2aWV3ZWQgYnkgQW5kcmVzIEZyZXVu ZC4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgfCAgMTAgKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgICB8ICAgNCArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMgIHwgICAzICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0eGxvZy5jICB8ICAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGd4bG9nLmMgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAg ICB8ICAxNCArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCB8ICAg MSArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jICAgICAgfCAgMjIgKysrKwog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgIHwgMTgyICsrKysrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMg IHwgICA0ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyB8ICAgMyAr CiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgfCAgMTEgKy0KIHNyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICB8ICAyMiArKysrCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgfCAgMTYgKysrCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0ICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAg ICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAg ICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgfCAg IDEgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggICAgICAgIHwgICA0ICstCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgfCAgIDEgKwogMjEgZmlsZXMg Y2hhbmdlZCwgMzEzIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogICA2LjQlIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwLwogICA2LjElIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtLwogICA1LjklIHNyYy9iYWNrZW5kL2FjY2Vzcy8KICAgNC45JSBzcmMvYmFja2VuZC9w b3N0bWFzdGVyLwogIDQ4LjMlIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uLwogICA2LjQlIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjLwogICA4LjAlIHNyYy9iYWNrZW5kL3Rjb3AvCiAgIDMu MSUgc3JjL2JhY2tlbmQvdXRpbHMvYWR0LwogICA2LjQlIHNyYy9pbmNsdWRlLwoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9u aXRvcmluZy5zZ21sCmluZGV4IDE5NTQwMjA2ZjkuLmViNWJiNTIwOWUgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0 b3Jpbmcuc2dtbApAQCAtMzk4MCw2ICszOTgwLDE2IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZl bnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9l dmVudCBpCiAgICAgICAgZGVhZGxvY2tzCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPmNvbmZsX2xvZ2ljYWxzbG90PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90 eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHF1 ZXJpZXMgaW4gdGhpcyBkYXRhYmFzZSB0aGF0IGhhdmUgYmVlbiBjYW5jZWxlZCBkdWUgdG8K KyAgICAgICBsb2dpY2FsIHNsb3RzCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggOTdkODE0YjkyNy4uYjZjMGQ4YjI5MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xOTUsNyArMTk1LDggQEAgZ2lz dFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJWExvZ1Jl Y0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsKIAotCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVzdFJlbW92ZWRY aWQsIHJub2RlKTsKKwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxk YXRhLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4bGRhdGEtPm9uQ2F0YWxvZ1Rh YmxlLCBybm9kZSk7CiAJfQogCiAJaWYgKFhMb2dSZWFkQnVmZmVyRm9yUmVkbyhyZWNvcmQs IDAsICZidWZmZXIpID09IEJMS19ORUVEU19SRURPKQpAQCAtMzk1LDYgKzM5Niw3IEBAIGdp c3RSZWRvUGFnZVJldXNlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVs bFhpZCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCisJCQkJCQkJCQkJCQkgICB4bHJl Yy0+b25DYXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bm9kZSk7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMDJkOWU2Y2RmZC4uYjFm ZjU5NmViNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEwMDIs NyArMTAwMiw4IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJCVJlbEZpbGVOb2RlIHJub2RlOwogCiAJCVhMb2dSZWNHZXRCbG9ja1Rh ZyhyZWNvcmQsIDAsICZybm9kZSwgTlVMTCwgTlVMTCk7Ci0JCVJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+bGF0ZXN0UmVtb3ZlZFhpZCwgcm5vZGUpOwor CQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVzdFJl bW92ZWRYaWQsCisJCQkJCQkJCQkJCXhsZGF0YS0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsK IAl9CiAKIAlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQs IDAsIFJCTV9OT1JNQUwsIHRydWUsICZidWZmZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYwppbmRleCBhYzAwNGYxMjU4Li45MDNiMzdhNjQ0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwpAQCAtODUxMiw3ICs4NTEyLDggQEAgaGVhcF94bG9nX2NsZWFudXBfaW5m byhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl4bF9oZWFwX2NsZWFudXBfaW5mbyAqeGxy ZWMgPSAoeGxfaGVhcF9jbGVhbnVwX2luZm8gKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsK IAogCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLCB4bHJlYy0+bm9kZSk7CisJCVJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlk LAorCQkJCQkJCQkJCQl4bHJlYy0+b25DYXRhbG9nVGFibGUsIHhscmVjLT5ub2RlKTsKIAog CS8qCiAJICogQWN0dWFsIG9wZXJhdGlvbiBpcyBhIG5vLW9wLiBSZWNvcmQgdHlwZSBleGlz dHMgdG8gcHJvdmlkZSBhIG1lYW5zIGZvcgpAQCAtODU0OCw3ICs4NTQ5LDggQEAgaGVhcF94 bG9nX2NsZWFuKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqIGxhdGVzdFJlbW92ZWRY aWQgaXMgaW52YWxpZCwgc2tpcCBjb25mbGljdCBwcm9jZXNzaW5nLgogCSAqLwogCWlmIChJ bkhvdFN0YW5kYnkgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQoeGxyZWMtPmxhdGVzdFJlbW92 ZWRYaWQpKQotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+ bGF0ZXN0UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdp dGhTbmFwc2hvdCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCQkJeGxyZWMt Pm9uQ2F0YWxvZ1RhYmxlLCBybm9kZSk7CiAKIAkvKgogCSAqIElmIHdlIGhhdmUgYSBmdWxs LXBhZ2UgaW1hZ2UsIHJlc3RvcmUgaXQgKHVzaW5nIGEgY2xlYW51cCBsb2NrKSBhbmQKQEAg LTg2NDQsNyArODY0Niw5IEBAIGhlYXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3JkKQogCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5zYWN0aW9uIG91dHJp Z2h0LgogCSAqLwogCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFNuYXBzaG90KHhscmVjLT5jdXRvZmZfeGlkLCBybm9kZSk7CisJCVJlc29sdmVS ZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5jdXRvZmZfeGlkLAorCQkJCQkJ CQkJCQl4bHJlYy0+b25DYXRhbG9nVGFibGUsCisJCQkJCQkJCQkJCXJub2RlKTsKIAogCS8q CiAJICogUmVhZCB0aGUgaGVhcCBwYWdlLCBpZiBpdCBzdGlsbCBleGlzdHMuIElmIHRoZSBo ZWFwIGZpbGUgaGFzIGRyb3BwZWQgb3IKQEAgLTg3ODEsNyArODc4NSw4IEBAIGhlYXBfeGxv Z19mcmVlemVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJVHJhbnNhY3Rpb25J ZFJldHJlYXQobGF0ZXN0UmVtb3ZlZFhpZCk7CiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJl Y29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QobGF0ZXN0UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJ CQl4bHJlYy0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsKIAl9CiAKIAlpZiAoWExvZ1JlYWRC dWZmZXJGb3JSZWRvKHJlY29yZCwgMCwgJmJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IDE3NzliNmJhNDcuLjM2ZWUz MTM0MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBAIC02NjksNyAr NjY5LDggQEAgYnRyZWVfeGxvZ19kZWxldGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAK IAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsK IAotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+bGF0ZXN0 UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFw c2hvdCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCQkJeGxyZWMtPm9uQ2F0 YWxvZ1RhYmxlLCBybm9kZSk7CiAJfQogCiAJLyoKQEAgLTEwMDcsNiArMTAwOCw3IEBAIGJ0 cmVlX3hsb2dfcmV1c2VfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVs bFhpZCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCisJCQkJCQkJCQkJCQkgICB4bHJl Yy0+b25DYXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bm9kZSk7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKaW5kZXggZDQwYzdiNTg3Ny4uMWE1 Yzg5NTlhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKQEAgLTg4MSw2 ICs4ODEsNyBAQCBzcGdSZWRvVmFjdXVtUmVkaXJlY3QoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAKIAkJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZub2RlLCBOVUxMLCBO VUxMKTsKIAkJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+ bmV3ZXN0UmVkaXJlY3RYaWQsCisJCQkJCQkJCQkJCQl4bGRhdGEtPm9uQ2F0YWxvZ1RhYmxl LAogCQkJCQkJCQkJCQkJbm9kZSk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKaW5kZXggNmEyMWNiYTM2Mi4uYzViNWQ2YjYxMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYwpAQCAtMTAzNzMsNiArMTAzNzMsMjAgQEAgeGxvZ19yZWRvKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkvKiBVcGRhdGUgb3VyIGNvcHkgb2YgdGhlIHBhcmFt ZXRlcnMgaW4gcGdfY29udHJvbCAqLwogCQltZW1jcHkoJnhscmVjLCBYTG9nUmVjR2V0RGF0 YShyZWNvcmQpLCBzaXplb2YoeGxfcGFyYW1ldGVyX2NoYW5nZSkpOwogCisJCS8qCisJCSAq IERyb3AgbG9naWNhbCBzbG90cyBpZiB3ZSBhcmUgaW4gaG90IHN0YW5kYnkgYW5kIHRoZSBw cmltYXJ5IGRvZXMgbm90CisJCSAqIGhhdmUgYSBXQUwgbGV2ZWwgc3VmZmljaWVudCBmb3Ig bG9naWNhbCBkZWNvZGluZy4gTm8gbmVlZCB0byBzZWFyY2gKKwkJICogZm9yIHBvdGVudGlh bGx5IGNvbmZsaWN0aW5nIGxvZ2ljYWxseSBzbG90cyBpZiBzdGFuZGJ5IGlzIHJ1bm5pbmcK KwkJICogd2l0aCB3YWxfbGV2ZWwgbG93ZXIgdGhhbiBsb2dpY2FsLCBiZWNhdXNlIGluIHRo YXQgY2FzZSwgd2Ugd291bGQKKwkJICogaGF2ZSBlaXRoZXIgZGlzYWxsb3dlZCBjcmVhdGlv biBvZiBsb2dpY2FsIHNsb3RzIG9yIGRyb3BwZWQgZXhpc3RpbmcKKwkJICogb25lcy4KKwkJ ICovCisJCWlmIChJblJlY292ZXJ5ICYmIEluSG90U3RhbmRieSAmJgorCQkJeGxyZWMud2Fs X2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwgJiYKKwkJCXdhbF9sZXZlbCA+PSBXQUxfTEVW RUxfTE9HSUNBTCkKKwkJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvZ2ljYWxTbG90 cyhJbnZhbGlkT2lkLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKKwkJCQlnZXR0ZXh0X25vb3Ao IkxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgPj0gbG9n aWNhbCBvbiBtYXN0ZXIuIikpOworCiAJCUxXTG9ja0FjcXVpcmUoQ29udHJvbEZpbGVMb2Nr LCBMV19FWENMVVNJVkUpOwogCQlDb250cm9sRmlsZS0+TWF4Q29ubmVjdGlvbnMgPSB4bHJl Yy5NYXhDb25uZWN0aW9uczsKIAkJQ29udHJvbEZpbGUtPm1heF93b3JrZXJfcHJvY2Vzc2Vz ID0geGxyZWMubWF4X3dvcmtlcl9wcm9jZXNzZXM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwKaW5kZXggMGRjYTY1ZGM3Yi4uOTgyODU2ZmQwYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtOTQ1LDYgKzk0NSw3IEBAIENSRUFURSBW SUVXIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIEFTCiAgICAgICAgICAgICBwZ19zdGF0 X2dldF9kYl9jb25mbGljdF90YWJsZXNwYWNlKEQub2lkKSBBUyBjb25mbF90YWJsZXNwYWNl LAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhELm9pZCkgQVMg Y29uZmxfbG9jaywKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBz aG90KEQub2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0 X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90KEQub2lkKSBBUyBjb25mbF9sb2dpY2Fsc2xvdCwK ICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbihELm9pZCkg QVMgY29uZmxfYnVmZmVycGluLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxp Y3Rfc3RhcnR1cF9kZWFkbG9jayhELm9pZCkgQVMgY29uZmxfZGVhZGxvY2sKICAgICBGUk9N IHBnX2RhdGFiYXNlIEQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bn c3RhdC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYwppbmRleCBiN2FmN2My NzA3Li41NjkwMmUxMjRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bn c3RhdC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMKQEAgLTQ2Mzks NiArNDYzOSwyNCBAQCBwZ3N0YXRfc2VuZF9hcmNoaXZlcihjb25zdCBjaGFyICp4bG9nLCBi b29sIGZhaWxlZCkKIAlwZ3N0YXRfc2VuZCgmbXNnLCBzaXplb2YobXNnKSk7CiB9CiAKKy8q IC0tLS0tLS0tLS0KKyAqIHBnc3RhdF9zZW5kX2Ryb3Bsb2dpY2Fsc2xvdCgpIC0KKyAqCisg KglUZWxsIHRoZSBjb2xsZWN0b3IgYWJvdXQgYSBsb2dpY2FsIHNsb3QgYmVpbmcgZHJvcHBl ZAorICoJZHVlIHRvIGNvbmZsaWN0LgorICogLS0tLS0tLS0tLQorICovCit2b2lkCitwZ3N0 YXRfc2VuZF9kcm9wbG9naWNhbHNsb3QoT2lkIGRiT2lkKQoreworCVBnU3RhdF9Nc2dSZWNv dmVyeUNvbmZsaWN0IG1zZzsKKworCXBnc3RhdF9zZXRoZWFkZXIoJm1zZy5tX2hkciwgUEdT VEFUX01UWVBFX1JFQ09WRVJZQ09ORkxJQ1QpOworCW1zZy5tX2RhdGFiYXNlaWQgPSBkYk9p ZDsKKwltc2cubV9yZWFzb24gPSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxT TE9UOworCXBnc3RhdF9zZW5kKCZtc2csIHNpemVvZihtc2cpKTsKK30KKwogLyogLS0tLS0t LS0tLQogICogcGdzdGF0X3NlbmRfYmd3cml0ZXIoKSAtCiAgKgpAQCAtNTExMyw2ICs1MTMx LDcgQEAgcmVzZXRfZGJlbnRyeV9jb3VudGVycyhQZ1N0YXRfU3RhdERCRW50cnkgKmRiZW50 cnkpCiAJZGJlbnRyeS0+bl9jb25mbGljdF90YWJsZXNwYWNlID0gMDsKIAlkYmVudHJ5LT5u X2NvbmZsaWN0X2xvY2sgPSAwOwogCWRiZW50cnktPm5fY29uZmxpY3Rfc25hcHNob3QgPSAw OworCWRiZW50cnktPm5fY29uZmxpY3RfbG9naWNhbHNsb3QgPSAwOwogCWRiZW50cnktPm5f Y29uZmxpY3RfYnVmZmVycGluID0gMDsKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X3N0YXJ0dXBf ZGVhZGxvY2sgPSAwOwogCWRiZW50cnktPm5fdGVtcF9maWxlcyA9IDA7CkBAIC02OTk2LDYg KzcwMTUsOSBAQCBwZ3N0YXRfcmVjdl9yZWNvdmVyeWNvbmZsaWN0KFBnU3RhdF9Nc2dSZWNv dmVyeUNvbmZsaWN0ICptc2csIGludCBsZW4pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9TTkFQU0hPVDoKIAkJCWRiZW50cnktPm5fY29uZmxpY3Rfc25hcHNob3QrKzsK IAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNM T1Q6CisJCQlkYmVudHJ5LT5uX2NvbmZsaWN0X2xvZ2ljYWxzbG90Kys7CisJCQlicmVhazsK IAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTjoKIAkJCWRiZW50 cnktPm5fY29uZmxpY3RfYnVmZmVycGluKys7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3QuYwppbmRleCA5ZGIyMDI3OGY2Li45MjhhZjA1MDlhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNp bmNsdWRlICJzdG9yYWdlL2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCkBAIC0xMDMsNiArMTA0LDcgQEAgc3RhdGljIGludCBSZXBsaWNhdGlvblNsb3RBY3F1 aXJlSW50ZXJuYWwoUmVwbGljYXRpb25TbG90ICpzbG90LAogCQkJCQkJCQkJCSAgY29uc3Qg Y2hhciAqbmFtZSwgU2xvdEFjcXVpcmVCZWhhdmlvciBiZWhhdmlvcik7CiBzdGF0aWMgdm9p ZCBSZXBsaWNhdGlvblNsb3REcm9wQWNxdWlyZWQodm9pZCk7CiBzdGF0aWMgdm9pZCBSZXBs aWNhdGlvblNsb3REcm9wUHRyKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCk7CitzdGF0aWMgdm9p ZCBSZXBsaWNhdGlvblNsb3REcm9wQ29uZmxpY3RpbmcoUmVwbGljYXRpb25TbG90ICpzbG90 KTsKIAogLyogaW50ZXJuYWwgcGVyc2lzdGVuY3kgZnVuY3Rpb25zICovCiBzdGF0aWMgdm9p ZCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0IGNoYXIgKm5hbWUpOwpAQCAtNzE5LDYgKzcy MSw3MSBAQCBSZXBsaWNhdGlvblNsb3REcm9wUHRyKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCkK IAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdEFsbG9jYXRpb25Mb2NrKTsKIH0KIAor LyoKKyAqIFBlcm1hbmVudGx5IGRyb3AgYSBjb25mbGljdGluZyByZXBsaWNhdGlvbiBzbG90 LiBJZiBpdCdzIGFscmVhZHkgYWN0aXZlIGJ5CisgKiBhbm90aGVyIGJhY2tlbmQsIHNlbmQg aXQgYSByZWNvdmVyeSBjb25mbGljdCBzaWduYWwsIGFuZCB0aGVuIHRyeSBhZ2Fpbi4KKyAq Lworc3RhdGljIHZvaWQKK1JlcGxpY2F0aW9uU2xvdERyb3BDb25mbGljdGluZyhSZXBsaWNh dGlvblNsb3QgKnNsb3QpCit7CisJcGlkX3QJCWFjdGl2ZV9waWQ7CisJUEdQUk9DCSAgICpw cm9jOworCVZpcnR1YWxUcmFuc2FjdGlvbklkCXZ4aWQ7CisJYm9vbCBpbml0aWFsbHlfbm90 X2FjdGl2ZTsKKworCUNvbmRpdGlvblZhcmlhYmxlUHJlcGFyZVRvU2xlZXAoJnNsb3QtPmFj dGl2ZV9jdik7CisJaW5pdGlhbGx5X25vdF9hY3RpdmUgPSB0cnVlOworCXdoaWxlICgxKQor CXsKKwkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7CisJCWFjdGl2ZV9waWQgPSBz bG90LT5hY3RpdmVfcGlkOworCQlpZiAoYWN0aXZlX3BpZCA9PSAwKQorCQkJYWN0aXZlX3Bp ZCA9IHNsb3QtPmFjdGl2ZV9waWQgPSBNeVByb2NQaWQ7CisJCVNwaW5Mb2NrUmVsZWFzZSgm c2xvdC0+bXV0ZXgpOworCisJCS8qIERyb3AgdGhlIGFjcXVpcmVkIHNsb3QsIHVubGVzcyBp dCBpcyBhY3F1aXJlZCBieSBhbm90aGVyIGJhY2tlbmQgKi8KKwkJaWYgKGFjdGl2ZV9waWQg PT0gTXlQcm9jUGlkKQorCQl7CisJCQllbG9nKERFQlVHMSwgImFjcXVpcmVkIGNvbmZsaWN0 aW5nIHNsb3QsIG5vdyBkcm9wcGluZyBpdCIpOworCQkJaWYgKGluaXRpYWxseV9ub3RfYWN0 aXZlKQorCQkJCXBnc3RhdF9zZW5kX2Ryb3Bsb2dpY2Fsc2xvdChzbG90LT5kYXRhLmRhdGFi YXNlKTsKKwkJCVJlcGxpY2F0aW9uU2xvdERyb3BQdHIoc2xvdCk7CisJCQlicmVhazsKKwkJ fQorCisJCS8qIHNsb3Qgd2FzIGFjdGl2ZSAqLworCQlpbml0aWFsbHlfbm90X2FjdGl2ZSA9 IGZhbHNlOworCisJCS8qIFNlbmQgdGhlIG90aGVyIGJhY2tlbmQsIGEgY29uZmxpY3QgcmVj b3Zlcnkgc2lnbmFsICovCisKKwkJU2V0SW52YWxpZFZpcnR1YWxUcmFuc2FjdGlvbklkKHZ4 aWQpOworCQlMV0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExXX1NIQVJFRCk7CisJCXBy b2MgPSBCYWNrZW5kUGlkR2V0UHJvY1dpdGhMb2NrKGFjdGl2ZV9waWQpOworCQlpZiAocHJv YykKKwkJCUdFVF9WWElEX0ZST01fUEdQUk9DKHZ4aWQsICpwcm9jKTsKKwkJTFdMb2NrUmVs ZWFzZShQcm9jQXJyYXlMb2NrKTsKKworCQkvKgorCQkgKiBJZiBjb2luY2lkZW50bHkgdGhh dCBwcm9jZXNzIGZpbmlzaGVkLCBzb21lIG90aGVyIGJhY2tlbmQgbWF5CisJCSAqIGFjcXVp cmUgdGhlIHNsb3QgYWdhaW4uIFNvIHN0YXJ0IG92ZXIgYWdhaW4uCisJCSAqIE5vdGU6IEV2 ZW4gaWYgdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgaXMgaW52YWxpZCwgd2UgbmVlZCB0byBj YW5jZWwKKwkJICogdGhhdCBiYWNrZW5kLCBiZWNhdXNlIHRoZXJlIGlzIG5vIG90aGVyIHdh eSB0byBtYWtlIGl0IHJlbGVhc2UgdGhlCisJCSAqIHNsb3QuIFNvIGRvbid0IGJvdGhlciB0 byB2YWxpZGF0ZSB2eGlkLmxvY2FsVHJhbnNhY3Rpb25JZC4KKwkJICovCisJCWlmICh2eGlk LmJhY2tlbmRJZCA9PSBJbnZhbGlkQmFja2VuZElkKQorCQkJY29udGludWU7CisKKwkJZWxv ZyhERUJVRzEsICJjYW5jZWxsaW5nIHBpZCAlZCAoYmFja2VuZElkOiAlZCkgZm9yIHJlbGVh c2luZyBzbG90IiwKKwkJCQkJIGFjdGl2ZV9waWQsIHZ4aWQuYmFja2VuZElkKTsKKworCQlD YW5jZWxWaXJ0dWFsVHJhbnNhY3Rpb24odnhpZCwgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9MT0dJQ0FMU0xPVCk7CisJCUNvbmRpdGlvblZhcmlhYmxlU2xlZXAoJnNsb3QtPmFjdGl2 ZV9jdiwKKwkJCQkJCQkgICBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RfRFJPUCk7CisJ fQorCisJQ29uZGl0aW9uVmFyaWFibGVDYW5jZWxTbGVlcCgpOworfQorCiAvKgogICogU2Vy aWFsaXplIHRoZSBjdXJyZW50bHkgYWNxdWlyZWQgc2xvdCdzIHN0YXRlIGZyb20gbWVtb3J5 IHRvIGRpc2ssIHRoZXJlYnkKICAqIGd1YXJhbnRlZWluZyB0aGUgY3VycmVudCBzdGF0ZSB3 aWxsIHN1cnZpdmUgYSBjcmFzaC4KQEAgLTExNzIsNiArMTIzOSwxMjEgQEAgUmVwbGljYXRp b25TbG90UmVzZXJ2ZVdhbCh2b2lkKQogCX0KIH0KIAorLyoKKyAqIFJlc29sdmUgcmVjb3Zl cnkgY29uZmxpY3RzIHdpdGggbG9naWNhbCBzbG90cy4KKyAqCisgKiBXaGVuIHhpZCBpcyB2 YWxpZCwgaXQgbWVhbnMgdGhhdCByb3dzIG9sZGVyIHRoYW4geGlkIG1pZ2h0IGhhdmUgYmVl bgorICogcmVtb3ZlZC4gVGhlcmVmb3JlIHdlIG5lZWQgdG8gZHJvcCBzbG90cyB0aGF0IGRl cGVuZCBvbiBzZWVpbmcgdGhvc2Ugcm93cy4KKyAqIFdoZW4geGlkIGlzIGludmFsaWQsIGRy b3AgYWxsIGxvZ2ljYWwgc2xvdHMuIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiB0aGUKKyAqIG1h c3RlciB3YWxfbGV2ZWwgaXMgc2V0IGJhY2sgdG8gcmVwbGljYSwgc28gZXhpc3RpbmcgbG9n aWNhbCBzbG90cyBuZWVkIHRvCisgKiBiZSBkcm9wcGVkLiBBbHNvLCB3aGVuIHhpZCBpcyBp bnZhbGlkLCBhIGNvbW1vbiAnY29uZmxpY3RfcmVhc29uJyBpcworICogcHJvdmlkZWQgZm9y IHRoZSBlcnJvciBkZXRhaWw7IG90aGVyd2lzZSBpdCBpcyBOVUxMLCBpbiB3aGljaCBjYXNl IGl0IGlzCisgKiBjb25zdHJ1Y3RlZCBvdXQgb2YgdGhlIHhpZCB2YWx1ZS4KKyAqLwordm9p ZAorUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9naWNhbFNsb3RzKE9pZCBkYm9pZCwg VHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCQkJY2hhciAqY29uZmxpY3RfcmVhc29uKQor eworCWludAkJCWk7CisJYm9vbAkJZm91bmRfY29uZmxpY3QgPSBmYWxzZTsKKworCWlmICht YXhfcmVwbGljYXRpb25fc2xvdHMgPD0gMCkKKwkJcmV0dXJuOworCityZXN0YXJ0OgorCWlm IChmb3VuZF9jb25mbGljdCkKKwl7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCWZv dW5kX2NvbmZsaWN0ID0gZmFsc2U7CisJfQorCisJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlv blNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKTsKKwlmb3IgKGkgPSAwOyBpIDwgbWF4X3Jl cGxpY2F0aW9uX3Nsb3RzOyBpKyspCisJeworCQlSZXBsaWNhdGlvblNsb3QgKnM7CisKKwkJ cyA9ICZSZXBsaWNhdGlvblNsb3RDdGwtPnJlcGxpY2F0aW9uX3Nsb3RzW2ldOworCisJCS8q IGNhbm5vdCBjaGFuZ2Ugd2hpbGUgUmVwbGljYXRpb25TbG90Q3RsTG9jayBpcyBoZWxkICov CisJCWlmICghcy0+aW5fdXNlKQorCQkJY29udGludWU7CisKKwkJLyogV2UgYXJlIG9ubHkg ZGVhbGluZyB3aXRoICpsb2dpY2FsKiBzbG90IGNvbmZsaWN0cy4gKi8KKwkJaWYgKCFTbG90 SXNMb2dpY2FsKHMpKQorCQkJY29udGludWU7CisKKwkJLyogSW52YWxpZCB4aWQgbWVhbnMg Y2FsbGVyIGlzIGFza2luZyB0byBkcm9wIGFsbCBsb2dpY2FsIHNsb3RzICovCisJCWlmICgh VHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJCWZvdW5kX2NvbmZsaWN0ID0gdHJ1ZTsK KwkJZWxzZQorCQl7CisJCQlUcmFuc2FjdGlvbklkIHNsb3RfeG1pbjsKKwkJCVRyYW5zYWN0 aW9uSWQgc2xvdF9jYXRhbG9nX3htaW47CisJCQlTdHJpbmdJbmZvRGF0YQljb25mbGljdF9z dHIsIGNvbmZsaWN0X3htaW5zOworCQkJY2hhcgkgICAqY29uZmxpY3Rfc2VudGVuY2UgPQor CQkJCWdldHRleHRfbm9vcCgiU2xvdCBjb25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gd2hp Y2ggd2FzIGJlaW5nIGluY3JlYXNlZCB0byIpOworCisJCQkvKiBub3Qgb3VyIGRhdGFiYXNl LCBza2lwICovCisJCQlpZiAocy0+ZGF0YS5kYXRhYmFzZSAhPSBJbnZhbGlkT2lkICYmIHMt PmRhdGEuZGF0YWJhc2UgIT0gZGJvaWQpCisJCQkJY29udGludWU7CisKKwkJCVNwaW5Mb2Nr QWNxdWlyZSgmcy0+bXV0ZXgpOworCQkJc2xvdF94bWluID0gcy0+ZGF0YS54bWluOworCQkJ c2xvdF9jYXRhbG9nX3htaW4gPSBzLT5kYXRhLmNhdGFsb2dfeG1pbjsKKwkJCVNwaW5Mb2Nr UmVsZWFzZSgmcy0+bXV0ZXgpOworCisJCQkvKgorCQkJICogQnVpbGQgdGhlIGNvbmZsaWN0 X3N0ciB3aGljaCB3aWxsIGxvb2sgbGlrZSA6CisJCQkgKiAiU2xvdCBjb25mbGljdGVkIHdp dGggeGlkIGhvcml6b24gd2hpY2ggd2FzIGJlaW5nIGluY3JlYXNlZAorCQkJICogdG8gOTAx MiAoc2xvdCB4bWluOiAxMjM0LCBzbG90IGNhdGFsb2dfeG1pbjogNTY3OCkuIgorCQkJICov CisJCQlpbml0U3RyaW5nSW5mbygmY29uZmxpY3RfeG1pbnMpOworCQkJaWYgKFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHNsb3RfeG1pbikgJiYKKwkJCQlUcmFuc2FjdGlvbklkUHJlY2VkZXNP ckVxdWFscyhzbG90X3htaW4sIHhpZCkpCisJCQl7CisJCQkJYXBwZW5kU3RyaW5nSW5mbygm Y29uZmxpY3RfeG1pbnMsICJzbG90IHhtaW46ICVkIiwgc2xvdF94bWluKTsKKwkJCX0KKwkJ CWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X2NhdGFsb2dfeG1pbikgJiYKKwkJCQlU cmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X2NhdGFsb2dfeG1pbiwgeGlkKSkK KwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZjb25mbGljdF94bWlucywgIiVzc2xvdCBjYXRhbG9n X3htaW46ICVkIiwKKwkJCQkJCQkJIGNvbmZsaWN0X3htaW5zLmxlbiA+IDAgPyAiLCAiIDog IiIsCisJCQkJCQkJCSBzbG90X2NhdGFsb2dfeG1pbik7CisKKwkJCWlmIChjb25mbGljdF94 bWlucy5sZW4gPiAwKQorCQkJeworCQkJCWluaXRTdHJpbmdJbmZvKCZjb25mbGljdF9zdHIp OworCQkJCWFwcGVuZFN0cmluZ0luZm8oJmNvbmZsaWN0X3N0ciwgIiVzICVkICglcykuIiwK KwkJCQkJCQkJIGNvbmZsaWN0X3NlbnRlbmNlLCB4aWQsIGNvbmZsaWN0X3htaW5zLmRhdGEp OworCQkJCWZvdW5kX2NvbmZsaWN0ID0gdHJ1ZTsKKwkJCQljb25mbGljdF9yZWFzb24gPSBj b25mbGljdF9zdHIuZGF0YTsKKwkJCX0KKwkJfQorCisJCWlmIChmb3VuZF9jb25mbGljdCkK KwkJeworCQkJTmFtZURhdGEJc2xvdG5hbWU7CisKKwkJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+ bXV0ZXgpOworCQkJc2xvdG5hbWUgPSBzLT5kYXRhLm5hbWU7CisJCQlTcGluTG9ja1JlbGVh c2UoJnMtPm11dGV4KTsKKworCQkJLyogUmVwbGljYXRpb25TbG90RHJvcENvbmZsaWN0aW5n KCkgd2lsbCBhY3F1aXJlIHRoZSBsb2NrIGJlbG93ICovCisJCQlMV0xvY2tSZWxlYXNlKFJl cGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKworCQkJUmVwbGljYXRpb25TbG90RHJvcENv bmZsaWN0aW5nKHMpOworCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygiZHJvcHBl ZCBjb25mbGljdGluZyBzbG90ICVzIiwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkgZXJy ZGV0YWlsKCIlcyIsIGNvbmZsaWN0X3JlYXNvbikpKTsKKworCQkJLyogV2UgcmVsZWFzZWQg dGhlIGxvY2sgYWJvdmU7IHNvIHJlLXNjYW4gdGhlIHNsb3RzLiAqLworCQkJZ290byByZXN0 YXJ0OworCQl9CisJfQorCisJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9s TG9jayk7Cit9CisKIC8qCiAgKiBNYXJrIGFueSBzbG90IHRoYXQgcG9pbnRzIHRvIGFuIExT TiBvbGRlciB0aGFuIHRoZSBnaXZlbiBzZWdtZW50CiAgKiBhcyBpbnZhbGlkOyBpdCByZXF1 aXJlcyBXQUwgdGhhdCdzIGFib3V0IHRvIGJlIHJlbW92ZWQuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NhcnJheS5jCmluZGV4IDRmYzZmZmI5MTcuLmNkMDQ2ZGY2MTkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCkBAIC0zMzcyLDYgKzMzNzIsMTAgQEAgU2ln bmFsVmlydHVhbFRyYW5zYWN0aW9uKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsIFByb2NT aWduYWxSZWFzb24gc2lnbW9kZSwKIAogCQlHRVRfVlhJRF9GUk9NX1BHUFJPQyhwcm9jdnhp ZCwgKnByb2MpOwogCisJCS8qCisJCSAqIE5vdGU6IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklk IGNhbiBiZSBpbnZhbGlkLCB3aGljaCBtZWFucyB0aGUKKwkJICogcmVxdWVzdCBpcyB0byBz aWduYWwgdGhlIHBpZCB0aGF0IGlzIG5vdCBydW5uaW5nIGEgdHJhbnNhY3Rpb24uCisJCSAq LwogCQlpZiAocHJvY3Z4aWQuYmFja2VuZElkID09IHZ4aWQuYmFja2VuZElkICYmCiAJCQlw cm9jdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgPT0gdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQp CiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCBjNmE4ZDQ2 MTFlLi42MzY0Mjc2MWM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5j CkBAIC02NjksNiArNjY5LDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFM X0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NOQVBTSE9UKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX1NOQVBTSE9UKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCkpCisJCVJlY292ZXJ5Q29uZmxpY3RJ bnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7CisKIAlp ZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9E RUFETE9DSykpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3Rh bmRieS5jCmluZGV4IDE3ZGU1YTZkMGUuLjgyNjA1Y2U5NDggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zdGFuZGJ5LmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxv Z2luc2VydC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5o IgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvYy5oIgpAQCAtNDI1LDcgKzQyNiw4IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0 aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKIH0KIAogdm9p ZAotUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBs YXRlc3RSZW1vdmVkWGlkLCBSZWxGaWxlTm9kZSBub2RlKQorUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAorCQkJ CQkJCQkJYm9vbCBvbkNhdGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUgbm9kZSkKIHsKIAlWaXJ0 dWFsVHJhbnNhY3Rpb25JZCAqYmFja2VuZHM7CiAKQEAgLTQ1MCw2ICs0NTIsOSBAQCBSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIGxhdGVzdFJl bW92ZWRYaWQsIFJlbEZpbGVOb2RlCiAJCQkJCQkJCQkJICAgUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9TTkFQU0hPVCwKIAkJCQkJCQkJCQkgICBXQUlUX0VWRU5UX1JFQ09WRVJZX0NP TkZMSUNUX1NOQVBTSE9ULAogCQkJCQkJCQkJCSAgIHRydWUpOworCisJaWYgKG9uQ2F0YWxv Z1RhYmxlKQorCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2dpY2FsU2xvdHMobm9k ZS5kYk5vZGUsIGxhdGVzdFJlbW92ZWRYaWQsIE5VTEwpOwogfQogCiAvKgpAQCAtNDU4LDcg KzQ2Myw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0 aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwgUmVsRmlsZU5vZGUKICAqLwogdm9pZAogUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklk IGxhdGVzdFJlbW92ZWRGdWxsWGlkLAotCQkJCQkJCQkJCSAgIFJlbEZpbGVOb2RlIG5vZGUp CisJCQkJCQkJCQkJICAgYm9vbCBvbkNhdGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUgbm9kZSkK IHsKIAkvKgogCSAqIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90IG9wZXJh dGVzIG9uIDMyLWJpdCBUcmFuc2FjdGlvbklkcywKQEAgLTQ3Niw3ICs0ODEsNyBAQCBSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9u SWQgbGF0ZXN0UmVtb3ZlZEZ1bGxYaQogCQlUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRY aWQ7CiAKIAkJbGF0ZXN0UmVtb3ZlZFhpZCA9IFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChs YXRlc3RSZW1vdmVkRnVsbFhpZCk7Ci0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90KGxhdGVzdFJlbW92ZWRYaWQsIG5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25m bGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVkWGlkLCBvbkNhdGFsb2dUYWJsZSwgbm9k ZSk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMg Yi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggMmIxYjY4MTA5Zi4uNDgwNDcw MGUyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMjQzOCw2ICsyNDM4LDkgQEAgZXJyZGV0 YWlsX3JlY292ZXJ5X2NvbmZsaWN0KHZvaWQpCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9TTkFQU0hPVDoKIAkJCWVycmRldGFpbCgiVXNlciBxdWVyeSBtaWdodCBoYXZl IG5lZWRlZCB0byBzZWUgcm93IHZlcnNpb25zIHRoYXQgbXVzdCBiZSByZW1vdmVkLiIpOwog CQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VDoKKwkJCWVycmRldGFpbCgiVXNlciB3YXMgdXNpbmcgdGhlIGxvZ2ljYWwgc2xvdCB0aGF0 IG11c3QgYmUgZHJvcHBlZC4iKTsKKwkJCWJyZWFrOwogCQljYXNlIFBST0NTSUdfUkVDT1ZF UllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSzoKIAkJCWVycmRldGFpbCgiVXNlciB0cmFu c2FjdGlvbiBjYXVzZWQgYnVmZmVyIGRlYWRsb2NrIHdpdGggcmVjb3ZlcnkuIik7CiAJCQli cmVhazsKQEAgLTMwMDAsNiArMzAwMywyNSBAQCBSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0 KFByb2NTaWduYWxSZWFzb24gcmVhc29uKQogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX0xPQ0s6CiAJCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVT UEFDRToKIAkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKKwkJ CWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCQkvKgor CQkJCSAqIEZvciBjb25mbGljdHMgdGhhdCByZXF1aXJlIGEgbG9naWNhbCBzbG90IHRvIGJl IGRyb3BwZWQsIHRoZQorCQkJCSAqIHJlcXVpcmVtZW50IGlzIGZvciB0aGUgc2lnbmFsIHJl Y2VpdmVyIHRvIHJlbGVhc2UgdGhlIHNsb3QsCisJCQkJICogc28gdGhhdCBpdCBjb3VsZCBi ZSBkcm9wcGVkIGJ5IHRoZSBzaWduYWwgc2VuZGVyLiBTbyBmb3IKKwkJCQkgKiBub3JtYWwg YmFja2VuZHMsIHRoZSB0cmFuc2FjdGlvbiBzaG91bGQgYmUgYWJvcnRlZCwganVzdAorCQkJ CSAqIGxpa2UgZm9yIG90aGVyIHJlY292ZXJ5IGNvbmZsaWN0cy4gQnV0IGlmIGl0J3Mgd2Fs c2VuZGVyIG9uCisJCQkJICogc3RhbmRieSwgdGhlbiBpdCBoYXMgdG8gYmUga2lsbGVkIHNv IGFzIHRvIHJlbGVhc2UgYW4KKwkJCQkgKiBhY3F1aXJlZCBsb2dpY2FsIHNsb3QuCisJCQkJ ICovCisJCQkJaWYgKGFtX2Nhc2NhZGluZ193YWxzZW5kZXIgJiYKKwkJCQkJcmVhc29uID09 IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QgJiYKKwkJCQkJTXlSZXBs aWNhdGlvblNsb3QgJiYgU2xvdElzTG9naWNhbChNeVJlcGxpY2F0aW9uU2xvdCkpCisJCQkJ eworCQkJCQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IHRydWU7CisJCQkJCVF1ZXJ5Q2Fu Y2VsUGVuZGluZyA9IHRydWU7CisJCQkJCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCQkJ CQlicmVhazsKKwkJCQl9CiAKIAkJCQkvKgogCQkJCSAqIElmIHdlIGFyZW4ndCBpbiBhIHRy YW5zYWN0aW9uIGFueSBsb25nZXIgdGhlbiBpZ25vcmUuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z3N0YXRmdW5jcy5jCmluZGV4IDUxMDIyMjdhNjAuLjEyZTFlMTdiZmEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0xNDk0LDYgKzE0OTQsMjEgQEAgcGdfc3Rh dF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3QoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRV Uk5fSU5UNjQocmVzdWx0KTsKIH0KIAorRGF0dW0KK3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X2xvZ2ljYWxzbG90KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJZGJpZCA9IFBHX0dF VEFSR19PSUQoMCk7CisJaW50NjQJCXJlc3VsdDsKKwlQZ1N0YXRfU3RhdERCRW50cnkgKmRi ZW50cnk7CisKKwlpZiAoKGRiZW50cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF9kYmVudHJ5KGRi aWQpKSA9PSBOVUxMKQorCQlyZXN1bHQgPSAwOworCWVsc2UKKwkJcmVzdWx0ID0gKGludDY0 KSAoZGJlbnRyeS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCk7CisKKwlQR19SRVRVUk5fSU5U NjQocmVzdWx0KTsKK30KKwogRGF0dW0KIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZl cnBpbihQR19GVU5DVElPTl9BUkdTKQogewpAQCAtMTUzNyw2ICsxNTUyLDcgQEAgcGdfc3Rh dF9nZXRfZGJfY29uZmxpY3RfYWxsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXJlc3VsdCA9IChp bnQ2NCkgKGRiZW50cnktPm5fY29uZmxpY3RfdGFibGVzcGFjZSArCiAJCQkJCQkgIGRiZW50 cnktPm5fY29uZmxpY3RfbG9jayArCiAJCQkJCQkgIGRiZW50cnktPm5fY29uZmxpY3Rfc25h cHNob3QgKworCQkJCQkJICBkYmVudHJ5LT5uX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICsKIAkJ CQkJCSAgZGJlbnRyeS0+bl9jb25mbGljdF9idWZmZXJwaW4gKwogCQkJCQkJICBkYmVudHJ5 LT5uX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdAppbmRleCA0NjRmYThkNjE0Li5iNWU5MzZiYmY5IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKQEAgLTU0MDksNiArNTQwOSwxMSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0 X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJv cGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4g J29pZCcsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3Qn IH0sCit7IG9pZCA9PiAnNDU0MycsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiByZWNvdmVy eSBjb25mbGljdHMgaW4gZGF0YWJhc2UgY2F1c2VkIGJ5IGxvZ2ljYWwgcmVwbGljYXRpb24g c2xvdCcsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxz bG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3Jl dHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdw Z19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdCcgfSwKIHsgb2lkID0+ICczMDY4 JywKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRh YmFzZSBjYXVzZWQgYnkgc2hhcmVkIGJ1ZmZlciBwaW4nLAogICBwcm9uYW1lID0+ICdwZ19z dGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4nLCBwcm92b2xhdGlsZSA9PiAncycsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5o CmluZGV4IDJjODIzMTM1NTAuLjY2OTE0ZGJiZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC03MjAsNiArNzIwLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXREQkVudHJ5CiAJUGdTdGF0X0NvdW50ZXIg bl9jb25mbGljdF90YWJsZXNwYWNlOwogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3RfbG9j azsKIAlQZ1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X3NuYXBzaG90OworCVBnU3RhdF9Db3Vu dGVyIG5fY29uZmxpY3RfbG9naWNhbHNsb3Q7CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGlj dF9idWZmZXJwaW47CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF9zdGFydHVwX2RlYWRs b2NrOwogCVBnU3RhdF9Db3VudGVyIG5fdGVtcF9maWxlczsKQEAgLTE2MDAsNiArMTYwMSw3 IEBAIGV4dGVybiB2b2lkIHBnc3RhdF90d29waGFzZV9wb3N0YWJvcnQoVHJhbnNhY3Rpb25J ZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJCQkJICB2b2lkICpyZWNkYXRhLCB1aW50MzIg bGVuKTsKIAogZXh0ZXJuIHZvaWQgcGdzdGF0X3NlbmRfYXJjaGl2ZXIoY29uc3QgY2hhciAq eGxvZywgYm9vbCBmYWlsZWQpOworZXh0ZXJuIHZvaWQgcGdzdGF0X3NlbmRfZHJvcGxvZ2lj YWxzbG90KE9pZCBkYk9pZCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfc2VuZF9iZ3dyaXRlcih2 b2lkKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfd2FsKHZvaWQpOwogZXh0ZXJuIGJv b2wgcGdzdGF0X3NlbmRfd2FsKGJvb2wgZm9yY2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vc2xvdC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5o CmluZGV4IDFhZDVlNmM1MGQuLmI2ZTVmZmZmNzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Nsb3QuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90 LmgKQEAgLTIzMiw0ICsyMzIsNiBAQCBleHRlcm4gdm9pZCBDaGVja1BvaW50UmVwbGljYXRp b25TbG90cyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UmVxdWlyZW1lbnRzKHZv aWQpOwogCitleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2dpY2Fs U2xvdHMoT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqcmVhc29uKTsKKwog I2VuZGlmCQkJCQkJCS8qIFNMT1RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaApp bmRleCA0YWU3ZGMzM2I4Li4yNzAzNWIwNzViIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9z dG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWdu YWwuaApAQCAtNDAsNiArNDAsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX1RBQkxFU1BBQ0UsCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NL LAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCisJUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0JVRkZFUlBJTiwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExP Q0ssCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKaW5kZXggMzhmZDg1YTQzMS4uM2JhMTg4MjIx NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKQEAgLTMwLDkgKzMwLDkgQEAgZXh0ZXJuIHZv aWQgSW5pdFJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCh2b2lkKTsKIGV4dGVybiB2 b2lkIFNodXRkb3duUmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25tZW50KHZvaWQpOwogCiBl eHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2Fj dGlvbklkIGxhdGVzdFJlbW92ZWRYaWQsCi0JCQkJCQkJCQkJCQlSZWxGaWxlTm9kZSBub2Rl KTsKKwkJCQkJCQkJCQkJCWJvb2wgb25DYXRhbG9nVGFibGUsIFJlbEZpbGVOb2RlIG5vZGUp OwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxs WGlkKEZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRGdWxsWGlkLAotCQkJCQkJCQkJ CQkJCSAgIFJlbEZpbGVOb2RlIG5vZGUpOworCQkJCQkJCQkJCQkJCSAgIGJvb2wgb25DYXRh bG9nVGFibGUsIFJlbEZpbGVOb2RlIG5vZGUpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoVGFibGVzcGFjZShPaWQgdHNpZCk7CiBleHRlcm4gdm9pZCBSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhEYXRhYmFzZShPaWQgZGJpZCk7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggOWIxMmNjMTIyYS4uYjBlMTdkNGUxZCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE4NjksNiArMTg2OSw3 IEBAIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzfCBTRUxFQ1QgZC5vaWQgQVMgZGF0aWQs CiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfdGFibGVzcGFjZShkLm9pZCkgQVMgY29u ZmxfdGFibGVzcGFjZSwKICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2NrKGQub2lk KSBBUyBjb25mbF9sb2NrLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90 KGQub2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKKyAgICBwZ19zdGF0X2dldF9kYl9jb25mbGlj dF9sb2dpY2Fsc2xvdChkLm9pZCkgQVMgY29uZmxfbG9naWNhbHNsb3QsCiAgICAgcGdfc3Rh dF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGluKGQub2lkKSBBUyBjb25mbF9idWZmZXJwaW4s CiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhkLm9pZCkg QVMgY29uZmxfZGVhZGxvY2sKICAgIEZST00gcGdfZGF0YWJhc2UgZDsKLS0gCjIuMTguNAoK --------------231B584EBEAF0BECAF3ACC2D Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v12-0002-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v12-0002-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" RnJvbSBlMzAzZGJiMWZkMDRlZDBhOWI4ODA5M2M1ZGNhMjJhMGY0MTM4MGI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyMyBNYXIgMjAyMSAxMToxNjowMSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjEyIDIvNV0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y IGxvZ2ljYWwKIHNsb3QgY29uZmxpY3QgaGFuZGxpbmcuCgpXaGVuIGEgV0FMIHJlcGxheSBv biBzdGFuZGJ5IGluZGljYXRlcyB0aGF0IGEgY2F0YWxvZyB0YWJsZSB0dXBsZSBpcwp0byBi ZSBkZWxldGVkIGJ5IGFuIHhpZCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBhIGxvZ2ljYWwgc2xv dCdzCmNhdGFsb2dfeG1pbiwgdGhlbiB0aGF0IG1lYW5zIHRoZSBzbG90J3MgY2F0YWxvZ194 bWluIGNvbmZsaWN0cyB3aXRoCnRoZSB4aWQsIGFuZCB3ZSBuZWVkIHRvIGhhbmRsZSB0aGUg Y29uZmxpY3QuICBXaGlsZSBzdWJzZXF1ZW50IGNvbW1pdHMKd2lsbCBkbyB0aGUgYWN0dWFs IGNvbmZsaWN0IGhhbmRsaW5nLCB0aGlzIGNvbW1pdCBhZGRzIGEgbmV3IGZpZWxkCm9uQ2F0 YWxvZ1RhYmxlIGluIHN1Y2ggV0FMIHJlY29yZHMsIHRoYXQgaXMgdHJ1ZSBmb3IgY2F0YWxv ZyB0YWJsZXMsCnNvIGFzIHRvIGFycmFuZ2UgZm9yIGNvbmZsaWN0IGhhbmRsaW5nLgoKQW5k cmVzIEZyZXVuZC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMgICAgICB8ICA0ICsr LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgICAgICB8ICA0ICsrKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyAgICB8ICAyICsrCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgfCAxMCArKysrKysrLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIHwgIDIgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jICAgICB8IDEyICsrKysrKysrKy0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyAgIHwgIDggKysrKysrKysKIHNyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICB8IDE2ICsrKysrKysrKysrKysr KysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaCAgICAgICB8ICA2ICsrKy0t LQogc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggICAgICAgICAgIHwgIDMgKystCiBz cmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggICAgICAgICAgfCAgMSArCiBzcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCAgICAgICAgfCAgOCArKysrKystLQogc3JjL2lu Y2x1ZGUvYWNjZXNzL25idHhsb2cuaCAgICAgICAgICAgIHwgIDIgKysKIHNyYy9pbmNsdWRl L2FjY2Vzcy9zcGd4bG9nLmggICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxz L2xzeXNjYWNoZS5oICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5o ICAgICAgICAgICAgICAgICB8ICA5ICsrKysrKysrKwogMTkgZmlsZXMgY2hhbmdlZCwgNzYg aW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiAgMTUuMyUgc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvCiAgMjAuOSUgc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvCiAgMTIuNCUgc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS8KICAgNy42JSBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0LwogICA2LjklIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlLwogIDIwLjAlIHNyYy9pbmNs dWRlL2FjY2Vzcy8KICAxNC4yJSBzcmMvaW5jbHVkZS91dGlscy8KCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0LmMKaW5kZXggMDY4M2Y0MmMyNS4uYjZlNjM0MGMzYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3QuYwpAQCAtMzQ4LDcgKzM0OCw3IEBAIGdpc3RwbGFjZXRvcGFnZShSZWxhdGlv biByZWwsIFNpemUgZnJlZXNwYWNlLCBHSVNUU1RBVEUgKmdpc3RzdGF0ZSwKIAkJZm9yICg7 IHB0cjsgcHRyID0gcHRyLT5uZXh0KQogCQl7CiAJCQkvKiBBbGxvY2F0ZSBuZXcgcGFnZSAq LwotCQkJcHRyLT5idWZmZXIgPSBnaXN0TmV3QnVmZmVyKHJlbCk7CisJCQlwdHItPmJ1ZmZl ciA9IGdpc3ROZXdCdWZmZXIoaGVhcFJlbCwgcmVsKTsKIAkJCUdJU1RJbml0QnVmZmVyKHB0 ci0+YnVmZmVyLCAoaXNfbGVhZikgPyBGX0xFQUYgOiAwKTsKIAkJCXB0ci0+cGFnZSA9IEJ1 ZmZlckdldFBhZ2UocHRyLT5idWZmZXIpOwogCQkJcHRyLT5ibG9jay5ibGtubyA9IEJ1ZmZl ckdldEJsb2NrTnVtYmVyKHB0ci0+YnVmZmVyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dGJ1aWxkLmMKaW5kZXggMTA1NGY2ZjFmMi4uOGIwNjRmMzJhYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKQEAgLTI5MCw3ICsyOTAsNyBAQCBnaXN0YnVpbGQoUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlQ YWdlCQlwYWdlOwogCiAJCS8qIGluaXRpYWxpemUgdGhlIHJvb3QgcGFnZSAqLwotCQlidWZm ZXIgPSBnaXN0TmV3QnVmZmVyKGluZGV4KTsKKwkJYnVmZmVyID0gZ2lzdE5ld0J1ZmZlciho ZWFwLCBpbmRleCk7CiAJCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpID09 IEdJU1RfUk9PVF9CTEtOTyk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCmluZGV4IDFmZjFiZjgxNmYuLjFjODkw MjhhN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwpAQCAtODIzLDcgKzgy Myw3IEBAIGdpc3RjaGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKQogICogQ2Fs bGVyIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgdGhlIHBhZ2UgYnkgY2FsbGlu ZyBHSVNUSW5pdEJ1ZmZlcgogICovCiBCdWZmZXIKLWdpc3ROZXdCdWZmZXIoUmVsYXRpb24g cikKK2dpc3ROZXdCdWZmZXIoUmVsYXRpb24gaGVhcFJlbCwgUmVsYXRpb24gcikKIHsKIAlC dWZmZXIJCWJ1ZmZlcjsKIAlib29sCQluZWVkTG9jazsKQEAgLTg2Nyw3ICs4NjcsNyBAQCBn aXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIpCiAJCQkJICogcGFnZSdzIGRlbGV0ZVhpZC4KIAkJ CQkgKi8KIAkJCQlpZiAoWExvZ1N0YW5kYnlJbmZvQWN0aXZlKCkgJiYgUmVsYXRpb25OZWVk c1dBTChyKSkKLQkJCQkJZ2lzdFhMb2dQYWdlUmV1c2UociwgYmxrbm8sIEdpc3RQYWdlR2V0 RGVsZXRlWGlkKHBhZ2UpKTsKKwkJCQkJZ2lzdFhMb2dQYWdlUmV1c2UoaGVhcFJlbCwgciwg Ymxrbm8sIEdpc3RQYWdlR2V0RGVsZXRlWGlkKHBhZ2UpKTsKIAogCQkJCXJldHVybiBidWZm ZXI7CiAJCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwppbmRleCAxYzgwZWFl MDQ0Li45N2Q4MTRiOTI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0eGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKQEAg LTU5Niw3ICs1OTYsOCBAQCBnaXN0WExvZ0Fzc2lnbkxTTih2b2lkKQogICogV3JpdGUgWExP RyByZWNvcmQgYWJvdXQgcmV1c2Ugb2YgYSBkZWxldGVkIHBhZ2UuCiAgKi8KIHZvaWQKLWdp c3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxU cmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQpCitnaXN0WExvZ1BhZ2VSZXVzZShSZWxh dGlvbiBoZWFwUmVsLCBSZWxhdGlvbiByZWwsCisJCQkJICBCbG9ja051bWJlciBibGtubywg RnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCkKIHsKIAlnaXN0eGxvZ1BhZ2VS ZXVzZSB4bHJlY19yZXVzZTsKIApAQCAtNjA3LDYgKzYwOCw3IEBAIGdpc3RYTG9nUGFnZVJl dXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklk IGxhdGVzdFJlbW92CiAJICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1c2Uu b25DYXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5n KGhlYXBSZWwpOwogCXhscmVjX3JldXNlLm5vZGUgPSByZWwtPnJkX25vZGU7CiAJeGxyZWNf cmV1c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5sYXRlc3RSZW1vdmVkRnVsbFhp ZCA9IGxhdGVzdFJlbW92ZWRYaWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGFzaC9oYXNoaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0 LmMKaW5kZXggZDI1NGEwMGI2YS4uNTcxMTk1MmZjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o YXNoL2hhc2hpbnNlcnQuYwpAQCAtMTcsNiArMTcsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNz L2hhc2guaCIKICNpbmNsdWRlICJhY2Nlc3MvaGFzaF94bG9nLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKQEAg LTM5OCw2ICszOTksNyBAQCBfaGFzaF92YWN1dW1fb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBocmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIGJ1ZikKIAkJCXhsX2hhc2hf dmFjdXVtX29uZV9wYWdlIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhs cmVjLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhocmVsKTsKIAkJCXhscmVjLmxhdGVzdFJlbW92ZWRYaWQgPSBsYXRlc3RSZW1vdmVk WGlkOwogCQkJeGxyZWMubnR1cGxlcyA9IG5kZWxldGFibGU7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMKaW5kZXggN2NiODdmNGEzYi4uYWMwMDRmMTI1OCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTc5NTQsMTIgKzc5NTQsMTMgQEAgYm90dG9tdXBfc29y dF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogICogc2VlIGNvbW1l bnRzIGZvciB2YWN1dW1fbG9nX2NsZWFudXBfaW5mbygpLgogICovCiBYTG9nUmVjUHRyCi1s b2dfaGVhcF9jbGVhbnVwX2luZm8oUmVsRmlsZU5vZGUgcm5vZGUsIFRyYW5zYWN0aW9uSWQg bGF0ZXN0UmVtb3ZlZFhpZCkKK2xvZ19oZWFwX2NsZWFudXBfaW5mbyhSZWxhdGlvbiByZWws IFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCkKIHsKIAl4bF9oZWFwX2NsZWFudXBf aW5mbyB4bHJlYzsKIAlYTG9nUmVjUHRyCXJlY3B0cjsKIAotCXhscmVjLm5vZGUgPSBybm9k ZTsKKwl4bHJlYy5vbkNhdGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dp Y2FsRGVjb2RpbmcocmVsKTsKKwl4bHJlYy5ub2RlID0gcmVsLT5yZF9ub2RlOwogCXhscmVj LmxhdGVzdFJlbW92ZWRYaWQgPSBsYXRlc3RSZW1vdmVkWGlkOwogCiAJWExvZ0JlZ2luSW5z ZXJ0KCk7CkBAIC03OTk1LDYgKzc5OTYsNyBAQCBsb2dfaGVhcF9jbGVhbihSZWxhdGlvbiBy ZWxuLCBCdWZmZXIgYnVmZmVyLAogCS8qIENhbGxlciBzaG91bGQgbm90IGNhbGwgbWUgb24g YSBub24tV0FMLWxvZ2dlZCByZWxhdGlvbiAqLwogCUFzc2VydChSZWxhdGlvbk5lZWRzV0FM KHJlbG4pKTsKIAorCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vzc2li bGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxuKTsKIAl4bHJlYy5sYXRlc3RSZW1vdmVkWGlkID0g bGF0ZXN0UmVtb3ZlZFhpZDsKIAl4bHJlYy5ucmVkaXJlY3RlZCA9IG5yZWRpcmVjdGVkOwog CXhscmVjLm5kZWFkID0gbmRlYWQ7CkBAIC04MDQ1LDYgKzgwNDcsNyBAQCBsb2dfaGVhcF9m cmVlemUoUmVsYXRpb24gcmVsbiwgQnVmZmVyIGJ1ZmZlciwgVHJhbnNhY3Rpb25JZCBjdXRv ZmZfeGlkLAogCS8qIG5vciB3aGVuIHRoZXJlIGFyZSBubyB0dXBsZXMgdG8gZnJlZXplICov CiAJQXNzZXJ0KG50dXBsZXMgPiAwKTsKIAorCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gUmVs YXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxuKTsKIAl4bHJlYy5jdXRv ZmZfeGlkID0gY3V0b2ZmX3hpZDsKIAl4bHJlYy5udHVwbGVzID0gbnR1cGxlczsKIApAQCAt ODA3NSw3ICs4MDc4LDcgQEAgbG9nX2hlYXBfZnJlZXplKFJlbGF0aW9uIHJlbG4sIEJ1ZmZl ciBidWZmZXIsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKICAqIGhlYXBfYnVmZmVyLCBp ZiBuZWNlc3NhcnkuCiAgKi8KIFhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsRmls ZU5vZGUgcm5vZGUsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKK2xv Z19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZl ciB2bV9idWZmZXIsCiAJCQkJIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwgdWludDggdm1m bGFncykKIHsKIAl4bF9oZWFwX3Zpc2libGUgeGxyZWM7CkBAIC04MDg1LDYgKzgwODgsNyBA QCBsb2dfaGVhcF92aXNpYmxlKFJlbEZpbGVOb2RlIHJub2RlLCBCdWZmZXIgaGVhcF9idWZm ZXIsIEJ1ZmZlciB2bV9idWZmZXIsCiAJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9idWZm ZXIpKTsKIAlBc3NlcnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKIAorCXhscmVjLm9u Q2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhy ZWwpOwogCXhscmVjLmN1dG9mZl94aWQgPSBjdXRvZmZfeGlkOwogCXhscmVjLmZsYWdzID0g dm1mbGFnczsKIAlYTG9nQmVnaW5JbnNlcnQoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYwppbmRleCBlZjkxODZiYTdjLi5mNDhhNGU0NjAzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC03NzcsNyArNzc3LDcgQEAgdmFjdXVtX2xv Z19jbGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBMVlJlbFN0YXRzICp2YWNyZWxzdGF0cykK IAkgKiBObyBuZWVkIHRvIHdyaXRlIHRoZSByZWNvcmQgYXQgYWxsIHVubGVzcyBpdCBjb250 YWlucyBhIHZhbGlkIHZhbHVlCiAJICovCiAJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZh Y3JlbHN0YXRzLT5sYXRlc3RSZW1vdmVkWGlkKSkKLQkJKHZvaWQpIGxvZ19oZWFwX2NsZWFu dXBfaW5mbyhyZWwtPnJkX25vZGUsIHZhY3JlbHN0YXRzLT5sYXRlc3RSZW1vdmVkWGlkKTsK KwkJKHZvaWQpIGxvZ19oZWFwX2NsZWFudXBfaW5mbyhyZWwsIHZhY3JlbHN0YXRzLT5sYXRl c3RSZW1vdmVkWGlkKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2li aWxpdHltYXAuYwppbmRleCBlMTk4ZGY2NWQ4Li42ZTg5YTA4YzUyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0yODIsNyArMjgyLDcgQEAgdmlz aWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZm ZXIgaGVhcEJ1ZiwKIAkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJlY3B0cikpCiAJCQl7 CiAJCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNp YmxlKHJlbC0+cmRfbm9kZSwgaGVhcEJ1Ziwgdm1CdWYsCisJCQkJcmVjcHRyID0gbG9nX2hl YXBfdmlzaWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLAogCQkJCQkJCQkJCSAgY3V0b2ZmX3hp ZCwgZmxhZ3MpOwogCiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMK aW5kZXggNTMwZDkyNGJmZi4uZTVkNzI1ZTRlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRwYWdlLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJ1dGlscy9tZW1kZWJ1 Zy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25h cG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCiBzdGF0aWMgQlRNZXRh UGFnZURhdGEgKl9idF9nZXRtZXRhKFJlbGF0aW9uIHJlbCwgQnVmZmVyIG1ldGFidWYpOwog c3RhdGljIHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgYmxrbm8sCkBAIC00Myw3ICs0NCw4IEBAIHN0YXRpYyB2b2lkIF9idF9sb2dfcmV1c2Vf cGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAogc3RhdGljIHZvaWQgX2J0 X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJCVRy YW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwKIAkJCQkJCQkJT2Zmc2V0TnVtYmVyICpk ZWxldGFibGUsIGludCBuZGVsZXRhYmxlLAotCQkJCQkJCQlCVFZhY3V1bVBvc3RpbmcgKnVw ZGF0YWJsZSwgaW50IG51cGRhdGFibGUpOworCQkJCQkJCQlCVFZhY3V1bVBvc3RpbmcgKnVw ZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCisJCQkJCQkJCVJlbGF0aW9uIGhlYXBSZWwpOwog c3RhdGljIGNoYXIgKl9idF9kZWxpdGVtc191cGRhdGUoQlRWYWN1dW1Qb3N0aW5nICp1cGRh dGFibGUsIGludCBudXBkYXRhYmxlLAogCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICp1cGRhdGVk b2Zmc2V0cywKIAkJCQkJCQkJIFNpemUgKnVwZGF0ZWRidWZsZW4sIGJvb2wgbmVlZHN3YWwp OwpAQCAtODM2LDYgKzgzOCw3IEBAIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKQogCSAqLwog CiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3JldXNlLm9uQ2F0YWxvZ1RhYmxlID0gZ2V0 X3JlbF9sb2dpY2FsX2NhdGFsb2cocmVsLT5yZF9pbmRleC0+aW5kcmVsaWQpOwogCXhscmVj X3JldXNlLm5vZGUgPSByZWwtPnJkX25vZGU7CiAJeGxyZWNfcmV1c2UuYmxvY2sgPSBibGtu bzsKIAl4bHJlY19yZXVzZS5sYXRlc3RSZW1vdmVkRnVsbFhpZCA9IHNhZmV4aWQ7CkBAIC0x Mjk2LDcgKzEyOTksOCBAQCBfYnRfZGVsaXRlbXNfdmFjdXVtKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKIHN0YXRpYyB2b2lkCiBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1ZiwgVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAogCQkJCQlP ZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5kZWxldGFibGUsCi0JCQkJCUJUVmFjdXVt UG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSkKKwkJCQkJQlRWYWN1dW1Qb3N0 aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAorCQkJCQlSZWxhdGlvbiBoZWFwUmVs KQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJQlRQYWdlT3BhcXVl IG9wYXF1ZTsKQEAgLTEzNTgsNiArMTM2Miw4IEBAIF9idF9kZWxpdGVtc19kZWxldGUoUmVs YXRpb24gcmVsLCBCdWZmZXIgYnVmLCBUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQs CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCQl4bF9idHJlZV9kZWxldGUgeGxyZWNfZGVsZXRl OwogCisJCXhscmVjX2RlbGV0ZS5vbkNhdGFsb2dUYWJsZSA9CisJCQlSZWxhdGlvbklzQWNj ZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXBSZWwpOwogCQl4bHJlY19kZWxldGUubGF0 ZXN0UmVtb3ZlZFhpZCA9IGxhdGVzdFJlbW92ZWRYaWQ7CiAJCXhscmVjX2RlbGV0ZS5uZGVs ZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2RlbGV0ZS5udXBkYXRlZCA9IG51cGRhdGFi bGU7CkBAIC0xNjg1LDcgKzE2OTEsNyBAQCBfYnRfZGVsaXRlbXNfZGVsZXRlX2NoZWNrKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRpb24gaGVhcFJlbCwKIAogCS8qIFBoeXNp Y2FsbHkgZGVsZXRlIHR1cGxlcyAob3IgVElEcykgdXNpbmcgZGVsZXRhYmxlIChvciB1cGRh dGFibGUpICovCiAJX2J0X2RlbGl0ZW1zX2RlbGV0ZShyZWwsIGJ1ZiwgbGF0ZXN0UmVtb3Zl ZFhpZCwgZGVsZXRhYmxlLCBuZGVsZXRhYmxlLAotCQkJCQkJdXBkYXRhYmxlLCBudXBkYXRh YmxlKTsKKwkJCQkJCXVwZGF0YWJsZSwgbnVwZGF0YWJsZSwgaGVhcFJlbCk7CiAKIAkvKiBi ZSB0aWR5ICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudXBkYXRhYmxlOyBpKyspCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCBhOWZmY2E1MTgzLi5jZDY1 Njk5NTVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1 bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKQEAgLTI3 LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2luZGV4ZnNtLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogCiAKIC8qIEVudHJ5IGluIHBlbmRpbmctbGlzdCBvZiBU SURzIHdlIG5lZWQgdG8gcmV2aXNpdCAqLwpAQCAtNTAzLDYgKzUwNCwxMyBAQCB2YWN1dW1S ZWRpcmVjdEFuZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQog CXNwZ3hsb2dWYWN1dW1SZWRpcmVjdCB4bHJlYzsKIAlHbG9iYWxWaXNTdGF0ZSAqdmlzdGVz dDsKIAorCS8qCisJICogVGhlcmUgaXMgbm8gY2hhbmNlIG9mIGVuZGxlc3MgcmVjdXJzaW9u IGV2ZW4gd2hlbiB3ZSBhcmUgZG9pbmcgY2F0YWxvZworCSAqIGFjY2VzZXMgaGVyZTsgYmVj YXVzZSwgc3BnaXN0IGlzIG5ldmVyIHVzZWQgZm9yIGNhdGFsb2dzLiBDaGVjaworCSAqIGNv bW1lbnRzIGluIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoKS4KKwkg Ki8KKwl4bHJlYy5vbkNhdGFsb2dUYWJsZSA9IGdldF9yZWxfbG9naWNhbF9jYXRhbG9nKGlu ZGV4LT5yZF9pbmRleC0+aW5kcmVsaWQpOworCiAJeGxyZWMublRvUGxhY2Vob2xkZXIgPSAw OwogCXhscmVjLm5ld2VzdFJlZGlyZWN0WGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggNmJiYTVmOGVjNC4uOTBm YTVkZmM3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTE4LDcg KzE4LDkgQEAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5oIgogI2luY2x1ZGUgImFjY2Vzcy9o dHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCisjaW5jbHVkZSAi YWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiYm9vdHN0cmFwL2Jvb3RzdHJhcC5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf YW1vcC5oIgpAQCAtMjA2Miw2ICsyMDY0LDIwIEBAIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lk IHJlbGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wKK2dldF9yZWxfbG9naWNhbF9j YXRhbG9nKE9pZCByZWxpZCkKK3sKKwlib29sCXJlczsKKwlSZWxhdGlvbiByZWw7CisKKwkv KiBhc3N1bWUgcHJldmlvdXNseSBsb2NrZWQgKi8KKwlyZWwgPSB0YWJsZV9vcGVuKHJlbGlk LCBOb0xvY2spOworCXJlcyA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rp bmcocmVsKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlyZXR1cm4gcmVzOwor fQorCiAKIC8qCQkJCS0tLS0tLS0tLS0gVFJBTlNGT1JNIENBQ0hFIC0tLS0tLS0tLS0JCQkJ CQkgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCmluZGV4IDU1M2QzNjRlMmQu LmEwZjQwMTU1NTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZh dGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKQEAgLTQ0MCw4 ICs0NDAsOCBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1BhZ2VEZWxldGUoQnVmZmVy IGJ1ZmZlciwKIAkJCQkJCQkJCSBGdWxsVHJhbnNhY3Rpb25JZCB4aWQsIEJ1ZmZlciBwYXJl bnRCdWZmZXIsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyIGRvd25saW5rT2Zmc2V0KTsKIAot ZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBibGtubywKLQkJCQkJCQkgIEZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQp OworZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gaGVhcFJlbCwgUmVs YXRpb24gcmVsLAorCQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklk IGxhdGVzdFJlbW92ZWRYaWQpOwogCiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1VwZGF0 ZShCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICp0b2RlbGV0ZSwgaW50 IG50b2RlbGV0ZSwKQEAgLTQ4NSw3ICs0ODUsNyBAQCBleHRlcm4gYm9vbCBnaXN0cHJvcGVy dHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vLAogZXh0ZXJuIGJvb2wgZ2lzdGZpdHBhZ2Uo SW5kZXhUdXBsZSAqaXR2ZWMsIGludCBsZW4pOwogZXh0ZXJuIGJvb2wgZ2lzdG5vc3BhY2Uo UGFnZSBwYWdlLCBJbmRleFR1cGxlICppdHZlYywgaW50IGxlbiwgT2Zmc2V0TnVtYmVyIHRv ZGVsZXRlLCBTaXplIGZyZWVzcGFjZSk7CiBleHRlcm4gdm9pZCBnaXN0Y2hlY2twYWdlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZmZXIo UmVsYXRpb24gcik7CitleHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gaGVh cFJlbCwgUmVsYXRpb24gcik7CiBleHRlcm4gYm9vbCBnaXN0UGFnZVJlY3ljbGFibGUoUGFn ZSBwYWdlKTsKIGV4dGVybiB2b2lkIGdpc3RmaWxsYnVmZmVyKFBhZ2UgcGFnZSwgSW5kZXhU dXBsZSAqaXR1cCwgaW50IGxlbiwKIAkJCQkJCSAgIE9mZnNldE51bWJlciBvZmYpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvZ2lzdHhsb2cuaAppbmRleCBmZDUxNDRmMjU4Li43Mzk5OWRkYzcwIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvZ2lzdHhsb2cuaApAQCAtNDksOSArNDksOSBAQCB0eXBlZGVmIHN0cnVjdCBnaXN0 eGxvZ1BhZ2VVcGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dEZWxldGUKIHsK Kwlib29sCQlvbkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRY aWQ7CiAJdWludDE2CQludG9kZWxldGU7CQkvKiBudW1iZXIgb2YgZGVsZXRlZCBvZmZzZXRz ICovCi0KIAkvKgogCSAqIEluIHBheWxvYWQgb2YgYmxrIDAgOiB0b2RlbGV0ZSBPZmZzZXRO dW1iZXJzCiAJICovCkBAIC05Nyw2ICs5Nyw3IEBAIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9n UGFnZURlbGV0ZQogICovCiB0eXBlZGVmIHN0cnVjdCBnaXN0eGxvZ1BhZ2VSZXVzZQogewor CWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVJlbEZpbGVOb2RlIG5vZGU7CiAJQmxvY2tOdW1i ZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZEZ1bGxYaWQ7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggNDM1M2EzMmRiYi4uOTRjMzI5MmMxZSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApAQCAtMjUwLDYgKzI1MCw3IEBAIHR5cGVkZWYgc3Ry dWN0IHhsX2hhc2hfaW5pdF9iaXRtYXBfcGFnZQogICovCiB0eXBlZGVmIHN0cnVjdCB4bF9o YXNoX3ZhY3V1bV9vbmVfcGFnZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5z YWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAlpbnQJCQludHVwbGVzOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDE3OGQ0OTcxMGEuLjZjNGMyNmMyZmUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0yMzksNiArMjM5LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9jbGVh bgogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVt b3ZlZFhpZDsKIAl1aW50MTYJCW5yZWRpcmVjdGVkOwogCXVpbnQxNgkJbmRlYWQ7CkBAIC0y NTQsNiArMjU1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9jbGVhbgogICovCiB0eXBl ZGVmIHN0cnVjdCB4bF9oZWFwX2NsZWFudXBfaW5mbwogeworCWJvb2wJCW9uQ2F0YWxvZ1Rh YmxlOwogCVJlbEZpbGVOb2RlIG5vZGU7CiAJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVk WGlkOwogfSB4bF9oZWFwX2NsZWFudXBfaW5mbzsKQEAgLTMzNCw2ICszMzYsNyBAQCB0eXBl ZGVmIHN0cnVjdCB4bF9oZWFwX2ZyZWV6ZV90dXBsZQogICovCiB0eXBlZGVmIHN0cnVjdCB4 bF9oZWFwX2ZyZWV6ZV9wYWdlCiB7CisJYm9vbAkJb25DYXRhbG9nVGFibGU7CiAJVHJhbnNh Y3Rpb25JZCBjdXRvZmZfeGlkOwogCXVpbnQxNgkJbnR1cGxlczsKIH0geGxfaGVhcF9mcmVl emVfcGFnZTsKQEAgLTM0OCw2ICszNTEsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2Zy ZWV6ZV9wYWdlCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfdmlzaWJsZQogeworCWJv b2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZDsKIAl1aW50 OAkJZmxhZ3M7CiB9IHhsX2hlYXBfdmlzaWJsZTsKQEAgLTM5Nyw3ICs0MDEsNyBAQCBleHRl cm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7 CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0 ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX2NsZWFudXBfaW5mbyhSZWxG aWxlTm9kZSBybm9kZSwKK2V4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX2NsZWFudXBfaW5m byhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVk WGlkKTsKIGV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX2NsZWFuKFJlbGF0aW9uIHJlbG4s IEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSBPZmZzZXROdW1iZXIgKnJlZGlyZWN0ZWQsIGlu dCBucmVkaXJlY3RlZCwKQEAgLTQxNiw3ICs0MjAsNyBAQCBleHRlcm4gYm9vbCBoZWFwX3By ZXBhcmVfZnJlZXplX3R1cGxlKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwKIAkJCQkJCQkJCSAg Ym9vbCAqdG90YWxseV9mcm96ZW4pOwogZXh0ZXJuIHZvaWQgaGVhcF9leGVjdXRlX2ZyZWV6 ZV90dXBsZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUsCiAJCQkJCQkJCQkgIHhsX2hlYXBfZnJl ZXplX3R1cGxlICp4bHJlY190cCk7Ci1leHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNp YmxlKFJlbEZpbGVOb2RlIHJub2RlLCBCdWZmZXIgaGVhcF9idWZmZXIsCitleHRlcm4gWExv Z1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVm ZmVyLAogCQkJCQkJCQkgICBCdWZmZXIgdm1fYnVmZmVyLCBUcmFuc2FjdGlvbklkIGN1dG9m Zl94aWQsIHVpbnQ4IGZsYWdzKTsKIAogI2VuZGlmCQkJCQkJCS8qIEhFQVBBTV9YTE9HX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCmluZGV4IDBmNzczMTg1NmIuLmIxNWFhNDdmMWIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL25idHhsb2cuaApAQCAtMTg1LDYgKzE4NSw3IEBAIHR5cGVkZWYgc3RydWN0 IHhsX2J0cmVlX2RlZHVwCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX3JldXNlX3Bh Z2UKIHsKKwlib29sICAgICAgICBvbkNhdGFsb2dUYWJsZTsKIAlSZWxGaWxlTm9kZSBub2Rl OwogCUJsb2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92 ZWRGdWxsWGlkOwpAQCAtMjMyLDYgKzIzMyw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVl X3ZhY3V1bQogCiB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9kZWxldGUKIHsKKwlib29sCQlv bkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQ7CiAJdWlu dDE2CQluZGVsZXRlZDsKIAl1aW50MTYJCW51cGRhdGVkOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgK aW5kZXggNjk0MDViNTc1MC4uMDZiOTFmNGQwNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL3NwZ3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCkBA IC0yMzcsNiArMjM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgc3BneGxvZ1ZhY3V1bVJvb3QKIAog dHlwZWRlZiBzdHJ1Y3Qgc3BneGxvZ1ZhY3V1bVJlZGlyZWN0CiB7CisJYm9vbAkJb25DYXRh bG9nVGFibGU7CiAJdWludDE2CQluVG9QbGFjZWhvbGRlcjsgLyogbnVtYmVyIG9mIHJlZGly ZWN0cyB0byBtYWtlIHBsYWNlaG9sZGVycyAqLwogCU9mZnNldE51bWJlciBmaXJzdFBsYWNl aG9sZGVyOwkvKiBmaXJzdCBwbGFjZWhvbGRlciB0dXBsZSB0byByZW1vdmUgKi8KIAlUcmFu c2FjdGlvbklkIG5ld2VzdFJlZGlyZWN0WGlkOwkvKiBuZXdlc3QgWElEIG9mIHJlbW92ZWQg cmVkaXJlY3RzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IDc3ODcxYWFlZmMuLmUy YTVlZmVkMzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0xMzksNiArMTM5LDcgQEAg ZXh0ZXJuIGNoYXIgZ2V0X3JlbF9yZWxraW5kKE9pZCByZWxpZCk7CiBleHRlcm4gYm9vbCBn ZXRfcmVsX3JlbGlzcGFydGl0aW9uKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxf dGFibGVzcGFjZShPaWQgcmVsaWQpOwogZXh0ZXJuIGNoYXIgZ2V0X3JlbF9wZXJzaXN0ZW5j ZShPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgZ2V0X3JlbF9sb2dpY2FsX2NhdGFsb2coT2lk IHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9mcm9tc3FsKE9pZCB0eXBpZCwg T2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3Jt X3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJu IGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCA4ZWVl MWMxYTgzLi4xZGY4OWI1NTlkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWwu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMTYsNiArMTYsNyBAQAogCiAj aW5jbHVkZSAiYWNjZXNzL3R1cGRlc2MuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgor I2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xh c3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oIgpAQCAtMzQ3LDYgKzM0OCw5IEBAIHR5cGVkZWYgc3RydWN0 IFN0ZFJkT3B0aW9ucwogICogUmVsYXRpb25Jc1VzZWRBc0NhdGFsb2dUYWJsZQogICoJCVJl dHVybnMgd2hldGhlciB0aGUgcmVsYXRpb24gc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBjYXRh bG9nIHRhYmxlCiAgKgkJZnJvbSB0aGUgcG92IG9mIGxvZ2ljYWwgZGVjb2RpbmcuICBOb3Rl IG11bHRpcGxlIGV2YWwgb2YgYXJndW1lbnQhCisgKgkJVGhpcyBkZWZpbml0aW9uIHNob3Vs ZCBub3QgaW52b2tlIGFueXRoaW5nIHRoYXQgcGVyZm9ybXMgY2F0YWxvZworICoJCWFjY2Vz czsgb3RoZXJ3aXNlIGl0IG1heSBjYXVzZSBpbmZpbml0ZSByZWN1cnNpb24uIENoZWNrIHRo ZSBjb21tZW50cworICoJCWluIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rp bmcoKSBmb3IgZGV0YWlscy4KICAqLwogI2RlZmluZSBSZWxhdGlvbklzVXNlZEFzQ2F0YWxv Z1RhYmxlKHJlbGF0aW9uKQlcCiAJKChyZWxhdGlvbiktPnJkX29wdGlvbnMgJiYgXApAQCAt NjQ3LDYgKzY1MSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFRhYmxlUmRPcHRp b25zCiAgKiBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nCiAgKgkJVHJ1 ZSBpZiB3ZSBuZWVkIHRvIGxvZyBlbm91Z2ggaW5mb3JtYXRpb24gdG8gaGF2ZSBhY2Nlc3Mg dmlhCiAgKgkJZGVjb2Rpbmcgc25hcHNob3QuCisgKgkJVGhpcyBkZWZpbml0aW9uIHNob3Vs ZCBub3QgaW52b2tlIGFueXRoaW5nIHRoYXQgcGVyZm9ybXMgY2F0YWxvZworICoJCWFjY2Vz cy4gT3RoZXJ3aXNlLCBlLmcuIGxvZ2dpbmcgYSBXQUwgZW50cnkgZm9yIGNhdGFsb2cgcmVs YXRpb24gbWF5CisgKgkJaW52b2tlIHRoaXMgZnVuY3Rpb24sIHdoaWNoIHdpbGwgaW4gdHVy biBkbyBjYXRhbG9nIGFjY2Vzcywgd2hpY2ggbWF5CisgKgkJaW4gdHVybiBjYXVzZSBhbm90 aGVyIHNpbWlsYXIgV0FMIGVudHJ5IHRvIGJlIGxvZ2dlZCwgbGVhZGluZyB0bworICoJCWlu ZmluaXRlIHJlY3Vyc2lvbi4KICAqLwogI2RlZmluZSBSZWxhdGlvbklzQWNjZXNzaWJsZUlu TG9naWNhbERlY29kaW5nKHJlbGF0aW9uKSBcCiAJKFhMb2dMb2dpY2FsSW5mb0FjdGl2ZSgp ICYmIFwKLS0gCjIuMTguNAoK --------------231B584EBEAF0BECAF3ACC2D Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v12-0001-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v12-0001-Allow-logical-decoding-on-standby.patch" RnJvbSA4MTFiMjBkZmM0MDJlOGVlOTBlNzQ0NTdkODA5YTA4ZmVhMmI4NDgzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyMyBNYXIgMjAyMSAxMToxNToxNSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjEyIDEvNV0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCBvbiBzdGFuZGJ5LiBSZXN0cmljdCBpdHMg dXNhZ2UKb3IgaXRzIGNyZWF0aW9uIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIGxlc3Mg dGhhbiBsb2dpY2FsLgpEdXJpbmcgc2xvdCBjcmVhdGlvbiwgaXQncyByZXN0YXJ0X2xzbiBp cyBzZXQgdG8gdGhlIGxhc3QgcmVwbGF5ZWQKTFNOLiBFZmZlY3RpdmVseSwgYSBsb2dpY2Fs IHNsb3QgY3JlYXRpb24gb24gc3RhbmRieSB3YWl0cyBmb3IgYW4KeGxfcnVubmluZ194YWN0 IHJlY29yZCB0byBhcnJpdmUgZnJvbSBwcmltYXJ5LiBDb25mbGljdGluZyBzbG90cwp3b3Vs ZCBiZSBoYW5kbGVkIGluIG5leHQgY29tbWl0cy4KCkFuZHJlcyBGcmV1bmQgYW5kIEFtaXQg S2hhbmRla2FyLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAg ICAgIHwgMTEgKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2Rl LmMgIHwgMjIgKysrKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWwuYyB8IDM3ICsrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jICAgICAgICAgICAgfCA1NyArKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgfCAxMCArKy0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICAgICB8ICAxICsKIDYgZmlsZXMgY2hh bmdlZCwgOTggaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCiAgIDUuNiUgc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgNDUuOCUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC8KICA0Ny43JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi8KCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nLmMKaW5kZXggNmY4ODEwZTE0OS4uNmEyMWNiYTM2MiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNTA4MCw2ICs1MDgwLDE3IEBAIExvY2Fs UHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpCiAJUmVhZENvbnRyb2xGaWxlKCk7CiB9 CiAKKy8qCisgKiBHZXQgdGhlIHdhbF9sZXZlbCBmcm9tIHRoZSBjb250cm9sIGZpbGUuIEZv ciBhIHN0YW5kYnksIHRoaXMgdmFsdWUgc2hvdWxkIGJlCisgKiBjb25zaWRlcmVkIGFzIGl0 cyBhY3RpdmUgd2FsX2xldmVsLCBiZWNhdXNlIGl0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSB3 aGF0CisgKiB3YXMgb3JpZ2luYWxseSBjb25maWd1cmVkIG9uIHN0YW5kYnkuCisgKi8KK1dh bExldmVsCitHZXRBY3RpdmVXYWxMZXZlbCh2b2lkKQoreworCXJldHVybiBDb250cm9sRmls ZS0+d2FsX2xldmVsOworfQorCiAvKgogICogSW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1l bW9yeSBmb3IgWExPRwogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYwppbmRleCA1ZjU5NjEzNWIxLi5mMjg0MzE4Y2Q1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTIxNCwxMSArMjE0LDMxIEBAIERl Y29kZVhMb2dPcChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZm ZXIgKmJ1ZikKIAkJCSAqIGNhbiByZXN0YXJ0IGZyb20gdGhlcmUuCiAJCQkgKi8KIAkJCWJy ZWFrOworCQljYXNlIFhMT0dfUEFSQU1FVEVSX0NIQU5HRToKKwkJeworCQkJeGxfcGFyYW1l dGVyX2NoYW5nZSAqeGxyZWMgPQorCQkJCSh4bF9wYXJhbWV0ZXJfY2hhbmdlICopIFhMb2dS ZWNHZXREYXRhKGJ1Zi0+cmVjb3JkKTsKKworCQkJLyoKKwkJCSAqIElmIHdhbF9sZXZlbCBv biBwcmltYXJ5IGlzIHJlZHVjZWQgdG8gbGVzcyB0aGFuIGxvZ2ljYWwsIHRoZW4gd2UKKwkJ CSAqIHdhbnQgdG8gcHJldmVudCBleGlzdGluZyBsb2dpY2FsIHNsb3RzIGZyb20gYmVpbmcg dXNlZC4KKwkJCSAqIEV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieSBnZXQgZHJv cHBlZCB3aGVuIHRoaXMgV0FMCisJCQkgKiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0 aGVyLCBzbG90IGNyZWF0aW9uIGZhaWxzIHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMg bm90IHN1ZmZpY2llbnQ7IGJ1dCBhbGwgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkg KiBzeW5jaHJvbml6ZWQsIHNvIGEgbG9naWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0 aGUgd2FsX2xldmVsCisJCQkgKiBpcyBiZWluZyByZWR1Y2VkLiAgSGVuY2UgdGhpcyBleHRy YSBjaGVjay4KKwkJCSAqLworCQkJaWYgKHhscmVjLT53YWxfbGV2ZWwgPCBXQUxfTEVWRUxf TE9HSUNBTCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dp Y2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgIgorCQkJCQkJCQkid2FsX2xldmVs ID49IGxvZ2ljYWwgb24gbWFzdGVyIikpKTsKKwkJCWJyZWFrOworCQl9CiAJCWNhc2UgWExP R19OT09QOgogCQljYXNlIFhMT0dfTkVYVE9JRDoKIAkJY2FzZSBYTE9HX1NXSVRDSDoKIAkJ Y2FzZSBYTE9HX0JBQ0tVUF9FTkQ6Ci0JCWNhc2UgWExPR19QQVJBTUVURVJfQ0hBTkdFOgog CQljYXNlIFhMT0dfUkVTVE9SRV9QT0lOVDoKIAkJY2FzZSBYTE9HX0ZQV19DSEFOR0U6CiAJ CWNhc2UgWExPR19GUElfRk9SX0hJTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbG9naWNhbC5jCmluZGV4IDM3Yjc1ZGViNzIuLjUzNGUyNTY2Y2YgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCkBAIC0xMTksMjMgKzEx OSwyMiBAQCBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cyh2b2lkKQogCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJ CSBlcnJtc2coImxvZ2ljYWwgZGVjb2RpbmcgcmVxdWlyZXMgYSBkYXRhYmFzZSBjb25uZWN0 aW9uIikpKTsKIAotCS8qIC0tLS0KLQkgKiBUT0RPOiBXZSBnb3QgdG8gY2hhbmdlIHRoYXQg c29tZWRheSBzb29uLi4uCi0JICoKLQkgKiBUaGVyZSdzIGJhc2ljYWxseSB0aHJlZSB0aGlu Z3MgbWlzc2luZyB0byBhbGxvdyB0aGlzOgotCSAqIDEpIFdlIG5lZWQgdG8gYmUgYWJsZSB0 byBjb3JyZWN0bHkgYW5kIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHRpbWVsaW5lIGEKLQkgKgkg IExTTiBiZWxvbmdzIHRvCi0JICogMikgV2UgbmVlZCB0byBmb3JjZSBob3Rfc3RhbmRieV9m ZWVkYmFjayB0byBiZSBlbmFibGVkIGF0IGFsbCB0aW1lcyBzbwotCSAqCSAgdGhlIHByaW1h cnkgY2Fubm90IHJlbW92ZSByb3dzIHdlIG5lZWQuCi0JICogMykgc3VwcG9ydCBkcm9wcGlu ZyByZXBsaWNhdGlvbiBzbG90cyByZWZlcnJpbmcgdG8gYSBkYXRhYmFzZSwgaW4KLQkgKgkg IGRiYXNlX3JlZG8uIFRoZXJlIGNhbid0IGJlIGFueSBhY3RpdmUgb25lcyBkdWUgdG8gSFMg cmVjb3ZlcnkKLQkgKgkgIGNvbmZsaWN0cywgc28gdGhhdCBzaG91bGQgYmUgcmVsYXRpdmVs eSBlYXN5LgotCSAqIC0tLS0KLQkgKi8KIAlpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkpCi0J CWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAotCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2RpbmcgY2Fubm90IGJlIHVzZWQg d2hpbGUgaW4gcmVjb3ZlcnkiKSkpOworCXsKKwkJLyoKKwkJICogVGhpcyBjaGVjayBtYXkg aGF2ZSByYWNlIGNvbmRpdGlvbnMsIGJ1dCB3aGVuZXZlcgorCQkgKiBYTE9HX1BBUkFNRVRF Ul9DSEFOR0UgaW5kaWNhdGVzIHRoYXQgd2FsX2xldmVsIGhhcyBjaGFuZ2VkLCB3ZQorCQkg KiB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gZXhpc3RpbmcgbG9naWNhbCByZXBsaWNhdGlv biBzbG90cy4gQW5kIHRvCisJCSAqIGF2b2lkIHJhY2VzIGFyb3VuZCBjcmVhdGluZyBhIG5l dyBzbG90LAorCQkgKiBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpIGlzIGNh bGxlZCBvbmNlIGJlZm9yZSBjcmVhdGluZworCQkgKiB0aGUgc2xvdCwgYW5kIG9uY2Ugd2hl biBsb2dpY2FsIGRlY29kaW5nIGlzIGluaXRpYWxseSBzdGFydGluZyB1cC4KKwkJICovCisJ CWlmIChHZXRBY3RpdmVXYWxMZXZlbCgpIDwgV0FMX0xFVkVMX0xPR0lDQUwpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBvbiBzdGFu ZGJ5IHJlcXVpcmVzICIKKwkJCQkJCQkid2FsX2xldmVsID49IGxvZ2ljYWwgb24gbWFzdGVy IikpKTsKKwl9CiB9CiAKIC8qCkBAIC0zMzAsNiArMzI5LDEyIEBAIENyZWF0ZUluaXREZWNv ZGluZ0NvbnRleHQoY29uc3QgY2hhciAqcGx1Z2luLAogCUxvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jb250ZXh0OwogCisJLyoKKwkgKiBPbiBz dGFuZGJ5LCB0aGlzIGNoZWNrIGlzIGFsc28gcmVxdWlyZWQgd2hpbGUgY3JlYXRpbmcgdGhl IHNsb3QuIENoZWNrCisJICogdGhlIGNvbW1lbnRzIGluIHRoaXMgZnVuY3Rpb24uCisJICov CisJQ2hlY2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHMoKTsKKwogCS8qIHNob3J0ZXIg bGluZXMuLi4gKi8KIAlzbG90ID0gTXlSZXBsaWNhdGlvblNsb3Q7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYwppbmRleCA3NWEwODdjMmY5Li45ZGIyMDI3OGY2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc2xvdC5jCkBAIC0xMTA1LDM3ICsxMTA1LDU2IEBAIFJlcGxpY2F0aW9uU2xvdFJl c2VydmVXYWwodm9pZCkKIAkJLyoKIAkJICogRm9yIGxvZ2ljYWwgc2xvdHMgbG9nIGEgc3Rh bmRieSBzbmFwc2hvdCBhbmQgc3RhcnQgbG9naWNhbCBkZWNvZGluZwogCQkgKiBhdCBleGFj dGx5IHRoYXQgcG9zaXRpb24uIFRoYXQgYWxsb3dzIHRoZSBzbG90IHRvIHN0YXJ0IHVwIG1v cmUKLQkJICogcXVpY2tseS4KKwkJICogcXVpY2tseS4gQnV0IG9uIGEgc3RhbmRieSB3ZSBj YW5ub3QgZG8gV0FMIHdyaXRlcywgc28ganVzdCB1c2UgdGhlCisJCSAqIHJlcGxheSBwb2lu dGVyOyBlZmZlY3RpdmVseSwgYW4gYXR0ZW1wdCB0byBjcmVhdGUgYSBsb2dpY2FsIHNsb3Qg b24KKwkJICogc3RhbmRieSB3aWxsIGNhdXNlIGl0IHRvIHdhaXQgZm9yIGFuIHhsX3J1bm5p bmdfeGFjdCByZWNvcmQgdG8gYmUKKwkJICogbG9nZ2VkIGluZGVwZW5kZW50bHkgb24gdGhl IHByaW1hcnksIHNvIHRoYXQgYSBzbmFwc2hvdCBjYW4gYmUgYnVpbHQKKwkJICogdXNpbmcg dGhlIHJlY29yZC4KIAkJICoKLQkJICogVGhhdCdzIG5vdCBuZWVkZWQgKG9yIGluZGVlZCBo ZWxwZnVsKSBmb3IgcGh5c2ljYWwgc2xvdHMgYXMgdGhleSdsbAotCQkgKiBzdGFydCByZXBs YXkgYXQgdGhlIGxhc3QgbG9nZ2VkIGNoZWNrcG9pbnQgYW55d2F5LiBJbnN0ZWFkIHJldHVy bgotCQkgKiB0aGUgbG9jYXRpb24gb2YgdGhlIGxhc3QgcmVkbyBMU04uIFdoaWxlIHRoYXQg c2xpZ2h0bHkgaW5jcmVhc2VzCi0JCSAqIHRoZSBjaGFuY2UgdGhhdCB3ZSBoYXZlIHRvIHJl dHJ5LCBpdCdzIHdoZXJlIGEgYmFzZSBiYWNrdXAgaGFzIHRvCi0JCSAqIHN0YXJ0IHJlcGxh eSBhdC4KKwkJICogTm9uZSBvZiB0aGlzIGlzIG5lZWRlZCAob3IgaW5kZWVkIGhlbHBmdWwp IGZvciBwaHlzaWNhbCBzbG90cyBhcworCQkgKiB0aGV5J2xsIHN0YXJ0IHJlcGxheSBhdCB0 aGUgbGFzdCBsb2dnZWQgY2hlY2twb2ludCBhbnl3YXkuIEluc3RlYWQKKwkJICogcmV0dXJu IHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFzdCByZWRvIExTTi4gV2hpbGUgdGhhdCBzbGlnaHRs eQorCQkgKiBpbmNyZWFzZXMgdGhlIGNoYW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0cnksIGl0 J3Mgd2hlcmUgYSBiYXNlIGJhY2t1cAorCQkgKiBoYXMgdG8gc3RhcnQgcmVwbGF5IGF0Lgog CQkgKi8KKwkJaWYgKFNsb3RJc1BoeXNpY2FsKHNsb3QpKQorCQkJcmVzdGFydF9sc24gPSBH ZXRSZWRvUmVjUHRyKCk7CisJCWVsc2UgaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQl7 CisJCQlyZXN0YXJ0X2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCQkvKgor CQkJICogUmVwbGF5IHBvaW50ZXIgbWF5IHBvaW50IG9uZSBwYXN0IHRoZSBlbmQgb2YgdGhl IHJlY29yZC4gSWYgdGhhdAorCQkJICogaXMgYSBYTE9HIHBhZ2UgYm91bmRhcnksIGl0IHdp bGwgbm90IGJlIGEgdmFsaWQgTFNOIGZvciB0aGUKKwkJCSAqIHN0YXJ0IG9mIGEgcmVjb3Jk LCBzbyBidW1wIGl0IHVwIHBhc3QgdGhlIHBhZ2UgaGVhZGVyLgorCQkJICovCisJCQlpZiAo IVhSZWNPZmZJc1ZhbGlkKHJlc3RhcnRfbHNuKSkKKwkJCXsKKwkJCQlpZiAocmVzdGFydF9s c24gJSBYTE9HX0JMQ0tTWiAhPSAwKQorCQkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCByZXBs YXkgcG9pbnRlciIpOworCQkJCS8qIEZvciB0aGUgZmlyc3QgcGFnZSBvZiBhIHNlZ21lbnQg ZmlsZSwgaXQncyBhIGxvbmcgaGVhZGVyICovCisJCQkJaWYgKFhMb2dTZWdtZW50T2Zmc2V0 KHJlc3RhcnRfbHNuLCB3YWxfc2VnbWVudF9zaXplKSA9PSAwKQorCQkJCQlyZXN0YXJ0X2xz biArPSBTaXplT2ZYTG9nTG9uZ1BIRDsKKwkJCQllbHNlCisJCQkJCXJlc3RhcnRfbHNuICs9 IFNpemVPZlhMb2dTaG9ydFBIRDsKKwkJCX0KKwkJfQorCQllbHNlCisJCQlyZXN0YXJ0X2xz biA9IEdldFhMb2dJbnNlcnRSZWNQdHIoKTsKKworCQlTcGluTG9ja0FjcXVpcmUoJnNsb3Qt Pm11dGV4KTsKKwkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOworCQlT cGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKKwogCQlpZiAoIVJlY292ZXJ5SW5Qcm9n cmVzcygpICYmIFNsb3RJc0xvZ2ljYWwoc2xvdCkpCiAJCXsKIAkJCVhMb2dSZWNQdHIJZmx1 c2hwdHI7CiAKLQkJCS8qIHN0YXJ0IGF0IGN1cnJlbnQgaW5zZXJ0IHBvc2l0aW9uICovCi0J CQlyZXN0YXJ0X2xzbiA9IEdldFhMb2dJbnNlcnRSZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNx dWlyZSgmc2xvdC0+bXV0ZXgpOwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3Rh cnRfbHNuOwotCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0KIAkJCS8qIG1h a2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBzdGFydCAqLwogCQkJZmx1 c2hwdHIgPSBMb2dTdGFuZGJ5U25hcHNob3QoKTsKIAogCQkJLyogYW5kIG1ha2Ugc3VyZSBp dCdzIGZzeW5jZWQgdG8gZGlzayAqLwogCQkJWExvZ0ZsdXNoKGZsdXNocHRyKTsKIAkJfQot CQllbHNlCi0JCXsKLQkJCXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0cigpOwotCQkJU3Bp bkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7Ci0JCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNu ID0gcmVzdGFydF9sc247Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQkJ fQogCiAJCS8qIHByZXZlbnQgV0FMIHJlbW92YWwgYXMgZmFzdCBhcyBwb3NzaWJsZSAqLwog CQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IDIzYmFhNDQ5OGEuLmM0YTQ5NzI2NjkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0yODY1LDEwICsyODY1LDEyIEBA IFhMb2dTZW5kTG9naWNhbCh2b2lkKQogCSAqIElmIGZpcnN0IHRpbWUgdGhyb3VnaCBpbiB0 aGlzIHNlc3Npb24sIGluaXRpYWxpemUgZmx1c2hQdHIuICBPdGhlcndpc2UsCiAJICogd2Ug b25seSBuZWVkIHRvIHVwZGF0ZSBmbHVzaFB0ciBpZiBFbmRSZWNQdHIgaXMgcGFzdCBpdC4K IAkgKi8KLQlpZiAoZmx1c2hQdHIgPT0gSW52YWxpZFhMb2dSZWNQdHIpCi0JCWZsdXNoUHRy ID0gR2V0Rmx1c2hSZWNQdHIoKTsKLQllbHNlIGlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+ cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCi0JCWZsdXNoUHRyID0gR2V0Rmx1c2hS ZWNQdHIoKTsKKwlpZiAoZmx1c2hQdHIgPT0gSW52YWxpZFhMb2dSZWNQdHIgfHwKKwkJbG9n aWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQorCXsK KwkJZmx1c2hQdHIgPSAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciA/CisJCQkJCUdldFN0YW5k YnlGbHVzaFJlY1B0cigpIDogR2V0Rmx1c2hSZWNQdHIoKSk7CisJfQogCiAJLyogSWYgRW5k UmVjUHRyIGlzIHN0aWxsIHBhc3Qgb3VyIGZsdXNoUHRyLCBpdCBtZWFucyB3ZSBjYXVnaHQg dXAuICovCiAJaWYgKGxvZ2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+ PSBmbHVzaFB0cikKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IDc3MTg3YzEyYmUuLjA2YmNkMmZjNTYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3hsb2cuaApAQCAtMzMzLDYgKzMzMyw3IEBAIGV4dGVybiBTaXplIFhMT0dT aG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBYTE9HU2htZW1Jbml0KHZvaWQpOwogZXh0 ZXJuIHZvaWQgQm9vdFN0cmFwWExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIExvY2FsUHJvY2Vz c0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpOworZXh0ZXJuIFdhbExldmVsIEdldEFjdGl2ZVdh bExldmVsKHZvaWQpOwogZXh0ZXJuIHZvaWQgU3RhcnR1cFhMT0codm9pZCk7CiBleHRlcm4g dm9pZCBTaHV0ZG93blhMT0coaW50IGNvZGUsIERhdHVtIGFyZyk7CiBleHRlcm4gdm9pZCBJ bml0WExPR0FjY2Vzcyh2b2lkKTsKLS0gCjIuMTguNAoK --------------231B584EBEAF0BECAF3ACC2D--