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 1ulsnc-006nxo-Or for pgsql-hackers@arkaria.postgresql.org; Tue, 12 Aug 2025 17:28:37 +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 1ulsnZ-008mjA-Hg for pgsql-hackers@arkaria.postgresql.org; Tue, 12 Aug 2025 17:28:33 +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 1ulsnY-008mj2-Vx for pgsql-hackers@lists.postgresql.org; Tue, 12 Aug 2025 17:28:33 +0000 Received: from mail-il1-x132.google.com ([2607:f8b0:4864:20::132]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1ulsnV-000Evn-0A for pgsql-hackers@lists.postgresql.org; Tue, 12 Aug 2025 17:28:32 +0000 Received: by mail-il1-x132.google.com with SMTP id e9e14a558f8ab-3e547e3f36eso10721115ab.3 for ; Tue, 12 Aug 2025 10:28:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1755019707; x=1755624507; 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=/Yfn7huDb0Y4udXY3ktmzSGr0pd/ESXDFKFNZ8HOJ7M=; b=LiZ/Epg7fZgnpg1/7R+t6O9ijAykqvTWokgLETpxt9lvAUlVgtqe7agGy4CZK7wXWl YtkNVHL5XE2OEhnSz1j8gDz/Lu8HBNE2gMdnAoR/b7ZS1VnxqZbti4gLdUWOdFzhcoR9 mrItJjos7BYcABD/VIvHpLk85NuKo2/lv5GHL00Xr3CyMv817wlT8FArJvndSN+wkUtg Eo1F/UUM1apebnD7OZ7L1/a4Y8kKuT1FF/IG1A++waiuSmc0ZRs5OgBzo4f7JXEqYKpy j/9u2n90chxzJ8EfnJaUxI1oz0oRGwWFUkRPxHf2Sa/j2fWZOTHACvvJ3LgM5fAKPU7+ w6Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755019707; x=1755624507; 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=/Yfn7huDb0Y4udXY3ktmzSGr0pd/ESXDFKFNZ8HOJ7M=; b=XxIlmx1tDF/Onh581doXfLVruo5IoQSEPn0QUXqBiWJpnGZrgNyLJzYloIilwdavpj g1zQtQU0h0EYoIp7GucLO/19wpnkLo9MyUFbmFyrTyTdjOOpK/JdDFA1y8w73gblwLCf jxoZYjFzFtVUGmu+wrDZJSxnvfzJzqOgJ04RMdEx5Gkm9IuRDCGZfFaJTaUV1hqwkysL M+lI2pqt25YoP0XjspYvW1CYXd26o+1EuUZnudqxRNT0lTQx9MMK1u4hhBSD9fTKRLXL TQH4hj8xadRYqyLFN+pTgygpvg9LIEsgrxjGzbA8y3mHlUiTLMTzs6XI+YcEv/vgDYGI /MnA== X-Forwarded-Encrypted: i=1; AJvYcCUsJE4y13pysr8wK8sxmwy0FsRyjMgXtB3VE4AI7oqBjB9dXzmAqZRElaasUhpXlJ/KKzyQwOZnlpHCrORV@lists.postgresql.org X-Gm-Message-State: AOJu0YxGnmpCDJP3WI44u3skBPkiJFc8b3F4Epz5CB5EFufE7rv641XR SsUhLy4uqk2fKgI+Xn434UW5COrXUSzWIbaGvJ2fu9WfMzYcrR0KJEHE5WLcavGKloPt8OFZuKE uIbxOB8HBskpERGvmpvbnUmnt2/muatI= X-Gm-Gg: ASbGncsqfu3iwn4WEt81VutfteBVRhIjKHpLMIOyu5s7WX0CBbIM2EqlVltjyT3d8q6 JspMgZTDh8hmTdmkl1U8ELREAsBTIoEWev1aZxCzHwuKeVw6l30QItjnjbuL8Z0mIPYmUZ2DXzu fl+H+gji+31zgEbqU/jvelqJRQFMG37M0cTcw9isU6fbZRgLtPSrXHQ2BphyKnRQ9nkrz3s9gzY qZqBQbWOWGHHrrPhQ== X-Google-Smtp-Source: AGHT+IHale231EV+BcZOvi3erw3Y8bTWwOwACjySja/MkREf8kKJ0s4xtCENhLlaKwX7ukKh3QAfBI4yLHiAv86hci0= X-Received: by 2002:a05:6e02:1645:b0:3e5:4f4c:9f17 with SMTP id e9e14a558f8ab-3e56596ffafmr10465655ab.19.1755019707057; Tue, 12 Aug 2025 10:28:27 -0700 (PDT) MIME-Version: 1.0 References: <4630636f-7720-4ce4-ab1c-253b390e5174@vondra.me> In-Reply-To: From: Corey Huinker Date: Tue, 12 Aug 2025 13:28:14 -0400 X-Gm-Features: Ac12FXyZM6lzSgC9YZJoTb-1ph1XxjBnTXndbSkufv4ZNjWf9zMtKBalbwJHMDo Message-ID: Subject: Re: Extended Statistics set/restore/clear functions. To: jian he Cc: Tomas Vondra , pgsql-hackers@lists.postgresql.org, tgl@sss.pgh.pa.us Content-Type: multipart/mixed; boundary="00000000000036beff063c2e5ec5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000036beff063c2e5ec5 Content-Type: multipart/alternative; boundary="00000000000036befd063c2e5ec3" --00000000000036befd063c2e5ec3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Jun 21, 2025 at 8:12=E2=80=AFPM Corey Huinker wrote: > >> Any thoughts on using/improving these structures? >> > > Hearing no objections, here is the latest patchset. > > 0001 - Changes input/output functions of pg_ndistinct to the format > described earlier. > 0002 - Changes input/output functions of pg_dependencies to the format > described earlier. > 0003 - Makes some previously internal/static attribute stats functions > visible to extended_stats.c, because the exprs attribute is basically an > array of partially filled-out pg_statistic rows. > 0004 - Adds pg_restore_attribute_stats(), pg_clear_attribute_stats(), in > the pattern of their relation/attribute brethren. > 0005 - adds the dumping and restoring of extended statistics back to v10. > No command line flag changes needed. > > Rebased. Enjoy. --00000000000036befd063c2e5ec3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Sat, Jun 21, 2025 at 8:12=E2=80=AFPM Corey= Huinker <corey.huinker@gmail= .com> wrote:
Any thoughts on using/improving these structures?

Hearing no objections, here is the= latest patchset.

0001 - Changes input/output functions o= f pg_ndistinct to the format described=C2=A0earlier.
0002 - Chang= es input/output functions of pg_dependencies to the format described earlie= r.
0003 - Makes some previously internal/static attribute sta= ts functions visible to extended_stats.c, because the exprs=C2=A0attribute = is basically an array of partially filled-out pg_statistic rows.
<= div>0004 - Adds pg_restore_attribute_stats(), pg_clear_attribute_stats(), i= n the pattern of their relation/attribute brethren.
0005 - ad= ds the dumping and restoring of extended statistics back to v10. No command= line flag changes needed.
=C2=A0
<= div>
Rebased. Enjoy.
=C2=A0
--00000000000036befd063c2e5ec3-- --00000000000036beff063c2e5ec5 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0001-Refactor-output-format-of-pg_ndistinct-and-add-wo.patch" Content-Disposition: attachment; filename="v5-0001-Refactor-output-format-of-pg_ndistinct-and-add-wo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me8te7af0 RnJvbSBiODRjNTk0MzkyMDdhZWYyNDE0MDZhNmMyODNkMzE0NzYyMjJkNjA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDb3JleSBIdWlua2VyIDxjb3JleS5odWlua2VyQGdtYWlsLmNv bT4KRGF0ZTogU2F0LCA3IEp1biAyMDI1IDIzOjE3OjAzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCB2 NSAxLzVdIFJlZmFjdG9yIG91dHB1dCBmb3JtYXQgb2YgcGdfbmRpc3RpbmN0IGFuZCBhZGQgd29y a2luZwogaW5wdXQgZnVuY3Rpb24uCgpUaGUgZXhpc3RpbmcgZm9ybWF0IG9mIHBnX25kaXN0aW5j dCB1c2VzIGEgc2luZ2xlLW9iamVjdCBKU09OIHN0cnVjdHVyZQp3aGVyZSBlYWNoIGtleSBpcyBp dHNlbGYgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRudW1zLiBXaGlsZSB0aGlzCmlzIGEg dmVyeSBjb21wYWN0IGZvcm1hdCwgaXQncyBjb25mdXNpbmcgdG8gcmVhZCBhbmQgaXMgZGlmZmlj dWx0IHRvCm1hbmlwdWxhdGUgdmFsdWVzIHdpdGhpbiB0aGUgb2JqZWN0LiBUaGlzIHdhc24ndCBh IGNvbmNlcm4gdW50aWwKc3RhdGlzdGljcyBpbXBvcnQgZnVuY3Rpb25zIHdlcmUgaW50cm9kdWNl ZCwgZW5hYmxpbmcgdXNlcnMgdG8gaW5qZWN0Cmh5cG90aGV0aWNhbCBzdGF0aXN0aWNzIGludG8g YW4gb2JqZWN0IHRvIG9ic2VydmUgdGhlaXIgZWZmZWN0IG9uIHRoZQpxdWVyeSBwbGFubmVyLgoK VGhlIG5ldyBmb3JtYXQgaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cywgZWFjaCBvYmplY3QgbXVzdCBo YXZlIHRoZSBrZXlzCiJhdHRyaWJ1dGVzIiwgd2hpY2ggbXVzdCBjb250YWluIGFuIGFycmF5IG9m IGF0dG51bXMsIGFuZCAibmRpc3RpbmN0IiwKd2hpY2ggbXVzdCBiZSBhbiBpbnRlZ2VyLiBUaGlz IGlzIGEgcXVpcmsgYmVjYXVzZSB0aGUgdW5kZXJseWluZwppbnRlcm5hbCBzdG9yYWdlIGlzIGEg ZG91YmxlLCBidXQgdGhlIHZhbHVlIHN0b3JlZCB3YXMgYWx3YXlzIGFuCmludGVnZXIuCgpUaGUg Y2hhbmdlIGluIGZvcm1hdCBpcyBhZGVxdWF0ZWx5IGRlc2NyaWJlZCBmcm9tIHRoZSBjaGFuZ2Vz IHRvCnNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCBzbyBkZXNjcmlwdGlv biBoZXJlIGlzCnJlZHVuZGFudC4KLS0tCiBzcmMvYmFja2VuZC9zdGF0aXN0aWNzL212ZGlzdGlu Y3QuYyAgICAgfCA0NjMgKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgfCAgNTYgKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9z dGF0c19leHQuc3FsICAgICAgfCAgMTIgKwogMyBmaWxlcyBjaGFuZ2VkLCA1MDMgaW5zZXJ0aW9u cygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9tdmRpc3RpbmN0LmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL212ZGlzdGluY3QuYwppbmRl eCA3ZTdhNjM0MDVjOC4uMDAzZGMzYTc0YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRp c3RpY3MvbXZkaXN0aW5jdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbXZkaXN0aW5j dC5jCkBAIC0yNyw5ICsyNywxNSBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNf ZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0X2RhdGEuaCIKKyNpbmNs dWRlICJjb21tb24vaW50LmgiCisjaW5jbHVkZSAiY29tbW9uL2pzb25hcGkuaCIKICNpbmNsdWRl ICJsaWIvc3RyaW5naW5mby5oIgorI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCisjaW5jbHVkZSAi bm9kZXMvbWlzY25vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgogI2luY2x1ZGUg InN0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJzdGF0aXN0 aWNzL3N0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUg InV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1 ZGUgInV0aWxzL3R5cGNhY2hlLmgiCkBAIC0zMjgsMjggKzMzNCw0NTMgQEAgc3RhdGV4dF9uZGlz dGluY3RfZGVzZXJpYWxpemUoYnl0ZWEgKmRhdGEpCiAJcmV0dXJuIG5kaXN0aW5jdDsKIH0KIAor dHlwZWRlZiBlbnVtCit7CisJTkRJU1RfRVhQRUNUX1NUQVJUID0gMCwKKwlORElTVF9FWFBFQ1Rf SVRFTSwKKwlORElTVF9FWFBFQ1RfS0VZLAorCU5ESVNUX0VYUEVDVF9BVFROVU1fTElTVCwKKwlO RElTVF9FWFBFQ1RfQVRUTlVNLAorCU5ESVNUX0VYUEVDVF9ORElTVElOQ1QsCisJTkRJU1RfRVhQ RUNUX0NPTVBMRVRFCit9CQkJbmRpc3RpbmN0U2VtYW50aWNTdGF0ZTsKKwordHlwZWRlZiBzdHJ1 Y3QKK3sKKwljb25zdCBjaGFyICpzdHI7CisJbmRpc3RpbmN0U2VtYW50aWNTdGF0ZSBzdGF0ZTsK KworCUxpc3QJICAgKmRpc3RpbmN0X2l0ZW1zOyAvKiBBY2N1bXVsYXRlZCBjb21wbGV0ZSBNVk5E aXN0aW5jdEl0ZW1zICovCisJTm9kZQkgICAqZXNjb250ZXh0OworCisJYm9vbAkJZm91bmRfYXR0 cmlidXRlczsJLyogSXRlbSBoYXMgYW4gYXR0cmlidXRlcyBrZXkgKi8KKwlib29sCQlmb3VuZF9u ZGlzdGluY3Q7CS8qIEl0ZW0gaGFzIG5kaXN0aW5jdCBrZXkgKi8KKwlMaXN0CSAgICphdHRudW1f bGlzdDsJLyogQWNjdW11bGF0ZWQgYXR0cmlidXRlcyBhdHRudW1zICovCisJaW50NjQJCW5kaXN0 aW5jdDsKK30JCQluZGlzdGluY3RQYXJzZVN0YXRlOworCisvKgorICogSW52b2tlZCBhdCB0aGUg c3RhcnQgb2YgZWFjaCBNVk5EaXN0aW5jdEl0ZW0uCisgKgorICogVGhlIGVudGlyZSBKU09OIGRv Y3VtZW50IHNob3VsIGJlIG9uZSBhcnJheSBvZiBNVk5EaXN0aW5jdEl0ZW0gb2JqZWN0cy4KKyAq CisgKiBJZiB3ZSdyZSBhbnl3aGVyZSBlbHNlIGluIHRoZSBkb2N1bWVudCwgaXQncyBhbiBlcnJv ci4KKyAqLworc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorbmRpc3RpbmN0X29iamVjdF9zdGFy dCh2b2lkICpzdGF0ZSkKK3sKKwluZGlzdGluY3RQYXJzZVN0YXRlICpwYXJzZSA9IHN0YXRlOwor CisJaWYgKHBhcnNlLT5zdGF0ZSAhPSBORElTVF9FWFBFQ1RfSVRFTSkKKwl7CisJCWVyZXR1cm4o cGFyc2UtPmVzY29udGV4dCwgKERhdHVtKSAwLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkgZXJybXNnKCJtYWxmb3JtZWQgcGdfbmRpc3Rp bmN0OiBcIiVzXCIiLCBwYXJzZS0+c3RyKSwKKwkJCQkgZXJyZGV0YWlsKCJFeHBlY3RlZCBJdGVt IG9iamVjdCIpKSk7CisJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0KKworCS8q IE5vdyB3ZSBleHBlY3QgdG8gc2VlIGF0dHJpYnV0ZXMvbmRpc3RpbmN0IGtleXMgKi8KKwlwYXJz ZS0+c3RhdGUgPSBORElTVF9FWFBFQ1RfS0VZOworCXJldHVybiBKU09OX1NVQ0NFU1M7Cit9CisK Ky8qCisgKiBSb3V0aW5lIHRvIGFsbG93IHFzb3J0aW5nIG9mIEF0dE51bWJlcnMKKyAqLworc3Rh dGljIGludAorYXR0bnVtX2NvbXBhcmUoY29uc3Qgdm9pZCAqYXB0ciwgY29uc3Qgdm9pZCAqYnB0 cikKK3sKKwlBdHRyTnVtYmVyCWEgPSAqKGNvbnN0IEF0dHJOdW1iZXIgKikgYXB0cjsKKwlBdHRy TnVtYmVyCWIgPSAqKGNvbnN0IEF0dHJOdW1iZXIgKikgYnB0cjsKKworCXJldHVybiBwZ19jbXBf czE2KGEsIGIpOworfQorCisKKy8qCisgKiBJbnZva2VkIGF0IHRoZSBlbmQgb2YgYW4gb2JqZWN0 LgorICoKKyAqIENoZWNrIHRvIGVuc3VyZSB0aGF0IGl0IHdhcyBhIGNvbXBsZXRlIE1WTkRpc3Rp bmN0SXRlbQorICoKKyAqLworc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorbmRpc3RpbmN0X29i amVjdF9lbmQodm9pZCAqc3RhdGUpCit7CisJbmRpc3RpbmN0UGFyc2VTdGF0ZSAqcGFyc2UgPSBz dGF0ZTsKKworCWludAkJCW5hdHRzID0gMDsKKwlBdHRyTnVtYmVyICphdHRyc29ydDsKKworCU1W TkRpc3RpbmN0SXRlbSAqaXRlbTsKKworCWlmICghcGFyc2UtPmZvdW5kX2F0dHJpYnV0ZXMpCisJ eworCQllcmV0dXJuKHBhcnNlLT5lc2NvbnRleHQsIChEYXR1bSkgMCwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJIGVycm1zZygibWFsZm9y bWVkIHBnX25kaXN0aW5jdDogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJIGVycmRldGFpbCgi SXRlbSBtdXN0IGNvbnRhaW4gXCJhdHRyaWJ1dGVzXCIga2V5IikpKTsKKwkJcmV0dXJuIEpTT05f U0VNX0FDVElPTl9GQUlMRUQ7CisJfQorCisJaWYgKCFwYXJzZS0+Zm91bmRfbmRpc3RpbmN0KQor CXsKKwkJZXJldHVybihwYXJzZS0+ZXNjb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCSBlcnJtc2coIm1hbGZv cm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCSBlcnJkZXRhaWwo Ikl0ZW0gbXVzdCBjb250YWluIFwibmRpc3RpbmN0XCIga2V5IikpKTsKKwkJcmV0dXJuIEpTT05f U0VNX0FDVElPTl9GQUlMRUQ7CisJfQorCisJaWYgKHBhcnNlLT5hdHRudW1fbGlzdCA9PSBOSUwp CisJeworCQllcmV0dXJuKHBhcnNlLT5lc2NvbnRleHQsIChEYXR1bSkgMCwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJIGVycm1zZygibWFs Zm9ybWVkIHBnX25kaXN0aW5jdDogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJIGVycmRldGFp bCgiVGhlIFwiYXR0cmlidXRlc1wiIGtleSBtdXN0IGJlIGFuIG5vbi1lbXB0eSBhcnJheSIpKSk7 CisJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0KKworCS8qCisJICogV2UgbmVl ZCBhdCBsZWFzdCAyIGF0dG51bXMgZm9yIGEgbmRpc3RpbmN0IGl0ZW0sIGFueXRoaW5nIGxlc3Mg aXMKKwkgKiBtYWxmb3JtZWQuCisJICovCisJbmF0dHMgPSBwYXJzZS0+YXR0bnVtX2xpc3QtPmxl bmd0aDsKKwlpZiAobmF0dHMgPCAyKQorCXsKKwkJZXJldHVybihwYXJzZS0+ZXNjb250ZXh0LCAo RGF0dW0pIDAsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJ T04pLAorCQkJCSBlcnJtc2coIm1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNcIiIsIHBhcnNl LT5zdHIpLAorCQkJCSBlcnJkZXRhaWwoIlRoZSBhdHRyaWJ1dGVzIGtleSBtdXN0IGNvbnRhaW4g YW4gYXJyYXkgb2YgYXQgbGVhc3QgdHdvIGF0dG51bXMiKSkpOworCisJCXJldHVybiBKU09OX1NF TV9BQ1RJT05fRkFJTEVEOworCX0KKwlhdHRyc29ydCA9IHBhbGxvYzAobmF0dHMgKiBzaXplb2Yo QXR0ck51bWJlcikpOworCisJLyogQ3JlYXRlIHRoZSBNVk5EaXN0aW5jdEl0ZW0gKi8KKwlpdGVt ID0gcGFsbG9jKHNpemVvZihNVk5EaXN0aW5jdEl0ZW0pKTsKKwlpdGVtLT5uYXR0cmlidXRlcyA9 IG5hdHRzOworCWl0ZW0tPmF0dHJpYnV0ZXMgPSBwYWxsb2MwKG5hdHRzICogc2l6ZW9mKEF0dHJO dW1iZXIpKTsKKwlpdGVtLT5uZGlzdGluY3QgPSAoZG91YmxlKSBwYXJzZS0+bmRpc3RpbmN0Owor CisJLyogZmlsbCBvdXQgYm90aCBhdHRudW0gbGlzdCBhbmQgc29ydGFibGUgbGlzdCAqLworCWZv ciAoaW50IGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwl7CisJCWF0dHJzb3J0W2ldID0gKEF0dHJO dW1iZXIpIHBhcnNlLT5hdHRudW1fbGlzdC0+ZWxlbWVudHNbaV0uaW50X3ZhbHVlOworCQlpdGVt LT5hdHRyaWJ1dGVzW2ldID0gYXR0cnNvcnRbaV07CisJfQorCisJLyogQ2hlY2sgYXR0cnNvcnQg Zm9yIHVuaXF1ZW5lc3MgKi8KKwlxc29ydChhdHRyc29ydCwgbmF0dHMsIHNpemVvZihBdHRyTnVt YmVyKSwgYXR0bnVtX2NvbXBhcmUpOworCWZvciAoaW50IGkgPSAxOyBpIDwgbmF0dHM7IGkrKykK KwkJaWYgKGF0dHJzb3J0W2ldID09IGF0dHJzb3J0W2kgLSAxXSkKKwkJeworCQkJZXJldHVybihw YXJzZS0+ZXNjb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJIGVycm1zZygibWFsZm9ybWVkIHBnX25kaXN0 aW5jdDogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJCSBlcnJkZXRhaWwoImF0dG51bSBsaXN0 IGR1cGxpY2F0ZSB2YWx1ZSBmb3VuZDogJWQiLCBhdHRyc29ydFtpXSkpKTsKKworCQkJcmV0dXJu IEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7CisJCX0KKwlwZnJlZShhdHRyc29ydCk7CisKKwlwYXJz ZS0+ZGlzdGluY3RfaXRlbXMgPSBsYXBwZW5kKHBhcnNlLT5kaXN0aW5jdF9pdGVtcywgKHZvaWQg KikgaXRlbSk7CisKKwkvKiByZXNldCBpdGVtIHN0YXRlIHZhcnMgKi8KKwlsaXN0X2ZyZWUocGFy c2UtPmF0dG51bV9saXN0KTsKKwlwYXJzZS0+YXR0bnVtX2xpc3QgPSBOSUw7CisJcGFyc2UtPm5k aXN0aW5jdCA9IDA7CisJcGFyc2UtPmZvdW5kX2F0dHJpYnV0ZXMgPSBmYWxzZTsKKwlwYXJzZS0+ Zm91bmRfbmRpc3RpbmN0ID0gZmFsc2U7CisKKwkvKiBOb3cgd2UgYXJlIGxvb2tpbmcgZm9yIHRo ZSBuZXh0IE1WTkRpc3RpbmN0SXRlbSAqLworCXBhcnNlLT5zdGF0ZSA9IE5ESVNUX0VYUEVDVF9J VEVNOworCXJldHVybiBKU09OX1NVQ0NFU1M7Cit9CisKKworLyoKKyAqIG5kc2l0aW5jdCBpbnB1 dCBmb3JtYXQgaGFzIHR3byB0eXBlcyBvZiBhcnJheXMsIHRoZSBvdXRlciBNVk5EaXN0aW5jdEl0 ZW0KKyAqIGFycmF5LCBhbmQgdGhlIGF0dG51bSBsaXN0IGFycmF5IHdpdGhpbiBlYWNoIE1WTkRp c3RpbmN0SXRlbS4KKyAqLworc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorbmRpc3RpbmN0X2Fy cmF5X3N0YXJ0KHZvaWQgKnN0YXRlKQoreworCW5kaXN0aW5jdFBhcnNlU3RhdGUgKnBhcnNlID0g c3RhdGU7CisKKwlzd2l0Y2ggKHBhcnNlLT5zdGF0ZSkKKwl7CisJCWNhc2UgTkRJU1RfRVhQRUNU X0FUVE5VTV9MSVNUOgorCQkJcGFyc2UtPnN0YXRlID0gTkRJU1RfRVhQRUNUX0FUVE5VTTsKKwkJ CWJyZWFrOworCisJCWNhc2UgTkRJU1RfRVhQRUNUX1NUQVJUOgorCQkJcGFyc2UtPnN0YXRlID0g TkRJU1RfRVhQRUNUX0lURU07CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZXJldHVybihw YXJzZS0+ZXNjb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJIGVycm1zZygibWFsZm9ybWVkIHBnX25kaXN0 aW5jdDogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJCSBlcnJkZXRhaWwoIkFycmF5IGZvdW5k IGluIHVuZXhwZWN0ZWQgcGxhY2UiKSkpOworCQkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlM RUQ7CisJfQorCisJcmV0dXJuIEpTT05fU1VDQ0VTUzsKK30KKworCitzdGF0aWMgSnNvblBhcnNl RXJyb3JUeXBlCituZGlzdGluY3RfYXJyYXlfZW5kKHZvaWQgKnN0YXRlKQoreworCW5kaXN0aW5j dFBhcnNlU3RhdGUgKnBhcnNlID0gc3RhdGU7CisKKwkvKiBUaGUgYXR0bnVtIGxpc3QgaXMgY29t cGxldGUsIGxvb2sgZm9yIG1vcmUgTVZORGlzdGluY3RJdGVtIGtleXMgKi8KKwlpZiAocGFyc2Ut PnN0YXRlID09IE5ESVNUX0VYUEVDVF9BVFROVU0pCisJeworCQlwYXJzZS0+c3RhdGUgPSBORElT VF9FWFBFQ1RfS0VZOworCQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCX0KKworCWlmIChwYXJzZS0+ c3RhdGUgPT0gTkRJU1RfRVhQRUNUX0lURU0pCisJeworCQlwYXJzZS0+c3RhdGUgPSBORElTVF9F WFBFQ1RfQ09NUExFVEU7CisJCXJldHVybiBKU09OX1NVQ0NFU1M7CisJfQorCisJZXJldHVybihw YXJzZS0+ZXNjb250ZXh0LCAoRGF0dW0pIDAsCisJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf VEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkgZXJybXNnKCJtYWxmb3JtZWQgcGdfbmRpc3RpbmN0 OiBcIiVzXCIiLCBwYXJzZS0+c3RyKSwKKwkJCSBlcnJkZXRhaWwoIkFycmF5IGZvdW5kIGluIHVu ZXhwZWN0ZWQgcGxhY2UiKSkpOworCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworfQor CisKKy8qCisgKiBUaGUgdmFsaWQga2V5cyBmb3IgdGhlIE1WTkRpc3RpbmN0SXRlbSBvYmplY3Qg YXJlOgorICogICAtIGF0dHJpYnV0ZXMKKyAqICAgLSBuZGlzdGluY3QKKyAqLworc3RhdGljIEpz b25QYXJzZUVycm9yVHlwZQorbmRpc3RpbmN0X29iamVjdF9maWVsZF9zdGFydCh2b2lkICpzdGF0 ZSwgY2hhciAqZm5hbWUsIGJvb2wgaXNudWxsKQoreworCW5kaXN0aW5jdFBhcnNlU3RhdGUgKnBh cnNlID0gc3RhdGU7CisKKwljb25zdCBjaGFyICphdHRyaWJ1dGVzID0gImF0dHJpYnV0ZXMiOwor CWNvbnN0IGNoYXIgKm5kaXN0aW5jdCA9ICJuZGlzdGluY3QiOworCisJaWYgKHN0cmNtcChmbmFt ZSwgYXR0cmlidXRlcykgPT0gMCkKKwl7CisJCXBhcnNlLT5mb3VuZF9hdHRyaWJ1dGVzID0gdHJ1 ZTsKKwkJcGFyc2UtPnN0YXRlID0gTkRJU1RfRVhQRUNUX0FUVE5VTV9MSVNUOworCQlyZXR1cm4g SlNPTl9TVUNDRVNTOworCX0KKworCWlmIChzdHJjbXAoZm5hbWUsIG5kaXN0aW5jdCkgPT0gMCkK Kwl7CisJCXBhcnNlLT5mb3VuZF9uZGlzdGluY3QgPSB0cnVlOworCQlwYXJzZS0+c3RhdGUgPSBO RElTVF9FWFBFQ1RfTkRJU1RJTkNUOworCQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCX0KKworCWVy ZXR1cm4ocGFyc2UtPmVzY29udGV4dCwgKERhdHVtKSAwLAorCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJIGVycm1zZygibWFsZm9ybWVkIHBnX25k aXN0aW5jdDogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkgZXJyZGV0YWlsKCJPbmx5IGFsbG93 ZWQga2V5cyBhcmUgXCVzXCIgYW5kIFwlc1wiLiIsIGF0dHJpYnV0ZXMsIG5kaXN0aW5jdCkpKTsK KwlyZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKK30KKworLyoKKyAqCisgKi8KK3N0YXRp YyBKc29uUGFyc2VFcnJvclR5cGUKK25kaXN0aW5jdF9hcnJheV9lbGVtZW50X3N0YXJ0KHZvaWQg KnN0YXRlLCBib29sIGlzbnVsbCkKK3sKKwluZGlzdGluY3RQYXJzZVN0YXRlICpwYXJzZSA9IHN0 YXRlOworCisJaWYgKHBhcnNlLT5zdGF0ZSA9PSBORElTVF9FWFBFQ1RfQVRUTlVNKQorCXsKKwkJ aWYgKGlzbnVsbCkKKwkJeworCQkJZXJldHVybihwYXJzZS0+ZXNjb250ZXh0LCAoRGF0dW0pIDAs CisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJ CQkJIGVycm1zZygibWFsZm9ybWVkIHBnX25kaXN0aW5jdDogXCIlc1wiIiwgcGFyc2UtPnN0ciks CisJCQkJCSBlcnJkZXRhaWwoIkF0dG51bSBsaXN0IGVsZW1lbnRzIGNhbm5vdCBiZSBudWxsLiIp KSk7CisKKwkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCQl9CisJCXJldHVybiBK U09OX1NVQ0NFU1M7CisJfQorCisJaWYgKHBhcnNlLT5zdGF0ZSA9PSBORElTVF9FWFBFQ1RfSVRF TSkKKwl7CisJCWlmIChpc251bGwpCisJCXsKKwkJCWVyZXR1cm4ocGFyc2UtPmVzY29udGV4dCwg KERhdHVtKSAwLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRB VElPTiksCisJCQkJCSBlcnJtc2coIm1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNcIiIsIHBh cnNlLT5zdHIpLAorCQkJCQkgZXJyZGV0YWlsKCJJdGVtIGxpc3QgZWxlbWVudHMgY2Fubm90IGJl IG51bGwuIikpKTsKKworCQkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7CisJCX0KKwor CQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCX0KKworCWVyZXR1cm4ocGFyc2UtPmVzY29udGV4dCwg KERhdHVtKSAwLAorCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJ T04pLAorCQkJIGVycm1zZygibWFsZm9ybWVkIHBnX25kaXN0aW5jdDogXCIlc1wiIiwgcGFyc2Ut PnN0ciksCisJCQkgZXJyZGV0YWlsKCJVbmV4cGVjdGVkIGFycmF5IGVsZW1lbnQuIikpKTsKKwor CXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworfQorCisvKgorICogSGFuZGxlIHNjYWxh ciBldmVudHMgZnJvbSB0aGUgbmRpc3RpbmN0IGlucHV0IHBhcnNlci4KKyAqCisgKi8KK3N0YXRp YyBKc29uUGFyc2VFcnJvclR5cGUKK25kaXN0aW5jdF9zY2FsYXIodm9pZCAqc3RhdGUsIGNoYXIg KnRva2VuLCBKc29uVG9rZW5UeXBlIHRva2VudHlwZSkKK3sKKwluZGlzdGluY3RQYXJzZVN0YXRl ICpwYXJzZSA9IHN0YXRlOworCisJaWYgKHBhcnNlLT5zdGF0ZSA9PSBORElTVF9FWFBFQ1RfQVRU TlVNKQorCXsKKwkJQXR0ck51bWJlcglhdHRudW0gPSBwZ19zdHJ0b2ludDE2X3NhZmUodG9rZW4s IHBhcnNlLT5lc2NvbnRleHQpOworCisJCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKHBhcnNlLT5l c2NvbnRleHQpKQorCQkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7CisKKwkJcGFyc2Ut PmF0dG51bV9saXN0ID0gbGFwcGVuZF9pbnQocGFyc2UtPmF0dG51bV9saXN0LCAoaW50KSBhdHRu dW0pOworCQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCX0KKworCWlmIChwYXJzZS0+c3RhdGUgPT0g TkRJU1RfRVhQRUNUX05ESVNUSU5DVCkKKwl7CisJCS8qCisJCSAqIFdoaWxlIHRoZSBzdHJ1Y3R1 cmUgZGljdGF0ZXMgdGhhdCBuZGlzdGluY3QgaW4gYSBkb3VibGUgcHJlY2lzaW9uCisJCSAqIGZs b2F0aW5nIHBvaW50LCBpbiBwcmFjdGljZSBpdCBoYXMgYWx3YXlzIGJlZW4gYW4gaW50ZWdlciwg YW5kIGl0CisJCSAqIGlzIG91dHB1dCBhcyBzdWNoLiBUaGVyZWZvcmUsIHdlIGZvbGxvdyB1c2Fn ZSBwcmVjZW5kZW50IG92ZXIgdGhlCisJCSAqIGFjdHVhbCBzdG9yYWdlIHN0cnVjdHVyZSwgYW5k IHJlYWQgaXQgaW4gYXMgYW4gaW50ZWdlci4KKwkJICovCisJCXBhcnNlLT5uZGlzdGluY3QgPSBw Z19zdHJ0b2ludDY0X3NhZmUodG9rZW4sIHBhcnNlLT5lc2NvbnRleHQpOworCisJCWlmIChTT0ZU X0VSUk9SX09DQ1VSUkVEKHBhcnNlLT5lc2NvbnRleHQpKQorCQkJcmV0dXJuIEpTT05fU0VNX0FD VElPTl9GQUlMRUQ7CisKKwkJcGFyc2UtPnN0YXRlID0gTkRJU1RfRVhQRUNUX0tFWTsKKwkJcmV0 dXJuIEpTT05fU1VDQ0VTUzsKKwl9CisKKwllcmV0dXJuKHBhcnNlLT5lc2NvbnRleHQsIChEYXR1 bSkgMCwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwK KwkJCSBlcnJtc2coIm1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNcIiIsIHBhcnNlLT5zdHIp LAorCQkJIGVycmRldGFpbCgiVW5leHBlY3RlZCBzY2FsYXIuIikpKTsKKworCXJldHVybiBKU09O X1NFTV9BQ1RJT05fRkFJTEVEOworfQorCiAvKgogICogcGdfbmRpc3RpbmN0X2luCiAgKgkJaW5w dXQgcm91dGluZSBmb3IgdHlwZSBwZ19uZGlzdGluY3QKICAqCi0gKiBwZ19uZGlzdGluY3QgaXMg cmVhbCBlbm91Z2ggdG8gYmUgYSB0YWJsZSBjb2x1bW4sIGJ1dCBpdCBoYXMgbm8KLSAqIG9wZXJh dGlvbnMgb2YgaXRzIG93biwgYW5kIGRpc2FsbG93cyBpbnB1dCAoanVzdCBsaWtlIHBnX25vZGVf dHJlZSkuCisgKiBleGFtcGxlIGlucHV0OgorICogICAgIFt7ImF0dHJpYnV0ZXMiOiBbNiwgLTFd LCAibmRpc3RpbmN0IjogMTR9LAorICogICAgICB7ImF0dHJpYnV0ZXMiOiBbNiwgLTJdLCAibmRp c3RpbmN0IjogOTE0M30sCisgKiAgICAgIHsiYXR0cmlidXRlcyI6IFstMSwtMl0sICJuZGlzdGlu Y3QiOiAxMzQ1NH0sCisgKiAgICAgIHsiYXR0cmlidXRlcyI6IFs2LCAtMSwgLTJdLCAibmRpc3Rp bmN0IjogMTQ1NDl9XQogICovCiBEYXR1bQogcGdfbmRpc3RpbmN0X2luKFBHX0ZVTkNUSU9OX0FS R1MpCiB7Ci0JZXJlcG9ydChFUlJPUiwKLQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKLQkJCSBlcnJtc2coImNhbm5vdCBhY2NlcHQgYSB2YWx1ZSBvZiB0eXBlICVz IiwgInBnX25kaXN0aW5jdCIpKSk7CisJY2hhcgkgICAqc3RyID0gUEdfR0VUQVJHX0NTVFJJTkco MCk7CiAKLQlQR19SRVRVUk5fVk9JRCgpOwkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwlu ZGlzdGluY3RQYXJzZVN0YXRlIHBhcnNlX3N0YXRlOworCUpzb25QYXJzZUVycm9yVHlwZSByZXN1 bHQ7CisJSnNvbkxleENvbnRleHQgKmxleDsKKwlKc29uU2VtQWN0aW9uIHNlbV9hY3Rpb247CisK KwkvKiBpbml0aWFsaXplIHNlbWFudGljIHN0YXRlICovCisJcGFyc2Vfc3RhdGUuc3RyID0gc3Ry OworCXBhcnNlX3N0YXRlLnN0YXRlID0gTkRJU1RfRVhQRUNUX1NUQVJUOworCXBhcnNlX3N0YXRl LmRpc3RpbmN0X2l0ZW1zID0gTklMOworCXBhcnNlX3N0YXRlLmVzY29udGV4dCA9IGZjaW5mby0+ Y29udGV4dDsKKwlwYXJzZV9zdGF0ZS5mb3VuZF9hdHRyaWJ1dGVzID0gZmFsc2U7CisJcGFyc2Vf c3RhdGUuZm91bmRfbmRpc3RpbmN0ID0gZmFsc2U7CisJcGFyc2Vfc3RhdGUuYXR0bnVtX2xpc3Qg PSBOSUw7CisJcGFyc2Vfc3RhdGUubmRpc3RpbmN0ID0gMDsKKworCS8qIHNldCBjYWxsYmFja3Mg Ki8KKwlzZW1fYWN0aW9uLnNlbXN0YXRlID0gKHZvaWQgKikgJnBhcnNlX3N0YXRlOworCXNlbV9h Y3Rpb24ub2JqZWN0X3N0YXJ0ID0gbmRpc3RpbmN0X29iamVjdF9zdGFydDsKKwlzZW1fYWN0aW9u Lm9iamVjdF9lbmQgPSBuZGlzdGluY3Rfb2JqZWN0X2VuZDsKKwlzZW1fYWN0aW9uLmFycmF5X3N0 YXJ0ID0gbmRpc3RpbmN0X2FycmF5X3N0YXJ0OworCXNlbV9hY3Rpb24uYXJyYXlfZW5kID0gbmRp c3RpbmN0X2FycmF5X2VuZDsKKwlzZW1fYWN0aW9uLm9iamVjdF9maWVsZF9zdGFydCA9IG5kaXN0 aW5jdF9vYmplY3RfZmllbGRfc3RhcnQ7CisJc2VtX2FjdGlvbi5vYmplY3RfZmllbGRfZW5kID0g TlVMTDsKKwlzZW1fYWN0aW9uLmFycmF5X2VsZW1lbnRfc3RhcnQgPSBuZGlzdGluY3RfYXJyYXlf ZWxlbWVudF9zdGFydDsKKwlzZW1fYWN0aW9uLmFycmF5X2VsZW1lbnRfZW5kID0gTlVMTDsKKwlz ZW1fYWN0aW9uLnNjYWxhciA9IG5kaXN0aW5jdF9zY2FsYXI7CisKKwlsZXggPSBtYWtlSnNvbkxl eENvbnRleHRDc3RyaW5nTGVuKE5VTEwsIHN0ciwgc3RybGVuKHN0ciksCisJCQkJCQkJCQkgICBQ R19VVEY4LCB0cnVlKTsKKwlyZXN1bHQgPSBwZ19wYXJzZV9qc29uKGxleCwgJnNlbV9hY3Rpb24p OworCWZyZWVKc29uTGV4Q29udGV4dChsZXgpOworCisJaWYgKHJlc3VsdCA9PSBKU09OX1NVQ0NF U1MpCisJeworCQlNVk5EaXN0aW5jdCAqbmRpc3RpbmN0OworCQlpbnQJCQluaXRlbXMgPSBwYXJz ZV9zdGF0ZS5kaXN0aW5jdF9pdGVtcy0+bGVuZ3RoOworCQlieXRlYQkgICAqYnl0ZXM7CisKKwkJ bmRpc3RpbmN0ID0gcGFsbG9jKG9mZnNldG9mKE1WTkRpc3RpbmN0LCBpdGVtcykgKworCQkJCQkJ ICAgbml0ZW1zICogc2l6ZW9mKE1WTkRpc3RpbmN0SXRlbSkpOworCisJCW5kaXN0aW5jdC0+bWFn aWMgPSBTVEFUU19ORElTVElOQ1RfTUFHSUM7CisJCW5kaXN0aW5jdC0+dHlwZSA9IFNUQVRTX05E SVNUSU5DVF9UWVBFX0JBU0lDOworCQluZGlzdGluY3QtPm5pdGVtcyA9IG5pdGVtczsKKworCQlm b3IgKGludCBpID0gMDsgaSA8IG5pdGVtczsgaSsrKQorCQl7CisJCQlNVk5EaXN0aW5jdEl0ZW0g Kml0ZW0gPSBwYXJzZV9zdGF0ZS5kaXN0aW5jdF9pdGVtcy0+ZWxlbWVudHNbaV0ucHRyX3ZhbHVl OworCisJCQluZGlzdGluY3QtPml0ZW1zW2ldLm5kaXN0aW5jdCA9IGl0ZW0tPm5kaXN0aW5jdDsK KwkJCW5kaXN0aW5jdC0+aXRlbXNbaV0ubmF0dHJpYnV0ZXMgPSBpdGVtLT5uYXR0cmlidXRlczsK KwkJCW5kaXN0aW5jdC0+aXRlbXNbaV0uYXR0cmlidXRlcyA9IGl0ZW0tPmF0dHJpYnV0ZXM7CisK KwkJCS8qCisJCQkgKiBmcmVlIHRoZSBNVk5EaXN0aW5jdEl0ZW0sIGJ1dCBub3QgdGhlIGF0dHJp YnV0ZXMgd2UncmUgc3RpbGwKKwkJCSAqIHVzaW5nCisJCQkgKi8KKwkJCXBmcmVlKGl0ZW0pOwor CQl9CisJCWJ5dGVzID0gc3RhdGV4dF9uZGlzdGluY3Rfc2VyaWFsaXplKG5kaXN0aW5jdCk7CisK KwkJbGlzdF9mcmVlKHBhcnNlX3N0YXRlLmRpc3RpbmN0X2l0ZW1zKTsKKwkJZm9yIChpbnQgaSA9 IDA7IGkgPCBuaXRlbXM7IGkrKykKKwkJCXBmcmVlKG5kaXN0aW5jdC0+aXRlbXNbaV0uYXR0cmli dXRlcyk7CisJCXBmcmVlKG5kaXN0aW5jdCk7CisKKwkJUEdfUkVUVVJOX0JZVEVBX1AoYnl0ZXMp OworCX0KKwllbHNlIGlmIChyZXN1bHQgPT0gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRCkKKwkJUEdf UkVUVVJOX05VTEwoKTsJCS8qIGVzY29udGV4dCBhbHJlYWR5IHNldCAqLworCisJLyogQW55dGhp bmcgZWxzZSBpcyBhIGdlbmVyaWMgSlNPTiBwYXJzZSBlcnJvciAqLworCWVyZXR1cm4ocGFyc2Vf c3RhdGUuZXNjb250ZXh0LCAoRGF0dW0pIDAsCisJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf VEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkgZXJybXNnKCJtYWxmb3JtZWQgcGdfbmRpc3RpbmN0 OiBcIiVzXCIiLCBzdHIpLAorCQkJIGVycmRldGFpbCgiTXVzdCBiZSB2YWxpZCBKU09OLiIpKSk7 CisJUEdfUkVUVVJOX05VTEwoKTsKIH0KIAogLyoKICAqIHBnX25kaXN0aW5jdAogICoJCW91dHB1 dCByb3V0aW5lIGZvciB0eXBlIHBnX25kaXN0aW5jdAogICoKLSAqIFByb2R1Y2VzIGEgaHVtYW4t cmVhZGFibGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlLgorICogUHJvZHVjZXMgYSBodW1h bi1yZWFkYWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUsIGluIHRoZSBmb3JtYXQ6Cisg KiAgIFt7ImF0dHJpYnV0ZXMiOiBbYXR0bnVtLC4gLi5dLCAibmRpc3RpbmN0IjogaW50fSwgLi4u XQorICoKICAqLwogRGF0dW0KIHBnX25kaXN0aW5jdF9vdXQoUEdfRlVOQ1RJT05fQVJHUykKQEAg LTM2MCwyNiArNzkxLDI2IEBAIHBnX25kaXN0aW5jdF9vdXQoUEdfRlVOQ1RJT05fQVJHUykKIAlT dHJpbmdJbmZvRGF0YSBzdHI7CiAKIAlpbml0U3RyaW5nSW5mbygmc3RyKTsKLQlhcHBlbmRTdHJp bmdJbmZvQ2hhcigmc3RyLCAneycpOworCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZzdHIsICdbJyk7 CiAKIAlmb3IgKGkgPSAwOyBpIDwgbmRpc3QtPm5pdGVtczsgaSsrKQogCXsKLQkJaW50CQkJajsK IAkJTVZORGlzdGluY3RJdGVtIGl0ZW0gPSBuZGlzdC0+aXRlbXNbaV07CiAKIAkJaWYgKGkgPiAw KQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmc3RyLCAiLCAiKTsKIAotCQlmb3IgKGogPSAw OyBqIDwgaXRlbS5uYXR0cmlidXRlczsgaisrKQotCQl7Ci0JCQlBdHRyTnVtYmVyCWF0dG51bSA9 IGl0ZW0uYXR0cmlidXRlc1tqXTsKKwkJQXNzZXJ0KGl0ZW0ubmF0dHJpYnV0ZXMgPiAwKTsJLyog VE9ETzogZWxvZz8gKi8KIAotCQkJYXBwZW5kU3RyaW5nSW5mbygmc3RyLCAiJXMlZCIsIChqID09 IDApID8gIlwiIiA6ICIsICIsIGF0dG51bSk7Ci0JCX0KLQkJYXBwZW5kU3RyaW5nSW5mbygmc3Ry LCAiXCI6ICVkIiwgKGludCkgaXRlbS5uZGlzdGluY3QpOworCQlhcHBlbmRTdHJpbmdJbmZvKCZz dHIsICJ7XCJhdHRyaWJ1dGVzXCI6IFslZCIsIGl0ZW0uYXR0cmlidXRlc1swXSk7CisKKwkJZm9y IChpbnQgaiA9IDE7IGogPCBpdGVtLm5hdHRyaWJ1dGVzOyBqKyspCisJCQlhcHBlbmRTdHJpbmdJ bmZvKCZzdHIsICIsICVkIiwgaXRlbS5hdHRyaWJ1dGVzW2pdKTsKKworCQlhcHBlbmRTdHJpbmdJ bmZvKCZzdHIsICJdLCBcIm5kaXN0aW5jdFwiOiAlZH0iLCAoaW50KSBpdGVtLm5kaXN0aW5jdCk7 CiAJfQogCi0JYXBwZW5kU3RyaW5nSW5mb0NoYXIoJnN0ciwgJ30nKTsKKwlhcHBlbmRTdHJpbmdJ bmZvQ2hhcigmc3RyLCAnXScpOwogCiAJUEdfUkVUVVJOX0NTVFJJTkcoc3RyLmRhdGEpOwogfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CmluZGV4IGM2NmUwOWY4YjE2Li4x ZDczYmNmNDBmZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19l eHQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dApAQCAt NDQ3LDkgKzQ0Nyw5IEBAIFNFTEVDVCBzLnN0eGtpbmQsIGQuc3R4ZG5kaXN0aW5jdAogICBGUk9N IHBnX3N0YXRpc3RpY19leHQgcywgcGdfc3RhdGlzdGljX2V4dF9kYXRhIGQKICBXSEVSRSBzLnN0 eHJlbGlkID0gJ25kaXN0aW5jdCc6OnJlZ2NsYXNzCiAgICBBTkQgZC5zdHhvaWQgPSBzLm9pZDsK LSBzdHhraW5kIHwgICAgICAgICAgICAgICAgICAgIHN0eGRuZGlzdGluY3QgICAgICAgICAgICAg ICAgICAgIAotLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0ge2QsZixtfSB8IHsiMywgNCI6IDExLCAiMywgNiI6IDExLCAiNCwg NiI6IDExLCAiMywgNCwgNiI6IDExfQorIHN0eGtpbmQgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 eGRuZGlzdGluY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge2QsZixtfSB8IFt7 ImF0dHJpYnV0ZXMiOiBbMywgNF0sICJuZGlzdGluY3QiOiAxMX0sIHsiYXR0cmlidXRlcyI6IFsz LCA2XSwgIm5kaXN0aW5jdCI6IDExfSwgeyJhdHRyaWJ1dGVzIjogWzQsIDZdLCAibmRpc3RpbmN0 IjogMTF9LCB7ImF0dHJpYnV0ZXMiOiBbMywgNCwgNl0sICJuZGlzdGluY3QiOiAxMX1dCiAoMSBy b3cpCiAKIC0tIG1pbm9yIGltcHJvdmVtZW50LCBtYWtlIHN1cmUgdGhlIGN0aWQgZG9lcyBub3Qg YnJlYWsgdGhlIG1hdGNoaW5nCkBAIC01MjksOSArNTI5LDkgQEAgU0VMRUNUIHMuc3R4a2luZCwg ZC5zdHhkbmRpc3RpbmN0CiAgIEZST00gcGdfc3RhdGlzdGljX2V4dCBzLCBwZ19zdGF0aXN0aWNf ZXh0X2RhdGEgZAogIFdIRVJFIHMuc3R4cmVsaWQgPSAnbmRpc3RpbmN0Jzo6cmVnY2xhc3MKICAg IEFORCBkLnN0eG9pZCA9IHMub2lkOwotIHN0eGtpbmQgfCAgICAgICAgICAgICAgICAgICAgICBz dHhkbmRpc3RpbmN0ICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0ge2QsZixt fSB8IHsiMywgNCI6IDIyMSwgIjMsIDYiOiAyNDcsICI0LCA2IjogMzIzLCAiMywgNCwgNiI6IDEw MDB9Cisgc3R4a2luZCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHhkbmRpc3RpbmN0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge2QsZixtfSB8IFt7ImF0dHJpYnV0 ZXMiOiBbMywgNF0sICJuZGlzdGluY3QiOiAyMjF9LCB7ImF0dHJpYnV0ZXMiOiBbMywgNl0sICJu ZGlzdGluY3QiOiAyNDd9LCB7ImF0dHJpYnV0ZXMiOiBbNCwgNl0sICJuZGlzdGluY3QiOiAzMjN9 LCB7ImF0dHJpYnV0ZXMiOiBbMywgNCwgNl0sICJuZGlzdGluY3QiOiAxMDAwfV0KICgxIHJvdykK IAogLS0gY29ycmVjdCBlc3RpbWF0ZXMKQEAgLTY3OCw5ICs2NzgsOSBAQCBTRUxFQ1Qgcy5zdHhr aW5kLCBkLnN0eGRuZGlzdGluY3QKICAgRlJPTSBwZ19zdGF0aXN0aWNfZXh0IHMsIHBnX3N0YXRp c3RpY19leHRfZGF0YSBkCiAgV0hFUkUgcy5zdHhyZWxpZCA9ICduZGlzdGluY3QnOjpyZWdjbGFz cwogICAgQU5EIGQuc3R4b2lkID0gcy5vaWQ7Ci0gc3R4a2luZCB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3R4ZG5kaXN0aW5jdCAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLSB7ZCxlfSAgIHwgeyItMSwgLTIiOiAyMjEsICItMSwgLTMiOiAyNDcs ICItMiwgLTMiOiAzMjMsICItMSwgLTIsIC0zIjogMTAwMH0KKyBzdHhraW5kIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3R4ZG5kaXN0aW5jdCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7ZCxlfSAgIHwgW3siYXR0cmlidXRlcyI6IFst MSwgLTJdLCAibmRpc3RpbmN0IjogMjIxfSwgeyJhdHRyaWJ1dGVzIjogWy0xLCAtM10sICJuZGlz dGluY3QiOiAyNDd9LCB7ImF0dHJpYnV0ZXMiOiBbLTIsIC0zXSwgIm5kaXN0aW5jdCI6IDMyM30s IHsiYXR0cmlidXRlcyI6IFstMSwgLTIsIC0zXSwgIm5kaXN0aW5jdCI6IDEwMDB9XQogKDEgcm93 KQogCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgQ09VTlQoKikg RlJPTSBuZGlzdGluY3QgR1JPVVAgQlkgKGErMSksIChiKzEwMCknKTsKQEAgLTcyNyw5ICs3Mjcs OSBAQCBTRUxFQ1Qgcy5zdHhraW5kLCBkLnN0eGRuZGlzdGluY3QKICAgRlJPTSBwZ19zdGF0aXN0 aWNfZXh0IHMsIHBnX3N0YXRpc3RpY19leHRfZGF0YSBkCiAgV0hFUkUgcy5zdHhyZWxpZCA9ICdu ZGlzdGluY3QnOjpyZWdjbGFzcwogICAgQU5EIGQuc3R4b2lkID0gcy5vaWQ7Ci0gc3R4a2luZCB8 ICAgICAgICAgICAgICAgICAgICAgICAgc3R4ZG5kaXN0aW5jdCAgICAgICAgICAgICAgICAgICAg ICAgIAotLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSB7ZCxlfSAgIHwgeyIzLCA0IjogMjIxLCAiMywgLTEiOiAy NDcsICI0LCAtMSI6IDMyMywgIjMsIDQsIC0xIjogMTAwMH0KKyBzdHhraW5kIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3R4ZG5kaXN0aW5jdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB7ZCxlfSAgIHwgW3siYXR0cmlidXRlcyI6IFszLCA0XSwgIm5kaXN0 aW5jdCI6IDIyMX0sIHsiYXR0cmlidXRlcyI6IFszLCAtMV0sICJuZGlzdGluY3QiOiAyNDd9LCB7 ImF0dHJpYnV0ZXMiOiBbNCwgLTFdLCAibmRpc3RpbmN0IjogMzIzfSwgeyJhdHRyaWJ1dGVzIjog WzMsIDQsIC0xXSwgIm5kaXN0aW5jdCI6IDEwMDB9XQogKDEgcm93KQogCiBTRUxFQ1QgKiBGUk9N IGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgQ09VTlQoKikgRlJPTSBuZGlzdGluY3QgR1JP VVAgQlkgYSwgYicpOwpAQCAtMzUxOCw0ICszNTE4LDM2IEBAIFNFTEVDVCBGUk9NIHNiXzEgTEVG VCBKT0lOIHNiXzIKIAogUkVTRVQgZW5hYmxlX25lc3Rsb29wOwogUkVTRVQgZW5hYmxlX21lcmdl am9pbjsKKy0tIFRlc3QgaW5wdXQgZnVuY3Rpb24gb2YgcGdfbmRpc3RpbmN0LgorU0VMRUNUICdb eyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgeyJhdHRy aWJ1dGVzIiA6IFsyLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgIHsiYXR0cmlidXRl cyIgOiBbMiwzLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIg OiBbMSwzLC0xLC0yXSwgIm5kaXN0aW5jdCIgOiA0fV0nOjpwZ19uZGlzdGluY3Q7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ19uZGlzdGluY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgW3siYXR0cmlidXRlcyI6IFsyLCAzXSwgIm5kaXN0aW5jdCI6IDR9LCB7ImF0dHJpYnV0 ZXMiOiBbMiwgLTFdLCAibmRpc3RpbmN0IjogNH0sIHsiYXR0cmlidXRlcyI6IFsyLCAzLCAtMV0s ICJuZGlzdGluY3QiOiA0fSwgeyJhdHRyaWJ1dGVzIjogWzEsIDMsIC0xLCAtMl0sICJuZGlzdGlu Y3QiOiA0fV0KKygxIHJvdykKKworLS0gZXJyb3IsIGNhbm5vdCBkdXBsaWNhdGUgYXR0cmlidXRl CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogNH0sCisgICAg ICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAg eyJhdHRyaWJ1dGVzIiA6IFsyLDMsMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICB7ImF0 dHJpYnV0ZXMiIDogWzEsMywtMSwtMl0sICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRpc3RpbmN0 OworRVJST1I6ICBtYWxmb3JtZWQgcGdfbmRpc3RpbmN0OiAiW3siYXR0cmlidXRlcyIgOiBbMiwz XSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwtMV0sICJu ZGlzdGluY3QiIDogNH0sCisgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsMywyXSwgIm5kaXN0 aW5jdCIgOiA0fSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMSwzLC0xLC0yXSwgIm5kaXN0 aW5jdCIgOiA0fV0iCitMSU5FIDE6IFNFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwzXSwgIm5k aXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIGF0dG51bSBsaXN0IGR1 cGxpY2F0ZSB2YWx1ZSBmb3VuZDogMgorLS0gVGVzdCBpbnB1dCBmdW5jdGlvbiBvZiBwZ19kZXBl bmRlbmNpZXMuCitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJkZXBlbmRlbmN5IiA6 IDQsICJkZWdyZWUiOiAxLjAwMDB9LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLC0xXSwg ImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDAuMDAwMH0sCisgICAgICAgICB7ImF0dHJpYnV0 ZXMiIDogWzIsMywtMV0sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAwLjUwMDB9LAorICAg ICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsxLDMsLTEsLTJdLCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVn cmVlIjogMS4wMDAwfV0nOjpwZ19kZXBlbmRlbmNpZXM7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2RlcGVuZGVuY2ll cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgW3siYXR0cmlidXRl cyI6IFsyLCAzXSwgImRlcGVuZGVuY3kiOiA0LCAiZGVncmVlIjogMS4wMDAwMDB9LCB7ImF0dHJp YnV0ZXMiOiBbMiwgLTFdLCAiZGVwZW5kZW5jeSI6IDQsICJkZWdyZWUiOiAwLjAwMDAwMH0sIHsi YXR0cmlidXRlcyI6IFsyLCAzLCAtMV0sICJkZXBlbmRlbmN5IjogNCwgImRlZ3JlZSI6IDAuNTAw MDAwfSwgeyJhdHRyaWJ1dGVzIjogWzEsIDMsIC0xLCAtMl0sICJkZXBlbmRlbmN5IjogNCwgImRl Z3JlZSI6IDEuMDAwMDAwfV0KKygxIHJvdykKKwogRFJPUCBUQUJMRSBzYl8xLCBzYl8yIENBU0NB REU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbAppbmRleCA5Y2U0YzY3MGVjYi4uNTc0OWJm YzZhOGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbApAQCAtMTc5OSw0ICsxNzk5LDE2 IEBAIFNFTEVDVCBGUk9NIHNiXzEgTEVGVCBKT0lOIHNiXzIKIFJFU0VUIGVuYWJsZV9uZXN0bG9v cDsKIFJFU0VUIGVuYWJsZV9tZXJnZWpvaW47CiAKKy0tIFRlc3QgaW5wdXQgZnVuY3Rpb24gb2Yg cGdfbmRpc3RpbmN0LgorU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAibmRpc3RpbmN0 IiA6IDR9LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLC0xXSwgIm5kaXN0aW5jdCIgOiA0 fSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwK KyAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMSwzLC0xLC0yXSwgIm5kaXN0aW5jdCIgOiA0fV0n OjpwZ19uZGlzdGluY3Q7CisKKy0tIGVycm9yLCBjYW5ub3QgZHVwbGljYXRlIGF0dHJpYnV0ZQor U0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAg ICAgeyJhdHRyaWJ1dGVzIiA6IFsyLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgIHsi YXR0cmlidXRlcyIgOiBbMiwzLDJdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgeyJhdHRy aWJ1dGVzIiA6IFsxLDMsLTEsLTJdLCAibmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0aW5jdDsK KwogRFJPUCBUQUJMRSBzYl8xLCBzYl8yIENBU0NBREU7CgpiYXNlLWNvbW1pdDogYjIyN2IwYmI0 ZTAzMmUxOWIzNjc5YmVkYWM4MjBlYmEzYWMwZDFjZgotLSAKMi41MC4xCgo= --00000000000036beff063c2e5ec5 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0002-Refactor-output-format-of-pg_dependencies-and-add.patch" Content-Disposition: attachment; filename="v5-0002-Refactor-output-format-of-pg_dependencies-and-add.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me8tebk61 RnJvbSA4YTI0YjY3NmUxNDIxYjFmMzM3OGFjYjM3MDM2NzQ5OGU0MDY2OGFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDb3JleSBIdWlua2VyIDxjb3JleS5odWlua2VyQGdtYWlsLmNv bT4KRGF0ZTogU3VuLCA4IEp1biAyMDI1IDAwOjE1OjQwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCB2 NSAyLzVdIFJlZmFjdG9yIG91dHB1dCBmb3JtYXQgb2YgcGdfZGVwZW5kZW5jaWVzIGFuZCBhZGQK IHdvcmtpbmcgaW5wdXQgZnVuY3Rpb24uCgpUaGUgZXhpc3RpbmcgZm9ybWF0IG9mIHBnX2RlcGVu ZGVuY2llcyB1c2VzIGEgc2luZ2xlLW9iamVjdCBKU09OIHN0cnVjdHVyZQp3aGVyZSBlYWNoIGtl eSBpcyBpdHNlbGYgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRudW1zLiBXaGlsZSB0aGlz CmlzIGEgdmVyeSBjb21wYWN0IGZvcm1hdCwgaXQncyBjb25mdXNpbmcgdG8gcmVhZCBhbmQgaXMg ZGlmZmljdWx0IHRvCm1hbmlwdWxhdGUgdmFsdWVzIHdpdGhpbiB0aGUgb2JqZWN0LiBUaGlzIHdh c24ndCBhIGNvbmNlcm4gdW50aWwKc3RhdGlzdGljcyBpbXBvcnQgZnVuY3Rpb25zIHdlcmUgaW50 cm9kdWNlZCwgZW5hYmxpbmcgdXNlcnMgdG8gaW5qZWN0Cmh5cG90aGV0aWNhbCBzdGF0aXN0aWNz IGludG8gYW4gb2JqZWN0IHRvIG9ic2VydmUgdGhlaXIgZWZmZWN0IG9uIHRoZQpxdWVyeSBwbGFu bmVyLgoKVGhlIG5ldyBmb3JtYXQgaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cywgZWFjaCBvYmplY3Qg bXVzdCBoYXZlIHRoZSBrZXlzCiJhdHRyaWJ1dGVzIiwgd2hpY2ggbXVzdCBjb250YWluIGFuIGFy cmF5IG9mIGF0dG51bXMsICJkZXBlbmRlbmN5IiwKd2hpY2ggbXVzdCBiZSBhbiBpbnRlZ2VyLCBh bmQgImRlZ3JlZSIsIHdoaWNoIG11c3QgYmUgYSBmbG9hdC4KClRoZSBjaGFuZ2UgaW4gZm9ybWF0 IGlzIGFkZXF1YXRlbHkgZGVzY3JpYmVkIGZyb20gdGhlIGNoYW5nZXMgdG8Kc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0IHNvIGRlc2NyaXB0aW9uIGhlcmUgaXMKcmVkdW5k YW50LgotLS0KIHNyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMgICB8IDQ5MSAr KysrKysrKysrKysrKysrKysrKysrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNf ZXh0Lm91dCB8ICAyNCArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbCAgICAg IHwgIDEyICsKIDMgZmlsZXMgY2hhbmdlZCwgNDk2IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMg Yi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jCmluZGV4IGViMmZjNDM2NmI0 Li5mZDYxMjVmYzlkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBlbmRl bmNpZXMuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jCkBAIC0x MywxOCArMTMsMjYgQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJh Y2Nlc3MvYXR0bnVtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Rh dGlzdGljX2V4dF9kYXRhLmgiCisjaW5jbHVkZSAiY29tbW9uL2ludC5oIgorI2luY2x1ZGUgImNv bW1vbi9qc29uYXBpLmgiCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKKyNpbmNsdWRlICJt Yi9wZ193Y2hhci5oIgorI2luY2x1ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgogI2luY2x1ZGUgIm5v ZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVzLmgiCiAjaW5jbHVkZSAibm9k ZXMvcGF0aG5vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgogI2luY2x1ZGUgIm9w dGltaXplci9jbGF1c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJzdGF0aXN0aWNzL2V4dGVuZGVk X3N0YXRzX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RhdGlzdGljcy9zdGF0aXN0aWNzLmgiCisj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbG9hdC5oIgogI2lu Y2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgog I2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgpAQCAtNjQzLDI0ICs2NTEsNDU5IEBAIHN0YXRl eHRfZGVwZW5kZW5jaWVzX2xvYWQoT2lkIG12b2lkLCBib29sIGluaCkKIAlyZXR1cm4gcmVzdWx0 OwogfQogCit0eXBlZGVmIGVudW0KK3sKKwlERVBTX0VYUEVDVF9TVEFSVCA9IDAsCisJREVQU19F WFBFQ1RfSVRFTSwKKwlERVBTX0VYUEVDVF9LRVksCisJREVQU19FWFBFQ1RfQVRUTlVNX0xJU1Qs CisJREVQU19FWFBFQ1RfQVRUTlVNLAorCURFUFNfRVhQRUNUX0RFUEVOREVOQ1ksCisJREVQU19F WFBFQ1RfREVHUkVFLAorCURFUFNfUEFSU0VfQ09NUExFVEUKK30JCQlkZXBzUGFyc2VTZW1hbnRp Y1N0YXRlOworCit0eXBlZGVmIHN0cnVjdAoreworCWNvbnN0IGNoYXIgKnN0cjsKKwlkZXBzUGFy c2VTZW1hbnRpY1N0YXRlIHN0YXRlOworCisJTGlzdAkgICAqZGVwZW5kZW5jeV9saXN0OworCU5v ZGUJICAgKmVzY29udGV4dDsKKworCWJvb2wJCWZvdW5kX2F0dHJpYnV0ZXM7CS8qIEl0ZW0gaGFz IGFuIGF0dHJpYnV0ZXMga2V5ICovCisJYm9vbAkJZm91bmRfZGVwZW5kZW5jeTsJLyogSXRlbSBo YXMgYW4gZGVwZW5kZW5jeSBrZXkgKi8KKwlib29sCQlmb3VuZF9kZWdyZWU7CS8qIEl0ZW0gaGFz IGRlZ3JlZSBrZXkgKi8KKwlMaXN0CSAgICphdHRudW1fbGlzdDsJLyogQWNjdW11bGF0ZWQgYXR0 cmlidXRlcyBhdHRudW1zICovCisJQXR0ck51bWJlcglkZXBlbmRlbmN5OworCWRvdWJsZQkJZGVn cmVlOworfQkJCWRlcGVuZGVuY2llc1BhcnNlU3RhdGU7CisKKy8qCisgKiBJbnZva2VkIGF0IHRo ZSBzdGFydCBvZiBlYWNoIE1WRGVwZW5kZW5jeSBvYmplY3QuCisgKgorICogVGhlIGVudGlyZSBK U09OIGRvY3VtZW50IHNob3VsIGJlIG9uZSBhcnJheSBvZiBNVkRlcGVuZGVuY3kgb2JqZWN0cy4K KyAqCisgKiBJZiB3ZSdyZSBhbnl3aGVyZSBlbHNlIGluIHRoZSBkb2N1bWVudCwgaXQncyBhbiBl cnJvci4KKyAqLworc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorZGVwZW5kZW5jaWVzX29iamVj dF9zdGFydCh2b2lkICpzdGF0ZSkKK3sKKwlkZXBlbmRlbmNpZXNQYXJzZVN0YXRlICpwYXJzZSA9 IHN0YXRlOworCisJaWYgKHBhcnNlLT5zdGF0ZSAhPSBERVBTX0VYUEVDVF9JVEVNKQorCXsKKwkJ ZXJldHVybihwYXJzZS0+ZXNjb250ZXh0LCAoRGF0dW0pIDAsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCSBlcnJtc2coIm1hbGZvcm1lZCBw Z19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCSBlcnJkZXRhaWwoIkV4 cGVjdGVkIEl0ZW0gb2JqZWN0IikpKTsKKwkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7 CisJfQorCisJLyogTm93IHdlIGV4cGVjdCB0byBzZWUgYXR0cmlidXRlcy9kZXBlbmRlbmN5L2Rl Z3JlZSBrZXlzICovCisJcGFyc2UtPnN0YXRlID0gREVQU19FWFBFQ1RfS0VZOworCXJldHVybiBK U09OX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBpbnQKK2F0dG51bV9jb21wYXJlKGNvbnN0IHZvaWQg KmFwdHIsIGNvbnN0IHZvaWQgKmJwdHIpCit7CisJQXR0ck51bWJlcglhID0gKihjb25zdCBBdHRy TnVtYmVyICopIGFwdHI7CisJQXR0ck51bWJlcgliID0gKihjb25zdCBBdHRyTnVtYmVyICopIGJw dHI7CisKKwlyZXR1cm4gcGdfY21wX3MxNihhLCBiKTsKK30KKworc3RhdGljIEpzb25QYXJzZUVy cm9yVHlwZQorZGVwZW5kZW5jaWVzX29iamVjdF9lbmQodm9pZCAqc3RhdGUpCit7CisJZGVwZW5k ZW5jaWVzUGFyc2VTdGF0ZSAqcGFyc2UgPSBzdGF0ZTsKKworCU1WRGVwZW5kZW5jeSAqZGVwOwor CUF0dHJOdW1iZXIgKmF0dHJzb3J0OworCisJaW50CQkJbmF0dHMgPSAwOworCisJaWYgKCFwYXJz ZS0+Zm91bmRfYXR0cmlidXRlcykKKwl7CisJCWVyZXR1cm4ocGFyc2UtPmVzY29udGV4dCwgKERh dHVtKSAwLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9O KSwKKwkJCQkgZXJybXNnKCJtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiBcIiVzXCIiLCBwYXJz ZS0+c3RyKSwKKwkJCQkgZXJyZGV0YWlsKCJJdGVtIG11c3QgY29udGFpbiBcImF0dHJpYnV0ZXNc IiBrZXkiKSkpOworCQlyZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwl9CisKKwlpZiAo IXBhcnNlLT5mb3VuZF9kZXBlbmRlbmN5KQorCXsKKwkJZXJldHVybihwYXJzZS0+ZXNjb250ZXh0 LCAoRGF0dW0pIDAsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5U QVRJT04pLAorCQkJCSBlcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIs IHBhcnNlLT5zdHIpLAorCQkJCSBlcnJkZXRhaWwoIkl0ZW0gbXVzdCBjb250YWluIFwiZGVwZW5k ZW5jaWVzXCIga2V5IikpKTsKKwkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7CisJfQor CisJaWYgKCFwYXJzZS0+Zm91bmRfZGVncmVlKQorCXsKKwkJZXJldHVybihwYXJzZS0+ZXNjb250 ZXh0LCAoRGF0dW0pIDAsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVT RU5UQVRJT04pLAorCQkJCSBlcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNc IiIsIHBhcnNlLT5zdHIpLAorCQkJCSBlcnJkZXRhaWwoIkl0ZW0gbXVzdCBjb250YWluIFwiZGVn cmVlXCIga2V5IikpKTsKKwkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7CisJfQorCisJ aWYgKHBhcnNlLT5hdHRudW1fbGlzdCA9PSBOSUwpCisJeworCQllcmV0dXJuKHBhcnNlLT5lc2Nv bnRleHQsIChEYXR1bSkgMCwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBS RVNFTlRBVElPTiksCisJCQkJIGVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIl c1wiIiwgcGFyc2UtPnN0ciksCisJCQkJIGVycmRldGFpbCgiVGhlIFwiYXR0cmlidXRlc1wiIGtl eSBtdXN0IGJlIGFuIG5vbi1lbXB0eSBhcnJheSIpKSk7CisJCXJldHVybiBKU09OX1NFTV9BQ1RJ T05fRkFJTEVEOworCX0KKworCS8qCisJICogV2UgbmVlZCBhdCBsZWFzdCAxIGF0dG51bSBmb3Ig YSBkZXBlbmRlbmNpZXMgaXRlbSwgYW55dGhpbmcgbGVzcyBpcworCSAqIG1hbGZvcm1lZC4KKwkg Ki8KKwluYXR0cyA9IHBhcnNlLT5hdHRudW1fbGlzdC0+bGVuZ3RoOworCWlmIChuYXR0cyA8IDEp CisJeworCQllcmV0dXJuKHBhcnNlLT5lc2NvbnRleHQsIChEYXR1bSkgMCwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJIGVycm1zZygibWFs Zm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJIGVycmRl dGFpbCgiVGhlIGF0dHJpYnV0ZXMga2V5IG11c3QgY29udGFpbiBhbiBhcnJheSBvZiBhdCBsZWFz dCBvbmUgYXR0bnVtIikpKTsKKworCQlyZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwl9 CisJYXR0cnNvcnQgPSBwYWxsb2MwKG5hdHRzICogc2l6ZW9mKEF0dHJOdW1iZXIpKTsKKworCS8q CisJICogQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGZvciB0aGUgZGVwZW5kZW5jeSwgdGhlIGF0dG51 bXMgaW4gdGhlIGxpc3QsIHBsdXMKKwkgKiB0aGUgZmluYWwgYXR0bnVtCisJICovCisJZGVwID0g cGFsbG9jMChvZmZzZXRvZihNVkRlcGVuZGVuY3ksIGF0dHJpYnV0ZXMpICsgKChuYXR0cyArIDEp ICogc2l6ZW9mKEF0dHJOdW1iZXIpKSk7CisJZGVwLT5uYXR0cmlidXRlcyA9IG5hdHRzICsgMTsK KworCWRlcC0+YXR0cmlidXRlc1tuYXR0c10gPSBwYXJzZS0+ZGVwZW5kZW5jeTsKKwlkZXAtPmRl Z3JlZSA9IHBhcnNlLT5kZWdyZWU7CisKKwlhdHRyc29ydCA9IHBhbGxvYzAoZGVwLT5uYXR0cmli dXRlcyAqIHNpemVvZihBdHRyTnVtYmVyKSk7CisJYXR0cnNvcnRbbmF0dHNdID0gcGFyc2UtPmRl cGVuZGVuY3k7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJeworCQlhdHRy c29ydFtpXSA9IChBdHRyTnVtYmVyKSBwYXJzZS0+YXR0bnVtX2xpc3QtPmVsZW1lbnRzW2ldLmlu dF92YWx1ZTsKKwkJZGVwLT5hdHRyaWJ1dGVzW2ldID0gYXR0cnNvcnRbaV07CisJfQorCisJLyog Q2hlY2sgYXR0cnNvcnQgZm9yIHVuaXF1ZW5lc3MgKi8KKwlxc29ydChhdHRyc29ydCwgbmF0dHMg KyAxLCBzaXplb2YoQXR0ck51bWJlciksIGF0dG51bV9jb21wYXJlKTsKKwlmb3IgKGludCBpID0g MTsgaSA8IGRlcC0+bmF0dHJpYnV0ZXM7IGkrKykKKwkJaWYgKGF0dHJzb3J0W2ldID09IGF0dHJz b3J0W2kgLSAxXSkKKwkJeworCQkJZXJldHVybihwYXJzZS0+ZXNjb250ZXh0LCAoRGF0dW0pIDAs CisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJ CQkJIGVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0 ciksCisJCQkJCSBlcnJkZXRhaWwoImF0dG51bSBsaXN0IGR1cGxpY2F0ZSB2YWx1ZSBmb3VuZDog JWQiLCBhdHRyc29ydFtpXSkpKTsKKworCQkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7 CisJCX0KKwlwZnJlZShhdHRyc29ydCk7CisKKwlwYXJzZS0+ZGVwZW5kZW5jeV9saXN0ID0gbGFw cGVuZChwYXJzZS0+ZGVwZW5kZW5jeV9saXN0LCAodm9pZCAqKSBkZXApOworCisJLyogcmVzZXQg ZGVwIGl0ZW0gc3RhdGUgdmFycyAqLworCWxpc3RfZnJlZShwYXJzZS0+YXR0bnVtX2xpc3QpOwor CXBhcnNlLT5hdHRudW1fbGlzdCA9IE5JTDsKKwlwYXJzZS0+ZGVwZW5kZW5jeSA9IDA7CisJcGFy c2UtPmRlZ3JlZSA9IDAuMDsKKwlwYXJzZS0+Zm91bmRfYXR0cmlidXRlcyA9IGZhbHNlOworCXBh cnNlLT5mb3VuZF9kZXBlbmRlbmN5ID0gZmFsc2U7CisJcGFyc2UtPmZvdW5kX2RlZ3JlZSA9IGZh bHNlOworCisJLyogTm93IHdlIGFyZSBsb29raW5nIGZvciB0aGUgbmV4dCBNVkRlcGVuZGVuY3kg Ki8KKwlwYXJzZS0+c3RhdGUgPSBERVBTX0VYUEVDVF9JVEVNOworCXJldHVybiBKU09OX1NVQ0NF U1M7Cit9CisKKy8qCisgKiBkZXBlbmRlbmNpZXMgaW5wdXQgZm9ybWF0IGRvZXMgbm90IGhhdmUg YXJyYXlzLCBzbyBhbnkgYXJyYXkgZWxlbWVudHMgZW5jb3VudGVyZWQKKyAqIGFyZSBhbiBlcnJv ci4KKyAqLworc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorZGVwZW5kZW5jaWVzX2FycmF5X3N0 YXJ0KHZvaWQgKnN0YXRlKQoreworCWRlcGVuZGVuY2llc1BhcnNlU3RhdGUgKnBhcnNlID0gc3Rh dGU7CisKKwlzd2l0Y2ggKHBhcnNlLT5zdGF0ZSkKKwl7CisJCWNhc2UgREVQU19FWFBFQ1RfQVRU TlVNX0xJU1Q6CisJCQlwYXJzZS0+c3RhdGUgPSBERVBTX0VYUEVDVF9BVFROVU07CisJCQlicmVh azsKKwkJY2FzZSBERVBTX0VYUEVDVF9TVEFSVDoKKwkJCXBhcnNlLT5zdGF0ZSA9IERFUFNfRVhQ RUNUX0lURU07CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVyZXR1cm4ocGFyc2UtPmVzY29u dGV4dCwgKERhdHVtKSAwLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBS RVNFTlRBVElPTiksCisJCQkJCSBlcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwi JXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCQkgZXJyZGV0YWlsKCJBcnJheSBmb3VuZCBpbiB1bmV4 cGVjdGVkIHBsYWNlIikpKTsKKwkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0K KworCXJldHVybiBKU09OX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBFaXRoZXIgdGhlIGVuZCBvZiBh biBhdHRudW0gbGlzdCBvciB0aGUgd2hvbGUgb2JqZWN0CisgKi8KK3N0YXRpYyBKc29uUGFyc2VF cnJvclR5cGUKK2RlcGVuZGVuY2llc19hcnJheV9lbmQodm9pZCAqc3RhdGUpCit7CisJZGVwZW5k ZW5jaWVzUGFyc2VTdGF0ZSAqcGFyc2UgPSBzdGF0ZTsKKworCXN3aXRjaCAocGFyc2UtPnN0YXRl KQorCXsKKwkJY2FzZSBERVBTX0VYUEVDVF9BVFROVU06CisJCQlwYXJzZS0+c3RhdGUgPSBERVBT X0VYUEVDVF9LRVk7CisJCQlicmVhazsKKworCQljYXNlIERFUFNfRVhQRUNUX0lURU06CisJCQlw YXJzZS0+c3RhdGUgPSBERVBTX1BBUlNFX0NPTVBMRVRFOworCQkJYnJlYWs7CisKKwkJZGVmYXVs dDoKKwkJCWVyZXR1cm4ocGFyc2UtPmVzY29udGV4dCwgKERhdHVtKSAwLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCSBlcnJtc2coIm1h bGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCQkgZXJy ZGV0YWlsKCJBcnJheSBmb3VuZCBpbiB1bmV4cGVjdGVkIHBsYWNlIikpKTsKKwkJCXJldHVybiBK U09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0KKwlyZXR1cm4gSlNPTl9TVUNDRVNTOworfQorCisv KgorICogVGhlIHZhbGlkIGtleXMgZm9yIHRoZSBNVkRlcGVuZGVuY3kgb2JqZWN0IGFyZToKKyAq ICAgLSBhdHRyaWJ1dGVzCisgKiAgIC0gZGVwZWVuZGVuY3kKKyAqICAgLSBkZWdyZWUKKyAqLwor c3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorZGVwZW5kZW5jaWVzX29iamVjdF9maWVsZF9zdGFy dCh2b2lkICpzdGF0ZSwgY2hhciAqZm5hbWUsIGJvb2wgaXNudWxsKQoreworCWRlcGVuZGVuY2ll c1BhcnNlU3RhdGUgKnBhcnNlID0gc3RhdGU7CisKKwljb25zdCBjaGFyICphdHRyaWJ1dGVzID0g ImF0dHJpYnV0ZXMiOworCWNvbnN0IGNoYXIgKmRlcGVuZGVuY3kgPSAiZGVwZW5kZW5jeSI7CisJ Y29uc3QgY2hhciAqZGVncmVlID0gImRlZ3JlZSI7CisKKwlpZiAoc3RyY21wKGZuYW1lLCBhdHRy aWJ1dGVzKSA9PSAwKQorCXsKKwkJcGFyc2UtPmZvdW5kX2F0dHJpYnV0ZXMgPSB0cnVlOworCQlw YXJzZS0+c3RhdGUgPSBERVBTX0VYUEVDVF9BVFROVU1fTElTVDsKKwkJcmV0dXJuIEpTT05fU1VD Q0VTUzsKKwl9CisKKwlpZiAoc3RyY21wKGZuYW1lLCBkZXBlbmRlbmN5KSA9PSAwKQorCXsKKwkJ cGFyc2UtPmZvdW5kX2RlcGVuZGVuY3kgPSB0cnVlOworCQlwYXJzZS0+c3RhdGUgPSBERVBTX0VY UEVDVF9ERVBFTkRFTkNZOworCQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCX0KKworCWlmIChzdHJj bXAoZm5hbWUsIGRlZ3JlZSkgPT0gMCkKKwl7CisJCXBhcnNlLT5mb3VuZF9kZWdyZWUgPSB0cnVl OworCQlwYXJzZS0+c3RhdGUgPSBERVBTX0VYUEVDVF9ERUdSRUU7CisJCXJldHVybiBKU09OX1NV Q0NFU1M7CisJfQorCisJZXJldHVybihwYXJzZS0+ZXNjb250ZXh0LCAoRGF0dW0pIDAsCisJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkgZXJybXNn KCJtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiBcIiVzXCIiLCBwYXJzZS0+c3RyKSwKKwkJCSBl cnJkZXRhaWwoIk9ubHkgYWxsb3dlZCBrZXlzIGFyZSBcJXNcIiwgXCIlc1wiIGFuZCBcJXNcIi4i LAorCQkJCQkgICBhdHRyaWJ1dGVzLCBkZXBlbmRlbmN5LCBkZWdyZWUpKSk7CisJcmV0dXJuIEpT T05fU0VNX0FDVElPTl9GQUlMRUQ7Cit9CisKKy8qCisgKiBuZHNpdGluY3QgaW5wdXQgZm9ybWF0 IGRvZXMgbm90IGhhdmUgYXJyYXlzLCBzbyBhbnkgYXJyYXkgZWxlbWVudHMgZW5jb3VudGVyZWQK KyAqIGFyZSBhbiBlcnJvci4KKyAqLworc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorZGVwZW5k ZW5jaWVzX2FycmF5X2VsZW1lbnRfc3RhcnQodm9pZCAqc3RhdGUsIGJvb2wgaXNudWxsKQorewor CWRlcGVuZGVuY2llc1BhcnNlU3RhdGUgKnBhcnNlID0gc3RhdGU7CisKKwlpZiAocGFyc2UtPnN0 YXRlID09IERFUFNfRVhQRUNUX0FUVE5VTSkKKwl7CisJCWlmIChpc251bGwpCisJCXsKKwkJCWVy ZXR1cm4ocGFyc2UtPmVzY29udGV4dCwgKERhdHVtKSAwLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCSBlcnJtc2coIm1hbGZvcm1lZCBw Z19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCQkgZXJyZGV0YWlsKCJB dHRudW0gbGlzdCBlbGVtZW50cyBjYW5ub3QgYmUgbnVsbC4iKSkpOworCisJCQlyZXR1cm4gSlNP Tl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwkJfQorCQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCX0KKwor CWlmIChwYXJzZS0+c3RhdGUgPT0gREVQU19FWFBFQ1RfSVRFTSkKKwl7CisJCWlmIChpc251bGwp CisJCXsKKwkJCWVyZXR1cm4ocGFyc2UtPmVzY29udGV4dCwgKERhdHVtKSAwLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCSBlcnJtc2co Im1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCQkg ZXJyZGV0YWlsKCJJdGVtIGxpc3QgZWxlbWVudHMgY2Fubm90IGJlIG51bGwuIikpKTsKKworCQkJ cmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7CisJCX0KKworCQlyZXR1cm4gSlNPTl9TVUND RVNTOworCX0KKworCWVyZXR1cm4ocGFyc2UtPmVzY29udGV4dCwgKERhdHVtKSAwLAorCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJIGVycm1zZygi bWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkgZXJy ZGV0YWlsKCJVbmV4cGVjdGVkIGFycmF5IGVsZW1lbnQuIikpKTsKKworCXJldHVybiBKU09OX1NF TV9BQ1RJT05fRkFJTEVEOworfQorCisvKgorICogSGFuZGxlIHNjYWxhciBldmVudHMgZnJvbSB0 aGUgZGVwZW5kZW5jaWVzIGlucHV0IHBhcnNlci4KKyAqCisgKiBUaGVyZSBpcyBvbmx5IG9uZSBj YXNlIHdoZXJlIHdlIHdpbGwgZW5jb3VudGVyIGEgc2NhbGFyLCBhbmQgdGhhdCBpcyB0aGUKKyAq IGRlcGVuZGVuY3kgZGVncmVlIGZvciB0aGUgcHJldmlvdXMgb2JqZWN0IGtleS4KKyAqLworc3Rh dGljIEpzb25QYXJzZUVycm9yVHlwZQorZGVwZW5kZW5jaWVzX3NjYWxhcih2b2lkICpzdGF0ZSwg Y2hhciAqdG9rZW4sIEpzb25Ub2tlblR5cGUgdG9rZW50eXBlKQoreworCWRlcGVuZGVuY2llc1Bh cnNlU3RhdGUgKnBhcnNlID0gc3RhdGU7CisKKwlpZiAocGFyc2UtPnN0YXRlID09IERFUFNfRVhQ RUNUX0FUVE5VTSkKKwl7CisJCUF0dHJOdW1iZXIJYXR0bnVtID0gcGdfc3RydG9pbnQxNl9zYWZl KHRva2VuLCBwYXJzZS0+ZXNjb250ZXh0KTsKKworCQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChw YXJzZS0+ZXNjb250ZXh0KSkKKwkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCisJ CXBhcnNlLT5hdHRudW1fbGlzdCA9IGxhcHBlbmRfaW50KHBhcnNlLT5hdHRudW1fbGlzdCwgKGlu dCkgYXR0bnVtKTsKKwkJcmV0dXJuIEpTT05fU1VDQ0VTUzsKKwl9CisKKwlpZiAocGFyc2UtPnN0 YXRlID09IERFUFNfRVhQRUNUX0RFUEVOREVOQ1kpCisJeworCQlwYXJzZS0+ZGVwZW5kZW5jeSA9 IChBdHRyTnVtYmVyKSBwZ19zdHJ0b2ludDE2X3NhZmUodG9rZW4sIHBhcnNlLT5lc2NvbnRleHQp OworCisJCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKHBhcnNlLT5lc2NvbnRleHQpKQorCQkJcmV0 dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7CisKKwkJcmV0dXJuIEpTT05fU1VDQ0VTUzsKKwl9 CisKKworCWlmIChwYXJzZS0+c3RhdGUgPT0gREVQU19FWFBFQ1RfREVHUkVFKQorCXsKKwkJcGFy c2UtPmRlZ3JlZSA9IGZsb2F0OGluX2ludGVybmFsKHRva2VuLCBOVUxMLCAiZG91YmxlIiwKKwkJ CQkJCQkJCQkgIHRva2VuLCBwYXJzZS0+ZXNjb250ZXh0KTsKKworCQlpZiAoU09GVF9FUlJPUl9P Q0NVUlJFRChwYXJzZS0+ZXNjb250ZXh0KSkKKwkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJ TEVEOworCisJCXJldHVybiBKU09OX1NVQ0NFU1M7CisJfQorCisJZXJldHVybihwYXJzZS0+ZXNj b250ZXh0LCAoRGF0dW0pIDAsCisJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBS RVNFTlRBVElPTiksCisJCQkgZXJybXNnKCJtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiBcIiVz XCIiLCBwYXJzZS0+c3RyKSwKKwkJCSBlcnJkZXRhaWwoIlVuZXhwZWN0ZWQgc2NhbGFyLiIpKSk7 CisJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7Cit9CisKIC8qCiAgKiBwZ19kZXBlbmRl bmNpZXNfaW4JCS0gaW5wdXQgcm91dGluZSBmb3IgdHlwZSBwZ19kZXBlbmRlbmNpZXMuCiAgKgot ICogcGdfZGVwZW5kZW5jaWVzIGlzIHJlYWwgZW5vdWdoIHRvIGJlIGEgdGFibGUgY29sdW1uLCBi dXQgaXQgaGFzIG5vIG9wZXJhdGlvbnMKLSAqIG9mIGl0cyBvd24sIGFuZCBkaXNhbGxvd3MgaW5w dXQgdG9vCisgKiBUaGlzIGZvcm1hdCBpcyB2YWxpZCBKU09OLCB3aXRoIHRoZSBleHBlY3RlZCBm b3JtYXQ6CisgKiAgICBbeyJhdHRyaWJ1dGVzIjogWzEsMl0sICJkZXBlbmRlbmN5IjogLTEsICJk ZWdyZWUiOiAxLjAwMDB9LAorICogICAgIHsiYXR0cmlidXRlcyI6IFsxLC0xXSwgImRlcGVuZGVu Y3kiOiAyLCAiZGVncmVlIjogMC4wMDAwfSwKKyAqICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwtMV0s ICJkZXBlbmRlbmN5IjogMSwgImRlZ3JlZSI6IDEuMDAwMH1dCisgKgogICovCiBEYXR1bQogcGdf ZGVwZW5kZW5jaWVzX2luKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JLyoKLQkgKiBwZ19ub2RlX2xp c3Qgc3RvcmVzIHRoZSBkYXRhIGluIGJpbmFyeSBmb3JtIGFuZCBwYXJzaW5nIHRleHQgaW5wdXQg aXMKLQkgKiBub3QgbmVlZGVkLCBzbyBkaXNhbGxvdyB0aGlzLgotCSAqLwotCWVyZXBvcnQoRVJS T1IsCi0JCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkgZXJy bXNnKCJjYW5ub3QgYWNjZXB0IGEgdmFsdWUgb2YgdHlwZSAlcyIsICJwZ19kZXBlbmRlbmNpZXMi KSkpOworCWNoYXIJICAgKnN0ciA9IFBHX0dFVEFSR19DU1RSSU5HKDApOwogCi0JUEdfUkVUVVJO X1ZPSUQoKTsJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJZGVwZW5kZW5jaWVzUGFyc2VT dGF0ZSBwYXJzZV9zdGF0ZTsKKwlKc29uUGFyc2VFcnJvclR5cGUgcmVzdWx0OworCUpzb25MZXhD b250ZXh0ICpsZXg7CisJSnNvblNlbUFjdGlvbiBzZW1fYWN0aW9uOworCisJLyogaW5pdGlhbGl6 ZSB0aGUgc2VtYW50aWMgc3RhdGUgKi8KKwlwYXJzZV9zdGF0ZS5zdHIgPSBzdHI7CisJcGFyc2Vf c3RhdGUuc3RhdGUgPSBERVBTX0VYUEVDVF9TVEFSVDsKKwlwYXJzZV9zdGF0ZS5kZXBlbmRlbmN5 X2xpc3QgPSBOSUw7CisJcGFyc2Vfc3RhdGUuYXR0bnVtX2xpc3QgPSBOSUw7CisJcGFyc2Vfc3Rh dGUuZGVwZW5kZW5jeSA9IDA7CisJcGFyc2Vfc3RhdGUuZGVncmVlID0gMC4wOworCXBhcnNlX3N0 YXRlLmZvdW5kX2F0dHJpYnV0ZXMgPSBmYWxzZTsKKwlwYXJzZV9zdGF0ZS5mb3VuZF9kZXBlbmRl bmN5ID0gZmFsc2U7CisJcGFyc2Vfc3RhdGUuZm91bmRfZGVncmVlID0gZmFsc2U7CisJcGFyc2Vf c3RhdGUuZXNjb250ZXh0ID0gZmNpbmZvLT5jb250ZXh0OworCisJLyogc2V0IGNhbGxiYWNrcyAq LworCXNlbV9hY3Rpb24uc2Vtc3RhdGUgPSAodm9pZCAqKSAmcGFyc2Vfc3RhdGU7CisJc2VtX2Fj dGlvbi5vYmplY3Rfc3RhcnQgPSBkZXBlbmRlbmNpZXNfb2JqZWN0X3N0YXJ0OworCXNlbV9hY3Rp b24ub2JqZWN0X2VuZCA9IGRlcGVuZGVuY2llc19vYmplY3RfZW5kOworCXNlbV9hY3Rpb24uYXJy YXlfc3RhcnQgPSBkZXBlbmRlbmNpZXNfYXJyYXlfc3RhcnQ7CisJc2VtX2FjdGlvbi5hcnJheV9l bmQgPSBkZXBlbmRlbmNpZXNfYXJyYXlfZW5kOworCXNlbV9hY3Rpb24uYXJyYXlfZWxlbWVudF9z dGFydCA9IGRlcGVuZGVuY2llc19hcnJheV9lbGVtZW50X3N0YXJ0OworCXNlbV9hY3Rpb24uYXJy YXlfZWxlbWVudF9lbmQgPSBOVUxMOworCXNlbV9hY3Rpb24ub2JqZWN0X2ZpZWxkX3N0YXJ0ID0g ZGVwZW5kZW5jaWVzX29iamVjdF9maWVsZF9zdGFydDsKKwlzZW1fYWN0aW9uLm9iamVjdF9maWVs ZF9lbmQgPSBOVUxMOworCXNlbV9hY3Rpb24uc2NhbGFyID0gZGVwZW5kZW5jaWVzX3NjYWxhcjsK KworCWxleCA9IG1ha2VKc29uTGV4Q29udGV4dENzdHJpbmdMZW4oTlVMTCwgc3RyLCBzdHJsZW4o c3RyKSwgUEdfVVRGOCwgdHJ1ZSk7CisKKwlyZXN1bHQgPSBwZ19wYXJzZV9qc29uKGxleCwgJnNl bV9hY3Rpb24pOworCWZyZWVKc29uTGV4Q29udGV4dChsZXgpOworCisJaWYgKHJlc3VsdCA9PSBK U09OX1NVQ0NFU1MpCisJeworCQlMaXN0CSAgICpsaXN0ID0gcGFyc2Vfc3RhdGUuZGVwZW5kZW5j eV9saXN0OworCQlpbnQJCQluZGVwcyA9IGxpc3QtPmxlbmd0aDsKKwkJTVZEZXBlbmRlbmNpZXMg Km12ZGVwczsKKwkJYnl0ZWEJICAgKmJ5dGVzOworCisJCW12ZGVwcyA9IHBhbGxvYzAob2Zmc2V0 b2YoTVZEZXBlbmRlbmNpZXMsIGRlcHMpICsgbmRlcHMgKiBzaXplb2YoTVZEZXBlbmRlbmN5KSk7 CisJCW12ZGVwcy0+bWFnaWMgPSBTVEFUU19ERVBTX01BR0lDOworCQltdmRlcHMtPnR5cGUgPSBT VEFUU19ERVBTX1RZUEVfQkFTSUM7CisJCW12ZGVwcy0+bmRlcHMgPSBuZGVwczsKKworCQkvKiBj b3B5IE1WRGVwZW5kZW5jeSBzdHJ1Y3RzIG91dCBvZiB0aGUgbGlzdCBpbnRvIHRoZSBNVkRlcGVu ZGVuY2llcyAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IG5kZXBzOyBpKyspCisJCQltdmRlcHMt PmRlcHNbaV0gPSBsaXN0LT5lbGVtZW50c1tpXS5wdHJfdmFsdWU7CisJCWJ5dGVzID0gc3RhdGV4 dF9kZXBlbmRlbmNpZXNfc2VyaWFsaXplKG12ZGVwcyk7CisKKwkJbGlzdF9mcmVlKGxpc3QpOwor CQlmb3IgKGludCBpID0gMDsgaSA8IG5kZXBzOyBpKyspCisJCQlwZnJlZShtdmRlcHMtPmRlcHNb aV0pOworCQlwZnJlZShtdmRlcHMpOworCisJCVBHX1JFVFVSTl9CWVRFQV9QKGJ5dGVzKTsKKwl9 CisJZWxzZSBpZiAocmVzdWx0ID09IEpTT05fU0VNX0FDVElPTl9GQUlMRUQpCisJCVBHX1JFVFVS Tl9OVUxMKCk7CisKKwkvKiBBbnl0aGluZyBlbHNlIGlzIGEgZ2VuZXJpYyBKU09OIHBhcnNlIGVy cm9yICovCisJZXJldHVybihwYXJzZV9zdGF0ZS5lc2NvbnRleHQsIChEYXR1bSkgMCwKKwkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCSBlcnJtc2co Im1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHN0ciksCisJCQkgZXJyZGV0YWls KCJNdXN0IGJlIHZhbGlkIEpTT04uIikpKTsKKworCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyoga2Vl cCBjb21waWxlciBxdWlldCAqLwogfQogCiAvKgpAQCAtNjcxLDM0ICsxMTE0LDMyIEBAIHBnX2Rl cGVuZGVuY2llc19vdXQoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlieXRlYQkgICAqZGF0YSA9IFBH X0dFVEFSR19CWVRFQV9QUCgwKTsKIAlNVkRlcGVuZGVuY2llcyAqZGVwZW5kZW5jaWVzID0gc3Rh dGV4dF9kZXBlbmRlbmNpZXNfZGVzZXJpYWxpemUoZGF0YSk7Ci0JaW50CQkJaSwKLQkJCQlqOwog CVN0cmluZ0luZm9EYXRhIHN0cjsKIAogCWluaXRTdHJpbmdJbmZvKCZzdHIpOwotCWFwcGVuZFN0 cmluZ0luZm9DaGFyKCZzdHIsICd7Jyk7CisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJnN0ciwgJ1sn KTsKIAotCWZvciAoaSA9IDA7IGkgPCBkZXBlbmRlbmNpZXMtPm5kZXBzOyBpKyspCisJZm9yIChp bnQgaSA9IDA7IGkgPCBkZXBlbmRlbmNpZXMtPm5kZXBzOyBpKyspCiAJewogCQlNVkRlcGVuZGVu Y3kgKmRlcGVuZGVuY3kgPSBkZXBlbmRlbmNpZXMtPmRlcHNbaV07CiAKIAkJaWYgKGkgPiAwKQog CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmc3RyLCAiLCAiKTsKIAotCQlhcHBlbmRTdHJpbmdJ bmZvQ2hhcigmc3RyLCAnIicpOwotCQlmb3IgKGogPSAwOyBqIDwgZGVwZW5kZW5jeS0+bmF0dHJp YnV0ZXM7IGorKykKLQkJewotCQkJaWYgKGogPT0gZGVwZW5kZW5jeS0+bmF0dHJpYnV0ZXMgLSAx KQotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnN0ciwgIiA9PiAiKTsKLQkJCWVsc2UgaWYg KGogPiAwKQotCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnN0ciwgIiwgIik7CisJCUFzc2Vy dChkZXBlbmRlbmN5LT5uYXR0cmlidXRlcyA+IDEpOwkvKiBUT0RPOiBlbG9nPyAqLwogCi0JCQlh cHBlbmRTdHJpbmdJbmZvKCZzdHIsICIlZCIsIGRlcGVuZGVuY3ktPmF0dHJpYnV0ZXNbal0pOwot CQl9Ci0JCWFwcGVuZFN0cmluZ0luZm8oJnN0ciwgIlwiOiAlZiIsIGRlcGVuZGVuY3ktPmRlZ3Jl ZSk7CisJCWFwcGVuZFN0cmluZ0luZm8oJnN0ciwgIntcImF0dHJpYnV0ZXNcIjogWyVkIiwKKwkJ CQkJCSBkZXBlbmRlbmN5LT5hdHRyaWJ1dGVzWzBdKTsKKworCQlmb3IgKGludCBqID0gMTsgaiA8 IGRlcGVuZGVuY3ktPm5hdHRyaWJ1dGVzIC0gMTsgaisrKQorCQkJYXBwZW5kU3RyaW5nSW5mbygm c3RyLCAiLCAlZCIsIGRlcGVuZGVuY3ktPmF0dHJpYnV0ZXNbal0pOworCisJCWFwcGVuZFN0cmlu Z0luZm8oJnN0ciwgIl0sIFwiZGVwZW5kZW5jeVwiOiAlZCwgXCJkZWdyZWVcIjogJWZ9IiwKKwkJ CQkJCSBkZXBlbmRlbmN5LT5hdHRyaWJ1dGVzW2RlcGVuZGVuY3ktPm5hdHRyaWJ1dGVzIC0gMV0s CisJCQkJCQkgZGVwZW5kZW5jeS0+ZGVncmVlKTsKIAl9CiAKLQlhcHBlbmRTdHJpbmdJbmZvQ2hh cigmc3RyLCAnfScpOworCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZzdHIsICddJyk7CiAKIAlQR19S RVRVUk5fQ1NUUklORyhzdHIuZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRz X2V4dC5vdXQKaW5kZXggMWQ3M2JjZjQwZmYuLjQzMjY5MGZiZDUzIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zdGF0c19leHQub3V0CkBAIC0xMjgxLDkgKzEyODEsOSBAQCBDUkVBVEUgU1RB VElTVElDUyBmdW5jX2RlcHNfc3RhdCAoZGVwZW5kZW5jaWVzKSBPTiBhLCBiLCBjIEZST00gZnVu Y3Rpb25hbF9kZXBlbgogQU5BTFlaRSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llczsKIC0tIHByaW50 IHRoZSBkZXRlY3RlZCBkZXBlbmRlbmNpZXMKIFNFTEVDVCBkZXBlbmRlbmNpZXMgRlJPTSBwZ19z dGF0c19leHQgV0hFUkUgc3RhdGlzdGljc19uYW1lID0gJ2Z1bmNfZGVwc19zdGF0JzsKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0geyIzID0+IDQiOiAx LjAwMDAwMCwgIjMgPT4gNiI6IDEuMDAwMDAwLCAiNCA9PiA2IjogMS4wMDAwMDAsICIzLCA0ID0+ IDYiOiAxLjAwMDAwMCwgIjMsIDYgPT4gNCI6IDEuMDAwMDAwfQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXBlbmRlbmNpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFt7ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogNCwgImRlZ3Jl ZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWzNdLCAiZGVwZW5kZW5jeSI6IDYsICJkZWdy ZWUiOiAxLjAwMDAwMH0sIHsiYXR0cmlidXRlcyI6IFs0XSwgImRlcGVuZGVuY3kiOiA2LCAiZGVn cmVlIjogMS4wMDAwMDB9LCB7ImF0dHJpYnV0ZXMiOiBbMywgNF0sICJkZXBlbmRlbmN5IjogNiwg ImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWzMsIDZdLCAiZGVwZW5kZW5jeSI6 IDQsICJkZWdyZWUiOiAxLjAwMDAwMH1dCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tf ZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hF UkUgYSA9IDEgQU5EIGIgPSAnJzEnJycpOwpAQCAtMTYyMyw5ICsxNjIzLDkgQEAgQ1JFQVRFIFNU QVRJU1RJQ1MgZnVuY19kZXBzX3N0YXQgKGRlcGVuZGVuY2llcykgT04gKGEgKiAyKSwgdXBwZXIo YiksIChjICsgMSkgRlIKIEFOQUxZWkUgZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXM7CiAtLSBwcmlu dCB0aGUgZGV0ZWN0ZWQgZGVwZW5kZW5jaWVzCiBTRUxFQ1QgZGVwZW5kZW5jaWVzIEZST00gcGdf c3RhdHNfZXh0IFdIRVJFIHN0YXRpc3RpY3NfbmFtZSA9ICdmdW5jX2RlcHNfc3RhdCc7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRl bmNpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotIHsiLTEgPT4gLTIiOiAxLjAwMDAwMCwgIi0xID0+IC0zIjogMS4wMDAwMDAs ICItMiA9PiAtMyI6IDEuMDAwMDAwLCAiLTEsIC0yID0+IC0zIjogMS4wMDAwMDAsICItMSwgLTMg PT4gLTIiOiAxLjAwMDAwMH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVw ZW5kZW5jaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBbeyJhdHRyaWJ1dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAtMiwg ImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAt MywgImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWy0yXSwgImRlcGVuZGVuY3ki OiAtMywgImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWy0xLCAtMl0sICJkZXBl bmRlbmN5IjogLTMsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsiYXR0cmlidXRlcyI6IFstMSwgLTNd LCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9XQogKDEgcm93KQogCiBTRUxF Q1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxf ZGVwZW5kZW5jaWVzIFdIRVJFIChhICogMikgPSAyIEFORCB1cHBlcihiKSA9ICcnMScnJyk7CkBA IC0zNTUwLDQgKzM1NTAsMTYgQEAgU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVw ZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMDAwfSwKICBbeyJhdHRyaWJ1dGVzIjogWzIsIDNd LCAiZGVwZW5kZW5jeSI6IDQsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsiYXR0cmlidXRlcyI6IFsy LCAtMV0sICJkZXBlbmRlbmN5IjogNCwgImRlZ3JlZSI6IDAuMDAwMDAwfSwgeyJhdHRyaWJ1dGVz IjogWzIsIDMsIC0xXSwgImRlcGVuZGVuY3kiOiA0LCAiZGVncmVlIjogMC41MDAwMDB9LCB7ImF0 dHJpYnV0ZXMiOiBbMSwgMywgLTEsIC0yXSwgImRlcGVuZGVuY3kiOiA0LCAiZGVncmVlIjogMS4w MDAwMDB9XQogKDEgcm93KQogCistLSBlcnJvciwgY2Fubm90IGR1cGxpY2F0ZSBhdHRyaWJ1dGUK K1NFTEVDVCAnW3siYXR0cmlidXRlcyI6IFs2XSwgImRlcGVuZGVuY3kiOiA2LCAiZGVncmVlIjog MC4yOTI1MDh9LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0yXSwgImRlcGVuZGVuY3kiOiAt MSwgImRlZ3JlZSI6IDAuMTEzOTk5fSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyI6IFs2LCAtMl0s ICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAwLjM0ODQ3OX0sCisgICAgICAgICB7ImF0dHJp YnV0ZXMiOiBbLTEsIC0yXSwgImRlcGVuZGVuY3kiOiA2LCAiZGVncmVlIjogMC44Mzk2OTF9XSc6 OnBnX2RlcGVuZGVuY2llczsKK0VSUk9SOiAgbWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogIlt7 ImF0dHJpYnV0ZXMiOiBbNl0sICJkZXBlbmRlbmN5IjogNiwgImRlZ3JlZSI6IDAuMjkyNTA4fSwK KyAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMl0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUi OiAwLjExMzk5OX0sCisgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbNiwgLTJdLCAiZGVwZW5kZW5j eSI6IC0xLCAiZGVncmVlIjogMC4zNDg0Nzl9LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0x LCAtMl0sICJkZXBlbmRlbmN5IjogNiwgImRlZ3JlZSI6IDAuODM5NjkxfV0iCitMSU5FIDE6IFNF TEVDVCAnW3siYXR0cmlidXRlcyI6IFs2XSwgImRlcGVuZGVuY3kiOiA2LCAiZGVncmVlIjogMC4y OS4uLgorICAgICAgICAgICAgICAgXgorREVUQUlMOiAgYXR0bnVtIGxpc3QgZHVwbGljYXRlIHZh bHVlIGZvdW5kOiA2CiBEUk9QIFRBQkxFIHNiXzEsIHNiXzIgQ0FTQ0FERTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdGF0c19leHQuc3FsCmluZGV4IDU3NDliZmM2YThhLi5mNTQyZmNiMmI4MyAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9zdGF0c19leHQuc3FsCkBAIC0xODExLDQgKzE4MTEsMTYgQEAgU0VMRUNUICdbeyJh dHRyaWJ1dGVzIiA6IFsyLDNdLCAibmRpc3RpbmN0IiA6IDR9LAogICAgICAgICAgeyJhdHRyaWJ1 dGVzIiA6IFsyLDMsMl0sICJuZGlzdGluY3QiIDogNH0sCiAgICAgICAgICB7ImF0dHJpYnV0ZXMi IDogWzEsMywtMSwtMl0sICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRpc3RpbmN0OwogCistLSBU ZXN0IGlucHV0IGZ1bmN0aW9uIG9mIHBnX2RlcGVuZGVuY2llcy4KK1NFTEVDVCAnW3siYXR0cmli dXRlcyIgOiBbMiwzXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDEuMDAwMH0sCisgICAg ICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsLTFdLCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlIjog MC4wMDAwfSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzLC0xXSwgImRlcGVuZGVuY3ki IDogNCwgImRlZ3JlZSI6IDAuNTAwMH0sCisgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzEsMywt MSwtMl0sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAxLjAwMDB9XSc6OnBnX2RlcGVuZGVu Y2llczsKKworLS0gZXJyb3IsIGNhbm5vdCBkdXBsaWNhdGUgYXR0cmlidXRlCitTRUxFQ1QgJ1t7 ImF0dHJpYnV0ZXMiOiBbNl0sICJkZXBlbmRlbmN5IjogNiwgImRlZ3JlZSI6IDAuMjkyNTA4fSwK KyAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMl0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUi OiAwLjExMzk5OX0sCisgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbNiwgLTJdLCAiZGVwZW5kZW5j eSI6IC0xLCAiZGVncmVlIjogMC4zNDg0Nzl9LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0x LCAtMl0sICJkZXBlbmRlbmN5IjogNiwgImRlZ3JlZSI6IDAuODM5NjkxfV0nOjpwZ19kZXBlbmRl bmNpZXM7CisKIERST1AgVEFCTEUgc2JfMSwgc2JfMiBDQVNDQURFOwotLSAKMi41MC4xCgo= --00000000000036beff063c2e5ec5 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0003-Expose-attribute-statistics-functions-for-use-in-.patch" Content-Disposition: attachment; filename="v5-0003-Expose-attribute-statistics-functions-for-use-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me8tee662 RnJvbSA1ZTcxMzU2MWZlM2E1NWU3YTM3ZDE1ZjM1YTA3OTdmZjkxM2QyMjVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDb3JleSBIdWlua2VyIDxjaHVpbmtlckBhbWF6b24uY29tPgpE YXRlOiBUaHUsIDI2IERlYyAyMDI0IDA1OjAyOjA2IC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2NSAz LzVdIEV4cG9zZSBhdHRyaWJ1dGUgc3RhdGlzdGljcyBmdW5jdGlvbnMgZm9yIHVzZSBpbgogZXh0 ZW5kZWRfc3RhdHMuCgpNYW55IG9mIHRoZSBvcGVyYXRpb25zIG9mIGF0dHJpYnV0ZSBzdGF0cyBo YXZlIGFuYWxvZ291cyBvcGVyYXRpb25zIGluCmV4dGVuZGVkIHN0YXRzLgoKKiBnZXRfYXR0cl9z dGF0X3R5cGUoKQoqIGluaXRfZW1wdHlfc3RhdHNfdHVwbGUoKQoqIHRleHRfdG9fc3RhdmFsdWVz KCkKKiBnZXRfZWxlbV9zdGF0X3R5cGUoKQotLS0KIHNyYy9pbmNsdWRlL3N0YXRpc3RpY3Mvc3Rh dGlzdGljcy5oICAgICAgfCAxNyArKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvc3RhdGlz dGljcy9hdHRyaWJ1dGVfc3RhdHMuYyB8IDI0ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBm aWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9zdGF0aXN0aWNzL3N0YXRpc3RpY3MuaCBiL3NyYy9pbmNsdWRlL3N0 YXRpc3RpY3Mvc3RhdGlzdGljcy5oCmluZGV4IDdkZDBmOTc1NTQ1Li5hMGFiNGI3NjMzYyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0aWNzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0aWNzLmgKQEAgLTEyNyw0ICsxMjcsMjEgQEAgZXh0ZXJu IFN0YXRpc3RpY0V4dEluZm8gKmNob29zZV9iZXN0X3N0YXRpc3RpY3MoTGlzdCAqc3RhdHMsIGNo YXIgcmVxdWlyZWRraW5kLAogCQkJCQkJCQkJCQkJaW50IG5jbGF1c2VzKTsKIGV4dGVybiBIZWFw VHVwbGUgc3RhdGV4dF9leHByZXNzaW9uc19sb2FkKE9pZCBzdHhvaWQsIGJvb2wgaW5oLCBpbnQg aWR4KTsKIAorZXh0ZXJuIHZvaWQgZ2V0X2F0dHJfc3RhdF90eXBlKE9pZCByZWxvaWQsIEF0dHJO dW1iZXIgYXR0bnVtLAorCQkJCQkJCSAgIE9pZCAqYXR0dHlwaWQsIGludDMyICphdHR0eXBtb2Qs CisJCQkJCQkJICAgY2hhciAqYXR0dHlwdHlwZSwgT2lkICphdHR0eXBjb2xsLAorCQkJCQkJCSAg IE9pZCAqZXFfb3ByLCBPaWQgKmx0X29wcik7CitleHRlcm4gdm9pZCBpbml0X2VtcHR5X3N0YXRz X3R1cGxlKE9pZCByZWxvaWQsIGludDE2IGF0dG51bSwgYm9vbCBpbmhlcml0ZWQsCisJCQkJCQkJ CSAgIERhdHVtICp2YWx1ZXMsIGJvb2wgKm51bGxzLCBib29sICpyZXBsYWNlcyk7CisKK2V4dGVy biB2b2lkIHNldF9zdGF0c19zbG90KERhdHVtICp2YWx1ZXMsIGJvb2wgKm51bGxzLCBib29sICpy ZXBsYWNlcywKKwkJCQkJCSAgIGludDE2IHN0YWtpbmQsIE9pZCBzdGFvcCwgT2lkIHN0YWNvbGws CisJCQkJCQkgICBEYXR1bSBzdGFudW1iZXJzLCBib29sIHN0YW51bWJlcnNfaXNudWxsLAorCQkJ CQkJICAgRGF0dW0gc3RhdmFsdWVzLCBib29sIHN0YXZhbHVlc19pc251bGwpOworCitleHRlcm4g RGF0dW0gdGV4dF90b19zdGF2YWx1ZXMoY29uc3QgY2hhciAqc3RhbmFtZSwgRm1nckluZm8gKmFy cmF5X2luLCBEYXR1bSBkLAorCQkJCQkJCSAgIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBib29s ICpvayk7CitleHRlcm4gYm9vbCBnZXRfZWxlbV9zdGF0X3R5cGUoT2lkIGF0dHR5cGlkLCBjaGFy IGF0dHR5cHR5cGUsCisJCQkJCQkJICAgT2lkICplbGVtdHlwaWQsIE9pZCAqZWxlbV9lcV9vcHIp OworCiAjZW5kaWYJCQkJCQkJLyogU1RBVElTVElDU19IICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdGF0aXN0aWNzL2F0dHJpYnV0ZV9zdGF0cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9hdHRyaWJ1dGVfc3RhdHMuYwppbmRleCBlODI0MTkyNmQyYy4uNzc1MTFkNDMyNmMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvYXR0cmlidXRlX3N0YXRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RhdGlzdGljcy9hdHRyaWJ1dGVfc3RhdHMuYwpAQCAtMTAwLDIzICsxMDAsOSBA QCBzdGF0aWMgc3RydWN0IFN0YXRzQXJnSW5mbyBjbGVhcmFyZ2luZm9bXSA9CiAKIHN0YXRpYyBi b29sIGF0dHJpYnV0ZV9zdGF0aXN0aWNzX3VwZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbyk7 CiBzdGF0aWMgTm9kZSAqZ2V0X2F0dHJfZXhwcihSZWxhdGlvbiByZWwsIGludCBhdHRudW0pOwot c3RhdGljIHZvaWQgZ2V0X2F0dHJfc3RhdF90eXBlKE9pZCByZWxvaWQsIEF0dHJOdW1iZXIgYXR0 bnVtLAotCQkJCQkJCSAgIE9pZCAqYXR0dHlwaWQsIGludDMyICphdHR0eXBtb2QsCi0JCQkJCQkJ ICAgY2hhciAqYXR0dHlwdHlwZSwgT2lkICphdHR0eXBjb2xsLAotCQkJCQkJCSAgIE9pZCAqZXFf b3ByLCBPaWQgKmx0X29wcik7Ci1zdGF0aWMgYm9vbCBnZXRfZWxlbV9zdGF0X3R5cGUoT2lkIGF0 dHR5cGlkLCBjaGFyIGF0dHR5cHR5cGUsCi0JCQkJCQkJICAgT2lkICplbGVtdHlwaWQsIE9pZCAq ZWxlbV9lcV9vcHIpOwotc3RhdGljIERhdHVtIHRleHRfdG9fc3RhdmFsdWVzKGNvbnN0IGNoYXIg KnN0YW5hbWUsIEZtZ3JJbmZvICphcnJheV9pbiwgRGF0dW0gZCwKLQkJCQkJCQkgICBPaWQgdHlw aWQsIGludDMyIHR5cG1vZCwgYm9vbCAqb2spOwotc3RhdGljIHZvaWQgc2V0X3N0YXRzX3Nsb3Qo RGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsIGJvb2wgKnJlcGxhY2VzLAotCQkJCQkJICAgaW50 MTYgc3Rha2luZCwgT2lkIHN0YW9wLCBPaWQgc3RhY29sbCwKLQkJCQkJCSAgIERhdHVtIHN0YW51 bWJlcnMsIGJvb2wgc3RhbnVtYmVyc19pc251bGwsCi0JCQkJCQkgICBEYXR1bSBzdGF2YWx1ZXMs IGJvb2wgc3RhdmFsdWVzX2lzbnVsbCk7CiBzdGF0aWMgdm9pZCB1cHNlcnRfcGdfc3RhdGlzdGlj KFJlbGF0aW9uIHN0YXJlbCwgSGVhcFR1cGxlIG9sZHR1cCwKIAkJCQkJCQkJRGF0dW0gKnZhbHVl cywgYm9vbCAqbnVsbHMsIGJvb2wgKnJlcGxhY2VzKTsKIHN0YXRpYyBib29sIGRlbGV0ZV9wZ19z dGF0aXN0aWMoT2lkIHJlbG9pZCwgQXR0ck51bWJlciBhdHRudW0sIGJvb2wgc3RhaW5oZXJpdCk7 Ci1zdGF0aWMgdm9pZCBpbml0X2VtcHR5X3N0YXRzX3R1cGxlKE9pZCByZWxvaWQsIGludDE2IGF0 dG51bSwgYm9vbCBpbmhlcml0ZWQsCi0JCQkJCQkJCSAgIERhdHVtICp2YWx1ZXMsIGJvb2wgKm51 bGxzLCBib29sICpyZXBsYWNlcyk7CiAKIC8qCiAgKiBJbnNlcnQgb3IgVXBkYXRlIEF0dHJpYnV0 ZSBTdGF0aXN0aWNzCkBAIC01NjgsNyArNTU0LDcgQEAgZ2V0X2F0dHJfZXhwcihSZWxhdGlvbiBy ZWwsIGludCBhdHRudW0pCiAvKgogICogRGVyaXZlIHR5cGUgaW5mb3JtYXRpb24gZnJvbSB0aGUg YXR0cmlidXRlLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogZ2V0X2F0dHJfc3RhdF90eXBlKE9p ZCByZWxvaWQsIEF0dHJOdW1iZXIgYXR0bnVtLAogCQkJCSAgIE9pZCAqYXR0dHlwaWQsIGludDMy ICphdHR0eXBtb2QsCiAJCQkJICAgY2hhciAqYXR0dHlwdHlwZSwgT2lkICphdHR0eXBjb2xsLApA QCAtNjUwLDcgKzYzNiw3IEBAIGdldF9hdHRyX3N0YXRfdHlwZShPaWQgcmVsb2lkLCBBdHRyTnVt YmVyIGF0dG51bSwKIC8qCiAgKiBEZXJpdmUgZWxlbWVudCB0eXBlIGluZm9ybWF0aW9uIGZyb20g dGhlIGF0dHJpYnV0ZSB0eXBlLgogICovCi1zdGF0aWMgYm9vbAorYm9vbAogZ2V0X2VsZW1fc3Rh dF90eXBlKE9pZCBhdHR0eXBpZCwgY2hhciBhdHR0eXB0eXBlLAogCQkJCSAgIE9pZCAqZWxlbXR5 cGlkLCBPaWQgKmVsZW1fZXFfb3ByKQogewpAQCAtNjkwLDcgKzY3Niw3IEBAIGdldF9lbGVtX3N0 YXRfdHlwZShPaWQgYXR0dHlwaWQsIGNoYXIgYXR0dHlwdHlwZSwKICAqIHRvIGZhbHNlLiBJZiB0 aGUgcmVzdWx0aW5nIGFycmF5IGNvbnRhaW5zIE5VTExzLCByYWlzZSBhIFdBUk5JTkcgYW5kIHNl dCBvawogICogdG8gZmFsc2UuIE90aGVyd2lzZSwgc2V0IG9rIHRvIHRydWUuCiAgKi8KLXN0YXRp YyBEYXR1bQorRGF0dW0KIHRleHRfdG9fc3RhdmFsdWVzKGNvbnN0IGNoYXIgKnN0YW5hbWUsIEZt Z3JJbmZvICphcnJheV9pbiwgRGF0dW0gZCwgT2lkIHR5cGlkLAogCQkJCSAgaW50MzIgdHlwbW9k LCBib29sICpvaykKIHsKQEAgLTc0Myw3ICs3MjksNyBAQCB0ZXh0X3RvX3N0YXZhbHVlcyhjb25z dCBjaGFyICpzdGFuYW1lLCBGbWdySW5mbyAqYXJyYXlfaW4sIERhdHVtIGQsIE9pZCB0eXBpZCwK ICAqIEZpbmQgYW5kIHVwZGF0ZSB0aGUgc2xvdCB3aXRoIHRoZSBnaXZlbiBzdGFraW5kLCBvciB1 c2UgdGhlIGZpcnN0IGVtcHR5CiAgKiBzbG90LgogICovCi1zdGF0aWMgdm9pZAordm9pZAogc2V0 X3N0YXRzX3Nsb3QoRGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsIGJvb2wgKnJlcGxhY2VzLAog CQkJICAgaW50MTYgc3Rha2luZCwgT2lkIHN0YW9wLCBPaWQgc3RhY29sbCwKIAkJCSAgIERhdHVt IHN0YW51bWJlcnMsIGJvb2wgc3RhbnVtYmVyc19pc251bGwsCkBAIC04NjcsNyArODUzLDcgQEAg ZGVsZXRlX3BnX3N0YXRpc3RpYyhPaWQgcmVsb2lkLCBBdHRyTnVtYmVyIGF0dG51bSwgYm9vbCBz dGFpbmhlcml0KQogLyoKICAqIEluaXRpYWxpemUgdmFsdWVzIGFuZCBudWxscyBmb3IgYSBuZXcg c3RhdHMgdHVwbGUuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBpbml0X2VtcHR5X3N0YXRzX3R1 cGxlKE9pZCByZWxvaWQsIGludDE2IGF0dG51bSwgYm9vbCBpbmhlcml0ZWQsCiAJCQkJCSAgIERh dHVtICp2YWx1ZXMsIGJvb2wgKm51bGxzLCBib29sICpyZXBsYWNlcykKIHsKLS0gCjIuNTAuMQoK --00000000000036beff063c2e5ec5 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0004-Add-extended-statistics-support-functions.patch" Content-Disposition: attachment; filename="v5-0004-Add-extended-statistics-support-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me8tegwl3 RnJvbSBiYjJiNzY5OWFiNGNlZjc1ZWUxYTc1ZDM0ZjBkZTliN2I1OTA4OWVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDb3JleSBIdWlua2VyIDxjb3JleS5odWlua2VyQGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAzIEphbiAyMDI1IDEzOjQzOjI5IC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2 NSA0LzVdIEFkZCBleHRlbmRlZCBzdGF0aXN0aWNzIHN1cHBvcnQgZnVuY3Rpb25zLgoKQWRkIHBn X3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoKSBhbmQgcGdfY2xlYXJfZXh0ZW5kZWRfc3RhdHMoKS4g VGhlc2UKZnVuY3Rpb25zIGNsb3NlbHkgbWlycm9yIHRoZWlyIHJlbGF0aW9uIGFuZCBhdHRyaWJ1 dGUgY291bnRlcnBhcnRzLApidXQgZm9yIGV4dGVuZGVkIHN0YXRpc3RpY3MgKGkuZS4gIENSRUFU RSBTVEFUSVNUSUNTKSBvYmplY3RzLgotLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQgICAgICAgICAgICAgICB8ICAgMTggKwogLi4uL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNf aW50ZXJuYWwuaCAgICAgIHwgICAxNyArCiBzcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVu Y2llcy5jICAgICAgICAgfCAgIDY1ICsKIHNyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRf c3RhdHMuYyAgICAgICB8IDExMDQgKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3N0YXRp c3RpY3MvbWN2LmMgICAgICAgICAgICAgICAgICB8ICAxNDQgKysrCiBzcmMvYmFja2VuZC9zdGF0 aXN0aWNzL212ZGlzdGluY3QuYyAgICAgICAgICAgfCAgIDYyICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3RhdHNfaW1wb3J0Lm91dCAgICB8ICA1ODggKysrKysrKysrCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9zdGF0c19pbXBvcnQuc3FsICAgICAgICAgfCAgNDUyICsrKysrKysKIGRvYy9z cmMvc2dtbC9mdW5jL2Z1bmMtYWRtaW4uc2dtbCAgICAgICAgICAgICB8ICAgOTggKysKIDkgZmls ZXMgY2hhbmdlZCwgMjU0OCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5k ZXggMTE4ZDZkYTFhY2UuLmY3Yzc4Y2M2YTE1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAg LTEyNTY2LDYgKzEyNTY2LDI0IEBACiAgIHByb25hbWUgPT4gJ2dpc3RfdHJhbnNsYXRlX2NtcHR5 cGVfY29tbW9uJywgcHJvcmV0dHlwZSA9PiAnaW50MicsCiAgIHByb2FyZ3R5cGVzID0+ICdpbnQ0 JywgcHJvc3JjID0+ICdnaXN0X3RyYW5zbGF0ZV9jbXB0eXBlX2NvbW1vbicgfSwKIAorIyBFeHRl bmRlZCBTdGF0aXN0aWNzIEltcG9ydAoreyBvaWQgPT4gJzk5NDcnLAorICBkZXNjciA9PiAncmVz dG9yZSBzdGF0aXN0aWNzIG9uIGV4dGVuZGVkIHN0YXRpc3RpY3Mgb2JqZWN0JywKKyAgcHJvbmFt ZSA9PiAncGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cycsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJv aXNzdHJpY3QgPT4gJ2YnLAorICBwcm92YXJpYWRpYyA9PiAnYW55JywKKyAgcHJvcGFyYWxsZWwg PT4gJ3UnLCBwcm9yZXR0eXBlID0+ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4gJ2FueScsCisg IHByb2FyZ25hbWVzID0+ICd7a3dhcmdzfScsCisgIHByb2FyZ21vZGVzID0+ICd7dn0nLAorICBw cm9zcmMgPT4gJ3BnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMnIH0sCit7IG9pZCA9PiAnOTk0OCcs CisgIGRlc2NyID0+ICdjbGVhciBzdGF0aXN0aWNzIG9uIGV4dGVuZGVkIHN0YXRpc3RpY3Mgb2Jq ZWN0JywKKyAgcHJvbmFtZSA9PiAncGdfY2xlYXJfZXh0ZW5kZWRfc3RhdHMnLCBwcm92b2xhdGls ZSA9PiAndicsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3UnLCBwcm9y ZXR0eXBlID0+ICd2b2lkJywKKyAgcHJvYXJndHlwZXMgPT4gJ3RleHQgdGV4dCBib29sJywKKyAg cHJvYXJnbmFtZXMgPT4gJ3tzdGF0aXN0aWNzX3NjaGVtYW5hbWUsc3RhdGlzdGljc19uYW1lLGlu aGVyaXRlZH0nLAorICBwcm9zcmMgPT4gJ3BnX2NsZWFyX2V4dGVuZGVkX3N0YXRzJyB9LAorCiAj IEFJTyByZWxhdGVkIGZ1bmN0aW9ucwogeyBvaWQgPT4gJzYzOTknLCBkZXNjciA9PiAnaW5mb3Jt YXRpb24gYWJvdXQgaW4tcHJvZ3Jlc3MgYXN5bmNocm9ub3VzIElPcycsCiAgIHByb25hbWUgPT4g J3BnX2dldF9haW9zJywgcHJvcm93cyA9PiAnMTAwJywgcHJvcmV0c2V0ID0+ICd0JywKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJuYWwuaCBi L3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJuYWwuaAppbmRleCBl ZmNiN2RjMzU0Ni4uYmE3ZjVkY2FkODIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0YXRpc3Rp Y3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdGF0aXN0aWNz L2V4dGVuZGVkX3N0YXRzX2ludGVybmFsLmgKQEAgLTEyNyw0ICsxMjcsMjEgQEAgZXh0ZXJuIFNl bGVjdGl2aXR5IG1jdl9jbGF1c2Vfc2VsZWN0aXZpdHlfb3IoUGxhbm5lckluZm8gKnJvb3QsCiAJ CQkJCQkJCQkJCSBTZWxlY3Rpdml0eSAqb3ZlcmxhcF9iYXNlc2VsLAogCQkJCQkJCQkJCQkgU2Vs ZWN0aXZpdHkgKnRvdGFsc2VsKTsKIAorZXh0ZXJuIERhdHVtIGltcG9ydF9tY3ZsaXN0KEhlYXBU dXBsZSB0dXAsIGludCBlbGV2ZWwsIGludCBudW1hdHRycywKKwkJCQkJCQlPaWQgKmF0dHR5cGlk cywgaW50MzIgKmF0dHR5cG1vZHMsIE9pZCAqYXR0dHlwY29sbHMsCisJCQkJCQkJaW50IG5pdGVt cywgRGF0dW0gKm1jdl9lbGVtcywgYm9vbCAqbWN2X251bGxzLAorCQkJCQkJCWJvb2wgKm1jdl9l bGVtX251bGxzLCBmbG9hdDggKmZyZXFzLCBmbG9hdDggKmJhc2VfZnJlcXMpOworCitleHRlcm4g RGF0dW0gaW1wb3J0X21jdmxpc3QoSGVhcFR1cGxlIHR1cCwgaW50IGVsZXZlbCwgaW50IG51bWF0 dHJzLAorCQkJCQkJCU9pZCAqYXR0dHlwaWRzLCBpbnQzMiAqYXR0dHlwbW9kcywgT2lkICphdHR0 eXBjb2xscywKKwkJCQkJCQlpbnQgbml0ZW1zLCBEYXR1bSAqbWN2X2VsZW1zLCBib29sICptY3Zf bnVsbHMsCisJCQkJCQkJYm9vbCAqbWN2X2VsZW1fbnVsbHMsIGZsb2F0OCAqZnJlcXMsIGZsb2F0 OCAqYmFzZV9mcmVxcyk7CitleHRlcm4gYm9vbCBwZ19uZGlzdGluY3RfdmFsaWRhdGVfaXRlbXMo TVZORGlzdGluY3QgKm5kaXN0aW5jdCwgaW50MnZlY3RvciAqc3R4a2V5cywKKwkJCQkJCQkJCQlp bnQgbnVtZXhwcnMsIGludCBlbGV2ZWwpOworZXh0ZXJuIHZvaWQgZnJlZV9wZ19uZGlzdGluY3Qo TVZORGlzdGluY3QgKm5kaXN0aW5jdCk7CitleHRlcm4gYm9vbCBwZ19kZXBlbmRlbmNpZXNfdmFs aWRhdGVfZGVwcyhNVkRlcGVuZGVuY2llcyAqZGVwZW5kZW5jaWVzLAorCQkJCQkJCQkJCSAgaW50 MnZlY3RvciAqc3R4a2V5cywgaW50IG51bWV4cHJzLAorCQkJCQkJCQkJCSAgaW50IGVsZXZlbCk7 CitleHRlcm4gdm9pZCBmcmVlX3BnX2RlcGVuZGVuY2llcyhNVkRlcGVuZGVuY2llcyAqZGVwZW5k ZW5jaWVzKTsKKwogI2VuZGlmCQkJCQkJCS8qIEVYVEVOREVEX1NUQVRTX0lOVEVSTkFMX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMgYi9zcmMv YmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jCmluZGV4IGZkNjEyNWZjOWRhLi5hZWUw YmNiOTBkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMu YworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jCkBAIC0zMzYsNiAr MzM2LDEwIEBAIGRlcGVuZGVuY3lfZGVncmVlKFN0YXRzQnVpbGREYXRhICpkYXRhLCBpbnQgaywg QXR0ck51bWJlciAqZGVwZW5kZW5jeSkKIAlyZXR1cm4gKG5fc3VwcG9ydGluZ19yb3dzICogMS4w IC8gZGF0YS0+bnVtcm93cyk7CiB9CiAKKwordm9pZAorZnJlZV9wZ19kZXBlbmRlbmNpZXMoTVZE ZXBlbmRlbmNpZXMgKmRlcGVuZGVuY2llcyk7CisKIC8qCiAgKiBkZXRlY3RzIGZ1bmN0aW9uYWwg ZGVwZW5kZW5jaWVzIGJldHdlZW4gZ3JvdXBzIG9mIGNvbHVtbnMKICAqCkBAIC0xMDIyLDYgKzEw MjYsNTUgQEAgZGVwZW5kZW5jaWVzX3NjYWxhcih2b2lkICpzdGF0ZSwgY2hhciAqdG9rZW4sIEpz b25Ub2tlblR5cGUgdG9rZW50eXBlKQogCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOwog fQogCisvKgorICogVmFsaWRhdGUgYW4gTVZEZXBlbmRlbmNpZXMgYWdhaW5zdCB0aGUgZXh0ZW5k ZWQgc3RhdGlzdGljcyBvYmplY3QgZGVmaW5pdGlvbi4KKyAqCisgKiBFdmVyeSBNVkRlcGVuZGVu Y2llcyBtdXN0IGJlIGNoZWNrZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGF0dG51bXMgaW4gdGhlCisg KiBhdHRyaWJ1dGVzIGxpc3QgY29ycmVzcG9uZCB0byBhdHRudW1zL2V4cHJlc3Npb25zIGRlZmlu ZWQgYnkgdGhlCisgKiBleHRlbmRlZCBzdGF0aXN0aWNzIG9iamVjdC4KKyAqCisgKiBQb3NpdGl2 ZSBhdHRudW1zIGFyZSBhdHRyaWJ1dGVzIHdoaWNoIG11c3QgYmUgZm91bmQgaW4gdGhlIHN0eGtl eXMsCisgKiB3aGlsZSBuZWdhdGl2ZSBhdHRudW1zIGNvcnJlc3BvbmQgdG8gYW4gZXhwciBudW1i ZXIsIHNvIHRoZSBhdHRudW0KKyAqIGNhbid0IGJlIGJlbG93ICgwIC0gbnVtZXhwcnMpLgorICov Citib29sCitwZ19kZXBlbmRlbmNpZXNfdmFsaWRhdGVfZGVwcyhNVkRlcGVuZGVuY2llcyAqZGVw ZW5kZW5jaWVzLCBpbnQydmVjdG9yICpzdHhrZXlzLCBpbnQgbnVtZXhwcnMsIGludCBlbGV2ZWwp Cit7CisJaW50CQlhdHRudW1fZXhwcl9sb3dib3VuZCA9IDAgLSBudW1leHByczsKKworCWZvciAo aW50IGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLT5uZGVwczsgaSsrKQorCXsKKwkJTVZEZXBlbmRl bmN5ICpkZXAgPSBkZXBlbmRlbmNpZXMtPmRlcHNbaV07CisKKwkJZm9yIChpbnQgaiA9IDA7IGog PCBkZXAtPm5hdHRyaWJ1dGVzOyBqKyspCisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0bnVtID0gZGVw LT5hdHRyaWJ1dGVzW2pdOworCQkJYm9vbAkJb2sgPSBmYWxzZTsKKworCQkJaWYgKGF0dG51bSA+ IDApCisJCQl7CisJCQkJZm9yIChpbnQgayA9IDA7IGsgPCBzdHhrZXlzLT5kaW0xOyBrKyspCisJ CQkJCWlmIChhdHRudW0gPT0gc3R4a2V5cy0+dmFsdWVzW2tdKQorCQkJCQl7CisJCQkJCQlvayA9 IHRydWU7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAoKGF0dG51bSA8 IDApICYmIChhdHRudW0gPj0gYXR0bnVtX2V4cHJfbG93Ym91bmQpKQorCQkJCW9rID0gdHJ1ZTsK KworCQkJaWYgKCFvaykKKwkJCXsKKwkJCQllcmVwb3J0KGVsZXZlbCwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJCWVycm1zZygicGdf ZGVwZW5kZW5jaWVzOiBpbnZhbGlkIGF0dG51bSBmb3IgdGhpcyBzdGF0aXN0aWNzIG9iamVjdDog JWQiLCBhdHRudW0pKSk7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQl9CisJfQorCXJldHVy biB0cnVlOworfQorCiAvKgogICogcGdfZGVwZW5kZW5jaWVzX2luCQktIGlucHV0IHJvdXRpbmUg Zm9yIHR5cGUgcGdfZGVwZW5kZW5jaWVzLgogICoKQEAgLTExMDYsNiArMTE1OSwxOCBAQCBwZ19k ZXBlbmRlbmNpZXNfaW4oUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fTlVMTCgpOwkJCS8q IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIH0KIAorLyoKKyAqIEZyZWUgYWxsb2NhdGlvbnMgb2Yg YW4gTVZORGlzdGluY3QKKyAqLwordm9pZAorZnJlZV9wZ19kZXBlbmRlbmNpZXMoTVZEZXBlbmRl bmNpZXMgKmRlcGVuZGVuY2llcykKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IGRlcGVuZGVuY2ll cy0+bmRlcHM7IGkrKykKKwkJcGZyZWUoZGVwZW5kZW5jaWVzLT5kZXBzW2ldKTsKKworCXBmcmVl KGRlcGVuZGVuY2llcyk7Cit9CisKIC8qCiAgKiBwZ19kZXBlbmRlbmNpZXMJCS0gb3V0cHV0IHJv dXRpbmUgZm9yIHR5cGUgcGdfZGVwZW5kZW5jaWVzLgogICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNz L2V4dGVuZGVkX3N0YXRzLmMKaW5kZXggYWYwYjk5MjQzYzYuLjllZjgzNDliY2I5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCkBAIC0xOCwxMSArMTgsMTYgQEAKIAog I2luY2x1ZGUgImFjY2Vzcy9kZXRvYXN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisj aW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwLmgiCiAjaW5j bHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgog I2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxh dGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dF9kYXRhLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlX2QuaCIKKyNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1h bmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2dyZXNzLmgiCiAjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY3V0b3IuaCIKQEAgLTMzLDYgKzM4LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQu aCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNpbmNsdWRlICJzdGF0aXN0 aWNzL2V4dGVuZGVkX3N0YXRzX2ludGVybmFsLmgiCisjaW5jbHVkZSAic3RhdGlzdGljcy9zdGF0 X3V0aWxzLmgiCiAjaW5jbHVkZSAic3RhdGlzdGljcy9zdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAi dXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKQEAgLTcyLDYgKzc4LDcxIEBA IHR5cGVkZWYgc3RydWN0IFN0YXRFeHRFbnRyeQogCUxpc3QJICAgKmV4cHJzOwkJCS8qIGV4cHJl c3Npb25zICovCiB9IFN0YXRFeHRFbnRyeTsKIAorZW51bSBleHRlbmRlZF9zdGF0c19hcmdudW0K K3sKKwlTVEFUU0NIRU1BX0FSRyA9IDAsCisJU1RBVE5BTUVfQVJHLAorCUlOSEVSSVRFRF9BUkcs CisJTkRJU1RJTkNUX0FSRywKKwlERVBFTkRFTkNJRVNfQVJHLAorCU1PU1RfQ09NTU9OX1ZBTFNf QVJHLAorCU1PU1RfQ09NTU9OX1ZBTF9OVUxMU19BUkcsCisJTU9TVF9DT01NT05fRlJFUVNfQVJH LAorCU1PU1RfQ09NTU9OX0JBU0VfRlJFUVNfQVJHLAorCUVYUFJFU1NJT05TX0FSRywKKwlOVU1f RVhURU5ERURfU1RBVFNfQVJHUworfTsKKworc3RhdGljIHN0cnVjdCBTdGF0c0FyZ0luZm8gZXh0 YXJnaW5mb1tdID0KK3sKKwlbU1RBVFNDSEVNQV9BUkddID0geyJzdGF0aXN0aWNzX3NjaGVtYW5h bWUiLCBURVhUT0lEfSwKKwlbU1RBVE5BTUVfQVJHXSA9IHsic3RhdGlzdGljc19uYW1lIiwgVEVY VE9JRH0sCisJW0lOSEVSSVRFRF9BUkddID0geyJpbmhlcml0ZWQiLCBCT09MT0lEfSwKKwlbTkRJ U1RJTkNUX0FSR10gPSB7Im5fZGlzdGluY3QiLCBQR19ORElTVElOQ1RPSUR9LAorCVtERVBFTkRF TkNJRVNfQVJHXSA9IHsiZGVwZW5kZW5jaWVzIiwgUEdfREVQRU5ERU5DSUVTT0lEfSwKKwlbTU9T VF9DT01NT05fVkFMU19BUkddID0geyJtb3N0X2NvbW1vbl92YWxzIiwgVEVYVEFSUkFZT0lEfSwK KwlbTU9TVF9DT01NT05fVkFMX05VTExTX0FSR10gPSB7Im1vc3RfY29tbW9uX3ZhbF9udWxscyIs IEJPT0xBUlJBWU9JRH0sCisJW01PU1RfQ09NTU9OX0ZSRVFTX0FSR10gPSB7Im1vc3RfY29tbW9u X2ZyZXFzIiwgRkxPQVQ4QVJSQVlPSUR9LAorCVtNT1NUX0NPTU1PTl9CQVNFX0ZSRVFTX0FSR10g PSB7Im1vc3RfY29tbW9uX2Jhc2VfZnJlcXMiLCBGTE9BVDhBUlJBWU9JRH0sCisJW0VYUFJFU1NJ T05TX0FSR10gPSB7ImV4cHJzIiwgVEVYVEFSUkFZT0lEfSwKKwlbTlVNX0VYVEVOREVEX1NUQVRT X0FSR1NdID0gezB9Cit9OworCisvKgorICogTk9URTogdGhlIFJBTkdFX0xFTkdUSCAmIFJBTkdF X0JPVU5EUyBzdGF0cyBhcmUgbm90IHlldCByZWZsZWN0ZWQgaW4gYW55CisgKiB2ZXJzaW9uIG9m IHBnX3N0YXRfZXh0X2V4cHJzLgorICovCitlbnVtIGV4dGVuZGVkX3N0YXRzX2V4cHJzX2VsZW1l bnQKK3sKKwlOVUxMX0ZSQUNfRUxFTSA9IDAsCisJQVZHX1dJRFRIX0VMRU0sCisJTl9ESVNUSU5D VF9FTEVNLAorCU1PU1RfQ09NTU9OX1ZBTFNfRUxFTSwKKwlNT1NUX0NPTU1PTl9GUkVRU19FTEVN LAorCUhJU1RPR1JBTV9CT1VORFNfRUxFTSwKKwlDT1JSRUxBVElPTl9FTEVNLAorCU1PU1RfQ09N TU9OX0VMRU1TX0VMRU0sCisJTU9TVF9DT01NT05fRUxFTV9GUkVRU19FTEVNLAorCUVMRU1fQ09V TlRfSElTVE9HUkFNX0VMRU0sCisJTlVNX0FUVFJJQlVURV9TVEFUU19FTEVNUworfTsKKworc3Rh dGljIHN0cnVjdCBTdGF0c0FyZ0luZm8gZXh0ZXhwcmFyZ2luZm9bXSA9Cit7CisJW05VTExfRlJB Q19FTEVNXSA9IHsibnVsbF9mcmFjIiwgRkxPQVQ0T0lEfSwKKwlbQVZHX1dJRFRIX0VMRU1dID0g eyJhdmdfd2lkdGgiLCBJTlQ0T0lEfSwKKwlbTl9ESVNUSU5DVF9FTEVNXSA9IHsibl9kaXN0aW5j dCIsIEZMT0FUNE9JRH0sCisJW01PU1RfQ09NTU9OX1ZBTFNfRUxFTV0gPSB7Im1vc3RfY29tbW9u X3ZhbHMiLCBURVhUT0lEfSwKKwlbTU9TVF9DT01NT05fRlJFUVNfRUxFTV0gPSB7Im1vc3RfY29t bW9uX2ZyZXFzIiwgRkxPQVQ0QVJSQVlPSUR9LAorCVtISVNUT0dSQU1fQk9VTkRTX0VMRU1dID0g eyJoaXN0b2dyYW1fYm91bmRzIiwgVEVYVE9JRH0sCisJW0NPUlJFTEFUSU9OX0VMRU1dID0geyJj b3JyZWxhdGlvbiIsIEZMT0FUNE9JRH0sCisJW01PU1RfQ09NTU9OX0VMRU1TX0VMRU1dID0geyJt b3N0X2NvbW1vbl9lbGVtcyIsIFRFWFRPSUR9LAorCVtNT1NUX0NPTU1PTl9FTEVNX0ZSRVFTX0VM RU1dID0geyJtb3N0X2NvbW1vbl9lbGVtX2ZyZXFzIiwgRkxPQVQ0QVJSQVlPSUR9LAorCVtFTEVN X0NPVU5UX0hJU1RPR1JBTV9FTEVNXSA9IHsiZWxlbV9jb3VudF9oaXN0b2dyYW0iLCBGTE9BVDRB UlJBWU9JRH0sCisJW05VTV9BVFRSSUJVVEVfU1RBVFNfRUxFTVNdID0gezB9Cit9OworCitzdGF0 aWMgYm9vbCBleHRlbmRlZF9zdGF0aXN0aWNzX3VwZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5m byk7CiAKIHN0YXRpYyBMaXN0ICpmZXRjaF9zdGF0ZW50cmllc19mb3JfcmVsYXRpb24oUmVsYXRp b24gcGdfc3RhdGV4dCwgT2lkIHJlbGlkKTsKIHN0YXRpYyBWYWNBdHRyU3RhdHMgKipsb29rdXBf dmFyX2F0dHJfc3RhdHMoQml0bWFwc2V0ICphdHRycywgTGlzdCAqZXhwcnMsCkBAIC05OSw2ICsx NzAsMjggQEAgc3RhdGljIFN0YXRzQnVpbGREYXRhICptYWtlX2J1aWxkX2RhdGEoUmVsYXRpb24g cmVsLCBTdGF0RXh0RW50cnkgKnN0YXQsCiAJCQkJCQkJCQkgICBpbnQgbnVtcm93cywgSGVhcFR1 cGxlICpyb3dzLAogCQkJCQkJCQkJICAgVmFjQXR0clN0YXRzICoqc3RhdHMsIGludCBzdGF0dGFy Z2V0KTsKIAorc3RhdGljIEhlYXBUdXBsZSBnZXRfcGdfc3RhdGlzdGljX2V4dChSZWxhdGlvbiBw Z19zdGV4dCwgT2lkIG5zcG9pZCwKKwkJCQkJCQkJCSAgY29uc3QgY2hhciAqc3R4bmFtZSk7Citz dGF0aWMgYm9vbCBkZWxldGVfcGdfc3RhdGlzdGljX2V4dF9kYXRhKE9pZCBzdHhvaWQsIGJvb2wg aW5oZXJpdGVkKTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlib29sCQluZGlzdGluY3Q7CisJYm9v bAkJZGVwZW5kZW5jaWVzOworCWJvb2wJCW1jdjsKKwlib29sCQlleHByZXNzaW9uczsKK30JCQlz dGFraW5kRmxhZ3M7CisKK3N0YXRpYyB2b2lkIGV4cGFuZF9zdHhraW5kKEhlYXBUdXBsZSB0dXAs IHN0YWtpbmRGbGFncyAqIGVuYWJsZWQpOworc3RhdGljIHZvaWQgdXBzZXJ0X3BnX3N0YXRpc3Rp Y19leHRfZGF0YShEYXR1bSAqdmFsdWVzLCBib29sICpudWxscywgYm9vbCAqcmVwbGFjZXMpOwor c3RhdGljIGJvb2wgY2hlY2tfbWN2bGlzdF9hcnJheShBcnJheVR5cGUgKmFyciwgaW50IGFyZ2lu ZGV4LAorCQkJCQkJCQlpbnQgcmVxdWlyZWRfbmRpbXNzLCBpbnQgbWN2X2xlbmd0aCk7CitzdGF0 aWMgRGF0dW0gaW1wb3J0X2V4cHJlc3Npb25zKFJlbGF0aW9uIHBnc2QsIGludCBudW1leHBycywK KwkJCQkJCQkJT2lkICphdHR0eXBpZHMsIGludDMyICphdHR0eXBtb2RzLAorCQkJCQkJCQlPaWQg KmF0dHR5cGNvbGxzLCBBcnJheVR5cGUgKmV4cHJzX2Fycik7CitzdGF0aWMgYm9vbCB0ZXh0X3Rv X2Zsb2F0NChEYXR1bSBpbnB1dCwgRGF0dW0gKm91dHB1dCk7CitzdGF0aWMgYm9vbCB0ZXh0X3Rv X2ludDQoRGF0dW0gaW5wdXQsIERhdHVtICpvdXRwdXQpOworCiAKIC8qCiAgKiBDb21wdXRlIHJl cXVlc3RlZCBleHRlbmRlZCBzdGF0cywgdXNpbmcgdGhlIHJvd3Mgc2FtcGxlZCBmb3IgdGhlIHBs YWluCkBAIC0yNjExLDMgKzI3MDQsMTAxNCBAQCBtYWtlX2J1aWxkX2RhdGEoUmVsYXRpb24gcmVs LCBTdGF0RXh0RW50cnkgKnN0YXQsIGludCBudW1yb3dzLCBIZWFwVHVwbGUgKnJvd3MsCiAKIAly ZXR1cm4gcmVzdWx0OwogfQorCitzdGF0aWMgSGVhcFR1cGxlCitnZXRfcGdfc3RhdGlzdGljX2V4 dChSZWxhdGlvbiBwZ19zdGV4dCwgT2lkIG5zcG9pZCwgY29uc3QgY2hhciAqc3R4bmFtZSkKK3sK KwlTY2FuS2V5RGF0YSBrZXlbMl07CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlIZWFwVHVwbGUJdHVw OworCU9pZAkJCXN0eG9pZCA9IEludmFsaWRPaWQ7CisKKwlTY2FuS2V5SW5pdCgma2V5WzBdLAor CQkJCUFudW1fcGdfc3RhdGlzdGljX2V4dF9zdHhuYW1lLAorCQkJCUJURXF1YWxTdHJhdGVneU51 bWJlciwKKwkJCQlGX05BTUVFUSwKKwkJCQlDU3RyaW5nR2V0RGF0dW0oc3R4bmFtZSkpOworCVNj YW5LZXlJbml0KCZrZXlbMV0sCisJCQkJQW51bV9wZ19zdGF0aXN0aWNfZXh0X3N0eG5hbWVzcGFj ZSwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsCisJCQkJRl9PSURFUSwKKwkJCQlPYmplY3RJ ZEdldERhdHVtKG5zcG9pZCkpOworCisJLyoKKwkgKiBUcnkgdG8gZmluZCBtYXRjaGluZyBwZ19z dGF0aXN0aWNfZXh0IHJvdy4KKwkgKi8KKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX3N0 ZXh0LAorCQkJCQkJCSAgU3RhdGlzdGljRXh0TmFtZUluZGV4SWQsCisJCQkJCQkJICB0cnVlLAor CQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkgIDIsCisJCQkJCQkJICBrZXkpOworCisJLyogVW5pcXVl IGluZGV4LCBlaXRoZXIgd2UgZ2V0IGEgdHVwbGUgb3Igd2UgZG9uJ3QuICovCisJdHVwID0gc3lz dGFibGVfZ2V0bmV4dChzY2FuKTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCXN0 eG9pZCA9ICgoRm9ybV9wZ19zdGF0aXN0aWNfZXh0KSBHRVRTVFJVQ1QodHVwKSktPm9pZDsKKwor CXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisKKwlpZiAoIU9pZElzVmFsaWQoc3R4b2lkKSkKKwkJ cmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gU2VhcmNoU3lzQ2FjaGVDb3B5MShTVEFURVhUT0lELCBP YmplY3RJZEdldERhdHVtKHN0eG9pZCkpOworfQorCisvKgorICogRGVjb2RlIHRoZSBzdHhraW5k IGNvbHVtbiBzbyB0aGF0IHdlIGtub3cgd2hpY2ggc3RhdHMgdHlwZXMgdG8gZXhwZWN0LgorICov CitzdGF0aWMgdm9pZAorZXhwYW5kX3N0eGtpbmQoSGVhcFR1cGxlIHR1cCwgc3Rha2luZEZsYWdz ICogZW5hYmxlZCkKK3sKKwlEYXR1bQkJZGF0dW07CisJQXJyYXlUeXBlICAqYXJyOworCWNoYXIJ ICAgKmtpbmRzOworCisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFNUQVRFWFRPSUQs CisJCQkJCQkJCSAgIHR1cCwKKwkJCQkJCQkJICAgQW51bV9wZ19zdGF0aXN0aWNfZXh0X3N0eGtp bmQpOworCWFyciA9IERhdHVtR2V0QXJyYXlUeXBlUChkYXR1bSk7CisJaWYgKEFSUl9ORElNKGFy cikgIT0gMSB8fCBBUlJfSEFTTlVMTChhcnIpIHx8IEFSUl9FTEVNVFlQRShhcnIpICE9IENIQVJP SUQpCisJCWVsb2coRVJST1IsICJzdHhraW5kIGlzIG5vdCBhIDEtRCBjaGFyIGFycmF5Iik7CisK KwlraW5kcyA9IChjaGFyICopIEFSUl9EQVRBX1BUUihhcnIpOworCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBBUlJfRElNUyhhcnIpWzBdOyBpKyspCisJCWlmIChraW5kc1tpXSA9PSBTVEFUU19FWFRf TkRJU1RJTkNUKQorCQkJZW5hYmxlZC0+bmRpc3RpbmN0ID0gdHJ1ZTsKKwkJZWxzZSBpZiAoa2lu ZHNbaV0gPT0gU1RBVFNfRVhUX0RFUEVOREVOQ0lFUykKKwkJCWVuYWJsZWQtPmRlcGVuZGVuY2ll cyA9IHRydWU7CisJCWVsc2UgaWYgKGtpbmRzW2ldID09IFNUQVRTX0VYVF9NQ1YpCisJCQllbmFi bGVkLT5tY3YgPSB0cnVlOworCQllbHNlIGlmIChraW5kc1tpXSA9PSBTVEFUU19FWFRfRVhQUkVT U0lPTlMpCisJCQllbmFibGVkLT5leHByZXNzaW9ucyA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lk Cit1cHNlcnRfcGdfc3RhdGlzdGljX2V4dF9kYXRhKERhdHVtICp2YWx1ZXMsIGJvb2wgKm51bGxz LCBib29sICpyZXBsYWNlcykKK3sKKwlSZWxhdGlvbglwZ19zdGV4dGRhdGE7CisJSGVhcFR1cGxl CXN0eGR0dXA7CisJSGVhcFR1cGxlCW5ld3R1cDsKKworCXBnX3N0ZXh0ZGF0YSA9IHRhYmxlX29w ZW4oU3RhdGlzdGljRXh0RGF0YVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJc3R4 ZHR1cCA9IFNlYXJjaFN5c0NhY2hlMihTVEFURVhUREFUQVNUWE9JRCwKKwkJCQkJCQkgIHZhbHVl c1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhvaWQgLSAxXSwKKwkJCQkJCQkgIHZhbHVl c1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkaW5oZXJpdCAtIDFdKTsKKworCWlmIChI ZWFwVHVwbGVJc1ZhbGlkKHN0eGR0dXApKQorCXsKKwkJbmV3dHVwID0gaGVhcF9tb2RpZnlfdHVw bGUoc3R4ZHR1cCwKKwkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihwZ19zdGV4dGRhdGEpLAor CQkJCQkJCQkgICB2YWx1ZXMsCisJCQkJCQkJCSAgIG51bGxzLAorCQkJCQkJCQkgICByZXBsYWNl cyk7CisJCUNhdGFsb2dUdXBsZVVwZGF0ZShwZ19zdGV4dGRhdGEsICZuZXd0dXAtPnRfc2VsZiwg bmV3dHVwKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHN0eGR0dXApOworCX0KKwllbHNlCisJeworCQlu ZXd0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihwZ19zdGV4dGRhdGEpLCB2 YWx1ZXMsIG51bGxzKTsKKwkJQ2F0YWxvZ1R1cGxlSW5zZXJ0KHBnX3N0ZXh0ZGF0YSwgbmV3dHVw KTsKKwl9CisKKwloZWFwX2ZyZWV0dXBsZShuZXd0dXApOworCisJQ29tbWFuZENvdW50ZXJJbmNy ZW1lbnQoKTsKKworCXRhYmxlX2Nsb3NlKHBnX3N0ZXh0ZGF0YSwgUm93RXhjbHVzaXZlTG9jayk7 Cit9CisKKy8qCisgKiBJbnNlcnQgb3IgVXBkYXRlIEV4dGVuZGVkIFN0YXRpc3RpY3MKKyAqCisg KiBNYWpvciBlcnJvcnMsIHN1Y2ggYXMgdGhlIHRhYmxlIG5vdCBleGlzdGluZywgdGhlIHN0YXRp c3RpY3Mgb2JqZWN0IG5vdAorICogZXhpc3RpbmcsIG9yIGEgcGVybWlzc2lvbnMgZmFpbHVyZSBh cmUgYWx3YXlzIHJlcG9ydGVkIGF0IEVSUk9SLiBPdGhlcgorICogZXJyb3JzLCBzdWNoIGFzIGEg Y29udmVyc2lvbiBmYWlsdXJlIG9uIG9uZSBzdGF0aXN0aWMga2luZCwgYXJlIHJlcG9ydGVkCisg KiBhcyBXQVJOSU5HcywgYW5kIG90aGVyIHN0YXRpc3RpYyBraW5kcyBtYXkgc3RpbGwgYmUgdXBk YXRlZC4KKyAqLworc3RhdGljIGJvb2wKK2V4dGVuZGVkX3N0YXRpc3RpY3NfdXBkYXRlKEZ1bmN0 aW9uQ2FsbEluZm8gZmNpbmZvKQoreworCU9pZAkJCW5zcG9pZDsKKwljaGFyCSAgICpuc3BuYW1l OworCWNoYXIJICAgKnN0eG5hbWU7CisJYm9vbAkJaW5oZXJpdGVkOworCVJlbGF0aW9uCXBnX3N0 ZXh0OworCUhlYXBUdXBsZQl0dXAgPSBOVUxMOworCisJc3Rha2luZEZsYWdzIGVuYWJsZWQ7CisJ c3Rha2luZEZsYWdzIGhhczsKKworCUZvcm1fcGdfc3RhdGlzdGljX2V4dCBzdHhmb3JtOworCisJ RGF0dW0JCXZhbHVlc1tOYXR0c19wZ19zdGF0aXN0aWNfZXh0X2RhdGFdOworCWJvb2wJCW51bGxz W05hdHRzX3BnX3N0YXRpc3RpY19leHRfZGF0YV07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdf c3RhdGlzdGljX2V4dF9kYXRhXTsKKworCWJvb2wJCXN1Y2Nlc3MgPSB0cnVlOworCisJRGF0dW0J CWV4cHJkYXR1bTsKKwlib29sCQlpc251bGw7CisJTGlzdAkgICAqZXhwcnMgPSBOSUw7CisJaW50 CQkJbnVtYXR0bnVtcyA9IDA7CisJaW50CQkJbnVtZXhwcnMgPSAwOworCWludAkJCW51bWF0dHJz ID0gMDsKKworCS8qIGFycmF5cyBvZiB0eXBlIGluZm8sIGlmIHdlIG5lZWQgdGhlbSAqLworCU9p ZAkJICAgKmF0dHR5cGlkcyA9IE5VTEw7CisJaW50MzIJICAgKmF0dHR5cG1vZHMgPSBOVUxMOwor CU9pZAkJICAgKmF0dHR5cGNvbGxzID0gTlVMTDsKKworCW1lbXNldChudWxscywgZmFsc2UsIHNp emVvZihudWxscykpOworCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwltZW1z ZXQocmVwbGFjZXMsIDAsIHNpemVvZihyZXBsYWNlcykpOworCW1lbXNldCgmZW5hYmxlZCwgMCwg c2l6ZW9mKGVuYWJsZWQpKTsKKworCWhhcy5tY3YgPSAoIVBHX0FSR0lTTlVMTChNT1NUX0NPTU1P Tl9WQUxTX0FSRykgJiYKKwkJCSAgICFQR19BUkdJU05VTEwoTU9TVF9DT01NT05fVkFMX05VTExT X0FSRykgJiYKKwkJCSAgICFQR19BUkdJU05VTEwoTU9TVF9DT01NT05fRlJFUVNfQVJHKSAmJgor CQkJICAgIVBHX0FSR0lTTlVMTChNT1NUX0NPTU1PTl9CQVNFX0ZSRVFTX0FSRykpOworCWhhcy5u ZGlzdGluY3QgPSAhUEdfQVJHSVNOVUxMKE5ESVNUSU5DVF9BUkcpOworCWhhcy5kZXBlbmRlbmNp ZXMgPSAhUEdfQVJHSVNOVUxMKERFUEVOREVOQ0lFU19BUkcpOworCWhhcy5leHByZXNzaW9ucyA9 ICFQR19BUkdJU05VTEwoRVhQUkVTU0lPTlNfQVJHKTsKKworCWlmIChSZWNvdmVyeUluUHJvZ3Jl c3MoKSkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJyZWNvdmVyeSBpcyBp biBwcm9ncmVzcyIpLAorCQkJCSBlcnJoaW50KCJTdGF0aXN0aWNzIGNhbm5vdCBiZSBtb2RpZmll ZCBkdXJpbmcgcmVjb3ZlcnkuIikpKTsKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKwor CXN0YXRzX2NoZWNrX3JlcXVpcmVkX2FyZyhmY2luZm8sIGV4dGFyZ2luZm8sIFNUQVRTQ0hFTUFf QVJHKTsKKwluc3BuYW1lID0gVGV4dERhdHVtR2V0Q1N0cmluZyhQR19HRVRBUkdfREFUVU0oU1RB VFNDSEVNQV9BUkcpKTsKKwlzdGF0c19jaGVja19yZXF1aXJlZF9hcmcoZmNpbmZvLCBleHRhcmdp bmZvLCBTVEFUTkFNRV9BUkcpOworCXN0eG5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKFBHX0dF VEFSR19EQVRVTShTVEFUTkFNRV9BUkcpKTsKKwlzdGF0c19jaGVja19yZXF1aXJlZF9hcmcoZmNp bmZvLCBleHRhcmdpbmZvLCBJTkhFUklURURfQVJHKTsKKwlpbmhlcml0ZWQgPSBQR19HRVRBUkdf TkFNRShJTkhFUklURURfQVJHKTsKKworCW5zcG9pZCA9IGdldF9uYW1lc3BhY2Vfb2lkKG5zcG5h bWUsIHRydWUpOworCWlmIChuc3BvaWQgPT0gSW52YWxpZE9pZCkKKwl7CisJCWVyZXBvcnQoV0FS TklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJt c2coIk5hbWVzcGFjZSBcIiVzXCIgbm90IGZvdW5kLiIsIHN0eG5hbWUpKSk7CisJCVBHX1JFVFVS Tl9CT09MKGZhbHNlKTsKKwl9CisKKwlwZ19zdGV4dCA9IHRhYmxlX29wZW4oU3RhdGlzdGljRXh0 UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJdHVwID0gZ2V0X3BnX3N0YXRpc3RpY19l eHQocGdfc3RleHQsIG5zcG9pZCwgc3R4bmFtZSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo dHVwKSkKKwl7CisJCXRhYmxlX2Nsb3NlKHBnX3N0ZXh0LCBSb3dFeGNsdXNpdmVMb2NrKTsKKwkJ ZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCks CisJCQkJIGVycm1zZygiRXh0ZW5kZWQgU3RhdGlzdGljcyBPYmplY3QgXCIlc1wiLlwiJXNcIiBu b3QgZm91bmQuIiwKKwkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShuc3BvaWQpLCBzdHhuYW1lKSkp OworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJfQorCisJc3R4Zm9ybSA9IChGb3JtX3BnX3N0 YXRpc3RpY19leHQpIEdFVFNUUlVDVCh0dXApOworCWV4cGFuZF9zdHhraW5kKHR1cCwgJmVuYWJs ZWQpOworCW51bWF0dG51bXMgPSBzdHhmb3JtLT5zdHhrZXlzLmRpbTE7CisKKwkvKiBkZWNvZGUg ZXhwcmVzc2lvbiAoaWYgYW55KSAqLworCWV4cHJkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVEFU RVhUT0lELAorCQkJCQkJCQl0dXAsCisJCQkJCQkJCUFudW1fcGdfc3RhdGlzdGljX2V4dF9zdHhl eHBycywKKwkJCQkJCQkJJmlzbnVsbCk7CisKKwlpZiAoIWlzbnVsbCkKKwl7CisJCWNoYXIJICAg KnM7CisKKwkJcyA9IFRleHREYXR1bUdldENTdHJpbmcoZXhwcmRhdHVtKTsKKwkJZXhwcnMgPSAo TGlzdCAqKSBzdHJpbmdUb05vZGUocyk7CisJCXBmcmVlKHMpOworCisJCS8qCisJCQkqIFJ1biB0 aGUgZXhwcmVzc2lvbnMgdGhyb3VnaCBldmFsX2NvbnN0X2V4cHJlc3Npb25zLiBUaGlzIGlzIG5v dAorCQkJKiBqdXN0IGFuIG9wdGltaXphdGlvbiwgYnV0IGlzIG5lY2Vzc2FyeSwgYmVjYXVzZSB0 aGUgcGxhbm5lcgorCQkJKiB3aWxsIGJlIGNvbXBhcmluZyB0aGVtIHRvIHNpbWlsYXJseS1wcm9j ZXNzZWQgcXVhbCBjbGF1c2VzLCBhbmQKKwkJCSogbWF5IGZhaWwgdG8gZGV0ZWN0IHZhbGlkIG1h dGNoZXMgd2l0aG91dCB0aGlzLiAgV2UgbXVzdCBub3QgdXNlCisJCQkqIGNhbm9uaWNhbGl6ZV9x dWFsLCBob3dldmVyLCBzaW5jZSB0aGVzZSBhcmVuJ3QgcXVhbAorCQkJKiBleHByZXNzaW9ucy4K KwkJCSovCisJCWV4cHJzID0gKExpc3QgKikgZXZhbF9jb25zdF9leHByZXNzaW9ucyhOVUxMLCAo Tm9kZSAqKSBleHBycyk7CisKKwkJLyogTWF5IGFzIHdlbGwgZml4IG9wZnVuY2lkcyB0b28gKi8K KwkJZml4X29wZnVuY2lkcygoTm9kZSAqKSBleHBycyk7CisJfQorCW51bWV4cHJzID0gbGlzdF9s ZW5ndGgoZXhwcnMpOworCW51bWF0dHJzID0gbnVtYXR0bnVtcyArIG51bWV4cHJzOworCisJLyog bG9jayB0YWJsZSAqLworCXN0YXRzX2xvY2tfY2hlY2tfcHJpdmlsZWdlcyhzdHhmb3JtLT5zdHhy ZWxpZCk7CisKKwlpZiAoaGFzLm1jdikKKwl7CisJCWlmICghZW5hYmxlZC5tY3YpCisJCXsKKwkJ CWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksCisJCQkJCSBlcnJtc2coIk1DViBwYXJhbWV0ZXJzIFwiJXNcIiwgXCIlc1wiLCBc IiVzXCIsIGFuZCBcIiVzXCIgd2VyZSBhbGwgIgorCQkJCQkJCSJzcGVjaWZpZWQgZm9yIGV4dGVu ZGVkIHN0YXRpc3RpY3Mgb2JqZWN0IHRoYXQgZG9lcyBub3QgZXhwZWN0IE1DViAiLAorCQkJCQkJ CWV4dGFyZ2luZm9bTU9TVF9DT01NT05fVkFMU19BUkddLmFyZ25hbWUsCisJCQkJCQkJZXh0YXJn aW5mb1tNT1NUX0NPTU1PTl9WQUxfTlVMTFNfQVJHXS5hcmduYW1lLAorCQkJCQkJCWV4dGFyZ2lu Zm9bTU9TVF9DT01NT05fRlJFUVNfQVJHXS5hcmduYW1lLAorCQkJCQkJCWV4dGFyZ2luZm9bTU9T VF9DT01NT05fQkFTRV9GUkVRU19BUkddLmFyZ25hbWUpKSk7CisJCQloYXMubWN2ID0gZmFsc2U7 CisJCQlzdWNjZXNzID0gZmFsc2U7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJLyogVGhlIE1DViBh cmdzIG11c3QgYWxsIGJlIE5VTEwgKi8KKwkJaWYgKCFQR19BUkdJU05VTEwoTU9TVF9DT01NT05f VkFMU19BUkcpIHx8CisJCQkhUEdfQVJHSVNOVUxMKE1PU1RfQ09NTU9OX1ZBTF9OVUxMU19BUkcp IHx8CisJCQkhUEdfQVJHSVNOVUxMKE1PU1RfQ09NTU9OX0ZSRVFTX0FSRykgfHwKKwkJCSFQR19B UkdJU05VTEwoTU9TVF9DT01NT05fQkFTRV9GUkVRU19BUkcpKQorCQl7CisJCQllcmVwb3J0KFdB Uk5JTkcsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAor CQkJCQkgZXJybXNnKCJNQ1YgcGFyYW1ldGVycyBcIiVzXCIsIFwiJXNcIiwgXCIlc1wiLCBhbmQg XCIlc1wiIG11c3QgYmUgYWxsIHNwZWNpZmllZCBpZiBhbnkgYXJlIHNwZWNpZmllZCIsCisJCQkJ CQkJZXh0YXJnaW5mb1tNT1NUX0NPTU1PTl9WQUxTX0FSR10uYXJnbmFtZSwKKwkJCQkJCQlleHRh cmdpbmZvW01PU1RfQ09NTU9OX1ZBTF9OVUxMU19BUkddLmFyZ25hbWUsCisJCQkJCQkJZXh0YXJn aW5mb1tNT1NUX0NPTU1PTl9GUkVRU19BUkddLmFyZ25hbWUsCisJCQkJCQkJZXh0YXJnaW5mb1tN T1NUX0NPTU1PTl9CQVNFX0ZSRVFTX0FSR10uYXJnbmFtZSkpKTsKKwkJCXN1Y2Nlc3MgPSBmYWxz ZTsKKwkJfQorCX0KKworCWlmIChoYXMubmRpc3RpbmN0ICYmICFlbmFibGVkLm5kaXN0aW5jdCkK Kwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJQYXJhbWV0ZXJzIFwiJXNcIiB3YXMgc3BlY2lm aWVkIGZvciBleHRlbmRlZCBzdGF0aXN0aWNzIG9iamVjdCAiCisJCQkJCQkidGhhdCBkb2VzIG5v dCBleHBlY3QgXCIlc1wiIiwKKwkJCQkJCWV4dGFyZ2luZm9bTkRJU1RJTkNUX0FSR10uYXJnbmFt ZSwKKwkJCQkJCWV4dGFyZ2luZm9bTkRJU1RJTkNUX0FSR10uYXJnbmFtZSkpKTsKKwkJaGFzLm5k aXN0aW5jdCA9IGZhbHNlOworCQlzdWNjZXNzID0gZmFsc2U7CisJfQorCisJaWYgKGhhcy5kZXBl bmRlbmNpZXMgJiYgIWVuYWJsZWQuZGVwZW5kZW5jaWVzKQorCXsKKwkJZXJlcG9ydChXQVJOSU5H LAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBl cnJtc2coIlBhcmFtZXRlcnMgXCIlc1wiIHdhcyBzcGVjaWZpZWQgZm9yIGV4dGVuZGVkIHN0YXRp c3RpY3Mgb2JqZWN0ICIKKwkJCQkJCSJ0aGF0IGRvZXMgbm90IGV4cGVjdCBcIiVzXCIiLAorCQkJ CQkJZXh0YXJnaW5mb1tERVBFTkRFTkNJRVNfQVJHXS5hcmduYW1lLAorCQkJCQkJZXh0YXJnaW5m b1tERVBFTkRFTkNJRVNfQVJHXS5hcmduYW1lKSkpOworCQloYXMuZGVwZW5kZW5jaWVzID0gZmFs c2U7CisJCXN1Y2Nlc3MgPSBmYWxzZTsKKwl9CisKKwlpZiAoaGFzLmV4cHJlc3Npb25zICYmICFl bmFibGVkLmV4cHJlc3Npb25zKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coIlBhcmFtZXRl cnMgXCIlc1wiIHdhcyBzcGVjaWZpZWQgZm9yIGV4dGVuZGVkIHN0YXRpc3RpY3Mgb2JqZWN0ICIK KwkJCQkJCSJ0aGF0IGRvZXMgbm90IGV4cGVjdCBcIiVzXCIiLAorCQkJCQkJZXh0YXJnaW5mb1tE RVBFTkRFTkNJRVNfQVJHXS5hcmduYW1lLAorCQkJCQkJZXh0YXJnaW5mb1tERVBFTkRFTkNJRVNf QVJHXS5hcmduYW1lKSkpOworCQloYXMuZXhwcmVzc2lvbnMgPSBmYWxzZTsKKwkJc3VjY2VzcyA9 IGZhbHNlOworCX0KKworCS8qCisJICogRWl0aGVyIG9mIHRoZXNlIHN0YXRzaXN0aWMgdHlwZXMg cmVxdWlyZXMgdGhhdCB3ZSBzdXBwbHkKKwkgKiBzZW1pLWZpbGxlZC1vdXQgVmFjQXR0clN0YXRQ IGFycmF5LgorCSAqCisJICoKKwkgKiBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIHRoZSBleGlz dGluZyBsb29rdXBfdmFyX2F0dHJfc3RhdHMoKSBhbmQKKwkgKiBleGFtaW5lX2F0dHJpYnV0ZSgp IGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIHdpbGwgc2tpcCBhdHRyaWJ1dGVzIGZvcgorCSAqIHdo aWNoIGF0dHN0YXR0YXJnZXQgaXMgMCwgYW5kIHdlIG1heSBoYXZlIHN0YXRzIHRvIGltcG9ydCBm b3IgdGhvc2UKKwkgKiBhdHRyaWJ1dGVzLgorCSAqLworCWlmIChoYXMubWN2IHx8IGhhcy5leHBy ZXNzaW9ucykKKwl7CisJCWF0dHR5cGlkcyA9IHBhbGxvYzAobnVtYXR0cnMgKiBzaXplb2YoT2lk KSk7CisJCWF0dHR5cG1vZHMgPSBwYWxsb2MwKG51bWF0dHJzICogc2l6ZW9mKGludDMyKSk7CisJ CWF0dHR5cGNvbGxzID0gcGFsbG9jMChudW1hdHRycyAqIHNpemVvZihPaWQpKTsKKworCQlmb3Ig KGludCBpID0gMDsgaSA8IG51bWF0dG51bXM7IGkrKykKKwkJeworCQkJQXR0ck51bWJlcglhdHRu dW0gPSBzdHhmb3JtLT5zdHhrZXlzLnZhbHVlc1tpXTsKKworCQkJT2lkCQkJbHRfb3ByOworCQkJ T2lkCQkJZXFfb3ByOworCQkJY2hhcgkJdHlwZXR5cGU7CisKKwkJCS8qCisJCQkgKiBmZXRjaCBh dHRyaWJ1dGUgZW50cmllcyB0aGUgc2FtZSBhcyBhcmUgZG9uZSBmb3IgYXR0cmlidXRlCisJCQkg KiBzdGF0cworCQkJICovCisJCQlnZXRfYXR0cl9zdGF0X3R5cGUoc3R4Zm9ybS0+c3R4cmVsaWQs CisJCQkJCQkJICAgYXR0bnVtLAorCQkJCQkJCSAgICZhdHR0eXBpZHNbaV0sCisJCQkJCQkJICAg JmF0dHR5cG1vZHNbaV0sCisJCQkJCQkJICAgJnR5cGV0eXBlLAorCQkJCQkJCSAgICZhdHR0eXBj b2xsc1tpXSwKKwkJCQkJCQkgICAmbHRfb3ByLAorCQkJCQkJCSAgICZlcV9vcHIpOworCQl9CisK KwkJZm9yIChpbnQgaSA9IG51bWF0dG51bXM7IGkgPCBudW1hdHRyczsgaSsrKQorCQl7CisJCQlO b2RlCSAgICpleHByID0gbGlzdF9udGgoZXhwcnMsIGkgLSBudW1hdHRudW1zKTsKKworCQkJYXR0 dHlwaWRzW2ldID0gZXhwclR5cGUoZXhwcik7CisJCQlhdHR0eXBtb2RzW2ldID0gZXhwclR5cG1v ZChleHByKTsKKwkJCWF0dHR5cGNvbGxzW2ldID0gZXhwckNvbGxhdGlvbihleHByKTsKKworCQkJ LyoKKwkJCSAqIER1cGxpY2F0ZSBsb2dpYyBmcm9tIGdldF9hdHRyX3N0YXRfdHlwZQorCQkJICov CisKKwkJCS8qCisJCQkgKiBJZiBpdCdzIGEgbXVsdGlyYW5nZSwgc3RlcCBkb3duIHRvIHRoZSBy YW5nZSB0eXBlLCBhcyBpcyBkb25lCisJCQkgKiBieSBtdWx0aXJhbmdlX3R5cGFuYWx5emUoKS4K KwkJCSAqLworCQkJaWYgKHR5cGVfaXNfbXVsdGlyYW5nZShhdHR0eXBpZHNbaV0pKQorCQkJCWF0 dHR5cGlkc1tpXSA9IGdldF9tdWx0aXJhbmdlX3JhbmdlKGF0dHR5cGlkc1tpXSk7CisKKwkJCS8q CisJCQkgKiBTcGVjaWFsIGNhc2U6IGNvbGxhdGlvbiBmb3IgdHN2ZWN0b3IgaXMgREVGQVVMVF9D T0xMQVRJT05fT0lELgorCQkJICogU2VlIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoKS4KKwkJCSAq LworCQkJaWYgKGF0dHR5cGlkc1tpXSA9PSBUU1ZFQ1RPUk9JRCkKKwkJCQlhdHR0eXBjb2xsc1tp XSA9IERFRkFVTFRfQ09MTEFUSU9OX09JRDsKKworCQl9CisJfQorCisJLyogUHJpbWFyeSBLZXk6 IGNhbm5vdCBiZSBOVUxMIG9yIHJlcGxhY2VkLiAqLworCXZhbHVlc1tBbnVtX3BnX3N0YXRpc3Rp Y19leHRfZGF0YV9zdHhvaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oc3R4Zm9ybS0+b2lkKTsK Kwl2YWx1ZXNbQW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4ZGluaGVyaXQgLSAxXSA9IEJv b2xHZXREYXR1bShpbmhlcml0ZWQpOworCisJaWYgKGhhcy5uZGlzdGluY3QpCisJeworCQlEYXR1 bQkJCW5kaXN0aW5jdF9kYXR1bSA9IFBHX0dFVEFSR19EQVRVTShORElTVElOQ1RfQVJHKTsKKwkJ Ynl0ZWEJCSAgICpkYXRhID0gRGF0dW1HZXRCeXRlYVBQKG5kaXN0aW5jdF9kYXR1bSk7CisJCU1W TkRpc3RpbmN0CSAgICpuZGlzdGluY3QgPSBzdGF0ZXh0X25kaXN0aW5jdF9kZXNlcmlhbGl6ZShk YXRhKTsKKworCQlpZiAocGdfbmRpc3RpbmN0X3ZhbGlkYXRlX2l0ZW1zKG5kaXN0aW5jdCwgJnN0 eGZvcm0tPnN0eGtleXMsIG51bWV4cHJzLCBXQVJOSU5HKSkKKwkJeworCQkJdmFsdWVzW0FudW1f cGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRuZGlzdGluY3QgLSAxXSA9IG5kaXN0aW5jdF9kYXR1 bTsKKwkJCXJlcGxhY2VzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRuZGlzdGluY3Qg LSAxXSA9IHRydWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQludWxsc1tBbnVtX3BnX3N0YXRpc3Rp Y19leHRfZGF0YV9zdHhkbmRpc3RpbmN0IC0gMV0gPSB0cnVlOworCQkJc3VjY2VzcyA9IGZhbHNl OworCQl9CisKKwkJZnJlZV9wZ19uZGlzdGluY3QobmRpc3RpbmN0KTsKKwl9CisJZWxzZQorCQlu dWxsc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkbmRpc3RpbmN0IC0gMV0gPSB0cnVl OworCisJaWYgKGhhcy5kZXBlbmRlbmNpZXMpCisJeworCQlEYXR1bQkJCWRlcGVuZGVuY2llc19k YXR1bSA9IFBHX0dFVEFSR19EQVRVTShERVBFTkRFTkNJRVNfQVJHKTsKKwkJYnl0ZWEJCSAgICpk YXRhID0gRGF0dW1HZXRCeXRlYVBQKGRlcGVuZGVuY2llc19kYXR1bSk7CisJCU1WRGVwZW5kZW5j aWVzICpkZXBlbmRlbmNpZXMgPSBzdGF0ZXh0X2RlcGVuZGVuY2llc19kZXNlcmlhbGl6ZShkYXRh KTsKKworCQlpZiAocGdfZGVwZW5kZW5jaWVzX3ZhbGlkYXRlX2RlcHMoZGVwZW5kZW5jaWVzLCAm c3R4Zm9ybS0+c3R4a2V5cywgbnVtZXhwcnMsIFdBUk5JTkcpKQorCQl7CisJCQl2YWx1ZXNbQW51 bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4ZGRlcGVuZGVuY2llcyAtIDFdID0gZGVwZW5kZW5j aWVzX2RhdHVtOworCQkJcmVwbGFjZXNbQW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4ZGRl cGVuZGVuY2llcyAtIDFdID0gdHJ1ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCW51bGxzW0FudW1f cGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRkZXBlbmRlbmNpZXMgLSAxXSA9IHRydWU7CisJCQlz dWNjZXNzID0gZmFsc2U7CisJCX0KKworCQlmcmVlX3BnX2RlcGVuZGVuY2llcyhkZXBlbmRlbmNp ZXMpOworCX0KKwllbHNlCisJCW51bGxzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRk ZXBlbmRlbmNpZXMgLSAxXSA9IHRydWU7CisKKwlpZiAoaGFzLm1jdikKKwl7CisJCURhdHVtCQlk YXR1bTsKKwkJQXJyYXlUeXBlICAqbWN2X2FyciA9IFBHX0dFVEFSR19BUlJBWVRZUEVfUChNT1NU X0NPTU1PTl9WQUxTX0FSRyk7CisJCUFycmF5VHlwZSAgKm51bGxzX2FyciA9IFBHX0dFVEFSR19B UlJBWVRZUEVfUChNT1NUX0NPTU1PTl9WQUxfTlVMTFNfQVJHKTsKKwkJQXJyYXlUeXBlICAqZnJl cXNfYXJyID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKE1PU1RfQ09NTU9OX0ZSRVFTX0FSRyk7CisJ CUFycmF5VHlwZSAgKmJhc2VfZnJlcXNfYXJyID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKE1PU1Rf Q09NTU9OX0JBU0VfRlJFUVNfQVJHKTsKKwkJaW50CQkJbml0ZW1zOworCQlEYXR1bQkgICAqbWN2 X2VsZW1zOworCQlib29sCSAgICptY3ZfbnVsbHM7CisJCWludAkJCWNoZWNrX251bW1jdjsKKwor CQkvKgorCQkgKiBUaGUgbWN2X2FyciBpcyBhbiBhcnJheSBvZiBhcnJheXMgb2YgdGV4dCwgYW5k IHdlIHVzZSBpdCBhcyB0aGUKKwkJICogcmVmZXJlbmNlIGFycmF5IGZvciBjaGVja2luZyB0aGUg bGVuZ3RocyBvZiB0aGUgb3RoZXIgMyBhcnJheXMuCisJCSAqLworCQlpZiAoQVJSX05ESU0obWN2 X2FycikgIT0gMikKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygiUGFyYW1ldGVycyBc IiVzXCIgbXVzdCBiZSBhIHRleHQgYXJyYXkgb2YgMiBkaW1lbnNpb25zLiIsCisJCQkJCQkJZXh0 YXJnaW5mb1tNT1NUX0NPTU1PTl9WQUxTX0FSR10uYXJnbmFtZSkpKTsKKwkJCXJldHVybiAoRGF0 dW0pIDA7CisJCX0KKworCQluaXRlbXMgPSBBUlJfRElNUyhtY3ZfYXJyKVswXTsKKworCQkvKiBm aXhlZCBsZW5ndGggYXJyYXlzIHRoYXQgY2Fubm90IGNvbnRhaW4gTlVMTHMgKi8KKwkJaWYgKCFj aGVja19tY3ZsaXN0X2FycmF5KG51bGxzX2FyciwgTU9TVF9DT01NT05fVkFMX05VTExTX0FSRywK KwkJCQkJCQkJIDIsIG5pdGVtcykgfHwKKwkJCSFjaGVja19tY3ZsaXN0X2FycmF5KGZyZXFzX2Fy ciwgTU9TVF9DT01NT05fRlJFUVNfQVJHLAorCQkJCQkJCQkgMSwgbml0ZW1zKSB8fAorCQkJIWNo ZWNrX21jdmxpc3RfYXJyYXkoYmFzZV9mcmVxc19hcnIsIE1PU1RfQ09NTU9OX0JBU0VfRlJFUVNf QVJHLAorCQkJCQkJCQkgMSwgbml0ZW1zKSkKKwkJCXJldHVybiAoRGF0dW0pIDA7CisKKworCQlk ZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKG1jdl9hcnIsIFRFWFRPSUQsICZtY3ZfZWxlbXMsCisJ CQkJCQkJCSAgJm1jdl9udWxscywgJmNoZWNrX251bW1jdik7CisKKwkJQXNzZXJ0KGNoZWNrX251 bW1jdiA9PSAobml0ZW1zICogbnVtYXR0cnMpKTsKKworCQlkYXR1bSA9IGltcG9ydF9tY3ZsaXN0 KHR1cCwgV0FSTklORywgbnVtYXR0cnMsCisJCQkJCQkJICAgYXR0dHlwaWRzLCBhdHR0eXBtb2Rz LCBhdHR0eXBjb2xscywKKwkJCQkJCQkgICBuaXRlbXMsIG1jdl9lbGVtcywgbWN2X251bGxzLAor CQkJCQkJCSAgIChib29sICopIEFSUl9EQVRBX1BUUihudWxsc19hcnIpLAorCQkJCQkJCSAgIChm bG9hdDggKikgQVJSX0RBVEFfUFRSKGZyZXFzX2FyciksCisJCQkJCQkJICAgKGZsb2F0OCAqKSBB UlJfREFUQV9QVFIoYmFzZV9mcmVxc19hcnIpKTsKKworCQl2YWx1ZXNbQW51bV9wZ19zdGF0aXN0 aWNfZXh0X2RhdGFfc3R4ZG1jdiAtIDFdID0gZGF0dW07CisJCXJlcGxhY2VzW0FudW1fcGdfc3Rh dGlzdGljX2V4dF9kYXRhX3N0eGRtY3YgLSAxXSA9IHRydWU7CisJfQorCWVsc2UKKwkJbnVsbHNb QW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4ZG1jdiAtIDFdID0gdHJ1ZTsKKworCWlmICho YXMuZXhwcmVzc2lvbnMpCisJeworCQlEYXR1bQkJZGF0dW07CisJCVJlbGF0aW9uCXBnc2Q7CisK KwkJcGdzZCA9IHRhYmxlX29wZW4oU3RhdGlzdGljUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9j ayk7CisKKwkJZGF0dW0gPSBpbXBvcnRfZXhwcmVzc2lvbnMocGdzZCwgbnVtZXhwcnMsCisJCQkJ CQkJCSAgICZhdHR0eXBpZHNbbnVtYXR0bnVtc10sICZhdHR0eXBtb2RzW251bWF0dG51bXNdLAor CQkJCQkJCQkgICAmYXR0dHlwY29sbHNbbnVtYXR0bnVtc10sCisJCQkJCQkJCSAgIFBHX0dFVEFS R19BUlJBWVRZUEVfUChFWFBSRVNTSU9OU19BUkcpKTsKKworCQl0YWJsZV9jbG9zZShwZ3NkLCBS b3dFeGNsdXNpdmVMb2NrKTsKKworCQl2YWx1ZXNbQW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFf c3R4ZGV4cHIgLSAxXSA9IGRhdHVtOworCQlyZXBsYWNlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRf ZGF0YV9zdHhkZXhwciAtIDFdID0gdHJ1ZTsKKwl9CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3N0 YXRpc3RpY19leHRfZGF0YV9zdHhkZXhwciAtIDFdID0gdHJ1ZTsKKworCXVwc2VydF9wZ19zdGF0 aXN0aWNfZXh0X2RhdGEodmFsdWVzLCBudWxscywgcmVwbGFjZXMpOworCisJaGVhcF9mcmVldHVw bGUodHVwKTsKKwl0YWJsZV9jbG9zZShwZ19zdGV4dCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlp ZiAoYXR0dHlwaWRzICE9IE5VTEwpCisJCXBmcmVlKGF0dHR5cGlkcyk7CisJaWYgKGF0dHR5cG1v ZHMgIT0gTlVMTCkKKwkJcGZyZWUoYXR0dHlwbW9kcyk7CisJaWYgKGF0dHR5cGNvbGxzICE9IE5V TEwpCisJCXBmcmVlKGF0dHR5cGNvbGxzKTsKKwlyZXR1cm4gc3VjY2VzczsKK30KKworLyoKKyAq IENvbnNpc3RlbmN5IGNoZWNrcyB0byBlbnN1cmUgdGhhdCBvdGhlciBtY3ZsaXN0IGFycmF5cyBh cmUgaW4gYWxpZ25tZW50CisgKiB3aXRoIHRoZSBtY3YgYXJyYXkuCisgKi8KK3N0YXRpYyBib29s CitjaGVja19tY3ZsaXN0X2FycmF5KEFycmF5VHlwZSAqYXJyLCBpbnQgYXJnaW5kZXgsIGludCBy ZXF1aXJlZF9uZGltcywKKwkJCQkJaW50IG1jdl9sZW5ndGgpCit7CisJaWYgKEFSUl9ORElNKGFy cikgIT0gcmVxdWlyZWRfbmRpbXMpCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiUGFyYW1l dGVyIFwiJXNcIiBtdXN0IGJlIGFuIGFycmF5IG9mICVkIGRpbWVuc2lvbnMuIiwKKwkJCQkJCWV4 dGFyZ2luZm9bYXJnaW5kZXhdLmFyZ25hbWUsIHJlcXVpcmVkX25kaW1zKSkpOworCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJaWYgKGFycmF5X2NvbnRhaW5zX251bGxzKGFycikpCisJeworCQllcmVw b3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxV RSksCisJCQkJIGVycm1zZygiQXJyYXkgXCIlc1wiIGNhbm5vdCBjb250YWluIE5VTExzLiIsCisJ CQkJCQlleHRhcmdpbmZvW2FyZ2luZGV4XS5hcmduYW1lKSkpOworCQlyZXR1cm4gZmFsc2U7CisJ fQorCisJaWYgKEFSUl9ESU1TKGFycilbMF0gIT0gbWN2X2xlbmd0aCkKKwl7CisJCWVyZXBvcnQo V0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQkgZXJybXNnKCJQYXJhbWV0ZXJzIFwiJXNcIiBtdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVy IG9mIGVsZW1lbnRzIGFzIFwiJXNcIiIsCisJCQkJCQlleHRhcmdpbmZvW2FyZ2luZGV4XS5hcmdu YW1lLAorCQkJCQkJZXh0YXJnaW5mb1tNT1NUX0NPTU1PTl9WQUxTX0FSR10uYXJnbmFtZSkpKTsK KwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKgorICogQ3JlYXRl IHRoZSBzdHhkZXhwcnMgZGF0dW0gdXNpbmcgdGhlIHVzZXIgaW5wdXQgaW4gYW4gYXJyYXkgb2Yg YXJyYXkgb2YKKyAqIHRleHQsIHJlZmVyZW5jZWQgYWdhaW5zdCB0aGUgZGF0YXR5cGVzIGZvciB0 aGUgZXhwcmVzc2lvbnMuCisgKi8KK3N0YXRpYyBEYXR1bQoraW1wb3J0X2V4cHJlc3Npb25zKFJl bGF0aW9uIHBnc2QsIGludCBudW1leHBycywKKwkJCQkgICBPaWQgKmF0dHR5cGlkcywgaW50MzIg KmF0dHR5cG1vZHMsCisJCQkJICAgT2lkICphdHR0eXBjb2xscywgQXJyYXlUeXBlICpleHByc19h cnIpCit7CisJRGF0dW0JICAgKmV4cHJzX2VsZW1zOworCWJvb2wJICAgKmV4cHJzX251bGxzOwor CWludAkJCWNoZWNrX251bWV4cHJzOworCWludAkJCW9mZnNldCA9IDA7CisKKwlGbWdySW5mbwlh cnJheV9pbl9mbjsKKworCU9pZAkJCXBnc3R5cG9pZCA9IGdldF9yZWxfdHlwZV9pZChTdGF0aXN0 aWNSZWxhdGlvbklkKTsKKworCUFycmF5QnVpbGRTdGF0ZSAqYXN0YXRlID0gTlVMTDsKKworCisJ aWYgKEFSUl9ORElNKGV4cHJzX2FycikgIT0gMikKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNn KCJQYXJhbWV0ZXIgXCIlc1wiIG11c3QgYmUgYSB0ZXh0IGFycmF5IG9mIDIgZGltZW5zaW9ucy4i LAorCQkJCQkJZXh0YXJnaW5mb1tFWFBSRVNTSU9OU19BUkddLmFyZ25hbWUpKSk7CisJCXJldHVy biAoRGF0dW0pIDA7CisJfQorCisJaWYgKEFSUl9ESU1TKGV4cHJzX2FycilbMF0gIT0gbnVtZXhw cnMpCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiUGFyYW1ldGVyIFwiJXNcIiBtdXN0IGhh dmUgYW4gb3V0ZXIgZGltZW5zaW9uIG9mICVkIGVsZW1lbnRzLiIsCisJCQkJCQlleHRhcmdpbmZv W0VYUFJFU1NJT05TX0FSR10uYXJnbmFtZSwgbnVtZXhwcnMpKSk7CisJCXJldHVybiAoRGF0dW0p IDA7CisJfQorCWlmIChBUlJfRElNUyhleHByc19hcnIpWzFdICE9IE5VTV9BVFRSSUJVVEVfU1RB VFNfRUxFTVMpCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiUGFyYW1ldGVyIFwiJXNcIiBt dXN0IGhhdmUgYW4gaW5uZXIgZGltZW5zaW9uIG9mICVkIGVsZW1lbnRzLiIsCisJCQkJCQlleHRh cmdpbmZvW0VYUFJFU1NJT05TX0FSR10uYXJnbmFtZSwKKwkJCQkJCU5VTV9BVFRSSUJVVEVfU1RB VFNfRUxFTVMpKSk7CisJCXJldHVybiAoRGF0dW0pIDA7CisJfQorCisJZm1ncl9pbmZvKEZfQVJS QVlfSU4sICZhcnJheV9pbl9mbik7CisKKwlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKGV4cHJz X2FyciwgVEVYVE9JRCwgJmV4cHJzX2VsZW1zLAorCQkJCQkJCSAgJmV4cHJzX251bGxzLCAmY2hl Y2tfbnVtZXhwcnMpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1leHByczsgaSsrKQorCXsK KwkJT2lkCQkJdHlwaWQgPSBhdHR0eXBpZHNbaV07CisJCWludDMyCQl0eXBtb2QgPSBhdHR0eXBt b2RzW2ldOworCQlPaWQJCQlzdGFjb2xsID0gYXR0dHlwY29sbHNbaV07CisJCVR5cGVDYWNoZUVu dHJ5ICp0eXBjYWNoZTsKKworCQlPaWQJCQllbGVtdHlwaWQgPSBJbnZhbGlkT2lkOworCQlPaWQJ CQllbGVtX2VxX29wciA9IEludmFsaWRPaWQ7CisKKwkJYm9vbAkJb2s7CisKKwkJRGF0dW0JCXZh bHVlc1tOYXR0c19wZ19zdGF0aXN0aWNdOworCQlib29sCQludWxsc1tOYXR0c19wZ19zdGF0aXN0 aWNdOworCQlib29sCQlyZXBsYWNlc1tOYXR0c19wZ19zdGF0aXN0aWNdOworCisJCUhlYXBUdXBs ZQlwZ3N0dXA7CisJCURhdHVtCQlwZ3N0ZGF0OworCisJCS8qIGZpbmRzIHRoZSByaWdodCBvcGVy YXRvcnMgZXZlbiBpZiBhdHR0eXBpZCBpcyBhIGRvbWFpbiAqLworCQl0eXBjYWNoZSA9IGxvb2t1 cF90eXBlX2NhY2hlKHR5cGlkLCBUWVBFQ0FDSEVfTFRfT1BSIHwgVFlQRUNBQ0hFX0VRX09QUik7 CisKKwkJaW5pdF9lbXB0eV9zdGF0c190dXBsZShJbnZhbGlkT2lkLCBJbnZhbGlkQXR0ck51bWJl ciwgZmFsc2UsCisJCQkJCQkJICAgdmFsdWVzLCBudWxscywgcmVwbGFjZXMpOworCisJCWlmICgh ZXhwcnNfbnVsbHNbb2Zmc2V0ICsgTlVMTF9GUkFDX0VMRU1dKQorCQl7CisJCQlvayA9IHRleHRf dG9fZmxvYXQ0KGV4cHJzX2VsZW1zW29mZnNldCArIE5VTExfRlJBQ19FTEVNXSwKKwkJCQkJCQkJ JnZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19zdGFudWxsZnJhYyAtIDFdKTsKKworCQkJaWYgKCFv aykKKwkJCXsKKwkJCQljaGFyCSAgICpzID0gVGV4dERhdHVtR2V0Q1N0cmluZyhleHByc19lbGVt c1tvZmZzZXQgKyBOVUxMX0ZSQUNfRUxFTV0pOworCisJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkgZXJy bXNnKCJFeHByZXNzaW9uICVzIGVsZW1lbnQgXCIlc1wiIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVk IGlucHV0IHR5cGUuIiwKKwkJCQkJCQkJZXh0ZXhwcmFyZ2luZm9bTlVMTF9GUkFDX0VMRU1dLmFy Z25hbWUsIHMpKSk7CisJCQkJcGZyZWUocyk7CisJCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJCX0K KwkJfQorCisJCWlmICghZXhwcnNfbnVsbHNbb2Zmc2V0ICsgQVZHX1dJRFRIX0VMRU1dKQorCQl7 CisJCQlvayA9IHRleHRfdG9faW50NChleHByc19lbGVtc1tvZmZzZXQgKyBBVkdfV0lEVEhfRUxF TV0sCisJCQkJCQkJICAmdmFsdWVzW0FudW1fcGdfc3RhdGlzdGljX3N0YXdpZHRoIC0gMV0pOwor CisJCQlpZiAoIW9rKQorCQkJeworCQkJCWNoYXIJICAgKnMgPSBUZXh0RGF0dW1HZXRDU3RyaW5n KGV4cHJzX2VsZW1zW29mZnNldCArIE5VTExfRlJBQ19FTEVNXSk7CisKKwkJCQllcmVwb3J0KFdB Uk5JTkcsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQkJCSBlcnJtc2coIkV4cHJlc3Npb24gJXMgZWxlbWVudCBcIiVzXCIgZG9lcyBub3QgbWF0 Y2ggZXhwZWN0ZWQgaW5wdXQgdHlwZS4iLAorCQkJCQkJCQlleHRleHByYXJnaW5mb1tBVkdfV0lE VEhfRUxFTV0uYXJnbmFtZSwgcykpKTsKKwkJCQlwZnJlZShzKTsKKwkJCQlyZXR1cm4gKERhdHVt KSAwOworCQkJfQorCQl9CisKKwkJaWYgKCFleHByc19udWxsc1tvZmZzZXQgKyBOX0RJU1RJTkNU X0VMRU1dKQorCQl7CisJCQlvayA9IHRleHRfdG9fZmxvYXQ0KGV4cHJzX2VsZW1zW29mZnNldCAr IE5fRElTVElOQ1RfRUxFTV0sCisJCQkJCQkJCSZ2YWx1ZXNbQW51bV9wZ19zdGF0aXN0aWNfc3Rh ZGlzdGluY3QgLSAxXSk7CisKKwkJCWlmICghb2spCisJCQl7CisJCQkJY2hhcgkgICAqcyA9IFRl eHREYXR1bUdldENTdHJpbmcoZXhwcnNfZWxlbXNbb2Zmc2V0ICsgTlVMTF9GUkFDX0VMRU1dKTsK KworCQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygiRXhwcmVzc2lvbiAlcyBlbGVtZW50IFwi JXNcIiBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCBpbnB1dCB0eXBlLiIsCisJCQkJCQkJCWV4dGV4 cHJhcmdpbmZvW05fRElTVElOQ1RfRUxFTV0uYXJnbmFtZSwgcykpKTsKKwkJCQlwZnJlZShzKTsK KwkJCQlyZXR1cm4gKERhdHVtKSAwOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogVGhlIFNUQUtJ TkQgc3RhdGlzdGljcyBhcmUgdGhlIHNhbWUgYXMgdGhlIG9uZXMgZm91bmQgaW4gYXR0cmlidXRl CisJCSAqIHN0YXRzLiBIb3dldmVyLCB0aGVzZSBhcmUgYWxsIGRlcml2ZWQgZnJvbSB0ZXh0IGNv bHVtbnMsIHdoZXJlYXMKKwkJICogdGhlIG9uZXMgZGVyaXZlZCBmb3IgYXR0cmlidXRlIHN0YXRz IGFyZSBhIG1peCBvZiBkYXRhdHlwZXMuIFRoaXMKKwkJICogbGltaXRzIHRoZSBvcHBvcnR1bml0 aWVzIGZvciBjb2RlIHNoYXJpbmcgYmV0d2VlbiB0aGUgdHdvLgorCQkgKi8KKworCQkvKiBTVEFU SVNUSUNfS0lORF9NQ1YgKi8KKwkJaWYgKGV4cHJzX251bGxzW29mZnNldCArIE1PU1RfQ09NTU9O X1ZBTFNfRUxFTV0gIT0KKwkJCWV4cHJzX251bGxzW29mZnNldCArIE1PU1RfQ09NTU9OX0ZSRVFT X0VMRU1dKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJFeHByZXNzaW9uICVzIGFu ZCAlcyBtdXN0IGJvdGggYmUgTk9UIE5VTEwgb3IgYm90aCBOVUxMLiIsCisJCQkJCQkJZXh0ZXhw cmFyZ2luZm9bTU9TVF9DT01NT05fVkFMU19FTEVNXS5hcmduYW1lLAorCQkJCQkJCWV4dGV4cHJh cmdpbmZvW01PU1RfQ09NTU9OX0ZSRVFTX0VMRU1dLmFyZ25hbWUpKSk7CisJCQlyZXR1cm4gKERh dHVtKSAwOworCQl9CisKKwkJaWYgKCFleHByc19udWxsc1tvZmZzZXQgKyBNT1NUX0NPTU1PTl9W QUxTX0VMRU1dKQorCQl7CisJCQlEYXR1bQkJc3RhdmFsdWVzOworCQkJRGF0dW0JCXN0YW51bWJl cnM7CisKKwkJCXN0YXZhbHVlcyA9IHRleHRfdG9fc3RhdmFsdWVzKGV4dGV4cHJhcmdpbmZvW01P U1RfQ09NTU9OX1ZBTFNfRUxFTV0uYXJnbmFtZSwKKwkJCQkJCQkJCQkgICZhcnJheV9pbl9mbiwg ZXhwcnNfZWxlbXNbb2Zmc2V0ICsgTU9TVF9DT01NT05fVkFMU19FTEVNXSwKKwkJCQkJCQkJCQkg IHR5cGlkLCB0eXBtb2QsICZvayk7CisKKwkJCWlmICghb2spCisJCQkJcmV0dXJuIChEYXR1bSkg MDsKKworCQkJc3RhbnVtYmVycyA9IHRleHRfdG9fc3RhdmFsdWVzKGV4dGV4cHJhcmdpbmZvW01P U1RfQ09NTU9OX1ZBTFNfRUxFTV0uYXJnbmFtZSwKKwkJCQkJCQkJCQkgICAmYXJyYXlfaW5fZm4s IGV4cHJzX2VsZW1zW29mZnNldCArIE1PU1RfQ09NTU9OX0ZSRVFTX0VMRU1dLAorCQkJCQkJCQkJ CSAgIEZMT0FUNE9JRCwgLTEsICZvayk7CisKKwkJCWlmICghb2spCisJCQkJcmV0dXJuIChEYXR1 bSkgMDsKKworCQkJc2V0X3N0YXRzX3Nsb3QodmFsdWVzLCBudWxscywgcmVwbGFjZXMsCisJCQkJ CQkgICBTVEFUSVNUSUNfS0lORF9NQ1YsCisJCQkJCQkgICB0eXBjYWNoZS0+ZXFfb3ByLCBzdGFj b2xsLAorCQkJCQkJICAgc3RhbnVtYmVycywgZmFsc2UsIHN0YXZhbHVlcywgZmFsc2UpOworCQl9 CisKKwkJLyogU1RBVElTVElDX0tJTkRfSElTVE9HUkFNICovCisJCWlmICghZXhwcnNfbnVsbHNb b2Zmc2V0ICsgSElTVE9HUkFNX0JPVU5EU19FTEVNXSkKKwkJeworCQkJRGF0dW0JCXN0YXZhbHVl czsKKworCQkJc3RhdmFsdWVzID0gdGV4dF90b19zdGF2YWx1ZXMoZXh0ZXhwcmFyZ2luZm9bSElT VE9HUkFNX0JPVU5EU19FTEVNXS5hcmduYW1lLAorCQkJCQkJCQkJCSAgJmFycmF5X2luX2ZuLCBl eHByc19lbGVtc1tvZmZzZXQgKyBISVNUT0dSQU1fQk9VTkRTX0VMRU1dLAorCQkJCQkJCQkJCSAg dHlwaWQsIHR5cG1vZCwgJm9rKTsKKworCQkJaWYgKCFvaykKKwkJCQlyZXR1cm4gKERhdHVtKSAw OworCisJCQlzZXRfc3RhdHNfc2xvdCh2YWx1ZXMsIG51bGxzLCByZXBsYWNlcywKKwkJCQkJCSAg IFNUQVRJU1RJQ19LSU5EX0hJU1RPR1JBTSwKKwkJCQkJCSAgIHR5cGNhY2hlLT5sdF9vcHIsIHN0 YWNvbGwsCisJCQkJCQkgICAwLCB0cnVlLCBzdGF2YWx1ZXMsIGZhbHNlKTsKKwkJfQorCisJCS8q IFNUQVRJU1RJQ19LSU5EX0NPUlJFTEFUSU9OICovCisJCWlmICghZXhwcnNfbnVsbHNbb2Zmc2V0 ICsgQ09SUkVMQVRJT05fRUxFTV0pCisJCXsKKwkJCURhdHVtCQljb3JyW10gPSB7KERhdHVtKSAw fTsKKwkJCUFycmF5VHlwZSAgKmFycnk7CisJCQlEYXR1bQkJc3RhbnVtYmVyczsKKworCQkJb2sg PSB0ZXh0X3RvX2Zsb2F0NChleHByc19lbGVtc1tvZmZzZXQgKyBDT1JSRUxBVElPTl9FTEVNXSwg JmNvcnJbMF0pOworCisJCQlpZiAoIW9rKQorCQkJeworCQkJCWNoYXIJICAgKnMgPSBUZXh0RGF0 dW1HZXRDU3RyaW5nKGV4cHJzX2VsZW1zW29mZnNldCArIENPUlJFTEFUSU9OX0VMRU1dKTsKKwor CQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygiRXhwcmVzc2lvbiAlcyBlbGVtZW50IFwiJXNc IiBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCBpbnB1dCB0eXBlLiIsCisJCQkJCQkJCWV4dGV4cHJh cmdpbmZvW0NPUlJFTEFUSU9OX0VMRU1dLmFyZ25hbWUsIHMpKSk7CisJCQkJcmV0dXJuIChEYXR1 bSkgMDsKKwkJCX0KKworCQkJYXJyeSA9IGNvbnN0cnVjdF9hcnJheV9idWlsdGluKGNvcnIsIDEs IEZMT0FUNE9JRCk7CisKKwkJCXN0YW51bWJlcnMgPSBQb2ludGVyR2V0RGF0dW0oYXJyeSk7CisK KwkJCXNldF9zdGF0c19zbG90KHZhbHVlcywgbnVsbHMsIHJlcGxhY2VzLAorCQkJCQkJICAgU1RB VElTVElDX0tJTkRfQ09SUkVMQVRJT04sCisJCQkJCQkgICB0eXBjYWNoZS0+bHRfb3ByLCBzdGFj b2xsLAorCQkJCQkJICAgc3RhbnVtYmVycywgZmFsc2UsIDAsIHRydWUpOworCQl9CisKKwkJLyog U1RBVElTVElDX0tJTkRfTUNFTEVNICovCisJCWlmIChleHByc19udWxsc1tvZmZzZXQgKyBNT1NU X0NPTU1PTl9FTEVNU19FTEVNXSAhPQorCQkJZXhwcnNfbnVsbHNbb2Zmc2V0ICsgTU9TVF9DT01N T05fRUxFTV9GUkVRU19FTEVNXSkKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygiRXhw cmVzc2lvbiAlcyBhbmQgJXMgbXVzdCBib3RoIGJlIE5PVCBOVUxMIG9yIGJvdGggTlVMTC4iLAor CQkJCQkJCWV4dGV4cHJhcmdpbmZvW01PU1RfQ09NTU9OX0VMRU1TX0VMRU1dLmFyZ25hbWUsCisJ CQkJCQkJZXh0ZXhwcmFyZ2luZm9bTU9TVF9DT01NT05fRUxFTV9GUkVRU19FTEVNXS5hcmduYW1l KSkpOworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQorCisJCS8qCisJCSAqIFdlIG9ubHkgbmVl ZCB0byBmZXRjaCBlbGVtZW50IHR5cGUgYW5kIGVxIG9wZXJhdG9yIGlmIHdlIGhhdmUgYQorCQkg KiBzdGF0IG9mIHR5cGUgTUNFTEVNIG9yIERFQ0hJU1QuCisJCSAqLworCQlpZiAoIWV4cHJzX251 bGxzW29mZnNldCArIE1PU1RfQ09NTU9OX0VMRU1TX0VMRU1dIHx8CisJCQkhZXhwcnNfbnVsbHNb b2Zmc2V0ICsgRUxFTV9DT1VOVF9ISVNUT0dSQU1fRUxFTV0pCisJCXsKKwkJCWlmICghZ2V0X2Vs ZW1fc3RhdF90eXBlKHR5cGlkLCB0eXBjYWNoZS0+dHlwdHlwZSwKKwkJCQkJCQkJCSZlbGVtdHlw aWQsICZlbGVtX2VxX29wcikpCisJCQl7CisJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkgKGVycm1zZygi dW5hYmxlIHRvIGRldGVybWluZSBlbGVtZW50IHR5cGUgb2YgZXhwcmVzc2lvbiIpKSkpOworCQkJ CXJldHVybiAoRGF0dW0pIDA7CisJCQl9CisJCX0KKworCQlpZiAoIWV4cHJzX251bGxzW29mZnNl dCArIE1PU1RfQ09NTU9OX0VMRU1TX0VMRU1dKQorCQl7CisJCQlEYXR1bQkJc3RhdmFsdWVzOwor CQkJRGF0dW0JCXN0YW51bWJlcnM7CisKKwkJCXN0YXZhbHVlcyA9IHRleHRfdG9fc3RhdmFsdWVz KGV4dGV4cHJhcmdpbmZvW01PU1RfQ09NTU9OX0VMRU1TX0VMRU1dLmFyZ25hbWUsCisJCQkJCQkJ CQkJICAmYXJyYXlfaW5fZm4sCisJCQkJCQkJCQkJICBleHByc19lbGVtc1tvZmZzZXQgKyBNT1NU X0NPTU1PTl9FTEVNU19FTEVNXSwKKwkJCQkJCQkJCQkgIGVsZW10eXBpZCwgdHlwbW9kLCAmb2sp OworCisJCQlpZiAoIW9rKQorCQkJCXJldHVybiAoRGF0dW0pIDA7CisKKwkJCXN0YW51bWJlcnMg PSB0ZXh0X3RvX3N0YXZhbHVlcyhleHRleHByYXJnaW5mb1tNT1NUX0NPTU1PTl9FTEVNX0ZSRVFT X0VMRU1dLmFyZ25hbWUsCisJCQkJCQkJCQkJICAgJmFycmF5X2luX2ZuLAorCQkJCQkJCQkJCSAg IGV4cHJzX2VsZW1zW29mZnNldCArIE1PU1RfQ09NTU9OX0VMRU1fRlJFUVNfRUxFTV0sCisJCQkJ CQkJCQkJICAgRkxPQVQ0T0lELCAtMSwgJm9rKTsKKworCQkJaWYgKCFvaykKKwkJCQlyZXR1cm4g KERhdHVtKSAwOworCisJCQlzZXRfc3RhdHNfc2xvdCh2YWx1ZXMsIG51bGxzLCByZXBsYWNlcywK KwkJCQkJCSAgIFNUQVRJU1RJQ19LSU5EX01DRUxFTSwKKwkJCQkJCSAgIGVsZW1fZXFfb3ByLCBz dGFjb2xsLAorCQkJCQkJICAgc3RhbnVtYmVycywgZmFsc2UsIHN0YXZhbHVlcywgZmFsc2UpOwor CQl9CisKKwkJaWYgKCFleHByc19udWxsc1tvZmZzZXQgKyBFTEVNX0NPVU5UX0hJU1RPR1JBTV9F TEVNXSkKKwkJeworCQkJRGF0dW0JCXN0YW51bWJlcnM7CisKKwkJCXN0YW51bWJlcnMgPSB0ZXh0 X3RvX3N0YXZhbHVlcyhleHRleHByYXJnaW5mb1tFTEVNX0NPVU5UX0hJU1RPR1JBTV9FTEVNXS5h cmduYW1lLAorCQkJCQkJCQkJCSAgICZhcnJheV9pbl9mbiwKKwkJCQkJCQkJCQkgICBleHByc19l bGVtc1tvZmZzZXQgKyBFTEVNX0NPVU5UX0hJU1RPR1JBTV9FTEVNXSwKKwkJCQkJCQkJCQkgICBG TE9BVDRPSUQsIC0xLCAmb2spOworCisJCQlpZiAoIW9rKQorCQkJCXJldHVybiAoRGF0dW0pIDA7 CisKKwkJCXNldF9zdGF0c19zbG90KHZhbHVlcywgbnVsbHMsIHJlcGxhY2VzLCBTVEFUSVNUSUNf S0lORF9ERUNISVNULAorCQkJCQkJICAgZWxlbV9lcV9vcHIsIHN0YWNvbGwsCisJCQkJCQkgICBz dGFudW1iZXJzLCBmYWxzZSwgMCwgdHJ1ZSk7CisJCX0KKworCQkvKgorCQkgKiBDdXJyZW50bHkg dGhlcmUgYXJlIG5vIGV4dGVuZGVkIHN0YXRzIGV4cG9ydHMgb2YgdGhlIHN0YXRpc3RpYworCQkg KiBraW5kcyBTVEFUSVNUSUNfS0lORF9CT1VORFNfSElTVE9HUkFNIG9yCisJCSAqIFNUQVRJU1RJ Q19LSU5EX1JBTkdFX0xFTkdUSF9ISVNUT0dSQU0gc28gdGhlc2UgY2Fubm90IGJlIGltcG9ydGVk LgorCQkgKiBUaGVzZSBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KKwkJICovCisKKwkJcGdz dHVwID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IocGdzZCksIHZhbHVlcywgbnVs bHMpOworCQlwZ3N0ZGF0ID0gaGVhcF9jb3B5X3R1cGxlX2FzX2RhdHVtKHBnc3R1cCwgUmVsYXRp b25HZXREZXNjcihwZ3NkKSk7CisJCWFzdGF0ZSA9IGFjY3VtQXJyYXlSZXN1bHQoYXN0YXRlLCBw Z3N0ZGF0LCBmYWxzZSwgcGdzdHlwb2lkLAorCQkJCQkJCQkgIEN1cnJlbnRNZW1vcnlDb250ZXh0 KTsKKworCQlvZmZzZXQgKz0gTlVNX0FUVFJJQlVURV9TVEFUU19FTEVNUzsKKwl9CisKKwlwZnJl ZShleHByc19lbGVtcyk7CisJcGZyZWUoZXhwcnNfbnVsbHMpOworCisJcmV0dXJuIG1ha2VBcnJh eVJlc3VsdChhc3RhdGUsIEN1cnJlbnRNZW1vcnlDb250ZXh0KTsKK30KKworc3RhdGljIGJvb2wK K3RleHRfdG9fZmxvYXQ0KERhdHVtIGlucHV0LCBEYXR1bSAqb3V0cHV0KQoreworCUVycm9yU2F2 ZUNvbnRleHQgZXNjb250ZXh0ID0ge1RfRXJyb3JTYXZlQ29udGV4dH07CisKKwljaGFyCSAgICpz OworCWJvb2wJCW9rOworCisJcyA9IFRleHREYXR1bUdldENTdHJpbmcoaW5wdXQpOworCW9rID0g RGlyZWN0SW5wdXRGdW5jdGlvbkNhbGxTYWZlKGZsb2F0NGluLCBzLCBJbnZhbGlkT2lkLCAtMSwK KwkJCQkJCQkJCSAoTm9kZSAqKSAmZXNjb250ZXh0LCBvdXRwdXQpOworCisJcGZyZWUocyk7CisJ cmV0dXJuIG9rOworfQorCisKK3N0YXRpYyBib29sCit0ZXh0X3RvX2ludDQoRGF0dW0gaW5wdXQs IERhdHVtICpvdXRwdXQpCit7CisJRXJyb3JTYXZlQ29udGV4dCBlc2NvbnRleHQgPSB7VF9FcnJv clNhdmVDb250ZXh0fTsKKworCWNoYXIJICAgKnM7CisJYm9vbAkJb2s7CisKKwlzID0gVGV4dERh dHVtR2V0Q1N0cmluZyhpbnB1dCk7CisJb2sgPSBEaXJlY3RJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUo aW50NGluLCBzLCBJbnZhbGlkT2lkLCAtMSwKKwkJCQkJCQkJCSAoTm9kZSAqKSAmZXNjb250ZXh0 LCBvdXRwdXQpOworCisJcGZyZWUocyk7CisJcmV0dXJuIG9rOworfQorCitzdGF0aWMgYm9vbAor ZGVsZXRlX3BnX3N0YXRpc3RpY19leHRfZGF0YShPaWQgc3R4b2lkLCBib29sIGluaGVyaXRlZCkK K3sKKwlSZWxhdGlvbglzZWQgPSB0YWJsZV9vcGVuKFN0YXRpc3RpY0V4dERhdGFSZWxhdGlvbklk LCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlIZWFwVHVwbGUJb2xkdHVwOworCWJvb2wJCXJlc3VsdCA9 IGZhbHNlOworCisJLyogSXMgdGhlcmUgYWxyZWFkeSBhIHBnX3N0YXRpc3RpYyB0dXBsZSBmb3Ig dGhpcyBhdHRyaWJ1dGU/ICovCisJb2xkdHVwID0gU2VhcmNoU3lzQ2FjaGUyKFNUQVRFWFREQVRB U1RYT0lELAorCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHN0eG9pZCksCisJCQkJCQkJIEJvb2xH ZXREYXR1bShpbmhlcml0ZWQpKTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKG9sZHR1cCkpCisJ eworCQlDYXRhbG9nVHVwbGVEZWxldGUoc2VkLCAmb2xkdHVwLT50X3NlbGYpOworCQlSZWxlYXNl U3lzQ2FjaGUob2xkdHVwKTsKKwkJcmVzdWx0ID0gdHJ1ZTsKKwl9CisKKwl0YWJsZV9jbG9zZShz ZWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwor CXJldHVybiByZXN1bHQ7Cit9CisKK0RhdHVtCitwZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJTE9DQUxfRkNJTkZPKHBvc2l0aW9uYWxfZmNpbmZvLCBOVU1f RVhURU5ERURfU1RBVFNfQVJHUyk7CisJYm9vbAkJcmVzdWx0ID0gdHJ1ZTsKKworCUluaXRGdW5j dGlvbkNhbGxJbmZvRGF0YSgqcG9zaXRpb25hbF9mY2luZm8sIE5VTEwsIE5VTV9FWFRFTkRFRF9T VEFUU19BUkdTLAorCQkJCQkJCSBJbnZhbGlkT2lkLCBOVUxMLCBOVUxMKTsKKworCWlmICghc3Rh dHNfZmlsbF9mY2luZm9fZnJvbV9hcmdfcGFpcnMoZmNpbmZvLCBwb3NpdGlvbmFsX2ZjaW5mbywg ZXh0YXJnaW5mbykpCisJCXJlc3VsdCA9IGZhbHNlOworCisJaWYgKCFleHRlbmRlZF9zdGF0aXN0 aWNzX3VwZGF0ZShwb3NpdGlvbmFsX2ZjaW5mbykpCisJCXJlc3VsdCA9IGZhbHNlOworCisJUEdf UkVUVVJOX0JPT0wocmVzdWx0KTsKK30KKworLyoKKyAqIERlbGV0ZSBzdGF0aXN0aWNzIGZvciB0 aGUgZ2l2ZW4gc3RhdGlzdGljcyBvYmplY3QuCisgKi8KK0RhdHVtCitwZ19jbGVhcl9leHRlbmRl ZF9zdGF0cyhQR19GVU5DVElPTl9BUkdTKQoreworCWNoYXIJICAgKm5zcG5hbWU7CisJT2lkCQkJ bnNwb2lkOworCWNoYXIJICAgKnN0eG5hbWU7CisJYm9vbAkJaW5oZXJpdGVkOworCVJlbGF0aW9u CXBnX3N0ZXh0OworCUhlYXBUdXBsZQl0dXA7CisKKwlGb3JtX3BnX3N0YXRpc3RpY19leHQgc3R4 Zm9ybTsKKworCXN0YXRzX2NoZWNrX3JlcXVpcmVkX2FyZyhmY2luZm8sIGV4dGFyZ2luZm8sIFNU QVRTQ0hFTUFfQVJHKTsKKwluc3BuYW1lID0gVGV4dERhdHVtR2V0Q1N0cmluZyhQR19HRVRBUkdf REFUVU0oU1RBVFNDSEVNQV9BUkcpKTsKKwlzdGF0c19jaGVja19yZXF1aXJlZF9hcmcoZmNpbmZv LCBleHRhcmdpbmZvLCBTVEFUTkFNRV9BUkcpOworCXN0eG5hbWUgPSBUZXh0RGF0dW1HZXRDU3Ry aW5nKFBHX0dFVEFSR19EQVRVTShTVEFUTkFNRV9BUkcpKTsKKwlzdGF0c19jaGVja19yZXF1aXJl ZF9hcmcoZmNpbmZvLCBleHRhcmdpbmZvLCBJTkhFUklURURfQVJHKTsKKwlpbmhlcml0ZWQgPSBQ R19HRVRBUkdfTkFNRShJTkhFUklURURfQVJHKTsKKworCW5zcG9pZCA9IGdldF9uYW1lc3BhY2Vf b2lkKG5zcG5hbWUsIHRydWUpOworCWlmIChuc3BvaWQgPT0gSW52YWxpZE9pZCkKKwl7CisJCWVy ZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAor CQkJCSBlcnJtc2coIk5hbWVzcGFjZSBcIiVzXCIgbm90IGZvdW5kLiIsIHN0eG5hbWUpKSk7CisJ CVBHX1JFVFVSTl9WT0lEKCk7CisJfQorCisJaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCXsK KwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInJlY292ZXJ5IGlzIGluIHByb2dyZXNz IiksCisJCQkJIGVycmhpbnQoIlN0YXRpc3RpY3MgY2Fubm90IGJlIG1vZGlmaWVkIGR1cmluZyBy ZWNvdmVyeS4iKSkpOworCQlQR19SRVRVUk5fVk9JRCgpOworCX0KKworCXBnX3N0ZXh0ID0gdGFi bGVfb3BlbihTdGF0aXN0aWNFeHRSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAg PSBnZXRfcGdfc3RhdGlzdGljX2V4dChwZ19zdGV4dCwgbnNwb2lkLCBzdHhuYW1lKTsKKworCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCXsKKwkJdGFibGVfY2xvc2UocGdfc3RleHQsIFJv d0V4Y2x1c2l2ZUxvY2spOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygiRXh0ZW5kZWQgU3RhdGlzdGljcyBPYmpl Y3QgXCIlc1wiLlwiJXNcIiBub3QgZm91bmQuIiwKKwkJCQkJCW5zcG5hbWUsIHN0eG5hbWUpKSk7 CisJCVBHX1JFVFVSTl9WT0lEKCk7CisJfQorCisJc3R4Zm9ybSA9IChGb3JtX3BnX3N0YXRpc3Rp Y19leHQpIEdFVFNUUlVDVCh0dXApOworCisJc3RhdHNfbG9ja19jaGVja19wcml2aWxlZ2VzKHN0 eGZvcm0tPnN0eHJlbGlkKTsKKworCWRlbGV0ZV9wZ19zdGF0aXN0aWNfZXh0X2RhdGEoc3R4Zm9y bS0+b2lkLCBpbmhlcml0ZWQpOworCWhlYXBfZnJlZXR1cGxlKHR1cCk7CisJdGFibGVfY2xvc2Uo cGdfc3RleHQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2LmMgYi9zcmMvYmFja2VuZC9zdGF0 aXN0aWNzL21jdi5jCmluZGV4IGY1OWZiODIxNTQzLi43MDk0MTkyYzQ4YSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tY3YuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNz L21jdi5jCkBAIC0yMTczLDMgKzIxNzMsMTQ3IEBAIG1jdl9jbGF1c2Vfc2VsZWN0aXZpdHlfb3Io UGxhbm5lckluZm8gKnJvb3QsIFN0YXRpc3RpY0V4dEluZm8gKnN0YXQsCiAKIAlyZXR1cm4gczsK IH0KKworLyoKKyAgKiBUaGUgTUNWIGlzIGFuIGFycmF5IG9mIHJlY29yZHMsIGJ1dCB0aGlzIGlz IGV4cGVjdGVkIGFzIDQgc2VwYXJhdGUgYXJyYXlzLgorICAqIEl0IGlzIG5vdCBwb3NzaWJsZSB0 byBoYXZlIGEgZ2VuZXJpYyBpbnB1dCBmdW5jdGlvbiBmb3IgcGdfbWN2X2xpc3QKKyAgKiBiZWNh dXNlIHRoZSBtb3N0X2NvbW1vbl92YWx1ZXMgaXMgYSBjb21wb3NpdGUgdHlwZSB3aXRoIGVsZW1l bnQgdHlwZXMKKyAgKiBkZWZpbmVkIGJ5IHRoZSBzcGVjaWZpYyBzdGF0aXN0aWNzIG9iamVjdC4K KyAgKi8KK0RhdHVtCitpbXBvcnRfbWN2bGlzdChIZWFwVHVwbGUgdHVwLCBpbnQgZWxldmVsLCBp bnQgbnVtYXR0cnMsIE9pZCAqYXR0dHlwaWRzLAorCQkJICAgaW50MzIgKmF0dHR5cG1vZHMsIE9p ZCAqYXR0dHlwY29sbHMsIGludCBuaXRlbXMsCisJCQkgICBEYXR1bSAqbWN2X2VsZW1zLCBib29s ICptY3ZfbnVsbHMsCisJCQkgICBib29sICptY3ZfZWxlbV9udWxscywgZmxvYXQ4ICpmcmVxcywg ZmxvYXQ4ICpiYXNlX2ZyZXFzKQoreworCU1DVkxpc3QgICAgKm1jdmxpc3Q7CisJYnl0ZWEJICAg KmJ5dGVzOworCisJSGVhcFR1cGxlICAqdmF0dXBsZXM7CisJVmFjQXR0clN0YXRzICoqdmFzdGF0 czsKKworCS8qCisJICogQWxsb2NhdGUgdGhlIE1DViBsaXN0IHN0cnVjdHVyZSwgc2V0IHRoZSBn bG9iYWwgcGFyYW1ldGVycy4KKwkgKi8KKwltY3ZsaXN0ID0gKE1DVkxpc3QgKikgcGFsbG9jMChv ZmZzZXRvZihNQ1ZMaXN0LCBpdGVtcykgKworCQkJCQkJCQkgIChzaXplb2YoTUNWSXRlbSkgKiBu aXRlbXMpKTsKKworCW1jdmxpc3QtPm1hZ2ljID0gU1RBVFNfTUNWX01BR0lDOworCW1jdmxpc3Qt PnR5cGUgPSBTVEFUU19NQ1ZfVFlQRV9CQVNJQzsKKwltY3ZsaXN0LT5uZGltZW5zaW9ucyA9IG51 bWF0dHJzOworCW1jdmxpc3QtPm5pdGVtcyA9IG5pdGVtczsKKworCS8qIFNldCB0aGUgdmFsdWVz IGZvciB0aGUgMS1EIGFycmF5cyBhbmQgYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSAyLUQgYXJyYXlz ICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKKwl7CisJCU1DVkl0ZW0gICAg Kml0ZW0gPSAmbWN2bGlzdC0+aXRlbXNbaV07CisKKwkJaXRlbS0+ZnJlcXVlbmN5ID0gZnJlcXNb aV07CisJCWl0ZW0tPmJhc2VfZnJlcXVlbmN5ID0gYmFzZV9mcmVxc1tpXTsKKwkJaXRlbS0+dmFs dWVzID0gKERhdHVtICopIHBhbGxvYzAoc2l6ZW9mKERhdHVtKSAqIG51bWF0dHJzKTsKKwkJaXRl bS0+aXNudWxsID0gKGJvb2wgKikgcGFsbG9jMChzaXplb2YoYm9vbCkgKiBudW1hdHRycyk7CisJ fQorCisJLyogV2FsayB0aHJvdWdoIGVhY2ggZGltZW5zaW9uICovCisJZm9yIChpbnQgaiA9IDA7 IGogPCBudW1hdHRyczsgaisrKQorCXsKKwkJRm1nckluZm8JZmluZm87CisJCU9pZAkJCWlvcGFy YW07CisJCU9pZAkJCWluZnVuYzsKKwkJaW50CQkJaW5kZXggPSBqOworCisJCWdldFR5cGVJbnB1 dEluZm8oYXR0dHlwaWRzW2pdLCAmaW5mdW5jLCAmaW9wYXJhbSk7CisJCWZtZ3JfaW5mbyhpbmZ1 bmMsICZmaW5mbyk7CisKKwkJLyogc3RvcmUgaW5mbyBhYm91dCBkYXRhIHR5cGUgT0lEcyAqLwor CQltY3ZsaXN0LT50eXBlc1tqXSA9IGF0dHR5cGlkc1tqXTsKKworCQlmb3IgKGludCBpID0gMDsg aSA8IG5pdGVtczsgaSsrKQorCQl7CisJCQlNQ1ZJdGVtICAgICppdGVtID0gJm1jdmxpc3QtPml0 ZW1zW2ldOworCisJCQkvKiBUaGVzZSBzaG91bGQgYmUgaW4gYWdyZWVtZW50LCBidXQganVzdCB0 byBiZSBzYWZlIGNoZWNrIGJvdGggKi8KKwkJCWlmIChtY3ZfZWxlbV9udWxsc1tpbmRleF0gfHwg bWN2X251bGxzW2luZGV4XSkKKwkJCXsKKwkJCQlpdGVtLT52YWx1ZXNbal0gPSAoRGF0dW0pIDA7 CisJCQkJaXRlbS0+aXNudWxsW2pdID0gdHJ1ZTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlj aGFyCSAgICpzID0gVGV4dERhdHVtR2V0Q1N0cmluZyhtY3ZfZWxlbXNbaW5kZXhdKTsKKwkJCQlF cnJvclNhdmVDb250ZXh0IGVzY29udGV4dCA9IHtUX0Vycm9yU2F2ZUNvbnRleHR9OworCisJCQkJ aWYgKCFJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoJmZpbmZvLCBzLCBpb3BhcmFtLCBhdHR0eXBtb2Rz W2pdLAorCQkJCQkJCQkJCSAgIChmbU5vZGVQdHIpICZlc2NvbnRleHQsICZpdGVtLT52YWx1ZXNb al0pKQorCQkJCXsKKwkJCQkJZXJlcG9ydChlbGV2ZWwsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkJIGVycm1zZygiTUNWIGVsZW1lbWVu dCBcIiVzXCIgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgaW5wdXQgdHlwZS4iLCBzKSkpOworCQkJ CQlyZXR1cm4gKERhdHVtKSAwOworCQkJCX0KKworCQkJCXBmcmVlKHMpOworCQkJfQorCisJCQlp bmRleCArPSBudW1hdHRyczsKKwkJfQorCX0KKworCS8qCisJICogVGhlIGZ1bmN0aW9uIHN0YXRl eHRfbWN2X3NlcmlhbGl6ZSgpIHJlcXVpcmVzIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvCisJICog VmFjQXR0clN0YXRzIHJlY29yZHMsIGJ1dCBvbmx5IGEgZmV3IGZpZWxkcyB3aXRoaW4gdGhvc2Ug cmVjb3JkcyBoYXZlCisJICogdG8gYmUgZmlsbGVkIG91dC4KKwkgKi8KKwl2YXN0YXRzID0gKFZh Y0F0dHJTdGF0cyAqKikgcGFsbG9jMChudW1hdHRycyAqIHNpemVvZihWYWNBdHRyU3RhdHMpKTsK Kwl2YXR1cGxlcyA9IChIZWFwVHVwbGUgKikgcGFsbG9jMChudW1hdHRycyAqIHNpemVvZihIZWFw VHVwbGUpKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtYXR0cnM7IGkrKykKKwl7CisJCU9p ZAkJCXR5cGlkID0gYXR0dHlwaWRzW2ldOworCQlIZWFwVHVwbGUJdHlwdHVwbGU7CisKKwkJdHlw dHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0odHlw aWQpKTsKKworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHlwdHVwbGUpKQorCQkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHR5cGUgJXUiLCB0eXBpZCk7CisKKwkJdmF0dXBs ZXNbaV0gPSB0eXB0dXBsZTsKKworCQl2YXN0YXRzW2ldID0gcGFsbG9jMChzaXplb2YoVmFjQXR0 clN0YXRzKSk7CisKKwkJdmFzdGF0c1tpXS0+YXR0cnR5cGUgPSAoRm9ybV9wZ190eXBlKSBHRVRT VFJVQ1QodHlwdHVwbGUpOworCQl2YXN0YXRzW2ldLT5hdHRydHlwaWQgPSB0eXBpZDsKKwkJdmFz dGF0c1tpXS0+YXR0cmNvbGxpZCA9IGF0dHR5cGNvbGxzW2ldOworCX0KKworCWJ5dGVzID0gc3Rh dGV4dF9tY3Zfc2VyaWFsaXplKG1jdmxpc3QsIHZhc3RhdHMpOworCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1hdHRyczsgaSsrKQorCXsKKwkJcGZyZWUodmF0dXBsZXNbaV0pOworCQlwZnJlZSh2 YXN0YXRzW2ldKTsKKwl9CisJcGZyZWUoKHZvaWQgKikgdmF0dXBsZXMpOworCXBmcmVlKCh2b2lk ICopIHZhc3RhdHMpOworCisJaWYgKGJ5dGVzID09IE5VTEwpCisJeworCQllcmVwb3J0KGVsZXZl bCwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkg ZXJybXNnKCJVbmFibGUgdG8gaW1wb3J0IG1jdiBsaXN0IikpKTsKKwkJcmV0dXJuIChEYXR1bSkg MDsKKwl9CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5pdGVtczsgaSsrKQorCXsKKwkJTUNWSXRl bSAgICAqaXRlbSA9ICZtY3ZsaXN0LT5pdGVtc1tpXTsKKworCQlwZnJlZShpdGVtLT52YWx1ZXMp OworCQlwZnJlZShpdGVtLT5pc251bGwpOworCX0KKwlwZnJlZShtY3ZsaXN0KTsKKwlwZnJlZSht Y3ZfZWxlbXMpOworCXBmcmVlKG1jdl9udWxscyk7CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVt KGJ5dGVzKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbXZkaXN0aW5j dC5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tdmRpc3RpbmN0LmMKaW5kZXggMDAzZGMzYTc0 YWIuLjRjMjRlNTgwYzJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL212ZGlz dGluY3QuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL212ZGlzdGluY3QuYwpAQCAtNzc0 LDYgKzc3NCw2OCBAQCBwZ19uZGlzdGluY3RfaW4oUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRV Uk5fTlVMTCgpOwogfQogCisvKgorICogRnJlZSBhbGxvY2F0aW9ucyBvZiBhbiBNVk5EaXN0aW5j dAorICovCit2b2lkCitmcmVlX3BnX25kaXN0aW5jdChNVk5EaXN0aW5jdCAqbmRpc3RpbmN0KQor eworCWZvciAoaW50IGkgPSAwOyBpIDwgbmRpc3RpbmN0LT5uaXRlbXM7IGkrKykKKwkJcGZyZWUo bmRpc3RpbmN0LT5pdGVtc1tpXS5hdHRyaWJ1dGVzKTsKKworCXBmcmVlKG5kaXN0aW5jdCk7Cit9 CisKKy8qCisgKiBWYWxpZGF0ZSBhbiBNVk5EaXN0aW5jdCBhZ2FpbnN0IHRoZSBleHRlbmRlZCBz dGF0aXN0aWNzIG9iamVjdCBkZWZpbml0aW9uLgorICoKKyAqIEV2ZXJ5IE1WTkRpc3RpbmN0SXRl bSBtdXN0IGJlIGNoZWNrZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGF0dG51bXMgaW4gdGhlCisgKiBh dHRyaWJ1dGVzIGxpc3QgY29ycmVzcG9uZCB0byBhdHRudW1zL2V4cHJlc3Npb25zIGRlZmluZWQg YnkgdGhlCisgKiBleHRlbmRlZCBzdGF0aXN0aWNzIG9iamVjdC4KKyAqCisgKiBQb3NpdGl2ZSBh dHRudW1zIGFyZSBhdHRyaWJ1dGVzIHdoaWNoIG11c3QgYmUgZm91bmQgaW4gdGhlIHN0eGtleXMs CisgKiB3aGlsZSBuZWdhdGl2ZSBhdHRudW1zIGNvcnJlc3BvbmQgdG8gYW4gZXhwciBudW1iZXIs IHNvIHRoZSBhdHRudW0KKyAqIGNhbid0IGJlIGJlbG93ICgwIC0gbnVtZXhwcnMpLgorICovCiti b29sCitwZ19uZGlzdGluY3RfdmFsaWRhdGVfaXRlbXMoTVZORGlzdGluY3QgKm5kaXN0aW5jdCwg aW50MnZlY3RvciAqc3R4a2V5cywgaW50IG51bWV4cHJzLCBpbnQgZWxldmVsKQoreworCWludAkJ YXR0bnVtX2V4cHJfbG93Ym91bmQgPSAwIC0gbnVtZXhwcnM7CisKKwlmb3IgKGludCBpID0gMDsg aSA8IG5kaXN0aW5jdC0+bml0ZW1zOyBpKyspCisJeworCQlNVk5EaXN0aW5jdEl0ZW0gaXRlbSA9 IG5kaXN0aW5jdC0+aXRlbXNbaV07CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCBpdGVtLm5hdHRy aWJ1dGVzOyBqKyspCisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0bnVtID0gaXRlbS5hdHRyaWJ1dGVz W2pdOworCQkJYm9vbAkJb2sgPSBmYWxzZTsKKworCQkJaWYgKGF0dG51bSA+IDApCisJCQl7CisJ CQkJZm9yIChpbnQgayA9IDA7IGsgPCBzdHhrZXlzLT5kaW0xOyBrKyspCisJCQkJCWlmIChhdHRu dW0gPT0gc3R4a2V5cy0+dmFsdWVzW2tdKQorCQkJCQl7CisJCQkJCQlvayA9IHRydWU7CisJCQkJ CQlicmVhazsKKwkJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAoKGF0dG51bSA8IDApICYmIChhdHRu dW0gPj0gYXR0bnVtX2V4cHJfbG93Ym91bmQpKQorCQkJCW9rID0gdHJ1ZTsKKworCQkJaWYgKCFv aykKKwkJCXsKKwkJCQllcmVwb3J0KGVsZXZlbCwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJCWVycm1zZygicGdfbmRpc3RpbmN0OiBp bnZhbGlkIGF0dG51bSBmb3IgdGhpcyBzdGF0aXN0aWNzIG9iamVjdDogJWQiLCBhdHRudW0pKSk7 CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQl9CisJfQorCXJldHVybiB0cnVlOworfQorCisK IC8qCiAgKiBwZ19uZGlzdGluY3QKICAqCQlvdXRwdXQgcm91dGluZSBmb3IgdHlwZSBwZ19uZGlz dGluY3QKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfaW1wb3J0 Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfaW1wb3J0Lm91dAppbmRleCA0 OGQ2MzkyYjRhZC4uZDg1MmUwNDZmOWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3RhdHNfaW1wb3J0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0 YXRzX2ltcG9ydC5vdXQKQEAgLTEwODQsMTEgKzEwODQsMTUgQEAgU0VMRUNUIDMsICd0cmUnLCAo MywgMy4zLCAnVFJFJywgJzIwMDMtMDMtMDMnLCBOVUxMKTo6c3RhdHNfaW1wb3J0LmNvbXBsZXhf dHlwZSwKIFVOSU9OIEFMTAogU0VMRUNUIDQsICdmb3VyJywgTlVMTCwgaW50NHJhbmdlKDAsMTAw KSwgTlVMTDsKIENSRUFURSBJTkRFWCBpc19vZGQgT04gc3RhdHNfaW1wb3J0LnRlc3QoKChjb21w KS5hICUgMiA9IDEpKTsKK0NSRUFURSBTVEFUSVNUSUNTIHN0YXRzX2ltcG9ydC50ZXN0X3N0YXQg T04gbmFtZSwgY29tcCwgbG93ZXIoYXJhbmdlKSwgYXJyYXlfbGVuZ3RoKHRhZ3MsMSkKK0ZST00g c3RhdHNfaW1wb3J0LnRlc3Q7CiAtLSBHZW5lcmF0ZSBzdGF0aXN0aWNzIG9uIHRhYmxlIHdpdGgg ZGF0YQogQU5BTFlaRSBzdGF0c19pbXBvcnQudGVzdDsKIENSRUFURSBUQUJMRSBzdGF0c19pbXBv cnQudGVzdF9jbG9uZSAoIExJS0Ugc3RhdHNfaW1wb3J0LnRlc3QgKQogICAgIFdJVEggKGF1dG92 YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKIENSRUFURSBJTkRFWCBpc19vZGRfY2xvbmUgT04gc3Rh dHNfaW1wb3J0LnRlc3RfY2xvbmUoKChjb21wKS5hICUgMiA9IDEpKTsKK0NSRUFURSBTVEFUSVNU SUNTIHN0YXRzX2ltcG9ydC50ZXN0X3N0YXRfY2xvbmUgT04gbmFtZSwgY29tcCwgbG93ZXIoYXJh bmdlKSwgYXJyYXlfbGVuZ3RoKHRhZ3MsMSkKK0ZST00gc3RhdHNfaW1wb3J0LnRlc3RfY2xvbmU7 CiAtLQogLS0gQ29weSBzdGF0cyBmcm9tIHRlc3QgdG8gdGVzdF9jbG9uZSwgYW5kIGlzX29kZCB0 byBpc19vZGRfY2xvbmUKIC0tCkBAIC0xMzQyLDYgKzEzNDYsNTkwIEBAIEFORCBhdHRuYW1lID0g J2knOwogKDEgcm93KQogCiBEUk9QIFRBQkxFIHN0YXRzX3RlbXA7CistLSBzZXQgbl9kaXN0aW5j dCB1c2luZyBhdCBhdHRudW0gKDEpIHRoYXQgaXMgbm90IGluIHRoZSBzdGF0aXN0aWNzIG9iamVj dAorU0VMRUNUCisgICAgcGdfY2F0YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzKAorICAg ICAgICAnc3RhdGlzdGljc19zY2hlbWFuYW1lJywgJ3N0YXRzX2ltcG9ydCcsCisgICAgICAgICdz dGF0aXN0aWNzX25hbWUnLCAndGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAgJ2luaGVyaXRlZCcs IGZhbHNlLAorICAgICAgICAnbl9kaXN0aW5jdCcsICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAi bmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6 IFsyLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0 cmlidXRlcyIgOiBbMiwtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAg ICAgICB7ImF0dHJpYnV0ZXMiIDogWzMsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAg ICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFszLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwK KyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbLTEsLTJdLCAibmRpc3Rp bmN0IiA6IDN9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDMs LTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1 dGVzIiA6IFsyLDMsLTJdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAg ICAgeyJhdHRyaWJ1dGVzIiA6IFsyLC0xLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMywtMSwtMl0sICJuZGlzdGluY3QiIDog NH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzEsMywtMSwtMl0s ICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRpc3RpbmN0CisgICAgICApOworV0FSTklORzogIHBn X25kaXN0aW5jdDogaW52YWxpZCBhdHRudW0gZm9yIHRoaXMgc3RhdGlzdGljcyBvYmplY3Q6IDEK KyBwZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgZgorKDEgcm93KQorCistLSBzZXQgbl9kaXN0aW5jdCB1c2luZyBhdCBhdHRudW0gdGhhdCBp cyAwCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisg ICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAg J3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVk JywgZmFsc2UsCisgICAgICAgICduX2Rpc3RpbmN0JywgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10s ICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMi IDogWzIsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJh dHRyaWJ1dGVzIiA6IFsyLDBdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAg ICAgICAgeyJhdHRyaWJ1dGVzIiA6IFszLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMywtMl0sICJuZGlzdGluY3QiIDogNH0s CisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWy0xLC0yXSwgIm5kaXN0 aW5jdCIgOiAzfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwz LC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmli dXRlcyIgOiBbMiwzLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHsiYXR0cmlidXRlcyIgOiBbMiwtMSwtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAg ICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzMsLTEsLTJdLCAibmRpc3RpbmN0IiA6 IDR9XSc6OnBnX25kaXN0aW5jdAorICAgICAgKTsKK1dBUk5JTkc6ICBwZ19uZGlzdGluY3Q6IGlu dmFsaWQgYXR0bnVtIGZvciB0aGlzIHN0YXRpc3RpY3Mgb2JqZWN0OiAwCisgcGdfcmVzdG9yZV9l eHRlbmRlZF9zdGF0cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykK KworLS0gc2V0IG5fZGlzdGluY3QgdXNpbmcgYXQgYXR0bnVtIHRoYXQgaXMgb3V0c2lkZSB0aGUg ZXhwcmVzc2lvbiBib3VuZHMoYmVsb3cgLTIpCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jl c3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAn c3RhdHNfaW1wb3J0JywKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xv bmUnLAorICAgICAgICAnaW5oZXJpdGVkJywgZmFsc2UsCisgICAgICAgICduX2Rpc3RpbmN0Jywg J1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAg ICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsLTRdLCAibmRpc3RpbmN0IiA6IDR9LAorICAg ICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFszLC0xXSwgIm5kaXN0aW5jdCIg OiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMywtMl0sICJu ZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDog Wy0xLC0yXSwgIm5kaXN0aW5jdCIgOiAzfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0 cmlidXRlcyIgOiBbMiwzLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAg ICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwtMSwtMl0sICJuZGlzdGluY3Qi IDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzMsLTEsLTJd LCAibmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0aW5jdAorICAgICAgKTsKK1dBUk5JTkc6ICBw Z19uZGlzdGluY3Q6IGludmFsaWQgYXR0bnVtIGZvciB0aGlzIHN0YXRpc3RpY3Mgb2JqZWN0OiAt NAorIHBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBmCisoMSByb3cpCisKKy0tIG9rCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3Rv cmVfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3Rh dHNfaW1wb3J0JywKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUn LAorICAgICAgICAnaW5oZXJpdGVkJywgZmFsc2UsCisgICAgICAgICduX2Rpc3RpbmN0JywgJ1t7 ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAg ICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAg ICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFszLC0xXSwgIm5kaXN0aW5jdCIgOiA0 fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMywtMl0sICJuZGlz dGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWy0x LC0yXSwgIm5kaXN0aW5jdCIgOiAzfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmli dXRlcyIgOiBbMiwzLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwtMSwtMl0sICJuZGlzdGluY3QiIDog NH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzMsLTEsLTJdLCAi bmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0aW5jdAorICAgICAgKTsKKyBwZ19yZXN0b3JlX2V4 dGVuZGVkX3N0YXRzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQor CitTRUxFQ1QKKyAgICBlLm5fZGlzdGluY3QsIGUuZGVwZW5kZW5jaWVzLCBlLm1vc3RfY29tbW9u X3ZhbHMsIGUubW9zdF9jb21tb25fdmFsX251bGxzLAorICAgIGUubW9zdF9jb21tb25fZnJlcXMs IGUubW9zdF9jb21tb25fYmFzZV9mcmVxcworRlJPTSBwZ19zdGF0c19leHQgQVMgZQorV0hFUkUg ZS5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3RhdHNfaW1wb3J0JworQU5EIGUuc3RhdGlzdGlj c19uYW1lID0gJ3Rlc3Rfc3RhdF9jbG9uZScKK0FORCBlLmluaGVyaXRlZCA9IGZhbHNlCitcZ3gK Ky1bIFJFQ09SRCAxIF0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorbl9kaXN0aW5jdCAgICAgICAgICAgICB8IFt7ImF0dHJpYnV0ZXMiOiBbMiwg M10sICJuZGlzdGluY3QiOiA0fSwgeyJhdHRyaWJ1dGVzIjogWzIsIC0xXSwgIm5kaXN0aW5jdCI6 IDR9LCB7ImF0dHJpYnV0ZXMiOiBbMywgLTFdLCAibmRpc3RpbmN0IjogNH0sIHsiYXR0cmlidXRl cyI6IFszLCAtMl0sICJuZGlzdGluY3QiOiA0fSwgeyJhdHRyaWJ1dGVzIjogWy0xLCAtMl0sICJu ZGlzdGluY3QiOiAzfSwgeyJhdHRyaWJ1dGVzIjogWzIsIDMsIC0xXSwgIm5kaXN0aW5jdCI6IDR9 LCB7ImF0dHJpYnV0ZXMiOiBbMiwgMywgLTJdLCAibmRpc3RpbmN0IjogNH0sIHsiYXR0cmlidXRl cyI6IFsyLCAtMSwgLTJdLCAibmRpc3RpbmN0IjogNH0sIHsiYXR0cmlidXRlcyI6IFszLCAtMSwg LTJdLCAibmRpc3RpbmN0IjogNH1dCitkZXBlbmRlbmNpZXMgICAgICAgICAgIHwgCittb3N0X2Nv bW1vbl92YWxzICAgICAgIHwgCittb3N0X2NvbW1vbl92YWxfbnVsbHMgIHwgCittb3N0X2NvbW1v bl9mcmVxcyAgICAgIHwgCittb3N0X2NvbW1vbl9iYXNlX2ZyZXFzIHwgCisKKy0tIHNldCBkZXBl bmRlbmNpZXMgdXNpbmcgYXQgYXR0bnVtICgxKSB0aGF0IGlzIG5vdCBpbiB0aGUgc3RhdGlzdGlj cyBvYmplY3QKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0 cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAg ICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhl cml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ2RlcGVuZGVuY2llcycsICdbeyJhdHRyaWJ1dGVzIjog WzJdLCAiZGVwZW5kZW5jeSI6IDEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3Jl ZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjog WzJdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAg ICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogMiwgImRlZ3Jl ZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjog WzNdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAg ICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogLTIsICJkZWdy ZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6 IFstMV0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVn cmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMi OiBbLTFdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAg ICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTJdLCAiZGVwZW5kZW5jeSI6IDIsICJk ZWdyZWUiOiAwLjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRl cyI6IFstMl0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0yXSwgImRlcGVuZGVuY3kiOiAtMSwg ImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1 dGVzIjogWzIsM10sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLDNdLCAiZGVwZW5kZW5jeSI6 IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0 dHJpYnV0ZXMiOiBbMiwtMV0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDEuMDAwMDAwfSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTFdLCAiZGVwZW5k ZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAg ICB7ImF0dHJpYnV0ZXMiOiBbMiwtMl0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDEuMDAw MDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTJdLCAi ZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAg ICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywtMV0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6 IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzMs LTFdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAg ICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywtMl0sICJkZXBlbmRlbmN5IjogMiwgImRl Z3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVz IjogWzMsLTJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTEsLTJdLCAiZGVwZW5kZW5jeSI6 IDIsICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0 cmlidXRlcyI6IFstMSwtMl0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDAuNTAwMDAwfSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsM10sICJkZXBlbmRl bmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg IHsiYXR0cmlidXRlcyI6IFsyLDNdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAw MDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwzLC0yXSwg ImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTEsLTJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdy ZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6 IFszLC0xLC0yXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMS4wMDAwMDB9XSc6OnBnX2Rl cGVuZGVuY2llcworICAgICAgKTsKK1dBUk5JTkc6ICBwZ19kZXBlbmRlbmNpZXM6IGludmFsaWQg YXR0bnVtIGZvciB0aGlzIHN0YXRpc3RpY3Mgb2JqZWN0OiAxCisgcGdfcmVzdG9yZV9leHRlbmRl ZF9zdGF0cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworLS0g c2V0IGRlcGVuZGVuY2llcyB1c2luZyBhdCBhdHRudW0gdGhhdCBpcyAwCitTRUxFQ1QKKyAgICBw Z19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNz X3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScs ICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVkJywgZmFsc2UsCisgICAgICAg ICdkZXBlbmRlbmNpZXMnLCAnW3siYXR0cmlidXRlcyI6IFsyXSwgImRlcGVuZGVuY3kiOiAzLCAi ZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0 ZXMiOiBbMF0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyXSwgImRlcGVuZGVuY3kiOiAtMiwg ImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1 dGVzIjogWzNdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszXSwgImRlcGVuZGVuY3kiOiAtMSwg ImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1 dGVzIjogWzNdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTFdLCAiZGVwZW5kZW5jeSI6IDIs ICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmli dXRlcyI6IFstMV0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAt MiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRy aWJ1dGVzIjogWy0yXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMC41MDAwMDB9LAorICAg ICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTJdLCAiZGVwZW5kZW5jeSI6 IDMsICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0 cmlidXRlcyI6IFstMl0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLDNdLCAiZGVwZW5kZW5j eSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7 ImF0dHJpYnV0ZXMiOiBbMiwzXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAw fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTFdLCAiZGVw ZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHsiYXR0cmlidXRlcyI6IFsyLC0xXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEu MDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTJd LCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLC0yXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3Jl ZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjog WzMsLTFdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAg ICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszLC0xXSwgImRlcGVuZGVuY3kiOiAtMiwg ImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1 dGVzIjogWzMsLTJdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszLC0yXSwgImRlcGVuZGVuY3ki OiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJh dHRyaWJ1dGVzIjogWy0xLC0yXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMC41MDAwMDB9 LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTEsLTJdLCAiZGVw ZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHsiYXR0cmlidXRlcyI6IFsyLDNdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4w MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwzXSwg ImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsMywtMl0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdy ZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6 IFsyLC0xLC0yXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywtMSwtMl0sICJkZXBlbmRlbmN5 IjogMiwgImRlZ3JlZSI6IDEuMDAwMDAwfV0nOjpwZ19kZXBlbmRlbmNpZXMKKyAgICAgICk7CitX QVJOSU5HOiAgcGdfZGVwZW5kZW5jaWVzOiBpbnZhbGlkIGF0dG51bSBmb3IgdGhpcyBzdGF0aXN0 aWNzIG9iamVjdDogMAorIHBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIHNldCBkZXBlbmRlbmNpZXMgdXNpbmcg YXQgYXR0bnVtIHRoYXQgaXMgb3V0c2lkZSB0aGUgZXhwcmVzc2lvbiBib3VuZHMoYmVsb3cgLTIp CitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisgICAg ICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAgJ3N0 YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVkJywg ZmFsc2UsCisgICAgICAgICdkZXBlbmRlbmNpZXMnLCAnW3siYXR0cmlidXRlcyI6IFsyXSwgImRl cGVuZGVuY3kiOiAtMywgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgeyJhdHRyaWJ1dGVzIjogWzJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4w MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMl0sICJk ZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHsiYXR0cmlidXRlcyI6IFszXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMS4w MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbM10sICJk ZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHsiYXR0cmlidXRlcyI6IFszXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEu MDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0xXSwg ImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAg ICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTFdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAw LjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMV0s ICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMl0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6 IDAuNTAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0y XSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAg ICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVl IjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBb MiwzXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsM10sICJkZXBlbmRlbmN5IjogLTIsICJk ZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRl cyI6IFsyLC0xXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwtMV0sICJkZXBlbmRlbmN5Ijog LTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0 cmlidXRlcyI6IFsyLC0yXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMS4wMDAwMDB9LAor ICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwtMl0sICJkZXBlbmRl bmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg IHsiYXR0cmlidXRlcyI6IFszLC0xXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMS4wMDAw MDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywtMV0sICJk ZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHsiYXR0cmlidXRlcyI6IFszLC0yXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjog MS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywt Ml0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMSwtMl0sICJkZXBlbmRlbmN5IjogMiwgImRl Z3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVz IjogWy0xLC0yXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwzXSwgImRlcGVuZGVuY3kiOiAt MSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRy aWJ1dGVzIjogWzIsM10sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLDMsLTJdLCAiZGVwZW5k ZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAg ICB7ImF0dHJpYnV0ZXMiOiBbMiwtMSwtMl0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDEu MDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzMsLTEs LTJdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxLjAwMDAwMH1dJzo6cGdfZGVwZW5kZW5j aWVzCisgICAgICApOworV0FSTklORzogIHBnX2RlcGVuZGVuY2llczogaW52YWxpZCBhdHRudW0g Zm9yIHRoaXMgc3RhdGlzdGljcyBvYmplY3Q6IC0zCisgcGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0 cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworLS0gb2sKK1NF TEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cygKKyAgICAgICAg J3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAgICAgICAnc3RhdGlz dGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhlcml0ZWQnLCBmYWxz ZSwKKyAgICAgICAgJ2RlcGVuZGVuY2llcycsICdbeyJhdHRyaWJ1dGVzIjogWzJdLCAiZGVwZW5k ZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg IHsiYXR0cmlidXRlcyI6IFsyXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAw fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzJdLCAiZGVwZW5k ZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAg ICB7ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDEuMDAwMDAw fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzNdLCAiZGVwZW5k ZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAg ICB7ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAw MH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMV0sICJkZXBl bmRlbmN5IjogMiwgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgeyJhdHRyaWJ1dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMC41MDAw MDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTFdLCAiZGVw ZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAg ICAgICB7ImF0dHJpYnV0ZXMiOiBbLTJdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAwLjUw MDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMl0sICJk ZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgeyJhdHRyaWJ1dGVzIjogWy0yXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEu MDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsM10s ICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLDNdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVl IjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBb MiwtMV0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTFdLCAiZGVwZW5kZW5jeSI6IC0yLCAi ZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0 ZXMiOiBbMiwtMl0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTJdLCAiZGVwZW5kZW5jeSI6 IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0 dHJpYnV0ZXMiOiBbMywtMV0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzMsLTFdLCAiZGVwZW5k ZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAg ICB7ImF0dHJpYnV0ZXMiOiBbMywtMl0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDEuMDAw MDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzMsLTJdLCAi ZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAg ICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTEsLTJdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUi OiAwLjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFst MSwtMl0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsM10sICJkZXBlbmRlbmN5IjogLTEsICJk ZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRl cyI6IFsyLDNdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwzLC0yXSwgImRlcGVuZGVuY3ki OiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJh dHRyaWJ1dGVzIjogWzIsLTEsLTJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAw MH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszLC0xLC0yXSwg ImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMS4wMDAwMDB9XSc6OnBnX2RlcGVuZGVuY2llcwor ICAgICAgKTsKKyBwZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QKKyAgICBlLm5fZGlzdGluY3QsIGUuZGVw ZW5kZW5jaWVzLCBlLm1vc3RfY29tbW9uX3ZhbHMsIGUubW9zdF9jb21tb25fdmFsX251bGxzLAor ICAgIGUubW9zdF9jb21tb25fZnJlcXMsIGUubW9zdF9jb21tb25fYmFzZV9mcmVxcworRlJPTSBw Z19zdGF0c19leHQgQVMgZQorV0hFUkUgZS5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3RhdHNf aW1wb3J0JworQU5EIGUuc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdF9jbG9uZScKK0FORCBl LmluaGVyaXRlZCA9IGZhbHNlCitcZ3gKKy1bIFJFQ09SRCAxIF0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCituX2Rpc3RpbmN0ICAgICAgICAgICAgIHwgW3siYXR0cmlidXRlcyI6IFsyLCAzXSwg Im5kaXN0aW5jdCI6IDR9LCB7ImF0dHJpYnV0ZXMiOiBbMiwgLTFdLCAibmRpc3RpbmN0IjogNH0s IHsiYXR0cmlidXRlcyI6IFszLCAtMV0sICJuZGlzdGluY3QiOiA0fSwgeyJhdHRyaWJ1dGVzIjog WzMsIC0yXSwgIm5kaXN0aW5jdCI6IDR9LCB7ImF0dHJpYnV0ZXMiOiBbLTEsIC0yXSwgIm5kaXN0 aW5jdCI6IDN9LCB7ImF0dHJpYnV0ZXMiOiBbMiwgMywgLTFdLCAibmRpc3RpbmN0IjogNH0sIHsi YXR0cmlidXRlcyI6IFsyLCAzLCAtMl0sICJuZGlzdGluY3QiOiA0fSwgeyJhdHRyaWJ1dGVzIjog WzIsIC0xLCAtMl0sICJuZGlzdGluY3QiOiA0fSwgeyJhdHRyaWJ1dGVzIjogWzMsIC0xLCAtMl0s ICJuZGlzdGluY3QiOiA0fV0KK2RlcGVuZGVuY2llcyAgICAgICAgICAgfCBbeyJhdHRyaWJ1dGVz IjogWzJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsiYXR0cmlidXRl cyI6IFsyXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1 dGVzIjogWzJdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LCB7ImF0dHJp YnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRy aWJ1dGVzIjogWzNdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LCB7ImF0 dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsi YXR0cmlidXRlcyI6IFstMV0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDAuNTAwMDAwfSwg eyJhdHRyaWJ1dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMC41MDAwMDB9 LCB7ImF0dHJpYnV0ZXMiOiBbLTFdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAw MDB9LCB7ImF0dHJpYnV0ZXMiOiBbLTJdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAwLjUw MDAwMH0sIHsiYXR0cmlidXRlcyI6IFstMl0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDAu NTAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWy0yXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6 IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWzIsIDNdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVn cmVlIjogMS4wMDAwMDB9LCB7ImF0dHJpYnV0ZXMiOiBbMiwgM10sICJkZXBlbmRlbmN5IjogLTIs ICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsiYXR0cmlidXRlcyI6IFsyLCAtMV0sICJkZXBlbmRlbmN5 IjogMywgImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWzIsIC0xXSwgImRlcGVu ZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWzIsIC0yXSwg ImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMS4wMDAwMDB9LCB7ImF0dHJpYnV0ZXMiOiBbMiwg LTJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LCB7ImF0dHJpYnV0ZXMi OiBbMywgLTFdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsiYXR0cmli dXRlcyI6IFszLCAtMV0sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsi YXR0cmlidXRlcyI6IFszLCAtMl0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDEuMDAwMDAw fSwgeyJhdHRyaWJ1dGVzIjogWzMsIC0yXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEu MDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWy0xLCAtMl0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3Jl ZSI6IDAuNTAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWy0xLCAtMl0sICJkZXBlbmRlbmN5IjogMywg ImRlZ3JlZSI6IDAuNTAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWzIsIDNdLCAiZGVwZW5kZW5jeSI6 IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LCB7ImF0dHJpYnV0ZXMiOiBbMiwgM10sICJkZXBlbmRl bmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsiYXR0cmlidXRlcyI6IFsyLCAzLCAtMl0s ICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsiYXR0cmlidXRlcyI6IFsy LCAtMSwgLTJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsiYXR0cmli dXRlcyI6IFszLCAtMSwgLTJdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxLjAwMDAwMH1d Cittb3N0X2NvbW1vbl92YWxzICAgICAgIHwgCittb3N0X2NvbW1vbl92YWxfbnVsbHMgIHwgCitt b3N0X2NvbW1vbl9mcmVxcyAgICAgIHwgCittb3N0X2NvbW1vbl9iYXNlX2ZyZXFzIHwgCisKKy0t IGlmIGFueSBvbmUgbWN2IHBhcmFtIHNwZWNpZmllZCwgYWxsIGZvdXIgbXVzdCBiZSBzcGVjaWZp ZWQgKHBhcnQgMSkKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9z dGF0cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAor ICAgICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdp bmhlcml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ21vc3RfY29tbW9uX3ZhbHMnLCAne3tmb3VyLE5V TEwsMCxOVUxMfSx7b25lLCIoMSwxLjEsT05FLDAxLTAxLTIwMDEsXCJ7XCJcInhrZXlcIlwiOiBc IlwieHZhbFwiXCJ9XCIpIiwxLDJ9LHt0cmUsIigzLDMuMyxUUkUsMDMtMDMtMjAwMywpIiwtMSwz fSx7dHdvLCIoMiwyLjIsVFdPLDAyLTAyLTIwMDIsXCJbdHJ1ZSwgNCwgXCJcInNpeFwiXCJdXCIp IiwxLDJ9fSc6OnRleHRbXQorICAgICAgKTsKK1dBUk5JTkc6ICBNQ1YgcGFyYW1ldGVycyAibW9z dF9jb21tb25fdmFscyIsICJtb3N0X2NvbW1vbl92YWxfbnVsbHMiLCAibW9zdF9jb21tb25fZnJl cXMiLCBhbmQgIm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMiIG11c3QgYmUgYWxsIHNwZWNpZmllZCBp ZiBhbnkgYXJlIHNwZWNpZmllZAorIHBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIGlmIGFueSBvbmUgbWN2IHBh cmFtIHNwZWNpZmllZCwgYWxsIGZvdXIgbXVzdCBiZSBzcGVjaWZpZWQgKHBhcnQgMikKK1NFTEVD VAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cygKKyAgICAgICAgJ3N0 YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAgICAgICAnc3RhdGlzdGlj c19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhlcml0ZWQnLCBmYWxzZSwK KyAgICAgICAgJ21vc3RfY29tbW9uX3ZhbF9udWxscycsICd7e2YsdCxmLHR9LHtmLGYsZixmfSx7 ZixmLGYsZn0se2YsZixmLGZ9fSc6OmJvb2xlYW5bXQorICAgICAgKTsKK1dBUk5JTkc6ICBNQ1Yg cGFyYW1ldGVycyAibW9zdF9jb21tb25fdmFscyIsICJtb3N0X2NvbW1vbl92YWxfbnVsbHMiLCAi bW9zdF9jb21tb25fZnJlcXMiLCBhbmQgIm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMiIG11c3QgYmUg YWxsIHNwZWNpZmllZCBpZiBhbnkgYXJlIHNwZWNpZmllZAorIHBnX3Jlc3RvcmVfZXh0ZW5kZWRf c3RhdHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIGlm IGFueSBvbmUgbWN2IHBhcmFtIHNwZWNpZmllZCwgYWxsIGZvdXIgbXVzdCBiZSBzcGVjaWZpZWQg KHBhcnQgMykKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0 cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAg ICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhl cml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ21vc3RfY29tbW9uX2ZyZXFzJywgJ3swLjI1LDAuMjUs MC4yNSwwLjI1fSc6OmRvdWJsZSBwcmVjaXNpb25bXQorICAgICAgKTsKK1dBUk5JTkc6ICBNQ1Yg cGFyYW1ldGVycyAibW9zdF9jb21tb25fdmFscyIsICJtb3N0X2NvbW1vbl92YWxfbnVsbHMiLCAi bW9zdF9jb21tb25fZnJlcXMiLCBhbmQgIm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMiIG11c3QgYmUg YWxsIHNwZWNpZmllZCBpZiBhbnkgYXJlIHNwZWNpZmllZAorIHBnX3Jlc3RvcmVfZXh0ZW5kZWRf c3RhdHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIGlm IGFueSBvbmUgbWN2IHBhcmFtIHNwZWNpZmllZCwgYWxsIGZvdXIgbXVzdCBiZSBzcGVjaWZpZWQg KHBhcnQgNCkKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0 cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAg ICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhl cml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ21vc3RfY29tbW9uX2Jhc2VfZnJlcXMnLCAnezAuMDAz OTA2MjUsMC4wMTU2MjUsMC4wMDM5MDYyNSwwLjAxNTYyNX0nOjpkb3VibGUgcHJlY2lzaW9uW10K KyAgICAgICk7CitXQVJOSU5HOiAgTUNWIHBhcmFtZXRlcnMgIm1vc3RfY29tbW9uX3ZhbHMiLCAi bW9zdF9jb21tb25fdmFsX251bGxzIiwgIm1vc3RfY29tbW9uX2ZyZXFzIiwgYW5kICJtb3N0X2Nv bW1vbl9iYXNlX2ZyZXFzIiBtdXN0IGJlIGFsbCBzcGVjaWZpZWQgaWYgYW55IGFyZSBzcGVjaWZp ZWQKKyBwZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgZgorKDEgcm93KQorCistLSBvaworU0VMRUNUCisgICAgcGdfY2F0YWxvZy5wZ19yZXN0 b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlzdGljc19zY2hlbWFuYW1lJywgJ3N0 YXRzX2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25hbWUnLCAndGVzdF9zdGF0X2Nsb25l JywKKyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAgICAnbW9zdF9jb21tb25fdmFs cycsICd7e2ZvdXIsTlVMTCwwLE5VTEx9LHtvbmUsIigxLDEuMSxPTkUsMDEtMDEtMjAwMSxcIntc IlwieGtleVwiXCI6IFwiXCJ4dmFsXCJcIn1cIikiLDEsMn0se3RyZSwiKDMsMy4zLFRSRSwwMy0w My0yMDAzLCkiLC0xLDN9LHt0d28sIigyLDIuMixUV08sMDItMDItMjAwMixcIlt0cnVlLCA0LCBc Ilwic2l4XCJcIl1cIikiLDEsMn19Jzo6dGV4dFtdLAorICAgICAgICAnbW9zdF9jb21tb25fdmFs X251bGxzJywgJ3t7Zix0LGYsdH0se2YsZixmLGZ9LHtmLGYsZixmfSx7ZixmLGYsZn19Jzo6Ym9v bGVhbltdLAorICAgICAgICAnbW9zdF9jb21tb25fZnJlcXMnLCAnezAuMjUsMC4yNSwwLjI1LDAu MjV9Jzo6ZG91YmxlIHByZWNpc2lvbltdLAorICAgICAgICAnbW9zdF9jb21tb25fYmFzZV9mcmVx cycsICd7MC4wMDM5MDYyNSwwLjAxNTYyNSwwLjAwMzkwNjI1LDAuMDE1NjI1fSc6OmRvdWJsZSBw cmVjaXNpb25bXQorICAgICAgKTsKKyBwZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QKKyAgICBlLm5fZGlz dGluY3QsIGUuZGVwZW5kZW5jaWVzLCBlLm1vc3RfY29tbW9uX3ZhbHMsIGUubW9zdF9jb21tb25f dmFsX251bGxzLAorICAgIGUubW9zdF9jb21tb25fZnJlcXMsIGUubW9zdF9jb21tb25fYmFzZV9m cmVxcworRlJPTSBwZ19zdGF0c19leHQgQVMgZQorV0hFUkUgZS5zdGF0aXN0aWNzX3NjaGVtYW5h bWUgPSAnc3RhdHNfaW1wb3J0JworQU5EIGUuc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdF9j bG9uZScKK0FORCBlLmluaGVyaXRlZCA9IGZhbHNlCitcZ3gKKy1bIFJFQ09SRCAxIF0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCituX2Rpc3RpbmN0ICAgICAgICAgICAgIHwgW3siYXR0cmlidXRl cyI6IFsyLCAzXSwgIm5kaXN0aW5jdCI6IDR9LCB7ImF0dHJpYnV0ZXMiOiBbMiwgLTFdLCAibmRp c3RpbmN0IjogNH0sIHsiYXR0cmlidXRlcyI6IFszLCAtMV0sICJuZGlzdGluY3QiOiA0fSwgeyJh dHRyaWJ1dGVzIjogWzMsIC0yXSwgIm5kaXN0aW5jdCI6IDR9LCB7ImF0dHJpYnV0ZXMiOiBbLTEs IC0yXSwgIm5kaXN0aW5jdCI6IDN9LCB7ImF0dHJpYnV0ZXMiOiBbMiwgMywgLTFdLCAibmRpc3Rp bmN0IjogNH0sIHsiYXR0cmlidXRlcyI6IFsyLCAzLCAtMl0sICJuZGlzdGluY3QiOiA0fSwgeyJh dHRyaWJ1dGVzIjogWzIsIC0xLCAtMl0sICJuZGlzdGluY3QiOiA0fSwgeyJhdHRyaWJ1dGVzIjog WzMsIC0xLCAtMl0sICJuZGlzdGluY3QiOiA0fV0KK2RlcGVuZGVuY2llcyAgICAgICAgICAgfCBb eyJhdHRyaWJ1dGVzIjogWzJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAwMH0s IHsiYXR0cmlidXRlcyI6IFsyXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAw fSwgeyJhdHRyaWJ1dGVzIjogWzJdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAw MDB9LCB7ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDEuMDAw MDAwfSwgeyJhdHRyaWJ1dGVzIjogWzNdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4w MDAwMDB9LCB7ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAx LjAwMDAwMH0sIHsiYXR0cmlidXRlcyI6IFstMV0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6 IDAuNTAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVl IjogMC41MDAwMDB9LCB7ImF0dHJpYnV0ZXMiOiBbLTFdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVn cmVlIjogMS4wMDAwMDB9LCB7ImF0dHJpYnV0ZXMiOiBbLTJdLCAiZGVwZW5kZW5jeSI6IDIsICJk ZWdyZWUiOiAwLjUwMDAwMH0sIHsiYXR0cmlidXRlcyI6IFstMl0sICJkZXBlbmRlbmN5IjogMywg ImRlZ3JlZSI6IDAuNTAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWy0yXSwgImRlcGVuZGVuY3kiOiAt MSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWzIsIDNdLCAiZGVwZW5kZW5j eSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LCB7ImF0dHJpYnV0ZXMiOiBbMiwgM10sICJkZXBl bmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsiYXR0cmlidXRlcyI6IFsyLCAtMV0s ICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWzIs IC0xXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVz IjogWzIsIC0yXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMS4wMDAwMDB9LCB7ImF0dHJp YnV0ZXMiOiBbMiwgLTJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LCB7 ImF0dHJpYnV0ZXMiOiBbMywgLTFdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxLjAwMDAw MH0sIHsiYXR0cmlidXRlcyI6IFszLCAtMV0sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAx LjAwMDAwMH0sIHsiYXR0cmlidXRlcyI6IFszLCAtMl0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3Jl ZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWzMsIC0yXSwgImRlcGVuZGVuY3kiOiAtMSwg ImRlZ3JlZSI6IDEuMDAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWy0xLCAtMl0sICJkZXBlbmRlbmN5 IjogMiwgImRlZ3JlZSI6IDAuNTAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWy0xLCAtMl0sICJkZXBl bmRlbmN5IjogMywgImRlZ3JlZSI6IDAuNTAwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWzIsIDNdLCAi ZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LCB7ImF0dHJpYnV0ZXMiOiBbMiwg M10sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsiYXR0cmlidXRlcyI6 IFsyLCAzLCAtMl0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sIHsiYXR0 cmlidXRlcyI6IFsyLCAtMSwgLTJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAw MH0sIHsiYXR0cmlidXRlcyI6IFszLCAtMSwgLTJdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUi OiAxLjAwMDAwMH1dCittb3N0X2NvbW1vbl92YWxzICAgICAgIHwge3tmb3VyLE5VTEwsMCxOVUxM fSx7b25lLCIoMSwxLjEsT05FLDAxLTAxLTIwMDEsXCJ7XCJcInhrZXlcIlwiOiBcIlwieHZhbFwi XCJ9XCIpIiwxLDJ9LHt0cmUsIigzLDMuMyxUUkUsMDMtMDMtMjAwMywpIiwtMSwzfSx7dHdvLCIo MiwyLjIsVFdPLDAyLTAyLTIwMDIsXCJbdHJ1ZSwgNCwgXCJcInNpeFwiXCJdXCIpIiwxLDJ9fQor bW9zdF9jb21tb25fdmFsX251bGxzICB8IHt7Zix0LGYsdH0se2YsZixmLGZ9LHtmLGYsZixmfSx7 ZixmLGYsZn19Cittb3N0X2NvbW1vbl9mcmVxcyAgICAgIHwgezAuMjUsMC4yNSwwLjI1LDAuMjV9 Cittb3N0X2NvbW1vbl9iYXNlX2ZyZXFzIHwgezAuMDAzOTA2MjUsMC4wMTU2MjUsMC4wMDM5MDYy NSwwLjAxNTYyNX0KKworU0VMRUNUCisgICAgcGdfY2F0YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVk X3N0YXRzKAorICAgICAgICAnc3RhdGlzdGljc19zY2hlbWFuYW1lJywgJ3N0YXRzX2ltcG9ydCcs CisgICAgICAgICdzdGF0aXN0aWNzX25hbWUnLCAndGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAg J2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAgICAnZXhwcnMnLCAne3swLDQsLTAuNzUsInsxfSIs InswLjV9Iiwiey0xLDB9IiwtMC42LE5VTEwsTlVMTCxOVUxMfSx7MC4yNSw0LC0wLjUsInsyfSIs InswLjV9IixOVUxMLDEsTlVMTCxOVUxMLE5VTEx9fSc6OnRleHRbXQorICAgICAgKTsKKyBwZ19y ZXN0b3JlX2V4dGVuZGVkX3N0YXRzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCitTRUxFQ1QKKyAgICBlLmluaGVyaXRlZCwgZS5udWxsX2ZyYWMsIGUuYXZnX3dp ZHRoLCBlLm5fZGlzdGluY3QsIGUubW9zdF9jb21tb25fdmFscywKKyAgICBlLm1vc3RfY29tbW9u X2ZyZXFzLCBlLmhpc3RvZ3JhbV9ib3VuZHMsIGUuY29ycmVsYXRpb24sCisgICAgZS5tb3N0X2Nv bW1vbl9lbGVtcywgZS5tb3N0X2NvbW1vbl9lbGVtX2ZyZXFzLCBlLmVsZW1fY291bnRfaGlzdG9n cmFtCitGUk9NIHBnX3N0YXRzX2V4dF9leHBycyBBUyBlCitXSEVSRSBlLnN0YXRpc3RpY3Nfc2No ZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitBTkQgZS5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9z dGF0X2Nsb25lJworYW5kIGUuaW5oZXJpdGVkID0gZmFsc2UKK1xneAorLVsgUkVDT1JEIDEgXS0t LS0tLS0tLS0rLS0tLS0tLQoraW5oZXJpdGVkICAgICAgICAgICAgICB8IGYKK251bGxfZnJhYyAg ICAgICAgICAgICAgfCAwCithdmdfd2lkdGggICAgICAgICAgICAgIHwgNAorbl9kaXN0aW5jdCAg ICAgICAgICAgICB8IC0wLjc1Cittb3N0X2NvbW1vbl92YWxzICAgICAgIHwgezF9Cittb3N0X2Nv bW1vbl9mcmVxcyAgICAgIHwgezAuNX0KK2hpc3RvZ3JhbV9ib3VuZHMgICAgICAgfCB7LTEsMH0K K2NvcnJlbGF0aW9uICAgICAgICAgICAgfCAtMC42Cittb3N0X2NvbW1vbl9lbGVtcyAgICAgIHwg Cittb3N0X2NvbW1vbl9lbGVtX2ZyZXFzIHwgCitlbGVtX2NvdW50X2hpc3RvZ3JhbSAgIHwgCist WyBSRUNPUkQgMiBdLS0tLS0tLS0tLSstLS0tLS0tCitpbmhlcml0ZWQgICAgICAgICAgICAgIHwg ZgorbnVsbF9mcmFjICAgICAgICAgICAgICB8IDAuMjUKK2F2Z193aWR0aCAgICAgICAgICAgICAg fCA0CituX2Rpc3RpbmN0ICAgICAgICAgICAgIHwgLTAuNQorbW9zdF9jb21tb25fdmFscyAgICAg ICB8IHsyfQorbW9zdF9jb21tb25fZnJlcXMgICAgICB8IHswLjV9CitoaXN0b2dyYW1fYm91bmRz ICAgICAgIHwgCitjb3JyZWxhdGlvbiAgICAgICAgICAgIHwgMQorbW9zdF9jb21tb25fZWxlbXMg ICAgICB8IAorbW9zdF9jb21tb25fZWxlbV9mcmVxcyB8IAorZWxlbV9jb3VudF9oaXN0b2dyYW0g ICB8IAorCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX2NsZWFyX2V4dGVuZGVkX3N0YXRzKAor ICAgICAgICBzdGF0aXN0aWNzX3NjaGVtYW5hbWUgPT4gJ3N0YXRzX2ltcG9ydCcsCisgICAgICAg IHN0YXRpc3RpY3NfbmFtZSA9PiAndGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAgaW5oZXJpdGVk ID0+IGZhbHNlKTsKKyBwZ19jbGVhcl9leHRlbmRlZF9zdGF0cyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENPVU5UKCopCitGUk9NIHBnX3N0YXRzX2V4 dCBBUyBlCitXSEVSRSBlLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitB TkQgZS5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0X2Nsb25lJworQU5EIGUuaW5oZXJpdGVk ID0gZmFsc2U7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworU0VMRUNUIENP VU5UKCopCitGUk9NIHBnX3N0YXRzX2V4dF9leHBycyBBUyBlCitXSEVSRSBlLnN0YXRpc3RpY3Nf c2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitBTkQgZS5zdGF0aXN0aWNzX25hbWUgPSAndGVz dF9zdGF0X2Nsb25lJworQU5EIGUuaW5oZXJpdGVkID0gZmFsc2U7CisgY291bnQgCistLS0tLS0t CisgICAgIDAKKygxIHJvdykKKworLS0KKy0tIENvcHkgc3RhdHMgZnJvbSB0ZXN0X3N0YXQgdG8g dGVzdF9zdGF0X2Nsb25lCistLQorU0VMRUNUCisgICAgZS5zdGF0aXN0aWNzX25hbWUsCisgICAg cGdfY2F0YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlzdGlj c19zY2hlbWFuYW1lJywgZS5zdGF0aXN0aWNzX3NjaGVtYW5hbWU6OnRleHQsCisgICAgICAgICdz dGF0aXN0aWNzX25hbWUnLCAndGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAgJ2luaGVyaXRlZCcs IGUuaW5oZXJpdGVkLAorICAgICAgICAnbl9kaXN0aW5jdCcsIGUubl9kaXN0aW5jdCwKKyAgICAg ICAgJ2RlcGVuZGVuY2llcycsIGUuZGVwZW5kZW5jaWVzLAorICAgICAgICAnbW9zdF9jb21tb25f dmFscycsIGUubW9zdF9jb21tb25fdmFscywKKyAgICAgICAgJ21vc3RfY29tbW9uX3ZhbF9udWxs cycsIGUubW9zdF9jb21tb25fdmFsX251bGxzLAorICAgICAgICAnbW9zdF9jb21tb25fZnJlcXMn LCBlLm1vc3RfY29tbW9uX2ZyZXFzLAorICAgICAgICAnbW9zdF9jb21tb25fYmFzZV9mcmVxcycs IGUubW9zdF9jb21tb25fYmFzZV9mcmVxcywKKyAgICAgICAgJ2V4cHJzJywgeC5leHBycworICAg ICkKK0ZST00gcGdfc3RhdHNfZXh0IEFTIGUKK0NST1NTIEpPSU4gTEFURVJBTCAoCisgICAgU0VM RUNUCisgICAgICAgIGFycmF5X2FnZygKKyAgICAgICAgICAgIEFSUkFZW2VlLm51bGxfZnJhYzo6 dGV4dCwgZWUuYXZnX3dpZHRoOjp0ZXh0LAorICAgICAgICAgICAgICAgICAgZWUubl9kaXN0aW5j dDo6dGV4dCwgZWUubW9zdF9jb21tb25fdmFsczo6dGV4dCwKKyAgICAgICAgICAgICAgICAgIGVl Lm1vc3RfY29tbW9uX2ZyZXFzOjp0ZXh0LCBlZS5oaXN0b2dyYW1fYm91bmRzOjp0ZXh0LAorICAg ICAgICAgICAgICAgICAgZWUuY29ycmVsYXRpb246OnRleHQsIGVlLm1vc3RfY29tbW9uX2VsZW1z Ojp0ZXh0LAorICAgICAgICAgICAgICAgICAgZWUubW9zdF9jb21tb25fZWxlbV9mcmVxczo6dGV4 dCwKKyAgICAgICAgICAgICAgICAgIGVlLmVsZW1fY291bnRfaGlzdG9ncmFtOjp0ZXh0XSkKKyAg ICBGUk9NIHBnX3N0YXRzX2V4dF9leHBycyBBUyBlZQorICAgIFdIRVJFIGVlLnN0YXRpc3RpY3Nf c2NoZW1hbmFtZSA9IGUuc3RhdGlzdGljc19zY2hlbWFuYW1lCisgICAgQU5EIGVlLnN0YXRpc3Rp Y3NfbmFtZSA9IGUuc3RhdGlzdGljc19uYW1lCisgICAgQU5EIGVlLmluaGVyaXRlZCA9IGUuaW5o ZXJpdGVkCisgICAgKSBBUyB4KGV4cHJzKQorV0hFUkUgZS5zdGF0aXN0aWNzX3NjaGVtYW5hbWUg PSAnc3RhdHNfaW1wb3J0JworQU5EIGUuc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdCc7Cisg c3RhdGlzdGljc19uYW1lIHwgcGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cyAKKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRlc3Rfc3RhdCAgICAgICB8IHQK KygxIHJvdykKKworU0VMRUNUIG8uaW5oZXJpdGVkLAorICAgICAgIG8ubl9kaXN0aW5jdCwgby5k ZXBlbmRlbmNpZXMsIG8ubW9zdF9jb21tb25fdmFscywKKyAgICAgICBvLm1vc3RfY29tbW9uX3Zh bF9udWxscywgby5tb3N0X2NvbW1vbl9mcmVxcywKKyAgICAgICBvLm1vc3RfY29tbW9uX2Jhc2Vf ZnJlcXMKK0ZST00gcGdfc3RhdHNfZXh0IEFTIG8KK1dIRVJFIG8uc3RhdGlzdGljc19zY2hlbWFu YW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBvLnN0YXRpc3RpY3NfbmFtZSA9ICd0ZXN0X3N0YXQn CitFWENFUFQKK1NFTEVDVCBuLmluaGVyaXRlZCwKKyAgICAgICBuLm5fZGlzdGluY3QsIG4uZGVw ZW5kZW5jaWVzLCBuLm1vc3RfY29tbW9uX3ZhbHMsCisgICAgICAgbi5tb3N0X2NvbW1vbl92YWxf bnVsbHMsIG4ubW9zdF9jb21tb25fZnJlcXMsCisgICAgICAgbi5tb3N0X2NvbW1vbl9iYXNlX2Zy ZXFzCitGUk9NIHBnX3N0YXRzX2V4dCBBUyBuCitXSEVSRSBuLnN0YXRpc3RpY3Nfc2NoZW1hbmFt ZSA9ICdzdGF0c19pbXBvcnQnCitBTkQgbi5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0X2Ns b25lJzsKKyBpbmhlcml0ZWQgfCBuX2Rpc3RpbmN0IHwgZGVwZW5kZW5jaWVzIHwgbW9zdF9jb21t b25fdmFscyB8IG1vc3RfY29tbW9uX3ZhbF9udWxscyB8IG1vc3RfY29tbW9uX2ZyZXFzIHwgbW9z dF9jb21tb25fYmFzZV9mcmVxcyAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCBu LmluaGVyaXRlZCwKKyAgICAgICBuLm5fZGlzdGluY3QsIG4uZGVwZW5kZW5jaWVzLCBuLm1vc3Rf Y29tbW9uX3ZhbHMsCisgICAgICAgbi5tb3N0X2NvbW1vbl92YWxfbnVsbHMsIG4ubW9zdF9jb21t b25fZnJlcXMsCisgICAgICAgbi5tb3N0X2NvbW1vbl9iYXNlX2ZyZXFzCitGUk9NIHBnX3N0YXRz X2V4dCBBUyBuCitXSEVSRSBuLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQn CitBTkQgbi5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0X2Nsb25lJworRVhDRVBUCitTRUxF Q1Qgby5pbmhlcml0ZWQsCisgICAgICAgby5uX2Rpc3RpbmN0LCBvLmRlcGVuZGVuY2llcywgby5t b3N0X2NvbW1vbl92YWxzLAorICAgICAgIG8ubW9zdF9jb21tb25fdmFsX251bGxzLCBvLm1vc3Rf Y29tbW9uX2ZyZXFzLAorICAgICAgIG8ubW9zdF9jb21tb25fYmFzZV9mcmVxcworRlJPTSBwZ19z dGF0c19leHQgQVMgbworV0hFUkUgby5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3RhdHNfaW1w b3J0JworQU5EIG8uc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdCc7CisgaW5oZXJpdGVkIHwg bl9kaXN0aW5jdCB8IGRlcGVuZGVuY2llcyB8IG1vc3RfY29tbW9uX3ZhbHMgfCBtb3N0X2NvbW1v bl92YWxfbnVsbHMgfCBtb3N0X2NvbW1vbl9mcmVxcyB8IG1vc3RfY29tbW9uX2Jhc2VfZnJlcXMg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1Qgby5pbmhlcml0ZWQsCisgICAgICAg by5udWxsX2ZyYWMsIG8uYXZnX3dpZHRoLCBvLm5fZGlzdGluY3QsCisgICAgICAgby5tb3N0X2Nv bW1vbl92YWxzOjp0ZXh0IEFTIG1vc3RfY29tbW9uX3ZhbHMsCisgICAgICAgby5tb3N0X2NvbW1v bl9mcmVxcywKKyAgICAgICBvLmhpc3RvZ3JhbV9ib3VuZHM6OnRleHQgQVMgaGlzdG9ncmFtX2Jv dW5kcywKKyAgICAgICBvLmNvcnJlbGF0aW9uLAorICAgICAgIG8ubW9zdF9jb21tb25fZWxlbXM6 OnRleHQgQVMgbW9zdF9jb21tb25fZWxlbXMsCisgICAgICAgby5tb3N0X2NvbW1vbl9lbGVtX2Zy ZXFzLCBvLmVsZW1fY291bnRfaGlzdG9ncmFtCitGUk9NIHBnX3N0YXRzX2V4dF9leHBycyBBUyBv CitXSEVSRSBvLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitBTkQgby5z dGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0JworRVhDRVBUCitTRUxFQ1Qgbi5pbmhlcml0ZWQs CisgICAgICAgbi5udWxsX2ZyYWMsIG4uYXZnX3dpZHRoLCBuLm5fZGlzdGluY3QsCisgICAgICAg bi5tb3N0X2NvbW1vbl92YWxzOjp0ZXh0IEFTIG1vc3RfY29tbW9uX3ZhbHMsCisgICAgICAgbi5t b3N0X2NvbW1vbl9mcmVxcywKKyAgICAgICBuLmhpc3RvZ3JhbV9ib3VuZHM6OnRleHQgQVMgaGlz dG9ncmFtX2JvdW5kcywKKyAgICAgICBuLmNvcnJlbGF0aW9uLAorICAgICAgIG4ubW9zdF9jb21t b25fZWxlbXM6OnRleHQgQVMgbW9zdF9jb21tb25fZWxlbXMsCisgICAgICAgbi5tb3N0X2NvbW1v bl9lbGVtX2ZyZXFzLCBuLmVsZW1fY291bnRfaGlzdG9ncmFtCitGUk9NIHBnX3N0YXRzX2V4dF9l eHBycyBBUyBuCitXSEVSRSBuLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQn CitBTkQgbi5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0X2Nsb25lJzsKKyBpbmhlcml0ZWQg fCBudWxsX2ZyYWMgfCBhdmdfd2lkdGggfCBuX2Rpc3RpbmN0IHwgbW9zdF9jb21tb25fdmFscyB8 IG1vc3RfY29tbW9uX2ZyZXFzIHwgaGlzdG9ncmFtX2JvdW5kcyB8IGNvcnJlbGF0aW9uIHwgbW9z dF9jb21tb25fZWxlbXMgfCBtb3N0X2NvbW1vbl9lbGVtX2ZyZXFzIHwgZWxlbV9jb3VudF9oaXN0 b2dyYW0gCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKDAgcm93cykKKworU0VMRUNUIG4uaW5oZXJpdGVk LAorICAgICAgIG4ubnVsbF9mcmFjLCBuLmF2Z193aWR0aCwgbi5uX2Rpc3RpbmN0LAorICAgICAg IG4ubW9zdF9jb21tb25fdmFsczo6dGV4dCBBUyBtb3N0X2NvbW1vbl92YWxzLAorICAgICAgIG4u bW9zdF9jb21tb25fZnJlcXMsCisgICAgICAgbi5oaXN0b2dyYW1fYm91bmRzOjp0ZXh0IEFTIGhp c3RvZ3JhbV9ib3VuZHMsCisgICAgICAgbi5jb3JyZWxhdGlvbiwKKyAgICAgICBuLm1vc3RfY29t bW9uX2VsZW1zOjp0ZXh0IEFTIG1vc3RfY29tbW9uX2VsZW1zLAorICAgICAgIG4ubW9zdF9jb21t b25fZWxlbV9mcmVxcywgbi5lbGVtX2NvdW50X2hpc3RvZ3JhbQorRlJPTSBwZ19zdGF0c19leHRf ZXhwcnMgQVMgbgorV0hFUkUgbi5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3RhdHNfaW1wb3J0 JworQU5EIG4uc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdF9jbG9uZScKK0VYQ0VQVAorU0VM RUNUIG8uaW5oZXJpdGVkLAorICAgICAgIG8ubnVsbF9mcmFjLCBvLmF2Z193aWR0aCwgby5uX2Rp c3RpbmN0LAorICAgICAgIG8ubW9zdF9jb21tb25fdmFsczo6dGV4dCBBUyBtb3N0X2NvbW1vbl92 YWxzLAorICAgICAgIG8ubW9zdF9jb21tb25fZnJlcXMsCisgICAgICAgby5oaXN0b2dyYW1fYm91 bmRzOjp0ZXh0IEFTIGhpc3RvZ3JhbV9ib3VuZHMsCisgICAgICAgby5jb3JyZWxhdGlvbiwKKyAg ICAgICBvLm1vc3RfY29tbW9uX2VsZW1zOjp0ZXh0IEFTIG1vc3RfY29tbW9uX2VsZW1zLAorICAg ICAgIG8ubW9zdF9jb21tb25fZWxlbV9mcmVxcywgby5lbGVtX2NvdW50X2hpc3RvZ3JhbQorRlJP TSBwZ19zdGF0c19leHRfZXhwcnMgQVMgbworV0hFUkUgby5zdGF0aXN0aWNzX3NjaGVtYW5hbWUg PSAnc3RhdHNfaW1wb3J0JworQU5EIG8uc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdCc7Cisg aW5oZXJpdGVkIHwgbnVsbF9mcmFjIHwgYXZnX3dpZHRoIHwgbl9kaXN0aW5jdCB8IG1vc3RfY29t bW9uX3ZhbHMgfCBtb3N0X2NvbW1vbl9mcmVxcyB8IGhpc3RvZ3JhbV9ib3VuZHMgfCBjb3JyZWxh dGlvbiB8IG1vc3RfY29tbW9uX2VsZW1zIHwgbW9zdF9jb21tb25fZWxlbV9mcmVxcyB8IGVsZW1f Y291bnRfaGlzdG9ncmFtIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKIERST1AgU0NI RU1BIHN0YXRzX2ltcG9ydCBDQVNDQURFOwogTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byA2IG90 aGVyIG9iamVjdHMKIERFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gdHlwZSBzdGF0c19pbXBvcnQu Y29tcGxleF90eXBlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19pbXBv cnQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfaW1wb3J0LnNxbAppbmRleCBkMTQw NzMzYTc1MC4uNGRkNTY4YmU5ZmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0 YXRzX2ltcG9ydC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfaW1wb3J0LnNx bApAQCAtNzY2LDYgKzc2Niw5IEBAIFNFTEVDVCA0LCAnZm91cicsIE5VTEwsIGludDRyYW5nZSgw LDEwMCksIE5VTEw7CiAKIENSRUFURSBJTkRFWCBpc19vZGQgT04gc3RhdHNfaW1wb3J0LnRlc3Qo KChjb21wKS5hICUgMiA9IDEpKTsKIAorQ1JFQVRFIFNUQVRJU1RJQ1Mgc3RhdHNfaW1wb3J0LnRl c3Rfc3RhdCBPTiBuYW1lLCBjb21wLCBsb3dlcihhcmFuZ2UpLCBhcnJheV9sZW5ndGgodGFncywx KQorRlJPTSBzdGF0c19pbXBvcnQudGVzdDsKKwogLS0gR2VuZXJhdGUgc3RhdGlzdGljcyBvbiB0 YWJsZSB3aXRoIGRhdGEKIEFOQUxZWkUgc3RhdHNfaW1wb3J0LnRlc3Q7CiAKQEAgLTc3NCw2ICs3 NzcsOSBAQCBDUkVBVEUgVEFCTEUgc3RhdHNfaW1wb3J0LnRlc3RfY2xvbmUgKCBMSUtFIHN0YXRz X2ltcG9ydC50ZXN0ICkKIAogQ1JFQVRFIElOREVYIGlzX29kZF9jbG9uZSBPTiBzdGF0c19pbXBv cnQudGVzdF9jbG9uZSgoKGNvbXApLmEgJSAyID0gMSkpOwogCitDUkVBVEUgU1RBVElTVElDUyBz dGF0c19pbXBvcnQudGVzdF9zdGF0X2Nsb25lIE9OIG5hbWUsIGNvbXAsIGxvd2VyKGFyYW5nZSks IGFycmF5X2xlbmd0aCh0YWdzLDEpCitGUk9NIHN0YXRzX2ltcG9ydC50ZXN0X2Nsb25lOworCiAt LQogLS0gQ29weSBzdGF0cyBmcm9tIHRlc3QgdG8gdGVzdF9jbG9uZSwgYW5kIGlzX29kZCB0byBp c19vZGRfY2xvbmUKIC0tCkBAIC05NzAsNCArOTc2LDQ1MCBAQCBBTkQgdGFibGVuYW1lID0gJ3N0 YXRzX3RlbXAnCiBBTkQgaW5oZXJpdGVkID0gZmFsc2UKIEFORCBhdHRuYW1lID0gJ2knOwogRFJP UCBUQUJMRSBzdGF0c190ZW1wOworCistLSBzZXQgbl9kaXN0aW5jdCB1c2luZyBhdCBhdHRudW0g KDEpIHRoYXQgaXMgbm90IGluIHRoZSBzdGF0aXN0aWNzIG9iamVjdAorU0VMRUNUCisgICAgcGdf Y2F0YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlzdGljc19z Y2hlbWFuYW1lJywgJ3N0YXRzX2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25hbWUnLCAn dGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAgICAn bl9kaXN0aW5jdCcsICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAibmRpc3RpbmN0IiA6IDR9LAor ICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLC0xXSwgIm5kaXN0aW5j dCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwtMl0s ICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMi IDogWzMsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJh dHRyaWJ1dGVzIiA6IFszLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAg ICAgICAgIHsiYXR0cmlidXRlcyIgOiBbLTEsLTJdLCAibmRpc3RpbmN0IiA6IDN9LAorICAgICAg ICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDMsLTFdLCAibmRpc3RpbmN0IiA6 IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDMsLTJdLCAi bmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6 IFsyLC0xLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsi YXR0cmlidXRlcyIgOiBbMywtMSwtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAg ICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzEsMywtMSwtMl0sICJuZGlzdGluY3QiIDogNH1d Jzo6cGdfbmRpc3RpbmN0CisgICAgICApOworCistLSBzZXQgbl9kaXN0aW5jdCB1c2luZyBhdCBh dHRudW0gdGhhdCBpcyAwCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5k ZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0 JywKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAg ICAnaW5oZXJpdGVkJywgZmFsc2UsCisgICAgICAgICduX2Rpc3RpbmN0JywgJ1t7ImF0dHJpYnV0 ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7 ImF0dHJpYnV0ZXMiIDogWzIsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAg ICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDBdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAg ICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFszLC0xXSwgIm5kaXN0aW5jdCIgOiA0 fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMywtMl0sICJuZGlz dGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWy0x LC0yXSwgIm5kaXN0aW5jdCIgOiAzfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmli dXRlcyIgOiBbMiwzLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwtMSwtMl0sICJuZGlzdGluY3QiIDog NH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzMsLTEsLTJdLCAi bmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0aW5jdAorICAgICAgKTsKKworLS0gc2V0IG5fZGlz dGluY3QgdXNpbmcgYXQgYXR0bnVtIHRoYXQgaXMgb3V0c2lkZSB0aGUgZXhwcmVzc2lvbiBib3Vu ZHMoYmVsb3cgLTIpCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRf c3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywK KyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAn aW5oZXJpdGVkJywgZmFsc2UsCisgICAgICAgICduX2Rpc3RpbmN0JywgJ1t7ImF0dHJpYnV0ZXMi IDogWzIsM10sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0 dHJpYnV0ZXMiIDogWzIsLTRdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAg ICAgICAgeyJhdHRyaWJ1dGVzIiA6IFszLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMywtMl0sICJuZGlzdGluY3QiIDogNH0s CisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWy0xLC0yXSwgIm5kaXN0 aW5jdCIgOiAzfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwz LC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmli dXRlcyIgOiBbMiwzLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHsiYXR0cmlidXRlcyIgOiBbMiwtMSwtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAg ICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzMsLTEsLTJdLCAibmRpc3RpbmN0IiA6 IDR9XSc6OnBnX25kaXN0aW5jdAorICAgICAgKTsKKworLS0gb2sKK1NFTEVDVAorICAgIHBnX2Nh dGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2No ZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAgICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rl c3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhlcml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ25f ZGlzdGluY3QnLCAnW3siYXR0cmlidXRlcyIgOiBbMiwzXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwtMV0sICJuZGlzdGluY3Qi IDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzMsLTFdLCAi bmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6 IFszLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0 cmlidXRlcyIgOiBbLTEsLTJdLCAibmRpc3RpbmN0IiA6IDN9LAorICAgICAgICAgICAgICAgICAg ICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDMsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAg ICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDMsLTJdLCAibmRpc3RpbmN0IiA6 IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLC0xLC0yXSwg Im5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIg OiBbMywtMSwtMl0sICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRpc3RpbmN0CisgICAgICApOwor CitTRUxFQ1QKKyAgICBlLm5fZGlzdGluY3QsIGUuZGVwZW5kZW5jaWVzLCBlLm1vc3RfY29tbW9u X3ZhbHMsIGUubW9zdF9jb21tb25fdmFsX251bGxzLAorICAgIGUubW9zdF9jb21tb25fZnJlcXMs IGUubW9zdF9jb21tb25fYmFzZV9mcmVxcworRlJPTSBwZ19zdGF0c19leHQgQVMgZQorV0hFUkUg ZS5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3RhdHNfaW1wb3J0JworQU5EIGUuc3RhdGlzdGlj c19uYW1lID0gJ3Rlc3Rfc3RhdF9jbG9uZScKK0FORCBlLmluaGVyaXRlZCA9IGZhbHNlCitcZ3gK KworLS0gc2V0IGRlcGVuZGVuY2llcyB1c2luZyBhdCBhdHRudW0gKDEpIHRoYXQgaXMgbm90IGlu IHRoZSBzdGF0aXN0aWNzIG9iamVjdAorU0VMRUNUCisgICAgcGdfY2F0YWxvZy5wZ19yZXN0b3Jl X2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlzdGljc19zY2hlbWFuYW1lJywgJ3N0YXRz X2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25hbWUnLCAndGVzdF9zdGF0X2Nsb25lJywK KyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAgICAnZGVwZW5kZW5jaWVzJywgJ1t7 ImF0dHJpYnV0ZXMiOiBbMl0sICJkZXBlbmRlbmN5IjogMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzJdLCAiZGVwZW5kZW5j eSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7 ImF0dHJpYnV0ZXMiOiBbMl0sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0s CisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszXSwgImRlcGVuZGVu Y3kiOiAyLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7 ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0s CisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszXSwgImRlcGVuZGVu Y3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg eyJhdHRyaWJ1dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMC41MDAwMDB9 LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTFdLCAiZGVwZW5k ZW5jeSI6IDMsICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg IHsiYXR0cmlidXRlcyI6IFstMV0sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAw MH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMl0sICJkZXBl bmRlbmN5IjogMiwgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgeyJhdHRyaWJ1dGVzIjogWy0yXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMC41MDAw MDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTJdLCAiZGVw ZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAg ICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwzXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEu MDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsM10s ICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLC0xXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVl IjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBb MiwtMV0sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAg ICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLC0yXSwgImRlcGVuZGVuY3kiOiAzLCAi ZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0 ZXMiOiBbMiwtMl0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszLC0xXSwgImRlcGVuZGVuY3ki OiAyLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0 dHJpYnV0ZXMiOiBbMywtMV0sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0s CisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszLC0yXSwgImRlcGVu ZGVuY3kiOiAyLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAg ICB7ImF0dHJpYnV0ZXMiOiBbMywtMl0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAw MDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMSwtMl0s ICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0xLC0yXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVl IjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBb MiwzXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsM10sICJkZXBlbmRlbmN5IjogLTIsICJk ZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRl cyI6IFsyLDMsLTJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAg ICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwtMSwtMl0sICJkZXBlbmRl bmN5IjogMywgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg eyJhdHRyaWJ1dGVzIjogWzMsLTEsLTJdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxLjAw MDAwMH1dJzo6cGdfZGVwZW5kZW5jaWVzCisgICAgICApOworCistLSBzZXQgZGVwZW5kZW5jaWVz IHVzaW5nIGF0IGF0dG51bSB0aGF0IGlzIDAKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVz dG9yZV9leHRlbmRlZF9zdGF0cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdz dGF0c19pbXBvcnQnLAorICAgICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9u ZScsCisgICAgICAgICdpbmhlcml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ2RlcGVuZGVuY2llcycs ICdbeyJhdHRyaWJ1dGVzIjogWzJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAw MH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFswXSwgImRlcGVu ZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgeyJhdHRyaWJ1dGVzIjogWzJdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAw MDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBl bmRlbmN5IjogMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgeyJhdHRyaWJ1dGVzIjogWzNdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAw MDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBl bmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHsiYXR0cmlidXRlcyI6IFstMV0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDAuNTAw MDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0xXSwgImRl cGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAg ICAgICB7ImF0dHJpYnV0ZXMiOiBbLTFdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4w MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTJdLCAi ZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHsiYXR0cmlidXRlcyI6IFstMl0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDAu NTAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0yXSwg ImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsM10sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUi OiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsy LDNdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAg ICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwtMV0sICJkZXBlbmRlbmN5IjogMywgImRl Z3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVz IjogWzIsLTFdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwtMl0sICJkZXBlbmRlbmN5Ijog MywgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRy aWJ1dGVzIjogWzIsLTJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAor ICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywtMV0sICJkZXBlbmRl bmN5IjogMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg eyJhdHRyaWJ1dGVzIjogWzMsLTFdLCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAw MDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywtMl0sICJk ZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgeyJhdHRyaWJ1dGVzIjogWzMsLTJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjog MS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTEs LTJdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMSwtMl0sICJkZXBlbmRlbmN5IjogMywgImRl Z3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVz IjogWzIsM10sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLDNdLCAiZGVwZW5kZW5jeSI6IC0y LCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJp YnV0ZXMiOiBbMiwzLC0yXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTEsLTJdLCAiZGVw ZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHsiYXR0cmlidXRlcyI6IFszLC0xLC0yXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjog MS4wMDAwMDB9XSc6OnBnX2RlcGVuZGVuY2llcworICAgICAgKTsKKworLS0gc2V0IGRlcGVuZGVu Y2llcyB1c2luZyBhdCBhdHRudW0gdGhhdCBpcyBvdXRzaWRlIHRoZSBleHByZXNzaW9uIGJvdW5k cyhiZWxvdyAtMikKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9z dGF0cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAor ICAgICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdp bmhlcml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ2RlcGVuZGVuY2llcycsICdbeyJhdHRyaWJ1dGVz IjogWzJdLCAiZGVwZW5kZW5jeSI6IC0zLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAg ICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMl0sICJkZXBlbmRlbmN5IjogLTEsICJk ZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRl cyI6IFsyXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzNdLCAiZGVwZW5kZW5jeSI6IDIsICJk ZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRl cyI6IFszXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzNdLCAiZGVwZW5kZW5jeSI6IC0yLCAi ZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0 ZXMiOiBbLTFdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMV0sICJkZXBlbmRlbmN5IjogMywg ImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1 dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0yXSwgImRlcGVuZGVuY3kiOiAy LCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJp YnV0ZXMiOiBbLTJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMl0sICJkZXBlbmRlbmN5Ijog LTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0 cmlidXRlcyI6IFsyLDNdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAor ICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwzXSwgImRlcGVuZGVu Y3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg eyJhdHRyaWJ1dGVzIjogWzIsLTFdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAw MH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLC0xXSwgImRl cGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAx LjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLC0y XSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzMsLTFdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdy ZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6 IFszLC0xXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzMsLTJdLCAiZGVwZW5kZW5jeSI6IDIs ICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmli dXRlcyI6IFszLC0yXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0xLC0yXSwgImRlcGVuZGVu Y3kiOiAyLCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7 ImF0dHJpYnV0ZXMiOiBbLTEsLTJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAwLjUwMDAw MH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLDNdLCAiZGVw ZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAg ICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwzXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEu MDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsMywt Ml0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLC0xLC0yXSwgImRlcGVuZGVuY3kiOiAzLCAi ZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0 ZXMiOiBbMywtMSwtMl0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDEuMDAwMDAwfV0nOjpw Z19kZXBlbmRlbmNpZXMKKyAgICAgICk7CisKKy0tIG9rCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9n LnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5h bWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0 YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVkJywgZmFsc2UsCisgICAgICAgICdkZXBlbmRl bmNpZXMnLCAnW3siYXR0cmlidXRlcyI6IFsyXSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjog MS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMl0s ICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6 IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzNd LCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6 IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzNd LCAiZGVwZW5kZW5jeSI6IC0yLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAg ICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTFdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUi OiAwLjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFst MV0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3Jl ZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjog Wy0yXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAg ICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdy ZWUiOiAwLjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6 IFstMl0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAg ICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLDNdLCAiZGVwZW5kZW5jeSI6IC0xLCAi ZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0 ZXMiOiBbMiwzXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTFdLCAiZGVwZW5kZW5jeSI6 IDMsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0 cmlidXRlcyI6IFsyLC0xXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTJdLCAiZGVwZW5k ZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg IHsiYXR0cmlidXRlcyI6IFsyLC0yXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAw MDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzMsLTFdLCAi ZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHsiYXR0cmlidXRlcyI6IFszLC0xXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6 IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzMs LTJdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszLC0yXSwgImRlcGVuZGVuY3kiOiAtMSwgImRl Z3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVz IjogWy0xLC0yXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbLTEsLTJdLCAiZGVwZW5kZW5jeSI6 IDMsICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0 cmlidXRlcyI6IFsyLDNdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAor ICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwzXSwgImRlcGVuZGVu Y3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg eyJhdHRyaWJ1dGVzIjogWzIsMywtMl0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAxLjAw MDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLC0xLC0y XSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAg ICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywtMSwtMl0sICJkZXBlbmRlbmN5IjogMiwgImRl Z3JlZSI6IDEuMDAwMDAwfV0nOjpwZ19kZXBlbmRlbmNpZXMKKyAgICAgICk7CisKK1NFTEVDVAor ICAgIGUubl9kaXN0aW5jdCwgZS5kZXBlbmRlbmNpZXMsIGUubW9zdF9jb21tb25fdmFscywgZS5t b3N0X2NvbW1vbl92YWxfbnVsbHMsCisgICAgZS5tb3N0X2NvbW1vbl9mcmVxcywgZS5tb3N0X2Nv bW1vbl9iYXNlX2ZyZXFzCitGUk9NIHBnX3N0YXRzX2V4dCBBUyBlCitXSEVSRSBlLnN0YXRpc3Rp Y3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitBTkQgZS5zdGF0aXN0aWNzX25hbWUgPSAn dGVzdF9zdGF0X2Nsb25lJworQU5EIGUuaW5oZXJpdGVkID0gZmFsc2UKK1xneAorCistLSBpZiBh bnkgb25lIG1jdiBwYXJhbSBzcGVjaWZpZWQsIGFsbCBmb3VyIG11c3QgYmUgc3BlY2lmaWVkIChw YXJ0IDEpCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMo CisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAg ICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJp dGVkJywgZmFsc2UsCisgICAgICAgICdtb3N0X2NvbW1vbl92YWxzJywgJ3t7Zm91cixOVUxMLDAs TlVMTH0se29uZSwiKDEsMS4xLE9ORSwwMS0wMS0yMDAxLFwie1wiXCJ4a2V5XCJcIjogXCJcInh2 YWxcIlwifVwiKSIsMSwyfSx7dHJlLCIoMywzLjMsVFJFLDAzLTAzLTIwMDMsKSIsLTEsM30se3R3 bywiKDIsMi4yLFRXTywwMi0wMi0yMDAyLFwiW3RydWUsIDQsIFwiXCJzaXhcIlwiXVwiKSIsMSwy fX0nOjp0ZXh0W10KKyAgICAgICk7CisKKy0tIGlmIGFueSBvbmUgbWN2IHBhcmFtIHNwZWNpZmll ZCwgYWxsIGZvdXIgbXVzdCBiZSBzcGVjaWZpZWQgKHBhcnQgMikKK1NFTEVDVAorICAgIHBnX2Nh dGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2No ZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAgICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rl c3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhlcml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ21v c3RfY29tbW9uX3ZhbF9udWxscycsICd7e2YsdCxmLHR9LHtmLGYsZixmfSx7ZixmLGYsZn0se2Ys ZixmLGZ9fSc6OmJvb2xlYW5bXQorICAgICAgKTsKKworLS0gaWYgYW55IG9uZSBtY3YgcGFyYW0g c3BlY2lmaWVkLCBhbGwgZm91ciBtdXN0IGJlIHNwZWNpZmllZCAocGFydCAzKQorU0VMRUNUCisg ICAgcGdfY2F0YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlz dGljc19zY2hlbWFuYW1lJywgJ3N0YXRzX2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25h bWUnLCAndGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAg ICAgICAnbW9zdF9jb21tb25fZnJlcXMnLCAnezAuMjUsMC4yNSwwLjI1LDAuMjV9Jzo6ZG91Ymxl IHByZWNpc2lvbltdCisgICAgICApOworCistLSBpZiBhbnkgb25lIG1jdiBwYXJhbSBzcGVjaWZp ZWQsIGFsbCBmb3VyIG11c3QgYmUgc3BlY2lmaWVkIChwYXJ0IDQpCitTRUxFQ1QKKyAgICBwZ19j YXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNzX3Nj aGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0 ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVkJywgZmFsc2UsCisgICAgICAgICdt b3N0X2NvbW1vbl9iYXNlX2ZyZXFzJywgJ3swLjAwMzkwNjI1LDAuMDE1NjI1LDAuMDAzOTA2MjUs MC4wMTU2MjV9Jzo6ZG91YmxlIHByZWNpc2lvbltdCisgICAgICApOworCistLSBvaworU0VMRUNU CisgICAgcGdfY2F0YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3Rh dGlzdGljc19zY2hlbWFuYW1lJywgJ3N0YXRzX2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNz X25hbWUnLCAndGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAor ICAgICAgICAnbW9zdF9jb21tb25fdmFscycsICd7e2ZvdXIsTlVMTCwwLE5VTEx9LHtvbmUsIigx LDEuMSxPTkUsMDEtMDEtMjAwMSxcIntcIlwieGtleVwiXCI6IFwiXCJ4dmFsXCJcIn1cIikiLDEs Mn0se3RyZSwiKDMsMy4zLFRSRSwwMy0wMy0yMDAzLCkiLC0xLDN9LHt0d28sIigyLDIuMixUV08s MDItMDItMjAwMixcIlt0cnVlLCA0LCBcIlwic2l4XCJcIl1cIikiLDEsMn19Jzo6dGV4dFtdLAor ICAgICAgICAnbW9zdF9jb21tb25fdmFsX251bGxzJywgJ3t7Zix0LGYsdH0se2YsZixmLGZ9LHtm LGYsZixmfSx7ZixmLGYsZn19Jzo6Ym9vbGVhbltdLAorICAgICAgICAnbW9zdF9jb21tb25fZnJl cXMnLCAnezAuMjUsMC4yNSwwLjI1LDAuMjV9Jzo6ZG91YmxlIHByZWNpc2lvbltdLAorICAgICAg ICAnbW9zdF9jb21tb25fYmFzZV9mcmVxcycsICd7MC4wMDM5MDYyNSwwLjAxNTYyNSwwLjAwMzkw NjI1LDAuMDE1NjI1fSc6OmRvdWJsZSBwcmVjaXNpb25bXQorICAgICAgKTsKKworU0VMRUNUCisg ICAgZS5uX2Rpc3RpbmN0LCBlLmRlcGVuZGVuY2llcywgZS5tb3N0X2NvbW1vbl92YWxzLCBlLm1v c3RfY29tbW9uX3ZhbF9udWxscywKKyAgICBlLm1vc3RfY29tbW9uX2ZyZXFzLCBlLm1vc3RfY29t bW9uX2Jhc2VfZnJlcXMKK0ZST00gcGdfc3RhdHNfZXh0IEFTIGUKK1dIRVJFIGUuc3RhdGlzdGlj c19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBlLnN0YXRpc3RpY3NfbmFtZSA9ICd0 ZXN0X3N0YXRfY2xvbmUnCitBTkQgZS5pbmhlcml0ZWQgPSBmYWxzZQorXGd4CisKK1NFTEVDVAor ICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cygKKyAgICAgICAgJ3N0YXRp c3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAgICAgICAnc3RhdGlzdGljc19u YW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhlcml0ZWQnLCBmYWxzZSwKKyAg ICAgICAgJ2V4cHJzJywgJ3t7MCw0LC0wLjc1LCJ7MX0iLCJ7MC41fSIsInstMSwwfSIsLTAuNixO VUxMLE5VTEwsTlVMTH0sezAuMjUsNCwtMC41LCJ7Mn0iLCJ7MC41fSIsTlVMTCwxLE5VTEwsTlVM TCxOVUxMfX0nOjp0ZXh0W10KKyAgICAgICk7CisKK1NFTEVDVAorICAgIGUuaW5oZXJpdGVkLCBl Lm51bGxfZnJhYywgZS5hdmdfd2lkdGgsIGUubl9kaXN0aW5jdCwgZS5tb3N0X2NvbW1vbl92YWxz LAorICAgIGUubW9zdF9jb21tb25fZnJlcXMsIGUuaGlzdG9ncmFtX2JvdW5kcywgZS5jb3JyZWxh dGlvbiwKKyAgICBlLm1vc3RfY29tbW9uX2VsZW1zLCBlLm1vc3RfY29tbW9uX2VsZW1fZnJlcXMs IGUuZWxlbV9jb3VudF9oaXN0b2dyYW0KK0ZST00gcGdfc3RhdHNfZXh0X2V4cHJzIEFTIGUKK1dI RVJFIGUuc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBlLnN0YXRp c3RpY3NfbmFtZSA9ICd0ZXN0X3N0YXRfY2xvbmUnCithbmQgZS5pbmhlcml0ZWQgPSBmYWxzZQor XGd4CisKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfY2xlYXJfZXh0ZW5kZWRfc3RhdHMoCisg ICAgICAgIHN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9PiAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAg c3RhdGlzdGljc19uYW1lID0+ICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICBpbmhlcml0ZWQg PT4gZmFsc2UpOworCitTRUxFQ1QgQ09VTlQoKikKK0ZST00gcGdfc3RhdHNfZXh0IEFTIGUKK1dI RVJFIGUuc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBlLnN0YXRp c3RpY3NfbmFtZSA9ICd0ZXN0X3N0YXRfY2xvbmUnCitBTkQgZS5pbmhlcml0ZWQgPSBmYWxzZTsK KworU0VMRUNUIENPVU5UKCopCitGUk9NIHBnX3N0YXRzX2V4dF9leHBycyBBUyBlCitXSEVSRSBl LnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitBTkQgZS5zdGF0aXN0aWNz X25hbWUgPSAndGVzdF9zdGF0X2Nsb25lJworQU5EIGUuaW5oZXJpdGVkID0gZmFsc2U7CisKKy0t CistLSBDb3B5IHN0YXRzIGZyb20gdGVzdF9zdGF0IHRvIHRlc3Rfc3RhdF9jbG9uZQorLS0KK1NF TEVDVAorICAgIGUuc3RhdGlzdGljc19uYW1lLAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9l eHRlbmRlZF9zdGF0cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsIGUuc3RhdGlz dGljc19zY2hlbWFuYW1lOjp0ZXh0LAorICAgICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rf c3RhdF9jbG9uZScsCisgICAgICAgICdpbmhlcml0ZWQnLCBlLmluaGVyaXRlZCwKKyAgICAgICAg J25fZGlzdGluY3QnLCBlLm5fZGlzdGluY3QsCisgICAgICAgICdkZXBlbmRlbmNpZXMnLCBlLmRl cGVuZGVuY2llcywKKyAgICAgICAgJ21vc3RfY29tbW9uX3ZhbHMnLCBlLm1vc3RfY29tbW9uX3Zh bHMsCisgICAgICAgICdtb3N0X2NvbW1vbl92YWxfbnVsbHMnLCBlLm1vc3RfY29tbW9uX3ZhbF9u dWxscywKKyAgICAgICAgJ21vc3RfY29tbW9uX2ZyZXFzJywgZS5tb3N0X2NvbW1vbl9mcmVxcywK KyAgICAgICAgJ21vc3RfY29tbW9uX2Jhc2VfZnJlcXMnLCBlLm1vc3RfY29tbW9uX2Jhc2VfZnJl cXMsCisgICAgICAgICdleHBycycsIHguZXhwcnMKKyAgICApCitGUk9NIHBnX3N0YXRzX2V4dCBB UyBlCitDUk9TUyBKT0lOIExBVEVSQUwgKAorICAgIFNFTEVDVAorICAgICAgICBhcnJheV9hZ2co CisgICAgICAgICAgICBBUlJBWVtlZS5udWxsX2ZyYWM6OnRleHQsIGVlLmF2Z193aWR0aDo6dGV4 dCwKKyAgICAgICAgICAgICAgICAgIGVlLm5fZGlzdGluY3Q6OnRleHQsIGVlLm1vc3RfY29tbW9u X3ZhbHM6OnRleHQsCisgICAgICAgICAgICAgICAgICBlZS5tb3N0X2NvbW1vbl9mcmVxczo6dGV4 dCwgZWUuaGlzdG9ncmFtX2JvdW5kczo6dGV4dCwKKyAgICAgICAgICAgICAgICAgIGVlLmNvcnJl bGF0aW9uOjp0ZXh0LCBlZS5tb3N0X2NvbW1vbl9lbGVtczo6dGV4dCwKKyAgICAgICAgICAgICAg ICAgIGVlLm1vc3RfY29tbW9uX2VsZW1fZnJlcXM6OnRleHQsCisgICAgICAgICAgICAgICAgICBl ZS5lbGVtX2NvdW50X2hpc3RvZ3JhbTo6dGV4dF0pCisgICAgRlJPTSBwZ19zdGF0c19leHRfZXhw cnMgQVMgZWUKKyAgICBXSEVSRSBlZS5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSBlLnN0YXRpc3Rp Y3Nfc2NoZW1hbmFtZQorICAgIEFORCBlZS5zdGF0aXN0aWNzX25hbWUgPSBlLnN0YXRpc3RpY3Nf bmFtZQorICAgIEFORCBlZS5pbmhlcml0ZWQgPSBlLmluaGVyaXRlZAorICAgICkgQVMgeChleHBy cykKK1dIRVJFIGUuc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBl LnN0YXRpc3RpY3NfbmFtZSA9ICd0ZXN0X3N0YXQnOworCitTRUxFQ1Qgby5pbmhlcml0ZWQsCisg ICAgICAgby5uX2Rpc3RpbmN0LCBvLmRlcGVuZGVuY2llcywgby5tb3N0X2NvbW1vbl92YWxzLAor ICAgICAgIG8ubW9zdF9jb21tb25fdmFsX251bGxzLCBvLm1vc3RfY29tbW9uX2ZyZXFzLAorICAg ICAgIG8ubW9zdF9jb21tb25fYmFzZV9mcmVxcworRlJPTSBwZ19zdGF0c19leHQgQVMgbworV0hF UkUgby5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3RhdHNfaW1wb3J0JworQU5EIG8uc3RhdGlz dGljc19uYW1lID0gJ3Rlc3Rfc3RhdCcKK0VYQ0VQVAorU0VMRUNUIG4uaW5oZXJpdGVkLAorICAg ICAgIG4ubl9kaXN0aW5jdCwgbi5kZXBlbmRlbmNpZXMsIG4ubW9zdF9jb21tb25fdmFscywKKyAg ICAgICBuLm1vc3RfY29tbW9uX3ZhbF9udWxscywgbi5tb3N0X2NvbW1vbl9mcmVxcywKKyAgICAg ICBuLm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMKK0ZST00gcGdfc3RhdHNfZXh0IEFTIG4KK1dIRVJF IG4uc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBuLnN0YXRpc3Rp Y3NfbmFtZSA9ICd0ZXN0X3N0YXRfY2xvbmUnOworCitTRUxFQ1Qgbi5pbmhlcml0ZWQsCisgICAg ICAgbi5uX2Rpc3RpbmN0LCBuLmRlcGVuZGVuY2llcywgbi5tb3N0X2NvbW1vbl92YWxzLAorICAg ICAgIG4ubW9zdF9jb21tb25fdmFsX251bGxzLCBuLm1vc3RfY29tbW9uX2ZyZXFzLAorICAgICAg IG4ubW9zdF9jb21tb25fYmFzZV9mcmVxcworRlJPTSBwZ19zdGF0c19leHQgQVMgbgorV0hFUkUg bi5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3RhdHNfaW1wb3J0JworQU5EIG4uc3RhdGlzdGlj c19uYW1lID0gJ3Rlc3Rfc3RhdF9jbG9uZScKK0VYQ0VQVAorU0VMRUNUIG8uaW5oZXJpdGVkLAor ICAgICAgIG8ubl9kaXN0aW5jdCwgby5kZXBlbmRlbmNpZXMsIG8ubW9zdF9jb21tb25fdmFscywK KyAgICAgICBvLm1vc3RfY29tbW9uX3ZhbF9udWxscywgby5tb3N0X2NvbW1vbl9mcmVxcywKKyAg ICAgICBvLm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMKK0ZST00gcGdfc3RhdHNfZXh0IEFTIG8KK1dI RVJFIG8uc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBvLnN0YXRp c3RpY3NfbmFtZSA9ICd0ZXN0X3N0YXQnOworCitTRUxFQ1Qgby5pbmhlcml0ZWQsCisgICAgICAg by5udWxsX2ZyYWMsIG8uYXZnX3dpZHRoLCBvLm5fZGlzdGluY3QsCisgICAgICAgby5tb3N0X2Nv bW1vbl92YWxzOjp0ZXh0IEFTIG1vc3RfY29tbW9uX3ZhbHMsCisgICAgICAgby5tb3N0X2NvbW1v bl9mcmVxcywKKyAgICAgICBvLmhpc3RvZ3JhbV9ib3VuZHM6OnRleHQgQVMgaGlzdG9ncmFtX2Jv dW5kcywKKyAgICAgICBvLmNvcnJlbGF0aW9uLAorICAgICAgIG8ubW9zdF9jb21tb25fZWxlbXM6 OnRleHQgQVMgbW9zdF9jb21tb25fZWxlbXMsCisgICAgICAgby5tb3N0X2NvbW1vbl9lbGVtX2Zy ZXFzLCBvLmVsZW1fY291bnRfaGlzdG9ncmFtCitGUk9NIHBnX3N0YXRzX2V4dF9leHBycyBBUyBv CitXSEVSRSBvLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitBTkQgby5z dGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0JworRVhDRVBUCitTRUxFQ1Qgbi5pbmhlcml0ZWQs CisgICAgICAgbi5udWxsX2ZyYWMsIG4uYXZnX3dpZHRoLCBuLm5fZGlzdGluY3QsCisgICAgICAg bi5tb3N0X2NvbW1vbl92YWxzOjp0ZXh0IEFTIG1vc3RfY29tbW9uX3ZhbHMsCisgICAgICAgbi5t b3N0X2NvbW1vbl9mcmVxcywKKyAgICAgICBuLmhpc3RvZ3JhbV9ib3VuZHM6OnRleHQgQVMgaGlz dG9ncmFtX2JvdW5kcywKKyAgICAgICBuLmNvcnJlbGF0aW9uLAorICAgICAgIG4ubW9zdF9jb21t b25fZWxlbXM6OnRleHQgQVMgbW9zdF9jb21tb25fZWxlbXMsCisgICAgICAgbi5tb3N0X2NvbW1v bl9lbGVtX2ZyZXFzLCBuLmVsZW1fY291bnRfaGlzdG9ncmFtCitGUk9NIHBnX3N0YXRzX2V4dF9l eHBycyBBUyBuCitXSEVSRSBuLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQn CitBTkQgbi5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0X2Nsb25lJzsKKworU0VMRUNUIG4u aW5oZXJpdGVkLAorICAgICAgIG4ubnVsbF9mcmFjLCBuLmF2Z193aWR0aCwgbi5uX2Rpc3RpbmN0 LAorICAgICAgIG4ubW9zdF9jb21tb25fdmFsczo6dGV4dCBBUyBtb3N0X2NvbW1vbl92YWxzLAor ICAgICAgIG4ubW9zdF9jb21tb25fZnJlcXMsCisgICAgICAgbi5oaXN0b2dyYW1fYm91bmRzOjp0 ZXh0IEFTIGhpc3RvZ3JhbV9ib3VuZHMsCisgICAgICAgbi5jb3JyZWxhdGlvbiwKKyAgICAgICBu Lm1vc3RfY29tbW9uX2VsZW1zOjp0ZXh0IEFTIG1vc3RfY29tbW9uX2VsZW1zLAorICAgICAgIG4u bW9zdF9jb21tb25fZWxlbV9mcmVxcywgbi5lbGVtX2NvdW50X2hpc3RvZ3JhbQorRlJPTSBwZ19z dGF0c19leHRfZXhwcnMgQVMgbgorV0hFUkUgbi5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3Rh dHNfaW1wb3J0JworQU5EIG4uc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdF9jbG9uZScKK0VY Q0VQVAorU0VMRUNUIG8uaW5oZXJpdGVkLAorICAgICAgIG8ubnVsbF9mcmFjLCBvLmF2Z193aWR0 aCwgby5uX2Rpc3RpbmN0LAorICAgICAgIG8ubW9zdF9jb21tb25fdmFsczo6dGV4dCBBUyBtb3N0 X2NvbW1vbl92YWxzLAorICAgICAgIG8ubW9zdF9jb21tb25fZnJlcXMsCisgICAgICAgby5oaXN0 b2dyYW1fYm91bmRzOjp0ZXh0IEFTIGhpc3RvZ3JhbV9ib3VuZHMsCisgICAgICAgby5jb3JyZWxh dGlvbiwKKyAgICAgICBvLm1vc3RfY29tbW9uX2VsZW1zOjp0ZXh0IEFTIG1vc3RfY29tbW9uX2Vs ZW1zLAorICAgICAgIG8ubW9zdF9jb21tb25fZWxlbV9mcmVxcywgby5lbGVtX2NvdW50X2hpc3Rv Z3JhbQorRlJPTSBwZ19zdGF0c19leHRfZXhwcnMgQVMgbworV0hFUkUgby5zdGF0aXN0aWNzX3Nj aGVtYW5hbWUgPSAnc3RhdHNfaW1wb3J0JworQU5EIG8uc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rf c3RhdCc7CisKIERST1AgU0NIRU1BIHN0YXRzX2ltcG9ydCBDQVNDQURFOwpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1hZG1pbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVu Yy1hZG1pbi5zZ21sCmluZGV4IDQ0NmZkZmU1NmY0Li4xZTE4ODBlZGI1YyAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1hZG1pbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5j L2Z1bmMtYWRtaW4uc2dtbApAQCAtMjE0Nyw2ICsyMTQ3LDEwNCBAQCBTRUxFQ1QgcGdfcmVzdG9y ZV9hdHRyaWJ1dGVfc3RhdHMoCiAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2VudHJ5PgogICAg ICAgPC9yb3c+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+Cisg ICAgICAgICA8cHJpbWFyeT5wZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzPC9wcmltYXJ5PgorICAg ICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX3Jlc3RvcmVfZXh0ZW5kZWRf c3RhdHM8L2Z1bmN0aW9uPiAoCisgICAgICAgIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPiA8 cGFyYW1ldGVyPmt3YXJnczwvcGFyYW1ldGVyPiA8dHlwZT4iYW55IjwvdHlwZT4gKQorICAgICAg ICA8cmV0dXJudmFsdWU+Ym9vbGVhbjwvcmV0dXJudmFsdWU+CisgICAgICAgIDwvcGFyYT4KKyAg ICAgICAgPHBhcmE+CisgICAgICAgICBDcmVhdGVzIG9yIHVwZGF0ZXMgc3RhdGlzdGljcyBmb3Ig c3RhdGlzdGljcyBvYmplY3RzLiAgT3JkaW5hcmlseSwKKyAgICAgICAgIHRoZXNlIHN0YXRpc3Rp Y3MgYXJlIGNvbGxlY3RlZCBhdXRvbWF0aWNhbGx5IG9yIHVwZGF0ZWQgYXMgYSBwYXJ0IG9mCisg ICAgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtdmFjdXVtIi8+IG9yIDx4cmVmIGxpbmtlbmQ9InNx bC1hbmFseXplIi8+LCBzbworICAgICAgICAgaXQncyBub3QgbmVjZXNzYXJ5IHRvIGNhbGwgdGhp cyBmdW5jdGlvbi4gIEhvd2V2ZXIsIGl0IGlzIHVzZWZ1bAorICAgICAgICAgYWZ0ZXIgYSByZXN0 b3JlIHRvIGVuYWJsZSB0aGUgb3B0aW1pemVyIHRvIGNob29zZSBiZXR0ZXIgcGxhbnMgaWYKKyAg ICAgICAgIDxjb21tYW5kPkFOQUxZWkU8L2NvbW1hbmQ+IGhhcyBub3QgYmVlbiBydW4geWV0Lgor ICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHRyYWNrZWQgc3Rh dGlzdGljcyBtYXkgY2hhbmdlIGZyb20gdmVyc2lvbiB0byB2ZXJzaW9uLCBzbworICAgICAgICAg YXJndW1lbnRzIGFyZSBwYXNzZWQgYXMgcGFpcnMgb2YgPHJlcGxhY2VhYmxlPmFyZ25hbWU8L3Jl cGxhY2VhYmxlPgorICAgICAgICAgYW5kIDxyZXBsYWNlYWJsZT5hcmd2YWx1ZTwvcmVwbGFjZWFi bGU+IGluIHRoZSBmb3JtOgorPHByb2dyYW1saXN0aW5nPgorIFNFTEVDVCBwZ19yZXN0b3JlX2V4 dGVuZGVkX3N0YXRzKAorICAgICc8cmVwbGFjZWFibGU+YXJnMW5hbWU8L3JlcGxhY2VhYmxlPics ICc8cmVwbGFjZWFibGU+YXJnMXZhbHVlPC9yZXBsYWNlYWJsZT4nOjo8cmVwbGFjZWFibGU+YXJn MXR5cGU8L3JlcGxhY2VhYmxlPiwKKyAgICAnPHJlcGxhY2VhYmxlPmFyZzJuYW1lPC9yZXBsYWNl YWJsZT4nLCAnPHJlcGxhY2VhYmxlPmFyZzJ2YWx1ZTwvcmVwbGFjZWFibGU+Jzo6PHJlcGxhY2Vh YmxlPmFyZzJ0eXBlPC9yZXBsYWNlYWJsZT4sCisgICAgJzxyZXBsYWNlYWJsZT5hcmczbmFtZTwv cmVwbGFjZWFibGU+JywgJzxyZXBsYWNlYWJsZT5hcmczdmFsdWU8L3JlcGxhY2VhYmxlPic6Ojxy ZXBsYWNlYWJsZT5hcmczdHlwZTwvcmVwbGFjZWFibGU+KTsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cisg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgZXhhbXBsZSwgdG8g c2V0IHRoZSA8c3RydWN0ZmllbGQ+bl9kaXN0aW5jdDwvc3RydWN0ZmllbGQ+LAorICAgICAgICAg PHN0cnVjdGZpZWxkPmRlcGVuZGVuY2llczwvc3RydWN0ZmllbGQ+LCBhbmQgPHN0cnVjdGZpZWxk PmV4cHJzPC9zdHJ1Y3RmaWVsZD4KKyAgICAgICAgIHZhbHVlcyBmb3IgdGhlIHN0YXRpc3RpY3Mg b2JqZWN0IDxzdHJ1Y3RuYW1lPm15c2NoZW1hLm15c3RhdHNvYmo8L3N0cnVjdG5hbWU+OgorPHBy b2dyYW1saXN0aW5nPgorIFNFTEVDVCBwZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICdz dGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnbXlzY2hlbWEnOjpuYW1lLAorICAgICdzdGF0aXN0aWNz X25hbWUnLCAgICAgICAnbXl0YWJsZSc6Om5hbWUsCisgICAgJ2luaGVyaXRlZCcsICAgICAgICAg ICAgIGZhbHNlLAorICAgICduX2Rpc3RpbmN0JywgICAgICAgICAgICAneyIyLCAzIjogNCwgIjIs IC0xIjogNCwgIjIsIC0yIjogNCwgIjMsIC0xIjogNCwgIjMsIC0yIjogNH0nOjpwZ19uZGlzdGlu Y3QsCisgICAgJ2RlcGVuZGVuY2llcycsICAgICAgICAgICd7IjIgPT4gMSI6IDEuMDAwMDAwLCAi MiA9PiAtMSI6IDEuMDAwMDAwLCAiMiA9PiAtMiI6IDEuMDAwMDAwfSc6OnBnX2RlcGVuZGVuY2ll cworICAgICdleHBycycsICAgICAgICAgICAgICAgICAne3swLDQsLTAuNzUsInsxfSIsInswLjV9 Iiwiey0xLDB9IiwtMC42LE5VTEwsTlVMTCxOVUxMfSx7MC4yNSw0LC0wLjUsInsyfSIsInswLjV9 IixOVUxMLDEsTlVMTCxOVUxMLE5VTEx9fSc6OnRleHRbXSk7Cis8L3Byb2dyYW1saXN0aW5nPgor ICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHJlcXVpcmVkIGFy Z3VtZW50cyBhcmUgPGxpdGVyYWw+c3RhdGlzdGljc19zY2hlbWFuYW1lPC9saXRlcmFsPiB3aXRo IGEgdmFsdWUKKyAgICAgICAgIG9mIHR5cGUgPHR5cGU+bmFtZTwvdHlwZT4sIHdoaWNoIHNwZWNp ZmllcyB0aGUgc3RhdGlzdGljcyBvYmplY3QncyBzY2hlbWE7CisgICAgICAgICA8bGl0ZXJhbD5z dGF0aXN0aWNzX25hbWU8L2xpdGVyYWw+IHdpdGggYSB2YWx1ZSBvZiB0eXBlIDx0eXBlPm5hbWU8 L3R5cGU+LCB3aGljaCBzcGVjaWZpZXMKKyAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSBzdGF0aXN0 aWNzIG9iamVjdDsgYW5kIDxsaXRlcmFsPmluaGVyaXRlZDwvbGl0ZXJhbD4sIHdoaWNoCisgICAg ICAgICBzcGVjaWZpZXMgd2hldGhlciB0aGUgc3RhdGlzdGljcyBpbmNsdWRlIHZhbHVlcyBmcm9t IGNoaWxkIHRhYmxlcy4KKyAgICAgICAgIE90aGVyIGFyZ3VtZW50cyBhcmUgdGhlIG5hbWVzIGFu ZCB2YWx1ZXMgb2Ygc3RhdGlzdGljcyBjb3JyZXNwb25kaW5nCisgICAgICAgICB0byBjb2x1bW5z IGluIDxsaW5rIGxpbmtlbmQ9InZpZXctcGctc3RhdHMtZXh0Ij48c3RydWN0bmFtZT5wZ19zdGF0 c19leHQ8L3N0cnVjdG5hbWU+CisgICAgICAgICA8L2xpbms+LiBUbyBhY2NlcHQgc3RhdGlzdGlj cyBmb3IgYW55IGV4cHJlc3Npb25zIGluIHRoZSBleHRlbmRlZCBzdGF0aXN0aWNzIG9iamVjdCwg dGhlCisgICAgICAgICBwYXJhbWV0ZXIgPGxpdGVyYWw+ZXhwcnM8L2xpdGVyYWw+IHdpdGggYSB0 eXBlIDx0eXBlPnRleHRbXTwvdHlwZT4gaXMgYXZhaWxhYmxlLCB0aGUgYXJyYXkKKyAgICAgICAg IG11c3QgYmUgdHdvIGRpbWVuc2lvbmFsIHdpdGggYW4gb3V0ZXIgYXJyYXkgaW4gbGVuZ3RoIGVx dWFsIHRvIHRoZSBudW1iZXIgb2YgZXhwcmVzc2lvbnMgaW4KKyAgICAgICAgIHRoZSBvYmplY3Qs IGFuZCB0aGUgaW5uZXIgYXJyYXkgZWxlbWVudHMgZm9yIGVhY2ggb2YgdGhlIHN0YXRpc3RpY2Fs IGNvbHVtbnMgaW4gPGxpbmsKKyAgICAgICAgIGxpbmtlbmQ9InZpZXctcGctc3RhdHMtZXh0LWV4 cHJzIj48c3RydWN0bmFtZT5wZ19zdGF0c19leHRfZXhwcnM8L3N0cnVjdG5hbWU+PC9saW5rPiwg c29tZQorICAgICAgICAgb2Ygd2hpY2ggYXJlIHRoZW1zZWx2ZXMgYXJyYXlzLgorICAgICAgICA8 L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIGZ1bmN0 aW9uIGFjY2VwdHMgYXJndW1lbnQgbmFtZQorICAgICAgICAgPGxpdGVyYWw+dmVyc2lvbjwvbGl0 ZXJhbD4gb2YgdHlwZSA8dHlwZT5pbnRlZ2VyPC90eXBlPiwgd2hpY2gKKyAgICAgICAgIHNwZWNp ZmllcyB0aGUgc2VydmVyIHZlcnNpb24gZnJvbSB3aGljaCB0aGUgc3RhdGlzdGljcyBvcmlnaW5h dGVkLgorICAgICAgICAgVGhpcyBpcyBhbnRpY2lwYXRlZCB0byBiZSBoZWxwZnVsIGluIHBvcnRp bmcgc3RhdGlzdGljcyBmcm9tIG9sZGVyCisgICAgICAgICB2ZXJzaW9ucyBvZiA8cHJvZHVjdG5h bWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxw YXJhPgorICAgICAgICAgTWlub3IgZXJyb3JzIGFyZSByZXBvcnRlZCBhcyBhIDxsaXRlcmFsPldB Uk5JTkc8L2xpdGVyYWw+IGFuZAorICAgICAgICAgaWdub3JlZCwgYW5kIHJlbWFpbmluZyBzdGF0 aXN0aWNzIHdpbGwgc3RpbGwgYmUgcmVzdG9yZWQuIElmIGFsbAorICAgICAgICAgc3BlY2lmaWVk IHN0YXRpc3RpY3MgYXJlIHN1Y2Nlc3NmdWxseSByZXN0b3JlZCwgcmV0dXJucworICAgICAgICAg PGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4sIG90aGVyd2lzZSA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJh bD4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgY2FsbGVy IG11c3QgaGF2ZSB0aGUgPGxpdGVyYWw+TUFJTlRBSU48L2xpdGVyYWw+IHByaXZpbGVnZSBvbiB0 aGUKKyAgICAgICAgIHRhYmxlIG9yIGJlIHRoZSBvd25lciBvZiB0aGUgZGF0YWJhc2UuCisgICAg ICAgIDwvcGFyYT4KKyAgICAgICA8L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgICA8cm93Pgor ICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij4KKyAgICAgICAgPHBhcmEgcm9s ZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgICA8cHJp bWFyeT5wZ19jbGVhcl9leHRlbmRlZF9zdGF0czwvcHJpbWFyeT4KKyAgICAgICAgIDwvaW5kZXh0 ZXJtPgorICAgICAgICAgPGZ1bmN0aW9uPnBnX2NsZWFyX2V4dGVuZGVkX3N0YXRzPC9mdW5jdGlv bj4gKAorICAgICAgICAgPHBhcmFtZXRlcj5zdGF0aXN0aWNzX3NjaGVtYW5hbWU8L3BhcmFtZXRl cj4gPHR5cGU+bmFtZTwvdHlwZT4sCisgICAgICAgICA8cGFyYW1ldGVyPnN0YXRpc3RpY3NfbmFt ZTwvcGFyYW1ldGVyPiA8dHlwZT5uYW1lPC90eXBlPiwKKyAgICAgICAgIDxwYXJhbWV0ZXI+aW5o ZXJpdGVkPC9wYXJhbWV0ZXI+IDx0eXBlPmJvb2xlYW48L3R5cGU+ICkKKyAgICAgICAgIDxyZXR1 cm52YWx1ZT52b2lkPC9yZXR1cm52YWx1ZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFy YT4KKyAgICAgICAgIENsZWFycyBzdGF0aXN0aWNzIGZvciB0aGUgZ2l2ZW4gc3RhdGlzdGljcyBv YmplY3QsIGFzCisgICAgICAgICB0aG91Z2ggdGhlIG9iamVjdCB3YXMgbmV3bHkgY3JlYXRlZC4K KyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBjYWxsZXIgbXVz dCBoYXZlIHRoZSA8bGl0ZXJhbD5NQUlOVEFJTjwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uCisgICAg ICAgICB0aGUgdGFibGUgb3IgYmUgdGhlIG93bmVyIG9mIHRoZSBkYXRhYmFzZS4KKyAgICAgICAg PC9wYXJhPgorICAgICAgIDwvZW50cnk+CisgICAgICA8L3Jvdz4KICAgICAgPC90Ym9keT4KICAg ICA8L3Rncm91cD4KICAgIDwvdGFibGU+Ci0tIAoyLjUwLjEKCg== --00000000000036beff063c2e5ec5 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0005-Include-Extended-Statistics-in-pg_dump.patch" Content-Disposition: attachment; filename="v5-0005-Include-Extended-Statistics-in-pg_dump.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me8tek914 RnJvbSBkODFiZTQ1ZWUxYTgxOWQ4MjcwNTEwMzQyODQxZjc4YjI3OTk1YTE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDb3JleSBIdWlua2VyIDxjb3JleS5odWlua2VyQGdtYWlsLmNv bT4KRGF0ZTogU2F0LCAyMSBKdW4gMjAyNSAwMzoxNjoyNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg djUgNS81XSBJbmNsdWRlIEV4dGVuZGVkIFN0YXRpc3RpY3MgaW4gcGdfZHVtcC4KCkluY29ycG9y YXRlIHRoZSBuZXcgcGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cygpIGZ1bmN0aW9uIGludG8gcGdf ZHVtcC4KVGhpcyBkZXRlY3RzIHRoZSBleGlzdGVuY2Ugb2YgZXh0ZW5kZWQgc3RhdGlzdGljcyBz dGF0aXN0aWNzIChpLmUuCnBnX3N0YXRpc3RpY19leHRfZGF0YSByb3dzKS4KClRoaXMgaGFuZGxl cyBtYW55IG9mIHRoZSBjaGFuZ2VzIHRoYXQgaGF2ZSBoYXBwZW5lZCB0byBleHRlbmRlZApzdGF0 aXN0aWMgc3RhdGlzdGljcyBvdmVyIHRoZSB2YXJpb3VzIHZlcnNpb25zLCBpbmNsdWRpbmc6Cgoq IEZvcm1hdCBjaGFuZ2UgZm9yIHBnX25kaXN0aW5jdCBhbmQgcGdfZGVwZW5kZW5jaWVzIGluIGN1 cnJlbnQKICBkZXZlbG9wbWVudCB2ZXJzaW9uLiBFYXJsaWVyIHZlcnNpb25zIGhhdmUgdGhlIGZv cm1hdCB0cmFuc2xhdGVkIHZpYQogIHRoZSBwZ19kdW1wIFNRTCBzdGF0ZW1lbnQuCgoqIEluaGVy aXRlZCBleHRlbmRlZCBzdGF0aXN0aWNzIHdlcmUgaW50cm9kdWNlZCBpbiB2MTUuCgoqIEV4cHJl c3Npb25zIHdlcmUgaW50cm9kdWNlZCB0byBleHRlbmRlZCBzdGF0aXN0aWNzIGluIHYxNC4KCiog TUNWIGV4dGVuZGVkIHN0YXRpc3RpY3Mgd2VyZSBpbnRyb2R1Y2VkIGluIHYxMy4KCiogcGdfc3Rh dGlzdGljX2V4dF9kYXRhIGFuZCBwZ19zdGF0c19leHQgaW50cm9kdWNlZCBpbiB2MTIsIHByaW9y IHRvCiAgdGhhdCBuZHN0aW5jdCBhbmQgZGVwZGVuZGVuY2llcyBkYXRhICh0aGUgb25seSBraW5k IG9mIHN0YXRzIHRoYXQKICBleGlzdGVkIHdlcmUgZGlyZWN0bHkgb24gcGdfc3RhdGlzdGljX2V4 dC4KCiogRXh0ZW5kZWQgU3RhdGlzdGljcyB3ZXJlIGludHJvZHVjZWQgaW4gdjEwLCBzbyB0aGVy ZSBpcyBubyBzdXBwb3J0IGZvcgogIHByaW9yIHZlcnNpb25zIG5lY2Vzc2FyeS4KLS0tCiBzcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwLmggICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF9hcmNoaXZlci5jIHwgICAzICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j ICAgICAgICAgICAgfCAyMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmluL3Bn X2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgfCAgMjggKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAy NjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaAppbmRleCBkOTA0 MWRhZDcyMC4uZGY3MDhlNGNlZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgKQEAgLTY4LDYgKzY4LDcgQEAg ZW51bSBfZHVtcFByZXBhcmVkUXVlcmllcwogCVBSRVBRVUVSWV9EVU1QQ09NUE9TSVRFVFlQRSwK IAlQUkVQUVVFUllfRFVNUERPTUFJTiwKIAlQUkVQUVVFUllfRFVNUEVOVU1UWVBFLAorCVBSRVBR VUVSWV9EVU1QRVhUU1RBVFNTVEFUUywKIAlQUkVQUVVFUllfRFVNUEZVTkMsCiAJUFJFUFFVRVJZ X0RVTVBPUFIsCiAJUFJFUFFVRVJZX0RVTVBSQU5HRVRZUEUsCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw X2FyY2hpdmVyLmMKaW5kZXggM2MzYWNiYWNjZGIuLmM5YTViNmU1YTc1IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC0zMDA4LDcgKzMwMDgsOCBAQCBfdG9jRW50cnlSZXF1 aXJlZChUb2NFbnRyeSAqdGUsIHRlU2VjdGlvbiBjdXJTZWN0aW9uLCBBcmNoaXZlSGFuZGxlICpB SCkKIAkJc3RyY21wKHRlLT5kZXNjLCAiU0VBUkNIUEFUSCIpID09IDApCiAJCXJldHVybiBSRVFf U1BFQ0lBTDsKIAotCWlmIChzdHJjbXAodGUtPmRlc2MsICJTVEFUSVNUSUNTIERBVEEiKSA9PSAw KQorCWlmICgoc3RyY21wKHRlLT5kZXNjLCAiU1RBVElTVElDUyBEQVRBIikgPT0gMCkgfHwKKwkJ KHN0cmNtcCh0ZS0+ZGVzYywgIkVYVEVOREVEIFNUQVRJU1RJQ1MgREFUQSIpID09IDApKQogCXsK IAkJaWYgKCFyb3B0LT5kdW1wU3RhdGlzdGljcykKIAkJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5k ZXggZmM3YTY2MzkxNjMuLmVhNDk0ZDk2MDVkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTMyNCw2ICszMjQs NyBAQCBzdGF0aWMgdm9pZCBkdW1wU2VxdWVuY2VEYXRhKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRh YmxlRGF0YUluZm8gKnRkaW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wSW5kZXgoQXJjaGl2ZSAqZm91 dCwgY29uc3QgSW5keEluZm8gKmluZHhpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBJbmRleEF0dGFj aChBcmNoaXZlICpmb3V0LCBjb25zdCBJbmRleEF0dGFjaEluZm8gKmF0dGFjaGluZm8pOwogc3Rh dGljIHZvaWQgZHVtcFN0YXRpc3RpY3NFeHQoQXJjaGl2ZSAqZm91dCwgY29uc3QgU3RhdHNFeHRJ bmZvICpzdGF0c2V4dGluZm8pOworc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3NFeHRTdGF0cyhB cmNoaXZlICpmb3V0LCBjb25zdCBTdGF0c0V4dEluZm8gKnN0YXRzZXh0aW5mbyk7CiBzdGF0aWMg dm9pZCBkdW1wQ29uc3RyYWludChBcmNoaXZlICpmb3V0LCBjb25zdCBDb25zdHJhaW50SW5mbyAq Y29uaW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wVGFibGVDb25zdHJhaW50Q29tbWVudChBcmNoaXZl ICpmb3V0LCBjb25zdCBDb25zdHJhaW50SW5mbyAqY29uaW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1w VFNQYXJzZXIoQXJjaGl2ZSAqZm91dCwgY29uc3QgVFNQYXJzZXJJbmZvICpwcnNpbmZvKTsKQEAg LTgxNzcsNiArODE3OCw5IEBAIGdldEV4dGVuZGVkU3RhdGlzdGljcyhBcmNoaXZlICpmb3V0KQog CiAJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLwogCQlzZWxlY3REdW1w YWJsZVN0YXRpc3RpY3NPYmplY3QoJihzdGF0c2V4dGluZm9baV0pLCBmb3V0KTsKKworCQlpZiAo Zm91dC0+ZG9wdC0+ZHVtcFN0YXRpc3RpY3MpCisJCQlzdGF0c2V4dGluZm9baV0uZG9iai5jb21w b25lbnRzIHw9IERVTVBfQ09NUE9ORU5UX1NUQVRJU1RJQ1M7CiAJfQogCiAJUFFjbGVhcihyZXMp OwpAQCAtMTE2MjksNiArMTE2MzMsNyBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2ZSAqZm91 dCwgRHVtcGFibGVPYmplY3QgKmRvYmopCiAJCQlicmVhazsKIAkJY2FzZSBET19TVEFUU0VYVDoK IAkJCWR1bXBTdGF0aXN0aWNzRXh0KGZvdXQsIChjb25zdCBTdGF0c0V4dEluZm8gKikgZG9iaik7 CisJCQlkdW1wU3RhdGlzdGljc0V4dFN0YXRzKGZvdXQsIChjb25zdCBTdGF0c0V4dEluZm8gKikg ZG9iaik7CiAJCQlicmVhazsKIAkJY2FzZSBET19SRUZSRVNIX01BVFZJRVc6CiAJCQlyZWZyZXNo TWF0Vmlld0RhdGEoZm91dCwgKGNvbnN0IFRhYmxlRGF0YUluZm8gKikgZG9iaik7CkBAIC0xODQz Miw2ICsxODQzNywyMzAgQEAgZHVtcFN0YXRpc3RpY3NFeHQoQXJjaGl2ZSAqZm91dCwgY29uc3Qg U3RhdHNFeHRJbmZvICpzdGF0c2V4dGluZm8pCiAJZnJlZShxc3RhdHNleHRuYW1lKTsKIH0KIAor LyoKKyAqIGR1bXBTdGF0aXN0aWNzRXh0U3RhdHMKKyAqCSAgd3JpdGUgb3V0IHRvIGZvdXQgdGhl IHN0YXRzIGZvciBhbiBleHRlbmRlZCBzdGF0aXN0aWNzIG9iamVjdAorICovCitzdGF0aWMgdm9p ZAorZHVtcFN0YXRpc3RpY3NFeHRTdGF0cyhBcmNoaXZlICpmb3V0LCBjb25zdCBTdGF0c0V4dElu Zm8gKnN0YXRzZXh0aW5mbykKK3sKKwlEdW1wT3B0aW9ucyAqZG9wdCA9IGZvdXQtPmRvcHQ7CisJ UFFFeHBCdWZmZXIgcXVlcnk7CisJUEdyZXN1bHQgICAqcmVzOworCWludAkJCW5zdGF0czsKKwor CS8qIERvIG5vdGhpbmcgaWYgbm90IGR1bXBpbmcgc3RhdGlzdGljcyAqLworCWlmICghZG9wdC0+ ZHVtcFN0YXRpc3RpY3MpCisJCXJldHVybjsKKworCWlmICghZm91dC0+aXNfcHJlcGFyZWRbUFJF UFFVRVJZX0RVTVBFWFRTVEFUU1NUQVRTXSkKKwl7CisJCVBRRXhwQnVmZmVyIHBxID0gY3JlYXRl UFFFeHBCdWZmZXIoKTsKKworCQkvKgorCQkgKiBTZXQgdXAgcXVlcnkgZm9yIGNvbnN0cmFpbnQt c3BlY2lmaWMgZGV0YWlscy4KKwkJICoKKwkJICogMTkrOiBxdWVyeSBwZ19zdGF0c19leHQgYW5k IHBnX3N0YXRzX2V4dF9leHBycyBhcy1pcyAxNS0xODogcXVlcnkKKwkJICogcGdfc3RhdHNfZXh0 IHRyYW5zbGF0aW5nIHRoZSBuZGlzdGluY3QgYW5kIGRlcGRlbmRlbmNpZXMsIDE0OgorCQkgKiBp bmhlcml0ZWQgaXMgYWx3YXlzIE5VTEwgMTItMTM6IG5vIHBnX3N0YXRzX2V4dF9leHBycyAxMC0x MTogbm8KKwkJICogcGdfc3RhdHNfZXh0LCBqb2luIHBnX3N0YXRpc3RpY19leHQgYW5kIHBnX25h bWVzcGFjZQorCQkgKi8KKworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihwcSwKKwkJCQkJCQkgIlBS RVBBUkUgZ2V0RXh0U3RhdHNTdGF0cyhwZ19jYXRhbG9nLm5hbWUsIHBnX2NhdGFsb2cubmFtZSkg QVNcbiIKKwkJCQkJCQkgIlNFTEVDVCAiKTsKKworCQkvKiBWZXJzaW9ucyAxNSsgaGF2ZSBpbmhl cml0ZWQgc3RhdHMgKi8KKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCQkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocHEsICJlLmluaGVyaXRlZCwgIik7CisJCWVsc2UKKwkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHBxLCAiZmFsc2UgQVMgaW5oZXJpdGVkLCAiKTsKKworCQkvKgor CQkgKiBWZXJzaW9ucyA8IDE5IHVzZSB0aGUgb2xkIG5kaXN0aW50aW5jdCBhbmQgZGVwZGVuZGVu Y2llcyBmb3JtYXRzCisJCSAqIFZlcnNpb25zIDwgMTIgdXNlIHRoZSBwZ19zdGF0aXN0aWNfZXh0 IGNvbHVtbnMKKwkJICoKKwkJICogVE9ETzogVW50aWwgdjE4IGlzIHJlbGVhc2VkIHRoZSBtYXN0 ZXIgYnJhbmNoIGhhcyBhCisJCSAqIHNlcnZlcl92ZXJzaW9uX251bSBvZiAxODAwMDAuIFdlIHdp bGwgdXBkYXRlIHRoaXMgdG8gMTkwMDAwIGFzIHNvb24KKwkJICogYXMgdGhlIG1hc3RlciBicmFu Y2ggdXBkYXRlcy4KKwkJICovCisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE4MDAwMCkK KwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBxLCAiZS5uX2Rpc3RpbmN0LCBlLmRlcGVuZGVuY2ll cywgIik7CisJCWVsc2UKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBxLAorCQkJCQkJCQkgIigg IgorCQkJCQkJCQkgIlNFTEVDVCBqc29uX2FnZyggIgorCQkJCQkJCQkgIiAgICBqc29uX2J1aWxk X29iamVjdCggIgorCQkJCQkJCQkgIiAgICAgICAgJ2F0dHJpYnV0ZXMnLCAiCisJCQkJCQkJCSAi ICAgICAgICAgc3RyaW5nX3RvX2FycmF5KGt2LmtleSwgJywgJyk6OmludGVnZXJbXSwgIgorCQkJ CQkJCQkgIiAgICAgICAgJ25kaXN0aW5jdCcsICIKKwkJCQkJCQkJICIgICAgICAgIGt2LnZhbHVl OjpiaWdpbnQgKSkgIgorCQkJCQkJCQkgIkZST00ganNvbl9lYWNoX3RleHQoZS5uX2Rpc3RpbmN0 Ojp0ZXh0Ojpqc29uKSBBUyBrdiIKKwkJCQkJCQkJICIpIEFTIG5fZGlzdGluY3QsICIKKwkJCQkJ CQkJICIoICIKKwkJCQkJCQkJICJTRUxFQ1QganNvbl9hZ2coICIKKwkJCQkJCQkJICIgICAganNv bl9idWlsZF9vYmplY3QoICIKKwkJCQkJCQkJICIgICAgICAgICdhdHRyaWJ1dGVzJywgIgorCQkJ CQkJCQkgIiAgICAgICAgc3RyaW5nX3RvX2FycmF5KCAiCisJCQkJCQkJCSAiICAgICAgICAgICAg c3BsaXRfcGFydChrdi5rZXksICcgPT4gJywgMSksICIKKwkJCQkJCQkJICIgICAgICAgICAgICAn LCAnKTo6aW50ZWdlcltdLCAiCisJCQkJCQkJCSAiICAgICAgICAnZGVwZW5kZW5jeScsICIKKwkJ CQkJCQkJICIgICAgICAgIHNwbGl0X3BhcnQoa3Yua2V5LCAnID0+ICcsIDIpOjppbnRlZ2VyLCAi CisJCQkJCQkJCSAiICAgICAgICAnZGVncmVlJywgIgorCQkJCQkJCQkgIiAgICAgICAga3YudmFs dWU6OmRvdWJsZSBwcmVjaXNpb24gKSkgIgorCQkJCQkJCQkgIkZST00ganNvbl9lYWNoX3RleHQo ZS5kZXBlbmRlbmNpZXM6OnRleHQ6Ompzb24pIEFTIGt2ICIKKwkJCQkJCQkJICIpIEFTIGRlcGVu ZGVuY2llcywgIik7CisKKwkJLyogVmVyc2lvbnMgPCAxMiBkbyBub3QgaGF2ZSBNQ1YgKi8KKwkJ aWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTMwMDAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocHEsCisJCQkJCQkJCSAiZS5tb3N0X2NvbW1vbl92YWxzLCBlLm1vc3RfY29tbW9uX3ZhbF9u dWxscywgIgorCQkJCQkJCQkgImUubW9zdF9jb21tb25fZnJlcXMsIGUubW9zdF9jb21tb25fYmFz ZV9mcmVxcywgIik7CisJCWVsc2UKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBxLAorCQkJCQkJ CQkgIk5VTEwgQVMgbW9zdF9jb21tb25fdmFscywgTlVMTCBBUyBtb3N0X2NvbW1vbl92YWxfbnVs bHMsICIKKwkJCQkJCQkJICJOVUxMIEFTIG1vc3RfY29tbW9uX2ZyZXFzLCBOVUxMIEFTIG1vc3Rf Y29tbW9uX2Jhc2VfZnJlcXMsICIpOworCisJCS8qIEV4cHJlc3Npb25zIHdlcmUgaW50cm9kdWNl ZCBpbiB2MTQgKi8KKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTQwMDAwKQorCQl7CisJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihwcSwKKwkJCQkJCQkJICIoICIKKwkJCQkJCQkJICJTRUxF Q1QgYXJyYXlfYWdnKCAiCisJCQkJCQkJCSAiICAgIEFSUkFZW2VlLm51bGxfZnJhYzo6dGV4dCwg ZWUuYXZnX3dpZHRoOjp0ZXh0LCAiCisJCQkJCQkJCSAiICAgICAgICAgIGVlLm5fZGlzdGluY3Q6 OnRleHQsIGVlLm1vc3RfY29tbW9uX3ZhbHM6OnRleHQsICIKKwkJCQkJCQkJICIgICAgICAgICAg ZWUubW9zdF9jb21tb25fZnJlcXM6OnRleHQsIGVlLmhpc3RvZ3JhbV9ib3VuZHM6OnRleHQsICIK KwkJCQkJCQkJICIgICAgICAgICAgZWUuY29ycmVsYXRpb246OnRleHQsIGVlLm1vc3RfY29tbW9u X2VsZW1zOjp0ZXh0LCAiCisJCQkJCQkJCSAiICAgICAgICAgIGVlLm1vc3RfY29tbW9uX2VsZW1f ZnJlcXM6OnRleHQsICIKKwkJCQkJCQkJICIgICAgICAgICAgZWUuZWxlbV9jb3VudF9oaXN0b2dy YW06OnRleHRdKSAiCisJCQkJCQkJCSAiRlJPTSBwZ19zdGF0c19leHRfZXhwcnMgQVMgZWUgIgor CQkJCQkJCQkgIldIRVJFIGVlLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICQxICIKKwkJCQkJCQkJ ICJBTkQgZWUuc3RhdGlzdGljc19uYW1lID0gJDIgIik7CisKKwkJCS8qIEluaGVyaXRlZCBleHBy ZXNzaW9ucyBpbnRyb2R1Y2VkIGluIHYxNSAqLworCQkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24g Pj0gMTUwMDAwKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBxLCAiQU5EIGVlLmluaGVyaXRl ZCA9IGUuaW5oZXJpdGVkIik7CisKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBxLCAiKSBBUyBl eHBycyAiKTsKKwkJfQorCQllbHNlCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihwcSwgIk5VTEwg QVMgZXhwcnMgIik7CisKKwkJLyogcGdfc3RhdHNfZXh0IGludHJvZHVjZWQgaW4gdjEyICovCisJ CWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEyMDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHBxLAorCQkJCQkJCQkgIkZST00gcGdfY2F0YWxvZy5wZ19zdGF0c19leHQgQVMgZSAiCisJ CQkJCQkJCSAiV0hFUkUgZS5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAkMSAiCisJCQkJCQkJCSAi QU5EIGUuc3RhdGlzdGljc19uYW1lID0gJDIgIik7CisJCWVsc2UKKwkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHBxLAorCQkJCQkJCQkgIkZST00gKCAiCisJCQkJCQkJCSAiU0VMRUNUIHMuc3R4bmRp c3RpbmN0IEFTIG5fZGlzdGluY3QsICIKKwkJCQkJCQkJICIgICAgcy5zdHhkZXBlbmRlbmNpZXMg QVMgZGVwZW5kZW5jaWVzICIKKwkJCQkJCQkJICJGUk9NIHBnX2NhdGFsb2cucGdfc3RhdGlzdGlj c19leHQgQVMgcyAiCisJCQkJCQkJCSAiSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBBUyBu ICIKKwkJCQkJCQkJICJPTiBuLm9pZCA9IHMuc3R4bmFtZXNwYWNlICIKKwkJCQkJCQkJICJXSEVS RSBuLm5zcG5hbWUgPSAkMSAiCisJCQkJCQkJCSAiQU5EIGUuc3R4bmFtZSA9ICQyICIKKwkJCQkJ CQkJICIpIEFTIGUgIik7CisKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocHEsICJPUkRFUiBCWSBl LmluaGVyaXRlZCIpOworCisJCUV4ZWN1dGVTcWxTdGF0ZW1lbnQoZm91dCwgcHEtPmRhdGEpOwor CisJCWZvdXQtPmlzX3ByZXBhcmVkW1BSRVBRVUVSWV9EVU1QRVhUU1RBVFNTVEFUU10gPSB0cnVl OworCisJCWRlc3Ryb3lQUUV4cEJ1ZmZlcihwcSk7CisJfQorCisJcXVlcnkgPSBjcmVhdGVQUUV4 cEJ1ZmZlcigpOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJFWEVDVVRFIGdldEV4 dFN0YXRzU3RhdHMoIik7CisJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHF1ZXJ5LCBzdGF0c2V4dGlu Zm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsIGZvdXQpOworCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LCAiOjpwZ19jYXRhbG9nLm5hbWUsICIpOworCWFwcGVuZFN0cmluZ0xpdGVyYWxB SChxdWVyeSwgc3RhdHNleHRpbmZvLT5kb2JqLm5hbWUsIGZvdXQpOworCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiOjpwZ19jYXRhbG9nLm5hbWUpIik7CisKKwlyZXMgPSBFeGVjdXRlU3Fs UXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CisKKwlkZXN0cm95UFFF eHBCdWZmZXIocXVlcnkpOworCisJbnN0YXRzID0gUFFudHVwbGVzKHJlcyk7CisKKwlpZiAobnN0 YXRzID4gMCkKKwl7CisJCVBRRXhwQnVmZmVyIG91dCA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisK KwkJaW50CQkJaV9pbmhlcml0ZWQgPSBQUWZudW1iZXIocmVzLCAiaW5oZXJpdGVkIik7CisJCWlu dAkJCWlfbmRpc3RpbmN0ID0gUFFmbnVtYmVyKHJlcywgIm5fZGlzdGluY3QiKTsKKwkJaW50CQkJ aV9kZXBlbmRlbmNpZXMgPSBQUWZudW1iZXIocmVzLCAiZGVwZW5kZW5jaWVzIik7CisJCWludAkJ CWlfbWN2ID0gUFFmbnVtYmVyKHJlcywgIm1vc3RfY29tbW9uX3ZhbHMiKTsKKwkJaW50CQkJaV9t Y3ZfbnVsbHMgPSBQUWZudW1iZXIocmVzLCAibW9zdF9jb21tb25fdmFsX251bGxzIik7CisJCWlu dAkJCWlfbWNmID0gUFFmbnVtYmVyKHJlcywgIm1vc3RfY29tbW9uX2ZyZXFzIik7CisJCWludAkJ CWlfbWNiZiA9IFBRZm51bWJlcihyZXMsICJtb3N0X2NvbW1vbl9iYXNlX2ZyZXFzIik7CisJCWlu dAkJCWlfZXhwcnMgPSBQUWZudW1iZXIocmVzLCAiZXhwcnMiKTsKKworCQlmb3IgKGludCBpID0g MDsgaSA8IG5zdGF0czsgaSsrKQorCQl7CisJCQlpZiAoUFFnZXRpc251bGwocmVzLCBpLCBpX2lu aGVyaXRlZCkpCisJCQkJcGdfZmF0YWwoImluaGVyaXRlZCBjYW5ub3QgYmUgTlVMTCIpOworCisJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihvdXQsCisJCQkJCQkJCSAiU0VMRUNUICogRlJPTSBwZ19j YXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoXG4iKTsKKwkJCWFwcGVuZFBRRXhwQnVm ZmVyKG91dCwgIlx0J3ZlcnNpb24nLCAnJWQnOjppbnRlZ2VyLFxuIiwKKwkJCQkJCQkgIGZvdXQt PnJlbW90ZVZlcnNpb24pOworCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIob3V0LCAiXHQnc3RhdGlz dGljc19zY2hlbWFuYW1lJywgIik7CisJCQlhcHBlbmRTdHJpbmdMaXRlcmFsQUgob3V0LCBzdGF0 c2V4dGluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsIGZvdXQpOworCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIob3V0LCAiLFxuXHQnc3RhdGlzdGljc19uYW1lJywgIik7CisJCQlhcHBlbmRT dHJpbmdMaXRlcmFsQUgob3V0LCBzdGF0c2V4dGluZm8tPmRvYmoubmFtZSwgZm91dCk7CisJCQlh cHBlbmROYW1lZEFyZ3VtZW50KG91dCwgZm91dCwgImluaGVyaXRlZCIsICJib29sZWFuIiwKKwkJ CQkJCQkJUFFnZXR2YWx1ZShyZXMsIGksIGlfaW5oZXJpdGVkKSk7CisKKwkJCWlmICghUFFnZXRp c251bGwocmVzLCBpLCBpX25kaXN0aW5jdCkpCisJCQkJYXBwZW5kTmFtZWRBcmd1bWVudChvdXQs IGZvdXQsICJuX2Rpc3RpbmN0IiwgInBnX25kaXN0aW5jdCIsCisJCQkJCQkJCQlQUWdldHZhbHVl KHJlcywgaSwgaV9uZGlzdGluY3QpKTsKKworCQkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIGlf ZGVwZW5kZW5jaWVzKSkKKwkJCQlhcHBlbmROYW1lZEFyZ3VtZW50KG91dCwgZm91dCwgImRlcGVu ZGVuY2llcyIsICJwZ19kZXBlbmRlbmNpZXMiLAorCQkJCQkJCQkJUFFnZXR2YWx1ZShyZXMsIGks IGlfZGVwZW5kZW5jaWVzKSk7CisKKwkJCWlmICghUFFnZXRpc251bGwocmVzLCBpLCBpX21jdikp CisJCQkJYXBwZW5kTmFtZWRBcmd1bWVudChvdXQsIGZvdXQsICJtb3N0X2NvbW1vbl92YWxzIiwg InRleHRbXSIsCisJCQkJCQkJCQlQUWdldHZhbHVlKHJlcywgaSwgaV9tY3YpKTsKKworCQkJaWYg KCFQUWdldGlzbnVsbChyZXMsIGksIGlfbWN2X251bGxzKSkKKwkJCQlhcHBlbmROYW1lZEFyZ3Vt ZW50KG91dCwgZm91dCwgIm1vc3RfY29tbW9uX3ZhbF9udWxscyIsICJib29sZWFuW10iLAorCQkJ CQkJCQkJUFFnZXR2YWx1ZShyZXMsIGksIGlfbWN2X251bGxzKSk7CisKKwkJCWlmICghUFFnZXRp c251bGwocmVzLCBpLCBpX21jZikpCisJCQkJYXBwZW5kTmFtZWRBcmd1bWVudChvdXQsIGZvdXQs ICJtb3N0X2NvbW1vbl9mcmVxcyIsICJkb3VibGUgcHJlY2lzaW9uW10iLAorCQkJCQkJCQkJUFFn ZXR2YWx1ZShyZXMsIGksIGlfbWNmKSk7CisKKwkJCWlmICghUFFnZXRpc251bGwocmVzLCBpLCBp X21jYmYpKQorCQkJCWFwcGVuZE5hbWVkQXJndW1lbnQob3V0LCBmb3V0LCAibW9zdF9jb21tb25f YmFzZV9mcmVxcyIsICJkb3VibGUgcHJlY2lzaW9uW10iLAorCQkJCQkJCQkJUFFnZXR2YWx1ZShy ZXMsIGksIGlfbWNiZikpOworCisJCQlpZiAoIVBRZ2V0aXNudWxsKHJlcywgaSwgaV9leHBycykp CisJCQkJYXBwZW5kTmFtZWRBcmd1bWVudChvdXQsIGZvdXQsICJleHBycyIsICJ0ZXh0W10iLAor CQkJCQkJCQkJUFFnZXR2YWx1ZShyZXMsIGksIGlfZXhwcnMpKTsKKworCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIob3V0LCAiXG4pO1xuIik7CisJCX0KKworCQlBcmNoaXZlRW50cnkoZm91dCwgbmls Q2F0YWxvZ0lkLCBjcmVhdGVEdW1wSWQoKSwKKwkJCQkJIEFSQ0hJVkVfT1BUUygudGFnID0gc3Rh dHNleHRpbmZvLT5kb2JqLm5hbWUsCisJCQkJCQkJCSAgLm5hbWVzcGFjZSA9IHN0YXRzZXh0aW5m by0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJCQkJICAub3duZXIgPSBzdGF0c2V4 dGluZm8tPnJvbG5hbWUsCisJCQkJCQkJCSAgLmRlc2NyaXB0aW9uID0gIkVYVEVOREVEIFNUQVRJ U1RJQ1MgREFUQSIsCisJCQkJCQkJCSAgLnNlY3Rpb24gPSBTRUNUSU9OX1BPU1RfREFUQSwKKwkJ CQkJCQkJICAuY3JlYXRlU3RtdCA9IG91dC0+ZGF0YSwKKwkJCQkJCQkJICAuZGVwcyA9ICZzdGF0 c2V4dGluZm8tPmRvYmouZHVtcElkLAorCQkJCQkJCQkgIC5uRGVwcyA9IDEpKTsKKwkJZGVzdHJv eVBRRXhwQnVmZmVyKG91dCk7CisJfQorCVBRY2xlYXIocmVzKTsKK30KKwogLyoKICAqIGR1bXBD b25zdHJhaW50CiAgKgkgIHdyaXRlIG91dCB0byBmb3V0IGEgdXNlci1kZWZpbmVkIGNvbnN0cmFp bnQKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggZTdhMmQ2NGY3NDEuLjA4YTFmYzNmYTAz IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtNTAxMyw2ICs1MDEzLDM0IEBAIG15ICV0 ZXN0cyA9ICgKIAkJfSwKIAl9LAogCisJIworCSMgRVhURU5ERUQgc3RhdHMgd2lsbCBlbmQgdXAg aW4gU0VDVElPTl9QT1NUX0RBVEEuCisJIworCSdleHRlbmRlZF9zdGF0aXN0aWNzX2ltcG9ydCcg PT4geworCQljcmVhdGVfc3FsID0+ICcKKwkJCUNSRUFURSBUQUJMRSBkdW1wX3Rlc3QuaGFzX2V4 dF9zdGF0cworCQkJQVMgU0VMRUNUIGcuZyBBUyB4LCBnLmcgLyAyIEFTIHkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwxMDApIEFTIGcoZyk7CisJCQlDUkVBVEUgU1RBVElTVElDUyBkdW1wX3Rlc3Qu ZXMxIE9OIHgsICh5ICUgMikgRlJPTSBkdW1wX3Rlc3QuaGFzX2V4dF9zdGF0czsKKwkJCUFOQUxZ WkUgZHVtcF90ZXN0Lmhhc19leHRfc3RhdHM7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRU0VM RUNUICogRlJPTSBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoXEVccysveG0s CisJCWxpa2UgPT4geworCQkJJWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMs CisJCQlub19kYXRhX25vX3NjaGVtYSA9PiAxLAorCQkJbm9fc2NoZW1hID0+IDEsCisJCQlzZWN0 aW9uX3Bvc3RfZGF0YSA9PiAxLAorCQkJc3RhdGlzdGljc19vbmx5ID0+IDEsCisJCQlzY2hlbWFf b25seV93aXRoX3N0YXRpc3RpY3MgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1 ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAorCQkJbm9fc3RhdGlzdGljcyA9PiAxLAorCQkJb25s eV9kdW1wX21lYXN1cmVtZW50ID0+IDEsCisJCQlzY2hlbWFfb25seSA9PiAxLAorCQl9LAorCX0s CisKIAkjCiAJIyBXaGlsZSBhdHRyaWJ1dGUgc3RhdHMgKGFrYSBwZ19zdGF0aXN0aWMgc3RhdHMp IG9ubHkgYXBwZWFyIGZvciB0YWJsZXMKIAkjIHRoYXQgaGF2ZSBiZWVuIGFuYWx5emVkLCBhbGwg dGFibGVzIHdpbGwgaGF2ZSByZWxhdGlvbiBzdGF0cyBiZWNhdXNlCi0tIAoyLjUwLjEKCg== --00000000000036beff063c2e5ec5--