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 1pHQU2-0001UO-4s for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Jan 2023 14:29:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pHQU0-0000ic-SA for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Jan 2023 14:29:08 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pHQTz-0000iT-Sa for pgsql-hackers@lists.postgresql.org; Mon, 16 Jan 2023 14:29:08 +0000 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pHQTr-0008Ss-DM for pgsql-hackers@postgresql.org; Mon, 16 Jan 2023 14:29:06 +0000 Received: by mail-wm1-x331.google.com with SMTP id l41-20020a05600c1d2900b003daf986faaeso2374211wms.3 for ; Mon, 16 Jan 2023 06:28:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=k1nEbsjSsrJYKr2RLt72G1OEEjCh+J/VtZUWkoDhiBI=; b=Ar0j1nvaa0QvJ9r4Dhbx9il3CE+YTRkB1C0lqD0QubAeKHxDcWe+XAsj8Vtil+6/W0 c2NERKVR2cToqLlv5ELGqW62SfMU6RSIwji0DKSh29+njYNeK1Ks0dzWvWESI0BhuPuL z2bxx9pG5b8pV85OkORf4bQRVLaMQoji8dY2HjYnStlrbt17o0rOAkv6ZCb0S221Kfqs 5KwbpFGliG458ngkKfthnxxxXB2VyxCZ9Z/LHNT/AwBy/L9yAZ405BC8Lq4A4XehAhza Q6rJnHknU6idudPIC71zyOYD5wNLGMwltG8CF+R6j96zLoET8FBaldveCRuKiXCjEEQq ddsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=k1nEbsjSsrJYKr2RLt72G1OEEjCh+J/VtZUWkoDhiBI=; b=pIbO0ljSZjbqMs18i7M9IlMzwR5LrqnI10fqkzSyPkW9Q4umhXpmY4q+fZOR9fqPmo nvobmsn53QjehYlo45C6LjNk8dlyho7DPLhEnVdnYA8CXifMW2WTZeHZffUSxMYFbOf1 1ZzKLyMZl0AkCCZ5vlpZjo8pvj7+Hv8c4RQbIVnlMWXg1jxXsi4XKfcU6hcxPl3/embj WFROJX+6RJrUkbTKwN1HT+L8elqQlkmh+j1ZnfT+ZlI6QIXEnfGSRDVsI13YBTRQevhG yD32PA/wlRWrUTqutYLEKDDg2o/ALHletJ4s43UNXD6v2uuc+BTBLcrGYjS5R9/TMzYC aJeA== X-Gm-Message-State: AFqh2kpp+L2OLZhBcOwEPIdQACNjBQikqVeCUPY5GAB4yJk0ar3bPzxj l1CheoH43dRXcHOFK4yg9nk= X-Google-Smtp-Source: AMrXdXs1rwElNgP0QLFcDHH0wI247Aoe7mRPa9CY4LUBcLHLV44swEYPcu3KELSg+hHiw0F8uvmFKg== X-Received: by 2002:a1c:6a14:0:b0:3d1:f302:1975 with SMTP id f20-20020a1c6a14000000b003d1f3021975mr66648922wmc.33.1673879336950; Mon, 16 Jan 2023 06:28:56 -0800 (PST) Received: from [192.168.9.69] ([54.239.6.185]) by smtp.gmail.com with ESMTPSA id f11-20020a05600c4e8b00b003d04e4ed873sm44188724wmq.22.2023.01.16.06.28.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 16 Jan 2023 06:28:56 -0800 (PST) Content-Type: multipart/mixed; boundary="------------eJ0RSYO43K13hlRACWx5MsCB" Message-ID: <450e018e-d0e7-bcc3-ef8e-ab7c3f1b6dd7@gmail.com> Date: Mon, 16 Jan 2023 15:28:54 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: Minimal logical decoding on standbys From: "Drouvot, Bertrand" To: Andres Freund Cc: Robert Haas , Thomas Munro , Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers References: <1f2ad9fd-53ff-74cc-a602-72d45423bcab@gmail.com> <05c0c4f3-82eb-bc6d-c876-5a265c05927b@gmail.com> <20230106034036.2m4qnn7ep7b5ipet@awork3.anarazel.de> <5c5151a6-a1a3-6c38-7d68-543c9faa22f4@gmail.com> <20230111202702.fl3hywh4li5um2py@awork3.anarazel.de> <5a5815c6-2b11-2dff-0a77-999c5d06d9ec@gmail.com> Content-Language: en-US In-Reply-To: <5a5815c6-2b11-2dff-0a77-999c5d06d9ec@gmail.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------eJ0RSYO43K13hlRACWx5MsCB Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, On 1/13/23 10:17 AM, Drouvot, Bertrand wrote: > Hi, > > On 1/11/23 9:27 PM, Andres Freund wrote: >> Hi, >> >> On 2023-01-06 10:52:06 +0100, Drouvot, Bertrand wrote: >> >> The problem I have with that is that I saw a lot of flakiness in the tests due >> to the race condition. So introducing them in that order just doesn't make a >> whole lot of sense to me. > > You are right it does not make sense to introduce fixing the race condition after the TAP tests > and after introducing the decoding logic. I'll reorder the sub-patches. > V40 attached is changing the sub-patches ordering. >> The suggested path in earlier versions to avoid doing so was to make sure that >> we pass down the Relation for the table into the necessary functions. Did you >> explore that any further? > > So, for gistXLogPageReuse() and _bt_delitems_delete() this is "easy" to pass the Heap Relation. > This is what was done in earlier versions of this patch series. > > But we would need to define a way to propagate the Heap Relation for those 2 functions: > > _bt_log_reuse_page() > vacuumRedirectAndPlaceholder() > V40 is getting rid of the new indisusercatalog field in pg_index and is passing the heap relation all the way down to _bt_log_reuse_page() and vacuumRedirectAndPlaceholder() instead (and obviously to gistXLogPageReuse() and _bt_delitems_delete() too). Remarks: 1) V40 adds the heap relation in the IndexVacuumInfo and ParallelVacuumState structs. It is used for the _bt_log_reuse_page() and vacuumRedirectAndPlaceholder() cases where I did not find any place where to get the heap relation from in the existing code path. 2) V40 adds a "real" heap relation to all the _bt_getbuf() calls. Another option could have been to add it only for the code paths leading to _bt_log_reuse_page() but I thought it is cleaner to do it for all of them. > I will give it another look, also because I just realized that it could be beneficial > for vacuumRedirectAndPlaceholder() too, as per this comment: > > " >     /* XXX: providing heap relation would allow more pruning */ >     vistest = GlobalVisTestFor(NULL); > " Now, we could also pass the heap relation to GlobalVisTestFor() in vacuumRedirectAndPlaceholder(). Could be done in or independently of this patch series once committed (it's not part of V40). Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------eJ0RSYO43K13hlRACWx5MsCB Content-Type: text/plain; charset=UTF-8; name="v40-0006-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v40-0006-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkMzJiNDU2OTYzYzRkM2Y5OTQ5YmU0MDFiMzY4OWNmNDQ4MWNjYmJhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAxNiBKYW4gMjAyMyAxNDoyMTozOSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQwIDYvNl0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj YWwKIGRlY29kaW5nLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJz aW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJl cnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBk ZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCB8 IDIxICsrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IDRjZjg2M2E3NmYuLjAzODc1NThkNzUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjcgQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2 ZW4gdGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBU byBwcmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmlu ZyByZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5h bWU+aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhl CisgICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dz IGdldCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGludmFsaWRhdGVkLiBJdCdzIGhp Z2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSBwaHlzaWNhbCBzbG90IGJldHdlZW4gdGhlIHBy aW1hcnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LiBPdGhlcndpc2UsIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHdpbGwgd29yaywgYnV0IG9ubHkgd2hpbGUgdGhlCisgICAgIGNvbm5lY3Rpb24g aXMgYWxpdmUgKGZvciBleGFtcGxlIGEgbm9kZSByZXN0YXJ0IHdvdWxkIGJyZWFrIGl0KS4g RXhpc3RpbmcKKyAgICAgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGFsc28gZ2V0IGludmFs aWRhdGVkIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIHJlZHVjZWQgdG8KKyAgICAgbGVz cyB0aGFuICdsb2dpY2FsJy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgRm9y IGEgbG9naWNhbCBzbG90IHRvIGJlIGNyZWF0ZWQsIGl0IGJ1aWxkcyBhIGhpc3RvcmljIHNu YXBzaG90LCBmb3Igd2hpY2gKKyAgICAgaW5mb3JtYXRpb24gb2YgYWxsIHRoZSBjdXJyZW50 bHkgcnVubmluZyB0cmFuc2FjdGlvbnMgaXMgZXNzZW50aWFsLiBPbgorICAgICBwcmltYXJ5 LCB0aGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgYnV0IG9uIHN0YW5kYnksIHRoaXMg aW5mb3JtYXRpb24KKyAgICAgaGFzIHRvIGJlIG9idGFpbmVkIGZyb20gcHJpbWFyeS4gU28s IHNsb3QgY3JlYXRpb24gbWF5IHdhaXQgZm9yIHNvbWUKKyAgICAgYWN0aXZpdHkgdG8gaGFw cGVuIG9uIHRoZSBwcmltYXJ5LiBJZiB0aGUgcHJpbWFyeSBpcyBpZGxlLCBjcmVhdGluZyBh CisgICAgIGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IG1heSB0YWtlIGEgbm90aWNlYWJsZSB0 aW1lLgorICAgIDwvcGFyYT4KKwogICAgIDxjYXV0aW9uPgogICAgICA8cGFyYT4KICAgICAg IFJlcGxpY2F0aW9uIHNsb3RzIHBlcnNpc3QgYWNyb3NzIGNyYXNoZXMgYW5kIGtub3cgbm90 aGluZyBhYm91dCB0aGUgc3RhdGUKLS0gCjIuMzQuMQoK --------------eJ0RSYO43K13hlRACWx5MsCB Content-Type: text/plain; charset=UTF-8; name="v40-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v40-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBhZTViMDY0ZmRlODU5OGUzMGI4YjVkMDZhNGM5MzEwNzA2YzcyZjA0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAxNiBKYW4gMjAyMyAxNDoyMDo1MCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQwIDUvNl0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpBdXRob3I6IENyYWlnIFJpbmdlciAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQg S2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91 dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVs bG8KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtICAgICAg fCAgMzcgKysKIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAg ICB8ICAgMSArCiAuLi4vdC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsICAgICAg ICAgfCA0NzkgKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDUxNyBpbnNl cnRpb25zKCspCiAgIDYuMCUgc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvCiAgOTMu NyUgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8KCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bv c3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rl c3QvQ2x1c3Rlci5wbQppbmRleCAwNDkyMWNhM2EzLi42ZjNjOWE2OTEwIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90 ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMwMzcsNiArMzAzNyw0 MyBAQCAkU0lHe1RFUk19ID0gJFNJR3tJTlR9ID0gc3ViIHsKIAogPXBvZAogCis9aXRlbSAk bm9kZS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIG1hc3Rlciwgc2xv dF9uYW1lLCBkYm5hbWUpCisKK0NyZWF0ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qgb24g Z2l2ZW4gc3RhbmRieQorCis9Y3V0CisKK3N1YiBjcmVhdGVfbG9naWNhbF9zbG90X29uX3N0 YW5kYnkKK3sKKwlteSAoJHNlbGYsICRtYXN0ZXIsICRzbG90X25hbWUsICRkYm5hbWUpID0g QF87CisJbXkgKCRzdGRvdXQsICRzdGRlcnIpOworCisJbXkgJGhhbmRsZTsKKworCSRoYW5k bGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRzZWxmLT5j b25uc3RyKCRkYm5hbWUpLCAnLVAnLCAndGVzdF9kZWNvZGluZycsICctUycsICRzbG90X25h bWUsICctLWNyZWF0ZS1zbG90J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJyKTsK KworCSMgT25jZSBzbG90IHJlc3RhcnRfbHNuIGlzIGNyZWF0ZWQsIHRoZSBzdGFuZGJ5IGxv b2tzIGZvciB4bF9ydW5uaW5nX3hhY3RzCisJIyBXQUwgcmVjb3JkIGZyb20gdGhlIHJlc3Rh cnRfbHNuIG9ud2FyZHMuIFNvIGZpcnN0bHksIHdhaXQgdW50aWwgdGhlIHNsb3QKKwkjIHJl c3RhcnRfbHNuIGlzIGV2YWx1YXRlZC4KKworCSRzZWxmLT5wb2xsX3F1ZXJ5X3VudGlsKAor CQkncG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUIHJlc3RhcnRfbHNuIElTIE5PVCBOVUxMCisJ CUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUg PSAnJHNsb3RfbmFtZScKKwldKSBvciBkaWUgInRpbWVkIG91dCB3YWl0aW5nIGZvciBsb2dp Y2FsIHNsb3QgdG8gY2FsY3VsYXRlIGl0cyByZXN0YXJ0X2xzbiI7CisKKwkjIE5vdyBhcnJh bmdlIGZvciB0aGUgeGxfcnVubmluZ194YWN0cyByZWNvcmQgZm9yIHdoaWNoIHBnX3JlY3Zs b2dpY2FsCisJIyBpcyB3YWl0aW5nLgorCSRtYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnQ0hFQ0tQT0lOVCcpOworCisJJGhhbmRsZS0+ZmluaXNoKCk7CisKKwlpcygkc2VsZi0+ c2xvdCgkc2xvdF9uYW1lKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLCAkc2xvdF9uYW1l IC4gJyBvbiBzdGFuZGJ5IGNyZWF0ZWQnKQorCQlvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUg c2xvdCIgLiAkc2xvdF9uYW1lOworfQorCis9cG9kCisKID1iYWNrCiAKID1jdXQKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKaW5kZXggZWRhYWExYTNjZS4uNTJiMjgxNmM3YSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKQEAgLTQwLDYgKzQwLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3Qv MDMxX3JlY292ZXJ5X2NvbmZsaWN0LnBsJywKICAgICAgICd0LzAzMl9yZWxmaWxlbm9kZV9y ZXVzZS5wbCcsCiAgICAgICAndC8wMzNfcmVwbGF5X3RzcF9kcm9wcy5wbCcsCisgICAgICAn dC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsJywKICAgICBdLAogICB9LAogfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQyNTg4 NDRjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFu ZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTAsMCArMSw0NzkgQEAKKyMgbG9naWNhbCBk ZWNvZGluZyBvbiBzdGFuZGJ5IDogdGVzdCBsb2dpY2FsIGRlY29kaW5nLAorIyByZWNvdmVy eSBjb25mbGljdCBhbmQgc3RhbmRieSBwcm9tb3Rpb24uCisKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFRlc3Q6 Ok1vcmUgdGVzdHMgPT4gNDI7CisKK215ICgkc3RkaW4sICRzdGRvdXQsICRzdGRlcnIsICRy ZXQsICRoYW5kbGUsICRzbG90KTsKKworbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworbXkgJG5vZGVfc3RhbmRieSA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieScpOworCisjIE5hbWUgZm9y IHRoZSBwaHlzaWNhbCBzbG90IG9uIHByaW1hcnkKK215ICRwcmltYXJ5X3Nsb3RuYW1lID0g J3ByaW1hcnlfcGh5c2ljYWwnOworCisjIGZpbmQgJHBhdCBpbiBsb2dmaWxlIG9mICRub2Rl IGFmdGVyICRvZmYtdGggYnl0ZQorc3ViIGZpbmRfaW5fbG9nCit7CisJbXkgKCRub2RlLCAk cGF0LCAkb2ZmKSA9IEBfOworCisJJG9mZiA9IDAgdW5sZXNzIGRlZmluZWQgJG9mZjsKKwlt eSAkbG9nID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnNsdXJwX2ZpbGUoJG5vZGUtPmxv Z2ZpbGUpOworCXJldHVybiAwIGlmIChsZW5ndGgoJGxvZykgPD0gJG9mZik7CisKKwkkbG9n ID0gc3Vic3RyKCRsb2csICRvZmYpOworCisJcmV0dXJuICRsb2cgPX4gbS8kcGF0LzsKK30K KworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90J3MgcGdfcmVwbGljYXRpb25fc2xv dHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgorIyBnaXZlbiBib29sZWFuIGNvbmRpdGlvbiB0 byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVkIGEgcXVpZXNjZW50IHN0YXRlLgor c3ViIHdhaXRfZm9yX3htaW5zCit7CisJbXkgKCRub2RlLCAkc2xvdG5hbWUsICRjaGVja19l eHByKSA9IEBfOworCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3Jlcycs IHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4cHIKKwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxp Y2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdG5hbWUnOworCV0pIG9y IGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3QgeG1pbnMgdG8gYWR2YW5jZSI7Cit9 CisKKyMgQ3JlYXRlIHRoZSByZXF1aXJlZCBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitz dWIgY3JlYXRlX2xvZ2ljYWxfc2xvdHMKK3sKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9n aWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ2luYWN0aXZlc2xvdCcsICd0 ZXN0ZGInKTsKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5k YnkoJG5vZGVfcHJpbWFyeSwgJ2FjdGl2ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgQWNx dWlyZSBvbmUgb2YgdGhlIHN0YW5kYnkgbG9naWNhbCBzbG90cyBjcmVhdGVkIGJ5IGNyZWF0 ZV9sb2dpY2FsX3Nsb3RzKCkuCisjIEluIGNhc2Ugd2FpdCBpcyB0cnVlIHdlIGFyZSB3YWl0 aW5nIGZvciBhbiBhY3RpdmUgcGlkIG9uIHRoZSAnYWN0aXZlc2xvdCcgc2xvdC4KKyMgSWYg d2FpdCBpcyBub3QgdHJ1ZSBpdCBtZWFucyB3ZSBhcmUgdGVzdGluZyBhIGtub3duIGZhaWx1 cmUgc2NlbmFyaW8uCitzdWIgbWFrZV9zbG90X2FjdGl2ZQoreworCW15ICR3YWl0ID0gc2hp ZnQ7CisJbXkgJHNsb3RfdXNlcl9oYW5kbGU7CisKKwlwcmludCAic3RhcnRpbmcgcGdfcmVj dmxvZ2ljYWxcbiI7CisJJHNsb3RfdXNlcl9oYW5kbGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydw Z19yZWN2bG9naWNhbCcsICctZCcsICRub2RlX3N0YW5kYnktPmNvbm5zdHIoJ3Rlc3RkYicp LCAnLVMnLCAnYWN0aXZlc2xvdCcsICctZicsICctJywgJy0tbm8tbG9vcCcsICctLXN0YXJ0 J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJyKTsKKworCWlmICgkd2FpdCkKKwkj IG1ha2Ugc3VyZSBhY3RpdmVzbG90IGlzIGluIHVzZQorCXsKKwkJJG5vZGVfc3RhbmRieS0+ cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkJCSJTRUxFQ1QgRVhJU1RTIChTRUxFQ1Qg MSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdhY3RpdmVz bG90JyBBTkQgYWN0aXZlX3BpZCBJUyBOT1QgTlVMTCkiCisJCSkgb3IgZGllICJzbG90IG5l dmVyIGJlY2FtZSBhY3RpdmUiOworCX0KKworCXJldHVybiAkc2xvdF91c2VyX2hhbmRsZTsK K30KKworIyBDaGVjayBwZ19yZWN2bG9naWNhbCBzdGRlcnIKK3N1YiBjaGVja19wZ19yZWN2 bG9naWNhbF9zdGRlcnIKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUsICRjaGVja19zdGRl cnIpID0gQF87CisJbXkgJHJldHVybjsKKworCSMgb3VyIGNsaWVudCBzaG91bGQndmUgdGVy bWluYXRlZCBpbiByZXNwb25zZSB0byB0aGUgd2Fsc2VuZGVyIGVycm9yCisJJHNsb3RfdXNl cl9oYW5kbGUtPmZpbmlzaDsKKwkkcmV0dXJuID0gJD87CisJY21wX29rKCRyZXR1cm4sICIh PSIsIDAsICJwZ19yZWN2bG9naWNhbCBleGl0ZWQgbm9uLXplcm8iKTsKKwlpZiAoJHJldHVy bikgeworCQlsaWtlKCRzdGRlcnIsIHFyLyRjaGVja19zdGRlcnIvLCAnc2xvdCBoYXMgYmVl biBpbnZhbGlkYXRlZCcpOworCX0KKworCXJldHVybiAwOworfQorCisjIENoZWNrIGlmIGFs bCB0aGUgc2xvdHMgb24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhlc2UgaW5jbHVkZSB0aGUg J2FjdGl2ZXNsb3QnCisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1ha2Vfc2xvdF9hY3RpdmUo KSwgYW5kIHRoZSBub24tYWN0aXZlICdpbmFjdGl2ZXNsb3QnLgorc3ViIGNoZWNrX3Nsb3Rz X2Ryb3BwZWQKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUpID0gQF87CisKKwlpcygkbm9k ZV9zdGFuZGJ5LT5zbG90KCdpbmFjdGl2ZXNsb3QnKS0+eydzbG90X3R5cGUnfSwgJycsICdp bmFjdGl2ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisJaXMoJG5vZGVfc3RhbmRieS0+ c2xvdCgnYWN0aXZlc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ2FjdGl2ZXNsb3Qgb24g c3RhbmRieSBkcm9wcGVkJyk7CisKKwljaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJHNs b3RfdXNlcl9oYW5kbGUsICJjb25mbGljdCB3aXRoIHJlY292ZXJ5Iik7Cit9CisKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAxLCBoYXNfYXJjaGl2aW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHF7Cit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK21h eF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKK21heF93YWxfc2VuZGVycyA9IDQKK2xvZ19taW5f bWVzc2FnZXMgPSAnZGVidWcyJworbG9nX2Vycm9yX3ZlcmJvc2l0eSA9IHZlcmJvc2UKK30p OworJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisK KyRub2RlX3ByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywgcVtDUkVBVEUgREFUQUJBU0UgdGVz dGRiXSk7CisKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VMRUNU ICogRlJPTSBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJHByaW1hcnlf c2xvdG5hbWUnKTtdKTsKK215ICRiYWNrdXBfbmFtZSA9ICdiMSc7Ciskbm9kZV9wcmltYXJ5 LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg SW5pdGlhbGl6ZSBzdGFuZGJ5IG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRu b2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoCisJJG5vZGVfcHJpbWFyeSwgJGJhY2t1 cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOwor JG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXFbcHJp bWFyeV9zbG90X25hbWUgPSAnJHByaW1hcnlfc2xvdG5hbWUnXSk7Ciskbm9kZV9zdGFuZGJ5 LT5zdGFydDsKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRi eSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB0 aGF0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gdGhlIHN0YW5kYnkKKyMgYmVoYXZlcyBjb3JyZWN0 bHkuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGluZ190ZXN0KHggaW50ZWdlciwg eSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5T RVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTApIHM7XSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2Nh dGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1 c2gnKSk7CisKK215ICRyZXN1bHQgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsCisJcXFbU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnYWN0aXZlc2xv dCcsIE5VTEwsIE5VTEwpO10pOworCisjIHRlc3QgaWYgYmFzaWMgZGVjb2Rpbmcgd29ya3MK K2lzKHNjYWxhcihteSBAZm9vYmFyID0gc3BsaXQgL14vbSwgJHJlc3VsdCksCisJMTQsICdE ZWNvZGluZyBwcm9kdWNlZCAxNCByb3dzJyk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhbmQg dmVyaWZ5IHRoYXQgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdHMgZnJvbSBwZ19yZWN2bG9naWNh bAorIyBhbmQgdGhlIFNRTCBpbnRlcmZhY2UuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBz LCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCitteSAkZXhw ZWN0ZWQgPSBxe0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4 W2ludGVnZXJdOjEgeVt0ZXh0XTonMScKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJ TlNFUlQ6IHhbaW50ZWdlcl06MiB5W3RleHRdOicyJwordGFibGUgcHVibGljLmRlY29kaW5n X3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTozIHlbdGV4dF06JzMnCit0YWJsZSBwdWJsaWMu ZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjQgeVt0ZXh0XTonNCcKK0NPTU1J VH07CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwg J3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRf c3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBk YXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5V TEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEn KTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4cGVjdGVkLCAnZ290IGV4cGVjdGVkIG91 dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9uJyk7CisKK215ICRlbmRwb3MgPSAkbm9k ZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJIlNFTEVDVCBsc24gRlJPTSBwZ19s b2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCkgT1JE RVIgQlkgbHNuIERFU0MgTElNSVQgMTsiCispOworcHJpbnQgIndhaXRpbmcgdG8gcmVwbGF5 ICRlbmRwb3NcbiI7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhZnRlciAkZW5kcG9zLCB3aGlj aCB3ZSB3b24ndCByZWFkLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAor CXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1LDUwKSBzO10KKyk7CisKKyRub2RlX3ByaW1hcnktPndh aXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnkt PmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRfcmVjdiA9ICRub2RlX3N0YW5kYnktPnBn X3JlY3Zsb2dpY2FsX3VwdG8oCisgICAgJ3Rlc3RkYicsICdhY3RpdmVzbG90JywgJGVuZHBv cywgMTgwLAorICAgICdpbmNsdWRlLXhpZHMnICAgICA9PiAnMCcsCisgICAgJ3NraXAtZW1w dHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rkb3V0X3JlY3YpOworaXMoJHN0ZG91dF9y ZWN2LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91dHB1dCBmcm9tIHBn X3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24nKTsKKworJG5vZGVfc3RhbmRieS0+cG9s bF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkiU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEgRlJP TSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnYWN0aXZlc2xvdCcg QU5EIGFjdGl2ZV9waWQgSVMgTlVMTCkiCispIG9yIGRpZSAic2xvdCBuZXZlciBiZWNhbWUg aW5hY3RpdmUiOworCiskc3Rkb3V0X3JlY3YgPSAkbm9kZV9zdGFuZGJ5LT5wZ19yZWN2bG9n aWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xvdCcsICRlbmRwb3MsIDE4MCwK KyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAnLAorICAgICdza2lwLWVtcHR5LXhhY3Rz JyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2KTsKK2lzKCRzdGRvdXRfcmVjdiwgJycs ICdwZ19yZWN2bG9naWNhbCBhY2tub3dsZWRnZWQgY2hhbmdlcycpOworCiskbm9kZV9wcmlt YXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBEQVRBQkFTRSBvdGhlcmRiJyk7 CisKK2lzKCAkbm9kZV9wcmltYXJ5LT5wc3FsKAorICAgICAgICAnb3RoZXJkYicsCisgICAg ICAgICJTRUxFQ1QgbHNuIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnYWN0 aXZlc2xvdCcsIE5VTEwsIE5VTEwpIE9SREVSIEJZIGxzbiBERVNDIExJTUlUIDE7IgorICAg ICksCisgICAgMywKKyAgICAncmVwbGF5aW5nIGxvZ2ljYWwgc2xvdCBmcm9tIGFub3RoZXIg ZGF0YWJhc2UgZmFpbHMnKTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCiskbm9kZV9z dGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25f c2xvdCgnaW5hY3RpdmVzbG90JyldKTsKKyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVz JywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgUmVjb3ZlcnkgY29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGlu Y2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFyaW8gMTogaG90X3N0YW5kYnlfZmVlZGJh Y2sgb2ZmIGFuZCB2YWN1dW0gRlVMTAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBP bmUgd2F5IHRvIHJlcHJvZHVjZSByZWNvdmVyeSBjb25mbGljdCBpcyB0byBydW4gVkFDVVVN IEZVTEwgd2l0aAorIyBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJuZWQgb2ZmIG9uIHRoZSBz dGFuZGJ5LgorJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics cVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb2ZmCitdKTsKKyRub2RlX3N0YW5kYnktPnJl c3RhcnQ7CisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBvZmYgYnkgd2FpdGluZyBm b3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWluIG9uIHByaW1hcnkuIEJvdGgg c2hvdWxkIGJlIE5VTEwgc2luY2UgaHNfZmVlZGJhY2sgaXMgb2ZmCit3YWl0X2Zvcl94bWlu cygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5V TEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3Rf YWN0aXZlKDEpOworCisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZsaWN0Ciskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0gRlVMTCcpOworCiskbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAk bm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlz c3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRh dGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCBy ZWNvdmVyeSIpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dl ZCB3aXRoIHZhY3V1bSBGVUxMJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0 YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0 IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisgICdhY3RpdmVzbG90IHNsb3QgaW52YWxp ZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMJyk7CisKKyMgVmVyaWZ5IHRoYXQg cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGhh cyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAor CSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMSkg ZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3Rk YiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRp ZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVw ZGF0ZWQiOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKKyMgV2UgYXJlIG5v dCBhYmxlIHRvIHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCBoYXMgYmVlbiBpbnZhbGlkYXRl ZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJjYW5ub3QgcmVhZCBm cm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpOworCisjIFR1 cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorJG5vZGVfc3RhbmRieS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24K K10pOworJG5vZGVfc3RhbmRieS0+cmVzdGFydDsKKworIyBlbnN1cmUgd2FscmVjZWl2ZXIg ZmVlZGJhY2sgc2VudCBieSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRh bG9nX3htaW4gb24gcHJpbWFyeS4gV2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBvbiwgeG1p biBzaG91bGQgYWR2YW5jZSwKKyMgYnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVt YWluIE5VTEwgc2luY2UgdGhlcmUgaXMgbm8gbG9naWNhbCBzbG90Lgord2FpdF9mb3JfeG1p bnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBO T1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxp Y3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xv dHMKKyMgU2NlbmFyaW8gMjogY29uZmxpY3QgZHVlIHRvIHJvdyByZW1vdmFsIHdpdGggaG90 X3N0YW5kYnlfZmVlZGJhY2sgb2ZmLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBm cm9tIGluIHRoZSBzdGFuZGJ5IGxvZ2ZpbGUKK215ICRsb2dzdGFydCA9IC1zICRub2RlX3N0 YW5kYnktPmxvZ2ZpbGU7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworJG5vZGVfc3Rh bmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Ns b3QoJ2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jlcycs IHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnYWN0aXZlc2xvdCcpXSk7CisK K2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJlY292 ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24gYW5kIGxhdW5jaCBh IHZhY3V1bQorIyB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1cm5lZCBvZmYgb24gdGhl IHN0YW5kYnkuCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvZmYKK10pOworJG5vZGVfc3RhbmRieS0+ cmVzdGFydDsKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNrIG9mZiBieSB3YWl0aW5n IGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4gb24gcHJpbWFyeS4gQm90 aCBzaG91bGQgYmUgTlVMTCBzaW5jZSBoc19mZWVkYmFjayBpcyBvZmYKK3dhaXRfZm9yX3ht aW5zKCRub2RlX3ByaW1hcnksICRwcmltYXJ5X3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMg TlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xv dF9hY3RpdmUoMSk7CisKKyMgVGhpcyBzaG91bGQgdHJpZ2dlciB0aGUgY29uZmxpY3QKKyRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGNvbmZs aWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCd0ZXN0ZGInLCBxcVtEUk9QIFRBQkxFIGNvbmZsaWN0X3Rlc3Q7XSk7Ciskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0nKTsKKworJG5vZGVfcHJpbWFy eS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJp bWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29r KCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xv dCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3Zlcnki LCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxv Z2dlZCBkdWUgdG8gcm93IHJlbW92YWwnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5v ZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1 c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZl c2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHJvdyByZW1vdmFsJyk7 CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IGV4cGVjdCAyIGNv bmZsaWN0cyByZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9zcyByZXN0YXJ0 cworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywK Kwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAyKSBmcm9tIHBnX3N0YXRf ZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJ J2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQg d2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyRo YW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDApOworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVh ZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVkCitjaGVja19wZ19y ZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCBy ZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMgVHVybiBob3Rfc3RhbmRi eV9mZWVkYmFjayBiYWNrIG9uCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgorXSk7Ciskbm9kZV9z dGFuZGJ5LT5yZXN0YXJ0OworCisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBzZW50 IGJ5IHdhaXRpbmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1pbiBvbiBw cmltYXJ5LiBXaXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIHNob3VsZCBhZHZh bmNlLAorIyBidXQgY2F0YWxvZ194bWluIHNob3VsZCBzdGlsbCByZW1haW4gTlVMTCBzaW5j ZSB0aGVyZSBpcyBubyBsb2dpY2FsIHNsb3QuCit3YWl0X2Zvcl94bWlucygkbm9kZV9wcmlt YXJ5LCAkcHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBj YXRhbG9nX3htaW4gSVMgTlVMTCIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogSW52YWxpZGF0 ZSBjb25mbGljdGluZyBzbG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cworIyBTY2VuYXJp byAzOiBpbmNvcnJlY3Qgd2FsX2xldmVsIG9uIHByaW1hcnkuCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9zaXRp b24gdG8gc2VhcmNoIGZyb20gaW4gdGhlIHN0YW5kYnkgbG9nZmlsZQorJGxvZ3N0YXJ0ID0g LXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3Rz Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVw bGljYXRpb25fc2xvdCgnaW5hY3RpdmVzbG90JyldKTsKKyRub2RlX3N0YW5kYnktPnBzcWwo J3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVz bG90JyldKTsKKworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworJGhhbmRsZSA9IG1ha2Vf c2xvdF9hY3RpdmUoMSk7CisKKyMgTWFrZSBwcmltYXJ5IHdhbF9sZXZlbCByZXBsaWNhLiBU aGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0LgorJG5vZGVfcHJpbWFyeS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9sZXZlbCA9ICdyZXBsaWNhJworXSk7 Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9j YXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2Zs dXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9n KAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVz bG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCks CisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1ZSB0byB3 YWxfbGV2ZWwnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAg ImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3Rz IHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFs aWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHdhbF9sZXZlbCcpOworCisjIFZlcmlmeSB0aGF0 IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBo YXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBlY3QgMyBjb25mbGljdHMgcmVwb3J0ZWQg YXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVzdGFydHMKK29rKCAkbm9kZV9zdGFu ZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxf YWN0aXZlX2xvZ2ljYWxzbG90ID0gMykgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9n aWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCiskaGFuZGxlID0gbWFrZV9zbG90 X2FjdGl2ZSgwKTsKKyMgV2UgYXJlIG5vdCBhYmxlIHRvIHJlYWQgZnJvbSB0aGUgc2xvdCBh cyBpdCByZXF1aXJlcyB3YWxfbGV2ZWwgYXQgbGVhc3QgbG9naWNhbCBvbiBtYXN0ZXIKK2No ZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLCAibG9naWNhbCBkZWNvZGluZyBv biBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCB0byBiZSBhdCBsZWFzdCBsb2dpY2FsIG9u IG1hc3RlciIpOworCisjIFJlc3RvcmUgcHJpbWFyeSB3YWxfbGV2ZWwKKyRub2RlX3ByaW1h cnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCit3YWxfbGV2ZWwgPSAnbG9n aWNhbCcKK10pOworJG5vZGVfcHJpbWFyeS0+cmVzdGFydDsKKyRub2RlX3ByaW1hcnktPndh aXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnkt PmxzbignZmx1c2gnKSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDApOworIyBh cyB0aGUgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCB3ZSBzaG91bGQgbm90IGJlIGFibGUg dG8gcmVhZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJjYW5ub3Qg cmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpOwor CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBEUk9QIERBVEFCQVNFIHNob3VsZCBkcm9wcyBpdCdzIHNsb3RzLCBpbmNsdWRpbmcgYWN0 aXZlIHNsb3RzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworJG5vZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBw Z19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9zdGFu ZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xv dCgnYWN0aXZlc2xvdCcpXSk7CitjcmVhdGVfbG9naWNhbF9zbG90cygpOworJGhhbmRsZSA9 IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisjIENyZWF0ZSBhIHNsb3Qgb24gYSBkYXRhYmFzZSB0 aGF0IHdvdWxkIG5vdCBiZSBkcm9wcGVkLiBUaGlzIHNsb3Qgc2hvdWxkIG5vdAorIyBnZXQg ZHJvcHBlZC4KKyRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRi eSgkbm9kZV9wcmltYXJ5LCAnb3RoZXJzbG90JywgJ3Bvc3RncmVzJyk7CisKKyMgZHJvcGRi IG9uIHRoZSBwcmltYXJ5IHRvIHZlcmlmeSBzbG90cyBhcmUgZHJvcHBlZCBvbiBzdGFuZGJ5 Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcVtEUk9QIERBVEFCQVNF IHRlc3RkYl0pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0 YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCitpcygk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxW1NFTEVDVCBFWElTVFMo U0VMRUNUIDEgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gJ3Rlc3RkYicpXSks ICdmJywKKwknZGF0YWJhc2UgZHJvcHBlZCBvbiBzdGFuZGJ5Jyk7CisKK2NoZWNrX3Nsb3Rz X2Ryb3BwZWQoJGhhbmRsZSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNsb3QoJ290aGVyc2xv dCcpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcsCisJJ290aGVyc2xvdCBvbiBzdGFuZGJ5 IG5vdCBkcm9wcGVkJyk7CisKKyMgQ2xlYW51cCA6IG1hbnVhbGx5IGRyb3AgdGhlIHNsb3Qg dGhhdCB3YXMgbm90IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jlcycs IHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnb3RoZXJzbG90JyldKTsKKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCBzdGFuZGJ5IHByb21vdGlvbiBhbmQgbG9naWNhbCBkZWNvZGluZyBiZWhhdmlvcgor IyBhZnRlciB0aGUgc3RhbmRieSBnZXRzIHByb21vdGVkLgorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfcHJpbWFyeS0+cHNx bCgncG9zdGdyZXMnLCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rlc3Qo eCBpbnRlZ2VyLCB5IHRleHQpO10pOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cwor Y3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGJlZm9yZSB0 aGUgcHJvbW90aW9uCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFb SU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24o J2ZsdXNoJykpOworCisjIHByb21vdGUKKyRub2RlX3N0YW5kYnktPnByb21vdGU7CisKKyMg aW5zZXJ0IHNvbWUgcm93cyBvbiBwcm9tb3RlZCBzdGFuZGJ5Ciskbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkp IFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsNykgcztdCispOwor CisKKyRleHBlY3RlZCA9IHF7QkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJ TlNFUlQ6IHhbaW50ZWdlcl06MSB5W3RleHRdOicxJwordGFibGUgcHVibGljLmRlY29kaW5n X3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToyIHlbdGV4dF06JzInCit0YWJsZSBwdWJsaWMu ZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjMgeVt0ZXh0XTonMycKK3RhYmxl IHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NCB5W3RleHRdOic0 JworQ09NTUlUCitCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDog eFtpbnRlZ2VyXTo1IHlbdGV4dF06JzUnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDog SU5TRVJUOiB4W2ludGVnZXJdOjYgeVt0ZXh0XTonNicKK3RhYmxlIHB1YmxpYy5kZWNvZGlu Z190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NyB5W3RleHRdOic3JworQ09NTUlUfTsKKwor IyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUgYW5kIHBvc3QgcHJvbW90aW9uIGlu c2VydGVkIHJvd3MKKyRzdGRvdXRfc3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0 ZXN0ZGInLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hh bmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdz a2lwLWVtcHR5LXhhY3RzJywgJzEnKTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4cGVj dGVkLCAnZ290IGV4cGVjdGVkIG91dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9uIG9u IHByb21vdGVkIHN0YW5kYnknKTsKLS0gCjIuMzQuMQoK --------------eJ0RSYO43K13hlRACWx5MsCB Content-Type: text/plain; charset=UTF-8; name="v40-0004-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v40-0004-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiMjE1MTVlOWM0ZTQzYmIwMzQxODg1OGEwNTIyOWRmOWQyOGNmNDI0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAxNiBKYW4gMjAyMyAxNDoxOTo1OCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQwIDQvNl0gRml4aW5nIFdhbHNlbmRlciBjb3JuZXIgY2FzZSB3aXRoIGxvZ2ljYWwg ZGVjb2Rpbmcgb24KIHN0YW5kYnkuCgpUaGUgcHJvYmxlbSBpcyB0aGF0IFdhbFNuZFdhaXRG b3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkqIExTTiB0bwppbmNyZWFzZSwgYnV0IGdl dHMgd29rZW4gdXAgYnkgd2FscmVjZWl2ZXIgd2hlbiBuZXcgV0FMIGhhcyBiZWVuCmZsdXNo ZWQuIFdoaWNoIG1lYW5zIHRoYXQgdHlwaWNhbGx5IHdhbHNlbmRlcnMgd2lsbCBnZXQgd29r ZW4gdXAgYXQgdGhlCnNhbWUgdGltZSB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3Mgd2lsbCBi ZSAtIHdoaWNoIG1lYW5zIHRoYXQgYnkgdGhlCnRpbWUgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVy IGNoZWNrcyBHZXRYTG9nUmVwbGF5UmVjUHRyKCkgaXQncyB1bmxpa2VseQp0aGF0IHRoZSBz dGFydHVwIHByb2Nlc3MgYWxyZWFkeSByZXBsYXllZCB0aGUgcmVjb3JkIGFuZCB1cGRhdGVk ClhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ci4KCkludHJvZHVjaW5nIGEgbmV3IGNv bmRpdGlvbiB2YXJpYWJsZSB0byBmaXggdGhpcyBjb3JuZXIgY2FzZS4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyB8IDI4ICsrKysrKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICB8IDMx ICsrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93 YWl0X2V2ZW50LmMgICB8ICAzICsrKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVy eS5oICAgICAgICAgfCAgMyArKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5oICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAg ICAgICAgfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCiAgNDEuMiUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgNDguNSUg c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDMuNiUgc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvCiAgIDMuNCUgc3JjL2luY2x1ZGUvYWNjZXNzLwoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggNWU2NTc4NTMwNi4uNTdmYTZkNjhk MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAg LTM1OCw2ICszNTgsOSBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3ZlcnlDdGxEYXRhCiAJ UmVjb3ZlcnlQYXVzZVN0YXRlIHJlY292ZXJ5UGF1c2VTdGF0ZTsKIAlDb25kaXRpb25WYXJp YWJsZSByZWNvdmVyeU5vdFBhdXNlZENWOwogCisJLyogUmVwbGF5IHN0YXRlIChzZWUgZ2V0 UmVwbGF5ZWRDVigpIGZvciBtb3JlIGV4cGxhbmF0aW9uKSAqLworCUNvbmRpdGlvblZhcmlh YmxlIHJlcGxheWVkQ1Y7CisKIAlzbG9ja190CQlpbmZvX2xjazsJCS8qIGxvY2tzIHNoYXJl ZCB2YXJpYWJsZXMgc2hvd24gYWJvdmUgKi8KIH0gWExvZ1JlY292ZXJ5Q3RsRGF0YTsKIApA QCAtNDY3LDYgKzQ3MCw3IEBAIFhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkKQogCVNwaW5M b2NrSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5pbmZvX2xjayk7CiAJSW5pdFNoYXJlZExhdGNo KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOwogCUNvbmRpdGlvblZh cmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeU5vdFBhdXNlZENWKTsKKwlD b25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dSZWNvdmVyeUN0bC0+cmVwbGF5ZWRDVik7CiB9 CiAKIC8qCkBAIC0xOTE2LDYgKzE5MjAsMTEgQEAgQXBwbHlXYWxSZWNvcmQoWExvZ1JlYWRl clN0YXRlICp4bG9ncmVhZGVyLCBYTG9nUmVjb3JkICpyZWNvcmQsIFRpbWVMaW5lSUQgKnJl cGwKIAlYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZFRMSSA9ICpyZXBsYXlUTEk7CiAJ U3BpbkxvY2tSZWxlYXNlKCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNrKTsKIAorCS8qCisJ ICogd2FrZSB1cCB3YWxzZW5kZXIocykgdXNlZCBieSBsb2dpY2FsIGRlY29kaW5nIG9uIHN0 YW5kYnkuCisJICovCisJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoJlhMb2dSZWNvdmVy eUN0bC0+cmVwbGF5ZWRDVik7CisKIAkvKgogCSAqIElmIHJtX3JlZG8gY2FsbGVkIFhMb2dS ZXF1ZXN0V2FsUmVjZWl2ZXJSZXBseSwgdGhlbiB3ZSB3YWtlIHVwIHRoZQogCSAqIHJlY2Vp dmVyIHNvIHRoYXQgaXQgbm90aWNlcyB0aGUgdXBkYXRlZCBsYXN0UmVwbGF5ZWRFbmRSZWNQ dHIgYW5kIHNlbmRzCkBAIC00OTE2LDMgKzQ5MjUsMjIgQEAgYXNzaWduX3JlY292ZXJ5X3Rh cmdldF94aWQoY29uc3QgY2hhciAqbmV3dmFsLCB2b2lkICpleHRyYSkKIAllbHNlCiAJCXJl Y292ZXJ5VGFyZ2V0ID0gUkVDT1ZFUllfVEFSR0VUX1VOU0VUOwogfQorCisvKgorICogUmV0 dXJuIHRoZSBDb25kaXRpb25WYXJpYWJsZSBpbmRpY2F0aW5nIHRoYXQgYSByZXBsYXkgaGFz IGJlZW4gZG9uZS4KKyAqCisgKiBUaGlzIGlzIG5lZWRlZCBmb3IgbG9naWNhbCBkZWNvZGlu ZyBvbiBzdGFuZGJ5LiBJbmRlZWQgdGhlICJwcm9ibGVtIiBpcyB0aGF0CisgKiBXYWxTbmRX YWl0Rm9yV2FsKCkgd2FpdHMgZm9yIHRoZSAqcmVwbGF5KiBMU04gdG8gaW5jcmVhc2UsIGJ1 dCBnZXRzIHdva2VuIHVwCisgKiBieSB3YWxyZWNlaXZlciB3aGVuIG5ldyBXQUwgaGFzIGJl ZW4gZmx1c2hlZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBpY2FsbHkKKyAqIHdhbHNlbmRlcnMg d2lsbCBnZXQgd29rZW4gdXAgYXQgdGhlIHNhbWUgdGltZSB0aGF0IHRoZSBzdGFydHVwIHBy b2Nlc3MKKyAqIHdpbGwgYmUgLSB3aGljaCBtZWFucyB0aGF0IGJ5IHRoZSB0aW1lIHRoZSBs b2dpY2FsIHdhbHNlbmRlciBjaGVja3MKKyAqIEdldFhMb2dSZXBsYXlSZWNQdHIoKSBpdCdz IHVubGlrZWx5IHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyBhbHJlYWR5IHJlcGxheWVkCisg KiB0aGUgcmVjb3JkIGFuZCB1cGRhdGVkIFhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0 ci4KKyAqCisgKiBUaGUgQ29uZGl0aW9uVmFyaWFibGUgWExvZ1JlY292ZXJ5Q3RsLT5yZXBs YXllZENWIHNvbHZlcyB0aGlzIGNvcm5lciBjYXNlLgorICovCitDb25kaXRpb25WYXJpYWJs ZSAqCitnZXRSZXBsYXllZENWKHZvaWQpCit7CisJcmV0dXJuICZYTG9nUmVjb3ZlcnlDdGwt PnJlcGxheWVkQ1Y7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4 IGZkNjZiMjA5YjYuLjYzZTgyNGExMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5jCkBAIC0xNTQ4LDYgKzE1NDgsNyBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQ dHIgbG9jKQogewogCWludAkJCXdha2VFdmVudHM7CiAJc3RhdGljIFhMb2dSZWNQdHIgUmVj ZW50Rmx1c2hQdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlDb25kaXRpb25WYXJpYWJsZSAq cmVwbGF5ZWRDViA9IGdldFJlcGxheWVkQ1YoKTsKIAogCS8qCiAJICogRmFzdCBwYXRoIHRv IGF2b2lkIGFjcXVpcmluZyB0aGUgc3BpbmxvY2sgaW4gY2FzZSB3ZSBhbHJlYWR5IGtub3cg d2UKQEAgLTE1NjYsNyArMTU2Nyw2IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBs b2MpCiAKIAlmb3IgKDs7KQogCXsKLQkJbG9uZwkJc2xlZXB0aW1lOwogCiAJCS8qIENsZWFy IGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwogCQlSZXNldExhdGNoKE15TGF0Y2gp OwpAQCAtMTY1MCwyMCArMTY1MCwzNSBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIg bG9jKQogCQlXYWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2FyeSgpOwogCiAJCS8qCi0JCSAqIFNs ZWVwIHVudGlsIHNvbWV0aGluZyBoYXBwZW5zIG9yIHdlIHRpbWUgb3V0LiAgQWxzbyB3YWl0 IGZvciB0aGUKLQkJICogc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBpZiB0aGVyZSdzIHN0 aWxsIHBlbmRpbmcgb3V0cHV0LgorCQkgKiBXaGVuIG5vdCBpbiByZWNvdmVyeSwgc2xlZXAg dW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQuCisJCSAqIEFsc28gd2Fp dCBmb3IgdGhlIHNvY2tldCBiZWNvbWluZyB3cml0YWJsZSwgaWYgdGhlcmUncyBzdGlsbCBw ZW5kaW5nIG91dHB1dC4KIAkJICogT3RoZXJ3aXNlIHdlIG1pZ2h0IHNpdCBvbiBzZW5kYWJs ZSBvdXRwdXQgZGF0YSB3aGlsZSB3YWl0aW5nIGZvcgogCQkgKiBuZXcgV0FMIHRvIGJlIGdl bmVyYXRlZC4gIChCdXQgaWYgd2UgaGF2ZSBub3RoaW5nIHRvIHNlbmQsIHdlIGRvbid0CiAJ CSAqIHdhbnQgdG8gd2FrZSBvbiBzb2NrZXQtd3JpdGFibGUuKQogCQkgKi8KLQkJc2xlZXB0 aW1lID0gV2FsU25kQ29tcHV0ZVNsZWVwdGltZShHZXRDdXJyZW50VGltZXN0YW1wKCkpOwor CQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQl7CisJCQlsb25nCQlzbGVlcHRpbWU7 CisJCQlzbGVlcHRpbWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1l c3RhbXAoKSk7CiAKLQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tFVF9SRUFEQUJMRTsKKwkJCXdh a2VFdmVudHMgPSBXTF9TT0NLRVRfUkVBREFCTEU7CiAKLQkJaWYgKHBxX2lzX3NlbmRfcGVu ZGluZygpKQotCQkJd2FrZUV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOworCQkJaWYg KHBxX2lzX3NlbmRfcGVuZGluZygpKQorCQkJCXdha2VFdmVudHMgfD0gV0xfU09DS0VUX1dS SVRFQUJMRTsKIAotCQlXYWxTbmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwgV0FJVF9F VkVOVF9XQUxfU0VOREVSX1dBSVRfV0FMKTsKKwkJCVdhbFNuZFdhaXQod2FrZUV2ZW50cywg c2xlZXB0aW1lICogMTAsIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9XQUlUX1dBTCk7CisJCX0K KwkJZWxzZQorCQkvKgorCQkgKiBXZSBhcmUgaW4gdGhlIGxvZ2ljYWwgZGVjb2Rpbmcgb24g c3RhbmRieSBjYXNlLgorCQkgKiBXZSBhcmUgd2FpdGluZyBmb3IgdGhlIHN0YXJ0dXAgcHJv Y2VzcyB0byByZXBsYXkgd2FsIHJlY29yZChzKSB1c2luZworCQkgKiBhIHRpbWVvdXQgaW4g Y2FzZSB3ZSBhcmUgcmVxdWVzdGVkIHRvIHN0b3AuCisJCSAqLworCQl7CisJCQlDb25kaXRp b25WYXJpYWJsZVByZXBhcmVUb1NsZWVwKHJlcGxheWVkQ1YpOworCQkJQ29uZGl0aW9uVmFy aWFibGVUaW1lZFNsZWVwKHJlcGxheWVkQ1YsIDEwMDAsCisJCQkJCQkJCQkJV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZKTsKKwkJfQogCX0KIAogCS8qIHJlYWN0aXZhdGUg bGF0Y2ggc28gV2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDZlNDU5OTI3OGMuLjM4Yzc0N2I3 ODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTQ2 Myw2ICs0NjMsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQlj YXNlIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQ6CiAJCQlldmVudF9uYW1l ID0gIldhbFJlY2VpdmVyV2FpdFN0YXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZF TlRfV0FMX1NFTkRFUl9XQUlUX1JFUExBWToKKwkJCWV2ZW50X25hbWUgPSAiV2FsUmVjZWl2 ZXJXYWl0UmVwbGF5IjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfWEFDVF9HUk9V UF9VUERBVEU6CiAJCQlldmVudF9uYW1lID0gIlhhY3RHcm91cFVwZGF0ZSI7CiAJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAppbmRleCA0N2MyOTM1MGY1Li5iNjVj MmNmMWYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCkBAIC0xNSw2ICsxNSw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAibGliL3N0 cmluZ2luZm8uaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogUmVjb3ZlcnkgdGFyZ2V0 IHR5cGUuCkBAIC0xNTUsNCArMTU2LDYgQEAgZXh0ZXJuIHZvaWQgUmVjb3ZlcnlSZXF1aXJl c0ludFBhcmFtZXRlcihjb25zdCBjaGFyICpwYXJhbV9uYW1lLCBpbnQgY3VyclZhbHVlLAog CiBleHRlcm4gdm9pZCB4bG9nX291dGRlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKTsKIAorZXh0ZXJuIENvbmRpdGlvblZhcmlhYmxlICpnZXRSZXBsYXll ZENWKHZvaWQpOworCiAjZW5kaWYJCQkJCQkJLyogWExPR1JFQ09WRVJZX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggNTJiYjNlMmFhZS4uMmZkNzQ1ZmU3 MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKQEAgLTEzLDYgKzEzLDcg QEAKICNkZWZpbmUgX1dBTFNFTkRFUl9ICiAKICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNs dWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogV2hhdCB0byBk byB3aXRoIGEgc25hcHNob3QgaW4gY3JlYXRlIHJlcGxpY2F0aW9uIHNsb3QgY29tbWFuZC4K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2Y2FjZDZlZGFmLi4wNGEzN2ZlZWU0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMzAsNiArMTMwLDcgQEAgdHlwZWRlZiBl bnVtCiAJV0FJVF9FVkVOVF9TWU5DX1JFUCwKIAlXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9F WElULAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQsCisJV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZLAogCVdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERB VEUKIH0gV2FpdEV2ZW50SVBDOwogCi0tIAoyLjM0LjEKCg== --------------eJ0RSYO43K13hlRACWx5MsCB Content-Type: text/plain; charset=UTF-8; name="v40-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v40-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA1ZThiZDEyZTBiZWY0OWE2NmU0YWQ1NGNhYTMzOTJlNzU5N2Y1Y2JjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAxNiBKYW4gMjAyMyAxNDoxOToxNSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQwIDMvNl0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCBvbiBzdGFuZGJ5LiBSZXN0cmljdCBpdHMg dXNhZ2UKb3IgaXRzIGNyZWF0aW9uIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIGxlc3Mg dGhhbiBsb2dpY2FsLgpEdXJpbmcgc2xvdCBjcmVhdGlvbiwgaXQncyByZXN0YXJ0X2xzbiBp cyBzZXQgdG8gdGhlIGxhc3QgcmVwbGF5ZWQKTFNOLiBFZmZlY3RpdmVseSwgYSBsb2dpY2Fs IHNsb3QgY3JlYXRpb24gb24gc3RhbmRieSB3YWl0cyBmb3IgYW4KeGxfcnVubmluZ194YWN0 IHJlY29yZCB0byBhcnJpdmUgZnJvbSBwcmltYXJ5LgoKQXV0aG9yOiBBbmRyZXMgRnJldW5k IChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2 b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVy dCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyAgICAgICAgIHwgMTEgKysrKysKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgIHwgMjIgKysrKysrKystCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyB8IDM3ICsrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgfCA1NyArKysrKysrKysr KystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAg ICAgfCAyOSArKysrKysrKy0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAgICAg ICAgICAgICAgIHwgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMDMgaW5zZXJ0aW9ucygrKSwg NTQgZGVsZXRpb25zKC0pCiAgIDUuMCUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAg NDAuMCUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1NC4wJSBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi8KCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXgg NWI2ZWJmYWNmOS4uZDFlZTM0OTNhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YwpAQCAtNDQ2Myw2ICs0NDYzLDE3IEBAIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wg cmVzZXQpCiAJUmVhZENvbnRyb2xGaWxlKCk7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHdhbF9s ZXZlbCBmcm9tIHRoZSBjb250cm9sIGZpbGUuIEZvciBhIHN0YW5kYnksIHRoaXMgdmFsdWUg c2hvdWxkIGJlCisgKiBjb25zaWRlcmVkIGFzIGl0cyBhY3RpdmUgd2FsX2xldmVsLCBiZWNh dXNlIGl0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSB3aGF0CisgKiB3YXMgb3JpZ2luYWxseSBj b25maWd1cmVkIG9uIHN0YW5kYnkuCisgKi8KK1dhbExldmVsCitHZXRBY3RpdmVXYWxMZXZl bE9uU3RhbmRieSh2b2lkKQoreworCXJldHVybiBDb250cm9sRmlsZS0+d2FsX2xldmVsOwor fQorCiAvKgogICogSW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgWExPRwog ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCBh NTNlMjNjNjc5Li5jMWU0M2RkMmIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvZGVjb2RlLmMKQEAgLTE1MiwxMSArMTUyLDMxIEBAIHhsb2dfZGVjb2RlKExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQkJICog Y2FuIHJlc3RhcnQgZnJvbSB0aGVyZS4KIAkJCSAqLwogCQkJYnJlYWs7CisJCWNhc2UgWExP R19QQVJBTUVURVJfQ0hBTkdFOgorCQl7CisJCQl4bF9wYXJhbWV0ZXJfY2hhbmdlICp4bHJl YyA9CisJCQkJKHhsX3BhcmFtZXRlcl9jaGFuZ2UgKikgWExvZ1JlY0dldERhdGEoYnVmLT5y ZWNvcmQpOworCisJCQkvKgorCQkJICogSWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgcmVk dWNlZCB0byBsZXNzIHRoYW4gbG9naWNhbCwgdGhlbiB3ZQorCQkJICogd2FudCB0byBwcmV2 ZW50IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgZnJvbSBiZWluZyB1c2VkLgorCQkJICogRXhp c3RpbmcgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGdldCBpbnZhbGlkYXRlZCB3aGVuIHRo aXMgV0FMCisJCQkgKiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0aGVyLCBzbG90IGNy ZWF0aW9uIGZhaWxzIHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMgbm90IHN1ZmZpY2ll bnQ7IGJ1dCBhbGwgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkgKiBzeW5jaHJvbml6 ZWQsIHNvIGEgbG9naWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0aGUgd2FsX2xldmVs CisJCQkgKiBpcyBiZWluZyByZWR1Y2VkLiBIZW5jZSB0aGlzIGV4dHJhIGNoZWNrLgorCQkJ ICovCisJCQlpZiAoeGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rpbmcg b24gc3RhbmRieSByZXF1aXJlcyAiCisJCQkJCQkJCSJ3YWxfbGV2ZWwgdG8gYmUgYXQgbGVh c3QgbG9naWNhbCBvbiBtYXN0ZXIiKSkpOworCQkJYnJlYWs7CisJCX0KIAkJY2FzZSBYTE9H X05PT1A6CiAJCWNhc2UgWExPR19ORVhUT0lEOgogCQljYXNlIFhMT0dfU1dJVENIOgogCQlj YXNlIFhMT0dfQkFDS1VQX0VORDoKLQkJY2FzZSBYTE9HX1BBUkFNRVRFUl9DSEFOR0U6CiAJ CWNhc2UgWExPR19SRVNUT1JFX1BPSU5UOgogCQljYXNlIFhMT0dfRlBXX0NIQU5HRToKIAkJ Y2FzZSBYTE9HX0ZQSV9GT1JfSElOVDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sb2dpY2FsLmMKaW5kZXggMWE1OGRkNzY0OS4uOTNhNGZjZjE1YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKQEAgLTExOSwyMyArMTE5 LDIyIEBAIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKHZvaWQpCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJ IGVycm1zZygibG9naWNhbCBkZWNvZGluZyByZXF1aXJlcyBhIGRhdGFiYXNlIGNvbm5lY3Rp b24iKSkpOwogCi0JLyogLS0tLQotCSAqIFRPRE86IFdlIGdvdCB0byBjaGFuZ2UgdGhhdCBz b21lZGF5IHNvb24uLi4KLQkgKgotCSAqIFRoZXJlJ3MgYmFzaWNhbGx5IHRocmVlIHRoaW5n cyBtaXNzaW5nIHRvIGFsbG93IHRoaXM6Ci0JICogMSkgV2UgbmVlZCB0byBiZSBhYmxlIHRv IGNvcnJlY3RseSBhbmQgcXVpY2tseSBpZGVudGlmeSB0aGUgdGltZWxpbmUgYQotCSAqCSAg TFNOIGJlbG9uZ3MgdG8KLQkgKiAyKSBXZSBuZWVkIHRvIGZvcmNlIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHRvIGJlIGVuYWJsZWQgYXQgYWxsIHRpbWVzIHNvCi0JICoJICB0aGUgcHJpbWFy eSBjYW5ub3QgcmVtb3ZlIHJvd3Mgd2UgbmVlZC4KLQkgKiAzKSBzdXBwb3J0IGRyb3BwaW5n IHJlcGxpY2F0aW9uIHNsb3RzIHJlZmVycmluZyB0byBhIGRhdGFiYXNlLCBpbgotCSAqCSAg ZGJhc2VfcmVkby4gVGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSBvbmVzIGR1ZSB0byBIUyBy ZWNvdmVyeQotCSAqCSAgY29uZmxpY3RzLCBzbyB0aGF0IHNob3VsZCBiZSByZWxhdGl2ZWx5 IGVhc3kuCi0JICogLS0tLQotCSAqLwogCWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKLQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCi0JCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBjYW5ub3QgYmUgdXNlZCB3 aGlsZSBpbiByZWNvdmVyeSIpKSk7CisJeworCQkvKgorCQkgKiBUaGlzIGNoZWNrIG1heSBo YXZlIHJhY2UgY29uZGl0aW9ucywgYnV0IHdoZW5ldmVyCisJCSAqIFhMT0dfUEFSQU1FVEVS X0NIQU5HRSBpbmRpY2F0ZXMgdGhhdCB3YWxfbGV2ZWwgaGFzIGNoYW5nZWQsIHdlCisJCSAq IHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBleGlzdGluZyBsb2dpY2FsIHJlcGxpY2F0aW9u IHNsb3RzLiBBbmQgdG8KKwkJICogYXZvaWQgcmFjZXMgYXJvdW5kIGNyZWF0aW5nIGEgbmV3 IHNsb3QsCisJCSAqIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKCkgaXMgY2Fs bGVkIG9uY2UgYmVmb3JlIGNyZWF0aW5nCisJCSAqIHRoZSBzbG90LCBhbmQgb25jZSB3aGVu IGxvZ2ljYWwgZGVjb2RpbmcgaXMgaW5pdGlhbGx5IHN0YXJ0aW5nIHVwLgorCQkgKi8KKwkJ aWYgKEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KCkgPCBXQUxfTEVWRUxfTE9HSUNBTCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9J Tl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5n IG9uIHN0YW5kYnkgcmVxdWlyZXMgIgorCQkJCQkJCSJ3YWxfbGV2ZWwgdG8gYmUgYXQgbGVh c3QgbG9naWNhbCBvbiBtYXN0ZXIiKSkpOworCX0KIH0KIAogLyoKQEAgLTMzMSw2ICszMzAs MTIgQEAgQ3JlYXRlSW5pdERlY29kaW5nQ29udGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJ TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4OwogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRl eHQ7CiAKKwkvKgorCSAqIE9uIHN0YW5kYnksIHRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJl ZCB3aGlsZSBjcmVhdGluZyB0aGUgc2xvdC4gQ2hlY2sKKwkgKiB0aGUgY29tbWVudHMgaW4g dGhpcyBmdW5jdGlvbi4KKwkgKi8KKwlDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50 cygpOworCiAJLyogc2hvcnRlciBsaW5lcy4uLiAqLwogCXNsb3QgPSBNeVJlcGxpY2F0aW9u U2xvdDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IGYyMjU3MmJlMzAuLjFmN2E2 ODZjYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTUxLDYgKzUxLDcgQEAKICNp bmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dy ZWNvdmVyeS5oIgogCiAvKgogICogUmVwbGljYXRpb24gc2xvdCBvbi1kaXNrIGRhdGEgc3Ry dWN0dXJlLgpAQCAtMTE3NSwzNyArMTE3NiwyOCBAQCBSZXBsaWNhdGlvblNsb3RSZXNlcnZl V2FsKHZvaWQpCiAJCS8qCiAJCSAqIEZvciBsb2dpY2FsIHNsb3RzIGxvZyBhIHN0YW5kYnkg c25hcHNob3QgYW5kIHN0YXJ0IGxvZ2ljYWwgZGVjb2RpbmcKIAkJICogYXQgZXhhY3RseSB0 aGF0IHBvc2l0aW9uLiBUaGF0IGFsbG93cyB0aGUgc2xvdCB0byBzdGFydCB1cCBtb3JlCi0J CSAqIHF1aWNrbHkuCisJCSAqIHF1aWNrbHkuIEJ1dCBvbiBhIHN0YW5kYnkgd2UgY2Fubm90 IGRvIFdBTCB3cml0ZXMsIHNvIGp1c3QgdXNlIHRoZQorCQkgKiByZXBsYXkgcG9pbnRlcjsg ZWZmZWN0aXZlbHksIGFuIGF0dGVtcHQgdG8gY3JlYXRlIGEgbG9naWNhbCBzbG90IG9uCisJ CSAqIHN0YW5kYnkgd2lsbCBjYXVzZSBpdCB0byB3YWl0IGZvciBhbiB4bF9ydW5uaW5nX3hh Y3QgcmVjb3JkIHRvIGJlCisJCSAqIGxvZ2dlZCBpbmRlcGVuZGVudGx5IG9uIHRoZSBwcmlt YXJ5LCBzbyB0aGF0IGEgc25hcHNob3QgY2FuIGJlIGJ1aWx0CisJCSAqIHVzaW5nIHRoZSBy ZWNvcmQuCiAJCSAqCi0JCSAqIFRoYXQncyBub3QgbmVlZGVkIChvciBpbmRlZWQgaGVscGZ1 bCkgZm9yIHBoeXNpY2FsIHNsb3RzIGFzIHRoZXknbGwKLQkJICogc3RhcnQgcmVwbGF5IGF0 IHRoZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50IGFueXdheS4gSW5zdGVhZCByZXR1cm4KLQkJ ICogdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNsaWdo dGx5IGluY3JlYXNlcwotCQkgKiB0aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0byByZXRyeSwg aXQncyB3aGVyZSBhIGJhc2UgYmFja3VwIGhhcyB0bwotCQkgKiBzdGFydCByZXBsYXkgYXQu CisJCSAqIE5vbmUgb2YgdGhpcyBpcyBuZWVkZWQgKG9yIGluZGVlZCBoZWxwZnVsKSBmb3Ig cGh5c2ljYWwgc2xvdHMgYXMKKwkJICogdGhleSdsbCBzdGFydCByZXBsYXkgYXQgdGhlIGxh c3QgbG9nZ2VkIGNoZWNrcG9pbnQgYW55d2F5LiBJbnN0ZWFkCisJCSAqIHJldHVybiB0aGUg bG9jYXRpb24gb2YgdGhlIGxhc3QgcmVkbyBMU04uIFdoaWxlIHRoYXQgc2xpZ2h0bHkKKwkJ ICogaW5jcmVhc2VzIHRoZSBjaGFuY2UgdGhhdCB3ZSBoYXZlIHRvIHJldHJ5LCBpdCdzIHdo ZXJlIGEgYmFzZSBiYWNrdXAKKwkJICogaGFzIHRvIHN0YXJ0IHJlcGxheSBhdC4KIAkJICov Ci0JCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgU2xvdElzTG9naWNhbChzbG90KSkK LQkJewotCQkJWExvZ1JlY1B0cglmbHVzaHB0cjsKLQotCQkJLyogc3RhcnQgYXQgY3VycmVu dCBpbnNlcnQgcG9zaXRpb24gKi8KKwkJaWYgKFNsb3RJc1BoeXNpY2FsKHNsb3QpKQorCQkJ cmVzdGFydF9sc24gPSBHZXRSZWRvUmVjUHRyKCk7CisJCWVsc2UgaWYgKFJlY292ZXJ5SW5Q cm9ncmVzcygpKQorCQkJcmVzdGFydF9sc24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwp OworCQllbHNlCiAJCQlyZXN0YXJ0X2xzbiA9IEdldFhMb2dJbnNlcnRSZWNQdHIoKTsKLQkJ CVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0 X2xzbiA9IHJlc3RhcnRfbHNuOwotCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7 Ci0KLQkJCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBzdGFy dCAqLwotCQkJZmx1c2hwdHIgPSBMb2dTdGFuZGJ5U25hcHNob3QoKTsKIAotCQkJLyogYW5k IG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8gZGlzayAqLwotCQkJWExvZ0ZsdXNoKGZsdXNo cHRyKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0 cigpOwotCQkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7Ci0JCQlzbG90LT5kYXRh LnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNsb3Qt Pm11dGV4KTsKLQkJfQorCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKKwkJc2xv dC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOworCQlTcGluTG9ja1JlbGVhc2Uo JnNsb3QtPm11dGV4KTsKIAogCQkvKiBwcmV2ZW50IFdBTCByZW1vdmFsIGFzIGZhc3QgYXMg cG9zc2libGUgKi8KIAkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwpA QCAtMTIyMSw2ICsxMjEzLDE3IEBAIFJlcGxpY2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkK IAkJaWYgKFhMb2dHZXRMYXN0UmVtb3ZlZFNlZ25vKCkgPCBzZWdubykKIAkJCWJyZWFrOwog CX0KKworCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgU2xvdElzTG9naWNhbChzbG90 KSkKKwl7CisJCVhMb2dSZWNQdHIJZmx1c2hwdHI7CisKKwkJLyogbWFrZSBzdXJlIHdlIGhh dmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHN0YXJ0ICovCisJCWZsdXNocHRyID0gTG9nU3Rh bmRieVNuYXBzaG90KCk7CisKKwkJLyogYW5kIG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8g ZGlzayAqLworCQlYTG9nRmx1c2goZmx1c2hwdHIpOworCX0KIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggODdhYjQ2NzQ0Ni4uZmQ2NmIyMDliNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTkwNiwxNCArOTA2LDE4 IEBAIGxvZ2ljYWxfcmVhZF94bG9nX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExv Z1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxCiAJaW50CQkJY291bnQ7CiAJV0FMUmVh ZEVycm9yIGVycmluZm87CiAJWExvZ1NlZ05vCXNlZ25vOwotCVRpbWVMaW5lSUQJY3VyclRM SSA9IEdldFdBTEluc2VydGlvblRpbWVMaW5lKCk7CisJVGltZUxpbmVJRAljdXJyVExJOwog CiAJLyoKLQkgKiBTaW5jZSBsb2dpY2FsIGRlY29kaW5nIGlzIG9ubHkgcGVybWl0dGVkIG9u IGEgcHJpbWFyeSBzZXJ2ZXIsIHdlIGtub3cKLQkgKiB0aGF0IHRoZSBjdXJyZW50IHRpbWVs aW5lIElEIGNhbid0IGJlIGNoYW5naW5nIGFueSBtb3JlLiBJZiB3ZSBkaWQgdGhpcwotCSAq IG9uIGEgc3RhbmRieSwgd2UnZCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSB2YWx1ZXMgd2Ug Y29tcHV0ZSBoZXJlCi0JICogYmVjb21pbmcgaW52YWxpZCBkdWUgdG8gYSBwcm9tb3Rpb24g b3IgdGltZWxpbmUgY2hhbmdlLgorCSAqIFNpbmNlIGxvZ2ljYWwgZGVjb2RpbmcgaXMgYWxz byBwZXJtaXR0ZWQgb24gYSBzdGFuZGJ5IHNlcnZlciwgd2UgbmVlZAorCSAqIHRvIGNoZWNr IGlmIHRoZSBzZXJ2ZXIgaXMgaW4gcmVjb3ZlcnkgdG8gZGVjaWRlIGhvdyB0byBnZXQgdGhl IGN1cnJlbnQKKwkgKiB0aW1lbGluZSBJRCAoc28gdGhhdCBpdCBhbHNvIGNvdmVyIHRoZSBw cm9tb3Rpb24gb3IgdGltZWxpbmUgY2hhbmdlIGNhc2VzKS4KIAkgKi8KKwlpZiAoYW1fY2Fz Y2FkaW5nX3dhbHNlbmRlcikKKwkJR2V0WExvZ1JlcGxheVJlY1B0cigmY3VyclRMSSk7CisJ ZWxzZQorCQljdXJyVExJID0gR2V0V0FMSW5zZXJ0aW9uVGltZUxpbmUoKTsKKwogCVhMb2dS ZWFkRGV0ZXJtaW5lVGltZWxpbmUoc3RhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbiwgY3Vy clRMSSk7CiAJc2VuZFRpbWVMaW5lSXNIaXN0b3JpYyA9IChzdGF0ZS0+Y3VyclRMSSAhPSBj dXJyVExJKTsKIAlzZW5kVGltZUxpbmUgPSBzdGF0ZS0+Y3VyclRMSTsKQEAgLTMwNzQsMTAg KzMwNzgsMTQgQEAgWExvZ1NlbmRMb2dpY2FsKHZvaWQpCiAJICogSWYgZmlyc3QgdGltZSB0 aHJvdWdoIGluIHRoaXMgc2Vzc2lvbiwgaW5pdGlhbGl6ZSBmbHVzaFB0ci4gIE90aGVyd2lz ZSwKIAkgKiB3ZSBvbmx5IG5lZWQgdG8gdXBkYXRlIGZsdXNoUHRyIGlmIEVuZFJlY1B0ciBp cyBwYXN0IGl0LgogCSAqLwotCWlmIChmbHVzaFB0ciA9PSBJbnZhbGlkWExvZ1JlY1B0cikK LQkJZmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cihOVUxMKTsKLQllbHNlIGlmIChsb2dpY2Fs X2RlY29kaW5nX2N0eC0+cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCi0JCWZsdXNo UHRyID0gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7CisJaWYgKGZsdXNoUHRyID09IEludmFsaWRY TG9nUmVjUHRyIHx8CisJCWxvZ2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0 ciA+PSBmbHVzaFB0cikKKwl7CisJCWlmIChhbV9jYXNjYWRpbmdfd2Fsc2VuZGVyKQorCQkJ Zmx1c2hQdHIgPSBHZXRTdGFuZGJ5Rmx1c2hSZWNQdHIoTlVMTCk7CisJCWVsc2UKKwkJCWZs dXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7CisJfQogCiAJLyogSWYgRW5kUmVjUHRy IGlzIHN0aWxsIHBhc3Qgb3VyIGZsdXNoUHRyLCBpdCBtZWFucyB3ZSBjYXVnaHQgdXAuICov CiAJaWYgKGxvZ2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVz aFB0cikKQEAgLTMxNjgsNyArMzE3Niw4IEBAIEdldFN0YW5kYnlGbHVzaFJlY1B0cihUaW1l TGluZUlEICp0bGkpCiAJcmVjZWl2ZVB0ciA9IEdldFdhbFJjdkZsdXNoUmVjUHRyKE5VTEws ICZyZWNlaXZlVExJKTsKIAlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBs YXlUTEkpOwogCi0JKnRsaSA9IHJlcGxheVRMSTsKKwlpZiAodGxpKQorCQkqdGxpID0gcmVw bGF5VExJOwogCiAJcmVzdWx0ID0gcmVwbGF5UHRyOwogCWlmIChyZWNlaXZlVExJID09IHJl cGxheVRMSSAmJiByZWNlaXZlUHRyID4gcmVwbGF5UHRyKQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKaW5kZXgg Y2ZlNTQwOTczOC4uNDhjYTg1MjM4MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCkBAIC0yMzAsNiArMjMw LDcgQEAgZXh0ZXJuIHZvaWQgWExPR1NobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIEJv b3RTdHJhcFhMT0codm9pZCk7CiBleHRlcm4gdm9pZCBJbml0aWFsaXplV2FsQ29uc2lzdGVu Y3lDaGVja2luZyh2b2lkKTsKIGV4dGVybiB2b2lkIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxl KGJvb2wgcmVzZXQpOworZXh0ZXJuIFdhbExldmVsIEdldEFjdGl2ZVdhbExldmVsT25TdGFu ZGJ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgU3RhcnR1cFhMT0codm9pZCk7CiBleHRlcm4gdm9p ZCBTaHV0ZG93blhMT0coaW50IGNvZGUsIERhdHVtIGFyZyk7CiBleHRlcm4gdm9pZCBDcmVh dGVDaGVja1BvaW50KGludCBmbGFncyk7Ci0tIAoyLjM0LjEKCg== --------------eJ0RSYO43K13hlRACWx5MsCB Content-Type: text/plain; charset=UTF-8; name="v40-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v40-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAxYzRkODVhNDQyZGMwYmZjMmY4OGYwYTEwNmE5YWI0YTAxZGJmNWUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAxNiBKYW4gMjAyMyAxNDoxODozMiArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQwIDIvNl0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLAppbnZhbGlkYXRlIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhp bmcgaWYgd2FsX2xldmVsIG9uIG1hc3RlcgppcyByZWR1Y2VkIHRvIGJlbG93IGxvZ2ljYWwg YW5kIHRoZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0YW5kYnkuIEludHJv ZHVjZSBhIG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90CmNvbmZsaWN0IHJl Y292ZXJ5LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyBm aWVsZDoKY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90LgoKQXV0aG9yOiBBbmRyZXMgRnJldW5k IChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2 b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVy dCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAxMSArCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaF94bG9nLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHhsb2cuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAyNCArKy0KIHNyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAgMyArLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAgICAgIHwgIDEzICstCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAxOTEgKysrKysr KysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAg ICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAg ICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAg ICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAg ICAgICAgICAgIHwgIDI0ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X2RhdGFiYXNlLmMgIHwgICA0ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5j cy5jICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 ICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3Qu aCAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2ln bmFsLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRi eS5oICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dCAgICAgICAgICAgfCAgIDMgKy0KIDIyIGZpbGVzIGNoYW5nZWQsIDI2OCBp bnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkKICAgMy40JSBkb2Mvc3JjL3NnbWwvCiAg IDguNSUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgIDUuMyUgc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC8KICA1Ni43JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi8K ICAgNS4yJSBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy8KICAgNy4zJSBzcmMvYmFja2VuZC90 Y29wLwogICA1LjUlIHNyYy9iYWNrZW5kLwogICAzLjUlIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uLwogICAzLjQlIHNyYy9pbmNsdWRlLwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDM1 OGQyZmY5MGYuLmFhYmY3NDQ3OGQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDMzOSw2 ICs0MzM5LDE3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgZGVhZGxv Y2tzCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbmZsX2FjdGl2ZV9s b2dpY2Fsc2xvdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBhY3RpdmUgbG9naWNhbCBz bG90cyBpbiB0aGlzIGRhdGFiYXNlIHRoYXQgaGF2ZSBiZWVuCisgICAgICAgaW52YWxpZGF0 ZWQgYmVjYXVzZSB0aGV5IGNvbmZsaWN0IHdpdGggcmVjb3ZlcnkgKG5vdGUgdGhhdCBpbmFj dGl2ZSBvbmVzCisgICAgICAgYXJlIGFsc28gaW52YWxpZGF0ZWQgYnV0IGRvIG5vdCBpbmNy ZW1lbnQgdGhpcyBjb3VudGVyKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4IGQwY2YxYjJjODEuLjViMTU2MmZlMGUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtMTk3LDYgKzE5Nyw3IEBAIGdpc3RS ZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVjR2V0 QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwpOwogCiAJCVJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25hcHNob3RDb25mbGlj dEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJ CQlybG9jYXRvcik7CiAJfQogCkBAIC0zOTAsNiArMzkxLDcgQEAgZ2lzdFJlZG9QYWdlUmV1 c2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKEluSG90U3RhbmRieSkK IAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKHhscmVjLT5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCSAgIHhscmVjLT5pc0NhdGFs b2dSZWwsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bG9jYXRvcik7CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMDhjZWI5MTI4OC4uYjg1NjMwNDc0NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEwMDMsNiArMTAwMyw3 IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBO VUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0NhdGFsb2dS ZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKaW5kZXggMGUzN2JhZDIxMy4uYjIwNGRmZTEzMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMKQEAgLTg4OTAsNiArODg5MCw3IEBAIGhlYXBfeGxvZ19wcnVuZShYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5KQogCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGlj dEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJ CXJsb2NhdG9yKTsKIAogCS8qCkBAIC05MDU5LDYgKzkwNjAsNyBAQCBoZWFwX3hsb2dfdmlz aWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5 KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJ VFlNQVBfSVNfQ0FUQUxPR19SRUwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAogCS8qCkBA IC05MTc2LDYgKzkxNzgsNyBAQCBoZWFwX3hsb2dfZnJlZXplX3BhZ2UoWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2Nh dG9yLCBOVUxMLCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3QoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+ aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IDQxNGNhNGY2ZGUuLmM4N2U0NmVkNjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBAIC02NjksNiArNjY5LDcgQEAg YnRyZWVfeGxvZ19kZWxldGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVhMb2dSZWNH ZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVMTCk7CiAKIAkJUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJ CQlybG9jYXRvcik7CiAJfQogCkBAIC0xMDA3LDYgKzEwMDgsNyBAQCBidHJlZV94bG9nX3Jl dXNlX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAlpZiAoSW5Ib3RTdGFuZGJ5 KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoeGxyZWMt PnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJICAgeGxyZWMtPmlzQ2F0 YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5sb2NhdG9yKTsKIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwppbmRleCBiMDcxYjU5YzhhLi40NTlhYzkyOWJh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwpAQCAtODc5LDYgKzg3OSw3 IEBAIHNwZ1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAog CQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmbG9jYXRvciwgTlVMTCwgTlVMTCk7 CiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXNDYXRhbG9nUmVsLAog CQkJCQkJCQkJCQlsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YwppbmRleCA4ZjQ3ZmI3NTcwLi41YjZlYmZhY2Y5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZy5jCkBAIC02NDQ1LDYgKzY0NDUsNyBAQCBDcmVhdGVDaGVja1BvaW50KGludCBm bGFncykKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqdnhpZHM7CiAJaW50CQkJbnZ4aWRzOwog CWludAkJCW9sZFhMb2dBbGxvd2VkID0gMDsKKwlib29sCQlpbnZhbGlkYXRlZCA9IGZhbHNl OwogCiAJLyoKIAkgKiBBbiBlbmQtb2YtcmVjb3ZlcnkgY2hlY2twb2ludCBpcyByZWFsbHkg YSBzaHV0ZG93biBjaGVja3BvaW50LCBqdXN0CkBAIC02ODA1LDcgKzY4MDYsOCBAQCBDcmVh dGVDaGVja1BvaW50KGludCBmbGFncykKIAkgKi8KIAlYTEJ5dGVUb1NlZyhSZWRvUmVjUHRy LCBfbG9nU2VnTm8sIHdhbF9zZWdtZW50X3NpemUpOwogCUtlZXBMb2dTZWcocmVjcHRyLCAm X2xvZ1NlZ05vKTsKLQlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhf bG9nU2VnTm8pKQorCUludmFsaWRhdGVPYnNvbGV0ZU9yQ29uZmxpY3RpbmdMb2dpY2FsUmVw bGljYXRpb25TbG90cyhfbG9nU2VnTm8sICZpbnZhbGlkYXRlZCwgSW52YWxpZE9pZCwgTlVM TCk7CisJaWYgKGludmFsaWRhdGVkKQogCXsKIAkJLyoKIAkJICogU29tZSBzbG90cyBoYXZl IGJlZW4gaW52YWxpZGF0ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2VnbWVudApAQCAtNzA4 NCw2ICs3MDg2LDcgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlYTG9nUmVj UHRyCWVuZHB0cjsKIAlYTG9nU2VnTm8JX2xvZ1NlZ05vOwogCVRpbWVzdGFtcFR6IHh0aW1l OworCWJvb2wJCWludmFsaWRhdGVkID0gZmFsc2U7CiAKIAkvKiBDb25jdXJyZW50IGNoZWNr cG9pbnQvcmVzdGFydHBvaW50IGNhbm5vdCBoYXBwZW4gKi8KIAlBc3NlcnQoIUlzVW5kZXJQ b3N0bWFzdGVyIHx8IE15QmFja2VuZFR5cGUgPT0gQl9DSEVDS1BPSU5URVIpOwpAQCAtNzI0 OSw3ICs3MjUyLDggQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlyZXBsYXlQ dHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEkpOwogCWVuZHB0ciA9IChyZWNl aXZlUHRyIDwgcmVwbGF5UHRyKSA/IHJlcGxheVB0ciA6IHJlY2VpdmVQdHI7CiAJS2VlcExv Z1NlZyhlbmRwdHIsICZfbG9nU2VnTm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBs aWNhdGlvblNsb3RzKF9sb2dTZWdObykpCisJSW52YWxpZGF0ZU9ic29sZXRlT3JDb25mbGlj dGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKF9sb2dTZWdObywgJmludmFsaWRhdGVkLCBJ bnZhbGlkT2lkLCBOVUxMKTsKKwlpZiAoaW52YWxpZGF0ZWQpCiAJewogCQkvKgogCQkgKiBT b21lIHNsb3RzIGhhdmUgYmVlbiBpbnZhbGlkYXRlZDsgcmVjYWxjdWxhdGUgdGhlIG9sZC1z ZWdtZW50CkBAIC03OTYzLDYgKzc5NjcsMjIgQEAgeGxvZ19yZWRvKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQkvKiBVcGRhdGUgb3VyIGNvcHkgb2YgdGhlIHBhcmFtZXRlcnMgaW4g cGdfY29udHJvbCAqLwogCQltZW1jcHkoJnhscmVjLCBYTG9nUmVjR2V0RGF0YShyZWNvcmQp LCBzaXplb2YoeGxfcGFyYW1ldGVyX2NoYW5nZSkpOwogCisJCS8qCisJCSAqIEludmFsaWRh dGUgbG9naWNhbCBzbG90cyBpZiB3ZSBhcmUgaW4gaG90IHN0YW5kYnkgYW5kIHRoZSBwcmlt YXJ5IGRvZXMgbm90CisJCSAqIGhhdmUgYSBXQUwgbGV2ZWwgc3VmZmljaWVudCBmb3IgbG9n aWNhbCBkZWNvZGluZy4gTm8gbmVlZCB0byBzZWFyY2gKKwkJICogZm9yIHBvdGVudGlhbGx5 IGNvbmZsaWN0aW5nIGxvZ2ljYWxseSBzbG90cyBpZiBzdGFuZGJ5IGlzIHJ1bm5pbmcKKwkJ ICogd2l0aCB3YWxfbGV2ZWwgbG93ZXIgdGhhbiBsb2dpY2FsLCBiZWNhdXNlIGluIHRoYXQg Y2FzZSwgd2Ugd291bGQKKwkJICogaGF2ZSBlaXRoZXIgZGlzYWxsb3dlZCBjcmVhdGlvbiBv ZiBsb2dpY2FsIHNsb3RzIG9yIGludmFsaWRhdGVkIGV4aXN0aW5nCisJCSAqIG9uZXMuCisJ CSAqLworCQlpZiAoSW5SZWNvdmVyeSAmJiBJbkhvdFN0YW5kYnkgJiYKKwkJCXhscmVjLndh bF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMICYmCisJCQl3YWxfbGV2ZWwgPj0gV0FMX0xF VkVMX0xPR0lDQUwpCisJCXsKKwkJCVRyYW5zYWN0aW9uSWQgQ29uZmxpY3RIb3Jpem9uID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCQlJbnZhbGlkYXRlT2Jzb2xldGVPckNvbmZsaWN0 aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMoSW52YWxpZFhMb2dSZWNQdHIsIE5VTEwsIElu dmFsaWRPaWQsICZDb25mbGljdEhvcml6b24pOworCQl9CisKIAkJTFdMb2NrQWNxdWlyZShD b250cm9sRmlsZUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJCUNvbnRyb2xGaWxlLT5NYXhDb25u ZWN0aW9ucyA9IHhscmVjLk1heENvbm5lY3Rpb25zOwogCQlDb250cm9sRmlsZS0+bWF4X3dv cmtlcl9wcm9jZXNzZXMgPSB4bHJlYy5tYXhfd29ya2VyX3Byb2Nlc3NlczsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCBkMmE4YzgyOTAwLi5iYmVlZTFmMzM5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMDY0LDcgKzEw NjQsOCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyBBUwogICAg ICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhELm9pZCkgQVMgY29uZmxf bG9jaywKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90KEQu b2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X2J1ZmZlcnBpbihELm9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAgICAgICAg ICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhELm9pZCkgQVMg Y29uZmxfZGVhZGxvY2sKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0 YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAorICAgICAgICAgICAg cGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QoRC5vaWQpIEFTIGNvbmZsX2Fj dGl2ZV9sb2dpY2Fsc2xvdAogICAgIEZST00gcGdfZGF0YWJhc2UgRDsKIAogQ1JFQVRFIFZJ RVcgcGdfc3RhdF91c2VyX2Z1bmN0aW9ucyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXggZmExYjY0MWEyYi4uMDcwZmQz NzhlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2lj YWxmdW5jcy5jCkBAIC0yMTYsOSArMjE2LDkgQEAgcGdfbG9naWNhbF9zbG90X2dldF9jaGFu Z2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29uZmlybSwgYm9vbCBi aW4KIAogCQkvKgogCQkgKiBBZnRlciB0aGUgc2FuaXR5IGNoZWNrcyBpbiBDcmVhdGVEZWNv ZGluZ0NvbnRleHQsIG1ha2Ugc3VyZSB0aGUKLQkJICogcmVzdGFydF9sc24gaXMgdmFsaWQu ICBBdm9pZCAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMKLQkJICogZXJy bXNnIGJlY2F1c2UgdGhhdCdkIGJlIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91dCBubyBj aGFuZ2VzCi0JCSAqIGJlaW5nIGF2YWlsYWJsZS4KKwkJICogcmVzdGFydF9sc24gaXMgdmFs aWQgb3IgYm90aCB4bWluIGFuZCBjYXRhbG9nX3htaW4gYXJlIHZhbGlkLiBBdm9pZAorCQkg KiAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMgZXJybXNnIGJlY2F1c2Ug dGhhdCdkIGJlCisJCSAqIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91dCBubyBjaGFuZ2Vz IGJlaW5nIGF2YWlsYWJsZS4KIAkJICovCiAJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15 UmVwbGljYXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkKIAkJCWVyZXBvcnQoRVJST1Is CkBAIC0yMjcsNiArMjI3LDEzIEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlc19ndXRz KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmluCiAJCQkJ CQkJTmFtZVN0cigqbmFtZSkpLAogCQkJCQkgZXJyZGV0YWlsKCJUaGlzIHNsb3QgaGFzIG5l dmVyIHByZXZpb3VzbHkgcmVzZXJ2ZWQgV0FMLCBvciBpdCBoYXMgYmVlbiBpbnZhbGlkYXRl ZC4iKSkpOwogCisJCWlmIChMb2dpY2FsUmVwbGljYXRpb25TbG90SXNJbnZhbGlkKE15UmVw bGljYXRpb25TbG90KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJj YW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJ CQkJCU5hbWVTdHIoKm5hbWUpKSwKKwkJCQkJIGVycmRldGFpbCgiVGhpcyBzbG90IGhhcyBi ZWVuIGludmFsaWRhdGVkIGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5nIHdpdGggcmVjb3Zl cnkuIikpKTsKKwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAkJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBmMjg2OTE4ZjY5Li5mMjI1NzJiZTMw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0xMjI0LDIwICsxMjI0LDIxIEBAIFJl cGxpY2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkKIH0KIAogLyoKLSAqIEhlbHBlciBmb3Ig SW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyAtLSBhY3F1aXJlcyB0aGUgZ2l2 ZW4gc2xvdAotICogYW5kIG1hcmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3Nz aWJsZS4KKyAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZU9ic29sZXRlT3JDb25mbGljdGluZ0xv Z2ljYWxSZXBsaWNhdGlvblNsb3RzCisgKgorICogQWNxdWlyZXMgdGhlIGdpdmVuIHNsb3Qg YW5kIG1hcmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZS4KICAqCiAg KiBSZXR1cm5zIHdoZXRoZXIgUmVwbGljYXRpb25TbG90Q29udHJvbExvY2sgd2FzIHJlbGVh c2VkIGluIHRoZSBpbnRlcmltIChhbmQKICAqIGluIHRoYXQgY2FzZSB3ZSdyZSBub3QgaG9s ZGluZyB0aGUgbG9jayBhdCByZXR1cm4sIG90aGVyd2lzZSB3ZSBhcmUpLgogICoKLSAqIFNl dHMgKmludmFsaWRhdGVkIHRydWUgaWYgdGhlIHNsb3Qgd2FzIGludmFsaWRhdGVkLiAoVW50 b3VjaGVkIG90aGVyd2lzZS4pCisgKiBTZXRzICppbnZhbGlkYXRlZCB0cnVlIGlmIGFuIG9i c29sZXRlIHNsb3Qgd2FzIGludmFsaWRhdGVkLiAoVW50b3VjaGVkIG90aGVyd2lzZS4pCiAg KgogICogVGhpcyBpcyBpbmhlcmVudGx5IHJhY3ksIGJlY2F1c2Ugd2UgcmVsZWFzZSB0aGUg TFdMb2NrCiAgKiBmb3Igc3lzY2FsbHMsIHNvIGNhbGxlciBtdXN0IHJlc3RhcnQgaWYgd2Ug cmV0dXJuIHRydWUuCiAgKi8KIHN0YXRpYyBib29sCi1JbnZhbGlkYXRlUG9zc2libHlPYnNv bGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKLQkJ CQkJCQkgICBib29sICppbnZhbGlkYXRlZCkKK0ludmFsaWRhdGVQb3NzaWJseU9ic29sZXRl T3JDb25mbGljdGluZ0xvZ2ljYWxTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0 ciBvbGRlc3RMU04sCisJCQkJCQkJCQkJCQkgICBib29sICppbnZhbGlkYXRlZCwgVHJhbnNh Y3Rpb25JZCAqeGlkKQogewogCWludAkJCWxhc3Rfc2lnbmFsZWRfcGlkID0gMDsKIAlib29s CQlyZWxlYXNlZF9sb2NrID0gZmFsc2U7CkBAIC0xMjQ1LDYgKzEyNDYsOSBAQCBJbnZhbGlk YXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRy IG9sZGVzdExTTiwKIAlmb3IgKDs7KQogCXsKIAkJWExvZ1JlY1B0cglyZXN0YXJ0X2xzbjsK KwkJVHJhbnNhY3Rpb25JZCBzbG90X3htaW47CisJCVRyYW5zYWN0aW9uSWQgc2xvdF9jYXRh bG9nX3htaW47CisKIAkJTmFtZURhdGEJc2xvdG5hbWU7CiAJCWludAkJCWFjdGl2ZV9waWQg PSAwOwogCkBAIC0xMjYxLDE4ICsxMjY1LDMzIEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29s ZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkg KiBDaGVjayBpZiB0aGUgc2xvdCBuZWVkcyB0byBiZSBpbnZhbGlkYXRlZC4gSWYgaXQgbmVl ZHMgdG8gYmUKIAkJICogaW52YWxpZGF0ZWQsIGFuZCBpcyBub3QgY3VycmVudGx5IGFjcXVp cmVkLCBhY3F1aXJlIGl0IGFuZCBtYXJrIGl0CiAJCSAqIGFzIGhhdmluZyBiZWVuIGludmFs aWRhdGVkLiAgV2UgZG8gdGhpcyB3aXRoIHRoZSBzcGlubG9jayBoZWxkIHRvCi0JCSAqIGF2 b2lkIHJhY2UgY29uZGl0aW9ucyAtLSBmb3IgZXhhbXBsZSB0aGUgcmVzdGFydF9sc24gY291 bGQgbW92ZQotCQkgKiBmb3J3YXJkLCBvciB0aGUgc2xvdCBjb3VsZCBiZSBkcm9wcGVkLgor CQkgKiBhdm9pZCByYWNlIGNvbmRpdGlvbnMgLS0gZm9yIGV4YW1wbGUgdGhlIHJlc3RhcnRf bHNuIChvciB0aGUKKwkJICogeG1pbihzKSBjb3VsZCkgbW92ZSBmb3J3YXJkIG9yIHRoZSBz bG90IGNvdWxkIGJlIGRyb3BwZWQuCiAJCSAqLwogCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11 dGV4KTsKIAogCQlyZXN0YXJ0X2xzbiA9IHMtPmRhdGEucmVzdGFydF9sc247CisJCXNsb3Rf eG1pbiA9IHMtPmRhdGEueG1pbjsKKwkJc2xvdF9jYXRhbG9nX3htaW4gPSBzLT5kYXRhLmNh dGFsb2dfeG1pbjsKKworCQkvKiBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIChsb2dpY2Fs IGRlY29kaW5nIGNvbmZsaWN0IGNhc2UpICovCisJCWlmICgoeGlkICYmCisJCQkgKChMb2dp Y2FsUmVwbGljYXRpb25TbG90SXNJbnZhbGlkKHMpKQorCQkJICB8fAogCiAJCS8qCi0JCSAq IElmIHRoZSBzbG90IGlzIGFscmVhZHkgaW52YWxpZCBvciBpcyBmcmVzaCBlbm91Z2gsIHdl IGRvbid0IG5lZWQgdG8KLQkJICogZG8gYW55dGhpbmcuCisJCSAqIFdlIGFyZSBub3QgZm9y Y2luZyBmb3IgaW52YWxpZGF0aW9uIGJlY2F1c2UgdGhlIHhpZCBpcyB2YWxpZCBhbmQKKwkJ ICogdGhpcyBpcyBhIG5vbiBjb25mbGljdGluZyBzbG90LgogCQkgKi8KLQkJaWYgKFhMb2dS ZWNQdHJJc0ludmFsaWQocmVzdGFydF9sc24pIHx8IHJlc3RhcnRfbHNuID49IG9sZGVzdExT TikKKwkJCSAgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKCp4aWQpICYmICEoCisJCQkJCQkJCQkJ CSAgIChUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X3htaW4pICYmIFRyYW5zYWN0aW9uSWRQ cmVjZWRlc09yRXF1YWxzKHNsb3RfeG1pbiwgKnhpZCkpCisJCQkJCQkJCQkJCSAgIHx8CisJ CQkJCQkJCQkJCSAgIChUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X2NhdGFsb2dfeG1pbikg JiYgVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoc2xvdF9jYXRhbG9nX3htaW4sICp4 aWQpKQorCQkJCQkJCQkJCQkgICApKQorCQkJICApKQorCQkJfHwKKwkJLyogc2xvdCBoYXMg YmVlbiBpbnZhbGlkYXRlZCAob2Jzb2xldGUgTFNOIGNhc2UpICovCisJCQkoIXhpZCAmJiAo WExvZ1JlY1B0cklzSW52YWxpZChyZXN0YXJ0X2xzbikgfHwgcmVzdGFydF9sc24gPj0gb2xk ZXN0TFNOKSkpCiAJCXsKIAkJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOwogCQkJaWYg KHJlbGVhc2VkX2xvY2spCkBAIC0xMjkyLDExICsxMzExLDE4IEBAIEludmFsaWRhdGVQb3Nz aWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0 TFNOLAogCQl7CiAJCQlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7CiAJCQlzLT5hY3RpdmVfcGlk ID0gTXlQcm9jUGlkOwotCQkJcy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCA9IHJlc3RhcnRfbHNu OwotCQkJcy0+ZGF0YS5yZXN0YXJ0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwotCi0JCQkv KiBMZXQgY2FsbGVyIGtub3cgKi8KLQkJCSppbnZhbGlkYXRlZCA9IHRydWU7CisJCQlpZiAo eGlkKQorCQkJeworCQkJCXMtPmRhdGEueG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwor CQkJCXMtPmRhdGEuY2F0YWxvZ194bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCQl9 CisJCQllbHNlCisJCQl7CisJCQkJcy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCA9IHJlc3RhcnRf bHNuOworCQkJCXMtPmRhdGEucmVzdGFydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJ CQkvKiBMZXQgY2FsbGVyIGtub3cgKi8KKwkJCQkqaW52YWxpZGF0ZWQgPSB0cnVlOworCQkJ fQogCQl9CiAKIAkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CkBAIC0xMzI3LDE1ICsx MzUzLDM5IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNs b3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkJICovCiAJCQlpZiAobGFzdF9zaWdu YWxlZF9waWQgIT0gYWN0aXZlX3BpZCkKIAkJCXsKLQkJCQllcmVwb3J0KExPRywKLQkJCQkJ CWVycm1zZygidGVybWluYXRpbmcgcHJvY2VzcyAlZCB0byByZWxlYXNlIHJlcGxpY2F0aW9u IHNsb3QgXCIlc1wiIiwKLQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1l KSksCi0JCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhj ZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAotCQkJCQkJCQkgIExTTl9GT1JNQVRf QVJHUyhyZXN0YXJ0X2xzbiksCi0JCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKG9s ZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCi0JCQkJCQllcnJoaW50KCJZb3UgbWlnaHQgbmVl ZCB0byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKwkJCQlpZiAoeGlk KQorCQkJCXsKKwkJCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKCp4aWQpKQorCQkJCQl7 CisJCQkJCQllcmVwb3J0KExPRywKKwkJCQkJCQkJZXJybXNnKCJ0ZXJtaW5hdGluZyBwcm9j ZXNzICVkIGJlY2F1c2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgY29uZmxpY3RzIHdpdGgg cmVjb3ZlcnkiLAorCQkJCQkJCQkJICAgYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkp LAorCQkJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90IGNvbmZsaWN0ZWQgd2l0aCB4aWQgaG9y aXpvbiAldS4iLAorCQkJCQkJCQkJCSAgKnhpZCkpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJ CQkJeworCQkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJCWVycm1zZygidGVybWluYXRpbmcg cHJvY2VzcyAlZCBiZWNhdXNlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGNvbmZsaWN0cyB3 aXRoIHJlY292ZXJ5IiwKKwkJCQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5h bWUpKSwKKwkJCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkg cmVxdWlyZXMgd2FsX2xldmVsIHRvIGJlIGF0IGxlYXN0IGxvZ2ljYWwgb24gbWFzdGVyIikp OworCQkJCQl9CisKKwkJCQkJKHZvaWQpIFNlbmRQcm9jU2lnbmFsKGFjdGl2ZV9waWQsIFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QsIEludmFsaWRCYWNrZW5kSWQp OworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJCQkJCQll cnJtc2coInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgdG8gcmVsZWFzZSByZXBsaWNhdGlvbiBz bG90IFwiJXNcIiIsCisJCQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUp KSwKKwkJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhj ZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAorCQkJCQkJCQkJICBMU05fRk9STUFU X0FSR1MocmVzdGFydF9sc24pLAorCQkJCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSAo b2xkZXN0TFNOIC0gcmVzdGFydF9sc24pKSwKKwkJCQkJCQllcnJoaW50KCJZb3UgbWlnaHQg bmVlZCB0byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKworCQkJCQko dm9pZCkga2lsbChhY3RpdmVfcGlkLCBTSUdURVJNKTsKKwkJCQl9CiAKLQkJCQkodm9pZCkg a2lsbChhY3RpdmVfcGlkLCBTSUdURVJNKTsKIAkJCQlsYXN0X3NpZ25hbGVkX3BpZCA9IGFj dGl2ZV9waWQ7CiAJCQl9CiAKQEAgLTEzNjksMTMgKzE0MTksMzMgQEAgSW52YWxpZGF0ZVBv c3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRl c3RMU04sCiAJCQlSZXBsaWNhdGlvblNsb3RTYXZlKCk7CiAJCQlSZXBsaWNhdGlvblNsb3RS ZWxlYXNlKCk7CiAKLQkJCWVyZXBvcnQoTE9HLAotCQkJCQllcnJtc2coImludmFsaWRhdGlu ZyBvYnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCi0JCQkJCQkgICBOYW1lU3Ry KHNsb3RuYW1lKSksCi0JCQkJCWVycmRldGFpbCgiVGhlIHNsb3QncyByZXN0YXJ0X2xzbiAl WC8lWCBleGNlZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5dGVzLiIsCi0JCQkJCQkJICBMU05f Rk9STUFUX0FSR1MocmVzdGFydF9sc24pLAotCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9u ZykgKG9sZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCi0JCQkJCWVycmhpbnQoIllvdSBtaWdo dCBuZWVkIHRvIGluY3JlYXNlIG1heF9zbG90X3dhbF9rZWVwX3NpemUuIikpOworCQkJaWYg KHhpZCkKKwkJCXsKKwkJCQlwZ3N0YXRfZHJvcF9yZXBsc2xvdChzKTsKKworCQkJCWlmIChU cmFuc2FjdGlvbklkSXNWYWxpZCgqeGlkKSkKKwkJCQl7CisJCQkJCWVyZXBvcnQoTE9HLAor CQkJCQkJCWVycm1zZygiaW52YWxpZGF0aW5nIHNsb3QgXCIlc1wiIGJlY2F1c2UgaXQgY29u ZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJZXJy ZGV0YWlsKCJUaGUgc2xvdCBjb25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gJXUuIiwgKnhp ZCkpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJCQkJ CQllcnJtc2coImludmFsaWRhdGluZyBzbG90IFwiJXNcIiBiZWNhdXNlIGl0IGNvbmZsaWN0 cyB3aXRoIHJlY292ZXJ5IiwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkJCWVycmRldGFp bCgiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCB0byBi ZSBhdCBsZWFzdCBsb2dpY2FsIG9uIG1hc3RlciIpKTsKKwkJCQl9CisJCQl9CisJCQllbHNl CisJCQl7CisJCQkJZXJlcG9ydChMT0csCisJCQkJCQllcnJtc2coImludmFsaWRhdGluZyBv YnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCisJCQkJCQkJICAgTmFtZVN0cihz bG90bmFtZSkpLAorCQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVY LyVYIGV4Y2VlZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0ZXMuIiwKKwkJCQkJCQkJICBMU05f Rk9STUFUX0FSR1MocmVzdGFydF9sc24pLAorCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxv bmcpIChvbGRlc3RMU04gLSByZXN0YXJ0X2xzbikpLAorCQkJCQkJZXJyaGludCgiWW91IG1p Z2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisJCQl9 CiAKIAkJCS8qIGRvbmUgd2l0aCB0aGlzIHNsb3QgZm9yIG5vdyAqLwogCQkJYnJlYWs7CkBA IC0xMzg4LDIwICsxNDU4LDM4IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChS ZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogfQogCiAvKgotICog TWFyayBhbnkgc2xvdCB0aGF0IHBvaW50cyB0byBhbiBMU04gb2xkZXIgdGhhbiB0aGUgZ2l2 ZW4gc2VnbWVudAotICogYXMgaW52YWxpZDsgaXQgcmVxdWlyZXMgV0FMIHRoYXQncyBhYm91 dCB0byBiZSByZW1vdmVkLgorICogSW52YWxpZGF0ZSBPYnNvbGV0ZSBzbG90cyBvciByZXNv bHZlIHJlY292ZXJ5IGNvbmZsaWN0cyB3aXRoIGxvZ2ljYWwgc2xvdHMuCiAgKgotICogUmV0 dXJucyB0cnVlIHdoZW4gYW55IHNsb3QgaGF2ZSBnb3QgaW52YWxpZGF0ZWQuCisgKiBPYnNv bGV0ZSBjYXNlIChha2EgeGlkIGlzIE5VTEwpOgogICoKLSAqIE5CIC0gdGhpcyBydW5zIGFz IHBhcnQgb2YgY2hlY2twb2ludCwgc28gYXZvaWQgcmFpc2luZyBlcnJvcnMgaWYgcG9zc2li bGUuCisgKgkgTWFyayBhbnkgc2xvdCB0aGF0IHBvaW50cyB0byBhbiBMU04gb2xkZXIgdGhh biB0aGUgZ2l2ZW4gc2VnbWVudAorICoJIGFzIGludmFsaWQ7IGl0IHJlcXVpcmVzIFdBTCB0 aGF0J3MgYWJvdXQgdG8gYmUgcmVtb3ZlZC4KKyAqCSBiZWVuaW52YWxpZGF0ZWQgaXMgc2V0 IHRvIHRydWUgd2hlbiBhbnkgc2xvdCBoYXZlIGdvdCBpbnZhbGlkYXRlZC4KKyAqCisgKiAg TG9naWNhbCByZXBsaWNhdGlvbiBzbG90IGNhc2U6CisgKgorICoJIFdoZW4geGlkIGlzIHZh bGlkLCBpdCBtZWFucyB0aGF0IHdlIGFyZSBhYm91dCB0byByZW1vdmUgcm93cyBvbGRlciB0 aGFuIHhpZC4KKyAqCSBUaGVyZWZvcmUgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHNsb3RzIHRo YXQgZGVwZW5kIG9uIHNlZWluZyB0aG9zZSByb3dzLgorICoJIFdoZW4geGlkIGlzIGludmFs aWQsIGludmFsaWRhdGUgYWxsIGxvZ2ljYWwgc2xvdHMuIFRoaXMgaXMgcmVxdWlyZWQgd2hl biB0aGUKKyAqCSBtYXN0ZXIgd2FsX2xldmVsIGlzIHNldCBiYWNrIHRvIHJlcGxpY2EsIHNv IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgbmVlZCB0bworICoJIGJlIGludmFsaWRhdGVkLgog ICovCi1ib29sCi1JbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdO byBvbGRlc3RTZWdubykKK3ZvaWQKK0ludmFsaWRhdGVPYnNvbGV0ZU9yQ29uZmxpY3RpbmdM b2dpY2FsUmVwbGljYXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8sIGJvb2wgKmJl ZW5pbnZhbGlkYXRlZCwgT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkICp4aWQpCiB7Ci0JWExv Z1JlY1B0cglvbGRlc3RMU047Ci0JYm9vbAkJaW52YWxpZGF0ZWQgPSBmYWxzZTsKIAotCVhM b2dTZWdOb09mZnNldFRvUmVjUHRyKG9sZGVzdFNlZ25vLCAwLCB3YWxfc2VnbWVudF9zaXpl LCBvbGRlc3RMU04pOworCVhMb2dSZWNQdHIJb2xkZXN0TFNOID0gSW52YWxpZFhMb2dSZWNQ dHI7CisKKwlBc3NlcnQobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID49IDApOworCisJaWYgKG1h eF9yZXBsaWNhdGlvbl9zbG90cyA9PSAwKQorCQlyZXR1cm47CisKKwlpZiAoIXhpZCkKKwl7 CisJCSpiZWVuaW52YWxpZGF0ZWQgPSBmYWxzZTsKKwkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQ dHIob2xkZXN0U2Vnbm8sIDAsIHdhbF9zZWdtZW50X3NpemUsIG9sZGVzdExTTik7CisJfQog CiByZXN0YXJ0OgogCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ss IExXX1NIQVJFRCk7CkBAIC0xNDEyLDI0ICsxNTAwLDM1IEBAIHJlc3RhcnQ6CiAJCWlmICgh cy0+aW5fdXNlKQogCQkJY29udGludWU7CiAKLQkJaWYgKEludmFsaWRhdGVQb3NzaWJseU9i c29sZXRlU2xvdChzLCBvbGRlc3RMU04sICZpbnZhbGlkYXRlZCkpCisJCWlmICh4aWQpCiAJ CXsKLQkJCS8qIGlmIHRoZSBsb2NrIHdhcyByZWxlYXNlZCwgc3RhcnQgZnJvbSBzY3JhdGNo ICovCi0JCQlnb3RvIHJlc3RhcnQ7CisJCQkvKiB3ZSBhcmUgb25seSBkZWFsaW5nIHdpdGgg KmxvZ2ljYWwqIHNsb3QgY29uZmxpY3RzICovCisJCQlpZiAoIVNsb3RJc0xvZ2ljYWwocykp CisJCQkJY29udGludWU7CisKKwkJCS8qCisJCQkgKiBub3QgdGhlIGRhdGFiYXNlIG9mIGlu dGVyZXN0IGFuZCB3ZSBkb24ndCB3YW50IGFsbCB0aGUKKwkJCSAqIGRhdGFiYXNlLCBza2lw CisJCQkgKi8KKwkJCWlmIChzLT5kYXRhLmRhdGFiYXNlICE9IGRib2lkICYmIFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKCp4aWQpKQorCQkJCWNvbnRpbnVlOwogCQl9CisKKwkJaWYgKEludmFs aWRhdGVQb3NzaWJseU9ic29sZXRlT3JDb25mbGljdGluZ0xvZ2ljYWxTbG90KHMsIG9sZGVz dExTTiwgYmVlbmludmFsaWRhdGVkLCB4aWQpKQorCQkJZ290byByZXN0YXJ0OwogCX0KKwog CUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOwogCiAJLyoKLQkg KiBJZiBhbnkgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCByZWNhbGN1bGF0ZSB0aGUg cmVzb3VyY2UgbGltaXRzLgorCSAqIElmIGFueSBvYnNvbGV0ZSBzbG90cyBoYXZlIGJlZW4g aW52YWxpZGF0ZWQsIHJlY2FsY3VsYXRlIHRoZSByZXNvdXJjZQorCSAqIGxpbWl0cy4KIAkg Ki8KLQlpZiAoaW52YWxpZGF0ZWQpCisJaWYgKCF4aWQgJiYgKmJlZW5pbnZhbGlkYXRlZCkK IAl7CiAJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGZhbHNlKTsKIAkJ UmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogCX0KLQotCXJldHVybiBp bnZhbGlkYXRlZDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMK aW5kZXggMDE1YWUyOTk1ZC4uODdhYjQ2NzQ0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2Fsc2VuZGVyLmMKQEAgLTEyNTMsNiArMTI1MywxNCBAQCBTdGFydExvZ2ljYWxSZXBsaWNh dGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAKIAlSZXBsaWNhdGlvblNsb3RBY3F1 aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOwogCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWluKQorCQkgJiYgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLmNhdGFsb2dfeG1pbikpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCWNtZC0+c2xvdG5hbWUpLAorCQkJCSBl cnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNlIGl0IHdh cyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5LiIpKSk7CisKIAlpZiAoWExvZ1JlY1B0cklz SW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9j c2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXgg Mzk1YjJjZjY5MC4uYzg1Y2I1Y2MxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYwpAQCAtNjczLDYgKzY3Myw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVy KFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9TTkFQU0hPVCkpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFs KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpKQorCQlSZWNvdmVyeUNv bmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Qp OworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NU QVJUVVBfREVBRExPQ0spKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYwppbmRleCA5NGNjODYwZjVmLi5kYWJhNzY2OTQ3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAidXRp bHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUg InV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKIAog LyogVXNlci1zZXR0YWJsZSBHVUMgcGFyYW1ldGVycyAqLwogaW50CQkJdmFjdXVtX2RlZmVy X2NsZWFudXBfYWdlOwpAQCAtNDc1LDYgKzQ3Niw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKICAq Lwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCWJvb2wgaXNDYXRhbG9n UmVsLAogCQkJCQkJCQkJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcikKIHsKIAlWaXJ0dWFsVHJh bnNhY3Rpb25JZCAqYmFja2VuZHM7CkBAIC01MDAsNiArNTAyLDkgQEAgUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbiwKIAkJCQkJCQkJCQkgICBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBT SE9ULAogCQkJCQkJCQkJCSAgIFdBSVRfRVZFTlRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNI T1QsCiAJCQkJCQkJCQkJICAgdHJ1ZSk7CisKKwlpZiAod2FsX2xldmVsID49IFdBTF9MRVZF TF9MT0dJQ0FMICYmIGlzQ2F0YWxvZ1JlbCkKKwkJSW52YWxpZGF0ZU9ic29sZXRlT3JDb25m bGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKEludmFsaWRYTG9nUmVjUHRyLCBOVUxM LCBsb2NhdG9yLmRiT2lkLCAmc25hcHNob3RDb25mbGljdEhvcml6b24pOwogfQogCiAvKgpA QCAtNTA4LDYgKzUxMyw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90 KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAgKi8KIHZvaWQKIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkgICBib29sIGlzQ2F0 YWxvZ1JlbCwKIAkJCQkJCQkJCQkgICBSZWxGaWxlTG9jYXRvciBsb2NhdG9yKQogewogCS8q CkBAIC01MjYsNyArNTMyLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3IKIAkJVHJh bnNhY3Rpb25JZCB0cnVuY2F0ZWQ7CiAKIAkJdHJ1bmNhdGVkID0gWGlkRnJvbUZ1bGxUcmFu c2FjdGlvbklkKHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKLQkJUmVzb2x2ZVJlY292ZXJ5 Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLCBsb2NhdG9yKTsKKwkJUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLAorCQkJCQkJCQkJCQlpc0Nh dGFsb2dSZWwsCisJCQkJCQkJCQkJCWxvY2F0b3IpOwogCX0KIH0KIApAQCAtMTQ4Nyw2ICsx NDk1LDkgQEAgZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rlc2MoUHJvY1NpZ25hbFJlYXNvbiBy ZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKIAkJ CXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiBzbmFwc2hvdCIpOwogCQkJ YnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoK KwkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiByZXBsaWNhdGlvbiBz bG90Iik7CisJCQlicmVhazsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NU QVJUVVBfREVBRExPQ0s6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qg b24gYnVmZmVyIGRlYWRsb2NrIik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRl eCA0NzBiNzM0ZTllLi4wMDQxODk2NjIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0yNDgx LDYgKzI0ODEsOSBAQCBlcnJkZXRhaWxfcmVjb3ZlcnlfY29uZmxpY3Qodm9pZCkKIAkJY2Fz ZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCQkJZXJyZGV0YWlsKCJV c2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNlZSByb3cgdmVyc2lvbnMgdGhhdCBt dXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZXJyZGV0YWlsKCJVc2VyIHdhcyB1c2luZyB0 aGUgbG9naWNhbCBzbG90IHRoYXQgbXVzdCBiZSBkcm9wcGVkLiIpOworCQkJYnJlYWs7CiAJ CWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJ ZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0aW9uIGNhdXNlZCBidWZmZXIgZGVhZGxvY2sgd2l0 aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFrOwpAQCAtMzA1MCw2ICszMDUzLDI3IEBAIFJlY292 ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJCQljYXNl IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKIAkJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX1NOQVBTSE9UOgorCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xP R0lDQUxTTE9UOgorCisJCQkJLyoKKwkJCQkgKiBGb3IgY29uZmxpY3RzIHRoYXQgcmVxdWly ZSBhIGxvZ2ljYWwgc2xvdCB0byBiZQorCQkJCSAqIGludmFsaWRhdGVkLCB0aGUgcmVxdWly ZW1lbnQgaXMgZm9yIHRoZSBzaWduYWwgcmVjZWl2ZXIgdG8KKwkJCQkgKiByZWxlYXNlIHRo ZSBzbG90LCBzbyB0aGF0IGl0IGNvdWxkIGJlIGludmFsaWRhdGVkIGJ5IHRoZQorCQkJCSAq IHNpZ25hbCBzZW5kZXIuIFNvIGZvciBub3JtYWwgYmFja2VuZHMsIHRoZSB0cmFuc2FjdGlv bgorCQkJCSAqIHNob3VsZCBiZSBhYm9ydGVkLCBqdXN0IGxpa2UgZm9yIG90aGVyIHJlY292 ZXJ5IGNvbmZsaWN0cy4KKwkJCQkgKiBCdXQgaWYgaXQncyB3YWxzZW5kZXIgb24gc3RhbmRi eSwgd2UgZG9uJ3Qgd2FudCB0byBnbworCQkJCSAqIHRocm91Z2ggdGhlIGZvbGxvd2luZyBJ c1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkKKwkJCQkgKiBjaGVjaywgc28gYnJl YWsgaGVyZS4KKwkJCQkgKi8KKwkJCQlpZiAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciAmJgor CQkJCQlyZWFzb24gPT0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCAm JgorCQkJCQlNeVJlcGxpY2F0aW9uU2xvdCAmJiBTbG90SXNMb2dpY2FsKE15UmVwbGljYXRp b25TbG90KSkKKwkJCQl7CisJCQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1ZTsK KwkJCQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJSW50ZXJydXB0UGVuZGlu ZyA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KIAogCQkJCS8qCiAJCQkJICogSWYgd2Ug YXJlbid0IGluIGEgdHJhbnNhY3Rpb24gYW55IGxvbmdlciB0aGVuIGlnbm9yZS4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKaW5kZXggNmU2 NTBjZWFhZC4uNzE0OWYyMmY3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X2RhdGFiYXNlLmMKQEAgLTEwOSw2ICsxMDksOSBAQCBwZ3N0YXRfcmVwb3J0 X3JlY292ZXJ5X2NvbmZsaWN0KGludCByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9CVUZGRVJQSU46CiAJCQlkYmVudHJ5LT5jb25mbGljdF9idWZmZXJwaW4r KzsKIAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNB TFNMT1Q6CisJCQlkYmVudHJ5LT5jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJlYWs7 CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgog CQkJZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jaysrOwogCQkJYnJlYWs7CkBA IC0zODcsNiArMzkwLDcgQEAgcGdzdGF0X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9FbnRy eVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChj b25mbGljdF90YWJsZXNwYWNlKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9s b2NrKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9zbmFwc2hvdCk7CisJUEdT VEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3RfbG9naWNhbHNsb3QpOwogCVBHU1RBVF9BQ0NV TV9EQkNPVU5UKGNvbmZsaWN0X2J1ZmZlcnBpbik7CiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQo Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3Rh dGZ1bmNzLmMKaW5kZXggNThiZDEzNjBiOS4uYWFmMzg3ODYzZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTEwNTUsNiArMTA1NSw4IEBAIFBHX1NUQVRfR0VU X0RCRU5UUllfSU5UNjQoeGFjdF9jb21taXQpCiAvKiBwZ19zdGF0X2dldF9kYl94YWN0X3Jv bGxiYWNrICovCiBQR19TVEFUX0dFVF9EQkVOVFJZX0lOVDY0KHhhY3Rfcm9sbGJhY2spCiAK Ky8qIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICovCitQR19TVEFUX0dF VF9EQkVOVFJZX0lOVDY0KGNvbmZsaWN0X2xvZ2ljYWxzbG90KQogCiBEYXR1bQogcGdfc3Rh dF9nZXRfZGJfc3RhdF9yZXNldF90aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0xMDg4LDYg KzEwOTAsNyBAQCBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9hbGwoUEdfRlVOQ1RJT05fQVJH UykKIAkJcmVzdWx0ID0gKGludDY0KSAoZGJlbnRyeS0+Y29uZmxpY3RfdGFibGVzcGFjZSAr CiAJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5LT5j b25mbGljdF9zbmFwc2hvdCArCisJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvZ2ljYWxz bG90ICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJCSAg ZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CmluZGV4IDM4MTBkZTdiMjIuLjAxZjRmZmVmOWEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtNTU1MCw2ICs1NTUwLDExIEBACiAgIHByb25hbWUgPT4gJ3Bn X3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAog ICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBl cyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFw c2hvdCcgfSwKK3sgb2lkID0+ICc5OTAxJywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJl Y292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgbG9naWNhbCByZXBsaWNh dGlvbiBzbG90JywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9n aWNhbHNsb3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdyJywg cHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMg PT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JyB9LAogeyBvaWQgPT4g JzMwNjgnLAogICBkZXNjciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3RzIGlu IGRhdGFiYXNlIGNhdXNlZCBieSBzaGFyZWQgYnVmZmVyIHBpbicsCiAgIHByb25hbWUgPT4g J3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbicsIHByb3ZvbGF0aWxlID0+ICdz JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdz dGF0LmgKaW5kZXggNWUzMzI2YTNiOS4uODcyZWIzNTc1NyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTI5MSw2ICsy OTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdERCRW50cnkKIAlQZ1N0YXRfQ291 bnRlciBjb25mbGljdF90YWJsZXNwYWNlOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X2xv Y2s7CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3Rfc25hcHNob3Q7CisJUGdTdGF0X0NvdW50 ZXIgY29uZmxpY3RfbG9naWNhbHNsb3Q7CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3RfYnVm ZmVycGluOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2s7CiAJ UGdTdGF0X0NvdW50ZXIgdGVtcF9maWxlczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRl eCA4ODcyYzgwY2RmLi5kMzkyYjVlZWM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBA IC0xNyw2ICsxNyw4IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKIAorI2RlZmluZSBMb2dpY2FsUmVwbGljYXRp b25TbG90SXNJbnZhbGlkKHMpICghVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS54bWlu KSAmJiBcCisJCQkJCQkJCQkJCSAhVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS5jYXRh bG9nX3htaW4pKQogLyoKICAqIEJlaGF2aW91ciBvZiByZXBsaWNhdGlvbiBzbG90cywgdXBv biByZWxlYXNlIG9yIGNyYXNoLgogICoKQEAgLTIxNSw3ICsyMTcsNyBAQCBleHRlcm4gdm9p ZCBSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKHZvaWQpOwogZXh0ZXJuIFhM b2dSZWNQdHIgUmVwbGljYXRpb25TbG90c0NvbXB1dGVMb2dpY2FsUmVzdGFydExTTih2b2lk KTsKIGV4dGVybiBib29sIFJlcGxpY2F0aW9uU2xvdHNDb3VudERCU2xvdHMoT2lkIGRib2lk LCBpbnQgKm5zbG90cywgaW50ICpuYWN0aXZlKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9u U2xvdHNEcm9wREJTbG90cyhPaWQgZGJvaWQpOwotZXh0ZXJuIGJvb2wgSW52YWxpZGF0ZU9i c29sZXRlUmVwbGljYXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8pOworZXh0ZXJu IHZvaWQgSW52YWxpZGF0ZU9ic29sZXRlT3JDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlv blNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubywgYm9vbCAqYmVlbmludmFsaWRhdGVkLCBP aWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgKnhpZCk7CiBleHRlcm4gUmVwbGljYXRpb25TbG90 ICpTZWFyY2hOYW1lZFJlcGxpY2F0aW9uU2xvdChjb25zdCBjaGFyICpuYW1lLCBib29sIG5l ZWRfbG9jayk7CiBleHRlcm4gaW50CVJlcGxpY2F0aW9uU2xvdEluZGV4KFJlcGxpY2F0aW9u U2xvdCAqc2xvdCk7CiBleHRlcm4gYm9vbCBSZXBsaWNhdGlvblNsb3ROYW1lKGludCBpbmRl eCwgTmFtZSBuYW1lKTsKQEAgLTIyNyw1ICsyMjksNiBAQCBleHRlcm4gdm9pZCBDaGVja1Bv aW50UmVwbGljYXRpb25TbG90cyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UmVx dWlyZW1lbnRzKHZvaWQpOwogZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UGVybWlzc2lvbnModm9p ZCk7CitleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2dpY2FsU2xv dHMoT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqcmVhc29uKTsKIAogI2Vu ZGlmCQkJCQkJCS8qIFNMT1RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRl eCA5MDVhZjIyMzFiLi4yZjUyMTAwYjAwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwu aApAQCAtNDIsNiArNDIsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX1RBQkxFU1BBQ0UsCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLLAog CVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCisJUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9MT0dJQ0FMU0xPVCwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JV RkZFUlBJTiwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0ss CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKaW5kZXggMmVmZmRlYTEyNi4uNDFmNGRjMzcyZSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKQEAgLTMwLDggKzMwLDEwIEBAIGV4dGVybiB2b2lk IEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCk7CiBleHRlcm4gdm9p ZCBTaHV0ZG93blJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCh2b2lkKTsKIAogZXh0 ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCWJvb2wgaXNDYXRh bG9nUmVsLAogCQkJCQkJCQkJCQkJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcik7CiBleHRlcm4g dm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRy YW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQkJICAg Ym9vbCBpc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0b3IgbG9j YXRvcik7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhUYWJsZXNw YWNlKE9pZCB0c2lkKTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0 aERhdGFiYXNlKE9pZCBkYmlkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK aW5kZXggYTk2OWFlNjNlYi4uMGE2Y2EwODMwMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTE4NjgsNyArMTg2OCw4IEBAIHBnX3N0YXRfZGF0YWJhc2VfY29u ZmxpY3RzfCBTRUxFQ1QgZC5vaWQgQVMgZGF0aWQsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29u ZmxpY3RfbG9jayhkLm9pZCkgQVMgY29uZmxfbG9jaywKICAgICBwZ19zdGF0X2dldF9kYl9j b25mbGljdF9zbmFwc2hvdChkLm9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAgICAgcGdfc3Rh dF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGluKGQub2lkKSBBUyBjb25mbF9idWZmZXJwaW4s Ci0gICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhkLm9pZCkg QVMgY29uZmxfZGVhZGxvY2sKKyAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVw X2RlYWRsb2NrKGQub2lkKSBBUyBjb25mbF9kZWFkbG9jaywKKyAgICBwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9sb2dpY2Fsc2xvdChkLm9pZCkgQVMgY29uZmxfYWN0aXZlX2xvZ2ljYWxz bG90CiAgICBGUk9NIHBnX2RhdGFiYXNlIGQ7CiBwZ19zdGF0X2dzc2FwaXwgU0VMRUNUIHMu cGlkLAogICAgIHMuZ3NzX2F1dGggQVMgZ3NzX2F1dGhlbnRpY2F0ZWQsCi0tIAoyLjM0LjEK Cg== --------------eJ0RSYO43K13hlRACWx5MsCB Content-Type: text/plain; charset=UTF-8; name="v40-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v40-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0MzYxMTI0OThkNjg4MWIxM2E1ODg1MjEyOGQ0OGE4YjMwMjE4ZThmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAxNiBKYW4gMjAyMyAxNDoxNjozOSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQwIDEvNl0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y IGxvZ2ljYWwKIHNsb3QgY29uZmxpY3QgaGFuZGxpbmcuCk1JTUUtVmVyc2lvbjogMS4wCkNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVy LUVuY29kaW5nOiA4Yml0CgpPdmVyYWxsIGRlc2lnbjoKCjEuIFdlIHdhbnQgdG8gZW5hYmxl IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieXMsIGJ1dCByZXBsYXkgb2YgV0FMCmZyb20g dGhlIHByaW1hcnkgbWlnaHQgcmVtb3ZlIGRhdGEgdGhhdCBpcyBuZWVkZWQgYnkgbG9naWNh bCBkZWNvZGluZywKY2F1c2luZyByZXBsaWNhdGlvbiBjb25mbGljdHMgbXVjaCBhcyBob3Qg c3RhbmRieSBkb2VzLgoKMi4gT3VyIGNob3NlbiBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRo IHRoaXMgdHlwZSBvZiByZXBsaWNhdGlvbiBzbG90CmlzIHRvIGludmFsaWRhdGUgbG9naWNh bCBzbG90cyBmb3Igd2hpY2ggbmVlZGVkIGRhdGEgaGFzIGJlZW4gcmVtb3ZlZC4KCjMuIFRv IGRvIHRoaXMgd2UgbmVlZCB0aGUgbGF0ZXN0UmVtb3ZlZFhpZCBmb3IgZWFjaCBjaGFuZ2Us IGp1c3QgYXMgd2UKZG8gZm9yIHBoeXNpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cywgYnV0 IHdlIGFsc28gbmVlZCB0byBrbm93CndoZXRoZXIgYW55IHBhcnRpY3VsYXIgY2hhbmdlIHdh cyB0byBkYXRhIHRoYXQgbG9naWNhbCByZXBsaWNhdGlvbgptaWdodCBhY2Nlc3MuCgo0LiBX ZSBjYW4ndCByZWx5IG9uIHRoZSBzdGFuZGJ5J3MgcmVsY2FjaGUgZW50cmllcyBmb3IgdGhp cyBwdXJwb3NlIGluCmFueSB3YXksIGJlY2F1c2UgdGhlIHN0YXJ0dXAgcHJvY2VzcyBjYW4n dCBhY2Nlc3MgY2F0YWxvZyBjb250ZW50cy4KCjUuIFRoZXJlZm9yZSBldmVyeSBXQUwgcmVj b3JkIHRoYXQgcG90ZW50aWFsbHkgcmVtb3ZlcyBkYXRhIGZyb20gdGhlCmluZGV4IG9yIGhl YXAgbXVzdCBjYXJyeSBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCBpdCBpcyBv bmUKdGhhdCBtaWdodCBiZSBhY2Nlc3NlZCBkdXJpbmcgbG9naWNhbCBkZWNvZGluZy4KCldo eSBkbyB3ZSBuZWVkIHRoaXMgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieT8KCkZp cnN0LCBsZXQncyBmb3JnZXQgYWJvdXQgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IGFu ZCByZWNhbGwgdGhhdApvbiBhIHByaW1hcnkgZGF0YWJhc2UsIGFueSBjYXRhbG9nIHJvd3Mg dGhhdCBtYXkgYmUgbmVlZGVkIGJ5IGEgbG9naWNhbApkZWNvZGluZyByZXBsaWNhdGlvbiBz bG90IGFyZSBub3QgcmVtb3ZlZC4KClRoaXMgaXMgZG9uZSB0aGFua3MgdG8gdGhlIGNhdGFs b2dfeG1pbiBhc3NvY2lhdGVkIHdpdGggdGhlIGxvZ2ljYWwKcmVwbGljYXRpb24gc2xvdC4K CkJ1dCwgd2l0aCBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnksIGluIHRoZSBmb2xsb3dp bmcgY2FzZXM6CgotIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGlzIG9mZgotIGhvdF9zdGFuZGJ5 X2ZlZWRiYWNrIGlzIG9uIGJ1dCB0aGVyZSBpcyBubyBhIHBoeXNpY2FsIHNsb3QgYmV0d2Vl bgogIHRoZSBwcmltYXJ5IGFuZCB0aGUgc3RhbmRieS4gVGhlbiwgaG90X3N0YW5kYnlfZmVl ZGJhY2sgd2lsbCB3b3JrLAogIGJ1dCBvbmx5IHdoaWxlIHRoZSBjb25uZWN0aW9uIGlzIGFs aXZlIChmb3IgZXhhbXBsZSBhIG5vZGUgcmVzdGFydAogIHdvdWxkIGJyZWFrIGl0KQoKVGhl biwgdGhlIHByaW1hcnkgbWF5IGRlbGV0ZSBzeXN0ZW0gY2F0YWxvZyByb3dzIHRoYXQgY291 bGQgYmUgbmVlZGVkCmJ5IHRoZSBsb2dpY2FsIGRlY29kaW5nIG9uIHRoZSBzdGFuZGJ5IChh cyBpdCBkb2VzIG5vdCBrbm93IGFib3V0IHRoZQpjYXRhbG9nX3htaW4gb24gdGhlIHN0YW5k YnkpLgoKU28sIGl04oCZcyBtYW5kYXRvcnkgdG8gaWRlbnRpZnkgdGhvc2Ugcm93cyBhbmQg aW52YWxpZGF0ZSB0aGUgc2xvdHMKdGhhdCBtYXkgbmVlZCB0aGVtIGlmIGFueS4gSWRlbnRp ZnlpbmcgdGhvc2Ugcm93cyBpcyB0aGUgcHVycG9zZSBvZgp0aGlzIGNvbW1pdC4KCkltcGxl bWVudGF0aW9uOgoKV2hlbiBhIFdBTCByZXBsYXkgb24gc3RhbmRieSBpbmRpY2F0ZXMgdGhh dCBhIGNhdGFsb2cgdGFibGUgdHVwbGUgaXMKdG8gYmUgZGVsZXRlZCBieSBhbiB4aWQgdGhh dCBpcyBncmVhdGVyIHRoYW4gYSBsb2dpY2FsIHNsb3QncwpjYXRhbG9nX3htaW4sIHRoZW4g dGhhdCBtZWFucyB0aGUgc2xvdCdzIGNhdGFsb2dfeG1pbiBjb25mbGljdHMgd2l0aAp0aGUg eGlkLCBhbmQgd2UgbmVlZCB0byBoYW5kbGUgdGhlIGNvbmZsaWN0LiBXaGlsZSBzdWJzZXF1 ZW50IGNvbW1pdHMKd2lsbCBkbyB0aGUgYWN0dWFsIGNvbmZsaWN0IGhhbmRsaW5nLCB0aGlz IGNvbW1pdCBhZGRzIGEgbmV3IGZpZWxkCmlzQ2F0YWxvZ1JlbCBpbiBzdWNoIFdBTCByZWNv cmRzIChhbmQgYSBuZXcgYml0IHNldCBpbiB0aGUKeGxfaGVhcF92aXNpYmxlIGZsYWdzIGZp ZWxkKSwgdGhhdCBpcyB0cnVlIGZvciBjYXRhbG9nIHRhYmxlcywgc28gYXMgdG8KYXJyYW5n ZSBmb3IgY29uZmxpY3QgaGFuZGxpbmcuCgpEdWUgdG8gdGhpcyBuZXcgZmllbGQgYmVpbmcg YWRkZWQsIHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlIGFuZApnaXN0eGxvZ0RlbGV0ZSBkbyBu b3cgY29udGFpbiB0aGUgb2Zmc2V0cyB0byBiZSBkZWxldGVkIGFzIGEKRkxFWElCTEVfQVJS QVlfTUVNQkVSLiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgY29ycmVjdCBhbGlnbmVtZW50 LgpJdCdzIG5vdCBuZWVkZWQgb24gdGhlIG90aGVycyBzdHJ1Y3Qgd2hlcmUgaXNDYXRhbG9n UmVsIGhhcwpiZWVuIGFkZGVkLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRl ciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kCkRyb3V2b3QKUmV2aWV3ZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJy aXppbyBkZQpSb3llcyBNZWxsbwotLS0KIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVl LmMgICAgICAgICAgICB8IDE3ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Qu YyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVp bGQuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwu YyAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMg ICAgICAgICB8IDE0ICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMg ICAgICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgfCAgNSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAg IHwgIDkgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICB8 ICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICB8ICAy ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyAgICB8ICAzICst CiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jICAgICAgfCA4MiArKysr KysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jICAg ICAgICB8IDk5ICsrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0cmVlLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHNlYXJjaC5jICAgICAgfCA0NSArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnR1dGlscy5jICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BndmFjdXVtLmMgICAgICB8ICA5ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFs eXplLmMgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1w YXJhbGxlbC5jICAgICAgfCAgNiArKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxh bmNhdC5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0 dmFyaWFudHMuYyB8ICA3ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaCAgICAgICAg ICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmggICAg ICAgICAgfCAgNCArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggICAgICAgICAg ICAgIHwgMTEgKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggICAgICAgICAg ICAgfCAgOCArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICAg IHwgIDggKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCAgICAgICAgICAgICAgICB8 IDMxICsrKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggICAgICAgICAgICAg ICB8ICA2ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oICAgICAgICAgICAgICAg fCAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCAgICAgfCAg OSArLQogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgIHwgIDEg Kwogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggICAgICAgICAgICAgIHwgIDMgKy0K IDM1IGZpbGVzIGNoYW5nZWQsIDIzNCBpbnNlcnRpb25zKCspLCAxODYgZGVsZXRpb25zKC0p CiAgIDQuOCUgY29udHJpYi9hbWNoZWNrLwogICA1LjAlIHNyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0LwogICA1LjMlIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwLwogIDU1LjglIHNyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvCiAgIDUuMCUgc3JjL2JhY2tlbmQvYWNjZXNzLwogICAzLjMl IHNyYy9iYWNrZW5kLwogIDE5LjclIHNyYy9pbmNsdWRlL2FjY2Vzcy8KCmRpZmYgLS1naXQg YS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jIGIvY29udHJpYi9hbWNoZWNrL3Zl cmlmeV9uYnRyZWUuYwppbmRleCAyNTdjZmY2NzFiLi44ZDNhYmJkY2ViIDEwMDY0NAotLS0g YS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVj ay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTE4Myw3ICsxODMsOCBAQCBzdGF0aWMgaW5saW5lIGJv b2wgaW52YXJpYW50X2xfbm9udGFyZ2V0X29mZnNldChCdHJlZUNoZWNrU3RhdGUgKnN0YXRl LAogCQkJCQkJCQkJCQkJT2Zmc2V0TnVtYmVyIHVwcGVyYm91bmQpOwogc3RhdGljIFBhZ2Ug cGFsbG9jX2J0cmVlX3BhZ2UoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIg YmxvY2tudW0pOwogc3RhdGljIGlubGluZSBCVFNjYW5JbnNlcnQgYnRfbWtzY2Fua2V5X3Bp dm90c2VhcmNoKFJlbGF0aW9uIHJlbCwKLQkJCQkJCQkJCQkJCQlJbmRleFR1cGxlIGl0dXAp OworCQkJCQkJCQkJCQkJCUluZGV4VHVwbGUgaXR1cCwKKwkJCQkJCQkJCQkJCQlSZWxhdGlv biBoZWFwcmVsKTsKIHN0YXRpYyBJdGVtSWQgUGFnZUdldEl0ZW1JZENhcmVmdWwoQnRyZWVD aGVja1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIgYmxvY2ssCiAJCQkJCQkJCSAgIFBhZ2Ug cGFnZSwgT2Zmc2V0TnVtYmVyIG9mZnNldCk7CiBzdGF0aWMgaW5saW5lIEl0ZW1Qb2ludGVy IEJUcmVlVHVwbGVHZXRIZWFwVElEQ2FyZWZ1bChCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLApA QCAtMzMxLDcgKzMzMiw3IEBAIGJ0X2luZGV4X2NoZWNrX2ludGVybmFsKE9pZCBpbmRyZWxp ZCwgYm9vbCBwYXJlbnRjaGVjaywgYm9vbCBoZWFwYWxsaW5kZXhlZCwKIAkJCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKSkpOwogCiAJCS8qIEV4dHJhY3QgbWV0YWRh dGEgZnJvbSBtZXRhcGFnZSwgYW5kIHNhbml0aXplIGl0IGluIHBhc3NpbmcgKi8KLQkJX2J0 X21ldGF2ZXJzaW9uKGluZHJlbCwgJmhlYXBrZXlzcGFjZSwgJmFsbGVxdWFsaW1hZ2UpOwor CQlfYnRfbWV0YXZlcnNpb24oaW5kcmVsLCAmaGVhcGtleXNwYWNlLCAmYWxsZXF1YWxpbWFn ZSwgaGVhcHJlbCk7CiAJCWlmIChhbGxlcXVhbGltYWdlICYmICFoZWFwa2V5c3BhY2UpCiAJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOREVYX0NPUlJVUFRF RCksCkBAIC0xMjU4LDcgKzEyNTksNyBAQCBidF90YXJnZXRfcGFnZV9jaGVjayhCdHJlZUNo ZWNrU3RhdGUgKnN0YXRlKQogCQl9CiAKIAkJLyogQnVpbGQgaW5zZXJ0aW9uIHNjYW5rZXkg Zm9yIGN1cnJlbnQgcGFnZSBvZmZzZXQgKi8KLQkJc2tleSA9IGJ0X21rc2NhbmtleV9waXZv dHNlYXJjaChzdGF0ZS0+cmVsLCBpdHVwKTsKKwkJc2tleSA9IGJ0X21rc2NhbmtleV9waXZv dHNlYXJjaChzdGF0ZS0+cmVsLCBpdHVwLCBzdGF0ZS0+aGVhcHJlbCk7CiAKIAkJLyoKIAkJ ICogTWFrZSBzdXJlIHR1cGxlIHNpemUgZG9lcyBub3QgZXhjZWVkIHRoZSByZWxldmFudCBC VFJFRV9WRVJTSU9OCkBAIC0xNzY4LDcgKzE3NjksNyBAQCBidF9yaWdodF9wYWdlX2NoZWNr X3NjYW5rZXkoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSkKIAkgKiBtZW1vcnkgcmVtYWluaW5n IGFsbG9jYXRlZC4KIAkgKi8KIAlmaXJzdGl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0 ZW0ocmlnaHRwYWdlLCByaWdodGl0ZW0pOwotCXJldHVybiBidF9ta3NjYW5rZXlfcGl2b3Rz ZWFyY2goc3RhdGUtPnJlbCwgZmlyc3RpdHVwKTsKKwlyZXR1cm4gYnRfbWtzY2Fua2V5X3Bp dm90c2VhcmNoKHN0YXRlLT5yZWwsIGZpcnN0aXR1cCwgc3RhdGUtPmhlYXByZWwpOwogfQog CiAvKgpAQCAtMjY4MSw3ICsyNjgyLDcgQEAgYnRfcm9vdGRlc2NlbmQoQnRyZWVDaGVja1N0 YXRlICpzdGF0ZSwgSW5kZXhUdXBsZSBpdHVwKQogCUJ1ZmZlcgkJbGJ1ZjsKIAlib29sCQll eGlzdHM7CiAKLQlrZXkgPSBfYnRfbWtzY2Fua2V5KHN0YXRlLT5yZWwsIGl0dXApOworCWtl eSA9IF9idF9ta3NjYW5rZXkoc3RhdGUtPnJlbCwgaXR1cCwgc3RhdGUtPmhlYXByZWwpOwog CUFzc2VydChrZXktPmhlYXBrZXlzcGFjZSAmJiBrZXktPnNjYW50aWQgIT0gTlVMTCk7CiAK IAkvKgpAQCAtMjY5NCw3ICsyNjk1LDcgQEAgYnRfcm9vdGRlc2NlbmQoQnRyZWVDaGVja1N0 YXRlICpzdGF0ZSwgSW5kZXhUdXBsZSBpdHVwKQogCSAqLwogCUFzc2VydChzdGF0ZS0+cmVh ZG9ubHkgJiYgc3RhdGUtPnJvb3RkZXNjZW5kKTsKIAlleGlzdHMgPSBmYWxzZTsKLQlzdGFj ayA9IF9idF9zZWFyY2goc3RhdGUtPnJlbCwga2V5LCAmbGJ1ZiwgQlRfUkVBRCwgTlVMTCk7 CisJc3RhY2sgPSBfYnRfc2VhcmNoKHN0YXRlLT5yZWwsIGtleSwgJmxidWYsIEJUX1JFQUQs IE5VTEwsIHN0YXRlLT5oZWFwcmVsKTsKIAogCWlmIChCdWZmZXJJc1ZhbGlkKGxidWYpKQog CXsKQEAgLTMxMzMsMTEgKzMxMzQsMTEgQEAgcGFsbG9jX2J0cmVlX3BhZ2UoQnRyZWVDaGVj a1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIgYmxvY2tudW0pCiAgKiB0aGUgc2NhbmtleSBp cyBncmVhdGVyLgogICovCiBzdGF0aWMgaW5saW5lIEJUU2Nhbkluc2VydAotYnRfbWtzY2Fu a2V5X3Bpdm90c2VhcmNoKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwKQorYnRfbWtz Y2Fua2V5X3Bpdm90c2VhcmNoKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwLCBSZWxh dGlvbiBoZWFwcmVsKQogewogCUJUU2Nhbkluc2VydCBza2V5OwogCi0Jc2tleSA9IF9idF9t a3NjYW5rZXkocmVsLCBpdHVwKTsKKwlza2V5ID0gX2J0X21rc2NhbmtleShyZWwsIGl0dXAs IGhlYXByZWwpOwogCXNrZXktPnBpdm90c2VhcmNoID0gdHJ1ZTsKIAogCXJldHVybiBza2V5 OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCmluZGV4IGJhMzk0ZjA4ZjYuLjIzNWYxYTE4NDMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKQEAgLTM0OCw3ICszNDgsNyBAQCBnaXN0cGxh Y2V0b3BhZ2UoUmVsYXRpb24gcmVsLCBTaXplIGZyZWVzcGFjZSwgR0lTVFNUQVRFICpnaXN0 c3RhdGUsCiAJCWZvciAoOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKIAkJewogCQkJLyogQWxs b2NhdGUgbmV3IHBhZ2UgKi8KLQkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihyZWwp OworCQkJcHRyLT5idWZmZXIgPSBnaXN0TmV3QnVmZmVyKGhlYXBSZWwsIHJlbCk7CiAJCQlH SVNUSW5pdEJ1ZmZlcihwdHItPmJ1ZmZlciwgKGlzX2xlYWYpID8gRl9MRUFGIDogMCk7CiAJ CQlwdHItPnBhZ2UgPSBCdWZmZXJHZXRQYWdlKHB0ci0+YnVmZmVyKTsKIAkJCXB0ci0+Ymxv Y2suYmxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihwdHItPmJ1ZmZlcik7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCmluZGV4IGQyMWEzMDhkNDEuLmE4Nzg5MGI5NjUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC0yOTgsNyArMjk4LDcg QEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJUGFnZQkJcGFnZTsKIAogCQkvKiBpbml0aWFsaXplIHRoZSByb290 IHBhZ2UgKi8KLQkJYnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihpbmRleCk7CisJCWJ1ZmZlciA9 IGdpc3ROZXdCdWZmZXIoaGVhcCwgaW5kZXgpOwogCQlBc3NlcnQoQnVmZmVyR2V0QmxvY2tO dW1iZXIoYnVmZmVyKSA9PSBHSVNUX1JPT1RfQkxLTk8pOwogCQlwYWdlID0gQnVmZmVyR2V0 UGFnZShidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0dXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwppbmRleCA1 NjQ1MWZlZGUxLi4xMTllMzRjZTBmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGls LmMKQEAgLTgyMSw3ICs4MjEsNyBAQCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZikKICAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIHRo ZSBwYWdlIGJ5IGNhbGxpbmcgR0lTVEluaXRCdWZmZXIKICAqLwogQnVmZmVyCi1naXN0TmV3 QnVmZmVyKFJlbGF0aW9uIHIpCitnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIGhlYXByZWwsIFJl bGF0aW9uIHIpCiB7CiAJQnVmZmVyCQlidWZmZXI7CiAJYm9vbAkJbmVlZExvY2s7CkBAIC04 NjUsNyArODY1LDcgQEAgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKQogCQkJCSAqIHBhZ2Un cyBkZWxldGVYaWQuCiAJCQkJICovCiAJCQkJaWYgKFhMb2dTdGFuZGJ5SW5mb0FjdGl2ZSgp ICYmIFJlbGF0aW9uTmVlZHNXQUwocikpCi0JCQkJCWdpc3RYTG9nUGFnZVJldXNlKHIsIGJs a25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CisJCQkJCWdpc3RYTG9nUGFnZVJl dXNlKGhlYXByZWwsIHIsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CiAK IAkJCQlyZXR1cm4gYnVmZmVyOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9n LmMKaW5kZXggZjY1ODY0MjU0YS4uZDBjZjFiMmM4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0eGxvZy5jCkBAIC0xNzcsNiArMTc3LDcgQEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJZ2lzdHhsb2dEZWxldGUgKnhsZGF0YSA9IChn aXN0eGxvZ0RlbGV0ZSAqKSBYTG9nUmVjR2V0RGF0YShyZWNvcmQpOwogCUJ1ZmZlcgkJYnVm ZmVyOwogCVBhZ2UJCXBhZ2U7CisJT2Zmc2V0TnVtYmVyICp0b0RlbGV0ZSA9IHhsZGF0YS0+ b2Zmc2V0czsKIAogCS8qCiAJICogSWYgd2UgaGF2ZSBhbnkgY29uZmxpY3QgcHJvY2Vzc2lu ZyB0byBkbywgaXQgbXVzdCBoYXBwZW4gYmVmb3JlIHdlCkBAIC0yMDMsMTQgKzIwNCw3IEBA IGdpc3RSZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCXsKIAkJ cGFnZSA9IChQYWdlKSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAKLQkJaWYgKFhMb2dSZWNH ZXREYXRhTGVuKHJlY29yZCkgPiBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSkKLQkJewotCQkJT2Zm c2V0TnVtYmVyICp0b2RlbGV0ZTsKLQotCQkJdG9kZWxldGUgPSAoT2Zmc2V0TnVtYmVyICop ICgoY2hhciAqKSB4bGRhdGEgKyBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSk7Ci0KLQkJCVBhZ2VJ bmRleE11bHRpRGVsZXRlKHBhZ2UsIHRvZGVsZXRlLCB4bGRhdGEtPm50b2RlbGV0ZSk7Ci0J CX0KKwkJUGFnZUluZGV4TXVsdGlEZWxldGUocGFnZSwgdG9EZWxldGUsIHhsZGF0YS0+bnRv ZGVsZXRlKTsKIAogCQlHaXN0Q2xlYXJQYWdlSGFzR2FyYmFnZShwYWdlKTsKIAkJR2lzdE1h cmtUdXBsZXNEZWxldGVkKHBhZ2UpOwpAQCAtNTk3LDcgKzU5MSw4IEBAIGdpc3RYTG9nQXNz aWduTFNOKHZvaWQpCiAgKiBXcml0ZSBYTE9HIHJlY29yZCBhYm91dCByZXVzZSBvZiBhIGRl bGV0ZWQgcGFnZS4KICAqLwogdm9pZAotZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlkKQorZ2lz dFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gaGVhcHJlbCwgUmVsYXRpb24gcmVsLAorCQkJCSAg QmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKIHsKIAln aXN0eGxvZ1BhZ2VSZXVzZSB4bHJlY19yZXVzZTsKIApAQCAtNjA4LDYgKzYwMyw3IEBAIGdp c3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxU cmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKIAkgKi8KIAogCS8qIFhMT0cgc3R1ZmYgKi8KKwl4 bHJlY19yZXVzZS5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNh bERlY29kaW5nKGhlYXByZWwpOwogCXhscmVjX3JldXNlLmxvY2F0b3IgPSByZWwtPnJkX2xv Y2F0b3I7CiAJeGxyZWNfcmV1c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiA9IGRlbGV0ZVhpZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaF94bG9nLmMKaW5kZXggZjM4YjQyZWZiOS4uMDhjZWI5MTI4OCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTk4MCw4ICs5ODAsMTAgQEAgaGFzaF94bG9n X3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlQYWdlCQlwYWdl OwogCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKIAlIYXNoUGFnZU9wYXF1ZSBwYWdlb3BhcXVl OworCU9mZnNldE51bWJlciAqdG9EZWxldGU7CiAKIAl4bGRhdGEgPSAoeGxfaGFzaF92YWN1 dW1fb25lX3BhZ2UgKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKKwl0b0RlbGV0ZSA9IHhs ZGF0YS0+b2Zmc2V0czsKIAogCS8qCiAJICogSWYgd2UgaGF2ZSBhbnkgY29uZmxpY3QgcHJv Y2Vzc2luZyB0byBkbywgaXQgbXVzdCBoYXBwZW4gYmVmb3JlIHdlCkBAIC0xMDEwLDE1ICsx MDEyLDcgQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAl7CiAJCXBhZ2UgPSAoUGFnZSkgQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCi0J CWlmIChYTG9nUmVjR2V0RGF0YUxlbihyZWNvcmQpID4gU2l6ZU9mSGFzaFZhY3V1bU9uZVBh Z2UpCi0JCXsKLQkJCU9mZnNldE51bWJlciAqdW51c2VkOwotCi0JCQl1bnVzZWQgPSAoT2Zm c2V0TnVtYmVyICopICgoY2hhciAqKSB4bGRhdGEgKyBTaXplT2ZIYXNoVmFjdXVtT25lUGFn ZSk7Ci0KLQkJCVBhZ2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHVudXNlZCwgeGxkYXRhLT5u dHVwbGVzKTsKLQkJfQotCisJCVBhZ2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHRvRGVsZXRl LCB4bGRhdGEtPm50dXBsZXMpOwogCQkvKgogCQkgKiBNYXJrIHRoZSBwYWdlIGFzIG5vdCBj b250YWluaW5nIGFueSBMUF9ERUFEIGl0ZW1zLiBTZWUgY29tbWVudHMgaW4KIAkJICogX2hh c2hfdmFjdXVtX29uZV9wYWdlKCkgZm9yIGRldGFpbHMuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNoaW5zZXJ0LmMKaW5kZXggYTYwNGUzMTg5MS4uMjI2NTZiMjRlMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwpAQCAtNDMyLDYgKzQzMiw3IEBAIF9oYXNo X3ZhY3V1bV9vbmVfcGFnZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhyZWwsIEJ1ZmZlciBt ZXRhYnVmLCBCdWZmZXIgYnVmKQogCQkJeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UgeGxyZWM7 CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCQkJeGxyZWMuaXNDYXRhbG9nUmVsID0gUmVs YXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhocmVsKTsKIAkJCXhscmVjLnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247CiAJCQl4 bHJlYy5udHVwbGVzID0gbmRlbGV0YWJsZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCAzODhkZjk0YTQ0Li4wZTM3YmFkMjEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtNjg3MSw2ICs2ODcxLDcgQEAgaGVhcF9mcmVlemVfZXhlY3V0ZV9wcmVw YXJlZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWZmZXIsCiAJCW5wbGFucyA9IGhlYXBfbG9n X2ZyZWV6ZV9wbGFuKHR1cGxlcywgbnR1cGxlcywgcGxhbnMsIG9mZnNldHMpOwogCiAJCXhs cmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247 CisJCXhscmVjLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2Fs RGVjb2RpbmcocmVsKTsKIAkJeGxyZWMubnBsYW5zID0gbnBsYW5zOwogCiAJCVhMb2dCZWdp bkluc2VydCgpOwpAQCAtODQ0MSw3ICs4NDQyLDcgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hy aW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogICogdXBkYXRlIHRoZSBoZWFwIHBh Z2UncyBMU04uCiAgKi8KIFhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZUxv Y2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwK K2xvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1 ZmZlciB2bV9idWZmZXIsCiAJCQkJIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b24sIHVpbnQ4IHZtZmxhZ3MpCiB7CiAJeGxfaGVhcF92aXNpYmxlIHhscmVjOwpAQCAt ODQ1Myw2ICs4NDU0LDggQEAgbG9nX2hlYXBfdmlzaWJsZShSZWxGaWxlTG9jYXRvciBybG9j YXRvciwgQnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAogCiAJeGxyZWMu c25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl4 bHJlYy5mbGFncyA9IHZtZmxhZ3M7CisJaWYgKFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dp Y2FsRGVjb2RpbmcocmVsKSkKKwkJeGxyZWMuZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9JU19D QVRBTE9HX1JFTDsKIAlYTG9nQmVnaW5JbnNlcnQoKTsKIAlYTG9nUmVnaXN0ZXJEYXRhKChj aGFyICopICZ4bHJlYywgU2l6ZU9mSGVhcFZpc2libGUpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBjNGIxOTE2ZDM2Li4zMDczMGMyNGJm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTcy MCwxMSArNzIwLDE2IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0 aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAJCQkJCQkJCSAqbXVsdGlfY3V0b2Zm KTsKIAogCi0JLyogU2V0IHVwIHNvcnRpbmcgaWYgd2FudGVkICovCisJLyoKKwkgKiBTZXQg dXAgc29ydGluZyBpZiB3YW50ZWQuIE5ld0hlYXAgaXMgYmVpbmcgcGFzc2VkIHRvCisJICog dHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoKSwgaXQgY291bGQgaGF2ZSBiZWVuIE9sZEhlYXAg dG9vLiBJdCBkb2VzIG5vdAorCSAqIHJlYWxseSBtYXR0ZXIsIGFzIHRoZSBnb2FsIGlzIHRv IGhhdmUgYSBoZWFwIHJlbGF0aW9uIGJlaW5nIHBhc3NlZCB0bworCSAqIF9idF9sb2dfcmV1 c2VfcGFnZSgpICh3aGljaCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIHRoaXMgY29kZSBw YXRoKS4KKwkgKi8KIAlpZiAodXNlX3NvcnQpCiAJCXR1cGxlc29ydCA9IHR1cGxlc29ydF9i ZWdpbl9jbHVzdGVyKG9sZFR1cERlc2MsIE9sZEluZGV4LAogCQkJCQkJCQkJCQltYWludGVu YW5jZV93b3JrX21lbSwKLQkJCQkJCQkJCQkJTlVMTCwgVFVQTEVTT1JUX05PTkUpOworCQkJ CQkJCQkJCQlOVUxMLCBUVVBMRVNPUlRfTk9ORSwgTmV3SGVhcCk7CiAJZWxzZQogCQl0dXBs ZXNvcnQgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4 IDRlNjVjYmNhZGYuLjNmMDM0MjM1MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCkBAIC00MTgsNiArNDE4LDcgQEAgaGVhcF9wYWdlX3BydW5lKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJeGxfaGVhcF9wcnVuZSB4bHJlYzsKIAkJCVhM b2dSZWNQdHIJcmVjcHRyOwogCisJCQl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklz QWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbGF0aW9uKTsKIAkJCXhscmVjLnNuYXBz aG90Q29uZmxpY3RIb3Jpem9uID0gcHJzdGF0ZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsK IAkJCXhscmVjLm5yZWRpcmVjdGVkID0gcHJzdGF0ZS5ucmVkaXJlY3RlZDsKIAkJCXhscmVj Lm5kZWFkID0gcHJzdGF0ZS5uZGVhZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwppbmRleCAzNjk0NTE1MTY3Li45MmEzYjg1ZjMyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yNjg4LDYgKzI2ODgsNyBAQCBsYXp5X3ZhY3V1bV9v bmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0 LAogCWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90 dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRl Z3k7CisJaXZpbmZvLmhlYXByZWwgPSB2YWNyZWwtPnJlbDsKIAogCS8qCiAJICogVXBkYXRl IGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4KQEAgLTI3MzcsNiArMjczOCw3IEBAIGxh enlfY2xlYW51cF9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVS ZXN1bHQgKmlzdGF0LAogCiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsK IAlpdmluZm8uc3RyYXRlZ3kgPSB2YWNyZWwtPmJzdHJhdGVneTsKKwlpdmluZm8uaGVhcHJl bCA9IHZhY3JlbC0+cmVsOwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGlu Zm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJp bGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmlu ZGV4IDFkMWNhNDIzYTkuLjA0NWM2MWVkYjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKQEAgLTI4Myw4ICsyODMsNyBAQCB2aXNpYmlsaXR5bWFwX3Nl dChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAog CQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQocmVjcHRyKSkKIAkJCXsKIAkJCQlBc3NlcnQo IUluUmVjb3ZlcnkpOwotCQkJCXJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLT5yZF9s b2NhdG9yLCBoZWFwQnVmLCB2bUJ1ZiwKLQkJCQkJCQkJCQkgIGN1dG9mZl94aWQsIGZsYWdz KTsKKwkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYs IGN1dG9mZl94aWQsIGZsYWdzKTsKIAogCQkJCS8qCiAJCQkJICogSWYgZGF0YSBjaGVja3N1 bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKaW5kZXggZjRjMWE5NzRlZi4uYzQ4YjI3MjQzMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jCkBAIC0zMCw3ICszMCw4 IEBACiAjZGVmaW5lIEJUUkVFX0ZBU1RQQVRIX01JTl9MRVZFTAkyCiAKIAotc3RhdGljIEJU U3RhY2sgX2J0X3NlYXJjaF9pbnNlcnQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGlu c2VydHN0YXRlKTsKK3N0YXRpYyBCVFN0YWNrIF9idF9zZWFyY2hfaW5zZXJ0KFJlbGF0aW9u IHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwKKwkJCQkJCQkJIFJlbGF0aW9uIGhl YXByZWwpOwogc3RhdGljIFRyYW5zYWN0aW9uSWQgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlv biByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsCiAJCQkJCQkJCQkgIFJlbGF0aW9u IGhlYXBSZWwsCiAJCQkJCQkJCQkgIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWUsIGJv b2wgKmlzX3VuaXF1ZSwKQEAgLTQxLDcgKzQyLDcgQEAgc3RhdGljIE9mZnNldE51bWJlciBf YnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGJvb2wgaW5kZXhV bmNoYW5nZWQsCiAJCQkJCQkJCQkgIEJUU3RhY2sgc3RhY2ssCiAJCQkJCQkJCQkgIFJlbGF0 aW9uIGhlYXBSZWwpOwotc3RhdGljIHZvaWQgX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWws IEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spOworc3RhdGljIHZv aWQgX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3Rh dGUsIEJUU3RhY2sgc3RhY2ssIFJlbGF0aW9uIGhlYXByZWwpOwogc3RhdGljIHZvaWQgX2J0 X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCiAJCQkJ CQkgICBCdWZmZXIgYnVmLAogCQkJCQkJICAgQnVmZmVyIGNidWYsCkBAIC01MCwxNCArNTEs MTUgQEAgc3RhdGljIHZvaWQgX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLCBCVFNjYW5J bnNlcnQgaXR1cF9rZXksCiAJCQkJCQkgICBTaXplIGl0ZW1zeiwKIAkJCQkJCSAgIE9mZnNl dE51bWJlciBuZXdpdGVtb2ZmLAogCQkJCQkJICAgaW50IHBvc3RpbmdvZmYsCi0JCQkJCQkg ICBib29sIHNwbGl0X29ubHlfcGFnZSk7CisJCQkJCQkgICBib29sIHNwbGl0X29ubHlfcGFn ZSwKKwkJCQkJCSAgIFJlbGF0aW9uIGhlYXByZWwpOwogc3RhdGljIEJ1ZmZlciBfYnRfc3Bs aXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsCiAJ CQkJCQlCdWZmZXIgY2J1ZiwgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3aXRl bXN6LAogCQkJCQkJSW5kZXhUdXBsZSBuZXdpdGVtLCBJbmRleFR1cGxlIG9yaWduZXdpdGVt LAotCQkJCQkJSW5kZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYpOworCQkJ CQkJSW5kZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYsIFJlbGF0aW9uIGhl YXByZWwpOwogc3RhdGljIHZvaWQgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLCBC dWZmZXIgYnVmLCBCdWZmZXIgcmJ1ZiwKLQkJCQkJCQkgIEJUU3RhY2sgc3RhY2ssIGJvb2wg aXNyb290LCBib29sIGlzb25seSk7Ci1zdGF0aWMgQnVmZmVyIF9idF9uZXdyb290KFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJ1ZmZlciByYnVmKTsKKwkJCQkJCQkgIEJUU3RhY2sg c3RhY2ssIGJvb2wgaXNyb290LCBib29sIGlzb25seSwgUmVsYXRpb24gaGVhcHJlbCk7Citz dGF0aWMgQnVmZmVyIF9idF9uZXdyb290KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJ1 ZmZlciByYnVmLCBSZWxhdGlvbiBoZWFwcmVsKTsKIHN0YXRpYyBpbmxpbmUgYm9vbCBfYnRf cGdhZGR0dXAoUGFnZSBwYWdlLCBTaXplIGl0ZW1zaXplLCBJbmRleFR1cGxlIGl0dXAsCiAJ CQkJCQkJCU9mZnNldE51bWJlciBpdHVwX29mZiwgYm9vbCBuZXdmaXJzdGRhdGFpdGVtKTsK IHN0YXRpYyB2b2lkIF9idF9kZWxldGVfb3JfZGVkdXBfb25lX3BhZ2UoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiBoZWFwUmVsLApAQCAtMTA4LDcgKzExMCw3IEBAIF9idF9kb2luc2VydChS ZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCwKIAlib29sCQljaGVja2luZ3VuaXF1ZSA9 IChjaGVja1VuaXF1ZSAhPSBVTklRVUVfQ0hFQ0tfTk8pOwogCiAJLyogd2UgbmVlZCBhbiBp bnNlcnRpb24gc2NhbiBrZXkgdG8gZG8gb3VyIHNlYXJjaCwgc28gYnVpbGQgb25lICovCi0J aXR1cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgaXR1cCk7CisJaXR1cF9rZXkgPSBfYnRf bWtzY2Fua2V5KHJlbCwgaXR1cCwgaGVhcFJlbCk7CiAKIAlpZiAoY2hlY2tpbmd1bmlxdWUp CiAJewpAQCAtMTYyLDcgKzE2NCw3IEBAIHNlYXJjaDoKIAkgKiBzZWFyY2hpbmcgZnJvbSB0 aGUgcm9vdCBwYWdlLiAgaW5zZXJ0c3RhdGUuYnVmIHdpbGwgaG9sZCBhIGJ1ZmZlciB0aGF0 CiAJICogaXMgbG9ja2VkIGluIGV4Y2x1c2l2ZSBtb2RlIGFmdGVyd2FyZHMuCiAJICovCi0J c3RhY2sgPSBfYnRfc2VhcmNoX2luc2VydChyZWwsICZpbnNlcnRzdGF0ZSk7CisJc3RhY2sg PSBfYnRfc2VhcmNoX2luc2VydChyZWwsICZpbnNlcnRzdGF0ZSwgaGVhcFJlbCk7CiAKIAkv KgogCSAqIGNoZWNraW5ndW5pcXVlIGluc2VydHMgYXJlIG5vdCBhbGxvd2VkIHRvIGdvIGFo ZWFkIHdoZW4gdHdvIHR1cGxlcyB3aXRoCkBAIC0yNTcsNyArMjU5LDcgQEAgc2VhcmNoOgog CQkJCQkJCQkJICAgaW5kZXhVbmNoYW5nZWQsIHN0YWNrLCBoZWFwUmVsKTsKIAkJX2J0X2lu c2VydG9ucGcocmVsLCBpdHVwX2tleSwgaW5zZXJ0c3RhdGUuYnVmLCBJbnZhbGlkQnVmZmVy LCBzdGFjaywKIAkJCQkJICAgaXR1cCwgaW5zZXJ0c3RhdGUuaXRlbXN6LCBuZXdpdGVtb2Zm LAotCQkJCQkgICBpbnNlcnRzdGF0ZS5wb3N0aW5nb2ZmLCBmYWxzZSk7CisJCQkJCSAgIGlu c2VydHN0YXRlLnBvc3RpbmdvZmYsIGZhbHNlLCBoZWFwUmVsKTsKIAl9CiAJZWxzZQogCXsK QEAgLTMxMiw3ICszMTQsNyBAQCBzZWFyY2g6CiAgKiBzaW5jZSBlYWNoIHBlci1iYWNrZW5k IGNhY2hlIHdvbid0IHN0YXkgdmFsaWQgZm9yIGxvbmcuCiAgKi8KIHN0YXRpYyBCVFN0YWNr Ci1fYnRfc2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0 c3RhdGUpCitfYnRfc2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUg aW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJQXNzZXJ0KGluc2VydHN0YXRl LT5idWYgPT0gSW52YWxpZEJ1ZmZlcik7CiAJQXNzZXJ0KCFpbnNlcnRzdGF0ZS0+Ym91bmRz X3ZhbGlkKTsKQEAgLTM3Niw3ICszNzgsNyBAQCBfYnRfc2VhcmNoX2luc2VydChSZWxhdGlv biByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpCiAKIAkvKiBDYW5ub3QgdXNlIG9w dGltaXphdGlvbiAtLSBkZXNjZW5kIHRyZWUsIHJldHVybiBwcm9wZXIgZGVzY2VudCBzdGFj ayAqLwogCXJldHVybiBfYnRfc2VhcmNoKHJlbCwgaW5zZXJ0c3RhdGUtPml0dXBfa2V5LCAm aW5zZXJ0c3RhdGUtPmJ1ZiwgQlRfV1JJVEUsCi0JCQkJCSAgTlVMTCk7CisJCQkJCSAgTlVM TCwgaGVhcHJlbCk7CiB9CiAKIC8qCkBAIC04ODUsNyArODg3LDcgQEAgX2J0X2ZpbmRpbnNl cnRsb2MoUmVsYXRpb24gcmVsLAogCQkJCQlfYnRfY29tcGFyZShyZWwsIGl0dXBfa2V5LCBw YWdlLCBQX0hJS0VZKSA8PSAwKQogCQkJCQlicmVhazsKIAotCQkJCV9idF9zdGVwcmlnaHQo cmVsLCBpbnNlcnRzdGF0ZSwgc3RhY2spOworCQkJCV9idF9zdGVwcmlnaHQocmVsLCBpbnNl cnRzdGF0ZSwgc3RhY2ssIGhlYXBSZWwpOwogCQkJCS8qIFVwZGF0ZSBsb2NhbCBzdGF0ZSBh ZnRlciBzdGVwcGluZyByaWdodCAqLwogCQkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGluc2Vy dHN0YXRlLT5idWYpOwogCQkJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKQEAg LTk2OSw3ICs5NzEsNyBAQCBfYnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAJCQkJ cGdfcHJuZ191aW50MzIoJnBnX2dsb2JhbF9wcm5nX3N0YXRlKSA8PSAoUEdfVUlOVDMyX01B WCAvIDEwMCkpCiAJCQkJYnJlYWs7CiAKLQkJCV9idF9zdGVwcmlnaHQocmVsLCBpbnNlcnRz dGF0ZSwgc3RhY2spOworCQkJX2J0X3N0ZXByaWdodChyZWwsIGluc2VydHN0YXRlLCBzdGFj aywgaGVhcFJlbCk7CiAJCQkvKiBVcGRhdGUgbG9jYWwgc3RhdGUgYWZ0ZXIgc3RlcHBpbmcg cmlnaHQgKi8KIAkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGluc2VydHN0YXRlLT5idWYpOwog CQkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwpAQCAtMTAyMiw3ICsxMDI0LDcg QEAgX2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24gcmVsLAogICogaW5kZXhlcy4KICAqLwog c3RhdGljIHZvaWQKLV9idF9zdGVwcmlnaHQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRl IGluc2VydHN0YXRlLCBCVFN0YWNrIHN0YWNrKQorX2J0X3N0ZXByaWdodChSZWxhdGlvbiBy ZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2ssIFJlbGF0aW9u IGhlYXByZWwpCiB7CiAJUGFnZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAt MTA0OCw3ICsxMDUwLDcgQEAgX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0 U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spCiAJCSAqLwogCQlpZiAoUF9JTkNP TVBMRVRFX1NQTElUKG9wYXF1ZSkpCiAJCXsKLQkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBy YnVmLCBzdGFjayk7CisJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgcmJ1Ziwgc3RhY2ssIGhl YXByZWwpOwogCQkJcmJ1ZiA9IEludmFsaWRCdWZmZXI7CiAJCQljb250aW51ZTsKIAkJfQpA QCAtMTEwNyw3ICsxMTA5LDggQEAgX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCQkJ ICAgU2l6ZSBpdGVtc3osCiAJCQkgICBPZmZzZXROdW1iZXIgbmV3aXRlbW9mZiwKIAkJCSAg IGludCBwb3N0aW5nb2ZmLAotCQkJICAgYm9vbCBzcGxpdF9vbmx5X3BhZ2UpCisJCQkgICBi b29sIHNwbGl0X29ubHlfcGFnZSwKKwkJCSAgIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJUGFn ZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAtMTIxMCw3ICsxMjEzLDcgQEAg X2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCiAJCS8qIHNwbGl0IHRoZSBidWZmZXIg aW50byBsZWZ0IGFuZCByaWdodCBoYWx2ZXMgKi8KIAkJcmJ1ZiA9IF9idF9zcGxpdChyZWws IGl0dXBfa2V5LCBidWYsIGNidWYsIG5ld2l0ZW1vZmYsIGl0ZW1zeiwgaXR1cCwKLQkJCQkJ CSBvcmlnaXR1cCwgbnBvc3RpbmcsIHBvc3RpbmdvZmYpOworCQkJCQkJIG9yaWdpdHVwLCBu cG9zdGluZywgcG9zdGluZ29mZiwgaGVhcHJlbCk7CiAJCVByZWRpY2F0ZUxvY2tQYWdlU3Bs aXQocmVsLAogCQkJCQkJCSAgIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZiksCiAJCQkJCQkJ ICAgQnVmZmVyR2V0QmxvY2tOdW1iZXIocmJ1ZikpOwpAQCAtMTIzMyw3ICsxMjM2LDcgQEAg X2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCQkgKiBwYWdlLgogCQkgKi0tLS0tLS0t LS0KIAkJICovCi0JCV9idF9pbnNlcnRfcGFyZW50KHJlbCwgYnVmLCByYnVmLCBzdGFjaywg aXNyb290LCBpc29ubHkpOworCQlfYnRfaW5zZXJ0X3BhcmVudChyZWwsIGJ1ZiwgcmJ1Ziwg c3RhY2ssIGlzcm9vdCwgaXNvbmx5LCBoZWFwcmVsKTsKIAl9CiAJZWxzZQogCXsKQEAgLTEy NTQsNyArMTI1Nyw3IEBAIF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKIAkJCUFzc2Vy dCghaXNsZWFmKTsKIAkJCUFzc2VydChCdWZmZXJJc1ZhbGlkKGNidWYpKTsKIAotCQkJbWV0 YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCQkJ bWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUsIGhl YXByZWwpOwogCQkJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAkJCW1ldGFk ID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwogCkBAIC0xNDE4LDcgKzE0MjEsNyBAQCBfYnRf aW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsCiAJCSAqIGNhbGwgX2J0X2dldHJvb3RoZWlnaHQg d2hpbGUgaG9sZGluZyBhIGJ1ZmZlciBsb2NrLgogCQkgKi8KIAkJaWYgKEJsb2NrTnVtYmVy SXNWYWxpZChibG9ja2NhY2hlKSAmJgotCQkJX2J0X2dldHJvb3RoZWlnaHQocmVsKSA+PSBC VFJFRV9GQVNUUEFUSF9NSU5fTEVWRUwpCisJCQlfYnRfZ2V0cm9vdGhlaWdodChyZWwsIGhl YXByZWwpID49IEJUUkVFX0ZBU1RQQVRIX01JTl9MRVZFTCkKIAkJCVJlbGF0aW9uU2V0VGFy Z2V0QmxvY2socmVsLCBibG9ja2NhY2hlKTsKIAl9CiAKQEAgLTE0NjEsNyArMTQ2NCw4IEBA IF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKIHN0YXRpYyBCdWZmZXIKIF9idF9zcGxp dChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1ZiwgQnVm ZmVyIGNidWYsCiAJCSAgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3aXRlbXN6 LCBJbmRleFR1cGxlIG5ld2l0ZW0sCi0JCSAgSW5kZXhUdXBsZSBvcmlnbmV3aXRlbSwgSW5k ZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYpCisJCSAgSW5kZXhUdXBsZSBv cmlnbmV3aXRlbSwgSW5kZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYsCisJ CSAgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCXJidWY7CiAJUGFnZQkJb3JpZ3Bh Z2U7CkBAIC0xNzEyLDcgKzE3MTYsNyBAQCBfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBCVFNj YW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsIEJ1ZmZlciBjYnVmLAogCSAqIHdheSBi ZWNhdXNlIGl0IGF2b2lkcyBhbiB1bm5lY2Vzc2FyeSBQQU5JQyB3aGVuIGVpdGhlciBvcmln cGFnZSBvciBpdHMKIAkgKiBleGlzdGluZyBzaWJsaW5nIHBhZ2UgYXJlIGNvcnJ1cHQuCiAJ ICovCi0JcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBQX05FVywgQlRfV1JJVEUpOworCXJidWYg PSBfYnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFLCBoZWFwcmVsKTsKIAlyaWdodHBh Z2UgPSBCdWZmZXJHZXRQYWdlKHJidWYpOwogCXJpZ2h0cGFnZW51bWJlciA9IEJ1ZmZlckdl dEJsb2NrTnVtYmVyKHJidWYpOwogCS8qIHJpZ2h0cGFnZSB3YXMgaW5pdGlhbGl6ZWQgYnkg X2J0X2dldGJ1ZiAqLwpAQCAtMTg4NSw3ICsxODg5LDcgQEAgX2J0X3NwbGl0KFJlbGF0aW9u IHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVmLCBCdWZmZXIgY2J1ZiwK IAkgKi8KIAlpZiAoIWlzcmlnaHRtb3N0KQogCXsKLQkJc2J1ZiA9IF9idF9nZXRidWYocmVs LCBvb3BhcXVlLT5idHBvX25leHQsIEJUX1dSSVRFKTsKKwkJc2J1ZiA9IF9idF9nZXRidWYo cmVsLCBvb3BhcXVlLT5idHBvX25leHQsIEJUX1dSSVRFLCBoZWFwcmVsKTsKIAkJc3BhZ2Ug PSBCdWZmZXJHZXRQYWdlKHNidWYpOwogCQlzb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHNw YWdlKTsKIAkJaWYgKHNvcGFxdWUtPmJ0cG9fcHJldiAhPSBvcmlncGFnZW51bWJlcikKQEAg LTIwOTYsNyArMjEwMCw4IEBAIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwKIAkJ CQkgIEJ1ZmZlciByYnVmLAogCQkJCSAgQlRTdGFjayBzdGFjaywKIAkJCQkgIGJvb2wgaXNy b290LAotCQkJCSAgYm9vbCBpc29ubHkpCisJCQkJICBib29sIGlzb25seSwKKwkJCQkgIFJl bGF0aW9uIGhlYXByZWwpCiB7CiAJLyoKIAkgKiBIZXJlIHdlIGhhdmUgdG8gZG8gc29tZXRo aW5nIExlaG1hbiBhbmQgWWFvIGRvbid0IHRhbGsgYWJvdXQ6IGRlYWwgd2l0aApAQCAtMjEx OCw3ICsyMTIzLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQlBc3Nl cnQoc3RhY2sgPT0gTlVMTCk7CiAJCUFzc2VydChpc29ubHkpOwogCQkvKiBjcmVhdGUgYSBu ZXcgcm9vdCBub2RlIGFuZCB1cGRhdGUgdGhlIG1ldGFwYWdlICovCi0JCXJvb3RidWYgPSBf YnRfbmV3cm9vdChyZWwsIGJ1ZiwgcmJ1Zik7CisJCXJvb3RidWYgPSBfYnRfbmV3cm9vdChy ZWwsIGJ1ZiwgcmJ1ZiwgaGVhcHJlbCk7CiAJCS8qIHJlbGVhc2UgdGhlIHNwbGl0IGJ1ZmZl cnMgKi8KIAkJX2J0X3JlbGJ1ZihyZWwsIHJvb3RidWYpOwogCQlfYnRfcmVsYnVmKHJlbCwg cmJ1Zik7CkBAIC0yMTU3LDcgKzIxNjIsOCBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlv biByZWwsCiAJCQkJCSBCbG9ja051bWJlcklzVmFsaWQoUmVsYXRpb25HZXRUYXJnZXRCbG9j ayhyZWwpKSkpOwogCiAJCQkvKiBGaW5kIHRoZSBsZWZ0bW9zdCBwYWdlIGF0IHRoZSBuZXh0 IGxldmVsIHVwICovCi0JCQlwYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWwsIG9wYXF1ZS0+ YnRwb19sZXZlbCArIDEsIGZhbHNlLCBOVUxMKTsKKwkJCXBidWYgPSBfYnRfZ2V0X2VuZHBv aW50KHJlbCwgb3BhcXVlLT5idHBvX2xldmVsICsgMSwgZmFsc2UsIE5VTEwsCisJCQkJCQkJ CQloZWFwcmVsKTsKIAkJCS8qIFNldCB1cCBhIHBob255IHN0YWNrIGVudHJ5IHBvaW50aW5n IHRoZXJlICovCiAJCQlzdGFjayA9ICZmYWtlc3RhY2s7CiAJCQlzdGFjay0+YnRzX2Jsa25v ID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocGJ1Zik7CkBAIC0yMTgzLDcgKzIxODksNyBAQCBf YnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAJCSAqIG5ldyBkb3dubGluayB3aWxs IGJlIGluc2VydGVkIGF0IHRoZSBjb3JyZWN0IG9mZnNldC4gRXZlbiBidWYncwogCQkgKiBw YXJlbnQgbWF5IGhhdmUgY2hhbmdlZC4KIAkJICovCi0JCXBidWYgPSBfYnRfZ2V0c3RhY2ti dWYocmVsLCBzdGFjaywgYmtudW0pOworCQlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwg c3RhY2ssIGJrbnVtLCBoZWFwcmVsKTsKIAogCQkvKgogCQkgKiBVbmxvY2sgdGhlIHJpZ2h0 IGNoaWxkLiAgVGhlIGxlZnQgY2hpbGQgd2lsbCBiZSB1bmxvY2tlZCBpbgpAQCAtMjIwOSw3 ICsyMjE1LDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQkvKiBSZWN1 cnNpdmVseSBpbnNlcnQgaW50byB0aGUgcGFyZW50ICovCiAJCV9idF9pbnNlcnRvbnBnKHJl bCwgTlVMTCwgcGJ1ZiwgYnVmLCBzdGFjay0+YnRzX3BhcmVudCwKIAkJCQkJICAgbmV3X2l0 ZW0sIE1BWEFMSUdOKEluZGV4VHVwbGVTaXplKG5ld19pdGVtKSksCi0JCQkJCSAgIHN0YWNr LT5idHNfb2Zmc2V0ICsgMSwgMCwgaXNvbmx5KTsKKwkJCQkJICAgc3RhY2stPmJ0c19vZmZz ZXQgKyAxLCAwLCBpc29ubHksIGhlYXByZWwpOwogCiAJCS8qIGJlIHRpZHkgKi8KIAkJcGZy ZWUobmV3X2l0ZW0pOwpAQCAtMjIyNyw3ICsyMjMzLDcgQEAgX2J0X2luc2VydF9wYXJlbnQo UmVsYXRpb24gcmVsLAogICogYW5kIHVucGlubmVkLgogICovCiB2b2lkCi1fYnRfZmluaXNo X3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCitfYnRf ZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2ss IFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJUGFnZQkJbHBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxi dWYpOwogCUJUUGFnZU9wYXF1ZSBscGFnZW9wID0gQlRQYWdlR2V0T3BhcXVlKGxwYWdlKTsK QEAgLTIyNDAsNyArMjI0Niw3IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBC dWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykKIAlBc3NlcnQoUF9JTkNPTVBMRVRFX1NQTElU KGxwYWdlb3ApKTsKIAogCS8qIExvY2sgcmlnaHQgc2libGluZywgdGhlIG9uZSBtaXNzaW5n IHRoZSBkb3dubGluayAqLwotCXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbHBhZ2VvcC0+YnRw b19uZXh0LCBCVF9XUklURSk7CisJcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBscGFnZW9wLT5i dHBvX25leHQsIEJUX1dSSVRFLCBoZWFwcmVsKTsKIAlycGFnZSA9IEJ1ZmZlckdldFBhZ2Uo cmJ1Zik7CiAJcnBhZ2VvcCA9IEJUUGFnZUdldE9wYXF1ZShycGFnZSk7CiAKQEAgLTIyNTIs NyArMjI1OCw3IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1 ZiwgQlRTdGFjayBzdGFjaykKIAkJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCiAJCS8qIGFj cXVpcmUgbG9jayBvbiB0aGUgbWV0YXBhZ2UgKi8KLQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYo cmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCQltZXRhYnVmID0gX2J0X2dldGJ1 ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSwgaGVhcHJlbCk7CiAJCW1ldGFwZyA9 IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJCW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRh cGcpOwogCkBAIC0yMjY5LDcgKzIyNzUsNyBAQCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCiAJZWxvZyhERUJVRzEsICJmaW5p c2hpbmcgaW5jb21wbGV0ZSBzcGxpdCBvZiAldS8ldSIsCiAJCSBCdWZmZXJHZXRCbG9ja051 bWJlcihsYnVmKSwgQnVmZmVyR2V0QmxvY2tOdW1iZXIocmJ1ZikpOwogCi0JX2J0X2luc2Vy dF9wYXJlbnQocmVsLCBsYnVmLCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fzb25seSk7CisJ X2J0X2luc2VydF9wYXJlbnQocmVsLCBsYnVmLCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fz b25seSwgaGVhcHJlbCk7CiB9CiAKIC8qCkBAIC0yMzA0LDcgKzIzMTAsNyBAQCBfYnRfZmlu aXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCiAg KgkJb2Zmc2V0IG51bWJlciBidHNfb2Zmc2V0ICsgMS4KICAqLwogQnVmZmVyCi1fYnRfZ2V0 c3RhY2tidWYoUmVsYXRpb24gcmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGls ZCkKK19idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2Nr TnVtYmVyIGNoaWxkLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJsb2NrTnVtYmVyIGJsa25v OwogCU9mZnNldE51bWJlciBzdGFydDsKQEAgLTIzMTgsMTMgKzIzMjQsMTMgQEAgX2J0X2dl dHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tOdW1iZXIgY2hp bGQpCiAJCVBhZ2UJCXBhZ2U7CiAJCUJUUGFnZU9wYXF1ZSBvcGFxdWU7CiAKLQkJYnVmID0g X2J0X2dldGJ1ZihyZWwsIGJsa25vLCBCVF9XUklURSk7CisJCWJ1ZiA9IF9idF9nZXRidWYo cmVsLCBibGtubywgQlRfV1JJVEUsIGhlYXByZWwpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShidWYpOwogCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAKIAkJaWYgKFBf SU5DT01QTEVURV9TUExJVChvcGFxdWUpKQogCQl7Ci0JCQlfYnRfZmluaXNoX3NwbGl0KHJl bCwgYnVmLCBzdGFjay0+YnRzX3BhcmVudCk7CisJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwg YnVmLCBzdGFjay0+YnRzX3BhcmVudCwgaGVhcHJlbCk7CiAJCQljb250aW51ZTsKIAkJfQog CkBAIC0yNDI4LDcgKzI0MzQsNyBAQCBfYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24gcmVsLCBC VFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGlsZCkKICAqCQlsYnVmLCByYnVmICYgcm9v dGJ1Zi4KICAqLwogc3RhdGljIEJ1ZmZlcgotX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBC dWZmZXIgbGJ1ZiwgQnVmZmVyIHJidWYpCitfYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIEJ1 ZmZlciBsYnVmLCBCdWZmZXIgcmJ1ZiwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJ CXJvb3RidWY7CiAJUGFnZQkJbHBhZ2UsCkBAIC0yNDU0LDEyICsyNDYwLDEyIEBAIF9idF9u ZXdyb290KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJ1ZmZlciByYnVmKQogCWxvcGFx dWUgPSBCVFBhZ2VHZXRPcGFxdWUobHBhZ2UpOwogCiAJLyogZ2V0IGEgbmV3IHJvb3QgcGFn ZSAqLwotCXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKKwly b290YnVmID0gX2J0X2dldGJ1ZihyZWwsIFBfTkVXLCBCVF9XUklURSwgaGVhcHJlbCk7CiAJ cm9vdHBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCXJvb3RibGtudW0gPSBCdWZm ZXJHZXRCbG9ja051bWJlcihyb290YnVmKTsKIAogCS8qIGFjcXVpcmUgbG9jayBvbiB0aGUg bWV0YXBhZ2UgKi8KLQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdF LCBCVF9XUklURSk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfV1JJVEUsIGhlYXByZWwpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1 Zik7CiAJbWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRwYWdlLmMKaW5kZXggM2ZlZWUyOGQxOS4uZWRjYTdhZWJiMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKQEAgLTM5LDE2ICszOSwxOSBAQAogCiBz dGF0aWMgQlRNZXRhUGFnZURhdGEgKl9idF9nZXRtZXRhKFJlbGF0aW9uIHJlbCwgQnVmZmVy IG1ldGFidWYpOwogc3RhdGljIHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgYmxrbm8sCi0JCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2Fm ZXhpZCk7CisJCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCwKKwkJCQkJCQkg ICBSZWxhdGlvbiBoZWFwcmVsKTsKIHN0YXRpYyB2b2lkIF9idF9kZWxpdGVtc19kZWxldGUo UmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQlUcmFuc2FjdGlvbklkIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uLAogCQkJCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwg aW50IG5kZWxldGFibGUsCi0JCQkJCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBp bnQgbnVwZGF0YWJsZSk7CisJCQkJCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBp bnQgbnVwZGF0YWJsZSwKKwkJCQkJCQkJUmVsYXRpb24gaGVhcHJlbCk7CiBzdGF0aWMgY2hh ciAqX2J0X2RlbGl0ZW1zX3VwZGF0ZShCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50 IG51cGRhdGFibGUsCiAJCQkJCQkJCSBPZmZzZXROdW1iZXIgKnVwZGF0ZWRvZmZzZXRzLAog CQkJCQkJCQkgU2l6ZSAqdXBkYXRlZGJ1ZmxlbiwgYm9vbCBuZWVkc3dhbCk7CiBzdGF0aWMg Ym9vbCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZi dWYsCi0JCQkJCQkJCSAgIEJUU3RhY2sgc3RhY2spOworCQkJCQkJCQkgICBCVFN0YWNrIHN0 YWNrLAorCQkJCQkJCQkgICBSZWxhdGlvbiBoZWFwcmVsKTsKIHN0YXRpYyBib29sIF9idF91 bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLAogCQkJ CQkJCQkJIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJCQkJCQkJCSBib29sICpyaWdodHNp Yl9lbXB0eSwKQEAgLTU4LDcgKzYxLDggQEAgc3RhdGljIGJvb2wgX2J0X2xvY2tfc3VidHJl ZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBjaGlsZCwKIAkJCQkJCQkJCUJ1 ZmZlciAqc3VidHJlZXBhcmVudCwKIAkJCQkJCQkJCU9mZnNldE51bWJlciAqcG9mZnNldCwK IAkJCQkJCQkJCUJsb2NrTnVtYmVyICp0b3BwYXJlbnQsCi0JCQkJCQkJCQlCbG9ja051bWJl ciAqdG9wcGFyZW50cmlnaHRzaWIpOworCQkJCQkJCQkJQmxvY2tOdW1iZXIgKnRvcHBhcmVu dHJpZ2h0c2liLAorCQkJCQkJCQkJUmVsYXRpb24gaGVhcHJlbCk7CiBzdGF0aWMgdm9pZCBf YnRfcGVuZGluZ2ZzbV9hZGQoQlRWYWNTdGF0ZSAqdnN0YXRlLCBCbG9ja051bWJlciB0YXJn ZXQsCiAJCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCk7CiAKQEAgLTE3OCw3 ICsxODIsNyBAQCBfYnRfZ2V0bWV0YShSZWxhdGlvbiByZWwsIEJ1ZmZlciBtZXRhYnVmKQog ICogaW5kZXggdHVwbGVzIG5lZWRlZCB0byBiZSBkZWxldGVkLgogICovCiBib29sCi1fYnRf dmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKQorX2J0X3ZhY3V1bV9uZWVkc19j bGVhbnVwKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCW1l dGFidWY7CiAJUGFnZQkJbWV0YXBnOwpAQCAtMTkxLDcgKzE5NSw3IEBAIF9idF92YWN1dW1f bmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpCiAJICoKIAkgKiBOb3RlIHRoYXQgd2UgZGVs aWJlcmF0ZWx5IGF2b2lkIHVzaW5nIGNhY2hlZCB2ZXJzaW9uIG9mIG1ldGFwYWdlIGhlcmUu CiAJICovCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRf UkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRf UkVBRCwgaGVhcHJlbCk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAlt ZXRhZCA9IEJUUGFnZUdldE1ldGEobWV0YXBnKTsKIAlidG1fdmVyc2lvbiA9IG1ldGFkLT5i dG1fdmVyc2lvbjsKQEAgLTIzMSw3ICsyMzUsNyBAQCBfYnRfdmFjdXVtX25lZWRzX2NsZWFu dXAoUmVsYXRpb24gcmVsKQogICogZmluYWxpemVkLgogICovCiB2b2lkCi1fYnRfc2V0X2Ns ZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKK19i dF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBh Z2VzLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJ1ZmZlcgkJbWV0YWJ1ZjsKIAlQYWdlCQlt ZXRhcGc7CkBAIC0yNTUsNyArMjU5LDcgQEAgX2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMpCiAJICogbm8gbG9uZ2VyIHVzZWQg YXMgb2YgUG9zdGdyZVNRTCAxNC4gIFdlIHNldCBpdCB0byAtMS4wIG9uIHJld3JpdGUsIGp1 c3QKIAkgKiB0byBiZSBjb25zaXN0ZW50LgogCSAqLwotCW1ldGFidWYgPSBfYnRfZ2V0YnVm KHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOworCW1ldGFidWYgPSBfYnRfZ2V0YnVm KHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQsIGhlYXByZWwpOwogCW1ldGFwZyA9IEJ1 ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJbWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7 CiAKQEAgLTM0MCw3ICszNDQsNyBAQCBfYnRfc2V0X2NsZWFudXBfaW5mbyhSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKICAqCQlUaGUgbWV0YWRhdGEgcGFnZSBp cyBub3QgbG9ja2VkIG9yIHBpbm5lZCBvbiBleGl0LgogICovCiBCdWZmZXIKLV9idF9nZXRy b290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKK19idF9nZXRyb290KFJlbGF0aW9uIHJl bCwgaW50IGFjY2VzcywgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCW1ldGFidWY7 CiAJQnVmZmVyCQlyb290YnVmOwpAQCAtMzcwLDcgKzM3NCw3IEBAIF9idF9nZXRyb290KFJl bGF0aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJQXNzZXJ0KHJvb3RibGtubyAhPSBQX05PTkUp OwogCQlyb290bGV2ZWwgPSBtZXRhZC0+YnRtX2Zhc3RsZXZlbDsKIAotCQlyb290YnVmID0g X2J0X2dldGJ1ZihyZWwsIHJvb3RibGtubywgQlRfUkVBRCk7CisJCXJvb3RidWYgPSBfYnRf Z2V0YnVmKHJlbCwgcm9vdGJsa25vLCBCVF9SRUFELCBoZWFwcmVsKTsKIAkJcm9vdHBhZ2Ug PSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCQlyb290b3BhcXVlID0gQlRQYWdlR2V0T3Bh cXVlKHJvb3RwYWdlKTsKIApAQCAtMzk2LDcgKzQwMCw3IEBAIF9idF9nZXRyb290KFJlbGF0 aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJcmVsLT5yZF9hbWNhY2hlID0gTlVMTDsKIAl9CiAK LQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsK KwltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFELCBo ZWFwcmVsKTsKIAltZXRhZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAKIAkvKiBp ZiBubyByb290IHBhZ2UgaW5pdGlhbGl6ZWQgeWV0LCBkbyBpdCAqLwpAQCAtNDI5LDcgKzQz Myw3IEBAIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJCSAqIHRv IG9wdGltaXplIHRoaXMgY2FzZS4pCiAJCQkgKi8KIAkJCV9idF9yZWxidWYocmVsLCBtZXRh YnVmKTsKLQkJCXJldHVybiBfYnRfZ2V0cm9vdChyZWwsIGFjY2Vzcyk7CisJCQlyZXR1cm4g X2J0X2dldHJvb3QocmVsLCBhY2Nlc3MsIGhlYXByZWwpOwogCQl9CiAKIAkJLyoKQEAgLTQz Nyw3ICs0NDEsNyBAQCBfYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCiAJ CSAqIHRoZSBuZXcgcm9vdCBwYWdlLiAgU2luY2UgdGhpcyBpcyB0aGUgZmlyc3QgcGFnZSBp biB0aGUgdHJlZSwgaXQncwogCQkgKiBhIGxlYWYgYXMgd2VsbCBhcyB0aGUgcm9vdC4KIAkJ ICovCi0JCXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKKwkJ cm9vdGJ1ZiA9IF9idF9nZXRidWYocmVsLCBQX05FVywgQlRfV1JJVEUsIGhlYXByZWwpOwog CQlyb290Ymxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihyb290YnVmKTsKIAkJcm9vdHBh Z2UgPSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCQlyb290b3BhcXVlID0gQlRQYWdlR2V0 T3BhcXVlKHJvb3RwYWdlKTsKQEAgLTU3NCw3ICs1NzgsNyBAQCBfYnRfZ2V0cm9vdChSZWxh dGlvbiByZWwsIGludCBhY2Nlc3MpCiAgKiBtb3ZpbmcgdG8gdGhlIHJvb3QgLS0tIHRoYXQn ZCBkZWFkbG9jayBhZ2FpbnN0IGFueSBjb25jdXJyZW50IHJvb3Qgc3BsaXQuKQogICovCiBC dWZmZXIKLV9idF9nZXR0cnVlcm9vdChSZWxhdGlvbiByZWwpCitfYnRfZ2V0dHJ1ZXJvb3Qo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJ1ZmZlcgkJbWV0YWJ1ZjsK IAlQYWdlCQltZXRhcGc7CkBAIC01OTYsNyArNjAwLDcgQEAgX2J0X2dldHRydWVyb290KFJl bGF0aW9uIHJlbCkKIAkJcGZyZWUocmVsLT5yZF9hbWNhY2hlKTsKIAlyZWwtPnJkX2FtY2Fj aGUgPSBOVUxMOwogCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfUkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfUkVBRCwgaGVhcHJlbCk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVm KTsKIAltZXRhb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKG1ldGFwZyk7CiAJbWV0YWQgPSBC VFBhZ2VHZXRNZXRhKG1ldGFwZyk7CkBAIC02NjksNyArNjczLDcgQEAgX2J0X2dldHRydWVy b290KFJlbGF0aW9uIHJlbCkKICAqCQlhYm91dCB1cGRhdGluZyBwcmV2aW91c2x5IGNhY2hl ZCBkYXRhLgogICovCiBpbnQKLV9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCkKK19i dF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlC VE1ldGFQYWdlRGF0YSAqbWV0YWQ7CiAKQEAgLTY3Nyw3ICs2ODEsNyBAQCBfYnRfZ2V0cm9v dGhlaWdodChSZWxhdGlvbiByZWwpCiAJewogCQlCdWZmZXIJCW1ldGFidWY7CiAKLQkJbWV0 YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJCW1l dGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQsIGhlYXBy ZWwpOwogCQltZXRhZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAKIAkJLyoKQEAg LTczMyw3ICs3MzcsNyBAQCBfYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlvbiByZWwpCiAgKgkJ cGdfdXBncmFkZSdkIGZyb20gUG9zdGdyZXMgMTIuCiAgKi8KIHZvaWQKLV9idF9tZXRhdmVy c2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFjZSwgYm9vbCAqYWxsZXF1YWxp bWFnZSkKK19idF9tZXRhdmVyc2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFj ZSwgYm9vbCAqYWxsZXF1YWxpbWFnZSwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCVE1ldGFQ YWdlRGF0YSAqbWV0YWQ7CiAKQEAgLTc0MSw3ICs3NDUsNyBAQCBfYnRfbWV0YXZlcnNpb24o UmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3BhY2UsIGJvb2wgKmFsbGVxdWFsaW1hZ2Up CiAJewogCQlCdWZmZXIJCW1ldGFidWY7CiAKLQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVs LCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJl bCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQsIGhlYXByZWwpOwogCQltZXRhZCA9IF9idF9n ZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAKIAkJLyoKQEAgLTgyNSw3ICs4MjksNyBAQCBfYnRf Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZikKICAqIExvZyB0aGUgcmV1c2Ug b2YgYSBwYWdlIGZyb20gdGhlIEZTTS4KICAqLwogc3RhdGljIHZvaWQKLV9idF9sb2dfcmV1 c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rp b25JZCBzYWZleGlkKQorX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQsIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJeGxfYnRyZWVfcmV1c2VfcGFnZSB4bHJlY19yZXVzZTsKIApAQCAtODM2LDYg Kzg0MCw3IEBAIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKQogCSAqLwogCiAJLyogWExPRyBz dHVmZiAqLworCXhscmVjX3JldXNlLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3Np YmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7CiAJeGxyZWNfcmV1c2UubG9jYXRvciA9 IHJlbC0+cmRfbG9jYXRvcjsKIAl4bHJlY19yZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVj X3JldXNlLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc2FmZXhpZDsKQEAgLTg2OCw3ICs4 NzMsNyBAQCBfYnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBi bGtubywgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCkKICAqCQlhcyBfYnRfbG9ja2J1Zigp LgogICovCiBCdWZmZXIKLV9idF9nZXRidWYoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBi bGtubywgaW50IGFjY2VzcykKK19idF9nZXRidWYoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBibGtubywgaW50IGFjY2VzcywgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCWJ1 ZjsKIApAQCAtOTQ0LDcgKzk0OSw3IEBAIF9idF9nZXRidWYoUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBibGtubywgaW50IGFjY2VzcykKIAkJCQkJICovCiAJCQkJCWlmIChYTG9nU3Rh bmRieUluZm9BY3RpdmUoKSAmJiBSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCiAJCQkJCQlfYnRf bG9nX3JldXNlX3BhZ2UocmVsLCBibGtubywKLQkJCQkJCQkJCQkgICBCVFBhZ2VHZXREZWxl dGVYaWQocGFnZSkpOworCQkJCQkJCQkJCSAgIEJUUGFnZUdldERlbGV0ZVhpZChwYWdlKSwg aGVhcHJlbCk7CiAKIAkJCQkJLyogT2theSB0byB1c2UgcGFnZS4gIFJlLWluaXRpYWxpemUg YW5kIHJldHVybiBpdC4gKi8KIAkJCQkJX2J0X3BhZ2Vpbml0KHBhZ2UsIEJ1ZmZlckdldFBh Z2VTaXplKGJ1ZikpOwpAQCAtMTI5Niw3ICsxMzAxLDcgQEAgc3RhdGljIHZvaWQKIF9idF9k ZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQlUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCQkJCQlPZmZzZXROdW1iZXIgKmRl bGV0YWJsZSwgaW50IG5kZWxldGFibGUsCi0JCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRh YmxlLCBpbnQgbnVwZGF0YWJsZSkKKwkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUs IGludCBudXBkYXRhYmxlLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCVBhZ2UJCXBhZ2UgPSBC dWZmZXJHZXRQYWdlKGJ1Zik7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTEzNTgsNiAr MTM2Myw3IEBAIF9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAogCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAkJeGxfYnRyZWVfZGVsZXRlIHhscmVjX2RlbGV0 ZTsKIAorCQl4bHJlY19kZWxldGUuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2li bGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAkJeGxyZWNfZGVsZXRlLnNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247CiAJCXhscmVjX2Rl bGV0ZS5uZGVsZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2RlbGV0ZS5udXBkYXRlZCA9 IG51cGRhdGFibGU7CkBAIC0xNjg1LDcgKzE2OTEsNyBAQCBfYnRfZGVsaXRlbXNfZGVsZXRl X2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRpb24gaGVhcFJlbCwKIAog CS8qIFBoeXNpY2FsbHkgZGVsZXRlIHR1cGxlcyAob3IgVElEcykgdXNpbmcgZGVsZXRhYmxl IChvciB1cGRhdGFibGUpICovCiAJX2J0X2RlbGl0ZW1zX2RlbGV0ZShyZWwsIGJ1Ziwgc25h cHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQlkZWxldGFibGUsIG5kZWxldGFibGUsIHVw ZGF0YWJsZSwgbnVwZGF0YWJsZSk7CisJCQkJCQlkZWxldGFibGUsIG5kZWxldGFibGUsIHVw ZGF0YWJsZSwgbnVwZGF0YWJsZSwgaGVhcFJlbCk7CiAKIAkvKiBiZSB0aWR5ICovCiAJZm9y IChpbnQgaSA9IDA7IGkgPCBudXBkYXRhYmxlOyBpKyspCkBAIC0xNzA2LDcgKzE3MTIsNyBA QCBfYnRfZGVsaXRlbXNfZGVsZXRlX2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Ziwg UmVsYXRpb24gaGVhcFJlbCwKICAqIHNhbWUgbGV2ZWwgbXVzdCBhbHdheXMgYmUgbG9ja2Vk IGxlZnQgdG8gcmlnaHQgdG8gYXZvaWQgZGVhZGxvY2tzLgogICovCiBzdGF0aWMgYm9vbAot X2J0X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbGVmdHNp YiwgQmxvY2tOdW1iZXIgdGFyZ2V0KQorX2J0X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgbGVmdHNpYiwgQmxvY2tOdW1iZXIgdGFyZ2V0LCBSZWxhdGlv biBoZWFwcmVsKQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJCXBhZ2U7CkBAIC0xNzE3LDcg KzE3MjMsNyBAQCBfYnRfbGVmdHNpYl9zcGxpdGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051 bWJlciBsZWZ0c2liLCBCbG9ja051bWJlciB0YXJnZXQpCiAJaWYgKGxlZnRzaWIgPT0gUF9O T05FKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVmdHNp YiwgQlRfUkVBRCk7CisJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxlZnRzaWIsIEJUX1JFQUQs IGhlYXByZWwpOwogCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJb3BhcXVlID0gQlRQ YWdlR2V0T3BhcXVlKHBhZ2UpOwogCkBAIC0xNzYzLDcgKzE3NjksNyBAQCBfYnRfbGVmdHNp Yl9zcGxpdGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBsZWZ0c2liLCBCbG9ja051 bWJlciB0YXJnZXQpCiAgKiB0by1iZS1kZWxldGVkIHN1YnRyZWUuKQogICovCiBzdGF0aWMg Ym9vbAotX2J0X3JpZ2h0c2liX2hhbGZkZWFkZmxhZyhSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIGxlYWZyaWdodHNpYikKK19idF9yaWdodHNpYl9oYWxmZGVhZGZsYWcoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBsZWFmcmlnaHRzaWIsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJ QnVmZmVyCQlidWY7CiAJUGFnZQkJcGFnZTsKQEAgLTE3NzIsNyArMTc3OCw3IEBAIF9idF9y aWdodHNpYl9oYWxmZGVhZGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBsZWFmcmln aHRzaWIpCiAKIAlBc3NlcnQobGVhZnJpZ2h0c2liICE9IFBfTk9ORSk7CiAKLQlidWYgPSBf YnRfZ2V0YnVmKHJlbCwgbGVhZnJpZ2h0c2liLCBCVF9SRUFEKTsKKwlidWYgPSBfYnRfZ2V0 YnVmKHJlbCwgbGVhZnJpZ2h0c2liLCBCVF9SRUFELCBoZWFwcmVsKTsKIAlwYWdlID0gQnVm ZmVyR2V0UGFnZShidWYpOwogCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIApA QCAtMTk2MSwxNyArMTk2NywxOCBAQCBfYnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1ZmZl ciBsZWFmYnVmLCBCVFZhY1N0YXRlICp2c3RhdGUpCiAJCQkJICogbWFya2VkIHdpdGggSU5D T01QTEVURV9TUExJVCBmbGFnIGJlZm9yZSBwcm9jZWVkaW5nCiAJCQkJICovCiAJCQkJQXNz ZXJ0KGxlYWZibGtubyA9PSBzY2FuYmxrbm8pOwotCQkJCWlmIChfYnRfbGVmdHNpYl9zcGxp dGZsYWcocmVsLCBsZWZ0c2liLCBsZWFmYmxrbm8pKQorCQkJCWlmIChfYnRfbGVmdHNpYl9z cGxpdGZsYWcocmVsLCBsZWZ0c2liLCBsZWFmYmxrbm8sIHZzdGF0ZS0+aW5mby0+aGVhcHJl bCkpCiAJCQkJewogCQkJCQlSZWxlYXNlQnVmZmVyKGxlYWZidWYpOwogCQkJCQlyZXR1cm47 CiAJCQkJfQogCiAJCQkJLyogd2UgbmVlZCBhbiBpbnNlcnRpb24gc2NhbiBrZXkgZm9yIHRo ZSBzZWFyY2gsIHNvIGJ1aWxkIG9uZSAqLwotCQkJCWl0dXBfa2V5ID0gX2J0X21rc2Nhbmtl eShyZWwsIHRhcmdldGtleSk7CisJCQkJaXR1cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwg dGFyZ2V0a2V5LCB2c3RhdGUtPmluZm8tPmhlYXByZWwpOwogCQkJCS8qIGZpbmQgdGhlIGxl ZnRtb3N0IGxlYWYgcGFnZSB3aXRoIG1hdGNoaW5nIHBpdm90L2hpZ2gga2V5ICovCiAJCQkJ aXR1cF9rZXktPnBpdm90c2VhcmNoID0gdHJ1ZTsKLQkJCQlzdGFjayA9IF9idF9zZWFyY2go cmVsLCBpdHVwX2tleSwgJnNsZWFmYnVmLCBCVF9SRUFELCBOVUxMKTsKKwkJCQlzdGFjayA9 IF9idF9zZWFyY2gocmVsLCBpdHVwX2tleSwgJnNsZWFmYnVmLCBCVF9SRUFELCBOVUxMLAor CQkJCQkJCQkgICB2c3RhdGUtPmluZm8tPmhlYXByZWwpOwogCQkJCS8qIHdvbid0IG5lZWQg YSBzZWNvbmQgbG9jayBvciBwaW4gb24gbGVhZmJ1ZiAqLwogCQkJCV9idF9yZWxidWYocmVs LCBzbGVhZmJ1Zik7CiAKQEAgLTIwMDIsNyArMjAwOSw3IEBAIF9idF9wYWdlZGVsKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUVmFjU3RhdGUgKnZzdGF0ZSkKIAkJCSAqIGxl YWZidWYgcGFnZSBoYWxmLWRlYWQuCiAJCQkgKi8KIAkJCUFzc2VydChQX0lTTEVBRihvcGFx dWUpICYmICFQX0lHTk9SRShvcGFxdWUpKTsKLQkJCWlmICghX2J0X21hcmtfcGFnZV9oYWxm ZGVhZChyZWwsIGxlYWZidWYsIHN0YWNrKSkKKwkJCWlmICghX2J0X21hcmtfcGFnZV9oYWxm ZGVhZChyZWwsIGxlYWZidWYsIHN0YWNrLCB2c3RhdGUtPmluZm8tPmhlYXByZWwpKQogCQkJ ewogCQkJCV9idF9yZWxidWYocmVsLCBsZWFmYnVmKTsKIAkJCQlyZXR1cm47CkBAIC0yMDY1 LDcgKzIwNzIsNyBAQCBfYnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCVFZhY1N0YXRlICp2c3RhdGUpCiAJCWlmICghcmlnaHRzaWJfZW1wdHkpCiAJCQlicmVh azsKIAotCQlsZWFmYnVmID0gX2J0X2dldGJ1ZihyZWwsIHJpZ2h0c2liLCBCVF9XUklURSk7 CisJCWxlYWZidWYgPSBfYnRfZ2V0YnVmKHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFLCB2c3Rh dGUtPmluZm8tPmhlYXByZWwpOwogCX0KIH0KIApAQCAtMjA4NCw3ICsyMDkxLDcgQEAgX2J0 X3BhZ2VkZWwoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRWYWNTdGF0ZSAqdnN0 YXRlKQogICogc3VjY2Vzc2Z1bGx5LgogICovCiBzdGF0aWMgYm9vbAotX2J0X21hcmtfcGFn ZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0YWNr KQorX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCVFN0YWNrIHN0YWNrLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJsb2NrTnVtYmVyIGxl YWZibGtubzsKIAlCbG9ja051bWJlciBsZWFmcmlnaHRzaWI7CkBAIC0yMTE5LDcgKzIxMjYs NyBAQCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZi dWYsIEJUU3RhY2sgc3RhY2spCiAJICogZGVsZXRlIHRoZSBkb3dubGluay4gIEl0IHdvdWxk IGZhaWwgdGhlICJyaWdodCBzaWJsaW5nIG9mIHRhcmdldCBwYWdlCiAJICogaXMgYWxzbyB0 aGUgbmV4dCBjaGlsZCBpbiBwYXJlbnQgcGFnZSIgY3Jvc3MtY2hlY2sgYmVsb3cuCiAJICov Ci0JaWYgKF9idF9yaWdodHNpYl9oYWxmZGVhZGZsYWcocmVsLCBsZWFmcmlnaHRzaWIpKQor CWlmIChfYnRfcmlnaHRzaWJfaGFsZmRlYWRmbGFnKHJlbCwgbGVhZnJpZ2h0c2liLCBoZWFw cmVsKSkKIAl7CiAJCWVsb2coREVCVUcxLCAiY291bGQgbm90IGRlbGV0ZSBwYWdlICV1IGJl Y2F1c2UgaXRzIHJpZ2h0IHNpYmxpbmcgJXUgaXMgaGFsZi1kZWFkIiwKIAkJCSBsZWFmYmxr bm8sIGxlYWZyaWdodHNpYik7CkBAIC0yMTQ1LDcgKzIxNTIsNyBAQCBfYnRfbWFya19wYWdl X2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUU3RhY2sgc3RhY2sp CiAJdG9wcGFyZW50cmlnaHRzaWIgPSBsZWFmcmlnaHRzaWI7CiAJaWYgKCFfYnRfbG9ja19z dWJ0cmVlX3BhcmVudChyZWwsIGxlYWZibGtubywgc3RhY2ssCiAJCQkJCQkJCSAmc3VidHJl ZXBhcmVudCwgJnBvZmZzZXQsCi0JCQkJCQkJCSAmdG9wcGFyZW50LCAmdG9wcGFyZW50cmln aHRzaWIpKQorCQkJCQkJCQkgJnRvcHBhcmVudCwgJnRvcHBhcmVudHJpZ2h0c2liLCBoZWFw cmVsKSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyoKQEAgLTIzNjMsNyArMjM3MCw3IEBAIF9i dF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBC bG9ja051bWJlciBzY2FuYmxrbm8sCiAJCUFzc2VydCh0YXJnZXQgIT0gbGVhZmJsa25vKTsK IAogCQkvKiBGZXRjaCB0aGUgYmxvY2sgbnVtYmVyIG9mIHRoZSB0YXJnZXQncyBsZWZ0IHNp YmxpbmcgKi8KLQkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIHRhcmdldCwgQlRfUkVBRCk7CisJ CWJ1ZiA9IF9idF9nZXRidWYocmVsLCB0YXJnZXQsIEJUX1JFQUQsIHZzdGF0ZS0+aW5mby0+ aGVhcHJlbCk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCW9wYXF1ZSA9IEJU UGFnZUdldE9wYXF1ZShwYWdlKTsKIAkJbGVmdHNpYiA9IG9wYXF1ZS0+YnRwb19wcmV2OwpA QCAtMjM5MCw3ICsyMzk3LDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJX2J0X2xv Y2tidWYocmVsLCBsZWFmYnVmLCBCVF9XUklURSk7CiAJaWYgKGxlZnRzaWIgIT0gUF9OT05F KQogCXsKLQkJbGJ1ZiA9IF9idF9nZXRidWYocmVsLCBsZWZ0c2liLCBCVF9XUklURSk7CisJ CWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVmdHNpYiwgQlRfV1JJVEUsIHZzdGF0ZS0+aW5m by0+aGVhcHJlbCk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxidWYpOwogCQlvcGFxdWUg PSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJCXdoaWxlIChQX0lTREVMRVRFRChvcGFxdWUp IHx8IG9wYXF1ZS0+YnRwb19uZXh0ICE9IHRhcmdldCkKQEAgLTI0NDAsNyArMjQ0Nyw3IEBA IF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CiAJCQkvKiBzdGVwIHJpZ2h0IG9uZSBwYWdlICovCi0JCQlsYnVmID0gX2J0X2dldGJ1Zihy ZWwsIGxlZnRzaWIsIEJUX1dSSVRFKTsKKwkJCWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVm dHNpYiwgQlRfV1JJVEUsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCk7CiAJCQlwYWdlID0gQnVm ZmVyR2V0UGFnZShsYnVmKTsKIAkJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsK IAkJfQpAQCAtMjUwNCw3ICsyNTExLDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkg KiBBbmQgbmV4dCB3cml0ZS1sb2NrIHRoZSAoY3VycmVudCkgcmlnaHQgc2libGluZy4KIAkg Ki8KIAlyaWdodHNpYiA9IG9wYXF1ZS0+YnRwb19uZXh0OwotCXJidWYgPSBfYnRfZ2V0YnVm KHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKKwlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIHJp Z2h0c2liLCBCVF9XUklURSwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsKTsKIAlwYWdlID0gQnVm ZmVyR2V0UGFnZShyYnVmKTsKIAlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJ aWYgKG9wYXF1ZS0+YnRwb19wcmV2ICE9IHRhcmdldCkKQEAgLTI1MzMsNyArMjU0MCw4IEBA IF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCWlmIChQX1JJR0hUTU9TVChvcGFxdWUpKQog CQl7CiAJCQkvKiByaWdodHNpYiB3aWxsIGJlIHRoZSBvbmx5IG9uZSBsZWZ0IG9uIHRoZSBs ZXZlbCAqLwotCQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwg QlRfV1JJVEUpOworCQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfV1JJVEUsCisJCQkJCQkJCSB2c3RhdGUtPmluZm8tPmhlYXByZWwpOwogCQkJbWV0 YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAkJCW1ldGFkID0gQlRQYWdlR2V0TWV0 YShtZXRhcGcpOwogCkBAIC0yNzc1LDcgKzI3ODMsOCBAQCBfYnRfdW5saW5rX2hhbGZkZWFk X3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tOdW1iZXIgc2NhbmJs a25vLAogc3RhdGljIGJvb2wKIF9idF9sb2NrX3N1YnRyZWVfcGFyZW50KFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgY2hpbGQsIEJUU3RhY2sgc3RhY2ssCiAJCQkJCQlCdWZmZXIgKnN1 YnRyZWVwYXJlbnQsIE9mZnNldE51bWJlciAqcG9mZnNldCwKLQkJCQkJCUJsb2NrTnVtYmVy ICp0b3BwYXJlbnQsIEJsb2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYikKKwkJCQkJCUJs b2NrTnVtYmVyICp0b3BwYXJlbnQsIEJsb2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYiwK KwkJCQkJCVJlbGF0aW9uIGhlYXByZWwpCiB7CiAJQmxvY2tOdW1iZXIgcGFyZW50LAogCQkJ CWxlZnRzaWJwYXJlbnQ7CkBAIC0yNzg5LDcgKzI3OTgsNyBAQCBfYnRfbG9ja19zdWJ0cmVl X3BhcmVudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGNoaWxkLCBCVFN0YWNrIHN0YWNr LAogCSAqIExvY2F0ZSB0aGUgcGl2b3QgdHVwbGUgd2hvc2UgZG93bmxpbmsgcG9pbnRzIHRv ICJjaGlsZCIuICBXcml0ZSBsb2NrCiAJICogdGhlIHBhcmVudCBwYWdlIGl0c2VsZi4KIAkg Ki8KLQlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgc3RhY2ssIGNoaWxkKTsKKwlwYnVm ID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgc3RhY2ssIGNoaWxkLCBoZWFwcmVsKTsKIAlpZiAo cGJ1ZiA9PSBJbnZhbGlkQnVmZmVyKQogCXsKIAkJLyoKQEAgLTI4ODksMTMgKzI4OTgsMTMg QEAgX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBj aGlsZCwgQlRTdGFjayBzdGFjaywKIAkgKgogCSAqIE5vdGU6IFdlIGRlbGliZXJhdGVseSBh dm9pZCBjb21wbGV0aW5nIGluY29tcGxldGUgc3BsaXRzIGhlcmUuCiAJICovCi0JaWYgKF9i dF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGxlZnRzaWJwYXJlbnQsIHBhcmVudCkpCisJaWYg KF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGxlZnRzaWJwYXJlbnQsIHBhcmVudCwgaGVh cHJlbCkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIFJlY3Vyc2UgdG8gZXhhbWluZSBjaGls ZCBwYWdlJ3MgZ3JhbmRwYXJlbnQgcGFnZSAqLwogCXJldHVybiBfYnRfbG9ja19zdWJ0cmVl X3BhcmVudChyZWwsIHBhcmVudCwgc3RhY2stPmJ0c19wYXJlbnQsCiAJCQkJCQkJCSAgIHN1 YnRyZWVwYXJlbnQsIHBvZmZzZXQsCi0JCQkJCQkJCSAgIHRvcHBhcmVudCwgdG9wcGFyZW50 cmlnaHRzaWIpOworCQkJCQkJCQkgICB0b3BwYXJlbnQsIHRvcHBhcmVudHJpZ2h0c2liLCBo ZWFwcmVsKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0cmVlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCmluZGV4 IDFjYzg4ZGEwMzIuLjcwNTcxNmUzMzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRy ZWUuYwpAQCAtODM0LDcgKzgzNCw3IEBAIGJ0dmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUlu Zm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJaWYgKHN0YXRzID09 IE5VTEwpCiAJewogCQkvKiBDaGVjayBpZiBWQUNVVU0gb3BlcmF0aW9uIGNhbiBlbnRpcmVs eSBhdm9pZCBidHZhY3V1bXNjYW4oKSBjYWxsICovCi0JCWlmICghX2J0X3ZhY3V1bV9uZWVk c19jbGVhbnVwKGluZm8tPmluZGV4KSkKKwkJaWYgKCFfYnRfdmFjdXVtX25lZWRzX2NsZWFu dXAoaW5mby0+aW5kZXgsIGluZm8tPmhlYXByZWwpKQogCQkJcmV0dXJuIE5VTEw7CiAKIAkJ LyoKQEAgLTg3MCw3ICs4NzAsNyBAQCBidHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZv ICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCSAqLwogCUFzc2VydChz dGF0cy0+cGFnZXNfZGVsZXRlZCA+PSBzdGF0cy0+cGFnZXNfZnJlZSk7CiAJbnVtX2RlbHBh Z2VzID0gc3RhdHMtPnBhZ2VzX2RlbGV0ZWQgLSBzdGF0cy0+cGFnZXNfZnJlZTsKLQlfYnRf c2V0X2NsZWFudXBfaW5mbyhpbmZvLT5pbmRleCwgbnVtX2RlbHBhZ2VzKTsKKwlfYnRfc2V0 X2NsZWFudXBfaW5mbyhpbmZvLT5pbmRleCwgbnVtX2RlbHBhZ2VzLCBpbmZvLT5oZWFwcmVs KTsKIAogCS8qCiAJICogSXQncyBxdWl0ZSBwb3NzaWJsZSBmb3IgdXMgdG8gYmUgZm9vbGVk IGJ5IGNvbmN1cnJlbnQgcGFnZSBzcGxpdHMgaW50bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c2VhcmNoLmMKaW5kZXggYzQzYzFhMjgzMC4uNjQ2NmZlMmY1OCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRp YyBib29sIF9idF9zdGVwcGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24g ZGlyKTsKIHN0YXRpYyBib29sIF9idF9yZWFkbmV4dHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2Fu LCBCbG9ja051bWJlciBibGtubywgU2NhbkRpcmVjdGlvbiBkaXIpOwogc3RhdGljIGJvb2wg X2J0X3BhcmFsbGVsX3JlYWRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJCQkJCQkJCSAgU2NhbkRpcmVjdGlvbiBkaXIpOwotc3RhdGljIEJ1ZmZlciBf YnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgU25hcHNob3Qgc25hcHNo b3QpOworc3RhdGljIEJ1ZmZlciBfYnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwgU25hcHNob3Qgc25hcHNob3QsIFJlbGF0aW9uIGhlYXByZWwpOwogc3RhdGljIGJv b2wgX2J0X2VuZHBvaW50KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIp Owogc3RhdGljIGlubGluZSB2b2lkIF9idF9pbml0aWFsaXplX21vcmVfZGF0YShCVFNjYW5P cGFxdWUgc28sIFNjYW5EaXJlY3Rpb24gZGlyKTsKIApAQCAtOTQsMTMgKzk0LDEzIEBAIF9i dF9kcm9wX2xvY2tfYW5kX21heWJlX3BpbihJbmRleFNjYW5EZXNjIHNjYW4sIEJUU2NhblBv cyBzcCkKICAqLwogQlRTdGFjawogX2J0X3NlYXJjaChSZWxhdGlvbiByZWwsIEJUU2Nhbklu c2VydCBrZXksIEJ1ZmZlciAqYnVmUCwgaW50IGFjY2VzcywKLQkJICAgU25hcHNob3Qgc25h cHNob3QpCisJCSAgIFNuYXBzaG90IHNuYXBzaG90LCBSZWxhdGlvbiBoZWFwcmVsKQogewog CUJUU3RhY2sJCXN0YWNrX2luID0gTlVMTDsKIAlpbnQJCQlwYWdlX2FjY2VzcyA9IEJUX1JF QUQ7CiAKIAkvKiBHZXQgdGhlIHJvb3QgcGFnZSB0byBzdGFydCB3aXRoICovCi0JKmJ1ZlAg PSBfYnRfZ2V0cm9vdChyZWwsIGFjY2Vzcyk7CisJKmJ1ZlAgPSBfYnRfZ2V0cm9vdChyZWws IGFjY2VzcywgaGVhcHJlbCk7CiAKIAkvKiBJZiBpbmRleCBpcyBlbXB0eSBhbmQgYWNjZXNz ID0gQlRfUkVBRCwgbm8gcm9vdCBwYWdlIGlzIGNyZWF0ZWQuICovCiAJaWYgKCFCdWZmZXJJ c1ZhbGlkKCpidWZQKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBfYnRfc2VhcmNoKFJlbGF0aW9u IHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLCBpbnQgYWNjZXNzLAogCQkg KiBvcHBvcnR1bml0eSB0byBmaW5pc2ggc3BsaXRzIG9mIGludGVybmFsIHBhZ2VzIHRvby4K IAkJICovCiAJCSpidWZQID0gX2J0X21vdmVyaWdodChyZWwsIGtleSwgKmJ1ZlAsIChhY2Nl c3MgPT0gQlRfV1JJVEUpLCBzdGFja19pbiwKLQkJCQkJCQkgIHBhZ2VfYWNjZXNzLCBzbmFw c2hvdCk7CisJCQkJCQkJICBwYWdlX2FjY2Vzcywgc25hcHNob3QsIGhlYXByZWwpOwogCiAJ CS8qIGlmIHRoaXMgaXMgYSBsZWFmIHBhZ2UsIHdlJ3JlIGRvbmUgKi8KIAkJcGFnZSA9IEJ1 ZmZlckdldFBhZ2UoKmJ1ZlApOwpAQCAtMTkxLDcgKzE5MSw3IEBAIF9idF9zZWFyY2goUmVs YXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsIGludCBhY2Nlc3Ms CiAJCSAqIG1vdmUgcmlnaHQgdG8gaXRzIG5ldyBzaWJsaW5nLiAgRG8gdGhhdC4KIAkJICov CiAJCSpidWZQID0gX2J0X21vdmVyaWdodChyZWwsIGtleSwgKmJ1ZlAsIHRydWUsIHN0YWNr X2luLCBCVF9XUklURSwKLQkJCQkJCQkgIHNuYXBzaG90KTsKKwkJCQkJCQkgIHNuYXBzaG90 LCBoZWFwcmVsKTsKIAl9CiAKIAlyZXR1cm4gc3RhY2tfaW47CkBAIC0yMzksNyArMjM5LDgg QEAgX2J0X21vdmVyaWdodChSZWxhdGlvbiByZWwsCiAJCQkgIGJvb2wgZm9ydXBkYXRlLAog CQkJICBCVFN0YWNrIHN0YWNrLAogCQkJICBpbnQgYWNjZXNzLAotCQkJICBTbmFwc2hvdCBz bmFwc2hvdCkKKwkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJCQkgIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJUGFnZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAtMjg4LDEy ICsyODksMTIgQEAgX2J0X21vdmVyaWdodChSZWxhdGlvbiByZWwsCiAJCQl9CiAKIAkJCWlm IChQX0lOQ09NUExFVEVfU1BMSVQob3BhcXVlKSkKLQkJCQlfYnRfZmluaXNoX3NwbGl0KHJl bCwgYnVmLCBzdGFjayk7CisJCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGJ1Ziwgc3RhY2ss IGhlYXByZWwpOwogCQkJZWxzZQogCQkJCV9idF9yZWxidWYocmVsLCBidWYpOwogCiAJCQkv KiByZS1hY3F1aXJlIHRoZSBsb2NrIGluIHRoZSByaWdodCBtb2RlLCBhbmQgcmUtY2hlY2sg Ki8KLQkJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBibGtubywgYWNjZXNzKTsKKwkJCWJ1ZiA9 IF9idF9nZXRidWYocmVsLCBibGtubywgYWNjZXNzLCBoZWFwcmVsKTsKIAkJCWNvbnRpbnVl OwogCQl9CiAKQEAgLTg2MCw2ICs4NjEsNyBAQCBib29sCiBfYnRfZmlyc3QoSW5kZXhTY2Fu RGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIHsKIAlSZWxhdGlvbglyZWwgPSBzY2Fu LT5pbmRleFJlbGF0aW9uOworCVJlbGF0aW9uIAloZWFwcmVsID0gc2Nhbi0+aGVhcFJlbGF0 aW9uOwogCUJUU2Nhbk9wYXF1ZSBzbyA9IChCVFNjYW5PcGFxdWUpIHNjYW4tPm9wYXF1ZTsK IAlCdWZmZXIJCWJ1ZjsKIAlCVFN0YWNrCQlzdGFjazsKQEAgLTEzNTIsNyArMTM1NCw3IEBA IF9idF9maXJzdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCX0K IAogCS8qIEluaXRpYWxpemUgcmVtYWluaW5nIGluc2VydGlvbiBzY2FuIGtleSBmaWVsZHMg Ki8KLQlfYnRfbWV0YXZlcnNpb24ocmVsLCAmaW5za2V5LmhlYXBrZXlzcGFjZSwgJmluc2tl eS5hbGxlcXVhbGltYWdlKTsKKwlfYnRfbWV0YXZlcnNpb24ocmVsLCAmaW5za2V5LmhlYXBr ZXlzcGFjZSwgJmluc2tleS5hbGxlcXVhbGltYWdlLCBoZWFwcmVsKTsKIAlpbnNrZXkuYW55 bnVsbGtleXMgPSBmYWxzZTsgLyogdW51c2VkICovCiAJaW5za2V5Lm5leHRrZXkgPSBuZXh0 a2V5OwogCWluc2tleS5waXZvdHNlYXJjaCA9IGZhbHNlOwpAQCAtMTM2Myw3ICsxMzY1LDcg QEAgX2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJ ICogVXNlIHRoZSBtYW51ZmFjdHVyZWQgaW5zZXJ0aW9uIHNjYW4ga2V5IHRvIGRlc2NlbmQg dGhlIHRyZWUgYW5kCiAJICogcG9zaXRpb24gb3Vyc2VsdmVzIG9uIHRoZSB0YXJnZXQgbGVh ZiBwYWdlLgogCSAqLwotCXN0YWNrID0gX2J0X3NlYXJjaChyZWwsICZpbnNrZXksICZidWYs IEJUX1JFQUQsIHNjYW4tPnhzX3NuYXBzaG90KTsKKwlzdGFjayA9IF9idF9zZWFyY2gocmVs LCAmaW5za2V5LCAmYnVmLCBCVF9SRUFELCBzY2FuLT54c19zbmFwc2hvdCwgaGVhcHJlbCk7 CiAKIAkvKiBkb24ndCBuZWVkIHRvIGtlZXAgdGhlIHN0YWNrIGFyb3VuZC4uLiAqLwogCV9i dF9mcmVlc3RhY2soc3RhY2spOwpAQCAtMjAwNCw3ICsyMDA2LDcgQEAgX2J0X3JlYWRuZXh0 cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0 aW9uIGRpcikKIAkJCS8qIGNoZWNrIGZvciBpbnRlcnJ1cHRzIHdoaWxlIHdlJ3JlIG5vdCBo b2xkaW5nIGFueSBidWZmZXIgbG9jayAqLwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAkJCS8qIHN0ZXAgcmlnaHQgb25lIHBhZ2UgKi8KLQkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9i dF9nZXRidWYocmVsLCBibGtubywgQlRfUkVBRCk7CisJCQlzby0+Y3VyclBvcy5idWYgPSBf YnRfZ2V0YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQsIHNjYW4tPmhlYXBSZWxhdGlvbik7CiAJ CQlwYWdlID0gQnVmZmVyR2V0UGFnZShzby0+Y3VyclBvcy5idWYpOwogCQkJVGVzdEZvck9s ZFNuYXBzaG90KHNjYW4tPnhzX3NuYXBzaG90LCByZWwsIHBhZ2UpOwogCQkJb3BhcXVlID0g QlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwpAQCAtMjA3OCw3ICsyMDgwLDggQEAgX2J0X3JlYWRu ZXh0cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGly ZWN0aW9uIGRpcikKIAkJaWYgKEJUU2NhblBvc0lzUGlubmVkKHNvLT5jdXJyUG9zKSkKIAkJ CV9idF9sb2NrYnVmKHJlbCwgc28tPmN1cnJQb3MuYnVmLCBCVF9SRUFEKTsKIAkJZWxzZQot CQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X2dldGJ1ZihyZWwsIHNvLT5jdXJyUG9zLmN1cnJQ YWdlLCBCVF9SRUFEKTsKKwkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBz by0+Y3VyclBvcy5jdXJyUGFnZSwgQlRfUkVBRCwKKwkJCQkJCQkJCQkgc2Nhbi0+aGVhcFJl bGF0aW9uKTsKIAogCQlmb3IgKDs7KQogCQl7CkBAIC0yMDkzLDcgKzIwOTYsNyBAQCBfYnRf cmVhZG5leHRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNj YW5EaXJlY3Rpb24gZGlyKQogCiAJCQkvKiBTdGVwIHRvIG5leHQgcGh5c2ljYWwgcGFnZSAq LwogCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X3dhbGtfbGVmdChyZWwsIHNvLT5jdXJyUG9z LmJ1ZiwKLQkJCQkJCQkJCQkJc2Nhbi0+eHNfc25hcHNob3QpOworCQkJCQkJCQkJCQlzY2Fu LT54c19zbmFwc2hvdCwgc2Nhbi0+aGVhcFJlbGF0aW9uKTsKIAogCQkJLyogaWYgd2UncmUg cGh5c2ljYWxseSBhdCBlbmQgb2YgaW5kZXgsIHJldHVybiBmYWlsdXJlICovCiAJCQlpZiAo c28tPmN1cnJQb3MuYnVmID09IEludmFsaWRCdWZmZXIpCkBAIC0yMTQwLDcgKzIxNDMsOCBA QCBfYnRfcmVhZG5leHRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxr bm8sIFNjYW5EaXJlY3Rpb24gZGlyKQogCQkJCQlCVFNjYW5Qb3NJbnZhbGlkYXRlKHNvLT5j dXJyUG9zKTsKIAkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCX0KLQkJCQlzby0+Y3VyclBvcy5i dWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQpOworCQkJCXNvLT5jdXJyUG9z LmJ1ZiA9IF9idF9nZXRidWYocmVsLCBibGtubywgQlRfUkVBRCwKKwkJCQkJCQkJCQkJIHNj YW4tPmhlYXBSZWxhdGlvbik7CiAJCQl9CiAJCX0KIAl9CkBAIC0yMTg1LDcgKzIxODksNyBA QCBfYnRfcGFyYWxsZWxfcmVhZHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJl ciBibGtubywgU2NhbkRpcmVjdGlvbiBkaXIpCiAgKiBhZ2FpbiBpZiBpdCdzIGltcG9ydGFu dC4KICAqLwogc3RhdGljIEJ1ZmZlcgotX2J0X3dhbGtfbGVmdChSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsIFNuYXBzaG90IHNuYXBzaG90KQorX2J0X3dhbGtfbGVmdChSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsIFNuYXBzaG90IHNuYXBzaG90LCBSZWxhdGlvbiBoZWFwcmVsKQog ewogCVBhZ2UJCXBhZ2U7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTIyMTMsNyArMjIx Nyw3IEBAIF9idF93YWxrX2xlZnQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAkJX2J0X3JlbGJ1ZihyZWwsIGJ1Zik7CiAJCS8qIGNoZWNrIGZvciBp bnRlcnJ1cHRzIHdoaWxlIHdlJ3JlIG5vdCBob2xkaW5nIGFueSBidWZmZXIgbG9jayAqLwog CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxr bm8sIEJUX1JFQUQpOworCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQs IGhlYXByZWwpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlUZXN0Rm9yT2xk U25hcHNob3Qoc25hcHNob3QsIHJlbCwgcGFnZSk7CiAJCW9wYXF1ZSA9IEJUUGFnZUdldE9w YXF1ZShwYWdlKTsKQEAgLTIzMDUsNyArMjMwOSw3IEBAIF9idF93YWxrX2xlZnQoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hvdCBzbmFwc2hvdCkKICAqLwogQnVmZmVyCiBf YnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVsLCBib29sIHJpZ2h0 bW9zdCwKLQkJCQkgU25hcHNob3Qgc25hcHNob3QpCisJCQkJIFNuYXBzaG90IHNuYXBzaG90 LCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJCXBhZ2U7CkBA IC0yMzIwLDkgKzIzMjQsOSBAQCBfYnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWlu dDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwKIAkgKiBzbWFydGVyIGFib3V0IGludGVybWVk aWF0ZSBsZXZlbHMuKQogCSAqLwogCWlmIChsZXZlbCA9PSAwKQotCQlidWYgPSBfYnRfZ2V0 cm9vdChyZWwsIEJUX1JFQUQpOworCQlidWYgPSBfYnRfZ2V0cm9vdChyZWwsIEJUX1JFQUQs IGhlYXByZWwpOwogCWVsc2UKLQkJYnVmID0gX2J0X2dldHRydWVyb290KHJlbCk7CisJCWJ1 ZiA9IF9idF9nZXR0cnVlcm9vdChyZWwsIGhlYXByZWwpOwogCiAJaWYgKCFCdWZmZXJJc1Zh bGlkKGJ1ZikpCiAJCXJldHVybiBJbnZhbGlkQnVmZmVyOwpAQCAtMjQwMyw3ICsyNDA3LDgg QEAgX2J0X2VuZHBvaW50KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIp CiAJICogdmVyc2lvbiBvZiBfYnRfc2VhcmNoKCkuICBXZSBkb24ndCBtYWludGFpbiBhIHN0 YWNrIHNpbmNlIHdlIGtub3cgd2UKIAkgKiB3b24ndCBuZWVkIGl0LgogCSAqLwotCWJ1ZiA9 IF9idF9nZXRfZW5kcG9pbnQocmVsLCAwLCBTY2FuRGlyZWN0aW9uSXNCYWNrd2FyZChkaXIp LCBzY2FuLT54c19zbmFwc2hvdCk7CisJYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWwsIDAs IFNjYW5EaXJlY3Rpb25Jc0JhY2t3YXJkKGRpciksIHNjYW4tPnhzX3NuYXBzaG90LAorCQkJ CQkJICAgc2Nhbi0+aGVhcFJlbGF0aW9uKTsKIAogCWlmICghQnVmZmVySXNWYWxpZChidWYp KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggNjdiN2IxNzEw Yy4uNTQyMDI5ZWVjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAg LTU2Niw3ICs1NjYsNyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bv b2wgKmJ0c3Bvb2wyKQogCiAJd3N0YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCXdzdGF0 ZS5pbmRleCA9IGJ0c3Bvb2wtPmluZGV4OwotCXdzdGF0ZS5pbnNrZXkgPSBfYnRfbWtzY2Fu a2V5KHdzdGF0ZS5pbmRleCwgTlVMTCk7CisJd3N0YXRlLmluc2tleSA9IF9idF9ta3NjYW5r ZXkod3N0YXRlLmluZGV4LCBOVUxMLCBidHNwb29sLT5oZWFwKTsKIAkvKiBfYnRfbWtzY2Fu a2V5KCkgd29uJ3Qgc2V0IGFsbGVxdWFsaW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdz dGF0ZS5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgPSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUu aW5kZXgsIHRydWUpOwogCXdzdGF0ZS5idHdzX3VzZV93YWwgPSBSZWxhdGlvbk5lZWRzV0FM KHdzdGF0ZS5pbmRleCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKaW5k ZXggODAwMzU4M2MwYS4uOWVkZDg1NjM3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0dXRpbHMuYwpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW50CV9idF9rZWVwX25hdHRz KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwKICAqCQlmaWVsZCB0aGVtc2Vs dmVzLgogICovCiBCVFNjYW5JbnNlcnQKLV9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBJ bmRleFR1cGxlIGl0dXApCitfYnRfbWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBs ZSBpdHVwLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJUU2Nhbkluc2VydCBrZXk7CiAJU2Nh bktleQkJc2tleTsKQEAgLTExMiw3ICsxMTIsNyBAQCBfYnRfbWtzY2Fua2V5KFJlbGF0aW9u IHJlbCwgSW5kZXhUdXBsZSBpdHVwKQogCWtleSA9IHBhbGxvYyhvZmZzZXRvZihCVFNjYW5J bnNlcnREYXRhLCBzY2Fua2V5cykgKwogCQkJCSBzaXplb2YoU2NhbktleURhdGEpICogaW5k bmtleWF0dHMpOwogCWlmIChpdHVwKQotCQlfYnRfbWV0YXZlcnNpb24ocmVsLCAma2V5LT5o ZWFwa2V5c3BhY2UsICZrZXktPmFsbGVxdWFsaW1hZ2UpOworCQlfYnRfbWV0YXZlcnNpb24o cmVsLCAma2V5LT5oZWFwa2V5c3BhY2UsICZrZXktPmFsbGVxdWFsaW1hZ2UsIGhlYXByZWwp OwogCWVsc2UKIAl7CiAJCS8qIFV0aWxpdHkgc3RhdGVtZW50IGNhbGxlcnMgY2FuIHNldCB0 aGVzZSBmaWVsZHMgdGhlbXNlbHZlcyAqLwpAQCAtMTc2MSw3ICsxNzYxLDggQEAgX2J0X2tp bGxpdGVtcyhJbmRleFNjYW5EZXNjIHNjYW4pCiAKIAkJZHJvcHBlZHBpbiA9IHRydWU7CiAJ CS8qIEF0dGVtcHQgdG8gcmUtcmVhZCB0aGUgYnVmZmVyLCBnZXR0aW5nIHBpbiBhbmQgbG9j ay4gKi8KLQkJYnVmID0gX2J0X2dldGJ1ZihzY2FuLT5pbmRleFJlbGF0aW9uLCBzby0+Y3Vy clBvcy5jdXJyUGFnZSwgQlRfUkVBRCk7CisJCWJ1ZiA9IF9idF9nZXRidWYoc2Nhbi0+aW5k ZXhSZWxhdGlvbiwgc28tPmN1cnJQb3MuY3VyclBhZ2UsIEJUX1JFQUQsCisJCQkJCQkgc2Nh bi0+aGVhcFJlbGF0aW9uKTsKIAogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlp ZiAoQnVmZmVyR2V0TFNOQXRvbWljKGJ1ZikgPT0gc28tPmN1cnJQb3MubHNuKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggM2FkYjE4ZjJkOC4uYThmYzIy MTE1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0u YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC00ODks NyArNDg5LDcgQEAgdmFjdXVtTGVhZlJvb3Qoc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMsIFJl bGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQogICogVW5saWtlIHRoZSByb3V0aW5lcyBh Ym92ZSwgdGhpcyB3b3JrcyBvbiBib3RoIGxlYWYgYW5kIGlubmVyIHBhZ2VzLgogICovCiBz dGF0aWMgdm9pZAotdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRl eCwgQnVmZmVyIGJ1ZmZlcikKK3ZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRp b24gaW5kZXgsIEJ1ZmZlciBidWZmZXIsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJUGFnZQkJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlTcEdpc3RQYWdlT3BhcXVlIG9wYXF1 ZSA9IFNwR2lzdFBhZ2VHZXRPcGFxdWUocGFnZSk7CkBAIC01MDMsNiArNTAzLDcgQEAgdmFj dXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZl cikKIAlzcGd4bG9nVmFjdXVtUmVkaXJlY3QgeGxyZWM7CiAJR2xvYmFsVmlzU3RhdGUgKnZp c3Rlc3Q7CiAKKwl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUlu TG9naWNhbERlY29kaW5nKGhlYXByZWwpOwogCXhscmVjLm5Ub1BsYWNlaG9sZGVyID0gMDsK IAl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklk OwogCkBAIC02NDMsMTMgKzY0NCwxMyBAQCBzcGd2YWN1dW1wYWdlKHNwZ0J1bGtEZWxldGVT dGF0ZSAqYmRzLCBCbG9ja051bWJlciBibGtubykKIAkJZWxzZQogCQl7CiAJCQl2YWN1dW1M ZWFmUGFnZShiZHMsIGluZGV4LCBidWZmZXIsIGZhbHNlKTsKLQkJCXZhY3V1bVJlZGlyZWN0 QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJ1ZmZlcik7CisJCQl2YWN1dW1SZWRpcmVjdEFuZFBs YWNlaG9sZGVyKGluZGV4LCBidWZmZXIsIGJkcy0+aW5mby0+aGVhcHJlbCk7CiAJCX0KIAl9 CiAJZWxzZQogCXsKIAkJLyogaW5uZXIgcGFnZSAqLwotCQl2YWN1dW1SZWRpcmVjdEFuZFBs YWNlaG9sZGVyKGluZGV4LCBidWZmZXIpOworCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9s ZGVyKGluZGV4LCBidWZmZXIsIGJkcy0+aW5mby0+aGVhcHJlbCk7CiAJfQogCiAJLyoKQEAg LTcxOSw3ICs3MjAsNyBAQCBzcGdwcm9jZXNzcGVuZGluZyhzcGdCdWxrRGVsZXRlU3RhdGUg KmJkcykKIAkJCS8qIGRlYWwgd2l0aCBhbnkgZGVsZXRhYmxlIHR1cGxlcyAqLwogCQkJdmFj dXVtTGVhZlBhZ2UoYmRzLCBpbmRleCwgYnVmZmVyLCB0cnVlKTsKIAkJCS8qIG1pZ2h0IGFz IHdlbGwgZG8gdGhpcyB3aGlsZSB3ZSBhcmUgaGVyZSAqLwotCQkJdmFjdXVtUmVkaXJlY3RB bmRQbGFjZWhvbGRlcihpbmRleCwgYnVmZmVyKTsKKwkJCXZhY3V1bVJlZGlyZWN0QW5kUGxh Y2Vob2xkZXIoaW5kZXgsIGJ1ZmZlciwgYmRzLT5pbmZvLT5oZWFwcmVsKTsKIAogCQkJU3BH aXN0U2V0TGFzdFVzZWRQYWdlKGluZGV4LCBidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK aW5kZXggZTY1NzlmMjk3OS4uOTQxMTczMGIzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAt MzM1Miw2ICszMzUyLDcgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4 SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcy OwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVs dHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IE5VTEw7CisJaXZpbmZvLmhlYXByZWwgPSBo ZWFwUmVsYXRpb247CiAKIAkvKgogCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZv ciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv YW5hbHl6ZS5jCmluZGV4IGM4NmU2OTA5ODAuLjMyMWZjMGQzMWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9hbmFseXplLmMKQEAgLTcxMiw2ICs3MTIsNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlv biBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJaXZpbmZvLm1lc3NhZ2VfbGV2 ZWwgPSBlbGV2ZWw7CiAJCQlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5yZF9y ZWwtPnJlbHR1cGxlczsKIAkJCWl2aW5mby5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJ CWl2aW5mby5oZWFwcmVsID0gb25lcmVsOwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1bV9j bGVhbnVwKCZpdmluZm8sIE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFy YWxsZWwuYwppbmRleCBiY2Q0MGM4MGExLi4yY2RiZDE4MmI2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTE0OCw2ICsxNDgsOSBAQCBzdHJ1Y3QgUGFy YWxsZWxWYWN1dW1TdGF0ZQogCS8qIE5VTEwgZm9yIHdvcmtlciBwcm9jZXNzZXMgKi8KIAlQ YXJhbGxlbENvbnRleHQgKnBjeHQ7CiAKKwkvKiBQYXJlbnQgSGVhcCBSZWxhdGlvbiAqLwor CVJlbGF0aW9uCWhlYXByZWw7CisKIAkvKiBUYXJnZXQgaW5kZXhlcyAqLwogCVJlbGF0aW9u ICAgKmluZHJlbHM7CiAJaW50CQkJbmluZGV4ZXM7CkBAIC0yNjYsNiArMjY5LDcgQEAgcGFy YWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50 IG5pbmRleGVzLAogCXB2cy0+bmluZGV4ZXMgPSBuaW5kZXhlczsKIAlwdnMtPndpbGxfcGFy YWxsZWxfdmFjdXVtID0gd2lsbF9wYXJhbGxlbF92YWN1dW07CiAJcHZzLT5ic3RyYXRlZ3kg PSBic3RyYXRlZ3k7CisJcHZzLT5oZWFwcmVsID0gcmVsOwogCiAJRW50ZXJQYXJhbGxlbE1v ZGUoKTsKIAlwY3h0ID0gQ3JlYXRlUGFyYWxsZWxDb250ZXh0KCJwb3N0Z3JlcyIsICJwYXJh bGxlbF92YWN1dW1fbWFpbiIsCkBAIC04MzgsNiArODQyLDcgQEAgcGFyYWxsZWxfdmFjdXVt X3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24g aW5kcmVsLAogCWl2aW5mby5lc3RpbWF0ZWRfY291bnQgPSBwdnMtPnNoYXJlZC0+ZXN0aW1h dGVkX2NvdW50OwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBwdnMtPnNoYXJlZC0+cmVs dHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHB2cy0+YnN0cmF0ZWd5OworCWl2aW5mby5o ZWFwcmVsID0gcHZzLT5oZWFwcmVsOwogCiAJLyogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBp bmZvcm1hdGlvbiAqLwogCXB2cy0+aW5kbmFtZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUoaW5kcmVsKSk7CkBAIC0xMDA3LDYgKzEwMTIsNyBAQCBwYXJhbGxlbF92YWN1 dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJcHZzLmRlYWRfaXRl bXMgPSBkZWFkX2l0ZW1zOwogCXB2cy5yZWxuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25h bWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSk7CiAJcHZzLnJlbG5hbWUgPSBwc3RyZHVw KFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOworCXB2cy5oZWFwcmVsID0gcmVsOwog CiAJLyogVGhlc2UgZmllbGRzIHdpbGwgYmUgZmlsbGVkIGR1cmluZyBpbmRleCB2YWN1dW0g b3IgY2xlYW51cCAqLwogCXB2cy5pbmRuYW1lID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3BsYW5jYXQuYwppbmRleCBkNThjNGExMDc4Li5lMzgyNGVmZTliIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC00NjIsNyArNDYyLDcgQEAgZ2V0 X3JlbGF0aW9uX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElk LCBib29sIGluaHBhcmVudCwKIAkJCQkJICogRm9yIGJ0cmVlcywgZ2V0IHRyZWUgaGVpZ2h0 IHdoaWxlIHdlIGhhdmUgdGhlIGluZGV4CiAJCQkJCSAqIG9wZW4KIAkJCQkJICovCi0JCQkJ CWluZm8tPnRyZWVfaGVpZ2h0ID0gX2J0X2dldHJvb3RoZWlnaHQoaW5kZXhSZWxhdGlvbik7 CisJCQkJCWluZm8tPnRyZWVfaGVpZ2h0ID0gX2J0X2dldHJvb3RoZWlnaHQoaW5kZXhSZWxh dGlvbiwgcmVsYXRpb24pOwogCQkJCX0KIAkJCQllbHNlCiAJCQkJewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCmluZGV4IGViNmNmY2ZkMDAuLjdk OWMxYzdlY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0 dmFyaWFudHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlh bnRzLmMKQEAgLTIwOCw3ICsyMDgsOCBAQCBUdXBsZXNvcnRzdGF0ZSAqCiB0dXBsZXNvcnRf YmVnaW5fY2x1c3RlcihUdXBsZURlc2MgdHVwRGVzYywKIAkJCQkJCVJlbGF0aW9uIGluZGV4 UmVsLAogCQkJCQkJaW50IHdvcmtNZW0sCi0JCQkJCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGlu YXRlLCBpbnQgc29ydG9wdCkKKwkJCQkJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUsIGlu dCBzb3J0b3B0LAorCQkJCQkJUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlUdXBsZXNvcnRzdGF0 ZSAqc3RhdGUgPSB0dXBsZXNvcnRfYmVnaW5fY29tbW9uKHdvcmtNZW0sIGNvb3JkaW5hdGUs CiAJCQkJCQkJCQkJCQkgICBzb3J0b3B0KTsKQEAgLTI2MCw3ICsyNjEsNyBAQCB0dXBsZXNv cnRfYmVnaW5fY2x1c3RlcihUdXBsZURlc2MgdHVwRGVzYywKIAogCWFyZy0+dHVwRGVzYyA9 IHR1cERlc2M7CQkvKiBhc3N1bWUgd2UgbmVlZCBub3QgY29weSB0dXBEZXNjICovCiAKLQlp bmRleFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKKwlpbmRleFNj YW5LZXkgPSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMLCBoZWFwcmVsKTsKIAogCWlm IChhcmctPmluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTlVMTCkKIAl7CkBAIC0zNjEs NyArMzYyLDcgQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBS ZWwsCiAJYXJnLT5lbmZvcmNlVW5pcXVlID0gZW5mb3JjZVVuaXF1ZTsKIAlhcmctPnVuaXF1 ZU51bGxzTm90RGlzdGluY3QgPSB1bmlxdWVOdWxsc05vdERpc3RpbmN0OwogCi0JaW5kZXhT Y2FuS2V5ID0gX2J0X21rc2NhbmtleShpbmRleFJlbCwgTlVMTCk7CisJaW5kZXhTY2FuS2V5 ID0gX2J0X21rc2NhbmtleShpbmRleFJlbCwgTlVMTCwgaGVhcFJlbCk7CiAKIAkvKiBQcmVw YXJlIFNvcnRTdXBwb3J0IGRhdGEgZm9yIGVhY2ggY29sdW1uICovCiAJYmFzZS0+c29ydEtl eXMgPSAoU29ydFN1cHBvcnQpIHBhbGxvYzAoYmFzZS0+bktleXMgKgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0u aAppbmRleCA4M2RiZWUwZmU2Li43NzA4YjgyZDdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAt NTAsNiArNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFZhY3V1bUluZm8KIAlpbnQJCQlt ZXNzYWdlX2xldmVsOwkvKiBlcmVwb3J0IGxldmVsIGZvciBwcm9ncmVzcyBtZXNzYWdlcyAq LwogCWRvdWJsZQkJbnVtX2hlYXBfdHVwbGVzOwkvKiB0dXBsZXMgcmVtYWluaW5nIGluIGhl YXAgKi8KIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneTsJLyogYWNjZXNzIHN0cmF0 ZWd5IGZvciByZWFkcyAqLworCVJlbGF0aW9uIAloZWFwcmVsOwkJLyogdGhlIGhlYXAgcmVs YXRpb24gdGhlIGluZGV4IGJlbG9uZ3MgdG8gKi8KIH0gSW5kZXhWYWN1dW1JbmZvOwogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCmluZGV4IDhhZjMzZDdiNDAuLjliZGFj MTJiYWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKQEAgLTQ0MCw3ICs0NDAs NyBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1BhZ2VEZWxldGUoQnVmZmVyIGJ1ZmZl ciwKIAkJCQkJCQkJCSBGdWxsVHJhbnNhY3Rpb25JZCB4aWQsIEJ1ZmZlciBwYXJlbnRCdWZm ZXIsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyIGRvd25saW5rT2Zmc2V0KTsKIAotZXh0ZXJu IHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtu bywKK2V4dGVybiB2b2lkIGdpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIGhlYXByZWwsIFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJCQkJICBGdWxsVHJhbnNhY3Rp b25JZCBkZWxldGVYaWQpOwogCiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1VwZGF0ZShC dWZmZXIgYnVmZmVyLApAQCAtNDg1LDcgKzQ4NSw3IEBAIGV4dGVybiBib29sIGdpc3Rwcm9w ZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4gYm9vbCBnaXN0Zml0cGFn ZShJbmRleFR1cGxlICppdHZlYywgaW50IGxlbik7CiBleHRlcm4gYm9vbCBnaXN0bm9zcGFj ZShQYWdlIHBhZ2UsIEluZGV4VHVwbGUgKml0dmVjLCBpbnQgbGVuLCBPZmZzZXROdW1iZXIg dG9kZWxldGUsIFNpemUgZnJlZXNwYWNlKTsKIGV4dGVybiB2b2lkIGdpc3RjaGVja3BhZ2Uo UmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKTsKLWV4dGVybiBCdWZmZXIgZ2lzdE5ld0J1ZmZl cihSZWxhdGlvbiByKTsKK2V4dGVybiBCdWZmZXIgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiBo ZWFwcmVsLCBSZWxhdGlvbiByKTsKIGV4dGVybiBib29sIGdpc3RQYWdlUmVjeWNsYWJsZShQ YWdlIHBhZ2UpOwogZXh0ZXJuIHZvaWQgZ2lzdGZpbGxidWZmZXIoUGFnZSBwYWdlLCBJbmRl eFR1cGxlICppdHVwLCBpbnQgbGVuLAogCQkJCQkJICAgT2Zmc2V0TnVtYmVyIG9mZik7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9naXN0eGxvZy5oCmluZGV4IDA5ZjliMGY4YzYuLjE5MWYwZTU4MDggMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9naXN0eGxvZy5oCkBAIC01MSwxMyArNTEsMTMgQEAgdHlwZWRlZiBzdHJ1Y3Qg Z2lzdHhsb2dEZWxldGUKIHsKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jp em9uOwogCXVpbnQxNgkJbnRvZGVsZXRlOwkJLyogbnVtYmVyIG9mIGRlbGV0ZWQgb2Zmc2V0 cyAqLworCWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsKIAotCS8qCi0JICogSW4gcGF5bG9h ZCBvZiBibGsgMCA6IHRvZGVsZXRlIE9mZnNldE51bWJlcnMKLQkgKi8KKwkvKiBUT0RFTEVU RSBPRkZTRVQgTlVNQkVSUyAqLworCU9mZnNldE51bWJlciBvZmZzZXRzW0ZMRVhJQkxFX0FS UkFZX01FTUJFUl07CiB9IGdpc3R4bG9nRGVsZXRlOwogCi0jZGVmaW5lIFNpemVPZkdpc3R4 bG9nRGVsZXRlCShvZmZzZXRvZihnaXN0eGxvZ0RlbGV0ZSwgbnRvZGVsZXRlKSArIHNpemVv Zih1aW50MTYpKQorI2RlZmluZSBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSBvZmZzZXRvZihnaXN0 eGxvZ0RlbGV0ZSwgb2Zmc2V0cykKIAogLyoKICAqIEJhY2t1cCBCbGsgMDogSWYgdGhpcyBv cGVyYXRpb24gY29tcGxldGVzIGEgcGFnZSBzcGxpdCwgYnkgaW5zZXJ0aW5nIGEKQEAgLTEw MCw5ICsxMDAsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dQYWdlUmV1c2UKIAlSZWxG aWxlTG9jYXRvciBsb2NhdG9yOwogCUJsb2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOworCWJvb2wgICAgICAgIGlzQ2F0YWxv Z1JlbDsKIH0gZ2lzdHhsb2dQYWdlUmV1c2U7CiAKLSNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dQ YWdlUmV1c2UJKG9mZnNldG9mKGdpc3R4bG9nUGFnZVJldXNlLCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbikgKyBzaXplb2YoRnVsbFRyYW5zYWN0aW9uSWQpKQorI2RlZmluZSBTaXplT2ZH aXN0eGxvZ1BhZ2VSZXVzZQkob2Zmc2V0b2YoZ2lzdHhsb2dQYWdlUmV1c2UsIGlzQ2F0YWxv Z1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIGV4dGVybiB2b2lkIGdpc3RfcmVkbyhYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBnaXN0X2Rlc2MoU3RyaW5nSW5mbyBi dWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9oYXNoX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApp bmRleCBhMmYwZjM5MjEzLi44ZjFkZmVkYWFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGFzaF94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5o CkBAIC0yNTIsMTIgKzI1MiwxMiBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oYXNoX3ZhY3V1bV9v bmVfcGFnZQogewogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CiAJ aW50CQkJbnR1cGxlczsKLQotCS8qIFRBUkdFVCBPRkZTRVQgTlVNQkVSUyBGT0xMT1cgQVQg VEhFIEVORCAqLworCWJvb2wJCWlzQ2F0YWxvZ1JlbDsKKwkvKiBUQVJHRVQgT0ZGU0VUIE5V TUJFUlMgKi8KKwlPZmZzZXROdW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJd OwogfSB4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZIYXNoVmFj dXVtT25lUGFnZSBcCi0JKG9mZnNldG9mKHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlLCBudHVw bGVzKSArIHNpemVvZihpbnQpKQorI2RlZmluZSBTaXplT2ZIYXNoVmFjdXVtT25lUGFnZSBv ZmZzZXRvZih4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSwgb2Zmc2V0cykKIAogZXh0ZXJuIHZv aWQgaGFzaF9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiB2b2lkIGhh c2hfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAppbmRleCA4Y2IwZDhkYTE5Li4xZDQzMTgxYTQwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtMjQ1LDEwICsyNDUsMTEgQEAgdHlw ZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b247CiAJdWludDE2CQlucmVkaXJlY3RlZDsKIAl1aW50MTYJCW5kZWFkOwor CWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsKIAkvKiBPRkZTRVQgTlVNQkVSUyBhcmUgaW4g dGhlIGJsb2NrIHJlZmVyZW5jZSAwICovCiB9IHhsX2hlYXBfcHJ1bmU7CiAKLSNkZWZpbmUg U2l6ZU9mSGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBuZGVhZCkgKyBzaXpl b2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mSGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFw X3BydW5lLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgogICogVGhlIHZh Y3V1bSBwYWdlIHJlY29yZCBpcyBzaW1pbGFyIHRvIHRoZSBwcnVuZSByZWNvcmQsIGJ1dCBj YW4gb25seSBtYXJrCkBAIC0zNDQsMTIgKzM0NSwxMyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9o ZWFwX2ZyZWV6ZV9wYWdlCiB7CiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9y aXpvbjsKIAl1aW50MTYJCW5wbGFuczsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7CiAK IAkvKiBGUkVFWkUgUExBTlMgRk9MTE9XICovCiAJLyogT0ZGU0VUIE5VTUJFUiBBUlJBWSBG T0xMT1dTICovCiB9IHhsX2hlYXBfZnJlZXplX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGVh cEZyZWV6ZVBhZ2UgKG9mZnNldG9mKHhsX2hlYXBfZnJlZXplX3BhZ2UsIG5wbGFucykgKyBz aXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mSGVhcEZyZWV6ZVBhZ2UgKG9mZnNldG9m KHhsX2hlYXBfZnJlZXplX3BhZ2UsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAK IC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IHNldHRpbmcgYSB2 aXNpYmlsaXR5IG1hcCBiaXQKQEAgLTQwOCw3ICs0MTAsNyBAQCBleHRlcm4gdm9pZCBoZWFw Ml9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRl cm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9p ZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4 dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0 b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKK2V4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zp c2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCiAJCQkJCQkJCSAgIEJ1 ZmZlciB2bV9idWZmZXIsCiAJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b24sCiAJCQkJCQkJCSAgIHVpbnQ4IHZtZmxhZ3MpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJl ZS5oCmluZGV4IDhmNDg5NjBmOWQuLmNkY2ZkZDYwMzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgK QEAgLTExODIsOCArMTE4MiwxMCBAQCBleHRlcm4gSW5kZXhUdXBsZSBfYnRfc3dhcF9wb3N0 aW5nKEluZGV4VHVwbGUgbmV3aXRlbSwgSW5kZXhUdXBsZSBvcG9zdGluZywKIGV4dGVybiBi b29sIF9idF9kb2luc2VydChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCwKIAkJCQkJ CSBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVlLCBib29sIGluZGV4VW5jaGFuZ2VkLAog CQkJCQkJIFJlbGF0aW9uIGhlYXBSZWwpOwotZXh0ZXJuIHZvaWQgX2J0X2ZpbmlzaF9zcGxp dChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrKTsKLWV4dGVybiBC dWZmZXIgX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwgQlRTdGFjayBzdGFjaywgQmxv Y2tOdW1iZXIgY2hpbGQpOworZXh0ZXJuIHZvaWQgX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlv biByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrLAorCQkJCQkJCSBSZWxhdGlvbiBo ZWFwcmVsKTsKK2V4dGVybiBCdWZmZXIgX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwg QlRTdGFjayBzdGFjaywgQmxvY2tOdW1iZXIgY2hpbGQsCisJCQkJCQkJICBSZWxhdGlvbiBo ZWFwcmVsKTsKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuYnRzcGxp dGxvYy5jCkBAIC0xMTk3LDE2ICsxMTk5LDE4IEBAIGV4dGVybiBPZmZzZXROdW1iZXIgX2J0 X2ZpbmRzcGxpdGxvYyhSZWxhdGlvbiByZWwsIFBhZ2Ugb3JpZ3BhZ2UsCiAgKi8KIGV4dGVy biB2b2lkIF9idF9pbml0bWV0YXBhZ2UoUGFnZSBwYWdlLCBCbG9ja051bWJlciByb290Ymtu dW0sIHVpbnQzMiBsZXZlbCwKIAkJCQkJCQkgYm9vbCBhbGxlcXVhbGltYWdlKTsKLWV4dGVy biBib29sIF9idF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpOwotZXh0ZXJu IHZvaWQgX2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBu dW1fZGVscGFnZXMpOworZXh0ZXJuIGJvb2wgX2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CitleHRlcm4gdm9pZCBfYnRfc2V0X2Ns ZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcywKKwkJ CQkJCQkJIFJlbGF0aW9uIGhlYXByZWwpOwogZXh0ZXJuIHZvaWQgX2J0X3VwZ3JhZGVtZXRh cGFnZShQYWdlIHBhZ2UpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0cm9vdChSZWxhdGlvbiBy ZWwsIGludCBhY2Nlc3MpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0dHJ1ZXJvb3QoUmVsYXRp b24gcmVsKTsKLWV4dGVybiBpbnQJX2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24gcmVsKTsK K2V4dGVybiBCdWZmZXIgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNzLCBS ZWxhdGlvbiBoZWFwcmVsKTsKK2V4dGVybiBCdWZmZXIgX2J0X2dldHRydWVyb290KFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CitleHRlcm4gaW50CV9idF9nZXRyb290aGVp Z2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CiBleHRlcm4gdm9pZCBfYnRf bWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3BhY2UsCi0JCQkJCQkJ Ym9vbCAqYWxsZXF1YWxpbWFnZSk7CisJCQkJCQkJYm9vbCAqYWxsZXF1YWxpbWFnZSwgUmVs YXRpb24gaGVhcHJlbCk7CiBleHRlcm4gdm9pZCBfYnRfY2hlY2twYWdlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVmZmVyIF9idF9nZXRidWYoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBibGtubywgaW50IGFjY2Vzcyk7CitleHRlcm4gQnVmZmVyIF9idF9n ZXRidWYoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgaW50IGFjY2VzcywKKwkJ CQkJCSBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4dGVybiBCdWZmZXIgX2J0X3JlbGFuZGdldGJ1 ZihSZWxhdGlvbiByZWwsIEJ1ZmZlciBvYnVmLAogCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJs a25vLCBpbnQgYWNjZXNzKTsKIGV4dGVybiB2b2lkIF9idF9yZWxidWYoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmKTsKQEAgLTEyMzAsMjAgKzEyMzQsMjEgQEAgZXh0ZXJuIHZvaWQgX2J0 X3BlbmRpbmdmc21fZmluYWxpemUoUmVsYXRpb24gcmVsLCBCVFZhY1N0YXRlICp2c3RhdGUp OwogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIG5idHNlYXJjaC5jCiAgKi8KIGV4 dGVybiBCVFN0YWNrIF9idF9zZWFyY2goUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5 LCBCdWZmZXIgKmJ1ZlAsCi0JCQkJCQkgIGludCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBzaG90 KTsKKwkJCQkJCSAgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QsIFJlbGF0aW9uIGhl YXByZWwpOwogZXh0ZXJuIEJ1ZmZlciBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwgQlRT Y2FuSW5zZXJ0IGtleSwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQlib29sIGZvcnVwZGF0ZSwgQlRT dGFjayBzdGFjaywgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpOworCQkJCQkJCWJv b2wgZm9ydXBkYXRlLCBCVFN0YWNrIHN0YWNrLCBpbnQgYWNjZXNzLAorCQkJCQkJCVNuYXBz aG90IHNuYXBzaG90LCBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4dGVybiBPZmZzZXROdW1iZXIg X2J0X2JpbnNyY2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRz dGF0ZSk7CiBleHRlcm4gaW50MzIgX2J0X2NvbXBhcmUoUmVsYXRpb24gcmVsLCBCVFNjYW5J bnNlcnQga2V5LCBQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZudW0pOwogZXh0ZXJuIGJv b2wgX2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwog ZXh0ZXJuIGJvb2wgX2J0X25leHQoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9u IGRpcik7CiBleHRlcm4gQnVmZmVyIF9idF9nZXRfZW5kcG9pbnQoUmVsYXRpb24gcmVsLCB1 aW50MzIgbGV2ZWwsIGJvb2wgcmlnaHRtb3N0LAotCQkJCQkJCSAgIFNuYXBzaG90IHNuYXBz aG90KTsKKwkJCQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwgUmVsYXRpb24gaGVhcHJlbCk7 CiAKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gbmJ0dXRpbHMuYwogICov Ci1leHRlcm4gQlRTY2FuSW5zZXJ0IF9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBJbmRl eFR1cGxlIGl0dXApOworZXh0ZXJuIEJUU2Nhbkluc2VydCBfYnRfbWtzY2Fua2V5KFJlbGF0 aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwLCBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4dGVybiB2 b2lkIF9idF9mcmVlc3RhY2soQlRTdGFjayBzdGFjayk7CiBleHRlcm4gdm9pZCBfYnRfcHJl cHJvY2Vzc19hcnJheV9rZXlzKEluZGV4U2NhbkRlc2Mgc2Nhbik7CiBleHRlcm4gdm9pZCBf YnRfc3RhcnRfYXJyYXlfa2V5cyhJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24g ZGlyKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCmluZGV4IGVkZDEzMzNkOWIuLjk5ZDg3ZDcxODkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL25idHhsb2cuaApAQCAtMTg4LDkgKzE4OCwxMCBAQCB0eXBlZGVmIHN0 cnVjdCB4bF9idHJlZV9yZXVzZV9wYWdlCiAJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcjsKIAlC bG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbjsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7CiB9IHhsX2J0cmVlX3JldXNl X3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mQnRyZWVSZXVzZVBhZ2UJKHNpemVvZih4bF9idHJl ZV9yZXVzZV9wYWdlKSkKKyNkZWZpbmUgU2l6ZU9mQnRyZWVSZXVzZVBhZ2UJKG9mZnNldG9m KHhsX2J0cmVlX3JldXNlX3BhZ2UsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAK IC8qCiAgKiB4bF9idHJlZV92YWN1dW0gYW5kIHhsX2J0cmVlX2RlbGV0ZSByZWNvcmRzIGRl c2NyaWJlIGRlbGV0aW9uIG9mIGluZGV4CkBAIC0yMzUsMTMgKzIzNiwxNCBAQCB0eXBlZGVm IHN0cnVjdCB4bF9idHJlZV9kZWxldGUKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uOwogCXVpbnQxNgkJbmRlbGV0ZWQ7CiAJdWludDE2CQludXBkYXRlZDsKKwli b29sICAgICAgICBpc0NhdGFsb2dSZWw7CiAKIAkvKiBERUxFVEVEIFRBUkdFVCBPRkZTRVQg TlVNQkVSUyBGT0xMT1cgKi8KIAkvKiBVUERBVEVEIFRBUkdFVCBPRkZTRVQgTlVNQkVSUyBG T0xMT1cgKi8KIAkvKiBVUERBVEVEIFRVUExFUyBNRVRBREFUQSAoeGxfYnRyZWVfdXBkYXRl KSBBUlJBWSBGT0xMT1dTICovCiB9IHhsX2J0cmVlX2RlbGV0ZTsKIAotI2RlZmluZSBTaXpl T2ZCdHJlZURlbGV0ZQkob2Zmc2V0b2YoeGxfYnRyZWVfZGVsZXRlLCBudXBkYXRlZCkgKyBz aXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mQnRyZWVEZWxldGUJKG9mZnNldG9mKHhs X2J0cmVlX2RlbGV0ZSwgaXNDYXRhbG9nUmVsKSArIHNpemVvZihib29sKSkKIAogLyoKICAq IFRoZSBvZmZzZXRzIHRoYXQgYXBwZWFyIGluIHhsX2J0cmVlX3VwZGF0ZSBtZXRhZGF0YSBh cmUgb2Zmc2V0cyBpbnRvIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Nw Z3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKaW5kZXggYjlkNjc1MzUz My4uMjlhNmFhNTdhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCkBAIC0yNDAsNiArMjQwLDcg QEAgdHlwZWRlZiBzdHJ1Y3Qgc3BneGxvZ1ZhY3V1bVJlZGlyZWN0CiAJdWludDE2CQluVG9Q bGFjZWhvbGRlcjsgLyogbnVtYmVyIG9mIHJlZGlyZWN0cyB0byBtYWtlIHBsYWNlaG9sZGVy cyAqLwogCU9mZnNldE51bWJlciBmaXJzdFBsYWNlaG9sZGVyOwkvKiBmaXJzdCBwbGFjZWhv bGRlciB0dXBsZSB0byByZW1vdmUgKi8KIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uOwkvKiBuZXdlc3QgWElEIG9mIHJlbW92ZWQgcmVkaXJlY3RzICovCisJYm9v bCAgICAgICAgaXNDYXRhbG9nUmVsOwogCiAJLyogb2Zmc2V0cyBvZiByZWRpcmVjdCB0dXBs ZXMgdG8gbWFrZSBwbGFjZWhvbGRlcnMgZm9sbG93ICovCiAJT2Zmc2V0TnVtYmVyIG9mZnNl dHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxp dHltYXBkZWZzLmgKaW5kZXggOTE2NWI5NDU2Yi4uYjI3ZmRjMGFlZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKQEAgLTE3LDkgKzE3LDEwIEBACiAjZGVm aW5lIEJJVFNfUEVSX0hFQVBCTE9DSyAyCiAKIC8qIEZsYWdzIGZvciBiaXQgbWFwICovCi0j ZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUJMHgwMQotI2RlZmluZSBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4JMHgwMgotI2RlZmluZSBWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFMJMHgwMwkvKiBPUiBvZiBhbGwgdmFsaWQgdmlzaWJpbGl0eW1hcAotCQkJCQkJCQkJCQkg KiBmbGFncyBiaXRzICovCisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUJCQkJ CQkJCTB4MDEKKyNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOCQkJCQkJCQkweDAy CisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUwkJCQkJCQkJMHgwMwkvKiBPUiBv ZiBhbGwgdmFsaWQgdmlzaWJpbGl0eW1hcAorCQkJCQkJCQkJCQkJCQkJCQkJICogZmxhZ3Mg Yml0cyAqLworI2RlZmluZSBWSVNJQklMSVRZTUFQX0lTX0NBVEFMT0dfUkVMCTB4MDQKIAog I2VuZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXgg YWY5Nzg1MDM4ZC4uMGNmZTAyYWE0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTI3LDYgKzI3LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2Nh dGFsb2cuaCIKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVz b3J0LmggYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaAppbmRleCAxMjU3OGU0MmJj Li4wNmFlYmU2MzMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaApAQCAtNDAxLDcgKzQwMSw4 IEBAIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2hlYXAoVHVwbGVE ZXNjIHR1cERlc2MsCiBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9j bHVzdGVyKFR1cGxlRGVzYyB0dXBEZXNjLAogCQkJCQkJCQkJCQkgICBSZWxhdGlvbiBpbmRl eFJlbCwgaW50IHdvcmtNZW0sCiAJCQkJCQkJCQkJCSAgIFNvcnRDb29yZGluYXRlIGNvb3Jk aW5hdGUsCi0JCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0KTsKKwkJCQkJCQkJCQkJICAgaW50 IHNvcnRvcHQsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIGhlYXByZWwpOwogZXh0ZXJuIFR1 cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVh cFJlbCwKIAkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIGluZGV4UmVsLAogCQkJCQkJCQkJCQkJ ICAgYm9vbCBlbmZvcmNlVW5pcXVlLAotLSAKMi4zNC4xCgo= --------------eJ0RSYO43K13hlRACWx5MsCB--