Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rUnbz-00D4zB-TY for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Jan 2024 12:53:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rUnbz-005Qc3-1L for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Jan 2024 12:53:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rUnby-005QbS-EF for pgsql-hackers@lists.postgresql.org; Tue, 30 Jan 2024 12:53:10 +0000 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rUnbv-004Wg7-Qy for pgsql-hackers@postgresql.org; Tue, 30 Jan 2024 12:53:09 +0000 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-40e775695c6so34987325e9.3 for ; Tue, 30 Jan 2024 04:53:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706619186; x=1707223986; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ebaBdEtiJQRvfgeb0MwwPB2AFxCDXut2YpWsW1X2GJ4=; b=Sa2U2q4/Jqj50LZP260Q1WnbmRKKnavV98ofslIJnFbXoJ7O171zT88nHr8A5G5R2h jesXf21ZsHyXALgIz13ElADAOKhEXDSJGhECwYkZpE5LT9gYuhaNAaJgha44X1ZMccUm dDjQ+LnYfAE8+k2WbvWtQ6Ygmnuu0JXEwQhbJRCbTPClC7Rn5SKAaXy92s3ZyFpVGOSQ u1HKAKLEYNjbxPyU5UuqZAKcjPO7S5WYVUn3xVwxAWj1AOFETHY92qN3/qDPrR1RTkTG otu6Mn/vENU0CtNcknP9ZZy9E53Duc5XMvEcJMy+m3Tgn9CPWwoKAGoU7dl+SHkYNVtR 2/EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706619186; x=1707223986; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ebaBdEtiJQRvfgeb0MwwPB2AFxCDXut2YpWsW1X2GJ4=; b=cI13FgKgi/fxVNufNhb/JM63pcpztzXI6wUlm49nL4E+wHgVhV1/Cxz+2/RQsMHRaN YjFZ0O+c5KPZjwGj4JqHc5E1/GDPVP1tA4s45K1ElLIlViDgXquWxy6YKXfiqEOVDsu6 Rb7Oxc56xHJGZDay41eLuSMp13JhlJafbWrH91PRkF2H57tVe0kauSbUEVNny98bGeDF rZODNUDoM0nyS1ssV8vUlAs5EFJZoiWVC6ei7VhGRiPndlMDxFBs8ZgufpNZcLDoLOU3 lEvidtEoeMLGdb2j9MFxrp8nDOTVvtHkHDb1cddMQbTl5V/A41ic7/LpO/lZlhAJEjDd FPPw== X-Gm-Message-State: AOJu0YwSjZq4x2ycfIHkuUQZ0XCMMdE2f7cq2RJTNTDfRQ8xtUxUI3jT ZrflN6pEOMPPlsFic1fA+tG3atjqgYO7d8zQrBDlP+MRp7Pi9lB//5HwvRtvi3Xwqn6nME/cR7u l8TlAZ1Xy53rX6FHakWGOQzKpvN8= X-Google-Smtp-Source: AGHT+IHIZxzEdlUgc3lIJQ26cgXrDcXKEZ2XRLabvpaBcJ6j5davQdVKUQ6lYhSEMZ8RLrz8JskUr6vzajio31iJooo= X-Received: by 2002:adf:e94c:0:b0:33a:ecae:9cfb with SMTP id m12-20020adfe94c000000b0033aecae9cfbmr4670710wrn.34.1706619186265; Tue, 30 Jan 2024 04:53:06 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: shveta malik Date: Tue, 30 Jan 2024 18:22:54 +0530 Message-ID: Subject: Re: Synchronizing slots from primary to standby To: Amit Kapila Cc: "Zhijie Hou (Fujitsu)" , Peter Smith , Bertrand Drouvot , Ajin Cherian , Masahiko Sawada , Dilip Kumar , Nisha Moond , "Hayato Kuroda (Fujitsu)" , Bharath Rupireddy , Peter Eisentraut , Bruce Momjian , Ashutosh Sharma , Andres Freund , pgsql-hackers , Alvaro Herrera , shveta malik Content-Type: multipart/mixed; boundary="0000000000005d8a070610293ea4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005d8a070610293ea4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jan 30, 2024 at 4:06=E2=80=AFPM shveta malik wrote: > > PFA v73-0001 which addresses the above comments. Other patches will be > rebased and posted after pushing this one. Since v73-0001 is pushed, PFA rest of the patches. Changes are: 1) Rebased the patches. 2) Ran pg_indent on all. 3) patch001: Updated logicaldecoding.sgml for dbname requirement in primary_conninfo for slot-synchronization. thanks Shveta --0000000000005d8a070610293ea4 Content-Type: application/octet-stream; name="v74-0002-Slot-sync-worker-as-a-special-process.patch" Content-Disposition: attachment; filename="v74-0002-Slot-sync-worker-as-a-special-process.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls0cxc581 RnJvbSAzYjUwNmYxMDg3OTYzNjExYmU4YmY3MzM5MmEzYzI5MjdjYWNiMGU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMzAgSmFuIDIwMjQgMTc6MDg6MDQgKzA1MzAKU3ViamVjdDogW1BBVENIIHY3 NCAyLzVdIFNsb3Qtc3luYyB3b3JrZXIgYXMgYSBzcGVjaWFsIHByb2Nlc3MKClRoaXMgcGF0Y2gg YXR0ZW1wdHMgdG8gc3RhcnQgc2xvdC1zeW5jIHdvcmtlciBhcyBhIHNwZWNpYWwgcHJvY2Vzcwp3 aGljaCBpcyBuZWl0aGVyIGEgYmd3b3JrZXIgbm9yIGFuIEF1eGlsaWFyeSBwcm9jZXNzLiBUaGUg YmVuZWZpdAp3ZSBnZXQgaGVyZSBpcyB3ZSBjYW4gY29udHJvbCB0aGUgc3RhcnQtY29uZGl0aW9u cyBvZiB0aGUgd29ya2VyIHdoaWNoCmZ1cnRoZXIgYWxsb3dzIHVzIHRvIGRlZmluZSAnZW5hYmxl X3N5bmNzbG90JyBhcyBQR0NfU0lHSFVQIHdoaWNoIHdhcwpvdGhlcndpc2UgYSBQR0NfUE9TVE1B U1RFUiBHVUMgd2hlbiBzbG90c3luYyB3b3JrZXIgd2FzIHJlZ2lzdGVyZWQgYXMKYmd3b3JrZXIu Ci0tLQogZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDY1 ICstLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICB8ICAg MyAtCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAgICAgfCAgODYg KysrLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyAgICB8IDM1 OSArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAg ICAgICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAg ICAgICAgICAgIHwgIDExIC0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5j ICAgICAgICB8ICAgMSArCiAuLi4vdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQg ICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jICAgICAgICAg ICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAgICAg ICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAg ICB8ICAgMiArLQogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaCAgICAgICAgICAgICB8 ICAgMSAtCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAg IDggKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDM4NyBpbnNlcnRpb25zKCspLCAxODEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvYmd3b3JrZXIuc2dtbAppbmRleCBhN2NmZTZjNThjLi4yYzM5MzM4NWE5IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIu c2dtbApAQCAtMTE0LDU5ICsxMTQsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgQmFja2dyb3VuZFdvcmtl cgogCiAgIDxwYXJhPgogICAgPHN0cnVjdGZpZWxkPmJnd19zdGFydF90aW1lPC9zdHJ1Y3RmaWVs ZD4gaXMgdGhlIHNlcnZlciBzdGF0ZSBkdXJpbmcgd2hpY2gKLSAgIDxjb21tYW5kPnBvc3RncmVz PC9jb21tYW5kPiBzaG91bGQgc3RhcnQgdGhlIHByb2Nlc3MuIE5vdGUgdGhhdCB0aGlzIHNldHRp bmcKLSAgIG9ubHkgaW5kaWNhdGVzIHdoZW4gdGhlIHByb2Nlc3NlcyBhcmUgdG8gYmUgc3RhcnRl ZDsgdGhleSBkbyBub3Qgc3RvcCB3aGVuCi0gICBhIGRpZmZlcmVudCBzdGF0ZSBpcyByZWFjaGVk LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgotCi0gICA8dmFyaWFibGVsaXN0PgotICAgIDx2YXJsaXN0 ZW50cnk+Ci0gICAgIDx0ZXJtPjxsaXRlcmFsPkJnV29ya2VyU3RhcnRfUG9zdG1hc3RlclN0YXJ0 PC9saXRlcmFsPjwvdGVybT4KLSAgICAgPGxpc3RpdGVtPgotICAgICAgPHBhcmE+Ci0gICAgICAg PGluZGV4dGVybT48cHJpbWFyeT5CZ1dvcmtlclN0YXJ0X1Bvc3RtYXN0ZXJTdGFydDwvcHJpbWFy eT48L2luZGV4dGVybT4KLSAgICAgICBTdGFydCBhcyBzb29uIGFzIHBvc3RncmVzIGl0c2VsZiBo YXMgZmluaXNoZWQgaXRzIG93biBpbml0aWFsaXphdGlvbjsKLSAgICAgICBwcm9jZXNzZXMgcmVx dWVzdGluZyB0aGlzIGFyZSBub3QgZWxpZ2libGUgZm9yIGRhdGFiYXNlIGNvbm5lY3Rpb25zLgot ICAgICAgPC9wYXJhPgotICAgICA8L2xpc3RpdGVtPgotICAgIDwvdmFybGlzdGVudHJ5PgotCi0g ICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgPHRlcm0+PGxpdGVyYWw+QmdXb3JrZXJTdGFydF9Db25z aXN0ZW50U3RhdGU8L2xpdGVyYWw+PC90ZXJtPgotICAgICA8bGlzdGl0ZW0+Ci0gICAgICA8cGFy YT4KLSAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PkJnV29ya2VyU3RhcnRfQ29uc2lzdGVudFN0 YXRlPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgotICAgICAgIFN0YXJ0IGFzIHNvb24gYXMgYSBjb25z aXN0ZW50IHN0YXRlIGhhcyBiZWVuIHJlYWNoZWQgaW4gYSBob3Qtc3RhbmRieSwKLSAgICAgICBh bGxvd2luZyBwcm9jZXNzZXMgdG8gY29ubmVjdCB0byBkYXRhYmFzZXMgYW5kIHJ1biByZWFkLW9u bHkgcXVlcmllcy4KLSAgICAgIDwvcGFyYT4KLSAgICAgPC9saXN0aXRlbT4KLSAgICA8L3Zhcmxp c3RlbnRyeT4KLQotICAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgIDx0ZXJtPjxsaXRlcmFsPkJnV29y a2VyU3RhcnRfQ29uc2lzdGVudFN0YXRlX0hvdFN0YW5kYnk8L2xpdGVyYWw+PC90ZXJtPgotICAg ICA8bGlzdGl0ZW0+Ci0gICAgICA8cGFyYT4KLSAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PkJn V29ya2VyU3RhcnRfQ29uc2lzdGVudFN0YXRlX0hvdFN0YW5kYnk8L3ByaW1hcnk+PC9pbmRleHRl cm0+Ci0gICAgICAgU2FtZSBtZWFuaW5nIGFzIDxsaXRlcmFsPkJnV29ya2VyU3RhcnRfQ29uc2lz dGVudFN0YXRlPC9saXRlcmFsPiBidXQKLSAgICAgICBpdCBpcyBtb3JlIHN0cmljdCBpbiB0ZXJt cyBvZiB0aGUgc2VydmVyIGkuZS4gc3RhcnQgdGhlIHdvcmtlciBvbmx5Ci0gICAgICAgaWYgaXQg aXMgaG90LXN0YW5kYnkuCi0gICAgICA8L3BhcmE+Ci0gICAgIDwvbGlzdGl0ZW0+Ci0gICAgPC92 YXJsaXN0ZW50cnk+Ci0KLSAgICA8dmFybGlzdGVudHJ5PgotICAgICA8dGVybT48bGl0ZXJhbD5C Z1dvcmtlclN0YXJ0X1JlY292ZXJ5RmluaXNoZWQ8L2xpdGVyYWw+PC90ZXJtPgotICAgICA8bGlz dGl0ZW0+Ci0gICAgICA8cGFyYT4KLSAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PkJnV29ya2Vy U3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDwvcHJpbWFyeT48L2luZGV4dGVybT4KLSAgICAgICBTdGFy dCBhcyBzb29uIGFzIHRoZSBzeXN0ZW0gaGFzIGVudGVyZWQgbm9ybWFsIHJlYWQtd3JpdGUgc3Rh dGUuIE5vdGUKLSAgICAgICB0aGF0IHRoZSA8bGl0ZXJhbD5CZ1dvcmtlclN0YXJ0X0NvbnNpc3Rl bnRTdGF0ZTwvbGl0ZXJhbD4gYW5kCi0gICAgICA8bGl0ZXJhbD5CZ1dvcmtlclN0YXJ0X1JlY292 ZXJ5RmluaXNoZWQ8L2xpdGVyYWw+IGFyZSBlcXVpdmFsZW50Ci0gICAgICAgaW4gYSBzZXJ2ZXIg dGhhdCdzIG5vdCBhIGhvdCBzdGFuZGJ5LgotICAgICAgPC9wYXJhPgotICAgICA8L2xpc3RpdGVt PgotICAgIDwvdmFybGlzdGVudHJ5PgotCi0gICA8L3ZhcmlhYmxlbGlzdD4KKyAgIDxjb21tYW5k PnBvc3RncmVzPC9jb21tYW5kPiBzaG91bGQgc3RhcnQgdGhlIHByb2Nlc3M7IGl0IGNhbiBiZSBv bmUgb2YKKyAgIDxsaXRlcmFsPkJnV29ya2VyU3RhcnRfUG9zdG1hc3RlclN0YXJ0PC9saXRlcmFs PiAoc3RhcnQgYXMgc29vbiBhcworICAgPGNvbW1hbmQ+cG9zdGdyZXM8L2NvbW1hbmQ+IGl0c2Vs ZiBoYXMgZmluaXNoZWQgaXRzIG93biBpbml0aWFsaXphdGlvbjsgcHJvY2Vzc2VzCisgICByZXF1 ZXN0aW5nIHRoaXMgYXJlIG5vdCBlbGlnaWJsZSBmb3IgZGF0YWJhc2UgY29ubmVjdGlvbnMpLAor ICAgPGxpdGVyYWw+QmdXb3JrZXJTdGFydF9Db25zaXN0ZW50U3RhdGU8L2xpdGVyYWw+IChzdGFy dCBhcyBzb29uIGFzIGEgY29uc2lzdGVudCBzdGF0ZQorICAgaGFzIGJlZW4gcmVhY2hlZCBpbiBh IGhvdCBzdGFuZGJ5LCBhbGxvd2luZyBwcm9jZXNzZXMgdG8gY29ubmVjdCB0bworICAgZGF0YWJh c2VzIGFuZCBydW4gcmVhZC1vbmx5IHF1ZXJpZXMpLCBhbmQKKyAgIDxsaXRlcmFsPkJnV29ya2Vy U3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDwvbGl0ZXJhbD4gKHN0YXJ0IGFzIHNvb24gYXMgdGhlIHN5 c3RlbSBoYXMKKyAgIGVudGVyZWQgbm9ybWFsIHJlYWQtd3JpdGUgc3RhdGUpLiAgTm90ZSB0aGUg bGFzdCB0d28gdmFsdWVzIGFyZSBlcXVpdmFsZW50CisgICBpbiBhIHNlcnZlciB0aGF0J3Mgbm90 IGEgaG90IHN0YW5kYnkuICBOb3RlIHRoYXQgdGhpcyBzZXR0aW5nIG9ubHkgaW5kaWNhdGVzCisg ICB3aGVuIHRoZSBwcm9jZXNzZXMgYXJlIHRvIGJlIHN0YXJ0ZWQ7IHRoZXkgZG8gbm90IHN0b3Ag d2hlbiBhIGRpZmZlcmVudCBzdGF0ZQorICAgaXMgcmVhY2hlZC4KICAgPC9wYXJhPgogCiAgIDxw YXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDQ2ODI4YjhhODkuLjFhZGQ0NDlm N2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTEzMCw5ICsxMzAsNiBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0CiAJewogCQkiQXBwbHlXb3JrZXJNYWluIiwgQXBwbHlXb3JrZXJNYWlu CiAJfSwKLQl7Ci0JCSJSZXBsU2xvdFN5bmNXb3JrZXJNYWluIiwgUmVwbFNsb3RTeW5jV29ya2Vy TWFpbgotCX0sCiAJewogCQkiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iLCBQYXJhbGxlbEFwcGx5 V29ya2VyTWFpbgogCX0sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IDM2Nzk1 ZjkxZjAuLmFkZmFmNzVjZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9z dG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC0x NjgsMTEgKzE2OCwxMSBAQAogICogdGhleSB3aWxsIG5ldmVyIGJlY29tZSBsaXZlIGJhY2tlbmRz LiAgZGVhZF9lbmQgY2hpbGRyZW4gYXJlIG5vdCBhc3NpZ25lZCBhCiAgKiBQTUNoaWxkU2xvdC4g IGRlYWRfZW5kIGNoaWxkcmVuIGhhdmUgYmtlbmRfdHlwZSBOT1JNQUwuCiAgKgotICogIlNwZWNp YWwiIGNoaWxkcmVuIHN1Y2ggYXMgdGhlIHN0YXJ0dXAsIGJnd3JpdGVyIGFuZCBhdXRvdmFjdXVt IGxhdW5jaGVyCi0gKiB0YXNrcyBhcmUgbm90IGluIHRoaXMgbGlzdC4gIFRoZXkgYXJlIHRyYWNr ZWQgdmlhIFN0YXJ0dXBQSUQgYW5kIG90aGVyCi0gKiBwaWRfdCB2YXJpYWJsZXMgYmVsb3cuICAo VGh1cywgdGhlcmUgY2FuJ3QgYmUgbW9yZSB0aGFuIG9uZSBvZiBhbnkgZ2l2ZW4KLSAqICJzcGVj aWFsIiBjaGlsZCBwcm9jZXNzIHR5cGUuICBXZSB1c2UgQmFja2VuZExpc3QgZW50cmllcyBmb3Ig YW55IGNoaWxkCi0gKiBwcm9jZXNzIHRoZXJlIGNhbiBiZSBtb3JlIHRoYW4gb25lIG9mLikKKyAq ICJTcGVjaWFsIiBjaGlsZHJlbiBzdWNoIGFzIHRoZSBzdGFydHVwLCBiZ3dyaXRlciwgYXV0b3Zh Y3V1bSBsYXVuY2hlciBhbmQKKyAqIHNsb3Qgc3luYyB3b3JrZXIgdGFza3MgYXJlIG5vdCBpbiB0 aGlzIGxpc3QuICBUaGV5IGFyZSB0cmFja2VkIHZpYSBTdGFydHVwUElECisgKiBhbmQgb3RoZXIg cGlkX3QgdmFyaWFibGVzIGJlbG93LiAgKFRodXMsIHRoZXJlIGNhbid0IGJlIG1vcmUgdGhhbiBv bmUgb2YgYW55CisgKiBnaXZlbiAic3BlY2lhbCIgY2hpbGQgcHJvY2VzcyB0eXBlLiAgV2UgdXNl IEJhY2tlbmRMaXN0IGVudHJpZXMgZm9yIGFueQorICogY2hpbGQgcHJvY2VzcyB0aGVyZSBjYW4g YmUgbW9yZSB0aGFuIG9uZSBvZi4pCiAgKi8KIHR5cGVkZWYgc3RydWN0IGJrZW5kCiB7CkBAIC0y NTUsNyArMjU1LDggQEAgc3RhdGljIHBpZF90IFN0YXJ0dXBQSUQgPSAwLAogCQkJV2FsU3VtbWFy aXplclBJRCA9IDAsCiAJCQlBdXRvVmFjUElEID0gMCwKIAkJCVBnQXJjaFBJRCA9IDAsCi0JCQlT eXNMb2dnZXJQSUQgPSAwOworCQkJU3lzTG9nZ2VyUElEID0gMCwKKwkJCVNsb3RTeW5jV29ya2Vy UElEID0gMDsKIAogLyogU3RhcnR1cCBwcm9jZXNzJ3Mgc3RhdHVzICovCiB0eXBlZGVmIGVudW0K QEAgLTQ1OSw2ICs0NjAsMTAgQEAgc3RhdGljIHZvaWQgSW5pdFBvc3RtYXN0ZXJEZWF0aFdhdGNo SGFuZGxlKHZvaWQpOwogCSAgIChwbVN0YXRlID09IFBNX1JFQ09WRVJZIHx8IHBtU3RhdGUgPT0g UE1fSE9UX1NUQU5EQlkpKSkgJiYgXAogCSBQZ0FyY2hDYW5SZXN0YXJ0KCkpCiAKKyNkZWZpbmUg U2xvdFN5bmNXb3JrZXJBbGxvd2VkKCkJXAorCShlbmFibGVfc3luY3Nsb3QgJiYgcG1TdGF0ZSA9 PSBQTV9IT1RfU1RBTkRCWSAmJiBcCisJIFNsb3RTeW5jV29ya2VyQ2FuUmVzdGFydCgpKQorCiAj aWZkZWYgRVhFQ19CQUNLRU5ECiAKICNpZmRlZiBXSU4zMgpAQCAtMTAxMSwxMiArMTAxNiw2IEBA IFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJQXBwbHlMYXVu Y2hlclJlZ2lzdGVyKCk7CiAKLQkvKgotCSAqIFJlZ2lzdGVyIHRoZSBzbG90IHN5bmMgd29ya2Vy IGhlcmUgdG8ga2ljayBzdGFydCBzbG90LXN5bmMgb3BlcmF0aW9uCi0JICogc29vbmVyIG9uIHRo ZSBwaHlzaWNhbCBzdGFuZGJ5LgotCSAqLwotCVNsb3RTeW5jV29ya2VyUmVnaXN0ZXIoKTsKLQog CS8qCiAJICogcHJvY2VzcyBhbnkgbGlicmFyaWVzIHRoYXQgc2hvdWxkIGJlIHByZWxvYWRlZCBh dCBwb3N0bWFzdGVyIHN0YXJ0CiAJICovCkBAIC0xODM3LDYgKzE4MzYsMTAgQEAgU2VydmVyTG9v cCh2b2lkKQogCQlpZiAoUGdBcmNoUElEID09IDAgJiYgUGdBcmNoU3RhcnR1cEFsbG93ZWQoKSkK IAkJCVBnQXJjaFBJRCA9IFN0YXJ0QXJjaGl2ZXIoKTsKIAorCQkvKiBJZiB3ZSBuZWVkIHRvIHN0 YXJ0IGEgc2xvdCBzeW5jIHdvcmtlciwgdHJ5IHRvIGRvIHRoYXQgbm93ICovCisJCWlmIChTbG90 U3luY1dvcmtlclBJRCA9PSAwICYmIFNsb3RTeW5jV29ya2VyQWxsb3dlZCgpKQorCQkJU2xvdFN5 bmNXb3JrZXJQSUQgPSBTdGFydFNsb3RTeW5jV29ya2VyKCk7CisKIAkJLyogSWYgd2UgbmVlZCB0 byBzaWduYWwgdGhlIGF1dG92YWN1dW0gbGF1bmNoZXIsIGRvIHNvIG5vdyAqLwogCQlpZiAoYXZs YXVuY2hlcl9uZWVkc19zaWduYWwpCiAJCXsKQEAgLTI2ODQsNiArMjY4Nyw4IEBAIHByb2Nlc3Nf cG1fcmVsb2FkX3JlcXVlc3Qodm9pZCkKIAkJCXNpZ25hbF9jaGlsZChQZ0FyY2hQSUQsIFNJR0hV UCk7CiAJCWlmIChTeXNMb2dnZXJQSUQgIT0gMCkKIAkJCXNpZ25hbF9jaGlsZChTeXNMb2dnZXJQ SUQsIFNJR0hVUCk7CisJCWlmIChTbG90U3luY1dvcmtlclBJRCAhPSAwKQorCQkJc2lnbmFsX2No aWxkKFNsb3RTeW5jV29ya2VyUElELCBTSUdIVVApOwogCiAJCS8qIFJlbG9hZCBhdXRoZW50aWNh dGlvbiBjb25maWcgZmlsZXMgdG9vICovCiAJCWlmICghbG9hZF9oYmEoKSkKQEAgLTMwNDEsNiAr MzA0Niw4IEBAIHByb2Nlc3NfcG1fY2hpbGRfZXhpdCh2b2lkKQogCQkJCUF1dG9WYWNQSUQgPSBT dGFydEF1dG9WYWNMYXVuY2hlcigpOwogCQkJaWYgKFBnQXJjaFN0YXJ0dXBBbGxvd2VkKCkgJiYg UGdBcmNoUElEID09IDApCiAJCQkJUGdBcmNoUElEID0gU3RhcnRBcmNoaXZlcigpOworCQkJaWYg KFNsb3RTeW5jV29ya2VyQWxsb3dlZCgpICYmIFNsb3RTeW5jV29ya2VyUElEID09IDApCisJCQkJ U2xvdFN5bmNXb3JrZXJQSUQgPSBTdGFydFNsb3RTeW5jV29ya2VyKCk7CiAKIAkJCS8qIHdvcmtl cnMgbWF5IGJlIHNjaGVkdWxlZCB0byBzdGFydCBub3cgKi8KIAkJCW1heWJlX3N0YXJ0X2Jnd29y a2VycygpOwpAQCAtMzIxMSw2ICszMjE4LDIyIEBAIHByb2Nlc3NfcG1fY2hpbGRfZXhpdCh2b2lk KQogCQkJY29udGludWU7CiAJCX0KIAorCQkvKgorCQkgKiBXYXMgaXQgdGhlIHNsb3Qgc3luYyB3 b3JrZXI/IE5vcm1hbCBleGl0IG9yIEZBVEFMIGV4aXQgY2FuIGJlCisJCSAqIGlnbm9yZWQgKEZB VEFMIGNhbiBiZSBjYXVzZWQgYnkgbGlicHF3YWxyZWNlaXZlciBvbiByZWNlaXZpbmcKKwkJICog c2h1dGRvd24gcmVxdWVzdCBieSB0aGUgc3RhcnR1cCBwcm9jZXNzIGR1cmluZyBwcm9tb3Rpb24p OyB3ZSdsbAorCQkgKiBzdGFydCBhIG5ldyBvbmUgYXQgdGhlIG5leHQgaXRlcmF0aW9uIG9mIHRo ZSBwb3N0bWFzdGVyJ3MgbWFpbgorCQkgKiBsb29wLCBpZiBuZWNlc3NhcnkuIEFueSBvdGhlciBl eGl0IGNvbmRpdGlvbiBpcyB0cmVhdGVkIGFzIGEgY3Jhc2guCisJCSAqLworCQlpZiAocGlkID09 IFNsb3RTeW5jV29ya2VyUElEKQorCQl7CisJCQlTbG90U3luY1dvcmtlclBJRCA9IDA7CisJCQlp ZiAoIUVYSVRfU1RBVFVTXzAoZXhpdHN0YXR1cykgJiYgIUVYSVRfU1RBVFVTXzEoZXhpdHN0YXR1 cykpCisJCQkJSGFuZGxlQ2hpbGRDcmFzaChwaWQsIGV4aXRzdGF0dXMsCisJCQkJCQkJCSBfKCJz bG90IHN5bmMgd29ya2VyIHByb2Nlc3MiKSk7CisJCQljb250aW51ZTsKKwkJfQorCiAJCS8qIFdh cyBpdCBvbmUgb2Ygb3VyIGJhY2tncm91bmQgd29ya2Vycz8gKi8KIAkJaWYgKENsZWFudXBCYWNr Z3JvdW5kV29ya2VyKHBpZCwgZXhpdHN0YXR1cykpCiAJCXsKQEAgLTM1NzcsNiArMzYwMCwxMiBA QCBIYW5kbGVDaGlsZENyYXNoKGludCBwaWQsIGludCBleGl0c3RhdHVzLCBjb25zdCBjaGFyICpw cm9jbmFtZSkKIAllbHNlIGlmIChQZ0FyY2hQSUQgIT0gMCAmJiB0YWtlX2FjdGlvbikKIAkJc2ln cXVpdF9jaGlsZChQZ0FyY2hQSUQpOwogCisJLyogVGFrZSBjYXJlIG9mIHRoZSBzbG90IHN5bmMg d29ya2VyIHRvbyAqLworCWlmIChwaWQgPT0gU2xvdFN5bmNXb3JrZXJQSUQpCisJCVNsb3RTeW5j V29ya2VyUElEID0gMDsKKwllbHNlIGlmIChTbG90U3luY1dvcmtlclBJRCAhPSAwICYmIHRha2Vf YWN0aW9uKQorCQlzaWdxdWl0X2NoaWxkKFNsb3RTeW5jV29ya2VyUElEKTsKKwogCS8qIFdlIGRv IE5PVCByZXN0YXJ0IHRoZSBzeXNsb2dnZXIgKi8KIAogCWlmIChTaHV0ZG93biAhPSBJbW1lZGlh dGVTaHV0ZG93bikKQEAgLTM3MTcsNiArMzc0Niw4IEBAIFBvc3RtYXN0ZXJTdGF0ZU1hY2hpbmUo dm9pZCkKIAkJCXNpZ25hbF9jaGlsZChXYWxSZWNlaXZlclBJRCwgU0lHVEVSTSk7CiAJCWlmIChX YWxTdW1tYXJpemVyUElEICE9IDApCiAJCQlzaWduYWxfY2hpbGQoV2FsU3VtbWFyaXplclBJRCwg U0lHVEVSTSk7CisJCWlmIChTbG90U3luY1dvcmtlclBJRCAhPSAwKQorCQkJc2lnbmFsX2NoaWxk KFNsb3RTeW5jV29ya2VyUElELCBTSUdURVJNKTsKIAkJLyogY2hlY2twb2ludGVyLCBhcmNoaXZl ciwgc3RhdHMsIGFuZCBzeXNsb2dnZXIgbWF5IGNvbnRpbnVlIGZvciBub3cgKi8KIAogCQkvKiBO b3cgdHJhbnNpdGlvbiB0byBQTV9XQUlUX0JBQ0tFTkRTIHN0YXRlIHRvIHdhaXQgZm9yIHRoZW0g dG8gZGllICovCkBAIC0zNzMyLDEzICszNzYzLDEzIEBAIFBvc3RtYXN0ZXJTdGF0ZU1hY2hpbmUo dm9pZCkKIAkJLyoKIAkJICogUE1fV0FJVF9CQUNLRU5EUyBzdGF0ZSBlbmRzIHdoZW4gd2UgaGF2 ZSBubyByZWd1bGFyIGJhY2tlbmRzCiAJCSAqIChpbmNsdWRpbmcgYXV0b3ZhYyB3b3JrZXJzKSwg bm8gYmd3b3JrZXJzIChpbmNsdWRpbmcgdW5jb25uZWN0ZWQKLQkJICogb25lcyksIGFuZCBubyB3 YWx3cml0ZXIsIGF1dG92YWMgbGF1bmNoZXIgb3IgYmd3cml0ZXIuICBJZiB3ZSBhcmUKLQkJICog ZG9pbmcgY3Jhc2ggcmVjb3Zlcnkgb3IgYW4gaW1tZWRpYXRlIHNodXRkb3duIHRoZW4gd2UgZXhw ZWN0IHRoZQotCQkgKiBjaGVja3BvaW50ZXIgdG8gZXhpdCBhcyB3ZWxsLCBvdGhlcndpc2Ugbm90 LiBUaGUgc3RhdHMgYW5kCi0JCSAqIHN5c2xvZ2dlciBwcm9jZXNzZXMgYXJlIGRpc3JlZ2FyZGVk IHNpbmNlIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8KLQkJICogc2hhcmVkIG1lbW9yeTsgd2Ug YWxzbyBkaXNyZWdhcmQgZGVhZF9lbmQgY2hpbGRyZW4gaGVyZS4gV2Fsc2VuZGVycwotCQkgKiBh bmQgYXJjaGl2ZXIgYXJlIGFsc28gZGlzcmVnYXJkZWQsIHRoZXkgd2lsbCBiZSB0ZXJtaW5hdGVk IGxhdGVyCi0JCSAqIGFmdGVyIHdyaXRpbmcgdGhlIGNoZWNrcG9pbnQgcmVjb3JkLgorCQkgKiBv bmVzKSwgYW5kIG5vIHdhbHdyaXRlciwgYXV0b3ZhYyBsYXVuY2hlciwgYmd3cml0ZXIgb3Igc2xv dCBzeW5jCisJCSAqIHdvcmtlci4gIElmIHdlIGFyZSBkb2luZyBjcmFzaCByZWNvdmVyeSBvciBh biBpbW1lZGlhdGUgc2h1dGRvd24KKwkJICogdGhlbiB3ZSBleHBlY3QgdGhlIGNoZWNrcG9pbnRl ciB0byBleGl0IGFzIHdlbGwsIG90aGVyd2lzZSBub3QuIFRoZQorCQkgKiBzdGF0cyBhbmQgc3lz bG9nZ2VyIHByb2Nlc3NlcyBhcmUgZGlzcmVnYXJkZWQgc2luY2UgdGhleSBhcmUgbm90CisJCSAq IGNvbm5lY3RlZCB0byBzaGFyZWQgbWVtb3J5OyB3ZSBhbHNvIGRpc3JlZ2FyZCBkZWFkX2VuZCBj aGlsZHJlbgorCQkgKiBoZXJlLiBXYWxzZW5kZXJzIGFuZCBhcmNoaXZlciBhcmUgYWxzbyBkaXNy ZWdhcmRlZCwgdGhleSB3aWxsIGJlCisJCSAqIHRlcm1pbmF0ZWQgbGF0ZXIgYWZ0ZXIgd3JpdGlu ZyB0aGUgY2hlY2twb2ludCByZWNvcmQuCiAJCSAqLwogCQlpZiAoQ291bnRDaGlsZHJlbihCQUNL RU5EX1RZUEVfQUxMIC0gQkFDS0VORF9UWVBFX1dBTFNORCkgPT0gMCAmJgogCQkJU3RhcnR1cFBJ RCA9PSAwICYmCkBAIC0zNzQ4LDcgKzM3NzksOCBAQCBQb3N0bWFzdGVyU3RhdGVNYWNoaW5lKHZv aWQpCiAJCQkoQ2hlY2twb2ludGVyUElEID09IDAgfHwKIAkJCSAoIUZhdGFsRXJyb3IgJiYgU2h1 dGRvd24gPCBJbW1lZGlhdGVTaHV0ZG93bikpICYmCiAJCQlXYWxXcml0ZXJQSUQgPT0gMCAmJgot CQkJQXV0b1ZhY1BJRCA9PSAwKQorCQkJQXV0b1ZhY1BJRCA9PSAwICYmCisJCQlTbG90U3luY1dv cmtlclBJRCA9PSAwKQogCQl7CiAJCQlpZiAoU2h1dGRvd24gPj0gSW1tZWRpYXRlU2h1dGRvd24g fHwgRmF0YWxFcnJvcikKIAkJCXsKQEAgLTM4NDYsNiArMzg3OCw3IEBAIFBvc3RtYXN0ZXJTdGF0 ZU1hY2hpbmUodm9pZCkKIAkJCUFzc2VydChDaGVja3BvaW50ZXJQSUQgPT0gMCk7CiAJCQlBc3Nl cnQoV2FsV3JpdGVyUElEID09IDApOwogCQkJQXNzZXJ0KEF1dG9WYWNQSUQgPT0gMCk7CisJCQlB c3NlcnQoU2xvdFN5bmNXb3JrZXJQSUQgPT0gMCk7CiAJCQkvKiBzeXNsb2dnZXIgaXMgbm90IGNv bnNpZGVyZWQgaGVyZSAqLwogCQkJcG1TdGF0ZSA9IFBNX05PX0NISUxEUkVOOwogCQl9CkBAIC00 MDY5LDYgKzQxMDIsOCBAQCBUZXJtaW5hdGVDaGlsZHJlbihpbnQgc2lnbmFsKQogCQlzaWduYWxf Y2hpbGQoQXV0b1ZhY1BJRCwgc2lnbmFsKTsKIAlpZiAoUGdBcmNoUElEICE9IDApCiAJCXNpZ25h bF9jaGlsZChQZ0FyY2hQSUQsIHNpZ25hbCk7CisJaWYgKFNsb3RTeW5jV29ya2VyUElEICE9IDAp CisJCXNpZ25hbF9jaGlsZChTbG90U3luY1dvcmtlclBJRCwgc2lnbmFsKTsKIH0KIAogLyoKQEAg LTQ4ODEsNiArNDkxNiw3IEBAIFN1YlBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJICovCiAJaWYgKHN0cmNtcChhcmd2WzFdLCAiLS1mb3JrYmFja2VuZCIpID09IDAgfHwK IAkJc3RyY21wKGFyZ3ZbMV0sICItLWZvcmthdmxhdW5jaGVyIikgPT0gMCB8fAorCQlzdHJjbXAo YXJndlsxXSwgIi0tZm9ya3Nzd29ya2VyIikgPT0gMCB8fAogCQlzdHJjbXAoYXJndlsxXSwgIi0t Zm9ya2F2d29ya2VyIikgPT0gMCB8fAogCQlzdHJjbXAoYXJndlsxXSwgIi0tZm9ya2F1eCIpID09 IDAgfHwKIAkJc3RyY21wKGFyZ3ZbMV0sICItLWZvcmtiZ3dvcmtlciIpID09IDApCkBAIC00OTg0 LDYgKzUwMjAsMTMgQEAgU3ViUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAogCQlBdXRvVmFjV29ya2VyTWFpbihhcmdjIC0gMiwgYXJndiArIDIpOwkvKiBkb2VzIG5vdCBy ZXR1cm4gKi8KIAl9CisJaWYgKHN0cmNtcChhcmd2WzFdLCAiLS1mb3Jrc3N3b3JrZXIiKSA9PSAw KQorCXsKKwkJLyogUmVzdG9yZSBiYXNpYyBzaGFyZWQgbWVtb3J5IHBvaW50ZXJzICovCisJCUlu aXRTaG1lbUFjY2VzcyhVc2VkU2htZW1TZWdBZGRyKTsKKworCQlSZXBsU2xvdFN5bmNXb3JrZXJN YWluKGFyZ2MgLSAyLCBhcmd2ICsgMik7IC8qIGRvZXMgbm90IHJldHVybiAqLworCX0KIAlpZiAo c3RyY21wKGFyZ3ZbMV0sICItLWZvcmtiZ3dvcmtlciIpID09IDApCiAJewogCQkvKiBkbyB0aGlz IGFzIGVhcmx5IGFzIHBvc3NpYmxlOyBpbiBwYXJ0aWN1bGFyLCBiZWZvcmUgSW5pdFByb2Nlc3Mo KSAqLwpAQCAtNTgwNiw5ICs1ODQ5LDYgQEAgYmd3b3JrZXJfc2hvdWxkX3N0YXJ0X25vdyhCZ1dv cmtlclN0YXJ0VGltZSBzdGFydF90aW1lKQogCQljYXNlIFBNX0hPVF9TVEFOREJZOgogCQkJaWYg KHN0YXJ0X3RpbWUgPT0gQmdXb3JrZXJTdGFydF9Db25zaXN0ZW50U3RhdGUpCiAJCQkJcmV0dXJu IHRydWU7Ci0JCQlpZiAoc3RhcnRfdGltZSA9PSBCZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRTdGF0 ZV9Ib3RTdGFuZGJ5ICYmCi0JCQkJcG1TdGF0ZSAhPSBQTV9SVU4pCi0JCQkJcmV0dXJuIHRydWU7 CiAJCQkvKiBmYWxsIHRocm91Z2ggKi8KIAogCQljYXNlIFBNX1JFQ09WRVJZOgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IGU0NDQ3NGRkNTguLjc2YTcz YWE2ODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5 bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAg LTM0LDE1ICszNCwyMCBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgPHRp bWUuaD4KKwogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJs ZS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3hsb2dyZWNvdmVyeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKICNpbmNs dWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCisjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCisj aW5jbHVkZSAicG9zdG1hc3Rlci9mb3JrX3Byb2Nlc3MuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVy L2ludGVycnVwdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fs bGF1bmNoZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCkBAIC01 Niw2ICs2MSw4IEBACiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGls cy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKKyNpbmNsdWRlICJ1dGls cy9wc19zdGF0dXMuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAjaW5jbHVkZSAidXRp bHMvdmFybGVuYS5oIgogCiAvKgpAQCAtMTA5LDggKzExNiwxNiBAQCBib29sCQllbmFibGVfc3lu Y3Nsb3QgPSBmYWxzZTsKICNkZWZpbmUgTUFYX1dPUktFUl9OQVBUSU1FX01TICAzMDAwMAkvKiAz MHMgKi8KIHN0YXRpYyBsb25nIHNsZWVwX21zID0gTUlOX1dPUktFUl9OQVBUSU1FX01TOwogCisv KiBGbGFnIHRvIHRlbGwgaWYgd2UgYXJlIGluIGEgc2xvdCBzeW5jIHdvcmtlciBwcm9jZXNzICov CitzdGF0aWMgYm9vbCBhbV9zbG90c3luY193b3JrZXIgPSBmYWxzZTsKKwogc3RhdGljIHZvaWQg UHJvY2Vzc1Nsb3RTeW5jSW50ZXJydXB0cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubik7CiAKKyNp ZmRlZiBFWEVDX0JBQ0tFTkQKK3N0YXRpYyBwaWRfdCBzbG90c3luY3dvcmtlcl9mb3JrZXhlYyh2 b2lkKTsKKyNlbmRpZgorTk9OX0VYRUNfU1RBVElDIHZvaWQgUmVwbFNsb3RTeW5jV29ya2VyTWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKKwogLyoK ICAqIElmIG5lY2Vzc2FyeSwgdXBkYXRlIGxvY2FsIHNsb3QgbWV0YWRhdGEgYmFzZWQgb24gdGhl IGRhdGEgZnJvbSB0aGUgcmVtb3RlCiAgKiBzbG90LgpAQCAtNzM0LDcgKzc0OSw4IEBAIHN5bmNo cm9uaXplX3Nsb3RzKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKQogICogc3RhbmRieXMuCiAgKi8K IHN0YXRpYyB2b2lkCi1jaGVja19wcmltYXJ5X2luZm8oV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4s IGJvb2wgKmFtX2Nhc2NhZGluZ19zdGFuZGJ5KQorY2hlY2tfcHJpbWFyeV9pbmZvKFdhbFJlY2Vp dmVyQ29ubiAqd3Jjb25uLCBib29sICphbV9jYXNjYWRpbmdfc3RhbmRieSwKKwkJCQkgICBib29s ICpwcmltYXJ5X3Nsb3RfaW52YWxpZCkKIHsKICNkZWZpbmUgUFJJTUFSWV9JTkZPX09VVFBVVF9D T0xfQ09VTlQgMgogCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKQEAgLTc0OSw4ICs3NjUsMTAgQEAg Y2hlY2tfcHJpbWFyeV9pbmZvKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBib29sICphbV9jYXNj YWRpbmdfc3RhbmRieSkKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCiAJQXNzZXJ0KGFt X2Nhc2NhZGluZ19zdGFuZGJ5ICE9IE5VTEwpOworCUFzc2VydChwcmltYXJ5X3Nsb3RfaW52YWxp ZCAhPSBOVUxMKTsKIAogCSphbV9jYXNjYWRpbmdfc3RhbmRieSA9IGZhbHNlOwkvKiBvdmVyd3Jp dHRlbiBsYXRlciBpZiBjYXNjYWRpbmcgKi8KKwkqcHJpbWFyeV9zbG90X2ludmFsaWQgPSBmYWxz ZTsJLyogb3ZlcndyaXR0ZW4gbGF0ZXIgaWYgaW52YWxpZCAqLwogCiAJaW5pdFN0cmluZ0luZm8o JmNtZCk7CiAJYXBwZW5kU3RyaW5nSW5mbygmY21kLApAQCAtNzg4LDEzICs4MDYsMTYgQEAgY2hl Y2tfcHJpbWFyeV9pbmZvKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBib29sICphbV9jYXNjYWRp bmdfc3RhbmRieSkKIAkJQXNzZXJ0KCFpc251bGwpOwogCiAJCWlmICghdmFsaWQpCi0JCQllcmVw b3J0KEVSUk9SLAorCQl7CisJCQkqcHJpbWFyeV9zbG90X2ludmFsaWQgPSB0cnVlOworCQkJZXJl cG9ydChMT0csCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks Ci0JCQkJCWVycm1zZygiZXhpdGluZyBmcm9tIHNsb3Qgc3luY2hyb25pemF0aW9uIGR1ZSB0byBi YWQgY29uZmlndXJhdGlvbiIpLAorCQkJCQllcnJtc2coImJhZCBjb25maWd1cmF0aW9uIGZvciBz bG90IHN5bmNocm9uaXphdGlvbiIpLAogCQkJLyogdHJhbnNsYXRvcjogc2Vjb25kICVzIGlzIGEg R1VDIHZhcmlhYmxlIG5hbWUgKi8KIAkJCQkJZXJyZGV0YWlsKCJUaGUgcHJpbWFyeSBzZXJ2ZXIg c2xvdCBcIiVzXCIgc3BlY2lmaWVkIGJ5IgogCQkJCQkJCSAgIiBcIiVzXCIgaXMgbm90IHZhbGlk LiIsCiAJCQkJCQkJICBQcmltYXJ5U2xvdE5hbWUsICJwcmltYXJ5X3Nsb3RfbmFtZSIpKTsKKwkJ fQogCX0KIAogCUV4ZWNDbGVhclR1cGxlKHR1cHNsb3QpOwpAQCAtODAzLDIwICs4MjQsMTUgQEAg Y2hlY2tfcHJpbWFyeV9pbmZvKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBib29sICphbV9jYXNj YWRpbmdfc3RhbmRieSkKIH0KIAogLyoKLSAqIENoZWNrIHRoYXQgYWxsIG5lY2Vzc2FyeSBHVUNz IGZvciBzbG90IHN5bmNocm9uaXphdGlvbiBhcmUgc2V0Ci0gKiBhcHByb3ByaWF0ZWx5LiBJZiBu b3QsIHJhaXNlIGFuIEVSUk9SLgorICogUmV0dXJucyB0cnVlIGlmIGFsbCBuZWNlc3NhcnkgR1VD cyBmb3Igc2xvdCBzeW5jaHJvbml6YXRpb24gYXJlIHNldAorICogYXBwcm9wcmlhdGVseSwgb3Ro ZXJ3aXNlIHJldHVybnMgZmFsc2UuCiAgKgogICogSWYgYWxsIGNoZWNrcyBwYXNzLCBleHRyYWN0 cyB0aGUgZGJuYW1lIGZyb20gdGhlIHByaW1hcnlfY29ubmluZm8gR1VDIGFuZAotICogcmV0dXJu cyBpdC4KKyAqIGFuZCByZXR1cm4gaXQgaW4gb3V0cHV0IGRibmFtZSBhcmcuCiAgKi8KLXN0YXRp YyBjaGFyICoKLXZhbGlkYXRlX3BhcmFtZXRlcnNfYW5kX2dldF9kYm5hbWUodm9pZCkKK3N0YXRp YyBib29sCit2YWxpZGF0ZV9wYXJhbWV0ZXJzX2FuZF9nZXRfZGJuYW1lKGNoYXIgKipkYm5hbWUp CiB7Ci0JY2hhcgkgICAqZGJuYW1lOwotCi0JLyogU2FuaXR5IGNoZWNrLiAqLwotCUFzc2VydChl bmFibGVfc3luY3Nsb3QpOwotCiAJLyoKIAkgKiBBIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3Qo cHJpbWFyeV9zbG90X25hbWUpIGlzIHJlcXVpcmVkIG9uIHRoZQogCSAqIHByaW1hcnkgdG8gZW5z dXJlIHRoYXQgdGhlIHJvd3MgbmVlZGVkIGJ5IHRoZSBzdGFuZGJ5IGFyZSBub3QgcmVtb3ZlZApA QCAtODI0LDExICs4NDAsMTQgQEAgdmFsaWRhdGVfcGFyYW1ldGVyc19hbmRfZ2V0X2RibmFtZSh2 b2lkKQogCSAqIGJlIGludmFsaWRhdGVkLgogCSAqLwogCWlmIChQcmltYXJ5U2xvdE5hbWUgPT0g TlVMTCB8fCBzdHJjbXAoUHJpbWFyeVNsb3ROYW1lLCAiIikgPT0gMCkKLQkJZXJlcG9ydChFUlJP UiwKKwl7CisJCWVyZXBvcnQoTE9HLAogCQkvKiB0cmFuc2xhdG9yOiAlcyBpcyBhIEdVQyB2YXJp YWJsZSBuYW1lICovCiAJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKLQkJCQllcnJtc2coImV4aXRpbmcgZnJvbSBzbG90IHN5bmNocm9uaXphdGlvbiBkdWUgdG8g YmFkIGNvbmZpZ3VyYXRpb24iKSwKKwkJCQllcnJtc2coImJhZCBjb25maWd1cmF0aW9uIGZvciBz bG90IHN5bmNocm9uaXphdGlvbiIpLAogCQkJCWVycmhpbnQoIlwiJXNcIiBtdXN0IGJlIGRlZmlu ZWQuIiwgInByaW1hcnlfc2xvdF9uYW1lIikpOworCQlyZXR1cm4gZmFsc2U7CisJfQogCiAJLyoK IAkgKiBob3Rfc3RhbmRieV9mZWVkYmFjayBtdXN0IGJlIGVuYWJsZWQgdG8gY29vcGVyYXRlIHdp dGggdGhlIHBoeXNpY2FsCkBAIC04MzYsNDkgKzg1NSw5OCBAQCB2YWxpZGF0ZV9wYXJhbWV0ZXJz X2FuZF9nZXRfZGJuYW1lKHZvaWQpCiAJICogY2F0YWxvZ194bWluIHZhbHVlcyBvbiB0aGUgc3Rh bmRieS4KIAkgKi8KIAlpZiAoIWhvdF9zdGFuZGJ5X2ZlZWRiYWNrKQotCQllcmVwb3J0KEVSUk9S LAorCXsKKwkJZXJlcG9ydChMT0csCiAJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEgR1VDIHZhcmlh YmxlIG5hbWUgKi8KIAkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAotCQkJCWVycm1zZygiZXhpdGluZyBmcm9tIHNsb3Qgc3luY2hyb25pemF0aW9uIGR1ZSB0byBi YWQgY29uZmlndXJhdGlvbiIpLAorCQkJCWVycm1zZygiYmFkIGNvbmZpZ3VyYXRpb24gZm9yIHNs b3Qgc3luY2hyb25pemF0aW9uIiksCiAJCQkJZXJyaGludCgiXCIlc1wiIG11c3QgYmUgZW5hYmxl ZC4iLCAiaG90X3N0YW5kYnlfZmVlZGJhY2siKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CiAKIAkv KgogCSAqIExvZ2ljYWwgZGVjb2RpbmcgcmVxdWlyZXMgd2FsX2xldmVsID49IGxvZ2ljYWwgYW5k IHdlIGN1cnJlbnRseSBvbmx5CiAJICogc3luY2hyb25pemUgbG9naWNhbCBzbG90cy4KIAkgKi8K IAlpZiAod2FsX2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwpCi0JCWVyZXBvcnQoRVJST1IsCi0J CS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEgR1VDIHZhcmlhYmxlIG5hbWUgKi8KKwl7CisJCWVyZXBv cnQoTE9HLAogCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0J CQkJZXJybXNnKCJleGl0aW5nIGZyb20gc2xvdCBzeW5jaHJvbml6YXRpb24gZHVlIHRvIGJhZCBj b25maWd1cmF0aW9uIiksCisJCQkJZXJybXNnKCJiYWQgY29uZmlndXJhdGlvbiBmb3Igc2xvdCBz eW5jaHJvbml6YXRpb24iKSwKIAkJCQllcnJoaW50KCJcIndhbF9sZXZlbFwiIG11c3QgYmUgPj0g bG9naWNhbC4iKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CiAKIAkvKgogCSAqIFRoZSBwcmltYXJ5 X2Nvbm5pbmZvIGlzIHJlcXVpcmVkIHRvIG1ha2UgY29ubmVjdGlvbiB0byBwcmltYXJ5IGZvcgog CSAqIGdldHRpbmcgc2xvdHMgaW5mb3JtYXRpb24uCiAJICovCiAJaWYgKFByaW1hcnlDb25uSW5m byA9PSBOVUxMIHx8IHN0cmNtcChQcmltYXJ5Q29ubkluZm8sICIiKSA9PSAwKQotCQllcmVwb3J0 KEVSUk9SLAorCXsKKwkJZXJlcG9ydChMT0csCiAJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEgR1VD IHZhcmlhYmxlIG5hbWUgKi8KIAkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAotCQkJCWVycm1zZygiZXhpdGluZyBmcm9tIHNsb3Qgc3luY2hyb25pemF0aW9uIGR1 ZSB0byBiYWQgY29uZmlndXJhdGlvbiIpLAorCQkJCWVycm1zZygiYmFkIGNvbmZpZ3VyYXRpb24g Zm9yIHNsb3Qgc3luY2hyb25pemF0aW9uIiksCiAJCQkJZXJyaGludCgiXCIlc1wiIG11c3QgYmUg ZGVmaW5lZC4iLCAicHJpbWFyeV9jb25uaW5mbyIpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KIAog CS8qCiAJICogVGhlIHNsb3Qgc3luYyB3b3JrZXIgbmVlZHMgYSBkYXRhYmFzZSBjb25uZWN0aW9u IGZvciB3YWxyY3ZfZXhlYyB0bwogCSAqIHdvcmsuCiAJICovCi0JZGJuYW1lID0gd2FscmN2X2dl dF9kYm5hbWVfZnJvbV9jb25uaW5mbyhQcmltYXJ5Q29ubkluZm8pOwotCWlmIChkYm5hbWUgPT0g TlVMTCkKLQkJZXJlcG9ydChFUlJPUiwKKwkqZGJuYW1lID0gd2FscmN2X2dldF9kYm5hbWVfZnJv bV9jb25uaW5mbyhQcmltYXJ5Q29ubkluZm8pOworCWlmICgqZGJuYW1lID09IE5VTEwpCisJewor CQllcmVwb3J0KExPRywKIAogCQkvKgogCQkgKiB0cmFuc2xhdG9yOiAnZGJuYW1lJyBpcyBhIHNw ZWNpZmljIG9wdGlvbjsgJXMgaXMgYSBHVUMgdmFyaWFibGUKIAkJICogbmFtZQogCQkgKi8KIAkJ CQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCWVycm1zZygi ZXhpdGluZyBmcm9tIHNsb3Qgc3luY2hyb25pemF0aW9uIGR1ZSB0byBiYWQgY29uZmlndXJhdGlv biIpLAorCQkJCWVycm1zZygiYmFkIGNvbmZpZ3VyYXRpb24gZm9yIHNsb3Qgc3luY2hyb25pemF0 aW9uIiksCiAJCQkJZXJyaGludCgiJ2RibmFtZScgbXVzdCBiZSBzcGVjaWZpZWQgaW4gXCIlc1wi LiIsICJwcmltYXJ5X2Nvbm5pbmZvIikpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJu IHRydWU7Cit9CisKKy8qCisgKiBDaGVjayB0aGF0IGFsbCBuZWNlc3NhcnkgR1VDcyBmb3Igc2xv dCBzeW5jaHJvbml6YXRpb24gYXJlIHNldAorICogYXBwcm9wcmlhdGVseS4gSWYgbm90LCBzbGVl cCBmb3IgTUFYX1dPUktFUl9OQVBUSU1FX01TIGFuZCBjaGVjayBhZ2Fpbi4KKyAqIFRoZSBpZGVh IGlzIHRvIGJlY29tZSBuby1vcCB1bnRpbCB3ZSBnZXQgdmFsaWQgR1VDcyB2YWx1ZXMuCisgKgor ICogSWYgYWxsIGNoZWNrcyBwYXNzLCBleHRyYWN0cyB0aGUgZGJuYW1lIGZyb20gdGhlIHByaW1h cnlfY29ubmluZm8gR1VDIGFuZAorICogcmV0dXJucyBpdC4KKyAqLworc3RhdGljIGNoYXIgKgor d2FpdF9mb3JfdmFsaWRfcGFyYW1zX2FuZF9nZXRfZGJuYW1lKHZvaWQpCit7CisJY2hhcgkgICAq ZGJuYW1lOworCWludAkJCXJjOworCisJLyogU2FuaXR5IGNoZWNrLiAqLworCUFzc2VydChlbmFi bGVfc3luY3Nsb3QpOworCisJZm9yICg7OykKKwl7CisJCWlmICh2YWxpZGF0ZV9wYXJhbWV0ZXJz X2FuZF9nZXRfZGJuYW1lKCZkYm5hbWUpKQorCQkJYnJlYWs7CisKKwkJZXJlcG9ydChMT0csIGVy cm1zZygic2tpcHBpbmcgc2xvdCBzeW5jaHJvbml6YXRpb24iKSk7CisKKwkJUHJvY2Vzc1Nsb3RT eW5jSW50ZXJydXB0cyhOVUxMKTsKKworCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkg ICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJ ICAgTUFYX1dPUktFUl9OQVBUSU1FX01TLAorCQkJCQkgICBXQUlUX0VWRU5UX1JFUExfU0xPVFNZ TkNfTUFJTik7CisKKwkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJUmVzZXRMYXRjaChNeUxh dGNoKTsKKwl9CiAKIAlyZXR1cm4gZGJuYW1lOwogfQpAQCAtODk0LDE2ICs5NjIsMjggQEAgc2xv dHN5bmNfcmVyZWFkX2NvbmZpZyh2b2lkKQogewogCWNoYXIJICAgKm9sZF9wcmltYXJ5X2Nvbm5p bmZvID0gcHN0cmR1cChQcmltYXJ5Q29ubkluZm8pOwogCWNoYXIJICAgKm9sZF9wcmltYXJ5X3Ns b3RuYW1lID0gcHN0cmR1cChQcmltYXJ5U2xvdE5hbWUpOworCWJvb2wJCW9sZF9lbmFibGVfc3lu Y3Nsb3QgPSBlbmFibGVfc3luY3Nsb3Q7CiAJYm9vbAkJb2xkX2hvdF9zdGFuZGJ5X2ZlZWRiYWNr ID0gaG90X3N0YW5kYnlfZmVlZGJhY2s7CiAJYm9vbAkJY29ubmluZm9fY2hhbmdlZDsKIAlib29s CQlwcmltYXJ5X3Nsb3RuYW1lX2NoYW5nZWQ7CiAKKwlBc3NlcnQoZW5hYmxlX3N5bmNzbG90KTsK KwogCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIAlQcm9jZXNzQ29uZmlnRmlsZShQR0Nf U0lHSFVQKTsKIAogCWNvbm5pbmZvX2NoYW5nZWQgPSBzdHJjbXAob2xkX3ByaW1hcnlfY29ubmlu Zm8sIFByaW1hcnlDb25uSW5mbykgIT0gMDsKIAlwcmltYXJ5X3Nsb3RuYW1lX2NoYW5nZWQgPSBz dHJjbXAob2xkX3ByaW1hcnlfc2xvdG5hbWUsIFByaW1hcnlTbG90TmFtZSkgIT0gMDsKIAorCWlm IChvbGRfZW5hYmxlX3N5bmNzbG90ICE9IGVuYWJsZV9zeW5jc2xvdCkKKwl7CisJCWVyZXBvcnQo TE9HLAorCQkvKiB0cmFuc2xhdG9yOiAlcyBpcyBhIEdVQyB2YXJpYWJsZSBuYW1lICovCisJCQkJ ZXJybXNnKCJzbG90IHN5bmMgd29ya2VyIHdpbGwgc2h1dGRvd24gYmVjYXVzZSIKKwkJCQkJICAg IiAlcyBpcyBkaXNhYmxlZCIsICJlbmFibGVfc3luY3Nsb3QiKSk7CisJCXByb2NfZXhpdCgwKTsK Kwl9CisKIAlpZiAoY29ubmluZm9fY2hhbmdlZCB8fAogCQlwcmltYXJ5X3Nsb3RuYW1lX2NoYW5n ZWQgfHwKIAkJKG9sZF9ob3Rfc3RhbmRieV9mZWVkYmFjayAhPSBob3Rfc3RhbmRieV9mZWVkYmFj aykpCkBAIC05MTEsOCArOTkxLDcgQEAgc2xvdHN5bmNfcmVyZWFkX2NvbmZpZyh2b2lkKQogCQll cmVwb3J0KExPRywKIAkJCQllcnJtc2coInNsb3Qgc3luYyB3b3JrZXIgd2lsbCByZXN0YXJ0IGJl Y2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIikpOwogCi0JCS8qIFRoZSBleGl0IGNvZGUgMSB3 aWxsIG1ha2UgcG9zdG1hc3RlciByZXN0YXJ0IHRoaXMgd29ya2VyICovCi0JCXByb2NfZXhpdCgx KTsKKwkJcHJvY19leGl0KDApOwogCX0KIAogCXBmcmVlKG9sZF9wcmltYXJ5X2Nvbm5pbmZvKTsK QEAgLTkyOSw3ICsxMDA4LDggQEAgUHJvY2Vzc1Nsb3RTeW5jSW50ZXJydXB0cyhXYWxSZWNlaXZl ckNvbm4gKndyY29ubikKIAogCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQogCXsKLQkJd2Fs cmN2X2Rpc2Nvbm5lY3Qod3Jjb25uKTsKKwkJaWYgKHdyY29ubikKKwkJCXdhbHJjdl9kaXNjb25u ZWN0KHdyY29ubik7CiAJCWVyZXBvcnQoTE9HLAogCQkJCWVycm1zZygicmVwbGljYXRpb24gc2xv dCBzeW5jIHdvcmtlciBpcyBzaHV0dGluZyBkb3duIG9uIHJlY2VpdmluZyBTSUdJTlQiKSk7CiAJ CXByb2NfZXhpdCgwKTsKQEAgLTk2MSwxNyArMTA0MSwxNiBAQCBzbG90c3luY193b3JrZXJfb25l eGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCiAgKiBzeW5jLWN5Y2xlcyBpcyByZXNldCB0byB0aGUg bWluaW11bSAoMjAwbXMpLgogICovCiBzdGF0aWMgdm9pZAotd2FpdF9mb3Jfc2xvdF9hY3Rpdml0 eShib29sIHNvbWVfc2xvdF91cGRhdGVkLCBib29sIGFtX2Nhc2NhZGluZ19zdGFuZGJ5KQord2Fp dF9mb3Jfc2xvdF9hY3Rpdml0eShib29sIHNvbWVfc2xvdF91cGRhdGVkLCBib29sIHJlY2hlY2tf cHJpbWFyeV9pbmZvKQogewogCWludAkJCXJjOwogCi0JaWYgKGFtX2Nhc2NhZGluZ19zdGFuZGJ5 KQorCWlmIChyZWNoZWNrX3ByaW1hcnlfaW5mbykKIAl7CiAJCS8qCi0JCSAqIFNsb3Qgc3luY2hy b25pemF0aW9uIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIGNhc2NhZGluZwotCQkgKiBz dGFuZGJ5LiBTbyBpZiB3ZSBhcmUgb24gdGhlIGNhc2NhZGluZyBzdGFuZGJ5LCB3ZSB3aWxsIHNr aXAgdGhlCi0JCSAqIHN5bmMgYW5kIHRha2UgYSBsb25nZXIgbmFwIGJlZm9yZSB3ZSBjaGVjayBh Z2FpbiB3aGV0aGVyIHdlIGFyZQotCQkgKiBzdGlsbCBjYXNjYWRpbmcgc3RhbmRieSBvciBub3Qu CisJCSAqIElmIHdlIGFyZSBvbiB0aGUgY2FzY2FkaW5nIHN0YW5kYnkgb3IgcHJpbWFyeV9zbG90 X25hbWUgY29uZmlndXJlZAorCQkgKiBpcyBub3QgdmFsaWQsIHRoZW4gd2Ugd2lsbCBza2lwIHRo ZSBzeW5jIGFuZCB0YWtlIGEgbG9uZ2VyIG5hcAorCQkgKiBiZWZvcmUgd2UgY2FuIGRvIGNoZWNr X3ByaW1hcnlfaW5mbygpIGFnYWluLgogCQkgKi8KIAkJc2xlZXBfbXMgPSBNQVhfV09SS0VSX05B UFRJTUVfTVM7CiAJfQpAQCAtMTAwNywyMCArMTA4NiwzOCBAQCB3YWl0X2Zvcl9zbG90X2FjdGl2 aXR5KGJvb2wgc29tZV9zbG90X3VwZGF0ZWQsIGJvb2wgYW1fY2FzY2FkaW5nX3N0YW5kYnkpCiAg KiBJdCBjb25uZWN0cyB0byB0aGUgcHJpbWFyeSBzZXJ2ZXIsIGZldGNoZXMgbG9naWNhbCBmYWls b3ZlciBzbG90cwogICogaW5mb3JtYXRpb24gcGVyaW9kaWNhbGx5IGluIG9yZGVyIHRvIGNyZWF0 ZSBhbmQgc3luYyB0aGUgc2xvdHMuCiAgKi8KLXZvaWQKLVJlcGxTbG90U3luY1dvcmtlck1haW4o RGF0dW0gbWFpbl9hcmcpCitOT05fRVhFQ19TVEFUSUMgdm9pZAorUmVwbFNsb3RTeW5jV29ya2Vy TWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogCVdhbFJlY2VpdmVyQ29ubiAqd3Jjb25u ID0gTlVMTDsKIAljaGFyCSAgICpkYm5hbWU7CiAJYm9vbAkJYW1fY2FzY2FkaW5nX3N0YW5kYnk7 CisJYm9vbAkJcHJpbWFyeV9zbG90X2ludmFsaWQ7CiAJY2hhcgkgICAqZXJyOworCXNpZ2ptcF9i dWYJbG9jYWxfc2lnam1wX2J1ZjsKIAotCWVyZXBvcnQoTE9HLCBlcnJtc2coInJlcGxpY2F0aW9u IHNsb3Qgc3luYyB3b3JrZXIgc3RhcnRlZCIpKTsKKwlhbV9zbG90c3luY193b3JrZXIgPSB0cnVl OwogCi0Jb25fc2htZW1fZXhpdChzbG90c3luY193b3JrZXJfb25leGl0LCAoRGF0dW0pIDApOwor CU15QmFja2VuZFR5cGUgPSBCX1NMT1RTWU5DX1dPUktFUjsKIAotCVNwaW5Mb2NrQWNxdWlyZSgm U2xvdFN5bmNXb3JrZXItPm11dGV4KTsKKwlpbml0X3BzX2Rpc3BsYXkoTlVMTCk7CisKKwlTZXRQ cm9jZXNzaW5nTW9kZShJbml0UHJvY2Vzc2luZyk7CiAKKwkvKgorCSAqIENyZWF0ZSBhIHBlci1i YWNrZW5kIFBHUFJPQyBzdHJ1Y3QgaW4gc2hhcmVkIG1lbW9yeS4gIFdlIG11c3QgZG8gdGhpcwor CSAqIGJlZm9yZSB3ZSBhY2Nlc3MgYW55IHNoYXJlZCBtZW1vcnkuCisJICovCisJSW5pdFByb2Nl c3MoKTsKKworCS8qCisJICogRWFybHkgaW5pdGlhbGl6YXRpb24uCisJICovCisJQmFzZUluaXQo KTsKKworCUFzc2VydChTbG90U3luY1dvcmtlciAhPSBOVUxMKTsKKworCVNwaW5Mb2NrQWNxdWly ZSgmU2xvdFN5bmNXb3JrZXItPm11dGV4KTsKIAlBc3NlcnQoU2xvdFN5bmNXb3JrZXItPnBpZCA9 PSBJbnZhbGlkUGlkKTsKIAogCS8qCkBAIC0xMDM1LDI2ICsxMTMyLDc3IEBAIFJlcGxTbG90U3lu Y1dvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAkvKiBBZHZlcnRpc2Ugb3VyIFBJRCBzbyB0 aGF0IHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuIGtpbGwgdXMgb24gcHJvbW90aW9uICovCiAJU2xv dFN5bmNXb3JrZXItPnBpZCA9IE15UHJvY1BpZDsKLQogCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5 bmNXb3JrZXItPm11dGV4KTsKIAorCWVyZXBvcnQoTE9HLCBlcnJtc2coInJlcGxpY2F0aW9uIHNs b3Qgc3luYyB3b3JrZXIgc3RhcnRlZCIpKTsKKworCW9uX3NobWVtX2V4aXQoc2xvdHN5bmNfd29y a2VyX29uZXhpdCwgKERhdHVtKSAwKTsKKwogCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZyAqLwog CXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CiAJcHFzaWdu YWwoU0lHSU5ULCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKIAlwcXNpZ25hbChT SUdURVJNLCBkaWUpOwotCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCXBxc2ln bmFsKFNJR0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVyKTsKKwlwcXNpZ25hbChTSUdVU1IxLCBw cm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CisJcHFzaWduYWwoU0lHVVNSMiwgU0lHX0lHTik7 CisJcHFzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7CisJcHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RG TCk7CisKKwkvKgorCSAqIEVzdGFibGlzaGVzIFNJR0FMUk0gaGFuZGxlciBhbmQgaW5pdGlhbGl6 ZSB0aW1lb3V0IG1vZHVsZS4gSXQgaXMgbmVlZGVkCisJICogYnkgSW5pdFBvc3RncmVzIHRvIHJl Z2lzdGVyIGRpZmZlcmVudCB0aW1lb3V0cy4KKwkgKi8KKwlJbml0aWFsaXplVGltZW91dHMoKTsK IAogCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLwogCWxvYWRfZmlsZSgi bGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKIAotCWRibmFtZSA9IHZhbGlkYXRlX3BhcmFtZXRl cnNfYW5kX2dldF9kYm5hbWUoKTsKKwkvKgorCSAqIElmIGFuIGV4Y2VwdGlvbiBpcyBlbmNvdW50 ZXJlZCwgcHJvY2Vzc2luZyByZXN1bWVzIGhlcmUuCisJICoKKwkgKiBXZSBqdXN0IG5lZWQgdG8g Y2xlYW4gdXAsIHJlcG9ydCB0aGUgZXJyb3IsIGFuZCBnbyBhd2F5LgorCSAqCisJICogSWYgd2Ug ZG8gbm90IGhhdmUgdGhpcyBoYW5kbGluZyBoZXJlLCB0aGVuIHNpbmNlIHRoaXMgd29ya2VyIHBy b2Nlc3MKKwkgKiBvcGVyYXRlcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBleGNlcHRpb24gc3RhY2ss IEVSUk9ScyB0dXJuIGludG8gRkFUQUxzLgorCSAqIFRoZXJlZm9yZSwgd2UgY3JlYXRlIG91ciBv d24gZXhjZXB0aW9uIGhhbmRsZXIgdG8gY2F0Y2ggRVJST1JzLgorCSAqLworCWlmIChzaWdzZXRq bXAobG9jYWxfc2lnam1wX2J1ZiwgMSkgIT0gMCkKKwl7CisJCS8qIHNpbmNlIG5vdCB1c2luZyBQ R19UUlksIG11c3QgcmVzZXQgZXJyb3Igc3RhY2sgYnkgaGFuZCAqLworCQllcnJvcl9jb250ZXh0 X3N0YWNrID0gTlVMTDsKKworCQkvKiBQcmV2ZW50cyBpbnRlcnJ1cHRzIHdoaWxlIGNsZWFuaW5n IHVwICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgZXJyb3IgdG8g dGhlIHNlcnZlciBsb2cgKi8KKwkJRW1pdEVycm9yUmVwb3J0KCk7CisKKwkJLyoKKwkJICogV2Ug Y2FuIG5vdyBnbyBhd2F5LiAgTm90ZSB0aGF0IGJlY2F1c2Ugd2UgY2FsbGVkIEluaXRQcm9jZXNz LCBhCisJCSAqIGNhbGxiYWNrIHdhcyByZWdpc3RlcmVkIHRvIGRvIFByb2NLaWxsLCB3aGljaCB3 aWxsIGNsZWFuIHVwCisJCSAqIG5lY2Vzc2FyeSBzdGF0ZS4KKwkJICovCisJCXByb2NfZXhpdCgw KTsKKwl9CisKKwkvKiBXZSBjYW4gbm93IGhhbmRsZSBlcmVwb3J0KEVSUk9SKSAqLworCVBHX2V4 Y2VwdGlvbl9zdGFjayA9ICZsb2NhbF9zaWdqbXBfYnVmOworCisJLyoKKwkgKiBVbmJsb2NrIHNp Z25hbHMgKHRoZXkgd2VyZSBibG9ja2VkIHdoZW4gdGhlIHBvc3RtYXN0ZXIgZm9ya2VkIHVzKQor CSAqLworCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmVW5CbG9ja1NpZywgTlVMTCk7CisKKwlk Ym5hbWUgPSB3YWl0X2Zvcl92YWxpZF9wYXJhbXNfYW5kX2dldF9kYm5hbWUoKTsKIAogCS8qCiAJ ICogQ29ubmVjdCB0byB0aGUgZGF0YWJhc2Ugc3BlY2lmaWVkIGJ5IHVzZXIgaW4gcHJpbWFyeV9j b25uaW5mby4gV2UgbmVlZAogCSAqIGEgZGF0YWJhc2UgY29ubmVjdGlvbiBmb3Igd2FscmN2X2V4 ZWMgdG8gd29yay4gUGxlYXNlIHNlZSBjb21tZW50cyBhdG9wCiAJICogbGlicHFyY3ZfZXhlYy4K IAkgKi8KLQlCYWNrZ3JvdW5kV29ya2VySW5pdGlhbGl6ZUNvbm5lY3Rpb24oZGJuYW1lLCBOVUxM LCAwKTsKKwlJbml0UG9zdGdyZXMoZGJuYW1lLCBJbnZhbGlkT2lkLCBOVUxMLCBJbnZhbGlkT2lk LCAwLCBOVUxMKTsKKworCVNldFByb2Nlc3NpbmdNb2RlKE5vcm1hbFByb2Nlc3NpbmcpOwogCiAJ LyoKIAkgKiBFc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHByaW1hcnkgc2VydmVyIGZv ciBzbG90cwpAQCAtMTA3MywyNiArMTIyMSwyOSBAQCBSZXBsU2xvdFN5bmNXb3JrZXJNYWluKERh dHVtIG1haW5fYXJnKQogCSAqIGNhc2NhZGluZyBzdGFuZGJ5IGFuZCB2YWxpZGF0ZXMgcHJpbWFy eV9zbG90X25hbWUgZm9yCiAJICogbm9uLWNhc2NhZGluZy1zdGFuZGJ5cy4KIAkgKi8KLQljaGVj a19wcmltYXJ5X2luZm8od3Jjb25uLCAmYW1fY2FzY2FkaW5nX3N0YW5kYnkpOworCWNoZWNrX3By aW1hcnlfaW5mbyh3cmNvbm4sICZhbV9jYXNjYWRpbmdfc3RhbmRieSwgJnByaW1hcnlfc2xvdF9p bnZhbGlkKTsKIAogCS8qIE1haW4gd2FpdCBsb29wICovCiAJZm9yICg7OykKIAl7CiAJCWJvb2wJ CXNvbWVfc2xvdF91cGRhdGVkID0gZmFsc2U7CisJCWJvb2wJCXJlY2hlY2tfcHJpbWFyeV9pbmZv ID0gYW1fY2FzY2FkaW5nX3N0YW5kYnkgfHwgcHJpbWFyeV9zbG90X2ludmFsaWQ7CiAKIAkJUHJv Y2Vzc1Nsb3RTeW5jSW50ZXJydXB0cyh3cmNvbm4pOwogCi0JCWlmICghYW1fY2FzY2FkaW5nX3N0 YW5kYnkpCisJCWlmICghcmVjaGVja19wcmltYXJ5X2luZm8pCiAJCQlzb21lX3Nsb3RfdXBkYXRl ZCA9IHN5bmNocm9uaXplX3Nsb3RzKHdyY29ubik7CisJCWVsc2UgaWYgKHByaW1hcnlfc2xvdF9p bnZhbGlkKQorCQkJZXJlcG9ydChMT0csIGVycm1zZygic2tpcHBpbmcgc2xvdCBzeW5jaHJvbml6 YXRpb24iKSk7CiAKLQkJd2FpdF9mb3Jfc2xvdF9hY3Rpdml0eShzb21lX3Nsb3RfdXBkYXRlZCwg YW1fY2FzY2FkaW5nX3N0YW5kYnkpOworCQl3YWl0X2Zvcl9zbG90X2FjdGl2aXR5KHNvbWVfc2xv dF91cGRhdGVkLCByZWNoZWNrX3ByaW1hcnlfaW5mbyk7CiAKIAkJLyoKIAkJICogSWYgdGhlIHN0 YW5kYnkgd2FzIHByb21vdGVkIHRoZW4gd2hhdCB3YXMgcHJldmlvdXNseSBhIGNhc2NhZGluZwog CQkgKiBzdGFuZGJ5IG1pZ2h0IG5vIGxvbmdlciBiZSBvbmUsIHNvIHJlY2hlY2sgZWFjaCB0aW1l LgogCQkgKi8KLQkJaWYgKGFtX2Nhc2NhZGluZ19zdGFuZGJ5KQotCQkJY2hlY2tfcHJpbWFyeV9p bmZvKHdyY29ubiwgJmFtX2Nhc2NhZGluZ19zdGFuZGJ5KTsKKwkJaWYgKHJlY2hlY2tfcHJpbWFy eV9pbmZvKQorCQkJY2hlY2tfcHJpbWFyeV9pbmZvKHdyY29ubiwgJmFtX2Nhc2NhZGluZ19zdGFu ZGJ5LCAmcHJpbWFyeV9zbG90X2ludmFsaWQpOwogCX0KIAogCS8qCkBAIC0xMTA4LDcgKzEyNTks NyBAQCBSZXBsU2xvdFN5bmNXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogYm9vbAogSXNMb2dp Y2FsU2xvdFN5bmNXb3JrZXIodm9pZCkKIHsKLQlyZXR1cm4gU2xvdFN5bmNXb3JrZXItPnBpZCA9 PSBNeVByb2NQaWQ7CisJcmV0dXJuIGFtX3Nsb3RzeW5jX3dvcmtlcjsKIH0KIAogLyoKQEAgLTEx MzgsNyArMTI4OSw3IEBAIFNodXREb3duU2xvdFN5bmModm9pZCkKIAkJLyogV2FpdCBhIGJpdCwg d2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8gd2FpdCBsb25nICovCiAJCXJjID0gV2FpdExhdGNo KE15TGF0Y2gsCiAJCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09O X1BNX0RFQVRILAotCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfQkdXT1JLRVJfU0hVVERPV04pOwor CQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfUkVQTF9TTE9UU1lOQ19TSFVURE9XTik7CiAKIAkJaWYg KHJjICYgV0xfTEFUQ0hfU0VUKQogCQl7CkBAIC0xMTgxLDQyICsxMzMyLDkyIEBAIFNsb3RTeW5j V29ya2VyU2htZW1Jbml0KHZvaWQpCiAJfQogfQogCisjaWZkZWYgRVhFQ19CQUNLRU5ECiAvKgot ICogUmVnaXN0ZXIgdGhlIGJhY2tncm91bmQgd29ya2VyIGZvciBzbG90cyBzeW5jaHJvbml6YXRp b24gcHJvdmlkZWQKLSAqIGVuYWJsZV9zeW5jc2xvdCBpcyBPTi4KKyAqIFRoZSBmb3JrZXhlYyBy b3V0aW5lIGZvciB0aGUgc2xvdCBzeW5jIHdvcmtlciBwcm9jZXNzLgorICoKKyAqIEZvcm1hdCB1 cCB0aGUgYXJnbGlzdCwgdGhlbiBmb3JrIGFuZCBleGVjLgogICovCi12b2lkCi1TbG90U3luY1dv cmtlclJlZ2lzdGVyKHZvaWQpCitzdGF0aWMgcGlkX3QKK3Nsb3RzeW5jd29ya2VyX2ZvcmtleGVj KHZvaWQpCiB7Ci0JQmFja2dyb3VuZFdvcmtlciBiZ3c7CisJY2hhcgkgICAqYXZbMTBdOworCWlu dAkJCWFjID0gMDsKIAotCWlmICghZW5hYmxlX3N5bmNzbG90KQotCXsKLQkJZXJlcG9ydChMT0cs Ci0JCQkJZXJybXNnKCJza2lwcGluZyBzbG90IHN5bmNocm9uaXphdGlvbiIpLAotCQkJCWVycmRl dGFpbCgiXCJlbmFibGVfc3luY3Nsb3RcIiBpcyBkaXNhYmxlZC4iKSk7Ci0JCXJldHVybjsKLQl9 CisJYXZbYWMrK10gPSAicG9zdGdyZXMiOworCWF2W2FjKytdID0gIi0tZm9ya3Nzd29ya2VyIjsK KwlhdlthYysrXSA9IE5VTEw7CQkJLyogZmlsbGVkIGluIGJ5IHBvc3RtYXN0ZXJfZm9ya2V4ZWMg Ki8KKwlhdlthY10gPSBOVUxMOwogCi0JbWVtc2V0KCZiZ3csIDAsIHNpemVvZihiZ3cpKTsKKwlB c3NlcnQoYWMgPCBsZW5ndGhvZihhdikpOwogCi0JLyogV2UgbmVlZCBkYXRhYmFzZSBjb25uZWN0 aW9uIHdoaWNoIG5lZWRzIHNoYXJlZC1tZW1vcnkgYWNjZXNzIGFzIHdlbGwgKi8KLQliZ3cuYmd3 X2ZsYWdzID0gQkdXT1JLRVJfU0hNRU1fQUNDRVNTIHwKLQkJQkdXT1JLRVJfQkFDS0VORF9EQVRB QkFTRV9DT05ORUNUSU9OOworCXJldHVybiBwb3N0bWFzdGVyX2ZvcmtleGVjKGFjLCBhdik7Cit9 CisjZW5kaWYKIAotCS8qIFN0YXJ0IGFzIHNvb24gYXMgYSBjb25zaXN0ZW50IHN0YXRlIGhhcyBi ZWVuIHJlYWNoZWQgaW4gYSBob3Qgc3RhbmRieSAqLwotCWJndy5iZ3dfc3RhcnRfdGltZSA9IEJn V29ya2VyU3RhcnRfQ29uc2lzdGVudFN0YXRlX0hvdFN0YW5kYnk7CisvKgorICogU2xvdFN5bmNX b3JrZXJDYW5SZXN0YXJ0CisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSB3b3JrZXIgaXMgYWxs b3dlZCB0byByZXN0YXJ0IGlmIGVub3VnaCB0aW1lIGhhcworICogcGFzc2VkIChTTE9UU1lOQ19S RVNUQVJUX0lOVEVSVkFMX1NFQykgc2luY2UgaXQgd2FzIGxhdW5jaGVkIGxhc3QuCisgKiBPdGhl cndpc2UgcmV0dXJucyBmYWxzZS4KKyAqCisgKiBUaGlzIGlzIGEgc2FmZXR5IHZhbHZlIHRvIHBy b3RlY3QgYWdhaW5zdCBjb250aW51b3VzIHJlc3Bhd24gYXR0ZW1wdHMgaWYgdGhlCisgKiB3b3Jr ZXIgaXMgZHlpbmcgaW1tZWRpYXRlbHkgYXQgbGF1bmNoLiBOb3RlIHRoYXQgc2luY2Ugd2Ugd2ls bCByZXRyeSB0bworICogbGF1bmNoIHRoZSB3b3JrZXIgZnJvbSB0aGUgcG9zdG1hc3RlciBtYWlu IGxvb3AsIHdlIHdpbGwgZ2V0IGFub3RoZXIKKyAqIGNoYW5jZSBsYXRlci4KKyAqLworYm9vbAor U2xvdFN5bmNXb3JrZXJDYW5SZXN0YXJ0KHZvaWQpCit7CisjZGVmaW5lIFNMT1RTWU5DX1JFU1RB UlRfSU5URVJWQUxfU0VDIDEwCiAKLQlzbnByaW50ZihiZ3cuYmd3X2xpYnJhcnlfbmFtZSwgTUFY UEdQQVRILCAicG9zdGdyZXMiKTsKLQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJH V19NQVhMRU4sICJSZXBsU2xvdFN5bmNXb3JrZXJNYWluIik7Ci0Jc25wcmludGYoYmd3LmJnd19u YW1lLCBCR1dfTUFYTEVOLAotCQkJICJyZXBsaWNhdGlvbiBzbG90IHN5bmMgd29ya2VyIik7Ci0J c25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLAotCQkJICJzbG90IHN5bmMgd29ya2Vy Iik7CisJc3RhdGljIHRpbWVfdCBsYXN0X3Nsb3RzeW5jX3N0YXJ0X3RpbWUgPSAwOworCXRpbWVf dAkJY3VydGltZSA9IHRpbWUoTlVMTCk7CiAKLQliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9IEJHV19E RUZBVUxUX1JFU1RBUlRfSU5URVJWQUw7Ci0JYmd3LmJnd19ub3RpZnlfcGlkID0gMDsKLQliZ3cu Ymd3X21haW5fYXJnID0gKERhdHVtKSAwOworCS8qIFJldHVybiBmYWxzZSBpZiB0b28gc29vbiBz aW5jZSBsYXN0IHN0YXJ0LiAqLworCWlmICgodW5zaWduZWQgaW50KSAoY3VydGltZSAtIGxhc3Rf c2xvdHN5bmNfc3RhcnRfdGltZSkgPAorCQkodW5zaWduZWQgaW50KSBTTE9UU1lOQ19SRVNUQVJU X0lOVEVSVkFMX1NFQykKKwkJcmV0dXJuIGZhbHNlOworCisJbGFzdF9zbG90c3luY19zdGFydF90 aW1lID0gY3VydGltZTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIE1haW4gZW50cnkgcG9p bnQgZm9yIHNsb3Qgc3luYyB3b3JrZXIgcHJvY2VzcywgdG8gYmUgY2FsbGVkIGZyb20gdGhlCisg KiBwb3N0bWFzdGVyLgorICovCitpbnQKK1N0YXJ0U2xvdFN5bmNXb3JrZXIodm9pZCkKK3sKKwlw aWRfdAkJcGlkOworCisjaWZkZWYgRVhFQ19CQUNLRU5ECisJc3dpdGNoICgocGlkID0gc2xvdHN5 bmN3b3JrZXJfZm9ya2V4ZWMoKSkpCisJeworI2Vsc2UKKwlzd2l0Y2ggKChwaWQgPSBmb3JrX3By b2Nlc3MoKSkpCisJeworCQljYXNlIDA6CisJCQkvKiBpbiBwb3N0bWFzdGVyIGNoaWxkIC4uLiAq LworCQkJSW5pdFBvc3RtYXN0ZXJDaGlsZCgpOworCisJCQkvKiBDbG9zZSB0aGUgcG9zdG1hc3Rl cidzIHNvY2tldHMgKi8KKwkJCUNsb3NlUG9zdG1hc3RlclBvcnRzKGZhbHNlKTsKKworCQkJUmVw bFNsb3RTeW5jV29ya2VyTWFpbigwLCBOVUxMKTsKKwkJCWJyZWFrOworI2VuZGlmCisJCWNhc2Ug LTE6CisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygiY291bGQgbm90IGZvcmsgc2xvdCBz eW5jIHdvcmtlciBwcm9jZXNzOiAlbSIpKSk7CisJCQlyZXR1cm4gMDsKKworCQlkZWZhdWx0Ogor CQkJcmV0dXJuIChpbnQpIHBpZDsKKwl9CiAKLQlSZWdpc3RlckJhY2tncm91bmRXb3JrZXIoJmJn dyk7CisJLyogc2hvdWxkbid0IGdldCBoZXJlICovCisJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3Byb2MuYwppbmRleCBlNTk3NzU0OGZlLi5mMTllNWZhZWFmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9wcm9jLmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90Lmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3dhbHNlbmRlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCkBAIC0zNjQsOCArMzY1LDEyIEBAIElu aXRQcm9jZXNzKHZvaWQpCiAJICogY2hpbGQ7IHRoaXMgaXMgc28gdGhhdCB0aGUgcG9zdG1hc3Rl ciBjYW4gZGV0ZWN0IGl0IGlmIHdlIGV4aXQgd2l0aG91dAogCSAqIGNsZWFuaW5nIHVwLiAgKFhY WCBhdXRvdmFjIGxhdW5jaGVyIGN1cnJlbnRseSBkb2Vzbid0IHBhcnRpY2lwYXRlIGluCiAJICog dGhpczsgaXQgcHJvYmFibHkgc2hvdWxkLikKKwkgKgorCSAqIFNsb3Qgc3luYyB3b3JrZXIgYWxz byBkb2VzIG5vdCBwYXJ0aWNpcGF0ZSBpbiBpdCwgc2VlIGNvbW1lbnRzIGF0b3AKKwkgKiAnc3Ry dWN0IGJrZW5kJyBpbiBwb3N0bWFzdGVyLmMuCiAJICovCi0JaWYgKElzVW5kZXJQb3N0bWFzdGVy ICYmICFJc0F1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3MoKSkKKwlpZiAoSXNVbmRlclBvc3RtYXN0 ZXIgJiYgIUlzQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2VzcygpICYmCisJCSFJc0xvZ2ljYWxTbG90 U3luY1dvcmtlcigpKQogCQlNYXJrUG9zdG1hc3RlckNoaWxkQWN0aXZlKCk7CiAKIAkvKgpAQCAt OTM0LDggKzkzOSwxMiBAQCBQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKQogCSAqIFRoaXMg cHJvY2VzcyBpcyBubyBsb25nZXIgcHJlc2VudCBpbiBzaGFyZWQgbWVtb3J5IGluIGFueSBtZWFu aW5nZnVsCiAJICogd2F5LCBzbyB0ZWxsIHRoZSBwb3N0bWFzdGVyIHdlJ3ZlIGNsZWFuZWQgdXAg YWNjZXB0YWJseSB3ZWxsLiAoWFhYCiAJICogYXV0b3ZhYyBsYXVuY2hlciBzaG91bGQgYmUgaW5j bHVkZWQgaGVyZSBzb21lZGF5KQorCSAqCisJICogU2xvdCBzeW5jIHdvcmtlciBpcyBhbHNvIG5v dCBhIHBvc3RtYXN0ZXIgY2hpbGQsIHNvIHNraXAgdGhpcyBzaGFyZWQKKwkgKiBtZW1vcnkgcmVs YXRlZCBwcm9jZXNzaW5nIGhlcmUuCiAJICovCi0JaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmICFJ c0F1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3MoKSkKKwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYg IUlzQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2VzcygpICYmCisJCSFJc0xvZ2ljYWxTbG90U3luY1dv cmtlcigpKQogCQlNYXJrUG9zdG1hc3RlckNoaWxkSW5hY3RpdmUoKTsKIAogCS8qIHdha2UgYXV0 b3ZhYyBsYXVuY2hlciBpZiBuZWVkZWQgLS0gc2VlIGNvbW1lbnRzIGluIEZyZWVXb3JrZXJJbmZv ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggZThjNTMwYWNkOS4uMWEzNGJkMzcxNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYwpAQCAtMzI4NiwxNyArMzI4Niw2IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAJ CQkgKi8KIAkJCXByb2NfZXhpdCgxKTsKIAkJfQotCQllbHNlIGlmIChJc0xvZ2ljYWxTbG90U3lu Y1dvcmtlcigpKQotCQl7Ci0JCQllbG9nKERFQlVHMSwKLQkJCQkgInJlcGxpY2F0aW9uIHNsb3Qg c3luYyB3b3JrZXIgaXMgc2h1dHRpbmcgZG93biBkdWUgdG8gYWRtaW5pc3RyYXRvciBjb21tYW5k Iik7Ci0KLQkJCS8qCi0JCQkgKiBTbG90IHN5bmMgd29ya2VyIGNhbiBiZSBzdG9wcGVkIGF0IGFu eSB0aW1lLiBVc2UgZXhpdCBzdGF0dXMgMQotCQkJICogc28gdGhlIGJhY2tncm91bmQgd29ya2Vy IGlzIHJlc3RhcnRlZC4KLQkJCSAqLwotCQkJcHJvY19leGl0KDEpOwotCQl9CiAJCWVsc2UgaWYg KElzQmFja2dyb3VuZFdvcmtlcikKIAkJCWVyZXBvcnQoRkFUQUwsCiAJCQkJCShlcnJjb2RlKEVS UkNPREVfQURNSU5fU0hVVERPV04pLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X2lvLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8u YwppbmRleCA0M2MzOTNkNmZlLi45ZDZlMDY3MzgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfaW8uYwpAQCAtMzM4LDYgKzMzOCw3IEBAIHBnc3RhdF90cmFja3NfaW9fYmt0eXBl KEJhY2tlbmRUeXBlIGJrdHlwZSkKIAkJY2FzZSBCX0JHX1dPUktFUjoKIAkJY2FzZSBCX0JHX1dS SVRFUjoKIAkJY2FzZSBCX0NIRUNLUE9JTlRFUjoKKwkJY2FzZSBCX1NMT1RTWU5DX1dPUktFUjoK IAkJY2FzZSBCX1NUQU5EQUxPTkVfQkFDS0VORDoKIAkJY2FzZSBCX1NUQVJUVVA6CiAJCWNhc2Ug Ql9XQUxfU0VOREVSOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudF9uYW1lcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50 X25hbWVzLnR4dAppbmRleCAzZTYyMDMzMjJhLi40YzBlZTJkZDI5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dAorKysgYi9zcmMvYmFj a2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dApAQCAtNTQsNiArNTQsNyBA QCBMT0dJQ0FMX0xBVU5DSEVSX01BSU4JIldhaXRpbmcgaW4gbWFpbiBsb29wIG9mIGxvZ2ljYWwg cmVwbGljYXRpb24gbGF1bmNoZXIgcHJvYwogTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOCSJX YWl0aW5nIGluIG1haW4gbG9vcCBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5 IHByb2Nlc3MuIgogUkVDT1ZFUllfV0FMX1NUUkVBTQkiV2FpdGluZyBpbiBtYWluIGxvb3Agb2Yg c3RhcnR1cCBwcm9jZXNzIGZvciBXQUwgdG8gYXJyaXZlLCBkdXJpbmcgc3RyZWFtaW5nIHJlY292 ZXJ5LiIKIFJFUExfU0xPVFNZTkNfTUFJTgkiV2FpdGluZyBpbiBtYWluIGxvb3Agb2Ygc2xvdCBz eW5jIHdvcmtlci4iCitSRVBMX1NMT1RTWU5DX1NIVVRET1dOCSJXYWl0aW5nIGZvciBzbG90IHN5 bmMgd29ya2VyIHRvIHNodXQgZG93bi4iCiBTWVNMT0dHRVJfTUFJTgkiV2FpdGluZyBpbiBtYWlu IGxvb3Agb2Ygc3lzbG9nZ2VyIHByb2Nlc3MuIgogV0FMX1JFQ0VJVkVSX01BSU4JIldhaXRpbmcg aW4gbWFpbiBsb29wIG9mIFdBTCByZWNlaXZlciBwcm9jZXNzLiIKIFdBTF9TRU5ERVJfTUFJTgki V2FpdGluZyBpbiBtYWluIGxvb3Agb2YgV0FMIHNlbmRlciBwcm9jZXNzLiIKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2lu aXQvbWlzY2luaXQuYwppbmRleCAyM2Y3N2E1OWU1Li4zMDlhYTMzYTYyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9taXNjaW5pdC5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3BnYXJjaC5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3Jr ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCkBAIC0yOTMsNiArMjk0LDkgQEAgR2V0QmFja2Vu ZFR5cGVEZXNjKEJhY2tlbmRUeXBlIGJhY2tlbmRUeXBlKQogCQljYXNlIEJfTE9HR0VSOgogCQkJ YmFja2VuZERlc2MgPSAibG9nZ2VyIjsKIAkJCWJyZWFrOworCQljYXNlIEJfU0xPVFNZTkNfV09S S0VSOgorCQkJYmFja2VuZERlc2MgPSAic2xvdHN5bmN3b3JrZXIiOworCQkJYnJlYWs7CiAJCWNh c2UgQl9TVEFOREFMT05FX0JBQ0tFTkQ6CiAJCQliYWNrZW5kRGVzYyA9ICJzdGFuZGFsb25lIGJh Y2tlbmQiOwogCQkJYnJlYWs7CkBAIC04MzUsOSArODM5LDEwIEBAIEluaXRpYWxpemVTZXNzaW9u VXNlcklkU3RhbmRhbG9uZSh2b2lkKQogewogCS8qCiAJICogVGhpcyBmdW5jdGlvbiBzaG91bGQg b25seSBiZSBjYWxsZWQgaW4gc2luZ2xlLXVzZXIgbW9kZSwgaW4gYXV0b3ZhY3V1bQotCSAqIHdv cmtlcnMsIGFuZCBpbiBiYWNrZ3JvdW5kIHdvcmtlcnMuCisJICogd29ya2VycywgaW4gc2xvdCBz eW5jIHdvcmtlciBhbmQgaW4gYmFja2dyb3VuZCB3b3JrZXJzLgogCSAqLwotCUFzc2VydCghSXNV bmRlclBvc3RtYXN0ZXIgfHwgSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpIHx8IElzQmFja2dy b3VuZFdvcmtlcik7CisJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3RlciB8fCBJc0F1dG9WYWN1dW1X b3JrZXJQcm9jZXNzKCkgfHwKKwkJICAgSXNMb2dpY2FsU2xvdFN5bmNXb3JrZXIoKSB8fCBJc0Jh Y2tncm91bmRXb3JrZXIpOwogCiAJLyogY2FsbCBvbmx5IG9uY2UgKi8KIAlBc3NlcnQoIU9pZElz VmFsaWQoQXV0aGVudGljYXRlZFVzZXJJZCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9wb3N0aW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmlu ZGV4IDFhZDMzNjcxNTkuLmE1YWYwZjQxMGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMK QEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9z bG90LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9mZC5oIgpAQCAtODc0LDEwICs4NzUsMTEgQEAgSW5pdFBvc3RncmVz KGNvbnN0IGNoYXIgKmluX2RibmFtZSwgT2lkIGRib2lkLAogCSAqIFBlcmZvcm0gY2xpZW50IGF1 dGhlbnRpY2F0aW9uIGlmIG5lY2Vzc2FyeSwgdGhlbiBmaWd1cmUgb3V0IG91cgogCSAqIHBvc3Rn cmVzIHVzZXIgSUQsIGFuZCBzZWUgaWYgd2UgYXJlIGEgc3VwZXJ1c2VyLgogCSAqCi0JICogSW4g c3RhbmRhbG9uZSBtb2RlIGFuZCBpbiBhdXRvdmFjdXVtIHdvcmtlciBwcm9jZXNzZXMsIHdlIHVz ZSBhIGZpeGVkCi0JICogSUQsIG90aGVyd2lzZSB3ZSBmaWd1cmUgaXQgb3V0IGZyb20gdGhlIGF1 dGhlbnRpY2F0ZWQgdXNlciBuYW1lLgorCSAqIEluIHN0YW5kYWxvbmUgbW9kZSwgYXV0b3ZhY3V1 bSB3b3JrZXIgcHJvY2Vzc2VzIGFuZCBzbG90IHN5bmMgd29ya2VyCisJICogcHJvY2Vzcywgd2Ug dXNlIGEgZml4ZWQgSUQsIG90aGVyd2lzZSB3ZSBmaWd1cmUgaXQgb3V0IGZyb20gdGhlCisJICog YXV0aGVudGljYXRlZCB1c2VyIG5hbWUuCiAJICovCi0JaWYgKGJvb3RzdHJhcCB8fCBJc0F1dG9W YWN1dW1Xb3JrZXJQcm9jZXNzKCkpCisJaWYgKGJvb3RzdHJhcCB8fCBJc0F1dG9WYWN1dW1Xb3Jr ZXJQcm9jZXNzKCkgfHwgSXNMb2dpY2FsU2xvdFN5bmNXb3JrZXIoKSkKIAl7CiAJCUluaXRpYWxp emVTZXNzaW9uVXNlcklkU3RhbmRhbG9uZSgpOwogCQlhbV9zdXBlcnVzZXIgPSB0cnVlOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCBmZTA0NGMxNmRlLi4zYWYxMWIyYjgwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMjA1Niw3ICsyMDU2LDcgQEAgc3Ry dWN0IGNvbmZpZ19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAl9LAogCiAJewotCQl7ImVu YWJsZV9zeW5jc2xvdCIsIFBHQ19QT1NUTUFTVEVSLCBSRVBMSUNBVElPTl9TVEFOREJZLAorCQl7 ImVuYWJsZV9zeW5jc2xvdCIsIFBHQ19TSUdIVVAsIFJFUExJQ0FUSU9OX1NUQU5EQlksCiAJCQln ZXR0ZXh0X25vb3AoIkVuYWJsZXMgYSBwaHlzaWNhbCBzdGFuZGJ5IHRvIHN5bmNocm9uaXplIGxv Z2ljYWwgZmFpbG92ZXIgc2xvdHMgZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIuIiksCiAJCX0sCiAJ CSZlbmFibGVfc3luY3Nsb3QsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBi L3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDBiMDFjMWYwOTMuLjY1ODE5Y2I3YTcgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2Nh ZG1pbi5oCkBAIC0zMzIsNiArMzMyLDcgQEAgdHlwZWRlZiBlbnVtIEJhY2tlbmRUeXBlCiAJQl9C R19XUklURVIsCiAJQl9DSEVDS1BPSU5URVIsCiAJQl9MT0dHRVIsCisJQl9TTE9UU1lOQ19XT1JL RVIsCiAJQl9TVEFOREFMT05FX0JBQ0tFTkQsCiAJQl9TVEFSVFVQLAogCUJfV0FMX1JFQ0VJVkVS LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlci5oIGIvc3JjL2lu Y2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlci5oCmluZGV4IDcwOTJmYzcyYzYuLjIyZmM0OWVjMjcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaAorKysgYi9zcmMv aW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyLmgKQEAgLTc5LDcgKzc5LDYgQEAgdHlwZWRlZiBl bnVtCiAJQmdXb3JrZXJTdGFydF9Qb3N0bWFzdGVyU3RhcnQsCiAJQmdXb3JrZXJTdGFydF9Db25z aXN0ZW50U3RhdGUsCiAJQmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkLAotCUJnV29ya2Vy U3RhcnRfQ29uc2lzdGVudFN0YXRlX0hvdFN0YW5kYnksCiB9IEJnV29ya2VyU3RhcnRUaW1lOwog CiAjZGVmaW5lIEJHV19ERUZBVUxUX1JFU1RBUlRfSU5URVJWQUwJNjAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggMjE2NzcyMDk3MS4uYTA0ODE1OTY5YiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTMyOSw5ICsz MjksMTEgQEAgZXh0ZXJuIHZvaWQgcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2sodm9pZCk7 CiAKIGV4dGVybiB2b2lkIHBhX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbywKIAkJCQkJCSAgIFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7Ci0KLWV4dGVybiB2b2lkIFJl cGxTbG90U3luY1dvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOwotZXh0ZXJuIHZvaWQgU2xvdFN5 bmNXb3JrZXJSZWdpc3Rlcih2b2lkKTsKKyNpZmRlZiBFWEVDX0JBQ0tFTkQKK2V4dGVybiB2b2lk IFJlcGxTbG90U3luY1dvcmtlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgcGdfYXR0cmli dXRlX25vcmV0dXJuKCk7CisjZW5kaWYKK2V4dGVybiBpbnQJU3RhcnRTbG90U3luY1dvcmtlcih2 b2lkKTsKK2V4dGVybiBib29sIFNsb3RTeW5jV29ya2VyQ2FuUmVzdGFydCh2b2lkKTsKIGV4dGVy biB2b2lkIFNodXREb3duU2xvdFN5bmModm9pZCk7CiBleHRlcm4gdm9pZCBTbG90U3luY1dvcmtl clNobWVtSW5pdCh2b2lkKTsKIAotLSAKMi4zNC4xCgo= --0000000000005d8a070610293ea4 Content-Type: application/octet-stream; name="v74-0003-Allow-logical-walsenders-to-wait-for-the-physica.patch" Content-Disposition: attachment; filename="v74-0003-Allow-logical-walsenders-to-wait-for-the-physica.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls0cxc592 RnJvbSAwMGY5OWE2MDdjNGM0NDU3OWM1OTExMTg2YTUwZWVmMzlhNDgwMzEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMzAgSmFuIDIwMjQgMDk6MzA6NTAgKzA1MzAKU3ViamVjdDogW1BBVENIIHY3 NCAzLzVdIEFsbG93IGxvZ2ljYWwgd2Fsc2VuZGVycyB0byB3YWl0IGZvciB0aGUgcGh5c2ljYWwK ClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG1lY2hhbmlzbSB0byBlbnN1cmUgdGhhdCBwaHlzaWNh bCBzdGFuZGJ5IHNlcnZlcnMsCndoaWNoIGFyZSBwb3RlbnRpYWwgZmFpbG92ZXIgY2FuZGlkYXRl cywgaGF2ZSByZWNlaXZlZCBhbmQgZmx1c2hlZCBjaGFuZ2VzCmJlZm9yZSBtYWtpbmcgdGhlbSB2 aXNpYmxlIHRvIHN1YnNjcmliZXJzLiBCeSBkb2luZyBzbywgaXQgZ3VhcmFudGVlcyB0aGF0CnRo ZSBwcm9tb3RlZCBzdGFuZGJ5IHNlcnZlciBpcyBub3QgbGFnZ2luZyBiZWhpbmQgdGhlIHN1YnNj cmliZXJzIHdoZW4gYQpmYWlsb3ZlciBpcyBuZWNlc3NhcnkuCgpBIG5ldyBwYXJhbWV0ZXIgbmFt ZWQgc3RhbmRieV9zbG90X25hbWVzIGlzIGludHJvZHVjZWQuIFRoZSBsb2dpY2FsCndhbHNlbmRl ciBub3cgZ3VhcmFudGVlcyB0aGF0IGFsbCBsb2NhbCBjaGFuZ2VzIGFyZSBzZW50IGFuZCBmbHVz aGVkIHRvCnRoZSBzdGFuZGJ5IHNlcnZlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgcmVwbGljYXRp b24gc2xvdHMgc3BlY2lmaWVkIGluCnN0YW5kYnlfc2xvdF9uYW1lcyBiZWZvcmUgc2VuZGluZyB0 aG9zZSBjaGFuZ2VzIHRvIHRoZSBzdWJzY3JpYmVyLgoKQWRkaXRpb25hbGx5LCBUaGUgU1FMIGZ1 bmN0aW9ucyBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMgYW5kCnBnX3JlcGxpY2F0aW9uX3Ns b3RfYWR2YW5jZSBhcmUgbW9kaWZpZWQgdG8gd2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9uIHNsb3Rz Cm1lbnRpb25lZCBpbiBzdGFuZGJ5X3Nsb3RfbmFtZXMgdG8gY2F0Y2ggdXAgYmVmb3JlIHJldHVy bmluZyB0aGUgY2hhbmdlcwp0byB0aGUgdXNlci4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgICAgICAgICAgICAgICAgICAgICAgfCAgMjQgKysKIGRvYy9zcmMvc2dtbC9sb2dpY2FsZGVj b2Rpbmcuc2dtbCAgICAgICAgICAgICB8ICAgOCArCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9s b2dpY2FsZnVuY3MuYyAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9zbG90c3luYy5jICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Qu YyAgICAgICAgICAgICAgICB8IDM0MiArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Nsb3RmdW5jcy5jICAgICAgICAgICB8ICAgOSArCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgfCAxMTEgKysrKystCiAuLi4vdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgIDE0ICsKIHNyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMiArCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9zbG90LmggICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dhbHNlbmRlcl9wcml2YXRlLmggICB8ICAgNyArCiBzcmMvaW5jbHVkZS91dGlscy9ndWNfaG9v a3MuaCAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDZfbG9n aWNhbF9kZWNvZGluZy5wbCAgIHwgICAzICstCiAuLi4vdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9z bG90c19zeW5jLnBsICAgICAgfCAyMjggKysrKysrKysrKy0tCiAxNiBmaWxlcyBjaGFuZ2VkLCA3 MzUgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDc1YmI0OGI3 OTUuLmMxZTM0Y2I3NTIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ0MjAsNiArNDQyMCwzMCBAQCByZXN0b3Jl X2NvbW1hbmQgPSAnY29weSAiQzpcXHNlcnZlclxcYXJjaGl2ZWRpclxcJWYiICIlcCInICAjIFdp bmRvd3MKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2 YXJsaXN0ZW50cnkgaWQ9Imd1Yy1zdGFuZGJ5LXNsb3QtbmFtZXMiIHhyZWZsYWJlbD0ic3RhbmRi eV9zbG90X25hbWVzIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPnN0YW5kYnlfc2xvdF9uYW1lczwv dmFybmFtZT4gKDx0eXBlPnN0cmluZzwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAg IDxwcmltYXJ5Pjx2YXJuYW1lPnN0YW5kYnlfc2xvdF9uYW1lczwvdmFybmFtZT4gY29uZmlndXJh dGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVy bT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgTGlzdCBvZiBwaHlz aWNhbCBzbG90cyBndWFyYW50ZWVzIHRoYXQgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90cyB3aXRo CisgICAgICAgIGZhaWxvdmVyIGVuYWJsZWQgZG8gbm90IGNvbnN1bWUgY2hhbmdlcyB1bnRpbCB0 aG9zZSBjaGFuZ2VzIGFyZSByZWNlaXZlZAorICAgICAgICBhbmQgZmx1c2hlZCB0byBjb3JyZXNw b25kaW5nIHBoeXNpY2FsIHN0YW5kYnlzLiBJZiBhIGxvZ2ljYWwgcmVwbGljYXRpb24KKyAgICAg ICAgY29ubmVjdGlvbiBpcyBtZWFudCB0byBzd2l0Y2ggdG8gYSBwaHlzaWNhbCBzdGFuZGJ5IGFm dGVyIHRoZSBzdGFuZGJ5IGlzCisgICAgICAgIHByb21vdGVkLCB0aGUgcGh5c2ljYWwgcmVwbGlj YXRpb24gc2xvdCBmb3IgdGhlIHN0YW5kYnkgc2hvdWxkIGJlIGxpc3RlZAorICAgICAgICBoZXJl LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHN0YW5kYnlzIGNv cnJlc3BvbmRpbmcgdG8gdGhlIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3RzIGluCisgICAgICAg IDx2YXJuYW1lPnN0YW5kYnlfc2xvdF9uYW1lczwvdmFybmFtZT4gbXVzdCBjb25maWd1cmUKKyAg ICAgICAgPGxpdGVyYWw+ZW5hYmxlX3N5bmNzbG90ID0gdHJ1ZTwvbGl0ZXJhbD4gc28gdGhleSBj YW4gcmVjZWl2ZQorICAgICAgICBmYWlsb3ZlciBsb2dpY2FsIHNsb3RzIGNoYW5nZXMgZnJvbSB0 aGUgcHJpbWFyeS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bG9naWNhbGRlY29kaW5nLnNnbWwKaW5kZXggOWRmNWZmMDE0NS4uYmJlYzU4NjBhNiAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9sb2dpY2FsZGVjb2Rpbmcuc2dtbApAQCAtMzc2LDYgKzM3NiwxNCBAQCBwb3N0Z3Jlcz0jIHNl bGVjdCAqIGZyb20gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3Qn LCBOVUxMLCBOVQogICAgICA8bGl0ZXJhbD5kYm5hbWU8L2xpdGVyYWw+IGluIHRoZQogICAgICA8 bGluayBsaW5rZW5kPSJndWMtcHJpbWFyeS1jb25uaW5mbyI+PHZhcm5hbWU+cHJpbWFyeV9jb25u aW5mbzwvdmFybmFtZT48L2xpbms+CiAgICAgIHN0cmluZywgd2hpY2ggaXMgdXNlZCBmb3Igc2xv dCBzeW5jaHJvbml6YXRpb24gYW5kIGlzIGlnbm9yZWQgZm9yIHN0cmVhbWluZy4KKyAgICAgSXQn cyBhbHNvIGhpZ2hseSByZWNvbW1lbmRlZCB0aGF0IHRoZSBzYWlkIHBoeXNpY2FsIHJlcGxpY2F0 aW9uIHNsb3QKKyAgICAgaXMgbmFtZWQgaW4KKyAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXN0YW5k Ynktc2xvdC1uYW1lcyI+PHZhcm5hbWU+c3RhbmRieV9zbG90X25hbWVzPC92YXJuYW1lPjwvbGlu az4KKyAgICAgbGlzdCBvbiB0aGUgcHJpbWFyeSwgdG8gcHJldmVudCB0aGUgc3Vic2NyaWJlciBm cm9tIGNvbnN1bWluZyBjaGFuZ2VzCisgICAgIGZhc3RlciB0aGFuIHRoZSBob3Qgc3RhbmRieS4g QnV0IG9uY2Ugd2UgY29uZmlndXJlIGl0LCB0aGVuIGNlcnRhaW4gbGF0ZW5jeQorICAgICBpcyBl eHBlY3RlZCBpbiBzZW5kaW5nIGNoYW5nZXMgdG8gbG9naWNhbCBzdWJzY3JpYmVycyBkdWUgdG8g d2FpdCBvbgorICAgICBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90cyBpbgorICAgICA8bGluayBs aW5rZW5kPSJndWMtc3RhbmRieS1zbG90LW5hbWVzIj48dmFybmFtZT5zdGFuZGJ5X3Nsb3RfbmFt ZXM8L3Zhcm5hbWU+PC9saW5rPgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXggYjAwODFkM2Nl NS4uNWZmNzYxZGQ2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9sb2dpY2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWxmdW5jcy5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVj b2RlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL21lc3NhZ2UuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgpAQCAtMTA5LDYgKzExMCw3IEBAIHBnX2xvZ2ljYWxfc2xvdF9n ZXRfY2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJv b2wgYmluCiAJTWVtb3J5Q29udGV4dCBwZXJfcXVlcnlfY3R4OwogCU1lbW9yeUNvbnRleHQgb2xk Y29udGV4dDsKIAlYTG9nUmVjUHRyCWVuZF9vZl93YWw7CisJWExvZ1JlY1B0cgl3YWl0X2Zvcl93 YWxfbHNuOwogCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eDsKIAlSZXNvdXJjZU93bmVyIG9s ZF9yZXNvd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOwogCUFycmF5VHlwZSAgKmFycjsKQEAg LTIyOCw2ICsyMzAsMTcgQEAgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rp b25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29uZmlybSwgYm9vbCBiaW4KIAkJCQkJCQlOYW1lU3Ry KE15UmVwbGljYXRpb25TbG90LT5kYXRhLnBsdWdpbiksCiAJCQkJCQkJZm9ybWF0X3Byb2NlZHVy ZShmY2luZm8tPmZsaW5mby0+Zm5fb2lkKSkpKTsKIAorCQlpZiAoWExvZ1JlY1B0cklzSW52YWxp ZCh1cHRvX2xzbikpCisJCQl3YWl0X2Zvcl93YWxfbHNuID0gZW5kX29mX3dhbDsKKwkJZWxzZQor CQkJd2FpdF9mb3Jfd2FsX2xzbiA9IE1pbih1cHRvX2xzbiwgZW5kX29mX3dhbCk7CisKKwkJLyoK KwkJICogV2FpdCBmb3Igc3BlY2lmaWVkIHN0cmVhbWluZyByZXBsaWNhdGlvbiBzdGFuZGJ5IHNl cnZlcnMgKGlmIGFueSkKKwkJICogdG8gY29uZmlybSByZWNlaXB0IG9mIFdBTCB1cCB0byB3YWl0 X2Zvcl93YWxfbHNuLgorCQkgKi8KKwkJV2FpdEZvclN0YW5kYnlDb25maXJtYXRpb24od2FpdF9m b3Jfd2FsX2xzbik7CisKIAkJY3R4LT5vdXRwdXRfd3JpdGVyX3ByaXZhdGUgPSBwOwogCiAJCS8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKaW5kZXggNzZhNzNh YTY4MC4uMGRmYzA1N2ZmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xv dHN5bmMuYwpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMu aCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2lu Y2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dv cmtlci5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvZm9ya19wcm9jZXNzLmgiCiAjaW5jbHVkZSAi cG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCA2MDVkZmIw NDI2Li4yNzNhMzhmYWZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC00NiwxNCArNDYsMTkg QEAKICNpbmNsdWRlICJjb21tb24vc3RyaW5nLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgorI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgorI2luY2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCisjaW5jbHVkZSAidXRpbHMvdmFybGVuYS5oIgogCiAvKgogICogUmVwbGljYXRpb24gc2xv dCBvbi1kaXNrIGRhdGEgc3RydWN0dXJlLgpAQCAtMTAwLDEwICsxMDUsMTkgQEAgUmVwbGljYXRp b25TbG90Q3RsRGF0YSAqUmVwbGljYXRpb25TbG90Q3RsID0gTlVMTDsKIC8qIE15IGJhY2tlbmQn cyByZXBsaWNhdGlvbiBzbG90IGluIHRoZSBzaGFyZWQgbWVtb3J5IGFycmF5ICovCiBSZXBsaWNh dGlvblNsb3QgKk15UmVwbGljYXRpb25TbG90ID0gTlVMTDsKIAotLyogR1VDIHZhcmlhYmxlICov CisvKiBHVUMgdmFyaWFibGVzICovCiBpbnQJCQltYXhfcmVwbGljYXRpb25fc2xvdHMgPSAxMDsg LyogdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlcGxpY2F0aW9uCiAJCQkJCQkJCQkJICogc2xvdHMg Ki8KIAorLyoKKyAqIFRoaXMgR1VDIGxpc3RzIHN0cmVhbWluZyByZXBsaWNhdGlvbiBzdGFuZGJ5 IHNlcnZlciBzbG90IG5hbWVzIHRoYXQKKyAqIGxvZ2ljYWwgV0FMIHNlbmRlciBwcm9jZXNzZXMg d2lsbCB3YWl0IGZvci4KKyAqLworY2hhcgkgICAqc3RhbmRieV9zbG90X25hbWVzOworCisvKiBU aGlzIGlzIHBhcnNlZCBhbmQgY2FjaGVkIGxpc3QgZm9yIHJhdyBzdGFuZGJ5X3Nsb3RfbmFtZXMu ICovCitzdGF0aWMgTGlzdCAqc3RhbmRieV9zbG90X25hbWVzX2xpc3QgPSBOSUw7CisKIHN0YXRp YyB2b2lkIFJlcGxpY2F0aW9uU2xvdFNobWVtRXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0 YXRpYyB2b2lkIFJlcGxpY2F0aW9uU2xvdERyb3BQdHIoUmVwbGljYXRpb25TbG90ICpzbG90KTsK IApAQCAtMjIzNCwzICsyMjQ4LDMyOSBAQCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0IGNoYXIg Km5hbWUpCiAJCQkJKGVycm1zZygidG9vIG1hbnkgcmVwbGljYXRpb24gc2xvdHMgYWN0aXZlIGJl Zm9yZSBzaHV0ZG93biIpLAogCQkJCSBlcnJoaW50KCJJbmNyZWFzZSBtYXhfcmVwbGljYXRpb25f c2xvdHMgYW5kIHRyeSBhZ2Fpbi4iKSkpOwogfQorCisvKgorICogQSBoZWxwZXIgZnVuY3Rpb24g dG8gdmFsaWRhdGUgc2xvdHMgc3BlY2lmaWVkIGluIEdVQyBzdGFuZGJ5X3Nsb3RfbmFtZXMuCisg Ki8KK3N0YXRpYyBib29sCit2YWxpZGF0ZV9zdGFuZGJ5X3Nsb3RzKGNoYXIgKipuZXd2YWwpCit7 CisJY2hhcgkgICAqcmF3bmFtZTsKKwlMaXN0CSAgICplbGVtbGlzdDsKKwlMaXN0Q2VsbCAgICps YzsKKwlib29sCQlvazsKKworCS8qIE5lZWQgYSBtb2RpZmlhYmxlIGNvcHkgb2Ygc3RyaW5nICov CisJcmF3bmFtZSA9IHBzdHJkdXAoKm5ld3ZhbCk7CisKKwkvKiBWZXJpZnkgc3ludGF4IGFuZCBw YXJzZSBzdHJpbmcgaW50byBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgKi8KKwlvayA9IFNwbGl0SWRl bnRpZmllclN0cmluZyhyYXduYW1lLCAnLCcsICZlbGVtbGlzdCk7CisKKwlpZiAoIW9rKQorCQlH VUNfY2hlY2tfZXJyZGV0YWlsKCJMaXN0IHN5bnRheCBpcyBpbnZhbGlkLiIpOworCisJLyoKKwkg KiBJZiB0aGVyZSBpcyBhIHN5bnRheCBlcnJvciBpbiB0aGUgbmFtZSBvciBpZiB0aGUgcmVwbGlj YXRpb24gc2xvdHMnCisJICogZGF0YSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0IChpLmUuLCB3ZSBh cmUgaW4gdGhlIHN0YXJ0dXAgcHJvY2VzcyksIHNraXAKKwkgKiB0aGUgc2xvdCB2ZXJpZmljYXRp b24uCisJICovCisJaWYgKCFvayB8fCAhUmVwbGljYXRpb25TbG90Q3RsKQorCXsKKwkJcGZyZWUo cmF3bmFtZSk7CisJCWxpc3RfZnJlZShlbGVtbGlzdCk7CisJCXJldHVybiBvazsKKwl9CisKKwlm b3JlYWNoKGxjLCBlbGVtbGlzdCkKKwl7CisJCWNoYXIJICAgKm5hbWUgPSBsZmlyc3QobGMpOwor CQlSZXBsaWNhdGlvblNsb3QgKnNsb3Q7CisKKwkJc2xvdCA9IFNlYXJjaE5hbWVkUmVwbGljYXRp b25TbG90KG5hbWUsIHRydWUpOworCisJCWlmICghc2xvdCkKKwkJeworCQkJR1VDX2NoZWNrX2Vy cmRldGFpbCgicmVwbGljYXRpb24gc2xvdCBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJ CQluYW1lKTsKKwkJCW9rID0gZmFsc2U7CisJCQlicmVhazsKKwkJfQorCisJCWlmICghU2xvdElz UGh5c2ljYWwoc2xvdCkpCisJCXsKKwkJCUdVQ19jaGVja19lcnJkZXRhaWwoIlwiJXNcIiBpcyBu b3QgYSBwaHlzaWNhbCByZXBsaWNhdGlvbiBzbG90IiwKKwkJCQkJCQkJbmFtZSk7CisJCQlvayA9 IGZhbHNlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlwZnJlZShyYXduYW1lKTsKKwlsaXN0X2Zy ZWUoZWxlbWxpc3QpOworCXJldHVybiBvazsKK30KKworLyoKKyAqIEdVQyBjaGVja19ob29rIGZv ciBzdGFuZGJ5X3Nsb3RfbmFtZXMKKyAqLworYm9vbAorY2hlY2tfc3RhbmRieV9zbG90X25hbWVz KGNoYXIgKipuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSkKK3sKKwlpZiAo c3RyY21wKCpuZXd2YWwsICIiKSA9PSAwKQorCQlyZXR1cm4gdHJ1ZTsKKworCS8qCisJICogIioi IGlzIG5vdCBhY2NlcHRlZCBhcyBpbiB0aGF0IGNhc2UgcHJpbWFyeSB3aWxsIG5vdCBiZSBhYmxl IHRvIGtub3cKKwkgKiBmb3Igd2hpY2ggYWxsIHN0YW5kYnlzIHRvIHdhaXQgZm9yLiBFdmVuIGlm IHdlIGhhdmUgcGh5c2ljYWwtc2xvdHMKKwkgKiBpbmZvLCB0aGVyZSBpcyBubyB3YXkgdG8gY29u ZmlybSB3aGV0aGVyIHRoZXJlIGlzIGFueSBzdGFuZGJ5CisJICogY29uZmlndXJlZCBmb3IgdGhl IGtub3duIHBoeXNpY2FsIHNsb3RzLgorCSAqLworCWlmIChzdHJjbXAoKm5ld3ZhbCwgIioiKSA9 PSAwKQorCXsKKwkJR1VDX2NoZWNrX2VycmRldGFpbCgiXCIlc1wiIGlzIG5vdCBhY2NlcHRlZCBm b3Igc3RhbmRieV9zbG90X25hbWVzIiwKKwkJCQkJCQkqbmV3dmFsKTsKKwkJcmV0dXJuIGZhbHNl OworCX0KKworCS8qIE5vdyB2ZXJpZnkgaWYgdGhlIHNwZWNpZmllZCBzbG90cyByZWFsbHkgZXhp c3QgYW5kIGhhdmUgY29ycmVjdCB0eXBlICovCisJaWYgKCF2YWxpZGF0ZV9zdGFuZGJ5X3Nsb3Rz KG5ld3ZhbCkpCisJCXJldHVybiBmYWxzZTsKKworCSpleHRyYSA9IGd1Y19zdHJkdXAoRVJST1Is ICpuZXd2YWwpOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBHVUMgYXNzaWduX2hvb2sg Zm9yIHN0YW5kYnlfc2xvdF9uYW1lcworICovCit2b2lkCithc3NpZ25fc3RhbmRieV9zbG90X25h bWVzKGNvbnN0IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0cmEpCit7CisJTGlzdAkgICAqc3RhbmRi eV9zbG90czsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwljaGFyCSAgICpzdGFuZGJ5X3Nsb3Rf bmFtZXNfY3B5ID0gZXh0cmE7CisKKwlsaXN0X2ZyZWUoc3RhbmRieV9zbG90X25hbWVzX2xpc3Qp OworCXN0YW5kYnlfc2xvdF9uYW1lc19saXN0ID0gTklMOworCisJLyogTm8gdmFsdWUgaXMgc3Bl Y2lmaWVkIGZvciBzdGFuZGJ5X3Nsb3RfbmFtZXMuICovCisJaWYgKHN0YW5kYnlfc2xvdF9uYW1l c19jcHkgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaWYgKCFTcGxpdElkZW50aWZpZXJTdHJpbmco c3RhbmRieV9zbG90X25hbWVzX2NweSwgJywnLCAmc3RhbmRieV9zbG90cykpCisJeworCQkvKiBU aGlzIHNob3VsZCBub3QgaGFwcGVuIGlmIEdVQyBjaGVja2VkIGNoZWNrX3N0YW5kYnlfc2xvdF9u YW1lcy4gKi8KKwkJZWxvZyhFUlJPUiwgImludmFsaWQgbGlzdCBzeW50YXgiKTsKKwl9CisKKwkv KgorCSAqIFN3aXRjaCB0byB0aGUgc2FtZSBtZW1vcnkgY29udGV4dCB1bmRlciB3aGljaCBHVUMg dmFyaWFibGVzIGFyZQorCSAqIGFsbG9jYXRlZCAoR1VDTWVtb3J5Q29udGV4dCkuCisJICovCisJ b2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdldE1lbW9yeUNodW5rQ29udGV4dChzdGFu ZGJ5X3Nsb3RfbmFtZXNfY3B5KSk7CisJc3RhbmRieV9zbG90X25hbWVzX2xpc3QgPSBsaXN0X2Nv cHkoc3RhbmRieV9zbG90cyk7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisK Ky8qCisgKiBSZXR1cm4gYSBjb3B5IG9mIHN0YW5kYnlfc2xvdF9uYW1lc19saXN0IGlmIHRoZSBj b3B5IGZsYWcgaXMgc2V0IHRvIHRydWUsCisgKiBvdGhlcndpc2UgcmV0dXJuIHRoZSBvcmlnaW5h bCBsaXN0LgorICovCitMaXN0ICoKK0dldFN0YW5kYnlTbG90TGlzdChib29sIGNvcHkpCit7CisJ LyoKKwkgKiBTaW5jZSB3ZSBkbyBub3Qgc3VwcG9ydCBzeW5jaW5nIHNsb3RzIHRvIGNhc2NhZGlu ZyBzdGFuZGJ5cywgd2UgcmV0dXJuCisJICogTklMIGhlcmUgaWYgd2UgYXJlIHJ1bm5pbmcgaW4g YSBzdGFuZGJ5IHRvIGluZGljYXRlIHRoYXQgbm8gc3RhbmRieQorCSAqIHNsb3RzIG5lZWQgdG8g YmUgd2FpdGVkIGZvci4KKwkgKi8KKwlpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkpCisJCXJldHVy biBOSUw7CisKKwlpZiAoY29weSkKKwkJcmV0dXJuIGxpc3RfY29weShzdGFuZGJ5X3Nsb3RfbmFt ZXNfbGlzdCk7CisJZWxzZQorCQlyZXR1cm4gc3RhbmRieV9zbG90X25hbWVzX2xpc3Q7Cit9CisK Ky8qCisgKiBSZWxvYWQgdGhlIGNvbmZpZyBmaWxlIGFuZCByZWluaXRpYWxpemUgdGhlIHN0YW5k Ynkgc2xvdCBsaXN0IGlmIHRoZSBHVUMKKyAqIHN0YW5kYnlfc2xvdF9uYW1lcyBoYXMgY2hhbmdl ZC4KKyAqLwordm9pZAorUmVyZWFkQ29uZmlnQW5kUmVJbml0U2xvdExpc3QoTGlzdCAqKnN0YW5k Ynlfc2xvdHMpCit7CisJY2hhcgkgICAqcHJlX3N0YW5kYnlfc2xvdF9uYW1lczsKKworCS8qCisJ ICogSWYgd2UgYXJlIHJ1bm5pbmcgb24gYSBzdGFuZGJ5LCB0aGVyZSBpcyBubyBuZWVkIHRvIHJl bG9hZAorCSAqIHN0YW5kYnlfc2xvdF9uYW1lcyBzaW5jZSB3ZSBkbyBub3Qgc3VwcG9ydCBzeW5j aW5nIHNsb3RzIHRvIGNhc2NhZGluZworCSAqIHN0YW5kYnlzLgorCSAqLworCWlmIChSZWNvdmVy eUluUHJvZ3Jlc3MoKSkKKwl7CisJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCQly ZXR1cm47CisJfQorCisJcHJlX3N0YW5kYnlfc2xvdF9uYW1lcyA9IHBzdHJkdXAoc3RhbmRieV9z bG90X25hbWVzKTsKKworCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCisJaWYgKHN0 cmNtcChwcmVfc3RhbmRieV9zbG90X25hbWVzLCBzdGFuZGJ5X3Nsb3RfbmFtZXMpICE9IDApCisJ eworCQlsaXN0X2ZyZWUoKnN0YW5kYnlfc2xvdHMpOworCQkqc3RhbmRieV9zbG90cyA9IEdldFN0 YW5kYnlTbG90TGlzdCh0cnVlKTsKKwl9CisKKwlwZnJlZShwcmVfc3RhbmRieV9zbG90X25hbWVz KTsKK30KKworLyoKKyAqIEZpbHRlciB0aGUgc3RhbmRieSBzbG90cyBiYXNlZCBvbiB0aGUgc3Bl Y2lmaWVkIGxvZyBzZXF1ZW5jZSBudW1iZXIKKyAqICh3YWl0X2Zvcl9sc24pLgorICoKKyAqIFRo aXMgZnVuY3Rpb24gdXBkYXRlcyB0aGUgcGFzc2VkIHN0YW5kYnlfc2xvdHMgbGlzdCwgcmVtb3Zp bmcgYW55IHNsb3RzIHRoYXQKKyAqIGhhdmUgYWxyZWFkeSBjYXVnaHQgdXAgdG8gb3Igc3VycGFz c2VkIHRoZSBnaXZlbiB3YWl0X2Zvcl9sc24uIEFkZGl0aW9uYWxseSwKKyAqIGl0IHJlbW92ZXMg c2xvdHMgdGhhdCBoYXZlIGJlZW4gaW52YWxpZGF0ZWQsIGRyb3BwZWQsIG9yIGNvbnZlcnRlZCB0 bworICogbG9naWNhbCBzbG90cy4KKyAqLwordm9pZAorRmlsdGVyU3RhbmRieVNsb3RzKFhMb2dS ZWNQdHIgd2FpdF9mb3JfbHNuLCBMaXN0ICoqc3RhbmRieV9zbG90cykKK3sKKwlMaXN0Q2VsbCAg ICpsYzsKKwlMaXN0CSAgICpzdGFuZGJ5X3Nsb3RzX2NweSA9ICpzdGFuZGJ5X3Nsb3RzOworCisJ Zm9yZWFjaChsYywgc3RhbmRieV9zbG90c19jcHkpCisJeworCQljaGFyCSAgICpuYW1lID0gbGZp cnN0KGxjKTsKKwkJY2hhcgkgICAqd2FybmluZ2ZtdCA9IE5VTEw7CisJCVJlcGxpY2F0aW9uU2xv dCAqc2xvdDsKKworCQlzbG90ID0gU2VhcmNoTmFtZWRSZXBsaWNhdGlvblNsb3QobmFtZSwgdHJ1 ZSk7CisKKwkJaWYgKCFzbG90KQorCQl7CisJCQkvKgorCQkJICogSXQgbWF5IGhhcHBlbiB0aGF0 IHRoZSBzbG90IHNwZWNpZmllZCBpbiBzdGFuZGJ5X3Nsb3RfbmFtZXMgR1VDCisJCQkgKiB2YWx1 ZSBpcyBkcm9wcGVkLCBzbyBsZXQncyBza2lwIG92ZXIgaXQuCisJCQkgKi8KKwkJCXdhcm5pbmdm bXQgPSBfKCJyZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBzcGVjaWZpZWQgaW4gcGFyYW1ldGVyIFwi JXNcIiBkb2VzIG5vdCBleGlzdCwgaWdub3JpbmciKTsKKwkJfQorCQllbHNlIGlmIChTbG90SXNM b2dpY2FsKHNsb3QpKQorCQl7CisJCQkvKgorCQkJICogSWYgYSBsb2dpY2FsIHNsb3QgbmFtZSBp cyBwcm92aWRlZCBpbiBzdGFuZGJ5X3Nsb3RfbmFtZXMsIGlzc3VlCisJCQkgKiBhIFdBUk5JTkcg YW5kIHNraXAgaXQuIEFsdGhvdWdoIGxvZ2ljYWwgc2xvdHMgYXJlIGRpc2FsbG93ZWQgaW4KKwkJ CSAqIHRoZSBHVUMgY2hlY2tfaG9vayh2YWxpZGF0ZV9zdGFuZGJ5X3Nsb3RzKSwgaXQgaXMgc3Rp bGwKKwkJCSAqIHBvc3NpYmxlIGZvciBhIHVzZXIgdG8gZHJvcCBhbiBleGlzdGluZyBwaHlzaWNh bCBzbG90IGFuZAorCQkJICogcmVjcmVhdGUgYSBsb2dpY2FsIHNsb3Qgd2l0aCB0aGUgc2FtZSBu YW1lLiBTaW5jZSBpdCBpcworCQkJICogaGFybWxlc3MsIGEgV0FSTklORyBzaG91bGQgYmUgZW5v dWdoLCBubyBuZWVkIHRvIGVycm9yLW91dC4KKwkJCSAqLworCQkJd2FybmluZ2ZtdCA9IF8oImNh bm5vdCBoYXZlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgaW4gcGFyYW1ldGVyIFwi JXNcIiwgaWdub3JpbmciKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCVNwaW5Mb2NrQWNxdWlyZSgm c2xvdC0+bXV0ZXgpOworCisJCQlpZiAoc2xvdC0+ZGF0YS5pbnZhbGlkYXRlZCAhPSBSU19JTlZB TF9OT05FKQorCQkJeworCQkJCS8qCisJCQkJICogU3BlY2lmaWVkIHBoeXNpY2FsIHNsb3QgaGF2 ZSBiZWVuIGludmFsaWRhdGVkLCBzbyBubyBwb2ludAorCQkJCSAqIGluIHdhaXRpbmcgZm9yIGl0 LgorCQkJCSAqLworCQkJCXdhcm5pbmdmbXQgPSBfKCJwaHlzaWNhbCBzbG90IFwiJXNcIiBzcGVj aWZpZWQgaW4gcGFyYW1ldGVyIFwiJXNcIiBoYXMgYmVlbiBpbnZhbGlkYXRlZCwgaWdub3Jpbmci KTsKKwkJCX0KKwkJCWVsc2UgaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoc2xvdC0+ZGF0YS5yZXN0 YXJ0X2xzbikgfHwKKwkJCQkJIHNsb3QtPmRhdGEucmVzdGFydF9sc24gPCB3YWl0X2Zvcl9sc24p CisJCQl7CisJCQkJYm9vbAkJaW5hY3RpdmUgPSAoc2xvdC0+YWN0aXZlX3BpZCA9PSAwKTsKKwor CQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOworCisJCQkJLyogTG9nIHdhcm5pbmcg aWYgbm8gYWN0aXZlX3BpZCBmb3IgdGhpcyBwaHlzaWNhbCBzbG90ICovCisJCQkJaWYgKGluYWN0 aXZlKQorCQkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBz bG90IFwiJXNcIiBzcGVjaWZpZWQgaW4gcGFyYW1ldGVyIFwiJXNcIiBkb2VzIG5vdCBoYXZlIGFj dGl2ZV9waWQiLAorCQkJCQkJCQkgICBuYW1lLCAic3RhbmRieV9zbG90X25hbWVzIiksCisJCQkJ CQkJZXJyZGV0YWlsKCJMb2dpY2FsIHJlcGxpY2F0aW9uIGlzIHdhaXRpbmcgb24gdGhlICIKKwkJ CQkJCQkJCSAgInN0YW5kYnkgYXNzb2NpYXRlZCB3aXRoIFwiJXNcIi4iLCBuYW1lKSwKKwkJCQkJ CQllcnJoaW50KCJDb25zaWRlciBzdGFydGluZyBzdGFuZGJ5IGFzc29jaWF0ZWQgd2l0aCAiCisJ CQkJCQkJCQkiXCIlc1wiIG9yIGFtZW5kIHN0YW5kYnlfc2xvdF9uYW1lcy4iLCBuYW1lKSk7CisK KwkJCQkvKiBDb250aW51ZSBpZiB0aGUgY3VycmVudCBzbG90IGhhc24ndCBjYXVnaHQgdXAuICov CisJCQkJY29udGludWU7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJQXNzZXJ0KHNsb3QtPmRh dGEucmVzdGFydF9sc24gPj0gd2FpdF9mb3JfbHNuKTsKKwkJCX0KKworCQkJU3BpbkxvY2tSZWxl YXNlKCZzbG90LT5tdXRleCk7CisJCX0KKworCQkvKgorCQkgKiBSZWFjaGluZyBoZXJlIGluZGlj YXRlcyB0aGF0IGVpdGhlciB0aGUgc2xvdCBoYXMgcGFzc2VkIHRoZQorCQkgKiB3YWl0X2Zvcl9s c24gb3IgdGhlcmUgaXMgYW4gaXNzdWUgd2l0aCB0aGUgc2xvdCB0aGF0IHJlcXVpcmVzIGEKKwkJ ICogd2FybmluZyB0byBiZSByZXBvcnRlZC4KKwkJICovCisJCWlmICh3YXJuaW5nZm10KQorCQkJ ZXJlcG9ydChXQVJOSU5HLCBlcnJtc2cod2FybmluZ2ZtdCwgbmFtZSwgInN0YW5kYnlfc2xvdF9u YW1lcyIpKTsKKworCQlzdGFuZGJ5X3Nsb3RzX2NweSA9IGZvcmVhY2hfZGVsZXRlX2N1cnJlbnQo c3RhbmRieV9zbG90c19jcHksIGxjKTsKKwl9CisKKwkqc3RhbmRieV9zbG90cyA9IHN0YW5kYnlf c2xvdHNfY3B5OworfQorCisvKgorICogV2FpdCBmb3IgcGh5c2ljYWwgc3RhbmRieSB0byBjb25m aXJtIHJlY2VpdmluZyB0aGUgZ2l2ZW4gbHNuLgorICoKKyAqIFVzZWQgYnkgbG9naWNhbCBkZWNv ZGluZyBTUUwgZnVuY3Rpb25zIHRoYXQgYWNxdWlyZWQgc2xvdCB3aXRoIGZhaWxvdmVyCisgKiBl bmFibGVkLiBJdCB3YWl0cyBmb3IgcGh5c2ljYWwgc3RhbmRieXMgY29ycmVzcG9uZGluZyB0byB0 aGUgcGh5c2ljYWwgc2xvdHMKKyAqIHNwZWNpZmllZCBpbiB0aGUgc3RhbmRieV9zbG90X25hbWVz IEdVQy4KKyAqLwordm9pZAorV2FpdEZvclN0YW5kYnlDb25maXJtYXRpb24oWExvZ1JlY1B0ciB3 YWl0X2Zvcl9sc24pCit7CisJTGlzdAkgICAqc3RhbmRieV9zbG90czsKKworCWlmICghTXlSZXBs aWNhdGlvblNsb3QtPmRhdGEuZmFpbG92ZXIpCisJCXJldHVybjsKKworCXN0YW5kYnlfc2xvdHMg PSBHZXRTdGFuZGJ5U2xvdExpc3QodHJ1ZSk7CisKKwlpZiAoc3RhbmRieV9zbG90cyA9PSBOSUwp CisJCXJldHVybjsKKworCUNvbmRpdGlvblZhcmlhYmxlUHJlcGFyZVRvU2xlZXAoJldhbFNuZEN0 bC0+d2FsX2NvbmZpcm1fcmN2X2N2KTsKKworCWZvciAoOzspCisJeworCQlDSEVDS19GT1JfSU5U RVJSVVBUUygpOworCisJCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQl7CisJCQlDb25maWdS ZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCQlSZXJlYWRDb25maWdBbmRSZUluaXRTbG90TGlzdCgm c3RhbmRieV9zbG90cyk7CisJCX0KKworCQlGaWx0ZXJTdGFuZGJ5U2xvdHMod2FpdF9mb3JfbHNu LCAmc3RhbmRieV9zbG90cyk7CisKKwkJLyogRXhpdCBpZiBkb25lIHdhaXRpbmcgZm9yIGV2ZXJ5 IHNsb3QuICovCisJCWlmIChzdGFuZGJ5X3Nsb3RzID09IE5JTCkKKwkJCWJyZWFrOworCisJCS8q CisJCSAqIFdlIHdhaXQgZm9yIHRoZSBzbG90cyBpbiB0aGUgc3RhbmRieV9zbG90X25hbWVzIHRv IGNhdGNoIHVwLCBidXQgd2UKKwkJICogdXNlIGEgdGltZW91dCBzbyB3ZSBjYW4gYWxzbyBjaGVj ayB0aGUgaWYgdGhlIHN0YW5kYnlfc2xvdF9uYW1lcworCQkgKiBoYXMgYmVlbiBjaGFuZ2VkLgor CQkgKi8KKwkJQ29uZGl0aW9uVmFyaWFibGVUaW1lZFNsZWVwKCZXYWxTbmRDdGwtPndhbF9jb25m aXJtX3Jjdl9jdiwgMTAwMCwKKwkJCQkJCQkJCVdBSVRfRVZFTlRfV0FJVF9GT1JfU1RBTkRCWV9D T05GSVJNQVRJT04pOworCX0KKworCUNvbmRpdGlvblZhcmlhYmxlQ2FuY2VsU2xlZXAoKTsKKwls aXN0X2ZyZWUoc3RhbmRieV9zbG90cyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5j CmluZGV4IDk5MTMzOTYxNTIuLjk4M2E1NDRkNzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Nsb3RmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Rm dW5jcy5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3Nsb3QuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRp bHMvcGdfbHNuLmgiCkBAIC00NzQsNiArNDc1LDggQEAgcGdfcGh5c2ljYWxfcmVwbGljYXRpb25f c2xvdF9hZHZhbmNlKFhMb2dSZWNQdHIgbW92ZXRvKQogCQkgKiBjcmFzaCwgYnV0IHRoaXMgbWFr ZXMgdGhlIGRhdGEgY29uc2lzdGVudCBhZnRlciBhIGNsZWFuIHNodXRkb3duLgogCQkgKi8KIAkJ UmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7CisKKwkJUGh5c2ljYWxXYWtldXBMb2dpY2FsV2Fs U25kKCk7CiAJfQogCiAJcmV0dXJuIHJldGxzbjsKQEAgLTUxNCw2ICs1MTcsMTIgQEAgcGdfbG9n aWNhbF9yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoWExvZ1JlY1B0ciBtb3ZldG8pCiAJCQkJCQkJ CQkJCSAgIC5zZWdtZW50X2Nsb3NlID0gd2FsX3NlZ21lbnRfY2xvc2UpLAogCQkJCQkJCQkJTlVM TCwgTlVMTCwgTlVMTCk7CiAKKwkJLyoKKwkJICogV2FpdCBmb3Igc3BlY2lmaWVkIHN0cmVhbWlu ZyByZXBsaWNhdGlvbiBzdGFuZGJ5IHNlcnZlcnMgKGlmIGFueSkKKwkJICogdG8gY29uZmlybSBy ZWNlaXB0IG9mIFdBTCB1cCB0byBtb3ZldG8gbHNuLgorCQkgKi8KKwkJV2FpdEZvclN0YW5kYnlD b25maXJtYXRpb24obW92ZXRvKTsKKwogCQkvKgogCQkgKiBTdGFydCByZWFkaW5nIGF0IHRoZSBz bG90J3MgcmVzdGFydF9sc24sIHdoaWNoIHdlIGtub3cgdG8gcG9pbnQgdG8KIAkJICogYSB2YWxp ZCByZWNvcmQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IDE1ZjA0NWZlMWYu LjExNDY4ODcwMjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0xMjE5LDcg KzEyMTksNiBAQCBDcmVhdGVSZXBsaWNhdGlvblNsb3QoQ3JlYXRlUmVwbGljYXRpb25TbG90Q21k ICpjbWQpCiAKIAlwYXJzZUNyZWF0ZVJlcGxTbG90T3B0aW9ucyhjbWQsICZyZXNlcnZlX3dhbCwg JnNuYXBzaG90X2FjdGlvbiwgJnR3b19waGFzZSwKIAkJCQkJCQkgICAmZmFpbG92ZXIpOwotCiAJ aWYgKGNtZC0+a2luZCA9PSBSRVBMSUNBVElPTl9LSU5EX1BIWVNJQ0FMKQogCXsKIAkJUmVwbGlj YXRpb25TbG90Q3JlYXRlKGNtZC0+c2xvdG5hbWUsIGZhbHNlLApAQCAtMTcyOCwyNyArMTcyNyw3 OCBAQCBXYWxTbmRVcGRhdGVQcm9ncmVzcyhMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhM b2dSZWNQdHIgbHNuLCBUcmFuc2FjdGlvbklkCiAJCVByb2Nlc3NQZW5kaW5nV3JpdGVzKCk7CiB9 CiAKKy8qCisgKiBXYWtlIHVwIHRoZSBsb2dpY2FsIHdhbHNlbmRlciBwcm9jZXNzZXMgd2l0aCBm YWlsb3Zlci1lbmFibGVkIHNsb3RzIGlmIHRoZQorICogY3VycmVudGx5IGFjcXVpcmVkIHBoeXNp Y2FsIHNsb3QgaXMgc3BlY2lmaWVkIGluIHN0YW5kYnlfc2xvdF9uYW1lcworICogR1VDLgorICov Cit2b2lkCitQaHlzaWNhbFdha2V1cExvZ2ljYWxXYWxTbmQodm9pZCkKK3sKKwlMaXN0Q2VsbCAg ICpsYzsKKwlMaXN0CSAgICpzdGFuZGJ5X3Nsb3RzOworCisJQXNzZXJ0KE15UmVwbGljYXRpb25T bG90ICYmIFNsb3RJc1BoeXNpY2FsKE15UmVwbGljYXRpb25TbG90KSk7CisKKwlzdGFuZGJ5X3Ns b3RzID0gR2V0U3RhbmRieVNsb3RMaXN0KGZhbHNlKTsKKworCWZvcmVhY2gobGMsIHN0YW5kYnlf c2xvdHMpCisJeworCQljaGFyCSAgICpuYW1lID0gbGZpcnN0KGxjKTsKKworCQlpZiAoc3RyY21w KG5hbWUsIE5hbWVTdHIoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEubmFtZSkpID09IDApCisJCXsK KwkJCUNvbmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0KCZXYWxTbmRDdGwtPndhbF9jb25maXJtX3Jj dl9jdik7CisJCQlyZXR1cm47CisJCX0KKwl9Cit9CisKIC8qCiAgKiBXYWl0IHRpbGwgV0FMIDwg bG9jIGlzIGZsdXNoZWQgdG8gZGlzayBzbyBpdCBjYW4gYmUgc2FmZWx5IHNlbnQgdG8gY2xpZW50 LgogICoKLSAqIFJldHVybnMgZW5kIExTTiBvZiBmbHVzaGVkIFdBTC4gIE5vcm1hbGx5IHRoaXMg d2lsbCBiZSA+PSBsb2MsIGJ1dAotICogaWYgd2UgZGV0ZWN0IGEgc2h1dGRvd24gcmVxdWVzdCAo ZWl0aGVyIGZyb20gcG9zdG1hc3RlciBvciBjbGllbnQpCi0gKiB3ZSB3aWxsIHJldHVybiBlYXJs eSwgc28gY2FsbGVyIG11c3QgYWx3YXlzIGNoZWNrLgorICogSWYgdGhlIHdhbHNlbmRlciBob2xk cyBhIGxvZ2ljYWwgc2xvdCB0aGF0IGhhcyBlbmFibGVkIGZhaWxvdmVyLCB3ZSBhbHNvCisgKiB3 YWl0IGZvciBhbGwgdGhlIHNwZWNpZmllZCBzdHJlYW1pbmcgcmVwbGljYXRpb24gc3RhbmRieSBz ZXJ2ZXJzIHRvCisgKiBjb25maXJtIHJlY2VpcHQgb2YgV0FMIHVwIHRvIFJlY2VudEZsdXNoUHRy LgorICoKKyAqIFJldHVybnMgZW5kIExTTiBvZiBmbHVzaGVkIFdBTC4gIE5vcm1hbGx5IHRoaXMg d2lsbCBiZSA+PSBsb2MsIGJ1dCBpZiB3ZQorICogZGV0ZWN0IGEgc2h1dGRvd24gcmVxdWVzdCAo ZWl0aGVyIGZyb20gcG9zdG1hc3RlciBvciBjbGllbnQpIHdlIHdpbGwgcmV0dXJuCisgKiBlYXJs eSwgc28gY2FsbGVyIG11c3QgYWx3YXlzIGNoZWNrLgogICovCiBzdGF0aWMgWExvZ1JlY1B0cgog V2FsU25kV2FpdEZvcldhbChYTG9nUmVjUHRyIGxvYykKIHsKIAlpbnQJCQl3YWtlRXZlbnRzOwor CWJvb2wJCXdhaXRfZm9yX3N0YW5kYnkgPSBmYWxzZTsKKwl1aW50MzIJCXdhaXRfZXZlbnQ7CisJ TGlzdAkgICAqc3RhbmRieV9zbG90cyA9IE5JTDsKIAlzdGF0aWMgWExvZ1JlY1B0ciBSZWNlbnRG bHVzaFB0ciA9IEludmFsaWRYTG9nUmVjUHRyOwogCisJaWYgKE15UmVwbGljYXRpb25TbG90LT5k YXRhLmZhaWxvdmVyICYmIHJlcGxpY2F0aW9uX2FjdGl2ZSkKKwkJc3RhbmRieV9zbG90cyA9IEdl dFN0YW5kYnlTbG90TGlzdCh0cnVlKTsKKwogCS8qCi0JICogRmFzdCBwYXRoIHRvIGF2b2lkIGFj cXVpcmluZyB0aGUgc3BpbmxvY2sgaW4gY2FzZSB3ZSBhbHJlYWR5IGtub3cgd2UKLQkgKiBoYXZl IGVub3VnaCBXQUwgYXZhaWxhYmxlLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBp ZiB3ZSdyZQotCSAqIGZhciBiZWhpbmQuCisJICogQ2hlY2sgaWYgYWxsIHRoZSBzdGFuZGJ5IHNl cnZlcnMgaGF2ZSBjb25maXJtZWQgcmVjZWlwdCBvZiBXQUwgdXAgdG8KKwkgKiBSZWNlbnRGbHVz aFB0ciBldmVuIHdoZW4gd2UgYWxyZWFkeSBrbm93IHdlIGhhdmUgZW5vdWdoIFdBTCBhdmFpbGFi bGUuCisJICoKKwkgKiBOb3RlIHRoYXQgd2UgY2Fubm90IGRpcmVjdGx5IHJldHVybiB3aXRob3V0 IGNoZWNraW5nIHRoZSBzdGF0dXMgb2YKKwkgKiBzdGFuZGJ5IHNlcnZlcnMgYmVjYXVzZSB0aGUg c3RhbmRieV9zbG90X25hbWVzIG1heSBoYXZlIGNoYW5nZWQsIHdoaWNoCisJICogbWVhbnMgdGhl cmUgY291bGQgYmUgbmV3IHN0YW5kYnkgc2xvdHMgaW4gdGhlIGxpc3QgdGhhdCBoYXZlIG5vdCB5 ZXQKKwkgKiBjYXVnaHQgdXAgdG8gdGhlIFJlY2VudEZsdXNoUHRyLgogCSAqLwotCWlmIChSZWNl bnRGbHVzaFB0ciAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJgotCQlsb2MgPD0gUmVjZW50Rmx1c2hQ dHIpCi0JCXJldHVybiBSZWNlbnRGbHVzaFB0cjsKKwlpZiAoIVhMb2dSZWNQdHJJc0ludmFsaWQo UmVjZW50Rmx1c2hQdHIpICYmIGxvYyA8PSBSZWNlbnRGbHVzaFB0cikKKwl7CisJCUZpbHRlclN0 YW5kYnlTbG90cyhSZWNlbnRGbHVzaFB0ciwgJnN0YW5kYnlfc2xvdHMpOworCisJCS8qCisJCSAq IEZhc3QgcGF0aCB0byBhdm9pZCBhY3F1aXJpbmcgdGhlIHNwaW5sb2NrIGluIGNhc2Ugd2UgYWxy ZWFkeSBrbm93CisJCSAqIHdlIGhhdmUgZW5vdWdoIFdBTCBhdmFpbGFibGUgYW5kIGFsbCB0aGUg c3RhbmRieSBzZXJ2ZXJzIGhhdmUKKwkJICogY29uZmlybWVkIHJlY2VpcHQgb2YgV0FMIHVwIHRv IFJlY2VudEZsdXNoUHRyLiBUaGlzIGlzIHBhcnRpY3VsYXJseQorCQkgKiBpbnRlcmVzdGluZyBp ZiB3ZSdyZSBmYXIgYmVoaW5kLgorCQkgKi8KKwkJaWYgKHN0YW5kYnlfc2xvdHMgPT0gTklMKQor CQkJcmV0dXJuIFJlY2VudEZsdXNoUHRyOworCX0KIAogCS8qIEdldCBhIG1vcmUgcmVjZW50IGZs dXNoIHBvaW50ZXIuICovCiAJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKQEAgLTE3NjksNyAr MTgxOSw3IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJCWlmIChDb25maWdS ZWxvYWRQZW5kaW5nKQogCQl7CiAJCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7Ci0JCQlQ cm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKwkJCVJlcmVhZENvbmZpZ0FuZFJlSW5pdFNs b3RMaXN0KCZzdGFuZGJ5X3Nsb3RzKTsKIAkJCVN5bmNSZXBJbml0Q29uZmlnKCk7CiAJCX0KIApA QCAtMTc4NCw4ICsxODM0LDE4IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJ CWlmIChnb3RfU1RPUFBJTkcpCiAJCQlYTG9nQmFja2dyb3VuZEZsdXNoKCk7CiAKKwkJLyoKKwkJ ICogVXBkYXRlIHRoZSBzdGFuZGJ5IHNsb3RzIHRoYXQgaGF2ZSBub3QgeWV0IGNhdWdodCB1cCB0 byB0aGUgZmx1c2hlZAorCQkgKiBwb3NpdGlvbi4gSXQgaXMgZ29vZCB0byB3YWl0IHVwIHRvIFJl Y2VudEZsdXNoUHRyIGFuZCB0aGVuIGxldCBpdAorCQkgKiBzZW5kIHRoZSBjaGFuZ2VzIHRvIGxv Z2ljYWwgc3Vic2NyaWJlcnMgb25lIGJ5IG9uZSB3aGljaCBhcmUKKwkJICogYWxyZWFkeSBjb3Zl cmVkIGluIFJlY2VudEZsdXNoUHRyIHdpdGhvdXQgbmVlZGluZyB0byB3YWl0IG9uIGV2ZXJ5CisJ CSAqIGNoYW5nZSBmb3Igc3RhbmRieSBjb25maXJtYXRpb24uCisJCSAqLworCQlpZiAod2FpdF9m b3Jfc3RhbmRieSkKKwkJCUZpbHRlclN0YW5kYnlTbG90cyhSZWNlbnRGbHVzaFB0ciwgJnN0YW5k Ynlfc2xvdHMpOworCiAJCS8qIFVwZGF0ZSBvdXIgaWRlYSBvZiB0aGUgY3VycmVudGx5IGZsdXNo ZWQgcG9zaXRpb24uICovCi0JCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCisJCWVsc2UgaWYg KCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJCVJlY2VudEZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQ dHIoTlVMTCk7CiAJCWVsc2UKIAkJCVJlY2VudEZsdXNoUHRyID0gR2V0WExvZ1JlcGxheVJlY1B0 cihOVUxMKTsKQEAgLTE4MTMsOSArMTg3MywxOCBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQ dHIgbG9jKQogCQkJIXdhaXRpbmdfZm9yX3BpbmdfcmVzcG9uc2UpCiAJCQlXYWxTbmRLZWVwYWxp dmUoZmFsc2UsIEludmFsaWRYTG9nUmVjUHRyKTsKIAotCQkvKiBjaGVjayB3aGV0aGVyIHdlJ3Jl IGRvbmUgKi8KLQkJaWYgKGxvYyA8PSBSZWNlbnRGbHVzaFB0cikKKwkJaWYgKGxvYyA+IFJlY2Vu dEZsdXNoUHRyKQorCQkJd2FpdF9ldmVudCA9IFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9XQUlUX0ZP Ul9XQUw7CisJCWVsc2UgaWYgKHN0YW5kYnlfc2xvdHMpCisJCXsKKwkJCXdhaXRfZXZlbnQgPSBX QUlUX0VWRU5UX1dBSVRfRk9SX1NUQU5EQllfQ09ORklSTUFUSU9OOworCQkJd2FpdF9mb3Jfc3Rh bmRieSA9IHRydWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBBbHJlYWR5IGNhdWdodCB1cCBh bmQgZG9lc24ndCBuZWVkIHRvIHdhaXQgZm9yIHN0YW5kYnlfc2xvdHMuICovCiAJCQlicmVhazsK KwkJfQogCiAJCS8qIFdhaXRpbmcgZm9yIG5ldyBXQUwuIFNpbmNlIHdlIG5lZWQgdG8gd2FpdCwg d2UncmUgbm93IGNhdWdodCB1cC4gKi8KIAkJV2FsU25kQ2F1Z2h0VXAgPSB0cnVlOwpAQCAtMTg1 NSw5ICsxOTI0LDExIEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJCWlmIChw cV9pc19zZW5kX3BlbmRpbmcoKSkKIAkJCXdha2VFdmVudHMgfD0gV0xfU09DS0VUX1dSSVRFQUJM RTsKIAotCQlXYWxTbmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwgV0FJVF9FVkVOVF9XQUxf U0VOREVSX1dBSVRfRk9SX1dBTCk7CisJCVdhbFNuZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1l LCB3YWl0X2V2ZW50KTsKIAl9CiAKKwlsaXN0X2ZyZWUoc3RhbmRieV9zbG90cyk7CisKIAkvKiBy ZWFjdGl2YXRlIGxhdGNoIHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29udGludWUgKi8KIAlTZXRM YXRjaChNeUxhdGNoKTsKIAlyZXR1cm4gUmVjZW50Rmx1c2hQdHI7CkBAIC0yMjY1LDYgKzIzMzYs NyBAQCBQaHlzaWNhbENvbmZpcm1SZWNlaXZlZExvY2F0aW9uKFhMb2dSZWNQdHIgbHNuKQogCXsK IAkJUmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7CiAJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRl UmVxdWlyZWRMU04oKTsKKwkJUGh5c2ljYWxXYWtldXBMb2dpY2FsV2FsU25kKCk7CiAJfQogCiAJ LyoKQEAgLTM1MzIsNiArMzYwNCw3IEBAIFdhbFNuZFNobWVtSW5pdCh2b2lkKQogCiAJCUNvbmRp dGlvblZhcmlhYmxlSW5pdCgmV2FsU25kQ3RsLT53YWxfZmx1c2hfY3YpOwogCQlDb25kaXRpb25W YXJpYWJsZUluaXQoJldhbFNuZEN0bC0+d2FsX3JlcGxheV9jdik7CisJCUNvbmRpdGlvblZhcmlh YmxlSW5pdCgmV2FsU25kQ3RsLT53YWxfY29uZmlybV9yY3ZfY3YpOwogCX0KIH0KIApAQCAtMzYw MSw4ICszNjc0LDE0IEBAIFdhbFNuZFdhaXQodWludDMyIHNvY2tldF9ldmVudHMsIGxvbmcgdGlt ZW91dCwgdWludDMyIHdhaXRfZXZlbnQpCiAJICoKIAkgKiBBbmQsIHdlIHVzZSBzZXBhcmF0ZSBz aGFyZWQgbWVtb3J5IENWcyBmb3IgcGh5c2ljYWwgYW5kIGxvZ2ljYWwKIAkgKiB3YWxzZW5kZXJz IGZvciBzZWxlY3RpdmUgd2FrZSB1cHMsIHNlZSBXYWxTbmRXYWtldXAoKSBmb3IgbW9yZSBkZXRh aWxzLgorCSAqCisJICogSWYgdGhlIHdhaXQgZXZlbnQgaXMgV0FJVF9GT1JfU1RBTkRCWV9DT05G SVJNQVRJT04sIHdhaXQgb24gYW5vdGhlciBDVgorCSAqIHVudGlsIGF3YWtlbmVkIGJ5IHBoeXNp Y2FsIHdhbHNlbmRlcnMgYWZ0ZXIgdGhlIHdhbHJlY2VpdmVyIGNvbmZpcm1zCisJICogdGhlIHJl Y2VpcHQgb2YgdGhlIExTTi4KIAkgKi8KLQlpZiAoTXlXYWxTbmQtPmtpbmQgPT0gUkVQTElDQVRJ T05fS0lORF9QSFlTSUNBTCkKKwlpZiAod2FpdF9ldmVudCA9PSBXQUlUX0VWRU5UX1dBSVRfRk9S X1NUQU5EQllfQ09ORklSTUFUSU9OKQorCQlDb25kaXRpb25WYXJpYWJsZVByZXBhcmVUb1NsZWVw KCZXYWxTbmRDdGwtPndhbF9jb25maXJtX3Jjdl9jdik7CisJZWxzZSBpZiAoTXlXYWxTbmQtPmtp bmQgPT0gUkVQTElDQVRJT05fS0lORF9QSFlTSUNBTCkKIAkJQ29uZGl0aW9uVmFyaWFibGVQcmVw YXJlVG9TbGVlcCgmV2FsU25kQ3RsLT53YWxfZmx1c2hfY3YpOwogCWVsc2UgaWYgKE15V2FsU25k LT5raW5kID09IFJFUExJQ0FUSU9OX0tJTkRfTE9HSUNBTCkKIAkJQ29uZGl0aW9uVmFyaWFibGVQ cmVwYXJlVG9TbGVlcCgmV2FsU25kQ3RsLT53YWxfcmVwbGF5X2N2KTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0IGIvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKaW5kZXggNGMwZWUyZGQyOS4u OTk3M2VmNDFiOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudF9uYW1lcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dF9uYW1lcy50eHQKQEAgLTc4LDYgKzc4LDcgQEAgR1NTX09QRU5fU0VSVkVSCSJXYWl0aW5nIHRv IHJlYWQgZGF0YSBmcm9tIHRoZSBjbGllbnQgd2hpbGUgZXN0YWJsaXNoaW5nIGEgR1NTQVAKIExJ QlBRV0FMUkVDRUlWRVJfQ09OTkVDVAkiV2FpdGluZyBpbiBXQUwgcmVjZWl2ZXIgdG8gZXN0YWJs aXNoIGNvbm5lY3Rpb24gdG8gcmVtb3RlIHNlcnZlci4iCiBMSUJQUVdBTFJFQ0VJVkVSX1JFQ0VJ VkUJIldhaXRpbmcgaW4gV0FMIHJlY2VpdmVyIHRvIHJlY2VpdmUgZGF0YSBmcm9tIHJlbW90ZSBz ZXJ2ZXIuIgogU1NMX09QRU5fU0VSVkVSCSJXYWl0aW5nIGZvciBTU0wgd2hpbGUgYXR0ZW1wdGlu ZyBjb25uZWN0aW9uLiIKK1dBSVRfRk9SX1NUQU5EQllfQ09ORklSTUFUSU9OCSJXYWl0aW5nIGZv ciB0aGUgV0FMIHRvIGJlIHJlY2VpdmVkIGJ5IHBoeXNpY2FsIHN0YW5kYnkuIgogV0FMX1NFTkRF Ul9XQUlUX0ZPUl9XQUwJIldhaXRpbmcgZm9yIFdBTCB0byBiZSBmbHVzaGVkIGluIFdBTCBzZW5k ZXIgcHJvY2Vzcy4iCiBXQUxfU0VOREVSX1dSSVRFX0RBVEEJIldhaXRpbmcgZm9yIGFueSBhY3Rp dml0eSB3aGVuIHByb2Nlc3NpbmcgcmVwbGllcyBmcm9tIFdBTCByZWNlaXZlciBpbiBXQUwgc2Vu ZGVyIHByb2Nlc3MuIgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDNhZjEx YjJiODAuLmE4MjYxOGMzZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC00 NjI4LDYgKzQ2MjgsMjAgQEAgc3RydWN0IGNvbmZpZ19zdHJpbmcgQ29uZmlndXJlTmFtZXNTdHJp bmdbXSA9CiAJCWNoZWNrX2RlYnVnX2lvX2RpcmVjdCwgYXNzaWduX2RlYnVnX2lvX2RpcmVjdCwg TlVMTAogCX0sCiAKKwl7CisJCXsic3RhbmRieV9zbG90X25hbWVzIiwgUEdDX1NJR0hVUCwgUkVQ TElDQVRJT05fUFJJTUFSWSwKKwkJCWdldHRleHRfbm9vcCgiTGlzdHMgc3RyZWFtaW5nIHJlcGxp Y2F0aW9uIHN0YW5kYnkgc2VydmVyIHNsb3QgIgorCQkJCQkJICJuYW1lcyB0aGF0IGxvZ2ljYWwg V0FMIHNlbmRlciBwcm9jZXNzZXMgd2lsbCB3YWl0IGZvci4iKSwKKwkJCWdldHRleHRfbm9vcCgi RGVjb2RlZCBjaGFuZ2VzIGFyZSBzZW50IG91dCB0byBwbHVnaW5zIGJ5IGxvZ2ljYWwgIgorCQkJ CQkJICJXQUwgc2VuZGVyIHByb2Nlc3NlcyBvbmx5IGFmdGVyIHNwZWNpZmllZCAiCisJCQkJCQkg InJlcGxpY2F0aW9uIHNsb3RzIGNvbmZpcm0gcmVjZWl2aW5nIFdBTC4iKSwKKwkJCUdVQ19MSVNU X0lOUFVUIHwgR1VDX0xJU1RfUVVPVEUKKwkJfSwKKwkJJnN0YW5kYnlfc2xvdF9uYW1lcywKKwkJ IiIsCisJCWNoZWNrX3N0YW5kYnlfc2xvdF9uYW1lcywgYXNzaWduX3N0YW5kYnlfc2xvdF9uYW1l cywgTlVMTAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIgKi8KIAl7CiAJCXtOVUxMLCAw LCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDM4Njg2OTRkM2Yu LmRiNGFmYWYzNTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKQEAgLTMzNCw2ICszMzQsOCBAQAogCQkJCSMgbWV0aG9kIHRvIGNob29zZSBzeW5j IHN0YW5kYnlzLCBudW1iZXIgb2Ygc3luYyBzdGFuZGJ5cywKIAkJCQkjIGFuZCBjb21tYS1zZXBh cmF0ZWQgbGlzdCBvZiBhcHBsaWNhdGlvbl9uYW1lCiAJCQkJIyBmcm9tIHN0YW5kYnkocyk7ICcq JyA9IGFsbAorI3N0YW5kYnlfc2xvdF9uYW1lcyA9ICcnICMgc3RyZWFtaW5nIHJlcGxpY2F0aW9u IHN0YW5kYnkgc2VydmVyIHNsb3QgbmFtZXMgdGhhdAorCQkJCSMgbG9naWNhbCB3YWxzZW5kZXIg cHJvY2Vzc2VzIHdpbGwgd2FpdCBmb3IKIAogIyAtIFN0YW5kYnkgU2VydmVycyAtCiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Nsb3QuaAppbmRleCAxZjQ0NDZhYTNhLi5kZjU2ZTEyNzFlIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc2xvdC5oCkBAIC0yMjksNiArMjI5LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFJlcGxpY2F0 aW9uU2xvdCAqTXlSZXBsaWNhdGlvblNsb3Q7CiAKIC8qIEdVQ3MgKi8KIGV4dGVybiBQR0RMTElN UE9SVCBpbnQgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOworZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIg KnN0YW5kYnlfc2xvdF9uYW1lczsKIAogLyogc2htZW0gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25z ICovCiBleHRlcm4gU2l6ZSBSZXBsaWNhdGlvblNsb3RzU2htZW1TaXplKHZvaWQpOwpAQCAtMjc1 LDQgKzI3NiwxMCBAQCBleHRlcm4gdm9pZCBDaGVja1BvaW50UmVwbGljYXRpb25TbG90cyhib29s IGlzX3NodXRkb3duKTsKIGV4dGVybiB2b2lkIENoZWNrU2xvdFJlcXVpcmVtZW50cyh2b2lkKTsK IGV4dGVybiB2b2lkIENoZWNrU2xvdFBlcm1pc3Npb25zKHZvaWQpOwogCitleHRlcm4gTGlzdCAq R2V0U3RhbmRieVNsb3RMaXN0KGJvb2wgY29weSk7CitleHRlcm4gdm9pZCBXYWl0Rm9yU3RhbmRi eUNvbmZpcm1hdGlvbihYTG9nUmVjUHRyIHdhaXRfZm9yX2xzbik7CitleHRlcm4gdm9pZCBGaWx0 ZXJTdGFuZGJ5U2xvdHMoWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24sCisJCQkJCQkJICAgTGlzdCAq KnN0YW5kYnlfc2xvdHMpOworZXh0ZXJuIHZvaWQgUmVyZWFkQ29uZmlnQW5kUmVJbml0U2xvdExp c3QoTGlzdCAqKnN0YW5kYnlfc2xvdHMpOworCiAjZW5kaWYJCQkJCQkJLyogU0xPVF9IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaCBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCmluZGV4IDI3NmQ4OTEzYWEuLmY5YTU1OWY4MzEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCkBAIC00Nyw2ICs0Nyw3IEBAIGV4dGVy biB2b2lkIFdhbFNuZEluaXRTdG9wcGluZyh2b2lkKTsKIGV4dGVybiB2b2lkIFdhbFNuZFdhaXRT dG9wcGluZyh2b2lkKTsKIGV4dGVybiB2b2lkIEhhbmRsZVdhbFNuZEluaXRTdG9wcGluZyh2b2lk KTsKIGV4dGVybiB2b2lkIFdhbFNuZFJxc3RGaWxlUmVsb2FkKHZvaWQpOworZXh0ZXJuIHZvaWQg UGh5c2ljYWxXYWtldXBMb2dpY2FsV2FsU25kKHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgR2V0 U3RhbmRieUZsdXNoUmVjUHRyKFRpbWVMaW5lSUQgKnRsaSk7CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaAppbmRleCAzMTEzZTllYTQ3Li4wZjk2MmIw YzcyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0 ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgKQEAg LTExMyw2ICsxMTMsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlDb25kaXRpb25WYXJpYWJsZSB3YWxf Zmx1c2hfY3Y7CiAJQ29uZGl0aW9uVmFyaWFibGUgd2FsX3JlcGxheV9jdjsKIAorCS8qCisJICog VXNlZCBieSBwaHlzaWNhbCB3YWxzZW5kZXJzIGhvbGRpbmcgc2xvdHMgc3BlY2lmaWVkIGluCisJ ICogc3RhbmRieV9zbG90X25hbWVzIHRvIHdha2UgdXAgbG9naWNhbCB3YWxzZW5kZXJzIGhvbGRp bmcKKwkgKiBmYWlsb3Zlci1lbmFibGVkIHNsb3RzIHdoZW4gYSB3YWxyZWNlaXZlciBjb25maXJt cyB0aGUgcmVjZWlwdCBvZiBMU04uCisJICovCisJQ29uZGl0aW9uVmFyaWFibGUgd2FsX2NvbmZp cm1fcmN2X2N2OworCiAJV2FsU25kCQl3YWxzbmRzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9 IFdhbFNuZEN0bERhdGE7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29r cy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKaW5kZXggNTMwMGM0NGYzYi4uNDY0 OTk2YjRmMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKQEAgLTE2Miw1ICsxNjIsOCBAQCBleHRlcm4g Ym9vbCBjaGVja193YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcoY2hhciAqKm5ld3ZhbCwgdm9pZCAq KmV4dHJhLAogZXh0ZXJuIHZvaWQgYXNzaWduX3dhbF9jb25zaXN0ZW5jeV9jaGVja2luZyhjb25z dCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJhKTsKIGV4dGVybiBib29sIGNoZWNrX3dhbF9zZWdt ZW50X3NpemUoaW50ICpuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSk7CiBl eHRlcm4gdm9pZCBhc3NpZ25fd2FsX3N5bmNfbWV0aG9kKGludCBuZXdfd2FsX3N5bmNfbWV0aG9k LCB2b2lkICpleHRyYSk7CitleHRlcm4gYm9vbCBjaGVja19zdGFuZGJ5X3Nsb3RfbmFtZXMoY2hh ciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLAorCQkJCQkJCQkJIEd1Y1NvdXJjZSBzb3VyY2UpOwor ZXh0ZXJuIHZvaWQgYXNzaWduX3N0YW5kYnlfc2xvdF9uYW1lcyhjb25zdCBjaGFyICpuZXd2YWws IHZvaWQgKmV4dHJhKTsKIAogI2VuZGlmCQkJCQkJCS8qIEdVQ19IT09LU19IICovCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAwNl9sb2dpY2FsX2RlY29kaW5nLnBsIGIvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMDZfbG9naWNhbF9kZWNvZGluZy5wbAppbmRleCA1YzdiNGNhNWUzLi44 NWYwMTk3NzRjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAwNl9sb2dpY2FsX2Rl Y29kaW5nLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDA2X2xvZ2ljYWxfZGVjb2Rpbmcu cGwKQEAgLTE3Miw5ICsxNzIsMTAgQEAgaXMoJG5vZGVfcHJpbWFyeS0+c2xvdCgnb3RoZXJkYl9z bG90JyktPnsnc2xvdF9uYW1lJ30sCiAJdW5kZWYsICdsb2dpY2FsIHNsb3Qgd2FzIGFjdHVhbGx5 IGRyb3BwZWQgd2l0aCBEQicpOwogCiAjIFRlc3QgbG9naWNhbCBzbG90IGFkdmFuY2luZyBhbmQg aXRzIGR1cmFiaWxpdHkuCisjIFBhc3MgZmFpbG92ZXI9dHJ1ZSAobGFzdC1hcmcpLCBpdCBzaG91 bGQgbm90IGhhdmUgYW55IGltcGFjdCBvbiBhZHZhbmNpbmcuCiBteSAkbG9naWNhbF9zbG90ID0g J2xvZ2ljYWxfc2xvdCc7CiAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRsb2dpY2FsX3Nsb3Qn LCAndGVzdF9kZWNvZGluZycsIGZhbHNlKTsiCisJIlNFTEVDVCBwZ19jcmVhdGVfbG9naWNhbF9y ZXBsaWNhdGlvbl9zbG90KCckbG9naWNhbF9zbG90JywgJ3Rlc3RfZGVjb2RpbmcnLCBmYWxzZSwg ZmFsc2UsIHRydWUpOyIKICk7CiAkbm9kZV9wcmltYXJ5LT5wc3FsKAogCSdwb3N0Z3JlcycsICIK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xv dHNfc3luYy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xv dHNfc3luYy5wbAppbmRleCAyYTAxN2I0Mjg2Li43OWM0NmVmNGQ3IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwKKysrIGIv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsCkBA IC05OSwxNyArOTksMzAgQEAgb2soICRzdGRlcnIgPX4gL0VSUk9SOiAgY2Fubm90IHNldCBmYWls b3ZlciBmb3IgZW5hYmxlZCBzdWJzY3JpcHRpb24vLAogCSJhbHRlcmluZyBmYWlsb3ZlciBpcyBu b3QgYWxsb3dlZCBmb3IgZW5hYmxlZCBzdWJzY3JpcHRpb24iKTsKIAogIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCBsb2dpY2FsIGZhaWxv dmVyIHNsb3RzIG9uIHRoZSBzdGFuZGJ5Ci0jIENvbmZpZ3VyZSBzdGFuZGJ5MSB0byByZXBsaWNh dGUgYW5kIHN5bmNocm9uaXplIGxvZ2ljYWwgc2xvdHMgY29uZmlndXJlZAotIyBmb3IgZmFpbG92 ZXIgb24gdGhlIHByaW1hcnkKKyMgVGVzdCBwcmltYXJ5IGRpc2FsbG93aW5nIHNwZWNpZmllZCBs b2dpY2FsIHJlcGxpY2F0aW9uIHNsb3RzIGdldHRpbmcgYWhlYWQgb2YKKyMgc3BlY2lmaWVkIHBo eXNpY2FsIHJlcGxpY2F0aW9uIHNsb3RzLiBJdCB1c2VzIHRoZSBmb2xsb3dpbmcgc2V0IHVwOgog IwotIyAgICAgICAgICAgICAgZmFpbG92ZXIgc2xvdCBsc3ViMV9zbG90LT58IC0tLS0+IHN1YnNj cmliZXIxIChjb25uZWN0ZWQgdmlhIGxvZ2ljYWwgcmVwbGljYXRpb24pCi0jIHByaW1hcnkgLS0t PiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSMgICAgICAgICAgICAgIHBoeXNpY2FsIHNs b3Qgc2IxX3Nsb3QtLS0+fCAtLS0tPiBzdGFuZGJ5MSAoY29ubmVjdGVkIHZpYSBzdHJlYW1pbmcg cmVwbGljYXRpb24pCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgIGxzdWIxX3Nsb3Qoc3luY2VkX3Nsb3QpCisjCQkJCXwgLS0tLT4gc3Rh bmRieTEgKHByaW1hcnlfc2xvdF9uYW1lID0gc2IxX3Nsb3QpCisjCQkJCXwgLS0tLT4gc3RhbmRi eTIgKHByaW1hcnlfc2xvdF9uYW1lID0gc2IyX3Nsb3QpCisjIHByaW1hcnkgLS0tLS0JfAorIwkJ CQl8IC0tLS0+IHN1YnNjcmliZXIxIChmYWlsb3ZlciA9IHRydWUpCisjCQkJCXwgLS0tLT4gc3Vi c2NyaWJlcjIgKGZhaWxvdmVyID0gZmFsc2UpCisjCisjIHN0YW5kYnlfc2xvdF9uYW1lcyA9ICdz YjFfc2xvdCcKKyMKKyMgU2V0IHVwIGlzIGNvbmZpZ3VyZWQgaW4gc3VjaCBhIHdheSB0aGF0IHRo ZSBsb2dpY2FsIHNsb3Qgb2Ygc3Vic2NyaWJlcjEgaXMKKyMgZW5hYmxlZCBmYWlsb3ZlciwgdGh1 cyBpdCB3aWxsIHdhaXQgZm9yIHRoZSBwaHlzaWNhbCBzbG90IG9mCisjIHN0YW5kYnkxKHNiMV9z bG90KSB0byBjYXRjaCB1cCBiZWZvcmUgc2VuZGluZyBkZWNvZGVkIGNoYW5nZXMgdG8gc3Vic2Ny aWJlcjEuCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogCisjIENyZWF0ZSBwcmltYXJ5CiBteSAkcHJpbWFyeSA9ICRwdWJsaXNoZXI7CisKKyRwcmlt YXJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxp Y2F0aW9uX3Nsb3QoJ3NiMV9zbG90Jyk7fSk7CiskcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLAor CXF7U0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KCdzYjJfc2xvdCcp O30pOworCiBteSAkYmFja3VwX25hbWUgPSAnYmFja3VwJzsKICRwcmltYXJ5LT5iYWNrdXAoJGJh Y2t1cF9uYW1lKTsKIApAQCAtMTE5LDIxICsxMzIsMjAxIEBAICRzdGFuZGJ5MS0+aW5pdF9mcm9t X2JhY2t1cCgKIAkkcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAogCWhhc19zdHJlYW1pbmcgPT4gMSwK IAloYXNfcmVzdG9yaW5nID0+IDEpOworJHN0YW5kYnkxLT5hcHBlbmRfY29uZigKKwkncG9zdGdy ZXNxbC5jb25mJywgcXEoCitwcmltYXJ5X3Nsb3RfbmFtZSA9ICdzYjFfc2xvdCcKKykpOworJHN0 YW5kYnkxLT5zdGFydDsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRi eTEpOwogCisjIENyZWF0ZSBhbm90aGVyIHN0YW5kYnkKK215ICRzdGFuZGJ5MiA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieTInKTsKKyRzdGFuZGJ5Mi0+aW5pdF9mcm9t X2JhY2t1cCgKKwkkcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwK KwloYXNfcmVzdG9yaW5nID0+IDEpOworJHN0YW5kYnkyLT5hcHBlbmRfY29uZigKKwkncG9zdGdy ZXNxbC5jb25mJywgcXEoCitwcmltYXJ5X3Nsb3RfbmFtZSA9ICdzYjJfc2xvdCcKKykpOworJHN0 YW5kYnkyLT5zdGFydDsKKyRwcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRi eTIpOworCisjIENvbmZpZ3VyZSBwcmltYXJ5IHRvIGRpc2FsbG93IGFueSBsb2dpY2FsIHNsb3Rz IHRoYXQgZW5hYmxlZCBmYWlsb3ZlciBmcm9tCisjIGdldHRpbmcgYWhlYWQgb2Ygc3BlY2lmaWVk IHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QgKHNiMV9zbG90KS4KKyRwcmltYXJ5LT5hcHBlbmRf Y29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCitzdGFuZGJ5X3Nsb3RfbmFtZXMgPSAnc2Ix X3Nsb3QnCispKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNSRUFURSBUQUJMRSB0YWJfaW50IChhIGludCBQUklNQVJZIEtFWSk7Iik7CisK KyMgQ3JlYXRlIGEgdGFibGUgYW5kIHJlZnJlc2ggdGhlIHB1YmxpY2F0aW9uCiskc3Vic2NyaWJl cjEtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlDUkVBVEUgVEFCTEUgdGFiX2ludCAo YSBpbnQgUFJJTUFSWSBLRVkpOworCUFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX215c3ViMSBS RUZSRVNIIFBVQkxJQ0FUSU9OIFdJVEggKGNvcHlfZGF0YSA9IGZhbHNlKTsKK10pOworCisjIENy ZWF0ZSBhbm90aGVyIHN1YnNjcmliZXIgbm9kZSB3aXRob3V0IGVuYWJsaW5nIGZhaWxvdmVyLCB3 YWl0IGZvciBzeW5jIHRvCisjIGNvbXBsZXRlCitteSAkc3Vic2NyaWJlcjIgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXIyJyk7Ciskc3Vic2NyaWJlcjItPmluaXQ7 Ciskc3Vic2NyaWJlcjItPnN0YXJ0OworJHN1YnNjcmliZXIyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXFbCisJQ1JFQVRFIFRBQkxFIHRhYl9pbnQgKGEgaW50IFBSSU1BUlkgS0VZKTsKKwlD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfbXlzdWIyIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJf Y29ubnN0cicgUFVCTElDQVRJT04gcmVncmVzc19teXB1YiBXSVRIIChzbG90X25hbWUgPSBsc3Vi Ml9zbG90LCBjb3B5X2RhdGEgPSBmYWxzZSk7CitdKTsKKworIyBTdG9wIHRoZSBzdGFuZGJ5IGFz c29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3Qgc28K KyMgdGhhdCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IHdvbid0IHJlY2VpdmUgY2hhbmdl cyB1bnRpbCB0aGUgc3RhbmRieQorIyBjb21lcyB1cC4KKyRzdGFuZGJ5MS0+c3RvcDsKKworIyBD cmVhdGUgc29tZSBkYXRhIG9uIHRoZSBwcmltYXJ5CitteSAkcHJpbWFyeV9yb3dfY291bnQgPSAx MDsKKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX2lu dCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsICRwcmltYXJ5X3Jvd19jb3VudCk7Iik7CisKKyMg V2FpdCBmb3IgdGhlIHN0YW5kYnkgdGhhdCdzIHVwIGFuZCBydW5uaW5nIGdldHMgdGhlIGRhdGEg ZnJvbSBwcmltYXJ5CiskcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnky KTsKKyRyZXN1bHQgPSAkc3RhbmRieTItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg Y291bnQoKikgPSAkcHJpbWFyeV9yb3dfY291bnQgRlJPTSB0YWJfaW50OyIpOworaXMoJHJlc3Vs dCwgJ3QnLCAic3RhbmRieTIgZ2V0cyBkYXRhIGZyb20gcHJpbWFyeSIpOworCisjIFdhaXQgZm9y IHRoZSBzdWJzY3JpcHRpb24gdGhhdCdzIHVwIGFuZCBydW5uaW5nIGFuZCBpcyBub3QgZW5hYmxl ZCBmb3IgZmFpbG92ZXIuCisjIEl0IGdldHMgdGhlIGRhdGEgZnJvbSBwcmltYXJ5IHdpdGhvdXQg d2FpdGluZyBmb3IgYW55IHN0YW5kYnlzLgorJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgn cmVncmVzc19teXN1YjInKTsKKyRyZXN1bHQgPSAkc3Vic2NyaWJlcjItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSAkcHJpbWFyeV9yb3dfY291bnQgRlJPTSB0YWJf aW50OyIpOworaXMoJHJlc3VsdCwgJ3QnLCAic3Vic2NyaWJlcjIgZ2V0cyBkYXRhIGZyb20gcHJp bWFyeSIpOworCisjIFRoZSBzdWJzY3JpcHRpb24gdGhhdCdzIHVwIGFuZCBydW5uaW5nIGFuZCBp cyBlbmFibGVkIGZvciBmYWlsb3ZlcgorIyBkb2Vzbid0IGdldCB0aGUgZGF0YSBmcm9tIHByaW1h cnkgYW5kIGtlZXBzIHdhaXRpbmcgZm9yIHRoZQorIyBzdGFuZGJ5IHNwZWNpZmllZCBpbiBzdGFu ZGJ5X3Nsb3RfbmFtZXMuCiskcmVzdWx0ID0KKyAgJHN1YnNjcmliZXIxLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSA9IDAgRlJPTSB0YWJfaW50OyIpOworaXMoJHJlc3Vs dCwgJ3QnLAorCSJzdWJzY3JpYmVyMSBkb2Vzbid0IGdldCBkYXRhIGZyb20gcHJpbWFyeSB1bnRp bCBzdGFuZGJ5MSBhY2tub3dsZWRnZXMgY2hhbmdlcyIKKyk7CisKKyMgU3RhcnQgdGhlIHN0YW5k Ynkgc3BlY2lmaWVkIGluIHN0YW5kYnlfc2xvdF9uYW1lcyBhbmQgd2FpdCBmb3IgaXQgdG8gY2F0 Y2gKKyMgdXAgd2l0aCB0aGUgcHJpbWFyeS4KKyRzdGFuZGJ5MS0+c3RhcnQ7CiskcHJpbWFyeS0+ d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKKyRyZXN1bHQgPSAkc3RhbmRieTEt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSAkcHJpbWFyeV9yb3df Y291bnQgRlJPTSB0YWJfaW50OyIpOworaXMoJHJlc3VsdCwgJ3QnLCAic3RhbmRieTEgZ2V0cyBk YXRhIGZyb20gcHJpbWFyeSIpOworCisjIE5vdyB0aGF0IHRoZSBzdGFuZGJ5IHNwZWNpZmllZCBp biBzdGFuZGJ5X3Nsb3RfbmFtZXMgaXMgdXAgYW5kIHJ1bm5pbmcsCisjIHByaW1hcnkgbXVzdCBz ZW5kIHRoZSBkZWNvZGVkIGNoYW5nZXMgdG8gc3Vic2NyaXB0aW9uIGVuYWJsZWQgZm9yIGZhaWxv dmVyCisjIFdoaWxlIHRoZSBzdGFuZGJ5IHdhcyBkb3duLCB0aGlzIHN1YnNjcmliZXIgZGlkbid0 IHJlY2VpdmUgYW55IGRhdGEgZnJvbQorIyBwcmltYXJ5IGkuZS4gdGhlIHByaW1hcnkgZGlkbid0 IGFsbG93IGl0IHRvIGdvIGFoZWFkIG9mIHN0YW5kYnkuCiskcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCdyZWdyZXNzX215c3ViMScpOworJHJlc3VsdCA9ICRzdWJzY3JpYmVyMS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSA9ICRwcmltYXJ5X3Jvd19jb3VudCBG Uk9NIHRhYl9pbnQ7Iik7CitpcygkcmVzdWx0LCAndCcsCisJInN1YnNjcmliZXIxIGdldHMgZGF0 YSBmcm9tIHByaW1hcnkgYWZ0ZXIgc3RhbmRieTEgYWNrbm93bGVkZ2VzIGNoYW5nZXMiKTsKKwor IyBTdG9wIHRoZSBzdGFuZGJ5IGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHBoeXNpY2Fs IHJlcGxpY2F0aW9uIHNsb3Qgc28KKyMgdGhhdCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90 IHdvbid0IHJlY2VpdmUgY2hhbmdlcyB1bnRpbCB0aGUgc3RhbmRieQorIyBzbG90J3MgcmVzdGFy dF9sc24gaXMgYWR2YW5jZWQgb3IgdGhlIHNsb3QgaXMgcmVtb3ZlZCBmcm9tIHRoZQorIyBzdGFu ZGJ5X3Nsb3RfbmFtZXMgbGlzdC4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi VFJVTkNBVEUgdGFiX2ludDsiKTsKKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3JlZ3Jl c3NfbXlzdWIxJyk7Ciskc3RhbmRieTEtPnN0b3A7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFZlcmlmeSB0aGF0IHdoZW4gdXNpbmcgcGdf bG9naWNhbF9zbG90X2dldF9jaGFuZ2VzIHRvIGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEKKyMgbG9n aWNhbCBzbG90IHdpdGggZmFpbG92ZXIgZW5hYmxlZCwgaXQgd2lsbCBhbHNvIHdhaXQgZm9yIHRo ZSBzbG90cyBzcGVjaWZpZWQKKyMgaW4gc3RhbmRieV9zbG90X25hbWVzIHRvIGNhdGNoIHVwLgor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBD cmVhdGUgYSBsb2dpY2FsICd0ZXN0X2RlY29kaW5nJyByZXBsaWNhdGlvbiBzbG90IHdpdGggZmFp bG92ZXIgZW5hYmxlZAorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCd0ZXN0X3Nsb3QnLCAndGVzdF9k ZWNvZGluZycsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7IgorKTsKKworbXkgJGJhY2tfcSA9ICRwcmlt YXJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKK215 ICRwaWQgPSAkYmFja19xLT5xdWVyeSgnU0VMRUNUIHBnX2JhY2tlbmRfcGlkKCknKTsKKworIyBU cnkgYW5kIGdldCBjaGFuZ2VzIGZyb20gdGhlIGxvZ2ljYWwgc2xvdCB3aXRoIGZhaWxvdmVyIGVu YWJsZWQuCitteSAkb2Zmc2V0ID0gLXMgJHByaW1hcnktPmxvZ2ZpbGU7CiskYmFja19xLT5xdWVy eV91bnRpbChxci8vLAorCSJTRUxFQ1QgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCd0ZXN0 X3Nsb3QnLCBOVUxMLCBOVUxMKTtcbiIpOworCisjIFdhaXQgdW50aWwgdGhlIHByaW1hcnkgc2Vy dmVyIGxvZ3MgYSB3YXJuaW5nIGluZGljYXRpbmcgdGhhdCBpdCBpcyB3YWl0aW5nCisjIGZvciB0 aGUgc2IxX3Nsb3QgdG8gY2F0Y2ggdXAuCiskcHJpbWFyeS0+d2FpdF9mb3JfbG9nKAorCXFyL1dB Uk5JTkc6ICggW0EtWjAtOV0rOik/IHJlcGxpY2F0aW9uIHNsb3QgXCJzYjFfc2xvdFwiIHNwZWNp ZmllZCBpbiBwYXJhbWV0ZXIgXCJzdGFuZGJ5X3Nsb3RfbmFtZXNcIiBkb2VzIG5vdCBoYXZlIGFj dGl2ZV9waWQvLAorCSRvZmZzZXQpOworCitvaygkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgcGdfY2FuY2VsX2JhY2tlbmQoJHBpZCkiKSwKKwkiY2FuY2VsbGluZyBwZ19s b2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMgY29tbWFuZCIpOworCiskYmFja19xLT5xdWl0OworCisk cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2Ryb3BfcmVwbGlj YXRpb25fc2xvdCgndGVzdF9zbG90Jyk7IgorKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB0aGF0IGxvZ2ljYWwgcmVwbGljYXRp b24gd2lsbCB3YWl0IGZvciB0aGUgdXNlci1jcmVhdGVkIGluYWN0aXZlCisjIHBoeXNpY2FsIHNs b3QgdG8gY2F0Y2ggdXAgdW50aWwgd2UgcmVtb3ZlIHRoZSBzbG90IGZyb20gc3RhbmRieV9zbG90 X25hbWVzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworIyBDcmVhdGUgc29tZSBkYXRhIG9uIHRoZSBwcmltYXJ5CiskcHJpbWFyeV9yb3dfY291 bnQgPSAxMDsKKyRwcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8g dGFiX2ludCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsICRwcmltYXJ5X3Jvd19jb3VudCk7Iik7 CisKKyRyZXN1bHQgPQorICAkc3Vic2NyaWJlcjEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIGNvdW50KCopID0gMCBGUk9NIHRhYl9pbnQ7Iik7CitpcygkcmVzdWx0LCAndCcsCisJInN1 YnNjcmliZXIxIGRvZXNuJ3QgZ2V0IGRhdGEgYXMgdGhlIHNiMV9zbG90IGRvZXNuJ3QgY2F0Y2gg dXAiKTsKKworIyBSZW1vdmUgdGhlIHN0YW5kYnkgZnJvbSB0aGUgc3RhbmRieV9zbG90X25hbWVz IGxpc3QgYW5kIHJlbG9hZCB0aGUKKyMgY29uZmlndXJhdGlvbi4KKyRwcmltYXJ5LT5hZGp1c3Rf Y29uZigncG9zdGdyZXNxbC5jb25mJywgJ3N0YW5kYnlfc2xvdF9uYW1lcycsICInJyIpOworJHBy aW1hcnktPnJlbG9hZDsKKworIyBTaW5jZSB0aGVyZSBhcmUgbm8gc2xvdHMgaW4gc3RhbmRieV9z bG90X25hbWVzLCB0aGUgcHJpbWFyeSBzZXJ2ZXIgc2hvdWxkIG5vdworIyBzZW5kIHRoZSBkZWNv ZGVkIGNoYW5nZXMgdG8gdGhlIHN1YnNjcmlwdGlvbi4KKyRwdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJ3JlZ3Jlc3NfbXlzdWIxJyk7CiskcmVzdWx0ID0gJHN1YnNjcmliZXIxLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopID0gJHByaW1hcnlfcm93X2NvdW50IEZS T00gdGFiX2ludDsiKTsKK2lzKCRyZXN1bHQsICd0JywKKwkic3Vic2NyaWJlcjEgZ2V0cyBkYXRh IGZyb20gcHJpbWFyeSBhZnRlciBzdGFuZGJ5MSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YW5kYnlf c2xvdF9uYW1lcyBsaXN0IgorKTsKKworIyBQdXQgdGhlIHN0YW5kYnkgYmFjayBvbiB0aGUgcHJp bWFyeV9zbG90X25hbWUgZm9yIHRoZSByZXN0IG9mIHRoZSB0ZXN0cworJHByaW1hcnktPmFkanVz dF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3RhbmRieV9zbG90X25hbWVzJywgJ3NiMV9zbG90 Jyk7CiskcHJpbWFyeS0+cmVsb2FkOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMgb24gdGhl IHN0YW5kYnkKKyMgQ29uZmlndXJlIHN0YW5kYnkxIHRvIHJlcGxpY2F0ZSBhbmQgc3luY2hyb25p emUgbG9naWNhbCBzbG90cyBjb25maWd1cmVkCisjIGZvciBmYWlsb3ZlciBvbiB0aGUgcHJpbWFy eQorIworIyAgICAgICAgICAgICAgZmFpbG92ZXIgc2xvdCBsc3ViMV9zbG90LT58IC0tLS0+IHN1 YnNjcmliZXIxIChjb25uZWN0ZWQgdmlhIGxvZ2ljYWwgcmVwbGljYXRpb24pCisjIHByaW1hcnkg LS0tPiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyMgICAgICAgICAgICAgIHBoeXNpY2Fs IHNsb3Qgc2IxX3Nsb3QtLS0+fCAtLS0tPiBzdGFuZGJ5MSAoY29ubmVjdGVkIHZpYSBzdHJlYW1p bmcgcmVwbGljYXRpb24pCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgIGxzdWIxX3Nsb3Qoc3luY2VkX3Nsb3QpCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIENyZWF0ZSBhIHN0YW5k YnkKIG15ICRjb25uc3RyXzEgPSAkcHJpbWFyeS0+Y29ubnN0cjsKICRzdGFuZGJ5MS0+YXBwZW5k X2NvbmYoCiAJJ3Bvc3RncmVzcWwuY29uZicsIHFxKAogZW5hYmxlX3N5bmNzbG90ID0gdHJ1ZQog aG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgotcHJpbWFyeV9zbG90X25hbWUgPSAnc2IxX3Nsb3Qn CiBwcmltYXJ5X2Nvbm5pbmZvID0gJyRjb25uc3RyXzEgZGJuYW1lPXBvc3RncmVzJwogKSk7CiAK LSRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCi0JcXtTRUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2Fs X3JlcGxpY2F0aW9uX3Nsb3QoJ3NiMV9zbG90Jyk7fSk7Ci0KIG15ICRzdGFuZGJ5MV9jb25uaW5m byA9ICRzdGFuZGJ5MS0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKLW15ICRvZmZzZXQg PSAtcyAkc3RhbmRieTEtPmxvZ2ZpbGU7Ciskb2Zmc2V0ID0gLXMgJHN0YW5kYnkxLT5sb2dmaWxl OwogCiAjIFN0YXJ0IHRoZSBzdGFuZGJ5IHNvIHRoYXQgc2xvdCBzeW5jaW5nIGNhbiBiZWdpbgog JHN0YW5kYnkxLT5zdGFydDsKQEAgLTE2MiwxOCArMzU1LDExIEBAIGlzKCRzdGFuZGJ5MS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAjIEluc2VydCBkYXRhIG9uIHRoZSBwcmltYXJ5CiAkcHJpbWFy eS0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxWwotCUNSRUFURSBUQUJMRSB0YWJfaW50IChh IGludCBQUklNQVJZIEtFWSk7CisJVFJVTkNBVEUgVEFCTEUgdGFiX2ludDsKIAlJTlNFUlQgSU5U TyB0YWJfaW50IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApOwogXSk7CiAKLSMgU3Vic2Ny aWJlIHRvIHRoZSBuZXcgdGFibGUgZGF0YSBhbmQgd2FpdCBmb3IgaXQgdG8gYXJyaXZlCi0kc3Vi c2NyaWJlcjEtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcVsKLQlDUkVBVEUgVEFCTEUgdGFi X2ludCAoYSBpbnQgUFJJTUFSWSBLRVkpOwotCUFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX215 c3ViMSBSRUZSRVNIIFBVQkxJQ0FUSU9OOwotXSk7Ci0KLSRzdWJzY3JpYmVyMS0+d2FpdF9mb3Jf c3Vic2NyaXB0aW9uX3N5bmM7CiskcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19t eXN1YjEnKTsKIAogIyBEbyBub3QgYWxsb3cgYW55IGZ1cnRoZXIgYWR2YW5jZW1lbnQgb2YgdGhl IHJlc3RhcnRfbHNuIGFuZAogIyBjb25maXJtZWRfZmx1c2hfbHNuIGZvciB0aGUgbHN1YjFfc2xv dC4KLS0gCjIuMzQuMQoK --0000000000005d8a070610293ea4 Content-Type: application/octet-stream; name="v74-0005-Document-the-steps-to-check-if-the-standby-is-re.patch" Content-Disposition: attachment; filename="v74-0005-Document-the-steps-to-check-if-the-standby-is-re.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls0cxc5a4 RnJvbSAzMzNlMzIwZmYwYTM4OTA4MjVlMzRiYTI0MDY1NWQyNjc5ZGVmMjNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTkgSmFuIDIwMjQgMTE6MDQ6MTYgKzA1MzAKU3ViamVjdDogW1BBVENIIHY3 NCA1LzVdIERvY3VtZW50IHRoZSBzdGVwcyB0byBjaGVjayBpZiB0aGUgc3RhbmRieSBpcyByZWFk eQogZm9yIGZhaWxvdmVyCgotLS0KIGRvYy9zcmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0eS5zZ21s ICAgfCAgIDkgKysKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgfCAxMzAg KysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTM5IGluc2VydGlv bnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaGlnaC1hdmFpbGFiaWxpdHkuc2dtbCBi L2RvYy9zcmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0eS5zZ21sCmluZGV4IDIzNmMwYWY2NWYuLjM2 MjE1YWE2OGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0eS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0eS5zZ21sCkBAIC0xNDg3LDYgKzE0 ODcsMTUgQEAgc3luY2hyb25vdXNfc3RhbmRieV9uYW1lcyA9ICdBTlkgMiAoczEsIHMyLCBzMykn CiAgICAgV3JpdHRlbiBhZG1pbmlzdHJhdGlvbiBwcm9jZWR1cmVzIGFyZSBhZHZpc2VkLgogICAg PC9wYXJhPgogCisgICA8cGFyYT4KKyAgICBJZiB5b3UgaGF2ZSBvcHRlZCBmb3Igc3luY2hyb25p emF0aW9uIG9mIGxvZ2ljYWwgc2xvdHMgKHNlZQorICAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWxk ZWNvZGluZy1yZXBsaWNhdGlvbi1zbG90cy1zeW5jaHJvbml6YXRpb24iLz4pLAorICAgIHRoZW4g YmVmb3JlIHN3aXRjaGluZyB0byB0aGUgc3RhbmRieSBzZXJ2ZXIsIGl0IGlzIHJlY29tbWVuZGVk IHRvIGNoZWNrCisgICAgaWYgdGhlIGxvZ2ljYWwgc2xvdHMgc3luY2hyb25pemVkIG9uIHRoZSBz dGFuZGJ5IHNlcnZlciBhcmUgcmVhZHkKKyAgICBmb3IgZmFpbG92ZXIuIFRoaXMgY2FuIGJlIGRv bmUgYnkgZm9sbG93aW5nIHRoZSBzdGVwcyBkZXNjcmliZWQgaW4KKyAgICA8eHJlZiBsaW5rZW5k PSJsb2dpY2FsLXJlcGxpY2F0aW9uLWZhaWxvdmVyIi8+LgorICAgPC9wYXJhPgorCiAgICA8cGFy YT4KICAgICBUbyB0cmlnZ2VyIGZhaWxvdmVyIG9mIGEgbG9nLXNoaXBwaW5nIHN0YW5kYnkgc2Vy dmVyLCBydW4KICAgICA8Y29tbWFuZD5wZ19jdGwgcHJvbW90ZTwvY29tbWFuZD4gb3IgY2FsbCA8 ZnVuY3Rpb24+cGdfcHJvbW90ZSgpPC9mdW5jdGlvbj4uCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGlj YXRpb24uc2dtbAppbmRleCBlYzIxMzA2NjllLi45MjRlNGVhMDMzIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dp Y2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTY4Nyw2ICs2ODcsMTM2IEBAIEFMVEVSIFNVQlNDUklQ VElPTgogCiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1mYWls b3ZlciI+CisgIDx0aXRsZT5Mb2dpY2FsIFJlcGxpY2F0aW9uIEZhaWxvdmVyPC90aXRsZT4KKwor ICA8cGFyYT4KKyAgIFdoZW4gdGhlIHB1Ymxpc2hlciBzZXJ2ZXIgaXMgdGhlIHByaW1hcnkgc2Vy dmVyIG9mIGEgc3RyZWFtaW5nIHJlcGxpY2F0aW9uLAorICAgdGhlIGxvZ2ljYWwgc2xvdHMgb24g dGhhdCBwcmltYXJ5IHNlcnZlciBjYW4gYmUgc3luY2hyb25pemVkIHRvIHRoZSBzdGFuZGJ5Cisg ICBzZXJ2ZXIgYnkgc3BlY2lmeWluZyA8bGl0ZXJhbD5mYWlsb3ZlciA9IHRydWU8L2xpdGVyYWw+ IHdoZW4gY3JlYXRpbmcKKyAgIHN1YnNjcmlwdGlvbnMgZm9yIHRob3NlIHB1YmxpY2F0aW9ucy4g RW5hYmxpbmcgZmFpbG92ZXIgZW5zdXJlcyBhIHNlYW1sZXNzCisgICB0cmFuc2l0aW9uIG9mIHRo b3NlIHN1YnNjcmlwdGlvbnMgYWZ0ZXIgdGhlIHN0YW5kYnkgaXMgcHJvbW90ZWQuIFRoZXkgY2Fu CisgICBjb250aW51ZSBzdWJzY3JpYmluZyB0byBwdWJsaWNhdGlvbnMgbm93IG9uIHRoZSBuZXcg cHJpbWFyeSBzZXJ2ZXIgd2l0aG91dAorICAgYW55IGRhdGEgbG9zcy4KKyAgPC9wYXJhPgorCisg IDxwYXJhPgorICAgQmVjYXVzZSB0aGUgc2xvdCBzeW5jaHJvbml6YXRpb24gbG9naWMgY29waWVz IGFzeW5jaHJvbm91c2x5LCBpdCBpcworICAgbmVjZXNzYXJ5IHRvIGNvbmZpcm0gdGhhdCByZXBs aWNhdGlvbiBzbG90cyBoYXZlIGJlZW4gc3luY2VkIHRvIHRoZSBzdGFuZGJ5CisgICBzZXJ2ZXIg YmVmb3JlIHRoZSBmYWlsb3ZlciBoYXBwZW5zLiBGdXJ0aGVybW9yZSwgdG8gZW5zdXJlIGEgc3Vj Y2Vzc2Z1bAorICAgZmFpbG92ZXIsIHRoZSBzdGFuZGJ5IHNlcnZlciBtdXN0IG5vdCBiZSBsYWdn aW5nIGJlaGluZCB0aGUgc3Vic2NyaWJlci4gSXQKKyAgIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0 byB1c2UKKyAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1zdGFuZGJ5LXNsb3QtbmFtZXMiPjx2YXJuYW1l PnN0YW5kYnlfc2xvdF9uYW1lczwvdmFybmFtZT48L2xpbms+CisgICB0byBwcmV2ZW50IHRoZSBz dWJzY3JpYmVyIGZyb20gY29uc3VtaW5nIGNoYW5nZXMgZmFzdGVyIHRoYW4gdGhlIGhvdCBzdGFu ZGJ5LgorICAgVG8gY29uZmlybSB0aGF0IHRoZSBzdGFuZGJ5IHNlcnZlciBpcyBpbmRlZWQgcmVh ZHkgZm9yIGZhaWxvdmVyLCBmb2xsb3cKKyAgIHRoZXNlIDIgc3RlcHM6CisgIDwvcGFyYT4KKwor ICA8cHJvY2VkdXJlPgorICAgPHN0ZXAgcGVyZm9ybWFuY2U9InJlcXVpcmVkIj4KKyAgICA8cGFy YT4KKyAgICAgQ29uZmlybSB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IGxvZ2ljYWwgcmVwbGljYXRp b24gc2xvdHMgaGF2ZSBiZWVuIHN5bmNlZCB0bworICAgICB0aGUgc3RhbmRieSBzZXJ2ZXIuCisg ICAgPC9wYXJhPgorICAgIDxzdWJzdGVwcz4KKyAgICAgPHN0ZXAgcGVyZm9ybWFuY2U9InJlcXVp cmVkIj4KKyAgICAgIDxwYXJhPgorICAgICAgIEZpcnN0bHksIG9uIHRoZSBzdWJzY3JpYmVyIG5v ZGUsIHVzZSB0aGUgZm9sbG93aW5nIFNRTCB0byBpZGVudGlmeQorICAgICAgIHdoaWNoIHNsb3Rz IHNob3VsZCBiZSBzeW5jZWQgdG8gdGhlIHN0YW5kYnkgdGhhdCB3ZSBwbGFuIHRvIHByb21vdGUu Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0ZXN0X3N1Yj0jIFNFTEVDVAorICAgICAgICAgICAgICAgYXJy YXlfYWdnKHNsb3RuYW1lKSBBUyBzbG90cworICAgICAgICAgICBGUk9NCisgICAgICAgICAgICgo CisgICAgICAgICAgICAgICBTRUxFQ1Qgci5zcnN1YmlkIEFTIHN1YmlkLCBDT05DQVQoJ3BnXycg fHwgc3JzdWJpZCB8fCAnX3N5bmNfJyB8fCBzcnJlbGlkIHx8ICdfJyB8fCBjdGwuc3lzdGVtX2lk ZW50aWZpZXIpIEFTIHNsb3RuYW1lCisgICAgICAgICAgICAgICBGUk9NIHBnX2NvbnRyb2xfc3lz dGVtKCkgY3RsLCBwZ19zdWJzY3JpcHRpb25fcmVsIHIsIHBnX3N1YnNjcmlwdGlvbiBzCisgICAg ICAgICAgICAgICBXSEVSRSByLnNyc3Vic3RhdGUgPSAnZicgQU5EIHMub2lkID0gci5zcnN1Ymlk IEFORCBzLnN1YmZhaWxvdmVyCisgICAgICAgICAgICkgVU5JT04gKAorICAgICAgICAgICAgICAg U0VMRUNUIHMub2lkIEFTIHN1YmlkLCBzLnN1YnNsb3RuYW1lIGFzIHNsb3RuYW1lCisgICAgICAg ICAgICAgICBGUk9NIHBnX3N1YnNjcmlwdGlvbiBzCisgICAgICAgICAgICAgICBXSEVSRSBzLnN1 YmZhaWxvdmVyCisgICAgICAgICAgICkpOworIHNsb3RzCistLS0tLS0tCisge3N1YjEsc3ViMixz dWIzfQorKDEgcm93KQorPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisgICAgIDwvc3RlcD4KKyAg ICAgPHN0ZXAgcGVyZm9ybWFuY2U9InJlcXVpcmVkIj4KKyAgICAgIDxwYXJhPgorICAgICAgIE5l eHQsIGNoZWNrIHRoYXQgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdHMgaWRlbnRpZmllZCBh Ym92ZSBleGlzdCBvbgorICAgICAgIHRoZSBzdGFuZGJ5IHNlcnZlciBhbmQgYXJlIHJlYWR5IGZv ciBmYWlsb3Zlci4KKzxwcm9ncmFtbGlzdGluZz4KK3Rlc3Rfc3RhbmRieT0jIFNFTEVDVCBzbG90 X25hbWUsIChzeW5jZWQgQU5EIE5PVCB0ZW1wb3JhcnkgQU5EIGNvbmZsaWN0X3JlYXNvbiBJUyBO VUxMKSBBUyBmYWlsb3Zlcl9yZWFkeQorICAgICAgICAgICAgICAgRlJPTSBwZ19yZXBsaWNhdGlv bl9zbG90cworICAgICAgICAgICAgICAgV0hFUkUgc2xvdF9uYW1lIElOICgnc3ViMScsJ3N1YjIn LCdzdWIzJyk7CisgIHNsb3RfbmFtZSAgfCBmYWlsb3Zlcl9yZWFkeQorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tCisgIHN1YjEgICAgICAgfCB0CisgIHN1YjIgICAgICAgfCB0CisgIHN1 YjMgICAgICAgfCB0CisoMyByb3dzKQorPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisgICAgIDwv c3RlcD4KKyAgICA8L3N1YnN0ZXBzPgorICAgPC9zdGVwPgorCisgICA8c3RlcCBwZXJmb3JtYW5j ZT0icmVxdWlyZWQiPgorICAgIDxwYXJhPgorICAgICBDb25maXJtIHRoYXQgdGhlIHN0YW5kYnkg c2VydmVyIGlzIG5vdCBsYWdnaW5nIGJlaGluZCB0aGUgc3Vic2NyaWJlcnMuCisgICAgIFRoaXMg c3RlcCBjYW4gYmUgc2tpcHBlZCBpZgorICAgICA8bGluayBsaW5rZW5kPSJndWMtc3RhbmRieS1z bG90LW5hbWVzIj48dmFybmFtZT5zdGFuZGJ5X3Nsb3RfbmFtZXM8L3Zhcm5hbWU+PC9saW5rPgor ICAgICBoYXMgYmVlbiBjb3JyZWN0bHkgY29uZmlndXJlZC4KKyAgICA8L3BhcmE+CisgICAgIDxz dWJzdGVwcz4KKyAgICAgIDxzdGVwIHBlcmZvcm1hbmNlPSJyZXF1aXJlZCI+CisgICAgICAgPHBh cmE+CisgICAgICAgIEZpcnN0bHksIG9uIHRoZSBzdWJzY3JpYmVyIG5vZGUgY2hlY2sgdGhlIGxh c3QgcmVwbGF5ZWQgV0FMLgorPHByb2dyYW1saXN0aW5nPgordGVzdF9zdWI9IyBTRUxFQ1QKKyAg ICAgICAgICAgICAgIE1BWChyZW1vdGVfbHNuKSBBUyByZW1vdGVfbHNuX29uX3N1YnNjcmliZXIK KyAgICAgICAgICAgRlJPTQorICAgICAgICAgICAoKAorICAgICAgICAgICAgICAgU0VMRUNUIChD QVNFIFdIRU4gci5zcnN1YnN0YXRlID0gJ2YnIFRIRU4gcGdfcmVwbGljYXRpb25fb3JpZ2luX3By b2dyZXNzKENPTkNBVCgncGdfJyB8fCByLnNyc3ViaWQgfHwgJ18nIHx8IHIuc3JyZWxpZCksIGZh bHNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFTiByLnNyc3Vic3RhdGUgSU4gKCdz JywgJ3InKSBUSEVOIHIuc3JzdWJsc24gRU5EKSBBUyByZW1vdGVfbHNuCisgICAgICAgICAgICAg ICBGUk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgciwgcGdfc3Vic2NyaXB0aW9uIHMKKyAgICAgICAg ICAgICAgIFdIRVJFIHIuc3JzdWJzdGF0ZSBJTiAoJ2YnLCAncycsICdyJykgQU5EIHMub2lkID0g ci5zcnN1YmlkIEFORCBzLnN1YmZhaWxvdmVyCisgICAgICAgICAgICkgVU5JT04gKAorICAgICAg ICAgICAgICAgU0VMRUNUIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9wcm9ncmVzcyhDT05DQVQoJ3Bn XycgfHwgcy5vaWQpLCBmYWxzZSkgQVMgcmVtb3RlX2xzbgorICAgICAgICAgICAgICAgRlJPTSBw Z19zdWJzY3JpcHRpb24gcworICAgICAgICAgICAgICAgV0hFUkUgcy5zdWJmYWlsb3ZlcgorICAg ICAgICAgICApKTsKKyByZW1vdGVfbHNuX29uX3N1YnNjcmliZXIKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgMC8zMDAwMzg4Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKyAgICA8L3N0 ZXA+CisgICAgPHN0ZXAgcGVyZm9ybWFuY2U9InJlcXVpcmVkIj4KKyAgICAgPHBhcmE+CisgICAg ICBOZXh0LCBvbiB0aGUgc3RhbmRieSBzZXJ2ZXIgY2hlY2sgdGhhdCB0aGUgbGFzdC1yZWNlaXZl ZCBXQUwgbG9jYXRpb24KKyAgICAgIGlzIGFoZWFkIG9mIHRoZSByZXBsYXllZCBXQUwgbG9jYXRp b24gb24gdGhlIHN1YnNjcmliZXIgaWRlbnRpZmllZCBhYm92ZS4KKyAgICAgIElmIHRoZSBhYm92 ZSBTUUwgcmVzdWx0IHdhcyBOVUxMLCBpdCBtZWFucyB0aGUgc3Vic2NyaWJlciBoYXMgbm90IHll dAorICAgICAgcmVwbGF5ZWQgYW55IFdBTCwgc28gdGhlIHN0YW5kYnkgc2VydmVyIG11c3QgYmUg YWhlYWQgb2YgdGhlCisgICAgICBzdWJzY3JpYmVyLCBhbmQgdGhpcyBzdGVwIGNhbiBiZSBza2lw cGVkLgorPHByb2dyYW1saXN0aW5nPgordGVzdF9zdGFuZGJ5PSMgU0VMRUNUIHBnX2xhc3Rfd2Fs X3JlY2VpdmVfbHNuKCkgPj0gJzAvMzAwMDM4OCc6OnBnX2xzbiBBUyBmYWlsb3Zlcl9yZWFkeTsK KyBmYWlsb3Zlcl9yZWFkeQorLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKzwvcHJvZ3Jh bWxpc3Rpbmc+PC9wYXJhPgorICAgICA8L3N0ZXA+CisgICAgPC9zdWJzdGVwcz4KKyAgIDwvc3Rl cD4KKyAgPC9wcm9jZWR1cmU+CisKKyAgPHBhcmE+CisgICBJZiB0aGUgcmVzdWx0ICg8bGl0ZXJh bD5mYWlsb3Zlcl9yZWFkeTwvbGl0ZXJhbD4pIG9mIGJvdGggYWJvdmUgc3RlcHMgaXMKKyAgIHRy dWUsIGV4aXN0aW5nIHN1YnNjcmlwdGlvbnMgd2lsbCBiZSBhYmxlIHRvIGNvbnRpbnVlIHdpdGhv dXQgZGF0YSBsb3NzLgorICA8L3BhcmE+CisKKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJsb2dp Y2FsLXJlcGxpY2F0aW9uLXJvdy1maWx0ZXIiPgogICA8dGl0bGU+Um93IEZpbHRlcnM8L3RpdGxl PgogCi0tIAoyLjM0LjEKCg== --0000000000005d8a070610293ea4 Content-Type: application/octet-stream; name="v74-0004-Non-replication-connection-and-app_name-change.patch" Content-Disposition: attachment; filename="v74-0004-Non-replication-connection-and-app_name-change.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls0cxc5a3 RnJvbSA0MGExZTNmOTM0ZWFhMWNlYzZjYjVjMjExMTMzOTAzYWMwZDI4ZTZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjMgSmFuIDIwMjQgMTU6NDg6NTMgKzA1MzAKU3ViamVjdDogW1BBVENIIHY3 NCA0LzVdIE5vbiByZXBsaWNhdGlvbiBjb25uZWN0aW9uIGFuZCBhcHBfbmFtZSBjaGFuZ2UuCgpU aGlzIHBhdGNoIGhhcyBjb252ZXJ0ZWQgcmVwbGljYXRpb24gY29ubmVjdGlvbiB0byBub24tcmVw bGljYXRpb24Kb25lIGluIHRoZSBzbG90c3luYyB3b3JrZXIuCgpJdCBoYXMgYWxzbyBjaGFuZ2Vk IHRoZSBhcHBfbmFtZSB0byB7Y2x1c3Rlcl9uYW1lfV9zbG90c3luY3dvcmtlcgppbiB0aGUgc2xv dHN5bmMgd29ya2VyIGNvbm5lY3Rpb24uCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2Ny aXB0aW9uY21kcy5jICAgICAgIHwgIDggKystLQogLi4uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3 YWxyZWNlaXZlci5jICAgICAgIHwgNDQgKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jICAgIHwgMTMgKysrKystCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAgMiArLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAgICAgfCAgNSArKy0KIDcgZmlsZXMgY2hhbmdlZCwg NTIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jCmluZGV4IGI2NDdhODFmYzguLmE0MDBiYTBlNDAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTc1OSw3ICs3NTksNyBAQCBDcmVhdGVT dWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpz dG10LAogCiAJCS8qIFRyeSB0byBjb25uZWN0IHRvIHRoZSBwdWJsaXNoZXIuICovCiAJCW11c3Rf dXNlX3Bhc3N3b3JkID0gIXN1cGVydXNlcl9hcmcob3duZXIpICYmIG9wdHMucGFzc3dvcmRyZXF1 aXJlZDsKLQkJd3Jjb25uID0gd2FscmN2X2Nvbm5lY3QoY29ubmluZm8sIHRydWUsIG11c3RfdXNl X3Bhc3N3b3JkLAorCQl3cmNvbm4gPSB3YWxyY3ZfY29ubmVjdChjb25uaW5mbywgdHJ1ZSwgdHJ1 ZSwgbXVzdF91c2VfcGFzc3dvcmQsCiAJCQkJCQkJCXN0bXQtPnN1Ym5hbWUsICZlcnIpOwogCQlp ZiAoIXdyY29ubikKIAkJCWVyZXBvcnQoRVJST1IsCkBAIC05MTAsNyArOTEwLDcgQEAgQWx0ZXJT dWJzY3JpcHRpb25fcmVmcmVzaChTdWJzY3JpcHRpb24gKnN1YiwgYm9vbCBjb3B5X2RhdGEsCiAK IAkvKiBUcnkgdG8gY29ubmVjdCB0byB0aGUgcHVibGlzaGVyLiAqLwogCW11c3RfdXNlX3Bhc3N3 b3JkID0gc3ViLT5wYXNzd29yZHJlcXVpcmVkICYmICFzdWItPm93bmVyc3VwZXJ1c2VyOwotCXdy Y29ubiA9IHdhbHJjdl9jb25uZWN0KHN1Yi0+Y29ubmluZm8sIHRydWUsIG11c3RfdXNlX3Bhc3N3 b3JkLAorCXdyY29ubiA9IHdhbHJjdl9jb25uZWN0KHN1Yi0+Y29ubmluZm8sIHRydWUsIHRydWUs IG11c3RfdXNlX3Bhc3N3b3JkLAogCQkJCQkJCXN1Yi0+bmFtZSwgJmVycik7CiAJaWYgKCF3cmNv bm4pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xNTM3LDcgKzE1MzcsNyBAQCBBbHRlclN1YnNjcmlw dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAog CQkvKiBUcnkgdG8gY29ubmVjdCB0byB0aGUgcHVibGlzaGVyLiAqLwogCQltdXN0X3VzZV9wYXNz d29yZCA9IHN1Yi0+cGFzc3dvcmRyZXF1aXJlZCAmJiAhc3ViLT5vd25lcnN1cGVydXNlcjsKLQkJ d3Jjb25uID0gd2FscmN2X2Nvbm5lY3Qoc3ViLT5jb25uaW5mbywgdHJ1ZSwgbXVzdF91c2VfcGFz c3dvcmQsCisJCXdyY29ubiA9IHdhbHJjdl9jb25uZWN0KHN1Yi0+Y29ubmluZm8sIHRydWUsIHRy dWUsIG11c3RfdXNlX3Bhc3N3b3JkLAogCQkJCQkJCQlzdWItPm5hbWUsICZlcnIpOwogCQlpZiAo IXdyY29ubikKIAkJCWVyZXBvcnQoRVJST1IsCkBAIC0xNzg4LDcgKzE3ODgsNyBAQCBEcm9wU3Vi c2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJ ICovCiAJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCi0Jd3Jjb25uID0g d2FscmN2X2Nvbm5lY3QoY29ubmluZm8sIHRydWUsIG11c3RfdXNlX3Bhc3N3b3JkLAorCXdyY29u biA9IHdhbHJjdl9jb25uZWN0KGNvbm5pbmZvLCB0cnVlLCB0cnVlLCBtdXN0X3VzZV9wYXNzd29y ZCwKIAkJCQkJCQlzdWJuYW1lLCAmZXJyKTsKIAlpZiAod3Jjb25uID09IE5VTEwpCiAJewpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdh bHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xp YnBxd2FscmVjZWl2ZXIuYwppbmRleCA2MWVlYWExN2IyLi41MTJlYzI4OTdhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2 ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBx d2FscmVjZWl2ZXIuYwpAQCAtNiw2ICs2LDkgQEAKICAqIGxvYWRlZCBhcyBhIGR5bmFtaWMgbW9k dWxlIHRvIGF2b2lkIGxpbmtpbmcgdGhlIG1haW4gc2VydmVyIGJpbmFyeSB3aXRoCiAgKiBsaWJw cS4KICAqCisgKiBBcGFydCBmcm9tIHdhbHJlY2VpdmVyLCB0aGUgbGlicHEtc3BlY2lmaWMgcm91 dGluZXMgaGVyZSBhcmUgbm93IGJlaW5nIHVzZWQKKyAqIGJ5IGxvZ2ljYWwgcmVwbGljYXRpb24g d29ya2VycyBhbmQgc2xvdHN5bmMgd29ya2VyIGFzIHdlbGwuCisKICAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMjAxMC0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAog ICoKICAqCkBAIC00OSw3ICs1Miw4IEBAIHN0cnVjdCBXYWxSZWNlaXZlckNvbm4KIAogLyogUHJv dG90eXBlcyBmb3IgaW50ZXJmYWNlIGZ1bmN0aW9ucyAqLwogc3RhdGljIFdhbFJlY2VpdmVyQ29u biAqbGlicHFyY3ZfY29ubmVjdChjb25zdCBjaGFyICpjb25uaW5mbywKLQkJCQkJCQkJCQkgYm9v bCBsb2dpY2FsLCBib29sIG11c3RfdXNlX3Bhc3N3b3JkLAorCQkJCQkJCQkJCSBib29sIHJlcGxp Y2F0aW9uLCBib29sIGxvZ2ljYWwsCisJCQkJCQkJCQkJIGJvb2wgbXVzdF91c2VfcGFzc3dvcmQs CiAJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmFwcG5hbWUsIGNoYXIgKiplcnIpOwogc3RhdGljIHZv aWQgbGlicHFyY3ZfY2hlY2tfY29ubmluZm8oY29uc3QgY2hhciAqY29ubmluZm8sCiAJCQkJCQkJ CQlib29sIG11c3RfdXNlX3Bhc3N3b3JkKTsKQEAgLTEyNCw3ICsxMjgsMTIgQEAgX1BHX2luaXQo dm9pZCkKIH0KIAogLyoKLSAqIEVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUgcHJpbWFy eSBzZXJ2ZXIgZm9yIFhMT0cgc3RyZWFtaW5nCisgKiBFc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24g dG8gdGhlIHByaW1hcnkgc2VydmVyLgorICoKKyAqIFRoZSBjb25uZWN0aW9uIGVzdGFibGlzaGVk IGNvdWxkIGJlIGVpdGhlciBhIHJlcGxpY2F0aW9uIG9uZSBvcgorICogYSBub24tcmVwbGljYXRp b24gb25lIGJhc2VkIG9uIGlucHV0IGFyZ3VtZW50ICdyZXBsaWNhdGlvbicuIEFuZCBmdXJ0aGVy CisgKiBpZiBpdCBpcyBhIHJlcGxpY2F0aW9uIGNvbm5lY3Rpb24sIGl0IGNvdWxkIGJlIGVpdGhl ciBsb2dpY2FsIG9yIHBoeXNpY2FsCisgKiBiYXNlZCBvbiBpbnB1dCBhcmd1bWVudCAnbG9naWNh bCcuCiAgKgogICogSWYgYW4gZXJyb3Igb2NjdXJzLCB0aGlzIGZ1bmN0aW9uIHdpbGwgbm9ybWFs bHkgcmV0dXJuIE5VTEwgYW5kIHNldCAqZXJyCiAgKiB0byBhIHBhbGxvYydlZCBlcnJvciBtZXNz YWdlLiBIb3dldmVyLCBpZiBtdXN0X3VzZV9wYXNzd29yZCBpcyB0cnVlIGFuZApAQCAtMTM1LDgg KzE0NCw4IEBAIF9QR19pbml0KHZvaWQpCiAgKiBjYXNlLgogICovCiBzdGF0aWMgV2FsUmVjZWl2 ZXJDb25uICoKLWxpYnBxcmN2X2Nvbm5lY3QoY29uc3QgY2hhciAqY29ubmluZm8sIGJvb2wgbG9n aWNhbCwgYm9vbCBtdXN0X3VzZV9wYXNzd29yZCwKLQkJCQkgY29uc3QgY2hhciAqYXBwbmFtZSwg Y2hhciAqKmVycikKK2xpYnBxcmN2X2Nvbm5lY3QoY29uc3QgY2hhciAqY29ubmluZm8sIGJvb2wg cmVwbGljYXRpb24sIGJvb2wgbG9naWNhbCwKKwkJCQkgYm9vbCBtdXN0X3VzZV9wYXNzd29yZCwg Y29uc3QgY2hhciAqYXBwbmFtZSwgY2hhciAqKmVycikKIHsKIAlXYWxSZWNlaXZlckNvbm4gKmNv bm47CiAJUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSBzdGF0dXM7CkBAIC0xNTksMTcgKzE2OCwy NiBAQCBsaWJwcXJjdl9jb25uZWN0KGNvbnN0IGNoYXIgKmNvbm5pbmZvLCBib29sIGxvZ2ljYWws IGJvb2wgbXVzdF91c2VfcGFzc3dvcmQsCiAJICovCiAJa2V5c1tpXSA9ICJkYm5hbWUiOwogCXZh bHNbaV0gPSBjb25uaW5mbzsKLQlrZXlzWysraV0gPSAicmVwbGljYXRpb24iOwotCXZhbHNbaV0g PSBsb2dpY2FsID8gImRhdGFiYXNlIiA6ICJ0cnVlIjsKLQlpZiAoIWxvZ2ljYWwpCisKKwkvKiBX ZSBjYW4gbm90IGhhdmUgbG9naWNhbCB3aXRob3V0IHJlcGxpY2F0aW9uICovCisJaWYgKCFyZXBs aWNhdGlvbikKKwkJQXNzZXJ0KCFsb2dpY2FsKTsKKwllbHNlCiAJewotCQkvKgotCQkgKiBUaGUg ZGF0YWJhc2UgbmFtZSBpcyBpZ25vcmVkIGJ5IHRoZSBzZXJ2ZXIgaW4gcmVwbGljYXRpb24gbW9k ZSwgYnV0Ci0JCSAqIHNwZWNpZnkgInJlcGxpY2F0aW9uIiBmb3IgLnBncGFzcyBsb29rdXAuCi0J CSAqLwotCQlrZXlzWysraV0gPSAiZGJuYW1lIjsKLQkJdmFsc1tpXSA9ICJyZXBsaWNhdGlvbiI7 CisJCWtleXNbKytpXSA9ICJyZXBsaWNhdGlvbiI7CisJCXZhbHNbaV0gPSBsb2dpY2FsID8gImRh dGFiYXNlIiA6ICJ0cnVlIjsKKworCQlpZiAoIWxvZ2ljYWwpCisJCXsKKwkJCS8qCisJCQkgKiBU aGUgZGF0YWJhc2UgbmFtZSBpcyBpZ25vcmVkIGJ5IHRoZSBzZXJ2ZXIgaW4gcmVwbGljYXRpb24g bW9kZSwKKwkJCSAqIGJ1dCBzcGVjaWZ5ICJyZXBsaWNhdGlvbiIgZm9yIC5wZ3Bhc3MgbG9va3Vw LgorCQkJICovCisJCQlrZXlzWysraV0gPSAiZGJuYW1lIjsKKwkJCXZhbHNbaV0gPSAicmVwbGlj YXRpb24iOworCQl9CiAJfQorCiAJa2V5c1srK2ldID0gImZhbGxiYWNrX2FwcGxpY2F0aW9uX25h bWUiOwogCXZhbHNbaV0gPSBhcHBuYW1lOwogCWlmIChsb2dpY2FsKQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IDBkZmMwNTdmZjkuLmM2ZjAyZGFlOGQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTEwOTYs NiArMTA5Niw3IEBAIFJlcGxTbG90U3luY1dvcmtlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAlib29sCQlwcmltYXJ5X3Nsb3RfaW52YWxpZDsKIAljaGFyCSAgICplcnI7CiAJc2lnam1w X2J1Zglsb2NhbF9zaWdqbXBfYnVmOworCVN0cmluZ0luZm9EYXRhIGFwcF9uYW1lOwogCiAJYW1f c2xvdHN5bmNfd29ya2VyID0gdHJ1ZTsKIApAQCAtMTIwNSwxMyArMTIwNiwyMSBAQCBSZXBsU2xv dFN5bmNXb3JrZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlTZXRQcm9jZXNzaW5n TW9kZShOb3JtYWxQcm9jZXNzaW5nKTsKIAorCWluaXRTdHJpbmdJbmZvKCZhcHBfbmFtZSk7CisJ aWYgKGNsdXN0ZXJfbmFtZVswXSkKKwkJYXBwZW5kU3RyaW5nSW5mbygmYXBwX25hbWUsICIlc18l cyIsIGNsdXN0ZXJfbmFtZSwgInNsb3RzeW5jd29ya2VyIik7CisJZWxzZQorCQlhcHBlbmRTdHJp bmdJbmZvKCZhcHBfbmFtZSwgIiVzIiwgInNsb3RzeW5jd29ya2VyIik7CisKIAkvKgogCSAqIEVz dGFibGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUgcHJpbWFyeSBzZXJ2ZXIgZm9yIHNsb3RzCiAJ ICogc3luY2hyb25pemF0aW9uLgogCSAqLwotCXdyY29ubiA9IHdhbHJjdl9jb25uZWN0KFByaW1h cnlDb25uSW5mbywgdHJ1ZSwgZmFsc2UsCi0JCQkJCQkJY2x1c3Rlcl9uYW1lWzBdID8gY2x1c3Rl cl9uYW1lIDogInNsb3RzeW5jd29ya2VyIiwKKwl3cmNvbm4gPSB3YWxyY3ZfY29ubmVjdChQcmlt YXJ5Q29ubkluZm8sIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJCQkJCQkJYXBwX25hbWUuZGF0YSwK IAkJCQkJCQkmZXJyKTsKKwlwZnJlZShhcHBfbmFtZS5kYXRhKTsKKwogCWlmICghd3Jjb25uKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUp LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggNWFj YWIzZjNlMi4uZWUwNjYyOTA4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3RhYmxlc3luYy5jCkBAIC0xMzI5LDcgKzEzMjksNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3Rh cnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCSAqIHNvIHRoYXQgc3luY2hyb25vdXMg cmVwbGljYXRpb24gY2FuIGRpc3Rpbmd1aXNoIHRoZW0uCiAJICovCiAJTG9nUmVwV29ya2VyV2Fs UmN2Q29ubiA9Ci0JCXdhbHJjdl9jb25uZWN0KE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbywgdHJ1 ZSwKKwkJd2FscmN2X2Nvbm5lY3QoTXlTdWJzY3JpcHRpb24tPmNvbm5pbmZvLCB0cnVlLCB0cnVl LAogCQkJCQkgICBtdXN0X3VzZV9wYXNzd29yZCwKIAkJCQkJICAgc2xvdG5hbWUsICZlcnIpOwog CWlmIChMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID09IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYwppbmRleCAzMmZmNGMwMzM2Li45ZGQyNDQ2ZmJmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTQ1MTksNyArNDUxOSw3IEBA IHJ1bl9hcHBseV93b3JrZXIoKQogCQkhTXlTdWJzY3JpcHRpb24tPm93bmVyc3VwZXJ1c2VyOwog CiAJTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9IHdhbHJjdl9jb25uZWN0KE15U3Vic2NyaXB0aW9u LT5jb25uaW5mbywgdHJ1ZSwKLQkJCQkJCQkJCQkJbXVzdF91c2VfcGFzc3dvcmQsCisJCQkJCQkJ CQkJCXRydWUsIG11c3RfdXNlX3Bhc3N3b3JkLAogCQkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+ bmFtZSwgJmVycik7CiAKIAlpZiAoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9PSBOVUxMKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggZTI5YTYxOTZhMy4uYjgwNDQ3ZDE1 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCkBAIC0yOTYsNyArMjk2LDcg QEAgV2FsUmVjZWl2ZXJNYWluKHZvaWQpCiAJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZVbkJs b2NrU2lnLCBOVUxMKTsKIAogCS8qIEVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUgcHJp bWFyeSBmb3IgWExPRyBzdHJlYW1pbmcgKi8KLQl3cmNvbm4gPSB3YWxyY3ZfY29ubmVjdChjb25u aW5mbywgZmFsc2UsIGZhbHNlLAorCXdyY29ubiA9IHdhbHJjdl9jb25uZWN0KGNvbm5pbmZvLCB0 cnVlLCBmYWxzZSwgZmFsc2UsCiAJCQkJCQkJY2x1c3Rlcl9uYW1lWzBdID8gY2x1c3Rlcl9uYW1l IDogIndhbHJlY2VpdmVyIiwKIAkJCQkJCQkmZXJyKTsKIAlpZiAoIXdyY29ubikKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCmluZGV4IDQ4ZGM4NDZlMTkuLjFiNTYzYTE2Y2QgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaApAQCAtMjM3LDYgKzIzNyw3IEBAIHR5 cGVkZWYgc3RydWN0IFdhbFJjdkV4ZWNSZXN1bHQKICAqIHJldHVybmVkIHdpdGggJ2VycicgaW5j bHVkaW5nIHRoZSBlcnJvciBnZW5lcmF0ZWQuCiAgKi8KIHR5cGVkZWYgV2FsUmVjZWl2ZXJDb25u ICooKndhbHJjdl9jb25uZWN0X2ZuKSAoY29uc3QgY2hhciAqY29ubmluZm8sCisJCQkJCQkJCQkJ CSAgIGJvb2wgcmVwbGljYXRpb24sCiAJCQkJCQkJCQkJCSAgIGJvb2wgbG9naWNhbCwKIAkJCQkJ CQkJCQkJICAgYm9vbCBtdXN0X3VzZV9wYXNzd29yZCwKIAkJCQkJCQkJCQkJICAgY29uc3QgY2hh ciAqYXBwbmFtZSwKQEAgLTQyNiw4ICs0MjcsOCBAQCB0eXBlZGVmIHN0cnVjdCBXYWxSZWNlaXZl ckZ1bmN0aW9uc1R5cGUKIAogZXh0ZXJuIFBHRExMSU1QT1JUIFdhbFJlY2VpdmVyRnVuY3Rpb25z VHlwZSAqV2FsUmVjZWl2ZXJGdW5jdGlvbnM7CiAKLSNkZWZpbmUgd2FscmN2X2Nvbm5lY3QoY29u bmluZm8sIGxvZ2ljYWwsIG11c3RfdXNlX3Bhc3N3b3JkLCBhcHBuYW1lLCBlcnIpIFwKLQlXYWxS ZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X2Nvbm5lY3QoY29ubmluZm8sIGxvZ2ljYWwsIG11c3Rf dXNlX3Bhc3N3b3JkLCBhcHBuYW1lLCBlcnIpCisjZGVmaW5lIHdhbHJjdl9jb25uZWN0KGNvbm5p bmZvLCByZXBsaWNhdGlvbiwgbG9naWNhbCwgbXVzdF91c2VfcGFzc3dvcmQsIGFwcG5hbWUsIGVy cikgXAorCVdhbFJlY2VpdmVyRnVuY3Rpb25zLT53YWxyY3ZfY29ubmVjdChjb25uaW5mbywgcmVw bGljYXRpb24sIGxvZ2ljYWwsIG11c3RfdXNlX3Bhc3N3b3JkLCBhcHBuYW1lLCBlcnIpCiAjZGVm aW5lIHdhbHJjdl9jaGVja19jb25uaW5mbyhjb25uaW5mbywgbXVzdF91c2VfcGFzc3dvcmQpIFwK IAlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X2NoZWNrX2Nvbm5pbmZvKGNvbm5pbmZvLCBt dXN0X3VzZV9wYXNzd29yZCkKICNkZWZpbmUgd2FscmN2X2dldF9jb25uaW5mbyhjb25uKSBcCi0t IAoyLjM0LjEKCg== --0000000000005d8a070610293ea4 Content-Type: application/octet-stream; name="v74-0001-Add-logical-slot-sync-capability-to-the-physical.patch" Content-Disposition: attachment; filename="v74-0001-Add-logical-slot-sync-capability-to-the-physical.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls0cxc510 RnJvbSA4ZWI1OGI0MDk3MWUxYmQ0YTYwODliMWJmOWY1YjI2NTFiNWRjMWFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMzAgSmFuIDIwMjQgMDk6MjA6NDYgKzA1MzAKU3ViamVjdDogW1BBVENIIHY3 NCAxLzVdIEFkZCBsb2dpY2FsIHNsb3Qgc3luYyBjYXBhYmlsaXR5IHRvIHRoZSBwaHlzaWNhbAog c3RhbmRieQoKVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHN5bmNocm9uaXphdGlvbiBvZiBsb2dpY2Fs IHJlcGxpY2F0aW9uIHNsb3RzCmZyb20gdGhlIHByaW1hcnkgc2VydmVyIHRvIHRoZSBwaHlzaWNh bCBzdGFuZGJ5IHNvIHRoYXQgbG9naWNhbApyZXBsaWNhdGlvbiBjYW4gYmUgcmVzdW1lZCBhZnRl ciBmYWlsb3Zlci4KCkdVQyAnZW5hYmxlX3N5bmNzbG90JyBlbmFibGVzIGEgcGh5c2ljYWwgc3Rh bmRieSB0byBzeW5jaHJvbml6ZSBmYWlsb3Zlcgpsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3RzIGZy b20gdGhlIHByaW1hcnkgc2VydmVyLgoKVGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdHMgb24g dGhlIHByaW1hcnkgY2FuIGJlIHN5bmNocm9uaXplZCB0byB0aGUgaG90CnN0YW5kYnkgYnkgZW5h YmxpbmcgdGhlIGZhaWxvdmVyIG9wdGlvbiBkdXJpbmcgc2xvdCBjcmVhdGlvbiBhbmQgc2V0dGlu ZwonZW5hYmxlX3N5bmNzbG90JyBvbiB0aGUgc3RhbmRieS4gRm9yIHRoZSBzeW5jaHJvbml6YXRp b24gdG8gd29yaywgaXQgaXMKbWFuZGF0b3J5IHRvIGhhdmUgYSBwaHlzaWNhbCByZXBsaWNhdGlv biBzbG90IGJldHdlZW4gdGhlIHByaW1hcnkgYW5kIHRoZQpzdGFuZGJ5LCBhbmQgaG90X3N0YW5k YnlfZmVlZGJhY2sgbXVzdCBiZSBlbmFibGVkIG9uIHRoZSBzdGFuZGJ5LgoKQWxsIHRoZSBmYWls b3ZlciBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3RzIG9uIHRoZSBwcmltYXJ5IChhc3N1bWluZwpj b25maWd1cmF0aW9ucyBhcmUgYXBwcm9wcmlhdGUpIGFyZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQg b24gdGhlIHBoeXNpY2FsCnN0YW5kYnlzIGFuZCBhcmUgc3luY2VkIHBlcmlvZGljYWxseS4gU2xv dC1zeW5jIHdvcmtlciBvbiB0aGUgc3RhbmRieSBzZXJ2ZXIKcGluZyB0aGUgcHJpbWFyeSBzZXJ2 ZXIgYXQgcmVndWxhciBpbnRlcnZhbHMgdG8gZ2V0IHRoZSBuZWNlc3NhcnkKZmFpbG92ZXIgbG9n aWNhbCBzbG90cyBpbmZvcm1hdGlvbiBhbmQgY3JlYXRlL3VwZGF0ZSB0aGUgc2xvdHMgbG9jYWxs eS4KClRoZSBuYXAgdGltZSBvZiB0aGUgd29ya2VyIGlzIHR1bmVkIGFjY29yZGluZyB0byB0aGUg YWN0aXZpdHkgb24gdGhlIHByaW1hcnkuClRoZSB3b3JrZXIgd2FpdHMgZm9yIGEgcGVyaW9kIG9m IHRpbWUgYmVmb3JlIHRoZSBuZXh0IHN5bmNocm9uaXphdGlvbiwgd2l0aCB0aGUKZHVyYXRpb24g dmFyeWluZyBiYXNlZCBvbiB3aGV0aGVyIGFueSBzbG90cyB3ZXJlIHVwZGF0ZWQgZHVyaW5nIHRo ZSBsYXN0CmN5Y2xlLgoKVGhlIGxvZ2ljYWwgc2xvdHMgY3JlYXRlZCBieSBzbG90LXN5bmMgd29y a2VyIG9uIHBoeXNpY2FsIHN0YW5kYnlzIGFyZSBub3QKYWxsb3dlZCB0byBiZSBkcm9wcGVkIG9y IGNvbnN1bWVkLiBBbnkgYXR0ZW1wdCB0byBwZXJmb3JtIGxvZ2ljYWwgZGVjb2Rpbmcgb24Kc3Vj aCBzbG90cyB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci4KCklmIGEgbG9naWNhbCBzbG90IGlzIGlu dmFsaWRhdGVkIG9uIHRoZSBwcmltYXJ5LCB0aGVuIHRoYXQgc2xvdCBvbiB0aGUgc3RhbmRieQpp cyBhbHNvIGludmFsaWRhdGVkLgoKSWYgYSBsb2dpY2FsIHNsb3Qgb24gdGhlIHByaW1hcnkgaXMg dmFsaWQgYnV0IGlzIGludmFsaWRhdGVkIG9uIHRoZSBzdGFuZGJ5LAp0aGVuIHRoYXQgc2xvdCBp cyBkcm9wcGVkIGFuZCByZWNyZWF0ZWQgb24gdGhlIHN0YW5kYnkgaW4gbmV4dCBzeW5jLWN5Y2xl CnByb3ZpZGVkIHRoZSBzbG90IHN0aWxsIGV4aXN0cyBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIuIEl0 IGlzIG9rYXkgdG8gcmVjcmVhdGUKc3VjaCBzbG90cyBhcyBsb25nIGFzIHRoZXNlIGFyZSBub3Qg Y29uc3VtYWJsZSBvbiB0aGUgc3RhbmRieSAod2hpY2ggaXMgdGhlCmNhc2UgY3VycmVudGx5KS4g VGhpcyBzaXR1YXRpb24gbWF5IG9jY3VyIGR1ZSB0byB0aGUgZm9sbG93aW5nIHJlYXNvbnM6Ci0g VGhlIG1heF9zbG90X3dhbF9rZWVwX3NpemUgb24gdGhlIHN0YW5kYnkgaXMgaW5zdWZmaWNpZW50 IHRvIHJldGFpbiBXQUwKICByZWNvcmRzIGZyb20gdGhlIHJlc3RhcnRfbHNuIG9mIHRoZSBzbG90 LgotIHByaW1hcnlfc2xvdF9uYW1lIGlzIHRlbXBvcmFyaWx5IHJlc2V0IHRvIG51bGwgYW5kIHRo ZSBwaHlzaWNhbCBzbG90IGlzCiAgcmVtb3ZlZC4KLSBUaGUgcHJpbWFyeSBjaGFuZ2VzIHdhbF9s ZXZlbCB0byBhIGxldmVsIGxvd2VyIHRoYW4gbG9naWNhbC4KClRoZSBzbG90cyBzeW5jaHJvbml6 YXRpb24gc3RhdHVzIG9uIHRoZSBzdGFuZGJ5IGNhbiBiZSBtb25pdG9yZWQgdXNpbmcKJ3N5bmNl ZCcgY29sdW1uIG9mIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIHZpZXcuCi0tLQogZG9jL3NyYy9zZ21s L2Jnd29ya2VyLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICA2NSArLQogZG9jL3NyYy9zZ21s L2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArLQogZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sICAgICAgICAgICAgIHwgICA0MCArCiBkb2Mvc3JjL3NnbWwv cHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBkb2Mvc3JjL3NnbWwv c3lzdGVtLXZpZXdzLnNnbWwgICAgICAgICAgICAgICAgfCAgIDIyICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICAgICAgICAgfCAgICA1ICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyAgICAgfCAgIDE1ICsKIHNyYy9iYWNrZW5kL2Nh dGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAgIDMgKy0KIHNyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICB8ICAgIDQgKwogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9wb3N0bWFzdGVyLmMgICAgICAgICAgIHwgICAxMCArCiAuLi4vbGlicHF3YWxyZWNl aXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAgfCAgIDQxICsKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsLmMgICAgIHwgICAxMiArCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyAgICB8IDEyMjIgKysrKysrKysrKysrKysrKysKIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAgICAgICB8ICAgNTkgKy0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jICAgICAgICAgICB8ICAgMjYgKy0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYyAgICB8ICAgMTYgKwogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwgICAxOSArLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgIDExICsKIC4uLi91dGls cy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dCAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgICAxMCArCiBzcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgICAxICsKIHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaCAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9zbG90LmggICAgICAgICAgICAgICAgfCAgIDE3ICstCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAgICAgfCAgIDExICsKIHNyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5oICAgICAgICAgICB8ICAgIDMgKwogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwgICAxMCArCiAuLi4vdC8wNDBfc3RhbmRi eV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsICAgICAgfCAgMTY3ICsrLQogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICAgNSArLQogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgICAgMyArLQogc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAgMiArCiAzNSBmaWxlcyBjaGFuZ2Vk LCAxNzk2IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sIGIvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwK aW5kZXggMmMzOTMzODVhOS4uYTdjZmU2YzU4YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Jn d29ya2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwKQEAgLTExNCwxOCAr MTE0LDU5IEBAIHR5cGVkZWYgc3RydWN0IEJhY2tncm91bmRXb3JrZXIKIAogICA8cGFyYT4KICAg IDxzdHJ1Y3RmaWVsZD5iZ3dfc3RhcnRfdGltZTwvc3RydWN0ZmllbGQ+IGlzIHRoZSBzZXJ2ZXIg c3RhdGUgZHVyaW5nIHdoaWNoCi0gICA8Y29tbWFuZD5wb3N0Z3JlczwvY29tbWFuZD4gc2hvdWxk IHN0YXJ0IHRoZSBwcm9jZXNzOyBpdCBjYW4gYmUgb25lIG9mCi0gICA8bGl0ZXJhbD5CZ1dvcmtl clN0YXJ0X1Bvc3RtYXN0ZXJTdGFydDwvbGl0ZXJhbD4gKHN0YXJ0IGFzIHNvb24gYXMKLSAgIDxj b21tYW5kPnBvc3RncmVzPC9jb21tYW5kPiBpdHNlbGYgaGFzIGZpbmlzaGVkIGl0cyBvd24gaW5p dGlhbGl6YXRpb247IHByb2Nlc3NlcwotICAgcmVxdWVzdGluZyB0aGlzIGFyZSBub3QgZWxpZ2li bGUgZm9yIGRhdGFiYXNlIGNvbm5lY3Rpb25zKSwKLSAgIDxsaXRlcmFsPkJnV29ya2VyU3RhcnRf Q29uc2lzdGVudFN0YXRlPC9saXRlcmFsPiAoc3RhcnQgYXMgc29vbiBhcyBhIGNvbnNpc3RlbnQg c3RhdGUKLSAgIGhhcyBiZWVuIHJlYWNoZWQgaW4gYSBob3Qgc3RhbmRieSwgYWxsb3dpbmcgcHJv Y2Vzc2VzIHRvIGNvbm5lY3QgdG8KLSAgIGRhdGFiYXNlcyBhbmQgcnVuIHJlYWQtb25seSBxdWVy aWVzKSwgYW5kCi0gICA8bGl0ZXJhbD5CZ1dvcmtlclN0YXJ0X1JlY292ZXJ5RmluaXNoZWQ8L2xp dGVyYWw+IChzdGFydCBhcyBzb29uIGFzIHRoZSBzeXN0ZW0gaGFzCi0gICBlbnRlcmVkIG5vcm1h bCByZWFkLXdyaXRlIHN0YXRlKS4gIE5vdGUgdGhlIGxhc3QgdHdvIHZhbHVlcyBhcmUgZXF1aXZh bGVudAotICAgaW4gYSBzZXJ2ZXIgdGhhdCdzIG5vdCBhIGhvdCBzdGFuZGJ5LiAgTm90ZSB0aGF0 IHRoaXMgc2V0dGluZyBvbmx5IGluZGljYXRlcwotICAgd2hlbiB0aGUgcHJvY2Vzc2VzIGFyZSB0 byBiZSBzdGFydGVkOyB0aGV5IGRvIG5vdCBzdG9wIHdoZW4gYSBkaWZmZXJlbnQgc3RhdGUKLSAg IGlzIHJlYWNoZWQuCisgICA8Y29tbWFuZD5wb3N0Z3JlczwvY29tbWFuZD4gc2hvdWxkIHN0YXJ0 IHRoZSBwcm9jZXNzLiBOb3RlIHRoYXQgdGhpcyBzZXR0aW5nCisgICBvbmx5IGluZGljYXRlcyB3 aGVuIHRoZSBwcm9jZXNzZXMgYXJlIHRvIGJlIHN0YXJ0ZWQ7IHRoZXkgZG8gbm90IHN0b3Agd2hl bgorICAgYSBkaWZmZXJlbnQgc3RhdGUgaXMgcmVhY2hlZC4gUG9zc2libGUgdmFsdWVzIGFyZToK KworICAgPHZhcmlhYmxlbGlzdD4KKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0 ZXJhbD5CZ1dvcmtlclN0YXJ0X1Bvc3RtYXN0ZXJTdGFydDwvbGl0ZXJhbD48L3Rlcm0+CisgICAg IDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxpbmRleHRlcm0+PHByaW1hcnk+QmdX b3JrZXJTdGFydF9Qb3N0bWFzdGVyU3RhcnQ8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisgICAgICAg U3RhcnQgYXMgc29vbiBhcyBwb3N0Z3JlcyBpdHNlbGYgaGFzIGZpbmlzaGVkIGl0cyBvd24gaW5p dGlhbGl6YXRpb247CisgICAgICAgcHJvY2Vzc2VzIHJlcXVlc3RpbmcgdGhpcyBhcmUgbm90IGVs aWdpYmxlIGZvciBkYXRhYmFzZSBjb25uZWN0aW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9s aXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisgICAg IDx0ZXJtPjxsaXRlcmFsPkJnV29ya2VyU3RhcnRfQ29uc2lzdGVudFN0YXRlPC9saXRlcmFsPjwv dGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgPGluZGV4dGVybT48 cHJpbWFyeT5CZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRTdGF0ZTwvcHJpbWFyeT48L2luZGV4dGVy bT4KKyAgICAgICBTdGFydCBhcyBzb29uIGFzIGEgY29uc2lzdGVudCBzdGF0ZSBoYXMgYmVlbiBy ZWFjaGVkIGluIGEgaG90LXN0YW5kYnksCisgICAgICAgYWxsb3dpbmcgcHJvY2Vzc2VzIHRvIGNv bm5lY3QgdG8gZGF0YWJhc2VzIGFuZCBydW4gcmVhZC1vbmx5IHF1ZXJpZXMuCisgICAgICA8L3Bh cmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlz dGVudHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5CZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRTdGF0 ZV9Ib3RTdGFuZGJ5PC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBh cmE+CisgICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5CZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRT dGF0ZV9Ib3RTdGFuZGJ5PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorICAgICAgIFNhbWUgbWVhbmlu ZyBhcyA8bGl0ZXJhbD5CZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRTdGF0ZTwvbGl0ZXJhbD4gYnV0 CisgICAgICAgaXQgaXMgbW9yZSBzdHJpY3QgaW4gdGVybXMgb2YgdGhlIHNlcnZlciBpLmUuIHN0 YXJ0IHRoZSB3b3JrZXIgb25seQorICAgICAgIGlmIGl0IGlzIGhvdC1zdGFuZGJ5LgorICAgICAg PC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZh cmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PGxpdGVyYWw+QmdXb3JrZXJTdGFydF9SZWNvdmVyeUZp bmlzaGVkPC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+Cisg ICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5CZ1dvcmtlclN0YXJ0X1JlY292ZXJ5RmluaXNoZWQ8 L3ByaW1hcnk+PC9pbmRleHRlcm0+CisgICAgICAgU3RhcnQgYXMgc29vbiBhcyB0aGUgc3lzdGVt IGhhcyBlbnRlcmVkIG5vcm1hbCByZWFkLXdyaXRlIHN0YXRlLiBOb3RlCisgICAgICAgdGhhdCB0 aGUgPGxpdGVyYWw+QmdXb3JrZXJTdGFydF9Db25zaXN0ZW50U3RhdGU8L2xpdGVyYWw+IGFuZAor ICAgICAgPGxpdGVyYWw+QmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkPC9saXRlcmFsPiBh cmUgZXF1aXZhbGVudAorICAgICAgIGluIGEgc2VydmVyIHRoYXQncyBub3QgYSBob3Qgc3RhbmRi eS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRl eCA2MTAzODQ3MmM1Li43NWJiNDhiNzk1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00NjEyLDggKzQ2MTIsMTMg QEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFi bGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgICAgICA8dmFybmFtZT5wcmltYXJ5X2Nv bm5pbmZvPC92YXJuYW1lPiBzdHJpbmcsIG9yIGluIGEgc2VwYXJhdGUKICAgICAgICAgICA8Zmls ZW5hbWU+fi8ucGdwYXNzPC9maWxlbmFtZT4gZmlsZSBvbiB0aGUgc3RhbmRieSBzZXJ2ZXIgKHVz ZQogICAgICAgICAgIDxsaXRlcmFsPnJlcGxpY2F0aW9uPC9saXRlcmFsPiBhcyB0aGUgZGF0YWJh c2UgbmFtZSkuCi0gICAgICAgICAgRG8gbm90IHNwZWNpZnkgYSBkYXRhYmFzZSBuYW1lIGluIHRo ZQotICAgICAgICAgIDx2YXJuYW1lPnByaW1hcnlfY29ubmluZm88L3Zhcm5hbWU+IHN0cmluZy4K KyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHNsb3Qgc3lu Y2hyb25pemF0aW9uIGlzIGVuYWJsZWQgKHNlZQorICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imxv Z2ljYWxkZWNvZGluZy1yZXBsaWNhdGlvbi1zbG90cy1zeW5jaHJvbml6YXRpb24iLz4pCisgICAg ICAgICAgdGhlbiBpdCBpcyBhbHNvIG5lY2Vzc2FyeSB0byBzcGVjaWZ5IGEgdmFsaWQgPGxpdGVy YWw+ZGJuYW1lPC9saXRlcmFsPgorICAgICAgICAgIGluIHRoZSA8dmFybmFtZT5wcmltYXJ5X2Nv bm5pbmZvPC92YXJuYW1lPiBzdHJpbmcuIFRoaXMgd2lsbCBvbmx5IGJlCisgICAgICAgICAgdXNl ZCBmb3Igc2xvdCBzeW5jaHJvbml6YXRpb24uIEl0IGlzIGlnbm9yZWQgZm9yIHN0cmVhbWluZy4K ICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFRoaXMgcGFyYW1l dGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmls ZW5hbWU+CkBAIC00OTM4LDYgKzQ5NDMsMjQgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50 cnkgaWQ9Imd1Yy1lbmFibGUtc3luY3Nsb3QiIHhyZWZsYWJlbD0iZW5hYmxlX3N5bmNzbG90Ij4K KyAgICAgIDx0ZXJtPjx2YXJuYW1lPmVuYWJsZV9zeW5jc2xvdDwvdmFybmFtZT4gKDx0eXBlPmJv b2xlYW48L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFt ZT5lbmFibGVfc3luY3Nsb3Q8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmlt YXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIEl0IGVuYWJsZXMgYSBwaHlzaWNhbCBzdGFuZGJ5IHRv IHN5bmNocm9uaXplIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMKKyAgICAgICAgZnJvbSB0aGUgcHJp bWFyeSBzZXJ2ZXIgc28gdGhhdCBsb2dpY2FsIHN1YnNjcmliZXJzIGFyZSBub3QgYmxvY2tlZAor ICAgICAgICBhZnRlciBmYWlsb3Zlci4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+Cisg ICAgICAgIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5 IGJlIHNldCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5h bWU+IGZpbGUgb3Igb24gdGhlIHNlcnZlciBjb21tYW5kIGxpbmUuCisgICAgICAgPC9wYXJhPgor ICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgIDwvdmFyaWFibGVs aXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVj b2Rpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAppbmRleCBjZDE1 MmQ0Y2VkLi45ZGY1ZmYwMTQ1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29k aW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCkBAIC0zNTgs NiArMzU4LDQ2IEBAIHBvc3RncmVzPSMgc2VsZWN0ICogZnJvbSBwZ19sb2dpY2FsX3Nsb3RfZ2V0 X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VCiAgICAgICBTbyBpZiBhIHNsb3Qg aXMgbm8gbG9uZ2VyIHJlcXVpcmVkIGl0IHNob3VsZCBiZSBkcm9wcGVkLgogICAgICA8L3BhcmE+ CiAgICAgPC9jYXV0aW9uPgorCisgICA8L3NlY3QyPgorCisgICA8c2VjdDIgaWQ9ImxvZ2ljYWxk ZWNvZGluZy1yZXBsaWNhdGlvbi1zbG90cy1zeW5jaHJvbml6YXRpb24iPgorICAgIDx0aXRsZT5S ZXBsaWNhdGlvbiBTbG90IFN5bmNocm9uaXphdGlvbjwvdGl0bGU+CisgICAgPHBhcmE+CisgICAg IEEgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9uIHRoZSBwcmltYXJ5IGNhbiBiZSBzeW5jaHJv bml6ZWQgdG8gdGhlIGhvdAorICAgICBzdGFuZGJ5IGJ5IGVuYWJsaW5nIHRoZSA8bGl0ZXJhbD5m YWlsb3ZlcjwvbGl0ZXJhbD4gb3B0aW9uIGR1cmluZyBzbG90CisgICAgIGNyZWF0aW9uIGFuZCBz ZXR0aW5nCisgICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1lbmFibGUtc3luY3Nsb3QiPjx2YXJuYW1l PmVuYWJsZV9zeW5jc2xvdDwvdmFybmFtZT48L2xpbms+CisgICAgIG9uIHRoZSBzdGFuZGJ5LiBG b3IgdGhlIHN5bmNocm9uaXphdGlvbgorICAgICB0byB3b3JrLCBpdCBpcyBtYW5kYXRvcnkgdG8g aGF2ZSBhIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QgYmV0d2VlbiB0aGUKKyAgICAgcHJpbWFy eSBhbmQgdGhlIHN0YW5kYnksIGFuZAorICAgICA8bGluayBsaW5rZW5kPSJndWMtaG90LXN0YW5k YnktZmVlZGJhY2siPjx2YXJuYW1lPmhvdF9zdGFuZGJ5X2ZlZWRiYWNrPC92YXJuYW1lPjwvbGlu az4KKyAgICAgbXVzdCBiZSBlbmFibGVkIG9uIHRoZSBzdGFuZGJ5LiBJdCBpcyBhbHNvIG5lY2Vz c2FyeSB0byBzcGVjaWZ5IGEgdmFsaWQKKyAgICAgPGxpdGVyYWw+ZGJuYW1lPC9saXRlcmFsPiBp biB0aGUKKyAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXByaW1hcnktY29ubmluZm8iPjx2YXJuYW1l PnByaW1hcnlfY29ubmluZm88L3Zhcm5hbWU+PC9saW5rPgorICAgICBzdHJpbmcsIHdoaWNoIGlz IHVzZWQgZm9yIHNsb3Qgc3luY2hyb25pemF0aW9uIGFuZCBpcyBpZ25vcmVkIGZvciBzdHJlYW1p bmcuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZSBhYmlsaXR5IHRvIHJlc3Vt ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIGFmdGVyIGZhaWxvdmVyIGRlcGVuZHMgdXBvbiB0aGUKKyAg ICAgPGxpbmsgbGlua2VuZD0idmlldy1wZy1yZXBsaWNhdGlvbi1zbG90cyI+cGdfcmVwbGljYXRp b25fc2xvdHM8L2xpbms+LjxzdHJ1Y3RmaWVsZD5zeW5jZWQ8L3N0cnVjdGZpZWxkPgorICAgICB2 YWx1ZSBmb3IgdGhlIHN5bmNocm9uaXplZCBzbG90cyBvbiB0aGUgc3RhbmRieSBhdCB0aGUgdGlt ZSBvZiBmYWlsb3Zlci4KKyAgICAgT25seSBwZXJzaXN0ZW50IHNsb3RzIHRoYXQgaGF2ZSBhdHRh aW5lZCBzeW5jZWQgc3RhdGUgYXMgdHJ1ZSBvbiB0aGUgc3RhbmRieQorICAgICBiZWZvcmUgZmFp bG92ZXIgY2FuIGJlIHVzZWQgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gYWZ0ZXIgZmFpbG92ZXIu CisgICAgIFRlbXBvcmFyeSBzbG90cyB3aWxsIGJlIGRyb3BwZWQsIHRoZXJlZm9yZSBsb2dpY2Fs IHJlcGxpY2F0aW9uIGZvciB0aG9zZQorICAgICBzbG90cyBjYW5ub3QgYmUgcmVzdW1lZC4gRm9y IGV4YW1wbGUsIGlmIHRoZSBzeW5jaHJvbml6ZWQgc2xvdCBjb3VsZCBub3QKKyAgICAgYmVjb21l IHBlcnNpc3RlbnQgb24gdGhlIHN0YW5kYnkgZHVlIHRvIGEgZGlzYWJsZWQgc3Vic2NyaXB0aW9u LCB0aGVuIHRoZQorICAgICBzdWJzY3JpcHRpb24gY2Fubm90IGJlIHJlc3VtZWQgYWZ0ZXIgZmFp bG92ZXIgZXZlbiB3aGVuIGl0IGlzIGVuYWJsZWQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+ CisgICAgIFRvIHJlc3VtZSBsb2dpY2FsIHJlcGxpY2F0aW9uIGFmdGVyIGZhaWxvdmVyIGZyb20g dGhlIHN5bmNlZCBsb2dpY2FsCisgICAgIHNsb3RzLCB0aGUgc3Vic2NyaXB0aW9uJ3MgJ2Nvbm5p bmZvJyBtdXN0IGJlIGFsdGVyZWQgdG8gcG9pbnQgdG8gdGhlCisgICAgIG5ldyBwcmltYXJ5IHNl cnZlci4gVGhpcyBpcyBkb25lIHVzaW5nCisgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1 YnNjcmlwdGlvbi1wYXJhbXMtY29ubmVjdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9O IC4uLiBDT05ORUNUSU9OPC9jb21tYW5kPjwvbGluaz4uCisgICAgIEl0IGlzIHJlY29tbWVuZGVk IHRoYXQgc3Vic2NyaXB0aW9ucyBhcmUgZmlyc3QgZGlzYWJsZWQgYmVmb3JlIHByb21vdGluZwor ICAgICB0aGUgc3RhbmRieSBhbmQgYXJlIGVuYWJsZWQgYmFjayBhZnRlciBhbHRlcmluZyB0aGUg Y29ubmVjdGlvbiBzdHJpbmcuCisgICAgPC9wYXJhPgogICAgPC9zZWN0Mj4KIAogICAgPHNlY3Qy IGlkPSJsb2dpY2FsZGVjb2RpbmctZXhwbGFuYXRpb24tb3V0cHV0LXBsdWdpbnMiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wu c2dtbAppbmRleCBiYjRmZWYxZjUxLi5mOGVmMmFkMmFiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtMjA2 NSw3ICsyMDY1LDggQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNl IiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICAgPHRlcm0+PGxpdGVyYWw+RkFJTE9WRVIg WyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF08 L2xpdGVyYWw+PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KLSAg ICAgICAgICBJZiB0cnVlLCB0aGUgc2xvdCBpcyBlbmFibGVkIHRvIGJlIHN5bmNlZCB0byB0aGUg c3RhbmRieXMuCisgICAgICAgICAgSWYgdHJ1ZSwgdGhlIHNsb3QgaXMgZW5hYmxlZCB0byBiZSBz eW5jZWQgdG8gdGhlIHN0YW5kYnlzCisgICAgICAgICAgc28gdGhhdCBsb2dpY2FsIHJlcGxpY2F0 aW9uIGNhbiBiZSByZXN1bWVkIGFmdGVyIGZhaWxvdmVyLgogICAgICAgICAgIFRoZSBkZWZhdWx0 IGlzIGZhbHNlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgpAQCAtMjE2 NSw3ICsyMTY2LDggQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNl IiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICAgPHRlcm0+PGxpdGVyYWw+RkFJTE9WRVIg WyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF08 L2xpdGVyYWw+PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KLSAg ICAgICAgICBJZiB0cnVlLCB0aGUgc2xvdCBpcyBlbmFibGVkIHRvIGJlIHN5bmNlZCB0byB0aGUg c3RhbmRieXMuCisgICAgICAgICAgSWYgdHJ1ZSwgdGhlIHNsb3QgaXMgZW5hYmxlZCB0byBiZSBz eW5jZWQgdG8gdGhlIHN0YW5kYnlzCisgICAgICAgICAgc28gdGhhdCBsb2dpY2FsIHJlcGxpY2F0 aW9uIGNhbiBiZSByZXN1bWVkIGFmdGVyIGZhaWxvdmVyLgogICAgICAgICAgPC9wYXJhPgogICAg ICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5z Z21sCmluZGV4IGRkNDY4YjMxZWEuLjRlYTIxNzdiMzQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwK QEAgLTI1NjEsMTAgKzI1NjEsMjggQEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpP SU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAgICAgICAgPHN0cnVjdGZpZWxkPmZhaWxvdmVyPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJh PgotICAgICAgIFRydWUgaWYgdGhpcyBpcyBhIGxvZ2ljYWwgc2xvdCBlbmFibGVkIHRvIGJlIHN5 bmNlZCB0byB0aGUgc3RhbmRieXMuCi0gICAgICAgQWx3YXlzIGZhbHNlIGZvciBwaHlzaWNhbCBz bG90cy4KKyAgICAgICBUcnVlIGlmIHRoaXMgaXMgYSBsb2dpY2FsIHNsb3QgZW5hYmxlZCB0byBi ZSBzeW5jZWQgdG8gdGhlIHN0YW5kYnlzCisgICAgICAgc28gdGhhdCBsb2dpY2FsIHJlcGxpY2F0 aW9uIGNhbiBiZSByZXN1bWVkIGZyb20gdGhlIG5ldyBwcmltYXJ5CisgICAgICAgYWZ0ZXIgZmFp bG92ZXIuIEFsd2F5cyBmYWxzZSBmb3IgcGh5c2ljYWwgc2xvdHMuCiAgICAgICA8L3BhcmE+PC9l bnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAg PHN0cnVjdGZpZWxkPnN5bmNlZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgIFRydWUgaWYgdGhpcyBpcyBhIGxvZ2ljYWwg c2xvdCB0aGF0IHdhcyBzeW5jZWQgZnJvbSBhIHByaW1hcnkgc2VydmVyLgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgT24gYSBob3Qgc3RhbmRieSwgdGhlIHNsb3RzIHdpdGgg dGhlIHN5bmNlZCBjb2x1bW4gbWFya2VkIGFzIHRydWUgY2FuCisgICAgICAgbmVpdGhlciBiZSB1 c2VkIGZvciBsb2dpY2FsIGRlY29kaW5nIG5vciBkcm9wcGVkIGJ5IHRoZSB1c2VyLiBUaGUgdmFs dWUKKyAgICAgICBvZiB0aGlzIGNvbHVtbiBoYXMgbm8gbWVhbmluZyBvbiB0aGUgcHJpbWFyeSBz ZXJ2ZXI7IHRoZSBjb2x1bW4gdmFsdWUgb24KKyAgICAgICB0aGUgcHJpbWFyeSBpcyBkZWZhdWx0 IGZhbHNlIGZvciBhbGwgc2xvdHMgYnV0IG1heSAoaWYgbGVmdG92ZXIgZnJvbSBhCisgICAgICAg cHJvbW90ZWQgc3RhbmRieSkgYWxzbyBiZSB0cnVlLgorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDQ3ODM3N2M0YTIuLjJkNjZkMGQ4NGIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTM1OTYsNiArMzU5Niw5IEBAIFhMb2dHZXRMYXN0 UmVtb3ZlZFNlZ25vKHZvaWQpCiAvKgogICogUmV0dXJuIHRoZSBvbGRlc3QgV0FMIHNlZ21lbnQg b24gdGhlIGdpdmVuIFRMSSB0aGF0IHN0aWxsIGV4aXN0cyBpbgogICogWExPR0RJUiwgb3IgMCBp ZiBub25lLgorICoKKyAqIElmIHRoZSBnaXZlbiBUTEkgaXMgMCwgcmV0dXJuIHRoZSBvbGRlc3Qg V0FMIHNlZ21lbnQgYW1vbmcgYWxsIHRoZSBjdXJyZW50bHkKKyAqIGV4aXN0aW5nIFdBTCBzZWdt ZW50cy4KICAqLwogWExvZ1NlZ05vCiBYTG9nR2V0T2xkZXN0U2Vnbm8oVGltZUxpbmVJRCB0bGkp CkBAIC0zNjE5LDcgKzM2MjIsNyBAQCBYTG9nR2V0T2xkZXN0U2Vnbm8oVGltZUxpbmVJRCB0bGkp CiAJCQkJCQkgd2FsX3NlZ21lbnRfc2l6ZSk7CiAKIAkJLyogSWdub3JlIGFueXRoaW5nIHRoYXQn cyBub3QgZnJvbSB0aGUgVExJIG9mIGludGVyZXN0LiAqLwotCQlpZiAodGxpICE9IGZpbGVfdGxp KQorCQlpZiAodGxpICE9IDAgJiYgdGxpICE9IGZpbGVfdGxpKQogCQkJY29udGludWU7CiAKIAkJ LyogSWYgaXQncyB0aGUgb2xkZXN0IHNvIGZhciwgdXBkYXRlIG9sZGVzdF9zZWduby4gKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggMGJiNDcyZGEyNy4u ODdiNDlkNTI0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3Jl Y292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMK QEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N0YXJ0dXAuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9y YWdlL2xhdGNoLmgiCkBAIC0xNDY3LDYgKzE0NjgsMjAgQEAgRmluaXNoV2FsUmVjb3Zlcnkodm9p ZCkKIAkgKi8KIAlYTG9nU2h1dGRvd25XYWxSY3YoKTsKIAorCS8qCisJICogU2h1dGRvd24gdGhl IHNsb3Qgc3luYyB3b3JrZXJzIHRvIHByZXZlbnQgcG90ZW50aWFsIGNvbmZsaWN0cyBiZXR3ZWVu CisJICogdXNlciBwcm9jZXNzZXMgYW5kIHNsb3RzeW5jIHdvcmtlcnMgYWZ0ZXIgYSBwcm9tb3Rp b24uCisJICoKKwkgKiBXZSBkbyBub3QgdXBkYXRlIHRoZSAnc3luY2VkJyBjb2x1bW4gZnJvbSB0 cnVlIHRvIGZhbHNlIGhlcmUsIGFzIGFueQorCSAqIGZhaWxlZCB1cGRhdGUgY291bGQgbGVhdmUg J3N5bmNlZCcgY29sdW1uIGZhbHNlIGZvciBzb21lIHNsb3RzLiBUaGlzCisJICogY291bGQgY2F1 c2UgaXNzdWVzIGR1cmluZyBzbG90IHN5bmMgYWZ0ZXIgcmVzdGFydGluZyB0aGUgc2VydmVyIGFz IGEKKwkgKiBzdGFuZGJ5LiBXaGlsZSB1cGRhdGluZyBhZnRlciBzd2l0Y2hpbmcgdG8gdGhlIG5l dyB0aW1lbGluZSBpcyBhbgorCSAqIG9wdGlvbiwgaXQgZG9lcyBub3Qgc2ltcGxpZnkgdGhlIGhh bmRsaW5nIGZvciAnc3luY2VkJyBjb2x1bW4uCisJICogVGhlcmVmb3JlLCB3ZSByZXRhaW4gdGhl ICdzeW5jZWQnIGNvbHVtbiBhcyB0cnVlIGFmdGVyIHByb21vdGlvbiBhcyBpdAorCSAqIG1heSBw cm92aWRlIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2xvdCBvcmlnaW4uCisJICovCisJ U2h1dERvd25TbG90U3luYygpOworCiAJLyoKIAkgKiBXZSBhcmUgbm93IGRvbmUgcmVhZGluZyB0 aGUgeGxvZyBmcm9tIHN0cmVhbS4gVHVybiBvZmYgc3RyZWFtaW5nCiAJICogcmVjb3ZlcnkgdG8g Zm9yY2UgZmV0Y2hpbmcgdGhlIGZpbGVzICh3aGljaCB3b3VsZCBiZSByZXF1aXJlZCBhdCBlbmQg b2YKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA2NzkxYmZmOWRkLi4wNDIy N2E3MmQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMDI0LDcgKzEw MjQsOCBAQCBDUkVBVEUgVklFVyBwZ19yZXBsaWNhdGlvbl9zbG90cyBBUwogICAgICAgICAgICAg TC5zYWZlX3dhbF9zaXplLAogICAgICAgICAgICAgTC50d29fcGhhc2UsCiAgICAgICAgICAgICBM LmNvbmZsaWN0X3JlYXNvbiwKLSAgICAgICAgICAgIEwuZmFpbG92ZXIKKyAgICAgICAgICAgIEwu ZmFpbG92ZXIsCisgICAgICAgICAgICBMLnN5bmNlZAogICAgIEZST00gcGdfZ2V0X3JlcGxpY2F0 aW9uX3Nsb3RzKCkgQVMgTAogICAgICAgICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIEQgT04g KEwuZGF0b2lkID0gRC5vaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2Jnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggNjdm OTJjMjRkYi4uNDY4MjhiOGE4OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9i Z3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMjEs NiArMjEsNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xv Z2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2RzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9sYXRjaC5oIgpAQCAtMTI5LDYgKzEzMCw5IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QKIAl7CiAJCSJBcHBseVdvcmtlck1haW4iLCBBcHBseVdvcmtlck1haW4KIAl9LAorCXsK KwkJIlJlcGxTbG90U3luY1dvcmtlck1haW4iLCBSZXBsU2xvdFN5bmNXb3JrZXJNYWluCisJfSwK IAl7CiAJCSJQYXJhbGxlbEFwcGx5V29ya2VyTWFpbiIsIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWlu CiAJfSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKaW5kZXggZmViNDcxZGQxZC4uMzY3 OTVmOTFmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAgLTExNiw2ICsxMTYs NyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNl bmRlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcGdfc2htZW0uaCIKQEAgLTEwMTAsNiArMTAxMSwxMiBAQCBQb3N0bWFzdGVyTWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCSAqLwogCUFwcGx5TGF1bmNoZXJSZWdpc3RlcigpOwog CisJLyoKKwkgKiBSZWdpc3RlciB0aGUgc2xvdCBzeW5jIHdvcmtlciBoZXJlIHRvIGtpY2sgc3Rh cnQgc2xvdC1zeW5jIG9wZXJhdGlvbgorCSAqIHNvb25lciBvbiB0aGUgcGh5c2ljYWwgc3RhbmRi eS4KKwkgKi8KKwlTbG90U3luY1dvcmtlclJlZ2lzdGVyKCk7CisKIAkvKgogCSAqIHByb2Nlc3Mg YW55IGxpYnJhcmllcyB0aGF0IHNob3VsZCBiZSBwcmVsb2FkZWQgYXQgcG9zdG1hc3RlciBzdGFy dAogCSAqLwpAQCAtNTc5OSw2ICs1ODA2LDkgQEAgYmd3b3JrZXJfc2hvdWxkX3N0YXJ0X25vdyhC Z1dvcmtlclN0YXJ0VGltZSBzdGFydF90aW1lKQogCQljYXNlIFBNX0hPVF9TVEFOREJZOgogCQkJ aWYgKHN0YXJ0X3RpbWUgPT0gQmdXb3JrZXJTdGFydF9Db25zaXN0ZW50U3RhdGUpCiAJCQkJcmV0 dXJuIHRydWU7CisJCQlpZiAoc3RhcnRfdGltZSA9PSBCZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRT dGF0ZV9Ib3RTdGFuZGJ5ICYmCisJCQkJcG1TdGF0ZSAhPSBQTV9SVU4pCisJCQkJcmV0dXJuIHRy dWU7CiAJCQkvKiBmYWxsIHRocm91Z2ggKi8KIAogCQljYXNlIFBNX1JFQ09WRVJZOgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJl Y2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBx d2FscmVjZWl2ZXIuYwppbmRleCAyNDM5NzMzYjU1Li42MWVlYWExN2IyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2Fs cmVjZWl2ZXIuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzdG9yZS5o IgorI2luY2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIKIAogUEdfTU9EVUxFX01BR0lDOwogCkBAIC01 Nyw2ICs1OCw3IEBAIHN0YXRpYyB2b2lkIGxpYnBxcmN2X2dldF9zZW5kZXJpbmZvKFdhbFJlY2Vp dmVyQ29ubiAqY29ubiwKIAkJCQkJCQkJCWNoYXIgKipzZW5kZXJfaG9zdCwgaW50ICpzZW5kZXJf cG9ydCk7CiBzdGF0aWMgY2hhciAqbGlicHFyY3ZfaWRlbnRpZnlfc3lzdGVtKFdhbFJlY2VpdmVy Q29ubiAqY29ubiwKIAkJCQkJCQkJCSAgVGltZUxpbmVJRCAqcHJpbWFyeV90bGkpOworc3RhdGlj IGNoYXIgKmxpYnBxcmN2X2dldF9kYm5hbWVfZnJvbV9jb25uaW5mbyhjb25zdCBjaGFyICpjb25u aW5mbyk7CiBzdGF0aWMgaW50CWxpYnBxcmN2X3NlcnZlcl92ZXJzaW9uKFdhbFJlY2VpdmVyQ29u biAqY29ubik7CiBzdGF0aWMgdm9pZCBsaWJwcXJjdl9yZWFkdGltZWxpbmVoaXN0b3J5ZmlsZShX YWxSZWNlaXZlckNvbm4gKmNvbm4sCiAJCQkJCQkJCQkJCSBUaW1lTGluZUlEIHRsaSwgY2hhciAq KmZpbGVuYW1lLApAQCAtOTksNiArMTAxLDcgQEAgc3RhdGljIFdhbFJlY2VpdmVyRnVuY3Rpb25z VHlwZSBQUVdhbFJlY2VpdmVyRnVuY3Rpb25zID0gewogCS53YWxyY3Zfc2VuZCA9IGxpYnBxcmN2 X3NlbmQsCiAJLndhbHJjdl9jcmVhdGVfc2xvdCA9IGxpYnBxcmN2X2NyZWF0ZV9zbG90LAogCS53 YWxyY3ZfYWx0ZXJfc2xvdCA9IGxpYnBxcmN2X2FsdGVyX3Nsb3QsCisJLndhbHJjdl9nZXRfZGJu YW1lX2Zyb21fY29ubmluZm8gPSBsaWJwcXJjdl9nZXRfZGJuYW1lX2Zyb21fY29ubmluZm8sCiAJ LndhbHJjdl9nZXRfYmFja2VuZF9waWQgPSBsaWJwcXJjdl9nZXRfYmFja2VuZF9waWQsCiAJLndh bHJjdl9leGVjID0gbGlicHFyY3ZfZXhlYywKIAkud2FscmN2X2Rpc2Nvbm5lY3QgPSBsaWJwcXJj dl9kaXNjb25uZWN0CkBAIC00NzEsNiArNDc0LDQ0IEBAIGxpYnBxcmN2X3NlcnZlcl92ZXJzaW9u KFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAlyZXR1cm4gUFFzZXJ2ZXJWZXJzaW9uKGNvbm4tPnN0 cmVhbUNvbm4pOwogfQogCisvKgorICogR2V0IGRhdGFiYXNlIG5hbWUgZnJvbSB0aGUgcHJpbWFy eSBzZXJ2ZXIncyBjb25uaW5mby4KKyAqCisgKiBJZiBkYm5hbWUgaXMgbm90IGZvdW5kIGluIGNv bm5JbmZvLCByZXR1cm4gTlVMTCB2YWx1ZS4KKyAqLworc3RhdGljIGNoYXIgKgorbGlicHFyY3Zf Z2V0X2RibmFtZV9mcm9tX2Nvbm5pbmZvKGNvbnN0IGNoYXIgKmNvbm5JbmZvKQoreworCVBRY29u bmluZm9PcHRpb24gKm9wdHM7CisJY2hhcgkgICAqZGJuYW1lID0gTlVMTDsKKwljaGFyCSAgICpl cnIgPSBOVUxMOworCisJb3B0cyA9IFBRY29ubmluZm9QYXJzZShjb25uSW5mbywgJmVycik7CisJ aWYgKG9wdHMgPT0gTlVMTCkKKwl7CisJCS8qIFRoZSBlcnJvciBzdHJpbmcgaXMgbWFsbG9jJ2Qs IHNvIHdlIG11c3QgZnJlZSBpdCBleHBsaWNpdGx5ICovCisJCWNoYXIJICAgKmVycmNvcHkgPSBl cnIgPyBwc3RyZHVwKGVycikgOiAib3V0IG9mIG1lbW9yeSI7CisKKwkJUFFmcmVlbWVtKGVycik7 CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJCSBlcnJtc2coImludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiAlcyIsIGVycmNv cHkpKSk7CisJfQorCisJZm9yIChQUWNvbm5pbmZvT3B0aW9uICpvcHQgPSBvcHRzOyBvcHQtPmtl eXdvcmQgIT0gTlVMTDsgKytvcHQpCisJeworCQkvKgorCQkgKiBJZiBtdWx0aXBsZSBkYm5hbWVz IGFyZSBzcGVjaWZpZWQsIHRoZW4gdGhlIGxhc3Qgb25lIHdpbGwgYmUKKwkJICogcmV0dXJuZWQK KwkJICovCisJCWlmIChzdHJjbXAob3B0LT5rZXl3b3JkLCAiZGJuYW1lIikgPT0gMCAmJiBvcHQt PnZhbCAmJgorCQkJb3B0LT52YWxbMF0gIT0gJ1wwJykKKwkJCWRibmFtZSA9IHBzdHJkdXAob3B0 LT52YWwpOworCX0KKworCXJldHVybiBkYm5hbWU7Cit9CisKIC8qCiAgKiBTdGFydCBzdHJlYW1p bmcgV0FMIGRhdGEgZnJvbSBnaXZlbiBzdHJlYW1pbmcgb3B0aW9ucy4KICAqCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQppbmRleCAyZGMyNWUzN2JiLi5iYTAzZWVmZjFj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKQEAgLTI1LDYgKzI1 LDcgQEAgT0JKUyA9IFwKIAlwcm90by5vIFwKIAlyZWxhdGlvbi5vIFwKIAlyZW9yZGVyYnVmZmVy Lm8gXAorCXNsb3RzeW5jLm8gXAogCXNuYXBidWlsZC5vIFwKIAl0YWJsZXN5bmMubyBcCiAJd29y a2VyLm8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNh bC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKaW5kZXggY2Ew OWM2ODNmMS4uNWFlZmIxMGVjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sb2dpY2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s b2dpY2FsLmMKQEAgLTUyNCw2ICs1MjQsMTggQEAgQ3JlYXRlRGVjb2RpbmdDb250ZXh0KFhMb2dS ZWNQdHIgc3RhcnRfbHNuLAogCQkJCSBlcnJtc2coInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIHdh cyBub3QgY3JlYXRlZCBpbiB0aGlzIGRhdGFiYXNlIiwKIAkJCQkJCU5hbWVTdHIoc2xvdC0+ZGF0 YS5uYW1lKSkpKTsKIAorCS8qCisJICogRG8gbm90IGFsbG93IGNvbnN1bXB0aW9uIG9mIGEgInN5 bmNocm9uaXplZCIgc2xvdCB1bnRpbCB0aGUgc3RhbmRieQorCSAqIGdldHMgcHJvbW90ZWQuCisJ ICovCisJaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpICYmIHNsb3QtPmRhdGEuc3luY2VkKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCisJCQkJZXJybXNnKCJjYW5ub3QgdXNlIHJlcGxpY2F0aW9uIHNsb3QgXCIl c1wiIGZvciBsb2dpY2FsIgorCQkJCQkgICAiIGRlY29kaW5nIiwgTmFtZVN0cihzbG90LT5kYXRh Lm5hbWUpKSwKKwkJCQllcnJkZXRhaWwoIlRoaXMgc2xvdCBpcyBiZWluZyBzeW5jZWQgZnJvbSB0 aGUgcHJpbWFyeSBzZXJ2ZXIuIiksCisJCQkJZXJyaGludCgiU3BlY2lmeSBhbm90aGVyIHJlcGxp Y2F0aW9uIHNsb3QuIikpOworCiAJLyoKIAkgKiBDaGVjayBpZiBzbG90IGhhcyBiZWVuIGludmFs aWRhdGVkIGR1ZSB0byBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiBBdm9pZAogCSAqICJjYW5ub3Qg Z2V0IGNoYW5nZXMiIHdvcmRpbmcgaW4gdGhpcyBlcnJtc2cgYmVjYXVzZSB0aGF0J2QgYmUKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCmluZGV4IDEwNTBlYjJj MDkuLjNkZWMzNmE2ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNv bi5idWlsZApAQCAtMTEsNiArMTEsNyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdw cm90by5jJywKICAgJ3JlbGF0aW9uLmMnLAogICAncmVvcmRlcmJ1ZmZlci5jJywKKyAgJ3Nsb3Rz eW5jLmMnLAogICAnc25hcGJ1aWxkLmMnLAogICAndGFibGVzeW5jLmMnLAogICAnd29ya2VyLmMn LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmU0NDQ3NGRkNTgKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTAsMCArMSwx MjIyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIHNsb3RzeW5jLmMKKyAqCSAgIFBvc3RncmVT UUwgd29ya2VyIGZvciBzeW5jaHJvbml6aW5nIHNsb3RzIHRvIGEgc3RhbmRieSBzZXJ2ZXIgZnJv bSB0aGUKKyAqICAgICAgICAgcHJpbWFyeSBzZXJ2ZXIuCisgKgorICogQ29weXJpZ2h0IChjKSAy MDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJ Q0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwor ICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgY29kZSBmb3Igc2xvdCBzeW5jIHdvcmtlciBv biBhIHBoeXNpY2FsIHN0YW5kYnkKKyAqIHRvIGZldGNoIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMg aW5mb3JtYXRpb24gZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIsCisgKiBjcmVhdGUgdGhlIHNsb3Rz IG9uIHRoZSBzdGFuZGJ5IGFuZCBzeW5jaHJvbml6ZSB0aGVtIHBlcmlvZGljYWxseS4KKyAqCisg KiBXaGlsZSBjcmVhdGluZyB0aGUgc2xvdCBvbiBwaHlzaWNhbCBzdGFuZGJ5LCBpZiB0aGUgbG9j YWwgcmVzdGFydF9sc24gYW5kL29yCisgKiBsb2NhbCBjYXRhbG9nX3htaW4gaXMgYWhlYWQgb2Yg dGhvc2Ugb24gdGhlIHJlbW90ZSB0aGVuIHRoZSB3b3JrZXIgY2Fubm90CisgKiBjcmVhdGUgdGhl IGxvY2FsIHNsb3QgaW4gc3luYyB3aXRoIHRoZSBwcmltYXJ5IHNlcnZlciBiZWNhdXNlIHRoYXQg d291bGQKKyAqIG1lYW4gbW92aW5nIHRoZSBsb2NhbCBzbG90IGJhY2t3YXJkcyBhbmQgdGhlIHN0 YW5kYnkgbWlnaHQgbm90IGhhdmUgV0FMcworICogcmV0YWluZWQgZm9yIG9sZCBMU04uIEluIHRo aXMgY2FzZSwgdGhlIHdvcmtlciB3aWxsIG1hcmsgdGhlIHNsb3QgYXMKKyAqIFJTX1RFTVBPUkFS WS4gT25jZSB0aGUgcHJpbWFyeSBzZXJ2ZXIgY2F0Y2hlcyB1cCwgdGhlIHdvcmtlciB3aWxsIG1h cmsgdGhlCisgKiBzbG90IGFzIFJTX1BFUlNJU1RFTlQgKHdoaWNoIG1lYW5zIHN5bmMtcmVhZHkp IGFuZCB3aWxsIHBlcmZvcm0gdGhlIHN5bmMKKyAqIHBlcmlvZGljYWxseS4KKyAqCisgKiBUaGUg d29ya2VyIGFsc28gdGFrZXMgY2FyZSBvZiBkcm9wcGluZyB0aGUgc2xvdHMgd2hpY2ggd2VyZSBj cmVhdGVkIGJ5IGl0CisgKiBhbmQgYXJlIGN1cnJlbnRseSBub3QgbmVlZGVkIHRvIGJlIHN5bmNo cm9uaXplZC4KKyAqCisgKiBJdCB3YWl0cyBmb3IgYSBwZXJpb2Qgb2YgdGltZSBiZWZvcmUgdGhl IG5leHQgc3luY2hyb25pemF0aW9uLCB3aXRoIHRoZQorICogZHVyYXRpb24gdmFyeWluZyBiYXNl ZCBvbiB3aGV0aGVyIGFueSBzbG90cyB3ZXJlIHVwZGF0ZWQgZHVyaW5nIHRoZSBsYXN0CisgKiBj eWNsZS4gUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGFib3ZlIHdhaXRfZm9yX3Nsb3RfYWN0aXZpdHko KSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFNsb3Qgc3luY2hyb25pemF0aW9uIGlzIGN1cnJl bnRseSBub3Qgc3VwcG9ydGVkIG9uIHRoZSBjYXNjYWRpbmcgc3RhbmRieS4KKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nl c3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv eGxvZ19pbnRlcm5hbC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5k cy5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIu aCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2xvZ2ljYWwuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIK KyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCisjaW5jbHVkZSAicmVwbGlj YXRpb24vd2FscmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5o IgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAidGNvcC90Y29wcHJv dC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncm9p ZHMuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19s c24uaCIKKyNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCisKKy8qCisgKiBTdHJ1Y3R1cmUgdG8g aG9sZCBpbmZvcm1hdGlvbiBmZXRjaGVkIGZyb20gdGhlIHByaW1hcnkgc2VydmVyIGFib3V0IGEg bG9naWNhbAorICogcmVwbGljYXRpb24gc2xvdC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUmVtb3Rl U2xvdAoreworCWNoYXIJICAgKm5hbWU7CisJY2hhcgkgICAqcGx1Z2luOworCWNoYXIJICAgKmRh dGFiYXNlOworCWJvb2wJCXR3b19waGFzZTsKKwlib29sCQlmYWlsb3ZlcjsKKwlYTG9nUmVjUHRy CXJlc3RhcnRfbHNuOworCVhMb2dSZWNQdHIJY29uZmlybWVkX2xzbjsKKwlUcmFuc2FjdGlvbklk IGNhdGFsb2dfeG1pbjsKKworCS8qIFJTX0lOVkFMX05PTkUgaWYgdmFsaWQsIG9yIHRoZSByZWFz b24gb2YgaW52YWxpZGF0aW9uICovCisJUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2Ug aW52YWxpZGF0ZWQ7Cit9IFJlbW90ZVNsb3Q7CisKKy8qCisgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcg aW5mb3JtYXRpb24gYmV0d2VlbiBzdGFydHVwIHByb2Nlc3MgYW5kIHNsb3QKKyAqIHN5bmMgd29y a2VyLgorICoKKyAqIFNsb3Qgc3luYyB3b3JrZXIncyBwaWQgaXMgbmVlZGVkIGJ5IHRoZSBzdGFy dHVwIHByb2Nlc3MgaW4gb3JkZXIgdG8KKyAqIHNodXQgaXQgZG93biBkdXJpbmcgcHJvbW90aW9u LiBTdGFydHVwIHByb2Nlc3Mgc2h1dHMgZG93biB0aGUgc2xvdAorICogc3luYyB3b3JrZXIgYW5k IGFsc28gc2V0cyBzdG9wU2lnbmFsZWQ9dHJ1ZSB0byBoYW5kbGUgdGhlIHJhY2UgY29uZGl0aW9u CisgKiB3aGVuIHBvc3RtYXN0ZXIgaGFzIG5vdCBub3RpY2VkIHRoZSBwcm9tb3Rpb24geWV0IGFu ZCB0aHVzIG1heSBlbmQgdXAKKyAqIHJlc3RhcnRpbmcgc2xvdCBzeW5jIHdvcmtlci4gSWYgc3Rv cFNpZ25hbGVkIGlzIHNldCwgdGhlIHdvcmtlciB3aWxsCisgKiBleGl0IGluIHN1Y2ggYSBjYXNl LgorICovCit0eXBlZGVmIHN0cnVjdCBTbG90U3luY1dvcmtlckN0eFN0cnVjdAoreworCXBpZF90 CQlwaWQ7CisJYm9vbAkJc3RvcFNpZ25hbGVkOworCXNsb2NrX3QJCW11dGV4OworfSBTbG90U3lu Y1dvcmtlckN0eFN0cnVjdDsKKworU2xvdFN5bmNXb3JrZXJDdHhTdHJ1Y3QgKlNsb3RTeW5jV29y a2VyID0gTlVMTDsKKworLyogR1VDIHZhcmlhYmxlICovCitib29sCQllbmFibGVfc3luY3Nsb3Qg PSBmYWxzZTsKKworLyoKKyAqIFRoZSBzbGVlcCB0aW1lIChtcykgYmV0d2VlbiBzbG90LXN5bmMg Y3ljbGVzIHZhcmllcyBkeW5hbWljYWxseQorICogKHdpdGhpbiBhIE1JTi9NQVggcmFuZ2UpIGFj Y29yZGluZyB0byBzbG90IGFjdGl2aXR5LiBTZWUKKyAqIHdhaXRfZm9yX3Nsb3RfYWN0aXZpdHko KSBmb3IgZGV0YWlscy4KKyAqLworI2RlZmluZSBNSU5fV09SS0VSX05BUFRJTUVfTVMgIDIwMAor I2RlZmluZSBNQVhfV09SS0VSX05BUFRJTUVfTVMgIDMwMDAwCS8qIDMwcyAqLworc3RhdGljIGxv bmcgc2xlZXBfbXMgPSBNSU5fV09SS0VSX05BUFRJTUVfTVM7CisKK3N0YXRpYyB2b2lkIFByb2Nl c3NTbG90U3luY0ludGVycnVwdHMoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4pOworCisvKgorICog SWYgbmVjZXNzYXJ5LCB1cGRhdGUgbG9jYWwgc2xvdCBtZXRhZGF0YSBiYXNlZCBvbiB0aGUgZGF0 YSBmcm9tIHRoZSByZW1vdGUKKyAqIHNsb3QuCisgKgorICogSWYgbm8gdXBkYXRlIHdhcyBuZWVk ZWQgKHRoZSBkYXRhIG9mIHRoZSByZW1vdGUgc2xvdCBpcyB0aGUgc2FtZSBhcyB0aGUKKyAqIGxv Y2FsIHNsb3QpIHJldHVybiBmYWxzZSwgb3RoZXJ3aXNlIHRydWUuCisgKi8KK3N0YXRpYyBib29s Citsb2NhbF9zbG90X3VwZGF0ZShSZW1vdGVTbG90ICpyZW1vdGVfc2xvdCwgT2lkIHJlbW90ZV9k YmlkKQoreworCVJlcGxpY2F0aW9uU2xvdCAqc2xvdCA9IE15UmVwbGljYXRpb25TbG90OworCU5h bWVEYXRhCXBsdWdpbl9uYW1lOworCisJQXNzZXJ0KHNsb3QtPmRhdGEuaW52YWxpZGF0ZWQgPT0g UlNfSU5WQUxfTk9ORSk7CisKKwlpZiAoc3RyY21wKHJlbW90ZV9zbG90LT5wbHVnaW4sIE5hbWVT dHIoc2xvdC0+ZGF0YS5wbHVnaW4pKSA9PSAwICYmCisJCXJlbW90ZV9kYmlkID09IHNsb3QtPmRh dGEuZGF0YWJhc2UgJiYKKwkJcmVtb3RlX3Nsb3QtPnJlc3RhcnRfbHNuID09IHNsb3QtPmRhdGEu cmVzdGFydF9sc24gJiYKKwkJcmVtb3RlX3Nsb3QtPmNhdGFsb2dfeG1pbiA9PSBzbG90LT5kYXRh LmNhdGFsb2dfeG1pbiAmJgorCQlyZW1vdGVfc2xvdC0+dHdvX3BoYXNlID09IHNsb3QtPmRhdGEu dHdvX3BoYXNlICYmCisJCXJlbW90ZV9zbG90LT5mYWlsb3ZlciA9PSBzbG90LT5kYXRhLmZhaWxv dmVyICYmCisJCXJlbW90ZV9zbG90LT5jb25maXJtZWRfbHNuID09IHNsb3QtPmRhdGEuY29uZmly bWVkX2ZsdXNoKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBBdm9pZCBleHBlbnNpdmUgb3BlcmF0 aW9ucyB3aGlsZSBob2xkaW5nIGEgc3BpbmxvY2suICovCisJbmFtZXN0cmNweSgmcGx1Z2luX25h bWUsIHJlbW90ZV9zbG90LT5wbHVnaW4pOworCisJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRl eCk7CisJc2xvdC0+ZGF0YS5wbHVnaW4gPSBwbHVnaW5fbmFtZTsKKwlzbG90LT5kYXRhLmRhdGFi YXNlID0gcmVtb3RlX2RiaWQ7CisJc2xvdC0+ZGF0YS50d29fcGhhc2UgPSByZW1vdGVfc2xvdC0+ dHdvX3BoYXNlOworCXNsb3QtPmRhdGEuZmFpbG92ZXIgPSByZW1vdGVfc2xvdC0+ZmFpbG92ZXI7 CisJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlbW90ZV9zbG90LT5yZXN0YXJ0X2xzbjsKKwlz bG90LT5kYXRhLmNvbmZpcm1lZF9mbHVzaCA9IHJlbW90ZV9zbG90LT5jb25maXJtZWRfbHNuOwor CXNsb3QtPmRhdGEuY2F0YWxvZ194bWluID0gcmVtb3RlX3Nsb3QtPmNhdGFsb2dfeG1pbjsKKwlz bG90LT5lZmZlY3RpdmVfY2F0YWxvZ194bWluID0gcmVtb3RlX3Nsb3QtPmNhdGFsb2dfeG1pbjsK KwlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKKworCWlmIChyZW1vdGVfc2xvdC0+Y2F0 YWxvZ194bWluICE9IHNsb3QtPmRhdGEuY2F0YWxvZ194bWluKQorCQlSZXBsaWNhdGlvblNsb3Rz Q29tcHV0ZVJlcXVpcmVkWG1pbihmYWxzZSk7CisKKwlpZiAocmVtb3RlX3Nsb3QtPnJlc3RhcnRf bHNuICE9IHNsb3QtPmRhdGEucmVzdGFydF9sc24pCisJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRl UmVxdWlyZWRMU04oKTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogR2V0IGxpc3Qgb2Yg bG9jYWwgbG9naWNhbCBzbG90cyB3aGljaCBhcmUgc3luY2hyb25pemVkIGZyb20KKyAqIHRoZSBw cmltYXJ5IHNlcnZlci4KKyAqLworc3RhdGljIExpc3QgKgorZ2V0X2xvY2FsX3N5bmNlZF9zbG90 cyh2b2lkKQoreworCUxpc3QJICAgKmxvY2FsX3Nsb3RzID0gTklMOworCisJTFdMb2NrQWNxdWly ZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKTsKKworCWZvciAoaW50IGkg PSAwOyBpIDwgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBpKyspCisJeworCQlSZXBsaWNhdGlvblNs b3QgKnMgPSAmUmVwbGljYXRpb25TbG90Q3RsLT5yZXBsaWNhdGlvbl9zbG90c1tpXTsKKworCQkv KiBDaGVjayBpZiBpdCBpcyBhIHN5bmNocm9uaXplZCBzbG90ICovCisJCWlmIChzLT5pbl91c2Ug JiYgcy0+ZGF0YS5zeW5jZWQpCisJCXsKKwkJCUFzc2VydChTbG90SXNMb2dpY2FsKHMpKTsKKwkJ CWxvY2FsX3Nsb3RzID0gbGFwcGVuZChsb2NhbF9zbG90cywgcyk7CisJCX0KKwl9CisKKwlMV0xv Y2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKworCXJldHVybiBsb2NhbF9z bG90czsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpZiBsb2NhbF9zbG90 IGlzIHByZXNlbnQgaW4gcmVtb3RlX3Nsb3RzIGxpc3QuCisgKgorICogSXQgYWxzbyBjaGVja3Mg aWYgdGhlIHNsb3Qgb24gdGhlIHN0YW5kYnkgc2VydmVyIHdhcyBpbnZhbGlkYXRlZCB3aGlsZSB0 aGUKKyAqIGNvcnJlc3BvbmRpbmcgcmVtb3RlIHNsb3QgaW4gdGhlIGxpc3QgcmVtYWluZWQgdmFs aWQuIElmIGZvdW5kIHNvLCBpdCBzZXRzCisgKiB0aGUgbG9jYWxseV9pbnZhbGlkYXRlZCBmbGFn IHRvIHRydWUuCisgKi8KK3N0YXRpYyBib29sCitjaGVja19zeW5jX3Nsb3Rfb25fcmVtb3RlKFJl cGxpY2F0aW9uU2xvdCAqbG9jYWxfc2xvdCwgTGlzdCAqcmVtb3RlX3Nsb3RzLAorCQkJCQkJICBi b29sICpsb2NhbGx5X2ludmFsaWRhdGVkKQoreworCWZvcmVhY2hfcHRyKFJlbW90ZVNsb3QsIHJl bW90ZV9zbG90LCByZW1vdGVfc2xvdHMpCisJeworCQlpZiAoc3RyY21wKHJlbW90ZV9zbG90LT5u YW1lLCBOYW1lU3RyKGxvY2FsX3Nsb3QtPmRhdGEubmFtZSkpID09IDApCisJCXsKKwkJCS8qCisJ CQkgKiBJZiByZW1vdGUgc2xvdCBpcyBub3QgaW52YWxpZGF0ZWQgYnV0IGxvY2FsIHNsb3QgaXMg bWFya2VkIGFzCisJCQkgKiBpbnZhbGlkYXRlZCwgdGhlbiBzZXQgdGhlIGJvb2wuCisJCQkgKi8K KwkJCVNwaW5Mb2NrQWNxdWlyZSgmbG9jYWxfc2xvdC0+bXV0ZXgpOworCQkJKmxvY2FsbHlfaW52 YWxpZGF0ZWQgPQorCQkJCShyZW1vdGVfc2xvdC0+aW52YWxpZGF0ZWQgPT0gUlNfSU5WQUxfTk9O RSkgJiYKKwkJCQkobG9jYWxfc2xvdC0+ZGF0YS5pbnZhbGlkYXRlZCAhPSBSU19JTlZBTF9OT05F KTsKKwkJCVNwaW5Mb2NrUmVsZWFzZSgmbG9jYWxfc2xvdC0+bXV0ZXgpOworCisJCQlyZXR1cm4g dHJ1ZTsKKwkJfQorCX0KKworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIERyb3Agb2Jzb2xl dGUgc2xvdHMKKyAqCisgKiBEcm9wIHRoZSBzbG90cyB0aGF0IG5vIGxvbmdlciBuZWVkIHRvIGJl IHN5bmNlZCBpLmUuIHRoZXNlIGVpdGhlciBkbyBub3QKKyAqIGV4aXN0IG9uIHRoZSBwcmltYXJ5 IG9yIGFyZSBubyBsb25nZXIgZW5hYmxlZCBmb3IgZmFpbG92ZXIuCisgKgorICogQWRkaXRpb25h bGx5LCBpdCBkcm9wcyBzbG90cyB0aGF0IGFyZSB2YWxpZCBvbiB0aGUgcHJpbWFyeSBidXQgZ290 CisgKiBpbnZhbGlkYXRlZCBvbiB0aGUgc3RhbmRieS4gVGhpcyBzaXR1YXRpb24gbWF5IG9jY3Vy IGR1ZSB0byB0aGUgZm9sbG93aW5nCisgKiByZWFzb25zOgorICogLSBUaGUgbWF4X3Nsb3Rfd2Fs X2tlZXBfc2l6ZSBvbiB0aGUgc3RhbmRieSBpcyBpbnN1ZmZpY2llbnQgdG8gcmV0YWluIFdBTAor ICogICByZWNvcmRzIGZyb20gdGhlIHJlc3RhcnRfbHNuIG9mIHRoZSBzbG90LgorICogLSBwcmlt YXJ5X3Nsb3RfbmFtZSBpcyB0ZW1wb3JhcmlseSByZXNldCB0byBudWxsIGFuZCB0aGUgcGh5c2lj YWwgc2xvdCBpcworICogICByZW1vdmVkLgorICogLSBUaGUgcHJpbWFyeSBjaGFuZ2VzIHdhbF9s ZXZlbCB0byBhIGxldmVsIGxvd2VyIHRoYW4gbG9naWNhbC4KKyAqCisgKiBUaGUgYXNzdW1wdGlv biBpcyB0aGF0IHRoZXNlIGRyb3BwZWQgc2xvdHMgd2lsbCBnZXQgcmVjcmVhdGVkIGluIG5leHQK KyAqIHN5bmMtY3ljbGUgYW5kIGl0IGlzIG9rYXkgdG8gZHJvcCBhbmQgcmVjcmVhdGUgc3VjaCBz bG90cyBhcyBsb25nIGFzIHRoZXNlCisgKiBhcmUgbm90IGNvbnN1bWFibGUgb24gdGhlIHN0YW5k YnkgKHdoaWNoIGlzIHRoZSBjYXNlIGN1cnJlbnRseSkuCisgKi8KK3N0YXRpYyB2b2lkCitkcm9w X29ic29sZXRlX3Nsb3RzKExpc3QgKnJlbW90ZV9zbG90X2xpc3QpCit7CisJTGlzdAkgICAqbG9j YWxfc2xvdHMgPSBnZXRfbG9jYWxfc3luY2VkX3Nsb3RzKCk7CisKKwlmb3JlYWNoX3B0cihSZXBs aWNhdGlvblNsb3QsIGxvY2FsX3Nsb3QsIGxvY2FsX3Nsb3RzKQorCXsKKwkJYm9vbAkJcmVtb3Rl X2V4aXN0cyA9IGZhbHNlOworCQlib29sCQlsb2NhbGx5X2ludmFsaWRhdGVkID0gZmFsc2U7CisK KwkJcmVtb3RlX2V4aXN0cyA9IGNoZWNrX3N5bmNfc2xvdF9vbl9yZW1vdGUobG9jYWxfc2xvdCwg cmVtb3RlX3Nsb3RfbGlzdCwKKwkJCQkJCQkJCQkJCSAgJmxvY2FsbHlfaW52YWxpZGF0ZWQpOwor CisJCS8qCisJCSAqIERyb3AgdGhlIGxvY2FsIHNsb3QgZWl0aGVyIGlmIGl0IGlzIG5vdCBpbiB0 aGUgcmVtb3RlIHNsb3RzIGxpc3Qgb3IKKwkJICogaXMgaW52YWxpZGF0ZWQgd2hpbGUgcmVtb3Rl IHNsb3QgaXMgc3RpbGwgdmFsaWQuCisJCSAqLworCQlpZiAoIXJlbW90ZV9leGlzdHMgfHwgbG9j YWxseV9pbnZhbGlkYXRlZCkKKwkJeworCQkJLyoKKwkJCSAqIFVzZSBzaGFyZWQgbG9jayB0byBw cmV2ZW50IGEgY29uZmxpY3Qgd2l0aAorCQkJICogUmVwbGljYXRpb25TbG90c0Ryb3BEQlNsb3Rz KCksIHRyeWluZyB0byBkcm9wIHRoZSBzYW1lIHNsb3QKKwkJCSAqIHdoaWxlIGRyb3AtZGF0YWJh c2Ugb3BlcmF0aW9uLgorCQkJICovCisJCQlMb2NrU2hhcmVkT2JqZWN0KERhdGFiYXNlUmVsYXRp b25JZCwgbG9jYWxfc2xvdC0+ZGF0YS5kYXRhYmFzZSwKKwkJCQkJCQkgMCwgQWNjZXNzU2hhcmVM b2NrKTsKKworCQkJUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKGxvY2FsX3Nsb3QtPmRh dGEubmFtZSksIHRydWUpOworCQkJQXNzZXJ0KE15UmVwbGljYXRpb25TbG90LT5kYXRhLnN5bmNl ZCk7CisJCQlSZXBsaWNhdGlvblNsb3REcm9wQWNxdWlyZWQoKTsKKworCQkJVW5sb2NrU2hhcmVk T2JqZWN0KERhdGFiYXNlUmVsYXRpb25JZCwgbG9jYWxfc2xvdC0+ZGF0YS5kYXRhYmFzZSwKKwkJ CQkJCQkgICAwLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQllcmVwb3J0KExPRywKKwkJCQkJZXJy bXNnKCJkcm9wcGVkIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIG9mIGRiaWQgJWQiLAorCQkJCQkJ ICAgTmFtZVN0cihsb2NhbF9zbG90LT5kYXRhLm5hbWUpLAorCQkJCQkJICAgbG9jYWxfc2xvdC0+ ZGF0YS5kYXRhYmFzZSkpOworCQl9CisJfQorfQorCisvKgorICogUmVzZXJ2ZSBXQUwgZm9yIHRo ZSBjdXJyZW50bHkgYWN0aXZlIHNsb3QgdXNpbmcgdGhlIHNwZWNpZmllZCBXQUwgbG9jYXRpb24K KyAqIChyZXN0YXJ0X2xzbikuCisgKgorICogSWYgdGhlIGdpdmVuIFdBTCBsb2NhdGlvbiBoYXMg YmVlbiByZW1vdmVkLCByZXNlcnZlIFdBTCB1c2luZyB0aGUgb2xkZXN0CisgKiBleGlzdGluZyBX QUwgc2VnbWVudC4KKyAqLworc3RhdGljIHZvaWQKK3Jlc2VydmVfd2FsX2Zvcl9zbG90KFhMb2dS ZWNQdHIgcmVzdGFydF9sc24pCit7CisJWExvZ1NlZ05vCW9sZGVzdF9zZWdubzsKKwlYTG9nU2Vn Tm8Jc2Vnbm87CisJUmVwbGljYXRpb25TbG90ICpzbG90ID0gTXlSZXBsaWNhdGlvblNsb3Q7CisK KwlBc3NlcnQoc2xvdCAhPSBOVUxMKTsKKwlBc3NlcnQoWExvZ1JlY1B0cklzSW52YWxpZChzbG90 LT5kYXRhLnJlc3RhcnRfbHNuKSk7CisKKwl3aGlsZSAodHJ1ZSkKKwl7CisJCVNwaW5Mb2NrQWNx dWlyZSgmc2xvdC0+bXV0ZXgpOworCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9s c247CisJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOworCisJCS8qIFByZXZlbnQgV0FM IHJlbW92YWwgYXMgZmFzdCBhcyBwb3NzaWJsZSAqLworCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0 ZVJlcXVpcmVkTFNOKCk7CisKKwkJWExCeXRlVG9TZWcoc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiwg c2Vnbm8sIHdhbF9zZWdtZW50X3NpemUpOworCisJCS8qCisJCSAqIEZpbmQgdGhlIG9sZGVzdCBl eGlzdGluZyBXQUwgc2VnbWVudCBmaWxlLgorCQkgKgorCQkgKiBOb3JtYWxseSwgd2UgY2FuIGRl dGVybWluZSBpdCBieSB1c2luZyB0aGUgbGFzdCByZW1vdmVkIHNlZ21lbnQKKwkJICogbnVtYmVy LiBIb3dldmVyLCBpZiBubyBXQUwgc2VnbWVudCBmaWxlcyBoYXZlIGJlZW4gcmVtb3ZlZCBieSBh CisJCSAqIGNoZWNrcG9pbnQgc2luY2Ugc3RhcnR1cCwgd2UgbmVlZCB0byBzZWFyY2ggZm9yIHRo ZSBvbGRlc3Qgc2VnbWVudAorCQkgKiBmaWxlIGN1cnJlbnRseSBleGlzdGluZyBpbiBYTE9HRElS LgorCQkgKi8KKwkJb2xkZXN0X3NlZ25vID0gWExvZ0dldExhc3RSZW1vdmVkU2Vnbm8oKSArIDE7 CisKKwkJaWYgKG9sZGVzdF9zZWdubyA9PSAxKQorCQkJb2xkZXN0X3NlZ25vID0gWExvZ0dldE9s ZGVzdFNlZ25vKDApOworCisJCS8qCisJCSAqIElmIGFsbCByZXF1aXJlZCBXQUwgaXMgc3RpbGwg dGhlcmUsIGdyZWF0LCBvdGhlcndpc2UgcmV0cnkuIFRoZQorCQkgKiBzbG90IHNob3VsZCBwcmV2 ZW50IGZ1cnRoZXIgcmVtb3ZhbCBvZiBXQUwsIHVubGVzcyB0aGVyZSdzIGEKKwkJICogY29uY3Vy cmVudCBSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCkgYWZ0ZXIgd2UndmUgd3Jp dHRlbgorCQkgKiB0aGUgbmV3IHJlc3RhcnRfbHNuIGFib3ZlLCBzbyBub3JtYWxseSB3ZSBzaG91 bGQgbmV2ZXIgbmVlZCB0byBsb29wCisJCSAqIG1vcmUgdGhhbiB0d2ljZS4KKwkJICovCisJCWlm IChzZWdubyA+PSBvbGRlc3Rfc2Vnbm8pCisJCQlicmVhazsKKworCQkvKiBSZXRyeSB1c2luZyB0 aGUgbG9jYXRpb24gb2YgdGhlIG9sZGVzdCB3YWwgc2VnbWVudCAqLworCQlYTG9nU2VnTm9PZmZz ZXRUb1JlY1B0cihvbGRlc3Rfc2Vnbm8sIDAsIHdhbF9zZWdtZW50X3NpemUsIHJlc3RhcnRfbHNu KTsKKwl9Cit9CisKKy8qCisgKiBVcGRhdGUgdGhlIExTTnMgYW5kIHBlcnNpc3QgdGhlIHNsb3Qg Zm9yIGZ1cnRoZXIgc3luY3MgaWYgdGhlIHJlbW90ZQorICogcmVzdGFydF9sc24gYW5kIGNhdGFs b2dfeG1pbiBoYXZlIGNhdWdodCB1cCB3aXRoIHRoZSBsb2NhbCBvbmVzLCBvdGhlcndpc2UKKyAq IGRvIG5vdGhpbmcuCisgKgorICogUmV0dXJuIHRydWUgaWYgdGhlIHNsb3QgaXMgbWFya2VkIGFz IFJTX1BFUlNJU1RFTlQgKHN5bmMtcmVhZHkpLCBvdGhlcndpc2UKKyAqIGZhbHNlLgorICovCitz dGF0aWMgYm9vbAordXBkYXRlX2FuZF9wZXJzaXN0X3Nsb3QoUmVtb3RlU2xvdCAqcmVtb3RlX3Ns b3QsIE9pZCByZW1vdGVfZGJpZCkKK3sKKwlSZXBsaWNhdGlvblNsb3QgKnNsb3QgPSBNeVJlcGxp Y2F0aW9uU2xvdDsKKworCS8qCisJICogQ2hlY2sgaWYgdGhlIHByaW1hcnkgc2VydmVyIGhhcyBj YXVnaHQgdXAuIFJlZmVyIHRvIHRoZSBjb21tZW50IGF0b3AKKwkgKiB0aGUgZmlsZSBmb3IgZGV0 YWlscyBvbiB0aGlzIGNoZWNrLgorCSAqCisJICogV2UgYWxzbyBuZWVkIHRvIGNoZWNrIGlmIHJl bW90ZV9zbG90J3MgY29uZmlybWVkX2xzbiBiZWNvbWVzIHZhbGlkLiBJdAorCSAqIGlzIHBvc3Np YmxlIHRvIGdldCBudWxsIHZhbHVlcyBmb3IgY29uZmlybWVkX2xzbiBhbmQgY2F0YWxvZ194bWlu IGlmIG9uCisJICogdGhlIHByaW1hcnkgc2VydmVyIHRoZSBzbG90IGlzIGp1c3QgY3JlYXRlZCB3 aXRoIGEgdmFsaWQgcmVzdGFydF9sc24KKwkgKiBhbmQgc2xvdC1zeW5jIHdvcmtlciBoYXMgZmV0 Y2hlZCB0aGUgc2xvdCBiZWZvcmUgdGhlIHByaW1hcnkgc2VydmVyCisJICogY291bGQgc2V0IHZh bGlkIGNvbmZpcm1lZF9sc24gYW5kIGNhdGFsb2dfeG1pbi4KKwkgKi8KKwlpZiAocmVtb3RlX3Ns b3QtPnJlc3RhcnRfbHNuIDwgc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiB8fAorCQlYTG9nUmVjUHRy SXNJbnZhbGlkKHJlbW90ZV9zbG90LT5jb25maXJtZWRfbHNuKSB8fAorCQlUcmFuc2FjdGlvbklk UHJlY2VkZXMocmVtb3RlX3Nsb3QtPmNhdGFsb2dfeG1pbiwKKwkJCQkJCQkgIHNsb3QtPmRhdGEu Y2F0YWxvZ194bWluKSkKKwl7CisJCS8qCisJCSAqIFRoZSByZW1vdGUgc2xvdCBkaWRuJ3QgY2F0 Y2ggdXAgdG8gbG9jYWxseSByZXNlcnZlZCBwb3NpdGlvbi4KKwkJICoKKwkJICogV2UgZG8gbm90 IGRyb3AgdGhlIHNsb3QgYmVjYXVzZSB0aGUgcmVzdGFydF9sc24gY2FuIGJlIGFoZWFkIG9mIHRo ZQorCQkgKiBjdXJyZW50IGxvY2F0aW9uIHdoZW4gcmVjcmVhdGluZyB0aGUgc2xvdCBpbiB0aGUg bmV4dCBjeWNsZS4gSXQgbWF5CisJCSAqIHRha2UgbW9yZSB0aW1lIHRvIGNyZWF0ZSBzdWNoIGEg c2xvdC4gVGhlcmVmb3JlLCB3ZSBrZWVwIHRoaXMgc2xvdAorCQkgKiBhbmQgYXR0ZW1wdCB0aGUg d2FpdCBhbmQgc3luY2hyb25pemF0aW9uIGluIHRoZSBuZXh0IGN5Y2xlLgorCQkgKi8KKwkJcmV0 dXJuIGZhbHNlOworCX0KKworCS8qIEZpcnN0IHRpbWUgc2xvdCB1cGRhdGUsIHRoZSBmdW5jdGlv biBtdXN0IHJldHVybiB0cnVlICovCisJaWYgKCFsb2NhbF9zbG90X3VwZGF0ZShyZW1vdGVfc2xv dCwgcmVtb3RlX2RiaWQpKQorCQllbG9nKEVSUk9SLCAiZmFpbGVkIHRvIHVwZGF0ZSBzbG90Iik7 CisKKwlSZXBsaWNhdGlvblNsb3RQZXJzaXN0KCk7CisKKwllcmVwb3J0KExPRywKKwkJCWVycm1z ZygibmV3bHkgY3JlYXRlZCBzbG90IFwiJXNcIiBpcyBzeW5jLXJlYWR5IG5vdyIsCisJCQkJICAg cmVtb3RlX3Nsb3QtPm5hbWUpKTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogU3luY2hy b25pemUgc2luZ2xlIHNsb3QgdG8gZ2l2ZW4gcG9zaXRpb24uCisgKgorICogVGhpcyBjcmVhdGVz IGEgbmV3IHNsb3QgaWYgdGhlcmUgaXMgbm8gZXhpc3Rpbmcgb25lIGFuZCB1cGRhdGVzIHRoZQor ICogbWV0YWRhdGEgb2YgdGhlIHNsb3QgYXMgcGVyIHRoZSBkYXRhIHJlY2VpdmVkIGZyb20gdGhl IHByaW1hcnkgc2VydmVyLgorICoKKyAqIFRoZSBzbG90IGlzIGNyZWF0ZWQgYXMgYSB0ZW1wb3Jh cnkgc2xvdCBhbmQgc3RheXMgaW4gdGhlIHNhbWUgc3RhdGUgdW50aWwgdGhlCisgKiB0aGUgcmVt b3RlX3Nsb3QgY2F0Y2hlcyB1cCB3aXRoIGxvY2FsbHkgcmVzZXJ2ZWQgcG9zaXRpb24gYW5kIGxv Y2FsIHNsb3QgaXMKKyAqIHVwZGF0ZWQuIFRoZSBzbG90IGlzIHRoZW4gcGVyc2lzdGVkIGFuZCBp cyBjb25zaWRlcmVkIGFzIHN5bmMtcmVhZHkgZm9yCisgKiBwZXJpb2RpYyBzeW5jcy4KKyAqCisg KiBSZXR1cm5zIFRSVUUgaWYgdGhlIGxvY2FsIHNsb3QgaXMgdXBkYXRlZC4KKyAqLworc3RhdGlj IGJvb2wKK3N5bmNocm9uaXplX29uZV9zbG90KFJlbW90ZVNsb3QgKnJlbW90ZV9zbG90LCBPaWQg cmVtb3RlX2RiaWQpCit7CisJUmVwbGljYXRpb25TbG90ICpzbG90OworCWJvb2wJCXNsb3RfdXBk YXRlZCA9IGZhbHNlOworCVhMb2dSZWNQdHIJbGF0ZXN0Rmx1c2hQdHI7CisKKwkvKgorCSAqIE1h a2Ugc3VyZSB0aGF0IGNvbmNlcm5lZCBXQUwgaXMgcmVjZWl2ZWQgYW5kIGZsdXNoZWQgYmVmb3Jl IHN5bmNpbmcKKwkgKiBzbG90IHRvIHRhcmdldCBsc24gcmVjZWl2ZWQgZnJvbSB0aGUgcHJpbWFy eSBzZXJ2ZXIuCisJICoKKwkgKiBUaGlzIGNoZWNrIHdpbGwgbmV2ZXIgcGFzcyBpZiBvbiB0aGUg cHJpbWFyeSBzZXJ2ZXIsIHVzZXIgaGFzCisJICogY29uZmlndXJlZCBzdGFuZGJ5X3Nsb3RfbmFt ZXMgR1VDIGNvcnJlY3RseSwgb3RoZXJ3aXNlIHRoaXMgY2FuIGhpdAorCSAqIGZyZXF1ZW50bHku CisJICovCisJbGF0ZXN0Rmx1c2hQdHIgPSBHZXRTdGFuZGJ5Rmx1c2hSZWNQdHIoTlVMTCk7CisJ aWYgKHJlbW90ZV9zbG90LT5jb25maXJtZWRfbHNuID4gbGF0ZXN0Rmx1c2hQdHIpCisJeworCQll cmVwb3J0KExPRywKKwkJCQllcnJtc2coInNraXBwaW5nIHNsb3Qgc3luY2hyb25pemF0aW9uIGFz IHRoZSByZWNlaXZlZCBzbG90IHN5bmMiCisJCQkJCSAgICIgTFNOICVYLyVYIGZvciBzbG90IFwi JXNcIiBpcyBhaGVhZCBvZiB0aGUgc3RhbmRieSBwb3NpdGlvbiAlWC8lWCIsCisJCQkJCSAgIExT Tl9GT1JNQVRfQVJHUyhyZW1vdGVfc2xvdC0+Y29uZmlybWVkX2xzbiksCisJCQkJCSAgIHJlbW90 ZV9zbG90LT5uYW1lLAorCQkJCQkgICBMU05fRk9STUFUX0FSR1MobGF0ZXN0Rmx1c2hQdHIpKSk7 CisKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIFNlYXJjaCBmb3IgdGhlIG5hbWVkIHNsb3Qg Ki8KKwlpZiAoKHNsb3QgPSBTZWFyY2hOYW1lZFJlcGxpY2F0aW9uU2xvdChyZW1vdGVfc2xvdC0+ bmFtZSwgdHJ1ZSkpKQorCXsKKwkJYm9vbAkJc3luY2VkOworCisJCVNwaW5Mb2NrQWNxdWlyZSgm c2xvdC0+bXV0ZXgpOworCQlzeW5jZWQgPSBzbG90LT5kYXRhLnN5bmNlZDsKKwkJU3BpbkxvY2tS ZWxlYXNlKCZzbG90LT5tdXRleCk7CisKKwkJLyogVXNlciBjcmVhdGVkIHNsb3Qgd2l0aCB0aGUg c2FtZSBuYW1lIGV4aXN0cywgcmFpc2UgRVJST1IuICovCisJCWlmICghc3luY2VkKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkJZXJybXNnKCJleGl0aW5nIGZyb20gc2xvdCBzeW5jaHJvbml6YXRp b24gYmVjYXVzZSBzYW1lIgorCQkJCQkJICAgIiBuYW1lIHNsb3QgXCIlc1wiIGFscmVhZHkgZXhp c3RzIG9uIHRoZSBzdGFuZGJ5IiwKKwkJCQkJCSAgIHJlbW90ZV9zbG90LT5uYW1lKSk7CisKKwkJ LyoKKwkJICogU2xvdCBjcmVhdGVkIGJ5IHRoZSBzbG90IHN5bmMgd29ya2VyIGV4aXN0cywgc3lu YyBpdC4KKwkJICoKKwkJICogSXQgaXMgaW1wb3J0YW50IHRvIGFjcXVpcmUgdGhlIHNsb3QgaGVy ZSBiZWZvcmUgY2hlY2tpbmcKKwkJICogaW52YWxpZGF0aW9uLiBJZiB3ZSBkb24ndCBhY3F1aXJl IHRoZSBzbG90IGZpcnN0LCB0aGVyZSBjb3VsZCBiZSBhCisJCSAqIHJhY2UgY29uZGl0aW9uIHRo YXQgdGhlIGxvY2FsIHNsb3QgY291bGQgYmUgaW52YWxpZGF0ZWQganVzdCBhZnRlcgorCQkgKiBj aGVja2luZyB0aGUgJ2ludmFsaWRhdGVkJyBmbGFnIGhlcmUgYW5kIHdlIGNvdWxkIGVuZCB1cAor CQkgKiBvdmVyd3JpdGluZyAnaW52YWxpZGF0ZWQnIGZsYWcgdG8gcmVtb3RlX3Nsb3QncyB2YWx1 ZS4gU2VlCisJCSAqIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCgpIHdoZXJlIGl0IGlu dmFsaWRhdGVzIHNsb3QgZGlyZWN0bHkKKwkJICogaWYgdGhlIHNsb3QgaXMgbm90IGFjcXVpcmVk IGJ5IG90aGVyIHByb2Nlc3Nlcy4KKwkJICovCisJCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUocmVt b3RlX3Nsb3QtPm5hbWUsIHRydWUpOworCisJCUFzc2VydChzbG90ID09IE15UmVwbGljYXRpb25T bG90KTsKKworCQkvKgorCQkgKiBDb3B5IHRoZSBpbnZhbGlkYXRpb24gY2F1c2UgZnJvbSByZW1v dGUgb25seSBpZiBsb2NhbCBzbG90IGlzIG5vdAorCQkgKiBpbnZhbGlkYXRlZCBsb2NhbGx5LCB3 ZSBkb24ndCB3YW50IHRvIG92ZXJ3cml0ZSBleGlzdGluZyBvbmUuCisJCSAqLworCQlpZiAoc2xv dC0+ZGF0YS5pbnZhbGlkYXRlZCA9PSBSU19JTlZBTF9OT05FKQorCQl7CisJCQlTcGluTG9ja0Fj cXVpcmUoJnNsb3QtPm11dGV4KTsKKwkJCXNsb3QtPmRhdGEuaW52YWxpZGF0ZWQgPSByZW1vdGVf c2xvdC0+aW52YWxpZGF0ZWQ7CisJCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKKwor CQkJLyogTWFrZSBzdXJlIHRoZSBpbnZhbGlkYXRlZCBzdGF0ZSBwZXJzaXN0cyBhY3Jvc3Mgc2Vy dmVyIHJlc3RhcnQgKi8KKwkJCVJlcGxpY2F0aW9uU2xvdE1hcmtEaXJ0eSgpOworCQkJUmVwbGlj YXRpb25TbG90U2F2ZSgpOworCQkJc2xvdF91cGRhdGVkID0gdHJ1ZTsKKwkJfQorCisJCS8qIFNr aXAgdGhlIHN5bmMgb2YgYW4gaW52YWxpZGF0ZWQgc2xvdCAqLworCQlpZiAoc2xvdC0+ZGF0YS5p bnZhbGlkYXRlZCAhPSBSU19JTlZBTF9OT05FKQorCQl7CisJCQlSZXBsaWNhdGlvblNsb3RSZWxl YXNlKCk7CisJCQlyZXR1cm4gc2xvdF91cGRhdGVkOworCQl9CisKKwkJLyogU2xvdCBub3QgcmVh ZHkgeWV0LCBsZXQncyBhdHRlbXB0IHRvIG1ha2UgaXQgc3luYy1yZWFkeSBub3cuICovCisJCWlm IChzbG90LT5kYXRhLnBlcnNpc3RlbmN5ID09IFJTX1RFTVBPUkFSWSkKKwkJeworCQkJc2xvdF91 cGRhdGVkID0gdXBkYXRlX2FuZF9wZXJzaXN0X3Nsb3QocmVtb3RlX3Nsb3QsIHJlbW90ZV9kYmlk KTsKKwkJfQorCisJCS8qIFNsb3QgcmVhZHkgZm9yIHN5bmMsIHNvIHN5bmMgaXQuICovCisJCWVs c2UKKwkJeworCQkJLyoKKwkJCSAqIFNhbml0eSBjaGVjazogQXMgbG9uZyBhcyB0aGUgaW52YWxp ZGF0aW9ucyBhcmUgaGFuZGxlZAorCQkJICogYXBwcm9wcmlhdGVseSBhcyBhYm92ZSwgdGhpcyBz aG91bGQgbmV2ZXIgaGFwcGVuLgorCQkJICovCisJCQlpZiAocmVtb3RlX3Nsb3QtPnJlc3RhcnRf bHNuIDwgc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikKKwkJCQllbG9nKEVSUk9SLAorCQkJCQkgImNh bm5vdCBzeW5jaHJvbml6ZSBsb2NhbCBzbG90IFwiJXNcIiBMU04oJVgvJVgpIgorCQkJCQkgIiB0 byByZW1vdGUgc2xvdCdzIExTTiglWC8lWCkgYXMgc3luY2hyb25pemF0aW9uIgorCQkJCQkgIiB3 b3VsZCBtb3ZlIGl0IGJhY2t3YXJkcyIsIHJlbW90ZV9zbG90LT5uYW1lLAorCQkJCQkgTFNOX0ZP Uk1BVF9BUkdTKHNsb3QtPmRhdGEucmVzdGFydF9sc24pLAorCQkJCQkgTFNOX0ZPUk1BVF9BUkdT KHJlbW90ZV9zbG90LT5yZXN0YXJ0X2xzbikpOworCisJCQkvKiBNYWtlIHN1cmUgdGhlIHNsb3Qg Y2hhbmdlcyBwZXJzaXN0IGFjcm9zcyBzZXJ2ZXIgcmVzdGFydCAqLworCQkJaWYgKGxvY2FsX3Ns b3RfdXBkYXRlKHJlbW90ZV9zbG90LCByZW1vdGVfZGJpZCkpCisJCQl7CisJCQkJc2xvdF91cGRh dGVkID0gdHJ1ZTsKKwkJCQlSZXBsaWNhdGlvblNsb3RNYXJrRGlydHkoKTsKKwkJCQlSZXBsaWNh dGlvblNsb3RTYXZlKCk7CisJCQl9CisJCX0KKwl9CisJLyogT3RoZXJ3aXNlIGNyZWF0ZSB0aGUg c2xvdCBmaXJzdC4gKi8KKwllbHNlCisJeworCQlOYW1lRGF0YQlwbHVnaW5fbmFtZTsKKwkJVHJh bnNhY3Rpb25JZCB4bWluX2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCQkvKiBT a2lwIGNyZWF0aW5nIHRoZSBsb2NhbCBzbG90IGlmIHJlbW90ZV9zbG90IGlzIGludmFsaWRhdGVk IGFscmVhZHkgKi8KKwkJaWYgKHJlbW90ZV9zbG90LT5pbnZhbGlkYXRlZCAhPSBSU19JTlZBTF9O T05FKQorCQkJcmV0dXJuIGZhbHNlOworCisJCVJlcGxpY2F0aW9uU2xvdENyZWF0ZShyZW1vdGVf c2xvdC0+bmFtZSwgdHJ1ZSwgUlNfVEVNUE9SQVJZLAorCQkJCQkJCSAgcmVtb3RlX3Nsb3QtPnR3 b19waGFzZSwKKwkJCQkJCQkgIHJlbW90ZV9zbG90LT5mYWlsb3ZlciwKKwkJCQkJCQkgIHRydWUp OworCisJCS8qIEZvciBzaG9ydGVyIGxpbmVzLiAqLworCQlzbG90ID0gTXlSZXBsaWNhdGlvblNs b3Q7CisKKwkJLyogQXZvaWQgZXhwZW5zaXZlIG9wZXJhdGlvbnMgd2hpbGUgaG9sZGluZyBhIHNw aW5sb2NrLiAqLworCQluYW1lc3RyY3B5KCZwbHVnaW5fbmFtZSwgcmVtb3RlX3Nsb3QtPnBsdWdp bik7CisKKwkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7CisJCXNsb3QtPmRhdGEuZGF0 YWJhc2UgPSByZW1vdGVfZGJpZDsKKwkJc2xvdC0+ZGF0YS5wbHVnaW4gPSBwbHVnaW5fbmFtZTsK KwkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7CisKKwkJcmVzZXJ2ZV93YWxfZm9yX3Ns b3QocmVtb3RlX3Nsb3QtPnJlc3RhcnRfbHNuKTsKKworCQlMV0xvY2tBY3F1aXJlKFByb2NBcnJh eUxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCXhtaW5faG9yaXpvbiA9IEdldE9sZGVzdFNhZmVEZWNv ZGluZ1RyYW5zYWN0aW9uSWQodHJ1ZSk7CisJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgp OworCQlzbG90LT5lZmZlY3RpdmVfY2F0YWxvZ194bWluID0geG1pbl9ob3Jpem9uOworCQlzbG90 LT5kYXRhLmNhdGFsb2dfeG1pbiA9IHhtaW5faG9yaXpvbjsKKwkJU3BpbkxvY2tSZWxlYXNlKCZz bG90LT5tdXRleCk7CisJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKHRydWUp OworCQlMV0xvY2tSZWxlYXNlKFByb2NBcnJheUxvY2spOworCisJCSh2b2lkKSB1cGRhdGVfYW5k X3BlcnNpc3Rfc2xvdChyZW1vdGVfc2xvdCwgcmVtb3RlX2RiaWQpOworCQlzbG90X3VwZGF0ZWQg PSB0cnVlOworCX0KKworCVJlcGxpY2F0aW9uU2xvdFJlbGVhc2UoKTsKKworCXJldHVybiBzbG90 X3VwZGF0ZWQ7Cit9CisKKy8qCisgKiBNYXBzIHRoZSBwZ19yZXBsaWNhdGlvbl9zbG90cy5jb25m bGljdF9yZWFzb24gdGV4dCB2YWx1ZSB0bworICogUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9u Q2F1c2UgZW51bSB2YWx1ZQorICovCitzdGF0aWMgUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9u Q2F1c2UKK2dldF9zbG90X2ludmFsaWRhdGlvbl9jYXVzZShjaGFyICpjb25mbGljdF9yZWFzb24p Cit7CisJQXNzZXJ0KGNvbmZsaWN0X3JlYXNvbik7CisKKwlpZiAoc3RyY21wKGNvbmZsaWN0X3Jl YXNvbiwgU0xPVF9JTlZBTF9XQUxfUkVNT1ZFRF9URVhUKSA9PSAwKQorCQlyZXR1cm4gUlNfSU5W QUxfV0FMX1JFTU9WRUQ7CisJZWxzZSBpZiAoc3RyY21wKGNvbmZsaWN0X3JlYXNvbiwgU0xPVF9J TlZBTF9IT1JJWk9OX1RFWFQpID09IDApCisJCXJldHVybiBSU19JTlZBTF9IT1JJWk9OOworCWVs c2UgaWYgKHN0cmNtcChjb25mbGljdF9yZWFzb24sIFNMT1RfSU5WQUxfV0FMX0xFVkVMX1RFWFQp ID09IDApCisJCXJldHVybiBSU19JTlZBTF9XQUxfTEVWRUw7CisJZWxzZQorCQlBc3NlcnQoMCk7 CisKKwkvKiBLZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJcmV0dXJuIFJTX0lOVkFMX05PTkU7Cit9 CisKKy8qCisgKiBTeW5jaHJvbml6ZSBzbG90cy4KKyAqCisgKiBHZXRzIHRoZSBmYWlsb3ZlciBs b2dpY2FsIHNsb3RzIGluZm8gZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIgYW5kIHVwZGF0ZXMKKyAq IHRoZSBzbG90cyBsb2NhbGx5LiBDcmVhdGVzIHRoZSBzbG90cyBpZiBub3QgcHJlc2VudCBvbiB0 aGUgc3RhbmRieS4KKyAqCisgKiBSZXR1cm5zIFRSVUUgaWYgYW55IG9mIHRoZSBzbG90cyBnZXRz IHVwZGF0ZWQgaW4gdGhpcyBzeW5jLWN5Y2xlLgorICovCitzdGF0aWMgYm9vbAorc3luY2hyb25p emVfc2xvdHMoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4pCit7CisjZGVmaW5lIFNMT1RTWU5DX0NP TFVNTl9DT1VOVCA5CisJT2lkCQkJc2xvdFJvd1tTTE9UU1lOQ19DT0xVTU5fQ09VTlRdID0ge1RF WFRPSUQsIFRFWFRPSUQsIExTTk9JRCwKKwlMU05PSUQsIFhJRE9JRCwgQk9PTE9JRCwgQk9PTE9J RCwgVEVYVE9JRCwgVEVYVE9JRH07CisKKwlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7CisJVHVwbGVU YWJsZVNsb3QgKnR1cHNsb3Q7CisJU3RyaW5nSW5mb0RhdGEgczsKKwlMaXN0CSAgICpyZW1vdGVf c2xvdF9saXN0ID0gTklMOworCWJvb2wJCXNvbWVfc2xvdF91cGRhdGVkID0gZmFsc2U7CisJWExv Z1JlY1B0cglsYXRlc3RXYWxFbmQ7CisKKwkvKgorCSAqIFRoZSBwcmltYXJ5X3Nsb3RfbmFtZSBp cyBub3Qgc2V0IHlldCBvciBXQUxzIG5vdCByZWNlaXZlZCB5ZXQuCisJICogU3luY2hyb25pemF0 aW9uIGlzIG5vdCBwb3NzaWJsZSBpZiB0aGUgd2FscmVjZWl2ZXIgaXMgbm90IHN0YXJ0ZWQuCisJ ICovCisJbGF0ZXN0V2FsRW5kID0gR2V0V2FsUmN2TGF0ZXN0V2FsRW5kKCk7CisJU3BpbkxvY2tB Y3F1aXJlKCZXYWxSY3YtPm11dGV4KTsKKwlpZiAoKFdhbFJjdi0+c2xvdG5hbWVbMF0gPT0gJ1ww JykgfHwKKwkJWExvZ1JlY1B0cklzSW52YWxpZChsYXRlc3RXYWxFbmQpKQorCXsKKwkJU3Bpbkxv Y2tSZWxlYXNlKCZXYWxSY3YtPm11dGV4KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwlTcGluTG9j a1JlbGVhc2UoJldhbFJjdi0+bXV0ZXgpOworCisJLyogVGhlIHN5c2NhY2hlIGFjY2VzcyBpbiB3 YWxyY3ZfZXhlYygpIG5lZWRzIGEgdHJhbnNhY3Rpb24gZW52LiAqLworCVN0YXJ0VHJhbnNhY3Rp b25Db21tYW5kKCk7CisKKwlpbml0U3RyaW5nSW5mbygmcyk7CisKKwkvKiBDb25zdHJ1Y3QgcXVl cnkgdG8gZmV0Y2ggc2xvdHMgd2l0aCBmYWlsb3ZlciBlbmFibGVkLiAqLworCWFwcGVuZFN0cmlu Z0luZm8oJnMsCisJCQkJCSAiU0VMRUNUIHNsb3RfbmFtZSwgcGx1Z2luLCBjb25maXJtZWRfZmx1 c2hfbHNuLCIKKwkJCQkJICIgcmVzdGFydF9sc24sIGNhdGFsb2dfeG1pbiwgdHdvX3BoYXNlLCBm YWlsb3ZlciwiCisJCQkJCSAiIGRhdGFiYXNlLCBjb25mbGljdF9yZWFzb24iCisJCQkJCSAiIEZS T00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyIKKwkJCQkJICIgV0hFUkUgZmFpbG92 ZXIgYW5kIE5PVCB0ZW1wb3JhcnkiKTsKKworCS8qIEV4ZWN1dGUgdGhlIHF1ZXJ5ICovCisJcmVz ID0gd2FscmN2X2V4ZWMod3Jjb25uLCBzLmRhdGEsIFNMT1RTWU5DX0NPTFVNTl9DT1VOVCwgc2xv dFJvdyk7CisJcGZyZWUocy5kYXRhKTsKKworCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tf VFVQTEVTKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycm1zZygiY291bGQgbm90IGZldGNoIGZh aWxvdmVyIGxvZ2ljYWwgc2xvdHMgaW5mbyBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlcjogJXMiLAor CQkJCQkgICByZXMtPmVycikpOworCisJLyogQ29uc3RydWN0IHRoZSByZW1vdGVfc2xvdCB0dXBs ZSBhbmQgc3luY2hyb25pemUgZWFjaCBzbG90IGxvY2FsbHkgKi8KKwl0dXBzbG90ID0gTWFrZVNp bmdsZVR1cGxlVGFibGVTbG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3BzTWluaW1hbFR1cGxlKTsK Kwl3aGlsZSAodHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QocmVzLT50dXBsZXN0b3JlLCB0cnVlLCBm YWxzZSwgdHVwc2xvdCkpCisJeworCQlib29sCQlpc251bGw7CisJCVJlbW90ZVNsb3QgKnJlbW90 ZV9zbG90ID0gcGFsbG9jMChzaXplb2YoUmVtb3RlU2xvdCkpOworCQlEYXR1bQkJZDsKKwkJaW50 CQkJY29sID0gMDsKKworCQlyZW1vdGVfc2xvdC0+bmFtZSA9IFRleHREYXR1bUdldENTdHJpbmco c2xvdF9nZXRhdHRyKHR1cHNsb3QsICsrY29sLAorCQkJCQkJCQkJCQkJCQkJICZpc251bGwpKTsK KwkJQXNzZXJ0KCFpc251bGwpOworCisJCXJlbW90ZV9zbG90LT5wbHVnaW4gPSBUZXh0RGF0dW1H ZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cih0dXBzbG90LCArK2NvbCwKKwkJCQkJCQkJCQkJCQkJCSAg ICZpc251bGwpKTsKKwkJQXNzZXJ0KCFpc251bGwpOworCisJCS8qCisJCSAqIEl0IGlzIHBvc3Np YmxlIHRvIGdldCBudWxsIHZhbHVlcyBmb3IgTFNOIGFuZCBYbWluIGlmIHNsb3QgaXMKKwkJICog aW52YWxpZGF0ZWQgb24gdGhlIHByaW1hcnkgc2VydmVyLCBzbyBoYW5kbGUgYWNjb3JkaW5nbHku CisJCSAqLworCQlkID0gc2xvdF9nZXRhdHRyKHR1cHNsb3QsICsrY29sLCAmaXNudWxsKTsKKwkJ cmVtb3RlX3Nsb3QtPmNvbmZpcm1lZF9sc24gPSBpc251bGwgPyBJbnZhbGlkWExvZ1JlY1B0ciA6 CisJCQlEYXR1bUdldExTTihkKTsKKworCQlkID0gc2xvdF9nZXRhdHRyKHR1cHNsb3QsICsrY29s LCAmaXNudWxsKTsKKwkJcmVtb3RlX3Nsb3QtPnJlc3RhcnRfbHNuID0gaXNudWxsID8gSW52YWxp ZFhMb2dSZWNQdHIgOiBEYXR1bUdldExTTihkKTsKKworCQlkID0gc2xvdF9nZXRhdHRyKHR1cHNs b3QsICsrY29sLCAmaXNudWxsKTsKKwkJcmVtb3RlX3Nsb3QtPmNhdGFsb2dfeG1pbiA9IGlzbnVs bCA/IEludmFsaWRUcmFuc2FjdGlvbklkIDoKKwkJCURhdHVtR2V0VHJhbnNhY3Rpb25JZChkKTsK KworCQlyZW1vdGVfc2xvdC0+dHdvX3BoYXNlID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cih0 dXBzbG90LCArK2NvbCwKKwkJCQkJCQkJCQkJCQkJICAgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlz bnVsbCk7CisKKwkJcmVtb3RlX3Nsb3QtPmZhaWxvdmVyID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0 YXR0cih0dXBzbG90LCArK2NvbCwKKwkJCQkJCQkJCQkJCQkJICAmaXNudWxsKSk7CisJCUFzc2Vy dCghaXNudWxsKTsKKworCQlyZW1vdGVfc2xvdC0+ZGF0YWJhc2UgPSBUZXh0RGF0dW1HZXRDU3Ry aW5nKHNsb3RfZ2V0YXR0cih0dXBzbG90LAorCQkJCQkJCQkJCQkJCQkJCSArK2NvbCwgJmlzbnVs bCkpOworCQlBc3NlcnQoIWlzbnVsbCk7CisKKwkJZCA9IHNsb3RfZ2V0YXR0cih0dXBzbG90LCAr K2NvbCwgJmlzbnVsbCk7CisJCXJlbW90ZV9zbG90LT5pbnZhbGlkYXRlZCA9IGlzbnVsbCA/IFJT X0lOVkFMX05PTkUgOgorCQkJZ2V0X3Nsb3RfaW52YWxpZGF0aW9uX2NhdXNlKFRleHREYXR1bUdl dENTdHJpbmcoZCkpOworCisJCS8qIFNhbml0eSBjaGVjayAqLworCQlBc3NlcnQoY29sID09IFNM T1RTWU5DX0NPTFVNTl9DT1VOVCk7CisKKwkJLyogQ3JlYXRlIGxpc3Qgb2YgcmVtb3RlIHNsb3Rz ICovCisJCXJlbW90ZV9zbG90X2xpc3QgPSBsYXBwZW5kKHJlbW90ZV9zbG90X2xpc3QsIHJlbW90 ZV9zbG90KTsKKworCQlFeGVjQ2xlYXJUdXBsZSh0dXBzbG90KTsKKwl9CisKKwkvKiBEcm9wIGxv Y2FsIHNsb3RzIHRoYXQgbm8gbG9uZ2VyIG5lZWQgdG8gYmUgc3luY2VkLiAqLworCWRyb3Bfb2Jz b2xldGVfc2xvdHMocmVtb3RlX3Nsb3RfbGlzdCk7CisKKwkvKiBOb3cgc3luYyB0aGUgc2xvdHMg bG9jYWxseSAqLworCWZvcmVhY2hfcHRyKFJlbW90ZVNsb3QsIHJlbW90ZV9zbG90LCByZW1vdGVf c2xvdF9saXN0KQorCXsKKwkJT2lkCQkJcmVtb3RlX2RiaWQgPSBnZXRfZGF0YWJhc2Vfb2lkKHJl bW90ZV9zbG90LT5kYXRhYmFzZSwgZmFsc2UpOworCisJCS8qCisJCSAqIFVzZSBzaGFyZWQgbG9j ayB0byBwcmV2ZW50IGEgY29uZmxpY3Qgd2l0aAorCQkgKiBSZXBsaWNhdGlvblNsb3RzRHJvcERC U2xvdHMoKSwgdHJ5aW5nIHRvIGRyb3AgdGhlIHNhbWUgc2xvdCB3aGlsZQorCQkgKiBkcm9wLWRh dGFiYXNlIG9wZXJhdGlvbi4KKwkJICovCisJCUxvY2tTaGFyZWRPYmplY3QoRGF0YWJhc2VSZWxh dGlvbklkLCByZW1vdGVfZGJpZCwgMCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQlzb21lX3Nsb3Rf dXBkYXRlZCB8PSBzeW5jaHJvbml6ZV9vbmVfc2xvdChyZW1vdGVfc2xvdCwgcmVtb3RlX2RiaWQp OworCisJCVVubG9ja1NoYXJlZE9iamVjdChEYXRhYmFzZVJlbGF0aW9uSWQsIHJlbW90ZV9kYmlk LCAwLCBBY2Nlc3NTaGFyZUxvY2spOworCX0KKworCS8qIFdlIGFyZSBkb25lLCBmcmVlIHJlbW90 ZV9zbG90X2xpc3QgZWxlbWVudHMgKi8KKwlsaXN0X2ZyZWVfZGVlcChyZW1vdGVfc2xvdF9saXN0 KTsKKworCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJcmV0dXJuIHNvbWVfc2xvdF91cGRhdGVkOworfQorCisvKgorICogQ2hlY2tz IHRoZSBwcmltYXJ5IHNlcnZlciBpbmZvLgorICoKKyAqIFVzaW5nIHRoZSBzcGVjaWZpZWQgcHJp bWFyeSBzZXJ2ZXIgY29ubmVjdGlvbiwgY2hlY2sgd2hldGhlciB3ZSBhcmUgYQorICogY2FzY2Fk aW5nIHN0YW5kYnkuIEl0IGFsc28gdmFsaWRhdGVzIHByaW1hcnlfc2xvdF9uYW1lIGZvciBub24t Y2FzY2FkaW5nCisgKiBzdGFuZGJ5cy4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3ByaW1hcnlf aW5mbyhXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgYm9vbCAqYW1fY2FzY2FkaW5nX3N0YW5kYnkp Cit7CisjZGVmaW5lIFBSSU1BUllfSU5GT19PVVRQVVRfQ09MX0NPVU5UIDIKKwlXYWxSY3ZFeGVj UmVzdWx0ICpyZXM7CisJT2lkCQkJc2xvdFJvd1tQUklNQVJZX0lORk9fT1VUUFVUX0NPTF9DT1VO VF0gPSB7Qk9PTE9JRCwgQk9PTE9JRH07CisJU3RyaW5nSW5mb0RhdGEgY21kOworCWJvb2wJCWlz bnVsbDsKKwlUdXBsZVRhYmxlU2xvdCAqdHVwc2xvdDsKKwlib29sCQl2YWxpZDsKKwlib29sCQly ZW1vdGVfaW5fcmVjb3Zlcnk7CisKKwkvKiBUaGUgc3lzY2FjaGUgYWNjZXNzIGluIHdhbHJjdl9l eGVjKCkgbmVlZHMgYSB0cmFuc2FjdGlvbiBlbnYuICovCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKworCUFzc2VydChhbV9jYXNjYWRpbmdfc3RhbmRieSAhPSBOVUxMKTsKKworCSphbV9j YXNjYWRpbmdfc3RhbmRieSA9IGZhbHNlOwkvKiBvdmVyd3JpdHRlbiBsYXRlciBpZiBjYXNjYWRp bmcgKi8KKworCWluaXRTdHJpbmdJbmZvKCZjbWQpOworCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwK KwkJCQkJICJTRUxFQ1QgcGdfaXNfaW5fcmVjb3ZlcnkoKSwgY291bnQoKikgPSAxIgorCQkJCQkg IiBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIgorCQkJCQkgIiBXSEVSRSBzbG90X3R5cGU9J3Bo eXNpY2FsJyBBTkQgc2xvdF9uYW1lPSVzIiwKKwkJCQkJIHF1b3RlX2xpdGVyYWxfY3N0cihQcmlt YXJ5U2xvdE5hbWUpKTsKKworCXJlcyA9IHdhbHJjdl9leGVjKHdyY29ubiwgY21kLmRhdGEsIFBS SU1BUllfSU5GT19PVVRQVVRfQ09MX0NPVU5ULCBzbG90Um93KTsKKwlwZnJlZShjbWQuZGF0YSk7 CisKKwlpZiAocmVzLT5zdGF0dXMgIT0gV0FMUkNWX09LX1RVUExFUykKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJtc2coImNvdWxkIG5vdCBmZXRjaCBwcmltYXJ5X3Nsb3RfbmFtZSBcIiVzXCIg aW5mbyBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlcjogJXMiLAorCQkJCQkgICBQcmltYXJ5U2xvdE5h bWUsIHJlcy0+ZXJyKSwKKwkJCQllcnJoaW50KCJDaGVjayBpZiBcInByaW1hcnlfc2xvdF9uYW1l XCIgaXMgY29uZmlndXJlZCBjb3JyZWN0bHkuIikpOworCisJdHVwc2xvdCA9IE1ha2VTaW5nbGVU dXBsZVRhYmxlU2xvdChyZXMtPnR1cGxlZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisJaWYg KCF0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChyZXMtPnR1cGxlc3RvcmUsIHRydWUsIGZhbHNlLCB0 dXBzbG90KSkKKwkJZWxvZyhFUlJPUiwKKwkJCSAiZmFpbGVkIHRvIGZldGNoIHR1cGxlIGZvciB0 aGUgcHJpbWFyeSBzZXJ2ZXIgc2xvdCBzcGVjaWZpZWQgYnkgXCJwcmltYXJ5X3Nsb3RfbmFtZVwi Iik7CisKKwlyZW1vdGVfaW5fcmVjb3ZlcnkgPSBEYXR1bUdldEJvb2woc2xvdF9nZXRhdHRyKHR1 cHNsb3QsIDEsICZpc251bGwpKTsKKwlBc3NlcnQoIWlzbnVsbCk7CisKKwlpZiAocmVtb3RlX2lu X3JlY292ZXJ5KQorCXsKKwkJLyogTm8gbmVlZCB0byBjaGVjayBmdXJ0aGVyLCBqdXN0IHNldCBh bV9jYXNjYWRpbmdfc3RhbmRieSB0byB0cnVlICovCisJCSphbV9jYXNjYWRpbmdfc3RhbmRieSA9 IHRydWU7CisJfQorCWVsc2UKKwl7CisJCS8qIFdlIGFyZSBhIG5vcm1hbCBzdGFuZGJ5ICovCisJ CXZhbGlkID0gRGF0dW1HZXRCb29sKHNsb3RfZ2V0YXR0cih0dXBzbG90LCAyLCAmaXNudWxsKSk7 CisJCUFzc2VydCghaXNudWxsKTsKKworCQlpZiAoIXZhbGlkKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJy bXNnKCJleGl0aW5nIGZyb20gc2xvdCBzeW5jaHJvbml6YXRpb24gZHVlIHRvIGJhZCBjb25maWd1 cmF0aW9uIiksCisJCQkvKiB0cmFuc2xhdG9yOiBzZWNvbmQgJXMgaXMgYSBHVUMgdmFyaWFibGUg bmFtZSAqLworCQkJCQllcnJkZXRhaWwoIlRoZSBwcmltYXJ5IHNlcnZlciBzbG90IFwiJXNcIiBz cGVjaWZpZWQgYnkiCisJCQkJCQkJICAiIFwiJXNcIiBpcyBub3QgdmFsaWQuIiwKKwkJCQkJCQkg IFByaW1hcnlTbG90TmFtZSwgInByaW1hcnlfc2xvdF9uYW1lIikpOworCX0KKworCUV4ZWNDbGVh clR1cGxlKHR1cHNsb3QpOworCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKKwlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKK30KKworLyoKKyAqIENoZWNrIHRoYXQgYWxsIG5lY2Vzc2FyeSBH VUNzIGZvciBzbG90IHN5bmNocm9uaXphdGlvbiBhcmUgc2V0CisgKiBhcHByb3ByaWF0ZWx5LiBJ ZiBub3QsIHJhaXNlIGFuIEVSUk9SLgorICoKKyAqIElmIGFsbCBjaGVja3MgcGFzcywgZXh0cmFj dHMgdGhlIGRibmFtZSBmcm9tIHRoZSBwcmltYXJ5X2Nvbm5pbmZvIEdVQyBhbmQKKyAqIHJldHVy bnMgaXQuCisgKi8KK3N0YXRpYyBjaGFyICoKK3ZhbGlkYXRlX3BhcmFtZXRlcnNfYW5kX2dldF9k Ym5hbWUodm9pZCkKK3sKKwljaGFyCSAgICpkYm5hbWU7CisKKwkvKiBTYW5pdHkgY2hlY2suICov CisJQXNzZXJ0KGVuYWJsZV9zeW5jc2xvdCk7CisKKwkvKgorCSAqIEEgcGh5c2ljYWwgcmVwbGlj YXRpb24gc2xvdChwcmltYXJ5X3Nsb3RfbmFtZSkgaXMgcmVxdWlyZWQgb24gdGhlCisJICogcHJp bWFyeSB0byBlbnN1cmUgdGhhdCB0aGUgcm93cyBuZWVkZWQgYnkgdGhlIHN0YW5kYnkgYXJlIG5v dCByZW1vdmVkCisJICogYWZ0ZXIgcmVzdGFydGluZywgc28gdGhhdCB0aGUgc3luY2hyb25pemVk IHNsb3Qgb24gdGhlIHN0YW5kYnkgd2lsbCBub3QKKwkgKiBiZSBpbnZhbGlkYXRlZC4KKwkgKi8K KwlpZiAoUHJpbWFyeVNsb3ROYW1lID09IE5VTEwgfHwgc3RyY21wKFByaW1hcnlTbG90TmFtZSwg IiIpID09IDApCisJCWVyZXBvcnQoRVJST1IsCisJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEgR1VD IHZhcmlhYmxlIG5hbWUgKi8KKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAorCQkJCWVycm1zZygiZXhpdGluZyBmcm9tIHNsb3Qgc3luY2hyb25pemF0aW9uIGR1 ZSB0byBiYWQgY29uZmlndXJhdGlvbiIpLAorCQkJCWVycmhpbnQoIlwiJXNcIiBtdXN0IGJlIGRl ZmluZWQuIiwgInByaW1hcnlfc2xvdF9uYW1lIikpOworCisJLyoKKwkgKiBob3Rfc3RhbmRieV9m ZWVkYmFjayBtdXN0IGJlIGVuYWJsZWQgdG8gY29vcGVyYXRlIHdpdGggdGhlIHBoeXNpY2FsCisJ ICogcmVwbGljYXRpb24gc2xvdCwgd2hpY2ggYWxsb3dzIGluZm9ybWluZyB0aGUgcHJpbWFyeSBh Ym91dCB0aGUgeG1pbiBhbmQKKwkgKiBjYXRhbG9nX3htaW4gdmFsdWVzIG9uIHRoZSBzdGFuZGJ5 LgorCSAqLworCWlmICghaG90X3N0YW5kYnlfZmVlZGJhY2spCisJCWVyZXBvcnQoRVJST1IsCisJ CS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEgR1VDIHZhcmlhYmxlIG5hbWUgKi8KKwkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiZXhpdGluZyBm cm9tIHNsb3Qgc3luY2hyb25pemF0aW9uIGR1ZSB0byBiYWQgY29uZmlndXJhdGlvbiIpLAorCQkJ CWVycmhpbnQoIlwiJXNcIiBtdXN0IGJlIGVuYWJsZWQuIiwgImhvdF9zdGFuZGJ5X2ZlZWRiYWNr IikpOworCisJLyoKKwkgKiBMb2dpY2FsIGRlY29kaW5nIHJlcXVpcmVzIHdhbF9sZXZlbCA+PSBs b2dpY2FsIGFuZCB3ZSBjdXJyZW50bHkgb25seQorCSAqIHN5bmNocm9uaXplIGxvZ2ljYWwgc2xv dHMuCisJICovCisJaWYgKHdhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQllcmVwb3J0 KEVSUk9SLAorCQkvKiB0cmFuc2xhdG9yOiAlcyBpcyBhIEdVQyB2YXJpYWJsZSBuYW1lICovCisJ CQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2co ImV4aXRpbmcgZnJvbSBzbG90IHN5bmNocm9uaXphdGlvbiBkdWUgdG8gYmFkIGNvbmZpZ3VyYXRp b24iKSwKKwkJCQllcnJoaW50KCJcIndhbF9sZXZlbFwiIG11c3QgYmUgPj0gbG9naWNhbC4iKSk7 CisKKwkvKgorCSAqIFRoZSBwcmltYXJ5X2Nvbm5pbmZvIGlzIHJlcXVpcmVkIHRvIG1ha2UgY29u bmVjdGlvbiB0byBwcmltYXJ5IGZvcgorCSAqIGdldHRpbmcgc2xvdHMgaW5mb3JtYXRpb24uCisJ ICovCisJaWYgKFByaW1hcnlDb25uSW5mbyA9PSBOVUxMIHx8IHN0cmNtcChQcmltYXJ5Q29ubklu Zm8sICIiKSA9PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkvKiB0cmFuc2xhdG9yOiAlcyBpcyBh IEdVQyB2YXJpYWJsZSBuYW1lICovCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coImV4aXRpbmcgZnJvbSBzbG90IHN5bmNocm9uaXphdGlv biBkdWUgdG8gYmFkIGNvbmZpZ3VyYXRpb24iKSwKKwkJCQllcnJoaW50KCJcIiVzXCIgbXVzdCBi ZSBkZWZpbmVkLiIsICJwcmltYXJ5X2Nvbm5pbmZvIikpOworCisJLyoKKwkgKiBUaGUgc2xvdCBz eW5jIHdvcmtlciBuZWVkcyBhIGRhdGFiYXNlIGNvbm5lY3Rpb24gZm9yIHdhbHJjdl9leGVjIHRv CisJICogd29yay4KKwkgKi8KKwlkYm5hbWUgPSB3YWxyY3ZfZ2V0X2RibmFtZV9mcm9tX2Nvbm5p bmZvKFByaW1hcnlDb25uSW5mbyk7CisJaWYgKGRibmFtZSA9PSBOVUxMKQorCQllcmVwb3J0KEVS Uk9SLAorCisJCS8qCisJCSAqIHRyYW5zbGF0b3I6ICdkYm5hbWUnIGlzIGEgc3BlY2lmaWMgb3B0 aW9uOyAlcyBpcyBhIEdVQyB2YXJpYWJsZQorCQkgKiBuYW1lCisJCSAqLworCQkJCWVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJZXJybXNnKCJleGl0aW5nIGZy b20gc2xvdCBzeW5jaHJvbml6YXRpb24gZHVlIHRvIGJhZCBjb25maWd1cmF0aW9uIiksCisJCQkJ ZXJyaGludCgiJ2RibmFtZScgbXVzdCBiZSBzcGVjaWZpZWQgaW4gXCIlc1wiLiIsICJwcmltYXJ5 X2Nvbm5pbmZvIikpOworCisJcmV0dXJuIGRibmFtZTsKK30KKworLyoKKyAqIFJlLXJlYWQgdGhl IGNvbmZpZyBmaWxlLgorICoKKyAqIElmIGFueSBvZiB0aGUgc2xvdCBzeW5jIEdVQ3MgaGF2ZSBj aGFuZ2VkLCBleGl0IHRoZSB3b3JrZXIgYW5kCisgKiBsZXQgaXQgZ2V0IHJlc3RhcnRlZCBieSB0 aGUgcG9zdG1hc3Rlci4KKyAqLworc3RhdGljIHZvaWQKK3Nsb3RzeW5jX3JlcmVhZF9jb25maWco dm9pZCkKK3sKKwljaGFyCSAgICpvbGRfcHJpbWFyeV9jb25uaW5mbyA9IHBzdHJkdXAoUHJpbWFy eUNvbm5JbmZvKTsKKwljaGFyCSAgICpvbGRfcHJpbWFyeV9zbG90bmFtZSA9IHBzdHJkdXAoUHJp bWFyeVNsb3ROYW1lKTsKKwlib29sCQlvbGRfaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBob3Rfc3Rh bmRieV9mZWVkYmFjazsKKwlib29sCQljb25uaW5mb19jaGFuZ2VkOworCWJvb2wJCXByaW1hcnlf c2xvdG5hbWVfY2hhbmdlZDsKKworCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwlQcm9j ZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKworCWNvbm5pbmZvX2NoYW5nZWQgPSBzdHJjbXAo b2xkX3ByaW1hcnlfY29ubmluZm8sIFByaW1hcnlDb25uSW5mbykgIT0gMDsKKwlwcmltYXJ5X3Ns b3RuYW1lX2NoYW5nZWQgPSBzdHJjbXAob2xkX3ByaW1hcnlfc2xvdG5hbWUsIFByaW1hcnlTbG90 TmFtZSkgIT0gMDsKKworCWlmIChjb25uaW5mb19jaGFuZ2VkIHx8CisJCXByaW1hcnlfc2xvdG5h bWVfY2hhbmdlZCB8fAorCQkob2xkX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrICE9IGhvdF9zdGFuZGJ5 X2ZlZWRiYWNrKSkKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCWVycm1zZygic2xvdCBzeW5jIHdv cmtlciB3aWxsIHJlc3RhcnQgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiKSk7CisKKwkJ LyogVGhlIGV4aXQgY29kZSAxIHdpbGwgbWFrZSBwb3N0bWFzdGVyIHJlc3RhcnQgdGhpcyB3b3Jr ZXIgKi8KKwkJcHJvY19leGl0KDEpOworCX0KKworCXBmcmVlKG9sZF9wcmltYXJ5X2Nvbm5pbmZv KTsKKwlwZnJlZShvbGRfcHJpbWFyeV9zbG90bmFtZSk7Cit9CisKKy8qCisgKiBJbnRlcnJ1cHQg aGFuZGxlciBmb3IgbWFpbiBsb29wIG9mIHNsb3Qgc3luYyB3b3JrZXIuCisgKi8KK3N0YXRpYyB2 b2lkCitQcm9jZXNzU2xvdFN5bmNJbnRlcnJ1cHRzKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKQor eworCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGlu ZykKKwl7CisJCXdhbHJjdl9kaXNjb25uZWN0KHdyY29ubik7CisJCWVyZXBvcnQoTE9HLAorCQkJ CWVycm1zZygicmVwbGljYXRpb24gc2xvdCBzeW5jIHdvcmtlciBpcyBzaHV0dGluZyBkb3duIG9u IHJlY2VpdmluZyBTSUdJTlQiKSk7CisJCXByb2NfZXhpdCgwKTsKKwl9CisKKwlpZiAoQ29uZmln UmVsb2FkUGVuZGluZykKKwkJc2xvdHN5bmNfcmVyZWFkX2NvbmZpZygpOworfQorCisvKgorICog Q2xlYW51cCBmdW5jdGlvbiBmb3Igc2xvdHN5bmMgd29ya2VyLgorICoKKyAqIENhbGxlZCBvbiBz bG90c3luYyB3b3JrZXIgZXhpdC4KKyAqLworc3RhdGljIHZvaWQKK3Nsb3RzeW5jX3dvcmtlcl9v bmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZykKK3sKKwlTcGluTG9ja0FjcXVpcmUoJlNsb3RTeW5j V29ya2VyLT5tdXRleCk7CisJU2xvdFN5bmNXb3JrZXItPnBpZCA9IEludmFsaWRQaWQ7CisJU3Bp bkxvY2tSZWxlYXNlKCZTbG90U3luY1dvcmtlci0+bXV0ZXgpOworfQorCisvKgorICogU2xlZXAg Zm9yIGxvbmcgZW5vdWdoIHRoYXQgd2UgYmVsaWV2ZSBpdCdzIGxpa2VseSB0aGF0IHRoZSBzbG90 cyBvbiBwcmltYXJ5CisgKiBnZXQgdXBkYXRlZC4KKyAqCisgKiBJZiB0aGVyZSBpcyBubyBzbG90 IGFjdGl2aXR5IHRoZSB3YWl0IHRpbWUgYmV0d2VlbiBzeW5jLWN5Y2xlcyB3aWxsIGRvdWJsZQor ICogKHRvIGEgbWF4aW11bSBvZiAzMHMpLiBJZiB0aGVyZSBpcyBzb21lIHNsb3QgYWN0aXZpdHkg dGhlIHdhaXQgdGltZSBiZXR3ZWVuCisgKiBzeW5jLWN5Y2xlcyBpcyByZXNldCB0byB0aGUgbWlu aW11bSAoMjAwbXMpLgorICovCitzdGF0aWMgdm9pZAord2FpdF9mb3Jfc2xvdF9hY3Rpdml0eShi b29sIHNvbWVfc2xvdF91cGRhdGVkLCBib29sIGFtX2Nhc2NhZGluZ19zdGFuZGJ5KQoreworCWlu dAkJCXJjOworCisJaWYgKGFtX2Nhc2NhZGluZ19zdGFuZGJ5KQorCXsKKwkJLyoKKwkJICogU2xv dCBzeW5jaHJvbml6YXRpb24gaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gY2FzY2FkaW5n CisJCSAqIHN0YW5kYnkuIFNvIGlmIHdlIGFyZSBvbiB0aGUgY2FzY2FkaW5nIHN0YW5kYnksIHdl IHdpbGwgc2tpcCB0aGUKKwkJICogc3luYyBhbmQgdGFrZSBhIGxvbmdlciBuYXAgYmVmb3JlIHdl IGNoZWNrIGFnYWluIHdoZXRoZXIgd2UgYXJlCisJCSAqIHN0aWxsIGNhc2NhZGluZyBzdGFuZGJ5 IG9yIG5vdC4KKwkJICovCisJCXNsZWVwX21zID0gTUFYX1dPUktFUl9OQVBUSU1FX01TOworCX0K KwllbHNlIGlmICghc29tZV9zbG90X3VwZGF0ZWQpCisJeworCQkvKgorCQkgKiBObyBzbG90cyB3 ZXJlIHVwZGF0ZWQsIHNvIGRvdWJsZSB0aGUgc2xlZXAgdGltZSwgYnV0IG5vdCBiZXlvbmQgdGhl CisJCSAqIG1heGltdW0gYWxsb3dhYmxlIHZhbHVlLgorCQkgKi8KKwkJc2xlZXBfbXMgPSBNaW4o c2xlZXBfbXMgKiAyLCBNQVhfV09SS0VSX05BUFRJTUVfTVMpOworCX0KKwllbHNlCisJeworCQkv KgorCQkgKiBTb21lIHNsb3RzIHdlcmUgdXBkYXRlZCBzaW5jZSB0aGUgbGFzdCBzbGVlcCwgc28g cmVzZXQgdGhlIHNsZWVwCisJCSAqIHRpbWUuCisJCSAqLworCQlzbGVlcF9tcyA9IE1JTl9XT1JL RVJfTkFQVElNRV9NUzsKKwl9CisKKwlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCSAgIFdM X0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCSAgIHNs ZWVwX21zLAorCQkJCSAgIFdBSVRfRVZFTlRfUkVQTF9TTE9UU1lOQ19NQUlOKTsKKworCWlmIChy YyAmIFdMX0xBVENIX1NFVCkKKwkJUmVzZXRMYXRjaChNeUxhdGNoKTsKK30KKworLyoKKyAqIFRo ZSBtYWluIGxvb3Agb2Ygb3VyIHdvcmtlciBwcm9jZXNzLgorICoKKyAqIEl0IGNvbm5lY3RzIHRv IHRoZSBwcmltYXJ5IHNlcnZlciwgZmV0Y2hlcyBsb2dpY2FsIGZhaWxvdmVyIHNsb3RzCisgKiBp bmZvcm1hdGlvbiBwZXJpb2RpY2FsbHkgaW4gb3JkZXIgdG8gY3JlYXRlIGFuZCBzeW5jIHRoZSBz bG90cy4KKyAqLwordm9pZAorUmVwbFNsb3RTeW5jV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK K3sKKwlXYWxSZWNlaXZlckNvbm4gKndyY29ubiA9IE5VTEw7CisJY2hhcgkgICAqZGJuYW1lOwor CWJvb2wJCWFtX2Nhc2NhZGluZ19zdGFuZGJ5OworCWNoYXIJICAgKmVycjsKKworCWVyZXBvcnQo TE9HLCBlcnJtc2coInJlcGxpY2F0aW9uIHNsb3Qgc3luYyB3b3JrZXIgc3RhcnRlZCIpKTsKKwor CW9uX3NobWVtX2V4aXQoc2xvdHN5bmNfd29ya2VyX29uZXhpdCwgKERhdHVtKSAwKTsKKworCVNw aW5Mb2NrQWNxdWlyZSgmU2xvdFN5bmNXb3JrZXItPm11dGV4KTsKKworCUFzc2VydChTbG90U3lu Y1dvcmtlci0+cGlkID09IEludmFsaWRQaWQpOworCisJLyoKKwkgKiBTdGFydHVwIHByb2Nlc3Mg c2lnbmFsZWQgdGhlIHNsb3Qgc3luYyB3b3JrZXIgdG8gc3RvcCwgc28gaWYgbWVhbndoaWxlCisJ ICogcG9zdG1hc3RlciBlbmRlZCB1cCBzdGFydGluZyB0aGUgd29ya2VyIGFnYWluLCBleGl0Lgor CSAqLworCWlmIChTbG90U3luY1dvcmtlci0+c3RvcFNpZ25hbGVkKQorCXsKKwkJU3BpbkxvY2tS ZWxlYXNlKCZTbG90U3luY1dvcmtlci0+bXV0ZXgpOworCQlwcm9jX2V4aXQoMCk7CisJfQorCisJ LyogQWR2ZXJ0aXNlIG91ciBQSUQgc28gdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNzIGNhbiBraWxs IHVzIG9uIHByb21vdGlvbiAqLworCVNsb3RTeW5jV29ya2VyLT5waWQgPSBNeVByb2NQaWQ7CisK KwlTcGluTG9ja1JlbGVhc2UoJlNsb3RTeW5jV29ya2VyLT5tdXRleCk7CisKKwkvKiBTZXR1cCBz aWduYWwgaGFuZGxpbmcgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25m aWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR0lOVCwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVx dWVzdCk7CisJcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9j a1NpZ25hbHMoKTsKKworCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLwor CWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKKworCWRibmFtZSA9IHZhbGlk YXRlX3BhcmFtZXRlcnNfYW5kX2dldF9kYm5hbWUoKTsKKworCS8qCisJICogQ29ubmVjdCB0byB0 aGUgZGF0YWJhc2Ugc3BlY2lmaWVkIGJ5IHVzZXIgaW4gcHJpbWFyeV9jb25uaW5mby4gV2UgbmVl ZAorCSAqIGEgZGF0YWJhc2UgY29ubmVjdGlvbiBmb3Igd2FscmN2X2V4ZWMgdG8gd29yay4gUGxl YXNlIHNlZSBjb21tZW50cyBhdG9wCisJICogbGlicHFyY3ZfZXhlYy4KKwkgKi8KKwlCYWNrZ3Jv dW5kV29ya2VySW5pdGlhbGl6ZUNvbm5lY3Rpb24oZGJuYW1lLCBOVUxMLCAwKTsKKworCS8qCisJ ICogRXN0YWJsaXNoIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBwcmltYXJ5IHNlcnZlciBmb3Igc2xv dHMKKwkgKiBzeW5jaHJvbml6YXRpb24uCisJICovCisJd3Jjb25uID0gd2FscmN2X2Nvbm5lY3Qo UHJpbWFyeUNvbm5JbmZvLCB0cnVlLCBmYWxzZSwKKwkJCQkJCQljbHVzdGVyX25hbWVbMF0gPyBj bHVzdGVyX25hbWUgOiAic2xvdHN5bmN3b3JrZXIiLAorCQkJCQkJCSZlcnIpOworCWlmICghd3Jj b25uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZB SUxVUkUpLAorCQkJCWVycm1zZygiY291bGQgbm90IGNvbm5lY3QgdG8gdGhlIHByaW1hcnkgc2Vy dmVyOiAlcyIsIGVycikpOworCisJLyoKKwkgKiBVc2luZyB0aGUgc3BlY2lmaWVkIHByaW1hcnkg c2VydmVyIGNvbm5lY3Rpb24sIGNoZWNrIHdoZXRoZXIgd2UgYXJlCisJICogY2FzY2FkaW5nIHN0 YW5kYnkgYW5kIHZhbGlkYXRlcyBwcmltYXJ5X3Nsb3RfbmFtZSBmb3IKKwkgKiBub24tY2FzY2Fk aW5nLXN0YW5kYnlzLgorCSAqLworCWNoZWNrX3ByaW1hcnlfaW5mbyh3cmNvbm4sICZhbV9jYXNj YWRpbmdfc3RhbmRieSk7CisKKwkvKiBNYWluIHdhaXQgbG9vcCAqLworCWZvciAoOzspCisJewor CQlib29sCQlzb21lX3Nsb3RfdXBkYXRlZCA9IGZhbHNlOworCisJCVByb2Nlc3NTbG90U3luY0lu dGVycnVwdHMod3Jjb25uKTsKKworCQlpZiAoIWFtX2Nhc2NhZGluZ19zdGFuZGJ5KQorCQkJc29t ZV9zbG90X3VwZGF0ZWQgPSBzeW5jaHJvbml6ZV9zbG90cyh3cmNvbm4pOworCisJCXdhaXRfZm9y X3Nsb3RfYWN0aXZpdHkoc29tZV9zbG90X3VwZGF0ZWQsIGFtX2Nhc2NhZGluZ19zdGFuZGJ5KTsK KworCQkvKgorCQkgKiBJZiB0aGUgc3RhbmRieSB3YXMgcHJvbW90ZWQgdGhlbiB3aGF0IHdhcyBw cmV2aW91c2x5IGEgY2FzY2FkaW5nCisJCSAqIHN0YW5kYnkgbWlnaHQgbm8gbG9uZ2VyIGJlIG9u ZSwgc28gcmVjaGVjayBlYWNoIHRpbWUuCisJCSAqLworCQlpZiAoYW1fY2FzY2FkaW5nX3N0YW5k YnkpCisJCQljaGVja19wcmltYXJ5X2luZm8od3Jjb25uLCAmYW1fY2FzY2FkaW5nX3N0YW5kYnkp OworCX0KKworCS8qCisJICogVGhlIHNsb3Qgc3luYyB3b3JrZXIgY2FuIG5vdCBnZXQgaGVyZSBi ZWNhdXNlIGl0IHdpbGwgb25seSBzdG9wIHdoZW4gaXQKKwkgKiByZWNlaXZlcyBhIFNJR0lOVCBm cm9tIHRoZSBzdGFydHVwIHByb2Nlc3MsIG9yIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCisJICov CisJQXNzZXJ0KGZhbHNlKTsKK30KKworLyoKKyAqIElzIGN1cnJlbnQgcHJvY2VzcyB0aGUgc2xv dCBzeW5jIHdvcmtlcj8KKyAqLworYm9vbAorSXNMb2dpY2FsU2xvdFN5bmNXb3JrZXIodm9pZCkK K3sKKwlyZXR1cm4gU2xvdFN5bmNXb3JrZXItPnBpZCA9PSBNeVByb2NQaWQ7Cit9CisKKy8qCisg KiBTaHV0IGRvd24gdGhlIHNsb3Qgc3luYyB3b3JrZXIuCisgKi8KK3ZvaWQKK1NodXREb3duU2xv dFN5bmModm9pZCkKK3sKKwlTcGluTG9ja0FjcXVpcmUoJlNsb3RTeW5jV29ya2VyLT5tdXRleCk7 CisKKwlTbG90U3luY1dvcmtlci0+c3RvcFNpZ25hbGVkID0gdHJ1ZTsKKworCWlmIChTbG90U3lu Y1dvcmtlci0+cGlkID09IEludmFsaWRQaWQpCisJeworCQlTcGluTG9ja1JlbGVhc2UoJlNsb3RT eW5jV29ya2VyLT5tdXRleCk7CisJCXJldHVybjsKKwl9CisJU3BpbkxvY2tSZWxlYXNlKCZTbG90 U3luY1dvcmtlci0+bXV0ZXgpOworCisJa2lsbChTbG90U3luY1dvcmtlci0+cGlkLCBTSUdJTlQp OworCisJLyogV2FpdCBmb3IgaXQgdG8gZGllICovCisJZm9yICg7OykKKwl7CisJCWludAkJCXJj OworCisJCS8qIFdhaXQgYSBiaXQsIHdlIGRvbid0IGV4cGVjdCB0byBoYXZlIHRvIHdhaXQgbG9u ZyAqLworCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBX TF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJICAgMTBMLCBXQUlUX0VWRU5U X0JHV09SS0VSX1NIVVRET1dOKTsKKworCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCXsKKwkJ CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisK KwkJU3BpbkxvY2tBY3F1aXJlKCZTbG90U3luY1dvcmtlci0+bXV0ZXgpOworCisJCS8qIElzIGl0 IGdvbmU/ICovCisJCWlmIChTbG90U3luY1dvcmtlci0+cGlkID09IEludmFsaWRQaWQpCisJCQli cmVhazsKKworCQlTcGluTG9ja1JlbGVhc2UoJlNsb3RTeW5jV29ya2VyLT5tdXRleCk7CisJfQor CisJU3BpbkxvY2tSZWxlYXNlKCZTbG90U3luY1dvcmtlci0+bXV0ZXgpOworfQorCisvKgorICog QWxsb2NhdGUgYW5kIGluaXRpYWxpemUgc2xvdCBzeW5jIHdvcmtlciBzaGFyZWQgbWVtb3J5Cisg Ki8KK3ZvaWQKK1Nsb3RTeW5jV29ya2VyU2htZW1Jbml0KHZvaWQpCit7CisJU2l6ZQkJc2l6ZTsK Kwlib29sCQlmb3VuZDsKKworCXNpemUgPSBzaXplb2YoU2xvdFN5bmNXb3JrZXJDdHhTdHJ1Y3Qp OworCXNpemUgPSBNQVhBTElHTihzaXplKTsKKworCVNsb3RTeW5jV29ya2VyID0gKFNsb3RTeW5j V29ya2VyQ3R4U3RydWN0ICopCisJCVNobWVtSW5pdFN0cnVjdCgiU2xvdCBTeW5jIFdvcmtlciBE YXRhIiwgc2l6ZSwgJmZvdW5kKTsKKworCWlmICghZm91bmQpCisJeworCQltZW1zZXQoU2xvdFN5 bmNXb3JrZXIsIDAsIHNpemUpOworCQlTbG90U3luY1dvcmtlci0+cGlkID0gSW52YWxpZFBpZDsK KwkJU3BpbkxvY2tJbml0KCZTbG90U3luY1dvcmtlci0+bXV0ZXgpOworCX0KK30KKworLyoKKyAq IFJlZ2lzdGVyIHRoZSBiYWNrZ3JvdW5kIHdvcmtlciBmb3Igc2xvdHMgc3luY2hyb25pemF0aW9u IHByb3ZpZGVkCisgKiBlbmFibGVfc3luY3Nsb3QgaXMgT04uCisgKi8KK3ZvaWQKK1Nsb3RTeW5j V29ya2VyUmVnaXN0ZXIodm9pZCkKK3sKKwlCYWNrZ3JvdW5kV29ya2VyIGJndzsKKworCWlmICgh ZW5hYmxlX3N5bmNzbG90KQorCXsKKwkJZXJlcG9ydChMT0csCisJCQkJZXJybXNnKCJza2lwcGlu ZyBzbG90IHN5bmNocm9uaXphdGlvbiIpLAorCQkJCWVycmRldGFpbCgiXCJlbmFibGVfc3luY3Ns b3RcIiBpcyBkaXNhYmxlZC4iKSk7CisJCXJldHVybjsKKwl9CisKKwltZW1zZXQoJmJndywgMCwg c2l6ZW9mKGJndykpOworCisJLyogV2UgbmVlZCBkYXRhYmFzZSBjb25uZWN0aW9uIHdoaWNoIG5l ZWRzIHNoYXJlZC1tZW1vcnkgYWNjZXNzIGFzIHdlbGwgKi8KKwliZ3cuYmd3X2ZsYWdzID0gQkdX T1JLRVJfU0hNRU1fQUNDRVNTIHwKKwkJQkdXT1JLRVJfQkFDS0VORF9EQVRBQkFTRV9DT05ORUNU SU9OOworCisJLyogU3RhcnQgYXMgc29vbiBhcyBhIGNvbnNpc3RlbnQgc3RhdGUgaGFzIGJlZW4g cmVhY2hlZCBpbiBhIGhvdCBzdGFuZGJ5ICovCisJYmd3LmJnd19zdGFydF90aW1lID0gQmdXb3Jr ZXJTdGFydF9Db25zaXN0ZW50U3RhdGVfSG90U3RhbmRieTsKKworCXNucHJpbnRmKGJndy5iZ3df bGlicmFyeV9uYW1lLCBNQVhQR1BBVEgsICJwb3N0Z3JlcyIpOworCXNucHJpbnRmKGJndy5iZ3df ZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIlJlcGxTbG90U3luY1dvcmtlck1haW4iKTsKKwlz bnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCisJCQkgInJlcGxpY2F0aW9uIHNsb3Qg c3luYyB3b3JrZXIiKTsKKwlzbnByaW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sCisJCQkg InNsb3Qgc3luYyB3b3JrZXIiKTsKKworCWJndy5iZ3dfcmVzdGFydF90aW1lID0gQkdXX0RFRkFV TFRfUkVTVEFSVF9JTlRFUlZBTDsKKwliZ3cuYmd3X25vdGlmeV9waWQgPSAwOworCWJndy5iZ3df bWFpbl9hcmcgPSAoRGF0dW0pIDA7CisKKwlSZWdpc3RlckJhY2tncm91bmRXb3JrZXIoJmJndyk7 Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggMTEwY2I1OTc4My4uNjA1ZGZiMDQyNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtNDYsNyArNDYsOSBAQAogI2luY2x1ZGUgImNvbW1vbi9z dHJpbmcuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNp bmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vc2xvdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgpAQCAtMTAzLDcgKzEwNSw2IEBAIGludAkJCW1heF9yZXBsaWNhdGlvbl9zbG90 cyA9IDEwOyAvKiB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVwbGljYXRpb24KIAkJCQkJCQkJCQkg KiBzbG90cyAqLwogCiBzdGF0aWMgdm9pZCBSZXBsaWNhdGlvblNsb3RTaG1lbUV4aXQoaW50IGNv ZGUsIERhdHVtIGFyZyk7Ci1zdGF0aWMgdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wQWNxdWlyZWQo dm9pZCk7CiBzdGF0aWMgdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wUHRyKFJlcGxpY2F0aW9uU2xv dCAqc2xvdCk7CiAKIC8qIGludGVybmFsIHBlcnNpc3RlbmN5IGZ1bmN0aW9ucyAqLwpAQCAtMjUw LDExICsyNTEsMTIgQEAgUmVwbGljYXRpb25TbG90VmFsaWRhdGVOYW1lKGNvbnN0IGNoYXIgKm5h bWUsIGludCBlbGV2ZWwpCiAgKiAgICAgdXNlciB3aWxsIG9ubHkgZ2V0IGNvbW1pdCBwcmVwYXJl ZC4KICAqIGZhaWxvdmVyOiBJZiBlbmFibGVkLCBhbGxvd3MgdGhlIHNsb3QgdG8gYmUgc3luY2Vk IHRvIHN0YW5kYnlzIHNvCiAgKiAgICAgdGhhdCBsb2dpY2FsIHJlcGxpY2F0aW9uIGNhbiBiZSBy ZXN1bWVkIGFmdGVyIGZhaWxvdmVyLgorICogc3luY2VkOiBUcnVlIGlmIHRoZSBzbG90IGlzIGNy ZWF0ZWQgYnkgYSBzbG90c3luYyB3b3JrZXIuCiAgKi8KIHZvaWQKIFJlcGxpY2F0aW9uU2xvdENy ZWF0ZShjb25zdCBjaGFyICpuYW1lLCBib29sIGRiX3NwZWNpZmljLAogCQkJCQkgIFJlcGxpY2F0 aW9uU2xvdFBlcnNpc3RlbmN5IHBlcnNpc3RlbmN5LAotCQkJCQkgIGJvb2wgdHdvX3BoYXNlLCBi b29sIGZhaWxvdmVyKQorCQkJCQkgIGJvb2wgdHdvX3BoYXNlLCBib29sIGZhaWxvdmVyLCBib29s IHN5bmNlZCkKIHsKIAlSZXBsaWNhdGlvblNsb3QgKnNsb3QgPSBOVUxMOwogCWludAkJCWk7CkBA IC0yNjMsNiArMjY1LDE5IEBAIFJlcGxpY2F0aW9uU2xvdENyZWF0ZShjb25zdCBjaGFyICpuYW1l LCBib29sIGRiX3NwZWNpZmljLAogCiAJUmVwbGljYXRpb25TbG90VmFsaWRhdGVOYW1lKG5hbWUs IEVSUk9SKTsKIAorCS8qCisJICogRG8gbm90IGFsbG93IHVzZXJzIHRvIGNyZWF0ZSB0aGUgc2xv dHMgd2l0aCBmYWlsb3ZlciBlbmFibGVkIG9uIHRoZQorCSAqIHN0YW5kYnkgYXMgd2UgZG8gbm90 IHN1cHBvcnQgc3luYyB0byB0aGUgY2FzY2FkaW5nIHN0YW5kYnkuCisJICoKKwkgKiBTbG90IHN5 bmMgd29ya2VyIGNhbiBzdGlsbCBjcmVhdGUgc2xvdHMgd2l0aCBmYWlsb3ZlciBlbmFibGVkLCBh cyBpdAorCSAqIG5lZWRzIHRvIG1haW50YWluIHRoaXMgdmFsdWUgaW4gc3luYyB3aXRoIHRoZSBy ZW1vdGUgc2xvdHMuCisJICovCisJaWYgKGZhaWxvdmVyICYmIFJlY292ZXJ5SW5Qcm9ncmVzcygp ICYmICFJc0xvZ2ljYWxTbG90U3luY1dvcmtlcigpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygiY2Fubm90 IGVuYWJsZSBmYWlsb3ZlciBmb3IgYSByZXBsaWNhdGlvbiBzbG90IgorCQkJCQkgICAiIGNyZWF0 ZWQgb24gdGhlIHN0YW5kYnkiKSk7CisKIAkvKgogCSAqIElmIHNvbWUgb3RoZXIgYmFja2VuZCBy YW4gdGhpcyBjb2RlIGNvbmN1cnJlbnRseSB3aXRoIHVzLCB3ZSdkIGxpa2VseQogCSAqIGJvdGgg YWxsb2NhdGUgdGhlIHNhbWUgc2xvdCwgYW5kIHRoYXQgd291bGQgYmUgYmFkLiAgV2UnZCBhbHNv IGJlIGF0CkBAIC0zMTUsNiArMzMwLDcgQEAgUmVwbGljYXRpb25TbG90Q3JlYXRlKGNvbnN0IGNo YXIgKm5hbWUsIGJvb2wgZGJfc3BlY2lmaWMsCiAJc2xvdC0+ZGF0YS50d29fcGhhc2UgPSB0d29f cGhhc2U7CiAJc2xvdC0+ZGF0YS50d29fcGhhc2VfYXQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlz bG90LT5kYXRhLmZhaWxvdmVyID0gZmFpbG92ZXI7CisJc2xvdC0+ZGF0YS5zeW5jZWQgPSBzeW5j ZWQ7CiAKIAkvKiBhbmQgdGhlbiBkYXRhIG9ubHkgcHJlc2VudCBpbiBzaGFyZWQgbWVtb3J5ICov CiAJc2xvdC0+anVzdF9kaXJ0aWVkID0gZmFsc2U7CkBAIC02NzcsNiArNjkzLDE2IEBAIFJlcGxp Y2F0aW9uU2xvdERyb3AoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBub3dhaXQpCiAKIAlSZXBsaWNh dGlvblNsb3RBY3F1aXJlKG5hbWUsIG5vd2FpdCk7CiAKKwkvKgorCSAqIERvIG5vdCBhbGxvdyB1 c2VycyB0byBkcm9wIHRoZSBzbG90cyB3aGljaCBhcmUgY3VycmVudGx5IGJlaW5nIHN5bmNlZAor CSAqIGZyb20gdGhlIHByaW1hcnkgdG8gdGhlIHN0YW5kYnkuCisJICovCisJaWYgKFJlY292ZXJ5 SW5Qcm9ncmVzcygpICYmIE15UmVwbGljYXRpb25TbG90LT5kYXRhLnN5bmNlZCkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVf U1RBVEUpLAorCQkJCWVycm1zZygiY2Fubm90IGRyb3AgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIi LCBuYW1lKSwKKwkJCQllcnJkZXRhaWwoIlRoaXMgc2xvdCBpcyBiZWluZyBzeW5jZWQgZnJvbSB0 aGUgcHJpbWFyeSBzZXJ2ZXIuIikpOworCiAJUmVwbGljYXRpb25TbG90RHJvcEFjcXVpcmVkKCk7 CiB9CiAKQEAgLTY5Niw2ICs3MjIsMjkgQEAgUmVwbGljYXRpb25TbG90QWx0ZXIoY29uc3QgY2hh ciAqbmFtZSwgYm9vbCBmYWlsb3ZlcikKIAkJCQllcnJtc2coImNhbm5vdCB1c2UgJXMgd2l0aCBh IHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QiLAogCQkJCQkgICAiQUxURVJfUkVQTElDQVRJT05f U0xPVCIpKTsKIAorCWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwl7CisJCS8qCisJCSAqIERv IG5vdCBhbGxvdyB1c2VycyB0byBhbHRlciB0aGUgc2xvdHMgd2hpY2ggYXJlIGN1cnJlbnRseSBi ZWluZworCQkgKiBzeW5jZWQgZnJvbSB0aGUgcHJpbWFyeSB0byB0aGUgc3RhbmRieS4KKwkJICov CisJCWlmIChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5zeW5jZWQpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAorCQkJCQllcnJtc2coImNhbm5vdCBhbHRlciByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsIG5h bWUpLAorCQkJCQllcnJkZXRhaWwoIlRoaXMgc2xvdCBpcyBiZWluZyBzeW5jZWQgZnJvbSB0aGUg cHJpbWFyeSBzZXJ2ZXIuIikpOworCisJCS8qCisJCSAqIERvIG5vdCBhbGxvdyB1c2VycyB0byBh bHRlciBzbG90cyB0byBlbmFibGUgZmFpbG92ZXIgb24gdGhlIHN0YW5kYnkKKwkJICogYXMgd2Ug ZG8gbm90IHN1cHBvcnQgc3luYyB0byB0aGUgY2FzY2FkaW5nIHN0YW5kYnkuCisJCSAqLworCQlp ZiAoZmFpbG92ZXIpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgZW5hYmxlIGZhaWxvdmVy IGZvciBhIHJlcGxpY2F0aW9uIHNsb3QiCisJCQkJCQkgICAiIG9uIHRoZSBzdGFuZGJ5IikpOwor CX0KKwogCVNwaW5Mb2NrQWNxdWlyZSgmTXlSZXBsaWNhdGlvblNsb3QtPm11dGV4KTsKIAlNeVJl cGxpY2F0aW9uU2xvdC0+ZGF0YS5mYWlsb3ZlciA9IGZhaWxvdmVyOwogCVNwaW5Mb2NrUmVsZWFz ZSgmTXlSZXBsaWNhdGlvblNsb3QtPm11dGV4KTsKQEAgLTcwOCw3ICs3NTcsNyBAQCBSZXBsaWNh dGlvblNsb3RBbHRlcihjb25zdCBjaGFyICpuYW1lLCBib29sIGZhaWxvdmVyKQogLyoKICAqIFBl cm1hbmVudGx5IGRyb3AgdGhlIGN1cnJlbnRseSBhY3F1aXJlZCByZXBsaWNhdGlvbiBzbG90Lgog ICovCi1zdGF0aWMgdm9pZAordm9pZAogUmVwbGljYXRpb25TbG90RHJvcEFjcXVpcmVkKHZvaWQp CiB7CiAJUmVwbGljYXRpb25TbG90ICpzbG90ID0gTXlSZXBsaWNhdGlvblNsb3Q7CkBAIC04NjQs OCArOTEzLDggQEAgUmVwbGljYXRpb25TbG90TWFya0RpcnR5KHZvaWQpCiB9CiAKIC8qCi0gKiBD b252ZXJ0IGEgc2xvdCB0aGF0J3MgbWFya2VkIGFzIFJTX0VQSEVNRVJBTCB0byBhIFJTX1BFUlNJ U1RFTlQgc2xvdCwKLSAqIGd1YXJhbnRlZWluZyBpdCB3aWxsIGJlIHRoZXJlIGFmdGVyIGFuIGV2 ZW50dWFsIGNyYXNoLgorICogQ29udmVydCBhIHNsb3QgdGhhdCdzIG1hcmtlZCBhcyBSU19FUEhF TUVSQUwgb3IgUlNfVEVNUE9SQVJZIHRvIGEKKyAqIFJTX1BFUlNJU1RFTlQgc2xvdCwgZ3VhcmFu dGVlaW5nIGl0IHdpbGwgYmUgdGhlcmUgYWZ0ZXIgYW4gZXZlbnR1YWwgY3Jhc2guCiAgKi8KIHZv aWQKIFJlcGxpY2F0aW9uU2xvdFBlcnNpc3Qodm9pZCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1 bmNzLmMKaW5kZXggZWI2ODUwODliMy4uOTkxMzM5NjE1MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdGZ1bmNzLmMKQEAgLTQzLDcgKzQzLDcgQEAgY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9u X3Nsb3QoY2hhciAqbmFtZSwgYm9vbCBpbW1lZGlhdGVseV9yZXNlcnZlLAogCS8qIGFjcXVpcmUg cmVwbGljYXRpb24gc2xvdCwgdGhpcyB3aWxsIGNoZWNrIGZvciBjb25mbGljdGluZyBuYW1lcyAq LwogCVJlcGxpY2F0aW9uU2xvdENyZWF0ZShuYW1lLCBmYWxzZSwKIAkJCQkJCSAgdGVtcG9yYXJ5 ID8gUlNfVEVNUE9SQVJZIDogUlNfUEVSU0lTVEVOVCwgZmFsc2UsCi0JCQkJCQkgIGZhbHNlKTsK KwkJCQkJCSAgZmFsc2UsIGZhbHNlKTsKIAogCWlmIChpbW1lZGlhdGVseV9yZXNlcnZlKQogCXsK QEAgLTEzNiw3ICsxMzYsNyBAQCBjcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KGNoYXIg Km5hbWUsIGNoYXIgKnBsdWdpbiwKIAkgKi8KIAlSZXBsaWNhdGlvblNsb3RDcmVhdGUobmFtZSwg dHJ1ZSwKIAkJCQkJCSAgdGVtcG9yYXJ5ID8gUlNfVEVNUE9SQVJZIDogUlNfRVBIRU1FUkFMLCB0 d29fcGhhc2UsCi0JCQkJCQkgIGZhaWxvdmVyKTsKKwkJCQkJCSAgZmFpbG92ZXIsIGZhbHNlKTsK IAogCS8qCiAJICogQ3JlYXRlIGxvZ2ljYWwgZGVjb2RpbmcgY29udGV4dCB0byBmaW5kIHN0YXJ0 IHBvaW50IG9yLCBpZiB3ZSBkb24ndApAQCAtMjM3LDcgKzIzNyw3IEBAIHBnX2Ryb3BfcmVwbGlj YXRpb25fc2xvdChQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIHBnX2dldF9yZXBsaWNhdGlvbl9z bG90cyhQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19HRVRfUkVQTElDQVRJT05fU0xP VFNfQ09MUyAxNgorI2RlZmluZSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNfQ09MUyAxNwogCVJl dHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5m bzsKIAlYTG9nUmVjUHRyCWN1cnJsc247CiAJaW50CQkJc2xvdG5vOwpAQCAtNDE4LDIxICs0MTgs MjMgQEAgcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCWJy ZWFrOwogCiAJCQkJY2FzZSBSU19JTlZBTF9XQUxfUkVNT1ZFRDoKLQkJCQkJdmFsdWVzW2krK10g PSBDU3RyaW5nR2V0VGV4dERhdHVtKCJ3YWxfcmVtb3ZlZCIpOworCQkJCQl2YWx1ZXNbaSsrXSA9 IENTdHJpbmdHZXRUZXh0RGF0dW0oU0xPVF9JTlZBTF9XQUxfUkVNT1ZFRF9URVhUKTsKIAkJCQkJ YnJlYWs7CiAKIAkJCQljYXNlIFJTX0lOVkFMX0hPUklaT046Ci0JCQkJCXZhbHVlc1tpKytdID0g Q1N0cmluZ0dldFRleHREYXR1bSgicm93c19yZW1vdmVkIik7CisJCQkJCXZhbHVlc1tpKytdID0g Q1N0cmluZ0dldFRleHREYXR1bShTTE9UX0lOVkFMX0hPUklaT05fVEVYVCk7CiAJCQkJCWJyZWFr OwogCiAJCQkJY2FzZSBSU19JTlZBTF9XQUxfTEVWRUw6Ci0JCQkJCXZhbHVlc1tpKytdID0gQ1N0 cmluZ0dldFRleHREYXR1bSgid2FsX2xldmVsX2luc3VmZmljaWVudCIpOworCQkJCQl2YWx1ZXNb aSsrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oU0xPVF9JTlZBTF9XQUxfTEVWRUxfVEVYVCk7CiAJ CQkJCWJyZWFrOwogCQkJfQogCQl9CiAKIAkJdmFsdWVzW2krK10gPSBCb29sR2V0RGF0dW0oc2xv dF9jb250ZW50cy5kYXRhLmZhaWxvdmVyKTsKIAorCQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1 bShzbG90X2NvbnRlbnRzLmRhdGEuc3luY2VkKTsKKwogCQlBc3NlcnQoaSA9PSBQR19HRVRfUkVQ TElDQVRJT05fU0xPVFNfQ09MUyk7CiAKIAkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5z ZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywKQEAgLTcwMCw3ICs3MDIsNiBAQCBjb3B5X3JlcGxp Y2F0aW9uX3Nsb3QoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgbG9naWNhbF9zbG90KQog CVhMb2dSZWNQdHIJc3JjX3Jlc3RhcnRfbHNuOwogCWJvb2wJCXNyY19pc2xvZ2ljYWw7CiAJYm9v bAkJdGVtcG9yYXJ5OwotCWJvb2wJCWZhaWxvdmVyOwogCWNoYXIJICAgKnBsdWdpbjsKIAlEYXR1 bQkJdmFsdWVzWzJdOwogCWJvb2wJCW51bGxzWzJdOwpAQCAtNzU2LDcgKzc1Nyw2IEBAIGNvcHlf cmVwbGljYXRpb25fc2xvdChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBsb2dpY2FsX3Ns b3QpCiAJc3JjX2lzbG9naWNhbCA9IFNsb3RJc0xvZ2ljYWwoJmZpcnN0X3Nsb3RfY29udGVudHMp OwogCXNyY19yZXN0YXJ0X2xzbiA9IGZpcnN0X3Nsb3RfY29udGVudHMuZGF0YS5yZXN0YXJ0X2xz bjsKIAl0ZW1wb3JhcnkgPSAoZmlyc3Rfc2xvdF9jb250ZW50cy5kYXRhLnBlcnNpc3RlbmN5ID09 IFJTX1RFTVBPUkFSWSk7Ci0JZmFpbG92ZXIgPSBmaXJzdF9zbG90X2NvbnRlbnRzLmRhdGEuZmFp bG92ZXI7CiAJcGx1Z2luID0gbG9naWNhbF9zbG90ID8gTmFtZVN0cihmaXJzdF9zbG90X2NvbnRl bnRzLmRhdGEucGx1Z2luKSA6IE5VTEw7CiAKIAkvKiBDaGVjayB0eXBlIG9mIHJlcGxpY2F0aW9u IHNsb3QgKi8KQEAgLTc5MSwxMiArNzkxLDIwIEBAIGNvcHlfcmVwbGljYXRpb25fc2xvdChGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBsb2dpY2FsX3Nsb3QpCiAJCSAqIFdlIG11c3Qgbm90 IHRyeSB0byByZWFkIFdBTCwgc2luY2Ugd2UgaGF2ZW4ndCByZXNlcnZlZCBpdCB5ZXQgLS0KIAkJ ICogaGVuY2UgcGFzcyBmaW5kX3N0YXJ0cG9pbnQgZmFsc2UuICBjb25maXJtZWRfZmx1c2ggd2ls bCBiZSBzZXQKIAkJICogYmVsb3csIGJ5IGNvcHlpbmcgZnJvbSB0aGUgc291cmNlIHNsb3QuCisJ CSAqCisJCSAqIFRvIGF2b2lkIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0aGUgc2xvdHN5bmMgd29y a2VyIHdoZW4gdGhlCisJCSAqIHJlc3RhcnRfbHNuIG9mIGEgcmVwbGljYXRpb24gc2xvdCBnb2Vz IGJhY2t3YXJkcywgd2Ugc2V0IHRoZQorCQkgKiBmYWlsb3ZlciBvcHRpb24gdG8gZmFsc2UgaGVy ZS4gVGhpcyBzaXR1YXRpb24gb2NjdXJzIHdoZW4gYSBzbG90IG9uCisJCSAqIHRoZSBwcmltYXJ5 IHNlcnZlciBpcyBkcm9wcGVkIGFuZCBpbW1lZGlhdGVseSByZXBsYWNlZCB3aXRoIGEgbmV3CisJ CSAqIHNsb3Qgb2YgdGhlIHNhbWUgbmFtZSwgY3JlYXRlZCBieSBjb3B5aW5nIGZyb20gYW5vdGhl ciBleGlzdGluZworCQkgKiBzbG90LiBIb3dldmVyLCB0aGUgc2xvdHN5bmMgd29ya2VyIHdpbGwg b25seSBvYnNlcnZlIHRoZQorCQkgKiByZXN0YXJ0X2xzbiBvZiB0aGUgc2FtZSBzbG90IGdvaW5n IGJhY2t3YXJkcy4KIAkJICovCiAJCWNyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoTmFt ZVN0cigqZHN0X25hbWUpLAogCQkJCQkJCQkJCXBsdWdpbiwKIAkJCQkJCQkJCQl0ZW1wb3Jhcnks CiAJCQkJCQkJCQkJZmFsc2UsCi0JCQkJCQkJCQkJZmFpbG92ZXIsCisJCQkJCQkJCQkJZmFsc2Us CiAJCQkJCQkJCQkJc3JjX3Jlc3RhcnRfbHNuLAogCQkJCQkJCQkJCWZhbHNlKTsKIAl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMKaW5kZXggNzNhN2Q4Zjk2Yy4u ZDQyMGE4MzNjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXJmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3Mu YwpAQCAtMzQ1LDYgKzM0NSwyMiBAQCBHZXRXYWxSY3ZGbHVzaFJlY1B0cihYTG9nUmVjUHRyICps YXRlc3RDaHVua1N0YXJ0LCBUaW1lTGluZUlEICpyZWNlaXZlVExJKQogCXJldHVybiByZWNwdHI7 CiB9CiAKKy8qCisgKiBSZXR1cm5zIHRoZSBsYXRlc3QgcmVwb3J0ZWQgZW5kIG9mIFdBTCBvbiB0 aGUgc2VuZGVyCisgKi8KK1hMb2dSZWNQdHIKK0dldFdhbFJjdkxhdGVzdFdhbEVuZCgpCit7CisJ V2FsUmN2RGF0YSAqd2FscmN2ID0gV2FsUmN2OworCVhMb2dSZWNQdHIJcmVjcHRyOworCisJU3Bp bkxvY2tBY3F1aXJlKCZ3YWxyY3YtPm11dGV4KTsKKwlyZWNwdHIgPSB3YWxyY3YtPmxhdGVzdFdh bEVuZDsKKwlTcGluTG9ja1JlbGVhc2UoJndhbHJjdi0+bXV0ZXgpOworCisJcmV0dXJuIHJlY3B0 cjsKK30KKwogLyoKICAqIFJldHVybnMgdGhlIGxhc3QrMSBieXRlIHBvc2l0aW9uIHRoYXQgd2Fs cmVjZWl2ZXIgaGFzIHdyaXR0ZW4uCiAgKiBUaGlzIHJldHVybnMgYSByZWNlbnRseSB3cml0dGVu IHZhbHVlIHdpdGhvdXQgdGFraW5nIGEgbG9jay4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMKaW5kZXggNzdjOGJhYTMyYS4uMTVmMDQ1ZmUxZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RlY29kZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2xvZ2ljYWwuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3NuYXBi dWlsZC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3N5bmNyZXAuaCIKQEAgLTI0Myw3ICsyNDQs NiBAQCBzdGF0aWMgdm9pZCBXYWxTbmRTaHV0ZG93bih2b2lkKSBwZ19hdHRyaWJ1dGVfbm9yZXR1 cm4oKTsKIHN0YXRpYyB2b2lkIFhMb2dTZW5kUGh5c2ljYWwodm9pZCk7CiBzdGF0aWMgdm9pZCBY TG9nU2VuZExvZ2ljYWwodm9pZCk7CiBzdGF0aWMgdm9pZCBXYWxTbmREb25lKFdhbFNuZFNlbmRE YXRhQ2FsbGJhY2sgc2VuZF9kYXRhKTsKLXN0YXRpYyBYTG9nUmVjUHRyIEdldFN0YW5kYnlGbHVz aFJlY1B0cihUaW1lTGluZUlEICp0bGkpOwogc3RhdGljIHZvaWQgSWRlbnRpZnlTeXN0ZW0odm9p ZCk7CiBzdGF0aWMgdm9pZCBVcGxvYWRNYW5pZmVzdCh2b2lkKTsKIHN0YXRpYyBib29sIEhhbmRs ZVVwbG9hZE1hbmlmZXN0UGFja2V0KFN0cmluZ0luZm8gYnVmLCBvZmZfdCAqb2Zmc2V0LApAQCAt MTIyNCw3ICsxMjI0LDcgQEAgQ3JlYXRlUmVwbGljYXRpb25TbG90KENyZWF0ZVJlcGxpY2F0aW9u U2xvdENtZCAqY21kKQogCXsKIAkJUmVwbGljYXRpb25TbG90Q3JlYXRlKGNtZC0+c2xvdG5hbWUs IGZhbHNlLAogCQkJCQkJCSAgY21kLT50ZW1wb3JhcnkgPyBSU19URU1QT1JBUlkgOiBSU19QRVJT SVNURU5ULAotCQkJCQkJCSAgZmFsc2UsIGZhbHNlKTsKKwkJCQkJCQkgIGZhbHNlLCBmYWxzZSwg ZmFsc2UpOwogCiAJCWlmIChyZXNlcnZlX3dhbCkKIAkJewpAQCAtMTI1NSw3ICsxMjU1LDcgQEAg Q3JlYXRlUmVwbGljYXRpb25TbG90KENyZWF0ZVJlcGxpY2F0aW9uU2xvdENtZCAqY21kKQogCQkg Ki8KIAkJUmVwbGljYXRpb25TbG90Q3JlYXRlKGNtZC0+c2xvdG5hbWUsIHRydWUsCiAJCQkJCQkJ ICBjbWQtPnRlbXBvcmFyeSA/IFJTX1RFTVBPUkFSWSA6IFJTX0VQSEVNRVJBTCwKLQkJCQkJCQkg IHR3b19waGFzZSwgZmFpbG92ZXIpOworCQkJCQkJCSAgdHdvX3BoYXNlLCBmYWlsb3ZlciwgZmFs c2UpOwogCiAJCS8qCiAJCSAqIERvIG9wdGlvbnMgY2hlY2sgZWFybHkgc28gdGhhdCB3ZSBjYW4g YmFpbCBiZWZvcmUgY2FsbGluZyB0aGUKQEAgLTMzNzUsMTQgKzMzNzUsMTcgQEAgV2FsU25kRG9u ZShXYWxTbmRTZW5kRGF0YUNhbGxiYWNrIHNlbmRfZGF0YSkKIH0KIAogLyoKLSAqIFJldHVybnMg dGhlIGxhdGVzdCBwb2ludCBpbiBXQUwgdGhhdCBoYXMgYmVlbiBzYWZlbHkgZmx1c2hlZCB0byBk aXNrLCBhbmQKLSAqIGNhbiBiZSBzZW50IHRvIHRoZSBzdGFuZGJ5LiBUaGlzIHNob3VsZCBvbmx5 IGJlIGNhbGxlZCB3aGVuIGluIHJlY292ZXJ5LAotICogaWUuIHdlJ3JlIHN0cmVhbWluZyB0byBh IGNhc2NhZGVkIHN0YW5kYnkuCisgKiBSZXR1cm5zIHRoZSBsYXRlc3QgcG9pbnQgaW4gV0FMIHRo YXQgaGFzIGJlZW4gc2FmZWx5IGZsdXNoZWQgdG8gZGlzay4KKyAqIFRoaXMgc2hvdWxkIG9ubHkg YmUgY2FsbGVkIHdoZW4gaW4gcmVjb3ZlcnkuCisgKgorICogVGhpcyBpcyBjYWxsZWQgZWl0aGVy IGJ5IGNhc2NhZGluZyB3YWxzZW5kZXIgdG8gZmluZCBXQUwgcG9zdGlvbiB0bworICogYmUgc2Vu dCB0byBhIGNhc2NhZGVkIHN0YW5kYnkgb3IgYnkgYSBzbG90IHN5bmMgd29ya2VyIHRvIHZhbGlk YXRlCisgKiByZW1vdGUgc2xvdCdzIGxzbiBiZWZvcmUgc3luY2luZyBpdCBsb2NhbGx5LgogICoK ICAqIEFzIGEgc2lkZS1lZmZlY3QsICp0bGkgaXMgdXBkYXRlZCB0byB0aGUgVExJIG9mIHRoZSBs YXN0CiAgKiByZXBsYXllZCBXQUwgcmVjb3JkLgogICovCi1zdGF0aWMgWExvZ1JlY1B0cgorWExv Z1JlY1B0cgogR2V0U3RhbmRieUZsdXNoUmVjUHRyKFRpbWVMaW5lSUQgKnRsaSkKIHsKIAlYTG9n UmVjUHRyCXJlcGxheVB0cjsKQEAgLTMzOTEsNiArMzM5NCw4IEBAIEdldFN0YW5kYnlGbHVzaFJl Y1B0cihUaW1lTGluZUlEICp0bGkpCiAJVGltZUxpbmVJRAlyZWNlaXZlVExJOwogCVhMb2dSZWNQ dHIJcmVzdWx0OwogCisJQXNzZXJ0KGFtX2Nhc2NhZGluZ193YWxzZW5kZXIgfHwgSXNMb2dpY2Fs U2xvdFN5bmNXb3JrZXIoKSk7CisKIAkvKgogCSAqIFdlIGNhbiBzYWZlbHkgc2VuZCB3aGF0J3Mg YWxyZWFkeSBiZWVuIHJlcGxheWVkLiBBbHNvLCBpZiB3YWxyZWNlaXZlcgogCSAqIGlzIHN0cmVh bWluZyBXQUwgZnJvbSB0aGUgc2FtZSB0aW1lbGluZSwgd2UgY2FuIHNlbmQgYW55dGhpbmcgdGhh dCBpdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCmluZGV4IDcwODRlMTg4NjEuLjkyNWFjNmM5NDIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9kc21fcmVnaXN0cnkuaCIKQEAgLTM0Nyw2 ICszNDgsNyBAQCBDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2b2lkKQogCVdhbFN1bW1hcml6 ZXJTaG1lbUluaXQoKTsKIAlQZ0FyY2hTaG1lbUluaXQoKTsKIAlBcHBseUxhdW5jaGVyU2htZW1J bml0KCk7CisJU2xvdFN5bmNXb3JrZXJTaG1lbUluaXQoKTsKIAogCS8qCiAJICogU2V0IHVwIG90 aGVyIG1vZHVsZXMgdGhhdCBuZWVkIHNvbWUgc2hhcmVkIG1lbW9yeSBzcGFjZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCmluZGV4IDFhMzRiZDM3MTUuLmU4YzUzMGFjZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMy ODYsNiArMzI4NiwxNyBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCQkJICovCiAJCQlwcm9j X2V4aXQoMSk7CiAJCX0KKwkJZWxzZSBpZiAoSXNMb2dpY2FsU2xvdFN5bmNXb3JrZXIoKSkKKwkJ eworCQkJZWxvZyhERUJVRzEsCisJCQkJICJyZXBsaWNhdGlvbiBzbG90IHN5bmMgd29ya2VyIGlz IHNodXR0aW5nIGRvd24gZHVlIHRvIGFkbWluaXN0cmF0b3IgY29tbWFuZCIpOworCisJCQkvKgor CQkJICogU2xvdCBzeW5jIHdvcmtlciBjYW4gYmUgc3RvcHBlZCBhdCBhbnkgdGltZS4gVXNlIGV4 aXQgc3RhdHVzIDEKKwkJCSAqIHNvIHRoZSBiYWNrZ3JvdW5kIHdvcmtlciBpcyByZXN0YXJ0ZWQu CisJCQkgKi8KKwkJCXByb2NfZXhpdCgxKTsKKwkJfQogCQllbHNlIGlmIChJc0JhY2tncm91bmRX b3JrZXIpCiAJCQllcmVwb3J0KEZBVEFMLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0FETUlOX1NI VVRET1dOKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZl bnRfbmFtZXMudHh0IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1l cy50eHQKaW5kZXggYTVkZjgzNWRkNC4uM2U2MjAzMzIyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKQEAgLTUzLDYgKzUzLDcgQEAgTE9H SUNBTF9BUFBMWV9NQUlOCSJXYWl0aW5nIGluIG1haW4gbG9vcCBvZiBsb2dpY2FsIHJlcGxpY2F0 aW9uIGFwcGx5IHByb2Nlc3MuIgogTE9HSUNBTF9MQVVOQ0hFUl9NQUlOCSJXYWl0aW5nIGluIG1h aW4gbG9vcCBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIGxhdW5jaGVyIHByb2Nlc3MuIgogTE9HSUNB TF9QQVJBTExFTF9BUFBMWV9NQUlOCSJXYWl0aW5nIGluIG1haW4gbG9vcCBvZiBsb2dpY2FsIHJl cGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHByb2Nlc3MuIgogUkVDT1ZFUllfV0FMX1NUUkVBTQki V2FpdGluZyBpbiBtYWluIGxvb3Agb2Ygc3RhcnR1cCBwcm9jZXNzIGZvciBXQUwgdG8gYXJyaXZl LCBkdXJpbmcgc3RyZWFtaW5nIHJlY292ZXJ5LiIKK1JFUExfU0xPVFNZTkNfTUFJTgkiV2FpdGlu ZyBpbiBtYWluIGxvb3Agb2Ygc2xvdCBzeW5jIHdvcmtlci4iCiBTWVNMT0dHRVJfTUFJTgkiV2Fp dGluZyBpbiBtYWluIGxvb3Agb2Ygc3lzbG9nZ2VyIHByb2Nlc3MuIgogV0FMX1JFQ0VJVkVSX01B SU4JIldhaXRpbmcgaW4gbWFpbiBsb29wIG9mIFdBTCByZWNlaXZlciBwcm9jZXNzLiIKIFdBTF9T RU5ERVJfTUFJTgkiV2FpdGluZyBpbiBtYWluIGxvb3Agb2YgV0FMIHNlbmRlciBwcm9jZXNzLiIK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggN2ZlNTg1MThkNy4uZmUwNDRjMTZk ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTY4LDYgKzY4LDcgQEAKICNp bmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgorI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdy LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sYXJnZV9vYmplY3QuaCIKICNpbmNsdWRlICJzdG9yYWdl L3BnX3NobWVtLmgiCkBAIC0yMDU0LDYgKzIwNTUsMTUgQEAgc3RydWN0IGNvbmZpZ19ib29sIENv bmZpZ3VyZU5hbWVzQm9vbFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsi ZW5hYmxlX3N5bmNzbG90IiwgUEdDX1BPU1RNQVNURVIsIFJFUExJQ0FUSU9OX1NUQU5EQlksCisJ CQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgYSBwaHlzaWNhbCBzdGFuZGJ5IHRvIHN5bmNocm9uaXpl IGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMgZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIuIiksCisJCX0s CisJCSZlbmFibGVfc3luY3Nsb3QsCisJCWZhbHNlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwK KwogCS8qIEVuZC1vZi1saXN0IG1hcmtlciAqLwogCXsKIAkJe05VTEwsIDAsIDAsIE5VTEwsIE5V TEx9LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgTlVMTApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGRhMTBiNDNkYWMuLjM4Njg2OTRkM2Yg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAg LTM2MSw2ICszNjEsNyBAQAogI3dhbF9yZXRyaWV2ZV9yZXRyeV9pbnRlcnZhbCA9IDVzCSMgdGlt ZSB0byB3YWl0IGJlZm9yZSByZXRyeWluZyB0bwogCQkJCQkjIHJldHJpZXZlIFdBTCBhZnRlciBh IGZhaWxlZCBhdHRlbXB0CiAjcmVjb3ZlcnlfbWluX2FwcGx5X2RlbGF5ID0gMAkJIyBtaW5pbXVt IGRlbGF5IGZvciBhcHBseWluZyBjaGFuZ2VzIGR1cmluZyByZWNvdmVyeQorI2VuYWJsZV9zeW5j c2xvdCA9IG9mZgkJCSMgZW5hYmxlcyBzbG90IHN5bmNocm9uaXphdGlvbiBvbiB0aGUgcGh5c2lj YWwgc3RhbmRieSBmcm9tIHRoZSBwcmltYXJ5CiAKICMgLSBTdWJzY3JpYmVycyAtCiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CmluZGV4IDI5YWY0Y2U2NWQuLjk5NGUzM2Y1OWIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMTExMjcsOSArMTExMjcsOSBAQAogICBwcm9uYW1lID0+ICdwZ19n ZXRfcmVwbGljYXRpb25fc2xvdHMnLCBwcm9yb3dzID0+ICcxMCcsIHByb2lzc3RyaWN0ID0+ICdm JywKICAgcHJvcmV0c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ ICdyZWNvcmQnLAogICBwcm9hcmd0eXBlcyA9PiAnJywKLSAgcHJvYWxsYXJndHlwZXMgPT4gJ3tu YW1lLG5hbWUsdGV4dCxvaWQsYm9vbCxib29sLGludDQseGlkLHhpZCxwZ19sc24scGdfbHNuLHRl eHQsaW50OCxib29sLHRleHQsYm9vbH0nLAotICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvLG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tzbG90X25hbWUscGx1 Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9yYXJ5LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4sY2F0 YWxvZ194bWluLHJlc3RhcnRfbHNuLGNvbmZpcm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1cyxzYWZl X3dhbF9zaXplLHR3b19waGFzZSxjb25mbGljdF9yZWFzb24sZmFpbG92ZXJ9JywKKyAgcHJvYWxs YXJndHlwZXMgPT4gJ3tuYW1lLG5hbWUsdGV4dCxvaWQsYm9vbCxib29sLGludDQseGlkLHhpZCxw Z19sc24scGdfbHNuLHRleHQsaW50OCxib29sLHRleHQsYm9vbCxib29sfScsCisgIHByb2FyZ21v ZGVzID0+ICd7byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2FyZ25h bWVzID0+ICd7c2xvdF9uYW1lLHBsdWdpbixzbG90X3R5cGUsZGF0b2lkLHRlbXBvcmFyeSxhY3Rp dmUsYWN0aXZlX3BpZCx4bWluLGNhdGFsb2dfeG1pbixyZXN0YXJ0X2xzbixjb25maXJtZWRfZmx1 c2hfbHNuLHdhbF9zdGF0dXMsc2FmZV93YWxfc2l6ZSx0d29fcGhhc2UsY29uZmxpY3RfcmVhc29u LGZhaWxvdmVyLHN5bmNlZH0nLAogICBwcm9zcmMgPT4gJ3BnX2dldF9yZXBsaWNhdGlvbl9zbG90 cycgfSwKIHsgb2lkID0+ICczNzg2JywgZGVzY3IgPT4gJ3NldCB1cCBhIGxvZ2ljYWwgcmVwbGlj YXRpb24gc2xvdCcsCiAgIHByb25hbWUgPT4gJ3BnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9u X3Nsb3QnLCBwcm92b2xhdGlsZSA9PiAndicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0 bWFzdGVyL2Jnd29ya2VyLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyLmgKaW5k ZXggMjJmYzQ5ZWMyNy4uNzA5MmZjNzJjNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1h c3Rlci9iZ3dvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaApA QCAtNzksNiArNzksNyBAQCB0eXBlZGVmIGVudW0KIAlCZ1dvcmtlclN0YXJ0X1Bvc3RtYXN0ZXJT dGFydCwKIAlCZ1dvcmtlclN0YXJ0X0NvbnNpc3RlbnRTdGF0ZSwKIAlCZ1dvcmtlclN0YXJ0X1Jl Y292ZXJ5RmluaXNoZWQsCisJQmdXb3JrZXJTdGFydF9Db25zaXN0ZW50U3RhdGVfSG90U3RhbmRi eSwKIH0gQmdXb3JrZXJTdGFydFRpbWU7CiAKICNkZWZpbmUgQkdXX0RFRkFVTFRfUkVTVEFSVF9J TlRFUlZBTAk2MApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdv cmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4IGEx OGQ3OWQxYjIuLmJiZTA0MjI2ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29y a2VyLmgKQEAgLTIyLDYgKzIyLDcgQEAgZXh0ZXJuIHZvaWQgVGFibGVzeW5jV29ya2VyTWFpbihE YXR1bSBtYWluX2FyZyk7CiAKIGV4dGVybiBib29sIElzTG9naWNhbFdvcmtlcih2b2lkKTsKIGV4 dGVybiBib29sIElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIodm9pZCk7CitleHRlcm4gYm9v bCBJc0xvZ2ljYWxTbG90U3luY1dvcmtlcih2b2lkKTsKIAogZXh0ZXJuIHZvaWQgSGFuZGxlUGFy YWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCk7CiBleHRlcm4gdm9pZCBIYW5kbGVQYXJh bGxlbEFwcGx5TWVzc2FnZXModm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5kZXggZGE0Yzc3 NjQ5Mi4uMWY0NDQ2YWEzYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xv dC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtNTIsNiArNTIsMTQg QEAgdHlwZWRlZiBlbnVtIFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlCiAJUlNfSU5W QUxfV0FMX0xFVkVMLAogfSBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZTsKIAorLyoK KyAqIFRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yICdjb25mbGljdF9yZWFzb24nIHJldHVybmVkIGlu CisgKiBwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMuCisgKi8KKyNkZWZpbmUgU0xPVF9JTlZBTF9X QUxfUkVNT1ZFRF9URVhUICJ3YWxfcmVtb3ZlZCIKKyNkZWZpbmUgU0xPVF9JTlZBTF9IT1JJWk9O X1RFWFQgICAgICJyb3dzX3JlbW92ZWQiCisjZGVmaW5lIFNMT1RfSU5WQUxfV0FMX0xFVkVMX1RF WFQgICAid2FsX2xldmVsX2luc3VmZmljaWVudCIKKwogLyoKICAqIE9uLURpc2sgZGF0YSBvZiBh IHJlcGxpY2F0aW9uIHNsb3QsIHByZXNlcnZlZCBhY3Jvc3MgcmVzdGFydHMuCiAgKi8KQEAgLTEx Miw2ICsxMjAsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVwbGljYXRpb25TbG90UGVyc2lzdGVudERh dGEKIAkvKiBwbHVnaW4gbmFtZSAqLwogCU5hbWVEYXRhCXBsdWdpbjsKIAorCS8qCisJICogV2Fz IHRoaXMgc2xvdCBzeW5jaHJvbml6ZWQgZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXI/CisJICovCisJ Y2hhcgkJc3luY2VkOworCiAJLyoKIAkgKiBJcyB0aGlzIGEgZmFpbG92ZXIgc2xvdCAoc3luYyBj YW5kaWRhdGUgZm9yIHN0YW5kYnlzKT8gT25seSByZWxldmFudAogCSAqIGZvciBsb2dpY2FsIHNs b3RzIG9uIHRoZSBwcmltYXJ5IHNlcnZlci4KQEAgLTIyNCw5ICsyMzcsMTEgQEAgZXh0ZXJuIHZv aWQgUmVwbGljYXRpb25TbG90c1NobWVtSW5pdCh2b2lkKTsKIC8qIG1hbmFnZW1lbnQgb2YgaW5k aXZpZHVhbCBzbG90cyAqLwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90Q3JlYXRlKGNvbnN0 IGNoYXIgKm5hbWUsIGJvb2wgZGJfc3BlY2lmaWMsCiAJCQkJCQkJCSAgUmVwbGljYXRpb25TbG90 UGVyc2lzdGVuY3kgcGVyc2lzdGVuY3ksCi0JCQkJCQkJCSAgYm9vbCB0d29fcGhhc2UsIGJvb2wg ZmFpbG92ZXIpOworCQkJCQkJCQkgIGJvb2wgdHdvX3BoYXNlLCBib29sIGZhaWxvdmVyLAorCQkJ CQkJCQkgIGJvb2wgc3luY2VkKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdFBlcnNpc3Qo dm9pZCk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wKGNvbnN0IGNoYXIgKm5hbWUs IGJvb2wgbm93YWl0KTsKK2V4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdERyb3BBY3F1aXJlZCh2 b2lkKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdEFsdGVyKGNvbnN0IGNoYXIgKm5hbWUs IGJvb2wgZmFpbG92ZXIpOwogCiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNv bnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNl aXZlci5oCmluZGV4IGY1NjZhOTliYTEuLjQ4ZGM4NDZlMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd2FscmVjZWl2ZXIuaApAQCAtMjc5LDYgKzI3OSwxMyBAQCB0eXBlZGVmIHZvaWQgKCp3YWxy Y3ZfZ2V0X3NlbmRlcmluZm9fZm4pIChXYWxSZWNlaXZlckNvbm4gKmNvbm4sCiB0eXBlZGVmIGNo YXIgKigqd2FscmN2X2lkZW50aWZ5X3N5c3RlbV9mbikgKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwK IAkJCQkJCQkJCQkJVGltZUxpbmVJRCAqcHJpbWFyeV90bGkpOwogCisvKgorICogd2FscmN2X2dl dF9kYm5hbWVfZnJvbV9jb25uaW5mb19mbgorICoKKyAqIFJldHVybnMgdGhlIGRiaWQgZnJvbSB0 aGUgcHJpbWFyeV9jb25uaW5mbworICovCit0eXBlZGVmIGNoYXIgKigqd2FscmN2X2dldF9kYm5h bWVfZnJvbV9jb25uaW5mb19mbikgKGNvbnN0IGNoYXIgKmNvbm5pbmZvKTsKKwogLyoKICAqIHdh bHJjdl9zZXJ2ZXJfdmVyc2lvbl9mbgogICoKQEAgLTQwMyw2ICs0MTAsNyBAQCB0eXBlZGVmIHN0 cnVjdCBXYWxSZWNlaXZlckZ1bmN0aW9uc1R5cGUKIAl3YWxyY3ZfZ2V0X2Nvbm5pbmZvX2ZuIHdh bHJjdl9nZXRfY29ubmluZm87CiAJd2FscmN2X2dldF9zZW5kZXJpbmZvX2ZuIHdhbHJjdl9nZXRf c2VuZGVyaW5mbzsKIAl3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtX2ZuIHdhbHJjdl9pZGVudGlmeV9z eXN0ZW07CisJd2FscmN2X2dldF9kYm5hbWVfZnJvbV9jb25uaW5mb19mbiB3YWxyY3ZfZ2V0X2Ri bmFtZV9mcm9tX2Nvbm5pbmZvOwogCXdhbHJjdl9zZXJ2ZXJfdmVyc2lvbl9mbiB3YWxyY3Zfc2Vy dmVyX3ZlcnNpb247CiAJd2FscmN2X3JlYWR0aW1lbGluZWhpc3RvcnlmaWxlX2ZuIHdhbHJjdl9y ZWFkdGltZWxpbmVoaXN0b3J5ZmlsZTsKIAl3YWxyY3Zfc3RhcnRzdHJlYW1pbmdfZm4gd2FscmN2 X3N0YXJ0c3RyZWFtaW5nOwpAQCAtNDI4LDYgKzQzNiw4IEBAIGV4dGVybiBQR0RMTElNUE9SVCBX YWxSZWNlaXZlckZ1bmN0aW9uc1R5cGUgKldhbFJlY2VpdmVyRnVuY3Rpb25zOwogCVdhbFJlY2Vp dmVyRnVuY3Rpb25zLT53YWxyY3ZfZ2V0X3NlbmRlcmluZm8oY29ubiwgc2VuZGVyX2hvc3QsIHNl bmRlcl9wb3J0KQogI2RlZmluZSB3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtKGNvbm4sIHByaW1hcnlf dGxpKSBcCiAJV2FsUmVjZWl2ZXJGdW5jdGlvbnMtPndhbHJjdl9pZGVudGlmeV9zeXN0ZW0oY29u biwgcHJpbWFyeV90bGkpCisjZGVmaW5lIHdhbHJjdl9nZXRfZGJuYW1lX2Zyb21fY29ubmluZm8o Y29ubmluZm8pIFwKKwlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X2dldF9kYm5hbWVfZnJv bV9jb25uaW5mbyhjb25uaW5mbykKICNkZWZpbmUgd2FscmN2X3NlcnZlcl92ZXJzaW9uKGNvbm4p IFwKIAlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X3NlcnZlcl92ZXJzaW9uKGNvbm4pCiAj ZGVmaW5lIHdhbHJjdl9yZWFkdGltZWxpbmVoaXN0b3J5ZmlsZShjb25uLCB0bGksIGZpbGVuYW1l LCBjb250ZW50LCBzaXplKSBcCkBAIC00ODUsNiArNDk1LDcgQEAgZXh0ZXJuIHZvaWQgUmVxdWVz dFhMb2dTdHJlYW1pbmcoVGltZUxpbmVJRCB0bGksIFhMb2dSZWNQdHIgcmVjcHRyLAogCQkJCQkJ CQkgYm9vbCBjcmVhdGVfdGVtcF9zbG90KTsKIGV4dGVybiBYTG9nUmVjUHRyIEdldFdhbFJjdkZs dXNoUmVjUHRyKFhMb2dSZWNQdHIgKmxhdGVzdENodW5rU3RhcnQsIFRpbWVMaW5lSUQgKnJlY2Vp dmVUTEkpOwogZXh0ZXJuIFhMb2dSZWNQdHIgR2V0V2FsUmN2V3JpdGVSZWNQdHIodm9pZCk7Citl eHRlcm4gWExvZ1JlY1B0ciBHZXRXYWxSY3ZMYXRlc3RXYWxFbmQodm9pZCk7CiBleHRlcm4gaW50 CUdldFJlcGxpY2F0aW9uQXBwbHlEZWxheSh2b2lkKTsKIGV4dGVybiBpbnQJR2V0UmVwbGljYXRp b25UcmFuc2ZlckxhdGVuY3kodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgK aW5kZXggMWI1OGQ1MGIzYi4uMjc2ZDg5MTNhYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2Vu ZGVyLmgKQEAgLTEyLDYgKzEyLDggQEAKICNpZm5kZWYgX1dBTFNFTkRFUl9ICiAjZGVmaW5lIF9X QUxTRU5ERVJfSAogCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisKIC8qCiAgKiBXaGF0 IHRvIGRvIHdpdGggYSBzbmFwc2hvdCBpbiBjcmVhdGUgcmVwbGljYXRpb24gc2xvdCBjb21tYW5k LgogICovCkBAIC00NSw2ICs0Nyw3IEBAIGV4dGVybiB2b2lkIFdhbFNuZEluaXRTdG9wcGluZyh2 b2lkKTsKIGV4dGVybiB2b2lkIFdhbFNuZFdhaXRTdG9wcGluZyh2b2lkKTsKIGV4dGVybiB2b2lk IEhhbmRsZVdhbFNuZEluaXRTdG9wcGluZyh2b2lkKTsKIGV4dGVybiB2b2lkIFdhbFNuZFJxc3RG aWxlUmVsb2FkKHZvaWQpOworZXh0ZXJuIFhMb2dSZWNQdHIgR2V0U3RhbmRieUZsdXNoUmVjUHRy KFRpbWVMaW5lSUQgKnRsaSk7CiAKIC8qCiAgKiBSZW1lbWJlciB0aGF0IHdlIHdhbnQgdG8gd2Fr ZXVwIHdhbHNlbmRlcnMgbGF0ZXIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmgKaW5kZXggNTE1YWVmZDUxOS4uMjE2NzcyMDk3MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTIzNyw2ICsyMzcsMTEgQEAgZXh0ZXJuIFBHRExM SU1QT1JUIGJvb2wgaW5fcmVtb3RlX3RyYW5zYWN0aW9uOwogCiBleHRlcm4gUEdETExJTVBPUlQg Ym9vbCBJbml0aWFsaXppbmdBcHBseVdvcmtlcjsKIAorLyogU2xvdCBzeW5jIHdvcmtlciBvYmpl Y3RzICovCitleHRlcm4gUEdETExJTVBPUlQgY2hhciAqUHJpbWFyeUNvbm5JbmZvOworZXh0ZXJu IFBHRExMSU1QT1JUIGNoYXIgKlByaW1hcnlTbG90TmFtZTsKK2V4dGVybiBQR0RMTElNUE9SVCBi b29sIGVuYWJsZV9zeW5jc2xvdDsKKwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfYXR0 YWNoKGludCBzbG90KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2VyICpsb2dpY2FscmVwX3dvcmtl cl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkJYm9vbCBvbmx5X3J1bm5p bmcpOwpAQCAtMzI1LDYgKzMzMCwxMSBAQCBleHRlcm4gdm9pZCBwYV9kZWNyX2FuZF93YWl0X3N0 cmVhbV9ibG9jayh2b2lkKTsKIGV4dGVybiB2b2lkIHBhX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbywKIAkJCQkJCSAgIFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7CiAK K2V4dGVybiB2b2lkIFJlcGxTbG90U3luY1dvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOworZXh0 ZXJuIHZvaWQgU2xvdFN5bmNXb3JrZXJSZWdpc3Rlcih2b2lkKTsKK2V4dGVybiB2b2lkIFNodXRE b3duU2xvdFN5bmModm9pZCk7CitleHRlcm4gdm9pZCBTbG90U3luY1dvcmtlclNobWVtSW5pdCh2 b2lkKTsKKwogI2RlZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlcikt PmluX3VzZSAmJiBcCiAJCQkJCQkJCQkgICAod29ya2VyKS0+dHlwZSA9PSBXT1JLRVJUWVBFX1BB UkFMTEVMX0FQUExZKQogI2RlZmluZSBpc1RhYmxlc3luY1dvcmtlcih3b3JrZXIpICgod29ya2Vy KS0+aW5fdXNlICYmIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5k YnlfZmFpbG92ZXJfc2xvdHNfc3luYy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5k YnlfZmFpbG92ZXJfc2xvdHNfc3luYy5wbAppbmRleCBiYzU4ZmY0Y2FiLi4yYTAxN2I0Mjg2IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3Rz X3N5bmMucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9z bG90c19zeW5jLnBsCkBAIC0xOCw3ICsxOCw4IEBAICRwdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0 cmVhbWluZyA9PiAnbG9naWNhbCcpOwogJHB1Ymxpc2hlci0+c3RhcnQ7CiAKICRwdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19teXB1 YiBGT1IgQUxMIFRBQkxFUzsiKTsKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfbXlwdWIg Rk9SIEFMTCBUQUJMRVM7IgorKTsKIAogbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJHB1Ymxpc2hl ci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKIApAQCAtOTcsNCArOTgsMTY4IEBAIG15 ICgkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRzdWJzY3JpYmVyMS0+cHNxbCgncG9zdGdy ZXMnLAogb2soICRzdGRlcnIgPX4gL0VSUk9SOiAgY2Fubm90IHNldCBmYWlsb3ZlciBmb3IgZW5h YmxlZCBzdWJzY3JpcHRpb24vLAogCSJhbHRlcmluZyBmYWlsb3ZlciBpcyBub3QgYWxsb3dlZCBm b3IgZW5hYmxlZCBzdWJzY3JpcHRpb24iKTsKIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCBsb2dpY2FsIGZhaWxvdmVyIHNsb3RzIG9u IHRoZSBzdGFuZGJ5CisjIENvbmZpZ3VyZSBzdGFuZGJ5MSB0byByZXBsaWNhdGUgYW5kIHN5bmNo cm9uaXplIGxvZ2ljYWwgc2xvdHMgY29uZmlndXJlZAorIyBmb3IgZmFpbG92ZXIgb24gdGhlIHBy aW1hcnkKKyMKKyMgICAgICAgICAgICAgIGZhaWxvdmVyIHNsb3QgbHN1YjFfc2xvdC0+fCAtLS0t PiBzdWJzY3JpYmVyMSAoY29ubmVjdGVkIHZpYSBsb2dpY2FsIHJlcGxpY2F0aW9uKQorIyBwcmlt YXJ5IC0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICB8CisjICAgICAgICAgICAgICBwaHlz aWNhbCBzbG90IHNiMV9zbG90LS0tPnwgLS0tLT4gc3RhbmRieTEgKGNvbm5lY3RlZCB2aWEgc3Ry ZWFtaW5nIHJlcGxpY2F0aW9uKQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICBsc3ViMV9zbG90KHN5bmNlZF9zbG90KQorIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworbXkgJHByaW1hcnkg PSAkcHVibGlzaGVyOworbXkgJGJhY2t1cF9uYW1lID0gJ2JhY2t1cCc7CiskcHJpbWFyeS0+YmFj a3VwKCRiYWNrdXBfbmFtZSk7CisKKyMgQ3JlYXRlIGEgc3RhbmRieQorbXkgJHN0YW5kYnkxID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5MScpOworJHN0YW5kYnkxLT5p bml0X2Zyb21fYmFja3VwKAorCSRwcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWlu ZyA9PiAxLAorCWhhc19yZXN0b3JpbmcgPT4gMSk7CisKK215ICRjb25uc3RyXzEgPSAkcHJpbWFy eS0+Y29ubnN0cjsKKyRzdGFuZGJ5MS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZics IHFxKAorZW5hYmxlX3N5bmNzbG90ID0gdHJ1ZQoraG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgor cHJpbWFyeV9zbG90X25hbWUgPSAnc2IxX3Nsb3QnCitwcmltYXJ5X2Nvbm5pbmZvID0gJyRjb25u c3RyXzEgZGJuYW1lPXBvc3RncmVzJworKSk7CisKKyRwcmltYXJ5LT5wc3FsKCdwb3N0Z3Jlcycs CisJcXtTRUxFQ1QgcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3NiMV9zbG90 Jyk7fSk7CisKK215ICRzdGFuZGJ5MV9jb25uaW5mbyA9ICRzdGFuZGJ5MS0+Y29ubnN0ciAuICcg ZGJuYW1lPXBvc3RncmVzJzsKK215ICRvZmZzZXQgPSAtcyAkc3RhbmRieTEtPmxvZ2ZpbGU7CisK KyMgU3RhcnQgdGhlIHN0YW5kYnkgc28gdGhhdCBzbG90IHN5bmNpbmcgY2FuIGJlZ2luCiskc3Rh bmRieTEtPnN0YXJ0OworCisjIEdlbmVyYXRlIGEgbG9nIHRvIHRyaWdnZXIgdGhlIHdhbHNlbmRl ciB0byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSB3YWxyZWNlaXZlcgorIyB3aGljaCB3aWxsIHVwZGF0 ZSBXYWxSY3YtPmxhdGVzdFdhbEVuZCB0byBhIHZhbGlkIG51bWJlci4KKyRwcmltYXJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19sb2dfc3RhbmRieV9zbmFwc2hvdCgpOyIpOwor CisjIFdhaXQgZm9yIHRoZSBzdGFuZGJ5IHRvIGZpbmlzaCBzeW5jCiskc3RhbmRieTEtPndhaXRf Zm9yX2xvZygKKwlxci9MT0c6ICggW0EtWjAtOV0rOik/IG5ld2x5IGNyZWF0ZWQgc2xvdCBcImxz dWIxX3Nsb3RcIiBpcyBzeW5jLXJlYWR5IG5vdy8sCisJJG9mZnNldCk7CisKKyMgQ29uZmlybSB0 aGF0IHRoZSBsb2dpY2FsIGZhaWxvdmVyIHNsb3QgaXMgY3JlYXRlZCBvbiB0aGUgc3RhbmRieSBh bmQgaXMKKyMgZmxhZ2dlZCBhcyAnc3luY2VkJworaXMoJHN0YW5kYnkxLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwlxe1NFTEVDVCBzeW5jZWQgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVS RSBzbG90X25hbWUgPSAnbHN1YjFfc2xvdCc7fSksCisJInQiLAorCSdsb2dpY2FsIHNsb3QgaGFz IHN5bmNlZCBhcyB0cnVlIG9uIHN0YW5kYnknKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB0byBjb25maXJtIHRoYXQgcmVzdGFy dF9sc24gYW5kIGNvbmZpcm1lZF9mbHVzaF9sc24gb2YgdGhlIGxvZ2ljYWwgc2xvdAorIyBvbiB0 aGUgcHJpbWFyeSBpcyBzeW5jZWQgdG8gdGhlIHN0YW5kYnkKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgSW5zZXJ0IGRhdGEgb24gdGhlIHBy aW1hcnkKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJQ1JFQVRFIFRB QkxFIHRhYl9pbnQgKGEgaW50IFBSSU1BUlkgS0VZKTsKKwlJTlNFUlQgSU5UTyB0YWJfaW50IFNF TEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApOworXSk7CisKKyMgU3Vic2NyaWJlIHRvIHRoZSBu ZXcgdGFibGUgZGF0YSBhbmQgd2FpdCBmb3IgaXQgdG8gYXJyaXZlCiskc3Vic2NyaWJlcjEtPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlDUkVBVEUgVEFCTEUgdGFiX2ludCAoYSBpbnQg UFJJTUFSWSBLRVkpOworCUFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX215c3ViMSBSRUZSRVNI IFBVQkxJQ0FUSU9OOworXSk7CisKKyRzdWJzY3JpYmVyMS0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9u X3N5bmM7CisKKyMgRG8gbm90IGFsbG93IGFueSBmdXJ0aGVyIGFkdmFuY2VtZW50IG9mIHRoZSBy ZXN0YXJ0X2xzbiBhbmQKKyMgY29uZmlybWVkX2ZsdXNoX2xzbiBmb3IgdGhlIGxzdWIxX3Nsb3Qu Ciskc3Vic2NyaWJlcjEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfbXlzdWIxIERJU0FCTEUiKTsKKworIyBXYWl0IGZvciB0aGUgcmVwbGljYXRpb24g c2xvdCB0byBiZWNvbWUgaW5hY3RpdmUgb24gdGhlIHB1Ymxpc2hlcgorJHByaW1hcnktPnBvbGxf cXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywKKwkiU0VMRUNUIENPVU5UKCopIEZST00gcGdfY2F0 YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnbHN1YjFfc2xvdCcg QU5EIGFjdGl2ZT0nZiciLAorCTEpOworCisjIEdldCB0aGUgcmVzdGFydF9sc24gZm9yIHRoZSBs b2dpY2FsIHNsb3QgbHN1YjFfc2xvdCBvbiB0aGUgcHJpbWFyeQorbXkgJHByaW1hcnlfcmVzdGFy dF9sc24gPSAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCByZXN0YXJ0 X2xzbiBmcm9tIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9z bG90JzsiKTsKKworIyBHZXQgdGhlIGNvbmZpcm1lZF9mbHVzaF9sc24gZm9yIHRoZSBsb2dpY2Fs IHNsb3QgbHN1YjFfc2xvdCBvbiB0aGUgcHJpbWFyeQorbXkgJHByaW1hcnlfZmx1c2hfbHNuID0g JHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY29uZmlybWVkX2ZsdXNo X2xzbiBmcm9tIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9z bG90JzsiKTsKKworIyBDb25maXJtIHRoYXQgcmVzdGFydF9sc24gYW5kIG9mIGNvbmZpcm1lZF9m bHVzaF9sc24gbHN1YjFfc2xvdCBzbG90IGFyZSBzeW5jZWQKKyMgdG8gdGhlIHN0YW5kYnkKK29r KCAkc3RhbmRieTEtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg JyRwcmltYXJ5X3Jlc3RhcnRfbHNuJyA9IHJlc3RhcnRfbHNuIEFORCAnJHByaW1hcnlfZmx1c2hf bHNuJyA9IGNvbmZpcm1lZF9mbHVzaF9sc24gZnJvbSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVS RSBzbG90X25hbWUgPSAnbHN1YjFfc2xvdCc7IiksCisJJ3Jlc3RhcnRfbHNuIGFuZCBjb25maXJt ZWRfZmx1c2hfbHNuIG9mIHNsb3QgbHN1YjFfc2xvdCBzeW5jZWQgdG8gc3RhbmRieScpOworCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHRoYXQgYSBzeW5jaHJvbml6ZWQgc2xvdCBjYW4gbm90IGJlIGRlY29kZWQsIGFsdGVyZWQgb3Ig ZHJvcHBlZCBieSB0aGUgdXNlcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKworIyBEaXNhYmxlIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHRlbXBvcmFy aWx5IHRvIHN0b3Agc2xvdCBzeW5jIHdvcmtlciBvdGhlcndpc2UKKyMgdGhlIGNvbmNlcm5lZCB0 ZXN0aW5nIHNjZW5hcmlvcyBoZXJlIG1heSBiZSBpbnRlcnJ1cHRlZCBieSBkaWZmZXJlbnQgZXJy b3I6CisjICdFUlJPUjogIHJlcGxpY2F0aW9uIHNsb3QgaXMgYWN0aXZlIGZvciBQSUQgLi4nCisk c3RhbmRieTEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQUxURVIgU1lTVEVNIFNFVCBob3Rfc3Rh bmRieV9mZWVkYmFjayA9IG9mZjsnKTsKKyRzdGFuZGJ5MS0+cmVzdGFydDsKKworIyBBdHRlbXB0 aW5nIHRvIHBlcmZvcm0gbG9naWNhbCBkZWNvZGluZyBvbiBhIHN5bmNlZCBzbG90IHNob3VsZCBy ZXN1bHQgaW4gYW4gZXJyb3IKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRzdGFuZGJ5 MS0+cHNxbCgncG9zdGdyZXMnLAorCSJzZWxlY3QgKiBmcm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRf Y2hhbmdlcygnbHN1YjFfc2xvdCcsTlVMTCxOVUxMKTsiKTsKK29rKCRzdGRlcnIgPX4gL0VSUk9S OiAgY2Fubm90IHVzZSByZXBsaWNhdGlvbiBzbG90ICJsc3ViMV9zbG90IiBmb3IgbG9naWNhbCBk ZWNvZGluZy8sCisJImxvZ2ljYWwgZGVjb2RpbmcgaXMgbm90IGFsbG93ZWQgb24gc3luY2VkIHNs b3QiKTsKKworIyBBdHRlbXB0aW5nIHRvIGFsdGVyIGEgc3luY2VkIHNsb3Qgc2hvdWxkIHJlc3Vs dCBpbiBhbiBlcnJvcgorKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJHN0YW5kYnkxLT5w c3FsKAorICAgICdwb3N0Z3JlcycsCisgICAgcXFbQUxURVJfUkVQTElDQVRJT05fU0xPVCBsc3Vi MV9zbG90IChmYWlsb3Zlcik7XSwKKyAgICByZXBsaWNhdGlvbiA9PiAnZGF0YWJhc2UnKTsKK29r KCRzdGRlcnIgPX4gL0VSUk9SOiAgY2Fubm90IGFsdGVyIHJlcGxpY2F0aW9uIHNsb3QgImxzdWIx X3Nsb3QiLywKKwkic3luY2VkIHNsb3Qgb24gc3RhbmRieSBjYW5ub3QgYmUgYWx0ZXJlZCIpOwor CisjIEF0dGVtcHRpbmcgdG8gZHJvcCBhIHN5bmNlZCBzbG90IHNob3VsZCByZXN1bHQgaW4gYW4g ZXJyb3IKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRzdGFuZGJ5MS0+cHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdsc3ViMV9zbG90Jyk7 Iik7Citvaygkc3RkZXJyID1+IC9FUlJPUjogIGNhbm5vdCBkcm9wIHJlcGxpY2F0aW9uIHNsb3Qg ImxzdWIxX3Nsb3QiLywKKwkic3luY2VkIHNsb3Qgb24gc3RhbmRieSBjYW5ub3QgYmUgZHJvcHBl ZCIpOworCisjIEVuYWJsZSBob3Rfc3RhbmRieV9mZWVkYmFjayBhbmQgcmVzdGFydCBzdGFuZGJ5 Ciskc3RhbmRieTEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQUxURVIgU1lTVEVNIFNFVCBob3Rf c3RhbmRieV9mZWVkYmFjayA9IG9uOycpOworJHN0YW5kYnkxLT5yZXN0YXJ0OworCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBQcm9tb3RlIHRo ZSBzdGFuZGJ5MSB0byBwcmltYXJ5LiBDb25maXJtIHRoYXQ6CisjIGEpIHRoZSBzbG90ICdsc3Vi MV9zbG90JyBpcyByZXRhaW5lZCBvbiB0aGUgbmV3IHByaW1hcnkKKyMgYikgbG9naWNhbCByZXBs aWNhdGlvbiBmb3IgcmVncmVzc19teXN1YjEgaXMgcmVzdW1lZCBzdWNjZXNzZnVsbHkgYWZ0ZXIg ZmFpbG92ZXIKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiskc3RhbmRieTEtPnByb21vdGU7CisKKyMgVXBkYXRlIHN1YnNjcmlwdGlvbiB3aXRoIHRo ZSBuZXcgcHJpbWFyeSdzIGNvbm5lY3Rpb24gaW5mbworJHN1YnNjcmliZXIxLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfbXlzdWIxIENPTk5FQ1RJ T04gJyRzdGFuZGJ5MV9jb25uaW5mbyc7CisJIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX215 c3ViMSBFTkFCTEU7ICIpOworCisjIENvbmZpcm0gdGhlIHN5bmNlZCBzbG90ICdsc3ViMV9zbG90 JyBpcyByZXRhaW5lZCBvbiB0aGUgbmV3IHByaW1hcnkKK2lzKCRzdGFuZGJ5MS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJcXtTRUxFQ1Qgc2xvdF9uYW1lIEZST00gcGdfcmVwbGljYXRpb25fc2xv dHMgV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIxX3Nsb3QnO30pLAorCSdsc3ViMV9zbG90JywKKwkn c3luY2VkIHNsb3QgcmV0YWluZWQgb24gdGhlIG5ldyBwcmltYXJ5Jyk7CisKKyMgSW5zZXJ0IGRh dGEgb24gdGhlIG5ldyBwcmltYXJ5Ciskc3RhbmRieTEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJJTlNFUlQgSU5UTyB0YWJfaW50IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMTEsIDIwKTsiKTsK KyRzdGFuZGJ5MS0+d2FpdF9mb3JfY2F0Y2h1cCgncmVncmVzc19teXN1YjEnKTsKKworIyBDb25m aXJtIHRoYXQgZGF0YSBpbiB0YWJfaW50IHJlcGxpY2F0ZWQgb24gdGhlIHN1YnNjcmliZXIKK2lz KCAkc3Vic2NyaWJlcjEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRhYl9pbnQ7fSksCisJIjIwIiwKKwknZGF0YSByZXBsaWNhdGVkIGZyb20gdGhlIG5ldyBw cmltYXJ5Jyk7CisKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAppbmRleCBhYmM5NDRlOGI4Li5iNzQ4OGQ3NjBlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dApAQCAtMTQ3NCw4ICsxNDc0LDkgQEAgcGdfcmVwbGljYXRpb25fc2xvdHN8IFNFTEVD VCBsLnNsb3RfbmFtZSwKICAgICBsLnNhZmVfd2FsX3NpemUsCiAgICAgbC50d29fcGhhc2UsCiAg ICAgbC5jb25mbGljdF9yZWFzb24sCi0gICAgbC5mYWlsb3ZlcgotICAgRlJPTSAocGdfZ2V0X3Jl cGxpY2F0aW9uX3Nsb3RzKCkgbChzbG90X25hbWUsIHBsdWdpbiwgc2xvdF90eXBlLCBkYXRvaWQs IHRlbXBvcmFyeSwgYWN0aXZlLCBhY3RpdmVfcGlkLCB4bWluLCBjYXRhbG9nX3htaW4sIHJlc3Rh cnRfbHNuLCBjb25maXJtZWRfZmx1c2hfbHNuLCB3YWxfc3RhdHVzLCBzYWZlX3dhbF9zaXplLCB0 d29fcGhhc2UsIGNvbmZsaWN0X3JlYXNvbiwgZmFpbG92ZXIpCisgICAgbC5mYWlsb3ZlciwKKyAg ICBsLnN5bmNlZAorICAgRlJPTSAocGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKCkgbChzbG90X25h bWUsIHBsdWdpbiwgc2xvdF90eXBlLCBkYXRvaWQsIHRlbXBvcmFyeSwgYWN0aXZlLCBhY3RpdmVf cGlkLCB4bWluLCBjYXRhbG9nX3htaW4sIHJlc3RhcnRfbHNuLCBjb25maXJtZWRfZmx1c2hfbHNu LCB3YWxfc3RhdHVzLCBzYWZlX3dhbF9zaXplLCB0d29fcGhhc2UsIGNvbmZsaWN0X3JlYXNvbiwg ZmFpbG92ZXIsIHN5bmNlZCkKICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIGQgT04gKChsLmRh dG9pZCA9IGQub2lkKSkpOwogcGdfcm9sZXN8IFNFTEVDVCBwZ19hdXRoaWQucm9sbmFtZSwKICAg ICBwZ19hdXRoaWQucm9sc3VwZXIsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0 CmluZGV4IDliZTdhY2EyYjguLmZhZTA1OWQzODkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3lzdmlld3Mub3V0CkBAIC0xMzMsOCArMTMzLDkgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJv bSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZWxmX2pv aW5fcmVtb3ZhbCAgICAgICB8IG9uCiAgZW5hYmxlX3NlcXNjYW4gICAgICAgICAgICAgICAgIHwg b24KICBlbmFibGVfc29ydCAgICAgICAgICAgICAgICAgICAgfCBvbgorIGVuYWJsZV9zeW5jc2xv dCAgICAgICAgICAgICAgICB8IG9mZgogIGVuYWJsZV90aWRzY2FuICAgICAgICAgICAgICAgICB8 IG9uCi0oMjMgcm93cykKKygyNCByb3dzKQogCiAtLSBUaGVyZSBhcmUgYWx3YXlzIHdhaXQgZXZl bnQgZGVzY3JpcHRpb25zIGZvciB2YXJpb3VzIHR5cGVzLgogc2VsZWN0IHR5cGUsIGNvdW50KCop ID4gMCBhcyBvayBGUk9NIHBnX3dhaXRfZXZlbnRzCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cmlu ZGV4IDkwYjM3YjkxOWMuLjYyNTU0ZDUyN2UgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBA IC0yMzI1LDYgKzIzMjUsNyBAQCBSZWxvY2F0aW9uQnVmZmVySW5mbwogUmVscHRyRnJlZVBhZ2VC dHJlZQogUmVscHRyRnJlZVBhZ2VNYW5hZ2VyCiBSZWxwdHJGcmVlUGFnZVNwYW5MZWFkZXIKK1Jl bW90ZVNsb3QKIFJlbmFtZVN0bXQKIFJlb3BlblB0clR5cGUKIFJlb3JkZXJCdWZmZXIKQEAgLTI1 ODQsNiArMjU4NSw3IEBAIFNsYWJCbG9jawogU2xhYkNvbnRleHQKIFNsYWJTbG90CiBTbG90TnVt YmVyCitTbG90U3luY1dvcmtlckN0eFN0cnVjdAogU2xydUN0bAogU2xydUN0bERhdGEKIFNscnVF cnJvckNhdXNlCi0tIAoyLjM0LjEKCg== --0000000000005d8a070610293ea4--