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 1t9AWY-008AQG-3v for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Nov 2024 21:58:41 +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 1t9AWV-0036Qo-Fg for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Nov 2024 21:58:40 +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 1t9AWV-0036Qg-1U for pgsql-hackers@lists.postgresql.org; Thu, 07 Nov 2024 21:58:39 +0000 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t9AWR-000k2t-M8 for pgsql-hackers@postgresql.org; Thu, 07 Nov 2024 21:58:39 +0000 Received: by mail-pf1-x441.google.com with SMTP id d2e1a72fcca58-720d01caa66so1365416b3a.2 for ; Thu, 07 Nov 2024 13:58:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731016715; x=1731621515; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ocGD9vUE7hrBZexUmmZTsL3/qIt52PwaEvFZRtAV0Fk=; b=QEFmFaUgBNmKAwj7vu9K1f/rSGywkmDoClWEBg8ecbJxMPQ8LmuIxRgTcnupOyKWKZ fzDOfHqaHTH/W9zEnjTMj+kljsFZGhzAaDDVD1OBNOWxoPsuUTZ2JPwQHbJTC2XSE61M AEXFQ9Zd0GkHhQFVyKZr/5WbctpvVNkpKBBHaCihZ2k50mzPaLU0y3etVaz24uZCAGGL tYUfJh2ssIm193i7vzQ8uIgDFPaZR0pR4gtldKgg9BysHPnbovv0naJxVFvdClA8iT6W UgvAP5JC/1GIog8eUNonZsz+nw3ORTc3vN34qf87Uzb4Vwj6wr3Ar7FQz1QMj7bVoFMs YsqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731016715; x=1731621515; 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=ocGD9vUE7hrBZexUmmZTsL3/qIt52PwaEvFZRtAV0Fk=; b=Yj5tKACmKj05v/CqDKbTmT7cuhXPVmh+CPAaCNsiP3yIkElIWo8jczUczKJGKCQ8i1 YN8A95aOnidSRIwG0eRPm9+WA5QqZ+dhbIWA+QcldVutC3SXmNAmAjdvbJMWkqprpX5Y hwMxetj5ZQh/Rvz/ffaOn43IEHo28YNM9MmyvVLRyKVbZXqYwm4ldQ4/K15qzJv+NrxU +xK0fwzkakmnzvAaxHyzQX5kCmARiwBmCgvcLFJYFwTtSyuVsQsce75x1W9zpc1YuwqS luCQpJ2FH0g5SJa0adVxUrXSko6b4Pu42NSgQ2Uu7ablQtYYWgJ0QzqgvWt13op4KG6q LcZg== X-Forwarded-Encrypted: i=1; AJvYcCWEEuLZsEkpKkCLyDf8e1Esh+yXJYkEt+hjKmYKMxi5fBEtRHKzfOtYCKZEWtnNO3TJjm9yu51rLhVfTJMS@postgresql.org X-Gm-Message-State: AOJu0Yw4MYfRBbUFe5RSHn8wJcZlCamvO7R5NEny+LIzekTyQN1HgLjU zynay+sIewzk8o9fgo0Y3ZYfa0JNbuCHHvWln3G7E9Cs4Nvodx6ohEwsaonF2+wHnlAztzX2tBn g6sE/qDA8wVOLfl9fCY2LlhmFuo4= X-Google-Smtp-Source: AGHT+IHUnmI03F90ouVixT5W+f7OBx9UGRyG82Wcb83xAEcSbGPBvZnzy0HOBVXfnZjyhPEy8eSPUtSRwSZvJj1jzS8= X-Received: by 2002:a05:6a00:22cd:b0:71e:581f:7d7e with SMTP id d2e1a72fcca58-724132cd0f9mr734148b3a.15.1731016714824; Thu, 07 Nov 2024 13:58:34 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Alexandra Wang Date: Thu, 7 Nov 2024 15:57:58 -0600 Message-ID: Subject: Re: SQL:2023 JSON simplified accessor support To: jian he , Andrew Dunstan Cc: Peter Eisentraut , PostgreSQL Hackers , david@justatheory.com Content-Type: multipart/mixed; boundary="000000000000635113062659bce4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000635113062659bce4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Oct 4, 2024 at 7:33=E2=80=AFAM jian he wrote: > > On Thu, Sep 26, 2024 at 11:45=E2=80=AFPM Alexandra Wang > wrote: > > > > Hi, > > > > I didn=E2=80=99t run pgindent earlier, so here=E2=80=99s the updated ve= rsion with the > > correct indentation. Hope this helps! > > > > the attached patch solves the domain type issue, Andrew mentioned in the = thread. > > I also added a test case: composite over jsonb domain type, > > > it still works. for example: > create domain json_d as jsonb; > create type test as (a int, b json_d); > create table t1(a test); > insert into t1 select $$(1,"{""a"": 3, ""key1"": {""c"": ""42""}, > ""key2"": [11, 12]}") $$; > insert into t1 select $$ (1,"{""a"": 3, ""key1"": {""c"": ""42""}, > ""key2"": [11, 12, {""x"": [31, 42]}]}") $$; > > select (t1.a).b.key2[2].x[1] from t1; > select (t1.a).b.key1.c from t1; Thank you so much, Jian, for reviewing the patch and providing a fix! I=E2=80=99ve integrated your fix into the attached v5 patch. Inspired by yo= ur test case, I discovered another issue with domains over JSON: top-level JSON array access to a domain over JSON when the domain is a field of a composite type. Here=E2=80=99s an example: create domain json_d as json; create type test as (a int, b json_d); create table t1(a test); insert into t1 select $$ (1,"[{""a"": 3}, {""key1"": {""c"": ""42""}}, {""key2"": [11, 12]}]") $$; select (t1.a).b[0] from t1; The v5 patch includes the following updates: - Fixed the aforementioned issue and added more tests covering composite types with domains, nested domains, and arrays of domains over JSON/JSONB. - Refactored the logic for parsing JSON/JSONB object fields by moving it from ParseFuncOrColumn() to transformIndirection() for improved readability. The ParseFuncOrColumn() function is already handling both single-argument function calls and composite types, and it has other callers besides transformIndirection(). Best, Alex --000000000000635113062659bce4 Content-Type: application/x-patch; name="v5-0001-Add-JSON-JSONB-simplified-accessor.patch" Content-Disposition: attachment; filename="v5-0001-Add-JSON-JSONB-simplified-accessor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m37ugvzn0 RnJvbSA0NGQ3MWM5MzY0ZmI4ZTllOGM1N2E1MzkwZWE1YzRhM2Y3ZTM3MWUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVGh1LCA3IE5vdiAyMDI0IDE1OjE0OjUwIC0wNjAwClN1YmplY3Q6IFtQ QVRDSCB2NV0gQWRkIEpTT04vSlNPTkIgc2ltcGxpZmllZCBhY2Nlc3NvcgoKVGhpcyBwYXRjaCBp bXBsZW1lbnRzIEpTT04vSlNPTkIgbWVtYmVyIGFjY2Vzc29yIGFuZCBKU09OL0pTT05CIGFycmF5 CmFjY2Vzc29yIGFzIHNwZWNpZmllZCBpbiBTUUwgMjAyMy4gU3BlY2lmaWNhbGx5LCB0aGUgZm9s bG93aW5nIHN5dGF4ZXMKYXJlIGFkZGVkOgoKMS4gU2ltcGxlIGRvdC1ub3RhdGlvbiBhY2Nlc3Mg dG8gSlNPTiBhbmQgSlNPTkIgb2JqZWN0IGZpZWxkcwoyLiBTdWJzY3JpcHRpbmcgZm9yIGluZGV4 ZWQgYWNjZXNzIHRvIEpTT04gYXJyYXkgZWxlbWVudHMKCkV4YW1wbGVzOgoKLS0gU2V0dXAKY3Jl YXRlIHRhYmxlIHQoeCBpbnQsIHkganNvbik7Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEi OiAxLCAiYiI6IDQyfSc6Ompzb247Cmluc2VydCBpbnRvIHQgc2VsZWN0IDEsICd7ImEiOiAyLCAi YiI6IHsiYyI6IDQyfX0nOjpqc29uOwppbnNlcnQgaW50byB0IHNlbGVjdCAxLCAneyJhIjogMywg ImIiOiB7ImMiOiAiNDIifSwgImQiOlsxMSwgMTJdfSc6Ompzb247CgotLSBFeGlzdGluZyBzeW50 YXggcHJlZGF0ZXMgdGhlIFNRTCBzdGFuZGFyZDoKc2VsZWN0ICh0LnkpLT4nYicgZnJvbSB0Owpz ZWxlY3QgKHQueSktPidiJy0+J2MnIGZyb20gdDsKc2VsZWN0ICh0LnkpLT4nZCctPjAgZnJvbSB0 OwoKLS0gSlNPTiBzaW1wbGlmaWVkIGFjY2Vzc29yIHNwZWNpZmllZCBieSB0aGUgU1FMIHN0YW5k YXJkOgpzZWxlY3QgKHQueSkuYiBmcm9tIHQ7CnNlbGVjdCAodC55KS5iLmMgZnJvbSB0OwpzZWxl Y3QgKHQueSkuZFswXSBmcm9tIHQ7CgpUaGUgU1FMIHN0YW5kYXJkIHN0YXRlcyB0aGF0IHNpbXBs aWZpZWQgYWNjZXNzIGlzIGVxdWl2YWxlbnQgdG86CkpTT05fUVVFUlkgKFZFUCwgJ2xheCAkLkpD JyBXSVRIIENPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIgTlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVS Uk9SKQoKd2hlcmUgVkVQIGlzIHRoZSA8dmFsdWUgZXhwcmVzc2lvbiBwcmltYXJ5PiBhbmQgSkMg aXMgdGhlIDxKU09OCnNpbXBsaWZpZWQgYWNjZXNzb3Igb3AgY2hhaW4+LiBGb3IgZXhhbXBsZSwg dGhlIEpTT05fUVVFUlkgZXF1YWxhbGVuY2UKb2YgdGhlIGFib3ZlIHF1ZXJpZXMgaXM6CgpzZWxl Y3QganNvbl9xdWVyeSh5LCAnbGF4ICQuYicgV0lUSCBDT05ESVRJT05BTCBBUlJBWSBXUkFQUEVS IE5VTEwgT04gRU1QVFkgTlVMTCBPTiBFUlJPUikgZnJvbSB0OwpzZWxlY3QganNvbl9xdWVyeSh5 LCAnbGF4ICQuYi5jJyBXSVRIIENPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIgTlVMTCBPTiBFTVBU WSBOVUxMIE9OIEVSUk9SKSBmcm9tIHQ7CnNlbGVjdCBqc29uX3F1ZXJ5KHksICdsYXggJC5kWzBd JyBXSVRIIENPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIgTlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVS Uk9SKSBmcm9tIHQ7CgpUaGlzIGltcGxlbWVudGF0aW9uIGVuYWJsZXMgZG90LW5vdGF0aW9uIGFj Y2VzcyB0byBKU09OL0pTT05CIG9iamVjdApieSBtYWtpbmcgYSBzeW50YXRpYyBzdWdhciBmb3Ig dGhlIGpzb25fb2JqZWN0X2ZpZWxkICItPiIgb3BlcmF0b3IgaW4KUGFyc2VGdW5jT3JDb2x1bW4o KSBmb3IgYXJnIG9mIEpTT04vSlNPTkIgdHlwZS4KClNpbWlsYXJseSwgSlNPTiBhcnJheSBhY2Nl c3MgdmlhIHN1YnNjcmlwdGluZyBpcyBlbmFibGVkIGJ5IGNyZWF0aW5nCmFuIE9wRXhwciBmb3Ig dGhlIGV4aXN0aW5nICItPiIgb3BlcmF0b3IuIE5vdGUgdGhhdCB0aGUgSlNPTiBzdWJzY3JpcHRp bmcKaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50IGZyb20gdGhlIEpTT05CIHN1YnNjcmlwdGlu ZyBjb3VudGVycGFydCwKYXMgdGhlIGZvcm1lciBsZXZlcmFnZXMgdGhlICItPiIgb3BlcmF0b3Ig ZGlyZWN0bHksIHdoaWxlIHRoZSBsYXR0ZXIKdXNlcyB0aGUgbW9yZSBnZW5lcmljIFN1YnNjcmlw dGluZ1JlZiBpbnRlcmZhY2UuCgpEb21haW5zIG92ZXIgSlNPTi9KU09OQiB0eXBlcyBhcmUgYWxz byBzdXBwcG9ydGVkLgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgIHwg IDM3ICsrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAgICB8ICA4NSArKysr KysrKystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdCB8ICAgNiArLQogc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX2Z1bmMuaCAgICAgfCAgIDQgKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qc29uLm91dCAgfCAyNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgfCAyMjggKysrKysrKysrKysrKysr KysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb24uc3FsICAgICAgIHwgIDg2ICsr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCAgICAgIHwgIDgzICsrKysr KysrKysKIDggZmlsZXMgY2hhbmdlZCwgNzYzIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IGMyODA2Mjk3YWEuLjlhMGVmNTliNGMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNDUxLDcgKzQ1MSwxNiBAQCB0cmFuc2Zvcm1JbmRp cmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJTm9kZQkg ICAqbiA9IGxmaXJzdChpKTsKIAogCQlpZiAoSXNBKG4sIEFfSW5kaWNlcykpCi0JCQlzdWJzY3Jp cHRzID0gbGFwcGVuZChzdWJzY3JpcHRzLCBuKTsKKwkJeworCQkJaWYgKGV4cHJUeXBlKHJlc3Vs dCkgPT0gSlNPTk9JRCB8fCBnZXRCYXNlVHlwZShleHByVHlwZShyZXN1bHQpKSA9PSBKU09OT0lE KQorCQkJCXJlc3VsdCA9IFBhcnNlSnNvblNpbXBsaWZpZWRBY2Nlc3NvckFycmF5RWxlbWVudChw c3RhdGUsCisJCQkJCQkJCQkJCQkJCQkJIGNhc3ROb2RlKEFfSW5kaWNlcywgbiksCisJCQkJCQkJ CQkJCQkJCQkJIHJlc3VsdCwKKwkJCQkJCQkJCQkJCQkJCQkgbG9jYXRpb24pOworCQkJZWxzZQor CQkJCXN1YnNjcmlwdHMgPSBsYXBwZW5kKHN1YnNjcmlwdHMsIG4pOworCQl9CisKIAkJZWxzZSBp ZiAoSXNBKG4sIEFfU3RhcikpCiAJCXsKIAkJCWVyZXBvcnQoRVJST1IsCkBAIC00NjIsNiArNDcx LDggQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0 aW9uICppbmQpCiAJCWVsc2UKIAkJewogCQkJTm9kZQkgICAqbmV3cmVzdWx0OworCQkJT2lkCQkJ cmVzdWx0X3R5cGlkOworCQkJT2lkCQkJcmVzdWx0X2Jhc2V0eXBpZDsKIAogCQkJQXNzZXJ0KElz QShuLCBTdHJpbmcpKTsKIApAQCAtNDc1LDEzICs0ODYsMjMgQEAgdHJhbnNmb3JtSW5kaXJlY3Rp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCQkJCQkJCQkJCQkJ CQkgICBmYWxzZSk7CiAJCQlzdWJzY3JpcHRzID0gTklMOwogCi0JCQluZXdyZXN1bHQgPSBQYXJz ZUZ1bmNPckNvbHVtbihwc3RhdGUsCi0JCQkJCQkJCQkJICBsaXN0X21ha2UxKG4pLAotCQkJCQkJ CQkJCSAgbGlzdF9tYWtlMShyZXN1bHQpLAotCQkJCQkJCQkJCSAgbGFzdF9zcmYsCi0JCQkJCQkJ CQkJICBOVUxMLAotCQkJCQkJCQkJCSAgZmFsc2UsCi0JCQkJCQkJCQkJICBsb2NhdGlvbik7CisJ CQlyZXN1bHRfdHlwaWQgPSBleHByVHlwZShyZXN1bHQpOworCQkJcmVzdWx0X2Jhc2V0eXBpZCA9 IChyZXN1bHRfdHlwaWQgPT0gSlNPTk9JRCB8fCByZXN1bHRfdHlwaWQgPT0gSlNPTkJPSUQpID8K KwkJCQlyZXN1bHRfdHlwaWQgOiBnZXRCYXNlVHlwZShyZXN1bHRfdHlwaWQpOworCisJCQlpZiAo cmVzdWx0X2Jhc2V0eXBpZCA9PSBKU09OT0lEIHx8IHJlc3VsdF9iYXNldHlwaWQgPT0gSlNPTkJP SUQpCisJCQkJbmV3cmVzdWx0ID0gUGFyc2VKc29uU2ltcGxpZmllZEFjY2Vzc29yT2JqZWN0Rmll bGQocHN0YXRlLAorCQkJCQkJCQkJCQkJCQkJCSAgIHN0clZhbChuKSwKKwkJCQkJCQkJCQkJCQkJ CQkgICByZXN1bHQsCisJCQkJCQkJCQkJCQkJCQkJICAgbG9jYXRpb24sIHJlc3VsdF9iYXNldHlw aWQpOworCQkJZWxzZQorCQkJCW5ld3Jlc3VsdCA9IFBhcnNlRnVuY09yQ29sdW1uKHBzdGF0ZSwK KwkJCQkJCQkJCQkJICBsaXN0X21ha2UxKG4pLAorCQkJCQkJCQkJCQkgIGxpc3RfbWFrZTEocmVz dWx0KSwKKwkJCQkJCQkJCQkJICBsYXN0X3NyZiwKKwkJCQkJCQkJCQkJICBOVUxMLAorCQkJCQkJ CQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJCQkgIGxvY2F0aW9uKTsKIAkJCWlmIChuZXdyZXN1bHQg PT0gTlVMTCkKIAkJCQl1bmtub3duX2F0dHJpYnV0ZShwc3RhdGUsIHJlc3VsdCwgc3RyVmFsKG4p LCBsb2NhdGlvbik7CiAJCQlyZXN1bHQgPSBuZXdyZXN1bHQ7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMu YwppbmRleCA5YjIzMzQ0YTNiLi4xZjUzNzM2Y2UwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMK QEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVk ZSAicGFyc2VyL3BhcnNlX29wZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yX2Qu aCIKIAogCiAvKiBQb3NzaWJsZSBlcnJvciBjb2RlcyBmcm9tIExvb2t1cEZ1bmNOYW1lSW50ZXJu YWwgKi8KQEAgLTUzLDcgKzU1LDYgQEAgc3RhdGljIE9pZAlMb29rdXBGdW5jTmFtZUludGVybmFs KE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqZnVuY25hbWUsCiAJCQkJCQkJCSAgIGJvb2wgaW5j bHVkZV9vdXRfYXJndW1lbnRzLCBib29sIG1pc3Npbmdfb2ssCiAJCQkJCQkJCSAgIEZ1bmNMb29r dXBFcnJvciAqbG9va3VwRXJyb3IpOwogCi0KIC8qCiAgKglQYXJzZSBhIGZ1bmN0aW9uIGNhbGwK ICAqCkBAIC0xOTAyLDYgKzE5MDMsODggQEAgRnVuY05hbWVBc1R5cGUoTGlzdCAqZnVuY25hbWUp CiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIFBhcnNlSnNvblNpbXBsaWZpZWRBY2Nlc3Nv ckFycmF5RWxlbWVudCAtCisgKgkgIHRyYW5zZm9ybSBqc29uIHN1YnNjcmlwdCBpbnRvIGpzb25f YXJyYXlfZWxlbWVudCBvcGVyYXRvci4KKyAqLworTm9kZSAqCitQYXJzZUpzb25TaW1wbGlmaWVk QWNjZXNzb3JBcnJheUVsZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGljZXMgKnN1YnNj cmlwdCwKKwkJCQkJCQkJCQlOb2RlICpmaXJzdF9hcmcsIGludCBsb2NhdGlvbikKK3sKKwlPcEV4 cHIJICAgKnJlc3VsdDsKKwlOb2RlCSAgICppbmRleDsKKworCWlmIChleHByVHlwZShmaXJzdF9h cmcpICE9IEpTT05PSUQgJiYgZ2V0QmFzZVR5cGUoZXhwclR5cGUoZmlyc3RfYXJnKSkgIT0gSlNP Tk9JRCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygianNvbiBzdWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9y dCB0eXBlIG9pZDogJXUiLAorCQkJCQkJZXhwclR5cGUoZmlyc3RfYXJnKSkpLAorCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSk7CisKKwlpZiAoc3Vic2NyaXB0LT5pc19z bGljZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygianNvbiBzdWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9y dCBzbGljZXMiKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKTsK KworCWluZGV4ID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIHN1YnNjcmlwdC0+dWlkeCwgcHN0YXRl LT5wX2V4cHJfa2luZCk7CisJaWYgKCFJc0EoaW5kZXgsIENvbnN0KSB8fAorCQljYXN0Tm9kZShD b25zdCwgaW5kZXgpLT5jb25zdHR5cGUgIT0gSU5UNE9JRCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygi anNvbiBzdWJzY3JpcHQgbXVzdCBiZSBjb2VyY2libGUgdG8gaW50ZWdlciIpKSwKKwkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oaW5kZXgpKSk7CisKKwlyZXN1bHQg PSBtYWtlTm9kZShPcEV4cHIpOworCXJlc3VsdC0+b3BubyA9IE9JRF9KU09OX0FSUkFZX0VMRU1F TlRfT1A7CisJcmVzdWx0LT5vcHJlc3VsdHR5cGUgPSBKU09OT0lEOworCXJlc3VsdC0+b3BmdW5j aWQgPSBnZXRfb3Bjb2RlKHJlc3VsdC0+b3Bubyk7CisJcmVzdWx0LT5hcmdzID0gbGlzdF9tYWtl MihmaXJzdF9hcmcsIGluZGV4KTsKKwlyZXN1bHQtPmxvY2F0aW9uID0gZXhwckxvY2F0aW9uKGlu ZGV4KTsKKworCXJldHVybiAoTm9kZSAqKSByZXN1bHQ7Cit9CisKKy8qCisgKiBQYXJzZUpzb25T aW1wbGlmaWVkQWNjZXNzb3JPYmplY3RGaWVsZCAtCisgKgkgIGhhbmRsZXMgZnVuY3Rpb24gY2Fs bHMgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCB0aGF0IGlzIG9mIGpzb24gdHlwZS4KKyAqCSAgSWYg dGhlIGZ1bmN0aW9uIGNhbGwgaXMgYWN0dWFsbHkgYSBjb2x1bW4gcHJvamVjdGlvbiwgcmV0dXJu IGEgc3VpdGFibHkKKyAqCSAgdHJhbnNmb3JtZWQgZXhwcmVzc2lvbiB0cmVlLiAgSWYgbm90LCBy ZXR1cm4gTlVMTC4KKyAqLworTm9kZSAqCitQYXJzZUpzb25TaW1wbGlmaWVkQWNjZXNzb3JPYmpl Y3RGaWVsZChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAorCQkJCQkJ CQkJICAgTm9kZSAqZmlyc3RfYXJnLCBpbnQgbG9jYXRpb24sIE9pZCBiYXNldHlwaWQpCit7CisJ T3BFeHByCSAgICpyZXN1bHQ7CisJTm9kZQkgICAqcmV4cHI7CisKKwlyZXN1bHQgPSBtYWtlTm9k ZShPcEV4cHIpOworCXJlc3VsdC0+b3ByZXN1bHR0eXBlID0gYmFzZXR5cGlkOworCXN3aXRjaCAo YmFzZXR5cGlkKQorCXsKKwkJY2FzZSBKU09OT0lEOgorCQkJcmVzdWx0LT5vcG5vID0gT0lEX0pT T05fT0JKRUNUX0ZJRUxEX09QOworCQkJYnJlYWs7CisJCWNhc2UgSlNPTkJPSUQ6CisJCQlyZXN1 bHQtPm9wbm8gPSBPSURfSlNPTkJfT0JKRUNUX0ZJRUxEX09QOworCQkJYnJlYWs7CisJCWRlZmF1 bHQ6CisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgdHlwZSBPSUQ6ICV1IiwgYmFzZXR5cGlk KTsKKwl9CisJcmVzdWx0LT5vcGZ1bmNpZCA9IGdldF9vcGNvZGUocmVzdWx0LT5vcG5vKTsKKwly ZXhwciA9IChOb2RlICopIG1ha2VDb25zdCgKKwkJCQkJCQkgICBURVhUT0lELAorCQkJCQkJCSAg IC0xLAorCQkJCQkJCSAgIEludmFsaWRPaWQsCisJCQkJCQkJICAgLTEsCisJCQkJCQkJICAgQ1N0 cmluZ0dldFRleHREYXR1bShmdW5jbmFtZSksCisJCQkJCQkJICAgZmFsc2UsCisJCQkJCQkJICAg ZmFsc2UpOworCXJlc3VsdC0+YXJncyA9IGxpc3RfbWFrZTIoZmlyc3RfYXJnLCByZXhwcik7CisJ cmVzdWx0LT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCXJldHVybiAoTm9kZSAqKSByZXN1bHQ7Cit9 CisKIC8qCiAgKiBQYXJzZUNvbXBsZXhQcm9qZWN0aW9uIC0KICAqCSAgaGFuZGxlcyBmdW5jdGlv biBjYWxscyB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMgb2YgY29tcGxleCB0eXBlLgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGVyYXRvci5kYXQgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdAppbmRleCAwZTc1MTFkZGUxLi5lMzc1YzQ5MjUy IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdApAQCAtMzE1NCwxMyArMzE1NCwxMyBA QAogICBvcHJuYW1lID0+ICcqJywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9PiAn YW55cmFuZ2UnLAogICBvcHJyZXN1bHQgPT4gJ2FueXJhbmdlJywgb3ByY29tID0+ICcqKGFueXJh bmdlLGFueXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ3JhbmdlX2ludGVyc2VjdCcgfSwKLXsgb2lk ID0+ICczOTYyJywgZGVzY3IgPT4gJ2dldCBqc29uIG9iamVjdCBmaWVsZCcsCit7IG9pZCA9PiAn Mzk2MicsIG9pZF9zeW1ib2wgPT4gJ09JRF9KU09OX09CSkVDVF9GSUVMRF9PUCcsIGRlc2NyID0+ ICdnZXQganNvbiBvYmplY3QgZmllbGQnLAogICBvcHJuYW1lID0+ICctPicsIG9wcmxlZnQgPT4g J2pzb24nLCBvcHJyaWdodCA9PiAndGV4dCcsIG9wcnJlc3VsdCA9PiAnanNvbicsCiAgIG9wcmNv ZGUgPT4gJ2pzb25fb2JqZWN0X2ZpZWxkJyB9LAogeyBvaWQgPT4gJzM5NjMnLCBkZXNjciA9PiAn Z2V0IGpzb24gb2JqZWN0IGZpZWxkIGFzIHRleHQnLAogICBvcHJuYW1lID0+ICctPj4nLCBvcHJs ZWZ0ID0+ICdqc29uJywgb3BycmlnaHQgPT4gJ3RleHQnLCBvcHJyZXN1bHQgPT4gJ3RleHQnLAog ICBvcHJjb2RlID0+ICdqc29uX29iamVjdF9maWVsZF90ZXh0JyB9LAoteyBvaWQgPT4gJzM5NjQn LCBkZXNjciA9PiAnZ2V0IGpzb24gYXJyYXkgZWxlbWVudCcsCit7IG9pZCA9PiAnMzk2NCcsIG9p ZF9zeW1ib2wgPT4gJ09JRF9KU09OX0FSUkFZX0VMRU1FTlRfT1AnLCBkZXNjciA9PiAnZ2V0IGpz b24gYXJyYXkgZWxlbWVudCcsCiAgIG9wcm5hbWUgPT4gJy0+Jywgb3BybGVmdCA9PiAnanNvbics IG9wcnJpZ2h0ID0+ICdpbnQ0Jywgb3BycmVzdWx0ID0+ICdqc29uJywKICAgb3ByY29kZSA9PiAn anNvbl9hcnJheV9lbGVtZW50JyB9LAogeyBvaWQgPT4gJzM5NjUnLCBkZXNjciA9PiAnZ2V0IGpz b24gYXJyYXkgZWxlbWVudCBhcyB0ZXh0JywKQEAgLTMxNzIsNyArMzE3Miw3IEBACiB7IG9pZCA9 PiAnMzk2NycsIGRlc2NyID0+ICdnZXQgdmFsdWUgZnJvbSBqc29uIGFzIHRleHQgd2l0aCBwYXRo IGVsZW1lbnRzJywKICAgb3BybmFtZSA9PiAnIz4+Jywgb3BybGVmdCA9PiAnanNvbicsIG9wcnJp Z2h0ID0+ICdfdGV4dCcsIG9wcnJlc3VsdCA9PiAndGV4dCcsCiAgIG9wcmNvZGUgPT4gJ2pzb25f ZXh0cmFjdF9wYXRoX3RleHQnIH0sCi17IG9pZCA9PiAnMzIxMScsIGRlc2NyID0+ICdnZXQganNv bmIgb2JqZWN0IGZpZWxkJywKK3sgb2lkID0+ICczMjExJywgb2lkX3N5bWJvbCA9PiAnT0lEX0pT T05CX09CSkVDVF9GSUVMRF9PUCcsIGRlc2NyID0+ICdnZXQganNvbmIgb2JqZWN0IGZpZWxkJywK ICAgb3BybmFtZSA9PiAnLT4nLCBvcHJsZWZ0ID0+ICdqc29uYicsIG9wcnJpZ2h0ID0+ICd0ZXh0 Jywgb3BycmVzdWx0ID0+ICdqc29uYicsCiAgIG9wcmNvZGUgPT4gJ2pzb25iX29iamVjdF9maWVs ZCcgfSwKIHsgb2lkID0+ICczNDc3JywgZGVzY3IgPT4gJ2dldCBqc29uYiBvYmplY3QgZmllbGQg YXMgdGV4dCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZnVuYy5oIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2Z1bmMuaAppbmRleCBjN2JhOTlkZWU3Li42NGE2MDAw NzljIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZnVuYy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9mdW5jLmgKQEAgLTM0LDYgKzM0LDEwIEBAIHR5cGVkZWYg ZW51bQogZXh0ZXJuIE5vZGUgKlBhcnNlRnVuY09yQ29sdW1uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg TGlzdCAqZnVuY25hbWUsIExpc3QgKmZhcmdzLAogCQkJCQkJCSAgIE5vZGUgKmxhc3Rfc3JmLCBG dW5jQ2FsbCAqZm4sIGJvb2wgcHJvY19jYWxsLAogCQkJCQkJCSAgIGludCBsb2NhdGlvbik7Citl eHRlcm4gTm9kZSAqUGFyc2VKc29uU2ltcGxpZmllZEFjY2Vzc29yT2JqZWN0RmllbGQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKKwkJCQkJCQkJCQkJCQlOb2RlICpm aXJzdF9hcmcsIGludCBsb2NhdGlvbiwgT2lkIGJhc2V0eXBpZCk7CitleHRlcm4gTm9kZSAqUGFy c2VKc29uU2ltcGxpZmllZEFjY2Vzc29yQXJyYXlFbGVtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwg QV9JbmRpY2VzICpzdWJzY3JpcHQsCisJCQkJCQkJCQkJCQkJIE5vZGUgKmZpcnN0X2FyZywgaW50 IGxvY2F0aW9uKTsKIAogZXh0ZXJuIEZ1bmNEZXRhaWxDb2RlIGZ1bmNfZ2V0X2RldGFpbChMaXN0 ICpmdW5jbmFtZSwKIAkJCQkJCQkJCSAgTGlzdCAqZmFyZ3MsIExpc3QgKmZhcmduYW1lcywKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbi5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2pzb24ub3V0CmluZGV4IDk2YzQwOTExY2IuLjlkYTdkYmEwNjggMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbi5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9qc29uLm91dApAQCAtMjcxNiwzICsyNzE2LDI0OSBAQCBzZWxl Y3QgdHNfaGVhZGxpbmUoJ1tdJzo6anNvbiwgdHNxdWVyeSgnYWFhICYgYmJiJykpOwogIFtdCiAo MSByb3cpCiAKKy0tIHNpbXBsZSBkb3Qgbm90YXRpb24KK2Ryb3AgdGFibGUgaWYgZXhpc3RzIHRl c3RfanNvbl9kb3Q7CitOT1RJQ0U6ICB0YWJsZSAidGVzdF9qc29uX2RvdCIgZG9lcyBub3QgZXhp c3QsIHNraXBwaW5nCitjcmVhdGUgdGFibGUgdGVzdF9qc29uX2RvdChpZCBpbnQsIHRlc3RfanNv biBqc29uKTsKK2luc2VydCBpbnRvIHRlc3RfanNvbl9kb3Qgc2VsZWN0IDEsICd7ImEiOiAxLCAi YiI6IDQyfSc6Ompzb247CitpbnNlcnQgaW50byB0ZXN0X2pzb25fZG90IHNlbGVjdCAxLCAneyJh IjogMiwgImIiOiB7ImMiOiA0Mn19Jzo6anNvbjsKK2luc2VydCBpbnRvIHRlc3RfanNvbl9kb3Qg c2VsZWN0IDEsICd7ImEiOiAzLCAiYiI6IHsiYyI6ICI0MiJ9LCAiZCI6WzExLCAxMl19Jzo6anNv bjsKK2luc2VydCBpbnRvIHRlc3RfanNvbl9kb3Qgc2VsZWN0IDEsICd7ImEiOiAzLCAiYiI6IHsi YyI6ICI0MiJ9LCAiZCI6W3sieCI6IFsxMSwgMTJdfSwgeyJ5IjogWzIxLCAyMl19XX0nOjpqc29u OworLS0gbWVtYmVyIG9iamVjdCBhY2Nlc3MKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0X2pz b24pLmIsIGpzb25fcXVlcnkodGVzdF9qc29uLCAnbGF4ICQuYicgV0lUSCBDT05ESVRJT05BTCBX UkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBFUlJPUikgYXMgZXhwZWN0ZWQgZnJvbSB0ZXN0 X2pzb25fZG90OworICAgICAgYiAgICAgIHwgIGV4cGVjdGVkICAgCistLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKyA0MiAgICAgICAgICB8IDQyCisgeyJjIjogNDJ9ICAgfCB7ImMiOiA0Mn0K KyB7ImMiOiAiNDIifSB8IHsiYyI6ICI0MiJ9CisgeyJjIjogIjQyIn0gfCB7ImMiOiAiNDIifQor KDQgcm93cykKKworc2VsZWN0ICh0ZXN0X2pzb25fZG90LnRlc3RfanNvbikuYi5jLCBqc29uX3F1 ZXJ5KHRlc3RfanNvbiwgJ2xheCAkLmIuYycgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIE5VTEwg T04gRU1QVFkgTlVMTCBPTiBFUlJPUikgYXMgZXhwZWN0ZWQgZnJvbSB0ZXN0X2pzb25fZG90Owor ICBjICAgfCBleHBlY3RlZCAKKy0tLS0tLSstLS0tLS0tLS0tCisgICAgICB8IAorIDQyICAgfCA0 MgorICI0MiIgfCAiNDIiCisgIjQyIiB8ICI0MiIKKyg0IHJvd3MpCisKK3NlbGVjdCAodGVzdF9q c29uX2RvdC50ZXN0X2pzb24pLmQsIGpzb25fcXVlcnkodGVzdF9qc29uLCAnbGF4ICQuZCcgV0lU SCBDT05ESVRJT05BTCBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBFUlJPUikgYXMgZXhw ZWN0ZWQgZnJvbSB0ZXN0X2pzb25fZG90OworICAgICAgICAgICAgICAgICBkICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgZXhwZWN0ZWQgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgCisgWzExLCAxMl0gICAgICAgICAgICAgICAgICAg ICAgICAgICB8IFsxMSwgMTJdCisgW3sieCI6IFsxMSwgMTJdfSwgeyJ5IjogWzIxLCAyMl19XSB8 IFt7IngiOiBbMTEsIDEyXX0sIHsieSI6IFsyMSwgMjJdfV0KKyg0IHJvd3MpCisKK3NlbGVjdCAo dGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLiJkIiwganNvbl9xdWVyeSh0ZXN0X2pzb24sICdsYXgg JC5kJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgTlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9S KSBhcyBleHBlY3RlZCBmcm9tIHRlc3RfanNvbl9kb3Q7CisgICAgICAgICAgICAgICAgIGQgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICBleHBlY3RlZCAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyBbMTEsIDEyXSAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgWzExLCAxMl0KKyBbeyJ4IjogWzExLCAxMl19LCB7InkiOiBbMjEs IDIyXX1dIHwgW3sieCI6IFsxMSwgMTJdfSwgeyJ5IjogWzIxLCAyMl19XQorKDQgcm93cykKKwor c2VsZWN0ICh0ZXN0X2pzb25fZG90LnRlc3RfanNvbikuJ2QnIGZyb20gdGVzdF9qc29uX2RvdDsK K0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIidkJyIKK0xJTkUgMTogc2VsZWN0ICh0 ZXN0X2pzb25fZG90LnRlc3RfanNvbikuJ2QnIGZyb20gdGVzdF9qc29uX2RvdDsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorc2VsZWN0ICh0ZXN0X2pzb25fZG90 LnRlc3RfanNvbilbJ2QnXSBmcm9tIHRlc3RfanNvbl9kb3Q7CitFUlJPUjogIGpzb24gc3Vic2Ny aXB0IG11c3QgYmUgY29lcmNpYmxlIHRvIGludGVnZXIKK0xJTkUgMTogc2VsZWN0ICh0ZXN0X2pz b25fZG90LnRlc3RfanNvbilbJ2QnXSBmcm9tIHRlc3RfanNvbl9kb3Q7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHdpbGRjYXJkIGFjY2VzcyBpcyBub3Qg c3VwcG9ydGVkCitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS4qIGZyb20gdGVzdF9q c29uX2RvdDsKK0VSUk9SOiAgdHlwZSBqc29uIGlzIG5vdCBjb21wb3NpdGUKKy0tIGFycmF5IGVs ZW1lbnQgYWNjZXNzCitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS5kLT4wIGZyb20g dGVzdF9qc29uX2RvdDsKKyAgICA/Y29sdW1uPyAgICAgCistLS0tLS0tLS0tLS0tLS0tLQorIAor IAorIDExCisgeyJ4IjogWzExLCAxMl19CisoNCByb3dzKQorCitzZWxlY3QgKHRlc3RfanNvbl9k b3QudGVzdF9qc29uKS5kWzBdLCBqc29uX3F1ZXJ5KHRlc3RfanNvbiwgJ2xheCAkLmRbMF0nIFdJ VEggQ09ORElUSU9OQUwgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJST1IpIGFzIGV4 cGVjdGVkIGZyb20gdGVzdF9qc29uX2RvdDsKKyAgICAgICAgZCAgICAgICAgfCAgICBleHBlY3Rl ZCAgICAgCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAgICB8IAorICAgICAgICAgICAgICAgICB8IAorIDExICAgICAgICAgICAgICB8IDExCisgeyJ4 IjogWzExLCAxMl19IHwgeyJ4IjogWzExLCAxMl19CisoNCByb3dzKQorCitzZWxlY3QgKHRlc3Rf anNvbl9kb3QudGVzdF9qc29uKS5kWzFdLCBqc29uX3F1ZXJ5KHRlc3RfanNvbiwgJ2xheCAkLmRb MV0nIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJST1Ip IGFzIGV4cGVjdGVkIGZyb20gdGVzdF9qc29uX2RvdDsKKyAgICAgICAgZCAgICAgICAgfCAgICBl eHBlY3RlZCAgICAgCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICB8IAorICAgICAgICAgICAgICAgICB8IAorIDEyICAgICAgICAgICAgICB8IDEy CisgeyJ5IjogWzIxLCAyMl19IHwgeyJ5IjogWzIxLCAyMl19CisoNCByb3dzKQorCitzZWxlY3Qg KHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS5kWzA6XSBmcm9tIHRlc3RfanNvbl9kb3Q7CitFUlJP UjogIGpzb24gc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCitMSU5FIDE6IHNlbGVj dCAodGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLmRbMDpdIGZyb20gdGVzdF9qc29uX2RvdDsKKyAg ICAgICAgICAgICAgICBeCitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS5kWzA6Omlu dF0gZnJvbSB0ZXN0X2pzb25fZG90OworICAgICAgICBkICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tCisgCisgCisgMTEKKyB7IngiOiBbMTEsIDEyXX0KKyg0IHJvd3MpCisKK3NlbGVjdCAodGVz dF9qc29uX2RvdC50ZXN0X2pzb24pLmRbMDo6ZmxvYXRdIGZyb20gdGVzdF9qc29uX2RvdDsKK0VS Uk9SOiAganNvbiBzdWJzY3JpcHQgbXVzdCBiZSBjb2VyY2libGUgdG8gaW50ZWdlcgorTElORSAx OiBzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS5kWzA6OmZsb2F0XSBmcm9tIHRlc3Rf anNvbl8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitz ZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS5kWzBdLnhbMV0sIGpzb25fcXVlcnkodGVz dF9qc29uLCAnbGF4ICQuZFswXS54WzFdJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgTlVMTCBP TiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBhcyBleHBlY3RlZCBmcm9tIHRlc3RfanNvbl9kb3Q7Cisg eCAgfCBleHBlY3RlZCAKKy0tLS0rLS0tLS0tLS0tLQorICAgIHwgCisgICAgfCAKKyAgICB8IAor IDEyIHwgMTIKKyg0IHJvd3MpCisKKy0tIGNvbXBsZXggdHlwZSB3aXRoIGRvbWFpbiBvdmVyIGpz b24KK2NyZWF0ZSBkb21haW4ganNvbl9kIGFzIGpzb247CitjcmVhdGUgdHlwZSBjb21wX2pzb24g YXMgKGEgaW50LCBiIGpzb25fZCk7CitjcmVhdGUgdGFibGUgdGVzdF9qc29uX2RvbWFpbl9kb3Qo YSBjb21wX2pzb24pOworaW5zZXJ0IGludG8gdGVzdF9qc29uX2RvbWFpbl9kb3Qgc2VsZWN0ICQk ICgxLCJ7IiJhIiI6IDMsICIia2V5MSIiOiB7IiJjIiI6ICIiNDIiIn0sICIia2V5MiIiOiBbMTEs IDEyXX0iKSAkJDsKK2luc2VydCBpbnRvIHRlc3RfanNvbl9kb21haW5fZG90IHNlbGVjdCAkJCAo MSwieyIiYSIiOiAzLCAiImtleTEiIjogeyIiYyIiOiAiIjQyIiJ9LCAiImtleTIiIjogWzExLCAx MiwgeyIieCIiOiBbMzEsIDQyXX1dfSIpICQkOworLS1vYmplY3QgYWNjZXNzCitzZWxlY3QgKHRl c3RfanNvbl9kb21haW5fZG90LmEpLmIua2V5MS5jIGZyb20gdGVzdF9qc29uX2RvbWFpbl9kb3Q7 CisgIGMgICAKKy0tLS0tLQorICI0MiIKKyAiNDIiCisoMiByb3dzKQorCitzZWxlY3QgKHRlc3Rf anNvbl9kb21haW5fZG90LmEpLmIua2V5MiBmcm9tIHRlc3RfanNvbl9kb21haW5fZG90OworICAg ICAgICAgICBrZXkyICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBb MTEsIDEyXQorIFsxMSwgMTIsIHsieCI6IFszMSwgNDJdfV0KKygyIHJvd3MpCisKK3NlbGVjdCAo dGVzdF9qc29uX2RvbWFpbl9kb3QuYSkuYi5rZXkyWzBdIGZyb20gdGVzdF9qc29uX2RvbWFpbl9k b3Q7Cisga2V5MiAKKy0tLS0tLQorIDExCisgMTEKKygyIHJvd3MpCisKK3NlbGVjdCAodGVzdF9q c29uX2RvbWFpbl9kb3QuYSkuYi5rZXkyWzA6OnRleHRdIGZyb20gdGVzdF9qc29uX2RvbWFpbl9k b3Q7CitFUlJPUjogIGpzb24gc3Vic2NyaXB0IG11c3QgYmUgY29lcmNpYmxlIHRvIGludGVnZXIK K0xJTkUgMTogc2VsZWN0ICh0ZXN0X2pzb25fZG9tYWluX2RvdC5hKS5iLmtleTJbMDo6dGV4dF0g ZnJvbSB0ZXN0X2pzLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK3NlbGVjdCAodGVzdF9qc29uX2RvbWFpbl9kb3QuYSkuYi5rZXkyWzJdLnhbMV0g ZnJvbSB0ZXN0X2pzb25fZG9tYWluX2RvdDsKKyB4ICAKKy0tLS0KKyAKKyA0MgorKDIgcm93cykK KworLS0gYXJyYXkgYWNjZXNzCitpbnNlcnQgaW50byB0ZXN0X2pzb25fZG9tYWluX2RvdCBzZWxl Y3QgJCQgKDEsIlt7IiJhIiI6IDN9LCB7IiJrZXkxIiI6IHsiImMiIjogIiI0MiIifX0sIHsiImtl eTIiIjogWzExLCAxMl19XSIpICQkOworc2VsZWN0ICh0ZXN0X2pzb25fZG9tYWluX2RvdC5hKS5i WzBdIGZyb20gdGVzdF9qc29uX2RvbWFpbl9kb3Q7CisgICAgYiAgICAgCistLS0tLS0tLS0tCisg CisgCisgeyJhIjogM30KKygzIHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29uX2RvbWFpbl9kb3Qu YSkuYlswOl0gZnJvbSB0ZXN0X2pzb25fZG9tYWluX2RvdDsKK0VSUk9SOiAganNvbiBzdWJzY3Jp cHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMKK0xJTkUgMTogc2VsZWN0ICh0ZXN0X2pzb25fZG9t YWluX2RvdC5hKS5iWzA6XSBmcm9tIHRlc3RfanNvbl9kb21haW5fLi4uCisgICAgICAgICAgICAg ICAgXgorZHJvcCB0YWJsZSB0ZXN0X2pzb25fZG9tYWluX2RvdCBjYXNjYWRlOworZHJvcCB0eXBl IGNvbXBfanNvbiBjYXNjYWRlOworZHJvcCBkb21haW4ganNvbl9kIGNhc2NhZGU7CistLSBuZXN0 ZWQgZG9tYWlucyBvdmVyIGpzb24KK0NSRUFURSBET01BSU4ganNvbl93aXRoX25hbWUgQVMganNv bgorICAgIENIRUNLICgKKyAgICAgICAgLS0gY2hlY2sgdGhhdCBKU09OIGhhcyBhICJuYW1lIiBm aWVsZCBhbmQgdGhhdCBpdCBpcyBhIHN0cmluZworICAgICAgICBqc29uX3R5cGVvZihWQUxVRS0+ J25hbWUnKSA9ICdzdHJpbmcnCisgICAgKTsKK0NSRUFURSBET01BSU4ganNvbl93aXRoX25hbWVf YW5kX2VtYWlsIEFTIGpzb25fd2l0aF9uYW1lCisgICAgQ0hFQ0sgKAorICAgICAgICAtLSBlbnN1 cmUgdGhhdCBpZiAiZW1haWwiIGV4aXN0cywgaXQgZm9sbG93cyBhIHNpbXBsZSBlbWFpbCBmb3Jt YXQKKyAgICAgICAgVkFMVUUtPidlbWFpbCcgSVMgTlVMTCBPUiAoVkFMVUUtPj4nZW1haWwnIH4g J15bQS1aYS16MC05Ll8lKy1dK0BbQS1aYS16MC05Li1dK1wuW0EtWmEtel17Mix9JCcpCisgICAg ICAgICk7CitDUkVBVEUgRE9NQUlOIGpzb25fdXNlcl9wcm9maWxlIEFTIGpzb25fd2l0aF9uYW1l X2FuZF9lbWFpbAorICAgIENIRUNLICgKKyAgICAgICAgLS0gZW5zdXJlIHRoYXQgaWYgInBob25l IiBleGlzdHMsIGl0IGZvbGxvd3MgYSBiYXNpYyBwaG9uZSBmb3JtYXQKKyAgICAgICAgVkFMVUUt PidwaG9uZScgSVMgTlVMTCBPUiAoVkFMVUUtPj4ncGhvbmUnIH4gJ15cK1xkezEsM30tXGR7M30t XGR7M30tXGR7NH0kJykKKyAgICAgICAgKTsKK0NSRUFURSBUQUJMRSBqc29uX3VzZXJzIChpZCBT RVJJQUwgUFJJTUFSWSBLRVksIHByb2ZpbGUganNvbl91c2VyX3Byb2ZpbGUpOworSU5TRVJUIElO VE8ganNvbl91c2VycyAocHJvZmlsZSkgVkFMVUVTICgneyJuYW1lIjogIkFsaWNlIiwgImVtYWls IjogImFsaWNlQGV4YW1wbGUuY29tIiwgInBob25lIjogIisxLTEyMy00NTYtNzg5MCJ9Jyk7CitJ TlNFUlQgSU5UTyBqc29uX3VzZXJzIChwcm9maWxlKSBWQUxVRVMgKCd7Im5hbWUiOiAiQm9iIiwg ImVtYWlsIjogImJvYkBleGFtcGxlLmNvbSIsICJwaG9uZSI6ICIrOS04NzYtNTQzLTMyMTAiLCAi YWRkcmVzcyI6IFsxMjMsICIxc3Qgc3RyZWV0IiwgIk5ldyBZb3JrIiwgIk5ldyBZb3JrIiwgMTIz NDVdfScpOworU0VMRUNUIChqc29uX3VzZXJzLnByb2ZpbGUpLm5hbWUgZnJvbSBqc29uX3VzZXJz OworICBuYW1lICAgCistLS0tLS0tLS0KKyAiQWxpY2UiCisgIkJvYiIKKygyIHJvd3MpCisKK1NF TEVDVCAoanNvbl91c2Vycy5wcm9maWxlKS5lbWFpbCBmcm9tIGpzb25fdXNlcnM7CisgICAgICAg IGVtYWlsICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICJhbGljZUBleGFtcGxlLmNv bSIKKyAiYm9iQGV4YW1wbGUuY29tIgorKDIgcm93cykKKworU0VMRUNUIChqc29uX3VzZXJzLnBy b2ZpbGUpLnBob25lIGZyb20ganNvbl91c2VyczsKKyAgICAgICBwaG9uZSAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0KKyAiKzEtMTIzLTQ1Ni03ODkwIgorICIrOS04NzYtNTQzLTMyMTAiCiso MiByb3dzKQorCitTRUxFQ1QgKGpzb25fdXNlcnMucHJvZmlsZSkuYWRkcmVzcyBmcm9tIGpzb25f dXNlcnM7CisgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisgWzEyMywgIjFzdCBzdHJlZXQiLCAiTmV3IFlvcmsiLCAiTmV3IFlvcmsiLCAxMjM0NV0K KygyIHJvd3MpCisKK1NFTEVDVCAoanNvbl91c2Vycy5wcm9maWxlKS5hZGRyZXNzWzNdIGZyb20g anNvbl91c2VyczsKKyAgYWRkcmVzcyAgIAorLS0tLS0tLS0tLS0tCisgCisgIk5ldyBZb3JrIgor KDIgcm93cykKKworLS0gYXJyYXkgb2YgbmVzdGVkIGRvbWFpbnMgb3ZlciBqc29uCitDUkVBVEUg VEFCTEUganNvbl91c2VyX2FycnMgKGlkIFNFUklBTCBQUklNQVJZIEtFWSwgcHJvZmlsZXMganNv bl91c2VyX3Byb2ZpbGVbXSk7CitJTlNFUlQgSU5UTyBqc29uX3VzZXJfYXJycyAocHJvZmlsZXMp IFZBTFVFUyAoQVJSQVlbJ3sibmFtZSI6ICJBbGljZSIsICJlbWFpbCI6ICJhbGljZUBleGFtcGxl LmNvbSIsICJwaG9uZSI6ICIrMS0xMjMtNDU2LTc4OTAifSc6Ompzb25fdXNlcl9wcm9maWxlLCAn eyJuYW1lIjogIkJvYiIsICJlbWFpbCI6ICJib2JAZXhhbXBsZS5jb20iLCAicGhvbmUiOiAiKzkt ODc2LTU0My0zMjEwIiwgImFkZHJlc3MiOiBbMTIzLCAiMXN0IHN0cmVldCIsICJOZXcgWW9yayIs ICJOZXcgWW9yayIsIDEyMzQ1XX0nOjpqc29uX3VzZXJfcHJvZmlsZV0pOworU0VMRUNUIGpzb25f dXNlcl9hcnJzLnByb2ZpbGVzWzFdIGZyb20ganNvbl91c2VyX2FycnM7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7Im5hbWUiOiAiQWxpY2UiLCAiZW1haWwi OiAiYWxpY2VAZXhhbXBsZS5jb20iLCAicGhvbmUiOiAiKzEtMTIzLTQ1Ni03ODkwIn0KKygxIHJv dykKKworU0VMRUNUIGpzb25fdXNlcl9hcnJzLnByb2ZpbGVzWzJdIGZyb20ganNvbl91c2VyX2Fy cnM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHJvZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJu YW1lIjogIkJvYiIsICJlbWFpbCI6ICJib2JAZXhhbXBsZS5jb20iLCAicGhvbmUiOiAiKzktODc2 LTU0My0zMjEwIiwgImFkZHJlc3MiOiBbMTIzLCAiMXN0IHN0cmVldCIsICJOZXcgWW9yayIsICJO ZXcgWW9yayIsIDEyMzQ1XX0KKygxIHJvdykKKworU0VMRUNUIGpzb25fdXNlcl9hcnJzLnByb2Zp bGVzWzJdLmFkZHJlc3NbMF0gZnJvbSBqc29uX3VzZXJfYXJyczsKKyBhZGRyZXNzIAorLS0tLS0t LS0tCisgMTIzCisoMSByb3cpCisKK2Ryb3AgdGFibGUganNvbl91c2VyczsKK2Ryb3AgdGFibGUg anNvbl91c2VyX2FycnM7Citkcm9wIGRvbWFpbiBqc29uX3VzZXJfcHJvZmlsZTsKK2Ryb3AgZG9t YWluIGpzb25fd2l0aF9uYW1lX2FuZF9lbWFpbDsKK2Ryb3AgZG9tYWluIGpzb25fd2l0aF9uYW1l OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAppbmRleCA3ZDE2M2ExNTZlLi4zNTdiMmY0 MzU2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dApAQCAtNTcxNSwzICs1NzE1LDIz MSBAQCBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDUnOjpqc29uYjo6aW50ODsKICAxMjM0NQogKDEgcm93KQogCistLSBzaW1wbGUgZG90 IG5vdGF0aW9uCitkcm9wIHRhYmxlIGlmIGV4aXN0cyB0ZXN0X2pzb25iX2RvdDsKK05PVElDRTog IHRhYmxlICJ0ZXN0X2pzb25iX2RvdCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nCitjcmVhdGUg dGFibGUgdGVzdF9qc29uYl9kb3QoaWQgaW50LCB0ZXN0X2pzb25iIGpzb25iKTsKK2luc2VydCBp bnRvIHRlc3RfanNvbmJfZG90IHNlbGVjdCAxLCAneyJhIjogMSwgImIiOiA0Mn0nOjpqc29uOwor aW5zZXJ0IGludG8gdGVzdF9qc29uYl9kb3Qgc2VsZWN0IDEsICd7ImEiOiAyLCAiYiI6IHsiYyI6 IDQyfX0nOjpqc29uOworaW5zZXJ0IGludG8gdGVzdF9qc29uYl9kb3Qgc2VsZWN0IDEsICd7ImEi OiAzLCAiYiI6IHsiYyI6ICI0MiJ9LCAiZCI6WzExLCAxMl19Jzo6anNvbjsKKy0tIG1lbWJlciBv YmplY3QgYWNjZXNzCitzZWxlY3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNvbmIpLmIgZnJvbSB0 ZXN0X2pzb25iX2RvdDsKKyAgICAgIGIgICAgICAKKy0tLS0tLS0tLS0tLS0KKyA0MgorIHsiYyI6 IDQyfQorIHsiYyI6ICI0MiJ9CisoMyByb3dzKQorCitzZWxlY3QgKHRlc3RfanNvbmJfZG90LnRl c3RfanNvbmIpLmIuYyBmcm9tIHRlc3RfanNvbmJfZG90OworICBjICAgCistLS0tLS0KKyAKKyA0 MgorICI0MiIKKygzIHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9qc29uYiku ZCBmcm9tIHRlc3RfanNvbmJfZG90OworICAgIGQgICAgIAorLS0tLS0tLS0tLQorIAorIAorIFsx MSwgMTJdCisoMyByb3dzKQorCitzZWxlY3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNvbmIpLiJk IiBmcm9tIHRlc3RfanNvbmJfZG90OworICAgIGQgICAgIAorLS0tLS0tLS0tLQorIAorIAorIFsx MSwgMTJdCisoMyByb3dzKQorCitzZWxlY3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNvbmIpLidk JyBmcm9tIHRlc3RfanNvbmJfZG90OworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAi J2QnIgorTElORSAxOiBzZWxlY3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNvbmIpLidkJyBmcm9t IHRlc3RfanNvbmJfZG90OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK3NlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9qc29uYilbJ2QnXSBmcm9tIHRlc3Rf anNvbmJfZG90OworIHRlc3RfanNvbmIgCistLS0tLS0tLS0tLS0KKyAKKyAKKyBbMTEsIDEyXQor KDMgcm93cykKKworLS0gYXJyYXkgZWxlbWVudCBhY2Nlc3MKK3NlbGVjdCAodGVzdF9qc29uYl9k b3QudGVzdF9qc29uYikuZFswXSBmcm9tIHRlc3RfanNvbmJfZG90OworIGQgIAorLS0tLQorIAor IAorIDExCisoMyByb3dzKQorCitzZWxlY3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNvbmIpLmRb MDpdIGZyb20gdGVzdF9qc29uYl9kb3Q7CitFUlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5v dCBzdXBwb3J0IHNsaWNlcworTElORSAxOiBzZWxlY3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNv bmIpLmRbMDpdIGZyb20gdGVzdF9qc29uYl9kb3QuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK3NlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9qc29u YikuZFswOjppbnRdIGZyb20gdGVzdF9qc29uYl9kb3Q7CisgZCAgCistLS0tCisgCisgCisgMTEK KygzIHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9qc29uYikuZFswOjpmbG9h dF0gZnJvbSB0ZXN0X2pzb25iX2RvdDsKK0VSUk9SOiAgc3Vic2NyaXB0IHR5cGUgZG91YmxlIHBy ZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkCitMSU5FIDE6IHNlbGVjdCAodGVzdF9qc29uYl9kb3Qu dGVzdF9qc29uYikuZFswOjpmbG9hdF0gZnJvbSB0ZXN0X2pzby4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIGpzb25iIHN1YnNjcmlwdCBt dXN0IGJlIGNvZXJjaWJsZSB0byBlaXRoZXIgaW50ZWdlciBvciB0ZXh0Lgorc2VsZWN0ICh0ZXN0 X2pzb25iX2RvdC50ZXN0X2pzb25iKS5kWzBdLnhbMV0gZnJvbSB0ZXN0X2pzb25iX2RvdDsKKyB4 IAorLS0tCisgCisgCisgCisoMyByb3dzKQorCistLSB3aWxkY2FyZCBhY2Nlc3MgaXMgbm90IHN1 cHBvcnRlZAorc2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKS4qIGZyb20gdGVzdF9q c29uYl9kb3Q7CitFUlJPUjogIHR5cGUganNvbmIgaXMgbm90IGNvbXBvc2l0ZQorLS0gY29tcGxl eCB0eXBlIHdpdGggZG9tYWluIG92ZXIganNvbmIKK2NyZWF0ZSBkb21haW4ganNvbmJfZCBhcyBq c29uYjsKK2NyZWF0ZSB0eXBlIGNvbXBfanNvbmIgYXMgKGEgaW50LCBiIGpzb25iX2QpOworY3Jl YXRlIHRhYmxlIHRlc3RfanNvbmJfZG9tYWluX2RvdChhIGNvbXBfanNvbmIpOworaW5zZXJ0IGlu dG8gdGVzdF9qc29uYl9kb21haW5fZG90IHNlbGVjdCAkJCAoMSwieyIiYSIiOiAzLCAiImtleTEi IjogeyIiYyIiOiAiIjQyIiJ9LCAiImtleTIiIjogWzExLCAxMl19IikgJCQ7CitpbnNlcnQgaW50 byB0ZXN0X2pzb25iX2RvbWFpbl9kb3Qgc2VsZWN0ICQkICgxLCJ7IiJhIiI6IDMsICIia2V5MSIi OiB7IiJjIiI6ICIiNDIiIn0sICIia2V5MiIiOiBbMTEsIDEyLCB7IiJ4IiI6IFszMSwgNDJdfV19 IikgJCQ7CistLSBvYmplY3QgYWNjZXNzCitzZWxlY3QgKHRlc3RfanNvbmJfZG9tYWluX2RvdC5h KS5iLmtleTEuYyBmcm9tIHRlc3RfanNvbmJfZG9tYWluX2RvdDsKKyAgYyAgIAorLS0tLS0tCisg IjQyIgorICI0MiIKKygyIHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29uYl9kb21haW5fZG90LmEp LmIua2V5MiBmcm9tIHRlc3RfanNvbmJfZG9tYWluX2RvdDsKKyAgICAgICAgICAga2V5MiAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzExLCAxMl0KKyBbMTEsIDEy LCB7IngiOiBbMzEsIDQyXX1dCisoMiByb3dzKQorCitzZWxlY3QgKHRlc3RfanNvbmJfZG9tYWlu X2RvdC5hKS5iLmtleTJbMF0gZnJvbSB0ZXN0X2pzb25iX2RvbWFpbl9kb3Q7Cisga2V5MiAKKy0t LS0tLQorIDExCisgMTEKKygyIHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29uYl9kb21haW5fZG90 LmEpLmIua2V5MlswOjp0ZXh0XSBmcm9tIHRlc3RfanNvbmJfZG9tYWluX2RvdDsKKyBrZXkyIAor LS0tLS0tCisgMTEKKyAxMQorKDIgcm93cykKKworc2VsZWN0ICh0ZXN0X2pzb25iX2RvbWFpbl9k b3QuYSkuYi5rZXkyWzJdLnhbMV0gZnJvbSB0ZXN0X2pzb25iX2RvbWFpbl9kb3Q7CisgeCAgCist LS0tCisgCisgNDIKKygyIHJvd3MpCisKKy0tIGFycmF5IGFjY2VzcworaW5zZXJ0IGludG8gdGVz dF9qc29uYl9kb21haW5fZG90IHNlbGVjdCAkJCAoMSwiW3siImEiIjogM30sIHsiImtleTEiIjog eyIiYyIiOiAiIjQyIiJ9fSwgeyIia2V5MiIiOiBbMTEsIDEyXX1dIikgJCQ7CitzZWxlY3QgKHRl c3RfanNvbmJfZG9tYWluX2RvdC5hKS5iWzBdIGZyb20gdGVzdF9qc29uYl9kb21haW5fZG90Owor ICAgIGIgICAgIAorLS0tLS0tLS0tLQorIAorIAorIHsiYSI6IDN9CisoMyByb3dzKQorCitzZWxl Y3QgKHRlc3RfanNvbmJfZG9tYWluX2RvdC5hKS5iWzA6XSBmcm9tIHRlc3RfanNvbmJfZG9tYWlu X2RvdDsKK0VSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCitM SU5FIDE6IHNlbGVjdCAodGVzdF9qc29uYl9kb21haW5fZG90LmEpLmJbMDpdIGZyb20gdGVzdF9q c29uYl9kb21haS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KK2Ryb3AgdGFibGUgdGVzdF9qc29uYl9kb21haW5fZG90IGNhc2NhZGU7Citkcm9wIHR5cGUg Y29tcF9qc29uYiBjYXNjYWRlOworZHJvcCBkb21haW4ganNvbmJfZCBjYXNjYWRlOworLS0gbmVz dGVkIGRvbWFpbnMgb3ZlciBqc29uYgorQ1JFQVRFIERPTUFJTiBqc29uYl93aXRoX25hbWUgQVMg SlNPTkIKKyAgICBDSEVDSyAoCisgICAgICAgIC0tIGNoZWNrIHRoYXQgSlNPTiBoYXMgYSAibmFt ZSIgZmllbGQgYW5kIHRoYXQgaXQgaXMgYSBzdHJpbmcKKyAgICAgICAgVkFMVUUgPyAnbmFtZScg QU5EIGpzb25iX3R5cGVvZihWQUxVRS0+J25hbWUnKSA9ICdzdHJpbmcnCisgICAgICAgICk7CitD UkVBVEUgRE9NQUlOIGpzb25iX3dpdGhfbmFtZV9hbmRfZW1haWwgQVMganNvbmJfd2l0aF9uYW1l CisgICAgQ0hFQ0sgKAorICAgICAgICAtLSBlbnN1cmUgdGhhdCBpZiAiZW1haWwiIGV4aXN0cywg aXQgZm9sbG93cyBhIHNpbXBsZSBlbWFpbCBmb3JtYXQKKyAgICAgICAgTk9UIFZBTFVFID8gJ2Vt YWlsJyBPUiAoVkFMVUUtPj4nZW1haWwnIH4gJ15bQS1aYS16MC05Ll8lKy1dK0BbQS1aYS16MC05 Li1dK1wuW0EtWmEtel17Mix9JCcpCisgICAgICAgICk7CitDUkVBVEUgRE9NQUlOIGpzb25iX3Vz ZXJfcHJvZmlsZSBBUyBqc29uYl93aXRoX25hbWVfYW5kX2VtYWlsCisgICAgQ0hFQ0sgKAorICAg ICAgICAtLSBlbnN1cmUgdGhhdCBpZiAicGhvbmUiIGV4aXN0cywgaXQgZm9sbG93cyBhIGJhc2lj IHBob25lIGZvcm1hdAorICAgICAgICBOT1QgVkFMVUUgPyAncGhvbmUnIE9SIChWQUxVRS0+Pidw aG9uZScgfiAnXlwrXGR7MSwzfS1cZHszfS1cZHszfS1cZHs0fSQnKQorICAgICAgICApOworQ1JF QVRFIFRBQkxFIGpzb25iX3VzZXJzIChpZCBTRVJJQUwgUFJJTUFSWSBLRVksIHByb2ZpbGUganNv bmJfdXNlcl9wcm9maWxlKTsKK0lOU0VSVCBJTlRPIGpzb25iX3VzZXJzIChwcm9maWxlKSBWQUxV RVMgKCd7Im5hbWUiOiAiQWxpY2UiLCAiZW1haWwiOiAiYWxpY2VAZXhhbXBsZS5jb20iLCAicGhv bmUiOiAiKzEtMTIzLTQ1Ni03ODkwIn0nKTsKK0lOU0VSVCBJTlRPIGpzb25iX3VzZXJzIChwcm9m aWxlKSBWQUxVRVMgKCd7Im5hbWUiOiAiQm9iIiwgImVtYWlsIjogImJvYkBleGFtcGxlLmNvbSIs ICJwaG9uZSI6ICIrOS04NzYtNTQzLTMyMTAiLCAiYWRkcmVzcyI6IFsxMjMsICIxc3Qgc3RyZWV0 IiwgIk5ldyBZb3JrIiwgIk5ldyBZb3JrIiwgMTIzNDVdfScpOworU0VMRUNUIChqc29uYl91c2Vy cy5wcm9maWxlKS5uYW1lIGZyb20ganNvbmJfdXNlcnM7CisgIG5hbWUgICAKKy0tLS0tLS0tLQor ICJBbGljZSIKKyAiQm9iIgorKDIgcm93cykKKworU0VMRUNUIChqc29uYl91c2Vycy5wcm9maWxl KS5lbWFpbCBmcm9tIGpzb25iX3VzZXJzOworICAgICAgICBlbWFpbCAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAiYWxpY2VAZXhhbXBsZS5jb20iCisgImJvYkBleGFtcGxlLmNvbSIK KygyIHJvd3MpCisKK1NFTEVDVCAoanNvbmJfdXNlcnMucHJvZmlsZSkucGhvbmUgZnJvbSBqc29u Yl91c2VyczsKKyAgICAgICBwaG9uZSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAiKzEt MTIzLTQ1Ni03ODkwIgorICIrOS04NzYtNTQzLTMyMTAiCisoMiByb3dzKQorCitTRUxFQ1QgKGpz b25iX3VzZXJzLnByb2ZpbGUpLmFkZHJlc3MgZnJvbSBqc29uYl91c2VyczsKKyAgICAgICAgICAg ICAgICAgICAgICBhZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKyBbMTIzLCAiMXN0IHN0 cmVldCIsICJOZXcgWW9yayIsICJOZXcgWW9yayIsIDEyMzQ1XQorKDIgcm93cykKKworU0VMRUNU IChqc29uYl91c2Vycy5wcm9maWxlKS5hZGRyZXNzWzNdIGZyb20ganNvbmJfdXNlcnM7CisgIGFk ZHJlc3MgICAKKy0tLS0tLS0tLS0tLQorIAorICJOZXcgWW9yayIKKygyIHJvd3MpCisKKy0tIGFy cmF5IG9mIG5lc3RlZCBkb21haW5zIG92ZXIganNvbmIKK0NSRUFURSBUQUJMRSBqc29uYl91c2Vy X2FycnMgKGlkIFNFUklBTCBQUklNQVJZIEtFWSwgcHJvZmlsZXMganNvbmJfdXNlcl9wcm9maWxl W10pOworSU5TRVJUIElOVE8ganNvbmJfdXNlcl9hcnJzIChwcm9maWxlcykgVkFMVUVTIChBUlJB WVsneyJuYW1lIjogIkFsaWNlIiwgImVtYWlsIjogImFsaWNlQGV4YW1wbGUuY29tIiwgInBob25l IjogIisxLTEyMy00NTYtNzg5MCJ9Jzo6anNvbmJfdXNlcl9wcm9maWxlLCAneyJuYW1lIjogIkJv YiIsICJlbWFpbCI6ICJib2JAZXhhbXBsZS5jb20iLCAicGhvbmUiOiAiKzktODc2LTU0My0zMjEw IiwgImFkZHJlc3MiOiBbMTIzLCAiMXN0IHN0cmVldCIsICJOZXcgWW9yayIsICJOZXcgWW9yayIs IDEyMzQ1XX0nOjpqc29uYl91c2VyX3Byb2ZpbGVdKTsKK1NFTEVDVCBqc29uYl91c2VyX2FycnMu cHJvZmlsZXNbMV0gZnJvbSBqc29uYl91c2VyX2FycnM7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHJvZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7Im5hbWUiOiAiQWxpY2UiLCAiZW1haWwiOiAiYWxpY2VA ZXhhbXBsZS5jb20iLCAicGhvbmUiOiAiKzEtMTIzLTQ1Ni03ODkwIn0KKygxIHJvdykKKworU0VM RUNUIGpzb25iX3VzZXJfYXJycy5wcm9maWxlc1syXSBmcm9tIGpzb25iX3VzZXJfYXJyczsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwcm9maWxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7Im5hbWUiOiAi Qm9iIiwgImVtYWlsIjogImJvYkBleGFtcGxlLmNvbSIsICJwaG9uZSI6ICIrOS04NzYtNTQzLTMy MTAiLCAiYWRkcmVzcyI6IFsxMjMsICIxc3Qgc3RyZWV0IiwgIk5ldyBZb3JrIiwgIk5ldyBZb3Jr IiwgMTIzNDVdfQorKDEgcm93KQorCitTRUxFQ1QganNvbmJfdXNlcl9hcnJzLnByb2ZpbGVzWzJd LmFkZHJlc3NbMF0gZnJvbSBqc29uYl91c2VyX2FycnM7CisgYWRkcmVzcyAKKy0tLS0tLS0tLQor IDEyMworKDEgcm93KQorCitkcm9wIHRhYmxlIGpzb25iX3VzZXJzOworZHJvcCB0YWJsZSBqc29u Yl91c2VyX2FycnM7Citkcm9wIGRvbWFpbiBqc29uYl91c2VyX3Byb2ZpbGU7Citkcm9wIGRvbWFp biBqc29uYl93aXRoX25hbWVfYW5kX2VtYWlsOworZHJvcCBkb21haW4ganNvbmJfd2l0aF9uYW1l OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbi5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9qc29uLnNxbAppbmRleCA4MjUxZjRmNDAwLi4yNWZiMTI1OWFiIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9qc29uLnNxbApAQCAtODY5LDMgKzg2OSw4OSBAQCBzZWxlY3QgdHNfaGVhZGxpbmUoJ2Vu Z2xpc2gnLCAneyJhIjogImFhYSBiYmIiLCAiYiI6IHsiYyI6ICJjY2MgZGRkIGZmZiIsICJjMSI6 CiBzZWxlY3QgdHNfaGVhZGxpbmUoJ251bGwnOjpqc29uLCB0c3F1ZXJ5KCdhYWEgJiBiYmInKSk7 CiBzZWxlY3QgdHNfaGVhZGxpbmUoJ3t9Jzo6anNvbiwgdHNxdWVyeSgnYWFhICYgYmJiJykpOwog c2VsZWN0IHRzX2hlYWRsaW5lKCdbXSc6Ompzb24sIHRzcXVlcnkoJ2FhYSAmIGJiYicpKTsKKwor LS0gc2ltcGxlIGRvdCBub3RhdGlvbgorZHJvcCB0YWJsZSBpZiBleGlzdHMgdGVzdF9qc29uX2Rv dDsKK2NyZWF0ZSB0YWJsZSB0ZXN0X2pzb25fZG90KGlkIGludCwgdGVzdF9qc29uIGpzb24pOwor aW5zZXJ0IGludG8gdGVzdF9qc29uX2RvdCBzZWxlY3QgMSwgJ3siYSI6IDEsICJiIjogNDJ9Jzo6 anNvbjsKK2luc2VydCBpbnRvIHRlc3RfanNvbl9kb3Qgc2VsZWN0IDEsICd7ImEiOiAyLCAiYiI6 IHsiYyI6IDQyfX0nOjpqc29uOworaW5zZXJ0IGludG8gdGVzdF9qc29uX2RvdCBzZWxlY3QgMSwg J3siYSI6IDMsICJiIjogeyJjIjogIjQyIn0sICJkIjpbMTEsIDEyXX0nOjpqc29uOworaW5zZXJ0 IGludG8gdGVzdF9qc29uX2RvdCBzZWxlY3QgMSwgJ3siYSI6IDMsICJiIjogeyJjIjogIjQyIn0s ICJkIjpbeyJ4IjogWzExLCAxMl19LCB7InkiOiBbMjEsIDIyXX1dfSc6Ompzb247CisKKy0tIG1l bWJlciBvYmplY3QgYWNjZXNzCitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS5iLCBq c29uX3F1ZXJ5KHRlc3RfanNvbiwgJ2xheCAkLmInIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBO VUxMIE9OIEVNUFRZIE5VTEwgT04gRVJST1IpIGFzIGV4cGVjdGVkIGZyb20gdGVzdF9qc29uX2Rv dDsKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLmIuYywganNvbl9xdWVyeSh0ZXN0 X2pzb24sICdsYXggJC5iLmMnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBOVUxMIE9OIEVNUFRZ IE5VTEwgT04gRVJST1IpIGFzIGV4cGVjdGVkIGZyb20gdGVzdF9qc29uX2RvdDsKK3NlbGVjdCAo dGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLmQsIGpzb25fcXVlcnkodGVzdF9qc29uLCAnbGF4ICQu ZCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBFUlJPUikg YXMgZXhwZWN0ZWQgZnJvbSB0ZXN0X2pzb25fZG90Oworc2VsZWN0ICh0ZXN0X2pzb25fZG90LnRl c3RfanNvbikuImQiLCBqc29uX3F1ZXJ5KHRlc3RfanNvbiwgJ2xheCAkLmQnIFdJVEggQ09ORElU SU9OQUwgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJST1IpIGFzIGV4cGVjdGVkIGZy b20gdGVzdF9qc29uX2RvdDsKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLidkJyBm cm9tIHRlc3RfanNvbl9kb3Q7CitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKVsnZCdd IGZyb20gdGVzdF9qc29uX2RvdDsKKworLS0gd2lsZGNhcmQgYWNjZXNzIGlzIG5vdCBzdXBwb3J0 ZWQKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLiogZnJvbSB0ZXN0X2pzb25fZG90 OworCistLSBhcnJheSBlbGVtZW50IGFjY2Vzcworc2VsZWN0ICh0ZXN0X2pzb25fZG90LnRlc3Rf anNvbikuZC0+MCBmcm9tIHRlc3RfanNvbl9kb3Q7CitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVz dF9qc29uKS5kWzBdLCBqc29uX3F1ZXJ5KHRlc3RfanNvbiwgJ2xheCAkLmRbMF0nIFdJVEggQ09O RElUSU9OQUwgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJST1IpIGFzIGV4cGVjdGVk IGZyb20gdGVzdF9qc29uX2RvdDsKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLmRb MV0sIGpzb25fcXVlcnkodGVzdF9qc29uLCAnbGF4ICQuZFsxXScgV0lUSCBDT05ESVRJT05BTCBX UkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBFUlJPUikgYXMgZXhwZWN0ZWQgZnJvbSB0ZXN0 X2pzb25fZG90Oworc2VsZWN0ICh0ZXN0X2pzb25fZG90LnRlc3RfanNvbikuZFswOl0gZnJvbSB0 ZXN0X2pzb25fZG90Oworc2VsZWN0ICh0ZXN0X2pzb25fZG90LnRlc3RfanNvbikuZFswOjppbnRd IGZyb20gdGVzdF9qc29uX2RvdDsKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLmRb MDo6ZmxvYXRdIGZyb20gdGVzdF9qc29uX2RvdDsKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0 X2pzb24pLmRbMF0ueFsxXSwganNvbl9xdWVyeSh0ZXN0X2pzb24sICdsYXggJC5kWzBdLnhbMV0n IFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJST1IpIGFz IGV4cGVjdGVkIGZyb20gdGVzdF9qc29uX2RvdDsKKworLS0gY29tcGxleCB0eXBlIHdpdGggZG9t YWluIG92ZXIganNvbgorY3JlYXRlIGRvbWFpbiBqc29uX2QgYXMganNvbjsKK2NyZWF0ZSB0eXBl IGNvbXBfanNvbiBhcyAoYSBpbnQsIGIganNvbl9kKTsKK2NyZWF0ZSB0YWJsZSB0ZXN0X2pzb25f ZG9tYWluX2RvdChhIGNvbXBfanNvbik7CitpbnNlcnQgaW50byB0ZXN0X2pzb25fZG9tYWluX2Rv dCBzZWxlY3QgJCQgKDEsInsiImEiIjogMywgIiJrZXkxIiI6IHsiImMiIjogIiI0MiIifSwgIiJr ZXkyIiI6IFsxMSwgMTJdfSIpICQkOworaW5zZXJ0IGludG8gdGVzdF9qc29uX2RvbWFpbl9kb3Qg c2VsZWN0ICQkICgxLCJ7IiJhIiI6IDMsICIia2V5MSIiOiB7IiJjIiI6ICIiNDIiIn0sICIia2V5 MiIiOiBbMTEsIDEyLCB7IiJ4IiI6IFszMSwgNDJdfV19IikgJCQ7CistLW9iamVjdCBhY2Nlc3MK K3NlbGVjdCAodGVzdF9qc29uX2RvbWFpbl9kb3QuYSkuYi5rZXkxLmMgZnJvbSB0ZXN0X2pzb25f ZG9tYWluX2RvdDsKK3NlbGVjdCAodGVzdF9qc29uX2RvbWFpbl9kb3QuYSkuYi5rZXkyIGZyb20g dGVzdF9qc29uX2RvbWFpbl9kb3Q7CitzZWxlY3QgKHRlc3RfanNvbl9kb21haW5fZG90LmEpLmIu a2V5MlswXSBmcm9tIHRlc3RfanNvbl9kb21haW5fZG90Oworc2VsZWN0ICh0ZXN0X2pzb25fZG9t YWluX2RvdC5hKS5iLmtleTJbMDo6dGV4dF0gZnJvbSB0ZXN0X2pzb25fZG9tYWluX2RvdDsKK3Nl bGVjdCAodGVzdF9qc29uX2RvbWFpbl9kb3QuYSkuYi5rZXkyWzJdLnhbMV0gZnJvbSB0ZXN0X2pz b25fZG9tYWluX2RvdDsKKy0tIGFycmF5IGFjY2VzcworaW5zZXJ0IGludG8gdGVzdF9qc29uX2Rv bWFpbl9kb3Qgc2VsZWN0ICQkICgxLCJbeyIiYSIiOiAzfSwgeyIia2V5MSIiOiB7IiJjIiI6ICIi NDIiIn19LCB7IiJrZXkyIiI6IFsxMSwgMTJdfV0iKSAkJDsKK3NlbGVjdCAodGVzdF9qc29uX2Rv bWFpbl9kb3QuYSkuYlswXSBmcm9tIHRlc3RfanNvbl9kb21haW5fZG90Oworc2VsZWN0ICh0ZXN0 X2pzb25fZG9tYWluX2RvdC5hKS5iWzA6XSBmcm9tIHRlc3RfanNvbl9kb21haW5fZG90OworZHJv cCB0YWJsZSB0ZXN0X2pzb25fZG9tYWluX2RvdCBjYXNjYWRlOworZHJvcCB0eXBlIGNvbXBfanNv biBjYXNjYWRlOworZHJvcCBkb21haW4ganNvbl9kIGNhc2NhZGU7CisKKy0tIG5lc3RlZCBkb21h aW5zIG92ZXIganNvbgorQ1JFQVRFIERPTUFJTiBqc29uX3dpdGhfbmFtZSBBUyBqc29uCisgICAg Q0hFQ0sgKAorICAgICAgICAtLSBjaGVjayB0aGF0IEpTT04gaGFzIGEgIm5hbWUiIGZpZWxkIGFu ZCB0aGF0IGl0IGlzIGEgc3RyaW5nCisgICAgICAgIGpzb25fdHlwZW9mKFZBTFVFLT4nbmFtZScp ID0gJ3N0cmluZycKKyAgICApOworQ1JFQVRFIERPTUFJTiBqc29uX3dpdGhfbmFtZV9hbmRfZW1h aWwgQVMganNvbl93aXRoX25hbWUKKyAgICBDSEVDSyAoCisgICAgICAgIC0tIGVuc3VyZSB0aGF0 IGlmICJlbWFpbCIgZXhpc3RzLCBpdCBmb2xsb3dzIGEgc2ltcGxlIGVtYWlsIGZvcm1hdAorICAg ICAgICBWQUxVRS0+J2VtYWlsJyBJUyBOVUxMIE9SIChWQUxVRS0+PidlbWFpbCcgfiAnXltBLVph LXowLTkuXyUrLV0rQFtBLVphLXowLTkuLV0rXC5bQS1aYS16XXsyLH0kJykKKyAgICAgICAgKTsK K0NSRUFURSBET01BSU4ganNvbl91c2VyX3Byb2ZpbGUgQVMganNvbl93aXRoX25hbWVfYW5kX2Vt YWlsCisgICAgQ0hFQ0sgKAorICAgICAgICAtLSBlbnN1cmUgdGhhdCBpZiAicGhvbmUiIGV4aXN0 cywgaXQgZm9sbG93cyBhIGJhc2ljIHBob25lIGZvcm1hdAorICAgICAgICBWQUxVRS0+J3Bob25l JyBJUyBOVUxMIE9SIChWQUxVRS0+PidwaG9uZScgfiAnXlwrXGR7MSwzfS1cZHszfS1cZHszfS1c ZHs0fSQnKQorICAgICAgICApOworQ1JFQVRFIFRBQkxFIGpzb25fdXNlcnMgKGlkIFNFUklBTCBQ UklNQVJZIEtFWSwgcHJvZmlsZSBqc29uX3VzZXJfcHJvZmlsZSk7CitJTlNFUlQgSU5UTyBqc29u X3VzZXJzIChwcm9maWxlKSBWQUxVRVMgKCd7Im5hbWUiOiAiQWxpY2UiLCAiZW1haWwiOiAiYWxp Y2VAZXhhbXBsZS5jb20iLCAicGhvbmUiOiAiKzEtMTIzLTQ1Ni03ODkwIn0nKTsKK0lOU0VSVCBJ TlRPIGpzb25fdXNlcnMgKHByb2ZpbGUpIFZBTFVFUyAoJ3sibmFtZSI6ICJCb2IiLCAiZW1haWwi OiAiYm9iQGV4YW1wbGUuY29tIiwgInBob25lIjogIis5LTg3Ni01NDMtMzIxMCIsICJhZGRyZXNz IjogWzEyMywgIjFzdCBzdHJlZXQiLCAiTmV3IFlvcmsiLCAiTmV3IFlvcmsiLCAxMjM0NV19Jyk7 CitTRUxFQ1QgKGpzb25fdXNlcnMucHJvZmlsZSkubmFtZSBmcm9tIGpzb25fdXNlcnM7CitTRUxF Q1QgKGpzb25fdXNlcnMucHJvZmlsZSkuZW1haWwgZnJvbSBqc29uX3VzZXJzOworU0VMRUNUIChq c29uX3VzZXJzLnByb2ZpbGUpLnBob25lIGZyb20ganNvbl91c2VyczsKK1NFTEVDVCAoanNvbl91 c2Vycy5wcm9maWxlKS5hZGRyZXNzIGZyb20ganNvbl91c2VyczsKK1NFTEVDVCAoanNvbl91c2Vy cy5wcm9maWxlKS5hZGRyZXNzWzNdIGZyb20ganNvbl91c2VyczsKKworLS0gYXJyYXkgb2YgbmVz dGVkIGRvbWFpbnMgb3ZlciBqc29uCitDUkVBVEUgVEFCTEUganNvbl91c2VyX2FycnMgKGlkIFNF UklBTCBQUklNQVJZIEtFWSwgcHJvZmlsZXMganNvbl91c2VyX3Byb2ZpbGVbXSk7CitJTlNFUlQg SU5UTyBqc29uX3VzZXJfYXJycyAocHJvZmlsZXMpIFZBTFVFUyAoQVJSQVlbJ3sibmFtZSI6ICJB bGljZSIsICJlbWFpbCI6ICJhbGljZUBleGFtcGxlLmNvbSIsICJwaG9uZSI6ICIrMS0xMjMtNDU2 LTc4OTAifSc6Ompzb25fdXNlcl9wcm9maWxlLCAneyJuYW1lIjogIkJvYiIsICJlbWFpbCI6ICJi b2JAZXhhbXBsZS5jb20iLCAicGhvbmUiOiAiKzktODc2LTU0My0zMjEwIiwgImFkZHJlc3MiOiBb MTIzLCAiMXN0IHN0cmVldCIsICJOZXcgWW9yayIsICJOZXcgWW9yayIsIDEyMzQ1XX0nOjpqc29u X3VzZXJfcHJvZmlsZV0pOworU0VMRUNUIGpzb25fdXNlcl9hcnJzLnByb2ZpbGVzWzFdIGZyb20g anNvbl91c2VyX2FycnM7CitTRUxFQ1QganNvbl91c2VyX2FycnMucHJvZmlsZXNbMl0gZnJvbSBq c29uX3VzZXJfYXJyczsKK1NFTEVDVCBqc29uX3VzZXJfYXJycy5wcm9maWxlc1syXS5hZGRyZXNz WzBdIGZyb20ganNvbl91c2VyX2FycnM7CisKK2Ryb3AgdGFibGUganNvbl91c2VyczsKK2Ryb3Ag dGFibGUganNvbl91c2VyX2FycnM7Citkcm9wIGRvbWFpbiBqc29uX3VzZXJfcHJvZmlsZTsKK2Ry b3AgZG9tYWluIGpzb25fd2l0aF9uYW1lX2FuZF9lbWFpbDsKK2Ryb3AgZG9tYWluIGpzb25fd2l0 aF9uYW1lOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCmluZGV4IDVmMDE5MGQ1YTIuLmI2MDk2MDIxYmMg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKQEAgLTE1NTksMyArMTU1OSw4NiBAQCBzZWxlY3QgJzEy MzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29u Yjo6ZmxvYXQ4Owogc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDI7CiBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50NDsKIHNlbGVj dCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6 Ompzb25iOjppbnQ4OworCistLSBzaW1wbGUgZG90IG5vdGF0aW9uCitkcm9wIHRhYmxlIGlmIGV4 aXN0cyB0ZXN0X2pzb25iX2RvdDsKK2NyZWF0ZSB0YWJsZSB0ZXN0X2pzb25iX2RvdChpZCBpbnQs IHRlc3RfanNvbmIganNvbmIpOworaW5zZXJ0IGludG8gdGVzdF9qc29uYl9kb3Qgc2VsZWN0IDEs ICd7ImEiOiAxLCAiYiI6IDQyfSc6Ompzb247CitpbnNlcnQgaW50byB0ZXN0X2pzb25iX2RvdCBz ZWxlY3QgMSwgJ3siYSI6IDIsICJiIjogeyJjIjogNDJ9fSc6Ompzb247CitpbnNlcnQgaW50byB0 ZXN0X2pzb25iX2RvdCBzZWxlY3QgMSwgJ3siYSI6IDMsICJiIjogeyJjIjogIjQyIn0sICJkIjpb MTEsIDEyXX0nOjpqc29uOworCistLSBtZW1iZXIgb2JqZWN0IGFjY2Vzcworc2VsZWN0ICh0ZXN0 X2pzb25iX2RvdC50ZXN0X2pzb25iKS5iIGZyb20gdGVzdF9qc29uYl9kb3Q7CitzZWxlY3QgKHRl c3RfanNvbmJfZG90LnRlc3RfanNvbmIpLmIuYyBmcm9tIHRlc3RfanNvbmJfZG90Oworc2VsZWN0 ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKS5kIGZyb20gdGVzdF9qc29uYl9kb3Q7CitzZWxl Y3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNvbmIpLiJkIiBmcm9tIHRlc3RfanNvbmJfZG90Owor c2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKS4nZCcgZnJvbSB0ZXN0X2pzb25iX2Rv dDsKK3NlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9qc29uYilbJ2QnXSBmcm9tIHRlc3RfanNv bmJfZG90OworCistLSBhcnJheSBlbGVtZW50IGFjY2Vzcworc2VsZWN0ICh0ZXN0X2pzb25iX2Rv dC50ZXN0X2pzb25iKS5kWzBdIGZyb20gdGVzdF9qc29uYl9kb3Q7CitzZWxlY3QgKHRlc3RfanNv bmJfZG90LnRlc3RfanNvbmIpLmRbMDpdIGZyb20gdGVzdF9qc29uYl9kb3Q7CitzZWxlY3QgKHRl c3RfanNvbmJfZG90LnRlc3RfanNvbmIpLmRbMDo6aW50XSBmcm9tIHRlc3RfanNvbmJfZG90Owor c2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKS5kWzA6OmZsb2F0XSBmcm9tIHRlc3Rf anNvbmJfZG90Oworc2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKS5kWzBdLnhbMV0g ZnJvbSB0ZXN0X2pzb25iX2RvdDsKKworLS0gd2lsZGNhcmQgYWNjZXNzIGlzIG5vdCBzdXBwb3J0 ZWQKK3NlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9qc29uYikuKiBmcm9tIHRlc3RfanNvbmJf ZG90OworCistLSBjb21wbGV4IHR5cGUgd2l0aCBkb21haW4gb3ZlciBqc29uYgorY3JlYXRlIGRv bWFpbiBqc29uYl9kIGFzIGpzb25iOworY3JlYXRlIHR5cGUgY29tcF9qc29uYiBhcyAoYSBpbnQs IGIganNvbmJfZCk7CitjcmVhdGUgdGFibGUgdGVzdF9qc29uYl9kb21haW5fZG90KGEgY29tcF9q c29uYik7CitpbnNlcnQgaW50byB0ZXN0X2pzb25iX2RvbWFpbl9kb3Qgc2VsZWN0ICQkICgxLCJ7 IiJhIiI6IDMsICIia2V5MSIiOiB7IiJjIiI6ICIiNDIiIn0sICIia2V5MiIiOiBbMTEsIDEyXX0i KSAkJDsKK2luc2VydCBpbnRvIHRlc3RfanNvbmJfZG9tYWluX2RvdCBzZWxlY3QgJCQgKDEsInsi ImEiIjogMywgIiJrZXkxIiI6IHsiImMiIjogIiI0MiIifSwgIiJrZXkyIiI6IFsxMSwgMTIsIHsi IngiIjogWzMxLCA0Ml19XX0iKSAkJDsKKy0tIG9iamVjdCBhY2Nlc3MKK3NlbGVjdCAodGVzdF9q c29uYl9kb21haW5fZG90LmEpLmIua2V5MS5jIGZyb20gdGVzdF9qc29uYl9kb21haW5fZG90Owor c2VsZWN0ICh0ZXN0X2pzb25iX2RvbWFpbl9kb3QuYSkuYi5rZXkyIGZyb20gdGVzdF9qc29uYl9k b21haW5fZG90Oworc2VsZWN0ICh0ZXN0X2pzb25iX2RvbWFpbl9kb3QuYSkuYi5rZXkyWzBdIGZy b20gdGVzdF9qc29uYl9kb21haW5fZG90Oworc2VsZWN0ICh0ZXN0X2pzb25iX2RvbWFpbl9kb3Qu YSkuYi5rZXkyWzA6OnRleHRdIGZyb20gdGVzdF9qc29uYl9kb21haW5fZG90Oworc2VsZWN0ICh0 ZXN0X2pzb25iX2RvbWFpbl9kb3QuYSkuYi5rZXkyWzJdLnhbMV0gZnJvbSB0ZXN0X2pzb25iX2Rv bWFpbl9kb3Q7CistLSBhcnJheSBhY2Nlc3MKK2luc2VydCBpbnRvIHRlc3RfanNvbmJfZG9tYWlu X2RvdCBzZWxlY3QgJCQgKDEsIlt7IiJhIiI6IDN9LCB7IiJrZXkxIiI6IHsiImMiIjogIiI0MiIi fX0sIHsiImtleTIiIjogWzExLCAxMl19XSIpICQkOworc2VsZWN0ICh0ZXN0X2pzb25iX2RvbWFp bl9kb3QuYSkuYlswXSBmcm9tIHRlc3RfanNvbmJfZG9tYWluX2RvdDsKK3NlbGVjdCAodGVzdF9q c29uYl9kb21haW5fZG90LmEpLmJbMDpdIGZyb20gdGVzdF9qc29uYl9kb21haW5fZG90OworZHJv cCB0YWJsZSB0ZXN0X2pzb25iX2RvbWFpbl9kb3QgY2FzY2FkZTsKK2Ryb3AgdHlwZSBjb21wX2pz b25iIGNhc2NhZGU7Citkcm9wIGRvbWFpbiBqc29uYl9kIGNhc2NhZGU7CisKKy0tIG5lc3RlZCBk b21haW5zIG92ZXIganNvbmIKK0NSRUFURSBET01BSU4ganNvbmJfd2l0aF9uYW1lIEFTIEpTT05C CisgICAgQ0hFQ0sgKAorICAgICAgICAtLSBjaGVjayB0aGF0IEpTT04gaGFzIGEgIm5hbWUiIGZp ZWxkIGFuZCB0aGF0IGl0IGlzIGEgc3RyaW5nCisgICAgICAgIFZBTFVFID8gJ25hbWUnIEFORCBq c29uYl90eXBlb2YoVkFMVUUtPiduYW1lJykgPSAnc3RyaW5nJworICAgICAgICApOworQ1JFQVRF IERPTUFJTiBqc29uYl93aXRoX25hbWVfYW5kX2VtYWlsIEFTIGpzb25iX3dpdGhfbmFtZQorICAg IENIRUNLICgKKyAgICAgICAgLS0gZW5zdXJlIHRoYXQgaWYgImVtYWlsIiBleGlzdHMsIGl0IGZv bGxvd3MgYSBzaW1wbGUgZW1haWwgZm9ybWF0CisgICAgICAgIE5PVCBWQUxVRSA/ICdlbWFpbCcg T1IgKFZBTFVFLT4+J2VtYWlsJyB+ICdeW0EtWmEtejAtOS5fJSstXStAW0EtWmEtejAtOS4tXStc LltBLVphLXpdezIsfSQnKQorICAgICAgICApOworQ1JFQVRFIERPTUFJTiBqc29uYl91c2VyX3By b2ZpbGUgQVMganNvbmJfd2l0aF9uYW1lX2FuZF9lbWFpbAorICAgIENIRUNLICgKKyAgICAgICAg LS0gZW5zdXJlIHRoYXQgaWYgInBob25lIiBleGlzdHMsIGl0IGZvbGxvd3MgYSBiYXNpYyBwaG9u ZSBmb3JtYXQKKyAgICAgICAgTk9UIFZBTFVFID8gJ3Bob25lJyBPUiAoVkFMVUUtPj4ncGhvbmUn IH4gJ15cK1xkezEsM30tXGR7M30tXGR7M30tXGR7NH0kJykKKyAgICAgICAgKTsKK0NSRUFURSBU QUJMRSBqc29uYl91c2VycyAoaWQgU0VSSUFMIFBSSU1BUlkgS0VZLCBwcm9maWxlIGpzb25iX3Vz ZXJfcHJvZmlsZSk7CitJTlNFUlQgSU5UTyBqc29uYl91c2VycyAocHJvZmlsZSkgVkFMVUVTICgn eyJuYW1lIjogIkFsaWNlIiwgImVtYWlsIjogImFsaWNlQGV4YW1wbGUuY29tIiwgInBob25lIjog IisxLTEyMy00NTYtNzg5MCJ9Jyk7CitJTlNFUlQgSU5UTyBqc29uYl91c2VycyAocHJvZmlsZSkg VkFMVUVTICgneyJuYW1lIjogIkJvYiIsICJlbWFpbCI6ICJib2JAZXhhbXBsZS5jb20iLCAicGhv bmUiOiAiKzktODc2LTU0My0zMjEwIiwgImFkZHJlc3MiOiBbMTIzLCAiMXN0IHN0cmVldCIsICJO ZXcgWW9yayIsICJOZXcgWW9yayIsIDEyMzQ1XX0nKTsKK1NFTEVDVCAoanNvbmJfdXNlcnMucHJv ZmlsZSkubmFtZSBmcm9tIGpzb25iX3VzZXJzOworU0VMRUNUIChqc29uYl91c2Vycy5wcm9maWxl KS5lbWFpbCBmcm9tIGpzb25iX3VzZXJzOworU0VMRUNUIChqc29uYl91c2Vycy5wcm9maWxlKS5w aG9uZSBmcm9tIGpzb25iX3VzZXJzOworU0VMRUNUIChqc29uYl91c2Vycy5wcm9maWxlKS5hZGRy ZXNzIGZyb20ganNvbmJfdXNlcnM7CitTRUxFQ1QgKGpzb25iX3VzZXJzLnByb2ZpbGUpLmFkZHJl c3NbM10gZnJvbSBqc29uYl91c2VyczsKKworLS0gYXJyYXkgb2YgbmVzdGVkIGRvbWFpbnMgb3Zl ciBqc29uYgorQ1JFQVRFIFRBQkxFIGpzb25iX3VzZXJfYXJycyAoaWQgU0VSSUFMIFBSSU1BUlkg S0VZLCBwcm9maWxlcyBqc29uYl91c2VyX3Byb2ZpbGVbXSk7CitJTlNFUlQgSU5UTyBqc29uYl91 c2VyX2FycnMgKHByb2ZpbGVzKSBWQUxVRVMgKEFSUkFZWyd7Im5hbWUiOiAiQWxpY2UiLCAiZW1h aWwiOiAiYWxpY2VAZXhhbXBsZS5jb20iLCAicGhvbmUiOiAiKzEtMTIzLTQ1Ni03ODkwIn0nOjpq c29uYl91c2VyX3Byb2ZpbGUsICd7Im5hbWUiOiAiQm9iIiwgImVtYWlsIjogImJvYkBleGFtcGxl LmNvbSIsICJwaG9uZSI6ICIrOS04NzYtNTQzLTMyMTAiLCAiYWRkcmVzcyI6IFsxMjMsICIxc3Qg c3RyZWV0IiwgIk5ldyBZb3JrIiwgIk5ldyBZb3JrIiwgMTIzNDVdfSc6Ompzb25iX3VzZXJfcHJv ZmlsZV0pOworU0VMRUNUIGpzb25iX3VzZXJfYXJycy5wcm9maWxlc1sxXSBmcm9tIGpzb25iX3Vz ZXJfYXJyczsKK1NFTEVDVCBqc29uYl91c2VyX2FycnMucHJvZmlsZXNbMl0gZnJvbSBqc29uYl91 c2VyX2FycnM7CitTRUxFQ1QganNvbmJfdXNlcl9hcnJzLnByb2ZpbGVzWzJdLmFkZHJlc3NbMF0g ZnJvbSBqc29uYl91c2VyX2FycnM7CisKK2Ryb3AgdGFibGUganNvbmJfdXNlcnM7Citkcm9wIHRh YmxlIGpzb25iX3VzZXJfYXJyczsKK2Ryb3AgZG9tYWluIGpzb25iX3VzZXJfcHJvZmlsZTsKK2Ry b3AgZG9tYWluIGpzb25iX3dpdGhfbmFtZV9hbmRfZW1haWw7Citkcm9wIGRvbWFpbiBqc29uYl93 aXRoX25hbWU7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000635113062659bce4--