Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t9TRZ-00AP34-3G for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Nov 2024 18:10:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1t9TRW-00BunJ-HE for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Nov 2024 18:10:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t9TRW-00BunB-0a for pgsql-hackers@lists.postgresql.org; Fri, 08 Nov 2024 18:10:46 +0000 Received: from mail-ej1-x633.google.com ([2a00:1450:4864:20::633]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t9TRR-000tDp-II for pgsql-hackers@lists.postgresql.org; Fri, 08 Nov 2024 18:10:45 +0000 Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-a99e690a3e9so35913166b.3 for ; Fri, 08 Nov 2024 10:10:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731089441; x=1731694241; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Ohg4UZcYgTCwyFELgKo7CDZKf92YFT1IgEAJ2lPUn0U=; b=bpKGo+0ePUGyDQVeGJOLGDliCEV9kX6tTv+lSLDn3CQz+wVAs+4VhBIsDGHrTyVxAy 4n05K63HqfGVnrPCNcYXTrzFstelfvpmngQtPAnvmvKWxc8x+A4m/M4MgzlMBYrDY7ex rdNc0m8SRb/ov4EuJ9BG1kG/yqrBNQnat0FiG+WiUspgVneAe6PuIZXFtqNjgp+WlDd7 y5bNA1IQsECqcQvxW3GkzMPYaW6wmjTCvSSmLfvDGrN0v+a/dWzg1frFQY2SR4ZOENOg ovOtWFXPwPSeYFdlDinRcwoZvUUfwHCBMsKxOPTeCbSiD3eHvHMOxjMhNCGafnTfcGc5 xnPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731089441; x=1731694241; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Ohg4UZcYgTCwyFELgKo7CDZKf92YFT1IgEAJ2lPUn0U=; b=ibUtar9CbBqNPObSVY1TAKvEVl9+CAVhdVol8mxhwsQsK4nkLhI5NG298Bx0SxgGog ouP0wDIC9IXZPCxqyM2MBT4GjJXzfQZ8KK7pFIfngPjm5FcftI7fC8YSZLYVUb4+36MK YoI3tF14CEsgRNGd2BdLacDXJKRk5U7QtMkJ1tKR1ib40cyhPhRYws/058MH1GH/Zo/J OgE3UaBiO+OmtKwuIDyaBzB5g52SI3J4XWVV0E7rLR/2dh7ZAu+buOiKYb4BozU4nEdS IyftkrKVRDS+7yzIB1cnBeRwDw8/hX2MB+FP/cV0CK/n4jyrNra50ON6YXrfoi2a+h5n YA1Q== X-Forwarded-Encrypted: i=1; AJvYcCU0wv8DChy2jddfKPCj6G2/Eo9/SH/D8/IvyyeU9eLhfeT7bma6XCs3BSwHIFefZ4I58NInRaC3OkSVIO5U@lists.postgresql.org X-Gm-Message-State: AOJu0Yx7BoQfINsJP3hvlcHZyYRI2Hc8tu3LtbQBqZTWPolszsotUzWJ SDIot0+TGr8vBdlgtvqF2zkxEcCBKYIj/fizD3DPi4A6idEzUC05qREWhYTfxi4WMM761KZd48I 2AA3nZJ2urXtaXMhaYyJPTAPpK+U= X-Google-Smtp-Source: AGHT+IF6afIqwjsp5slV3exfNQoedTT/s0zTc/A6wg2Bj9JB4i7fLyE9/xGH+kopJDJe+OIG8wzP5/Vr5HrS6+W8kvE= X-Received: by 2002:a17:906:f84a:b0:a9f:56:f2b5 with SMTP id a640c23a62f3a-a9f0056f5b8mr4574066b.11.1731089440674; Fri, 08 Nov 2024 10:10:40 -0800 (PST) MIME-Version: 1.0 References: <5ecc35f5-1111-47fc-8a02-36d89490a50d@iki.fi> In-Reply-To: From: Maxim Orlov Date: Fri, 8 Nov 2024 21:10:28 +0300 Message-ID: Subject: Re: POC: make mxidoff 64 bits To: wenhui qiu Cc: Heikki Linnakangas , Alexander Korotkov , Postgres hackers Content-Type: multipart/mixed; boundary="0000000000002fcd1006266aab7b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002fcd1006266aab7b Content-Type: multipart/alternative; boundary="0000000000002fcd0e06266aab79" --0000000000002fcd0e06266aab79 Content-Type: text/plain; charset="UTF-8" On Fri, 25 Oct 2024 at 06:39, wenhui qiu wrote: > > + * Multixact members warning threshold. > + * > + * If difference bettween nextOffset and oldestOffset exceed this value, > we > + * trigger autovacuum in order to release the disk space if possible. > + */ > +#define MULTIXACT_MEMBER_AUTOVAC_THRESHOLD UINT64CONST(0xFFFFFFFF) > Can we refine this annotation a bit? for example > Thank you, fixed. Sorry for a late reply. There was a problem in upgrade with offset wraparound. Here is a fixed version. Test also added. I decide to use my old patch to set a non-standard multixacts for the old cluster, fill it with data and do pg_upgrade. Here is how to test. All the patches are for 14e87ffa5c543b5f3 master branch. 1) Get the 14e87ffa5c543b5f3 master branch apply patches 0001-Add-initdb-option-to-initialize-cluster-with-non-sta.patch and 0002-TEST-lower-SLRU_PAGES_PER_SEGMENT.patch 2) Get the 14e87ffa5c543b5f3 master branch in a separate directory and apply v6 patch set. 3) Build two branches. 4) Use ENV oldinstall to run the test: PROVE_TESTS=t/005_mxidoff.pl oldinstall=/home/orlov/proj/pgsql-new PG_TEST_NOCLEAN=1 make check -C src/bin/pg_upgrade/ Maybe, I'll make a shell script to automate this steps if required. -- Best regards, Maxim Orlov. --0000000000002fcd0e06266aab79 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Fri, 25 Oct 2024 at 06:39, wenhui qiu = <qiuwenhuifx@gmail.com> = wrote:

+ * Multixact members warning threshold.
+ *
+ * If= difference bettween nextOffset and oldestOffset exceed this value, we
+= * trigger autovacuum in order to release the disk space if possible.
+ = */
+#define MULTIXACT_MEMBER_AUTOVAC_THRESHOLD UINT64CONST(0xFFFFFFFF)<= br>
Can we refine this annotation a bit? for example
<= /blockquote>
Thank you, fixed.

Sorry for a lat= e reply. There was a problem in upgrade with offset wraparound. Here is a f= ixed version. Test also added. I decide to use my old patch to set a non-st= andard multixacts for the old cluster, fill it with data and do pg_upgrade.=

Here is how to test. All the patches are for = 14e87ffa5c543b5f3 master branch.
1) Get the 14e87ffa5c543b5f3 mas= ter branch apply patches 0001-Add-initdb-option-to-initialize-cluster-with-= non-sta.patch and 0002-TEST-lower-SLRU_PAGES_PER_SEGMENT.patch
2)= Get the 14e87ffa5c543b5f3 master branch in a separate directory and apply = v6 patch set.
3) Build two branches.
4) Use ENV old= install to run the test: PROVE_TESTS=3Dt/= 005_mxidoff.pl oldinstall=3D/home/orlov/proj/pgsql-new PG_TEST_NOCLEAN= =3D1 make check -C src/bin/pg_upgrade/

Maybe, I= 9;ll make a shell script to automate this steps if required.
=
--
Best regards,
Maxim Orlov.
--0000000000002fcd0e06266aab79-- --0000000000002fcd1006266aab7b Content-Type: application/octet-stream; name="v6-0001-Use-64-bit-multixact-offsets.patch" Content-Disposition: attachment; filename="v6-0001-Use-64-bit-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m391otju2 RnJvbSAyYTg3MDhmYTVkMzFjNjUyM2M3ZDI2NTRlZTEyMTViZWRhNmYxZmYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA2IE1hciAyMDI0IDExOjExOjMzICswMzAwClN1YmplY3Q6IFtQQVRDSCB2NiAx LzZdIFVzZSA2NC1iaXQgbXVsdGl4YWN0IG9mZnNldHMuCgpBdXRob3I6IE1heGltIE9ybG92IDxv cmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhh Y3QuYyB8IDE3MiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmluL3BnX3Jlc2V0d2Fs L3BnX3Jlc2V0d2FsLmMgICAgICB8ICAgMiArLQogc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMV9i YXNpYy5wbCAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAg ICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAg MiArLQogNSBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxNjkgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCBhYjkwOTEyZWQzLi5j NTFlMDNlODMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhh Y3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtOTYs MTQgKzk2LDYgQEAKIC8qCiAgKiBEZWZpbmVzIGZvciBNdWx0aVhhY3RPZmZzZXQgcGFnZSBzaXpl cy4gIEEgcGFnZSBpcyB0aGUgc2FtZSBCTENLU1ogYXMgaXMKICAqIHVzZWQgZXZlcnl3aGVyZSBl bHNlIGluIFBvc3RncmVzLgotICoKLSAqIE5vdGU6IGJlY2F1c2UgTXVsdGlYYWN0T2Zmc2V0cyBh cmUgMzIgYml0cyBhbmQgd3JhcCBhcm91bmQgYXQgMHhGRkZGRkZGRiwKLSAqIE11bHRpWGFjdCBw YWdlIG51bWJlcmluZyBhbHNvIHdyYXBzIGFyb3VuZCBhdAotICogMHhGRkZGRkZGRi9NVUxUSVhB Q1RfT0ZGU0VUU19QRVJfUEFHRSwgYW5kIHNlZ21lbnQgbnVtYmVyaW5nIGF0Ci0gKiAweEZGRkZG RkZGL01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFL1NMUlVfUEFHRVNfUEVSX1NFR01FTlQuICBX ZSBuZWVkCi0gKiB0YWtlIG5vIGV4cGxpY2l0IG5vdGljZSBvZiB0aGF0IGZhY3QgaW4gdGhpcyBt b2R1bGUsIGV4Y2VwdCB3aGVuIGNvbXBhcmluZwotICogc2VnbWVudCBhbmQgcGFnZSBudW1iZXJz IGluIFRydW5jYXRlTXVsdGlYYWN0IChzZWUKLSAqIE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRl cykuCiAgKi8KIAogLyogV2UgbmVlZCBmb3VyIGJ5dGVzIHBlciBvZmZzZXQgKi8KQEAgLTI3Miw5 ICsyNjQsNiBAQCB0eXBlZGVmIHN0cnVjdCBNdWx0aVhhY3RTdGF0ZURhdGEKIAlNdWx0aVhhY3RJ ZCBtdWx0aVN0b3BMaW1pdDsKIAlNdWx0aVhhY3RJZCBtdWx0aVdyYXBMaW1pdDsKIAotCS8qIHN1 cHBvcnQgZm9yIG1lbWJlcnMgYW50aS13cmFwYXJvdW5kIG1lYXN1cmVzICovCi0JTXVsdGlYYWN0 T2Zmc2V0IG9mZnNldFN0b3BMaW1pdDsJLyoga25vd24gaWYgb2xkZXN0T2Zmc2V0S25vd24gKi8K LQogCS8qCiAJICogVGhpcyBpcyB1c2VkIHRvIHNsZWVwIHVudGlsIGEgbXVsdGl4YWN0IG9mZnNl dCBpcyB3cml0dGVuIHdoZW4gd2Ugd2FudAogCSAqIHRvIGNyZWF0ZSB0aGUgbmV4dCBvbmUuCkBA IC00MDksOCArMzk4LDYgQEAgc3RhdGljIGJvb2wgTXVsdGlYYWN0T2Zmc2V0UHJlY2VkZXMoTXVs dGlYYWN0T2Zmc2V0IG9mZnNldDEsCiAJCQkJCQkJCQlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0Mik7 CiBzdGF0aWMgdm9pZCBFeHRlbmRNdWx0aVhhY3RPZmZzZXQoTXVsdGlYYWN0SWQgbXVsdGkpOwog c3RhdGljIHZvaWQgRXh0ZW5kTXVsdGlYYWN0TWVtYmVyKE11bHRpWGFjdE9mZnNldCBvZmZzZXQs IGludCBubWVtYmVycyk7Ci1zdGF0aWMgYm9vbCBNdWx0aVhhY3RPZmZzZXRXb3VsZFdyYXAoTXVs dGlYYWN0T2Zmc2V0IGJvdW5kYXJ5LAotCQkJCQkJCQkJIE11bHRpWGFjdE9mZnNldCBzdGFydCwg dWludDMyIGRpc3RhbmNlKTsKIHN0YXRpYyBib29sIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wg aXNfc3RhcnR1cCk7CiBzdGF0aWMgYm9vbCBmaW5kX211bHRpeGFjdF9zdGFydChNdWx0aVhhY3RJ ZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpOwogc3RhdGljIHZvaWQgV3JpdGVNWmVy b1BhZ2VYbG9nUmVjKGludDY0IHBhZ2VubywgdWludDggaW5mbyk7CkBAIC0xMTY0LDc4ICsxMTUx LDYgQEAgR2V0TmV3TXVsdGlYYWN0SWQoaW50IG5tZW1iZXJzLCBNdWx0aVhhY3RPZmZzZXQgKm9m ZnNldCkKIAllbHNlCiAJCSpvZmZzZXQgPSBuZXh0T2Zmc2V0OwogCi0JLyotLS0tLS0tLS0tCi0J ICogUHJvdGVjdCBhZ2FpbnN0IG92ZXJydW4gb2YgdGhlIG1lbWJlcnMgc3BhY2UgYXMgd2VsbCwg d2l0aCB0aGUKLQkgKiBmb2xsb3dpbmcgcnVsZXM6Ci0JICoKLQkgKiBJZiB3ZSdyZSBwYXN0IG9m ZnNldFN0b3BMaW1pdCwgcmVmdXNlIHRvIGdlbmVyYXRlIG1vcmUgbXVsdGlzLgotCSAqIElmIHdl J3JlIGNsb3NlIHRvIG9mZnNldFN0b3BMaW1pdCwgZW1pdCBhIHdhcm5pbmcuCi0JICoKLQkgKiBB cmJpdHJhcmlseSwgd2Ugc3RhcnQgZW1pdHRpbmcgd2FybmluZ3Mgd2hlbiB3ZSdyZSAyMCBzZWdt ZW50cyBvciBsZXNzCi0JICogZnJvbSBvZmZzZXRTdG9wTGltaXQuCi0JICoKLQkgKiBOb3RlIHdl IGhhdmVuJ3QgdXBkYXRlZCB0aGUgc2hhcmVkIHN0YXRlIHlldCwgc28gaWYgd2UgZmFpbCBhdCB0 aGlzCi0JICogcG9pbnQsIHRoZSBtdWx0aXhhY3QgSUQgd2UgZ3JhYmJlZCBjYW4gc3RpbGwgYmUg dXNlZCBieSB0aGUgbmV4dCBndXkuCi0JICoKLQkgKiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gcG9p bnQgaW4gZm9yY2luZyBhdXRvdmFjdXVtIHJ1bnMgaGVyZTogdGhlCi0JICogbXVsdGl4YWN0IGZy ZWV6ZSBzZXR0aW5ncyB3b3VsZCBoYXZlIHRvIGJlIHJlZHVjZWQgZm9yIHRoYXQgdG8gaGF2ZSBh bnkKLQkgKiBlZmZlY3QuCi0JICotLS0tLS0tLS0tCi0JICovCi0jZGVmaW5lIE9GRlNFVF9XQVJO X1NFR01FTlRTCTIwCi0JaWYgKE11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93biAmJgot CQlNdWx0aVhhY3RPZmZzZXRXb3VsZFdyYXAoTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1p dCwgbmV4dE9mZnNldCwKLQkJCQkJCQkJIG5tZW1iZXJzKSkKLQl7Ci0JCS8qIHNlZSBjb21tZW50 IGluIHRoZSBjb3JyZXNwb25kaW5nIG9mZnNldHMgd3JhcGFyb3VuZCBjYXNlICovCi0JCVNlbmRQ b3N0bWFzdGVyU2lnbmFsKFBNU0lHTkFMX1NUQVJUX0FVVE9WQUNfTEFVTkNIRVIpOwotCi0JCWVy ZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVE KSwKLQkJCQkgZXJybXNnKCJtdWx0aXhhY3QgXCJtZW1iZXJzXCIgbGltaXQgZXhjZWVkZWQiKSwK LQkJCQkgZXJyZGV0YWlsX3BsdXJhbCgiVGhpcyBjb21tYW5kIHdvdWxkIGNyZWF0ZSBhIG11bHRp eGFjdCB3aXRoICV1IG1lbWJlcnMsIGJ1dCB0aGUgcmVtYWluaW5nIHNwYWNlIGlzIG9ubHkgZW5v dWdoIGZvciAldSBtZW1iZXIuIiwKLQkJCQkJCQkJICAiVGhpcyBjb21tYW5kIHdvdWxkIGNyZWF0 ZSBhIG11bHRpeGFjdCB3aXRoICV1IG1lbWJlcnMsIGJ1dCB0aGUgcmVtYWluaW5nIHNwYWNlIGlz IG9ubHkgZW5vdWdoIGZvciAldSBtZW1iZXJzLiIsCi0JCQkJCQkJCSAgTXVsdGlYYWN0U3RhdGUt Pm9mZnNldFN0b3BMaW1pdCAtIG5leHRPZmZzZXQgLSAxLAotCQkJCQkJCQkgIG5tZW1iZXJzLAot CQkJCQkJCQkgIE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQgLSBuZXh0T2Zmc2V0IC0g MSksCi0JCQkJIGVycmhpbnQoIkV4ZWN1dGUgYSBkYXRhYmFzZS13aWRlIFZBQ1VVTSBpbiBkYXRh YmFzZSB3aXRoIE9JRCAldSB3aXRoIHJlZHVjZWQgXCJ2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9t aW5fYWdlXCIgYW5kIFwidmFjdXVtX211bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlXCIgc2V0dGlu Z3MuIiwKLQkJCQkJCSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0TXVsdGlYYWN0REIpKSk7Ci0JfQot Ci0JLyoKLQkgKiBDaGVjayB3aGV0aGVyIHdlIHNob3VsZCBraWNrIGF1dG92YWN1dW0gaW50byBh Y3Rpb24sIHRvIHByZXZlbnQgbWVtYmVycwotCSAqIHdyYXBhcm91bmQuIE5CIHdlIHVzZSBhIG11 Y2ggbGFyZ2VyIHdpbmRvdyB0byB0cmlnZ2VyIGF1dG92YWN1dW0gdGhhbgotCSAqIGp1c3QgdGhl IHdhcm5pbmcgbGltaXQuIFRoZSB3YXJuaW5nIGlzIGp1c3QgYSBtZWFzdXJlIG9mIGxhc3QgcmVz b3J0IC0KLQkgKiB0aGlzIGlzIGluIGxpbmUgd2l0aCBHZXROZXdUcmFuc2FjdGlvbklkJ3MgYmVo YXZpb3VyLgotCSAqLwotCWlmICghTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3duIHx8 Ci0JCShNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCAtIE11bHRpWGFjdFN0YXRlLT5vbGRlc3RP ZmZzZXQKLQkJID4gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCkpCi0JewotCQkvKgot CQkgKiBUbyBhdm9pZCBzd2FtcGluZyB0aGUgcG9zdG1hc3RlciB3aXRoIHNpZ25hbHMsIHdlIGlz c3VlIHRoZSBhdXRvdmFjCi0JCSAqIHJlcXVlc3Qgb25seSB3aGVuIGNyb3NzaW5nIGEgc2VnbWVu dCBib3VuZGFyeS4gV2l0aCBkZWZhdWx0Ci0JCSAqIGNvbXBpbGF0aW9uIHNldHRpbmdzIHRoYXQn cyByb3VnaGx5IGFmdGVyIDUwayBtZW1iZXJzLiAgVGhpcyBzdGlsbAotCQkgKiBnaXZlcyBwbGVu dHkgb2YgY2hhbmNlcyBiZWZvcmUgd2UgZ2V0IGludG8gcmVhbCB0cm91YmxlLgotCQkgKi8KLQkJ aWYgKChNWE9mZnNldFRvTWVtYmVyUGFnZShuZXh0T2Zmc2V0KSAvIFNMUlVfUEFHRVNfUEVSX1NF R01FTlQpICE9Ci0JCQkoTVhPZmZzZXRUb01lbWJlclBhZ2UobmV4dE9mZnNldCArIG5tZW1iZXJz KSAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpKQotCQkJU2VuZFBvc3RtYXN0ZXJTaWduYWwoUE1T SUdOQUxfU1RBUlRfQVVUT1ZBQ19MQVVOQ0hFUik7Ci0JfQotCi0JaWYgKE11bHRpWGFjdFN0YXRl LT5vbGRlc3RPZmZzZXRLbm93biAmJgotCQlNdWx0aVhhY3RPZmZzZXRXb3VsZFdyYXAoTXVsdGlY YWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCwKLQkJCQkJCQkJIG5leHRPZmZzZXQsCi0JCQkJCQkJ CSBubWVtYmVycyArIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFICogU0xSVV9QQUdFU19QRVJf U0VHTUVOVCAqIE9GRlNFVF9XQVJOX1NFR01FTlRTKSkKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCi0JCQkJIGVycm1zZ19w bHVyYWwoImRhdGFiYXNlIHdpdGggT0lEICV1IG11c3QgYmUgdmFjdXVtZWQgYmVmb3JlICVkIG1v cmUgbXVsdGl4YWN0IG1lbWJlciBpcyB1c2VkIiwKLQkJCQkJCQkgICAiZGF0YWJhc2Ugd2l0aCBP SUQgJXUgbXVzdCBiZSB2YWN1dW1lZCBiZWZvcmUgJWQgbW9yZSBtdWx0aXhhY3QgbWVtYmVycyBh cmUgdXNlZCIsCi0JCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCAtIG5l eHRPZmZzZXQgKyBubWVtYmVycywKLQkJCQkJCQkgICBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0TXVs dGlYYWN0REIsCi0JCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCAtIG5l eHRPZmZzZXQgKyBubWVtYmVycyksCi0JCQkJIGVycmhpbnQoIkV4ZWN1dGUgYSBkYXRhYmFzZS13 aWRlIFZBQ1VVTSBpbiB0aGF0IGRhdGFiYXNlIHdpdGggcmVkdWNlZCBcInZhY3V1bV9tdWx0aXhh Y3RfZnJlZXplX21pbl9hZ2VcIiBhbmQgXCJ2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9h Z2VcIiBzZXR0aW5ncy4iKSkpOwotCiAJRXh0ZW5kTXVsdGlYYWN0TWVtYmVyKG5leHRPZmZzZXQs IG5tZW1iZXJzKTsKIAogCS8qCkBAIC0xOTc2LDcgKzE4OTEsNyBAQCBNdWx0aVhhY3RTaG1lbUlu aXQodm9pZCkKIAkJCQkgICJwZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsIExXVFJBTkNIRV9NVUxUSVhB Q1RPRkZTRVRfQlVGRkVSLAogCQkJCSAgTFdUUkFOQ0hFX01VTFRJWEFDVE9GRlNFVF9TTFJVLAog CQkJCSAgU1lOQ19IQU5ETEVSX01VTFRJWEFDVF9PRkZTRVQsCi0JCQkJICBmYWxzZSk7CisJCQkJ ICB0cnVlKTsKIAlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKE11bHRpWGFjdE9mZnNldEN0bCwg TVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0UpOwogCVNpbXBsZUxydUluaXQoTXVsdGlYYWN0TWVt YmVyQ3RsLAogCQkJCSAgIm11bHRpeGFjdF9tZW1iZXIiLCBtdWx0aXhhY3RfbWVtYmVyX2J1ZmZl cnMsIDAsCkBAIC0yNzIxLDggKzI2MzYsNiBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlz X3N0YXJ0dXApCiAJTXVsdGlYYWN0T2Zmc2V0IG5leHRPZmZzZXQ7CiAJYm9vbAkJb2xkZXN0T2Zm c2V0S25vd24gPSBmYWxzZTsKIAlib29sCQlwcmV2T2xkZXN0T2Zmc2V0S25vd247Ci0JTXVsdGlY YWN0T2Zmc2V0IG9mZnNldFN0b3BMaW1pdCA9IDA7Ci0JTXVsdGlYYWN0T2Zmc2V0IHByZXZPZmZz ZXRTdG9wTGltaXQ7CiAKIAkvKgogCSAqIE5COiBIYXZlIHRvIHByZXZlbnQgY29uY3VycmVudCB0 cnVuY2F0aW9uLCB3ZSBtaWdodCBvdGhlcndpc2UgdHJ5IHRvCkBAIC0yNzM3LDcgKzI2NTAsNiBA QCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJbmV4dE9mZnNldCA9IE11 bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0OwogCXByZXZPbGRlc3RPZmZzZXRLbm93biA9IE11bHRp WGFjdFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93bjsKIAlwcmV2T2xkZXN0T2Zmc2V0ID0gTXVsdGlY YWN0U3RhdGUtPm9sZGVzdE9mZnNldDsKLQlwcmV2T2Zmc2V0U3RvcExpbWl0ID0gTXVsdGlYYWN0 U3RhdGUtPm9mZnNldFN0b3BMaW1pdDsKIAlBc3NlcnQoTXVsdGlYYWN0U3RhdGUtPmZpbmlzaGVk U3RhcnR1cCk7CiAJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKIApAQCAtMjc2OCwx MSArMjY4MCw3IEBAIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkJb2xk ZXN0T2Zmc2V0S25vd24gPQogCQkJZmluZF9tdWx0aXhhY3Rfc3RhcnQob2xkZXN0TXVsdGlYYWN0 SWQsICZvbGRlc3RPZmZzZXQpOwogCi0JCWlmIChvbGRlc3RPZmZzZXRLbm93bikKLQkJCWVyZXBv cnQoREVCVUcxLAotCQkJCQkoZXJybXNnX2ludGVybmFsKCJvbGRlc3QgTXVsdGlYYWN0SWQgbWVt YmVyIGlzIGF0IG9mZnNldCAldSIsCi0JCQkJCQkJCQkgb2xkZXN0T2Zmc2V0KSkpOwotCQllbHNl CisJCWlmICghb2xkZXN0T2Zmc2V0S25vd24pCiAJCQllcmVwb3J0KExPRywKIAkJCQkJKGVycm1z ZygiTXVsdGlYYWN0IG1lbWJlciB3cmFwYXJvdW5kIHByb3RlY3Rpb25zIGFyZSBkaXNhYmxlZCBi ZWNhdXNlIG9sZGVzdCBjaGVja3BvaW50ZWQgTXVsdGlYYWN0ICV1IGRvZXMgbm90IGV4aXN0IG9u IGRpc2siLAogCQkJCQkJCW9sZGVzdE11bHRpWGFjdElkKSkpOwpAQCAtMjc4NSwyNCArMjY5Myw3 IEBAIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkgKiBvdmVycnVuIG9m IG9sZCBkYXRhIGluIHRoZSBtZW1iZXJzIFNMUlUgYXJlYS4gV2UgY2FuIG9ubHkgZG8gc28gaWYg dGhlCiAJICogb2xkZXN0IG9mZnNldCBpcyBrbm93biB0aG91Z2guCiAJICovCi0JaWYgKG9sZGVz dE9mZnNldEtub3duKQotCXsKLQkJLyogbW92ZSBiYWNrIHRvIHN0YXJ0IG9mIHRoZSBjb3JyZXNw b25kaW5nIHNlZ21lbnQgKi8KLQkJb2Zmc2V0U3RvcExpbWl0ID0gb2xkZXN0T2Zmc2V0IC0gKG9s ZGVzdE9mZnNldCAlCi0JCQkJCQkJCQkJICAoTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0UgKiBT TFJVX1BBR0VTX1BFUl9TRUdNRU5UKSk7Ci0KLQkJLyogYWx3YXlzIGxlYXZlIG9uZSBzZWdtZW50 IGJlZm9yZSB0aGUgd3JhcGFyb3VuZCBwb2ludCAqLwotCQlvZmZzZXRTdG9wTGltaXQgLT0gKE1V TFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFICogU0xSVV9QQUdFU19QRVJfU0VHTUVOVCk7Ci0KLQkJ aWYgKCFwcmV2T2xkZXN0T2Zmc2V0S25vd24gJiYgIWlzX3N0YXJ0dXApCi0JCQllcmVwb3J0KExP RywKLQkJCQkJKGVycm1zZygiTXVsdGlYYWN0IG1lbWJlciB3cmFwYXJvdW5kIHByb3RlY3Rpb25z IGFyZSBub3cgZW5hYmxlZCIpKSk7Ci0KLQkJZXJlcG9ydChERUJVRzEsCi0JCQkJKGVycm1zZ19p bnRlcm5hbCgiTXVsdGlYYWN0IG1lbWJlciBzdG9wIGxpbWl0IGlzIG5vdyAldSBiYXNlZCBvbiBN dWx0aVhhY3QgJXUiLAotCQkJCQkJCQkgb2Zmc2V0U3RvcExpbWl0LCBvbGRlc3RNdWx0aVhhY3RJ ZCkpKTsKLQl9Ci0JZWxzZSBpZiAocHJldk9sZGVzdE9mZnNldEtub3duKQorCWlmIChwcmV2T2xk ZXN0T2Zmc2V0S25vd24pCiAJewogCQkvKgogCQkgKiBJZiB3ZSBmYWlsZWQgdG8gZ2V0IHRoZSBv bGRlc3Qgb2Zmc2V0IHRoaXMgdGltZSwgYnV0IHdlIGhhdmUgYQpAQCAtMjgxMiwxNCArMjcwMywx MiBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJCSAqLwogCQlvbGRl c3RPZmZzZXQgPSBwcmV2T2xkZXN0T2Zmc2V0OwogCQlvbGRlc3RPZmZzZXRLbm93biA9IHRydWU7 Ci0JCW9mZnNldFN0b3BMaW1pdCA9IHByZXZPZmZzZXRTdG9wTGltaXQ7CiAJfQogCiAJLyogSW5z dGFsbCB0aGUgY29tcHV0ZWQgdmFsdWVzICovCiAJTFdMb2NrQWNxdWlyZShNdWx0aVhhY3RHZW5M b2NrLCBMV19FWENMVVNJVkUpOwogCU11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXQgPSBvbGRl c3RPZmZzZXQ7CiAJTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3duID0gb2xkZXN0T2Zm c2V0S25vd247Ci0JTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCA9IG9mZnNldFN0b3BM aW1pdDsKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCiAJLyoKQEAgLTI4Mjks NTQgKzI3MTgsNiBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJCShu ZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9M RCk7CiB9CiAKLS8qCi0gKiBSZXR1cm4gd2hldGhlciBhZGRpbmcgImRpc3RhbmNlIiB0byAic3Rh cnQiIHdvdWxkIG1vdmUgcGFzdCAiYm91bmRhcnkiLgotICoKLSAqIFdlIHVzZSB0aGlzIHRvIGRl dGVybWluZSB3aGV0aGVyIHRoZSBhZGRpdGlvbiBpcyAid3JhcHBpbmcgYXJvdW5kIiB0aGUKLSAq IGJvdW5kYXJ5IHBvaW50LCBoZW5jZSB0aGUgbmFtZS4gIFRoZSByZWFzb24gd2UgZG9uJ3Qgd2Fu dCB0byB1c2UgdGhlIHJlZ3VsYXIKLSAqIDJeMzEtbW9kdWxvIGFyaXRobWV0aWMgaGVyZSBpcyB0 aGF0IHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgdGhlIHdob2xlIG9mCi0gKiB0aGUgMl4zMi0x IHNwYWNlIGhlcmUsIGFsbG93aW5nIGZvciBtb3JlIG11bHRpeGFjdHMgdGhhbiB3b3VsZCBmaXQK LSAqIG90aGVyd2lzZS4KLSAqLwotc3RhdGljIGJvb2wKLU11bHRpWGFjdE9mZnNldFdvdWxkV3Jh cChNdWx0aVhhY3RPZmZzZXQgYm91bmRhcnksIE11bHRpWGFjdE9mZnNldCBzdGFydCwKLQkJCQkJ CSB1aW50MzIgZGlzdGFuY2UpCi17Ci0JTXVsdGlYYWN0T2Zmc2V0IGZpbmlzaDsKLQotCS8qCi0J ICogTm90ZSB0aGF0IG9mZnNldCBudW1iZXIgMCBpcyBub3QgdXNlZCAoc2VlIEdldE11bHRpWGFj dElkTWVtYmVycyksIHNvCi0JICogaWYgdGhlIGFkZGl0aW9uIHdyYXBzIGFyb3VuZCB0aGUgVUlO VF9NQVggYm91bmRhcnksIHNraXAgdGhhdCB2YWx1ZS4KLQkgKi8KLQlmaW5pc2ggPSBzdGFydCAr IGRpc3RhbmNlOwotCWlmIChmaW5pc2ggPCBzdGFydCkKLQkJZmluaXNoKys7Ci0KLQkvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0JICogV2hlbiB0aGUgYm91bmRhcnkgaXMgbnVtZXJpY2FsbHkgZ3JlYXRlciB0 aGFuIHRoZSBzdGFydGluZyBwb2ludCwgYW55Ci0JICogdmFsdWUgbnVtZXJpY2FsbHkgYmV0d2Vl biB0aGUgdHdvIGlzIG5vdCB3cmFwcGVkOgotCSAqCi0JICoJPC0tLS1TLS0tLUItLS0tPgotCSAq CVstLS0pCQkJID0gRiB3cmFwcGVkIHBhc3QgQiAoYW5kIFVJTlRfTUFYKQotCSAqCQkgWy0tLSkJ CSA9IEYgbm90IHdyYXBwZWQKLQkgKgkJCSAgWy0tLS1dID0gRiB3cmFwcGVkIHBhc3QgQgotCSAq Ci0JICogV2hlbiB0aGUgYm91bmRhcnkgaXMgbnVtZXJpY2FsbHkgbGVzcyB0aGFuIHRoZSBzdGFy dGluZyBwb2ludCAoaS5lLiB0aGUKLQkgKiBVSU5UX01BWCB3cmFwYXJvdW5kIG9jY3VycyBzb21l d2hlcmUgaW4gYmV0d2VlbikgdGhlbiBhbGwgdmFsdWVzIGluCi0JICogYmV0d2VlbiBhcmUgd3Jh cHBlZDoKLQkgKgotCSAqCTwtLS0tQi0tLS1TLS0tLT4KLQkgKglbLS0tKQkJCSA9IEYgbm90IHdy YXBwZWQgcGFzdCBCIChidXQgd3JhcHBlZCBwYXN0IFVJTlRfTUFYKQotCSAqCQkgWy0tLSkJCSA9 IEYgd3JhcHBlZCBwYXN0IEIgKGFuZCBVSU5UX01BWCkKLQkgKgkJCSAgWy0tLS1dID0gRiBub3Qg d3JhcHBlZAotCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkgKi8KLQlpZiAoc3RhcnQgPCBib3VuZGFyeSkK LQkJcmV0dXJuIGZpbmlzaCA+PSBib3VuZGFyeSB8fCBmaW5pc2ggPCBzdGFydDsKLQllbHNlCi0J CXJldHVybiBmaW5pc2ggPj0gYm91bmRhcnkgJiYgZmluaXNoIDwgc3RhcnQ7Ci19Ci0KIC8qCiAg KiBGaW5kIHRoZSBzdGFydGluZyBvZmZzZXQgb2YgdGhlIGdpdmVuIE11bHRpWGFjdElkLgogICoK QEAgLTI5OTgsOCArMjgzOSw5IEBAIE11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCh2b2lk KQogCSAqIHdlIHRyeSB0byBlbGltaW5hdGUgZnJvbSB0aGUgc3lzdGVtIGlzIGJhc2VkIG9uIGhv dyBmYXIgd2UgYXJlIHBhc3QKIAkgKiBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xELgog CSAqLwotCWZyYWN0aW9uID0gKGRvdWJsZSkgKG1lbWJlcnMgLSBNVUxUSVhBQ1RfTUVNQkVSX1NB RkVfVEhSRVNIT0xEKSAvCi0JCShNVUxUSVhBQ1RfTUVNQkVSX0RBTkdFUl9USFJFU0hPTEQgLSBN VUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKKwlmcmFjdGlvbiA9IChkb3VibGUpICht ZW1iZXJzIC0gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCk7CisJZnJhY3Rpb24gLz0g KGRvdWJsZSkgKE1VTFRJWEFDVF9NRU1CRVJfREFOR0VSX1RIUkVTSE9MRCAtIE1VTFRJWEFDVF9N RU1CRVJfU0FGRV9USFJFU0hPTEQpOworCiAJdmljdGltX211bHRpeGFjdHMgPSBtdWx0aXhhY3Rz ICogZnJhY3Rpb247CiAKIAkvKiBmcmFjdGlvbiBjb3VsZCBiZSA+IDEuMCwgYnV0IGxvd2VzdCBw b3NzaWJsZSBmcmVlemUgYWdlIGlzIHplcm8gKi8KQEAgLTMzNDUsNyArMzE4Nyw3IEBAIE11bHRp WGFjdElkUHJlY2VkZXNPckVxdWFscyhNdWx0aVhhY3RJZCBtdWx0aTEsIE11bHRpWGFjdElkIG11 bHRpMikKIHN0YXRpYyBib29sCiBNdWx0aVhhY3RPZmZzZXRQcmVjZWRlcyhNdWx0aVhhY3RPZmZz ZXQgb2Zmc2V0MSwgTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDIpCiB7Ci0JaW50MzIJCWRpZmYgPSAo aW50MzIpIChvZmZzZXQxIC0gb2Zmc2V0Mik7CisJaW50NjQJCWRpZmYgPSAoaW50NjQpIChvZmZz ZXQxIC0gb2Zmc2V0Mik7CiAKIAlyZXR1cm4gKGRpZmYgPCAwKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdf cmVzZXR3YWwuYwppbmRleCA5ODVjZDA2ODAyLi4xYWYyY2U0YjkzIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKKysrIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9w Z19yZXNldHdhbC5jCkBAIC0yNjQsNyArMjY0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCiAJCQljYXNlICdPJzoKIAkJCQllcnJubyA9IDA7Ci0JCQkJc2V0X214b2ZmID0gc3Ry dG91bChvcHRhcmcsICZlbmRwdHIsIDApOworCQkJCXNldF9teG9mZiA9IHN0cnRvdTY0KG9wdGFy ZywgJmVuZHB0ciwgMCk7CiAJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAn XDAnIHx8IGVycm5vICE9IDApCiAJCQkJewogCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgYXJn dW1lbnQgZm9yIG9wdGlvbiAlcyIsICItTyIpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNl dHdhbC90LzAwMV9iYXNpYy5wbCBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFfYmFzaWMucGwK aW5kZXggOTgyOWU0ODEwNi4uZjhhOGVlZjQ0ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXNl dHdhbC90LzAwMV9iYXNpYy5wbAorKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAxX2Jhc2lj LnBsCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVzaCBAY21kLAogICBzcHJpbnRmKCIlZCwlZCIsIGhl eCgkZmlsZXNbMF0pID09IDAgPyAzIDogaGV4KCRmaWxlc1swXSksIGhleCgkZmlsZXNbLTFdKSk7 CiAKIEBmaWxlcyA9IGdldF9zbHJ1X2ZpbGVzKCdwZ19tdWx0aXhhY3Qvb2Zmc2V0cycpOwotJG11 bHQgPSAzMiAqICRibGNrc3ogLyA0OworJG11bHQgPSAzMiAqICRibGNrc3ogLyA4OwogIyAtbSBh cmd1bWVudCBpcyAibmV3LG9sZCIKIHB1c2ggQGNtZCwgJy1tJywKICAgc3ByaW50ZigiJWQsJWQi LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL211bHRpeGFjdC5oCmluZGV4IDdmZmQyNTZjNzQuLjkwNTgzNjM0ZWMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvbXVsdGl4YWN0LmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2RlZmluZSBNdWx0aVhhY3RJ ZElzVmFsaWQobXVsdGkpICgobXVsdGkpICE9IEludmFsaWRNdWx0aVhhY3RJZCkKIAotI2RlZmlu ZSBNYXhNdWx0aVhhY3RPZmZzZXQJKChNdWx0aVhhY3RPZmZzZXQpIDB4RkZGRkZGRkYpCisjZGVm aW5lIE1heE11bHRpWGFjdE9mZnNldAlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRkZGRkYpCiAK IC8qCiAgKiBQb3NzaWJsZSBtdWx0aXhhY3QgbG9jayBtb2RlcyAoInN0YXR1cyIpLiAgVGhlIGZp cnN0IGZvdXIgbW9kZXMgYXJlIGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYy5oIGIvc3Jj L2luY2x1ZGUvYy5oCmluZGV4IDBhNTQ4ZDY5ZDcuLmUxYjMxODdkMGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTY2NCw3ICs2NjQsNyBAQCB0 eXBlZGVmIHVpbnQzMiBTdWJUcmFuc2FjdGlvbklkOwogLyogTXVsdGlYYWN0SWQgbXVzdCBiZSBl cXVpdmFsZW50IHRvIFRyYW5zYWN0aW9uSWQsIHRvIGZpdCBpbiB0X3htYXggKi8KIHR5cGVkZWYg VHJhbnNhY3Rpb25JZCBNdWx0aVhhY3RJZDsKIAotdHlwZWRlZiB1aW50MzIgTXVsdGlYYWN0T2Zm c2V0OwordHlwZWRlZiB1aW50NjQgTXVsdGlYYWN0T2Zmc2V0OwogCiB0eXBlZGVmIHVpbnQzMiBD b21tYW5kSWQ7CiAKLS0gCjIuNDMuMAoK --0000000000002fcd1006266aab7b Content-Type: application/octet-stream; name="v6-0002-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Disposition: attachment; filename="v6-0002-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m391otk03 RnJvbSBhNDhlYzlhYWYzZGU4NTkwNTBkZDBhZDQ4NGRjMWZiNWYxNzRjZjhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogVHVlLCAxMyBBdWcgMjAyNCAxNDo0NDo1MCArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjYg Mi82XSBNYWtlIHBnX3VwZ3JhZGUgY29udmVydCBtdWx0aXhhY3Qgb2Zmc2V0cy4KCkF1dGhvcjog TWF4aW0gT3Jsb3YgPG9ybG92bWdAZ21haWwuY29tPgpBdXRob3I6IFl1cmEgU29rb2xvdiA8eS5z b2tvbG92QHBvc3RncmVzcHJvLnJ1PgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211 bHRpeGFjdC5jIHwgICAyICstCiBzcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQgICAgICAgICB8ICAgMSAr CiBzcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jICAgICAgICB8ICA0MiArLQogc3JjL2Jp bi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCAgICAgICAgfCAgMTQgKy0KIHNyYy9iaW4vcGdfdXBn cmFkZS9zZWdyZXNpemUuYyAgICAgICAgIHwgNTE4ICsrKysrKysrKysrKysrKysrKysrKysrKysK IDYgZmlsZXMgY2hhbmdlZCwgNTcyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5jCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCBjNTFlMDNlODMyLi40OGUxYzAxNjBhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtMTg5MSw3ICsxODkxLDcg QEAgTXVsdGlYYWN0U2htZW1Jbml0KHZvaWQpCiAJCQkJICAicGdfbXVsdGl4YWN0L29mZnNldHMi LCBMV1RSQU5DSEVfTVVMVElYQUNUT0ZGU0VUX0JVRkZFUiwKIAkJCQkgIExXVFJBTkNIRV9NVUxU SVhBQ1RPRkZTRVRfU0xSVSwKIAkJCQkgIFNZTkNfSEFORExFUl9NVUxUSVhBQ1RfT0ZGU0VULAot CQkJCSAgdHJ1ZSk7CisJCQkJICBmYWxzZSk7CiAJU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhN dWx0aVhhY3RPZmZzZXRDdGwsIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFKTsKIAlTaW1wbGVM cnVJbml0KE11bHRpWGFjdE1lbWJlckN0bCwKIAkJCQkgICJtdWx0aXhhY3RfbWVtYmVyIiwgbXVs dGl4YWN0X21lbWJlcl9idWZmZXJzLCAwLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRl L01ha2VmaWxlIGIvc3JjL2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlCmluZGV4IGY4M2QyYjVkMzAu LjcwOTA4ZDYzYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9NYWtlZmlsZQorKysg Yi9zcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUKQEAgLTIxLDYgKzIxLDcgQEAgT0JKUyA9IFwK IAlpbmZvLm8gXAogCW9wdGlvbi5vIFwKIAlwYXJhbGxlbC5vIFwKKwlzZWdyZXNpemUubyBcCiAJ cGdfdXBncmFkZS5vIFwKIAlyZWxmaWxlbnVtYmVyLm8gXAogCXNlcnZlci5vIFwKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfdXBncmFkZS9t ZXNvbi5idWlsZAppbmRleCAzZDg4NDE5Njc0Li4xNmY4OThiYTE0IDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29u LmJ1aWxkCkBAIC0xMCw2ICsxMCw3IEBAIHBnX3VwZ3JhZGVfc291cmNlcyA9IGZpbGVzKAogICAn aW5mby5jJywKICAgJ29wdGlvbi5jJywKICAgJ3BhcmFsbGVsLmMnLAorICAnc2VncmVzaXplLmMn LAogICAncGdfdXBncmFkZS5jJywKICAgJ3JlbGZpbGVudW1iZXIuYycsCiAgICdzZXJ2ZXIuYycs CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jIGIvc3JjL2Jpbi9w Z191cGdyYWRlL3BnX3VwZ3JhZGUuYwppbmRleCA2NjMyMzU4MTZmLi4xNjU0ZTg3N2MwIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jCisrKyBiL3NyYy9iaW4vcGdf dXBncmFkZS9wZ191cGdyYWRlLmMKQEAgLTc1MCw4ICs3NTAsNDIgQEAgY29weV94YWN0X3hsb2df eGlkKHZvaWQpCiAJaWYgKG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNhdF92ZXIgPj0gTVVMVElY QUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSICYmCiAJCW5ld19jbHVzdGVyLmNvbnRyb2xkYXRhLmNh dF92ZXIgPj0gTVVMVElYQUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSKQogCXsKLQkJY29weV9zdWJk aXJfZmlsZXMoInBnX211bHRpeGFjdC9vZmZzZXRzIiwgInBnX211bHRpeGFjdC9vZmZzZXRzIik7 Ci0JCWNvcHlfc3ViZGlyX2ZpbGVzKCJwZ19tdWx0aXhhY3QvbWVtYmVycyIsICJwZ19tdWx0aXhh Y3QvbWVtYmVycyIpOworCQkvKgorCQkgKiBJZiB0aGUgb2xkIHNlcnZlciBpcyBiZWZvcmUgdGhl IE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUgorCQkgKiBpdCBtdXN0IGhhdmUg MzItYml0IG11bHRpeGlkIG9mZnNldHMsIHRodXMgaXQgc2hvdWxkIGJlIGNvbnZlcnRlZC4KKwkJ ICovCisJCWlmIChvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyIDwgTVVMVElYQUNUT0ZG U0VUX0ZPUk1BVENIQU5HRV9DQVRfVkVSICYmCisJCQluZXdfY2x1c3Rlci5jb250cm9sZGF0YS5j YXRfdmVyID49IE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUikKKwkJeworCQkJ TXVsdGlYYWN0T2Zmc2V0CQlvbGRlc3Rfb2Zmc2V0LAorCQkJCQkJCQluZXh0X29mZnNldDsKKwor CQkJcmVtb3ZlX25ld19zdWJkaXIoInBnX211bHRpeGFjdC9vZmZzZXRzIiwgZmFsc2UpOworCQkJ cHJlcF9zdGF0dXMoIkNvbnZlcnRpbmcgcGdfbXVsdGl4YWN0L29mZnNldHMgdG8gNjQtYml0Iik7 CisJCQlvbGRlc3Rfb2Zmc2V0ID0gY29udmVydF9tdWx0aXhhY3Rfb2Zmc2V0cygpOworCQkJY2hl Y2tfb2soKTsKKworCQkJcmVtb3ZlX25ld19zdWJkaXIoInBnX211bHRpeGFjdC9tZW1iZXJzIiwg ZmFsc2UpOworCQkJcHJlcF9zdGF0dXMoIkNvbnZlcnRpbmcgcGdfbXVsdGl4YWN0L21lbWJlcnMi KTsKKwkJCWNvbnZlcnRfbXVsdGl4YWN0X21lbWJlcnMob2xkZXN0X29mZnNldCk7CisJCQljaGVj a19vaygpOworCisJCQluZXh0X29mZnNldCA9IG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3Bu dF9ueHRteG9mZjsKKwkJCWlmIChvbGRlc3Rfb2Zmc2V0KQorCQkJeworCQkJCWlmIChuZXh0X29m ZnNldCA8IG9sZGVzdF9vZmZzZXQpCisJCQkJCW5leHRfb2Zmc2V0ICs9ICgoTXVsdGlYYWN0T2Zm c2V0KSAxIDw8IDMyKSAtIDE7CisKKwkJCQluZXh0X29mZnNldCAtPSBvbGRlc3Rfb2Zmc2V0IC0g MTsKKworCQkJCW9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9ueHRteG9mZiA9IG5leHRf b2Zmc2V0OworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJY29weV9zdWJkaXJfZmlsZXMoInBn X211bHRpeGFjdC9vZmZzZXRzIiwgInBnX211bHRpeGFjdC9vZmZzZXRzIik7CisJCQljb3B5X3N1 YmRpcl9maWxlcygicGdfbXVsdGl4YWN0L21lbWJlcnMiLCAicGdfbXVsdGl4YWN0L21lbWJlcnMi KTsKKwkJfQogCiAJCXByZXBfc3RhdHVzKCJTZXR0aW5nIG5leHQgbXVsdGl4YWN0IElEIGFuZCBv ZmZzZXQgZm9yIG5ldyBjbHVzdGVyIik7CiAKQEAgLTc2MCw5ICs3OTQsOSBAQCBjb3B5X3hhY3Rf eGxvZ194aWQodm9pZCkKIAkJICogY291bnRlcnMgaGVyZSBhbmQgdGhlIG9sZGVzdCBtdWx0aSBw cmVzZW50IG9uIHN5c3RlbS4KIAkJICovCiAJCWV4ZWNfcHJvZyhVVElMSVRZX0xPR19GSUxFLCBO VUxMLCB0cnVlLCB0cnVlLAotCQkJCSAgIlwiJXMvcGdfcmVzZXR3YWxcIiAtTyAldSAtbSAldSwl dSBcIiVzXCIiLAorCQkJCSAgIlwiJXMvcGdfcmVzZXR3YWxcIiAtTyAlbGx1IC1tICV1LCV1IFwi JXNcIiIsCiAJCQkJICBuZXdfY2x1c3Rlci5iaW5kaXIsCi0JCQkJICBvbGRfY2x1c3Rlci5jb250 cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmYsCisJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSBvbGRf Y2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmYsCiAJCQkJICBvbGRfY2x1c3Rlci5j b250cm9sZGF0YS5jaGtwbnRfbnh0bXVsdGksCiAJCQkJICBvbGRfY2x1c3Rlci5jb250cm9sZGF0 YS5jaGtwbnRfb2xkc3RNdWx0aSwKIAkJCQkgIG5ld19jbHVzdGVyLnBnZGF0YSk7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuaAppbmRleCA1M2Y2OTNjMmQ0Li4yYzg1ZWMxZTk0IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9w Z191cGdyYWRlLmgKQEAgLTExNCw2ICsxMTQsMTMgQEAgZXh0ZXJuIGNoYXIgKm91dHB1dF9maWxl c1tdOwogICovCiAjZGVmaW5lIE1VTFRJWEFDVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAyMDEzMDEy MzEKIAorLyoKKyAqIFN3aWN0aCBmcm9tIDMyLWJpdCB0byA2NC1iaXQgZm9yIG11bHRpeGlkIG9m ZnNldHMuCisgKgorICogWFhYOiBzaG91bGQgYmUgY2hhbmdlZCB0byB0aGUgYWN0dWFsIENBVEFM T0dfVkVSU0lPTl9OTyBvbiBjb21taXQuCisgKi8KKyNkZWZpbmUgTVVMVElYQUNUT0ZGU0VUX0ZP Uk1BVENIQU5HRV9DQVRfVkVSIDIwMjQwOTA0MQorCiAvKgogICogbGFyZ2Ugb2JqZWN0IGNodW5r IHNpemUgYWRkZWQgdG8gcGdfY29udHJvbGRhdGEsCiAgKiBjb21taXQgNWY5M2MzNzgwNWU3NDg1 NDg4NDgwOTE2YjQ1ODVlMDk4ZDNjYzg4MwpAQCAtMjMwLDcgKzIzNyw3IEBAIHR5cGVkZWYgc3Ry dWN0CiAJdWludDMyCQljaGtwbnRfbnh0ZXBvY2g7CiAJdWludDMyCQljaGtwbnRfbnh0b2lkOwog CXVpbnQzMgkJY2hrcG50X254dG11bHRpOwotCXVpbnQzMgkJY2hrcG50X254dG14b2ZmOworCXVp bnQ2NAkJY2hrcG50X254dG14b2ZmOwogCXVpbnQzMgkJY2hrcG50X29sZHN0TXVsdGk7CiAJdWlu dDMyCQljaGtwbnRfb2xkc3R4aWQ7CiAJdWludDMyCQlhbGlnbjsKQEAgLTUxNSwzICs1MjIsOCBA QCB0eXBlZGVmIHN0cnVjdAogCUZJTEUJICAgKmZpbGU7CiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhd OwogfSBVcGdyYWRlVGFza1JlcG9ydDsKKworLyogc2VncmVzaXplLmMgKi8KKworTXVsdGlYYWN0 T2Zmc2V0CQljb252ZXJ0X211bHRpeGFjdF9vZmZzZXRzKHZvaWQpOwordm9pZAkJCQljb252ZXJ0 X211bHRpeGFjdF9tZW1iZXJzKE11bHRpWGFjdE9mZnNldCBvbGRlc3Rfb2Zmc2V0KTsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9zZWdyZXNpemUuYyBiL3NyYy9iaW4vcGdfdXBncmFk ZS9zZWdyZXNpemUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mZjdm ZjY1NzU4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5j CkBAIC0wLDAgKzEsNTE4IEBACisvKgorICoJc2VncmVzaXplLmMKKyAqCisgKglTTFJVIHNlZ21l bnQgcmVzaXplIHV0aWxpdHkKKyAqCisgKglDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKglzcmMvYmluL3BnX3VwZ3JhZGUvc2VncmVzaXpl LmMKKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKKworI2luY2x1ZGUgInBnX3VwZ3Jh ZGUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCisKKy8qIFNlZSBzbHJ1LmggKi8K KyNkZWZpbmUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVAkJMzIKKworLyoKKyAqIFNvbWUga2luZCBv ZiBpdGVyYXRvciBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIFNMUlUgc2VnbWVudC4gIFRo ZSBpZGVhIGlzCisgKiB0byBzcGVjaWZ5IHRoZSBzZWdtZW50IGFuZCBwYWdlIG51bWJlciBhbmQg dGhlbiBtb3ZlIHRocm91Z2ggdGhlIHBhZ2VzLgorICovCit0eXBlZGVmIHN0cnVjdCBTbHJ1U2Vn U3RhdGUKK3sKKwljaGFyCSAgICpkaXI7CisJY2hhcgkgICAqZm47CisJRklMRQkgICAqZmlsZTsK KwlpbnQ2NAkJc2Vnbm87CisJdWludDY0CQlwYWdlbm87CisJYm9vbAkJbGVhZGluZ19nYXA7Cit9 IFNscnVTZWdTdGF0ZTsKKworLyoKKyAqIEdldCBTTFJVIHNlZ21lbiBmaWxlIG5hbWUgZnJvbSBz dGF0ZS4KKyAqCisgKiBOT1RFOiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBtaXJyb3IgU2xydUZpbGVO YW1lIGNhbGwuCisgKi8KK3N0YXRpYyBpbmxpbmUgY2hhciAqCitTbHJ1RmlsZU5hbWUoU2xydVNl Z1N0YXRlICpzdGF0ZSkKK3sKKwlBc3NlcnQoc3RhdGUtPnNlZ25vID49IDAgJiYKKwkJICAgc3Rh dGUtPnNlZ25vIDw9IElOVDY0Q09OU1QoMHhGRkZGRkYpKTsKKworCXJldHVybiBwc3ByaW50Zigi JXMvJTA0WCIsIHN0YXRlLT5kaXIsICh1bnNpZ25lZCBpbnQpIChzdGF0ZS0+c2Vnbm8pKTsKK30K KworLyoKKyAqIENyZWF0ZSBTTFJVIHNlZ21lbnQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK2Ny ZWF0ZV9zZWdtZW50KFNscnVTZWdTdGF0ZSAqc3RhdGUpCit7CisJQXNzZXJ0KHN0YXRlLT5mbiA9 PSBOVUxMKTsKKwlBc3NlcnQoc3RhdGUtPmZpbGUgPT0gTlVMTCk7CisKKwlzdGF0ZS0+Zm4gPSBT bHJ1RmlsZU5hbWUoc3RhdGUpOworCXN0YXRlLT5maWxlID0gZm9wZW4oc3RhdGUtPmZuLCAid2Ii KTsKKwlpZiAoIXN0YXRlLT5maWxlKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBmaWxl IFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOworfQorCisvKgorICogT3BlbiBleGlzdGluZyBTTFJV IHNlZ21lbnQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK29wZW5fc2VnbWVudChTbHJ1U2VnU3Rh dGUgKnN0YXRlKQoreworCUFzc2VydChzdGF0ZS0+Zm4gPT0gTlVMTCk7CisJQXNzZXJ0KHN0YXRl LT5maWxlID09IE5VTEwpOworCisJc3RhdGUtPmZuID0gU2xydUZpbGVOYW1lKHN0YXRlKTsKKwlz dGF0ZS0+ZmlsZSA9IGZvcGVuKHN0YXRlLT5mbiwgInJiIik7CisJaWYgKCFzdGF0ZS0+ZmlsZSkK KwkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7 Cit9CisKKy8qCisgKiBDbG9zZSBTTFJVIHNlZ21lbnQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQK K2Nsb3NlX3NlZ21lbnQoU2xydVNlZ1N0YXRlICpzdGF0ZSkKK3sKKwlpZiAoc3RhdGUtPmZpbGUp CisJeworCQlmY2xvc2Uoc3RhdGUtPmZpbGUpOworCQlzdGF0ZS0+ZmlsZSA9IE5VTEw7CisJfQor CisJaWYgKHN0YXRlLT5mbikKKwl7CisJCXBmcmVlKHN0YXRlLT5mbik7CisJCXN0YXRlLT5mbiA9 IE5VTEw7CisJfQorfQorCisvKgorICogUmVhZCBuZXh0IHBhZ2UgZnJvbSB0aGUgb2xkIDMyLWJp dCBvZmZzZXQgc2VnbWVudCBmaWxlLgorICovCitzdGF0aWMgaW50CityZWFkX29sZF9zZWdtZW50 X3BhZ2UoU2xydVNlZ1N0YXRlICpzdGF0ZSwgdm9pZCAqYnVmLCBib29sICplbXB0eSkKK3sKKwlp bnQJCWxlbjsKKworCS8qIE9wZW4gbmV4dCBzZWdtZW50IGZpbGUsIGlmIG5lZWRlZC4gKi8KKwlp ZiAoIXN0YXRlLT5mbikKKwl7CisJCWlmICghc3RhdGUtPnNlZ25vKQorCQkJc3RhdGUtPmxlYWRp bmdfZ2FwID0gdHJ1ZTsKKworCQlvcGVuX3NlZ21lbnQoc3RhdGUpOworCisJCS8qIFNldCBwb3Np dGlvbiB0byB0aGUgbmVlZGVkIHBhZ2UuICovCisJCWlmIChzdGF0ZS0+cGFnZW5vID4gMCAmJgor CQkJZnNlZWsoc3RhdGUtPmZpbGUsIHN0YXRlLT5wYWdlbm8gKiBCTENLU1osIFNFRUtfU0VUKSkK KwkJeworCQkJY2xvc2Vfc2VnbWVudChzdGF0ZSk7CisJCX0KKwl9CisKKwlpZiAoc3RhdGUtPmZp bGUpCisJeworCQkvKiBTZWdtZW50IGZpbGUgZG8gZXhpc3RzLCByZWFkIHBhZ2UgZnJvbSBpdC4g Ki8KKwkJc3RhdGUtPmxlYWRpbmdfZ2FwID0gZmFsc2U7CisKKwkJbGVuID0gZnJlYWQoYnVmLCBz aXplb2YoY2hhciksIEJMQ0tTWiwgc3RhdGUtPmZpbGUpOworCisJCS8qIEFyZSB3ZSBkb25lIG9y IHdhcyB0aGVyZSBhbiBlcnJvcj8gKi8KKwkJaWYgKGxlbiA8PSAwKQorCQl7CisJCQlpZiAoZmVy cm9yKHN0YXRlLT5maWxlKSkKKwkJCQlwZ19mYXRhbCgiZXJyb3IgcmVhZGluZyBmaWxlIFwiJXNc IjogJW0iLCBzdGF0ZS0+Zm4pOworCisJCQlpZiAoZmVvZihzdGF0ZS0+ZmlsZSkpCisJCQl7CisJ CQkJKmVtcHR5ID0gdHJ1ZTsKKwkJCQlsZW4gPSAtMTsKKworCQkJCWNsb3NlX3NlZ21lbnQoc3Rh dGUpOworCQkJfQorCQl9CisJCWVsc2UKKwkJCSplbXB0eSA9IGZhbHNlOworCX0KKwllbHNlIGlm ICghc3RhdGUtPmxlYWRpbmdfZ2FwKQorCXsKKwkJLyogV2UgcmVhY2hlZCB0aGUgbGFzdCBzZWdt ZW50LiAqLworCQlsZW4gPSAtMTsKKwkJKmVtcHR5ID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJ LyogU2tpcCBmZXcgZmlyc3Qgc2VnbWVudHMgaWYgdGhleSB3ZXJlIGZyb3plbiBhbmQgcmVtb3Zl ZC4gKi8KKwkJbGVuID0gQkxDS1NaOworCQkqZW1wdHkgPSB0cnVlOworCX0KKworCWlmICgrK3N0 YXRlLT5wYWdlbm8gPj0gU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkKKwl7CisJCS8qIFN0YXJ0IGEg bmV3IHNlZ21lbnQuICovCisJCXN0YXRlLT5zZWdubysrOworCQlzdGF0ZS0+cGFnZW5vID0gMDsK KworCQljbG9zZV9zZWdtZW50KHN0YXRlKTsKKwl9CisKKwlyZXR1cm4gbGVuOworfQorCisvKgor ICogV3JpdGUgbmV4dCBwYWdlIHRvIHRoZSBuZXcgNjQtYml0IG9mZnNldCBzZWdtZW50IGZpbGUu CisgKi8KK3N0YXRpYyB2b2lkCit3cml0ZV9uZXdfc2VnbWVudF9wYWdlKFNscnVTZWdTdGF0ZSAq c3RhdGUsIHZvaWQgKmJ1ZikKK3sKKwkvKgorCSAqIENyZWF0ZSBhIG5ldyBzZWdtZW50IGZpbGUg aWYgd2Ugc3RpbGwgZGlkbid0LiAgQ3JlYXRpb24gaXMKKwkgKiBwb3N0cG9uZWQgdW50aWwgdGhl IGZpcnN0IG5vbi1lbXB0eSBwYWdlIGlzIGZvdW5kLiAgVGhpcyBoZWxwcworCSAqIG5vdCB0byBj cmVhdGUgY29tcGxldGVseSBlbXB0eSBzZWdtZW50cy4KKwkgKi8KKwlpZiAoIXN0YXRlLT5maWxl KQorCXsKKwkJY3JlYXRlX3NlZ21lbnQoc3RhdGUpOworCisJCS8qIFdyaXRlIHplcm9lcyB0byB0 aGUgcHJldmlvdXNseSBza2lwcGVkIHByZWZpeC4gKi8KKwkJaWYgKHN0YXRlLT5wYWdlbm8gPiAw KQorCQl7CisJCQljaGFyCQl6ZXJvYnVmW0JMQ0tTWl0gPSB7MH07CisKKwkJCWZvciAoaW50NjQg aSA9IDA7IGkgPCBzdGF0ZS0+cGFnZW5vOyBpKyspCisJCQl7CisJCQkJaWYgKGZ3cml0ZSh6ZXJv YnVmLCBzaXplb2YoY2hhciksIEJMQ0tTWiwgc3RhdGUtPmZpbGUpICE9IEJMQ0tTWikKKwkJCQkJ cGdfZmF0YWwoImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOwor CQkJfQorCQl9CisJfQorCisJLyogV3JpdGUgcGFnZSB0byB0aGUgbmV3IHNlZ21lbnQgKGlmIGl0 IHdhcyBjcmVhdGVkKS4gKi8KKwlpZiAoc3RhdGUtPmZpbGUpCisJeworCQlpZiAoZndyaXRlKGJ1 Ziwgc2l6ZW9mKGNoYXIpLCBCTENLU1osIHN0YXRlLT5maWxlKSAhPSBCTENLU1opCisJCQlwZ19m YXRhbCgiY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7CisJfQor CisJLyoKKwkgKiBEaWQgd2UgcmVhY2ggdGhlIG1heGltdW0gcGFnZSBudW1iZXI/ICBUaGVuIGNs b3NlIHNlZ21lbnQgZmlsZQorCSAqIGFuZCBjcmVhdGUgYSBuZXcgb25lIG9uIHRoZSBuZXh0IGl0 ZXJhdGlvbi4KKwkgKi8KKwlpZiAoKytzdGF0ZS0+cGFnZW5vID49IFNMUlVfUEFHRVNfUEVSX1NF R01FTlQpCisJeworCQkvKiBTdGFydCBhIG5ldyBzZWdtZW50LiAqLworCQlzdGF0ZS0+c2Vnbm8r KzsKKwkJc3RhdGUtPnBhZ2VubyA9IDA7CisKKwkJY2xvc2Vfc2VnbWVudChzdGF0ZSk7CisJfQor fQorCit0eXBlZGVmIHVpbnQzMiBNdWx0aVhhY3RPZmZzZXRPbGQ7CisKKyNkZWZpbmUgTWF4TXVs dGlYYWN0T2Zmc2V0T2xkCSgoTXVsdGlYYWN0T2Zmc2V0T2xkKSAweEZGRkZGRkZGKQorCisjZGVm aW5lIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX09MRCAoQkxDS1NaIC8gc2l6ZW9mKE11bHRp WGFjdE9mZnNldE9sZCkpCisjZGVmaW5lIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FVyAo QkxDS1NaIC8gc2l6ZW9mKE11bHRpWGFjdE9mZnNldCkpCisKKy8qCisgKiBDb252ZXJ0IHBnX211 bHRpeGFjdC9vZmZzZXRzIHNlZ21lbnRzIGFuZCByZXR1cm4gb2xkZXN0IG11bHRpIG9mZnNldC4K KyAqLworTXVsdGlYYWN0T2Zmc2V0Citjb252ZXJ0X211bHRpeGFjdF9vZmZzZXRzKHZvaWQpCit7 CisJU2xydVNlZ1N0YXRlCQlvbGRzZWcgPSB7MH0sCisJCQkJCQluZXdzZWcgPSB7MH07CisJTXVs dGlYYWN0T2Zmc2V0T2xkCW9sZGJ1ZltNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTERdID0g ezB9OworCU11bHRpWGFjdE9mZnNldAkJbmV3YnVmW01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdF X05FV10gPSB7MH0sCisJCQkJCQlvbGRlc3Rfb2Zmc2V0ID0gMDsKKwl1aW50NjQJCQkJb2xkZXN0 X211bHRpID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X29sZHN0TXVsdGksCisJCQkJ CQluZXh0X211bHRpID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X254dG11bHRpLAor CQkJCQkJbXVsdGk7CisJdWludDY0CQkJCW9sZF9lbnRyeTsKKwl1aW50NjQJCQkJbmV3X2VudHJ5 OworCWJvb2wJCQkJb2xkZXN0X29mZnNldF9rbm93biA9IGZhbHNlOworCisJb2xkc2VnLmRpciA9 IHBzcHJpbnRmKCIlcy9wZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsIG9sZF9jbHVzdGVyLnBnZGF0YSk7 CisJbmV3c2VnLmRpciA9IHBzcHJpbnRmKCIlcy9wZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsIG5ld19j bHVzdGVyLnBnZGF0YSk7CisKKwlvbGRfZW50cnkgPSBvbGRlc3RfbXVsdGkgJSBNVUxUSVhBQ1Rf T0ZGU0VUU19QRVJfUEFHRV9PTEQ7CisJb2xkc2VnLnBhZ2VubyA9IG9sZGVzdF9tdWx0aSAvIE1V TFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX09MRDsKKwlvbGRzZWcuc2Vnbm8gPSBvbGRzZWcucGFn ZW5vIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKKwlvbGRzZWcucGFnZW5vICU9IFNMUlVfUEFH RVNfUEVSX1NFR01FTlQ7CisKKwluZXdfZW50cnkgPSBvbGRlc3RfbXVsdGkgJSBNVUxUSVhBQ1Rf T0ZGU0VUU19QRVJfUEFHRV9ORVc7CisJbmV3c2VnLnBhZ2VubyA9IG9sZGVzdF9tdWx0aSAvIE1V TFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FVzsKKwluZXdzZWcuc2Vnbm8gPSBuZXdzZWcucGFn ZW5vIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKKwluZXdzZWcucGFnZW5vICU9IFNMUlVfUEFH RVNfUEVSX1NFR01FTlQ7CisKKwlpZiAobmV4dF9tdWx0aSA8IG9sZGVzdF9tdWx0aSkKKwkJbmV4 dF9tdWx0aSArPSAodWludDY0KSAxIDw8IDMyOwkvKiB3cmFwYXJvdW5kICovCisKKwkvKiBDb3B5 IG11bHRpIG9mZnNldHMgcmVhZGluZyBvbmx5IG5lZWRlZCBzZWdtZW50IHBhZ2VzICovCisJZm9y IChtdWx0aSA9IG9sZGVzdF9tdWx0aTsgbXVsdGkgPCBuZXh0X211bHRpOyBvbGRfZW50cnkgPSAw KQorCXsKKwkJaW50CQkJb2xkbGVuOworCQlib29sCQlpc19lbXB0eTsKKworCQkvKiBIYW5kbGUg cG9zc2libGUgc2VnbWVudCB3cmFwYXJvdW5kICovCisJCWlmIChvbGRzZWcuc2Vnbm8gPiBNYXhN dWx0aVhhY3RJZCAvIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX09MRCAvIFNMUlVfUEFHRVNf UEVSX1NFR01FTlQpCisJCQlvbGRzZWcuc2Vnbm8gPSAwOworCisJCW9sZGxlbiA9IHJlYWRfb2xk X3NlZ21lbnRfcGFnZSgmb2xkc2VnLCBvbGRidWYsICZpc19lbXB0eSk7CisKKwkJaWYgKG9sZGxl biA8PSAwIHx8IGlzX2VtcHR5KQorCQkJcGdfZmF0YWwoImNhbm5vdCByZWFkIHBhZ2UgJWxsdSBm cm9tIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBvbGRzZWcu cGFnZW5vLCBvbGRzZWcuZm4pOworCisJCWlmIChvbGRsZW4gPCBCTENLU1opCisJCQltZW1zZXQo KGNoYXIgKikgb2xkYnVmICsgb2xkbGVuLCAwLCBCTENLU1ogLSBvbGRsZW4pOworCisJCS8qIFNh dmUgb2xkZXN0IG11bHRpIG9mZnNldCAqLworCQlpZiAoIW9sZGVzdF9vZmZzZXRfa25vd24pCisJ CXsKKwkJCW9sZGVzdF9vZmZzZXQgPSBvbGRidWZbb2xkX2VudHJ5XTsKKwkJCW9sZGVzdF9vZmZz ZXRfa25vd24gPSB0cnVlOworCQl9CisKKwkJLyogU2tpcCB3cmFwcGVkLWFyb3VuZCBpbnZhbGlk IE11bHRpWGFjdElkcyAqLworCQlpZiAobXVsdGkgPT0gKHVpbnQ2NCkgMSA8PCAzMikKKwkJewor CQkJQXNzZXJ0KG9sZHNlZy5zZWdubyA9PSAwKTsKKwkJCUFzc2VydChvbGRzZWcucGFnZW5vID09 IDEpOworCQkJQXNzZXJ0KG9sZF9lbnRyeSA9PSAwKTsKKworCQkJbXVsdGkgKz0gRmlyc3RNdWx0 aVhhY3RJZDsKKwkJCW9sZF9lbnRyeSA9IEZpcnN0TXVsdGlYYWN0SWQ7CisJCX0KKworCQkvKiBD b3B5IGVudHJpZXMgdG8gdGhlIG5ldyBwYWdlICovCisJCWZvciAoOyBtdWx0aSA8IG5leHRfbXVs dGkgJiYgb2xkX2VudHJ5IDwgTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0VfT0xEOworCQkJIG11 bHRpKyssIG9sZF9lbnRyeSsrKQorCQl7CisJCQlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0ID0gb2xk YnVmW29sZF9lbnRyeV07CisKKwkJCS8qIEhhbmRsZSBwb3NzaWJsZSBvZmZzZXQgd3JhcGFyb3Vu ZCAoMSBiZWNvbWVzIDJeMzIpICovCisJCQlpZiAob2Zmc2V0IDwgb2xkZXN0X29mZnNldCkKKwkJ CQlvZmZzZXQgKz0gKCh1aW50NjQpIDEgPDwgMzIpIC0gMTsKKworCQkJLyogU3VidHJhY3Qgb2xk ZXN0X29mZnNldCwgc28gbmV3IG9mZnNldHMgd2lsbCBzdGFydCBmcm9tIDEgKi8KKwkJCW5ld2J1 ZltuZXdfZW50cnkrK10gPSBvZmZzZXQgLSBvbGRlc3Rfb2Zmc2V0ICsgMTsKKworCQkJaWYgKG5l d19lbnRyeSA+PSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9ORVcpCisJCQl7CisJCQkJLyog V3JpdGUgbmV3IHBhZ2UgKi8KKwkJCQl3cml0ZV9uZXdfc2VnbWVudF9wYWdlKCZuZXdzZWcsIG5l d2J1Zik7CisJCQkJbmV3X2VudHJ5ID0gMDsKKwkJCX0KKwkJfQorCX0KKworCS8qIFdyaXRlIHRo ZSBsYXN0IGluY29tcGxldGUgcGFnZSAqLworCWlmIChuZXdfZW50cnkgPiAwIHx8IG9sZGVzdF9t dWx0aSA9PSBuZXh0X211bHRpKQorCXsKKwkJbWVtc2V0KCZuZXdidWZbbmV3X2VudHJ5XSwgMCwK KwkJCSAgIHNpemVvZihuZXdidWZbMF0pICogKE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05F VyAtIG5ld19lbnRyeSkpOworCQl3cml0ZV9uZXdfc2VnbWVudF9wYWdlKCZuZXdzZWcsIG5ld2J1 Zik7CisJfQorCisJLyogVXNlIG5leHRfb2Zmc2V0IGFzIG9sZGVzdF9vZmZzZXQsIGlmIG9sZGVz dF9tdWx0aSA9PSBuZXh0X211bHRpICovCisJaWYgKCFvbGRlc3Rfb2Zmc2V0X2tub3duKQorCXsK KwkJQXNzZXJ0KG9sZGVzdF9tdWx0aSA9PSBuZXh0X211bHRpKTsKKwkJb2xkZXN0X29mZnNldCA9 IChNdWx0aVhhY3RPZmZzZXQpIG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9ueHRteG9m ZjsKKwl9CisKKwkvKiBSZWxlYXNlIHJlc291cmNlcyAqLworCWNsb3NlX3NlZ21lbnQoJm9sZHNl Zyk7CisJY2xvc2Vfc2VnbWVudCgmbmV3c2VnKTsKKworCXBmcmVlKG9sZHNlZy5kaXIpOworCXBm cmVlKG5ld3NlZy5kaXIpOworCisJcmV0dXJuIG9sZGVzdF9vZmZzZXQ7Cit9CisKKyNkZWZpbmUg TVhBQ1RfTUVNQkVSU19GTEFHX0JZVEVTCQkJMQorCisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJT X1BFUl9HUk9VUAkJCTQKKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUJCQlcCisJ KE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9HUk9VUCAqIChzaXplb2YoVHJhbnNhY3Rpb25JZCkgKyBN WEFDVF9NRU1CRVJTX0ZMQUdfQllURVMpKQorI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBT X1BFUl9QQUdFCQlcCisJKEJMQ0tTWiAvIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFKQorCisj ZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFCQkJCVwKKwkoTVVMVElYQUNUX01FTUJF UlNfUEVSX0dST1VQICogTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRSkKKyNkZWZpbmUg TVVMVElYQUNUX01FTUJFUl9GTEFHX0JZVEVTX1BFUl9HUk9VUAlcCisJKE1YQUNUX01FTUJFUlNf RkxBR19CWVRFUyAqIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9HUk9VUCkKKwordHlwZWRlZiBzdHJ1 Y3QgTXVsdGlYYWN0TWVtYmVyc0N0eAoreworCVNscnVTZWdTdGF0ZQlzZWc7CisJY2hhcgkJCWJ1 ZltCTENLU1pdOworCWludAkJCQlncm91cDsKKwlpbnQJCQkJbWVtYmVyOworCWNoYXIJCSAgICpm bGFnOworCVRyYW5zYWN0aW9uSWQgICp4aWQ7Cit9IE11bHRpWGFjdE1lbWJlcnNDdHg7CisKK3N0 YXRpYyB2b2lkCitNdWx0aVhhY3RNZW1iZXJzQ3R4SW5pdChNdWx0aVhhY3RNZW1iZXJzQ3R4ICpj dHgpCit7CisJY3R4LT5zZWcuZGlyID0gcHNwcmludGYoIiVzL3BnX211bHRpeGFjdC9tZW1iZXJz IiwgbmV3X2NsdXN0ZXIucGdkYXRhKTsKKworCWN0eC0+Z3JvdXAgPSAwOworCWN0eC0+bWVtYmVy ID0gMTsJCS8qIHNraXAgaW52YWxpZCB6ZXJvIG9mZnNldCAqLworCisJY3R4LT5mbGFnID0gKGNo YXIgKikgY3R4LT5idWYgKyBjdHgtPmdyb3VwICogTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkU7 CisJY3R4LT54aWQgPSAoVHJhbnNhY3Rpb25JZCAqKShjdHgtPmZsYWcgKyBNWEFDVF9NRU1CRVJT X0ZMQUdfQllURVMgKiBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVApOworCisJY3R4LT5mbGFn ICs9IGN0eC0+bWVtYmVyOworCWN0eC0+eGlkICs9IGN0eC0+bWVtYmVyOworfQorCitzdGF0aWMg dm9pZAorTXVsdGlYYWN0TWVtYmVyc0N0eEFkZChNdWx0aVhhY3RNZW1iZXJzQ3R4ICpjdHgsIGNo YXIgZmxhZywgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJLyogQ29weSBtZW1iZXIncyB4aWQgYW5k IGZsYWdzIHRvIHRoZSBuZXcgcGFnZSAqLworCSpjdHgtPmZsYWcrKyA9IGZsYWc7CisJKmN0eC0+ eGlkKysgPSB4aWQ7CisKKwlpZiAoKytjdHgtPm1lbWJlciA8IE1VTFRJWEFDVF9NRU1CRVJTX1BF Ul9HUk9VUCkKKwkJcmV0dXJuOworCisJLyogU3RhcnQgbmV4dCBtZW1iZXIgZ3JvdXAgKi8KKwlj dHgtPm1lbWJlciA9IDA7CisKKwlpZiAoKytjdHgtPmdyb3VwID49IE1VTFRJWEFDVF9NRU1CRVJH Uk9VUFNfUEVSX1BBR0UpCisJeworCQkvKiBXcml0ZSBjdXJyZW50IHBhZ2UgYW5kIHN0YXJ0IG5l dyAqLworCQl3cml0ZV9uZXdfc2VnbWVudF9wYWdlKCZjdHgtPnNlZywgY3R4LT5idWYpOworCisJ CWN0eC0+Z3JvdXAgPSAwOworCQltZW1zZXQoY3R4LT5idWYsIDAsIEJMQ0tTWik7CisJfQorCisJ Y3R4LT5mbGFnID0gKGNoYXIgKikgY3R4LT5idWYgKyBjdHgtPmdyb3VwICogTVVMVElYQUNUX01F TUJFUkdST1VQX1NJWkU7CisJY3R4LT54aWQgPSAoVHJhbnNhY3Rpb25JZCAqKShjdHgtPmZsYWcg KyBNWEFDVF9NRU1CRVJTX0ZMQUdfQllURVMgKiBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVAp OworfQorCitzdGF0aWMgdm9pZAorTXVsdGlYYWN0TWVtYmVyc0N0eEZpbml0KE11bHRpWGFjdE1l bWJlcnNDdHggKmN0eCkKK3sKKwlpZiAoY3R4LT5mbGFnID4gKGNoYXIgKikgY3R4LT5idWYpCisJ CXdyaXRlX25ld19zZWdtZW50X3BhZ2UoJmN0eC0+c2VnLCBjdHgtPmJ1Zik7CisKKwljbG9zZV9z ZWdtZW50KCZjdHgtPnNlZyk7CisKKwlwZnJlZShjdHgtPnNlZy5kaXIpOworfQorCisvKgorICog Q29udmVydCBwZ19tdWx0aXhhY3QvbWVtYmVycyBzZWdtZW50cywgb2Zmc2V0cyB3aWxsIHN0YXJ0 IGZyb20gMS4KKyAqLwordm9pZAorY29udmVydF9tdWx0aXhhY3RfbWVtYmVycyhNdWx0aVhhY3RP ZmZzZXQgb2xkZXN0X29mZnNldCkKK3sKKwlNdWx0aVhhY3RPZmZzZXQJCQluZXh0X29mZnNldDsK KwlNdWx0aVhhY3RPZmZzZXQJCQlvZmZzZXQ7CisJU2xydVNlZ1N0YXRlCQkJb2xkc2VnID0gezB9 OworCWNoYXIJCQkJCW9sZGJ1ZltCTENLU1pdID0gezB9OworCWludAkJCQkJCW9sZGlkeDsKKwlN dWx0aVhhY3RNZW1iZXJzQ3R4CQluZXdjdHggPSB7MH07CisKKwlvbGRzZWcuZGlyID0gcHNwcmlu dGYoIiVzL3BnX211bHRpeGFjdC9tZW1iZXJzIiwgb2xkX2NsdXN0ZXIucGdkYXRhKTsKKworCW5l eHRfb2Zmc2V0ID0gKE11bHRpWGFjdE9mZnNldCkgb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hr cG50X254dG14b2ZmOworCWlmIChuZXh0X29mZnNldCA8IG9sZGVzdF9vZmZzZXQpCisJCW5leHRf b2Zmc2V0ICs9ICgodWludDY0KSAxIDw8IDMyKSAtIDE7CisKKwkvKiBJbml0aWFsaXplIHRoZSBv bGQgc3RhcnRpbmcgcG9zaXRpb24gKi8KKwlvbGRzZWcucGFnZW5vID0gb2xkZXN0X29mZnNldCAv IE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFOworCW9sZHNlZy5zZWdubyA9IG9sZHNlZy5wYWdl bm8gLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOworCW9sZHNlZy5wYWdlbm8gJT0gU0xSVV9QQUdF U19QRVJfU0VHTUVOVDsKKworCS8qIEluaXRpYWxpemUgbmV3IHN0YXJ0aW5nIHBvc2l0aW9uICov CisJTXVsdGlYYWN0TWVtYmVyc0N0eEluaXQoJm5ld2N0eCk7CisKKwkvKiBJdGVyYXRlIHRocm91 Z2ggdGhlIG9yaWdpbmFsIGRpcmVjdG9yeSAqLworCW9sZGlkeCA9IG9sZGVzdF9vZmZzZXQgJSBN VUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRTsKKwlmb3IgKG9mZnNldCA9IG9sZGVzdF9vZmZzZXQ7 IG9mZnNldCA8IG5leHRfb2Zmc2V0OykKKwl7CisJCWJvb2wJZW1wdHk7CisJCWludAkJb2xkbGVu OworCQlpbnQJCW5ncm91cHM7CisJCWludAkJb2xkZ3JvdXA7CisJCWludAkJb2xkbWVtYmVyOwor CisJCW9sZGxlbiA9IHJlYWRfb2xkX3NlZ21lbnRfcGFnZSgmb2xkc2VnLCBvbGRidWYsICZlbXB0 eSk7CisJCWlmIChlbXB0eSB8fCBvbGRsZW4gIT0gQkxDS1NaKQorCQkJcGdfZmF0YWwoImNhbm5v dCByZWFkIHBhZ2UgJWxsdSBmcm9tIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCSAodW5zaWduZWQg bG9uZyBsb25nKSBvbGRzZWcucGFnZW5vLCBvbGRzZWcuZm4pOworCisJCS8qIEl0ZXJhdGUgdGhy b3VnaCB0aGUgb2xkIG1lbWJlciBncm91cHMgKi8KKwkJbmdyb3VwcyA9IG9sZGxlbiAvIE1VTFRJ WEFDVF9NRU1CRVJHUk9VUF9TSVpFOworCQlvbGRtZW1iZXIgPSBvbGRpZHggJSBNVUxUSVhBQ1Rf TUVNQkVSU19QRVJfR1JPVVA7CisJCW9sZGdyb3VwID0gb2xkaWR4IC8gTVVMVElYQUNUX01FTUJF UlNfUEVSX0dST1VQOworCQl3aGlsZSAob2xkZ3JvdXAgPCBuZ3JvdXBzICYmIG9mZnNldCA8IG5l eHRfb2Zmc2V0KQorCQl7CisJCQljaGFyCQkgICAqb2xkZmxhZzsKKwkJCVRyYW5zYWN0aW9uSWQg ICpvbGR4aWQ7CisJCQlpbnQJCQkJaTsKKworCQkJb2xkZmxhZyA9IChjaGFyICopIG9sZGJ1ZiAr IG9sZGdyb3VwICogTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkU7CisJCQlvbGR4aWQgPSAoVHJh bnNhY3Rpb25JZCAqKShvbGRmbGFnICsgTVVMVElYQUNUX01FTUJFUl9GTEFHX0JZVEVTX1BFUl9H Uk9VUCk7CisKKwkJCW9sZHhpZCArPSBvbGRtZW1iZXI7CisJCQlvbGRmbGFnICs9IG9sZG1lbWJl cjsKKworCQkJLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBvbGQgbWVtYmVycyAqLworCQkJZm9yIChp ID0gb2xkbWVtYmVyOworCQkJCSBpIDwgTVVMVElYQUNUX01FTUJFUlNfUEVSX0dST1VQICYmIG9m ZnNldCA8IG5leHRfb2Zmc2V0OworCQkJCSBpKyspCisJCQl7CisJCQkJTXVsdGlYYWN0TWVtYmVy c0N0eEFkZCgmbmV3Y3R4LCAqb2xkZmxhZysrLCAqb2xkeGlkKyspOworCisJCQkJaWYgKCsrb2Zm c2V0ID09ICh1aW50NjQpIDEgPDwgMzIpCisJCQkJeworCQkJCQlBc3NlcnQoaSA9PSBNYXhNdWx0 aVhhY3RPZmZzZXRPbGQgJSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVApOworCQkJCQlnb3Rv IHdyYXBhcm91bmQ7CisJCQkJfQorCQkJfQorCisJCQlvbGRncm91cCsrOworCQkJb2xkbWVtYmVy ID0gMDsKKwkJfQorCisJCW9sZGlkeCA9IDA7CisKKwkJY29udGludWU7CisKK3dyYXBhcm91bmQ6 CisjZGVmaW5lIFNFR05PX01BWAlNYXhNdWx0aVhhY3RPZmZzZXRPbGQgLyBNVUxUSVhBQ1RfTUVN QkVSU19QRVJfUEFHRSAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQKKyNkZWZpbmUgUEFHRU5PX01B WAlNYXhNdWx0aVhhY3RPZmZzZXRPbGQgLyBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRSAlIFNM UlVfUEFHRVNfUEVSX1NFR01FTlQKKwkJQXNzZXJ0KChvbGRzZWcuc2Vnbm8gPT0gU0VHTk9fTUFY ICYmIG9sZHNlZy5wYWdlbm8gPT0gUEFHRU5PX01BWCArIDEpIHx8CisJCQkgICAob2xkc2VnLnNl Z25vID09IFNFR05PX01BWCArIDEgJiYgb2xkc2VnLnBhZ2VubyA9PSAwKSk7CisKKwkJLyogU3dp dGNoIHRvIHNlZ21lbnQgMDAwMCAqLworCQljbG9zZV9zZWdtZW50KCZvbGRzZWcpOworCQlvbGRz ZWcuc2Vnbm8gPSAwOworCQlvbGRzZWcucGFnZW5vID0gMDsKKworCQkvKiBza2lwIGludmFsaWQg emVybyBtdWx0aSBvZmZzZXQgKi8KKwkJb2xkaWR4ID0gMTsKKwl9CisKKwlNdWx0aVhhY3RNZW1i ZXJzQ3R4RmluaXQoJm5ld2N0eCk7CisKKwkvKiBSZWxlYXNlIHJlc291cmNlcyAqLworCWNsb3Nl X3NlZ21lbnQoJm9sZHNlZyk7CisKKwlwZnJlZShvbGRzZWcuZGlyKTsKK30KLS0gCjIuNDMuMAoK --0000000000002fcd1006266aab7b Content-Type: application/octet-stream; name="v6-0004-TEST-lower-SLRU_PAGES_PER_SEGMENT-set-bump-catver.patch" Content-Disposition: attachment; filename="v6-0004-TEST-lower-SLRU_PAGES_PER_SEGMENT-set-bump-catver.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m391otk65 RnJvbSA5NzA5NDA3MTFhNmE0ZWFiNGUzMGYwNTQxMmRiYTkwZmUyNTcwNDMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMjkgT2N0IDIwMjQgMTg6Mjg6NDAgKzAzMDAKU3ViamVjdDogW1BBVENIIHY2IDQvNl0g VEVTVDogbG93ZXIgU0xSVV9QQUdFU19QRVJfU0VHTUVOVCArIHNldCBidW1wIGNhdHZlcgoKLS0t CiBzcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oICB8IDIgKy0KIHNyYy9iaW4vcGdfdXBn cmFkZS9zZWdyZXNpemUuYyAgIHwgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaCAgICAg ICAgfCAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaCB8IDIgKy0KIDQgZmls ZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdf dXBncmFkZS5oCmluZGV4IDJjODVlYzFlOTQuLjAxMjUyYTdlZDUgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3Vw Z3JhZGUuaApAQCAtMTE5LDcgKzExOSw3IEBAIGV4dGVybiBjaGFyICpvdXRwdXRfZmlsZXNbXTsK ICAqCiAgKiBYWFg6IHNob3VsZCBiZSBjaGFuZ2VkIHRvIHRoZSBhY3R1YWwgQ0FUQUxPR19WRVJT SU9OX05PIG9uIGNvbW1pdC4KICAqLwotI2RlZmluZSBNVUxUSVhBQ1RPRkZTRVRfRk9STUFUQ0hB TkdFX0NBVF9WRVIgMjAyNDA5MDQxCisjZGVmaW5lIE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFO R0VfQ0FUX1ZFUiAyMDI0MTEwODIKIAogLyoKICAqIGxhcmdlIG9iamVjdCBjaHVuayBzaXplIGFk ZGVkIHRvIHBnX2NvbnRyb2xkYXRhLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3Nl Z3Jlc2l6ZS5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5jCmluZGV4IGZmN2ZmNjU3 NTguLjA1NDdiNTE3NDEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9zZWdyZXNpemUu YworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvc2VncmVzaXplLmMKQEAgLTEzLDcgKzEzLDcgQEAK ICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAKIC8qIFNlZSBzbHJ1LmggKi8KLSNkZWZp bmUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVAkJMzIKKyNkZWZpbmUgU0xSVV9QQUdFU19QRVJfU0VH TUVOVAkJMgogCiAvKgogICogU29tZSBraW5kIG9mIGl0ZXJhdG9yIGFzc29jaWF0ZWQgd2l0aCBh IHBhcnRpY3VsYXIgU0xSVSBzZWdtZW50LiAgVGhlIGlkZWEgaXMKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9zbHJ1LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oCmluZGV4IDk3 ZTYxMmNkMTAuLjc0ZGQ1NDgxOWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1 LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaApAQCAtMzYsNyArMzYsNyBAQAogICog dGFrZSBubyBleHBsaWNpdCBub3RpY2Ugb2YgdGhhdCBmYWN0IGluIHNscnUuYywgZXhjZXB0IHdo ZW4gY29tcGFyaW5nCiAgKiBzZWdtZW50IGFuZCBwYWdlIG51bWJlcnMgaW4gU2ltcGxlTHJ1VHJ1 bmNhdGUgKHNlZSBQYWdlUHJlY2VkZXMoKSkuCiAgKi8KLSNkZWZpbmUgU0xSVV9QQUdFU19QRVJf U0VHTUVOVAkzMgorI2RlZmluZSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UCTIKIAogLyoKICAqIFBh Z2Ugc3RhdHVzIGNvZGVzLiAgTm90ZSB0aGF0IHRoZXNlIGRvIG5vdCBpbmNsdWRlIHRoZSAiZGly dHkiIGJpdC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKaW5kZXggODY0MzZlMDM1Ni4uMDUwNDhh NTEyYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKQEAgLTU3LDYgKzU3LDYgQEAKICAqLwog CiAvKgkJCQkJCQl5eXl5bW1kZE4gKi8KLSNkZWZpbmUgQ0FUQUxPR19WRVJTSU9OX05PCTIwMjQx MTA4MQorI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyNDExMDgyCiAKICNlbmRpZgotLSAK Mi40My4wCgo= --0000000000002fcd1006266aab7b Content-Type: application/octet-stream; name="v6-0005-TEST-initdb-option-to-initialize-cluster-with-non.patch" Content-Disposition: attachment; filename="v6-0005-TEST-initdb-option-to-initialize-cluster-with-non.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m391otk96 RnJvbSA2ZTk1OWY4OWUzNzYxNGI5NGQzYzRkZDU2OTUzNTUwOTVlOGMzOGZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA0IE1heSAyMDIyIDE1OjUzOjM2ICswMzAwClN1YmplY3Q6IFtQQVRDSCB2NiA1 LzZdIFRFU1Q6IGluaXRkYiBvcHRpb24gdG8gaW5pdGlhbGl6ZSBjbHVzdGVyIHdpdGgKIG5vbi1z dGFuZGFyZCB4aWQvbXhpZC9teG9mZgoKVG8gZGF0ZSB0ZXN0aW5nIGRhdGFiYXNlIGNsdXN0ZXIg d3JhcGFydW5kIHdhcyBub3QgZWFzeSBhcyBpbml0ZGIgaGFzIGFsd2F5cwppbml0ZWQgaXQgd2l0 aCBkZWZhdWx0IHhpZC9teGlkL214b2ZmLiBUaGUgb3B0aW9uIHRvIHNwZWNpZnkgYW55IHZhbGlk CnhpZC9teGlkL214b2ZmIGF0IGNsdXN0ZXIgc3RhcnR1cCB3aWxsIG1ha2UgdGhlc2UgdGhpbmdz IGVhc2llci4KCkF1dGhvcjogTWF4aW0gT3Jsb3YgPG9ybG92bWdAZ21haWwuY29tPgpBdXRob3I6 IFBhdmVsIEJvcmlzb3YgPHBhc2hraW4uZWxmZUBnbWFpbC5jb20+CkF1dGhvcjogU3ZldGxhbmEg RGVyZXZ5YW5rbyA8cy5kZXJldnlhbmtvQHBvc3RncmVzcHJvLnJ1PgpEaXNjdXNzaW9uOiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FDRyUzRGV6YWE0dnFZakox NnlveGdycGEtJTNEZ1huZjBWdjNFeTliakdyUlJGTjJZeVdGUSU0MG1haWwuZ21haWwuY29tCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jICAgICAgfCAgMjEgKysrKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIHwgIDUzICsrKysrKysrKysrKwog c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYyAgfCAgIDggKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgIHwgIDE1ICsrLS0KIHNyYy9iYWNrZW5kL2Jv b3RzdHJhcC9ib290c3RyYXAuYyAgICAgIHwgIDUwICsrKysrKysrKysrLQogc3JjL2JhY2tlbmQv bWFpbi9tYWluLmMgICAgICAgICAgICAgICAgfCAgIDYgKysKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvcG9zdG1hc3Rlci5jICAgIHwgIDE0ICsrKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YyAgICAgICAgICAgIHwgIDUzICsrKysrKysrKysrLQogc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMg ICAgICAgICAgICAgICAgfCAxMDcgKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2Jpbi9p bml0ZGIvdC8wMDFfaW5pdGRiLnBsICAgICAgICAgfCAgNjAgKysrKysrKysrKysrKysKIHNyYy9p bmNsdWRlL2FjY2Vzcy94bG9nLmggICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2Mu aCAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Y2xhc3MuaCAgICAgICAgIHwgICAyICstCiAxMyBmaWxlcyBjaGFuZ2VkLCAzODIgaW5zZXJ0aW9u cygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vY2xvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCmluZGV4IGU2 Zjc5MzIwZTkuLjE3ZTI5ZjQ0OTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL2Nsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMKQEAgLTgz NCw2ICs4MzQsNyBAQCBCb290U3RyYXBDTE9HKHZvaWQpCiB7CiAJaW50CQkJc2xvdG5vOwogCUxX TG9jawkgICAqbG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKFhhY3RDdGwsIDApOworCWludDY0 CQlwYWdlbm87CiAKIAlMV0xvY2tBY3F1aXJlKGxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKQEAgLTg0 NCw2ICs4NDUsMjYgQEAgQm9vdFN0cmFwQ0xPRyh2b2lkKQogCVNpbXBsZUxydVdyaXRlUGFnZShY YWN0Q3RsLCBzbG90bm8pOwogCUFzc2VydCghWGFjdEN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Ns b3Rub10pOwogCisJcGFnZW5vID0gVHJhbnNhY3Rpb25JZFRvUGFnZShYaWRGcm9tRnVsbFRyYW5z YWN0aW9uSWQoVHJhbnNhbVZhcmlhYmxlcy0+bmV4dFhpZCkpOworCWlmIChwYWdlbm8gIT0gMCkK Kwl7CisJCUxXTG9jayAqbmV4dGxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9jayhYYWN0Q3RsLCBw YWdlbm8pOworCisJCWlmIChuZXh0bG9jayAhPSBsb2NrKQorCQl7CisJCQlMV0xvY2tSZWxlYXNl KGxvY2spOworCQkJTFdMb2NrQWNxdWlyZShuZXh0bG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJCWxv Y2sgPSBuZXh0bG9jazsKKwkJfQorCisJCS8qIENyZWF0ZSBhbmQgemVybyB0aGUgZmlyc3QgcGFn ZSBvZiB0aGUgY29tbWl0IGxvZyAqLworCQlzbG90bm8gPSBaZXJvQ0xPR1BhZ2UocGFnZW5vLCBm YWxzZSk7CisKKwkJLyogTWFrZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KKwkJU2ltcGxlTHJ1 V3JpdGVQYWdlKFhhY3RDdGwsIHNsb3Rubyk7CisJCUFzc2VydCghWGFjdEN0bC0+c2hhcmVkLT5w YWdlX2RpcnR5W3Nsb3Rub10pOworCX0KKwogCUxXTG9ja1JlbGVhc2UobG9jayk7CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKaW5kZXggYTgxN2Y1MzllZS4uMDk1YzM5 ZGQ5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTE5NTUsNiAr MTk1NSw3IEBAIEJvb3RTdHJhcE11bHRpWGFjdCh2b2lkKQogewogCWludAkJCXNsb3RubzsKIAlM V0xvY2sJICAgKmxvY2s7CisJaW50NjQJCXBhZ2VubzsKIAogCWxvY2sgPSBTaW1wbGVMcnVHZXRC YW5rTG9jayhNdWx0aVhhY3RPZmZzZXRDdGwsIDApOwogCUxXTG9ja0FjcXVpcmUobG9jaywgTFdf RVhDTFVTSVZFKTsKQEAgLTE5NjYsNiArMTk2NywyNiBAQCBCb290U3RyYXBNdWx0aVhhY3Qodm9p ZCkKIAlTaW1wbGVMcnVXcml0ZVBhZ2UoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBzbG90bm8pOwogCUFz c2VydCghTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSk7CiAK KwlwYWdlbm8gPSBNdWx0aVhhY3RJZFRvT2Zmc2V0UGFnZShNdWx0aVhhY3RTdGF0ZS0+bmV4dE1Y YWN0KTsKKwlpZiAocGFnZW5vICE9IDApCisJeworCQlMV0xvY2sgKm5leHRsb2NrID0gU2ltcGxl THJ1R2V0QmFua0xvY2soTXVsdGlYYWN0T2Zmc2V0Q3RsLCBwYWdlbm8pOworCisJCWlmIChuZXh0 bG9jayAhPSBsb2NrKQorCQl7CisJCQlMV0xvY2tSZWxlYXNlKGxvY2spOworCQkJTFdMb2NrQWNx dWlyZShuZXh0bG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJCWxvY2sgPSBuZXh0bG9jazsKKwkJfQor CisJCS8qIENyZWF0ZSBhbmQgemVybyB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgb2Zmc2V0cyBsb2cg Ki8KKwkJc2xvdG5vID0gWmVyb011bHRpWGFjdE9mZnNldFBhZ2UocGFnZW5vLCBmYWxzZSk7CisK KwkJLyogTWFrZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KKwkJU2ltcGxlTHJ1V3JpdGVQYWdl KE11bHRpWGFjdE9mZnNldEN0bCwgc2xvdG5vKTsKKwkJQXNzZXJ0KCFNdWx0aVhhY3RPZmZzZXRD dGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwl9CisKIAlMV0xvY2tSZWxlYXNlKGxv Y2spOwogCiAJbG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKE11bHRpWGFjdE1lbWJlckN0bCwg MCk7CkBAIC0xOTc4LDcgKzE5OTksMzkgQEAgQm9vdFN0cmFwTXVsdGlYYWN0KHZvaWQpCiAJU2lt cGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFjdE1lbWJlckN0bCwgc2xvdG5vKTsKIAlBc3NlcnQoIU11 bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10pOwogCisJcGFnZW5v ID0gTVhPZmZzZXRUb01lbWJlclBhZ2UoTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQpOworCWlm IChwYWdlbm8gIT0gMCkKKwl7CisJCUxXTG9jayAqbmV4dGxvY2sgPSBTaW1wbGVMcnVHZXRCYW5r TG9jayhNdWx0aVhhY3RNZW1iZXJDdGwsIHBhZ2Vubyk7CisKKwkJaWYgKG5leHRsb2NrICE9IGxv Y2spCisJCXsKKwkJCUxXTG9ja1JlbGVhc2UobG9jayk7CisJCQlMV0xvY2tBY3F1aXJlKG5leHRs b2NrLCBMV19FWENMVVNJVkUpOworCQkJbG9jayA9IG5leHRsb2NrOworCQl9CisKKwkJLyogQ3Jl YXRlIGFuZCB6ZXJvIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBtZW1iZXJzIGxvZyAqLworCQlzbG90 bm8gPSBaZXJvTXVsdGlYYWN0TWVtYmVyUGFnZShwYWdlbm8sIGZhbHNlKTsKKworCQkvKiBNYWtl IHN1cmUgaXQncyB3cml0dGVuIG91dCAqLworCQlTaW1wbGVMcnVXcml0ZVBhZ2UoTXVsdGlYYWN0 TWVtYmVyQ3RsLCBzbG90bm8pOworCQlBc3NlcnQoIU11bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVk LT5wYWdlX2RpcnR5W3Nsb3Rub10pOworCX0KKwogCUxXTG9ja1JlbGVhc2UobG9jayk7CisKKwkv KgorCSAqIElmIHdlJ3JlIHN0YXJ0aW5nIG5vdCBmcm9tIHplcm8gb2Zmc2V0LCBpbml0aWxpemUg ZHVtbXkgbXVsdGl4YWN0IHRvCisJICogZXZhZGUgdG9vIGxvbmcgbG9vcCBpbiBQZXJmb3JtTWVt YmVyc1RydW5jYXRpb24oKS4KKwkgKi8KKwlpZiAoTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQg PiAwICYmIE11bHRpWGFjdFN0YXRlLT5uZXh0TVhhY3QgPiAwKQorCXsKKwkJUmVjb3JkTmV3TXVs dGlYYWN0KEZpcnN0TXVsdGlYYWN0SWQsCisJCQkJCQkgICBNdWx0aVhhY3RTdGF0ZS0+bmV4dE9m ZnNldCwgMCwgTlVMTCk7CisJCVJlY29yZE5ld011bHRpWGFjdChNdWx0aVhhY3RTdGF0ZS0+bmV4 dE1YYWN0LAorCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQsIDAsIE5VTEwpOwor CX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRy YW5zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCmluZGV4IDUwYmIx ZDhjZmMuLmE1ZTZlOGYwOTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3N1YnRyYW5zLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYwpA QCAtMjcwLDEyICsyNzAsMTYgQEAgdm9pZAogQm9vdFN0cmFwU1VCVFJBTlModm9pZCkKIHsKIAlp bnQJCQlzbG90bm87Ci0JTFdMb2NrCSAgICpsb2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soU3Vi VHJhbnNDdGwsIDApOworCUxXTG9jawkgICAqbG9jazsKKwlpbnQ2NAkJcGFnZW5vOworCisJcGFn ZW5vID0gVHJhbnNhY3Rpb25JZFRvUGFnZShYaWRGcm9tRnVsbFRyYW5zYWN0aW9uSWQoVHJhbnNh bVZhcmlhYmxlcy0+bmV4dFhpZCkpOworCWxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9jayhTdWJU cmFuc0N0bCwgcGFnZW5vKTsKIAogCUxXTG9ja0FjcXVpcmUobG9jaywgTFdfRVhDTFVTSVZFKTsK IAogCS8qIENyZWF0ZSBhbmQgemVybyB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgc3VidHJhbnMgbG9n ICovCi0Jc2xvdG5vID0gWmVyb1NVQlRSQU5TUGFnZSgwKTsKKwlzbG90bm8gPSBaZXJvU1VCVFJB TlNQYWdlKHBhZ2Vubyk7CiAKIAkvKiBNYWtlIHN1cmUgaXQncyB3cml0dGVuIG91dCAqLwogCVNp bXBsZUxydVdyaXRlUGFnZShTdWJUcmFuc0N0bCwgc2xvdG5vKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYwppbmRleCA2ZjU4NDEyYmNhLi5jNjFkN2Q5NjdjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZy5jCkBAIC0xMzYsNiArMTM2LDEwIEBAIGludAkJCW1heF9zbG90X3dhbF9rZWVwX3Np emVfbWIgPSAtMTsKIGludAkJCXdhbF9kZWNvZGVfYnVmZmVyX3NpemUgPSA1MTIgKiAxMDI0Owog Ym9vbAkJdHJhY2tfd2FsX2lvX3RpbWluZyA9IGZhbHNlOwogCitUcmFuc2FjdGlvbklkCQlzdGFy dF94aWQgPSBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQ7CitNdWx0aVhhY3RJZAkJCXN0YXJ0X214 aWQgPSBGaXJzdE11bHRpWGFjdElkOworTXVsdGlYYWN0T2Zmc2V0CQlzdGFydF9teG9mZiA9IDA7 CisKICNpZmRlZiBXQUxfREVCVUcKIGJvb2wJCVhMT0dfREVCVUcgPSBmYWxzZTsKICNlbmRpZgpA QCAtNTA4MCwxMyArNTA4NCwxNCBAQCBCb290U3RyYXBYTE9HKHVpbnQzMiBkYXRhX2NoZWNrc3Vt X3ZlcnNpb24pCiAJY2hlY2tQb2ludC5mdWxsUGFnZVdyaXRlcyA9IGZ1bGxQYWdlV3JpdGVzOwog CWNoZWNrUG9pbnQud2FsX2xldmVsID0gd2FsX2xldmVsOwogCWNoZWNrUG9pbnQubmV4dFhpZCA9 Ci0JCUZ1bGxUcmFuc2FjdGlvbklkRnJvbUVwb2NoQW5kWGlkKDAsIEZpcnN0Tm9ybWFsVHJhbnNh Y3Rpb25JZCk7CisJCUZ1bGxUcmFuc2FjdGlvbklkRnJvbUVwb2NoQW5kWGlkKDAsIE1heChGaXJz dE5vcm1hbFRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCQkJCQlzdGFydF94aWQpKTsKIAljaGVja1Bv aW50Lm5leHRPaWQgPSBGaXJzdEdlbmJraU9iamVjdElkOwotCWNoZWNrUG9pbnQubmV4dE11bHRp ID0gRmlyc3RNdWx0aVhhY3RJZDsKLQljaGVja1BvaW50Lm5leHRNdWx0aU9mZnNldCA9IDA7Ci0J Y2hlY2tQb2ludC5vbGRlc3RYaWQgPSBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQ7CisJY2hlY2tQ b2ludC5uZXh0TXVsdGkgPSBNYXgoRmlyc3RNdWx0aVhhY3RJZCwgc3RhcnRfbXhpZCk7CisJY2hl Y2tQb2ludC5uZXh0TXVsdGlPZmZzZXQgPSBzdGFydF9teG9mZjsKKwljaGVja1BvaW50Lm9sZGVz dFhpZCA9IFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChjaGVja1BvaW50Lm5leHRYaWQpOwogCWNo ZWNrUG9pbnQub2xkZXN0WGlkREIgPSBUZW1wbGF0ZTFEYk9pZDsKLQljaGVja1BvaW50Lm9sZGVz dE11bHRpID0gRmlyc3RNdWx0aVhhY3RJZDsKKwljaGVja1BvaW50Lm9sZGVzdE11bHRpID0gY2hl Y2tQb2ludC5uZXh0TXVsdGk7CiAJY2hlY2tQb2ludC5vbGRlc3RNdWx0aURCID0gVGVtcGxhdGUx RGJPaWQ7CiAJY2hlY2tQb2ludC5vbGRlc3RDb21taXRUc1hpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOwogCWNoZWNrUG9pbnQubmV3ZXN0Q29tbWl0VHNYaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYyBiL3NyYy9i YWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwppbmRleCBlZDU5ZGZjZTg5Li4wNWNlMDNhM2Ez IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCkBAIC0yMTYsNyArMjE2LDcgQEAgQm9vdHN0 cmFwTW9kZU1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgYm9vbCBjaGVja19vbmx5KQogCWFy Z3YrKzsKIAlhcmdjLS07CiAKLQl3aGlsZSAoKGZsYWcgPSBnZXRvcHQoYXJnYywgYXJndiwgIkI6 YzpkOkQ6RmtyOlg6LToiKSkgIT0gLTEpCisJd2hpbGUgKChmbGFnID0gZ2V0b3B0KGFyZ2MsIGFy Z3YsICJCOmM6ZDpEOkZrbTpvOnI6WDp4Oi06IikpICE9IC0xKQogCXsKIAkJc3dpdGNoIChmbGFn KQogCQl7CkBAIC0yNzEsMTIgKzI3MSw2MCBAQCBCb290c3RyYXBNb2RlTWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdLCBib29sIGNoZWNrX29ubHkpCiAJCQljYXNlICdrJzoKIAkJCQlib290c3Ry YXBfZGF0YV9jaGVja3N1bV92ZXJzaW9uID0gUEdfREFUQV9DSEVDS1NVTV9WRVJTSU9OOwogCQkJ CWJyZWFrOworCQkJY2FzZSAnbSc6CisJCQkJeworCQkJCQljaGFyCSAgICplbmRwdHI7CisKKwkJ CQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teGlkID0gc3RydG91NjQob3B0YXJnLCAmZW5kcHRy LCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwg ZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0SWRJc1ZhbGlkKHN0YXJ0X214aWQp KQorCQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImludmFsaWQgaW5pdGlhbCBkYXRhYmFz ZSBjbHVzdGVyIG11bHRpeGFjdCBpZCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisJ CQljYXNlICdvJzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJCQllcnJubyA9 IDA7CisJCQkJCXN0YXJ0X214b2ZmID0gc3RydG91NjQob3B0YXJnLCAmZW5kcHRyLCAwKTsKKwor CQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gIT0g MCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0T2Zmc2V0SXNWYWxpZChzdGFydF9teG9mZikpCisJ CQkJCXsKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNs dXN0ZXIgbXVsdGl4YWN0IG9mZnNldCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CiAJ CQljYXNlICdyJzoKIAkJCQlzdHJsY3B5KE91dHB1dEZpbGVOYW1lLCBvcHRhcmcsIE1BWFBHUEFU SCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdYJzoKIAkJCQlTZXRDb25maWdPcHRpb24oIndhbF9z ZWdtZW50X3NpemUiLCBvcHRhcmcsIFBHQ19JTlRFUk5BTCwgUEdDX1NfRFlOQU1JQ19ERUZBVUxU KTsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ3gnOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRy OworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfeGlkID0gc3RydG91NjQob3B0YXJnLCAm ZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdc MCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0VHJhbnNhY3Rpb25JZElzVmFsaWQoc3Rh cnRfeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGluaXRpYWwg ZGF0YWJhc2UgY2x1c3RlciB4aWQgdmFsdWUiKSkpOworCQkJCQl9CisJCQkJfQorCQkJCWJyZWFr OwogCQkJZGVmYXVsdDoKIAkJCQl3cml0ZV9zdGRlcnIoIlRyeSBcIiVzIC0taGVscFwiIGZvciBt b3JlIGluZm9ybWF0aW9uLlxuIiwKIAkJCQkJCQkgcHJvZ25hbWUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbWFpbi9tYWluLmMgYi9zcmMvYmFja2VuZC9tYWluL21haW4uYwppbmRleCBhZWE5 M2EwMjI5Li42YTMyMjRiYjgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9tYWluL21haW4uYwor KysgYi9zcmMvYmFja2VuZC9tYWluL21haW4uYwpAQCAtMzU4LDEyICszNTgsMTggQEAgaGVscChj b25zdCBjaGFyICpwcm9nbmFtZSkKIAlwcmludGYoXygiICAtRSAgICAgICAgICAgICAgICAgZWNo byBzdGF0ZW1lbnQgYmVmb3JlIGV4ZWN1dGlvblxuIikpOwogCXByaW50ZihfKCIgIC1qICAgICAg ICAgICAgICAgICBkbyBub3QgdXNlIG5ld2xpbmUgYXMgaW50ZXJhY3RpdmUgcXVlcnkgZGVsaW1p dGVyXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXIgRklMRU5BTUUgICAgICAgIHNlbmQgc3Rkb3V0IGFu ZCBzdGRlcnIgdG8gZ2l2ZW4gZmlsZVxuIikpOworCXByaW50ZihfKCIgIC1tIFNUQVJUX01YSUQg ICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZFxuIikpOworCXBy aW50ZihfKCIgIC1vIFNUQVJUX01YT0ZGICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVy IG11bHRpeGFjdCBvZmZzZXRcbiIpKTsKKwlwcmludGYoXygiICAteCBTVEFSVF9YSUQgICAgICAg c2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWRcbiIpKTsKIAogCXByaW50ZihfKCJcbk9w dGlvbnMgZm9yIGJvb3RzdHJhcHBpbmcgbW9kZTpcbiIpKTsKIAlwcmludGYoXygiICAtLWJvb3Qg ICAgICAgICAgICAgc2VsZWN0cyBib290c3RyYXBwaW5nIG1vZGUgKG11c3QgYmUgZmlyc3QgYXJn dW1lbnQpXG4iKSk7CiAJcHJpbnRmKF8oIiAgLS1jaGVjayAgICAgICAgICAgIHNlbGVjdHMgY2hl Y2sgbW9kZSAobXVzdCBiZSBmaXJzdCBhcmd1bWVudClcbiIpKTsKIAlwcmludGYoXygiICBEQk5B TUUgICAgICAgICAgICAgZGF0YWJhc2UgbmFtZSAobWFuZGF0b3J5IGFyZ3VtZW50IGluIGJvb3Rz dHJhcHBpbmcgbW9kZSlcbiIpKTsKIAlwcmludGYoXygiICAtciBGSUxFTkFNRSAgICAgICAgc2Vu ZCBzdGRvdXQgYW5kIHN0ZGVyciB0byBnaXZlbiBmaWxlXG4iKSk7CisJcHJpbnRmKF8oIiAgLW0g U1RBUlRfTVhJRCAgICAgIHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IGlk XG4iKSk7CisJcHJpbnRmKF8oIiAgLW8gU1RBUlRfTVhPRkYgICAgIHNldCBpbml0aWFsIGRhdGFi YXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldFxuIikpOworCXByaW50ZihfKCIgIC14IFNUQVJU X1hJRCAgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZFxuIikpOwogCiAJcHJp bnRmKF8oIlxuUGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBjb21wbGV0ZSBs aXN0IG9mIHJ1bi10aW1lXG4iCiAJCQkgImNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYW5kIGhvdyB0 byBzZXQgdGhlbSBvbiB0aGUgY29tbWFuZCBsaW5lIG9yIGluXG4iCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv cG9zdG1hc3Rlci5jCmluZGV4IDhiZWUxZmI2NjQuLmFmNGIwMDRlMDQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC01NjIsNyArNTYyLDcgQEAgUG9zdG1hc3Rlck1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKiB0Y29wL3Bvc3RncmVzLmMgKHRoZSBvcHRpb24gc2V0 cyBzaG91bGQgbm90IGNvbmZsaWN0KSBhbmQgd2l0aCB0aGUKIAkgKiBjb21tb24gaGVscCgpIGZ1 bmN0aW9uIGluIG1haW4vbWFpbi5jLgogCSAqLwotCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2Ms IGFyZ3YsICJCOmJDOmM6RDpkOkVlRmY6aDppams6bE46T1BwOnI6UzpzVHQ6VzotOiIpKSAhPSAt MSkKKwl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAiQjpiQzpjOkQ6ZDpFZUZmOmg6 aWprOmxtOk46T286UHA6cjpTOnNUdDpXOng6LToiKSkgIT0gLTEpCiAJewogCQlzd2l0Y2ggKG9w dCkKIAkJewpAQCAtNjU5LDEwICs2NTksMTggQEAgUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkJCQlTZXRDb25maWdPcHRpb24oIm1heF9jb25uZWN0aW9ucyIsIG9wdGFy ZywgUEdDX1BPU1RNQVNURVIsIFBHQ19TX0FSR1YpOwogCQkJCWJyZWFrOwogCisJCQljYXNlICdt JzoKKwkJCQkvKiBvbmx5IHVzZWQgYnkgc2luZ2xlLXVzZXIgYmFja2VuZCAqLworCQkJCWJyZWFr OworCiAJCQljYXNlICdPJzoKIAkJCQlTZXRDb25maWdPcHRpb24oImFsbG93X3N5c3RlbV90YWJs ZV9tb2RzIiwgInRydWUiLCBQR0NfUE9TVE1BU1RFUiwgUEdDX1NfQVJHVik7CiAJCQkJYnJlYWs7 CiAKKwkJCWNhc2UgJ28nOgorCQkJCS8qIG9ubHkgdXNlZCBieSBzaW5nbGUtdXNlciBiYWNrZW5k ICovCisJCQkJYnJlYWs7CisKIAkJCWNhc2UgJ1AnOgogCQkJCVNldENvbmZpZ09wdGlvbigiaWdu b3JlX3N5c3RlbV9pbmRleGVzIiwgInRydWUiLCBQR0NfUE9TVE1BU1RFUiwgUEdDX1NfQVJHVik7 CiAJCQkJYnJlYWs7CkBAIC03MTMsNiArNzIxLDEwIEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJwb3N0X2F1dGhfZGVsYXkiLCBv cHRhcmcsIFBHQ19QT1NUTUFTVEVSLCBQR0NfU19BUkdWKTsKIAkJCQlicmVhazsKIAorCQkJY2Fz ZSAneCc6CisJCQkJLyogb25seSB1c2VkIGJ5IHNpbmdsZS11c2VyIGJhY2tlbmQgKi8KKwkJCQli cmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQl3cml0ZV9zdGRlcnIoIlRyeSBcIiVzIC0taGVscFwi IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwKIAkJCQkJCQkgcHJvZ25hbWUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCmluZGV4IGFhYzBiOTZiYmMuLjFmMGUyN2I5YmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTM5 MTgsNyArMzkxOCw3IEBAIHByb2Nlc3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSwgR3VjQ29udGV4dCBjdHgsCiAJICogcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgKHRo ZSBvcHRpb24gc2V0cyBzaG91bGQgbm90IGNvbmZsaWN0KSBhbmQgd2l0aAogCSAqIHRoZSBjb21t b24gaGVscCgpIGZ1bmN0aW9uIGluIG1haW4vbWFpbi5jLgogCSAqLwotCXdoaWxlICgoZmxhZyA9 IGdldG9wdChhcmdjLCBhcmd2LCAiQjpiQzpjOkQ6ZDpFZUZmOmg6aWprOmxOOm5PUHA6cjpTOnNU dDp2Olc6LToiKSkgIT0gLTEpCisJd2hpbGUgKChmbGFnID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJC OmJDOmM6RDpkOkVlRmY6aDppams6bG06TjpuT286UHA6cjpTOnNUdDp2Olc6eDotOiIpKSAhPSAt MSkKIAl7CiAJCXN3aXRjaCAoZmxhZykKIAkJewpAQCAtNDAxMCw2ICs0MDEwLDIzIEBAIHByb2Nl c3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgR3VjQ29udGV4dCBj dHgsCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJzc2wiLCAidHJ1ZSIsIGN0eCwgZ3Vjc291cmNlKTsK IAkJCQlicmVhazsKIAorCQkJY2FzZSAnbSc6CisJCQkJeworCQkJCQljaGFyCSAgICplbmRwdHI7 CisKKwkJCQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teGlkID0gc3RydG91NjQob3B0YXJnLCAm ZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdc MCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0SWRJc1ZhbGlkKHN0YXJ0 X214aWQpKQorCQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImludmFsaWQgaW5pdGlhbCBk YXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJl YWs7CisKIAkJCWNhc2UgJ04nOgogCQkJCVNldENvbmZpZ09wdGlvbigibWF4X2Nvbm5lY3Rpb25z Iiwgb3B0YXJnLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CkBAIC00MDIyLDYgKzQwMzks MjMgQEAgcHJvY2Vzc19wb3N0Z3Jlc19zd2l0Y2hlcyhpbnQgYXJnYywgY2hhciAqYXJndltdLCBH dWNDb250ZXh0IGN0eCwKIAkJCQlTZXRDb25maWdPcHRpb24oImFsbG93X3N5c3RlbV90YWJsZV9t b2RzIiwgInRydWUiLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgJ28n OgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJ c3RhcnRfbXhvZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZlbmRwdHIsIDApOworCisJCQkJCWlmIChl bmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAwIHx8CisJCQkJ CQkhU3RhcnRNdWx0aVhhY3RPZmZzZXRJc1ZhbGlkKHN0YXJ0X214b2ZmKSkKKwkJCQkJeworCQkJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0 aXhhY3Qgb2Zmc2V0IikpKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKKwogCQkJY2FzZSAn UCc6CiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJpZ25vcmVfc3lzdGVtX2luZGV4ZXMiLCAidHJ1ZSIs IGN0eCwgZ3Vjc291cmNlKTsKIAkJCQlicmVhazsKQEAgLTQwNzYsNiArNDExMCwyMyBAQCBwcm9j ZXNzX3Bvc3RncmVzX3N3aXRjaGVzKGludCBhcmdjLCBjaGFyICphcmd2W10sIEd1Y0NvbnRleHQg Y3R4LAogCQkJCVNldENvbmZpZ09wdGlvbigicG9zdF9hdXRoX2RlbGF5Iiwgb3B0YXJnLCBjdHgs IGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgJ3gnOgorCQkJCXsKKwkJCQkJY2hh cgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfeGlkID0gc3RydG91 NjQob3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAq ZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0VHJhbnNhY3Rpb25J ZElzVmFsaWQoc3RhcnRfeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZh bGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWQiKSkpOworCQkJCQl9CisJCQkJfQorCQkJ CWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJCWVycnMrKzsKIAkJCQlicmVhazsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKaW5k ZXggOWE5MTgzMDc4My4uNDEwODY4ZGRkZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvaW5p dGRiLmMKKysrIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKQEAgLTE2OCw2ICsxNjgsOSBAQCBz dGF0aWMgYm9vbCBkYXRhX2NoZWNrc3VtcyA9IHRydWU7CiBzdGF0aWMgY2hhciAqeGxvZ19kaXIg PSBOVUxMOwogc3RhdGljIGludAl3YWxfc2VnbWVudF9zaXplX21iID0gKERFRkFVTFRfWExPR19T RUdfU0laRSkgLyAoMTAyNCAqIDEwMjQpOwogc3RhdGljIERhdGFEaXJTeW5jTWV0aG9kIHN5bmNf bWV0aG9kID0gREFUQV9ESVJfU1lOQ19NRVRIT0RfRlNZTkM7CitzdGF0aWMgVHJhbnNhY3Rpb25J ZCBzdGFydF94aWQgPSAwOworc3RhdGljIE11bHRpWGFjdElkIHN0YXJ0X214aWQgPSAwOworc3Rh dGljIE11bHRpWGFjdE9mZnNldCBzdGFydF9teG9mZiA9IDA7CiAKIAogLyogaW50ZXJuYWwgdmFy cyAqLwpAQCAtMTU2OCw2ICsxNTcxLDExIEBAIGJvb3RzdHJhcF90ZW1wbGF0ZTEodm9pZCkKIAli a2lfbGluZXMgPSByZXBsYWNlX3Rva2VuKGJraV9saW5lcywgIlBPU1RHUkVTIiwKIAkJCQkJCQkg IGVzY2FwZV9xdW90ZXNfYmtpKHVzZXJuYW1lKSk7CiAKKwkvKiByZWxmcm96ZW54aWQgbXVzdCBu b3QgYmUgbGVzcyB0aGFuIEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCAqLworCXNwcmludGYoYnVm LCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIE1heChzdGFydF94aWQsIDMpKTsKKwlia2lf bGluZXMgPSByZXBsYWNlX3Rva2VuKGJraV9saW5lcywgIlJFQ0VOVFhNSU4iLAorCQkJCQkJCSAg YnVmKTsKKwogCWJraV9saW5lcyA9IHJlcGxhY2VfdG9rZW4oYmtpX2xpbmVzLCAiRU5DT0RJTkci LAogCQkJCQkJCSAgZW5jb2RpbmdpZF90b19zdHJpbmcoZW5jb2RpbmdpZCkpOwogCkBAIC0xNTkz LDYgKzE2MDEsOSBAQCBib290c3RyYXBfdGVtcGxhdGUxKHZvaWQpCiAKIAlwcmludGZQUUV4cEJ1 ZmZlcigmY21kLCAiXCIlc1wiIC0tYm9vdCAlcyAlcyIsIGJhY2tlbmRfZXhlYywgYm9vdF9vcHRp b25zLCBleHRyYV9vcHRpb25zKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC1YICVkIiwg d2FsX3NlZ21lbnRfc2l6ZV9tYiAqICgxMDI0ICogMTAyNCkpOworCWFwcGVuZFBRRXhwQnVmZmVy KCZjbWQsICIgLW0gJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X214aWQpOworCWFw cGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgLW8gJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0 YXJ0X214b2ZmKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC14ICVsbHUiLCAodW5zaWdu ZWQgbG9uZyBsb25nKSBzdGFydF94aWQpOwogCWlmIChkYXRhX2NoZWNrc3VtcykKIAkJYXBwZW5k UFFFeHBCdWZmZXIoJmNtZCwgIiAtayIpOwogCWlmIChkZWJ1ZykKQEAgLTI1MzIsMTIgKzI1NDMs MjAgQEAgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8oIiAgLWQsIC0tZGVi dWcgICAgICAgICAgICAgICBnZW5lcmF0ZSBsb3RzIG9mIGRlYnVnZ2luZyBvdXRwdXRcbiIpKTsK IAlwcmludGYoXygiICAgICAgLS1kaXNjYXJkLWNhY2hlcyAgICAgIHNldCBkZWJ1Z19kaXNjYXJk X2NhY2hlcz0xXG4iKSk7CiAJcHJpbnRmKF8oIiAgLUwgRElSRUNUT1JZICAgICAgICAgICAgICB3 aGVyZSB0byBmaW5kIHRoZSBpbnB1dCBmaWxlc1xuIikpOworCXByaW50ZihfKCIgIC1tLCAtLW11 bHRpeGFjdC1pZD1TVEFSVF9NWElEXG4iCisJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZFxuIgorCQkJICIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWF4IHZhbHVlIGlzIDJeNjItMVxuIikpOwogCXByaW50 ZihfKCIgIC1uLCAtLW5vLWNsZWFuICAgICAgICAgICAgZG8gbm90IGNsZWFuIHVwIGFmdGVyIGVy cm9yc1xuIikpOwogCXByaW50ZihfKCIgIC1OLCAtLW5vLXN5bmMgICAgICAgICAgICAgZG8gbm90 IHdhaXQgZm9yIGNoYW5nZXMgdG8gYmUgd3JpdHRlbiBzYWZlbHkgdG8gZGlza1xuIikpOwogCXBy aW50ZihfKCIgICAgICAtLW5vLWluc3RydWN0aW9ucyAgICAgZG8gbm90IHByaW50IGluc3RydWN0 aW9ucyBmb3IgbmV4dCBzdGVwc1xuIikpOworCXByaW50ZihfKCIgIC1vLCAtLW11bHRpeGFjdC1v ZmZzZXQ9U1RBUlRfTVhPRkZcbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl dCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldFxuIgorCQkJICIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWF4IHZhbHVlIGlzIDJeNjItMVxuIikpOwogCXByaW50 ZihfKCIgIC1zLCAtLXNob3cgICAgICAgICAgICAgICAgc2hvdyBpbnRlcm5hbCBzZXR0aW5ncywg dGhlbiBleGl0XG4iKSk7CiAJcHJpbnRmKF8oIiAgICAgIC0tc3luYy1tZXRob2Q9TUVUSE9EICBz ZXQgbWV0aG9kIGZvciBzeW5jaW5nIGZpbGVzIHRvIGRpc2tcbiIpKTsKIAlwcmludGYoXygiICAt UywgLS1zeW5jLW9ubHkgICAgICAgICAgIG9ubHkgc3luYyBkYXRhYmFzZSBmaWxlcyB0byBkaXNr LCB0aGVuIGV4aXRcbiIpKTsKKwlwcmludGYoXygiICAteCwgLS14aWQ9U1RBUlRfWElEICAgICAg IHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkXG4iCisJCQkgIiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtYXggdmFsdWUgaXMgMl42Mi0xXG4iKSk7CiAJcHJpbnRmKF8oIlxuT3Ro ZXIgb3B0aW9uczpcbiIpKTsKIAlwcmludGYoXygiICAtViwgLS12ZXJzaW9uICAgICAgICAgICAg IG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygi ICAtPywgLS1oZWxwICAgICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwLCB0aGVuIGV4aXRcbiIp KTsKQEAgLTMwNzksNiArMzA5OCwxOCBAQCBpbml0aWFsaXplX2RhdGFfZGlyZWN0b3J5KHZvaWQp CiAJLyogTm93IGNyZWF0ZSBhbGwgdGhlIHRleHQgY29uZmlnIGZpbGVzICovCiAJc2V0dXBfY29u ZmlnKCk7CiAKKwlpZiAoc3RhcnRfbXhpZCAhPSAwKQorCQlwcmludGYoXygic2VsZWN0aW5nIGlu aXRpYWwgbXVsdGl4YWN0IGlkIC4uLiAlbGx1XG4iKSwKKwkJCQkgKHVuc2lnbmVkIGxvbmcgbG9u Zykgc3RhcnRfbXhpZCk7CisKKwlpZiAoc3RhcnRfbXhvZmYgIT0gMCkKKwkJcHJpbnRmKF8oInNl bGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBvZmZzZXQgLi4uICVsbHVcbiIpLAorCQkJCSAodW5z aWduZWQgbG9uZyBsb25nKSBzdGFydF9teG9mZik7CisKKwlpZiAoc3RhcnRfeGlkICE9IDApCisJ CXByaW50ZihfKCJzZWxlY3RpbmcgaW5pdGlhbCB4aWQgLi4uICVsbHVcbiIpLAorCQkJCSAodW5z aWduZWQgbG9uZyBsb25nKSBzdGFydF94aWQpOworCiAJLyogQm9vdHN0cmFwIHRlbXBsYXRlMSAq LwogCWJvb3RzdHJhcF90ZW1wbGF0ZTEoKTsKIApAQCAtMzA5NSw4ICszMTI2LDEyIEBAIGluaXRp YWxpemVfZGF0YV9kaXJlY3Rvcnkodm9pZCkKIAlmZmx1c2goc3Rkb3V0KTsKIAogCWluaXRQUUV4 cEJ1ZmZlcigmY21kKTsKLQlwcmludGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiICVzICVzIHRl bXBsYXRlMSA+JXMiLAotCQkJCQkgIGJhY2tlbmRfZXhlYywgYmFja2VuZF9vcHRpb25zLCBleHRy YV9vcHRpb25zLCBERVZOVUxMKTsKKwlwcmludGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiICVz ICVzIiwKKwkJCQkJICBiYWNrZW5kX2V4ZWMsIGJhY2tlbmRfb3B0aW9ucywgZXh0cmFfb3B0aW9u cyk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtbSAlbGx1IiwgKHVuc2lnbmVkIGxvbmcg bG9uZykgc3RhcnRfbXhpZCk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtbyAlbGx1Iiwg KHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhcnRfbXhvZmYpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZj bWQsICIgLXggJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X3hpZCk7CisJYXBwZW5k UFFFeHBCdWZmZXIoJmNtZCwgIiB0ZW1wbGF0ZTEgPiVzIiwgREVWTlVMTCk7CiAKIAlQR19DTURf T1BFTihjbWQuZGF0YSk7CiAKQEAgLTMxODMsNiArMzIxOCw5IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkJeyJpY3UtcnVsZXMiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTh9 LAogCQl7InN5bmMtbWV0aG9kIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDE5fSwKIAkJeyJu by1kYXRhLWNoZWNrc3VtcyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAyMH0sCisJCXsieGlkIiwgcmVx dWlyZWRfYXJndW1lbnQsIE5VTEwsICd4J30sCisJCXsibXVsdGl4YWN0LWlkIiwgcmVxdWlyZWRf YXJndW1lbnQsIE5VTEwsICdtJ30sCisJCXsibXVsdGl4YWN0LW9mZnNldCIsIHJlcXVpcmVkX2Fy Z3VtZW50LCBOVUxMLCAnbyd9LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwogCkBAIC0zMjI0 LDcgKzMyNjIsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkvKiBwcm9jZXNz IGNvbW1hbmQtbGluZSBvcHRpb25zICovCiAKLQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdj LCBhcmd2LCAiQTpjOmREOkU6Z2tMOm5Oc1NUOlU6V1g6IiwKKwl3aGlsZSAoKGMgPSBnZXRvcHRf bG9uZyhhcmdjLCBhcmd2LCAiQTpjOmREOkU6Z2tMOm06bk5vOnNTVDpVOld4Olg6IiwKIAkJCQkJ CQlsb25nX29wdGlvbnMsICZvcHRpb25faW5kZXgpKSAhPSAtMSkKIAl7CiAJCXN3aXRjaCAoYykK QEAgLTMyODIsNiArMzMyMCwzMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJ ZGVidWcgPSB0cnVlOwogCQkJCXByaW50ZihfKCJSdW5uaW5nIGluIGRlYnVnIG1vZGUuXG4iKSk7 CiAJCQkJYnJlYWs7CisJCQljYXNlICdtJzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsK KworCQkJCQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X214aWQgPSBzdHJ0b3U2NChvcHRhcmcsICZl bmRwdHIsIDApOworCisJCQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1ww JyB8fCBlcnJubyAhPSAwIHx8CisJCQkJCQkhU3RhcnRNdWx0aVhhY3RJZElzVmFsaWQoc3RhcnRf bXhpZCkpCisJCQkJCXsKKwkJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBpbml0aWFsIGRhdGFi YXNlIGNsdXN0ZXIgbXVsdGl4YWN0IGlkIik7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJ CWVsc2UgaWYgKHN0YXJ0X214aWQgPCAxKSAvKiBGaXJzdE11bHRpWGFjdElkICovCisJCQkJCXsK KwkJCQkJCS8qCisJCQkJCQkgKiBXZSBhdm9pZCBteGlkIHRvIGJlIHNpbGVudGx5IHNldCB0bwor CQkJCQkJICogRmlyc3RNdWx0aVhhY3RJZCwgdGhvdWdoIGl0IGRvZXMgbm90IGhhcm0uCisJCQkJ CQkgKi8KKwkJCQkJCXBnX2xvZ19lcnJvcigibXVsdGl4YWN0IGlkIHNob3VsZCBiZSBncmVhdGVy IHRoYW4gMCIpOworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKIAkJ CWNhc2UgJ24nOgogCQkJCW5vY2xlYW4gPSB0cnVlOwogCQkJCXByaW50ZihfKCJSdW5uaW5nIGlu IG5vLWNsZWFuIG1vZGUuICBNaXN0YWtlcyB3aWxsIG5vdCBiZSBjbGVhbmVkIHVwLlxuIikpOwpA QCAtMzI4OSw2ICszMzUxLDIxIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCWNh c2UgJ04nOgogCQkJCWRvX3N5bmMgPSBmYWxzZTsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ28nOgor CQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3Rh cnRfbXhvZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZlbmRwdHIsIDApOworCisJCQkJCWlmIChlbmRw dHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAwIHx8CisJCQkJCQkh U3RhcnRNdWx0aVhhY3RPZmZzZXRJc1ZhbGlkKHN0YXJ0X214b2ZmKSkKKwkJCQkJeworCQkJCQkJ cGdfbG9nX2Vycm9yKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3Qg b2Zmc2V0Iik7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJfQorCQkJCWJyZWFrOwogCQkJ Y2FzZSAnUyc6CiAJCQkJc3luY19vbmx5ID0gdHJ1ZTsKIAkJCQlicmVhazsKQEAgLTMzNzcsNiAr MzQ1NCwzMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQljYXNlIDIwOgogCQkJ CWRhdGFfY2hlY2tzdW1zID0gZmFsc2U7CiAJCQkJYnJlYWs7CisJCQljYXNlICd4JzoKKwkJCQl7 CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X3hp ZCA9IHN0cnRvdTY0KG9wdGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBv cHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHN0YXJ0X3hpZCkpCisJCQkJCXsKKwkJCQkJCXBnX2xvZ19lcnJv cigiaW52YWxpZCB2YWx1ZSBmb3IgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZCIpOworCQkJ CQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCQllbHNlIGlmIChzdGFydF94aWQgPCAzKSAvKiBGaXJz dE5vcm1hbFRyYW5zYWN0aW9uSWQgKi8KKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIFdlIGF2 b2lkIHhpZCB0byBiZSBzaWxlbnRseSBzZXQgdG8KKwkJCQkJCSAqIEZpcnN0Tm9ybWFsVHJhbnNh Y3Rpb25JZCwgdGhvdWdoIGl0IGRvZXMgbm90IGhhcm0uCisJCQkJCQkgKi8KKwkJCQkJCXBnX2xv Z19lcnJvcigieGlkIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMiIpOworCQkJCQkJZXhpdCgxKTsK KwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogZ2V0b3B0X2xv bmcgYWxyZWFkeSBlbWl0dGVkIGEgY29tcGxhaW50ICovCiAJCQkJcGdfbG9nX2Vycm9yX2hpbnQo IlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbCBiL3NyYy9iaW4vaW5pdGRi L3QvMDAxX2luaXRkYi5wbAppbmRleCA3NTIwZDNkMGRkLi45MWE4NWQ5ZjRkIDEwMDY0NAotLS0g YS9zcmMvYmluL2luaXRkYi90LzAwMV9pbml0ZGIucGwKKysrIGIvc3JjL2Jpbi9pbml0ZGIvdC8w MDFfaW5pdGRiLnBsCkBAIC0yODIsNCArMjgyLDY0IEBAIGNvbW1hbmRfZmFpbHMoCiAJWyAncGdf Y2hlY2tzdW1zJywgJy1EJywgJGRhdGFkaXJfbm9jaGVja3N1bXMgXSwKIAkicGdfY2hlY2tzdW1z IGZhaWxzIHdpdGggZGF0YSBjaGVja3N1bSBkaXNhYmxlZCIpOwogCisjIFNldCBub24tc3RhbmRh cmQgaW5pdGlhbCBteGlkL214b2ZmL3hpZC4KK2NvbW1hbmRfZmFpbHNfbGlrZSgKKwlbICdpbml0 ZGInLCAnLW0nLCAnc2V2ZW4nLCAkZGF0YWRpciBdLAorCXFyL2luaXRkYjogZXJyb3I6IGludmFs aWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZC8sCisJJ2ZhaWxzIGZvciBp bnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3QgaWQnKTsKK2NvbW1hbmRf ZmFpbHNfbGlrZSgKKwlbICdpbml0ZGInLCAnLW8nLCAnc2V2ZW4nLCAkZGF0YWRpciBdLAorCXFy L2luaXRkYjogZXJyb3I6IGludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFj dCBvZmZzZXQvLAorCSdmYWlscyBmb3IgaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIg bXVsdGl4YWN0IG9mZnNldCcpOworY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ2luaXRkYicsICct eCcsICdzZXZlbicsICRkYXRhZGlyIF0sCisJcXIvaW5pdGRiOiBlcnJvcjogaW52YWxpZCB2YWx1 ZSBmb3IgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZC8sCisJJ2ZhaWxzIGZvciBpbnZhbGlk IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWQnKTsKKworY29tbWFuZF9jaGVja3NfYWxsKAor CVsgJ2luaXRkYicsICctbScsICc2NTUzNScsICIkdGVtcGRpci9kYXRhLW02NTUzNSIgXSwKKwkw LAorCVtxci9zZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3QgaWQgLi4uIDY1NTM1L10sCisJW10s CisJJ3NlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBpZCcpOworY29tbWFuZF9jaGVja3NfYWxs KAorCVsgJ2luaXRkYicsICctbycsICc2NTUzNScsICIkdGVtcGRpci9kYXRhLW82NTUzNSIgXSwK KwkwLAorCVtxci9zZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3Qgb2Zmc2V0IC4uLiA2NTUzNS9d LAorCVtdLAorCSdzZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3Qgb2Zmc2V0Jyk7Citjb21tYW5k X2NoZWNrc19hbGwoCisJWyAnaW5pdGRiJywgJy14JywgJzY1NTM1JywgIiR0ZW1wZGlyL2RhdGEt eDY1NTM1IiBdLAorCTAsCisJW3FyL3NlbGVjdGluZyBpbml0aWFsIHhpZCAuLi4gNjU1MzUvXSwK KwlbXSwKKwknc2VsZWN0aW5nIGluaXRpYWwgeGlkJyk7CisKKyMgU2V0dXAgbmV3IGNsdXN0ZXIg d2l0aCBnaXZlbiBteGlkL214b2ZmL3hpZC4KK215ICRub2RlOworbXkgJHJlc3VsdDsKKworJG5v ZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3Rlc3QtbXhpZCcpOworJG5vZGUt PmluaXQoZXh0cmEgPT4gWyctbScsICcxNjc3NzIxNSddKTsgIyAweEZGRkZGRgorJG5vZGUtPnN0 YXJ0OworJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBuZXh0 X211bHRpeGFjdF9pZCBGUk9NIHBnX2NvbnRyb2xfY2hlY2twb2ludCgpOyIpOworb2soJHJlc3Vs dCA+PSAxNjc3NzIxNSwgJ3NldHVwIGNsdXN0ZXIgd2l0aCBnaXZlbiBteGlkJyk7Ciskbm9kZS0+ c3RvcDsKKworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3Rlc3QtbXhv ZmYnKTsKKyRub2RlLT5pbml0KGV4dHJhID0+IFsnLW8nLCAnMTY3NzcyMTUnXSk7ICMgMHhGRkZG RkYKKyRub2RlLT5zdGFydDsKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgbmV4dF9tdWx0aV9vZmZzZXQgRlJPTSBwZ19jb250cm9sX2NoZWNrcG9pbnQoKTsi KTsKK29rKCRyZXN1bHQgPj0gMTY3NzcyMTUsICdzZXR1cCBjbHVzdGVyIHdpdGggZ2l2ZW4gbXhv ZmYnKTsKKyRub2RlLT5zdG9wOworCiskbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygndGVzdC14aWQnKTsKKyRub2RlLT5pbml0KGV4dHJhID0+IFsnLXgnLCAnMTY3NzcyMTUn XSk7ICMgMHhGRkZGRkYKKyRub2RlLT5zdGFydDsKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgdHhpZF9jdXJyZW50KCk7Iik7CitvaygkcmVzdWx0ID49IDE2 Nzc3MjE1LCAnc2V0dXAgY2x1c3RlciB3aXRoIGdpdmVuIHhpZCAtIGNoZWNrIDEnKTsKKyRyZXN1 bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qgb2xkZXN0X3hpZCBGUk9N IHBnX2NvbnRyb2xfY2hlY2twb2ludCgpOyIpOworb2soJHJlc3VsdCA+PSAxNjc3NzIxNSwgJ3Nl dHVwIGNsdXN0ZXIgd2l0aCBnaXZlbiB4aWQgLSBjaGVjayAyJyk7Ciskbm9kZS0+c3RvcDsKKwog ZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCAzNGFkNDZjMDY3Li40Y2U3OWIxMmUzIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nLmgKQEAgLTk0LDYgKzk0LDkgQEAgdHlwZWRlZiBlbnVtIFJlY292ZXJ5U3RhdGUK IH0gUmVjb3ZlcnlTdGF0ZTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCB3YWxfbGV2ZWw7Citl eHRlcm4gUEdETExJTVBPUlQgVHJhbnNhY3Rpb25JZCBzdGFydF94aWQ7CitleHRlcm4gUEdETExJ TVBPUlQgTXVsdGlYYWN0SWQgc3RhcnRfbXhpZDsKK2V4dGVybiBQR0RMTElNUE9SVCBNdWx0aVhh Y3RPZmZzZXQgc3RhcnRfbXhvZmY7CiAKIC8qIElzIFdBTCBhcmNoaXZpbmcgZW5hYmxlZCAoYWx3 YXlzIG9yIG9ubHkgd2hpbGUgc2VydmVyIGlzIHJ1bm5pbmcgbm9ybWFsbHkpPyAqLwogI2RlZmlu ZSBYTG9nQXJjaGl2aW5nQWN0aXZlKCkgXApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYy5oIGIv c3JjL2luY2x1ZGUvYy5oCmluZGV4IGUxYjMxODdkMGIuLmY3NzBlOWExNDAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTY2OCw2ICs2NjgsMTAg QEAgdHlwZWRlZiB1aW50NjQgTXVsdGlYYWN0T2Zmc2V0OwogCiB0eXBlZGVmIHVpbnQzMiBDb21t YW5kSWQ7CiAKKyNkZWZpbmUgU3RhcnRUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpCQkJKCh4aWQp IDw9IDB4RkZGRkZGRkYpCisjZGVmaW5lIFN0YXJ0TXVsdGlYYWN0SWRJc1ZhbGlkKG14aWQpCQkJ KChteGlkKSA8PSAweEZGRkZGRkZGKQorI2RlZmluZSBTdGFydE11bHRpWGFjdE9mZnNldElzVmFs aWQob2Zmc2V0KQkJKChvZmZzZXQpIDw9IDB4RkZGRkZGRkYpCisKICNkZWZpbmUgRmlyc3RDb21t YW5kSWQJKChDb21tYW5kSWQpIDApCiAjZGVmaW5lIEludmFsaWRDb21tYW5kSWQJKH4oQ29tbWFu ZElkKTApCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaAppbmRleCAwZmMyYzA5M2IwLi4wYTc1MThkZjBk IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCkBAIC0xMjMsNyArMTIzLDcgQEAgQ0FUQUxPRyhwZ19j bGFzcywxMjU5LFJlbGF0aW9uUmVsYXRpb25JZCkgQktJX0JPT1RTVFJBUCBCS0lfUk9XVFlQRV9P SUQoODMsUmVsYXQKIAlPaWQJCQlyZWxyZXdyaXRlIEJLSV9ERUZBVUxUKDApIEJLSV9MT09LVVBf T1BUKHBnX2NsYXNzKTsKIAogCS8qIGFsbCBYaWRzIDwgdGhpcyBhcmUgZnJvemVuIGluIHRoaXMg cmVsICovCi0JVHJhbnNhY3Rpb25JZCByZWxmcm96ZW54aWQgQktJX0RFRkFVTFQoMyk7CS8qIEZp cnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCAqLworCVRyYW5zYWN0aW9uSWQgcmVsZnJvemVueGlkIEJL SV9ERUZBVUxUKFJFQ0VOVFhNSU4pOwkvKiBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQgKi8KIAog CS8qIGFsbCBtdWx0aXhhY3RzIGluIHRoaXMgcmVsIGFyZSA+PSB0aGlzOyBpdCBpcyByZWFsbHkg YSBNdWx0aVhhY3RJZCAqLwogCVRyYW5zYWN0aW9uSWQgcmVsbWlubXhpZCBCS0lfREVGQVVMVCgx KTsJLyogRmlyc3RNdWx0aVhhY3RJZCAqLwotLSAKMi40My4wCgo= --0000000000002fcd1006266aab7b Content-Type: application/octet-stream; name="v6-0003-Get-rid-of-MultiXactMemberFreezeThreshold-call.patch" Content-Disposition: attachment; filename="v6-0003-Get-rid-of-MultiXactMemberFreezeThreshold-call.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m391otk34 RnJvbSBkNWYxZTg4ODBhNWYwNzJjMzg5Mjc0OTU0YjIxZjk4Mjc5N2FmNDdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjMgT2N0IDIwMjQgMTg6MjM6MzkgKzAzMDAKU3ViamVjdDogW1BBVENIIHY2IDMvNl0g R2V0IHJpZCBvZiBNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQgY2FsbC4KClNpbmNlIE1h eE11bHRpWGFjdE9mZnNldCBhcmUgVUlOVDY0X01BWCBub3csIE1VTFRJWEFDVF9NRU1CRVJfU0FG RV9USFJFU0hPTEQgYW5kCk1VTFRJWEFDVF9NRU1CRVJfREFOR0VSX1RIUkVTSE9MRCB2YWx1ZXMg YXJlIG5vdCBtZWFuaW5nZnVsIGFueSBtb3JlLiBUaHVzLApNdWx0aVhhY3RNZW1iZXJGcmVlemVU aHJlc2hvbGQgaXMgbm90IG5lZWRlZCB0b28uCgpJbnN0ZWFkLCBzd2l0Y2ggdG8gTVVMVElYQUNU X01FTUJFUl9BVVRPVkFDX1RIUkVTSE9MRCAoZXEgMl4zMikgbWVtYmVycwp0aHJlc2hvbGQuIEl0 IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gZm9yY2UgYXV0b3ZhY3V1bSBvciBu b3QuCgpBdXRob3I6IE1heGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyB8IDExNyArKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICB8ICAgMiArLQog c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgfCAgIDQgKy0KIHNyYy9pbmNs dWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAgICAgIHwgICAxIC0KIDQgZmlsZXMgY2hhbmdlZCwg MTUgaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vbXVsdGl4YWN0LmMKaW5kZXggNDhlMWMwMTYwYS4uYTgxN2Y1MzllZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTIwNCwxMCArMjA0LDE0IEBAIE1YT2Zmc2V0 VG9NZW1iZXJPZmZzZXQoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKIAkJbWVtYmVyX2luX2dyb3Vw ICogc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwogfQogCi0vKiBNdWx0aXhhY3QgbWVtYmVycyB3cmFw YXJvdW5kIHRocmVzaG9sZHMuICovCi0jZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJF U0hPTEQJCShNYXhNdWx0aVhhY3RPZmZzZXQgLyAyKQotI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVS X0RBTkdFUl9USFJFU0hPTEQJXAotCShNYXhNdWx0aVhhY3RPZmZzZXQgLSBNYXhNdWx0aVhhY3RP ZmZzZXQgLyA0KQorLyoKKyAqIE11bHRpeGFjdCBtZW1iZXJzIHdhcm5pbmcgdGhyZXNob2xkLgor ICoKKyAqIElmIGRpZmZlcmVuY2UgYmV0dHdlZW4gbmV4dE9mZnNldCBhbmQgb2xkZXN0T2Zmc2V0 IGV4Y2VlZCB0aGlzIHZhbHVlLCB3ZQorICogdHJpZ2dlciBhdXRvdmFjdXVtaW4gb3JkZXIgdG8g cmVsZWFzZSB0aGUgZGlzayBzcGFjZSwgcmVkdWNlIHRhYmxlIGJsb2F0IGlmCisgKiBwb3NzaWJs ZS4KKyAqLworI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSX0FVVE9WQUNfVEhSRVNIT0xECQlVSU5U NjRDT05TVCgweEZGRkZGRkZGKQogCiBzdGF0aWMgaW5saW5lIE11bHRpWGFjdElkCiBQcmV2aW91 c011bHRpWGFjdElkKE11bHRpWGFjdElkIG11bHRpKQpAQCAtMjYxNiwxNSArMjYyMCwxMyBAQCBH ZXRPbGRlc3RNdWx0aVhhY3RJZCh2b2lkKQogfQogCiAvKgotICogRGV0ZXJtaW5lIGhvdyBhZ2dy ZXNzaXZlbHkgd2UgbmVlZCB0byB2YWN1dW0gaW4gb3JkZXIgdG8gcHJldmVudCBtZW1iZXIKLSAq IHdyYXBhcm91bmQuCisgKiBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byB2YWN1dW0gZm9yIG1lbWJl ciBvciBub3QuCiAgKgogICogVG8gZG8gc28gZGV0ZXJtaW5lIHdoYXQncyB0aGUgb2xkZXN0IG1l bWJlciBvZmZzZXQgYW5kIGluc3RhbGwgdGhlIGxpbWl0CiAgKiBpbmZvIGluIE11bHRpWGFjdFN0 YXRlLCB3aGVyZSBpdCBjYW4gYmUgdXNlZCB0byBwcmV2ZW50IG92ZXJydW4gb2Ygb2xkIGRhdGEK ICAqIGluIHRoZSBtZW1iZXJzIFNMUlUgYXJlYS4KICAqCi0gKiBUaGUgcmV0dXJuIHZhbHVlIGlz IHRydWUgaWYgZW1lcmdlbmN5IGF1dG92YWN1dW0gaXMgcmVxdWlyZWQgYW5kIGZhbHNlCi0gKiBv dGhlcndpc2UuCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRydWUgaWYgYXV0b3ZhY3V1bSBpcyBy ZXF1aXJlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICovCiBzdGF0aWMgYm9vbAogU2V0T2Zmc2V0 VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQpAQCAtMjcxMiwxMCArMjcxNCwxMCBAQCBTZXRP ZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJTFdMb2NrUmVsZWFzZShNdWx0aVhh Y3RHZW5Mb2NrKTsKIAogCS8qCi0JICogRG8gd2UgbmVlZCBhbiBlbWVyZ2VuY3kgYXV0b3ZhY3V1 bT8JSWYgd2UncmUgbm90IHN1cmUsIGFzc3VtZSB5ZXMuCisJICogRG8gd2UgbmVlZCBhdXRvdmFj dXVtPwlJZiB3ZSdyZSBub3Qgc3VyZSwgYXNzdW1lIHllcy4KIAkgKi8KIAlyZXR1cm4gIW9sZGVz dE9mZnNldEtub3duIHx8Ci0JCShuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4gTVVMVElYQUNU X01FTUJFUl9TQUZFX1RIUkVTSE9MRCk7CisJCShuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4g TVVMVElYQUNUX01FTUJFUl9BVVRPVkFDX1RIUkVTSE9MRCk7CiB9CiAKIC8qCkBAIC0yNzYxLDEw MSArMjc2Myw2IEBAIGZpbmRfbXVsdGl4YWN0X3N0YXJ0KE11bHRpWGFjdElkIG11bHRpLCBNdWx0 aVhhY3RPZmZzZXQgKnJlc3VsdCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotLyoKLSAqIERldGVybWlu ZSBob3cgbWFueSBtdWx0aXhhY3RzLCBhbmQgaG93IG1hbnkgbXVsdGl4YWN0IG1lbWJlcnMsIGN1 cnJlbnRseQotICogZXhpc3QuICBSZXR1cm4gZmFsc2UgaWYgdW5hYmxlIHRvIGRldGVybWluZS4K LSAqLwotc3RhdGljIGJvb2wKLVJlYWRNdWx0aVhhY3RDb3VudHModWludDMyICptdWx0aXhhY3Rz LCBNdWx0aVhhY3RPZmZzZXQgKm1lbWJlcnMpCi17Ci0JTXVsdGlYYWN0T2Zmc2V0IG5leHRPZmZz ZXQ7Ci0JTXVsdGlYYWN0T2Zmc2V0IG9sZGVzdE9mZnNldDsKLQlNdWx0aVhhY3RJZCBvbGRlc3RN dWx0aVhhY3RJZDsKLQlNdWx0aVhhY3RJZCBuZXh0TXVsdGlYYWN0SWQ7Ci0JYm9vbAkJb2xkZXN0 T2Zmc2V0S25vd247Ci0KLQlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExXX1NIQVJF RCk7Ci0JbmV4dE9mZnNldCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0OwotCW9sZGVzdE11 bHRpWGFjdElkID0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE11bHRpWGFjdElkOwotCW5leHRNdWx0 aVhhY3RJZCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0TVhhY3Q7Ci0Jb2xkZXN0T2Zmc2V0ID0gTXVs dGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldDsKLQlvbGRlc3RPZmZzZXRLbm93biA9IE11bHRpWGFj dFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93bjsKLQlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxv Y2spOwotCi0JaWYgKCFvbGRlc3RPZmZzZXRLbm93bikKLQkJcmV0dXJuIGZhbHNlOwotCi0JKm1l bWJlcnMgPSBuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0OwotCSptdWx0aXhhY3RzID0gbmV4dE11 bHRpWGFjdElkIC0gb2xkZXN0TXVsdGlYYWN0SWQ7Ci0JcmV0dXJuIHRydWU7Ci19Ci0KLS8qCi0g KiBNdWx0aXhhY3QgbWVtYmVycyBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoZSBtdWx0aXhhY3RzIHRo YXQgcmVmZXIgdG8gdGhlbQotICogYXJlIG9sZGVyIHRoYW4gZXZlcnkgZGF0bWlubXhpZC4gIGF1 dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlIGFuZAotICogdmFjdXVtX211bHRpeGFj dF9mcmVlemVfdGFibGVfYWdlIHdvcmsgdG9nZXRoZXIgdG8gbWFrZSBzdXJlIHdlIG5ldmVyIGhh dmUKLSAqIHRvbyBtYW55IG11bHRpeGFjdHM7IHdlIGhvcGUgdGhhdCwgYXQgbGVhc3QgdW5kZXIg bm9ybWFsIGNpcmN1bXN0YW5jZXMsCi0gKiB0aGlzIHdpbGwgYWxzbyBiZSBzdWZmaWNpZW50IHRv IGtlZXAgdXMgZnJvbSB1c2luZyB0b28gbWFueSBvZmZzZXRzLgotICogSG93ZXZlciwgaWYgdGhl IGF2ZXJhZ2UgbXVsdGl4YWN0IGhhcyBtYW55IG1lbWJlcnMsIHdlIG1pZ2h0IGV4aGF1c3QgdGhl Ci0gKiBtZW1iZXJzIHNwYWNlIHdoaWxlIHN0aWxsIHVzaW5nIGZldyBlbm91Z2ggbWVtYmVycyB0 aGF0IHRoZXNlIGxpbWl0cyBmYWlsCi0gKiB0byB0cmlnZ2VyIHJlbG1pbm14aWQgYWR2YW5jZW1l bnQgYnkgVkFDVVVNLiAgQXQgdGhhdCBwb2ludCwgd2UnZCBoYXZlIG5vCi0gKiBjaG9pY2UgYnV0 IHRvIHN0YXJ0IGZhaWxpbmcgbXVsdGl4YWN0LWNyZWF0aW5nIG9wZXJhdGlvbnMgd2l0aCBhbiBl cnJvci4KLSAqCi0gKiBUbyBwcmV2ZW50IHRoYXQsIGlmIG1vcmUgdGhhbiBhIHRocmVzaG9sZCBw b3J0aW9uIG9mIHRoZSBtZW1iZXJzIHNwYWNlIGlzCi0gKiB1c2VkLCB3ZSBlZmZlY3RpdmVseSBy ZWR1Y2UgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgYW5kCi0gKiB0byBhIHZh bHVlIGp1c3QgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgbXVsdGl4YWN0cyBpbiB1c2UuICBXZSBo b3BlIHRoYXQKLSAqIHRoaXMgd2lsbCBxdWlja2x5IHRyaWdnZXIgYXV0b3ZhY3V1bWluZyBvbiB0 aGUgdGFibGUgb3IgdGFibGVzIHdpdGggdGhlCi0gKiBvbGRlc3QgcmVsbWlubXhpZCwgdGh1cyBh bGxvd2luZyBkYXRtaW5teGlkIHZhbHVlcyB0byBhZHZhbmNlIGFuZCByZW1vdmluZwotICogc29t ZSBtZW1iZXJzLgotICoKLSAqIEFzIHRoZSBmcmFjdGlvbiBvZiB0aGUgbWVtYmVyIHNwYWNlIGN1 cnJlbnRseSBpbiB1c2UgZ3Jvd3MsIHdlIGJlY29tZQotICogbW9yZSBhZ2dyZXNzaXZlIGluIGNs YW1waW5nIHRoaXMgdmFsdWUuICBUaGF0IG5vdCBvbmx5IGNhdXNlcyBhdXRvdmFjdXVtCi0gKiB0 byByYW1wIHVwLCBidXQgYWxzbyBtYWtlcyBhbnkgbWFudWFsIHZhY3V1bXMgdGhlIHVzZXIgaXNz dWVzIG1vcmUKLSAqIGFnZ3Jlc3NpdmUuICBUaGlzIGhhcHBlbnMgYmVjYXVzZSB2YWN1dW1fZ2V0 X2N1dG9mZnMoKSB3aWxsIGNsYW1wIHRoZQotICogZnJlZXplIHRhYmxlIGFuZCB0aGUgbWluaW11 bSBmcmVlemUgYWdlIGN1dG9mZnMgYmFzZWQgb24gdGhlIGVmZmVjdGl2ZQotICogYXV0b3ZhY3V1 bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgdGhpcyBmdW5jdGlvbiByZXR1cm5zLiAgSW4gdGhl IHdvcnN0Ci0gKiBjYXNlLCB3ZSdsbCBjbGFpbSB0aGUgZnJlZXplX21heF9hZ2UgdG8gemVybywg YW5kIGV2ZXJ5IHZhY3V1bSBvZiBhbnkKLSAqIHRhYmxlIHdpbGwgZnJlZXplIGV2ZXJ5IG11bHRp eGFjdC4KLSAqLwotaW50Ci1NdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQodm9pZCkKLXsK LQlNdWx0aVhhY3RPZmZzZXQgbWVtYmVyczsKLQl1aW50MzIJCW11bHRpeGFjdHM7Ci0JdWludDMy CQl2aWN0aW1fbXVsdGl4YWN0czsKLQlkb3VibGUJCWZyYWN0aW9uOwotCWludAkJCXJlc3VsdDsK LQotCS8qIElmIHdlIGNhbid0IGRldGVybWluZSBtZW1iZXIgc3BhY2UgdXRpbGl6YXRpb24sIGFz c3VtZSB0aGUgd29yc3QuICovCi0JaWYgKCFSZWFkTXVsdGlYYWN0Q291bnRzKCZtdWx0aXhhY3Rz LCAmbWVtYmVycykpCi0JCXJldHVybiAwOwotCi0JLyogSWYgbWVtYmVyIHNwYWNlIHV0aWxpemF0 aW9uIGlzIGxvdywgbm8gc3BlY2lhbCBhY3Rpb24gaXMgcmVxdWlyZWQuICovCi0JaWYgKG1lbWJl cnMgPD0gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCkKLQkJcmV0dXJuIGF1dG92YWN1 dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOwotCi0JLyoKLQkgKiBDb21wdXRlIGEgdGFyZ2V0 IGZvciByZWxtaW5teGlkIGFkdmFuY2VtZW50LiAgVGhlIG51bWJlciBvZiBtdWx0aXhhY3RzCi0J ICogd2UgdHJ5IHRvIGVsaW1pbmF0ZSBmcm9tIHRoZSBzeXN0ZW0gaXMgYmFzZWQgb24gaG93IGZh ciB3ZSBhcmUgcGFzdAotCSAqIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQuCi0JICov Ci0JZnJhY3Rpb24gPSAoZG91YmxlKSAobWVtYmVycyAtIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9U SFJFU0hPTEQpOwotCWZyYWN0aW9uIC89IChkb3VibGUpIChNVUxUSVhBQ1RfTUVNQkVSX0RBTkdF Ul9USFJFU0hPTEQgLSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKLQotCXZpY3Rp bV9tdWx0aXhhY3RzID0gbXVsdGl4YWN0cyAqIGZyYWN0aW9uOwotCi0JLyogZnJhY3Rpb24gY291 bGQgYmUgPiAxLjAsIGJ1dCBsb3dlc3QgcG9zc2libGUgZnJlZXplIGFnZSBpcyB6ZXJvICovCi0J aWYgKHZpY3RpbV9tdWx0aXhhY3RzID4gbXVsdGl4YWN0cykKLQkJcmV0dXJuIDA7Ci0JcmVzdWx0 ID0gbXVsdGl4YWN0cyAtIHZpY3RpbV9tdWx0aXhhY3RzOwotCi0JLyoKLQkgKiBDbGFtcCB0byBh dXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwgc28gdGhhdCB3ZSBuZXZlciBtYWtl Ci0JICogYXV0b3ZhY3V1bSBsZXNzIGFnZ3Jlc3NpdmUgdGhhbiBpdCB3b3VsZCBvdGhlcndpc2Ug YmUuCi0JICovCi0JcmV0dXJuIE1pbihyZXN1bHQsIGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6 ZV9tYXhfYWdlKTsKLX0KLQogdHlwZWRlZiBzdHJ1Y3QgbXh0cnVuY2luZm8KIHsKIAlpbnQ2NAkJ ZWFybGllc3RFeGlzdGluZ1BhZ2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IDg2ZjM2YjM2OTUu LmU3NTA2ZTI2OGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0xMTMzLDcgKzExMzMsNyBAQCB2 YWN1dW1fZ2V0X2N1dG9mZnMoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAkgKiBub3JtYWxseSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwgYnV0 IG1heSBiZSBsZXNzIGlmIHdlIGFyZQogCSAqIHNob3J0IG9mIG11bHRpeGFjdCBtZW1iZXIgc3Bh Y2UuCiAJICovCi0JZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSA9IE11bHRpWGFj dE1lbWJlckZyZWV6ZVRocmVzaG9sZCgpOworCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21h eF9hZ2UgPSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZTsKIAogCS8qCiAJICog QWxtb3N0IHJlYWR5IHRvIHNldCBmcmVlemUgb3V0cHV0IHBhcmFtZXRlcnM7IGNoZWNrIGlmIE9s ZGVzdFhtaW4gb3IKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggZGMzY2Y4N2Fi YS4uMTgwYmI3ZTk2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTExMjIs NyArMTEyMiw3IEBAIGRvX3N0YXJ0X3dvcmtlcih2b2lkKQogCiAJLyogQWxzbyBkZXRlcm1pbmUg dGhlIG9sZGVzdCBkYXRtaW5teGlkIHdlIHdpbGwgY29uc2lkZXIuICovCiAJcmVjZW50TXVsdGkg PSBSZWFkTmV4dE11bHRpWGFjdElkKCk7Ci0JbXVsdGlGb3JjZUxpbWl0ID0gcmVjZW50TXVsdGkg LSBNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQoKTsKKwltdWx0aUZvcmNlTGltaXQgPSBy ZWNlbnRNdWx0aSAtIGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOwogCWlmICht dWx0aUZvcmNlTGltaXQgPCBGaXJzdE11bHRpWGFjdElkKQogCQltdWx0aUZvcmNlTGltaXQgLT0g Rmlyc3RNdWx0aVhhY3RJZDsKIApAQCAtMTkxNSw3ICsxOTE1LDcgQEAgZG9fYXV0b3ZhY3V1bSh2 b2lkKQogCSAqIG5vcm1hbGx5IGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLCBi dXQgbWF5IGJlIGxlc3MgaWYgd2UgYXJlCiAJICogc2hvcnQgb2YgbXVsdGl4YWN0IG1lbWJlciBz cGFjZS4KIAkgKi8KLQllZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlID0gTXVsdGlY YWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKCk7CisJZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVf bWF4X2FnZSA9IGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOwogCiAJLyoKIAkg KiBGaW5kIHRoZSBwZ19kYXRhYmFzZSBlbnRyeSBhbmQgc2VsZWN0IHRoZSBkZWZhdWx0IGZyZWV6 ZSBhZ2VzLiBXZSB1c2UKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3Qu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAppbmRleCA5MDU4MzYzNGVjLi41YWVm YmRkY2UzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oCkBAIC0xNDMsNyArMTQzLDYgQEAgZXh0ZXJu IHZvaWQgTXVsdGlYYWN0U2V0TmV4dE1YYWN0KE11bHRpWGFjdElkIG5leHRNdWx0aSwKIGV4dGVy biB2b2lkIE11bHRpWGFjdEFkdmFuY2VOZXh0TVhhY3QoTXVsdGlYYWN0SWQgbWluTXVsdGksCiAJ CQkJCQkJCQkgIE11bHRpWGFjdE9mZnNldCBtaW5NdWx0aU9mZnNldCk7CiBleHRlcm4gdm9pZCBN dWx0aVhhY3RBZHZhbmNlT2xkZXN0KE11bHRpWGFjdElkIG9sZGVzdE11bHRpLCBPaWQgb2xkZXN0 TXVsdGlEQik7Ci1leHRlcm4gaW50CU11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCh2b2lk KTsKIAogZXh0ZXJuIHZvaWQgbXVsdGl4YWN0X3R3b3BoYXNlX3JlY292ZXIoVHJhbnNhY3Rpb25J ZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJCQkJICAgdm9pZCAqcmVjZGF0YSwgdWludDMyIGxl bik7Ci0tIAoyLjQzLjAKCg== --0000000000002fcd1006266aab7b Content-Type: application/octet-stream; name="v6-0006-TEST-add-basic-mxidoff64-tests-005_mxidoff.pl.patch" Content-Disposition: attachment; filename="v6-0006-TEST-add-basic-mxidoff64-tests-005_mxidoff.pl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m391otkd7 RnJvbSAzODZjZmU3NDdiYzRjY2Q4NjdmM2UyN2Y1Zjc2NjljOGViNzY5MmYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFNhdCwgMiBOb3YgMjAyNCAxMDo0NjoxNiArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjYgNi82XSBU RVNUOiBhZGQgYmFzaWMgbXhpZG9mZjY0IHRlc3RzIDAwNV9teGlkb2ZmLnBsCgotLS0KIHNyYy9i aW4vcGdfdXBncmFkZS90LzAwNV9teGlkb2ZmLnBsIHwgMzg5ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAzODkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iaW4vcGdfdXBncmFkZS90LzAwNV9teGlkb2ZmLnBsCgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA1X214aWRvZmYucGwgYi9zcmMvYmluL3BnX3VwZ3JhZGUv dC8wMDVfbXhpZG9mZi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5l NTk1ODcwNTQzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA1X214 aWRvZmYucGwKQEAgLTAsMCArMSwzODkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdz IEZBVEFMID0+ICdhbGwnOworCit1c2UgRmlsZTo6RmluZCBxdyhmaW5kKTsKKwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2Ug VGVzdDo6TW9yZTsKKworaWYgKCFkZWZpbmVkKCRFTlZ7b2xkaW5zdGFsbH0pKQoreworCWRpZSAi b2xkaW5zdGFsbCBpcyBub3QgZGVmaW5lZCI7Cit9CisKK3N1YiBteGlkX3ByZXBhcmUKK3sKKwlt eSAoJG5vZGUpID0gQF87CisKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcSgKKwlD UkVBVEUgVEFCTEUgRk9PKEJBUiBJTlQgUFJJTUFSWSBLRVksIEJBWiBJTlQpOworCUNSRUFURSBP UiBSRVBMQUNFIFBST0NFRFVSRSBNWElERklMTEVSKE5fU1RFUFMgSU5UIERFRkFVTFQgMTAwMCkK KwlMQU5HVUFHRSBQTFBHU1FMCisJQVMgJCQKKwlCRUdJTgorCQlGT1IgSSBJTiAxLi5OX1NURVBT IExPT1AKKwkJCVVQREFURSBGT08gU0VUIEJBWiA9IFJBTkRPTSgxLCAxMDAwKQorCQkJV0hFUkUg QkFSIElOIChTRUxFQ1QgQkFSIEZST00gRk9PIFRBQkxFU0FNUExFIEJFUk5PVUxMSSg4MCkpOwor CQkJQ09NTUlUOworCQlFTkQgTE9PUDsKKwlFTkQ7JCQ7CisJSU5TRVJUIElOVE8gRk9PIChCQVIs IEJBWikgU0VMRUNUIElELCBJRCBGUk9NIEdFTkVSQVRFX1NFUklFUygxLCA1MTIpIElEOworCSkp OworfQorCitzdWIgbXhpZF9maWxsCit7CisJbXkgKCRub2RlKSA9IEBfOworCisJJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCXEoCisJQkVHSU47CisJU0VMRUNUICogRlJPTSBGT08gRk9S IEtFWSBTSEFSRTsKKwlQUkVQQVJFIFRSQU5TQUNUSU9OICdBJzsKKwlDQUxMIE1YSURGSUxMRVIo MzY1KTsKKwlDT01NSVQgUFJFUEFSRUQgJ0EnOworCSksCisJdGltZW91dCA9PiAzNjAwKTsKK30K KworIyBGZXRjaCBsYXRlc3QgbXVsdGl4YWN0IGNoZWNrcG9pbnQgdmFsdWVzLgorc3ViIG11bHRp X2JvdW5kcworeworCW15ICgkbm9kZSkgPSBAXzsKKwlteSAoJHN0ZG91dCwgJHN0ZGVycikgPSBy dW5fY29tbWFuZChbICdwZ19jb250cm9sZGF0YScsICRub2RlLT5kYXRhX2RpciBdKTsKKwlteSBA Y29udHJvbF9kYXRhID0gc3BsaXQoIlxuIiwgJHN0ZG91dCk7CisJbXkgJG5leHQgPSB1bmRlZjsK KwlteSAkb2xkZXN0ID0gdW5kZWY7CisKKwlmb3JlYWNoIChAY29udHJvbF9kYXRhKQorCXsKKwkJ aWYgKCRfID1+IC9eTGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlYYWN0SWQ6XHMqKC4qKSQv bWcpCisJCXsKKwkJCSRuZXh0ID0gJDE7CisJCX0KKworCQlpZiAoJF8gPX4gL15MYXRlc3QgY2hl Y2twb2ludCdzIG9sZGVzdE11bHRpWGlkOlxzKiguKikkL21nKQorCQl7CisJCQkkb2xkZXN0ID0g JDE7CisJCX0KKworCQlpZiAoZGVmaW5lZCgkb2xkZXN0KSAmJiBkZWZpbmVkKCRuZXh0KSkKKwkJ eworCQkJbGFzdDsKKwkJfQorCX0KKworCWRpZSAiTGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVs dGlYYWN0SWQgbm90IGZvdW5kIGluIGNvbnRyb2wgZmlsZSFcbiIKKwl1bmxlc3MgZGVmaW5lZCgk bmV4dCk7CisKKwlkaWUgIkxhdGVzdCBjaGVja3BvaW50J3Mgb2xkZXN0TXVsdGlYaWQgbm90IGZv dW5kIGluIGNvbnRyb2wgZmlsZSFcbiIKKwl1bmxlc3MgZGVmaW5lZCgkb2xkZXN0KTsKKworCXJl dHVybiAoJG9sZGVzdCwgJG5leHQpOworfQorCisjIExpc3QgcGdfbXVsdGl4YWN0L29mZnNldHMg c2VnbWVudHMgZmlsZW5hbWVzLgorc3ViIGxpc3RfYWN0dWFsX211bHRpeGFjdF9vZmZzZXRzCit7 CisJbXkgKCRub2RlKSA9IEBfOworCW15ICRkaXI7CisKKwlvcGVuZGlyKCRkaXIsICRub2RlLT5k YXRhX2RpciAuICcvcGdfbXVsdGl4YWN0L29mZnNldHMnKSBvciBkaWUgJCE7CisJbXkgQGxpc3Qg PSBzb3J0IGdyZXAgeyAvWzAtOUEtRl0rLyB9IHJlYWRkaXIgJGRpcjsKKwljbG9zZWRpciAkZGly OworCisJcmV0dXJuIEBsaXN0OworfQorCit1c2UgY29uc3RhbnQgU0laRU9GX01VTFRJX1hBQ1Rf T0ZGU0VUICAgPT4gODsKK3VzZSBjb25zdGFudCBCTENLU1ogICAgICAgICAgICAgICAgICAgICA9 PiA4MTkyOwordXNlIGNvbnN0YW50IE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFID0+IEJMQ0tT WiAvIFNJWkVPRl9NVUxUSV9YQUNUX09GRlNFVDsKK3VzZSBjb25zdGFudCBTTFJVX1BBR0VTX1BF Ul9TRUdNRU5UICAgICA9PiAyOworCisjIFNlZSBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9t dWx0aXhhY3QuYworc3ViIE11bHRpWGFjdElkVG9PZmZzZXRTZWdtZW50Cit7CisJbXkgKCRtdWx0 aSkgPSBAXzsKKworCXJldHVybiAkbXVsdGkgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRSAv IFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7Cit9CisKKyMgVmFsaWRhdGUgcGdfbXVsdGl4YWN0L29m ZnNldHMgc2VnbWVudHMgY29udmVyc2lvbi4KK3N1YiB2YWxpZGF0ZV9tdWx0aXhhY3Rfb2Zmc2V0 cworeworCW15ICgkb2xkLCAkbmV3LCAkb2xkbm9kZSkgPSBAXzsKKwlteSAoJG9sZGVzdCwgJG5l eHQpID0gbXVsdGlfYm91bmRzKCRvbGRub2RlKTsKKwlteSAkbWF4c2Vnbm8gPSBNdWx0aVhhY3RJ ZFRvT2Zmc2V0U2VnbWVudCgkbmV4dCk7CisJbXkgJG1heHNlZ25hbWUgPSBzcHJpbnRmKCIlMDRY IiwgJG1heHNlZ25vKTsKKworCXByaW50KCI+Pj4+Pj4+Pj5cbiIpOworCWZvcmVhY2ggbXkgJHNl Z25hbWUgKCBAJG9sZCApCisJeworCQlteSAkc2Vnbm8gPSBoZXgoJHNlZ25hbWUpICogMjsKKwkJ bXkgJGNvbnZlcnRlZDEgPSBzcHJpbnRmKCIlMDRYIiwgJHNlZ25vKTsKKwkJbXkgJGNvbnZlcnRl ZDIgPSBzcHJpbnRmKCIlMDRYIiwgJHNlZ25vICsgMSk7CisKKwkJcHJpbnQgIlske3NlZ25hbWV9 XSAtPiBbJHtjb252ZXJ0ZWQxfSwgJHtjb252ZXJ0ZWQyfV0gXG4iOworCQkjIFNraXAgdGhlIGxh c3Qgc2VnbWVudCBhcyBpdCBtYXkgYmUgaW5jb21wbGV0ZS4KKwkJaWYgKG5vdCAkY29udmVydGVk MSBlcSAkbWF4c2VnbmFtZSkKKwkJeworCQkJZGllICJTZWdtYW5ldCAke3NlZ25hbWV9IGlzIG5v dCBwcm9wZXJseSBjb252ZXJ0ZWQiCisJCQl1bmxlc3MgKG5vdCAkY29udmVydGVkMSBlcSAkbWF4 c2VnbmFtZSkgYW5kCisJCQkJICAgZ3JlcCB7ICRjb252ZXJ0ZWQxIGVxICRfIH0gQCRuZXcgYW5k CisJCQkJICAgZ3JlcCB7ICRjb252ZXJ0ZWQyIGVxICRfIH0gQCRuZXc7CisJCX0KKwl9CisJcHJp bnQoIj4+Pj4+Pj4+PlxuIik7CisKKwlyZXR1cm4gMTsKK30KKworIworIyBTZWxlY3QgdGVzdHMg dG8gcnVuLgorIworbXkgQHRlc3RzID0gKDAsIDEsIDIsIDMpOworCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisjIENBU0UgMAorIworIyBUaGVyZSBtdXN0IGJlIHNldmVyYWwgc2VnbWVudHMgc3Rh cnRpbmcgZnJvbSB0aGUgemVyby4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NLSVA6Cit7CisJ c2tpcCAiY2FzZSAwIiwgMAorCQl1bmxlc3MgKCBncmVwKCAvXjAkLywgQHRlc3RzICkgKTsKKwor CW15ICRvbGRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdvbGRfbm9kZTAn LAorCQkJCQkJCQkJCQkgIGluc3RhbGxfcGF0aCA9PiAkRU5We29sZGluc3RhbGx9KTsKKwkkb2xk bm9kZS0+aW5pdChmb3JjZV9pbml0ZGIgPT4gMSk7CisJJG9sZG5vZGUtPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCAnbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDInKTsKKwkkb2xk bm9kZS0+YXBwZW5kX2NvbmYoJ2ZzeW5jJywgJ29mZicpOworCisJbXkgJG5ld25vZGUgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25ld19ub2RlMCcpOworCSRuZXdub2RlLT5pbml0 KCk7CisKKwljb21tYW5kX29rKAorCQlbCisJCQkncGdfdXBncmFkZScsICctLW5vLXN5bmMnLAor CQkJJy1kJywgJG9sZG5vZGUtPmRhdGFfZGlyLAorCQkJJy1EJywgJG5ld25vZGUtPmRhdGFfZGly LAorCQkJJy1iJywgJG9sZG5vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRpcicpLAorCQkJJy1CJywg JG5ld25vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRpcicpLAorCQkJJy1zJywgJG5ld25vZGUtPmhv c3QsCisJCQknLXAnLCAkb2xkbm9kZS0+cG9ydCwKKwkJCSctUCcsICRuZXdub2RlLT5wb3J0LAor CQkJJy0tY29weScKKwkJXSwKKwkJJ3J1biBvZiBwZ191cGdyYWRlJyk7CisKKwlteSBAbyA9IGxp c3RfYWN0dWFsX211bHRpeGFjdF9vZmZzZXRzKCRvbGRub2RlKTsKKwlteSBAbiA9IGxpc3RfYWN0 dWFsX211bHRpeGFjdF9vZmZzZXRzKCRuZXdub2RlKTsKKwlvayh2YWxpZGF0ZV9tdWx0aXhhY3Rf b2Zmc2V0cyhcQG8sIFxAbiwgJG9sZG5vZGUpLAorCQkiY2FzZTA6IG9mZnNldHMgc2VnbWFudHMg bWF0Y2hlZCIpOworCisJJG9sZG5vZGUtPnN0YXJ0KCk7CisJJG5ld25vZGUtPnN0YXJ0KCk7CisK KwkjIGp1c3QgaW4gY2FzZS4uLgorCW15ICRvbGR2YWwgPSAkb2xkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoU0VMRUNUIDEpKTsKKwlteSAkbmV3dmFsID0gJG5ld25vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxKFNFTEVDVCAxKSk7CisJaXMoJG9sZHZhbCwgJG5ld3ZhbCwgImNhc2Ux OiBzZWxlY3QgZXEiKTsKKworCSRvbGRub2RlLT5zdG9wKCk7CisJJG5ld25vZGUtPnN0b3AoKTsK K30KKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBDQVNFIDEKKyMKKyMgVGhlcmUgbXVzdCBi ZSBzZXZlcmFsIHNlZ21lbnRzIHN0YXJ0aW5nIGZyb20gdGhlIHplcm8uCisjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CitTS0lQOgoreworCXNraXAgImNhc2UgMSIsIDEKKwkJdW5sZXNzICggZ3JlcCgg L14xJC8sIEB0ZXN0cyApICk7CisKKwlteSAkb2xkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygnb2xkX25vZGUxJywKKwkJCQkJCQkJCQkJICBpbnN0YWxsX3BhdGggPT4gJEVO VntvbGRpbnN0YWxsfSk7CisJJG9sZG5vZGUtPmluaXQoZm9yY2VfaW5pdGRiID0+IDEpOworCSRv bGRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9wcmVwYXJlZF90cmFu c2FjdGlvbnMgPSAyJyk7CisJJG9sZG5vZGUtPmFwcGVuZF9jb25mKCdmc3luYycsICdvZmYnKTsK Kwkkb2xkbm9kZS0+c3RhcnQoKTsKKworCW14aWRfcHJlcGFyZSgkb2xkbm9kZSk7CisJbXhpZF9m aWxsKCRvbGRub2RlKTsKKworCSRvbGRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDSEVD S1BPSU5UKSk7CisJJG9sZG5vZGUtPnN0b3AoKTsKKworCW15ICRuZXdub2RlID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCduZXdfbm9kZTEnKTsKKwkkbmV3bm9kZS0+aW5pdCgpOwor CisJY29tbWFuZF9vaygKKwkJWworCQkJJ3BnX3VwZ3JhZGUnLCAnLS1uby1zeW5jJywKKwkJCSct ZCcsICRvbGRub2RlLT5kYXRhX2RpciwKKwkJCSctRCcsICRuZXdub2RlLT5kYXRhX2RpciwKKwkJ CSctYicsICRvbGRub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXInKSwKKwkJCSctQicsICRuZXdu b2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXInKSwKKwkJCSctcycsICRuZXdub2RlLT5ob3N0LAor CQkJJy1wJywgJG9sZG5vZGUtPnBvcnQsCisJCQknLVAnLCAkbmV3bm9kZS0+cG9ydCwKKwkJCSct LWNvcHknCisJCV0sCisJCSdydW4gb2YgcGdfdXBncmFkZScpOworCisJbXkgQG8gPSBsaXN0X2Fj dHVhbF9tdWx0aXhhY3Rfb2Zmc2V0cygkb2xkbm9kZSk7CisJbXkgQG4gPSBsaXN0X2FjdHVhbF9t dWx0aXhhY3Rfb2Zmc2V0cygkbmV3bm9kZSk7CisJb2sodmFsaWRhdGVfbXVsdGl4YWN0X29mZnNl dHMoXEBvLCBcQG4sICRvbGRub2RlKSwKKwkJImNhc2UxOiBvZmZzZXRzIHNlZ21hbnRzIG1hdGNo ZWQiKTsKKworCSRvbGRub2RlLT5zdGFydCgpOworCSRuZXdub2RlLT5zdGFydCgpOworCisJIyBq dXN0IGluIGNhc2UuLi4KKwlteSAkb2xkdmFsID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKFNFTEVDVCAqIEZST00gRk9PKSk7CisJbXkgJG5ld3ZhbCA9ICRuZXdub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcShTRUxFQ1QgKiBGUk9NIEZPTykpOworCWlzKCRvbGR2YWwsICRu ZXd2YWwsICJjYXNlMTogc2VsZWN0IGVxIik7CisKKwkkb2xkbm9kZS0+c3RvcCgpOworCSRuZXdu b2RlLT5zdG9wKCk7Cit9CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgQ0FTRSAyCisjCisj IE5vbi1zdGFuZGFyZCBvbGRlc3RNdWx0aVhpZCBhbmQgTmV4dE11bHRpWGFjdElkLgorIyBUaGVy ZSBtdXN0IGJlIHNldmVyYWwgc2VnbWVudHMgc3RhcnRpbmcgZnJvbSBzb21lIHZhbHVlLgorIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorU0tJUDoKK3sKKwlza2lwICJjYXNlIDIiLCAyCisJCXVubGVz cyAoIGdyZXAoIC9eMiQvLCBAdGVzdHMgKSApOworCisJbXkgJG9sZG5vZGUgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ29sZF9ub2RlMicsCisJCQkJCQkJCQkJCSAgaW5zdGFsbF9w YXRoID0+ICRFTlZ7b2xkaW5zdGFsbH0pOworCSRvbGRub2RlLT5pbml0KGZvcmNlX2luaXRkYiA9 PiAxLAorCQkJCWV4dHJhID0+IFsKKwkJCQkJJy1tJywgJzB4MTIzMDAwJywgJy1vJywgJzB4MTIz MDAwJworCQkJCV0pOworCisJIyBGaXh1cCBNT1ggcGF0Y2ggcXVpcmsKKwl1bmxpbmsgJG9sZG5v ZGUtPmRhdGFfZGlyIC4gJy9wZ19tdWx0aXhhY3QvbWVtYmVycy8wMDAwJzsKKwl1bmxpbmsgJG9s ZG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19tdWx0aXhhY3Qvb2Zmc2V0cy8wMDAwJzsKKworCSRvbGRu b2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9wcmVwYXJlZF90cmFuc2Fj dGlvbnMgPSAyJyk7CisJJG9sZG5vZGUtPmFwcGVuZF9jb25mKCdmc3luYycsICdvZmYnKTsKKwkk b2xkbm9kZS0+c3RhcnQoKTsKKworCW14aWRfcHJlcGFyZSgkb2xkbm9kZSk7CisJbXhpZF9maWxs KCRvbGRub2RlKTsKKworCSRvbGRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDSEVDS1BP SU5UKSk7CisJJG9sZG5vZGUtPnN0b3AoKTsKKworCW15ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCduZXdfbm9kZTInKTsKKwkkbmV3bm9kZS0+aW5pdCgpOworCisJ Y29tbWFuZF9vaygKKwkJWworCQkJJ3BnX3VwZ3JhZGUnLCAnLS1uby1zeW5jJywKKwkJCSctZCcs ICRvbGRub2RlLT5kYXRhX2RpciwKKwkJCSctRCcsICRuZXdub2RlLT5kYXRhX2RpciwKKwkJCSct YicsICRvbGRub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXInKSwKKwkJCSctQicsICRuZXdub2Rl LT5jb25maWdfZGF0YSgnLS1iaW5kaXInKSwKKwkJCSctcycsICRuZXdub2RlLT5ob3N0LAorCQkJ Jy1wJywgJG9sZG5vZGUtPnBvcnQsCisJCQknLVAnLCAkbmV3bm9kZS0+cG9ydCwKKwkJCSctLWNv cHknCisJCV0sCisJCSdydW4gb2YgcGdfdXBncmFkZScpOworCisJbXkgQG8gPSBsaXN0X2FjdHVh bF9tdWx0aXhhY3Rfb2Zmc2V0cygkb2xkbm9kZSk7CisJbXkgQG4gPSBsaXN0X2FjdHVhbF9tdWx0 aXhhY3Rfb2Zmc2V0cygkbmV3bm9kZSk7CisJb2sodmFsaWRhdGVfbXVsdGl4YWN0X29mZnNldHMo XEBvLCBcQG4sICRvbGRub2RlKSwKKwkJImNhc2UyOiBub24tc3RhbmRhcmQgb2Zmc2V0cyBzZWdt YW50cyBtYXRjaGVkIik7CisKKwkkb2xkbm9kZS0+c3RhcnQoKTsKKwkkbmV3bm9kZS0+c3RhcnQo KTsKKworCSMganVzdCBpbiBjYXNlLi4uCisJbXkgJG9sZHZhbCA9ICRvbGRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcShTRUxFQ1QgKiBGUk9NIEZPTykpOworCW15ICRuZXd2YWwgPSAkbmV3 bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUICogRlJPTSBGT08pKTsKKwlpcygk b2xkdmFsLCAkbmV3dmFsLCAiY2FzZTI6IHNlbGVjdCBlcSIpOworCisJJG9sZG5vZGUtPnN0b3Ao KTsKKwkkbmV3bm9kZS0+c3RvcCgpOworfQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIENB U0UgMworIworIyBOb24tc3RhbmRhcmQgb2xkZXN0TXVsdGlYaWQgYW5kIE5leHRNdWx0aVhhY3RJ ZC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NLSVA6Cit7CisJc2tpcCAiY2FzZSAzIiwgMwor CQl1bmxlc3MgKCBncmVwKCAvXjMkLywgQHRlc3RzICkgKTsKKwljaGRpciAke1Bvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOjp0bXBfY2hlY2t9OworCW15ICRvbGRub2RlID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdvbGRfbm9kZTMnLAorCQkJCQkJCQkJCQkgIGluc3RhbGxfcGF0aCA9 PiAkRU5We29sZGluc3RhbGx9KTsKKwkkb2xkbm9kZS0+aW5pdChmb3JjZV9pbml0ZGIgPT4gMSwK KwkJCQlleHRyYSA9PiBbCisJCQkJCSctbScsICcweEZGRkYwMDAwJywgJy1vJywgJzB4RkZGRjAw MDAnCisJCQkJXSk7CisKKwkjIEZpeHVwIE1PWCBwYXRjaCBxdWlyaworCXVubGluayAkb2xkbm9k ZS0+ZGF0YV9kaXIgLiAnL3BnX211bHRpeGFjdC9tZW1iZXJzLzAwMDAnOworCXVubGluayAkb2xk bm9kZS0+ZGF0YV9kaXIgLiAnL3BnX211bHRpeGFjdC9vZmZzZXRzLzAwMDAnOworCisJJG9sZG5v ZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnbWF4X3ByZXBhcmVkX3RyYW5zYWN0 aW9ucyA9IDInKTsKKwkkb2xkbm9kZS0+YXBwZW5kX2NvbmYoJ2ZzeW5jJywgJ29mZicpOworCSRv bGRub2RlLT5zdGFydCgpOworCisJbXhpZF9wcmVwYXJlKCRvbGRub2RlKTsKKwlteGlkX2ZpbGwo JG9sZG5vZGUpOworCW14aWRfZmlsbCgkb2xkbm9kZSk7CisKKwkkb2xkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoQ0hFQ0tQT0lOVCkpOworCSRvbGRub2RlLT5zdG9wKCk7CisKKwlteSAk bmV3bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbmV3X25vZGUzJyk7CisJ JG5ld25vZGUtPmluaXQoKTsKKworCWNvbW1hbmRfb2soCisJCVsKKwkJCSdwZ191cGdyYWRlJywg Jy0tbm8tc3luYycsCisJCQknLWQnLCAkb2xkbm9kZS0+ZGF0YV9kaXIsCisJCQknLUQnLCAkbmV3 bm9kZS0+ZGF0YV9kaXIsCisJCQknLWInLCAkb2xkbm9kZS0+Y29uZmlnX2RhdGEoJy0tYmluZGly JyksCisJCQknLUInLCAkbmV3bm9kZS0+Y29uZmlnX2RhdGEoJy0tYmluZGlyJyksCisJCQknLXMn LCAkbmV3bm9kZS0+aG9zdCwKKwkJCSctcCcsICRvbGRub2RlLT5wb3J0LAorCQkJJy1QJywgJG5l d25vZGUtPnBvcnQsCisJCQknLS1jb3B5JworCQldLAorCQkncnVuIG9mIHBnX3VwZ3JhZGUnKTsK KworCW15IEBvID0gbGlzdF9hY3R1YWxfbXVsdGl4YWN0X29mZnNldHMoJG9sZG5vZGUpOworCW15 IEBuID0gbGlzdF9hY3R1YWxfbXVsdGl4YWN0X29mZnNldHMoJG5ld25vZGUpOworCW9rKHZhbGlk YXRlX211bHRpeGFjdF9vZmZzZXRzKFxAbywgXEBuLCAkb2xkbm9kZSksCisJCSJjYXNlMzogbXVs dGkgd2FycCwgbm9uLXN0YW5kYXJkIG9mZnNldHMgc2VnbWFudHMgbWF0Y2hlZCIpOworCisJJG9s ZG5vZGUtPnN0YXJ0KCk7CisJJG5ld25vZGUtPnN0YXJ0KCk7CisKKwkjIGp1c3QgaW4gY2FzZS4u LgorCW15ICRvbGR2YWwgPSAkb2xkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNU ICogRlJPTSBGT08pKTsKKwlteSAkbmV3dmFsID0gJG5ld25vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKFNFTEVDVCAqIEZST00gRk9PKSk7CisJaXMoJG9sZHZhbCwgJG5ld3ZhbCwgImNhc2Uz OiBzZWxlY3QgZXEiKTsKKworCSRvbGRub2RlLT5zdG9wKCk7CisJJG5ld25vZGUtPnN0b3AoKTsK K30KKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjQzLjAKCg== --0000000000002fcd1006266aab7b Content-Type: application/octet-stream; name="0002-TEST-lower-SLRU_PAGES_PER_SEGMENT.patch" Content-Disposition: attachment; filename="0002-TEST-lower-SLRU_PAGES_PER_SEGMENT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m391ue7w7 RnJvbSA1N2Y5NmJkZmU3Yjc4Nzk0ZTdhYmU4ODAyNTUwZTRhMzFlNmM5MzcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IEZyaSwgOCBOb3YgMjAyNCAyMDo1NjoyNyArMDMwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBURVNU OiBsb3dlciBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UCgotLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9z bHJ1LmggfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3NscnUuaAppbmRleCA5N2U2MTJjZDEwLi43NGRkNTQ4MTlkIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgK QEAgLTM2LDcgKzM2LDcgQEAKICAqIHRha2Ugbm8gZXhwbGljaXQgbm90aWNlIG9mIHRoYXQgZmFj dCBpbiBzbHJ1LmMsIGV4Y2VwdCB3aGVuIGNvbXBhcmluZwogICogc2VnbWVudCBhbmQgcGFnZSBu dW1iZXJzIGluIFNpbXBsZUxydVRydW5jYXRlIChzZWUgUGFnZVByZWNlZGVzKCkpLgogICovCi0j ZGVmaW5lIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQJMzIKKyNkZWZpbmUgU0xSVV9QQUdFU19QRVJf U0VHTUVOVAkyCiAKIC8qCiAgKiBQYWdlIHN0YXR1cyBjb2Rlcy4gIE5vdGUgdGhhdCB0aGVzZSBk byBub3QgaW5jbHVkZSB0aGUgImRpcnR5IiBiaXQuCi0tIAoyLjQzLjAKCg== --0000000000002fcd1006266aab7b Content-Type: application/octet-stream; name="0001-Add-initdb-option-to-initialize-cluster-with-non-sta.patch" Content-Disposition: attachment; filename="0001-Add-initdb-option-to-initialize-cluster-with-non-sta.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m391ue7s6 RnJvbSAzNDYyMzgwMzE0NmExNTI3OTZiNjExNDIxZGQ5Njg0ZTRmZWZhNzg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA0IE1heSAyMDIyIDE1OjUzOjM2ICswMzAwClN1YmplY3Q6IFtQQVRDSCAxLzJd IEFkZCBpbml0ZGIgb3B0aW9uIHRvIGluaXRpYWxpemUgY2x1c3RlciB3aXRoIG5vbi1zdGFuZGFy ZAogeGlkL214aWQvbXhvZmYuCgpUbyBkYXRlIHRlc3RpbmcgZGF0YWJhc2UgY2x1c3RlciB3cmFw YXJ1bmQgd2FzIG5vdCBlYXN5IGFzIGluaXRkYiBoYXMgYWx3YXlzCmluaXRlZCBpdCB3aXRoIGRl ZmF1bHQgeGlkL214aWQvbXhvZmYuIFRoZSBvcHRpb24gdG8gc3BlY2lmeSBhbnkgdmFsaWQKeGlk L214aWQvbXhvZmYgYXQgY2x1c3RlciBzdGFydHVwIHdpbGwgbWFrZSB0aGVzZSB0aGluZ3MgZWFz aWVyLgoKQXV0aG9yOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkF1dGhvcjogUGF2 ZWwgQm9yaXNvdiA8cGFzaGtpbi5lbGZlQGdtYWlsLmNvbT4KQXV0aG9yOiBTdmV0bGFuYSBEZXJl dnlhbmtvIDxzLmRlcmV2eWFua29AcG9zdGdyZXNwcm8ucnU+CkRpc2N1c3Npb246IGh0dHBzOi8v d3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQUNHJTNEZXphYTR2cVlqSjE2eW94 Z3JwYS0lM0RnWG5mMFZ2M0V5OWJqR3JSUkZOMll5V0ZRJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMgICAgICAgICB8ICAyMSArKysrKwogc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgICAgfCAgNTMgKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMgICAgIHwgICA4ICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICAgICB8ICAxNSArKy0KIHNyYy9iYWNr ZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYyAgICAgICAgIHwgIDUwICsrKysrKysrKy0KIHNyYy9i YWNrZW5kL21haW4vbWFpbi5jICAgICAgICAgICAgICAgICAgIHwgICA2ICsrCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgICB8ICAxNCArKy0KIHNyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgIHwgIDUzICsrKysrKysrKystCiBzcmMvYmluL2lu aXRkYi9pbml0ZGIuYyAgICAgICAgICAgICAgICAgICB8IDEwNyArKysrKysrKysrKysrKysrKysr KystCiBzcmMvYmluL2luaXRkYi90LzAwMV9pbml0ZGIucGwgICAgICAgICAgICB8ICA2MCArKysr KysrKysrKysKIHNyYy9iaW4vcGdfYW1jaGVjay90LzAwNF92ZXJpZnlfaGVhcGFtLnBsIHwgIDM1 ICsrKy0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAgICAgICAgICAgICAgIHwgICAz ICsKIHNyYy9pbmNsdWRlL2MuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIHNy Yy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaCAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVz dC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtICB8ICAgNCArLQogc3JjL3Rlc3QvcmVn cmVzcy9wZ19yZWdyZXNzLmMgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L3hpZC02NC90 LzAwMV90ZXN0X2xhcmdlX3hpZHMucGwgIHwgIDU0ICsrKysrKysrKysrCiAxNyBmaWxlcyBjaGFu Z2VkLCA0NjAgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QveGlkLTY0L3QvMDAxX3Rlc3RfbGFyZ2VfeGlkcy5wbAoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL2Nsb2cuYwppbmRleCBlNmY3OTMyMGU5Li4xN2UyOWY0NDk3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vY2xvZy5jCkBAIC04MzQsNiArODM0LDcgQEAgQm9vdFN0cmFwQ0xPRyh2b2lkKQog ewogCWludAkJCXNsb3RubzsKIAlMV0xvY2sJICAgKmxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9j ayhYYWN0Q3RsLCAwKTsKKwlpbnQ2NAkJcGFnZW5vOwogCiAJTFdMb2NrQWNxdWlyZShsb2NrLCBM V19FWENMVVNJVkUpOwogCkBAIC04NDQsNiArODQ1LDI2IEBAIEJvb3RTdHJhcENMT0codm9pZCkK IAlTaW1wbGVMcnVXcml0ZVBhZ2UoWGFjdEN0bCwgc2xvdG5vKTsKIAlBc3NlcnQoIVhhY3RDdGwt PnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKIAorCXBhZ2VubyA9IFRyYW5zYWN0aW9uSWRU b1BhZ2UoWGlkRnJvbUZ1bGxUcmFuc2FjdGlvbklkKFRyYW5zYW1WYXJpYWJsZXMtPm5leHRYaWQp KTsKKwlpZiAocGFnZW5vICE9IDApCisJeworCQlMV0xvY2sgKm5leHRsb2NrID0gU2ltcGxlTHJ1 R2V0QmFua0xvY2soWGFjdEN0bCwgcGFnZW5vKTsKKworCQlpZiAobmV4dGxvY2sgIT0gbG9jaykK KwkJeworCQkJTFdMb2NrUmVsZWFzZShsb2NrKTsKKwkJCUxXTG9ja0FjcXVpcmUobmV4dGxvY2ss IExXX0VYQ0xVU0lWRSk7CisJCQlsb2NrID0gbmV4dGxvY2s7CisJCX0KKworCQkvKiBDcmVhdGUg YW5kIHplcm8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGNvbW1pdCBsb2cgKi8KKwkJc2xvdG5vID0g WmVyb0NMT0dQYWdlKHBhZ2VubywgZmFsc2UpOworCisJCS8qIE1ha2Ugc3VyZSBpdCdzIHdyaXR0 ZW4gb3V0ICovCisJCVNpbXBsZUxydVdyaXRlUGFnZShYYWN0Q3RsLCBzbG90bm8pOworCQlBc3Nl cnQoIVhhY3RDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwl9CisKIAlMV0xvY2tS ZWxlYXNlKGxvY2spOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCmlu ZGV4IDhjMzdkN2ViYTcuLjAxN2VmZjA3YmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211 bHRpeGFjdC5jCkBAIC0yMDM1LDYgKzIwMzUsNyBAQCBCb290U3RyYXBNdWx0aVhhY3Qodm9pZCkK IHsKIAlpbnQJCQlzbG90bm87CiAJTFdMb2NrCSAgICpsb2NrOworCWludDY0CQlwYWdlbm87CiAK IAlsb2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soTXVsdGlYYWN0T2Zmc2V0Q3RsLCAwKTsKIAlM V0xvY2tBY3F1aXJlKGxvY2ssIExXX0VYQ0xVU0lWRSk7CkBAIC0yMDQ2LDYgKzIwNDcsMjYgQEAg Qm9vdFN0cmFwTXVsdGlYYWN0KHZvaWQpCiAJU2ltcGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFjdE9m ZnNldEN0bCwgc2xvdG5vKTsKIAlBc3NlcnQoIU11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5w YWdlX2RpcnR5W3Nsb3Rub10pOwogCisJcGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2Uo TXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCk7CisJaWYgKHBhZ2VubyAhPSAwKQorCXsKKwkJTFdM b2NrICpuZXh0bG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKE11bHRpWGFjdE9mZnNldEN0bCwg cGFnZW5vKTsKKworCQlpZiAobmV4dGxvY2sgIT0gbG9jaykKKwkJeworCQkJTFdMb2NrUmVsZWFz ZShsb2NrKTsKKwkJCUxXTG9ja0FjcXVpcmUobmV4dGxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCQls b2NrID0gbmV4dGxvY2s7CisJCX0KKworCQkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZpcnN0IHBh Z2Ugb2YgdGhlIG9mZnNldHMgbG9nICovCisJCXNsb3RubyA9IFplcm9NdWx0aVhhY3RPZmZzZXRQ YWdlKHBhZ2VubywgZmFsc2UpOworCisJCS8qIE1ha2Ugc3VyZSBpdCdzIHdyaXR0ZW4gb3V0ICov CisJCVNpbXBsZUxydVdyaXRlUGFnZShNdWx0aVhhY3RPZmZzZXRDdGwsIHNsb3Rubyk7CisJCUFz c2VydCghTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSk7CisJ fQorCiAJTFdMb2NrUmVsZWFzZShsb2NrKTsKIAogCWxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9j ayhNdWx0aVhhY3RNZW1iZXJDdGwsIDApOwpAQCAtMjA1OCw3ICsyMDc5LDM5IEBAIEJvb3RTdHJh cE11bHRpWGFjdCh2b2lkKQogCVNpbXBsZUxydVdyaXRlUGFnZShNdWx0aVhhY3RNZW1iZXJDdGws IHNsb3Rubyk7CiAJQXNzZXJ0KCFNdWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0 eVtzbG90bm9dKTsKIAorCXBhZ2VubyA9IE1YT2Zmc2V0VG9NZW1iZXJQYWdlKE11bHRpWGFjdFN0 YXRlLT5uZXh0T2Zmc2V0KTsKKwlpZiAocGFnZW5vICE9IDApCisJeworCQlMV0xvY2sgKm5leHRs b2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soTXVsdGlYYWN0TWVtYmVyQ3RsLCBwYWdlbm8pOwor CisJCWlmIChuZXh0bG9jayAhPSBsb2NrKQorCQl7CisJCQlMV0xvY2tSZWxlYXNlKGxvY2spOwor CQkJTFdMb2NrQWNxdWlyZShuZXh0bG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJCWxvY2sgPSBuZXh0 bG9jazsKKwkJfQorCisJCS8qIENyZWF0ZSBhbmQgemVybyB0aGUgZmlyc3QgcGFnZSBvZiB0aGUg bWVtYmVycyBsb2cgKi8KKwkJc2xvdG5vID0gWmVyb011bHRpWGFjdE1lbWJlclBhZ2UocGFnZW5v LCBmYWxzZSk7CisKKwkJLyogTWFrZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KKwkJU2ltcGxl THJ1V3JpdGVQYWdlKE11bHRpWGFjdE1lbWJlckN0bCwgc2xvdG5vKTsKKwkJQXNzZXJ0KCFNdWx0 aVhhY3RNZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwl9CisKIAlMV0xv Y2tSZWxlYXNlKGxvY2spOworCisJLyoKKwkgKiBJZiB3ZSdyZSBzdGFydGluZyBub3QgZnJvbSB6 ZXJvIG9mZnNldCwgaW5pdGlsaXplIGR1bW15IG11bHRpeGFjdCB0bworCSAqIGV2YWRlIHRvbyBs b25nIGxvb3AgaW4gUGVyZm9ybU1lbWJlcnNUcnVuY2F0aW9uKCkuCisJICovCisJaWYgKE11bHRp WGFjdFN0YXRlLT5uZXh0T2Zmc2V0ID4gMCAmJiBNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0ID4g MCkKKwl7CisJCVJlY29yZE5ld011bHRpWGFjdChGaXJzdE11bHRpWGFjdElkLAorCQkJCQkJICAg TXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQsIDAsIE5VTEwpOworCQlSZWNvcmROZXdNdWx0aVhh Y3QoTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCwKKwkJCQkJCSAgIE11bHRpWGFjdFN0YXRlLT5u ZXh0T2Zmc2V0LCAwLCBOVUxMKTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v c3VidHJhbnMuYwppbmRleCA1MGJiMWQ4Y2ZjLi5hNWU2ZThmMDkwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3N1YnRyYW5zLmMKQEAgLTI3MCwxMiArMjcwLDE2IEBAIHZvaWQKIEJvb3RTdHJh cFNVQlRSQU5TKHZvaWQpCiB7CiAJaW50CQkJc2xvdG5vOwotCUxXTG9jawkgICAqbG9jayA9IFNp bXBsZUxydUdldEJhbmtMb2NrKFN1YlRyYW5zQ3RsLCAwKTsKKwlMV0xvY2sJICAgKmxvY2s7CisJ aW50NjQJCXBhZ2VubzsKKworCXBhZ2VubyA9IFRyYW5zYWN0aW9uSWRUb1BhZ2UoWGlkRnJvbUZ1 bGxUcmFuc2FjdGlvbklkKFRyYW5zYW1WYXJpYWJsZXMtPm5leHRYaWQpKTsKKwlsb2NrID0gU2lt cGxlTHJ1R2V0QmFua0xvY2soU3ViVHJhbnNDdGwsIHBhZ2Vubyk7CiAKIAlMV0xvY2tBY3F1aXJl KGxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKIAkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZpcnN0IHBh Z2Ugb2YgdGhlIHN1YnRyYW5zIGxvZyAqLwotCXNsb3RubyA9IFplcm9TVUJUUkFOU1BhZ2UoMCk7 CisJc2xvdG5vID0gWmVyb1NVQlRSQU5TUGFnZShwYWdlbm8pOwogCiAJLyogTWFrZSBzdXJlIGl0 J3Mgd3JpdHRlbiBvdXQgKi8KIAlTaW1wbGVMcnVXcml0ZVBhZ2UoU3ViVHJhbnNDdGwsIHNsb3Ru byk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggNmY1ODQxMmJjYS4uYzYxZDdkOTY3 YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtMTM2LDYgKzEzNiwxMCBAQCBpbnQJ CQltYXhfc2xvdF93YWxfa2VlcF9zaXplX21iID0gLTE7CiBpbnQJCQl3YWxfZGVjb2RlX2J1ZmZl cl9zaXplID0gNTEyICogMTAyNDsKIGJvb2wJCXRyYWNrX3dhbF9pb190aW1pbmcgPSBmYWxzZTsK IAorVHJhbnNhY3Rpb25JZAkJc3RhcnRfeGlkID0gRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkOwor TXVsdGlYYWN0SWQJCQlzdGFydF9teGlkID0gRmlyc3RNdWx0aVhhY3RJZDsKK011bHRpWGFjdE9m ZnNldAkJc3RhcnRfbXhvZmYgPSAwOworCiAjaWZkZWYgV0FMX0RFQlVHCiBib29sCQlYTE9HX0RF QlVHID0gZmFsc2U7CiAjZW5kaWYKQEAgLTUwODAsMTMgKzUwODQsMTQgQEAgQm9vdFN0cmFwWExP Ryh1aW50MzIgZGF0YV9jaGVja3N1bV92ZXJzaW9uKQogCWNoZWNrUG9pbnQuZnVsbFBhZ2VXcml0 ZXMgPSBmdWxsUGFnZVdyaXRlczsKIAljaGVja1BvaW50LndhbF9sZXZlbCA9IHdhbF9sZXZlbDsK IAljaGVja1BvaW50Lm5leHRYaWQgPQotCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFuZFhp ZCgwLCBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQpOworCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21F cG9jaEFuZFhpZCgwLCBNYXgoRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkJCQkJ c3RhcnRfeGlkKSk7CiAJY2hlY2tQb2ludC5uZXh0T2lkID0gRmlyc3RHZW5ia2lPYmplY3RJZDsK LQljaGVja1BvaW50Lm5leHRNdWx0aSA9IEZpcnN0TXVsdGlYYWN0SWQ7Ci0JY2hlY2tQb2ludC5u ZXh0TXVsdGlPZmZzZXQgPSAwOwotCWNoZWNrUG9pbnQub2xkZXN0WGlkID0gRmlyc3ROb3JtYWxU cmFuc2FjdGlvbklkOworCWNoZWNrUG9pbnQubmV4dE11bHRpID0gTWF4KEZpcnN0TXVsdGlYYWN0 SWQsIHN0YXJ0X214aWQpOworCWNoZWNrUG9pbnQubmV4dE11bHRpT2Zmc2V0ID0gc3RhcnRfbXhv ZmY7CisJY2hlY2tQb2ludC5vbGRlc3RYaWQgPSBYaWRGcm9tRnVsbFRyYW5zYWN0aW9uSWQoY2hl Y2tQb2ludC5uZXh0WGlkKTsKIAljaGVja1BvaW50Lm9sZGVzdFhpZERCID0gVGVtcGxhdGUxRGJP aWQ7Ci0JY2hlY2tQb2ludC5vbGRlc3RNdWx0aSA9IEZpcnN0TXVsdGlYYWN0SWQ7CisJY2hlY2tQ b2ludC5vbGRlc3RNdWx0aSA9IGNoZWNrUG9pbnQubmV4dE11bHRpOwogCWNoZWNrUG9pbnQub2xk ZXN0TXVsdGlEQiA9IFRlbXBsYXRlMURiT2lkOwogCWNoZWNrUG9pbnQub2xkZXN0Q29tbWl0VHNY aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAljaGVja1BvaW50Lm5ld2VzdENvbW1pdFRzWGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ib290c3Ry YXAvYm9vdHN0cmFwLmMgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKaW5kZXgg ZWQ1OWRmY2U4OS4uMzgxNjVlYjc5NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFw L2Jvb3RzdHJhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwpAQCAt MjE2LDcgKzIxNiw3IEBAIEJvb3RzdHJhcE1vZGVNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10s IGJvb2wgY2hlY2tfb25seSkKIAlhcmd2Kys7CiAJYXJnYy0tOwogCi0Jd2hpbGUgKChmbGFnID0g Z2V0b3B0KGFyZ2MsIGFyZ3YsICJCOmM6ZDpEOkZrcjpYOi06IikpICE9IC0xKQorCXdoaWxlICgo ZmxhZyA9IGdldG9wdChhcmdjLCBhcmd2LCAiQjpjOmQ6RDpGa206bzpyOlg6eDotOiIpKSAhPSAt MSkKIAl7CiAJCXN3aXRjaCAoZmxhZykKIAkJewpAQCAtMjcxLDEyICsyNzEsNjAgQEAgQm9vdHN0 cmFwTW9kZU1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgYm9vbCBjaGVja19vbmx5KQogCQkJ Y2FzZSAnayc6CiAJCQkJYm9vdHN0cmFwX2RhdGFfY2hlY2tzdW1fdmVyc2lvbiA9IFBHX0RBVEFf Q0hFQ0tTVU1fVkVSU0lPTjsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ20nOgorCQkJCXsKKwkJCQkJ Y2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfbXhpZCA9IHN0 cnRvdWxsKG9wdGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcg fHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydE11bHRpWGFj dElkSXNWYWxpZChzdGFydF9teGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJp bnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3QgaWQiKSkpOworCQkJCQl9 CisJCQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSAnbyc6CisJCQkJeworCQkJCQljaGFyCSAgICpl bmRwdHI7CisKKwkJCQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teG9mZiA9IHN0cnRvdWxsKG9w dGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0 ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydE11bHRpWGFjdE9mZnNldElz VmFsaWQoc3RhcnRfbXhvZmYpKQorCQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImludmFs aWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBvZmZzZXQiKSkpOworCQkJCQl9 CisJCQkJfQorCQkJCWJyZWFrOwogCQkJY2FzZSAncic6CiAJCQkJc3RybGNweShPdXRwdXRGaWxl TmFtZSwgb3B0YXJnLCBNQVhQR1BBVEgpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAnWCc6CiAJCQkJ U2V0Q29uZmlnT3B0aW9uKCJ3YWxfc2VnbWVudF9zaXplIiwgb3B0YXJnLCBQR0NfSU5URVJOQUws IFBHQ19TX0RZTkFNSUNfREVGQVVMVCk7CiAJCQkJYnJlYWs7CisJCQljYXNlICd4JzoKKwkJCQl7 CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X3hp ZCA9IHN0cnRvdWxsKG9wdGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBv cHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHN0YXJ0X3hpZCkpCisJCQkJCXsKKwkJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVy cm1zZygiaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkIHZhbHVlIikpKTsKKwkJ CQkJfQorCQkJCX0KKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJd3JpdGVfc3RkZXJyKCJU cnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIsCiAJCQkJCQkJIHByb2du YW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL21haW4vbWFpbi5jIGIvc3JjL2JhY2tlbmQv bWFpbi9tYWluLmMKaW5kZXggYWVhOTNhMDIyOS4uNmEzMjI0YmI4MiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbWFpbi9tYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvbWFpbi9tYWluLmMKQEAgLTM1 OCwxMiArMzU4LDE4IEBAIGhlbHAoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8oIiAg LUUgICAgICAgICAgICAgICAgIGVjaG8gc3RhdGVtZW50IGJlZm9yZSBleGVjdXRpb25cbiIpKTsK IAlwcmludGYoXygiICAtaiAgICAgICAgICAgICAgICAgZG8gbm90IHVzZSBuZXdsaW5lIGFzIGlu dGVyYWN0aXZlIHF1ZXJ5IGRlbGltaXRlclxuIikpOwogCXByaW50ZihfKCIgIC1yIEZJTEVOQU1F ICAgICAgICBzZW5kIHN0ZG91dCBhbmQgc3RkZXJyIHRvIGdpdmVuIGZpbGVcbiIpKTsKKwlwcmlu dGYoXygiICAtbSBTVEFSVF9NWElEICAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBt dWx0aXhhY3QgaWRcbiIpKTsKKwlwcmludGYoXygiICAtbyBTVEFSVF9NWE9GRiAgICAgc2V0IGlu aXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3Qgb2Zmc2V0XG4iKSk7CisJcHJpbnRmKF8o IiAgLXggU1RBUlRfWElEICAgICAgIHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkXG4i KSk7CiAKIAlwcmludGYoXygiXG5PcHRpb25zIGZvciBib290c3RyYXBwaW5nIG1vZGU6XG4iKSk7 CiAJcHJpbnRmKF8oIiAgLS1ib290ICAgICAgICAgICAgIHNlbGVjdHMgYm9vdHN0cmFwcGluZyBt b2RlIChtdXN0IGJlIGZpcnN0IGFyZ3VtZW50KVxuIikpOwogCXByaW50ZihfKCIgIC0tY2hlY2sg ICAgICAgICAgICBzZWxlY3RzIGNoZWNrIG1vZGUgKG11c3QgYmUgZmlyc3QgYXJndW1lbnQpXG4i KSk7CiAJcHJpbnRmKF8oIiAgREJOQU1FICAgICAgICAgICAgIGRhdGFiYXNlIG5hbWUgKG1hbmRh dG9yeSBhcmd1bWVudCBpbiBib290c3RyYXBwaW5nIG1vZGUpXG4iKSk7CiAJcHJpbnRmKF8oIiAg LXIgRklMRU5BTUUgICAgICAgIHNlbmQgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gZ2l2ZW4gZmlsZVxu IikpOworCXByaW50ZihfKCIgIC1tIFNUQVJUX01YSUQgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFz ZSBjbHVzdGVyIG11bHRpeGFjdCBpZFxuIikpOworCXByaW50ZihfKCIgIC1vIFNUQVJUX01YT0ZG ICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBvZmZzZXRcbiIpKTsK KwlwcmludGYoXygiICAteCBTVEFSVF9YSUQgICAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1 c3RlciB4aWRcbiIpKTsKIAogCXByaW50ZihfKCJcblBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0 aW9uIGZvciB0aGUgY29tcGxldGUgbGlzdCBvZiBydW4tdGltZVxuIgogCQkJICJjb25maWd1cmF0 aW9uIHNldHRpbmdzIGFuZCBob3cgdG8gc2V0IHRoZW0gb24gdGhlIGNvbW1hbmQgbGluZSBvciBp blxuIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCA4YmVlMWZiNjY0Li5hZjRi MDA0ZTA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwor KysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtNTYyLDcgKzU2Miw3 IEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICogdGNvcC9wb3N0 Z3Jlcy5jICh0aGUgb3B0aW9uIHNldHMgc2hvdWxkIG5vdCBjb25mbGljdCkgYW5kIHdpdGggdGhl CiAJICogY29tbW9uIGhlbHAoKSBmdW5jdGlvbiBpbiBtYWluL21haW4uYy4KIAkgKi8KLQl3aGls ZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAiQjpiQzpjOkQ6ZDpFZUZmOmg6aWprOmxOOk9Q cDpyOlM6c1R0Olc6LToiKSkgIT0gLTEpCisJd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJn diwgIkI6YkM6YzpEOmQ6RWVGZjpoOmlqazpsbTpOOk9vOlBwOnI6UzpzVHQ6Vzp4Oi06IikpICE9 IC0xKQogCXsKIAkJc3dpdGNoIChvcHQpCiAJCXsKQEAgLTY1OSwxMCArNjU5LDE4IEBAIFBvc3Rt YXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJt YXhfY29ubmVjdGlvbnMiLCBvcHRhcmcsIFBHQ19QT1NUTUFTVEVSLCBQR0NfU19BUkdWKTsKIAkJ CQlicmVhazsKIAorCQkJY2FzZSAnbSc6CisJCQkJLyogb25seSB1c2VkIGJ5IHNpbmdsZS11c2Vy IGJhY2tlbmQgKi8KKwkJCQlicmVhazsKKwogCQkJY2FzZSAnTyc6CiAJCQkJU2V0Q29uZmlnT3B0 aW9uKCJhbGxvd19zeXN0ZW1fdGFibGVfbW9kcyIsICJ0cnVlIiwgUEdDX1BPU1RNQVNURVIsIFBH Q19TX0FSR1YpOwogCQkJCWJyZWFrOwogCisJCQljYXNlICdvJzoKKwkJCQkvKiBvbmx5IHVzZWQg Ynkgc2luZ2xlLXVzZXIgYmFja2VuZCAqLworCQkJCWJyZWFrOworCiAJCQljYXNlICdQJzoKIAkJ CQlTZXRDb25maWdPcHRpb24oImlnbm9yZV9zeXN0ZW1faW5kZXhlcyIsICJ0cnVlIiwgUEdDX1BP U1RNQVNURVIsIFBHQ19TX0FSR1YpOwogCQkJCWJyZWFrOwpAQCAtNzEzLDYgKzcyMSwxMCBAQCBQ b3N0bWFzdGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCVNldENvbmZpZ09wdGlv bigicG9zdF9hdXRoX2RlbGF5Iiwgb3B0YXJnLCBQR0NfUE9TVE1BU1RFUiwgUEdDX1NfQVJHVik7 CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgJ3gnOgorCQkJCS8qIG9ubHkgdXNlZCBieSBzaW5nbGUt dXNlciBiYWNrZW5kICovCisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CiAJCQkJd3JpdGVfc3Rk ZXJyKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIsCiAJCQkJCQkJ IHByb2duYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCBhYWMwYjk2YmJjLi40NjM2ZDk5YjJmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBwcm9jZXNzX3Bvc3RncmVzX3N3 aXRjaGVzKGludCBhcmdjLCBjaGFyICphcmd2W10sIEd1Y0NvbnRleHQgY3R4LAogCSAqIHBvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5jICh0aGUgb3B0aW9uIHNldHMgc2hvdWxkIG5vdCBjb25mbGljdCkg YW5kIHdpdGgKIAkgKiB0aGUgY29tbW9uIGhlbHAoKSBmdW5jdGlvbiBpbiBtYWluL21haW4uYy4K IAkgKi8KLQl3aGlsZSAoKGZsYWcgPSBnZXRvcHQoYXJnYywgYXJndiwgIkI6YkM6YzpEOmQ6RWVG ZjpoOmlqazpsTjpuT1BwOnI6UzpzVHQ6djpXOi06IikpICE9IC0xKQorCXdoaWxlICgoZmxhZyA9 IGdldG9wdChhcmdjLCBhcmd2LCAiQjpiQzpjOkQ6ZDpFZUZmOmg6aWprOmxtOk46bk9vOlBwOnI6 UzpzVHQ6djpXOng6LToiKSkgIT0gLTEpCiAJewogCQlzd2l0Y2ggKGZsYWcpCiAJCXsKQEAgLTQw MTAsNiArNDAxMCwyMyBAQCBwcm9jZXNzX3Bvc3RncmVzX3N3aXRjaGVzKGludCBhcmdjLCBjaGFy ICphcmd2W10sIEd1Y0NvbnRleHQgY3R4LAogCQkJCVNldENvbmZpZ09wdGlvbigic3NsIiwgInRy dWUiLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgJ20nOgorCQkJCXsK KwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfbXhp ZCA9IHN0cnRvdWxsKG9wdGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBv cHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydE11 bHRpWGFjdElkSXNWYWxpZChzdGFydF9teGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJy bXNnKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3QgaWQiKSkpOwor CQkJCQl9CisJCQkJfQorCQkJCWJyZWFrOworCiAJCQljYXNlICdOJzoKIAkJCQlTZXRDb25maWdP cHRpb24oIm1heF9jb25uZWN0aW9ucyIsIG9wdGFyZywgY3R4LCBndWNzb3VyY2UpOwogCQkJCWJy ZWFrOwpAQCAtNDAyMiw2ICs0MDM5LDIzIEBAIHByb2Nlc3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgR3VjQ29udGV4dCBjdHgsCiAJCQkJU2V0Q29uZmlnT3B0aW9u KCJhbGxvd19zeXN0ZW1fdGFibGVfbW9kcyIsICJ0cnVlIiwgY3R4LCBndWNzb3VyY2UpOwogCQkJ CWJyZWFrOwogCisJCQljYXNlICdvJzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKwor CQkJCQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X214b2ZmID0gc3RydG91bGwob3B0YXJnLCAmZW5k cHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcg fHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0T2Zmc2V0SXNWYWxpZChzdGFy dF9teG9mZikpCisJCQkJCXsKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW52YWxpZCBpbml0aWFs IGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldCIpKSk7CisJCQkJCX0KKwkJCQl9CisJ CQkJYnJlYWs7CisKIAkJCWNhc2UgJ1AnOgogCQkJCVNldENvbmZpZ09wdGlvbigiaWdub3JlX3N5 c3RlbV9pbmRleGVzIiwgInRydWUiLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CkBAIC00 MDc2LDYgKzQxMTAsMjMgQEAgcHJvY2Vzc19wb3N0Z3Jlc19zd2l0Y2hlcyhpbnQgYXJnYywgY2hh ciAqYXJndltdLCBHdWNDb250ZXh0IGN0eCwKIAkJCQlTZXRDb25maWdPcHRpb24oInBvc3RfYXV0 aF9kZWxheSIsIG9wdGFyZywgY3R4LCBndWNzb3VyY2UpOwogCQkJCWJyZWFrOwogCisJCQljYXNl ICd4JzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJ CQkJCXN0YXJ0X3hpZCA9IHN0cnRvdWxsKG9wdGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYg KGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJ CQkJCSFTdGFydFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0YXJ0X3hpZCkpCisJCQkJCXsKKwkJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJCQkJIGVycm1zZygiaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkIikp KTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQllcnJzKys7 CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYyBiL3NyYy9i aW4vaW5pdGRiL2luaXRkYi5jCmluZGV4IDlhOTE4MzA3ODMuLjFjYzU0MzkyZTUgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5j CkBAIC0xNjgsNiArMTY4LDkgQEAgc3RhdGljIGJvb2wgZGF0YV9jaGVja3N1bXMgPSB0cnVlOwog c3RhdGljIGNoYXIgKnhsb2dfZGlyID0gTlVMTDsKIHN0YXRpYyBpbnQJd2FsX3NlZ21lbnRfc2l6 ZV9tYiA9IChERUZBVUxUX1hMT0dfU0VHX1NJWkUpIC8gKDEwMjQgKiAxMDI0KTsKIHN0YXRpYyBE YXRhRGlyU3luY01ldGhvZCBzeW5jX21ldGhvZCA9IERBVEFfRElSX1NZTkNfTUVUSE9EX0ZTWU5D Oworc3RhdGljIFRyYW5zYWN0aW9uSWQgc3RhcnRfeGlkID0gMDsKK3N0YXRpYyBNdWx0aVhhY3RJ ZCBzdGFydF9teGlkID0gMDsKK3N0YXRpYyBNdWx0aVhhY3RPZmZzZXQgc3RhcnRfbXhvZmYgPSAw OwogCiAKIC8qIGludGVybmFsIHZhcnMgKi8KQEAgLTE1NjgsNiArMTU3MSwxMSBAQCBib290c3Ry YXBfdGVtcGxhdGUxKHZvaWQpCiAJYmtpX2xpbmVzID0gcmVwbGFjZV90b2tlbihia2lfbGluZXMs ICJQT1NUR1JFUyIsCiAJCQkJCQkJICBlc2NhcGVfcXVvdGVzX2JraSh1c2VybmFtZSkpOwogCisJ LyogcmVsZnJvemVueGlkIG11c3Qgbm90IGJlIGxlc3MgdGhhbiBGaXJzdE5vcm1hbFRyYW5zYWN0 aW9uSWQgKi8KKwlzcHJpbnRmKGJ1ZiwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKSBNYXgo c3RhcnRfeGlkLCAzKSk7CisJYmtpX2xpbmVzID0gcmVwbGFjZV90b2tlbihia2lfbGluZXMsICJS RUNFTlRYTUlOIiwKKwkJCQkJCQkgIGJ1Zik7CisKIAlia2lfbGluZXMgPSByZXBsYWNlX3Rva2Vu KGJraV9saW5lcywgIkVOQ09ESU5HIiwKIAkJCQkJCQkgIGVuY29kaW5naWRfdG9fc3RyaW5nKGVu Y29kaW5naWQpKTsKIApAQCAtMTU5Myw2ICsxNjAxLDkgQEAgYm9vdHN0cmFwX3RlbXBsYXRlMSh2 b2lkKQogCiAJcHJpbnRmUFFFeHBCdWZmZXIoJmNtZCwgIlwiJXNcIiAtLWJvb3QgJXMgJXMiLCBi YWNrZW5kX2V4ZWMsIGJvb3Rfb3B0aW9ucywgZXh0cmFfb3B0aW9ucyk7CiAJYXBwZW5kUFFFeHBC dWZmZXIoJmNtZCwgIiAtWCAlZCIsIHdhbF9zZWdtZW50X3NpemVfbWIgKiAoMTAyNCAqIDEwMjQp KTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC1tICVsbHUiLCAodW5zaWduZWQgbG9uZyBs b25nKSBzdGFydF9teGlkKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC1vICVsbHUiLCAo dW5zaWduZWQgbG9uZyBsb25nKSBzdGFydF9teG9mZik7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNt ZCwgIiAteCAlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhcnRfeGlkKTsKIAlpZiAoZGF0 YV9jaGVja3N1bXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgLWsiKTsKIAlpZiAoZGVi dWcpCkBAIC0yNTMyLDEyICsyNTQzLDIwIEBAIHVzYWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKQog CXByaW50ZihfKCIgIC1kLCAtLWRlYnVnICAgICAgICAgICAgICAgZ2VuZXJhdGUgbG90cyBvZiBk ZWJ1Z2dpbmcgb3V0cHV0XG4iKSk7CiAJcHJpbnRmKF8oIiAgICAgIC0tZGlzY2FyZC1jYWNoZXMg ICAgICBzZXQgZGVidWdfZGlzY2FyZF9jYWNoZXM9MVxuIikpOwogCXByaW50ZihfKCIgIC1MIERJ UkVDVE9SWSAgICAgICAgICAgICAgd2hlcmUgdG8gZmluZCB0aGUgaW5wdXQgZmlsZXNcbiIpKTsK KwlwcmludGYoXygiICAtbSwgLS1tdWx0aXhhY3QtaWQ9U1RBUlRfTVhJRFxuIgorCQkJICIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0 aXhhY3QgaWRcbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCB2YWx1ZSBp cyAyXjYyLTFcbiIpKTsKIAlwcmludGYoXygiICAtbiwgLS1uby1jbGVhbiAgICAgICAgICAgIGRv IG5vdCBjbGVhbiB1cCBhZnRlciBlcnJvcnNcbiIpKTsKIAlwcmludGYoXygiICAtTiwgLS1uby1z eW5jICAgICAgICAgICAgIGRvIG5vdCB3YWl0IGZvciBjaGFuZ2VzIHRvIGJlIHdyaXR0ZW4gc2Fm ZWx5IHRvIGRpc2tcbiIpKTsKIAlwcmludGYoXygiICAgICAgLS1uby1pbnN0cnVjdGlvbnMgICAg IGRvIG5vdCBwcmludCBpbnN0cnVjdGlvbnMgZm9yIG5leHQgc3RlcHNcbiIpKTsKKwlwcmludGYo XygiICAtbywgLS1tdWx0aXhhY3Qtb2Zmc2V0PVNUQVJUX01YT0ZGXG4iCisJCQkgIiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFj dCBvZmZzZXRcbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCB2YWx1ZSBp cyAyXjYyLTFcbiIpKTsKIAlwcmludGYoXygiICAtcywgLS1zaG93ICAgICAgICAgICAgICAgIHNo b3cgaW50ZXJuYWwgc2V0dGluZ3MsIHRoZW4gZXhpdFxuIikpOwogCXByaW50ZihfKCIgICAgICAt LXN5bmMtbWV0aG9kPU1FVEhPRCAgc2V0IG1ldGhvZCBmb3Igc3luY2luZyBmaWxlcyB0byBkaXNr XG4iKSk7CiAJcHJpbnRmKF8oIiAgLVMsIC0tc3luYy1vbmx5ICAgICAgICAgICBvbmx5IHN5bmMg ZGF0YWJhc2UgZmlsZXMgdG8gZGlzaywgdGhlbiBleGl0XG4iKSk7CisJcHJpbnRmKF8oIiAgLXgs IC0teGlkPVNUQVJUX1hJRCAgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZFxu IgorCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4IHZhbHVlIGlzIDJeNjItMVxu IikpOwogCXByaW50ZihfKCJcbk90aGVyIG9wdGlvbnM6XG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYs IC0tdmVyc2lvbiAgICAgICAgICAgICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiwgdGhlbiBl eGl0XG4iKSk7CiAJcHJpbnRmKF8oIiAgLT8sIC0taGVscCAgICAgICAgICAgICAgICBzaG93IHRo aXMgaGVscCwgdGhlbiBleGl0XG4iKSk7CkBAIC0zMDc5LDYgKzMwOTgsMTggQEAgaW5pdGlhbGl6 ZV9kYXRhX2RpcmVjdG9yeSh2b2lkKQogCS8qIE5vdyBjcmVhdGUgYWxsIHRoZSB0ZXh0IGNvbmZp ZyBmaWxlcyAqLwogCXNldHVwX2NvbmZpZygpOwogCisJaWYgKHN0YXJ0X214aWQgIT0gMCkKKwkJ cHJpbnRmKF8oInNlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBpZCAuLi4gJWxsdVxuIiksCisJ CQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X214aWQpOworCisJaWYgKHN0YXJ0X214b2Zm ICE9IDApCisJCXByaW50ZihfKCJzZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3Qgb2Zmc2V0IC4u LiAlbGx1XG4iKSwKKwkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhcnRfbXhvZmYpOworCisJ aWYgKHN0YXJ0X3hpZCAhPSAwKQorCQlwcmludGYoXygic2VsZWN0aW5nIGluaXRpYWwgeGlkIC4u LiAlbGx1XG4iKSwKKwkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhcnRfeGlkKTsKKwogCS8q IEJvb3RzdHJhcCB0ZW1wbGF0ZTEgKi8KIAlib290c3RyYXBfdGVtcGxhdGUxKCk7CiAKQEAgLTMw OTUsOCArMzEyNiwxMiBAQCBpbml0aWFsaXplX2RhdGFfZGlyZWN0b3J5KHZvaWQpCiAJZmZsdXNo KHN0ZG91dCk7CiAKIAlpbml0UFFFeHBCdWZmZXIoJmNtZCk7Ci0JcHJpbnRmUFFFeHBCdWZmZXIo JmNtZCwgIlwiJXNcIiAlcyAlcyB0ZW1wbGF0ZTEgPiVzIiwKLQkJCQkJICBiYWNrZW5kX2V4ZWMs IGJhY2tlbmRfb3B0aW9ucywgZXh0cmFfb3B0aW9ucywgREVWTlVMTCk7CisJcHJpbnRmUFFFeHBC dWZmZXIoJmNtZCwgIlwiJXNcIiAlcyAlcyIsCisJCQkJCSAgYmFja2VuZF9leGVjLCBiYWNrZW5k X29wdGlvbnMsIGV4dHJhX29wdGlvbnMpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgLW0g JWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X214aWQpOworCWFwcGVuZFBRRXhwQnVm ZmVyKCZjbWQsICIgLW8gJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X214b2ZmKTsK KwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC14ICVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25n KSBzdGFydF94aWQpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgdGVtcGxhdGUxID4lcyIs IERFVk5VTEwpOwogCiAJUEdfQ01EX09QRU4oY21kLmRhdGEpOwogCkBAIC0zMTgzLDYgKzMyMTgs OSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXsiaWN1LXJ1bGVzIiwgcmVxdWly ZWRfYXJndW1lbnQsIE5VTEwsIDE4fSwKIAkJeyJzeW5jLW1ldGhvZCIsIHJlcXVpcmVkX2FyZ3Vt ZW50LCBOVUxMLCAxOX0sCiAJCXsibm8tZGF0YS1jaGVja3N1bXMiLCBub19hcmd1bWVudCwgTlVM TCwgMjB9LAorCQl7InhpZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAneCd9LAorCQl7Im11 bHRpeGFjdC1pZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnbSd9LAorCQl7Im11bHRpeGFj dC1vZmZzZXQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ28nfSwKIAkJe05VTEwsIDAsIE5V TEwsIDB9CiAJfTsKIApAQCAtMzIyNCw3ICszMjYyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCiAJLyogcHJvY2VzcyBjb21tYW5kLWxpbmUgb3B0aW9ucyAqLwogCi0Jd2hpbGUg KChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgIkE6YzpkRDpFOmdrTDpuTnNTVDpVOldYOiIs CisJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgIkE6YzpkRDpFOmdrTDptOm5O bzpzU1Q6VTpXeDpYOiIsCiAJCQkJCQkJbG9uZ19vcHRpb25zLCAmb3B0aW9uX2luZGV4KSkgIT0g LTEpCiAJewogCQlzd2l0Y2ggKGMpCkBAIC0zMjgyLDYgKzMzMjAsMzAgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCQkJCWRlYnVnID0gdHJ1ZTsKIAkJCQlwcmludGYoXygiUnVubmlu ZyBpbiBkZWJ1ZyBtb2RlLlxuIikpOwogCQkJCWJyZWFrOworCQkJY2FzZSAnbSc6CisJCQkJewor CQkJCQljaGFyCSAgICplbmRwdHI7CisKKwkJCQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teGlk ID0gc3RydG91bGwob3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9w dGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVs dGlYYWN0SWRJc1ZhbGlkKHN0YXJ0X214aWQpKQorCQkJCQl7CisJCQkJCQlwZ19sb2dfZXJyb3Io ImludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZCIpOworCQkJCQkJ ZXhpdCgxKTsKKwkJCQkJfQorCQkJCQllbHNlIGlmIChzdGFydF9teGlkIDwgMSkgLyogRmlyc3RN dWx0aVhhY3RJZCAqLworCQkJCQl7CisJCQkJCQkvKgorCQkJCQkJICogV2UgYXZvaWQgbXhpZCB0 byBiZSBzaWxlbnRseSBzZXQgdG8KKwkJCQkJCSAqIEZpcnN0TXVsdGlYYWN0SWQsIHRob3VnaCBp dCBkb2VzIG5vdCBoYXJtLgorCQkJCQkJICovCisJCQkJCQlwZ19sb2dfZXJyb3IoIm11bHRpeGFj dCBpZCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAiKTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJCX0K KwkJCQl9CisJCQkJYnJlYWs7CiAJCQljYXNlICduJzoKIAkJCQlub2NsZWFuID0gdHJ1ZTsKIAkJ CQlwcmludGYoXygiUnVubmluZyBpbiBuby1jbGVhbiBtb2RlLiAgTWlzdGFrZXMgd2lsbCBub3Qg YmUgY2xlYW5lZCB1cC5cbiIpKTsKQEAgLTMyODksNiArMzM1MSwyMSBAQCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJCQljYXNlICdOJzoKIAkJCQlkb19zeW5jID0gZmFsc2U7CiAJCQkJ YnJlYWs7CisJCQljYXNlICdvJzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJ CQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X214b2ZmID0gc3RydG91bGwob3B0YXJnLCAmZW5kcHRy LCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwg ZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0T2Zmc2V0SXNWYWxpZChzdGFydF9t eG9mZikpCisJCQkJCXsKKwkJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBpbml0aWFsIGRhdGFi YXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldCIpOworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQor CQkJCX0KKwkJCQlicmVhazsKIAkJCWNhc2UgJ1MnOgogCQkJCXN5bmNfb25seSA9IHRydWU7CiAJ CQkJYnJlYWs7CkBAIC0zMzc3LDYgKzM0NTQsMzAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCQkJY2FzZSAyMDoKIAkJCQlkYXRhX2NoZWNrc3VtcyA9IGZhbHNlOwogCQkJCWJyZWFr OworCQkJY2FzZSAneCc6CisJCQkJeworCQkJCQljaGFyCSAgICplbmRwdHI7CisKKwkJCQkJZXJy bm8gPSAwOworCQkJCQlzdGFydF94aWQgPSBzdHJ0b3VsbChvcHRhcmcsICZlbmRwdHIsIDApOwor CisJCQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAh PSAwIHx8CisJCQkJCQkhU3RhcnRUcmFuc2FjdGlvbklkSXNWYWxpZChzdGFydF94aWQpKQorCQkJ CQl7CisJCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgdmFsdWUgZm9yIGluaXRpYWwgZGF0YWJh c2UgY2x1c3RlciB4aWQiKTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAo c3RhcnRfeGlkIDwgMykgLyogRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkICovCisJCQkJCXsKKwkJ CQkJCS8qCisJCQkJCQkgKiBXZSBhdm9pZCB4aWQgdG8gYmUgc2lsZW50bHkgc2V0IHRvCisJCQkJ CQkgKiBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQsIHRob3VnaCBpdCBkb2VzIG5vdCBoYXJtLgor CQkJCQkJICovCisJCQkJCQlwZ19sb2dfZXJyb3IoInhpZCBzaG91bGQgYmUgZ3JlYXRlciB0aGFu IDIiKTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CiAJCQlkZWZh dWx0OgogCQkJCS8qIGdldG9wdF9sb25nIGFscmVhZHkgZW1pdHRlZCBhIGNvbXBsYWludCAqLwog CQkJCXBnX2xvZ19lcnJvcl9oaW50KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1h dGlvbi4iLCBwcm9nbmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi90LzAwMV9pbml0 ZGIucGwgYi9zcmMvYmluL2luaXRkYi90LzAwMV9pbml0ZGIucGwKaW5kZXggNzUyMGQzZDBkZC4u OTFhODVkOWY0ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvdC8wMDFfaW5pdGRiLnBsCisr KyBiL3NyYy9iaW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbApAQCAtMjgyLDQgKzI4Miw2NCBAQCBj b21tYW5kX2ZhaWxzKAogCVsgJ3BnX2NoZWNrc3VtcycsICctRCcsICRkYXRhZGlyX25vY2hlY2tz dW1zIF0sCiAJInBnX2NoZWNrc3VtcyBmYWlscyB3aXRoIGRhdGEgY2hlY2tzdW0gZGlzYWJsZWQi KTsKIAorIyBTZXQgbm9uLXN0YW5kYXJkIGluaXRpYWwgbXhpZC9teG9mZi94aWQuCitjb21tYW5k X2ZhaWxzX2xpa2UoCisJWyAnaW5pdGRiJywgJy1tJywgJ3NldmVuJywgJGRhdGFkaXIgXSwKKwlx ci9pbml0ZGI6IGVycm9yOiBpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhh Y3QgaWQvLAorCSdmYWlscyBmb3IgaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVs dGl4YWN0IGlkJyk7Citjb21tYW5kX2ZhaWxzX2xpa2UoCisJWyAnaW5pdGRiJywgJy1vJywgJ3Nl dmVuJywgJGRhdGFkaXIgXSwKKwlxci9pbml0ZGI6IGVycm9yOiBpbnZhbGlkIGluaXRpYWwgZGF0 YWJhc2UgY2x1c3RlciBtdWx0aXhhY3Qgb2Zmc2V0LywKKwknZmFpbHMgZm9yIGludmFsaWQgaW5p dGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBvZmZzZXQnKTsKK2NvbW1hbmRfZmFpbHNf bGlrZSgKKwlbICdpbml0ZGInLCAnLXgnLCAnc2V2ZW4nLCAkZGF0YWRpciBdLAorCXFyL2luaXRk YjogZXJyb3I6IGludmFsaWQgdmFsdWUgZm9yIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWQv LAorCSdmYWlscyBmb3IgaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkJyk7CisK K2NvbW1hbmRfY2hlY2tzX2FsbCgKKwlbICdpbml0ZGInLCAnLW0nLCAnNjU1MzUnLCAiJHRlbXBk aXIvZGF0YS1tNjU1MzUiIF0sCisJMCwKKwlbcXIvc2VsZWN0aW5nIGluaXRpYWwgbXVsdGl4YWN0 IGlkIC4uLiA2NTUzNS9dLAorCVtdLAorCSdzZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3QgaWQn KTsKK2NvbW1hbmRfY2hlY2tzX2FsbCgKKwlbICdpbml0ZGInLCAnLW8nLCAnNjU1MzUnLCAiJHRl bXBkaXIvZGF0YS1vNjU1MzUiIF0sCisJMCwKKwlbcXIvc2VsZWN0aW5nIGluaXRpYWwgbXVsdGl4 YWN0IG9mZnNldCAuLi4gNjU1MzUvXSwKKwlbXSwKKwknc2VsZWN0aW5nIGluaXRpYWwgbXVsdGl4 YWN0IG9mZnNldCcpOworY29tbWFuZF9jaGVja3NfYWxsKAorCVsgJ2luaXRkYicsICcteCcsICc2 NTUzNScsICIkdGVtcGRpci9kYXRhLXg2NTUzNSIgXSwKKwkwLAorCVtxci9zZWxlY3RpbmcgaW5p dGlhbCB4aWQgLi4uIDY1NTM1L10sCisJW10sCisJJ3NlbGVjdGluZyBpbml0aWFsIHhpZCcpOwor CisjIFNldHVwIG5ldyBjbHVzdGVyIHdpdGggZ2l2ZW4gbXhpZC9teG9mZi94aWQuCitteSAkbm9k ZTsKK215ICRyZXN1bHQ7CisKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCd0ZXN0LW14aWQnKTsKKyRub2RlLT5pbml0KGV4dHJhID0+IFsnLW0nLCAnMTY3NzcyMTUnXSk7 ICMgMHhGRkZGRkYKKyRub2RlLT5zdGFydDsKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgbmV4dF9tdWx0aXhhY3RfaWQgRlJPTSBwZ19jb250cm9sX2NoZWNr cG9pbnQoKTsiKTsKK29rKCRyZXN1bHQgPj0gMTY3NzcyMTUsICdzZXR1cCBjbHVzdGVyIHdpdGgg Z2l2ZW4gbXhpZCcpOworJG5vZGUtPnN0b3A7CisKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3Rlci0+bmV3KCd0ZXN0LW14b2ZmJyk7Ciskbm9kZS0+aW5pdChleHRyYSA9PiBbJy1vJywg JzE2Nzc3MjE1J10pOyAjIDB4RkZGRkZGCiskbm9kZS0+c3RhcnQ7CiskcmVzdWx0ID0gJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIG5leHRfbXVsdGlfb2Zmc2V0IEZST00gcGdf Y29udHJvbF9jaGVja3BvaW50KCk7Iik7CitvaygkcmVzdWx0ID49IDE2Nzc3MjE1LCAnc2V0dXAg Y2x1c3RlciB3aXRoIGdpdmVuIG14b2ZmJyk7Ciskbm9kZS0+c3RvcDsKKworJG5vZGUgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3Rlc3QteGlkJyk7Ciskbm9kZS0+aW5pdChleHRy YSA9PiBbJy14JywgJzE2Nzc3MjE1J10pOyAjIDB4RkZGRkZGCiskbm9kZS0+c3RhcnQ7CiskcmVz dWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHR4aWRfY3VycmVudCgp OyIpOworb2soJHJlc3VsdCA+PSAxNjc3NzIxNSwgJ3NldHVwIGNsdXN0ZXIgd2l0aCBnaXZlbiB4 aWQgLSBjaGVjayAxJyk7CiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIG9sZGVzdF94aWQgRlJPTSBwZ19jb250cm9sX2NoZWNrcG9pbnQoKTsiKTsKK29rKCRy ZXN1bHQgPj0gMTY3NzcyMTUsICdzZXR1cCBjbHVzdGVyIHdpdGggZ2l2ZW4geGlkIC0gY2hlY2sg MicpOworJG5vZGUtPnN0b3A7CisKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19hbWNoZWNrL3QvMDA0X3ZlcmlmeV9oZWFwYW0ucGwgYi9zcmMvYmluL3BnX2FtY2hlY2sv dC8wMDRfdmVyaWZ5X2hlYXBhbS5wbAppbmRleCA5NWZlNmU2ZDNiLi45M2VlZmQwNDc5IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDRfdmVyaWZ5X2hlYXBhbS5wbAorKysgYi9z cmMvYmluL3BnX2FtY2hlY2svdC8wMDRfdmVyaWZ5X2hlYXBhbS5wbApAQCAtMzIwLDYgKzMyMCw4 IEBAIG15ICRyZWxmcm96ZW54aWQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJcShz ZWxlY3QgcmVsZnJvemVueGlkIGZyb20gcGdfY2xhc3Mgd2hlcmUgcmVsbmFtZSA9ICd0ZXN0Jykp OwogbXkgJGRhdGZyb3plbnhpZCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAlxKHNl bGVjdCBkYXRmcm96ZW54aWQgZnJvbSBwZ19kYXRhYmFzZSB3aGVyZSBkYXRuYW1lID0gJ3Bvc3Rn cmVzJykpOworbXkgJGRhdG1pbm14aWQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ cShzZWxlY3QgZGF0bWlubXhpZCBmcm9tIHBnX2RhdGFiYXNlIHdoZXJlIGRhdG5hbWUgPSAncG9z dGdyZXMnKSk7CiAKICMgU2FuaXR5IGNoZWNrIHRoYXQgb3VyICd0ZXN0JyB0YWJsZSBoYXMgYSBy ZWxmcm96ZW54aWQgbmV3ZXIgdGhhbiB0aGUKICMgZGF0ZnJvemVueGlkIGZvciB0aGUgZGF0YWJh c2UsIGFuZCB0aGF0IHRoZSBkYXRmcm96ZW54aWQgaXMgZ3JlYXRlciB0aGFuIHRoZQpAQCAtNDU0 LDQwICs0NTYsMzkgQEAgZm9yIChteSAkdHVwaWR4ID0gMDsgJHR1cGlkeCA8ICRST1dDT1VOVDsg JHR1cGlkeCsrKQogCiAJCSMgRXhwZWN0ZWQgY29ycnVwdGlvbiByZXBvcnQKIAkJcHVzaCBAZXhw ZWN0ZWQsCi0JCSAgcXIvJHtoZWFkZXJ9eG1pbiAkeG1pbiBwcmVjZWRlcyByZWxhdGlvbiBmcmVl emUgdGhyZXNob2xkIDA6XGQrLzsKKwkJICBxci8ke2hlYWRlcn14bWluICR4bWluIHByZWNlZGVz IHJlbGF0aW9uIGZyZWV6ZSB0aHJlc2hvbGQgXGQrLzsKIAl9CiAJZWxzaWYgKCRvZmZudW0gPT0g MikKIAl7CiAJCSMgQ29ycnVwdGx5IHNldCB4bWluIDwgZGF0ZnJvemVueGlkCi0JCW15ICR4bWlu ID0gMzsKKwkJbXkgJHhtaW4gPSAkZGF0ZnJvemVueGlkIC0gMTI7CiAJCSR0dXAtPnt0X3htaW59 ID0gJHhtaW47CiAJCSR0dXAtPnt0X2luZm9tYXNrfSAmPSB+SEVBUF9YTUlOX0NPTU1JVFRFRDsK IAkJJHR1cC0+e3RfaW5mb21hc2t9ICY9IH5IRUFQX1hNSU5fSU5WQUxJRDsKIAogCQlwdXNoIEBl eHBlY3RlZCwKLQkJICBxci8keyRoZWFkZXJ9eG1pbiAkeG1pbiBwcmVjZWRlcyBvbGRlc3QgdmFs aWQgdHJhbnNhY3Rpb24gSUQgMDpcZCsvOworCQkgIHFyLyR7JGhlYWRlcn14bWluICR4bWluIHBy ZWNlZGVzIG9sZGVzdCB2YWxpZCB0cmFuc2FjdGlvbiBJRCBcZCsvOwogCX0KIAllbHNpZiAoJG9m Zm51bSA9PSAzKQogCXsKLQkJIyBDb3JydXB0bHkgc2V0IHhtaW4gPCBkYXRmcm96ZW54aWQsIGZ1 cnRoZXIgYmFjaywgbm90aW5nIGNpcmN1bGFyaXR5Ci0JCSMgb2YgeGlkIGNvbXBhcmlzb24uCi0J CW15ICR4bWluID0gNDAyNjUzMTgzOTsKKwkJIyBDb3JydXB0bHkgc2V0IHhtaW4gPiBuZXh0IHRy YW5zYWN0aW9uIGlkLgorCQlteSAkeG1pbiA9ICRyZWxmcm96ZW54aWQgKyAxMDAwMDAwOwogCQkk dHVwLT57dF94bWlufSA9ICR4bWluOwogCQkkdHVwLT57dF9pbmZvbWFza30gJj0gfkhFQVBfWE1J Tl9DT01NSVRURUQ7CiAJCSR0dXAtPnt0X2luZm9tYXNrfSAmPSB+SEVBUF9YTUlOX0lOVkFMSUQ7 CiAKIAkJcHVzaCBAZXhwZWN0ZWQsCi0JCSAgcXIvJHskaGVhZGVyfXhtaW4gJHt4bWlufSBwcmVj ZWRlcyBvbGRlc3QgdmFsaWQgdHJhbnNhY3Rpb24gSUQgMDpcZCsvOworCQkgIHFyLyR7JGhlYWRl cn14bWluICR4bWluIGVxdWFscyBvciBleGNlZWRzIG5leHQgdmFsaWQgdHJhbnNhY3Rpb24gSUQg XGQrLzsKIAl9CiAJZWxzaWYgKCRvZmZudW0gPT0gNCkKIAl7Ci0JCSMgQ29ycnVwdGx5IHNldCB4 bWF4IDwgcmVsbWlubXhpZDsKLQkJbXkgJHhtYXggPSA0MDI2NTMxODM5OworCQkjIENvcnJ1cHRs eSBzZXQgeG1heCA+IG5leHQgdHJhbnNhY3Rpb24gaWQuCisgICAgICAgIG15ICR4bWF4ID0gJHJl bGZyb3plbnhpZCArIDEwMDAwMDA7CiAJCSR0dXAtPnt0X3htYXh9ID0gJHhtYXg7CiAJCSR0dXAt Pnt0X2luZm9tYXNrfSAmPSB+SEVBUF9YTUFYX0lOVkFMSUQ7CiAKIAkJcHVzaCBAZXhwZWN0ZWQs Ci0JCSAgcXIvJHskaGVhZGVyfXhtYXggJHt4bWF4fSBwcmVjZWRlcyBvbGRlc3QgdmFsaWQgdHJh bnNhY3Rpb24gSUQgMDpcZCsvOworCQkgIHFyLyR7JGhlYWRlcn14bWF4ICR4bWF4IGVxdWFscyBv ciBleGNlZWRzIG5leHQgdmFsaWQgdHJhbnNhY3Rpb24gSUQgXGQrLzsKIAl9CiAJZWxzaWYgKCRv ZmZudW0gPT0gNSkKIAl7CkBAIC01OTAsMzEgKzU5MSwzMyBAQCBmb3IgKG15ICR0dXBpZHggPSAw OyAkdHVwaWR4IDwgJFJPV0NPVU5UOyAkdHVwaWR4KyspCiAJCSMgU2V0IGJvdGggSEVBUF9YTUFY X0NPTU1JVFRFRCBhbmQgSEVBUF9YTUFYX0lTX01VTFRJCiAJCSR0dXAtPnt0X2luZm9tYXNrfSB8 PSBIRUFQX1hNQVhfQ09NTUlUVEVEOwogCQkkdHVwLT57dF9pbmZvbWFza30gfD0gSEVBUF9YTUFY X0lTX01VTFRJOwotCQkkdHVwLT57dF94bWF4fSA9IDQ7CisgICAgICAgIG15ICR4bWF4ID0gJGRh dG1pbm14aWQgKyAxMDAwMDAwOworCQkkdHVwLT57dF94bWF4fSA9ICR4bWF4OwogCiAJCXB1c2gg QGV4cGVjdGVkLAotCQkgIHFyLyR7aGVhZGVyfW11bHRpdHJhbnNhY3Rpb24gSUQgNCBlcXVhbHMg b3IgZXhjZWVkcyBuZXh0IHZhbGlkIG11bHRpdHJhbnNhY3Rpb24gSUQgMS87CisJCSAgcXIvJHto ZWFkZXJ9bXVsdGl0cmFuc2FjdGlvbiBJRCAkeG1heCBlcXVhbHMgb3IgZXhjZWVkcyBuZXh0IHZh bGlkIG11bHRpdHJhbnNhY3Rpb24gSUQgXGQrLzsKIAl9CiAJZWxzaWYgKCRvZmZudW0gPT0gMTUp CiAJewogCQkjIFNldCBib3RoIEhFQVBfWE1BWF9DT01NSVRURUQgYW5kIEhFQVBfWE1BWF9JU19N VUxUSQogCQkkdHVwLT57dF9pbmZvbWFza30gfD0gSEVBUF9YTUFYX0NPTU1JVFRFRDsKIAkJJHR1 cC0+e3RfaW5mb21hc2t9IHw9IEhFQVBfWE1BWF9JU19NVUxUSTsKLQkJJHR1cC0+e3RfeG1heH0g PSA0MDAwMDAwMDAwOworCQlteSAkeG1heCA9ICRkYXRtaW5teGlkIC0gMTA7CisJCSR0dXAtPnt0 X3htYXh9ID0gJHhtYXg7CiAKIAkJcHVzaCBAZXhwZWN0ZWQsCi0JCSAgcXIvJHtoZWFkZXJ9bXVs dGl0cmFuc2FjdGlvbiBJRCA0MDAwMDAwMDAwIHByZWNlZGVzIHJlbGF0aW9uIG1pbmltdW0gbXVs dGl0cmFuc2FjdGlvbiBJRCB0aHJlc2hvbGQgMS87CisJCSAgcXIvJHtoZWFkZXJ9bXVsdGl0cmFu c2FjdGlvbiBJRCAkeG1heCBwcmVjZWRlcyByZWxhdGlvbiBtaW5pbXVtIG11bHRpdHJhbnNhY3Rp b24gSUQgdGhyZXNob2xkIFxkKy87CiAJfQogCWVsc2lmICgkb2ZmbnVtID09IDE2KSAgICAjIExh c3Qgb2ZmbnVtIG11c3QgZXF1YWwgUk9XQ09VTlQKIAl7CiAJCSMgQ29ycnVwdGx5IHNldCB4bWlu ID4gbmV4dF94aWQgdG8gYmUgaW4gdGhlIGZ1dHVyZS4KLQkJbXkgJHhtaW4gPSAxMjM0NTY7CisJ CW15ICR4bWluID0gJHJlbGZyb3plbnhpZCArIDEwMDAwMDA7CiAJCSR0dXAtPnt0X3htaW59ID0g JHhtaW47CiAJCSR0dXAtPnt0X2luZm9tYXNrfSAmPSB+SEVBUF9YTUlOX0NPTU1JVFRFRDsKIAkJ JHR1cC0+e3RfaW5mb21hc2t9ICY9IH5IRUFQX1hNSU5fSU5WQUxJRDsKIAogCQlwdXNoIEBleHBl Y3RlZCwKLQkJICBxci8keyRoZWFkZXJ9eG1pbiAke3htaW59IGVxdWFscyBvciBleGNlZWRzIG5l eHQgdmFsaWQgdHJhbnNhY3Rpb24gSUQgMDpcZCsvOworCQkgIHFyLyR7JGhlYWRlcn14bWluICR7 eG1pbn0gZXF1YWxzIG9yIGV4Y2VlZHMgbmV4dCB2YWxpZCB0cmFuc2FjdGlvbiBJRCBcZCsvOwog CX0KIAllbHNpZiAoJG9mZm51bSA9PSAxNykKIAl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MveGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCAzNGFkNDZjMDY3 Li40Y2U3OWIxMmUzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKQEAgLTk0LDYgKzk0LDkgQEAgdHlwZWRlZiBlbnVt IFJlY292ZXJ5U3RhdGUKIH0gUmVjb3ZlcnlTdGF0ZTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCB3YWxfbGV2ZWw7CitleHRlcm4gUEdETExJTVBPUlQgVHJhbnNhY3Rpb25JZCBzdGFydF94aWQ7 CitleHRlcm4gUEdETExJTVBPUlQgTXVsdGlYYWN0SWQgc3RhcnRfbXhpZDsKK2V4dGVybiBQR0RM TElNUE9SVCBNdWx0aVhhY3RPZmZzZXQgc3RhcnRfbXhvZmY7CiAKIC8qIElzIFdBTCBhcmNoaXZp bmcgZW5hYmxlZCAoYWx3YXlzIG9yIG9ubHkgd2hpbGUgc2VydmVyIGlzIHJ1bm5pbmcgbm9ybWFs bHkpPyAqLwogI2RlZmluZSBYTG9nQXJjaGl2aW5nQWN0aXZlKCkgXApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYy5oIGIvc3JjL2luY2x1ZGUvYy5oCmluZGV4IDBhNTQ4ZDY5ZDcuLjIxOGFmZWVi M2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAg LTY2OCw2ICs2NjgsMTAgQEAgdHlwZWRlZiB1aW50MzIgTXVsdGlYYWN0T2Zmc2V0OwogCiB0eXBl ZGVmIHVpbnQzMiBDb21tYW5kSWQ7CiAKKyNkZWZpbmUgU3RhcnRUcmFuc2FjdGlvbklkSXNWYWxp ZCh4aWQpCQkJKCh4aWQpIDw9IDB4RkZGRkZGRkYpCisjZGVmaW5lIFN0YXJ0TXVsdGlYYWN0SWRJ c1ZhbGlkKG14aWQpCQkJKChteGlkKSA8PSAweEZGRkZGRkZGKQorI2RlZmluZSBTdGFydE11bHRp WGFjdE9mZnNldElzVmFsaWQob2Zmc2V0KQkJKChvZmZzZXQpIDw9IDB4RkZGRkZGRkYpCisKICNk ZWZpbmUgRmlyc3RDb21tYW5kSWQJKChDb21tYW5kSWQpIDApCiAjZGVmaW5lIEludmFsaWRDb21t YW5kSWQJKH4oQ29tbWFuZElkKTApCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfY2xhc3MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaAppbmRleCAwZmMyYzA5 M2IwLi4wYTc1MThkZjBkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNz LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCkBAIC0xMjMsNyArMTIzLDcg QEAgQ0FUQUxPRyhwZ19jbGFzcywxMjU5LFJlbGF0aW9uUmVsYXRpb25JZCkgQktJX0JPT1RTVFJB UCBCS0lfUk9XVFlQRV9PSUQoODMsUmVsYXQKIAlPaWQJCQlyZWxyZXdyaXRlIEJLSV9ERUZBVUxU KDApIEJLSV9MT09LVVBfT1BUKHBnX2NsYXNzKTsKIAogCS8qIGFsbCBYaWRzIDwgdGhpcyBhcmUg ZnJvemVuIGluIHRoaXMgcmVsICovCi0JVHJhbnNhY3Rpb25JZCByZWxmcm96ZW54aWQgQktJX0RF RkFVTFQoMyk7CS8qIEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCAqLworCVRyYW5zYWN0aW9uSWQg cmVsZnJvemVueGlkIEJLSV9ERUZBVUxUKFJFQ0VOVFhNSU4pOwkvKiBGaXJzdE5vcm1hbFRyYW5z YWN0aW9uSWQgKi8KIAogCS8qIGFsbCBtdWx0aXhhY3RzIGluIHRoaXMgcmVsIGFyZSA+PSB0aGlz OyBpdCBpcyByZWFsbHkgYSBNdWx0aVhhY3RJZCAqLwogCVRyYW5zYWN0aW9uSWQgcmVsbWlubXhp ZCBCS0lfREVGQVVMVCgxKTsJLyogRmlyc3RNdWx0aVhhY3RJZCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSBiL3NyYy90ZXN0L3BlcmwvUG9z dGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KaW5kZXggZTU1MjZjNzU2NS4uNzlkZjZmYWViOSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQorKysgYi9z cmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCkBAIC02NDMsNyArNjQzLDkg QEAgc3ViIGluaXQKIAl7CiAJCW5vdGUoImluaXRpYWxpemluZyBkYXRhYmFzZSBzeXN0ZW0gYnkg cnVubmluZyBpbml0ZGIiKTsKIAkJUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnN5c3RlbV9vcl9i YWlsKCdpbml0ZGInLCAnLUQnLCAkcGdkYXRhLCAnLUEnLAotCQkJJ3RydXN0JywgJy1OJywgQHsg JHBhcmFtc3tleHRyYX0gfSk7CisJCQkndHJ1c3QnLCAnLU4nLAorCQkJJy14JywgJzEyNDk4Mycs ICctbScsICcyNDIyMzYnLCAnLW8nLCAnMzU5NDg4JywKKwkJCUB7ICRwYXJhbXN7ZXh0cmF9IH0p OwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wZ19yZWdyZXNz LmMgYi9zcmMvdGVzdC9yZWdyZXNzL3BnX3JlZ3Jlc3MuYwppbmRleCAwZTQwZWQzMmEyLi4zNTEx YzRiNTAwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BnX3JlZ3Jlc3MuYworKysgYi9z cmMvdGVzdC9yZWdyZXNzL3BnX3JlZ3Jlc3MuYwpAQCAtMjMzMyw3ICsyMzMzLDggQEAgcmVncmVz c2lvbl9tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10sCiAJCQlub3RlKCJpbml0aWFsaXppbmcg ZGF0YWJhc2Ugc3lzdGVtIGJ5IHJ1bm5pbmcgaW5pdGRiIik7CiAKIAkJCWFwcGVuZFN0cmluZ0lu Zm8oJmNtZCwKLQkJCQkJCQkgIlwiJXMlc2luaXRkYlwiIC1EIFwiJXMvZGF0YVwiIC0tbm8tY2xl YW4gLS1uby1zeW5jIiwKKwkJCQkJCQkgIlwiJXMlc2luaXRkYlwiIC1EIFwiJXMvZGF0YVwiIC0t bm8tY2xlYW4gLS1uby1zeW5jIgorCQkJCQkJCSAiIC14IDEyNDk4MyAtbSAyNDIyMzYgLW8gMzU5 NDg4IiwKIAkJCQkJCQkgYmluZGlyID8gYmluZGlyIDogIiIsCiAJCQkJCQkJIGJpbmRpciA/ICIv IiA6ICIiLAogCQkJCQkJCSB0ZW1wX2luc3RhbmNlKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3hp ZC02NC90LzAwMV90ZXN0X2xhcmdlX3hpZHMucGwgYi9zcmMvdGVzdC94aWQtNjQvdC8wMDFfdGVz dF9sYXJnZV94aWRzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjRj N2RiYzZjYjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC94aWQtNjQvdC8wMDFfdGVzdF9s YXJnZV94aWRzLnBsCkBAIC0wLDAgKzEsNTQgQEAKKyMgVGVzdHMgZm9yIGxhcmdlIHhpZCB2YWx1 ZXMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOwordXNl IGJpZ2ludDsKKworc3ViIGNvbW1hbmRfb3V0cHV0Cit7CisJbXkgKCRjbWQpID0gQF87CisJbXkg KCRzdGRvdXQsICRzdGRlcnIpOworCXByaW50KCIjIFJ1bm5pbmc6ICIgLiBqb2luKCIgIiwgQHsk Y21kfSkgLiAiXG4iKTsKKwlteSAkcmVzdWx0ID0gSVBDOjpSdW46OnJ1biAkY21kLCAnPicsIFwk c3Rkb3V0LCAnMj4nLCBcJHN0ZGVycjsKKwlvaygkcmVzdWx0LCAiQCRjbWQgZXhpdCBjb2RlIDAi KTsKKwlpcygkc3RkZXJyLCAnJywgIkAkY21kIG5vIHN0ZGVyciIpOworCXJldHVybiAkc3Rkb3V0 OworfQorCitteSAkU1RBUlRfVkFMID0gMioqMzI7CitteSAkTUFYX1ZBTCA9IDIqKjYyOworCitt eSAkaXhpZCA9ICRTVEFSVF9WQUwgKyBpbnQocmFuZCgkTUFYX1ZBTCAtICRTVEFSVF9WQUwpKTsK K215ICRpbXhpZCA9ICRTVEFSVF9WQUwgKyBpbnQocmFuZCgkTUFYX1ZBTCAtICRTVEFSVF9WQUwp KTsKK215ICRpbW9mZiA9ICRTVEFSVF9WQUwgKyBpbnQocmFuZCgkTUFYX1ZBTCAtICRTVEFSVF9W QUwpKTsKKworIyBJbml0aWFsaXplIG1hc3RlciBub2RlIHdpdGggdGhlIHJhbmRvbSB4aWQtcmVs YXRlZCBwYXJhbWV0ZXJzCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygnbWFzdGVyJyk7Ciskbm9kZS0+aW5pdChleHRyYSA9PiBbICItLXhpZD0kaXhpZCIsICItLW11 bHRpeGFjdC1pZD0kaW14aWQiLCAiLS1tdWx0aXhhY3Qtb2Zmc2V0PSRpbW9mZiIgXSk7Ciskbm9k ZS0+c3RhcnQ7CisKKyMgSW5pdGlhbGl6ZSBtYXN0ZXIgbm9kZSBhbmQgY2hlY2sgdGhlIHhpZC1y ZWxhdGVkIHBhcmFtZXRlcnMKK215ICRwZ2NkX291dHB1dCA9IGNvbW1hbmRfb3V0cHV0KAorCVsg J3BnX2NvbnRyb2xkYXRhJywgJy1EJywgJG5vZGUtPmRhdGFfZGlyIF0gKTsKK3ByaW50KCRwZ2Nk X291dHB1dCk7IHByaW50KCdcbicpOworb2soJHBnY2Rfb3V0cHV0ID1+IHFyL0xhdGVzdCBjaGVj a3BvaW50J3MgTmV4dFhJRDpccyooXGQrKS8sICJYSUQgZm91bmQiKTsKK215ICgkbmV4dHhpZCkg PSAoJDEpOworb2soJG5leHR4aWQgPj0gJGl4aWQgJiYgJG5leHR4aWQgPCAkaXhpZCArIDEwMDAs CisJIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dFhJRCAoJG5leHR4aWQpIGlzIGNsb3NlIHRvIHRo ZSBpbml0aWFsIHhpZCAoJGl4aWQpLiIpOworb2soJHBnY2Rfb3V0cHV0ID1+IHFyL0xhdGVzdCBj aGVja3BvaW50J3MgTmV4dE11bHRpWGFjdElkOlxzKihcZCspLywgIk11bHRpWGFjdElkIGZvdW5k Iik7CitteSAoJG5leHRteGlkKSA9ICgkMSk7CitvaygkbmV4dG14aWQgPj0gJGlteGlkICYmICRu ZXh0bXhpZCA8ICRpbXhpZCArIDEwMDAsCisJIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRp WGFjdElkICgkbmV4dG14aWQpIGlzIGNsb3NlIHRvIHRoZSBpbml0aWFsIG11bHRpWGFjdElkICgk aW14aWQpLiIpOworb2soJHBnY2Rfb3V0cHV0ID1+IHFyL0xhdGVzdCBjaGVja3BvaW50J3MgTmV4 dE11bHRpT2Zmc2V0OlxzKihcZCspLywgIk11bHRpT2Zmc2V0IGZvdW5kIik7CitteSAoJG5leHRt b2ZmKSA9ICgkMSk7CitvaygkbmV4dG1vZmYgPj0gJGltb2ZmICYmICRuZXh0bW9mZiA8ICRpbW9m ZiArIDEwMDAsCisJIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRpT2Zmc2V0ICgkbmV4dG1v ZmYpIGlzIGNsb3NlIHRvIHRoZSBpbml0aWFsIG11bHRpT2Zmc2V0ICgkaW1vZmYpLiIpOworCisj IFJ1biBwZ2JlbmNoIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGRhdGFiYXNlIGlzIHdvcmtpbmcgcHJv cGVybHkKKyRub2RlLT5jb21tYW5kX29rKAorCVsgcXcocGdiZW5jaCAtLWluaXRpYWxpemUgLS1u by12YWN1dW0gLS1zY2FsZT0xMCkgXSwKKwkgICdwZ2JlbmNoIGZpbmlzaGVkIHdpdGhvdXQgZXJy b3JzJyk7CisKK2RvbmVfdGVzdGluZygpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0g CjIuNDMuMAoK --0000000000002fcd1006266aab7b--