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 1uIaS1-007jxH-Ne for pgsql-hackers@arkaria.postgresql.org; Fri, 23 May 2025 22:01:14 +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 1uIaR2-006suO-RH for pgsql-hackers@arkaria.postgresql.org; Fri, 23 May 2025 22:00:12 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uIaR1-006sfO-B3 for pgsql-hackers@lists.postgresql.org; Fri, 23 May 2025 22:00:11 +0000 Received: from mail-vk1-xa2d.google.com ([2607:f8b0:4864:20::a2d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uIaQx-000a1p-0x for pgsql-hackers@postgresql.org; Fri, 23 May 2025 22:00:09 +0000 Received: by mail-vk1-xa2d.google.com with SMTP id 71dfb90a1353d-52dc1eec86bso847529e0c.0 for ; Fri, 23 May 2025 15:00:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748037607; x=1748642407; 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=W7TXTTVnJJC1gXTWTTmz8LvU33qYAYU2Fh6UTONdWgU=; b=mN1pvaprwIegUrQNHxj4BY3SY1B/CEM+zILliNd2zXtkiJ28WOSoKpq8tHMkEpQOaD uKkTajJ17rV01vLxN65zmEjraoSU0d4/QzyiWvKer56stpDqYJz1jCz0RDl9Cek3OUD1 PtZzccfcGjBl/v8WFXmUSw+fQWQ+m5bx5g8ZFqXqE/BMxambjU2ejuGmFnsLalWUKQ+M X3ZmuUw2q458EnjdUSXHOIXl6y04NBy6vWOB+6eBTwAMzR+qlfXzk7Gk5I08YC4UqC9V nXJ4JI3eYmCb1aFQia+Xz/9MP6Xi1hM8Em3dcEn4R1g5ORs/3zrq3slfID9XPUBhxUZw wsgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748037607; x=1748642407; 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=W7TXTTVnJJC1gXTWTTmz8LvU33qYAYU2Fh6UTONdWgU=; b=xTZVndvMzC4yNu7SBVl49C6uthO4IMe/XXoyo/IoRY+aLuzjqYjZRf3Q0QnaqcRG3e rMdyMgPgZvOPr7Yeopqpy9rAmdg3pmuHaAcT9vpH8ywgadZPuxIM3GrYt0MztfjE+wKv IoRlTpZ4SpiOrv8fQg5EtrnuecKvQktHCrE2crb7XxoQbdsCuoq4s8sXTbA/myBSinhk BtDtyX48vQ4PyLQSMd+0DSOiZGnmW1n5qpRYnipEJ6H0ZvDBKVATwQf2Lk301yruZ9uF AIV9Kf2I/QuqQOwoE83kc4gmJFbs+Lbi4EiJp7bl05Ilh2UTyGCT7wzVqXmAxVv+uQMl /bng== X-Forwarded-Encrypted: i=1; AJvYcCU1n+fQwvWi7PENpY8+RGPdOkE8uImyMnUAapCm6qrfPbtQZcaThU8NrsKs8MIXAkyMfmfaD9kzdTcuhEmh@postgresql.org X-Gm-Message-State: AOJu0YxP8WfV12uPZzoMAhR4DEQYCDR/SXMxe+UUo4372gcysmZ/zRbZ 4pPuRQqKePu0wP1F2w4geA42tuGTDZqHvXu/LKIarf/rv11fGfzkCbJd0DxSMRMFgkdgK2MDHIl PzqG15nnlCI+qeylERSnUkby0aqYuVfn9VmBK32M= X-Gm-Gg: ASbGnct39aARPpnPaT3S/8wwAawrpauO+pxaKN8nuafqtOFYq7m95Du4MHgcaoS/e7H 6jb2dgS0IeldopGFLmtApyWetPQkQ/m0+cY4QqzmrqFEwO/+F3kNb3SCuTFXq/ZyIovgqiC5u2A mZQgGMWykGJekzqxESoC8iYgHDHD9fXCt6 X-Google-Smtp-Source: AGHT+IFAMV8OKUd6sPs+U8yEt/MGu/mDr9aVoHyQ6yhbB5EQkGydkrFtqboeWIvhLlgnYUY/HN+8ba9CC20xqDC/RIM= X-Received: by 2002:a05:6122:2223:b0:526:23d2:6ecd with SMTP id 71dfb90a1353d-52f2c025fe4mr1420656e0c.6.1748037606709; Fri, 23 May 2025 15:00:06 -0700 (PDT) MIME-Version: 1.0 References: <202505181556.3n6oiowvntyr@alvherre.pgsql> In-Reply-To: From: Mihail Nikalayeu Date: Fri, 23 May 2025 23:59:00 +0200 X-Gm-Features: AX0GCFui1G2vVMROvVnpZxUhGqrktM4uOaKYdlRfIFIXRz-iaWXR1fptFOAZtJ0 Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: Andres Freund , Michael Paquier , PostgreSQL Hackers , Andrey Borodin , Melanie Plageman , Matthias van de Meent Content-Type: multipart/mixed; boundary="0000000000009a67c20635d4b809" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009a67c20635d4b809 Content-Type: text/plain; charset="UTF-8" Hello, everyone! Rebased, patch structure and comments available here [0]. Quick introduction poster - here [1]. Best regards, Mikhail. [0]: https://www.postgresql.org/message-id/flat/CADzfLwVOcZ9mg8gOG%2BKXWurt%3DMHRcqNv3XSECYoXyM3ENrxyfQ%40mail.gmail.com#52c97e004b8f628473124c05e3bf2da1 [1]: https://www.postgresql.org/message-id/attachment/176651/STIR-poster.pdf --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-only-part-3-0002-Use-auxiliary-indexes-for-concurrent.patch_" Content-Disposition: attachment; filename="v20-only-part-3-0002-Use-auxiliary-indexes-for-concurrent.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogo3 RnJvbSA4ZDgzMzg0MjYyODVlZGI1NjdjY2E3MzFlMGZjZDdkNzEwM2EzMjlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwLW9ubHktcGFydC0zIDIvNV0gVXNlIGF1eGlsaWFyeSBpbmRleGVzIGZvciBjb25j dXJyZW50CiBpbmRleCBvcGVyYXRpb25zCgpSZXBsYWNlIHRoZSBzZWNvbmQgdGFibGUgZnVsbCBz Y2FuIGluIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHdpdGggYW4gYXV4aWxpYXJ5IGluZGV4IGFw cHJvYWNoOgotIGNyZWF0ZSBhIFNUSVIgIGF1eGlsaWFyeSBpbmRleCB3aXRoIHRoZSBzYW1lIHBy ZWRpY2F0ZSAoaWYgZXhpc3RzKSBhcyBpbiBtYWluIGluZGV4Ci0gdXNlIGl0IHRvIHRyYWNrIHR1 cGxlcyBpbnNlcnRlZCBkdXJpbmcgdGhlIGZpcnN0IHBoYXNlCi0gbWVyZ2UgYXV4aWxpYXJ5IGlu ZGV4IHdpdGggbWFpbiBpbmRleCBkdXJpbmcgdmFsaWRhdGlvbiB0byBjYXRjaCB1cCBuZXcgaW5k ZXggd2l0aCBhbnkgdHVwbGVzIG1pc3NlZCBkdXJpbmcgdGhlIGZpcnN0IHBoYXNlCi0gYXV0b21h dGljYWxseSBkcm9wIGF1eGlsaWFyeSB3aGVuIG1haW4gaW5kZXggaXMgcmVhZHkKClRvIG1lcmdl IG1haW4gYW5kIGF1eGlsaWFyeSBpbmRleGVzOgotIGluZGV4X2J1bGtfZGVsZXRlIGNhbGxlZCBm b3IgYm90aCwgVElEcyBwdXQgaW50byB0dXBsZXNvcnQKLSBib3RoIHR1cGxlc29ydCBhcmUgYmVp bmcgc29ydGVkCi0gYm90aCB0dXBsZXNvcnQgc2Nhbm5lZCB3aXRoIHR3byBwb2ludGVycyBsb29r aW5nIGZvciB0aGUgVElEcyBwcmVzZW50IGluIGF1eGlsaWFyeSBpbmRleCwgYnV0IGFic2VudCBp biBtYWluIG9uZQotIGFsbCBzdWNoIFRJRHMgYXJlIHB1dCBpbnRvIHR1cGxlc3RvcmUKLSBhbGwg VElEcyBpbiB0dXBsZXN0b3JlIGFyZSBmZXRjaGVkIHVzaW5nIHRoZSBzdHJlYW0sIHR1cGxlc3Rv cmUgdXNlZCBpbiBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9yZWFkX3N0cmVhbV9uZXh0IHRv IHByb3ZpZGUgdGhlIG5leHQgcGFnZSB0byBwcmVmZXRjaAotIGlmIGZldGNoZWQgdHVwbGUgaXMg YWxpdmUgLSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBtYWluIGluZGV4CgpUaGlzIGVsaW1pbmF0 ZXMgdGhlIG5lZWQgZm9yIGEgc2Vjb25kIGZ1bGwgdGFibGUgc2NhbiBkdXJpbmcgdmFsaWRhdGlv biwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGVzcGVjaWFsbHkgZm9yIGxhcmdlIHRhYmxlcy4gQWZm ZWN0cyBib3RoIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgYW5kIFJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIG9wZXJhdGlvbnMuCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAg ICAgICAgICAgICAgIHwgIDI2ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21s ICAgICAgICAgfCAgMzQgKy0KIGRvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAgICAg ICAgICB8ICA0MSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAg IHwgIDEzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgfCA1 NDQgKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAg ICAgICAgICAgICAgfCAyOTIgKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbCAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5j ICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAg ICAgICAgICAgfCAzNDcgKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNz LmMgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAg ICAgICAgICAgICAgfCAgMjggKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAg ICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCAgICAgICAg ICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAg fCAgIDQgKy0KIHNyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAgICAgICB8ICAg MyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IHwgIDQyICsr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCAgICAgfCAgIDMgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICB8ICAxNyArLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAgICAgIHwgIDIxICsKIDE5IGZpbGVzIGNo YW5nZWQsIDExMTQgaW5zZXJ0aW9ucygrKSwgMzUwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5z Z21sCmluZGV4IDQyNjVhMjJkNGRlLi44Y2NkNjliMTRjMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBA IC02MzE0LDYgKzYzMTQsMTggQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkgQVMg YmFja2VuZGlkOwogICAgICAgIGluZm9ybWF0aW9uIGZvciB0aGlzIHBoYXNlLgogICAgICAgPC9l bnRyeT4KICAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+d2Fp dGluZyBmb3Igd3JpdGVycyB0byB1c2UgYXV4aWxpYXJ5IGluZGV4PC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRM WTwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlz IHdhaXRpbmcgZm9yIHRyYW5zYWN0aW9ucworICAgICAgIHdpdGggd3JpdGUgbG9ja3MgdGhhdCBj YW4gcG90ZW50aWFsbHkgc2VlIHRoZSB0YWJsZSB0byBmaW5pc2gsIHRvIGVuc3VyZSB1c2Ugb2Yg YXV4aWxpYXJ5IGluZGV4IGZvciBuZXcgdHVwbGVzIGluCisgICAgICAgZnV0dXJlIHRyYW5zYWN0 aW9ucy4KKyAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hlbiBub3QgaW4gY29uY3VycmVu dCBtb2RlLgorICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+bG9ja2Vyc190b3RhbDwvc3RydWN0 bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3RydWN0bmFtZT4KKyAgICAgICBhbmQg PHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1Y3RuYW1lPiBjb250YWluIHRoZSBw cm9ncmVzcworICAgICAgIGluZm9ybWF0aW9uIGZvciB0aGlzIHBoYXNlLgorICAgICAgPC9lbnRy eT4KKyAgICAgPC9yb3c+CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+YnVpbGRp bmcgaW5kZXg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KQEAgLTYzNTQsMTMgKzYz NjYsMTIgQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkgQVMgYmFja2VuZGlkOwog ICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgIDxyb3c+Ci0gICAgICA8ZW50cnk+PGxp dGVyYWw+aW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgdGFibGU8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48bGl0ZXJhbD5pbmRleCB2YWxpZGF0aW9uOiBtZXJnaW5nIGluZGV4ZXM8 L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8Y29tbWFuZD5DUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyBzY2FubmluZyB0aGUgdGFibGUKLSAgICAg ICB0byB2YWxpZGF0ZSB0aGUgaW5kZXggdHVwbGVzIGNvbGxlY3RlZCBpbiB0aGUgcHJldmlvdXMg dHdvIHBoYXNlcy4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9j b21tYW5kPiBtZXJnaW5nIGNvbnRlbnQgb2YgYXV4aWxpYXJ5IGluZGV4IHdpdGggdGhlIHRhcmdl dCBpbmRleC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hlbiBub3QgaW4gY29uY3Vy cmVudCBtb2RlLgotICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+YmxvY2tzX3RvdGFsPC9zdHJ1 Y3RuYW1lPiAoc2V0IHRvIHRoZSB0b3RhbCBzaXplIG9mIHRoZSB0YWJsZSkKLSAgICAgICBhbmQg PHN0cnVjdG5hbWU+YmxvY2tzX2RvbmU8L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhlIHByb2dyZXNz IGluZm9ybWF0aW9uIGZvciB0aGlzIHBoYXNlLgorICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+ dHVwbGVzX3RvdGFsPC9zdHJ1Y3RuYW1lPiAoc2V0IHRvIHRoZSBudW1iZXIgb2YgdHVwbGVzIHRv IGJlIG1lcmdlZCkKKyAgICAgICBhbmQgPHN0cnVjdG5hbWU+dHVwbGVzX2RvbmU8L3N0cnVjdG5h bWU+IGNvbnRhaW4gdGhlIHByb2dyZXNzIGluZm9ybWF0aW9uIGZvciB0aGlzIHBoYXNlLgogICAg ICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgIDxyb3c+CkBAIC02Mzc3LDggKzYzODgsOSBA QCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7CiAgICAgIDxy b3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+d2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFy a2luZyBkZWFkPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+Ci0gICAgICAgPGNvbW1h bmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHdhaXRpbmcgZm9yIHRyYW5zYWN0 aW9ucwotICAgICAgIHdpdGggcmVhZCBsb2NrcyBvbiB0aGUgdGFibGUgdG8gZmluaXNoLCBiZWZv cmUgbWFya2luZyB0aGUgb2xkIGluZGV4IGRlYWQuCisgICAgICAgPGNvbW1hbmQ+Q1JFQVRFIElO REVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zCisg ICAgICAgIHdpdGggcmVhZCBsb2NrcyBvbiB0aGUgdGFibGUgdG8gZmluaXNoLCBiZWZvcmUgbWFy a2luZyB0aGUgYXV4aWxpYXJ5IGluZGV4IGFzIGRlYWQuCisgICAgICAgPGNvbW1hbmQ+UkVJTkRF WCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIGFsc28gd2FpdGluZyBiZWZvcmUgbWFya2luZyB0 aGUgb2xkIGluZGV4IGFzIGRlYWQuCiAgICAgICAgVGhpcyBwaGFzZSBpcyBza2lwcGVkIHdoZW4g bm90IGluIGNvbmN1cnJlbnQgbW9kZS4KICAgICAgICBDb2x1bW5zIDxzdHJ1Y3RuYW1lPmxvY2tl cnNfdG90YWw8L3N0cnVjdG5hbWU+LCA8c3RydWN0bmFtZT5sb2NrZXJzX2RvbmU8L3N0cnVjdG5h bWU+CiAgICAgICAgYW5kIDxzdHJ1Y3RuYW1lPmN1cnJlbnRfbG9ja2VyX3BpZDwvc3RydWN0bmFt ZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3MKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX2luZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCmluZGV4 IDE0N2E4Zjc1ODdjLi5lN2E3YTE2MDc0MiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21s CkBAIC02MjAsMTAgKzYyMCwxMCBAQCBDUkVBVEUgWyBVTklRVUUgXSBJTkRFWCBbIENPTkNVUlJF TlRMWSBdIFsgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPQogICAgIG91dCB3 cml0ZXMuICBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHNwZWNpZnlpbmcgdGhlCiAgICAgPGxp dGVyYWw+Q09OQ1VSUkVOVExZPC9saXRlcmFsPiBvcHRpb24gb2YgPGNvbW1hbmQ+Q1JFQVRFIElO REVYPC9jb21tYW5kPi4KICAgICBXaGVuIHRoaXMgb3B0aW9uIGlzIHVzZWQsCi0gICAgPHByb2R1 Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBtdXN0IHBlcmZvcm0gdHdvIHNjYW5zIG9m IHRoZSB0YWJsZSwgYW5kIGluCi0gICAgYWRkaXRpb24gaXQgbXVzdCB3YWl0IGZvciBhbGwgZXhp c3RpbmcgdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgcG90ZW50aWFsbHkKLSAgICBtb2RpZnkgb3Ig dXNlIHRoZSBpbmRleCB0byB0ZXJtaW5hdGUuICBUaHVzCi0gICAgdGhpcyBtZXRob2QgcmVxdWly ZXMgbW9yZSB0b3RhbCB3b3JrIHRoYW4gYSBzdGFuZGFyZCBpbmRleCBidWlsZCBhbmQgdGFrZXMK KyAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0 YWJsZSBzY2FuIGZvbGxvd2VkIGJ5CisgICAgdmFsaWRhdGlvbiBwaGFzZSwgYW5kIGluIGFkZGl0 aW9uIGl0IG11c3Qgd2FpdCBmb3IgYWxsIGV4aXN0aW5nIHRyYW5zYWN0aW9ucworICAgIHRoYXQg Y291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IG9yIHVzZSB0aGUgaW5kZXggdG8gdGVybWluYXRlLiAg VGh1cworICAgIHRoaXMgbWV0aG9kIHJlcXVpcmVzIG1vcmUgdG90YWwgd29yayB0aGFuIGEgc3Rh bmRhcmQgaW5kZXggYnVpbGQgYW5kIG1heSB0YWtlCiAgICAgc2lnbmlmaWNhbnRseSBsb25nZXIg dG8gY29tcGxldGUuICBIb3dldmVyLCBzaW5jZSBpdCBhbGxvd3Mgbm9ybWFsCiAgICAgb3BlcmF0 aW9ucyB0byBjb250aW51ZSB3aGlsZSB0aGUgaW5kZXggaXMgYnVpbHQsIHRoaXMgbWV0aG9kIGlz IHVzZWZ1bCBmb3IKICAgICBhZGRpbmcgbmV3IGluZGV4ZXMgaW4gYSBwcm9kdWN0aW9uIGVudmly b25tZW50LiAgT2YgY291cnNlLCB0aGUgZXh0cmEgQ1BVCkBAIC02MzEsMTQgKzYzMSwxNCBAQCBD UkVBVEUgWyBVTklRVUUgXSBJTkRFWCBbIENPTkNVUlJFTlRMWSBdIFsgWyBJRiBOT1QgRVhJU1RT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPQogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBJbiBh IGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsIHRoZSBpbmRleCBpcyBhY3R1YWxseSBlbnRlcmVkIGFz IGFuCi0gICAgPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBpbmRleCBpbnRvCi0gICAgdGhlIHN5c3Rl bSBjYXRhbG9ncyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdvIHRhYmxlIHNjYW5zIG9jY3Vy IGluCi0gICAgdHdvIG1vcmUgdHJhbnNhY3Rpb25zLiAgQmVmb3JlIGVhY2ggdGFibGUgc2Nhbiwg dGhlIGluZGV4IGJ1aWxkIG11c3QKKyAgICBJbiBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsIHRo ZSBtYWluIGFuZCBhdXhpbGlhcnkgaW5kZXhlcyBpcyBhY3R1YWxseQorICAgIGVudGVyZWQgYXMg YW4gPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBpbmRleCBpbnRvCisgICAgdGhlIHN5c3RlbSBjYXRh bG9ncyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdvIHBoYXNlcyBvY2N1ciBpbgorICAgIG11 bHRpcGxlIHRyYW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHBoYXNlLCB0aGUgaW5kZXggYnVpbGQg bXVzdAogICAgIHdhaXQgZm9yIGV4aXN0aW5nIHRyYW5zYWN0aW9ucyB0aGF0IGhhdmUgbW9kaWZp ZWQgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4KLSAgICBBZnRlciB0aGUgc2Vjb25kIHNjYW4sIHRo ZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0cmFuc2FjdGlvbnMKKyAgICBBZnRlciB0 aGUgc2Vjb25kIHBoYXNlLCB0aGUgaW5kZXggYnVpbGQgbXVzdCB3YWl0IGZvciBhbnkgdHJhbnNh Y3Rpb25zCiAgICAgdGhhdCBoYXZlIGEgc25hcHNob3QgKHNlZSA8eHJlZiBsaW5rZW5kPSJtdmNj Ii8+KSBwcmVkYXRpbmcgdGhlIHNlY29uZAotICAgIHNjYW4gdG8gdGVybWluYXRlLCBpbmNsdWRp bmcgdHJhbnNhY3Rpb25zIHVzZWQgYnkgYW55IHBoYXNlIG9mIGNvbmN1cnJlbnQKKyAgICBwaGFz ZSB0byB0ZXJtaW5hdGUsIGluY2x1ZGluZyB0cmFuc2FjdGlvbnMgdXNlZCBieSBhbnkgcGhhc2Ug b2YgY29uY3VycmVudAogICAgIGluZGV4IGJ1aWxkcyBvbiBvdGhlciB0YWJsZXMsIGlmIHRoZSBp bmRleGVzIGludm9sdmVkIGFyZSBwYXJ0aWFsIG9yIGhhdmUKICAgICBjb2x1bW5zIHRoYXQgYXJl IG5vdCBzaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMuCiAgICAgVGhlbiBmaW5hbGx5IHRoZSBpbmRl eCBjYW4gYmUgbWFya2VkIDxxdW90ZT52YWxpZDwvcXVvdGU+IGFuZCByZWFkeSBmb3IgdXNlLApA QCAtNjUxLDEwICs2NTEsMTEgQEAgQ1JFQVRFIFsgVU5JUVVFIF0gSU5ERVggWyBDT05DVVJSRU5U TFkgXSBbIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0KICAgIDxwYXJhPgog ICAgIElmIGEgcHJvYmxlbSBhcmlzZXMgd2hpbGUgc2Nhbm5pbmcgdGhlIHRhYmxlLCBzdWNoIGFz IGEgZGVhZGxvY2sgb3IgYQogICAgIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGluIGEgdW5pcXVlIGlu ZGV4LCB0aGUgPGNvbW1hbmQ+Q1JFQVRFIElOREVYPC9jb21tYW5kPgotICAgIGNvbW1hbmQgd2ls bCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBpbmRleC4g VGhpcyBpbmRleAotICAgIHdpbGwgYmUgaWdub3JlZCBmb3IgcXVlcnlpbmcgcHVycG9zZXMgYmVj YXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOwotICAgIGhvd2V2ZXIgaXQgd2lsbCBzdGlsbCBj b25zdW1lIHVwZGF0ZSBvdmVyaGVhZC4gVGhlIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlv bj4KLSAgICA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29tbWFuZCB3aWxsIHJlcG9ydCBzdWNoIGFu IGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+OgorICAgIGNvbW1hbmQgd2lsbCBm YWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBpbmRleCBhbmQg aXRzCisgICAgYXNzb2NpYXRlZCBhdXhpbGlhcnkgaW5kZXguIFRoZXNlIGluZGV4ZXMKKyAgICB3 aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1cnBvc2VzIGJlY2F1c2UgdGhleSBtaWdodCBi ZSBpbmNvbXBsZXRlOworICAgIGhvd2V2ZXIgdGhleSB3aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRl IG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPgorICAgIDxjb21t YW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0IHN1Y2ggaW5kZXhlcyBhcyA8bGl0 ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKIAogPHByb2dyYW1saXN0aW5nPgogcG9zdGdyZXM9IyBc ZCB0YWIKQEAgLTY2NCwxMSArNjY1LDEyIEBAIHBvc3RncmVzPSMgXGQgdGFiCiAgY29sICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwKIEluZGV4ZXM6CiAgICAgImlkeCIgYnRy ZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0aXIgKGNvbCkgSU5WQUxJRAogPC9w cm9ncmFtbGlzdGluZz4KIAogICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeQotICAgIG1ldGhv ZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlIGluZGV4IGFuZCB0cnkgYWdhaW4gdG8gcGVy Zm9ybQotICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+LiAg KEFub3RoZXIgcG9zc2liaWxpdHkgaXMKKyAgICBtZXRob2QgaW4gc3VjaCBjYXNlcyBpcyB0byBk cm9wIHRoZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBwZXJmb3JtCisgICAgPGNvbW1hbmQ+ Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uIChBbm90aGVyIHBvc3NpYmlsaXR5 IGlzCiAgICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8Y29tbWFuZD5SRUlOREVYIElOREVY IENPTkNVUlJFTlRMWTwvY29tbWFuZD4pLgogICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21s CmluZGV4IGM0MDU1Mzk3MTQ2Li40ZWQzYzk2OTAxMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAg LTM2OCw5ICszNjgsOCBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogICAgIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gc3VwcG9ydHMgcmVidWlsZGluZyBpbmRleGVzIHdp dGggbWluaW11bSBsb2NraW5nCiAgICAgb2Ygd3JpdGVzLiAgVGhpcyBtZXRob2QgaXMgaW52b2tl ZCBieSBzcGVjaWZ5aW5nIHRoZQogICAgIDxsaXRlcmFsPkNPTkNVUlJFTlRMWTwvbGl0ZXJhbD4g b3B0aW9uIG9mIDxjb21tYW5kPlJFSU5ERVg8L2NvbW1hbmQ+LiBXaGVuIHRoaXMgb3B0aW9uCi0g ICAgaXMgdXNlZCwgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBtdXN0IHBl cmZvcm0gdHdvIHNjYW5zIG9mIHRoZSB0YWJsZQotICAgIGZvciBlYWNoIGluZGV4IHRoYXQgbmVl ZHMgdG8gYmUgcmVidWlsdCBhbmQgd2FpdCBmb3IgdGVybWluYXRpb24gb2YKLSAgICBhbGwgZXhp c3RpbmcgdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgcG90ZW50aWFsbHkgdXNlIHRoZSBpbmRleC4K KyAgICBpcyB1c2VkLCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3Qg cGVyZm9ybSBzZXZlcmFsIHN0ZXBzIHRvIGVuc3VyZSBkYXRhCisgICAgY29uc2lzdGVuY3kgd2hp bGUgYWxsb3dpbmcgbm9ybWFsIG9wZXJhdGlvbnMgdG8gY29udGludWUuCiAgICAgVGhpcyBtZXRo b2QgcmVxdWlyZXMgbW9yZSB0b3RhbCB3b3JrIHRoYW4gYSBzdGFuZGFyZCBpbmRleAogICAgIHJl YnVpbGQgYW5kIHRha2VzIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRvIGNvbXBsZXRlIGFzIGl0IG5l ZWRzIHRvIHdhaXQKICAgICBmb3IgdW5maW5pc2hlZCB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBt b2RpZnkgdGhlIGluZGV4LiBIb3dldmVyLCBzaW5jZQpAQCAtMzg4LDcgKzM4Nyw3IEBAIFJFSU5E RVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxl PiBbLCAuLi5dICkgXSB7IERBCiAgICAgPG9yZGVyZWRsaXN0PgogICAgICA8bGlzdGl0ZW0+CiAg ICAgICA8cGFyYT4KLSAgICAgICBBIG5ldyB0cmFuc2llbnQgaW5kZXggZGVmaW5pdGlvbiBpcyBh ZGRlZCB0byB0aGUgY2F0YWxvZworICAgICAgIEEgbmV3IHRyYW5zaWVudCBpbmRleCBkZWZpbml0 aW9uIGFuZCBhbiBhdXhpbGlhcnkgaW5kZXggYXJlIGFkZGVkIHRvIHRoZSBjYXRhbG9nCiAgICAg ICAgPGxpdGVyYWw+cGdfaW5kZXg8L2xpdGVyYWw+LiAgVGhpcyBkZWZpbml0aW9uIHdpbGwgYmUg dXNlZCB0byByZXBsYWNlCiAgICAgICAgdGhlIG9sZCBpbmRleC4gIEEgPGxpdGVyYWw+U0hBUkUg VVBEQVRFIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBhdAogICAgICAgIHNlc3Npb24gbGV2ZWwg aXMgdGFrZW4gb24gdGhlIGluZGV4ZXMgYmVpbmcgcmVpbmRleGVkIGFzIHdlbGwgYXMgdGhlaXIK QEAgLTM5OCw3ICszOTcsMTUgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKIAogICAgICA8bGlz dGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIGZpcnN0IHBhc3MgdG8gYnVpbGQgdGhlIGlu ZGV4IGlzIGRvbmUgZm9yIGVhY2ggbmV3IGluZGV4LiAgT25jZSB0aGUKKyAgICAgICBUaGUgYXV4 aWxpYXJ5IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkgZm9yIGluc2VydHMiLCBtYWtpbmcKKyAg ICAgICBpdCB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zLiBUaGlzIGluZGV4IGVmZmljaWVudGx5 IHRyYWNrcyBhbGwgbmV3CisgICAgICAgdHVwbGVzIGR1cmluZyB0aGUgcmVpbmRleCBwcm9jZXNz LgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorCisgICAgIDxsaXN0aXRlbT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFRoZSBuZXcgbWFpbiBpbmRleCBpcyBidWlsdCBieSBzY2Fubmlu ZyB0aGUgdGFibGUuICBPbmNlIHRoZQogICAgICAgIGluZGV4IGlzIGJ1aWx0LCBpdHMgZmxhZyA8 bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5PC9saXRlcmFsPiBpcwogICAgICAgIHN3aXRjaGVk IHRvIDxxdW90ZT50cnVlPC9xdW90ZT4gdG8gbWFrZSBpdCByZWFkeSBmb3IgaW5zZXJ0cywgbWFr aW5nIGl0CiAgICAgICAgdmlzaWJsZSB0byBvdGhlciBzZXNzaW9ucyBvbmNlIHRoZSB0cmFuc2Fj dGlvbiB0aGF0IHBlcmZvcm1lZCB0aGUgYnVpbGQKQEAgLTQwOSw5ICs0MTYsOSBAQCBSRUlOREVY IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4g WywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAg IFRoZW4gYSBzZWNvbmQgcGFzcyBpcyBwZXJmb3JtZWQgdG8gYWRkIHR1cGxlcyB0aGF0IHdlcmUg YWRkZWQgd2hpbGUgdGhlCi0gICAgICAgZmlyc3QgcGFzcyB3YXMgcnVubmluZy4gIFRoaXMgc3Rl cCBpcyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZQotICAgICAgIHRyYW5zYWN0aW9uIGZvciBlYWNo IGluZGV4LgorICAgICAgIEEgdmFsaWRhdGlvbiBwaGFzZSBtZXJnZXMgYW55IG1pc3NpbmcgZW50 cmllcyBmcm9tIHRoZSBhdXhpbGlhcnkgaW5kZXgKKyAgICAgICBpbnRvIHRoZSBtYWluIGluZGV4 LCBlbnN1cmluZyBhbGwgY29uY3VycmVudCBjaGFuZ2VzIGFyZSBjYXB0dXJlZC4KKyAgICAgICBU aGlzIHN0ZXAgaXMgYWxzbyBkb25lIGluIGEgc2VwYXJhdGUgdHJhbnNhY3Rpb24gZm9yIGVhY2gg aW5kZXguCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAKQEAgLTQyOCw3ICs0MzUs NyBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxw YXJhPgotICAgICAgIFRoZSBvbGQgaW5kZXhlcyBoYXZlIDxsaXRlcmFsPnBnX2luZGV4LmluZGlz cmVhZHk8L2xpdGVyYWw+IHN3aXRjaGVkIHRvCisgICAgICAgVGhlIG9sZCBhbmQgYXV4aWxpYXJ5 IGluZGV4ZXMgaGF2ZSA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5PC9saXRlcmFsPiBzd2l0 Y2hlZCB0bwogICAgICAgIDxxdW90ZT5mYWxzZTwvcXVvdGU+IHRvIHByZXZlbnQgYW55IG5ldyB0 dXBsZSBpbnNlcnRpb25zLCBhZnRlciB3YWl0aW5nCiAgICAgICAgZm9yIHJ1bm5pbmcgcXVlcmll cyB0aGF0IG1pZ2h0IHJlZmVyZW5jZSB0aGUgb2xkIGluZGV4IHRvIGNvbXBsZXRlLgogICAgICAg PC9wYXJhPgpAQCAtNDM2LDcgKzQ0Myw3IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAKICAg ICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhlIG9sZCBpbmRleGVzIGFyZSBk cm9wcGVkLiAgVGhlIDxsaXRlcmFsPlNIQVJFIFVQREFURQorICAgICAgIFRoZSBvbGQgYW5kIGF1 eGlsaWFyeSBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRlcmFsPlNIQVJFIFVQREFURQog ICAgICAgIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gc2Vzc2lvbiBsb2NrcyBmb3IgdGhlIGluZGV4ZXMg YW5kIHRoZSB0YWJsZSBhcmUKICAgICAgICByZWxlYXNlZC4KICAgICAgIDwvcGFyYT4KQEAgLTQ0 NywxMSArNDU0LDExIEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICA8cGFyYT4KICAgICBJ ZiBhIHByb2JsZW0gYXJpc2VzIHdoaWxlIHJlYnVpbGRpbmcgdGhlIGluZGV4ZXMsIHN1Y2ggYXMg YQogICAgIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGluIGEgdW5pcXVlIGluZGV4LCB0aGUgPGNvbW1h bmQ+UkVJTkRFWDwvY29tbWFuZD4KLSAgICBjb21tYW5kIHdpbGwgZmFpbCBidXQgbGVhdmUgYmVo aW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4IGluIGFkZGl0aW9uIHRvCi0g ICAgdGhlIHByZS1leGlzdGluZyBvbmUuIFRoaXMgaW5kZXggd2lsbCBiZSBpZ25vcmVkIGZvciBx dWVyeWluZyBwdXJwb3NlcwotICAgIGJlY2F1c2UgaXQgbWlnaHQgYmUgaW5jb21wbGV0ZTsgaG93 ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRlCisgICAgY29tbWFuZCB3aWxsIGZhaWwg YnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IG5ldyBpbmRleCBhbmQg aXRzIGF1eGlsaWFyeSBpbmRleCBpbiBhZGRpdGlvbiB0bworICAgIHRoZSBwcmUtZXhpc3Rpbmcg b25lLiBUaGVzZSBpbmRleGVzIHdpbGwgYmUgaWdub3JlZCBmb3IgcXVlcnlpbmcgcHVycG9zZXMK KyAgICBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgaW5jb21wbGV0ZTsgaG93ZXZlciB0aGV5IHdpbGwg c3RpbGwgY29uc3VtZSB1cGRhdGUKICAgICBvdmVyaGVhZC4gVGhlIDxhcHBsaWNhdGlvbj5wc3Fs PC9hcHBsaWNhdGlvbj4gPGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+IGNvbW1hbmQgd2lsbCByZXBvcnQK LSAgICBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+OgorICAgIHN1 Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKIAogPHByb2dyYW1saXN0 aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTQ2MiwxMiArNDY5LDE0IEBAIHBvc3RncmVzPSMg XGQgdGFiCiBJbmRleGVzOgogICAgICJpZHgiIGJ0cmVlIChjb2wpCiAgICAgImlkeF9jY25ldyIg YnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0aXIgKGNvbCkgSU5WQUxJRAor CiA8L3Byb2dyYW1saXN0aW5nPgogCiAgICAgSWYgdGhlIGluZGV4IG1hcmtlZCA8bGl0ZXJhbD5J TlZBTElEPC9saXRlcmFsPiBpcyBzdWZmaXhlZAotICAgIDxsaXRlcmFsPl9jY25ldzwvbGl0ZXJh bD4sIHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5zaWVudAorICAgIDxsaXRlcmFsPl9j Y25ldzwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+X2NjYXV4PC9saXRlcmFsPiwgdGhlbiBpdCBjb3Jy ZXNwb25kcyB0byB0aGUgdHJhbnNpZW50IG9yIGF1eGlsaWFyeQogICAgIGluZGV4IGNyZWF0ZWQg ZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbiwgYW5kIHRoZSByZWNvbW1lbmRlZAotICAg IHJlY292ZXJ5IG1ldGhvZCBpcyB0byBkcm9wIGl0IHVzaW5nIDxsaXRlcmFsPkRST1AgSU5ERVg8 L2xpdGVyYWw+LAorICAgIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBkcm9wIHRoZXNlIGluZGV4ZXMg dXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCiAgICAgdGhlbiBhdHRlbXB0IDxj b21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBhZ2Fpbi4KICAgICBJZiB0aGUg aW52YWxpZCBpbmRleCBpcyBpbnN0ZWFkIHN1ZmZpeGVkIDxsaXRlcmFsPl9jY29sZDwvbGl0ZXJh bD4sCiAgICAgaXQgY29ycmVzcG9uZHMgdG8gdGhlIG9yaWdpbmFsIGluZGV4IHdoaWNoIGNvdWxk IG5vdCBiZSBkcm9wcGVkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVB RE1FLkhPVCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRlNDA3 ZjM3NWEuLjI4ZTJhMTYwNGM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9S RUFETUUuSE9UCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM3 NSw2ICszNzUsMTEgQEAgY29uc3RyYWludCBvbiB3aGljaCB1cGRhdGVzIGNhbiBiZSBIT1QuICBP dGhlciB0cmFuc2FjdGlvbnMgbXVzdCBpbmNsdWRlCiBzdWNoIGFuIGluZGV4IHdoZW4gZGV0ZXJt aW5pbmcgSE9ULXNhZmV0eSBvZiB1cGRhdGVzLCBldmVuIHRob3VnaCB0aGV5CiBtdXN0IGlnbm9y ZSBpdCBmb3IgYm90aCBpbnNlcnRpb24gYW5kIHNlYXJjaGluZyBwdXJwb3Nlcy4KIAorQWxzbywg c3BlY2lhbCBhdXhpbGlhcnkgaW5kZXggaXMgY3JlYXRlZCB0aGUgc2FtZSB3YXkuIEl0IG1hcmtl ZCBhcworInJlYWR5IGZvciBpbnNlcnRzIiB3aXRob3V0IGFueSBhY3R1YWwgdGFibGUgc2Nhbi4g SXRzIHB1cnBvc2UgaXMgY29sbGVjdAorbmV3IHR1cGxlcyBpbnNlcnRlZCBpbnRvIHRhYmxlIHdo aWxlIG91ciB0YXJnZXQgaW5kZXggaXMgc3RpbGwgIm5vdCByZWFkeQorZm9yIGluc2VydHMiCisK IFdlIG11c3QgZG8gdGhpcyB0byBhdm9pZCBtYWtpbmcgaW5jb3JyZWN0IGluZGV4IGVudHJpZXMu ICBGb3IgZXhhbXBsZSwKIHN1cHBvc2Ugd2UgYXJlIGJ1aWxkaW5nIGFuIGluZGV4IG9uIGNvbHVt biBYIGFuZCB3ZSBtYWtlIGFuIGluZGV4IGVudHJ5IGZvcgogYSBub24tSE9UIHR1cGxlIHdpdGgg WD0xLiAgVGhlbiBzb21lIG90aGVyIGJhY2tlbmQsIHVuYXdhcmUgdGhhdCBYIGlzIGFuCkBAIC0z OTQsMTAgKzM5OSwxMCBAQCBlbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFp biBidXQgd2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKIGxpdmUgdHVwbGUuCiAKIFdlIG1h cmsgdGhlIGluZGV4IG9wZW4gZm9yIGluc2VydHMgKGJ1dCBzdGlsbCBub3QgcmVhZHkgZm9yIHJl YWRzKSB0aGVuCi13ZSBhZ2FpbiB3YWl0IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGF2ZSB0aGUg dGFibGUgb3Blbi4gIFRoZW4gd2UgdGFrZQotYSBzZWNvbmQgcmVmZXJlbmNlIHNuYXBzaG90IGFu ZCB2YWxpZGF0ZSB0aGUgaW5kZXguICBUaGlzIHNlYXJjaGVzIGZvcgotdHVwbGVzIG1pc3Npbmcg ZnJvbSB0aGUgaW5kZXgsIGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9uZXMuICBBZ2FpbiwKLXRo ZSBpbmRleCBlbnRyaWVzIGhhdmUgdG8gaGF2ZSBUSURzIGVxdWFsIHRvIEhPVC1jaGFpbiByb290 IFRJRHMsIGJ1dAord2UgYWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgdGhl IHRhYmxlIG9wZW4uICBUaGVuIHZhbGlkYXRlCit0aGUgaW5kZXguICBUaGlzIHNlYXJjaGVzIGZv ciB0dXBsZXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCBpbiBhdXhpbGlhcnkKK2luZGV4LCBhbmQg aW5zZXJ0cyBhbnkgbWlzc2luZyBvbmVzIGlmIHRoZW0gdmlzaWJsZSB0byByZWZlcmVuY2Ugc25h cHNob3QuCitBZ2FpbiwgdGhlIGluZGV4IGVudHJpZXMgaGF2ZSB0byBoYXZlIFRJRHMgZXF1YWwg dG8gSE9ULWNoYWluIHJvb3QgVElEcywgYnV0CiB0aGUgdmFsdWUgdG8gYmUgaW5zZXJ0ZWQgaXMg dGhlIG9uZSBmcm9tIHRoZSBsaXZlIHR1cGxlLgogCiBUaGVuIHdlIHdhaXQgdW50aWwgZXZlcnkg dHJhbnNhY3Rpb24gdGhhdCBjb3VsZCBoYXZlIGEgc25hcHNob3Qgb2xkZXIgdGhhbgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYWMwODJmZWZhNzcuLjg4N2Ey NDU1YzQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTQx LDYgKzQxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKICNpbmNsdWRlICJzdG9y YWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTE3NDMsMjQy ICsxNzQ0LDQwNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJcmV0dXJuIHJlbHR1cGxlczsKIH0KIAorLyoKKyAqIENhbGN1bGF0ZSBzZXQg ZGlmZmVyZW5jZSAocmVsYXRpdmUgY29tcGxlbWVudCkgb2YgbWFpbiBhbmQgYXV4CisgKiBzZXRz LgorICoKKyAqIEFsbCByZWNvcmRzIHdoaWNoIGFyZSBwcmVzZW50IGluIGF1eGxpYXJ5IHR1cGxl c29ydCBidXQgbm90IGlzCisgKiBtYWluIGFyZSBhZGRlZCB0byB0aGUgc3RvcmUuCisgKgorICog SW4gc2V0IHRoZW9yeSBub3RhdGlvbiBzdG9yZSA9IGF1eCAtIG1haW4gb3Igc3RvcmUgPSBhdXgg LyBtYWluLgorICoKKyAqIHJldHVybnMgbnVtYmVyIG9mIGl0ZW1zIGFkZGVkIHRvIHN0b3JlCisg Ki8KK3N0YXRpYyBpbnQKK2hlYXBhbV9pbmRleF92YWxpZGF0ZV90dXBsZXNvcnRfZGlmZmVyZW5j ZShUdXBsZXNvcnRzdGF0ZSAgKm1haW4sCisJCQkJCQkJCQkJICAgVHVwbGVzb3J0c3RhdGUgICph dXgsCisJCQkJCQkJCQkJICAgVHVwbGVzdG9yZXN0YXRlICpzdG9yZSkKK3sKKwlpbnQJCQkJbnVt ID0gMDsKKwkvKiBzdGF0ZSB2YXJpYWJsZXMgZm9yIHRoZSBtZXJnZSAqLworCUl0ZW1Qb2ludGVy IAlpbmRleGN1cnNvciA9IE5VTEwsCisJCQkJCWF1eGluZGV4Y3Vyc29yID0gTlVMTDsKKwlJdGVt UG9pbnRlckRhdGEgZGVjb2RlZCwKKwkJCQkJYXV4ZGVjb2RlZDsKKwlib29sCQkJdHVwbGVzb3J0 X2VtcHR5ID0gZmFsc2UsCisJCQkJCWF1eHR1cGxlc29ydF9lbXB0eSA9IGZhbHNlOworCisJLyog SW5pdGlhbGl6ZSBwb2ludGVycy4gKi8KKwlJdGVtUG9pbnRlclNldEludmFsaWQoJmRlY29kZWQp OworCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmYXV4ZGVjb2RlZCk7CisKKwkvKgorCSAqIE1haW4g bG9vcDogd2Ugc3RlcCB0aHJvdWdoIHRoZSBhdXhpbGlhcnkgc29ydCAoYXV4U3RhdGUtPnR1cGxl c29ydCksCisJICogd2hpY2ggaG9sZHMgVElEcyB0aGF0IG11c3QgY29tcGFyZWQgdG8gdGhvc2Ug ZnJvbSB0aGUgIm1haW4iIHNvcnQKKwkgKiAoc3RhdGUtPnR1cGxlc29ydCkuCisJICovCisJd2hp bGUgKCFhdXh0dXBsZXNvcnRfZW1wdHkpCisJeworCQlEYXR1bQkJdHNfdmFsOworCQlib29sCQl0 c19pc251bGw7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyoKKwkJKiBBdHRlbXB0 IHRvIGZldGNoIHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBhdXhpbGlhcnkgc29ydC4gSWYgaXQncwor CQkqIGVtcHR5LCB3ZSBzZXQgYXV4aW5kZXhjdXJzb3IgdG8gTlVMTC4KKwkJKi8KKwkJYXV4dHVw bGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1bShhdXgsIHRydWUsCisJCQkJCQkJCQkJ CQkgZmFsc2UsICZ0c192YWwsICZ0c19pc251bGwsCisJCQkJCQkJCQkJCQkgTlVMTCk7CisJCUFz c2VydChhdXh0dXBsZXNvcnRfZW1wdHkgfHwgIXRzX2lzbnVsbCk7CisJCWlmICghYXV4dHVwbGVz b3J0X2VtcHR5KQorCQl7CisJCQlpdGVtcHRyX2RlY29kZSgmYXV4ZGVjb2RlZCwgRGF0dW1HZXRJ bnQ2NCh0c192YWwpKTsKKwkJCWF1eGluZGV4Y3Vyc29yID0gJmF1eGRlY29kZWQ7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQlhdXhpbmRleGN1cnNvciA9IE5VTEw7CisJCX0KKworCQkvKgorCQkqIElm IHRoZSBhdXhpbGlhcnkgc29ydCBpcyBub3QgeWV0IGVtcHR5LCB3ZSBub3cgdHJ5IHRvIHN5bmNo cm9uaXplCisJCSogdGhlICJtYWluIiBzb3J0IGN1cnNvciAoaW5kZXhjdXJzb3IpIHdpdGggYXV4 aW5kZXhjdXJzb3IuIFdlIGFkdmFuY2UKKwkJKiB0aGUgbWFpbiBzb3J0IGN1cnNvciB1bnRpbCB3 ZSd2ZSByZWFjaGVkIG9yIHBhc3NlZCB0aGUgYXV4aWxpYXJ5IFRJRC4KKwkJKi8KKwkJaWYgKCFh dXh0dXBsZXNvcnRfZW1wdHkpCisJCXsKKwkJCS8qCisJCQkgKiBNb3ZlIHRoZSBtYWluIHNvcnQg Zm9yd2FyZCB3aGlsZToKKwkJCSAqICAgKDEpIEl0J3Mgbm90IGV4aGF1c3RlZCAodHVwbGVzb3J0 X2VtcHR5ID09IGZhbHNlKSwgYW5kCisJCQkgKiAgICgyKSBFaXRoZXIgaW5kZXhjdXJzb3IgaXMg TlVMTCAoZmlyc3QgaXRlcmF0aW9uKSBvcgorCQkJICogICAgICAgaW5kZXhjdXJzb3IgPCBhdXhp bmRleGN1cnNvciBpbiBUSUQgb3JkZXIuCisJCQkgKi8KKwkJCXdoaWxlICghdHVwbGVzb3J0X2Vt cHR5ICYmIChpbmRleGN1cnNvciA9PSBOVUxMIHx8IC8qIG51bGwgb24gZmlyc3QgdGltZSBoZXJl ICovCisJCQkJCQlJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsIGF1eGluZGV4Y3Vyc29y KSA8IDApKQorCQkJeworCQkJCS8qCisJCQkJICogR2V0IHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBt YWluIHNvcnQuIElmIGl0J3MgZW1wdHksCisJCQkJICogd2Ugc2V0IGluZGV4Y3Vyc29yIHRvIE5V TEwuCisJCQkJICovCisJCQkJdHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1bSht YWluLCB0cnVlLAorCQkJCQkJCQkJCQkJCSAgZmFsc2UsICZ0c192YWwsICZ0c19pc251bGwsCisJ CQkJCQkJCQkJCQkJICBOVUxMKTsKKwkJCQlBc3NlcnQodHVwbGVzb3J0X2VtcHR5IHx8ICF0c19p c251bGwpOworCisJCQkJaWYgKCF0dXBsZXNvcnRfZW1wdHkpCisJCQkJeworCQkJCQlpdGVtcHRy X2RlY29kZSgmZGVjb2RlZCwgRGF0dW1HZXRJbnQ2NCh0c192YWwpKTsKKwkJCQkJaW5kZXhjdXJz b3IgPSAmZGVjb2RlZDsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJaW5kZXhjdXJzb3Ig PSBOVUxMOworCQkJCX0KKworCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCQl9CisKKwkJ CS8qCisJCQkgKiBOb3csIGlmIGVpdGhlcjoKKwkJCSAqICAtIHRoZSBtYWluIHNvcnQgaXMgZW1w dHksIG9yCisJCQkgKiAgLSBpbmRleGN1cnNvciA+IGF1eGluZGV4Y3Vyc29yLAorCQkJICoKKwkJ CSAqIHRoZW4gYXV4aW5kZXhjdXJzb3IgaWRlbnRpZmllcyBhIFRJRCB0aGF0IGRvZXNuJ3QgYXBw ZWFyIGluCisJCQkgKiB0aGUgbWFpbiBzb3J0LiBXZSBsaWtlbHkgbmVlZCB0byBpbnNlcnQgaXQK KwkJCSAqIGludG8gdGhlIHRhcmdldCBpbmRleCBpZiBpdOKAmXMgdmlzaWJsZSBpbiB0aGUgaGVh cC4KKwkJCSAqLworCQkJaWYgKHR1cGxlc29ydF9lbXB0eSB8fCBJdGVtUG9pbnRlckNvbXBhcmUo aW5kZXhjdXJzb3IsIGF1eGluZGV4Y3Vyc29yKSA+IDApCisJCQl7CisJCQkJdHVwbGVzdG9yZV9w dXRkYXR1bShzdG9yZSwgSW50NjRHZXREYXR1bShpdGVtcHRyX2VuY29kZShhdXhpbmRleGN1cnNv cikpKTsKKwkJCQludW0rKzsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBudW07Cit9CisKK3R5 cGVkZWYgc3RydWN0IFZhbGlkYXRlSW5kZXhTY2FuU3RhdGUKK3sKKwlUdXBsZXN0b3Jlc3RhdGUJ CSpzdG9yZTsKKwlCbG9ja051bWJlcgkJCXByZXZfYmxvY2tfbnVtYmVyOworCU9mZnNldE51bWJl cgkJcHJldl9vZmZfb2Zmc2V0X251bWJlcjsKK30gVmFsaWRhdGVJbmRleFNjYW5TdGF0ZTsKKwor LyoKKyAqIFRoaXMgaXMgUmVhZFN0cmVhbUJsb2NrTnVtYmVyQ0IgaW1wbGVtZW50YXRpb24gd2hp Y2ggd29ya3MgYXMgZm9sbG93czoKKyAqCisgKiAxKSBJdCBpdGVyYXRlcyBvdmVyIGEgc29ydGVk IHR1cGxlc3RvcmUsIHdoZXJlIGVhY2ggZWxlbWVudCBpcyBhbiBlbmNvZGVkCisgKiAgICBJdGVt UG9pbnRlcgorICoKKyAqIDIpIEl0IHJldHVybnMgdGhlIGN1cnJlbnQgQmxvY2tOdW1iZXIgYW5k IGNvbGxlY3RzIGFsbCBPZmZzZXROdW1iZXJzCisgKiAgICBmb3IgdGhhdCBibG9jayBpbiBwZXJf YnVmZmVyX2RhdGEuCisgKgorICogMykgT25jZSB0aGUgY29kZSBlbmNvdW50ZXJzIGEgbmV3IEJs b2NrTnVtYmVyLCBpdCBzdG9wcyByZWFkaW5nIG1vcmUKKyAqICAgIG9mZnNldHMgYW5kIHNhdmVz IHRoZSBPZmZzZXROdW1iZXIgb2YgdGhlIG5ldyBibG9jayBmb3IgdGhlIG5leHQgY2FsbC4KKyAq CisgKiA0KSBUaGUgbGlzdCBvZiBvZmZzZXRzIGZvciBhIGJsb2NrIGlzIGFsd2F5cyB0ZXJtaW5h dGVkIHdpdGggSW52YWxpZE9mZnNldE51bWJlci4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGlu dGVuZGVkIHRvIGJlIHJlcGVhdGVkbHkgY2FsbGVkLCBlYWNoIHRpbWUgcmV0dXJuaW5nCisgKiB0 aGUgbmV4dCBibG9jayBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgc2V0IG9mIG9mZnNldHMuCisgKi8K K3N0YXRpYyBCbG9ja051bWJlcgoraGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fcmVhZF9zdHJl YW1fbmV4dCgKKwkJCQkJCQkJICBSZWFkU3RyZWFtICpzdHJlYW0sCisJCQkJCQkJCSAgdm9pZCAq dm9pZF9jYWxsYmFja19wcml2YXRlX2RhdGEsCisJCQkJCQkJCSAgdm9pZCAqdm9pZF9wZXJfYnVm ZmVyX2RhdGEKKwkJCQkJCQkJICApCit7CisJYm9vbCBzaG91ZF9mcmVlOworCURhdHVtIGRhdHVt OworCUJsb2NrTnVtYmVyIHJlc3VsdCA9IEludmFsaWRCbG9ja051bWJlcjsKKwlpbnQgaSA9IDA7 CisKKwkvKgorCSAqIFJldHJpZXZlIHRoZSBzcGVjaWFsaXplZCBjYWxsYmFjayBzdGF0ZSBhbmQg dGhlIG91dHB1dCBidWZmZXIuCisJICogY2FsbGJhY2tfcHJpdmF0ZV9kYXRhIGtlZXBzIHRyYWNr IG9mIHRoZSBwcmV2aW91cyBibG9jayBhbmQgb2Zmc2V0CisJICogZnJvbSBhIHByaW9yIGludm9j YXRpb24sIGlmIGFueS4KKwkgKi8KKwlWYWxpZGF0ZUluZGV4U2NhblN0YXRlICpjYWxsYmFja19w cml2YXRlX2RhdGEgPSB2b2lkX2NhbGxiYWNrX3ByaXZhdGVfZGF0YTsKKwlPZmZzZXROdW1iZXIg KnBlcl9idWZmZXJfZGF0YSA9IHZvaWRfcGVyX2J1ZmZlcl9kYXRhOworCisJLyoKKwkgKiBJZiB0 aGVyZSBpcyBhICJsZWZ0b3ZlciIgb2Zmc2V0IG51bWJlciBmcm9tIHRoZSBwcmV2aW91cyBpbnZv Y2F0aW9uLAorCSAqIGl0IG1lYW5zIHdlIGhhZCBzd2l0Y2hlZCB0byBhIG5ldyBibG9jayBpbiB0 aGUgbWlkZGxlIG9mIHRoZSBsYXN0IGNhbGwuCisJICogV2UgcGxhY2UgdGhhdCBsZWZ0b3ZlciBv ZmZzZXQgbnVtYmVyIGludG8gdGhlIGJ1ZmZlciBmaXJzdC4KKwkgKi8KKwlpZiAoY2FsbGJhY2tf cHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZzZXRfbnVtYmVyICE9IEludmFsaWRPZmZzZXROdW1i ZXIpCisJeworCQlBc3NlcnQoY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJl ciAhPSBJbnZhbGlkQmxvY2tOdW1iZXIpOworCQkvKgorCQkgKiAncmVzdWx0JyBpcyB0aGUgYmxv Y2sgbnVtYmVyIHRvIHJldHVybi4gV2Ugc2V0IGl0IHRvIHRoZSBibG9jaworCQkgKiBmcm9tIHRo ZSBwcmV2aW91cyBsZWZ0b3ZlciBvZmZzZXQuCisJCSAqLworCQlyZXN1bHQgPSBjYWxsYmFja19w cml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyOworCQkvKiBQbGFjZSBsZWZ0b3ZlciBvZmZz ZXQgbnVtYmVyIGluIHRoZSBvdXRwdXQgYnVmZmVyLiAqLworCQlwZXJfYnVmZmVyX2RhdGFbaSsr XSA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251bWJlcjsKKwkJLyoK KwkJICogQ2xlYXIgdGhlIGxlZnRvdmVyIG9mZnNldCBudW1iZXIgc28gaXQgd29uJ3QgYmUgcmV1 c2VkIHVubGVzcworCQkgKiB3ZSBlbmNvdW50ZXIgYW5vdGhlciBibG9jayBjaGFuZ2UuCisJCSAq LworCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9udW1iZXIgPSBJbnZh bGlkT2Zmc2V0TnVtYmVyOworCX0KKworCS8qCisJICogUmVhZCBmcm9tIHRoZSB0dXBsZXN0b3Jl IHVudGlsIHdlIGVpdGhlciBydW4gb3V0IG9mIHR1cGxlcyBvciB3ZQorCSAqIGVuY291bnRlciBh IGJsb2NrIGNoYW5nZS4gRm9yIGVhY2ggdHVwbGU6CisJICoKKwkgKiAgIDEpIERlY29kZSBpdHMg YmxvY2svb2Zmc2V0IGZyb20gdGhlIERhdHVtLgorCSAqICAgMikgSWYgaXQncyB0aGUgZmlyc3Qg dGltZSBpbiB0aGlzIGNhbGwgKHByZXZfYmxvY2tfbnVtYmVyID09IEludmFsaWRCbG9ja051bWJl ciksCisJICogICAgICBpbml0aWFsaXplIHByZXZfYmxvY2tfbnVtYmVyLgorCSAqICAgMykgSWYg dGhlIGJsb2NrIG51bWJlciBtYXRjaGVzIHRoZSBjdXJyZW50IGJsb2NrLCBjb2xsZWN0IHRoZSBv ZmZzZXQuCisJICogICA0KSBJZiB0aGUgYmxvY2sgbnVtYmVyIGRpZmZlcnMsIHNhdmUgdGhhdCBv ZmZzZXQgYXMgbGVmdG92ZXIgYW5kIGJyZWFrCisJICogICAgICBzbyB0aGF0IHRoZSBuZXh0IGNh bGwgY2FuIGhhbmRsZSB0aGUgbmV3IGJsb2NrLgorCSAqLworCXdoaWxlICh0dXBsZXN0b3JlX2dl dGRhdHVtKGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+c3RvcmUsIHRydWUsICZzaG91ZF9mcmVlLCAm ZGF0dW0pKQorCXsKKwkJQmxvY2tOdW1iZXIgbmV4dF9ibG9ja19udW1iZXI7CisJCUl0ZW1Qb2lu dGVyRGF0YSBuZXh0X2RhdGE7CisKKwkJLyogRGVjb2RlIHRoZSBkYXR1bSBpbnRvIGFuIEl0ZW1Q b2ludGVyIChibG9jayArIG9mZnNldCkuICovCisJCWl0ZW1wdHJfZGVjb2RlKCZuZXh0X2RhdGEs IERhdHVtR2V0SW50NjQoZGF0dW0pKTsKKwkJbmV4dF9ibG9ja19udW1iZXIgPSBJdGVtUG9pbnRl ckdldEJsb2NrTnVtYmVyKCZuZXh0X2RhdGEpOworCisJCS8qCisJCSAqIElmIHdlIGhhdmVuJ3Qg c2V0IGEgYmxvY2sgbnVtYmVyIHlldCB0aGlzIHJvdW5kLCBpbml0aWFsaXplIGl0CisJCSAqIHVz aW5nIHRoZSBmaXJzdCB0dXBsZSB3ZSByZWFkLgorCQkgKi8KKwkJaWYgKGNhbGxiYWNrX3ByaXZh dGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgPT0gSW52YWxpZEJsb2NrTnVtYmVyKQorCQkJY2Fs bGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlciA9IG5leHRfYmxvY2tfbnVtYmVy OworCisJCS8qCisJCSAqIEFsd2F5cyBzZXQgdGhlIHJlc3VsdCB0byBiZSB0aGUgImN1cnJlbnQi IGJsb2NrIG51bWJlcgorCQkgKiB3ZSBhcmUgZmlsbGluZyBvZmZzZXRzIGZvci4KKwkJICovCisJ CXJlc3VsdCA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXI7CisKKwkJ LyoKKwkJICogSWYgdGhpcyB0dXBsZSBpcyBmcm9tIHRoZSBzYW1lIGJsb2NrLCBqdXN0IHN0b3Jl IGl0cyBvZmZzZXQKKwkJICogaW4gb3VyIHBlcl9idWZmZXJfZGF0YSBhcnJheS4KKwkJICovCisJ CWlmIChuZXh0X2Jsb2NrX251bWJlciA9PSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxv Y2tfbnVtYmVyKQorCQl7CisJCQlwZXJfYnVmZmVyX2RhdGFbaSsrXSA9IEl0ZW1Qb2ludGVyR2V0 T2Zmc2V0TnVtYmVyKCZuZXh0X2RhdGEpOworCisJCQkvKiBGcmVlIHRoZSBkYXR1bSBpZiBuZWVk ZWQuICovCisJCQlpZiAoc2hvdWRfZnJlZSkKKwkJCQlwZnJlZShEYXR1bUdldFBvaW50ZXIoZGF0 dW0pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBJZiB0aGUgYmxvY2sganVzdCBj aGFuZ2VkLCBzdG9yZSB0aGUgb2Zmc2V0IG9mIHRoZSBuZXcgYmxvY2sKKwkJCSAqIGFzIGxlZnRv dmVyIGZvciB0aGUgbmV4dCBpbnZvY2F0aW9uIGFuZCBicmVhayBvdXQuCisJCQkgKi8KKwkJCWNh bGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgPSBuZXh0X2Jsb2NrX251bWJl cjsKKwkJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251bWJlciA9ICBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmbmV4dF9kYXRhKTsKKworCQkJLyogRnJlZSB0aGUg ZGF0dW0gaWYgbmVlZGVkLiAqLworCQkJaWYgKHNob3VkX2ZyZWUpCisJCQkJcGZyZWUoRGF0dW1H ZXRQb2ludGVyKGRhdHVtKSk7CisKKwkJCS8qIEJyZWFrIHRvIGxldCB0aGUgbmV4dCBjYWxsIGhh bmRsZSB0aGUgbmV3IGJsb2NrLiAqLworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkvKgorCSAqIFRl cm1pbmF0ZSB0aGUgbGlzdCBvZiBvZmZzZXRzIGZvciB0aGlzIGJsb2NrIHdpdGggYW4gSW52YWxp ZE9mZnNldE51bWJlci4KKwkgKi8KKwlwZXJfYnVmZmVyX2RhdGFbaV0gPSBJbnZhbGlkT2Zmc2V0 TnVtYmVyOworCXJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyB2b2lkCiBoZWFwYW1faW5kZXhf dmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkgICBSZWxhdGlvbiBp bmRleFJlbGF0aW9uLAogCQkJCQkJICAgSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJCQkgICBT bmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUpCisJ CQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAorCQkJCQkJICAgVmFsaWRhdGVJbmRl eFN0YXRlICphdXhTdGF0ZSkKIHsKLQlUYWJsZVNjYW5EZXNjIHNjYW47Ci0JSGVhcFNjYW5EZXNj IGhzY2FuOwotCUhlYXBUdXBsZQloZWFwVHVwbGU7CiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhf S0VZU107CiAJYm9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKLQlFeHByU3RhdGUgICpwcmVk aWNhdGU7Ci0JVHVwbGVUYWJsZVNsb3QgKnNsb3Q7Ci0JRVN0YXRlCSAgICplc3RhdGU7Ci0JRXhw ckNvbnRleHQgKmVjb250ZXh0OwotCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxv Y2tOdW1iZXI7Ci0JT2Zmc2V0TnVtYmVyIHJvb3Rfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFn ZV07Ci0JYm9vbAkJaW5faW5kZXhbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwotCUJsb2NrTnVtYmVy IHByZXZpb3VzX2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwotCi0JLyogc3RhdGUgdmFyaWFi bGVzIGZvciB0aGUgbWVyZ2UgKi8KLQlJdGVtUG9pbnRlciBpbmRleGN1cnNvciA9IE5VTEw7Ci0J SXRlbVBvaW50ZXJEYXRhIGRlY29kZWQ7Ci0JYm9vbAkJdHVwbGVzb3J0X2VtcHR5ID0gZmFsc2U7 CisKKwlUdXBsZVRhYmxlU2xvdCAgKnNsb3Q7CisJRVN0YXRlCQkJKmVzdGF0ZTsKKwlFeHByQ29u dGV4dAkJKmVjb250ZXh0OworCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSA9IEdldEFj Y2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCk7CisKKwlpbnQJCQkJbnVtX3RvX2NoZWNrOworCVR1 cGxlc3RvcmVzdGF0ZSAqdHVwbGVzX2Zvcl9jaGVjazsKKwlWYWxpZGF0ZUluZGV4U2NhblN0YXRl IGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKKworCUJ1ZmZlciBidWY7CisJT2Zmc2V0TnVtYmVyKiB0 dXBsZXM7CisJUmVhZFN0cmVhbSAqcmVhZF9zdHJlYW07CisKKwkvKiBVc2UgMTAlIG9mIG1lbW9y eSBmb3IgdHVwbGUgc3RvcmUuICovCisJaW50CQlzdG9yZV93b3JrX21lbV9wYXJ0ID0gbWFpbnRl bmFuY2Vfd29ya19tZW0gLyAxMDsKKworCS8qCisJICogRW5jb2RlIFRJRHMgYXMgaW50OCB2YWx1 ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCisJICogaXRlbSBw b2ludGVycy4gIFRoaXMgY2FuIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmltYXJpbHkgYmVj YXVzZSBUSUQKKwkgKiBpcyBhIHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxsIHBsYXRmb3Jt cywgd2hlcmVhcyBpbnQ4IGlzCisJICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBsYXRmb3Jtcy4K KwkgKi8KKwl0dXBsZXNfZm9yX2NoZWNrID0gIHR1cGxlc3RvcmVfYmVnaW5fZGF0dW0oSU5UOE9J RCwgZmFsc2UsIGZhbHNlLCBzdG9yZV93b3JrX21lbV9wYXJ0KTsKIAogCS8qCiAJICogc2FuaXR5 IGNoZWNrcwogCSAqLwogCUFzc2VydChPaWRJc1ZhbGlkKGluZGV4UmVsYXRpb24tPnJkX3JlbC0+ cmVsYW0pKTsKIAotCS8qCi0JICogTmVlZCBhbiBFU3RhdGUgZm9yIGV2YWx1YXRpb24gb2YgaW5k ZXggZXhwcmVzc2lvbnMgYW5kIHBhcnRpYWwtaW5kZXgKLQkgKiBwcmVkaWNhdGVzLiAgQWxzbyBh IHNsb3QgdG8gaG9sZCB0aGUgY3VycmVudCB0dXBsZS4KLQkgKi8KKwludW1fdG9fY2hlY2sgPSBo ZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0X2RpZmZlcmVuY2Uoc3RhdGUtPnR1cGxlc29y dCwKKwkJCQkJCQkJCQkJCQkJIGF1eFN0YXRlLT50dXBsZXNvcnQsCisJCQkJCQkJCQkJCQkJCSB0 dXBsZXNfZm9yX2NoZWNrKTsKKworCS8qIEl0IGlzIG91ciByZXNwb25zaWJpbGl0eSB0byBjbG9z ZSB0dXBsZSBzb3J0IGFzIGZhc3QgYXMgd2UgY2FuICovCisJdHVwbGVzb3J0X2VuZChzdGF0ZS0+ dHVwbGVzb3J0KTsKKwl0dXBsZXNvcnRfZW5kKGF1eFN0YXRlLT50dXBsZXNvcnQpOworCisJc3Rh dGUtPnR1cGxlc29ydCA9IGF1eFN0YXRlLT50dXBsZXNvcnQgPSBOVUxMOworCiAJZXN0YXRlID0g Q3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwogCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4 dChlc3RhdGUpOwogCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXRE ZXNjcihoZWFwUmVsYXRpb24pLAotCQkJCQkJCQkJJlRUU09wc0hlYXBUdXBsZSk7CisJCQkJCQkJ CQkmVFRTT3BzQnVmZmVySGVhcFR1cGxlKTsKIAogCS8qIEFycmFuZ2UgZm9yIGVjb250ZXh0J3Mg c2NhbiB0dXBsZSB0byBiZSB0aGUgdHVwbGUgdW5kZXIgdGVzdCAqLwogCWVjb250ZXh0LT5lY3h0 X3NjYW50dXBsZSA9IHNsb3Q7CiAKLQkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0YXRlIGZvciBwcmVk aWNhdGUsIGlmIGFueS4gKi8KLQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZv LT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLnByZXZfYmxv Y2tfbnVtYmVyID0gSW52YWxpZEJsb2NrTnVtYmVyOworCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS5z dG9yZSA9IHR1cGxlc19mb3JfY2hlY2s7CisJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLnByZXZfb2Zm X29mZnNldF9udW1iZXIgPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOwogCi0JLyoKLQkgKiBQcmVwYXJl IGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgV2UgbmVlZCBqdXN0IHRob3NlIHR1cGxl cwotCSAqIHNhdGlzZnlpbmcgdGhlIHBhc3NlZC1pbiByZWZlcmVuY2Ugc25hcHNob3QuICBXZSBt dXN0IGRpc2FibGUgc3luY3NjYW4KLQkgKiBoZXJlLCBiZWNhdXNlIGl0J3MgY3JpdGljYWwgdGhh dCB3ZSByZWFkIGZyb20gYmxvY2sgemVybyBmb3J3YXJkIHRvCi0JICogbWF0Y2ggdGhlIHNvcnRl ZCBUSURzLgotCSAqLwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9u LAkvKiByZWxhdGlvbiAqLwotCQkJCQkJCQkgc25hcHNob3QsCS8qIHNuYXBzaG90ICovCi0JCQkJ CQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwotCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkg Ki8KLQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJ CQkJIGZhbHNlKTsJLyogc3luY3NjYW4gbm90IE9LICovCi0JaHNjYW4gPSAoSGVhcFNjYW5EZXNj KSBzY2FuOworCXJlYWRfc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9T VFJFQU1fTUFJTlRFTkFOQ0UgfCBSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCisJCQkJCQkJCQkJ CQkJCSBic3RyYXRlZ3ksCisJCQkJCQkJCQkJCQkJCSBoZWFwUmVsYXRpb24sIE1BSU5fRk9SS05V TSwKKwkJCQkJCQkJCQkJCQkJIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFt X25leHQsCisJCQkJCQkJCQkJCQkJCSAmY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkJ CQkJCQkgKE1heEhlYXBUdXBsZXNQZXJQYWdlICsgMSkgKiBzaXplb2YoT2Zmc2V0TnVtYmVyKSk7 CiAKLQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5fQkxPQ0tTX1RP VEFMLAotCQkJCQkJCQkgaHNjYW4tPnJzX25ibG9ja3MpOworCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExFU19UT1RBTCwgbnVtX3RvX2NoZWNrKTsK KwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNf RE9ORSwgMCk7CiAKLQkvKgotCSAqIFNjYW4gYWxsIHR1cGxlcyBtYXRjaGluZyB0aGUgc25hcHNo b3QuCi0JICovCi0Jd2hpbGUgKChoZWFwVHVwbGUgPSBoZWFwX2dldG5leHQoc2NhbiwgRm9yd2Fy ZFNjYW5EaXJlY3Rpb24pKSAhPSBOVUxMKQorCXdoaWxlICgoYnVmID0gcmVhZF9zdHJlYW1fbmV4 dF9idWZmZXIocmVhZF9zdHJlYW0sICh2b2lkKikgJnR1cGxlcykpICE9IEludmFsaWRCdWZmZXIp CiAJewotCQlJdGVtUG9pbnRlciBoZWFwY3Vyc29yID0gJmhlYXBUdXBsZS0+dF9zZWxmOwotCQlJ dGVtUG9pbnRlckRhdGEgcm9vdFR1cGxlOwotCQlPZmZzZXROdW1iZXIgcm9vdF9vZmZudW07CisJ CUhlYXBUdXBsZURhdGEJaGVhcF90dXBsZV9kYXRhW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKKwkJ aW50IGk7CisJCU9mZnNldE51bWJlciBvZmY7CisJCUJsb2NrTnVtYmVyIGJsb2NrX251bWJlcjsK IAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCXN0YXRlLT5odHVwcyArPSAxOworCQlM b2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOworCQlibG9ja19udW1iZXIgPSBCdWZm ZXJHZXRCbG9ja051bWJlcihidWYpOwogCi0JCWlmICgocHJldmlvdXNfYmxrbm8gPT0gSW52YWxp ZEJsb2NrTnVtYmVyKSB8fAotCQkJKGhzY2FuLT5yc19jYmxvY2sgIT0gcHJldmlvdXNfYmxrbm8p KQorCQlpID0gMDsKKwkJd2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXRO dW1iZXIpCiAJCXsKLQkJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NB Tl9CTE9DS1NfRE9ORSwKLQkJCQkJCQkJCQkgaHNjYW4tPnJzX2NibG9jayk7Ci0JCQlwcmV2aW91 c19ibGtubyA9IGhzY2FuLT5yc19jYmxvY2s7CisJCQlJdGVtUG9pbnRlckRhdGEgdGlkOworCQkJ Ym9vbAkJYWxsX2RlYWQsIGZvdW5kOworCQkJSXRlbVBvaW50ZXJTZXQoJnRpZCwgYmxvY2tfbnVt YmVyLCBvZmYpOworCisJCQlmb3VuZCA9IGhlYXBfaG90X3NlYXJjaF9idWZmZXIoJnRpZCwgaGVh cFJlbGF0aW9uLCBidWYsIHNuYXBzaG90LAorCQkJCQkJCQkJCSAgICZoZWFwX3R1cGxlX2RhdGFb aV0sICZhbGxfZGVhZCwgdHJ1ZSk7CisJCQlpZiAoIWZvdW5kKQorCQkJCUl0ZW1Qb2ludGVyU2V0 SW52YWxpZCgmaGVhcF90dXBsZV9kYXRhW2ldLnRfc2VsZik7CisJCQlpKys7CiAJCX0KKwkJTG9j a0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKLQkJLyoKLQkJICogQXMgY29tbWVu dGVkIGluIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4sIHdlIHNob3VsZCBpbmRleCBoZWFwLW9ubHkK LQkJICogdHVwbGVzIHVuZGVyIHRoZSBUSURzIG9mIHRoZWlyIHJvb3QgdHVwbGVzOyBzbyB3aGVu IHdlIGFkdmFuY2Ugb250bwotCQkgKiBhIG5ldyBoZWFwIHBhZ2UsIGJ1aWxkIGEgbWFwIG9mIHJv b3QgaXRlbSBvZmZzZXRzIG9uIHRoZSBwYWdlLgotCQkgKgotCQkgKiBUaGlzIGNvbXBsaWNhdGVz IG1lcmdpbmcgYWdhaW5zdCB0aGUgdHVwbGVzb3J0IG91dHB1dDogd2Ugd2lsbAotCQkgKiB2aXNp dCB0aGUgbGl2ZSB0dXBsZXMgaW4gb3JkZXIgYnkgdGhlaXIgb2Zmc2V0cywgYnV0IHRoZSByb290 Ci0JCSAqIG9mZnNldHMgdGhhdCB3ZSBuZWVkIHRvIGNvbXBhcmUgYWdhaW5zdCB0aGUgaW5kZXgg Y29udGVudHMgbWlnaHQgYmUKLQkJICogb3JkZXJlZCBkaWZmZXJlbnRseS4gIFNvIHdlIG1pZ2h0 IGhhdmUgdG8gImxvb2sgYmFjayIgd2l0aGluIHRoZQotCQkgKiB0dXBsZXNvcnQgb3V0cHV0LCBi dXQgb25seSB3aXRoaW4gdGhlIGN1cnJlbnQgcGFnZS4gIFdlIGhhbmRsZSB0aGF0Ci0JCSAqIGJ5 IGtlZXBpbmcgYSBib29sIGFycmF5IGluX2luZGV4W10gc2hvd2luZyBhbGwgdGhlCi0JCSAqIGFs cmVhZHktcGFzc2VkLW92ZXIgdHVwbGVzb3J0IG91dHB1dCBUSURzIG9mIHRoZSBjdXJyZW50IHBh Z2UuIFdlCi0JCSAqIGNsZWFyIHRoYXQgYXJyYXkgaGVyZSwgd2hlbiBhZHZhbmNpbmcgb250byBh IG5ldyBoZWFwIHBhZ2UuCi0JCSAqLwotCQlpZiAoaHNjYW4tPnJzX2NibG9jayAhPSByb290X2Js a25vKQorCQlpID0gMDsKKwkJd2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZz ZXROdW1iZXIpCiAJCXsKLQkJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhzY2FuLT5yc19j YnVmKTsKLQotCQkJTG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUp OwotCQkJaGVhcF9nZXRfcm9vdF90dXBsZXMocGFnZSwgcm9vdF9vZmZzZXRzKTsKLQkJCUxvY2tC dWZmZXIoaHNjYW4tPnJzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0KLQkJCW1lbXNldChp bl9pbmRleCwgMCwgc2l6ZW9mKGluX2luZGV4KSk7Ci0KLQkJCXJvb3RfYmxrbm8gPSBoc2Nhbi0+ cnNfY2Jsb2NrOwotCQl9Ci0KLQkJLyogQ29udmVydCBhY3R1YWwgdHVwbGUgVElEIHRvIHJvb3Qg VElEICovCi0JCXJvb3RUdXBsZSA9ICpoZWFwY3Vyc29yOwotCQlyb290X29mZm51bSA9IEl0ZW1Q b2ludGVyR2V0T2Zmc2V0TnVtYmVyKGhlYXBjdXJzb3IpOwotCi0JCWlmIChIZWFwVHVwbGVJc0hl YXBPbmx5KGhlYXBUdXBsZSkpCi0JCXsKLQkJCXJvb3Rfb2ZmbnVtID0gcm9vdF9vZmZzZXRzW3Jv b3Rfb2ZmbnVtIC0gMV07Ci0JCQlpZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9vdF9vZmZudW0p KQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQ VEVEKSwKLQkJCQkJCSBlcnJtc2dfaW50ZXJuYWwoImZhaWxlZCB0byBmaW5kIHBhcmVudCB0dXBs ZSBmb3IgaGVhcC1vbmx5IHR1cGxlIGF0ICgldSwldSkgaW4gdGFibGUgXCIlc1wiIiwKLQkJCQkJ CQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihoZWFwY3Vyc29yKSwKLQkJCQkJCQkJCQkg SXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoaGVhcGN1cnNvciksCi0JCQkJCQkJCQkJIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKGhlYXBSZWxhdGlvbikpKSk7Ci0JCQlJdGVtUG9pbnRlclNldE9m ZnNldE51bWJlcigmcm9vdFR1cGxlLCByb290X29mZm51bSk7Ci0JCX0KLQotCQkvKgotCQkgKiAi bWVyZ2UiIGJ5IHNraXBwaW5nIHRocm91Z2ggdGhlIGluZGV4IHR1cGxlcyB1bnRpbCB3ZSBmaW5k IG9yIHBhc3MKLQkJICogdGhlIGN1cnJlbnQgcm9vdCB0dXBsZS4KLQkJICovCi0JCXdoaWxlICgh dHVwbGVzb3J0X2VtcHR5ICYmCi0JCQkgICAoIWluZGV4Y3Vyc29yIHx8Ci0JCQkJSXRlbVBvaW50 ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCAmcm9vdFR1cGxlKSA8IDApKQotCQl7Ci0JCQlEYXR1bQkJ dHNfdmFsOwotCQkJYm9vbAkJdHNfaXNudWxsOwotCi0JCQlpZiAoaW5kZXhjdXJzb3IpCisJCQlp ZiAoSXRlbVBvaW50ZXJJc1ZhbGlkKCZoZWFwX3R1cGxlX2RhdGFbaV0udF9zZWxmKSkKIAkJCXsK KwkJCQlJdGVtUG9pbnRlckRhdGEgcm9vdF90aWQ7CisJCQkJSXRlbVBvaW50ZXJTZXQoJnJvb3Rf dGlkLCBibG9ja19udW1iZXIsIG9mZik7CisKKwkJCQkvKiBSZXNldCB0aGUgcGVyLXR1cGxlIG1l bW9yeSBjb250ZXh0IGZvciB0aGUgbmV4dCBmZXRjaC4gKi8KKwkJCQlNZW1vcnlDb250ZXh0UmVz ZXQoZWNvbnRleHQtPmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7CisJCQkJRXhlY1N0b3JlQnVmZmVy SGVhcFR1cGxlKCZoZWFwX3R1cGxlX2RhdGFbaV0sIHNsb3QsIGJ1Zik7CisKKwkJCQkvKiBDb21w dXRlIHRoZSBrZXkgdmFsdWVzIGFuZCBudWxsIGZsYWdzIGZvciB0aGlzIHR1cGxlLiAqLworCQkJ CUZvcm1JbmRleERhdHVtKGluZGV4SW5mbywKKwkJCQkJCQkgICBzbG90LAorCQkJCQkJCSAgIGVz dGF0ZSwKKwkJCQkJCQkgICB2YWx1ZXMsCisJCQkJCQkJICAgaXNudWxsKTsKKwogCQkJCS8qCi0J CQkJICogUmVtZW1iZXIgaW5kZXggaXRlbXMgc2VlbiBlYXJsaWVyIG9uIHRoZSBjdXJyZW50IGhl YXAgcGFnZQorCQkJCSAqIEluc2VydCB0aGUgdHVwbGUgaW50byB0aGUgdGFyZ2V0IGluZGV4Lgog CQkJCSAqLwotCQkJCWlmIChJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGluZGV4Y3Vyc29yKSA9 PSByb290X2Jsa25vKQotCQkJCQlpbl9pbmRleFtJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihp bmRleGN1cnNvcikgLSAxXSA9IHRydWU7CisJCQkJaW5kZXhfaW5zZXJ0KGluZGV4UmVsYXRpb24s CisJCQkJCQkJIHZhbHVlcywKKwkJCQkJCQkgaXNudWxsLAorCQkJCQkJCSAmcm9vdF90aWQsIC8q IGluc2VydCByb290IHR1cGxlICovCisJCQkJCQkJIGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkgaW5k ZXhJbmZvLT5paV9VbmlxdWUgPworCQkJCQkJCSBVTklRVUVfQ0hFQ0tfWUVTIDogVU5JUVVFX0NI RUNLX05PLAorCQkJCQkJCSBmYWxzZSwKKwkJCQkJCQkgaW5kZXhJbmZvKTsKIAkJCX0KIAotCQkJ dHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1bShzdGF0ZS0+dHVwbGVzb3J0LCB0 cnVlLAotCQkJCQkJCQkJCQkJICBmYWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVsbCwKLQkJCQkJCQkJ CQkJCSAgTlVMTCk7Ci0JCQlBc3NlcnQodHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOwot CQkJaWYgKCF0dXBsZXNvcnRfZW1wdHkpCi0JCQl7Ci0JCQkJaXRlbXB0cl9kZWNvZGUoJmRlY29k ZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7Ci0JCQkJaW5kZXhjdXJzb3IgPSAmZGVjb2RlZDsK LQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBCZSB0aWR5ICovCi0JCQkJaW5kZXhjdXJzb3Ig PSBOVUxMOwotCQkJfQorCQkJc3RhdGUtPmh0dXBzICs9IDE7CisJCQlwZ3N0YXRfcHJvZ3Jlc3Nf aW5jcl9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX0RPTkUsIDEpOworCQkJaSsrOwog CQl9CiAKLQkJLyoKLQkJICogSWYgdGhlIHR1cGxlc29ydCBoYXMgb3ZlcnNob3QgKmFuZCogd2Ug ZGlkbid0IHNlZSBhIG1hdGNoIGVhcmxpZXIsCi0JCSAqIHRoZW4gdGhpcyB0dXBsZSBpcyBtaXNz aW5nIGZyb20gdGhlIGluZGV4LCBzbyBpbnNlcnQgaXQuCi0JCSAqLwotCQlpZiAoKHR1cGxlc29y dF9lbXB0eSB8fAotCQkJIEl0ZW1Qb2ludGVyQ29tcGFyZShpbmRleGN1cnNvciwgJnJvb3RUdXBs ZSkgPiAwKSAmJgotCQkJIWluX2luZGV4W3Jvb3Rfb2ZmbnVtIC0gMV0pCi0JCXsKLQkJCU1lbW9y eUNvbnRleHRSZXNldChlY29udGV4dC0+ZWN4dF9wZXJfdHVwbGVfbWVtb3J5KTsKLQotCQkJLyog U2V0IHVwIGZvciBwcmVkaWNhdGUgb3IgZXhwcmVzc2lvbiBldmFsdWF0aW9uICovCi0JCQlFeGVj U3RvcmVIZWFwVHVwbGUoaGVhcFR1cGxlLCBzbG90LCBmYWxzZSk7Ci0KLQkJCS8qCi0JCQkgKiBJ biBhIHBhcnRpYWwgaW5kZXgsIGRpc2NhcmQgdHVwbGVzIHRoYXQgZG9uJ3Qgc2F0aXNmeSB0aGUK LQkJCSAqIHByZWRpY2F0ZS4KLQkJCSAqLwotCQkJaWYgKHByZWRpY2F0ZSAhPSBOVUxMKQotCQkJ ewotCQkJCWlmICghRXhlY1F1YWwocHJlZGljYXRlLCBlY29udGV4dCkpCi0JCQkJCWNvbnRpbnVl OwotCQkJfQotCi0JCQkvKgotCQkJICogRm9yIHRoZSBjdXJyZW50IGhlYXAgdHVwbGUsIGV4dHJh Y3QgYWxsIHRoZSBhdHRyaWJ1dGVzIHdlIHVzZQotCQkJICogaW4gdGhpcyBpbmRleCwgYW5kIG5v dGUgd2hpY2ggYXJlIG51bGwuICBUaGlzIGFsc28gcGVyZm9ybXMKLQkJCSAqIGV2YWx1YXRpb24g b2YgYW55IGV4cHJlc3Npb25zIG5lZWRlZC4KLQkJCSAqLwotCQkJRm9ybUluZGV4RGF0dW0oaW5k ZXhJbmZvLAotCQkJCQkJICAgc2xvdCwKLQkJCQkJCSAgIGVzdGF0ZSwKLQkJCQkJCSAgIHZhbHVl cywKLQkJCQkJCSAgIGlzbnVsbCk7Ci0KLQkJCS8qCi0JCQkgKiBZb3UnZCB0aGluayB3ZSBzaG91 bGQgZ28gYWhlYWQgYW5kIGJ1aWxkIHRoZSBpbmRleCB0dXBsZSBoZXJlLAotCQkJICogYnV0IHNv bWUgaW5kZXggQU1zIHdhbnQgdG8gZG8gZnVydGhlciBwcm9jZXNzaW5nIG9uIHRoZSBkYXRhCi0J CQkgKiBmaXJzdC4gU28gcGFzcyB0aGUgdmFsdWVzW10gYW5kIGlzbnVsbFtdIGFycmF5cywgaW5z dGVhZC4KLQkJCSAqLwotCi0JCQkvKgotCQkJICogSWYgdGhlIHR1cGxlIGlzIGFscmVhZHkgY29t bWl0dGVkIGRlYWQsIHlvdSBtaWdodCB0aGluayB3ZQotCQkJICogY291bGQgc3VwcHJlc3MgdW5p cXVlbmVzcyBjaGVja2luZywgYnV0IHRoaXMgaXMgbm8gbG9uZ2VyIHRydWUKLQkJCSAqIGluIHRo ZSBwcmVzZW5jZSBvZiBIT1QsIGJlY2F1c2UgdGhlIGluc2VydCBpcyBhY3R1YWxseSBhIHByb3h5 Ci0JCQkgKiBmb3IgYSB1bmlxdWVuZXNzIGNoZWNrIG9uIHRoZSB3aG9sZSBIT1QtY2hhaW4uICBU aGF0IGlzLCB0aGUKLQkJCSAqIHR1cGxlIHdlIGhhdmUgaGVyZSBjb3VsZCBiZSBkZWFkIGJlY2F1 c2UgaXQgd2FzIGFscmVhZHkKLQkJCSAqIEhPVC11cGRhdGVkLCBhbmQgaWYgc28gdGhlIHVwZGF0 aW5nIHRyYW5zYWN0aW9uIHdpbGwgbm90IGhhdmUKLQkJCSAqIHRob3VnaHQgaXQgc2hvdWxkIGlu c2VydCBpbmRleCBlbnRyaWVzLiAgVGhlIGluZGV4IEFNIHdpbGwKLQkJCSAqIGNoZWNrIHRoZSB3 aG9sZSBIT1QtY2hhaW4gYW5kIGNvcnJlY3RseSBkZXRlY3QgYSBjb25mbGljdCBpZgotCQkJICog dGhlcmUgaXMgb25lLgotCQkJICovCi0KLQkJCWluZGV4X2luc2VydChpbmRleFJlbGF0aW9uLAot CQkJCQkJIHZhbHVlcywKLQkJCQkJCSBpc251bGwsCi0JCQkJCQkgJnJvb3RUdXBsZSwKLQkJCQkJ CSBoZWFwUmVsYXRpb24sCi0JCQkJCQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPwotCQkJCQkJIFVO SVFVRV9DSEVDS19ZRVMgOiBVTklRVUVfQ0hFQ0tfTk8sCi0JCQkJCQkgZmFsc2UsCi0JCQkJCQkg aW5kZXhJbmZvKTsKLQotCQkJc3RhdGUtPnR1cHNfaW5zZXJ0ZWQgKz0gMTsKLQkJfQorCQlSZWxl YXNlQnVmZmVyKGJ1Zik7CiAJfQogCi0JdGFibGVfZW5kc2NhbihzY2FuKTsKLQogCUV4ZWNEcm9w U2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CiAKIAlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUp OwogCisJcmVhZF9zdHJlYW1fZW5kKHJlYWRfc3RyZWFtKTsKKwl0dXBsZXN0b3JlX2VuZCh0dXBs ZXNfZm9yX2NoZWNrKTsKKwogCS8qIFRoZXNlIG1heSBoYXZlIGJlZW4gcG9pbnRpbmcgdG8gdGhl IG5vdy1nb25lIGVzdGF0ZSAqLwogCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0ZSA9IE5J TDsKIAlpbmRleEluZm8tPmlpX1ByZWRpY2F0ZVN0YXRlID0gTlVMTDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpp bmRleCA3NTM5ZTAzZDNiYS4uODVkMmIyMDRmNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTcxNCwx MSArNzE0LDE2IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogICoJCQlhbHJl YWR5IGV4aXN0cy4KICAqCQlJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQ6CiAgKgkJCWNyZWF0ZSBh IHBhcnRpdGlvbmVkIGluZGV4ICh0YWJsZSBtdXN0IGJlIHBhcnRpdGlvbmVkKQorICoJCUlOREVY X0NSRUFURV9BVVhJTElBUlk6CisgKgkJCW1hcmsgaW5kZXggYXMgYXV4aWxpYXJ5IGluZGV4CiAg KiBjb25zdHJfZmxhZ3M6IGZsYWdzIHBhc3NlZCB0byBpbmRleF9jb25zdHJhaW50X2NyZWF0ZQog ICoJCShvbmx5IGlmIElOREVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCBpcyBzZXQpCiAgKiBhbGxv d19zeXN0ZW1fdGFibGVfbW9kczogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZwog ICogaXNfaW50ZXJuYWw6IGlmIHRydWUsIHBvc3QgY3JlYXRpb24gaG9vayBmb3IgbmV3IGluZGV4 CiAgKiBjb25zdHJhaW50SWQ6IGlmIG5vdCBOVUxMLCByZWNlaXZlcyBPSUQgb2YgY3JlYXRlZCBj b25zdHJhaW50CisgKiByZWxwZXJzaXN0ZW5jZTogcGVyc2lzdGVuY2UgbGV2ZWwgdG8gdXNlIGZv ciBpbmRleC4gSW4gbW9zdCBvZiB0aGUKKyAqCQljYXNlcyBpdCBpcyBzaG91bGQgYmUgZXF1YWwg dG8gcGVyc2lzdGVuY2UgbGV2ZWwgb2YgdGFibGUsCisgKgkJYXV4aWxpYXJ5IGluZGV4ZXMgYXJl IG9ubHkgZXhjZXB0aW9uIGhlcmUuCiAgKgogICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBjcmVh dGVkIGluZGV4LgogICovCkBAIC03NDMsNyArNzQ4LDggQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAkJCSBiaXRzMTYgY29uc3RyX2ZsYWdzLAogCQkJIGJvb2wgYWxsb3df c3lzdGVtX3RhYmxlX21vZHMsCiAJCQkgYm9vbCBpc19pbnRlcm5hbCwKLQkJCSBPaWQgKmNvbnN0 cmFpbnRJZCkKKwkJCSBPaWQgKmNvbnN0cmFpbnRJZCwKKwkJCSBjaGFyIHJlbHBlcnNpc3RlbmNl KQogewogCU9pZAkJCWhlYXBSZWxhdGlvbklkID0gUmVsYXRpb25HZXRSZWxpZChoZWFwUmVsYXRp b24pOwogCVJlbGF0aW9uCXBnX2NsYXNzOwpAQCAtNzU0LDExICs3NjAsMTEgQEAgaW5kZXhfY3Jl YXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlib29sCQlpc19leGNsdXNpb247CiAJT2lkCQkJ bmFtZXNwYWNlSWQ7CiAJaW50CQkJaTsKLQljaGFyCQlyZWxwZXJzaXN0ZW5jZTsKIAlib29sCQlp c3ByaW1hcnkgPSAoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSkgIT0gMDsKIAlib29s CQlpbnZhbGlkID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0lOVkFMSUQpICE9IDA7CiAJYm9vbAkJ Y29uY3VycmVudCA9IChmbGFncyAmIElOREVYX0NSRUFURV9DT05DVVJSRU5UKSAhPSAwOwogCWJv b2wJCXBhcnRpdGlvbmVkID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX1BBUlRJVElPTkVEKSAhPSAw OworCWJvb2wJCWF1eGlsaWFyeSA9IChmbGFncyAmIElOREVYX0NSRUFURV9BVVhJTElBUlkpICE9 IDA7CiAJY2hhcgkJcmVsa2luZDsKIAlUcmFuc2FjdGlvbklkIHJlbGZyb3plbnhpZDsKIAlNdWx0 aVhhY3RJZCByZWxtaW5teGlkOwpAQCAtNzg0LDcgKzc5MCw2IEBAIGluZGV4X2NyZWF0ZShSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJbmFtZXNwYWNlSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZSho ZWFwUmVsYXRpb24pOwogCXNoYXJlZF9yZWxhdGlvbiA9IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5y ZWxpc3NoYXJlZDsKIAltYXBwZWRfcmVsYXRpb24gPSBSZWxhdGlvbklzTWFwcGVkKGhlYXBSZWxh dGlvbik7Ci0JcmVscGVyc2lzdGVuY2UgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVscGVyc2lz dGVuY2U7CiAKIAkvKgogCSAqIGNoZWNrIHBhcmFtZXRlcnMKQEAgLTc5Miw2ICs3OTcsMTEgQEAg aW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlpZiAoaW5kZXhJbmZvLT5paV9O dW1JbmRleEF0dHJzIDwgMSkKIAkJZWxvZyhFUlJPUiwgIm11c3QgaW5kZXggYXQgbGVhc3Qgb25l IGNvbHVtbiIpOwogCisJaWYgKGluZGV4SW5mby0+aWlfQW0gPT0gU1RJUl9BTV9PSUQgJiYgIWF1 eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygidXNlci1kZWZpbmVkIGluZGV4ZXMgd2l0aCBT VElSIGFjY2VzcyBtZXRob2QgYXJlIG5vdCBzdXBwb3J0ZWQiKSkpOworCiAJaWYgKCFhbGxvd19z eXN0ZW1fdGFibGVfbW9kcyAmJgogCQlJc1N5c3RlbVJlbGF0aW9uKGhlYXBSZWxhdGlvbikgJiYK IAkJSXNOb3JtYWxQcm9jZXNzaW5nTW9kZSgpKQpAQCAtMTM5Nyw3ICsxNDA3LDggQEAgaW5kZXhf Y29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZElu ZGV4SWQsCiAJCQkJCQkJZmFsc2UsCS8qIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyAqLwogCQkJCQkJ CXRydWUsCiAJCQkJCQkJaW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCi0J CQkJCQkJb2xkSW5mby0+aWlfV2l0aG91dE92ZXJsYXBzKTsKKwkJCQkJCQlvbGRJbmZvLT5paV9X aXRob3V0T3ZlcmxhcHMsCisJCQkJCQkJZmFsc2UpOwogCiAJLyoKIAkgKiBFeHRyYWN0IHRoZSBs aXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZvciB0aGUgbmV3CkBA IC0xNDYyLDcgKzE0NzMsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRp b24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJCQkgIDAsCiAJCQkJCQkJICB0 cnVlLCAvKiBhbGxvdyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nPyAqLwogCQkJCQkJCSAg ZmFsc2UsCS8qIGlzX2ludGVybmFsPyAqLwotCQkJCQkJCSAgTlVMTCk7CisJCQkJCQkJICBOVUxM LAorCQkJCQkJCSAgaGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAogCS8q IENsb3NlIHRoZSByZWxhdGlvbnMgdXNlZCBhbmQgY2xlYW4gdXAgKi8KIAlpbmRleF9jbG9zZShp bmRleFJlbGF0aW9uLCBOb0xvY2spOwpAQCAtMTQ3Miw2ICsxNDg0LDE1NSBAQCBpbmRleF9jb25j dXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJ ZCwKIAlyZXR1cm4gbmV3SW5kZXhJZDsKIH0KIAorLyoKKyAqIGluZGV4X2NvbmN1cnJlbnRseV9j cmVhdGVfYXV4CisgKgorICogQ3JlYXRlIGNvbmN1cnJlbnRseSBhbiBhdXhpbGlhcnkgaW5kZXgg YmFzZWQgb24gdGhlIGRlZmluaXRpb24gb2YgdGhlIG9uZQorICogcHJvdmlkZWQgYnkgY2FsbGVy LiAgVGhlIGluZGV4IGlzIGluc2VydGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJlCisg KiBidWlsdCBsYXRlciBvbi4gVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRl eCBwcm9jZXNzaW5nLgorICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgdGFibGVzcGFjZSB0 byB1c2UgZm9yIHRoaXMgaW5kZXguCisgKi8KK09pZAoraW5kZXhfY29uY3VycmVudGx5X2NyZWF0 ZV9hdXgoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgbWFpbkluZGV4SWQsCisJCQkJCQkJICAg T2lkIHRhYmxlc3BhY2VPaWQsIGNvbnN0IGNoYXIgKm5ld05hbWUpCit7CisJUmVsYXRpb24JaW5k ZXhSZWxhdGlvbjsKKwlJbmRleEluZm8gICpvbGRJbmZvLAorCQkJKm5ld0luZm87CisJT2lkCQkJ bmV3SW5kZXhJZCA9IEludmFsaWRPaWQ7CisJSGVhcFR1cGxlCWluZGV4VHVwbGU7CisKKwlMaXN0 CSAgICppbmRleENvbE5hbWVzID0gTklMOworCUxpc3QJICAgKmluZGV4RXhwcnMgPSBOSUw7CisJ TGlzdAkgICAqaW5kZXhQcmVkcyA9IE5JTDsKKworCU9pZCAqYXV4T3BjbGFzc0lkczsKKwlpbnQx NiAqYXV4Q29sb3B0aW9uczsKKworCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKG1haW5JbmRl eElkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8qIFRoZSBuZXcgaW5kZXggbmVlZHMgc29tZSBp bmZvcm1hdGlvbiBmcm9tIHRoZSBvbGQgaW5kZXggKi8KKwlvbGRJbmZvID0gQnVpbGRJbmRleElu Zm8oaW5kZXhSZWxhdGlvbik7CisKKwkvKgorCSAqIEJ1aWxkIG9mIGFuIGF1eGlsaWFyeSBpbmRl eCB3aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBpcyBub3QKKwkgKiBzdXBwb3J0ZWQuCisJICov CisJaWYgKG9sZEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCWVy cm1zZygiYXV4aWxpYXJ5IGluZGV4IGNyZWF0aW9uIGZvciBleGNsdXNpb24gY29uc3RyYWludHMg aXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkvKiBHZXQgdGhlIGFycmF5IG9mIGNsYXNzIGFuZCBj b2x1bW4gb3B0aW9ucyBJRHMgZnJvbSBpbmRleCBpbmZvICovCisJaW5kZXhUdXBsZSA9IFNlYXJj aFN5c0NhY2hlMShJTkRFWFJFTElELCBPYmplY3RJZEdldERhdHVtKG1haW5JbmRleElkKSk7CisJ aWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGluZGV4VHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBtYWluSW5kZXhJZCk7CisKKworCS8qCisJICog RmV0Y2ggdGhlIGxpc3Qgb2YgZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgZGlyZWN0bHkgZnJv bSB0aGUKKwkgKiBjYXRhbG9ncy4gIFRoaXMgY2Fubm90IHJlbHkgb24gdGhlIGluZm9ybWF0aW9u IGZyb20gSW5kZXhJbmZvIG9mIHRoZQorCSAqIG9sZCBpbmRleCBhcyB0aGVzZSBoYXZlIGJlZW4g ZmxhdHRlbmVkIGZvciB0aGUgcGxhbm5lci4KKwkgKi8KKwlpZiAob2xkSW5mby0+aWlfRXhwcmVz c2lvbnMgIT0gTklMKQorCXsKKwkJRGF0dW0JCWV4cHJEYXR1bTsKKwkJY2hhcgkgICAqZXhwclN0 cmluZzsKKworCQlleHByRGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVYUkVMSUQs IGluZGV4VHVwbGUsCisJCQkJCQkJCQkJICAgQW51bV9wZ19pbmRleF9pbmRleHBycyk7CisJCWV4 cHJTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGV4cHJEYXR1bSk7CisJCWluZGV4RXhwcnMg PSAoTGlzdCAqKSBzdHJpbmdUb05vZGUoZXhwclN0cmluZyk7CisJCXBmcmVlKGV4cHJTdHJpbmcp OworCX0KKwlpZiAob2xkSW5mby0+aWlfUHJlZGljYXRlICE9IE5JTCkKKwl7CisJCURhdHVtCQlw cmVkRGF0dW07CisJCWNoYXIJICAgKnByZWRTdHJpbmc7CisKKwkJcHJlZERhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyTm90TnVsbChJTkRFWFJFTElELCBpbmRleFR1cGxlLAorCQkJCQkJCQkJCSAgIEFu dW1fcGdfaW5kZXhfaW5kcHJlZCk7CisJCXByZWRTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5n KHByZWREYXR1bSk7CisJCWluZGV4UHJlZHMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUocHJlZFN0 cmluZyk7CisKKwkJLyogQWxzbyBjb252ZXJ0IHRvIGltcGxpY2l0LUFORCBmb3JtYXQgKi8KKwkJ aW5kZXhQcmVkcyA9IG1ha2VfYW5kc19pbXBsaWNpdCgoRXhwciAqKSBpbmRleFByZWRzKTsKKwkJ cGZyZWUocHJlZFN0cmluZyk7CisJfQorCisJLyoKKwkgKiBCdWlsZCB0aGUgaW5kZXggaW5mb3Jt YXRpb24gZm9yIHRoZSBuZXcgaW5kZXguICBOb3RlIHRoYXQgcmVidWlsZCBvZgorCSAqIGluZGV4 ZXMgd2l0aCBleGNsdXNpb24gY29uc3RyYWludHMgaXMgbm90IHN1cHBvcnRlZCwgaGVuY2UgdGhl cmUgaXMgbm8KKwkgKiBuZWVkIHRvIGZpbGwgYWxsIHRoZSBpaV9FeGNsdXNpb24qIGZpZWxkcy4K KwkgKi8KKwluZXdJbmZvID0gbWFrZUluZGV4SW5mbyhvbGRJbmZvLT5paV9OdW1JbmRleEF0dHJz LAorCQkJCQkJCW9sZEluZm8tPmlpX051bUluZGV4S2V5QXR0cnMsCisJCQkJCQkJU1RJUl9BTV9P SUQsIC8qIHNwZWNpYWwgQU0gZm9yIGF1eCBpbmRleGVzICovCisJCQkJCQkJaW5kZXhFeHBycywK KwkJCQkJCQlpbmRleFByZWRzLAorCQkJCQkJCWZhbHNlLAkvKiBhdXggaW5kZXggYXJlIG5vdCB1 bmlxdWUgKi8KKwkJCQkJCQlvbGRJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0LAorCQkJCQkJCWZh bHNlLAkvKiBub3QgcmVhZHkgZm9yIGluc2VydHMgKi8KKwkJCQkJCQl0cnVlLAorCQkJCQkJCWZh bHNlLAkvKiBhdXggYXJlIG5vdCBzdW1tYXJpemluZyAqLworCQkJCQkJCWZhbHNlLAkvKiBhdXgg YXJlIG5vdCB3aXRob3V0IG92ZXJsYXBzICovCisJCQkJCQkJdHJ1ZQkvKiBhdXhpbGlhcnkgKi8p OworCisJLyoKKwkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNv bHVtbiBudW1iZXJzIGZvciB0aGUgbmV3CisJICogaW5kZXggaW5mb3JtYXRpb24uICBBbGwgdGhp cyBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBpbmRleAorCSAqIGNyZWF0aW9uLgor CSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgb2xkSW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsr KQorCXsKKwkJVHVwbGVEZXNjCWluZGV4VHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoaW5kZXhS ZWxhdGlvbik7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIoaW5kZXhU dXBEZXNjLCBpKTsKKworCQlpbmRleENvbE5hbWVzID0gbGFwcGVuZChpbmRleENvbE5hbWVzLCBO YW1lU3RyKGF0dC0+YXR0bmFtZSkpOworCQluZXdJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ld ID0gb2xkSW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXTsKKwl9CisKKwlhdXhPcGNsYXNzSWRz ID0gcGFsbG9jMChzaXplb2YoT2lkKSAqIG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOworCWF1 eENvbG9wdGlvbnMgPSBwYWxsb2MwKHNpemVvZihpbnQxNikgKiBuZXdJbmZvLT5paV9OdW1JbmRl eEF0dHJzKTsKKworCS8qIEZpbGwgd2l0aCAiYW55IG9wcyIgKi8KKwlmb3IgKGludCBpID0gMDsg aSA8IG5ld0luZm8tPmlpX051bUluZGV4QXR0cnM7IGkrKykKKwl7CisJCWF1eE9wY2xhc3NJZHNb aV0gPSBBTllfU1RJUl9PUFNfT0lEOworCQlhdXhDb2xvcHRpb25zW2ldID0gMDsKKwl9CisKKwlu ZXdJbmRleElkID0gaW5kZXhfY3JlYXRlKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkgIG5ld05hbWUs CisJCQkJCQkJICBJbnZhbGlkT2lkLCAgICAvKiBpbmRleFJlbGF0aW9uSWQgKi8KKwkJCQkJCQkg IEludmFsaWRPaWQsICAgIC8qIHBhcmVudEluZGV4UmVsaWQgKi8KKwkJCQkJCQkgIEludmFsaWRP aWQsICAgIC8qIHBhcmVudENvbnN0cmFpbnRJZCAqLworCQkJCQkJCSAgSW52YWxpZFJlbEZpbGVO dW1iZXIsIC8qIHJlbEZpbGVOdW1iZXIgKi8KKwkJCQkJCQkgIG5ld0luZm8sCisJCQkJCQkJICBp bmRleENvbE5hbWVzLAorCQkJCQkJCSAgU1RJUl9BTV9PSUQsCisJCQkJCQkJICB0YWJsZXNwYWNl T2lkLAorCQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfaW5kY29sbGF0aW9uLAorCQkJCQkJCSAg YXV4T3BjbGFzc0lkcywKKwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICBhdXhDb2xvcHRpb25zLAor CQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkgIChEYXR1bSkgMCwKKwkJCQkJCQkgIElOREVYX0NSRUFU RV9TS0lQX0JVSUxEIHwgSU5ERVhfQ1JFQVRFX0NPTkNVUlJFTlQgfCBJTkRFWF9DUkVBVEVfQVVY SUxJQVJZLAorCQkJCQkJCSAgMCwKKwkJCQkJCQkgIHRydWUsIC8qIGFsbG93IHRhYmxlIHRvIGJl IGEgc3lzdGVtIGNhdGFsb2c/ICovCisJCQkJCQkJICBmYWxzZSwgICAgLyogaXNfaW50ZXJuYWw/ ICovCisJCQkJCQkJICBOVUxMLAorCQkJCQkJCSAgUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQpOyAv KiBhdXggaW5kZXhlcyB1bmxvZ2dlZCAqLworCisJLyogQ2xvc2UgdGhlIHJlbGF0aW9ucyB1c2Vk IGFuZCBjbGVhbiB1cCAqLworCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CisJ UmVsZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUpOworCisJcmV0dXJuIG5ld0luZGV4SWQ7Cit9CisK IC8qCiAgKiBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQKICAqCkBAIC0yNDUyLDcgKzI2MTMsOCBA QCBCdWlsZEluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmlu ZGlzcmVhZHksCiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3Vt bWFyaXppbmcsCi0JCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0 cnVjdC0+aW5kaXN1bmlxdWUpOworCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24g JiYgaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlLAorCQkJCQkgICBpbmRleC0+cmRfcmVsLT5yZWxh bSA9PSBTVElSX0FNX09JRCAvKiBhdXhpbGlhcnkgaWZmIFNUSVIgKi8pOwogCiAJLyogZmlsbCBp biBhdHRyaWJ1dGUgbnVtYmVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCkBA IC0yNTEyLDcgKzI2NzQsOCBAQCBCdWlsZER1bW15SW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQog CQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNyZWFkeSwKIAkJCQkJICAgZmFsc2UsCiAJCQkJCSAg IGluZGV4LT5yZF9pbmRhbS0+YW1zdW1tYXJpemluZywKLQkJCQkJICAgaW5kZXhTdHJ1Y3QtPmlu ZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSk7CisJCQkJCSAgIGluZGV4 U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUsCisJCQkJ CSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFyeSBpZmYg U1RJUiAqLyk7CiAKIAkvKiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0g MDsgaSA8IG51bUF0dHM7IGkrKykKQEAgLTMyODgsMTIgKzM0NTEsMjEgQEAgSW5kZXhDaGVja0V4 Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKgogICogV2UgZG8gYSBjb25jdXJyZW50 IGluZGV4IGJ1aWxkIGJ5IGZpcnN0IGluc2VydGluZyB0aGUgY2F0YWxvZyBlbnRyeSBmb3IgdGhl CiAgKiBpbmRleCB2aWEgaW5kZXhfY3JlYXRlKCksIG1hcmtpbmcgaXQgbm90IGluZGlzcmVhZHkg YW5kIG5vdCBpbmRpc3ZhbGlkLgorICogVGhlbiB3ZSBjcmVhdGUgc3BlY2lhbCBhdXhpbGlhcnkg aW5kZXggdGhlIHNhbWUgd2F5LiBJdCBiYXNlZCBvbiBTVElSIEFNLgogICogVGhlbiB3ZSBjb21t aXQgb3VyIHRyYW5zYWN0aW9uIGFuZCBzdGFydCBhIG5ldyBvbmUsIHRoZW4gd2Ugd2FpdCBmb3Ig YWxsCiAgKiB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0 YWJsZSB0byB0ZXJtaW5hdGUuICBOb3cKLSAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5 LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIHRoZSBpbmRleCBhbmQKKyAqIHdlIGtub3cg dGhhdCBhbnkgc3Vic2VxdWVudGx5LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIGluZGV4 ZXMgYW5kCiAgKiBob25vciBpdHMgY29uc3RyYWludHMgb24gSE9UIHVwZGF0ZXM7IHNvIHdoaWxl IGV4aXN0aW5nIEhPVC1jaGFpbnMgbWlnaHQKICAqIGJlIGJyb2tlbiB3aXRoIHJlc3BlY3QgdG8g dGhlIGluZGV4LCBubyBjdXJyZW50bHkgbGl2ZSB0dXBsZSB3aWxsIGhhdmUgYW4KLSAqIGluY29t cGF0aWJsZSBIT1QgdXBkYXRlIGRvbmUgdG8gaXQuICBXZSBub3cgYnVpbGQgdGhlIGluZGV4IG5v cm1hbGx5IHZpYQorICogaW5jb21wYXRpYmxlIEhPVCB1cGRhdGUgZG9uZSB0byBpdC4KKyAqCisg KiBBZnRlciB3ZSBidWlsZCBhdXhpbGlhcnkgaW5kZXguIEl0IGlzIGZhc3Qgb3BlcmF0aW9uIHdp dGhvdXQgYW55IGFjdHVhbAorICogdGFibGUgc2Nhbi4gQXMgcmVzdWx0LCB3ZSBoYXZlIGVtcHR5 IFNUSVIgaW5kZXguIFdlIGNvbW1pdCB0cmFuc2FjdGlvbiBhbmQKKyAqIGFnYWluIHdhaXQgZm9y IGFsbCB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJs ZQorICogdG8gdGVybWluYXRlLiBBdCB0aGF0IG1vbWVudCBhbGwgbmV3IHR1cGxlcyBhcmUgZ29p bmcgdG8gYmUgaW5zZXJ0ZWQgaW50bworICogYXV4aWxpYXJ5IGluZGV4LgorICoKKyAqIFdlIG5v dyBidWlsZCB0aGUgaW5kZXggbm9ybWFsbHkgdmlhCiAgKiBpbmRleF9idWlsZCgpLCB3aGlsZSBo b2xkaW5nIGEgd2VhayBsb2NrIHRoYXQgYWxsb3dzIGNvbmN1cnJlbnQKICAqIGluc2VydC91cGRh dGUvZGVsZXRlLiAgQWxzbywgd2UgaW5kZXggb25seSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQKICAq IGFzIG9mIHRoZSBzdGFydCBvZiB0aGUgc2NhbiAoc2VlIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4p LCB3aGVyZWFzIGEgbm9ybWFsCkBAIC0zMzAzLDE0ICszNDc1LDE3IEBAIEluZGV4Q2hlY2tFeGNs dXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogYm9ndXMgdW5pcXVlLWluZGV4IGZhaWx1 cmVzIGR1ZSB0byBjb25jdXJyZW50IFVQREFURXMgKHdlIG1pZ2h0IHNlZQogICogZGlmZmVyZW50 IHZlcnNpb25zIG9mIHRoZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxpZCB3aGVuIHdlIHBhc3Mgb3Zl ciB0aGVtLAogICogaWYgd2UgdXNlZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBs ZWF2ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0Ci0gKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBs ZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KKyAqIGRvZXMg bm90IGNvbnRhaW4gYW55IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQg dGhlIGluZGV4CisgKiAoYnV0IHRoZXNlIHR1cGxlcyBjb250YWluZWQgaW4gYXV4aWxpYXJ5IGlu ZGV4KS4KICAqCiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXNyZWFkeSIgKGJ1dCBz dGlsbCBub3QgImluZGlzdmFsaWQiKSBhbmQKLSAqIGNvbW1pdCB0aGUgc2Vjb25kIHRyYW5zYWN0 aW9uIGFuZCBzdGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxsCisgKiBjb21taXQg dGhlIHRoaXJkIHRyYW5zYWN0aW9uIGFuZCBzdGFydCBhIGZvdXJ0aC4gIEFnYWluIHdlIHdhaXQg Zm9yIGFsbAogICogdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0 aGUgdGFibGUgdG8gdGVybWluYXRlLiAgTm93CiAgKiB3ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVl bnRseS1zdGFydGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNlZSB0aGUgaW5kZXggYW5kCi0gKiBpbnNl cnQgdGhlaXIgbmV3IHR1cGxlcyBpbnRvIGl0LiAgV2UgdGhlbiB0YWtlIGEgbmV3IHJlZmVyZW5j ZSBzbmFwc2hvdAotICogd2hpY2ggaXMgcGFzc2VkIHRvIHZhbGlkYXRlX2luZGV4KCkuICBBbnkg dHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZworICogaW5zZXJ0IHRoZWlyIG5ldyB0dXBs ZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9tZW50IHdlIGNsZWFyICJpbmRpc3JlYWR5IiBmb3IK KyAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQgaXMgbm8gbW9yZSByZXF1aXJlZCB0byBiZSB1 cGRhdGVkLgorICoKKyAqIFdlIHRoZW4gdGFrZSBhIG5ldyByZWZlcmVuY2Ugc25hcHNob3QsIGFu eSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQgYWNjb3JkaW5nCiAgKiB0byB0aGlzIHNuYXAsIGJ1dCBh cmUgbm90IGluIHRoZSBpbmRleCwgbXVzdCBiZSBhZGRlZCB0byB0aGUgaW5kZXguCiAgKiAoQW55 IHR1cGxlcyBjb21taXR0ZWQgbGl2ZSBhZnRlciB0aGUgc25hcCB3aWxsIGJlIGluc2VydGVkIGlu dG8gdGhlCiAgKiBpbmRleCBieSB0aGVpciBvcmlnaW5hdGluZyB0cmFuc2FjdGlvbi4gIEFueSB0 dXBsZXMgY29tbWl0dGVkIGRlYWQgYmVmb3JlCkBAIC0zMzE4LDEyICszNDkzLDE0IEBAIEluZGV4 Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogdGhhdCBtaWdodCBjYXJl IGFib3V0IHRoZW0gYmVmb3JlIHdlIG1hcmsgdGhlIGluZGV4IHZhbGlkLikKICAqCiAgKiB2YWxp ZGF0ZV9pbmRleCgpIHdvcmtzIGJ5IGZpcnN0IGdhdGhlcmluZyBhbGwgdGhlIFRJRHMgY3VycmVu dGx5IGluIHRoZQotICogaW5kZXgsIHVzaW5nIGEgYnVsa2RlbGV0ZSBjYWxsYmFjayB0aGF0IGp1 c3Qgc3RvcmVzIHRoZSBUSURzIGFuZCBkb2Vzbid0CisgKiBpbmRleGVzLCB1c2luZyBhIGJ1bGtk ZWxldGUgY2FsbGJhY2sgdGhhdCBqdXN0IHN0b3JlcyB0aGUgVElEcyBhbmQgZG9lc24ndAogICog ZXZlciBzYXkgImRlbGV0ZSBpdCIuICAoVGhpcyBzaG91bGQgYmUgZmFzdGVyIHRoYW4gYSBwbGFp biBpbmRleHNjYW47CiAgKiBhbHNvLCBub3QgYWxsIGluZGV4IEFNcyBzdXBwb3J0IGZ1bGwtaW5k ZXggaW5kZXhzY2FuLikgIFRoZW4gd2Ugc29ydCB0aGUKLSAqIFRJRHMsIGFuZCBmaW5hbGx5IHNj YW4gdGhlIHRhYmxlIGRvaW5nIGEgIm1lcmdlIGpvaW4iIGFnYWluc3QgdGhlIFRJRCBsaXN0Ci0g KiB0byBzZWUgd2hpY2ggdHVwbGVzIGFyZSBtaXNzaW5nIGZyb20gdGhlIGluZGV4LiAgVGh1cyB3 ZSB3aWxsIGVuc3VyZSB0aGF0Ci0gKiBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUg cmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXguCisgKiBUSURzIG9mIGJvdGggYXV4 aWxpYXJ5IGFuZCB0YXJnZXQgaW5kZXhlcywgYW5kIGRvaW5nIGEgIm1lcmdlIGpvaW4iIGFnYWlu c3QKKyAqIHRoZSBUSUQgbGlzdHMgdG8gc2VlIHdoaWNoIHR1cGxlcyBmcm9tIGF1eGlsaWFyeSBp bmRleCBhcmUgbWlzc2luZyBmcm9tIHRoZQorICogdGFyZ2V0IGluZGV4LiAgVGh1cyB3ZSB3aWxs IGVuc3VyZSB0aGF0IGFsbCB0dXBsZXMgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZQorICogcmVmZXJl bmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXguIE5vdGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtk ZWxldGUgaW4gdGhlCisgKiBwYXJ0aWN1bGFyIG9yZGVyOiBhdXhpbGlhcnkgZmlyc3QsIHRhcmdl dCBsYXN0LgogICoKICAqIEJ1aWxkaW5nIGEgdW5pcXVlIGluZGV4IHRoaXMgd2F5IGlzIHRyaWNr eTogd2UgbWlnaHQgdHJ5IHRvIGluc2VydCBhCiAgKiB0dXBsZSB0aGF0IGlzIGFscmVhZHkgZGVh ZCBvciBpcyBpbiBwcm9jZXNzIG9mIGJlaW5nIGRlbGV0ZWQsIGFuZCB3ZQpAQCAtMzM0MSwyMiAr MzUxOCwyNiBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAq IG5vdCBpbmRleCkuICBUaGVuIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3ZhbGlkIiBhbmQgY29t bWl0LiAgU3Vic2VxdWVudAogICogdHJhbnNhY3Rpb25zIHdpbGwgYmUgYWJsZSB0byB1c2UgaXQg Zm9yIHF1ZXJpZXMuCiAgKgotICogRG9pbmcgdHdvIGZ1bGwgdGFibGUgc2NhbnMgaXMgYSBicnV0 ZS1mb3JjZSBzdHJhdGVneS4gIFdlIGNvdWxkIHRyeSB0byBiZQotICogY2xldmVyZXIsIGVnIHN0 b3JpbmcgbmV3IHR1cGxlcyBpbiBhIHNwZWNpYWwgYXJlYSBvZiB0aGUgdGFibGUgKHBlcmhhcHMK LSAqIG1ha2luZyB0aGUgdGFibGUgYXBwZW5kLW9ubHkgYnkgc2V0dGluZyB1c2VfZnNtKS4gIEhv d2V2ZXIgdGhhdCB3b3VsZAotICogYWRkIHlldCBtb3JlIGxvY2tpbmcgaXNzdWVzLgorICogQWxz bywgc29tZSBhY3Rpb25zIHRvIGNvbmN1cnJlbnQgZHJvcCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFy ZSBwZXJmb3JtZWQuCiAgKi8KIHZvaWQKLXZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBp bmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKK3ZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9p ZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiB7CiAJUmVsYXRp b24JaGVhcFJlbGF0aW9uLAotCQkJCWluZGV4UmVsYXRpb247CisJCQkJaW5kZXhSZWxhdGlvbiwK KwkJCQlhdXhJbmRleFJlbGF0aW9uOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKLQlJbmRleFZh Y3V1bUluZm8gaXZpbmZvOwotCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZTsKKwlJbmRleFZhY3V1 bUluZm8gaXZpbmZvLCBhdXhpdmluZm87CisJVmFsaWRhdGVJbmRleFN0YXRlIHN0YXRlLCBhdXhT dGF0ZTsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCWlu dAkJCXNhdmVfbmVzdGxldmVsOworCS8qIFVzZSA4MCUgb2YgbWFpbnRlbmFuY2Vfd29ya19tZW0g dG8gdGFyZ2V0IGluZGV4IHNvcnRpbmcgYW5kCisJICogMTAlIHJlc3QgZm9yIGF1eGlsaWFyeS4K KwkgKgorCSAqIFJlc3QgMTAlIHdpbGwgYmUgdXNlZCBmb3IgdHVwbGVzdG9yZSBsYXRlci4gKi8K KwlpbnQ2NAkJbWFpbl93b3JrX21lbV9wYXJ0ID0gKGludDY0KSBtYWludGVuYW5jZV93b3JrX21l bSAqIDggLyAxMDsKKwlpbnQJCQlhdXhfd29ya19tZW1fcGFydCA9IG1haW50ZW5hbmNlX3dvcmtf bWVtIC8gMTA7CiAKIAl7CiAJCWNvbnN0IGludAlwcm9ncmVzc19pbmRleFtdID0gewpAQCAtMzM4 OSw2ICszNTcwLDcgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNu YXBzaG90IHNuYXBzaG90KQogCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwogCiAJaW5kZXhSZWxhdGlv biA9IGluZGV4X29wZW4oaW5kZXhJZCwgUm93RXhjbHVzaXZlTG9jayk7CisJYXV4SW5kZXhSZWxh dGlvbiA9IGluZGV4X29wZW4oYXV4SW5kZXhJZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkvKgog CSAqIEZldGNoIGluZm8gbmVlZGVkIGZvciBpbmRleF9pbnNlcnQuICAoWW91IG1pZ2h0IHRoaW5r IHRoaXMgc2hvdWxkIGJlCkBAIC0zNDEzLDE1ICszNTk1LDMwIEBAIHZhbGlkYXRlX2luZGV4KE9p ZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlpdmluZm8uc3RyYXRl Z3kgPSBOVUxMOwogCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IHRydWU7CiAKKwkvKgorCSAqIENv cHkgYWxsIGluZm8gdG8gYXV4aWxpYXJ5IGluZm8sIGNoYW5naW5nIG9ubHkgcmVsYXRpb24uCisJ ICovCisJYXV4aXZpbmZvID0gaXZpbmZvOworCWF1eGl2aW5mby5pbmRleCA9IGF1eEluZGV4UmVs YXRpb247CisKIAkvKgogCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUgc29y dCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwogCSAqIGl0ZW0gcG9pbnRlcnMuICBUaGlz IGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJlY2F1c2UgVElECiAJICog aXMgYSBwYXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdoZXJlYXMgaW50 OCBpcwogCSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMuCiAJICovCisJYXV4U3Rh dGUudHVwbGVzb3J0ID0gdHVwbGVzb3J0X2JlZ2luX2RhdHVtKElOVDhPSUQsIEludDhMZXNzT3Bl cmF0b3IsCisJCQkJCQkJCQkJICAgSW52YWxpZE9pZCwgZmFsc2UsCisJCQkJCQkJCQkJICAgYXV4 X3dvcmtfbWVtX3BhcnQsCisJCQkJCQkJCQkJICAgTlVMTCwgVFVQTEVTT1JUX05PTkUpOworCWF1 eFN0YXRlLmh0dXBzID0gYXV4U3RhdGUuaXR1cHMgPSBhdXhTdGF0ZS50dXBzX2luc2VydGVkID0g MDsKKworCSh2b2lkKSBpbmRleF9idWxrX2RlbGV0ZSgmYXV4aXZpbmZvLCBOVUxMLAorCQkJCQkJ CSB2YWxpZGF0ZV9pbmRleF9jYWxsYmFjaywgJmF1eFN0YXRlKTsKKwogCXN0YXRlLnR1cGxlc29y dCA9IHR1cGxlc29ydF9iZWdpbl9kYXR1bShJTlQ4T0lELCBJbnQ4TGVzc09wZXJhdG9yLAogCQkJ CQkJCQkJCQlJbnZhbGlkT2lkLCBmYWxzZSwKLQkJCQkJCQkJCQkJbWFpbnRlbmFuY2Vfd29ya19t ZW0sCisJCQkJCQkJCQkJCShpbnQpIG1haW5fd29ya19tZW1fcGFydCwKIAkJCQkJCQkJCQkJTlVM TCwgVFVQTEVTT1JUX05PTkUpOwogCXN0YXRlLmh0dXBzID0gc3RhdGUuaXR1cHMgPSBzdGF0ZS50 dXBzX2luc2VydGVkID0gMDsKIApAQCAtMzQ0NCwyNyArMzY0MSwzMCBAQCB2YWxpZGF0ZV9pbmRl eChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMywgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNzX3Zh bHMpOwogCX0KIAl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoc3RhdGUudHVwbGVzb3J0KTsKKwl0dXBs ZXNvcnRfcGVyZm9ybXNvcnQoYXV4U3RhdGUudHVwbGVzb3J0KTsKIAogCS8qCi0JICogTm93IHNj YW4gdGhlIGhlYXAgYW5kICJtZXJnZSIgaXQgd2l0aCB0aGUgaW5kZXgKKwkgKiBOb3cgbWVyZ2Ug Ym90aCBpbmRleGVzCiAJICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVT U19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFM SURBVEVfVEFCTEVTQ0FOKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJ REFURV9JRFhNRVJHRSk7CiAJdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihoZWFwUmVsYXRpb24s CiAJCQkJCQkJICBpbmRleFJlbGF0aW9uLAogCQkJCQkJCSAgaW5kZXhJbmZvLAogCQkJCQkJCSAg c25hcHNob3QsCi0JCQkJCQkJICAmc3RhdGUpOworCQkJCQkJCSAgJnN0YXRlLAorCQkJCQkJCSAg JmF1eFN0YXRlKTsKIAotCS8qIERvbmUgd2l0aCB0dXBsZXNvcnQgb2JqZWN0ICovCi0JdHVwbGVz b3J0X2VuZChzdGF0ZS50dXBsZXNvcnQpOworCS8qIFR1cGxlIHNvcnQgY2xvc2VkIGJ5IHRhYmxl X2luZGV4X3ZhbGlkYXRlX3NjYW4gKi8KKwlBc3NlcnQoc3RhdGUudHVwbGVzb3J0ID09IE5VTEwg JiYgYXV4U3RhdGUudHVwbGVzb3J0ID09IE5VTEwpOwogCiAJLyogTWFrZSBzdXJlIHRvIHJlbGVh c2UgcmVzb3VyY2VzIGNhY2hlZCBpbiBpbmRleEluZm8gKGlmIG5lZWRlZCkuICovCiAJaW5kZXhf aW5zZXJ0X2NsZWFudXAoaW5kZXhSZWxhdGlvbiwgaW5kZXhJbmZvKTsKIAogCWVsb2coREVCVUcy LAotCQkgInZhbGlkYXRlX2luZGV4IGZvdW5kICUuMGYgaGVhcCB0dXBsZXMsICUuMGYgaW5kZXgg dHVwbGVzOyBpbnNlcnRlZCAlLjBmIG1pc3NpbmcgdHVwbGVzIiwKLQkJIHN0YXRlLmh0dXBzLCBz dGF0ZS5pdHVwcywgc3RhdGUudHVwc19pbnNlcnRlZCk7CisJCSAidmFsaWRhdGVfaW5kZXggZmV0 Y2hlZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGluZGV4IHR1cGxlczsiCisJCQkJCQkiICUuMGYg YXV4IGluZGV4IHR1cGxlczsgaW5zZXJ0ZWQgJS4wZiBtaXNzaW5nIHR1cGxlcyIsCisJCSBzdGF0 ZS5odHVwcywgc3RhdGUuaXR1cHMsIGF1eFN0YXRlLml0dXBzLCBzdGF0ZS50dXBzX2luc2VydGVk KTsKIAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVu Y3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0zNDcz LDYgKzM2NzMsNyBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25h cHNob3Qgc25hcHNob3QpCiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2 ZV9zZWNfY29udGV4dCk7CiAKIAkvKiBDbG9zZSByZWxzLCBidXQga2VlcCBsb2NrcyAqLworCWlu ZGV4X2Nsb3NlKGF1eEluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAJaW5kZXhfY2xvc2UoaW5kZXhS ZWxhdGlvbiwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsYXRpb24sIE5vTG9jayk7CiB9 CkBAIC0zNTMzLDYgKzM3MzQsMTEgQEAgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBpbmRleElk LCBJbmRleFN0YXRlRmxhZ3NBY3Rpb24gYWN0aW9uKQogCQkJQXNzZXJ0KCFpbmRleEZvcm0tPmlu ZGlzdmFsaWQpOwogCQkJaW5kZXhGb3JtLT5pbmRpc3ZhbGlkID0gdHJ1ZTsKIAkJCWJyZWFrOwor CQljYXNlIElOREVYX0RST1BfQ0xFQVJfUkVBRFk6CisJCQkvKiBDbGVhciBpbmRpc3JlYWR5IGR1 cmluZyBhIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgc2VxdWVuY2UgKi8KKwkJCUFzc2VydCgh aW5kZXhGb3JtLT5pbmRpc3ZhbGlkKTsKKwkJCWluZGV4Rm9ybS0+aW5kaXNyZWFkeSA9IGZhbHNl OworCQkJYnJlYWs7CiAJCWNhc2UgSU5ERVhfRFJPUF9DTEVBUl9WQUxJRDoKIAogCQkJLyoKQEAg LTM4MDQsNiArNDAxMCwxMyBAQCByZWluZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgaW5kZXhJZCwKIAkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHMgPSBOVUxMOwog CX0KIAorCS8qIEF1eGlsaWFyeSBpbmRleGVzIGFyZSBub3QgYWxsb3dlZCB0byBiZSByZWJ1aWx0 ICovCisJaWYgKGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQllcmVwb3J0KEVSUk9SLAorCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygicmVp bmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlc1wiIG5vdCBzdXBwb3J0ZWQiLAorCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShpUmVsKSkpKTsKKwogCS8qIFN1cHByZXNzIHVzZSBvZiB0aGUg dGFyZ2V0IGluZGV4IHdoaWxlIHJlYnVpbGRpbmcgaXQgKi8KIAlTZXRSZWluZGV4UHJvY2Vzc2lu ZyhoZWFwSWQsIGluZGV4SWQpOwogCkBAIC00MDQ2LDYgKzQyNTksNyBAQCByZWluZGV4X3JlbGF0 aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBmbGFncywKIAl7CiAJ CU9pZAkJCWluZGV4T2lkID0gbGZpcnN0X29pZChpbmRleElkKTsKIAkJT2lkCQkJaW5kZXhOYW1l c3BhY2VJZCA9IGdldF9yZWxfbmFtZXNwYWNlKGluZGV4T2lkKTsKKwkJT2lkCQkJaW5kZXhBbSA9 IGdldF9yZWxfcmVsYW0oaW5kZXhPaWQpOwogCiAJCS8qCiAJCSAqIFNraXAgYW55IGludmFsaWQg aW5kZXhlcyBvbiBhIFRPQVNUIHRhYmxlLiAgVGhlc2UgY2FuIG9ubHkgYmUKQEAgLTQwNzEsNiAr NDI4NSwxOCBAQCByZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQg cmVsaWQsIGludCBmbGFncywKIAkJCWNvbnRpbnVlOwogCQl9CiAKKwkJaWYgKGluZGV4QW0gPT0g U1RJUl9BTV9PSUQpCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWlu ZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzLiVzXCIiLAorCQkJCQkJCWdldF9uYW1lc3BhY2Vf bmFtZShpbmRleE5hbWVzcGFjZUlkKSwKKwkJCQkJCQlnZXRfcmVsX25hbWUoaW5kZXhPaWQpKSkp OworCQkJaWYgKGZsYWdzICYgUkVJTkRFWF9SRUxfU1VQUFJFU1NfSU5ERVhfVVNFKQorCQkJCVJl bW92ZVJlaW5kZXhQZW5kaW5nKGluZGV4T2lkKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJcmVp bmRleF9pbmRleChzdG10LCBpbmRleE9pZCwgIShmbGFncyAmIFJFSU5ERVhfUkVMX0NIRUNLX0NP TlNUUkFJTlRTKSwKIAkJCQkJICBwZXJzaXN0ZW5jZSwgcGFyYW1zKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDE1ZWZiMDJiYWRiLi5lZGQ2MWMyOTRhNiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTI4OCwxNiArMTI4OCwxNyBAQCBDUkVB VEUgVklFVyBwZ19zdGF0X3Byb2dyZXNzX2NyZWF0ZV9pbmRleCBBUwogICAgICAgICAgICAgICAg ICAgICAgIEVORCBBUyBjb21tYW5kLAogICAgICAgICBDQVNFIFMucGFyYW0xMCBXSEVOIDAgVEhF TiAnaW5pdGlhbGl6aW5nJwogICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDEgVEhFTiAnd2Fp dGluZyBmb3Igd3JpdGVycyBiZWZvcmUgYnVpbGQnCi0gICAgICAgICAgICAgICAgICAgICAgIFdI RU4gMiBUSEVOICdidWlsZGluZyBpbmRleCcgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgV0hF TiAyIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgdG8gdXNlIGF1eGlsaWFyeSBpbmRleCcKKyAg ICAgICAgICAgICAgICAgICAgICAgV0hFTiAzIFRIRU4gJ2J1aWxkaW5nIGluZGV4JyB8fAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ09BTEVTQ0UoKCc6ICcgfHwgcGdfaW5kZXhhbV9wcm9n cmVzc19waGFzZW5hbWUoUy5wYXJhbTk6Om9pZCwgUy5wYXJhbTExKSksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnJykKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAz IFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgYmVmb3JlIHZhbGlkYXRpb24nCi0gICAgICAgICAg ICAgICAgICAgICAgIFdIRU4gNCBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRl eCcKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246 IHNvcnRpbmcgdHVwbGVzJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDYgVEhFTiAnaW5k ZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgdGFibGUnCi0gICAgICAgICAgICAgICAgICAgICAgIFdI RU4gNyBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJwotICAgICAgICAgICAgICAgICAg ICAgICBXSEVOIDggVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFya2luZyBkZWFk JwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDkgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVy cyBiZWZvcmUgZHJvcHBpbmcnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNCBUSEVOICd3 YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0aW9uJworICAgICAgICAgICAgICAgICAg ICAgICBXSEVOIDUgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgaW5kZXgnCisgICAg ICAgICAgICAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5n IHR1cGxlcycKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA3IFRIRU4gJ2luZGV4IHZhbGlk YXRpb246IG1lcmdpbmcgaW5kZXhlcycKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA4IFRI RU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnCisgICAgICAgICAgICAgICAgICAgICAgIFdI RU4gOSBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnCisgICAg ICAgICAgICAgICAgICAgICAgIFdIRU4gMTAgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZv cmUgZHJvcHBpbmcnCiAgICAgICAgICAgICAgICAgICAgICAgIEVORCBhcyBwaGFzZSwKICAgICAg ICAgUy5wYXJhbTQgQVMgbG9ja2Vyc190b3RhbCwKICAgICAgICAgUy5wYXJhbTUgQVMgbG9ja2Vy c19kb25lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCmluZGV4IDg3NGE4ZmM4OWFkLi4wZWUyZmQ1ZTdk ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMzI1LDcgKzMyNSw4IEBAIGNyZWF0ZV90b2Fz dF90YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJ CQkJIEJUUkVFX0FNX09JRCwKIAkJCQkgcmVsLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UsCiAJCQkJ IGNvbGxhdGlvbklkcywgb3BjbGFzc0lkcywgTlVMTCwgY29sb3B0aW9ucywgTlVMTCwgKERhdHVt KSAwLAotCQkJCSBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSwgMCwgdHJ1ZSwgdHJ1ZSwgTlVMTCk7 CisJCQkJIElOREVYX0NSRUFURV9JU19QUklNQVJZLCAwLCB0cnVlLCB0cnVlLCBOVUxMLAorCQkJ CSB0b2FzdF9yZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpOwogCiAJdGFibGVfY2xvc2UodG9h c3RfcmVsLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDBmNzVkZWJl N2YxLi5kMmIyM2M0NGUxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE4Miw2ICsx ODIsNyBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSBib29sIGlzV2l0 aG91dE92ZXJsYXBzKQogewogCWJvb2wJCWlzY29uc3RyYWludDsKKwlib29sCQlpc2F1eGlsaWFy eTsKIAlPaWQJCSAgICp0eXBlSWRzOwogCU9pZAkJICAgKmNvbGxhdGlvbklkczsKIAlPaWQJCSAg ICpvcGNsYXNzSWRzOwpAQCAtMjMyLDYgKzIzMyw3IEBAIENoZWNrSW5kZXhDb21wYXRpYmxlKE9p ZCBvbGRJZCwKIAogCWFtY2Fub3JkZXIgPSBhbVJvdXRpbmUtPmFtY2Fub3JkZXI7CiAJYW1zdW1t YXJpemluZyA9IGFtUm91dGluZS0+YW1zdW1tYXJpemluZzsKKwlpc2F1eGlsaWFyeSA9IGFjY2Vz c01ldGhvZElkID09IFNUSVJfQU1fT0lEOwogCiAJLyoKIAkgKiBDb21wdXRlIHRoZSBvcGVyYXRv ciBjbGFzc2VzLCBjb2xsYXRpb25zLCBhbmQgZXhjbHVzaW9uIG9wZXJhdG9ycyBmb3IKQEAgLTI0 Myw3ICsyNDUsOCBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJICovCiAJaW5k ZXhJbmZvID0gbWFrZUluZGV4SW5mbyhudW1iZXJPZkF0dHJpYnV0ZXMsIG51bWJlck9mQXR0cmli dXRlcywKIAkJCQkJCQkgIGFjY2Vzc01ldGhvZElkLCBOSUwsIE5JTCwgZmFsc2UsIGZhbHNlLAot CQkJCQkJCSAgZmFsc2UsIGZhbHNlLCBhbXN1bW1hcml6aW5nLCBpc1dpdGhvdXRPdmVybGFwcyk7 CisJCQkJCQkJICBmYWxzZSwgZmFsc2UsIGFtc3VtbWFyaXppbmcsCisJCQkJCQkJICBpc1dpdGhv dXRPdmVybGFwcywgaXNhdXhpbGlhcnkpOwogCXR5cGVJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBu dW1iZXJPZkF0dHJpYnV0ZXMpOwogCWNvbGxhdGlvbklkcyA9IHBhbGxvY19hcnJheShPaWQsIG51 bWJlck9mQXR0cmlidXRlcyk7CiAJb3BjbGFzc0lkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJl ck9mQXR0cmlidXRlcyk7CkBAIC01NTMsNiArNTU2LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiB7CiAJYm9vbAkJY29uY3VycmVudDsKIAljaGFyCSAgICppbmRleFJlbGF0aW9uTmFtZTsK KwljaGFyCSAgICphdXhJbmRleFJlbGF0aW9uTmFtZSA9IE5VTEw7CiAJY2hhcgkgICAqYWNjZXNz TWV0aG9kTmFtZTsKIAlPaWQJCSAgICp0eXBlSWRzOwogCU9pZAkJICAgKmNvbGxhdGlvbklkczsK QEAgLTU2Miw2ICs1NjYsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlPaWQJCQluYW1l c3BhY2VJZDsKIAlPaWQJCQl0YWJsZXNwYWNlSWQ7CiAJT2lkCQkJY3JlYXRlZENvbnN0cmFpbnRJ ZCA9IEludmFsaWRPaWQ7CisJT2lkCQkJYXV4SW5kZXhSZWxhdGlvbklkID0gSW52YWxpZE9pZDsK IAlMaXN0CSAgICppbmRleENvbE5hbWVzOwogCUxpc3QJICAgKmFsbEluZGV4UGFyYW1zOwogCVJl bGF0aW9uCXJlbDsKQEAgLTU4Myw2ICs1ODgsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwK IAlpbnQJCQludW1iZXJPZktleUF0dHJpYnV0ZXM7CiAJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47 CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCU9iamVjdEFkZHJlc3MgYXV4QWRkcmVzczsKIAlM b2NrUmVsSWQJaGVhcHJlbGlkOwogCUxPQ0tUQUcJCWhlYXBsb2NrdGFnOwogCUxPQ0tNT0RFCWxv Y2ttb2RlOwpAQCAtODMzLDYgKzgzOSwxNSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJ CQkJCQkJCQkJc3RtdC0+ZXhjbHVkZU9wTmFtZXMsCiAJCQkJCQkJCQkJCXN0bXQtPnByaW1hcnks CiAJCQkJCQkJCQkJCXN0bXQtPmlzY29uc3RyYWludCk7CisJLyoKKwkgKiBTZWxlY3QgbmFtZSBm b3IgYXV4aWxpYXJ5IGluZGV4CisJICovCisJaWYgKGNvbmN1cnJlbnQpCisJCWF1eEluZGV4UmVs YXRpb25OYW1lID0gQ2hvb3NlUmVsYXRpb25OYW1lKGluZGV4UmVsYXRpb25OYW1lLAorCQkJCQkJ CQkJCQkJICBOVUxMLAorCQkJCQkJCQkJCQkJICAiY2NhdXgiLAorCQkJCQkJCQkJCQkJICBuYW1l c3BhY2VJZCwKKwkJCQkJCQkJCQkJCSAgZmFsc2UpOwogCiAJLyoKIAkgKiBsb29rIHVwIHRoZSBh Y2Nlc3MgbWV0aG9kLCB2ZXJpZnkgaXQgY2FuIGhhbmRsZSB0aGUgcmVxdWVzdGVkIGZlYXR1cmVz CkBAIC05MjgsNyArOTQzLDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCQkJICAh Y29uY3VycmVudCwKIAkJCQkJCQkgIGNvbmN1cnJlbnQsCiAJCQkJCQkJICBhbWlzc3VtbWFyaXpp bmcsCi0JCQkJCQkJICBzdG10LT5pc3dpdGhvdXRvdmVybGFwcyk7CisJCQkJCQkJICBzdG10LT5p c3dpdGhvdXRvdmVybGFwcywKKwkJCQkJCQkgIGZhbHNlKTsKIAogCXR5cGVJZHMgPSBwYWxsb2Nf YXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCWNvbGxhdGlvbklkcyA9IHBhbGxvY19h cnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CkBAIC0xMjUxLDcgKzEyNjcsOCBAQCBEZWZp bmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJIGNvbG9wdGlvbnMsIE5VTEwsIHJlbG9wdGlvbnMs CiAJCQkJCSBmbGFncywgY29uc3RyX2ZsYWdzLAogCQkJCQkgYWxsb3dTeXN0ZW1UYWJsZU1vZHMs ICFjaGVja19yaWdodHMsCi0JCQkJCSAmY3JlYXRlZENvbnN0cmFpbnRJZCk7CisJCQkJCSAmY3Jl YXRlZENvbnN0cmFpbnRJZCwKKwkJCQkJIHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CiAK IAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25JZCwgaW5kZXhSZWxh dGlvbklkKTsKIApAQCAtMTU5Myw2ICsxNjEwLDE2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlk LAogCQlyZXR1cm4gYWRkcmVzczsKIAl9CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVu dCBidWlsZCAtIGNyZWF0ZSBhdXhpbGlhcnkgaW5kZXggcmVjb3JkLgorCSAqLworCWlmIChjb25j dXJyZW50KQorCXsKKwkJYXV4SW5kZXhSZWxhdGlvbklkID0gaW5kZXhfY29uY3VycmVudGx5X2Ny ZWF0ZV9hdXgocmVsLCBpbmRleFJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCXRhYmxlc3BhY2VJZCwg YXV4SW5kZXhSZWxhdGlvbk5hbWUpOworCQlPYmplY3RBZGRyZXNzU2V0KGF1eEFkZHJlc3MsIFJl bGF0aW9uUmVsYXRpb25JZCwgYXV4SW5kZXhSZWxhdGlvbklkKTsKKwl9CisKIAlBdEVPWGFjdF9H VUMoZmFsc2UsIHJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOwogCVNldFVzZXJJZEFuZFNlY0NvbnRleHQo cm9vdF9zYXZlX3VzZXJpZCwgcm9vdF9zYXZlX3NlY19jb250ZXh0KTsKIApAQCAtMTYyMSwxMSAr MTY0OCwxMSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkvKgogCSAqIEZvciBhIGNvbmN1 cnJlbnQgYnVpbGQsIGl0J3MgaW1wb3J0YW50IHRvIG1ha2UgdGhlIGNhdGFsb2cgZW50cmllcwog CSAqIHZpc2libGUgdG8gb3RoZXIgdHJhbnNhY3Rpb25zIGJlZm9yZSB3ZSBzdGFydCB0byBidWls ZCB0aGUgaW5kZXguIFRoYXQKLQkgKiB3aWxsIHByZXZlbnQgdGhlbSBmcm9tIG1ha2luZyBpbmNv bXBhdGlibGUgSE9UIHVwZGF0ZXMuICBUaGUgbmV3IGluZGV4Ci0JICogd2lsbCBiZSBtYXJrZWQg bm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLCBzbyB0aGF0IG5vIG9uZSBlbHNlCi0J ICogdHJpZXMgdG8gZWl0aGVyIGluc2VydCBpbnRvIGl0IG9yIHVzZSBpdCBmb3IgcXVlcmllcy4K KwkgKiB3aWxsIHByZXZlbnQgdGhlbSBmcm9tIG1ha2luZyBpbmNvbXBhdGlibGUgSE9UIHVwZGF0 ZXMuIE5ldyBpbmRleGVzCisJICogKG1haW4gYW5kIGF1eGlsaWFyeSkgd2lsbCBiZSBtYXJrZWQg bm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLAorCSAqIHNvIHRoYXQgbm8gb25lIGVs c2UgdHJpZXMgdG8gZWl0aGVyIGluc2VydCBpbnRvIGl0IG9yIHVzZSBpdCBmb3IgcXVlcmllcy4K IAkgKgotCSAqIFdlIG11c3QgY29tbWl0IG91ciBjdXJyZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQg dGhlIGluZGV4IGJlY29tZXMKKwkgKiBXZSBtdXN0IGNvbW1pdCBvdXIgY3VycmVudCB0cmFuc2Fj dGlvbiBzbyB0aGF0IHRoZSBpbmRleGVzIGJlY29tZXMKIAkgKiB2aXNpYmxlOyB0aGVuIHN0YXJ0 IGFub3RoZXIuICBOb3RlIHRoYXQgYWxsIHRoZSBkYXRhIHN0cnVjdHVyZXMgd2UganVzdAogCSAq IGJ1aWx0IGFyZSBsb3N0IGluIHRoZSBjb21taXQuICBUaGUgb25seSBkYXRhIHdlIGtlZXAgcGFz dCBoZXJlIGFyZSB0aGUKIAkgKiByZWxhdGlvbiBJRHMuCkBAIC0xNjM1LDcgKzE2NjIsNyBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBjYW5ub3QgYmxvY2ssIGV2ZW4gaWYgc29tZW9u ZSBlbHNlIGlzIHdhaXRpbmcgZm9yIGFjY2VzcywgYmVjYXVzZSB3ZQogCSAqIGFscmVhZHkgaGF2 ZSB0aGUgc2FtZSBsb2NrIHdpdGhpbiBvdXIgdHJhbnNhY3Rpb24uCiAJICoKLQkgKiBOb3RlOiB3 ZSBkb24ndCBjdXJyZW50bHkgYm90aGVyIHdpdGggYSBzZXNzaW9uIGxvY2sgb24gdGhlIGluZGV4 LAorCSAqIE5vdGU6IHdlIGRvbid0IGN1cnJlbnRseSBib3RoZXIgd2l0aCBhIHNlc3Npb24gbG9j ayBvbiB0aGUgaW5kZXhlcywKIAkgKiBiZWNhdXNlIHRoZXJlIGFyZSBubyBvcGVyYXRpb25zIHRo YXQgY291bGQgY2hhbmdlIGl0cyBzdGF0ZSB3aGlsZSB3ZQogCSAqIGhvbGQgbG9jayBvbiB0aGUg cGFyZW50IHRhYmxlLiAgVGhpcyBtaWdodCBuZWVkIHRvIGNoYW5nZSBsYXRlci4KIAkgKi8KQEAg LTE2NzQsNyArMTcwMSw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIHdpdGggdGhl IG9sZCBsaXN0IG9mIGluZGV4ZXMuICBVc2UgU2hhcmVMb2NrIHRvIGNvbnNpZGVyIHJ1bm5pbmcK IAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBob2xkIGxvY2tzIHRoYXQgcGVybWl0IHdyaXRpbmcgdG8g dGhlIHRhYmxlLiAgTm90ZSB3ZQogCSAqIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IHhhY3Rz IHRoYXQgb3BlbiB0aGUgdGFibGUgZm9yIHdyaXRpbmcgYWZ0ZXIKLQkgKiB0aGlzIHBvaW50OyB0 aGV5IHdpbGwgc2VlIHRoZSBuZXcgaW5kZXggd2hlbiB0aGV5IG9wZW4gaXQuCisJICogdGhpcyBw b2ludDsgdGhleSB3aWxsIHNlZSB0aGUgbmV3IGluZGV4ZXMgd2hlbiB0aGV5IG9wZW4gaXQuCiAJ ICoKIAkgKiBOb3RlOiB0aGUgcmVhc29uIHdlIHVzZSBhY3R1YWwgbG9jayBhY3F1aXNpdGlvbiBo ZXJlLCByYXRoZXIgdGhhbiBqdXN0CiAJICogY2hlY2tpbmcgdGhlIFByb2NBcnJheSBhbmQgc2xl ZXBpbmcsIGlzIHRoYXQgZGVhZGxvY2sgaXMgcG9zc2libGUgaWYKQEAgLTE2ODYsMTQgKzE3MTMs NDQgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAkvKgogCSAqIEF0IHRoaXMgbW9tZW50 IHdlIGFyZSBzdXJlIHRoYXQgdGhlcmUgYXJlIG5vIHRyYW5zYWN0aW9ucyB3aXRoIHRoZQotCSAq IHRhYmxlIG9wZW4gZm9yIHdyaXRlIHRoYXQgZG9uJ3QgaGF2ZSB0aGlzIG5ldyBpbmRleCBpbiB0 aGVpciBsaXN0IG9mCisJICogdGFibGUgb3BlbiBmb3Igd3JpdGUgdGhhdCBkb24ndCBoYXZlIHRo aXMgbmV3IGluZGV4ZXMgaW4gdGhlaXIgbGlzdCBvZgogCSAqIGluZGV4ZXMuICBXZSBoYXZlIHdh aXRlZCBvdXQgYWxsIHRoZSBleGlzdGluZyB0cmFuc2FjdGlvbnMgYW5kIGFueSBuZXcKLQkgKiB0 cmFuc2FjdGlvbiB3aWxsIGhhdmUgdGhlIG5ldyBpbmRleCBpbiBpdHMgbGlzdCwgYnV0IHRoZSBp bmRleCBpcyBzdGlsbAotCSAqIG1hcmtlZCBhcyAibm90LXJlYWR5LWZvci1pbnNlcnRzIi4gIFRo ZSBpbmRleCBpcyBjb25zdWx0ZWQgd2hpbGUKKwkgKiB0cmFuc2FjdGlvbiB3aWxsIGhhdmUgYm90 aCBuZXcgaW5kZXhlcyBpbiBpdHMgbGlzdCwgYnV0IGluZGV4ZXMgYXJlIHN0aWxsCisJICogbWFy a2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLiBUaGUgaW5kZXhlcyBhcmUgY29uc3VsdGVk IHdoaWxlCiAJICogZGVjaWRpbmcgSE9ULXNhZmV0eSB0aG91Z2guICBUaGlzIGFycmFuZ2VtZW50 IGVuc3VyZXMgdGhhdCBubyBuZXcgSE9UCiAJICogY2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJl IHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBk aWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgorCSAqIE5vdyBjYWxsIGJ1aWxkIG9uIGF1eGlsaWFy eSBpbmRleC4gSW5kZXggd2lsbCBiZSBjcmVhdGVkIGVtcHR5IHdpdGhvdXQKKwkgKiBhbnkgYWN0 dWFsIGhlYXAgc2NhbiwgYnV0IG1hcmtlZCBhcyAicmVhZHktZm9yLWluc2VydHMiLiBUaGUgZ29h bCBvZgorCSAqIHRoYXQgaW5kZXggaXMgYWNjdW11bGF0ZSBuZXcgdHVwbGVzIHdoaWxlIG1haW4g aW5kZXggaXMgYWN0dWFsbHkgYnVpbHQuCisJICovCisKKwkvKiBTZXQgQWN0aXZlU25hcHNob3Qg c2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCisJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKKwlpbmRleF9jb25jdXJyZW50 bHlfYnVpbGQodGFibGVJZCwgYXV4SW5kZXhSZWxhdGlvbklkKTsKKwkvKiB3ZSBjYW4gZG8gYXdh eSB3aXRoIG91ciBzbmFwc2hvdCAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyog VGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxp ZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwor CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAor CQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKKwkvKgorCSAqIE5vdyB3 ZSBuZWVkIHRvIGVuc3VyZSBhcmUgbm8gdHJhbnNhY3Rpb25zIHdpdGggdGhlIHdpdGggYXV4aWxp YXJ5IGluZGV4CisJICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLgorCSAqLwor CVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBTaGFyZUxvY2ssIHRydWUpOworCisJLyoKKwkg KiBBdCB0aGlzIG1vbWVudCB3ZSBhcmUgc3VyZSB3aGF0IGFsbCBuZXcgdHVwbGVzIGluIHRhYmxl IGFyZSBpbnNlcnRlZCBpbnRvCisJICogYXV4aWxpYXJ5IGluZGV4LiBOb3cgaXQgaXMgdGltZSB0 byBidWlsZCB0aGUgdGFyZ2V0IGluZGV4IGl0c2VsZi4KKwkgKgogCSAqIFdlIG5vdyB0YWtlIGEg bmV3IHNuYXBzaG90LCBhbmQgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdAog CSAqIGFyZSB2aXNpYmxlIGluIHRoaXMgc25hcHNob3QuICBXZSBjYW4gYmUgc3VyZSB0aGF0IGFu eSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0 aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRhdGVzIG1hZGUKQEAgLTE3MjgsOSArMTc4NSwyOCBA QCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiB0aGUgaW5kZXggbWFya2VkIGFzIHJlYWQt b25seSBmb3IgdXBkYXRlcy4KIAkgKi8KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzIpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CiAJ V2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIFNoYXJlTG9jaywgdHJ1ZSk7CiAKKwkvKgorCSAq IFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBl bnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJLyoKKwkgKiBOb3cgdGFyZ2V0IGlu ZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkiIGZvciBhbGwgdHJhbnNhY3Rpb25zLiBTbywgYXV4aWxp YXJ5CisJICogaW5kZXggaXMgbm90IG1vcmUgbmVlZGVkLiBTbywgc3RhcnQgcmVtb3ZpbmcgcHJv Y2VzcyBieSByZXZlcnRpbmcgInJlYWR5IgorCSAqIGZsYWcuCisJICovCisJaW5kZXhfc2V0X3N0 YXRlX2ZsYWdzKGF1eEluZGV4UmVsYXRpb25JZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7CisJ UG9wQWN0aXZlU25hcHNob3QoKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0 YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxk cyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCWlmIChzYWZlX2luZGV4KQor CQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCiAJLyoKIAkgKiBOb3cgdGFrZSB0aGUgInJl ZmVyZW5jZSBzbmFwc2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgoKQog CSAqIHRvIGZpbHRlciBjYW5kaWRhdGUgdHVwbGVzLiAgQmV3YXJlISAgVGhlcmUgbWlnaHQgc3Rp bGwgYmUgc25hcHNob3RzIGluCkBAIC0xNzQ4LDI0ICsxODI0LDE0IEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCSAqLwogCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7Ci0KIAkvKgot CSAqIFNjYW4gdGhlIGluZGV4IGFuZCB0aGUgaGVhcCwgaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4 IGVudHJpZXMuCi0JICovCi0JdmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklk LCBzbmFwc2hvdCk7Ci0KLQkvKgotCSAqIERyb3AgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdC4gIFdl IG11c3QgZG8gdGhpcyBiZWZvcmUgd2FpdGluZyBvdXQgb3RoZXIKLQkgKiBzbmFwc2hvdCBob2xk ZXJzLCBlbHNlIHdlIHdpbGwgZGVhZGxvY2sgYWdhaW5zdCBvdGhlciBwcm9jZXNzZXMgYWxzbwot CSAqIGRvaW5nIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFksIHdoaWNoIHdvdWxkIHNlZSBvdXIg c25hcHNob3QgYXMgb25lCi0JICogdGhleSBtdXN0IHdhaXQgZm9yLiAgQnV0IGZpcnN0LCBzYXZl IHRoZSBzbmFwc2hvdCdzIHhtaW4gdG8gdXNlIGFzCi0JICogbGltaXRYbWluIGZvciBHZXRDdXJy ZW50VmlydHVhbFhJRHMoKS4KKwkgKiBNZXJnZSBjb250ZW50IG9mIGF1eGlsaWFyeSBhbmQgdGFy Z2V0IGluZGV4ZXMgLSBpbnNlcnQgYW55IG1pc3NpbmcgaW5kZXggZW50cmllcy4KIAkgKi8KKwl2 YWxpZGF0ZV9pbmRleCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQsIGF1eEluZGV4UmVsYXRpb25J ZCwgc25hcHNob3QpOwogCWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWluOwogCiAJUG9wQWN0aXZl U25hcHNob3QoKTsKIAlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwotCiAJLyoKIAkgKiBU aGUgc25hcHNob3Qgc3Vic3lzdGVtIGNvdWxkIHN0aWxsIGNvbnRhaW4gcmVnaXN0ZXJlZCBzbmFw c2hvdHMgdGhhdAogCSAqIGFyZSBob2xkaW5nIGJhY2sgb3VyIHByb2Nlc3MncyBhZHZlcnRpc2Vk IHhtaW47IGluIHBhcnRpY3VsYXIsIGlmCkBAIC0xNzkyLDcgKzE4NTgsNyBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAkgKi8KIAlJTkpFQ1RJT05fUE9JTlQoImRlZmluZV9pbmRleF9iZWZv cmVfc2V0X3ZhbGlkIiwgTlVMTCk7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf V0FJVF8zKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQpOwogCVdh aXRGb3JPbGRlclNuYXBzaG90cyhsaW1pdFhtaW4sIHRydWUpOwogCiAJLyoKQEAgLTE4MTcsNiAr MTg4Myw1MyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiB0byByZXBsYW47IHNvIHJl bGNhY2hlIGZsdXNoIG9uIHRoZSBpbmRleCBpdHNlbGYgd2FzIHN1ZmZpY2llbnQuKQogCSAqLwog CUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlQnlSZWxpZChoZWFwcmVsaWQucmVsSWQpOworCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkv KiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVh bGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7 CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CisJLyogTm93IHdh aXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBzZWUgYXV4aWxpYXJ5IGFzICJub24tcmVhZHkgZm9y IGluc2VydHMiICovCisJV2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2ssIHRydWUpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52 b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCSAqIGhhdmUgYSB2YWxpZCBz bmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hv dCgpKTsKKwkvKiBOb3cgaXQgaXMgdGltZSB0byBtYXJrIGF1eGlsaWFyeSBpbmRleCBhcyBkZWFk ICovCisJaW5kZXhfY29uY3VycmVudGx5X3NldF9kZWFkKHRhYmxlSWQsIGF1eEluZGV4UmVsYXRp b25JZCk7CisJUG9wQWN0aXZlU25hcHNob3QoKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBUZWxsIGNvbmN1cnJlbnQg aW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJaWYgKHNh ZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisKKwlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNik7CisJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2Fj dGlvbiB0byBpZ25vcmUgYXV4aWxpYXJ5IGJlY2F1c2UgaXQgaXMgZGVhZCAqLworCVdhaXRGb3JM b2NrZXJzKGhlYXBsb2NrdGFnLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKKworCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkv KgorCSAqIERyb3AgYXV4aWxpYXJ5IGluZGV4LgorCSAqCisJICogVXNlIFBFUkZPUk1fREVMRVRJ T05fQ09OQ1VSUkVOVF9MT0NLIHNvIHRoYXQgaW5kZXhfZHJvcCgpIHVzZXMgdGhlCisJICogcmln aHQgbG9jayBsZXZlbC4KKwkgKi8KKwlwZXJmb3JtRGVsZXRpb24oJmF1eEFkZHJlc3MsIERST1Bf UkVTVFJJQ1QsCisJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVF9MT0NLIHwgUEVS Rk9STV9ERUxFVElPTl9JTlRFUk5BTCk7CiAKIAkvKgogCSAqIExhc3QgdGhpbmcgdG8gZG8gaXMg cmVsZWFzZSB0aGUgc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIHRoZSBwYXJlbnQgdGFibGUuCkBAIC0z NTM3LDYgKzM2NTAsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCXR5cGVkZWYgc3RydWN0 IFJlaW5kZXhJbmRleEluZm8KIAl7CiAJCU9pZAkJCWluZGV4SWQ7CisJCU9pZAkJCWF1eEluZGV4 SWQ7CiAJCU9pZAkJCXRhYmxlSWQ7CiAJCU9pZAkJCWFtSWQ7CiAJCWJvb2wJCXNhZmU7CQkvKiBm b3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KQEAgLTM2NDIsOCArMzc1NiwxNSBAQCBSZWlu ZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxh dGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQlPaWQJCQljZWxsT2lkID0gbGZpcnN0X29pZChsYyk7 CiAJCQkJCVJlbGF0aW9uCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGNlbGxPaWQsCiAJCQkJ CQkJCQkJCQkJCSAgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCQkJCUluZGV4SW5mbyoJ aW5kZXhJbmZvID0gQnVpbGREdW1teUluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKIAotCQkJCQlp ZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkKQorCisJCQkJCWlmIChpbmRl eEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJCQkJCWVyZXBvcnQoV0FSTklORywoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVp bmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQkJCWdldF9uYW1lc3Bh Y2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShjZWxsT2lkKSksCisJCQkJCQkJCQlnZXRfcmVsX25h bWUoY2VsbE9pZCkpKSk7CisJCQkJCWVsc2UgaWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+ aW5kaXN2YWxpZCkKIAkJCQkJCWVyZXBvcnQoV0FSTklORywKIAkJCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJCQkJCSBlcnJtc2co InNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCBcIiVzLiVzXCIiLApAQCAtMzY5NSw4 ICszODE2LDE1IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQlPaWQJCQljZWxsT2lk ID0gbGZpcnN0X29pZChsYzIpOwogCQkJCQkJUmVsYXRpb24JaW5kZXhSZWxhdGlvbiA9IGluZGV4 X29wZW4oY2VsbE9pZCwKIAkJCQkJCQkJCQkJCQkJCSAgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9j ayk7CisJCQkJCQlJbmRleEluZm8qCWluZGV4SW5mbyA9IEJ1aWxkRHVtbXlJbmRleEluZm8oaW5k ZXhSZWxhdGlvbik7CiAKLQkJCQkJCWlmICghaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlz dmFsaWQpCisJCQkJCQlpZiAoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCQkJCQkJZXJlcG9y dChXQVJOSU5HLAorCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5k ZXggXCIlcy4lc1wiIiwKKwkJCQkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9yZWxfbmFt ZXNwYWNlKGNlbGxPaWQpKSwKKwkJCQkJCQkJCQkJZ2V0X3JlbF9uYW1lKGNlbGxPaWQpKSkpOwor CQkJCQkJZWxzZSBpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkKQogCQkJ CQkJCWVyZXBvcnQoV0FSTklORywKIAkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCQkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVp bmRleCBvZiBpbnZhbGlkIGluZGV4IFwiJXMuJXNcIiIsCkBAIC0zNzU3LDYgKzM4ODUsMTMgQEAg UmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQg cmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCiAJCQkJCQkJIGVycm1zZygiY2Fubm90IHJlaW5kZXggaW52YWxpZCBp bmRleCBvbiBUT0FTVCB0YWJsZSIpKSk7CiAKKwkJCQkvKiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUg bm90IGFsbG93ZWQgdG8gYmUgcmVidWlsdCAqLworCQkJCWlmIChnZXRfcmVsX3JlbGFtKHJlbGF0 aW9uT2lkKSA9PSBTVElSX0FNX09JRCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coInJlaW5k ZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXNcIiBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJCQkJZ2V0 X3JlbF9uYW1lKHJlbGF0aW9uT2lkKSkpKTsKKwogCQkJCS8qCiAJCQkJICogQ2hlY2sgaWYgcGFy ZW50IHJlbGF0aW9uIGNhbiBiZSBsb2NrZWQgYW5kIGlmIGl0IGV4aXN0cywKIAkJCQkgKiB0aGlz IG5lZWRzIHRvIGJlIGRvbmUgYXQgdGhpcyBzdGFnZSBhcyB0aGUgbGlzdCBvZiBpbmRleGVzCkBA IC0zODYwLDE1ICszOTk1LDE4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJZm9yZWFjaChs YywgaW5kZXhJZHMpCiAJewogCQljaGFyCSAgICpjb25jdXJyZW50TmFtZTsKKwkJY2hhcgkgICAq YXV4Q29uY3VycmVudE5hbWU7CiAJCVJlaW5kZXhJbmRleEluZm8gKmlkeCA9IGxmaXJzdChsYyk7 CiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeDsKIAkJT2lkCQkJbmV3SW5kZXhJZDsKKwkJT2lk CQkJYXV4SW5kZXhJZDsKIAkJUmVsYXRpb24JaW5kZXhSZWw7CiAJCVJlbGF0aW9uCWhlYXBSZWw7 CiAJCU9pZAkJCXNhdmVfdXNlcmlkOwogCQlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCQlpbnQJ CQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CisJCVJlbGF0aW9uCWF1 eEluZGV4UmVsOwogCQlMb2NrUmVsSWQgICpsb2NrcmVsaWQ7CiAJCU9pZAkJCXRhYmxlc3BhY2Vp ZDsKIApAQCAtMzkxOSw2ICs0MDU3LDExIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJ CQkJCQkJCSJjY25ldyIsCiAJCQkJCQkJCQkJCWdldF9yZWxfbmFtZXNwYWNlKGluZGV4UmVsLT5y ZF9pbmRleC0+aW5kcmVsaWQpLAogCQkJCQkJCQkJCQlmYWxzZSk7CisJCWF1eENvbmN1cnJlbnRO YW1lID0gQ2hvb3NlUmVsYXRpb25OYW1lKGdldF9yZWxfbmFtZShpZHgtPmluZGV4SWQpLAorCQkJ CQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkiY2NhdXgiLAorCQkJCQkJCQkJCQlnZXRfcmVsX25h bWVzcGFjZShpbmRleFJlbC0+cmRfaW5kZXgtPmluZHJlbGlkKSwKKwkJCQkJCQkJCQkJZmFsc2Up OwogCiAJCS8qIENob29zZSB0aGUgbmV3IHRhYmxlc3BhY2UsIGluZGV4ZXMgb2YgdG9hc3QgdGFi bGVzIGFyZSBub3QgbW92ZWQgKi8KIAkJaWYgKE9pZElzVmFsaWQocGFyYW1zLT50YWJsZXNwYWNl T2lkKSAmJgpAQCAtMzkzMiwxMiArNDA3NSwxNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQkJCQkJCQkJCQkJCWlkeC0+aW5kZXhJZCwKIAkJCQkJCQkJCQkJCQl0YWJsZXNwYWNlaWQsCiAJ CQkJCQkJCQkJCQkJY29uY3VycmVudE5hbWUpOworCQlhdXhJbmRleElkID0gaW5kZXhfY29uY3Vy cmVudGx5X2NyZWF0ZV9hdXgoaGVhcFJlbCwKKwkJCQkJCQkJCQkJCSAgIG5ld0luZGV4SWQsCisJ CQkJCQkJCQkJCQkgICB0YWJsZXNwYWNlaWQsCisJCQkJCQkJCQkJCQkgICBhdXhDb25jdXJyZW50 TmFtZSk7CiAKIAkJLyoKIAkJICogTm93IG9wZW4gdGhlIHJlbGF0aW9uIG9mIHRoZSBuZXcgaW5k ZXgsIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIGlzCiAJCSAqIGFsc28gbmVlZGVkIG9uIGl0LgogCQkg Ki8KIAkJbmV3SW5kZXhSZWwgPSBpbmRleF9vcGVuKG5ld0luZGV4SWQsIFNoYXJlVXBkYXRlRXhj bHVzaXZlTG9jayk7CisJCWF1eEluZGV4UmVsID0gaW5kZXhfb3BlbihhdXhJbmRleElkLCBTaGFy ZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCiAJCS8qCiAJCSAqIFNhdmUgdGhlIGxpc3Qgb2YgT0lE cyBhbmQgbG9ja3MgaW4gcHJpdmF0ZSBjb250ZXh0CkBAIC0zOTQ2LDYgKzQwOTQsNyBAQCBSZWlu ZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxh dGlvbk9pZCwgY29uc3QgUmVpbgogCiAJCW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVpbmRleElu ZGV4SW5mbyk7CiAJCW5ld2lkeC0+aW5kZXhJZCA9IG5ld0luZGV4SWQ7CisJCW5ld2lkeC0+YXV4 SW5kZXhJZCA9IGF1eEluZGV4SWQ7CiAJCW5ld2lkeC0+c2FmZSA9IGlkeC0+c2FmZTsKIAkJbmV3 aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFtSWQ7 CkBAIC0zOTY0LDEwICs0MTEzLDE0IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWxvY2ty ZWxpZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKIAkJKmxvY2tyZWxpZCA9IG5ld0luZGV4 UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CiAJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5kKHJl bGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CisJCWxvY2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9j a1JlbElkKTsKKwkJKmxvY2tyZWxpZCA9IGF1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVs SWQ7CisJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5kKHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7 CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWluZGV4X2Nsb3Nl KGluZGV4UmVsLCBOb0xvY2spOworCQlpbmRleF9jbG9zZShhdXhJbmRleFJlbCwgTm9Mb2NrKTsK IAkJaW5kZXhfY2xvc2UobmV3SW5kZXhSZWwsIE5vTG9jayk7CiAKIAkJLyogUm9sbCBiYWNrIGFu eSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KQEAgLTQwNDgsMTMg KzQyMDEsNjAgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10 ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBkb2luZyB0aGF0LCB3YWl0 IHVudGlsIG5vIHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGNvdWxkIGhhdmUgdGhlIHRhYmxlIG9mCiAJ ICogdGhlIGluZGV4IG9wZW4gd2l0aCB0aGUgb2xkIGxpc3Qgb2YgaW5kZXhlcy4gIFNlZSAicGhh c2UgMiIgaW4KIAkgKiBEZWZpbmVJbmRleCgpIGZvciBtb3JlIGRldGFpbHMuCisJKi8KKworCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJ CQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8xKTsKKwlXYWl0Rm9yTG9ja2Vyc011 bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOworCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJLyoKKwkgKiBOb3cgYnVpbGQgYWxsIGF1eGlsaWFyeSBpbmRleGVzIGFuZCBt YXJrIHRoZW0gYXMgInJlYWR5LWZvci1pbnNlcnRzIi4KKwkgKi8KKwlmb3JlYWNoKGxjLCBuZXdJ bmRleElkcykKKwl7CisJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CisK KwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkvKgorCQkgKiBDaGVjayBmb3IgdXNl ci1yZXF1ZXN0ZWQgYWJvcnQuICBUaGlzIGlzIGluc2lkZSBhIHRyYW5zYWN0aW9uIHNvIGFzCisJ CSAqIHhhY3QuYyBkb2VzIG5vdCBpc3N1ZSBhIHVzZWxlc3MgV0FSTklORywgYW5kIGVuc3VyZXMg dGhhdAorCQkgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGFyZSBjbGVhbmVkIHVwIG9uIGFib3J0Lgor CQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKiBUZWxsIGNvbmN1cnJlbnQg aW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwkJaWYgKG5ld2lk eC0+c2FmZSkKKwkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisKKwkJLyogU2V0IEFjdGl2 ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBpdCAqLwor CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKworCQkvKiBC dWlsZCBhdXhpbGlhcnkgaW5kZXgsIGl0IGlzIGZhc3QgLSB3aXRob3V0IGFueSBhY3R1YWwgaGVh cCBzY2FuLCBqdXN0IGFuIGVtcHR5IGluZGV4LiAqLworCQlpbmRleF9jb25jdXJyZW50bHlfYnVp bGQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCisJCVBvcEFjdGl2ZVNu YXBzaG90KCk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCX0KKworCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNu YXBzaG90IGluIHRoaXMgdHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8gbmVlZAorCSAqIHRvIHNldCB0 aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4KIAkgKi8KIAogCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1dBSVRfMSk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF8yKTsKKwkvKgorCSAqIFdhaXQgdW50aWwgYWxsIGF1eGlsaWFyeSBpbmRleGVzIGFy ZSB0YWtlbiBpbnRvIGFjY291bnQgYnkgYWxsCisJICogdHJhbnNhY3Rpb25zLgorCSAqLwogCVdh aXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CiAJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKKwkvKiBOb3cgaXQgaXMgdGltZSB0byBwZXJmb3JtIHRh cmdldCBpbmRleCBidWlsZC4gKi8KIAlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKIAl7CiAJCVJl aW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CkBAIC00MTAxLDYgKzQzMDEsNDEg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9T QUZFX0lDIGZsYWcgaGVyZS4KIAkgKi8KIAorCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0o UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFX1dBSVRfMyk7CisJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2Nr LCB0cnVlKTsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogQXQgdGhp cyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFyZSBtYXJrZWQgYXMgInJlYWR5LXRvLWluc2Vy dCIuIFNvLAorCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgZHJvcHBpbmcgYXV4 aWxpYXJ5IGluZGV4ZXMuCisJICovCisJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCisJeworCQlS ZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOworCQlTdGFydFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCQkvKgorCQkgKiBDaGVjayBmb3IgdXNlci1yZXF1ZXN0ZWQgYWJvcnQuICBU aGlzIGlzIGluc2lkZSBhIHRyYW5zYWN0aW9uIHNvIGFzCisJCSAqIHhhY3QuYyBkb2VzIG5vdCBp c3N1ZSBhIHVzZWxlc3MgV0FSTklORywgYW5kIGVuc3VyZXMgdGhhdAorCQkgKiBzZXNzaW9uLWxl dmVsIGxvY2tzIGFyZSBjbGVhbmVkIHVwIG9uIGFib3J0LgorCQkgKi8KKwkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKKworCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVz LCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwkJaWYgKG5ld2lkeC0+c2FmZSkKKwkJCXNldF9pbmRl eHNhZmVfcHJvY2ZsYWdzKCk7CisKKwkJLyoKKwkJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQg aW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCQkgKiBoYXZlIGEgdmFs aWQgc25hcHNob3QuCisJCSAqLworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25T bmFwc2hvdCgpKTsKKwkJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwg SU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJfQorCiAJLyoKIAkgKiBQaGFzZSAzIG9mIFJFSU5E RVggQ09OQ1VSUkVOVExZCiAJICoKQEAgLTQxMDgsMTIgKzQzNDMsNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCSAqIHdlcmUgY3JlYXRlZCBkdXJpbmcgdGhlIHByZXZpb3VzIHBoYXNlLiAg U2VlICJwaGFzZSAzIiBpbiBEZWZpbmVJbmRleCgpCiAJICogZm9yIG1vcmUgZGV0YWlscy4KIAkg Ki8KLQotCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7Ci0JV2FpdEZv ckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKLQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKLQogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQogCXsKIAkJUmVp bmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKQEAgLTQxNTEsNyArNDM4MCw3IEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXByb2dyZXNzX3ZhbHNbM10gPSBuZXdpZHgtPmFt SWQ7CiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5k ZXgsIHByb2dyZXNzX3ZhbHMpOwogCi0JCXZhbGlkYXRlX2luZGV4KG5ld2lkeC0+dGFibGVJZCwg bmV3aWR4LT5pbmRleElkLCBzbmFwc2hvdCk7CisJCXZhbGlkYXRlX2luZGV4KG5ld2lkeC0+dGFi bGVJZCwgbmV3aWR4LT5pbmRleElkLCBuZXdpZHgtPmF1eEluZGV4SWQsIHNuYXBzaG90KTsKIAog CQkvKgogCQkgKiBXZSBjYW4gbm93IGRvIGF3YXkgd2l0aCBvdXIgYWN0aXZlIHNuYXBzaG90LCB3 ZSBzdGlsbCBuZWVkIHRvIHNhdmUKQEAgLTQxODAsNyArNDQwOSw3IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCSAqIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9J QyBmbGFnIGhlcmUuCiAJCSAqLwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf V0FJVF8zKTsKKwkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKIAkJ V2FpdEZvck9sZGVyU25hcHNob3RzKGxpbWl0WG1pbiwgdHJ1ZSk7CiAKIAkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CkBAIC00MjcwLDE0ICs0NDk5LDE0IEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25z dCBSZWluCiAJLyoKIAkgKiBQaGFzZSA1IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoKLQkg KiBNYXJrIHRoZSBvbGQgaW5kZXhlcyBhcyBkZWFkLiAgRmlyc3Qgd2UgbXVzdCB3YWl0IHVudGls IG5vIHJ1bm5pbmcKLQkgKiB0cmFuc2FjdGlvbiBjb3VsZCBiZSB1c2luZyB0aGUgaW5kZXggZm9y IGEgcXVlcnkuICBTZWUgYWxzbworCSAqIE1hcmsgdGhlIG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4 ZXMgYXMgZGVhZC4gRmlyc3Qgd2UgbXVzdCB3YWl0IHVudGlsIG5vCisJICogcnVubmluZyB0cmFu c2FjdGlvbiBjb3VsZCBiZSB1c2luZyB0aGUgaW5kZXggZm9yIGEgcXVlcnkuICBTZWUgYWxzbwog CSAqIGluZGV4X2Ryb3AoKSBmb3IgbW9yZSBkZXRhaWxzLgogCSAqLwogCiAJSU5KRUNUSU9OX1BP SU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQiLCBOVUxM KTsKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQpOworCQkJCQkJCQkg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBs ZShsb2NrVGFncywgQWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7CiAKIAlmb3JlYWNoKGxjLCBp bmRleElkcykKQEAgLTQzMDIsNiArNDUzMSwyOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCX0KIAorCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQor CXsKKwkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKworCQkvKgorCQkg KiBDaGVjayBmb3IgdXNlci1yZXF1ZXN0ZWQgYWJvcnQuICBUaGlzIGlzIGluc2lkZSBhIHRyYW5z YWN0aW9uIHNvIGFzCisJCSAqIHhhY3QuYyBkb2VzIG5vdCBpc3N1ZSBhIHVzZWxlc3MgV0FSTklO RywgYW5kIGVuc3VyZXMgdGhhdAorCQkgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGFyZSBjbGVhbmVk IHVwIG9uIGFib3J0LgorCQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKgor CQkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywg c28gZW5zdXJlIHdlCisJCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkJICovCisJCVB1c2hB Y3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJCWluZGV4X2NvbmN1 cnJlbnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisK KwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwl9CisKIAkvKiBDb21taXQgdGhpcyB0cmFuc2FjdGlv biB0byBtYWtlIHRoZSB1cGRhdGVzIHZpc2libGUuICovCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTQzMTUsMTEgKzQ1NjYsMTEg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkvKgogCSAqIFBoYXNlIDYgb2YgUkVJTkRFWCBD T05DVVJSRU5UTFkKIAkgKgotCSAqIERyb3AgdGhlIG9sZCBpbmRleGVzLgorCSAqIERyb3AgdGhl IG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMuCiAJICovCiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBk YXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRV9XQUlUXzUpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfNik7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgQWNjZXNzRXhjbHVz aXZlTG9jaywgdHJ1ZSk7CiAKIAlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKQEAgLTQzMzksNiArNDU5MCwxOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQkJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZvYmplY3QsIG9iamVjdHMpOwogCQl9CiAKKwkJ Zm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCisJCXsKKwkJCVJlaW5kZXhJbmRleEluZm8gKmlkeCA9 IGxmaXJzdChsYyk7CisJCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQkJb2JqZWN0LmNsYXNz SWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCQlvYmplY3Qub2JqZWN0SWQgPSBpZHgtPmF1eElu ZGV4SWQ7CisJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCisJCQlhZGRfZXhhY3Rfb2JqZWN0 X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisJCX0KKwogCQkvKgogCQkgKiBVc2UgUEVSRk9S TV9ERUxFVElPTl9DT05DVVJSRU5UX0xPQ0sgc28gdGhhdCBpbmRleF9kcm9wKCkgdXNlcyB0aGUK IAkJICogcmlnaHQgbG9jayBsZXZlbC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21h a2VmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXggZTk3ZTA5NDNm NWIuLmI1NTZiYTQ4MTdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtODM0LDcgKzgzNCw3IEBA IEluZGV4SW5mbyAqCiBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJz LCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCQkJICBMaXN0ICpwcmVkaWNhdGVzLCBi b29sIHVuaXF1ZSwgYm9vbCBudWxsc19ub3RfZGlzdGluY3QsCiAJCQkgIGJvb2wgaXNyZWFkeSwg Ym9vbCBjb25jdXJyZW50LCBib29sIHN1bW1hcml6aW5nLAotCQkJICBib29sIHdpdGhvdXRvdmVy bGFwcykKKwkJCSAgYm9vbCB3aXRob3V0b3ZlcmxhcHMsIGJvb2wgYXV4aWxpYXJ5KQogewogCUlu ZGV4SW5mbyAgKm4gPSBtYWtlTm9kZShJbmRleEluZm8pOwogCkBAIC04NTAsNiArODUwLDcgQEAg bWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBM aXN0ICpleHByZXNzaW9ucywKIAluLT5paV9Db25jdXJyZW50ID0gY29uY3VycmVudDsKIAluLT5p aV9TdW1tYXJpemluZyA9IHN1bW1hcml6aW5nOwogCW4tPmlpX1dpdGhvdXRPdmVybGFwcyA9IHdp dGhvdXRvdmVybGFwczsKKwluLT5paV9BdXhpbGlhcnkgPSBhdXhpbGlhcnk7CiAKIAkvKiBzdW1t YXJpemluZyBpbmRleGVzIGNhbm5vdCBjb250YWluIG5vbi1rZXkgYXR0cmlidXRlcyAqLwogCUFz c2VydCghc3VtbWFyaXppbmcgfHwgKG51bWtleWF0dHJzID09IG51bWF0dHJzKSk7CkBAIC04NzUs NyArODc2LDYgQEAgbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywg T2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAkvKiBpbml0aWFsaXplIGluZGV4LWJ1aWxk IHN0YXRlIHRvIGRlZmF1bHQgKi8KIAluLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwogCW4t PmlpX1BhcmFsbGVsV29ya2VycyA9IDA7Ci0Jbi0+aWlfQXV4aWxpYXJ5ID0gZmFsc2U7CiAKIAkv KiBzZXQgdXAgZm9yIHBvc3NpYmxlIHVzZSBieSBpbmRleCBBTSAqLwogCW4tPmlpX0FtID0gYW1v aWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCA4NzEzZTEyY2JmYi4uYmQ0Njc4NTgwMWMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaApAQCAtNjk2LDExICs2OTYsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVB bVJvdXRpbmUKIAkJCQkJCQkJCQkgICBUYWJsZVNjYW5EZXNjIHNjYW4pOwogCiAJLyogc2VlIHRh YmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4gZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICov Ci0Jdm9pZAkJKCppbmRleF92YWxpZGF0ZV9zY2FuKSAoUmVsYXRpb24gdGFibGVfcmVsLAotCQkJ CQkJCQkJCVJlbGF0aW9uIGluZGV4X3JlbCwKLQkJCQkJCQkJCQlzdHJ1Y3QgSW5kZXhJbmZvICpp bmRleF9pbmZvLAotCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJCXN0cnVj dCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlKTsKKwl2b2lkIAkJKCppbmRleF92YWxpZGF0ZV9z Y2FuKSAoUmVsYXRpb24gdGFibGVfcmVsLAorCQkJCQkJCQkJCQkJUmVsYXRpb24gaW5kZXhfcmVs LAorCQkJCQkJCQkJCQkJc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKKwkJCQkJCQkJCQkJ CVNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0 ZSAqc3RhdGUsCisJCQkJCQkJCQkJCQlzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICphdXhfc3Rh dGUpOwogCiAKIAkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE3OTQsMTkgKzE3OTUsMjQgQEAgdGFi bGVfaW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCiAgKiB0YWJsZV9p bmRleF92YWxpZGF0ZV9zY2FuIC0gc2Vjb25kIHRhYmxlIHNjYW4gZm9yIGNvbmN1cnJlbnQgaW5k ZXggYnVpbGQKICAqCiAgKiBTZWUgdmFsaWRhdGVfaW5kZXgoKSBmb3IgYW4gZXhwbGFuYXRpb24u CisgKgorICogTm90ZTogaXQgaXMgcmVzcG9uc2liaWxpdHkgb2YgdGhhdCBmdW5jdGlvbiB0byBj bG9zZSBzb3J0c3RhdGVzIGluCisgKiBib3RoIGBzdGF0ZWAgYW5kIGBhdXhzdGF0ZWAuCiAgKi8K IHN0YXRpYyBpbmxpbmUgdm9pZAogdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiB0 YWJsZV9yZWwsCiAJCQkJCQkgIFJlbGF0aW9uIGluZGV4X3JlbCwKIAkJCQkJCSAgc3RydWN0IElu ZGV4SW5mbyAqaW5kZXhfaW5mbywKIAkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkg IHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlKQorCQkJCQkJICBzdHJ1Y3QgVmFsaWRh dGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJCQkJCSAgc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAq YXV4c3RhdGUpCiB7Ci0JdGFibGVfcmVsLT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9zY2Fu KHRhYmxlX3JlbCwKLQkJCQkJCQkJCQkJICAgaW5kZXhfcmVsLAotCQkJCQkJCQkJCQkgICBpbmRl eF9pbmZvLAotCQkJCQkJCQkJCQkgICBzbmFwc2hvdCwKLQkJCQkJCQkJCQkJICAgc3RhdGUpOwor CXJldHVybiB0YWJsZV9yZWwtPnJkX3RhYmxlYW0tPmluZGV4X3ZhbGlkYXRlX3NjYW4odGFibGVf cmVsLAorCQkJCQkJCQkJCQkJCSAgaW5kZXhfcmVsLAorCQkJCQkJCQkJCQkJCSAgaW5kZXhfaW5m bywKKwkJCQkJCQkJCQkJCQkgIHNuYXBzaG90LAorCQkJCQkJCQkJCQkJCSAgc3RhdGUsCisJCQkJ CQkJCQkJCQkJICBhdXhzdGF0ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDRkYWE4YmVm NWVlLi40NzEzZjE4ZTY4ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMjUsNiArMjUsNyBAQCB0eXBl ZGVmIGVudW0KIHsKIAlJTkRFWF9DUkVBVEVfU0VUX1JFQURZLAogCUlOREVYX0NSRUFURV9TRVRf VkFMSUQsCisJSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSwKIAlJTkRFWF9EUk9QX0NMRUFSX1ZBTElE LAogCUlOREVYX0RST1BfU0VUX0RFQUQsCiB9IEluZGV4U3RhdGVGbGFnc0FjdGlvbjsKQEAgLTY1 LDYgKzY2LDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfY2hlY2tfcHJpbWFyeV9rZXkoUmVsYXRpb24g aGVhcFJlbCwKICNkZWZpbmUJSU5ERVhfQ1JFQVRFX0lGX05PVF9FWElTVFMJCQkoMSA8PCA0KQog I2RlZmluZQlJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQJCQkoMSA8PCA1KQogI2RlZmluZSBJTkRF WF9DUkVBVEVfSU5WQUxJRAkJCQkoMSA8PCA2KQorI2RlZmluZSBJTkRFWF9DUkVBVEVfQVVYSUxJ QVJZCQkJCSgxIDw8IDcpCiAKIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKIAkJCQkJCSBjb25zdCBjaGFyICppbmRleFJlbGF0aW9uTmFtZSwKQEAgLTg2LDcg Kzg4LDggQEAgZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CQkJCQkJIGJpdHMxNiBjb25zdHJfZmxhZ3MsCiAJCQkJCQkgYm9vbCBhbGxvd19zeXN0ZW1fdGFi bGVfbW9kcywKIAkJCQkJCSBib29sIGlzX2ludGVybmFsLAotCQkJCQkJIE9pZCAqY29uc3RyYWlu dElkKTsKKwkJCQkJCSBPaWQgKmNvbnN0cmFpbnRJZCwKKwkJCQkJCSBjaGFyIHJlbHBlcnNpc3Rl bmNlKTsKIAogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktfQVNfUFJJTUFSWQkoMSA8 PCAwKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX0RFRkVSUkFCTEUJCSgxIDw8IDEpCkBA IC0xMDAsNiArMTAzLDExIEBAIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9j b3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9p ZCwKIAkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpuZXdOYW1lKTsKIAorZXh0ZXJuIE9pZAlpbmRl eF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCQkJ CQkJICBPaWQgbWFpbkluZGV4SWQsCisJCQkJCQkJCQkJICBPaWQgdGFibGVzcGFjZU9pZCwKKwkJ CQkJCQkJCQkgIGNvbnN0IGNoYXIgKm5ld05hbWUpOworCiBleHRlcm4gdm9pZCBpbmRleF9jb25j dXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCQkJCQkJCQkJIE9pZCBpbmRleFJl bGF0aW9uSWQpOwogCkBAIC0xNDUsNyArMTUzLDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfYnVpbGQo UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJYm9vbCBpc3JlaW5kZXgsCiAJCQkJCQlib29s IHBhcmFsbGVsKTsKIAotZXh0ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lk IGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiB2b2lkIHZhbGlkYXRlX2luZGV4 KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNo b3QpOwogCiBleHRlcm4gdm9pZCBpbmRleF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIElu ZGV4U3RhdGVGbGFnc0FjdGlvbiBhY3Rpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9wcm9ncmVzcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaAppbmRl eCA3YzczNmU3YjAzYi4uNmUxNDU3N2VmOWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3Byb2dyZXNzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaApAQCAt OTQsMTQgKzk0LDE1IEBACiAKIC8qIFBoYXNlcyBvZiBDUkVBVEUgSU5ERVggKGFzIGFkdmVydGlz ZWQgdmlhIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSkgKi8KICNkZWZpbmUgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1dBSVRfMQkJCTEKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X0JVSUxECQkJMgotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yCQkJMwot I2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYU0NBTgk0Ci0jZGVm aW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9TT1JUCQk1Ci0jZGVmaW5lIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9UQUJMRVNDQU4JNgotI2RlZmluZSBQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zCQkJNworI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF8yCQkJMgorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfQlVJ TEQJCQkzCisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMJCQk0CisjZGVm aW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhTQ0FOCTUKKyNkZWZpbmUg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX1NPUlQJCTYKKyNkZWZpbmUgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWE1FUkdFCTcKICNkZWZpbmUgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1dBSVRfNAkJCTgKICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFX1dBSVRfNQkJCTkKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNgkJ CTEwCiAKIC8qCiAgKiBTdWJwaGFzZXMgb2YgQ1JFQVRFIElOREVYLCBmb3IgaW5kZXhfYnVpbGQu CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDAzNDFiYjc0MzI1Li5lMDJmYzZhYTNlNiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKQEAgLTE4Niw4ICsxODYsOCBAQCB0eXBlZGVmIHN0cnVjdCBFeHByU3Rh dGUKICAqCQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBmb3IgaW5kZXggQU0KICAqCQlD b250ZXh0CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8KICAqCi0gKiBp aV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgaWlfQXV4aWxpYXJ5IGFuZCBpaV9QYXJh bGxlbFdvcmtlcnMKLSAqIGFyZSB1c2VkIG9ubHkgZHVyaW5nIGluZGV4IGJ1aWxkOyB0aGV5J3Jl IGNvbnZlbnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCisgKiBpaV9Db25jdXJyZW50LCBpaV9C cm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVsV29ya2VycyBhcmUgdXNlZCBvbmx5CisgKiBk dXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkgemVyb2VkIG90aGVyd2lz ZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL21ha2VmdW5jcy5oCmluZGV4IDU0NzNjZTlhMjg4Li40OTA0NzQ4ZjVmYyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv bWFrZWZ1bmNzLmgKQEAgLTk5LDcgKzk5LDggQEAgZXh0ZXJuIEluZGV4SW5mbyAqbWFrZUluZGV4 SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLAogCQkJCQkJCQlM aXN0ICpleHByZXNzaW9ucywgTGlzdCAqcHJlZGljYXRlcywKIAkJCQkJCQkJYm9vbCB1bmlxdWUs IGJvb2wgbnVsbHNfbm90X2Rpc3RpbmN0LAogCQkJCQkJCQlib29sIGlzcmVhZHksIGJvb2wgY29u Y3VycmVudCwKLQkJCQkJCQkJYm9vbCBzdW1tYXJpemluZywgYm9vbCB3aXRob3V0b3ZlcmxhcHMp OworCQkJCQkJCQlib29sIHN1bW1hcml6aW5nLCBib29sIHdpdGhvdXRvdmVybGFwcywKKwkJCQkJ CQkJYm9vbCBhdXhpbGlhcnkpOwogCiBleHRlcm4gTm9kZSAqbWFrZVN0cmluZ0NvbnN0KGNoYXIg KnN0ciwgaW50IGxvY2F0aW9uKTsKIGV4dGVybiBEZWZFbGVtICptYWtlRGVmRWxlbShjaGFyICpu YW1lLCBOb2RlICphcmcsIGludCBsb2NhdGlvbik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NyZWF0ZV9pbmRleC5vdXQKaW5kZXggOWFkZTdiODM1ZTYuLmNhNzQ4NDRiNWM2IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CkBAIC0xNDIzLDYgKzE0MjMs NyBAQCBERVRBSUw6ICBLZXkgKGYxKT0oYikgYWxyZWFkeSBleGlzdHMuCiBDUkVBVEUgVU5JUVVF IElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXgzIE9OIGNvbmN1cl9oZWFwKGYyKTsKIEVS Uk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImNvbmN1cl9pbmRleDMiCiBERVRB SUw6ICBLZXkgKGYyKT0oYikgaXMgZHVwbGljYXRlZC4KK0RST1AgSU5ERVggY29uY3VyX2luZGV4 M19jY2F1eDsKIC0tIHRlc3QgdGhhdCBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHBhcnRpYWwgaW5k ZXhlcyB3b3JrIGNvbmN1cnJlbnRseQogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJf aW5kZXg0IG9uIGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0nYSc7CiBDUkVBVEUgSU5ERVggQ09O Q1VSUkVOVExZIGNvbmN1cl9pbmRleDUgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSd4JzsK QEAgLTMxOTcsNiArMzE5OCw3IEBAIElOU0VSVCBJTlRPIGNvbmN1cl9yZWluZGV4X3RhYjQgVkFM VUVTICgxKSwgKDEpLCAoMik7CiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25j dXJfcmVpbmRleF9pbmQ1IE9OIGNvbmN1cl9yZWluZGV4X3RhYjQgKGMxKTsKIEVSUk9SOiAgY291 bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImNvbmN1cl9yZWluZGV4X2luZDUiCiBERVRBSUw6 ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhf aW5kNV9jY2F1eDsKIC0tIFJlaW5kZXhpbmcgY29uY3VycmVudGx5IHRoaXMgaW5kZXggZmFpbHMg d2l0aCB0aGUgc2FtZSBmYWlsdXJlLgogLS0gVGhlIGV4dHJhIGluZGV4IGNyZWF0ZWQgaXMgaXRz ZWxmIGludmFsaWQsIGFuZCBjYW4gYmUgZHJvcHBlZC4KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNvbmN1cl9yZWluZGV4X2luZDU7CkBAIC0zMjA5LDggKzMyMTEsMTAgQEAgREVUQUlMOiAg S2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCiAgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCiBJbmRleGVzOgogICAgICJjb25jdXJfcmVpbmRleF9pbmQ1IiBVTklR VUUsIGJ0cmVlIChjMSkgSU5WQUxJRAorICAgICJjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4IiBz dGlyIChjMSkgSU5WQUxJRAogICAgICJjb25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3IiBVTklRVUUs IGJ0cmVlIChjMSkgSU5WQUxJRAogCitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2Nh dXg7CiBEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NuZXc7CiAtLSBUaGlzIG1ha2Vz IHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZh bGlkLgogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7CkBAIC0z MjM4LDYgKzMyNDIsNDQgQEAgSW5kZXhlczoKICAgICAiY29uY3VyX3JlaW5kZXhfaW5kNSIgVU5J UVVFLCBidHJlZSAoYzEpCiAKIERST1AgVEFCTEUgY29uY3VyX3JlaW5kZXhfdGFiNDsKKy0tIENo ZWNrIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzCitDUkVBVEUgVEFCTEUgYXV4X2luZGV4 X3RhYjUgKGMxIGludCk7CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAo MSksICgyKTsKKy0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4IGFuZCBhdXhp bGlhcnkgaW5kZXggZm9yIGl0CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworRVJST1I6ICBjb3VsZCBub3QgY3Jl YXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBLZXkgKGMxKT0oMSkg aXMgZHVwbGljYXRlZC4KK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJs aWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxh YmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAor SW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRyZWUgKGMxKSBJTlZBTElE CisgICAgImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkgSU5WQUxJRAorCistLSBOb3Qg YWxsb3dlZCB0byByZWluZGV4IGF1eGlsaWFyeSBpbmRleAorUkVJTkRFWCBJTkRFWCBhdXhfaW5k ZXhfaW5kNl9jY2F1eDsKK0VSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9p bmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCistLSBDb25jdXJyZW50bHkgYWxzbworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZfY2NhdXg7CitFUlJPUjogIHJl aW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgbm90IHN1cHBv cnRlZAorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUg aW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQg V0hFUkUgYzEgPSAxOworRVJST1I6ICByZWxhdGlvbiAiY29uY3VyX3JlaW5kZXhfdGFiNCIgZG9l cyBub3QgZXhpc3QKK0xJTkUgMTogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVS RSBjMSA9IDE7CisgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1 cmluZyByZWluZGV4CitSRUlOREVYIFRBQkxFIGF1eF9pbmRleF90YWI1OworRVJST1I6ICBjb3Vs ZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBLZXkg KGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25j dXJyZW50IHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1 OworV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCAicHVibGljLmF1 eF9pbmRleF9pbmQ2IgorSElOVDogIFVzZSBEUk9QIElOREVYIG9yIFJFSU5ERVggSU5ERVguCitX QVJOSU5HOiAgc2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggInB1YmxpYy5hdXhf aW5kZXhfaW5kNl9jY2F1eCIKK05PVElDRTogIHRhYmxlICJhdXhfaW5kZXhfdGFiNSIgaGFzIG5v IGluZGV4ZXMgdGhhdCBjYW4gYmUgcmVpbmRleGVkIGNvbmN1cnJlbnRseQorRFJPUCBUQUJMRSBh dXhfaW5kZXhfdGFiNTsKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNz aW9ucyBhbmQgcHJlZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQg aW5kZXhlcyBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCiAtLSBkZWZpbml0aW9ucy4KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKaW5kZXggYmNmMWRiMTFkNzMuLjNmZWNhYTM4 ODUwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dApAQCAtMTU4NSwxMCAr MTU4NSwxMSBAQCBzZWxlY3QgaW5kZXhyZWxpZDo6cmVnY2xhc3MsIGluZGlzdmFsaWQsCiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIHBhcnRlZF9pc3ZhbGlk X2lkeCAgICAgICAgICAgICB8IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWIgICAgfCAK ICBwYXJ0ZWRfaXN2YWxpZF9pZHhfMTEgICAgICAgICAgfCBmICAgICAgICAgIHwgcGFydGVkX2lz dmFsaWRfdGFiXzExIHwgcGFydGVkX2lzdmFsaWRfdGFiXzFfZXhwcl9pZHgKKyBwYXJ0ZWRfaXN2 YWxpZF9pZHhfMTFfY2NhdXggICAgfCBmICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiXzEx IHwgCiAgcGFydGVkX2lzdmFsaWRfdGFiXzEyX2V4cHJfaWR4IHwgdCAgICAgICAgICB8IHBhcnRl ZF9pc3ZhbGlkX3RhYl8xMiB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4CiAgcGFydGVk X2lzdmFsaWRfdGFiXzFfZXhwcl9pZHggIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3Rh Yl8xICB8IHBhcnRlZF9pc3ZhbGlkX2lkeAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8yX2V4cHJfaWR4 ICB8IHQgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMiAgfCBwYXJ0ZWRfaXN2YWxpZF9p ZHgKLSg1IHJvd3MpCisoNiByb3dzKQogCiBkcm9wIHRhYmxlIHBhcnRlZF9pc3ZhbGlkX3RhYjsK IC0tIENoZWNrIHN0YXRlIG9mIHJlcGxpY2EgaW5kZXhlcyB3aGVuIGF0dGFjaGluZyBhIHBhcnRp dGlvbi4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggNmNmODI4Y2E4ZDAuLmVk NmMyMGE0OTVjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjA0MSwxNCAr MjA0MSwxNSBAQCBwZ19zdGF0X3Byb2dyZXNzX2NyZWF0ZV9pbmRleHwgU0VMRUNUIHMucGlkLAog ICAgICAgICBDQVNFIHMucGFyYW0xMAogICAgICAgICAgICAgV0hFTiAwIFRIRU4gJ2luaXRpYWxp emluZyc6OnRleHQKICAgICAgICAgICAgIFdIRU4gMSBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJz IGJlZm9yZSBidWlsZCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gMiBUSEVOICgnYnVpbGRpbmcg aW5kZXgnOjp0ZXh0IHx8IENPQUxFU0NFKCgnOiAnOjp0ZXh0IHx8IHBnX2luZGV4YW1fcHJvZ3Jl c3NfcGhhc2VuYW1lKChzLnBhcmFtOSk6Om9pZCwgcy5wYXJhbTExKSksICcnOjp0ZXh0KSkKLSAg ICAgICAgICAgIFdIRU4gMyBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0 aW9uJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNj YW5uaW5nIGluZGV4Jzo6dGV4dAotICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlk YXRpb246IHNvcnRpbmcgdHVwbGVzJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2lu ZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIHRhYmxlJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA3 IFRIRU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnOjp0ZXh0Ci0gICAgICAgICAgICBXSEVO IDggVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFya2luZyBkZWFkJzo6dGV4dAot ICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3Bw aW5nJzo6dGV4dAorICAgICAgICAgICAgV0hFTiAyIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMg dG8gdXNlIGF1eGlsaWFyeSBpbmRleCc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMyBUSEVOICgn YnVpbGRpbmcgaW5kZXgnOjp0ZXh0IHx8IENPQUxFU0NFKCgnOiAnOjp0ZXh0IHx8IHBnX2luZGV4 YW1fcHJvZ3Jlc3NfcGhhc2VuYW1lKChzLnBhcmFtOSk6Om9pZCwgcy5wYXJhbTExKSksICcnOjp0 ZXh0KSkKKyAgICAgICAgICAgIFdIRU4gNCBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9y ZSB2YWxpZGF0aW9uJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlk YXRpb246IHNjYW5uaW5nIGluZGV4Jzo6dGV4dAorICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2lu ZGV4IHZhbGlkYXRpb246IHNvcnRpbmcgdHVwbGVzJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA3 IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhlcyc6OnRleHQKKyAgICAgICAg ICAgIFdIRU4gOCBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJzo6dGV4dAorICAgICAg ICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVh ZCc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMTAgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBi ZWZvcmUgZHJvcHBpbmcnOjp0ZXh0CiAgICAgICAgICAgICBFTFNFIE5VTEw6OnRleHQKICAgICAg ICAgRU5EIEFTIHBoYXNlLAogICAgIHMucGFyYW00IEFTIGxvY2tlcnNfdG90YWwsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCBlMjFmZjQyNjUxOS4uMmNmZjFhYzI5YmUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApAQCAtNDk5LDYgKzQ5OSw3IEBA IENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIElGIE5PVCBFWElTVFMgY29uY3VyX2lu ZGV4MiBPTiBjb25jdXJfaGVhcChmMSk7CiBJTlNFUlQgSU5UTyBjb25jdXJfaGVhcCBWQUxVRVMg KCdiJywneCcpOwogLS0gY2hlY2sgaWYgY29uc3RyYWludCBpcyBlbmZvcmNlZCBwcm9wZXJseSBh dCBidWlsZCB0aW1lCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5k ZXgzIE9OIGNvbmN1cl9oZWFwKGYyKTsKK0RST1AgSU5ERVggY29uY3VyX2luZGV4M19jY2F1eDsK IC0tIHRlc3QgdGhhdCBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHBhcnRpYWwgaW5kZXhlcyB3b3Jr IGNvbmN1cnJlbnRseQogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg0IG9u IGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0nYSc7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGNvbmN1cl9pbmRleDUgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSd4JzsKQEAgLTEzMTEs MTAgKzEzMTIsMTIgQEAgQ1JFQVRFIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQgKGMxIGludCk7 CiBJTlNFUlQgSU5UTyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIpOwog LS0gVGhpcyB0cmljayBjcmVhdGVzIGFuIGludmFsaWQgaW5kZXguCiBDUkVBVEUgVU5JUVVFIElO REVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1IE9OIGNvbmN1cl9yZWluZGV4X3Rh YjQgKGMxKTsKK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eDsKIC0tIFJlaW5k ZXhpbmcgY29uY3VycmVudGx5IHRoaXMgaW5kZXggZmFpbHMgd2l0aCB0aGUgc2FtZSBmYWlsdXJl LgogLS0gVGhlIGV4dHJhIGluZGV4IGNyZWF0ZWQgaXMgaXRzZWxmIGludmFsaWQsIGFuZCBjYW4g YmUgZHJvcHBlZC4KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2lu ZDU7CiBcZCBjb25jdXJfcmVpbmRleF90YWI0CitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2lu ZDVfY2NhdXg7CiBEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NuZXc7CiAtLSBUaGlz IG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVj b21lIHZhbGlkLgogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7 CkBAIC0xMzI2LDYgKzEzMjksMjQgQEAgUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3Vy X3JlaW5kZXhfaW5kNTsKIFxkIGNvbmN1cl9yZWluZGV4X3RhYjQKIERST1AgVEFCTEUgY29uY3Vy X3JlaW5kZXhfdGFiNDsKIAorLS0gQ2hlY2sgaGFuZGxpbmcgb2YgYXV4aWxpYXJ5IGluZGV4ZXMK K0NSRUFURSBUQUJMRSBhdXhfaW5kZXhfdGFiNSAoYzEgaW50KTsKK0lOU0VSVCBJTlRPIGF1eF9p bmRleF90YWI1IFZBTFVFUyAoMSksICgxKSwgKDIpOworLS0gVGhpcyB0cmljayBjcmVhdGVzIGFu IGludmFsaWQgaW5kZXggYW5kIGF1eGlsaWFyeSBpbmRleCBmb3IgaXQKK0NSRUFURSBVTklRVUUg SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7 CitcZCBhdXhfaW5kZXhfdGFiNQorLS0gTm90IGFsbG93ZWQgdG8gcmVpbmRleCBhdXhpbGlhcnkg aW5kZXgKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CistLSBDb25jdXJyZW50 bHkgYWxzbworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZfY2NhdXg7 CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRl eCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVS RSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAorUkVJTkRFWCBU QUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJy ZW50IHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1Owor RFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKwogLS0gQ2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhl cyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzLiAgVGhlCiAtLSBkZWZpbml0aW9ucyBv ZiB0aGUgcmVidWlsdCBpbmRleGVzIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwKIC0tIGRlZmlu aXRpb25zLgotLSAKMi40My4wCgo= --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-only-part-3-0005-Refresh-snapshot-periodically-during.patch_" Content-Disposition: attachment; filename="v20-only-part-3-0005-Refresh-snapshot-periodically-during.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogk1 RnJvbSAyYmFjYzZhOGI5YWU2MzA5ZDZjNzAxNzJhOTZlMmRmY2Y5MmE2NDNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAyMSBBcHIgMjAyNSAxNDoxMTo1MyArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjIwLW9ubHktcGFydC0zIDUvNV0gUmVmcmVzaCBzbmFwc2hvdCBwZXJpb2RpY2FsbHkg ZHVyaW5nCiBpbmRleCB2YWxpZGF0aW9uCgpFbmhhbmNlcyB2YWxpZGF0aW9uIHBoYXNlIG9mIGNv bmN1cnJlbnRseSBidWlsdCBpbmRleGVzIGJ5IHBlcmlvZGljYWxseSByZWZyZXNoaW5nIHNuYXBz aG90cyByYXRoZXIgdGhhbiB1c2luZyBhIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QuIFRoaXMg YWRkcmVzc2VzIGlzc3VlcyB3aXRoIHhtaW4gcHJvcGFnYXRpb24gZHVyaW5nIGxvbmctcnVubmlu ZyB2YWxpZGF0aW9ucy4KClRoZSB2YWxpZGF0aW9uIG5vdyB0YWtlcyBhIGZyZXNoIHNuYXBzaG90 IGV2ZXJ5IGZldyBwYWdlcywgYWxsb3dpbmcgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlLiBU aGlzIHJlc3RvcmVzIGZlYXR1cmUgb2YgY29tbWl0IGQ5ZDA3NjIyMmY1Yiwgd2hpY2ggd2FzIHJl dmVydGVkIGluIGNvbW1pdCBlMjhiYjg4NTE5NjkuIE5ldyBTVElSLWJhc2VkIGFwcHJvYWNoIGlz IG5vdCBkZXBlbmRzIG9uIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QgYW55bW9yZS4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgIHwgIDQgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgfCA3MyArKysrKysrKysrKysrKysrKysr KystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgfCAxMiArKyst CiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgIHwgNDMgKysrKysrKysr Ky0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgfCA1MCArKy0t LS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgIHwg IDcgKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oICAgICAgICAgICAgIHwgMTUgKysr KysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgfCAgMiArLQogOCBm aWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggMjhlMmExNjA0YzQuLjYwNGJkZGE1OWZmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTQwMSwxMiArNDAxLDEyIEBAIGxpdmUgdHVw bGUuCiBXZSBtYXJrIHRoZSBpbmRleCBvcGVuIGZvciBpbnNlcnRzIChidXQgc3RpbGwgbm90IHJl YWR5IGZvciByZWFkcykgdGhlbgogd2UgYWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNo IGhhdmUgdGhlIHRhYmxlIG9wZW4uICBUaGVuIHZhbGlkYXRlCiB0aGUgaW5kZXguICBUaGlzIHNl YXJjaGVzIGZvciB0dXBsZXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCBpbiBhdXhpbGlhcnkKLWlu ZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlzc2luZyBvbmVzIGlmIHRoZW0gdmlzaWJsZSB0byByZWZl cmVuY2Ugc25hcHNob3QuCitpbmRleCwgYW5kIGluc2VydHMgYW55IG1pc3Npbmcgb25lcyBpZiB0 aGVtIHZpc2libGUgdG8gZnJlc2ggc25hcHNob3QuCiBBZ2FpbiwgdGhlIGluZGV4IGVudHJpZXMg aGF2ZSB0byBoYXZlIFRJRHMgZXF1YWwgdG8gSE9ULWNoYWluIHJvb3QgVElEcywgYnV0CiB0aGUg dmFsdWUgdG8gYmUgaW5zZXJ0ZWQgaXMgdGhlIG9uZSBmcm9tIHRoZSBsaXZlIHR1cGxlLgogCiBU aGVuIHdlIHdhaXQgdW50aWwgZXZlcnkgdHJhbnNhY3Rpb24gdGhhdCBjb3VsZCBoYXZlIGEgc25h cHNob3Qgb2xkZXIgdGhhbgotdGhlIHNlY29uZCByZWZlcmVuY2Ugc25hcHNob3QgaXMgZmluaXNo ZWQuICBUaGlzIGVuc3VyZXMgdGhhdCBub2JvZHkgaXMKK3RoZSBsYXRlc3QgdXNlZCBzbmFwc2hv dCBpcyBmaW5pc2hlZC4gIFRoaXMgZW5zdXJlcyB0aGF0IG5vYm9keSBpcwogYWxpdmUgYW55IGxv bmdlciB3aG8gY291bGQgbmVlZCB0byBzZWUgYW55IHR1cGxlcyB0aGF0IG1pZ2h0IGJlIG1pc3Np bmcKIGZyb20gdGhlIGluZGV4LCBhcyB3ZWxsIGFzIGVuc3VyaW5nIHRoYXQgbm8gb25lIGNhbiBz ZWUgYW55IGluY29uc2lzdGVudAogcm93cyBpbiBhIGJyb2tlbiBIT1QgY2hhaW4gKHRoZSBmaXJz dCBjb25kaXRpb24gaXMgc3Ryb25nZXIgdGhhbiB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCmluZGV4IDg4N2EyNDU1YzQwLi4xNDQxYWE5M2NmYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xOTk2LDIzICsxOTk2LDI2IEBA IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQoCiAJcmV0dXJuIHJl c3VsdDsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBUcmFuc2FjdGlvbklkCiBoZWFwYW1faW5k ZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkgICBSZWxhdGlv biBpbmRleFJlbGF0aW9uLAogCQkJCQkJICAgSW5kZXhJbmZvICppbmRleEluZm8sCi0JCQkJCQkg ICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUs CiAJCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eFN0YXRlKQogeworCVRyYW5zYWN0aW9u SWQgbGltaXRYbWluOworCiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJYm9vbAkJ aXNudWxsW0lOREVYX01BWF9LRVlTXTsKIAorCVNuYXBzaG90CQlzbmFwc2hvdDsKIAlUdXBsZVRh YmxlU2xvdCAgKnNsb3Q7CiAJRVN0YXRlCQkJKmVzdGF0ZTsKIAlFeHByQ29udGV4dAkJKmVjb250 ZXh0OwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5 KEJBU19CVUxLUkVBRCk7CiAKLQlpbnQJCQkJbnVtX3RvX2NoZWNrOworCWludAkJCQludW1fdG9f Y2hlY2ssCisJCQkJCXBhZ2VfcmVhZF9jb3VudGVyID0gMTsgLyogc2V0IHRvIDEgdG8gc2tpcCBz bmFwc2hvdCByZXNldCBhdCBzdGFydCAqLwogCVR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzX2Zvcl9j aGVjazsKIAlWYWxpZGF0ZUluZGV4U2NhblN0YXRlIGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKIApA QCAtMjAyMywxNCArMjAyNiwxNiBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJLyogVXNlIDEwJSBvZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3JlLiAq LwogCWludAkJc3RvcmVfd29ya19tZW1fcGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7 CiAKLQkvKgotCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0 aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwotCSAqIGl0ZW0gcG9pbnRlcnMuICBUaGlzIGNhbiBi ZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJlY2F1c2UgVElECi0JICogaXMgYSBw YXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdoZXJlYXMgaW50OCBpcwot CSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMuCi0JICovCisJUHVzaEFjdGl2ZVNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKIAl0dXBsZXNfZm9yX2NoZWNrID0g IHR1cGxlc3RvcmVfYmVnaW5fZGF0dW0oSU5UOE9JRCwgZmFsc2UsIGZhbHNlLCBzdG9yZV93b3Jr X21lbV9wYXJ0KTsKIAorCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOworCisJQXNzZXJ0KCFIYXZlUmVnaXN0ZXJlZE9yQWN0aXZlU25hcHNob3QoKSk7 CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qCiAJ ICogc2FuaXR5IGNoZWNrcwogCSAqLwpAQCAtMjA0Niw2ICsyMDUxLDI5IEBAIGhlYXBhbV9pbmRl eF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogCXN0YXRlLT50dXBsZXNv cnQgPSBhdXhTdGF0ZS0+dHVwbGVzb3J0ID0gTlVMTDsKIAorCS8qCisJICogTm93IHRha2UgdGhl IGZpcnN0IHNuYXBzaG90IHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRvIGZpbHRlciBjYW5kaWRhdGUK KwkgKiB0dXBsZXMuIFdlIGFyZSBnb2luZyB0byByZXBsYWNlIGl0IGJ5IG5ld2VyIHNuYXBzaG90 IGV2ZXJ5IHNvIG9mdGVuCisJICogdG8gcHJvcGFnYXRlIGhvcml6b24uCisJICoKKwkgKiBCZXdh cmUhICBUaGVyZSBtaWdodCBzdGlsbCBiZSBzbmFwc2hvdHMgaW4gdXNlIHRoYXQgdHJlYXQgc29t ZSB0cmFuc2FjdGlvbgorCSAqIGFzIGluLXByb2dyZXNzIHRoYXQgb3VyIHRlbXBvcmFyeSBzbmFw c2hvdCB0cmVhdHMgYXMgY29tbWl0dGVkLgorCSAqCisJICogSWYgc3VjaCBhIHJlY2VudGx5LWNv bW1pdHRlZCB0cmFuc2FjdGlvbiBkZWxldGVkIHR1cGxlcyBpbiB0aGUgdGFibGUsCisJICogd2Ug d2lsbCBub3QgaW5jbHVkZSB0aGVtIGluIHRoZSBpbmRleDsgeWV0IHRob3NlIHRyYW5zYWN0aW9u cyB3aGljaAorCSAqIHNlZSB0aGUgZGVsZXRpbmcgb25lIGFzIHN0aWxsLWluLXByb2dyZXNzIHdp bGwgZXhwZWN0IHN1Y2ggdHVwbGVzIHRvCisJICogYmUgdGhlcmUgb25jZSB3ZSBtYXJrIHRoZSBp bmRleCBhcyB2YWxpZC4KKwkgKgorCSAqIFdlIHNvbHZlIHRoaXMgYnkgd2FpdGluZyBmb3IgYWxs IGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25zIHRvIGV4aXQgYmVmb3JlCisJICogd2UgbWFyayB0aGUg aW5kZXggYXMgdmFsaWQsIGZvciB0aGF0IHJlYXNvbiBsaW1pdFhtaW4gaXMgc3VwcG9ydGVkLgor CSAqCisJICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNob3QgdG8gdGhpcyBzbmFwLCBzaW5jZSBm dW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKKwkgKiBuZWVkIGEgc25hcHNob3QuCisJICovCisJc25h cHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCVB1c2hBY3Rp dmVTbmFwc2hvdChzbmFwc2hvdCk7CisJbGltaXRYbWluID0gc25hcHNob3QtPnhtaW47CisKIAll c3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CiAJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4 cHJDb250ZXh0KGVzdGF0ZSk7CiAJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxh dGlvbkdldERlc2NyKGhlYXBSZWxhdGlvbiksCkBAIC0yMDc5LDYgKzIxMDcsNyBAQCBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIAkJTG9ja0J1ZmZl cihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJYmxvY2tfbnVtYmVyID0gQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoYnVmKTsKKwkJcGFnZV9yZWFkX2NvdW50ZXIrKzsKIAogCQlpID0gMDsKIAkJd2hp bGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1iZXIpCkBAIC0yMTM0LDYg KzIxNjMsMjAgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCQl9CiAKIAkJUmVsZWFzZUJ1ZmZlcihidWYpOworI2RlZmluZSBWQUxJREFURV9JTkRF WF9SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSA0MDk2CisJCWlmIChwYWdlX3JlYWRfY291bnRl ciAlIFZBTElEQVRFX0lOREVYX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFID09IDApCisJCXsK KwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3Qp OworCQkJLyogdG8gbWFrZSBzdXJlIHdlIHByb3BhZ2F0ZSB4bWluICovCisJCQlJbnZhbGlkYXRl Q2F0YWxvZ1NuYXBzaG90KCk7CisJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCisJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25h cHNob3QoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQkJLyogeG1pbiBz aG91bGQgbm90IGdvIGJhY2t3YXJkcywgYnV0IGp1c3QgZm9yIHRoZSBjYXNlKi8KKwkJCWxpbWl0 WG1pbiA9IFRyYW5zYWN0aW9uSWROZXdlcihsaW1pdFhtaW4sIHNuYXBzaG90LT54bWluKTsKKwkJ fQogCX0KIAogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CkBAIC0yMTQzLDkg KzIxODYsMjEgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCXJlYWRfc3RyZWFtX2VuZChyZWFkX3N0cmVhbSk7CiAJdHVwbGVzdG9yZV9lbmQodHVw bGVzX2Zvcl9jaGVjayk7CiAKKwkvKgorCSAqIERyb3AgdGhlIGxhdGVzdCBzbmFwc2hvdC4gIFdl IG11c3QgZG8gdGhpcyBiZWZvcmUgd2FpdGluZyBvdXQgb3RoZXIKKwkgKiBzbmFwc2hvdCBob2xk ZXJzLCBlbHNlIHdlIHdpbGwgZGVhZGxvY2sgYWdhaW5zdCBvdGhlciBwcm9jZXNzZXMgYWxzbwor CSAqIGRvaW5nIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFksIHdoaWNoIHdvdWxkIHNlZSBvdXIg c25hcHNob3QgYXMgb25lCisJICogdGhleSBtdXN0IHdhaXQgZm9yLgorCSAqLworCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CisJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKwlJbnZhbGlkYXRl Q2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNh Y3Rpb25JZCk7CiAJLyogVGhlc2UgbWF5IGhhdmUgYmVlbiBwb2ludGluZyB0byB0aGUgbm93LWdv bmUgZXN0YXRlICovCiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOwogCWlu ZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCisJcmV0dXJuIGxpbWl0WG1pbjsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVt LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDI2NzhmN2Fi NzgyLi45NjhhOGY3NzI1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGd2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBA IC0xOTEsMTQgKzE5MSwxNiBAQCB2YWN1dW1MZWFmUGFnZShzcGdCdWxrRGVsZXRlU3RhdGUgKmJk cywgUmVsYXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIsCiAJCQkgKiBBZGQgdGFyZ2V0IFRJRCB0 byBwZW5kaW5nIGxpc3QgaWYgdGhlIHJlZGlyZWN0aW9uIGNvdWxkIGhhdmUKIAkJCSAqIGhhcHBl bmVkIHNpbmNlIFZBQ1VVTSBzdGFydGVkLiAgKElmIHhpZCBpcyBpbnZhbGlkLCBhc3N1bWUgaXQK IAkJCSAqIG11c3QgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgVkFDVVVNIHN0YXJ0ZWQsIHNpbmNlIFJF SU5ERVgKLQkJCSAqIENPTkNVUlJFTlRMWSBsb2NrcyBvdXQgVkFDVVVNLikKKwkJCSAqIENPTkNV UlJFTlRMWSBsb2NrcyBvdXQgVkFDVVVNLCBpZiBteVhtaW4gaXMgaW52YWxpZCBpdCBpcworCQkJ ICogdmFsaWRhdGlvbiBzY2FuLikKIAkJCSAqCiAJCQkgKiBOb3RlOiB3ZSBjb3VsZCBtYWtlIGEg dGlnaHRlciB0ZXN0IGJ5IHNlZWluZyBpZiB0aGUgeGlkIGlzCiAJCQkgKiAicnVubmluZyIgYWNj b3JkaW5nIHRvIHRoZSBhY3RpdmUgc25hcHNob3Q7IGJ1dCBzbmFwbWdyLmMKIAkJCSAqIGRvZXNu J3QgY3VycmVudGx5IGV4cG9ydCBhIHN1aXRhYmxlIEFQSSwgYW5kIGl0J3Mgbm90IGVudGlyZWx5 CiAJCQkgKiBjbGVhciB0aGF0IGEgdGlnaHRlciB0ZXN0IGlzIHdvcnRoIHRoZSBjeWNsZXMgYW55 d2F5LgogCQkJICovCi0JCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhkdC0+eGlk LCBiZHMtPm15WG1pbikpCisJCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGJkcy0+bXlYbWlu KSB8fAorCQkJCQlUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKGR0LT54aWQsIGJkcy0+bXlY bWluKSkKIAkJCQlzcGdBZGRQZW5kaW5nVElEKGJkcywgJmR0LT5wb2ludGVyKTsKIAkJfQogCQll bHNlCkBAIC04MDgsNyArODEwLDYgQEAgc3BndmFjdXVtc2NhbihzcGdCdWxrRGVsZXRlU3RhdGUg KmJkcykKIAkvKiBGaW5pc2ggc2V0dGluZyB1cCBzcGdCdWxrRGVsZXRlU3RhdGUgKi8KIAlpbml0 U3BHaXN0U3RhdGUoJmJkcy0+c3Bnc3RhdGUsIGluZGV4KTsKIAliZHMtPnBlbmRpbmdMaXN0ID0g TlVMTDsKLQliZHMtPm15WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47CiAJYmRzLT5s YXN0RmlsbGVkQmxvY2sgPSBTUEdJU1RfTEFTVF9GSVhFRF9CTEtOTzsKIAogCS8qCkBAIC05NTks NiArOTYwLDEwIEBAIHNwZ2J1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCWJkcy5zdGF0cyA9IHN0YXRzOwogCWJkcy5jYWxsYmFj ayA9IGNhbGxiYWNrOwogCWJkcy5jYWxsYmFja19zdGF0ZSA9IGNhbGxiYWNrX3N0YXRlOworCWlm IChpbmZvLT52YWxpZGF0ZV9pbmRleCkKKwkJYmRzLm15WG1pbiA9IEludmFsaWRUcmFuc2FjdGlv bklkOworCWVsc2UKKwkJYmRzLm15WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47CiAK IAlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCkBAIC05OTksNiArMTAwNCw3IEBAIHNwZ3ZhY3V1bWNs ZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRz KQogCQliZHMuc3RhdHMgPSBzdGF0czsKIAkJYmRzLmNhbGxiYWNrID0gZHVtbXlfY2FsbGJhY2s7 CiAJCWJkcy5jYWxsYmFja19zdGF0ZSA9IE5VTEw7CisJCWJkcy5teVhtaW4gPSBHZXRBY3RpdmVT bmFwc2hvdCgpLT54bWluOwogCiAJCXNwZ3ZhY3V1bXNjYW4oJmJkcyk7CiAJfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCmluZGV4IDI3NzE0MzRiZTFiLi5lMGMxN2I3M2UxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAt NjgsNiArNjgsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCkBAIC0zNTEyLDggKzM1 MTMsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIGlu c2VydCB0aGVpciBuZXcgdHVwbGVzIGludG8gaXQuIEF0IHRoZSBzYW1lIG1vbWVudCB3ZSBjbGVh ciAiaW5kaXNyZWFkeSIgZm9yCiAgKiBhdXhpbGlhcnkgaW5kZXgsIHNpbmNlIGl0IGlzIG5vIG1v cmUgcmVxdWlyZWQgdG8gYmUgdXBkYXRlZC4KICAqCi0gKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVm ZXJlbmNlIHNuYXBzaG90LCBhbnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwotICog dG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8g dGhlIGluZGV4LgorICogV2UgdGhlbiB0YWtlIGEgbmV3IHNuYXBzaG90LCBhbnkgdHVwbGVzIHRo YXQgYXJlIHZhbGlkIGFjY29yZGluZworICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0 aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LiBJbgorICogb3JkZXIgdG8gcHJv cGFnYXRlIHhtaW4gd2UgcmVzZXQgdGhhdCBzbmFwc2hvdCBldmVyeSBmZXcgc28gb2Z0ZW4uCiAg KiAoQW55IHR1cGxlcyBjb21taXR0ZWQgbGl2ZSBhZnRlciB0aGUgc25hcCB3aWxsIGJlIGluc2Vy dGVkIGludG8gdGhlCiAgKiBpbmRleCBieSB0aGVpciBvcmlnaW5hdGluZyB0cmFuc2FjdGlvbi4g IEFueSB0dXBsZXMgY29tbWl0dGVkIGRlYWQgYmVmb3JlCiAgKiB0aGUgc25hcCBuZWVkIG5vdCBi ZSBpbmRleGVkLCBiZWNhdXNlIHdlIHdpbGwgd2FpdCBvdXQgYWxsIHRyYW5zYWN0aW9ucwpAQCAt MzUyNiw3ICszNTI4LDcgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAgKiBUSURzIG9mIGJvdGggYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5kZXhlcywgYW5kIGRv aW5nIGEgIm1lcmdlIGpvaW4iIGFnYWluc3QKICAqIHRoZSBUSUQgbGlzdHMgdG8gc2VlIHdoaWNo IHR1cGxlcyBmcm9tIGF1eGlsaWFyeSBpbmRleCBhcmUgbWlzc2luZyBmcm9tIHRoZQogICogdGFy Z2V0IGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0IGFsbCB0dXBsZXMgdmFsaWQgYWNj b3JkaW5nIHRvIHRoZQotICogcmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXguIE5v dGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCisgKiBsYXRlc3Qgc25hcHNob3Qg YXJlIGluIHRoZSBpbmRleC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUK ICAqIHBhcnRpY3VsYXIgb3JkZXI6IGF1eGlsaWFyeSBmaXJzdCwgdGFyZ2V0IGxhc3QuCiAgKgog ICogQnVpbGRpbmcgYSB1bmlxdWUgaW5kZXggdGhpcyB3YXkgaXMgdHJpY2t5OiB3ZSBtaWdodCB0 cnkgdG8gaW5zZXJ0IGEKQEAgLTM1NDcsMTMgKzM1NDksMTQgQEAgSW5kZXhDaGVja0V4Y2x1c2lv bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKgogICogQWxzbywgc29tZSBhY3Rpb25zIHRvIGNv bmN1cnJlbnQgZHJvcCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFyZSBwZXJmb3JtZWQuCiAgKi8KLXZv aWQKLXZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJ ZCwgU25hcHNob3Qgc25hcHNob3QpCitUcmFuc2FjdGlvbklkCit2YWxpZGF0ZV9pbmRleChPaWQg aGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpCiB7CiAJUmVsYXRpb24JaGVhcFJl bGF0aW9uLAogCQkJCWluZGV4UmVsYXRpb24sCiAJCQkJYXV4SW5kZXhSZWxhdGlvbjsKIAlJbmRl eEluZm8gICppbmRleEluZm87CisJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47CiAJSW5kZXhWYWN1 dW1JbmZvIGl2aW5mbywgYXV4aXZpbmZvOwogCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZSwgYXV4 U3RhdGU7CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CkBAIC0zNjAzLDggKzM2MDYsMTIgQEAgdmFsaWRh dGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAkgKiBGZXRjaCBpbmZvIG5lZWRlZCBmb3IgaW5kZXhfaW5zZXJ0LiAgKFlv dSBtaWdodCB0aGluayB0aGlzIHNob3VsZCBiZQogCSAqIHBhc3NlZCBpbiBmcm9tIERlZmluZUlu ZGV4LCBidXQgaXRzIGNvcHkgaXMgbG9uZyBnb25lIGR1ZSB0byBoYXZpbmcKIAkgKiBiZWVuIGJ1 aWx0IGluIGEgcHJldmlvdXMgdHJhbnNhY3Rpb24uKQorCSAqCisJICogV2UgbWlnaHQgbmVlZCBz bmFwc2hvdCBmb3IgaW5kZXggZXhwcmVzc2lvbnMgb3IgcHJlZGljYXRlcy4KIAkgKi8KKwlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAlpbmRleEluZm8gPSBC dWlsZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJ LyogbWFyayBidWlsZCBpcyBjb25jdXJyZW50IGp1c3QgZm9yIGNvbnNpc3RlbmN5ICovCiAJaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKQEAgLTM2NDAsNiArMzY0Nyw5IEBAIHZhbGlk YXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpCiAJCQkJCQkJCQkJICAgTlVMTCwgVFVQTEVTT1JUX05PTkUpOwogCWF1eFN0 YXRlLmh0dXBzID0gYXV4U3RhdGUuaXR1cHMgPSBhdXhTdGF0ZS50dXBzX2luc2VydGVkID0gMDsK IAorCS8qIHR1cGxlc29ydF9iZWdpbl9kYXR1bSBtYXkgcmVxdWlyZSBjYXRhbG9nIHNuYXBzaG90 ICovCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCiAJKHZvaWQpIGluZGV4X2J1bGtf ZGVsZXRlKCZhdXhpdmluZm8sIE5VTEwsCiAJCQkJCQkJIHZhbGlkYXRlX2luZGV4X2NhbGxiYWNr LCAmYXV4U3RhdGUpOwogCkBAIC0zNjQ5LDYgKzM2NTksOSBAQCB2YWxpZGF0ZV9pbmRleChPaWQg aGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQog CQkJCQkJCQkJCQlOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJc3RhdGUuaHR1cHMgPSBzdGF0ZS5p dHVwcyA9IHN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyogdHVwbGVzb3J0X2JlZ2luX2Rh dHVtIG1heSByZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1Nu YXBzaG90KCk7CisKIAkvKiBhbWJ1bGtkZWxldGUgdXBkYXRlcyBwcm9ncmVzcyBtZXRyaWNzICov CiAJKHZvaWQpIGluZGV4X2J1bGtfZGVsZXRlKCZpdmluZm8sIE5VTEwsCiAJCQkJCQkJIHZhbGlk YXRlX2luZGV4X2NhbGxiYWNrLCAmc3RhdGUpOwpAQCAtMzY2OCwxOSArMzY4MSwyNCBAQCB2YWxp ZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBz aG90IHNuYXBzaG90KQogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDMsIHBy b2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsKIAl9CiAJdHVwbGVzb3J0X3BlcmZvcm1zb3J0 KHN0YXRlLnR1cGxlc29ydCk7CisJLyogdHVwbGVzb3J0X3BlcmZvcm1zb3J0IG1heSByZXF1aXJl IGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKIAl0 dXBsZXNvcnRfcGVyZm9ybXNvcnQoYXV4U3RhdGUudHVwbGVzb3J0KTsKKwkvKiB0dXBsZXNvcnRf cGVyZm9ybXNvcnQgbWF5IHJlcXVpcmUgY2F0YWxvZyBzbmFwc2hvdCAqLworCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOwogCiAJLyoKIAkgKiBOb3cgbWVyZ2UgYm90aCBpbmRleGVzCiAJICovCiAJcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJ CSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYTUVSR0UpOwotCXRhYmxlX2lu ZGV4X3ZhbGlkYXRlX3NjYW4oaGVhcFJlbGF0aW9uLAotCQkJCQkJCSAgaW5kZXhSZWxhdGlvbiwK LQkJCQkJCQkgIGluZGV4SW5mbywKLQkJCQkJCQkgIHNuYXBzaG90LAotCQkJCQkJCSAgJnN0YXRl LAotCQkJCQkJCSAgJmF1eFN0YXRlKTsKKwlsaW1pdFhtaW4gPSB0YWJsZV9pbmRleF92YWxpZGF0 ZV9zY2FuKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCisJCQkJCQkJ CQkJICBpbmRleEluZm8sCisJCQkJCQkJCQkJICAmc3RhdGUsCisJCQkJCQkJCQkJICAmYXV4U3Rh dGUpOwogCiAJLyogVHVwbGUgc29ydCBjbG9zZWQgYnkgdGFibGVfaW5kZXhfdmFsaWRhdGVfc2Nh biAqLwogCUFzc2VydChzdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCAmJiBhdXhTdGF0ZS50dXBsZXNv cnQgPT0gTlVMTCk7CkBAIC0zNzAzLDYgKzM3MjEsOSBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVh cElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWlu ZGV4X2Nsb3NlKGF1eEluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAJaW5kZXhfY2xvc2UoaW5kZXhS ZWxhdGlvbiwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsYXRpb24sIE5vTG9jayk7CisK KwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCXJldHVybiBs aW1pdFhtaW47CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGU5MWM4ZjI5 ZTViLi5kODFjZGY2NjQ5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTU5Miw3ICs1 OTIsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlMb2NrUmVsSWQJaGVhcHJlbGlkOwog CUxPQ0tUQUcJCWhlYXBsb2NrdGFnOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwotCVNuYXBzaG90CXNu YXBzaG90OwogCU9pZAkJCXJvb3Rfc2F2ZV91c2VyaWQ7CiAJaW50CQkJcm9vdF9zYXZlX3NlY19j b250ZXh0OwogCWludAkJCXJvb3Rfc2F2ZV9uZXN0bGV2ZWw7CkBAIC0xODA2LDMyICsxODA1LDEx IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBi dWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KIAlpZiAoc2FmZV9pbmRl eCkKIAkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQotCS8qCi0JICogTm93IHRha2UgdGhl ICJyZWZlcmVuY2Ugc25hcHNob3QiIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHZhbGlkYXRlX2luZGV4 KCkKLQkgKiB0byBmaWx0ZXIgY2FuZGlkYXRlIHR1cGxlcy4gIEJld2FyZSEgIFRoZXJlIG1pZ2h0 IHN0aWxsIGJlIHNuYXBzaG90cyBpbgotCSAqIHVzZSB0aGF0IHRyZWF0IHNvbWUgdHJhbnNhY3Rp b24gYXMgaW4tcHJvZ3Jlc3MgdGhhdCBvdXIgcmVmZXJlbmNlCi0JICogc25hcHNob3QgdHJlYXRz IGFzIGNvbW1pdHRlZC4gIElmIHN1Y2ggYSByZWNlbnRseS1jb21taXR0ZWQgdHJhbnNhY3Rpb24K LQkgKiBkZWxldGVkIHR1cGxlcyBpbiB0aGUgdGFibGUsIHdlIHdpbGwgbm90IGluY2x1ZGUgdGhl bSBpbiB0aGUgaW5kZXg7IHlldAotCSAqIHRob3NlIHRyYW5zYWN0aW9ucyB3aGljaCBzZWUgdGhl IGRlbGV0aW5nIG9uZSBhcyBzdGlsbC1pbi1wcm9ncmVzcyB3aWxsCi0JICogZXhwZWN0IHN1Y2gg dHVwbGVzIHRvIGJlIHRoZXJlIG9uY2Ugd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCi0JICoK LQkgKiBXZSBzb2x2ZSB0aGlzIGJ5IHdhaXRpbmcgZm9yIGFsbCBlbmRhbmdlcmVkIHRyYW5zYWN0 aW9ucyB0byBleGl0IGJlZm9yZQotCSAqIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLgotCSAq Ci0JICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNob3QgdG8gdGhpcyBzbmFwLCBzaW5jZSBmdW5j dGlvbnMgaW4gaW5kZXhlcyBtYXkKLQkgKiBuZWVkIGEgc25hcHNob3QuCi0JICovCi0Jc25hcHNo b3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JUHVzaEFj dGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKIAkvKgogCSAqIE1lcmdlIGNvbnRlbnQgb2YgYXV4aWxp YXJ5IGFuZCB0YXJnZXQgaW5kZXhlcyAtIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVz LgogCSAqLwotCXZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgYXV4SW5k ZXhSZWxhdGlvbklkLCBzbmFwc2hvdCk7Ci0JbGltaXRYbWluID0gc25hcHNob3QtPnhtaW47CisJ bGltaXRYbWluID0gdmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJ bmRleFJlbGF0aW9uSWQpOwogCi0JUG9wQWN0aXZlU25hcHNob3QoKTsKLQlVbnJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOwogCS8qCiAJICogVGhlIHNuYXBzaG90IHN1YnN5c3RlbSBjb3VsZCBz dGlsbCBjb250YWluIHJlZ2lzdGVyZWQgc25hcHNob3RzIHRoYXQKIAkgKiBhcmUgaG9sZGluZyBi YWNrIG91ciBwcm9jZXNzJ3MgYWR2ZXJ0aXNlZCB4bWluOyBpbiBwYXJ0aWN1bGFyLCBpZgpAQCAt MTg1Myw4ICsxODMxLDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyoKIAkgKiBUaGUg aW5kZXggaXMgbm93IHZhbGlkIGluIHRoZSBzZW5zZSB0aGF0IGl0IGNvbnRhaW5zIGFsbCBjdXJy ZW50bHkKIAkgKiBpbnRlcmVzdGluZyB0dXBsZXMuICBCdXQgc2luY2UgaXQgbWlnaHQgbm90IGNv bnRhaW4gdHVwbGVzIGRlbGV0ZWQganVzdAotCSAqIGJlZm9yZSB0aGUgcmVmZXJlbmNlIHNuYXAg d2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQotCSAqIHRyYW5zYWN0aW9ucyB0aGF0 IG1pZ2h0IGhhdmUgb2xkZXIgc25hcHNob3RzLgorCSAqIGJlZm9yZSB0aGUgbGFzdCBzbmFwc2hv dCBkdXJpbmcgdmFsaWRhdGluZyB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdAorCSAqIG91dCBh bnkgdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCiAJICovCiAJ SU5KRUNUSU9OX1BPSU5UKCJkZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCIsIE5VTEwpOwog CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLApA QCAtNDM2OCw3ICs0MzQ2LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAl7CiAJCVJlaW5k ZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CiAJCVRyYW5zYWN0aW9uSWQgbGltaXRY bWluOwotCQlTbmFwc2hvdAlzbmFwc2hvdDsKIAogCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCkBAIC00MzgzLDEzICs0MzYwLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJaWYg KG5ld2lkeC0+c2FmZSkKIAkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAKLQkJLyoKLQkJ ICogVGFrZSB0aGUgInJlZmVyZW5jZSBzbmFwc2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdmFs aWRhdGVfaW5kZXgoKQotCQkgKiB0byBmaWx0ZXIgY2FuZGlkYXRlIHR1cGxlcy4KLQkJICovCi0J CXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwot CQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9n cmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkg KiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQ0MDEsMTYgKzQzNzEsOCBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5hbUlkOwogCQlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxz KTsKIAotCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCwg bmV3aWR4LT5hdXhJbmRleElkLCBzbmFwc2hvdCk7Ci0KLQkJLyoKLQkJICogV2UgY2FuIG5vdyBk byBhd2F5IHdpdGggb3VyIGFjdGl2ZSBzbmFwc2hvdCwgd2Ugc3RpbGwgbmVlZCB0byBzYXZlCi0J CSAqIHRoZSB4bWluIGxpbWl0IHRvIHdhaXQgZm9yIG9sZGVyIHNuYXBzaG90cy4KLQkJICovCi0J CWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWluOwotCi0JCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0J CVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJCWxpbWl0WG1pbiA9IHZhbGlkYXRlX2lu ZGV4KG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkLCBuZXdpZHgtPmF1eEluZGV4SWQp OworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJCS8q CiAJCSAqIFRvIGVuc3VyZSBubyBkZWFkbG9ja3MsIHdlIG11c3QgY29tbWl0IGFuZCBzdGFydCB5 ZXQgYW5vdGhlcgpAQCAtNDQyMyw3ICs0Mzg1LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkJLyoKIAkJICogVGhlIGluZGV4IGlzIG5vdyB2YWxpZCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBj b250YWlucyBhbGwgY3VycmVudGx5CiAJCSAqIGludGVyZXN0aW5nIHR1cGxlcy4gIEJ1dCBzaW5j ZSBpdCBtaWdodCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAotCQkgKiBqdXN0IGJlZm9yZSB0 aGUgcmVmZXJlbmNlIHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQorCQkg KiBqdXN0IGJlZm9yZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQg b3V0IGFueQogCQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90 cy4KIAkJICoKIAkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGlu IHRoaXMgdHJhbnNhY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBiZDQ2Nzg1ODAxYy4uNDc2 NmVmNWJiY2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNjk2LDEwICs2OTYsOSBAQCB0eXBlZGVm IHN0cnVjdCBUYWJsZUFtUm91dGluZQogCQkJCQkJCQkJCSAgIFRhYmxlU2NhbkRlc2Mgc2Nhbik7 CiAKIAkvKiBzZWUgdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbiBmb3IgcmVmZXJlbmNlIGFib3V0 IHBhcmFtZXRlcnMgKi8KLQl2b2lkIAkJKCppbmRleF92YWxpZGF0ZV9zY2FuKSAoUmVsYXRpb24g dGFibGVfcmVsLAorCVRyYW5zYWN0aW9uSWQgCQkoKmluZGV4X3ZhbGlkYXRlX3NjYW4pIChSZWxh dGlvbiB0YWJsZV9yZWwsCiAJCQkJCQkJCQkJCQlSZWxhdGlvbiBpbmRleF9yZWwsCiAJCQkJCQkJ CQkJCQlzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAotCQkJCQkJCQkJCQkJU25hcHNob3Qg c25hcHNob3QsCiAJCQkJCQkJCQkJCQlzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwK IAkJCQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eF9zdGF0ZSk7CiAKQEAg LTE3OTksMTggKzE3OTgsMTYgQEAgdGFibGVfaW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlv biB0YWJsZV9yZWwsCiAgKiBOb3RlOiBpdCBpcyByZXNwb25zaWJpbGl0eSBvZiB0aGF0IGZ1bmN0 aW9uIHRvIGNsb3NlIHNvcnRzdGF0ZXMgaW4KICAqIGJvdGggYHN0YXRlYCBhbmQgYGF1eHN0YXRl YC4KICAqLwotc3RhdGljIGlubGluZSB2b2lkCitzdGF0aWMgaW5saW5lIFRyYW5zYWN0aW9uSWQK IHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLAogCQkJCQkJICBS ZWxhdGlvbiBpbmRleF9yZWwsCiAJCQkJCQkgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4X2luZm8s Ci0JCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJICBzdHJ1Y3QgVmFsaWRhdGVJbmRl eFN0YXRlICpzdGF0ZSwKIAkJCQkJCSAgc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4c3Rh dGUpCiB7CiAJcmV0dXJuIHRhYmxlX3JlbC0+cmRfdGFibGVhbS0+aW5kZXhfdmFsaWRhdGVfc2Nh bih0YWJsZV9yZWwsCiAJCQkJCQkJCQkJCQkJICBpbmRleF9yZWwsCiAJCQkJCQkJCQkJCQkJICBp bmRleF9pbmZvLAotCQkJCQkJCQkJCQkJCSAgc25hcHNob3QsCiAJCQkJCQkJCQkJCQkJICBzdGF0 ZSwKIAkJCQkJCQkJCQkJCQkgIGF1eHN0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90cmFuc2FtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oCmluZGV4IDdk ODJjZDJlYjU2Li4xNWUzNDVjN2ExOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Ry YW5zYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oCkBAIC0zNTUsNiArMzU1 LDIxIEBAIE5vcm1hbFRyYW5zYWN0aW9uSWRPbGRlcihUcmFuc2FjdGlvbklkIGEsIFRyYW5zYWN0 aW9uSWQgYikKIAlyZXR1cm4gYjsKIH0KIAorLyogcmV0dXJuIHRoZSBuZXdlciBvZiB0aGUgdHdv IElEcyAqLworc3RhdGljIGlubGluZSBUcmFuc2FjdGlvbklkCitUcmFuc2FjdGlvbklkTmV3ZXIo VHJhbnNhY3Rpb25JZCBhLCBUcmFuc2FjdGlvbklkIGIpCit7CisJaWYgKCFUcmFuc2FjdGlvbklk SXNWYWxpZChhKSkKKwkJcmV0dXJuIGI7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGIp KQorCQlyZXR1cm4gYTsKKworCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyhhLCBiKSkKKwkJcmV0 dXJuIGE7CisJcmV0dXJuIGI7Cit9CisKIC8qIHJldHVybiB0aGUgbmV3ZXIgb2YgdGhlIHR3byBJ RHMgKi8KIHN0YXRpYyBpbmxpbmUgRnVsbFRyYW5zYWN0aW9uSWQKIEZ1bGxUcmFuc2FjdGlvbklk TmV3ZXIoRnVsbFRyYW5zYWN0aW9uSWQgYSwgRnVsbFRyYW5zYWN0aW9uSWQgYikKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5k ZXguaAppbmRleCA1M2IyYjEzZWZjMy4uOGZlMGFjYzFlNmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAg LTE1NCw3ICsxNTQsNyBAQCBleHRlcm4gdm9pZCBpbmRleF9idWlsZChSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJCQkJCQlib29sIGlzcmVpbmRleCwKIAkJCQkJCWJvb2wgcGFyYWxsZWwpOwogCi1l eHRlcm4gdm9pZCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1 eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiBUcmFuc2FjdGlvbklkIHZhbGlk YXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCk7CiAKIGV4 dGVybiB2b2lkIGluZGV4X3NldF9zdGF0ZV9mbGFncyhPaWQgaW5kZXhJZCwgSW5kZXhTdGF0ZUZs YWdzQWN0aW9uIGFjdGlvbik7CiAKLS0gCjIuNDMuMAoK --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-only-part-3-0004-Optimize-auxiliary-index-handling.patch_" Content-Disposition: attachment; filename="v20-only-part-3-0004-Optimize-auxiliary-index-handling.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9oge0 RnJvbSA5ODliYWQ0ZTFiMGUxYWVhMjhhMmM1ZGI4YWI5M2JlMmMyZTU0ODBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAzMCBEZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwLW9ubHktcGFydC0zIDQvNV0gT3B0aW1pemUgYXV4aWxpYXJ5IGluZGV4IGhhbmRs aW5nCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1V VEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpTa2lwIHVubmVjZXNzYXJ5IGNv bXB1dGF0aW9ucyBmb3IgYXV4aWxpYXJ5IGluZGljZXMgYnk6Ci0gaW4gdGhlIGluZGV44oCQaW5z ZXJ0IHBhdGgsIGRldGVjdCBhdXhpbGlhcnkgaW5kZXhlcyBhbmQgYnlwYXNzIERhdHVtIHZhbHVl IGNvbXB1dGF0aW9uCi0gc2V0IGluZGV4VW5jaGFuZ2VkPWZhbHNlIGZvciBhdXhpbGlhcnkgaW5k aWNlcyB0byBhdm9pZCByZWR1bmRhbnQgY2hlY2tzCgpUaGVzZSBvcHRpbWl6YXRpb25zIHJlZHVj ZSBvdmVyaGVhZCBkdXJpbmcgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zLgotLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgIHwgMTEgKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIHwgMTEgKysrKysrKy0tLS0KIDIgZmlsZXMgY2hh bmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5k ZXggMDdjYTNkYmM3MWYuLjI3NzE0MzRiZTFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0yOTE1LDYg KzI5MTUsMTcgQEAgRm9ybUluZGV4RGF0dW0oSW5kZXhJbmZvICppbmRleEluZm8sCiAJTGlzdENl bGwgICAqaW5kZXhwcl9pdGVtOwogCWludAkJCWk7CiAKKwkvKiBBdXhpbGlhcnkgaW5kZXggZG9l cyBub3QgbmVlZCBhbnkgdmFsdWVzIHRvIGJlIGNvbXB1dGVkICovCisJaWYgKHVubGlrZWx5KGlu ZGV4SW5mby0+aWlfQXV4aWxpYXJ5KSkKKwl7CisJCWZvciAoaSA9IDA7IGkgPCBpbmRleEluZm8t PmlpX051bUluZGV4QXR0cnM7IGkrKykKKwkJeworCQkJdmFsdWVzW2ldID0gUG9pbnRlckdldERh dHVtKE5VTEwpOworCQkJaXNudWxsW2ldID0gdHJ1ZTsKKwkJfQorCQlyZXR1cm47CisJfQorCiAJ aWYgKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTklMICYmCiAJCWluZGV4SW5mby0+aWlf RXhwcmVzc2lvbnNTdGF0ZSA9PSBOSUwpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YwppbmRleCA0OTljYmExNDVkZC4uYzhiNTFlMjcyNWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCkBAIC00NDAsMTEgKzQ0MCwxNCBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJICogVGhlcmUncyBkZWZpbml0ZWx5IGdvaW5n IHRvIGJlIGFuIGluZGV4X2luc2VydCgpIGNhbGwgZm9yIHRoaXMKIAkJICogaW5kZXguICBJZiB3 ZSdyZSBiZWluZyBjYWxsZWQgYXMgcGFydCBvZiBhbiBVUERBVEUgc3RhdGVtZW50LAogCQkgKiBj b25zaWRlciBpZiB0aGUgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBzaG91bGQgYmUgcGFz c2VkLgorCQkgKgorCQkgKiBJbiBjYXNlIG9mIGF1eGlsaWFyeSBpbmRleCBhbHdheXMgcGFzcyBm YWxzZSBhcyBvcHRpbWlzYXRpb24uCiAJCSAqLwotCQlpbmRleFVuY2hhbmdlZCA9IHVwZGF0ZSAm JiBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKHJlc3VsdFJlbEluZm8sCi0JCQkJCQkJCQkJCQkJ CQkgZXN0YXRlLAotCQkJCQkJCQkJCQkJCQkJIGluZGV4SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBp bmRleFJlbGF0aW9uKTsKKwkJaW5kZXhVbmNoYW5nZWQgPSB1cGRhdGUgJiYgbGlrZWx5KCFpbmRl eEluZm8tPmlpX0F1eGlsaWFyeSkgJiYKKwkJCQkJCQkJCWluZGV4X3VuY2hhbmdlZF9ieV91cGRh dGUocmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgZXN0YXRlLAorCQkJCQkJCQkJCQkJ CQkJICBpbmRleEluZm8sCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4UmVsYXRpb24pOwogCiAJCXNh dGlzZmllc0NvbnN0cmFpbnQgPQogCQkJaW5kZXhfaW5zZXJ0KGluZGV4UmVsYXRpb24sIC8qIGlu ZGV4IHJlbGF0aW9uICovCi0tIAoyLjQzLjAKCg== --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-only-part-3-0003-Track-and-drop-auxiliary-indexes-in-.patch_" Content-Disposition: attachment; filename="v20-only-part-3-0003-Track-and-drop-auxiliary-indexes-in-.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogm2 RnJvbSA1ZmY2Njk2NmExNDFlZjc3NWFkMjcxNjFmZTk4OTk1NWFiNjgzZWEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwLW9ubHktcGFydC0zIDMvNV0gVHJhY2sgYW5kIGRyb3AgYXV4aWxpYXJ5IGluZGV4 ZXMgaW4KIERST1AvUkVJTkRFWAoKRHVyaW5nIGNvbmN1cnJlbnQgaW5kZXggb3BlcmF0aW9ucywg YXV4aWxpYXJ5IGluZGV4ZXMgbWF5IGJlIGxlZnQgYXMgb3JwaGFuZWQgb2JqZWN0cyB3aGVuIGVy cm9ycyBvY2N1ciAoanVuayBhdXhpbGlhcnkgaW5kZXhlcykuCgpUaGlzIHBhdGNoIGltcHJvdmVz IHRoZSBoYW5kbGluZyBvZiBzdWNoIGF1eGlsaWFyeSBpbmRleGVzOgotIGFkZCBhdXhpbGlhcnlG b3JJbmRleElkIHBhcmFtZXRlciB0byBpbmRleF9jcmVhdGUoKSB0byB0cmFjayBkZXBlbmRlbmNp ZXMgYmV0d2VlbiBtYWluIGFuZCBhdXhpbGlhcnkgaW5kZXhlcwotIGF1dG9tYXRpY2FsbHkgZHJv cCBhdXhpbGlhcnkgaW5kZXhlcyB3aGVuIHRoZSBtYWluIGluZGV4IGlzIGRyb3BwZWQKLSBkZWxl dGUganVuayBhdXhpbGlhcnkgaW5kZXhlcyBwcm9wZXJseSBkdXJpbmcgUkVJTkRFWCBvcGVyYXRp b25zCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbCAgICAgICAgIHwgIDE0 ICsrLQogZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICAgIHwgICA4ICst CiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICB8ICA2NCArKysrKysrKysr LS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX2RlcGVuZC5jICAgICAgICAgICAgfCAgNTcgKysr KysrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyAgICAgICAgICAgICB8ICAg MiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgIHwgIDM1ICsr KysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICB8ICA0OCAr KysrKysrKystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAgfCAg IDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCB8IDEwNSArKysrKysr KysrKysrKysrKysrLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAg ICB8ICA1NyArKysrKysrKysrLQogMTIgZmlsZXMgY2hhbmdlZCwgMzU4IGluc2VydGlvbnMoKyks IDM2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2lu ZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCmluZGV4IGU3YTdh MTYwNzQyLi4yOThhMDkzZjU1NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf aW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCkBAIC02 NjgsMTAgKzY2OCwxNiBAQCBJbmRleGVzOgogICAgICJpZHhfY2NhdXgiIHN0aXIgKGNvbCkgSU5W QUxJRAogPC9wcm9ncmFtbGlzdGluZz4KIAotICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeQot ICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlc2UgaW5kZXhlcyBhbmQgdHJ5 IGFnYWluIHRvIHBlcmZvcm0KLSAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ PC9jb21tYW5kPi4gKEFub3RoZXIgcG9zc2liaWxpdHkgaXMKLSAgICB0byByZWJ1aWxkIHRoZSBp bmRleCB3aXRoIDxjb21tYW5kPlJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiku CisgICAgVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRv IGRyb3AgdGhlIGluZGV4IHdpdGgKKyAgICA8Y29tbWFuZD5EUk9QIElOREVYPC9jb21tYW5kPi4g VGhlIGF1eGlsaWFyeSBpbmRleCAoc3VmZml4ZWQgd2l0aAorICAgIDxsaXRlcmFsPmNjYXV4PC9s aXRlcmFsPikgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQgd2hlbiB0aGUgbWFpbgorICAg IGluZGV4IGlzIGRyb3BwZWQuIEFmdGVyIGRyb3BwaW5nIHRoZSBpbmRleGVzLCB5b3UgY2FuIHRy eSBhZ2FpbiB0byBwZXJmb3JtCisgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRM WTwvY29tbWFuZD4uIChBbm90aGVyIHBvc3NpYmlsaXR5IGlzIHRvCisgICAgcmVidWlsZCB0aGUg aW5kZXggd2l0aCA8Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4s CisgICAgd2hpY2ggd2lsbCBhbHNvIGhhbmRsZSBjbGVhbnVwIG9mIGFueSBpbnZhbGlkIGF1eGls aWFyeSBpbmRleGVzLikKKyAgICBJZiB0aGUgb25seSBpbnZhbGlkIGluZGV4IGlzIG9uZSBzdWZm aXhlZCA8bGl0ZXJhbD5jY2F1eDwvbGl0ZXJhbD4KKyAgICByZWNvbW1lbmRlZCByZWNvdmVyeSBt ZXRob2QgaXMganVzdCA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPgorICAgIGZvciB0aGF0 IGluZGV4LgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvcmVpbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5kZXgg NGVkM2M5NjkwMTIuLmQ2Mjc5MWZmOWMzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3Jl aW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbApAQCAtNDc3LDEx ICs0NzcsMTUgQEAgSW5kZXhlczoKICAgICA8bGl0ZXJhbD5fY2NuZXc8L2xpdGVyYWw+IG9yIDxs aXRlcmFsPl9jY2F1eDwvbGl0ZXJhbD4sIHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5z aWVudCBvciBhdXhpbGlhcnkKICAgICBpbmRleCBjcmVhdGVkIGR1cmluZyB0aGUgY29uY3VycmVu dCBvcGVyYXRpb24sIGFuZCB0aGUgcmVjb21tZW5kZWQKICAgICByZWNvdmVyeSBtZXRob2QgaXMg dG8gZHJvcCB0aGVzZSBpbmRleGVzIHVzaW5nIDxsaXRlcmFsPkRST1AgSU5ERVg8L2xpdGVyYWw+ LAotICAgIHRoZW4gYXR0ZW1wdCA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFu ZD4gYWdhaW4uCisgICAgdGhlbiBhdHRlbXB0IDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZ PC9jb21tYW5kPiBhZ2Fpbi4gVGhlIGF1eGlsaWFyeSBpbmRleAorICAgIChzdWZmaXhlZCB3aXRo IDxsaXRlcmFsPl9jY2F1eDwvbGl0ZXJhbD4pIHdpbGwgYmUgYXV0b21hdGljYWxseSBkcm9wcGVk CisgICAgYWxvbmcgd2l0aCBpdHMgbWFpbiBpbmRleC4KICAgICBJZiB0aGUgaW52YWxpZCBpbmRl eCBpcyBpbnN0ZWFkIHN1ZmZpeGVkIDxsaXRlcmFsPl9jY29sZDwvbGl0ZXJhbD4sCiAgICAgaXQg Y29ycmVzcG9uZHMgdG8gdGhlIG9yaWdpbmFsIGluZGV4IHdoaWNoIGNvdWxkIG5vdCBiZSBkcm9w cGVkOwogICAgIHRoZSByZWNvbW1lbmRlZCByZWNvdmVyeSBtZXRob2QgaXMgdG8ganVzdCBkcm9w IHNhaWQgaW5kZXgsIHNpbmNlIHRoZQotICAgIHJlYnVpbGQgcHJvcGVyIGhhcyBiZWVuIHN1Y2Nl c3NmdWwuCisgICAgcmVidWlsZCBwcm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4gSWYgdGhlIG9u bHkKKyAgICBpbnZhbGlkIGluZGV4IGlzIG9uZSBzdWZmaXhlZCA8bGl0ZXJhbD5jY2F1eDwvbGl0 ZXJhbD4gcmVjb21tZW5kZWQKKyAgICByZWNvdmVyeSBtZXRob2QgaXMganVzdCA8bGl0ZXJhbD5E Uk9QIElOREVYPC9saXRlcmFsPiBmb3IgdGhhdCBpbmRleC4KICAgICBBIG5vbnplcm8gbnVtYmVy IG1heSBiZSBhcHBlbmRlZCB0byB0aGUgc3VmZml4IG9mIHRoZSBpbnZhbGlkIGluZGV4CiAgICAg bmFtZXMgdG8ga2VlcCB0aGVtIHVuaXF1ZSwgbGlrZSA8bGl0ZXJhbD5fY2NuZXcxPC9saXRlcmFs PiwKICAgICA8bGl0ZXJhbD5fY2NvbGQyPC9saXRlcmFsPiwgZXRjLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVu ZGVuY3kuYwppbmRleCAxODMxNmEzOTY4Yi4uYWI0YzNlMmZiNGEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVw ZW5kZW5jeS5jCkBAIC0yODYsNyArMjg2LDcgQEAgcGVyZm9ybURlbGV0aW9uKGNvbnN0IE9iamVj dEFkZHJlc3MgKm9iamVjdCwKIAkgKiBBY3F1aXJlIGRlbGV0aW9uIGxvY2sgb24gdGhlIHRhcmdl dCBvYmplY3QuICAoSWRlYWxseSB0aGUgY2FsbGVyIGhhcwogCSAqIGRvbmUgdGhpcyBhbHJlYWR5 LCBidXQgbWFueSBwbGFjZXMgYXJlIHNsb3BweSBhYm91dCBpdC4pCiAJICovCi0JQWNxdWlyZURl bGV0aW9uTG9jayhvYmplY3QsIDApOworCUFjcXVpcmVEZWxldGlvbkxvY2sob2JqZWN0LCBmbGFn cyk7CiAKIAkvKgogCSAqIENvbnN0cnVjdCBhIGxpc3Qgb2Ygb2JqZWN0cyB0byBkZWxldGUgKGll LCB0aGUgZ2l2ZW4gb2JqZWN0IHBsdXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA4NWQyYjIwNGY0ZC4u MDdjYTNkYmM3MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTY4Nyw2ICs2ODcsOCBAQCBVcGRhdGVJ bmRleFJlbGF0aW9uKE9pZCBpbmRleG9pZCwKICAqCQlwYXJlbnQgaW5kZXg7IG90aGVyd2lzZSBJ bnZhbGlkT2lkLgogICogcGFyZW50Q29uc3RyYWludElkOiBpZiBjcmVhdGluZyBhIGNvbnN0cmFp bnQgb24gYSBwYXJ0aXRpb24sIHRoZSBPSUQKICAqCQlvZiB0aGUgY29uc3RyYWludCBpbiB0aGUg cGFyZW50OyBvdGhlcndpc2UgSW52YWxpZE9pZC4KKyAqIGF1eGlsaWFyeUZvckluZGV4SWQ6IGlm IGNyZWF0aW5nIGF1eGlsaWFyeSBpbmRleCwgdGhlIE9JRCBvZiB0aGUgbWFpbgorICoJCWluZGV4 OyBvdGhlcndpc2UgSW52YWxpZE9pZC4KICAqIHJlbEZpbGVOdW1iZXI6IG5vcm1hbGx5LCBwYXNz IEludmFsaWRSZWxGaWxlTnVtYmVyIHRvIGdldCBuZXcgc3RvcmFnZS4KICAqCQlNYXkgYmUgbm9u emVybyB0byBhdHRhY2ggYW4gZXhpc3RpbmcgdmFsaWQgYnVpbGQuCiAgKiBpbmRleEluZm86IHNh bWUgaW5mbyBleGVjdXRvciB1c2VzIHRvIGluc2VydCBpbnRvIHRoZSBpbmRleApAQCAtNzMzLDYg KzczNSw3IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkgT2lkIGlu ZGV4UmVsYXRpb25JZCwKIAkJCSBPaWQgcGFyZW50SW5kZXhSZWxpZCwKIAkJCSBPaWQgcGFyZW50 Q29uc3RyYWludElkLAorCQkJIE9pZCBhdXhpbGlhcnlGb3JJbmRleElkLAogCQkJIFJlbEZpbGVO dW1iZXIgcmVsRmlsZU51bWJlciwKIAkJCSBJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCSBjb25z dCBMaXN0ICppbmRleENvbE5hbWVzLApAQCAtNzc1LDYgKzc3OCw4IEBAIGluZGV4X2NyZWF0ZShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCSAgICgoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfQUREX0NP TlNUUkFJTlQpICE9IDApKTsKIAkvKiBwYXJ0aXRpb25lZCBpbmRleGVzIG11c3QgbmV2ZXIgYmUg ImJ1aWx0IiBieSB0aGVtc2VsdmVzICovCiAJQXNzZXJ0KCFwYXJ0aXRpb25lZCB8fCAoZmxhZ3Mg JiBJTkRFWF9DUkVBVEVfU0tJUF9CVUlMRCkpOworCS8qIGF1eGlsaWFyeUZvckluZGV4SWQgYW5k IElOREVYX0NSRUFURV9BVVhJTElBUlkgYXJlIHJlcXVpcmVkIGJvdGggb3IgbmVpdGhlciAqLwor CUFzc2VydChPaWRJc1ZhbGlkKGF1eGlsaWFyeUZvckluZGV4SWQpID09IGF1eGlsaWFyeSk7CiAK IAlyZWxraW5kID0gcGFydGl0aW9uZWQgPyBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYIDogUkVM S0lORF9JTkRFWDsKIAlpc19leGNsdXNpb24gPSAoaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHMg IT0gTlVMTCk7CkBAIC0xMTc2LDYgKzExODEsMTUgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwg REVQRU5ERU5DWV9QQVJUSVRJT05fU0VDKTsKIAkJfQogCisJCS8qCisJCSAqIFJlY29yZCBkZXBl bmRlbmN5IG9uIHRoZSBtYWluIGluZGV4IGluIGNhc2Ugb2YgYXV4aWxpYXJ5IGluZGV4LgorCQkg Ki8KKwkJaWYgKE9pZElzVmFsaWQoYXV4aWxpYXJ5Rm9ySW5kZXhJZCkpCisJCXsKKwkJCU9iamVj dEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBhdXhpbGlhcnlGb3JJ bmRleElkKTsKKwkJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQ RU5ERU5DWV9BVVRPKTsKKwkJfQorCiAJCS8qIHBsYWNlaG9sZGVyIGZvciBub3JtYWwgZGVwZW5k ZW5jaWVzICovCiAJCWFkZHJzID0gbmV3X29iamVjdF9hZGRyZXNzZXMoKTsKIApAQCAtMTQ1OCw2 ICsxNDcyLDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJICBJbnZhbGlkT2lkLAkvKiBpbmRleFJl bGF0aW9uSWQgKi8KIAkJCQkJCQkgIEludmFsaWRPaWQsCS8qIHBhcmVudEluZGV4UmVsaWQgKi8K IAkJCQkJCQkgIEludmFsaWRPaWQsCS8qIHBhcmVudENvbnN0cmFpbnRJZCAqLworCQkJCQkJCSAg SW52YWxpZE9pZCwJLyogYXV4aWxpYXJ5Rm9ySW5kZXhJZCAqLwogCQkJCQkJCSAgSW52YWxpZFJl bEZpbGVOdW1iZXIsIC8qIHJlbEZpbGVOdW1iZXIgKi8KIAkJCQkJCQkgIG5ld0luZm8sCiAJCQkJ CQkJICBpbmRleENvbE5hbWVzLApAQCAtMTYwOCw2ICsxNjIzLDcgQEAgaW5kZXhfY29uY3VycmVu dGx5X2NyZWF0ZV9hdXgoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgbWFpbkluZGV4SWQsCiAJ CQkJCQkJICBJbnZhbGlkT2lkLCAgICAvKiBpbmRleFJlbGF0aW9uSWQgKi8KIAkJCQkJCQkgIElu dmFsaWRPaWQsICAgIC8qIHBhcmVudEluZGV4UmVsaWQgKi8KIAkJCQkJCQkgIEludmFsaWRPaWQs ICAgIC8qIHBhcmVudENvbnN0cmFpbnRJZCAqLworCQkJCQkJCSAgbWFpbkluZGV4SWQsICAgLyog YXV4aWxpYXJ5Rm9ySW5kZXhJZCAqLwogCQkJCQkJCSAgSW52YWxpZFJlbEZpbGVOdW1iZXIsIC8q IHJlbEZpbGVOdW1iZXIgKi8KIAkJCQkJCQkgIG5ld0luZm8sCiAJCQkJCQkJICBpbmRleENvbE5h bWVzLApAQCAtMzgyMCw2ICszODM2LDcgQEAgcmVpbmRleF9pbmRleChjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJCQkJaGVhcFJlbGF0aW9uOwogCU9pZAkJCWhlYXBJZDsK IAlPaWQJCQlzYXZlX3VzZXJpZDsKKwlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAlpbnQJCQlzYXZl X3NlY19jb250ZXh0OwogCWludAkJCXNhdmVfbmVzdGxldmVsOwogCUluZGV4SW5mbyAgKmluZGV4 SW5mbzsKQEAgLTM4NzYsNiArMzg5MywxOSBAQCByZWluZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9w YXJhbSgyLCBwcm9ncmVzc19jb2xzLCBwcm9ncmVzc192YWxzKTsKIAl9CiAKKwkvKiBDaGVjayBm b3IgdGhlIGF1eGlsaWFyeSBpbmRleCBmb3IgdGhhdCBpbmRleCwgaXQgbmVlZHMgdG8gZHJvcHBl ZCAqLworCWp1bmtBdXhJbmRleElkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChpbmRleElkKTsKKwlp ZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVj dDsKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9iamVjdC5vYmpl Y3RJZCA9IGp1bmtBdXhJbmRleElkOworCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCQlwZXJm b3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwKKwkJCQkJCQkJIFBFUkZPUk1fREVM RVRJT05fSU5URVJOQUwgfAorCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9RVUlFVExZKTsKKwl9 CisKIAkvKgogCSAqIE9wZW4gdGhlIHRhcmdldCBpbmRleCByZWxhdGlvbiBhbmQgZ2V0IGFuIGV4 Y2x1c2l2ZSBsb2NrIG9uIGl0LCB0bwogCSAqIGVuc3VyZSB0aGF0IG5vIG9uZSBlbHNlIGlzIHRv dWNoaW5nIHRoaXMgcGFydGljdWxhciBpbmRleC4KQEAgLTQxNjQsNyArNDE5NCw4IEBAIHJlaW5k ZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50IGZsYWdz LAogewogCVJlbGF0aW9uCXJlbDsKIAlPaWQJCQl0b2FzdF9yZWxpZDsKLQlMaXN0CSAgICppbmRl eElkczsKKwlMaXN0CSAgICppbmRleElkcywKKwkJCSAgICphdXhJbmRleElkcyA9IE5JTDsKIAlj aGFyCQlwZXJzaXN0ZW5jZTsKIAlib29sCQlyZXN1bHQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpp bmRleElkOwpAQCAtNDI1MywxMyArNDI4NCwzMCBAQCByZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBmbGFncywKIAllbHNlCiAJCXBlcnNpc3Rl bmNlID0gcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlOwogCisJZm9yZWFjaChpbmRleElkLCBp bmRleElkcykKKwl7CisJCU9pZAkJCWluZGV4T2lkID0gbGZpcnN0X29pZChpbmRleElkKTsKKwkJ T2lkCQkJaW5kZXhBbSA9IGdldF9yZWxfcmVsYW0oaW5kZXhPaWQpOworCisJCS8qIEFsbCBTVElS IGluZGV4ZXMgYXJlIGF1eGlsaWFyeSBpbmRleGVzICovCisJCWlmIChpbmRleEFtID09IFNUSVJf QU1fT0lEKQorCQl7CisJCQlpZiAoZmxhZ3MgJiBSRUlOREVYX1JFTF9TVVBQUkVTU19JTkRFWF9V U0UpCisJCQkJUmVtb3ZlUmVpbmRleFBlbmRpbmcoaW5kZXhPaWQpOworCQkJYXV4SW5kZXhJZHMg PSBsYXBwZW5kX29pZChhdXhJbmRleElkcywgaW5kZXhPaWQpOworCQl9CisJfQorCiAJLyogUmVp bmRleCBhbGwgdGhlIGluZGV4ZXMuICovCiAJaSA9IDE7CiAJZm9yZWFjaChpbmRleElkLCBpbmRl eElkcykKIAl7CiAJCU9pZAkJCWluZGV4T2lkID0gbGZpcnN0X29pZChpbmRleElkKTsKIAkJT2lk CQkJaW5kZXhOYW1lc3BhY2VJZCA9IGdldF9yZWxfbmFtZXNwYWNlKGluZGV4T2lkKTsKLQkJT2lk CQkJaW5kZXhBbSA9IGdldF9yZWxfcmVsYW0oaW5kZXhPaWQpOworCisJCS8qIEF1eGlsaWFyeSBp bmRleGVzIGFyZSBnb2luZyB0byBiZSBkcm9wcGVkIGR1cmluZyBtYWluIGluZGV4IHJlYnVpbGQg Ki8KKwkJaWYgKGxpc3RfbWVtYmVyX29pZChhdXhJbmRleElkcywgaW5kZXhPaWQpKQorCQkJY29u dGludWU7CiAKIAkJLyoKIAkJICogU2tpcCBhbnkgaW52YWxpZCBpbmRleGVzIG9uIGEgVE9BU1Qg dGFibGUuICBUaGVzZSBjYW4gb25seSBiZQpAQCAtNDI4NSwxOCArNDMzMyw2IEBAIHJlaW5kZXhf cmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50IGZsYWdzLAog CQkJY29udGludWU7CiAJCX0KIAotCQlpZiAoaW5kZXhBbSA9PSBTVElSX0FNX09JRCkKLQkJewot CQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCi0JCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGlu ZGV4IFwiJXMuJXNcIiIsCi0JCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGluZGV4TmFtZXNwYWNl SWQpLAotCQkJCQkJCWdldF9yZWxfbmFtZShpbmRleE9pZCkpKSk7Ci0JCQlpZiAoZmxhZ3MgJiBS RUlOREVYX1JFTF9TVVBQUkVTU19JTkRFWF9VU0UpCi0JCQkJUmVtb3ZlUmVpbmRleFBlbmRpbmco aW5kZXhPaWQpOwotCQkJY29udGludWU7Ci0JCX0KLQogCQlyZWluZGV4X2luZGV4KHN0bXQsIGlu ZGV4T2lkLCAhKGZsYWdzICYgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlOVFMpLAogCQkJCQkg IHBlcnNpc3RlbmNlLCBwYXJhbXMpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX2RlcGVuZC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYwppbmRleCBjOGIx MWY4ODdlMi4uMWMyNzVlZjM3M2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf ZGVwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYwpAQCAtMTAzNSw2 ICsxMDM1LDYzIEBAIGdldF9pbmRleF9jb25zdHJhaW50KE9pZCBpbmRleElkKQogCXJldHVybiBj b25zdHJhaW50SWQ7CiB9CiAKKy8qCisgKiBnZXRfYXV4aWxpYXJ5X2luZGV4CisgKgkJR2l2ZW4g dGhlIE9JRCBvZiBhbiBpbmRleCwgcmV0dXJuIHRoZSBPSUQgb2YgaXRzIGF1eGlsaWFyeQorICoJ CWluZGV4LCBvciBJbnZhbGlkT2lkIGlmIHRoZXJlIGlzIG5vIGF1eGlsaWFyeSBpbmRleC4KKyAq LworT2lkCitnZXRfYXV4aWxpYXJ5X2luZGV4KE9pZCBpbmRleElkKQoreworCU9pZAkJCWF1eGls aWFyeUluZGV4T2lkID0gSW52YWxpZE9pZDsKKwlSZWxhdGlvbglkZXBSZWw7CisJU2NhbktleURh dGEga2V5WzNdOworCVN5c1NjYW5EZXNjIHNjYW47CisJSGVhcFR1cGxlCXR1cDsKKworCS8qIFNl YXJjaCB0aGUgZGVwZW5kZW5jeSB0YWJsZSBmb3IgdGhlIGluZGV4ICovCisJZGVwUmVsID0gdGFi bGVfb3BlbihEZXBlbmRSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJU2NhbktleUlu aXQoJmtleVswXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZjbGFzc2lkLAorCQkJCUJURXF1YWxT dHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uUmVs YXRpb25JZCkpOworCVNjYW5LZXlJbml0KCZrZXlbMV0sCisJCQkJQW51bV9wZ19kZXBlbmRfcmVm b2JqaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElk R2V0RGF0dW0oaW5kZXhJZCkpOworCVNjYW5LZXlJbml0KCZrZXlbMl0sCisJCQkJQW51bV9wZ19k ZXBlbmRfcmVmb2Jqc3ViaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX0lOVDRFUSwK KwkJCQlJbnQzMkdldERhdHVtKDApKTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oZGVw UmVsLCBEZXBlbmRSZWZlcmVuY2VJbmRleElkLCB0cnVlLAorCQkJCQkJCSAgTlVMTCwgMywga2V5 KTsKKworCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lzdGFibGVfZ2V0bmV4dChz Y2FuKSkpCisJeworCQlGb3JtX3BnX2RlcGVuZCBkZXByZWMgPSAoRm9ybV9wZ19kZXBlbmQpIEdF VFNUUlVDVCh0dXApOworCisJCS8qCisJCSAqIFdlIGFzc3VtZSBhbnkgQVVUTyBkZXBlbmRlbmN5 IG9uIGluZGV4IHdpdGggcmVsX2tpbmQKKwkJICogb2YgUkVMS0lORF9JTkRFWCBpcyB0aGF0IHdl IGFyZSBsb29raW5nIGZvci4KKwkJICovCisJCWlmIChkZXByZWMtPmNsYXNzaWQgPT0gUmVsYXRp b25SZWxhdGlvbklkICYmCisJCQkoZGVwcmVjLT5kZXB0eXBlID09IERFUEVOREVOQ1lfQVVUTykg JiYKKwkJCWdldF9yZWxfcmVsa2luZChkZXByZWMtPm9iamlkKSA9PSBSRUxLSU5EX0lOREVYKQor CQl7CisJCQlhdXhpbGlhcnlJbmRleE9pZCA9IGRlcHJlYy0+b2JqaWQ7CisJCQlicmVhazsKKwkJ fQorCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UoZGVwUmVsLCBB Y2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIGF1eGlsaWFyeUluZGV4T2lkOworfQorCiAvKgog ICogZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50cwogICoJCUdpdmVuIHRoZSBPSUQgb2YgYW4gaW5k ZXgsIHJldHVybiB0aGUgT0lEIG9mIGFsbCBmb3JlaWduIGtleQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5j CmluZGV4IDBlZTJmZDVlN2RlLi4wZWU4Y2JmNGNhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpA QCAtMzE5LDcgKzMxOSw3IEBAIGNyZWF0ZV90b2FzdF90YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0 b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJY29sb3B0aW9uc1sxXSA9IDA7CiAKIAlpbmRl eF9jcmVhdGUodG9hc3RfcmVsLCB0b2FzdF9pZHhuYW1lLCB0b2FzdEluZGV4T2lkLCBJbnZhbGlk T2lkLAotCQkJCSBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLAorCQkJCSBJbnZhbGlkT2lkLCBJbnZh bGlkT2lkLCBJbnZhbGlkT2lkLAogCQkJCSBpbmRleEluZm8sCiAJCQkJIGxpc3RfbWFrZTIoImNo dW5rX2lkIiwgImNodW5rX3NlcSIpLAogCQkJCSBCVFJFRV9BTV9PSUQsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2lu ZGV4Y21kcy5jCmluZGV4IGQyYjIzYzQ0ZTFhLi5lOTFjOGYyOWU1YiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMKQEAgLTEyNjAsNyArMTI2MCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlk LAogCiAJaW5kZXhSZWxhdGlvbklkID0KIAkJaW5kZXhfY3JlYXRlKHJlbCwgaW5kZXhSZWxhdGlv bk5hbWUsIGluZGV4UmVsYXRpb25JZCwgcGFyZW50SW5kZXhJZCwKLQkJCQkJIHBhcmVudENvbnN0 cmFpbnRJZCwKKwkJCQkJIHBhcmVudENvbnN0cmFpbnRJZCwgSW52YWxpZE9pZCwKIAkJCQkJIHN0 bXQtPm9sZE51bWJlciwgaW5kZXhJbmZvLCBpbmRleENvbE5hbWVzLAogCQkJCQkgYWNjZXNzTWV0 aG9kSWQsIHRhYmxlc3BhY2VJZCwKIAkJCQkJIGNvbGxhdGlvbklkcywgb3BjbGFzc0lkcywgb3Bj bGFzc09wdGlvbnMsCkBAIC0zNjUxLDYgKzM2NTEsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJy ZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVp bgogCXsKIAkJT2lkCQkJaW5kZXhJZDsKIAkJT2lkCQkJYXV4SW5kZXhJZDsKKwkJT2lkCQkJanVu a0F1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxlSWQ7CiAJCU9pZAkJCWFtSWQ7CiAJCWJvb2wJCXNh ZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KQEAgLTQwMDAsNiArNDAwMSw3 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeDsK IAkJT2lkCQkJbmV3SW5kZXhJZDsKIAkJT2lkCQkJYXV4SW5kZXhJZDsKKwkJT2lkCQkJanVua0F1 eEluZGV4SWQ7CiAJCVJlbGF0aW9uCWluZGV4UmVsOwogCQlSZWxhdGlvbgloZWFwUmVsOwogCQlP aWQJCQlzYXZlX3VzZXJpZDsKQEAgLTQwMDcsNiArNDAwOSw3IEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25z dCBSZWluCiAJCWludAkJCXNhdmVfbmVzdGxldmVsOwogCQlSZWxhdGlvbgluZXdJbmRleFJlbDsK IAkJUmVsYXRpb24JYXV4SW5kZXhSZWw7CisJCVJlbGF0aW9uCWp1bmtBdXhJbmRleFJlbDsKIAkJ TG9ja1JlbElkICAqbG9ja3JlbGlkOwogCQlPaWQJCQl0YWJsZXNwYWNlaWQ7CiAKQEAgLTQwODAs MTIgKzQwODMsMTcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCQkJCQkJCSAgIHRh Ymxlc3BhY2VpZCwKIAkJCQkJCQkJCQkJCSAgIGF1eENvbmN1cnJlbnROYW1lKTsKIAorCQkvKiBT ZWFyY2ggZm9yIGF1eGlsaWFyeSBpbmRleCBmb3IgcmVpbmRleGVkIGluZGV4LCB0byBkcm9wIGl0 ICovCisJCWp1bmtBdXhJbmRleElkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChpZHgtPmluZGV4SWQp OworCiAJCS8qCiAJCSAqIE5vdyBvcGVuIHRoZSByZWxhdGlvbiBvZiB0aGUgbmV3IGluZGV4LCBh IHNlc3Npb24tbGV2ZWwgbG9jayBpcwogCQkgKiBhbHNvIG5lZWRlZCBvbiBpdC4KIAkJICovCiAJ CW5ld0luZGV4UmVsID0gaW5kZXhfb3BlbihuZXdJbmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2 ZUxvY2spOwogCQlhdXhJbmRleFJlbCA9IGluZGV4X29wZW4oYXV4SW5kZXhJZCwgU2hhcmVVcGRh dGVFeGNsdXNpdmVMb2NrKTsKKwkJaWYgKE9pZElzVmFsaWQoanVua0F1eEluZGV4SWQpKQorCQkJ anVua0F1eEluZGV4UmVsID0gaW5kZXhfb3BlbihqdW5rQXV4SW5kZXhJZCwgU2hhcmVVcGRhdGVF eGNsdXNpdmVMb2NrKTsKIAogCQkvKgogCQkgKiBTYXZlIHRoZSBsaXN0IG9mIE9JRHMgYW5kIGxv Y2tzIGluIHByaXZhdGUgY29udGV4dApAQCAtNDA5NSw2ICs0MTAzLDcgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkJbmV3aWR4ID0gcGFsbG9jX29iamVjdChSZWluZGV4SW5kZXhJbmZvKTsK IAkJbmV3aWR4LT5pbmRleElkID0gbmV3SW5kZXhJZDsKIAkJbmV3aWR4LT5hdXhJbmRleElkID0g YXV4SW5kZXhJZDsKKwkJbmV3aWR4LT5qdW5rQXV4SW5kZXhJZCA9IGp1bmtBdXhJbmRleElkOwog CQluZXdpZHgtPnNhZmUgPSBpZHgtPnNhZmU7CiAJCW5ld2lkeC0+dGFibGVJZCA9IGlkeC0+dGFi bGVJZDsKIAkJbmV3aWR4LT5hbUlkID0gaWR4LT5hbUlkOwpAQCAtNDExNiwxMCArNDEyNSwxOCBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExv Y2tSZWxJZCk7CiAJCSpsb2NrcmVsaWQgPSBhdXhJbmRleFJlbC0+cmRfbG9ja0luZm8ubG9ja1Jl bElkOwogCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQp OworCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJCXsKKwkJCWxvY2tyZWxpZCA9 IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKKwkJCSpsb2NrcmVsaWQgPSBqdW5rQXV4SW5kZXhS ZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKKwkJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5kKHJl bGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CisJCX0KIAogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY29udGV4dCk7CiAKIAkJaW5kZXhfY2xvc2UoaW5kZXhSZWwsIE5vTG9jayk7CisJCWlmIChP aWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWluZGV4X2Nsb3NlKGp1bmtBdXhJbmRleFJl bCwgTm9Mb2NrKTsKIAkJaW5kZXhfY2xvc2UoYXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4 X2Nsb3NlKG5ld0luZGV4UmVsLCBOb0xvY2spOwogCkBAIC00MzA4LDcgKzQzMjUsOCBAQCBSZWlu ZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxh dGlvbk9pZCwgY29uc3QgUmVpbgogCiAJLyoKIAkgKiBBdCB0aGlzIG1vbWVudCBhbGwgdGFyZ2V0 IGluZGV4ZXMgYXJlIG1hcmtlZCBhcyAicmVhZHktdG8taW5zZXJ0Ii4gU28sCi0JICogd2UgYXJl IGZyZWUgdG8gc3RhcnQgcHJvY2VzcyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcy4KKwkg KiB3ZSBhcmUgZnJlZSB0byBzdGFydCBwcm9jZXNzIG9mIGRyb3BwaW5nIGF1eGlsaWFyeSBpbmRl eGVzIC0gaW5jbHVkaW5nCisJICoganVzdCBpbmRleGVzIGRldGVjdGVkIGVhcmxpZXIuCiAJICov CiAJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCiAJewpAQCAtNDMzMSw2ICs0MzQ5LDkgQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFu c2FjdGlvblNuYXBzaG90KCkpOwogCQlpbmRleF9zZXRfc3RhdGVfZmxhZ3MobmV3aWR4LT5hdXhJ bmRleElkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsKKwkJLyogRW5zdXJlIGp1c3QgaW5kZXgg aXMgbWFya2VkIGFzIG5vbi1yZWFkeSAqLworCQlpZiAoT2lkSXNWYWxpZChuZXdpZHgtPmp1bmtB dXhJbmRleElkKSkKKwkJCWluZGV4X3NldF9zdGF0ZV9mbGFncyhuZXdpZHgtPmp1bmtBdXhJbmRl eElkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAog CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTQ1NDksNiArNDU3MCw4IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNu YXBzaG90KCkpOwogCiAJCWluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxl SWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisJCWlmIChPaWRJc1ZhbGlkKG5ld2lkeC0+anVua0F1 eEluZGV4SWQpKQorCQkJaW5kZXhfY29uY3VycmVudGx5X3NldF9kZWFkKG5ld2lkeC0+dGFibGVJ ZCwgbmV3aWR4LT5qdW5rQXV4SW5kZXhJZCk7CiAKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAl9 CkBAIC00NjAwLDYgKzQ2MjMsMTQgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCW9iamVj dC5vYmplY3RTdWJJZCA9IDA7CiAKIAkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0 LCBvYmplY3RzKTsKKworCQkJaWYgKE9pZElzVmFsaWQoaWR4LT5qdW5rQXV4SW5kZXhJZCkpCisJ CQl7CisKKwkJCQlvYmplY3Qub2JqZWN0SWQgPSBpZHgtPmp1bmtBdXhJbmRleElkOworCQkJCW9i amVjdC5vYmplY3RTdWJJZCA9IDA7CisJCQkJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZvYmpl Y3QsIG9iamVjdHMpOworCQkJfQogCQl9CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK aW5kZXggNTRhZDM4MjQ3YWEuLmExMDQzYzE4M2YwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwpAQCAtMTUzMiw2ICsxNTMyLDggQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQog CUxpc3RDZWxsICAgKmNlbGw7CiAJaW50CQkJZmxhZ3MgPSAwOwogCUxPQ0tNT0RFCWxvY2ttb2Rl ID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwlNZW1vcnlDb250ZXh0IHByaXZhdGVfY29udGV4dCwK KwkJCQkgIG9sZGNvbnRleHQ7CiAKIAkvKiBEUk9QIENPTkNVUlJFTlRMWSB1c2VzIGEgd2Vha2Vy IGxvY2ssIGFuZCBoYXMgc29tZSByZXN0cmljdGlvbnMgKi8KIAlpZiAoZHJvcC0+Y29uY3VycmVu dCkKQEAgLTE1OTIsOSArMTU5NCwyMCBAQCBSZW1vdmVSZWxhdGlvbnMoRHJvcFN0bXQgKmRyb3Ap CiAJCQlyZWxraW5kID0gMDsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIAkJCWJyZWFrOwog CX0KKwkvKgorCSAqIENyZWF0ZSBhIG1lbW9yeSBjb250ZXh0IHRoYXQgd2lsbCBzdXJ2aXZlIGZv cmNlZCB0cmFuc2FjdGlvbiBjb21taXRzIHdlCisJICogbWF5IG5lZWQgdG8gZG8gYmVsb3cgKGlu IGNhc2Ugb2YgY29uY3VycmVudCBpbmRleCBkcm9wKS4KKwkgKiBTaW5jZSBpdCBpcyBhIGNoaWxk IG9mIFBvcnRhbENvbnRleHQsIGl0IHdpbGwgZ28gYXdheSBldmVudHVhbGx5IGV2ZW4gaWYKKwkg KiB3ZSBzdWZmZXIgYW4gZXJyb3I7IHRoZXJlJ3Mgbm8gbmVlZCBmb3Igc3BlY2lhbCBhYm9ydCBj bGVhbnVwIGxvZ2ljLgorCSAqLworCXByaXZhdGVfY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENy ZWF0ZShQb3J0YWxDb250ZXh0LAorCQkJCQkJCQkJCQkiUmVtb3ZlUmVsYXRpb25zIiwKKwkJCQkJ CQkJCQkJQUxMT0NTRVRfU01BTExfU0laRVMpOwogCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhwcml2YXRlX2NvbnRleHQpOwogCS8qIExvY2sgYW5kIHZhbGlkYXRlIGVhY2gg cmVsYXRpb247IGJ1aWxkIGEgbGlzdCBvZiBvYmplY3QgYWRkcmVzc2VzICovCiAJb2JqZWN0cyA9 IG5ld19vYmplY3RfYWRkcmVzc2VzKCk7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOwogCiAJZm9yZWFjaChjZWxsLCBkcm9wLT5vYmplY3RzKQogCXsKQEAgLTE2NDYsNiArMTY1 OSwzNCBAQCBSZW1vdmVSZWxhdGlvbnMoRHJvcFN0bXQgKmRyb3ApCiAJCQlmbGFncyB8PSBQRVJG T1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRMWTsKIAkJfQogCisJCS8qCisJCSAqIENvbmN1cnJlbnQg aW5kZXggZHJvcCByZXF1aXJlcyB0byBiZSB0aGUgZmlyc3QgdHJhbnNhY3Rpb24uIEJ1dCBpbgor CQkgKiBjYXNlIHdlIGhhdmUganVuayBhdXhpbGlhcnkgaW5kZXggLSB3ZSB3YW50IHRvIGRyb3Ag aXQgdG9vIChhbmQgYWxzbworCQkgKiBpbiBhIGNvbmN1cnJlbnQgd2F5KS4gSW4gdGhpcyBjYXNl IHBlcmZvcm0gc2lsZW50IGludGVybmFsIGRlbGV0aW9uCisJCSAqIG9mIGF1eGlsaWFyeSBpbmRl eCwgYW5kIHJlc3RvcmUgdHJhbnNhY3Rpb24gc3RhdGUuIEl0IGlzIGZpbmUgdG8gZG8gaXQKKwkJ ICogaW4gdGhlIGxvb3AgYmVjYXVzZSB0aGVyZSBpcyBvbmx5IHNpbmdsZSBlbGVtZW50IGluIGRy b3AtPm9iamVjdHMuCisJCSAqLworCQlpZiAoKGZsYWdzICYgUEVSRk9STV9ERUxFVElPTl9DT05D VVJSRU5UTFkpICE9IDAgJiYKKwkJCXN0YXRlLmFjdHVhbF9yZWxraW5kID09IFJFTEtJTkRfSU5E RVgpCisJCXsKKwkJCU9pZCBqdW5rQXV4SW5kZXhPaWQgPSBnZXRfYXV4aWxpYXJ5X2luZGV4KHJl bE9pZCk7CisJCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhPaWQpKQorCQkJeworCQkJCU9i amVjdEFkZHJlc3Mgb2JqZWN0OworCQkJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlv bklkOworCQkJCW9iamVjdC5vYmplY3RJZCA9IGp1bmtBdXhJbmRleE9pZDsKKwkJCQlvYmplY3Qu b2JqZWN0U3ViSWQgPSAwOworCQkJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RS SUNULAorCQkJCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRMWSB8CisJCQkJCQkJ CQkJIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwgfAorCQkJCQkJCQkJCSBQRVJGT1JNX0RFTEVU SU9OX1FVSUVUTFkpOworCQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCVN0YXJ0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7CisJCQkJUHJldmVudEluVHJhbnNhY3Rpb25CbG9jayh0cnVlLCAiRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkiKTsKKwkJCX0KKwkJfQorCiAJCS8qCiAJCSAqIENvbmN1cnJl bnQgaW5kZXggZHJvcCBjYW5ub3QgYmUgdXNlZCB3aXRoIHBhcnRpdGlvbmVkIGluZGV4ZXMsCiAJ CSAqIGVpdGhlci4KQEAgLTE2NzQsMTIgKzE3MTUsMTcgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BT dG10ICpkcm9wKQogCQlvYmoub2JqZWN0SWQgPSByZWxPaWQ7CiAJCW9iai5vYmplY3RTdWJJZCA9 IDA7CiAKKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwcml2YXRlX2NvbnRl eHQpOwogCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iaiwgb2JqZWN0cyk7CisJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAl9CiAKKwkvKiBEZWxldGlvbiBtYXkgaW52 b2x2ZSBtdWx0aXBsZSBjb21taXRzLCBzbywgc3dpdGNoIHRvIG1lbW9yeSBjb250ZXh0ICovCisJ b2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwcml2YXRlX2NvbnRleHQpOwogCXBl cmZvcm1NdWx0aXBsZURlbGV0aW9ucyhvYmplY3RzLCBkcm9wLT5iZWhhdmlvciwgZmxhZ3MpOwor CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAotCWZyZWVfb2JqZWN0X2FkZHJl c3NlcyhvYmplY3RzKTsKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHByaXZhdGVfY29udGV4dCk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCmluZGV4IDBlYTdjY2Y1MjQzLi4wMmJjZjVl OTMxNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKQEAgLTE4MCw2ICsxODAsNyBAQCBleHRl cm4gTGlzdCAqZ2V0T3duZWRTZXF1ZW5jZXMoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0SWRl bnRpdHlTZXF1ZW5jZShSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bnVtLCBib29sIG1pc3Np bmdfb2spOwogCiBleHRlcm4gT2lkCWdldF9pbmRleF9jb25zdHJhaW50KE9pZCBpbmRleElkKTsK K2V4dGVybiBPaWQJZ2V0X2F1eGlsaWFyeV9pbmRleChPaWQgaW5kZXhJZCk7CiAKIGV4dGVybiBM aXN0ICpnZXRfaW5kZXhfcmVmX2NvbnN0cmFpbnRzKE9pZCBpbmRleElkKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRl eC5oCmluZGV4IDQ3MTNmMThlNjhkLi41M2IyYjEzZWZjMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAt NzMsNiArNzMsNyBAQCBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAJCQkJCQkgT2lkIGluZGV4UmVsYXRpb25JZCwKIAkJCQkJCSBPaWQgcGFyZW50SW5kZXhS ZWxpZCwKIAkJCQkJCSBPaWQgcGFyZW50Q29uc3RyYWludElkLAorCQkJCQkJIE9pZCBhdXhpbGlh cnlGb3JJbmRleElkLAogCQkJCQkJIFJlbEZpbGVOdW1iZXIgcmVsRmlsZU51bWJlciwKIAkJCQkJ CSBJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkJCSBjb25zdCBMaXN0ICppbmRleENvbE5hbWVz LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CmluZGV4IGNhNzQ4 NDRiNWM2Li5hY2E2ZWM1N2FkNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRl X2luZGV4Lm91dApAQCAtMzI2NSwyMCArMzI2NSwxMDkgQEAgRVJST1I6ICByZWluZGV4IG9mIGF1 eGlsaWFyeSBpbmRleCAiYXV4X2luZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0ZWQKIFJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogRVJST1I6ICByZWlu ZGV4IG9mIGF1eGlsaWFyeSBpbmRleCAiYXV4X2luZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0 ZWQKIC0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGlu ZGV4IGNhbiBiZWNvbWUgdmFsaWQuCi1ERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdI RVJFIGMxID0gMTsKLUVSUk9SOiAgcmVsYXRpb24gImNvbmN1cl9yZWluZGV4X3RhYjQiIGRvZXMg bm90IGV4aXN0Ci1MSU5FIDE6IERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUg YzEgPSAxOwotICAgICAgICAgICAgICAgICAgICBeCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFi NSBXSEVSRSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQg ZHJvcHBlZAorUkVJTkRFWCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXgg aW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1 YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVs bGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwg CitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisKK0RS T1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5T RVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFs aWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRl eF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUg dW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBk dXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBz byB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1 IFdIRVJFIGMxID0gMTsKIC0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4Ci1SRUlO REVYIFRBQkxFIGF1eF9pbmRleF90YWI1OwotRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1 ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCi1ERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGlj YXRlZC4KLS0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXgKIFJF SU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1OwogV0FSTklORzogIHNraXBw aW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCAicHVibGljLmF1eF9pbmRleF9pbmQ2IgogSElO VDogIFVzZSBEUk9QIElOREVYIG9yIFJFSU5ERVggSU5ERVguCiBXQVJOSU5HOiAgc2tpcHBpbmcg cmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNl9jY2F1eCIK IE5PVElDRTogIHRhYmxlICJhdXhfaW5kZXhfdGFiNSIgaGFzIG5vIGluZGV4ZXMgdGhhdCBjYW4g YmUgcmVpbmRleGVkIGNvbmN1cnJlbnRseQorLS0gTWFrZSBzdXJlIGl0IGlzIHN0aWxsIGV4aXN0 cworXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5kZXhf dGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0 IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisg YzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAg ICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKKyAgICAiYXV4X2lu ZGV4X2luZDZfY2NhdXgiIHN0aXIgKGMxKSBJTlZBTElECisKKy0tIFNob3VsZCBiZSBza2lwcGVk IGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIFRBQkxFIGF1eF9pbmRleF90YWI1 OworLS0gTWFrZSBzdXJlIGF1eCBpbmRleCBpcyBkcm9wcGVkCitcZCBhdXhfaW5kZXhfdGFiNQor ICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8ICBUeXBl ICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgImF1eF9pbmRleF9pbmQ2IiBVTklR VUUsIGJ0cmVlIChjMSkKKworRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0tIEluc2VydCBk dXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAo MSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBD T05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9S OiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlM OiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91 cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRF IEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQg ZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGF1 eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eCBpbmRleCBpcyBkcm9wcGVkCitcZCBhdXhf aW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENv bHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgImF1eF9pbmRl eF9pbmQ2IiBVTklRVUUsIGJ0cmVlIChjMSkKKworRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsK Ky0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBW QUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVO SVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUg KGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9p bmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBUaGlzIG1ha2Vz IHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZh bGlkLgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gRHJvcCBt YWluIGluZGV4IENPTkNVUlJFTlRMWQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4 X2luZDY7CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhf aW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENv bHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworRFJPUCBJTkRFWCBhdXhfaW5kZXhf aW5kNjsKK0VSUk9SOiAgaW5kZXggImF1eF9pbmRleF9pbmQ2IiBkb2VzIG5vdCBleGlzdAorLS0g SW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVF UyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVF IElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEp OworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYi CitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIERyb3AgbWFpbiBpbmRl eAorRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXhpbGlhcnkgaW5k ZXggZHJvcHBlZCB0b28KK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJs aWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxh YmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAor CiBEUk9QIFRBQkxFIGF1eF9pbmRleF90YWI1OwogLS0gQ2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhl cyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzLiAgVGhlCiAtLSBkZWZpbml0aW9ucyBv ZiB0aGUgcmVidWlsdCBpbmRleGVzIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCmluZGV4IDJjZmYxYWMyOWJlLi5lMTQ2NGVhYTY3YyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCkBAIC0xMzQwLDExICsxMzQwLDYy IEBAIFJFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CiAtLSBDb25jdXJyZW50bHkg YWxzbwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZfY2NhdXg7CiAt LSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBj YW4gYmVjb21lIHZhbGlkLgotREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBj MSA9IDE7CitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CistLSBTaG91 bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBJTkRFWCBh dXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4 X2luZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisKKy0tIEluc2VydCBkdXBs aWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7 CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05D VVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKKy0tIFRoaXMg bWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNv bWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CiAtLSBT aG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAotUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhf dGFiNTsKLS0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXgKIFJF SU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1OworLS0gTWFrZSBzdXJlIGl0 IGlzIHN0aWxsIGV4aXN0cworXGQgYXV4X2luZGV4X3RhYjUKKy0tIFNob3VsZCBiZSBza2lwcGVk IGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIFRBQkxFIGF1eF9pbmRleF90YWI1 OworLS0gTWFrZSBzdXJlIGF1eCBpbmRleCBpcyBkcm9wcGVkCitcZCBhdXhfaW5kZXhfdGFiNQor RFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4K K0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBp bnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gVGhpcyBtYWtlcyB0aGUgcHJl dmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RF TEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMxID0gMTsKKy0tIFNob3VsZCBiZSBza2lw cGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQg YXV4X2luZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisKKy0tIEluc2VydCBk dXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAo MSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBD T05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKKy0tIFRo aXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBi ZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7Cist LSBEcm9wIG1haW4gaW5kZXggQ09OQ1VSUkVOVExZCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBh dXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXhpbGlhcnkgaW5kZXggZHJvcHBlZCB0b28K K1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworCistLSBJbnNl cnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgx KSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5E RVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7Cist LSBEcm9wIG1haW4gaW5kZXgKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1 cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQorCiBEUk9Q IFRBQkxFIGF1eF9pbmRleF90YWI1OwogCiAtLSBDaGVjayBoYW5kbGluZyBvZiBpbmRleGVzIHdp dGggZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMuICBUaGUKLS0gCjIuNDMuMAoK --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-only-part-3-0001-Add-Datum-storage-support-to-tuplest.patch_" Content-Disposition: attachment; filename="v20-only-part-3-0001-Add-Datum-storage-support-to-tuplest.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogp4 RnJvbSAxZmUyYWIxYTk1MjM2ZjYxYTA0YmQ5MjgwNDI1NDZkMzMyNDc3NmMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwLW9ubHktcGFydC0zIDEvNV0gQWRkIERhdHVtIHN0b3JhZ2Ugc3VwcG9ydCB0byB0 dXBsZXN0b3JlCgogRXh0ZW5kIHR1cGxlc3RvcmUgdG8gc3RvcmUgaW5kaXZpZHVhbCBEYXR1bSB2 YWx1ZXM6Ci0gZml4ZWQtbGVuZ3RoIGRhdGF0eXBlczogc3RvcmUgcmF3IGJ5dGVzIHdpdGhvdXQg YSBsZW5ndGggaGVhZGVyCi0gdmFyaWFibGUtbGVuZ3RoIGRhdGF0eXBlczogaW5jbHVkZSBhIGxl bmd0aCBoZWFkZXIgYW5kIHBhZGRpbmcKLSBieS12YWx1ZSB0eXBlczogc3RvcmUgaW5saW5lCgpU aGlzIHN1cHBvcnQgZW5hYmxlcyB1c2FnZXMgdHVwbGVzdG9yZSBmb3Igbm9uLXR1cGxlIGRhdGEg KFRJRHMpIGluIHRoZSBuZXh0IGNvbW1pdC4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1 cGxlc3RvcmUuYyB8IDI3MCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvaW5jbHVk ZS91dGlscy90dXBsZXN0b3JlLmggICAgICB8ICAzMyArKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDI0 NCBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVz dG9yZS5jCmluZGV4IGM5YWVjYWI4ZDY2Li4xMmFlNzA1YzA5MSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29y dC90dXBsZXN0b3JlLmMKQEAgLTEsMTYgKzEsMTkgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoK ICAqIHR1cGxlc3RvcmUuYwotICoJICBHZW5lcmFsaXplZCByb3V0aW5lcyBmb3IgdGVtcG9yYXJ5 IHR1cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3Jhcnkg c3RvcmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KKyAqCisgKiBUaGlzIG1vZHVsZSBoYW5kbGVz IHRlbXBvcmFyeSBzdG9yYWdlIG9mIGVpdGhlciB0dXBsZXMgb3Igc2luZ2xlCisgKiBEYXR1bSB2 YWx1ZXMgZm9yIHB1cnBvc2VzIHN1Y2ggYXMgTWF0ZXJpYWxpemUgbm9kZXMsIGhhc2hqb2luIGJh dGNoCisgKiBmaWxlcywgZXRjLiBJdCBpcyBlc3NlbnRpYWxseSBhIGR1bWJlZC1kb3duIHZlcnNp b24gb2YgdHVwbGVzb3J0LmM7CisgKiBpdCBkb2VzIG5vIHNvcnRpbmcgb2YgdHVwbGVzIGJ1dCBj YW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5jZQorICogb2YgdHVwbGVzLiAg SG93ZXZlciwgYmVjYXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBpdCBpcyBhbGxvd2VkIHRvIHN0 YXJ0CisgKiByZWFkaW5nIHRoZSBzZXF1ZW5jZSBiZWZvcmUgaXQgaGFzIGFsbCBiZWVuIHdyaXR0 ZW4uCisgKgorICogVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjdXJzb3JzLCBiZWNh dXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzCisgKiB3aXRoaW4gdGhlIGFscmVhZHktc2Nhbm5l ZCBwb3J0aW9uIG9mIGEgcXVlcnkgd2l0aG91dCBoYXZpbmcgdG8gcHJvY2VzcworICogdGhlIHVu ZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgogICoKLSAqIFRoaXMgbW9kdWxlIGhhbmRsZXMg dGVtcG9yYXJ5IHN0b3JhZ2Ugb2YgdHVwbGVzIGZvciBwdXJwb3NlcyBzdWNoCi0gKiBhcyBNYXRl cmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0Y2ggZmlsZXMsIGV0Yy4gIEl0IGlzIGVzc2VudGlh bGx5Ci0gKiBhIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0LmM7IGl0IGRvZXMgbm8g c29ydGluZyBvZiB0dXBsZXMKLSAqIGJ1dCBjYW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUg YSBzZXF1ZW5jZSBvZiB0dXBsZXMuICBIb3dldmVyLAotICogYmVjYXVzZSBubyBzb3J0IGlzIHJl cXVpcmVkLCBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0IHJlYWRpbmcgdGhlIHNlcXVlbmNlCi0gKiBi ZWZvcmUgaXQgaGFzIGFsbCBiZWVuIHdyaXR0ZW4uICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2Vm dWwgZm9yIGN1cnNvcnMsCi0gKiBiZWNhdXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzIHdpdGhp biB0aGUgYWxyZWFkeS1zY2FubmVkIHBvcnRpb24gb2YKLSAqIGEgcXVlcnkgd2l0aG91dCBoYXZp bmcgdG8gcHJvY2VzcyB0aGUgdW5kZXJseWluZyBzY2FuIHRvIGNvbXBsZXRpb24uCiAgKiBBbHNv LCBpdCBpcyBwb3NzaWJsZSB0byBzdXBwb3J0IG11bHRpcGxlIGluZGVwZW5kZW50IHJlYWQgcG9p bnRlcnMuCiAgKgogICogQSB0ZW1wb3JhcnkgZmlsZSBpcyB1c2VkIHRvIGhhbmRsZSB0aGUgZGF0 YSBpZiBpdCBleGNlZWRzIHRoZQpAQCAtNjEsNiArNjQsOCBAQAogI2luY2x1ZGUgImV4ZWN1dG9y L2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9i dWZmaWxlLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3Jl c293bmVyLmgiCiAKQEAgLTExNSwxNiArMTIwLDE1IEBAIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUK IAlCdWZGaWxlICAgICpteWZpbGU7CQkJLyogdW5kZXJseWluZyBmaWxlLCBvciBOVUxMIGlmIG5v bmUgKi8KIAlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CQkvKiBtZW1vcnkgY29udGV4dCBmb3IgaG9s ZGluZyB0dXBsZXMgKi8KIAlSZXNvdXJjZU93bmVyIHJlc293bmVyOwkJLyogcmVzb3duZXIgZm9y IGhvbGRpbmcgdGVtcCBmaWxlcyAqLworCU9pZAkJCWRhdHVtVHlwZTsJCS8qIEludmFsaWRPaWQg b3Igb2lkIG9mIERhdHVtJ3MgdG8gYmUgc3RvcmVkICovCisJaW50MTYJCWRhdHVtVHlwZUxlbjsJ LyogdHlwZWxlbiBvZiB0aGF0IERhdHVtICovCisJYm9vbAkJZGF0dW1UeXBlQnlWYWw7IC8qIGJ5 LXZhbHVlIG9mIHRoYXQgYXR1bSAqLwogCiAJLyoKIAkgKiBUaGVzZSBmdW5jdGlvbiBwb2ludGVy cyBkZWNvdXBsZSB0aGUgcm91dGluZXMgdGhhdCBtdXN0IGtub3cgd2hhdCBraW5kCiAJICogb2Yg dHVwbGUgd2UgYXJlIGhhbmRsaW5nIGZyb20gdGhlIHJvdXRpbmVzIHRoYXQgZG9uJ3QgbmVlZCB0 byBrbm93IGl0LgogCSAqIFRoZXkgYXJlIHNldCB1cCBieSB0aGUgdHVwbGVzdG9yZV9iZWdpbl94 eHggcm91dGluZXMuCiAJICoKLQkgKiAoQWx0aG91Z2ggdHVwbGVzdG9yZS5jIGN1cnJlbnRseSBv bmx5IHN1cHBvcnRzIGhlYXAgdHVwbGVzLCBJJ3ZlIGNvcGllZAotCSAqIHRoaXMgcGFydCBvZiB0 dXBsZXNvcnQuYyBzbyB0aGF0IGV4dGVuc2lvbiB0byBvdGhlciBraW5kcyBvZiBvYmplY3RzCi0J ICogd2lsbCBiZSBlYXN5IGlmIGl0J3MgZXZlciBuZWVkZWQuKQotCSAqCiAJICogRnVuY3Rpb24g dG8gY29weSBhIHN1cHBsaWVkIGlucHV0IHR1cGxlIGludG8gcGFsbG9jJ2Qgc3BhY2UuIChOQjog d2UKIAkgKiBhc3N1bWUgdGhhdCBhIHNpbmdsZSBwZnJlZSgpIGlzIGVub3VnaCB0byByZWxlYXNl IHRoZSB0dXBsZSBsYXRlciwgc28KIAkgKiB0aGUgcmVwcmVzZW50YXRpb24gbXVzdCBiZSAiZmxh dCIgaW4gb25lIHBhbGxvYyBjaHVuay4pIHN0YXRlLT5hdmFpbE1lbQpAQCAtMTQzLDEyICsxNDcs MTggQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogCiAJLyoKIAkgKiBGdW5jdGlvbiB0byByZWFk IGEgc3RvcmVkIHR1cGxlIGZyb20gdGFwZSBiYWNrIGludG8gbWVtb3J5LiAnbGVuJyBpcwotCSAq IHRoZSBhbHJlYWR5LXJlYWQgbGVuZ3RoIG9mIHRoZSBzdG9yZWQgdHVwbGUuICBDcmVhdGUgYW5k IHJldHVybiBhCi0JICogcGFsbG9jJ2QgY29weSwgYW5kIGRlY3JlYXNlIHN0YXRlLT5hdmFpbE1l bSBieSB0aGUgYW1vdW50IG9mIG1lbW9yeQotCSAqIHNwYWNlIGNvbnN1bWVkLgorCSAqIHRoZSBh bHJlYWR5LWtub3duIChyZWFkIG9mIGNvbnN0YW50KSBsZW5ndGggb2YgdGhlIHN0b3JlZCB0dXBs ZS4KKwkgKiBDcmVhdGUgYW5kIHJldHVybiBhIHBhbGxvYydkIGNvcHksIGFuZCBkZWNyZWFzZSBz dGF0ZS0+YXZhaWxNZW0gYnkgdGhlCisJICogYW1vdW50IG9mIG1lbW9yeSBzcGFjZSBjb25zdW1l ZC4KIAkgKi8KIAl2b2lkCSAgICooKnJlYWR0dXApIChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB1 bnNpZ25lZCBpbnQgbGVuKTsKIAorCS8qCisJICogRnVuY3Rpb24gdG8gZ2V0IGxlbmdoIG9mIHR1 cGxlIGZyb20gdGFwZS4gVXNlZCB0byBwcm92aWRlICdsZW4nIGFyZ3VtZW50CisJICogZm9yIHJl YWR0dXAgKHNlZSBhYm92ZSkuCisJICovCisJdW5zaWduZWQgaW50KCpsZW50dXApKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworCiAJLyoKIAkgKiBUaGlzIGFycmF5IGhvbGRz IHBvaW50ZXJzIHRvIHR1cGxlcyBpbiBtZW1vcnkgaWYgd2UgYXJlIGluIHN0YXRlIElOTUVNLgog CSAqIEluIHN0YXRlcyBXUklURUZJTEUgYW5kIFJFQURGSUxFIGl0J3Mgbm90IHVzZWQuCkBAIC0x ODUsNiArMTk1LDcgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogI2RlZmluZSBDT1BZVFVQKHN0 YXRlLHR1cCkJKCgqKHN0YXRlKS0+Y29weXR1cCkgKHN0YXRlLCB0dXApKQogI2RlZmluZSBXUklU RVRVUChzdGF0ZSx0dXApICgoKihzdGF0ZSktPndyaXRldHVwKSAoc3RhdGUsIHR1cCkpCiAjZGVm aW5lIFJFQURUVVAoc3RhdGUsbGVuKQkoKCooc3RhdGUpLT5yZWFkdHVwKSAoc3RhdGUsIGxlbikp CisjZGVmaW5lIExFTlRVUChzdGF0ZSxlb2ZPSykJKCgqKHN0YXRlKS0+bGVudHVwKSAoc3RhdGUs IGVvZk9LKSkKICNkZWZpbmUgTEFDS01FTShzdGF0ZSkJCSgoc3RhdGUpLT5hdmFpbE1lbSA8IDAp CiAjZGVmaW5lIFVTRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5hdmFpbE1lbSAtPSAoYW10KSkK ICNkZWZpbmUgRlJFRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5hdmFpbE1lbSArPSAoYW10KSkK QEAgLTE5Myw5ICsyMDQsOSBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAgKgogICogTk9URVMg YWJvdXQgb24tdGFwZSByZXByZXNlbnRhdGlvbiBvZiB0dXBsZXM6CiAgKgotICogV2UgcmVxdWly ZSB0aGUgZmlyc3QgInVuc2lnbmVkIGludCIgb2YgYSBzdG9yZWQgdHVwbGUgdG8gYmUgdGhlIHRv dGFsIHNpemUKLSAqIG9uLXRhcGUgb2YgdGhlIHR1cGxlLCBpbmNsdWRpbmcgaXRzZWxmIChzbyBp dCBpcyBuZXZlciB6ZXJvKS4KLSAqIFRoZSByZW1haW5kZXIgb2YgdGhlIHN0b3JlZCB0dXBsZQor ICogSW4gY2FzZSBvZiB0dXBsZXMgd2UgdXNlIGZpcnN0ICJ1bnNpZ25lZCBpbnQiIG9mIGEgc3Rv cmVkIHR1cGxlCisgKiB0byBiZSB0aGUgdG90YWwgc2l6ZSBvbi10YXBlIG9mIHRoZSB0dXBsZSwg aW5jbHVkaW5nIGl0c2VsZgorICogKHNvIGl0IGlzIG5ldmVyIHplcm8pLiBUaGUgcmVtYWluZGVy IG9mIHRoZSBzdG9yZWQgdHVwbGUKICAqIG1heSBvciBtYXkgbm90IG1hdGNoIHRoZSBpbi1tZW1v cnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHR1cGxlIC0tLQogICogYW55IGNvbnZlcnNpb24gbmVl ZGVkIGlzIHRoZSBqb2Igb2YgdGhlIHdyaXRldHVwIGFuZCByZWFkdHVwIHJvdXRpbmVzLgogICoK QEAgLTIwNiwxMCArMjE3LDEzIEBAIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUKICAqIHN0YXRlLT5i YWNrd2FyZCBpcyBub3Qgc2V0LCB0aGUgd3JpdGUvcmVhZCByb3V0aW5lcyBtYXkgb21pdCB0aGUg ZXh0cmEKICAqIGxlbmd0aCB3b3JkLgogICoKKyAqIEluIGNhc2Ugb2YgRGF0dW0gd2l0aCBjb25z dGFudCBsZW5naHQgYm90aCAidW5zaWduZWQgaW50IiBhcmUgb21taXR0ZWQuCisgKgogICogd3Jp dGV0dXAgaXMgZXhwZWN0ZWQgdG8gd3JpdGUgYm90aCBsZW5ndGggd29yZHMgYXMgd2VsbCBhcyB0 aGUgdHVwbGUKICAqIGRhdGEuICBXaGVuIHJlYWR0dXAgaXMgY2FsbGVkLCB0aGUgdGFwZSBpcyBw b3NpdGlvbmVkIGp1c3QgYWZ0ZXIgdGhlCi0gKiBmcm9udCBsZW5ndGggd29yZDsgcmVhZHR1cCBt dXN0IHJlYWQgdGhlIHR1cGxlIGRhdGEgYW5kIGFkdmFuY2UgcGFzdAotICogdGhlIGJhY2sgbGVu Z3RoIHdvcmQgKGlmIHByZXNlbnQpLgorICogZnJvbnQgbGVuZ3RoIHdvcmQgKGlmIGl0IG5vdCBv bW1pdHRlZCBsaWtlIGluIGNhc2Ugb2YgY29udGFudC1zaXplIERhdHVtKTsKKyAqIHJlYWR0dXAg bXVzdCByZWFkIHRoZSB0dXBsZSBkYXRhIGFuZCBhZHZhbmNlIHBhc3QgdGhlIGJhY2sgbGVuZ3Ro IHdvcmQKKyAqIChpZiBwcmVzZW50KS4KICAqCiAgKiBUaGUgd3JpdGUvcmVhZCByb3V0aW5lcyBj YW4gbWFrZSB1c2Ugb2YgdGhlIHR1cGxlIGRlc2NyaXB0aW9uIGRhdGEKICAqIHN0b3JlZCBpbiB0 aGUgVHVwbGVzdG9yZXN0YXRlIHJlY29yZCwgaWYgbmVlZGVkLiBUaGV5IGFyZSBhbHNvIGV4cGVj dGVkCkBAIC0yNDEsMTEgKzI1NSwxNiBAQCBzdGF0aWMgVHVwbGVzdG9yZXN0YXRlICp0dXBsZXN0 b3JlX2JlZ2luX2NvbW1vbihpbnQgZWZsYWdzLAogc3RhdGljIHZvaWQgdHVwbGVzdG9yZV9wdXR0 dXBsZV9jb21tb24oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqdHVwbGUpOwogc3RhdGlj IHZvaWQgZHVtcHR1cGxlcyhUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlKTsKIHN0YXRpYyB2b2lkIHR1 cGxlc3RvcmVfdXBkYXRlbWF4KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUpOwotc3RhdGljIHVuc2ln bmVkIGludCBnZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSyk7CisKK3N0 YXRpYyB1bnNpZ25lZCBpbnQgbGVudHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9v bCBlb2ZPSyk7CiBzdGF0aWMgdm9pZCAqY29weXR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCB3cml0ZXR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0 ZSAqc3RhdGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCAqcmVhZHR1cF9oZWFwKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCitzdGF0aWMgdW5zaWduZWQgaW50 IGxlbnR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKTsKK3N0YXRp YyB2b2lkICpjb3B5dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKmRhdHVt KTsKK3N0YXRpYyB2b2lkIHdyaXRldHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZv aWQgKmRhdHVtKTsKK3N0YXRpYyB2b2lkICpyZWFkdHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCiAvKgogICoJCXR1cGxlc3RvcmVfYmVnaW5feHh4 CkBAIC0yNjgsNiArMjg3LDEyIEBAIHR1cGxlc3RvcmVfYmVnaW5fY29tbW9uKGludCBlZmxhZ3Ms IGJvb2wgaW50ZXJYYWN0LCBpbnQgbWF4S0J5dGVzKQogCXN0YXRlLT5hbGxvd2VkTWVtID0gbWF4 S0J5dGVzICogKGludDY0KSAxMDI0OwogCXN0YXRlLT5hdmFpbE1lbSA9IHN0YXRlLT5hbGxvd2Vk TWVtOwogCXN0YXRlLT5teWZpbGUgPSBOVUxMOworCS8qCisJICogU2V0IERhdHVtIHJlbGF0ZWQg ZGF0YSB0byBpbnZhbGlkIGJ5IGRlZmF1bHQuCisJICovCisJc3RhdGUtPmRhdHVtVHlwZSA9IElu dmFsaWRPaWQ7CisJc3RhdGUtPmRhdHVtVHlwZUxlbiA9ICAwOworCXN0YXRlLT5kYXR1bVR5cGVC eVZhbCA9IGZhbHNlOwogCiAJLyoKIAkgKiBUaGUgcGFsbG9jL3BmcmVlIHBhdHRlcm4gZm9yIHR1 cGxlIG1lbW9yeSBpcyBpbiBhIEZJRk8gcGF0dGVybi4gIEEKQEAgLTM0NSw2ICszNzAsMzYgQEAg dHVwbGVzdG9yZV9iZWdpbl9oZWFwKGJvb2wgcmFuZG9tQWNjZXNzLCBib29sIGludGVyWGFjdCwg aW50IG1heEtCeXRlcykKIAlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0dXBfaGVhcDsKIAlzdGF0ZS0+ d3JpdGV0dXAgPSB3cml0ZXR1cF9oZWFwOwogCXN0YXRlLT5yZWFkdHVwID0gcmVhZHR1cF9oZWFw OworCXN0YXRlLT5sZW50dXAgPSBsZW50dXBfaGVhcDsKKworCXJldHVybiBzdGF0ZTsKK30KKwor LyoKKyAqIFRoZSBzYW1lIGFzIHR1cGxlc3RvcmVfYmVnaW5faGVhcCBidXQgY3JlYXRlIHN0b3Jl IGZvciBEYXR1bSB2YWx1ZXMuCisgKi8KK1R1cGxlc3RvcmVzdGF0ZSAqCit0dXBsZXN0b3JlX2Jl Z2luX2RhdHVtKE9pZCBkYXR1bVR5cGUsIGJvb2wgcmFuZG9tQWNjZXNzLCBib29sIGludGVyWGFj dCwgaW50IG1heEtCeXRlcykKK3sKKwlUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlOworCWludAkJCWVm bGFnczsKKworCS8qCisJICogVGhpcyBpbnRlcnByZXRhdGlvbiBvZiB0aGUgbWVhbmluZyBvZiBy YW5kb21BY2Nlc3MgaXMgY29tcGF0aWJsZSB3aXRoCisJICogdGhlIHByZS04LjMgYmVoYXZpb3Ig b2YgdHVwbGVzdG9yZXMuCisJICovCisJZWZsYWdzID0gcmFuZG9tQWNjZXNzID8KKwkJKEVYRUNf RkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19SRVdJTkQpIDoKKwkJKEVYRUNfRkxBR19SRVdJTkQp OworCisJc3RhdGUgPSB0dXBsZXN0b3JlX2JlZ2luX2NvbW1vbihlZmxhZ3MsIGludGVyWGFjdCwg bWF4S0J5dGVzKTsKKwlzdGF0ZS0+ZGF0dW1UeXBlID0gZGF0dW1UeXBlOworCWdldF90eXBsZW5i eXZhbChzdGF0ZS0+ZGF0dW1UeXBlLCAmc3RhdGUtPmRhdHVtVHlwZUxlbiwgJnN0YXRlLT5kYXR1 bVR5cGVCeVZhbCk7CisKKwlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0dXBfZGF0dW07CisJc3RhdGUt PndyaXRldHVwID0gd3JpdGV0dXBfZGF0dW07CisJc3RhdGUtPnJlYWR0dXAgPSByZWFkdHVwX2Rh dHVtOworCXN0YXRlLT5sZW50dXAgPSBsZW50dXBfZGF0dW07CiAKIAlyZXR1cm4gc3RhdGU7CiB9 CkBAIC03NzYsNiArODMxLDI1IEBAIHR1cGxlc3RvcmVfcHV0dHVwbGUoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSwgSGVhcFR1cGxlIHR1cGxlKQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQp OwogfQogCisvKgorICogTGlrZSB0dXBsZXN0b3JlX3B1dHR1cGxlc2xvdCBidXQgZm9yIHNpbmds ZSBEYXR1bS4KKyAqLwordm9pZAordHVwbGVzdG9yZV9wdXRkYXR1bShUdXBsZXN0b3Jlc3RhdGUg KnN0YXRlLCBEYXR1bSBkYXR1bSkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhzdGF0ZS0+Y29udGV4dCk7CisKKwkvKgorCSAqIENvcHkgdGhlIERhdHVt LiAgKE11c3QgZG8gdGhpcyBldmVuIGluIFdSSVRFRklMRSBjYXNlLiAgTm90ZSB0aGF0CisJICog Q09QWVRVUCBpbmNsdWRlcyBVU0VNRU0sIHNvIHdlIG5lZWRuJ3QgZG8gdGhhdCBoZXJlLikKKwkg Ki8KKwlkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShDT1BZVFVQKHN0YXRlLCBEYXR1bUdldFBvaW50 ZXIoZGF0dW0pKSk7CisKKwl0dXBsZXN0b3JlX3B1dHR1cGxlX2NvbW1vbihzdGF0ZSwgRGF0dW1H ZXRQb2ludGVyKGRhdHVtKSk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30K KwogLyoKICAqIFNpbWlsYXIgdG8gdHVwbGVzdG9yZV9wdXR0dXBsZSgpLCBidXQgd29yayBmcm9t IHZhbHVlcyArIG51bGxzIGFycmF5cy4KICAqIFRoaXMgYXZvaWRzIGFuIGV4dHJhIHR1cGxlLWNv bnN0cnVjdGlvbiBvcGVyYXRpb24uCkBAIC0xMDMwLDcgKzExMDQsNyBAQCB0dXBsZXN0b3JlX2dl dHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwKIAkJCSpzaG91bGRf ZnJlZSA9IHRydWU7CiAJCQlpZiAoZm9yd2FyZCkKIAkJCXsKLQkJCQlpZiAoKHR1cGxlbiA9IGdl dGxlbihzdGF0ZSwgdHJ1ZSkpICE9IDApCisJCQkJaWYgKCh0dXBsZW4gPSBMRU5UVVAoc3RhdGUs IHRydWUpKSAhPSAwKQogCQkJCXsKIAkJCQkJdHVwID0gUkVBRFRVUChzdGF0ZSwgdHVwbGVuKTsK IAkJCQkJcmV0dXJuIHR1cDsKQEAgLTEwNTksNyArMTEzMyw3IEBAIHR1cGxlc3RvcmVfZ2V0dHVw bGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAogCQkJCUFzc2VydCghc3Rh dGUtPnRydW5jYXRlZCk7CiAJCQkJcmV0dXJuIE5VTEw7CiAJCQl9Ci0JCQl0dXBsZW4gPSBnZXRs ZW4oc3RhdGUsIGZhbHNlKTsKKwkJCXR1cGxlbiA9IExFTlRVUChzdGF0ZSwgZmFsc2UpOwogCiAJ CQlpZiAocmVhZHB0ci0+ZW9mX3JlYWNoZWQpCiAJCQl7CkBAIC0xMDkwLDcgKzExNjQsNyBAQCB0 dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwK IAkJCQkJQXNzZXJ0KCFzdGF0ZS0+dHJ1bmNhdGVkKTsKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJ fQotCQkJCXR1cGxlbiA9IGdldGxlbihzdGF0ZSwgZmFsc2UpOworCQkJCXR1cGxlbiA9IExFTlRV UChzdGF0ZSwgZmFsc2UpOwogCQkJfQogCiAJCQkvKgpAQCAtMTE1Miw2ICsxMjI2LDI1IEBAIHR1 cGxlc3RvcmVfZ2V0dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2Fy ZCwKIAl9CiB9CiAKK2V4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0ZGF0dW0oVHVwbGVzdG9yZXN0 YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAorCQkJCQkJCQlib29sICpzaG91bGRfZnJlZSwgRGF0 dW0gKnJlc3VsdCkKK3sKKwlEYXR1bSBkYXR1bTsKKwkqc2hvdWxkX2ZyZWUgPSBmYWxzZTsKKwor CWRhdHVtID0gKERhdHVtKSB0dXBsZXN0b3JlX2dldHR1cGxlKHN0YXRlLCBmb3J3YXJkLCBzaG91 bGRfZnJlZSk7CisJaWYgKGRhdHVtKQorCXsKKwkJKnJlc3VsdCA9ZGF0dW07CisJCXJldHVybiB0 cnVlOworCX0KKwllbHNlCisJeworCQkqcmVzdWx0ID0gUG9pbnRlckdldERhdHVtKE5VTEwpOwor CQlyZXR1cm4gZmFsc2U7CisJfQorfQorCiAvKgogICogdHVwbGVzdG9yZV9hZHZhbmNlIC0gZXhw b3J0ZWQgZnVuY3Rpb24gdG8gYWRqdXN0IHBvc2l0aW9uIHdpdGhvdXQgZmV0Y2hpbmcKICAqCkBA IC0xNTU2LDI1ICsxNjQ5LDYgQEAgdHVwbGVzdG9yZV9pbl9tZW1vcnkoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSkKIAlyZXR1cm4gKHN0YXRlLT5zdGF0dXMgPT0gVFNTX0lOTUVNKTsKIH0KIAotCi0v KgotICogVGFwZSBpbnRlcmZhY2Ugcm91dGluZXMKLSAqLwotCi1zdGF0aWMgdW5zaWduZWQgaW50 Ci1nZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKLXsKLQl1bnNpZ25l ZCBpbnQgbGVuOwotCXNpemVfdAkJbmJ5dGVzOwotCi0JbmJ5dGVzID0gQnVmRmlsZVJlYWRNYXli ZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwgZW9mT0spOwotCWlmIChuYnl0 ZXMgPT0gMCkKLQkJcmV0dXJuIDA7Ci0JZWxzZQotCQlyZXR1cm4gbGVuOwotfQotCi0KIC8qCiAg KiBSb3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgSGVhcFR1cGxlIGNhc2UKICAqCkBAIC0xNTg1LDYg KzE2NTksMTkgQEAgZ2V0bGVuKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spCiAg KiB0byB3cml0ZSB0aGF0IHNlcGFyYXRlbHkuCiAgKi8KIAorc3RhdGljIHVuc2lnbmVkIGludAor bGVudHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKK3sKKwl1bnNp Z25lZCBpbnQgbGVuOworCXNpemVfdAkJbmJ5dGVzOworCisJbmJ5dGVzID0gQnVmRmlsZVJlYWRN YXliZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwgZW9mT0spOworCWlmIChu Ynl0ZXMgPT0gMCkKKwkJcmV0dXJuIDA7CisJZWxzZQorCQlyZXR1cm4gbGVuOworfQorCiBzdGF0 aWMgdm9pZCAqCiBjb3B5dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqdHVw KQogewpAQCAtMTYzMSwzICsxNzE4LDk4IEBAIHJlYWR0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUg KnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKQogCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5teWZp bGUsICZ0dXBsZW4sIHNpemVvZih0dXBsZW4pKTsKIAlyZXR1cm4gdHVwbGU7CiB9CisKKy8qCisg KiBSb3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgRGF0dW0gY2FzZS4KKyAqCisgKiBIYW5kbGVzIGJv dGggZml4ZWQgYW5kIHZhcmlhYmxlLWxlbmd0aCBEYXR1bXMgZWZmaWNpZW50bHk6CisgKiAtIEZp eGVkLWxlbmd0aDogc3RvcmVzIHJhdyBieXRlcyB3aXRob3V0IGxlbmd0aCBwcmVmaXgKKyAqIC0g VmFyaWFibGUtbGVuZ3RoOiBpbmNsdWRlcyBsZW5ndGggcHJlZml4IChhbmQgc3VmZml4IGlmIGJh Y2t3YXJkIHNjYW4pCisgKiAtIEJ5LXZhbHVlIHR5cGVzIGhhbmRsZWQgaW5saW5lIHdpdGhvdXQg ZXh0cmEgY29weWluZworICovCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK2xlbnR1cF9kYXR1bShU dXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQoreworCXVuc2lnbmVkIGludCBsZW47 CisJc2l6ZV90CQluYnl0ZXM7CisKKwlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlk T2lkKTsKKworCWlmIChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCkKKwkJcmV0dXJuIHN0YXRlLT5k YXR1bVR5cGVMZW47CisKKwluYnl0ZXMgPSBCdWZGaWxlUmVhZE1heWJlRU9GKHN0YXRlLT5teWZp bGUsICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7CisJaWYgKG5ieXRlcyA9PSAwKQorCQlyZXR1 cm4gMDsKKwllbHNlCisJCXJldHVybiBsZW47Cit9CisKK3N0YXRpYyB2b2lkICoKK2NvcHl0dXBf ZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCogZGF0dW0pCit7CisJQXNzZXJ0KHN0 YXRlLT5kYXR1bVR5cGUgIT0gSW52YWxpZE9pZCk7CisJaWYgKHN0YXRlLT5kYXR1bVR5cGVCeVZh bCkKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihQb2ludGVyR2V0RGF0dW0oZGF0dW0pKTsKKwll bHNlCisJeworCQlEYXR1bSBkID0gZGF0dW1Db3B5KFBvaW50ZXJHZXREYXR1bShkYXR1bSksIHN0 YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCVVTRU1FTShzdGF0 ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShEYXR1bUdldFBvaW50ZXIoZCkpKTsKKwkJcmV0dXJuIERh dHVtR2V0UG9pbnRlcihkKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCit3cml0ZXR1cF9kYXR1bShU dXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkKiBkYXR1bSkKK3sKKwlBc3NlcnQoc3RhdGUtPmRh dHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUJ5VmFsKQorCXsK KwkJQXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGVMZW4gPiAwKTsKKwkJQnVmRmlsZVdyaXRlKHN0YXRl LT5teWZpbGUsIGRhdHVtLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwl9CisJZWxzZQorCXsKKwkJ U2l6ZSBzaXplID0gc3RhdGUtPmRhdHVtVHlwZUxlbjsKKwkJaWYgKHN0YXRlLT5kYXR1bVR5cGVM ZW4gPCAwKQorCQl7CisJCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgJnNpemUsIHNpemVv ZihzaXplKSk7CisJCQlzaXplID0gZGF0dW1HZXRTaXplKFBvaW50ZXJHZXREYXR1bShkYXR1bSks IHN0YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCX0KKworCQlC dWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgZGF0dW0sIHNpemUpOworCisJCS8qIG5lZWQgdHJh aWxpbmcgbGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFja3dhcmQgJiYgc3RhdGUtPmRh dHVtVHlwZUxlbiA8IDApCisJCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgJnNpemUsIHNp emVvZihzaXplKSk7CisKKwkJRlJFRU1FTShzdGF0ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShkYXR1 bSkpOworCQlwZnJlZShkYXR1bSk7CisJfQorfQorCitzdGF0aWMgdm9pZCoKK3JlYWR0dXBfZGF0 dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50IGxlbikKK3sKKwlBc3NlcnQo c3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUJ5 VmFsKQorCXsKKwkJRGF0dW0gZGF0dW0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCUFzc2Vy dChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCk7CisJCUFzc2VydChsZW4gPT0gc3RhdGUtPmRhdHVt VHlwZUxlbik7CisJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15ZmlsZSwgJmRhdHVtLCBzdGF0 ZS0+ZGF0dW1UeXBlTGVuKTsKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihkYXR1bSk7CisJfQor CWVsc2UKKwl7CisJCURhdHVtICpkYXR1bXMgPSBwYWxsb2MobGVuKTsKKwkJQnVmRmlsZVJlYWRF eGFjdChzdGF0ZS0+bXlmaWxlLCAmZGF0dW1zLCBsZW4pOworCisJCS8qIG5lZWQgdHJhaWxpbmcg bGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFja3dhcmQgJiYgc3RhdGUtPmRhdHVtVHlw ZUxlbiA8IDApCisJCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5teWZpbGUsICZsZW4sIHNpemVv ZihsZW4pKTsKKworCQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKCpkYXR1bXMpOworCX0KK30KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3R1cGxlc3RvcmUuaAppbmRleCA4NjViYTdiODI2NS4uMDM0MWM0N2I4NTEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy90dXBsZXN0b3JlLmgKQEAgLTEsMTcgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoK ICAqIHR1cGxlc3RvcmUuaAotICoJICBHZW5lcmFsaXplZCByb3V0aW5lcyBmb3IgdGVtcG9yYXJ5 IHR1cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3Jhcnkg c3RvcmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KICAqCi0gKiBUaGlzIG1vZHVsZSBoYW5kbGVz IHRlbXBvcmFyeSBzdG9yYWdlIG9mIHR1cGxlcyBmb3IgcHVycG9zZXMgc3VjaAotICogYXMgTWF0 ZXJpYWxpemUgbm9kZXMsIGhhc2hqb2luIGJhdGNoIGZpbGVzLCBldGMuICBJdCBpcyBlc3NlbnRp YWxseQotICogYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxlc29ydC5jOyBpdCBkb2VzIG5v IHNvcnRpbmcgb2YgdHVwbGVzCi0gKiBidXQgY2FuIG9ubHkgc3RvcmUgYW5kIHJlZ3VyZ2l0YXRl IGEgc2VxdWVuY2Ugb2YgdHVwbGVzLiAgSG93ZXZlciwKLSAqIGJlY2F1c2Ugbm8gc29ydCBpcyBy ZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydCByZWFkaW5nIHRoZSBzZXF1ZW5jZQotICog YmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNl ZnVsIGZvciBjdXJzb3JzLAotICogYmVjYXVzZSBpdCBhbGxvd3MgcmFuZG9tIGFjY2VzcyB3aXRo aW4gdGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mCi0gKiBhIHF1ZXJ5IHdpdGhvdXQgaGF2 aW5nIHRvIHByb2Nlc3MgdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgotICogQWxz bywgaXQgaXMgcG9zc2libGUgdG8gc3VwcG9ydCBtdWx0aXBsZSBpbmRlcGVuZGVudCByZWFkIHBv aW50ZXJzLgorICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiBlaXRo ZXIgdHVwbGVzIG9yIHNpbmdsZQorICogRGF0dW0gdmFsdWVzIGZvciBwdXJwb3NlcyBzdWNoIGFz IE1hdGVyaWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaAorICogZmlsZXMsIGV0Yy4gSXQgaXMg ZXNzZW50aWFsbHkgYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxlc29ydC5jOworICogaXQg ZG9lcyBubyBzb3J0aW5nIG9mIHR1cGxlcyBidXQgY2FuIG9ubHkgc3RvcmUgYW5kIHJlZ3VyZ2l0 YXRlIGEgc2VxdWVuY2UKKyAqIG9mIHR1cGxlcy4gIEhvd2V2ZXIsIGJlY2F1c2Ugbm8gc29ydCBp cyByZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydAorICogcmVhZGluZyB0aGUgc2VxdWVu Y2UgYmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLgorICoKKyAqIFRoaXMgaXMgcGFydGlj dWxhcmx5IHVzZWZ1bCBmb3IgY3Vyc29ycywgYmVjYXVzZSBpdCBhbGxvd3MgcmFuZG9tIGFjY2Vz cworICogd2l0aGluIHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlvbiBvZiBhIHF1ZXJ5IHdpdGhv dXQgaGF2aW5nIHRvIHByb2Nlc3MKKyAqIHRoZSB1bmRlcmx5aW5nIHNjYW4gdG8gY29tcGxldGlv bi4KICAqCiAgKiBBIHRlbXBvcmFyeSBmaWxlIGlzIHVzZWQgdG8gaGFuZGxlIHRoZSBkYXRhIGlm IGl0IGV4Y2VlZHMgdGhlCiAgKiBzcGFjZSBsaW1pdCBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlci4K QEAgLTM5LDE0ICs0MCwxMyBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUg VHVwbGVzdG9yZXN0YXRlOwogCi0vKgotICogQ3VycmVudGx5IHdlIG9ubHkgbmVlZCB0byBzdG9y ZSBNaW5pbWFsVHVwbGVzLCBidXQgaXQgd291bGQgYmUgZWFzeQotICogdG8gc3VwcG9ydCB0aGUg c2FtZSBiZWhhdmlvciBmb3IgSW5kZXhUdXBsZXMgYW5kL29yIGJhcmUgRGF0dW1zLgotICovCi0K IGV4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVnaW5faGVhcChib29sIHJhbmRv bUFjY2VzcywKIAkJCQkJCQkJCQkJICBib29sIGludGVyWGFjdCwKIAkJCQkJCQkJCQkJICBpbnQg bWF4S0J5dGVzKTsKK2V4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVnaW5fZGF0 dW0oT2lkIGRhdHVtVHlwZSwKKwkJCQkJCQkJCQkJIGJvb2wgcmFuZG9tQWNjZXNzLAorCQkJCQkJ CQkJCQkgYm9vbCBpbnRlclhhY3QsCisJCQkJCQkJCQkJCSBpbnQgbWF4S0J5dGVzKTsKIAogZXh0 ZXJuIHZvaWQgdHVwbGVzdG9yZV9zZXRfZWZsYWdzKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGlu dCBlZmxhZ3MpOwogCkBAIC01NSw2ICs1NSw3IEBAIGV4dGVybiB2b2lkIHR1cGxlc3RvcmVfcHV0 dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsCiBleHRlcm4gdm9pZCB0dXBsZXN0b3Jl X3B1dHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIEhlYXBUdXBsZSB0dXBsZSk7CiBleHRl cm4gdm9pZCB0dXBsZXN0b3JlX3B1dHZhbHVlcyhUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBUdXBs ZURlc2MgdGRlc2MsCiAJCQkJCQkJCSBjb25zdCBEYXR1bSAqdmFsdWVzLCBjb25zdCBib29sICpp c251bGwpOworZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9wdXRkYXR1bShUdXBsZXN0b3Jlc3RhdGUg KnN0YXRlLCBEYXR1bSBkYXR1bSk7CiAKIGV4dGVybiBpbnQJdHVwbGVzdG9yZV9hbGxvY19yZWFk X3BvaW50ZXIoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgaW50IGVmbGFncyk7CiAKQEAgLTcyLDYg KzczLDggQEAgZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9pbl9tZW1vcnkoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSk7CiAKIGV4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwKIAkJCQkJCQkJCWJvb2wgY29weSwgVHVwbGVU YWJsZVNsb3QgKnNsb3QpOworZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXRkYXR1bShUdXBsZXN0 b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCisJCQkJCQkJCWJvb2wgKnNob3VsZF9mcmVl LCBEYXR1bSAqcmVzdWx0KTsKIAogZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9hZHZhbmNlKFR1cGxl c3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCk7CiAKLS0gCjIuNDMuMAoK --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0011-Refresh-snapshot-periodically-during-index-valid.patch" Content-Disposition: attachment; filename="v20-0011-Refresh-snapshot-periodically-during-index-valid.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogq5 RnJvbSBiYzhmOGZiNDFjNTRiMDNmNzI5ODM5NmYyNGJkMmUwMDdlMzI3YWE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAyMSBBcHIgMjAyNSAxNDoxODozMiArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDExLzEyXSBSZWZyZXNoIHNuYXBzaG90IHBlcmlvZGljYWxseSBkdXJpbmcgaW5k ZXgKIHZhbGlkYXRpb24KCkVuaGFuY2VzIHZhbGlkYXRpb24gcGhhc2Ugb2YgY29uY3VycmVudGx5 IGJ1aWx0IGluZGV4ZXMgYnkgcGVyaW9kaWNhbGx5IHJlZnJlc2hpbmcgc25hcHNob3RzIHJhdGhl ciB0aGFuIHVzaW5nIGEgc2luZ2xlIHJlZmVyZW5jZSBzbmFwc2hvdC4gVGhpcyBhZGRyZXNzZXMg aXNzdWVzIHdpdGggeG1pbiBwcm9wYWdhdGlvbiBkdXJpbmcgbG9uZy1ydW5uaW5nIHZhbGlkYXRp b25zLgoKVGhlIHZhbGlkYXRpb24gbm93IHRha2VzIGEgZnJlc2ggc25hcHNob3QgZXZlcnkgZmV3 IHBhZ2VzLCBhbGxvd2luZyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgcmVzdG9y ZXMgZmVhdHVyZSBvZiBjb21taXQgZDlkMDc2MjIyZjViLCB3aGljaCB3YXMgcmV2ZXJ0ZWQgaW4g Y29tbWl0IGUyOGJiODg1MTk2OS4gTmV3IFNUSVItYmFzZWQgYXBwcm9hY2ggaXMgbm90IGRlcGVu ZHMgb24gc2luZ2xlIHJlZmVyZW5jZSBzbmFwc2hvdCBhbnltb3JlLgotLS0KIGRvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgICAgICB8IDExICsrLQogZG9jL3NyYy9zZ21s L3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICAgICAgIHwgMTEgKystCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgNzcgKysrKysrKysrKysrKysrKy0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgICAgICB8IDEyICsrLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgNDIgKysrKysrKy0t LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgNTAgKyst LS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAg fCAgNyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaCAgICAgICAgICAgICAgICAgIHwg MTUgKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDI4 ICsrKysrKysKIC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8 ICAxICsKIDEzIGZpbGVzIGNoYW5nZWQsIDE3OSBpbnNlcnRpb25zKCspLCA4MyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbAppbmRleCAyOThhMDkzZjU1NC4uNjIyMGE4 MDQ3NGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbApAQCAtODgxLDkgKzg4MSwxNCBA QCBJbmRleGVzOgogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBMaWtlIGFueSBsb25nLXJ1bm5p bmcgdHJhbnNhY3Rpb24sIDxjb21tYW5kPkNSRUFURSBJTkRFWDwvY29tbWFuZD4gb24gYQotICAg dGFibGUgY2FuIGFmZmVjdCB3aGljaCB0dXBsZXMgY2FuIGJlIHJlbW92ZWQgYnkgY29uY3VycmVu dAotICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvbiBhbnkgb3RoZXIgdGFibGUuCisgICBE dWUgdG8gdGhlIGltcHJvdmVkIGltcGxlbWVudGF0aW9uIHVzaW5nIHBlcmlvZGljYWxseSByZWZy ZXNoZWQgc25hcHNob3RzIGFuZAorICAgYXV4aWxpYXJ5IGluZGV4ZXMsIGNvbmN1cnJlbnQgaW5k ZXggYnVpbGRzIGhhdmUgbWluaW1hbCBpbXBhY3Qgb24gY29uY3VycmVudAorICAgPGNvbW1hbmQ+ VkFDVVVNPC9jb21tYW5kPiBvcGVyYXRpb25zLiBUaGUgc3lzdGVtIGF1dG9tYXRpY2FsbHkgYWR2 YW5jZXMgaXRzCisgICBpbnRlcm5hbCB0cmFuc2FjdGlvbiBob3Jpem9uIGR1cmluZyB0aGUgYnVp bGQgcHJvY2VzcywgYWxsb3dpbmcKKyAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gdG8gcmVt b3ZlIGRlYWQgdHVwbGVzIG9uIG90aGVyIHRhYmxlcyB3aXRob3V0CisgICBoYXZpbmcgdG8gd2Fp dCBmb3IgdGhlIGVudGlyZSBpbmRleCBidWlsZCB0byBjb21wbGV0ZS4gT25seSBkdXJpbmcgdmVy eSBicmllZgorICAgcGVyaW9kcyB3aGVuIHNuYXBzaG90cyBhcmUgYmVpbmcgcmVmcmVzaGVkIG1p Z2h0IHRoZXJlIGJlIGFueSB0ZW1wb3JhcnkgZWZmZWN0CisgICBvbiBjb25jdXJyZW50IDxjb21t YW5kPlZBQ1VVTTwvY29tbWFuZD4gb3BlcmF0aW9ucy4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL3JlaW5kZXguc2dtbAppbmRleCBkNjI3OTFmZjljMy4uNjBmNGQwZDY4MGYgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv cmVpbmRleC5zZ21sCkBAIC01MDIsMTAgKzUwMiwxMyBAQCBJbmRleGVzOgogICAgPC9wYXJhPgog CiAgICA8cGFyYT4KLSAgICBMaWtlIGFueSBsb25nLXJ1bm5pbmcgdHJhbnNhY3Rpb24sIDxjb21t YW5kPlJFSU5ERVg8L2NvbW1hbmQ+IG9uIGEgdGFibGUKLSAgICBjYW4gYWZmZWN0IHdoaWNoIHR1 cGxlcyBjYW4gYmUgcmVtb3ZlZCBieSBjb25jdXJyZW50Ci0gICAgPGNvbW1hbmQ+VkFDVVVNPC9j b21tYW5kPiBvbiBhbnkgb3RoZXIgdGFibGUuCi0gICA8L3BhcmE+CisgICAgPGNvbW1hbmQ+UkVJ TkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGhhcyBtaW5pbWFsCisgICAgaW1wYWN0IG9uIHdo aWNoIHR1cGxlcyBjYW4gYmUgcmVtb3ZlZCBieSBjb25jdXJyZW50IDxjb21tYW5kPlZBQ1VVTTwv Y29tbWFuZD4KKyAgICBvcGVyYXRpb25zIG9uIG90aGVyIHRhYmxlcy4gVGhpcyBpcyBhY2hpZXZl ZCB0aHJvdWdoIHBlcmlvZGljIHNuYXBzaG90CisgICAgcmVmcmVzaGVzIGFuZCB0aGUgdXNlIG9m IGF1eGlsaWFyeSBpbmRleGVzIGR1cmluZyB0aGUgcmVidWlsZCBwcm9jZXNzLAorICAgIGFsbG93 aW5nIHRoZSBzeXN0ZW0gdG8gYWR2YW5jZSBpdHMgdHJhbnNhY3Rpb24gaG9yaXpvbiByZWd1bGFy bHkgcmF0aGVyIHRoYW4KKyAgICBtYWludGFpbmluZyBhIHNpbmdsZSBsb25nLXJ1bm5pbmcgc25h cHNob3QuCisgIDwvcGFyYT4KIAogICAgPHBhcmE+CiAgICAgPGNvbW1hbmQ+UkVJTkRFWCBTWVNU RU08L2NvbW1hbmQ+IGRvZXMgbm90IHN1cHBvcnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U CmluZGV4IDZmNzE4ZmViNmQ1Li5kNDE2MDljOTdjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFE TUUuSE9UCkBAIC00MDEsMTIgKzQwMSwxMiBAQCB1c2UgdGhlIGtleSB2YWx1ZSBmcm9tIHRoZSBs aXZlIHR1cGxlLgogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0aWxs IG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0aW9u cyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB2YWxpZGF0ZQogdGhlIGluZGV4LiAg VGhpcyBzZWFyY2hlcyBmb3IgdHVwbGVzIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXggaW4gYXV4aWxp YXJ5Ci1pbmRleCwgYW5kIGluc2VydHMgYW55IG1pc3Npbmcgb25lcyBpZiB0aGVtIHZpc2libGUg dG8gcmVmZXJlbmNlIHNuYXBzaG90LgoraW5kZXgsIGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9u ZXMgaWYgdGhlbSB2aXNpYmxlIHRvIGZyZXNoIHNuYXBzaG90LgogQWdhaW4sIHRoZSBpbmRleCBl bnRyaWVzIGhhdmUgdG8gaGF2ZSBUSURzIGVxdWFsIHRvIEhPVC1jaGFpbiByb290IFRJRHMsIGJ1 dAogdGhlIHZhbHVlIHRvIGJlIGluc2VydGVkIGlzIHRoZSBvbmUgZnJvbSB0aGUgbGl2ZSB0dXBs ZS4KIAogVGhlbiB3ZSB3YWl0IHVudGlsIGV2ZXJ5IHRyYW5zYWN0aW9uIHRoYXQgY291bGQgaGF2 ZSBhIHNuYXBzaG90IG9sZGVyIHRoYW4KLXRoZSBzZWNvbmQgcmVmZXJlbmNlIHNuYXBzaG90IGlz IGZpbmlzaGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQgbm9ib2R5IGlzCit0aGUgbGF0ZXN0IHVzZWQg c25hcHNob3QgaXMgZmluaXNoZWQuICBUaGlzIGVuc3VyZXMgdGhhdCBub2JvZHkgaXMKIGFsaXZl IGFueSBsb25nZXIgd2hvIGNvdWxkIG5lZWQgdG8gc2VlIGFueSB0dXBsZXMgdGhhdCBtaWdodCBi ZSBtaXNzaW5nCiBmcm9tIHRoZSBpbmRleCwgYXMgd2VsbCBhcyBlbnN1cmluZyB0aGF0IG5vIG9u ZSBjYW4gc2VlIGFueSBpbmNvbnNpc3RlbnQKIHJvd3MgaW4gYSBicm9rZW4gSE9UIGNoYWluICh0 aGUgZmlyc3QgY29uZGl0aW9uIGlzIHN0cm9uZ2VyIHRoYW4gdGhlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA2MzNiYzI0NWUyOC4uNDQ1NmIxNmRmNzAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMjAzNCwyMyArMjAz NCwyNiBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9yZWFkX3N0cmVhbV9uZXh0KAogCXJl dHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgVHJhbnNhY3Rpb25JZAogaGVh cGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJICAg UmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCSAgIEluZGV4SW5mbyAqaW5kZXhJbmZvLAot CQkJCQkJICAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUg KnN0YXRlLAogCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0YXRlICphdXhTdGF0ZSkKIHsKKwlUcmFu c2FjdGlvbklkIGxpbWl0WG1pbjsKKwogCURhdHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwog CWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhfS0VZU107CiAKKwlTbmFwc2hvdAkJc25hcHNob3Q7CiAJ VHVwbGVUYWJsZVNsb3QgICpzbG90OwogCUVTdGF0ZQkJCSplc3RhdGU7CiAJRXhwckNvbnRleHQJ CSplY29udGV4dDsKIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kgPSBHZXRBY2Nlc3NT dHJhdGVneShCQVNfQlVMS1JFQUQpOwogCi0JaW50CQkJCW51bV90b19jaGVjazsKKwlpbnQJCQkJ bnVtX3RvX2NoZWNrLAorCQkJCQlwYWdlX3JlYWRfY291bnRlciA9IDE7IC8qIHNldCB0byAxIHRv IHNraXAgc25hcHNob3QgcmVzZXQgYXQgc3RhcnQgKi8KIAlUdXBsZXN0b3Jlc3RhdGUgKnR1cGxl c19mb3JfY2hlY2s7CiAJVmFsaWRhdGVJbmRleFNjYW5TdGF0ZSBjYWxsYmFja19wcml2YXRlX2Rh dGE7CiAKQEAgLTIwNjEsMTQgKzIwNjQsMTYgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4o UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCS8qIFVzZSAxMCUgb2YgbWVtb3J5IGZvciB0dXBsZSBz dG9yZS4gKi8KIAlpbnQJCXN0b3JlX3dvcmtfbWVtX3BhcnQgPSBtYWludGVuYW5jZV93b3JrX21l bSAvIDEwOwogCi0JLyoKLQkgKiBFbmNvZGUgVElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNv cnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNvcnRpbmcKLQkgKiBpdGVtIHBvaW50ZXJzLiAgVGhp cyBjYW4gYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIsIHByaW1hcmlseSBiZWNhdXNlIFRJRAotCSAq IGlzIGEgcGFzcy1ieS1yZWZlcmVuY2UgdHlwZSBvbiBhbGwgcGxhdGZvcm1zLCB3aGVyZWFzIGlu dDggaXMKLQkgKiBwYXNzLWJ5LXZhbHVlIG9uIG1vc3QgcGxhdGZvcm1zLgotCSAqLworCVB1c2hB Y3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCiAJdHVwbGVzX2Zvcl9j aGVjayA9ICB0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKElOVDhPSUQsIGZhbHNlLCBmYWxzZSwgc3Rv cmVfd29ya19tZW1fcGFydCk7CiAKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKKworCUFzc2VydCghSGF2ZVJlZ2lzdGVyZWRPckFjdGl2ZVNuYXBz aG90KCkpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisK IAkvKgogCSAqIHNhbml0eSBjaGVja3MKIAkgKi8KQEAgLTIwODQsNiArMjA4OSwyOSBAQCBoZWFw YW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIAlzdGF0ZS0+ dHVwbGVzb3J0ID0gYXV4U3RhdGUtPnR1cGxlc29ydCA9IE5VTEw7CiAKKwkvKgorCSAqIE5vdyB0 YWtlIHRoZSBmaXJzdCBzbmFwc2hvdCB0aGF0IHdpbGwgYmUgdXNlZCBieSB0byBmaWx0ZXIgY2Fu ZGlkYXRlCisJICogdHVwbGVzLiBXZSBhcmUgZ29pbmcgdG8gcmVwbGFjZSBpdCBieSBuZXdlciBz bmFwc2hvdCBldmVyeSBzbyBvZnRlbgorCSAqIHRvIHByb3BhZ2F0ZSBob3Jpem9uLgorCSAqCisJ ICogQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNob3RzIGluIHVzZSB0aGF0IHRy ZWF0IHNvbWUgdHJhbnNhY3Rpb24KKwkgKiBhcyBpbi1wcm9ncmVzcyB0aGF0IG91ciB0ZW1wb3Jh cnkgc25hcHNob3QgdHJlYXRzIGFzIGNvbW1pdHRlZC4KKwkgKgorCSAqIElmIHN1Y2ggYSByZWNl bnRseS1jb21taXR0ZWQgdHJhbnNhY3Rpb24gZGVsZXRlZCB0dXBsZXMgaW4gdGhlIHRhYmxlLAor CSAqIHdlIHdpbGwgbm90IGluY2x1ZGUgdGhlbSBpbiB0aGUgaW5kZXg7IHlldCB0aG9zZSB0cmFu c2FjdGlvbnMgd2hpY2gKKwkgKiBzZWUgdGhlIGRlbGV0aW5nIG9uZSBhcyBzdGlsbC1pbi1wcm9n cmVzcyB3aWxsIGV4cGVjdCBzdWNoIHR1cGxlcyB0bworCSAqIGJlIHRoZXJlIG9uY2Ugd2UgbWFy ayB0aGUgaW5kZXggYXMgdmFsaWQuCisJICoKKwkgKiBXZSBzb2x2ZSB0aGlzIGJ5IHdhaXRpbmcg Zm9yIGFsbCBlbmRhbmdlcmVkIHRyYW5zYWN0aW9ucyB0byBleGl0IGJlZm9yZQorCSAqIHdlIG1h cmsgdGhlIGluZGV4IGFzIHZhbGlkLCBmb3IgdGhhdCByZWFzb24gbGltaXRYbWluIGlzIHN1cHBv cnRlZC4KKwkgKgorCSAqIFdlIGFsc28gc2V0IEFjdGl2ZVNuYXBzaG90IHRvIHRoaXMgc25hcCwg c2luY2UgZnVuY3Rpb25zIGluIGluZGV4ZXMgbWF5CisJICogbmVlZCBhIHNuYXBzaG90LgorCSAq LworCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlQ dXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWlu OworCiAJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwogCWVjb250ZXh0ID0gR2V0UGVy VHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwogCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNs b3QoUmVsYXRpb25HZXREZXNjcihoZWFwUmVsYXRpb24pLApAQCAtMjExNyw2ICsyMTQ1LDcgQEAg aGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCiAJCUxv Y2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CiAJCWJsb2NrX251bWJlciA9IEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGJ1Zik7CisJCXBhZ2VfcmVhZF9jb3VudGVyKys7CiAKIAkJaSA9IDA7 CiAJCXdoaWxlICgob2ZmID0gdHVwbGVzW2ldKSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQpAQCAt MjE3Miw2ICsyMjAxLDIwIEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJfQogCiAJCVJlbGVhc2VCdWZmZXIoYnVmKTsKKyNkZWZpbmUgVkFMSURB VEVfSU5ERVhfUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgNDA5NgorCQlpZiAocGFnZV9yZWFk X2NvdW50ZXIgJSBWQUxJREFURV9JTkRFWF9SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSA9PSAw KQorCQl7CisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJVW5yZWdpc3RlclNuYXBzaG90KHNu YXBzaG90KTsKKwkJCS8qIHRvIG1ha2Ugc3VyZSB3ZSBwcm9wYWdhdGUgeG1pbiAqLworCQkJSW52 YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKKworCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExh dGVzdFNuYXBzaG90KCkpOworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwkJCS8q IHhtaW4gc2hvdWxkIG5vdCBnbyBiYWNrd2FyZHMsIGJ1dCBqdXN0IGZvciB0aGUgY2FzZSovCisJ CQlsaW1pdFhtaW4gPSBUcmFuc2FjdGlvbklkTmV3ZXIobGltaXRYbWluLCBzbmFwc2hvdC0+eG1p bik7CisJCX0KIAl9CiAKIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwpAQCAt MjE4MSw5ICsyMjI0LDI1IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAlyZWFkX3N0cmVhbV9lbmQocmVhZF9zdHJlYW0pOwogCXR1cGxlc3RvcmVf ZW5kKHR1cGxlc19mb3JfY2hlY2spOwogCisJLyoKKwkgKiBEcm9wIHRoZSBsYXRlc3Qgc25hcHNo b3QuICBXZSBtdXN0IGRvIHRoaXMgYmVmb3JlIHdhaXRpbmcgb3V0IG90aGVyCisJICogc25hcHNo b3QgaG9sZGVycywgZWxzZSB3ZSB3aWxsIGRlYWRsb2NrIGFnYWluc3Qgb3RoZXIgcHJvY2Vzc2Vz IGFsc28KKwkgKiBkb2luZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZLCB3aGljaCB3b3VsZCBz ZWUgb3VyIHNuYXBzaG90IGFzIG9uZQorCSAqIHRoZXkgbXVzdCB3YWl0IGZvci4KKwkgKi8KKwlQ b3BBY3RpdmVTbmFwc2hvdCgpOworCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJSW52 YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydChNeVByb2MtPnhtaW4gPT0gSW52YWxp ZFRyYW5zYWN0aW9uSWQpOworI2lmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJaWYgKE15UHJvYy0+ eGlkID09IEludmFsaWRUcmFuc2FjdGlvbklkKQorCQlJTkpFQ1RJT05fUE9JTlQoImhlYXBhbV9p bmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZCIsIE5VTEwpOworI2VuZGlmCiAJLyogVGhlc2UgbWF5 IGhhdmUgYmVlbiBwb2ludGluZyB0byB0aGUgbm93LWdvbmUgZXN0YXRlICovCiAJaW5kZXhJbmZv LT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3Rh dGUgPSBOVUxMOworCisJcmV0dXJuIGxpbWl0WG1pbjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKaW5kZXggZDE4NmNlOWVjMzcuLjhkNzU1NDcwZThjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIF9idF9zcG9vbHNfaGVh cHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwKIAkgKiBkZWFkIHR1cGxlcykgd29uJ3QgZ2V0IHZlcnkgZnVsbCwgc28gd2UgZ2l2ZSBp dCBvbmx5IHdvcmtfbWVtLgogCSAqCiAJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkIGRl YWQgdHVwbGVzIGFyZSBub3QgbmVlZCB0byBiZSBwdXQgaW50byBpbmRleAotCSAqIHNpbmNlIHdl IHdhaXQgZm9yIGFsbCBzbmFwc2hvdHMgb2xkZXIgdGhhbiByZWZlcmVuY2Ugc25hcHNob3QgZHVy aW5nIHRoZQorCSAqIHNpbmNlIHdlIHdhaXQgZm9yIGFsbCBzbmFwc2hvdHMgb2xkZXIgdGhhbiBs YXRlc3Qgc25hcHNob3QgZHVyaW5nIHRoZQogCSAqIHZhbGlkYXRpb24gcGhhc2UuCiAJICovCiAJ aWYgKGluZGV4SW5mby0+aWlfVW5pcXVlICYmICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCAyNjc4ZjdhYjc4Mi4uOTY4YThm NzcyNWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAtMTkxLDE0ICsx OTEsMTYgQEAgdmFjdXVtTGVhZlBhZ2Uoc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMsIFJlbGF0aW9u IGluZGV4LCBCdWZmZXIgYnVmZmVyLAogCQkJICogQWRkIHRhcmdldCBUSUQgdG8gcGVuZGluZyBs aXN0IGlmIHRoZSByZWRpcmVjdGlvbiBjb3VsZCBoYXZlCiAJCQkgKiBoYXBwZW5lZCBzaW5jZSBW QUNVVU0gc3RhcnRlZC4gIChJZiB4aWQgaXMgaW52YWxpZCwgYXNzdW1lIGl0CiAJCQkgKiBtdXN0 IGhhdmUgaGFwcGVuZWQgYmVmb3JlIFZBQ1VVTSBzdGFydGVkLCBzaW5jZSBSRUlOREVYCi0JCQkg KiBDT05DVVJSRU5UTFkgbG9ja3Mgb3V0IFZBQ1VVTS4pCisJCQkgKiBDT05DVVJSRU5UTFkgbG9j a3Mgb3V0IFZBQ1VVTSwgaWYgbXlYbWluIGlzIGludmFsaWQgaXQgaXMKKwkJCSAqIHZhbGlkYXRp b24gc2Nhbi4pCiAJCQkgKgogCQkJICogTm90ZTogd2UgY291bGQgbWFrZSBhIHRpZ2h0ZXIgdGVz dCBieSBzZWVpbmcgaWYgdGhlIHhpZCBpcwogCQkJICogInJ1bm5pbmciIGFjY29yZGluZyB0byB0 aGUgYWN0aXZlIHNuYXBzaG90OyBidXQgc25hcG1nci5jCiAJCQkgKiBkb2Vzbid0IGN1cnJlbnRs eSBleHBvcnQgYSBzdWl0YWJsZSBBUEksIGFuZCBpdCdzIG5vdCBlbnRpcmVseQogCQkJICogY2xl YXIgdGhhdCBhIHRpZ2h0ZXIgdGVzdCBpcyB3b3J0aCB0aGUgY3ljbGVzIGFueXdheS4KIAkJCSAq LwotCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzT3JFcXVhbHMoZHQtPnhpZCwgYmRzLT5teVht aW4pKQorCQkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiZHMtPm15WG1pbikgfHwKKwkJCQkJ VHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhkdC0+eGlkLCBiZHMtPm15WG1pbikpCiAJCQkJ c3BnQWRkUGVuZGluZ1RJRChiZHMsICZkdC0+cG9pbnRlcik7CiAJCX0KIAkJZWxzZQpAQCAtODA4 LDcgKzgxMCw2IEBAIHNwZ3ZhY3V1bXNjYW4oc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMpCiAJLyog RmluaXNoIHNldHRpbmcgdXAgc3BnQnVsa0RlbGV0ZVN0YXRlICovCiAJaW5pdFNwR2lzdFN0YXRl KCZiZHMtPnNwZ3N0YXRlLCBpbmRleCk7CiAJYmRzLT5wZW5kaW5nTGlzdCA9IE5VTEw7Ci0JYmRz LT5teVhtaW4gPSBHZXRBY3RpdmVTbmFwc2hvdCgpLT54bWluOwogCWJkcy0+bGFzdEZpbGxlZEJs b2NrID0gU1BHSVNUX0xBU1RfRklYRURfQkxLTk87CiAKIAkvKgpAQCAtOTU5LDYgKzk2MCwxMCBA QCBzcGdidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVz dWx0ICpzdGF0cywKIAliZHMuc3RhdHMgPSBzdGF0czsKIAliZHMuY2FsbGJhY2sgPSBjYWxsYmFj azsKIAliZHMuY2FsbGJhY2tfc3RhdGUgPSBjYWxsYmFja19zdGF0ZTsKKwlpZiAoaW5mby0+dmFs aWRhdGVfaW5kZXgpCisJCWJkcy5teVhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwllbHNl CisJCWJkcy5teVhtaW4gPSBHZXRBY3RpdmVTbmFwc2hvdCgpLT54bWluOwogCiAJc3BndmFjdXVt c2NhbigmYmRzKTsKIApAQCAtOTk5LDYgKzEwMDQsNyBAQCBzcGd2YWN1dW1jbGVhbnVwKEluZGV4 VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAkJYmRzLnN0 YXRzID0gc3RhdHM7CiAJCWJkcy5jYWxsYmFjayA9IGR1bW15X2NhbGxiYWNrOwogCQliZHMuY2Fs bGJhY2tfc3RhdGUgPSBOVUxMOworCQliZHMubXlYbWluID0gR2V0QWN0aXZlU25hcHNob3QoKS0+ eG1pbjsKIAogCQlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBk MWI5NjcwM2JiYy4uZTcwN2IwMTJmNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM1MzQsOCArMzUz NCw5IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogaW5z ZXJ0IHRoZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9tZW50IHdlIGNsZWFy ICJpbmRpc3JlYWR5IiBmb3IKICAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQgaXMgbm8gbW9y ZSByZXF1aXJlZCB0byBiZSB1cGRhdGVkLgogICoKLSAqIFdlIHRoZW4gdGFrZSBhIG5ldyByZWZl cmVuY2Ugc25hcHNob3QsIGFueSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQgYWNjb3JkaW5nCi0gKiB0 byB0aGlzIHNuYXAsIGJ1dCBhcmUgbm90IGluIHRoZSBpbmRleCwgbXVzdCBiZSBhZGRlZCB0byB0 aGUgaW5kZXguCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgc25hcHNob3QsIGFueSB0dXBsZXMgdGhh dCBhcmUgdmFsaWQgYWNjb3JkaW5nCisgKiB0byB0aGlzIHNuYXAsIGJ1dCBhcmUgbm90IGluIHRo ZSBpbmRleCwgbXVzdCBiZSBhZGRlZCB0byB0aGUgaW5kZXguIEluCisgKiBvcmRlciB0byBwcm9w YWdhdGUgeG1pbiB3ZSByZXNldCB0aGF0IHNuYXBzaG90IGV2ZXJ5IGZldyBzbyBvZnRlbi4KICAq IChBbnkgdHVwbGVzIGNvbW1pdHRlZCBsaXZlIGFmdGVyIHRoZSBzbmFwIHdpbGwgYmUgaW5zZXJ0 ZWQgaW50byB0aGUKICAqIGluZGV4IGJ5IHRoZWlyIG9yaWdpbmF0aW5nIHRyYW5zYWN0aW9uLiAg QW55IHR1cGxlcyBjb21taXR0ZWQgZGVhZCBiZWZvcmUKICAqIHRoZSBzbmFwIG5lZWQgbm90IGJl IGluZGV4ZWQsIGJlY2F1c2Ugd2Ugd2lsbCB3YWl0IG91dCBhbGwgdHJhbnNhY3Rpb25zCkBAIC0z NTQ4LDcgKzM1NDksNyBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKICAqIFRJRHMgb2YgYm90aCBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVzLCBhbmQgZG9p bmcgYSAibWVyZ2Ugam9pbiIgYWdhaW5zdAogICogdGhlIFRJRCBsaXN0cyB0byBzZWUgd2hpY2gg dHVwbGVzIGZyb20gYXV4aWxpYXJ5IGluZGV4IGFyZSBtaXNzaW5nIGZyb20gdGhlCiAgKiB0YXJn ZXQgaW5kZXguICBUaHVzIHdlIHdpbGwgZW5zdXJlIHRoYXQgYWxsIHR1cGxlcyB2YWxpZCBhY2Nv cmRpbmcgdG8gdGhlCi0gKiByZWZlcmVuY2Ugc25hcHNob3QgYXJlIGluIHRoZSBpbmRleC4gTm90 aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUKKyAqIGxhdGVzdCBzbmFwc2hvdCBh cmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0byBkbyBidWxrZGVsZXRlIGluIHRoZQog ICogcGFydGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZpcnN0LCB0YXJnZXQgbGFzdC4KICAqCiAg KiBCdWlsZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdheSBpcyB0cmlja3k6IHdlIG1pZ2h0IHRy eSB0byBpbnNlcnQgYQpAQCAtMzU2OSwxMyArMzU3MCwxNCBAQCBJbmRleENoZWNrRXhjbHVzaW9u KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqCiAgKiBBbHNvLCBzb21lIGFjdGlvbnMgdG8gY29u Y3VycmVudCBkcm9wIHRoZSBhdXhpbGlhcnkgaW5kZXggYXJlIHBlcmZvcm1lZC4KICAqLwotdm9p ZAotdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElk LCBTbmFwc2hvdCBzbmFwc2hvdCkKK1RyYW5zYWN0aW9uSWQKK3ZhbGlkYXRlX2luZGV4KE9pZCBo ZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIHsKIAlSZWxhdGlvbgloZWFwUmVs YXRpb24sCiAJCQkJaW5kZXhSZWxhdGlvbiwKIAkJCQlhdXhJbmRleFJlbGF0aW9uOwogCUluZGV4 SW5mbyAgKmluZGV4SW5mbzsKKwlUcmFuc2FjdGlvbklkIGxpbWl0WG1pbjsKIAlJbmRleFZhY3V1 bUluZm8gaXZpbmZvLCBhdXhpdmluZm87CiAJVmFsaWRhdGVJbmRleFN0YXRlIHN0YXRlLCBhdXhT dGF0ZTsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKQEAgLTM2MjUsOCArMzYyNywxMiBAQCB2YWxpZGF0 ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90 IHNuYXBzaG90KQogCSAqIEZldGNoIGluZm8gbmVlZGVkIGZvciBpbmRleF9pbnNlcnQuICAoWW91 IG1pZ2h0IHRoaW5rIHRoaXMgc2hvdWxkIGJlCiAJICogcGFzc2VkIGluIGZyb20gRGVmaW5lSW5k ZXgsIGJ1dCBpdHMgY29weSBpcyBsb25nIGdvbmUgZHVlIHRvIGhhdmluZwogCSAqIGJlZW4gYnVp bHQgaW4gYSBwcmV2aW91cyB0cmFuc2FjdGlvbi4pCisJICoKKwkgKiBXZSBtaWdodCBuZWVkIHNu YXBzaG90IGZvciBpbmRleCBleHByZXNzaW9ucyBvciBwcmVkaWNhdGVzLgogCSAqLworCVB1c2hB Y3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCWluZGV4SW5mbyA9IEJ1 aWxkSW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkv KiBtYXJrIGJ1aWxkIGlzIGNvbmN1cnJlbnQganVzdCBmb3IgY29uc2lzdGVuY3kgKi8KIAlpbmRl eEluZm8tPmlpX0NvbmN1cnJlbnQgPSB0cnVlOwpAQCAtMzY2Miw2ICszNjY4LDkgQEAgdmFsaWRh dGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAkJCQkJCQkJCQkgICBOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJYXV4U3Rh dGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwog CisJLyogdHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1heSByZXF1aXJlIGNhdGFsb2cgc25hcHNob3Qg Ki8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKIAkodm9pZCkgaW5kZXhfYnVsa19k ZWxldGUoJmF1eGl2aW5mbywgTlVMTCwKIAkJCQkJCQkgdmFsaWRhdGVfaW5kZXhfY2FsbGJhY2ss ICZhdXhTdGF0ZSk7CiAKQEAgLTM2NzEsNiArMzY4MCw5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBo ZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJ CQkJCQkJCQkJCU5VTEwsIFRVUExFU09SVF9OT05FKTsKIAlzdGF0ZS5odHVwcyA9IHN0YXRlLml0 dXBzID0gc3RhdGUudHVwc19pbnNlcnRlZCA9IDA7CiAKKwkvKiB0dXBsZXNvcnRfYmVnaW5fZGF0 dW0gbWF5IHJlcXVpcmUgY2F0YWxvZyBzbmFwc2hvdCAqLworCUludmFsaWRhdGVDYXRhbG9nU25h cHNob3QoKTsKKwogCS8qIGFtYnVsa2RlbGV0ZSB1cGRhdGVzIHByb2dyZXNzIG1ldHJpY3MgKi8K IAkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUoJml2aW5mbywgTlVMTCwKIAkJCQkJCQkgdmFsaWRh dGVfaW5kZXhfY2FsbGJhY2ssICZzdGF0ZSk7CkBAIC0zNjkwLDE5ICszNzAyLDI0IEBAIHZhbGlk YXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMywgcHJv Z3Jlc3NfaW5kZXgsIHByb2dyZXNzX3ZhbHMpOwogCX0KIAl0dXBsZXNvcnRfcGVyZm9ybXNvcnQo c3RhdGUudHVwbGVzb3J0KTsKKwkvKiB0dXBsZXNvcnRfcGVyZm9ybXNvcnQgbWF5IHJlcXVpcmUg Y2F0YWxvZyBzbmFwc2hvdCAqLworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwogCXR1 cGxlc29ydF9wZXJmb3Jtc29ydChhdXhTdGF0ZS50dXBsZXNvcnQpOworCS8qIHR1cGxlc29ydF9w ZXJmb3Jtc29ydCBtYXkgcmVxdWlyZSBjYXRhbG9nIHNuYXBzaG90ICovCisJSW52YWxpZGF0ZUNh dGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 bWluKSk7CiAKIAkvKgogCSAqIE5vdyBtZXJnZSBib3RoIGluZGV4ZXMKIAkgKi8KIAlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJ IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhNRVJHRSk7Ci0JdGFibGVfaW5k ZXhfdmFsaWRhdGVfc2NhbihoZWFwUmVsYXRpb24sCi0JCQkJCQkJICBpbmRleFJlbGF0aW9uLAot CQkJCQkJCSAgaW5kZXhJbmZvLAotCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJCQkJICAmc3RhdGUs Ci0JCQkJCQkJICAmYXV4U3RhdGUpOworCWxpbWl0WG1pbiA9IHRhYmxlX2luZGV4X3ZhbGlkYXRl X3NjYW4oaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgaW5kZXhSZWxhdGlvbiwKKwkJCQkJCQkJ CQkgIGluZGV4SW5mbywKKwkJCQkJCQkJCQkgICZzdGF0ZSwKKwkJCQkJCQkJCQkgICZhdXhTdGF0 ZSk7CiAKIAkvKiBUdXBsZSBzb3J0IGNsb3NlZCBieSB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2Fu ICovCiAJQXNzZXJ0KHN0YXRlLnR1cGxlc29ydCA9PSBOVUxMICYmIGF1eFN0YXRlLnR1cGxlc29y dCA9PSBOVUxMKTsKQEAgLTM3MjUsNiArMzc0Miw5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFw SWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaW5k ZXhfY2xvc2UoYXV4SW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShpbmRleFJl bGF0aW9uLCBOb0xvY2spOwogCXRhYmxlX2Nsb3NlKGhlYXBSZWxhdGlvbiwgTm9Mb2NrKTsKKwor CUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJcmV0dXJuIGxp bWl0WG1pbjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggMzU0Y2U4ZGQ0 NjMuLmY1OGUxMzhlZWQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtNTkyLDcgKzU5 Miw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUxvY2tSZWxJZAloZWFwcmVsaWQ7CiAJ TE9DS1RBRwkJaGVhcGxvY2t0YWc7CiAJTE9DS01PREUJbG9ja21vZGU7Ci0JU25hcHNob3QJc25h cHNob3Q7CiAJT2lkCQkJcm9vdF9zYXZlX3VzZXJpZDsKIAlpbnQJCQlyb290X3NhdmVfc2VjX2Nv bnRleHQ7CiAJaW50CQkJcm9vdF9zYXZlX25lc3RsZXZlbDsKQEAgLTE3OTQsMzIgKzE3OTMsMTEg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwogCWlmIChzYWZlX2luZGV4 KQogCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCi0JLyoKLQkgKiBOb3cgdGFrZSB0aGUg InJlZmVyZW5jZSBzbmFwc2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgo KQotCSAqIHRvIGZpbHRlciBjYW5kaWRhdGUgdHVwbGVzLiAgQmV3YXJlISAgVGhlcmUgbWlnaHQg c3RpbGwgYmUgc25hcHNob3RzIGluCi0JICogdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlv biBhcyBpbi1wcm9ncmVzcyB0aGF0IG91ciByZWZlcmVuY2UKLQkgKiBzbmFwc2hvdCB0cmVhdHMg YXMgY29tbWl0dGVkLiAgSWYgc3VjaCBhIHJlY2VudGx5LWNvbW1pdHRlZCB0cmFuc2FjdGlvbgot CSAqIGRlbGV0ZWQgdHVwbGVzIGluIHRoZSB0YWJsZSwgd2Ugd2lsbCBub3QgaW5jbHVkZSB0aGVt IGluIHRoZSBpbmRleDsgeWV0Ci0JICogdGhvc2UgdHJhbnNhY3Rpb25zIHdoaWNoIHNlZSB0aGUg ZGVsZXRpbmcgb25lIGFzIHN0aWxsLWluLXByb2dyZXNzIHdpbGwKLQkgKiBleHBlY3Qgc3VjaCB0 dXBsZXMgdG8gYmUgdGhlcmUgb25jZSB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KLQkgKgot CSAqIFdlIHNvbHZlIHRoaXMgYnkgd2FpdGluZyBmb3IgYWxsIGVuZGFuZ2VyZWQgdHJhbnNhY3Rp b25zIHRvIGV4aXQgYmVmb3JlCi0JICogd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCi0JICoK LQkgKiBXZSBhbHNvIHNldCBBY3RpdmVTbmFwc2hvdCB0byB0aGlzIHNuYXAsIHNpbmNlIGZ1bmN0 aW9ucyBpbiBpbmRleGVzIG1heQotCSAqIG5lZWQgYSBzbmFwc2hvdC4KLQkgKi8KLQlzbmFwc2hv dCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQlQdXNoQWN0 aXZlU25hcHNob3Qoc25hcHNob3QpOwogCS8qCiAJICogTWVyZ2UgY29udGVudCBvZiBhdXhpbGlh cnkgYW5kIHRhcmdldCBpbmRleGVzIC0gaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMu CiAJICovCi0JdmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJbmRl eFJlbGF0aW9uSWQsIHNuYXBzaG90KTsKLQlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKKwls aW1pdFhtaW4gPSB2YWxpZGF0ZV9pbmRleCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQsIGF1eElu ZGV4UmVsYXRpb25JZCk7CiAKLQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCVVucmVnaXN0ZXJTbmFw c2hvdChzbmFwc2hvdCk7CiAJLyoKIAkgKiBUaGUgc25hcHNob3Qgc3Vic3lzdGVtIGNvdWxkIHN0 aWxsIGNvbnRhaW4gcmVnaXN0ZXJlZCBzbmFwc2hvdHMgdGhhdAogCSAqIGFyZSBob2xkaW5nIGJh Y2sgb3VyIHByb2Nlc3MncyBhZHZlcnRpc2VkIHhtaW47IGluIHBhcnRpY3VsYXIsIGlmCkBAIC0x ODQxLDggKzE4MTksOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkvKgogCSAqIFRoZSBp bmRleCBpcyBub3cgdmFsaWQgaW4gdGhlIHNlbnNlIHRoYXQgaXQgY29udGFpbnMgYWxsIGN1cnJl bnRseQogCSAqIGludGVyZXN0aW5nIHR1cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29u dGFpbiB0dXBsZXMgZGVsZXRlZCBqdXN0Ci0JICogYmVmb3JlIHRoZSByZWZlcmVuY2Ugc25hcCB3 YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdCBvdXQgYW55Ci0JICogdHJhbnNhY3Rpb25zIHRoYXQg bWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCisJICogYmVmb3JlIHRoZSBsYXN0IHNuYXBzaG90 IGR1cmluZyB2YWxpZGF0aW5nIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0CisJICogb3V0IGFu eSB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KIAlJ TkpFQ1RJT05fUE9JTlQoImRlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIiwgTlVMTCk7CiAJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCkBA IC00MzQ4LDcgKzQzMjYsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVp bmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCXsKIAkJUmVpbmRl eEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKIAkJVHJhbnNhY3Rpb25JZCBsaW1pdFht aW47Ci0JCVNuYXBzaG90CXNuYXBzaG90OwogCiAJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CiAKQEAgLTQzNjMsMTMgKzQzNDAsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29u c3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlpZiAo bmV3aWR4LT5zYWZlKQogCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAotCQkvKgotCQkg KiBUYWtlIHRoZSAicmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB2YWxp ZGF0ZV9pbmRleCgpCi0JCSAqIHRvIGZpbHRlciBjYW5kaWRhdGUgdHVwbGVzLgotCQkgKi8KLQkJ c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0J CVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7Ci0KIAkJLyoKIAkJICogVXBkYXRlIHByb2dy ZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGggdGhlIGNvcnJlY3QgcGFyZW50CiAJCSAq IHRhYmxlIGludm9sdmVkLgpAQCAtNDM4MSwxNiArNDM1MSw4IEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25z dCBSZWluCiAJCXByb2dyZXNzX3ZhbHNbM10gPSBuZXdpZHgtPmFtSWQ7CiAJCXBnc3RhdF9wcm9n cmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNzX3ZhbHMp OwogCi0JCXZhbGlkYXRlX2luZGV4KG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkLCBu ZXdpZHgtPmF1eEluZGV4SWQsIHNuYXBzaG90KTsKLQotCQkvKgotCQkgKiBXZSBjYW4gbm93IGRv IGF3YXkgd2l0aCBvdXIgYWN0aXZlIHNuYXBzaG90LCB3ZSBzdGlsbCBuZWVkIHRvIHNhdmUKLQkJ ICogdGhlIHhtaW4gbGltaXQgdG8gd2FpdCBmb3Igb2xkZXIgc25hcHNob3RzLgotCQkgKi8KLQkJ bGltaXRYbWluID0gc25hcHNob3QtPnhtaW47Ci0KLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJ VW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKwkJbGltaXRYbWluID0gdmFsaWRhdGVfaW5k ZXgobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7 CisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkJLyoK IAkJICogVG8gZW5zdXJlIG5vIGRlYWRsb2Nrcywgd2UgbXVzdCBjb21taXQgYW5kIHN0YXJ0IHll dCBhbm90aGVyCkBAIC00NDAzLDcgKzQzNjUsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQkvKgogCQkgKiBUaGUgaW5kZXggaXMgbm93IHZhbGlkIGluIHRoZSBzZW5zZSB0aGF0IGl0IGNv bnRhaW5zIGFsbCBjdXJyZW50bHkKIAkJICogaW50ZXJlc3RpbmcgdHVwbGVzLiAgQnV0IHNpbmNl IGl0IG1pZ2h0IG5vdCBjb250YWluIHR1cGxlcyBkZWxldGVkCi0JCSAqIGp1c3QgYmVmb3JlIHRo ZSByZWZlcmVuY2Ugc25hcCB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdCBvdXQgYW55CisJCSAq IGp1c3QgYmVmb3JlIHRoZSBsYXRlc3Qgc25hcCB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdCBv dXQgYW55CiAJCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhhdmUgb2xkZXIgc25hcHNob3Rz LgogCQkgKgogCQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBvciBYaWQgaW4g dGhpcyB0cmFuc2FjdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IDZjNDNmNDc4MTRkLi5kMzhh Njk2MTAzNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC03MDgsMTAgKzcwOCw5IEBAIHR5cGVkZWYg c3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJCQkJCQkJCQkJICAgVGFibGVTY2FuRGVzYyBzY2FuKTsK IAogCS8qIHNlZSB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuIGZvciByZWZlcmVuY2UgYWJvdXQg cGFyYW1ldGVycyAqLwotCXZvaWQgCQkoKmluZGV4X3ZhbGlkYXRlX3NjYW4pIChSZWxhdGlvbiB0 YWJsZV9yZWwsCisJVHJhbnNhY3Rpb25JZCAJCSgqaW5kZXhfdmFsaWRhdGVfc2NhbikgKFJlbGF0 aW9uIHRhYmxlX3JlbCwKIAkJCQkJCQkJCQkJCVJlbGF0aW9uIGluZGV4X3JlbCwKIAkJCQkJCQkJ CQkJCXN0cnVjdCBJbmRleEluZm8gKmluZGV4X2luZm8sCi0JCQkJCQkJCQkJCQlTbmFwc2hvdCBz bmFwc2hvdCwKIAkJCQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAog CQkJCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4X3N0YXRlKTsKIApAQCAt MTgyNSwxOCArMTgyNCwxNiBAQCB0YWJsZV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9u IHRhYmxlX3JlbCwKICAqIE5vdGU6IGl0IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoYXQgZnVuY3Rp b24gdG8gY2xvc2Ugc29ydHN0YXRlcyBpbgogICogYm90aCBgc3RhdGVgIGFuZCBgYXV4c3RhdGVg LgogICovCi1zdGF0aWMgaW5saW5lIHZvaWQKK3N0YXRpYyBpbmxpbmUgVHJhbnNhY3Rpb25JZAog dGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCiAJCQkJCQkgIFJl bGF0aW9uIGluZGV4X3JlbCwKIAkJCQkJCSAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywK LQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4 U3RhdGUgKnN0YXRlLAogCQkJCQkJICBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICphdXhzdGF0 ZSkKIHsKIAlyZXR1cm4gdGFibGVfcmVsLT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9zY2Fu KHRhYmxlX3JlbCwKIAkJCQkJCQkJCQkJCQkgIGluZGV4X3JlbCwKIAkJCQkJCQkJCQkJCQkgIGlu ZGV4X2luZm8sCi0JCQkJCQkJCQkJCQkJICBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJCQkgIHN0YXRl LAogCQkJCQkJCQkJCQkJCSAgYXV4c3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKaW5kZXggN2Q4 MmNkMmViNTYuLjE1ZTM0NWM3YTE5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJh bnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAgLTM1NSw2ICszNTUs MjEgQEAgTm9ybWFsVHJhbnNhY3Rpb25JZE9sZGVyKFRyYW5zYWN0aW9uSWQgYSwgVHJhbnNhY3Rp b25JZCBiKQogCXJldHVybiBiOwogfQogCisvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0d28g SURzICovCitzdGF0aWMgaW5saW5lIFRyYW5zYWN0aW9uSWQKK1RyYW5zYWN0aW9uSWROZXdlcihU cmFuc2FjdGlvbklkIGEsIFRyYW5zYWN0aW9uSWQgYikKK3sKKwlpZiAoIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKGEpKQorCQlyZXR1cm4gYjsKKworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYikp CisJCXJldHVybiBhOworCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGEsIGIpKQorCQlyZXR1 cm4gYTsKKwlyZXR1cm4gYjsKK30KKwogLyogcmV0dXJuIHRoZSBuZXdlciBvZiB0aGUgdHdvIElE cyAqLwogc3RhdGljIGlubGluZSBGdWxsVHJhbnNhY3Rpb25JZAogRnVsbFRyYW5zYWN0aW9uSWRO ZXdlcihGdWxsVHJhbnNhY3Rpb25JZCBhLCBGdWxsVHJhbnNhY3Rpb25JZCBiKQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRl eC5oCmluZGV4IDUzYjJiMTNlZmMzLi44ZmUwYWNjMWU2YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAt MTU0LDcgKzE1NCw3IEBAIGV4dGVybiB2b2lkIGluZGV4X2J1aWxkKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKIAkJCQkJCWJvb2wgaXNyZWluZGV4LAogCQkJCQkJYm9vbCBwYXJhbGxlbCk7CiAKLWV4 dGVybiB2b2lkIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4 SW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpOworZXh0ZXJuIFRyYW5zYWN0aW9uSWQgdmFsaWRh dGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkKTsKIAogZXh0 ZXJuIHZvaWQgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBpbmRleElkLCBJbmRleFN0YXRlRmxh Z3NBY3Rpb24gYWN0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0IGIvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0Cmlu ZGV4IDlmMDNmYTMwMzNjLi43ODAzMTNmNDc3YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CisrKyBi L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dApAQCAtMjMsNiArMjMsMTIgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0 YWNoKCd0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZScsICdub3RpY2UnKTsKICAKICgxIHJv dykKIAorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwYW1faW5kZXhfdmFsaWRh dGVfc2Nhbl9ub194aWQnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2lj X3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1h cnkga2V5LCBqIGludCk7CiBJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGks IGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKQEAgLTQzLDMwICs0OSwz OCBAQCBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJz PTApOwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2Vm ZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5f c25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90 cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVz ZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVz ZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25v X3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwg aikgV0hFUkUgTU9EKGksIDIpID0gMDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFw c2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFw X3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jl c2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3Rz CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNl dF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9f eGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUg Y2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOwogTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKQEAgLTc2LDkgKzkwLDExIEBAIERST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hv dHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jl c2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9u b194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRo ZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBT RVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CkBAIC05MSwyMyArMTA3LDMxIEBAIFNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScp OwogCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2lu aXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBo ZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibChpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2Fu X25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owog Tk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFs bGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikg PSAwOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxp emUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkp OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRf cmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGlj YXRlX3N0YWJsZV9ub19wYXJhbSgpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCkBAIC0xMTYsMTMgKzE0 MCwxNyBAQCBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFs aWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CiBOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxp ZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OwogRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3Ag Y2FzY2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAppbmRl eCAyOTQxYWE3YWUzOC4uMjQ5ZDEwNjFhZGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApA QCAtNCw2ICs0LDcgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZl Y3RpdmUnLCAnbm90aWNlJyk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxl X2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CiBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplJywgJ25v dGljZScpOworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwYW1faW5kZXhfdmFs aWRhdGVfc2Nhbl9ub194aWQnLCAnbm90aWNlJyk7CiAKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0 X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5 LCBqIGludCk7Ci0tIAoyLjQzLjAKCg== --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0012-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Disposition: attachment; filename="v20-0012-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogr6 RnJvbSA0MDU4YjRhZDg3NzA2YTE4NGZkYWU3YjFjMGQ2ZWI0M2IyNjdlYTdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoyNDo0OCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDEyLzEyXSBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDIG9wdGltaXphdGlvbgoKVGhp cyBvcHRpbWl6YXRpb24gYWxsb3dlZCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUg b3RoZXIgaW5kZXhlcyB3aXRob3V0IGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMuIFdpdGggdGhl IG5ldyBzbmFwc2hvdCBoYW5kbGluZyBhcHByb2FjaCB0aGF0IHBlcmlvZGljYWxseSByZWZyZXNo ZXMgc25hcHNob3RzLCB0aGlzIG9wdGltaXphdGlvbiBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgoK VGhlIGNoYW5nZSBzaW1wbGlmaWVzIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQgY29kZSBieToKLSBy ZW1vdmluZyB0aGUgUFJPQ19JTl9TQUZFX0lDIHByb2Nlc3Mgc3RhdHVzIGZsYWcKLSBlbGltaW5h dGluZyBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpIGNhbGxzIGFuZCByZWxhdGVkIGxvZ2ljCi0g cmVtb3Zpbmcgc3BlY2lhbCBjYXNlIGhhbmRsaW5nIGluIEdldEN1cnJlbnRWaXJ0dWFsWElEcygp Ci0gcmVtb3ZpbmcgcmVsYXRlZCB0ZXN0IGNhc2VzIGFuZCBpbmplY3Rpb24gcG9pbnRzCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8ICAgNiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgMTQyICstLS0tLS0t LS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAgICAgICAgICAgICAg IHwgICA4ICstCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgICAg fCAgIDIgKy0KIC4uLi9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0ICAgICAgICAgICAgICAgICB8 ICA1MSAtLS0tLS0tCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVp bGQgfCAgIDEgLQogLi4uL2luamVjdGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwgICAg IHwgIDI4IC0tLS0KIDkgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMjM3IGRlbGV0 aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9yZWluZGV4X2NvbmMuc3FsCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jCmluZGV4IDQyMzQyNGU1MWEyLi45M2FkM2YzZjYzMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYwpAQCAtMjg5MywxMSArMjg5Myw5IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWludAkJCXNvcnRtZW07CiAKIAkv KgotCSAqIFRoZSBvbmx5IHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0 aGUgcGFyYWxsZWwgd29ya2VyIGlzCi0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRoZXJlIGFy ZSBubyBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVs IHdvcmtlci4KIAkgKi8KLQlBc3NlcnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkgfHwKLQkJ ICAgKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNzZXJ0KE15 UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3RyaW5nIGZv ciBpbmRpdmlkdWFsIHdvcmtlcnMgZmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2luaW5zZXJ0LmMKaW5kZXggNjI5ZjZkNWYyYzAuLmRmNzliNTg1MGY5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMKQEAgLTIxMDYsMTEgKzIxMDYsOSBAQCBfZ2luX3BhcmFsbGVsX2J1 aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWludAkJCXNvcnRtZW07 CiAKIAkvKgotCSAqIFRoZSBvbmx5IHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNl dCB0byB0aGUgcGFyYWxsZWwgd29ya2VyIGlzCi0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRo ZXJlIGFyZSBubyBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBh cmFsbGVsIHdvcmtlci4KIAkgKi8KLQlBc3NlcnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkg fHwKLQkJICAgKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNz ZXJ0KE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3Ry aW5nIGZvciBpbmRpdmlkdWFsIHdvcmtlcnMgZmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA4ZDc1NTQ3MGU4Yy4uMDBjODZiZmNmYzYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xOTEwLDExICsxOTEwLDkgQEAgX2J0X3Bh cmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogI2VuZGlm CQkJCQkJCS8qIEJUUkVFX0JVSUxEX1NUQVRTICovCiAKIAkvKgotCSAqIFRoZSBvbmx5IHBvc3Np YmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUgcGFyYWxsZWwgd29ya2VyIGlz Ci0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRoZXJlIGFyZSBubyBwb3NzaWJsZSBzdGF0dXMg ZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVsIHdvcmtlci4KIAkgKi8KLQlBc3Nl cnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkgfHwKLQkJICAgKE15UHJvYy0+c3RhdHVzRmxh Z3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNzZXJ0KE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0g MCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3RyaW5nIGZvciBpbmRpdmlkdWFsIHdvcmtlcnMg Zmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBmNThlMTM4 ZWVkMi4uMmYwNjZmNDVjNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xMTUsNyAr MTE1LDYgQEAgc3RhdGljIGJvb2wgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LAogCQkJCQkJCQkJCU9pZCByZWxhdGlvbk9pZCwKIAkJCQkJCQkJCQlj b25zdCBSZWluZGV4UGFyYW1zICpwYXJhbXMpOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbGlzcGFy dGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29sIG5ld3ZhbCk7Ci1zdGF0aWMgaW5saW5lIHZvaWQg c2V0X2luZGV4c2FmZV9wcm9jZmxhZ3Modm9pZCk7CiAKIC8qCiAgKiBjYWxsYmFjayBhcmd1bWVu dCB0eXBlIGZvciBSYW5nZVZhckNhbGxiYWNrRm9yUmVpbmRleEluZGV4KCkKQEAgLTQxOCwxMCAr NDE3LDcgQEAgQ29tcGFyZU9wY2xhc3NPcHRpb25zKGNvbnN0IERhdHVtICpvcHRzMSwgY29uc3Qg RGF0dW0gKm9wdHMyLCBpbnQgbmF0dHMpCiAgKiBsYXp5IFZBQ1VVTXMsIGJlY2F1c2UgdGhleSB3 b24ndCBiZSBmYXplZCBieSBtaXNzaW5nIGluZGV4IGVudHJpZXMKICAqIGVpdGhlci4gIChNYW51 YWwgQU5BTFlaRXMsIGhvd2V2ZXIsIGNhbid0IGJlIGV4Y2x1ZGVkIGJlY2F1c2UgdGhleQogICog bWlnaHQgYmUgd2l0aGluIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBkbyBhcmJpdHJh cnkgb3BlcmF0aW9ucwotICogbGF0ZXIuKSAgUHJvY2Vzc2VzIHJ1bm5pbmcgQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBvciBSRUlOREVYIENPTkNVUlJFTlRMWQotICogb24gaW5kZXhlcyB0aGF0 IGFyZSBuZWl0aGVyIGV4cHJlc3Npb25hbCBub3IgcGFydGlhbCBhcmUgYWxzbyBzYWZlIHRvCi0g KiBpZ25vcmUsIHNpbmNlIHdlIGtub3cgdGhhdCB0aG9zZSBwcm9jZXNzZXMgd29uJ3QgZXhhbWlu ZSBhbnkgZGF0YQotICogb3V0c2lkZSB0aGUgdGFibGUgdGhleSdyZSBpbmRleGluZy4KKyAqIGxh dGVyLikKICAqCiAgKiBBbHNvLCBHZXRDdXJyZW50VmlydHVhbFhJRHMgbmV2ZXIgcmVwb3J0cyBv dXIgb3duIHZ4aWQsIHNvIHdlIG5lZWQgbm90CiAgKiBjaGVjayBmb3IgdGhhdC4KQEAgLTQ0Miw4 ICs0MzgsNyBAQCBXYWl0Rm9yT2xkZXJTbmFwc2hvdHMoVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW4s IGJvb2wgcHJvZ3Jlc3MpCiAJVmlydHVhbFRyYW5zYWN0aW9uSWQgKm9sZF9zbmFwc2hvdHM7CiAK IAlvbGRfc25hcHNob3RzID0gR2V0Q3VycmVudFZpcnR1YWxYSURzKGxpbWl0WG1pbiwgdHJ1ZSwg ZmFsc2UsCi0JCQkJCQkJCQkJICBQUk9DX0lTX0FVVE9WQUNVVU0gfCBQUk9DX0lOX1ZBQ1VVTQot CQkJCQkJCQkJCSAgfCBQUk9DX0lOX1NBRkVfSUMsCisJCQkJCQkJCQkJICBQUk9DX0lTX0FVVE9W QUNVVU0gfCBQUk9DX0lOX1ZBQ1VVTSwKIAkJCQkJCQkJCQkgICZuX29sZF9zbmFwc2hvdHMpOwog CWlmIChwcm9ncmVzcykKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19X QUlURk9SX1RPVEFMLCBuX29sZF9zbmFwc2hvdHMpOwpAQCAtNDYzLDggKzQ1OCw3IEBAIFdhaXRG b3JPbGRlclNuYXBzaG90cyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgYm9vbCBwcm9ncmVzcykK IAogCQkJbmV3ZXJfc25hcHNob3RzID0gR2V0Q3VycmVudFZpcnR1YWxYSURzKGxpbWl0WG1pbiwK IAkJCQkJCQkJCQkJCQl0cnVlLCBmYWxzZSwKLQkJCQkJCQkJCQkJCQlQUk9DX0lTX0FVVE9WQUNV VU0gfCBQUk9DX0lOX1ZBQ1VVTQotCQkJCQkJCQkJCQkJCXwgUFJPQ19JTl9TQUZFX0lDLAorCQkJ CQkJCQkJCQkJCVBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNLAogCQkJCQkJCQkJ CQkJCSZuX25ld2VyX3NuYXBzaG90cyk7CiAJCQlmb3IgKGogPSBpOyBqIDwgbl9vbGRfc25hcHNo b3RzOyBqKyspCiAJCQl7CkBAIC01NzgsNyArNTcyLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJYW1vcHRpb25zX2Z1bmN0aW9uIGFtb3B0aW9uczsKIAlib29sCQlleGNsdXNpb247CiAJ Ym9vbAkJcGFydGl0aW9uZWQ7Ci0JYm9vbAkJc2FmZV9pbmRleDsKIAlEYXR1bQkJcmVsb3B0aW9u czsKIAlpbnQxNgkgICAqY29sb3B0aW9uczsKIAlJbmRleEluZm8gICppbmRleEluZm87CkBAIC0x MTgxLDEwICsxMTc0LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCX0KIAl9CiAKLQkv KiBJcyBpbmRleCBzYWZlIGZvciBvdGhlcnMgdG8gaWdub3JlPyAgU2VlIHNldF9pbmRleHNhZmVf cHJvY2ZsYWdzKCkgKi8KLQlzYWZlX2luZGV4ID0gaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyA9 PSBOSUwgJiYKLQkJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgPT0gTklMOwotCiAJLyoKIAkgKiBS ZXBvcnQgaW5kZXggY3JlYXRpb24gaWYgYXBwcm9wcmlhdGUgKGRlbGF5IHRoaXMgdGlsbCBhZnRl ciBtb3N0IG9mIHRoZQogCSAqIGVycm9yIGNoZWNrcykKQEAgLTE2NzEsMTAgKzE2NjAsNiBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4 KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJLyoKIAkgKiBUaGUgaW5kZXggaXMg bm93IHZpc2libGUsIHNvIHdlIGNhbiByZXBvcnQgdGhlIE9JRC4gIFdoaWxlIG9uIGl0LAogCSAq IGluY2x1ZGUgdGhlIHJlcG9ydCBmb3IgdGhlIGJlZ2lubmluZyBvZiBwaGFzZSAyLgpAQCAtMTcy OSw5ICsxNzE0LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwgY29u Y3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8K LQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CiAJLyoKQEAgLTE3NjEsMTAgKzE3NDMs NiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGlu ZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZl X2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJLyoKIAkgKiBQaGFzZSAz IG9mIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQKIAkgKgpAQCAtMTc5MCw5ICsxNzY4LDcgQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWls ZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQlpZiAoc2FmZV9pbmRleCkK LQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKwogCS8qCiAJICogTWVyZ2UgY29udGVudCBv ZiBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVzIC0gaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4 IGVudHJpZXMuCiAJICovCkBAIC0xODA5LDkgKzE3ODUsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFi bGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMs IGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZl X3Byb2NmbGFncygpOwogCiAJLyogV2Ugc2hvdWxkIG5vdyBkZWZpbml0ZWx5IG5vdCBiZSBhZHZl cnRpc2luZyBhbnkgeG1pbi4gKi8KIAlBc3NlcnQoTXlQcm9jLT54bWluID09IEludmFsaWRUcmFu c2FjdGlvbklkKTsKQEAgLTE4NTIsMTAgKzE4MjUsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlm IGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3By b2NmbGFncygpOwotCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0UsCiAJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOwog CS8qIE5vdyB3YWl0IGZvciBhbGwgdHJhbnNhY3Rpb24gdG8gc2VlIGF1eGlsaWFyeSBhcyAibm9u LXJlYWR5IGZvciBpbnNlcnRzIiAqLwpAQCAtMTg3NiwxMCArMTg0NSw2IEBAIERlZmluZUluZGV4 KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGln bm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9p bmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfNik7CiAJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBpZ25vcmUgYXV4 aWxpYXJ5IGJlY2F1c2UgaXQgaXMgZGVhZCAqLwpAQCAtMzYyMCw3ICszNTg1LDYgQEAgUmVpbmRl eFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRp b25PaWQsIGNvbnN0IFJlaW4KIAkJT2lkCQkJanVua0F1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxl SWQ7CiAJCU9pZAkJCWFtSWQ7Ci0JCWJvb2wJCXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9w cm9jZmxhZ3MgKi8KIAl9IFJlaW5kZXhJbmRleEluZm87CiAJTGlzdAkgICAqaGVhcFJlbGF0aW9u SWRzID0gTklMOwogCUxpc3QJICAgKmluZGV4SWRzID0gTklMOwpAQCAtMzk5NCwxNyArMzk1OCw2 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVz dExldmVsKCk7CiAJCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwogCi0JCS8qIGRldGVybWluZSBzYWZl dHkgb2YgdGhpcyBpbmRleCBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KLQkJaWR4LT5z YWZlID0gKFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbCkgPT0gTklMICYmCi0J CQkJCSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsKSA9PSBOSUwpOwotCi0jaWZk ZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKLQkJaWYgKGlkeC0+c2FmZSkKLQkJCUlOSkVDVElPTl9Q T0lOVCgicmVpbmRleC1jb25jLWluZGV4LXNhZmUiLCBOVUxMKTsKLQkJZWxzZQotCQkJSU5KRUNU SU9OX1BPSU5UKCJyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUiLCBOVUxMKTsKLSNlbmRpZgot CiAJCWlkeC0+dGFibGVJZCA9IFJlbGF0aW9uR2V0UmVsaWQoaGVhcFJlbCk7CiAJCWlkeC0+YW1J ZCA9IGluZGV4UmVsLT5yZF9yZWwtPnJlbGFtOwogCkBAIC00MDcwLDcgKzQwMjMsNiBAQCBSZWlu ZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxh dGlvbk9pZCwgY29uc3QgUmVpbgogCQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElkOwogCQlu ZXdpZHgtPmF1eEluZGV4SWQgPSBhdXhJbmRleElkOwogCQluZXdpZHgtPmp1bmtBdXhJbmRleElk ID0ganVua0F1eEluZGV4SWQ7Ci0JCW5ld2lkeC0+c2FmZSA9IGlkeC0+c2FmZTsKIAkJbmV3aWR4 LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFtSWQ7CiAK QEAgLTQxNzEsMTEgKzQxMjMsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgot CSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGluIHRoaXMgdHJhbnNhY3Rpb24s IHRoZXJlJ3Mgbm8gbmVlZAotCSAqIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVy ZS4KLQkgKi8KLQogCS8qCiAJICogUGhhc2UgMiBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAq CkBAIC00MjA3LDEwICs0MTU0LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5n IHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUp Ci0JCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJCS8qIEJ1aWxkIGF1eGlsaWFyeSBp bmRleCwgaXQgaXMgZmFzdCAtIHdpdGhvdXQgYW55IGFjdHVhbCBoZWFwIHNjYW4sIGp1c3QgYW4g ZW1wdHkgaW5kZXguICovCiAJCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZChuZXdpZHgtPnRhYmxl SWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CiAKQEAgLTQyMTksMTEgKzQxNjIsNiBAQCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlv bk9pZCwgY29uc3QgUmVpbgogCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0J ICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4gdGhpcyB0cmFuc2FjdGlvbiwg dGhlcmUncyBubyBuZWVkCi0JICogdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJl LgotCSAqLwotCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKIAkv KgpAQCAtNDI0OCwxMCArNDE4Niw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwog CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29uY3VycmVudCBpbmRleGlu ZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlpZiAobmV3aWR4LT5zYWZl KQotCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKgogCQkgKiBVcGRhdGUgcHJv Z3Jlc3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKIAkJ ICogdGFibGUgaW52b2x2ZWQuCkBAIC00MjcxLDExICs0MjA1LDYgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgotCSAqIEJlY2F1 c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IG9yIFhpZCBpbiB0aGlzIHRyYW5zYWN0aW9uLCB0 aGVyZSdzIG5vCi0JICogbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUu Ci0JICovCi0KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOwogCVdh aXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CkBAIC00Mjk3 LDEwICs0MjI2LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CiAKLQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9y ZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUpCi0JCQlzZXRf aW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJCS8qCiAJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1p Z2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKIAkJICogaGF2ZSBh IHZhbGlkIHNuYXBzaG90LgpAQCAtNDMzNiwxMCArNDI2MSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25z dCBSZWluCiAJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29u Y3VycmVudCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlp ZiAobmV3aWR4LT5zYWZlKQotCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKgog CQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29y cmVjdCBwYXJlbnQKIAkJICogdGFibGUgaW52b2x2ZWQuCkBAIC00MzY3LDkgKzQyODgsNiBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkgKiBpbnRlcmVzdGluZyB0dXBsZXMuICBCdXQgc2lu Y2UgaXQgbWlnaHQgbm90IGNvbnRhaW4gdHVwbGVzIGRlbGV0ZWQKIAkJICoganVzdCBiZWZvcmUg dGhlIGxhdGVzdCBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkJICog dHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCi0JCSAqCi0JCSAq IEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IG9yIFhpZCBpbiB0aGlzIHRyYW5zYWN0 aW9uLAotCQkgKiB0aGVyZSdzIG5vIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxh ZyBoZXJlLgogCQkgKi8KIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRf NCk7CkBAIC00MzkxLDEzICs0MzA5LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlJTkpF Q1RJT05fUE9JTlQoInJlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwIiwg TlVMTCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogQmVjYXVzZSB0 aGlzIHRyYW5zYWN0aW9uIG9ubHkgZG9lcyBjYXRhbG9nIG1hbmlwdWxhdGlvbnMgYW5kIGRvZXNu J3QgZG8KLQkgKiBhbnkgaW5kZXggb3BlcmF0aW9ucywgd2UgY2FuIHNldCB0aGUgUFJPQ19JTl9T QUZFX0lDIGZsYWcgaGVyZQotCSAqIHVuY29uZGl0aW9uYWxseS4KLQkgKi8KLQlzZXRfaW5kZXhz YWZlX3Byb2NmbGFncygpOwotCiAJZm9yYm90aChsYywgaW5kZXhJZHMsIGxjMiwgbmV3SW5kZXhJ ZHMpCiAJewogCQlSZWluZGV4SW5kZXhJbmZvICpvbGRpZHggPSBsZmlyc3QobGMpOwpAQCAtNDQ1 MywxMiArNDM2NCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4 U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogV2hp bGUgd2UgY291bGQgc2V0IFBST0NfSU5fU0FGRV9JQyBpZiBhbGwgaW5kZXhlcyBxdWFsaWZpZWQs IHRoZXJlJ3Mgbm8KLQkgKiByZWFsIG5lZWQgZm9yIHRoYXQsIGJlY2F1c2Ugd2Ugb25seSBhY3F1 aXJlIGFuIFhpZCBhZnRlciB0aGUgd2FpdCBpcwotCSAqIGRvbmUsIGFuZCB0aGF0IGxhc3RzIGZv ciBhIHZlcnkgc2hvcnQgcGVyaW9kLgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSA1IG9mIFJFSU5E RVggQ09OQ1VSUkVOVExZCiAJICoKQEAgLTQ1MjIsMTIgKzQ0MjcsNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAKLQkvKgotCSAqIFdoaWxlIHdlIGNvdWxkIHNldCBQUk9DX0lOX1NBRkVf SUMgaWYgYWxsIGluZGV4ZXMgcXVhbGlmaWVkLCB0aGVyZSdzIG5vCi0JICogcmVhbCBuZWVkIGZv ciB0aGF0LCBiZWNhdXNlIHdlIG9ubHkgYWNxdWlyZSBhbiBYaWQgYWZ0ZXIgdGhlIHdhaXQgaXMK LQkgKiBkb25lLCBhbmQgdGhhdCBsYXN0cyBmb3IgYSB2ZXJ5IHNob3J0IHBlcmlvZC4KLQkgKi8K LQogCS8qCiAJICogUGhhc2UgNiBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCkBAIC00Nzk1 LDM2ICs0Njk0LDMgQEAgdXBkYXRlX3JlbGlzcGFydGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29s IG5ld3ZhbCkKIAl0YWJsZV9jbG9zZShjbGFzc1JlbCwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAK LS8qCi0gKiBTZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGluIE15UHJvYy0+c3RhdHVzRmxh Z3MuCi0gKgotICogV2hlbiBkb2luZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgd2UgY2FuIHNl dCB0aGlzIGZsYWcKLSAqIHRvIHRlbGwgb3RoZXIgcHJvY2Vzc2VzIGNvbmN1cnJlbnRseSBydW5u aW5nIENSRUFURQotICogSU5ERVggQ09OQ1VSUkVOVExZIG9yIFJFSU5ERVggQ09OQ1VSUkVOVExZ IHRvIGlnbm9yZSB1cyB3aGVuCi0gKiBkb2luZyB0aGVpciB3YWl0cyBmb3IgY29uY3VycmVudCBz bmFwc2hvdHMuICBPbiBvbmUgaGFuZCBpdAotICogYXZvaWRzIHBvaW50bGVzc2x5IHdhaXRpbmcg Zm9yIGEgcHJvY2VzcyB0aGF0J3Mgbm90IGludGVyZXN0aW5nCi0gKiBhbnl3YXk7IGJ1dCBtb3Jl IGltcG9ydGFudGx5IGl0IGF2b2lkcyBkZWFkbG9ja3MgaW4gc29tZSBjYXNlcy4KLSAqCi0gKiBU aGlzIGNhbiBiZSBkb25lIHNhZmVseSBvbmx5IGZvciBpbmRleGVzIHRoYXQgZG9uJ3QgZXhlY3V0 ZSBhbnkKLSAqIGV4cHJlc3Npb25zIHRoYXQgY291bGQgYWNjZXNzIG90aGVyIHRhYmxlcywgc28g aW5kZXggbXVzdCBub3QgYmUKLSAqIGV4cHJlc3Npb25hbCBub3IgcGFydGlhbC4gIENhbGxlciBp cyByZXNwb25zaWJsZSBmb3Igb25seSBjYWxsaW5nCi0gKiB0aGlzIHJvdXRpbmUgd2hlbiB0aGF0 IGFzc3VtcHRpb24gaG9sZHMgdHJ1ZS4KLSAqCi0gKiAoVGhlIGZsYWcgaXMgcmVzZXQgYXV0b21h dGljYWxseSBhdCB0cmFuc2FjdGlvbiBlbmQsIHNvIGl0IG11c3QgYmUKLSAqIHNldCBmb3IgZWFj aCB0cmFuc2FjdGlvbi4pCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotc2V0X2luZGV4c2FmZV9w cm9jZmxhZ3Modm9pZCkKLXsKLQkvKgotCSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJl Zm9yZSBpbnN0YWxsaW5nIHhpZCBvciB4bWluIGluIE15UHJvYzsKLQkgKiBvdGhlcndpc2UsIGNv bmN1cnJlbnQgcHJvY2Vzc2VzIGNvdWxkIHNlZSBhbiBYbWluIHRoYXQgbW92ZXMgYmFja3dhcmRz LgotCSAqLwotCUFzc2VydChNeVByb2MtPnhpZCA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCAmJgot CQkgICBNeVByb2MtPnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpOwotCi0JTFdMb2NrQWNx dWlyZShQcm9jQXJyYXlMb2NrLCBMV19FWENMVVNJVkUpOwotCU15UHJvYy0+c3RhdHVzRmxhZ3Mg fD0gUFJPQ19JTl9TQUZFX0lDOwotCVByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzW015UHJvYy0+cGd4 YWN0b2ZmXSA9IE15UHJvYy0+c3RhdHVzRmxhZ3M7Ci0JTFdMb2NrUmVsZWFzZShQcm9jQXJyYXlM b2NrKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jLmgKaW5kZXggOWY5YjNmY2ZiZjEuLjVlMDc0NjZjNzM3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaApAQCAtNTYsMTAgKzU2LDYgQEAgc3RydWN0IFhpZENhY2hlCiAgKi8KICNkZWZp bmUJCVBST0NfSVNfQVVUT1ZBQ1VVTQkweDAxCS8qIGlzIGl0IGFuIGF1dG92YWMgd29ya2VyPyAq LwogI2RlZmluZQkJUFJPQ19JTl9WQUNVVU0JCTB4MDIJLyogY3VycmVudGx5IHJ1bm5pbmcgbGF6 eSB2YWN1dW0gKi8KLSNkZWZpbmUJCVBST0NfSU5fU0FGRV9JQwkJMHgwNAkvKiBjdXJyZW50bHkg cnVubmluZyBDUkVBVEUgSU5ERVgKLQkJCQkJCQkJCQkgKiBDT05DVVJSRU5UTFkgb3IgUkVJTkRF WAotCQkJCQkJCQkJCSAqIENPTkNVUlJFTlRMWSBvbiBub24tZXhwcmVzc2lvbmFsLAotCQkJCQkJ CQkJCSAqIG5vbi1wYXJ0aWFsIGluZGV4ICovCiAjZGVmaW5lCQlQUk9DX1ZBQ1VVTV9GT1JfV1JB UEFST1VORAkweDA4CS8qIHNldCBieSBhdXRvdmFjIG9ubHkgKi8KICNkZWZpbmUJCVBST0NfSU5f TE9HSUNBTF9ERUNPRElORwkweDEwCS8qIGN1cnJlbnRseSBkb2luZyBsb2dpY2FsCiAJCQkJCQkJ CQkJCQkgKiBkZWNvZGluZyBvdXRzaWRlIHhhY3QgKi8KQEAgLTY5LDEzICs2NSwxMyBAQCBzdHJ1 Y3QgWGlkQ2FjaGUKIAogLyogZmxhZ3MgcmVzZXQgYXQgRU9YYWN0ICovCiAjZGVmaW5lCQlQUk9D X1ZBQ1VVTV9TVEFURV9NQVNLIFwKLQkoUFJPQ19JTl9WQUNVVU0gfCBQUk9DX0lOX1NBRkVfSUMg fCBQUk9DX1ZBQ1VVTV9GT1JfV1JBUEFST1VORCkKKwkoUFJPQ19JTl9WQUNVVU0gfCBQUk9DX1ZB Q1VVTV9GT1JfV1JBUEFST1VORCkKIAogLyoKICAqIFhtaW4tcmVsYXRlZCBmbGFncy4gTWFrZSBz dXJlIGFueSBmbGFncyB0aGF0IGFmZmVjdCBob3cgdGhlIHByb2Nlc3MnIFhtaW4KICAqIHZhbHVl IGlzIGludGVycHJldGVkIGJ5IFZBQ1VVTSBhcmUgaW5jbHVkZWQgaGVyZS4KICAqLwotI2RlZmlu ZQkJUFJPQ19YTUlOX0ZMQUdTIChQUk9DX0lOX1ZBQ1VVTSB8IFBST0NfSU5fU0FGRV9JQykKKyNk ZWZpbmUJCVBST0NfWE1JTl9GTEFHUyAoUFJPQ19JTl9WQUNVVU0pCiAKIC8qCiAgKiBXZSBhbGxv dyBhIGxpbWl0ZWQgbnVtYmVyIG9mICJ3ZWFrIiByZWxhdGlvbiBsb2NrcyAoQWNjZXNzU2hhcmVM b2NrLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2Vm aWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCmluZGV4IDE5 ZDI2NDA4YzJhLi44MmFjZjMwMDZiZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9NYWtlZmlsZQpAQCAtMTEsNyArMTEsNyBAQCBFWFRFTlNJT04gPSBpbmplY3Rpb25fcG9p bnRzCiBEQVRBID0gaW5qZWN0aW9uX3BvaW50cy0tMS4wLnNxbAogUEdGSUxFREVTQyA9ICJpbmpl Y3Rpb25fcG9pbnRzIC0gZmFjaWxpdHkgZm9yIGluamVjdGlvbiBwb2ludHMiCiAKLVJFR1JFU1Mg PSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jIGNpY19yZXNldF9zbmFwc2hv dHMKK1JFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgY2ljX3Jlc2V0X3NuYXBzaG90 cwogUkVHUkVTU19PUFRTID0gLS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0L3JlZ3Jl c3MKIAogSVNPTEFUSU9OID0gYmFzaWMgaW5wbGFjZSBzeXNjYWNoZS11cGRhdGUtcHJ1bmVkCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVp bmRleF9jb25jLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9yZWluZGV4X2NvbmMub3V0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjhkZTRi YmU4NS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL3JlaW5kZXhfY29uYy5vdXQKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBA Ci0tLSBUZXN0cyBmb3IgUkVJTkRFWCBDT05DVVJSRU5UTFkKLUNSRUFURSBFWFRFTlNJT04gaW5q ZWN0aW9uX3BvaW50czsKLS0tIENoZWNrIHNhZmV0eSBvZiBpbmRleGVzIHdpdGggcHJlZGljYXRl cyBhbmQgZXhwcmVzc2lvbnMuCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsK LSBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLSAKLSgxIHJvdykKLQotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4 LWNvbmMtaW5kZXgtc2FmZScsICdub3RpY2UnKTsKLSBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotU0VMRUNUIGluamVjdGlv bl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUnLCAnbm90aWNlJyk7 Ci0gaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g Ci0oMSByb3cpCi0KLUNSRUFURSBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1DUkVBVEUgVEFCTEUgcmVp bmRleF9pbmoudGJsKGkgaW50IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCk7Ci1D UkVBVEUgVU5JUVVFIElOREVYIGluZF9zaW1wbGUgT04gcmVpbmRleF9pbmoudGJsKGkpOwotQ1JF QVRFIFVOSVFVRSBJTkRFWCBpbmRfZXhwciBPTiByZWluZGV4X2luai50YmwoQUJTKGkpKTsKLUNS RUFURSBVTklRVUUgSU5ERVggaW5kX3ByZWQgT04gcmVpbmRleF9pbmoudGJsKGkpIFdIRVJFIG1v ZChpLCAyKSA9IDA7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9leHByX3ByZWQgT04gcmVpbmRl eF9pbmoudGJsKGFicyhpKSkgV0hFUkUgbW9kKGksIDIpID0gMDsKLVJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9zaW1wbGU7Ci1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25jLWluZGV4LXNhZmUKLVJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHByOwotTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHJlaW5kZXgtY29uYy1pbmRleC1ub3Qtc2Fm ZQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX3ByZWQ7Ci1OT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25jLWlu ZGV4LW5vdC1zYWZlCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRf ZXhwcl9wcmVkOwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHJlaW5kZXgtY29uYy1pbmRleC1ub3Qtc2FmZQotLS0gQ2xlYW51cAotU0VMRUNUIGluamVjdGlv bl9wb2ludHNfZGV0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtc2FmZScpOwotIGluamVjdGlvbl9w b2ludHNfZGV0YWNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1T RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1ub3Qtc2Fm ZScpOwotIGluamVjdGlvbl9wb2ludHNfZGV0YWNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIAotKDEgcm93KQotCi1EUk9QIFRBQkxFIHJlaW5kZXhfaW5qLnRibDsKLURST1AgU0NIRU1B IHJlaW5kZXhfaW5qOwotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCBiL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAppbmRleCA4NDc2YmZlNzJh Ny4uYmRkZjIyZGYzYWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv bWVzb24uYnVpbGQKQEAgLTM2LDcgKzM2LDYgQEAgdGVzdHMgKz0gewogICAgICdzcWwnOiBbCiAg ICAgICAnaW5qZWN0aW9uX3BvaW50cycsCiAgICAgICAnaGFzaGFnZycsCi0gICAgICAncmVpbmRl eF9jb25jJywKICAgICAgICdjaWNfcmVzZXRfc25hcHNob3RzJywKICAgICBdLAogICAgICdyZWdy ZXNzX2FyZ3MnOiBbJy0tZGxwYXRoJywgbWVzb24uYnVpbGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3Jl Z3Jlc3MnXSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9z cWwvcmVpbmRleF9jb25jLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9z cWwvcmVpbmRleF9jb25jLnNxbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNmMjEx ZTZkNWQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9zcWwvcmVpbmRleF9jb25jLnNxbAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS0t IFRlc3RzIGZvciBSRUlOREVYIENPTkNVUlJFTlRMWQotQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rp b25fcG9pbnRzOwotCi0tLSBDaGVjayBzYWZldHkgb2YgaW5kZXhlcyB3aXRoIHByZWRpY2F0ZXMg YW5kIGV4cHJlc3Npb25zLgotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7Ci1T RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1zYWZlJywg J25vdGljZScpOwotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LWNvbmMt aW5kZXgtbm90LXNhZmUnLCAnbm90aWNlJyk7Ci0KLUNSRUFURSBTQ0hFTUEgcmVpbmRleF9pbmo7 Ci1DUkVBVEUgVEFCTEUgcmVpbmRleF9pbmoudGJsKGkgaW50IHByaW1hcnkga2V5LCB1cGRhdGVk X2F0IHRpbWVzdGFtcCk7Ci0KLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3NpbXBsZSBPTiByZWlu ZGV4X2luai50YmwoaSk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9leHByIE9OIHJlaW5kZXhf aW5qLnRibChBQlMoaSkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfcHJlZCBPTiByZWluZGV4 X2luai50YmwoaSkgV0hFUkUgbW9kKGksIDIpID0gMDsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5k X2V4cHJfcHJlZCBPTiByZWluZGV4X2luai50YmwoYWJzKGkpKSBXSEVSRSBtb2QoaSwgMikgPSAw OwotCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfc2ltcGxlOwot UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX2V4cHI7Ci1SRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfcHJlZDsKLVJFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHByX3ByZWQ7Ci0KLS0tIENsZWFudXAKLVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleC1jb25jLWluZGV4LXNhZmUnKTsK LVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleC1jb25jLWluZGV4LW5vdC1z YWZlJyk7Ci1EUk9QIFRBQkxFIHJlaW5kZXhfaW5qLnRibDsKLURST1AgU0NIRU1BIHJlaW5kZXhf aW5qOwotCi1EUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotLSAKMi40My4wCgo= --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0009-Track-and-drop-auxiliary-indexes-in-DROP-REINDEX.patch" Content-Disposition: attachment; filename="v20-0009-Track-and-drop-auxiliary-indexes-in-DROP-REINDEX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogt7 RnJvbSA2ZmJhYjNjYjcwMDIyOGRmNjY0YTU5M2RkOTczZDkwODcyYzc4OGJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDA5LzEyXSBUcmFjayBhbmQgZHJvcCBhdXhpbGlhcnkgaW5kZXhlcyBpbiBEUk9Q L1JFSU5ERVgKCkR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMsIGF1eGlsaWFyeSBp bmRleGVzIG1heSBiZSBsZWZ0IGFzIG9ycGhhbmVkIG9iamVjdHMgd2hlbiBlcnJvcnMgb2NjdXIg KGp1bmsgYXV4aWxpYXJ5IGluZGV4ZXMpLgoKVGhpcyBwYXRjaCBpbXByb3ZlcyB0aGUgaGFuZGxp bmcgb2Ygc3VjaCBhdXhpbGlhcnkgaW5kZXhlczoKLSBhZGQgYXV4aWxpYXJ5Rm9ySW5kZXhJZCBw YXJhbWV0ZXIgdG8gaW5kZXhfY3JlYXRlKCkgdG8gdHJhY2sgZGVwZW5kZW5jaWVzIGJldHdlZW4g bWFpbiBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMKLSBhdXRvbWF0aWNhbGx5IGRyb3AgYXV4aWxpYXJ5 IGluZGV4ZXMgd2hlbiB0aGUgbWFpbiBpbmRleCBpcyBkcm9wcGVkCi0gZGVsZXRlIGp1bmsgYXV4 aWxpYXJ5IGluZGV4ZXMgcHJvcGVybHkgZHVyaW5nIFJFSU5ERVggb3BlcmF0aW9ucwotLS0KIGRv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgICB8ICAxNCArKy0KIGRvYy9z cmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tl bmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgfCAgNjQgKysrKysrKysrKy0tLQogc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyAgICAgICAgICAgIHwgIDU3ICsrKysrKysrKysrCiBz cmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICB8ICAzNSArKysrKystCiBzcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgfCAgNDggKysrKysrKysrLQog c3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgfCAxMDUgKysrKysrKysrKysrKysrKysr Ky0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgfCAgNTcgKysr KysrKysrKy0KIDEyIGZpbGVzIGNoYW5nZWQsIDM1OCBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbAppbmRleCBlN2E3YTE2MDc0Mi4uMjk4 YTA5M2Y1NTQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbApAQCAtNjY4LDEwICs2Njgs MTYgQEAgSW5kZXhlczoKICAgICAiaWR4X2NjYXV4IiBzdGlyIChjb2wpIElOVkFMSUQKIDwvcHJv Z3JhbWxpc3Rpbmc+CiAKLSAgICBUaGUgcmVjb21tZW5kZWQgcmVjb3ZlcnkKLSAgICBtZXRob2Qg aW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBw ZXJmb3JtCi0gICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4u IChBbm90aGVyIHBvc3NpYmlsaXR5IGlzCi0gICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8 Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4pLgorICAgIFRoZSBy ZWNvbW1lbmRlZCByZWNvdmVyeSBtZXRob2QgaW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZSBp bmRleCB3aXRoCisgICAgPGNvbW1hbmQ+RFJPUCBJTkRFWDwvY29tbWFuZD4uIFRoZSBhdXhpbGlh cnkgaW5kZXggKHN1ZmZpeGVkIHdpdGgKKyAgICA8bGl0ZXJhbD5jY2F1eDwvbGl0ZXJhbD4pIHdp bGwgYmUgYXV0b21hdGljYWxseSBkcm9wcGVkIHdoZW4gdGhlIG1haW4KKyAgICBpbmRleCBpcyBk cm9wcGVkLiBBZnRlciBkcm9wcGluZyB0aGUgaW5kZXhlcywgeW91IGNhbiB0cnkgYWdhaW4gdG8g cGVyZm9ybQorICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+ LiAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcyB0bworICAgIHJlYnVpbGQgdGhlIGluZGV4IHdpdGgg PGNvbW1hbmQ+UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+LAorICAgIHdoaWNo IHdpbGwgYWxzbyBoYW5kbGUgY2xlYW51cCBvZiBhbnkgaW52YWxpZCBhdXhpbGlhcnkgaW5kZXhl cy4pCisgICAgSWYgdGhlIG9ubHkgaW52YWxpZCBpbmRleCBpcyBvbmUgc3VmZml4ZWQgPGxpdGVy YWw+Y2NhdXg8L2xpdGVyYWw+CisgICAgcmVjb21tZW5kZWQgcmVjb3ZlcnkgbWV0aG9kIGlzIGp1 c3QgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4KKyAgICBmb3IgdGhhdCBpbmRleC4KICAg IDwvcGFyYT4KIAogICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5k ZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IDRlZDNjOTY5MDEy Li5kNjI3OTFmZjljMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAgLTQ3NywxMSArNDc3LDE1IEBA IEluZGV4ZXM6CiAgICAgPGxpdGVyYWw+X2NjbmV3PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5fY2Nh dXg8L2xpdGVyYWw+LCB0aGVuIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0cmFuc2llbnQgb3IgYXV4 aWxpYXJ5CiAgICAgaW5kZXggY3JlYXRlZCBkdXJpbmcgdGhlIGNvbmN1cnJlbnQgb3BlcmF0aW9u LCBhbmQgdGhlIHJlY29tbWVuZGVkCiAgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgdGhl c2UgaW5kZXhlcyB1c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKLSAgICB0aGVu IGF0dGVtcHQgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGFnYWluLgor ICAgIHRoZW4gYXR0ZW1wdCA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4g YWdhaW4uIFRoZSBhdXhpbGlhcnkgaW5kZXgKKyAgICAoc3VmZml4ZWQgd2l0aCA8bGl0ZXJhbD5f Y2NhdXg8L2xpdGVyYWw+KSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZAorICAgIGFsb25n IHdpdGggaXRzIG1haW4gaW5kZXguCiAgICAgSWYgdGhlIGludmFsaWQgaW5kZXggaXMgaW5zdGVh ZCBzdWZmaXhlZCA8bGl0ZXJhbD5fY2NvbGQ8L2xpdGVyYWw+LAogICAgIGl0IGNvcnJlc3BvbmRz IHRvIHRoZSBvcmlnaW5hbCBpbmRleCB3aGljaCBjb3VsZCBub3QgYmUgZHJvcHBlZDsKICAgICB0 aGUgcmVjb21tZW5kZWQgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGp1c3QgZHJvcCBzYWlkIGluZGV4 LCBzaW5jZSB0aGUKLSAgICByZWJ1aWxkIHByb3BlciBoYXMgYmVlbiBzdWNjZXNzZnVsLgorICAg IHJlYnVpbGQgcHJvcGVyIGhhcyBiZWVuIHN1Y2Nlc3NmdWwuIElmIHRoZSBvbmx5CisgICAgaW52 YWxpZCBpbmRleCBpcyBvbmUgc3VmZml4ZWQgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+IHJlY29t bWVuZGVkCisgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIGp1c3QgPGxpdGVyYWw+RFJPUCBJTkRFWDwv bGl0ZXJhbD4gZm9yIHRoYXQgaW5kZXguCiAgICAgQSBub256ZXJvIG51bWJlciBtYXkgYmUgYXBw ZW5kZWQgdG8gdGhlIHN1ZmZpeCBvZiB0aGUgaW52YWxpZCBpbmRleAogICAgIG5hbWVzIHRvIGtl ZXAgdGhlbSB1bmlxdWUsIGxpa2UgPGxpdGVyYWw+X2NjbmV3MTwvbGl0ZXJhbD4sCiAgICAgPGxp dGVyYWw+X2Njb2xkMjwvbGl0ZXJhbD4sIGV0Yy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5k ZXggMTgzMTZhMzk2OGIuLmFiNGMzZTJmYjRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpA QCAtMjg2LDcgKzI4Niw3IEBAIHBlcmZvcm1EZWxldGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpv YmplY3QsCiAJICogQWNxdWlyZSBkZWxldGlvbiBsb2NrIG9uIHRoZSB0YXJnZXQgb2JqZWN0LiAg KElkZWFsbHkgdGhlIGNhbGxlciBoYXMKIAkgKiBkb25lIHRoaXMgYWxyZWFkeSwgYnV0IG1hbnkg cGxhY2VzIGFyZSBzbG9wcHkgYWJvdXQgaXQuKQogCSAqLwotCUFjcXVpcmVEZWxldGlvbkxvY2so b2JqZWN0LCAwKTsKKwlBY3F1aXJlRGVsZXRpb25Mb2NrKG9iamVjdCwgZmxhZ3MpOwogCiAJLyoK IAkgKiBDb25zdHJ1Y3QgYSBsaXN0IG9mIG9iamVjdHMgdG8gZGVsZXRlIChpZSwgdGhlIGdpdmVu IG9iamVjdCBwbHVzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNmMwOWM2YTJiNjcuLmJmMGJiNzk0NzRi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCkBAIC02ODgsNiArNjg4LDggQEAgVXBkYXRlSW5kZXhSZWxhdGlv bihPaWQgaW5kZXhvaWQsCiAgKgkJcGFyZW50IGluZGV4OyBvdGhlcndpc2UgSW52YWxpZE9pZC4K ICAqIHBhcmVudENvbnN0cmFpbnRJZDogaWYgY3JlYXRpbmcgYSBjb25zdHJhaW50IG9uIGEgcGFy dGl0aW9uLCB0aGUgT0lECiAgKgkJb2YgdGhlIGNvbnN0cmFpbnQgaW4gdGhlIHBhcmVudDsgb3Ro ZXJ3aXNlIEludmFsaWRPaWQuCisgKiBhdXhpbGlhcnlGb3JJbmRleElkOiBpZiBjcmVhdGluZyBh dXhpbGlhcnkgaW5kZXgsIHRoZSBPSUQgb2YgdGhlIG1haW4KKyAqCQlpbmRleDsgb3RoZXJ3aXNl IEludmFsaWRPaWQuCiAgKiByZWxGaWxlTnVtYmVyOiBub3JtYWxseSwgcGFzcyBJbnZhbGlkUmVs RmlsZU51bWJlciB0byBnZXQgbmV3IHN0b3JhZ2UuCiAgKgkJTWF5IGJlIG5vbnplcm8gdG8gYXR0 YWNoIGFuIGV4aXN0aW5nIHZhbGlkIGJ1aWxkLgogICogaW5kZXhJbmZvOiBzYW1lIGluZm8gZXhl Y3V0b3IgdXNlcyB0byBpbnNlcnQgaW50byB0aGUgaW5kZXgKQEAgLTczNCw2ICs3MzYsNyBAQCBp bmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJIE9pZCBpbmRleFJlbGF0aW9u SWQsCiAJCQkgT2lkIHBhcmVudEluZGV4UmVsaWQsCiAJCQkgT2lkIHBhcmVudENvbnN0cmFpbnRJ ZCwKKwkJCSBPaWQgYXV4aWxpYXJ5Rm9ySW5kZXhJZCwKIAkJCSBSZWxGaWxlTnVtYmVyIHJlbEZp bGVOdW1iZXIsCiAJCQkgSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkgY29uc3QgTGlzdCAqaW5k ZXhDb2xOYW1lcywKQEAgLTc3Niw2ICs3NzksOCBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCQkgICAoKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0FERF9DT05TVFJBSU5UKSAh PSAwKSk7CiAJLyogcGFydGl0aW9uZWQgaW5kZXhlcyBtdXN0IG5ldmVyIGJlICJidWlsdCIgYnkg dGhlbXNlbHZlcyAqLwogCUFzc2VydCghcGFydGl0aW9uZWQgfHwgKGZsYWdzICYgSU5ERVhfQ1JF QVRFX1NLSVBfQlVJTEQpKTsKKwkvKiBhdXhpbGlhcnlGb3JJbmRleElkIGFuZCBJTkRFWF9DUkVB VEVfQVVYSUxJQVJZIGFyZSByZXF1aXJlZCBib3RoIG9yIG5laXRoZXIgKi8KKwlBc3NlcnQoT2lk SXNWYWxpZChhdXhpbGlhcnlGb3JJbmRleElkKSA9PSBhdXhpbGlhcnkpOwogCiAJcmVsa2luZCA9 IHBhcnRpdGlvbmVkID8gUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCA6IFJFTEtJTkRfSU5ERVg7 CiAJaXNfZXhjbHVzaW9uID0gKGluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwpOwpA QCAtMTE3Nyw2ICsxMTgyLDE1IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJCQlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lf UEFSVElUSU9OX1NFQyk7CiAJCX0KIAorCQkvKgorCQkgKiBSZWNvcmQgZGVwZW5kZW5jeSBvbiB0 aGUgbWFpbiBpbmRleCBpbiBjYXNlIG9mIGF1eGlsaWFyeSBpbmRleC4KKwkJICovCisJCWlmIChP aWRJc1ZhbGlkKGF1eGlsaWFyeUZvckluZGV4SWQpKQorCQl7CisJCQlPYmplY3RBZGRyZXNzU2V0 KHJlZmVyZW5jZWQsIFJlbGF0aW9uUmVsYXRpb25JZCwgYXV4aWxpYXJ5Rm9ySW5kZXhJZCk7CisJ CQlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfQVVU Tyk7CisJCX0KKwogCQkvKiBwbGFjZWhvbGRlciBmb3Igbm9ybWFsIGRlcGVuZGVuY2llcyAqLwog CQlhZGRycyA9IG5ld19vYmplY3RfYWRkcmVzc2VzKCk7CiAKQEAgLTE0NTksNiArMTQ3Myw3IEBA IGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9p ZCBvbGRJbmRleElkLAogCQkJCQkJCSAgSW52YWxpZE9pZCwJLyogaW5kZXhSZWxhdGlvbklkICov CiAJCQkJCQkJICBJbnZhbGlkT2lkLAkvKiBwYXJlbnRJbmRleFJlbGlkICovCiAJCQkJCQkJICBJ bnZhbGlkT2lkLAkvKiBwYXJlbnRDb25zdHJhaW50SWQgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQs CS8qIGF1eGlsaWFyeUZvckluZGV4SWQgKi8KIAkJCQkJCQkgIEludmFsaWRSZWxGaWxlTnVtYmVy LCAvKiByZWxGaWxlTnVtYmVyICovCiAJCQkJCQkJICBuZXdJbmZvLAogCQkJCQkJCSAgaW5kZXhD b2xOYW1lcywKQEAgLTE2MDksNiArMTYyNCw3IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVf YXV4KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG1haW5JbmRleElkLAogCQkJCQkJCSAgSW52 YWxpZE9pZCwgICAgLyogaW5kZXhSZWxhdGlvbklkICovCiAJCQkJCQkJICBJbnZhbGlkT2lkLCAg ICAvKiBwYXJlbnRJbmRleFJlbGlkICovCiAJCQkJCQkJICBJbnZhbGlkT2lkLCAgICAvKiBwYXJl bnRDb25zdHJhaW50SWQgKi8KKwkJCQkJCQkgIG1haW5JbmRleElkLCAgIC8qIGF1eGlsaWFyeUZv ckluZGV4SWQgKi8KIAkJCQkJCQkgIEludmFsaWRSZWxGaWxlTnVtYmVyLCAvKiByZWxGaWxlTnVt YmVyICovCiAJCQkJCQkJICBuZXdJbmZvLAogCQkJCQkJCSAgaW5kZXhDb2xOYW1lcywKQEAgLTM4 NDIsNiArMzg1OCw3IEBAIHJlaW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCBpbmRleElkLAogCQkJCWhlYXBSZWxhdGlvbjsKIAlPaWQJCQloZWFwSWQ7CiAJT2lkCQkJc2F2 ZV91c2VyaWQ7CisJT2lkCQkJanVua0F1eEluZGV4SWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4 dDsKIAlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAlJbmRleEluZm8gICppbmRleEluZm87CkBAIC0z ODk4LDYgKzM5MTUsMTkgQEAgcmVpbmRleF9pbmRleChjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIGluZGV4SWQsCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMiwgcHJv Z3Jlc3NfY29scywgcHJvZ3Jlc3NfdmFscyk7CiAJfQogCisJLyogQ2hlY2sgZm9yIHRoZSBhdXhp bGlhcnkgaW5kZXggZm9yIHRoYXQgaW5kZXgsIGl0IG5lZWRzIHRvIGRyb3BwZWQgKi8KKwlqdW5r QXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaW5kZXhJZCk7CisJaWYgKE9pZElzVmFs aWQoanVua0F1eEluZGV4SWQpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisJCW9iamVj dC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQlvYmplY3Qub2JqZWN0SWQgPSBqdW5r QXV4SW5kZXhJZDsKKwkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJcGVyZm9ybURlbGV0aW9u KCZvYmplY3QsIERST1BfUkVTVFJJQ1QsCisJCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVS TkFMIHwKKwkJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05fUVVJRVRMWSk7CisJfQorCiAJLyoKIAkg KiBPcGVuIHRoZSB0YXJnZXQgaW5kZXggcmVsYXRpb24gYW5kIGdldCBhbiBleGNsdXNpdmUgbG9j ayBvbiBpdCwgdG8KIAkgKiBlbnN1cmUgdGhhdCBubyBvbmUgZWxzZSBpcyB0b3VjaGluZyB0aGlz IHBhcnRpY3VsYXIgaW5kZXguCkBAIC00MTg2LDcgKzQyMTYsOCBAQCByZWluZGV4X3JlbGF0aW9u KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBmbGFncywKIHsKIAlSZWxh dGlvbglyZWw7CiAJT2lkCQkJdG9hc3RfcmVsaWQ7Ci0JTGlzdAkgICAqaW5kZXhJZHM7CisJTGlz dAkgICAqaW5kZXhJZHMsCisJCQkgICAqYXV4SW5kZXhJZHMgPSBOSUw7CiAJY2hhcgkJcGVyc2lz dGVuY2U7CiAJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CiAJTGlzdENlbGwgICAqaW5kZXhJZDsKQEAg LTQyNzUsMTMgKzQzMDYsMzAgQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAq c3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJZWxzZQogCQlwZXJzaXN0ZW5jZSA9IHJlbC0+ cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKIAorCWZvcmVhY2goaW5kZXhJZCwgaW5kZXhJZHMpCisJ eworCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXhJZCk7CisJCU9pZAkJCWluZGV4 QW0gPSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKKworCQkvKiBBbGwgU1RJUiBpbmRleGVzIGFy ZSBhdXhpbGlhcnkgaW5kZXhlcyAqLworCQlpZiAoaW5kZXhBbSA9PSBTVElSX0FNX09JRCkKKwkJ eworCQkJaWYgKGZsYWdzICYgUkVJTkRFWF9SRUxfU1VQUFJFU1NfSU5ERVhfVVNFKQorCQkJCVJl bW92ZVJlaW5kZXhQZW5kaW5nKGluZGV4T2lkKTsKKwkJCWF1eEluZGV4SWRzID0gbGFwcGVuZF9v aWQoYXV4SW5kZXhJZHMsIGluZGV4T2lkKTsKKwkJfQorCX0KKwogCS8qIFJlaW5kZXggYWxsIHRo ZSBpbmRleGVzLiAqLwogCWkgPSAxOwogCWZvcmVhY2goaW5kZXhJZCwgaW5kZXhJZHMpCiAJewog CQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXhJZCk7CiAJCU9pZAkJCWluZGV4TmFt ZXNwYWNlSWQgPSBnZXRfcmVsX25hbWVzcGFjZShpbmRleE9pZCk7Ci0JCU9pZAkJCWluZGV4QW0g PSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKKworCQkvKiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUg Z29pbmcgdG8gYmUgZHJvcHBlZCBkdXJpbmcgbWFpbiBpbmRleCByZWJ1aWxkICovCisJCWlmIChs aXN0X21lbWJlcl9vaWQoYXV4SW5kZXhJZHMsIGluZGV4T2lkKSkKKwkJCWNvbnRpbnVlOwogCiAJ CS8qCiAJCSAqIFNraXAgYW55IGludmFsaWQgaW5kZXhlcyBvbiBhIFRPQVNUIHRhYmxlLiAgVGhl c2UgY2FuIG9ubHkgYmUKQEAgLTQzMDcsMTggKzQzNTUsNiBAQCByZWluZGV4X3JlbGF0aW9uKGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBmbGFncywKIAkJCWNvbnRpbnVl OwogCQl9CiAKLQkJaWYgKGluZGV4QW0gPT0gU1RJUl9BTV9PSUQpCi0JCXsKLQkJCWVyZXBvcnQo V0FSTklORywKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAot CQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzLiVz XCIiLAotCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShpbmRleE5hbWVzcGFjZUlkKSwKLQkJCQkJ CQlnZXRfcmVsX25hbWUoaW5kZXhPaWQpKSkpOwotCQkJaWYgKGZsYWdzICYgUkVJTkRFWF9SRUxf U1VQUFJFU1NfSU5ERVhfVVNFKQotCQkJCVJlbW92ZVJlaW5kZXhQZW5kaW5nKGluZGV4T2lkKTsK LQkJCWNvbnRpbnVlOwotCQl9Ci0KIAkJcmVpbmRleF9pbmRleChzdG10LCBpbmRleE9pZCwgIShm bGFncyAmIFJFSU5ERVhfUkVMX0NIRUNLX0NPTlNUUkFJTlRTKSwKIAkJCQkJICBwZXJzaXN0ZW5j ZSwgcGFyYW1zKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQu YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMKaW5kZXggYzhiMTFmODg3ZTIuLjFj Mjc1ZWYzNzNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2RlcGVuZC5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMKQEAgLTEwMzUsNiArMTAzNSw2MyBA QCBnZXRfaW5kZXhfY29uc3RyYWludChPaWQgaW5kZXhJZCkKIAlyZXR1cm4gY29uc3RyYWludElk OwogfQogCisvKgorICogZ2V0X2F1eGlsaWFyeV9pbmRleAorICoJCUdpdmVuIHRoZSBPSUQgb2Yg YW4gaW5kZXgsIHJldHVybiB0aGUgT0lEIG9mIGl0cyBhdXhpbGlhcnkKKyAqCQlpbmRleCwgb3Ig SW52YWxpZE9pZCBpZiB0aGVyZSBpcyBubyBhdXhpbGlhcnkgaW5kZXguCisgKi8KK09pZAorZ2V0 X2F1eGlsaWFyeV9pbmRleChPaWQgaW5kZXhJZCkKK3sKKwlPaWQJCQlhdXhpbGlhcnlJbmRleE9p ZCA9IEludmFsaWRPaWQ7CisJUmVsYXRpb24JZGVwUmVsOworCVNjYW5LZXlEYXRhIGtleVszXTsK KwlTeXNTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXA7CisKKwkvKiBTZWFyY2ggdGhlIGRl cGVuZGVuY3kgdGFibGUgZm9yIHRoZSBpbmRleCAqLworCWRlcFJlbCA9IHRhYmxlX29wZW4oRGVw ZW5kUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZrZXlbMF0s CisJCQkJQW51bV9wZ19kZXBlbmRfcmVmY2xhc3NpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvblJlbGF0aW9uSWQpKTsK KwlTY2FuS2V5SW5pdCgma2V5WzFdLAorCQkJCUFudW1fcGdfZGVwZW5kX3JlZm9iamlkLAorCQkJ CUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKGlu ZGV4SWQpKTsKKwlTY2FuS2V5SW5pdCgma2V5WzJdLAorCQkJCUFudW1fcGdfZGVwZW5kX3JlZm9i anN1YmlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9JTlQ0RVEsCisJCQkJSW50MzJH ZXREYXR1bSgwKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKGRlcFJlbCwgRGVwZW5k UmVmZXJlbmNlSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDMsIGtleSk7CisKKworCXdo aWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsK KwkJRm9ybV9wZ19kZXBlbmQgZGVwcmVjID0gKEZvcm1fcGdfZGVwZW5kKSBHRVRTVFJVQ1QodHVw KTsKKworCQkvKgorCQkgKiBXZSBhc3N1bWUgYW55IEFVVE8gZGVwZW5kZW5jeSBvbiBpbmRleCB3 aXRoIHJlbF9raW5kCisJCSAqIG9mIFJFTEtJTkRfSU5ERVggaXMgdGhhdCB3ZSBhcmUgbG9va2lu ZyBmb3IuCisJCSAqLworCQlpZiAoZGVwcmVjLT5jbGFzc2lkID09IFJlbGF0aW9uUmVsYXRpb25J ZCAmJgorCQkJKGRlcHJlYy0+ZGVwdHlwZSA9PSBERVBFTkRFTkNZX0FVVE8pICYmCisJCQlnZXRf cmVsX3JlbGtpbmQoZGVwcmVjLT5vYmppZCkgPT0gUkVMS0lORF9JTkRFWCkKKwkJeworCQkJYXV4 aWxpYXJ5SW5kZXhPaWQgPSBkZXByZWMtPm9iamlkOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlz eXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKGRlcFJlbCwgQWNjZXNzU2hhcmVM b2NrKTsKKworCXJldHVybiBhdXhpbGlhcnlJbmRleE9pZDsKK30KKwogLyoKICAqIGdldF9pbmRl eF9yZWZfY29uc3RyYWludHMKICAqCQlHaXZlbiB0aGUgT0lEIG9mIGFuIGluZGV4LCByZXR1cm4g dGhlIE9JRCBvZiBhbGwgZm9yZWlnbiBrZXkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwppbmRleCAwZWUy ZmQ1ZTdkZS4uMGVlOGNiZjRjYTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9h c3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKQEAgLTMxOSw3ICsz MTksNyBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRpb24gcmVsLCBPaWQgdG9hc3RPaWQsIE9p ZCB0b2FzdEluZGV4T2lkLAogCWNvbG9wdGlvbnNbMV0gPSAwOwogCiAJaW5kZXhfY3JlYXRlKHRv YXN0X3JlbCwgdG9hc3RfaWR4bmFtZSwgdG9hc3RJbmRleE9pZCwgSW52YWxpZE9pZCwKLQkJCQkg SW52YWxpZE9pZCwgSW52YWxpZE9pZCwKKwkJCQkgSW52YWxpZE9pZCwgSW52YWxpZE9pZCwgSW52 YWxpZE9pZCwKIAkJCQkgaW5kZXhJbmZvLAogCQkJCSBsaXN0X21ha2UyKCJjaHVua19pZCIsICJj aHVua19zZXEiKSwKIAkJCQkgQlRSRUVfQU1fT0lELApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpp bmRleCA2NWZhN2ZkNzRlMC4uMzU0Y2U4ZGQ0NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j CkBAIC0xMjYwLDcgKzEyNjAsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCWluZGV4 UmVsYXRpb25JZCA9CiAJCWluZGV4X2NyZWF0ZShyZWwsIGluZGV4UmVsYXRpb25OYW1lLCBpbmRl eFJlbGF0aW9uSWQsIHBhcmVudEluZGV4SWQsCi0JCQkJCSBwYXJlbnRDb25zdHJhaW50SWQsCisJ CQkJCSBwYXJlbnRDb25zdHJhaW50SWQsIEludmFsaWRPaWQsCiAJCQkJCSBzdG10LT5vbGROdW1i ZXIsIGluZGV4SW5mbywgaW5kZXhDb2xOYW1lcywKIAkJCQkJIGFjY2Vzc01ldGhvZElkLCB0YWJs ZXNwYWNlSWQsCiAJCQkJCSBjb2xsYXRpb25JZHMsIG9wY2xhc3NJZHMsIG9wY2xhc3NPcHRpb25z LApAQCAtMzYzOSw2ICszNjM5LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAl7CiAJCU9p ZAkJCWluZGV4SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJbmRleElk OwogCQlPaWQJCQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwogCQlib29sCQlzYWZlOwkJLyogZm9y IHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzICovCkBAIC0zOTg4LDYgKzM5ODksNyBAQCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlv bk9pZCwgY29uc3QgUmVpbgogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJCU9pZAkJCW5l d0luZGV4SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJbmRleElkOwog CQlSZWxhdGlvbglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJT2lkCQkJc2F2ZV91 c2VyaWQ7CkBAIC0zOTk1LDYgKzM5OTcsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlp bnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CiAJCVJlbGF0aW9u CWF1eEluZGV4UmVsOworCQlSZWxhdGlvbglqdW5rQXV4SW5kZXhSZWw7CiAJCUxvY2tSZWxJZCAg KmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwogCkBAIC00MDY4LDEyICs0MDcxLDE3 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkgICB0YWJsZXNwYWNlaWQs CiAJCQkJCQkJCQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKKwkJLyogU2VhcmNoIGZvciBh dXhpbGlhcnkgaW5kZXggZm9yIHJlaW5kZXhlZCBpbmRleCwgdG8gZHJvcCBpdCAqLworCQlqdW5r QXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaWR4LT5pbmRleElkKTsKKwogCQkvKgog CQkgKiBOb3cgb3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwgYSBzZXNzaW9uLWxl dmVsIGxvY2sgaXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwogCQluZXdJbmRleFJl bCA9IGluZGV4X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAkJ YXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZl TG9jayk7CisJCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWp1bmtBdXhJbmRl eFJlbCA9IGluZGV4X29wZW4oanVua0F1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9j ayk7CiAKIAkJLyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFuZCBsb2NrcyBpbiBwcml2 YXRlIGNvbnRleHQKQEAgLTQwODMsNiArNDA5MSw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJCW5ld2lkeC0+ aW5kZXhJZCA9IG5ld0luZGV4SWQ7CiAJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1eEluZGV4SWQ7 CisJCW5ld2lkeC0+anVua0F1eEluZGV4SWQgPSBqdW5rQXV4SW5kZXhJZDsKIAkJbmV3aWR4LT5z YWZlID0gaWR4LT5zYWZlOwogCQluZXdpZHgtPnRhYmxlSWQgPSBpZHgtPnRhYmxlSWQ7CiAJCW5l d2lkeC0+YW1JZCA9IGlkeC0+YW1JZDsKQEAgLTQxMDQsMTAgKzQxMTMsMTggQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25P aWQsIGNvbnN0IFJlaW4KIAkJbG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOwog CQkqbG9ja3JlbGlkID0gYXV4SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKIAkJcmVs YXRpb25Mb2NrcyA9IGxhcHBlbmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJaWYgKE9p ZElzVmFsaWQoanVua0F1eEluZGV4SWQpKQorCQl7CisJCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2Jq ZWN0KExvY2tSZWxJZCk7CisJCQkqbG9ja3JlbGlkID0ganVua0F1eEluZGV4UmVsLT5yZF9sb2Nr SW5mby5sb2NrUmVsSWQ7CisJCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tz LCBsb2NrcmVsaWQpOworCQl9CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OwogCiAJCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBOb0xvY2spOworCQlpZiAoT2lkSXNWYWxpZChq dW5rQXV4SW5kZXhJZCkpCisJCQlpbmRleF9jbG9zZShqdW5rQXV4SW5kZXhSZWwsIE5vTG9jayk7 CiAJCWluZGV4X2Nsb3NlKGF1eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShuZXdJ bmRleFJlbCwgTm9Mb2NrKTsKIApAQCAtNDI4OCw3ICs0MzA1LDggQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAogCS8qCiAJICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFy ZSBtYXJrZWQgYXMgInJlYWR5LXRvLWluc2VydCIuIFNvLAotCSAqIHdlIGFyZSBmcmVlIHRvIHN0 YXJ0IHByb2Nlc3Mgb2YgZHJvcHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICogd2UgYXJlIGZy ZWUgdG8gc3RhcnQgcHJvY2VzcyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcyAtIGluY2x1 ZGluZworCSAqIGp1c3QgaW5kZXhlcyBkZXRlY3RlZCBlYXJsaWVyLgogCSAqLwogCWZvcmVhY2go bGMsIG5ld0luZGV4SWRzKQogCXsKQEAgLTQzMTEsNiArNDMyOSw5IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCSAqLwogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKIAkJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5E RVhfRFJPUF9DTEVBUl9SRUFEWSk7CisJCS8qIEVuc3VyZSBqdXN0IGluZGV4IGlzIG1hcmtlZCBh cyBub24tcmVhZHkgKi8KKwkJaWYgKE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCkp CisJCQlpbmRleF9zZXRfc3RhdGVfZmxhZ3MobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCwgSU5ERVhf RFJPUF9DTEVBUl9SRUFEWSk7CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CkBAIC00NTI5LDYgKzQ1NTAsOCBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK IAogCQlpbmRleF9jb25jdXJyZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgt PmF1eEluZGV4SWQpOworCQlpZiAoT2lkSXNWYWxpZChuZXdpZHgtPmp1bmtBdXhJbmRleElkKSkK KwkJCWluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+ anVua0F1eEluZGV4SWQpOwogCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQpAQCAtNDU4MCw2 ICs0NjAzLDE0IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQlvYmplY3Qub2JqZWN0U3Vi SWQgPSAwOwogCiAJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7 CisKKwkJCWlmIChPaWRJc1ZhbGlkKGlkeC0+anVua0F1eEluZGV4SWQpKQorCQkJeworCisJCQkJ b2JqZWN0Lm9iamVjdElkID0gaWR4LT5qdW5rQXV4SW5kZXhJZDsKKwkJCQlvYmplY3Qub2JqZWN0 U3ViSWQgPSAwOworCQkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3Rz KTsKKwkJCX0KIAkJfQogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDU0YWQz ODI0N2FhLi5hMTA0M2MxODNmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE1MzIs NiArMTUzMiw4IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAlMaXN0Q2VsbCAg ICpjZWxsOwogCWludAkJCWZsYWdzID0gMDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFjY2Vzc0V4 Y2x1c2l2ZUxvY2s7CisJTWVtb3J5Q29udGV4dCBwcml2YXRlX2NvbnRleHQsCisJCQkJICBvbGRj b250ZXh0OwogCiAJLyogRFJPUCBDT05DVVJSRU5UTFkgdXNlcyBhIHdlYWtlciBsb2NrLCBhbmQg aGFzIHNvbWUgcmVzdHJpY3Rpb25zICovCiAJaWYgKGRyb3AtPmNvbmN1cnJlbnQpCkBAIC0xNTky LDkgKzE1OTQsMjAgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQogCQkJcmVsa2lu ZCA9IDA7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAJCQlicmVhazsKIAl9CisJLyoKKwkg KiBDcmVhdGUgYSBtZW1vcnkgY29udGV4dCB0aGF0IHdpbGwgc3Vydml2ZSBmb3JjZWQgdHJhbnNh Y3Rpb24gY29tbWl0cyB3ZQorCSAqIG1heSBuZWVkIHRvIGRvIGJlbG93IChpbiBjYXNlIG9mIGNv bmN1cnJlbnQgaW5kZXggZHJvcCkuCisJICogU2luY2UgaXQgaXMgYSBjaGlsZCBvZiBQb3J0YWxD b250ZXh0LCBpdCB3aWxsIGdvIGF3YXkgZXZlbnR1YWxseSBldmVuIGlmCisJICogd2Ugc3VmZmVy IGFuIGVycm9yOyB0aGVyZSdzIG5vIG5lZWQgZm9yIHNwZWNpYWwgYWJvcnQgY2xlYW51cCBsb2dp Yy4KKwkgKi8KKwlwcml2YXRlX2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoUG9ydGFs Q29udGV4dCwKKwkJCQkJCQkJCQkJIlJlbW92ZVJlbGF0aW9ucyIsCisJCQkJCQkJCQkJCUFMTE9D U0VUX1NNQUxMX1NJWkVTKTsKIAorCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8o cHJpdmF0ZV9jb250ZXh0KTsKIAkvKiBMb2NrIGFuZCB2YWxpZGF0ZSBlYWNoIHJlbGF0aW9uOyBi dWlsZCBhIGxpc3Qgb2Ygb2JqZWN0IGFkZHJlc3NlcyAqLwogCW9iamVjdHMgPSBuZXdfb2JqZWN0 X2FkZHJlc3NlcygpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCWZv cmVhY2goY2VsbCwgZHJvcC0+b2JqZWN0cykKIAl7CkBAIC0xNjQ2LDYgKzE2NTksMzQgQEAgUmVt b3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQogCQkJZmxhZ3MgfD0gUEVSRk9STV9ERUxFVElP Tl9DT05DVVJSRU5UTFk7CiAJCX0KIAorCQkvKgorCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3Ag cmVxdWlyZXMgdG8gYmUgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiBCdXQgaW4KKwkJICogY2FzZSB3 ZSBoYXZlIGp1bmsgYXV4aWxpYXJ5IGluZGV4IC0gd2Ugd2FudCB0byBkcm9wIGl0IHRvbyAoYW5k IGFsc28KKwkJICogaW4gYSBjb25jdXJyZW50IHdheSkuIEluIHRoaXMgY2FzZSBwZXJmb3JtIHNp bGVudCBpbnRlcm5hbCBkZWxldGlvbgorCQkgKiBvZiBhdXhpbGlhcnkgaW5kZXgsIGFuZCByZXN0 b3JlIHRyYW5zYWN0aW9uIHN0YXRlLiBJdCBpcyBmaW5lIHRvIGRvIGl0CisJCSAqIGluIHRoZSBs b29wIGJlY2F1c2UgdGhlcmUgaXMgb25seSBzaW5nbGUgZWxlbWVudCBpbiBkcm9wLT5vYmplY3Rz LgorCQkgKi8KKwkJaWYgKChmbGFncyAmIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVExZKSAh PSAwICYmCisJCQlzdGF0ZS5hY3R1YWxfcmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQorCQl7CisJ CQlPaWQganVua0F1eEluZGV4T2lkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChyZWxPaWQpOworCQkJ aWYgKE9pZElzVmFsaWQoanVua0F1eEluZGV4T2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNz IG9iamVjdDsKKwkJCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlv YmplY3Qub2JqZWN0SWQgPSBqdW5rQXV4SW5kZXhPaWQ7CisJCQkJb2JqZWN0Lm9iamVjdFN1Yklk ID0gMDsKKwkJCQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwKKwkJCQkJ CQkJCQkgUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UTFkgfAorCQkJCQkJCQkJCSBQRVJGT1JN X0RFTEVUSU9OX0lOVEVSTkFMIHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9RVUlFVExZ KTsKKwkJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlTdGFydFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCQkJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCQkJCVByZXZlbnRJblRyYW5zYWN0aW9uQmxvY2sodHJ1ZSwgIkRST1AgSU5ERVggQ09O Q1VSUkVOVExZIik7CisJCQl9CisJCX0KKwogCQkvKgogCQkgKiBDb25jdXJyZW50IGluZGV4IGRy b3AgY2Fubm90IGJlIHVzZWQgd2l0aCBwYXJ0aXRpb25lZCBpbmRleGVzLAogCQkgKiBlaXRoZXIu CkBAIC0xNjc0LDEyICsxNzE1LDE3IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkK IAkJb2JqLm9iamVjdElkID0gcmVsT2lkOwogCQlvYmoub2JqZWN0U3ViSWQgPSAwOwogCisJCW9s ZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAkJYWRk X2V4YWN0X29iamVjdF9hZGRyZXNzKCZvYmosIG9iamVjdHMpOworCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7CiAJfQogCisJLyogRGVsZXRpb24gbWF5IGludm9sdmUgbXVsdGlw bGUgY29tbWl0cywgc28sIHN3aXRjaCB0byBtZW1vcnkgY29udGV4dCAqLworCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAlwZXJmb3JtTXVsdGlw bGVEZWxldGlvbnMob2JqZWN0cywgZHJvcC0+YmVoYXZpb3IsIGZsYWdzKTsKKwlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKLQlmcmVlX29iamVjdF9hZGRyZXNzZXMob2JqZWN0 cyk7CisJTWVtb3J5Q29udGV4dERlbGV0ZShwcml2YXRlX2NvbnRleHQpOwogfQogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL2RlcGVuZGVuY3kuaAppbmRleCAwZWE3Y2NmNTI0My4uMDJiY2Y1ZTkzMTUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC0xODAsNiArMTgwLDcgQEAgZXh0ZXJuIExpc3QgKmdl dE93bmVkU2VxdWVuY2VzKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldElkZW50aXR5U2VxdWVu Y2UoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwgYm9vbCBtaXNzaW5nX29rKTsKIAog ZXh0ZXJuIE9pZAlnZXRfaW5kZXhfY29uc3RyYWludChPaWQgaW5kZXhJZCk7CitleHRlcm4gT2lk CWdldF9hdXhpbGlhcnlfaW5kZXgoT2lkIGluZGV4SWQpOwogCiBleHRlcm4gTGlzdCAqZ2V0X2lu ZGV4X3JlZl9jb25zdHJhaW50cyhPaWQgaW5kZXhJZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCA0 NzEzZjE4ZTY4ZC4uNTNiMmIxM2VmYzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv aW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTczLDYgKzczLDcg QEAgZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJ IE9pZCBpbmRleFJlbGF0aW9uSWQsCiAJCQkJCQkgT2lkIHBhcmVudEluZGV4UmVsaWQsCiAJCQkJ CQkgT2lkIHBhcmVudENvbnN0cmFpbnRJZCwKKwkJCQkJCSBPaWQgYXV4aWxpYXJ5Rm9ySW5kZXhJ ZCwKIAkJCQkJCSBSZWxGaWxlTnVtYmVyIHJlbEZpbGVOdW1iZXIsCiAJCQkJCQkgSW5kZXhJbmZv ICppbmRleEluZm8sCiAJCQkJCQkgY29uc3QgTGlzdCAqaW5kZXhDb2xOYW1lcywKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAppbmRleCBjYTc0ODQ0YjVjNi4uYWNh NmVjNTdhZDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2lu ZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQK QEAgLTMyNjUsMjAgKzMyNjUsMTA5IEBAIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5k ZXggImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiBSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNl9jY2F1eDsKIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhp bGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiAtLSBUaGlz IG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVj b21lIHZhbGlkLgotREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7 Ci1FUlJPUjogIHJlbGF0aW9uICJjb25jdXJfcmVpbmRleF90YWI0IiBkb2VzIG5vdCBleGlzdAot TElORSAxOiBERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKLSAg ICAgICAgICAgICAgICAgICAgXgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEg PSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JF SU5ERVggSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRy b3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2lu ZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVm YXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoK KyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRyZWUgKGMxKQorCitEUk9QIElOREVYIGF1 eF9pbmRleF9pbmQ2OworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1 eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFn YWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBh dXhfaW5kZXhfdGFiNSAoYzEpOworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRl eCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4K Ky0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4 IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9 IDE7CiAtLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAotUkVJTkRFWCBUQUJMRSBh dXhfaW5kZXhfdGFiNTsKLUVSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1 eF9pbmRleF9pbmQ2IgotREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCi0tLSBT aG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxF IENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKIFdBUk5JTkc6ICBza2lwcGluZyByZWluZGV4 IG9mIGludmFsaWQgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKIEhJTlQ6ICBVc2UgRFJP UCBJTkRFWCBvciBSRUlOREVYIElOREVYLgogV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2Yg YXV4aWxpYXJ5IGluZGV4ICJwdWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCiBOT1RJQ0U6ICB0 YWJsZSAiYXV4X2luZGV4X3RhYjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJlIHJlaW5kZXhl ZCBjb25jdXJyZW50bHkKKy0tIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9p bmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4 X2luZDYiIFVOSVFVRSwgYnRyZWUgKGMxKSBJTlZBTElECisgICAgImF1eF9pbmRleF9pbmQ2X2Nj YXV4IiBzdGlyIChjMSkgSU5WQUxJRAorCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVp bmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ug c3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAg VGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAo YzEpCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBh Z2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3Jl YXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZ IGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5v dCBjcmVhdGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEp PSgxKSBpcyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBn byBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9p bmRleF90YWI1IFdIRVJFIGMxID0gMTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWlu ZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5k NjsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUK KyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlw ZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5J UVVFLCBidHJlZSAoYzEpCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQg ZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwg KDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVgg Q09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJP UjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJ TDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlv dXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVU RSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMxID0gMTsKKy0tIERyb3AgbWFpbiBpbmRleCBD T05DVVJSRU5UTFkKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2OworLS0g TWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRvbworXGQgYXV4X2luZGV4X3RhYjUK KyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlw ZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CitFUlJP UjogIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIgZG9lcyBub3QgZXhpc3QKKy0tIEluc2VydCBkdXBs aWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7 CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05D VVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAg Y291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAg S2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBEcm9wIG1haW4gaW5kZXgKK0RST1AgSU5E RVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQg dG9vCitcZCBhdXhfaW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRl eF90YWI1IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0K KyBjMSAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKwogRFJPUCBUQUJM RSBhdXhfaW5kZXhfdGFiNTsKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHBy ZXNzaW9ucyBhbmQgcHJlZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVp bHQgaW5kZXhlcyBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3Jl YXRlX2luZGV4LnNxbAppbmRleCAyY2ZmMWFjMjliZS4uZTE0NjRlYWE2N2MgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApAQCAtMTM0MCwxMSArMTM0MCw2MiBAQCBSRUlOREVY IElOREVYIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogLS0gQ29uY3VycmVudGx5IGFsc28KIFJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogLS0gVGhpcyBtYWtl cyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2 YWxpZC4KLURFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworREVM RVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBw ZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2lu ZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1 CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2Fp bgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRl IGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1 eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBw cmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgor REVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOwogLS0gU2hvdWxkIGJlIHNr aXBwZWQgZHVyaW5nIHJlaW5kZXgKLVJFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7Ci0tLSBT aG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxF IENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBl eGlzdHMKK1xkIGF1eF9pbmRleF90YWI1CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVp bmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ug c3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKK0RST1AgSU5ERVgg YXV4X2luZGV4X2luZDY7CisKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5U TyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRl eCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYg T04gYXV4X2luZGV4X3RhYjUgKGMxKTsKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1 cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBh dXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcg cmVpbmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4 X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90 YWI1CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBh Z2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3Jl YXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZ IGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRo ZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlk LgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gRHJvcCBtYWlu IGluZGV4IENPTkNVUlJFTlRMWQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2lu ZDY7CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5k ZXhfdGFiNQorRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1cGxpY2F0 ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0t IENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJF TlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gRHJvcCBtYWlu IGluZGV4CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFy eSBpbmRleCBkcm9wcGVkIHRvbworXGQgYXV4X2luZGV4X3RhYjUKKwogRFJPUCBUQUJMRSBhdXhf aW5kZXhfdGFiNTsKIAogLS0gQ2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRoIGV4cHJlc3Np b25zIGFuZCBwcmVkaWNhdGVzLiAgVGhlCi0tIAoyLjQzLjAKCg== --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0010-Optimize-auxiliary-index-handling.patch" Content-Disposition: attachment; filename="v20-0010-Optimize-auxiliary-index-handling.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogu8 RnJvbSBlZmQwMWIxOTVkYTRiMjNkYzFkYzc2YzQ0ZjRmNjcxYTg0Mjc5MzZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAzMCBEZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDEwLzEyXSBPcHRpbWl6ZSBhdXhpbGlhcnkgaW5kZXggaGFuZGxpbmcKTUlNRS1W ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClNraXAgdW5uZWNlc3NhcnkgY29tcHV0YXRpb25z IGZvciBhdXhpbGlhcnkgaW5kaWNlcyBieToKLSBpbiB0aGUgaW5kZXjigJBpbnNlcnQgcGF0aCwg ZGV0ZWN0IGF1eGlsaWFyeSBpbmRleGVzIGFuZCBieXBhc3MgRGF0dW0gdmFsdWUgY29tcHV0YXRp b24KLSBzZXQgaW5kZXhVbmNoYW5nZWQ9ZmFsc2UgZm9yIGF1eGlsaWFyeSBpbmRpY2VzIHRvIGF2 b2lkIHJlZHVuZGFudCBjaGVja3MKClRoZXNlIG9wdGltaXphdGlvbnMgcmVkdWNlIG92ZXJoZWFk IGR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMuCi0tLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jICAgICAgICAgfCAxMSArKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0luZGV4aW5nLmMgfCAxMSArKysrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBp bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBiZjBiYjc5 NDc0Yi4uZDFiOTY3MDNiYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTI5MzIsNiArMjkzMiwxNyBA QCBGb3JtSW5kZXhEYXR1bShJbmRleEluZm8gKmluZGV4SW5mbywKIAlMaXN0Q2VsbCAgICppbmRl eHByX2l0ZW07CiAJaW50CQkJaTsKIAorCS8qIEF1eGlsaWFyeSBpbmRleCBkb2VzIG5vdCBuZWVk IGFueSB2YWx1ZXMgdG8gYmUgY29tcHV0ZWQgKi8KKwlpZiAodW5saWtlbHkoaW5kZXhJbmZvLT5p aV9BdXhpbGlhcnkpKQorCXsKKwkJZm9yIChpID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5k ZXhBdHRyczsgaSsrKQorCQl7CisJCQl2YWx1ZXNbaV0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7 CisJCQlpc251bGxbaV0gPSB0cnVlOworCQl9CisJCXJldHVybjsKKwl9CisKIAlpZiAoaW5kZXhJ bmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwgJiYKIAkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9u c1N0YXRlID09IE5JTCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj SW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IDQ5 OWNiYTE0NWRkLi5jOGI1MWUyNzI1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMK QEAgLTQ0MCwxMSArNDQwLDE0IEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCQkgKiBUaGVyZSdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgYW4g aW5kZXhfaW5zZXJ0KCkgY2FsbCBmb3IgdGhpcwogCQkgKiBpbmRleC4gIElmIHdlJ3JlIGJlaW5n IGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFURSBzdGF0ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlm IHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1ZSBoaW50IHNob3VsZCBiZSBwYXNzZWQuCisJCSAq CisJCSAqIEluIGNhc2Ugb2YgYXV4aWxpYXJ5IGluZGV4IGFsd2F5cyBwYXNzIGZhbHNlIGFzIG9w dGltaXNhdGlvbi4KIAkJICovCi0JCWluZGV4VW5jaGFuZ2VkID0gdXBkYXRlICYmIGluZGV4X3Vu Y2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJCQkJCQkJCSBlc3RhdGUs Ci0JCQkJCQkJCQkJCQkJCQkgaW5kZXhJbmZvLAotCQkJCQkJCQkJCQkJCQkJIGluZGV4UmVsYXRp b24pOworCQlpbmRleFVuY2hhbmdlZCA9IHVwZGF0ZSAmJiBsaWtlbHkoIWluZGV4SW5mby0+aWlf QXV4aWxpYXJ5KSAmJgorCQkJCQkJCQkJaW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShyZXN1bHRS ZWxJbmZvLAorCQkJCQkJCQkJCQkJCQkJICBlc3RhdGUsCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4 SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgaW5kZXhSZWxhdGlvbik7CiAKIAkJc2F0aXNmaWVzQ29u c3RyYWludCA9CiAJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRp b24gKi8KLS0gCjIuNDMuMAoK --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0005-Support-snapshot-resets-in-concurrent-builds-of-.patch" Content-Disposition: attachment; filename="v20-0005-Support-snapshot-resets-in-concurrent-builds-of-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogy12 RnJvbSA0MTE0MzFlYmE1ODVkNTUwMmMwYzlkMTYzNzZlNDFhMjI1ODU5MGJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVGh1LCA2IE1hciAyMDI1IDE0OjU0OjQ0ICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMDUvMTJdIFN1cHBvcnQgc25hcHNob3QgcmVzZXRzIGluIGNvbmN1cnJlbnQgYnVp bGRzIG9mCiB1bmlxdWUgaW5kZXhlcwoKUHJldmlvdXNseSwgY29uY3VycmVudCBidWlsZHMgaWYg dW5pcXVlIGluZGV4IHVzZWQgYSBmaXhlZCBzbmFwc2hvdCBmb3IgdGhlIGVudGlyZSBzY2FuIHRv IGVuc3VyZSBwcm9wZXIgdW5pcXVlbmVzcyBjaGVja3MuCgpOb3cgcmVzZXQgc25hcHNob3RzIHBl cmlvZGljYWxseSBkdXJpbmcgY29uY3VycmVudCB1bmlxdWUgaW5kZXggYnVpbGRzLCB3aGlsZSBz dGlsbCBtYWludGFpbmluZyB1bmlxdWVuZXNzIGJ5OgotIGlnbm9yaW5nIFNuYXBzaG90U2VsZiBk ZWFkIHR1cGxlcyBkdXJpbmcgdW5pcXVlbmVzcyBjaGVja3MgaW4gdHVwbGVzb3J0IGFzIG5vdCBh IGd1YXJhbnRlZSwgYnV0IGEgZmFpbC1mYXN0IG1lY2hhbmljcwotIGFkZGluZyBhIHVuaXF1ZW5l c3MgY2hlY2sgaW4gX2J0X2xvYWQgdGhhdCBkZXRlY3RzIG11bHRpcGxlIGFsaXZlIHR1cGxlcyB3 aXRoIHRoZSBzYW1lIGtleSB2YWx1ZXMgYXMgYSBndWFyYW50ZWUgb2YgY29ycmVjdG5lc3MKClR1 cGxlcyBhcmUgU25hcHNob3RTZWxmIHRlc3RlZCBvbmx5IGluIHRoZSBjYXNlIG9mIGVxdWFsIGlu ZGV4IGtleSB2YWx1ZXMsIG92ZXJ3aXNlIF9idF9sb2FkIHdvcmtzIGxpa2UgYmVmb3JlLgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAgICAgICB8ICAxMiArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgICAgICAgICAgfCAgIDggKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8IDE5MiArKysrKysr KysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2MuYyAgICAg ICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jICAgICAgICAg IHwgIDMxICsrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAg IHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgICAg fCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyAgICB8 ICA2OSArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAgICAg ICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggICAgICAgICAgICAgICAg IHwgICAxICsKIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8 ICAgNiArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNjQgaW5zZXJ0aW9ucygrKSwgOTQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRlNDA3ZjM3NWEuLjgyOWRh ZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM4NiwxMiArMzg2LDEy IEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVydHkgZW5mb3JjZWQgYmVmb3JlIHdlIHN0YXJ0 IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBBZnRlciB3YWl0aW5nIGZvciB0cmFuc2FjdGlv bnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3ZSBidWlsZCB0aGUgaW5kZXgKLWZvciBhbGwg cm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LiAgQW55IHR1cGxlcyB2aXNp YmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5n IEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZlCi1vbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQg dGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhpcyBpcyBPSyBmb3IgdGhlIHNhbWUKLXJlYXNv biBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pICBBcyBhYm92ZSwgd2UgcG9pbnQg dGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQg d2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKLWxpdmUgdHVwbGUuCitmb3IgYWxsIHJvd3Mg dGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdCwgd2hpY2ggaXMgdXBkYXRlZCBldmVy eSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUgc25hcHNob3Qgd2lsbCBoYXZl IG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitIT1QgY2hhaW5zLiAgKFRoZXkgbWlnaHQgaGF2 ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLAorYnV0IHRo aXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBi dWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5IGF0IHRoZSByb290IG9m IHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQordXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUg bGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0 aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0 aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0YWtlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA3MjczYjFhZWUwMC4uMGVhYTRkZjU1 ODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTIzNiwx NSArMTIzNiwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNF TlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBvciBkdXJpbmcg Ym9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90CiAJICogYW5kIGluZGV4 IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0aGF0IHNuYXBzaG90IGlz IHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCku CisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBz bmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogRm9yIGNvbmN1cnJlbnQgYnVpbGRzIG9m IG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdhbnQgdG8gcGVyaW9kaWNhbGx5CisJICogcmVz ZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0byBjbGVhbiB1cCB0dXBsZXMuCiAJICovCiAJ cmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCi0JCQkJCSAgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9nOyAvKiBqdXN0 IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBWQUNVVU1zIGhlcmUg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCAwODg4NDExNmFlYy4uMzQ3 YjUwZDZlNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKQEAgLTE0OCw3ICsx NDgsNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEluZGV4VHVw bGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVuZGluZyhz dGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0ZS0+ZGVkdXBsaWNhdGUg JiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5r ZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1 cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKHN0YXRlLCBp dHVwKSkKIAkJewogCQkJLyoKQEAgLTM3NCw3ICszNzQsNyBAQCBfYnRfYm90dG9tdXBkZWxfcGFz cyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkvKiBpdHVw IHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVu ZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0 c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMgJiYKKwkJZWxzZSBpZiAo X2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwLCBOVUxMKSA+IG5rZXlh dHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0dXApKQogCQl7CiAJCQkv KiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBwZW5kaW5nIGludGVydmFs ICovCkBAIC03ODksMTIgKzc4OSwxMiBAQCBfYnRfZG9fc2luZ2xldmFsKFJlbGF0aW9uIHJlbCwg UGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChw YWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0ocGFnZSwgaXRl bWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCkgPiBu a2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5V TEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIFBhZ2VH ZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJ dGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdp dGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5l d2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggMmY0NWFlOTZjMGMuLmQxODZjZTllYzM3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtODMsNiArODMsNyBAQCB0eXBl ZGVmIHN0cnVjdCBCVFNwb29sCiAJUmVsYXRpb24JaW5kZXg7CiAJYm9vbAkJaXN1bmlxdWU7CiAJ Ym9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiB9 IEJUU3Bvb2w7CiAKIC8qCkBAIC0xMDEsNiArMTAyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRTaGFy ZWQKIAlPaWQJCQlpbmRleHJlbGlkOwogCWJvb2wJCWlzdW5pcXVlOwogCWJvb2wJCW51bGxzX25v dF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVhZF9pZ25vcmVkOwogCWJvb2wJCWlzY29uY3Vy cmVudDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwogCkBAIC0yMDMsMTUgKzIwNSwxMyBA QCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogICovCiB0eXBlZGVmIHN0cnVjdCBCVEJ1aWxkU3Rh dGUKIHsKLQlib29sCQlpc3VuaXF1ZTsKLQlib29sCQludWxsc19ub3RfZGlzdGluY3Q7CiAJYm9v bAkJaGF2ZWRlYWQ7CiAJUmVsYXRpb24JaGVhcDsKIAlCVFNwb29sICAgICpzcG9vbDsKIAogCS8q Ci0JICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4IGlzIGEgdW5pcXVlIGlu ZGV4LiBEZWFkIHR1cGxlcyBhcmUKLQkgKiBwdXQgaW50byBzcG9vbDIgaW5zdGVhZCBvZiBzcG9v bCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAqIHNwb29sMiBpcyBuZWVk ZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVuaXF1ZSBpbmRleCBhbmQgYnVpbGQgbm9uLWNv bmN1cnJlbnRseS4KKwkgKiBEZWFkIHR1cGxlcyBhcmUgcHV0IGludG8gc3Bvb2wyIGluc3RlYWQg b2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVjay4KIAkgKi8KIAlCVFNw b29sICAgICpzcG9vbDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7CkBAIC0yNTgsNyArMjU4LDcgQEAg c3RhdGljIGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogc3RhdGljIHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNwb29sICpidHNwb29sKTsK IHN0YXRpYyB2b2lkIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxm LAogCQkJCQkgIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7Ci1zdGF0aWMgdm9pZCBfYnRf bGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0 X3NuYXBzaG90cyk7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2ws IEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCk7CiBzdGF0aWMgdm9pZCBfYnRf YnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVyIHRpZCwgRGF0dW0gKnZh bHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJc0FsaXZlLCB2b2lkICpz dGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3BhZ2UoQlRXcml0ZVN0YXRl ICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMDMsOCArMzAzLDYgQEAgYnRidWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCVJlc2V0 VXNhZ2UoKTsKICNlbmRpZgkJCQkJCQkvKiBCVFJFRV9CVUlMRF9TVEFUUyAqLwogCi0JYnVpbGRz dGF0ZS5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5pcXVlOwotCWJ1aWxkc3RhdGUubnVsbHNf bm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OwogCWJ1aWxkc3Rh dGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0YXRlLmhlYXAgPSBoZWFwOwogCWJ1aWxkc3Rh dGUuc3Bvb2wgPSBOVUxMOwpAQCAtMzIxLDIwICszMTksMjAgQEAgYnRidWlsZChSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQkgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9idF9zcG9vbHNfaGVhcHNj YW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwotCUFzc2VydCghaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAq IEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29s IGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBh Z2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQg bWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0J X2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4 SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CisJX2J0X2xlYWZi dWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgaW5kZXhJbmZvLT5paV9D b25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChi dWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7 CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJCV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0 ZS5idGxlYWRlcik7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJ bmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwor CUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxv YyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOwogCkBAIC0zODEsNiArMzc5LDExIEBAIF9idF9z cG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4OwogCWJ0c3Bvb2wtPmlzdW5p cXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0 ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworCS8qCisJICogV2UgbmVlZCB0byBp Z25vcmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3MgaW4gY2FzZSBvZiBjb25jdXJyZW50 IGJ1aWxkLgorCSAqIEl0IGlzIHJlcXVpcmVkIGJlY2F1c2Ugb3IgcGVyaW9kaWMgcmVzZXQgb2Yg c25hcHNob3QuCisJICovCisJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGluZGV4SW5m by0+aWlfQ29uY3VycmVudCAmJiBpbmRleEluZm8tPmlpX1VuaXF1ZTsKIAogCS8qIFNhdmUgYXMg cHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUtPnNwb29sID0gYnRzcG9vbDsKQEAgLTQyOSw4 ICs0MzIsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogdGhlIHVzZSBvZiBwYXJhbGxlbGlz bSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwogCWJ1aWxkc3RhdGUtPnNwb29sLT5zb3J0c3Rh dGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ1aWxkc3Rh dGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRzdGF0ZS0+bnVsbHNfbm90X2Rpc3RpbmN0LAor CQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ0c3Bvb2wtPmlzdW5p cXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJYnRz cG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVt LCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVTT1JUX05PTkUpOwogCkBAIC00MzgsOCArNDQy LDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkgKiBJZiBidWlsZGluZyBhIHVuaXF1ZSBpbmRl eCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25kIHNwb29sIHRvIGtlZXAKIAkgKiB0aGVtIG91 dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdlIGV4cGVjdCB0aGF0IHRoZSBzZWNvbmQgc3Bv b2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24ndCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBnaXZl IGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQg ZGVhZCB0dXBsZXMgYXJlIG5vdCBuZWVkIHRvIGJlIHB1dCBpbnRvIGluZGV4CisJICogc2luY2Ug d2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRlciB0aGFuIHJlZmVyZW5jZSBzbmFwc2hvdCBk dXJpbmcgdGhlCisJICogdmFsaWRhdGlvbiBwaGFzZS4KIAkgKi8KLQlpZiAoaW5kZXhJbmZvLT5p aV9VbmlxdWUpCisJaWYgKGluZGV4SW5mby0+aWlfVW5pcXVlICYmICFpbmRleEluZm8tPmlpX0Nv bmN1cnJlbnQpCiAJewogCQlCVFNwb29sICAgICpidHNwb29sMiA9IChCVFNwb29sICopIHBhbGxv YzAoc2l6ZW9mKEJUU3Bvb2wpKTsKIAkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxM OwpAQCAtNDcwLDcgKzQ3OCw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJICogZnVsbCwgc28g d2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtCiAJCSAqLwogCQlidWlsZHN0YXRlLT5zcG9vbDItPnNv cnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZh bHNlLCBmYWxzZSwgd29ya19tZW0sCisJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVh cCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHdvcmtfbWVtLAogCQkJCQkJCQkJCWNvb3Jk aW5hdGUyLCBUVVBMRVNPUlRfTk9ORSk7CiAJfQogCkBAIC00ODMsNyArNDkxLDcgQEAgX2J0X3Nw b29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRz dGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJl bnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVz cyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAt NTM5LDcgKzU0Nyw3IEBAIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBz ZWxmLCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwpCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0 cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCitfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCkKIHsK IAlCVFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01NjEsNyArNTY5LDcgQEAgX2J0X2xlYWZidWls ZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hv dHMpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1 cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+c29ydHN0YXRlKTsKIAl9Ci0JQXNzZXJ0KCFy ZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwor CUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9vbC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBi dHNwb29sLT5pbmRleDsKQEAgLTU3NSw3ICs1ODMsNyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wg KmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cykKIAogCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAog CQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKLQlBc3NlcnQoIXJlc2V0 X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNz ZXJ0KCFpc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikp OwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2wsIGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTE1NCwx MyArMTE2MiwxMTcgQEAgX2J0X2xvYWQoQlRXcml0ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0 c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCVNvcnRTdXBwb3J0IHNvcnRLZXlzOwogCWludDY0 CQl0dXBsZXNfZG9uZSA9IDA7CiAJYm9vbAkJZGVkdXBsaWNhdGU7CisJYm9vbAkJZmFpbF9vbl9h bGl2ZV9kdXBsaWNhdGU7CiAKIAl3c3RhdGUtPmJ1bGtzdGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9y ZWwod3N0YXRlLT5pbmRleCwgTUFJTl9GT1JLTlVNKTsKIAogCWRlZHVwbGljYXRlID0gd3N0YXRl LT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgJiYgIWJ0c3Bvb2wtPmlzdW5pcXVlICYmCiAJCUJUR2V0 RGVkdXBsaWNhdGVJdGVtcyh3c3RhdGUtPmluZGV4KTsKKwkvKgorCSAqIFRoZSB1bmlxdWVfZGVh ZF9pZ25vcmVkIGRvZXMgbm90IGd1YXJhbnRlZSBhYnNlbmNlIG9mIG11bHRpcGxlIGFsaXZlCisJ ICogdHVwbGVzIHdpdGggc2FtZSB2YWx1ZXMgZXhpc3RzIGluIHRoZSBzcG9vbC4gU3VjaCB0aGlu ZyBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVwbGVzIGFyZSBsb2NhdGVkIGJldHdlZW4gYSBm ZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRkZGEuCisJICovCisJZmFpbF9vbl9hbGl2ZV9k dXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCi0JaWYgKG1lcmdlKQor CWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkKKwl7CisJCWJvb2wJc2Vlbl9hbGl2ZSA9IGZh bHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCUluZGV4VHVwbGUgcHJldiA9IE5VTEw7 CisJCVR1cGxlVGFibGVTbG90IAkJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVs YXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAorCQkJCQkJCQkJCQkJCQkJICAgJlRUU09wc0J1 ZmZlckhlYXBUdXBsZSk7CisJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5k ZXhfZmV0Y2hfYmVnaW4od3N0YXRlLT5oZWFwKTsKKworCQlBc3NlcnQoYnRzcG9vbC0+aXN1bmlx dWUpOworCQlBc3NlcnQoIWJ0c3Bvb2wyKTsKKworCQl3aGlsZSAoKGl0dXAgPSB0dXBsZXNvcnRf Z2V0aW5kZXh0dXBsZShidHNwb29sLT5zb3J0c3RhdGUsIHRydWUpKSAhPSBOVUxMKQorCQl7CisJ CQlib29sCXR1cGxlc19lcXVhbCA9IGZhbHNlOworCisJCQkvKiBXaGVuIHdlIHNlZSBmaXJzdCB0 dXBsZSwgY3JlYXRlIGZpcnN0IGluZGV4IHBhZ2UgKi8KKwkJCWlmIChzdGF0ZSA9PSBOVUxMKQor CQkJCXN0YXRlID0gX2J0X3BhZ2VzdGF0ZSh3c3RhdGUsIDApOworCisJCQlpZiAocHJldiAhPSBO VUxMKSAvKiBpZiBpcyBub3QgdGhlIGZpcnN0IHR1cGxlICovCisJCQl7CisJCQkJYm9vbAloYXNf bnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdhaW4sIC8qIGp1c3QgdG8gcGFzcyBzb21ldGhp bmcgKi8KKwkJCQkJCWlnbm9yZWQsICAvKiBqdXN0IHRvIHBhc3Mgc29tZXRoaW5nICovCisJCQkJ CQlub3dfYWxpdmU7CisJCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKKworCQkJCS8qIGlmIHRoaXMg dHVwbGVzIGVxdWFsIHRvIHByZXZpb3VzZSBvbmU/ICovCisJCQkJaWYgKHdzdGF0ZS0+aW5za2V5 LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0c19mYXN0 KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsICZoYXNfbnVsbHMpID4ga2V5c3o7CisJCQkJZWxz ZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0cyh3c3RhdGUtPmluZGV4LCBwcmV2 LCBpdHVwLHdzdGF0ZS0+aW5za2V5LCAmaGFzX251bGxzKSA+IGtleXN6OworCisJCQkJLyogaGFu ZGxlIG51bGwgdmFsdWVzIGNvcnJlY3RseSAqLworCQkJCWlmIChoYXNfbnVsbHMgJiYgIWJ0c3Bv b2wtPm51bGxzX25vdF9kaXN0aW5jdCkKKwkJCQkJdHVwbGVzX2VxdWFsID0gZmFsc2U7CisKKwkJ CQlpZiAodHVwbGVzX2VxdWFsKQorCQkJCXsKKwkJCQkJLyogY2hlY2sgcHJldmlvdXMgdHVwbGUg aWYgbm90IHlldCAqLworCQkJCQlpZiAoIXByZXZfdGVzdGVkKQorCQkJCQl7CisJCQkJCQljYWxs X2FnYWluID0gZmFsc2U7CisJCQkJCQl0aWQgPSBwcmV2LT50X3RpZDsKKwkJCQkJCXNlZW5fYWxp dmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBz bG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOworCQkJCQkJcHJldl90ZXN0ZWQgPSB0cnVlOwor CQkJCQl9CisKKwkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCQl0aWQgPSBpdHVwLT50X3Rp ZDsKKwkJCQkJbm93X2FsaXZlID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQs IFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25vcmVkKTsKKworCQkJCQkvKiBh cmUgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIGRldGVjdGVkIGluIGVxdWFsIGdyb3VwPyAqLworCQkJ CQlpZiAoc2Vlbl9hbGl2ZSAmJiBub3dfYWxpdmUpCisJCQkJCXsKKwkJCQkJCWNoYXIgKmtleV9k ZXNjOworCQkJCQkJVHVwbGVEZXNjIHR1cERlcyA9IFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5p bmRleCk7CisJCQkJCQlib29sIGlzbnVsbFtJTkRFWF9NQVhfS0VZU107CisJCQkJCQlEYXR1bSB2 YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCisJCQkJCQlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwg dHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCQkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZh bHVlRGVzY3JpcHRpb24od3N0YXRlLT5pbmRleCwgdmFsdWVzLCBpc251bGwpOworCisJCQkJCQkv KiBrZWVwIHRoaXMgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUgaW4gY29tcGFyZXR1cF9p bmRleF9idHJlZV90aWVicmVhayAqLworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9OKSwKKwkJCQkJCQkJCQllcnJtc2coImNvdWxk IG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSwKKwkJCQkJCQkJCQlrZXlfZGVzYyA/IGVy cmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKKwkJCQkJCQkJCQll cnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAorCQkJCQkJCQkJCWVycnRhYmxlY29u c3RyYWludCh3c3RhdGUtPmhlYXAsCisJCQkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHdzdGF0ZS0+aW5kZXgpKSkpOworCQkJCQl9CisJCQkJCXNlZW5fYWxpdmUgfD0gbm93 X2FsaXZlOworCQkJCX0KKwkJCX0KKworCQkJaWYgKCF0dXBsZXNfZXF1YWwpCisJCQl7CisJCQkJ c2Vlbl9hbGl2ZSA9IGZhbHNlOworCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCQl9CisKKwkJ CV9idF9idWlsZGFkZCh3c3RhdGUsIHN0YXRlLCBpdHVwLCAwKTsKKwkJCWlmIChwcmV2KSBwZnJl ZShwcmV2KTsKKwkJCXByZXYgPSBDb3B5SW5kZXhUdXBsZShpdHVwKTsKKworCQkJLyogUmVwb3J0 IHByb2dyZXNzICovCisJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NS RUFURUlEWF9UVVBMRVNfRE9ORSwKKwkJCQkJCQkJCQkgKyt0dXBsZXNfZG9uZSk7CisJCX0KKwkJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwkJdGFibGVfaW5kZXhfZmV0Y2hf ZW5kKGZldGNoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKKwl9CisJZWxzZSBpZiAobWVyZ2UpCiAJewogCQkvKgogCQkgKiBBbm90aGVyIEJUU3Bvb2wg Zm9yIGRlYWQgdHVwbGVzIGV4aXN0cy4gTm93IHdlIGhhdmUgdG8gbWVyZ2UKQEAgLTEzMjAsNyAr MTQzMiw3IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCBCVFNwb29sICpidHNwb29s LCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCQlJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAkJ CX0KIAkJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRzX2Zhc3Qod3N0YXRlLT5pbmRleCwgZHN0YXRl LT5iYXNlLAotCQkJCQkJCQkJCSBpdHVwKSA+IGtleXN6ICYmCisJCQkJCQkJCQkJIGl0dXAsIE5V TEwpID4ga2V5c3ogJiYKIAkJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoZHN0YXRlLCBpdHVwKSkK IAkJCXsKIAkJCQkvKgpAQCAtMTQxNyw3ICsxNTI5LDYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQog CUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0 cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7Ci0JYm9vbAkJcmVz ZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9Q QVJUSUNJUEFUSU9OCkBAIC0xNDM1LDIxICsxNTQ2LDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChC VEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkK IAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsg MSA6IHJlcXVlc3Q7CiAKLSAgICAvKgotCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUgaW5k ZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cwotCSAqIHRvIGFs bG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNl IGJ1aWxkcyBkb24ndAotCSAqIHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBl bnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZAotCSAqIGEgc3RhYmxlIHNuYXBz aG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4KLSAgICAgKi8K LQlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7Ci0K IAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5v cm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0 IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tz IChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQog CSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5k IGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0 IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2RpY2FsbHkgaW4KLQkgKiBjYXNlIG9mIG5vbi11 bmlxdWUgaW5kZXguCisJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFw c2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50 KQogCXsKQEAgLTE0NTcsMTYgKzE1NTksMTYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCQlzbmFw c2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsK IAl9Ci0JZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJZWxzZQogCXsKKwkJLyoKKwkJICogRm9y IGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBz aG90cyB0byBhbGxvdworCQkgKiB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgaXMg c2FmZSBzaW5jZSB0aGVzZSBidWlsZHMgZG9uJ3QKKwkJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQg dmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgorCQkgKi8KIAkJc25hcHNob3QgPSBJbnZhbGlk U25hcHNob3Q7CiAJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OwogCX0KLQllbHNlCi0JewotCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQl9CiAK IAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NI QVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTUzNiw2ICsxNjM4LDcgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCWJ0c2hhcmVkLT5pbmRleHJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChidHNwb29sLT5p bmRleCk7CiAJYnRzaGFyZWQtPmlzdW5pcXVlID0gYnRzcG9vbC0+aXN1bmlxdWU7CiAJYnRzaGFy ZWQtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdDsKKwli dHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9y ZWQ7CiAJYnRzaGFyZWQtPmlzY29uY3VycmVudCA9IGlzY29uY3VycmVudDsKIAlidHNoYXJlZC0+ c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBsZXNvcnRzdGF0ZXM7CiAJYnRzaGFyZWQtPnF1 ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCk7CkBAIC0xNTUwLDcgKzE2NTMsNyBAQCBf YnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpCiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9v bC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJl ZCksCiAJCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJCQkJCSAgcmVzZXRfc25hcHNob3QpOworCQkJ CQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQt cHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYzMCw3ICsx NzMzLDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBi dWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKiBX YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCiAJICovCi0J aWYgKHJlc2V0X3NuYXBzaG90KQorCWlmIChpc2NvbmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxl bFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKIAogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNl bHZlcyAqLwpAQCAtMTY0MSw3ICsxNzQ0LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIENh bGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVy bi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5v dCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JaWYgKCFyZXNldF9zbmFwc2hvdCkKKwlpZiAoIWlzY29u Y3VycmVudCkKIAkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsK IAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpA QCAtMTc0NCw2ICsxODQ3LDcgQEAgX2J0X2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlKQogCWxlYWRlcndvcmtlci0+aW5kZXggPSBidWlsZHN0YXRl LT5zcG9vbC0+aW5kZXg7CiAJbGVhZGVyd29ya2VyLT5pc3VuaXF1ZSA9IGJ1aWxkc3RhdGUtPnNw b29sLT5pc3VuaXF1ZTsKIAlsZWFkZXJ3b3JrZXItPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ1aWxk c3RhdGUtPnNwb29sLT5udWxsc19ub3RfZGlzdGluY3Q7CisJbGVhZGVyd29ya2VyLT51bmlxdWVf ZGVhZF9pZ25vcmVkID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAK IAkvKiBJbml0aWFsaXplIHNlY29uZCBzcG9vbCwgaWYgcmVxdWlyZWQgKi8KIAlpZiAoIWJ0bGVh ZGVyLT5idHNoYXJlZC0+aXN1bmlxdWUpCkBAIC0xODQ3LDExICsxOTUxLDEyIEBAIF9idF9wYXJh bGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlidHNwb29s LT5pbmRleCA9IGluZGV4UmVsOwogCWJ0c3Bvb2wtPmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5p cXVlOwogCWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3Rf ZGlzdGluY3Q7CisJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ0c2hhcmVkLT51bmlx dWVfZGVhZF9pZ25vcmVkOwogCiAJLyogTG9vayB1cCBzaGFyZWQgc3RhdGUgcHJpdmF0ZSB0byB0 dXBsZXNvcnQuYyAqLwogCXNoYXJlZHNvcnQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlQsIGZhbHNlKTsKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRz b3J0LCBzZWcpOwotCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlKQorCWlmICghYnRzaGFyZWQtPmlz dW5pcXVlIHx8IGJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQpCiAJewogCQlidHNwb29sMiA9IE5VTEw7 CiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKQEAgLTE5MzEsNiArMjAzNiw3IEBAIF9idF9wYXJhbGxl bF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQkJ CQkJCQkJCQkJCSBidHNwb29sLT5pbmRleCwKIAkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+aXN1bmlx dWUsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCwKKwkJCQkJCQkJ CQkJCQkgYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCQkJCQkgc29ydG1l bSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCQkgVFVQTEVTT1JUX05PTkUpOwogCkBAIC0xOTUz LDE0ICsyMDU5LDEyIEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQljb29yZGluYXRlMi0+blBhcnRpY2lwYW50cyA9IC0x OwogCQljb29yZGluYXRlMi0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQyOwogCQlidHNwb29sMi0+ c29ydHN0YXRlID0KLQkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShidHNwb29sLT5oZWFw LCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZhbHNlLAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4 X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNl LAogCQkJCQkJCQkJCU1pbihzb3J0bWVtLCB3b3JrX21lbSksIGNvb3JkaW5hdGUyLAogCQkJCQkJ CQkJCWZhbHNlKTsKIAl9CiAKIAkvKiBGaWxsIGluIGJ1aWxkc3RhdGUgZm9yIF9idF9idWlsZF9j YWxsYmFjaygpICovCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGJ0c2hhcmVkLT5pc3VuaXF1ZTsK LQlidWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlz dGluY3Q7CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9IGZhbHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9 IGJ0c3Bvb2wtPmhlYXA7CiAJYnVpbGRzdGF0ZS5zcG9vbCA9IGJ0c3Bvb2w7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKaW5kZXggZTZjOWFhYTA0NTQuLjdjYjFmM2UxYmM2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCkBAIC02ODcsNyArNjg3 LDcgQEAgX2J0X2FmdGVybmV3aXRlbW9mZihGaW5kU3BsaXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVt YmVyIG1heG9mZiwKIAl7CiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQoc3RhdGUtPm9yaWdwYWdl LCBtYXhvZmYpOwogCQl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0oc3RhdGUtPm9yaWdw YWdlLCBpdGVtaWQpOwotCQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5y ZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19m YXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0sIE5VTEwpOwogCiAJCWlmIChrZWVw bmF0dHMgPiAxICYmIGtlZXBuYXR0cyA8PSBua2V5YXR0cykKIAkJewpAQCAtNzE4LDcgKzcxOCw3 IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNwbGl0RGF0YSAqc3RhdGUsIE9mZnNldE51bWJl ciBtYXhvZmYsCiAJCSFfYnRfYWRqYWNlbnRodGlkKCZ0dXAtPnRfdGlkLCAmc3RhdGUtPm5ld2l0 ZW0tPnRfdGlkKSkKIAkJcmV0dXJuIGZhbHNlOwogCS8qIENoZWNrIHNhbWUgY29uZGl0aW9ucyBh cyByaWdodG1vc3QgaXRlbSBjYXNlLCB0b28gKi8KLQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0 c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCWtlZXBuYXR0cyA9IF9i dF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVwLCBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7 CiAKIAlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVwbmF0dHMgPD0gbmtleWF0dHMpCiAJewpAQCAt OTY3LDcgKzk2Nyw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQ b2ludCAqbGVmdHBhZ2UsCiAJICogYXZvaWQgYXBwZW5kaW5nIGEgaGVhcCBUSUQgaW4gbmV3IGhp Z2gga2V5LCB3ZSdyZSBkb25lLiAgRmluaXNoIHNwbGl0CiAJICogd2l0aCBkZWZhdWx0IHN0cmF0 ZWd5IGFuZCBpbml0aWFsIHNwbGl0IGludGVydmFsLgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0g X2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlw ZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3Qs IHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CQlyZXR1cm4gcGVyZmVjdHBlbmFsdHk7CiAKQEAgLTk4OCw3ICs5ODgsNyBAQCBfYnRfc3RyYXRl Z3koRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAogCSAqIElmIHBh Z2UgaXMgZW50aXJlbHkgZnVsbCBvZiBkdXBsaWNhdGVzLCBhIHNpbmdsZSB2YWx1ZSBzdHJhdGVn eSBzcGxpdAogCSAqIHdpbGwgYmUgcGVyZm9ybWVkLgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0g X2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlw ZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3Qs IHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CXsKIAkJKnN0cmF0ZWd5ID0gU1BMSVRfTUFOWV9EVVBMSUNBVEVTOwpAQCAtMTAyNyw3ICsxMDI3 LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0 cGFnZSwKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChzdGF0ZS0+b3JpZ3BhZ2UsIFBfSElLRVkp OwogCQloaWtleSA9IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0 ZW1pZCk7CiAJCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBoaWtleSwKLQkJCQkJCQkJCQkJIHN0YXRlLT5uZXdpdGVtKTsKKwkJCQkJCQkJCQkJIHN0YXRl LT5uZXdpdGVtLCBOVUxMKTsKIAkJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CQkJKnN0cmF0ZWd5ID0gU1BMSVRfU0lOR0xFX1ZBTFVFOwogCQllbHNlCkBAIC0xMTQ5LDcgKzEx NDksNyBAQCBfYnRfc3BsaXRfcGVuYWx0eShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2lu dCAqc3BsaXQpCiAJbGFzdGxlZnQgPSBfYnRfc3BsaXRfbGFzdGxlZnQoc3RhdGUsIHNwbGl0KTsK IAlmaXJzdHJpZ2h0ID0gX2J0X3NwbGl0X2ZpcnN0cmlnaHQoc3RhdGUsIHNwbGl0KTsKIAotCXJl dHVybiBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0 KTsKKwlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsYXN0bGVmdCwgZmly c3RyaWdodCwgTlVMTCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMK aW5kZXggMWExNWRmY2I3ZDMuLmQwN2ZlNzI3MTNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnR1dGlscy5jCkBAIC02Niw4ICs2Niw2IEBAIHN0YXRpYyBib29sIF9idF9jaGVja19yb3djb21w YXJlKFNjYW5LZXkgc2tleSwKIAkJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyLCBib29sIGZvcmNl bm9ucmVxdWlyZWQsIGJvb2wgKmNvbnRpbnVlc2Nhbik7CiBzdGF0aWMgdm9pZCBfYnRfY2hlY2tr ZXlzX2xvb2tfYWhlYWQoSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkJCQkJCSBpbnQgdHVwbmF0dHMsIFR1cGxlRGVzYyB0dXBkZXNjKTsKLXN0YXRpYyBp bnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAotCQkJ CQkJICAgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXkpOwogCiAK IC8qCkBAIC0yNTMyLDcgKzI1MzAsNyBAQCBfYnRfc2V0X3N0YXJ0aWtleShJbmRleFNjYW5EZXNj IHNjYW4sIEJUUmVhZFBhZ2VTdGF0ZSAqcHN0YXRlKQogCWxhc3R0dXAgPSAoSW5kZXhUdXBsZSkg UGFnZUdldEl0ZW0ocHN0YXRlLT5wYWdlLCBpaWQpOwogCiAJLyogRGV0ZXJtaW5lIHRoZSBmaXJz dCBhdHRyaWJ1dGUgd2hvc2UgdmFsdWVzIGNoYW5nZSBvbiBjYWxsZXIncyBwYWdlICovCi0JZmly c3RjaGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBmaXJzdHR1cCwgbGFz dHR1cCk7CisJZmlyc3RjaGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBm aXJzdHR1cCwgbGFzdHR1cCwgTlVMTCk7CiAKIAlmb3IgKDsgc3RhcnRpa2V5IDwgc28tPm51bWJl ck9mS2V5czsgc3RhcnRpa2V5KyspCiAJewpAQCAtMzg1Miw3ICszODUwLDcgQEAgX2J0X3RydW5j YXRlKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJp Z2h0LAogCUFzc2VydCghQlRyZWVUdXBsZUlzUGl2b3QobGFzdGxlZnQpICYmICFCVHJlZVR1cGxl SXNQaXZvdChmaXJzdHJpZ2h0KSk7CiAKIAkvKiBEZXRlcm1pbmUgaG93IG1hbnkgYXR0cmlidXRl cyBtdXN0IGJlIGtlcHQgaW4gdHJ1bmNhdGVkIHR1cGxlICovCi0Ja2VlcG5hdHRzID0gX2J0X2tl ZXBfbmF0dHMocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXkpOworCWtlZXBuYXR0 cyA9IF9idF9rZWVwX25hdHRzKHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIGl0dXBfa2V5LCBO VUxMKTsKIAogI2lmZGVmIERFQlVHX05PX1RSVU5DQVRFCiAJLyogRm9yY2UgdHJ1bmNhdGlvbiB0 byBiZSBpbmVmZmVjdGl2ZSBmb3IgdGVzdGluZyBwdXJwb3NlcyAqLwpAQCAtMzk3MCwxNyArMzk2 OCwyNCBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJ bmRleFR1cGxlIGZpcnN0cmlnaHQsCiAvKgogICogX2J0X2tlZXBfbmF0dHMgLSBob3cgbWFueSBr ZXkgYXR0cmlidXRlcyB0byBrZWVwIHdoZW4gdHJ1bmNhdGluZy4KICAqCisgKiBUaGlzIGlzIGV4 cG9ydGVkIHRvIGJlIHVzZWQgYXMgY29tcGFyaXNvbiBmdW5jdGlvbiBkdXJpbmcgY29uY3VycmVu dAorICogdW5pcXVlIGluZGV4IGJ1aWxkIGluIGNhc2UgX2J0X2tlZXBfbmF0dHNfZmFzdCBpcyBu b3Qgc3VpdGFibGUgYmVjYXVzZQorICogY29sbGF0aW9uIGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIv ZGVkdXBsaWNhdGlvbi1zYWZlLgorICoKICAqIENhbGxlciBwcm92aWRlcyB0d28gdHVwbGVzIHRo YXQgZW5jbG9zZSBhIHNwbGl0IHBvaW50LiAgQ2FsbGVyJ3MgaW5zZXJ0aW9uCiAgKiBzY2Fua2V5 IGlzIHVzZWQgdG8gY29tcGFyZSB0aGUgdHVwbGVzOyB0aGUgc2NhbmtleSdzIGFyZ3VtZW50IHZh bHVlcyBhcmUKICAqIG5vdCBjb25zaWRlcmVkIGhlcmUuCiAgKgorICogaGFzbnVsbHMgdmFsdWUg c2V0IHRvIHRydWUgaW4gY2FzZSBvZiBhbnkgbnVsbCBjb2x1bW4gaW4gYW55IHR1cGxlLgorICoK ICAqIFRoaXMgY2FuIHJldHVybiBhIG51bWJlciBvZiBhdHRyaWJ1dGVzIHRoYXQgaXMgb25lIGdy ZWF0ZXIgdGhhbiB0aGUKICAqIG51bWJlciBvZiBrZXkgYXR0cmlidXRlcyBmb3IgdGhlIGluZGV4 IHJlbGF0aW9uLiAgVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUKICAqIGNhbGxlciBtdXN0IHVzZSBh IGhlYXAgVElEIGFzIGEgdW5pcXVlLWlmaWVyIGluIG5ldyBwaXZvdCB0dXBsZS4KICAqLwotc3Rh dGljIGludAoraW50CiBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFz dGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKLQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tl eSkKKwkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKKwkJCSAgIGJvb2wgKmhhc251bGxzKQog ewogCWludAkJCW5rZXlhdHRzID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRl cyhyZWwpOwogCVR1cGxlRGVzYwlpdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAg LTQwMDYsNiArNDAxMSw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBs ZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCiAJCWRhdHVtMSA9IGluZGV4X2dl dGF0dHIobGFzdGxlZnQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0g aW5kZXhfZ2V0YXR0cihmaXJzdHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJ CWlmIChoYXNudWxscykKKwkJCSgqaGFzbnVsbHMpIHw9IChpc051bGwxIHx8IGlzTnVsbDIpOwog CiAJCWlmIChpc051bGwxICE9IGlzTnVsbDIpCiAJCQlicmVhazsKQEAgLTQwMjUsNyArNDAzMiw3 IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5k ZXhUdXBsZSBmaXJzdHJpZ2h0LAogCSAqIGV4cGVjdGVkIGluIGFuIGFsbGVxdWFsaW1hZ2UgaW5k ZXguCiAJICovCiAJQXNzZXJ0KCFpdHVwX2tleS0+YWxsZXF1YWxpbWFnZSB8fAotCQkgICBrZWVw bmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KSk7 CisJCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZp cnN0cmlnaHQsIE5VTEwpKTsKIAogCXJldHVybiBrZWVwbmF0dHM7CiB9CkBAIC00MDM2LDcgKzQw NDMsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQs IEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqIFRoaXMgaXMgZXhwb3J0ZWQgc28gdGhhdCBhIGNh bmRpZGF0ZSBzcGxpdCBwb2ludCBjYW4gaGF2ZSBpdHMgZWZmZWN0IG9uCiAgKiBzdWZmaXggdHJ1 bmNhdGlvbiBpbmV4cGVuc2l2ZWx5IGV2YWx1YXRlZCBhaGVhZCBvZiB0aW1lIHdoZW4gZmluZGlu ZyBhCiAgKiBzcGxpdCBsb2NhdGlvbi4gIEEgbmFpdmUgYml0d2lzZSBhcHByb2FjaCB0byBkYXR1 bSBjb21wYXJpc29ucyBpcyB1c2VkIHRvCi0gKiBzYXZlIGN5Y2xlcy4KKyAqIHNhdmUgY3ljbGVz LiBBbHNvLCBpdCBtYXkgYmUgdXNlZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9uIGR1cmluZyBjb25j dXJyZW50CisgKiBidWlsZCBvZiB1bmlxdWUgaW5kZXguCiAgKgogICogVGhlIGFwcHJvYWNoIHRh a2VuIGhlcmUgdXN1YWxseSBwcm92aWRlcyB0aGUgc2FtZSBhbnN3ZXIgYXMgX2J0X2tlZXBfbmF0 dHMKICAqIHdpbGwgKGZvciB0aGUgc2FtZSBwYWlyIG9mIHR1cGxlcyBmcm9tIGEgaGVhcGtleXNw YWNlIGluZGV4KSwgc2luY2UgdGhlCkBAIC00MDQ1LDYgKzQwNTMsOCBAQCBfYnRfa2VlcF9uYXR0 cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdo dCwKICAqICJlcXVhbCBpbWFnZSIgY29sdW1ucywgcm91dGluZSBpcyBndWFyYW50ZWVkIHRvIGdp dmUgdGhlIHNhbWUgcmVzdWx0IGFzCiAgKiBfYnRfa2VlcF9uYXR0cyB3b3VsZC4KICAqCisgKiBo YXNudWxscyB2YWx1ZSBzZXQgdG8gdHJ1ZSBpbiBjYXNlIG9mIGFueSBudWxsIGNvbHVtbiBpbiBh bnkgdHVwbGUuCisgKgogICogQ2FsbGVycyBjYW4gcmVseSBvbiB0aGUgZmFjdCB0aGF0IGF0dHJp YnV0ZXMgY29uc2lkZXJlZCBlcXVhbCBoZXJlIGFyZQogICogZGVmaW5pdGVseSBhbHNvIGVxdWFs IGFjY29yZGluZyB0byBfYnRfa2VlcF9uYXR0cywgZXZlbiB3aGVuIHRoZSBpbmRleCB1c2VzCiAg KiBhbiBvcGNsYXNzIG9yIGNvbGxhdGlvbiB0aGF0IGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVk dXBsaWNhdGlvbi1zYWZlLgpAQCAtNDA1Myw3ICs0MDYzLDggQEAgX2J0X2tlZXBfbmF0dHMoUmVs YXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAg KiBtb3JlIGJhbGFuY2VkIHNwbGl0IHBvaW50LgogICovCiBpbnQKLV9idF9rZWVwX25hdHRzX2Zh c3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmln aHQpCitfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVm dCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQlib29sICpoYXNudWxscykKIHsKIAlUdXBs ZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAJaW50CQkJa2V5c3ogPSBJ bmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CkBAIC00MDcwLDYgKzQw ODEsOCBAQCBfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0 bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0KQogCiAJCWRhdHVtMSA9IGluZGV4X2dldGF0dHIo bGFzdGxlZnQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0gaW5kZXhf Z2V0YXR0cihmaXJzdHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJCWlmICho YXNudWxscykKKwkJCSpoYXNudWxscyB8PSAoaXNOdWxsMSB8IGlzTnVsbDIpOwogCQlhdHQgPSBU dXBsZURlc2NDb21wYWN0QXR0cihpdHVwZGVzYywgYXR0bnVtIC0gMSk7CiAKIAkJaWYgKGlzTnVs bDEgIT0gaXNOdWxsMikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA2NDMyZWY1NWNkYy4uY2NhMWRiYjhl MzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzIsNyArMTUzMiw3IEBAIGluZGV4X2NvbmN1cnJl bnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFsb2cg c25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgp OwotCUFzc2VydChpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXgg ZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0z MzIzLDkgKzMzMjMsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVz IHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFk ZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgotICogRnVydGhl cm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNI T1QgZm9yIHRoZQotICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQg YXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCi0gKiBmb3IgdGhhdCBpcyB0byBw cm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICogRnVydGhlcm1vcmUsIHdlIHNl dCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcKKyAqIHNu YXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24gIGZv ciB0aGF0IGlzIHRvCisgKiBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgogICoK ICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAi aW5kaXN2YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0 YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMKaW5kZXggYTkzZDRmMzg4YmMuLjE1MjA2ZDI3MjI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYwpAQCAtMTY5NCw4ICsxNjk0LDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICog Y2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVw bGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAq IFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNp bmcgc2luZ2xlIG9yCi0JICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBi ZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVz aW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQorCSAqIHJlZnJl c2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwog CSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNl IGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBh Ym91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4gIFRo dXMsIGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBpdHMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwppbmRleCA1ZjcwZThkZGRhYy4uNzFh NWMyMWUwZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFy aWFudHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMK QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKIAogCiAvKiBzb3J0LXR5cGUgY29kZXMgZm9yIHNvcnRfX3N0YXJ0IHBy b2JlcyAqLwpAQCAtMTMzLDYgKzEzNCw3IEBAIHR5cGVkZWYgc3RydWN0CiAKIAlib29sCQllbmZv cmNlVW5pcXVlOwkvKiBjb21wbGFpbiBpZiB3ZSBmaW5kIGR1cGxpY2F0ZSB0dXBsZXMgKi8KIAli b29sCQl1bmlxdWVOdWxsc05vdERpc3RpbmN0OyAvKiB1bmlxdWUgY29uc3RyYWludCBudWxsIHRy ZWF0bWVudCAqLworCWJvb2wJCXVuaXF1ZURlYWRJZ25vcmVkOyAvKiBpZ25vcmUgZGVhZCB0dXBs ZXMgaW4gdW5pcXVlIGNoZWNrICovCiB9IFR1cGxlc29ydEluZGV4QlRyZWVBcmc7CiAKIC8qCkBA IC0zNTgsNiArMzYwLDcgQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhl YXBSZWwsCiAJCQkJCQkJUmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJYm9vbCBlbmZvcmNlVW5p cXVlLAogCQkJCQkJCWJvb2wgdW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlib29sIHVu aXF1ZURlYWRJZ25vcmVkLAogCQkJCQkJCWludCB3b3JrTWVtLAogCQkJCQkJCVNvcnRDb29yZGlu YXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJaW50IHNvcnRvcHQpCkBAIC00MDAsNiArNDAzLDcgQEAg dHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5pbmRl eC5pbmRleFJlbCA9IGluZGV4UmVsOwogCWFyZy0+ZW5mb3JjZVVuaXF1ZSA9IGVuZm9yY2VVbmlx dWU7CiAJYXJnLT51bmlxdWVOdWxsc05vdERpc3RpbmN0ID0gdW5pcXVlTnVsbHNOb3REaXN0aW5j dDsKKwlhcmctPnVuaXF1ZURlYWRJZ25vcmVkID0gdW5pcXVlRGVhZElnbm9yZWQ7CiAKIAlpbmRl eFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKIApAQCAtMTY1Myw2ICsx NjU3LDcgQEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUg KmEsIGNvbnN0IFNvcnRUdXBsZSAqYiwKIAkJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107 CiAJCWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhfS0VZU107CiAJCWNoYXIJICAgKmtleV9kZXNjOwor CQlib29sCQl1bmlxdWVDaGVja0ZhaWwgPSB0cnVlOwogCiAJCS8qCiAJCSAqIFNvbWUgcmF0aGVy IGJyYWluLWRlYWQgaW1wbGVtZW50YXRpb25zIG9mIHFzb3J0IChzdWNoIGFzIHRoZSBvbmUgaW4K QEAgLTE2NjIsMTggKzE2NjcsNTggQEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhj b25zdCBTb3J0VHVwbGUgKmEsIGNvbnN0IFNvcnRUdXBsZSAqYiwKIAkJICovCiAJCUFzc2VydCh0 dXBsZTEgIT0gdHVwbGUyKTsKIAotCQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMs IHZhbHVlcywgaXNudWxsKTsKLQotCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0 aW9uKGFyZy0+aW5kZXguaW5kZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKLQotCQllcmVwb3J0KEVS Uk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCi0JCQkJIGVycm1z ZygiY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKLQkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSwKLQkJCQkga2V5X2Rlc2MgPyBl cnJkZXRhaWwoIktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6Ci0JCQkJIGVycmRl dGFpbCgiRHVwbGljYXRlIGtleXMgZXhpc3QuIiksCi0JCQkJIGVycnRhYmxlY29uc3RyYWludChh cmctPmluZGV4LmhlYXBSZWwsCi0JCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmct PmluZGV4LmluZGV4UmVsKSkpKTsKKwkJLyogVGhpcyBpcyBmYWlsLWZhc3QgY2hlY2ssIHNlZSBf YnRfbG9hZCBmb3IgZGV0YWlscy4gKi8KKwkJaWYgKGFyZy0+dW5pcXVlRGVhZElnbm9yZWQpCisJ CXsKKwkJCWJvb2wJYW55X3R1cGxlX2RlYWQsCisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZSwKKwkJ CQkJaWdub3JlZDsKKworCQkJVHVwbGVUYWJsZVNsb3QJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVU YWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihhcmctPmluZGV4LmhlYXBSZWwpLAorCQkJCQkJCQkJ CQkJCQkJICZUVFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCQkJSXRlbVBvaW50ZXJEYXRhIHRpZCA9 IHR1cGxlMS0+dF90aWQ7CisKKwkJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVf aW5kZXhfZmV0Y2hfYmVnaW4oYXJnLT5pbmRleC5oZWFwUmVsKTsKKwkJCWFueV90dXBsZV9kZWFk ID0gIXRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNs b3QsICZjYWxsX2FnYWluLCAmaWdub3JlZCk7CisKKwkJCWlmICghYW55X3R1cGxlX2RlYWQpCisJ CQl7CisJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCXRpZCA9IHR1cGxlMi0+dF90aWQ7CisJ CQkJYW55X3R1cGxlX2RlYWQgPSAhdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0dXBs ZTItPnRfdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLAorCQkJCQkJCQkJCQkJ CQkgICZpZ25vcmVkKTsKKwkJCX0KKworCQkJaWYgKGFueV90dXBsZV9kZWFkKQorCQkJeworCQkJ CWVsb2coREVCVUc1LCAic2tpcHBpbmcgZHVwbGljYXRlIHZhbHVlcyBiZWNhdXNlIHNvbWUgb2Yg dGhlbSBhcmUgZGVhZDogKCV1LCV1KSB2cyAoJXUsJXUpIiwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoJnR1cGxlMS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXIoJnR1cGxlMS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigm dHVwbGUyLT50X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUy LT50X3RpZCkpOworCisJCQkJdW5pcXVlQ2hlY2tGYWlsID0gZmFsc2U7CisJCQl9CisJCQlFeGVj RHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCQkJdGFibGVfaW5kZXhfZmV0Y2hfZW5k KGZldGNoKTsKKwkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7 CisJCX0KKwkJaWYgKHVuaXF1ZUNoZWNrRmFpbCkKKwkJeworCQkJaW5kZXhfZGVmb3JtX3R1cGxl KHR1cGxlMSwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCWtleV9kZXNjID0gQnVpbGRJ bmRleFZhbHVlRGVzY3JpcHRpb24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251bGwp OworCisJCQkvKiBrZWVwIHRoaXMgZXJyb3IgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUg aW4gX2J0X2xvYWQgKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf VU5JUVVFX1ZJT0xBVElPTiksCisJCQkJCQkJZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1 ZSBpbmRleCBcIiVzXCIiLAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmct PmluZGV4LmluZGV4UmVsKSksCisJCQkJCQkJa2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBp cyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6CisJCQkJCQkJZXJyZGV0YWlsKCJEdXBsaWNhdGUg a2V5cyBleGlzdC4iKSwKKwkJCQkJCQllcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFw UmVsLAorCQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4Lmlu ZGV4UmVsKSkpKTsKKwkJfQogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvbmJ0cmVlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5kZXggZWJjYTAyNTg4 ZDMuLjM4NDcxZTkwYTBjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0xMzM5LDggKzEzMzksMTAgQEAg ZXh0ZXJuIGJvb2wgYnRwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4g Y2hhciAqYnRidWlsZHBoYXNlbmFtZShpbnQ2NCBwaGFzZW51bSk7CiBleHRlcm4gSW5kZXhUdXBs ZSBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAogCQkJCQkJ CSAgIEluZGV4VHVwbGUgZmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KTsKK2V4dGVy biBpbnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJ bmRleFR1cGxlIGZpcnN0cmlnaHQsCisJCQkJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIGJv b2wgKmhhc251bGxzKTsKIGV4dGVybiBpbnQJX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiBy ZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCk7 CisJCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCwgYm9vbCAqaGFzbnVsbHMpOwogZXh0ZXJu IGJvb2wgX2J0X2NoZWNrX25hdHRzKFJlbGF0aW9uIHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsIFBh Z2UgcGFnZSwKIAkJCQkJCQlPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIGV4dGVybiB2b2lkIF9idF9j aGVja190aGlyZF9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcCwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oCmluZGV4IGE2OWY3MWEzYWNlLi5hY2QyMGRiZmFiOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBA IC0xNzU0LDkgKzE3NTQsOCBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNj YW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKICAqIFRoaXMgb25seSByZWFs bHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6 ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCiAgKgotICogSW4gY2FzZSBvZiBub24tdW5pcXVl IGNvbmN1cnJlbnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKLSAq IGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBm bHkgdG8gYWxsb3cgeG1pbgotICogaG9yaXpvbiBwcm9wYWdhdGUuCisgKiBJbiBjYXNlIG9mIGNv bmN1cnJlbnQgaW5kZXggYnVpbGQgU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhl IHNjYW4uCisgKiBUaGF0IGxlYWRzIGZvciBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0 byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJs ZQogdGFibGVfaW5kZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxl c29ydC5oCmluZGV4IGVmNzlmMjU5ZjkzLi5lYjliYzMwZTVkYSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0 LmgKQEAgLTQyOSw2ICs0MjksNyBAQCBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9i ZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJCQkJICAgUmVsYXRp b24gaW5kZXhSZWwsCiAJCQkJCQkJCQkJCQkgICBib29sIGVuZm9yY2VVbmlxdWUsCiAJCQkJCQkJ CQkJCQkgICBib29sIHVuaXF1ZU51bGxzTm90RGlzdGluY3QsCisJCQkJCQkJCQkJCQkgICBib29s CXVuaXF1ZURlYWRJZ25vcmVkLAogCQkJCQkJCQkJCQkJICAgaW50IHdvcmtNZW0sIFNvcnRDb29y ZGluYXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkgICBpbnQgc29ydG9wdCk7CiBleHRlcm4g VHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9oYXNoKFJlbGF0aW9uIGhlYXBS ZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0 ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5kZXggNTk1YTQwMDBjZTAu LjlmMDNmYTMwMzNjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC00 MSw3ICs0MSwxMSBAQCBFTkQ7ICQkOwogLS0tLS0tLS0tLS0tLS0tLQogQUxURVIgVEFCTEUgY2lj X3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKIENSRUFURSBVTklRVUUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0 cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKQEAgLTg2LDcg KzkwLDkgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5f c25hcHNob3RfZWZmZWN0aXZlJyk7CiAoMSByb3cpCiAKIENSRUFURSBVTklRVUUgSU5ERVggQ09O Q1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxp emUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNj YW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCi0tIAoyLjQzLjAKCg== --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0007-Add-Datum-storage-support-to-tuplestore.patch" Content-Disposition: attachment; filename="v20-0007-Add-Datum-storage-support-to-tuplestore.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogw10 RnJvbSBhNWI3OTlhOTk5ZjhjYzdkYmM5MzQ0NTRmMGQ0N2RmZjE0YzdmZGE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDA3LzEyXSBBZGQgRGF0dW0gc3RvcmFnZSBzdXBwb3J0IHRvIHR1cGxlc3RvcmUK CiBFeHRlbmQgdHVwbGVzdG9yZSB0byBzdG9yZSBpbmRpdmlkdWFsIERhdHVtIHZhbHVlczoKLSBm aXhlZC1sZW5ndGggZGF0YXR5cGVzOiBzdG9yZSByYXcgYnl0ZXMgd2l0aG91dCBhIGxlbmd0aCBo ZWFkZXIKLSB2YXJpYWJsZS1sZW5ndGggZGF0YXR5cGVzOiBpbmNsdWRlIGEgbGVuZ3RoIGhlYWRl ciBhbmQgcGFkZGluZwotIGJ5LXZhbHVlIHR5cGVzOiBzdG9yZSBpbmxpbmUKClRoaXMgc3VwcG9y dCBlbmFibGVzIHVzYWdlcyB0dXBsZXN0b3JlIGZvciBub24tdHVwbGUgZGF0YSAoVElEcykgaW4g dGhlIG5leHQgY29tbWl0LgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5j IHwgMjcwICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3R1 cGxlc3RvcmUuaCAgICAgIHwgIDMzICsrLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjQ0IGluc2VydGlv bnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3Nv cnQvdHVwbGVzdG9yZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKaW5k ZXggYzlhZWNhYjhkNjYuLjEyYWU3MDVjMDkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9zb3J0L3R1cGxlc3RvcmUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3Rv cmUuYwpAQCAtMSwxNiArMSwxOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdHVwbGVz dG9yZS5jCi0gKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3JhcnkgdHVwbGUgc3Rv cmFnZS4KKyAqCSAgR2VuZXJhbGl6ZWQgcm91dGluZXMgZm9yIHRlbXBvcmFyeSBzdG9yYWdlIG9m IHR1cGxlcyBhbmQgRGF0dW1zLgorICoKKyAqIFRoaXMgbW9kdWxlIGhhbmRsZXMgdGVtcG9yYXJ5 IHN0b3JhZ2Ugb2YgZWl0aGVyIHR1cGxlcyBvciBzaW5nbGUKKyAqIERhdHVtIHZhbHVlcyBmb3Ig cHVycG9zZXMgc3VjaCBhcyBNYXRlcmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0Y2gKKyAqIGZp bGVzLCBldGMuIEl0IGlzIGVzc2VudGlhbGx5IGEgZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0dXBs ZXNvcnQuYzsKKyAqIGl0IGRvZXMgbm8gc29ydGluZyBvZiB0dXBsZXMgYnV0IGNhbiBvbmx5IHN0 b3JlIGFuZCByZWd1cmdpdGF0ZSBhIHNlcXVlbmNlCisgKiBvZiB0dXBsZXMuICBIb3dldmVyLCBi ZWNhdXNlIG5vIHNvcnQgaXMgcmVxdWlyZWQsIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQKKyAqIHJl YWRpbmcgdGhlIHNlcXVlbmNlIGJlZm9yZSBpdCBoYXMgYWxsIGJlZW4gd3JpdHRlbi4KKyAqCisg KiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1cnNvcnMsIGJlY2F1c2UgaXQgYWxs b3dzIHJhbmRvbSBhY2Nlc3MKKyAqIHdpdGhpbiB0aGUgYWxyZWFkeS1zY2FubmVkIHBvcnRpb24g b2YgYSBxdWVyeSB3aXRob3V0IGhhdmluZyB0byBwcm9jZXNzCisgKiB0aGUgdW5kZXJseWluZyBz Y2FuIHRvIGNvbXBsZXRpb24uCiAgKgotICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0ZW1wb3Jhcnkg c3RvcmFnZSBvZiB0dXBsZXMgZm9yIHB1cnBvc2VzIHN1Y2gKLSAqIGFzIE1hdGVyaWFsaXplIG5v ZGVzLCBoYXNoam9pbiBiYXRjaCBmaWxlcywgZXRjLiAgSXQgaXMgZXNzZW50aWFsbHkKLSAqIGEg ZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0dXBsZXNvcnQuYzsgaXQgZG9lcyBubyBzb3J0aW5nIG9m IHR1cGxlcwotICogYnV0IGNhbiBvbmx5IHN0b3JlIGFuZCByZWd1cmdpdGF0ZSBhIHNlcXVlbmNl IG9mIHR1cGxlcy4gIEhvd2V2ZXIsCi0gKiBiZWNhdXNlIG5vIHNvcnQgaXMgcmVxdWlyZWQsIGl0 IGlzIGFsbG93ZWQgdG8gc3RhcnQgcmVhZGluZyB0aGUgc2VxdWVuY2UKLSAqIGJlZm9yZSBpdCBo YXMgYWxsIGJlZW4gd3JpdHRlbi4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY3Vy c29ycywKLSAqIGJlY2F1c2UgaXQgYWxsb3dzIHJhbmRvbSBhY2Nlc3Mgd2l0aGluIHRoZSBhbHJl YWR5LXNjYW5uZWQgcG9ydGlvbiBvZgotICogYSBxdWVyeSB3aXRob3V0IGhhdmluZyB0byBwcm9j ZXNzIHRoZSB1bmRlcmx5aW5nIHNjYW4gdG8gY29tcGxldGlvbi4KICAqIEFsc28sIGl0IGlzIHBv c3NpYmxlIHRvIHN1cHBvcnQgbXVsdGlwbGUgaW5kZXBlbmRlbnQgcmVhZCBwb2ludGVycy4KICAq CiAgKiBBIHRlbXBvcmFyeSBmaWxlIGlzIHVzZWQgdG8gaGFuZGxlIHRoZSBkYXRhIGlmIGl0IGV4 Y2VlZHMgdGhlCkBAIC02MSw2ICs2NCw4IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3Iu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIK KyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIK IApAQCAtMTE1LDE2ICsxMjAsMTUgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogCUJ1ZkZpbGUg ICAgKm15ZmlsZTsJCQkvKiB1bmRlcmx5aW5nIGZpbGUsIG9yIE5VTEwgaWYgbm9uZSAqLwogCU1l bW9yeUNvbnRleHQgY29udGV4dDsJCS8qIG1lbW9yeSBjb250ZXh0IGZvciBob2xkaW5nIHR1cGxl cyAqLwogCVJlc291cmNlT3duZXIgcmVzb3duZXI7CQkvKiByZXNvd25lciBmb3IgaG9sZGluZyB0 ZW1wIGZpbGVzICovCisJT2lkCQkJZGF0dW1UeXBlOwkJLyogSW52YWxpZE9pZCBvciBvaWQgb2Yg RGF0dW0ncyB0byBiZSBzdG9yZWQgKi8KKwlpbnQxNgkJZGF0dW1UeXBlTGVuOwkvKiB0eXBlbGVu IG9mIHRoYXQgRGF0dW0gKi8KKwlib29sCQlkYXR1bVR5cGVCeVZhbDsgLyogYnktdmFsdWUgb2Yg dGhhdCBhdHVtICovCiAKIAkvKgogCSAqIFRoZXNlIGZ1bmN0aW9uIHBvaW50ZXJzIGRlY291cGxl IHRoZSByb3V0aW5lcyB0aGF0IG11c3Qga25vdyB3aGF0IGtpbmQKIAkgKiBvZiB0dXBsZSB3ZSBh cmUgaGFuZGxpbmcgZnJvbSB0aGUgcm91dGluZXMgdGhhdCBkb24ndCBuZWVkIHRvIGtub3cgaXQu CiAJICogVGhleSBhcmUgc2V0IHVwIGJ5IHRoZSB0dXBsZXN0b3JlX2JlZ2luX3h4eCByb3V0aW5l cy4KIAkgKgotCSAqIChBbHRob3VnaCB0dXBsZXN0b3JlLmMgY3VycmVudGx5IG9ubHkgc3VwcG9y dHMgaGVhcCB0dXBsZXMsIEkndmUgY29waWVkCi0JICogdGhpcyBwYXJ0IG9mIHR1cGxlc29ydC5j IHNvIHRoYXQgZXh0ZW5zaW9uIHRvIG90aGVyIGtpbmRzIG9mIG9iamVjdHMKLQkgKiB3aWxsIGJl IGVhc3kgaWYgaXQncyBldmVyIG5lZWRlZC4pCi0JICoKIAkgKiBGdW5jdGlvbiB0byBjb3B5IGEg c3VwcGxpZWQgaW5wdXQgdHVwbGUgaW50byBwYWxsb2MnZCBzcGFjZS4gKE5COiB3ZQogCSAqIGFz c3VtZSB0aGF0IGEgc2luZ2xlIHBmcmVlKCkgaXMgZW5vdWdoIHRvIHJlbGVhc2UgdGhlIHR1cGxl IGxhdGVyLCBzbwogCSAqIHRoZSByZXByZXNlbnRhdGlvbiBtdXN0IGJlICJmbGF0IiBpbiBvbmUg cGFsbG9jIGNodW5rLikgc3RhdGUtPmF2YWlsTWVtCkBAIC0xNDMsMTIgKzE0NywxOCBAQCBzdHJ1 Y3QgVHVwbGVzdG9yZXN0YXRlCiAKIAkvKgogCSAqIEZ1bmN0aW9uIHRvIHJlYWQgYSBzdG9yZWQg dHVwbGUgZnJvbSB0YXBlIGJhY2sgaW50byBtZW1vcnkuICdsZW4nIGlzCi0JICogdGhlIGFscmVh ZHktcmVhZCBsZW5ndGggb2YgdGhlIHN0b3JlZCB0dXBsZS4gIENyZWF0ZSBhbmQgcmV0dXJuIGEK LQkgKiBwYWxsb2MnZCBjb3B5LCBhbmQgZGVjcmVhc2Ugc3RhdGUtPmF2YWlsTWVtIGJ5IHRoZSBh bW91bnQgb2YgbWVtb3J5Ci0JICogc3BhY2UgY29uc3VtZWQuCisJICogdGhlIGFscmVhZHkta25v d24gKHJlYWQgb2YgY29uc3RhbnQpIGxlbmd0aCBvZiB0aGUgc3RvcmVkIHR1cGxlLgorCSAqIENy ZWF0ZSBhbmQgcmV0dXJuIGEgcGFsbG9jJ2QgY29weSwgYW5kIGRlY3JlYXNlIHN0YXRlLT5hdmFp bE1lbSBieSB0aGUKKwkgKiBhbW91bnQgb2YgbWVtb3J5IHNwYWNlIGNvbnN1bWVkLgogCSAqLwog CXZvaWQJICAgKigqcmVhZHR1cCkgKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGlu dCBsZW4pOwogCisJLyoKKwkgKiBGdW5jdGlvbiB0byBnZXQgbGVuZ2ggb2YgdHVwbGUgZnJvbSB0 YXBlLiBVc2VkIHRvIHByb3ZpZGUgJ2xlbicgYXJndW1lbnQKKwkgKiBmb3IgcmVhZHR1cCAoc2Vl IGFib3ZlKS4KKwkgKi8KKwl1bnNpZ25lZCBpbnQoKmxlbnR1cCkoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSwgYm9vbCBlb2ZPSyk7CisKIAkvKgogCSAqIFRoaXMgYXJyYXkgaG9sZHMgcG9pbnRlcnMg dG8gdHVwbGVzIGluIG1lbW9yeSBpZiB3ZSBhcmUgaW4gc3RhdGUgSU5NRU0uCiAJICogSW4gc3Rh dGVzIFdSSVRFRklMRSBhbmQgUkVBREZJTEUgaXQncyBub3QgdXNlZC4KQEAgLTE4NSw2ICsxOTUs NyBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAjZGVmaW5lIENPUFlUVVAoc3RhdGUsdHVwKQko KCooc3RhdGUpLT5jb3B5dHVwKSAoc3RhdGUsIHR1cCkpCiAjZGVmaW5lIFdSSVRFVFVQKHN0YXRl LHR1cCkgKCgqKHN0YXRlKS0+d3JpdGV0dXApIChzdGF0ZSwgdHVwKSkKICNkZWZpbmUgUkVBRFRV UChzdGF0ZSxsZW4pCSgoKihzdGF0ZSktPnJlYWR0dXApIChzdGF0ZSwgbGVuKSkKKyNkZWZpbmUg TEVOVFVQKHN0YXRlLGVvZk9LKQkoKCooc3RhdGUpLT5sZW50dXApIChzdGF0ZSwgZW9mT0spKQog I2RlZmluZSBMQUNLTUVNKHN0YXRlKQkJKChzdGF0ZSktPmF2YWlsTWVtIDwgMCkKICNkZWZpbmUg VVNFTUVNKHN0YXRlLGFtdCkJKChzdGF0ZSktPmF2YWlsTWVtIC09IChhbXQpKQogI2RlZmluZSBG UkVFTUVNKHN0YXRlLGFtdCkJKChzdGF0ZSktPmF2YWlsTWVtICs9IChhbXQpKQpAQCAtMTkzLDkg KzIwNCw5IEBAIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUKICAqCiAgKiBOT1RFUyBhYm91dCBvbi10 YXBlIHJlcHJlc2VudGF0aW9uIG9mIHR1cGxlczoKICAqCi0gKiBXZSByZXF1aXJlIHRoZSBmaXJz dCAidW5zaWduZWQgaW50IiBvZiBhIHN0b3JlZCB0dXBsZSB0byBiZSB0aGUgdG90YWwgc2l6ZQot ICogb24tdGFwZSBvZiB0aGUgdHVwbGUsIGluY2x1ZGluZyBpdHNlbGYgKHNvIGl0IGlzIG5ldmVy IHplcm8pLgotICogVGhlIHJlbWFpbmRlciBvZiB0aGUgc3RvcmVkIHR1cGxlCisgKiBJbiBjYXNl IG9mIHR1cGxlcyB3ZSB1c2UgZmlyc3QgInVuc2lnbmVkIGludCIgb2YgYSBzdG9yZWQgdHVwbGUK KyAqIHRvIGJlIHRoZSB0b3RhbCBzaXplIG9uLXRhcGUgb2YgdGhlIHR1cGxlLCBpbmNsdWRpbmcg aXRzZWxmCisgKiAoc28gaXQgaXMgbmV2ZXIgemVybykuIFRoZSByZW1haW5kZXIgb2YgdGhlIHN0 b3JlZCB0dXBsZQogICogbWF5IG9yIG1heSBub3QgbWF0Y2ggdGhlIGluLW1lbW9yeSByZXByZXNl bnRhdGlvbiBvZiB0aGUgdHVwbGUgLS0tCiAgKiBhbnkgY29udmVyc2lvbiBuZWVkZWQgaXMgdGhl IGpvYiBvZiB0aGUgd3JpdGV0dXAgYW5kIHJlYWR0dXAgcm91dGluZXMuCiAgKgpAQCAtMjA2LDEw ICsyMTcsMTMgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogICogc3RhdGUtPmJhY2t3YXJkIGlz IG5vdCBzZXQsIHRoZSB3cml0ZS9yZWFkIHJvdXRpbmVzIG1heSBvbWl0IHRoZSBleHRyYQogICog bGVuZ3RoIHdvcmQuCiAgKgorICogSW4gY2FzZSBvZiBEYXR1bSB3aXRoIGNvbnN0YW50IGxlbmdo dCBib3RoICJ1bnNpZ25lZCBpbnQiIGFyZSBvbW1pdHRlZC4KKyAqCiAgKiB3cml0ZXR1cCBpcyBl eHBlY3RlZCB0byB3cml0ZSBib3RoIGxlbmd0aCB3b3JkcyBhcyB3ZWxsIGFzIHRoZSB0dXBsZQog ICogZGF0YS4gIFdoZW4gcmVhZHR1cCBpcyBjYWxsZWQsIHRoZSB0YXBlIGlzIHBvc2l0aW9uZWQg anVzdCBhZnRlciB0aGUKLSAqIGZyb250IGxlbmd0aCB3b3JkOyByZWFkdHVwIG11c3QgcmVhZCB0 aGUgdHVwbGUgZGF0YSBhbmQgYWR2YW5jZSBwYXN0Ci0gKiB0aGUgYmFjayBsZW5ndGggd29yZCAo aWYgcHJlc2VudCkuCisgKiBmcm9udCBsZW5ndGggd29yZCAoaWYgaXQgbm90IG9tbWl0dGVkIGxp a2UgaW4gY2FzZSBvZiBjb250YW50LXNpemUgRGF0dW0pOworICogcmVhZHR1cCBtdXN0IHJlYWQg dGhlIHR1cGxlIGRhdGEgYW5kIGFkdmFuY2UgcGFzdCB0aGUgYmFjayBsZW5ndGggd29yZAorICog KGlmIHByZXNlbnQpLgogICoKICAqIFRoZSB3cml0ZS9yZWFkIHJvdXRpbmVzIGNhbiBtYWtlIHVz ZSBvZiB0aGUgdHVwbGUgZGVzY3JpcHRpb24gZGF0YQogICogc3RvcmVkIGluIHRoZSBUdXBsZXN0 b3Jlc3RhdGUgcmVjb3JkLCBpZiBuZWVkZWQuIFRoZXkgYXJlIGFsc28gZXhwZWN0ZWQKQEAgLTI0 MSwxMSArMjU1LDE2IEBAIHN0YXRpYyBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVnaW5f Y29tbW9uKGludCBlZmxhZ3MsCiBzdGF0aWMgdm9pZCB0dXBsZXN0b3JlX3B1dHR1cGxlX2NvbW1v bihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICp0dXBsZSk7CiBzdGF0aWMgdm9pZCBkdW1w dHVwbGVzKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgdHVwbGVzdG9yZV91 cGRhdGVtYXgoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSk7Ci1zdGF0aWMgdW5zaWduZWQgaW50IGdl dGxlbihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKTsKKworc3RhdGljIHVuc2ln bmVkIGludCBsZW50dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKTsK IHN0YXRpYyB2b2lkICpjb3B5dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAq dHVwKTsKIHN0YXRpYyB2b2lkIHdyaXRldHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwg dm9pZCAqdHVwKTsKIHN0YXRpYyB2b2lkICpyZWFkdHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSwgdW5zaWduZWQgaW50IGxlbik7CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbGVudHVwX2Rh dHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworc3RhdGljIHZvaWQgKmNv cHl0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqZGF0dW0pOworc3RhdGlj IHZvaWQgd3JpdGV0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqZGF0dW0p Oworc3RhdGljIHZvaWQgKnJlYWR0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdW5z aWduZWQgaW50IGxlbik7CiAKIC8qCiAgKgkJdHVwbGVzdG9yZV9iZWdpbl94eHgKQEAgLTI2OCw2 ICsyODcsMTIgQEAgdHVwbGVzdG9yZV9iZWdpbl9jb21tb24oaW50IGVmbGFncywgYm9vbCBpbnRl clhhY3QsIGludCBtYXhLQnl0ZXMpCiAJc3RhdGUtPmFsbG93ZWRNZW0gPSBtYXhLQnl0ZXMgKiAo aW50NjQpIDEwMjQ7CiAJc3RhdGUtPmF2YWlsTWVtID0gc3RhdGUtPmFsbG93ZWRNZW07CiAJc3Rh dGUtPm15ZmlsZSA9IE5VTEw7CisJLyoKKwkgKiBTZXQgRGF0dW0gcmVsYXRlZCBkYXRhIHRvIGlu dmFsaWQgYnkgZGVmYXVsdC4KKwkgKi8KKwlzdGF0ZS0+ZGF0dW1UeXBlID0gSW52YWxpZE9pZDsK KwlzdGF0ZS0+ZGF0dW1UeXBlTGVuID0gIDA7CisJc3RhdGUtPmRhdHVtVHlwZUJ5VmFsID0gZmFs c2U7CiAKIAkvKgogCSAqIFRoZSBwYWxsb2MvcGZyZWUgcGF0dGVybiBmb3IgdHVwbGUgbWVtb3J5 IGlzIGluIGEgRklGTyBwYXR0ZXJuLiAgQQpAQCAtMzQ1LDYgKzM3MCwzNiBAQCB0dXBsZXN0b3Jl X2JlZ2luX2hlYXAoYm9vbCByYW5kb21BY2Nlc3MsIGJvb2wgaW50ZXJYYWN0LCBpbnQgbWF4S0J5 dGVzKQogCXN0YXRlLT5jb3B5dHVwID0gY29weXR1cF9oZWFwOwogCXN0YXRlLT53cml0ZXR1cCA9 IHdyaXRldHVwX2hlYXA7CiAJc3RhdGUtPnJlYWR0dXAgPSByZWFkdHVwX2hlYXA7CisJc3RhdGUt PmxlbnR1cCA9IGxlbnR1cF9oZWFwOworCisJcmV0dXJuIHN0YXRlOworfQorCisvKgorICogVGhl IHNhbWUgYXMgdHVwbGVzdG9yZV9iZWdpbl9oZWFwIGJ1dCBjcmVhdGUgc3RvcmUgZm9yIERhdHVt IHZhbHVlcy4KKyAqLworVHVwbGVzdG9yZXN0YXRlICoKK3R1cGxlc3RvcmVfYmVnaW5fZGF0dW0o T2lkIGRhdHVtVHlwZSwgYm9vbCByYW5kb21BY2Nlc3MsIGJvb2wgaW50ZXJYYWN0LCBpbnQgbWF4 S0J5dGVzKQoreworCVR1cGxlc3RvcmVzdGF0ZSAqc3RhdGU7CisJaW50CQkJZWZsYWdzOworCisJ LyoKKwkgKiBUaGlzIGludGVycHJldGF0aW9uIG9mIHRoZSBtZWFuaW5nIG9mIHJhbmRvbUFjY2Vz cyBpcyBjb21wYXRpYmxlIHdpdGgKKwkgKiB0aGUgcHJlLTguMyBiZWhhdmlvciBvZiB0dXBsZXN0 b3Jlcy4KKwkgKi8KKwllZmxhZ3MgPSByYW5kb21BY2Nlc3MgPworCQkoRVhFQ19GTEFHX0JBQ0tX QVJEIHwgRVhFQ19GTEFHX1JFV0lORCkgOgorCQkoRVhFQ19GTEFHX1JFV0lORCk7CisKKwlzdGF0 ZSA9IHR1cGxlc3RvcmVfYmVnaW5fY29tbW9uKGVmbGFncywgaW50ZXJYYWN0LCBtYXhLQnl0ZXMp OworCXN0YXRlLT5kYXR1bVR5cGUgPSBkYXR1bVR5cGU7CisJZ2V0X3R5cGxlbmJ5dmFsKHN0YXRl LT5kYXR1bVR5cGUsICZzdGF0ZS0+ZGF0dW1UeXBlTGVuLCAmc3RhdGUtPmRhdHVtVHlwZUJ5VmFs KTsKKworCXN0YXRlLT5jb3B5dHVwID0gY29weXR1cF9kYXR1bTsKKwlzdGF0ZS0+d3JpdGV0dXAg PSB3cml0ZXR1cF9kYXR1bTsKKwlzdGF0ZS0+cmVhZHR1cCA9IHJlYWR0dXBfZGF0dW07CisJc3Rh dGUtPmxlbnR1cCA9IGxlbnR1cF9kYXR1bTsKIAogCXJldHVybiBzdGF0ZTsKIH0KQEAgLTc3Niw2 ICs4MzEsMjUgQEAgdHVwbGVzdG9yZV9wdXR0dXBsZShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBI ZWFwVHVwbGUgdHVwbGUpCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiB9CiAKKy8q CisgKiBMaWtlIHR1cGxlc3RvcmVfcHV0dHVwbGVzbG90IGJ1dCBmb3Igc2luZ2xlIERhdHVtLgor ICovCit2b2lkCit0dXBsZXN0b3JlX3B1dGRhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIERh dHVtIGRhdHVtKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKHN0YXRlLT5jb250ZXh0KTsKKworCS8qCisJICogQ29weSB0aGUgRGF0dW0uICAoTXVzdCBk byB0aGlzIGV2ZW4gaW4gV1JJVEVGSUxFIGNhc2UuICBOb3RlIHRoYXQKKwkgKiBDT1BZVFVQIGlu Y2x1ZGVzIFVTRU1FTSwgc28gd2UgbmVlZG4ndCBkbyB0aGF0IGhlcmUuKQorCSAqLworCWRhdHVt ID0gUG9pbnRlckdldERhdHVtKENPUFlUVVAoc3RhdGUsIERhdHVtR2V0UG9pbnRlcihkYXR1bSkp KTsKKworCXR1cGxlc3RvcmVfcHV0dHVwbGVfY29tbW9uKHN0YXRlLCBEYXR1bUdldFBvaW50ZXIo ZGF0dW0pKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCiAvKgogICog U2ltaWxhciB0byB0dXBsZXN0b3JlX3B1dHR1cGxlKCksIGJ1dCB3b3JrIGZyb20gdmFsdWVzICsg bnVsbHMgYXJyYXlzLgogICogVGhpcyBhdm9pZHMgYW4gZXh0cmEgdHVwbGUtY29uc3RydWN0aW9u IG9wZXJhdGlvbi4KQEAgLTEwMzAsNyArMTEwNCw3IEBAIHR1cGxlc3RvcmVfZ2V0dHVwbGUoVHVw bGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAogCQkJKnNob3VsZF9mcmVlID0gdHJ1 ZTsKIAkJCWlmIChmb3J3YXJkKQogCQkJewotCQkJCWlmICgodHVwbGVuID0gZ2V0bGVuKHN0YXRl LCB0cnVlKSkgIT0gMCkKKwkJCQlpZiAoKHR1cGxlbiA9IExFTlRVUChzdGF0ZSwgdHJ1ZSkpICE9 IDApCiAJCQkJewogCQkJCQl0dXAgPSBSRUFEVFVQKHN0YXRlLCB0dXBsZW4pOwogCQkJCQlyZXR1 cm4gdHVwOwpAQCAtMTA1OSw3ICsxMTMzLDcgQEAgdHVwbGVzdG9yZV9nZXR0dXBsZShUdXBsZXN0 b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCiAJCQkJQXNzZXJ0KCFzdGF0ZS0+dHJ1bmNh dGVkKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KLQkJCXR1cGxlbiA9IGdldGxlbihzdGF0ZSwg ZmFsc2UpOworCQkJdHVwbGVuID0gTEVOVFVQKHN0YXRlLCBmYWxzZSk7CiAKIAkJCWlmIChyZWFk cHRyLT5lb2ZfcmVhY2hlZCkKIAkJCXsKQEAgLTEwOTAsNyArMTE2NCw3IEBAIHR1cGxlc3RvcmVf Z2V0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAogCQkJCQlBc3Nl cnQoIXN0YXRlLT50cnVuY2F0ZWQpOwogCQkJCQlyZXR1cm4gTlVMTDsKIAkJCQl9Ci0JCQkJdHVw bGVuID0gZ2V0bGVuKHN0YXRlLCBmYWxzZSk7CisJCQkJdHVwbGVuID0gTEVOVFVQKHN0YXRlLCBm YWxzZSk7CiAJCQl9CiAKIAkJCS8qCkBAIC0xMTUyLDYgKzEyMjYsMjUgQEAgdHVwbGVzdG9yZV9n ZXR0dXBsZXNsb3QoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAogCX0KIH0K IAorZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXRkYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRl LCBib29sIGZvcndhcmQsCisJCQkJCQkJCWJvb2wgKnNob3VsZF9mcmVlLCBEYXR1bSAqcmVzdWx0 KQoreworCURhdHVtIGRhdHVtOworCSpzaG91bGRfZnJlZSA9IGZhbHNlOworCisJZGF0dW0gPSAo RGF0dW0pIHR1cGxlc3RvcmVfZ2V0dHVwbGUoc3RhdGUsIGZvcndhcmQsIHNob3VsZF9mcmVlKTsK KwlpZiAoZGF0dW0pCisJeworCQkqcmVzdWx0ID1kYXR1bTsKKwkJcmV0dXJuIHRydWU7CisJfQor CWVsc2UKKwl7CisJCSpyZXN1bHQgPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCXJldHVybiBm YWxzZTsKKwl9Cit9CisKIC8qCiAgKiB0dXBsZXN0b3JlX2FkdmFuY2UgLSBleHBvcnRlZCBmdW5j dGlvbiB0byBhZGp1c3QgcG9zaXRpb24gd2l0aG91dCBmZXRjaGluZwogICoKQEAgLTE1NTYsMjUg KzE2NDksNiBAQCB0dXBsZXN0b3JlX2luX21lbW9yeShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlKQog CXJldHVybiAoc3RhdGUtPnN0YXR1cyA9PSBUU1NfSU5NRU0pOwogfQogCi0KLS8qCi0gKiBUYXBl IGludGVyZmFjZSByb3V0aW5lcwotICovCi0KLXN0YXRpYyB1bnNpZ25lZCBpbnQKLWdldGxlbihU dXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQotewotCXVuc2lnbmVkIGludCBsZW47 Ci0Jc2l6ZV90CQluYnl0ZXM7Ci0KLQluYnl0ZXMgPSBCdWZGaWxlUmVhZE1heWJlRU9GKHN0YXRl LT5teWZpbGUsICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7Ci0JaWYgKG5ieXRlcyA9PSAwKQot CQlyZXR1cm4gMDsKLQllbHNlCi0JCXJldHVybiBsZW47Ci19Ci0KLQogLyoKICAqIFJvdXRpbmVz IHNwZWNpYWxpemVkIGZvciBIZWFwVHVwbGUgY2FzZQogICoKQEAgLTE1ODUsNiArMTY1OSwxOSBA QCBnZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKICAqIHRvIHdyaXRl IHRoYXQgc2VwYXJhdGVseS4KICAqLwogCitzdGF0aWMgdW5zaWduZWQgaW50CitsZW50dXBfaGVh cChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQoreworCXVuc2lnbmVkIGludCBs ZW47CisJc2l6ZV90CQluYnl0ZXM7CisKKwluYnl0ZXMgPSBCdWZGaWxlUmVhZE1heWJlRU9GKHN0 YXRlLT5teWZpbGUsICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7CisJaWYgKG5ieXRlcyA9PSAw KQorCQlyZXR1cm4gMDsKKwllbHNlCisJCXJldHVybiBsZW47Cit9CisKIHN0YXRpYyB2b2lkICoK IGNvcHl0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICp0dXApCiB7CkBAIC0x NjMxLDMgKzE3MTgsOTggQEAgcmVhZHR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVu c2lnbmVkIGludCBsZW4pCiAJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15ZmlsZSwgJnR1cGxl biwgc2l6ZW9mKHR1cGxlbikpOwogCXJldHVybiB0dXBsZTsKIH0KKworLyoKKyAqIFJvdXRpbmVz IHNwZWNpYWxpemVkIGZvciBEYXR1bSBjYXNlLgorICoKKyAqIEhhbmRsZXMgYm90aCBmaXhlZCBh bmQgdmFyaWFibGUtbGVuZ3RoIERhdHVtcyBlZmZpY2llbnRseToKKyAqIC0gRml4ZWQtbGVuZ3Ro OiBzdG9yZXMgcmF3IGJ5dGVzIHdpdGhvdXQgbGVuZ3RoIHByZWZpeAorICogLSBWYXJpYWJsZS1s ZW5ndGg6IGluY2x1ZGVzIGxlbmd0aCBwcmVmaXggKGFuZCBzdWZmaXggaWYgYmFja3dhcmQgc2Nh bikKKyAqIC0gQnktdmFsdWUgdHlwZXMgaGFuZGxlZCBpbmxpbmUgd2l0aG91dCBleHRyYSBjb3B5 aW5nCisgKi8KKworc3RhdGljIHVuc2lnbmVkIGludAorbGVudHVwX2RhdHVtKFR1cGxlc3RvcmVz dGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spCit7CisJdW5zaWduZWQgaW50IGxlbjsKKwlzaXplX3QJ CW5ieXRlczsKKworCUFzc2VydChzdGF0ZS0+ZGF0dW1UeXBlICE9IEludmFsaWRPaWQpOworCisJ aWYgKHN0YXRlLT5kYXR1bVR5cGVMZW4gPiAwKQorCQlyZXR1cm4gc3RhdGUtPmRhdHVtVHlwZUxl bjsKKworCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkTWF5YmVFT0Yoc3RhdGUtPm15ZmlsZSwgJmxlbiwg c2l6ZW9mKGxlbiksIGVvZk9LKTsKKwlpZiAobmJ5dGVzID09IDApCisJCXJldHVybiAwOworCWVs c2UKKwkJcmV0dXJuIGxlbjsKK30KKworc3RhdGljIHZvaWQgKgorY29weXR1cF9kYXR1bShUdXBs ZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkKiBkYXR1bSkKK3sKKwlBc3NlcnQoc3RhdGUtPmRhdHVt VHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUJ5VmFsKQorCQlyZXR1 cm4gRGF0dW1HZXRQb2ludGVyKFBvaW50ZXJHZXREYXR1bShkYXR1bSkpOworCWVsc2UKKwl7CisJ CURhdHVtIGQgPSBkYXR1bUNvcHkoUG9pbnRlckdldERhdHVtKGRhdHVtKSwgc3RhdGUtPmRhdHVt VHlwZUJ5VmFsLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwkJVVNFTUVNKHN0YXRlLCBHZXRNZW1v cnlDaHVua1NwYWNlKERhdHVtR2V0UG9pbnRlcihkKSkpOworCQlyZXR1cm4gRGF0dW1HZXRQb2lu dGVyKGQpOworCX0KK30KKworc3RhdGljIHZvaWQKK3dyaXRldHVwX2RhdHVtKFR1cGxlc3RvcmVz dGF0ZSAqc3RhdGUsIHZvaWQqIGRhdHVtKQoreworCUFzc2VydChzdGF0ZS0+ZGF0dW1UeXBlICE9 IEludmFsaWRPaWQpOworCWlmIChzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwpCisJeworCQlBc3NlcnQo c3RhdGUtPmRhdHVtVHlwZUxlbiA+IDApOworCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwg ZGF0dW0sIHN0YXRlLT5kYXR1bVR5cGVMZW4pOworCX0KKwllbHNlCisJeworCQlTaXplIHNpemUg PSBzdGF0ZS0+ZGF0dW1UeXBlTGVuOworCQlpZiAoc3RhdGUtPmRhdHVtVHlwZUxlbiA8IDApCisJ CXsKKwkJCUJ1ZkZpbGVXcml0ZShzdGF0ZS0+bXlmaWxlLCAmc2l6ZSwgc2l6ZW9mKHNpemUpKTsK KwkJCXNpemUgPSBkYXR1bUdldFNpemUoUG9pbnRlckdldERhdHVtKGRhdHVtKSwgc3RhdGUtPmRh dHVtVHlwZUJ5VmFsLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwkJfQorCisJCUJ1ZkZpbGVXcml0 ZShzdGF0ZS0+bXlmaWxlLCBkYXR1bSwgc2l6ZSk7CisKKwkJLyogbmVlZCB0cmFpbGluZyBsZW5n dGggd29yZD8gKi8KKwkJaWYgKHN0YXRlLT5iYWNrd2FyZCAmJiBzdGF0ZS0+ZGF0dW1UeXBlTGVu IDwgMCkKKwkJCUJ1ZkZpbGVXcml0ZShzdGF0ZS0+bXlmaWxlLCAmc2l6ZSwgc2l6ZW9mKHNpemUp KTsKKworCQlGUkVFTUVNKHN0YXRlLCBHZXRNZW1vcnlDaHVua1NwYWNlKGRhdHVtKSk7CisJCXBm cmVlKGRhdHVtKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkKgorcmVhZHR1cF9kYXR1bShUdXBsZXN0 b3Jlc3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKQoreworCUFzc2VydChzdGF0ZS0+ZGF0 dW1UeXBlICE9IEludmFsaWRPaWQpOworCWlmIChzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwpCisJewor CQlEYXR1bSBkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwkJQXNzZXJ0KHN0YXRlLT5k YXR1bVR5cGVMZW4gPiAwKTsKKwkJQXNzZXJ0KGxlbiA9PSBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsK KwkJQnVmRmlsZVJlYWRFeGFjdChzdGF0ZS0+bXlmaWxlLCAmZGF0dW0sIHN0YXRlLT5kYXR1bVR5 cGVMZW4pOworCQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKGRhdHVtKTsKKwl9CisJZWxzZQorCXsK KwkJRGF0dW0gKmRhdHVtcyA9IHBhbGxvYyhsZW4pOworCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRl LT5teWZpbGUsICZkYXR1bXMsIGxlbik7CisKKwkJLyogbmVlZCB0cmFpbGluZyBsZW5ndGggd29y ZD8gKi8KKwkJaWYgKHN0YXRlLT5iYWNrd2FyZCAmJiBzdGF0ZS0+ZGF0dW1UeXBlTGVuIDwgMCkK KwkJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15ZmlsZSwgJmxlbiwgc2l6ZW9mKGxlbikpOwor CisJCXJldHVybiBEYXR1bUdldFBvaW50ZXIoKmRhdHVtcyk7CisJfQorfQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzdG9yZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVz dG9yZS5oCmluZGV4IDg2NWJhN2I4MjY1Li4wMzQxYzQ3Yjg1MSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvdHVwbGVzdG9yZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3Rv cmUuaApAQCAtMSwxNyArMSwxOCBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdHVwbGVz dG9yZS5oCi0gKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3JhcnkgdHVwbGUgc3Rv cmFnZS4KKyAqCSAgR2VuZXJhbGl6ZWQgcm91dGluZXMgZm9yIHRlbXBvcmFyeSBzdG9yYWdlIG9m IHR1cGxlcyBhbmQgRGF0dW1zLgogICoKLSAqIFRoaXMgbW9kdWxlIGhhbmRsZXMgdGVtcG9yYXJ5 IHN0b3JhZ2Ugb2YgdHVwbGVzIGZvciBwdXJwb3NlcyBzdWNoCi0gKiBhcyBNYXRlcmlhbGl6ZSBu b2RlcywgaGFzaGpvaW4gYmF0Y2ggZmlsZXMsIGV0Yy4gIEl0IGlzIGVzc2VudGlhbGx5Ci0gKiBh IGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0LmM7IGl0IGRvZXMgbm8gc29ydGluZyBv ZiB0dXBsZXMKLSAqIGJ1dCBjYW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5j ZSBvZiB0dXBsZXMuICBIb3dldmVyLAotICogYmVjYXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBp dCBpcyBhbGxvd2VkIHRvIHN0YXJ0IHJlYWRpbmcgdGhlIHNlcXVlbmNlCi0gKiBiZWZvcmUgaXQg aGFzIGFsbCBiZWVuIHdyaXR0ZW4uICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1 cnNvcnMsCi0gKiBiZWNhdXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzIHdpdGhpbiB0aGUgYWxy ZWFkeS1zY2FubmVkIHBvcnRpb24gb2YKLSAqIGEgcXVlcnkgd2l0aG91dCBoYXZpbmcgdG8gcHJv Y2VzcyB0aGUgdW5kZXJseWluZyBzY2FuIHRvIGNvbXBsZXRpb24uCi0gKiBBbHNvLCBpdCBpcyBw b3NzaWJsZSB0byBzdXBwb3J0IG11bHRpcGxlIGluZGVwZW5kZW50IHJlYWQgcG9pbnRlcnMuCisg KiBUaGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBzdG9yYWdlIG9mIGVpdGhlciB0dXBsZXMg b3Igc2luZ2xlCisgKiBEYXR1bSB2YWx1ZXMgZm9yIHB1cnBvc2VzIHN1Y2ggYXMgTWF0ZXJpYWxp emUgbm9kZXMsIGhhc2hqb2luIGJhdGNoCisgKiBmaWxlcywgZXRjLiBJdCBpcyBlc3NlbnRpYWxs eSBhIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0LmM7CisgKiBpdCBkb2VzIG5vIHNv cnRpbmcgb2YgdHVwbGVzIGJ1dCBjYW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1 ZW5jZQorICogb2YgdHVwbGVzLiAgSG93ZXZlciwgYmVjYXVzZSBubyBzb3J0IGlzIHJlcXVpcmVk LCBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0CisgKiByZWFkaW5nIHRoZSBzZXF1ZW5jZSBiZWZvcmUg aXQgaGFzIGFsbCBiZWVuIHdyaXR0ZW4uCisgKgorICogVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNl ZnVsIGZvciBjdXJzb3JzLCBiZWNhdXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzCisgKiB3aXRo aW4gdGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mIGEgcXVlcnkgd2l0aG91dCBoYXZpbmcg dG8gcHJvY2VzcworICogdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgogICoKICAq IEEgdGVtcG9yYXJ5IGZpbGUgaXMgdXNlZCB0byBoYW5kbGUgdGhlIGRhdGEgaWYgaXQgZXhjZWVk cyB0aGUKICAqIHNwYWNlIGxpbWl0IHNwZWNpZmllZCBieSB0aGUgY2FsbGVyLgpAQCAtMzksMTQg KzQwLDEzIEBACiAgKi8KIHR5cGVkZWYgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZSBUdXBsZXN0b3Jl c3RhdGU7CiAKLS8qCi0gKiBDdXJyZW50bHkgd2Ugb25seSBuZWVkIHRvIHN0b3JlIE1pbmltYWxU dXBsZXMsIGJ1dCBpdCB3b3VsZCBiZSBlYXN5Ci0gKiB0byBzdXBwb3J0IHRoZSBzYW1lIGJlaGF2 aW9yIGZvciBJbmRleFR1cGxlcyBhbmQvb3IgYmFyZSBEYXR1bXMuCi0gKi8KLQogZXh0ZXJuIFR1 cGxlc3RvcmVzdGF0ZSAqdHVwbGVzdG9yZV9iZWdpbl9oZWFwKGJvb2wgcmFuZG9tQWNjZXNzLAog CQkJCQkJCQkJCQkgIGJvb2wgaW50ZXJYYWN0LAogCQkJCQkJCQkJCQkgIGludCBtYXhLQnl0ZXMp OworZXh0ZXJuIFR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzdG9yZV9iZWdpbl9kYXR1bShPaWQgZGF0 dW1UeXBlLAorCQkJCQkJCQkJCQkgYm9vbCByYW5kb21BY2Nlc3MsCisJCQkJCQkJCQkJCSBib29s IGludGVyWGFjdCwKKwkJCQkJCQkJCQkJIGludCBtYXhLQnl0ZXMpOwogCiBleHRlcm4gdm9pZCB0 dXBsZXN0b3JlX3NldF9lZmxhZ3MoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgaW50IGVmbGFncyk7 CiAKQEAgLTU1LDYgKzU1LDcgQEAgZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9wdXR0dXBsZXNsb3Qo VHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwKIGV4dGVybiB2b2lkIHR1cGxlc3RvcmVfcHV0dHVwbGUo VHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgSGVhcFR1cGxlIHR1cGxlKTsKIGV4dGVybiB2b2lkIHR1 cGxlc3RvcmVfcHV0dmFsdWVzKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIFR1cGxlRGVzYyB0ZGVz YywKIAkJCQkJCQkJIGNvbnN0IERhdHVtICp2YWx1ZXMsIGNvbnN0IGJvb2wgKmlzbnVsbCk7Citl eHRlcm4gdm9pZCB0dXBsZXN0b3JlX3B1dGRhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIERh dHVtIGRhdHVtKTsKIAogZXh0ZXJuIGludAl0dXBsZXN0b3JlX2FsbG9jX3JlYWRfcG9pbnRlcihU dXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBpbnQgZWZsYWdzKTsKIApAQCAtNzIsNiArNzMsOCBAQCBl eHRlcm4gYm9vbCB0dXBsZXN0b3JlX2luX21lbW9yeShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlKTsK IAogZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSwgYm9vbCBmb3J3YXJkLAogCQkJCQkJCQkJYm9vbCBjb3B5LCBUdXBsZVRhYmxlU2xvdCAq c2xvdCk7CitleHRlcm4gYm9vbCB0dXBsZXN0b3JlX2dldGRhdHVtKFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIGJvb2wgZm9yd2FyZCwKKwkJCQkJCQkJYm9vbCAqc2hvdWxkX2ZyZWUsIERhdHVtICpy ZXN1bHQpOwogCiBleHRlcm4gYm9vbCB0dXBsZXN0b3JlX2FkdmFuY2UoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSwgYm9vbCBmb3J3YXJkKTsKIAotLSAKMi40My4wCgo= --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0006-Add-STIR-access-method-and-flags-related-to-auxi.patch" Content-Disposition: attachment; filename="v20-0006-Add-STIR-access-method-and-flags-related-to-auxi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogx11 RnJvbSBiODFjMDk2YzNhYWZlZmI0NTkxZWVmYmY1ZTYwZDM3ODA1MGVjMzA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDA2LzEyXSBBZGQgU1RJUiBhY2Nlc3MgbWV0aG9kIGFuZCBmbGFncyByZWxhdGVk IHRvCiBhdXhpbGlhcnkgaW5kZXhlcwoKVGhpcyBwYXRjaCBwcm92aWRlcyBpbmZyYXN0cnVjdHVy ZSBmb3IgZm9sbG93aW5nIGVuaGFuY2VtZW50cyB0byBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBi eToKLSBpaV9BdXhpbGlhcnkgaW4gSW5kZXhJbmZvOiBpbmRpY2F0ZXMgdGhhdCBhbiBpbmRleCBp cyBhbiBhdXhpbGlhcnkgaW5kZXggdXNlZCBkdXJpbmcgY29uY3VycmVudCBpbmRleCBidWlsZAot IHZhbGlkYXRlX2luZGV4IGluIEluZGV4VmFjdXVtSW5mbzogc2V0IGlmIGluZGV4X2J1bGtfZGVs ZXRlIGNhbGxlZCBkdXJpbmcgdGhlIHZhbGlkYXRpb24gcGhhc2Ugb2YgY29uY3VycmVudCBpbmRl eCBidWlsZAotIFNUSVIoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzIG1ldGhv ZCBpcyBpbnRyb2R1Y2VkLCBpbnRlbmRlZCBzb2xlbHkgZm9yIHNob3J0LWxpdmVkLCBhdXhpbGlh cnkgdXNhZ2UKClNUSVIgZnVuY3Rpb25zIGRlc2lnbmVkIGFzIGFuIGVwaGVtZXJhbCBoZWxwZXIg ZHVyaW5nIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB0ZW1wb3JhcmlseSBzdG9yaW5nIFRJRHMg d2l0aG91dCBwcm92aWRpbmcgdGhlIGZ1bGwgZmVhdHVyZXMgb2YgYSB0eXBpY2FsIGFjY2VzcyBt ZXRob2QuIEFzIHN1Y2gsIGl0IHJhaXNlcyB3YXJuaW5ncyBvciBlcnJvcnMgd2hlbiBhY2Nlc3Nl ZCBvdXRzaWRlIGl0cyBzcGVjaWFsaXplZCB1c2FnZSBwYXRoLgoKUGxhbm5lZCB0byBiZSB1c2Vk IGluIGZvbGxvd2luZyBjb21taXRzLgotLS0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVw bGUuYyAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlICAgICAgICAgfCAgMTggKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9h Y2Nlc3Mvc3Rpci9zdGlyLmMgICAgICAgICAgIHwgNTczICsrKysrKysrKysrKysrKysrKysrKysr CiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9ub2Rlcy9t YWtlZnVuY3MuYyAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5o ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaCAg ICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaCAgICAgICAgICAgICAg ICB8IDExNyArKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQgICAgICAgICAgICB8 ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0ICAgICAgIHwgICA0ICsK IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0ICAgICAgfCAgIDIgKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS91dGlscy9p bmRleF9zZWxmdW5jcy5oICAgICAgIHwgICA4ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv YW11dGlscy5vdXQgICAgfCAgIDggKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nh bml0eS5vdXQgfCAgIDcgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQgICAg ICAgfCAgMjQgKy0KIDIzIGZpbGVzIGNoYW5nZWQsIDc3NyBpbnNlcnRpb25zKCspLCAxOCBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtl ZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1 aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaAoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUv cGdzdGF0dHVwbGUuYwppbmRleCBhNmRhZDU0ZmY1OC4uY2E1MjE0NDYxZTYgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYworKysgYi9jb250cmliL3Bnc3RhdHR1 cGxlL3Bnc3RhdHR1cGxlLmMKQEAgLTI4NSw2ICsyODUsOSBAQCBwZ3N0YXRfcmVsYXRpb24oUmVs YXRpb24gcmVsLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJCWNhc2UgU1BHSVNUX0FNX09J RDoKIAkJCQllcnIgPSAic3BnaXN0IGluZGV4IjsKIAkJCQlicmVhazsKKwkJCWNhc2UgU1RJUl9B TV9PSUQ6CisJCQkJZXJyID0gInN0aXIgaW5kZXgiOworCQkJCWJyZWFrOwogCQkJY2FzZSBCUklO X0FNX09JRDoKIAkJCQllcnIgPSAiYnJpbiBpbmRleCI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZp bGUKaW5kZXggMTkzMmQxMWQxNTQuLmNkNjUyNGE1NGFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlCkBAIC05 LDYgKzksNiBAQCB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRp cikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBTVUJESVJTCSAgICA9IGJyaW4gY29tbW9uIGdpbiBn aXN0IGhhc2ggaGVhcCBpbmRleCBuYnRyZWUgcm1ncmRlc2Mgc3BnaXN0IFwKLQkJCSAgc2VxdWVu Y2UgdGFibGUgdGFibGVzYW1wbGUgdHJhbnNhbQorCQkJICBzdGlyIHNlcXVlbmNlIHRhYmxlIHRh Ymxlc2FtcGxlIHRyYW5zYW0KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2Nv bW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGYyODMyNmJhZDA5 Li4yMzJjODdlYzI2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMzA5 Miw2ICszMDkyLDcgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IERFQlVH MjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVn eSA9IHZhY3JlbC0+YnN0cmF0ZWd5OworCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwog CiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uLgpAQCAtMzE0Myw2 ICszMTQ0LDcgQEAgbGF6eV9jbGVhbnVwX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIEluZGV4 QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcmVs dHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHZhY3JlbC0+YnN0cmF0ZWd5OworCWl2aW5mby52 YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNr IGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxk IGIvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCmluZGV4IDdhMmQwZGRiNjg5Li5hMTU2 Y2RkZmYzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZApAQCAtMTEsNiArMTEsNyBAQCBzdWJkaXIo J25idHJlZScpCiBzdWJkaXIoJ3JtZ3JkZXNjJykKIHN1YmRpcignc2VxdWVuY2UnKQogc3ViZGly KCdzcGdpc3QnKQorc3ViZGlyKCdzdGlyJykKIHN1YmRpcigndGFibGUnKQogc3ViZGlyKCd0YWJs ZXNhbXBsZScpCiBzdWJkaXIoJ3RyYW5zYW0nKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3N0aXIvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmFlNTg5OGI4ZDcKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZQpAQCAtMCwwICsxLDE4 IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBNYWtlZmlsZS0tCisjICAgIE1ha2VmaWxlIGZv ciBhY2Nlc3Mvc3RpcgorIworIyBJREVOVElGSUNBVElPTgorIyAgICBzcmMvYmFja2VuZC9hY2Nl c3Mvc3Rpci9NYWtlZmlsZQorIworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3ViZGlyID0gc3JjL2Jh Y2tlbmQvYWNjZXNzL3N0aXIKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQo dG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCisKK09CSlMgPSBcCisJc3Rpci5vCisK K2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21tb24ubWsKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNv bi5idWlsZCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zOWM2ZWNhODQ4ZAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsNSBAQAor IyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisKK2JhY2tlbmRfc291cmNlcyArPSBmaWxlcygKKwknc3Rpci5jJywKKykKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGly LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjAxZjNiNjYwZjRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCkBAIC0wLDAgKzEsNTczIEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBzdGlyLmMKKyAqCSAgSW1wbGVtZW50YXRpb24gb2YgU2hvcnQtVGVybSBJ bmRleCBSZXBsYWNlbWVudC4KKyAqCisgKiBTVElSIGlzIGEgc3BlY2lhbGl6ZWQgYWNjZXNzIG1l dGhvZCB0eXBlIGRlc2lnbmVkIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZQorICogb2YgVElEIHZhbHVl cyBkdXJpbmcgY29uY3VyZXJudCBpbmRleCBidWlsZCBvcGVyYXRpb25zLgorICoKKyAqIFRoZSB0 eXBpY2FsIGxpZmVjeWNsZSBvZiBhIFNUSVIgaW5kZXggaXM6CisgKiAxLiBjcmVhdGVkIGFzIGFu IGF1eGlsaWFyeSBpbmRleCBmb3IgQ0lDL1JJQworICogMi4gYWNjZXB0cyBpbnNlcnRzIGZvciBh IHBlcmlvZAorICogMy4gc3RpcmJ1bGtkZWxldGUgY2FsbGVkIGR1cmluZyBpbmRleCB2YWxpZGF0 aW9uIHBoYXNlCisgKiA1LiBnZXRzIGRyb3BwZWQKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURF TlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCisgKgorICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAi YWNjZXNzL3N0aXIuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJhY2Nlc3Mv YW12YWxpZGF0ZS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRl ICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX2Ftb3AuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVt LmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9jYXRjYWNo ZS5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmRl eF9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRp bHMvcmVncHJvYy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBTdGly IGhhbmRsZXIgZnVuY3Rpb246IHJldHVybiBJbmRleEFtUm91dGluZSB3aXRoIGFjY2VzcyBtZXRo b2QgcGFyYW1ldGVycworICogYW5kIGNhbGxiYWNrcy4KKyAqLworRGF0dW0KK3N0aXJoYW5kbGVy KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSW5kZXhBbVJvdXRpbmUgKmFtcm91dGluZSA9IG1ha2VO b2RlKEluZGV4QW1Sb3V0aW5lKTsKKworCS8qIFNldCBTVElSLXNwZWNpZmljIHN0cmF0ZWd5IGFu ZCBwcm9jZWR1cmUgbnVtYmVycyAqLworCWFtcm91dGluZS0+YW1zdHJhdGVnaWVzID0gU1RJUl9O U1RSQVRFR0lFUzsKKwlhbXJvdXRpbmUtPmFtc3VwcG9ydCA9IFNUSVJfTlBST0M7CisJYW1yb3V0 aW5lLT5hbW9wdHNwcm9jbnVtID0gU1RJUl9PUFRJT05TX1BST0M7CisKKwkvKiBTVElSIGRvZXNu J3Qgc3VwcG9ydCBtb3N0IGluZGV4IG9wZXJhdGlvbnMgKi8KKwlhbXJvdXRpbmUtPmFtY2Fub3Jk ZXIgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2Fub3JkZXJieW9wID0gZmFsc2U7CisJYW1yb3V0 aW5lLT5hbWNhbmJhY2t3YXJkID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbnVuaXF1ZSA9IGZh bHNlOworCWFtcm91dGluZS0+YW1jYW5tdWx0aWNvbCA9IHRydWU7CisJYW1yb3V0aW5lLT5hbW9w dGlvbmFsa2V5ID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtc2VhcmNoYXJyYXkgPSBmYWxzZTsKKwlh bXJvdXRpbmUtPmFtc2VhcmNobnVsbHMgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtc3RvcmFnZSA9 IGZhbHNlOworCWFtcm91dGluZS0+YW1jbHVzdGVyYWJsZSA9IGZhbHNlOworCWFtcm91dGluZS0+ YW1wcmVkbG9ja3MgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FucGFyYWxsZWwgPSBmYWxzZTsK KwlhbXJvdXRpbmUtPmFtY2FuYnVpbGRwYXJhbGxlbCA9IGZhbHNlOworCWFtcm91dGluZS0+YW1j YW5pbmNsdWRlID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtdXNlbWFpbnRlbmFuY2V3b3JrbWVtID0g ZmFsc2U7CisJYW1yb3V0aW5lLT5hbXBhcmFsbGVsdmFjdXVtb3B0aW9ucyA9CisJCQlWQUNVVU1f T1BUSU9OX1BBUkFMTEVMX0JVTEtERUwgfCBWQUNVVU1fT1BUSU9OX1BBUkFMTEVMX0NMRUFOVVA7 CisJYW1yb3V0aW5lLT5hbWtleXR5cGUgPSBJbnZhbGlkT2lkOworCisJLyogU2V0IHVwIGZ1bmN0 aW9uIGNhbGxiYWNrcyAqLworCWFtcm91dGluZS0+YW1idWlsZCA9IHN0aXJidWlsZDsKKwlhbXJv dXRpbmUtPmFtYnVpbGRlbXB0eSA9IHN0aXJidWlsZGVtcHR5OworCWFtcm91dGluZS0+YW1pbnNl cnQgPSBzdGlyaW5zZXJ0OworCWFtcm91dGluZS0+YW1pbnNlcnRjbGVhbnVwID0gTlVMTDsKKwlh bXJvdXRpbmUtPmFtYnVsa2RlbGV0ZSA9IHN0aXJidWxrZGVsZXRlOworCWFtcm91dGluZS0+YW12 YWN1dW1jbGVhbnVwID0gc3RpcnZhY3V1bWNsZWFudXA7CisJYW1yb3V0aW5lLT5hbWNhbnJldHVy biA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWNvc3Rlc3RpbWF0ZSA9IHN0aXJjb3N0ZXN0aW1hdGU7 CisJYW1yb3V0aW5lLT5hbW9wdGlvbnMgPSBzdGlyb3B0aW9uczsKKwlhbXJvdXRpbmUtPmFtcHJv cGVydHkgPSBOVUxMOworCWFtcm91dGluZS0+YW1idWlsZHBoYXNlbmFtZSA9IE5VTEw7CisJYW1y b3V0aW5lLT5hbXZhbGlkYXRlID0gc3RpcnZhbGlkYXRlOworCWFtcm91dGluZS0+YW1hZGp1c3Rt ZW1iZXJzID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtYmVnaW5zY2FuID0gc3RpcmJlZ2luc2NhbjsK KwlhbXJvdXRpbmUtPmFtcmVzY2FuID0gc3RpcnJlc2NhbjsKKwlhbXJvdXRpbmUtPmFtZ2V0dHVw bGUgPSBOVUxMOworCWFtcm91dGluZS0+YW1nZXRiaXRtYXAgPSBOVUxMOworCWFtcm91dGluZS0+ YW1lbmRzY2FuID0gc3RpcmVuZHNjYW47CisJYW1yb3V0aW5lLT5hbW1hcmtwb3MgPSBOVUxMOwor CWFtcm91dGluZS0+YW1yZXN0cnBvcyA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWVzdGltYXRlcGFy YWxsZWxzY2FuID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtaW5pdHBhcmFsbGVsc2NhbiA9IE5VTEw7 CisJYW1yb3V0aW5lLT5hbXBhcmFsbGVscmVzY2FuID0gTlVMTDsKKworCVBHX1JFVFVSTl9QT0lO VEVSKGFtcm91dGluZSk7Cit9CisKKy8qCisgKiBWYWxpZGF0ZXMgb3BlcmF0b3IgY2xhc3MgZm9y IFNUSVIgaW5kZXguCisgKgorICogU1RJUiBpcyBub3QgYW4gcmVhbCBpbmRleCwgc28gdmFsaWRh dGlvIG1heSBiZSBza2lwcGVkLgorICogQnV0IHdlIGRvIGl0IGp1c3QgZm9yIGNvbnNpc3RlbmN5 LgorICovCitib29sCitzdGlydmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCit7CisJYm9vbCByZXN1 bHQgPSB0cnVlOworCUhlYXBUdXBsZSBjbGFzc3R1cDsKKwlGb3JtX3BnX29wY2xhc3MgY2xhc3Nm b3JtOworCU9pZCBvcGZhbWlseW9pZDsKKwlIZWFwVHVwbGUgZmFtaWx5dHVwOworCUZvcm1fcGdf b3BmYW1pbHkgZmFtaWx5Zm9ybTsKKwljaGFyICpvcGZhbWlseW5hbWU7CisJQ2F0Q0xpc3QgKnBy b2NsaXN0LAorCQkJKm9wcmxpc3Q7CisJaW50IGk7CisKKwkvKiBGZXRjaCBvcGNsYXNzIGluZm9y bWF0aW9uICovCisJY2xhc3N0dXAgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdl dERhdHVtKG9wY2xhc3NvaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhc3N0dXApKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgY2xhc3MgJXUi LCBvcGNsYXNzb2lkKTsKKwljbGFzc2Zvcm0gPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1Qo Y2xhc3N0dXApOworCisJb3BmYW1pbHlvaWQgPSBjbGFzc2Zvcm0tPm9wY2ZhbWlseTsKKworCisJ LyogRmV0Y2ggb3BmYW1pbHkgaW5mb3JtYXRpb24gKi8KKwlmYW1pbHl0dXAgPSBTZWFyY2hTeXND YWNoZTEoT1BGQU1JTFlPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKwlpZiAo IUhlYXBUdXBsZUlzVmFsaWQoZmFtaWx5dHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIG9wZXJhdG9yIGZhbWlseSAldSIsIG9wZmFtaWx5b2lkKTsKKwlmYW1pbHlm b3JtID0gKEZvcm1fcGdfb3BmYW1pbHkpIEdFVFNUUlVDVChmYW1pbHl0dXApOworCisJb3BmYW1p bHluYW1lID0gTmFtZVN0cihmYW1pbHlmb3JtLT5vcGZuYW1lKTsKKworCS8qIEZldGNoIGFsbCBv cGVyYXRvcnMgYW5kIHN1cHBvcnQgZnVuY3Rpb25zIG9mIHRoZSBvcGZhbWlseSAqLworCW9wcmxp c3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFNT1BTVFJBVEVHWSwgT2JqZWN0SWRHZXREYXR1bShv cGZhbWlseW9pZCkpOworCXByb2NsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShBTVBST0NOVU0s IE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKworCS8qIENoZWNrIGluZGl2aWR1YWwg b3BlcmF0b3JzICovCisJZm9yIChpID0gMDsgaSA8IG9wcmxpc3QtPm5fbWVtYmVyczsgaSsrKQor CXsKKwkJSGVhcFR1cGxlIG9wcnR1cCA9ICZvcHJsaXN0LT5tZW1iZXJzW2ldLT50dXBsZTsKKwkJ Rm9ybV9wZ19hbW9wIG9wcmZvcm0gPSAoRm9ybV9wZ19hbW9wKSBHRVRTVFJVQ1Qob3BydHVwKTsK KworCQkvKiBDaGVjayBpdCdzIGFsbG93ZWQgc3RyYXRlZ3kgZm9yIHN0aXIgKi8KKwkJaWYgKG9w cmZvcm0tPmFtb3BzdHJhdGVneSA8IDEgfHwKKwkJCW9wcmZvcm0tPmFtb3BzdHJhdGVneSA+IFNU SVJfTlNUUkFURUdJRVMpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3Bm YW1pbHkgJXMgY29udGFpbnMgb3BlcmF0b3IgJXMgd2l0aCBpbnZhbGlkIHN0cmF0ZWd5IG51bWJl ciAlZCIsCisJCQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJh dG9yKG9wcmZvcm0tPmFtb3BvcHIpLAorCQkJCQkJCQkgICBvcHJmb3JtLT5hbW9wc3RyYXRlZ3kp KSk7CisJCQlyZXN1bHQgPSBmYWxzZTsKKwkJfQorCisJCS8qIHN0aXIgZG9lc24ndCBzdXBwb3J0 IE9SREVSIEJZIG9wZXJhdG9ycyAqLworCQlpZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgIT0gQU1P UF9TRUFSQ0ggfHwKKwkJCU9pZElzVmFsaWQob3ByZm9ybS0+YW1vcHNvcnRmYW1pbHkpKQorCQl7 CisJCQllcmVwb3J0KElORk8sCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJzdGlyIG9wZmFtaWx5ICVzIGNvbnRhaW5zIGlu dmFsaWQgT1JERVIgQlkgc3BlY2lmaWNhdGlvbiBmb3Igb3BlcmF0b3IgJXMiLAorCQkJCQkJCQkg ICBvcGZhbWlseW5hbWUsCisJCQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9w b3ByKSkpKTsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogQ2hlY2sgb3BlcmF0b3Ig c2lnbmF0dXJlIC0tLSBzYW1lIGZvciBhbGwgc3RpciBzdHJhdGVnaWVzICovCisJCWlmICghY2hl Y2tfYW1vcF9zaWduYXR1cmUob3ByZm9ybS0+YW1vcG9wciwgQk9PTE9JRCwKKwkJCQkJCQkJICBv cHJmb3JtLT5hbW9wbGVmdHR5cGUsCisJCQkJCQkJCSAgb3ByZm9ybS0+YW1vcHJpZ2h0dHlwZSkp CisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29udGFp bnMgb3BlcmF0b3IgJXMgd2l0aCB3cm9uZyBzaWduYXR1cmUiLAorCQkJCQkJCQkgICBvcGZhbWls eW5hbWUsCisJCQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkpKTsK KwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisJfQorCisKKwlSZWxlYXNlQ2F0Q2FjaGVMaXN0KHBy b2NsaXN0KTsKKwlSZWxlYXNlQ2F0Q2FjaGVMaXN0KG9wcmxpc3QpOworCVJlbGVhc2VTeXNDYWNo ZShmYW1pbHl0dXApOworCVJlbGVhc2VTeXNDYWNoZShjbGFzc3R1cCk7CisKKwlyZXR1cm4gcmVz dWx0OworfQorCisKKy8qCisgKiBJbml0aWFsaXplIG1ldGFwYWdlIG9mIGEgU1RJUiBpbmRleC4K KyAqIFRoZSBza2lwSW5zZXJ0cyBmbGFnIGRldGVybWluZXMgaWYgbmV3IGluc2VydHMgd2lsbCBi ZSBhY2NlcHRlZCBvciBza2lwcGVkLgorICovCit2b2lkCitTdGlyRmlsbE1ldGFwYWdlKFJlbGF0 aW9uIGluZGV4LCBQYWdlIG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKQoreworCVN0aXJNZXRh UGFnZURhdGEgKm1ldGFkYXRhOworCisJU3RpckluaXRQYWdlKG1ldGFQYWdlLCBTVElSX01FVEEp OworCW1ldGFkYXRhID0gU3RpclBhZ2VHZXRNZXRhKG1ldGFQYWdlKTsKKwltZW1zZXQobWV0YWRh dGEsIDAsIHNpemVvZihTdGlyTWV0YVBhZ2VEYXRhKSk7CisJbWV0YWRhdGEtPm1hZ2lja051bWJl ciA9IFNUSVJfTUFHSUNLX05VTUJFUjsKKwltZXRhZGF0YS0+c2tpcEluc2VydHMgPSBza2lwSW5z ZXJ0czsKKwkoKFBhZ2VIZWFkZXIpIG1ldGFQYWdlKS0+cGRfbG93ZXIgKz0gc2l6ZW9mKFN0aXJN ZXRhUGFnZURhdGEpOworfQorCisvKgorICogQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBtZXRh cGFnZSBmb3IgYSBTVElSIGluZGV4LgorICogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGluZGV4IGNy ZWF0aW9uLgorICovCit2b2lkCitTdGlySW5pdE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBGb3Jr TnVtYmVyIGZvcmtudW0pCit7CisJQnVmZmVyIG1ldGFCdWZmZXI7CisJUGFnZSBtZXRhUGFnZTsK KworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRleCkpOworCS8qCisJICogTWFrZSBhIG5l dyBwYWdlOyBzaW5jZSBpdCBpcyBmaXJzdCBwYWdlIGl0IHNob3VsZCBiZSBhc3NvY2lhdGVkIHdp dGgKKwkgKiBibG9jayBudW1iZXIgMCAoU1RJUl9NRVRBUEFHRV9CTEtOTykuICBObyBuZWVkIHRv IGhvbGQgdGhlIGV4dGVuc2lvbgorCSAqIGxvY2sgYmVjYXVzZSB0aGVyZSBjYW5ub3QgYmUgY29u Y3VycmVudCBpbnNlcnRlcnMgeWV0LgorCSAqLworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVyRXh0 ZW5kZWQoaW5kZXgsIGZvcmtudW0sIFBfTkVXLCBSQk1fTk9STUFMLCBOVUxMKTsKKwlTVEFSVF9D UklUX1NFQ1RJT04oKTsKKwlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xV U0lWRSk7CisJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKG1ldGFCdWZmZXIpID09IFNUSVJf TUVUQVBBR0VfQkxLTk8pOworCisJbWV0YVBhZ2UgPSAgQnVmZmVyR2V0UGFnZShtZXRhQnVmZmVy KTsKKwlTdGlyRmlsbE1ldGFwYWdlKGluZGV4LCBtZXRhUGFnZSwgZm9ya251bSA9PSBJTklUX0ZP UktOVU0pOworCisJTWFya0J1ZmZlckRpcnR5KG1ldGFCdWZmZXIpOworCUVORF9DUklUX1NFQ1RJ T04oKTsKKwlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworfQorCisvKgorICogSW5p dGlhbGl6ZSBhbnkgcGFnZSBvZiBhIHN0aXIgaW5kZXguCisgKi8KK3ZvaWQKK1N0aXJJbml0UGFn ZShQYWdlIHBhZ2UsIHVpbnQxNiBmbGFncykKK3sKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7CisK KwlQYWdlSW5pdChwYWdlLCBCTENLU1osIHNpemVvZihTdGlyUGFnZU9wYXF1ZURhdGEpKTsKKwor CW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpOworCW9wYXF1ZS0+ZmxhZ3MgPSBmbGFn czsKKwlvcGFxdWUtPnN0aXJfcGFnZV9pZCA9IFNUSVJfUEFHRV9JRDsKK30KKworLyoKKyAqIEFk ZCBhIHR1cGxlIHRvIGEgU1RJUiBwYWdlLiBSZXR1cm5zIGZhbHNlIGlmIHR1cGxlIGRvZXNuJ3Qg Zml0LgorICogVGhlIHR1cGxlIGlzIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHBhZ2UuCisgKi8K K3N0YXRpYyBib29sCitTdGlyUGFnZUFkZEl0ZW0oUGFnZSBwYWdlLCBTdGlyVHVwbGUgKnR1cGxl KQoreworCVN0aXJUdXBsZSAqaXR1cDsKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7CisJUG9pbnRl ciBwdHI7CisKKwkvKiBXZSBzaG91bGRuJ3QgYmUgcG9pbnRlZCB0byBhbiBpbnZhbGlkIHBhZ2Ug Ki8KKwlBc3NlcnQoIVBhZ2VJc05ldyhwYWdlKSk7CisKKwkvKiBEb2VzIG5ldyB0dXBsZSBmaXQg b24gdGhlIHBhZ2U/ICovCisJaWYgKFN0aXJQYWdlR2V0RnJlZVNwYWNlKHN0YXRlLCBwYWdlKSA8 IHNpemVvZihTdGlyVHVwbGUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBDb3B5IG5ldyB0dXBs ZSB0byB0aGUgZW5kIG9mIHBhZ2UgKi8KKwlvcGFxdWUgPSBTdGlyUGFnZUdldE9wYXF1ZShwYWdl KTsKKwlpdHVwID0gU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFxdWUtPm1heG9mZiArIDEpOwor CW1lbWNweSgoUG9pbnRlcikgaXR1cCwgKFBvaW50ZXIpIHR1cGxlLCBzaXplb2YoU3RpclR1cGxl KSk7CisKKwkvKiBBZGp1c3QgbWF4b2ZmIGFuZCBwZF9sb3dlciAqLworCW9wYXF1ZS0+bWF4b2Zm Kys7CisJcHRyID0gKFBvaW50ZXIpIFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb3BhcXVlLT5tYXhv ZmYgKyAxKTsKKwkoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9sb3dlciA9IHB0ciAtIHBhZ2U7CisK KwkvKiBBc3NlcnQgd2UgZGlkbid0IG92ZXJydW4gYXZhaWxhYmxlIHNwYWNlICovCisJQXNzZXJ0 KCgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyIDw9ICgoUGFnZUhlYWRlcikgcGFnZSktPnBk X3VwcGVyKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEluc2VydCBhIG5ldyB0dXBsZSBp bnRvIGEgU1RJUiBpbmRleC4KKyAqLworYm9vbAorc3Rpcmluc2VydChSZWxhdGlvbiBpbmRleCwg RGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAorCQkgIEl0ZW1Qb2ludGVyIGh0X2N0aWQsIFJl bGF0aW9uIGhlYXBSZWwsCisJCSAgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwKKwkJICBi b29sIGluZGV4VW5jaGFuZ2VkLAorCQkgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5mbykKK3sK KwlTdGlyVHVwbGUgKml0dXA7CisJTWVtb3J5Q29udGV4dCBvbGRDdHg7CisJTWVtb3J5Q29udGV4 dCBpbnNlcnRDdHg7CisJU3Rpck1ldGFQYWdlRGF0YSAqbWV0YURhdGE7CisJQnVmZmVyIGJ1ZmZl ciwKKwkJCW1ldGFCdWZmZXI7CisJUGFnZSBwYWdlOworCXVpbnQxNiBibGtObzsKKworCS8qIENy ZWF0ZSB0ZW1wb3JhcnkgY29udGV4dCBmb3IgaW5zZXJ0IG9wZXJhdGlvbiAqLworCWluc2VydEN0 eCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJ CSAgIlN0aXIgaW5zZXJ0IHRlbXBvcmFyeSBjb250ZXh0IiwKKwkJCQkJCQkJCSAgQUxMT0NTRVRf REVGQVVMVF9TSVpFUyk7CisKKwlvbGRDdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5zZXJ0 Q3R4KTsKKworCS8qIENyZWF0ZSBuZXcgdHVwbGUgd2l0aCBoZWFwIHBvaW50ZXIgKi8KKwlpdHVw ID0gKFN0aXJUdXBsZSAqKSBwYWxsb2MwKHNpemVvZihTdGlyVHVwbGUpKTsKKwlpdHVwLT5oZWFw UHRyID0gKmh0X2N0aWQ7CisKKwlBc3NlcnQoIVJlbGF0aW9uTmVlZHNXQUwoaW5kZXgpKTsKKwlt ZXRhQnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisKKwlm b3IgKDs7KQorCXsKKwkJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19TSEFSRSk7 CisJCW1ldGFEYXRhID0gU3RpclBhZ2VHZXRNZXRhKEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcikp OworCQkvKiBDaGVjayBpZiBpbnNlcnRzIGFyZSBhbGxvd2VkICovCisJCWlmIChtZXRhRGF0YS0+ c2tpcEluc2VydHMpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7CisJ CQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJYmxrTm8gPSBtZXRhRGF0YS0+bGFzdEJsa05vOworCQkv KiBEb24ndCBob2xkIG1ldGFidWZmZXIgbG9jayB3aGlsZSBkb2luZyBpbnNlcnQgKi8KKwkJTG9j a0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCisJCWlmIChibGtObyA+ IDApCisJCXsKKwkJCWJ1ZmZlciA9IFJlYWRCdWZmZXIoaW5kZXgsIGJsa05vKTsKKwkJCUxvY2tC dWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCQkJU1RBUlRfQ1JJVF9TRUNU SU9OKCk7CisKKwkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisKKwkJCUFzc2VydCgh UGFnZUlzTmV3KHBhZ2UpKTsKKworCQkJLyogVHJ5IHRvIGFkZCB0dXBsZSB0byBleGlzdGluZyBw YWdlICovCisJCQlpZiAoU3RpclBhZ2VBZGRJdGVtKHBhZ2UsIGl0dXApKQorCQkJeworCQkJCS8q IFN1Y2Nlc3MhICBBcHBseSB0aGUgY2hhbmdlLCBjbGVhbiB1cCwgYW5kIGV4aXQgKi8KKwkJCQlN YXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CisKKwkJCQlV bmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCQkJUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVy KTsKKwkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJCQlNZW1vcnlDb250ZXh0 RGVsZXRlKGluc2VydEN0eCk7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCisJCQlFTkRfQ1JJ VF9TRUNUSU9OKCk7CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCX0KKworCQkv KiBOZWVkIHRvIGFkZCBuZXcgcGFnZSAtIGdldCBleGNsdXNpdmUgbG9jayBvbiBtZXRhIHBhZ2Ug Ki8KKwkJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCisJ CW1ldGFEYXRhID0gU3RpclBhZ2VHZXRNZXRhKEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcikpOwor CQkvKiBDaGVjayBpZiBhbm90aGVyIGJhY2tlbmQgYWxyZWFkeSBleHRlbmRlZCB0aGUgaW5kZXgg Ki8KKworCQlpZiAoYmxrTm8gIT0gbWV0YURhdGEtPmxhc3RCbGtObykKKwkJeworCQkJQXNzZXJ0 KGJsa05vIDwgbWV0YURhdGEtPmxhc3RCbGtObyk7CisJCQkvKiBTb21lb25lIGVsc2UgaW5zZXJ0 ZWQgdGhlIG5ldyBwYWdlIGludG8gdGhlIGluZGV4LCBsZXRzIHRyeSBhZ2FpbiAqLworCQkJTG9j a0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJY29udGludWU7CisJ CX0KKwkJZWxzZQorCQl7CisJCQkvKiBNdXN0IGV4dGVuZCB0aGUgZmlsZSAqLworCQkJYnVmZmVy ID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIE1BSU5fRk9SS05VTSwgTlVMTCwK KwkJCQkJCQkJCSAgIEVCX0xPQ0tfRklSU1QpOworCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVm ZmVyKTsKKwkJCVNUQVJUX0NSSVRfU0VDVElPTigpOworCisJCQlTdGlySW5pdFBhZ2UocGFnZSwg MCk7CisKKwkJCWlmICghU3RpclBhZ2VBZGRJdGVtKHBhZ2UsIGl0dXApKQorCQkJeworCQkJCS8q IFdlIHNob3VsZG4ndCBiZSBoZXJlIHNpbmNlIHdlJ3JlIGluc2VydGluZyB0byBhbiBlbXB0eSBw YWdlICovCisJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBhZGQgbmV3IHN0aXIgdHVwbGUgdG8g ZW1wdHkgcGFnZSIpOworCQkJfQorCisJCQkvKiBVcGRhdGUgbWV0YSBwYWdlIHdpdGggbmV3IGxh c3QgYmxvY2sgbnVtYmVyICovCisJCQltZXRhRGF0YS0+bGFzdEJsa05vID0gQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoYnVmZmVyKTsKKworCQkJTWFya0J1ZmZlckRpcnR5KG1ldGFCdWZmZXIpOworCQkJ TWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisKKwkJCUVORF9DUklUX1NFQ1RJT04oKTsKKworCQkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRh QnVmZmVyKTsKKworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisJCQlNZW1vcnlD b250ZXh0RGVsZXRlKGluc2VydEN0eCk7CisKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KK30K KworLyoKKyAqIFNUSVIgZG9lc24ndCBzdXBwb3J0IHNjYW5zIC0gdGhlc2UgZnVuY3Rpb25zIGFs bCBlcnJvciBvdXQKKyAqLworSW5kZXhTY2FuRGVzYyBzdGlyYmVnaW5zY2FuKFJlbGF0aW9uIHIs IGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKK3sKKwllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5v dCBpbXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCit2b2lkCitzdGlycmVzY2FuKEluZGV4 U2NhbkRlc2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAorCQkgIFNjYW5L ZXkgb3JkZXJieXMsIGludCBub3JkZXJieXMpCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBu b3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKwordm9pZCBzdGlyZW5kc2NhbihJbmRl eFNjYW5EZXNjIHNjYW4pCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50 ZWQiLCBfX2Z1bmNfXykpKTsKK30KKworLyoKKyAqIEJ1aWxkIGEgU1RJUiBpbmRleCAtIG9ubHkg YWxsb3dlZCBmb3IgYXV4aWxpYXJ5IGluZGV4ZXMuCisgKiBKdXN0IGluaXRpYWxpemVzIHRoZSBt ZXRhIHBhZ2Ugd2l0aG91dCBhbnkgaGVhcCBzY2Fucy4KKyAqLworSW5kZXhCdWlsZFJlc3VsdCAq c3RpcmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJICAgc3RydWN0 IEluZGV4SW5mbyAqaW5kZXhJbmZvKQoreworCUluZGV4QnVpbGRSZXN1bHQgKnJlc3VsdDsKKwor CWlmICghaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1IsIChlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJTVElSIGluZGV4ZXMgYXJl IG5vdCBzdXBwb3J0ZWQgdG8gYmUgYnVpbHQiKSkpOworCisJU3RpckluaXRNZXRhcGFnZShpbmRl eCwgTUFJTl9GT1JLTlVNKTsKKworCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxv YyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOworCXJlc3VsdC0+aGVhcF90dXBsZXMgPSAwOwor CXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gMDsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2b2lkIHN0 aXJidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KQoreworCVN0aXJJbml0TWV0YXBhZ2UoaW5kZXgs IElOSVRfRk9SS05VTSk7Cit9CisKK0luZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RpcmJ1bGtkZWxl dGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJCQkJCQkJIEluZGV4QnVsa0RlbGV0ZVJlc3Vs dCAqc3RhdHMsCisJCQkJCQkJCQkgSW5kZXhCdWxrRGVsZXRlQ2FsbGJhY2sgY2FsbGJhY2ssCisJ CQkJCQkJCQkgdm9pZCAqY2FsbGJhY2tfc3RhdGUpCit7CisJUmVsYXRpb24gaW5kZXggPSBpbmZv LT5pbmRleDsKKwlCbG9ja051bWJlciBibGtubywgbnBhZ2VzOworCUJ1ZmZlciBidWZmZXI7CisJ UGFnZSBwYWdlOworCisJLyogRm9yIG5vcm1hbCBWQUNVVU0sIG1hcmsgdG8gc2tpcCBpbnNlcnRz IGFuZCB3YXJuIGFib3V0IGluZGV4IGRyb3AgbmVlZGVkICovCisJaWYgKCFpbmZvLT52YWxpZGF0 ZV9pbmRleCkKKwl7CisJCVN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhpbmRleCk7CisKKwkJZXJlcG9y dChXQVJOSU5HLCAoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ ZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVkLCBzZWVtcyBsaWtlIHRoaXMg aW5kZXggbmVlZCB0byBiZSBkcm9wcGVkIiwgX19mdW5jX18pKSk7CisJCXJldHVybiBOVUxMOwor CX0KKworCWlmIChzdGF0cyA9PSBOVUxMKQorCQlzdGF0cyA9IChJbmRleEJ1bGtEZWxldGVSZXN1 bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWxrRGVsZXRlUmVzdWx0KSk7CisKKwkvKgorCSAq IEl0ZXJhdGUgb3ZlciB0aGUgcGFnZXMuIFdlIGRvbid0IGNhcmUgYWJvdXQgY29uY3VycmVudGx5 IGFkZGVkIHBhZ2VzLAorCSAqIGJlY2F1c2UgaW5kZXggaXMgbWFya2VkIGFzIG5vdC1yZWFkeSBm b3IgdGhhdCBtb21tZW50IGFuZCBpbmRleCBub3QKKwkgKiB1c2VkIGZvciBpbnNlcnQuCisJICov CisJbnBhZ2VzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhpbmRleCk7CisJZm9yIChibGtu byA9IFNUSVJfSEVBRF9CTEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCisJeworCQlTdGly VHVwbGUgKml0dXAsICppdHVwRW5kOworCisJCXZhY3V1bV9kZWxheV9wb2ludChmYWxzZSk7CisK KwkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGluZGV4LCBNQUlOX0ZPUktOVU0sIGJsa25v LAorCQkJCQkJCQkJUkJNX05PUk1BTCwgaW5mby0+c3RyYXRlZ3kpOworCisJCUxvY2tCdWZmZXIo YnVmZmVyLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZl cik7CisKKwkJaWYgKFBhZ2VJc05ldyhwYWdlKSkKKwkJeworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZl cihidWZmZXIpOworCQkJY29udGludWU7CisJCX0KKworCQlpdHVwID0gU3RpclBhZ2VHZXRUdXBs ZShwYWdlLCBGaXJzdE9mZnNldE51bWJlcik7CisJCWl0dXBFbmQgPSBTdGlyUGFnZUdldFR1cGxl KHBhZ2UsIE9mZnNldE51bWJlck5leHQoU3RpclBhZ2VHZXRNYXhPZmZzZXQocGFnZSkpKTsKKwkJ d2hpbGUgKGl0dXAgPCBpdHVwRW5kKQorCQl7CisJCQkvKiBEbyB3ZSBoYXZlIHRvIGRlbGV0ZSB0 aGlzIHR1cGxlPyAqLworCQkJaWYgKGNhbGxiYWNrKCZpdHVwLT5oZWFwUHRyLCBjYWxsYmFja19z dGF0ZSkpCisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLCBlcnJtc2coIndlIG5ldmVyIGRlbGV0ZSBpbiBzdGlyIikpKTsKKwkJ CX0KKworCQkJaXR1cCA9IFN0aXJQYWdlR2V0TmV4dFR1cGxlKGl0dXApOworCQl9CisKKwkJVW5s b2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCX0KKworCXJldHVybiBzdGF0czsKK30KKworLyoK KyAqIE1hcmsgYSBTVElSIGluZGV4IHRvIHNraXAgZnV0dXJlIGluc2VydHMKKyAqLwordm9pZCBT dGlyTWFya0FzU2tpcEluc2VydHMoUmVsYXRpb24gaW5kZXgpCit7CisJU3Rpck1ldGFQYWdlRGF0 YSAqbWV0YURhdGE7CisJQnVmZmVyIG1ldGFCdWZmZXI7CisJUGFnZSBtZXRhUGFnZTsKKworCUFz c2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRleCkpOworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVy KGluZGV4LCBTVElSX01FVEFQQUdFX0JMS05PKTsKKwlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJV RkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisKKwltZXRhUGFn ZSA9IEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcik7CisJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1l dGEobWV0YVBhZ2UpOworCisJaWYgKCFtZXRhRGF0YS0+c2tpcEluc2VydHMpCisJeworCQltZXRh RGF0YS0+c2tpcEluc2VydHMgPSB0cnVlOworCQlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZlcik7 CisJfQorCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7Cit9CisKK0luZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqc3RpcnZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJ CQkJCQkJCUluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCit7CisJU3Rpck1hcmtBc1NraXBJ bnNlcnRzKGluZm8tPmluZGV4KTsKKwllcmVwb3J0KFdBUk5JTkcsIChlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBp bXBsZW1lbnRlZCwgc2VlbXMgbGlrZSB0aGlzIGluZGV4IG5lZWQgdG8gYmUgZHJvcHBlZCIsIF9f ZnVuY19fKSkpOworCXJldHVybiBOVUxMOworfQorCitieXRlYSAqc3Rpcm9wdGlvbnMoRGF0dW0g cmVsb3B0aW9ucywgYm9vbCB2YWxpZGF0ZSkKK3sKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCBz dGlyY29zdGVzdGltYXRlKFBsYW5uZXJJbmZvICpyb290LCBJbmRleFBhdGggKnBhdGgsCisJCQkJ CSBkb3VibGUgbG9vcF9jb3VudCwgQ29zdCAqaW5kZXhTdGFydHVwQ29zdCwKKwkJCQkJIENvc3Qg KmluZGV4VG90YWxDb3N0LCBTZWxlY3Rpdml0eSAqaW5kZXhTZWxlY3Rpdml0eSwKKwkJCQkJIGRv dWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwgZG91YmxlICppbmRleFBhZ2VzKQoreworCWVyZXBvcnQo RVJST1IsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJc IiVzXCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGNjYTFkYmI4ZTM3Li5lOWUy MmVjMGU4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzQzMyw2ICszNDMzLDcgQEAgdmFsaWRhdGVf aW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2aW5m by5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBoZWFw UmVsYXRpb24tPnJkX3JlbC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IE5VTEw7CisJ aXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gdHJ1ZTsKIAogCS8qCiAJICogRW5jb2RlIFRJRHMgYXMg aW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9hbmFseXplLmMKaW5kZXggNGZmZmI3NmU1NTcuLjM4NjAyZTZhNzJkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvYW5hbHl6ZS5jCkBAIC03MjAsNiArNzIwLDcgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRp b24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJCWl2aW5mby5tZXNzYWdlX2xldmVs ID0gZWxldmVsOwogCQkJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IG9uZXJlbC0+cmRfcmVsLT5y ZWx0dXBsZXM7CiAJCQlpdmluZm8uc3RyYXRlZ3kgPSB2YWNfc3RyYXRlZ3k7CisJCQlpdmluZm8u dmFsaWRhdGVfaW5kZXggPSBmYWxzZTsKIAogCQkJc3RhdHMgPSBpbmRleF92YWN1dW1fY2xlYW51 cCgmaXZpbmZvLCBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5k ZXggMmI5ZDU0OGNkZWIuLjI4NmZjY2NlYzNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBh cmFsbGVsLmMKQEAgLTg4NCw2ICs4ODQsNyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVf aW5kZXgoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJaXZpbmZv LmVzdGltYXRlZF9jb3VudCA9IHB2cy0+c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQ7CiAJaXZpbmZv Lm51bV9oZWFwX3R1cGxlcyA9IHB2cy0+c2hhcmVkLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0 ZWd5ID0gcHZzLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7CiAK IAkvKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uICovCiAJcHZzLT5pbmRuYW1l ID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1 bmNzLmMKaW5kZXggZTJkOWU5YmU0MWEuLmU5N2UwOTQzZjViIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9tYWtlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YwpAQCAtODc1LDYgKzg3NSw3IEBAIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVt a2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJLyogaW5pdGlhbGl6ZSBp bmRleC1idWlsZCBzdGF0ZSB0byBkZWZhdWx0ICovCiAJbi0+aWlfQnJva2VuSG90Q2hhaW4gPSBm YWxzZTsKIAluLT5paV9QYXJhbGxlbFdvcmtlcnMgPSAwOworCW4tPmlpX0F1eGlsaWFyeSA9IGZh bHNlOwogCiAJLyogc2V0IHVwIGZvciBwb3NzaWJsZSB1c2UgYnkgaW5kZXggQU0gKi8KIAluLT5p aV9BbSA9IGFtb2lkOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCA1YjJhYjE4MWI1Zi4uYjk5OTE2ZWRiNGEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9nZW5hbS5oCkBAIC03Myw2ICs3Myw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4VmFj dXVtSW5mbwogCWJvb2wJCWVzdGltYXRlZF9jb3VudDsJLyogbnVtX2hlYXBfdHVwbGVzIGlzIGFu IGVzdGltYXRlICovCiAJaW50CQkJbWVzc2FnZV9sZXZlbDsJLyogZXJlcG9ydCBsZXZlbCBmb3Ig cHJvZ3Jlc3MgbWVzc2FnZXMgKi8KIAlkb3VibGUJCW51bV9oZWFwX3R1cGxlczsJLyogdHVwbGVz IHJlbWFpbmluZyBpbiBoZWFwICovCisJYm9vbAkJdmFsaWRhdGVfaW5kZXg7IC8qIHZhbGlkYXRp bmcgY29uY3VycmVudGx5IGJ1aWx0IGluZGV4PyAqLwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0 cmF0ZWd5OwkvKiBhY2Nlc3Mgc3RyYXRlZ3kgZm9yIHJlYWRzICovCiB9IEluZGV4VmFjdXVtSW5m bzsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKaW5kZXggZGZiYjRjODU0NjAuLmExMjFiNGQzMWM5 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKQEAgLTUxLDggKzUxLDkgQEAgdHlwZWRlZiBlbnVt IHJlbG9wdF9raW5kCiAJUkVMT1BUX0tJTkRfVklFVyA9ICgxIDw8IDkpLAogCVJFTE9QVF9LSU5E X0JSSU4gPSAoMSA8PCAxMCksCiAJUkVMT1BUX0tJTkRfUEFSVElUSU9ORUQgPSAoMSA8PCAxMSks CisJUkVMT1BUX0tJTkRfU1RJUiA9ICgxIDw8IDEyKSwKIAkvKiBpZiB5b3UgYWRkIGEgbmV3IGtp bmQsIG1ha2Ugc3VyZSB5b3UgdXBkYXRlICJsYXN0X2RlZmF1bHQiIHRvbyAqLwotCVJFTE9QVF9L SU5EX0xBU1RfREVGQVVMVCA9IFJFTE9QVF9LSU5EX1BBUlRJVElPTkVELAorCVJFTE9QVF9LSU5E X0xBU1RfREVGQVVMVCA9IFJFTE9QVF9LSU5EX1NUSVIsCiAJLyogc29tZSBjb21waWxlcnMgdHJl YXQgZW51bXMgYXMgc2lnbmVkIGludHMsIHNvIHdlIGNhbid0IHVzZSAxIDw8IDMxICovCiAJUkVM T1BUX0tJTkRfTUFYID0gKDEgPDwgMzApCiB9IHJlbG9wdF9raW5kOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3N0aXIuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk5NDNjNDJhOTdlCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaApAQCAtMCwwICsxLDExNyBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogc3Rpci5oCisgKgkgIGhlYWRlciBmaWxlIGZvciBwb3N0 Z3JlcyBzdGlyIGFjY2VzcyBtZXRob2QgaW1wbGVtZW50YXRpb24uCisgKgorICoKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqCisgKiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKi8KKyNpZm5kZWYgX1NUSVJfSF8KKyNkZWZpbmUgX1NUSVJfSF8KKworI2luY2x1ZGUg ImFtYXBpLmgiCisjaW5jbHVkZSAieGxvZy5oIgorI2luY2x1ZGUgImdlbmVyaWNfeGxvZy5oIgor I2luY2x1ZGUgIml0dXAuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibm9kZXMvcGF0 aG5vZGVzLmgiCisKKy8qIFN1cHBvcnQgcHJvY2VkdXJlcyBudW1iZXJzICovCisjZGVmaW5lIFNU SVJfTlBST0MJCQkJMAorCisvKiBTY2FuIHN0cmF0ZWdpZXMgKi8KKyNkZWZpbmUgU1RJUl9OU1RS QVRFR0lFUwkJMQorCisjZGVmaW5lIFNUSVJfT1BUSU9OU19QUk9DCQkJCTAKKworLyogTWFjcm9z IGZvciBhY2Nlc3Npbmcgc3RpciBwYWdlIHN0cnVjdHVyZXMgKi8KKyNkZWZpbmUgU3RpclBhZ2VH ZXRPcGFxdWUocGFnZSkgKChTdGlyUGFnZU9wYXF1ZSkgUGFnZUdldFNwZWNpYWxQb2ludGVyKHBh Z2UpKQorI2RlZmluZSBTdGlyUGFnZUdldE1heE9mZnNldChwYWdlKSAoU3RpclBhZ2VHZXRPcGFx dWUocGFnZSktPm1heG9mZikKKyNkZWZpbmUgU3RpclBhZ2VJc01ldGEocGFnZSkgXAorCSgoU3Rp clBhZ2VHZXRPcGFxdWUocGFnZSktPmZsYWdzICYgU1RJUl9NRVRBKSAhPSAwKQorI2RlZmluZSBT dGlyUGFnZUdldERhdGEocGFnZSkJCSgoU3RpclR1cGxlICopUGFnZUdldENvbnRlbnRzKHBhZ2Up KQorI2RlZmluZSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9mZnNldCkgXAorCSgoU3RpclR1cGxl ICopKFBhZ2VHZXRDb250ZW50cyhwYWdlKSBcCisJCSsgc2l6ZW9mKFN0aXJUdXBsZSkgKiAoKG9m ZnNldCkgLSAxKSkpCisjZGVmaW5lIFN0aXJQYWdlR2V0TmV4dFR1cGxlKHR1cGxlKSBcCisJKChT dGlyVHVwbGUgKikoKFBvaW50ZXIpKHR1cGxlKSArIHNpemVvZihTdGlyVHVwbGUpKSkKKworCisK Ky8qIFByZXNlcnZlZCBwYWdlIG51bWJlcnMgKi8KKyNkZWZpbmUgU1RJUl9NRVRBUEFHRV9CTEtO TwkoMCkKKyNkZWZpbmUgU1RJUl9IRUFEX0JMS05PCQkoMSkgLyogZmlyc3QgZGF0YSBwYWdlICov CisKKworLyogT3BhcXVlIGZvciBzdGlyIHBhZ2VzICovCit0eXBlZGVmIHN0cnVjdCBTdGlyUGFn ZU9wYXF1ZURhdGEKK3sKKwlPZmZzZXROdW1iZXIgbWF4b2ZmOwkJLyogbnVtYmVyIG9mIGluZGV4 IHR1cGxlcyBvbiBwYWdlICovCisJdWludDE2CQlmbGFnczsJCQkvKiBzZWUgYml0IGRlZmluaXRp b25zIGJlbG93ICovCisJdWludDE2CQl1bnVzZWQ7CQkJLyogcGxhY2Vob2xkZXIgdG8gZm9yY2Ug bWF4YWxpZ25pbmcgb2Ygc2l6ZSBvZgorCQkJCQkJCQkgKiBTdGlyUGFnZU9wYXF1ZURhdGEgYW5k IHRvIHBsYWNlCisJCQkJCQkJCSAqIHN0aXJfcGFnZV9pZCBleGFjdGx5IGF0IHRoZSBlbmQgb2Yg cGFnZSAqLworCXVpbnQxNgkJc3Rpcl9wYWdlX2lkOwkvKiBmb3IgaWRlbnRpZmljYXRpb24gb2Yg U1RJUiBpbmRleGVzICovCit9IFN0aXJQYWdlT3BhcXVlRGF0YTsKKworLyogU3RpciBwYWdlIGZs YWdzICovCisjZGVmaW5lIFNUSVJfTUVUQQkJKDE8PDApCisKK3R5cGVkZWYgU3RpclBhZ2VPcGFx dWVEYXRhICpTdGlyUGFnZU9wYXF1ZTsKKworI2RlZmluZSBTVElSX1BBR0VfSUQJCTB4RkY4NAor CisvKiBNZXRhZGF0YSBvZiBzdGlyIGluZGV4ICovCit0eXBlZGVmIHN0cnVjdCBTdGlyTWV0YVBh Z2VEYXRhCit7CisJdWludDMyCQltYWdpY2tOdW1iZXI7CisJdWludDE2CQlsYXN0QmxrTm87CisJ Ym9vbAkJc2tpcEluc2VydHM7CS8qIHNob3VsZCB3ZSBqdXN0IGV4aXQgd2l0aG91dCBhbnkgaW5z ZXJ0cyAqLworfSBTdGlyTWV0YVBhZ2VEYXRhOworCisvKiBNYWdpYyBudW1iZXIgdG8gZGlzdGlu Z3Vpc2ggc3RpciBwYWdlcyBmcm9tIG90aGVycyAqLworI2RlZmluZSBTVElSX01BR0lDS19OVU1C RVIgKDB4REJBQzBERUYpCisKKyNkZWZpbmUgU3RpclBhZ2VHZXRNZXRhKHBhZ2UpCSgoU3Rpck1l dGFQYWdlRGF0YSAqKSBQYWdlR2V0Q29udGVudHMocGFnZSkpCisKK3R5cGVkZWYgc3RydWN0IFN0 aXJUdXBsZQoreworCUl0ZW1Qb2ludGVyRGF0YSBoZWFwUHRyOworfSBTdGlyVHVwbGU7CisKKyNk ZWZpbmUgU3RpclBhZ2VHZXRGcmVlU3BhY2Uoc3RhdGUsIHBhZ2UpIFwKKwkoQkxDS1NaIC0gTUFY QUxJR04oU2l6ZU9mUGFnZUhlYWRlckRhdGEpIFwKKwkJLSBTdGlyUGFnZUdldE1heE9mZnNldChw YWdlKSAqIChzaXplb2YoU3RpclR1cGxlKSkgXAorCQktIE1BWEFMSUdOKHNpemVvZihTdGlyUGFn ZU9wYXF1ZURhdGEpKSkKKworZXh0ZXJuIHZvaWQgU3RpckZpbGxNZXRhcGFnZShSZWxhdGlvbiBp bmRleCwgUGFnZSBtZXRhUGFnZSwgYm9vbCBza2lwSW5zZXJ0cyk7CitleHRlcm4gdm9pZCBTdGly SW5pdE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtudW0pOworZXh0ZXJu IHZvaWQgU3RpckluaXRQYWdlKFBhZ2UgcGFnZSwgdWludDE2IGZsYWdzKTsKK2V4dGVybiB2b2lk IFN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhSZWxhdGlvbiBpbmRleCk7CisKKy8qIGluZGV4IGFjY2Vz cyBtZXRob2QgaW50ZXJmYWNlIGZ1bmN0aW9ucyAqLworZXh0ZXJuIGJvb2wgc3RpcnZhbGlkYXRl KE9pZCBvcGNsYXNzb2lkKTsKK2V4dGVybiBib29sIHN0aXJpbnNlcnQoUmVsYXRpb24gaW5kZXgs IERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCwKKwkJCQkJIEl0ZW1Qb2ludGVyIGh0X2N0aWQs IFJlbGF0aW9uIGhlYXBSZWwsCisJCQkJCSBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVlLAor CQkJCQkgYm9vbCBpbmRleFVuY2hhbmdlZCwKKwkJCQkJIHN0cnVjdCBJbmRleEluZm8gKmluZGV4 SW5mbyk7CitleHRlcm4gSW5kZXhTY2FuRGVzYyBzdGlyYmVnaW5zY2FuKFJlbGF0aW9uIHIsIGlu dCBua2V5cywgaW50IG5vcmRlcmJ5cyk7CitleHRlcm4gdm9pZCBzdGlycmVzY2FuKEluZGV4U2Nh bkRlc2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAorCQkJCQkgU2Nhbktl eSBvcmRlcmJ5cywgaW50IG5vcmRlcmJ5cyk7CitleHRlcm4gdm9pZCBzdGlyZW5kc2NhbihJbmRl eFNjYW5EZXNjIHNjYW4pOworZXh0ZXJuIEluZGV4QnVpbGRSZXN1bHQgKnN0aXJidWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKKwkJCQkJCQkJIHN0cnVjdCBJbmRleEluZm8gKmlu ZGV4SW5mbyk7CitleHRlcm4gdm9pZCBzdGlyYnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCk7Citl eHRlcm4gSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlyYnVsa2RlbGV0ZShJbmRleFZhY3V1bUlu Zm8gKmluZm8sCisJCQkJCQkJCQkJICAgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywgSW5k ZXhCdWxrRGVsZXRlQ2FsbGJhY2sgY2FsbGJhY2ssCisJCQkJCQkJCQkJICAgdm9pZCAqY2FsbGJh Y2tfc3RhdGUpOworZXh0ZXJuIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RpcnZhY3V1bWNsZWFu dXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJCQkJCQkJCQkgIEluZGV4QnVsa0RlbGV0ZVJl c3VsdCAqc3RhdHMpOworZXh0ZXJuIGJ5dGVhICpzdGlyb3B0aW9ucyhEYXR1bSByZWxvcHRpb25z LCBib29sIHZhbGlkYXRlKTsKKworI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2FtLmRhdAppbmRleCAyNmQxNTkyOGExNS4uYTVlY2Y5MjA4YWQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYW0uZGF0CkBAIC0zMyw1ICszMyw4IEBACiB7IG9pZCA9PiAnMzU4MCcsIG9pZF9zeW1i b2wgPT4gJ0JSSU5fQU1fT0lEJywKICAgZGVzY3IgPT4gJ2Jsb2NrIHJhbmdlIGluZGV4IChCUklO KSBhY2Nlc3MgbWV0aG9kJywKICAgYW1uYW1lID0+ICdicmluJywgYW1oYW5kbGVyID0+ICdicmlu aGFuZGxlcicsIGFtdHlwZSA9PiAnaScgfSwKK3sgb2lkID0+ICc1NTU1Jywgb2lkX3N5bWJvbCA9 PiAnU1RJUl9BTV9PSUQnLAorICBkZXNjciA9PiAnc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVu dCBhY2Nlc3MgbWV0aG9kJywKKyAgYW1uYW1lID0+ICdzdGlyJywgYW1oYW5kbGVyID0+ICdzdGly aGFuZGxlcicsIGFtdHlwZSA9PiAnaScgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19vcGNsYXNzLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5k YXQKaW5kZXggNGE5NjI0ODAyYWEuLjYyMjdjNTY1OGZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3Bj bGFzcy5kYXQKQEAgLTQ4OCw0ICs0ODgsOCBAQAogCiAjIG5vIGJyaW4gb3BjbGFzcyBmb3IgdGhl IGdlb21ldHJpYyB0eXBlcyBleGNlcHQgYm94CiAKKyMgYWxsb3cgYW55IHR5cGVzIGZvciBTVElS Cit7IG9wY21ldGhvZCA9PiAnc3RpcicsIG9pZF9zeW1ib2wgPT4gJ0FOWV9TVElSX09QU19PSUQn LCBvcGNuYW1lID0+ICdzdGlyX29wcycsCisgIG9wY2ZhbWlseSA9PiAnc3Rpci9hbnlfb3BzJywg b3BjaW50eXBlID0+ICdhbnknfSwKKwogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19vcGZhbWlseS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdApp bmRleCBmN2RjYjk2YjQzYy4uODM4YWQzMmM5MzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfb3BmYW1pbHkuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1p bHkuZGF0CkBAIC0zMDQsNSArMzA0LDcgQEAKICAgb3BmbWV0aG9kID0+ICdoYXNoJywgb3BmbmFt ZSA9PiAnbXVsdGlyYW5nZV9vcHMnIH0sCiB7IG9pZCA9PiAnNjE1OCcsCiAgIG9wZm1ldGhvZCA9 PiAnZ2lzdCcsIG9wZm5hbWUgPT4gJ211bHRpcmFuZ2Vfb3BzJyB9LAoreyBvaWQgPT4gJzU1NTgn LAorICBvcGZtZXRob2QgPT4gJ3N0aXInLCBvcGZuYW1lID0+ICdhbnlfb3BzJyB9LAogCiBdCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA2MmJlYjcxZGEyOC4uZjA1YTVlZWNkZGEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtOTM1LDYgKzkzNSwxMCBAQAogICBwcm9uYW1lID0+ICdi cmluaGFuZGxlcicsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAnaW5kZXhf YW1faGFuZGxlcicsIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCcsCiAgIHByb3NyYyA9PiAnYnJp bmhhbmRsZXInIH0sCit7IG9pZCA9PiAnNTU1NicsIGRlc2NyID0+ICdzaG9ydCB0ZXJtIGluZGV4 IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRob2QgaGFuZGxlcicsCisgIHByb25hbWUgPT4gJ3N0aXJo YW5kbGVyJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICdpbmRleF9hbV9o YW5kbGVyJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywKKyAgcHJvc3JjID0+ICdzdGlyaGFu ZGxlcicgfSwKIHsgb2lkID0+ICczOTUyJywgZGVzY3IgPT4gJ2JyaW46IHN0YW5kYWxvbmUgc2Nh biBuZXcgdGFibGUgcGFnZXMnLAogICBwcm9uYW1lID0+ICdicmluX3N1bW1hcml6ZV9uZXdfdmFs dWVzJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9wYXJhbGxlbCA9PiAndScsIHByb3JldHR5 cGUgPT4gJ2ludDQnLCBwcm9hcmd0eXBlcyA9PiAncmVnY2xhc3MnLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAppbmRleCAyNDkyMjgyMjEzZi4uMDM0MWJiNzQzMjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBA IC0xODEsMTIgKzE4MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBFeHByU3RhdGUKICAqCQlCcm9rZW5I b3RDaGFpbgkJZGlkIHdlIGRldGVjdCBhbnkgYnJva2VuIEhPVCBjaGFpbnM/CiAgKgkJU3VtbWFy aXppbmcJCQlpcyBpdCBhIHN1bW1hcml6aW5nIGluZGV4PwogICoJCVBhcmFsbGVsV29ya2VycwkJ IyBvZiB3b3JrZXJzIHJlcXVlc3RlZCAoZXhjbHVkZXMgbGVhZGVyKQorICoJCUF1eGlsaWFyeQkJ CSMgaW5kZXgtaGVscGVyIGZvciBjb25jdXJyZW50IGJ1aWxkPwogICoJCUFtCQkJCQlPaWQgb2Yg aW5kZXggQU0KICAqCQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBmb3IgaW5kZXggQU0K ICAqCQlDb250ZXh0CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8KICAq Ci0gKiBpaV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVsV29y a2VycyBhcmUgdXNlZCBvbmx5Ci0gKiBkdXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVu dGlvbmFsbHkgemVyb2VkIG90aGVyd2lzZS4KKyAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tlbkhv dENoYWluLCBpaV9BdXhpbGlhcnkgYW5kIGlpX1BhcmFsbGVsV29ya2VycworICogYXJlIHVzZWQg b25seSBkdXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkgemVyb2VkIG90 aGVyd2lzZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJ bmZvCkBAIC0yMTUsNiArMjE2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCiAJYm9vbAkJ aWlfU3VtbWFyaXppbmc7CiAJYm9vbAkJaWlfV2l0aG91dE92ZXJsYXBzOwogCWludAkJCWlpX1Bh cmFsbGVsV29ya2VyczsKKwlib29sCQlpaV9BdXhpbGlhcnk7CiAJT2lkCQkJaWlfQW07CiAJdm9p ZAkgICAqaWlfQW1DYWNoZTsKIAlNZW1vcnlDb250ZXh0IGlpX0NvbnRleHQ7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9pbmRleF9zZWxmdW5jcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv aW5kZXhfc2VsZnVuY3MuaAppbmRleCA2YzY0ZGI2ZDQ1Ni4uZTBkOTM5ZDY4NTcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvaW5kZXhfc2VsZnVuY3MuaApAQCAtNjIsNiArNjIsMTQgQEAgZXh0ZXJuIHZvaWQgc3Bn Y29zdGVzdGltYXRlKHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQlTZWxlY3Rpdml0 eSAqaW5kZXhTZWxlY3Rpdml0eSwKIAkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVsYXRpb24sCiAJ CQkJCQkJZG91YmxlICppbmRleFBhZ2VzKTsKK2V4dGVybiB2b2lkIHN0aXJjb3N0ZXN0aW1hdGUo c3RydWN0IFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCXN0cnVjdCBJbmRleFBhdGggKnBhdGgs CisJCQkJCQkJZG91YmxlIGxvb3BfY291bnQsCisJCQkJCQkJQ29zdCAqaW5kZXhTdGFydHVwQ29z dCwKKwkJCQkJCQlDb3N0ICppbmRleFRvdGFsQ29zdCwKKwkJCQkJCQlTZWxlY3Rpdml0eSAqaW5k ZXhTZWxlY3Rpdml0eSwKKwkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVsYXRpb24sCisJCQkJCQkJ ZG91YmxlICppbmRleFBhZ2VzKTsKIGV4dGVybiB2b2lkIGdpbmNvc3Rlc3RpbWF0ZShzdHJ1Y3Qg UGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJc3RydWN0IEluZGV4UGF0aCAqcGF0aCwKIAkJCQkJ CQlkb3VibGUgbG9vcF9jb3VudCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvYW11dGlscy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0Cmlu ZGV4IDdhYjYxMTNjNjE5Li45MmMwMzNhMjAxMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9hbXV0aWxzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Ft dXRpbHMub3V0CkBAIC0xNzMsNyArMTczLDEzIEBAIHNlbGVjdCBhbW5hbWUsIHByb3AsIHBnX2lu ZGV4YW1faGFzX3Byb3BlcnR5KGEub2lkLCBwcm9wKSBhcyBwCiAgc3BnaXN0IHwgY2FuX2V4Y2x1 ZGUgICB8IHQKICBzcGdpc3QgfCBjYW5faW5jbHVkZSAgIHwgdAogIHNwZ2lzdCB8IGJvZ3VzICAg ICAgICAgfCAKLSgzNiByb3dzKQorIHN0aXIgICB8IGNhbl9vcmRlciAgICAgfCBmCisgc3RpciAg IHwgY2FuX3VuaXF1ZSAgICB8IGYKKyBzdGlyICAgfCBjYW5fbXVsdGlfY29sIHwgdAorIHN0aXIg ICB8IGNhbl9leGNsdWRlICAgfCBmCisgc3RpciAgIHwgY2FuX2luY2x1ZGUgICB8IHQKKyBzdGly ICAgfCBib2d1cyAgICAgICAgIHwgCisoNDIgcm93cykKIAogLS0KIC0tIGFkZGl0aW9uYWwgY2hl Y2tzIGZvciBwZ19pbmRleF9jb2x1bW5faGFzX3Byb3BlcnR5CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9vcHJfc2FuaXR5Lm91dAppbmRleCAyMGJmOWVhOWNkZi4uZmMxMTZiODRhMjggMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAtMjEyMiw5ICsyMTIyLDEw IEBAIEZST00gcGdfb3BjbGFzcyBBUyBjMQogV0hFUkUgTk9UIEVYSVNUUyhTRUxFQ1QgMSBGUk9N IHBnX2Ftb3AgQVMgYTEKICAgICAgICAgICAgICAgICAgV0hFUkUgYTEuYW1vcGZhbWlseSA9IGMx Lm9wY2ZhbWlseQogICAgICAgICAgICAgICAgICAgIEFORCBiaW5hcnlfY29lcmNpYmxlKGMxLm9w Y2ludHlwZSwgYTEuYW1vcGxlZnR0eXBlKSk7Ci0gb3BjbmFtZSB8IG9wY2ZhbWlseSAKLS0tLS0t LS0tLSstLS0tLS0tLS0tLQotKDAgcm93cykKKyBvcGNuYW1lICB8IG9wY2ZhbWlseSAKKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBzdGlyX29wcyB8ICAgICAgNTU1OAorKDEgcm93KQogCiAtLSBD aGVjayB0aGF0IGVhY2ggb3BlcmF0b3IgbGlzdGVkIGluIHBnX2Ftb3AgaGFzIGFuIGFzc29jaWF0 ZWQgb3BjbGFzcywKIC0tIHRoYXQgaXMgb25lIHdob3NlIG9wY2ludHlwZSBtYXRjaGVzIG9wcmxl ZnQgKHBvc3NpYmx5IGJ5IGNvZXJjaW9uKS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0Cmlu ZGV4IGNmNDhhZTZkMGMyLi41MmRkZTU3NjgwZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwu b3V0CkBAIC01MTM3LDcgKzUxMzcsOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAg IHwgVGFibGUKICBoZWFwMiAgfCBUYWJsZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCByb3dzKQorIHN0 aXIgICB8IEluZGV4CisoOSByb3dzKQogCiBcZEEgKgogTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwpA QCAtNTE1MSw3ICs1MTUyLDggQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRh YmxlCiAgaGVhcDIgIHwgVGFibGUKICBzcGdpc3QgfCBJbmRleAotKDggcm93cykKKyBzdGlyICAg fCBJbmRleAorKDkgcm93cykKIAogXGRBIGgqCiBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCkBAIC01 MTc2LDkgKzUxNzgsOSBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAKIFxkQTogZXh0cmEgYXJn dW1lbnQgImJhciIgaWdub3JlZAogXGRBKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIGFjY2VzcyBtZXRob2RzCi0gIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAg ICAgICB8ICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgIAotLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFj Y2VzcyBtZXRob2RzCisgIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAg ICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogIGJyaW4gICB8IEluZGV4IHwgYnJpbmhhbmRsZXIgICAgICAgICAgfCBi bG9jayByYW5nZSBpbmRleCAoQlJJTikgYWNjZXNzIG1ldGhvZAogIGJ0cmVlICB8IEluZGV4IHwg YnRoYW5kbGVyICAgICAgICAgICAgfCBiLXRyZWUgaW5kZXggYWNjZXNzIG1ldGhvZAogIGdpbiAg ICB8IEluZGV4IHwgZ2luaGFuZGxlciAgICAgICAgICAgfCBHSU4gaW5kZXggYWNjZXNzIG1ldGhv ZApAQCAtNTE4NywxMiArNTE4OSwxMyBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAg IHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IGhlYXAgdGFibGUgYWNjZXNzIG1ldGhv ZAogIGhlYXAyICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCAKICBzcGdpc3QgfCBJ bmRleCB8IHNwZ2hhbmRsZXIgICAgICAgICAgIHwgU1AtR2lTVCBpbmRleCBhY2Nlc3MgbWV0aG9k Ci0oOCByb3dzKQorIHN0aXIgICB8IEluZGV4IHwgc3RpcmhhbmRsZXIgICAgICAgICAgfCBzaG9y dCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRob2QKKyg5IHJvd3MpCiAKIFxkQSsg KgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCi0g IE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICBEZXNj cmlwdGlvbiAgICAgICAgICAgICAgIAotLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCisgIE5hbWUgIHwg VHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICAgIERlc2NyaXB0aW9u ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGJyaW4gICB8 IEluZGV4IHwgYnJpbmhhbmRsZXIgICAgICAgICAgfCBibG9jayByYW5nZSBpbmRleCAoQlJJTikg YWNjZXNzIG1ldGhvZAogIGJ0cmVlICB8IEluZGV4IHwgYnRoYW5kbGVyICAgICAgICAgICAgfCBi LXRyZWUgaW5kZXggYWNjZXNzIG1ldGhvZAogIGdpbiAgICB8IEluZGV4IHwgZ2luaGFuZGxlciAg ICAgICAgICAgfCBHSU4gaW5kZXggYWNjZXNzIG1ldGhvZApAQCAtNTIwMSw3ICs1MjA0LDggQEAg TGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hh bmRsZXIgfCBoZWFwIHRhYmxlIGFjY2VzcyBtZXRob2QKICBoZWFwMiAgfCBUYWJsZSB8IGhlYXBf dGFibGVhbV9oYW5kbGVyIHwgCiAgc3BnaXN0IHwgSW5kZXggfCBzcGdoYW5kbGVyICAgICAgICAg ICB8IFNQLUdpU1QgaW5kZXggYWNjZXNzIG1ldGhvZAotKDggcm93cykKKyBzdGlyICAgfCBJbmRl eCB8IHN0aXJoYW5kbGVyICAgICAgICAgIHwgc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVudCBh Y2Nlc3MgbWV0aG9kCisoOSByb3dzKQogCiBcZEErIGgqCiAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIGFjY2VzcyBtZXRob2RzCi0tIAoyLjQzLjAKCg== --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0008-Use-auxiliary-indexes-for-concurrent-index-opera.patch" Content-Disposition: attachment; filename="v20-0008-Use-auxiliary-indexes-for-concurrent-index-opera.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9ogv9 RnJvbSA0MWY2ZGRiYjkwOWM2YWMyZmM0MDgwMzA4MDVmMDMxMmQ0NzRiNzA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDA4LzEyXSBVc2UgYXV4aWxpYXJ5IGluZGV4ZXMgZm9yIGNvbmN1cnJlbnQgaW5k ZXgKIG9wZXJhdGlvbnMKClJlcGxhY2UgdGhlIHNlY29uZCB0YWJsZSBmdWxsIHNjYW4gaW4gY29u Y3VycmVudCBpbmRleCBidWlsZHMgd2l0aCBhbiBhdXhpbGlhcnkgaW5kZXggYXBwcm9hY2g6Ci0g Y3JlYXRlIGEgU1RJUiAgYXV4aWxpYXJ5IGluZGV4IHdpdGggdGhlIHNhbWUgcHJlZGljYXRlIChp ZiBleGlzdHMpIGFzIGluIG1haW4gaW5kZXgKLSB1c2UgaXQgdG8gdHJhY2sgdHVwbGVzIGluc2Vy dGVkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UKLSBtZXJnZSBhdXhpbGlhcnkgaW5kZXggd2l0aCBt YWluIGluZGV4IGR1cmluZyB2YWxpZGF0aW9uIHRvIGNhdGNoIHVwIG5ldyBpbmRleCB3aXRoIGFu eSB0dXBsZXMgbWlzc2VkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UKLSBhdXRvbWF0aWNhbGx5IGRy b3AgYXV4aWxpYXJ5IHdoZW4gbWFpbiBpbmRleCBpcyByZWFkeQoKVG8gbWVyZ2UgbWFpbiBhbmQg YXV4aWxpYXJ5IGluZGV4ZXM6Ci0gaW5kZXhfYnVsa19kZWxldGUgY2FsbGVkIGZvciBib3RoLCBU SURzIHB1dCBpbnRvIHR1cGxlc29ydAotIGJvdGggdHVwbGVzb3J0IGFyZSBiZWluZyBzb3J0ZWQK LSBib3RoIHR1cGxlc29ydCBzY2FubmVkIHdpdGggdHdvIHBvaW50ZXJzIGxvb2tpbmcgZm9yIHRo ZSBUSURzIHByZXNlbnQgaW4gYXV4aWxpYXJ5IGluZGV4LCBidXQgYWJzZW50IGluIG1haW4gb25l Ci0gYWxsIHN1Y2ggVElEcyBhcmUgcHV0IGludG8gdHVwbGVzdG9yZQotIGFsbCBUSURzIGluIHR1 cGxlc3RvcmUgYXJlIGZldGNoZWQgdXNpbmcgdGhlIHN0cmVhbSwgdHVwbGVzdG9yZSB1c2VkIGlu IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQgdG8gcHJvdmlkZSB0 aGUgbmV4dCBwYWdlIHRvIHByZWZldGNoCi0gaWYgZmV0Y2hlZCB0dXBsZSBpcyBhbGl2ZSAtIGl0 IGlzIGluc2VydGVkIGludG8gdGhlIG1haW4gaW5kZXgKClRoaXMgZWxpbWluYXRlcyB0aGUgbmVl ZCBmb3IgYSBzZWNvbmQgZnVsbCB0YWJsZSBzY2FuIGR1cmluZyB2YWxpZGF0aW9uLCBpbXByb3Zp bmcgcGVyZm9ybWFuY2UgZXNwZWNpYWxseSBmb3IgbGFyZ2UgdGFibGVzLiBBZmZlY3RzIGJvdGgg Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg b3BlcmF0aW9ucy4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAg ICAgfCAgMjYgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgICB8 ICAzNCArLQogZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICAgIHwgIDQx ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgICAgfCAgMTMgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICB8IDU0NSArKysrKysr KysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAg ICB8IDI5MiArKysrKysrKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs ICAgICAgIHwgIDE3ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAg ICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICB8 IDMzNyArKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyAgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAg ICB8ICAyOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgIHwg IDEyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oICAgICAgICAgICAgfCAgMTMg Ky0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICB8ICAgNCArLQog c3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgfCAgNDIgKysKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgIHwgIDE3ICstCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgfCAgMjEgKwogMTkgZmlsZXMgY2hhbmdlZCwgMTEw NCBpbnNlcnRpb25zKCspLCAzNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXgg NDI2NWEyMmQ0ZGUuLjhjY2Q2OWIxNGMyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRv cmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTYzMTQsNiAr NjMxNCwxOCBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7 CiAgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAgICAgICA8L2VudHJ5PgogICAg ICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD53YWl0aW5nIGZvciB3 cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5k PiBvciA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBm b3IgdHJhbnNhY3Rpb25zCisgICAgICAgd2l0aCB3cml0ZSBsb2NrcyB0aGF0IGNhbiBwb3RlbnRp YWxseSBzZWUgdGhlIHRhYmxlIHRvIGZpbmlzaCwgdG8gZW5zdXJlIHVzZSBvZiBhdXhpbGlhcnkg aW5kZXggZm9yIG5ldyB0dXBsZXMgaW4KKyAgICAgICBmdXR1cmUgdHJhbnNhY3Rpb25zLgorICAg ICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25jdXJyZW50IG1vZGUuCisg ICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5sb2NrZXJzX3RvdGFsPC9zdHJ1Y3RuYW1lPiwgPHN0 cnVjdG5hbWU+bG9ja2Vyc19kb25lPC9zdHJ1Y3RuYW1lPgorICAgICAgIGFuZCA8c3RydWN0bmFt ZT5jdXJyZW50X2xvY2tlcl9waWQ8L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhlIHByb2dyZXNzCisg ICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICA8L2VudHJ5PgorICAgICA8 L3Jvdz4KICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5idWlsZGluZyBpbmRleDwv bGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgpAQCAtNjM1NCwxMyArNjM2NiwxMiBAQCBG Uk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7CiAgICAgICA8L2Vu dHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KLSAgICAgIDxlbnRyeT48bGl0ZXJhbD5pbmRl eCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVu dHJ5PjxsaXRlcmFsPmluZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhlczwvbGl0ZXJhbD48 L2VudHJ5PgogICAgICAgPGVudHJ5PgotICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHNjYW5uaW5nIHRoZSB0YWJsZQotICAgICAgIHRvIHZhbGlk YXRlIHRoZSBpbmRleCB0dXBsZXMgY29sbGVjdGVkIGluIHRoZSBwcmV2aW91cyB0d28gcGhhc2Vz LgorICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IG1l cmdpbmcgY29udGVudCBvZiBhdXhpbGlhcnkgaW5kZXggd2l0aCB0aGUgdGFyZ2V0IGluZGV4Lgog ICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25jdXJyZW50IG1vZGUu Ci0gICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5ibG9ja3NfdG90YWw8L3N0cnVjdG5hbWU+IChz ZXQgdG8gdGhlIHRvdGFsIHNpemUgb2YgdGhlIHRhYmxlKQotICAgICAgIGFuZCA8c3RydWN0bmFt ZT5ibG9ja3NfZG9uZTwvc3RydWN0bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3MgaW5mb3JtYXRp b24gZm9yIHRoaXMgcGhhc2UuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT50dXBsZXNfdG90 YWw8L3N0cnVjdG5hbWU+IChzZXQgdG8gdGhlIG51bWJlciBvZiB0dXBsZXMgdG8gYmUgbWVyZ2Vk KQorICAgICAgIGFuZCA8c3RydWN0bmFtZT50dXBsZXNfZG9uZTwvc3RydWN0bmFtZT4gY29udGFp biB0aGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAgICAgICA8L2VudHJ5 PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KQEAgLTYzNzcsOCArNjM4OCw5IEBAIEZST00gcGdf c3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAgPHJvdz4KICAgICAg IDxlbnRyeT48bGl0ZXJhbD53YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQ8 L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8Y29tbWFuZD5SRUlOREVY IENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zCi0gICAg ICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9yZSBtYXJraW5n IHRoZSBvbGQgaW5kZXggZGVhZC4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZPC9jb21tYW5kPiBpcyB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMKKyAgICAgICAgd2l0 aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9yZSBtYXJraW5nIHRoZSBh dXhpbGlhcnkgaW5kZXggYXMgZGVhZC4KKyAgICAgICA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJF TlRMWTwvY29tbWFuZD4gaXMgYWxzbyB3YWl0aW5nIGJlZm9yZSBtYXJraW5nIHRoZSBvbGQgaW5k ZXggYXMgZGVhZC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hlbiBub3QgaW4gY29u Y3VycmVudCBtb2RlLgogICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+bG9ja2Vyc190b3RhbDwv c3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3RydWN0bmFtZT4KICAgICAg ICBhbmQgPHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1Y3RuYW1lPiBjb250YWlu IHRoZSBwcm9ncmVzcwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXgu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKaW5kZXggMTQ3YThmNzU4 N2MuLmU3YTdhMTYwNzQyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRl eC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKQEAgLTYyMCwx MCArNjIwLDEwIEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09OQ1VSUkVOVExZIF0gWyBb IElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICAgb3V0IHdyaXRlcy4gIFRo aXMgbWV0aG9kIGlzIGludm9rZWQgYnkgc3BlY2lmeWluZyB0aGUKICAgICA8bGl0ZXJhbD5DT05D VVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlvbiBvZiA8Y29tbWFuZD5DUkVBVEUgSU5ERVg8L2NvbW1h bmQ+LgogICAgIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwKLSAgICA8cHJvZHVjdG5hbWU+UG9z dGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMgb2YgdGhlIHRhYmxl LCBhbmQgaW4KLSAgICBhZGRpdGlvbiBpdCBtdXN0IHdhaXQgZm9yIGFsbCBleGlzdGluZyB0cmFu c2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseQotICAgIG1vZGlmeSBvciB1c2UgdGhlIGlu ZGV4IHRvIHRlcm1pbmF0ZS4gIFRodXMKLSAgICB0aGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRv dGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4IGJ1aWxkIGFuZCB0YWtlcworICAgIDxwcm9k dWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHRhYmxlIHNjYW4g Zm9sbG93ZWQgYnkKKyAgICB2YWxpZGF0aW9uIHBoYXNlLCBhbmQgaW4gYWRkaXRpb24gaXQgbXVz dCB3YWl0IGZvciBhbGwgZXhpc3RpbmcgdHJhbnNhY3Rpb25zCisgICAgdGhhdCBjb3VsZCBwb3Rl bnRpYWxseSBtb2RpZnkgb3IgdXNlIHRoZSBpbmRleCB0byB0ZXJtaW5hdGUuICBUaHVzCisgICAg dGhpcyBtZXRob2QgcmVxdWlyZXMgbW9yZSB0b3RhbCB3b3JrIHRoYW4gYSBzdGFuZGFyZCBpbmRl eCBidWlsZCBhbmQgbWF5IHRha2UKICAgICBzaWduaWZpY2FudGx5IGxvbmdlciB0byBjb21wbGV0 ZS4gIEhvd2V2ZXIsIHNpbmNlIGl0IGFsbG93cyBub3JtYWwKICAgICBvcGVyYXRpb25zIHRvIGNv bnRpbnVlIHdoaWxlIHRoZSBpbmRleCBpcyBidWlsdCwgdGhpcyBtZXRob2QgaXMgdXNlZnVsIGZv cgogICAgIGFkZGluZyBuZXcgaW5kZXhlcyBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuICBP ZiBjb3Vyc2UsIHRoZSBleHRyYSBDUFUKQEAgLTYzMSwxNCArNjMxLDE0IEBAIENSRUFURSBbIFVO SVFVRSBdIElOREVYIFsgQ09OQ1VSUkVOVExZIF0gWyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFj ZWFibGUgY2xhc3M9CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIEluIGEgY29uY3VycmVu dCBpbmRleCBidWlsZCwgdGhlIGluZGV4IGlzIGFjdHVhbGx5IGVudGVyZWQgYXMgYW4KLSAgICA8 cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4IGludG8KLSAgICB0aGUgc3lzdGVtIGNhdGFsb2dz IGluIG9uZSB0cmFuc2FjdGlvbiwgdGhlbiB0d28gdGFibGUgc2NhbnMgb2NjdXIgaW4KLSAgICB0 d28gbW9yZSB0cmFuc2FjdGlvbnMuICBCZWZvcmUgZWFjaCB0YWJsZSBzY2FuLCB0aGUgaW5kZXgg YnVpbGQgbXVzdAorICAgIEluIGEgY29uY3VycmVudCBpbmRleCBidWlsZCwgdGhlIG1haW4gYW5k IGF1eGlsaWFyeSBpbmRleGVzIGlzIGFjdHVhbGx5CisgICAgZW50ZXJlZCBhcyBhbiA8cXVvdGU+ aW52YWxpZDwvcXVvdGU+IGluZGV4IGludG8KKyAgICB0aGUgc3lzdGVtIGNhdGFsb2dzIGluIG9u ZSB0cmFuc2FjdGlvbiwgdGhlbiB0d28gcGhhc2VzIG9jY3VyIGluCisgICAgbXVsdGlwbGUgdHJh bnNhY3Rpb25zLiAgQmVmb3JlIGVhY2ggcGhhc2UsIHRoZSBpbmRleCBidWlsZCBtdXN0CiAgICAg d2FpdCBmb3IgZXhpc3RpbmcgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBtb2RpZmllZCB0aGUgdGFi bGUgdG8gdGVybWluYXRlLgotICAgIEFmdGVyIHRoZSBzZWNvbmQgc2NhbiwgdGhlIGluZGV4IGJ1 aWxkIG11c3Qgd2FpdCBmb3IgYW55IHRyYW5zYWN0aW9ucworICAgIEFmdGVyIHRoZSBzZWNvbmQg cGhhc2UsIHRoZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0cmFuc2FjdGlvbnMKICAg ICB0aGF0IGhhdmUgYSBzbmFwc2hvdCAoc2VlIDx4cmVmIGxpbmtlbmQ9Im12Y2MiLz4pIHByZWRh dGluZyB0aGUgc2Vjb25kCi0gICAgc2NhbiB0byB0ZXJtaW5hdGUsIGluY2x1ZGluZyB0cmFuc2Fj dGlvbnMgdXNlZCBieSBhbnkgcGhhc2Ugb2YgY29uY3VycmVudAorICAgIHBoYXNlIHRvIHRlcm1p bmF0ZSwgaW5jbHVkaW5nIHRyYW5zYWN0aW9ucyB1c2VkIGJ5IGFueSBwaGFzZSBvZiBjb25jdXJy ZW50CiAgICAgaW5kZXggYnVpbGRzIG9uIG90aGVyIHRhYmxlcywgaWYgdGhlIGluZGV4ZXMgaW52 b2x2ZWQgYXJlIHBhcnRpYWwgb3IgaGF2ZQogICAgIGNvbHVtbnMgdGhhdCBhcmUgbm90IHNpbXBs ZSBjb2x1bW4gcmVmZXJlbmNlcy4KICAgICBUaGVuIGZpbmFsbHkgdGhlIGluZGV4IGNhbiBiZSBt YXJrZWQgPHF1b3RlPnZhbGlkPC9xdW90ZT4gYW5kIHJlYWR5IGZvciB1c2UsCkBAIC02NTEsMTAg KzY1MSwxMSBAQCBDUkVBVEUgWyBVTklRVUUgXSBJTkRFWCBbIENPTkNVUlJFTlRMWSBdIFsgWyBJ RiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPQogICAgPHBhcmE+CiAgICAgSWYgYSBw cm9ibGVtIGFyaXNlcyB3aGlsZSBzY2FubmluZyB0aGUgdGFibGUsIHN1Y2ggYXMgYSBkZWFkbG9j ayBvciBhCiAgICAgdW5pcXVlbmVzcyB2aW9sYXRpb24gaW4gYSB1bmlxdWUgaW5kZXgsIHRoZSA8 Y29tbWFuZD5DUkVBVEUgSU5ERVg8L2NvbW1hbmQ+Ci0gICAgY29tbWFuZCB3aWxsIGZhaWwgYnV0 IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4LiBUaGlzIGluZGV4 Ci0gICAgd2lsbCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcyBiZWNhdXNlIGl0IG1p Z2h0IGJlIGluY29tcGxldGU7Ci0gICAgaG93ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1bWUgdXBk YXRlIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPgotICAgIDxj b21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0IHN1Y2ggYW4gaW5kZXggYXMg PGxpdGVyYWw+SU5WQUxJRDwvbGl0ZXJhbD46CisgICAgY29tbWFuZCB3aWxsIGZhaWwgYnV0IGxl YXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4IGFuZCBpdHMKKyAgICBh c3NvY2lhdGVkIGF1eGlsaWFyeSBpbmRleC4gVGhlc2UgaW5kZXhlcworICAgIHdpbGwgYmUgaWdu b3JlZCBmb3IgcXVlcnlpbmcgcHVycG9zZXMgYmVjYXVzZSB0aGV5IG1pZ2h0IGJlIGluY29tcGxl dGU7CisgICAgaG93ZXZlciB0aGV5IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUgb3ZlcmhlYWQu IFRoZSA8YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+CisgICAgPGNvbW1hbmQ+XGQ8L2Nv bW1hbmQ+IGNvbW1hbmQgd2lsbCByZXBvcnQgc3VjaCBpbmRleGVzIGFzIDxsaXRlcmFsPklOVkFM SUQ8L2xpdGVyYWw+OgogCiA8cHJvZ3JhbWxpc3Rpbmc+CiBwb3N0Z3Jlcz0jIFxkIHRhYgpAQCAt NjY0LDExICs2NjUsMTIgQEAgcG9zdGdyZXM9IyBcZCB0YWIKICBjb2wgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfAogSW5kZXhlczoKICAgICAiaWR4IiBidHJlZSAoY29sKSBJ TlZBTElECisgICAgImlkeF9jY2F1eCIgc3RpciAoY29sKSBJTlZBTElECiA8L3Byb2dyYW1saXN0 aW5nPgogCiAgICAgVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5Ci0gICAgbWV0aG9kIGluIHN1Y2gg Y2FzZXMgaXMgdG8gZHJvcCB0aGUgaW5kZXggYW5kIHRyeSBhZ2FpbiB0byBwZXJmb3JtCi0gICAg PGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uICAoQW5vdGhlciBw b3NzaWJpbGl0eSBpcworICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlc2Ug aW5kZXhlcyBhbmQgdHJ5IGFnYWluIHRvIHBlcmZvcm0KKyAgICA8Y29tbWFuZD5DUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPi4gKEFub3RoZXIgcG9zc2liaWxpdHkgaXMKICAgICB0 byByZWJ1aWxkIHRoZSBpbmRleCB3aXRoIDxjb21tYW5kPlJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZPC9jb21tYW5kPikuCiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvcmVpbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5kZXggYzQw NTUzOTcxNDYuLjRlZDNjOTY5MDEyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5k ZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbApAQCAtMzY4LDkgKzM2 OCw4IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248 L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVT UUw8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0cyByZWJ1aWxkaW5nIGluZGV4ZXMgd2l0aCBtaW5pbXVt IGxvY2tpbmcKICAgICBvZiB3cml0ZXMuICBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHNwZWNp ZnlpbmcgdGhlCiAgICAgPGxpdGVyYWw+Q09OQ1VSUkVOVExZPC9saXRlcmFsPiBvcHRpb24gb2Yg PGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4uIFdoZW4gdGhpcyBvcHRpb24KLSAgICBpcyB1c2Vk LCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28g c2NhbnMgb2YgdGhlIHRhYmxlCi0gICAgZm9yIGVhY2ggaW5kZXggdGhhdCBuZWVkcyB0byBiZSBy ZWJ1aWx0IGFuZCB3YWl0IGZvciB0ZXJtaW5hdGlvbiBvZgotICAgIGFsbCBleGlzdGluZyB0cmFu c2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSB1c2UgdGhlIGluZGV4LgorICAgIGlzIHVz ZWQsIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHNl dmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRhdGEKKyAgICBjb25zaXN0ZW5jeSB3aGlsZSBhbGxvd2lu ZyBub3JtYWwgb3BlcmF0aW9ucyB0byBjb250aW51ZS4KICAgICBUaGlzIG1ldGhvZCByZXF1aXJl cyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4CiAgICAgcmVidWlsZCBhbmQg dGFrZXMgc2lnbmlmaWNhbnRseSBsb25nZXIgdG8gY29tcGxldGUgYXMgaXQgbmVlZHMgdG8gd2Fp dAogICAgIGZvciB1bmZpbmlzaGVkIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IG1vZGlmeSB0aGUg aW5kZXguIEhvd2V2ZXIsIHNpbmNlCkBAIC0zODgsNyArMzg3LDcgQEAgUkVJTkRFWCBbICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0g KSBdIHsgREEKICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJh PgotICAgICAgIEEgbmV3IHRyYW5zaWVudCBpbmRleCBkZWZpbml0aW9uIGlzIGFkZGVkIHRvIHRo ZSBjYXRhbG9nCisgICAgICAgQSBuZXcgdHJhbnNpZW50IGluZGV4IGRlZmluaXRpb24gYW5kIGFu IGF1eGlsaWFyeSBpbmRleCBhcmUgYWRkZWQgdG8gdGhlIGNhdGFsb2cKICAgICAgICA8bGl0ZXJh bD5wZ19pbmRleDwvbGl0ZXJhbD4uICBUaGlzIGRlZmluaXRpb24gd2lsbCBiZSB1c2VkIHRvIHJl cGxhY2UKICAgICAgICB0aGUgb2xkIGluZGV4LiAgQSA8bGl0ZXJhbD5TSEFSRSBVUERBVEUgRVhD TFVTSVZFPC9saXRlcmFsPiBsb2NrIGF0CiAgICAgICAgc2Vzc2lvbiBsZXZlbCBpcyB0YWtlbiBv biB0aGUgaW5kZXhlcyBiZWluZyByZWluZGV4ZWQgYXMgd2VsbCBhcyB0aGVpcgpAQCAtMzk4LDcg KzM5NywxNSBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0 aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAg ICAgIDxwYXJhPgotICAgICAgIEEgZmlyc3QgcGFzcyB0byBidWlsZCB0aGUgaW5kZXggaXMgZG9u ZSBmb3IgZWFjaCBuZXcgaW5kZXguICBPbmNlIHRoZQorICAgICAgIFRoZSBhdXhpbGlhcnkgaW5k ZXggaXMgbWFya2VkIGFzICJyZWFkeSBmb3IgaW5zZXJ0cyIsIG1ha2luZworICAgICAgIGl0IHZp c2libGUgdG8gb3RoZXIgc2Vzc2lvbnMuIFRoaXMgaW5kZXggZWZmaWNpZW50bHkgdHJhY2tzIGFs bCBuZXcKKyAgICAgICB0dXBsZXMgZHVyaW5nIHRoZSByZWluZGV4IHByb2Nlc3MuCisgICAgICA8 L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+ CisgICAgICAgVGhlIG5ldyBtYWluIGluZGV4IGlzIGJ1aWx0IGJ5IHNjYW5uaW5nIHRoZSB0YWJs ZS4gIE9uY2UgdGhlCiAgICAgICAgaW5kZXggaXMgYnVpbHQsIGl0cyBmbGFnIDxsaXRlcmFsPnBn X2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IGlzCiAgICAgICAgc3dpdGNoZWQgdG8gPHF1b3Rl PnRydWU8L3F1b3RlPiB0byBtYWtlIGl0IHJlYWR5IGZvciBpbnNlcnRzLCBtYWtpbmcgaXQKICAg ICAgICB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zIG9uY2UgdGhlIHRyYW5zYWN0aW9uIHRoYXQg cGVyZm9ybWVkIHRoZSBidWlsZApAQCAtNDA5LDkgKzQxNiw5IEBAIFJFSU5ERVggWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhlbiBhIHNl Y29uZCBwYXNzIGlzIHBlcmZvcm1lZCB0byBhZGQgdHVwbGVzIHRoYXQgd2VyZSBhZGRlZCB3aGls ZSB0aGUKLSAgICAgICBmaXJzdCBwYXNzIHdhcyBydW5uaW5nLiAgVGhpcyBzdGVwIGlzIGFsc28g ZG9uZSBpbiBhIHNlcGFyYXRlCi0gICAgICAgdHJhbnNhY3Rpb24gZm9yIGVhY2ggaW5kZXguCisg ICAgICAgQSB2YWxpZGF0aW9uIHBoYXNlIG1lcmdlcyBhbnkgbWlzc2luZyBlbnRyaWVzIGZyb20g dGhlIGF1eGlsaWFyeSBpbmRleAorICAgICAgIGludG8gdGhlIG1haW4gaW5kZXgsIGVuc3VyaW5n IGFsbCBjb25jdXJyZW50IGNoYW5nZXMgYXJlIGNhcHR1cmVkLgorICAgICAgIFRoaXMgc3RlcCBp cyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZSB0cmFuc2FjdGlvbiBmb3IgZWFjaCBpbmRleC4KICAg ICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KIApAQCAtNDI4LDcgKzQzNSw3IEBAIFJFSU5E RVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxl PiBbLCAuLi5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAg ICAgVGhlIG9sZCBpbmRleGVzIGhhdmUgPGxpdGVyYWw+cGdfaW5kZXguaW5kaXNyZWFkeTwvbGl0 ZXJhbD4gc3dpdGNoZWQgdG8KKyAgICAgICBUaGUgb2xkIGFuZCBhdXhpbGlhcnkgaW5kZXhlcyBo YXZlIDxsaXRlcmFsPnBnX2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IHN3aXRjaGVkIHRvCiAg ICAgICAgPHF1b3RlPmZhbHNlPC9xdW90ZT4gdG8gcHJldmVudCBhbnkgbmV3IHR1cGxlIGluc2Vy dGlvbnMsIGFmdGVyIHdhaXRpbmcKICAgICAgICBmb3IgcnVubmluZyBxdWVyaWVzIHRoYXQgbWln aHQgcmVmZXJlbmNlIHRoZSBvbGQgaW5kZXggdG8gY29tcGxldGUuCiAgICAgICA8L3BhcmE+CkBA IC00MzYsNyArNDQzLDcgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKIAogICAgICA8bGlzdGl0 ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBUaGUgb2xkIGluZGV4ZXMgYXJlIGRyb3BwZWQuICBU aGUgPGxpdGVyYWw+U0hBUkUgVVBEQVRFCisgICAgICAgVGhlIG9sZCBhbmQgYXV4aWxpYXJ5IGlu ZGV4ZXMgYXJlIGRyb3BwZWQuICBUaGUgPGxpdGVyYWw+U0hBUkUgVVBEQVRFCiAgICAgICAgRVhD TFVTSVZFPC9saXRlcmFsPiBzZXNzaW9uIGxvY2tzIGZvciB0aGUgaW5kZXhlcyBhbmQgdGhlIHRh YmxlIGFyZQogICAgICAgIHJlbGVhc2VkLgogICAgICAgPC9wYXJhPgpAQCAtNDQ3LDExICs0NTQs MTEgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwv cmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKICAgIDxwYXJhPgogICAgIElmIGEgcHJvYmxl bSBhcmlzZXMgd2hpbGUgcmVidWlsZGluZyB0aGUgaW5kZXhlcywgc3VjaCBhcyBhCiAgICAgdW5p cXVlbmVzcyB2aW9sYXRpb24gaW4gYSB1bmlxdWUgaW5kZXgsIHRoZSA8Y29tbWFuZD5SRUlOREVY PC9jb21tYW5kPgotICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1 b3RlPmludmFsaWQ8L3F1b3RlPiBuZXcgaW5kZXggaW4gYWRkaXRpb24gdG8KLSAgICB0aGUgcHJl LWV4aXN0aW5nIG9uZS4gVGhpcyBpbmRleCB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1 cnBvc2VzCi0gICAgYmVjYXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOyBob3dldmVyIGl0IHdp bGwgc3RpbGwgY29uc3VtZSB1cGRhdGUKKyAgICBjb21tYW5kIHdpbGwgZmFpbCBidXQgbGVhdmUg YmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4IGFuZCBpdHMgYXV4aWxp YXJ5IGluZGV4IGluIGFkZGl0aW9uIHRvCisgICAgdGhlIHByZS1leGlzdGluZyBvbmUuIFRoZXNl IGluZGV4ZXMgd2lsbCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcworICAgIGJlY2F1 c2UgdGhleSBtaWdodCBiZSBpbmNvbXBsZXRlOyBob3dldmVyIHRoZXkgd2lsbCBzdGlsbCBjb25z dW1lIHVwZGF0ZQogICAgIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0 aW9uPiA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29tbWFuZCB3aWxsIHJlcG9ydAotICAgIHN1Y2gg YW4gaW5kZXggYXMgPGxpdGVyYWw+SU5WQUxJRDwvbGl0ZXJhbD46CisgICAgc3VjaCBpbmRleGVz IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+OgogCiA8cHJvZ3JhbWxpc3Rpbmc+CiBwb3N0 Z3Jlcz0jIFxkIHRhYgpAQCAtNDYyLDEyICs0NjksMTQgQEAgcG9zdGdyZXM9IyBcZCB0YWIKIElu ZGV4ZXM6CiAgICAgImlkeCIgYnRyZWUgKGNvbCkKICAgICAiaWR4X2NjbmV3IiBidHJlZSAoY29s KSBJTlZBTElECisgICAgImlkeF9jY2F1eCIgc3RpciAoY29sKSBJTlZBTElECisKIDwvcHJvZ3Jh bWxpc3Rpbmc+CiAKICAgICBJZiB0aGUgaW5kZXggbWFya2VkIDxsaXRlcmFsPklOVkFMSUQ8L2xp dGVyYWw+IGlzIHN1ZmZpeGVkCi0gICAgPGxpdGVyYWw+X2NjbmV3PC9saXRlcmFsPiwgdGhlbiBp dCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50CisgICAgPGxpdGVyYWw+X2NjbmV3PC9saXRl cmFsPiBvciA8bGl0ZXJhbD5fY2NhdXg8L2xpdGVyYWw+LCB0aGVuIGl0IGNvcnJlc3BvbmRzIHRv IHRoZSB0cmFuc2llbnQgb3IgYXV4aWxpYXJ5CiAgICAgaW5kZXggY3JlYXRlZCBkdXJpbmcgdGhl IGNvbmN1cnJlbnQgb3BlcmF0aW9uLCBhbmQgdGhlIHJlY29tbWVuZGVkCi0gICAgcmVjb3Zlcnkg bWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4s CisgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgdGhlc2UgaW5kZXhlcyB1c2luZyA8bGl0 ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKICAgICB0aGVuIGF0dGVtcHQgPGNvbW1hbmQ+UkVJ TkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGFnYWluLgogICAgIElmIHRoZSBpbnZhbGlkIGlu ZGV4IGlzIGluc3RlYWQgc3VmZml4ZWQgPGxpdGVyYWw+X2Njb2xkPC9saXRlcmFsPiwKICAgICBp dCBjb3JyZXNwb25kcyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hpY2ggY291bGQgbm90IGJlIGRy b3BwZWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAppbmRleCA4MjlkYWQxMTk0ZS4uNmY3 MThmZWI2ZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVApAQCAtMzc1LDYgKzM3NSwx MSBAQCBjb25zdHJhaW50IG9uIHdoaWNoIHVwZGF0ZXMgY2FuIGJlIEhPVC4gIE90aGVyIHRyYW5z YWN0aW9ucyBtdXN0IGluY2x1ZGUKIHN1Y2ggYW4gaW5kZXggd2hlbiBkZXRlcm1pbmluZyBIT1Qt c2FmZXR5IG9mIHVwZGF0ZXMsIGV2ZW4gdGhvdWdoIHRoZXkKIG11c3QgaWdub3JlIGl0IGZvciBi b3RoIGluc2VydGlvbiBhbmQgc2VhcmNoaW5nIHB1cnBvc2VzLgogCitBbHNvLCBzcGVjaWFsIGF1 eGlsaWFyeSBpbmRleCBpcyBjcmVhdGVkIHRoZSBzYW1lIHdheS4gSXQgbWFya2VkIGFzCisicmVh ZHkgZm9yIGluc2VydHMiIHdpdGhvdXQgYW55IGFjdHVhbCB0YWJsZSBzY2FuLiBJdHMgcHVycG9z ZSBpcyBjb2xsZWN0CituZXcgdHVwbGVzIGluc2VydGVkIGludG8gdGFibGUgd2hpbGUgb3VyIHRh cmdldCBpbmRleCBpcyBzdGlsbCAibm90IHJlYWR5Citmb3IgaW5zZXJ0cyIKKwogV2UgbXVzdCBk byB0aGlzIHRvIGF2b2lkIG1ha2luZyBpbmNvcnJlY3QgaW5kZXggZW50cmllcy4gIEZvciBleGFt cGxlLAogc3VwcG9zZSB3ZSBhcmUgYnVpbGRpbmcgYW4gaW5kZXggb24gY29sdW1uIFggYW5kIHdl IG1ha2UgYW4gaW5kZXggZW50cnkgZm9yCiBhIG5vbi1IT1QgdHVwbGUgd2l0aCBYPTEuICBUaGVu IHNvbWUgb3RoZXIgYmFja2VuZCwgdW5hd2FyZSB0aGF0IFggaXMgYW4KQEAgLTM5NCwxMCArMzk5 LDEwIEBAIEFzIGFib3ZlLCB3ZSBwb2ludCB0aGUgaW5kZXggZW50cnkgYXQgdGhlIHJvb3Qgb2Yg dGhlIEhPVC11cGRhdGUgY2hhaW4gYnV0IHdlCiB1c2UgdGhlIGtleSB2YWx1ZSBmcm9tIHRoZSBs aXZlIHR1cGxlLgogCiBXZSBtYXJrIHRoZSBpbmRleCBvcGVuIGZvciBpbnNlcnRzIChidXQgc3Rp bGwgbm90IHJlYWR5IGZvciByZWFkcykgdGhlbgotd2UgYWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rp b25zIHdoaWNoIGhhdmUgdGhlIHRhYmxlIG9wZW4uICBUaGVuIHdlIHRha2UKLWEgc2Vjb25kIHJl ZmVyZW5jZSBzbmFwc2hvdCBhbmQgdmFsaWRhdGUgdGhlIGluZGV4LiAgVGhpcyBzZWFyY2hlcyBm b3IKLXR1cGxlcyBtaXNzaW5nIGZyb20gdGhlIGluZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlzc2lu ZyBvbmVzLiAgQWdhaW4sCi10aGUgaW5kZXggZW50cmllcyBoYXZlIHRvIGhhdmUgVElEcyBlcXVh bCB0byBIT1QtY2hhaW4gcm9vdCBUSURzLCBidXQKK3dlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0 aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB2YWxpZGF0ZQordGhlIGluZGV4 LiAgVGhpcyBzZWFyY2hlcyBmb3IgdHVwbGVzIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXggaW4gYXV4 aWxpYXJ5CitpbmRleCwgYW5kIGluc2VydHMgYW55IG1pc3Npbmcgb25lcyBpZiB0aGVtIHZpc2li bGUgdG8gcmVmZXJlbmNlIHNuYXBzaG90LgorQWdhaW4sIHRoZSBpbmRleCBlbnRyaWVzIGhhdmUg dG8gaGF2ZSBUSURzIGVxdWFsIHRvIEhPVC1jaGFpbiByb290IFRJRHMsIGJ1dAogdGhlIHZhbHVl IHRvIGJlIGluc2VydGVkIGlzIHRoZSBvbmUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4KIAogVGhlbiB3 ZSB3YWl0IHVudGlsIGV2ZXJ5IHRyYW5zYWN0aW9uIHRoYXQgY291bGQgaGF2ZSBhIHNuYXBzaG90 IG9sZGVyIHRoYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4 IDBlYWE0ZGY1NTgyLi42MzNiYzI0NWUyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZwYWdl LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNh dGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Nh cnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCkBAIC0xNzgxLDI0MyArMTc4Miw0MDUgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3Jhbmdl X3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXJldHVybiByZWx0dXBsZXM7CiB9CiAKKy8q CisgKiBDYWxjdWxhdGUgc2V0IGRpZmZlcmVuY2UgKHJlbGF0aXZlIGNvbXBsZW1lbnQpIG9mIG1h aW4gYW5kIGF1eAorICogc2V0cy4KKyAqCisgKiBBbGwgcmVjb3JkcyB3aGljaCBhcmUgcHJlc2Vu dCBpbiBhdXhsaWFyeSB0dXBsZXNvcnQgYnV0IG5vdCBpcworICogbWFpbiBhcmUgYWRkZWQgdG8g dGhlIHN0b3JlLgorICoKKyAqIEluIHNldCB0aGVvcnkgbm90YXRpb24gc3RvcmUgPSBhdXggLSBt YWluIG9yIHN0b3JlID0gYXV4IC8gbWFpbi4KKyAqCisgKiByZXR1cm5zIG51bWJlciBvZiBpdGVt cyBhZGRlZCB0byBzdG9yZQorICovCitzdGF0aWMgaW50CitoZWFwYW1faW5kZXhfdmFsaWRhdGVf dHVwbGVzb3J0X2RpZmZlcmVuY2UoVHVwbGVzb3J0c3RhdGUgICptYWluLAorCQkJCQkJCQkJCSAg IFR1cGxlc29ydHN0YXRlICAqYXV4LAorCQkJCQkJCQkJCSAgIFR1cGxlc3RvcmVzdGF0ZSAqc3Rv cmUpCit7CisJaW50CQkJCW51bSA9IDA7CisJLyogc3RhdGUgdmFyaWFibGVzIGZvciB0aGUgbWVy Z2UgKi8KKwlJdGVtUG9pbnRlciAJaW5kZXhjdXJzb3IgPSBOVUxMLAorCQkJCQlhdXhpbmRleGN1 cnNvciA9IE5VTEw7CisJSXRlbVBvaW50ZXJEYXRhIGRlY29kZWQsCisJCQkJCWF1eGRlY29kZWQ7 CisJYm9vbAkJCXR1cGxlc29ydF9lbXB0eSA9IGZhbHNlLAorCQkJCQlhdXh0dXBsZXNvcnRfZW1w dHkgPSBmYWxzZTsKKworCS8qIEluaXRpYWxpemUgcG9pbnRlcnMuICovCisJSXRlbVBvaW50ZXJT ZXRJbnZhbGlkKCZkZWNvZGVkKTsKKwlJdGVtUG9pbnRlclNldEludmFsaWQoJmF1eGRlY29kZWQp OworCisJLyoKKwkgKiBNYWluIGxvb3A6IHdlIHN0ZXAgdGhyb3VnaCB0aGUgYXV4aWxpYXJ5IHNv cnQgKGF1eFN0YXRlLT50dXBsZXNvcnQpLAorCSAqIHdoaWNoIGhvbGRzIFRJRHMgdGhhdCBtdXN0 IGNvbXBhcmVkIHRvIHRob3NlIGZyb20gdGhlICJtYWluIiBzb3J0CisJICogKHN0YXRlLT50dXBs ZXNvcnQpLgorCSAqLworCXdoaWxlICghYXV4dHVwbGVzb3J0X2VtcHR5KQorCXsKKwkJRGF0dW0J CXRzX3ZhbDsKKwkJYm9vbAkJdHNfaXNudWxsOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CisJCS8qCisJCSogQXR0ZW1wdCB0byBmZXRjaCB0aGUgbmV4dCBUSUQgZnJvbSB0aGUgYXV4aWxp YXJ5IHNvcnQuIElmIGl0J3MKKwkJKiBlbXB0eSwgd2Ugc2V0IGF1eGluZGV4Y3Vyc29yIHRvIE5V TEwuCisJCSovCisJCWF1eHR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0oYXV4 LCB0cnVlLAorCQkJCQkJCQkJCQkJIGZhbHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAorCQkJCQkJ CQkJCQkJIE5VTEwpOworCQlBc3NlcnQoYXV4dHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwp OworCQlpZiAoIWF1eHR1cGxlc29ydF9lbXB0eSkKKwkJeworCQkJaXRlbXB0cl9kZWNvZGUoJmF1 eGRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7CisJCQlhdXhpbmRleGN1cnNvciA9ICZh dXhkZWNvZGVkOworCQl9CisJCWVsc2UKKwkJeworCQkJYXV4aW5kZXhjdXJzb3IgPSBOVUxMOwor CQl9CisKKwkJLyoKKwkJKiBJZiB0aGUgYXV4aWxpYXJ5IHNvcnQgaXMgbm90IHlldCBlbXB0eSwg d2Ugbm93IHRyeSB0byBzeW5jaHJvbml6ZQorCQkqIHRoZSAibWFpbiIgc29ydCBjdXJzb3IgKGlu ZGV4Y3Vyc29yKSB3aXRoIGF1eGluZGV4Y3Vyc29yLiBXZSBhZHZhbmNlCisJCSogdGhlIG1haW4g c29ydCBjdXJzb3IgdW50aWwgd2UndmUgcmVhY2hlZCBvciBwYXNzZWQgdGhlIGF1eGlsaWFyeSBU SUQuCisJCSovCisJCWlmICghYXV4dHVwbGVzb3J0X2VtcHR5KQorCQl7CisJCQkvKgorCQkJICog TW92ZSB0aGUgbWFpbiBzb3J0IGZvcndhcmQgd2hpbGU6CisJCQkgKiAgICgxKSBJdCdzIG5vdCBl eGhhdXN0ZWQgKHR1cGxlc29ydF9lbXB0eSA9PSBmYWxzZSksIGFuZAorCQkJICogICAoMikgRWl0 aGVyIGluZGV4Y3Vyc29yIGlzIE5VTEwgKGZpcnN0IGl0ZXJhdGlvbikgb3IKKwkJCSAqICAgICAg IGluZGV4Y3Vyc29yIDwgYXV4aW5kZXhjdXJzb3IgaW4gVElEIG9yZGVyLgorCQkJICovCisJCQl3 aGlsZSAoIXR1cGxlc29ydF9lbXB0eSAmJiAoaW5kZXhjdXJzb3IgPT0gTlVMTCB8fCAvKiBudWxs IG9uIGZpcnN0IHRpbWUgaGVyZSAqLworCQkJCQkJSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vy c29yLCBhdXhpbmRleGN1cnNvcikgPCAwKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEdldCB0aGUg bmV4dCBUSUQgZnJvbSB0aGUgbWFpbiBzb3J0LiBJZiBpdCdzIGVtcHR5LAorCQkJCSAqIHdlIHNl dCBpbmRleGN1cnNvciB0byBOVUxMLgorCQkJCSAqLworCQkJCXR1cGxlc29ydF9lbXB0eSA9ICF0 dXBsZXNvcnRfZ2V0ZGF0dW0obWFpbiwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLCAmdHNf dmFsLCAmdHNfaXNudWxsLAorCQkJCQkJCQkJCQkJCSAgTlVMTCk7CisJCQkJQXNzZXJ0KHR1cGxl c29ydF9lbXB0eSB8fCAhdHNfaXNudWxsKTsKKworCQkJCWlmICghdHVwbGVzb3J0X2VtcHR5KQor CQkJCXsKKwkJCQkJaXRlbXB0cl9kZWNvZGUoJmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFs KSk7CisJCQkJCWluZGV4Y3Vyc29yID0gJmRlY29kZWQ7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7 CisJCQkJCWluZGV4Y3Vyc29yID0gTlVMTDsKKwkJCQl9CisKKwkJCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOworCQkJfQorCisJCQkvKgorCQkJICogTm93LCBpZiBlaXRoZXI6CisJCQkgKiAgLSB0 aGUgbWFpbiBzb3J0IGlzIGVtcHR5LCBvcgorCQkJICogIC0gaW5kZXhjdXJzb3IgPiBhdXhpbmRl eGN1cnNvciwKKwkJCSAqCisJCQkgKiB0aGVuIGF1eGluZGV4Y3Vyc29yIGlkZW50aWZpZXMgYSBU SUQgdGhhdCBkb2Vzbid0IGFwcGVhciBpbgorCQkJICogdGhlIG1haW4gc29ydC4gV2UgbGlrZWx5 IG5lZWQgdG8gaW5zZXJ0IGl0CisJCQkgKiBpbnRvIHRoZSB0YXJnZXQgaW5kZXggaWYgaXTigJlz IHZpc2libGUgaW4gdGhlIGhlYXAuCisJCQkgKi8KKwkJCWlmICh0dXBsZXNvcnRfZW1wdHkgfHwg SXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhpbmRleGN1cnNvcikgPiAwKQorCQkJ eworCQkJCXR1cGxlc3RvcmVfcHV0ZGF0dW0oc3RvcmUsIEludDY0R2V0RGF0dW0oaXRlbXB0cl9l bmNvZGUoYXV4aW5kZXhjdXJzb3IpKSk7CisJCQkJbnVtKys7CisJCQl9CisJCX0KKwl9CisKKwly ZXR1cm4gbnVtOworfQorCit0eXBlZGVmIHN0cnVjdCBWYWxpZGF0ZUluZGV4U2NhblN0YXRlCit7 CisJVHVwbGVzdG9yZXN0YXRlCQkqc3RvcmU7CisJQmxvY2tOdW1iZXIJCQlwcmV2X2Jsb2NrX251 bWJlcjsKKwlPZmZzZXROdW1iZXIJCXByZXZfb2ZmX29mZnNldF9udW1iZXI7Cit9IFZhbGlkYXRl SW5kZXhTY2FuU3RhdGU7CisKKy8qCisgKiBUaGlzIGlzIFJlYWRTdHJlYW1CbG9ja051bWJlckNC IGltcGxlbWVudGF0aW9uIHdoaWNoIHdvcmtzIGFzIGZvbGxvd3M6CisgKgorICogMSkgSXQgaXRl cmF0ZXMgb3ZlciBhIHNvcnRlZCB0dXBsZXN0b3JlLCB3aGVyZSBlYWNoIGVsZW1lbnQgaXMgYW4g ZW5jb2RlZAorICogICAgSXRlbVBvaW50ZXIKKyAqCisgKiAyKSBJdCByZXR1cm5zIHRoZSBjdXJy ZW50IEJsb2NrTnVtYmVyIGFuZCBjb2xsZWN0cyBhbGwgT2Zmc2V0TnVtYmVycworICogICAgZm9y IHRoYXQgYmxvY2sgaW4gcGVyX2J1ZmZlcl9kYXRhLgorICoKKyAqIDMpIE9uY2UgdGhlIGNvZGUg ZW5jb3VudGVycyBhIG5ldyBCbG9ja051bWJlciwgaXQgc3RvcHMgcmVhZGluZyBtb3JlCisgKiAg ICBvZmZzZXRzIGFuZCBzYXZlcyB0aGUgT2Zmc2V0TnVtYmVyIG9mIHRoZSBuZXcgYmxvY2sgZm9y IHRoZSBuZXh0IGNhbGwuCisgKgorICogNCkgVGhlIGxpc3Qgb2Ygb2Zmc2V0cyBmb3IgYSBibG9j ayBpcyBhbHdheXMgdGVybWluYXRlZCB3aXRoIEludmFsaWRPZmZzZXROdW1iZXIuCisgKgorICog VGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSByZXBlYXRlZGx5IGNhbGxlZCwgZWFjaCB0 aW1lIHJldHVybmluZworICogdGhlIG5leHQgYmxvY2sgYW5kIGl0cyBjb3JyZXNwb25kaW5nIHNl dCBvZiBvZmZzZXRzLgorICovCitzdGF0aWMgQmxvY2tOdW1iZXIKK2hlYXBhbV9pbmRleF92YWxp ZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQoCisJCQkJCQkJCSAgUmVhZFN0cmVhbSAqc3RyZWFt LAorCQkJCQkJCQkgIHZvaWQgKnZvaWRfY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkg IHZvaWQgKnZvaWRfcGVyX2J1ZmZlcl9kYXRhCisJCQkJCQkJCSAgKQoreworCWJvb2wgc2hvdWRf ZnJlZTsKKwlEYXR1bSBkYXR1bTsKKwlCbG9ja051bWJlciByZXN1bHQgPSBJbnZhbGlkQmxvY2tO dW1iZXI7CisJaW50IGkgPSAwOworCisJLyoKKwkgKiBSZXRyaWV2ZSB0aGUgc3BlY2lhbGl6ZWQg Y2FsbGJhY2sgc3RhdGUgYW5kIHRoZSBvdXRwdXQgYnVmZmVyLgorCSAqIGNhbGxiYWNrX3ByaXZh dGVfZGF0YSBrZWVwcyB0cmFjayBvZiB0aGUgcHJldmlvdXMgYmxvY2sgYW5kIG9mZnNldAorCSAq IGZyb20gYSBwcmlvciBpbnZvY2F0aW9uLCBpZiBhbnkuCisJICovCisJVmFsaWRhdGVJbmRleFNj YW5TdGF0ZSAqY2FsbGJhY2tfcHJpdmF0ZV9kYXRhID0gdm9pZF9jYWxsYmFja19wcml2YXRlX2Rh dGE7CisJT2Zmc2V0TnVtYmVyICpwZXJfYnVmZmVyX2RhdGEgPSB2b2lkX3Blcl9idWZmZXJfZGF0 YTsKKworCS8qCisJICogSWYgdGhlcmUgaXMgYSAibGVmdG92ZXIiIG9mZnNldCBudW1iZXIgZnJv bSB0aGUgcHJldmlvdXMgaW52b2NhdGlvbiwKKwkgKiBpdCBtZWFucyB3ZSBoYWQgc3dpdGNoZWQg dG8gYSBuZXcgYmxvY2sgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbGFzdCBjYWxsLgorCSAqIFdlIHBs YWNlIHRoYXQgbGVmdG92ZXIgb2Zmc2V0IG51bWJlciBpbnRvIHRoZSBidWZmZXIgZmlyc3QuCisJ ICovCisJaWYgKGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251bWJlciAh PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCXsKKwkJQXNzZXJ0KGNhbGxiYWNrX3ByaXZhdGVfZGF0 YS0+cHJldl9ibG9ja19udW1iZXIgIT0gSW52YWxpZEJsb2NrTnVtYmVyKTsKKwkJLyoKKwkJICog J3Jlc3VsdCcgaXMgdGhlIGJsb2NrIG51bWJlciB0byByZXR1cm4uIFdlIHNldCBpdCB0byB0aGUg YmxvY2sKKwkJICogZnJvbSB0aGUgcHJldmlvdXMgbGVmdG92ZXIgb2Zmc2V0LgorCQkgKi8KKwkJ cmVzdWx0ID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlcjsKKwkJLyog UGxhY2UgbGVmdG92ZXIgb2Zmc2V0IG51bWJlciBpbiB0aGUgb3V0cHV0IGJ1ZmZlci4gKi8KKwkJ cGVyX2J1ZmZlcl9kYXRhW2krK10gPSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29m ZnNldF9udW1iZXI7CisJCS8qCisJCSAqIENsZWFyIHRoZSBsZWZ0b3ZlciBvZmZzZXQgbnVtYmVy IHNvIGl0IHdvbid0IGJlIHJldXNlZCB1bmxlc3MKKwkJICogd2UgZW5jb3VudGVyIGFub3RoZXIg YmxvY2sgY2hhbmdlLgorCQkgKi8KKwkJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9v ZmZzZXRfbnVtYmVyID0gSW52YWxpZE9mZnNldE51bWJlcjsKKwl9CisKKwkvKgorCSAqIFJlYWQg ZnJvbSB0aGUgdHVwbGVzdG9yZSB1bnRpbCB3ZSBlaXRoZXIgcnVuIG91dCBvZiB0dXBsZXMgb3Ig d2UKKwkgKiBlbmNvdW50ZXIgYSBibG9jayBjaGFuZ2UuIEZvciBlYWNoIHR1cGxlOgorCSAqCisJ ICogICAxKSBEZWNvZGUgaXRzIGJsb2NrL29mZnNldCBmcm9tIHRoZSBEYXR1bS4KKwkgKiAgIDIp IElmIGl0J3MgdGhlIGZpcnN0IHRpbWUgaW4gdGhpcyBjYWxsIChwcmV2X2Jsb2NrX251bWJlciA9 PSBJbnZhbGlkQmxvY2tOdW1iZXIpLAorCSAqICAgICAgaW5pdGlhbGl6ZSBwcmV2X2Jsb2NrX251 bWJlci4KKwkgKiAgIDMpIElmIHRoZSBibG9jayBudW1iZXIgbWF0Y2hlcyB0aGUgY3VycmVudCBi bG9jaywgY29sbGVjdCB0aGUgb2Zmc2V0LgorCSAqICAgNCkgSWYgdGhlIGJsb2NrIG51bWJlciBk aWZmZXJzLCBzYXZlIHRoYXQgb2Zmc2V0IGFzIGxlZnRvdmVyIGFuZCBicmVhaworCSAqICAgICAg c28gdGhhdCB0aGUgbmV4dCBjYWxsIGNhbiBoYW5kbGUgdGhlIG5ldyBibG9jay4KKwkgKi8KKwl3 aGlsZSAodHVwbGVzdG9yZV9nZXRkYXR1bShjYWxsYmFja19wcml2YXRlX2RhdGEtPnN0b3JlLCB0 cnVlLCAmc2hvdWRfZnJlZSwgJmRhdHVtKSkKKwl7CisJCUJsb2NrTnVtYmVyIG5leHRfYmxvY2tf bnVtYmVyOworCQlJdGVtUG9pbnRlckRhdGEgbmV4dF9kYXRhOworCisJCS8qIERlY29kZSB0aGUg ZGF0dW0gaW50byBhbiBJdGVtUG9pbnRlciAoYmxvY2sgKyBvZmZzZXQpLiAqLworCQlpdGVtcHRy X2RlY29kZSgmbmV4dF9kYXRhLCBEYXR1bUdldEludDY0KGRhdHVtKSk7CisJCW5leHRfYmxvY2tf bnVtYmVyID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmbmV4dF9kYXRhKTsKKworCQkvKgor CQkgKiBJZiB3ZSBoYXZlbid0IHNldCBhIGJsb2NrIG51bWJlciB5ZXQgdGhpcyByb3VuZCwgaW5p dGlhbGl6ZSBpdAorCQkgKiB1c2luZyB0aGUgZmlyc3QgdHVwbGUgd2UgcmVhZC4KKwkJICovCisJ CWlmIChjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyID09IEludmFsaWRC bG9ja051bWJlcikKKwkJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIg PSBuZXh0X2Jsb2NrX251bWJlcjsKKworCQkvKgorCQkgKiBBbHdheXMgc2V0IHRoZSByZXN1bHQg dG8gYmUgdGhlICJjdXJyZW50IiBibG9jayBudW1iZXIKKwkJICogd2UgYXJlIGZpbGxpbmcgb2Zm c2V0cyBmb3IuCisJCSAqLworCQlyZXN1bHQgPSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZf YmxvY2tfbnVtYmVyOworCisJCS8qCisJCSAqIElmIHRoaXMgdHVwbGUgaXMgZnJvbSB0aGUgc2Ft ZSBibG9jaywganVzdCBzdG9yZSBpdHMgb2Zmc2V0CisJCSAqIGluIG91ciBwZXJfYnVmZmVyX2Rh dGEgYXJyYXkuCisJCSAqLworCQlpZiAobmV4dF9ibG9ja19udW1iZXIgPT0gY2FsbGJhY2tfcHJp dmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlcikKKwkJeworCQkJcGVyX2J1ZmZlcl9kYXRhW2kr K10gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmbmV4dF9kYXRhKTsKKworCQkJLyogRnJl ZSB0aGUgZGF0dW0gaWYgbmVlZGVkLiAqLworCQkJaWYgKHNob3VkX2ZyZWUpCisJCQkJcGZyZWUo RGF0dW1HZXRQb2ludGVyKGRhdHVtKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICog SWYgdGhlIGJsb2NrIGp1c3QgY2hhbmdlZCwgc3RvcmUgdGhlIG9mZnNldCBvZiB0aGUgbmV3IGJs b2NrCisJCQkgKiBhcyBsZWZ0b3ZlciBmb3IgdGhlIG5leHQgaW52b2NhdGlvbiBhbmQgYnJlYWsg b3V0LgorCQkJICovCisJCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVy ID0gbmV4dF9ibG9ja19udW1iZXI7CisJCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2Zm X29mZnNldF9udW1iZXIgPSAgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJm5leHRfZGF0YSk7 CisKKwkJCS8qIEZyZWUgdGhlIGRhdHVtIGlmIG5lZWRlZC4gKi8KKwkJCWlmIChzaG91ZF9mcmVl KQorCQkJCXBmcmVlKERhdHVtR2V0UG9pbnRlcihkYXR1bSkpOworCisJCQkvKiBCcmVhayB0byBs ZXQgdGhlIG5leHQgY2FsbCBoYW5kbGUgdGhlIG5ldyBibG9jay4gKi8KKwkJCWJyZWFrOworCQl9 CisJfQorCisJLyoKKwkgKiBUZXJtaW5hdGUgdGhlIGxpc3Qgb2Ygb2Zmc2V0cyBmb3IgdGhpcyBi bG9jayB3aXRoIGFuIEludmFsaWRPZmZzZXROdW1iZXIuCisJICovCisJcGVyX2J1ZmZlcl9kYXRh W2ldID0gSW52YWxpZE9mZnNldE51bWJlcjsKKwlyZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMg dm9pZAogaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCSAgIEluZGV4SW5mbyAqaW5k ZXhJbmZvLAogCQkJCQkJICAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkgICBWYWxpZGF0ZUlu ZGV4U3RhdGUgKnN0YXRlKQorCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJ CQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4U3RhdGUpCiB7Ci0JVGFibGVTY2FuRGVzYyBz Y2FuOwotCUhlYXBTY2FuRGVzYyBoc2NhbjsKLQlIZWFwVHVwbGUJaGVhcFR1cGxlOwogCURhdHVt CQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwogCWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhfS0VZU107 Ci0JRXhwclN0YXRlICAqcHJlZGljYXRlOwotCVR1cGxlVGFibGVTbG90ICpzbG90OwotCUVTdGF0 ZQkgICAqZXN0YXRlOwotCUV4cHJDb250ZXh0ICplY29udGV4dDsKLQlCbG9ja051bWJlciByb290 X2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwotCU9mZnNldE51bWJlciByb290X29mZnNldHNb TWF4SGVhcFR1cGxlc1BlclBhZ2VdOwotCWJvb2wJCWluX2luZGV4W01heEhlYXBUdXBsZXNQZXJQ YWdlXTsKLQlCbG9ja051bWJlciBwcmV2aW91c19ibGtubyA9IEludmFsaWRCbG9ja051bWJlcjsK LQotCS8qIHN0YXRlIHZhcmlhYmxlcyBmb3IgdGhlIG1lcmdlICovCi0JSXRlbVBvaW50ZXIgaW5k ZXhjdXJzb3IgPSBOVUxMOwotCUl0ZW1Qb2ludGVyRGF0YSBkZWNvZGVkOwotCWJvb2wJCXR1cGxl c29ydF9lbXB0eSA9IGZhbHNlOworCisJVHVwbGVUYWJsZVNsb3QgICpzbG90OworCUVTdGF0ZQkJ CSplc3RhdGU7CisJRXhwckNvbnRleHQJCSplY29udGV4dDsKKwlCdWZmZXJBY2Nlc3NTdHJhdGVn eSBic3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOworCisJaW50CQkJ CW51bV90b19jaGVjazsKKwlUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc19mb3JfY2hlY2s7CisJVmFs aWRhdGVJbmRleFNjYW5TdGF0ZSBjYWxsYmFja19wcml2YXRlX2RhdGE7CisKKwlCdWZmZXIgYnVm OworCU9mZnNldE51bWJlciogdHVwbGVzOworCVJlYWRTdHJlYW0gKnJlYWRfc3RyZWFtOworCisJ LyogVXNlIDEwJSBvZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3JlLiAqLworCWludAkJc3RvcmVfd29y a19tZW1fcGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7CisKKwkvKgorCSAqIEVuY29k ZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkg c29ydGluZworCSAqIGl0ZW0gcG9pbnRlcnMuICBUaGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZh c3RlciwgcHJpbWFyaWx5IGJlY2F1c2UgVElECisJICogaXMgYSBwYXNzLWJ5LXJlZmVyZW5jZSB0 eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdoZXJlYXMgaW50OCBpcworCSAqIHBhc3MtYnktdmFsdWUg b24gbW9zdCBwbGF0Zm9ybXMuCisJICovCisJdHVwbGVzX2Zvcl9jaGVjayA9ICB0dXBsZXN0b3Jl X2JlZ2luX2RhdHVtKElOVDhPSUQsIGZhbHNlLCBmYWxzZSwgc3RvcmVfd29ya19tZW1fcGFydCk7 CiAKIAkvKgogCSAqIHNhbml0eSBjaGVja3MKIAkgKi8KIAlBc3NlcnQoT2lkSXNWYWxpZChpbmRl eFJlbGF0aW9uLT5yZF9yZWwtPnJlbGFtKSk7CiAKLQkvKgotCSAqIE5lZWQgYW4gRVN0YXRlIGZv ciBldmFsdWF0aW9uIG9mIGluZGV4IGV4cHJlc3Npb25zIGFuZCBwYXJ0aWFsLWluZGV4Ci0JICog cHJlZGljYXRlcy4gIEFsc28gYSBzbG90IHRvIGhvbGQgdGhlIGN1cnJlbnQgdHVwbGUuCi0JICov CisJbnVtX3RvX2NoZWNrID0gaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3R1cGxlc29ydF9kaWZmZXJl bmNlKHN0YXRlLT50dXBsZXNvcnQsCisJCQkJCQkJCQkJCQkJCSBhdXhTdGF0ZS0+dHVwbGVzb3J0 LAorCQkJCQkJCQkJCQkJCQkgdHVwbGVzX2Zvcl9jaGVjayk7CisKKwkvKiBJdCBpcyBvdXIgcmVz cG9uc2liaWxpdHkgdG8gY2xvc2UgdHVwbGUgc29ydCBhcyBmYXN0IGFzIHdlIGNhbiAqLworCXR1 cGxlc29ydF9lbmQoc3RhdGUtPnR1cGxlc29ydCk7CisJdHVwbGVzb3J0X2VuZChhdXhTdGF0ZS0+ dHVwbGVzb3J0KTsKKworCXN0YXRlLT50dXBsZXNvcnQgPSBhdXhTdGF0ZS0+dHVwbGVzb3J0ID0g TlVMTDsKKwogCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKIAllY29udGV4dCA9IEdl dFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKIAlzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFi bGVTbG90KFJlbGF0aW9uR2V0RGVzY3IoaGVhcFJlbGF0aW9uKSwKLQkJCQkJCQkJCSZUVFNPcHNI ZWFwVHVwbGUpOworCQkJCQkJCQkJJlRUU09wc0J1ZmZlckhlYXBUdXBsZSk7CiAKIAkvKiBBcnJh bmdlIGZvciBlY29udGV4dCdzIHNjYW4gdHVwbGUgdG8gYmUgdGhlIHR1cGxlIHVuZGVyIHRlc3Qg Ki8KIAllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OwogCi0JLyogU2V0IHVwIGV4ZWN1 dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRlLCBpZiBhbnkuICovCi0JcHJlZGljYXRlID0gRXhlY1By ZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOworCWNhbGxiYWNrX3By aXZhdGVfZGF0YS5wcmV2X2Jsb2NrX251bWJlciA9IEludmFsaWRCbG9ja051bWJlcjsKKwljYWxs YmFja19wcml2YXRlX2RhdGEuc3RvcmUgPSB0dXBsZXNfZm9yX2NoZWNrOworCWNhbGxiYWNrX3By aXZhdGVfZGF0YS5wcmV2X29mZl9vZmZzZXRfbnVtYmVyID0gSW52YWxpZE9mZnNldE51bWJlcjsK IAotCS8qCi0JICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIFdlIG5l ZWQganVzdCB0aG9zZSB0dXBsZXMKLQkgKiBzYXRpc2Z5aW5nIHRoZSBwYXNzZWQtaW4gcmVmZXJl bmNlIHNuYXBzaG90LiAgV2UgbXVzdCBkaXNhYmxlIHN5bmNzY2FuCi0JICogaGVyZSwgYmVjYXVz ZSBpdCdzIGNyaXRpY2FsIHRoYXQgd2UgcmVhZCBmcm9tIGJsb2NrIHplcm8gZm9yd2FyZCB0bwot CSAqIG1hdGNoIHRoZSBzb3J0ZWQgVElEcy4KLQkgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu X3N0cmF0KGhlYXBSZWxhdGlvbiwJLyogcmVsYXRpb24gKi8KLQkJCQkJCQkJIHNuYXBzaG90LAkv KiBzbmFwc2hvdCAqLwotCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KLQkJCQkJCQkJ IE5VTEwsCS8qIHNjYW4ga2V5ICovCi0JCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0 cmF0ZWd5IE9LICovCi0JCQkJCQkJCSBmYWxzZSwJLyogc3luY3NjYW4gbm90IE9LICovCi0JCQkJ CQkJCSBmYWxzZSk7Ci0JaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOworCXJlYWRfc3RyZWFt ID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRFTkFOQ0UgfCBS RUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCisJCQkJCQkJCQkJCQkJCSBic3RyYXRlZ3ksCisJCQkJ CQkJCQkJCQkJCSBoZWFwUmVsYXRpb24sIE1BSU5fRk9SS05VTSwKKwkJCQkJCQkJCQkJCQkJIGhl YXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQsCisJCQkJCQkJCQkJCQkJ CSAmY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkJCQkJCQkgKE1heEhlYXBUdXBsZXNQ ZXJQYWdlICsgMSkgKiBzaXplb2YoT2Zmc2V0TnVtYmVyKSk7CiAKLQlwZ3N0YXRfcHJvZ3Jlc3Nf dXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5fQkxPQ0tTX1RPVEFMLAotCQkJCQkJCQkgaHNjYW4t PnJzX25ibG9ja3MpOworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JF QVRFSURYX1RVUExFU19UT1RBTCwgbnVtX3RvX2NoZWNrKTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBk YXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwgMCk7CiAKLQkvKgotCSAq IFNjYW4gYWxsIHR1cGxlcyBtYXRjaGluZyB0aGUgc25hcHNob3QuCi0JICovCi0Jd2hpbGUgKCho ZWFwVHVwbGUgPSBoZWFwX2dldG5leHQoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24pKSAhPSBO VUxMKQorCXdoaWxlICgoYnVmID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIocmVhZF9zdHJlYW0s ICh2b2lkKikgJnR1cGxlcykpICE9IEludmFsaWRCdWZmZXIpCiAJewotCQlJdGVtUG9pbnRlciBo ZWFwY3Vyc29yID0gJmhlYXBUdXBsZS0+dF9zZWxmOwotCQlJdGVtUG9pbnRlckRhdGEgcm9vdFR1 cGxlOwotCQlPZmZzZXROdW1iZXIgcm9vdF9vZmZudW07CisJCUhlYXBUdXBsZURhdGEJaGVhcF90 dXBsZV9kYXRhW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKKwkJaW50IGk7CisJCU9mZnNldE51bWJl ciBvZmY7CisJCUJsb2NrTnVtYmVyIGJsb2NrX251bWJlcjsKIAogCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCi0JCXN0YXRlLT5odHVwcyArPSAxOworCQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVS X0xPQ0tfU0hBUkUpOworCQlibG9ja19udW1iZXIgPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYp OwogCi0JCWlmICgocHJldmlvdXNfYmxrbm8gPT0gSW52YWxpZEJsb2NrTnVtYmVyKSB8fAotCQkJ KGhzY2FuLT5yc19jYmxvY2sgIT0gcHJldmlvdXNfYmxrbm8pKQorCQlpID0gMDsKKwkJd2hpbGUg KChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1iZXIpCiAJCXsKLQkJCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfRE9ORSwKLQkJCQkJ CQkJCQkgaHNjYW4tPnJzX2NibG9jayk7Ci0JCQlwcmV2aW91c19ibGtubyA9IGhzY2FuLT5yc19j YmxvY2s7CisJCQlJdGVtUG9pbnRlckRhdGEgdGlkOworCQkJYm9vbAkJYWxsX2RlYWQsIGZvdW5k OworCQkJSXRlbVBvaW50ZXJTZXQoJnRpZCwgYmxvY2tfbnVtYmVyLCBvZmYpOworCisJCQlmb3Vu ZCA9IGhlYXBfaG90X3NlYXJjaF9idWZmZXIoJnRpZCwgaGVhcFJlbGF0aW9uLCBidWYsIHNuYXBz aG90LAorCQkJCQkJCQkJCSAgICZoZWFwX3R1cGxlX2RhdGFbaV0sICZhbGxfZGVhZCwgdHJ1ZSk7 CisJCQlpZiAoIWZvdW5kKQorCQkJCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmaGVhcF90dXBsZV9k YXRhW2ldLnRfc2VsZik7CisJCQlpKys7CiAJCX0KKwkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9M T0NLX1VOTE9DSyk7CiAKLQkJLyoKLQkJICogQXMgY29tbWVudGVkIGluIHRhYmxlX2luZGV4X2J1 aWxkX3NjYW4sIHdlIHNob3VsZCBpbmRleCBoZWFwLW9ubHkKLQkJICogdHVwbGVzIHVuZGVyIHRo ZSBUSURzIG9mIHRoZWlyIHJvb3QgdHVwbGVzOyBzbyB3aGVuIHdlIGFkdmFuY2Ugb250bwotCQkg KiBhIG5ldyBoZWFwIHBhZ2UsIGJ1aWxkIGEgbWFwIG9mIHJvb3QgaXRlbSBvZmZzZXRzIG9uIHRo ZSBwYWdlLgotCQkgKgotCQkgKiBUaGlzIGNvbXBsaWNhdGVzIG1lcmdpbmcgYWdhaW5zdCB0aGUg dHVwbGVzb3J0IG91dHB1dDogd2Ugd2lsbAotCQkgKiB2aXNpdCB0aGUgbGl2ZSB0dXBsZXMgaW4g b3JkZXIgYnkgdGhlaXIgb2Zmc2V0cywgYnV0IHRoZSByb290Ci0JCSAqIG9mZnNldHMgdGhhdCB3 ZSBuZWVkIHRvIGNvbXBhcmUgYWdhaW5zdCB0aGUgaW5kZXggY29udGVudHMgbWlnaHQgYmUKLQkJ ICogb3JkZXJlZCBkaWZmZXJlbnRseS4gIFNvIHdlIG1pZ2h0IGhhdmUgdG8gImxvb2sgYmFjayIg d2l0aGluIHRoZQotCQkgKiB0dXBsZXNvcnQgb3V0cHV0LCBidXQgb25seSB3aXRoaW4gdGhlIGN1 cnJlbnQgcGFnZS4gIFdlIGhhbmRsZSB0aGF0Ci0JCSAqIGJ5IGtlZXBpbmcgYSBib29sIGFycmF5 IGluX2luZGV4W10gc2hvd2luZyBhbGwgdGhlCi0JCSAqIGFscmVhZHktcGFzc2VkLW92ZXIgdHVw bGVzb3J0IG91dHB1dCBUSURzIG9mIHRoZSBjdXJyZW50IHBhZ2UuIFdlCi0JCSAqIGNsZWFyIHRo YXQgYXJyYXkgaGVyZSwgd2hlbiBhZHZhbmNpbmcgb250byBhIG5ldyBoZWFwIHBhZ2UuCi0JCSAq LwotCQlpZiAoaHNjYW4tPnJzX2NibG9jayAhPSByb290X2Jsa25vKQorCQlpID0gMDsKKwkJd2hp bGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1iZXIpCiAJCXsKLQkJCVBh Z2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhzY2FuLT5yc19jYnVmKTsKLQotCQkJTG9ja0J1ZmZl cihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOwotCQkJaGVhcF9nZXRfcm9vdF90 dXBsZXMocGFnZSwgcm9vdF9vZmZzZXRzKTsKLQkJCUxvY2tCdWZmZXIoaHNjYW4tPnJzX2NidWYs IEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0KLQkJCW1lbXNldChpbl9pbmRleCwgMCwgc2l6ZW9mKGlu X2luZGV4KSk7Ci0KLQkJCXJvb3RfYmxrbm8gPSBoc2Nhbi0+cnNfY2Jsb2NrOwotCQl9Ci0KLQkJ LyogQ29udmVydCBhY3R1YWwgdHVwbGUgVElEIHRvIHJvb3QgVElEICovCi0JCXJvb3RUdXBsZSA9 ICpoZWFwY3Vyc29yOwotCQlyb290X29mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVy KGhlYXBjdXJzb3IpOwotCi0JCWlmIChIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkpCi0J CXsKLQkJCXJvb3Rfb2ZmbnVtID0gcm9vdF9vZmZzZXRzW3Jvb3Rfb2ZmbnVtIC0gMV07Ci0JCQlp ZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9vdF9vZmZudW0pKQotCQkJCWVyZXBvcnQoRVJST1Is Ci0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkJCSBlcnJtc2df aW50ZXJuYWwoImZhaWxlZCB0byBmaW5kIHBhcmVudCB0dXBsZSBmb3IgaGVhcC1vbmx5IHR1cGxl IGF0ICgldSwldSkgaW4gdGFibGUgXCIlc1wiIiwKLQkJCQkJCQkJCQkgSXRlbVBvaW50ZXJHZXRC bG9ja051bWJlcihoZWFwY3Vyc29yKSwKLQkJCQkJCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXIoaGVhcGN1cnNvciksCi0JCQkJCQkJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGhl YXBSZWxhdGlvbikpKSk7Ci0JCQlJdGVtUG9pbnRlclNldE9mZnNldE51bWJlcigmcm9vdFR1cGxl LCByb290X29mZm51bSk7Ci0JCX0KLQotCQkvKgotCQkgKiAibWVyZ2UiIGJ5IHNraXBwaW5nIHRo cm91Z2ggdGhlIGluZGV4IHR1cGxlcyB1bnRpbCB3ZSBmaW5kIG9yIHBhc3MKLQkJICogdGhlIGN1 cnJlbnQgcm9vdCB0dXBsZS4KLQkJICovCi0JCXdoaWxlICghdHVwbGVzb3J0X2VtcHR5ICYmCi0J CQkgICAoIWluZGV4Y3Vyc29yIHx8Ci0JCQkJSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29y LCAmcm9vdFR1cGxlKSA8IDApKQotCQl7Ci0JCQlEYXR1bQkJdHNfdmFsOwotCQkJYm9vbAkJdHNf aXNudWxsOwotCi0JCQlpZiAoaW5kZXhjdXJzb3IpCisJCQlpZiAoSXRlbVBvaW50ZXJJc1ZhbGlk KCZoZWFwX3R1cGxlX2RhdGFbaV0udF9zZWxmKSkKIAkJCXsKKwkJCQlJdGVtUG9pbnRlckRhdGEg cm9vdF90aWQ7CisJCQkJSXRlbVBvaW50ZXJTZXQoJnJvb3RfdGlkLCBibG9ja19udW1iZXIsIG9m Zik7CisKKwkJCQkvKiBSZXNldCB0aGUgcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGZvciB0aGUg bmV4dCBmZXRjaC4gKi8KKwkJCQlNZW1vcnlDb250ZXh0UmVzZXQoZWNvbnRleHQtPmVjeHRfcGVy X3R1cGxlX21lbW9yeSk7CisJCQkJRXhlY1N0b3JlQnVmZmVySGVhcFR1cGxlKCZoZWFwX3R1cGxl X2RhdGFbaV0sIHNsb3QsIGJ1Zik7CisKKwkJCQkvKiBDb21wdXRlIHRoZSBrZXkgdmFsdWVzIGFu ZCBudWxsIGZsYWdzIGZvciB0aGlzIHR1cGxlLiAqLworCQkJCUZvcm1JbmRleERhdHVtKGluZGV4 SW5mbywKKwkJCQkJCQkgICBzbG90LAorCQkJCQkJCSAgIGVzdGF0ZSwKKwkJCQkJCQkgICB2YWx1 ZXMsCisJCQkJCQkJICAgaXNudWxsKTsKKwogCQkJCS8qCi0JCQkJICogUmVtZW1iZXIgaW5kZXgg aXRlbXMgc2VlbiBlYXJsaWVyIG9uIHRoZSBjdXJyZW50IGhlYXAgcGFnZQorCQkJCSAqIEluc2Vy dCB0aGUgdHVwbGUgaW50byB0aGUgdGFyZ2V0IGluZGV4LgogCQkJCSAqLwotCQkJCWlmIChJdGVt UG9pbnRlckdldEJsb2NrTnVtYmVyKGluZGV4Y3Vyc29yKSA9PSByb290X2Jsa25vKQotCQkJCQlp bl9pbmRleFtJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihpbmRleGN1cnNvcikgLSAxXSA9IHRy dWU7CisJCQkJaW5kZXhfaW5zZXJ0KGluZGV4UmVsYXRpb24sCisJCQkJCQkJIHZhbHVlcywKKwkJ CQkJCQkgaXNudWxsLAorCQkJCQkJCSAmcm9vdF90aWQsIC8qIGluc2VydCByb290IHR1cGxlICov CisJCQkJCQkJIGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPwor CQkJCQkJCSBVTklRVUVfQ0hFQ0tfWUVTIDogVU5JUVVFX0NIRUNLX05PLAorCQkJCQkJCSBmYWxz ZSwKKwkJCQkJCQkgaW5kZXhJbmZvKTsKIAkJCX0KIAotCQkJdHVwbGVzb3J0X2VtcHR5ID0gIXR1 cGxlc29ydF9nZXRkYXR1bShzdGF0ZS0+dHVwbGVzb3J0LCB0cnVlLAotCQkJCQkJCQkJCQkJICBm YWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVsbCwKLQkJCQkJCQkJCQkJCSAgTlVMTCk7Ci0JCQlBc3Nl cnQodHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOwotCQkJaWYgKCF0dXBsZXNvcnRfZW1w dHkpCi0JCQl7Ci0JCQkJaXRlbXB0cl9kZWNvZGUoJmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNf dmFsKSk7Ci0JCQkJaW5kZXhjdXJzb3IgPSAmZGVjb2RlZDsKLQkJCX0KLQkJCWVsc2UKLQkJCXsK LQkJCQkvKiBCZSB0aWR5ICovCi0JCQkJaW5kZXhjdXJzb3IgPSBOVUxMOwotCQkJfQorCQkJc3Rh dGUtPmh0dXBzICs9IDE7CisJCQlwZ3N0YXRfcHJvZ3Jlc3NfaW5jcl9wYXJhbShQUk9HUkVTU19D UkVBVEVJRFhfVFVQTEVTX0RPTkUsIDEpOworCQkJaSsrOwogCQl9CiAKLQkJLyoKLQkJICogSWYg dGhlIHR1cGxlc29ydCBoYXMgb3ZlcnNob3QgKmFuZCogd2UgZGlkbid0IHNlZSBhIG1hdGNoIGVh cmxpZXIsCi0JCSAqIHRoZW4gdGhpcyB0dXBsZSBpcyBtaXNzaW5nIGZyb20gdGhlIGluZGV4LCBz byBpbnNlcnQgaXQuCi0JCSAqLwotCQlpZiAoKHR1cGxlc29ydF9lbXB0eSB8fAotCQkJIEl0ZW1Q b2ludGVyQ29tcGFyZShpbmRleGN1cnNvciwgJnJvb3RUdXBsZSkgPiAwKSAmJgotCQkJIWluX2lu ZGV4W3Jvb3Rfb2ZmbnVtIC0gMV0pCi0JCXsKLQkJCU1lbW9yeUNvbnRleHRSZXNldChlY29udGV4 dC0+ZWN4dF9wZXJfdHVwbGVfbWVtb3J5KTsKLQotCQkJLyogU2V0IHVwIGZvciBwcmVkaWNhdGUg b3IgZXhwcmVzc2lvbiBldmFsdWF0aW9uICovCi0JCQlFeGVjU3RvcmVIZWFwVHVwbGUoaGVhcFR1 cGxlLCBzbG90LCBmYWxzZSk7Ci0KLQkJCS8qCi0JCQkgKiBJbiBhIHBhcnRpYWwgaW5kZXgsIGRp c2NhcmQgdHVwbGVzIHRoYXQgZG9uJ3Qgc2F0aXNmeSB0aGUKLQkJCSAqIHByZWRpY2F0ZS4KLQkJ CSAqLwotCQkJaWYgKHByZWRpY2F0ZSAhPSBOVUxMKQotCQkJewotCQkJCWlmICghRXhlY1F1YWwo cHJlZGljYXRlLCBlY29udGV4dCkpCi0JCQkJCWNvbnRpbnVlOwotCQkJfQotCi0JCQkvKgotCQkJ ICogRm9yIHRoZSBjdXJyZW50IGhlYXAgdHVwbGUsIGV4dHJhY3QgYWxsIHRoZSBhdHRyaWJ1dGVz IHdlIHVzZQotCQkJICogaW4gdGhpcyBpbmRleCwgYW5kIG5vdGUgd2hpY2ggYXJlIG51bGwuICBU aGlzIGFsc28gcGVyZm9ybXMKLQkJCSAqIGV2YWx1YXRpb24gb2YgYW55IGV4cHJlc3Npb25zIG5l ZWRlZC4KLQkJCSAqLwotCQkJRm9ybUluZGV4RGF0dW0oaW5kZXhJbmZvLAotCQkJCQkJICAgc2xv dCwKLQkJCQkJCSAgIGVzdGF0ZSwKLQkJCQkJCSAgIHZhbHVlcywKLQkJCQkJCSAgIGlzbnVsbCk7 Ci0KLQkJCS8qCi0JCQkgKiBZb3UnZCB0aGluayB3ZSBzaG91bGQgZ28gYWhlYWQgYW5kIGJ1aWxk IHRoZSBpbmRleCB0dXBsZSBoZXJlLAotCQkJICogYnV0IHNvbWUgaW5kZXggQU1zIHdhbnQgdG8g ZG8gZnVydGhlciBwcm9jZXNzaW5nIG9uIHRoZSBkYXRhCi0JCQkgKiBmaXJzdC4gU28gcGFzcyB0 aGUgdmFsdWVzW10gYW5kIGlzbnVsbFtdIGFycmF5cywgaW5zdGVhZC4KLQkJCSAqLwotCi0JCQkv KgotCQkJICogSWYgdGhlIHR1cGxlIGlzIGFscmVhZHkgY29tbWl0dGVkIGRlYWQsIHlvdSBtaWdo dCB0aGluayB3ZQotCQkJICogY291bGQgc3VwcHJlc3MgdW5pcXVlbmVzcyBjaGVja2luZywgYnV0 IHRoaXMgaXMgbm8gbG9uZ2VyIHRydWUKLQkJCSAqIGluIHRoZSBwcmVzZW5jZSBvZiBIT1QsIGJl Y2F1c2UgdGhlIGluc2VydCBpcyBhY3R1YWxseSBhIHByb3h5Ci0JCQkgKiBmb3IgYSB1bmlxdWVu ZXNzIGNoZWNrIG9uIHRoZSB3aG9sZSBIT1QtY2hhaW4uICBUaGF0IGlzLCB0aGUKLQkJCSAqIHR1 cGxlIHdlIGhhdmUgaGVyZSBjb3VsZCBiZSBkZWFkIGJlY2F1c2UgaXQgd2FzIGFscmVhZHkKLQkJ CSAqIEhPVC11cGRhdGVkLCBhbmQgaWYgc28gdGhlIHVwZGF0aW5nIHRyYW5zYWN0aW9uIHdpbGwg bm90IGhhdmUKLQkJCSAqIHRob3VnaHQgaXQgc2hvdWxkIGluc2VydCBpbmRleCBlbnRyaWVzLiAg VGhlIGluZGV4IEFNIHdpbGwKLQkJCSAqIGNoZWNrIHRoZSB3aG9sZSBIT1QtY2hhaW4gYW5kIGNv cnJlY3RseSBkZXRlY3QgYSBjb25mbGljdCBpZgotCQkJICogdGhlcmUgaXMgb25lLgotCQkJICov Ci0KLQkJCWluZGV4X2luc2VydChpbmRleFJlbGF0aW9uLAotCQkJCQkJIHZhbHVlcywKLQkJCQkJ CSBpc251bGwsCi0JCQkJCQkgJnJvb3RUdXBsZSwKLQkJCQkJCSBoZWFwUmVsYXRpb24sCi0JCQkJ CQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPwotCQkJCQkJIFVOSVFVRV9DSEVDS19ZRVMgOiBVTklR VUVfQ0hFQ0tfTk8sCi0JCQkJCQkgZmFsc2UsCi0JCQkJCQkgaW5kZXhJbmZvKTsKLQotCQkJc3Rh dGUtPnR1cHNfaW5zZXJ0ZWQgKz0gMTsKLQkJfQorCQlSZWxlYXNlQnVmZmVyKGJ1Zik7CiAJfQog Ci0JdGFibGVfZW5kc2NhbihzY2FuKTsKLQogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo c2xvdCk7CiAKIAlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOwogCisJcmVhZF9zdHJlYW1fZW5k KHJlYWRfc3RyZWFtKTsKKwl0dXBsZXN0b3JlX2VuZCh0dXBsZXNfZm9yX2NoZWNrKTsKKwogCS8q IFRoZXNlIG1heSBoYXZlIGJlZW4gcG9pbnRpbmcgdG8gdGhlIG5vdy1nb25lIGVzdGF0ZSAqLwog CWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0ZSA9IE5JTDsKIAlpbmRleEluZm8tPmlpX1By ZWRpY2F0ZVN0YXRlID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBlOWUyMmVjMGU4NC4uNmMw OWM2YTJiNjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTcxNSwxMSArNzE1LDE2IEBAIFVwZGF0ZUlu ZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogICoJCQlhbHJlYWR5IGV4aXN0cy4KICAqCQlJTkRF WF9DUkVBVEVfUEFSVElUSU9ORUQ6CiAgKgkJCWNyZWF0ZSBhIHBhcnRpdGlvbmVkIGluZGV4ICh0 YWJsZSBtdXN0IGJlIHBhcnRpdGlvbmVkKQorICoJCUlOREVYX0NSRUFURV9BVVhJTElBUlk6Cisg KgkJCW1hcmsgaW5kZXggYXMgYXV4aWxpYXJ5IGluZGV4CiAgKiBjb25zdHJfZmxhZ3M6IGZsYWdz IHBhc3NlZCB0byBpbmRleF9jb25zdHJhaW50X2NyZWF0ZQogICoJCShvbmx5IGlmIElOREVYX0NS RUFURV9BRERfQ09OU1RSQUlOVCBpcyBzZXQpCiAgKiBhbGxvd19zeXN0ZW1fdGFibGVfbW9kczog YWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZwogICogaXNfaW50ZXJuYWw6IGlmIHRy dWUsIHBvc3QgY3JlYXRpb24gaG9vayBmb3IgbmV3IGluZGV4CiAgKiBjb25zdHJhaW50SWQ6IGlm IG5vdCBOVUxMLCByZWNlaXZlcyBPSUQgb2YgY3JlYXRlZCBjb25zdHJhaW50CisgKiByZWxwZXJz aXN0ZW5jZTogcGVyc2lzdGVuY2UgbGV2ZWwgdG8gdXNlIGZvciBpbmRleC4gSW4gbW9zdCBvZiB0 aGUKKyAqCQljYXNlcyBpdCBpcyBzaG91bGQgYmUgZXF1YWwgdG8gcGVyc2lzdGVuY2UgbGV2ZWwg b2YgdGFibGUsCisgKgkJYXV4aWxpYXJ5IGluZGV4ZXMgYXJlIG9ubHkgZXhjZXB0aW9uIGhlcmUu CiAgKgogICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBjcmVhdGVkIGluZGV4LgogICovCkBAIC03 NDQsNyArNzQ5LDggQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCSBi aXRzMTYgY29uc3RyX2ZsYWdzLAogCQkJIGJvb2wgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHMsCiAJ CQkgYm9vbCBpc19pbnRlcm5hbCwKLQkJCSBPaWQgKmNvbnN0cmFpbnRJZCkKKwkJCSBPaWQgKmNv bnN0cmFpbnRJZCwKKwkJCSBjaGFyIHJlbHBlcnNpc3RlbmNlKQogewogCU9pZAkJCWhlYXBSZWxh dGlvbklkID0gUmVsYXRpb25HZXRSZWxpZChoZWFwUmVsYXRpb24pOwogCVJlbGF0aW9uCXBnX2Ns YXNzOwpAQCAtNzU1LDExICs3NjEsMTEgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKIAlib29sCQlpc19leGNsdXNpb247CiAJT2lkCQkJbmFtZXNwYWNlSWQ7CiAJaW50CQkJ aTsKLQljaGFyCQlyZWxwZXJzaXN0ZW5jZTsKIAlib29sCQlpc3ByaW1hcnkgPSAoZmxhZ3MgJiBJ TkRFWF9DUkVBVEVfSVNfUFJJTUFSWSkgIT0gMDsKIAlib29sCQlpbnZhbGlkID0gKGZsYWdzICYg SU5ERVhfQ1JFQVRFX0lOVkFMSUQpICE9IDA7CiAJYm9vbAkJY29uY3VycmVudCA9IChmbGFncyAm IElOREVYX0NSRUFURV9DT05DVVJSRU5UKSAhPSAwOwogCWJvb2wJCXBhcnRpdGlvbmVkID0gKGZs YWdzICYgSU5ERVhfQ1JFQVRFX1BBUlRJVElPTkVEKSAhPSAwOworCWJvb2wJCWF1eGlsaWFyeSA9 IChmbGFncyAmIElOREVYX0NSRUFURV9BVVhJTElBUlkpICE9IDA7CiAJY2hhcgkJcmVsa2luZDsK IAlUcmFuc2FjdGlvbklkIHJlbGZyb3plbnhpZDsKIAlNdWx0aVhhY3RJZCByZWxtaW5teGlkOwpA QCAtNzg1LDcgKzc5MSw2IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJ bmFtZXNwYWNlSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShoZWFwUmVsYXRpb24pOwogCXNoYXJl ZF9yZWxhdGlvbiA9IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3NoYXJlZDsKIAltYXBwZWRf cmVsYXRpb24gPSBSZWxhdGlvbklzTWFwcGVkKGhlYXBSZWxhdGlvbik7Ci0JcmVscGVyc2lzdGVu Y2UgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVscGVyc2lzdGVuY2U7CiAKIAkvKgogCSAqIGNo ZWNrIHBhcmFtZXRlcnMKQEAgLTc5Myw2ICs3OTgsMTEgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAlpZiAoaW5kZXhJbmZvLT5paV9OdW1JbmRleEF0dHJzIDwgMSkKIAkJ ZWxvZyhFUlJPUiwgIm11c3QgaW5kZXggYXQgbGVhc3Qgb25lIGNvbHVtbiIpOwogCisJaWYgKGlu ZGV4SW5mby0+aWlfQW0gPT0gU1RJUl9BTV9PSUQgJiYgIWF1eGlsaWFyeSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ IGVycm1zZygidXNlci1kZWZpbmVkIGluZGV4ZXMgd2l0aCBTVElSIGFjY2VzcyBtZXRob2QgYXJl IG5vdCBzdXBwb3J0ZWQiKSkpOworCiAJaWYgKCFhbGxvd19zeXN0ZW1fdGFibGVfbW9kcyAmJgog CQlJc1N5c3RlbVJlbGF0aW9uKGhlYXBSZWxhdGlvbikgJiYKIAkJSXNOb3JtYWxQcm9jZXNzaW5n TW9kZSgpKQpAQCAtMTM5OCw3ICsxNDA4LDggQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9j b3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJZmFsc2Us CS8qIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyAqLwogCQkJCQkJCXRydWUsCiAJCQkJCQkJaW5kZXhS ZWxhdGlvbi0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCi0JCQkJCQkJb2xkSW5mby0+aWlfV2l0 aG91dE92ZXJsYXBzKTsKKwkJCQkJCQlvbGRJbmZvLT5paV9XaXRob3V0T3ZlcmxhcHMsCisJCQkJ CQkJZmFsc2UpOwogCiAJLyoKIAkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBh bmQgdGhlIGNvbHVtbiBudW1iZXJzIGZvciB0aGUgbmV3CkBAIC0xNDYzLDcgKzE0NzQsOCBAQCBp bmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQg b2xkSW5kZXhJZCwKIAkJCQkJCQkgIDAsCiAJCQkJCQkJICB0cnVlLCAvKiBhbGxvdyB0YWJsZSB0 byBiZSBhIHN5c3RlbSBjYXRhbG9nPyAqLwogCQkJCQkJCSAgZmFsc2UsCS8qIGlzX2ludGVybmFs PyAqLwotCQkJCQkJCSAgTlVMTCk7CisJCQkJCQkJICBOVUxMLAorCQkJCQkJCSAgaGVhcFJlbGF0 aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAogCS8qIENsb3NlIHRoZSByZWxhdGlvbnMg dXNlZCBhbmQgY2xlYW4gdXAgKi8KIAlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2sp OwpAQCAtMTQ3Myw2ICsxNDg1LDE1NSBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHko UmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAlyZXR1cm4gbmV3SW5kZXhJ ZDsKIH0KIAorLyoKKyAqIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4CisgKgorICogQ3Jl YXRlIGNvbmN1cnJlbnRseSBhbiBhdXhpbGlhcnkgaW5kZXggYmFzZWQgb24gdGhlIGRlZmluaXRp b24gb2YgdGhlIG9uZQorICogcHJvdmlkZWQgYnkgY2FsbGVyLiAgVGhlIGluZGV4IGlzIGluc2Vy dGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJlCisgKiBidWlsdCBsYXRlciBvbi4gVGhp cyBpcyBjYWxsZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRleCBwcm9jZXNzaW5nLgorICoKKyAq ICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgdGFibGVzcGFjZSB0byB1c2UgZm9yIHRoaXMgaW5kZXgu CisgKi8KK09pZAoraW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgoUmVsYXRpb24gaGVhcFJl bGF0aW9uLCBPaWQgbWFpbkluZGV4SWQsCisJCQkJCQkJICAgT2lkIHRhYmxlc3BhY2VPaWQsIGNv bnN0IGNoYXIgKm5ld05hbWUpCit7CisJUmVsYXRpb24JaW5kZXhSZWxhdGlvbjsKKwlJbmRleElu Zm8gICpvbGRJbmZvLAorCQkJKm5ld0luZm87CisJT2lkCQkJbmV3SW5kZXhJZCA9IEludmFsaWRP aWQ7CisJSGVhcFR1cGxlCWluZGV4VHVwbGU7CisKKwlMaXN0CSAgICppbmRleENvbE5hbWVzID0g TklMOworCUxpc3QJICAgKmluZGV4RXhwcnMgPSBOSUw7CisJTGlzdAkgICAqaW5kZXhQcmVkcyA9 IE5JTDsKKworCU9pZCAqYXV4T3BjbGFzc0lkczsKKwlpbnQxNiAqYXV4Q29sb3B0aW9uczsKKwor CWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKG1haW5JbmRleElkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKworCS8qIFRoZSBuZXcgaW5kZXggbmVlZHMgc29tZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBv bGQgaW5kZXggKi8KKwlvbGRJbmZvID0gQnVpbGRJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CisK KwkvKgorCSAqIEJ1aWxkIG9mIGFuIGF1eGlsaWFyeSBpbmRleCB3aXRoIGV4Y2x1c2lvbiBjb25z dHJhaW50cyBpcyBub3QKKwkgKiBzdXBwb3J0ZWQuCisJICovCisJaWYgKG9sZEluZm8tPmlpX0V4 Y2x1c2lvbk9wcyAhPSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCWVycm1zZygiYXV4aWxpYXJ5IGluZGV4 IGNyZWF0aW9uIGZvciBleGNsdXNpb24gY29uc3RyYWludHMgaXMgbm90IHN1cHBvcnRlZCIpKSk7 CisKKwkvKiBHZXQgdGhlIGFycmF5IG9mIGNsYXNzIGFuZCBjb2x1bW4gb3B0aW9ucyBJRHMgZnJv bSBpbmRleCBpbmZvICovCisJaW5kZXhUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShJTkRFWFJFTElE LCBPYmplY3RJZEdldERhdHVtKG1haW5JbmRleElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KGluZGV4VHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5k ZXggJXUiLCBtYWluSW5kZXhJZCk7CisKKworCS8qCisJICogRmV0Y2ggdGhlIGxpc3Qgb2YgZXhw cmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgZGlyZWN0bHkgZnJvbSB0aGUKKwkgKiBjYXRhbG9ncy4g IFRoaXMgY2Fubm90IHJlbHkgb24gdGhlIGluZm9ybWF0aW9uIGZyb20gSW5kZXhJbmZvIG9mIHRo ZQorCSAqIG9sZCBpbmRleCBhcyB0aGVzZSBoYXZlIGJlZW4gZmxhdHRlbmVkIGZvciB0aGUgcGxh bm5lci4KKwkgKi8KKwlpZiAob2xkSW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTklMKQorCXsKKwkJ RGF0dW0JCWV4cHJEYXR1bTsKKwkJY2hhcgkgICAqZXhwclN0cmluZzsKKworCQlleHByRGF0dW0g PSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVYUkVMSUQsIGluZGV4VHVwbGUsCisJCQkJCQkJ CQkJICAgQW51bV9wZ19pbmRleF9pbmRleHBycyk7CisJCWV4cHJTdHJpbmcgPSBUZXh0RGF0dW1H ZXRDU3RyaW5nKGV4cHJEYXR1bSk7CisJCWluZGV4RXhwcnMgPSAoTGlzdCAqKSBzdHJpbmdUb05v ZGUoZXhwclN0cmluZyk7CisJCXBmcmVlKGV4cHJTdHJpbmcpOworCX0KKwlpZiAob2xkSW5mby0+ aWlfUHJlZGljYXRlICE9IE5JTCkKKwl7CisJCURhdHVtCQlwcmVkRGF0dW07CisJCWNoYXIJICAg KnByZWRTdHJpbmc7CisKKwkJcHJlZERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChJTkRF WFJFTElELCBpbmRleFR1cGxlLAorCQkJCQkJCQkJCSAgIEFudW1fcGdfaW5kZXhfaW5kcHJlZCk7 CisJCXByZWRTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHByZWREYXR1bSk7CisJCWluZGV4 UHJlZHMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUocHJlZFN0cmluZyk7CisKKwkJLyogQWxzbyBj b252ZXJ0IHRvIGltcGxpY2l0LUFORCBmb3JtYXQgKi8KKwkJaW5kZXhQcmVkcyA9IG1ha2VfYW5k c19pbXBsaWNpdCgoRXhwciAqKSBpbmRleFByZWRzKTsKKwkJcGZyZWUocHJlZFN0cmluZyk7CisJ fQorCisJLyoKKwkgKiBCdWlsZCB0aGUgaW5kZXggaW5mb3JtYXRpb24gZm9yIHRoZSBuZXcgaW5k ZXguICBOb3RlIHRoYXQgcmVidWlsZCBvZgorCSAqIGluZGV4ZXMgd2l0aCBleGNsdXNpb24gY29u c3RyYWludHMgaXMgbm90IHN1cHBvcnRlZCwgaGVuY2UgdGhlcmUgaXMgbm8KKwkgKiBuZWVkIHRv IGZpbGwgYWxsIHRoZSBpaV9FeGNsdXNpb24qIGZpZWxkcy4KKwkgKi8KKwluZXdJbmZvID0gbWFr ZUluZGV4SW5mbyhvbGRJbmZvLT5paV9OdW1JbmRleEF0dHJzLAorCQkJCQkJCW9sZEluZm8tPmlp X051bUluZGV4S2V5QXR0cnMsCisJCQkJCQkJU1RJUl9BTV9PSUQsIC8qIHNwZWNpYWwgQU0gZm9y IGF1eCBpbmRleGVzICovCisJCQkJCQkJaW5kZXhFeHBycywKKwkJCQkJCQlpbmRleFByZWRzLAor CQkJCQkJCWZhbHNlLAkvKiBhdXggaW5kZXggYXJlIG5vdCB1bmlxdWUgKi8KKwkJCQkJCQlvbGRJ bmZvLT5paV9OdWxsc05vdERpc3RpbmN0LAorCQkJCQkJCWZhbHNlLAkvKiBub3QgcmVhZHkgZm9y IGluc2VydHMgKi8KKwkJCQkJCQl0cnVlLAorCQkJCQkJCWZhbHNlLAkvKiBhdXggYXJlIG5vdCBz dW1tYXJpemluZyAqLworCQkJCQkJCWZhbHNlLAkvKiBhdXggYXJlIG5vdCB3aXRob3V0IG92ZXJs YXBzICovCisJCQkJCQkJdHJ1ZQkvKiBhdXhpbGlhcnkgKi8pOworCisJLyoKKwkgKiBFeHRyYWN0 IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZvciB0aGUg bmV3CisJICogaW5kZXggaW5mb3JtYXRpb24uICBBbGwgdGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJl IHVzZWQgZm9yIHRoZSBpbmRleAorCSAqIGNyZWF0aW9uLgorCSAqLworCWZvciAoaW50IGkgPSAw OyBpIDwgb2xkSW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQorCXsKKwkJVHVwbGVEZXNjCWlu ZGV4VHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoaW5kZXhSZWxhdGlvbik7CisJCUZvcm1fcGdf YXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIoaW5kZXhUdXBEZXNjLCBpKTsKKworCQlpbmRl eENvbE5hbWVzID0gbGFwcGVuZChpbmRleENvbE5hbWVzLCBOYW1lU3RyKGF0dC0+YXR0bmFtZSkp OworCQluZXdJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldID0gb2xkSW5mby0+aWlfSW5kZXhB dHRyTnVtYmVyc1tpXTsKKwl9CisKKwlhdXhPcGNsYXNzSWRzID0gcGFsbG9jMChzaXplb2YoT2lk KSAqIG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOworCWF1eENvbG9wdGlvbnMgPSBwYWxsb2Mw KHNpemVvZihpbnQxNikgKiBuZXdJbmZvLT5paV9OdW1JbmRleEF0dHJzKTsKKworCS8qIEZpbGwg d2l0aCAiYW55IG9wcyIgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG5ld0luZm8tPmlpX051bUlu ZGV4QXR0cnM7IGkrKykKKwl7CisJCWF1eE9wY2xhc3NJZHNbaV0gPSBBTllfU1RJUl9PUFNfT0lE OworCQlhdXhDb2xvcHRpb25zW2ldID0gMDsKKwl9CisKKwluZXdJbmRleElkID0gaW5kZXhfY3Jl YXRlKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkgIG5ld05hbWUsCisJCQkJCQkJICBJbnZhbGlkT2lk LCAgICAvKiBpbmRleFJlbGF0aW9uSWQgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIHBh cmVudEluZGV4UmVsaWQgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIHBhcmVudENvbnN0 cmFpbnRJZCAqLworCQkJCQkJCSAgSW52YWxpZFJlbEZpbGVOdW1iZXIsIC8qIHJlbEZpbGVOdW1i ZXIgKi8KKwkJCQkJCQkgIG5ld0luZm8sCisJCQkJCQkJICBpbmRleENvbE5hbWVzLAorCQkJCQkJ CSAgU1RJUl9BTV9PSUQsCisJCQkJCQkJICB0YWJsZXNwYWNlT2lkLAorCQkJCQkJCSAgaW5kZXhS ZWxhdGlvbi0+cmRfaW5kY29sbGF0aW9uLAorCQkJCQkJCSAgYXV4T3BjbGFzc0lkcywKKwkJCQkJ CQkgIE5VTEwsCisJCQkJCQkJICBhdXhDb2xvcHRpb25zLAorCQkJCQkJCSAgTlVMTCwKKwkJCQkJ CQkgIChEYXR1bSkgMCwKKwkJCQkJCQkgIElOREVYX0NSRUFURV9TS0lQX0JVSUxEIHwgSU5ERVhf Q1JFQVRFX0NPTkNVUlJFTlQgfCBJTkRFWF9DUkVBVEVfQVVYSUxJQVJZLAorCQkJCQkJCSAgMCwK KwkJCQkJCQkgIHRydWUsIC8qIGFsbG93IHRhYmxlIHRvIGJlIGEgc3lzdGVtIGNhdGFsb2c/ICov CisJCQkJCQkJICBmYWxzZSwgICAgLyogaXNfaW50ZXJuYWw/ICovCisJCQkJCQkJICBOVUxMLAor CQkJCQkJCSAgUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQpOyAvKiBhdXggaW5kZXhlcyB1bmxvZ2dl ZCAqLworCisJLyogQ2xvc2UgdGhlIHJlbGF0aW9ucyB1c2VkIGFuZCBjbGVhbiB1cCAqLworCWlu ZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CisJUmVsZWFzZVN5c0NhY2hlKGluZGV4 VHVwbGUpOworCisJcmV0dXJuIG5ld0luZGV4SWQ7Cit9CisKIC8qCiAgKiBpbmRleF9jb25jdXJy ZW50bHlfYnVpbGQKICAqCkBAIC0yNDY5LDcgKzI2MzAsOCBAQCBCdWlsZEluZGV4SW5mbyhSZWxh dGlvbiBpbmRleCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzcmVhZHksCiAJCQkJCSAgIGZh bHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCi0JCQkJCSAgIGlu ZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUpOwor CQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3QtPmluZGlz dW5pcXVlLAorCQkJCQkgICBpbmRleC0+cmRfcmVsLT5yZWxhbSA9PSBTVElSX0FNX09JRCAvKiBh dXhpbGlhcnkgaWZmIFNUSVIgKi8pOwogCiAJLyogZmlsbCBpbiBhdHRyaWJ1dGUgbnVtYmVycyAq LwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCkBAIC0yNTI5LDcgKzI2OTEsOCBAQCBC dWlsZER1bW15SW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCQkJCQkgICBpbmRleFN0cnVjdC0+ aW5kaXNyZWFkeSwKIAkJCQkJICAgZmFsc2UsCiAJCQkJCSAgIGluZGV4LT5yZF9pbmRhbS0+YW1z dW1tYXJpemluZywKLQkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGluZGV4 U3RydWN0LT5pbmRpc3VuaXF1ZSk7CisJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lv biAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUsCisJCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJl bGFtID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLyk7CiAKIAkvKiBmaWxs IGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsgaSA8IG51bUF0dHM7IGkrKykK QEAgLTMzMDYsMTIgKzM0NjksMjEgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAgKgogICogV2UgZG8gYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkIGJ5IGZpcnN0 IGluc2VydGluZyB0aGUgY2F0YWxvZyBlbnRyeSBmb3IgdGhlCiAgKiBpbmRleCB2aWEgaW5kZXhf Y3JlYXRlKCksIG1hcmtpbmcgaXQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLgor ICogVGhlbiB3ZSBjcmVhdGUgc3BlY2lhbCBhdXhpbGlhcnkgaW5kZXggdGhlIHNhbWUgd2F5LiBJ dCBiYXNlZCBvbiBTVElSIEFNLgogICogVGhlbiB3ZSBjb21taXQgb3VyIHRyYW5zYWN0aW9uIGFu ZCBzdGFydCBhIG5ldyBvbmUsIHRoZW4gd2Ugd2FpdCBmb3IgYWxsCiAgKiB0cmFuc2FjdGlvbnMg dGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZSB0byB0ZXJtaW5hdGUuICBO b3cKLSAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5LXN0YXJ0ZWQgdHJhbnNhY3Rpb25z IHdpbGwgc2VlIHRoZSBpbmRleCBhbmQKKyAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5 LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIGluZGV4ZXMgYW5kCiAgKiBob25vciBpdHMg Y29uc3RyYWludHMgb24gSE9UIHVwZGF0ZXM7IHNvIHdoaWxlIGV4aXN0aW5nIEhPVC1jaGFpbnMg bWlnaHQKICAqIGJlIGJyb2tlbiB3aXRoIHJlc3BlY3QgdG8gdGhlIGluZGV4LCBubyBjdXJyZW50 bHkgbGl2ZSB0dXBsZSB3aWxsIGhhdmUgYW4KLSAqIGluY29tcGF0aWJsZSBIT1QgdXBkYXRlIGRv bmUgdG8gaXQuICBXZSBub3cgYnVpbGQgdGhlIGluZGV4IG5vcm1hbGx5IHZpYQorICogaW5jb21w YXRpYmxlIEhPVCB1cGRhdGUgZG9uZSB0byBpdC4KKyAqCisgKiBBZnRlciB3ZSBidWlsZCBhdXhp bGlhcnkgaW5kZXguIEl0IGlzIGZhc3Qgb3BlcmF0aW9uIHdpdGhvdXQgYW55IGFjdHVhbAorICog dGFibGUgc2Nhbi4gQXMgcmVzdWx0LCB3ZSBoYXZlIGVtcHR5IFNUSVIgaW5kZXguIFdlIGNvbW1p dCB0cmFuc2FjdGlvbiBhbmQKKyAqIGFnYWluIHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbnMgdGhh dCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZQorICogdG8gdGVybWluYXRlLiBB dCB0aGF0IG1vbWVudCBhbGwgbmV3IHR1cGxlcyBhcmUgZ29pbmcgdG8gYmUgaW5zZXJ0ZWQgaW50 bworICogYXV4aWxpYXJ5IGluZGV4LgorICoKKyAqIFdlIG5vdyBidWlsZCB0aGUgaW5kZXggbm9y bWFsbHkgdmlhCiAgKiBpbmRleF9idWlsZCgpLCB3aGlsZSBob2xkaW5nIGEgd2VhayBsb2NrIHRo YXQgYWxsb3dzIGNvbmN1cnJlbnQKICAqIGluc2VydC91cGRhdGUvZGVsZXRlLiAgQWxzbywgd2Ug aW5kZXggb25seSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQKICAqIGFzIG9mIHRoZSBzdGFydCBvZiB0 aGUgc2NhbiAoc2VlIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4pLCB3aGVyZWFzIGEgbm9ybWFsCkBA IC0zMzIxLDE4ICszNDkzLDIxIEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogICogYm9ndXMgdW5pcXVlLWluZGV4IGZhaWx1cmVzIGR1ZSB0byBjb25jdXJyZW50 IFVQREFURXMgKHdlIG1pZ2h0IHNlZQogICogZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzYW1l IHJvdyBhcyBiZWluZyB2YWxpZCB3aGVuIHdlIHBhc3Mgb3ZlciB0aGVtLAogICogaWYgd2UgdXNl ZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRl eCB0aGF0Ci0gKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxl IHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KKyAqIGRvZXMgbm90IGNvbnRhaW4gYW55IHR1cGxl cyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQgdGhlIGluZGV4CisgKiAoYnV0IHRo ZXNlIHR1cGxlcyBjb250YWluZWQgaW4gYXV4aWxpYXJ5IGluZGV4KS4KICAqCiAgKiBGdXJ0aGVy bW9yZSwgd2Ugc2V0IFNPX1JFU0VUX1NOQVBTSE9UIGZvciB0aGUgc2Nhbiwgd2hpY2ggY2F1c2Vz IG5ldwogICogc25hcHNob3QgdG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhl IHJlYXNvbiAgZm9yIHRoYXQgaXMgdG8KICAqIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZv cndhcmQuCiAgKgogICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQg c3RpbGwgbm90ICJpbmRpc3ZhbGlkIikgYW5kCi0gKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2Fj dGlvbiBhbmQgc3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAorICogY29tbWl0 IHRoZSB0aGlyZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSBmb3VydGguICBBZ2FpbiB3ZSB3YWl0 IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2RpZnlpbmcg dGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwogICogd2Uga25vdyB0aGF0IGFueSBzdWJzZXF1 ZW50bHktc3RhcnRlZCB0cmFuc2FjdGlvbnMgd2lsbCBzZWUgdGhlIGluZGV4IGFuZAotICogaW5z ZXJ0IHRoZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gIFdlIHRoZW4gdGFrZSBhIG5ldyByZWZlcmVu Y2Ugc25hcHNob3QKLSAqIHdoaWNoIGlzIHBhc3NlZCB0byB2YWxpZGF0ZV9pbmRleCgpLiAgQW55 IHR1cGxlcyB0aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKKyAqIGluc2VydCB0aGVpciBuZXcgdHVw bGVzIGludG8gaXQuIEF0IHRoZSBzYW1lIG1vbWVudCB3ZSBjbGVhciAiaW5kaXNyZWFkeSIgZm9y CisgKiBhdXhpbGlhcnkgaW5kZXgsIHNpbmNlIGl0IGlzIG5vIG1vcmUgcmVxdWlyZWQgdG8gYmUg dXBkYXRlZC4KKyAqCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNlIHNuYXBzaG90LCBh bnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwogICogdG8gdGhpcyBzbmFwLCBidXQg YXJlIG5vdCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LgogICogKEFu eSB0dXBsZXMgY29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRlZCBp bnRvIHRoZQogICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBBbnkg dHVwbGVzIGNvbW1pdHRlZCBkZWFkIGJlZm9yZQpAQCAtMzM0MCwxMiArMzUxNSwxNCBAQCBJbmRl eENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIHRoYXQgbWlnaHQgY2Fy ZSBhYm91dCB0aGVtIGJlZm9yZSB3ZSBtYXJrIHRoZSBpbmRleCB2YWxpZC4pCiAgKgogICogdmFs aWRhdGVfaW5kZXgoKSB3b3JrcyBieSBmaXJzdCBnYXRoZXJpbmcgYWxsIHRoZSBUSURzIGN1cnJl bnRseSBpbiB0aGUKLSAqIGluZGV4LCB1c2luZyBhIGJ1bGtkZWxldGUgY2FsbGJhY2sgdGhhdCBq dXN0IHN0b3JlcyB0aGUgVElEcyBhbmQgZG9lc24ndAorICogaW5kZXhlcywgdXNpbmcgYSBidWxr ZGVsZXRlIGNhbGxiYWNrIHRoYXQganVzdCBzdG9yZXMgdGhlIFRJRHMgYW5kIGRvZXNuJ3QKICAq IGV2ZXIgc2F5ICJkZWxldGUgaXQiLiAgKFRoaXMgc2hvdWxkIGJlIGZhc3RlciB0aGFuIGEgcGxh aW4gaW5kZXhzY2FuOwogICogYWxzbywgbm90IGFsbCBpbmRleCBBTXMgc3VwcG9ydCBmdWxsLWlu ZGV4IGluZGV4c2Nhbi4pICBUaGVuIHdlIHNvcnQgdGhlCi0gKiBUSURzLCBhbmQgZmluYWxseSBz Y2FuIHRoZSB0YWJsZSBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0IHRoZSBUSUQgbGlzdAot ICogdG8gc2VlIHdoaWNoIHR1cGxlcyBhcmUgbWlzc2luZyBmcm9tIHRoZSBpbmRleC4gIFRodXMg d2Ugd2lsbCBlbnN1cmUgdGhhdAotICogYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhl IHJlZmVyZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LgorICogVElEcyBvZiBib3RoIGF1 eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2Fp bnN0CisgKiB0aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0dXBsZXMgZnJvbSBhdXhpbGlhcnkg aW5kZXggYXJlIG1pc3NpbmcgZnJvbSB0aGUKKyAqIHRhcmdldCBpbmRleC4gIFRodXMgd2Ugd2ls bCBlbnN1cmUgdGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUKKyAqIHJlZmVy ZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0byBkbyBidWxr ZGVsZXRlIGluIHRoZQorICogcGFydGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZpcnN0LCB0YXJn ZXQgbGFzdC4KICAqCiAgKiBCdWlsZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdheSBpcyB0cmlj a3k6IHdlIG1pZ2h0IHRyeSB0byBpbnNlcnQgYQogICogdHVwbGUgdGhhdCBpcyBhbHJlYWR5IGRl YWQgb3IgaXMgaW4gcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLCBhbmQgd2UKQEAgLTMzNjMsMjIg KzM1NDAsMjYgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAg KiBub3QgaW5kZXgpLiAgVGhlbiB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXN2YWxpZCIgYW5kIGNv bW1pdC4gIFN1YnNlcXVlbnQKICAqIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gdXNlIGl0 IGZvciBxdWVyaWVzLgogICoKLSAqIERvaW5nIHR3byBmdWxsIHRhYmxlIHNjYW5zIGlzIGEgYnJ1 dGUtZm9yY2Ugc3RyYXRlZ3kuICBXZSBjb3VsZCB0cnkgdG8gYmUKLSAqIGNsZXZlcmVyLCBlZyBz dG9yaW5nIG5ldyB0dXBsZXMgaW4gYSBzcGVjaWFsIGFyZWEgb2YgdGhlIHRhYmxlIChwZXJoYXBz Ci0gKiBtYWtpbmcgdGhlIHRhYmxlIGFwcGVuZC1vbmx5IGJ5IHNldHRpbmcgdXNlX2ZzbSkuICBI b3dldmVyIHRoYXQgd291bGQKLSAqIGFkZCB5ZXQgbW9yZSBsb2NraW5nIGlzc3Vlcy4KKyAqIEFs c28sIHNvbWUgYWN0aW9ucyB0byBjb25jdXJyZW50IGRyb3AgdGhlIGF1eGlsaWFyeSBpbmRleCBh cmUgcGVyZm9ybWVkLgogICovCiB2b2lkCi12YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQg aW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCit2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBP aWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVJlbGF0 aW9uCWhlYXBSZWxhdGlvbiwKLQkJCQlpbmRleFJlbGF0aW9uOworCQkJCWluZGV4UmVsYXRpb24s CisJCQkJYXV4SW5kZXhSZWxhdGlvbjsKIAlJbmRleEluZm8gICppbmRleEluZm87Ci0JSW5kZXhW YWN1dW1JbmZvIGl2aW5mbzsKLQlWYWxpZGF0ZUluZGV4U3RhdGUgc3RhdGU7CisJSW5kZXhWYWN1 dW1JbmZvIGl2aW5mbywgYXV4aXZpbmZvOworCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZSwgYXV4 U3RhdGU7CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlp bnQJCQlzYXZlX25lc3RsZXZlbDsKKwkvKiBVc2UgODAlIG9mIG1haW50ZW5hbmNlX3dvcmtfbWVt IHRvIHRhcmdldCBpbmRleCBzb3J0aW5nIGFuZAorCSAqIDEwJSByZXN0IGZvciBhdXhpbGlhcnku CisJICoKKwkgKiBSZXN0IDEwJSB3aWxsIGJlIHVzZWQgZm9yIHR1cGxlc3RvcmUgbGF0ZXIuICov CisJaW50NjQJCW1haW5fd29ya19tZW1fcGFydCA9IChpbnQ2NCkgbWFpbnRlbmFuY2Vfd29ya19t ZW0gKiA4IC8gMTA7CisJaW50CQkJYXV4X3dvcmtfbWVtX3BhcnQgPSBtYWludGVuYW5jZV93b3Jr X21lbSAvIDEwOwogCiAJewogCQljb25zdCBpbnQJcHJvZ3Jlc3NfaW5kZXhbXSA9IHsKQEAgLTM0 MTEsNiArMzU5Miw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBT bmFwc2hvdCBzbmFwc2hvdCkKIAlSZXN0cmljdFNlYXJjaFBhdGgoKTsKIAogCWluZGV4UmVsYXRp b24gPSBpbmRleF9vcGVuKGluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCWF1eEluZGV4UmVs YXRpb24gPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoK IAkgKiBGZXRjaCBpbmZvIG5lZWRlZCBmb3IgaW5kZXhfaW5zZXJ0LiAgKFlvdSBtaWdodCB0aGlu ayB0aGlzIHNob3VsZCBiZQpAQCAtMzQzNSwxNSArMzYxNywzMCBAQCB2YWxpZGF0ZV9pbmRleChP aWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaXZpbmZvLnN0cmF0 ZWd5ID0gTlVMTDsKIAlpdmluZm8udmFsaWRhdGVfaW5kZXggPSB0cnVlOwogCisJLyoKKwkgKiBD b3B5IGFsbCBpbmZvIHRvIGF1eGlsaWFyeSBpbmZvLCBjaGFuZ2luZyBvbmx5IHJlbGF0aW9uLgor CSAqLworCWF1eGl2aW5mbyA9IGl2aW5mbzsKKwlhdXhpdmluZm8uaW5kZXggPSBhdXhJbmRleFJl bGF0aW9uOworCiAJLyoKIAkgKiBFbmNvZGUgVElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNv cnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNvcnRpbmcKIAkgKiBpdGVtIHBvaW50ZXJzLiAgVGhp cyBjYW4gYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIsIHByaW1hcmlseSBiZWNhdXNlIFRJRAogCSAq IGlzIGEgcGFzcy1ieS1yZWZlcmVuY2UgdHlwZSBvbiBhbGwgcGxhdGZvcm1zLCB3aGVyZWFzIGlu dDggaXMKIAkgKiBwYXNzLWJ5LXZhbHVlIG9uIG1vc3QgcGxhdGZvcm1zLgogCSAqLworCWF1eFN0 YXRlLnR1cGxlc29ydCA9IHR1cGxlc29ydF9iZWdpbl9kYXR1bShJTlQ4T0lELCBJbnQ4TGVzc09w ZXJhdG9yLAorCQkJCQkJCQkJCSAgIEludmFsaWRPaWQsIGZhbHNlLAorCQkJCQkJCQkJCSAgIGF1 eF93b3JrX21lbV9wYXJ0LAorCQkJCQkJCQkJCSAgIE5VTEwsIFRVUExFU09SVF9OT05FKTsKKwlh dXhTdGF0ZS5odHVwcyA9IGF1eFN0YXRlLml0dXBzID0gYXV4U3RhdGUudHVwc19pbnNlcnRlZCA9 IDA7CisKKwkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUoJmF1eGl2aW5mbywgTlVMTCwKKwkJCQkJ CQkgdmFsaWRhdGVfaW5kZXhfY2FsbGJhY2ssICZhdXhTdGF0ZSk7CisKIAlzdGF0ZS50dXBsZXNv cnQgPSB0dXBsZXNvcnRfYmVnaW5fZGF0dW0oSU5UOE9JRCwgSW50OExlc3NPcGVyYXRvciwKIAkJ CQkJCQkJCQkJSW52YWxpZE9pZCwgZmFsc2UsCi0JCQkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtf bWVtLAorCQkJCQkJCQkJCQkoaW50KSBtYWluX3dvcmtfbWVtX3BhcnQsCiAJCQkJCQkJCQkJCU5V TEwsIFRVUExFU09SVF9OT05FKTsKIAlzdGF0ZS5odHVwcyA9IHN0YXRlLml0dXBzID0gc3RhdGUu dHVwc19pbnNlcnRlZCA9IDA7CiAKQEAgLTM0NjYsMjcgKzM2NjMsMzAgQEAgdmFsaWRhdGVfaW5k ZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCQlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDMsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192 YWxzKTsKIAl9CiAJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KHN0YXRlLnR1cGxlc29ydCk7CisJdHVw bGVzb3J0X3BlcmZvcm1zb3J0KGF1eFN0YXRlLnR1cGxlc29ydCk7CiAKIAkvKgotCSAqIE5vdyBz Y2FuIHRoZSBoZWFwIGFuZCAibWVyZ2UiIGl0IHdpdGggdGhlIGluZGV4CisJICogTm93IG1lcmdl IGJvdGggaW5kZXhlcwogCSAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZB TElEQVRFX1RBQkxFU0NBTik7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFM SURBVEVfSURYTUVSR0UpOwogCXRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4oaGVhcFJlbGF0aW9u LAogCQkJCQkJCSAgaW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkgIGluZGV4SW5mbywKIAkJCQkJCQkg IHNuYXBzaG90LAotCQkJCQkJCSAgJnN0YXRlKTsKKwkJCQkJCQkgICZzdGF0ZSwKKwkJCQkJCQkg ICZhdXhTdGF0ZSk7CiAKLQkvKiBEb25lIHdpdGggdHVwbGVzb3J0IG9iamVjdCAqLwotCXR1cGxl c29ydF9lbmQoc3RhdGUudHVwbGVzb3J0KTsKKwkvKiBUdXBsZSBzb3J0IGNsb3NlZCBieSB0YWJs ZV9pbmRleF92YWxpZGF0ZV9zY2FuICovCisJQXNzZXJ0KHN0YXRlLnR1cGxlc29ydCA9PSBOVUxM ICYmIGF1eFN0YXRlLnR1cGxlc29ydCA9PSBOVUxMKTsKIAogCS8qIE1ha2Ugc3VyZSB0byByZWxl YXNlIHJlc291cmNlcyBjYWNoZWQgaW4gaW5kZXhJbmZvIChpZiBuZWVkZWQpLiAqLwogCWluZGV4 X2luc2VydF9jbGVhbnVwKGluZGV4UmVsYXRpb24sIGluZGV4SW5mbyk7CiAKIAllbG9nKERFQlVH MiwKLQkJICJ2YWxpZGF0ZV9pbmRleCBmb3VuZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGluZGV4 IHR1cGxlczsgaW5zZXJ0ZWQgJS4wZiBtaXNzaW5nIHR1cGxlcyIsCi0JCSBzdGF0ZS5odHVwcywg c3RhdGUuaXR1cHMsIHN0YXRlLnR1cHNfaW5zZXJ0ZWQpOworCQkgInZhbGlkYXRlX2luZGV4IGZl dGNoZWQgJS4wZiBoZWFwIHR1cGxlcywgJS4wZiBpbmRleCB0dXBsZXM7IgorCQkJCQkJIiAlLjBm IGF1eCBpbmRleCB0dXBsZXM7IGluc2VydGVkICUuMGYgbWlzc2luZyB0dXBsZXMiLAorCQkgc3Rh dGUuaHR1cHMsIHN0YXRlLml0dXBzLCBhdXhTdGF0ZS5pdHVwcywgc3RhdGUudHVwc19pbnNlcnRl ZCk7CiAKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1 bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwpAQCAtMzQ5 NSw2ICszNjk1LDcgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNu YXBzaG90IHNuYXBzaG90KQogCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNh dmVfc2VjX2NvbnRleHQpOwogCiAJLyogQ2xvc2UgcmVscywgYnV0IGtlZXAgbG9ja3MgKi8KKwlp bmRleF9jbG9zZShhdXhJbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCWluZGV4X2Nsb3NlKGluZGV4 UmVsYXRpb24sIE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVhcFJlbGF0aW9uLCBOb0xvY2spOwog fQpAQCAtMzU1NSw2ICszNzU2LDExIEBAIGluZGV4X3NldF9zdGF0ZV9mbGFncyhPaWQgaW5kZXhJ ZCwgSW5kZXhTdGF0ZUZsYWdzQWN0aW9uIGFjdGlvbikKIAkJCUFzc2VydCghaW5kZXhGb3JtLT5p bmRpc3ZhbGlkKTsKIAkJCWluZGV4Rm9ybS0+aW5kaXN2YWxpZCA9IHRydWU7CiAJCQlicmVhazsK KwkJY2FzZSBJTkRFWF9EUk9QX0NMRUFSX1JFQURZOgorCQkJLyogQ2xlYXIgaW5kaXNyZWFkeSBk dXJpbmcgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIHNlcXVlbmNlICovCisJCQlBc3NlcnQo IWluZGV4Rm9ybS0+aW5kaXN2YWxpZCk7CisJCQlpbmRleEZvcm0tPmluZGlzcmVhZHkgPSBmYWxz ZTsKKwkJCWJyZWFrOwogCQljYXNlIElOREVYX0RST1BfQ0xFQVJfVkFMSUQ6CiAKIAkJCS8qCkBA IC0zODI2LDYgKzQwMzIsMTMgQEAgcmVpbmRleF9pbmRleChjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIGluZGV4SWQsCiAJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uU3RyYXRzID0gTlVMTDsK IAl9CiAKKwkvKiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUgbm90IGFsbG93ZWQgdG8gYmUgcmVidWls dCAqLworCWlmIChpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJl aW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXNcIiBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoaVJlbCkpKSk7CisKIAkvKiBTdXBwcmVzcyB1c2Ugb2YgdGhl IHRhcmdldCBpbmRleCB3aGlsZSByZWJ1aWxkaW5nIGl0ICovCiAJU2V0UmVpbmRleFByb2Nlc3Np bmcoaGVhcElkLCBpbmRleElkKTsKIApAQCAtNDA2OCw2ICs0MjgxLDcgQEAgcmVpbmRleF9yZWxh dGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJewog CQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXhJZCk7CiAJCU9pZAkJCWluZGV4TmFt ZXNwYWNlSWQgPSBnZXRfcmVsX25hbWVzcGFjZShpbmRleE9pZCk7CisJCU9pZAkJCWluZGV4QW0g PSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKIAogCQkvKgogCQkgKiBTa2lwIGFueSBpbnZhbGlk IGluZGV4ZXMgb24gYSBUT0FTVCB0YWJsZS4gIFRoZXNlIGNhbiBvbmx5IGJlCkBAIC00MDkzLDYg KzQzMDcsMTggQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGlkLCBpbnQgZmxhZ3MsCiAJCQljb250aW51ZTsKIAkJfQogCisJCWlmIChpbmRleEFtID09 IFNUSVJfQU1fT0lEKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVp bmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQlnZXRfbmFtZXNwYWNl X25hbWUoaW5kZXhOYW1lc3BhY2VJZCksCisJCQkJCQkJZ2V0X3JlbF9uYW1lKGluZGV4T2lkKSkp KTsKKwkJCWlmIChmbGFncyAmIFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkKKwkJCQlS ZW1vdmVSZWluZGV4UGVuZGluZyhpbmRleE9pZCk7CisJCQljb250aW51ZTsKKwkJfQorCiAJCXJl aW5kZXhfaW5kZXgoc3RtdCwgaW5kZXhPaWQsICEoZmxhZ3MgJiBSRUlOREVYX1JFTF9DSEVDS19D T05TVFJBSU5UUyksCiAJCQkJCSAgcGVyc2lzdGVuY2UsIHBhcmFtcyk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCAxNWVmYjAyYmFkYi4uZWRkNjFjMjk0YTYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEyODgsMTYgKzEyODgsMTcgQEAgQ1JF QVRFIFZJRVcgcGdfc3RhdF9wcm9ncmVzc19jcmVhdGVfaW5kZXggQVMKICAgICAgICAgICAgICAg ICAgICAgICBFTkQgQVMgY29tbWFuZCwKICAgICAgICAgQ0FTRSBTLnBhcmFtMTAgV0hFTiAwIFRI RU4gJ2luaXRpYWxpemluZycKICAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxIFRIRU4gJ3dh aXRpbmcgZm9yIHdyaXRlcnMgYmVmb3JlIGJ1aWxkJwotICAgICAgICAgICAgICAgICAgICAgICBX SEVOIDIgVEhFTiAnYnVpbGRpbmcgaW5kZXgnIHx8CisgICAgICAgICAgICAgICAgICAgICAgIFdI RU4gMiBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXgnCisg ICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVOICdidWlsZGluZyBpbmRleCcgfHwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENPQUxFU0NFKCgnOiAnIHx8IHBnX2luZGV4YW1fcHJv Z3Jlc3NfcGhhc2VuYW1lKFMucGFyYW05OjpvaWQsIFMucGFyYW0xMSkpLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4g MyBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0aW9uJwotICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDQgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgaW5k ZXgnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9u OiBzb3J0aW5nIHR1cGxlcycKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2lu ZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIHRhYmxlJwotICAgICAgICAgICAgICAgICAgICAgICBX SEVOIDcgVEhFTiAnd2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cycKLSAgICAgICAgICAgICAgICAg ICAgICAgV0hFTiA4IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVh ZCcKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRl cnMgYmVmb3JlIGRyb3BwaW5nJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDQgVEhFTiAn d2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbicKKyAgICAgICAgICAgICAgICAg ICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIGluZGV4JworICAg ICAgICAgICAgICAgICAgICAgICBXSEVOIDYgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc29ydGlu ZyB0dXBsZXMnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNyBUSEVOICdpbmRleCB2YWxp ZGF0aW9uOiBtZXJnaW5nIGluZGV4ZXMnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gOCBU SEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJworICAgICAgICAgICAgICAgICAgICAgICBX SEVOIDkgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFya2luZyBkZWFkJworICAg ICAgICAgICAgICAgICAgICAgICBXSEVOIDEwIFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVm b3JlIGRyb3BwaW5nJwogICAgICAgICAgICAgICAgICAgICAgICBFTkQgYXMgcGhhc2UsCiAgICAg ICAgIFMucGFyYW00IEFTIGxvY2tlcnNfdG90YWwsCiAgICAgICAgIFMucGFyYW01IEFTIGxvY2tl cnNfZG9uZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwppbmRleCA4NzRhOGZjODlhZC4uMGVlMmZkNWU3 ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKQEAgLTMyNSw3ICszMjUsOCBAQCBjcmVhdGVfdG9h c3RfdGFibGUoUmVsYXRpb24gcmVsLCBPaWQgdG9hc3RPaWQsIE9pZCB0b2FzdEluZGV4T2lkLAog CQkJCSBCVFJFRV9BTV9PSUQsCiAJCQkJIHJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlLAogCQkJ CSBjb2xsYXRpb25JZHMsIG9wY2xhc3NJZHMsIE5VTEwsIGNvbG9wdGlvbnMsIE5VTEwsIChEYXR1 bSkgMCwKLQkJCQkgSU5ERVhfQ1JFQVRFX0lTX1BSSU1BUlksIDAsIHRydWUsIHRydWUsIE5VTEwp OworCQkJCSBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSwgMCwgdHJ1ZSwgdHJ1ZSwgTlVMTCwKKwkJ CQkgdG9hc3RfcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAogCXRhYmxlX2Nsb3NlKHRv YXN0X3JlbCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCAxNTIwNmQy NzIyNy4uNjVmYTdmZDc0ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xODIsNiAr MTgyLDcgQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkJCQkgYm9vbCBpc1dp dGhvdXRPdmVybGFwcykKIHsKIAlib29sCQlpc2NvbnN0cmFpbnQ7CisJYm9vbAkJaXNhdXhpbGlh cnk7CiAJT2lkCQkgICAqdHlwZUlkczsKIAlPaWQJCSAgICpjb2xsYXRpb25JZHM7CiAJT2lkCQkg ICAqb3BjbGFzc0lkczsKQEAgLTIzMiw2ICsyMzMsNyBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShP aWQgb2xkSWQsCiAKIAlhbWNhbm9yZGVyID0gYW1Sb3V0aW5lLT5hbWNhbm9yZGVyOwogCWFtc3Vt bWFyaXppbmcgPSBhbVJvdXRpbmUtPmFtc3VtbWFyaXppbmc7CisJaXNhdXhpbGlhcnkgPSBhY2Nl c3NNZXRob2RJZCA9PSBTVElSX0FNX09JRDsKIAogCS8qCiAJICogQ29tcHV0ZSB0aGUgb3BlcmF0 b3IgY2xhc3NlcywgY29sbGF0aW9ucywgYW5kIGV4Y2x1c2lvbiBvcGVyYXRvcnMgZm9yCkBAIC0y NDMsNyArMjQ1LDggQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCSAqLwogCWlu ZGV4SW5mbyA9IG1ha2VJbmRleEluZm8obnVtYmVyT2ZBdHRyaWJ1dGVzLCBudW1iZXJPZkF0dHJp YnV0ZXMsCiAJCQkJCQkJICBhY2Nlc3NNZXRob2RJZCwgTklMLCBOSUwsIGZhbHNlLCBmYWxzZSwK LQkJCQkJCQkgIGZhbHNlLCBmYWxzZSwgYW1zdW1tYXJpemluZywgaXNXaXRob3V0T3ZlcmxhcHMp OworCQkJCQkJCSAgZmFsc2UsIGZhbHNlLCBhbXN1bW1hcml6aW5nLAorCQkJCQkJCSAgaXNXaXRo b3V0T3ZlcmxhcHMsIGlzYXV4aWxpYXJ5KTsKIAl0eXBlSWRzID0gcGFsbG9jX2FycmF5KE9pZCwg bnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAljb2xsYXRpb25JZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBu dW1iZXJPZkF0dHJpYnV0ZXMpOwogCW9wY2xhc3NJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1i ZXJPZkF0dHJpYnV0ZXMpOwpAQCAtNTUzLDYgKzU1Niw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJs ZUlkLAogewogCWJvb2wJCWNvbmN1cnJlbnQ7CiAJY2hhcgkgICAqaW5kZXhSZWxhdGlvbk5hbWU7 CisJY2hhcgkgICAqYXV4SW5kZXhSZWxhdGlvbk5hbWUgPSBOVUxMOwogCWNoYXIJICAgKmFjY2Vz c01ldGhvZE5hbWU7CiAJT2lkCQkgICAqdHlwZUlkczsKIAlPaWQJCSAgICpjb2xsYXRpb25JZHM7 CkBAIC01NjIsNiArNTY2LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJT2lkCQkJbmFt ZXNwYWNlSWQ7CiAJT2lkCQkJdGFibGVzcGFjZUlkOwogCU9pZAkJCWNyZWF0ZWRDb25zdHJhaW50 SWQgPSBJbnZhbGlkT2lkOworCU9pZAkJCWF1eEluZGV4UmVsYXRpb25JZCA9IEludmFsaWRPaWQ7 CiAJTGlzdAkgICAqaW5kZXhDb2xOYW1lczsKIAlMaXN0CSAgICphbGxJbmRleFBhcmFtczsKIAlS ZWxhdGlvbglyZWw7CkBAIC01ODMsNiArNTg4LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQs CiAJaW50CQkJbnVtYmVyT2ZLZXlBdHRyaWJ1dGVzOwogCVRyYW5zYWN0aW9uSWQgbGltaXRYbWlu OwogCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwlPYmplY3RBZGRyZXNzIGF1eEFkZHJlc3M7CiAJ TG9ja1JlbElkCWhlYXByZWxpZDsKIAlMT0NLVEFHCQloZWFwbG9ja3RhZzsKIAlMT0NLTU9ERQls b2NrbW9kZTsKQEAgLTgzMyw2ICs4MzksMTUgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJ CQkJCQkJCQkJCXN0bXQtPmV4Y2x1ZGVPcE5hbWVzLAogCQkJCQkJCQkJCQlzdG10LT5wcmltYXJ5 LAogCQkJCQkJCQkJCQlzdG10LT5pc2NvbnN0cmFpbnQpOworCS8qCisJICogU2VsZWN0IG5hbWUg Zm9yIGF1eGlsaWFyeSBpbmRleAorCSAqLworCWlmIChjb25jdXJyZW50KQorCQlhdXhJbmRleFJl bGF0aW9uTmFtZSA9IENob29zZVJlbGF0aW9uTmFtZShpbmRleFJlbGF0aW9uTmFtZSwKKwkJCQkJ CQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkJCQkJCSAgImNjYXV4IiwKKwkJCQkJCQkJCQkJCSAgbmFt ZXNwYWNlSWQsCisJCQkJCQkJCQkJCQkgIGZhbHNlKTsKIAogCS8qCiAJICogbG9vayB1cCB0aGUg YWNjZXNzIG1ldGhvZCwgdmVyaWZ5IGl0IGNhbiBoYW5kbGUgdGhlIHJlcXVlc3RlZCBmZWF0dXJl cwpAQCAtOTI4LDcgKzk0Myw4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJCSAg IWNvbmN1cnJlbnQsCiAJCQkJCQkJICBjb25jdXJyZW50LAogCQkJCQkJCSAgYW1pc3N1bW1hcml6 aW5nLAotCQkJCQkJCSAgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMpOworCQkJCQkJCSAgc3RtdC0+ aXN3aXRob3V0b3ZlcmxhcHMsCisJCQkJCQkJICBmYWxzZSk7CiAKIAl0eXBlSWRzID0gcGFsbG9j X2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAljb2xsYXRpb25JZHMgPSBwYWxsb2Nf YXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwpAQCAtMTI1MSw3ICsxMjY3LDggQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCSBjb2xvcHRpb25zLCBOVUxMLCByZWxvcHRpb25z LAogCQkJCQkgZmxhZ3MsIGNvbnN0cl9mbGFncywKIAkJCQkJIGFsbG93U3lzdGVtVGFibGVNb2Rz LCAhY2hlY2tfcmlnaHRzLAotCQkJCQkgJmNyZWF0ZWRDb25zdHJhaW50SWQpOworCQkJCQkgJmNy ZWF0ZWRDb25zdHJhaW50SWQsCisJCQkJCSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpOwog CiAJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsIGluZGV4UmVs YXRpb25JZCk7CiAKQEAgLTE1OTMsNiArMTYxMCwxNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAkJcmV0dXJuIGFkZHJlc3M7CiAJfQogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJl bnQgYnVpbGQgLSBjcmVhdGUgYXV4aWxpYXJ5IGluZGV4IHJlY29yZC4KKwkgKi8KKwlpZiAoY29u Y3VycmVudCkKKwl7CisJCWF1eEluZGV4UmVsYXRpb25JZCA9IGluZGV4X2NvbmN1cnJlbnRseV9j cmVhdGVfYXV4KHJlbCwgaW5kZXhSZWxhdGlvbklkLAorCQkJCQkJCQkJCQl0YWJsZXNwYWNlSWQs IGF1eEluZGV4UmVsYXRpb25OYW1lKTsKKwkJT2JqZWN0QWRkcmVzc1NldChhdXhBZGRyZXNzLCBS ZWxhdGlvblJlbGF0aW9uSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CisJfQorCiAJQXRFT1hhY3Rf R1VDKGZhbHNlLCByb290X3NhdmVfbmVzdGxldmVsKTsKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0 KHJvb3Rfc2F2ZV91c2VyaWQsIHJvb3Rfc2F2ZV9zZWNfY29udGV4dCk7CiAKQEAgLTE2MjEsMTEg KzE2NDgsMTEgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyoKIAkgKiBGb3IgYSBjb25j dXJyZW50IGJ1aWxkLCBpdCdzIGltcG9ydGFudCB0byBtYWtlIHRoZSBjYXRhbG9nIGVudHJpZXMK IAkgKiB2aXNpYmxlIHRvIG90aGVyIHRyYW5zYWN0aW9ucyBiZWZvcmUgd2Ugc3RhcnQgdG8gYnVp bGQgdGhlIGluZGV4LiBUaGF0Ci0JICogd2lsbCBwcmV2ZW50IHRoZW0gZnJvbSBtYWtpbmcgaW5j b21wYXRpYmxlIEhPVCB1cGRhdGVzLiAgVGhlIG5ldyBpbmRleAotCSAqIHdpbGwgYmUgbWFya2Vk IG5vdCBpbmRpc3JlYWR5IGFuZCBub3QgaW5kaXN2YWxpZCwgc28gdGhhdCBubyBvbmUgZWxzZQot CSAqIHRyaWVzIHRvIGVpdGhlciBpbnNlcnQgaW50byBpdCBvciB1c2UgaXQgZm9yIHF1ZXJpZXMu CisJICogd2lsbCBwcmV2ZW50IHRoZW0gZnJvbSBtYWtpbmcgaW5jb21wYXRpYmxlIEhPVCB1cGRh dGVzLiBOZXcgaW5kZXhlcworCSAqIChtYWluIGFuZCBhdXhpbGlhcnkpIHdpbGwgYmUgbWFya2Vk IG5vdCBpbmRpc3JlYWR5IGFuZCBub3QgaW5kaXN2YWxpZCwKKwkgKiBzbyB0aGF0IG5vIG9uZSBl bHNlIHRyaWVzIHRvIGVpdGhlciBpbnNlcnQgaW50byBpdCBvciB1c2UgaXQgZm9yIHF1ZXJpZXMu CiAJICoKLQkgKiBXZSBtdXN0IGNvbW1pdCBvdXIgY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0 IHRoZSBpbmRleCBiZWNvbWVzCisJICogV2UgbXVzdCBjb21taXQgb3VyIGN1cnJlbnQgdHJhbnNh Y3Rpb24gc28gdGhhdCB0aGUgaW5kZXhlcyBiZWNvbWVzCiAJICogdmlzaWJsZTsgdGhlbiBzdGFy dCBhbm90aGVyLiAgTm90ZSB0aGF0IGFsbCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHdlIGp1c3QKIAkg KiBidWlsdCBhcmUgbG9zdCBpbiB0aGUgY29tbWl0LiAgVGhlIG9ubHkgZGF0YSB3ZSBrZWVwIHBh c3QgaGVyZSBhcmUgdGhlCiAJICogcmVsYXRpb24gSURzLgpAQCAtMTYzNSw3ICsxNjYyLDcgQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogY2Fubm90IGJsb2NrLCBldmVuIGlmIHNvbWVv bmUgZWxzZSBpcyB3YWl0aW5nIGZvciBhY2Nlc3MsIGJlY2F1c2Ugd2UKIAkgKiBhbHJlYWR5IGhh dmUgdGhlIHNhbWUgbG9jayB3aXRoaW4gb3VyIHRyYW5zYWN0aW9uLgogCSAqCi0JICogTm90ZTog d2UgZG9uJ3QgY3VycmVudGx5IGJvdGhlciB3aXRoIGEgc2Vzc2lvbiBsb2NrIG9uIHRoZSBpbmRl eCwKKwkgKiBOb3RlOiB3ZSBkb24ndCBjdXJyZW50bHkgYm90aGVyIHdpdGggYSBzZXNzaW9uIGxv Y2sgb24gdGhlIGluZGV4ZXMsCiAJICogYmVjYXVzZSB0aGVyZSBhcmUgbm8gb3BlcmF0aW9ucyB0 aGF0IGNvdWxkIGNoYW5nZSBpdHMgc3RhdGUgd2hpbGUgd2UKIAkgKiBob2xkIGxvY2sgb24gdGhl IHBhcmVudCB0YWJsZS4gIFRoaXMgbWlnaHQgbmVlZCB0byBjaGFuZ2UgbGF0ZXIuCiAJICovCkBA IC0xNjc0LDcgKzE3MDEsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiB3aXRoIHRo ZSBvbGQgbGlzdCBvZiBpbmRleGVzLiAgVXNlIFNoYXJlTG9jayB0byBjb25zaWRlciBydW5uaW5n CiAJICogdHJhbnNhY3Rpb25zIHRoYXQgaG9sZCBsb2NrcyB0aGF0IHBlcm1pdCB3cml0aW5nIHRv IHRoZSB0YWJsZS4gIE5vdGUgd2UKIAkgKiBkbyBub3QgbmVlZCB0byB3b3JyeSBhYm91dCB4YWN0 cyB0aGF0IG9wZW4gdGhlIHRhYmxlIGZvciB3cml0aW5nIGFmdGVyCi0JICogdGhpcyBwb2ludDsg dGhleSB3aWxsIHNlZSB0aGUgbmV3IGluZGV4IHdoZW4gdGhleSBvcGVuIGl0LgorCSAqIHRoaXMg cG9pbnQ7IHRoZXkgd2lsbCBzZWUgdGhlIG5ldyBpbmRleGVzIHdoZW4gdGhleSBvcGVuIGl0Lgog CSAqCiAJICogTm90ZTogdGhlIHJlYXNvbiB3ZSB1c2UgYWN0dWFsIGxvY2sgYWNxdWlzaXRpb24g aGVyZSwgcmF0aGVyIHRoYW4ganVzdAogCSAqIGNoZWNraW5nIHRoZSBQcm9jQXJyYXkgYW5kIHNs ZWVwaW5nLCBpcyB0aGF0IGRlYWRsb2NrIGlzIHBvc3NpYmxlIGlmCkBAIC0xNjg2LDE0ICsxNzEz LDM4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCiAJLyoKIAkgKiBBdCB0aGlzIG1vbWVu dCB3ZSBhcmUgc3VyZSB0aGF0IHRoZXJlIGFyZSBubyB0cmFuc2FjdGlvbnMgd2l0aCB0aGUKLQkg KiB0YWJsZSBvcGVuIGZvciB3cml0ZSB0aGF0IGRvbid0IGhhdmUgdGhpcyBuZXcgaW5kZXggaW4g dGhlaXIgbGlzdCBvZgorCSAqIHRhYmxlIG9wZW4gZm9yIHdyaXRlIHRoYXQgZG9uJ3QgaGF2ZSB0 aGlzIG5ldyBpbmRleGVzIGluIHRoZWlyIGxpc3Qgb2YKIAkgKiBpbmRleGVzLiAgV2UgaGF2ZSB3 YWl0ZWQgb3V0IGFsbCB0aGUgZXhpc3RpbmcgdHJhbnNhY3Rpb25zIGFuZCBhbnkgbmV3Ci0JICog dHJhbnNhY3Rpb24gd2lsbCBoYXZlIHRoZSBuZXcgaW5kZXggaW4gaXRzIGxpc3QsIGJ1dCB0aGUg aW5kZXggaXMgc3RpbGwKLQkgKiBtYXJrZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuICBU aGUgaW5kZXggaXMgY29uc3VsdGVkIHdoaWxlCisJICogdHJhbnNhY3Rpb24gd2lsbCBoYXZlIGJv dGggbmV3IGluZGV4ZXMgaW4gaXRzIGxpc3QsIGJ1dCBpbmRleGVzIGFyZSBzdGlsbAorCSAqIG1h cmtlZCBhcyAibm90LXJlYWR5LWZvci1pbnNlcnRzIi4gVGhlIGluZGV4ZXMgYXJlIGNvbnN1bHRl ZCB3aGlsZQogCSAqIGRlY2lkaW5nIEhPVC1zYWZldHkgdGhvdWdoLiAgVGhpcyBhcnJhbmdlbWVu dCBlbnN1cmVzIHRoYXQgbm8gbmV3IEhPVAogCSAqIGNoYWlucyBjYW4gYmUgY3JlYXRlZCB3aGVy ZSB0aGUgbmV3IHR1cGxlIGFuZCB0aGUgb2xkIHR1cGxlIGluIHRoZQogCSAqIGNoYWluIGhhdmUg ZGlmZmVyZW50IGluZGV4IGtleXMuCiAJICoKKwkgKiBOb3cgY2FsbCBidWlsZCBvbiBhdXhpbGlh cnkgaW5kZXguIEluZGV4IHdpbGwgYmUgY3JlYXRlZCBlbXB0eSB3aXRob3V0CisJICogYW55IGFj dHVhbCBoZWFwIHNjYW4sIGJ1dCBtYXJrZWQgYXMgInJlYWR5LWZvci1pbnNlcnRzIi4gVGhlIGdv YWwgb2YKKwkgKiB0aGF0IGluZGV4IGlzIGFjY3VtdWxhdGUgbmV3IHR1cGxlcyB3aGlsZSBtYWlu IGluZGV4IGlzIGFjdHVhbGx5IGJ1aWx0LgorCSAqLworCWluZGV4X2NvbmN1cnJlbnRseV9idWls ZCh0YWJsZUlkLCBhdXhJbmRleFJlbGF0aW9uSWQpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qIFRlbGwgY29uY3VycmVu dCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwlpZiAo c2FmZV9pbmRleCkKKwkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKwlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CisJLyoKKwkgKiBOb3cgd2UgbmVlZCB0byBlbnN1 cmUgYXJlIG5vIHRyYW5zYWN0aW9ucyB3aXRoIHRoZSB3aXRoIGF1eGlsaWFyeSBpbmRleAorCSAq IG1hcmtlZCBhcyAibm90LXJlYWR5LWZvci1pbnNlcnRzIi4KKwkgKi8KKwlXYWl0Rm9yTG9ja2Vy cyhoZWFwbG9ja3RhZywgU2hhcmVMb2NrLCB0cnVlKTsKKworCS8qCisJICogQXQgdGhpcyBtb21l bnQgd2UgYXJlIHN1cmUgd2hhdCBhbGwgbmV3IHR1cGxlcyBpbiB0YWJsZSBhcmUgaW5zZXJ0ZWQg aW50bworCSAqIGF1eGlsaWFyeSBpbmRleC4gTm93IGl0IGlzIHRpbWUgdG8gYnVpbGQgdGhlIHRh cmdldCBpbmRleCBpdHNlbGYuCisJICoKIAkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxs IHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIG11bHRpcGxlCiAJICogcmVmcmVzaGluZyBz bmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhl c2UgdHVwbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVw ZGF0ZXMgbWFkZQpAQCAtMTcyMiw5ICsxNzczLDI4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlk LAogCSAqIHRoZSBpbmRleCBtYXJrZWQgYXMgcmVhZC1vbmx5IGZvciB1cGRhdGVzLgogCSAqLwog CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAot CQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CisJCQkJCQkJCSBQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsKIAlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3Rh ZywgU2hhcmVMb2NrLCB0cnVlKTsKIAorCS8qCisJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQg aW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCSAqIGhhdmUgYSB2YWxp ZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKKwkvKgorCSAqIE5vdyB0YXJnZXQgaW5kZXggaXMgbWFya2VkIGFzICJyZWFkeSIg Zm9yIGFsbCB0cmFuc2FjdGlvbnMuIFNvLCBhdXhpbGlhcnkKKwkgKiBpbmRleCBpcyBub3QgbW9y ZSBuZWVkZWQuIFNvLCBzdGFydCByZW1vdmluZyBwcm9jZXNzIGJ5IHJldmVydGluZyAicmVhZHki CisJICogZmxhZy4KKwkgKi8KKwlpbmRleF9zZXRfc3RhdGVfZmxhZ3MoYXV4SW5kZXhSZWxhdGlv bklkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KCk7CisKIAkvKgogCSAqIE5vdyB0YWtlIHRoZSAicmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdp bGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRleCgpCiAJICogdG8gZmlsdGVyIGNhbmRpZGF0ZSB0 dXBsZXMuICBCZXdhcmUhICBUaGVyZSBtaWdodCBzdGlsbCBiZSBzbmFwc2hvdHMgaW4KQEAgLTE3 NDIsMjQgKzE4MTIsMTQgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICovCiAJc25hcHNo b3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJUHVzaEFj dGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQogCS8qCi0JICogU2NhbiB0aGUgaW5kZXggYW5kIHRo ZSBoZWFwLCBpbnNlcnQgYW55IG1pc3NpbmcgaW5kZXggZW50cmllcy4KLQkgKi8KLQl2YWxpZGF0 ZV9pbmRleCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQsIHNuYXBzaG90KTsKLQotCS8qCi0JICog RHJvcCB0aGUgcmVmZXJlbmNlIHNuYXBzaG90LiAgV2UgbXVzdCBkbyB0aGlzIGJlZm9yZSB3YWl0 aW5nIG91dCBvdGhlcgotCSAqIHNuYXBzaG90IGhvbGRlcnMsIGVsc2Ugd2Ugd2lsbCBkZWFkbG9j ayBhZ2FpbnN0IG90aGVyIHByb2Nlc3NlcyBhbHNvCi0JICogZG9pbmcgQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSwgd2hpY2ggd291bGQgc2VlIG91ciBzbmFwc2hvdCBhcyBvbmUKLQkgKiB0aGV5 IG11c3Qgd2FpdCBmb3IuICBCdXQgZmlyc3QsIHNhdmUgdGhlIHNuYXBzaG90J3MgeG1pbiB0byB1 c2UgYXMKLQkgKiBsaW1pdFhtaW4gZm9yIEdldEN1cnJlbnRWaXJ0dWFsWElEcygpLgorCSAqIE1l cmdlIGNvbnRlbnQgb2YgYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5kZXhlcyAtIGluc2VydCBhbnkg bWlzc2luZyBpbmRleCBlbnRyaWVzLgogCSAqLworCXZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGlu ZGV4UmVsYXRpb25JZCwgYXV4SW5kZXhSZWxhdGlvbklkLCBzbmFwc2hvdCk7CiAJbGltaXRYbWlu ID0gc25hcHNob3QtPnhtaW47CiAKIAlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCVVucmVnaXN0ZXJT bmFwc2hvdChzbmFwc2hvdCk7Ci0KIAkvKgogCSAqIFRoZSBzbmFwc2hvdCBzdWJzeXN0ZW0gY291 bGQgc3RpbGwgY29udGFpbiByZWdpc3RlcmVkIHNuYXBzaG90cyB0aGF0CiAJICogYXJlIGhvbGRp bmcgYmFjayBvdXIgcHJvY2VzcydzIGFkdmVydGlzZWQgeG1pbjsgaW4gcGFydGljdWxhciwgaWYK QEAgLTE3ODYsNyArMTg0Niw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqLwogCUlO SkVDVElPTl9QT0lOVCgiZGVmaW5lX2luZGV4X2JlZm9yZV9zZXRfdmFsaWQiLCBOVUxMKTsKIAlw Z3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJ CQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOworCQkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CiAJV2FpdEZvck9sZGVyU25hcHNob3RzKGxpbWl0 WG1pbiwgdHJ1ZSk7CiAKIAkvKgpAQCAtMTgxMSw2ICsxODcxLDUzIEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCSAqIHRvIHJlcGxhbjsgc28gcmVsY2FjaGUgZmx1c2ggb24gdGhlIGluZGV4 IGl0c2VsZiB3YXMgc3VmZmljaWVudC4pCiAJICovCiAJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVC eVJlbGlkKGhlYXByZWxpZC5yZWxJZCk7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJ U3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBi dWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRl eCkKKwkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKworCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCSBQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0VfV0FJVF81KTsKKwkvKiBOb3cgd2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9uIHRv IHNlZSBhdXhpbGlhcnkgYXMgIm5vbi1yZWFkeSBmb3IgaW5zZXJ0cyIgKi8KKwlXYWl0Rm9yTG9j a2VycyhoZWFwbG9ja3RhZywgQWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7CisKKwlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoK KwkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywg c28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCS8qIE5vdyBpdCBpcyB0aW1l IHRvIG1hcmsgYXV4aWxpYXJ5IGluZGV4IGFzIGRlYWQgKi8KKwlpbmRleF9jb25jdXJyZW50bHlf c2V0X2RlYWQodGFibGVJZCwgYXV4SW5kZXhSZWxhdGlvbklkKTsKKwlQb3BBY3RpdmVTbmFwc2hv dCgpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKworCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVz LCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRleCkKKwkJc2V0X2luZGV4c2Fm ZV9wcm9jZmxhZ3MoKTsKKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82 KTsKKwkvKiBOb3cgd2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9uIHRvIGlnbm9yZSBhdXhpbGlhcnkg YmVjYXVzZSBpdCBpcyBkZWFkICovCisJV2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIEFjY2Vz c0V4Y2x1c2l2ZUxvY2ssIHRydWUpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJ U3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogRHJvcCBhdXhpbGlhcnkgaW5k ZXguCisJICoKKwkgKiBVc2UgUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UX0xPQ0sgc28gdGhh dCBpbmRleF9kcm9wKCkgdXNlcyB0aGUKKwkgKiByaWdodCBsb2NrIGxldmVsLgorCSAqLworCXBl cmZvcm1EZWxldGlvbigmYXV4QWRkcmVzcywgRFJPUF9SRVNUUklDVCwKKwkJCQkJCQkgUEVSRk9S TV9ERUxFVElPTl9DT05DVVJSRU5UX0xPQ0sgfCBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMKTsK IAogCS8qCiAJICogTGFzdCB0aGluZyB0byBkbyBpcyByZWxlYXNlIHRoZSBzZXNzaW9uLWxldmVs IGxvY2sgb24gdGhlIHBhcmVudCB0YWJsZS4KQEAgLTM1MzEsNiArMzYzOCw3IEBAIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleEluZGV4SW5mbwogCXsKIAkJ T2lkCQkJaW5kZXhJZDsKKwkJT2lkCQkJYXV4SW5kZXhJZDsKIAkJT2lkCQkJdGFibGVJZDsKIAkJ T2lkCQkJYW1JZDsKIAkJYm9vbAkJc2FmZTsJCS8qIGZvciBzZXRfaW5kZXhzYWZlX3Byb2NmbGFn cyAqLwpAQCAtMzYzNiw4ICszNzQ0LDE1IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJ CU9pZAkJCWNlbGxPaWQgPSBsZmlyc3Rfb2lkKGxjKTsKIAkJCQkJUmVsYXRpb24JaW5kZXhSZWxh dGlvbiA9IGluZGV4X29wZW4oY2VsbE9pZCwKIAkJCQkJCQkJCQkJCQkJICAgU2hhcmVVcGRhdGVF eGNsdXNpdmVMb2NrKTsKKwkJCQkJSW5kZXhJbmZvKglpbmRleEluZm8gPSBCdWlsZER1bW15SW5k ZXhJbmZvKGluZGV4UmVsYXRpb24pOwogCi0JCQkJCWlmICghaW5kZXhSZWxhdGlvbi0+cmRfaW5k ZXgtPmluZGlzdmFsaWQpCisKKwkJCQkJaWYgKGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQkJ CQkJZXJlcG9ydChXQVJOSU5HLChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBc IiVzLiVzXCIiLAorCQkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9yZWxfbmFtZXNwYWNl KGNlbGxPaWQpKSwKKwkJCQkJCQkJCWdldF9yZWxfbmFtZShjZWxsT2lkKSkpKTsKKwkJCQkJZWxz ZSBpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkKQogCQkJCQkJZXJlcG9y dChXQVJOSU5HLAogCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKIAkJCQkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBpbnZh bGlkIGluZGV4IFwiJXMuJXNcIiIsCkBAIC0zNjg5LDggKzM4MDQsMTUgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkJCQkJCU9pZAkJCWNlbGxPaWQgPSBsZmlyc3Rfb2lkKGxjMik7CiAJCQkJ CQlSZWxhdGlvbglpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihjZWxsT2lkLAogCQkJCQkJCQkJ CQkJCQkJICAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJCQkJCUluZGV4SW5mbyoJaW5k ZXhJbmZvID0gQnVpbGREdW1teUluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKIAotCQkJCQkJaWYg KCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxpZCkKKwkJCQkJCWlmIChpbmRleElu Zm8tPmlpX0F1eGlsaWFyeSkKKwkJCQkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJCQkgZXJybXNnKCJz a2lwcGluZyByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzLiVzXCIiLAorCQkJCQkJCQkJ CQlnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2UoY2VsbE9pZCkpLAorCQkJCQkJ CQkJCQlnZXRfcmVsX25hbWUoY2VsbE9pZCkpKSk7CisJCQkJCQllbHNlIGlmICghaW5kZXhSZWxh dGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQpCiAJCQkJCQkJZXJlcG9ydChXQVJOSU5HLAogCQkJ CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSks CiAJCQkJCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXggXCIl cy4lc1wiIiwKQEAgLTM3NTEsNiArMzg3MywxMyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJCQkg ZXJybXNnKCJjYW5ub3QgcmVpbmRleCBpbnZhbGlkIGluZGV4IG9uIFRPQVNUIHRhYmxlIikpKTsK IAorCQkJCS8qIEF1eGlsaWFyeSBpbmRleGVzIGFyZSBub3QgYWxsb3dlZCB0byBiZSByZWJ1aWx0 ICovCisJCQkJaWYgKGdldF9yZWxfcmVsYW0ocmVsYXRpb25PaWQpID09IFNUSVJfQU1fT0lEKQor CQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygicmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIl c1wiIG5vdCBzdXBwb3J0ZWQiLAorCQkJCQkJCQlnZXRfcmVsX25hbWUocmVsYXRpb25PaWQpKSkp OworCiAJCQkJLyoKIAkJCQkgKiBDaGVjayBpZiBwYXJlbnQgcmVsYXRpb24gY2FuIGJlIGxvY2tl ZCBhbmQgaWYgaXQgZXhpc3RzLAogCQkJCSAqIHRoaXMgbmVlZHMgdG8gYmUgZG9uZSBhdCB0aGlz IHN0YWdlIGFzIHRoZSBsaXN0IG9mIGluZGV4ZXMKQEAgLTM4NTQsMTUgKzM5ODMsMTggQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAlmb3JlYWNoKGxjLCBpbmRleElkcykKIAl7CiAJCWNoYXIJ ICAgKmNvbmN1cnJlbnROYW1lOworCQljaGFyCSAgICphdXhDb25jdXJyZW50TmFtZTsKIAkJUmVp bmRleEluZGV4SW5mbyAqaWR4ID0gbGZpcnN0KGxjKTsKIAkJUmVpbmRleEluZGV4SW5mbyAqbmV3 aWR4OwogCQlPaWQJCQluZXdJbmRleElkOworCQlPaWQJCQlhdXhJbmRleElkOwogCQlSZWxhdGlv bglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJ CWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJCWludAkJCXNhdmVfbmVzdGxldmVsOwogCQlSZWxh dGlvbgluZXdJbmRleFJlbDsKKwkJUmVsYXRpb24JYXV4SW5kZXhSZWw7CiAJCUxvY2tSZWxJZCAg KmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwogCkBAIC0zOTEzLDYgKzQwNDUsMTEg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCQkJCQkJImNjbmV3IiwKIAkJCQkJCQkJ CQkJZ2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRyZWxpZCksCiAJCQkJ CQkJCQkJCWZhbHNlKTsKKwkJYXV4Q29uY3VycmVudE5hbWUgPSBDaG9vc2VSZWxhdGlvbk5hbWUo Z2V0X3JlbF9uYW1lKGlkeC0+aW5kZXhJZCksCisJCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJ CSJjY2F1eCIsCisJCQkJCQkJCQkJCWdldF9yZWxfbmFtZXNwYWNlKGluZGV4UmVsLT5yZF9pbmRl eC0+aW5kcmVsaWQpLAorCQkJCQkJCQkJCQlmYWxzZSk7CiAKIAkJLyogQ2hvb3NlIHRoZSBuZXcg dGFibGVzcGFjZSwgaW5kZXhlcyBvZiB0b2FzdCB0YWJsZXMgYXJlIG5vdCBtb3ZlZCAqLwogCQlp ZiAoT2lkSXNWYWxpZChwYXJhbXMtPnRhYmxlc3BhY2VPaWQpICYmCkBAIC0zOTI2LDEyICs0MDYz LDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkJaWR4LT5pbmRleElk LAogCQkJCQkJCQkJCQkJCXRhYmxlc3BhY2VpZCwKIAkJCQkJCQkJCQkJCQljb25jdXJyZW50TmFt ZSk7CisJCWF1eEluZGV4SWQgPSBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChoZWFwUmVs LAorCQkJCQkJCQkJCQkJICAgbmV3SW5kZXhJZCwKKwkJCQkJCQkJCQkJCSAgIHRhYmxlc3BhY2Vp ZCwKKwkJCQkJCQkJCQkJCSAgIGF1eENvbmN1cnJlbnROYW1lKTsKIAogCQkvKgogCQkgKiBOb3cg b3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwgYSBzZXNzaW9uLWxldmVsIGxvY2sg aXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwogCQluZXdJbmRleFJlbCA9IGluZGV4 X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJYXV4SW5kZXhS ZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAK IAkJLyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFuZCBsb2NrcyBpbiBwcml2YXRlIGNv bnRleHQKQEAgLTM5NDAsNiArNDA4Miw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAkJ bmV3aWR4ID0gcGFsbG9jX29iamVjdChSZWluZGV4SW5kZXhJbmZvKTsKIAkJbmV3aWR4LT5pbmRl eElkID0gbmV3SW5kZXhJZDsKKwkJbmV3aWR4LT5hdXhJbmRleElkID0gYXV4SW5kZXhJZDsKIAkJ bmV3aWR4LT5zYWZlID0gaWR4LT5zYWZlOwogCQluZXdpZHgtPnRhYmxlSWQgPSBpZHgtPnRhYmxl SWQ7CiAJCW5ld2lkeC0+YW1JZCA9IGlkeC0+YW1JZDsKQEAgLTM5NTgsMTAgKzQxMDEsMTQgQEAg UmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQg cmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJbG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2Nr UmVsSWQpOwogCQkqbG9ja3JlbGlkID0gbmV3SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJ ZDsKIAkJcmVsYXRpb25Mb2NrcyA9IGxhcHBlbmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsK KwkJbG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOworCQkqbG9ja3JlbGlkID0g YXV4SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKKwkJcmVsYXRpb25Mb2NrcyA9IGxh cHBlbmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKIAogCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY29udGV4dCk7CiAKIAkJaW5kZXhfY2xvc2UoaW5kZXhSZWwsIE5vTG9jayk7CisJCWlu ZGV4X2Nsb3NlKGF1eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShuZXdJbmRleFJl bCwgTm9Mb2NrKTsKIAogCQkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5 IGluZGV4IGZ1bmN0aW9ucyAqLwpAQCAtNDA0MiwxMyArNDE4OSw1NiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCSAqIGRvaW5nIHRoYXQsIHdhaXQgdW50aWwgbm8gcnVubmluZyB0cmFuc2Fj dGlvbnMgY291bGQgaGF2ZSB0aGUgdGFibGUgb2YKIAkgKiB0aGUgaW5kZXggb3BlbiB3aXRoIHRo ZSBvbGQgbGlzdCBvZiBpbmRleGVzLiAgU2VlICJwaGFzZSAyIiBpbgogCSAqIERlZmluZUluZGV4 KCkgZm9yIG1vcmUgZGV0YWlscy4KKwkqLworCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzEpOworCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9j aywgdHJ1ZSk7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIE5vdyBi dWlsZCBhbGwgYXV4aWxpYXJ5IGluZGV4ZXMgYW5kIG1hcmsgdGhlbSBhcyAicmVhZHktZm9yLWlu c2VydHMiLgorCSAqLworCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleElu ZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCisJCS8qCisJCSAqIENoZWNrIGZvciB1c2VyLXJlcXVlc3RlZCBhYm9ydC4gIFRoaXMg aXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24gc28gYXMKKwkJICogeGFjdC5jIGRvZXMgbm90IGlzc3Vl IGEgdXNlbGVzcyBXQVJOSU5HLCBhbmQgZW5zdXJlcyB0aGF0CisJCSAqIHNlc3Npb24tbGV2ZWwg bG9ja3MgYXJlIGNsZWFuZWQgdXAgb24gYWJvcnQuCisJCSAqLworCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOworCisJCS8qIFRlbGwgY29uY3VycmVudCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlm IGluZGV4IHF1YWxpZmllcyAqLworCQlpZiAobmV3aWR4LT5zYWZlKQorCQkJc2V0X2luZGV4c2Fm ZV9wcm9jZmxhZ3MoKTsKKworCQkvKiBCdWlsZCBhdXhpbGlhcnkgaW5kZXgsIGl0IGlzIGZhc3Qg LSB3aXRob3V0IGFueSBhY3R1YWwgaGVhcCBzY2FuLCBqdXN0IGFuIGVtcHR5IGluZGV4LiAqLwor CQlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eElu ZGV4SWQpOworCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCX0KKworCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNu YXBzaG90IGluIHRoaXMgdHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8gbmVlZAorCSAqIHRvIHNldCB0 aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4KIAkgKi8KIAogCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1dBSVRfMSk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF8yKTsKKwkvKgorCSAqIFdhaXQgdW50aWwgYWxsIGF1eGlsaWFyeSBpbmRleGVzIGFy ZSB0YWtlbiBpbnRvIGFjY291bnQgYnkgYWxsCisJICogdHJhbnNhY3Rpb25zLgorCSAqLwogCVdh aXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CiAJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKKwkvKiBOb3cgaXQgaXMgdGltZSB0byBwZXJmb3JtIHRh cmdldCBpbmRleCBidWlsZC4gKi8KIAlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKIAl7CiAJCVJl aW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CkBAIC00MDkxLDYgKzQyODEsNDEg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9T QUZFX0lDIGZsYWcgaGVyZS4KIAkgKi8KIAorCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0o UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFX1dBSVRfMyk7CisJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2Nr LCB0cnVlKTsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogQXQgdGhp cyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFyZSBtYXJrZWQgYXMgInJlYWR5LXRvLWluc2Vy dCIuIFNvLAorCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgZHJvcHBpbmcgYXV4 aWxpYXJ5IGluZGV4ZXMuCisJICovCisJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCisJeworCQlS ZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOworCQlTdGFydFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCQkvKgorCQkgKiBDaGVjayBmb3IgdXNlci1yZXF1ZXN0ZWQgYWJvcnQuICBU aGlzIGlzIGluc2lkZSBhIHRyYW5zYWN0aW9uIHNvIGFzCisJCSAqIHhhY3QuYyBkb2VzIG5vdCBp c3N1ZSBhIHVzZWxlc3MgV0FSTklORywgYW5kIGVuc3VyZXMgdGhhdAorCQkgKiBzZXNzaW9uLWxl dmVsIGxvY2tzIGFyZSBjbGVhbmVkIHVwIG9uIGFib3J0LgorCQkgKi8KKwkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKKworCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVz LCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwkJaWYgKG5ld2lkeC0+c2FmZSkKKwkJCXNldF9pbmRl eHNhZmVfcHJvY2ZsYWdzKCk7CisKKwkJLyoKKwkJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQg aW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCQkgKiBoYXZlIGEgdmFs aWQgc25hcHNob3QuCisJCSAqLworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25T bmFwc2hvdCgpKTsKKwkJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwg SU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJfQorCiAJLyoKIAkgKiBQaGFzZSAzIG9mIFJFSU5E RVggQ09OQ1VSUkVOVExZCiAJICoKQEAgLTQwOTgsMTIgKzQzMjMsNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCSAqIHdlcmUgY3JlYXRlZCBkdXJpbmcgdGhlIHByZXZpb3VzIHBoYXNlLiAg U2VlICJwaGFzZSAzIiBpbiBEZWZpbmVJbmRleCgpCiAJICogZm9yIG1vcmUgZGV0YWlscy4KIAkg Ki8KLQotCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7Ci0JV2FpdEZv ckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKLQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKLQogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQogCXsKIAkJUmVp bmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKQEAgLTQxNDEsNyArNDM2MCw3IEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXByb2dyZXNzX3ZhbHNbM10gPSBuZXdpZHgtPmFt SWQ7CiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5k ZXgsIHByb2dyZXNzX3ZhbHMpOwogCi0JCXZhbGlkYXRlX2luZGV4KG5ld2lkeC0+dGFibGVJZCwg bmV3aWR4LT5pbmRleElkLCBzbmFwc2hvdCk7CisJCXZhbGlkYXRlX2luZGV4KG5ld2lkeC0+dGFi bGVJZCwgbmV3aWR4LT5pbmRleElkLCBuZXdpZHgtPmF1eEluZGV4SWQsIHNuYXBzaG90KTsKIAog CQkvKgogCQkgKiBXZSBjYW4gbm93IGRvIGF3YXkgd2l0aCBvdXIgYWN0aXZlIHNuYXBzaG90LCB3 ZSBzdGlsbCBuZWVkIHRvIHNhdmUKQEAgLTQxNzAsNyArNDM4OSw3IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCSAqIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9J QyBmbGFnIGhlcmUuCiAJCSAqLwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf V0FJVF8zKTsKKwkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKIAkJ V2FpdEZvck9sZGVyU25hcHNob3RzKGxpbWl0WG1pbiwgdHJ1ZSk7CiAKIAkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CkBAIC00MjYwLDE0ICs0NDc5LDE0IEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25z dCBSZWluCiAJLyoKIAkgKiBQaGFzZSA1IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoKLQkg KiBNYXJrIHRoZSBvbGQgaW5kZXhlcyBhcyBkZWFkLiAgRmlyc3Qgd2UgbXVzdCB3YWl0IHVudGls IG5vIHJ1bm5pbmcKLQkgKiB0cmFuc2FjdGlvbiBjb3VsZCBiZSB1c2luZyB0aGUgaW5kZXggZm9y IGEgcXVlcnkuICBTZWUgYWxzbworCSAqIE1hcmsgdGhlIG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4 ZXMgYXMgZGVhZC4gRmlyc3Qgd2UgbXVzdCB3YWl0IHVudGlsIG5vCisJICogcnVubmluZyB0cmFu c2FjdGlvbiBjb3VsZCBiZSB1c2luZyB0aGUgaW5kZXggZm9yIGEgcXVlcnkuICBTZWUgYWxzbwog CSAqIGluZGV4X2Ryb3AoKSBmb3IgbW9yZSBkZXRhaWxzLgogCSAqLwogCiAJSU5KRUNUSU9OX1BP SU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQiLCBOVUxM KTsKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQpOworCQkJCQkJCQkg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBs ZShsb2NrVGFncywgQWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7CiAKIAlmb3JlYWNoKGxjLCBp bmRleElkcykKQEAgLTQyOTIsNiArNDUxMSwyOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCX0KIAorCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQor CXsKKwkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKworCQkvKgorCQkg KiBDaGVjayBmb3IgdXNlci1yZXF1ZXN0ZWQgYWJvcnQuICBUaGlzIGlzIGluc2lkZSBhIHRyYW5z YWN0aW9uIHNvIGFzCisJCSAqIHhhY3QuYyBkb2VzIG5vdCBpc3N1ZSBhIHVzZWxlc3MgV0FSTklO RywgYW5kIGVuc3VyZXMgdGhhdAorCQkgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGFyZSBjbGVhbmVk IHVwIG9uIGFib3J0LgorCQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKgor CQkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywg c28gZW5zdXJlIHdlCisJCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkJICovCisJCVB1c2hB Y3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJCWluZGV4X2NvbmN1 cnJlbnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisK KwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwl9CisKIAkvKiBDb21taXQgdGhpcyB0cmFuc2FjdGlv biB0byBtYWtlIHRoZSB1cGRhdGVzIHZpc2libGUuICovCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTQzMDUsMTEgKzQ1NDYsMTEg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkvKgogCSAqIFBoYXNlIDYgb2YgUkVJTkRFWCBD T05DVVJSRU5UTFkKIAkgKgotCSAqIERyb3AgdGhlIG9sZCBpbmRleGVzLgorCSAqIERyb3AgdGhl IG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMuCiAJICovCiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBk YXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRV9XQUlUXzUpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfNik7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgQWNjZXNzRXhjbHVz aXZlTG9jaywgdHJ1ZSk7CiAKIAlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKQEAgLTQzMjksNiArNDU3MCwxOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQkJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZvYmplY3QsIG9iamVjdHMpOwogCQl9CiAKKwkJ Zm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCisJCXsKKwkJCVJlaW5kZXhJbmRleEluZm8gKmlkeCA9 IGxmaXJzdChsYyk7CisJCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQkJb2JqZWN0LmNsYXNz SWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCQlvYmplY3Qub2JqZWN0SWQgPSBpZHgtPmF1eElu ZGV4SWQ7CisJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCisJCQlhZGRfZXhhY3Rfb2JqZWN0 X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisJCX0KKwogCQkvKgogCQkgKiBVc2UgUEVSRk9S TV9ERUxFVElPTl9DT05DVVJSRU5UX0xPQ0sgc28gdGhhdCBpbmRleF9kcm9wKCkgdXNlcyB0aGUK IAkJICogcmlnaHQgbG9jayBsZXZlbC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21h a2VmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXggZTk3ZTA5NDNm NWIuLmI1NTZiYTQ4MTdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtODM0LDcgKzgzNCw3IEBA IEluZGV4SW5mbyAqCiBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJz LCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCQkJICBMaXN0ICpwcmVkaWNhdGVzLCBi b29sIHVuaXF1ZSwgYm9vbCBudWxsc19ub3RfZGlzdGluY3QsCiAJCQkgIGJvb2wgaXNyZWFkeSwg Ym9vbCBjb25jdXJyZW50LCBib29sIHN1bW1hcml6aW5nLAotCQkJICBib29sIHdpdGhvdXRvdmVy bGFwcykKKwkJCSAgYm9vbCB3aXRob3V0b3ZlcmxhcHMsIGJvb2wgYXV4aWxpYXJ5KQogewogCUlu ZGV4SW5mbyAgKm4gPSBtYWtlTm9kZShJbmRleEluZm8pOwogCkBAIC04NTAsNiArODUwLDcgQEAg bWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBM aXN0ICpleHByZXNzaW9ucywKIAluLT5paV9Db25jdXJyZW50ID0gY29uY3VycmVudDsKIAluLT5p aV9TdW1tYXJpemluZyA9IHN1bW1hcml6aW5nOwogCW4tPmlpX1dpdGhvdXRPdmVybGFwcyA9IHdp dGhvdXRvdmVybGFwczsKKwluLT5paV9BdXhpbGlhcnkgPSBhdXhpbGlhcnk7CiAKIAkvKiBzdW1t YXJpemluZyBpbmRleGVzIGNhbm5vdCBjb250YWluIG5vbi1rZXkgYXR0cmlidXRlcyAqLwogCUFz c2VydCghc3VtbWFyaXppbmcgfHwgKG51bWtleWF0dHJzID09IG51bWF0dHJzKSk7CkBAIC04NzUs NyArODc2LDYgQEAgbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywg T2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAkvKiBpbml0aWFsaXplIGluZGV4LWJ1aWxk IHN0YXRlIHRvIGRlZmF1bHQgKi8KIAluLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwogCW4t PmlpX1BhcmFsbGVsV29ya2VycyA9IDA7Ci0Jbi0+aWlfQXV4aWxpYXJ5ID0gZmFsc2U7CiAKIAkv KiBzZXQgdXAgZm9yIHBvc3NpYmxlIHVzZSBieSBpbmRleCBBTSAqLwogCW4tPmlpX0FtID0gYW1v aWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBhY2QyMGRiZmFiOC4uNmM0M2Y0NzgxNGQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaApAQCAtNzA4LDExICs3MDgsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVB bVJvdXRpbmUKIAkJCQkJCQkJCQkgICBUYWJsZVNjYW5EZXNjIHNjYW4pOwogCiAJLyogc2VlIHRh YmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4gZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICov Ci0Jdm9pZAkJKCppbmRleF92YWxpZGF0ZV9zY2FuKSAoUmVsYXRpb24gdGFibGVfcmVsLAotCQkJ CQkJCQkJCVJlbGF0aW9uIGluZGV4X3JlbCwKLQkJCQkJCQkJCQlzdHJ1Y3QgSW5kZXhJbmZvICpp bmRleF9pbmZvLAotCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJCXN0cnVj dCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlKTsKKwl2b2lkIAkJKCppbmRleF92YWxpZGF0ZV9z Y2FuKSAoUmVsYXRpb24gdGFibGVfcmVsLAorCQkJCQkJCQkJCQkJUmVsYXRpb24gaW5kZXhfcmVs LAorCQkJCQkJCQkJCQkJc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKKwkJCQkJCQkJCQkJ CVNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0 ZSAqc3RhdGUsCisJCQkJCQkJCQkJCQlzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICphdXhfc3Rh dGUpOwogCiAKIAkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4MjAsMTkgKzE4MjEsMjQgQEAgdGFi bGVfaW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCiAgKiB0YWJsZV9p bmRleF92YWxpZGF0ZV9zY2FuIC0gc2Vjb25kIHRhYmxlIHNjYW4gZm9yIGNvbmN1cnJlbnQgaW5k ZXggYnVpbGQKICAqCiAgKiBTZWUgdmFsaWRhdGVfaW5kZXgoKSBmb3IgYW4gZXhwbGFuYXRpb24u CisgKgorICogTm90ZTogaXQgaXMgcmVzcG9uc2liaWxpdHkgb2YgdGhhdCBmdW5jdGlvbiB0byBj bG9zZSBzb3J0c3RhdGVzIGluCisgKiBib3RoIGBzdGF0ZWAgYW5kIGBhdXhzdGF0ZWAuCiAgKi8K IHN0YXRpYyBpbmxpbmUgdm9pZAogdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiB0 YWJsZV9yZWwsCiAJCQkJCQkgIFJlbGF0aW9uIGluZGV4X3JlbCwKIAkJCQkJCSAgc3RydWN0IElu ZGV4SW5mbyAqaW5kZXhfaW5mbywKIAkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkg IHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlKQorCQkJCQkJICBzdHJ1Y3QgVmFsaWRh dGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJCQkJCSAgc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAq YXV4c3RhdGUpCiB7Ci0JdGFibGVfcmVsLT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9zY2Fu KHRhYmxlX3JlbCwKLQkJCQkJCQkJCQkJICAgaW5kZXhfcmVsLAotCQkJCQkJCQkJCQkgICBpbmRl eF9pbmZvLAotCQkJCQkJCQkJCQkgICBzbmFwc2hvdCwKLQkJCQkJCQkJCQkJICAgc3RhdGUpOwor CXJldHVybiB0YWJsZV9yZWwtPnJkX3RhYmxlYW0tPmluZGV4X3ZhbGlkYXRlX3NjYW4odGFibGVf cmVsLAorCQkJCQkJCQkJCQkJCSAgaW5kZXhfcmVsLAorCQkJCQkJCQkJCQkJCSAgaW5kZXhfaW5m bywKKwkJCQkJCQkJCQkJCQkgIHNuYXBzaG90LAorCQkJCQkJCQkJCQkJCSAgc3RhdGUsCisJCQkJ CQkJCQkJCQkJICBhdXhzdGF0ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDRkYWE4YmVm NWVlLi40NzEzZjE4ZTY4ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMjUsNiArMjUsNyBAQCB0eXBl ZGVmIGVudW0KIHsKIAlJTkRFWF9DUkVBVEVfU0VUX1JFQURZLAogCUlOREVYX0NSRUFURV9TRVRf VkFMSUQsCisJSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSwKIAlJTkRFWF9EUk9QX0NMRUFSX1ZBTElE LAogCUlOREVYX0RST1BfU0VUX0RFQUQsCiB9IEluZGV4U3RhdGVGbGFnc0FjdGlvbjsKQEAgLTY1 LDYgKzY2LDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfY2hlY2tfcHJpbWFyeV9rZXkoUmVsYXRpb24g aGVhcFJlbCwKICNkZWZpbmUJSU5ERVhfQ1JFQVRFX0lGX05PVF9FWElTVFMJCQkoMSA8PCA0KQog I2RlZmluZQlJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQJCQkoMSA8PCA1KQogI2RlZmluZSBJTkRF WF9DUkVBVEVfSU5WQUxJRAkJCQkoMSA8PCA2KQorI2RlZmluZSBJTkRFWF9DUkVBVEVfQVVYSUxJ QVJZCQkJCSgxIDw8IDcpCiAKIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKIAkJCQkJCSBjb25zdCBjaGFyICppbmRleFJlbGF0aW9uTmFtZSwKQEAgLTg2LDcg Kzg4LDggQEAgZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CQkJCQkJIGJpdHMxNiBjb25zdHJfZmxhZ3MsCiAJCQkJCQkgYm9vbCBhbGxvd19zeXN0ZW1fdGFi bGVfbW9kcywKIAkJCQkJCSBib29sIGlzX2ludGVybmFsLAotCQkJCQkJIE9pZCAqY29uc3RyYWlu dElkKTsKKwkJCQkJCSBPaWQgKmNvbnN0cmFpbnRJZCwKKwkJCQkJCSBjaGFyIHJlbHBlcnNpc3Rl bmNlKTsKIAogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktfQVNfUFJJTUFSWQkoMSA8 PCAwKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX0RFRkVSUkFCTEUJCSgxIDw8IDEpCkBA IC0xMDAsNiArMTAzLDExIEBAIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9j b3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9p ZCwKIAkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpuZXdOYW1lKTsKIAorZXh0ZXJuIE9pZAlpbmRl eF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCQkJ CQkJICBPaWQgbWFpbkluZGV4SWQsCisJCQkJCQkJCQkJICBPaWQgdGFibGVzcGFjZU9pZCwKKwkJ CQkJCQkJCQkgIGNvbnN0IGNoYXIgKm5ld05hbWUpOworCiBleHRlcm4gdm9pZCBpbmRleF9jb25j dXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCQkJCQkJCQkJIE9pZCBpbmRleFJl bGF0aW9uSWQpOwogCkBAIC0xNDUsNyArMTUzLDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfYnVpbGQo UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJYm9vbCBpc3JlaW5kZXgsCiAJCQkJCQlib29s IHBhcmFsbGVsKTsKIAotZXh0ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lk IGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiB2b2lkIHZhbGlkYXRlX2luZGV4 KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNo b3QpOwogCiBleHRlcm4gdm9pZCBpbmRleF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIElu ZGV4U3RhdGVGbGFnc0FjdGlvbiBhY3Rpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9wcm9ncmVzcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaAppbmRl eCA3YzczNmU3YjAzYi4uNmUxNDU3N2VmOWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3Byb2dyZXNzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaApAQCAt OTQsMTQgKzk0LDE1IEBACiAKIC8qIFBoYXNlcyBvZiBDUkVBVEUgSU5ERVggKGFzIGFkdmVydGlz ZWQgdmlhIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSkgKi8KICNkZWZpbmUgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1dBSVRfMQkJCTEKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X0JVSUxECQkJMgotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yCQkJMwot I2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYU0NBTgk0Ci0jZGVm aW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9TT1JUCQk1Ci0jZGVmaW5lIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9UQUJMRVNDQU4JNgotI2RlZmluZSBQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zCQkJNworI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF8yCQkJMgorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfQlVJ TEQJCQkzCisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMJCQk0CisjZGVm aW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhTQ0FOCTUKKyNkZWZpbmUg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX1NPUlQJCTYKKyNkZWZpbmUgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWE1FUkdFCTcKICNkZWZpbmUgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1dBSVRfNAkJCTgKICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFX1dBSVRfNQkJCTkKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNgkJ CTEwCiAKIC8qCiAgKiBTdWJwaGFzZXMgb2YgQ1JFQVRFIElOREVYLCBmb3IgaW5kZXhfYnVpbGQu CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDAzNDFiYjc0MzI1Li5lMDJmYzZhYTNlNiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKQEAgLTE4Niw4ICsxODYsOCBAQCB0eXBlZGVmIHN0cnVjdCBFeHByU3Rh dGUKICAqCQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBmb3IgaW5kZXggQU0KICAqCQlD b250ZXh0CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8KICAqCi0gKiBp aV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgaWlfQXV4aWxpYXJ5IGFuZCBpaV9QYXJh bGxlbFdvcmtlcnMKLSAqIGFyZSB1c2VkIG9ubHkgZHVyaW5nIGluZGV4IGJ1aWxkOyB0aGV5J3Jl IGNvbnZlbnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCisgKiBpaV9Db25jdXJyZW50LCBpaV9C cm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVsV29ya2VycyBhcmUgdXNlZCBvbmx5CisgKiBk dXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkgemVyb2VkIG90aGVyd2lz ZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL21ha2VmdW5jcy5oCmluZGV4IDU0NzNjZTlhMjg4Li40OTA0NzQ4ZjVmYyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv bWFrZWZ1bmNzLmgKQEAgLTk5LDcgKzk5LDggQEAgZXh0ZXJuIEluZGV4SW5mbyAqbWFrZUluZGV4 SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLAogCQkJCQkJCQlM aXN0ICpleHByZXNzaW9ucywgTGlzdCAqcHJlZGljYXRlcywKIAkJCQkJCQkJYm9vbCB1bmlxdWUs IGJvb2wgbnVsbHNfbm90X2Rpc3RpbmN0LAogCQkJCQkJCQlib29sIGlzcmVhZHksIGJvb2wgY29u Y3VycmVudCwKLQkJCQkJCQkJYm9vbCBzdW1tYXJpemluZywgYm9vbCB3aXRob3V0b3ZlcmxhcHMp OworCQkJCQkJCQlib29sIHN1bW1hcml6aW5nLCBib29sIHdpdGhvdXRvdmVybGFwcywKKwkJCQkJ CQkJYm9vbCBhdXhpbGlhcnkpOwogCiBleHRlcm4gTm9kZSAqbWFrZVN0cmluZ0NvbnN0KGNoYXIg KnN0ciwgaW50IGxvY2F0aW9uKTsKIGV4dGVybiBEZWZFbGVtICptYWtlRGVmRWxlbShjaGFyICpu YW1lLCBOb2RlICphcmcsIGludCBsb2NhdGlvbik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NyZWF0ZV9pbmRleC5vdXQKaW5kZXggOWFkZTdiODM1ZTYuLmNhNzQ4NDRiNWM2IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CkBAIC0xNDIzLDYgKzE0MjMs NyBAQCBERVRBSUw6ICBLZXkgKGYxKT0oYikgYWxyZWFkeSBleGlzdHMuCiBDUkVBVEUgVU5JUVVF IElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXgzIE9OIGNvbmN1cl9oZWFwKGYyKTsKIEVS Uk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImNvbmN1cl9pbmRleDMiCiBERVRB SUw6ICBLZXkgKGYyKT0oYikgaXMgZHVwbGljYXRlZC4KK0RST1AgSU5ERVggY29uY3VyX2luZGV4 M19jY2F1eDsKIC0tIHRlc3QgdGhhdCBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHBhcnRpYWwgaW5k ZXhlcyB3b3JrIGNvbmN1cnJlbnRseQogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJf aW5kZXg0IG9uIGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0nYSc7CiBDUkVBVEUgSU5ERVggQ09O Q1VSUkVOVExZIGNvbmN1cl9pbmRleDUgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSd4JzsK QEAgLTMxOTcsNiArMzE5OCw3IEBAIElOU0VSVCBJTlRPIGNvbmN1cl9yZWluZGV4X3RhYjQgVkFM VUVTICgxKSwgKDEpLCAoMik7CiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25j dXJfcmVpbmRleF9pbmQ1IE9OIGNvbmN1cl9yZWluZGV4X3RhYjQgKGMxKTsKIEVSUk9SOiAgY291 bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImNvbmN1cl9yZWluZGV4X2luZDUiCiBERVRBSUw6 ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhf aW5kNV9jY2F1eDsKIC0tIFJlaW5kZXhpbmcgY29uY3VycmVudGx5IHRoaXMgaW5kZXggZmFpbHMg d2l0aCB0aGUgc2FtZSBmYWlsdXJlLgogLS0gVGhlIGV4dHJhIGluZGV4IGNyZWF0ZWQgaXMgaXRz ZWxmIGludmFsaWQsIGFuZCBjYW4gYmUgZHJvcHBlZC4KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNvbmN1cl9yZWluZGV4X2luZDU7CkBAIC0zMjA5LDggKzMyMTEsMTAgQEAgREVUQUlMOiAg S2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCiAgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCiBJbmRleGVzOgogICAgICJjb25jdXJfcmVpbmRleF9pbmQ1IiBVTklR VUUsIGJ0cmVlIChjMSkgSU5WQUxJRAorICAgICJjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4IiBz dGlyIChjMSkgSU5WQUxJRAogICAgICJjb25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3IiBVTklRVUUs IGJ0cmVlIChjMSkgSU5WQUxJRAogCitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2Nh dXg7CiBEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NuZXc7CiAtLSBUaGlzIG1ha2Vz IHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZh bGlkLgogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7CkBAIC0z MjM4LDYgKzMyNDIsNDQgQEAgSW5kZXhlczoKICAgICAiY29uY3VyX3JlaW5kZXhfaW5kNSIgVU5J UVVFLCBidHJlZSAoYzEpCiAKIERST1AgVEFCTEUgY29uY3VyX3JlaW5kZXhfdGFiNDsKKy0tIENo ZWNrIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzCitDUkVBVEUgVEFCTEUgYXV4X2luZGV4 X3RhYjUgKGMxIGludCk7CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAo MSksICgyKTsKKy0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4IGFuZCBhdXhp bGlhcnkgaW5kZXggZm9yIGl0CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworRVJST1I6ICBjb3VsZCBub3QgY3Jl YXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBLZXkgKGMxKT0oMSkg aXMgZHVwbGljYXRlZC4KK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJs aWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxh YmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAor SW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRyZWUgKGMxKSBJTlZBTElE CisgICAgImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkgSU5WQUxJRAorCistLSBOb3Qg YWxsb3dlZCB0byByZWluZGV4IGF1eGlsaWFyeSBpbmRleAorUkVJTkRFWCBJTkRFWCBhdXhfaW5k ZXhfaW5kNl9jY2F1eDsKK0VSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9p bmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCistLSBDb25jdXJyZW50bHkgYWxzbworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZfY2NhdXg7CitFUlJPUjogIHJl aW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgbm90IHN1cHBv cnRlZAorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUg aW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQg V0hFUkUgYzEgPSAxOworRVJST1I6ICByZWxhdGlvbiAiY29uY3VyX3JlaW5kZXhfdGFiNCIgZG9l cyBub3QgZXhpc3QKK0xJTkUgMTogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVS RSBjMSA9IDE7CisgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1 cmluZyByZWluZGV4CitSRUlOREVYIFRBQkxFIGF1eF9pbmRleF90YWI1OworRVJST1I6ICBjb3Vs ZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBLZXkg KGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25j dXJyZW50IHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1 OworV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCAicHVibGljLmF1 eF9pbmRleF9pbmQ2IgorSElOVDogIFVzZSBEUk9QIElOREVYIG9yIFJFSU5ERVggSU5ERVguCitX QVJOSU5HOiAgc2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggInB1YmxpYy5hdXhf aW5kZXhfaW5kNl9jY2F1eCIKK05PVElDRTogIHRhYmxlICJhdXhfaW5kZXhfdGFiNSIgaGFzIG5v IGluZGV4ZXMgdGhhdCBjYW4gYmUgcmVpbmRleGVkIGNvbmN1cnJlbnRseQorRFJPUCBUQUJMRSBh dXhfaW5kZXhfdGFiNTsKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNz aW9ucyBhbmQgcHJlZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQg aW5kZXhlcyBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCiAtLSBkZWZpbml0aW9ucy4KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKaW5kZXggYmNmMWRiMTFkNzMuLjNmZWNhYTM4 ODUwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dApAQCAtMTU4NSwxMCAr MTU4NSwxMSBAQCBzZWxlY3QgaW5kZXhyZWxpZDo6cmVnY2xhc3MsIGluZGlzdmFsaWQsCiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIHBhcnRlZF9pc3ZhbGlk X2lkeCAgICAgICAgICAgICB8IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWIgICAgfCAK ICBwYXJ0ZWRfaXN2YWxpZF9pZHhfMTEgICAgICAgICAgfCBmICAgICAgICAgIHwgcGFydGVkX2lz dmFsaWRfdGFiXzExIHwgcGFydGVkX2lzdmFsaWRfdGFiXzFfZXhwcl9pZHgKKyBwYXJ0ZWRfaXN2 YWxpZF9pZHhfMTFfY2NhdXggICAgfCBmICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiXzEx IHwgCiAgcGFydGVkX2lzdmFsaWRfdGFiXzEyX2V4cHJfaWR4IHwgdCAgICAgICAgICB8IHBhcnRl ZF9pc3ZhbGlkX3RhYl8xMiB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4CiAgcGFydGVk X2lzdmFsaWRfdGFiXzFfZXhwcl9pZHggIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3Rh Yl8xICB8IHBhcnRlZF9pc3ZhbGlkX2lkeAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8yX2V4cHJfaWR4 ICB8IHQgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMiAgfCBwYXJ0ZWRfaXN2YWxpZF9p ZHgKLSg1IHJvd3MpCisoNiByb3dzKQogCiBkcm9wIHRhYmxlIHBhcnRlZF9pc3ZhbGlkX3RhYjsK IC0tIENoZWNrIHN0YXRlIG9mIHJlcGxpY2EgaW5kZXhlcyB3aGVuIGF0dGFjaGluZyBhIHBhcnRp dGlvbi4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggNmNmODI4Y2E4ZDAuLmVk NmMyMGE0OTVjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjA0MSwxNCAr MjA0MSwxNSBAQCBwZ19zdGF0X3Byb2dyZXNzX2NyZWF0ZV9pbmRleHwgU0VMRUNUIHMucGlkLAog ICAgICAgICBDQVNFIHMucGFyYW0xMAogICAgICAgICAgICAgV0hFTiAwIFRIRU4gJ2luaXRpYWxp emluZyc6OnRleHQKICAgICAgICAgICAgIFdIRU4gMSBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJz IGJlZm9yZSBidWlsZCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gMiBUSEVOICgnYnVpbGRpbmcg aW5kZXgnOjp0ZXh0IHx8IENPQUxFU0NFKCgnOiAnOjp0ZXh0IHx8IHBnX2luZGV4YW1fcHJvZ3Jl c3NfcGhhc2VuYW1lKChzLnBhcmFtOSk6Om9pZCwgcy5wYXJhbTExKSksICcnOjp0ZXh0KSkKLSAg ICAgICAgICAgIFdIRU4gMyBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0 aW9uJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNj YW5uaW5nIGluZGV4Jzo6dGV4dAotICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlk YXRpb246IHNvcnRpbmcgdHVwbGVzJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2lu ZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIHRhYmxlJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA3 IFRIRU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnOjp0ZXh0Ci0gICAgICAgICAgICBXSEVO IDggVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFya2luZyBkZWFkJzo6dGV4dAot ICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3Bw aW5nJzo6dGV4dAorICAgICAgICAgICAgV0hFTiAyIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMg dG8gdXNlIGF1eGlsaWFyeSBpbmRleCc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMyBUSEVOICgn YnVpbGRpbmcgaW5kZXgnOjp0ZXh0IHx8IENPQUxFU0NFKCgnOiAnOjp0ZXh0IHx8IHBnX2luZGV4 YW1fcHJvZ3Jlc3NfcGhhc2VuYW1lKChzLnBhcmFtOSk6Om9pZCwgcy5wYXJhbTExKSksICcnOjp0 ZXh0KSkKKyAgICAgICAgICAgIFdIRU4gNCBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9y ZSB2YWxpZGF0aW9uJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlk YXRpb246IHNjYW5uaW5nIGluZGV4Jzo6dGV4dAorICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2lu ZGV4IHZhbGlkYXRpb246IHNvcnRpbmcgdHVwbGVzJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA3 IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhlcyc6OnRleHQKKyAgICAgICAg ICAgIFdIRU4gOCBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJzo6dGV4dAorICAgICAg ICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVh ZCc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMTAgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBi ZWZvcmUgZHJvcHBpbmcnOjp0ZXh0CiAgICAgICAgICAgICBFTFNFIE5VTEw6OnRleHQKICAgICAg ICAgRU5EIEFTIHBoYXNlLAogICAgIHMucGFyYW00IEFTIGxvY2tlcnNfdG90YWwsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCBlMjFmZjQyNjUxOS4uMmNmZjFhYzI5YmUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApAQCAtNDk5LDYgKzQ5OSw3IEBA IENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIElGIE5PVCBFWElTVFMgY29uY3VyX2lu ZGV4MiBPTiBjb25jdXJfaGVhcChmMSk7CiBJTlNFUlQgSU5UTyBjb25jdXJfaGVhcCBWQUxVRVMg KCdiJywneCcpOwogLS0gY2hlY2sgaWYgY29uc3RyYWludCBpcyBlbmZvcmNlZCBwcm9wZXJseSBh dCBidWlsZCB0aW1lCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5k ZXgzIE9OIGNvbmN1cl9oZWFwKGYyKTsKK0RST1AgSU5ERVggY29uY3VyX2luZGV4M19jY2F1eDsK IC0tIHRlc3QgdGhhdCBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHBhcnRpYWwgaW5kZXhlcyB3b3Jr IGNvbmN1cnJlbnRseQogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg0IG9u IGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0nYSc7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGNvbmN1cl9pbmRleDUgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSd4JzsKQEAgLTEzMTEs MTAgKzEzMTIsMTIgQEAgQ1JFQVRFIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQgKGMxIGludCk7 CiBJTlNFUlQgSU5UTyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIpOwog LS0gVGhpcyB0cmljayBjcmVhdGVzIGFuIGludmFsaWQgaW5kZXguCiBDUkVBVEUgVU5JUVVFIElO REVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1IE9OIGNvbmN1cl9yZWluZGV4X3Rh YjQgKGMxKTsKK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eDsKIC0tIFJlaW5k ZXhpbmcgY29uY3VycmVudGx5IHRoaXMgaW5kZXggZmFpbHMgd2l0aCB0aGUgc2FtZSBmYWlsdXJl LgogLS0gVGhlIGV4dHJhIGluZGV4IGNyZWF0ZWQgaXMgaXRzZWxmIGludmFsaWQsIGFuZCBjYW4g YmUgZHJvcHBlZC4KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2lu ZDU7CiBcZCBjb25jdXJfcmVpbmRleF90YWI0CitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2lu ZDVfY2NhdXg7CiBEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NuZXc7CiAtLSBUaGlz IG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVj b21lIHZhbGlkLgogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7 CkBAIC0xMzI2LDYgKzEzMjksMjQgQEAgUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3Vy X3JlaW5kZXhfaW5kNTsKIFxkIGNvbmN1cl9yZWluZGV4X3RhYjQKIERST1AgVEFCTEUgY29uY3Vy X3JlaW5kZXhfdGFiNDsKIAorLS0gQ2hlY2sgaGFuZGxpbmcgb2YgYXV4aWxpYXJ5IGluZGV4ZXMK K0NSRUFURSBUQUJMRSBhdXhfaW5kZXhfdGFiNSAoYzEgaW50KTsKK0lOU0VSVCBJTlRPIGF1eF9p bmRleF90YWI1IFZBTFVFUyAoMSksICgxKSwgKDIpOworLS0gVGhpcyB0cmljayBjcmVhdGVzIGFu IGludmFsaWQgaW5kZXggYW5kIGF1eGlsaWFyeSBpbmRleCBmb3IgaXQKK0NSRUFURSBVTklRVUUg SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7 CitcZCBhdXhfaW5kZXhfdGFiNQorLS0gTm90IGFsbG93ZWQgdG8gcmVpbmRleCBhdXhpbGlhcnkg aW5kZXgKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CistLSBDb25jdXJyZW50 bHkgYWxzbworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZfY2NhdXg7 CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRl eCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVS RSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAorUkVJTkRFWCBU QUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJy ZW50IHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1Owor RFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKwogLS0gQ2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhl cyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzLiAgVGhlCiAtLSBkZWZpbml0aW9ucyBv ZiB0aGUgcmVidWlsdCBpbmRleGVzIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwKIC0tIGRlZmlu aXRpb25zLgotLSAKMi40My4wCgo= --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0003-Reset-snapshots-periodically-in-non-unique-non-p.patch" Content-Disposition: attachment; filename="v20-0003-Reset-snapshots-periodically-in-non-unique-non-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9oh114 RnJvbSA3YTkwNDIwNTZkZWMyNTkyM2MxNjZiZWUzNmI3MmUxYjM1NzNjNWQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAyMToxMDoyMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDAzLzEyXSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlx dWUKIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcwoKTG9uZy1saXZpbmcgc25h cHNob3RzIHVzZWQgYnkgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05D VVJSRU5UTFkgY2FuIGhvbGQgYmFjayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbi4gQ29tbWl0IGQ5 ZDA3NjIyMmY1YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBzdWNoIHNuYXBz aG90cyB0byBtaXRpZ2F0ZSB0aGlzIHByb2JsZW0uIEhvd2V2ZXIsIHRoaXMgd2FzIHJldmVydGVk IGluIGNvbW1pdCBlMjhiYjg4NTE5NjkgYmVjYXVzZSBpdCBjb3VsZCBjYXVzZSBpbmRleGVzIHRv IG1pc3MgaGVhcCB0dXBsZXMgdGhhdCB3ZXJlIEhPVC11cGRhdGVkIGFuZCBIT1QtcHJ1bmVkIGR1 cmluZyB0aGUgaW5kZXggY3JlYXRpb24sIGxlYWRpbmcgdG8gaW5kZXggY29ycnVwdGlvbi4KClRo aXMgcGF0Y2ggaW50cm9kdWNlcyBhbiBhbHRlcm5hdGl2ZSBieSBwZXJpb2RpY2FsbHkgcmVzZXR0 aW5nIHRoZSBzbmFwc2hvdCB1c2VkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UuIEJ5IHJlc2V0dGlu ZyB0aGUgc25hcHNob3QgZXZlcnkgTiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2NhbiwgaXQgYWxs b3dzIHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4KCkN1cnJlbnRseSwgdGhpcyB0ZWNobmlx dWUgaXMgYXBwbGllZCB0bzoKCi0gb25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhlIGhl YXA6IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2VzIGEg c2luZ2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcwotIG5vbi1wYXJhbGxl bCBpbmRleCBidWlsZHM6IFBhcmFsbGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0 ZWQgYW5kIHdpbGwgYmUgYWRkcmVzc2VkIGluIGEgZm9sbG93aW5nIGNvbW1pdHMKLSBub24tdW5p cXVlIGluZGV4ZXM6IFVuaXF1ZSBpbmRleCBidWlsZHMgc3RpbGwgcmVxdWlyZSBhIGNvbnNpc3Rl bnQgc25hcHNob3QgdG8gZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLCB3aWxsIGJlIGFk ZHJlc3NlZCBpbiBhIGZvbGxvd2luZyBjb21taXRzCgpBIG5ldyBzY2FuIG9wdGlvbiBTT19SRVNF VF9TTkFQU0hPVCBpcyBpbnRyb2R1Y2VkLiBXaGVuIHNldCwgaXQgY2F1c2VzIHRoZSBzbmFwc2hv dCB0byBiZSByZXNldCAiYmV0d2VlbiIgZXZlcnkgU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BB R0UgcGFnZXMgZHVyaW5nIHRoZSBzY2FuLiBUaGUgaGVhcCBzY2FuIGNvZGUgaXMgYWRqdXN0ZWQg dG8gc3VwcG9ydCB0aGlzIG9wdGlvbiwgYW5kIHRoZSBpbmRleCBidWlsZCBjb2RlIGlzIG1vZGlm aWVkIHRvIHVzZSBpdCBmb3IgYXBwbGljYWJsZSBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0aGF0 IGFyZSBub3Qgb24gc3lzdGVtIGNhdGFsb2dzIGFuZCBub3QgdXNpbmcgcGFyYWxsZWwgd29ya2Vy cy4KLS0tCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jICAgICAgICAgICAgICAgfCAg IDMgKy0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyAgICAgICAgICAgICB8ICAg MiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgIDE5 ICsrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgICAgICB8ICAy MSArKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyAgICAgICAgICAgfCAg IDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICA0NSAr KysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg IDU3ICsrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAg ICAgIHwgIDMwICsrKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAg ICAgIHwgIDMwICsrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAg ICAgICAgfCAgMTQgKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAg ICAgICAgfCAgIDkgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAg ICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAg ICAgfCAgMjggKysrKy0KIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmls ZSAgICB8ICAgMiArLQogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAg ICAgIHwgMTA1ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL21lc29uLmJ1aWxkIHwgICAxICsKIC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5z cWwgICAgICAgICAgICAgICB8ICA4NiArKysrKysrKysrKysrKwogMjAgZmlsZXMgY2hhbmdlZCwg NDI3IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNo b3RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKCmRpZmYgLS1naXQgYS9jb250cmliL2Ft Y2hlY2svdmVyaWZ5X25idHJlZS5jIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpp bmRleCAzMDQ4ZTA0NGFlYy4uZTU5MTk3YmIzNWUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVj ay92ZXJpZnlfbmJ0cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpA QCAtNTU4LDcgKzU1OCw4IEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJCQkJCQkJCQkgMCwgLyogbnVtYmVy IG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkJIHRy dWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJCSB0cnVlKTsgLyog c3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgdHJ1ZSwgLyogc3luY3NjYW4gT0s/ICovCisJCQkJ CQkJCQkgZmFsc2UpOwogCiAJCS8qCiAJCSAqIFNjYW4gd2lsbCBiZWhhdmUgYXMgdGhlIGZpcnN0 IHNjYW4gb2YgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZCmRpZmYgLS1naXQgYS9jb250cmli L3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1 cGxlLmMKaW5kZXggMGQ5YzJiMGI2NTMuLmE2ZGFkNTRmZjU4IDEwMDY0NAotLS0gYS9jb250cmli L3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKKysrIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXR0dXBsZS5jCkBAIC0zMzUsNyArMzM1LDcgQEAgcGdzdGF0X2hlYXAoUmVsYXRpb24gcmVsLCBG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJCQkgZXJybXNnKCJvbmx5IGhlYXAgQU0gaXMgc3Vw cG9ydGVkIikpKTsKIAogCS8qIERpc2FibGUgc3luY3NjYW4gYmVjYXVzZSB3ZSBhc3N1bWUgd2Ug c2NhbiBmcm9tIGJsb2NrIHplcm8gdXB3YXJkcyAqLwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5f c3RyYXQocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgdHJ1ZSwgZmFsc2UpOworCXNjYW4gPSB0 YWJsZV9iZWdpbnNjYW5fc3RyYXQocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgdHJ1ZSwgZmFs c2UsIGZhbHNlKTsKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlJbml0RGlydHlT bmFwc2hvdChTbmFwc2hvdERpcnR5KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCAwMWUxZGI3 Zjg1Ni4uZTVhOTQ1YTFiMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTEyMTYsMTEgKzEy MTYsMTIgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAkJc3RhdGUtPmJzX3NvcnRzdGF0ZSA9CiAJCQl0dXBsZXNvcnRfYmVn aW5faW5kZXhfYnJpbihtYWludGVuYW5jZV93b3JrX21lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJ CSAgIFRVUExFU09SVF9OT05FKTsKLQorCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAJ CS8qIHNjYW4gdGhlIHJlbGF0aW9uIGFuZCBtZXJnZSBwZXItd29ya2VyIHJlc3VsdHMgKi8KIAkJ cmVsdHVwbGVzID0gX2JyaW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9icmluX2VuZF9w YXJhbGxlbChzdGF0ZS0+YnNfbGVhZGVyLCBzdGF0ZSk7CisJCUFzc2VydCghaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9 CiAJZWxzZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtMTIzMyw2 ICsxMjM0LDcgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRl eEluZm8gKmluZGV4SW5mbykKIAkJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2Nhbiho ZWFwLCBpbmRleCwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkgICBicmluYnVp bGRDYWxsYmFjaywgc3RhdGUsIE5VTEwpOwogCisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKIAkJLyoKIAkJICogcHJvY2VzcyB0aGUgZmluYWwgYmF0Y2gKIAkJICoKQEAgLTEyNTIsNiAr MTI1NCw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJ bmZvICppbmRleEluZm8pCiAJCWJyaW5fZmlsbF9lbXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJ ICAgc3RhdGUtPmJzX2N1cnJSYW5nZVN0YXJ0LAogCQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5n ZVN0YXJ0KTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2Vz ICovCkBAIC0yMzc0LDYgKzIzNzcsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJV2FsVXNh Z2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRl cnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0g dHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQ QVRJT04KQEAgLTIzOTksOSArMjQwMywxNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICog bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJ CUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsK KwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNu YXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQ dXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkvKgog CSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JSSU5fU0hBUkVEIHdv cmtzcGFjZS4KQEAgLTI0NDQsNiArMjQ1NSw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkv KiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxhYmxlLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1 aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVMTCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlpZiAoSXNNVkNDU25hcHNo b3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJv eVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTI1MjMsNiArMjUzNiw4IEBAIF9icmluX2JlZ2lu X3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5jaGVk LCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19sYXVu Y2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiAJCV9icmluX2VuZF9wYXJhbGxlbChicmlubGVhZGVyLCBOVUxMKTsK IAkJcmV0dXJuOwogCX0KQEAgLTI1MzksNiArMjU1NCw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVs KEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRl eCwKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5n IGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOwor CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBhNjVhY2Q4OTEwNC4uNGNl YTE2MTJjZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjgsNiArMjgsNyBA QAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNjQ2LDYgKzY0Nyw4IEBAIGdpbmJ1aWxkKFJlbGF0 aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0 YXRlLmFjY3VtLmdpbnN0YXRlID0gJmJ1aWxkc3RhdGUuZ2luc3RhdGU7CiAJZ2luSW5pdEJBKCZi dWlsZHN0YXRlLmFjY3VtKTsKIAorCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8 IGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhpZCkpOworCiAJLyogUmVwb3J0IHRhYmxlIHNjYW4gcGhhc2Ugc3RhcnRlZCAqLwog CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNF LAogCQkJCQkJCQkgUFJPR1JFU1NfR0lOX1BIQVNFX0lOREVYQlVJTERfVEFCTEVTQ0FOKTsKQEAg LTcwOCwxMSArNzExLDEzIEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9naW4oaGVh cCwgaW5kZXgsCiAJCQkJCQkJCQkgIG1haW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAog CQkJCQkJCQkJICBUVVBMRVNPUlRfTk9ORSk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKIAogCQkvKiBzY2FuIHRoZSByZWxhdGlvbiBpbiBwYXJhbGxlbCBhbmQgbWVyZ2UgcGVyLXdv cmtlciByZXN1bHRzICovCiAJCXJlbHR1cGxlcyA9IF9naW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUp OwogCiAJCV9naW5fZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19sZWFkZXIsIHN0YXRlKTsKKwkJQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOwogCX0KIAllbHNlCQkJCQkJLyogbm8gcGFyYWxsZWwgaW5kZXggYnVpbGQg Ki8KIAl7CkBAIC03MjIsNiArNzI3LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkgKi8KIAkJcmVsdHVwbGVzID0gdGFi bGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRleCwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSwK IAkJCQkJCQkJCQkgICBnaW5CdWlsZENhbGxiYWNrLCAmYnVpbGRzdGF0ZSwgTlVMTCk7CisJCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCQkvKiBkdW1wIHJlbWFpbmluZyBlbnRyaWVz IHRvIHRoZSBpbmRleCAqLwogCQlvbGRDdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oYnVpbGRz dGF0ZS50bXBDdHgpOwpAQCAtNzM1LDYgKzc0MSw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCQkJCSAgIGxpc3QsIG5s aXN0LCAmYnVpbGRzdGF0ZS5idWlsZFN0YXRzKTsKIAkJfQogCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkQ3R4KTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCU1lbW9yeUNvbnRleHREZWxl dGUoYnVpbGRzdGF0ZS5mdW5jQ3R4KTsKQEAgLTkwNyw2ICs5MTQsNyBAQCBfZ2luX2JlZ2luX3Bh cmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2Fn ZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxF X0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC05MzEsOSArOTM5LDE2IEBAIF9naW5fYmVnaW5fcGFy YWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3Vy cmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBT bmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVs c2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK Kwl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJ Tl9TSEFSRUQgd29ya3NwYWNlLgpAQCAtOTc2LDYgKzk5MSw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZD Q1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJ CURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xMDUwLDYgKzEwNjcsOCBAQCBfZ2lu X2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1 bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJz X2xhdW5jaGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2dpbl9lbmRfcGFyYWxsZWwoZ2lubGVhZGVyLCBOVUxM KTsKIAkJcmV0dXJuOwogCX0KQEAgLTEwNjYsNiArMTA4NSw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFu ZyBmb3JldmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsK KwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwppbmRleCA5ZTcwNzE2N2Q5OC4u NTY5ODExNDdhZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC00Myw2ICs0 Myw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWxrX3dyaXRlLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUg InV0aWxzL3JlbC5oIgpAQCAtMjU5LDYgKzI2MCw3IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVpbGRzdGF0ZS5pbmR0 dXBsZXMgPSAwOwogCWJ1aWxkc3RhdGUuaW5kdHVwbGVzU2l6ZSA9IDA7CiAKKwlBc3NlcnQoIWlu ZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 aWQpKTsKIAlpZiAoYnVpbGRzdGF0ZS5idWlsZE1vZGUgPT0gR0lTVF9TT1JURURfQlVJTEQpCiAJ ewogCQkvKgpAQCAtMzUwLDYgKzM1Miw3IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVz ID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gKGRvdWJsZSkgYnVpbGRzdGF0 ZS5pbmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaC5jCmluZGV4IDUzMDYxYzgxOWZiLi4zNzExYmFlYTA1MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oYXNoL2hhc2guYwpAQCAtMTk3LDYgKzE5Nyw3IEBAIGhhc2hidWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBf dHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5p bmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwppbmRleCA5ZWM4Y2RhMWM2OC4uMTAzMTYyNDZlNGQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAidXRpbHMvaW52 YWwuaCIKICNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKIAogc3RhdGljIEhl YXBUdXBsZSBoZWFwX3ByZXBhcmVfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUg dHVwLApAQCAtNjEyLDYgKzYxMywzNiBAQCBoZWFwX3ByZXBhcmVfcGFnZXNjYW4oVGFibGVTY2Fu RGVzYyBzc2NhbikKIAlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIH0K IAorLyoKKyAqIFJlc2V0IHRoZSBhY3RpdmUgc25hcHNob3QgZHVyaW5nIGEgc2Nhbi4KKyAqIFRo aXMgZW5zdXJlcyB0aGUgeG1pbiBob3Jpem9uIGNhbiBhZHZhbmNlIHdoaWxlIG1haW50YWluaW5n IHNhZmUgdHVwbGUgdmlzaWJpbGl0eS4KKyAqIE5vdGU6IE5vIG90aGVyIHNuYXBzaG90IHNob3Vs ZCBiZSBhY3RpdmUgZHVyaW5nIHRoaXMgb3BlcmF0aW9uLgorICovCitzdGF0aWMgaW5saW5lIHZv aWQKK2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdChUYWJsZVNjYW5EZXNjIHNzY2FuKQoreworCS8q IE1ha2Ugc3VyZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0IGFzIGFjdGl2ZS4gKi8KKwlBc3Nl cnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzc2Nhbi0+cnNfc25hcHNob3QpOworCS8qIEFuZCBt YWtlIHN1cmUgYWN0aXZlIHNuYXBzaG90IGlzIG5vdCByZWdpc3RlcmVkLiAqLworCUFzc2VydChH ZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CisKKwlzc2Nhbi0+cnNfc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7IC8qIGp1c3Qgb3Qg YmUgdGlkeSAqLworCUFzc2VydCghSGF2ZVJlZ2lzdGVyZWRPckFjdGl2ZVNuYXBzaG90KCkpOwor CUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKworCS8qIEdvYWwgb2Ygc25hcHNob3QgcmVz ZXQgaXMgdG8gYWxsb3cgaG9yaXpvbiB0byBhZHZhbmNlLiAqLworCUFzc2VydCghVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisjaWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwkv KiBJbiBzb21lIGNhc2VzIGl0IGlzIHN0aWxsIG5vdCBwb3NzaWJsZSBkdWUgeGlkIGFzc2lnbi4g Ki8KKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSkKKwkJSU5KRUNUSU9O X1BPSU5UKCJoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlIiwgTlVMTCk7CisjZW5k aWYKKworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzc2Nhbi0+ cnNfc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworfQorCiAvKgogICogaGVhcF9mZXRj aF9uZXh0X2J1ZmZlciAtIHJlYWQgYW5kIHBpbiB0aGUgbmV4dCBibG9jayBmcm9tIE1BSU5fRk9S S05VTS4KICAqCkBAIC02NTMsNyArNjg0LDEyIEBAIGhlYXBfZmV0Y2hfbmV4dF9idWZmZXIoSGVh cFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCiAJc2Nhbi0+cnNfY2J1ZiA9IHJl YWRfc3RyZWFtX25leHRfYnVmZmVyKHNjYW4tPnJzX3JlYWRfc3RyZWFtLCBOVUxMKTsKIAlpZiAo QnVmZmVySXNWYWxpZChzY2FuLT5yc19jYnVmKSkKKwl7CiAJCXNjYW4tPnJzX2NibG9jayA9IEJ1 ZmZlckdldEJsb2NrTnVtYmVyKHNjYW4tPnJzX2NidWYpOworCQlpZiAoKHNjYW4tPnJzX2Jhc2Uu cnNfZmxhZ3MgJiBTT19SRVNFVF9TTkFQU0hPVCkgJiYKKwkJCShzY2FuLT5yc19jYmxvY2sgJSBT T19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSA9PSAwKSkKKwkJCWhlYXBfcmVzZXRfc2Nhbl9z bmFwc2hvdCgoVGFibGVTY2FuRGVzYykgc2Nhbik7CisJfQogfQogCiAvKgpAQCAtMTMwNCw2ICsx MzQwLDE1IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChzY2FuLT5y c19wYXJhbGxlbHdvcmtlcmRhdGEgIT0gTlVMTCkKIAkJcGZyZWUoc2Nhbi0+cnNfcGFyYWxsZWx3 b3JrZXJkYXRhKTsKIAorCWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fUkVTRVRfU05B UFNIT1QpCisJeworCQlBc3NlcnQoIShzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9T TkFQU0hPVCkpOworCQkvKiBNYWtlIHN1cmUgbm8gb3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBh Y3RpdmUuICovCisJCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFw c2hvdCk7CisJCS8qIEFuZCBtYWtlIHN1cmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQuICov CisJCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCX0KKwog CWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9TTkFQU0hPVCkKIAkJVW5yZWdp c3RlclNuYXBzaG90KHNjYW4tPnJzX2Jhc2UucnNfc25hcHNob3QpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBhYzA4MmZlZmE3Ny4uOGE1ODRkYjU5NWEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTE5NCw2ICsx MTk0LDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCUV4cHJDb250ZXh0ICplY29udGV4dDsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKIAlib29s CQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSBmYWxzZTsKKwlib29sCQluZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QgPSBmYWxzZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdHMgPSBmYWxzZTsKIAlU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW47CiAJQmxvY2tOdW1iZXIgcHJldmlvdXNfYmxrbm8gPSBJ bnZhbGlkQmxvY2tOdW1iZXI7CiAJQmxvY2tOdW1iZXIgcm9vdF9ibGtubyA9IEludmFsaWRCbG9j a051bWJlcjsKQEAgLTEyMjgsOSArMTIzMCw2IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9z Y2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkvKiBBcnJhbmdlIGZvciBlY29udGV4dCdzIHNj YW4gdHVwbGUgdG8gYmUgdGhlIHR1cGxlIHVuZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ZWN4dF9z Y2FudHVwbGUgPSBzbG90OwogCi0JLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGlj YXRlLCBpZiBhbnkuICovCi0JcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+ aWlfUHJlZGljYXRlLCBlc3RhdGUpOwotCiAJLyoKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRo ZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNu YXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIg b3duIHRpbWUKQEAgLTEyNDAsNiArMTIzOSwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRU cmFuc2FjdGlvbklkOwogCisJLyoKKwkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lz dGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogSW4gY2FzZSBvZiBwYXJhbGxl bCBzY2FuIHNvbWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1aXJlZAorCSAqIHRvIHBl cmZvcm0gc2NhbiB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlzIG5vdCB5ZXQgcmVhZHku CisJICovCisJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCisJ CQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCisJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9n OyAvKiBqdXN0IGZvciB0aGUgY2FzZSAqLworCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBWQUNV VU1zIGhlcmUgKi8KIAlpZiAoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSAmJiAhaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50KQogCQlPbGRlc3RYbWluID0gR2V0T2xkZXN0Tm9uUmVtb3ZhYmxl VHJhbnNhY3Rpb25JZChoZWFwUmVsYXRpb24pOwpAQCAtMTI0OCwyNCArMTI1Niw0MSBAQCBoZWFw YW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJewogCQkv KgogCQkgKiBTZXJpYWwgaW5kZXggYnVpbGQuCi0JCSAqCi0JCSAqIE11c3QgYmVnaW4gb3VyIG93 biBoZWFwIHNjYW4gaW4gdGhpcyBjYXNlLiAgV2UgbWF5IGFsc28gbmVlZCB0bwotCQkgKiByZWdp c3RlciBhIHNuYXBzaG90IHdob3NlIGxpZmV0aW1lIGlzIHVuZGVyIG91ciBkaXJlY3QgY29udHJv bC4KIAkJICovCiAJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikpCiAJCXsK LQkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OwotCQkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gdHJ1ZTsKKwkJCXNuYXBzaG90ID0gR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpOworCQkJLyoKKwkJCSAqIE11c3QgYmVnaW4gb3VyIG93biBo ZWFwIHNjYW4gaW4gdGhpcyBjYXNlLiAgV2UgbWF5IGFsc28gbmVlZCB0bworCQkJICogcmVnaXN0 ZXIgYSBzbmFwc2hvdCB3aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wu CisJCQkgKiBJbiBjYXNlIG9mIHJlc2V0dGluZyBvZiBzbmFwc2hvdCBkdXJpbmcgdGhlIHNjYW4g cmVnaXN0cmF0aW9uIGlzCisJCQkgKiBub3QgYWxsb3dlZCBiZWNhdXNlIHNuYXBzaG90IGlzIGdv aW5nIHRvIGJlIGNoYW5nZWQgZXZlcnkgc28KKwkJCSAqIG9mdGVuLgorCQkJICovCisJCQlpZiAo IXJlc2V0X3NuYXBzaG90cykKKwkJCXsKKwkJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qo c25hcHNob3QpOworCQkJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQl9CisJ CQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNu YXBzaG90KTsKKwkJCS8qIHN0b3JlIGxpbmsgdG8gc25hcHNob3QgYmVjYXVzZSBpdCBtYXkgYmUg Y29waWVkICovCisJCQlzbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJCQluZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCQl9CiAJCWVsc2UKKwkJeworCQkJQXNzZXJ0KCFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCQkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJ fQogCiAJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLAkvKiByZWxh dGlvbiAqLwogCQkJCQkJCQkJIHNuYXBzaG90LAkvKiBzbmFwc2hvdCAqLwogCQkJCQkJCQkJIDAs IC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJ CQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCQkg YWxsb3dfc3luYyk7CS8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIGFsbG93X3N5bmMsCS8q IHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIHJlc2V0X3NuYXBzaG90cyAvKiByZXNldCBzbmFw c2hvdHM/ICovKTsKIAl9CiAJZWxzZQogCXsKQEAgLTEyNzksNiArMTMwNCw4IEBAIGhlYXBhbV9p bmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJQXNzZXJ0KCFJ c0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkpOwogCQlBc3NlcnQoYWxsb3dfc3luYyk7CiAJCXNu YXBzaG90ID0gc2Nhbi0+cnNfc25hcHNob3Q7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hv dCk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJfQogCiAJaHNjYW4gPSAo SGVhcFNjYW5EZXNjKSBzY2FuOwpAQCAtMTI5Myw2ICsxMzIwLDEzIEBAIGhlYXBhbV9pbmRleF9i dWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlBc3NlcnQoc25hcHNob3Qg PT0gU25hcHNob3RBbnkgPyBUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSA6CiAJCSAg ICFUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSk7CiAJQXNzZXJ0KHNuYXBzaG90ID09 IFNuYXBzaG90QW55IHx8ICFhbnl2aXNpYmxlKTsKKwlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNo b3RBbnkgfHwgQWN0aXZlU25hcHNob3RTZXQoKSk7CisKKwkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0 YXRlIGZvciBwcmVkaWNhdGUsIGlmIGFueS4gKi8KKwlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1 YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisJLyogQ2xlYXIgcmVmZXJlbmNl IHRvIHNuYXBzaG90IHNpbmNlIGl0IG1heSBiZSBjaGFuZ2VkIGJ5IHRoZSBzY2FuIGl0c2VsZi4g Ki8KKwlpZiAocmVzZXRfc25hcHNob3RzKQorCQlzbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsK IAogCS8qIFB1Ymxpc2ggbnVtYmVyIG9mIGJsb2NrcyB0byBzY2FuICovCiAJaWYgKHByb2dyZXNz KQpAQCAtMTcyOCw2ICsxNzYyLDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCiAJdGFibGVfZW5kc2NhbihzY2FuKTsKIAorCWlmIChuZWVk X3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJLyogd2UgY2Fu IG5vdyBmb3JnZXQgb3VyIHNuYXBzaG90LCBpZiBzZXQgYW5kIHJlZ2lzdGVyZWQgYnkgdXMgKi8K IAlpZiAobmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90KQogCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOwpAQCAtMTgwMCw3ICsxODM2LDggQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4o UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8K IAkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIg YWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCSBmYWxzZSk7CS8qIHN5bmNzY2FuIG5vdCBP SyAqLworCQkJCQkJCQkgZmFsc2UsCS8qIHN5bmNzY2FuIG5vdCBPSyAqLworCQkJCQkJCQkgZmFs c2UpOwogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKIAogCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfVE9UQUwsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9n ZW5hbS5jCmluZGV4IDBjYjI3YWYxMzEwLi5jOWM1MzA0NDc0OCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2dlbmFtLmMKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzeXN0YWJsZV9iZWdpbnNjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCQkgKi8KIAkJc3lzc2Nhbi0+c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9z dHJhdChoZWFwUmVsYXRpb24sIHNuYXBzaG90LAogCQkJCQkJCQkJCQkgIG5rZXlzLCBrZXksCi0J CQkJCQkJCQkJCSAgdHJ1ZSwgZmFsc2UpOworCQkJCQkJCQkJCQkgIHRydWUsIGZhbHNlLCBmYWxz ZSk7CiAJCXN5c3NjYW4tPmlzY2FuID0gTlVMTDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKaW5kZXggMzc5NGNjOTI0YWQuLmYzOTg2ZDA4NmI2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYwpAQCAtMjU4LDcgKzI1OCw3IEBAIHN0YXRpYyBkb3VibGUgX2J0X3Nw b29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyB2b2lk IF9idF9zcG9vbGRlc3Ryb3koQlRTcG9vbCAqYnRzcG9vbCk7CiBzdGF0aWMgdm9pZCBfYnRfc3Bv b2woQlRTcG9vbCAqYnRzcG9vbCwgSXRlbVBvaW50ZXIgc2VsZiwKIAkJCQkJICBEYXR1bSAqdmFs dWVzLCBib29sICppc251bGwpOwotc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpi dHNwb29sLCBCVFNwb29sICpidHNwb29sMik7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7 CiBzdGF0aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2lu dGVyIHRpZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVw bGVJc0FsaXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5l d3BhZ2UoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMjEsMTggKzMy MSwyMiBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJcmVs dHVwbGVzID0gX2J0X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUsIGlu ZGV4SW5mbyk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUg YnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQog CSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykg YnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUg bmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWls ZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMik7CisJX2J0X2xlYWZidWlsZChi dWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfUGFyYWxs ZWxXb3JrZXJzICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0X3Nwb29sZGVzdHJv eShidWlsZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJCV9idF9zcG9v bGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0bGVhZGVyKQog CQlfYnRfZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOworCUFzc2VydChpbmRleElu Zm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAorCQkgICFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOwogCiAJcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQgKikgcGFsbG9jKHNpemVvZihJ bmRleEJ1aWxkUmVzdWx0KSk7CiAKQEAgLTQ4MCw2ICs0ODQsOSBAQCBfYnRfc3Bvb2xzX2hlYXBz Y2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsCiAJZWxzZQogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0 ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKKwlJbnZhbGlk YXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3Jr ZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAq IFNldCB0aGUgcHJvZ3Jlc3MgdGFyZ2V0IGZvciB0aGUgbmV4dCBwaGFzZS4gIFJlc2V0IHRoZSBi bG9jayBudW1iZXIKQEAgLTUzNSw3ICs1NDIsNyBAQCBfYnRfc3Bvb2woQlRTcG9vbCAqYnRzcG9v bCwgSXRlbVBvaW50ZXIgc2VsZiwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsKQogICogY3Jl YXRlIGFuIGVudGlyZSBidHJlZS4KICAqLwogc3RhdGljIHZvaWQKLV9idF9sZWFmYnVpbGQoQlRT cG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCitfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wg KmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cykKIHsKIAlC VFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01NTcsMTggKzU2NCwyMSBAQCBfYnRfbGVhZmJ1aWxk KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCQkJCQkJCQkJIFBST0dSRVNT X0JUUkVFX1BIQVNFX1BFUkZPUk1TT1JUXzIpOwogCQl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoYnRz cG9vbDItPnNvcnRzdGF0ZSk7CiAJfQorCUFzc2VydCghcmVzZXRfc25hcHNob3RzIHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9v bC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBidHNwb29sLT5pbmRleDsKIAl3c3RhdGUuaW5za2V5 ID0gX2J0X21rc2NhbmtleSh3c3RhdGUuaW5kZXgsIE5VTEwpOwogCS8qIF9idF9ta3NjYW5rZXko KSB3b24ndCBzZXQgYWxsZXF1YWxpbWFnZSB3aXRob3V0IG1ldGFwYWdlICovCiAJd3N0YXRlLmlu c2tleS0+YWxsZXF1YWxpbWFnZSA9IF9idF9hbGxlcXVhbGltYWdlKHdzdGF0ZS5pbmRleCwgdHJ1 ZSk7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCiAJLyogcmVzZXJ2ZSB0aGUgbWV0 YXBhZ2UgKi8KIAl3c3RhdGUuYnR3c19wYWdlc19hbGxvY2VkID0gQlRSRUVfTUVUQVBBR0UgKyAx OwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfU1VC UEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9QSEFTRV9MRUFGX0xPQUQpOworCUFzc2Vy dCghcmVzZXRfc25hcHNob3RzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKIAlfYnRfbG9hZCgmd3N0YXRlLCBidHNwb29sLCBidHNwb29sMik7CiB9CiAKQEAgLTE0MDks NiArMTQxOSw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsK IAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0g dHJ1ZTsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCWludAkJCXF1 ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJfUEFSVElDSVBBVElPTgpAQCAtMTQzNCw5 ICsxNDQ1LDE2IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0 aGF0LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBz aG90U2V0KCkpOwogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVf c25hcHNob3QgPSBmYWxzZTsKKwl9CiAJZWxzZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChz bmFwc2hvdCk7CisJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFM TEVMX0tFWV9CVFJFRV9TSEFSRUQgd29ya3NwYWNlLCBhbmQKQEAgLTE0OTAsNiArMTUwOCw4IEBA IF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25j dXJyZW50LCBpbnQgcmVxdWVzdCkKIAkvKiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxhYmxl LCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVMTCkK IAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hv dCgpOwogCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTE1ODQs NiArMTYwNCw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUg c3VjY2Vzc2Z1bGx5IGxhdW5jaGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlm IChwY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCV9idF9lbmRfcGFyYWxsZWwo YnRsZWFkZXIpOwogCQlyZXR1cm47CiAJfQpAQCAtMTYwMCw2ICsxNjIyLDggQEAgX2J0X2JlZ2lu X3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGlu dCByZXF1ZXN0KQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwg bm90IGhhbmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2go cGN4dCk7CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNo b3QoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn aW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jCmluZGV4IDZh NjFlMDkzZmEwLi4wNmMwMWNmMzM2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGdpbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2Vy dC5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC0xNDMsNiArMTQ0LDcgQEAgc3BnYnVpbGQoUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCXJlc3Vs dCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQp KTsKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVw bGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJcmV0dXJu IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA3MzlhOTJiZGNjMS4uY2JkMGJhOWFhMDEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJ1dGlscy9zbmFw bWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90dXBs ZXNvcnQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogLyogUG90ZW50aWFsbHkgc2V0 IGJ5IHBnX3VwZ3JhZGVfc3VwcG9ydCBmdW5jdGlvbnMgKi8KIE9pZAkJCWJpbmFyeV91cGdyYWRl X25leHRfaW5kZXhfcGdfY2xhc3Nfb2lkID0gSW52YWxpZE9pZDsKQEAgLTE0OTIsOCArMTQ5Myw4 IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJUmVsYXRp b24JaW5kZXhSZWxhdGlvbjsKIAlJbmRleEluZm8gICppbmRleEluZm87CiAKLQkvKiBUaGlzIGhh ZCBiZXR0ZXIgbWFrZSBzdXJlIHRoYXQgYSBzbmFwc2hvdCBpcyBhY3RpdmUgKi8KLQlBc3NlcnQo QWN0aXZlU25hcHNob3RTZXQoKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7 CiAKIAkvKiBPcGVuIGFuZCBsb2NrIHRoZSBwYXJlbnQgaGVhcCByZWxhdGlvbiAqLwogCWhlYXBS ZWwgPSB0YWJsZV9vcGVuKGhlYXBSZWxhdGlvbklkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sp OwpAQCAtMTUxMSwxOSArMTUxMiwyOCBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhl YXBSZWxhdGlvbklkLAogCiAJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oaW5kZXhSZWxhdGlv bklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAorCS8qIEJ1aWxkSW5kZXhJbmZvIG1heSByZXF1aXJl IGFzIHNuYXBzaG90IGZvciBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcyAqLworCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCS8qCiAJICogV2UgaGF2ZSB0 byByZS1idWlsZCB0aGUgSW5kZXhJbmZvIHN0cnVjdCwgc2luY2UgaXQgd2FzIGxvc3QgaW4gdGhl CiAJICogY29tbWl0IG9mIHRoZSB0cmFuc2FjdGlvbiB3aGVyZSB0aGlzIGNvbmN1cnJlbnQgaW5k ZXggd2FzIGNyZWF0ZWQgYXQKIAkgKiB0aGUgY2F0YWxvZyBsZXZlbC4KIAkgKi8KIAlpbmRleElu Zm8gPSBCdWlsZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKKwkvKiBEb25lIHdpdGggc25hcHNo b3QgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCUFzc2VydCghaW5kZXhJbmZvLT5paV9SZWFk eUZvckluc2VydHMpOwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IHRydWU7CiAJaW5kZXhJ bmZvLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKiBOb3cgYnVpbGQgdGhlIGluZGV4ICovCiAJaW5k ZXhfYnVpbGQoaGVhcFJlbCwgaW5kZXhSZWxhdGlvbiwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSk7 CiAKKwkvKiBJbnZhbGlkYXRlIGNhdGFsb2cgc25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCisJ SW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJh bGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhl Y3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25l c3RsZXZlbCk7CiAKQEAgLTE1MzQsMTIgKzE1NDQsMTkgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1 aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBOb0xvY2spOwog CWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAKKwkvKgorCSAqIFVwZGF0aW5n IHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UK KwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdl dFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBVcGRhdGUgdGhlIHBnX2luZGV4IHJv dyB0byBtYXJrIHRoZSBpbmRleCBhcyByZWFkeSBmb3IgaW5zZXJ0cy4gT25jZSB3ZQogCSAqIGNv bW1pdCB0aGlzIHRyYW5zYWN0aW9uLCBhbnkgbmV3IHRyYW5zYWN0aW9ucyB0aGF0IG9wZW4gdGhl IHRhYmxlIG11c3QKIAkgKiBpbnNlcnQgbmV3IGVudHJpZXMgaW50byB0aGUgaW5kZXggZm9yIGlu c2VydGlvbnMgYW5kIG5vbi1IT1QgdXBkYXRlcy4KIAkgKi8KIAlpbmRleF9zZXRfc3RhdGVfZmxh Z3MoaW5kZXhSZWxhdGlvbklkLCBJTkRFWF9DUkVBVEVfU0VUX1JFQURZKTsKKwkvKiB3ZSBjYW4g ZG8gYXdheSB3aXRoIG91ciBzbmFwc2hvdCAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAK IC8qCkBAIC0zMjM2LDcgKzMyNTMsOCBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBO VUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJh dGVneSBPSyAqLwotCQkJCQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LICovCisJCQkJCQkJCSB0 cnVlLCAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgZmFsc2UpOwogCiAJd2hpbGUgKHRhYmxl X3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQogCXsK QEAgLTMyOTksMTIgKzMzMTcsMTYgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAgKiBhcyBvZiB0aGUgc3RhcnQgb2YgdGhlIHNjYW4gKHNlZSB0YWJsZV9pbmRl eF9idWlsZF9zY2FuKSwgd2hlcmVhcyBhIG5vcm1hbAogICogYnVpbGQgdGFrZXMgY2FyZSB0byBp bmNsdWRlIHJlY2VudGx5LWRlYWQgdHVwbGVzLiAgVGhpcyBpcyBPSyBiZWNhdXNlCiAgKiB3ZSB3 b24ndCBtYXJrIHRoZSBpbmRleCB2YWxpZCB1bnRpbCBhbGwgdHJhbnNhY3Rpb25zIHRoYXQgbWln aHQgYmUgYWJsZQotICogdG8gc2VlIHRob3NlIHR1cGxlcyBhcmUgZ29uZS4gIFRoZSByZWFzb24g Zm9yIGRvaW5nIHRoYXQgaXMgdG8gYXZvaWQKKyAqIHRvIHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdv bmUuICBPbmUgb2YgcmVhc29ucyBmb3IgZG9pbmcgdGhhdCBpcyB0byBhdm9pZAogICogYm9ndXMg dW5pcXVlLWluZGV4IGZhaWx1cmVzIGR1ZSB0byBjb25jdXJyZW50IFVQREFURXMgKHdlIG1pZ2h0 IHNlZQogICogZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxp ZCB3aGVuIHdlIHBhc3Mgb3ZlciB0aGVtLAogICogaWYgd2UgdXNlZCBIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0CiAgKiBkb2VzIG5v dCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRo ZSBpbmRleC4KICAqCisgKiBGdXJ0aGVybW9yZSwgaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4 IHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlCisgKiBzY2FuLCB3aGljaCBjYXVzZXMg bmV3IHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFz b24KKyAqIGZvciB0aGF0IGlzIHRvIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQu CisgKgogICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwg bm90ICJpbmRpc3ZhbGlkIikgYW5kCiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBh bmQgc3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25z IHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAg Tm93CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDBmNzVkZWJlN2YxLi5hOTNkNGYzODhi YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE2OTQsMjMgKzE2OTQsMTcgQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogY2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRo ZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZm ZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAqIFdlIG5vdyB0YWtlIGEgbmV3IHNuYXBzaG90LCBh bmQgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdAotCSAqIGFyZSB2aXNpYmxl IGluIHRoaXMgc25hcHNob3QuICBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0 bworCSAqIFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2li bGUgdXNpbmcgc2luZ2xlIG9yCisJICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdl IGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdp bGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQog CSAqIGJ5IHRyYW5zYWN0aW9ucyB0aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBhcmUg bm93IGNvbW1pdHRlZCBvcgogCSAqIHJvbGxlZCBiYWNrLiAgVGh1cywgZWFjaCB2aXNpYmxlIHR1 cGxlIGlzIGVpdGhlciB0aGUgZW5kIG9mIGl0cwogCSAqIEhPVC1jaGFpbiBvciB0aGUgZXh0ZW5z aW9uIG9mIHRoZSBjaGFpbiBpcyBIT1Qtc2FmZSBmb3IgdGhpcyBpbmRleC4KIAkgKi8KIAotCS8q IFNldCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5l ZWQgaXQgKi8KLQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK LQogCS8qIFBlcmZvcm0gY29uY3VycmVudCBidWlsZCBvZiBpbmRleCAqLwogCWluZGV4X2NvbmN1 cnJlbnRseV9idWlsZCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQpOwogCi0JLyogd2UgY2FuIGRv IGF3YXkgd2l0aCBvdXIgc25hcHNob3QgKi8KLQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCiAJLyoK IAkgKiBDb21taXQgdGhpcyB0cmFuc2FjdGlvbiB0byBtYWtlIHRoZSBpbmRpc3JlYWR5IHVwZGF0 ZSB2aXNpYmxlLgogCSAqLwpAQCAtNDA3Myw5ICs0MDY3LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJaWYgKG5ld2lkeC0+c2FmZSkKIAkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7 CiAKLQkJLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhl cyBtYXkgbmVlZCBpdCAqLwotCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKLQogCQkvKgogCQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0byBi dWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKIAkJICogdGFibGUgaW52b2x2ZWQuCkBAIC00 MDkwLDcgKzQwODEsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkvKiBQZXJmb3JtIGNv bmN1cnJlbnQgYnVpbGQgb2YgbmV3IGluZGV4ICovCiAJCWluZGV4X2NvbmN1cnJlbnRseV9idWls ZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCk7CiAKLQkJUG9wQWN0aXZlU25hcHNo b3QoKTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggZmY2NTg2N2VlYmUuLjBkNWU1NGUwY2MyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRp bHMvc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIEdVQyBwYXJh bWV0ZXJzICovCiBkb3VibGUJCWN1cnNvcl90dXBsZV9mcmFjdGlvbiA9IERFRkFVTFRfQ1VSU09S X1RVUExFX0ZSQUNUSU9OOwpAQCAtNjg5OSw2ICs2OTAwLDcgQEAgcGxhbl9jcmVhdGVfaW5kZXhf d29ya2VycyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCkKIAlSZWxhdGlvbgloZWFwOwogCVJl bGF0aW9uCWluZGV4OwogCVJlbE9wdEluZm8gKnJlbDsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVf c25hcHNob3QgPSBmYWxzZTsKIAlpbnQJCQlwYXJhbGxlbF93b3JrZXJzOwogCUJsb2NrTnVtYmVy IGhlYXBfYmxvY2tzOwogCWRvdWJsZQkJcmVsdHVwbGVzOwpAQCAtNjk1NCw2ICs2OTU2LDExIEBA IHBsYW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJ aGVhcCA9IHRhYmxlX29wZW4odGFibGVPaWQsIE5vTG9jayk7CiAJaW5kZXggPSBpbmRleF9vcGVu KGluZGV4T2lkLCBOb0xvY2spOwogCisJLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0 aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBpdCAqLworCWlmICghQWN0aXZlU25hcHNob3RT ZXQoKSkgeworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK KwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwl9CiAJLyoKIAkgKiBEZXRlcm1p bmUgaWYgaXQncyBzYWZlIHRvIHByb2NlZWQuCiAJICoKQEAgLTcwMTEsNiArNzAxOCw4IEBAIHBs YW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJCXBh cmFsbGVsX3dvcmtlcnMtLTsKIAogZG9uZToKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCWluZGV4X2Nsb3NlKGluZGV4LCBOb0xvY2spOwog CXRhYmxlX2Nsb3NlKGhlYXAsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBlNDhmZTQz NGNkMy4uNmNhYWQ0MmVhNGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQyLDYgKzQyLDggQEAKICNk ZWZpbmUgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUg SEVBUF9QQUdFX1BSVU5FX0ZSRUVaRQkJCQkoMSA8PCAxKQogCisjZGVmaW5lIFNPX1JFU0VUX1NO QVBTSE9UX0VBQ0hfTl9QQUdFCQk0MDk2CisKIHR5cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0 ZURhdGEgKkJ1bGtJbnNlcnRTdGF0ZTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKIHN0cnVjdCBW YWN1dW1DdXRvZmZzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggODcxM2UxMmNiZmIuLjhkZjZiYTli ODllIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL3JlYWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRp bHMvc25hcHNob3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogCiAj ZGVmaW5lIERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhPRAkiaGVhcCIKQEAgLTYyLDYgKzYzLDE3 IEBAIHR5cGVkZWYgZW51bSBTY2FuT3B0aW9ucwogCiAJLyogdW5yZWdpc3RlciBzbmFwc2hvdCBh dCBzY2FuIGVuZD8gKi8KIAlTT19URU1QX1NOQVBTSE9UID0gMSA8PCA5LAorCS8qCisJICogUmVz ZXQgc2NhbiBhbmQgY2F0YWxvZyBzbmFwc2hvdCBldmVyeSBzbyBvZnRlbj8gSWYgc28sIGVhY2gK KwkgKiBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdlcyBhY3RpdmUgc25hcHNob3Qg aXMgcG9wcGVkLAorCSAqIGNhdGFsb2cgc25hcHNob3QgaW52YWxpZGF0ZWQsIGxhdGVzdCBzbmFw c2hvdCBwdXNoZWQgYXMgYWN0aXZlLgorCSAqCisJICogQXQgdGhlIGVuZCBvZiB0aGUgc2NhbiBz bmFwc2hvdCBpcyBub3QgcG9wcGVkLgorCSAqIEdvYWwgb2Ygc3VjaCBtb2RlIGlzIGtlZXAgeG1p biBwcm9wYWdhdGluZyBob3Jpem9uIGZvcndhcmQuCisJICoKKwkgKiBzZWUgaGVhcF9yZXNldF9z Y2FuX3NuYXBzaG90IGZvciBkZXRhaWxzLgorCSAqLworCVNPX1JFU0VUX1NOQVBTSE9UID0gMSA8 PCAxMCwKIH0JCQlTY2FuT3B0aW9uczsKIAogLyoKQEAgLTg5Myw3ICs5MDUsOCBAQCBleHRlcm4g VGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fY2F0YWxvZyhSZWxhdGlvbiByZWxhdGlvbiwg aW50IG5rZXlzLAogc3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCiB0YWJsZV9iZWdpbnNjYW5f c3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJICBpbnQgbmtleXMs IHN0cnVjdCBTY2FuS2V5RGF0YSAqa2V5LAotCQkJCQkgIGJvb2wgYWxsb3dfc3RyYXQsIGJvb2wg YWxsb3dfc3luYykKKwkJCQkJICBib29sIGFsbG93X3N0cmF0LCBib29sIGFsbG93X3N5bmMsCisJ CQkJCSAgYm9vbCByZXNldF9zbmFwc2hvdCkKIHsKIAl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9T RVFTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKQEAgLTkwMSw2ICs5MTQsMTUgQEAgdGFibGVf YmVnaW5zY2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCiAJCWZsYWdz IHw9IFNPX0FMTE9XX1NUUkFUOwogCWlmIChhbGxvd19zeW5jKQogCQlmbGFncyB8PSBTT19BTExP V19TWU5DOworCWlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCUlOSkVDVElPTl9QT0lOVCgidGFi bGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cyIsIE5VTEwpOworCQkvKiBBY3RpdmUg c25hcHNob3QgaXMgcmVxdWlyZWQgb24gc3RhcnQuICovCisJCUFzc2VydChHZXRBY3RpdmVTbmFw c2hvdCgpID09IHNuYXBzaG90KTsKKwkJLyogQWN0aXZlIHNuYXBzaG90IHNob3VsZCBub3QgYmUg cmVnaXN0ZXJlZCB0byBrZWVwIHhtaW4gcHJvcGFnYXRpbmcuICovCisJCUFzc2VydChHZXRBY3Rp dmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCQlmbGFncyB8PSAoU09fUkVTRVRfU05B UFNIT1QpOworCX0KIAogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBz bmFwc2hvdCwgbmtleXMsIGtleSwgTlVMTCwgZmxhZ3MpOwogfQpAQCAtMTczMCw2ICsxNzUyLDEw IEBAIHRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwgVHJh bnNhY3Rpb25JZCBPbGRlc3RYbWluLAogICogdmVyeSBoYXJkIHRvIGRldGVjdCB3aGV0aGVyIHRo ZXkncmUgcmVhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBjaGFpbiB0aXAuCiAgKiBUaGlzIG9u bHkgcmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVkIHRvIGJlIGdl bmVyYWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgorICoKKyAqIEluIGNhc2Ugb2Ygbm9u LXVuaXF1ZSBpbmRleCBhbmQgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgYnVpbGQKKyAqIFNPX1JF U0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLiBUaGF0IGxlYWRzIGZvciBjaGFu Z2luZyBzbmFwc2hvdHMKKyAqIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3Bh Z2F0ZS4KICAqLwogc3RhdGljIGlubGluZSBkb3VibGUKIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4o UmVsYXRpb24gdGFibGVfcmVsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01h a2VmaWxlCmluZGV4IGU2ODA5OTFmOGQ0Li4xOWQyNjQwOGMyYSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQpAQCAtMTEsNyArMTEsNyBAQCBFWFRFTlNJT04g PSBpbmplY3Rpb25fcG9pbnRzCiBEQVRBID0gaW5qZWN0aW9uX3BvaW50cy0tMS4wLnNxbAogUEdG SUxFREVTQyA9ICJpbmplY3Rpb25fcG9pbnRzIC0gZmFjaWxpdHkgZm9yIGluamVjdGlvbiBwb2lu dHMiCiAKLVJFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jCitS RUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIHJlaW5kZXhfY29uYyBjaWNfcmVzZXRf c25hcHNob3RzCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikvc3JjL3Rl c3QvcmVncmVzcwogCiBJU09MQVRJT04gPSBiYXNpYyBpbnBsYWNlIHN5c2NhY2hlLXVwZGF0ZS1w cnVuZWQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBl Y3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTQ4ZDEyMzJhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBz aG90cy5vdXQKQEAgLTAsMCArMSwxMDUgQEAKK0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3Bv aW50czsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOworIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdu b3RpY2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFU RSBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lO U0VSVCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMjAwKSBzKGkpOworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnBy ZWRpY2F0ZV9zdGFibGUoaW50ZWdlcikgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJ ICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlk X2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIE1PRCgkMSwgMikgPSAwOworRU5EOyAkJDsKK0NSRUFU RSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkgUkVU VVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitC RUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIGZh bHNlOworRU5EOyAkJDsKKy0tLS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9z bmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7CitDUkVBVEUgVU5JUVVFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3Rp dmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGop IFdIRVJFIE1PRChpLCAyKSA9IDA7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9z bmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVj dGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJF IGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0o KTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9i ZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0 cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQorQUxURVIg VEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKK0NSRUFU RSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOworUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0 ZV9zdGFibGUoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9l ZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNl dF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0RST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2Nh ZGVzIHRvIDMgb3RoZXIgb2JqZWN0cworREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBj aWNfcmVzZXRfc25hcC50YmwKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gY2ljX3Jlc2V0X3Nu YXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBj aWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkKK0RST1AgRVhURU5TSU9O IGluamVjdGlvbl9wb2ludHM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv bWVzb24uYnVpbGQKaW5kZXggZDYxMTQ5NzEyZmQuLjg0NzZiZmU3MmE3IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCkBAIC0zNyw2ICszNyw3IEBA IHRlc3RzICs9IHsKICAgICAgICdpbmplY3Rpb25fcG9pbnRzJywKICAgICAgICdoYXNoYWdnJywK ICAgICAgICdyZWluZGV4X2NvbmMnLAorICAgICAgJ2NpY19yZXNldF9zbmFwc2hvdHMnLAogICAg IF0sCiAgICAgJ3JlZ3Jlc3NfYXJncyc6IFsnLS1kbHBhdGgnLCBtZXNvbi5idWlsZF9yb290KCkg LyAnc3JjL3Rlc3QvcmVncmVzcyddLAogICAgICMgVGhlIGluamVjdGlvbiBwb2ludHMgYXJlIGNs dXN0ZXItd2lkZSwgc28gZGlzYWJsZSBpbnN0YWxsY2hlY2sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgYi9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MDcyNTM1YjM1NQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwv Y2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTAsMCArMSw4NiBAQAorQ1JFQVRFIEVYVEVOU0lP TiBpbmplY3Rpb25fcG9pbnRzOworCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwo KTsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZScsICdub3RpY2UnKTsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnKTsKKwor CitDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOworQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9z bmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOworSU5TRVJUIElOVE8gY2ljX3Jlc2V0 X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMo aSk7CisKK0NSRUFURSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGlu dGVnZXIpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3Nx bCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAg IFJFVFVSTiBNT0QoJDEsIDIpID0gMDsKK0VORDsgJCQ7CisKK0NSRUFURSBGVU5DVElPTiBjaWNf cmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkgUkVUVVJOUyBib29sIElNTVVU QUJMRQorCQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNV VEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIGZhbHNlOworRU5EOyAkJDsK KworLS0tLS0tLS0tLS0tLS0tLQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAo cGFyYWxsZWxfd29ya2Vycz0wKTsKKworQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkg aWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBq KSBXSEVSRSBNT0QoaSwgMikgPSAwOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK1JFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRp Y2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs IFVTSU5HIEJSSU4oaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKKy0t IFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRi bCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKwor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChp LCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25h cC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibCBVU0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor CitEUk9QIFNDSEVNQSBjaWNfcmVzZXRfc25hcCBDQVNDQURFOworCitEUk9QIEVYVEVOU0lPTiBp bmplY3Rpb25fcG9pbnRzOwotLSAKMi40My4wCgo= --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0004-Support-snapshot-resets-in-parallel-concurrent-i.patch" Content-Disposition: attachment; filename="v20-0004-Support-snapshot-resets-in-parallel-concurrent-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9oh013 RnJvbSBkODViMjM1ZTg5MTcwNjJkZDJkNjJhMDA4MDAzYjg5ZWQwMzU5MTdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxIEphbiAyMDI1IDE1OjI1OjIwICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MjAgMDQvMTJdIFN1cHBvcnQgc25hcHNob3QgcmVzZXRzIGluIHBhcmFsbGVsIGNvbmN1 cnJlbnQKIGluZGV4IGJ1aWxkcwoKRXh0ZW5kIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0IHN1cHBv cnQgdG8gcGFyYWxsZWwgYnVpbGRzLCBwcmV2aW91c2x5IGxpbWl0ZWQgdG8gbm9uLXBhcmFsbGVs IG9wZXJhdGlvbnMuIFRoaXMgYWxsb3dzIHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZSBkdXJp bmcgcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMgYXMgd2VsbC4KClRoZSBtYWluIGxp bWl0YXRpb24gb2YgYXBwbHlpbmcgdGhhdCB0ZWNobmljIHRvIHBhcmFsbGVsIGJ1aWxkcyB3YXMg YSByZXF1aXJlbWVudCB0byB3YWl0IHVudGlsIHdvcmtlcnMgcHJvY2Vzc2VzIHJlc3RvcmUgdGhl aXIgaW5pdGlhbCBzbmFwc2hvdCBmcm9tIGxlYWRlci4KClRvIGFkZHJlc3MgdGhpcywgZm9sbG93 aW5nIGNoYW5nZXMgYXBwbGllZDoKLSBhZGQgaW5mcmFzdHJ1Y3R1cmUgdG8gdHJhY2sgc25hcHNo b3QgcmVzdG9yYXRpb24gaW4gcGFyYWxsZWwgd29ya2VycwotIGV4dGVuZCBwYXJhbGxlbCBzY2Fu IGluaXRpYWxpemF0aW9uIHRvIHN1cHBvcnQgcGVyaW9kaWMgc25hcHNob3QgcmVzZXRzCi0gd2Fp dCBmb3IgcGFyYWxsZWwgd29ya2VycyB0byByZXN0b3JlIHRoZWlyIGluaXRpYWwgc25hcHNob3Rz IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggc2NhbgotIHJlbGF4IGxpbWl0YXRpb24gZm9yIHBhcmFs bGVsIHdvcmtlciB0byBjYWxsIEdldExhdGVzdFNuYXBzaG90Ci0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgNTAgKysrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgNTAgKysrKysrKysr LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg MTIgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwg NTcgKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YyAgICAgICAgICAgIHwgMzcgKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jICAgICAgICAgfCA1MCArKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L3RpbWUvc25hcG1nci5jICAgICAgICAgICAgICB8ICA4IC0tLQogc3JjL2luY2x1ZGUvYWNjZXNz L3BhcmFsbGVsLmggICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9y ZWxzY2FuLmggICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJs ZWFtLmggICAgICAgICAgICAgICAgICB8ICA5ICstLQogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9z bmFwc2hvdHMub3V0ICAgICAgICAgIHwgMjUgKysrKysrKy0KIC4uLi9zcWwvY2ljX3Jlc2V0X3Nu YXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICA3ICsrLQogMTQgZmlsZXMgY2hhbmdlZCwgMjI1 IGluc2VydGlvbnMoKyksIDg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRl eCBlNWE5NDVhMWIxNC4uNDIzNDI0ZTUxYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTE0 Myw3ICsxNDMsNiBAQCB0eXBlZGVmIHN0cnVjdCBCcmluTGVhZGVyCiAJICovCiAJQnJpblNoYXJl ZCAqYnJpbnNoYXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwotCVNuYXBzaG90CXNuYXBz aG90OwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsK IH0gQnJpbkxlYWRlcjsKQEAgLTIzMSw3ICsyMzAsNyBAQCBzdGF0aWMgdm9pZCBicmluX2ZpbGxf ZW1wdHlfcmFuZ2VzKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIHN0YXRpYyB2b2lkIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAkJCQkJCQkJIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCk7 CiBzdGF0aWMgdm9pZCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwg QnJpbkJ1aWxkU3RhdGUgKnN0YXRlKTsKLXN0YXRpYyBTaXplIF9icmluX3BhcmFsbGVsX2VzdGlt YXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitzdGF0aWMgU2l6 ZSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCk7CiBzdGF0aWMg ZG91YmxlIF9icmluX3BhcmFsbGVsX2hlYXBzY2FuKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBz dGF0aWMgZG91YmxlIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7 CiBzdGF0aWMgdm9pZCBfYnJpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEJyaW5CdWls ZFN0YXRlICpidWlsZHN0YXRlLApAQCAtMTIyMSw3ICsxMjIwLDYgQEAgYnJpbmJ1aWxkKFJlbGF0 aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJcmVsdHVw bGVzID0gX2JyaW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9icmluX2VuZF9wYXJhbGxl bChzdGF0ZS0+YnNfbGVhZGVyLCBzdGF0ZSk7Ci0JCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAJZWxz ZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtMTI1NCw3ICsxMjUy LDYgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhzdGF0ZSwKIAkJCQkJCQkgICBz dGF0ZS0+YnNfY3VyclJhbmdlU3RhcnQsCiAJCQkJCQkJICAgc3RhdGUtPmJzX21heFJhbmdlU3Rh cnQpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25J ZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJLyogcmVsZWFzZSByZXNvdXJjZXMgKi8K QEAgLTEyNjksNiArMTI2Niw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVs dHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gaWR4dHVwbGVzOworCUFzc2VydCghaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhp ZCkpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIzNjgsNyArMjM2Niw2IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIHsKIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAJaW50CQkJc2NhbnR1 cGxlc29ydHN0YXRlczsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlTaXplCQllc3Ricmluc2hhcmVk OwogCVNpemUJCWVzdHNvcnQ7CiAJQnJpblNoYXJlZCAqYnJpbnNoYXJlZDsKQEAgLTIzOTksMjUg KzIzOTYsMjUgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIFByZXBhcmUgZm9yIHNjYW4g b2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJ ICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRv IG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXgg UkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQotCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRh a2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZl IGFjY29yZGluZyB0byB0aGF0LgorCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1 bGFyIE1WQ0Mgc25hcHNob3QgYW5kIHB1c2ggaXQgYXMgYWN0aXZlLgorCSAqIExhdGVyIHdlIGlu ZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCBzbmFwc2hvdCB3aGlsZSB0aGF0 CisJICogc25hcHNob3QgaXMgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25j dXJyZW50KQogCXsKIAkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwotCQlzbmFwc2hvdCA9 IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJ ZWxzZQogCXsKLQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CisJCUFzc2VydCghQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCX0KIAogCS8qCiAJICogRXN0aW1h dGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlJJTl9TSEFSRUQgd29ya3NwYWNlLgog CSAqLwotCWVzdGJyaW5zaGFyZWQgPSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoaGVh cCwgc25hcHNob3QpOworCWVzdGJyaW5zaGFyZWQgPSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9z aGFyZWQoaGVhcCk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBl c3Ricmluc2hhcmVkKTsKIAllc3Rzb3J0ID0gdHVwbGVzb3J0X2VzdGltYXRlX3NoYXJlZChzY2Fu dHVwbGVzb3J0c3RhdGVzKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0 b3IsIGVzdHNvcnQpOwpAQCAtMjQ1Nyw4ICsyNDU0LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwo QnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LAogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBvcEFjdGl2ZVNuYXBz aG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCi0JCQlVbnJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0 UGFyYWxsZWxNb2RlKCk7CiAJCXJldHVybjsKQEAgLTI0ODMsNyArMjQ3OCw4IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGhlYXAsCiAJ CQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSwKLQkJ CQkJCQkJICBzbmFwc2hvdCk7CisJCQkJCQkJCSAgaXNjb25jdXJyZW50ID8gSW52YWxpZFNuYXBz aG90IDogU25hcHNob3RBbnksCisJCQkJCQkJCSAgaXNjb25jdXJyZW50KTsKIAogCS8qCiAJICog U3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2 ZWQgc3BhY2UuCkBAIC0yNTI5LDcgKzI1MjUsNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmlu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ CWJyaW5sZWFkZXItPm5wYXJ0aWNpcGFudHR1cGxlc29ydHMrKzsKIAlicmlubGVhZGVyLT5icmlu c2hhcmVkID0gYnJpbnNoYXJlZDsKIAlicmlubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29y dDsKLQlicmlubGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwogCWJyaW5sZWFkZXItPndhbHVz YWdlID0gd2FsdXNhZ2U7CiAJYnJpbmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsK IApAQCAtMjU0NSw2ICsyNTQwLDEzIEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0 YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBTYXZl IGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdpbGwgYmUgcGFyYWxsZWwg Ki8KIAlidWlsZHN0YXRlLT5ic19sZWFkZXIgPSBicmlubGVhZGVyOwogCisJLyoKKwkgKiBJbiBj YXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBnb2luZyB0byBiZSByZXNldCBw ZXJpb2RpY2FsbHkuCisJICogV2UgbmVlZCB0byB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9y dGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJaWYgKGlzY29uY3VycmVudCkKKwkJV2FpdEZv clBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNj YW4gb3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2JyaW5fbGVhZGVy X3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0YXRlLCBoZWFwLCBpbmRleCk7CkBAIC0yNTUz LDcgKzI1NTUsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRv IHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAq IHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZl ci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFp c2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxz ZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3Qo KTsKIH0KQEAgLTI1NzYsOSArMjU3OSw2IEBAIF9icmluX2VuZF9wYXJhbGxlbChCcmluTGVhZGVy ICpicmlubGVhZGVyLCBCcmluQnVpbGRTdGF0ZSAqc3RhdGUpCiAJZm9yIChpID0gMDsgaSA8IGJy aW5sZWFkZXItPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCiAJCUluc3RyQWNjdW1QYXJh bGxlbFF1ZXJ5KCZicmlubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJyaW5sZWFkZXItPndhbHVz YWdlW2ldKTsKIAotCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hvdCwgaWYg b25lIHdhcyB1c2VkICovCi0JaWYgKElzTVZDQ1NuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90 KSkKLQkJVW5yZWdpc3RlclNuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95 UGFyYWxsZWxDb250ZXh0KGJyaW5sZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsK IH0KQEAgLTI3NzgsMTQgKzI3NzgsMTQgQEAgX2JyaW5fcGFyYWxsZWxfbWVyZ2UoQnJpbkJ1aWxk U3RhdGUgKnN0YXRlKQogCiAvKgogICogUmV0dXJucyBzaXplIG9mIHNoYXJlZCBtZW1vcnkgcmVx dWlyZWQgdG8gc3RvcmUgc3RhdGUgZm9yIGEgcGFyYWxsZWwKLSAqIGJyaW4gaW5kZXggYnVpbGQg YmFzZWQgb24gdGhlIHNuYXBzaG90IGl0cyBwYXJhbGxlbCBzY2FuIHdpbGwgdXNlLgorICogYnJp biBpbmRleCBidWlsZC4KICAqLwogc3RhdGljIFNpemUKLV9icmluX3BhcmFsbGVsX2VzdGltYXRl X3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCkKK19icmluX3BhcmFsbGVs X2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwKQogewogCS8qIGMuZi4gc2htX3RvY19hbGxv Y2F0ZSBhcyB0byB3aHkgQlVGRkVSQUxJR04gaXMgdXNlZCAqLwogCXJldHVybiBhZGRfc2l6ZShC VUZGRVJBTElHTihzaXplb2YoQnJpblNoYXJlZCkpLAotCQkJCQl0YWJsZV9wYXJhbGxlbHNjYW5f ZXN0aW1hdGUoaGVhcCwgc25hcHNob3QpKTsKKwkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGlt YXRlKGhlYXAsIEludmFsaWRTbmFwc2hvdCkpOwogfQogCiAvKgpAQCAtMjgwNyw2ICsyODA3LDcg QEAgX2JyaW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihCcmluQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmUKIAkvKiBQZXJmb3JtIHdvcmsgY29tbW9uIHRvIGFs bCBwYXJ0aWNpcGFudHMgKi8KIAlfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChidWlsZHN0 YXRlLCBicmlubGVhZGVyLT5icmluc2hhcmVkLAogCQkJCQkJCQkgIGJyaW5sZWFkZXItPnNoYXJl ZHNvcnQsIGhlYXAsIGluZGV4LCBzb3J0bWVtLCB0cnVlKTsKKwlBc3NlcnQoIWJyaW5sZWFkZXIt PmJyaW5zaGFyZWQtPmlzY29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54aWQpKTsKIH0KIAogLyoKQEAgLTI5NDcsNiArMjk0OCwxMyBAQCBfYnJpbl9wYXJhbGxlbF9i dWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCV9icmluX3BhcmFs bGVsX3NjYW5fYW5kX2J1aWxkKGJ1aWxkc3RhdGUsIGJyaW5zaGFyZWQsIHNoYXJlZHNvcnQsCiAJ CQkJCQkJCSAgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZhbHNlKTsKKwlpZiAoYnJpbnNo YXJlZC0+aXNjb25jdXJyZW50KQorCXsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eGlkKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCX0KIAogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBl eGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf S0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5k ZXggNGNlYTE2MTJjZTYuLjYyOWY2ZDVmMmMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0 LmMKQEAgLTEzMiw3ICsxMzIsNiBAQCB0eXBlZGVmIHN0cnVjdCBHaW5MZWFkZXIKIAkgKi8KIAlH aW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7Ci0JU25h cHNob3QJc25hcHNob3Q7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1 ZmZlcnVzYWdlOwogfSBHaW5MZWFkZXI7CkBAIC0xODAsNyArMTc5LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QKIHN0YXRpYyB2b2lkIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCWJvb2wgaXNjb25j dXJyZW50LCBpbnQgcmVxdWVzdCk7CiBzdGF0aWMgdm9pZCBfZ2luX2VuZF9wYXJhbGxlbChHaW5M ZWFkZXIgKmdpbmxlYWRlciwgR2luQnVpbGRTdGF0ZSAqc3RhdGUpOwotc3RhdGljIFNpemUgX2dp bl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNo b3QpOworc3RhdGljIFNpemUgX2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24g aGVhcCk7CiBzdGF0aWMgZG91YmxlIF9naW5fcGFyYWxsZWxfaGVhcHNjYW4oR2luQnVpbGRTdGF0 ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfZ2luX3BhcmFsbGVsX21lcmdlKEdpbkJ1aWxkU3Rh dGUgKnN0YXRlKTsKIHN0YXRpYyB2b2lkIF9naW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtl cihHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLApAQCAtNzE3LDcgKzcxNiw2IEBAIGdpbmJ1aWxk KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJ cmVsdHVwbGVzID0gX2dpbl9wYXJhbGxlbF9tZXJnZShzdGF0ZSk7CiAKIAkJX2dpbl9lbmRfcGFy YWxsZWwoc3RhdGUtPmJzX2xlYWRlciwgc3RhdGUpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlf Q29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQog CWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTc0MSw3ICs3 MzksNiBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZv ICppbmRleEluZm8pCiAJCQkJCQkgICBsaXN0LCBubGlzdCwgJmJ1aWxkc3RhdGUuYnVpbGRTdGF0 cyk7CiAJCX0KIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7Ci0JCUFzc2VydCghaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAl9CiAKIAlNZW1vcnlDb250ZXh0RGVsZXRlKGJ1aWxkc3RhdGUuZnVuY0N0eCk7CkBA IC03NzEsNiArNzY4LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxl czsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFzc2Vy dCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC05MDUsNyArOTAzLDYgQEAgX2dp bl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIHsKIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAJaW50CQkJc2Nh bnR1cGxlc29ydHN0YXRlczsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlTaXplCQllc3RnaW5zaGFy ZWQ7CiAJU2l6ZQkJZXN0c29ydDsKIAlHaW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwpAQCAtOTM1 LDI1ICs5MzIsMjUgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0 YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBzY2Fu IG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQog CSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBk byBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4 IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0 YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2 ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVn dWxhciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBp bmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhh dAorCSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlzY29u Y3VycmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNob3Qg PSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJfQog CWVsc2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNu YXBzaG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0aXZl U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVzdGlt YXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQgd29ya3NwYWNlLgog CSAqLwotCWVzdGdpbnNoYXJlZCA9IF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAs IHNuYXBzaG90KTsKKwllc3RnaW5zaGFyZWQgPSBfZ2luX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJl ZChoZWFwKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdGdp bnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1cGxl c29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBl c3Rzb3J0KTsKQEAgLTk5Myw4ICs5OTAsNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCXsKIAkJ aWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0J CWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCi0JCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxN b2RlKCk7CiAJCXJldHVybjsKQEAgLTEwMTgsNyArMTAxMyw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJCQkJCQkgIFBh cmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCksCi0JCQkJCQkJCSAg c25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCA/IEludmFsaWRTbmFwc2hvdCA6IFNu YXBzaG90QW55LAorCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNo YXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNl LgpAQCAtMTA2MCw3ICsxMDU2LDYgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJZ2lubGVhZGVy LT5ucGFydGljaXBhbnR0dXBsZXNvcnRzKys7CiAJZ2lubGVhZGVyLT5naW5zaGFyZWQgPSBnaW5z aGFyZWQ7CiAJZ2lubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKLQlnaW5sZWFkZXIt PnNuYXBzaG90ID0gc25hcHNob3Q7CiAJZ2lubGVhZGVyLT53YWx1c2FnZSA9IHdhbHVzYWdlOwog CWdpbmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsKIApAQCAtMTA3Niw2ICsxMDcx LDEzIEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRo YXQgaXQncyBjbGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnNf bGVhZGVyID0gZ2lubGVhZGVyOwogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVp bGQgc25hcHNob3RzIGFyZSBnb2luZyB0byBiZSByZXNldCBwZXJpb2RpY2FsbHkuCisJICogV2Ug bmVlZCB0byB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3Qu CisJICovCisJaWYgKGlzY29uY3VycmVudCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0 YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNjYW4gb3Vyc2VsdmVzICovCiAJaWYg KGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2Vy KGJ1aWxkc3RhdGUsIGhlYXAsIGluZGV4KTsKQEAgLTEwODQsNyArMTA4Niw4IEBAIF9naW5fYmVn aW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3 b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10 by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxs ZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQ YXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0KQEAgLTExMDcsOSArMTExMCw2 IEBAIF9naW5fZW5kX3BhcmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVyLCBHaW5CdWlsZFN0YXRl ICpzdGF0ZSkKIAlmb3IgKGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVu Y2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVhZGVyLT5idWZmZXJ1 c2FnZVtpXSwgJmdpbmxlYWRlci0+d2FsdXNhZ2VbaV0pOwogCi0JLyogRnJlZSBsYXN0IHJlZmVy ZW5jZSB0byBNVkNDIHNuYXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25h cHNob3QoZ2lubGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0ZXJTbmFwc2hvdChnaW5sZWFk ZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGdpbmxlYWRlci0+cGN4dCk7 CiAJRXhpdFBhcmFsbGVsTW9kZSgpOwogfQpAQCAtMTc5MCwxNCArMTc5MCwxNCBAQCBfZ2luX3Bh cmFsbGVsX21lcmdlKEdpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCiAvKgogICogUmV0dXJucyBzaXpl IG9mIHNoYXJlZCBtZW1vcnkgcmVxdWlyZWQgdG8gc3RvcmUgc3RhdGUgZm9yIGEgcGFyYWxsZWwK LSAqIGdpbiBpbmRleCBidWlsZCBiYXNlZCBvbiB0aGUgc25hcHNob3QgaXRzIHBhcmFsbGVsIHNj YW4gd2lsbCB1c2UuCisgKiBnaW4gaW5kZXggYnVpbGQuCiAgKi8KIHN0YXRpYyBTaXplCi1fZ2lu X3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hv dCkKK19naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXApCiB7CiAJLyog Yy5mLiBzaG1fdG9jX2FsbG9jYXRlIGFzIHRvIHdoeSBCVUZGRVJBTElHTiBpcyB1c2VkICovCiAJ cmV0dXJuIGFkZF9zaXplKEJVRkZFUkFMSUdOKHNpemVvZihHaW5CdWlsZFNoYXJlZCkpLAotCQkJ CQl0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoaGVhcCwgc25hcHNob3QpKTsKKwkJCQkJdGFi bGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIEludmFsaWRTbmFwc2hvdCkpOwogfQogCiAv KgpAQCAtMTgyMCw2ICsxODIwLDcgQEAgX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2Vy KEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGEKIAlfZ2luX3Bh cmFsbGVsX3NjYW5fYW5kX2J1aWxkKGJ1aWxkc3RhdGUsIGdpbmxlYWRlci0+Z2luc2hhcmVkLAog CQkJCQkJCQkgZ2lubGVhZGVyLT5zaGFyZWRzb3J0LCBoZWFwLCBpbmRleCwKIAkJCQkJCQkJIHNv cnRtZW0sIHRydWUpOworCUFzc2VydCghZ2lubGVhZGVyLT5naW5zaGFyZWQtPmlzY29uY3VycmVu dCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIH0KIAogLyoKQEAgLTIx NzksNiArMjE4MCwxMyBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCiAJX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZCgmYnVpbGRz dGF0ZSwgZ2luc2hhcmVkLCBzaGFyZWRzb3J0LAogCQkJCQkJCQkgaGVhcFJlbCwgaW5kZXhSZWws IHNvcnRtZW0sIGZhbHNlKTsKKwlpZiAoZ2luc2hhcmVkLT5pc2NvbmN1cnJlbnQpCisJeworCQlQ b3BBY3RpdmVTbmFwc2hvdCgpOworCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJCUFz c2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKKwkJUHVzaEFjdGl2ZVNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCiAJLyogUmVwb3J0IFdBTC9i dWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA4YTU4NGRiNTk1YS4u NzI3M2IxYWVlMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpA QCAtMTIzNSwxNCArMTIzNSwxMyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJp ZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNh dXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiBJbiBhCiAJICogY29u Y3VycmVudCBidWlsZCwgb3IgZHVyaW5nIGJvb3RzdHJhcCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZD QyBzbmFwc2hvdAotCSAqIGFuZCBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRo YXQuCisJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGls ZSB0aGF0IHNuYXBzaG90IGlzIHJlc2V0CisJICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Yg bm9uLXVuaXF1ZSBpbmRleCkuCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2FjdGlv bklkOwogCiAJLyoKIAkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBzbmFw c2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCi0JICogSW4gY2FzZSBvZiBwYXJhbGxlbCBzY2FuIHNv bWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1aXJlZAotCSAqIHRvIHBlcmZvcm0gc2Nh biB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlzIG5vdCB5ZXQgcmVhZHkuCiAJICovCiAJ cmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCiAJCQkJCSAgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmCkBAIC0xMzA0LDggKzEzMDMsMTEgQEAgaGVhcGFtX2luZGV4 X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlBc3NlcnQoIUlzQm9v dHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2VydChhbGxvd19zeW5jKTsKIAkJc25hcHNo b3QgPSBzY2FuLT5yc19zbmFwc2hvdDsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsK LQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwkJaWYgKCFyZXNldF9zbmFwc2hv dHMpCisJCXsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJCQluZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QgPSB0cnVlOworCQl9CiAJfQogCiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNj KSBzY2FuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCBmMzk4NmQwODZiNi4u MmY0NWFlOTZjMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0zMjEsMjIg KzMyMSwyMCBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJ cmVsdHVwbGVzID0gX2J0X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUs IGluZGV4SW5mbyk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGlu ZGV4SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8t PmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2ggdGhlIGJ1aWxkIGJ5ICgx KSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAoMikKIAkgKiBpbnNlcnRp bmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQgKDMpIGJ1aWxkaW5nIHRo ZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNvIGJlIG5lY2Vzc2FyeSB0 byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0 ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2Vy cyAmJiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOworCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0 ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1VuaXF1ZSAmJiBpbmRl eEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9v bCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bvb2wyKQogCQlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3Rh dGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRzdGF0ZS5idGxlYWRlcikKIAkJX2J0X2VuZF9wYXJhbGxl bChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKLQlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdv cmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKLQkJICAhaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQo IWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXN1bHQgPSAoSW5kZXhCdWls ZFJlc3VsdCAqKSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKIApAQCAtNDg1LDgg KzQ4Myw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVs X2hlYXBzY2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5I b3RDaGFpbik7CiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydChpbmRleElu Zm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAotCQkgICFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+ aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q CiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQg dGhlIGJsb2NrIG51bWJlcgpAQCAtMTQyMCw2ICsxNDE3LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVs KEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0 KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMg PSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJYm9vbAkJ cmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURF Ul9QQVJUSUNJUEFUSU9OCkBAIC0xNDM3LDEyICsxNDM1LDIxIEBAIF9idF9iZWdpbl9wYXJhbGxl bChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVz dCkKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0 ICsgMSA6IHJlcXVlc3Q7CiAKKyAgICAvKgorCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUg aW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cworCSAqIHRv IGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRo ZXNlIGJ1aWxkcyBkb24ndAorCSAqIHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRo ZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZAorCSAqIGEgc3RhYmxlIHNu YXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4KKyAgICAg Ki8KKwlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7 CisKIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBh IG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBt dXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hl Y2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4g YQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3Qg YW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgorCSAqIGxp dmUgYWNjb3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQgc25hcHNob3QgbWF5IGJlIHJlc2V0IHBl cmlvZGljYWxseSBpbgorCSAqIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleC4KIAkgKi8KIAlpZiAo IWlzY29uY3VycmVudCkKIAl7CkBAIC0xNDUwLDYgKzE0NTcsMTEgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QgPSBmYWxzZTsKIAl9CisJZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJeworCQlzbmFwc2hv dCA9IEludmFsaWRTbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CisJfQogCWVsc2UKIAl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwpAQCAtMTUxMCw3ICsxNTIyLDcgQEAgX2J0X2Jl Z2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQs IGludCByZXF1ZXN0KQogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBv cEFjdGl2ZVNuYXBzaG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJCWlm IChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNob3Qp KQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29u dGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwpAQCAtMTUzNyw3ICsxNTQ5LDggQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5icm9rZW5ob3RjaGFpbiA9IGZhbHNlOwog CXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGJ0c3Bvb2wtPmhlYXAsCiAJCQkJCQkJCSAg UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLAotCQkJCQkJCQkgIHNuYXBz aG90KTsKKwkJCQkJCQkJICBzbmFwc2hvdCwKKwkJCQkJCQkJICByZXNldF9zbmFwc2hvdCk7CiAK IAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNo IHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYxMyw2ICsxNjI2LDEzIEBAIF9idF9iZWdpbl9wYXJh bGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVx dWVzdCkKIAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdp bGwgYmUgcGFyYWxsZWwgKi8KIAlidWlsZHN0YXRlLT5idGxlYWRlciA9IGJ0bGVhZGVyOwogCisJ LyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBnb2luZyB0 byBiZSByZXNldCBwZXJpb2RpY2FsbHkuCisJICogV2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBv cnRlZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlmIChyZXNldF9zbmFwc2hvdCkKKwkJV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFw IHNjYW4gb3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2J0X2xlYWRl cl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSk7CkBAIC0xNjIxLDcgKzE2NDEsOCBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBs YXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUg ZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0 Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFyZXNldF9zbmFwc2hvdCkK KwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVl ZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQpAQCAtMTY0 NSw3ICsxNjY2LDcgQEAgX2J0X2VuZF9wYXJhbGxlbChCVExlYWRlciAqYnRsZWFkZXIpCiAJCUlu c3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZidGxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZidGxlYWRl ci0+d2FsdXNhZ2VbaV0pOwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNuYXBz aG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25hcHNob3QoYnRsZWFkZXItPnNu YXBzaG90KSkKKwlpZiAoYnRsZWFkZXItPnNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJ c01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQogCQlVbnJlZ2lzdGVyU25hcHNob3Qo YnRsZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGJ0bGVhZGVyLT5w Y3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xODk1LDYgKzE5MTYsNyBAQCBfYnRfcGFy YWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwK IAlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlOwogCUJUQnVpbGRTdGF0ZSBidWlsZHN0YXRlOwog CVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAJZG91 YmxlCQlyZWx0dXBsZXM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCkBAIC0xOTQ5LDExICsx OTcxLDE1IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJU U3Bvb2wgKmJ0c3Bvb2wyLAogCS8qIEpvaW4gcGFyYWxsZWwgc2NhbiAqLwogCWluZGV4SW5mbyA9 IEJ1aWxkSW5kZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJl bnQgPSBidHNoYXJlZC0+aXNjb25jdXJyZW50OwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFy YWxsZWwoYnRzcG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hh cmVkKGJ0c2hhcmVkKSk7CisJcHNjYW4gPSBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChi dHNoYXJlZCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5oZWFw LCBwc2Nhbik7CiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihidHNwb29sLT5o ZWFwLCBidHNwb29sLT5pbmRleCwgaW5kZXhJbmZvLAogCQkJCQkJCQkJICAgdHJ1ZSwgcHJvZ3Jl c3MsIF9idF9idWlsZF9jYWxsYmFjaywKIAkJCQkJCQkJCSAgICZidWlsZHN0YXRlLCBzY2FuKTsK KwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25h cHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJQXNzZXJ0KCFwc2Nhbi0+cGhzX3Jlc2V0 X3NuYXBzaG90IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q IEV4ZWN1dGUgdGhpcyB3b3JrZXIncyBwYXJ0IG9mIHRoZSBzb3J0ICovCiAJaWYgKHByb2dyZXNz KQpAQCAtMTk4OSw0ICsyMDE1LDcgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9v bCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJdHVwbGVzb3J0X2VuZChidHNwb29sLT5z b3J0c3RhdGUpOwogCWlmIChidHNwb29sMikKIAkJdHVwbGVzb3J0X2VuZChidHNwb29sMi0+c29y dHN0YXRlKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBz aG90KQorCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmluZGV4IGE1NmM1ZWNlYjE0Li42ZjA0YzM2NTk5 NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCkBAIC0xMzIsMTAgKzEzMiwxMCBAQCB0 YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hv dCkKIHsKIAlTaXplCQlzeiA9IDA7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQor CWlmIChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNo b3QpKQogCQlzeiA9IGFkZF9zaXplKHN6LCBFc3RpbWF0ZVNuYXBzaG90U3BhY2Uoc25hcHNob3Qp KTsKIAllbHNlCi0JCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSk7CisJCUFzc2VydChz bmFwc2hvdCA9PSBTbmFwc2hvdEFueSB8fCBzbmFwc2hvdCA9PSBJbnZhbGlkU25hcHNob3QpOwog CiAJc3ogPSBhZGRfc2l6ZShzeiwgcmVsLT5yZF90YWJsZWFtLT5wYXJhbGxlbHNjYW5fZXN0aW1h dGUocmVsKSk7CiAKQEAgLTE0NCwyMSArMTQ0LDM2IEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3Rp bWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogCiB2b2lkCiB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBw c2NhbiwKLQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90KQorCQkJCQkJCSAgU25hcHNob3Qgc25h cHNob3QsIGJvb2wgcmVzZXRfc25hcHNob3QpCiB7CiAJU2l6ZQkJc25hcHNob3Rfb2ZmID0gcmVs LT5yZF90YWJsZWFtLT5wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShyZWwsIHBzY2FuKTsKIAogCXBz Y2FuLT5waHNfc25hcHNob3Rfb2ZmID0gc25hcHNob3Rfb2ZmOwogCi0JaWYgKElzTVZDQ1NuYXBz aG90KHNuYXBzaG90KSkKKwkvKgorCSAqIEluaXRpYWxpemUgcGFyYWxsZWwgc2NhbiBkZXNjcmlw dGlvbi4gRm9yIG5vcm1hbCBzY2FucyB3aXRoIGEgcmVndWxhcgorCSAqIE1WQ0Mgc25hcHNob3Qs IHNlcmlhbGl6ZSB0aGUgc25hcHNob3QgaW5mby4gRm9yIHNjYW5zIHRoYXQgdXNlIHBlcmlvZGlj CisJICogc25hcHNob3QgcmVzZXRzLCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5LgorCSAqLwor CWlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCUFzc2VydChzbmFwc2hvdCA9PSBJbnZhbGlkU25h cHNob3QpOworCQlwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSA9IGZhbHNlOworCQlwc2Nhbi0+cGhz X3Jlc2V0X3NuYXBzaG90ID0gdHJ1ZTsKKwkJSU5KRUNUSU9OX1BPSU5UKCJ0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZSIsIE5VTEwpOworCX0KKwllbHNlIGlmIChJc01WQ0NTbmFwc2hvdChz bmFwc2hvdCkpCiAJewogCQlTZXJpYWxpemVTbmFwc2hvdChzbmFwc2hvdCwgKGNoYXIgKikgcHNj YW4gKyBwc2Nhbi0+cGhzX3NuYXBzaG90X29mZik7CiAJCXBzY2FuLT5waHNfc25hcHNob3RfYW55 ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJZWxz ZQogCXsKIAkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KCFyZXNl dF9zbmFwc2hvdCk7CiAJCXBzY2FuLT5waHNfc25hcHNob3RfYW55ID0gdHJ1ZTsKKwkJcHNjYW4t PnBoc19yZXNldF9zbmFwc2hvdCA9IGZhbHNlOwogCX0KIH0KIApAQCAtMTcxLDcgKzE4NiwxOSBA QCB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFi bGVTY2FuRGVzYyBwc2NhbikKIAogCUFzc2VydChSZWxGaWxlTG9jYXRvckVxdWFscyhyZWxhdGlv bi0+cmRfbG9jYXRvciwgcHNjYW4tPnBoc19sb2NhdG9yKSk7CiAKLQlpZiAoIXBzY2FuLT5waHNf c25hcHNob3RfYW55KQorCS8qCisJICogRm9yIHNjYW5zIHRoYXQKKwkgKiB1c2UgcGVyaW9kaWMg c25hcHNob3QgcmVzZXRzLCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5IGFuZCB1c2UgdGhlIGFj dGl2ZQorCSAqIHNuYXBzaG90IGFzIHRoZSBpbml0aWFsIHN0YXRlLgorCSAqLworCWlmIChwc2Nh bi0+cGhzX3Jlc2V0X3NuYXBzaG90KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkp OworCQlmbGFncyB8PSBTT19SRVNFVF9TTkFQU0hPVDsKKwkJLyogU3RhcnQgd2l0aCBjdXJyZW50 IGFjdGl2ZSBzbmFwc2hvdC4gKi8KKwkJc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwor CX0KKwllbHNlIGlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCiAJewogCQkvKiBTbmFwc2hv dCB3YXMgc2VyaWFsaXplZCAtLSByZXN0b3JlIGl0ICovCiAJCXNuYXBzaG90ID0gUmVzdG9yZVNu YXBzaG90KChjaGFyICopIHBzY2FuICsgcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggOTRkYjFlYzMwMTIuLjA2NWVhOWQyNmY2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTc3LDYgKzc3LDcgQEAK ICNkZWZpbmUgUEFSQUxMRUxfS0VZX1JFTE1BUFBFUl9TVEFURQkJVUlOVDY0Q09OU1QoMHhGRkZG RkZGRkZGRkYwMDBEKQogI2RlZmluZSBQQVJBTExFTF9LRVlfVU5DT01NSVRURURFTlVNUwkJVUlO VDY0Q09OU1QoMHhGRkZGRkZGRkZGRkYwMDBFKQogI2RlZmluZSBQQVJBTExFTF9LRVlfQ0xJRU5U Q09OTklORk8JCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEYpCisjZGVmaW5lIFBBUkFM TEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JFRAkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkYwMDEw KQogCiAvKiBGaXhlZC1zaXplIHBhcmFsbGVsIHN0YXRlLiAqLwogdHlwZWRlZiBzdHJ1Y3QgRml4 ZWRQYXJhbGxlbFN0YXRlCkBAIC0zMDUsNiArMzA2LDEwIEBAIEluaXRpYWxpemVQYXJhbGxlbERT TShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQkJCQkJCQkJcGN4dC0+bndvcmtlcnMpKTsKIAkJ c2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgbXVsX3NpemUoc2l6ZW9mKGJvb2wpLAor CQkJCQkJCSAgIHBjeHQtPm53b3JrZXJzKSk7CisJCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4 dC0+ZXN0aW1hdG9yLCAxKTsKKwogCQkvKiBFc3RpbWF0ZSBob3cgbXVjaCB3ZSdsbCBuZWVkIGZv ciB0aGUgZW50cnlwb2ludCBpbmZvLiAqLwogCQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0 LT5lc3RpbWF0b3IsIHN0cmxlbihwY3h0LT5saWJyYXJ5X25hbWUpICsKIAkJCQkJCQkgICBzdHJs ZW4ocGN4dC0+ZnVuY3Rpb25fbmFtZSkgKyAyKTsKQEAgLTM3Niw2ICszODEsNyBAQCBJbml0aWFs aXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQljaGFyCSAgICplbnRyeXBv aW50c3RhdGU7CiAJCWNoYXIJICAgKnVuY29tbWl0dGVkZW51bXNzcGFjZTsKIAkJY2hhcgkgICAq Y2xpZW50Y29ubmluZm9zcGFjZTsKKwkJYm9vbAkgICAqc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2U7 CiAJCVNpemUJCWxuYW1lbGVuOwogCiAJCS8qIFNlcmlhbGl6ZSBzaGFyZWQgbGlicmFyaWVzIHdl IGhhdmUgbG9hZGVkLiAqLwpAQCAtNDkxLDYgKzQ5NywxOSBAQCBJbml0aWFsaXplUGFyYWxsZWxE U00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlLCBwY3h0 LT5saWJyYXJ5X25hbWUpOwogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlICsgbG5hbWVsZW4gKyAx LCBwY3h0LT5mdW5jdGlvbl9uYW1lKTsKIAkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJB TExFTF9LRVlfRU5UUllQT0lOVCwgZW50cnlwb2ludHN0YXRlKTsKKworCQkvKgorCQkgKiBFc3Rh Ymxpc2ggZHluYW1pYyBzaGFyZWQgbWVtb3J5IHRvIHBhc3MgaW5mb3JtYXRpb24gYWJvdXQgaW1w b3J0aW5nCisJCSAqIG9mIHNuYXBzaG90LgorCQkgKi8KKwkJc25hcHNob3Rfc2V0X2ZsYWdfc3Bh Y2UgPQorCQkJCXNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBtdWxfc2l6ZShzaXplb2YoYm9v bCksIHBjeHQtPm53b3JrZXJzKSk7CisJCWZvciAoaSA9IDA7IGkgPCBwY3h0LT5ud29ya2Vyczsg KytpKQorCQl7CisJCQlwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBzbmFwc2hv dF9zZXRfZmxhZ19zcGFjZSArIGkgKiBzaXplb2YoYm9vbCk7CisJCQkqcGN4dC0+d29ya2VyW2ld LnNuYXBzaG90X3Jlc3RvcmVkID0gZmFsc2U7CisJCX0KKwkJc2htX3RvY19pbnNlcnQocGN4dC0+ dG9jLCBQQVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIHNuYXBzaG90X3NldF9mbGFnX3Nw YWNlKTsKIAl9CiAKIAkvKiBVcGRhdGUgbndvcmtlcnNfdG9fbGF1bmNoLCBpbiBjYXNlIHdlIGNo YW5nZWQgbndvcmtlcnMgYWJvdmUuICovCkBAIC01NDYsNiArNTY1LDE3IEBAIFJlaW5pdGlhbGl6 ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCXBjeHQtPndvcmtlcltpXS5l cnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBwY3h0LT5zZWcsIE5VTEwpOwogCQl9CiAJfQor CisJLyogU2V0IHNuYXBzaG90IHJlc3RvcmVkIGZsYWcgdG8gZmFsc2UuICovCisJaWYgKHBjeHQt Pm53b3JrZXJzID4gMCkKKwl7CisJCWJvb2wJICAgKnNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlOwor CQlpbnQJCQlpOworCQlzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZSA9CisJCQkJc2htX3RvY19sb29r dXAocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIGZhbHNlKTsKKwkJ Zm9yIChpID0gMDsgaSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCQlzbmFwc2hvdF9yZXN0b3Jl ZF9zcGFjZVtpXSA9IGZhbHNlOworCX0KIH0KIAogLyoKQEAgLTY2MSw2ICs2OTEsMTAgQEAgTGF1 bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIFdhaXQgZm9yIGFs bCB3b3JrZXJzIHRvIGF0dGFjaCB0byB0aGVpciBlcnJvciBxdWV1ZXMsIGFuZCB0aHJvdyBhbiBl cnJvciBpZgogICogYW55IHdvcmtlciBmYWlscyB0byBkbyB0aGlzLgogICoKKyAqIHdhaXRfZm9y X3NuYXBzaG90OiB0cmFjayB3aGV0aGVyIGVhY2ggcGFyYWxsZWwgd29ya2VyIGhhcyBzdWNjZXNz ZnVsbHkgcmVzdG9yZWQKKyAqIGl0cyBzbmFwc2hvdC4gVGhpcyBpcyBuZWVkZWQgd2hlbiB1c2lu ZyBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMgdG8gZW5zdXJlIGFsbAorICogd29ya2VycyBoYXZl IGEgdmFsaWQgaW5pdGlhbCBzbmFwc2hvdCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzY2Fu LgorICoKICAqIENhbGxlcnMgY2FuIGFzc3VtZSB0aGF0IGlmIHRoaXMgZnVuY3Rpb24gcmV0dXJu cyBzdWNjZXNzZnVsbHksIHRoZW4gdGhlCiAgKiBudW1iZXIgb2Ygd29ya2VycyBnaXZlbiBieSBw Y3h0LT5ud29ya2Vyc19sYXVuY2hlZCBoYXZlIGluaXRpYWxpemVkIGFuZAogICogYXR0YWNoZWQg dG8gdGhlaXIgZXJyb3IgcXVldWVzLiAgV2hldGhlciBvciBub3QgdGhlc2Ugd29ya2VycyBhcmUg Z3VhcmFudGVlZApAQCAtNjkwLDcgKzcyNCw3IEBAIExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJh bGxlbENvbnRleHQgKnBjeHQpCiAgKiBjYWxsIHRoaXMgZnVuY3Rpb24gYXQgYWxsLgogICovCiB2 b2lkCi1XYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0 KQorV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCwg Ym9vbCB3YWl0X2Zvcl9zbmFwc2hvdCkKIHsKIAlpbnQJCQlpOwogCkBAIC03MzQsOSArNzY4LDEy IEBAIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQp CiAJCQkJbXEgPSBzaG1fbXFfZ2V0X3F1ZXVlKHBjeHQtPndvcmtlcltpXS5lcnJvcl9tcWgpOwog CQkJCWlmIChzaG1fbXFfZ2V0X3NlbmRlcihtcSkgIT0gTlVMTCkKIAkJCQl7Ci0JCQkJCS8qIFll cywgc28gaXQgaXMga25vd24gdG8gYmUgYXR0YWNoZWQuICovCi0JCQkJCXBjeHQtPmtub3duX2F0 dGFjaGVkX3dvcmtlcnNbaV0gPSB0cnVlOwotCQkJCQkrK3BjeHQtPm5rbm93bl9hdHRhY2hlZF93 b3JrZXJzOworCQkJCQlpZiAoIXdhaXRfZm9yX3NuYXBzaG90IHx8ICoocGN4dC0+d29ya2VyW2ld LnNuYXBzaG90X3Jlc3RvcmVkKSkKKwkJCQkJeworCQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93 biB0byBiZSBhdHRhY2hlZC4gKi8KKwkJCQkJCXBjeHQtPmtub3duX2F0dGFjaGVkX3dvcmtlcnNb aV0gPSB0cnVlOworCQkJCQkJKytwY3h0LT5ua25vd25fYXR0YWNoZWRfd29ya2VyczsKKwkJCQkJ fQogCQkJCX0KIAkJCX0KIAkJCWVsc2UgaWYgKHN0YXR1cyA9PSBCR1dIX1NUT1BQRUQpCkBAIC0x Mjk1LDYgKzEzMzIsNyBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJc2ht X3RvYyAgICAqdG9jOwogCUZpeGVkUGFyYWxsZWxTdGF0ZSAqZnBzOwogCWNoYXIJICAgKmVycm9y X3F1ZXVlX3NwYWNlOworCWJvb2wJICAgKnNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlOwogCXNobV9t cQkgICAqbXE7CiAJc2htX21xX2hhbmRsZSAqbXFoOwogCWNoYXIJICAgKmxpYnJhcnlzcGFjZTsK QEAgLTE0OTksNiArMTUzNywxMCBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcp CiAJCQkJCQkJICAgZnBzLT5wYXJhbGxlbF9sZWFkZXJfcGdwcm9jKTsKIAlQdXNoQWN0aXZlU25h cHNob3QoYXNuYXBzaG90KTsKIAorCS8qIFNuYXBzaG90IGlzIHJlc3RvcmVkLCBzZXQgZmxhZyB0 byBtYWtlIGxlYWRlciBrbm93IGFib3V0IGl0LiAqLworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNl ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIGZh bHNlKTsKKwlzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZVtQYXJhbGxlbFdvcmtlck51bWJlcl0gPSB0 cnVlOworCiAJLyoKIAkgKiBXZSd2ZSBjaGFuZ2VkIHdoaWNoIHR1cGxlcyB3ZSBjYW4gc2VlLCBh bmQgbXVzdCB0aGVyZWZvcmUgaW52YWxpZGF0ZQogCSAqIHN5c3RlbSBjYWNoZXMuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKaW5kZXggY2JkMGJhOWFhMDEuLjY0MzJlZjU1Y2RjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBA IC0xNTMyLDcgKzE1MzIsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxh dGlvbklkLAogCiAJLyogSW52YWxpZGF0ZSBjYXRhbG9nIHNuYXBzaG90IGp1c3QgZm9yIGFzc2Vy dCAqLwogCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKLQlBc3NlcnQoKGluZGV4SW5mby0+ aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlKSB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfVW5pcXVl IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIFJvbGwgYmFj ayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hh Y3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4u YwppbmRleCBlZDM1YzU4YzJjMy4uOGExNWRkNzJiOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl cXNjYW4uYwpAQCAtMzY3LDcgKzM2Nyw4IEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZURTTShTZXFT Y2FuU3RhdGUgKm5vZGUsCiAJcHNjYW4gPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbm9k ZS0+cHNjYW5fbGVuKTsKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShub2RlLT5zcy5z c19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJCSAgcHNjYW4sCi0JCQkJCQkJCSAgZXN0YXRlLT5l c19zbmFwc2hvdCk7CisJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hvdCwKKwkJCQkJCQkJICBm YWxzZSk7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5zcy5wcy5wbGFuLT5wbGFu X25vZGVfaWQsIHBzY2FuKTsKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQogCQl0YWJs ZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2Nhbik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCmluZGV4IGFkNDQwZmYwMjRjLi5mMjUxYmM1Mjg5NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKQEAgLTM0MiwxNCArMzQyLDYgQEAgR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCh2b2lkKQogU25hcHNob3QKIEdldExhdGVzdFNuYXBzaG90KHZvaWQpCiB7 Ci0JLyoKLQkgKiBXZSBtaWdodCBiZSBhYmxlIHRvIHJlbGF4IHRoaXMsIGJ1dCBub3RoaW5nIHRo YXQgY291bGQgb3RoZXJ3aXNlIHdvcmsKLQkgKiBuZWVkcyBpdC4KLQkgKi8KLQlpZiAoSXNJblBh cmFsbGVsTW9kZSgpKQotCQllbG9nKEVSUk9SLAotCQkJICJjYW5ub3QgdXBkYXRlIFNlY29uZGFy eVNuYXBzaG90IGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiIpOwotCiAJLyoKIAkgKiBTbyBm YXIgdGhlcmUgYXJlIG5vIGNhc2VzIHJlcXVpcmluZyBzdXBwb3J0IGZvciBHZXRMYXRlc3RTbmFw c2hvdCgpCiAJICogZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmcsIGJ1dCBpdCB3b3VsZG4ndCBiZSBo YXJkIHRvIGFkZCBpZiByZXF1aXJlZC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9w YXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKaW5kZXggZjM3YmU2ZDU2 OTAuLmE3MzYyZjdiNDNiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAtMjYsNiArMjYsNyBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFdvcmtlckluZm8KIHsKIAlCYWNrZ3JvdW5kV29ya2VySGFu ZGxlICpiZ3doYW5kbGU7CiAJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFoOworCWJvb2wJCSAgKnNu YXBzaG90X3Jlc3RvcmVkOwogfSBQYXJhbGxlbFdvcmtlckluZm87CiAKIHR5cGVkZWYgc3RydWN0 IFBhcmFsbGVsQ29udGV4dApAQCAtNjUsNyArNjYsNyBAQCBleHRlcm4gdm9pZCBJbml0aWFsaXpl UGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlh bGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBSZWlu aXRpYWxpemVQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBpbnQgbndvcmtl cnNfdG9fbGF1bmNoKTsKIGV4dGVybiB2b2lkIExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJhbGxl bENvbnRleHQgKnBjeHQpOwotZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0 YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CitleHRlcm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxX b3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBz aG90KTsKIGV4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxl bENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgRGVzdHJveVBhcmFsbGVsQ29udGV4dChQYXJh bGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wgUGFyYWxsZWxDb250ZXh0QWN0aXZlKHZv aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggYjVlMGZiMzg2YzAuLjUwNDQxYzU4Y2VhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9yZWxzY2FuLmgKQEAgLTgyLDYgKzgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxU YWJsZVNjYW5EZXNjRGF0YQogCVJlbEZpbGVMb2NhdG9yIHBoc19sb2NhdG9yOyAvKiBwaHlzaWNh bCByZWxhdGlvbiB0byBzY2FuICovCiAJYm9vbAkJcGhzX3N5bmNzY2FuOwkvKiByZXBvcnQgbG9j YXRpb24gdG8gc3luY3NjYW4gbG9naWM/ICovCiAJYm9vbAkJcGhzX3NuYXBzaG90X2FueTsJLyog U25hcHNob3RBbnksIG5vdCBwaHNfc25hcHNob3RfZGF0YT8gKi8KKwlib29sCQlwaHNfcmVzZXRf c25hcHNob3Q7IC8qIHVzZSBTT19SRVNFVF9TTkFQU0hPVD8gKi8KIAlTaXplCQlwaHNfc25hcHNo b3Rfb2ZmOwkvKiBkYXRhIGZvciBzbmFwc2hvdCAqLwogfSBQYXJhbGxlbFRhYmxlU2NhbkRlc2NE YXRhOwogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YSAqUGFyYWxsZWxU YWJsZVNjYW5EZXNjOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggOGRmNmJhOWI4OWUuLmE2OWY3MWEz YWNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTExMzUsNyArMTEzNSw4IEBAIGV4dGVybiBTaXpl IHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBz aG90KTsKICAqLwogZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVs YXRpb24gcmVsLAogCQkJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJ CQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOworCQkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QsCisJCQkJCQkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KTsKIAogLyoKICAqIEJlZ2luIGEg cGFyYWxsZWwgc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0 aApAQCAtMTc1Myw5ICsxNzU0LDkgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFi bGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiBUaGlzIG9ubHkg cmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVkIHRvIGJlIGdlbmVy YWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgogICoKLSAqIEluIGNhc2Ugb2Ygbm9uLXVu aXF1ZSBpbmRleCBhbmQgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgYnVpbGQKLSAqIFNPX1JFU0VU X1NOQVBTSE9UIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLiBUaGF0IGxlYWRzIGZvciBjaGFuZ2lu ZyBzbmFwc2hvdHMKLSAqIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0 ZS4KKyAqIEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBjb25jdXJyZW50ICBpbmRleCBidWlsZCBTT19S RVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVkCisgKiBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgZm9y IGNoYW5naW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4KKyAqIGhvcml6b24g cHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVfaW5kZXhfYnVpbGRf c2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5v dXQKaW5kZXggOTQ4ZDEyMzJhYTAuLjU5NWE0MDAwY2UwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNl dF9zbmFwc2hvdHMub3V0CkBAIC0xNyw2ICsxNywxMiBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNl JwogIAogKDEgcm93KQogCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplJywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0 YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVBVEUgU0NI RU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGlu dCBwcmltYXJ5IGtleSwgaiBpbnQpOwogSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNF TEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CkBAIC03Miwz MCArNzgsNDUgQEAgTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIERST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKIEFM VEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7Cist LSBEZXRhY2ggdG8ga2VlcCB0ZXN0IHN0YWJsZSwgc2luY2UgcGFyYWxsZWwgd29ya2VyIG1heSBj b21wbGV0ZSBzY2FuIGJlZm9yZSBsZWFkZXIKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFj aCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScpOworIGluamVjdGlvbl9wb2lu dHNfZGV0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVB VEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0Qo aSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJF IGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0o KTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lO RyBCUklOKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIERST1AgU0NIRU1BIGNpY19yZXNldF9zbmFw IENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDMgb3RoZXIgb2JqZWN0cwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRf c25hcHNob3RzLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2lj X3Jlc2V0X3NuYXBzaG90cy5zcWwKaW5kZXggNTA3MjUzNWIzNTUuLjI5NDFhYTdhZTM4IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9z bmFwc2hvdHMuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwv Y2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTMsNyArMyw3IEBAIENSRUFURSBFWFRFTlNJT04g aW5qZWN0aW9uX3BvaW50czsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwog U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlJywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0 YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOwotCitTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl JywgJ25vdGljZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRB QkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwpAQCAtNTMs NiArNTMsOSBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiAt LSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50 YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOwogCistLSBEZXRhY2ggdG8ga2VlcCB0ZXN0IHN0 YWJsZSwgc2luY2UgcGFyYWxsZWwgd29ya2VyIG1heSBjb21wbGV0ZSBzY2FuIGJlZm9yZSBsZWFk ZXIKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZScpOworCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OwpAQCAtODMsNCArODYsNCBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiAKIERST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CiAKLURST1Ag RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CitEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9p bnRzOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIuNDMuMAoK --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0002-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v20-0002-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9oh316 RnJvbSA2MjYwMjYwMTI2MGE1MzE3NTQxMDhhOWUwMGVlYjg2M2Q5OGIzZWFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDAyLzEyXSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcwoKSW50cm9kdWNlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRp b25zOgotIHRlc3QgY29uY3VycmVudCBpbnNlcnRzL3VwZGF0ZXMgZHVyaW5nIENSRUFURS9SRUlO REVYIElOREVYIENPTkNVUlJFTlRMWQotIGNvdmVyIHZhcmlvdXMgaW5kZXggdHlwZXMgKGJ0cmVl LCBnaW4sIGdpc3QsIGJyaW4sIGhhc2gsIHNwZ2lzdCkKLSB0ZXN0IHVuaXF1ZSBhbmQgbm9uLXVu aXF1ZSBpbmRleGVzCi0gdGVzdCB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzCi0gdGVz dCBib3RoIHBhcmFsbGVsIGFuZCBub24tcGFyYWxsZWwgb3BlcmF0aW9ucwoKVGhlc2UgdGVzdHMg dmVyaWZ5IHRoZSBiZWhhdmlvciBvZiB0aGUgZm9sbG93aW5nIGNvbW1pdHMuCi0tLQogc3JjL2Jp bi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmluL3BnX2FtY2hlY2svdC8w MDZfY2ljLnBsIHwgMjIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVz IGNoYW5nZWQsIDIyNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9w Z19hbWNoZWNrL3QvMDA2X2NpYy5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay9t ZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWlsZAppbmRleCAzMTZlYTBk NDBiOC4uN2RmMTU0MzVmYmIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5i dWlsZAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQKQEAgLTI4LDYgKzI4LDcg QEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDAzX2NoZWNrLnBsJywKICAgICAgICd0LzAwNF92ZXJp ZnlfaGVhcGFtLnBsJywKICAgICAgICd0LzAwNV9vcGNsYXNzX2RhbWFnZS5wbCcsCisgICAgICAn dC8wMDZfY2ljLnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19h bWNoZWNrL3QvMDA2X2NpYy5wbCBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJhYWQwZThkYWE4Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA2X2NpYy5wbApAQCAtMCwwICsxLDIy MyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisKKyMgVGVzdCBSRUlOREVYIENPTkNVUlJFTlRMWSB3aXRoIGNvbmN1cnJlbnQgbW9k aWZpY2F0aW9ucyBhbmQgSE9UIHVwZGF0ZXMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFU QUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK1Rlc3Q6Ok1vcmUtPmJ1aWxk ZXItPnRvZG9fc3RhcnQoJ2ZpbGVzeXN0ZW0gYnVnJykKKyAgaWYgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6Omhhc193YWxfcmVhZF9idWc7CisKK215ICgkbm9kZSwgJHJlc3VsdCk7CisKKyMKKyMg VGVzdCBzZXQtdXAKKyMKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdS Q190ZXN0Jyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywKKwknbG9ja190aW1lb3V0ID0gJyAuICgxMDAwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOjp0aW1lb3V0X2RlZmF1bHQpKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywgJ2ZzeW5jID0gb2ZmJyk7Ciskbm9kZS0+c3RhcnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7Ciskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFRBQkxFIHRibChpIGludCBwcmltYXJ5IGtleSwKKwkJCQkJ CQkJYzEgbW9uZXkgZGVmYXVsdCAwLCBjMiBtb25leSBkZWZhdWx0IDAsCisJCQkJCQkJCWMzIG1v bmV5IGRlZmF1bHQgMCwgdXBkYXRlZF9hdCB0aW1lc3RhbXAsCisJCQkJCQkJCWlhIGludDRbXSwg cCBwb2ludCkpKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7KSk7CisjIGNyZWF0ZSBzZXF1 ZW5jZQorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBVTkxPR0dFRCBTRVFV RU5DRSBpbl9yb3dfcmVidWlsZCBTVEFSVCAxIElOQ1JFTUVOVCAxOykpOworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpOykpOwor CisjIENyZWF0ZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBwcmVkaWNhdGUgdGVzdHMKKyRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX3N0YWJs ZSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVH SU4KKwkJRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKwkJUkVUVVJOIHRydWU7CisJ RU5EOyAkJDsKKykpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRF IEZVTkNUSU9OIHByZWRpY2F0ZV9jb25zdChpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxF CisJTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorCUJFR0lOCisJCVJFVFVSTiBNT0QoJDEsIDIpID0g MDsKKwlFTkQ7ICQkOworKSk7CisKKyMgUnVuIENJQy9SSUMgaW4gZGlmZmVyZW50IG9wdGlvbnMg Y29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVt IC0tY2xpZW50PTMwIC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0yNTAw JywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3Vy cmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZJywK Kwl7CisJCSdjb25jdXJyZW50X29wcycgPT4gcSgKKwkJCVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVy eSA9IG9mZjsgLS0gdGhpcyBpcyBiZWNhdXNlIHByZWRpY2F0ZV9zdGFibGUgaW1wbGVtZW50YXRp b24KKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290bG9j ayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2YWwoJ2luX3Jvd19yZWJ1 aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgdmFyaWFudCByYW5kb20oMCwgNSkK KwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAz CisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7 CisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg bmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQor CQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVk X2F0KSBXSEVSRSBwcmVkaWNhdGVfc3RhYmxlKCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMgor CQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVk X2F0KSBXSEVSRSBNT0QoaSwgMikgPSAwOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJ CUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCkg V0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJ CUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwocHJlZGljYXRlX2NvbnN0 KGkpKTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSA1CisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIG5ld19pZHggT04gdGJsKGksIHByZWRpY2F0ZV9jb25zdChpKSwgdXBkYXRlZF9hdCkg V0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZW5kaWYKKwkJCQkJXHNsZWVwIDEwIG1z CisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnbmV3X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+ IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBuZXdfaWR4OworCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1 ZSk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJXGVuZGlmCisJ CQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVt IHJhbmRvbSgxMDAwLCAxMDAwMDApCisJCQkJQkVHSU47CisJCQkJSU5TRVJUIElOVE8gdGJsIFZB TFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1Qo aSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJs IFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJ Q1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8g dGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09O RkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElO VE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04g Q09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJU IElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJ T04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VM RUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCQlDT01NSVQ7CisJCQlcZW5kaWYK KwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFC TEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciB1bmlxdWUgaW5kZXggY29uY3VycmVudGx5 IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMw IC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0yNTAwJywKKwkwLAorCVtx cnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRp b25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGZvciB1bmlxdWUgQlRS RUUnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX3VuaXF1ZV9pZHgnID0+IHEoCisJCQlTRUxFQ1Qg cGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxp ZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3Rf dmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxh c3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9 OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHggT04gdGJsKGkpOworCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1 ZSk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxzbGVl cCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ25ld19pZHgnLCBoZWFwYWxsaW5k ZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5s b2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5k b20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51 bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRl ZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJ CQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJV TkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciBHSU4gd2l0aCB1cHNlcnRz Ciskbm9kZS0+cGdiZW5jaCgKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9MzAgLS1qb2JzPTQgLS1l eGl0LW9uLWFib3J0IC0tdHJhbnNhY3Rpb25zPTI1MDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHBy b2Nlc3NlZH1dLAorCVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlO REVYL0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZm9yIEdJTi9HSVNUL0JSSU4vSEFTSC9TUEdJ U1QnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX2dpbl9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdf dHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6 Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFs dWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3Rf dmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBh cmFsbGVscyk7CisJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0Ymwg VVNJTkcgR0lOIChpYSk7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgZ2luX2luZGV4 X2NoZWNrKCduZXdfaWR4Jyk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCduZXdf aWR4Jyk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJXGVuZGlm CisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQg bnVtIHJhbmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEsIDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0 YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpKQorCQkJCQlPTiBDT05G TElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKKwkJCQlTRUxFQ1Qgc2V0 dmFsKCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJXGVuZGlmCisJCSkKKwl9KTsKKworJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRFIFRBQkxFIHRibDspKTsKKworIyBSdW4g Q0lDL1JJQyBmb3IgR0lTVC9CUklOL0hBU0gvU1BHSVNUIGluZGV4IGNvbmN1cnJlbnRseSB3aXRo IHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNsaWVudD0zMCAtLWpv YnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MjUwMCcsCisJMCwKKwlbcXJ7YWN0 dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3 aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9I QVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfb3RoZXJfaWR4JyA9PiBxKAorCQkJ U0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0 CisJCQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBB UyBsYXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCBwYXJhbGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJ XGlmIDpsYXN0X3ZhbHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0YmwgU0VUIChwYXJhbGxlbF93 b3JrZXJzPTpwYXJhbGxlbHMpOworCQkJCQlcc2V0IHZhcmlhbnQgcmFuZG9tKDAsIDMpCisJCQkJ CVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwgVVNJTkcgR0lTVCAocCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJCQkJ Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBCUklOICh1cGRh dGVkX2F0KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSAyCisJCQkJCQlDUkVBVEUgSU5ERVggQ09O Q1VSUkVOVExZIG5ld19pZHggT04gdGJsIFVTSU5HIEhBU0ggKHVwZGF0ZWRfYXQpOworCQkJCQlc ZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwgVVNJTkcgU1BHSVNUIChwKTsKKwkJCQkJXGVuZGlmCisJCQkJCVxzbGVlcCAxMCBt cworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCQlcc2xlZXAg MTAgbXMKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYK KwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBu dW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRi bCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZM SUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBzZXR2 YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+ c3RvcDsKK2RvbmVfdGVzdGluZygpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIu NDMuMAoK --0000000000009a67c20635d4b809 Content-Type: application/octet-stream; name="v20-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Disposition: attachment; filename="v20-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb1a9oh215 RnJvbSBmYzlmMTJjZTM4ZTFjNTBiMjFmYjQ4YjI0NGRhNTFlYmEzMDcyNTM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDowOTo1MiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwIDAxLzEyXSBUaGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9y Zy81MC81MTYwLwogYW5kIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy9wYXRjaC81 NDM4LyBtZXJnZWQgaW4gc2luZ2xlIGNvbW1pdC4gaXQKIGlzIHJlcXVpcmVkIGZvciBzdGFiaWxp dHkgb2Ygc3RyZXNzIHRlc3RzLgoKLS0tCiBjb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL3QvMDA2X2NpY19idF9pbmRleF9wYXJlbnRfY2hl Y2sucGwgICAgICAgIHwgIDM5ICsrKysrCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j ICAgICAgICAgICAgICAgfCAgNjggKysrKy0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy dGl0aW9uLmMgICAgICAgICAgfCAxMTkgKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGxhbmNhdC5jICAgICAgICAgIHwgMTM1ICsrKysrKysrKysrKystLS0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMgICAgICAgICAgICAgIHwgICAyICsKIDkgZmls ZXMgY2hhbmdlZCwgMjg1IGluc2VydGlvbnMoKyksIDg4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGNvbnRyaWIvYW1jaGVjay90LzAwNl9jaWNfYnRfaW5kZXhfcGFyZW50X2NoZWNr LnBsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL21lc29uLmJ1aWxkIGIvY29udHJpYi9h bWNoZWNrL21lc29uLmJ1aWxkCmluZGV4IGIzM2U4YzliMDYyLi5iMDQwMDAwZGQ1NSAxMDA2NDQK LS0tIGEvY29udHJpYi9hbWNoZWNrL21lc29uLmJ1aWxkCisrKyBiL2NvbnRyaWIvYW1jaGVjay9t ZXNvbi5idWlsZApAQCAtNDksNiArNDksNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfY2lj XzJwYy5wbCcsCiAgICAgICAndC8wMDRfdmVyaWZ5X25idHJlZV91bmlxdWUucGwnLAogICAgICAg J3QvMDA1X3BpdHIucGwnLAorICAgICAgJ3QvMDA2X2NpY19idF9pbmRleF9wYXJlbnRfY2hlY2su cGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdC8wMDZf Y2ljX2J0X2luZGV4X3BhcmVudF9jaGVjay5wbCBiL2NvbnRyaWIvYW1jaGVjay90LzAwNl9jaWNf YnRfaW5kZXhfcGFyZW50X2NoZWNrLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi42ZTUyYzVlMzllYwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYW1jaGVjay90 LzAwNl9jaWNfYnRfaW5kZXhfcGFyZW50X2NoZWNrLnBsCkBAIC0wLDAgKzEsMzkgQEAKKyMgQ29w eXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisj IFRlc3QgYnRfaW5kZXhfcGFyZW50X2NoZWNrIHdpdGggaW5kZXggY3JlYXRlZCB3aXRoIENSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOworCit1c2UgVGVzdDo6TW9yZTsKKworbXkgKCRub2RlLCAkcmVzdWx0KTsK KworIworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ0NJQ19idF9pbmRleF9wYXJlbnRfY2hlY2tfdGVzdCcpOworJG5vZGUtPmluaXQ7Cisk bm9kZS0+c3RhcnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVO U0lPTiBhbWNoZWNrKSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFRB QkxFIHRibChpIGludCBwcmltYXJ5IGtleSkpKTsKKyMgSW5zZXJ0IHR3byByb3dzIGludG8gaW5k ZXgKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShJTlNFUlQgSU5UTyB0YmwgU0VMRUNU IGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMikgcyhpKTspKTsKKworIyBzdGFydCBiYWNrZ3Jv dW5kIHRyYW5zYWN0aW9uCitteSAkaW5fcHJvZ3Jlc3NfaCA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJyk7CiskaW5fcHJvZ3Jlc3NfaC0+cXVlcnlfc2FmZShxKEJFR0lOOyBTRUxF Q1QgcGdfY3VycmVudF94YWN0X2lkKCk7KSk7CisKKyMgZGVsZXRlIG9uZSByb3cgZnJvbSB0YWJs ZSwgd2hpbGUgYmFja2dyb3VuZCB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcworJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxKERFTEVURSBGUk9NIHRibCBXSEVSRSBpID0gMTspKTsKKyMg Y3JlYXRlIGluZGV4IGNvbmN1cnJlbnRseSwgd2hpY2ggd2lsbCBza2lwIHRoZSBkZWxldGVkIHJv dworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIHRibChpKTspKTsKKworIyBjaGVjayBpbmRleCB1c2luZyBidF9pbmRleF9wYXJl bnRfY2hlY2sKKyRyZXN1bHQgPSAkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBidF9p bmRleF9wYXJlbnRfY2hlY2soJ2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpKSk7Citpcygk cmVzdWx0LCAnMCcsICdidF9pbmRleF9wYXJlbnRfY2hlY2sgZm9yIENJQyBhZnRlciByZW1vdmVk IHJvdycpOworCiskaW5fcHJvZ3Jlc3NfaC0+cXVpdDsKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0t Z2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMKaW5kZXggZjExYzQzYTBlZDcuLjMwNDhlMDQ0YWVjIDEwMDY0NAotLS0g YS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMKQEAgLTM4Miw3ICszODIsNiBAQCBidF9jaGVja19ldmVyeV9sZXZlbChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAogCUJUTWV0 YVBhZ2VEYXRhICptZXRhZDsKIAl1aW50MzIJCXByZXZpb3VzbGV2ZWw7CiAJQnRyZWVMZXZlbAlj dXJyZW50OwotCVNuYXBzaG90CXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAKIAlpZiAoIXJlYWRv bmx5KQogCQllbG9nKERFQlVHMSwgInZlcmlmeWluZyBjb25zaXN0ZW5jeSBvZiB0cmVlIHN0cnVj dHVyZSBmb3IgaW5kZXggXCIlc1wiIiwKQEAgLTQzMywzOCArNDMyLDM1IEBAIGJ0X2NoZWNrX2V2 ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3Bh Y2UsCiAJCXN0YXRlLT5oZWFwdHVwbGVzcHJlc2VudCA9IDA7CiAKIAkJLyoKLQkJICogUmVnaXN0 ZXIgb3VyIG93biBzbmFwc2hvdCBpbiAhcmVhZG9ubHkgY2FzZSwgcmF0aGVyIHRoYW4gYXNraW5n CisJCSAqIFJlZ2lzdGVyIG91ciBvd24gc25hcHNob3QgZm9yIGhlYXBhbGxpbmRleGVkLCByYXRo ZXIgdGhhbiBhc2tpbmcKIAkJICogdGFibGVfaW5kZXhfYnVpbGRfc2NhbigpIHRvIGRvIHRoaXMg Zm9yIHVzIGxhdGVyLiAgVGhpcyBuZWVkcyB0bwogCQkgKiBoYXBwZW4gYmVmb3JlIGluZGV4IGZp bmdlcnByaW50aW5nIGJlZ2lucywgc28gd2UgY2FuIGxhdGVyIGJlCiAJCSAqIGNlcnRhaW4gdGhh dCBpbmRleCBmaW5nZXJwcmludGluZyBzaG91bGQgaGF2ZSByZWFjaGVkIGFsbCB0dXBsZXMKIAkJ ICogcmV0dXJuZWQgYnkgdGFibGVfaW5kZXhfYnVpbGRfc2NhbigpLgogCQkgKi8KLQkJaWYgKCFz dGF0ZS0+cmVhZG9ubHkpCi0JCXsKLQkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlzdGF0ZS0+c25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAKLQkJCS8qCi0JCQkgKiBHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkgYWx3YXlzIGFjcXVpcmVzIGEgbmV3IE1WQ0Mgc25hcHNob3QgaW4KLQkJ CSAqIFJFQUQgQ09NTUlUVEVEIG1vZGUuICBBIG5ldyBzbmFwc2hvdCBpcyBndWFyYW50ZWVkIHRv IGhhdmUgYWxsCi0JCQkgKiB0aGUgZW50cmllcyBpdCByZXF1aXJlcyBpbiB0aGUgaW5kZXguCi0J CQkgKgotCQkJICogV2UgbXVzdCBkZWZlbmQgYWdhaW5zdCB0aGUgcG9zc2liaWxpdHkgdGhhdCBh biBvbGQgeGFjdAotCQkJICogc25hcHNob3Qgd2FzIHJldHVybmVkIGF0IGhpZ2hlciBpc29sYXRp b24gbGV2ZWxzIHdoZW4gdGhhdAotCQkJICogc25hcHNob3QgaXMgbm90IHNhZmUgZm9yIGluZGV4 IHNjYW5zIG9mIHRoZSB0YXJnZXQgaW5kZXguICBUaGlzCi0JCQkgKiBpcyBwb3NzaWJsZSB3aGVu IHRoZSBzbmFwc2hvdCBzZWVzIHR1cGxlcyB0aGF0IGFyZSBiZWZvcmUgdGhlCi0JCQkgKiBpbmRl eCdzIGluZGNoZWNreG1pbiBob3Jpem9uLiAgVGhyb3dpbmcgYW4gZXJyb3IgaGVyZSBzaG91bGQg YmUKLQkJCSAqIHZlcnkgcmFyZS4gIEl0IGRvZXNuJ3Qgc2VlbSB3b3J0aCB1c2luZyBhIHNlY29u ZGFyeSBzbmFwc2hvdCB0bwotCQkJICogYXZvaWQgdGhpcy4KLQkJCSAqLwotCQkJaWYgKElzb2xh dGlvblVzZXNYYWN0U25hcHNob3QoKSAmJiByZWwtPnJkX2luZGV4LT5pbmRjaGVja3htaW4gJiYK LQkJCQkhVHJhbnNhY3Rpb25JZFByZWNlZGVzKEhlYXBUdXBsZUhlYWRlckdldFhtaW4ocmVsLT5y ZF9pbmRleHR1cGxlLT50X2RhdGEpLAotCQkJCQkJCQkJICAgc25hcHNob3QtPnhtaW4pKQotCQkJ CWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX1RfUl9TRVJJQUxJWkFUSU9O X0ZBSUxVUkUpLAotCQkJCQkJIGVycm1zZygiaW5kZXggXCIlc1wiIGNhbm5vdCBiZSB2ZXJpZmll ZCB1c2luZyB0cmFuc2FjdGlvbiBzbmFwc2hvdCIsCi0JCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbCkpKSk7Ci0JCX0KLQl9CisJCS8qCisJCSAqIEdldFRyYW5zYWN0aW9uU25hcHNo b3QoKSBhbHdheXMgYWNxdWlyZXMgYSBuZXcgTVZDQyBzbmFwc2hvdCBpbgorCQkgKiBSRUFEIENP TU1JVFRFRCBtb2RlLiAgQSBuZXcgc25hcHNob3QgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGFsbAor CQkgKiB0aGUgZW50cmllcyBpdCByZXF1aXJlcyBpbiB0aGUgaW5kZXguCisJCSAqCisJCSAqIFdl IG11c3QgZGVmZW5kIGFnYWluc3QgdGhlIHBvc3NpYmlsaXR5IHRoYXQgYW4gb2xkIHhhY3QKKwkJ ICogc25hcHNob3Qgd2FzIHJldHVybmVkIGF0IGhpZ2hlciBpc29sYXRpb24gbGV2ZWxzIHdoZW4g dGhhdAorCQkgKiBzbmFwc2hvdCBpcyBub3Qgc2FmZSBmb3IgaW5kZXggc2NhbnMgb2YgdGhlIHRh cmdldCBpbmRleC4gIFRoaXMKKwkJICogaXMgcG9zc2libGUgd2hlbiB0aGUgc25hcHNob3Qgc2Vl cyB0dXBsZXMgdGhhdCBhcmUgYmVmb3JlIHRoZQorCQkgKiBpbmRleCdzIGluZGNoZWNreG1pbiBo b3Jpem9uLiAgVGhyb3dpbmcgYW4gZXJyb3IgaGVyZSBzaG91bGQgYmUKKwkJICogdmVyeSByYXJl LiAgSXQgZG9lc24ndCBzZWVtIHdvcnRoIHVzaW5nIGEgc2Vjb25kYXJ5IHNuYXBzaG90IHRvCisJ CSAqIGF2b2lkIHRoaXMuCisJCSAqLworCQlpZiAoSXNvbGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgp ICYmIHJlbC0+cmRfaW5kZXgtPmluZGNoZWNreG1pbiAmJgorCQkJIVRyYW5zYWN0aW9uSWRQcmVj ZWRlcyhIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHJlbC0+cmRfaW5kZXh0dXBsZS0+dF9kYXRhKSwK KwkJCQkJCQkJICAgc3RhdGUtPnNuYXBzaG90LT54bWluKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfVF9SX1NFUklBTElaQVRJT05fRkFJTFVSRSksCisJCQkJCSBl cnJtc2coImluZGV4IFwiJXNcIiBjYW5ub3QgYmUgdmVyaWZpZWQgdXNpbmcgdHJhbnNhY3Rpb24g c25hcHNob3QiLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7Cit9CiAK IAkvKgogCSAqIFdlIG5lZWQgYSBzbmFwc2hvdCB0byBjaGVjayB0aGUgdW5pcXVlbmVzcyBvZiB0 aGUgaW5kZXguIEZvciBiZXR0ZXIKQEAgLTQ3Niw5ICs0NzIsNyBAQCBidF9jaGVja19ldmVyeV9s ZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAog CQlzdGF0ZS0+aW5kZXhpbmZvID0gQnVpbGRJbmRleEluZm8oc3RhdGUtPnJlbCk7CiAJCWlmIChz dGF0ZS0+aW5kZXhpbmZvLT5paV9VbmlxdWUpCiAJCXsKLQkJCWlmIChzbmFwc2hvdCAhPSBTbmFw c2hvdEFueSkKLQkJCQlzdGF0ZS0+c25hcHNob3QgPSBzbmFwc2hvdDsKLQkJCWVsc2UKKwkJCWlm IChzdGF0ZS0+c25hcHNob3QgPT0gSW52YWxpZFNuYXBzaG90KQogCQkJCXN0YXRlLT5zbmFwc2hv dCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkJfQogCX0K QEAgLTU1NSwxMyArNTQ5LDEyIEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwg UmVsYXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJCS8qCiAJCSAqIENyZWF0ZSBv dXIgb3duIHNjYW4gZm9yIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oKSwgcmF0aGVyIHRoYW4KIAkJ ICogZ2V0dGluZyBpdCB0byBkbyBzbyBmb3IgdXMuICBUaGlzIGlzIHJlcXVpcmVkIHNvIHRoYXQg d2UgY2FuCi0JCSAqIGFjdHVhbGx5IHVzZSB0aGUgTVZDQyBzbmFwc2hvdCByZWdpc3RlcmVkIGVh cmxpZXIgaW4gIXJlYWRvbmx5Ci0JCSAqIGNhc2UuCisJCSAqIGFjdHVhbGx5IHVzZSB0aGUgTVZD QyBzbmFwc2hvdCByZWdpc3RlcmVkIGVhcmxpZXIuCiAJCSAqCiAJCSAqIE5vdGUgdGhhdCB0YWJs ZV9pbmRleF9idWlsZF9zY2FuKCkgY2FsbHMgaGVhcF9lbmRzY2FuKCkgZm9yIHVzLgogCQkgKi8K IAkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChzdGF0ZS0+aGVhcHJlbCwJLyogcmVsYXRp b24gKi8KLQkJCQkJCQkJCSBzbmFwc2hvdCwJLyogc25hcHNob3QgKi8KKwkJCQkJCQkJCSBzdGF0 ZS0+c25hcHNob3QsCS8qIHNuYXBzaG90ICovCiAJCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtl eXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkJIHRydWUsCS8q IGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KQEAgLTU2OSw3ICs1NjIsNyBAQCBidF9jaGVj a19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtl eXNwYWNlLAogCiAJCS8qCiAJCSAqIFNjYW4gd2lsbCBiZWhhdmUgYXMgdGhlIGZpcnN0IHNjYW4g b2YgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZCi0JCSAqIGJlaGF2ZXMgaW4gIXJlYWRvbmx5 IGNhc2UuCisJCSAqIGJlaGF2ZXMuCiAJCSAqCiAJCSAqIEl0J3Mgb2theSB0aGF0IHdlIGRvbid0 IGFjdHVhbGx5IHVzZSB0aGUgc2FtZSBsb2NrIHN0cmVuZ3RoIGZvciB0aGUKIAkJICogaGVhcCBy ZWxhdGlvbiBhcyBhbnkgb3RoZXIgaWlfQ29uY3VycmVudCBjYWxsZXIgd291bGQgaW4gIXJlYWRv bmx5CkBAIC01NzgsNyArNTcxLDcgQEAgYnRfY2hlY2tfZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlzcGFjZSwKIAkJICogdGhhdCBuZWVkcyB0 byBiZSBzdXJlIHRoYXQgdGhlcmUgd2FzIG5vIGNvbmN1cnJlbnQgcmVjeWNsaW5nIG9mCiAJCSAq IFRJRHMuCiAJCSAqLwotCQlpbmRleGluZm8tPmlpX0NvbmN1cnJlbnQgPSAhc3RhdGUtPnJlYWRv bmx5OworCQlpbmRleGluZm8tPmlpX0NvbmN1cnJlbnQgPSB0cnVlOwogCiAJCS8qCiAJCSAqIERv bid0IHdhaXQgZm9yIHVuY29tbWl0dGVkIHR1cGxlIHhhY3QgY29tbWl0L2Fib3J0IHdoZW4gaW5k ZXggaXMgYQpAQCAtNjAyLDE0ICs1OTUsMTEgQEAgYnRfY2hlY2tfZXZlcnlfbGV2ZWwoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlzcGFjZSwKIAkJCQkJCQkJIHN0 YXRlLT5oZWFwdHVwbGVzcHJlc2VudCwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaGVhcHJlbCks CiAJCQkJCQkJCSAxMDAuMCAqIGJsb29tX3Byb3BfYml0c19zZXQoc3RhdGUtPmZpbHRlcikpKSk7 CiAKLQkJaWYgKHNuYXBzaG90ICE9IFNuYXBzaG90QW55KQotCQkJVW5yZWdpc3RlclNuYXBzaG90 KHNuYXBzaG90KTsKLQogCQlibG9vbV9mcmVlKHN0YXRlLT5maWx0ZXIpOwogCX0KIAogCS8qIEJl IHRpZHk6ICovCi0JaWYgKHNuYXBzaG90ID09IFNuYXBzaG90QW55ICYmIHN0YXRlLT5zbmFwc2hv dCAhPSBJbnZhbGlkU25hcHNob3QpCisJaWYgKHN0YXRlLT5zbmFwc2hvdCAhPSBJbnZhbGlkU25h cHNob3QpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChzdGF0ZS0+c25hcHNob3QpOwogCU1lbW9yeUNv bnRleHREZWxldGUoc3RhdGUtPnRhcmdldGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYwppbmRleCBkOTYyZmUzOTJjZC4uMGY3NWRlYmU3ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCkBAIC0xNzkwLDYgKzE3OTAsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkg KiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91 dCBhbnkKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4K IAkgKi8KKwlJTkpFQ1RJT05fUE9JTlQoImRlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIiwg TlVMTCk7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsKIAlXYWl0 Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsKQEAgLTQxOTUsNyArNDE5Niw3IEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogdGhlIHNhbWUgdGltZSB0byBtYWtlIHN1cmUg d2Ugb25seSBnZXQgY29uc3RyYWludCB2aW9sYXRpb25zIGZyb20gdGhlCiAJICogaW5kZXhlcyB3 aXRoIHRoZSBjb3JyZWN0IG5hbWVzLgogCSAqLwotCisJSU5KRUNUSU9OX1BPSU5UKCJyZWluZGV4 X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCIsIE5VTEwpOwogCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CiAKIAkvKgpAQCAtNDI3NCw2ICs0Mjc1LDcgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkgKiBpbmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAor CUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3Nl dF9kZWFkIiwgTlVMTCk7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80 KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNsdXNpdmVMb2Nr LCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggYmRmODYyYjI0MDYu LjQ5OWNiYTE0NWRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhp bmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpAQCAtMTE3LDYg KzExNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmFuZ2V0eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRl ICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogLyogd2FpdE1vZGUgYXJndW1lbnQgdG8gY2hl Y2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KCkgKi8KIHR5cGVkZWYgZW51bQpAQCAt OTQyLDYgKzk0Myw4IEBAIHJldHJ5OgogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNhdmVf c2NhbnR1cGxlOwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChleGlzdGluZ19zbG90 KTsKKwlpZiAoIWNvbmZsaWN0KQorCQlJTkpFQ1RJT05fUE9JTlQoImNoZWNrX2V4Y2x1c2lvbl9v cl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCIsIE5VTEwpOwogCiAJcmV0dXJuICFjb25m bGljdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCA1MTRlYWUxMDM3 ZC4uODg1MWYwZmRhMDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTQ4 Niw2ICs0ODYsNDggQEAgRXhlY0ZpbmRQYXJ0aXRpb24oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0 ZSwKIAlyZXR1cm4gcnJpOwogfQogCisvKgorICogSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIK KyAqIAkJQ2hlY2tzIGlmIHRoZSBpbmRleGVzIGFyZSBpZGVudGljYWwgaW4gdGVybXMgb2YgYmVp bmcgdXNlZAorICogCQlhcyBhcmJpdGVycyBmb3IgdGhlIElOU0VSVCBPTiBDT05GTElDVCBvcGVy YXRpb24gYnkgY29tcGFyaW5nCisgKiAJCXRoZW0gdG8gdGhlIHByb3ZpZGVkIGFyYml0ZXIgaW5k ZXguCisgKgorICogUmV0dXJucyB0aGUgdHJ1ZSBpZiBpbmRleGVzIGFyZSBjb21wYXRpYmxlLgor ICovCitzdGF0aWMgYm9vbAorSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIoUmVsYXRpb24JYXJi aXRlckluZGV4UmVsYXRpb24sCisJCQkJCQkgICBJbmRleEluZm8gICphcmJpdGVySW5kZXhJbmZv LAorCQkJCQkJICAgUmVsYXRpb24JaW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIEluZGV4SW5mbyAg KmluZGV4SW5mbykKK3sKKwlpbnQgaTsKKworCWlmIChhcmJpdGVySW5kZXhJbmZvLT5paV9Vbmlx dWUgIT0gaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJCXJldHVybiBmYWxzZTsKKwkvKiBpdCBpcyBu b3Qgc3VwcG9ydGVkIGZvciBjYXNlcyBvZiBleGNsdXNpb24gY29uc3RyYWludHMuICovCisJaWYg KGFyYml0ZXJJbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMIHx8IGluZGV4SW5mby0+ aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoYXJiaXRlcklu ZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRua2V5YXR0cyAhPSBpbmRleFJlbGF0aW9uLT5yZF9p bmRleC0+aW5kbmtleWF0dHMpCisJCXJldHVybiBmYWxzZTsKKworCWZvciAoaSA9IDA7IGkgPCBp bmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kbmtleWF0dHM7IGkrKykKKwl7CisJCWludAkJCWFy Yml0ZXJBdHRvTm8gPSBhcmJpdGVySW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGtleS52YWx1 ZXNbaV07CisJCWludAkJCWF0dG9ObyA9IGluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRrZXku dmFsdWVzW2ldOworCQlpZiAoYXJiaXRlckF0dG9ObyAhPSBhdHRvTm8pCisJCQlyZXR1cm4gZmFs c2U7CisJfQorCisJaWYgKGxpc3RfZGlmZmVyZW5jZShSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lv bnMoYXJiaXRlckluZGV4UmVsYXRpb24pLAorCQkJCQkJUmVsYXRpb25HZXRJbmRleEV4cHJlc3Np b25zKGluZGV4UmVsYXRpb24pKSAhPSBOSUwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChsaXN0 X2RpZmZlcmVuY2UoUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShhcmJpdGVySW5kZXhSZWxhdGlv biksCisJCQkJCQlSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsYXRpb24pKSAhPSBO SUwpCisJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEV4ZWNJbml0 UGFydGl0aW9uSW5mbwogICoJCUxvY2sgdGhlIHBhcnRpdGlvbiBhbmQgaW5pdGlhbGl6ZSBSZXN1 bHRSZWxJbmZvLiAgQWxzbyBzZXR1cCBvdGhlcgpAQCAtNjk2LDYgKzczOCw4IEBAIEV4ZWNJbml0 UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAkJaWYgKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMgIT0g TklMKQogCQl7CiAJCQlMaXN0CSAgICpjaGlsZElkeHM7CisJCQlMaXN0IAkgICAqbm9uQW5jZXN0 b3JJZHhzID0gTklMOworCQkJaW50CQkgICBpLCBqLCBhZGRpdGlvbmFsX2FyYml0ZXJzID0gMDsK IAogCQkJY2hpbGRJZHhzID0gUmVsYXRpb25HZXRJbmRleExpc3QobGVhZl9wYXJ0X3JyaS0+cmlf UmVsYXRpb25EZXNjKTsKIApAQCAtNzA2LDIzICs3NTAsNzQgQEAgRXhlY0luaXRQYXJ0aXRpb25J bmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJCUxpc3RD ZWxsICAgKmxjMjsKIAogCQkJCWFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKGNo aWxkSWR4KTsKLQkJCQlmb3JlYWNoKGxjMiwgcm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxp Y3RBcmJpdGVySW5kZXhlcykKKwkJCQlpZiAoYW5jZXN0b3JzKQogCQkJCXsKLQkJCQkJaWYgKGxp c3RfbWVtYmVyX29pZChhbmNlc3RvcnMsIGxmaXJzdF9vaWQobGMyKSkpCi0JCQkJCQlhcmJpdGVy SW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRleGVzLCBjaGlsZElkeCk7CisJCQkJCWZv cmVhY2gobGMyLCByb290UmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVz KQorCQkJCQl7CisJCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFuY2VzdG9ycywgbGZpcnN0X29p ZChsYzIpKSkKKwkJCQkJCQlhcmJpdGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRl eGVzLCBjaGlsZElkeCk7CisJCQkJCX0KIAkJCQl9CisJCQkJZWxzZSAvKiBObyBhbmNlc3RvciB3 YXMgZm91bmQgZm9yIHRoYXQgaW5kZXguIFNhdmUgaXQgZm9yIHJlY2hlY2tpbmcgbGF0ZXIuICov CisJCQkJCW5vbkFuY2VzdG9ySWR4cyA9IGxhcHBlbmRfb2lkKG5vbkFuY2VzdG9ySWR4cywgY2hp bGRJZHgpOwogCQkJCWxpc3RfZnJlZShhbmNlc3RvcnMpOwogCQkJfQorCisJCQkvKgorCQkJICog SWYgYW55IG5vbi1hbmNlc3RvciBpbmRleGVzIGFyZSBmb3VuZCwgd2UgbmVlZCB0byBjb21wYXJl IHRoZW0gd2l0aCBvdGhlcgorCQkJICogaW5kZXhlcyBvZiB0aGUgcmVsYXRpb24gdGhhdCB3aWxs IGJlIHVzZWQgYXMgYXJiaXRlcnMuIFRoaXMgaXMgbmVjZXNzYXJ5CisJCQkgKiB3aGVuIGEgcGFy dGl0aW9uZWQgaW5kZXggaXMgcHJvY2Vzc2VkIGJ5IFJFSU5ERVggQ09OQ1VSUkVOVExZLiBCb3Ro IGluZGV4ZXMKKwkJCSAqIG11c3QgYmUgY29uc2lkZXJlZCBhcyBhcmJpdGVycyB0byBlbnN1cmUg dGhhdCBhbGwgY29uY3VycmVudCB0cmFuc2FjdGlvbnMKKwkJCSAqIHVzZSB0aGUgc2FtZSBzZXQg b2YgYXJiaXRlcnMuCisJCQkgKi8KKwkJCWlmIChub25BbmNlc3RvcklkeHMpCisJCQl7CisJCQkJ Zm9yIChpID0gMDsgaSA8IGxlYWZfcGFydF9ycmktPnJpX051bUluZGljZXM7IGkrKykKKwkJCQl7 CisJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQobm9uQW5jZXN0b3JJZHhzLCBsZWFmX3BhcnRfcnJp LT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV0tPnJkX2luZGV4LT5pbmRleHJlbGlkKSkKKwkJCQkJ eworCQkJCQkJUmVsYXRpb24gbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uID0gbGVhZl9wYXJ0X3Jy aS0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2ldOworCQkJCQkJSW5kZXhJbmZvICpub25BbmNlc3Rv ckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25JbmZvW2ldOworCQkJ CQkJQXNzZXJ0KCFsaXN0X21lbWJlcl9vaWQoYXJiaXRlckluZGV4ZXMsIG5vbkFuY2VzdG9ySW5k ZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKTsKKworCQkJCQkJLyogSXQgaXMgdG9v IGVhcmx5IHRvIHVzIG5vbi1yZWFkeSBpbmRleGVzIGFzIGFyYml0ZXJzICovCisJCQkJCQlpZiAo IW5vbkFuY2VzdG9ySW5kZXhJbmZvLT5paV9SZWFkeUZvckluc2VydHMpCisJCQkJCQkJY29udGlu dWU7CisKKwkJCQkJCWZvciAoaiA9IDA7IGogPCBsZWFmX3BhcnRfcnJpLT5yaV9OdW1JbmRpY2Vz OyBqKyspCisJCQkJCQl7CisJCQkJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhcmJpdGVySW5kZXhl cywKKwkJCQkJCQkJCQkJCWxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25EZXNjc1tqXS0+ cmRfaW5kZXgtPmluZGV4cmVsaWQpKQorCQkJCQkJCXsKKwkJCQkJCQkJUmVsYXRpb24gYXJiaXRl ckluZGV4UmVsYXRpb24gPSBsZWFmX3BhcnRfcnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3Nbal07 CisJCQkJCQkJCUluZGV4SW5mbyAqYXJiaXRlckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmktPnJp X0luZGV4UmVsYXRpb25JbmZvW2pdOworCisJCQkJCQkJCS8qIElmIG5vbi1hbmNlc3RvciBpbmRl eCBhcmUgY29tcGF0aWJsZSB0byBhcmJpdGVyIC0gdXNlIGl0IGFzIGFyYml0ZXIgdG9vLiAqLwor CQkJCQkJCQlpZiAoSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIoYXJiaXRlckluZGV4UmVsYXRp b24sIGFyYml0ZXJJbmRleEluZm8sCisJCQkJCQkJCQkJCQkJCQkgICBub25BbmNlc3RvckluZGV4 UmVsYXRpb24sIG5vbkFuY2VzdG9ySW5kZXhJbmZvKSkKKwkJCQkJCQkJeworCQkJCQkJCQkJYXJi aXRlckluZGV4ZXMgPSBsYXBwZW5kX29pZChhcmJpdGVySW5kZXhlcywKKwkJCQkJCQkJCQkJCQkJ CQkgbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kZXhyZWxpZCk7CisJCQkJ CQkJCQlhZGRpdGlvbmFsX2FyYml0ZXJzKys7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9 CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlsaXN0X2ZyZWUobm9uQW5jZXN0b3JJZHhzKTsKKwor CQkJLyoKKwkJCSAqIElmIHRoZSByZXN1bHRpbmcgbGlzdHMgYXJlIG9mIGluZXF1YWwgbGVuZ3Ro LCBzb21ldGhpbmcgaXMgd3JvbmcuCisJCQkgKiAoVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBzaW5j ZSBhcmJpdGVyIGluZGV4IHNlbGVjdGlvbiBzaG91bGQgbm90CisJCQkgKiBwaWNrIHVwIGEgbm9u LXJlYWR5IGluZGV4LikKKwkJCSAqCisJCQkgKiBCdXQgd2UgbmVlZCB0byBjb25zaWRlciBhbiBh ZGRpdGlvbmFsIGFyYml0ZXIgaW5kZXhlcyBhbHNvLgorCQkJICovCisJCQlpZiAobGlzdF9sZW5n dGgocm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcykgIT0KKwkJ CQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhlcykgLSBhZGRpdGlvbmFsX2FyYml0ZXJzKQorCQkJ CWVsb2coRVJST1IsICJpbnZhbGlkIGFyYml0ZXIgaW5kZXggbGlzdCIpOwogCQl9Ci0KLQkJLyoK LQkJICogSWYgdGhlIHJlc3VsdGluZyBsaXN0cyBhcmUgb2YgaW5lcXVhbCBsZW5ndGgsIHNvbWV0 aGluZyBpcyB3cm9uZy4KLQkJICogKFRoaXMgc2hvdWxkbid0IGhhcHBlbiwgc2luY2UgYXJiaXRl ciBpbmRleCBzZWxlY3Rpb24gc2hvdWxkIG5vdAotCQkgKiBwaWNrIHVwIGFuIGludmFsaWQgaW5k ZXguKQotCQkgKi8KLQkJaWYgKGxpc3RfbGVuZ3RoKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNv bmZsaWN0QXJiaXRlckluZGV4ZXMpICE9Ci0JCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhlcykp Ci0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBhcmJpdGVyIGluZGV4IGxpc3QiKTsKIAkJbGVhZl9w YXJ0X3JyaS0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzID0gYXJiaXRlckluZGV4ZXM7CiAK IAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNDZkNTMzYjcy ODguLjU2NmRiZWNiMzkwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpA QCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2lu amVjdGlvbl9wb2ludC5oIgogCiAKIHR5cGVkZWYgc3RydWN0IE1UVGFyZ2V0UmVsTG9va3VwCkBA IC0xMTc4LDYgKzExNzksNyBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCQkJfQorCQkJSU5KRUNUSU9OX1BPSU5UKCJl eGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlIiwgTlVMTCk7CiAKIAkJCS8qCiAJ CQkgKiBCZWZvcmUgd2Ugc3RhcnQgaW5zZXJ0aW9uIHByb3BlciwgYWNxdWlyZSBvdXIgInNwZWN1 bGF0aXZlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggNTkyMzNiNjQ3MzAu LjBjNzIwZTQ1MGU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFu Y2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC03MTYs MTIgKzcxNiwxNCBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJ TGlzdAkgICAqaW5kZXhMaXN0OwogCUxpc3RDZWxsICAgKmw7CiAKLQkvKiBOb3JtYWxpemVkIGlu ZmVyZW5jZSBhdHRyaWJ1dGVzIGFuZCBpbmZlcmVuY2UgZXhwcmVzc2lvbnM6ICovCi0JQml0bWFw c2V0ICAqaW5mZXJBdHRycyA9IE5VTEw7Ci0JTGlzdAkgICAqaW5mZXJFbGVtcyA9IE5JTDsKKwkv KiBOb3JtYWxpemVkIHJlcXVpcmVkIGF0dHJpYnV0ZXMgYW5kIGV4cHJlc3Npb25zOiAqLworCUJp dG1hcHNldCAgKnJlcXVpcmVkQXJiaXRlckF0dHJzID0gTlVMTDsKKwlMaXN0CSAgICpyZXF1aXJl ZEFyYml0ZXJFbGVtcyA9IE5JTDsKKwlMaXN0CSAgICpyZXF1aXJlZEluZGV4UHJlZEV4cHJzID0g KExpc3QgKikgb25jb25mbGljdC0+YXJiaXRlcldoZXJlOwogCiAJLyogUmVzdWx0cyAqLwogCUxp c3QJICAgKnJlc3VsdHMgPSBOSUw7CisJYm9vbAkgICBmb3VuZFZhbGlkID0gZmFsc2U7CiAKIAkv KgogCSAqIFF1aWNrbHkgcmV0dXJuIE5JTCBmb3IgT04gQ09ORkxJQ1QgRE8gTk9USElORyB3aXRo b3V0IGFuIGluZmVyZW5jZQpAQCAtNzU2LDggKzc1OCw4IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhl cyhQbGFubmVySW5mbyAqcm9vdCkKIAogCQlpZiAoIUlzQShlbGVtLT5leHByLCBWYXIpKQogCQl7 Ci0JCQkvKiBJZiBub3QgYSBwbGFpbiBWYXIsIGp1c3Qgc2hvdmUgaXQgaW4gaW5mZXJFbGVtcyBm b3Igbm93ICovCi0JCQlpbmZlckVsZW1zID0gbGFwcGVuZChpbmZlckVsZW1zLCBlbGVtLT5leHBy KTsKKwkJCS8qIElmIG5vdCBhIHBsYWluIFZhciwganVzdCBzaG92ZSBpdCBpbiByZXF1aXJlZEFy Yml0ZXJFbGVtcyBmb3Igbm93ICovCisJCQlyZXF1aXJlZEFyYml0ZXJFbGVtcyA9IGxhcHBlbmQo cmVxdWlyZWRBcmJpdGVyRWxlbXMsIGVsZW0tPmV4cHIpOwogCQkJY29udGludWU7CiAJCX0KIApA QCAtNzY5LDMwICs3NzEsNzYgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpy b290KQogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJ CSBlcnJtc2coIndob2xlIHJvdyB1bmlxdWUgaW5kZXggaW5mZXJlbmNlIHNwZWNpZmljYXRpb25z IGFyZSBub3Qgc3VwcG9ydGVkIikpKTsKIAotCQlpbmZlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIo aW5mZXJBdHRycywKKwkJcmVxdWlyZWRBcmJpdGVyQXR0cnMgPSBibXNfYWRkX21lbWJlcihyZXF1 aXJlZEFyYml0ZXJBdHRycywKIAkJCQkJCQkJCWF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0 dHJpYnV0ZU51bWJlcik7CiAJfQogCisJaW5kZXhMaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3Qo cmVsYXRpb24pOworCiAJLyoKIAkgKiBMb29rdXAgbmFtZWQgY29uc3RyYWludCdzIGluZGV4LiAg VGhpcyBpcyBub3QgaW1tZWRpYXRlbHkgcmV0dXJuZWQKLQkgKiBiZWNhdXNlIHNvbWUgYWRkaXRp b25hbCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4KKwkgKiBiZWNhdXNlIHNvbWUgYWRkaXRp b25hbCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4gQWRkaXRpb25hbGx5LCB3ZQorCSAqIG5l ZWQgdG8gcHJvY2VzcyBvdGhlciBpbmRleGVzIGFzIHBvdGVudGlhbCBhcmJpdGVycyB0byBhY2Nv dW50IGZvcgorCSAqIGNhc2VzIHdoZXJlIFJFSU5ERVggQ09OQ1VSUkVOVExZIGlzIHByb2Nlc3Np bmcgYW4gaW5kZXggdXNlZCBhcyBhCisJICogbmFtZWQgY29uc3RyYWludC4KIAkgKi8KIAlpZiAo b25jb25mbGljdC0+Y29uc3RyYWludCAhPSBJbnZhbGlkT2lkKQogCXsKIAkJaW5kZXhPaWRGcm9t Q29uc3RyYWludCA9IGdldF9jb25zdHJhaW50X2luZGV4KG9uY29uZmxpY3QtPmNvbnN0cmFpbnQp OwogCiAJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50ID09IEludmFsaWRPaWQpCisJCXsKIAkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAotCQkJCQkgZXJybXNnKCJjb25zdHJhaW50IGluIE9OIENPTkZMSUNUIGNsYXVzZSBoYXMgbm8g YXNzb2NpYXRlZCBpbmRleCIpKSk7CisJCQkJCWVycm1zZygiY29uc3RyYWludCBpbiBPTiBDT05G TElDVCBjbGF1c2UgaGFzIG5vIGFzc29jaWF0ZWQgaW5kZXgiKSkpOworCQl9CisKKwkJLyoKKwkJ ICogRmluZCB0aGUgbmFtZWQgY29uc3RyYWludCBpbmRleCB0byBleHRyYWN0IGl0cyBhdHRyaWJ1 dGVzIGFuZCBwcmVkaWNhdGVzLgorCQkgKiBXZSBvcGVuIGFsbCBpbmRleGVzIGluIHRoZSBsb29w IHRvIGF2b2lkIGRlYWRsb2NrIG9mIGNoYW5nZWQgb3JkZXIgb2YgbG9ja3MuCisJCSAqICovCisJ CWZvcmVhY2gobCwgaW5kZXhMaXN0KQorCQl7CisJCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9v aWQobCk7CisJCQlSZWxhdGlvbglpZHhSZWw7CisJCQlGb3JtX3BnX2luZGV4IGlkeEZvcm07CisJ CQlBdHRyTnVtYmVyCW5hdHQ7CisKKwkJCWlkeFJlbCA9IGluZGV4X29wZW4oaW5kZXhvaWQsIHJ0 ZS0+cmVsbG9ja21vZGUpOworCQkJaWR4Rm9ybSA9IGlkeFJlbC0+cmRfaW5kZXg7CisKKwkJCWlm IChpZHhGb3JtLT5pbmRpc3JlYWR5KQorCQkJeworCQkJCWlmIChpbmRleE9pZEZyb21Db25zdHJh aW50ID09IGlkeEZvcm0tPmluZGV4cmVsaWQpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBQcmVw YXJlIHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgaW5kZXhlcyB0byBiZSB1c2VkIGFzIGFyYml0ZXIg dG9nZXRoZXIKKwkJCQkJICogd2l0aCBpbmRleE9pZEZyb21Db25zdHJhaW50LiBJdCBpcyByZXF1 aXJlZCB0byBpbnZvbHZlIGJvdGggZXF1YWxzIGluZGV4ZXMKKwkJCQkJICogaW4gY2FzZSBvZiBS RUlOREVYIENPTkNVUlJFTlRMWS4KKwkJCQkJICovCisJCQkJCWZvciAobmF0dCA9IDA7IG5hdHQg PCBpZHhGb3JtLT5pbmRua2V5YXR0czsgbmF0dCsrKQorCQkJCQl7CisJCQkJCQlpbnQJCQlhdHRu byA9IGlkeFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbbmF0dF07CisKKwkJCQkJCWlmIChh dHRubyAhPSAwKQorCQkJCQkJCXJlcXVpcmVkQXJiaXRlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIo cmVxdWlyZWRBcmJpdGVyQXR0cnMsCisJCQkJCQkJCQkJCQkJCSAgYXR0bm8gLSBGaXJzdExvd0lu dmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCQkJfQorCQkJCQlyZXF1aXJlZEFyYml0ZXJF bGVtcyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpZHhSZWwpOworCQkJCQlyZXF1aXJl ZEluZGV4UHJlZEV4cHJzID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOworCQkJ CQkvKiBXZSBhcmUgZG9uZSwgc28sIHF1aXRlIHRoZSBsb29wLiAqLworCQkJCQlpbmRleF9jbG9z ZShpZHhSZWwsIE5vTG9jayk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWluZGV4X2Ns b3NlKGlkeFJlbCwgTm9Mb2NrKTsKKwkJfQogCX0KIAogCS8qCiAJICogVXNpbmcgdGhhdCByZXBy ZXNlbnRhdGlvbiwgaXRlcmF0ZSB0aHJvdWdoIHRoZSBsaXN0IG9mIGluZGV4ZXMgb24gdGhlCiAJ ICogdGFyZ2V0IHJlbGF0aW9uIHRvIHRyeSBhbmQgZmluZCBhIG1hdGNoCiAJICovCi0JaW5kZXhM aXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsYXRpb24pOwotCiAJZm9yZWFjaChsLCBpbmRl eExpc3QpCiAJewogCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQobCk7CkBAIC04MTUsNyAr ODYzLDEzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJaWR4 UmVsID0gaW5kZXhfb3BlbihpbmRleG9pZCwgcnRlLT5yZWxsb2NrbW9kZSk7CiAJCWlkeEZvcm0g PSBpZHhSZWwtPnJkX2luZGV4OwogCi0JCWlmICghaWR4Rm9ybS0+aW5kaXN2YWxpZCkKKwkJLyoK KwkJICogV2UgbmVlZCB0byBjb25zaWRlciBib3RoIGluZGlzdmFsaWQgYW5kIGluZGlzcmVhZHkg aW5kZXhlcyBiZWNhdXNlCisJCSAqIHRoZW0gbWF5IGJlY29tZSBpbmRpc3ZhbGlkIGJlZm9yZSBl eGVjdXRpb24gcGhhc2UuIEl0IGlzIHJlcXVpcmVkCisJCSAqIHRvIGtlZXAgc2V0IG9mIGluZGV4 ZXMgdXNlZCBhcyBhcmJpdGVyIHRvIGJlIHRoZSBzYW1lIGZvciBhbGwKKwkJICogY29uY3VycmVu dCB0cmFuc2FjdGlvbnMuCisJCSAqLworCQlpZiAoIWlkeEZvcm0tPmluZGlzcmVhZHkpCiAJCQln b3RvIG5leHQ7CiAKIAkJLyoKQEAgLTgzNSwyNyArODg5LDIzIEBAIGluZmVyX2FyYml0ZXJfaW5k ZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJCQkgZXJybXNnKCJPTiBDT05GTElD VCBETyBVUERBVEUgbm90IHN1cHBvcnRlZCB3aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cyIpKSk7 Ci0KLQkJCXJlc3VsdHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlk KTsKLQkJCWxpc3RfZnJlZShpbmRleExpc3QpOwotCQkJaW5kZXhfY2xvc2UoaWR4UmVsLCBOb0xv Y2spOwotCQkJdGFibGVfY2xvc2UocmVsYXRpb24sIE5vTG9jayk7Ci0JCQlyZXR1cm4gcmVzdWx0 czsKKwkJCWdvdG8gZm91bmQ7CiAJCX0KIAkJZWxzZSBpZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWlu dCAhPSBJbnZhbGlkT2lkKQogCQl7Ci0JCQkvKiBObyBwb2ludCBpbiBmdXJ0aGVyIHdvcmsgZm9y IGluZGV4IGluIG5hbWVkIGNvbnN0cmFpbnQgY2FzZSAqLwotCQkJZ290byBuZXh0OworCQkJLyog SW4gdGhlIGNhc2Ugb2YgIk9OIGNvbnN0cmFpbnRfbmFtZSBETyBVUERBVEUiIHdlIG5lZWQgdG8g c2tpcCBub24tdW5pcXVlIGNhbmRpZGF0ZXMuICovCisJCQlpZiAoIWlkeEZvcm0tPmluZGlzdW5p cXVlICYmIG9uY29uZmxpY3QtPmFjdGlvbiA9PSBPTkNPTkZMSUNUX1VQREFURSkKKwkJCQlnb3Rv IG5leHQ7CisJCX0gIGVsc2UgeworCQkJLyoKKwkJCSAqIE9ubHkgY29uc2lkZXJpbmcgY29udmVu dGlvbmFsIGluZmVyZW5jZSBhdCB0aGlzIHBvaW50IChub3QgbmFtZWQKKwkJCSAqIGNvbnN0cmFp bnRzKSwgc28gaW5kZXggdW5kZXIgY29uc2lkZXJhdGlvbiBjYW4gYmUgaW1tZWRpYXRlbHkKKwkJ CSAqIHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCisJCQkgKi8KKwkJCWlmICghaWR4Rm9ybS0+ aW5kaXN1bmlxdWUpCisJCQkJZ290byBuZXh0OwogCQl9CiAKLQkJLyoKLQkJICogT25seSBjb25z aWRlcmluZyBjb252ZW50aW9uYWwgaW5mZXJlbmNlIGF0IHRoaXMgcG9pbnQgKG5vdCBuYW1lZAot CQkgKiBjb25zdHJhaW50cyksIHNvIGluZGV4IHVuZGVyIGNvbnNpZGVyYXRpb24gY2FuIGJlIGlt bWVkaWF0ZWx5Ci0JCSAqIHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCi0JCSAqLwotCQlpZiAo IWlkeEZvcm0tPmluZGlzdW5pcXVlKQotCQkJZ290byBuZXh0OwotCiAJCS8qCiAJCSAqIFNvLWNh bGxlZCB1bmlxdWUgY29uc3RyYWludHMgd2l0aCBXSVRIT1VUIE9WRVJMQVBTIGFyZSByZWFsbHkK IAkJICogZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBzbyBza2lwIHRob3NlIHRvby4KQEAgLTg3NSw3 ICs5MjUsNyBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0K IAogCQkvKiBOb24tZXhwcmVzc2lvbiBhdHRyaWJ1dGVzIChpZiBhbnkpIG11c3QgbWF0Y2ggKi8K LQkJaWYgKCFibXNfZXF1YWwoaW5kZXhlZEF0dHJzLCBpbmZlckF0dHJzKSkKKwkJaWYgKCFibXNf ZXF1YWwoaW5kZXhlZEF0dHJzLCByZXF1aXJlZEFyYml0ZXJBdHRycykpCiAJCQlnb3RvIG5leHQ7 CiAKIAkJLyogRXhwcmVzc2lvbiBhdHRyaWJ1dGVzIChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KQEAg LTg4Myw2ICs5MzMsMTAgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290 KQogCQlpZiAoaWR4RXhwcnMgJiYgdmFybm8gIT0gMSkKIAkJCUNoYW5nZVZhck5vZGVzKChOb2Rl ICopIGlkeEV4cHJzLCAxLCB2YXJubywgMCk7CiAKKwkJLyoKKwkJICogSWYgYXJiaXRlckVsZW1z IGFyZSBwcmVzZW50LCBjaGVjayB0aGVtLiBJZiBuYW1lID5jb25zdHJhaW50IGlzCisJCSAqIHBy ZXNlbnQgYXJiaXRlckVsZW1zID09IE5JTC4KKwkJICovCiAJCWZvcmVhY2goZWwsIG9uY29uZmxp Y3QtPmFyYml0ZXJFbGVtcykKIAkJewogCQkJSW5mZXJlbmNlRWxlbSAqZWxlbSA9IChJbmZlcmVu Y2VFbGVtICopIGxmaXJzdChlbCk7CkBAIC05MjAsMjcgKzk3NCwzNSBAQCBpbmZlcl9hcmJpdGVy X2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAogCQkvKgotCQkgKiBOb3cgdGhhdCBh bGwgaW5mZXJlbmNlIGVsZW1lbnRzIHdlcmUgbWF0Y2hlZCwgZW5zdXJlIHRoYXQgdGhlCisJCSAq IEluIGNhc2Ugb2YgdGhlIGNvbnZlbnRpb25hbCBpbmZlcmVuY2UgaW52b2x2ZWQgZW5zdXJlIHRo YXQgdGhlCiAJCSAqIGV4cHJlc3Npb24gZWxlbWVudHMgZnJvbSBpbmZlcmVuY2UgY2xhdXNlIGFy ZSBub3QgbWlzc2luZyBhbnkKIAkJICogY2F0YWxvZ2VkIGV4cHJlc3Npb25zLiAgVGhpcyBkb2Vz IHRoZSByaWdodCB0aGluZyB3aGVuIHVuaXF1ZQogCQkgKiBpbmRleGVzIHJlZHVuZGFudGx5IHJl cGVhdCB0aGUgc2FtZSBhdHRyaWJ1dGUsIG9yIGlmIGF0dHJpYnV0ZXMKIAkJICogcmVkdW5kYW50 bHkgYXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGhpbiBhbiBpbmZlcmVuY2UgY2xhdXNlLgorCQkg KgorCQkgKiBJbiB0aGUgY2FzZSBvZiBuYW1lZCBjb25zdHJhaW50IGVuc3VyZSBjYW5kaWRhdGUg aGFzIGVxdWFsIHNldAorCQkgKiBvZiBleHByZXNzaW9ucyBhcyB0aGUgbmFtZWQgY29uc3RyYWlu dCBpbmRleC4KIAkJICovCi0JCWlmIChsaXN0X2RpZmZlcmVuY2UoaWR4RXhwcnMsIGluZmVyRWxl bXMpICE9IE5JTCkKKwkJaWYgKGxpc3RfZGlmZmVyZW5jZShpZHhFeHBycywgcmVxdWlyZWRBcmJp dGVyRWxlbXMpICE9IE5JTCkKIAkJCWdvdG8gbmV4dDsKIAotCQkvKgotCQkgKiBJZiBpdCdzIGEg cGFydGlhbCBpbmRleCwgaXRzIHByZWRpY2F0ZSBtdXN0IGJlIGltcGxpZWQgYnkgdGhlIE9OCi0J CSAqIENPTkZMSUNUJ3MgV0hFUkUgY2xhdXNlLgotCQkgKi8KIAkJcHJlZEV4cHJzID0gUmVsYXRp b25HZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOwogCQlpZiAocHJlZEV4cHJzICYmIHZhcm5vICE9 IDEpCiAJCQlDaGFuZ2VWYXJOb2RlcygoTm9kZSAqKSBwcmVkRXhwcnMsIDEsIHZhcm5vLCAwKTsK IAotCQlpZiAoIXByZWRpY2F0ZV9pbXBsaWVkX2J5KHByZWRFeHBycywgKExpc3QgKikgb25jb25m bGljdC0+YXJiaXRlcldoZXJlLCBmYWxzZSkpCisJCS8qCisJCSAqIElmIGl0J3MgYSBwYXJ0aWFs IGluZGV4IGFuZCBjb252ZW50aW9uYWwgaW5mZXJlbmNlLCBpdHMgcHJlZGljYXRlIG11c3QgYmUg aW1wbGllZAorCQkgKiBieSB0aGUgT04gQ09ORkxJQ1QncyBXSEVSRSBjbGF1c2UuCisJCSAqLwor CQlpZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCA9PSBJbnZhbGlkT2lkICYmICFwcmVkaWNhdGVf aW1wbGllZF9ieShwcmVkRXhwcnMsIHJlcXVpcmVkSW5kZXhQcmVkRXhwcnMsIGZhbHNlKSkKKwkJ CWdvdG8gbmV4dDsKKwkJLyogSWYgaXQncyBhIHBhcnRpYWwgaW5kZXggYW5kIG5hbWVkIGNvbnN0 cmFpbnQgcHJlZGljYXRlcyBtdXN0IGJlIGVxdWFsLiAqLworCQlpZiAoaW5kZXhPaWRGcm9tQ29u c3RyYWludCAhPSBJbnZhbGlkT2lkICYmIGxpc3RfZGlmZmVyZW5jZShwcmVkRXhwcnMsIHJlcXVp cmVkSW5kZXhQcmVkRXhwcnMpICE9IE5JTCkKIAkJCWdvdG8gbmV4dDsKIAorZm91bmQ6CiAJCXJl c3VsdHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsKKwkJZm91 bmRWYWxpZCB8PSBpZHhGb3JtLT5pbmRpc3ZhbGlkOwogbmV4dDoKIAkJaW5kZXhfY2xvc2UoaWR4 UmVsLCBOb0xvY2spOwogCX0KQEAgLTk0OCw3ICsxMDEwLDggQEAgbmV4dDoKIAlsaXN0X2ZyZWUo aW5kZXhMaXN0KTsKIAl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKIAotCWlmIChyZXN1 bHRzID09IE5JTCkKKwkvKiBJdCBpcyByZXF1aXJlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBpbmRp c3ZhbGlkIGluZGV4IGR1cmluZyB0aGUgcGxhbm5pbmcuICovCisJaWYgKHJlc3VsdHMgPT0gTklM IHx8ICFmb3VuZFZhbGlkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKIAkJCQkgZXJybXNnKCJ0aGVyZSBpcyBubyB1bmlx dWUgb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbWF0Y2hpbmcgdGhlIE9OIENPTkZMSUNUIHNwZWNp ZmljYXRpb24iKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdy LmMgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwppbmRleCBlYTM1ZjMwZjQ5NC4u YWQ0NDBmZjAyNGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCkBAIC0xMjMsNiArMTIzLDcg QEAKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3Iu aCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlv bl9wb2ludC5oIgogCiAKIC8qCkBAIC00NDcsNiArNDQ4LDcgQEAgSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCh2b2lkKQogCQlwYWlyaW5naGVhcF9yZW1vdmUoJlJlZ2lzdGVyZWRTbmFwc2hvdHMs ICZDYXRhbG9nU25hcHNob3QtPnBoX25vZGUpOwogCQlDYXRhbG9nU25hcHNob3QgPSBOVUxMOwog CQlTbmFwc2hvdFJlc2V0WG1pbigpOworCQlJTkpFQ1RJT05fUE9JTlQoImludmFsaWRhdGVfY2F0 YWxvZ19zbmFwc2hvdF9lbmQiLCBOVUxMKTsKIAl9CiB9CiAKLS0gCjIuNDMuMAoK --0000000000009a67c20635d4b809--