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 1m8HgV-0006V3-Ix for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jul 2021 07:39:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1m8HgU-0005D1-JJ for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jul 2021 07:39:26 +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 1m8HgU-0005Cs-53 for pgsql-hackers@lists.postgresql.org; Tue, 27 Jul 2021 07:39:26 +0000 Received: from smtp-fw-80006.amazon.com ([99.78.197.217]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m8HgM-0002UY-65 for pgsql-hackers@postgresql.org; Tue, 27 Jul 2021 07:39:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1627371559; x=1658907559; h=to:cc:references:from:message-id:date:mime-version: in-reply-to:subject; bh=HrHKzxe9OSb6cw0pFZX6hHT9C86E4dIy014y4TwUGgU=; b=CEHBmqSdGTGlzgdUXuqlVPtDoZhB59J2hbYtzK7JSYq1v+REcTjZqVsg c1r8Osccr50n1aX9hQtVOaf+/mnddGRgdxt+Fx8PRIc6p9Bzo9FH4RjKQ s6fkNtP6vl+UTs38IcUv6KAzBgbwDSVkybEIyx+7KDkUFnBMe9YTgdt40 I=; X-Amazon-filename: v21-0005-Doc-changes-describing-details-about-logical-dec.patch, v21-0004-New-TAP-test-for-logical-decoding-on-standby.patch, v21-0003-Allow-logical-decoding-on-standby.patch, v21-0002-Handle-logical-slot-conflicts-on-standby.patch, v21-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch X-IronPort-AV: E=Sophos;i="5.84,272,1620691200"; d="scan'208,217,223";a="14994741" Subject: Re: Minimal logical decoding on standbys Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO email-inbound-relay-2a-69849ee2.us-west-2.amazon.com) ([10.25.36.214]) by smtp-border-fw-80006.pdx80.corp.amazon.com with ESMTP; 27 Jul 2021 07:24:01 +0000 Received: from EX13D03EUC003.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan2.pdx.amazon.com [10.236.137.194]) by email-inbound-relay-2a-69849ee2.us-west-2.amazon.com (Postfix) with ESMTPS id C0517A1F8D; Tue, 27 Jul 2021 07:23:59 +0000 (UTC) Received: from 38f9d36c4abb.ant.amazon.com (10.43.160.85) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Tue, 27 Jul 2021 07:23:53 +0000 To: Ibrar Ahmed , Amit Khandekar CC: Andres Freund , , Alvaro Herrera , tushar , "[pgdg] Robert Haas" , Rahila Syed , pgsql-hackers References: <96644a03-0b4d-e0a6-2124-0bc37e5b54fb@amazon.com> <842d60ce-99e6-f35e-8c92-0cd49381326e@amazon.com> <6b9168e5-6a29-7fda-8903-cd50563fa84c@amazon.com> <20210406180231.qsnkyrgrm7gtxb73@alap3.anarazel.de> <20210407170954.xbovgh3xdrnogg7w@alap3.anarazel.de> <20210407203218.pestfxu7watrnog4@alap3.anarazel.de> <20210408034713.auf7oaxyymu2kc7n@alap3.anarazel.de> <26c6f320-98f0-253c-f8b5-df1e7c1f6315@amazon.com> <8d263a6b-a99f-0f9b-43ba-e8967c386f2b@amazon.com> <2feee395-959b-6d53-369a-c00f8f2fa6c5@amazon.com> From: "Drouvot, Bertrand" Message-ID: Date: Tue, 27 Jul 2021 09:23:48 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------38EAF676C6D0AD5AA04F35B3" Content-Language: en-US X-Originating-IP: [10.43.160.85] X-ClientProxiedBy: EX13D48UWA003.ant.amazon.com (10.43.163.4) 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 --------------38EAF676C6D0AD5AA04F35B3 Content-Type: multipart/alternative; boundary="------------D30EF78454DDB206B465E2C0" --------------D30EF78454DDB206B465E2C0 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit Hi, On 7/19/21 12:13 PM, Ibrar Ahmed wrote: > On Fri, Jul 16, 2021 at 1:07 PM Drouvot, Bertrand > wrote: > > Hi Andres, > > On 6/22/21 12:38 PM, Drouvot, Bertrand wrote: > > Hi Andres, > > > > On 6/14/21 7:41 AM, Drouvot, Bertrand wrote: > >> Hi Andres, > >> > >> On 4/8/21 5:47 AM, Andres Freund wrote: > >>> Hi, > >>> > >>> On 2021-04-07 13:32:18 -0700, Andres Freund wrote: > >>>> While working on this I found a, somewhat substantial, issue: > >>>> > >>>> When the primary is idle, on the standby logical decoding via > >>>> walsender > >>>> will typically not process the records until further WAL writes > >>>> come in > >>>> from the primary, or until a 10s lapsed. > >>>> > >>>> The problem is that WalSndWaitForWal() waits for the *replay* > LSN to > >>>> increase, but gets woken up by walreceiver when new WAL has been > >>>> flushed. Which means that typically walsenders will get woken > up at > >>>> the > >>>> same time that the startup process will be - which means that > by the > >>>> time the logical walsender checks GetXLogReplayRecPtr() it's > unlikely > >>>> that the startup process already replayed the record and updated > >>>> XLogCtl->lastReplayedEndRecPtr. > >>>> > >>>> I think fixing this would require too invasive changes at this > >>>> point. I > >>>> think we might be able to live with 10s delay issue for one > >>>> release, but > >>>> it sure is ugly :(. > >>> This is indeed pretty painful. It's a lot more regularly > occuring if > >>> you > >>> either have a slot disk, or you switch around the order of > >>> WakeupRecovery() and WalSndWakeup() XLogWalRcvFlush(). > >>> > >>> - There's about which timeline to use. If you use > pg_recvlogical and > >>> you > >>>    restart the server, you'll see errors like: > >>> > >>>    pg_recvlogical: error: unexpected termination of replication > >>> stream: ERROR:  requested WAL segment 000000000000000000000003 > has > >>> already been removed > >>> > >>>    the real filename is 000000010000000000000003 - i.e. the > timeline is > >>>    0. > >>> > >>>    This isn't too hard to fix, but definitely needs fixing. > >> > >> Thanks, nice catch! > >> > >> From what I have seen, we are not going through > InitXLOGAccess() on a > >> Standby and in some cases (like the one you mentioned) > >> StartLogicalReplication() is called without IdentifySystem() being > >> called previously: this lead to ThisTimeLineID still set to 0. > >> > >> I am proposing a fix in the attached v18 by adding a check in > >> StartLogicalReplication() and ensuring that ThisTimeLineID is > retrieved. > >> > >>> > >>> - ResolveRecoveryConflictWithLogicalSlots() is racy - potentially > >>>    leading us to drop a slot that has been created since we > signalled a > >>>    recovery conflict.  See > >>> > https://www.postgresql.org/message-id/20210408020913.zzprrlvqyvlt5cyy%40alap3.anarazel.de > > > >>> > >>>    for some very similar issues. > >> > >> I have rewritten this part by following the same logic as the one > >> used in 96540f80f8 (the commit linked to the thread you mentioned). > >> > >>> > >>> - Given the precedent of max_slot_wal_keep_size, I think it's > wrong to > >>>    just drop the logical slots. Instead we should just mark > them as > >>>    invalid, like InvalidateObsoleteReplicationSlots(). > >> > >> Makes fully sense and done that way in the attached patch. > >> > >> I am setting the slot's data.xmin and data.catalog_xmin as > >> InvalidTransactionId to mark the slot(s) as invalid in case of > conflict. > >> > >>> - There's no tests covering timeline switches, what happens if > >>> there's a > >>>    promotion if logical decoding is currently ongoing. > >> > >> I'll now work on the tests. > >> > >>> > >>> - The way ResolveRecoveryConflictWithLogicalSlots() builds the > error > >>>    message is not good (and I've complained about it before...). > >> > >> I changed it and made it more simple. > >> > >> I also removed the details around mentioning xmin or catalog > xmin (as > >> I am not sure of the added value and they are currently also not > >> mentioned during standby recovery snapshot conflict). > >> > >>> > >>> Unfortunately I think the things I have found are too many for > me to > >>> address within the given time. I'll send a version with a somewhat > >>> polished set of the changes I made in the next few days... > >> > >> Thanks for the review and feedback. > >> > >> Please find enclosed v18 with the changes I worked on. > >> > >> I still need to have a look on the tests. > > > > Please find enclosed v19 that also contains the changes related to > > your TAP tests remarks, mainly: > > > > - get rid of 024 and add more tests in 026 (025 has been used in > the > > meantime) > > > > - test that logical decoding actually produces useful and > correct results > > > > - test standby promotion and logical decoding behavior once done > > > > - useless "use" removal > > > > - check_confl_logicalslot() function removal > > > > - rewrote make_slot_active() to make use of poll_query_until() and > > timeout > > > > - remove the useless eval() > > > > - remove the "Catalog xmins should advance after standby logical > slot > > fetches the changes" test > > > > One thing that's not clear to me is your remark "There's also no > test > > for a recovery conflict due to row removal": Don't you think > that the > > "vacuum full" conflict test is enough? if not, what kind of > additional > > tests would you like to see? > > > >> > >> There is also the 10s delay to work on, do you already have an > idea > >> on how we should handle it? > >> > >> Thanks > >> > >> Bertrand > >> > > Thanks > > > > Bertrand > > > Please find enclosed v20 a needed rebase (nothing serious worth > mentioning) of v19. > > FWIW, just to sum up that v19 (and so v20): > > - contained the changes (see details above) related to your TAP tests > remarks > > - contained the changes (see details above) related to your code > remarks > > There is still the 10s delay thing that need work: do you already > have > an idea on how we should handle it? > > And still one thing that's not clear to me is your remark "There's > also > no test for a recovery conflict due to row removal": Don't you think > that the "vacuum full" conflict test is enough? if not, what kind of > additional tests would you like to see? > > Thanks > > Bertrand > > > > > > The patch does not apply and an updated patch is required. > patching file src/include/replication/slot.h > Hunk #1 FAILED at 214. > 1 out of 2 hunks FAILED -- saving rejects to file src/include/replication/slot.h.rej > Thanks for the warning, rebase done and new v21 version attached. Bertrand --------------D30EF78454DDB206B465E2C0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 8bit

Hi,

On 7/19/21 12:13 PM, Ibrar Ahmed wrote:

On Fri, Jul 16, 2021 at 1:07 PM Drouvot, Bertrand <bdrouvot@amazon.com> wrote:
Hi Andres,

On 6/22/21 12:38 PM, Drouvot, Bertrand wrote:
> Hi Andres,
>
> On 6/14/21 7:41 AM, Drouvot, Bertrand wrote:
>> Hi Andres,
>>
>> On 4/8/21 5:47 AM, Andres Freund wrote:
>>> Hi,
>>>
>>> On 2021-04-07 13:32:18 -0700, Andres Freund wrote:
>>>> While working on this I found a, somewhat substantial, issue:
>>>>
>>>> When the primary is idle, on the standby logical decoding via
>>>> walsender
>>>> will typically not process the records until further WAL writes
>>>> come in
>>>> from the primary, or until a 10s lapsed.
>>>>
>>>> The problem is that WalSndWaitForWal() waits for the *replay* LSN to
>>>> increase, but gets woken up by walreceiver when new WAL has been
>>>> flushed. Which means that typically walsenders will get woken up at
>>>> the
>>>> same time that the startup process will be - which means that by the
>>>> time the logical walsender checks GetXLogReplayRecPtr() it's unlikely
>>>> that the startup process already replayed the record and updated
>>>> XLogCtl->lastReplayedEndRecPtr.
>>>>
>>>> I think fixing this would require too invasive changes at this
>>>> point. I
>>>> think we might be able to live with 10s delay issue for one
>>>> release, but
>>>> it sure is ugly :(.
>>> This is indeed pretty painful. It's a lot more regularly occuring if
>>> you
>>> either have a slot disk, or you switch around the order of
>>> WakeupRecovery() and WalSndWakeup() XLogWalRcvFlush().
>>>
>>> - There's about which timeline to use. If you use pg_recvlogical and
>>> you
>>>    restart the server, you'll see errors like:
>>>
>>>    pg_recvlogical: error: unexpected termination of replication
>>> stream: ERROR:  requested WAL segment 000000000000000000000003 has
>>> already been removed
>>>
>>>    the real filename is 000000010000000000000003 - i.e. the timeline is
>>>    0.
>>>
>>>    This isn't too hard to fix, but definitely needs fixing.
>>
>> Thanks, nice catch!
>>
>> From what I have seen, we are not going through InitXLOGAccess() on a
>> Standby and in some cases (like the one you mentioned)
>> StartLogicalReplication() is called without IdentifySystem() being
>> called previously: this lead to ThisTimeLineID still set to 0.
>>
>> I am proposing a fix in the attached v18 by adding a check in
>> StartLogicalReplication() and ensuring that ThisTimeLineID is retrieved.
>>
>>>
>>> - ResolveRecoveryConflictWithLogicalSlots() is racy - potentially
>>>    leading us to drop a slot that has been created since we signalled a
>>>    recovery conflict.  See
>>> https://www.postgresql.org/message-id/20210408020913.zzprrlvqyvlt5cyy%40alap3.anarazel.de
>>>
>>>    for some very similar issues.
>>
>> I have rewritten this part by following the same logic as the one
>> used in 96540f80f8 (the commit linked to the thread you mentioned).
>>
>>>
>>> - Given the precedent of max_slot_wal_keep_size, I think it's wrong to
>>>    just drop the logical slots. Instead we should just mark them as
>>>    invalid, like InvalidateObsoleteReplicationSlots().
>>
>> Makes fully sense and done that way in the attached patch.
>>
>> I am setting the slot's data.xmin and data.catalog_xmin as
>> InvalidTransactionId to mark the slot(s) as invalid in case of conflict.
>>
>>> - There's no tests covering timeline switches, what happens if
>>> there's a
>>>    promotion if logical decoding is currently ongoing.
>>
>> I'll now work on the tests.
>>
>>>
>>> - The way ResolveRecoveryConflictWithLogicalSlots() builds the error
>>>    message is not good (and I've complained about it before...).
>>
>> I changed it and made it more simple.
>>
>> I also removed the details around mentioning xmin or catalog xmin (as
>> I am not sure of the added value and they are currently also not
>> mentioned during standby recovery snapshot conflict).
>>
>>>
>>> Unfortunately I think the things I have found are too many for me to
>>> address within the given time. I'll send a version with a somewhat
>>> polished set of the changes I made in the next few days...
>>
>> Thanks for the review and feedback.
>>
>> Please find enclosed v18 with the changes I worked on.
>>
>> I still need to have a look on the tests.
>
> Please find enclosed v19 that also contains the changes related to
> your TAP tests remarks, mainly:
>
> - get rid of 024 and add more tests in 026 (025 has been used in the
> meantime)
>
> - test that logical decoding actually produces useful and correct results
>
> - test standby promotion and logical decoding behavior once done
>
> - useless "use" removal
>
> - check_confl_logicalslot() function removal
>
> - rewrote make_slot_active() to make use of poll_query_until() and
> timeout
>
> - remove the useless eval()
>
> - remove the "Catalog xmins should advance after standby logical slot
> fetches the changes" test
>
> One thing that's not clear to me is your remark "There's also no test
> for a recovery conflict due to row removal": Don't you think that the
> "vacuum full" conflict test is enough? if not, what kind of additional
> tests would you like to see?
>
>>
>> There is also the 10s delay to work on, do you already have an idea
>> on how we should handle it?
>>
>> Thanks
>>
>> Bertrand
>>
> Thanks
>
> Bertrand
>
Please find enclosed v20 a needed rebase (nothing serious worth
mentioning) of v19.

FWIW, just to sum up that v19 (and so v20):

- contained the changes (see details above) related to your TAP tests
remarks

- contained the changes (see details above) related to your code remarks

There is still the 10s delay thing that need work: do you already have
an idea on how we should handle it?

And still one thing that's not clear to me is your remark "There's also
no test for a recovery conflict due to row removal": Don't you think
that the "vacuum full" conflict test is enough? if not, what kind of
additional tests would you like to see?

Thanks

Bertrand





The patch does not apply and an updated patch is required.
patching file src/include/replication/slot.h
Hunk #1 FAILED at 214.
1 out of 2 hunks FAILED -- saving rejects to file src/include/replication/slot.h.rej

Thanks for the warning, rebase done and new v21 version attached.

Bertrand

--------------D30EF78454DDB206B465E2C0-- --------------38EAF676C6D0AD5AA04F35B3 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v21-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v21-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" RnJvbSA1NGIyZjU5MDJiMDNjYWNlOTY2ZWE1OGFjOTY3MTYzNWFiNmE1OWU2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAyNiBKdWwgMjAyMSAwODo0NDo1MCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjIxIDUvNV0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj YWwKIGRlY29kaW5nLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJz aW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJl cnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBk ZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCB8 IDIxICsrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IDg5YjgwOTBiNzkuLmY2NmJiMDRkMjcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjcgQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2 ZW4gdGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBU byBwcmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmlu ZyByZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5h bWU+aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhl CisgICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dz IGdldCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGludmFsaWRhdGVkLiBJdCdzIGhp Z2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSBwaHlzaWNhbCBzbG90IGJldHdlZW4gdGhlIHBy aW1hcnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LiBPdGhlcndpc2UsIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHdpbGwgd29yaywgYnV0IG9ubHkgd2hpbGUgdGhlIAorICAgICBjb25uZWN0aW9u IGlzIGFsaXZlIChmb3IgZXhhbXBsZSBhIG5vZGUgcmVzdGFydCB3b3VsZCBicmVhayBpdCku IEV4aXN0aW5nIAorICAgICBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkgYWxzbyBnZXQgaW52 YWxpZGF0ZWQgaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgcmVkdWNlZCB0bworICAgICBs ZXNzIHRoYW4gJ2xvZ2ljYWwnLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBG b3IgYSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCwgaXQgYnVpbGRzIGEgaGlzdG9yaWMg c25hcHNob3QsIGZvciB3aGljaAorICAgICBpbmZvcm1hdGlvbiBvZiBhbGwgdGhlIGN1cnJl bnRseSBydW5uaW5nIHRyYW5zYWN0aW9ucyBpcyBlc3NlbnRpYWwuIE9uCisgICAgIHByaW1h cnksIHRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLCBidXQgb24gc3RhbmRieSwgdGhp cyBpbmZvcm1hdGlvbgorICAgICBoYXMgdG8gYmUgb2J0YWluZWQgZnJvbSBwcmltYXJ5LiBT bywgc2xvdCBjcmVhdGlvbiBtYXkgd2FpdCBmb3Igc29tZQorICAgICBhY3Rpdml0eSB0byBo YXBwZW4gb24gdGhlIHByaW1hcnkuIElmIHRoZSBwcmltYXJ5IGlzIGlkbGUsIGNyZWF0aW5n IGEKKyAgICAgbG9naWNhbCBzbG90IG9uIHN0YW5kYnkgbWF5IHRha2UgYSBub3RpY2VhYmxl IHRpbWUuCisgICAgPC9wYXJhPgorCiAgICAgPGNhdXRpb24+CiAgICAgIDxwYXJhPgogICAg ICAgUmVwbGljYXRpb24gc2xvdHMgcGVyc2lzdCBhY3Jvc3MgY3Jhc2hlcyBhbmQga25vdyBu b3RoaW5nIGFib3V0IHRoZSBzdGF0ZQotLSAKMi4xOC40Cgo= --------------38EAF676C6D0AD5AA04F35B3 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v21-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v21-0004-New-TAP-test-for-logical-decoding-on-standby.patch" RnJvbSAyNzk1MjBjNTc4OWE4ZjM1MGVhYWFmMmM3Zjc1OTIwNjc5ZGNiM2NjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAyNiBKdWwgMjAyMSAwODo0Mzo1MSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjIxIDQvNV0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpBdXRob3I6IENyYWlnIFJpbmdlciAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQg S2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91 dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVs bG8KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbSAgICAgICAgICAgICAgICAg fCAgMzcgKysKIC4uLi90LzAyNl9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAg ICB8IDQyNiArKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNDYzIGluc2Vy dGlvbnMoKykKICAgNy4yJSBzcmMvdGVzdC9wZXJsLwogIDkyLjclIHNyYy90ZXN0L3JlY292 ZXJ5L3QvCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jlc05vZGUucG0gYi9z cmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQppbmRleCBlZDViNGExYzRiLi41MGFjMDhi MDY5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQorKysgYi9z cmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQpAQCAtMjYxMiw2ICsyNjEyLDQzIEBAIHN1 YiBwZ19yZWN2bG9naWNhbF91cHRvCiAKID1wb2QKIAorPWl0ZW0gJG5vZGUtPmNyZWF0ZV9s b2dpY2FsX3Nsb3Rfb25fc3RhbmRieShzZWxmLCBtYXN0ZXIsIHNsb3RfbmFtZSwgZGJuYW1l KQorCitDcmVhdGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9uIGdpdmVuIHN0YW5kYnkK KworPWN1dAorCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5Cit7CisJbXkg KCRzZWxmLCAkbWFzdGVyLCAkc2xvdF9uYW1lLCAkZGJuYW1lKSA9IEBfOworCW15ICgkc3Rk b3V0LCAkc3RkZXJyKTsKKworCW15ICRoYW5kbGU7CisKKwkkaGFuZGxlID0gSVBDOjpSdW46 OnN0YXJ0KFsncGdfcmVjdmxvZ2ljYWwnLCAnLWQnLCAkc2VsZi0+Y29ubnN0cigkZGJuYW1l KSwgJy1QJywgJ3Rlc3RfZGVjb2RpbmcnLCAnLVMnLCAkc2xvdF9uYW1lLCAnLS1jcmVhdGUt c2xvdCddLCAnPicsIFwkc3Rkb3V0LCAnMj4nLCBcJHN0ZGVycik7CisKKwkjIE9uY2Ugc2xv dCByZXN0YXJ0X2xzbiBpcyBjcmVhdGVkLCB0aGUgc3RhbmRieSBsb29rcyBmb3IgeGxfcnVu bmluZ194YWN0cworCSMgV0FMIHJlY29yZCBmcm9tIHRoZSByZXN0YXJ0X2xzbiBvbndhcmRz LiBTbyBmaXJzdGx5LCB3YWl0IHVudGlsIHRoZSBzbG90CisJIyByZXN0YXJ0X2xzbiBpcyBl dmFsdWF0ZWQuCisKKwkkc2VsZi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywg cXFbCisJCVNFTEVDVCByZXN0YXJ0X2xzbiBJUyBOT1QgTlVMTAorCQlGUk9NIHBnX2NhdGFs b2cucGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90X25hbWUn CisJXSkgb3IgZGllICJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgbG9naWNhbCBzbG90IHRvIGNh bGN1bGF0ZSBpdHMgcmVzdGFydF9sc24iOworCisJIyBOb3cgYXJyYW5nZSBmb3IgdGhlIHhs X3J1bm5pbmdfeGFjdHMgcmVjb3JkIGZvciB3aGljaCBwZ19yZWN2bG9naWNhbAorCSMgaXMg d2FpdGluZy4KKwkkbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NIRUNLUE9JTlQn KTsKKworCSRoYW5kbGUtPmZpbmlzaCgpOworCisJaXMoJHNlbGYtPnNsb3QoJHNsb3RfbmFt ZSktPnsnc2xvdF90eXBlJ30sICdsb2dpY2FsJywgJHNsb3RfbmFtZSAuICcgb24gc3RhbmRi eSBjcmVhdGVkJykKKwkJb3IgZGllICJjb3VsZCBub3QgY3JlYXRlIHNsb3QiIC4gJHNsb3Rf bmFtZTsKK30KKworPXBvZAorCiA9YmFjawogCiA9Y3V0CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWNvdmVyeS90LzAyNl9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzAyNl9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTY4N2M2MzkzMgotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDI2X3N0YW5kYnlfbG9naWNhbF9kZWNvZGlu Zy5wbApAQCAtMCwwICsxLDQyNiBAQAorIyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkg OiB0ZXN0IGxvZ2ljYWwgZGVjb2RpbmcsCisjIHJlY292ZXJ5IGNvbmZsaWN0IGFuZCBzdGFu ZGJ5IHByb21vdGlvbi4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBv c3RncmVzTm9kZTsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDMyOwordXNlIFRpbWU6Okhp UmVzIHF3KHVzbGVlcCk7CisKK215ICgkc3RkaW4sICRzdGRvdXQsICRzdGRlcnIsICRyZXQs ICRoYW5kbGUsICRzbG90KTsKKworbXkgJG5vZGVfcHJpbWFyeSA9IGdldF9uZXdfbm9kZSgn cHJpbWFyeScpOworbXkgJG5vZGVfc3RhbmRieSA9IGdldF9uZXdfbm9kZSgnc3RhbmRieScp OworCisjIE5hbWUgZm9yIHRoZSBwaHlzaWNhbCBzbG90IG9uIHByaW1hcnkKK215ICRwcmlt YXJ5X3Nsb3RuYW1lID0gJ3ByaW1hcnlfcGh5c2ljYWwnOworCisjIHJldHVybiB0aGUgc2l6 ZSBvZiBsb2dmaWxlIG9mICRub2RlIGluIGJ5dGVzCitzdWIgZ2V0X2xvZ19zaXplCit7CisJ bXkgKCRub2RlKSA9IEBfOworCisJcmV0dXJuIChzdGF0ICRub2RlLT5sb2dmaWxlKVs3XTsK K30KKworIyBmaW5kICRwYXQgaW4gbG9nZmlsZSBvZiAkbm9kZSBhZnRlciAkb2ZmLXRoIGJ5 dGUKK3N1YiBmaW5kX2luX2xvZworeworCW15ICgkbm9kZSwgJHBhdCwgJG9mZikgPSBAXzsK KworCSRvZmYgPSAwIHVubGVzcyBkZWZpbmVkICRvZmY7CisJbXkgJGxvZyA9IFRlc3RMaWI6 OnNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2ZpbGUpOworCXJldHVybiAwIGlmIChsZW5ndGgoJGxv ZykgPD0gJG9mZik7CisKKwkkbG9nID0gc3Vic3RyKCRsb2csICRvZmYpOworCisJcmV0dXJu ICRsb2cgPX4gbS8kcGF0LzsKK30KKworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90 J3MgcGdfcmVwbGljYXRpb25fc2xvdHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgorIyBnaXZl biBib29sZWFuIGNvbmRpdGlvbiB0byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVk IGEgcXVpZXNjZW50IHN0YXRlLgorc3ViIHdhaXRfZm9yX3htaW5zCit7CisJbXkgKCRub2Rl LCAkc2xvdG5hbWUsICRjaGVja19leHByKSA9IEBfOworCisJJG5vZGUtPnBvbGxfcXVlcnlf dW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4cHIKKwkJRlJP TSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9 ICckc2xvdG5hbWUnOworCV0pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3Qg eG1pbnMgdG8gYWR2YW5jZSI7Cit9CisKKyMgQ3JlYXRlIHRoZSByZXF1aXJlZCBsb2dpY2Fs IHNsb3RzIG9uIHN0YW5kYnkuCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdHMKK3sKKwkkbm9k ZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFy eSwgJ2luYWN0aXZlc2xvdCcsICd0ZXN0ZGInKTsKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVf bG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ2FjdGl2ZXNsb3QnLCAn dGVzdGRiJyk7Cit9CisKKyMgQWNxdWlyZSBvbmUgb2YgdGhlIHN0YW5kYnkgbG9naWNhbCBz bG90cyBjcmVhdGVkIGJ5IGNyZWF0ZV9sb2dpY2FsX3Nsb3RzKCkuCisjIEluIGNhc2Ugd2Fp dCBpcyB0cnVlIHdlIGFyZSB3YWl0aW5nIGZvciBhbiBhY3RpdmUgcGlkIG9uIHRoZSAnYWN0 aXZlc2xvdCcgc2xvdC4KKyMgSWYgd2FpdCBpcyBub3QgdHJ1ZSBpdCBtZWFucyB3ZSBhcmUg dGVzdGluZyBhIGtub3duIGZhaWx1cmUgc2NlbmFyaW8uCitzdWIgbWFrZV9zbG90X2FjdGl2 ZQoreworCW15ICR3YWl0ID0gc2hpZnQ7CisJbXkgJHNsb3RfdXNlcl9oYW5kbGU7CisKKwlw cmludCAic3RhcnRpbmcgcGdfcmVjdmxvZ2ljYWxcbiI7CisJJHNsb3RfdXNlcl9oYW5kbGUg PSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRub2RlX3N0YW5k YnktPmNvbm5zdHIoJ3Rlc3RkYicpLCAnLVMnLCAnYWN0aXZlc2xvdCcsICctZicsICctJywg Jy0tbm8tbG9vcCcsICctLXN0YXJ0J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJy KTsKKworCWlmICgkd2FpdCkKKwkjIG1ha2Ugc3VyZSBhY3RpdmVzbG90IGlzIGluIHVzZQor CXsKKwkJJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkJCSJT RUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJF IHNsb3RfbmFtZSA9ICdhY3RpdmVzbG90JyBBTkQgYWN0aXZlX3BpZCBJUyBOT1QgTlVMTCki CisJCSkgb3IgZGllICJzbG90IG5ldmVyIGJlY2FtZSBhY3RpdmUiOworCX0KKworCXJldHVy biAkc2xvdF91c2VyX2hhbmRsZTsKK30KKworIyBDaGVjayBpZiBhbGwgdGhlIHNsb3RzIG9u IHN0YW5kYnkgYXJlIGRyb3BwZWQuIFRoZXNlIGluY2x1ZGUgdGhlICdhY3RpdmVzbG90Jwor IyB0aGF0IHdhcyBhY3F1aXJlZCBieSBtYWtlX3Nsb3RfYWN0aXZlKCksIGFuZCB0aGUgbm9u LWFjdGl2ZSAnaW5hY3RpdmVzbG90Jy4KK3N1YiBjaGVja19zbG90c19kcm9wcGVkCit7CisJ bXkgKCRzbG90X3VzZXJfaGFuZGxlKSA9IEBfOworCW15ICRyZXR1cm47CisKKwlpcygkbm9k ZV9zdGFuZGJ5LT5zbG90KCdpbmFjdGl2ZXNsb3QnKS0+eydzbG90X3R5cGUnfSwgJycsICdp bmFjdGl2ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisJaXMoJG5vZGVfc3RhbmRieS0+ c2xvdCgnYWN0aXZlc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ2FjdGl2ZXNsb3Qgb24g c3RhbmRieSBkcm9wcGVkJyk7CisKKwkjIG91ciBjbGllbnQgc2hvdWxkJ3ZlIHRlcm1pbmF0 ZWQgaW4gcmVzcG9uc2UgdG8gdGhlIHdhbHNlbmRlciBlcnJvcgorCSRzbG90X3VzZXJfaGFu ZGxlLT5maW5pc2g7CisJJHJldHVybiA9ICQ/OworCWNtcF9vaygkcmV0dXJuLCAiIT0iLCAw LCAicGdfcmVjdmxvZ2ljYWwgZXhpdGVkIG5vbi16ZXJvIik7CisJaWYgKCRyZXR1cm4pIHsK KwkJbGlrZSgkc3RkZXJyLCBxci9jb25mbGljdCB3aXRoIHJlY292ZXJ5LywgJ3Nsb3QgaGF2 ZSBiZWVuIGRyb3BwZWQnKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCiskbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcg PT4gMSwgaGFzX2FyY2hpdmluZyA9PiAxKTsKKyRub2RlX3ByaW1hcnktPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLCBxeword2FsX2xldmVsID0gJ2xvZ2ljYWwnCittYXhfcmVw bGljYXRpb25fc2xvdHMgPSA0CittYXhfd2FsX3NlbmRlcnMgPSA0Citsb2dfbWluX21lc3Nh Z2VzID0gJ2RlYnVnMicKK2xvZ19lcnJvcl92ZXJib3NpdHkgPSB2ZXJib3NlCit9KTsKKyRu b2RlX3ByaW1hcnktPmR1bXBfaW5mbzsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCiskbm9k ZV9wcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbQ1JFQVRFIERBVEFCQVNFIHRlc3RkYl0p OworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1NFTEVDVCAqIEZS T00gcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRwcmltYXJ5X3Nsb3Ru YW1lJyk7XSk7CitteSAkYmFja3VwX25hbWUgPSAnYjEnOworJG5vZGVfcHJpbWFyeS0+YmFj a3VwKCRiYWNrdXBfbmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEluaXRp YWxpemUgc3RhbmRieSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9kZV9z dGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKAorCSRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFt ZSwKKwloYXNfc3RyZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAxKTsKKyRub2Rl X3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3ByaW1hcnlf c2xvdF9uYW1lID0gJyRwcmltYXJ5X3Nsb3RuYW1lJ10pOworJG5vZGVfc3RhbmRieS0+c3Rh cnQ7Ciskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdy ZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdGhhdCBs b2dpY2FsIGRlY29kaW5nIG9uIHRoZSBzdGFuZGJ5CisjIGJlaGF2ZXMgY29ycmVjdGx5Lgor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor Y3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0 ZXN0ZGInLCBxcVtDUkVBVEUgVEFCTEUgZGVjb2RpbmdfdGVzdCh4IGludGVnZXIsIHkgdGV4 dCk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0lOU0VSVCBJ TlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwKSBzO10pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVw KCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykp OworCitteSAkcmVzdWx0ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAor CXFxW1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBO VUxMLCBOVUxMKTtdKTsKKworIyB0ZXN0IGlmIGJhc2ljIGRlY29kaW5nIHdvcmtzCitpcyhz Y2FsYXIobXkgQGZvb2JhciA9IHNwbGl0IC9eL20sICRyZXN1bHQpLAorCTE0LCAnRGVjb2Rp bmcgcHJvZHVjZWQgMTQgcm93cycpOworCisjIEluc2VydCBzb21lIHJvd3MgYW5kIHZlcmlm eSB0aGF0IHdlIGdldCB0aGUgc2FtZSByZXN1bHRzIGZyb20gcGdfcmVjdmxvZ2ljYWwKKyMg YW5kIHRoZSBTUUwgaW50ZXJmYWNlLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0 ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6 dGV4dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDQpIHM7XQorKTsKKworbXkgJGV4cGVjdGVk ID0gcXtCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRl Z2VyXToxIHlbdGV4dF06JzEnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJU OiB4W2ludGVnZXJdOjIgeVt0ZXh0XTonMicKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0 OiBJTlNFUlQ6IHhbaW50ZWdlcl06MyB5W3RleHRdOiczJwordGFibGUgcHVibGljLmRlY29k aW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo0IHlbdGV4dF06JzQnCitDT01NSVR9Owor Ciskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBs YXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCitteSAkc3Rkb3V0X3NxbCA9 ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtTRUxFQ1QgZGF0YSBG Uk9NIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBO VUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQor KTsKKworaXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQg ZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lvbicpOworCitteSAkZW5kcG9zID0gJG5vZGVfc3Rh bmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCSJTRUxFQ1QgbHNuIEZST00gcGdfbG9naWNh bF9zbG90X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpIE9SREVSIEJZ IGxzbiBERVNDIExJTUlUIDE7IgorKTsKK3ByaW50ICJ3YWl0aW5nIHRvIHJlcGxheSAkZW5k cG9zXG4iOworCisjIEluc2VydCBzb21lIHJvd3MgYWZ0ZXIgJGVuZHBvcywgd2hpY2ggd2Ug d29uJ3QgcmVhZC4KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtJ TlNFUlQgSU5UTyBkZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNSw1MCkgcztdCispOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24o J2ZsdXNoJykpOworCitteSAkc3Rkb3V0X3JlY3YgPSAkbm9kZV9zdGFuZGJ5LT5wZ19yZWN2 bG9naWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xvdCcsICRlbmRwb3MsIDE4 MCwKKyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAnLAorICAgICdza2lwLWVtcHR5LXhh Y3RzJyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2KTsKK2lzKCRzdGRvdXRfcmVjdiwg JGV4cGVjdGVkLAorICAgICdnb3Qgc2FtZSBleHBlY3RlZCBvdXRwdXQgZnJvbSBwZ19yZWN2 bG9naWNhbCBkZWNvZGluZyBzZXNzaW9uJyk7CisKKyRub2RlX3N0YW5kYnktPnBvbGxfcXVl cnlfdW50aWwoJ3Rlc3RkYicsCisJIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdf cmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2FjdGl2ZXNsb3QnIEFORCBh Y3RpdmVfcGlkIElTIE5VTEwpIgorKSBvciBkaWUgInNsb3QgbmV2ZXIgYmVjYW1lIGluYWN0 aXZlIjsKKworJHN0ZG91dF9yZWN2ID0gJG5vZGVfc3RhbmRieS0+cGdfcmVjdmxvZ2ljYWxf dXB0bygKKyAgICAndGVzdGRiJywgJ2FjdGl2ZXNsb3QnLCAkZW5kcG9zLCAxODAsCisgICAg J2luY2x1ZGUteGlkcycgICAgID0+ICcwJywKKyAgICAnc2tpcC1lbXB0eS14YWN0cycgPT4g JzEnKTsKK2Nob21wKCRzdGRvdXRfcmVjdik7Citpcygkc3Rkb3V0X3JlY3YsICcnLCAncGdf cmVjdmxvZ2ljYWwgYWNrbm93bGVkZ2VkIGNoYW5nZXMnKTsKKworJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgREFUQUJBU0Ugb3RoZXJkYicpOworCitp cyggJG5vZGVfcHJpbWFyeS0+cHNxbCgKKyAgICAgICAgJ290aGVyZGInLAorICAgICAgICAi U0VMRUNUIGxzbiBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNs b3QnLCBOVUxMLCBOVUxMKSBPUkRFUiBCWSBsc24gREVTQyBMSU1JVCAxOyIKKyAgICApLAor ICAgIDMsCisgICAgJ3JlcGxheWluZyBsb2dpY2FsIHNsb3QgZnJvbSBhbm90aGVyIGRhdGFi YXNlIGZhaWxzJyk7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworJG5vZGVfc3RhbmRi eS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3Qo J2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFb U0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnYWN0aXZlc2xvdCcpXSk7CisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJl Y292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRp bmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDEgOiBob3Rfc3RhbmRieV9mZWVkYmFjayBv ZmYKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgT25lIHdheSB0byByZXByb2R1Y2Ug cmVjb3ZlcnkgY29uZmxpY3QgaXMgdG8gcnVuIFZBQ1VVTSBGVUxMIHdpdGgKKyMgaG90X3N0 YW5kYnlfZmVlZGJhY2sgdHVybmVkIG9mZiBvbiB0aGUgc3RhbmRieS4KKyRub2RlX3N0YW5k YnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9mZWVk YmFjayA9IG9mZgorXSk7Ciskbm9kZV9zdGFuZGJ5LT5yZXN0YXJ0OworIyBlbnN1cmUgd2Fs cmVjZWl2ZXIgZmVlZGJhY2sgb2ZmIGJ5IHdhaXRpbmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5k CisjIGNhdGFsb2dfeG1pbiBvbiBwcmltYXJ5LiBCb3RoIHNob3VsZCBiZSBOVUxMIHNpbmNl IGhzX2ZlZWRiYWNrIGlzIG9mZgord2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwgJHBy aW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOVUxMIEFORCBjYXRhbG9nX3htaW4g SVMgTlVMTCIpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsKKworIyBUaGlz IHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGljdAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCd0ZXN0ZGInLCAnVkFDVVVNIEZVTEwnKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3Jf Y2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdm bHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xv ZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZl c2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiKSwKKyAgJ2luYWN0 aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQnKTsKKworb2soIGZpbmRfaW5f bG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZl c2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiKSwKKyAgJ2FjdGl2 ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkJyk7CisKKyMgVmVyaWZ5IHRoYXQg cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfbG9naWNhbHNsb3QgaGFzIGJlZW4g dXBkYXRlZAorb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3Rn cmVzJywKKwkic2VsZWN0IChjb25mbF9sb2dpY2Fsc2xvdCA9IDIpIGZyb20gcGdfc3RhdF9k YXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwgJ3QnKSwKKwkn Y29uZmxfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcg Y29uZmxfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyRoYW5kbGUgPSBtYWtlX3Ns b3RfYWN0aXZlKDApOwordXNsZWVwKDEwMF8wMDApOworCisjIFdlIGFyZSBub3QgYWJsZSB0 byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKK29rKCBm aW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJjYW5ub3QgcmVhZCBmcm9tIGxv Z2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpLAorICAnY2Fubm90IHJl YWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QnKTsKKworIyBUdXJuIGhvdF9zdGFu ZGJ5X2ZlZWRiYWNrIGJhY2sgb24KKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCitdKTsKKyRub2Rl X3N0YW5kYnktPnJlc3RhcnQ7CisKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNrIHNl bnQgYnkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWluIG9u IHByaW1hcnkuIFdpdGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gc2hvdWxkIGFk dmFuY2UsCisjIGJ1dCBjYXRhbG9nX3htaW4gc2hvdWxkIHN0aWxsIHJlbWFpbiBOVUxMIHNp bmNlIHRoZXJlIGlzIG5vIGxvZ2ljYWwgc2xvdC4KK3dhaXRfZm9yX3htaW5zKCRub2RlX3By aW1hcnksICRwcmltYXJ5X3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMgTk9UIE5VTEwgQU5E IGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlk YXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5h cmlvIDIgOiBpbmNvcnJlY3Qgd2FsX2xldmVsIG9uIHByaW1hcnkuCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9z aXRpb24gdG8gc2VhcmNoIGZyb20gaW4gdGhlIHN0YW5kYnkgbG9nZmlsZQorbXkgJGxvZ3N0 YXJ0ID0gZ2V0X2xvZ19zaXplKCRub2RlX3N0YW5kYnkpOworCisjIGRyb3AgdGhlIGxvZ2lj YWwgc2xvdHMKKyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdf ZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdpbmFjdGl2ZXNsb3QnKV0pOworJG5vZGVfc3RhbmRi eS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3Qo J2FjdGl2ZXNsb3QnKV0pOworCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCiskaGFuZGxl ID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsKKworIyBNYWtlIHByaW1hcnkgd2FsX2xldmVsIHJl cGxpY2EuIFRoaXMgd2lsbCB0cmlnZ2VyIHNsb3QgY29uZmxpY3QuCiskbm9kZV9wcmltYXJ5 LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJyxxWword2FsX2xldmVsID0gJ3JlcGxp Y2EnCitdKTsKKyRub2RlX3ByaW1hcnktPnJlc3RhcnQ7CisKKyRub2RlX3ByaW1hcnktPndh aXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnkt PmxzbignZmx1c2gnKSk7CisKKyMgbWVzc2FnZSBzaG91bGQgYmUgaXNzdWVkCitvayggZmlu ZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJp bmFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxv Z3N0YXJ0KSwKKyAgJ2luYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQn KTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRh dGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVj b3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBp cyBsb2dnZWQnKTsKKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 cy5jb25mbF9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCitvayggJG5vZGVfc3RhbmRi eS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLAorCSJzZWxlY3QgKGNvbmZsX2xv Z2ljYWxzbG90ID0gMikgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBk YXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9sb2dpY2Fsc2xvdCB1cGRhdGVk Jykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9sb2dpY2Fsc2xvdCB0byBiZSB1 cGRhdGVkIjsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMCk7Cit1c2xlZXAoMTAw XzAwMCk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJsb2dp Y2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsID49IGxvZ2ljYWwg b24gbWFzdGVyIiwgJGxvZ3N0YXJ0KSwKKyAgJ2Nhbm5vdCBzdGFydCByZXBsaWNhdGlvbiBi ZWNhdXNlIHdhbF9sZXZlbCA8IGxvZ2ljYWwgb24gbWFzdGVyJyk7CisKKyMgUmVzdG9yZSBw cmltYXJ5IHdhbF9sZXZlbAorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicscVsKK3dhbF9sZXZlbCA9ICdsb2dpY2FsJworXSk7Ciskbm9kZV9wcmltYXJ5 LT5yZXN0YXJ0OworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFu ZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworJGhhbmRs ZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMCk7Cit1c2xlZXAoMTAwXzAwMCk7CisKKyMgYXMgdGhl IHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgd2Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJl YWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJjYW5ub3QgcmVh ZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIsICRsb2dz dGFydCksCisgICdjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcp OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBEUk9QIERBVEFCQVNFIHNob3VsZCBkcm9wcyBpdCdzIHNsb3RzLCBpbmNsdWRpbmcg YWN0aXZlIHNsb3RzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworJG5vZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVD VCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9z dGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25f c2xvdCgnYWN0aXZlc2xvdCcpXSk7CitjcmVhdGVfbG9naWNhbF9zbG90cygpOworJGhhbmRs ZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisjIENyZWF0ZSBhIHNsb3Qgb24gYSBkYXRhYmFz ZSB0aGF0IHdvdWxkIG5vdCBiZSBkcm9wcGVkLiBUaGlzIHNsb3Qgc2hvdWxkIG5vdAorIyBn ZXQgZHJvcHBlZC4KKyRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3Rh bmRieSgkbm9kZV9wcmltYXJ5LCAnb3RoZXJzbG90JywgJ3Bvc3RncmVzJyk7CisKKyMgZHJv cGRiIG9uIHRoZSBwcmltYXJ5IHRvIHZlcmlmeSBzbG90cyBhcmUgZHJvcHBlZCBvbiBzdGFu ZGJ5Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcVtEUk9QIERBVEFC QVNFIHRlc3RkYl0pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2Rl X3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCitp cygkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxW1NFTEVDVCBFWElT VFMoU0VMRUNUIDEgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gJ3Rlc3RkYicp XSksICdmJywKKwknZGF0YWJhc2UgZHJvcHBlZCBvbiBzdGFuZGJ5Jyk7CisKK2NoZWNrX3Ns b3RzX2Ryb3BwZWQoJGhhbmRsZSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNsb3QoJ290aGVy c2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcsCisJJ290aGVyc2xvdCBvbiBzdGFu ZGJ5IG5vdCBkcm9wcGVkJyk7CisKKyMgQ2xlYW51cCA6IG1hbnVhbGx5IGRyb3AgdGhlIHNs b3QgdGhhdCB3YXMgbm90IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jl cycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnb3RoZXJzbG90JyldKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgVGVzdCBzdGFuZGJ5IHByb21vdGlvbiBhbmQgbG9naWNhbCBkZWNvZGluZyBiaGVhdmlv cgorIyBhZnRlciB0aGUgc3RhbmRieSBnZXRzIHByb21vdGVkLgorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfcHJpbWFyeS0+ cHNxbCgncG9zdGdyZXMnLCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rl c3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90 cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGJlZm9y ZSB0aGUgcHJvbW90aW9uCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJ cXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCiskbm9kZV9wcmltYXJ5LT53YWl0 X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5s c24oJ2ZsdXNoJykpOworCisjIHByb21vdGUKKyRub2RlX3N0YW5kYnktPnByb21vdGU7CisK KyMgaW5zZXJ0IHNvbWUgcm93cyBvbiBwcm9tb3RlZCBzdGFuZGJ5Ciskbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4 LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsNykgcztdCisp OworCisKKyRleHBlY3RlZCA9IHF7QkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0 OiBJTlNFUlQ6IHhbaW50ZWdlcl06MSB5W3RleHRdOicxJwordGFibGUgcHVibGljLmRlY29k aW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToyIHlbdGV4dF06JzInCit0YWJsZSBwdWJs aWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjMgeVt0ZXh0XTonMycKK3Rh YmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NCB5W3RleHRd Oic0JworQ09NTUlUCitCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VS VDogeFtpbnRlZ2VyXTo1IHlbdGV4dF06JzUnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVz dDogSU5TRVJUOiB4W2ludGVnZXJdOjYgeVt0ZXh0XTonNicKK3RhYmxlIHB1YmxpYy5kZWNv ZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NyB5W3RleHRdOic3JworQ09NTUlUfTsK KworIyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUgYW5kIHBvc3QgcHJvbW90aW9u IGluc2VydGVkIHJvd3MKKyRzdGRvdXRfc3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3Fs KCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtf Y2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcs ICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4 cGVjdGVkLCAnZ290IGV4cGVjdGVkIG91dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9u IG9uIHByb21vdGVkIHN0YW5kYnknKTsKLS0gCjIuMTguNAoK --------------38EAF676C6D0AD5AA04F35B3 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v21-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v21-0003-Allow-logical-decoding-on-standby.patch" RnJvbSA4NWUxMDllZTRjNDNhMjZiNWJlYTg2ZTE4ZTVlNDczODkyMzViMWVmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAyNiBKdWwgMjAyMSAwODo0MjoyOCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjIxIDMvNV0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCBvbiBzdGFuZGJ5LiBSZXN0cmljdCBpdHMg dXNhZ2UKb3IgaXRzIGNyZWF0aW9uIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIGxlc3Mg dGhhbiBsb2dpY2FsLgpEdXJpbmcgc2xvdCBjcmVhdGlvbiwgaXQncyByZXN0YXJ0X2xzbiBp cyBzZXQgdG8gdGhlIGxhc3QgcmVwbGF5ZWQKTFNOLiBFZmZlY3RpdmVseSwgYSBsb2dpY2Fs IHNsb3QgY3JlYXRpb24gb24gc3RhbmRieSB3YWl0cyBmb3IgYW4KeGxfcnVubmluZ194YWN0 IHJlY29yZCB0byBhcnJpdmUgZnJvbSBwcmltYXJ5LiBDb25mbGljdGluZyBzbG90cwp3b3Vs ZCBiZSBoYW5kbGVkIGluIG5leHQgY29tbWl0cy4KCkF1dGhvcjogQW5kcmVzIEZyZXVuZCAo aW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90 ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQg SGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVsbG8KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgICAgICAgICAgICAgfCAzMyArKysrKysrKysrLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jICAgICAgICB8ICAyICstCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jICAgICAgICAgfCAgNCArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAgICAgIHwgMjIgKysrKysrKy0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jICAgICB8IDM3ICsr KysrKy0tLS0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAg ICAgICB8IDU2ICsrKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3RmdW5jcy5jICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxyZWNlaXZlci5jICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2FscmVjZWl2ZXJmdW5jcy5jICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHNlbmRlci5jICAgICAgICAgICB8IDI2ICsrKysrKy0tLQogc3JjL2luY2x1ZGUv YWNjZXNzL3hsb2cuaCAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KIDEzIGZpbGVzIGNo YW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKICAxNi43JSBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICAzMi43JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsLwogIDQ1LjIlIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uLwogICA1LjMlIHNy Yy8KCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggYzM3NmViOTE5Zi4uM2M4 YjUzNjcwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNTEwNSw2ICs1 MTA1LDE3IEBAIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpCiAJUmVhZENv bnRyb2xGaWxlKCk7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHdhbF9sZXZlbCBmcm9tIHRoZSBj b250cm9sIGZpbGUuIEZvciBhIHN0YW5kYnksIHRoaXMgdmFsdWUgc2hvdWxkIGJlCisgKiBj b25zaWRlcmVkIGFzIGl0cyBhY3RpdmUgd2FsX2xldmVsLCBiZWNhdXNlIGl0IG1heSBiZSBk aWZmZXJlbnQgZnJvbSB3aGF0CisgKiB3YXMgb3JpZ2luYWxseSBjb25maWd1cmVkIG9uIHN0 YW5kYnkuCisgKi8KK1dhbExldmVsCitHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSh2b2lk KQoreworCXJldHVybiBDb250cm9sRmlsZS0+d2FsX2xldmVsOworfQorCiAvKgogICogSW5p dGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgWExPRwogICovCkBAIC05NjQ1LDcg Kzk2NTYsNyBAQCBDcmVhdGVSZXN0YXJ0UG9pbnQoaW50IGZsYWdzKQogCSAqIHdoaWNoZXZl ciBpcyBsYXRlci4KIAkgKi8KIAlyZWNlaXZlUHRyID0gR2V0V2FsUmN2Rmx1c2hSZWNQdHIo TlVMTCwgTlVMTCk7Ci0JcmVwbGF5UHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cigmcmVwbGF5 VExJKTsKKwlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEksIGZh bHNlKTsKIAllbmRwdHIgPSAocmVjZWl2ZVB0ciA8IHJlcGxheVB0cikgPyByZXBsYXlQdHIg OiByZWNlaXZlUHRyOwogCUtlZXBMb2dTZWcoZW5kcHRyLCAmX2xvZ1NlZ05vKTsKIAlpZiAo SW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhfbG9nU2VnTm8pKQpAQCAtMTE3 ODMsNyArMTE3OTQsNyBAQCByZWdpc3Rlcl9wZXJzaXN0ZW50X2Fib3J0X2JhY2t1cF9oYW5k bGVyKHZvaWQpCiAgKiBFeHBvcnRlZCB0byBhbGxvdyBXQUxSZWNlaXZlciB0byByZWFkIHRo ZSBwb2ludGVyIGRpcmVjdGx5LgogICovCiBYTG9nUmVjUHRyCi1HZXRYTG9nUmVwbGF5UmVj UHRyKFRpbWVMaW5lSUQgKnJlcGxheVRMSSkKK0dldFhMb2dSZXBsYXlSZWNQdHIoVGltZUxp bmVJRCAqcmVwbGF5VExJLCBib29sIGF2b2lkX2hlYWRlcikKIHsKIAlYTG9nUmVjUHRyCXJl Y3B0cjsKIAlUaW1lTGluZUlECXRsaTsKQEAgLTExNzk1LDYgKzExODA2LDI0IEBAIEdldFhM b2dSZXBsYXlSZWNQdHIoVGltZUxpbmVJRCAqcmVwbGF5VExJKQogCiAJaWYgKHJlcGxheVRM SSkKIAkJKnJlcGxheVRMSSA9IHRsaTsKKworCS8qCisJICogUmVwbGF5IHBvaW50ZXIgbWF5 IHBvaW50IG9uZSBwYXN0IHRoZSBlbmQgb2YgdGhlIHJlY29yZC4gSWYgdGhhdAorCSAqIGlz IGEgWExPRyBwYWdlIGJvdW5kYXJ5LCBpdCB3aWxsIG5vdCBiZSBhIHZhbGlkIExTTiBmb3Ig dGhlCisJICogc3RhcnQgb2YgYSByZWNvcmQsIHNvIGJ1bXAgaXQgdXAgcGFzdCB0aGUgcGFn ZSBoZWFkZXIuCisJICovCisJaWYgKGF2b2lkX2hlYWRlciAmJiAhWFJlY09mZklzVmFsaWQo cmVjcHRyKSkKKwl7CisJCWlmIChyZWNwdHIgJSBYTE9HX0JMQ0tTWiAhPSAwKQorCQkJZWxv ZyhFUlJPUiwgImludmFsaWQgcmVwbGF5IHBvaW50ZXIiKTsKKworCQkvKiBGb3IgdGhlIGZp cnN0IHBhZ2Ugb2YgYSBzZWdtZW50IGZpbGUsIGl0J3MgYSBsb25nIGhlYWRlciAqLworCQlp ZiAoWExvZ1NlZ21lbnRPZmZzZXQocmVjcHRyLCB3YWxfc2VnbWVudF9zaXplKSA9PSAwKQor CQkJcmVjcHRyICs9IFNpemVPZlhMb2dMb25nUEhEOworCQllbHNlCisJCQlyZWNwdHIgKz0g U2l6ZU9mWExvZ1Nob3J0UEhEOworCX0KKwogCXJldHVybiByZWNwdHI7CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggYjk4ZGViNzJlYy4uYTE3 M2Y4ZDZmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKQEAg LTQxNyw3ICs0MTcsNyBAQCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKFBHX0ZVTkNUSU9OX0FS R1MpCiB7CiAJWExvZ1JlY1B0cglyZWNwdHI7CiAKLQlyZWNwdHIgPSBHZXRYTG9nUmVwbGF5 UmVjUHRyKE5VTEwpOworCXJlY3B0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCwgZmFs c2UpOwogCiAJaWYgKHJlY3B0ciA9PSAwKQogCQlQR19SRVRVUk5fTlVMTCgpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwppbmRleCBkMTdkNjYwZjQ2Li44MTA4 OGJhYWUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRp bHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwpAQCAt ODUwLDcgKzg1MCw3IEBAIHJlYWRfbG9jYWxfeGxvZ19wYWdlKFhMb2dSZWFkZXJTdGF0ZSAq c3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKIAkJaWYgKCFSZWNvdmVyeUluUHJv Z3Jlc3MoKSkKIAkJCXJlYWRfdXB0byA9IEdldEZsdXNoUmVjUHRyKCk7CiAJCWVsc2UKLQkJ CXJlYWRfdXB0byA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJlRoaXNUaW1lTGluZUlEKTsKKwkJ CXJlYWRfdXB0byA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJlRoaXNUaW1lTGluZUlELCBmYWxz ZSk7CiAJCXRsaSA9IFRoaXNUaW1lTGluZUlEOwogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9jaGVja3BvaW50ZXIuYwppbmRleCA3NWE5NWYzZGU3Li4xMWQ4ZjEzNzBjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKQEAgLTQzNyw3ICs0MzcsNyBA QCBDaGVja3BvaW50ZXJNYWluKHZvaWQpCiAJCQkgKi8KIAkJCWNrcHRfYWN0aXZlID0gdHJ1 ZTsKIAkJCWlmIChkb19yZXN0YXJ0cG9pbnQpCi0JCQkJY2twdF9zdGFydF9yZWNwdHIgPSBH ZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQkJCWNrcHRfc3RhcnRfcmVjcHRyID0gR2V0 WExvZ1JlcGxheVJlY1B0cihOVUxMLCBmYWxzZSk7CiAJCQllbHNlCiAJCQkJY2twdF9zdGFy dF9yZWNwdHIgPSBHZXRJbnNlcnRSZWNQdHIoKTsKIAkJCWNrcHRfc3RhcnRfdGltZSA9IG5v dzsKQEAgLTgwMSw3ICs4MDEsNyBAQCBJc0NoZWNrcG9pbnRPblNjaGVkdWxlKGRvdWJsZSBw cm9ncmVzcykKIAkgKiB2YWx1ZSB0aGF0IHdhcyBpbiBlZmZlY3Qgd2hlbiB0aGUgV0FMIHdh cyBnZW5lcmF0ZWQpLgogCSAqLwogCWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKLQkJcmVj cHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwkJcmVjcHRyID0gR2V0WExvZ1Jl cGxheVJlY1B0cihOVUxMLCBmYWxzZSk7CiAJZWxzZQogCQlyZWNwdHIgPSBHZXRJbnNlcnRS ZWNQdHIoKTsKIAllbGFwc2VkX3hsb2dzID0gKCgoZG91YmxlKSAocmVjcHRyIC0gY2twdF9z dGFydF9yZWNwdHIpKSAvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNv ZGUuYwppbmRleCAyODc0ZGMwNjEyLi5iOGJlMGM4M2VkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTIxNSwxMSArMjE1LDMxIEBAIERlY29k ZVhMb2dPcChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIg KmJ1ZikKIAkJCSAqIGNhbiByZXN0YXJ0IGZyb20gdGhlcmUuCiAJCQkgKi8KIAkJCWJyZWFr OworCQljYXNlIFhMT0dfUEFSQU1FVEVSX0NIQU5HRToKKwkJeworCQkJeGxfcGFyYW1ldGVy X2NoYW5nZSAqeGxyZWMgPQorCQkJCSh4bF9wYXJhbWV0ZXJfY2hhbmdlICopIFhMb2dSZWNH ZXREYXRhKGJ1Zi0+cmVjb3JkKTsKKworCQkJLyoKKwkJCSAqIElmIHdhbF9sZXZlbCBvbiBw cmltYXJ5IGlzIHJlZHVjZWQgdG8gbGVzcyB0aGFuIGxvZ2ljYWwsIHRoZW4gd2UKKwkJCSAq IHdhbnQgdG8gcHJldmVudCBleGlzdGluZyBsb2dpY2FsIHNsb3RzIGZyb20gYmVpbmcgdXNl ZC4KKwkJCSAqIEV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieSBnZXQgaW52YWxp ZGF0ZWQgd2hlbiB0aGlzIFdBTAorCQkJICogcmVjb3JkIGlzIHJlcGxheWVkOyBhbmQgZnVy dGhlciwgc2xvdCBjcmVhdGlvbiBmYWlscyB3aGVuIHRoZQorCQkJICogd2FsIGxldmVsIGlz IG5vdCBzdWZmaWNpZW50OyBidXQgYWxsIHRoZXNlIG9wZXJhdGlvbnMgYXJlIG5vdAorCQkJ ICogc3luY2hyb25pemVkLCBzbyBhIGxvZ2ljYWwgc2xvdCBtYXkgY3JlZXAgaW4gd2hpbGUg dGhlIHdhbF9sZXZlbAorCQkJICogaXMgYmVpbmcgcmVkdWNlZC4gSGVuY2UgdGhpcyBleHRy YSBjaGVjay4KKwkJCSAqLworCQkJaWYgKHhscmVjLT53YWxfbGV2ZWwgPCBXQUxfTEVWRUxf TE9HSUNBTCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dp Y2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgIgorCQkJCQkJCQkid2FsX2xldmVs ID49IGxvZ2ljYWwgb24gbWFzdGVyIikpKTsKKwkJCWJyZWFrOworCQl9CiAJCWNhc2UgWExP R19OT09QOgogCQljYXNlIFhMT0dfTkVYVE9JRDoKIAkJY2FzZSBYTE9HX1NXSVRDSDoKIAkJ Y2FzZSBYTE9HX0JBQ0tVUF9FTkQ6Ci0JCWNhc2UgWExPR19QQVJBTUVURVJfQ0hBTkdFOgog CQljYXNlIFhMT0dfUkVTVE9SRV9QT0lOVDoKIAkJY2FzZSBYTE9HX0ZQV19DSEFOR0U6CiAJ CWNhc2UgWExPR19GUElfRk9SX0hJTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbG9naWNhbC5jCmluZGV4IGQ2MWVmNGNmYWQuLmM3YWQ3MTVhYTIgMTAwNjQ0Ci0t 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 CWlmIChHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSgpIDwgV0FMX0xFVkVMX0xPR0lDQUwp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGlu ZyBvbiBzdGFuZGJ5IHJlcXVpcmVzICIKKwkJCQkJCQkid2FsX2xldmVsID49IGxvZ2ljYWwg b24gbWFzdGVyIikpKTsKKwl9CiB9CiAKIC8qCkBAIC0zMzAsNiArMzI5LDEyIEBAIENyZWF0 ZUluaXREZWNvZGluZ0NvbnRleHQoY29uc3QgY2hhciAqcGx1Z2luLAogCUxvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jb250ZXh0OwogCisJLyoK KwkgKiBPbiBzdGFuZGJ5LCB0aGlzIGNoZWNrIGlzIGFsc28gcmVxdWlyZWQgd2hpbGUgY3Jl YXRpbmcgdGhlIHNsb3QuIENoZWNrCisJICogdGhlIGNvbW1lbnRzIGluIHRoaXMgZnVuY3Rp b24uCisJICovCisJQ2hlY2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHMoKTsKKwogCS8q IHNob3J0ZXIgbGluZXMuLi4gKi8KIAlzbG90ID0gTXlSZXBsaWNhdGlvblNsb3Q7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNz LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCmlu ZGV4IDFkOTQwMGVhNjMuLjkwNjlmM2U1MGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwpAQCAtMjIzLDcgKzIyMyw3IEBAIHBn X2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZv LCBib29sIGNvbmZpcm0sIGJvb2wgYmluCiAJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkK IAkJZW5kX29mX3dhbCA9IEdldEZsdXNoUmVjUHRyKCk7CiAJZWxzZQotCQllbmRfb2Zfd2Fs ID0gR2V0WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQpOworCQllbmRfb2Zfd2Fs ID0gR2V0WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQsIGZhbHNlKTsKIAogCVJl cGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqbmFtZSksIHRydWUpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90LmMKaW5kZXggNmIwZDUwMTJlMC4uODQ2NzRhZTdiYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Nsb3QuYwpAQCAtMTA4OCwzNyArMTA4OCwyOCBAQCBSZXBsaWNhdGlvblNs b3RSZXNlcnZlV2FsKHZvaWQpCiAJCS8qCiAJCSAqIEZvciBsb2dpY2FsIHNsb3RzIGxvZyBh IHN0YW5kYnkgc25hcHNob3QgYW5kIHN0YXJ0IGxvZ2ljYWwgZGVjb2RpbmcKIAkJICogYXQg ZXhhY3RseSB0aGF0IHBvc2l0aW9uLiBUaGF0IGFsbG93cyB0aGUgc2xvdCB0byBzdGFydCB1 cCBtb3JlCi0JCSAqIHF1aWNrbHkuCisJCSAqIHF1aWNrbHkuIEJ1dCBvbiBhIHN0YW5kYnkg d2UgY2Fubm90IGRvIFdBTCB3cml0ZXMsIHNvIGp1c3QgdXNlIHRoZQorCQkgKiByZXBsYXkg cG9pbnRlcjsgZWZmZWN0aXZlbHksIGFuIGF0dGVtcHQgdG8gY3JlYXRlIGEgbG9naWNhbCBz bG90IG9uCisJCSAqIHN0YW5kYnkgd2lsbCBjYXVzZSBpdCB0byB3YWl0IGZvciBhbiB4bF9y dW5uaW5nX3hhY3QgcmVjb3JkIHRvIGJlCisJCSAqIGxvZ2dlZCBpbmRlcGVuZGVudGx5IG9u IHRoZSBwcmltYXJ5LCBzbyB0aGF0IGEgc25hcHNob3QgY2FuIGJlIGJ1aWx0CisJCSAqIHVz aW5nIHRoZSByZWNvcmQuCiAJCSAqCi0JCSAqIFRoYXQncyBub3QgbmVlZGVkIChvciBpbmRl ZWQgaGVscGZ1bCkgZm9yIHBoeXNpY2FsIHNsb3RzIGFzIHRoZXknbGwKLQkJICogc3RhcnQg cmVwbGF5IGF0IHRoZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50IGFueXdheS4gSW5zdGVhZCBy ZXR1cm4KLQkJICogdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0 aGF0IHNsaWdodGx5IGluY3JlYXNlcwotCQkgKiB0aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0 byByZXRyeSwgaXQncyB3aGVyZSBhIGJhc2UgYmFja3VwIGhhcyB0bwotCQkgKiBzdGFydCBy ZXBsYXkgYXQuCisJCSAqIE5vbmUgb2YgdGhpcyBpcyBuZWVkZWQgKG9yIGluZGVlZCBoZWxw ZnVsKSBmb3IgcGh5c2ljYWwgc2xvdHMgYXMKKwkJICogdGhleSdsbCBzdGFydCByZXBsYXkg YXQgdGhlIGxhc3QgbG9nZ2VkIGNoZWNrcG9pbnQgYW55d2F5LiBJbnN0ZWFkCisJCSAqIHJl dHVybiB0aGUgbG9jYXRpb24gb2YgdGhlIGxhc3QgcmVkbyBMU04uIFdoaWxlIHRoYXQgc2xp Z2h0bHkKKwkJICogaW5jcmVhc2VzIHRoZSBjaGFuY2UgdGhhdCB3ZSBoYXZlIHRvIHJldHJ5 LCBpdCdzIHdoZXJlIGEgYmFzZSBiYWNrdXAKKwkJICogaGFzIHRvIHN0YXJ0IHJlcGxheSBh dC4KIAkJICovCi0JCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgU2xvdElzTG9naWNh bChzbG90KSkKLQkJewotCQkJWExvZ1JlY1B0cglmbHVzaHB0cjsKLQotCQkJLyogc3RhcnQg YXQgY3VycmVudCBpbnNlcnQgcG9zaXRpb24gKi8KKwkJaWYgKFNsb3RJc1BoeXNpY2FsKHNs b3QpKQorCQkJcmVzdGFydF9sc24gPSBHZXRSZWRvUmVjUHRyKCk7CisJCWVsc2UgaWYgKFJl Y292ZXJ5SW5Qcm9ncmVzcygpKQorCQkJcmVzdGFydF9sc24gPSBHZXRYTG9nUmVwbGF5UmVj UHRyKE5VTEwsIHRydWUpOworCQllbHNlCiAJCQlyZXN0YXJ0X2xzbiA9IEdldFhMb2dJbnNl cnRSZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwotCQkJc2xv dC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOwotCQkJU3BpbkxvY2tSZWxlYXNl KCZzbG90LT5tdXRleCk7Ci0KLQkJCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBpbmZv cm1hdGlvbiB0byBzdGFydCAqLwotCQkJZmx1c2hwdHIgPSBMb2dTdGFuZGJ5U25hcHNob3Qo KTsKIAotCQkJLyogYW5kIG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8gZGlzayAqLwotCQkJ WExvZ0ZsdXNoKGZsdXNocHRyKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXJlc3RhcnRfbHNu ID0gR2V0UmVkb1JlY1B0cigpOwotCQkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7 Ci0JCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247Ci0JCQlTcGluTG9j a1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQkJfQorCQlTcGluTG9ja0FjcXVpcmUoJnNsb3Qt Pm11dGV4KTsKKwkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOworCQlT cGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKIAogCQkvKiBwcmV2ZW50IFdBTCByZW1v dmFsIGFzIGZhc3QgYXMgcG9zc2libGUgKi8KIAkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVS ZXF1aXJlZExTTigpOwpAQCAtMTEzNCw2ICsxMTI1LDE3IEBAIFJlcGxpY2F0aW9uU2xvdFJl c2VydmVXYWwodm9pZCkKIAkJaWYgKFhMb2dHZXRMYXN0UmVtb3ZlZFNlZ25vKCkgPCBzZWdu bykKIAkJCWJyZWFrOwogCX0KKworCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgU2xv dElzTG9naWNhbChzbG90KSkKKwl7CisJCVhMb2dSZWNQdHIJZmx1c2hwdHI7CisKKwkJLyog bWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHN0YXJ0ICovCisJCWZs dXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90KCk7CisKKwkJLyogYW5kIG1ha2Ugc3VyZSBp dCdzIGZzeW5jZWQgdG8gZGlzayAqLworCQlYTG9nRmx1c2goZmx1c2hwdHIpOworCX0KIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKaW5kZXggMzFlNzRkMzgz Mi4uNDhkMjQ0NDJlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKQEAg LTYzNiw3ICs2MzYsNyBAQCBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoUEdfRlVOQ1RJ T05fQVJHUykKIAlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQogCQltb3ZldG8gPSBNaW4o bW92ZXRvLCBHZXRGbHVzaFJlY1B0cigpKTsKIAllbHNlCi0JCW1vdmV0byA9IE1pbihtb3Zl dG8sIEdldFhMb2dSZXBsYXlSZWNQdHIoJlRoaXNUaW1lTGluZUlEKSk7CisJCW1vdmV0byA9 IE1pbihtb3ZldG8sIEdldFhMb2dSZXBsYXlSZWNQdHIoJlRoaXNUaW1lTGluZUlELCBmYWxz ZSkpOwogCiAJLyogQWNxdWlyZSB0aGUgc2xvdCBzbyB3ZSAib3duIiBpdCAqLwogCVJlcGxp Y2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdG5hbWUpLCB0cnVlKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCmluZGV4IDlhMmJjMzdmZDcuLjc0ZDNmYTBj ZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwpAQCAtNDA3LDcg KzQwNyw3IEBAIFdhbFJlY2VpdmVyTWFpbih2b2lkKQogCQkJZmlyc3Rfc3RyZWFtID0gZmFs c2U7CiAKIAkJCS8qIEluaXRpYWxpemUgTG9nc3RyZWFtUmVzdWx0IGFuZCBidWZmZXJzIGZv ciBwcm9jZXNzaW5nIG1lc3NhZ2VzICovCi0JCQlMb2dzdHJlYW1SZXN1bHQuV3JpdGUgPSBM b2dzdHJlYW1SZXN1bHQuRmx1c2ggPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQkJ TG9nc3RyZWFtUmVzdWx0LldyaXRlID0gTG9nc3RyZWFtUmVzdWx0LkZsdXNoID0gR2V0WExv Z1JlcGxheVJlY1B0cihOVUxMLCBmYWxzZSk7CiAJCQlpbml0U3RyaW5nSW5mbygmcmVwbHlf bWVzc2FnZSk7CiAJCQlpbml0U3RyaW5nSW5mbygmaW5jb21pbmdfbWVzc2FnZSk7CiAKQEAg LTEwNzIsNyArMTA3Miw3IEBAIFhMb2dXYWxSY3ZTZW5kUmVwbHkoYm9vbCBmb3JjZSwgYm9v bCByZXF1ZXN0UmVwbHkpCiAJLyogQ29uc3RydWN0IGEgbmV3IG1lc3NhZ2UgKi8KIAl3cml0 ZVB0ciA9IExvZ3N0cmVhbVJlc3VsdC5Xcml0ZTsKIAlmbHVzaFB0ciA9IExvZ3N0cmVhbVJl c3VsdC5GbHVzaDsKLQlhcHBseVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJ YXBwbHlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAogCXJlc2V0 U3RyaW5nSW5mbygmcmVwbHlfbWVzc2FnZSk7CiAJcHFfc2VuZGJ5dGUoJnJlcGx5X21lc3Nh Z2UsICdyJyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNl aXZlcmZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNz LmMKaW5kZXggNmYwYWNiZmRlZi4uZjI2NGI3MWY3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwpAQCAtMzcyLDcgKzM3Miw3IEBAIEdldFJl cGxpY2F0aW9uQXBwbHlEZWxheSh2b2lkKQogCXJlY2VpdmVQdHIgPSB3YWxyY3YtPmZsdXNo ZWRVcHRvOwogCVNwaW5Mb2NrUmVsZWFzZSgmd2FscmN2LT5tdXRleCk7CiAKLQlyZXBsYXlQ dHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCXJlcGxheVB0ciA9IEdldFhMb2dS ZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCiAJaWYgKHJlY2VpdmVQdHIgPT0gcmVwbGF5 UHRyKQogCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5k ZXggZDBlMjQ3YjEwNC4uZGEyNTMzZTFjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMKQEAgLTExNzQsNiArMTE3NCwxNiBAQCBTdGFydExvZ2ljYWxSZXBsaWNhdGlv bihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAJCWdvdF9TVE9QUElORyA9IHRydWU7CiAJ fQogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBp dCBtYXkgYmUgdGhhdCBUaGlzVGltZUxpbmVJRAorCSAqIGlzIG5vdCBzZXQgeWV0LgorCSAq IEluZGVlZCB3ZSBhcmUgbm90IGdvaW5nIHRocm91Z2ggSW5pdFhMT0dBY2Nlc3Mgb24gYSBT dGFuZGJ5IGFuZAorCSAqIGl0IG1heSBhbHNvIGJlIHRoYXQgSWRlbnRpZnlTeXN0ZW0gaGFz IG5vdCBiZWVuIGNhbGxlZCB5ZXQuCisJICogU28gbGV0J3MgZ2V0IGl0IHRocm91Z2ggR2V0 WExvZ1JlcGxheVJlY1B0cigpLgorCSAqLworCWlmIChUaGlzVGltZUxpbmVJRCA9PSAwKQor CQkodm9pZCkgR2V0WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQsIGZhbHNlKTsK KwogCS8qCiAJICogQ3JlYXRlIG91ciBkZWNvZGluZyBjb250ZXh0LCBtYWtpbmcgaXQgc3Rh cnQgYXQgdGhlIHByZXZpb3VzbHkgYWNrJ2VkCiAJICogcG9zaXRpb24uCkBAIC0xMzk4LDcg KzE0MDgsNyBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCWlmICghUmVj b3ZlcnlJblByb2dyZXNzKCkpCiAJCVJlY2VudEZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIo KTsKIAllbHNlCi0JCVJlY2VudEZsdXNoUHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxM KTsKKwkJUmVjZW50Rmx1c2hQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNl KTsKIAogCWZvciAoOzspCiAJewpAQCAtMTQzMiw3ICsxNDQyLDcgQEAgV2FsU25kV2FpdEZv cldhbChYTG9nUmVjUHRyIGxvYykKIAkJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJ CVJlY2VudEZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIoKTsKIAkJZWxzZQotCQkJUmVjZW50 Rmx1c2hQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQkJUmVjZW50Rmx1c2hQ dHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAogCQkvKgogCQkgKiBJ ZiBwb3N0bWFzdGVyIGFza2VkIHVzIHRvIHN0b3AsIGRvbid0IHdhaXQgYW55bW9yZS4KQEAg LTI4OTgsMTAgKzI5MDgsMTIgQEAgWExvZ1NlbmRMb2dpY2FsKHZvaWQpCiAJICogSWYgZmly c3QgdGltZSB0aHJvdWdoIGluIHRoaXMgc2Vzc2lvbiwgaW5pdGlhbGl6ZSBmbHVzaFB0ci4g IE90aGVyd2lzZSwKIAkgKiB3ZSBvbmx5IG5lZWQgdG8gdXBkYXRlIGZsdXNoUHRyIGlmIEVu ZFJlY1B0ciBpcyBwYXN0IGl0LgogCSAqLwotCWlmIChmbHVzaFB0ciA9PSBJbnZhbGlkWExv Z1JlY1B0cikKLQkJZmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cigpOwotCWVsc2UgaWYgKGxv Z2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKLQkJ Zmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cigpOworCWlmIChmbHVzaFB0ciA9PSBJbnZhbGlk WExvZ1JlY1B0ciB8fAorCQlsb2dpY2FsX2RlY29kaW5nX2N0eC0+cmVhZGVyLT5FbmRSZWNQ dHIgPj0gZmx1c2hQdHIpCisJeworCQlmbHVzaFB0ciA9IChhbV9jYXNjYWRpbmdfd2Fsc2Vu ZGVyID8KKwkJCQkJR2V0U3RhbmRieUZsdXNoUmVjUHRyKCkgOiBHZXRGbHVzaFJlY1B0cigp KTsKKwl9CiAKIAkvKiBJZiBFbmRSZWNQdHIgaXMgc3RpbGwgcGFzdCBvdXIgZmx1c2hQdHIs IGl0IG1lYW5zIHdlIGNhdWdodCB1cC4gKi8KIAlpZiAobG9naWNhbF9kZWNvZGluZ19jdHgt PnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQpAQCAtMjk5MCw3ICszMDAyLDcgQEAg R2V0U3RhbmRieUZsdXNoUmVjUHRyKHZvaWQpCiAJICovCiAKIAlyZWNlaXZlUHRyID0gR2V0 V2FsUmN2Rmx1c2hSZWNQdHIoTlVMTCwgJnJlY2VpdmVUTEkpOwotCXJlcGxheVB0ciA9IEdl dFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRMSSk7CisJcmVwbGF5UHRyID0gR2V0WExvZ1Jl cGxheVJlY1B0cigmcmVwbGF5VExJLCBmYWxzZSk7CiAKIAlUaGlzVGltZUxpbmVJRCA9IHJl cGxheVRMSTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKaW5kZXggY2NmY2Y0M2Q2Mi4uMGQ0Y2I0MDVlZSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZy5oCkBAIC0zMjQsNyArMzI0LDcgQEAgZXh0ZXJuIGJvb2wgSG90U3Rh bmRieUFjdGl2ZSh2b2lkKTsKIGV4dGVybiBib29sIEhvdFN0YW5kYnlBY3RpdmVJblJlcGxh eSh2b2lkKTsKIGV4dGVybiBib29sIFhMb2dJbnNlcnRBbGxvd2VkKHZvaWQpOwogZXh0ZXJu IHZvaWQgR2V0WExvZ1JlY2VpcHRUaW1lKFRpbWVzdGFtcFR6ICpydGltZSwgYm9vbCAqZnJv bVN0cmVhbSk7Ci1leHRlcm4gWExvZ1JlY1B0ciBHZXRYTG9nUmVwbGF5UmVjUHRyKFRpbWVM aW5lSUQgKnJlcGxheVRMSSk7CitleHRlcm4gWExvZ1JlY1B0ciBHZXRYTG9nUmVwbGF5UmVj UHRyKFRpbWVMaW5lSUQgKnJlcGxheVRMSSwgYm9vbCBhdm9pZF9oZWFkZXIpOwogZXh0ZXJu IFhMb2dSZWNQdHIgR2V0WExvZ0luc2VydFJlY1B0cih2b2lkKTsKIGV4dGVybiBYTG9nUmVj UHRyIEdldFhMb2dXcml0ZVJlY1B0cih2b2lkKTsKIGV4dGVybiBSZWNvdmVyeVBhdXNlU3Rh dGUgR2V0UmVjb3ZlcnlQYXVzZVN0YXRlKHZvaWQpOwpAQCAtMzQxLDYgKzM0MSw3IEBAIGV4 dGVybiBTaXplIFhMT0dTaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBYTE9HU2htZW1J bml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwWExPRyh2b2lkKTsKIGV4dGVybiB2 b2lkIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpOworZXh0ZXJuIFdhbExl dmVsIEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgU3Rh cnR1cFhMT0codm9pZCk7CiBleHRlcm4gdm9pZCBTaHV0ZG93blhMT0coaW50IGNvZGUsIERh dHVtIGFyZyk7CiBleHRlcm4gdm9pZCBJbml0WExPR0FjY2Vzcyh2b2lkKTsKLS0gCjIuMTgu NAoK --------------38EAF676C6D0AD5AA04F35B3 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v21-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v21-0002-Handle-logical-slot-conflicts-on-standby.patch" RnJvbSAwNGRlMTc1MzVjNzRiNDk0ZDcwNTZmZWM3NTkyZmMyZTRlZjFiMDFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAyNiBKdWwgMjAyMSAwODozOTowMCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjIxIDIvNV0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLAppbnZhbGlkYXRlIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhp bmcgaWYgd2FsX2xldmVsIG9uIG1hc3RlcgppcyByZWR1Y2VkIHRvIGJlbG93IGxvZ2ljYWwg YW5kIHRoZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0YW5kYnkuIEludHJv ZHVjZSBhIG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90CmNvbmZsaWN0IHJl Y292ZXJ5LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2dldF9hY3Rpdml0eSBmaWVsZDoK Y29uZmxfbG9naWNhbHNsb3QuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVy IHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1C eTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJp emlvIGRlIFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAg ICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4 bG9nLmMgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aF94bG9nLmMgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYyAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0eGxvZy5jICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd4bG9nLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAxMyArKwogc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3Bnc3RhdC5jICAgICAgICAgICAgICAgfCAgMjAgKysKIC4uLi9yZXBsaWNhdGlv bi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwgMjA5ICsrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwg ICA4ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAgICAgICAgICB8 ICAgNCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAg fCAgIDMgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAg IHwgIDExICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAg ICAgfCAgMjIgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAgICAg ICAgICB8ICAxNiArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAg ICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggICAgICAg ICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oICAgICAg ICAgICAgICAgICB8ICAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQgICAgICAgICAgIHwgICAzICstCiAyMyBmaWxlcyBjaGFuZ2VkLCAzNTEgaW5zZXJ0aW9u cygrKSwgMTUgZGVsZXRpb25zKC0pCiAgIDQuMCUgc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv CiAgIDQuNyUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgIDUuMSUgc3JjL2JhY2tl bmQvYWNjZXNzLwogICA0LjMlIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvCiAgIDMuNSUgc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1Mi4zJSBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi8KICAgNS42JSBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy8KICAgNy4xJSBzcmMv YmFja2VuZC90Y29wLwogICAzLjUlIHNyYy9iYWNrZW5kLwogICA2LjMlIHNyYy9pbmNsdWRl LwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDc0YTU4YTkxNmMuLjYwNzJlZWU3M2UgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDAzNCw2ICs0MDM0LDE2IEBAIFNFTEVDVCBwaWQs IHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hF UkUgd2FpdF9ldmVudCBpCiAgICAgICAgZGVhZGxvY2tzCiAgICAgICA8L3BhcmE+PC9lbnRy eT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPmNvbmZsX2xvZ2ljYWxzbG90PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVt YmVyIG9mIHF1ZXJpZXMgaW4gdGhpcyBkYXRhYmFzZSB0aGF0IGhhdmUgYmVlbiBjYW5jZWxl ZCBkdWUgdG8KKyAgICAgICBsb2dpY2FsIHNsb3RzCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggNDZhZWU2ZjJhOS4uNTk2M2U2 MzlkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xOTUsNyArMTk1 LDggQEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAK IAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsK IAotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVz dFJlbW92ZWRYaWQsIHJub2RlKTsKKwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3QoeGxkYXRhLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4bGRhdGEtPm9u Q2F0YWxvZ1RhYmxlLCBybm9kZSk7CiAJfQogCiAJaWYgKFhMb2dSZWFkQnVmZmVyRm9yUmVk byhyZWNvcmQsIDAsICZidWZmZXIpID09IEJMS19ORUVEU19SRURPKQpAQCAtMzk1LDYgKzM5 Niw3IEBAIGdpc3RSZWRvUGFnZVJldXNlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAq LwogCWlmIChJbkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90RnVsbFhpZCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCisJCQkJCQkJCQkJ CQkgICB4bHJlYy0+b25DYXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bm9k ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMjc0NzVm Y2JkNi4uZTVjNjEyNDQwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaF94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMK QEAgLTEwMDIsNyArMTAwMiw4IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCVJlbEZpbGVOb2RlIHJub2RlOwogCiAJCVhMb2dSZWNH ZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybm9kZSwgTlVMTCwgTlVMTCk7Ci0JCVJlc29sdmVS ZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+bGF0ZXN0UmVtb3ZlZFhpZCwg cm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEt PmxhdGVzdFJlbW92ZWRYaWQsCisJCQkJCQkJCQkJCXhsZGF0YS0+b25DYXRhbG9nVGFibGUs IHJub2RlKTsKIAl9CiAKIAlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRl ZChyZWNvcmQsIDAsIFJCTV9OT1JNQUwsIHRydWUsICZidWZmZXIpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYwppbmRleCA0MDE5YTIxMjJlLi43NWNhNWY3OWY0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtODQxOSw3ICs4NDE5LDggQEAgaGVhcF94bG9nX3By dW5lKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqIG5vIHF1ZXJpZXMgcnVubmluZyBm b3Igd2hpY2ggdGhlIHJlbW92ZWQgdHVwbGVzIGFyZSBzdGlsbCB2aXNpYmxlLgogCSAqLwog CWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLCBybm9kZSk7CisJCVJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJ CQkJCQl4bHJlYy0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsKIAogCS8qCiAJICogSWYgd2Ug aGF2ZSBhIGZ1bGwtcGFnZSBpbWFnZSwgcmVzdG9yZSBpdCAodXNpbmcgYSBjbGVhbnVwIGxv Y2spIGFuZApAQCAtODU4Nyw3ICs4NTg4LDkgQEAgaGVhcF94bG9nX3Zpc2libGUoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJICogcmF0aGVyIHRoYW4ga2lsbGluZyB0aGUgdHJhbnNh Y3Rpb24gb3V0cmlnaHQuCiAJICovCiAJaWYgKEluSG90U3RhbmRieSkKLQkJUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPmN1dG9mZl94aWQsIHJub2RlKTsK KwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPmN1dG9mZl94 aWQsCisJCQkJCQkJCQkJCXhscmVjLT5vbkNhdGFsb2dUYWJsZSwKKwkJCQkJCQkJCQkJcm5v ZGUpOwogCiAJLyoKIAkgKiBSZWFkIHRoZSBoZWFwIHBhZ2UsIGlmIGl0IHN0aWxsIGV4aXN0 cy4gSWYgdGhlIGhlYXAgZmlsZSBoYXMgZHJvcHBlZCBvcgpAQCAtODcyNCw3ICs4NzI3LDgg QEAgaGVhcF94bG9nX2ZyZWV6ZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlU cmFuc2FjdGlvbklkUmV0cmVhdChsYXRlc3RSZW1vdmVkWGlkKTsKIAogCQlYTG9nUmVjR2V0 QmxvY2tUYWcocmVjb3JkLCAwLCAmcm5vZGUsIE5VTEwsIE5VTEwpOwotCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVkWGlkLCBybm9kZSk7CisJ CVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KGxhdGVzdFJlbW92ZWRYaWQs CisJCQkJCQkJCQkJCXhscmVjLT5vbkNhdGFsb2dUYWJsZSwgcm5vZGUpOwogCX0KIAogCWlm IChYTG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAwLCAmYnVmZmVyKSA9PSBCTEtfTkVF RFNfUkVETykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKaW5kZXggNzg2YzA4 YzBjZS4uNDFiN2VjOGUyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnR4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMK QEAgLTY2OCw3ICs2NjgsOCBAQCBidHJlZV94bG9nX2RlbGV0ZShYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcm5vZGUsIE5V TEwsIE5VTEwpOwogCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhs cmVjLT5sYXRlc3RSZW1vdmVkWGlkLCBybm9kZSk7CisJCVJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFNuYXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4 bHJlYy0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsKIAl9CiAKIAkvKgpAQCAtMTAwNiw2ICsx MDA3LDcgQEAgYnRyZWVfeGxvZ19yZXVzZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCiAJaWYgKEluSG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRo U25hcHNob3RGdWxsWGlkKHhscmVjLT5sYXRlc3RSZW1vdmVkRnVsbFhpZCwKKwkJCQkJCQkJ CQkJCSAgIHhscmVjLT5vbkNhdGFsb2dUYWJsZSwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5u b2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4 bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwppbmRleCAzZGZk MmFhMzE3Li5hZGQ0ZGE0ZTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cu YwpAQCAtODgxLDYgKzg4MSw3IEBAIHNwZ1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCkKIAogCQkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJm5v ZGUsIE5VTEwsIE5VTEwpOwogCQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3QoeGxkYXRhLT5uZXdlc3RSZWRpcmVjdFhpZCwKKwkJCQkJCQkJCQkJCXhsZGF0YS0+b25D YXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQlub2RlKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYwppbmRleCAzNDc5NDAyMjcyLi5jMzc2ZWI5MTlmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC0xMDQyOCw2ICsxMDQyOCwxOSBAQCB4bG9n X3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCS8qIFVwZGF0ZSBvdXIgY29weSBv ZiB0aGUgcGFyYW1ldGVycyBpbiBwZ19jb250cm9sICovCiAJCW1lbWNweSgmeGxyZWMsIFhM b2dSZWNHZXREYXRhKHJlY29yZCksIHNpemVvZih4bF9wYXJhbWV0ZXJfY2hhbmdlKSk7CiAK KwkJLyoKKwkJICogSW52YWxpZGF0ZSBsb2dpY2FsIHNsb3RzIGlmIHdlIGFyZSBpbiBob3Qg c3RhbmRieSBhbmQgdGhlIHByaW1hcnkgZG9lcyBub3QKKwkJICogaGF2ZSBhIFdBTCBsZXZl bCBzdWZmaWNpZW50IGZvciBsb2dpY2FsIGRlY29kaW5nLiBObyBuZWVkIHRvIHNlYXJjaAor CQkgKiBmb3IgcG90ZW50aWFsbHkgY29uZmxpY3RpbmcgbG9naWNhbGx5IHNsb3RzIGlmIHN0 YW5kYnkgaXMgcnVubmluZworCQkgKiB3aXRoIHdhbF9sZXZlbCBsb3dlciB0aGFuIGxvZ2lj YWwsIGJlY2F1c2UgaW4gdGhhdCBjYXNlLCB3ZSB3b3VsZAorCQkgKiBoYXZlIGVpdGhlciBk aXNhbGxvd2VkIGNyZWF0aW9uIG9mIGxvZ2ljYWwgc2xvdHMgb3IgaW52YWxpZGF0ZWQgZXhp c3RpbmcKKwkJICogb25lcy4KKwkJICovCisJCWlmIChJblJlY292ZXJ5ICYmIEluSG90U3Rh bmRieSAmJgorCQkJeGxyZWMud2FsX2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwgJiYKKwkJ CXdhbF9sZXZlbCA+PSBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJCUludmFsaWRhdGVDb25mbGlj dGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKEludmFsaWRPaWQsSW52YWxpZFRyYW5zYWN0 aW9uSWQpOworCiAJCUxXTG9ja0FjcXVpcmUoQ29udHJvbEZpbGVMb2NrLCBMV19FWENMVVNJ VkUpOwogCQlDb250cm9sRmlsZS0+TWF4Q29ubmVjdGlvbnMgPSB4bHJlYy5NYXhDb25uZWN0 aW9uczsKIAkJQ29udHJvbEZpbGUtPm1heF93b3JrZXJfcHJvY2Vzc2VzID0geGxyZWMubWF4 X3dvcmtlcl9wcm9jZXNzZXM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwK aW5kZXggNTVmNmUzNzExZC4uY2QxZmM4OGQxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbApAQCAtMTAyMCw3ICsxMDIwLDggQEAgQ1JFQVRFIFZJRVcgcGdfc3Rh dF9kYXRhYmFzZV9jb25mbGljdHMgQVMKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X2xvY2soRC5vaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgICAgICAgICBwZ19zdGF0 X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdChELm9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAg ICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4oRC5vaWQpIEFT IGNvbmZsX2J1ZmZlcnBpbiwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X3N0YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrCisgICAgICAgICAg ICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKEQub2lkKSBBUyBj b25mbF9kZWFkbG9jaywKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xv Z2ljYWxzbG90KEQub2lkKSBBUyBjb25mbF9sb2dpY2Fsc2xvdAogICAgIEZST00gcGdfZGF0 YWJhc2UgRDsKIAogQ1JFQVRFIFZJRVcgcGdfc3RhdF91c2VyX2Z1bmN0aW9ucyBBUwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcGdzdGF0LmMKaW5kZXggMTE3MDJmMmE4MC4uNTU2YTUxNTYwOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jCkBAIC0xODYzLDYgKzE4NjMsMjIgQEAgcGdzdGF0 X3JlcG9ydF9yZXBsc2xvdF9kcm9wKGNvbnN0IGNoYXIgKnNsb3RuYW1lKQogCXBnc3RhdF9z ZW5kKCZtc2csIHNpemVvZihQZ1N0YXRfTXNnUmVwbFNsb3QpKTsKIH0KIAorLyogLS0tLS0t LS0tLQorICogcGdzdGF0X3JlcG9ydF9yZXBsc2xvdF9jb25mbGljdCgpCisgKiBUZWxsIHRo ZSBjb2xsZWN0b3IgYWJvdXQgYSBsb2dpY2FsIHNsb3QgYmVpbmcgY29uZmxpY3RpbmcKKyAq IHdpdGggcmVjb3ZlcnkuCisgKiAtLS0tLS0tLS0tCisgKi8KK3ZvaWQKK3Bnc3RhdF9yZXBv cnRfcmVwbHNsb3RfY29uZmxpY3QoT2lkIGRib2lkKQoreworCVBnU3RhdF9Nc2dSZWNvdmVy eUNvbmZsaWN0IG1zZzsKKwlwZ3N0YXRfc2V0aGVhZGVyKCZtc2cubV9oZHIsIFBHU1RBVF9N VFlQRV9SRUNPVkVSWUNPTkZMSUNUKTsKKwltc2cubV9kYXRhYmFzZWlkID0gZGJvaWQ7CisJ bXNnLm1fcmVhc29uID0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDsK KwlwZ3N0YXRfc2VuZCgmbXNnLCBzaXplb2YobXNnKSk7Cit9CisKIC8qIC0tLS0tLS0tLS0K ICAqIHBnc3RhdF9waW5nKCkgLQogICoKQEAgLTM0ODksNiArMzUwNSw3IEBAIHJlc2V0X2Ri ZW50cnlfY291bnRlcnMoUGdTdGF0X1N0YXREQkVudHJ5ICpkYmVudHJ5KQogCWRiZW50cnkt Pm5fY29uZmxpY3RfdGFibGVzcGFjZSA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGljdF9sb2Nr ID0gMDsKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X3NuYXBzaG90ID0gMDsKKwlkYmVudHJ5LT5u X2NvbmZsaWN0X2xvZ2ljYWxzbG90ID0gMDsKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X2J1ZmZl cnBpbiA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrID0gMDsK IAlkYmVudHJ5LT5uX3RlbXBfZmlsZXMgPSAwOwpAQCAtNTQyNSw2ICs1NDQyLDkgQEAgcGdz dGF0X3JlY3ZfcmVjb3Zlcnljb25mbGljdChQZ1N0YXRfTXNnUmVjb3ZlcnlDb25mbGljdCAq bXNnLCBpbnQgbGVuKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNI T1Q6CiAJCQlkYmVudHJ5LT5uX2NvbmZsaWN0X3NuYXBzaG90Kys7CiAJCQlicmVhazsKKwkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZGJlbnRy eS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU46CiAJCQlkYmVudHJ5LT5uX2NvbmZsaWN0 X2J1ZmZlcnBpbisrOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwppbmRleCAxZjM4YzViMzNlLi4xZDk0MDBlYTYz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1 bmNzLmMKQEAgLTI0MSwxMSArMjQxLDE0IEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdl c19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmlu CiAKIAkJLyoKIAkJICogQWZ0ZXIgdGhlIHNhbml0eSBjaGVja3MgaW4gQ3JlYXRlRGVjb2Rp bmdDb250ZXh0LCBtYWtlIHN1cmUgdGhlCi0JCSAqIHJlc3RhcnRfbHNuIGlzIHZhbGlkLiAg QXZvaWQgImNhbm5vdCBnZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0aGlzCisJCSAqIHJlc3Rh cnRfbHNuIGlzIHZhbGlkIG9yIGJvdGggeG1pbiBhbmQgY2F0YWxvZ194bWluIGFyZSB2YWxp ZC4KKwkJICogQXZvaWQgImNhbm5vdCBnZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0aGlzCiAJ CSAqIGVycm1zZyBiZWNhdXNlIHRoYXQnZCBiZSBjb25mdXNpbmdseSBhbWJpZ3VvdXMgYWJv dXQgbm8gY2hhbmdlcwogCQkgKiBiZWluZyBhdmFpbGFibGUuCiAJCSAqLwotCQlpZiAoWExv Z1JlY1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikp CisJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnJl c3RhcnRfbHNuKQorCQkJfHwgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9u U2xvdC0+ZGF0YS54bWluKQorCQkJCSYmICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxp Y2F0aW9uU2xvdC0+ZGF0YS5jYXRhbG9nX3htaW4pKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAogCQkJCQkgZXJybXNnKCJjYW4gbm8gbG9uZ2VyIGdldCBjaGFuZ2VzIGZyb20gcmVwbGlj YXRpb24gc2xvdCBcIiVzXCIiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IDMzZTlh Y2FiNGEuLjZiMGQ1MDEyZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTEzMzgs NiArMTMzOCwyMTUgQEAgcmVzdGFydDoKIAlyZXR1cm4gaW52YWxpZGF0ZWQ7CiB9CiAKKy8q CisgKiBIZWxwZXIgZm9yIEludmFsaWRhdGVDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlv blNsb3QgLS0gYWNxdWlyZXMgdGhlIGdpdmVuIHNsb3QKKyAqIGFuZCBtYXJrIGl0IGludmFs aWQsIGlmIG5lY2Vzc2FyeSBhbmQgcG9zc2libGUuCisgKgorICogUmV0dXJucyB3aGV0aGVy IFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrIHdhcyByZWxlYXNlZCBpbiB0aGUgaW50ZXJp bSAoYW5kCisgKiBpbiB0aGF0IGNhc2Ugd2UncmUgbm90IGhvbGRpbmcgdGhlIGxvY2sgYXQg cmV0dXJuLCBvdGhlcndpc2Ugd2UgYXJlKS4KKyAqCisgKiBUaGlzIGlzIGluaGVyZW50bHkg cmFjeSwgYmVjYXVzZSB3ZSByZWxlYXNlIHRoZSBMV0xvY2sKKyAqIGZvciBzeXNjYWxscywg c28gY2FsbGVyIG11c3QgcmVzdGFydCBpZiB3ZSByZXR1cm4gdHJ1ZS4KKyAqLworc3RhdGlj IGJvb2wKK0ludmFsaWRhdGVQb3NzaWJseUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9u U2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWludAkJ bGFzdF9zaWduYWxlZF9waWQgPSAwOworCWJvb2wJcmVsZWFzZWRfbG9jayA9IGZhbHNlOwor CisJZm9yICg7OykKKwl7CisJCVRyYW5zYWN0aW9uSWQgc2xvdF94bWluOworCQlUcmFuc2Fj dGlvbklkIHNsb3RfY2F0YWxvZ194bWluOworCQlOYW1lRGF0YQlzbG90bmFtZTsKKwkJaW50 CQkJYWN0aXZlX3BpZCA9IDA7CisKKwkJQXNzZXJ0KExXTG9ja0hlbGRCeU1lSW5Nb2RlKFJl cGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpKTsKKworCQlpZiAoIXMtPmlu X3VzZSkKKwkJeworCQkJaWYgKHJlbGVhc2VkX2xvY2spCisJCQkJTFdMb2NrUmVsZWFzZShS ZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7CisJCQlicmVhazsKKwkJfQorCisJCS8qCisJ CSAqIENoZWNrIGlmIHRoZSBzbG90IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkLiBJZiBpdCBu ZWVkcyB0byBiZQorCQkgKiBpbnZhbGlkYXRlZCwgYW5kIGlzIG5vdCBjdXJyZW50bHkgYWNx dWlyZWQsIGFjcXVpcmUgaXQgYW5kIG1hcmsgaXQKKwkJICogYXMgaGF2aW5nIGJlZW4gaW52 YWxpZGF0ZWQuIFdlIGRvIHRoaXMgd2l0aCB0aGUgc3BpbmxvY2sgaGVsZCB0bworCQkgKiBh dm9pZCByYWNlIGNvbmRpdGlvbnMgLS0gZm9yIGV4YW1wbGUgdGhlIHhtaW4ocykgY291bGQg bW92ZSBmb3J3YXJkCisJCSAqICwgb3IgdGhlIHNsb3QgY291bGQgYmUgZHJvcHBlZC4KKwkJ ICovCisJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOworCisJCXNsb3RfeG1pbiA9IHMt PmRhdGEueG1pbjsKKwkJc2xvdF9jYXRhbG9nX3htaW4gPSBzLT5kYXRhLmNhdGFsb2dfeG1p bjsKKworCQkvKgorCQkgKiBJZiB0aGUgc2xvdCBpcyBhbHJlYWR5IGludmFsaWQgb3IgaXMg bm90IGNvbmZsaWN0aW5nLCB3ZSBkb24ndCBuZWVkIHRvCisJCSAqIGRvIGFueXRoaW5nLgor CQkgKi8KKworCQkvKiBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkICovCisJCWlmICgoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKHNsb3RfeG1pbikgJiYgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHNsb3RfY2F0YWxvZ194bWluKSkKKwkJCXx8CisJCS8qCisJCSAqIHdlIGFyZSBub3QgZm9y Y2luZyBmb3IgaW52YWxpZGF0aW9uIGJlY2F1c2UgdGhlIHhpZCBpcyB2YWxpZAorCQkgKiBh bmQgdGhpcyBpcyBhIG5vbiBjb25mbGljdGluZyBzbG90CisJCSAqLworCQkJKFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHhpZCkgJiYgISgKKwkJCQkoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xv dF94bWluKSAmJiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X3htaW4sIHhp ZCkpCisJCQkJfHwKKwkJCQkoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF9jYXRhbG9nX3ht aW4pICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNsb3RfY2F0YWxvZ194bWlu LCB4aWQpKQorCQkJCSkpCisJCQkpCisJCXsKKwkJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0 ZXgpOworCQkJaWYgKHJlbGVhc2VkX2xvY2spCisJCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNh dGlvblNsb3RDb250cm9sTG9jayk7CisJCQlicmVhazsKKwkJfQorCisJCXNsb3RuYW1lID0g cy0+ZGF0YS5uYW1lOworCQlhY3RpdmVfcGlkID0gcy0+YWN0aXZlX3BpZDsKKworCQkvKgor CQkgKiBJZiB0aGUgc2xvdCBjYW4gYmUgYWNxdWlyZWQsIGRvIHNvIGFuZCBtYXJrIGl0IGlu dmFsaWRhdGVkCisJCSAqIGltbWVkaWF0ZWx5LiAgT3RoZXJ3aXNlIHdlJ2xsIHNpZ25hbCB0 aGUgb3duaW5nIHByb2Nlc3MsIGJlbG93LCBhbmQKKwkJICogcmV0cnkuCisJCSAqLworCQlp ZiAoYWN0aXZlX3BpZCA9PSAwKQorCQl7CisJCQlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7CisJ CQlzLT5hY3RpdmVfcGlkID0gTXlQcm9jUGlkOworCQkJcy0+ZGF0YS54bWluID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CisJCQlzLT5kYXRhLmNhdGFsb2dfeG1pbiA9IEludmFsaWRUcmFu c2FjdGlvbklkOworCQl9CisKKwkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CisKKwkJ aWYgKGFjdGl2ZV9waWQgIT0gMCkKKwkJeworCQkJLyoKKwkJCSAqIFByZXBhcmUgdGhlIHNs ZWVwIG9uIHRoZSBzbG90J3MgY29uZGl0aW9uIHZhcmlhYmxlIGJlZm9yZQorCQkJICogcmVs ZWFzaW5nIHRoZSBsb2NrLCB0byBjbG9zZSBhIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uIGlm IHRoZQorCQkJICogc2xvdCBpcyByZWxlYXNlZCBiZWZvcmUgdGhlIHNsZWVwIGJlbG93Lgor CQkJICovCisKKwkJCUNvbmRpdGlvblZhcmlhYmxlUHJlcGFyZVRvU2xlZXAoJnMtPmFjdGl2 ZV9jdik7CisKKwkJCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2sp OworCQkJcmVsZWFzZWRfbG9jayA9IHRydWU7CisKKwkJCS8qCisJCQkgKiBTaWduYWwgdG8g dGVybWluYXRlIHRoZSBwcm9jZXNzIHRoYXQgb3ducyB0aGUgc2xvdCwgaWYgd2UKKwkJCSAq IGhhdmVuJ3QgYWxyZWFkeSBzaWduYWxsZWQgaXQuICAoQXZvaWRhbmNlIG9mIHJlcGVhdGVk CisJCQkgKiBzaWduYWxsaW5nIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgdGhlcmUgdG8gYmUg YSBsb29wIGluIHRoaXMKKwkJCSAqIHJvdXRpbmU7IG90aGVyd2lzZSB3ZSBjb3VsZCByZWx5 IG9uIGNhbGxlcidzIHJlc3RhcnQgbG9vcC4pCisJCQkgKgorCQkJICogVGhlcmUgaXMgdGhl IHJhY2UgY29uZGl0aW9uIHRoYXQgb3RoZXIgcHJvY2VzcyBtYXkgb3duIHRoZSBzbG90CisJ CQkgKiBhZnRlciBpdHMgY3VycmVudCBvd25lciBwcm9jZXNzIGlzIHRlcm1pbmF0ZWQgYW5k IGJlZm9yZSB0aGlzCisJCQkgKiBwcm9jZXNzIG93bnMgaXQuIFRvIGhhbmRsZSB0aGF0LCB3 ZSBzaWduYWwgb25seSBpZiB0aGUgUElEIG9mCisJCQkgKiB0aGUgb3duaW5nIHByb2Nlc3Mg aGFzIGNoYW5nZWQgZnJvbSB0aGUgcHJldmlvdXMgdGltZS4gKFRoaXMKKwkJCSAqIGxvZ2lj IGFzc3VtZXMgdGhhdCB0aGUgc2FtZSBQSUQgaXMgbm90IHJldXNlZCB2ZXJ5IHF1aWNrbHku KQorCQkJICovCisJCQlpZiAobGFzdF9zaWduYWxlZF9waWQgIT0gYWN0aXZlX3BpZCkKKwkJ CXsKKwkJCQllcmVwb3J0KExPRywKKwkJCQkJCShlcnJtc2coInRlcm1pbmF0aW5nIHByb2Nl c3MgJWQgYmVjYXVzZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBjb25mbGljdHMgd2l0aCBy ZWNvdmVyeSIsCisJCQkJCQkJCWFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUpKSkpOwor CisJCQkJKHZvaWQpIGtpbGwoYWN0aXZlX3BpZCwgU0lHVEVSTSk7CisJCQkJbGFzdF9zaWdu YWxlZF9waWQgPSBhY3RpdmVfcGlkOworCQkJfQorCisJCQkvKiBXYWl0IHVudGlsIHRoZSBz bG90IGlzIHJlbGVhc2VkLiAqLworCQkJQ29uZGl0aW9uVmFyaWFibGVTbGVlcCgmcy0+YWN0 aXZlX2N2LAorCQkJCQkJCQkJV0FJVF9FVkVOVF9SRVBMSUNBVElPTl9TTE9UX0RST1ApOwor CisJCQkvKgorCQkJICogUmUtYWNxdWlyZSBsb2NrIGFuZCBzdGFydCBvdmVyOyB3ZSBleHBl Y3QgdG8gaW52YWxpZGF0ZSB0aGUKKwkJCSAqIHNsb3QgbmV4dCB0aW1lICh1bmxlc3MgYW5v dGhlciBwcm9jZXNzIGFjcXVpcmVzIHRoZSBzbG90IGluIHRoZQorCQkJICogbWVhbnRpbWUp LgorCQkJICovCisJCQlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2Nr LCBMV19TSEFSRUQpOworCQkJY29udGludWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgor CQkJICogV2UgaG9sZCB0aGUgc2xvdCBub3cgYW5kIGhhdmUgYWxyZWFkeSBpbnZhbGlkYXRl ZCBpdDsgZmx1c2ggaXQKKwkJCSAqIHRvIGVuc3VyZSB0aGF0IHN0YXRlIHBlcnNpc3RzLgor CQkJICoKKwkJCSAqIERvbid0IHdhbnQgdG8gaG9sZCBSZXBsaWNhdGlvblNsb3RDb250cm9s TG9jayBhY3Jvc3MgZmlsZQorCQkJICogc3lzdGVtIG9wZXJhdGlvbnMsIHNvIHJlbGVhc2Ug aXQgbm93IGJ1dCBiZSBzdXJlIHRvIHRlbGwgY2FsbGVyCisJCQkgKiB0byByZXN0YXJ0IGZy b20gc2NyYXRjaC4KKwkJCSAqLworCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RD b250cm9sTG9jayk7CisJCQlyZWxlYXNlZF9sb2NrID0gdHJ1ZTsKKworCQkJLyogTWFrZSBz dXJlIHRoZSBpbnZhbGlkYXRlZCBzdGF0ZSBwZXJzaXN0cyBhY3Jvc3Mgc2VydmVyIHJlc3Rh cnQgKi8KKwkJCVJlcGxpY2F0aW9uU2xvdE1hcmtEaXJ0eSgpOworCQkJUmVwbGljYXRpb25T bG90U2F2ZSgpOworCQkJUmVwbGljYXRpb25TbG90UmVsZWFzZSgpOworCQkJcGdzdGF0X3Jl cG9ydF9yZXBsc2xvdF9jb25mbGljdChzLT5kYXRhLmRhdGFiYXNlKTsKKworCQkJZXJlcG9y dChMT0csCisJCQkJCShlcnJtc2coImludmFsaWRhdGluZyBzbG90IFwiJXNcIiBiZWNhdXNl IGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgTmFtZVN0cihzbG90bmFtZSkpKSk7CisK KwkJCS8qIGRvbmUgd2l0aCB0aGlzIHNsb3QgZm9yIG5vdyAqLworCQkJYnJlYWs7CisJCX0K Kwl9CisKKwlBc3NlcnQoIXJlbGVhc2VkX2xvY2sgPT0gTFdMb2NrSGVsZEJ5TWVJbk1vZGUo UmVwbGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCkpOworCisJcmV0dXJuIHJl bGVhc2VkX2xvY2s7Cit9CisKKy8qCisgKiBSZXNvbHZlIHJlY292ZXJ5IGNvbmZsaWN0cyB3 aXRoIGxvZ2ljYWwgc2xvdHMuCisgKgorICogV2hlbiB4aWQgaXMgdmFsaWQsIGl0IG1lYW5z IHRoYXQgd2UgYXJlIGFib3V0IHRvIHJlbW92ZSByb3dzIG9sZGVyIHRoYW4geGlkLgorICog VGhlcmVmb3JlIHdlIG5lZWQgdG8gaW52YWxpZGF0ZSBzbG90cyB0aGF0IGRlcGVuZCBvbiBz ZWVpbmcgdGhvc2Ugcm93cy4KKyAqIFdoZW4geGlkIGlzIGludmFsaWQsIGludmFsaWRhdGUg YWxsIGxvZ2ljYWwgc2xvdHMuIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiB0aGUKKyAqIG1hc3Rl ciB3YWxfbGV2ZWwgaXMgc2V0IGJhY2sgdG8gcmVwbGljYSwgc28gZXhpc3RpbmcgbG9naWNh bCBzbG90cyBuZWVkIHRvCisgKiBiZSBpbnZhbGlkYXRlZC4KKyAqLwordm9pZAorSW52YWxp ZGF0ZUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMoT2lkIGRib2lkLCBUcmFu c2FjdGlvbklkIHhpZCkKK3sKKworCUFzc2VydChtYXhfcmVwbGljYXRpb25fc2xvdHMgPj0g MCk7CisKKwlpZiAobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID09IDApCisJCXJldHVybjsKK3Jl c3RhcnQ6CisJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdf U0hBUkVEKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IG1heF9yZXBsaWNhdGlvbl9zbG90czsg aSsrKQorCXsKKwkJUmVwbGljYXRpb25TbG90ICpzID0gJlJlcGxpY2F0aW9uU2xvdEN0bC0+ cmVwbGljYXRpb25fc2xvdHNbaV07CisKKwkJaWYgKCFzLT5pbl91c2UpCisJCQljb250aW51 ZTsKKworCQkvKiBXZSBhcmUgb25seSBkZWFsaW5nIHdpdGggKmxvZ2ljYWwqIHNsb3QgY29u ZmxpY3RzLiAqLworCQlpZiAoIVNsb3RJc0xvZ2ljYWwocykpCisJCQljb250aW51ZTsKKwor CQkvKiBub3Qgb3VyIGRhdGFiYXNlIGFuZCB3ZSBkb24ndCB3YW50IGFsbCB0aGUgZGF0YWJh c2UsIHNraXAgKi8KKwkJaWYgKChzLT5kYXRhLmRhdGFiYXNlICE9IEludmFsaWRPaWQgJiYg cy0+ZGF0YS5kYXRhYmFzZSAhPSBkYm9pZCkgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlk KSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChJbnZhbGlkYXRlUG9zc2libHlDb25mbGljdGlu Z0xvZ2ljYWxSZXBsaWNhdGlvblNsb3QocywgeGlkKSkKKwkJeworCQkJLyogaWYgdGhlIGxv Y2sgd2FzIHJlbGVhc2VkLCB3ZSBuZWVkIHRvIHJlc3RhcnQgZnJvbSBzY3JhdGNoICovCisJ CQlnb3RvIHJlc3RhcnQ7CisJCX0KKwl9CisJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNs b3RDb250cm9sTG9jayk7Cit9CisKIC8qCiAgKiBGbHVzaCBhbGwgcmVwbGljYXRpb24gc2xv dHMgdG8gZGlzay4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4 IDNjYTJhMTEzODkuLmQwZTI0N2IxMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5jCkBAIC0xMTQ3LDYgKzExNDcsMTQgQEAgU3RhcnRMb2dpY2FsUmVwbGljYXRpb24o U3RhcnRSZXBsaWNhdGlvbkNtZCAqY21kKQogCiAJUmVwbGljYXRpb25TbG90QWNxdWlyZShj bWQtPnNsb3RuYW1lLCB0cnVlKTsKIAorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlS ZXBsaWNhdGlvblNsb3QtPmRhdGEueG1pbikKKwkJICYmICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5jYXRhbG9nX3htaW4pKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVf U1RBVEUpLAorCQkJCSBlcnJtc2coImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNh dGlvbiBzbG90IFwiJXNcIiIsCisJCQkJCQljbWQtPnNsb3RuYW1lKSwKKwkJCQkgZXJyZGV0 YWlsKCJUaGlzIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgYmVjYXVzZSBpdCB3YXMgY29u ZmxpY3Rpbmcgd2l0aCByZWNvdmVyeS4iKSkpOworCiAJaWYgKFhMb2dSZWNQdHJJc0ludmFs aWQoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEucmVzdGFydF9sc24pKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVf U1RBVEUpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5 LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwppbmRleCAwOWM5N2M1 OGI4Li41NjhlYTljOTEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpA QCAtMzQ0Myw2ICszNDQzLDEwIEBAIFNpZ25hbFZpcnR1YWxUcmFuc2FjdGlvbihWaXJ0dWFs VHJhbnNhY3Rpb25JZCB2eGlkLCBQcm9jU2lnbmFsUmVhc29uIHNpZ21vZGUsCiAKIAkJR0VU X1ZYSURfRlJPTV9QR1BST0MocHJvY3Z4aWQsICpwcm9jKTsKIAorCQkvKgorCQkgKiBOb3Rl OiB2eGlkLmxvY2FsVHJhbnNhY3Rpb25JZCBjYW4gYmUgaW52YWxpZCwgd2hpY2ggbWVhbnMg dGhlCisJCSAqIHJlcXVlc3QgaXMgdG8gc2lnbmFsIHRoZSBwaWQgdGhhdCBpcyBub3QgcnVu bmluZyBhIHRyYW5zYWN0aW9uLgorCQkgKi8KIAkJaWYgKHByb2N2eGlkLmJhY2tlbmRJZCA9 PSB2eGlkLmJhY2tlbmRJZCAmJgogCQkJcHJvY3Z4aWQubG9jYWxUcmFuc2FjdGlvbklkID09 IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklkKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMKaW5kZXggZGVmYjc1YWEyNi4uMzE1ZDVhMWUzMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtNjczLDYgKzY3Myw5IEBAIHByb2NzaWdu YWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwo UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCkpCiAJCVJlY292ZXJ5Q29uZmxp Y3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCk7CiAKKwlp ZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNM T1QpKQorCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfTE9HSUNBTFNMT1QpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0spKQogCQlSZWNvdmVyeUNvbmZsaWN0 SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCBhZWVjYWY2Y2FiLi41ZmFj ZjZmM2JmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0yMyw2ICsyMyw3 IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xt Z3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTQ0MCw3ICs0NDEsOCBAQCBS ZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhWaXJ0dWFsWElEcyhWaXJ0dWFsVHJhbnNhY3Rp b25JZCAqd2FpdGxpc3QsCiB9CiAKIHZvaWQKLVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0 aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwgUmVsRmlsZU5vZGUg bm9kZSkKK1Jlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9u SWQgbGF0ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCWJvb2wgb25DYXRhbG9nVGFibGUsIFJl bEZpbGVOb2RlIG5vZGUpCiB7CiAJVmlydHVhbFRyYW5zYWN0aW9uSWQgKmJhY2tlbmRzOwog CkBAIC00NjUsNiArNDY3LDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLCBSZWxGaWxlTm9kZQogCQkJCQkJ CQkJCSAgIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCiAJCQkJCQkJCQkJ ICAgV0FJVF9FVkVOVF9SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwKIAkJCQkJCQkJCQkg ICB0cnVlKTsKKworCWlmIChvbkNhdGFsb2dUYWJsZSkKKwkJSW52YWxpZGF0ZUNvbmZsaWN0 aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMobm9kZS5kYk5vZGUsIGxhdGVzdFJlbW92ZWRY aWQpOwogfQogCiAvKgpAQCAtNDczLDcgKzQ3OCw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwgUmVsRmls ZU5vZGUKICAqLwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RG dWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRGdWxsWGlkLAotCQkJCQkJ CQkJCSAgIFJlbEZpbGVOb2RlIG5vZGUpCisJCQkJCQkJCQkJICAgYm9vbCBvbkNhdGFsb2dU YWJsZSwgUmVsRmlsZU5vZGUgbm9kZSkKIHsKIAkvKgogCSAqIFJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90IG9wZXJhdGVzIG9uIDMyLWJpdCBUcmFuc2FjdGlvbklkcywK QEAgLTQ5MSw3ICs0OTYsNyBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hv dEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZEZ1bGxYaQogCQlUcmFu c2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQ7CiAKIAkJbGF0ZXN0UmVtb3ZlZFhpZCA9IFhp ZEZyb21GdWxsVHJhbnNhY3Rpb25JZChsYXRlc3RSZW1vdmVkRnVsbFhpZCk7Ci0JCVJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KGxhdGVzdFJlbW92ZWRYaWQsIG5vZGUp OworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVk WGlkLCBvbkNhdGFsb2dUYWJsZSwgbm9kZSk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMK aW5kZXggNTMwY2FhNTIwYi4uZmMwMDMyOTlkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAt MjQ2Nyw2ICsyNDY3LDkgQEAgZXJyZGV0YWlsX3JlY292ZXJ5X2NvbmZsaWN0KHZvaWQpCiAJ CWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKIAkJCWVycmRldGFp bCgiVXNlciBxdWVyeSBtaWdodCBoYXZlIG5lZWRlZCB0byBzZWUgcm93IHZlcnNpb25zIHRo YXQgbXVzdCBiZSByZW1vdmVkLiIpOwogCQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCWVycmRldGFpbCgiVXNlciB3YXMgdXNp bmcgdGhlIGxvZ2ljYWwgc2xvdCB0aGF0IG11c3QgYmUgZHJvcHBlZC4iKTsKKwkJCWJyZWFr OwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSzoK IAkJCWVycmRldGFpbCgiVXNlciB0cmFuc2FjdGlvbiBjYXVzZWQgYnVmZmVyIGRlYWRsb2Nr IHdpdGggcmVjb3ZlcnkuIik7CiAJCQlicmVhazsKQEAgLTMwMzcsNiArMzA0MCwyNSBAQCBS ZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVhc29uKQogCQkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0s6CiAJCQljYXNlIFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRToKIAkJCWNhc2UgUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9TTkFQU0hPVDoKKwkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9MT0dJQ0FMU0xPVDoKKwkJCQkvKgorCQkJCSAqIEZvciBjb25mbGljdHMgdGhhdCByZXF1 aXJlIGEgbG9naWNhbCBzbG90IHRvIGJlIGludmFsaWRhdGVkLCB0aGUKKwkJCQkgKiByZXF1 aXJlbWVudCBpcyBmb3IgdGhlIHNpZ25hbCByZWNlaXZlciB0byByZWxlYXNlIHRoZSBzbG90 LAorCQkJCSAqIHNvIHRoYXQgaXQgY291bGQgYmUgaW52YWxpZGF0ZWQgYnkgdGhlIHNpZ25h bCBzZW5kZXIuIFNvIGZvcgorCQkJCSAqIG5vcm1hbCBiYWNrZW5kcywgdGhlIHRyYW5zYWN0 aW9uIHNob3VsZCBiZSBhYm9ydGVkLCBqdXN0CisJCQkJICogbGlrZSBmb3Igb3RoZXIgcmVj b3ZlcnkgY29uZmxpY3RzLiBCdXQgaWYgaXQncyB3YWxzZW5kZXIgb24KKwkJCQkgKiBzdGFu ZGJ5LCB0aGVuIGl0IGhhcyB0byBiZSBraWxsZWQgc28gYXMgdG8gcmVsZWFzZSBhbgorCQkJ CSAqIGFjcXVpcmVkIGxvZ2ljYWwgc2xvdC4KKwkJCQkgKi8KKwkJCQlpZiAoYW1fY2FzY2Fk aW5nX3dhbHNlbmRlciAmJgorCQkJCQlyZWFzb24gPT0gUFJPQ1NJR19SRUNPVkVSWV9DT05G TElDVF9MT0dJQ0FMU0xPVCAmJgorCQkJCQlNeVJlcGxpY2F0aW9uU2xvdCAmJiBTbG90SXNM b2dpY2FsKE15UmVwbGljYXRpb25TbG90KSkKKwkJCQl7CisJCQkJCVJlY292ZXJ5Q29uZmxp Y3RQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKKwkJ CQkJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KIAogCQkJ CS8qCiAJCQkJICogSWYgd2UgYXJlbid0IGluIGEgdHJhbnNhY3Rpb24gYW55IGxvbmdlciB0 aGVuIGlnbm9yZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRm dW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggZjBl MDllYWU0ZC4uNWRiMGEyOTc0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNz LmMKQEAgLTE1MDAsNiArMTUwMCwyMSBAQCBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFw c2hvdChQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9JTlQ2NChyZXN1bHQpOwogfQog CitEYXR1bQorcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwlPaWQJCQlkYmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlpbnQ2NAkJ cmVzdWx0OworCVBnU3RhdF9TdGF0REJFbnRyeSAqZGJlbnRyeTsKKworCWlmICgoZGJlbnRy eSA9IHBnc3RhdF9mZXRjaF9zdGF0X2RiZW50cnkoZGJpZCkpID09IE5VTEwpCisJCXJlc3Vs dCA9IDA7CisJZWxzZQorCQlyZXN1bHQgPSAoaW50NjQpIChkYmVudHJ5LT5uX2NvbmZsaWN0 X2xvZ2ljYWxzbG90KTsKKworCVBHX1JFVFVSTl9JTlQ2NChyZXN1bHQpOworfQorCiBEYXR1 bQogcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGluKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7CkBAIC0xNTQzLDYgKzE1NTgsNyBAQCBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9hbGwo UEdfRlVOQ1RJT05fQVJHUykKIAkJcmVzdWx0ID0gKGludDY0KSAoZGJlbnRyeS0+bl9jb25m bGljdF90YWJsZXNwYWNlICsKIAkJCQkJCSAgZGJlbnRyeS0+bl9jb25mbGljdF9sb2NrICsK IAkJCQkJCSAgZGJlbnRyeS0+bl9jb25mbGljdF9zbmFwc2hvdCArCisJCQkJCQkgIGRiZW50 cnktPm5fY29uZmxpY3RfbG9naWNhbHNsb3QgKwogCQkJCQkJICBkYmVudHJ5LT5uX2NvbmZs aWN0X2J1ZmZlcnBpbiArCiAJCQkJCQkgIGRiZW50cnktPm5fY29uZmxpY3Rfc3RhcnR1cF9k ZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDhjZDAyNTIwODIu LjZkZmNmYTk4M2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTQzOCw2ICs1 NDM4LDExIEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBz aG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3Jl dHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdw Z19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdCcgfSwKK3sgb2lkID0+ICc0NTQ0JywK KyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFz ZSBjYXVzZWQgYnkgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90JywKKyAgcHJvbmFtZSA9PiAn cGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QnLCBwcm92b2xhdGlsZSA9PiAn cycsCisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2Fy Z3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X2xvZ2ljYWxzbG90JyB9LAogeyBvaWQgPT4gJzMwNjgnLAogICBkZXNjciA9PiAnc3RhdGlz dGljczogcmVjb3ZlcnkgY29uZmxpY3RzIGluIGRhdGFiYXNlIGNhdXNlZCBieSBzaGFyZWQg YnVmZmVyIHBpbicsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1 ZmZlcnBpbicsIHByb3ZvbGF0aWxlID0+ICdzJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggOTYxMmMwYTZjMi4uNTI2 MjNiNGJlOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGdzdGF0LmgKQEAgLTc0Myw2ICs3NDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0 YXRfU3RhdERCRW50cnkKIAlQZ1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X3RhYmxlc3BhY2U7 CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF9sb2NrOwogCVBnU3RhdF9Db3VudGVyIG5f Y29uZmxpY3Rfc25hcHNob3Q7CisJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF9sb2dpY2Fs c2xvdDsKIAlQZ1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X2J1ZmZlcnBpbjsKIAlQZ1N0YXRf Q291bnRlciBuX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2s7CiAJUGdTdGF0X0NvdW50ZXIg bl90ZW1wX2ZpbGVzOwpAQCAtMTAxMSw2ICsxMDEyLDcgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0 X3JlcG9ydF9jaGVja3N1bV9mYWlsdXJlKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3Jl cG9ydF9yZXBsc2xvdChjb25zdCBQZ1N0YXRfU3RhdFJlcGxTbG90RW50cnkgKnJlcFNsb3RT dGF0KTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfcmVwbHNsb3RfY3JlYXRlKGNvbnN0 IGNoYXIgKnNsb3RuYW1lKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfcmVwbHNsb3Rf ZHJvcChjb25zdCBjaGFyICpzbG90bmFtZSk7CitleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0 X3JlcGxzbG90X2NvbmZsaWN0KE9pZCBkYk9pZCk7CiAKIGV4dGVybiB2b2lkIHBnc3RhdF9p bml0aWFsaXplKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5kZXggZTMyZmI4 NWRiOC4uNDc3OTYxN2NkNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v c2xvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtMjE0LDYg KzIxNCw3IEBAIGV4dGVybiBYTG9nUmVjUHRyIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlTG9n aWNhbFJlc3RhcnRMU04odm9pZCk7CiBleHRlcm4gYm9vbCBSZXBsaWNhdGlvblNsb3RzQ291 bnREQlNsb3RzKE9pZCBkYm9pZCwgaW50ICpuc2xvdHMsIGludCAqbmFjdGl2ZSk7CiBleHRl cm4gdm9pZCBSZXBsaWNhdGlvblNsb3RzRHJvcERCU2xvdHMoT2lkIGRib2lkKTsKIGV4dGVy biBib29sIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9s ZGVzdFNlZ25vKTsKK2V4dGVybiB2b2lkIEludmFsaWRhdGVDb25mbGljdGluZ0xvZ2ljYWxS ZXBsaWNhdGlvblNsb3RzKE9pZCBkYm9pZCwgVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJu IFJlcGxpY2F0aW9uU2xvdCAqU2VhcmNoTmFtZWRSZXBsaWNhdGlvblNsb3QoY29uc3QgY2hh ciAqbmFtZSwgYm9vbCBuZWVkX2xvY2spOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90 TmFtZUZvclRhYmxlc3luYyhPaWQgc3Vib2lkLCBPaWQgcmVsaWQsIGNoYXIgKnN5bmNzbG90 bmFtZSwgaW50IHN6c2xvdCk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wQXRQ dWJOb2RlKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBjaGFyICpzbG90bmFtZSwgYm9vbCBt aXNzaW5nX29rKTsKQEAgLTIyMyw0ICsyMjQsNiBAQCBleHRlcm4gdm9pZCBDaGVja1BvaW50 UmVwbGljYXRpb25TbG90cyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UmVxdWly ZW1lbnRzKHZvaWQpOwogCitleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdp dGhMb2dpY2FsU2xvdHMoT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqcmVh c29uKTsKKwogI2VuZGlmCQkJCQkJCS8qIFNMT1RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2Nz aWduYWwuaAppbmRleCBlZWMxODZiZTJlLi5mODZiMDcwZGJjIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2NzaWduYWwuaApAQCAtNDEsNiArNDEsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UsCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05G TElDVF9MT0NLLAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCisJUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCwKIAlQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX0JVRkZFUlBJTiwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJU VVBfREVBRExPQ0ssCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRi eS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKaW5kZXggMzhmZDg1YTQzMS4u M2JhMTg4MjIxNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgK KysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKQEAgLTMwLDkgKzMwLDkgQEAg ZXh0ZXJuIHZvaWQgSW5pdFJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCh2b2lkKTsK IGV4dGVybiB2b2lkIFNodXRkb3duUmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25tZW50KHZv aWQpOwogCiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hv dChUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQsCi0JCQkJCQkJCQkJCQlSZWxGaWxl Tm9kZSBub2RlKTsKKwkJCQkJCQkJCQkJCWJvb2wgb25DYXRhbG9nVGFibGUsIFJlbEZpbGVO b2RlIG5vZGUpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRGdWxsWGlkLAot CQkJCQkJCQkJCQkJCSAgIFJlbEZpbGVOb2RlIG5vZGUpOworCQkJCQkJCQkJCQkJCSAgIGJv b2wgb25DYXRhbG9nVGFibGUsIFJlbEZpbGVOb2RlIG5vZGUpOwogZXh0ZXJuIHZvaWQgUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVGFibGVzcGFjZShPaWQgdHNpZCk7CiBleHRlcm4g dm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhEYXRhYmFzZShPaWQgZGJpZCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggZTVhYjExMjc1ZC4uNjZm MjhiNjQ5ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE4NzEs NyArMTg3MSw4IEBAIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzfCBTRUxFQ1QgZC5vaWQg QVMgZGF0aWQsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhkLm9pZCkgQVMg Y29uZmxfbG9jaywKICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdChkLm9p ZCkgQVMgY29uZmxfc25hcHNob3QsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYnVm ZmVycGluKGQub2lkKSBBUyBjb25mbF9idWZmZXJwaW4sCi0gICAgcGdfc3RhdF9nZXRfZGJf Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhkLm9pZCkgQVMgY29uZmxfZGVhZGxvY2sKKyAg ICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKGQub2lkKSBBUyBj b25mbF9kZWFkbG9jaywKKyAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xv dChkLm9pZCkgQVMgY29uZmxfbG9naWNhbHNsb3QKICAgIEZST00gcGdfZGF0YWJhc2UgZDsK IHBnX3N0YXRfZ3NzYXBpfCBTRUxFQ1Qgcy5waWQsCiAgICAgcy5nc3NfYXV0aCBBUyBnc3Nf YXV0aGVudGljYXRlZCwKLS0gCjIuMTguNAoK --------------38EAF676C6D0AD5AA04F35B3 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v21-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v21-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" RnJvbSA1Nzg4NzJjMTRhYmM0OTUyYTI3YzU4M2Y2MTRhNGU0OWU4NTAzNjI3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAyNiBKdWwgMjAyMSAwNzo0MTowOCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjIxIDEvNV0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y IGxvZ2ljYWwKIHNsb3QgY29uZmxpY3QgaGFuZGxpbmcuCgpXaGVuIGEgV0FMIHJlcGxheSBv biBzdGFuZGJ5IGluZGljYXRlcyB0aGF0IGEgY2F0YWxvZyB0YWJsZSB0dXBsZSBpcwp0byBi ZSBkZWxldGVkIGJ5IGFuIHhpZCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBhIGxvZ2ljYWwgc2xv dCdzCmNhdGFsb2dfeG1pbiwgdGhlbiB0aGF0IG1lYW5zIHRoZSBzbG90J3MgY2F0YWxvZ194 bWluIGNvbmZsaWN0cyB3aXRoCnRoZSB4aWQsIGFuZCB3ZSBuZWVkIHRvIGhhbmRsZSB0aGUg Y29uZmxpY3QuICBXaGlsZSBzdWJzZXF1ZW50IGNvbW1pdHMKd2lsbCBkbyB0aGUgYWN0dWFs IGNvbmZsaWN0IGhhbmRsaW5nLCB0aGlzIGNvbW1pdCBhZGRzIGEgbmV3IGZpZWxkCm9uQ2F0 YWxvZ1RhYmxlIGluIHN1Y2ggV0FMIHJlY29yZHMsIHRoYXQgaXMgdHJ1ZSBmb3IgY2F0YWxv ZyB0YWJsZXMsCnNvIGFzIHRvIGFycmFuZ2UgZm9yIGNvbmZsaWN0IGhhbmRsaW5nLgoKQXV0 aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVr YXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFu ZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYyAgICAgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYyAgICAgIHwgIDQgKystLQogc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyAgICAgIHwgIDQgKysrLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaGluc2VydC5jICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMgICAgICAgIHwgIDQgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJp bGl0eW1hcC5jIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5j ICAgICB8IDEyICsrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2 YWN1dW0uYyAgIHwgIDggKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNj YWNoZS5jICAgICB8IDE1ICsrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvYWNjZXNzL2dp c3RfcHJpdmF0ZS5oICAgICAgIHwgIDYgKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dHhsb2cuaCAgICAgICAgICAgfCAgMyArKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hs b2cuaCAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o ICAgICAgICB8ICA1ICsrKystCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oICAgICAg ICAgICAgfCAgMiArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCAgICAgICAgICAg IHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggICAgICAgICAgIHwgIDEg Kwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgIHwgIDkgKysrKysr KysrCiAxOSBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMo LSkKICAxNy45JSBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC8KICAxMy4xJSBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC8KICAxNC41JSBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlLwogICA4 LjklIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3QvCiAgIDcuMiUgc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvCiAgMTkuNiUgc3JjL2luY2x1ZGUvYWNjZXNzLwogIDE2LjYlIHNyYy9pbmNs dWRlL3V0aWxzLwoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Qu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwppbmRleCAwNjgzZjQyYzI1Li5i NmU2MzQwYzNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCkBAIC0zNDgsNyArMzQ4LDcg QEAgZ2lzdHBsYWNldG9wYWdlKFJlbGF0aW9uIHJlbCwgU2l6ZSBmcmVlc3BhY2UsIEdJU1RT VEFURSAqZ2lzdHN0YXRlLAogCQlmb3IgKDsgcHRyOyBwdHIgPSBwdHItPm5leHQpCiAJCXsK IAkJCS8qIEFsbG9jYXRlIG5ldyBwYWdlICovCi0JCQlwdHItPmJ1ZmZlciA9IGdpc3ROZXdC dWZmZXIocmVsKTsKKwkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihoZWFwUmVsLCBy ZWwpOwogCQkJR0lTVEluaXRCdWZmZXIocHRyLT5idWZmZXIsIChpc19sZWFmKSA/IEZfTEVB RiA6IDApOwogCQkJcHRyLT5wYWdlID0gQnVmZmVyR2V0UGFnZShwdHItPmJ1ZmZlcik7CiAJ CQlwdHItPmJsb2NrLmJsa25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocHRyLT5idWZmZXIp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwppbmRleCBiYWFkMjhjMDlmLi42 ZDk0ODU0OGMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVp bGQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtMjkw LDcgKzI5MCw3IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAJCVBhZ2UJCXBhZ2U7CiAKIAkJLyogaW5pdGlhbGl6 ZSB0aGUgcm9vdCBwYWdlICovCi0JCWJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIoaW5kZXgpOwor CQlidWZmZXIgPSBnaXN0TmV3QnVmZmVyKGhlYXAsIGluZGV4KTsKIAkJQXNzZXJ0KEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGJ1ZmZlcikgPT0gR0lTVF9ST09UX0JMS05PKTsKIAkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHV0aWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGls LmMKaW5kZXggNDNiYTAzYjZlYi4uMWQxZTIxMTEyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dXRpbC5jCkBAIC04MjAsNyArODIwLDcgQEAgZ2lzdGNoZWNrcGFnZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYpCiAgKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGluaXRp YWxpemluZyB0aGUgcGFnZSBieSBjYWxsaW5nIEdJU1RJbml0QnVmZmVyCiAgKi8KIEJ1ZmZl cgotZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKQorZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiBo ZWFwUmVsLCBSZWxhdGlvbiByKQogewogCUJ1ZmZlcgkJYnVmZmVyOwogCWJvb2wJCW5lZWRM b2NrOwpAQCAtODY0LDcgKzg2NCw3IEBAIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcikKIAkJ CQkgKiBwYWdlJ3MgZGVsZXRlWGlkLgogCQkJCSAqLwogCQkJCWlmIChYTG9nU3RhbmRieUlu Zm9BY3RpdmUoKSAmJiBSZWxhdGlvbk5lZWRzV0FMKHIpKQotCQkJCQlnaXN0WExvZ1BhZ2VS ZXVzZShyLCBibGtubywgR2lzdFBhZ2VHZXREZWxldGVYaWQocGFnZSkpOworCQkJCQlnaXN0 WExvZ1BhZ2VSZXVzZShoZWFwUmVsLCByLCBibGtubywgR2lzdFBhZ2VHZXREZWxldGVYaWQo cGFnZSkpOwogCiAJCQkJcmV0dXJuIGJ1ZmZlcjsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0eGxvZy5jCmluZGV4IDY0NjRjYjkyODEuLjQ2YWVlNmYyYTkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtNTk2LDcgKzU5Niw4IEBAIGdpc3RYTG9nQXNz aWduTFNOKHZvaWQpCiAgKiBXcml0ZSBYTE9HIHJlY29yZCBhYm91dCByZXVzZSBvZiBhIGRl bGV0ZWQgcGFnZS4KICAqLwogdm9pZAotZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhp ZCkKK2dpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIGhlYXBSZWwsIFJlbGF0aW9uIHJlbCwK KwkJCQkgIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1v dmVkWGlkKQogewogCWdpc3R4bG9nUGFnZVJldXNlIHhscmVjX3JldXNlOwogCkBAIC02MDcs NiArNjA4LDcgQEAgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3YKIAkgKi8KIAogCS8qIFhM T0cgc3R1ZmYgKi8KKwl4bHJlY19yZXVzZS5vbkNhdGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNB Y2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcFJlbCk7CiAJeGxyZWNfcmV1c2Uubm9k ZSA9IHJlbC0+cmRfbm9kZTsKIAl4bHJlY19yZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVj X3JldXNlLmxhdGVzdFJlbW92ZWRGdWxsWGlkID0gbGF0ZXN0UmVtb3ZlZFhpZDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwppbmRleCBkMjU0YTAwYjZhLi5jZTIyM2Iy YzE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCkBAIC0zOTgsNiAr Mzk4LDcgQEAgX2hhc2hfdmFjdXVtX29uZV9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aHJlbCwgQnVmZmVyIG1ldGFidWYsIEJ1ZmZlciBidWYpCiAJCQl4bF9oYXNoX3ZhY3V1bV9v bmVfcGFnZSB4bHJlYzsKIAkJCVhMb2dSZWNQdHIJcmVjcHRyOwogCisJCQl4bHJlYy5vbkNh dGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaHJl bCk7CiAJCQl4bHJlYy5sYXRlc3RSZW1vdmVkWGlkID0gbGF0ZXN0UmVtb3ZlZFhpZDsKIAkJ CXhscmVjLm50dXBsZXMgPSBuZGVsZXRhYmxlOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCmluZGV4IDI0MzM5OThmMzkuLjQwMTlhMjEyMmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbS5jCkBAIC03OTQxLDYgKzc5NDEsNyBAQCBsb2dfaGVhcF9mcmVlemUoUmVsYXRp b24gcmVsbiwgQnVmZmVyIGJ1ZmZlciwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAogCS8q IG5vciB3aGVuIHRoZXJlIGFyZSBubyB0dXBsZXMgdG8gZnJlZXplICovCiAJQXNzZXJ0KG50 dXBsZXMgPiAwKTsKIAorCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vz c2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxuKTsKIAl4bHJlYy5jdXRvZmZfeGlkID0gY3V0 b2ZmX3hpZDsKIAl4bHJlYy5udHVwbGVzID0gbnR1cGxlczsKIApAQCAtNzk3MSw3ICs3OTcy LDcgQEAgbG9nX2hlYXBfZnJlZXplKFJlbGF0aW9uIHJlbG4sIEJ1ZmZlciBidWZmZXIsIFRy YW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKICAqIGhlYXBfYnVmZmVyLCBpZiBuZWNlc3Nhcnku CiAgKi8KIFhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZU5vZGUgcm5vZGUs IEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKK2xvZ19oZWFwX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIs CiAJCQkJIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwgdWludDggdm1mbGFncykKIHsKIAl4 bF9oZWFwX3Zpc2libGUgeGxyZWM7CkBAIC03OTgxLDYgKzc5ODIsNyBAQCBsb2dfaGVhcF92 aXNpYmxlKFJlbEZpbGVOb2RlIHJub2RlLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2 bV9idWZmZXIsCiAJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9idWZmZXIpKTsKIAlBc3Nl cnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKIAorCXhscmVjLm9uQ2F0YWxvZ1RhYmxl ID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpOwogCXhscmVj LmN1dG9mZl94aWQgPSBjdXRvZmZfeGlkOwogCXhscmVjLmZsYWdzID0gdm1mbGFnczsKIAlY TG9nQmVnaW5JbnNlcnQoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5k ZXggMTVjYTFiMzA0YS4uMDU5MGI3MDUzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKQEAgLTMyMyw2ICszMjMsNyBAQCBoZWFwX3BhZ2VfcHJ1bmUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQl4bHJlYy5sYXRlc3RSZW1vdmVkWGlkID0g cHJzdGF0ZS5sYXRlc3RSZW1vdmVkWGlkOwogCQkJeGxyZWMubnJlZGlyZWN0ZWQgPSBwcnN0 YXRlLm5yZWRpcmVjdGVkOwogCQkJeGxyZWMubmRlYWQgPSBwcnN0YXRlLm5kZWFkOworCQkJ eGxyZWMub25DYXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERl Y29kaW5nKHJlbGF0aW9uKTsKIAogCQkJWExvZ0JlZ2luSW5zZXJ0KCk7CiAJCQlYTG9nUmVn aXN0ZXJEYXRhKChjaGFyICopICZ4bHJlYywgU2l6ZU9mSGVhcFBydW5lKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwppbmRleCA0NzIwYjM1ZWU1Li5hMDQz MjZjMTIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5 bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBA IC0yODIsNyArMjgyLDcgQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKIAkJCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHJlY3B0cikpCiAJCQl7CiAJCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQly ZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbC0+cmRfbm9kZSwgaGVhcEJ1Ziwgdm1CdWYs CisJCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlzaWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLAog CQkJCQkJCQkJCSAgY3V0b2ZmX3hpZCwgZmxhZ3MpOwogCiAJCQkJLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRwYWdlLmMKaW5kZXggZWJlYzhmYTViOC4uMmQyN2EzZjk3NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNp bmNsdWRlICJ1dGlscy9tZW1kZWJ1Zy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogCiBzdGF0aWMgQlRNZXRhUGFnZURhdGEgKl9idF9nZXRtZXRhKFJlbGF0aW9uIHJl bCwgQnVmZmVyIG1ldGFidWYpOwogc3RhdGljIHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCkBAIC00Myw3ICs0NCw4IEBAIHN0YXRp YyB2b2lkIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJs a25vLAogc3RhdGljIHZvaWQgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCiAJCQkJCQkJCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwKIAkJ CQkJCQkJT2Zmc2V0TnVtYmVyICpkZWxldGFibGUsIGludCBuZGVsZXRhYmxlLAotCQkJCQkJ CQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUpOworCQkJCQkJ CQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCisJCQkJCQkJ CVJlbGF0aW9uIGhlYXBSZWwpOwogc3RhdGljIGNoYXIgKl9idF9kZWxpdGVtc191cGRhdGUo QlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAogCQkJCQkJCQkg T2Zmc2V0TnVtYmVyICp1cGRhdGVkb2Zmc2V0cywKIAkJCQkJCQkJIFNpemUgKnVwZGF0ZWRi dWZsZW4sIGJvb2wgbmVlZHN3YWwpOwpAQCAtODM2LDYgKzgzOCw3IEBAIF9idF9sb2dfcmV1 c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rp b25JZCBzYWZleGlkKQogCSAqLwogCiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3JldXNl Lm9uQ2F0YWxvZ1RhYmxlID0gZ2V0X3JlbF9sb2dpY2FsX2NhdGFsb2cocmVsLT5yZF9pbmRl eC0+aW5kcmVsaWQpOwogCXhscmVjX3JldXNlLm5vZGUgPSByZWwtPnJkX25vZGU7CiAJeGxy ZWNfcmV1c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5sYXRlc3RSZW1vdmVkRnVs bFhpZCA9IHNhZmV4aWQ7CkBAIC0xMjk2LDcgKzEyOTksOCBAQCBfYnRfZGVsaXRlbXNfdmFj dXVtKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIHN0YXRpYyB2b2lkCiBfYnRfZGVsaXRl bXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgVHJhbnNhY3Rpb25JZCBsYXRl c3RSZW1vdmVkWGlkLAogCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5kZWxl dGFibGUsCi0JCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJs ZSkKKwkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAor CQkJCQlSZWxhdGlvbiBoZWFwUmVsKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1Zik7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTEzNTgsNiArMTM2Miw4IEBAIF9i dF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBUcmFuc2FjdGlv bklkIGxhdGVzdFJlbW92ZWRYaWQsCiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCQl4bF9idHJl ZV9kZWxldGUgeGxyZWNfZGVsZXRlOwogCisJCXhscmVjX2RlbGV0ZS5vbkNhdGFsb2dUYWJs ZSA9CisJCQlSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXBSZWwp OwogCQl4bHJlY19kZWxldGUubGF0ZXN0UmVtb3ZlZFhpZCA9IGxhdGVzdFJlbW92ZWRYaWQ7 CiAJCXhscmVjX2RlbGV0ZS5uZGVsZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2RlbGV0 ZS5udXBkYXRlZCA9IG51cGRhdGFibGU7CkBAIC0xNjg1LDcgKzE2OTEsNyBAQCBfYnRfZGVs aXRlbXNfZGVsZXRlX2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRpb24g aGVhcFJlbCwKIAogCS8qIFBoeXNpY2FsbHkgZGVsZXRlIHR1cGxlcyAob3IgVElEcykgdXNp bmcgZGVsZXRhYmxlIChvciB1cGRhdGFibGUpICovCiAJX2J0X2RlbGl0ZW1zX2RlbGV0ZShy ZWwsIGJ1ZiwgbGF0ZXN0UmVtb3ZlZFhpZCwgZGVsZXRhYmxlLCBuZGVsZXRhYmxlLAotCQkJ CQkJdXBkYXRhYmxlLCBudXBkYXRhYmxlKTsKKwkJCQkJCXVwZGF0YWJsZSwgbnVwZGF0YWJs ZSwgaGVhcFJlbCk7CiAKIAkvKiBiZSB0aWR5ICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBu dXBkYXRhYmxlOyBpKyspCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0 L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpp bmRleCA3NmZiMDM3NGM0Li4zMTg2ODg1ZDE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdp c3Qvc3BndmFjdXVtLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2lu ZGV4ZnNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMv c25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCiAKIC8qIEVudHJ5 IGluIHBlbmRpbmctbGlzdCBvZiBUSURzIHdlIG5lZWQgdG8gcmV2aXNpdCAqLwpAQCAtNTAz LDYgKzUwNCwxMyBAQCB2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGlu ZGV4LCBCdWZmZXIgYnVmZmVyKQogCXNwZ3hsb2dWYWN1dW1SZWRpcmVjdCB4bHJlYzsKIAlH bG9iYWxWaXNTdGF0ZSAqdmlzdGVzdDsKIAorCS8qCisJICogVGhlcmUgaXMgbm8gY2hhbmNl IG9mIGVuZGxlc3MgcmVjdXJzaW9uIGV2ZW4gd2hlbiB3ZSBhcmUgZG9pbmcgY2F0YWxvZwor CSAqIGFjY2VzZXMgaGVyZTsgYmVjYXVzZSwgc3BnaXN0IGlzIG5ldmVyIHVzZWQgZm9yIGNh dGFsb2dzLiBDaGVjaworCSAqIGNvbW1lbnRzIGluIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5M b2dpY2FsRGVjb2RpbmcoKS4KKwkgKi8KKwl4bHJlYy5vbkNhdGFsb2dUYWJsZSA9IGdldF9y ZWxfbG9naWNhbF9jYXRhbG9nKGluZGV4LT5yZF9pbmRleC0+aW5kcmVsaWQpOworCiAJeGxy ZWMublRvUGxhY2Vob2xkZXIgPSAwOwogCXhscmVjLm5ld2VzdFJlZGlyZWN0WGlkID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMK aW5kZXggNmJiYTVmOGVjNC4uMjhiMWY5NjFmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv bHN5c2NhY2hlLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5o IgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3Mv bmJ0cmVlLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiYm9vdHN0 cmFwL2Jvb3RzdHJhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19hbS5oIgpAQCAtMjA2Miw2ICsyMDYzLDIwIEBAIGdldF9yZWxf cGVyc2lzdGVuY2UoT2lkIHJlbGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wKK2dl dF9yZWxfbG9naWNhbF9jYXRhbG9nKE9pZCByZWxpZCkKK3sKKwlib29sCXJlczsKKwlSZWxh dGlvbiByZWw7CisKKwkvKiBhc3N1bWUgcHJldmlvdXNseSBsb2NrZWQgKi8KKwlyZWwgPSB0 YWJsZV9vcGVuKHJlbGlkLCBOb0xvY2spOworCXJlcyA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxl SW5Mb2dpY2FsRGVjb2RpbmcocmVsKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisK KwlyZXR1cm4gcmVzOworfQorCiAKIC8qCQkJCS0tLS0tLS0tLS0gVFJBTlNGT1JNIENBQ0hF IC0tLS0tLS0tLS0JCQkJCQkgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L2dpc3RfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCmlu ZGV4IDU1M2QzNjRlMmQuLmEwZjQwMTU1NTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9naXN0X3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2 YXRlLmgKQEAgLTQ0MCw4ICs0NDAsOCBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1Bh Z2VEZWxldGUoQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSBGdWxsVHJhbnNhY3Rpb25JZCB4 aWQsIEJ1ZmZlciBwYXJlbnRCdWZmZXIsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyIGRvd25s aW5rT2Zmc2V0KTsKIAotZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBibGtubywKLQkJCQkJCQkgIEZ1bGxUcmFuc2FjdGlvbklkIGxh dGVzdFJlbW92ZWRYaWQpOworZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRp b24gaGVhcFJlbCwgUmVsYXRpb24gcmVsLAorCQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1 bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQpOwogCiBleHRlcm4gWExvZ1JlY1B0 ciBnaXN0WExvZ1VwZGF0ZShCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgT2Zmc2V0TnVtYmVy ICp0b2RlbGV0ZSwgaW50IG50b2RlbGV0ZSwKQEAgLTQ4NSw3ICs0ODUsNyBAQCBleHRlcm4g Ym9vbCBnaXN0cHJvcGVydHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vLAogZXh0ZXJuIGJv b2wgZ2lzdGZpdHBhZ2UoSW5kZXhUdXBsZSAqaXR2ZWMsIGludCBsZW4pOwogZXh0ZXJuIGJv b2wgZ2lzdG5vc3BhY2UoUGFnZSBwYWdlLCBJbmRleFR1cGxlICppdHZlYywgaW50IGxlbiwg T2Zmc2V0TnVtYmVyIHRvZGVsZXRlLCBTaXplIGZyZWVzcGFjZSk7CiBleHRlcm4gdm9pZCBn aXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVmZmVy IGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcik7CitleHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZm ZXIoUmVsYXRpb24gaGVhcFJlbCwgUmVsYXRpb24gcik7CiBleHRlcm4gYm9vbCBnaXN0UGFn ZVJlY3ljbGFibGUoUGFnZSBwYWdlKTsKIGV4dGVybiB2b2lkIGdpc3RmaWxsYnVmZmVyKFBh Z2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR1cCwgaW50IGxlbiwKIAkJCQkJCSAgIE9mZnNldE51 bWJlciBvZmYpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAppbmRleCBmZDUxNDRmMjU4Li43Mzk5 OWRkYzcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaApAQCAtNDksOSArNDksOSBAQCB0eXBl ZGVmIHN0cnVjdCBnaXN0eGxvZ1BhZ2VVcGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgZ2lz dHhsb2dEZWxldGUKIHsKKwlib29sCQlvbkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklk IGxhdGVzdFJlbW92ZWRYaWQ7CiAJdWludDE2CQludG9kZWxldGU7CQkvKiBudW1iZXIgb2Yg ZGVsZXRlZCBvZmZzZXRzICovCi0KIAkvKgogCSAqIEluIHBheWxvYWQgb2YgYmxrIDAgOiB0 b2RlbGV0ZSBPZmZzZXROdW1iZXJzCiAJICovCkBAIC05Nyw2ICs5Nyw3IEBAIHR5cGVkZWYg c3RydWN0IGdpc3R4bG9nUGFnZURlbGV0ZQogICovCiB0eXBlZGVmIHN0cnVjdCBnaXN0eGxv Z1BhZ2VSZXVzZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVJlbEZpbGVOb2RlIG5v ZGU7CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVt b3ZlZEZ1bGxYaWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9n LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggNDM1M2EzMmRiYi4u OTRjMzI5MmMxZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApAQCAtMjUwLDYgKzI1MCw3 IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hhc2hfaW5pdF9iaXRtYXBfcGFnZQogICovCiB0eXBl ZGVmIHN0cnVjdCB4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZQogeworCWJvb2wJCW9uQ2F0YWxv Z1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAlpbnQJCQludHVw bGVzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDI3ZGI0ODE4NGUuLmVi YTQ4YjBhZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0yNDIsNiArMjQy LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1 Y3QgeGxfaGVhcF9wcnVuZQogeworCWJvb2wgICAgICBvbkNhdGFsb2dUYWJsZTsKIAlUcmFu c2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQ7CiAJdWludDE2CQlucmVkaXJlY3RlZDsKIAl1 aW50MTYJCW5kZWFkOwpAQCAtMzM4LDYgKzMzOSw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hl YXBfZnJlZXplX3R1cGxlCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJlZXplX3Bh Z2UKIHsKKwlib29sCQlvbkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklkIGN1dG9mZl94 aWQ7CiAJdWludDE2CQludHVwbGVzOwogfSB4bF9oZWFwX2ZyZWV6ZV9wYWdlOwpAQCAtMzUy LDYgKzM1NCw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJlZXplX3BhZ2UKICAqLwog dHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF92aXNpYmxlCiB7CisJYm9vbAkJb25DYXRhbG9nVGFi bGU7CiAJVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkOwogCXVpbnQ4CQlmbGFnczsKIH0geGxf aGVhcF92aXNpYmxlOwpAQCAtNDEzLDcgKzQxNiw3IEBAIGV4dGVybiBib29sIGhlYXBfcHJl cGFyZV9mcmVlemVfdHVwbGUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLAogCQkJCQkJCQkJICBi b29sICp0b3RhbGx5X2Zyb3plbik7CiBleHRlcm4gdm9pZCBoZWFwX2V4ZWN1dGVfZnJlZXpl X3R1cGxlKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwKIAkJCQkJCQkJCSAgeGxfaGVhcF9mcmVl emVfdHVwbGUgKnhscmVjX3RwKTsKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2li bGUoUmVsRmlsZU5vZGUgcm5vZGUsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKK2V4dGVybiBYTG9n UmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZm ZXIsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsIFRyYW5zYWN0aW9uSWQgY3V0b2Zm X3hpZCwgdWludDggZmxhZ3MpOwogCiAjZW5kaWYJCQkJCQkJLyogSEVBUEFNX1hMT0dfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9uYnR4bG9nLmgKaW5kZXggMGY3NzMxODU2Yi4uYjE1YWE0N2YxYiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvbmJ0eGxvZy5oCkBAIC0xODUsNiArMTg1LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg eGxfYnRyZWVfZGVkdXAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfcmV1c2VfcGFn ZQogeworCWJvb2wgICAgICAgIG9uQ2F0YWxvZ1RhYmxlOwogCVJlbEZpbGVOb2RlIG5vZGU7 CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3Zl ZEZ1bGxYaWQ7CkBAIC0yMzIsNiArMjMzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVf dmFjdXVtCiAKIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX2RlbGV0ZQogeworCWJvb2wJCW9u Q2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAl1aW50 MTYJCW5kZWxldGVkOwogCXVpbnQxNgkJbnVwZGF0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3Mvc3BneGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaApp bmRleCA2OTQwNWI1NzUwLi4wNmI5MWY0ZDA0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc3BneGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKQEAg LTIzNyw2ICsyMzcsNyBAQCB0eXBlZGVmIHN0cnVjdCBzcGd4bG9nVmFjdXVtUm9vdAogCiB0 eXBlZGVmIHN0cnVjdCBzcGd4bG9nVmFjdXVtUmVkaXJlY3QKIHsKKwlib29sCQlvbkNhdGFs b2dUYWJsZTsKIAl1aW50MTYJCW5Ub1BsYWNlaG9sZGVyOyAvKiBudW1iZXIgb2YgcmVkaXJl Y3RzIHRvIG1ha2UgcGxhY2Vob2xkZXJzICovCiAJT2Zmc2V0TnVtYmVyIGZpcnN0UGxhY2Vo b2xkZXI7CS8qIGZpcnN0IHBsYWNlaG9sZGVyIHR1cGxlIHRvIHJlbW92ZSAqLwogCVRyYW5z YWN0aW9uSWQgbmV3ZXN0UmVkaXJlY3RYaWQ7CS8qIG5ld2VzdCBYSUQgb2YgcmVtb3ZlZCBy ZWRpcmVjdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggNzc4NzFhYWVmYy4uZTJh NWVmZWQzMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBl eHRlcm4gY2hhciBnZXRfcmVsX3JlbGtpbmQoT2lkIHJlbGlkKTsKIGV4dGVybiBib29sIGdl dF9yZWxfcmVsaXNwYXJ0aXRpb24oT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90 YWJsZXNwYWNlKE9pZCByZWxpZCk7CiBleHRlcm4gY2hhciBnZXRfcmVsX3BlcnNpc3RlbmNl KE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBnZXRfcmVsX2xvZ2ljYWxfY2F0YWxvZyhPaWQg cmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX2Zyb21zcWwoT2lkIHR5cGlkLCBP aWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1f dG9zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4g Ym9vbCBnZXRfdHlwaXNkZWZpbmVkKE9pZCB0eXBpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IGI0ZmFh MWMxMjMuLjY0OGFlYWNkNzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j bHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9n LmgiCiAKIAogLyoKQEAgLTM2NSw2ICszNjYsOSBAQCB0eXBlZGVmIHN0cnVjdCBTdGRSZE9w dGlvbnMKICAqIFJlbGF0aW9uSXNVc2VkQXNDYXRhbG9nVGFibGUKICAqCQlSZXR1cm5zIHdo ZXRoZXIgdGhlIHJlbGF0aW9uIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2F0YWxvZyB0YWJs ZQogICoJCWZyb20gdGhlIHBvdiBvZiBsb2dpY2FsIGRlY29kaW5nLiAgTm90ZSBtdWx0aXBs ZSBldmFsIG9mIGFyZ3VtZW50IQorICoJCVRoaXMgZGVmaW5pdGlvbiBzaG91bGQgbm90IGlu dm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNhdGFsb2cKKyAqCQlhY2Nlc3M7IG90aGVy d2lzZSBpdCBtYXkgY2F1c2UgaW5maW5pdGUgcmVjdXJzaW9uLiBDaGVjayB0aGUgY29tbWVu dHMKKyAqCQlpbiBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKCkgZm9y IGRldGFpbHMuCiAgKi8KICNkZWZpbmUgUmVsYXRpb25Jc1VzZWRBc0NhdGFsb2dUYWJsZShy ZWxhdGlvbikJXAogCSgocmVsYXRpb24pLT5yZF9vcHRpb25zICYmIFwKQEAgLTY1Myw2ICs2 NTcsMTEgQEAgUmVsYXRpb25HZXRTbWdyKFJlbGF0aW9uIHJlbCkKICAqIFJlbGF0aW9uSXNB Y2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcKICAqCQlUcnVlIGlmIHdlIG5lZWQgdG8gbG9n IGVub3VnaCBpbmZvcm1hdGlvbiB0byBoYXZlIGFjY2VzcyB2aWEKICAqCQlkZWNvZGluZyBz bmFwc2hvdC4KKyAqCQlUaGlzIGRlZmluaXRpb24gc2hvdWxkIG5vdCBpbnZva2UgYW55dGhp bmcgdGhhdCBwZXJmb3JtcyBjYXRhbG9nCisgKgkJYWNjZXNzLiBPdGhlcndpc2UsIGUuZy4g bG9nZ2luZyBhIFdBTCBlbnRyeSBmb3IgY2F0YWxvZyByZWxhdGlvbiBtYXkKKyAqCQlpbnZv a2UgdGhpcyBmdW5jdGlvbiwgd2hpY2ggd2lsbCBpbiB0dXJuIGRvIGNhdGFsb2cgYWNjZXNz LCB3aGljaCBtYXkKKyAqCQlpbiB0dXJuIGNhdXNlIGFub3RoZXIgc2ltaWxhciBXQUwgZW50 cnkgdG8gYmUgbG9nZ2VkLCBsZWFkaW5nIHRvCisgKgkJaW5maW5pdGUgcmVjdXJzaW9uLgog ICovCiAjZGVmaW5lIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVs YXRpb24pIFwKIAkoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkgJiYgXAotLSAKMi4xOC40Cgo= --------------38EAF676C6D0AD5AA04F35B3--