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.98.2) (envelope-from ) id 1xGs6w-00000002fiy-1FXy for pgsql-hackers@arkaria.postgresql.org; Wed, 14 Oct 2026 06:05:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xGs6v-00000000iju-03KW for pgsql-hackers@arkaria.postgresql.org; Wed, 14 Oct 2026 06:05:09 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xGs6u-00000000ijl-1wxF for pgsql-hackers@lists.postgresql.org; Wed, 14 Oct 2026 06:05:08 +0000 Received: from mail-dy1-x1335.google.com ([2607:f8b0:4864:20::1335]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1xGs6p-000000020ne-25fQ for pgsql-hackers@lists.postgresql.org; Wed, 14 Oct 2026 06:05:08 +0000 Received: by mail-dy1-x1335.google.com with SMTP id 5a478bee46e88-313bab9cfe7so420415eec.3 for ; Tue, 13 Oct 2026 23:05:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791957901; x=1792562701; darn=lists.postgresql.org; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=mZmW3UPOzWvNWgWj2Cg1s3EygIFPVvavwsKG2o/ikoA=; b=YYwTBTkIcAOGUczuZmS0/vIV5so7kZ9nyqnPo50el1vb6vTWO9VNkSRX4y4E17BgkB c/mIBp6T/bFSa47d1+4JaxC/ZfzjxpkmL62hja+fJPLTe0+J4FZtOTs+abipBdRGRIQF u+IgijVt9kPY3Styh88wjcD1aRQK7gDZiObrRIrAX1yfJmGyRSSiP8IoHFjYHAACh7xt oPg0lett169PWYpfTQsewyhdJNj3BQzRhfRcMl5T2WsNAqoOQiyD0qaTcB9fnvAvJrqS zPGlx5T2/UCWFfg/mO5T8u5YxQAw9JWglNeuLjWLPkeWFuPvnc8+EnYpRIUl9H+3/hqL a+9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791957901; x=1792562701; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=mZmW3UPOzWvNWgWj2Cg1s3EygIFPVvavwsKG2o/ikoA=; b=Ajey0cizoiQAy5XzTFCBFBaBQJ09V8iIYWnAwKFVDGslpVmHiBMf0kyV3fpHyWTg4y j8Low7HMJMI4eBTbLCejTryRXM2fzO6VWzBUiEbgV8wlcvirkXwWd9F+s7k1kr7DHOlH A7QDgTe7NQ+3cNzSnVzZsvHoMeHAACK+dOCcEGW7x065l7clBFJYkWXAnVUB0yiMPW+t FY9QDZn/7EmhH8+6LiO+eJ+QvxYN+BzSILuLltuDhk+fpKAMkSxVIIiKNKeEkVkpH1yM b6oxlYMaXG9q7fHxVFxLHfUhOIXES6Av8NnS6EXO8ZhXLmjEFrcSSFPigNHxx7/CD9Yf Iy9g== X-Forwarded-Encrypted: i=1; AKwUvByzARViSDj6NjxXqFN/prB+ccrv5m1+kpiugSh2THrDq99ceU9DUdQibFZD4gG/JK10j7l7Nnt45hRLQFUQ@lists.postgresql.org X-Gm-Message-State: AFq9FYJt7MEQGnI8Syr3EoOX45dOg6swMI6xYihQBgJGHhzDDq7v47MW XV6xO2E8aB7zyj+Y8oslBcT+gHWLkAwfxD88Hi2/1FjheGUrgoAyjyTA X-Gm-Gg: AYBFou2V4ogWMIXqF3vqzN79g3oVD48/XL7vBDw4A/yTZaUhFaeMVwxGFDgfkYOnxSH emOz5Xm5mId3vmY/am8xT+iMzbc7JNn1mXJya/00MgyKvnOIyIyyCmsy2eKOrNpeTtg5FEMM4ku fLUkAbvAX6aF/hrW5CoSSMPNzSXTG8ifdoP4XGUFQuZq3nID2jVoitCQZ0Z4J9ruy1n5rYYnGE2 vdXX0MPKLy50Of2bhS4OF4f6NeLqaRpkzqA5ncMTgSfGBaGceavZURJCx6NEQQnTYSJSava3AdY 3Gcc6elZmJArmpSzVU01cqwMpC5MQKnMlUa4ctUlULXTz5VIz/+jWIzpyBRljWX2qsKzZbbBsIB KaPhAqNdI5tUuQVdh6GNdCpH6IudGb3cf6Z1+V/vL+HjfMkfYn/gQxu7Iryq2RzoL7n+MHuKqTs nUmxqXjNaG27FYO2E49saldmeJIXmG64FMSioB2BWXuarMplwOu2dtxfuecfsk4DOP222sZAXc7 VEMWW3UslOriw+yaFa7PhaHB0TX5cT6f8EB/nsm+VEcHwuySOG9eftZSazviL+sQfHxidMfsDoX hN09t1NdfS+oEtHAuwLR+A== X-Received: by 2002:a05:693c:8810:20b0:35b:cb5b:c71e with SMTP id 5a478bee46e88-35bcb6b1c6cmr11860010eec.1.1791957900194; Tue, 13 Oct 2026 23:05:00 -0700 (PDT) Received: from 192.168.1.109 ([190.12.171.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-358de54fe47sm35601863eec.31.2026.10.13.23.04.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 23:04:59 -0700 (PDT) From: Manu To: shihao zhong Cc: Alexandre Felipe , Andres Freund , Tom Lane , Michael Paquier , Zsolt Parragi , pgsql-hackers@lists.postgresql.org Subject: Re: BUG #19686: Rolling back SET TABLESPACE Date: Wed, 14 Oct 2026 03:04:54 -0300 Message-ID: <179195789433.990372.6387431139267045114@gmail.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1761294064175896986==" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============1761294064175896986== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hi Shihao, > I personally prefer v6, but that should be a committer decision. Agreed it's a committer call. I'm re-attaching v7 as a plain .patch: it went as .patch.txt before, which the cfbot skips, so the entry was still testing the first version. No code change -- it applies unchanged on today's master and REL_19 through REL_14, make check and the standby, crash and wal_level=minimal checks are green on each, and the regression test fails without the fix. For whoever makes the v6-vs-v7 call, the two differ only in the shortcut that skips copying the indexes: - v6 keeps the shortcut for both protocols. Its cost is that a SET TABLESPACE that is the first statement of a pipeline commits on its own, so a later failure in that pipeline no longer rolls the move back. - v7 drops that. The shortcut then applies only to a single-statement simple-protocol query, so through the extended protocol (most drivers) the ALTER always copies the indexes: more WAL and one lock per index, and it can fail if the destination tablespace has room for the heap but not for the indexes. I attached v7, as the one that changes no behavior, but either is ready and I'm happy to switch to v6 if that's the preference. One user-visible change in both: when the indexes are copied, the destination tablespace has to have room for them too, not just the heap. Regards, Manu --===============1761294064175896986== Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v7-0001-Fix-index-corruption-after-rolling-back-ALTER-TAB.patch" MIME-Version: 1.0 RnJvbSA0NDc0NzBkOGNlMWQyZTY4MDRhM2E2OWViODMwNDYyMWJkNDc5ODJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51ZWwgUmV5ZXMgQnJhdm8gPG1hbnVlbHJleWVzYnJhdm9A Z21haWwuY29tPgpEYXRlOiBUaHUsIDEgT2N0IDIwMjYgMjE6Mzc6MDQgLTAzMDAKU3ViamVjdDog W1BBVENIIHY3XSBGaXggaW5kZXggY29ycnVwdGlvbiBhZnRlciByb2xsaW5nIGJhY2sgQUxURVIg VEFCTEUgU0VUCiBUQUJMRVNQQUNFCgpBTFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BBQ0UgcmV3 cml0ZXMgYSB0YWJsZSdzIGhlYXAgdG8gYSBuZXcKcmVsZmlsZW5vZGUgYnV0IGxlYXZlcyB0aGUg dGFibGUncyBpbmRleGVzIG9uIHRoZWlyIGV4aXN0aW5nCnJlbGZpbGVub2Rlcy4gIFRoZSB0d28g dGhlbiByb2xsIGJhY2sgYnkgZGlmZmVyZW50IG1lY2hhbmlzbXM6IG9uIGFib3J0CnRoZSBoZWFw J3MgbmV3IGZpbGUgaXMgZGlzY2FyZGVkLCBmcmVlaW5nIHRoZSBoZWFwIFRJRHMgY29uc3VtZWQg Ynkgcm93cwppbnNlcnRlZCBhZnRlciB0aGUgU0VUIFRBQkxFU1BBQ0UsIHdoaWxlIHRoZSBpbmRl eCBlbnRyaWVzIGZvciB0aG9zZSByb3dzCndlcmUgd3JpdHRlbiB0byB0aGUgdW5jaGFuZ2VkIGlu ZGV4IGZpbGVzIGFuZCBzdXJ2aXZlLiAgQSBsYXRlciBpbnNlcnQKY2FuIHJldXNlIGEgZnJlZWQg aGVhcCBUSUQsIGxlYXZpbmcgdHdvIGluZGV4IGVudHJpZXMgdGhhdCBwb2ludCBhdCB0aGUKc2Ft ZSBsaXZlIGhlYXAgdHVwbGUuICBUaGlzIHN1cmZhY2VzIGFzIGEgX2J0X3Bvc3RpbmdfdmFsaWQg YXNzZXJ0aW9uCmZhaWx1cmUgaW4gbmJ0cmVlIGRlZHVwbGljYXRpb24sIGFuZCBhcyBkdXBsaWNh dGUgcm93cyB0aHJvdWdoIGFuCmluZGV4LW9ubHkgc2NhbiBpbiBnaXN0LiAgQSBUUlVOQ0FURSBh ZnRlciB0aGUgbW92ZSBpbiB0aGUgc2FtZQp0cmFuc2FjdGlvbiB0cnVuY2F0ZXMgdGhlIG9sZCBp bmRleCBmaWxlcyBpbiBwbGFjZSwgd2hpY2ggYSByb2xsYmFjawpjYW5ub3QgdW5kbyBlaXRoZXIu CgpGaXggYnkgZ2l2aW5nIGVhY2ggaW5kZXggb2YgdGhlIHRhYmxlIGEgbmV3IHJlbGZpbGVudW1i ZXIgaW4gdGhlIHNhbWUKQUxURVIsIGNvcHlpbmcgaXQgd2l0aGluIGl0cyBvd24gdGFibGVzcGFj ZSAodGhlIGluZGV4ZXMgc3RheSB3aGVyZSB0aGV5CmFyZSwgYXMgZG9jdW1lbnRlZCksIHNvIHRo YXQgYW4gYWJvcnQgZGlzY2FyZHMgdGhlIG5ldyBoZWFwIGFuZCBpbmRleApmaWxlcyB0b2dldGhl ci4gIFR3byBjYXNlcyBuZWVkIG5vIGNvcHk6CgotIFRoZSBBTFRFUiBpcyBhIHBsYWluIEFMVEVS IFRBQkxFIC4uLiBTRVQgVEFCTEVTUEFDRSBvZiBhIHNpbmdsZQogIHRhYmxlLCB3aXRoIG5vIG90 aGVyIHN1YmNvbW1hbmQsIHNlbnQgYnkgYSBjbGllbnQgYXMgdGhlIG9ubHkKICBzdGF0ZW1lbnQg b2YgYSBzaW1wbGUgUXVlcnkgbWVzc2FnZSBvdXRzaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2ssIHNv CiAgdGhlIHRyYW5zYWN0aW9uIGVuZHMgcmlnaHQgYWZ0ZXIgaXQuICBBbnkgb3RoZXIgc3ViY29t bWFuZCBjb3VsZCBydW4KICB1c2VyIGNvZGUgYWZ0ZXIgdGhlIG1vdmU6IHRoZSB2YWxpZGF0aW9u IG9mIGFuIGluaGVyaXRhbmNlIGNoaWxkJ3MKICBuZXcgQ0hFQ0sgY29uc3RyYWludCwgYSBzcWxf ZHJvcCBldmVudCB0cmlnZ2VyLCBhbmQgc28gb24uICBUaGlzIGFsc28KICByZXF1aXJlcyB0aGF0 IG5vIGRkbF9jb21tYW5kX2VuZCBldmVudCB0cmlnZ2VyIHJ1bnMgYWZ0ZXIgaXQuICBBCiAgc3Rh dGVtZW50IHNlbnQgdGhyb3VnaCB0aGUgZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wgYWx3YXlzIGNv cGllczogYQogIGxhdGVyIHN0YXRlbWVudCBvZiB0aGUgc2FtZSBwaXBlbGluZSBzaGFyZXMgaXRz IHRyYW5zYWN0aW9uIHVudGlsCiAgdGhlIG5leHQgU3luYywgYW5kIHRoZSBiYWNrZW5kIGNhbm5v dCB0ZWxsIHdoZXRoZXIgb25lIHdpbGwgZm9sbG93LgogIElzRXh0ZW5kZWRRdWVyeU1lc3NhZ2Uo KSBpcyBhZGRlZCB0byBwb3N0Z3Jlcy5jIHRvIHRlbGwgdGhlIHR3bwogIGFwYXJ0LgoKLSBUaGUg aW5kZXgncyBjdXJyZW50IGZpbGUgd2FzIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgc3VidHJhbnNh Y3Rpb24sCiAgZm9yIGV4YW1wbGUgYW4gaW5kZXggY3JlYXRlZCwgb3IgbW92ZWQsIGVhcmxpZXIg aW4gaXQuICBBbiBhYm9ydAogIGRpc2NhcmRzIHRoYXQgZmlsZSB0b2dldGhlciB3aXRoIHRoZSBo ZWFwJ3MgbmV3IG9uZS4gIFRoaXMgYWxzbyBsZXRzCiAgYSB0cmFuc2FjdGlvbiBtb3ZlIHRoZSBp bmRleGVzIGZpcnN0IGFuZCB0aGVuIHRoZSB0YWJsZSB3aXRob3V0CiAgY29weWluZyB0aGUgaW5k ZXhlcyB0d2ljZS4KClRoZSByZWdyZXNzaW9uIHRlc3QgY2hlY2tzIHRoYXQgdGhlIEFMVEVSIG9u IGl0cyBvd24gbGVhdmVzIHRoZSBpbmRleApmaWxlcyB1bnRvdWNoZWQsIGFuZCB0aGF0IHNlbnQg dGhyb3VnaCB0aGUgZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wgaXQKZ2l2ZXMgdGhlbSBuZXcgZmls ZXM7IHRoYXQgY29tYmluZWQgd2l0aCBhIENIRUNLIGNvbnN0cmFpbnQgd2hvc2UKdmFsaWRhdGlv biBvbiBhbiBpbmhlcml0YW5jZSBjaGlsZCB3cml0ZXMgdG8gdGhlIHRhYmxlIGFmdGVyIHRoZSBt b3ZlCmFuZCBmYWlscywgaXQgbGVhdmVzIG5vIHN0YWxlIGluZGV4IGVudHJ5OyB0aGF0IGluIGEg dHJhbnNhY3Rpb24gYmxvY2sgYQpyb2xsYmFjayBhZnRlciBpbnNlcnRpbmcgb3IgdHJ1bmNhdGlu ZyBsZWF2ZXMgdGhlIGluZGV4IGZpbGUgYXQgaXRzCnByZS10cmFuc2FjdGlvbiBzaXplOyB0aGF0 IGFuIGluZGV4IGNyZWF0ZWQgb3IgbW92ZWQgZWFybGllciBpbiB0aGUKc3VidHJhbnNhY3Rpb24g aXMgbm90IGNvcGllZDsgYW5kIHRoYXQgYWZ0ZXIgYSByb2xsYmFjayB0byBhIHNhdmVwb2ludCwK YW4gaW5kZXggY3JlYXRlZCwgcmVpbmRleGVkIG9yIGFscmVhZHkgY29waWVkIGJlZm9yZSB0aGUg c2F2ZXBvaW50CnJldHVybnMgbm8gcm93IGZvciB0aGUgcm9sbGVkLWJhY2sgdmFsdWVzLgoKQnVn OiAjMTk2ODYKUmVwb3J0ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4KU3VnZ2VzdGVkLWJ5OiBBbmRy ZXMgRnJldW5kClJldmlld2VkLWJ5OiBBbGV4YW5kcmUgRmVsaXBlClJldmlld2VkLWJ5OiBTaGlo YW8gWmhvbmcKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgIHwg MTUyICsrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAg ICAgICAgICAgICB8ICAxNyArKysKIHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaCAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVzcGFjZS5vdXQgfCAxNjQgKysrKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2Uuc3FsICAgICAg fCAxMDggKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDQzOSBpbnNlcnRpb25zKCsp LCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggOTNhZDQ5ZTU5 ZmQuLjFjYzhiNDJmZDA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtOTgsNiArOTgs NyBAQAogI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZXZ0Y2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBAIC02OTMsNyArNjk0LDExIEBAIHN0YXRpYyB2 b2lkIEFUUHJlcENoYW5nZVBlcnNpc3RlbmNlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRp b24gcmVsLAogCQkJCQkJCQkJYm9vbCB0b0xvZ2dlZCk7CiBzdGF0aWMgdm9pZCBBVFByZXBTZXRU YWJsZVNwYWNlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQlj b25zdCBjaGFyICp0YWJsZXNwYWNlbmFtZSwgTE9DS01PREUgbG9ja21vZGUpOwotc3RhdGljIHZv aWQgQVRFeGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQsIE9pZCBuZXdUYWJsZVNwYWNlLCBM T0NLTU9ERSBsb2NrbW9kZSk7CitzdGF0aWMgdm9pZCBBVEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0 YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tNT0RFIGxvY2ttb2RlLAorCQkJCQkJCQli b29sIGNvcHlJbmRleGVzKTsKK3N0YXRpYyBib29sIEFUU2V0VGFibGVTcGFjZUNvcHlJbmRleGVz KEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsIExpc3QgKndxdWV1ZSwKKwkJCQkJCQkJCSAgIEFs dGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CitzdGF0aWMgdm9pZCBBVEV4ZWNTZXRU YWJsZVNwYWNlTmV3SW5kZXhSZWxmaWxlbnVtYmVyKE9pZCBpbmRleE9pZCwgTE9DS01PREUgbG9j a21vZGUpOwogc3RhdGljIHZvaWQgQVRFeGVjU2V0VGFibGVTcGFjZU5vU3RvcmFnZShSZWxhdGlv biByZWwsIE9pZCBuZXdUYWJsZVNwYWNlKTsKIHN0YXRpYyB2b2lkIEFURXhlY1NldFJlbE9wdGlv bnMoUmVsYXRpb24gcmVsLCBMaXN0ICpkZWZMaXN0LAogCQkJCQkJCQlBbHRlclRhYmxlVHlwZSBv cGVyYXRpb24sCkBAIC02MDk4LDcgKzYxMDMsOSBAQCBBVFJld3JpdGVUYWJsZXMoQWx0ZXJUYWJs ZVN0bXQgKnBhcnNldHJlZSwgTGlzdCAqKndxdWV1ZSwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkg KiBqdXN0IGRvIGEgYmxvY2stYnktYmxvY2sgY29weS4KIAkJCSAqLwogCQkJaWYgKHRhYi0+bmV3 VGFibGVTcGFjZSkKLQkJCQlBVEV4ZWNTZXRUYWJsZVNwYWNlKHRhYi0+cmVsaWQsIHRhYi0+bmV3 VGFibGVTcGFjZSwgbG9ja21vZGUpOworCQkJCUFURXhlY1NldFRhYmxlU3BhY2UodGFiLT5yZWxp ZCwgdGFiLT5uZXdUYWJsZVNwYWNlLCBsb2NrbW9kZSwKKwkJCQkJCQkJCUFUU2V0VGFibGVTcGFj ZUNvcHlJbmRleGVzKHBhcnNldHJlZSwgKndxdWV1ZSwKKwkJCQkJCQkJCQkJCQkJCSAgIGNvbnRl eHQpKTsKIAkJfQogCiAJCS8qCkBAIC0xNzUyOSwxMyArMTc1MzYsMTYgQEAgQVRFeGVjU2V0UmVs T3B0aW9ucyhSZWxhdGlvbiByZWwsIExpc3QgKmRlZkxpc3QsIEFsdGVyVGFibGVUeXBlIG9wZXJh dGlvbiwKICAqIHJld3JpdGluZyB0byBiZSBkb25lLCBzbyB3ZSBqdXN0IHdhbnQgdG8gY29weSB0 aGUgZGF0YSBhcyBmYXN0IGFzIHBvc3NpYmxlLgogICovCiBzdGF0aWMgdm9pZAotQVRFeGVjU2V0 VGFibGVTcGFjZShPaWQgdGFibGVPaWQsIE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9ERSBsb2Nr bW9kZSkKK0FURXhlY1NldFRhYmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFj ZSwgTE9DS01PREUgbG9ja21vZGUsCisJCQkJCWJvb2wgY29weUluZGV4ZXMpCiB7CiAJUmVsYXRp b24JcmVsOwogCU9pZAkJCXJlbHRvYXN0cmVsaWQ7CisJY2hhcgkJcmVsa2luZDsKIAlSZWxGaWxl TnVtYmVyIG5ld3JlbGZpbGVudW1iZXI7CiAJUmVsRmlsZUxvY2F0b3IgbmV3cmxvY2F0b3I7CiAJ TGlzdAkgICAqcmVsdG9hc3RpZHhpZHMgPSBOSUw7CisJTGlzdAkgICAqcmVsdGFiaWR4aWRzID0g TklMOwogCUxpc3RDZWxsICAgKmxjOwogCiAJLyoKQEAgLTE3NTUzLDYgKzE3NTYzLDcgQEAgQVRF eGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQsIE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9E RSBsb2NrbW9kZSkKIAl9CiAKIAlyZWx0b2FzdHJlbGlkID0gcmVsLT5yZF9yZWwtPnJlbHRvYXN0 cmVsaWQ7CisJcmVsa2luZCA9IHJlbC0+cmRfcmVsLT5yZWxraW5kOwogCS8qIEZldGNoIHRoZSBs aXN0IG9mIGluZGV4ZXMgb24gdG9hc3QgcmVsYXRpb24gaWYgbmVjZXNzYXJ5ICovCiAJaWYgKE9p ZElzVmFsaWQocmVsdG9hc3RyZWxpZCkpCiAJewpAQCAtMTc1OTksNiArMTc2MTAsMTQgQEAgQVRF eGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQsIE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9E RSBsb2NrbW9kZSkKIAogCVJlbGF0aW9uQXNzdW1lTmV3UmVsZmlsZWxvY2F0b3IocmVsKTsKIAor CS8qCisJICogSWYgdGhpcyBpcyBhIHRhYmxlLCBjb2xsZWN0IGl0cyBpbmRleCBsaXN0IG5vdywg d2hpbGUgdGhlIHJlbGF0aW9uIGlzCisJICogc3RpbGwgb3Blbiwgc28gd2UgY2FuIGdpdmUgZWFj aCBpbmRleCBhIGZyZXNoIHJlbGZpbGVudW1iZXIgYmVsb3cuCisJICovCisJaWYgKGNvcHlJbmRl eGVzICYmCisJCShyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcmVsa2luZCA9PSBSRUxL SU5EX01BVFZJRVcpKQorCQlyZWx0YWJpZHhpZHMgPSBSZWxhdGlvbkdldEluZGV4TGlzdChyZWwp OworCiAJcmVsYXRpb25fY2xvc2UocmVsLCBOb0xvY2spOwogCiAJLyogTWFrZSBzdXJlIHRoZSBy ZWx0YWJsZXNwYWNlIGNoYW5nZSBpcyB2aXNpYmxlICovCkBAIC0xNzYwNiwxMiArMTc2MjUsMTM1 IEBAIEFURXhlY1NldFRhYmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwg TE9DS01PREUgbG9ja21vZGUpCiAKIAkvKiBNb3ZlIGFzc29jaWF0ZWQgdG9hc3QgcmVsYXRpb24g YW5kL29yIGluZGV4ZXMsIHRvbyAqLwogCWlmIChPaWRJc1ZhbGlkKHJlbHRvYXN0cmVsaWQpKQot CQlBVEV4ZWNTZXRUYWJsZVNwYWNlKHJlbHRvYXN0cmVsaWQsIG5ld1RhYmxlU3BhY2UsIGxvY2tt b2RlKTsKKwkJQVRFeGVjU2V0VGFibGVTcGFjZShyZWx0b2FzdHJlbGlkLCBuZXdUYWJsZVNwYWNl LCBsb2NrbW9kZSwgY29weUluZGV4ZXMpOwogCWZvcmVhY2gobGMsIHJlbHRvYXN0aWR4aWRzKQot CQlBVEV4ZWNTZXRUYWJsZVNwYWNlKGxmaXJzdF9vaWQobGMpLCBuZXdUYWJsZVNwYWNlLCBsb2Nr bW9kZSk7CisJCUFURXhlY1NldFRhYmxlU3BhY2UobGZpcnN0X29pZChsYyksIG5ld1RhYmxlU3Bh Y2UsIGxvY2ttb2RlLCBjb3B5SW5kZXhlcyk7CiAKIAkvKiBDbGVhbiB1cCAqLwogCWxpc3RfZnJl ZShyZWx0b2FzdGlkeGlkcyk7CisKKwkvKgorCSAqIFRoZSBoZWFwIG5vdyBoYXMgYSBuZXcgcmVs ZmlsZW5vZGUuICBHaXZlIGVhY2ggb2YgdGhlIHRhYmxlJ3MgaW5kZXhlcyBhCisJICogZnJlc2gg cmVsZmlsZW5vZGUgdG9vLCBzbyB0aGF0IHRoZSBpbmRleGVzIHNoYXJlIHRoZSBoZWFwJ3MgcmV3 cml0ZQorCSAqIGZhdGUgYWNyb3NzIGNvbW1pdCBhbmQgYWJvcnQuICBTZWUKKwkgKiBBVEV4ZWNT ZXRUYWJsZVNwYWNlTmV3SW5kZXhSZWxmaWxlbnVtYmVyLgorCSAqLworCWZvcmVhY2gobGMsIHJl bHRhYmlkeGlkcykKKwkJQVRFeGVjU2V0VGFibGVTcGFjZU5ld0luZGV4UmVsZmlsZW51bWJlcihs Zmlyc3Rfb2lkKGxjKSwgbG9ja21vZGUpOworCWxpc3RfZnJlZShyZWx0YWJpZHhpZHMpOworfQor CisvKgorICogRG9lcyBBTFRFUiBUQUJMRSBTRVQgVEFCTEVTUEFDRSBuZWVkIHRvIGdpdmUgdGhl IHRhYmxlJ3MgaW5kZXhlcyBuZXcgZmlsZXM/CisgKgorICogT25seSBpZiBzb21ldGhpbmcgY2Fu IHN0aWxsIG1vZGlmeSB0aGUgdGFibGUgaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24gYWZ0ZXIKKyAq IHRoZSBtb3ZlLiAgUmF0aGVyIHRoYW4gbGlzdGluZyBldmVyeSBwbGFjZSB3aGVyZSB1c2VyIGNv ZGUgY2FuIHJ1biBhZnRlcgorICogaXQgLS0gdGhlIHZhbGlkYXRpb24gb2Ygb3RoZXIgdGFibGVz IGluIHRoZSB3b3JrIHF1ZXVlLCBzdWNoIGFzIGFuCisgKiBpbmhlcml0YW5jZSBjaGlsZCBnZXR0 aW5nIGEgbmV3IENIRUNLIGNvbnN0cmFpbnQsIGZvcmVpZ24ga2V5IHZhbGlkYXRpb24sCisgKiBz cWxfZHJvcCBhbmQgdGFibGVfcmV3cml0ZSBldmVudCB0cmlnZ2VycywgYW5kIG1vcmUgLS0gdGhl IGZpbGVzIGFyZSBrZXB0CisgKiBvbmx5IGZvciB0aGUgb25lIGNhc2Ugd2hlcmUgbm9uZSBvZiB0 aGVtIGV4aXN0czogYSBwbGFpbgorICogIkFMVEVSIFRBQkxFIC4uLiBTRVQgVEFCTEVTUEFDRSIg b2YgYSBzaW5nbGUgdGFibGUsIHdpdGggbm8gb3RoZXIKKyAqIHN1YmNvbW1hbmQsIHNlbnQgYnkg YSBjbGllbnQgYXMgdGhlIG9ubHkgc3RhdGVtZW50IG9mIGEgc2ltcGxlIFF1ZXJ5CisgKiBtZXNz YWdlLCBvdXRzaWRlIGFueSB0cmFuc2FjdGlvbiBibG9jazogdGhlIHRyYW5zYWN0aW9uIHRoZW4g ZW5kcyByaWdodAorICogYWZ0ZXIgaXQuICBXaGF0IGNhbiBzdGlsbCBydW4gYWZ0ZXIgaXQgaXMg YSBkZGxfY29tbWFuZF9lbmQgZXZlbnQgdHJpZ2dlciwKKyAqIHNvIHRoYXQgY2FzZSBhbHNvIHJl cXVpcmVzIHRoYXQgdGhlcmUgaXMgbm9uZS4KKyAqCisgKiBBIHN0YXRlbWVudCBzZW50IGJ5IGFu IGV4dGVuZGVkLXByb3RvY29sIEV4ZWN1dGUgbWVzc2FnZSBhbHdheXMgY29waWVzOgorICogbGF0 ZXIgc3RhdGVtZW50cyBvZiB0aGUgc2FtZSBwaXBlbGluZSBzaGFyZSBpdHMgdHJhbnNhY3Rpb24g dW50aWwgdGhlIG5leHQKKyAqIFN5bmMsIGFuZCB0aGUgYmFja2VuZCBjYW5ub3QgdGVsbCB3aGV0 aGVyIGFueSB3aWxsIGZvbGxvdy4gIEZvcmNpbmcgYSBjb21taXQKKyAqIGFmdGVyIHRoZSBBTFRF UiB3b3VsZCBtYWtlIGl0IGNvbW1pdCBvbiBpdHMgb3duIHdoZW4gYSBsYXRlciBzdGF0ZW1lbnQg b2YKKyAqIHRoZSBwaXBlbGluZSBmYWlscywgd2hpY2ggaXMgbm90IGhvdyBBTFRFUiBUQUJMRSBi ZWhhdmVzIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK0FUU2V0VGFibGVTcGFjZUNvcHlJ bmRleGVzKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsIExpc3QgKndxdWV1ZSwKKwkJCQkJCSAg IEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlpZiAoY29udGV4dCA9PSBO VUxMIHx8IElzSW5UcmFuc2FjdGlvbkJsb2NrKGNvbnRleHQtPmlzVG9wTGV2ZWwpKQorCQlyZXR1 cm4gdHJ1ZTsKKwlpZiAoTXlCYWNrZW5kVHlwZSAhPSBCX0JBQ0tFTkQgfHwgSXNFeHRlbmRlZFF1 ZXJ5TWVzc2FnZSgpKQorCQlyZXR1cm4gdHJ1ZTsKKwlpZiAocGFyc2V0cmVlID09IE5VTEwgfHwg bGlzdF9sZW5ndGgocGFyc2V0cmVlLT5jbWRzKSAhPSAxIHx8CisJCWNhc3ROb2RlKEFsdGVyVGFi bGVDbWQsIGxpbml0aWFsKHBhcnNldHJlZS0+Y21kcykpLT5zdWJ0eXBlICE9IEFUX1NldFRhYmxl U3BhY2UgfHwKKwkJbGlzdF9sZW5ndGgod3F1ZXVlKSAhPSAxKQorCQlyZXR1cm4gdHJ1ZTsKKwlp ZiAoRXZlbnRDYWNoZUxvb2t1cChFVlRfRERMQ29tbWFuZEVuZCkgIT0gTklMKQorCQlyZXR1cm4g dHJ1ZTsKKworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIEdpdmUgb25lIG9mIGEgdGFibGUn cyBpbmRleGVzIGEgZnJlc2ggcmVsZmlsZW51bWJlciB3aXRoaW4gaXRzIGV4aXN0aW5nCisgKiB0 YWJsZXNwYWNlLCBjb3B5aW5nIHRoZSBjdXJyZW50IGluZGV4IGZpbGUgdG8gdGhlIG5ldyByZWxm aWxlbnVtYmVyLgorICoKKyAqIEFURXhlY1NldFRhYmxlU3BhY2UoKSBjYWxscyB0aGlzIGZvciBl YWNoIGluZGV4IG9mIGEgdGFibGUgd2hvc2UgaGVhcCBpdCBoYXMKKyAqIGp1c3QgcmV3cml0dGVu IHRvIGEgbmV3IHJlbGZpbGVub2RlLiAgVGhlIGluZGV4ZXMgbXVzdCBzaGFyZSB0aGUgaGVhcCdz CisgKiB0cmFuc2FjdGlvbmFsIGZhdGU6IGFuIGFib3J0IGhhcyB0byBkaXNjYXJkIHRoZSBpbmRl eCBlbnRyaWVzIHdyaXR0ZW4gZHVyaW5nCisgKiB0aGUgdHJhbnNhY3Rpb24gdG9nZXRoZXIgd2l0 aCB0aGUgaGVhcCdzIG5ldyBmaWxlLCBzaW5jZSB0aGUgaGVhcCBUSURzIHRob3NlCisgKiBlbnRy aWVzIHBvaW50IGF0IGFyZSBmcmVlZCBieSB0aGUgYWJvcnQgYW5kIGNhbiBiZSByZXVzZWQgYnkg bGF0ZXIgaW5zZXJ0cy4KKyAqIENvcHlpbmcgdGhlIGV4aXN0aW5nIGluZGV4IGZpbGUga2VlcHMg dGhlIGFkZGVkIGNvc3QgY2xvc2UgdG8gdGhhdCBvZiB0aGUKKyAqIGhlYXAgbW92ZSBpdHNlbGY7 IHRoZSBpbmRleCBzdGF5cyBpbiBpdHMgb3duIHRhYmxlc3BhY2UsIGFzIGRvY3VtZW50ZWQuCisg Ki8KK3N0YXRpYyB2b2lkCitBVEV4ZWNTZXRUYWJsZVNwYWNlTmV3SW5kZXhSZWxmaWxlbnVtYmVy KE9pZCBpbmRleE9pZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJUmVsYXRpb24JaW5kOworCVJl bEZpbGVOdW1iZXIgbmV3cmVsZmlsZW51bWJlcjsKKwlSZWxGaWxlTG9jYXRvciBuZXdybG9jYXRv cjsKKwlSZWxhdGlvbglwZ19jbGFzczsKKwlIZWFwVHVwbGUJdHVwbGU7CisJSXRlbVBvaW50ZXJE YXRhIG90aWQ7CisJRm9ybV9wZ19jbGFzcyByZF9yZWw7CisKKwlpbmQgPSByZWxhdGlvbl9vcGVu KGluZGV4T2lkLCBsb2NrbW9kZSk7CisKKwkvKgorCSAqIE9ubHkgcGxhaW4gaW5kZXhlcyBoYXZl IHN0b3JhZ2UgdGhhdCBjYW4gaG9sZCB0aGUgc3RhbGUgZW50cmllcy4gIEFuCisJICogaW5kZXgg d2hvc2UgY3VycmVudCBmaWxlIHdhcyBjcmVhdGVkIGluIHRoaXMgc3VidHJhbnNhY3Rpb24gKHRo ZSBpbmRleAorCSAqIGl0c2VsZiwgb3IgYSBuZXcgZmlsZSBmb3IgaXQpIGlzIGRpc2NhcmRlZCB0 b2dldGhlciB3aXRoIHRoZSBoZWFwJ3MgbmV3CisJICogZmlsZSBvbiBhYm9ydCwgc28gaXQgbmVl ZHMgbm8gY29weS4gIHJkX25ld1JlbGZpbGVsb2NhdG9yU3ViaWQgY2FuIGJlCisJICogemVybyBh ZnRlciBhIHJvbGxiYWNrIHRvIGEgc2F2ZXBvaW50IGV2ZW4gdGhvdWdoIHRoZSBmaWxlIGlzIG5l dzsgdGhlbgorCSAqIHRoaXMgZmFsbHMgYmFjayB0byByZF9jcmVhdGVTdWJpZCwgYW5kIGNvcGll cyBpZiB0aGF0IGRvZXMgbm90IG1hdGNoCisJICogZWl0aGVyLgorCSAqLworCWlmIChpbmQtPnJk X3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX0lOREVYIHx8CisJCSFSRUxLSU5EX0hBU19TVE9SQUdF KGluZC0+cmRfcmVsLT5yZWxraW5kKSB8fAorCQlNYXgoaW5kLT5yZF9uZXdSZWxmaWxlbG9jYXRv clN1YmlkLCBpbmQtPnJkX2NyZWF0ZVN1YmlkKSA9PQorCQlHZXRDdXJyZW50U3ViVHJhbnNhY3Rp b25JZCgpKQorCXsKKwkJcmVsYXRpb25fY2xvc2UoaW5kLCBOb0xvY2spOworCQlyZXR1cm47CisJ fQorCisJLyogQWxsb2NhdGUgYSBuZXcgcmVsZmlsZW51bWJlciBpbiB0aGUgaW5kZXgncyBjdXJy ZW50IHRhYmxlc3BhY2UuICovCisJbmV3cmVsZmlsZW51bWJlciA9IEdldE5ld1JlbEZpbGVOdW1i ZXIoaW5kLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UsIE5VTEwsCisJCQkJCQkJCQkJICAgaW5kLT5y ZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKKwluZXdybG9jYXRvciA9IGluZC0+cmRfbG9jYXRvcjsK KwluZXdybG9jYXRvci5yZWxOdW1iZXIgPSBuZXdyZWxmaWxlbnVtYmVyOworCisJLyogQ29weSB0 aGUgaW5kZXggaW50byB0aGUgbmV3IGZpbGUgYW5kIHNjaGVkdWxlIHRoZSBvbGQgb25lIGZvciBj bGVhbnVwLiAqLworCWluZGV4X2NvcHlfZGF0YShpbmQsIG5ld3Jsb2NhdG9yKTsKKworCS8qIFVw ZGF0ZSB0aGUgcGdfY2xhc3Mgcm93OyBvbmx5IHRoZSByZWxmaWxlbm9kZSBjaGFuZ2VzLiAqLwor CXBnX2NsYXNzID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxv Y2spOworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGVMb2NrZWRDb3B5MShSRUxPSUQsIE9iamVjdElk R2V0RGF0dW0oaW5kZXhPaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBpbmRleE9pZCk7 CisJb3RpZCA9IHR1cGxlLT50X3NlbGY7CisJcmRfcmVsID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNU UlVDVCh0dXBsZSk7CisJcmRfcmVsLT5yZWxmaWxlbm9kZSA9IG5ld3JlbGZpbGVudW1iZXI7CisJ Q2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2NsYXNzLCAmb3RpZCwgdHVwbGUpOworCVVubG9ja1R1cGxl KHBnX2NsYXNzLCAmb3RpZCwgSW5wbGFjZVVwZGF0ZVR1cGxlTG9jayk7CisJaGVhcF9mcmVldHVw bGUodHVwbGUpOworCXRhYmxlX2Nsb3NlKHBnX2NsYXNzLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwor CUludm9rZU9iamVjdFBvc3RBbHRlckhvb2soUmVsYXRpb25SZWxhdGlvbklkLCBpbmRleE9pZCwg MCk7CisJUmVsYXRpb25Bc3N1bWVOZXdSZWxmaWxlbG9jYXRvcihpbmQpOworCisJcmVsYXRpb25f Y2xvc2UoaW5kLCBOb0xvY2spOworCisJLyogTWFrZSB0aGUgcmVsZmlsZW5vZGUgY2hhbmdlIHZp c2libGUuICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYwppbmRleCBiNmJkZmUyMTNmZS4uMTY2M2NmN2FlYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAg LTI0NTcsNiArMjQ1NywyMyBAQCBjaGVja19sb2dfc3RhdGVtZW50KExpc3QgKnN0bXRfbGlzdCkK IAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBJc0V4dGVuZGVkUXVlcnlNZXNzYWdlCisgKgkJ SXMgdGhlIGN1cnJlbnQgc3RhdGVtZW50IGJlaW5nIHJ1biBieSBhbiBleHRlbmRlZC1xdWVyeS1w cm90b2NvbAorICoJCW1lc3NhZ2U/CisgKgorICogU3VjaCBhIHN0YXRlbWVudCBzaGFyZXMgaXRz IGltcGxpY2l0IHRyYW5zYWN0aW9uIHdpdGggd2hhdGV2ZXIgZWxzZSB0aGUKKyAqIGNsaWVudCBz ZW5kcyBiZWZvcmUgdGhlIG5leHQgU3luYywgd2hpY2ggdGhlIGJhY2tlbmQgY2Fubm90IGtub3cg d2hpbGUgaXQKKyAqIHJ1bnMgdGhlIHN0YXRlbWVudC4gIFRoZSBmaXJzdCBzdGF0ZW1lbnQgb2Yg YSBwaXBlbGluZSBjYW5ub3QgYmUgdG9sZCBmcm9tCisgKiBvbmUgZm9sbG93ZWQgZGlyZWN0bHkg YnkgU3luYzogWEFDVF9GTEFHU19QSVBFTElOSU5HIGlzIHNldCBvbmx5IG9uY2UgYW4KKyAqIEV4 ZWN1dGUgY29tcGxldGVzLgorICovCitib29sCitJc0V4dGVuZGVkUXVlcnlNZXNzYWdlKHZvaWQp Cit7CisJcmV0dXJuIGRvaW5nX2V4dGVuZGVkX3F1ZXJ5X21lc3NhZ2U7Cit9CisKIC8qCiAgKiBj aGVja19sb2dfZHVyYXRpb24KICAqCQlEZXRlcm1pbmUgd2hldGhlciBjdXJyZW50IGNvbW1hbmQn cyBkdXJhdGlvbiBzaG91bGQgYmUgbG9nZ2VkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29w L3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IDE1MTJkMmRmMTk2 Li4zNWYyNDg4OTVkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysr IGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTEzMTIsNiArMTMxMiw3IEBAIFByb2Nl c3NVdGlsaXR5U2xvdyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQlhdGNvbnRleHQucmVsaWQg PSByZWxpZDsKIAkJCQkJCWF0Y29udGV4dC5wYXJhbXMgPSBwYXJhbXM7CiAJCQkJCQlhdGNvbnRl eHQucXVlcnlFbnYgPSBxdWVyeUVudjsKKwkJCQkJCWF0Y29udGV4dC5pc1RvcExldmVsID0gaXNU b3BMZXZlbDsKIAogCQkJCQkJLyogLi4uIGVuc3VyZSB3ZSBoYXZlIGFuIGV2ZW50IHRyaWdnZXIg Y29udGV4dCAuLi4gKi8KIAkJCQkJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydChwYXJzZXRy ZWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oIGIvc3JjL2luY2x1 ZGUvdGNvcC90Y29wcHJvdC5oCmluZGV4IDViYzViY2ZiMjBkLi45OWU4MzE4OTk0NiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3Av dGNvcHByb3QuaApAQCAtODYsNiArODYsNyBAQCBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBQb3N0 Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLAogCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnVzZXJu YW1lKTsKIGV4dGVybiB2b2lkIFJlc2V0VXNhZ2Uodm9pZCk7CiBleHRlcm4gdm9pZCBTaG93VXNh Z2UoY29uc3QgY2hhciAqdGl0bGUpOworZXh0ZXJuIGJvb2wgSXNFeHRlbmRlZFF1ZXJ5TWVzc2Fn ZSh2b2lkKTsKIGV4dGVybiBpbnQJY2hlY2tfbG9nX2R1cmF0aW9uKGNoYXIgKm1zZWNfc3RyLCBi b29sIHdhc19sb2dnZWQpOwogZXh0ZXJuIHZvaWQgc2V0X2RlYnVnX29wdGlvbnMoaW50IGRlYnVn X2ZsYWcsCiAJCQkJCQkJICBHdWNDb250ZXh0IGNvbnRleHQsIEd1Y1NvdXJjZSBzb3VyY2UpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC91dGlsaXR5LmggYi9zcmMvaW5jbHVkZS90Y29w L3V0aWxpdHkuaAppbmRleCBhYmJkYjQwMWJmNi4uMDM1NzU1MGRhNzEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5o CkBAIC0zNCw2ICszNCw3IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyVGFibGVVdGlsaXR5Q29udGV4 dAogCU9pZAkJCXJlbGlkOwkJCS8qIE9JRCBvZiBBTFRFUidzIHRhcmdldCB0YWJsZSAqLwogCVBh cmFtTGlzdEluZm8gcGFyYW1zOwkJLyogYW55IHBhcmFtZXRlcnMgYXZhaWxhYmxlIHRvIEFMVEVS IFRBQkxFICovCiAJUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnY7IC8qIGV4ZWN1dGlvbiBlbnZp cm9ubWVudCBmb3IgQUxURVIgVEFCTEUgKi8KKwlib29sCQlpc1RvcExldmVsOwkJLyogQUxURVIg VEFCTEUgaXMgYSB0b3AtbGV2ZWwgc3RhdGVtZW50ICovCiB9IEFsdGVyVGFibGVVdGlsaXR5Q29u dGV4dDsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVz cGFjZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RhYmxlc3BhY2Uub3V0CmluZGV4 IGYwZGQyNWNkZjBjLi4zNDlhMmQzYTliMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC90YWJsZXNwYWNlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Rh Ymxlc3BhY2Uub3V0CkBAIC05NTEsNiArOTUxLDE3MCBAQCBFUlJPUjogIHBlcm1pc3Npb24gZGVu aWVkIGZvciB0YWJsZXNwYWNlIHJlZ3Jlc3NfdGJsc3BhY2UKIFJFSU5ERVggKFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZSwgQ09OQ1VSUkVOVExZKSBUQUJMRSB0YWJsZXNwYWNlX3RhYmxlOyAt LSBmYWlsCiBFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciB0YWJsZXNwYWNlIHJlZ3Jlc3Nf dGJsc3BhY2UKIFJFU0VUIFJPTEU7CistLSBBTFRFUiBUQUJMRSBTRVQgVEFCTEVTUEFDRSBtb3Zl cyB0aGUgaGVhcCBhbmQgbGVhdmVzIHRoZSBpbmRleGVzIGluIHRoZWlyCistLSB0YWJsZXNwYWNl LiAgUnVuIG9uIGl0cyBvd24sIGFzIGhlcmUsIGl0IGxlYXZlcyB0aGVpciBmaWxlcyBhbG9uZSB0 b28uCitDUkVBVEUgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayAoYSBpbnQpOworSU5TRVJUIElOVE8g dGJzcGFjZV9yb2xsYmFjayBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCk7CitDUkVBVEUg SU5ERVggdGJzcGFjZV9yb2xsYmFja19pZHggT04gdGJzcGFjZV9yb2xsYmFjayAoYSk7CitTRUxF Q1QgcGdfcmVsYXRpb25fc2l6ZSgndGJzcGFjZV9yb2xsYmFja19pZHgnKSBBUyBpZHhfc2l6ZV9i ZWZvcmUgXGdzZXQKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFj a19pZHgnKSBBUyBpZHhfcGF0aCBcZ3NldAorQUxURVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayBT RVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVw YXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpID0gOidpZHhfcGF0aCcgQVMgaWR4X2ZpbGVfa2Vw dDsKKyBpZHhfZmlsZV9rZXB0IAorLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBT ZW50IHRocm91Z2ggdGhlIGV4dGVuZGVkIHF1ZXJ5IHByb3RvY29sLCBhIGxhdGVyIHN0YXRlbWVu dCBvZiB0aGUgc2FtZQorLS0gcGlwZWxpbmUgY291bGQgc2hhcmUgaXRzIHRyYW5zYWN0aW9uLCBz byB0aGUgaW5kZXhlcyBnZXQgbmV3IGZpbGVzLgorQUxURVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFj ayBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0IFxiaW5kIFxnCitTRUxFQ1QgcGdfcmVsYXRpb25f ZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgPD4gOidpZHhfcGF0aCcgQVMgaWR4X2Zp bGVfbmV3OworIGlkeF9maWxlX25ldyAKKy0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitB TFRFUiBUQUJMRSB0YnNwYWNlX3JvbGxiYWNrIFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2U7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4Jykg QVMgaWR4X3BhdGggXGdzZXQKKy0tIEluIGEgdHJhbnNhY3Rpb24gYmxvY2sgdGhlIGluZGV4ZXMg Z2V0IG5ldyBmaWxlcywgc28gdGhhdCBhIHJvbGxiYWNrCistLSBkaXNjYXJkcyB0aGUgZW50cmll cyBhZGRlZCBhZnRlciB0aGUgbW92ZSB0b2dldGhlciB3aXRoIHRoZSBoZWFwJ3MgZmlsZS4KK0JF R0lOOworQUxURVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayBTRVQgVEFCTEVTUEFDRSBwZ19kZWZh dWx0OworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcp IDw+IDonaWR4X3BhdGgnIEFTIGlkeF9maWxlX25ldzsKKyBpZHhfZmlsZV9uZXcgCistLS0tLS0t LS0tLS0tLQorIHQKKygxIHJvdykKKworSU5TRVJUIElOVE8gdGJzcGFjZV9yb2xsYmFjayBTRUxF Q1QgZ2VuZXJhdGVfc2VyaWVzKDEwMSwgMjAwMCk7CitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6ZSgn dGJzcGFjZV9yb2xsYmFja19pZHgnKSA+IDppZHhfc2l6ZV9iZWZvcmUgQVMgaWR4X2dyZXc7Cisg aWR4X2dyZXcgCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitST0xMQkFDSzsKK1NFTEVDVCBw Z19yZWxhdGlvbl9zaXplKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpID0gOmlkeF9zaXplX2JlZm9y ZSBBUyBpZHhfc2l6ZV9yZXN0b3JlZDsKKyBpZHhfc2l6ZV9yZXN0b3JlZCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIHRoZSBzYW1lIGZvciBhIFRSVU5DQVRFIGFmdGVy IHRoZSBtb3ZlLCB3aGljaCBpcyBkb25lIGluIHBsYWNlCitCRUdJTjsKK0FMVEVSIFRBQkxFIHRi c3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKK1RSVU5DQVRFIHRic3Bh Y2Vfcm9sbGJhY2s7CitST0xMQkFDSzsKK1NFTEVDVCBwZ19yZWxhdGlvbl9zaXplKCd0YnNwYWNl X3JvbGxiYWNrX2lkeCcpID0gOmlkeF9zaXplX2JlZm9yZSBBUyBpZHhfc2l6ZV9yZXN0b3JlZDsK KyBpZHhfc2l6ZV9yZXN0b3JlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vfcm9sbGJhY2s7CisgY291bnQgCistLS0tLS0t CisgICAxMDAKKygxIHJvdykKKworLS0gQW4gaW5kZXggY3JlYXRlZCBpbiB0aGUgc2FtZSBzdWJ0 cmFuc2FjdGlvbiBpcyBkaXNjYXJkZWQgd2l0aCB0aGUgaGVhcAorLS0gYW55d2F5IGFuZCBpcyBu b3QgY29waWVkLiAgTW92aW5nIHRoZSBpbmRleGVzIGZpcnN0IGFuZCB0aGVuIHRoZSB0YWJsZQor LS0gY29waWVzIGVhY2ggaW5kZXggb25seSBvbmNlLgorQkVHSU47CitDUkVBVEUgSU5ERVggdGJz cGFjZV9yb2xsYmFja19pZHgyIE9OIHRic3BhY2Vfcm9sbGJhY2sgKGEpOworU0VMRUNUIHBnX3Jl bGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeDInKSBBUyBpZHgyX3BhdGggXGdz ZXQKK0FMVEVSIElOREVYIHRic3BhY2Vfcm9sbGJhY2tfaWR4IFNFVCBUQUJMRVNQQUNFIHJlZ3Jl c3NfdGJsc3BhY2U7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJh Y2tfaWR4JykgQVMgaWR4X21vdmVkX3BhdGggXGdzZXQKK0FMVEVSIFRBQkxFIHRic3BhY2Vfcm9s bGJhY2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxl cGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgyJykgPSA6J2lkeDJfcGF0aCcgQVMgaWR4Ml9ub3Rf Y29waWVkLAorICBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA9 IDonaWR4X21vdmVkX3BhdGgnIEFTIGlkeF9ub3RfY29waWVkX2FnYWluOworIGlkeDJfbm90X2Nv cGllZCB8IGlkeF9ub3RfY29waWVkX2FnYWluIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworUk9MTEJBQ0s7 CitEUk9QIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2s7CistLSBBbiBpbmRleCBmaWxlIHRoYXQgaXMg bmV3IGluIHRoaXMgdHJhbnNhY3Rpb24gYnV0IG9sZGVyIHRoYW4gYSBzYXZlcG9pbnQKKy0tIHN1 cnZpdmVzIGEgcm9sbGJhY2sgdG8gaXQsIHNvIGl0IG11c3Qgc3RpbGwgZm9sbG93IGEgbW92ZSBt YWRlIGFmdGVyIHRoZQorLS0gc2F2ZXBvaW50OiBhbiBpbmRleCBjcmVhdGVkIG9yIHJlaW5kZXhl ZCBiZWZvcmUgaXQsIG9yIGFscmVhZHkgY29waWVkIGJ5CistLSBhbiBlYXJsaWVyIG1vdmUuICBS b3dzIGluc2VydGVkIGFmdGVyd2FyZHMgcmV1c2UgdGhlIFRJRHMgZnJlZWQgYnkgdGhlCistLSBy b2xsYmFja3M7IGEgc3RhbGUgaW5kZXggZW50cnkgd291bGQgbWF0Y2ggdGhlbS4KK0NSRUFURSBU QUJMRSB0YnNwYWNlX3N1YnhhY3QgKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRic3BhY2Vfc3VieGFj dCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCk7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBv ZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitCRUdJTjsKK0NSRUFURSBJTkRFWCB0 YnNwYWNlX3N1YnhhY3RfaWR4IE9OIHRic3BhY2Vfc3VieGFjdCAoYSk7CitTQVZFUE9JTlQgczsK K0FMVEVSIFRBQkxFIHRic3BhY2Vfc3VieGFjdCBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlOworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFNFTEVDVCAtZ2VuZXJhdGVfc2VyaWVz KDEsIDUwKTsKK1JPTExCQUNLIFRPIHM7CitDT01NSVQ7CitCRUdJTjsKK1JFSU5ERVggSU5ERVgg dGJzcGFjZV9zdWJ4YWN0X2lkeDsKK1NBVkVQT0lOVCBzOworQUxURVIgVEFCTEUgdGJzcGFjZV9z dWJ4YWN0IFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitJTlNFUlQgSU5UTyB0YnNw YWNlX3N1YnhhY3QgU0VMRUNUIC1nZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworUk9MTEJBQ0sgVE8g czsKK0NPTU1JVDsKK0JFR0lOOworQUxURVIgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0IFNFVCBUQUJM RVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1YnhhY3QgVkFM VUVTICgwKTsKK1NBVkVQT0lOVCBzOworQUxURVIgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0IFNFVCBU QUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1YnhhY3QgU0VMRUNU IC1nZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworUk9MTEJBQ0sgVE8gczsKK0NPTU1JVDsKK0lOU0VS VCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEwMSwgMzAwKTsK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vfc3VieGFjdCBXSEVSRSBhIDwgMDsKKyBjb3Vu dCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0YnNw YWNlX3N1YnhhY3Q7CisgY291bnQgCistLS0tLS0tCisgICAzMDEKKygxIHJvdykKKworUkVTRVQg ZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0RST1AgVEFCTEUgdGJz cGFjZV9zdWJ4YWN0OworLS0gQ29tYmluZWQgd2l0aCBhbm90aGVyIHN1YmNvbW1hbmQsIHRoZSBB TFRFUiBjYW4gcnVuIHVzZXIgY29kZSBhZnRlciB0aGUKKy0tIG1vdmUsIHN1Y2ggYXMgYSBDSEVD SyBjb25zdHJhaW50IHZhbGlkYXRlZCBvbiBhbiBpbmhlcml0YW5jZSBjaGlsZCBhZnRlcgorLS0g dGhlIHBhcmVudCB3YXMgbW92ZWQsIHNvIHRoZSBpbmRleGVzIGdldCBuZXcgZmlsZXMgZXZlbiBv dXRzaWRlIGEKKy0tIHRyYW5zYWN0aW9uIGJsb2NrLgorQ1JFQVRFIFRBQkxFIHRic3BhY2VfY29t YmluZWQgKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRic3BhY2VfY29tYmluZWQgU0VMRUNUIGdlbmVy YXRlX3NlcmllcygxLCAxMDApOworQ1JFQVRFIElOREVYIHRic3BhY2VfY29tYmluZWRfaWR4IE9O IHRic3BhY2VfY29tYmluZWQgKGEpOworQ1JFQVRFIFRBQkxFIHRic3BhY2VfY29tYmluZWRfY2hp bGQgKCkgSU5IRVJJVFMgKHRic3BhY2VfY29tYmluZWQpOworSU5TRVJUIElOVE8gdGJzcGFjZV9j b21iaW5lZF9jaGlsZCBWQUxVRVMgKDUwMDApOworQ1JFQVRFIEZVTkNUSU9OIHRic3BhY2VfY29t YmluZWRfY2hrKHYgaW50KSBSRVRVUk5TIGJvb2wgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVH SU4KKyAgSUYgdiA8IDUwMDAgVEhFTiBSRVRVUk4gdHJ1ZTsgRU5EIElGOworICBJTlNFUlQgSU5U TyB0YnNwYWNlX2NvbWJpbmVkIFNFTEVDVCAtZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKTsKKyAgUkFJ U0UgRVhDRVBUSU9OICdhYm9ydCBhZnRlciB3cml0aW5nJzsKK0VORCAkJDsKK0FMVEVSIFRBQkxF IHRic3BhY2VfY29tYmluZWQgU0VUIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSwKKyAgQURE IENPTlNUUkFJTlQgdGJzcGFjZV9jb21iaW5lZF9rIENIRUNLICh0YnNwYWNlX2NvbWJpbmVkX2No ayhhKSk7CitFUlJPUjogIGFib3J0IGFmdGVyIHdyaXRpbmcKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBm dW5jdGlvbiB0YnNwYWNlX2NvbWJpbmVkX2NoayhpbnRlZ2VyKSBsaW5lIDUgYXQgUkFJU0UKK0RS T1AgVEFCTEUgdGJzcGFjZV9jb21iaW5lZF9jaGlsZDsKK0lOU0VSVCBJTlRPIHRic3BhY2VfY29t YmluZWQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxMDEsIDMwMCk7CitTRVQgZW5hYmxlX3NlcXNj YW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQoKikg RlJPTSB0YnNwYWNlX2NvbWJpbmVkIFdIRVJFIGEgPCAwOworIGNvdW50IAorLS0tLS0tLQorICAg ICAwCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1h cHNjYW47CitEUk9QIFRBQkxFIHRic3BhY2VfY29tYmluZWQ7CitEUk9QIEZVTkNUSU9OIHRic3Bh Y2VfY29tYmluZWRfY2hrKGludCk7CiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2Ug UkVOQU1FIFRPIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZDsKIEFMVEVSIFRBQkxFIEFMTCBJTiBU QUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZh dWx0OwogQUxURVIgSU5ERVggQUxMIElOIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZV9yZW5h bWVkIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC90YWJsZXNwYWNlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2Uu c3FsCmluZGV4IGM0M2E1OWU1OTU3Li5lMjEwNDA5ZmIwMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdGFibGVzcGFjZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGFi bGVzcGFjZS5zcWwKQEAgLTQyMCw2ICs0MjAsMTE0IEBAIFJFSU5ERVggKFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZSkgVEFCTEUgdGFibGVzcGFjZV90YWJsZTsgLS0gZmFpbAogUkVJTkRFWCAo VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlLCBDT05DVVJSRU5UTFkpIFRBQkxFIHRhYmxlc3Bh Y2VfdGFibGU7IC0tIGZhaWwKIFJFU0VUIFJPTEU7CiAKKy0tIEFMVEVSIFRBQkxFIFNFVCBUQUJM RVNQQUNFIG1vdmVzIHRoZSBoZWFwIGFuZCBsZWF2ZXMgdGhlIGluZGV4ZXMgaW4gdGhlaXIKKy0t IHRhYmxlc3BhY2UuICBSdW4gb24gaXRzIG93biwgYXMgaGVyZSwgaXQgbGVhdmVzIHRoZWlyIGZp bGVzIGFsb25lIHRvby4KK0NSRUFURSBUQUJMRSB0YnNwYWNlX3JvbGxiYWNrIChhIGludCk7CitJ TlNFUlQgSU5UTyB0YnNwYWNlX3JvbGxiYWNrIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw KTsKK0NSRUFURSBJTkRFWCB0YnNwYWNlX3JvbGxiYWNrX2lkeCBPTiB0YnNwYWNlX3JvbGxiYWNr IChhKTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9zaXplKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpIEFT IGlkeF9zaXplX2JlZm9yZSBcZ3NldAorU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNw YWNlX3JvbGxiYWNrX2lkeCcpIEFTIGlkeF9wYXRoIFxnc2V0CitBTFRFUiBUQUJMRSB0YnNwYWNl X3JvbGxiYWNrIFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitTRUxFQ1QgcGdfcmVs YXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgPSA6J2lkeF9wYXRoJyBBUyBp ZHhfZmlsZV9rZXB0OworLS0gU2VudCB0aHJvdWdoIHRoZSBleHRlbmRlZCBxdWVyeSBwcm90b2Nv bCwgYSBsYXRlciBzdGF0ZW1lbnQgb2YgdGhlIHNhbWUKKy0tIHBpcGVsaW5lIGNvdWxkIHNoYXJl IGl0cyB0cmFuc2FjdGlvbiwgc28gdGhlIGluZGV4ZXMgZ2V0IG5ldyBmaWxlcy4KK0FMVEVSIFRB QkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCBcYmluZCBcZwor U0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpIDw+IDon aWR4X3BhdGgnIEFTIGlkeF9maWxlX25ldzsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sg U0VUIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxl cGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgnKSBBUyBpZHhfcGF0aCBcZ3NldAorLS0gSW4gYSB0 cmFuc2FjdGlvbiBibG9jayB0aGUgaW5kZXhlcyBnZXQgbmV3IGZpbGVzLCBzbyB0aGF0IGEgcm9s bGJhY2sKKy0tIGRpc2NhcmRzIHRoZSBlbnRyaWVzIGFkZGVkIGFmdGVyIHRoZSBtb3ZlIHRvZ2V0 aGVyIHdpdGggdGhlIGhlYXAncyBmaWxlLgorQkVHSU47CitBTFRFUiBUQUJMRSB0YnNwYWNlX3Jv bGxiYWNrIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmls ZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgPD4gOidpZHhfcGF0aCcgQVMgaWR4X2ZpbGVf bmV3OworSU5TRVJUIElOVE8gdGJzcGFjZV9yb2xsYmFjayBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVz KDEwMSwgMjAwMCk7CitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6ZSgndGJzcGFjZV9yb2xsYmFja19p ZHgnKSA+IDppZHhfc2l6ZV9iZWZvcmUgQVMgaWR4X2dyZXc7CitST0xMQkFDSzsKK1NFTEVDVCBw Z19yZWxhdGlvbl9zaXplKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpID0gOmlkeF9zaXplX2JlZm9y ZSBBUyBpZHhfc2l6ZV9yZXN0b3JlZDsKKy0tIHRoZSBzYW1lIGZvciBhIFRSVU5DQVRFIGFmdGVy IHRoZSBtb3ZlLCB3aGljaCBpcyBkb25lIGluIHBsYWNlCitCRUdJTjsKK0FMVEVSIFRBQkxFIHRi c3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKK1RSVU5DQVRFIHRic3Bh Y2Vfcm9sbGJhY2s7CitST0xMQkFDSzsKK1NFTEVDVCBwZ19yZWxhdGlvbl9zaXplKCd0YnNwYWNl X3JvbGxiYWNrX2lkeCcpID0gOmlkeF9zaXplX2JlZm9yZSBBUyBpZHhfc2l6ZV9yZXN0b3JlZDsK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vfcm9sbGJhY2s7CistLSBBbiBpbmRleCBjcmVh dGVkIGluIHRoZSBzYW1lIHN1YnRyYW5zYWN0aW9uIGlzIGRpc2NhcmRlZCB3aXRoIHRoZSBoZWFw CistLSBhbnl3YXkgYW5kIGlzIG5vdCBjb3BpZWQuICBNb3ZpbmcgdGhlIGluZGV4ZXMgZmlyc3Qg YW5kIHRoZW4gdGhlIHRhYmxlCistLSBjb3BpZXMgZWFjaCBpbmRleCBvbmx5IG9uY2UuCitCRUdJ TjsKK0NSRUFURSBJTkRFWCB0YnNwYWNlX3JvbGxiYWNrX2lkeDIgT04gdGJzcGFjZV9yb2xsYmFj ayAoYSk7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4 MicpIEFTIGlkeDJfcGF0aCBcZ3NldAorQUxURVIgSU5ERVggdGJzcGFjZV9yb2xsYmFja19pZHgg U0VUIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxl cGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgnKSBBUyBpZHhfbW92ZWRfcGF0aCBcZ3NldAorQUxU RVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0OworU0VM RUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeDInKSA9IDonaWR4 Ml9wYXRoJyBBUyBpZHgyX25vdF9jb3BpZWQsCisgIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNw YWNlX3JvbGxiYWNrX2lkeCcpID0gOidpZHhfbW92ZWRfcGF0aCcgQVMgaWR4X25vdF9jb3BpZWRf YWdhaW47CitST0xMQkFDSzsKK0RST1AgVEFCTEUgdGJzcGFjZV9yb2xsYmFjazsKKy0tIEFuIGlu ZGV4IGZpbGUgdGhhdCBpcyBuZXcgaW4gdGhpcyB0cmFuc2FjdGlvbiBidXQgb2xkZXIgdGhhbiBh IHNhdmVwb2ludAorLS0gc3Vydml2ZXMgYSByb2xsYmFjayB0byBpdCwgc28gaXQgbXVzdCBzdGls bCBmb2xsb3cgYSBtb3ZlIG1hZGUgYWZ0ZXIgdGhlCistLSBzYXZlcG9pbnQ6IGFuIGluZGV4IGNy ZWF0ZWQgb3IgcmVpbmRleGVkIGJlZm9yZSBpdCwgb3IgYWxyZWFkeSBjb3BpZWQgYnkKKy0tIGFu IGVhcmxpZXIgbW92ZS4gIFJvd3MgaW5zZXJ0ZWQgYWZ0ZXJ3YXJkcyByZXVzZSB0aGUgVElEcyBm cmVlZCBieSB0aGUKKy0tIHJvbGxiYWNrczsgYSBzdGFsZSBpbmRleCBlbnRyeSB3b3VsZCBtYXRj aCB0aGVtLgorQ1JFQVRFIFRBQkxFIHRic3BhY2Vfc3VieGFjdCAoYSBpbnQpOworSU5TRVJUIElO VE8gdGJzcGFjZV9zdWJ4YWN0IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKTsKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK0JFR0lO OworQ1JFQVRFIElOREVYIHRic3BhY2Vfc3VieGFjdF9pZHggT04gdGJzcGFjZV9zdWJ4YWN0IChh KTsKK1NBVkVQT0lOVCBzOworQUxURVIgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0IFNFVCBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1YnhhY3QgU0VMRUNU IC1nZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworUk9MTEJBQ0sgVE8gczsKK0NPTU1JVDsKK0JFR0lO OworUkVJTkRFWCBJTkRFWCB0YnNwYWNlX3N1YnhhY3RfaWR4OworU0FWRVBPSU5UIHM7CitBTFRF UiBUQUJMRSB0YnNwYWNlX3N1YnhhY3QgU0VUIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsK K0lOU0VSVCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgLWdlbmVyYXRlX3NlcmllcygxLCA1 MCk7CitST0xMQkFDSyBUTyBzOworQ09NTUlUOworQkVHSU47CitBTFRFUiBUQUJMRSB0YnNwYWNl X3N1YnhhY3QgU0VUIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0lOU0VSVCBJTlRPIHRi c3BhY2Vfc3VieGFjdCBWQUxVRVMgKDApOworU0FWRVBPSU5UIHM7CitBTFRFUiBUQUJMRSB0YnNw YWNlX3N1YnhhY3QgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKK0lOU0VSVCBJTlRPIHRic3Bh Y2Vfc3VieGFjdCBTRUxFQ1QgLWdlbmVyYXRlX3NlcmllcygxLCA1MCk7CitST0xMQkFDSyBUTyBz OworQ09NTUlUOworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFNFTEVDVCBnZW5lcmF0ZV9z ZXJpZXMoMTAxLCAzMDApOworU0VMRUNUIGNvdW50KCopIEZST00gdGJzcGFjZV9zdWJ4YWN0IFdI RVJFIGEgPCAwOworU0VMRUNUIGNvdW50KCopIEZST00gdGJzcGFjZV9zdWJ4YWN0OworUkVTRVQg ZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0RST1AgVEFCTEUgdGJz cGFjZV9zdWJ4YWN0OworLS0gQ29tYmluZWQgd2l0aCBhbm90aGVyIHN1YmNvbW1hbmQsIHRoZSBB TFRFUiBjYW4gcnVuIHVzZXIgY29kZSBhZnRlciB0aGUKKy0tIG1vdmUsIHN1Y2ggYXMgYSBDSEVD SyBjb25zdHJhaW50IHZhbGlkYXRlZCBvbiBhbiBpbmhlcml0YW5jZSBjaGlsZCBhZnRlcgorLS0g dGhlIHBhcmVudCB3YXMgbW92ZWQsIHNvIHRoZSBpbmRleGVzIGdldCBuZXcgZmlsZXMgZXZlbiBv dXRzaWRlIGEKKy0tIHRyYW5zYWN0aW9uIGJsb2NrLgorQ1JFQVRFIFRBQkxFIHRic3BhY2VfY29t YmluZWQgKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRic3BhY2VfY29tYmluZWQgU0VMRUNUIGdlbmVy YXRlX3NlcmllcygxLCAxMDApOworQ1JFQVRFIElOREVYIHRic3BhY2VfY29tYmluZWRfaWR4IE9O IHRic3BhY2VfY29tYmluZWQgKGEpOworQ1JFQVRFIFRBQkxFIHRic3BhY2VfY29tYmluZWRfY2hp bGQgKCkgSU5IRVJJVFMgKHRic3BhY2VfY29tYmluZWQpOworSU5TRVJUIElOVE8gdGJzcGFjZV9j b21iaW5lZF9jaGlsZCBWQUxVRVMgKDUwMDApOworQ1JFQVRFIEZVTkNUSU9OIHRic3BhY2VfY29t YmluZWRfY2hrKHYgaW50KSBSRVRVUk5TIGJvb2wgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVH SU4KKyAgSUYgdiA8IDUwMDAgVEhFTiBSRVRVUk4gdHJ1ZTsgRU5EIElGOworICBJTlNFUlQgSU5U TyB0YnNwYWNlX2NvbWJpbmVkIFNFTEVDVCAtZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKTsKKyAgUkFJ U0UgRVhDRVBUSU9OICdhYm9ydCBhZnRlciB3cml0aW5nJzsKK0VORCAkJDsKK0FMVEVSIFRBQkxF IHRic3BhY2VfY29tYmluZWQgU0VUIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSwKKyAgQURE IENPTlNUUkFJTlQgdGJzcGFjZV9jb21iaW5lZF9rIENIRUNLICh0YnNwYWNlX2NvbWJpbmVkX2No ayhhKSk7CitEUk9QIFRBQkxFIHRic3BhY2VfY29tYmluZWRfY2hpbGQ7CitJTlNFUlQgSU5UTyB0 YnNwYWNlX2NvbWJpbmVkIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMTAxLCAzMDApOworU0VUIGVu YWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNU IGNvdW50KCopIEZST00gdGJzcGFjZV9jb21iaW5lZCBXSEVSRSBhIDwgMDsKK1JFU0VUIGVuYWJs ZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitEUk9QIFRBQkxFIHRic3BhY2Vf Y29tYmluZWQ7CitEUk9QIEZVTkNUSU9OIHRic3BhY2VfY29tYmluZWRfY2hrKGludCk7CisKIEFM VEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRU5BTUUgVE8gcmVncmVzc190YmxzcGFj ZV9yZW5hbWVkOwogCiBBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlX3JlbmFtZWQgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsK --===============1761294064175896986== Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0*=us-ascii''v7-REL_17-0001-Fix-index-corruption-after-rolling-back; filename*1*=-ALTER-TAB.patch.txt MIME-Version: 1.0 RnJvbSAzNGU0M2JkMzRkNDc2MTI5NmQyMDA4ZjA4YTdmN2ZlMjhkZDA0ZjIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51ZWwgUmV5ZXMgQnJhdm8gPG1hbnVlbHJleWVzYnJhdm9A Z21haWwuY29tPgpEYXRlOiBTdW4sIDQgT2N0IDIwMjYgMDQ6MTI6MzAgLTAzMDAKU3ViamVjdDog W1BBVENIIHY3XSBGaXggaW5kZXggY29ycnVwdGlvbiBhZnRlciByb2xsaW5nIGJhY2sgQUxURVIg VEFCTEUgU0VUCiBUQUJMRVNQQUNFCgpBTFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BBQ0UgcmV3 cml0ZXMgYSB0YWJsZSdzIGhlYXAgdG8gYSBuZXcKcmVsZmlsZW5vZGUgYnV0IGxlYXZlcyB0aGUg dGFibGUncyBpbmRleGVzIG9uIHRoZWlyIGV4aXN0aW5nCnJlbGZpbGVub2Rlcy4gIFRoZSB0d28g dGhlbiByb2xsIGJhY2sgYnkgZGlmZmVyZW50IG1lY2hhbmlzbXM6IG9uIGFib3J0CnRoZSBoZWFw J3MgbmV3IGZpbGUgaXMgZGlzY2FyZGVkLCBmcmVlaW5nIHRoZSBoZWFwIFRJRHMgY29uc3VtZWQg Ynkgcm93cwppbnNlcnRlZCBhZnRlciB0aGUgU0VUIFRBQkxFU1BBQ0UsIHdoaWxlIHRoZSBpbmRl eCBlbnRyaWVzIGZvciB0aG9zZSByb3dzCndlcmUgd3JpdHRlbiB0byB0aGUgdW5jaGFuZ2VkIGlu ZGV4IGZpbGVzIGFuZCBzdXJ2aXZlLiAgQSBsYXRlciBpbnNlcnQKY2FuIHJldXNlIGEgZnJlZWQg aGVhcCBUSUQsIGxlYXZpbmcgdHdvIGluZGV4IGVudHJpZXMgdGhhdCBwb2ludCBhdCB0aGUKc2Ft ZSBsaXZlIGhlYXAgdHVwbGUuICBUaGlzIHN1cmZhY2VzIGFzIGEgX2J0X3Bvc3RpbmdfdmFsaWQg YXNzZXJ0aW9uCmZhaWx1cmUgaW4gbmJ0cmVlIGRlZHVwbGljYXRpb24sIGFuZCBhcyBkdXBsaWNh dGUgcm93cyB0aHJvdWdoIGFuCmluZGV4LW9ubHkgc2NhbiBpbiBnaXN0LiAgQSBUUlVOQ0FURSBh ZnRlciB0aGUgbW92ZSBpbiB0aGUgc2FtZQp0cmFuc2FjdGlvbiB0cnVuY2F0ZXMgdGhlIG9sZCBp bmRleCBmaWxlcyBpbiBwbGFjZSwgd2hpY2ggYSByb2xsYmFjawpjYW5ub3QgdW5kbyBlaXRoZXIu CgpGaXggYnkgZ2l2aW5nIGVhY2ggaW5kZXggb2YgdGhlIHRhYmxlIGEgbmV3IHJlbGZpbGVudW1i ZXIgaW4gdGhlIHNhbWUKQUxURVIsIGNvcHlpbmcgaXQgd2l0aGluIGl0cyBvd24gdGFibGVzcGFj ZSAodGhlIGluZGV4ZXMgc3RheSB3aGVyZSB0aGV5CmFyZSwgYXMgZG9jdW1lbnRlZCksIHNvIHRo YXQgYW4gYWJvcnQgZGlzY2FyZHMgdGhlIG5ldyBoZWFwIGFuZCBpbmRleApmaWxlcyB0b2dldGhl ci4gIFR3byBjYXNlcyBuZWVkIG5vIGNvcHk6CgotIFRoZSBBTFRFUiBpcyBhIHBsYWluIEFMVEVS IFRBQkxFIC4uLiBTRVQgVEFCTEVTUEFDRSBvZiBhIHNpbmdsZQogIHRhYmxlLCB3aXRoIG5vIG90 aGVyIHN1YmNvbW1hbmQsIHNlbnQgYnkgYSBjbGllbnQgYXMgdGhlIG9ubHkKICBzdGF0ZW1lbnQg b2YgYSBzaW1wbGUgUXVlcnkgbWVzc2FnZSBvdXRzaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2ssIHNv CiAgdGhlIHRyYW5zYWN0aW9uIGVuZHMgcmlnaHQgYWZ0ZXIgaXQuICBBbnkgb3RoZXIgc3ViY29t bWFuZCBjb3VsZCBydW4KICB1c2VyIGNvZGUgYWZ0ZXIgdGhlIG1vdmU6IHRoZSB2YWxpZGF0aW9u IG9mIGFuIGluaGVyaXRhbmNlIGNoaWxkJ3MKICBuZXcgQ0hFQ0sgY29uc3RyYWludCwgYSBzcWxf ZHJvcCBldmVudCB0cmlnZ2VyLCBhbmQgc28gb24uICBUaGlzIGFsc28KICByZXF1aXJlcyB0aGF0 IG5vIGRkbF9jb21tYW5kX2VuZCBldmVudCB0cmlnZ2VyIHJ1bnMgYWZ0ZXIgaXQuICBBCiAgc3Rh dGVtZW50IHNlbnQgdGhyb3VnaCB0aGUgZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wgYWx3YXlzIGNv cGllczogYQogIGxhdGVyIHN0YXRlbWVudCBvZiB0aGUgc2FtZSBwaXBlbGluZSBzaGFyZXMgaXRz IHRyYW5zYWN0aW9uIHVudGlsCiAgdGhlIG5leHQgU3luYywgYW5kIHRoZSBiYWNrZW5kIGNhbm5v dCB0ZWxsIHdoZXRoZXIgb25lIHdpbGwgZm9sbG93LgogIElzRXh0ZW5kZWRRdWVyeU1lc3NhZ2Uo KSBpcyBhZGRlZCB0byBwb3N0Z3Jlcy5jIHRvIHRlbGwgdGhlIHR3bwogIGFwYXJ0LgoKLSBUaGUg aW5kZXgncyBjdXJyZW50IGZpbGUgd2FzIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgc3VidHJhbnNh Y3Rpb24sCiAgZm9yIGV4YW1wbGUgYW4gaW5kZXggY3JlYXRlZCwgb3IgbW92ZWQsIGVhcmxpZXIg aW4gaXQuICBBbiBhYm9ydAogIGRpc2NhcmRzIHRoYXQgZmlsZSB0b2dldGhlciB3aXRoIHRoZSBo ZWFwJ3MgbmV3IG9uZS4gIFRoaXMgYWxzbyBsZXRzCiAgYSB0cmFuc2FjdGlvbiBtb3ZlIHRoZSBp bmRleGVzIGZpcnN0IGFuZCB0aGVuIHRoZSB0YWJsZSB3aXRob3V0CiAgY29weWluZyB0aGUgaW5k ZXhlcyB0d2ljZS4KClRoZSByZWdyZXNzaW9uIHRlc3QgY2hlY2tzIHRoYXQgdGhlIEFMVEVSIG9u IGl0cyBvd24gbGVhdmVzIHRoZSBpbmRleApmaWxlcyB1bnRvdWNoZWQsIGFuZCB0aGF0IHNlbnQg dGhyb3VnaCB0aGUgZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wgaXQKZ2l2ZXMgdGhlbSBuZXcgZmls ZXM7IHRoYXQgY29tYmluZWQgd2l0aCBhIENIRUNLIGNvbnN0cmFpbnQgd2hvc2UKdmFsaWRhdGlv biBvbiBhbiBpbmhlcml0YW5jZSBjaGlsZCB3cml0ZXMgdG8gdGhlIHRhYmxlIGFmdGVyIHRoZSBt b3ZlCmFuZCBmYWlscywgaXQgbGVhdmVzIG5vIHN0YWxlIGluZGV4IGVudHJ5OyB0aGF0IGluIGEg dHJhbnNhY3Rpb24gYmxvY2sgYQpyb2xsYmFjayBhZnRlciBpbnNlcnRpbmcgb3IgdHJ1bmNhdGlu ZyBsZWF2ZXMgdGhlIGluZGV4IGZpbGUgYXQgaXRzCnByZS10cmFuc2FjdGlvbiBzaXplOyB0aGF0 IGFuIGluZGV4IGNyZWF0ZWQgb3IgbW92ZWQgZWFybGllciBpbiB0aGUKc3VidHJhbnNhY3Rpb24g aXMgbm90IGNvcGllZDsgYW5kIHRoYXQgYWZ0ZXIgYSByb2xsYmFjayB0byBhIHNhdmVwb2ludCwK YW4gaW5kZXggY3JlYXRlZCwgcmVpbmRleGVkIG9yIGFscmVhZHkgY29waWVkIGJlZm9yZSB0aGUg c2F2ZXBvaW50CnJldHVybnMgbm8gcm93IGZvciB0aGUgcm9sbGVkLWJhY2sgdmFsdWVzLgoKQnVn OiAjMTk2ODYKUmVwb3J0ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4KU3VnZ2VzdGVkLWJ5OiBBbmRy ZXMgRnJldW5kClJldmlld2VkLWJ5OiBBbGV4YW5kcmUgRmVsaXBlClJldmlld2VkLWJ5OiBTaGlo YW8gWmhvbmcKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgIHwg MTUyICsrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAg ICAgICAgICAgICB8ICAxNyArKysKIHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaCAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVzcGFjZS5vdXQgfCAxNjQgKysrKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2Uuc3FsICAgICAg fCAxMDggKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDQzOSBpbnNlcnRpb25zKCsp LCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZDRiYzM4YjY2 ZTguLjIyZWY0NDIxOGY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtOTQsNiArOTQs NyBAQAogI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZXZ0Y2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBAIC02MTEsNyArNjEyLDExIEBAIHN0YXRpYyB2 b2lkIEFURXhlY1NldEFjY2Vzc01ldGhvZE5vU3RvcmFnZShSZWxhdGlvbiByZWwsIE9pZCBuZXdB Y2Nlc3NNZXRob2RJZCk7CiBzdGF0aWMgYm9vbCBBVFByZXBDaGFuZ2VQZXJzaXN0ZW5jZShSZWxh dGlvbiByZWwsIGJvb2wgdG9Mb2dnZWQpOwogc3RhdGljIHZvaWQgQVRQcmVwU2V0VGFibGVTcGFj ZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJY29uc3QgY2hh ciAqdGFibGVzcGFjZW5hbWUsIExPQ0tNT0RFIGxvY2ttb2RlKTsKLXN0YXRpYyB2b2lkIEFURXhl Y1NldFRhYmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUg bG9ja21vZGUpOworc3RhdGljIHZvaWQgQVRFeGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQs IE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSwKKwkJCQkJCQkJYm9vbCBjb3B5 SW5kZXhlcyk7CitzdGF0aWMgYm9vbCBBVFNldFRhYmxlU3BhY2VDb3B5SW5kZXhlcyhBbHRlclRh YmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0ICp3cXVldWUsCisJCQkJCQkJCQkgICBBbHRlclRhYmxl VXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQgQVRFeGVjU2V0VGFibGVTcGFj ZU5ld0luZGV4UmVsZmlsZW51bWJlcihPaWQgaW5kZXhPaWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsK IHN0YXRpYyB2b2lkIEFURXhlY1NldFRhYmxlU3BhY2VOb1N0b3JhZ2UoUmVsYXRpb24gcmVsLCBP aWQgbmV3VGFibGVTcGFjZSk7CiBzdGF0aWMgdm9pZCBBVEV4ZWNTZXRSZWxPcHRpb25zKFJlbGF0 aW9uIHJlbCwgTGlzdCAqZGVmTGlzdCwKIAkJCQkJCQkJQWx0ZXJUYWJsZVR5cGUgb3BlcmF0aW9u LApAQCAtNTkwMCw3ICs1OTA1LDkgQEAgQVRSZXdyaXRlVGFibGVzKEFsdGVyVGFibGVTdG10ICpw YXJzZXRyZWUsIExpc3QgKip3cXVldWUsIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJICoganVzdCBk byBhIGJsb2NrLWJ5LWJsb2NrIGNvcHkuCiAJCQkgKi8KIAkJCWlmICh0YWItPm5ld1RhYmxlU3Bh Y2UpCi0JCQkJQVRFeGVjU2V0VGFibGVTcGFjZSh0YWItPnJlbGlkLCB0YWItPm5ld1RhYmxlU3Bh Y2UsIGxvY2ttb2RlKTsKKwkJCQlBVEV4ZWNTZXRUYWJsZVNwYWNlKHRhYi0+cmVsaWQsIHRhYi0+ bmV3VGFibGVTcGFjZSwgbG9ja21vZGUsCisJCQkJCQkJCQlBVFNldFRhYmxlU3BhY2VDb3B5SW5k ZXhlcyhwYXJzZXRyZWUsICp3cXVldWUsCisJCQkJCQkJCQkJCQkJCQkgICBjb250ZXh0KSk7CiAJ CX0KIAogCQkvKgpAQCAtMTUyODgsMTMgKzE1Mjk1LDE2IEBAIEFURXhlY1NldFJlbE9wdGlvbnMo UmVsYXRpb24gcmVsLCBMaXN0ICpkZWZMaXN0LCBBbHRlclRhYmxlVHlwZSBvcGVyYXRpb24sCiAg KiByZXdyaXRpbmcgdG8gYmUgZG9uZSwgc28gd2UganVzdCB3YW50IHRvIGNvcHkgdGhlIGRhdGEg YXMgZmFzdCBhcyBwb3NzaWJsZS4KICAqLwogc3RhdGljIHZvaWQKLUFURXhlY1NldFRhYmxlU3Bh Y2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUgbG9ja21vZGUpCitB VEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tN T0RFIGxvY2ttb2RlLAorCQkJCQlib29sIGNvcHlJbmRleGVzKQogewogCVJlbGF0aW9uCXJlbDsK IAlPaWQJCQlyZWx0b2FzdHJlbGlkOworCWNoYXIJCXJlbGtpbmQ7CiAJUmVsRmlsZU51bWJlciBu ZXdyZWxmaWxlbnVtYmVyOwogCVJlbEZpbGVMb2NhdG9yIG5ld3Jsb2NhdG9yOwogCUxpc3QJICAg KnJlbHRvYXN0aWR4aWRzID0gTklMOworCUxpc3QJICAgKnJlbHRhYmlkeGlkcyA9IE5JTDsKIAlM aXN0Q2VsbCAgICpsYzsKIAogCS8qCkBAIC0xNTMxMiw2ICsxNTMyMiw3IEBAIEFURXhlY1NldFRh YmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUgbG9ja21v ZGUpCiAJfQogCiAJcmVsdG9hc3RyZWxpZCA9IHJlbC0+cmRfcmVsLT5yZWx0b2FzdHJlbGlkOwor CXJlbGtpbmQgPSByZWwtPnJkX3JlbC0+cmVsa2luZDsKIAkvKiBGZXRjaCB0aGUgbGlzdCBvZiBp bmRleGVzIG9uIHRvYXN0IHJlbGF0aW9uIGlmIG5lY2Vzc2FyeSAqLwogCWlmIChPaWRJc1ZhbGlk KHJlbHRvYXN0cmVsaWQpKQogCXsKQEAgLTE1MzU4LDYgKzE1MzY5LDE0IEBAIEFURXhlY1NldFRh YmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUgbG9ja21v ZGUpCiAKIAlSZWxhdGlvbkFzc3VtZU5ld1JlbGZpbGVsb2NhdG9yKHJlbCk7CiAKKwkvKgorCSAq IElmIHRoaXMgaXMgYSB0YWJsZSwgY29sbGVjdCBpdHMgaW5kZXggbGlzdCBub3csIHdoaWxlIHRo ZSByZWxhdGlvbiBpcworCSAqIHN0aWxsIG9wZW4sIHNvIHdlIGNhbiBnaXZlIGVhY2ggaW5kZXgg YSBmcmVzaCByZWxmaWxlbnVtYmVyIGJlbG93LgorCSAqLworCWlmIChjb3B5SW5kZXhlcyAmJgor CQkocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8IHJlbGtpbmQgPT0gUkVMS0lORF9NQVRW SUVXKSkKKwkJcmVsdGFiaWR4aWRzID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsKTsKKwogCXJl bGF0aW9uX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKIAogCS8qIE1ha2Ugc3VyZSB0aGUgcmVsdGFibGVz cGFjZSBjaGFuZ2UgaXMgdmlzaWJsZSAqLwpAQCAtMTUzNjUsMTIgKzE1Mzg0LDEzNSBAQCBBVEV4 ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tNT0RF IGxvY2ttb2RlKQogCiAJLyogTW92ZSBhc3NvY2lhdGVkIHRvYXN0IHJlbGF0aW9uIGFuZC9vciBp bmRleGVzLCB0b28gKi8KIAlpZiAoT2lkSXNWYWxpZChyZWx0b2FzdHJlbGlkKSkKLQkJQVRFeGVj U2V0VGFibGVTcGFjZShyZWx0b2FzdHJlbGlkLCBuZXdUYWJsZVNwYWNlLCBsb2NrbW9kZSk7CisJ CUFURXhlY1NldFRhYmxlU3BhY2UocmVsdG9hc3RyZWxpZCwgbmV3VGFibGVTcGFjZSwgbG9ja21v ZGUsIGNvcHlJbmRleGVzKTsKIAlmb3JlYWNoKGxjLCByZWx0b2FzdGlkeGlkcykKLQkJQVRFeGVj U2V0VGFibGVTcGFjZShsZmlyc3Rfb2lkKGxjKSwgbmV3VGFibGVTcGFjZSwgbG9ja21vZGUpOwor CQlBVEV4ZWNTZXRUYWJsZVNwYWNlKGxmaXJzdF9vaWQobGMpLCBuZXdUYWJsZVNwYWNlLCBsb2Nr bW9kZSwgY29weUluZGV4ZXMpOwogCiAJLyogQ2xlYW4gdXAgKi8KIAlsaXN0X2ZyZWUocmVsdG9h c3RpZHhpZHMpOworCisJLyoKKwkgKiBUaGUgaGVhcCBub3cgaGFzIGEgbmV3IHJlbGZpbGVub2Rl LiAgR2l2ZSBlYWNoIG9mIHRoZSB0YWJsZSdzIGluZGV4ZXMgYQorCSAqIGZyZXNoIHJlbGZpbGVu b2RlIHRvbywgc28gdGhhdCB0aGUgaW5kZXhlcyBzaGFyZSB0aGUgaGVhcCdzIHJld3JpdGUKKwkg KiBmYXRlIGFjcm9zcyBjb21taXQgYW5kIGFib3J0LiAgU2VlCisJICogQVRFeGVjU2V0VGFibGVT cGFjZU5ld0luZGV4UmVsZmlsZW51bWJlci4KKwkgKi8KKwlmb3JlYWNoKGxjLCByZWx0YWJpZHhp ZHMpCisJCUFURXhlY1NldFRhYmxlU3BhY2VOZXdJbmRleFJlbGZpbGVudW1iZXIobGZpcnN0X29p ZChsYyksIGxvY2ttb2RlKTsKKwlsaXN0X2ZyZWUocmVsdGFiaWR4aWRzKTsKK30KKworLyoKKyAq IERvZXMgQUxURVIgVEFCTEUgU0VUIFRBQkxFU1BBQ0UgbmVlZCB0byBnaXZlIHRoZSB0YWJsZSdz IGluZGV4ZXMgbmV3IGZpbGVzPworICoKKyAqIE9ubHkgaWYgc29tZXRoaW5nIGNhbiBzdGlsbCBt b2RpZnkgdGhlIHRhYmxlIGluIHRoZSBzYW1lIHRyYW5zYWN0aW9uIGFmdGVyCisgKiB0aGUgbW92 ZS4gIFJhdGhlciB0aGFuIGxpc3RpbmcgZXZlcnkgcGxhY2Ugd2hlcmUgdXNlciBjb2RlIGNhbiBy dW4gYWZ0ZXIKKyAqIGl0IC0tIHRoZSB2YWxpZGF0aW9uIG9mIG90aGVyIHRhYmxlcyBpbiB0aGUg d29yayBxdWV1ZSwgc3VjaCBhcyBhbgorICogaW5oZXJpdGFuY2UgY2hpbGQgZ2V0dGluZyBhIG5l dyBDSEVDSyBjb25zdHJhaW50LCBmb3JlaWduIGtleSB2YWxpZGF0aW9uLAorICogc3FsX2Ryb3Ag YW5kIHRhYmxlX3Jld3JpdGUgZXZlbnQgdHJpZ2dlcnMsIGFuZCBtb3JlIC0tIHRoZSBmaWxlcyBh cmUga2VwdAorICogb25seSBmb3IgdGhlIG9uZSBjYXNlIHdoZXJlIG5vbmUgb2YgdGhlbSBleGlz dHM6IGEgcGxhaW4KKyAqICJBTFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BBQ0UiIG9mIGEgc2lu Z2xlIHRhYmxlLCB3aXRoIG5vIG90aGVyCisgKiBzdWJjb21tYW5kLCBzZW50IGJ5IGEgY2xpZW50 IGFzIHRoZSBvbmx5IHN0YXRlbWVudCBvZiBhIHNpbXBsZSBRdWVyeQorICogbWVzc2FnZSwgb3V0 c2lkZSBhbnkgdHJhbnNhY3Rpb24gYmxvY2s6IHRoZSB0cmFuc2FjdGlvbiB0aGVuIGVuZHMgcmln aHQKKyAqIGFmdGVyIGl0LiAgV2hhdCBjYW4gc3RpbGwgcnVuIGFmdGVyIGl0IGlzIGEgZGRsX2Nv bW1hbmRfZW5kIGV2ZW50IHRyaWdnZXIsCisgKiBzbyB0aGF0IGNhc2UgYWxzbyByZXF1aXJlcyB0 aGF0IHRoZXJlIGlzIG5vbmUuCisgKgorICogQSBzdGF0ZW1lbnQgc2VudCBieSBhbiBleHRlbmRl ZC1wcm90b2NvbCBFeGVjdXRlIG1lc3NhZ2UgYWx3YXlzIGNvcGllczoKKyAqIGxhdGVyIHN0YXRl bWVudHMgb2YgdGhlIHNhbWUgcGlwZWxpbmUgc2hhcmUgaXRzIHRyYW5zYWN0aW9uIHVudGlsIHRo ZSBuZXh0CisgKiBTeW5jLCBhbmQgdGhlIGJhY2tlbmQgY2Fubm90IHRlbGwgd2hldGhlciBhbnkg d2lsbCBmb2xsb3cuICBGb3JjaW5nIGEgY29tbWl0CisgKiBhZnRlciB0aGUgQUxURVIgd291bGQg bWFrZSBpdCBjb21taXQgb24gaXRzIG93biB3aGVuIGEgbGF0ZXIgc3RhdGVtZW50IG9mCisgKiB0 aGUgcGlwZWxpbmUgZmFpbHMsIHdoaWNoIGlzIG5vdCBob3cgQUxURVIgVEFCTEUgYmVoYXZlcyBv dGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitBVFNldFRhYmxlU3BhY2VDb3B5SW5kZXhlcyhB bHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0ICp3cXVldWUsCisJCQkJCQkgICBBbHRlclRh YmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJaWYgKGNvbnRleHQgPT0gTlVMTCB8fCBJ c0luVHJhbnNhY3Rpb25CbG9jayhjb250ZXh0LT5pc1RvcExldmVsKSkKKwkJcmV0dXJuIHRydWU7 CisJaWYgKE15QmFja2VuZFR5cGUgIT0gQl9CQUNLRU5EIHx8IElzRXh0ZW5kZWRRdWVyeU1lc3Nh Z2UoKSkKKwkJcmV0dXJuIHRydWU7CisJaWYgKHBhcnNldHJlZSA9PSBOVUxMIHx8IGxpc3RfbGVu Z3RoKHBhcnNldHJlZS0+Y21kcykgIT0gMSB8fAorCQljYXN0Tm9kZShBbHRlclRhYmxlQ21kLCBs aW5pdGlhbChwYXJzZXRyZWUtPmNtZHMpKS0+c3VidHlwZSAhPSBBVF9TZXRUYWJsZVNwYWNlIHx8 CisJCWxpc3RfbGVuZ3RoKHdxdWV1ZSkgIT0gMSkKKwkJcmV0dXJuIHRydWU7CisJaWYgKEV2ZW50 Q2FjaGVMb29rdXAoRVZUX0RETENvbW1hbmRFbmQpICE9IE5JTCkKKwkJcmV0dXJuIHRydWU7CisK KwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBHaXZlIG9uZSBvZiBhIHRhYmxlJ3MgaW5kZXhl cyBhIGZyZXNoIHJlbGZpbGVudW1iZXIgd2l0aGluIGl0cyBleGlzdGluZworICogdGFibGVzcGFj ZSwgY29weWluZyB0aGUgY3VycmVudCBpbmRleCBmaWxlIHRvIHRoZSBuZXcgcmVsZmlsZW51bWJl ci4KKyAqCisgKiBBVEV4ZWNTZXRUYWJsZVNwYWNlKCkgY2FsbHMgdGhpcyBmb3IgZWFjaCBpbmRl eCBvZiBhIHRhYmxlIHdob3NlIGhlYXAgaXQgaGFzCisgKiBqdXN0IHJld3JpdHRlbiB0byBhIG5l dyByZWxmaWxlbm9kZS4gIFRoZSBpbmRleGVzIG11c3Qgc2hhcmUgdGhlIGhlYXAncworICogdHJh bnNhY3Rpb25hbCBmYXRlOiBhbiBhYm9ydCBoYXMgdG8gZGlzY2FyZCB0aGUgaW5kZXggZW50cmll cyB3cml0dGVuIGR1cmluZworICogdGhlIHRyYW5zYWN0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIGhl YXAncyBuZXcgZmlsZSwgc2luY2UgdGhlIGhlYXAgVElEcyB0aG9zZQorICogZW50cmllcyBwb2lu dCBhdCBhcmUgZnJlZWQgYnkgdGhlIGFib3J0IGFuZCBjYW4gYmUgcmV1c2VkIGJ5IGxhdGVyIGlu c2VydHMuCisgKiBDb3B5aW5nIHRoZSBleGlzdGluZyBpbmRleCBmaWxlIGtlZXBzIHRoZSBhZGRl ZCBjb3N0IGNsb3NlIHRvIHRoYXQgb2YgdGhlCisgKiBoZWFwIG1vdmUgaXRzZWxmOyB0aGUgaW5k ZXggc3RheXMgaW4gaXRzIG93biB0YWJsZXNwYWNlLCBhcyBkb2N1bWVudGVkLgorICovCitzdGF0 aWMgdm9pZAorQVRFeGVjU2V0VGFibGVTcGFjZU5ld0luZGV4UmVsZmlsZW51bWJlcihPaWQgaW5k ZXhPaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCVJlbGF0aW9uCWluZDsKKwlSZWxGaWxlTnVt YmVyIG5ld3JlbGZpbGVudW1iZXI7CisJUmVsRmlsZUxvY2F0b3IgbmV3cmxvY2F0b3I7CisJUmVs YXRpb24JcGdfY2xhc3M7CisJSGVhcFR1cGxlCXR1cGxlOworCUl0ZW1Qb2ludGVyRGF0YSBvdGlk OworCUZvcm1fcGdfY2xhc3MgcmRfcmVsOworCisJaW5kID0gcmVsYXRpb25fb3BlbihpbmRleE9p ZCwgbG9ja21vZGUpOworCisJLyoKKwkgKiBPbmx5IHBsYWluIGluZGV4ZXMgaGF2ZSBzdG9yYWdl IHRoYXQgY2FuIGhvbGQgdGhlIHN0YWxlIGVudHJpZXMuICBBbgorCSAqIGluZGV4IHdob3NlIGN1 cnJlbnQgZmlsZSB3YXMgY3JlYXRlZCBpbiB0aGlzIHN1YnRyYW5zYWN0aW9uICh0aGUgaW5kZXgK KwkgKiBpdHNlbGYsIG9yIGEgbmV3IGZpbGUgZm9yIGl0KSBpcyBkaXNjYXJkZWQgdG9nZXRoZXIg d2l0aCB0aGUgaGVhcCdzIG5ldworCSAqIGZpbGUgb24gYWJvcnQsIHNvIGl0IG5lZWRzIG5vIGNv cHkuICByZF9uZXdSZWxmaWxlbG9jYXRvclN1YmlkIGNhbiBiZQorCSAqIHplcm8gYWZ0ZXIgYSBy b2xsYmFjayB0byBhIHNhdmVwb2ludCBldmVuIHRob3VnaCB0aGUgZmlsZSBpcyBuZXc7IHRoZW4K KwkgKiB0aGlzIGZhbGxzIGJhY2sgdG8gcmRfY3JlYXRlU3ViaWQsIGFuZCBjb3BpZXMgaWYgdGhh dCBkb2VzIG5vdCBtYXRjaAorCSAqIGVpdGhlci4KKwkgKi8KKwlpZiAoaW5kLT5yZF9yZWwtPnJl bGtpbmQgIT0gUkVMS0lORF9JTkRFWCB8fAorCQkhUkVMS0lORF9IQVNfU1RPUkFHRShpbmQtPnJk X3JlbC0+cmVsa2luZCkgfHwKKwkJTWF4KGluZC0+cmRfbmV3UmVsZmlsZWxvY2F0b3JTdWJpZCwg aW5kLT5yZF9jcmVhdGVTdWJpZCkgPT0KKwkJR2V0Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQoKSkK Kwl7CisJCXJlbGF0aW9uX2Nsb3NlKGluZCwgTm9Mb2NrKTsKKwkJcmV0dXJuOworCX0KKworCS8q IEFsbG9jYXRlIGEgbmV3IHJlbGZpbGVudW1iZXIgaW4gdGhlIGluZGV4J3MgY3VycmVudCB0YWJs ZXNwYWNlLiAqLworCW5ld3JlbGZpbGVudW1iZXIgPSBHZXROZXdSZWxGaWxlTnVtYmVyKGluZC0+ cmRfcmVsLT5yZWx0YWJsZXNwYWNlLCBOVUxMLAorCQkJCQkJCQkJCSAgIGluZC0+cmRfcmVsLT5y ZWxwZXJzaXN0ZW5jZSk7CisJbmV3cmxvY2F0b3IgPSBpbmQtPnJkX2xvY2F0b3I7CisJbmV3cmxv Y2F0b3IucmVsTnVtYmVyID0gbmV3cmVsZmlsZW51bWJlcjsKKworCS8qIENvcHkgdGhlIGluZGV4 IGludG8gdGhlIG5ldyBmaWxlIGFuZCBzY2hlZHVsZSB0aGUgb2xkIG9uZSBmb3IgY2xlYW51cC4g Ki8KKwlpbmRleF9jb3B5X2RhdGEoaW5kLCBuZXdybG9jYXRvcik7CisKKwkvKiBVcGRhdGUgdGhl IHBnX2NsYXNzIHJvdzsgb25seSB0aGUgcmVsZmlsZW5vZGUgY2hhbmdlcy4gKi8KKwlwZ19jbGFz cyA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0 dXBsZSA9IFNlYXJjaFN5c0NhY2hlTG9ja2VkQ29weTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVt KGluZGV4T2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwgaW5kZXhPaWQpOworCW90aWQg PSB0dXBsZS0+dF9zZWxmOworCXJkX3JlbCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVw bGUpOworCXJkX3JlbC0+cmVsZmlsZW5vZGUgPSBuZXdyZWxmaWxlbnVtYmVyOworCUNhdGFsb2dU dXBsZVVwZGF0ZShwZ19jbGFzcywgJm90aWQsIHR1cGxlKTsKKwlVbmxvY2tUdXBsZShwZ19jbGFz cywgJm90aWQsIElucGxhY2VVcGRhdGVUdXBsZUxvY2spOworCWhlYXBfZnJlZXR1cGxlKHR1cGxl KTsKKwl0YWJsZV9jbG9zZShwZ19jbGFzcywgUm93RXhjbHVzaXZlTG9jayk7CisKKwlJbnZva2VP YmplY3RQb3N0QWx0ZXJIb29rKFJlbGF0aW9uUmVsYXRpb25JZCwgaW5kZXhPaWQsIDApOworCVJl bGF0aW9uQXNzdW1lTmV3UmVsZmlsZWxvY2F0b3IoaW5kKTsKKworCXJlbGF0aW9uX2Nsb3NlKGlu ZCwgTm9Mb2NrKTsKKworCS8qIE1ha2UgdGhlIHJlbGZpbGVub2RlIGNoYW5nZSB2aXNpYmxlLiAq LworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5k ZXggNjk2ZmQxODU3NWMuLjA4NWRkZTljYzQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0yMzg3LDYg KzIzODcsMjMgQEAgY2hlY2tfbG9nX3N0YXRlbWVudChMaXN0ICpzdG10X2xpc3QpCiAJcmV0dXJu IGZhbHNlOwogfQogCisvKgorICogSXNFeHRlbmRlZFF1ZXJ5TWVzc2FnZQorICoJCUlzIHRoZSBj dXJyZW50IHN0YXRlbWVudCBiZWluZyBydW4gYnkgYW4gZXh0ZW5kZWQtcXVlcnktcHJvdG9jb2wK KyAqCQltZXNzYWdlPworICoKKyAqIFN1Y2ggYSBzdGF0ZW1lbnQgc2hhcmVzIGl0cyBpbXBsaWNp dCB0cmFuc2FjdGlvbiB3aXRoIHdoYXRldmVyIGVsc2UgdGhlCisgKiBjbGllbnQgc2VuZHMgYmVm b3JlIHRoZSBuZXh0IFN5bmMsIHdoaWNoIHRoZSBiYWNrZW5kIGNhbm5vdCBrbm93IHdoaWxlIGl0 CisgKiBydW5zIHRoZSBzdGF0ZW1lbnQuICBUaGUgZmlyc3Qgc3RhdGVtZW50IG9mIGEgcGlwZWxp bmUgY2Fubm90IGJlIHRvbGQgZnJvbQorICogb25lIGZvbGxvd2VkIGRpcmVjdGx5IGJ5IFN5bmM6 IFhBQ1RfRkxBR1NfUElQRUxJTklORyBpcyBzZXQgb25seSBvbmNlIGFuCisgKiBFeGVjdXRlIGNv bXBsZXRlcy4KKyAqLworYm9vbAorSXNFeHRlbmRlZFF1ZXJ5TWVzc2FnZSh2b2lkKQoreworCXJl dHVybiBkb2luZ19leHRlbmRlZF9xdWVyeV9tZXNzYWdlOworfQorCiAvKgogICogY2hlY2tfbG9n X2R1cmF0aW9uCiAgKgkJRGV0ZXJtaW5lIHdoZXRoZXIgY3VycmVudCBjb21tYW5kJ3MgZHVyYXRp b24gc2hvdWxkIGJlIGxvZ2dlZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5 LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCAyOWVmOGJlYWE4MS4uZjA0MDEx MDJhMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC0xMzA5LDYgKzEzMDksNyBAQCBQcm9jZXNzVXRpbGl0 eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJYXRjb250ZXh0LnJlbGlkID0gcmVsaWQ7 CiAJCQkJCQlhdGNvbnRleHQucGFyYW1zID0gcGFyYW1zOwogCQkJCQkJYXRjb250ZXh0LnF1ZXJ5 RW52ID0gcXVlcnlFbnY7CisJCQkJCQlhdGNvbnRleHQuaXNUb3BMZXZlbCA9IGlzVG9wTGV2ZWw7 CiAKIAkJCQkJCS8qIC4uLiBlbnN1cmUgd2UgaGF2ZSBhbiBldmVudCB0cmlnZ2VyIGNvbnRleHQg Li4uICovCiAJCQkJCQlFdmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQocGFyc2V0cmVlKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3Av dGNvcHByb3QuaAppbmRleCAxODBkNWEyZDIyNy4uNDE2ZDQxMGI0NzYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90 LmgKQEAgLTg4LDYgKzg4LDcgQEAgZXh0ZXJuIHZvaWQgUG9zdGdyZXNNYWluKGNvbnN0IGNoYXIg KmRibmFtZSwKIGV4dGVybiBsb25nIGdldF9zdGFja19kZXB0aF9ybGltaXQodm9pZCk7CiBleHRl cm4gdm9pZCBSZXNldFVzYWdlKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2hvd1VzYWdlKGNvbnN0IGNo YXIgKnRpdGxlKTsKK2V4dGVybiBib29sIElzRXh0ZW5kZWRRdWVyeU1lc3NhZ2Uodm9pZCk7CiBl eHRlcm4gaW50CWNoZWNrX2xvZ19kdXJhdGlvbihjaGFyICptc2VjX3N0ciwgYm9vbCB3YXNfbG9n Z2VkKTsKIGV4dGVybiB2b2lkIHNldF9kZWJ1Z19vcHRpb25zKGludCBkZWJ1Z19mbGFnLAogCQkJ CQkJCSAgR3VjQ29udGV4dCBjb250ZXh0LCBHdWNTb3VyY2Ugc291cmNlKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oIGIvc3JjL2luY2x1ZGUvdGNvcC91dGlsaXR5LmgK aW5kZXggOWFhMWRlMzg3OTAuLjM3OGUyOGQxYjc2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90 Y29wL3V0aWxpdHkuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaApAQCAtMzQsNiAr MzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQKIAlPaWQJCQly ZWxpZDsJCQkvKiBPSUQgb2YgQUxURVIncyB0YXJnZXQgdGFibGUgKi8KIAlQYXJhbUxpc3RJbmZv IHBhcmFtczsJCS8qIGFueSBwYXJhbWV0ZXJzIGF2YWlsYWJsZSB0byBBTFRFUiBUQUJMRSAqLwog CVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBleGVjdXRpb24gZW52aXJvbm1lbnQgZm9y IEFMVEVSIFRBQkxFICovCisJYm9vbAkJaXNUb3BMZXZlbDsJCS8qIEFMVEVSIFRBQkxFIGlzIGEg dG9wLWxldmVsIHN0YXRlbWVudCAqLwogfSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQ7CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RhYmxlc3BhY2Uub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlLm91dAppbmRleCA5YzU2MTM5NTk3 MC4uNDdjMjRiNDdhMzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFi bGVzcGFjZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlLm91 dApAQCAtOTQ5LDYgKzk0OSwxNzAgQEAgRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFi bGVzcGFjZSByZWdyZXNzX3RibHNwYWNlCiBSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2UsIENPTkNVUlJFTlRMWSkgVEFCTEUgdGFibGVzcGFjZV90YWJsZTsgLS0gZmFpbAogRVJS T1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGVzcGFjZSByZWdyZXNzX3RibHNwYWNlCiBS RVNFVCBST0xFOworLS0gQUxURVIgVEFCTEUgU0VUIFRBQkxFU1BBQ0UgbW92ZXMgdGhlIGhlYXAg YW5kIGxlYXZlcyB0aGUgaW5kZXhlcyBpbiB0aGVpcgorLS0gdGFibGVzcGFjZS4gIFJ1biBvbiBp dHMgb3duLCBhcyBoZXJlLCBpdCBsZWF2ZXMgdGhlaXIgZmlsZXMgYWxvbmUgdG9vLgorQ1JFQVRF IFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRic3BhY2Vfcm9s bGJhY2sgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDApOworQ1JFQVRFIElOREVYIHRic3Bh Y2Vfcm9sbGJhY2tfaWR4IE9OIHRic3BhY2Vfcm9sbGJhY2sgKGEpOworU0VMRUNUIHBnX3JlbGF0 aW9uX3NpemUoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgQVMgaWR4X3NpemVfYmVmb3JlIFxnc2V0 CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgQVMg aWR4X3BhdGggXGdzZXQKK0FMVEVSIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFj ZV9yb2xsYmFja19pZHgnKSA9IDonaWR4X3BhdGgnIEFTIGlkeF9maWxlX2tlcHQ7CisgaWR4X2Zp bGVfa2VwdCAKKy0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gU2VudCB0aHJvdWdo IHRoZSBleHRlbmRlZCBxdWVyeSBwcm90b2NvbCwgYSBsYXRlciBzdGF0ZW1lbnQgb2YgdGhlIHNh bWUKKy0tIHBpcGVsaW5lIGNvdWxkIHNoYXJlIGl0cyB0cmFuc2FjdGlvbiwgc28gdGhlIGluZGV4 ZXMgZ2V0IG5ldyBmaWxlcy4KK0FMVEVSIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxF U1BBQ0UgcGdfZGVmYXVsdCBcYmluZCBcZworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0 YnNwYWNlX3JvbGxiYWNrX2lkeCcpIDw+IDonaWR4X3BhdGgnIEFTIGlkeF9maWxlX25ldzsKKyBp ZHhfZmlsZV9uZXcgCistLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworQUxURVIgVEFCTEUg dGJzcGFjZV9yb2xsYmFjayBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworU0VMRUNU IHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpIEFTIGlkeF9wYXRo IFxnc2V0CistLSBJbiBhIHRyYW5zYWN0aW9uIGJsb2NrIHRoZSBpbmRleGVzIGdldCBuZXcgZmls ZXMsIHNvIHRoYXQgYSByb2xsYmFjaworLS0gZGlzY2FyZHMgdGhlIGVudHJpZXMgYWRkZWQgYWZ0 ZXIgdGhlIG1vdmUgdG9nZXRoZXIgd2l0aCB0aGUgaGVhcCdzIGZpbGUuCitCRUdJTjsKK0FMVEVS IFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKK1NFTEVD VCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA8PiA6J2lkeF9w YXRoJyBBUyBpZHhfZmlsZV9uZXc7CisgaWR4X2ZpbGVfbmV3IAorLS0tLS0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKK0lOU0VSVCBJTlRPIHRic3BhY2Vfcm9sbGJhY2sgU0VMRUNUIGdlbmVyYXRl X3NlcmllcygxMDEsIDIwMDApOworU0VMRUNUIHBnX3JlbGF0aW9uX3NpemUoJ3Ric3BhY2Vfcm9s bGJhY2tfaWR4JykgPiA6aWR4X3NpemVfYmVmb3JlIEFTIGlkeF9ncmV3OworIGlkeF9ncmV3IAor LS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworUk9MTEJBQ0s7CitTRUxFQ1QgcGdfcmVsYXRpb25f c2l6ZSgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA9IDppZHhfc2l6ZV9iZWZvcmUgQVMgaWR4X3Np emVfcmVzdG9yZWQ7CisgaWR4X3NpemVfcmVzdG9yZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tCisg dAorKDEgcm93KQorCistLSB0aGUgc2FtZSBmb3IgYSBUUlVOQ0FURSBhZnRlciB0aGUgbW92ZSwg d2hpY2ggaXMgZG9uZSBpbiBwbGFjZQorQkVHSU47CitBTFRFUiBUQUJMRSB0YnNwYWNlX3JvbGxi YWNrIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitUUlVOQ0FURSB0YnNwYWNlX3JvbGxiYWNr OworUk9MTEJBQ0s7CitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6ZSgndGJzcGFjZV9yb2xsYmFja19p ZHgnKSA9IDppZHhfc2l6ZV9iZWZvcmUgQVMgaWR4X3NpemVfcmVzdG9yZWQ7CisgaWR4X3NpemVf cmVzdG9yZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgY291 bnQoKikgRlJPTSB0YnNwYWNlX3JvbGxiYWNrOworIGNvdW50IAorLS0tLS0tLQorICAgMTAwCiso MSByb3cpCisKKy0tIEFuIGluZGV4IGNyZWF0ZWQgaW4gdGhlIHNhbWUgc3VidHJhbnNhY3Rpb24g aXMgZGlzY2FyZGVkIHdpdGggdGhlIGhlYXAKKy0tIGFueXdheSBhbmQgaXMgbm90IGNvcGllZC4g IE1vdmluZyB0aGUgaW5kZXhlcyBmaXJzdCBhbmQgdGhlbiB0aGUgdGFibGUKKy0tIGNvcGllcyBl YWNoIGluZGV4IG9ubHkgb25jZS4KK0JFR0lOOworQ1JFQVRFIElOREVYIHRic3BhY2Vfcm9sbGJh Y2tfaWR4MiBPTiB0YnNwYWNlX3JvbGxiYWNrIChhKTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxl cGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgyJykgQVMgaWR4Ml9wYXRoIFxnc2V0CitBTFRFUiBJ TkRFWCB0YnNwYWNlX3JvbGxiYWNrX2lkeCBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl OworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpIEFT IGlkeF9tb3ZlZF9wYXRoIFxnc2V0CitBTFRFUiBUQUJMRSB0YnNwYWNlX3JvbGxiYWNrIFNFVCBU QUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3Bh Y2Vfcm9sbGJhY2tfaWR4MicpID0gOidpZHgyX3BhdGgnIEFTIGlkeDJfbm90X2NvcGllZCwKKyAg cGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgPSA6J2lkeF9tb3Zl ZF9wYXRoJyBBUyBpZHhfbm90X2NvcGllZF9hZ2FpbjsKKyBpZHgyX25vdF9jb3BpZWQgfCBpZHhf bm90X2NvcGllZF9hZ2FpbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyB0ICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKK1JPTExCQUNLOworRFJPUCBUQUJM RSB0YnNwYWNlX3JvbGxiYWNrOworLS0gQW4gaW5kZXggZmlsZSB0aGF0IGlzIG5ldyBpbiB0aGlz IHRyYW5zYWN0aW9uIGJ1dCBvbGRlciB0aGFuIGEgc2F2ZXBvaW50CistLSBzdXJ2aXZlcyBhIHJv bGxiYWNrIHRvIGl0LCBzbyBpdCBtdXN0IHN0aWxsIGZvbGxvdyBhIG1vdmUgbWFkZSBhZnRlciB0 aGUKKy0tIHNhdmVwb2ludDogYW4gaW5kZXggY3JlYXRlZCBvciByZWluZGV4ZWQgYmVmb3JlIGl0 LCBvciBhbHJlYWR5IGNvcGllZCBieQorLS0gYW4gZWFybGllciBtb3ZlLiAgUm93cyBpbnNlcnRl ZCBhZnRlcndhcmRzIHJldXNlIHRoZSBUSURzIGZyZWVkIGJ5IHRoZQorLS0gcm9sbGJhY2tzOyBh IHN0YWxlIGluZGV4IGVudHJ5IHdvdWxkIG1hdGNoIHRoZW0uCitDUkVBVEUgVEFCTEUgdGJzcGFj ZV9zdWJ4YWN0IChhIGludCk7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1YnhhY3QgU0VMRUNUIGdl bmVyYXRlX3NlcmllcygxLCAxMDApOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVu YWJsZV9iaXRtYXBzY2FuID0gb2ZmOworQkVHSU47CitDUkVBVEUgSU5ERVggdGJzcGFjZV9zdWJ4 YWN0X2lkeCBPTiB0YnNwYWNlX3N1YnhhY3QgKGEpOworU0FWRVBPSU5UIHM7CitBTFRFUiBUQUJM RSB0YnNwYWNlX3N1YnhhY3QgU0VUIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0lOU0VS VCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgLWdlbmVyYXRlX3NlcmllcygxLCA1MCk7CitS T0xMQkFDSyBUTyBzOworQ09NTUlUOworQkVHSU47CitSRUlOREVYIElOREVYIHRic3BhY2Vfc3Vi eGFjdF9pZHg7CitTQVZFUE9JTlQgczsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfc3VieGFjdCBTRVQg VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0 IFNFTEVDVCAtZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKTsKK1JPTExCQUNLIFRPIHM7CitDT01NSVQ7 CitCRUdJTjsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfc3VieGFjdCBTRVQgVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlOworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFZBTFVFUyAoMCk7CitT QVZFUE9JTlQgczsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfc3VieGFjdCBTRVQgVEFCTEVTUEFDRSBw Z19kZWZhdWx0OworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFNFTEVDVCAtZ2VuZXJhdGVf c2VyaWVzKDEsIDUwKTsKK1JPTExCQUNLIFRPIHM7CitDT01NSVQ7CitJTlNFUlQgSU5UTyB0YnNw YWNlX3N1YnhhY3QgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxMDEsIDMwMCk7CitTRUxFQ1QgY291 bnQoKikgRlJPTSB0YnNwYWNlX3N1YnhhY3QgV0hFUkUgYSA8IDA7CisgY291bnQgCistLS0tLS0t CisgICAgIDAKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGJzcGFjZV9zdWJ4YWN0 OworIGNvdW50IAorLS0tLS0tLQorICAgMzAxCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitEUk9QIFRBQkxFIHRic3BhY2Vfc3VieGFj dDsKKy0tIENvbWJpbmVkIHdpdGggYW5vdGhlciBzdWJjb21tYW5kLCB0aGUgQUxURVIgY2FuIHJ1 biB1c2VyIGNvZGUgYWZ0ZXIgdGhlCistLSBtb3ZlLCBzdWNoIGFzIGEgQ0hFQ0sgY29uc3RyYWlu dCB2YWxpZGF0ZWQgb24gYW4gaW5oZXJpdGFuY2UgY2hpbGQgYWZ0ZXIKKy0tIHRoZSBwYXJlbnQg d2FzIG1vdmVkLCBzbyB0aGUgaW5kZXhlcyBnZXQgbmV3IGZpbGVzIGV2ZW4gb3V0c2lkZSBhCist LSB0cmFuc2FjdGlvbiBibG9jay4KK0NSRUFURSBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkIChhIGlu dCk7CitJTlNFUlQgSU5UTyB0YnNwYWNlX2NvbWJpbmVkIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKTsKK0NSRUFURSBJTkRFWCB0YnNwYWNlX2NvbWJpbmVkX2lkeCBPTiB0YnNwYWNlX2Nv bWJpbmVkIChhKTsKK0NSRUFURSBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkX2NoaWxkICgpIElOSEVS SVRTICh0YnNwYWNlX2NvbWJpbmVkKTsKK0lOU0VSVCBJTlRPIHRic3BhY2VfY29tYmluZWRfY2hp bGQgVkFMVUVTICg1MDAwKTsKK0NSRUFURSBGVU5DVElPTiB0YnNwYWNlX2NvbWJpbmVkX2Noayh2 IGludCkgUkVUVVJOUyBib29sIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgIElGIHYg PCA1MDAwIFRIRU4gUkVUVVJOIHRydWU7IEVORCBJRjsKKyAgSU5TRVJUIElOVE8gdGJzcGFjZV9j b21iaW5lZCBTRUxFQ1QgLWdlbmVyYXRlX3NlcmllcygxLCA1MCk7CisgIFJBSVNFIEVYQ0VQVElP TiAnYWJvcnQgYWZ0ZXIgd3JpdGluZyc7CitFTkQgJCQ7CitBTFRFUiBUQUJMRSB0YnNwYWNlX2Nv bWJpbmVkIFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UsCisgIEFERCBDT05TVFJBSU5U IHRic3BhY2VfY29tYmluZWRfayBDSEVDSyAodGJzcGFjZV9jb21iaW5lZF9jaGsoYSkpOworRVJS T1I6ICBhYm9ydCBhZnRlciB3cml0aW5nCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gdGJz cGFjZV9jb21iaW5lZF9jaGsoaW50ZWdlcikgbGluZSA1IGF0IFJBSVNFCitEUk9QIFRBQkxFIHRi c3BhY2VfY29tYmluZWRfY2hpbGQ7CitJTlNFUlQgSU5UTyB0YnNwYWNlX2NvbWJpbmVkIFNFTEVD VCBnZW5lcmF0ZV9zZXJpZXMoMTAxLCAzMDApOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor U0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEZST00gdGJzcGFj ZV9jb21iaW5lZCBXSEVSRSBhIDwgMDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93 KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworRFJP UCBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkOworRFJPUCBGVU5DVElPTiB0YnNwYWNlX2NvbWJpbmVk X2NoayhpbnQpOwogQUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlIFJFTkFNRSBUTyBy ZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQ7CiBBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKIEFMVEVS IElOREVYIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCBTRVQgVEFC TEVTUEFDRSBwZ19kZWZhdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGFi bGVzcGFjZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90YWJsZXNwYWNlLnNxbAppbmRleCAw ZjljMTM2ZDMxNy4uMTAwODAzOGQ1NTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3RhYmxlc3BhY2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2Uuc3Fs CkBAIC00MjAsNiArNDIwLDExNCBAQCBSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2UpIFRBQkxFIHRhYmxlc3BhY2VfdGFibGU7IC0tIGZhaWwKIFJFSU5ERVggKFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZSwgQ09OQ1VSUkVOVExZKSBUQUJMRSB0YWJsZXNwYWNlX3RhYmxlOyAt LSBmYWlsCiBSRVNFVCBST0xFOwogCistLSBBTFRFUiBUQUJMRSBTRVQgVEFCTEVTUEFDRSBtb3Zl cyB0aGUgaGVhcCBhbmQgbGVhdmVzIHRoZSBpbmRleGVzIGluIHRoZWlyCistLSB0YWJsZXNwYWNl LiAgUnVuIG9uIGl0cyBvd24sIGFzIGhlcmUsIGl0IGxlYXZlcyB0aGVpciBmaWxlcyBhbG9uZSB0 b28uCitDUkVBVEUgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayAoYSBpbnQpOworSU5TRVJUIElOVE8g dGJzcGFjZV9yb2xsYmFjayBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCk7CitDUkVBVEUg SU5ERVggdGJzcGFjZV9yb2xsYmFja19pZHggT04gdGJzcGFjZV9yb2xsYmFjayAoYSk7CitTRUxF Q1QgcGdfcmVsYXRpb25fc2l6ZSgndGJzcGFjZV9yb2xsYmFja19pZHgnKSBBUyBpZHhfc2l6ZV9i ZWZvcmUgXGdzZXQKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFj a19pZHgnKSBBUyBpZHhfcGF0aCBcZ3NldAorQUxURVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayBT RVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVw YXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpID0gOidpZHhfcGF0aCcgQVMgaWR4X2ZpbGVfa2Vw dDsKKy0tIFNlbnQgdGhyb3VnaCB0aGUgZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wsIGEgbGF0ZXIg c3RhdGVtZW50IG9mIHRoZSBzYW1lCistLSBwaXBlbGluZSBjb3VsZCBzaGFyZSBpdHMgdHJhbnNh Y3Rpb24sIHNvIHRoZSBpbmRleGVzIGdldCBuZXcgZmlsZXMuCitBTFRFUiBUQUJMRSB0YnNwYWNl X3JvbGxiYWNrIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQgXGJpbmQgXGcKK1NFTEVDVCBwZ19y ZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA8PiA6J2lkeF9wYXRoJyBB UyBpZHhfZmlsZV9uZXc7CitBTFRFUiBUQUJMRSB0YnNwYWNlX3JvbGxiYWNrIFNFVCBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3Bh Y2Vfcm9sbGJhY2tfaWR4JykgQVMgaWR4X3BhdGggXGdzZXQKKy0tIEluIGEgdHJhbnNhY3Rpb24g YmxvY2sgdGhlIGluZGV4ZXMgZ2V0IG5ldyBmaWxlcywgc28gdGhhdCBhIHJvbGxiYWNrCistLSBk aXNjYXJkcyB0aGUgZW50cmllcyBhZGRlZCBhZnRlciB0aGUgbW92ZSB0b2dldGhlciB3aXRoIHRo ZSBoZWFwJ3MgZmlsZS4KK0JFR0lOOworQUxURVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayBTRVQg VEFCTEVTUEFDRSBwZ19kZWZhdWx0OworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNw YWNlX3JvbGxiYWNrX2lkeCcpIDw+IDonaWR4X3BhdGgnIEFTIGlkeF9maWxlX25ldzsKK0lOU0VS VCBJTlRPIHRic3BhY2Vfcm9sbGJhY2sgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxMDEsIDIwMDAp OworU0VMRUNUIHBnX3JlbGF0aW9uX3NpemUoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgPiA6aWR4 X3NpemVfYmVmb3JlIEFTIGlkeF9ncmV3OworUk9MTEJBQ0s7CitTRUxFQ1QgcGdfcmVsYXRpb25f c2l6ZSgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA9IDppZHhfc2l6ZV9iZWZvcmUgQVMgaWR4X3Np emVfcmVzdG9yZWQ7CistLSB0aGUgc2FtZSBmb3IgYSBUUlVOQ0FURSBhZnRlciB0aGUgbW92ZSwg d2hpY2ggaXMgZG9uZSBpbiBwbGFjZQorQkVHSU47CitBTFRFUiBUQUJMRSB0YnNwYWNlX3JvbGxi YWNrIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitUUlVOQ0FURSB0YnNwYWNlX3JvbGxiYWNr OworUk9MTEJBQ0s7CitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6ZSgndGJzcGFjZV9yb2xsYmFja19p ZHgnKSA9IDppZHhfc2l6ZV9iZWZvcmUgQVMgaWR4X3NpemVfcmVzdG9yZWQ7CitTRUxFQ1QgY291 bnQoKikgRlJPTSB0YnNwYWNlX3JvbGxiYWNrOworLS0gQW4gaW5kZXggY3JlYXRlZCBpbiB0aGUg c2FtZSBzdWJ0cmFuc2FjdGlvbiBpcyBkaXNjYXJkZWQgd2l0aCB0aGUgaGVhcAorLS0gYW55d2F5 IGFuZCBpcyBub3QgY29waWVkLiAgTW92aW5nIHRoZSBpbmRleGVzIGZpcnN0IGFuZCB0aGVuIHRo ZSB0YWJsZQorLS0gY29waWVzIGVhY2ggaW5kZXggb25seSBvbmNlLgorQkVHSU47CitDUkVBVEUg SU5ERVggdGJzcGFjZV9yb2xsYmFja19pZHgyIE9OIHRic3BhY2Vfcm9sbGJhY2sgKGEpOworU0VM RUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeDInKSBBUyBpZHgy X3BhdGggXGdzZXQKK0FMVEVSIElOREVYIHRic3BhY2Vfcm9sbGJhY2tfaWR4IFNFVCBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3Bh Y2Vfcm9sbGJhY2tfaWR4JykgQVMgaWR4X21vdmVkX3BhdGggXGdzZXQKK0FMVEVSIFRBQkxFIHRi c3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKK1NFTEVDVCBwZ19yZWxh dGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgyJykgPSA6J2lkeDJfcGF0aCcgQVMg aWR4Ml9ub3RfY29waWVkLAorICBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFj a19pZHgnKSA9IDonaWR4X21vdmVkX3BhdGgnIEFTIGlkeF9ub3RfY29waWVkX2FnYWluOworUk9M TEJBQ0s7CitEUk9QIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2s7CistLSBBbiBpbmRleCBmaWxlIHRo YXQgaXMgbmV3IGluIHRoaXMgdHJhbnNhY3Rpb24gYnV0IG9sZGVyIHRoYW4gYSBzYXZlcG9pbnQK Ky0tIHN1cnZpdmVzIGEgcm9sbGJhY2sgdG8gaXQsIHNvIGl0IG11c3Qgc3RpbGwgZm9sbG93IGEg bW92ZSBtYWRlIGFmdGVyIHRoZQorLS0gc2F2ZXBvaW50OiBhbiBpbmRleCBjcmVhdGVkIG9yIHJl aW5kZXhlZCBiZWZvcmUgaXQsIG9yIGFscmVhZHkgY29waWVkIGJ5CistLSBhbiBlYXJsaWVyIG1v dmUuICBSb3dzIGluc2VydGVkIGFmdGVyd2FyZHMgcmV1c2UgdGhlIFRJRHMgZnJlZWQgYnkgdGhl CistLSByb2xsYmFja3M7IGEgc3RhbGUgaW5kZXggZW50cnkgd291bGQgbWF0Y2ggdGhlbS4KK0NS RUFURSBUQUJMRSB0YnNwYWNlX3N1YnhhY3QgKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRic3BhY2Vf c3VieGFjdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCk7CitTRVQgZW5hYmxlX3NlcXNj YW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitCRUdJTjsKK0NSRUFURSBJ TkRFWCB0YnNwYWNlX3N1YnhhY3RfaWR4IE9OIHRic3BhY2Vfc3VieGFjdCAoYSk7CitTQVZFUE9J TlQgczsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfc3VieGFjdCBTRVQgVEFCTEVTUEFDRSByZWdyZXNz X3RibHNwYWNlOworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFNFTEVDVCAtZ2VuZXJhdGVf c2VyaWVzKDEsIDUwKTsKK1JPTExCQUNLIFRPIHM7CitDT01NSVQ7CitCRUdJTjsKK1JFSU5ERVgg SU5ERVggdGJzcGFjZV9zdWJ4YWN0X2lkeDsKK1NBVkVQT0lOVCBzOworQUxURVIgVEFCTEUgdGJz cGFjZV9zdWJ4YWN0IFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitJTlNFUlQgSU5U TyB0YnNwYWNlX3N1YnhhY3QgU0VMRUNUIC1nZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworUk9MTEJB Q0sgVE8gczsKK0NPTU1JVDsKK0JFR0lOOworQUxURVIgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0IFNF VCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1Ynhh Y3QgVkFMVUVTICgwKTsKK1NBVkVQT0lOVCBzOworQUxURVIgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0 IFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1YnhhY3Qg U0VMRUNUIC1nZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworUk9MTEJBQ0sgVE8gczsKK0NPTU1JVDsK K0lOU0VSVCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEwMSwg MzAwKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vfc3VieGFjdCBXSEVSRSBhIDwgMDsK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vfc3VieGFjdDsKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitEUk9QIFRBQkxFIHRic3BhY2Vfc3VieGFj dDsKKy0tIENvbWJpbmVkIHdpdGggYW5vdGhlciBzdWJjb21tYW5kLCB0aGUgQUxURVIgY2FuIHJ1 biB1c2VyIGNvZGUgYWZ0ZXIgdGhlCistLSBtb3ZlLCBzdWNoIGFzIGEgQ0hFQ0sgY29uc3RyYWlu dCB2YWxpZGF0ZWQgb24gYW4gaW5oZXJpdGFuY2UgY2hpbGQgYWZ0ZXIKKy0tIHRoZSBwYXJlbnQg d2FzIG1vdmVkLCBzbyB0aGUgaW5kZXhlcyBnZXQgbmV3IGZpbGVzIGV2ZW4gb3V0c2lkZSBhCist LSB0cmFuc2FjdGlvbiBibG9jay4KK0NSRUFURSBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkIChhIGlu dCk7CitJTlNFUlQgSU5UTyB0YnNwYWNlX2NvbWJpbmVkIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKTsKK0NSRUFURSBJTkRFWCB0YnNwYWNlX2NvbWJpbmVkX2lkeCBPTiB0YnNwYWNlX2Nv bWJpbmVkIChhKTsKK0NSRUFURSBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkX2NoaWxkICgpIElOSEVS SVRTICh0YnNwYWNlX2NvbWJpbmVkKTsKK0lOU0VSVCBJTlRPIHRic3BhY2VfY29tYmluZWRfY2hp bGQgVkFMVUVTICg1MDAwKTsKK0NSRUFURSBGVU5DVElPTiB0YnNwYWNlX2NvbWJpbmVkX2Noayh2 IGludCkgUkVUVVJOUyBib29sIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgIElGIHYg PCA1MDAwIFRIRU4gUkVUVVJOIHRydWU7IEVORCBJRjsKKyAgSU5TRVJUIElOVE8gdGJzcGFjZV9j b21iaW5lZCBTRUxFQ1QgLWdlbmVyYXRlX3NlcmllcygxLCA1MCk7CisgIFJBSVNFIEVYQ0VQVElP TiAnYWJvcnQgYWZ0ZXIgd3JpdGluZyc7CitFTkQgJCQ7CitBTFRFUiBUQUJMRSB0YnNwYWNlX2Nv bWJpbmVkIFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UsCisgIEFERCBDT05TVFJBSU5U IHRic3BhY2VfY29tYmluZWRfayBDSEVDSyAodGJzcGFjZV9jb21iaW5lZF9jaGsoYSkpOworRFJP UCBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkX2NoaWxkOworSU5TRVJUIElOVE8gdGJzcGFjZV9jb21i aW5lZCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEwMSwgMzAwKTsKK1NFVCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRic3BhY2VfY29tYmluZWQgV0hFUkUgYSA8IDA7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK K1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworRFJPUCBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkOwor RFJPUCBGVU5DVElPTiB0YnNwYWNlX2NvbWJpbmVkX2NoayhpbnQpOworCiBBTFRFUiBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVOQU1FIFRPIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZDsK IAogQUxURVIgVEFCTEUgQUxMIElOIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZV9yZW5hbWVk IFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7Cg== --===============1761294064175896986== Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0*=us-ascii''v7-REL_16-0001-Fix-index-corruption-after-rolling-back; filename*1*=-ALTER-TAB.patch.txt MIME-Version: 1.0 RnJvbSAyZGMyZWIwNWVlNGJlNjNlNjViOTA3OTJiMWQ5ZjhkNDUyNTM0YjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51ZWwgUmV5ZXMgQnJhdm8gPG1hbnVlbHJleWVzYnJhdm9A Z21haWwuY29tPgpEYXRlOiBTdW4sIDQgT2N0IDIwMjYgMDQ6MTI6MzAgLTAzMDAKU3ViamVjdDog W1BBVENIIHY3XSBGaXggaW5kZXggY29ycnVwdGlvbiBhZnRlciByb2xsaW5nIGJhY2sgQUxURVIg VEFCTEUgU0VUCiBUQUJMRVNQQUNFCgpBTFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BBQ0UgcmV3 cml0ZXMgYSB0YWJsZSdzIGhlYXAgdG8gYSBuZXcKcmVsZmlsZW5vZGUgYnV0IGxlYXZlcyB0aGUg dGFibGUncyBpbmRleGVzIG9uIHRoZWlyIGV4aXN0aW5nCnJlbGZpbGVub2Rlcy4gIFRoZSB0d28g dGhlbiByb2xsIGJhY2sgYnkgZGlmZmVyZW50IG1lY2hhbmlzbXM6IG9uIGFib3J0CnRoZSBoZWFw J3MgbmV3IGZpbGUgaXMgZGlzY2FyZGVkLCBmcmVlaW5nIHRoZSBoZWFwIFRJRHMgY29uc3VtZWQg Ynkgcm93cwppbnNlcnRlZCBhZnRlciB0aGUgU0VUIFRBQkxFU1BBQ0UsIHdoaWxlIHRoZSBpbmRl eCBlbnRyaWVzIGZvciB0aG9zZSByb3dzCndlcmUgd3JpdHRlbiB0byB0aGUgdW5jaGFuZ2VkIGlu ZGV4IGZpbGVzIGFuZCBzdXJ2aXZlLiAgQSBsYXRlciBpbnNlcnQKY2FuIHJldXNlIGEgZnJlZWQg aGVhcCBUSUQsIGxlYXZpbmcgdHdvIGluZGV4IGVudHJpZXMgdGhhdCBwb2ludCBhdCB0aGUKc2Ft ZSBsaXZlIGhlYXAgdHVwbGUuICBUaGlzIHN1cmZhY2VzIGFzIGEgX2J0X3Bvc3RpbmdfdmFsaWQg YXNzZXJ0aW9uCmZhaWx1cmUgaW4gbmJ0cmVlIGRlZHVwbGljYXRpb24sIGFuZCBhcyBkdXBsaWNh dGUgcm93cyB0aHJvdWdoIGFuCmluZGV4LW9ubHkgc2NhbiBpbiBnaXN0LiAgQSBUUlVOQ0FURSBh ZnRlciB0aGUgbW92ZSBpbiB0aGUgc2FtZQp0cmFuc2FjdGlvbiB0cnVuY2F0ZXMgdGhlIG9sZCBp bmRleCBmaWxlcyBpbiBwbGFjZSwgd2hpY2ggYSByb2xsYmFjawpjYW5ub3QgdW5kbyBlaXRoZXIu CgpGaXggYnkgZ2l2aW5nIGVhY2ggaW5kZXggb2YgdGhlIHRhYmxlIGEgbmV3IHJlbGZpbGVudW1i ZXIgaW4gdGhlIHNhbWUKQUxURVIsIGNvcHlpbmcgaXQgd2l0aGluIGl0cyBvd24gdGFibGVzcGFj ZSAodGhlIGluZGV4ZXMgc3RheSB3aGVyZSB0aGV5CmFyZSwgYXMgZG9jdW1lbnRlZCksIHNvIHRo YXQgYW4gYWJvcnQgZGlzY2FyZHMgdGhlIG5ldyBoZWFwIGFuZCBpbmRleApmaWxlcyB0b2dldGhl ci4gIFR3byBjYXNlcyBuZWVkIG5vIGNvcHk6CgotIFRoZSBBTFRFUiBpcyBhIHBsYWluIEFMVEVS IFRBQkxFIC4uLiBTRVQgVEFCTEVTUEFDRSBvZiBhIHNpbmdsZQogIHRhYmxlLCB3aXRoIG5vIG90 aGVyIHN1YmNvbW1hbmQsIHNlbnQgYnkgYSBjbGllbnQgYXMgdGhlIG9ubHkKICBzdGF0ZW1lbnQg b2YgYSBzaW1wbGUgUXVlcnkgbWVzc2FnZSBvdXRzaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2ssIHNv CiAgdGhlIHRyYW5zYWN0aW9uIGVuZHMgcmlnaHQgYWZ0ZXIgaXQuICBBbnkgb3RoZXIgc3ViY29t bWFuZCBjb3VsZCBydW4KICB1c2VyIGNvZGUgYWZ0ZXIgdGhlIG1vdmU6IHRoZSB2YWxpZGF0aW9u IG9mIGFuIGluaGVyaXRhbmNlIGNoaWxkJ3MKICBuZXcgQ0hFQ0sgY29uc3RyYWludCwgYSBzcWxf ZHJvcCBldmVudCB0cmlnZ2VyLCBhbmQgc28gb24uICBUaGlzIGFsc28KICByZXF1aXJlcyB0aGF0 IG5vIGRkbF9jb21tYW5kX2VuZCBldmVudCB0cmlnZ2VyIHJ1bnMgYWZ0ZXIgaXQuICBBCiAgc3Rh dGVtZW50IHNlbnQgdGhyb3VnaCB0aGUgZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wgYWx3YXlzIGNv cGllczogYQogIGxhdGVyIHN0YXRlbWVudCBvZiB0aGUgc2FtZSBwaXBlbGluZSBzaGFyZXMgaXRz IHRyYW5zYWN0aW9uIHVudGlsCiAgdGhlIG5leHQgU3luYywgYW5kIHRoZSBiYWNrZW5kIGNhbm5v dCB0ZWxsIHdoZXRoZXIgb25lIHdpbGwgZm9sbG93LgogIElzRXh0ZW5kZWRRdWVyeU1lc3NhZ2Uo KSBpcyBhZGRlZCB0byBwb3N0Z3Jlcy5jIHRvIHRlbGwgdGhlIHR3bwogIGFwYXJ0LgoKLSBUaGUg aW5kZXgncyBjdXJyZW50IGZpbGUgd2FzIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgc3VidHJhbnNh Y3Rpb24sCiAgZm9yIGV4YW1wbGUgYW4gaW5kZXggY3JlYXRlZCwgb3IgbW92ZWQsIGVhcmxpZXIg aW4gaXQuICBBbiBhYm9ydAogIGRpc2NhcmRzIHRoYXQgZmlsZSB0b2dldGhlciB3aXRoIHRoZSBo ZWFwJ3MgbmV3IG9uZS4gIFRoaXMgYWxzbyBsZXRzCiAgYSB0cmFuc2FjdGlvbiBtb3ZlIHRoZSBp bmRleGVzIGZpcnN0IGFuZCB0aGVuIHRoZSB0YWJsZSB3aXRob3V0CiAgY29weWluZyB0aGUgaW5k ZXhlcyB0d2ljZS4KClRoZSByZWdyZXNzaW9uIHRlc3QgY2hlY2tzIHRoYXQgdGhlIEFMVEVSIG9u IGl0cyBvd24gbGVhdmVzIHRoZSBpbmRleApmaWxlcyB1bnRvdWNoZWQsIGFuZCB0aGF0IHNlbnQg dGhyb3VnaCB0aGUgZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wgaXQKZ2l2ZXMgdGhlbSBuZXcgZmls ZXM7IHRoYXQgY29tYmluZWQgd2l0aCBhIENIRUNLIGNvbnN0cmFpbnQgd2hvc2UKdmFsaWRhdGlv biBvbiBhbiBpbmhlcml0YW5jZSBjaGlsZCB3cml0ZXMgdG8gdGhlIHRhYmxlIGFmdGVyIHRoZSBt b3ZlCmFuZCBmYWlscywgaXQgbGVhdmVzIG5vIHN0YWxlIGluZGV4IGVudHJ5OyB0aGF0IGluIGEg dHJhbnNhY3Rpb24gYmxvY2sgYQpyb2xsYmFjayBhZnRlciBpbnNlcnRpbmcgb3IgdHJ1bmNhdGlu ZyBsZWF2ZXMgdGhlIGluZGV4IGZpbGUgYXQgaXRzCnByZS10cmFuc2FjdGlvbiBzaXplOyB0aGF0 IGFuIGluZGV4IGNyZWF0ZWQgb3IgbW92ZWQgZWFybGllciBpbiB0aGUKc3VidHJhbnNhY3Rpb24g aXMgbm90IGNvcGllZDsgYW5kIHRoYXQgYWZ0ZXIgYSByb2xsYmFjayB0byBhIHNhdmVwb2ludCwK YW4gaW5kZXggY3JlYXRlZCwgcmVpbmRleGVkIG9yIGFscmVhZHkgY29waWVkIGJlZm9yZSB0aGUg c2F2ZXBvaW50CnJldHVybnMgbm8gcm93IGZvciB0aGUgcm9sbGVkLWJhY2sgdmFsdWVzLgoKQnVn OiAjMTk2ODYKUmVwb3J0ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4KU3VnZ2VzdGVkLWJ5OiBBbmRy ZXMgRnJldW5kClJldmlld2VkLWJ5OiBBbGV4YW5kcmUgRmVsaXBlClJldmlld2VkLWJ5OiBTaGlo YW8gWmhvbmcKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgIHwg MTUyICsrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAg ICAgICAgICAgICB8ICAxNyArKysKIHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaCAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVzcGFjZS5vdXQgfCAxNjQgKysrKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2Uuc3FsICAgICAg fCAxMDggKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDQzOSBpbnNlcnRpb25zKCsp LCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZjk1NTgxM2Ni ZjAuLjUwM2ZkNmE5NGExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtOTIsNiArOTIs NyBAQAogI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZXZ0Y2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBAIC01OTQsNyArNTk1LDExIEBAIHN0YXRpYyB2 b2lkIEFUUHJlcFNldEFjY2Vzc01ldGhvZChBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9u IHJlbCwgY29uc3QgY2hhCiBzdGF0aWMgYm9vbCBBVFByZXBDaGFuZ2VQZXJzaXN0ZW5jZShSZWxh dGlvbiByZWwsIGJvb2wgdG9Mb2dnZWQpOwogc3RhdGljIHZvaWQgQVRQcmVwU2V0VGFibGVTcGFj ZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJY29uc3QgY2hh ciAqdGFibGVzcGFjZW5hbWUsIExPQ0tNT0RFIGxvY2ttb2RlKTsKLXN0YXRpYyB2b2lkIEFURXhl Y1NldFRhYmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUg bG9ja21vZGUpOworc3RhdGljIHZvaWQgQVRFeGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQs IE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSwKKwkJCQkJCQkJYm9vbCBjb3B5 SW5kZXhlcyk7CitzdGF0aWMgYm9vbCBBVFNldFRhYmxlU3BhY2VDb3B5SW5kZXhlcyhBbHRlclRh YmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0ICp3cXVldWUsCisJCQkJCQkJCQkgICBBbHRlclRhYmxl VXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQgQVRFeGVjU2V0VGFibGVTcGFj ZU5ld0luZGV4UmVsZmlsZW51bWJlcihPaWQgaW5kZXhPaWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsK IHN0YXRpYyB2b2lkIEFURXhlY1NldFRhYmxlU3BhY2VOb1N0b3JhZ2UoUmVsYXRpb24gcmVsLCBP aWQgbmV3VGFibGVTcGFjZSk7CiBzdGF0aWMgdm9pZCBBVEV4ZWNTZXRSZWxPcHRpb25zKFJlbGF0 aW9uIHJlbCwgTGlzdCAqZGVmTGlzdCwKIAkJCQkJCQkJQWx0ZXJUYWJsZVR5cGUgb3BlcmF0aW9u LApAQCAtNTczMiw3ICs1NzM3LDkgQEAgQVRSZXdyaXRlVGFibGVzKEFsdGVyVGFibGVTdG10ICpw YXJzZXRyZWUsIExpc3QgKip3cXVldWUsIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJICoganVzdCBk byBhIGJsb2NrLWJ5LWJsb2NrIGNvcHkuCiAJCQkgKi8KIAkJCWlmICh0YWItPm5ld1RhYmxlU3Bh Y2UpCi0JCQkJQVRFeGVjU2V0VGFibGVTcGFjZSh0YWItPnJlbGlkLCB0YWItPm5ld1RhYmxlU3Bh Y2UsIGxvY2ttb2RlKTsKKwkJCQlBVEV4ZWNTZXRUYWJsZVNwYWNlKHRhYi0+cmVsaWQsIHRhYi0+ bmV3VGFibGVTcGFjZSwgbG9ja21vZGUsCisJCQkJCQkJCQlBVFNldFRhYmxlU3BhY2VDb3B5SW5k ZXhlcyhwYXJzZXRyZWUsICp3cXVldWUsCisJCQkJCQkJCQkJCQkJCQkgICBjb250ZXh0KSk7CiAJ CX0KIAogCQkvKgpAQCAtMTQ4MTgsMTMgKzE0ODI1LDE2IEBAIEFURXhlY1NldFJlbE9wdGlvbnMo UmVsYXRpb24gcmVsLCBMaXN0ICpkZWZMaXN0LCBBbHRlclRhYmxlVHlwZSBvcGVyYXRpb24sCiAg KiByZXdyaXRpbmcgdG8gYmUgZG9uZSwgc28gd2UganVzdCB3YW50IHRvIGNvcHkgdGhlIGRhdGEg YXMgZmFzdCBhcyBwb3NzaWJsZS4KICAqLwogc3RhdGljIHZvaWQKLUFURXhlY1NldFRhYmxlU3Bh Y2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUgbG9ja21vZGUpCitB VEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tN T0RFIGxvY2ttb2RlLAorCQkJCQlib29sIGNvcHlJbmRleGVzKQogewogCVJlbGF0aW9uCXJlbDsK IAlPaWQJCQlyZWx0b2FzdHJlbGlkOworCWNoYXIJCXJlbGtpbmQ7CiAJUmVsRmlsZU51bWJlciBu ZXdyZWxmaWxlbnVtYmVyOwogCVJlbEZpbGVMb2NhdG9yIG5ld3Jsb2NhdG9yOwogCUxpc3QJICAg KnJlbHRvYXN0aWR4aWRzID0gTklMOworCUxpc3QJICAgKnJlbHRhYmlkeGlkcyA9IE5JTDsKIAlM aXN0Q2VsbCAgICpsYzsKIAogCS8qCkBAIC0xNDg0Miw2ICsxNDg1Miw3IEBAIEFURXhlY1NldFRh YmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUgbG9ja21v ZGUpCiAJfQogCiAJcmVsdG9hc3RyZWxpZCA9IHJlbC0+cmRfcmVsLT5yZWx0b2FzdHJlbGlkOwor CXJlbGtpbmQgPSByZWwtPnJkX3JlbC0+cmVsa2luZDsKIAkvKiBGZXRjaCB0aGUgbGlzdCBvZiBp bmRleGVzIG9uIHRvYXN0IHJlbGF0aW9uIGlmIG5lY2Vzc2FyeSAqLwogCWlmIChPaWRJc1ZhbGlk KHJlbHRvYXN0cmVsaWQpKQogCXsKQEAgLTE0ODg4LDYgKzE0ODk5LDE0IEBAIEFURXhlY1NldFRh YmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUgbG9ja21v ZGUpCiAKIAlSZWxhdGlvbkFzc3VtZU5ld1JlbGZpbGVsb2NhdG9yKHJlbCk7CiAKKwkvKgorCSAq IElmIHRoaXMgaXMgYSB0YWJsZSwgY29sbGVjdCBpdHMgaW5kZXggbGlzdCBub3csIHdoaWxlIHRo ZSByZWxhdGlvbiBpcworCSAqIHN0aWxsIG9wZW4sIHNvIHdlIGNhbiBnaXZlIGVhY2ggaW5kZXgg YSBmcmVzaCByZWxmaWxlbnVtYmVyIGJlbG93LgorCSAqLworCWlmIChjb3B5SW5kZXhlcyAmJgor CQkocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8IHJlbGtpbmQgPT0gUkVMS0lORF9NQVRW SUVXKSkKKwkJcmVsdGFiaWR4aWRzID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsKTsKKwogCXJl bGF0aW9uX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKIAogCS8qIE1ha2Ugc3VyZSB0aGUgcmVsdGFibGVz cGFjZSBjaGFuZ2UgaXMgdmlzaWJsZSAqLwpAQCAtMTQ4OTUsMTIgKzE0OTE0LDEzNSBAQCBBVEV4 ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tNT0RF IGxvY2ttb2RlKQogCiAJLyogTW92ZSBhc3NvY2lhdGVkIHRvYXN0IHJlbGF0aW9uIGFuZC9vciBp bmRleGVzLCB0b28gKi8KIAlpZiAoT2lkSXNWYWxpZChyZWx0b2FzdHJlbGlkKSkKLQkJQVRFeGVj U2V0VGFibGVTcGFjZShyZWx0b2FzdHJlbGlkLCBuZXdUYWJsZVNwYWNlLCBsb2NrbW9kZSk7CisJ CUFURXhlY1NldFRhYmxlU3BhY2UocmVsdG9hc3RyZWxpZCwgbmV3VGFibGVTcGFjZSwgbG9ja21v ZGUsIGNvcHlJbmRleGVzKTsKIAlmb3JlYWNoKGxjLCByZWx0b2FzdGlkeGlkcykKLQkJQVRFeGVj U2V0VGFibGVTcGFjZShsZmlyc3Rfb2lkKGxjKSwgbmV3VGFibGVTcGFjZSwgbG9ja21vZGUpOwor CQlBVEV4ZWNTZXRUYWJsZVNwYWNlKGxmaXJzdF9vaWQobGMpLCBuZXdUYWJsZVNwYWNlLCBsb2Nr bW9kZSwgY29weUluZGV4ZXMpOwogCiAJLyogQ2xlYW4gdXAgKi8KIAlsaXN0X2ZyZWUocmVsdG9h c3RpZHhpZHMpOworCisJLyoKKwkgKiBUaGUgaGVhcCBub3cgaGFzIGEgbmV3IHJlbGZpbGVub2Rl LiAgR2l2ZSBlYWNoIG9mIHRoZSB0YWJsZSdzIGluZGV4ZXMgYQorCSAqIGZyZXNoIHJlbGZpbGVu b2RlIHRvbywgc28gdGhhdCB0aGUgaW5kZXhlcyBzaGFyZSB0aGUgaGVhcCdzIHJld3JpdGUKKwkg KiBmYXRlIGFjcm9zcyBjb21taXQgYW5kIGFib3J0LiAgU2VlCisJICogQVRFeGVjU2V0VGFibGVT cGFjZU5ld0luZGV4UmVsZmlsZW51bWJlci4KKwkgKi8KKwlmb3JlYWNoKGxjLCByZWx0YWJpZHhp ZHMpCisJCUFURXhlY1NldFRhYmxlU3BhY2VOZXdJbmRleFJlbGZpbGVudW1iZXIobGZpcnN0X29p ZChsYyksIGxvY2ttb2RlKTsKKwlsaXN0X2ZyZWUocmVsdGFiaWR4aWRzKTsKK30KKworLyoKKyAq IERvZXMgQUxURVIgVEFCTEUgU0VUIFRBQkxFU1BBQ0UgbmVlZCB0byBnaXZlIHRoZSB0YWJsZSdz IGluZGV4ZXMgbmV3IGZpbGVzPworICoKKyAqIE9ubHkgaWYgc29tZXRoaW5nIGNhbiBzdGlsbCBt b2RpZnkgdGhlIHRhYmxlIGluIHRoZSBzYW1lIHRyYW5zYWN0aW9uIGFmdGVyCisgKiB0aGUgbW92 ZS4gIFJhdGhlciB0aGFuIGxpc3RpbmcgZXZlcnkgcGxhY2Ugd2hlcmUgdXNlciBjb2RlIGNhbiBy dW4gYWZ0ZXIKKyAqIGl0IC0tIHRoZSB2YWxpZGF0aW9uIG9mIG90aGVyIHRhYmxlcyBpbiB0aGUg d29yayBxdWV1ZSwgc3VjaCBhcyBhbgorICogaW5oZXJpdGFuY2UgY2hpbGQgZ2V0dGluZyBhIG5l dyBDSEVDSyBjb25zdHJhaW50LCBmb3JlaWduIGtleSB2YWxpZGF0aW9uLAorICogc3FsX2Ryb3Ag YW5kIHRhYmxlX3Jld3JpdGUgZXZlbnQgdHJpZ2dlcnMsIGFuZCBtb3JlIC0tIHRoZSBmaWxlcyBh cmUga2VwdAorICogb25seSBmb3IgdGhlIG9uZSBjYXNlIHdoZXJlIG5vbmUgb2YgdGhlbSBleGlz dHM6IGEgcGxhaW4KKyAqICJBTFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BBQ0UiIG9mIGEgc2lu Z2xlIHRhYmxlLCB3aXRoIG5vIG90aGVyCisgKiBzdWJjb21tYW5kLCBzZW50IGJ5IGEgY2xpZW50 IGFzIHRoZSBvbmx5IHN0YXRlbWVudCBvZiBhIHNpbXBsZSBRdWVyeQorICogbWVzc2FnZSwgb3V0 c2lkZSBhbnkgdHJhbnNhY3Rpb24gYmxvY2s6IHRoZSB0cmFuc2FjdGlvbiB0aGVuIGVuZHMgcmln aHQKKyAqIGFmdGVyIGl0LiAgV2hhdCBjYW4gc3RpbGwgcnVuIGFmdGVyIGl0IGlzIGEgZGRsX2Nv bW1hbmRfZW5kIGV2ZW50IHRyaWdnZXIsCisgKiBzbyB0aGF0IGNhc2UgYWxzbyByZXF1aXJlcyB0 aGF0IHRoZXJlIGlzIG5vbmUuCisgKgorICogQSBzdGF0ZW1lbnQgc2VudCBieSBhbiBleHRlbmRl ZC1wcm90b2NvbCBFeGVjdXRlIG1lc3NhZ2UgYWx3YXlzIGNvcGllczoKKyAqIGxhdGVyIHN0YXRl bWVudHMgb2YgdGhlIHNhbWUgcGlwZWxpbmUgc2hhcmUgaXRzIHRyYW5zYWN0aW9uIHVudGlsIHRo ZSBuZXh0CisgKiBTeW5jLCBhbmQgdGhlIGJhY2tlbmQgY2Fubm90IHRlbGwgd2hldGhlciBhbnkg d2lsbCBmb2xsb3cuICBGb3JjaW5nIGEgY29tbWl0CisgKiBhZnRlciB0aGUgQUxURVIgd291bGQg bWFrZSBpdCBjb21taXQgb24gaXRzIG93biB3aGVuIGEgbGF0ZXIgc3RhdGVtZW50IG9mCisgKiB0 aGUgcGlwZWxpbmUgZmFpbHMsIHdoaWNoIGlzIG5vdCBob3cgQUxURVIgVEFCTEUgYmVoYXZlcyBv dGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitBVFNldFRhYmxlU3BhY2VDb3B5SW5kZXhlcyhB bHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0ICp3cXVldWUsCisJCQkJCQkgICBBbHRlclRh YmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJaWYgKGNvbnRleHQgPT0gTlVMTCB8fCBJ c0luVHJhbnNhY3Rpb25CbG9jayhjb250ZXh0LT5pc1RvcExldmVsKSkKKwkJcmV0dXJuIHRydWU7 CisJaWYgKE15QmFja2VuZFR5cGUgIT0gQl9CQUNLRU5EIHx8IElzRXh0ZW5kZWRRdWVyeU1lc3Nh Z2UoKSkKKwkJcmV0dXJuIHRydWU7CisJaWYgKHBhcnNldHJlZSA9PSBOVUxMIHx8IGxpc3RfbGVu Z3RoKHBhcnNldHJlZS0+Y21kcykgIT0gMSB8fAorCQljYXN0Tm9kZShBbHRlclRhYmxlQ21kLCBs aW5pdGlhbChwYXJzZXRyZWUtPmNtZHMpKS0+c3VidHlwZSAhPSBBVF9TZXRUYWJsZVNwYWNlIHx8 CisJCWxpc3RfbGVuZ3RoKHdxdWV1ZSkgIT0gMSkKKwkJcmV0dXJuIHRydWU7CisJaWYgKEV2ZW50 Q2FjaGVMb29rdXAoRVZUX0RETENvbW1hbmRFbmQpICE9IE5JTCkKKwkJcmV0dXJuIHRydWU7CisK KwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBHaXZlIG9uZSBvZiBhIHRhYmxlJ3MgaW5kZXhl cyBhIGZyZXNoIHJlbGZpbGVudW1iZXIgd2l0aGluIGl0cyBleGlzdGluZworICogdGFibGVzcGFj ZSwgY29weWluZyB0aGUgY3VycmVudCBpbmRleCBmaWxlIHRvIHRoZSBuZXcgcmVsZmlsZW51bWJl ci4KKyAqCisgKiBBVEV4ZWNTZXRUYWJsZVNwYWNlKCkgY2FsbHMgdGhpcyBmb3IgZWFjaCBpbmRl eCBvZiBhIHRhYmxlIHdob3NlIGhlYXAgaXQgaGFzCisgKiBqdXN0IHJld3JpdHRlbiB0byBhIG5l dyByZWxmaWxlbm9kZS4gIFRoZSBpbmRleGVzIG11c3Qgc2hhcmUgdGhlIGhlYXAncworICogdHJh bnNhY3Rpb25hbCBmYXRlOiBhbiBhYm9ydCBoYXMgdG8gZGlzY2FyZCB0aGUgaW5kZXggZW50cmll cyB3cml0dGVuIGR1cmluZworICogdGhlIHRyYW5zYWN0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIGhl YXAncyBuZXcgZmlsZSwgc2luY2UgdGhlIGhlYXAgVElEcyB0aG9zZQorICogZW50cmllcyBwb2lu dCBhdCBhcmUgZnJlZWQgYnkgdGhlIGFib3J0IGFuZCBjYW4gYmUgcmV1c2VkIGJ5IGxhdGVyIGlu c2VydHMuCisgKiBDb3B5aW5nIHRoZSBleGlzdGluZyBpbmRleCBmaWxlIGtlZXBzIHRoZSBhZGRl ZCBjb3N0IGNsb3NlIHRvIHRoYXQgb2YgdGhlCisgKiBoZWFwIG1vdmUgaXRzZWxmOyB0aGUgaW5k ZXggc3RheXMgaW4gaXRzIG93biB0YWJsZXNwYWNlLCBhcyBkb2N1bWVudGVkLgorICovCitzdGF0 aWMgdm9pZAorQVRFeGVjU2V0VGFibGVTcGFjZU5ld0luZGV4UmVsZmlsZW51bWJlcihPaWQgaW5k ZXhPaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCVJlbGF0aW9uCWluZDsKKwlSZWxGaWxlTnVt YmVyIG5ld3JlbGZpbGVudW1iZXI7CisJUmVsRmlsZUxvY2F0b3IgbmV3cmxvY2F0b3I7CisJUmVs YXRpb24JcGdfY2xhc3M7CisJSGVhcFR1cGxlCXR1cGxlOworCUl0ZW1Qb2ludGVyRGF0YSBvdGlk OworCUZvcm1fcGdfY2xhc3MgcmRfcmVsOworCisJaW5kID0gcmVsYXRpb25fb3BlbihpbmRleE9p ZCwgbG9ja21vZGUpOworCisJLyoKKwkgKiBPbmx5IHBsYWluIGluZGV4ZXMgaGF2ZSBzdG9yYWdl IHRoYXQgY2FuIGhvbGQgdGhlIHN0YWxlIGVudHJpZXMuICBBbgorCSAqIGluZGV4IHdob3NlIGN1 cnJlbnQgZmlsZSB3YXMgY3JlYXRlZCBpbiB0aGlzIHN1YnRyYW5zYWN0aW9uICh0aGUgaW5kZXgK KwkgKiBpdHNlbGYsIG9yIGEgbmV3IGZpbGUgZm9yIGl0KSBpcyBkaXNjYXJkZWQgdG9nZXRoZXIg d2l0aCB0aGUgaGVhcCdzIG5ldworCSAqIGZpbGUgb24gYWJvcnQsIHNvIGl0IG5lZWRzIG5vIGNv cHkuICByZF9uZXdSZWxmaWxlbG9jYXRvclN1YmlkIGNhbiBiZQorCSAqIHplcm8gYWZ0ZXIgYSBy b2xsYmFjayB0byBhIHNhdmVwb2ludCBldmVuIHRob3VnaCB0aGUgZmlsZSBpcyBuZXc7IHRoZW4K KwkgKiB0aGlzIGZhbGxzIGJhY2sgdG8gcmRfY3JlYXRlU3ViaWQsIGFuZCBjb3BpZXMgaWYgdGhh dCBkb2VzIG5vdCBtYXRjaAorCSAqIGVpdGhlci4KKwkgKi8KKwlpZiAoaW5kLT5yZF9yZWwtPnJl bGtpbmQgIT0gUkVMS0lORF9JTkRFWCB8fAorCQkhUkVMS0lORF9IQVNfU1RPUkFHRShpbmQtPnJk X3JlbC0+cmVsa2luZCkgfHwKKwkJTWF4KGluZC0+cmRfbmV3UmVsZmlsZWxvY2F0b3JTdWJpZCwg aW5kLT5yZF9jcmVhdGVTdWJpZCkgPT0KKwkJR2V0Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQoKSkK Kwl7CisJCXJlbGF0aW9uX2Nsb3NlKGluZCwgTm9Mb2NrKTsKKwkJcmV0dXJuOworCX0KKworCS8q IEFsbG9jYXRlIGEgbmV3IHJlbGZpbGVudW1iZXIgaW4gdGhlIGluZGV4J3MgY3VycmVudCB0YWJs ZXNwYWNlLiAqLworCW5ld3JlbGZpbGVudW1iZXIgPSBHZXROZXdSZWxGaWxlTnVtYmVyKGluZC0+ cmRfcmVsLT5yZWx0YWJsZXNwYWNlLCBOVUxMLAorCQkJCQkJCQkJCSAgIGluZC0+cmRfcmVsLT5y ZWxwZXJzaXN0ZW5jZSk7CisJbmV3cmxvY2F0b3IgPSBpbmQtPnJkX2xvY2F0b3I7CisJbmV3cmxv Y2F0b3IucmVsTnVtYmVyID0gbmV3cmVsZmlsZW51bWJlcjsKKworCS8qIENvcHkgdGhlIGluZGV4 IGludG8gdGhlIG5ldyBmaWxlIGFuZCBzY2hlZHVsZSB0aGUgb2xkIG9uZSBmb3IgY2xlYW51cC4g Ki8KKwlpbmRleF9jb3B5X2RhdGEoaW5kLCBuZXdybG9jYXRvcik7CisKKwkvKiBVcGRhdGUgdGhl IHBnX2NsYXNzIHJvdzsgb25seSB0aGUgcmVsZmlsZW5vZGUgY2hhbmdlcy4gKi8KKwlwZ19jbGFz cyA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0 dXBsZSA9IFNlYXJjaFN5c0NhY2hlTG9ja2VkQ29weTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVt KGluZGV4T2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwgaW5kZXhPaWQpOworCW90aWQg PSB0dXBsZS0+dF9zZWxmOworCXJkX3JlbCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVw bGUpOworCXJkX3JlbC0+cmVsZmlsZW5vZGUgPSBuZXdyZWxmaWxlbnVtYmVyOworCUNhdGFsb2dU dXBsZVVwZGF0ZShwZ19jbGFzcywgJm90aWQsIHR1cGxlKTsKKwlVbmxvY2tUdXBsZShwZ19jbGFz cywgJm90aWQsIElucGxhY2VVcGRhdGVUdXBsZUxvY2spOworCWhlYXBfZnJlZXR1cGxlKHR1cGxl KTsKKwl0YWJsZV9jbG9zZShwZ19jbGFzcywgUm93RXhjbHVzaXZlTG9jayk7CisKKwlJbnZva2VP YmplY3RQb3N0QWx0ZXJIb29rKFJlbGF0aW9uUmVsYXRpb25JZCwgaW5kZXhPaWQsIDApOworCVJl bGF0aW9uQXNzdW1lTmV3UmVsZmlsZWxvY2F0b3IoaW5kKTsKKworCXJlbGF0aW9uX2Nsb3NlKGlu ZCwgTm9Mb2NrKTsKKworCS8qIE1ha2UgdGhlIHJlbGZpbGVub2RlIGNoYW5nZSB2aXNpYmxlLiAq LworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5k ZXggN2JhM2UyODNkYzMuLmYyOWRmNjFjNDg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0yMzkwLDYg KzIzOTAsMjMgQEAgY2hlY2tfbG9nX3N0YXRlbWVudChMaXN0ICpzdG10X2xpc3QpCiAJcmV0dXJu IGZhbHNlOwogfQogCisvKgorICogSXNFeHRlbmRlZFF1ZXJ5TWVzc2FnZQorICoJCUlzIHRoZSBj dXJyZW50IHN0YXRlbWVudCBiZWluZyBydW4gYnkgYW4gZXh0ZW5kZWQtcXVlcnktcHJvdG9jb2wK KyAqCQltZXNzYWdlPworICoKKyAqIFN1Y2ggYSBzdGF0ZW1lbnQgc2hhcmVzIGl0cyBpbXBsaWNp dCB0cmFuc2FjdGlvbiB3aXRoIHdoYXRldmVyIGVsc2UgdGhlCisgKiBjbGllbnQgc2VuZHMgYmVm b3JlIHRoZSBuZXh0IFN5bmMsIHdoaWNoIHRoZSBiYWNrZW5kIGNhbm5vdCBrbm93IHdoaWxlIGl0 CisgKiBydW5zIHRoZSBzdGF0ZW1lbnQuICBUaGUgZmlyc3Qgc3RhdGVtZW50IG9mIGEgcGlwZWxp bmUgY2Fubm90IGJlIHRvbGQgZnJvbQorICogb25lIGZvbGxvd2VkIGRpcmVjdGx5IGJ5IFN5bmM6 IFhBQ1RfRkxBR1NfUElQRUxJTklORyBpcyBzZXQgb25seSBvbmNlIGFuCisgKiBFeGVjdXRlIGNv bXBsZXRlcy4KKyAqLworYm9vbAorSXNFeHRlbmRlZFF1ZXJ5TWVzc2FnZSh2b2lkKQoreworCXJl dHVybiBkb2luZ19leHRlbmRlZF9xdWVyeV9tZXNzYWdlOworfQorCiAvKgogICogY2hlY2tfbG9n X2R1cmF0aW9uCiAgKgkJRGV0ZXJtaW5lIHdoZXRoZXIgY3VycmVudCBjb21tYW5kJ3MgZHVyYXRp b24gc2hvdWxkIGJlIGxvZ2dlZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5 LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCA1NzA4MDJmZjI2Yi4uM2E2M2Ji MDljYTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC0xMzIwLDYgKzEzMjAsNyBAQCBQcm9jZXNzVXRpbGl0 eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJYXRjb250ZXh0LnJlbGlkID0gcmVsaWQ7 CiAJCQkJCQlhdGNvbnRleHQucGFyYW1zID0gcGFyYW1zOwogCQkJCQkJYXRjb250ZXh0LnF1ZXJ5 RW52ID0gcXVlcnlFbnY7CisJCQkJCQlhdGNvbnRleHQuaXNUb3BMZXZlbCA9IGlzVG9wTGV2ZWw7 CiAKIAkJCQkJCS8qIC4uLiBlbnN1cmUgd2UgaGF2ZSBhbiBldmVudCB0cmlnZ2VyIGNvbnRleHQg Li4uICovCiAJCQkJCQlFdmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQocGFyc2V0cmVlKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3Av dGNvcHByb3QuaAppbmRleCBlNTI5ZTlmMDZjMi4uZDRlOTkzNTBlZWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90 LmgKQEAgLTkwLDYgKzkwLDcgQEAgZXh0ZXJuIHZvaWQgUG9zdGdyZXNNYWluKGNvbnN0IGNoYXIg KmRibmFtZSwKIGV4dGVybiBsb25nIGdldF9zdGFja19kZXB0aF9ybGltaXQodm9pZCk7CiBleHRl cm4gdm9pZCBSZXNldFVzYWdlKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2hvd1VzYWdlKGNvbnN0IGNo YXIgKnRpdGxlKTsKK2V4dGVybiBib29sIElzRXh0ZW5kZWRRdWVyeU1lc3NhZ2Uodm9pZCk7CiBl eHRlcm4gaW50CWNoZWNrX2xvZ19kdXJhdGlvbihjaGFyICptc2VjX3N0ciwgYm9vbCB3YXNfbG9n Z2VkKTsKIGV4dGVybiB2b2lkIHNldF9kZWJ1Z19vcHRpb25zKGludCBkZWJ1Z19mbGFnLAogCQkJ CQkJCSAgR3VjQ29udGV4dCBjb250ZXh0LCBHdWNTb3VyY2Ugc291cmNlKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oIGIvc3JjL2luY2x1ZGUvdGNvcC91dGlsaXR5LmgK aW5kZXggNTllNjRhZWEwNzMuLmUyYzU5NGE5ZWUzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90 Y29wL3V0aWxpdHkuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaApAQCAtMzQsNiAr MzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQKIAlPaWQJCQly ZWxpZDsJCQkvKiBPSUQgb2YgQUxURVIncyB0YXJnZXQgdGFibGUgKi8KIAlQYXJhbUxpc3RJbmZv IHBhcmFtczsJCS8qIGFueSBwYXJhbWV0ZXJzIGF2YWlsYWJsZSB0byBBTFRFUiBUQUJMRSAqLwog CVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBleGVjdXRpb24gZW52aXJvbm1lbnQgZm9y IEFMVEVSIFRBQkxFICovCisJYm9vbAkJaXNUb3BMZXZlbDsJCS8qIEFMVEVSIFRBQkxFIGlzIGEg dG9wLWxldmVsIHN0YXRlbWVudCAqLwogfSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQ7CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RhYmxlc3BhY2Uub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlLm91dAppbmRleCA5YzU2MTM5NTk3 MC4uNDdjMjRiNDdhMzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFi bGVzcGFjZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlLm91 dApAQCAtOTQ5LDYgKzk0OSwxNzAgQEAgRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFi bGVzcGFjZSByZWdyZXNzX3RibHNwYWNlCiBSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2UsIENPTkNVUlJFTlRMWSkgVEFCTEUgdGFibGVzcGFjZV90YWJsZTsgLS0gZmFpbAogRVJS T1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGVzcGFjZSByZWdyZXNzX3RibHNwYWNlCiBS RVNFVCBST0xFOworLS0gQUxURVIgVEFCTEUgU0VUIFRBQkxFU1BBQ0UgbW92ZXMgdGhlIGhlYXAg YW5kIGxlYXZlcyB0aGUgaW5kZXhlcyBpbiB0aGVpcgorLS0gdGFibGVzcGFjZS4gIFJ1biBvbiBp dHMgb3duLCBhcyBoZXJlLCBpdCBsZWF2ZXMgdGhlaXIgZmlsZXMgYWxvbmUgdG9vLgorQ1JFQVRF IFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRic3BhY2Vfcm9s bGJhY2sgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDApOworQ1JFQVRFIElOREVYIHRic3Bh Y2Vfcm9sbGJhY2tfaWR4IE9OIHRic3BhY2Vfcm9sbGJhY2sgKGEpOworU0VMRUNUIHBnX3JlbGF0 aW9uX3NpemUoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgQVMgaWR4X3NpemVfYmVmb3JlIFxnc2V0 CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgQVMg aWR4X3BhdGggXGdzZXQKK0FMVEVSIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFj ZV9yb2xsYmFja19pZHgnKSA9IDonaWR4X3BhdGgnIEFTIGlkeF9maWxlX2tlcHQ7CisgaWR4X2Zp bGVfa2VwdCAKKy0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gU2VudCB0aHJvdWdo IHRoZSBleHRlbmRlZCBxdWVyeSBwcm90b2NvbCwgYSBsYXRlciBzdGF0ZW1lbnQgb2YgdGhlIHNh bWUKKy0tIHBpcGVsaW5lIGNvdWxkIHNoYXJlIGl0cyB0cmFuc2FjdGlvbiwgc28gdGhlIGluZGV4 ZXMgZ2V0IG5ldyBmaWxlcy4KK0FMVEVSIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxF U1BBQ0UgcGdfZGVmYXVsdCBcYmluZCBcZworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0 YnNwYWNlX3JvbGxiYWNrX2lkeCcpIDw+IDonaWR4X3BhdGgnIEFTIGlkeF9maWxlX25ldzsKKyBp ZHhfZmlsZV9uZXcgCistLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworQUxURVIgVEFCTEUg dGJzcGFjZV9yb2xsYmFjayBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworU0VMRUNU IHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpIEFTIGlkeF9wYXRo IFxnc2V0CistLSBJbiBhIHRyYW5zYWN0aW9uIGJsb2NrIHRoZSBpbmRleGVzIGdldCBuZXcgZmls ZXMsIHNvIHRoYXQgYSByb2xsYmFjaworLS0gZGlzY2FyZHMgdGhlIGVudHJpZXMgYWRkZWQgYWZ0 ZXIgdGhlIG1vdmUgdG9nZXRoZXIgd2l0aCB0aGUgaGVhcCdzIGZpbGUuCitCRUdJTjsKK0FMVEVS IFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKK1NFTEVD VCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA8PiA6J2lkeF9w YXRoJyBBUyBpZHhfZmlsZV9uZXc7CisgaWR4X2ZpbGVfbmV3IAorLS0tLS0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKK0lOU0VSVCBJTlRPIHRic3BhY2Vfcm9sbGJhY2sgU0VMRUNUIGdlbmVyYXRl X3NlcmllcygxMDEsIDIwMDApOworU0VMRUNUIHBnX3JlbGF0aW9uX3NpemUoJ3Ric3BhY2Vfcm9s bGJhY2tfaWR4JykgPiA6aWR4X3NpemVfYmVmb3JlIEFTIGlkeF9ncmV3OworIGlkeF9ncmV3IAor LS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworUk9MTEJBQ0s7CitTRUxFQ1QgcGdfcmVsYXRpb25f c2l6ZSgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA9IDppZHhfc2l6ZV9iZWZvcmUgQVMgaWR4X3Np emVfcmVzdG9yZWQ7CisgaWR4X3NpemVfcmVzdG9yZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tCisg dAorKDEgcm93KQorCistLSB0aGUgc2FtZSBmb3IgYSBUUlVOQ0FURSBhZnRlciB0aGUgbW92ZSwg d2hpY2ggaXMgZG9uZSBpbiBwbGFjZQorQkVHSU47CitBTFRFUiBUQUJMRSB0YnNwYWNlX3JvbGxi YWNrIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitUUlVOQ0FURSB0YnNwYWNlX3JvbGxiYWNr OworUk9MTEJBQ0s7CitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6ZSgndGJzcGFjZV9yb2xsYmFja19p ZHgnKSA9IDppZHhfc2l6ZV9iZWZvcmUgQVMgaWR4X3NpemVfcmVzdG9yZWQ7CisgaWR4X3NpemVf cmVzdG9yZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgY291 bnQoKikgRlJPTSB0YnNwYWNlX3JvbGxiYWNrOworIGNvdW50IAorLS0tLS0tLQorICAgMTAwCiso MSByb3cpCisKKy0tIEFuIGluZGV4IGNyZWF0ZWQgaW4gdGhlIHNhbWUgc3VidHJhbnNhY3Rpb24g aXMgZGlzY2FyZGVkIHdpdGggdGhlIGhlYXAKKy0tIGFueXdheSBhbmQgaXMgbm90IGNvcGllZC4g IE1vdmluZyB0aGUgaW5kZXhlcyBmaXJzdCBhbmQgdGhlbiB0aGUgdGFibGUKKy0tIGNvcGllcyBl YWNoIGluZGV4IG9ubHkgb25jZS4KK0JFR0lOOworQ1JFQVRFIElOREVYIHRic3BhY2Vfcm9sbGJh Y2tfaWR4MiBPTiB0YnNwYWNlX3JvbGxiYWNrIChhKTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxl cGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgyJykgQVMgaWR4Ml9wYXRoIFxnc2V0CitBTFRFUiBJ TkRFWCB0YnNwYWNlX3JvbGxiYWNrX2lkeCBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl OworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpIEFT IGlkeF9tb3ZlZF9wYXRoIFxnc2V0CitBTFRFUiBUQUJMRSB0YnNwYWNlX3JvbGxiYWNrIFNFVCBU QUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3Bh Y2Vfcm9sbGJhY2tfaWR4MicpID0gOidpZHgyX3BhdGgnIEFTIGlkeDJfbm90X2NvcGllZCwKKyAg cGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgPSA6J2lkeF9tb3Zl ZF9wYXRoJyBBUyBpZHhfbm90X2NvcGllZF9hZ2FpbjsKKyBpZHgyX25vdF9jb3BpZWQgfCBpZHhf bm90X2NvcGllZF9hZ2FpbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyB0ICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKK1JPTExCQUNLOworRFJPUCBUQUJM RSB0YnNwYWNlX3JvbGxiYWNrOworLS0gQW4gaW5kZXggZmlsZSB0aGF0IGlzIG5ldyBpbiB0aGlz IHRyYW5zYWN0aW9uIGJ1dCBvbGRlciB0aGFuIGEgc2F2ZXBvaW50CistLSBzdXJ2aXZlcyBhIHJv bGxiYWNrIHRvIGl0LCBzbyBpdCBtdXN0IHN0aWxsIGZvbGxvdyBhIG1vdmUgbWFkZSBhZnRlciB0 aGUKKy0tIHNhdmVwb2ludDogYW4gaW5kZXggY3JlYXRlZCBvciByZWluZGV4ZWQgYmVmb3JlIGl0 LCBvciBhbHJlYWR5IGNvcGllZCBieQorLS0gYW4gZWFybGllciBtb3ZlLiAgUm93cyBpbnNlcnRl ZCBhZnRlcndhcmRzIHJldXNlIHRoZSBUSURzIGZyZWVkIGJ5IHRoZQorLS0gcm9sbGJhY2tzOyBh IHN0YWxlIGluZGV4IGVudHJ5IHdvdWxkIG1hdGNoIHRoZW0uCitDUkVBVEUgVEFCTEUgdGJzcGFj ZV9zdWJ4YWN0IChhIGludCk7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1YnhhY3QgU0VMRUNUIGdl bmVyYXRlX3NlcmllcygxLCAxMDApOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVu YWJsZV9iaXRtYXBzY2FuID0gb2ZmOworQkVHSU47CitDUkVBVEUgSU5ERVggdGJzcGFjZV9zdWJ4 YWN0X2lkeCBPTiB0YnNwYWNlX3N1YnhhY3QgKGEpOworU0FWRVBPSU5UIHM7CitBTFRFUiBUQUJM RSB0YnNwYWNlX3N1YnhhY3QgU0VUIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0lOU0VS VCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgLWdlbmVyYXRlX3NlcmllcygxLCA1MCk7CitS T0xMQkFDSyBUTyBzOworQ09NTUlUOworQkVHSU47CitSRUlOREVYIElOREVYIHRic3BhY2Vfc3Vi eGFjdF9pZHg7CitTQVZFUE9JTlQgczsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfc3VieGFjdCBTRVQg VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0 IFNFTEVDVCAtZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKTsKK1JPTExCQUNLIFRPIHM7CitDT01NSVQ7 CitCRUdJTjsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfc3VieGFjdCBTRVQgVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlOworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFZBTFVFUyAoMCk7CitT QVZFUE9JTlQgczsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfc3VieGFjdCBTRVQgVEFCTEVTUEFDRSBw Z19kZWZhdWx0OworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFNFTEVDVCAtZ2VuZXJhdGVf c2VyaWVzKDEsIDUwKTsKK1JPTExCQUNLIFRPIHM7CitDT01NSVQ7CitJTlNFUlQgSU5UTyB0YnNw YWNlX3N1YnhhY3QgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxMDEsIDMwMCk7CitTRUxFQ1QgY291 bnQoKikgRlJPTSB0YnNwYWNlX3N1YnhhY3QgV0hFUkUgYSA8IDA7CisgY291bnQgCistLS0tLS0t CisgICAgIDAKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGJzcGFjZV9zdWJ4YWN0 OworIGNvdW50IAorLS0tLS0tLQorICAgMzAxCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitEUk9QIFRBQkxFIHRic3BhY2Vfc3VieGFj dDsKKy0tIENvbWJpbmVkIHdpdGggYW5vdGhlciBzdWJjb21tYW5kLCB0aGUgQUxURVIgY2FuIHJ1 biB1c2VyIGNvZGUgYWZ0ZXIgdGhlCistLSBtb3ZlLCBzdWNoIGFzIGEgQ0hFQ0sgY29uc3RyYWlu dCB2YWxpZGF0ZWQgb24gYW4gaW5oZXJpdGFuY2UgY2hpbGQgYWZ0ZXIKKy0tIHRoZSBwYXJlbnQg d2FzIG1vdmVkLCBzbyB0aGUgaW5kZXhlcyBnZXQgbmV3IGZpbGVzIGV2ZW4gb3V0c2lkZSBhCist LSB0cmFuc2FjdGlvbiBibG9jay4KK0NSRUFURSBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkIChhIGlu dCk7CitJTlNFUlQgSU5UTyB0YnNwYWNlX2NvbWJpbmVkIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKTsKK0NSRUFURSBJTkRFWCB0YnNwYWNlX2NvbWJpbmVkX2lkeCBPTiB0YnNwYWNlX2Nv bWJpbmVkIChhKTsKK0NSRUFURSBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkX2NoaWxkICgpIElOSEVS SVRTICh0YnNwYWNlX2NvbWJpbmVkKTsKK0lOU0VSVCBJTlRPIHRic3BhY2VfY29tYmluZWRfY2hp bGQgVkFMVUVTICg1MDAwKTsKK0NSRUFURSBGVU5DVElPTiB0YnNwYWNlX2NvbWJpbmVkX2Noayh2 IGludCkgUkVUVVJOUyBib29sIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgIElGIHYg PCA1MDAwIFRIRU4gUkVUVVJOIHRydWU7IEVORCBJRjsKKyAgSU5TRVJUIElOVE8gdGJzcGFjZV9j b21iaW5lZCBTRUxFQ1QgLWdlbmVyYXRlX3NlcmllcygxLCA1MCk7CisgIFJBSVNFIEVYQ0VQVElP TiAnYWJvcnQgYWZ0ZXIgd3JpdGluZyc7CitFTkQgJCQ7CitBTFRFUiBUQUJMRSB0YnNwYWNlX2Nv bWJpbmVkIFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UsCisgIEFERCBDT05TVFJBSU5U IHRic3BhY2VfY29tYmluZWRfayBDSEVDSyAodGJzcGFjZV9jb21iaW5lZF9jaGsoYSkpOworRVJS T1I6ICBhYm9ydCBhZnRlciB3cml0aW5nCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gdGJz cGFjZV9jb21iaW5lZF9jaGsoaW50ZWdlcikgbGluZSA1IGF0IFJBSVNFCitEUk9QIFRBQkxFIHRi c3BhY2VfY29tYmluZWRfY2hpbGQ7CitJTlNFUlQgSU5UTyB0YnNwYWNlX2NvbWJpbmVkIFNFTEVD VCBnZW5lcmF0ZV9zZXJpZXMoMTAxLCAzMDApOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor U0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEZST00gdGJzcGFj ZV9jb21iaW5lZCBXSEVSRSBhIDwgMDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93 KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworRFJP UCBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkOworRFJPUCBGVU5DVElPTiB0YnNwYWNlX2NvbWJpbmVk X2NoayhpbnQpOwogQUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlIFJFTkFNRSBUTyBy ZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQ7CiBBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKIEFMVEVS IElOREVYIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCBTRVQgVEFC TEVTUEFDRSBwZ19kZWZhdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGFi bGVzcGFjZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90YWJsZXNwYWNlLnNxbAppbmRleCAw ZjljMTM2ZDMxNy4uMTAwODAzOGQ1NTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3RhYmxlc3BhY2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2Uuc3Fs CkBAIC00MjAsNiArNDIwLDExNCBAQCBSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2UpIFRBQkxFIHRhYmxlc3BhY2VfdGFibGU7IC0tIGZhaWwKIFJFSU5ERVggKFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZSwgQ09OQ1VSUkVOVExZKSBUQUJMRSB0YWJsZXNwYWNlX3RhYmxlOyAt LSBmYWlsCiBSRVNFVCBST0xFOwogCistLSBBTFRFUiBUQUJMRSBTRVQgVEFCTEVTUEFDRSBtb3Zl cyB0aGUgaGVhcCBhbmQgbGVhdmVzIHRoZSBpbmRleGVzIGluIHRoZWlyCistLSB0YWJsZXNwYWNl LiAgUnVuIG9uIGl0cyBvd24sIGFzIGhlcmUsIGl0IGxlYXZlcyB0aGVpciBmaWxlcyBhbG9uZSB0 b28uCitDUkVBVEUgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayAoYSBpbnQpOworSU5TRVJUIElOVE8g dGJzcGFjZV9yb2xsYmFjayBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCk7CitDUkVBVEUg SU5ERVggdGJzcGFjZV9yb2xsYmFja19pZHggT04gdGJzcGFjZV9yb2xsYmFjayAoYSk7CitTRUxF Q1QgcGdfcmVsYXRpb25fc2l6ZSgndGJzcGFjZV9yb2xsYmFja19pZHgnKSBBUyBpZHhfc2l6ZV9i ZWZvcmUgXGdzZXQKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFj a19pZHgnKSBBUyBpZHhfcGF0aCBcZ3NldAorQUxURVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayBT RVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVw YXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpID0gOidpZHhfcGF0aCcgQVMgaWR4X2ZpbGVfa2Vw dDsKKy0tIFNlbnQgdGhyb3VnaCB0aGUgZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wsIGEgbGF0ZXIg c3RhdGVtZW50IG9mIHRoZSBzYW1lCistLSBwaXBlbGluZSBjb3VsZCBzaGFyZSBpdHMgdHJhbnNh Y3Rpb24sIHNvIHRoZSBpbmRleGVzIGdldCBuZXcgZmlsZXMuCitBTFRFUiBUQUJMRSB0YnNwYWNl X3JvbGxiYWNrIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQgXGJpbmQgXGcKK1NFTEVDVCBwZ19y ZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA8PiA6J2lkeF9wYXRoJyBB UyBpZHhfZmlsZV9uZXc7CitBTFRFUiBUQUJMRSB0YnNwYWNlX3JvbGxiYWNrIFNFVCBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3Bh Y2Vfcm9sbGJhY2tfaWR4JykgQVMgaWR4X3BhdGggXGdzZXQKKy0tIEluIGEgdHJhbnNhY3Rpb24g YmxvY2sgdGhlIGluZGV4ZXMgZ2V0IG5ldyBmaWxlcywgc28gdGhhdCBhIHJvbGxiYWNrCistLSBk aXNjYXJkcyB0aGUgZW50cmllcyBhZGRlZCBhZnRlciB0aGUgbW92ZSB0b2dldGhlciB3aXRoIHRo ZSBoZWFwJ3MgZmlsZS4KK0JFR0lOOworQUxURVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayBTRVQg VEFCTEVTUEFDRSBwZ19kZWZhdWx0OworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNw YWNlX3JvbGxiYWNrX2lkeCcpIDw+IDonaWR4X3BhdGgnIEFTIGlkeF9maWxlX25ldzsKK0lOU0VS VCBJTlRPIHRic3BhY2Vfcm9sbGJhY2sgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxMDEsIDIwMDAp OworU0VMRUNUIHBnX3JlbGF0aW9uX3NpemUoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgPiA6aWR4 X3NpemVfYmVmb3JlIEFTIGlkeF9ncmV3OworUk9MTEJBQ0s7CitTRUxFQ1QgcGdfcmVsYXRpb25f c2l6ZSgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA9IDppZHhfc2l6ZV9iZWZvcmUgQVMgaWR4X3Np emVfcmVzdG9yZWQ7CistLSB0aGUgc2FtZSBmb3IgYSBUUlVOQ0FURSBhZnRlciB0aGUgbW92ZSwg d2hpY2ggaXMgZG9uZSBpbiBwbGFjZQorQkVHSU47CitBTFRFUiBUQUJMRSB0YnNwYWNlX3JvbGxi YWNrIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitUUlVOQ0FURSB0YnNwYWNlX3JvbGxiYWNr OworUk9MTEJBQ0s7CitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6ZSgndGJzcGFjZV9yb2xsYmFja19p ZHgnKSA9IDppZHhfc2l6ZV9iZWZvcmUgQVMgaWR4X3NpemVfcmVzdG9yZWQ7CitTRUxFQ1QgY291 bnQoKikgRlJPTSB0YnNwYWNlX3JvbGxiYWNrOworLS0gQW4gaW5kZXggY3JlYXRlZCBpbiB0aGUg c2FtZSBzdWJ0cmFuc2FjdGlvbiBpcyBkaXNjYXJkZWQgd2l0aCB0aGUgaGVhcAorLS0gYW55d2F5 IGFuZCBpcyBub3QgY29waWVkLiAgTW92aW5nIHRoZSBpbmRleGVzIGZpcnN0IGFuZCB0aGVuIHRo ZSB0YWJsZQorLS0gY29waWVzIGVhY2ggaW5kZXggb25seSBvbmNlLgorQkVHSU47CitDUkVBVEUg SU5ERVggdGJzcGFjZV9yb2xsYmFja19pZHgyIE9OIHRic3BhY2Vfcm9sbGJhY2sgKGEpOworU0VM RUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeDInKSBBUyBpZHgy X3BhdGggXGdzZXQKK0FMVEVSIElOREVYIHRic3BhY2Vfcm9sbGJhY2tfaWR4IFNFVCBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3Bh Y2Vfcm9sbGJhY2tfaWR4JykgQVMgaWR4X21vdmVkX3BhdGggXGdzZXQKK0FMVEVSIFRBQkxFIHRi c3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKK1NFTEVDVCBwZ19yZWxh dGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgyJykgPSA6J2lkeDJfcGF0aCcgQVMg aWR4Ml9ub3RfY29waWVkLAorICBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFj a19pZHgnKSA9IDonaWR4X21vdmVkX3BhdGgnIEFTIGlkeF9ub3RfY29waWVkX2FnYWluOworUk9M TEJBQ0s7CitEUk9QIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2s7CistLSBBbiBpbmRleCBmaWxlIHRo YXQgaXMgbmV3IGluIHRoaXMgdHJhbnNhY3Rpb24gYnV0IG9sZGVyIHRoYW4gYSBzYXZlcG9pbnQK Ky0tIHN1cnZpdmVzIGEgcm9sbGJhY2sgdG8gaXQsIHNvIGl0IG11c3Qgc3RpbGwgZm9sbG93IGEg bW92ZSBtYWRlIGFmdGVyIHRoZQorLS0gc2F2ZXBvaW50OiBhbiBpbmRleCBjcmVhdGVkIG9yIHJl aW5kZXhlZCBiZWZvcmUgaXQsIG9yIGFscmVhZHkgY29waWVkIGJ5CistLSBhbiBlYXJsaWVyIG1v dmUuICBSb3dzIGluc2VydGVkIGFmdGVyd2FyZHMgcmV1c2UgdGhlIFRJRHMgZnJlZWQgYnkgdGhl CistLSByb2xsYmFja3M7IGEgc3RhbGUgaW5kZXggZW50cnkgd291bGQgbWF0Y2ggdGhlbS4KK0NS RUFURSBUQUJMRSB0YnNwYWNlX3N1YnhhY3QgKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRic3BhY2Vf c3VieGFjdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCk7CitTRVQgZW5hYmxlX3NlcXNj YW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitCRUdJTjsKK0NSRUFURSBJ TkRFWCB0YnNwYWNlX3N1YnhhY3RfaWR4IE9OIHRic3BhY2Vfc3VieGFjdCAoYSk7CitTQVZFUE9J TlQgczsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfc3VieGFjdCBTRVQgVEFCTEVTUEFDRSByZWdyZXNz X3RibHNwYWNlOworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFNFTEVDVCAtZ2VuZXJhdGVf c2VyaWVzKDEsIDUwKTsKK1JPTExCQUNLIFRPIHM7CitDT01NSVQ7CitCRUdJTjsKK1JFSU5ERVgg SU5ERVggdGJzcGFjZV9zdWJ4YWN0X2lkeDsKK1NBVkVQT0lOVCBzOworQUxURVIgVEFCTEUgdGJz cGFjZV9zdWJ4YWN0IFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitJTlNFUlQgSU5U TyB0YnNwYWNlX3N1YnhhY3QgU0VMRUNUIC1nZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworUk9MTEJB Q0sgVE8gczsKK0NPTU1JVDsKK0JFR0lOOworQUxURVIgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0IFNF VCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1Ynhh Y3QgVkFMVUVTICgwKTsKK1NBVkVQT0lOVCBzOworQUxURVIgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0 IFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1YnhhY3Qg U0VMRUNUIC1nZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworUk9MTEJBQ0sgVE8gczsKK0NPTU1JVDsK K0lOU0VSVCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEwMSwg MzAwKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vfc3VieGFjdCBXSEVSRSBhIDwgMDsK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vfc3VieGFjdDsKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitEUk9QIFRBQkxFIHRic3BhY2Vfc3VieGFj dDsKKy0tIENvbWJpbmVkIHdpdGggYW5vdGhlciBzdWJjb21tYW5kLCB0aGUgQUxURVIgY2FuIHJ1 biB1c2VyIGNvZGUgYWZ0ZXIgdGhlCistLSBtb3ZlLCBzdWNoIGFzIGEgQ0hFQ0sgY29uc3RyYWlu dCB2YWxpZGF0ZWQgb24gYW4gaW5oZXJpdGFuY2UgY2hpbGQgYWZ0ZXIKKy0tIHRoZSBwYXJlbnQg d2FzIG1vdmVkLCBzbyB0aGUgaW5kZXhlcyBnZXQgbmV3IGZpbGVzIGV2ZW4gb3V0c2lkZSBhCist LSB0cmFuc2FjdGlvbiBibG9jay4KK0NSRUFURSBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkIChhIGlu dCk7CitJTlNFUlQgSU5UTyB0YnNwYWNlX2NvbWJpbmVkIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKTsKK0NSRUFURSBJTkRFWCB0YnNwYWNlX2NvbWJpbmVkX2lkeCBPTiB0YnNwYWNlX2Nv bWJpbmVkIChhKTsKK0NSRUFURSBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkX2NoaWxkICgpIElOSEVS SVRTICh0YnNwYWNlX2NvbWJpbmVkKTsKK0lOU0VSVCBJTlRPIHRic3BhY2VfY29tYmluZWRfY2hp bGQgVkFMVUVTICg1MDAwKTsKK0NSRUFURSBGVU5DVElPTiB0YnNwYWNlX2NvbWJpbmVkX2Noayh2 IGludCkgUkVUVVJOUyBib29sIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgIElGIHYg PCA1MDAwIFRIRU4gUkVUVVJOIHRydWU7IEVORCBJRjsKKyAgSU5TRVJUIElOVE8gdGJzcGFjZV9j b21iaW5lZCBTRUxFQ1QgLWdlbmVyYXRlX3NlcmllcygxLCA1MCk7CisgIFJBSVNFIEVYQ0VQVElP TiAnYWJvcnQgYWZ0ZXIgd3JpdGluZyc7CitFTkQgJCQ7CitBTFRFUiBUQUJMRSB0YnNwYWNlX2Nv bWJpbmVkIFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UsCisgIEFERCBDT05TVFJBSU5U IHRic3BhY2VfY29tYmluZWRfayBDSEVDSyAodGJzcGFjZV9jb21iaW5lZF9jaGsoYSkpOworRFJP UCBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkX2NoaWxkOworSU5TRVJUIElOVE8gdGJzcGFjZV9jb21i aW5lZCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEwMSwgMzAwKTsKK1NFVCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRic3BhY2VfY29tYmluZWQgV0hFUkUgYSA8IDA7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK K1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworRFJPUCBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkOwor RFJPUCBGVU5DVElPTiB0YnNwYWNlX2NvbWJpbmVkX2NoayhpbnQpOworCiBBTFRFUiBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVOQU1FIFRPIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZDsK IAogQUxURVIgVEFCTEUgQUxMIElOIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZV9yZW5hbWVk IFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7Cg== --===============1761294064175896986== Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0*=us-ascii''v7-REL_15-0001-Fix-index-corruption-after-rolling-back; filename*1*=-ALTER-TAB.patch.txt MIME-Version: 1.0 RnJvbSA4MTM1OWE2MGMxOTlhYzIyZTlkODZlMmNmNDVlMmIyNThjNjdlYThkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51ZWwgUmV5ZXMgQnJhdm8gPG1hbnVlbHJleWVzYnJhdm9A Z21haWwuY29tPgpEYXRlOiBGcmksIDIgT2N0IDIwMjYgMTA6NDc6NTMgLTAzMDAKU3ViamVjdDog W1BBVENIIHY3XSBGaXggaW5kZXggY29ycnVwdGlvbiBhZnRlciByb2xsaW5nIGJhY2sgQUxURVIg VEFCTEUgU0VUCiBUQUJMRVNQQUNFCgpBTFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BBQ0UgcmV3 cml0ZXMgYSB0YWJsZSdzIGhlYXAgdG8gYSBuZXcKcmVsZmlsZW5vZGUgYnV0IGxlYXZlcyB0aGUg dGFibGUncyBpbmRleGVzIG9uIHRoZWlyIGV4aXN0aW5nCnJlbGZpbGVub2Rlcy4gIFRoZSB0d28g dGhlbiByb2xsIGJhY2sgYnkgZGlmZmVyZW50IG1lY2hhbmlzbXM6IG9uIGFib3J0CnRoZSBoZWFw J3MgbmV3IGZpbGUgaXMgZGlzY2FyZGVkLCBmcmVlaW5nIHRoZSBoZWFwIFRJRHMgY29uc3VtZWQg Ynkgcm93cwppbnNlcnRlZCBhZnRlciB0aGUgU0VUIFRBQkxFU1BBQ0UsIHdoaWxlIHRoZSBpbmRl eCBlbnRyaWVzIGZvciB0aG9zZSByb3dzCndlcmUgd3JpdHRlbiB0byB0aGUgdW5jaGFuZ2VkIGlu ZGV4IGZpbGVzIGFuZCBzdXJ2aXZlLiAgQSBsYXRlciBpbnNlcnQKY2FuIHJldXNlIGEgZnJlZWQg aGVhcCBUSUQsIGxlYXZpbmcgdHdvIGluZGV4IGVudHJpZXMgdGhhdCBwb2ludCBhdCB0aGUKc2Ft ZSBsaXZlIGhlYXAgdHVwbGUuICBUaGlzIHN1cmZhY2VzIGFzIGEgX2J0X3Bvc3RpbmdfdmFsaWQg YXNzZXJ0aW9uCmZhaWx1cmUgaW4gbmJ0cmVlIGRlZHVwbGljYXRpb24sIGFuZCBhcyBkdXBsaWNh dGUgcm93cyB0aHJvdWdoIGFuCmluZGV4LW9ubHkgc2NhbiBpbiBnaXN0LiAgQSBUUlVOQ0FURSBh ZnRlciB0aGUgbW92ZSBpbiB0aGUgc2FtZQp0cmFuc2FjdGlvbiB0cnVuY2F0ZXMgdGhlIG9sZCBp bmRleCBmaWxlcyBpbiBwbGFjZSwgd2hpY2ggYSByb2xsYmFjawpjYW5ub3QgdW5kbyBlaXRoZXIu CgpGaXggYnkgZ2l2aW5nIGVhY2ggaW5kZXggb2YgdGhlIHRhYmxlIGEgbmV3IHJlbGZpbGVudW1i ZXIgaW4gdGhlIHNhbWUKQUxURVIsIGNvcHlpbmcgaXQgd2l0aGluIGl0cyBvd24gdGFibGVzcGFj ZSAodGhlIGluZGV4ZXMgc3RheSB3aGVyZSB0aGV5CmFyZSwgYXMgZG9jdW1lbnRlZCksIHNvIHRo YXQgYW4gYWJvcnQgZGlzY2FyZHMgdGhlIG5ldyBoZWFwIGFuZCBpbmRleApmaWxlcyB0b2dldGhl ci4gIFR3byBjYXNlcyBuZWVkIG5vIGNvcHk6CgotIFRoZSBBTFRFUiBpcyBhIHBsYWluIEFMVEVS IFRBQkxFIC4uLiBTRVQgVEFCTEVTUEFDRSBvZiBhIHNpbmdsZQogIHRhYmxlLCB3aXRoIG5vIG90 aGVyIHN1YmNvbW1hbmQsIHNlbnQgYnkgYSBjbGllbnQgYXMgdGhlIG9ubHkKICBzdGF0ZW1lbnQg b2YgYSBzaW1wbGUgUXVlcnkgbWVzc2FnZSBvdXRzaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2ssIHNv CiAgdGhlIHRyYW5zYWN0aW9uIGVuZHMgcmlnaHQgYWZ0ZXIgaXQuICBBbnkgb3RoZXIgc3ViY29t bWFuZCBjb3VsZCBydW4KICB1c2VyIGNvZGUgYWZ0ZXIgdGhlIG1vdmU6IHRoZSB2YWxpZGF0aW9u IG9mIGFuIGluaGVyaXRhbmNlIGNoaWxkJ3MKICBuZXcgQ0hFQ0sgY29uc3RyYWludCwgYSBzcWxf ZHJvcCBldmVudCB0cmlnZ2VyLCBhbmQgc28gb24uICBUaGlzIGFsc28KICByZXF1aXJlcyB0aGF0 IG5vIGRkbF9jb21tYW5kX2VuZCBldmVudCB0cmlnZ2VyIHJ1bnMgYWZ0ZXIgaXQuICBBCiAgc3Rh dGVtZW50IHNlbnQgdGhyb3VnaCB0aGUgZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wgYWx3YXlzIGNv cGllczogYQogIGxhdGVyIHN0YXRlbWVudCBvZiB0aGUgc2FtZSBwaXBlbGluZSBzaGFyZXMgaXRz IHRyYW5zYWN0aW9uIHVudGlsCiAgdGhlIG5leHQgU3luYywgYW5kIHRoZSBiYWNrZW5kIGNhbm5v dCB0ZWxsIHdoZXRoZXIgb25lIHdpbGwgZm9sbG93LgogIElzRXh0ZW5kZWRRdWVyeU1lc3NhZ2Uo KSBpcyBhZGRlZCB0byBwb3N0Z3Jlcy5jIHRvIHRlbGwgdGhlIHR3bwogIGFwYXJ0LgoKLSBUaGUg aW5kZXgncyBjdXJyZW50IGZpbGUgd2FzIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgc3VidHJhbnNh Y3Rpb24sCiAgZm9yIGV4YW1wbGUgYW4gaW5kZXggY3JlYXRlZCwgb3IgbW92ZWQsIGVhcmxpZXIg aW4gaXQuICBBbiBhYm9ydAogIGRpc2NhcmRzIHRoYXQgZmlsZSB0b2dldGhlciB3aXRoIHRoZSBo ZWFwJ3MgbmV3IG9uZS4gIFRoaXMgYWxzbyBsZXRzCiAgYSB0cmFuc2FjdGlvbiBtb3ZlIHRoZSBp bmRleGVzIGZpcnN0IGFuZCB0aGVuIHRoZSB0YWJsZSB3aXRob3V0CiAgY29weWluZyB0aGUgaW5k ZXhlcyB0d2ljZS4KClRoZSByZWdyZXNzaW9uIHRlc3QgY2hlY2tzIHRoYXQgdGhlIEFMVEVSIG9u IGl0cyBvd24gbGVhdmVzIHRoZSBpbmRleApmaWxlcyB1bnRvdWNoZWQ7IHRoYXQgY29tYmluZWQg d2l0aCBhIENIRUNLIGNvbnN0cmFpbnQgd2hvc2UgdmFsaWRhdGlvbgpvbiBhbiBpbmhlcml0YW5j ZSBjaGlsZCB3cml0ZXMgdG8gdGhlIHRhYmxlIGFmdGVyIHRoZSBtb3ZlIGFuZCBmYWlscywgaXQK bGVhdmVzIG5vIHN0YWxlIGluZGV4IGVudHJ5OyB0aGF0IGluIGEgdHJhbnNhY3Rpb24gYmxvY2sg YSByb2xsYmFjawphZnRlciBpbnNlcnRpbmcgb3IgdHJ1bmNhdGluZyBsZWF2ZXMgdGhlIGluZGV4 IGZpbGUgYXQgaXRzIHByZS0KdHJhbnNhY3Rpb24gc2l6ZTsgdGhhdCBhbiBpbmRleCBjcmVhdGVk IG9yIG1vdmVkIGVhcmxpZXIgaW4gdGhlCnN1YnRyYW5zYWN0aW9uIGlzIG5vdCBjb3BpZWQ7IGFu ZCB0aGF0IGFmdGVyIGEgcm9sbGJhY2sgdG8gYSBzYXZlcG9pbnQsCmFuIGluZGV4IGNyZWF0ZWQs IHJlaW5kZXhlZCBvciBhbHJlYWR5IGNvcGllZCBiZWZvcmUgdGhlIHNhdmVwb2ludApyZXR1cm5z IG5vIHJvdyBmb3IgdGhlIHJvbGxlZC1iYWNrIHZhbHVlcy4KCkJ1ZzogIzE5Njg2ClJlcG9ydGVk LWJ5OiBBbGV4YW5kZXIgTGFraGluClN1Z2dlc3RlZC1ieTogQW5kcmVzIEZyZXVuZApSZXZpZXdl ZC1ieTogQWxleGFuZHJlIEZlbGlwZQpSZXZpZXdlZC1ieTogU2hpaGFvIFpob25nCi0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICB8IDE1MCArKysrKysrKysrKysr KysrKysrKystCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgIHwgIDE3 ICsrKwogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL3Rjb3AvdXRpbGl0eS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC90YWJsZXNwYWNlLm91dCB8IDE1MyArKysrKysrKysrKysrKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvdGFibGVzcGFjZS5zcWwgICAgICB8IDEwMiArKysrKysrKysr KysrKysKIDcgZmlsZXMgY2hhbmdlZCwgNDIwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAzZmQzNzVmZWZmYy4uOGZmYjc3ZGE5NTQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAi dGNvcC91dGlsaXR5LmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9ldnRjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKQEAgLTU5Myw3ICs1OTQsMTEgQEAgc3RhdGljIHZvaWQgQVRQcmVwU2V0QWNj ZXNzTWV0aG9kKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLCBjb25zdCBjaGEK IHN0YXRpYyBib29sIEFUUHJlcENoYW5nZVBlcnNpc3RlbmNlKFJlbGF0aW9uIHJlbCwgYm9vbCB0 b0xvZ2dlZCk7CiBzdGF0aWMgdm9pZCBBVFByZXBTZXRUYWJsZVNwYWNlKEFsdGVyZWRUYWJsZUlu Zm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQljb25zdCBjaGFyICp0YWJsZXNwYWNlbmFt ZSwgTE9DS01PREUgbG9ja21vZGUpOwotc3RhdGljIHZvaWQgQVRFeGVjU2V0VGFibGVTcGFjZShP aWQgdGFibGVPaWQsIE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSk7CitzdGF0 aWMgdm9pZCBBVEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3Bh Y2UsIExPQ0tNT0RFIGxvY2ttb2RlLAorCQkJCQkJCQlib29sIGNvcHlJbmRleGVzKTsKK3N0YXRp YyBib29sIEFUU2V0VGFibGVTcGFjZUNvcHlJbmRleGVzKEFsdGVyVGFibGVTdG10ICpwYXJzZXRy ZWUsIExpc3QgKndxdWV1ZSwKKwkJCQkJCQkJCSAgIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAq Y29udGV4dCk7CitzdGF0aWMgdm9pZCBBVEV4ZWNTZXRUYWJsZVNwYWNlTmV3SW5kZXhSZWxmaWxl bm9kZShPaWQgaW5kZXhPaWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyB2b2lkIEFURXhl Y1NldFRhYmxlU3BhY2VOb1N0b3JhZ2UoUmVsYXRpb24gcmVsLCBPaWQgbmV3VGFibGVTcGFjZSk7 CiBzdGF0aWMgdm9pZCBBVEV4ZWNTZXRSZWxPcHRpb25zKFJlbGF0aW9uIHJlbCwgTGlzdCAqZGVm TGlzdCwKIAkJCQkJCQkJQWx0ZXJUYWJsZVR5cGUgb3BlcmF0aW9uLApAQCAtNTY3MCw3ICs1Njc1 LDkgQEAgQVRSZXdyaXRlVGFibGVzKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsIExpc3QgKip3 cXVldWUsIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJICoganVzdCBkbyBhIGJsb2NrLWJ5LWJsb2Nr IGNvcHkuCiAJCQkgKi8KIAkJCWlmICh0YWItPm5ld1RhYmxlU3BhY2UpCi0JCQkJQVRFeGVjU2V0 VGFibGVTcGFjZSh0YWItPnJlbGlkLCB0YWItPm5ld1RhYmxlU3BhY2UsIGxvY2ttb2RlKTsKKwkJ CQlBVEV4ZWNTZXRUYWJsZVNwYWNlKHRhYi0+cmVsaWQsIHRhYi0+bmV3VGFibGVTcGFjZSwgbG9j a21vZGUsCisJCQkJCQkJCQlBVFNldFRhYmxlU3BhY2VDb3B5SW5kZXhlcyhwYXJzZXRyZWUsICp3 cXVldWUsCisJCQkJCQkJCQkJCQkJCQkgICBjb250ZXh0KSk7CiAJCX0KIAogCQkvKgpAQCAtMTQ3 OTEsMTMgKzE0Nzk4LDE2IEBAIEFURXhlY1NldFJlbE9wdGlvbnMoUmVsYXRpb24gcmVsLCBMaXN0 ICpkZWZMaXN0LCBBbHRlclRhYmxlVHlwZSBvcGVyYXRpb24sCiAgKiByZXdyaXRpbmcgdG8gYmUg ZG9uZSwgc28gd2UganVzdCB3YW50IHRvIGNvcHkgdGhlIGRhdGEgYXMgZmFzdCBhcyBwb3NzaWJs ZS4KICAqLwogc3RhdGljIHZvaWQKLUFURXhlY1NldFRhYmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBP aWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUgbG9ja21vZGUpCitBVEV4ZWNTZXRUYWJsZVNwYWNl KE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tNT0RFIGxvY2ttb2RlLAorCQkJ CQlib29sIGNvcHlJbmRleGVzKQogewogCVJlbGF0aW9uCXJlbDsKIAlPaWQJCQlyZWx0b2FzdHJl bGlkOworCWNoYXIJCXJlbGtpbmQ7CiAJT2lkCQkJbmV3cmVsZmlsZW5vZGU7CiAJUmVsRmlsZU5v ZGUgbmV3cm5vZGU7CiAJTGlzdAkgICAqcmVsdG9hc3RpZHhpZHMgPSBOSUw7CisJTGlzdAkgICAq cmVsdGFiaWR4aWRzID0gTklMOwogCUxpc3RDZWxsICAgKmxjOwogCiAJLyoKQEAgLTE0ODE1LDYg KzE0ODI1LDcgQEAgQVRFeGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQsIE9pZCBuZXdUYWJs ZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAl9CiAKIAlyZWx0b2FzdHJlbGlkID0gcmVsLT5y ZF9yZWwtPnJlbHRvYXN0cmVsaWQ7CisJcmVsa2luZCA9IHJlbC0+cmRfcmVsLT5yZWxraW5kOwog CS8qIEZldGNoIHRoZSBsaXN0IG9mIGluZGV4ZXMgb24gdG9hc3QgcmVsYXRpb24gaWYgbmVjZXNz YXJ5ICovCiAJaWYgKE9pZElzVmFsaWQocmVsdG9hc3RyZWxpZCkpCiAJewpAQCAtMTQ4NjEsNiAr MTQ4NzIsMTQgQEAgQVRFeGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQsIE9pZCBuZXdUYWJs ZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAogCVJlbGF0aW9uQXNzdW1lTmV3UmVsZmlsZW5v ZGUocmVsKTsKIAorCS8qCisJICogSWYgdGhpcyBpcyBhIHRhYmxlLCBjb2xsZWN0IGl0cyBpbmRl eCBsaXN0IG5vdywgd2hpbGUgdGhlIHJlbGF0aW9uIGlzCisJICogc3RpbGwgb3Blbiwgc28gd2Ug Y2FuIGdpdmUgZWFjaCBpbmRleCBhIGZyZXNoIHJlbGZpbGVub2RlIGJlbG93LgorCSAqLworCWlm IChjb3B5SW5kZXhlcyAmJgorCQkocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8IHJlbGtp bmQgPT0gUkVMS0lORF9NQVRWSUVXKSkKKwkJcmVsdGFiaWR4aWRzID0gUmVsYXRpb25HZXRJbmRl eExpc3QocmVsKTsKKwogCXJlbGF0aW9uX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKIAogCS8qIE1ha2Ug c3VyZSB0aGUgcmVsdGFibGVzcGFjZSBjaGFuZ2UgaXMgdmlzaWJsZSAqLwpAQCAtMTQ4NjgsMTIg KzE0ODg3LDEzMyBAQCBBVEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1Rh YmxlU3BhY2UsIExPQ0tNT0RFIGxvY2ttb2RlKQogCiAJLyogTW92ZSBhc3NvY2lhdGVkIHRvYXN0 IHJlbGF0aW9uIGFuZC9vciBpbmRleGVzLCB0b28gKi8KIAlpZiAoT2lkSXNWYWxpZChyZWx0b2Fz dHJlbGlkKSkKLQkJQVRFeGVjU2V0VGFibGVTcGFjZShyZWx0b2FzdHJlbGlkLCBuZXdUYWJsZVNw YWNlLCBsb2NrbW9kZSk7CisJCUFURXhlY1NldFRhYmxlU3BhY2UocmVsdG9hc3RyZWxpZCwgbmV3 VGFibGVTcGFjZSwgbG9ja21vZGUsIGNvcHlJbmRleGVzKTsKIAlmb3JlYWNoKGxjLCByZWx0b2Fz dGlkeGlkcykKLQkJQVRFeGVjU2V0VGFibGVTcGFjZShsZmlyc3Rfb2lkKGxjKSwgbmV3VGFibGVT cGFjZSwgbG9ja21vZGUpOworCQlBVEV4ZWNTZXRUYWJsZVNwYWNlKGxmaXJzdF9vaWQobGMpLCBu ZXdUYWJsZVNwYWNlLCBsb2NrbW9kZSwgY29weUluZGV4ZXMpOwogCiAJLyogQ2xlYW4gdXAgKi8K IAlsaXN0X2ZyZWUocmVsdG9hc3RpZHhpZHMpOworCisJLyoKKwkgKiBUaGUgaGVhcCBub3cgaGFz IGEgbmV3IHJlbGZpbGVub2RlLiAgR2l2ZSBlYWNoIG9mIHRoZSB0YWJsZSdzIGluZGV4ZXMgYQor CSAqIGZyZXNoIHJlbGZpbGVub2RlIHRvbywgc28gdGhhdCB0aGUgaW5kZXhlcyBzaGFyZSB0aGUg aGVhcCdzIHJld3JpdGUgZmF0ZQorCSAqIGFjcm9zcyBjb21taXQgYW5kIGFib3J0LiAgU2VlIEFU RXhlY1NldFRhYmxlU3BhY2VOZXdJbmRleFJlbGZpbGVub2RlLgorCSAqLworCWZvcmVhY2gobGMs IHJlbHRhYmlkeGlkcykKKwkJQVRFeGVjU2V0VGFibGVTcGFjZU5ld0luZGV4UmVsZmlsZW5vZGUo bGZpcnN0X29pZChsYyksIGxvY2ttb2RlKTsKKwlsaXN0X2ZyZWUocmVsdGFiaWR4aWRzKTsKK30K KworLyoKKyAqIERvZXMgQUxURVIgVEFCTEUgU0VUIFRBQkxFU1BBQ0UgbmVlZCB0byBnaXZlIHRo ZSB0YWJsZSdzIGluZGV4ZXMgbmV3IGZpbGVzPworICoKKyAqIE9ubHkgaWYgc29tZXRoaW5nIGNh biBzdGlsbCBtb2RpZnkgdGhlIHRhYmxlIGluIHRoZSBzYW1lIHRyYW5zYWN0aW9uIGFmdGVyCisg KiB0aGUgbW92ZS4gIFJhdGhlciB0aGFuIGxpc3RpbmcgZXZlcnkgcGxhY2Ugd2hlcmUgdXNlciBj b2RlIGNhbiBydW4gYWZ0ZXIKKyAqIGl0IC0tIHRoZSB2YWxpZGF0aW9uIG9mIG90aGVyIHRhYmxl cyBpbiB0aGUgd29yayBxdWV1ZSwgc3VjaCBhcyBhbgorICogaW5oZXJpdGFuY2UgY2hpbGQgZ2V0 dGluZyBhIG5ldyBDSEVDSyBjb25zdHJhaW50LCBmb3JlaWduIGtleSB2YWxpZGF0aW9uLAorICog c3FsX2Ryb3AgYW5kIHRhYmxlX3Jld3JpdGUgZXZlbnQgdHJpZ2dlcnMsIGFuZCBtb3JlIC0tIHRo ZSBmaWxlcyBhcmUga2VwdAorICogb25seSBmb3IgdGhlIG9uZSBjYXNlIHdoZXJlIG5vbmUgb2Yg dGhlbSBleGlzdHM6IGEgcGxhaW4KKyAqICJBTFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BBQ0Ui IG9mIGEgc2luZ2xlIHRhYmxlLCB3aXRoIG5vIG90aGVyCisgKiBzdWJjb21tYW5kLCBzZW50IGJ5 IGEgY2xpZW50IGFzIHRoZSBvbmx5IHN0YXRlbWVudCBvZiBhIHNpbXBsZSBRdWVyeQorICogbWVz c2FnZSwgb3V0c2lkZSBhbnkgdHJhbnNhY3Rpb24gYmxvY2s6IHRoZSB0cmFuc2FjdGlvbiB0aGVu IGVuZHMgcmlnaHQKKyAqIGFmdGVyIGl0LiAgV2hhdCBjYW4gc3RpbGwgcnVuIGFmdGVyIGl0IGlz IGEgZGRsX2NvbW1hbmRfZW5kIGV2ZW50IHRyaWdnZXIsCisgKiBzbyB0aGF0IGNhc2UgYWxzbyBy ZXF1aXJlcyB0aGF0IHRoZXJlIGlzIG5vbmUuCisgKgorICogQSBzdGF0ZW1lbnQgc2VudCBieSBh biBleHRlbmRlZC1wcm90b2NvbCBFeGVjdXRlIG1lc3NhZ2UgYWx3YXlzIGNvcGllczoKKyAqIGxh dGVyIHN0YXRlbWVudHMgb2YgdGhlIHNhbWUgcGlwZWxpbmUgc2hhcmUgaXRzIHRyYW5zYWN0aW9u IHVudGlsIHRoZSBuZXh0CisgKiBTeW5jLCBhbmQgdGhlIGJhY2tlbmQgY2Fubm90IHRlbGwgd2hl dGhlciBhbnkgd2lsbCBmb2xsb3cuICBGb3JjaW5nIGEgY29tbWl0CisgKiBhZnRlciB0aGUgQUxU RVIgd291bGQgbWFrZSBpdCBjb21taXQgb24gaXRzIG93biB3aGVuIGEgbGF0ZXIgc3RhdGVtZW50 IG9mCisgKiB0aGUgcGlwZWxpbmUgZmFpbHMsIHdoaWNoIGlzIG5vdCBob3cgQUxURVIgVEFCTEUg YmVoYXZlcyBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitBVFNldFRhYmxlU3BhY2VDb3B5 SW5kZXhlcyhBbHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0ICp3cXVldWUsCisJCQkJCQkg ICBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJaWYgKGNvbnRleHQgPT0g TlVMTCB8fCBJc0luVHJhbnNhY3Rpb25CbG9jayhjb250ZXh0LT5pc1RvcExldmVsKSkKKwkJcmV0 dXJuIHRydWU7CisJaWYgKE15QmFja2VuZFR5cGUgIT0gQl9CQUNLRU5EIHx8IElzRXh0ZW5kZWRR dWVyeU1lc3NhZ2UoKSkKKwkJcmV0dXJuIHRydWU7CisJaWYgKHBhcnNldHJlZSA9PSBOVUxMIHx8 IGxpc3RfbGVuZ3RoKHBhcnNldHJlZS0+Y21kcykgIT0gMSB8fAorCQljYXN0Tm9kZShBbHRlclRh YmxlQ21kLCBsaW5pdGlhbChwYXJzZXRyZWUtPmNtZHMpKS0+c3VidHlwZSAhPSBBVF9TZXRUYWJs ZVNwYWNlIHx8CisJCWxpc3RfbGVuZ3RoKHdxdWV1ZSkgIT0gMSkKKwkJcmV0dXJuIHRydWU7CisJ aWYgKEV2ZW50Q2FjaGVMb29rdXAoRVZUX0RETENvbW1hbmRFbmQpICE9IE5JTCkKKwkJcmV0dXJu IHRydWU7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBHaXZlIG9uZSBvZiBhIHRhYmxl J3MgaW5kZXhlcyBhIGZyZXNoIHJlbGZpbGVub2RlIHdpdGhpbiBpdHMgZXhpc3RpbmcKKyAqIHRh Ymxlc3BhY2UsIGNvcHlpbmcgdGhlIGN1cnJlbnQgaW5kZXggZmlsZSB0byB0aGUgbmV3IHJlbGZp bGVub2RlLgorICoKKyAqIEFURXhlY1NldFRhYmxlU3BhY2UoKSBjYWxscyB0aGlzIGZvciBlYWNo IGluZGV4IG9mIGEgdGFibGUgd2hvc2UgaGVhcCBpdCBoYXMKKyAqIGp1c3QgcmV3cml0dGVuIHRv IGEgbmV3IHJlbGZpbGVub2RlLiAgVGhlIGluZGV4ZXMgbXVzdCBzaGFyZSB0aGUgaGVhcCdzCisg KiB0cmFuc2FjdGlvbmFsIGZhdGU6IGFuIGFib3J0IGhhcyB0byBkaXNjYXJkIHRoZSBpbmRleCBl bnRyaWVzIHdyaXR0ZW4gZHVyaW5nCisgKiB0aGUgdHJhbnNhY3Rpb24gdG9nZXRoZXIgd2l0aCB0 aGUgaGVhcCdzIG5ldyBmaWxlLCBzaW5jZSB0aGUgaGVhcCBUSURzIHRob3NlCisgKiBlbnRyaWVz IHBvaW50IGF0IGFyZSBmcmVlZCBieSB0aGUgYWJvcnQgYW5kIGNhbiBiZSByZXVzZWQgYnkgbGF0 ZXIgaW5zZXJ0cy4KKyAqIENvcHlpbmcgdGhlIGV4aXN0aW5nIGluZGV4IGZpbGUga2VlcHMgdGhl IGFkZGVkIGNvc3QgY2xvc2UgdG8gdGhhdCBvZiB0aGUKKyAqIGhlYXAgbW92ZSBpdHNlbGY7IHRo ZSBpbmRleCBzdGF5cyBpbiBpdHMgb3duIHRhYmxlc3BhY2UsIGFzIGRvY3VtZW50ZWQuCisgKi8K K3N0YXRpYyB2b2lkCitBVEV4ZWNTZXRUYWJsZVNwYWNlTmV3SW5kZXhSZWxmaWxlbm9kZShPaWQg aW5kZXhPaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCVJlbGF0aW9uCWluZDsKKwlPaWQJCQlu ZXdyZWxmaWxlbm9kZTsKKwlSZWxGaWxlTm9kZSBuZXdybm9kZTsKKwlSZWxhdGlvbglwZ19jbGFz czsKKwlIZWFwVHVwbGUJdHVwbGU7CisJSXRlbVBvaW50ZXJEYXRhIG90aWQ7CisJRm9ybV9wZ19j bGFzcyByZF9yZWw7CisKKwlpbmQgPSByZWxhdGlvbl9vcGVuKGluZGV4T2lkLCBsb2NrbW9kZSk7 CisKKwkvKgorCSAqIE9ubHkgcGxhaW4gaW5kZXhlcyBoYXZlIHN0b3JhZ2UgdGhhdCBjYW4gaG9s ZCB0aGUgc3RhbGUgZW50cmllcy4gIEFuCisJICogaW5kZXggd2hvc2UgY3VycmVudCBmaWxlIHdh cyBjcmVhdGVkIGluIHRoaXMgc3VidHJhbnNhY3Rpb24gKHRoZSBpbmRleAorCSAqIGl0c2VsZiwg b3IgYSBuZXcgZmlsZSBmb3IgaXQpIGlzIGRpc2NhcmRlZCB0b2dldGhlciB3aXRoIHRoZSBoZWFw J3MgbmV3CisJICogZmlsZSBvbiBhYm9ydCwgc28gaXQgbmVlZHMgbm8gY29weS4gIHJkX25ld1Jl bGZpbGVub2RlU3ViaWQgY2FuIGJlIHplcm8KKwkgKiBhZnRlciBhIHJvbGxiYWNrIHRvIGEgc2F2 ZXBvaW50IGV2ZW4gdGhvdWdoIHRoZSBmaWxlIGlzIG5ldzsgdGhlbiB0aGlzCisJICogZmFsbHMg YmFjayB0byByZF9jcmVhdGVTdWJpZCwgYW5kIGNvcGllcyBpZiB0aGF0IGRvZXMgbm90IG1hdGNo IGVpdGhlci4KKwkgKi8KKwlpZiAoaW5kLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9JTkRF WCB8fAorCQkhUkVMS0lORF9IQVNfU1RPUkFHRShpbmQtPnJkX3JlbC0+cmVsa2luZCkgfHwKKwkJ TWF4KGluZC0+cmRfbmV3UmVsZmlsZW5vZGVTdWJpZCwgaW5kLT5yZF9jcmVhdGVTdWJpZCkgPT0K KwkJR2V0Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQoKSkKKwl7CisJCXJlbGF0aW9uX2Nsb3NlKGlu ZCwgTm9Mb2NrKTsKKwkJcmV0dXJuOworCX0KKworCS8qIEFsbG9jYXRlIGEgbmV3IHJlbGZpbGVu b2RlIGluIHRoZSBpbmRleCdzIGN1cnJlbnQgdGFibGVzcGFjZS4gKi8KKwluZXdyZWxmaWxlbm9k ZSA9IEdldE5ld1JlbEZpbGVOb2RlKGluZC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlLCBOVUxMLAor CQkJCQkJCQkJCSAgIGluZC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CisJbmV3cm5vZGUgPSBp bmQtPnJkX25vZGU7CisJbmV3cm5vZGUucmVsTm9kZSA9IG5ld3JlbGZpbGVub2RlOworCisJLyog Q29weSB0aGUgaW5kZXggaW50byB0aGUgbmV3IGZpbGUgYW5kIHNjaGVkdWxlIHRoZSBvbGQgb25l IGZvciBjbGVhbnVwLiAqLworCWluZGV4X2NvcHlfZGF0YShpbmQsIG5ld3Jub2RlKTsKKworCS8q IFVwZGF0ZSB0aGUgcGdfY2xhc3Mgcm93OyBvbmx5IHRoZSByZWxmaWxlbm9kZSBjaGFuZ2VzLiAq LworCXBnX2NsYXNzID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGVMb2NrZWRDb3B5MShSRUxPSUQsIE9iamVj dElkR2V0RGF0dW0oaW5kZXhPaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBpbmRleE9p ZCk7CisJb3RpZCA9IHR1cGxlLT50X3NlbGY7CisJcmRfcmVsID0gKEZvcm1fcGdfY2xhc3MpIEdF VFNUUlVDVCh0dXBsZSk7CisJcmRfcmVsLT5yZWxmaWxlbm9kZSA9IG5ld3JlbGZpbGVub2RlOwor CUNhdGFsb2dUdXBsZVVwZGF0ZShwZ19jbGFzcywgJm90aWQsIHR1cGxlKTsKKwlVbmxvY2tUdXBs ZShwZ19jbGFzcywgJm90aWQsIElucGxhY2VVcGRhdGVUdXBsZUxvY2spOworCWhlYXBfZnJlZXR1 cGxlKHR1cGxlKTsKKwl0YWJsZV9jbG9zZShwZ19jbGFzcywgUm93RXhjbHVzaXZlTG9jayk7CisK KwlJbnZva2VPYmplY3RQb3N0QWx0ZXJIb29rKFJlbGF0aW9uUmVsYXRpb25JZCwgaW5kZXhPaWQs IDApOworCVJlbGF0aW9uQXNzdW1lTmV3UmVsZmlsZW5vZGUoaW5kKTsKKworCXJlbGF0aW9uX2Ns b3NlKGluZCwgTm9Mb2NrKTsKKworCS8qIE1ha2UgdGhlIHJlbGZpbGVub2RlIGNoYW5nZSB2aXNp YmxlLiAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKaW5kZXggMmFlNjgyZTIyMjEuLjIzMDBmNWM3MWY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0y MzI0LDYgKzIzMjQsMjMgQEAgY2hlY2tfbG9nX3N0YXRlbWVudChMaXN0ICpzdG10X2xpc3QpCiAJ cmV0dXJuIGZhbHNlOwogfQogCisvKgorICogSXNFeHRlbmRlZFF1ZXJ5TWVzc2FnZQorICoJCUlz IHRoZSBjdXJyZW50IHN0YXRlbWVudCBiZWluZyBydW4gYnkgYW4gZXh0ZW5kZWQtcXVlcnktcHJv dG9jb2wKKyAqCQltZXNzYWdlPworICoKKyAqIFN1Y2ggYSBzdGF0ZW1lbnQgc2hhcmVzIGl0cyBp bXBsaWNpdCB0cmFuc2FjdGlvbiB3aXRoIHdoYXRldmVyIGVsc2UgdGhlCisgKiBjbGllbnQgc2Vu ZHMgYmVmb3JlIHRoZSBuZXh0IFN5bmMsIHdoaWNoIHRoZSBiYWNrZW5kIGNhbm5vdCBrbm93IHdo aWxlIGl0CisgKiBydW5zIHRoZSBzdGF0ZW1lbnQuICBUaGUgZmlyc3Qgc3RhdGVtZW50IG9mIGEg cGlwZWxpbmUgY2Fubm90IGJlIHRvbGQgZnJvbQorICogb25lIGZvbGxvd2VkIGRpcmVjdGx5IGJ5 IFN5bmM6IFhBQ1RfRkxBR1NfUElQRUxJTklORyBpcyBzZXQgb25seSBvbmNlIGFuCisgKiBFeGVj dXRlIGNvbXBsZXRlcy4KKyAqLworYm9vbAorSXNFeHRlbmRlZFF1ZXJ5TWVzc2FnZSh2b2lkKQor eworCXJldHVybiBkb2luZ19leHRlbmRlZF9xdWVyeV9tZXNzYWdlOworfQorCiAvKgogICogY2hl Y2tfbG9nX2R1cmF0aW9uCiAgKgkJRGV0ZXJtaW5lIHdoZXRoZXIgY3VycmVudCBjb21tYW5kJ3Mg ZHVyYXRpb24gc2hvdWxkIGJlIGxvZ2dlZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCBkYmJlNTkwNDI1Ni4u NDc4ZmI1YzAwNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBi L3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC0xMzE2LDYgKzEzMTYsNyBAQCBQcm9jZXNz VXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJYXRjb250ZXh0LnJlbGlkID0g cmVsaWQ7CiAJCQkJCQlhdGNvbnRleHQucGFyYW1zID0gcGFyYW1zOwogCQkJCQkJYXRjb250ZXh0 LnF1ZXJ5RW52ID0gcXVlcnlFbnY7CisJCQkJCQlhdGNvbnRleHQuaXNUb3BMZXZlbCA9IGlzVG9w TGV2ZWw7CiAKIAkJCQkJCS8qIC4uLiBlbnN1cmUgd2UgaGF2ZSBhbiBldmVudCB0cmlnZ2VyIGNv bnRleHQgLi4uICovCiAJCQkJCQlFdmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQocGFyc2V0cmVl KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCBiL3NyYy9pbmNsdWRl L3Rjb3AvdGNvcHByb3QuaAppbmRleCBkN2QzMDdiYmZhYi4uZjIxZGEyMGFhYTggMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3Rj b3Bwcm90LmgKQEAgLTk2LDYgKzk2LDcgQEAgZXh0ZXJuIHZvaWQgUG9zdGdyZXNNYWluKGNvbnN0 IGNoYXIgKmRibmFtZSwKIGV4dGVybiBsb25nIGdldF9zdGFja19kZXB0aF9ybGltaXQodm9pZCk7 CiBleHRlcm4gdm9pZCBSZXNldFVzYWdlKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2hvd1VzYWdlKGNv bnN0IGNoYXIgKnRpdGxlKTsKK2V4dGVybiBib29sIElzRXh0ZW5kZWRRdWVyeU1lc3NhZ2Uodm9p ZCk7CiBleHRlcm4gaW50CWNoZWNrX2xvZ19kdXJhdGlvbihjaGFyICptc2VjX3N0ciwgYm9vbCB3 YXNfbG9nZ2VkKTsKIGV4dGVybiB2b2lkIHNldF9kZWJ1Z19vcHRpb25zKGludCBkZWJ1Z19mbGFn LAogCQkJCQkJCSAgR3VjQ29udGV4dCBjb250ZXh0LCBHdWNTb3VyY2Ugc291cmNlKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oIGIvc3JjL2luY2x1ZGUvdGNvcC91dGls aXR5LmgKaW5kZXggZjlkYWY1Yjc0NGMuLjMxMjNkNGFhOGRkIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS90Y29wL3V0aWxpdHkuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaApAQCAt MzQsNiArMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQKIAlP aWQJCQlyZWxpZDsJCQkvKiBPSUQgb2YgQUxURVIncyB0YXJnZXQgdGFibGUgKi8KIAlQYXJhbUxp c3RJbmZvIHBhcmFtczsJCS8qIGFueSBwYXJhbWV0ZXJzIGF2YWlsYWJsZSB0byBBTFRFUiBUQUJM RSAqLwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBleGVjdXRpb24gZW52aXJvbm1l bnQgZm9yIEFMVEVSIFRBQkxFICovCisJYm9vbAkJaXNUb3BMZXZlbDsJCS8qIEFMVEVSIFRBQkxF IGlzIGEgdG9wLWxldmVsIHN0YXRlbWVudCAqLwogfSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQ7 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RhYmxlc3BhY2Uu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlLm91dAppbmRleCAzODcz ZTNjZDdmYy4uMWZkMjQ0OTEyNjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdGFibGVzcGFjZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNw YWNlLm91dApAQCAtOTUxLDYgKzk1MSwxNTkgQEAgRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBm b3IgdGFibGVzcGFjZSByZWdyZXNzX3RibHNwYWNlCiBSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jl c3NfdGJsc3BhY2UsIENPTkNVUlJFTlRMWSkgVEFCTEUgdGFibGVzcGFjZV90YWJsZTsgLS0gZmFp bAogRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGVzcGFjZSByZWdyZXNzX3RibHNw YWNlCiBSRVNFVCBST0xFOworLS0gQUxURVIgVEFCTEUgU0VUIFRBQkxFU1BBQ0UgbW92ZXMgdGhl IGhlYXAgYW5kIGxlYXZlcyB0aGUgaW5kZXhlcyBpbiB0aGVpcgorLS0gdGFibGVzcGFjZS4gIFJ1 biBvbiBpdHMgb3duLCBhcyBoZXJlLCBpdCBsZWF2ZXMgdGhlaXIgZmlsZXMgYWxvbmUgdG9vLgor Q1JFQVRFIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRic3Bh Y2Vfcm9sbGJhY2sgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDApOworQ1JFQVRFIElOREVY IHRic3BhY2Vfcm9sbGJhY2tfaWR4IE9OIHRic3BhY2Vfcm9sbGJhY2sgKGEpOworU0VMRUNUIHBn X3JlbGF0aW9uX3NpemUoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgQVMgaWR4X3NpemVfYmVmb3Jl IFxnc2V0CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4 JykgQVMgaWR4X3BhdGggXGdzZXQKK0FMVEVSIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRB QkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgn dGJzcGFjZV9yb2xsYmFja19pZHgnKSA9IDonaWR4X3BhdGgnIEFTIGlkeF9maWxlX2tlcHQ7Cisg aWR4X2ZpbGVfa2VwdCAKKy0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gSW4gYSB0 cmFuc2FjdGlvbiBibG9jayB0aGUgaW5kZXhlcyBnZXQgbmV3IGZpbGVzLCBzbyB0aGF0IGEgcm9s bGJhY2sKKy0tIGRpc2NhcmRzIHRoZSBlbnRyaWVzIGFkZGVkIGFmdGVyIHRoZSBtb3ZlIHRvZ2V0 aGVyIHdpdGggdGhlIGhlYXAncyBmaWxlLgorQkVHSU47CitBTFRFUiBUQUJMRSB0YnNwYWNlX3Jv bGxiYWNrIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmls ZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgPD4gOidpZHhfcGF0aCcgQVMgaWR4X2ZpbGVf bmV3OworIGlkeF9maWxlX25ldyAKKy0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitJTlNF UlQgSU5UTyB0YnNwYWNlX3JvbGxiYWNrIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMTAxLCAyMDAw KTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9zaXplKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpID4gOmlk eF9zaXplX2JlZm9yZSBBUyBpZHhfZ3JldzsKKyBpZHhfZ3JldyAKKy0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKK1JPTExCQUNLOworU0VMRUNUIHBnX3JlbGF0aW9uX3NpemUoJ3Ric3BhY2Vfcm9s bGJhY2tfaWR4JykgPSA6aWR4X3NpemVfYmVmb3JlIEFTIGlkeF9zaXplX3Jlc3RvcmVkOworIGlk eF9zaXplX3Jlc3RvcmVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0g dGhlIHNhbWUgZm9yIGEgVFJVTkNBVEUgYWZ0ZXIgdGhlIG1vdmUsIHdoaWNoIGlzIGRvbmUgaW4g cGxhY2UKK0JFR0lOOworQUxURVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayBTRVQgVEFCTEVTUEFD RSBwZ19kZWZhdWx0OworVFJVTkNBVEUgdGJzcGFjZV9yb2xsYmFjazsKK1JPTExCQUNLOworU0VM RUNUIHBnX3JlbGF0aW9uX3NpemUoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgPSA6aWR4X3NpemVf YmVmb3JlIEFTIGlkeF9zaXplX3Jlc3RvcmVkOworIGlkeF9zaXplX3Jlc3RvcmVkIAorLS0tLS0t LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGJzcGFj ZV9yb2xsYmFjazsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDEwMAorKDEgcm93KQorCistLSBBbiBp bmRleCBjcmVhdGVkIGluIHRoZSBzYW1lIHN1YnRyYW5zYWN0aW9uIGlzIGRpc2NhcmRlZCB3aXRo IHRoZSBoZWFwCistLSBhbnl3YXkgYW5kIGlzIG5vdCBjb3BpZWQuICBNb3ZpbmcgdGhlIGluZGV4 ZXMgZmlyc3QgYW5kIHRoZW4gdGhlIHRhYmxlCistLSBjb3BpZXMgZWFjaCBpbmRleCBvbmx5IG9u Y2UuCitCRUdJTjsKK0NSRUFURSBJTkRFWCB0YnNwYWNlX3JvbGxiYWNrX2lkeDIgT04gdGJzcGFj ZV9yb2xsYmFjayAoYSk7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9s bGJhY2tfaWR4MicpIEFTIGlkeDJfcGF0aCBcZ3NldAorQUxURVIgSU5ERVggdGJzcGFjZV9yb2xs YmFja19pZHggU0VUIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK1NFTEVDVCBwZ19yZWxh dGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgnKSBBUyBpZHhfbW92ZWRfcGF0aCBc Z3NldAorQUxURVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayBTRVQgVEFCTEVTUEFDRSBwZ19kZWZh dWx0OworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeDIn KSA9IDonaWR4Ml9wYXRoJyBBUyBpZHgyX25vdF9jb3BpZWQsCisgIHBnX3JlbGF0aW9uX2ZpbGVw YXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpID0gOidpZHhfbW92ZWRfcGF0aCcgQVMgaWR4X25v dF9jb3BpZWRfYWdhaW47CisgaWR4Ml9ub3RfY29waWVkIHwgaWR4X25vdF9jb3BpZWRfYWdhaW4g CistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICAg ICAgIHwgdAorKDEgcm93KQorCitST0xMQkFDSzsKK0RST1AgVEFCTEUgdGJzcGFjZV9yb2xsYmFj azsKKy0tIEFuIGluZGV4IGZpbGUgdGhhdCBpcyBuZXcgaW4gdGhpcyB0cmFuc2FjdGlvbiBidXQg b2xkZXIgdGhhbiBhIHNhdmVwb2ludAorLS0gc3Vydml2ZXMgYSByb2xsYmFjayB0byBpdCwgc28g aXQgbXVzdCBzdGlsbCBmb2xsb3cgYSBtb3ZlIG1hZGUgYWZ0ZXIgdGhlCistLSBzYXZlcG9pbnQ6 IGFuIGluZGV4IGNyZWF0ZWQgb3IgcmVpbmRleGVkIGJlZm9yZSBpdCwgb3IgYWxyZWFkeSBjb3Bp ZWQgYnkKKy0tIGFuIGVhcmxpZXIgbW92ZS4gIFJvd3MgaW5zZXJ0ZWQgYWZ0ZXJ3YXJkcyByZXVz ZSB0aGUgVElEcyBmcmVlZCBieSB0aGUKKy0tIHJvbGxiYWNrczsgYSBzdGFsZSBpbmRleCBlbnRy eSB3b3VsZCBtYXRjaCB0aGVtLgorQ1JFQVRFIFRBQkxFIHRic3BhY2Vfc3VieGFjdCAoYSBpbnQp OworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwg MTAwKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9 IG9mZjsKK0JFR0lOOworQ1JFQVRFIElOREVYIHRic3BhY2Vfc3VieGFjdF9pZHggT04gdGJzcGFj ZV9zdWJ4YWN0IChhKTsKK1NBVkVQT0lOVCBzOworQUxURVIgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0 IFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1 YnhhY3QgU0VMRUNUIC1nZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworUk9MTEJBQ0sgVE8gczsKK0NP TU1JVDsKK0JFR0lOOworUkVJTkRFWCBJTkRFWCB0YnNwYWNlX3N1YnhhY3RfaWR4OworU0FWRVBP SU5UIHM7CitBTFRFUiBUQUJMRSB0YnNwYWNlX3N1YnhhY3QgU0VUIFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZTsKK0lOU0VSVCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgLWdlbmVyYXRl X3NlcmllcygxLCA1MCk7CitST0xMQkFDSyBUTyBzOworQ09NTUlUOworQkVHSU47CitBTFRFUiBU QUJMRSB0YnNwYWNlX3N1YnhhY3QgU0VUIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0lO U0VSVCBJTlRPIHRic3BhY2Vfc3VieGFjdCBWQUxVRVMgKDApOworU0FWRVBPSU5UIHM7CitBTFRF UiBUQUJMRSB0YnNwYWNlX3N1YnhhY3QgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKK0lOU0VS VCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgLWdlbmVyYXRlX3NlcmllcygxLCA1MCk7CitS T0xMQkFDSyBUTyBzOworQ09NTUlUOworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFNFTEVD VCBnZW5lcmF0ZV9zZXJpZXMoMTAxLCAzMDApOworU0VMRUNUIGNvdW50KCopIEZST00gdGJzcGFj ZV9zdWJ4YWN0IFdIRVJFIGEgPCAwOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cp CisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vfc3VieGFjdDsKKyBjb3VudCAKKy0tLS0t LS0KKyAgIDMwMQorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJs ZV9iaXRtYXBzY2FuOworRFJPUCBUQUJMRSB0YnNwYWNlX3N1YnhhY3Q7CistLSBDb21iaW5lZCB3 aXRoIGFub3RoZXIgc3ViY29tbWFuZCwgdGhlIEFMVEVSIGNhbiBydW4gdXNlciBjb2RlIGFmdGVy IHRoZQorLS0gbW92ZSwgc3VjaCBhcyBhIENIRUNLIGNvbnN0cmFpbnQgdmFsaWRhdGVkIG9uIGFu IGluaGVyaXRhbmNlIGNoaWxkIGFmdGVyCistLSB0aGUgcGFyZW50IHdhcyBtb3ZlZCwgc28gdGhl IGluZGV4ZXMgZ2V0IG5ldyBmaWxlcyBldmVuIG91dHNpZGUgYQorLS0gdHJhbnNhY3Rpb24gYmxv Y2suCitDUkVBVEUgVEFCTEUgdGJzcGFjZV9jb21iaW5lZCAoYSBpbnQpOworSU5TRVJUIElOVE8g dGJzcGFjZV9jb21iaW5lZCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCk7CitDUkVBVEUg SU5ERVggdGJzcGFjZV9jb21iaW5lZF9pZHggT04gdGJzcGFjZV9jb21iaW5lZCAoYSk7CitDUkVB VEUgVEFCTEUgdGJzcGFjZV9jb21iaW5lZF9jaGlsZCAoKSBJTkhFUklUUyAodGJzcGFjZV9jb21i aW5lZCk7CitJTlNFUlQgSU5UTyB0YnNwYWNlX2NvbWJpbmVkX2NoaWxkIFZBTFVFUyAoNTAwMCk7 CitDUkVBVEUgRlVOQ1RJT04gdGJzcGFjZV9jb21iaW5lZF9jaGsodiBpbnQpIFJFVFVSTlMgYm9v bCBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICBJRiB2IDwgNTAwMCBUSEVOIFJFVFVS TiB0cnVlOyBFTkQgSUY7CisgIElOU0VSVCBJTlRPIHRic3BhY2VfY29tYmluZWQgU0VMRUNUIC1n ZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworICBSQUlTRSBFWENFUFRJT04gJ2Fib3J0IGFmdGVyIHdy aXRpbmcnOworRU5EICQkOworQUxURVIgVEFCTEUgdGJzcGFjZV9jb21iaW5lZCBTRVQgVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlLAorICBBREQgQ09OU1RSQUlOVCB0YnNwYWNlX2NvbWJpbmVk X2sgQ0hFQ0sgKHRic3BhY2VfY29tYmluZWRfY2hrKGEpKTsKK0VSUk9SOiAgYWJvcnQgYWZ0ZXIg d3JpdGluZworQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIHRic3BhY2VfY29tYmluZWRfY2hr KGludGVnZXIpIGxpbmUgNSBhdCBSQUlTRQorRFJPUCBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkX2No aWxkOworSU5TRVJUIElOVE8gdGJzcGFjZV9jb21iaW5lZCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVz KDEwMSwgMzAwKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFw c2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2VfY29tYmluZWQgV0hFUkUg YSA8IDA7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0RST1AgVEFCTEUgdGJzcGFjZV9j b21iaW5lZDsKK0RST1AgRlVOQ1RJT04gdGJzcGFjZV9jb21iaW5lZF9jaGsoaW50KTsKIEFMVEVS IFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRU5BTUUgVE8gcmVncmVzc190YmxzcGFjZV9y ZW5hbWVkOwogQUxURVIgVEFCTEUgQUxMIElOIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZV9y ZW5hbWVkIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CiBBTFRFUiBJTkRFWCBBTEwgSU4gVEFC TEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVs dDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2Uuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdGFibGVzcGFjZS5zcWwKaW5kZXggMDYwNjk4MDcyZTYuLjM5NjY5 YTVhMTRiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90YWJsZXNwYWNlLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90YWJsZXNwYWNlLnNxbApAQCAtNDIyLDYgKzQyMiwx MDggQEAgUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSB0YWJsZXNw YWNlX3RhYmxlOyAtLSBmYWlsCiBSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2Us IENPTkNVUlJFTlRMWSkgVEFCTEUgdGFibGVzcGFjZV90YWJsZTsgLS0gZmFpbAogUkVTRVQgUk9M RTsKIAorLS0gQUxURVIgVEFCTEUgU0VUIFRBQkxFU1BBQ0UgbW92ZXMgdGhlIGhlYXAgYW5kIGxl YXZlcyB0aGUgaW5kZXhlcyBpbiB0aGVpcgorLS0gdGFibGVzcGFjZS4gIFJ1biBvbiBpdHMgb3du LCBhcyBoZXJlLCBpdCBsZWF2ZXMgdGhlaXIgZmlsZXMgYWxvbmUgdG9vLgorQ1JFQVRFIFRBQkxF IHRic3BhY2Vfcm9sbGJhY2sgKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRic3BhY2Vfcm9sbGJhY2sg U0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDApOworQ1JFQVRFIElOREVYIHRic3BhY2Vfcm9s bGJhY2tfaWR4IE9OIHRic3BhY2Vfcm9sbGJhY2sgKGEpOworU0VMRUNUIHBnX3JlbGF0aW9uX3Np emUoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgQVMgaWR4X3NpemVfYmVmb3JlIFxnc2V0CitTRUxF Q1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgQVMgaWR4X3Bh dGggXGdzZXQKK0FMVEVSIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xs YmFja19pZHgnKSA9IDonaWR4X3BhdGgnIEFTIGlkeF9maWxlX2tlcHQ7CistLSBJbiBhIHRyYW5z YWN0aW9uIGJsb2NrIHRoZSBpbmRleGVzIGdldCBuZXcgZmlsZXMsIHNvIHRoYXQgYSByb2xsYmFj aworLS0gZGlzY2FyZHMgdGhlIGVudHJpZXMgYWRkZWQgYWZ0ZXIgdGhlIG1vdmUgdG9nZXRoZXIg d2l0aCB0aGUgaGVhcCdzIGZpbGUuCitCRUdJTjsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfcm9sbGJh Y2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0 aCgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA8PiA6J2lkeF9wYXRoJyBBUyBpZHhfZmlsZV9uZXc7 CitJTlNFUlQgSU5UTyB0YnNwYWNlX3JvbGxiYWNrIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMTAx LCAyMDAwKTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9zaXplKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcp ID4gOmlkeF9zaXplX2JlZm9yZSBBUyBpZHhfZ3JldzsKK1JPTExCQUNLOworU0VMRUNUIHBnX3Jl bGF0aW9uX3NpemUoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgPSA6aWR4X3NpemVfYmVmb3JlIEFT IGlkeF9zaXplX3Jlc3RvcmVkOworLS0gdGhlIHNhbWUgZm9yIGEgVFJVTkNBVEUgYWZ0ZXIgdGhl IG1vdmUsIHdoaWNoIGlzIGRvbmUgaW4gcGxhY2UKK0JFR0lOOworQUxURVIgVEFCTEUgdGJzcGFj ZV9yb2xsYmFjayBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0OworVFJVTkNBVEUgdGJzcGFjZV9y b2xsYmFjazsKK1JPTExCQUNLOworU0VMRUNUIHBnX3JlbGF0aW9uX3NpemUoJ3Ric3BhY2Vfcm9s bGJhY2tfaWR4JykgPSA6aWR4X3NpemVfYmVmb3JlIEFTIGlkeF9zaXplX3Jlc3RvcmVkOworU0VM RUNUIGNvdW50KCopIEZST00gdGJzcGFjZV9yb2xsYmFjazsKKy0tIEFuIGluZGV4IGNyZWF0ZWQg aW4gdGhlIHNhbWUgc3VidHJhbnNhY3Rpb24gaXMgZGlzY2FyZGVkIHdpdGggdGhlIGhlYXAKKy0t IGFueXdheSBhbmQgaXMgbm90IGNvcGllZC4gIE1vdmluZyB0aGUgaW5kZXhlcyBmaXJzdCBhbmQg dGhlbiB0aGUgdGFibGUKKy0tIGNvcGllcyBlYWNoIGluZGV4IG9ubHkgb25jZS4KK0JFR0lOOwor Q1JFQVRFIElOREVYIHRic3BhY2Vfcm9sbGJhY2tfaWR4MiBPTiB0YnNwYWNlX3JvbGxiYWNrIChh KTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgyJykg QVMgaWR4Ml9wYXRoIFxnc2V0CitBTFRFUiBJTkRFWCB0YnNwYWNlX3JvbGxiYWNrX2lkeCBTRVQg VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRo KCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpIEFTIGlkeF9tb3ZlZF9wYXRoIFxnc2V0CitBTFRFUiBU QUJMRSB0YnNwYWNlX3JvbGxiYWNrIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitTRUxFQ1Qg cGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4MicpID0gOidpZHgyX3Bh dGgnIEFTIGlkeDJfbm90X2NvcGllZCwKKyAgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vf cm9sbGJhY2tfaWR4JykgPSA6J2lkeF9tb3ZlZF9wYXRoJyBBUyBpZHhfbm90X2NvcGllZF9hZ2Fp bjsKK1JPTExCQUNLOworRFJPUCBUQUJMRSB0YnNwYWNlX3JvbGxiYWNrOworLS0gQW4gaW5kZXgg ZmlsZSB0aGF0IGlzIG5ldyBpbiB0aGlzIHRyYW5zYWN0aW9uIGJ1dCBvbGRlciB0aGFuIGEgc2F2 ZXBvaW50CistLSBzdXJ2aXZlcyBhIHJvbGxiYWNrIHRvIGl0LCBzbyBpdCBtdXN0IHN0aWxsIGZv bGxvdyBhIG1vdmUgbWFkZSBhZnRlciB0aGUKKy0tIHNhdmVwb2ludDogYW4gaW5kZXggY3JlYXRl ZCBvciByZWluZGV4ZWQgYmVmb3JlIGl0LCBvciBhbHJlYWR5IGNvcGllZCBieQorLS0gYW4gZWFy bGllciBtb3ZlLiAgUm93cyBpbnNlcnRlZCBhZnRlcndhcmRzIHJldXNlIHRoZSBUSURzIGZyZWVk IGJ5IHRoZQorLS0gcm9sbGJhY2tzOyBhIHN0YWxlIGluZGV4IGVudHJ5IHdvdWxkIG1hdGNoIHRo ZW0uCitDUkVBVEUgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0IChhIGludCk7CitJTlNFUlQgSU5UTyB0 YnNwYWNlX3N1YnhhY3QgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDApOworU0VUIGVuYWJs ZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworQkVHSU47CitD UkVBVEUgSU5ERVggdGJzcGFjZV9zdWJ4YWN0X2lkeCBPTiB0YnNwYWNlX3N1YnhhY3QgKGEpOwor U0FWRVBPSU5UIHM7CitBTFRFUiBUQUJMRSB0YnNwYWNlX3N1YnhhY3QgU0VUIFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZTsKK0lOU0VSVCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgLWdl bmVyYXRlX3NlcmllcygxLCA1MCk7CitST0xMQkFDSyBUTyBzOworQ09NTUlUOworQkVHSU47CitS RUlOREVYIElOREVYIHRic3BhY2Vfc3VieGFjdF9pZHg7CitTQVZFUE9JTlQgczsKK0FMVEVSIFRB QkxFIHRic3BhY2Vfc3VieGFjdCBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworSU5T RVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFNFTEVDVCAtZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKTsK K1JPTExCQUNLIFRPIHM7CitDT01NSVQ7CitCRUdJTjsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfc3Vi eGFjdCBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworSU5TRVJUIElOVE8gdGJzcGFj ZV9zdWJ4YWN0IFZBTFVFUyAoMCk7CitTQVZFUE9JTlQgczsKK0FMVEVSIFRBQkxFIHRic3BhY2Vf c3VieGFjdCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0OworSU5TRVJUIElOVE8gdGJzcGFjZV9z dWJ4YWN0IFNFTEVDVCAtZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKTsKK1JPTExCQUNLIFRPIHM7CitD T01NSVQ7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1YnhhY3QgU0VMRUNUIGdlbmVyYXRlX3Nlcmll cygxMDEsIDMwMCk7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0YnNwYWNlX3N1YnhhY3QgV0hFUkUg YSA8IDA7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0YnNwYWNlX3N1YnhhY3Q7CitSRVNFVCBlbmFi bGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworRFJPUCBUQUJMRSB0YnNwYWNl X3N1YnhhY3Q7CistLSBDb21iaW5lZCB3aXRoIGFub3RoZXIgc3ViY29tbWFuZCwgdGhlIEFMVEVS IGNhbiBydW4gdXNlciBjb2RlIGFmdGVyIHRoZQorLS0gbW92ZSwgc3VjaCBhcyBhIENIRUNLIGNv bnN0cmFpbnQgdmFsaWRhdGVkIG9uIGFuIGluaGVyaXRhbmNlIGNoaWxkIGFmdGVyCistLSB0aGUg cGFyZW50IHdhcyBtb3ZlZCwgc28gdGhlIGluZGV4ZXMgZ2V0IG5ldyBmaWxlcyBldmVuIG91dHNp ZGUgYQorLS0gdHJhbnNhY3Rpb24gYmxvY2suCitDUkVBVEUgVEFCTEUgdGJzcGFjZV9jb21iaW5l ZCAoYSBpbnQpOworSU5TRVJUIElOVE8gdGJzcGFjZV9jb21iaW5lZCBTRUxFQ1QgZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCk7CitDUkVBVEUgSU5ERVggdGJzcGFjZV9jb21iaW5lZF9pZHggT04gdGJz cGFjZV9jb21iaW5lZCAoYSk7CitDUkVBVEUgVEFCTEUgdGJzcGFjZV9jb21iaW5lZF9jaGlsZCAo KSBJTkhFUklUUyAodGJzcGFjZV9jb21iaW5lZCk7CitJTlNFUlQgSU5UTyB0YnNwYWNlX2NvbWJp bmVkX2NoaWxkIFZBTFVFUyAoNTAwMCk7CitDUkVBVEUgRlVOQ1RJT04gdGJzcGFjZV9jb21iaW5l ZF9jaGsodiBpbnQpIFJFVFVSTlMgYm9vbCBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgor ICBJRiB2IDwgNTAwMCBUSEVOIFJFVFVSTiB0cnVlOyBFTkQgSUY7CisgIElOU0VSVCBJTlRPIHRi c3BhY2VfY29tYmluZWQgU0VMRUNUIC1nZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworICBSQUlTRSBF WENFUFRJT04gJ2Fib3J0IGFmdGVyIHdyaXRpbmcnOworRU5EICQkOworQUxURVIgVEFCTEUgdGJz cGFjZV9jb21iaW5lZCBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlLAorICBBREQgQ09O U1RSQUlOVCB0YnNwYWNlX2NvbWJpbmVkX2sgQ0hFQ0sgKHRic3BhY2VfY29tYmluZWRfY2hrKGEp KTsKK0RST1AgVEFCTEUgdGJzcGFjZV9jb21iaW5lZF9jaGlsZDsKK0lOU0VSVCBJTlRPIHRic3Bh Y2VfY29tYmluZWQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxMDEsIDMwMCk7CitTRVQgZW5hYmxl X3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgY291 bnQoKikgRlJPTSB0YnNwYWNlX2NvbWJpbmVkIFdIRVJFIGEgPCAwOworUkVTRVQgZW5hYmxlX3Nl cXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0RST1AgVEFCTEUgdGJzcGFjZV9jb21i aW5lZDsKK0RST1AgRlVOQ1RJT04gdGJzcGFjZV9jb21iaW5lZF9jaGsoaW50KTsKKwogQUxURVIg VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlIFJFTkFNRSBUTyByZWdyZXNzX3RibHNwYWNlX3Jl bmFtZWQ7CiAKIEFMVEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2Vf cmVuYW1lZCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0Owo= --===============1761294064175896986== Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0*=us-ascii''v7-REL_14-0001-Fix-index-corruption-after-rolling-back; filename*1*=-ALTER-TAB.patch.txt MIME-Version: 1.0 RnJvbSAzODZiZjAxMTY0ZjY0YTcxNjIyNTU5NDU0NTQ0N2JkZjhmZGY4YjY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51ZWwgUmV5ZXMgQnJhdm8gPG1hbnVlbHJleWVzYnJhdm9A Z21haWwuY29tPgpEYXRlOiBGcmksIDIgT2N0IDIwMjYgMTA6NTA6NDAgLTAzMDAKU3ViamVjdDog W1BBVENIIHY3XSBGaXggaW5kZXggY29ycnVwdGlvbiBhZnRlciByb2xsaW5nIGJhY2sgQUxURVIg VEFCTEUgU0VUCiBUQUJMRVNQQUNFCgpBTFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BBQ0UgcmV3 cml0ZXMgYSB0YWJsZSdzIGhlYXAgdG8gYSBuZXcKcmVsZmlsZW5vZGUgYnV0IGxlYXZlcyB0aGUg dGFibGUncyBpbmRleGVzIG9uIHRoZWlyIGV4aXN0aW5nCnJlbGZpbGVub2Rlcy4gIFRoZSB0d28g dGhlbiByb2xsIGJhY2sgYnkgZGlmZmVyZW50IG1lY2hhbmlzbXM6IG9uIGFib3J0CnRoZSBoZWFw J3MgbmV3IGZpbGUgaXMgZGlzY2FyZGVkLCBmcmVlaW5nIHRoZSBoZWFwIFRJRHMgY29uc3VtZWQg Ynkgcm93cwppbnNlcnRlZCBhZnRlciB0aGUgU0VUIFRBQkxFU1BBQ0UsIHdoaWxlIHRoZSBpbmRl eCBlbnRyaWVzIGZvciB0aG9zZSByb3dzCndlcmUgd3JpdHRlbiB0byB0aGUgdW5jaGFuZ2VkIGlu ZGV4IGZpbGVzIGFuZCBzdXJ2aXZlLiAgQSBsYXRlciBpbnNlcnQKY2FuIHJldXNlIGEgZnJlZWQg aGVhcCBUSUQsIGxlYXZpbmcgdHdvIGluZGV4IGVudHJpZXMgdGhhdCBwb2ludCBhdCB0aGUKc2Ft ZSBsaXZlIGhlYXAgdHVwbGUuICBUaGlzIHN1cmZhY2VzIGFzIGEgX2J0X3Bvc3RpbmdfdmFsaWQg YXNzZXJ0aW9uCmZhaWx1cmUgaW4gbmJ0cmVlIGRlZHVwbGljYXRpb24sIGFuZCBhcyBkdXBsaWNh dGUgcm93cyB0aHJvdWdoIGFuCmluZGV4LW9ubHkgc2NhbiBpbiBnaXN0LiAgQSBUUlVOQ0FURSBh ZnRlciB0aGUgbW92ZSBpbiB0aGUgc2FtZQp0cmFuc2FjdGlvbiB0cnVuY2F0ZXMgdGhlIG9sZCBp bmRleCBmaWxlcyBpbiBwbGFjZSwgd2hpY2ggYSByb2xsYmFjawpjYW5ub3QgdW5kbyBlaXRoZXIu CgpGaXggYnkgZ2l2aW5nIGVhY2ggaW5kZXggb2YgdGhlIHRhYmxlIGEgbmV3IHJlbGZpbGVudW1i ZXIgaW4gdGhlIHNhbWUKQUxURVIsIGNvcHlpbmcgaXQgd2l0aGluIGl0cyBvd24gdGFibGVzcGFj ZSAodGhlIGluZGV4ZXMgc3RheSB3aGVyZSB0aGV5CmFyZSwgYXMgZG9jdW1lbnRlZCksIHNvIHRo YXQgYW4gYWJvcnQgZGlzY2FyZHMgdGhlIG5ldyBoZWFwIGFuZCBpbmRleApmaWxlcyB0b2dldGhl ci4gIFR3byBjYXNlcyBuZWVkIG5vIGNvcHk6CgotIFRoZSBBTFRFUiBpcyBhIHBsYWluIEFMVEVS IFRBQkxFIC4uLiBTRVQgVEFCTEVTUEFDRSBvZiBhIHNpbmdsZQogIHRhYmxlLCB3aXRoIG5vIG90 aGVyIHN1YmNvbW1hbmQsIHNlbnQgYnkgYSBjbGllbnQgYXMgdGhlIG9ubHkKICBzdGF0ZW1lbnQg b2YgYSBzaW1wbGUgUXVlcnkgbWVzc2FnZSBvdXRzaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2ssIHNv CiAgdGhlIHRyYW5zYWN0aW9uIGVuZHMgcmlnaHQgYWZ0ZXIgaXQuICBBbnkgb3RoZXIgc3ViY29t bWFuZCBjb3VsZCBydW4KICB1c2VyIGNvZGUgYWZ0ZXIgdGhlIG1vdmU6IHRoZSB2YWxpZGF0aW9u IG9mIGFuIGluaGVyaXRhbmNlIGNoaWxkJ3MKICBuZXcgQ0hFQ0sgY29uc3RyYWludCwgYSBzcWxf ZHJvcCBldmVudCB0cmlnZ2VyLCBhbmQgc28gb24uICBUaGlzIGFsc28KICByZXF1aXJlcyB0aGF0 IG5vIGRkbF9jb21tYW5kX2VuZCBldmVudCB0cmlnZ2VyIHJ1bnMgYWZ0ZXIgaXQuICBBCiAgc3Rh dGVtZW50IHNlbnQgdGhyb3VnaCB0aGUgZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wgYWx3YXlzIGNv cGllczogYQogIGxhdGVyIHN0YXRlbWVudCBvZiB0aGUgc2FtZSBwaXBlbGluZSBzaGFyZXMgaXRz IHRyYW5zYWN0aW9uIHVudGlsCiAgdGhlIG5leHQgU3luYywgYW5kIHRoZSBiYWNrZW5kIGNhbm5v dCB0ZWxsIHdoZXRoZXIgb25lIHdpbGwgZm9sbG93LgogIElzRXh0ZW5kZWRRdWVyeU1lc3NhZ2Uo KSBpcyBhZGRlZCB0byBwb3N0Z3Jlcy5jIHRvIHRlbGwgdGhlIHR3bwogIGFwYXJ0LgoKLSBUaGUg aW5kZXgncyBjdXJyZW50IGZpbGUgd2FzIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgc3VidHJhbnNh Y3Rpb24sCiAgZm9yIGV4YW1wbGUgYW4gaW5kZXggY3JlYXRlZCwgb3IgbW92ZWQsIGVhcmxpZXIg aW4gaXQuICBBbiBhYm9ydAogIGRpc2NhcmRzIHRoYXQgZmlsZSB0b2dldGhlciB3aXRoIHRoZSBo ZWFwJ3MgbmV3IG9uZS4gIFRoaXMgYWxzbyBsZXRzCiAgYSB0cmFuc2FjdGlvbiBtb3ZlIHRoZSBp bmRleGVzIGZpcnN0IGFuZCB0aGVuIHRoZSB0YWJsZSB3aXRob3V0CiAgY29weWluZyB0aGUgaW5k ZXhlcyB0d2ljZS4KClRoZSByZWdyZXNzaW9uIHRlc3QgY2hlY2tzIHRoYXQgdGhlIEFMVEVSIG9u IGl0cyBvd24gbGVhdmVzIHRoZSBpbmRleApmaWxlcyB1bnRvdWNoZWQ7IHRoYXQgY29tYmluZWQg d2l0aCBhIENIRUNLIGNvbnN0cmFpbnQgd2hvc2UgdmFsaWRhdGlvbgpvbiBhbiBpbmhlcml0YW5j ZSBjaGlsZCB3cml0ZXMgdG8gdGhlIHRhYmxlIGFmdGVyIHRoZSBtb3ZlIGFuZCBmYWlscywgaXQK bGVhdmVzIG5vIHN0YWxlIGluZGV4IGVudHJ5OyB0aGF0IGluIGEgdHJhbnNhY3Rpb24gYmxvY2sg YSByb2xsYmFjawphZnRlciBpbnNlcnRpbmcgb3IgdHJ1bmNhdGluZyBsZWF2ZXMgdGhlIGluZGV4 IGZpbGUgYXQgaXRzIHByZS0KdHJhbnNhY3Rpb24gc2l6ZTsgdGhhdCBhbiBpbmRleCBjcmVhdGVk IG9yIG1vdmVkIGVhcmxpZXIgaW4gdGhlCnN1YnRyYW5zYWN0aW9uIGlzIG5vdCBjb3BpZWQ7IGFu ZCB0aGF0IGFmdGVyIGEgcm9sbGJhY2sgdG8gYSBzYXZlcG9pbnQsCmFuIGluZGV4IGNyZWF0ZWQs IHJlaW5kZXhlZCBvciBhbHJlYWR5IGNvcGllZCBiZWZvcmUgdGhlIHNhdmVwb2ludApyZXR1cm5z IG5vIHJvdyBmb3IgdGhlIHJvbGxlZC1iYWNrIHZhbHVlcy4KCkJ1ZzogIzE5Njg2ClJlcG9ydGVk LWJ5OiBBbGV4YW5kZXIgTGFraGluClN1Z2dlc3RlZC1ieTogQW5kcmVzIEZyZXVuZApSZXZpZXdl ZC1ieTogQWxleGFuZHJlIEZlbGlwZQpSZXZpZXdlZC1ieTogU2hpaGFvIFpob25nCi0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgfCAxNTAgKysrKysrKysrKysr KysrKysrKystCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICB8ICAx NyArKysKIHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL3Rjb3AvdXRpbGl0eS5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3Jl Z3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UgIHwgMTAyICsrKysrKysrKysrKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UgfCAxNTMgKysrKysrKysrKysr KysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA0MjAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGU0NDViODAxYTZiLi43N2U3YmM0 ZDEwNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTg5LDYgKzg5LDcgQEAKICNpbmNs dWRlICJ0Y29wL3V0aWxpdHkuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2V2dGNhY2hlLmgiCiAjaW5jbHVkZSAi dXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgpAQCAtNTQ5LDcgKzU1MCwxMSBAQCBzdGF0aWMgdm9pZCBBVEV4ZWNE cm9wQ2x1c3RlcihSZWxhdGlvbiByZWwsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyBib29s IEFUUHJlcENoYW5nZVBlcnNpc3RlbmNlKFJlbGF0aW9uIHJlbCwgYm9vbCB0b0xvZ2dlZCk7CiBz dGF0aWMgdm9pZCBBVFByZXBTZXRUYWJsZVNwYWNlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVs YXRpb24gcmVsLAogCQkJCQkJCQljb25zdCBjaGFyICp0YWJsZXNwYWNlbmFtZSwgTE9DS01PREUg bG9ja21vZGUpOwotc3RhdGljIHZvaWQgQVRFeGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQs IE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSk7CitzdGF0aWMgdm9pZCBBVEV4 ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tNT0RF IGxvY2ttb2RlLAorCQkJCQkJCQlib29sIGNvcHlJbmRleGVzKTsKK3N0YXRpYyBib29sIEFUU2V0 VGFibGVTcGFjZUNvcHlJbmRleGVzKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsIExpc3QgKndx dWV1ZSwKKwkJCQkJCQkJCSAgIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7Citz dGF0aWMgdm9pZCBBVEV4ZWNTZXRUYWJsZVNwYWNlTmV3SW5kZXhSZWxmaWxlbm9kZShPaWQgaW5k ZXhPaWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyB2b2lkIEFURXhlY1NldFRhYmxlU3Bh Y2VOb1N0b3JhZ2UoUmVsYXRpb24gcmVsLCBPaWQgbmV3VGFibGVTcGFjZSk7CiBzdGF0aWMgdm9p ZCBBVEV4ZWNTZXRSZWxPcHRpb25zKFJlbGF0aW9uIHJlbCwgTGlzdCAqZGVmTGlzdCwKIAkJCQkJ CQkJQWx0ZXJUYWJsZVR5cGUgb3BlcmF0aW9uLApAQCAtNTU4Miw3ICs1NTg3LDkgQEAgQVRSZXdy aXRlVGFibGVzKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsIExpc3QgKip3cXVldWUsIExPQ0tN T0RFIGxvY2ttb2RlLAogCQkJICoganVzdCBkbyBhIGJsb2NrLWJ5LWJsb2NrIGNvcHkuCiAJCQkg Ki8KIAkJCWlmICh0YWItPm5ld1RhYmxlU3BhY2UpCi0JCQkJQVRFeGVjU2V0VGFibGVTcGFjZSh0 YWItPnJlbGlkLCB0YWItPm5ld1RhYmxlU3BhY2UsIGxvY2ttb2RlKTsKKwkJCQlBVEV4ZWNTZXRU YWJsZVNwYWNlKHRhYi0+cmVsaWQsIHRhYi0+bmV3VGFibGVTcGFjZSwgbG9ja21vZGUsCisJCQkJ CQkJCQlBVFNldFRhYmxlU3BhY2VDb3B5SW5kZXhlcyhwYXJzZXRyZWUsICp3cXVldWUsCisJCQkJ CQkJCQkJCQkJCQkgICBjb250ZXh0KSk7CiAJCX0KIAl9CiAKQEAgLTE0MTk4LDEzICsxNDIwNSwx NiBAQCBBVEV4ZWNTZXRSZWxPcHRpb25zKFJlbGF0aW9uIHJlbCwgTGlzdCAqZGVmTGlzdCwgQWx0 ZXJUYWJsZVR5cGUgb3BlcmF0aW9uLAogICogcmV3cml0aW5nIHRvIGJlIGRvbmUsIHNvIHdlIGp1 c3Qgd2FudCB0byBjb3B5IHRoZSBkYXRhIGFzIGZhc3QgYXMgcG9zc2libGUuCiAgKi8KIHN0YXRp YyB2b2lkCi1BVEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3Bh Y2UsIExPQ0tNT0RFIGxvY2ttb2RlKQorQVRFeGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQs IE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSwKKwkJCQkJYm9vbCBjb3B5SW5k ZXhlcykKIHsKIAlSZWxhdGlvbglyZWw7CiAJT2lkCQkJcmVsdG9hc3RyZWxpZDsKKwljaGFyCQly ZWxraW5kOwogCU9pZAkJCW5ld3JlbGZpbGVub2RlOwogCVJlbEZpbGVOb2RlIG5ld3Jub2RlOwog CUxpc3QJICAgKnJlbHRvYXN0aWR4aWRzID0gTklMOworCUxpc3QJICAgKnJlbHRhYmlkeGlkcyA9 IE5JTDsKIAlMaXN0Q2VsbCAgICpsYzsKIAogCS8qCkBAIC0xNDIyMiw2ICsxNDIzMiw3IEBAIEFU RXhlY1NldFRhYmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01P REUgbG9ja21vZGUpCiAJfQogCiAJcmVsdG9hc3RyZWxpZCA9IHJlbC0+cmRfcmVsLT5yZWx0b2Fz dHJlbGlkOworCXJlbGtpbmQgPSByZWwtPnJkX3JlbC0+cmVsa2luZDsKIAkvKiBGZXRjaCB0aGUg bGlzdCBvZiBpbmRleGVzIG9uIHRvYXN0IHJlbGF0aW9uIGlmIG5lY2Vzc2FyeSAqLwogCWlmIChP aWRJc1ZhbGlkKHJlbHRvYXN0cmVsaWQpKQogCXsKQEAgLTE0MjcwLDYgKzE0MjgxLDE0IEBAIEFU RXhlY1NldFRhYmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01P REUgbG9ja21vZGUpCiAKIAlSZWxhdGlvbkFzc3VtZU5ld1JlbGZpbGVub2RlKHJlbCk7CiAKKwkv KgorCSAqIElmIHRoaXMgaXMgYSB0YWJsZSwgY29sbGVjdCBpdHMgaW5kZXggbGlzdCBub3csIHdo aWxlIHRoZSByZWxhdGlvbiBpcworCSAqIHN0aWxsIG9wZW4sIHNvIHdlIGNhbiBnaXZlIGVhY2gg aW5kZXggYSBmcmVzaCByZWxmaWxlbm9kZSBiZWxvdy4KKwkgKi8KKwlpZiAoY29weUluZGV4ZXMg JiYKKwkJKHJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiB8fCByZWxraW5kID09IFJFTEtJTkRf TUFUVklFVykpCisJCXJlbHRhYmlkeGlkcyA9IFJlbGF0aW9uR2V0SW5kZXhMaXN0KHJlbCk7CisK IAlyZWxhdGlvbl9jbG9zZShyZWwsIE5vTG9jayk7CiAKIAkvKiBNYWtlIHN1cmUgdGhlIHJlbHRh Ymxlc3BhY2UgY2hhbmdlIGlzIHZpc2libGUgKi8KQEAgLTE0Mjc3LDEyICsxNDI5NiwxMzMgQEAg QVRFeGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQsIE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NL TU9ERSBsb2NrbW9kZSkKIAogCS8qIE1vdmUgYXNzb2NpYXRlZCB0b2FzdCByZWxhdGlvbiBhbmQv b3IgaW5kZXhlcywgdG9vICovCiAJaWYgKE9pZElzVmFsaWQocmVsdG9hc3RyZWxpZCkpCi0JCUFU RXhlY1NldFRhYmxlU3BhY2UocmVsdG9hc3RyZWxpZCwgbmV3VGFibGVTcGFjZSwgbG9ja21vZGUp OworCQlBVEV4ZWNTZXRUYWJsZVNwYWNlKHJlbHRvYXN0cmVsaWQsIG5ld1RhYmxlU3BhY2UsIGxv Y2ttb2RlLCBjb3B5SW5kZXhlcyk7CiAJZm9yZWFjaChsYywgcmVsdG9hc3RpZHhpZHMpCi0JCUFU RXhlY1NldFRhYmxlU3BhY2UobGZpcnN0X29pZChsYyksIG5ld1RhYmxlU3BhY2UsIGxvY2ttb2Rl KTsKKwkJQVRFeGVjU2V0VGFibGVTcGFjZShsZmlyc3Rfb2lkKGxjKSwgbmV3VGFibGVTcGFjZSwg bG9ja21vZGUsIGNvcHlJbmRleGVzKTsKIAogCS8qIENsZWFuIHVwICovCiAJbGlzdF9mcmVlKHJl bHRvYXN0aWR4aWRzKTsKKworCS8qCisJICogVGhlIGhlYXAgbm93IGhhcyBhIG5ldyByZWxmaWxl bm9kZS4gIEdpdmUgZWFjaCBvZiB0aGUgdGFibGUncyBpbmRleGVzIGEKKwkgKiBmcmVzaCByZWxm aWxlbm9kZSB0b28sIHNvIHRoYXQgdGhlIGluZGV4ZXMgc2hhcmUgdGhlIGhlYXAncyByZXdyaXRl IGZhdGUKKwkgKiBhY3Jvc3MgY29tbWl0IGFuZCBhYm9ydC4gIFNlZSBBVEV4ZWNTZXRUYWJsZVNw YWNlTmV3SW5kZXhSZWxmaWxlbm9kZS4KKwkgKi8KKwlmb3JlYWNoKGxjLCByZWx0YWJpZHhpZHMp CisJCUFURXhlY1NldFRhYmxlU3BhY2VOZXdJbmRleFJlbGZpbGVub2RlKGxmaXJzdF9vaWQobGMp LCBsb2NrbW9kZSk7CisJbGlzdF9mcmVlKHJlbHRhYmlkeGlkcyk7Cit9CisKKy8qCisgKiBEb2Vz IEFMVEVSIFRBQkxFIFNFVCBUQUJMRVNQQUNFIG5lZWQgdG8gZ2l2ZSB0aGUgdGFibGUncyBpbmRl eGVzIG5ldyBmaWxlcz8KKyAqCisgKiBPbmx5IGlmIHNvbWV0aGluZyBjYW4gc3RpbGwgbW9kaWZ5 IHRoZSB0YWJsZSBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbiBhZnRlcgorICogdGhlIG1vdmUuICBS YXRoZXIgdGhhbiBsaXN0aW5nIGV2ZXJ5IHBsYWNlIHdoZXJlIHVzZXIgY29kZSBjYW4gcnVuIGFm dGVyCisgKiBpdCAtLSB0aGUgdmFsaWRhdGlvbiBvZiBvdGhlciB0YWJsZXMgaW4gdGhlIHdvcmsg cXVldWUsIHN1Y2ggYXMgYW4KKyAqIGluaGVyaXRhbmNlIGNoaWxkIGdldHRpbmcgYSBuZXcgQ0hF Q0sgY29uc3RyYWludCwgZm9yZWlnbiBrZXkgdmFsaWRhdGlvbiwKKyAqIHNxbF9kcm9wIGFuZCB0 YWJsZV9yZXdyaXRlIGV2ZW50IHRyaWdnZXJzLCBhbmQgbW9yZSAtLSB0aGUgZmlsZXMgYXJlIGtl cHQKKyAqIG9ubHkgZm9yIHRoZSBvbmUgY2FzZSB3aGVyZSBub25lIG9mIHRoZW0gZXhpc3RzOiBh IHBsYWluCisgKiAiQUxURVIgVEFCTEUgLi4uIFNFVCBUQUJMRVNQQUNFIiBvZiBhIHNpbmdsZSB0 YWJsZSwgd2l0aCBubyBvdGhlcgorICogc3ViY29tbWFuZCwgc2VudCBieSBhIGNsaWVudCBhcyB0 aGUgb25seSBzdGF0ZW1lbnQgb2YgYSBzaW1wbGUgUXVlcnkKKyAqIG1lc3NhZ2UsIG91dHNpZGUg YW55IHRyYW5zYWN0aW9uIGJsb2NrOiB0aGUgdHJhbnNhY3Rpb24gdGhlbiBlbmRzIHJpZ2h0Cisg KiBhZnRlciBpdC4gIFdoYXQgY2FuIHN0aWxsIHJ1biBhZnRlciBpdCBpcyBhIGRkbF9jb21tYW5k X2VuZCBldmVudCB0cmlnZ2VyLAorICogc28gdGhhdCBjYXNlIGFsc28gcmVxdWlyZXMgdGhhdCB0 aGVyZSBpcyBub25lLgorICoKKyAqIEEgc3RhdGVtZW50IHNlbnQgYnkgYW4gZXh0ZW5kZWQtcHJv dG9jb2wgRXhlY3V0ZSBtZXNzYWdlIGFsd2F5cyBjb3BpZXM6CisgKiBsYXRlciBzdGF0ZW1lbnRz IG9mIHRoZSBzYW1lIHBpcGVsaW5lIHNoYXJlIGl0cyB0cmFuc2FjdGlvbiB1bnRpbCB0aGUgbmV4 dAorICogU3luYywgYW5kIHRoZSBiYWNrZW5kIGNhbm5vdCB0ZWxsIHdoZXRoZXIgYW55IHdpbGwg Zm9sbG93LiAgRm9yY2luZyBhIGNvbW1pdAorICogYWZ0ZXIgdGhlIEFMVEVSIHdvdWxkIG1ha2Ug aXQgY29tbWl0IG9uIGl0cyBvd24gd2hlbiBhIGxhdGVyIHN0YXRlbWVudCBvZgorICogdGhlIHBp cGVsaW5lIGZhaWxzLCB3aGljaCBpcyBub3QgaG93IEFMVEVSIFRBQkxFIGJlaGF2ZXMgb3RoZXJ3 aXNlLgorICovCitzdGF0aWMgYm9vbAorQVRTZXRUYWJsZVNwYWNlQ29weUluZGV4ZXMoQWx0ZXJU YWJsZVN0bXQgKnBhcnNldHJlZSwgTGlzdCAqd3F1ZXVlLAorCQkJCQkJICAgQWx0ZXJUYWJsZVV0 aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCWlmIChjb250ZXh0ID09IE5VTEwgfHwgSXNJblRy YW5zYWN0aW9uQmxvY2soY29udGV4dC0+aXNUb3BMZXZlbCkpCisJCXJldHVybiB0cnVlOworCWlm IChNeUJhY2tlbmRUeXBlICE9IEJfQkFDS0VORCB8fCBJc0V4dGVuZGVkUXVlcnlNZXNzYWdlKCkp CisJCXJldHVybiB0cnVlOworCWlmIChwYXJzZXRyZWUgPT0gTlVMTCB8fCBsaXN0X2xlbmd0aChw YXJzZXRyZWUtPmNtZHMpICE9IDEgfHwKKwkJY2FzdE5vZGUoQWx0ZXJUYWJsZUNtZCwgbGluaXRp YWwocGFyc2V0cmVlLT5jbWRzKSktPnN1YnR5cGUgIT0gQVRfU2V0VGFibGVTcGFjZSB8fAorCQls aXN0X2xlbmd0aCh3cXVldWUpICE9IDEpCisJCXJldHVybiB0cnVlOworCWlmIChFdmVudENhY2hl TG9va3VwKEVWVF9ERExDb21tYW5kRW5kKSAhPSBOSUwpCisJCXJldHVybiB0cnVlOworCisJcmV0 dXJuIGZhbHNlOworfQorCisvKgorICogR2l2ZSBvbmUgb2YgYSB0YWJsZSdzIGluZGV4ZXMgYSBm cmVzaCByZWxmaWxlbm9kZSB3aXRoaW4gaXRzIGV4aXN0aW5nCisgKiB0YWJsZXNwYWNlLCBjb3B5 aW5nIHRoZSBjdXJyZW50IGluZGV4IGZpbGUgdG8gdGhlIG5ldyByZWxmaWxlbm9kZS4KKyAqCisg KiBBVEV4ZWNTZXRUYWJsZVNwYWNlKCkgY2FsbHMgdGhpcyBmb3IgZWFjaCBpbmRleCBvZiBhIHRh YmxlIHdob3NlIGhlYXAgaXQgaGFzCisgKiBqdXN0IHJld3JpdHRlbiB0byBhIG5ldyByZWxmaWxl bm9kZS4gIFRoZSBpbmRleGVzIG11c3Qgc2hhcmUgdGhlIGhlYXAncworICogdHJhbnNhY3Rpb25h bCBmYXRlOiBhbiBhYm9ydCBoYXMgdG8gZGlzY2FyZCB0aGUgaW5kZXggZW50cmllcyB3cml0dGVu IGR1cmluZworICogdGhlIHRyYW5zYWN0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIGhlYXAncyBuZXcg ZmlsZSwgc2luY2UgdGhlIGhlYXAgVElEcyB0aG9zZQorICogZW50cmllcyBwb2ludCBhdCBhcmUg ZnJlZWQgYnkgdGhlIGFib3J0IGFuZCBjYW4gYmUgcmV1c2VkIGJ5IGxhdGVyIGluc2VydHMuCisg KiBDb3B5aW5nIHRoZSBleGlzdGluZyBpbmRleCBmaWxlIGtlZXBzIHRoZSBhZGRlZCBjb3N0IGNs b3NlIHRvIHRoYXQgb2YgdGhlCisgKiBoZWFwIG1vdmUgaXRzZWxmOyB0aGUgaW5kZXggc3RheXMg aW4gaXRzIG93biB0YWJsZXNwYWNlLCBhcyBkb2N1bWVudGVkLgorICovCitzdGF0aWMgdm9pZAor QVRFeGVjU2V0VGFibGVTcGFjZU5ld0luZGV4UmVsZmlsZW5vZGUoT2lkIGluZGV4T2lkLCBMT0NL TU9ERSBsb2NrbW9kZSkKK3sKKwlSZWxhdGlvbglpbmQ7CisJT2lkCQkJbmV3cmVsZmlsZW5vZGU7 CisJUmVsRmlsZU5vZGUgbmV3cm5vZGU7CisJUmVsYXRpb24JcGdfY2xhc3M7CisJSGVhcFR1cGxl CXR1cGxlOworCUl0ZW1Qb2ludGVyRGF0YSBvdGlkOworCUZvcm1fcGdfY2xhc3MgcmRfcmVsOwor CisJaW5kID0gcmVsYXRpb25fb3BlbihpbmRleE9pZCwgbG9ja21vZGUpOworCisJLyoKKwkgKiBP bmx5IHBsYWluIGluZGV4ZXMgaGF2ZSBzdG9yYWdlIHRoYXQgY2FuIGhvbGQgdGhlIHN0YWxlIGVu dHJpZXMuICBBbgorCSAqIGluZGV4IHdob3NlIGN1cnJlbnQgZmlsZSB3YXMgY3JlYXRlZCBpbiB0 aGlzIHN1YnRyYW5zYWN0aW9uICh0aGUgaW5kZXgKKwkgKiBpdHNlbGYsIG9yIGEgbmV3IGZpbGUg Zm9yIGl0KSBpcyBkaXNjYXJkZWQgdG9nZXRoZXIgd2l0aCB0aGUgaGVhcCdzIG5ldworCSAqIGZp bGUgb24gYWJvcnQsIHNvIGl0IG5lZWRzIG5vIGNvcHkuICByZF9uZXdSZWxmaWxlbm9kZVN1Ymlk IGNhbiBiZSB6ZXJvCisJICogYWZ0ZXIgYSByb2xsYmFjayB0byBhIHNhdmVwb2ludCBldmVuIHRo b3VnaCB0aGUgZmlsZSBpcyBuZXc7IHRoZW4gdGhpcworCSAqIGZhbGxzIGJhY2sgdG8gcmRfY3Jl YXRlU3ViaWQsIGFuZCBjb3BpZXMgaWYgdGhhdCBkb2VzIG5vdCBtYXRjaCBlaXRoZXIuCisJICov CisJaWYgKGluZC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfSU5ERVggfHwKKwkJIVJFTEtJ TkRfSEFTX1NUT1JBR0UoaW5kLT5yZF9yZWwtPnJlbGtpbmQpIHx8CisJCU1heChpbmQtPnJkX25l d1JlbGZpbGVub2RlU3ViaWQsIGluZC0+cmRfY3JlYXRlU3ViaWQpID09CisJCUdldEN1cnJlbnRT dWJUcmFuc2FjdGlvbklkKCkpCisJeworCQlyZWxhdGlvbl9jbG9zZShpbmQsIE5vTG9jayk7CisJ CXJldHVybjsKKwl9CisKKwkvKiBBbGxvY2F0ZSBhIG5ldyByZWxmaWxlbm9kZSBpbiB0aGUgaW5k ZXgncyBjdXJyZW50IHRhYmxlc3BhY2UuICovCisJbmV3cmVsZmlsZW5vZGUgPSBHZXROZXdSZWxG aWxlTm9kZShpbmQtPnJkX3JlbC0+cmVsdGFibGVzcGFjZSwgTlVMTCwKKwkJCQkJCQkJCQkgICBp bmQtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpOworCW5ld3Jub2RlID0gaW5kLT5yZF9ub2RlOwor CW5ld3Jub2RlLnJlbE5vZGUgPSBuZXdyZWxmaWxlbm9kZTsKKworCS8qIENvcHkgdGhlIGluZGV4 IGludG8gdGhlIG5ldyBmaWxlIGFuZCBzY2hlZHVsZSB0aGUgb2xkIG9uZSBmb3IgY2xlYW51cC4g Ki8KKwlpbmRleF9jb3B5X2RhdGEoaW5kLCBuZXdybm9kZSk7CisKKwkvKiBVcGRhdGUgdGhlIHBn X2NsYXNzIHJvdzsgb25seSB0aGUgcmVsZmlsZW5vZGUgY2hhbmdlcy4gKi8KKwlwZ19jbGFzcyA9 IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXBs ZSA9IFNlYXJjaFN5c0NhY2hlTG9ja2VkQ29weTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKGlu ZGV4T2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwgaW5kZXhPaWQpOworCW90aWQgPSB0 dXBsZS0+dF9zZWxmOworCXJkX3JlbCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUp OworCXJkX3JlbC0+cmVsZmlsZW5vZGUgPSBuZXdyZWxmaWxlbm9kZTsKKwlDYXRhbG9nVHVwbGVV cGRhdGUocGdfY2xhc3MsICZvdGlkLCB0dXBsZSk7CisJVW5sb2NrVHVwbGUocGdfY2xhc3MsICZv dGlkLCBJbnBsYWNlVXBkYXRlVHVwbGVMb2NrKTsKKwloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CisJ dGFibGVfY2xvc2UocGdfY2xhc3MsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJSW52b2tlT2JqZWN0 UG9zdEFsdGVySG9vayhSZWxhdGlvblJlbGF0aW9uSWQsIGluZGV4T2lkLCAwKTsKKwlSZWxhdGlv bkFzc3VtZU5ld1JlbGZpbGVub2RlKGluZCk7CisKKwlyZWxhdGlvbl9jbG9zZShpbmQsIE5vTG9j ayk7CisKKwkvKiBNYWtlIHRoZSByZWxmaWxlbm9kZSBjaGFuZ2UgdmlzaWJsZS4gKi8KKwlDb21t YW5kQ291bnRlckluY3JlbWVudCgpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDBlNjRi MDRiZDE2Li4zNGI4MmNiYjI0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMjMwOSw2ICsyMzA5LDIz IEBAIGNoZWNrX2xvZ19zdGF0ZW1lbnQoTGlzdCAqc3RtdF9saXN0KQogCXJldHVybiBmYWxzZTsK IH0KIAorLyoKKyAqIElzRXh0ZW5kZWRRdWVyeU1lc3NhZ2UKKyAqCQlJcyB0aGUgY3VycmVudCBz dGF0ZW1lbnQgYmVpbmcgcnVuIGJ5IGFuIGV4dGVuZGVkLXF1ZXJ5LXByb3RvY29sCisgKgkJbWVz c2FnZT8KKyAqCisgKiBTdWNoIGEgc3RhdGVtZW50IHNoYXJlcyBpdHMgaW1wbGljaXQgdHJhbnNh Y3Rpb24gd2l0aCB3aGF0ZXZlciBlbHNlIHRoZQorICogY2xpZW50IHNlbmRzIGJlZm9yZSB0aGUg bmV4dCBTeW5jLCB3aGljaCB0aGUgYmFja2VuZCBjYW5ub3Qga25vdyB3aGlsZSBpdAorICogcnVu cyB0aGUgc3RhdGVtZW50LiAgVGhlIGZpcnN0IHN0YXRlbWVudCBvZiBhIHBpcGVsaW5lIGNhbm5v dCBiZSB0b2xkIGZyb20KKyAqIG9uZSBmb2xsb3dlZCBkaXJlY3RseSBieSBTeW5jOiBYQUNUX0ZM QUdTX1BJUEVMSU5JTkcgaXMgc2V0IG9ubHkgb25jZSBhbgorICogRXhlY3V0ZSBjb21wbGV0ZXMu CisgKi8KK2Jvb2wKK0lzRXh0ZW5kZWRRdWVyeU1lc3NhZ2Uodm9pZCkKK3sKKwlyZXR1cm4gZG9p bmdfZXh0ZW5kZWRfcXVlcnlfbWVzc2FnZTsKK30KKwogLyoKICAqIGNoZWNrX2xvZ19kdXJhdGlv bgogICoJCURldGVybWluZSB3aGV0aGVyIGN1cnJlbnQgY29tbWFuZCdzIGR1cmF0aW9uIHNob3Vs ZCBiZSBsb2dnZWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3Jj L2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggNTE1MDllZmJmYzEuLmNiZmQ4MDBhZDM1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3V0aWxpdHkuYwpAQCAtMTMwOCw2ICsxMzA4LDcgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCWF0Y29udGV4dC5yZWxpZCA9IHJlbGlkOwogCQkJCQkJ YXRjb250ZXh0LnBhcmFtcyA9IHBhcmFtczsKIAkJCQkJCWF0Y29udGV4dC5xdWVyeUVudiA9IHF1 ZXJ5RW52OworCQkJCQkJYXRjb250ZXh0LmlzVG9wTGV2ZWwgPSBpc1RvcExldmVsOwogCiAJCQkJ CQkvKiAuLi4gZW5zdXJlIHdlIGhhdmUgYW4gZXZlbnQgdHJpZ2dlciBjb250ZXh0IC4uLiAqLwog CQkJCQkJRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0KHBhcnNldHJlZSk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmggYi9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90 LmgKaW5kZXggMDBkYTVlNjZlNzAuLmU4NWU0N2IyNDFjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS90Y29wL3Rjb3Bwcm90LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oCkBAIC05 MCw2ICs5MCw3IEBAIGV4dGVybiB2b2lkIFBvc3RncmVzTWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdLAogZXh0ZXJuIGxvbmcgZ2V0X3N0YWNrX2RlcHRoX3JsaW1pdCh2b2lkKTsKIGV4dGVybiB2 b2lkIFJlc2V0VXNhZ2Uodm9pZCk7CiBleHRlcm4gdm9pZCBTaG93VXNhZ2UoY29uc3QgY2hhciAq dGl0bGUpOworZXh0ZXJuIGJvb2wgSXNFeHRlbmRlZFF1ZXJ5TWVzc2FnZSh2b2lkKTsKIGV4dGVy biBpbnQJY2hlY2tfbG9nX2R1cmF0aW9uKGNoYXIgKm1zZWNfc3RyLCBib29sIHdhc19sb2dnZWQp OwogZXh0ZXJuIHZvaWQgc2V0X2RlYnVnX29wdGlvbnMoaW50IGRlYnVnX2ZsYWcsCiAJCQkJCQkJ ICBHdWNDb250ZXh0IGNvbnRleHQsIEd1Y1NvdXJjZSBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdGNvcC91dGlsaXR5LmggYi9zcmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaAppbmRl eCAyMTJlOWIzMjgwNi4uN2NkOWE4OTFkMmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3Av dXRpbGl0eS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oCkBAIC0zNCw2ICszNCw3 IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dAogCU9pZAkJCXJlbGlk OwkJCS8qIE9JRCBvZiBBTFRFUidzIHRhcmdldCB0YWJsZSAqLwogCVBhcmFtTGlzdEluZm8gcGFy YW1zOwkJLyogYW55IHBhcmFtZXRlcnMgYXZhaWxhYmxlIHRvIEFMVEVSIFRBQkxFICovCiAJUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnY7IC8qIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCBmb3IgQUxU RVIgVEFCTEUgKi8KKwlib29sCQlpc1RvcExldmVsOwkJLyogQUxURVIgVEFCTEUgaXMgYSB0b3At bGV2ZWwgc3RhdGVtZW50ICovCiB9IEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dDsKIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UgYi9zcmMv dGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCmluZGV4IGZkMDAzZDgwNWU3Li5h NmQ2OTlmNGI2NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNl LnNvdXJjZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCkBA IC00MDAsNiArNDAwLDEwOCBAQCBSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2Up IFRBQkxFIHRhYmxlc3BhY2VfdGFibGU7IC0tIGZhaWwKIFJFSU5ERVggKFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZSwgQ09OQ1VSUkVOVExZKSBUQUJMRSB0YWJsZXNwYWNlX3RhYmxlOyAtLSBm YWlsCiBSRVNFVCBST0xFOwogCistLSBBTFRFUiBUQUJMRSBTRVQgVEFCTEVTUEFDRSBtb3ZlcyB0 aGUgaGVhcCBhbmQgbGVhdmVzIHRoZSBpbmRleGVzIGluIHRoZWlyCistLSB0YWJsZXNwYWNlLiAg UnVuIG9uIGl0cyBvd24sIGFzIGhlcmUsIGl0IGxlYXZlcyB0aGVpciBmaWxlcyBhbG9uZSB0b28u CitDUkVBVEUgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayAoYSBpbnQpOworSU5TRVJUIElOVE8gdGJz cGFjZV9yb2xsYmFjayBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCk7CitDUkVBVEUgSU5E RVggdGJzcGFjZV9yb2xsYmFja19pZHggT04gdGJzcGFjZV9yb2xsYmFjayAoYSk7CitTRUxFQ1Qg cGdfcmVsYXRpb25fc2l6ZSgndGJzcGFjZV9yb2xsYmFja19pZHgnKSBBUyBpZHhfc2l6ZV9iZWZv cmUgXGdzZXQKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19p ZHgnKSBBUyBpZHhfcGF0aCBcZ3NldAorQUxURVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayBTRVQg VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRo KCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpID0gOidpZHhfcGF0aCcgQVMgaWR4X2ZpbGVfa2VwdDsK Ky0tIEluIGEgdHJhbnNhY3Rpb24gYmxvY2sgdGhlIGluZGV4ZXMgZ2V0IG5ldyBmaWxlcywgc28g dGhhdCBhIHJvbGxiYWNrCistLSBkaXNjYXJkcyB0aGUgZW50cmllcyBhZGRlZCBhZnRlciB0aGUg bW92ZSB0b2dldGhlciB3aXRoIHRoZSBoZWFwJ3MgZmlsZS4KK0JFR0lOOworQUxURVIgVEFCTEUg dGJzcGFjZV9yb2xsYmFjayBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0OworU0VMRUNUIHBnX3Jl bGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpIDw+IDonaWR4X3BhdGgnIEFT IGlkeF9maWxlX25ldzsKK0lOU0VSVCBJTlRPIHRic3BhY2Vfcm9sbGJhY2sgU0VMRUNUIGdlbmVy YXRlX3NlcmllcygxMDEsIDIwMDApOworU0VMRUNUIHBnX3JlbGF0aW9uX3NpemUoJ3Ric3BhY2Vf cm9sbGJhY2tfaWR4JykgPiA6aWR4X3NpemVfYmVmb3JlIEFTIGlkeF9ncmV3OworUk9MTEJBQ0s7 CitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6ZSgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA9IDppZHhf c2l6ZV9iZWZvcmUgQVMgaWR4X3NpemVfcmVzdG9yZWQ7CistLSB0aGUgc2FtZSBmb3IgYSBUUlVO Q0FURSBhZnRlciB0aGUgbW92ZSwgd2hpY2ggaXMgZG9uZSBpbiBwbGFjZQorQkVHSU47CitBTFRF UiBUQUJMRSB0YnNwYWNlX3JvbGxiYWNrIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitUUlVO Q0FURSB0YnNwYWNlX3JvbGxiYWNrOworUk9MTEJBQ0s7CitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6 ZSgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA9IDppZHhfc2l6ZV9iZWZvcmUgQVMgaWR4X3NpemVf cmVzdG9yZWQ7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0YnNwYWNlX3JvbGxiYWNrOworLS0gQW4g aW5kZXggY3JlYXRlZCBpbiB0aGUgc2FtZSBzdWJ0cmFuc2FjdGlvbiBpcyBkaXNjYXJkZWQgd2l0 aCB0aGUgaGVhcAorLS0gYW55d2F5IGFuZCBpcyBub3QgY29waWVkLiAgTW92aW5nIHRoZSBpbmRl eGVzIGZpcnN0IGFuZCB0aGVuIHRoZSB0YWJsZQorLS0gY29waWVzIGVhY2ggaW5kZXggb25seSBv bmNlLgorQkVHSU47CitDUkVBVEUgSU5ERVggdGJzcGFjZV9yb2xsYmFja19pZHgyIE9OIHRic3Bh Y2Vfcm9sbGJhY2sgKGEpOworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3Jv bGxiYWNrX2lkeDInKSBBUyBpZHgyX3BhdGggXGdzZXQKK0FMVEVSIElOREVYIHRic3BhY2Vfcm9s bGJhY2tfaWR4IFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitTRUxFQ1QgcGdfcmVs YXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgQVMgaWR4X21vdmVkX3BhdGgg XGdzZXQKK0FMVEVSIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVm YXVsdDsKK1NFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgy JykgPSA6J2lkeDJfcGF0aCcgQVMgaWR4Ml9ub3RfY29waWVkLAorICBwZ19yZWxhdGlvbl9maWxl cGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA9IDonaWR4X21vdmVkX3BhdGgnIEFTIGlkeF9u b3RfY29waWVkX2FnYWluOworUk9MTEJBQ0s7CitEUk9QIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2s7 CistLSBBbiBpbmRleCBmaWxlIHRoYXQgaXMgbmV3IGluIHRoaXMgdHJhbnNhY3Rpb24gYnV0IG9s ZGVyIHRoYW4gYSBzYXZlcG9pbnQKKy0tIHN1cnZpdmVzIGEgcm9sbGJhY2sgdG8gaXQsIHNvIGl0 IG11c3Qgc3RpbGwgZm9sbG93IGEgbW92ZSBtYWRlIGFmdGVyIHRoZQorLS0gc2F2ZXBvaW50OiBh biBpbmRleCBjcmVhdGVkIG9yIHJlaW5kZXhlZCBiZWZvcmUgaXQsIG9yIGFscmVhZHkgY29waWVk IGJ5CistLSBhbiBlYXJsaWVyIG1vdmUuICBSb3dzIGluc2VydGVkIGFmdGVyd2FyZHMgcmV1c2Ug dGhlIFRJRHMgZnJlZWQgYnkgdGhlCistLSByb2xsYmFja3M7IGEgc3RhbGUgaW5kZXggZW50cnkg d291bGQgbWF0Y2ggdGhlbS4KK0NSRUFURSBUQUJMRSB0YnNwYWNlX3N1YnhhY3QgKGEgaW50KTsK K0lOU0VSVCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MCk7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBv ZmY7CitCRUdJTjsKK0NSRUFURSBJTkRFWCB0YnNwYWNlX3N1YnhhY3RfaWR4IE9OIHRic3BhY2Vf c3VieGFjdCAoYSk7CitTQVZFUE9JTlQgczsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfc3VieGFjdCBT RVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4 YWN0IFNFTEVDVCAtZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKTsKK1JPTExCQUNLIFRPIHM7CitDT01N SVQ7CitCRUdJTjsKK1JFSU5ERVggSU5ERVggdGJzcGFjZV9zdWJ4YWN0X2lkeDsKK1NBVkVQT0lO VCBzOworQUxURVIgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0IFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3Nf dGJsc3BhY2U7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1YnhhY3QgU0VMRUNUIC1nZW5lcmF0ZV9z ZXJpZXMoMSwgNTApOworUk9MTEJBQ0sgVE8gczsKK0NPTU1JVDsKK0JFR0lOOworQUxURVIgVEFC TEUgdGJzcGFjZV9zdWJ4YWN0IFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitJTlNF UlQgSU5UTyB0YnNwYWNlX3N1YnhhY3QgVkFMVUVTICgwKTsKK1NBVkVQT0lOVCBzOworQUxURVIg VEFCTEUgdGJzcGFjZV9zdWJ4YWN0IFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitJTlNFUlQg SU5UTyB0YnNwYWNlX3N1YnhhY3QgU0VMRUNUIC1nZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworUk9M TEJBQ0sgVE8gczsKK0NPTU1JVDsKK0lOU0VSVCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1Qg Z2VuZXJhdGVfc2VyaWVzKDEwMSwgMzAwKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vf c3VieGFjdCBXSEVSRSBhIDwgMDsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vfc3VieGFj dDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitEUk9Q IFRBQkxFIHRic3BhY2Vfc3VieGFjdDsKKy0tIENvbWJpbmVkIHdpdGggYW5vdGhlciBzdWJjb21t YW5kLCB0aGUgQUxURVIgY2FuIHJ1biB1c2VyIGNvZGUgYWZ0ZXIgdGhlCistLSBtb3ZlLCBzdWNo IGFzIGEgQ0hFQ0sgY29uc3RyYWludCB2YWxpZGF0ZWQgb24gYW4gaW5oZXJpdGFuY2UgY2hpbGQg YWZ0ZXIKKy0tIHRoZSBwYXJlbnQgd2FzIG1vdmVkLCBzbyB0aGUgaW5kZXhlcyBnZXQgbmV3IGZp bGVzIGV2ZW4gb3V0c2lkZSBhCistLSB0cmFuc2FjdGlvbiBibG9jay4KK0NSRUFURSBUQUJMRSB0 YnNwYWNlX2NvbWJpbmVkIChhIGludCk7CitJTlNFUlQgSU5UTyB0YnNwYWNlX2NvbWJpbmVkIFNF TEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKTsKK0NSRUFURSBJTkRFWCB0YnNwYWNlX2NvbWJp bmVkX2lkeCBPTiB0YnNwYWNlX2NvbWJpbmVkIChhKTsKK0NSRUFURSBUQUJMRSB0YnNwYWNlX2Nv bWJpbmVkX2NoaWxkICgpIElOSEVSSVRTICh0YnNwYWNlX2NvbWJpbmVkKTsKK0lOU0VSVCBJTlRP IHRic3BhY2VfY29tYmluZWRfY2hpbGQgVkFMVUVTICg1MDAwKTsKK0NSRUFURSBGVU5DVElPTiB0 YnNwYWNlX2NvbWJpbmVkX2Noayh2IGludCkgUkVUVVJOUyBib29sIExBTkdVQUdFIHBscGdzcWwg QVMgJCQKK0JFR0lOCisgIElGIHYgPCA1MDAwIFRIRU4gUkVUVVJOIHRydWU7IEVORCBJRjsKKyAg SU5TRVJUIElOVE8gdGJzcGFjZV9jb21iaW5lZCBTRUxFQ1QgLWdlbmVyYXRlX3NlcmllcygxLCA1 MCk7CisgIFJBSVNFIEVYQ0VQVElPTiAnYWJvcnQgYWZ0ZXIgd3JpdGluZyc7CitFTkQgJCQ7CitB TFRFUiBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkIFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2UsCisgIEFERCBDT05TVFJBSU5UIHRic3BhY2VfY29tYmluZWRfayBDSEVDSyAodGJzcGFjZV9j b21iaW5lZF9jaGsoYSkpOworRFJPUCBUQUJMRSB0YnNwYWNlX2NvbWJpbmVkX2NoaWxkOworSU5T RVJUIElOVE8gdGJzcGFjZV9jb21iaW5lZCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEwMSwgMzAw KTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9m ZjsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2VfY29tYmluZWQgV0hFUkUgYSA8IDA7CitS RVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworRFJPUCBUQUJM RSB0YnNwYWNlX2NvbWJpbmVkOworRFJPUCBGVU5DVElPTiB0YnNwYWNlX2NvbWJpbmVkX2Noayhp bnQpOworCiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVOQU1FIFRPIHJlZ3Jl c3NfdGJsc3BhY2VfcmVuYW1lZDsKIAogQUxURVIgVEFCTEUgQUxMIElOIFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZV9yZW5hbWVkIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZSBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlCmluZGV4IDFiNjBiOTlmZjNlLi41MzY5 Yjk4YzhkZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5z b3VyY2UKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UKQEAg LTkyMSw2ICs5MjEsMTU5IEBAIEVSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlc3Bh Y2UgcmVncmVzc190YmxzcGFjZQogUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl LCBDT05DVVJSRU5UTFkpIFRBQkxFIHRhYmxlc3BhY2VfdGFibGU7IC0tIGZhaWwKIEVSUk9SOiAg cGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlc3BhY2UgcmVncmVzc190YmxzcGFjZQogUkVTRVQg Uk9MRTsKKy0tIEFMVEVSIFRBQkxFIFNFVCBUQUJMRVNQQUNFIG1vdmVzIHRoZSBoZWFwIGFuZCBs ZWF2ZXMgdGhlIGluZGV4ZXMgaW4gdGhlaXIKKy0tIHRhYmxlc3BhY2UuICBSdW4gb24gaXRzIG93 biwgYXMgaGVyZSwgaXQgbGVhdmVzIHRoZWlyIGZpbGVzIGFsb25lIHRvby4KK0NSRUFURSBUQUJM RSB0YnNwYWNlX3JvbGxiYWNrIChhIGludCk7CitJTlNFUlQgSU5UTyB0YnNwYWNlX3JvbGxiYWNr IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKTsKK0NSRUFURSBJTkRFWCB0YnNwYWNlX3Jv bGxiYWNrX2lkeCBPTiB0YnNwYWNlX3JvbGxiYWNrIChhKTsKK1NFTEVDVCBwZ19yZWxhdGlvbl9z aXplKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpIEFTIGlkeF9zaXplX2JlZm9yZSBcZ3NldAorU0VM RUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpIEFTIGlkeF9w YXRoIFxnc2V0CitBTFRFUiBUQUJMRSB0YnNwYWNlX3JvbGxiYWNrIFNFVCBUQUJMRVNQQUNFIHJl Z3Jlc3NfdGJsc3BhY2U7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ric3BhY2Vfcm9s bGJhY2tfaWR4JykgPSA6J2lkeF9wYXRoJyBBUyBpZHhfZmlsZV9rZXB0OworIGlkeF9maWxlX2tl cHQgCistLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIEluIGEgdHJhbnNhY3Rpb24g YmxvY2sgdGhlIGluZGV4ZXMgZ2V0IG5ldyBmaWxlcywgc28gdGhhdCBhIHJvbGxiYWNrCistLSBk aXNjYXJkcyB0aGUgZW50cmllcyBhZGRlZCBhZnRlciB0aGUgbW92ZSB0b2dldGhlciB3aXRoIHRo ZSBoZWFwJ3MgZmlsZS4KK0JFR0lOOworQUxURVIgVEFCTEUgdGJzcGFjZV9yb2xsYmFjayBTRVQg VEFCTEVTUEFDRSBwZ19kZWZhdWx0OworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNw YWNlX3JvbGxiYWNrX2lkeCcpIDw+IDonaWR4X3BhdGgnIEFTIGlkeF9maWxlX25ldzsKKyBpZHhf ZmlsZV9uZXcgCistLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworSU5TRVJUIElOVE8gdGJz cGFjZV9yb2xsYmFjayBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEwMSwgMjAwMCk7CitTRUxFQ1Qg cGdfcmVsYXRpb25fc2l6ZSgndGJzcGFjZV9yb2xsYmFja19pZHgnKSA+IDppZHhfc2l6ZV9iZWZv cmUgQVMgaWR4X2dyZXc7CisgaWR4X2dyZXcgCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitS T0xMQkFDSzsKK1NFTEVDVCBwZ19yZWxhdGlvbl9zaXplKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcp ID0gOmlkeF9zaXplX2JlZm9yZSBBUyBpZHhfc2l6ZV9yZXN0b3JlZDsKKyBpZHhfc2l6ZV9yZXN0 b3JlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIHRoZSBzYW1lIGZv ciBhIFRSVU5DQVRFIGFmdGVyIHRoZSBtb3ZlLCB3aGljaCBpcyBkb25lIGluIHBsYWNlCitCRUdJ TjsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVs dDsKK1RSVU5DQVRFIHRic3BhY2Vfcm9sbGJhY2s7CitST0xMQkFDSzsKK1NFTEVDVCBwZ19yZWxh dGlvbl9zaXplKCd0YnNwYWNlX3JvbGxiYWNrX2lkeCcpID0gOmlkeF9zaXplX2JlZm9yZSBBUyBp ZHhfc2l6ZV9yZXN0b3JlZDsKKyBpZHhfc2l6ZV9yZXN0b3JlZCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vfcm9sbGJhY2s7 CisgY291bnQgCistLS0tLS0tCisgICAxMDAKKygxIHJvdykKKworLS0gQW4gaW5kZXggY3JlYXRl ZCBpbiB0aGUgc2FtZSBzdWJ0cmFuc2FjdGlvbiBpcyBkaXNjYXJkZWQgd2l0aCB0aGUgaGVhcAor LS0gYW55d2F5IGFuZCBpcyBub3QgY29waWVkLiAgTW92aW5nIHRoZSBpbmRleGVzIGZpcnN0IGFu ZCB0aGVuIHRoZSB0YWJsZQorLS0gY29waWVzIGVhY2ggaW5kZXggb25seSBvbmNlLgorQkVHSU47 CitDUkVBVEUgSU5ERVggdGJzcGFjZV9yb2xsYmFja19pZHgyIE9OIHRic3BhY2Vfcm9sbGJhY2sg KGEpOworU0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0YnNwYWNlX3JvbGxiYWNrX2lkeDIn KSBBUyBpZHgyX3BhdGggXGdzZXQKK0FMVEVSIElOREVYIHRic3BhY2Vfcm9sbGJhY2tfaWR4IFNF VCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBh dGgoJ3Ric3BhY2Vfcm9sbGJhY2tfaWR4JykgQVMgaWR4X21vdmVkX3BhdGggXGdzZXQKK0FMVEVS IFRBQkxFIHRic3BhY2Vfcm9sbGJhY2sgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKK1NFTEVD VCBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFjZV9yb2xsYmFja19pZHgyJykgPSA6J2lkeDJf cGF0aCcgQVMgaWR4Ml9ub3RfY29waWVkLAorICBwZ19yZWxhdGlvbl9maWxlcGF0aCgndGJzcGFj ZV9yb2xsYmFja19pZHgnKSA9IDonaWR4X21vdmVkX3BhdGgnIEFTIGlkeF9ub3RfY29waWVkX2Fn YWluOworIGlkeDJfbm90X2NvcGllZCB8IGlkeF9ub3RfY29waWVkX2FnYWluIAorLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgICAgICB8IHQKKygx IHJvdykKKworUk9MTEJBQ0s7CitEUk9QIFRBQkxFIHRic3BhY2Vfcm9sbGJhY2s7CistLSBBbiBp bmRleCBmaWxlIHRoYXQgaXMgbmV3IGluIHRoaXMgdHJhbnNhY3Rpb24gYnV0IG9sZGVyIHRoYW4g YSBzYXZlcG9pbnQKKy0tIHN1cnZpdmVzIGEgcm9sbGJhY2sgdG8gaXQsIHNvIGl0IG11c3Qgc3Rp bGwgZm9sbG93IGEgbW92ZSBtYWRlIGFmdGVyIHRoZQorLS0gc2F2ZXBvaW50OiBhbiBpbmRleCBj cmVhdGVkIG9yIHJlaW5kZXhlZCBiZWZvcmUgaXQsIG9yIGFscmVhZHkgY29waWVkIGJ5CistLSBh biBlYXJsaWVyIG1vdmUuICBSb3dzIGluc2VydGVkIGFmdGVyd2FyZHMgcmV1c2UgdGhlIFRJRHMg ZnJlZWQgYnkgdGhlCistLSByb2xsYmFja3M7IGEgc3RhbGUgaW5kZXggZW50cnkgd291bGQgbWF0 Y2ggdGhlbS4KK0NSRUFURSBUQUJMRSB0YnNwYWNlX3N1YnhhY3QgKGEgaW50KTsKK0lOU0VSVCBJ TlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCk7CitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitCRUdJ TjsKK0NSRUFURSBJTkRFWCB0YnNwYWNlX3N1YnhhY3RfaWR4IE9OIHRic3BhY2Vfc3VieGFjdCAo YSk7CitTQVZFUE9JTlQgczsKK0FMVEVSIFRBQkxFIHRic3BhY2Vfc3VieGFjdCBTRVQgVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlOworSU5TRVJUIElOVE8gdGJzcGFjZV9zdWJ4YWN0IFNFTEVD VCAtZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKTsKK1JPTExCQUNLIFRPIHM7CitDT01NSVQ7CitCRUdJ TjsKK1JFSU5ERVggSU5ERVggdGJzcGFjZV9zdWJ4YWN0X2lkeDsKK1NBVkVQT0lOVCBzOworQUxU RVIgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0IFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7 CitJTlNFUlQgSU5UTyB0YnNwYWNlX3N1YnhhY3QgU0VMRUNUIC1nZW5lcmF0ZV9zZXJpZXMoMSwg NTApOworUk9MTEJBQ0sgVE8gczsKK0NPTU1JVDsKK0JFR0lOOworQUxURVIgVEFCTEUgdGJzcGFj ZV9zdWJ4YWN0IFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitJTlNFUlQgSU5UTyB0 YnNwYWNlX3N1YnhhY3QgVkFMVUVTICgwKTsKK1NBVkVQT0lOVCBzOworQUxURVIgVEFCTEUgdGJz cGFjZV9zdWJ4YWN0IFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7CitJTlNFUlQgSU5UTyB0YnNw YWNlX3N1YnhhY3QgU0VMRUNUIC1nZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworUk9MTEJBQ0sgVE8g czsKK0NPTU1JVDsKK0lOU0VSVCBJTlRPIHRic3BhY2Vfc3VieGFjdCBTRUxFQ1QgZ2VuZXJhdGVf c2VyaWVzKDEwMSwgMzAwKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRic3BhY2Vfc3VieGFjdCBX SEVSRSBhIDwgMDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitTRUxFQ1Qg Y291bnQoKikgRlJPTSB0YnNwYWNlX3N1YnhhY3Q7CisgY291bnQgCistLS0tLS0tCisgICAzMDEK KygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2Nh bjsKK0RST1AgVEFCTEUgdGJzcGFjZV9zdWJ4YWN0OworLS0gQ29tYmluZWQgd2l0aCBhbm90aGVy IHN1YmNvbW1hbmQsIHRoZSBBTFRFUiBjYW4gcnVuIHVzZXIgY29kZSBhZnRlciB0aGUKKy0tIG1v dmUsIHN1Y2ggYXMgYSBDSEVDSyBjb25zdHJhaW50IHZhbGlkYXRlZCBvbiBhbiBpbmhlcml0YW5j ZSBjaGlsZCBhZnRlcgorLS0gdGhlIHBhcmVudCB3YXMgbW92ZWQsIHNvIHRoZSBpbmRleGVzIGdl dCBuZXcgZmlsZXMgZXZlbiBvdXRzaWRlIGEKKy0tIHRyYW5zYWN0aW9uIGJsb2NrLgorQ1JFQVRF IFRBQkxFIHRic3BhY2VfY29tYmluZWQgKGEgaW50KTsKK0lOU0VSVCBJTlRPIHRic3BhY2VfY29t YmluZWQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDApOworQ1JFQVRFIElOREVYIHRic3Bh Y2VfY29tYmluZWRfaWR4IE9OIHRic3BhY2VfY29tYmluZWQgKGEpOworQ1JFQVRFIFRBQkxFIHRi c3BhY2VfY29tYmluZWRfY2hpbGQgKCkgSU5IRVJJVFMgKHRic3BhY2VfY29tYmluZWQpOworSU5T RVJUIElOVE8gdGJzcGFjZV9jb21iaW5lZF9jaGlsZCBWQUxVRVMgKDUwMDApOworQ1JFQVRFIEZV TkNUSU9OIHRic3BhY2VfY29tYmluZWRfY2hrKHYgaW50KSBSRVRVUk5TIGJvb2wgTEFOR1VBR0Ug cGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgSUYgdiA8IDUwMDAgVEhFTiBSRVRVUk4gdHJ1ZTsgRU5E IElGOworICBJTlNFUlQgSU5UTyB0YnNwYWNlX2NvbWJpbmVkIFNFTEVDVCAtZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwKTsKKyAgUkFJU0UgRVhDRVBUSU9OICdhYm9ydCBhZnRlciB3cml0aW5nJzsKK0VO RCAkJDsKK0FMVEVSIFRBQkxFIHRic3BhY2VfY29tYmluZWQgU0VUIFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZSwKKyAgQUREIENPTlNUUkFJTlQgdGJzcGFjZV9jb21iaW5lZF9rIENIRUNLICh0 YnNwYWNlX2NvbWJpbmVkX2NoayhhKSk7CitFUlJPUjogIGFib3J0IGFmdGVyIHdyaXRpbmcKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiB0YnNwYWNlX2NvbWJpbmVkX2NoayhpbnRlZ2VyKSBs aW5lIDUgYXQgUkFJU0UKK0RST1AgVEFCTEUgdGJzcGFjZV9jb21iaW5lZF9jaGlsZDsKK0lOU0VS VCBJTlRPIHRic3BhY2VfY29tYmluZWQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxMDEsIDMwMCk7 CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7 CitTRUxFQ1QgY291bnQoKikgRlJPTSB0YnNwYWNlX2NvbWJpbmVkIFdIRVJFIGEgPCAwOworIGNv dW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOwor UkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitEUk9QIFRBQkxFIHRic3BhY2VfY29tYmluZWQ7CitE Uk9QIEZVTkNUSU9OIHRic3BhY2VfY29tYmluZWRfY2hrKGludCk7CiBBTFRFUiBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2UgUkVOQU1FIFRPIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZDsKIEFM VEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCBTRVQg VEFCTEVTUEFDRSBwZ19kZWZhdWx0OwogQUxURVIgSU5ERVggQUxMIElOIFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZV9yZW5hbWVkIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7Cg== --===============1761294064175896986==--