Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84) (envelope-from ) id 1afRVs-0000nz-Kp for pgadmin-hackers@arkaria.postgresql.org; Mon, 14 Mar 2016 12:22:21 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1afRVs-0006ls-6W for pgadmin-hackers@arkaria.postgresql.org; Mon, 14 Mar 2016 12:22:20 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1afRVm-0006lM-Hw for pgadmin-hackers@postgresql.org; Mon, 14 Mar 2016 12:22:14 +0000 Received: from mail-qk0-x231.google.com ([2607:f8b0:400d:c09::231]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1afRVc-0008Sj-Bt for pgadmin-hackers@postgresql.org; Mon, 14 Mar 2016 12:22:14 +0000 Received: by mail-qk0-x231.google.com with SMTP id s68so73684962qkh.3 for ; Mon, 14 Mar 2016 05:22:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=MCZ0bDvsWGYiy1ncmwH2CwPfs1Zth9hGbYKtwz/WZns=; b=nntPaBsifv7Z28I55LHRi9Eb0ufn/MN0agof2N5bKJfRqyGFAsLKfuJnZ3I9oiw7/9 zDyenvzy6rTP60/nzswRuQNP520v4ep5LReR0VpWuVhIlUkgA4rJcM01QETGzBifTNAn NXXMV7ZrsjSXnZA1sq/eOxob/g4QyErRL4FUXGKJ62/QAByr77uT839rSQCQppWq+ByF m9DhG3nFmJNq4NmqWOD4yoC4XyGTLAwVRPO+eEAE4rVybc4iDKa4Qy1JUho/G1X+qVeM +IjYNq9ZdOaONQD5izPeZ7SuiHuCesQfzeOAFXIyIACq/APR9B7YlKn65CAZJBWCmh6e NWbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=MCZ0bDvsWGYiy1ncmwH2CwPfs1Zth9hGbYKtwz/WZns=; b=KlBKOMvJUzjAWExc+2i7Pxy5CGpU1smNLYUzdsnitvRMRWFT9NijlohFDYxxIZi8FB tp6gcvSjCBojbbXkDOkfycf8VoSPKtJoxKs4BHTf0RUGUh+usFVafauoC8tp7H8PwVb3 cxsDPdTNj22WpYbUxuGyBZm3M6W6FEzkWPduU31B+n9Dl8UlkSHpXD+j9FcprBPtXLUN 5F+IJvW/kX2oO2cP7sZgorvVaoicVPikaiqXs1wWZcaeuifG0vg2DTffYALPb2E13FhK 5EX8XNPjUkfBNcO/UMXhu1wx8E2jrCcjibXUtsgBJJDMcyQNaS++CA4oRWtGY1sP7TrS D3Bg== X-Gm-Message-State: AD7BkJJ7WmxYXgA/52CMt+AFEpex96IKuD80jdhWQ1BlCtpftkQrMOIu9oU46H/4mbcDrEvU8/B9STgMJiH8jrR4 X-Received: by 10.55.17.164 with SMTP id 36mr29186050qkr.54.1457958121901; Mon, 14 Mar 2016 05:22:01 -0700 (PDT) MIME-Version: 1.0 Received: by 10.55.128.132 with HTTP; Mon, 14 Mar 2016 05:21:42 -0700 (PDT) In-Reply-To: References: From: Murtuza Zabuawala Date: Mon, 14 Mar 2016 17:51:42 +0530 Message-ID: Subject: Re: PATCH: Added Node Type & Catalog objects [pgAdmin4] To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11475862f5144a052e0153d0 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a11475862f5144a052e0153d0 Content-Type: multipart/alternative; boundary=001a11475862f51447052e0153ce --001a11475862f51447052e0153ce Content-Type: text/plain; charset=UTF-8 Hi Dave, Thank you for reviewing my patch. I have made changes according to your feedback. Please review updated patch. Regards, Murtuza On Fri, Mar 11, 2016 at 9:44 PM, Dave Page wrote: > And this time with the patch. > > On Fri, Mar 11, 2016 at 4:11 PM, Dave Page wrote: > > On Tue, Mar 8, 2016 at 1:38 PM, Murtuza Zabuawala > > wrote: > >> Hi, > >> > >> PFA patch to add new nodes in pgAdmin4. > >> 1) Type node > >> 2) Catalog objects > >> > >> Note: Both above nodes depended on schema/catalog node, Please apply > them > >> after latest patch of schema/catalog from Ashesh. > >> - Type node also depends on parse_priv_function_templates.patch (which I > >> sent in separate email today) > > > > The type node seems to need quite a bit of work - please review and > > test it carefully before re-submitting. There's an updated patch > > attached, and some review info below: > > > > Changed in the attached patch: > > > > - s/Oid/OID > > - Set defaults for schema and owner > > - Rename the Type Defintion group to Definition. > > - Moved some properties (acl, members) into the appropriate group > > - s/Enumration/Enumeration > > > > To be fixed: > > > > - This module is derived from SchemaChildModule, so why does it still > > have the backend support SQL? > > > Done (Apologies I forgot to delete them) > > - I cleaned up most of the SQL, which was improperly indented in many > > places. However I have not event tried to fix up the create.sql > > scripts. These need reformatting to: > > - Use 4 character indents > > - Not start a line with a comma - e.g. " ,FOO=bar", which should be > > " FOO=bar," (obviously the commas need to trail from the line > > before). > Done > > > > - The "Show System Objects" option is not honoured. > > > Done > > - The members list should be delimited with ", " not "," > > > Done > > - The ACL columns don't match other objects on the subnode panel - > > Grantee/Granter/Privileges should be Grantee/Privileges/Granter > > > Done > > - Attempting to add a security label with empty values gives: SECURITY > > LABEL FOR None ON TYPE foo_enum IS NULL; > > > > - The schema is omitted from GRANT statements when creating an object, > e.g. > > > > CREATE TYPE pem.foo_enum AS ENUM > > ('foo', 'bar', 'whizz'); > > > > ALTER TYPE pem.foo_enum OWNER TO postgres; > > > > COMMENT ON TYPE pem.foo_enum IS 'This is the foo enum'; > > > > GRANT ALL ON TYPE foo_enum TO pem_admin; > > > Done > > - Move remaining Properties display properties to the appropriate > > group - e.g. ENUM labels should be in the Definition group. Only Name, > > OID, Owner, Alias, System Type and Comment should be under General. > > > Done > > - The schema name is omitted when dropping a type, leading to: type > > "foo_enum" does not exist > > > Done > > - The dependencies and dependents tabs don't display any data. > > > Done > Thanks. > > > > -- > > Dave Page > > Blog: http://pgsnake.blogspot.com > > Twitter: @pgsnake > > > > EnterpriseDB UK: http://www.enterprisedb.com > > The Enterprise PostgreSQL Company > > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --001a11475862f51447052e0153ce Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Dave,

Thank you for reviewing my p= atch.

= I have made changes according to your feedback.

Please review updated patch.


=
Regards,
Murtuza=

On Fri, Mar= 11, 2016 at 9:44 PM, Dave Page <dpage@pgadmin.org> wrote:
And this time with the patch.

On Fri, Mar 11, 2016 at 4:11 PM, Dave Page <dpage@pgadmin.org> wrote:
> On Tue, Mar 8, 2016 at 1:38 PM, Murtuza Zabuawala
> <murtuza.zabu= awala@enterprisedb.com> wrote:
>> Hi,
>>
>> PFA patch to add new nodes in pgAdmin4.
>> 1) Type node
>> 2) Catalog objects
>>
>> Note: Both above nodes depended on schema/catalog node, Please app= ly them
>> after latest patch of schema/catalog from Ashesh.
>> - Type node also depends on parse_priv_function_templates.patch (w= hich I
>> sent in separate email today)
>
> The type node seems to need quite a bit of work - please review and
> test it carefully before re-submitting. There's an updated patch > attached, and some review info below:
>
> Changed in the attached patch:
>
> - s/Oid/OID
> - Set defaults for schema and owner
> - Rename the Type Defintion group to Definition.
> - Moved some properties (acl, members) into the appropriate group
> - s/Enumration/Enumeration
>
> To be fixed:
>
> - This module is derived from SchemaChildModule, so why does it still<= br> > have the backend support SQL?
>
Done (Apologies I forgot to delete th= em)
> - I cleaned up most of the SQL, which was improperly indented in many<= br> > places. However I have not event tried to fix up the create.sql
> scripts. These need reformatting to:
>=C2=A0 =C2=A0- Use 4 character indents
>=C2=A0 =C2=A0- Not start a line with a comma - e.g. "=C2=A0 ,FOO= =3Dbar", which should be
> "=C2=A0 FOO=3Dbar," (obviously the commas need to trail from= the line
> before).
Done=C2=A0
>
> - The "Show System Objects" option is not honoured.
>
Done=C2=A0
> - The members list should be delimited with ", " not ",= "
>
Done=C2=A0
> - The ACL columns don't match other objects on the subnode panel -=
> Grantee/Granter/Privileges should be Grantee/Privileges/Granter
>
Done=C2=A0
> - Attempting to add a security label with empty values gives: SECURITY=
> LABEL FOR None ON TYPE foo_enum IS NULL;
>
> - The schema is omitted from GRANT statements when creating an object,= e.g.
>
> CREATE TYPE pem.foo_enum AS ENUM
>=C2=A0 =C2=A0 =C2=A0('foo', 'bar', 'whizz');
>
> ALTER TYPE pem.foo_enum=C2=A0 =C2=A0 OWNER TO postgres;
>
> COMMENT ON TYPE pem.foo_enum IS 'This is the foo enum';
>
> GRANT ALL ON TYPE foo_enum TO pem_admin;
>
Done=C2=A0
> - Move remaining Properties display properties to the appropriate
> group - e.g. ENUM labels should be in the Definition group. Only Name,=
> OID, Owner, Alias, System Type and Comment should be under General.
>
Done=C2=A0
> - The schema name is omitted when dropping a type, leading to: type
> "foo_enum" does not exist
>
Done=C2=A0
> - The dependencies and dependents tabs don't display any data.
>
Done=C2=A0

<= br>
> Thanks.
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company



--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

--001a11475862f51447052e0153ce-- --001a11475862f5144a052e0153d0 Content-Type: application/octet-stream; name="types_node_v2.patch" Content-Disposition: attachment; filename="types_node_v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ilryfaoy1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL19faW5pdF9fLnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvX19pbml0X18ucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdhYzQyYQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL19faW5pdF9fLnB5CkBA IC0wLDAgKzEsMTE4MCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIiIiIEltcGxlbWVudHMgVHlwZSBOb2RlICIiIgor CitpbXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBs YXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9tIGZs YXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWluLnV0 aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAgIG1h a2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVy X2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdD aGlsZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgXAorICAgIGlt cG9ydCBTY2hlbWFDaGlsZE1vZHVsZQoraW1wb3J0IHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzIGFzIGRhdGFiYXNl Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMu dXRpbHMgaW1wb3J0IHBhcnNlX3ByaXZfZnJvbV9kYiwgXAorICAgIHBhcnNl X3ByaXZfdG9fZGIKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBw cmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2 ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19E RUZBVUxUX0RSSVZFUgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisK KworY2xhc3MgVHlwZU1vZHVsZShTY2hlbWFDaGlsZE1vZHVsZSk6CisgICAg IiIiCisgICAgIGNsYXNzIFR5cGVNb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUp CisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9yIFR5cGUgbm9kZSBkZXJp dmVkIGZyb20gU2NoZW1hQ2hpbGRNb2R1bGUKKworICAgIE1ldGhvZHM6Cisg ICAgLS0tLS0tLQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQor ICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBUeXBl IGFuZCBpdCdzIGJhc2UgbW9kdWxlLgorCisgICAgKiBnZXRfbm9kZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCwgdGlkKQorICAgICAgLSBNZXRob2QgaXMgdXNl ZCB0byBnZW5lcmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUuCisK KyAgICAqIG5vZGVfaW5vZGUoKQorICAgICAgLSBNZXRob2QgaXMgb3ZlcnJp ZGRlbiBmcm9tIGl0cyBiYXNlIGNsYXNzIHRvIG1ha2UgdGhlIG5vZGUgYXMg bGVhZiBub2RlLgorCisgICAgKiBzY3JpcHRfbG9hZCgpCisgICAgICAtIExv YWQgdGhlIG1vZHVsZSBzY3JpcHQgZm9yIHR5cGUsIHdoZW4gYW55IG9mIHRo ZSBzZXJ2ZXIgbm9kZSBpcworICAgICAgICBpbml0aWFsaXplZC4KKyAgICAi IiIKKworICAgIE5PREVfVFlQRSA9ICd0eXBlJworICAgIENPTExFQ1RJT05f TEFCRUwgPSBnZXR0ZXh0KCJUeXBlcyIpCisKKyAgICBkZWYgX19pbml0X18o c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAg IE1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIFR5cGVNb2R1bGUg YW5kIGl0J3MgYmFzZSBtb2R1bGUuCisKKyAgICAgICAgQXJnczoKKyAgICAg ICAgICAgICphcmdzOgorICAgICAgICAgICAgKiprd2FyZ3M6CisgICAgICAg ICIiIgorICAgICAgICBzdXBlcihUeXBlTW9kdWxlLCBzZWxmKS5fX2luaXRf XygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYubWluX3ZlciA9IE5v bmUKKyAgICAgICAgc2VsZi5tYXhfdmVyID0gTm9uZQorCisgICAgZGVmIGdl dF9ub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAg IiIiCisgICAgICAgIEdlbmVyYXRlIHRoZSBjb2xsZWN0aW9uIG5vZGUKKyAg ICAgICAgIiIiCisgICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVfYnJvd3Nl cl9jb2xsZWN0aW9uX25vZGUoc2NpZCkKKworICAgIEBwcm9wZXJ0eQorICAg IGRlZiBzY3JpcHRfbG9hZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg IExvYWQgdGhlIG1vZHVsZSBzY3JpcHQgZm9yIGRhdGFiYXNlLCB3aGVuIGFu eSBvZiB0aGUgZGF0YWJhc2Ugbm9kZSBpcworICAgICAgICBpbml0aWFsaXpl ZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBkYXRhYmFzZS5EYXRh YmFzZU1vZHVsZS5OT0RFX1RZUEUKKworICAgIEBwcm9wZXJ0eQorICAgIGRl ZiBub2RlX2lub2RlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9h ZCB0aGUgbW9kdWxlIG5vZGUgYXMgYSBsZWFmIG5vZGUKKyAgICAgICAgIiIi CisgICAgICAgIHJldHVybiBGYWxzZQorCitibHVlcHJpbnQgPSBUeXBlTW9k dWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIFR5cGVWaWV3KFBHQ2hpbGROb2Rl Vmlldyk6CisgICAgIiIiCisgICAgVGhpcyBjbGFzcyBpcyByZXNwb25zaWJs ZSBmb3IgZ2VuZXJhdGluZyByb3V0ZXMgZm9yIFR5cGUgbm9kZQorCisgICAg TWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygqKmt3YXJn cykKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUg VHlwZVZpZXcgYW5kIGl0J3MgYmFzZSB2aWV3LgorCisgICAgKiBjaGVja19w cmVjb25kaXRpb24oKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgYmVo YXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzCisgICAgICAg IGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdmlldywgaXQg d2lsbCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29ubiAmIHRl bXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisKKyAgICAqIGxpc3Qo KQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwg dGhlIFR5cGUgbm9kZXMgd2l0aGluIHRoYXQKKyAgICAgIGNvbGxlY3Rpb24u CisKKyAgICAqIG5vZGVzKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxs IHVzZWQgdG8gY3JlYXRlIGFsbCB0aGUgY2hpbGQgbm9kZSB3aXRoaW4gdGhh dAorICAgICAgICBjb2xsZWN0aW9uLCBIZXJlIGl0IHdpbGwgY3JlYXRlIGFs bCB0aGUgVHlwZSBub2RlLgorCisgICAgKiBwcm9wZXJ0aWVzKGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxs IHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVkIFR5cGUgbm9k ZQorCisgICAgKiBjcmVhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCkKKyAgICAg IC0gVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSB0aGUgbmV3IFR5cGUgb2Jq ZWN0CisKKyAgICAqIHVwZGF0ZShnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQp CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGRhdGEg Zm9yIHRoZSBzZWxlY3RlZCBUeXBlIG5vZGUKKworICAgICogZGVsZXRlKHNl bGYsIGdpZCwgc2lkLCBzY2lkLCB0aWQpOgorICAgICAgLSBUaGlzIGZ1bmN0 aW9uIHdpbGwgZHJvcCB0aGUgVHlwZSBvYmplY3QKKworICAgICogbXNxbChn aWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpCisgICAgICAtIFRoaXMgZnVuY3Rp b24gaXMgdXNlZCB0byByZXR1cm4gbW9kaWZpZWQgU1FMIGZvciB0aGUgc2Vs ZWN0ZWQKKyAgICAgICAgVHlwZSBub2RlCisKKyAgICAqIGdldF9zcWwoZGF0 YSwgc2NpZCwgdGlkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2Vu ZXJhdGUgc3FsIGZyb20gbW9kZWwgZGF0YQorCisgICAgKiBzcWwoZ2lkLCBz aWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBn ZW5lcmF0ZSBzcWwgdG8gc2hvdyBpdCBpbiBzcWwgcGFuZSBmb3IgdGhlCisg ICAgICAgIHNlbGVjdGVkIFR5cGUgbm9kZS4KKworICAgICogZGVwZW5kZW5j eShnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIHdpbGwgZ2VuZXJhdGUgZGVwZW5kZW5jeSBsaXN0IHNob3cgaXQg aW4gZGVwZW5kZW5jeQorICAgICAgICBwYW5lIGZvciB0aGUgc2VsZWN0ZWQg VHlwZSBub2RlLgorCisgICAgKiBkZXBlbmRlbnQoZ2lkLCBzaWQsIGRpZCwg c2NpZCwgdGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVy YXRlIGRlcGVuZGVudCBsaXN0IHRvIHNob3cgaXQgaW4gZGVwZW5kZW50Cisg ICAgICAgIHBhbmUgZm9yIHRoZSBzZWxlY3RlZCBUeXBlIG5vZGUuCisKKyAg ICAqIGFkZGl0aW9uYWxfcHJvcGVydGllcyhjb3B5X2RpY3QsIHRpZCk6Cisg ICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBhZGQgYWRkaXRpb25hbCBwcm9w ZXJ0aWVzIGluIHJlc3BvbnNlCisKKyAgICAqIGdldF9jb2xsYXRpb25zKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rp b24gd2lsbCByZXR1cm4gbGlzdCBvZiBjb2xsYXRpb24gaW4gYWpheCByZXNw b25zZQorCisgICAgKiBnZXRfdHlwZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0 IG9mIHR5cGVzIGluIGFqYXggcmVzcG9uc2UKKworICAgICogZ2V0X3N1YnR5 cGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAtIFRoaXMg ZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiBzdWJ0eXBlcyBpbiBhamF4 IHJlc3BvbnNlCisKKyAgICAqIGdldF9zdWJ0eXBlX29wY2xhc3MoZ2lkLCBz aWQsIGRpZCwgc2NpZCwgdGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3 aWxsIHJldHVybiBsaXN0IG9mIHN1YnR5cGUgb3BjbGFzcyBpbiBhamF4IHJl c3BvbnNlCisKKyAgICAqIGdldF9zdWJ0eXBlX2RpZmYoZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHJl dHVybiBsaXN0IG9mIHN1YnR5cGUgZGlmZiBmdW5jdGlvbnMKKyAgICAgICAg aW4gYWpheCByZXNwb25zZQorCisgICAgKiBnZXRfY2Fub25pY2FsKGdpZCwg c2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24g d2lsbCByZXR1cm4gbGlzdCBvZiBjYW5vbmljYWwgZnVuY3Rpb25zCisgICAg ICAgIGluIGFqYXggcmVzcG9uc2UKKworICAgICogZ2V0X2V4dGVybmFsX2Z1 bmN0aW9uc19saXN0KGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAg ICAtIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiBleHRlcm5h bCBmdW5jdGlvbnMKKyAgICAgICAgaW4gYWpheCByZXNwb25zZQorICAgICIi IgorCisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQorCisg ICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQn LCAnaWQnOiAnZ2lkJ30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50Jywg J2lkJzogJ3NpZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdp ZCc6ICdkaWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQn OiAnc2NpZCd9CisgICAgICAgICAgICBdCisgICAgaWRzID0gWworICAgICAg ICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICd0aWQnfQorICAgICAgICAg ICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2Jq JzogWworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxl dGUnOiAnZGVsZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAg IHsnZ2V0JzogJ2xpc3QnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAgICBd LAorICAgICAgICAnZGVsZXRlJzogW3snZGVsZXRlJzogJ2RlbGV0ZSd9XSwK KyAgICAgICAgJ2NoaWxkcmVuJzogW3snZ2V0JzogJ2NoaWxkcmVuJ31dLAor ICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdu b2Rlcyd9XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwnfV0sCisg ICAgICAgICdtc3FsJzogW3snZ2V0JzogJ21zcWwnfSwgeydnZXQnOiAnbXNx bCd9XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0YXRpc3RpY3Mn fV0sCisgICAgICAgICdkZXBlbmRlbmN5JzogW3snZ2V0JzogJ2RlcGVuZGVu Y2llcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBl bmRlbnRzJ31dLAorICAgICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwgeydn ZXQnOiAnbW9kdWxlX2pzJ31dLAorICAgICAgICAnZ2V0X3R5cGVzJzogW3sn Z2V0JzogJ2dldF90eXBlcyd9LCB7J2dldCc6ICdnZXRfdHlwZXMnfV0sCisg ICAgICAgICdnZXRfc3R5cGVzJzogW3snZ2V0JzogJ2dldF9zdWJ0eXBlcyd9 LCB7J2dldCc6ICdnZXRfc3VidHlwZXMnfV0sCisgICAgICAgICdnZXRfc3Vi b3BjbGFzcyc6IFt7J2dldCc6ICdnZXRfc3VidHlwZV9vcGNsYXNzJ30sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICB7J2dldCc6ICdnZXRfc3VidHlw ZV9vcGNsYXNzJ31dLAorICAgICAgICAnZ2V0X3N0eXBlZGlmZic6IFt7J2dl dCc6ICdnZXRfc3VidHlwZV9kaWZmJ30sIHsnZ2V0JzogJ2dldF9zdWJ0eXBl X2RpZmYnfV0sCisgICAgICAgICdnZXRfY2Fub25pY2FsJzogW3snZ2V0Jzog J2dldF9jYW5vbmljYWwnfSwgeydnZXQnOiAnZ2V0X2Nhbm9uaWNhbCd9XSwK KyAgICAgICAgJ2dldF9jb2xsYXRpb25zJzogW3snZ2V0JzogJ2dldF9jb2xs YXRpb25zJ30sIHsnZ2V0JzogJ2dldF9jb2xsYXRpb25zJ31dLAorICAgICAg ICAnZ2V0X2V4dGVybmFsX2Z1bmN0aW9ucyc6IFt7J2dldCc6ICdnZXRfZXh0 ZXJuYWxfZnVuY3Rpb25zX2xpc3QnfSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeydnZXQnOiAnZ2V0X2V4dGVybmFsX2Z1bmN0aW9u c19saXN0J31dCisgICAgfSkKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRp b24oZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzCisg ICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdmll dywgaXQgd2lsbCBhbHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29u biAmIHRlbXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisgICAgICAg ICIiIgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoKmFy Z3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICMgSGVyZSBhcmdzWzBdIHdp bGwgaG9sZCBzZWxmICYga3dhcmdzIHdpbGwgaG9sZCBnaWQsc2lkLGRpZAor ICAgICAgICAgICAgc2VsZiA9IGFyZ3NbMF0KKyAgICAgICAgICAgIHNlbGYu bWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNvbm5l Y3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAgICAgICAgc2Vs Zi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1sn ZGlkJ10pCisKKyAgICAgICAgICAgICMgV2UgbmVlZCBkYXRsYXN0c3lzb2lk IHRvIGNoZWNrIGlmIGN1cnJlbnQgdHlwZSBpcyBzeXN0ZW0gdHlwZQorICAg ICAgICAgICAgc2VsZi5kYXRsYXN0c3lzb2lkID0gc2VsZi5tYW5hZ2VyLmRi X2luZm9ba3dhcmdzWydkaWQnXV1bJ2RhdGxhc3RzeXNvaWQnXQorCisgICAg ICAgICAgICAjIElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1cm4gZXJy b3IgdG8gYnJvd3NlcgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubi5j b25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0 aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHRvIHRo ZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiCisgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMgRGVjbGFy ZSBhbGxvd3MgYWNsIG9uIHR5cGUKKyAgICAgICAgICAgIHNlbGYuYWNsID0g WydVJ10KKworICAgICAgICAgICAgIyB3ZSB3aWxsIHNldCB0ZW1wbGF0ZSBw YXRoIGZvciBzcWwgc2NyaXB0cworICAgICAgICAgICAgdmVyID0gc2VsZi5t YW5hZ2VyLnZlcnNpb24KKyAgICAgICAgICAgIGlmIDkwMDAwID49IHZlciA8 IDkwMTAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9 ICd0eXBlL3NxbC9wcmVfOS4xJworICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSAndHlwZS9zcWwvOS4x X3BsdXMnCisgICAgICAgICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3Mp CisKKyAgICAgICAgcmV0dXJuIHdyYXAKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgbGlzdChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNl ZCB0byBsaXN0IGFsbCB0aGUgdHlwZSBub2RlcyB3aXRoaW4gdGhhdCBjb2xs ZWN0aW9uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNl cnZlciBncm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJRAorICAgICAgICAgICAgdGlkOiBUeXBlIElECisKKyAgICAg ICAgUmV0dXJuczoKKyAgICAgICAgICAgIEpTT04gb2YgYXZhaWxhYmxlIHR5 cGUgbm9kZXMKKyAgICAgICAgIiIiCisKKyAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9w ZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNjaWQ9c2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0cz1zZWxmLmJs dWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzKQorCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXR1cm4g YWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1yZXNb J3Jvd3MnXSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1c2VkIHRvIGNyZWF0 ZSBhbGwgdGhlIGNoaWxkIG5vZGUgd2l0aGluIHRoYXQgY29sbGVjdGlvbi4K KyAgICAgICAgSGVyZSBpdCB3aWxsIGNyZWF0ZSBhbGwgdGhlIHR5cGUgbm9k ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAg ICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBzY2lkOiBTY2hl bWEgSUQKKyAgICAgICAgICAgIHRpZDogVHlwZSBJRAorCisgICAgICAgIFJl dHVybnM6CisgICAgICAgICAgICBKU09OIG9mIGF2YWlsYWJsZSB0eXBlIGNo aWxkIG5vZGVzCisgICAgICAgICIiIgorCisgICAgICAgIHJlcyA9IFtdCisg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdub2Rlcy5zcWwnXSksIHNjaWQ9c2NpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNob3dfc3lzdGVtX29iamVjdHM9c2Vs Zi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0cykKKyAgICAgICAgc3Rh dHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAg Zm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICByZXMuYXBw ZW5kKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5l cmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBy b3dbJ29pZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgc2NpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAg ICAgICAgICAgICAgICAgaWNvbj0iaWNvbi10eXBlIgorICAgICAgICAgICAg ICAgICAgICApKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBh ZGRpdGlvbmFsX3Byb3BlcnRpZXMoc2VsZiwgY29weV9kaWN0LCB0aWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgV2Ugd2lsbCB1c2UgdGhpcyBmdW5jdGlv biB0byBhZGQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFjY29yZGluZyB0byB0 eXBlCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIGFkZGl0aW9u YWwgcHJvcGVydGllcyBmb3IgdHlwZSBsaWtlIHJhbmdlL2NvbXBvc2l0ZS9l bnVtCisKKyAgICAgICAgIiIiCisgICAgICAgICMgRmV0Y2hpbmcgdHlwZSBv ZiB0eXBlCisgICAgICAgIG9mX3R5cGUgPSBjb3B5X2RpY3RbJ3R5cHR5cGUn XQorICAgICAgICByZXMgPSBkaWN0KCkKKyAgICAgICAgIyBJZiB0eXBlIGlz IG9mIENvbXBvc2l0ZSB0aGVuIHdlIG5lZWQgdG8gYWRkIG1lbWJlcnMgbGlz dCBpbiBvdXIgb3V0cHV0CisgICAgICAgIGlmIG9mX3R5cGUgPT0gJ2MnOgor ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdhZGRpdGlvbmFsX3Byb3BlcnRpZXMuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 J2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cHJl bGlkPWNvcHlfZGljdFsndHlwcmVsaWQnXSkKKyAgICAgICAgICAgIHN0YXR1 cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICAgICAgIyBUbyBkaXNwbGF5IGluIHByb3BlcnRpZXMKKyAgICAgICAg ICAgIHByb3BlcnRpZXNfbGlzdCA9IFtdCisgICAgICAgICAgICAjIFRvIGRp c3BsYXkgaW4gY29tcG9zaXRlIGNvbGxlY3Rpb24gZ3JpZAorICAgICAgICAg ICAgY29tcG9zaXRlX2xzdCA9IFtdCisKKyAgICAgICAgICAgIGZvciByb3cg aW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHR5cGVsaXN0ID0g JyAnLmpvaW4oW3Jvd1snYXR0bmFtZSddLCByb3dbJ3R5cG5hbWUnXV0pCisg ICAgICAgICAgICAgICAgaWYgbm90IHJvd1snY29sbG5hbWUnXSBvciAocm93 Wydjb2xsbmFtZSddID09ICdkZWZhdWx0JworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByb3dbJ2NvbGxuc3BuYW1l J10gPT0gJ3BnX2NhdGFsb2cnKToKKyAgICAgICAgICAgICAgICAgICAgZnVs bF9jb2xsYXRlID0gJycKKyAgICAgICAgICAgICAgICAgICAgY29sbGF0ZSA9 ICcnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg ICAgZnVsbF9jb2xsYXRlID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZF UikucXRJZGVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29u biwgcm93Wydjb2xsbnNwbmFtZSddLCByb3dbJ2NvbGxuYW1lJ10pCisgICAg ICAgICAgICAgICAgICAgIGNvbGxhdGUgPSAnIENPTExBVEUgJyArIGZ1bGxf Y29sbGF0ZQorICAgICAgICAgICAgICAgIHR5cGVsaXN0ICs9IGNvbGxhdGUK KyAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzX2xpc3QuYXBwZW5kKHR5cGVs aXN0KQorCisgICAgICAgICAgICAgICAgIyBCZWxvdyBsb2dpYyB3aWxsIGFs bG93IHVzIHRvIHNwbGl0IGxlbmd0aCwgcHJlY2lzaW9uIGZyb20gdHlwZSBu YW1lIGZvciBncmlkCisgICAgICAgICAgICAgICAgaW1wb3J0IHJlCisgICAg ICAgICAgICAgICAgbWF0Y2hPYmogPSByZS5tYXRjaCggcicoLiopXCgoLio/ KSwoLio/KVwpJywgcm93Wyd0eXBuYW1lJ10pCisgICAgICAgICAgICAgICAg aWYgbWF0Y2hPYmo6CisgICAgICAgICAgICAgICAgICAgIHRfbmFtZSA9IG1h dGNoT2JqLmdyb3VwKDEpCisgICAgICAgICAgICAgICAgICAgIHRfbGVuID0g bWF0Y2hPYmouZ3JvdXAoMikKKyAgICAgICAgICAgICAgICAgICAgdF9wcmVj ID0gbWF0Y2hPYmouZ3JvdXAoMykKKyAgICAgICAgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgICAgICAgICB0X25hbWUgPSByb3dbJ3R5cG5hbWUnXQor ICAgICAgICAgICAgICAgICAgICB0X2xlbiA9IE5vbmUKKyAgICAgICAgICAg ICAgICAgICAgdF9wcmVjID0gTm9uZQorCisgICAgICAgICAgICAgICAgY29t cG9zaXRlX2xzdC5hcHBlbmQoeworICAgICAgICAgICAgICAgICAgICAnbWVt YmVyX25hbWUnOiByb3dbJ2F0dG5hbWUnXSwgJ3R5cGUnOiB0X25hbWUsICdj b2xsYXRpb24nOiBmdWxsX2NvbGxhdGUsCisgICAgICAgICAgICAgICAgICAg ICd0bGVuZ3RoJzogdF9sZW4sICdwcmVjaXNpb24nOiB0X3ByZWMgfSkKKwor ICAgICAgICAgICAgIyBBZGRpbmcgYm90aCByZXN1bHRzCisgICAgICAgICAg ICByZXNbJ21lbWJlcl9saXN0J10gPSAnLCAnLmpvaW4ocHJvcGVydGllc19s aXN0KQorICAgICAgICAgICAgcmVzWydjb21wb3NpdGUnXSA9IGNvbXBvc2l0 ZV9sc3QKKworICAgICAgICAjIElmIHR5cGUgaXMgb2YgRU5VTSB0aGVuIHdl IG5lZWQgdG8gYWRkIGxhYmVscyBpbiBvdXIgb3V0cHV0CisgICAgICAgIGlm IG9mX3R5cGUgPT0gJ2UnOgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRpdGlv bmFsX3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHR5cGU9J2UnLCB0aWQ9dGlkKQorICAgICAgICAgICAg c3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor ICAgICAgICAgICAgIyBUbyBkaXNwbGF5IGluIHByb3BlcnRpZXMKKyAgICAg ICAgICAgIHByb3BlcnRpZXNfbGlzdCA9IFtdCisgICAgICAgICAgICAjIFRv IGRpc3BsYXkgaW4gZW51bSBncmlkCisgICAgICAgICAgICBlbnVtX2xpc3Qg PSBbXQorICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106Cisg ICAgICAgICAgICAgICAgcHJvcGVydGllc19saXN0LmFwcGVuZChyb3dbJ2Vu dW1sYWJlbCddKQorICAgICAgICAgICAgICAgIGVudW1fbGlzdC5hcHBlbmQo eydsYWJlbCc6IHJvd1snZW51bWxhYmVsJ119KQorCisgICAgICAgICAgICAj IEFkZGluZyBib3RoIHJlc3VsdHMgaW4gb3VwdXQKKyAgICAgICAgICAgIHJl c1snZW51bV9saXN0J10gPSAnLCAnLmpvaW4ocHJvcGVydGllc19saXN0KQor ICAgICAgICAgICAgcmVzWydlbnVtJ10gPSBlbnVtX2xpc3QKKworICAgICAg ICAjIElmIHR5cGUgaXMgb2YgUmFuZ2UgdGhlbiB3ZSBuZWVkIHRvIGFkZCBj b2xsYXRpb24sc3VidHlwZSBldGMgaW4gb3VyIG91dHB1dAorICAgICAgICBp ZiBvZl90eXBlID09ICdyJzoKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkaXRp b25hbF9wcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0eXBlPSdyJywgdGlkPXRpZCkKKyAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAg ICAgICAgICAgcmFuZ2VfZGljdCA9IGRpY3QocmVzWydyb3dzJ11bMF0pCisg ICAgICAgICAgICByZXMudXBkYXRlKHJhbmdlX2RpY3QpCisKKyAgICAgICAg IyBSZXR1cm5pbmcgb25seSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgb25seQor ICAgICAgICByZXR1cm4gcmVzCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCBzaG93IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWxlY3RlZCB0eXBl IG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2Vy dmVyIEdyb3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAg ICAgICAgICAgZGlkOiAgRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAg ICAgICAgICB0aWQ6IFR5cGUgSUQKKworICAgICAgICBSZXR1cm5zOgorICAg ICAgICAgICAgSlNPTiBvZiBzZWxlY3RlZCB0eXBlIG5vZGUKKyAgICAgICAg IiIiCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkLCB0aWQ9dGlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1z ZWxmLmRhdGxhc3RzeXNvaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaG93X3N5c3RlbV9vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3df c3lzdGVtX29iamVjdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgICMgTWFraW5nIGNvcHkgb2Ygb3V0cHV0IGZvciBmdXR1cmUg dXNlCisgICAgICAgIGNvcHlfZGljdCA9IGRpY3QocmVzWydyb3dzJ11bMF0p CisKKyAgICAgICAgIyBXZSBuZWVkIHRvIHBhcnNlICYgY29udmVydCBBQ0wg Y29taW5nIGZyb20gZGF0YWJhc2UgdG8ganNvbiBmb3JtYXQKKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICdhY2wuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2NpZD1zY2lkLCB0aWQ9dGlkKQorICAgICAgICBzdGF0dXMsIGFj bCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1hY2wpCisKKyAgICAgICAgIyBXZSB3aWxsIHNl dCBnZXQgcHJpdmlsZWdlcyBmcm9tIGFjbCBzcWwgc28gd2UgZG9uJ3QgbmVl ZAorICAgICAgICAjIGl0IGZyb20gcHJvcGVydGllcyBzcWwKKyAgICAgICAg Y29weV9kaWN0Wyd0eXBhY2wnXSA9IFtdCisKKworICAgICAgICBmb3Igcm93 IGluIGFjbFsncm93cyddOgorICAgICAgICAgICAgcHJpdiA9IHBhcnNlX3By aXZfZnJvbV9kYihyb3cpCisgICAgICAgICAgICBpZiByb3dbJ2RlZnR5cGUn XSBpbiBjb3B5X2RpY3Q6CisgICAgICAgICAgICAgICAgY29weV9kaWN0W3Jv d1snZGVmdHlwZSddXS5hcHBlbmQocHJpdikKKyAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgY29weV9kaWN0W3Jvd1snZGVmdHlwZSddXSA9 IFtwcml2XQorCisgICAgICAgICMgQ2FsbGluZyBmdW5jdGlvbiB0byBjaGVj ayBhbmQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGlmIGF2YWlsYWJsZQorICAg ICAgICBjb3B5X2RpY3QudXBkYXRlKHNlbGYuYWRkaXRpb25hbF9wcm9wZXJ0 aWVzKGNvcHlfZGljdCwgdGlkKSkKKworICAgICAgICByZXR1cm4gYWpheF9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1jb3B5X2RpY3Qs CisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X2Nv bGxhdGlvbnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJl dHVybiBsaXN0IG9mIGNvbGxhdGlvbiBhdmFpbGFibGUKKyAgICAgICAgYXMg QUpBWCByZXNwb25zZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFt7 J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdnZXRfY29sbGF0aW9ucy5zcWwnXSkpCisgICAg ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cydd OgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeydsYWJlbCc6IHJvd1snY29sbGF0aW9uJ10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IHJvd1snY29s bGF0aW9uJ119CisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVz PTIwMAorICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIGdldF90eXBlcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCB0aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGxpc3Qgb2YgdHlwZXMgYXZh aWxhYmxlCisgICAgICAgIGFzIEFKQVggcmVzcG9uc2UuCisgICAgICAgICIi IgorICAgICAgICByZXMgPSBbXQorICAgICAgICB0cnk6CisgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF90eXBlcy5zcWwnXSkpCisgICAgICAgICAgICBzdGF0 dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAg ICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAg ICAgICAgICMgQXR0YWNoaW5nIHByb3BlcnRpZXMgZm9yIHByZWNlc3Npb24K KyAgICAgICAgICAgICAgICAjICYgbGVuZ3RoIHZhbGlkYXRpb24gZm9yIGN1 cnJlbnQgdHlwZQorICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IEZhbHNl CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gRmFsc2UKKyAgICAgICAgICAg ICAgICBtaW5fdmFsID0gMAorICAgICAgICAgICAgICAgIG1heF92YWwgPSAw CisKKyAgICAgICAgICAgICAgICAjIENoZWNrIGFnYWluc3QgUEdPSUQgZm9y IHNwZWNpZmljIHR5cGUKKyAgICAgICAgICAgICAgICBpZiByb3dbJ2VsZW1v aWQnXToKKyAgICAgICAgICAgICAgICAgICAgaWYgcm93WydlbGVtb2lkJ10g aW4gKDE1NjAsIDE1NjEsIDE1NjIsIDE1NjMsIDEwNDIsIDEwNDMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDE0LCAx MDE1KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGV2YWwgPSAnTCcK KyAgICAgICAgICAgICAgICAgICAgZWxpZiByb3dbJ2VsZW1vaWQnXSBpbiAo MTA4MywgMTExNCwgMTExNSwgMTE4MywgMTE4NCwgMTE4NSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE4NiwgMTE4 NywgMTI2NiwgMTI3MCk6CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBl dmFsID0gJ0QnCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcm93WydlbGVt b2lkJ10gaW4gKDEyMzEsIDE3MDApOgorICAgICAgICAgICAgICAgICAgICAg ICAgdHlwZXZhbCA9ICdQJworICAgICAgICAgICAgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXZhbCA9ICcgJworCisgICAg ICAgICAgICAgICAgIyBMb2dpYyB0byBzZXQgcHJlY2lzaW9uICYgbGVuZ3Ro L21pbi9tYXggdmFsdWVzCisgICAgICAgICAgICAgICAgaWYgdHlwZXZhbCA9 PSAnUCc6CisgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IFRydWUK KworICAgICAgICAgICAgICAgIGlmIHByZWNpc2lvbiBvciB0eXBldmFsIGlu ICgnTCcsICdEJyk6CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IFRy dWUKKyAgICAgICAgICAgICAgICAgICAgbWluX3ZhbCA9IDAgaWYgdHlwZXZh bCA9PSAnRCcgZWxzZSAxCisgICAgICAgICAgICAgICAgICAgIGlmIHByZWNp c2lvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF92YWwgPSAxMDAw CisgICAgICAgICAgICAgICAgICAgIGVsaWYgbWluX3ZhbDoKKyAgICAgICAg ICAgICAgICAgICAgICAgICMgTWF4IG9mIGludGVnZXIgdmFsdWUKKyAgICAg ICAgICAgICAgICAgICAgICAgIG1heF92YWwgPSAyMTQ3NDgzNjQ3CisgICAg ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAg ICBtYXhfdmFsID0gMTAKKworICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsYWJlbCc6IHJvd1sn dHlwbmFtZSddLCAndmFsdWUnOiByb3dbJ3R5cG5hbWUnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ3R5cHZhbCc6IHR5cGV2YWwsICdwcmVj aXNpb24nOiBwcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdsZW5ndGgnOiBsZW5ndGgsICdtaW5fdmFsJzogbWluX3ZhbCwgJ21h eF92YWwnOiBtYXhfdmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAg ICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAK KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgZ2V0X3N1YnR5cGVzKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIHRpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRo aXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiBzdWJ0eXBlcyBhdmFp bGFibGUKKyAgICAgICAgYXMgQUpBWCByZXNwb25zZS4KKyAgICAgICAgIiIi CisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0K KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfc3VidHlw ZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN1YnR5cGU9VHJ1ZSkKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNl bGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgZm9y IHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICAgICAgcmVzLmFw cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2xhYmVsJzog cm93WydzdHlwZSddLCAndmFsdWUnOiByb3dbJ3N0eXBlJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdpc19jb2xsYXRlJzogcm93Wydpc19j b2xsYXRlJ119CisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAg ICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgICAgICBzdGF0 dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIGdldF9zdWJ0eXBlX29wY2xhc3Moc2Vs ZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9m IHN1YnR5cGUgb3BjbGFzcyBhdmFpbGFibGUKKyAgICAgICAgYXMgQUpBWCBy ZXNwb25zZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFt7J2xhYmVs JzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgZGF0YSA9IHJlcXVlc3Qu YXJncworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0 X3N1YnR5cGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdWJ0eXBlX29wY2xhc3M9VHJ1ZSwgZGF0YT1kYXRhKQorICAg ICAgICAgICAgaWYgU1FMOgorICAgICAgICAgICAgICAgIHN0YXR1cywgcnNl dCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAg ICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsnbGFiZWwnOiByb3dbJ29wY25hbWUnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IHJvd1sn b3BjbmFtZSddfSkKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAg ICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAg ICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBn ZXRfc3VidHlwZV9kaWZmKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCByZXR1cm4gbGlzdCBvZiBzdWJ0eXBlcyBkaWZmIGZ1bmN0aW9ucyBh dmFpbGFibGUKKyAgICAgICAgYXMgQUpBWCByZXNwb25zZS4KKyAgICAgICAg IiIiCisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcn fV0KKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuYXJncworCisgICAgICAgIHRy eToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3N1YnR5cGVzLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfb3BjaW50 eXBlPVRydWUsIGRhdGE9ZGF0YSkKKyAgICAgICAgICAgIGlmIFNRTDoKKyAg ICAgICAgICAgICAgICBzdGF0dXMsIG9wY2ludHlwZSA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1vcGNpbnR5cGUpCisgICAgICAgICAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZ2V0X3N1YnR5cGVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BjaW50eXBlPW9wY2lu dHlwZSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICAgICAgc3RhdHVz LCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAg ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisKKyAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToK KyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeydsYWJlbCc6IHJvd1snc3R5cGRpZmYn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6 IHJvd1snc3R5cGRpZmYnXX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICApCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkKKwor ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X2Nhbm9u aWNhbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9Tm9uZSk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJu IGxpc3Qgb2YgY2Fub25pY2FsIGZ1bmN0aW9ucyBhdmFpbGFibGUKKyAgICAg ICAgYXMgQUpBWCByZXNwb25zZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJl cyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgZGF0 YSA9IHJlcXVlc3QuYXJncworICAgICAgICBjYW5vbmljYWwgPSBUcnVlCisK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBXZSB3YW50IHRvIHNlbmQg ZGF0YSBvbmx5IGlmIGluIHdlIGFyZSBpbiBlZGl0IG1vZGUKKyAgICAgICAg ICAgICMgZWxzZSB3ZSB3aWxsIGRpc2FibGUgdGhlIGNvbWJvYm94CisgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9zdWJ0eXBlcy5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0b2lkPVRydWUsIGRhdGE9 ZGF0YSkKKyAgICAgICAgICAgIGlmIFNRTDoKKyAgICAgICAgICAgICAgICBz dGF0dXMsIG9pZCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisg ICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1v aWQpCisgICAgICAgICAgICAgICAgIyBJZiBvaWQgaXMgTm9uZSB0aGVuIGRv IG5vdCBydW4gU1FMCisgICAgICAgICAgICAgICAgaWYgb2lkIGlzIE5vbmU6 CisgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbCA9IEZhbHNlCisKKyAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZ2V0X3N1YnR5cGVzLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5vbmljYWw9Y2Fub25p Y2FsLCBjb25uPXNlbGYuY29ubiwgb2lkPW9pZCkKKyAgICAgICAgICAgIGlm IFNRTDoKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNv bm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAg ICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAg ICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7J2xhYmVsJzogcm93WydjYW5vbmljYWwnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IHJvd1snY2Fub25pY2Fs J119KQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAg ICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICAgICApCisK KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkp CisKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X2V4 dGVybmFsX2Z1bmN0aW9uc19saXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQsIHRpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiBleHRlcm5hbCBmdW5jdGlvbnMg YXZhaWxhYmxlCisgICAgICAgIGFzIEFKQVggcmVzcG9uc2UuCisgICAgICAg ICIiIgorICAgICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFsdWUnOiAn JywgJ2NidHlwZSc6ICdhbGwnfV0KKworICAgICAgICB0cnk6CisgICAgICAg ICAgICAjIFRoZSBTUUwgZ2VuZXJhdGVkIGJlbG93IHdpbGwgcG9wdWxhdGUg SW5wdXQvT3V0cHV0L1NlbmQvCisgICAgICAgICAgICAjIFJlY2VpdmUvQW5h bHl6ZS9UeXBNb2RlSU4vVHlwTW9kT1VUIGNvbWJvIGJveAorICAgICAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdnZXRfZXh0ZXJuYWxfZnVuY3Rpb25zLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRmdW5jPVRydWUp CisgICAgICAgICAgICBpZiBTUUw6CisgICAgICAgICAgICAgICAgc3RhdHVz LCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAg ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisKKyAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToK KyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAg ICAgICAgICAgICAgIHsnbGFiZWwnOiByb3dbJ2Z1bmMnXSwgJ3ZhbHVlJzog cm93WydmdW5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2NidHlw ZSc6ICdhbGwnfSkKKworICAgICAgICAgICAgIyBUaGUgU1FMIGdlbmVyYXRl ZCBiZWxvdyB3aWxsIHBvcHVsYXRlIFR5cE1vZGVJTiBjb21ibyBib3gKKyAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZ2V0X2V4dGVybmFsX2Z1bmN0aW9ucy5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW1v ZGluPVRydWUpCisgICAgICAgICAgICBpZiBTUUw6CisgICAgICAgICAgICAg ICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShT UUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRb J3Jvd3MnXToKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAg ICAgICAgICAgICAgICAgICAgICAgIHsnbGFiZWwnOiByb3dbJ2Z1bmMnXSwg J3ZhbHVlJzogcm93WydmdW5jJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgJ2NidHlwZSc6ICd0eXBtb2Rpbid9KQorCisgICAgICAgICAgICAjIFRo ZSBTUUwgZ2VuZXJhdGVkIGJlbG93IHdpbGwgcG9wdWxhdGUgVHlwTW9kZUlO IGNvbWJvIGJveAorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfZXh0ZXJuYWxf ZnVuY3Rpb25zLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0eXBlbW9kb3V0PVRydWUpCisgICAgICAgICAgICBpZiBTUUw6 CisgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBm b3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICAgICAg cmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHsnbGFiZWwn OiByb3dbJ2Z1bmMnXSwgJ3ZhbHVlJzogcm93WydmdW5jJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgJ2NidHlwZSc6ICd0eXBtb2RvdXQnfSkKKwor ICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICBzdGF0dXM9 MjAwCisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IGNyZWF0ZXMgbmV3IHRoZSB0eXBlIG9iamVjdAorCisgICAgICAgICBBcmdz OgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAg ICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElE CisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6 IFR5cGUgSUQKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0 LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0 LmRhdGEuZGVjb2RlKCkpCisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSB7Cisg ICAgICAgICAgICAnbmFtZSc6ICdOYW1lJywKKyAgICAgICAgICAgICd0eXB0 eXBlJzogJ1R5cGUnCisgICAgICAgIH0KKworICAgICAgICBmb3IgYXJnIGlu IHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRh dGE6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAg ICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICBl cnJvcm1zZz1nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgIkNv dWxkbid0IGZpbmQgdGhlIHJlcXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJQor ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRfYXJnc1thcmddCisg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAjIEFkZGl0aW9uYWwgY2hlY2tzIGdvZXMgaGVyZQorICAgICAg ICAgICAgIyBJZiB0eXBlIGlzIGNvbXBvc2l0ZSB0aGVuIGNoZWNrIGlmIGl0 IGhhcyB0d28gbWVtYmVycworICAgICAgICAgICAgaWYgZGF0YSBhbmQgZGF0 YVthcmddID09ICdjJzoKKyAgICAgICAgICAgICAgICBpZiBsZW4oZGF0YVsn Y29tcG9zaXRlJ10pIDwgMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cz00MTAsCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNz PTAsCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0 KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb21wb3NpdGUgdHlw ZSByZXF1aXJlcyBhdCBsZWFzdCB0d28gbWVtYmVycycKKyAgICAgICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgIyBJZiB0eXBlIGlzIGVudW0gdGhlbiBjaGVjayBpZiBpdCBoYXMg bWluaW11bSBvbmUgbGFiZWwKKyAgICAgICAgICAgIGlmIGRhdGEgYW5kIGRh dGFbYXJnXSA9PSAnZSc6CisgICAgICAgICAgICAgICAgaWYgbGVuKGRhdGFb J2VudW0nXSkgPCAxOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICAgICAgc3Rh dHVzPTQxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwK KyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPWdldHRleHQoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0VudW1lcmF0aW9uIHR5cGUg cmVxdWlyZXMgYXQgbGVhc3Qgb25lIGxhYmVsJworICAgICAgICAgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg ICAjIElmIHR5cGUgaXMgZW51bSB0aGVuIGNoZWNrIGlmIGl0IGhhcyBtaW5p bXVtIG9uZSBsYWJlbAorICAgICAgICAgICAgaWYgZGF0YSBhbmQgZGF0YVth cmddID09ICdyJzoKKyAgICAgICAgICAgICAgICBpZiBkYXRhWyd0eXBuYW1l J10gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1 cz00MTAsCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTAsCisg ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdTdWJ0eXBlIG11c3QgYmUgZGVm aW5lZCBmb3IgcmFuZ2UgdHlwZScKKyAgICAgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgIyBJZiB0 eXBlIGlzIGV4dGVybmFsIHRoZW4gY2hlY2sgaWYgaW5wdXQvb3V0cHV0Cisg ICAgICAgICAgICAjIGNvbnZlcnNpb24gZnVuY3Rpb24gaXMgZGVmaW5lZAor ICAgICAgICAgICAgaWYgZGF0YSBhbmQgZGF0YVthcmddID09ICd4JzoKKyAg ICAgICAgICAgICAgICBpZiBkYXRhWyd0eXBpbnB1dCddIGlzIE5vbmUgb3Ig XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWyd0eXBv dXRwdXQnXSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICAgICAg c3RhdHVzPTQxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPWdldHRleHQo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4dGVybmFsIHR5cGUg cmVxdWlyZXMgYm90aCBJbnB1dCAmIE91dHB1dCBjb252ZXJzaW9uIGZ1bmN0 aW9uLicKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg ICAgICAgICAgKQorCisgICAgICAgICMgVG8gZm9ybWF0IHByaXZpbGVnZXMg Y29taW5nIGZyb20gY2xpZW50CisgICAgICAgIGlmICd0eXBhY2wnIGluIGRh dGEgYW5kIGRhdGFbJ3R5cGFjbCddIGlzIG5vdCBOb25lOgorICAgICAgICAg ICAgZGF0YVsndHlwYWNsJ10gPSBwYXJzZV9wcml2X3RvX2RiKGRhdGFbJ3R5 cGFjbCddLCBzZWxmLmFjbCkKKworICAgICAgICB0cnk6CisgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgICMgd2UgbmVlZCBvaWQgdG8gdG8gYWRk IG9iamVjdCBpbiB0cmVlIGF0IGJyb3dzZXIKKyAgICAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnZ2V0X29pZC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2NpZD1zY2lkLCBkYXRhPWRhdGEpCisgICAgICAgICAgICBz dGF0dXMsIHRpZCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9dGlkKQorCisg ICAgICAgICAgICByZXR1cm4ganNvbmlmeSgKKyAgICAgICAgICAgICAgICBu b2RlPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAg ICAgICAgICAgICAgICAgICAgdGlkLAorICAgICAgICAgICAgICAgICAgICBz Y2lkLAorICAgICAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10sCisgICAg ICAgICAgICAgICAgICAgIGljb249Imljb24tdHlwZSIKKyAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiB1cGRhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCB1cGRhdGVzIGV4aXN0aW5nIHRoZSB0eXBlIG9iamVjdAorCisgICAg ICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAor ICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAg ICAgICB0aWQ6IFR5cGUgSUQKKyAgICAgICAgIiIiCisKKyAgICAgICAgZGF0 YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxv YWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgU1FMID0gc2VsZi5nZXRfc3FsKGdpZCwgc2lkLCBkYXRhLCBz Y2lkLCB0aWQpCisgICAgICAgICAgICBpZiBTUUwgYW5kIFNRTC5zdHJpcCgn XG4nKSBhbmQgU1FMLnN0cmlwKCcgJyk6CisgICAgICAgICAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAg ICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAg ICAgICAgICAgICBpbmZvPSJUeXBlIHVwZGF0ZWQiLAorICAgICAgICAgICAg ICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6 IHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzY2lkJzogc2NpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGlu Zm89Ik5vdGhpbmcgdG8gdXBkYXRlIiwKKyAgICAgICAgICAgICAgICAgICAg ZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiB0aWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXN0cihlKSkKKworCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRh dGVzIGV4aXN0aW5nIHRoZSB0eXBlIG9iamVjdAorCisgICAgICAgICBBcmdz OgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAg ICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElE CisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6 IFR5cGUgSUQKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBCZWxvdyB3aWxs IGRlY2lkZSBpZiBpdCdzIHNpbXBsZSBkcm9wIG9yIGRyb3Agd2l0aCBjYXNj YWRlIGNhbGwKKyAgICAgICAgaWYgc2VsZi5jbWQgPT0gJ2RlbGV0ZSc6Cisg ICAgICAgICAgICAjIFRoaXMgaXMgYSBjYXNjYWRlIG9wZXJhdGlvbgorICAg ICAgICAgICAgY2FzY2FkZSA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAg ICAgICAgIGNhc2NhZGUgPSBGYWxzZQorCisgICAgICAgIHRyeToKKworICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIHRpZD10aWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5 c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0cz1zZWxmLmJsdWVw cmludC5zaG93X3N5c3RlbV9vYmplY3RzCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICMgTWFr aW5nIGNvcHkgb2Ygb3V0cHV0IGZvciBmdXR1cmUgdXNlCisgICAgICAgICAg ICBkYXRhID0gZGljdChyZXNbJ3Jvd3MnXVswXSkKKworICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY2FzY2FkZT1jYXNjYWRlLCBjb25u PXNlbGYuY29ubikKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgc3VjY2Vzcz0x LAorICAgICAgICAgICAgICAgIGluZm89Z2V0dGV4dCgiVHlwZSBkcm9wcGVk IiksCisgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAg ICAgICdpZCc6IHRpZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBz Y2lkCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQorCisgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG1zcWwoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlcyBtb2RpZmll ZCBzcWwgZm9yIHR5cGUgb2JqZWN0CisKKyAgICAgICAgIEFyZ3M6CisgICAg ICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgIHNpZDog U2VydmVyIElECisgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAg ICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgIHRpZDogVHlwZSBJ RAorICAgICAgICAiIiIKKyAgICAgICAgcmVxID0gcmVxdWVzdC5hcmdzCisg ICAgICAgIGRhdGEgPSBkaWN0KCkKKworICAgICAgICAjIGNvbnZlcnRpbmcg bmVzdGVkIHJlcXVlc3QgZGF0YSBpbiBwcm9wZXIganNvbiBmb3JtYXQKKyAg ICAgICAgZm9yIGtleSx2YWwgaW4gcmVxLml0ZW1zKCk6CisgICAgICAgICAg ICBpZiBrZXkgaW4gWydjb21wb3NpdGUnLCAnZW51bScsICdzZWNsYWJlbHMn LCAndHlwYWNsJ106CisgICAgICAgICAgICAgICAgZGF0YVtrZXldID0ganNv bi5sb2Fkcyh2YWwpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg ICAgIGRhdGFba2V5XSA9IHZhbAorCisgICAgICAgIHRyeToKKyAgICAgICAg ICAgIFNRTCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNpZCwgZGF0YSwgc2NpZCwg dGlkKQorCisgICAgICAgICAgICBpZiBTUUwgYW5kIFNRTC5zdHJpcCgnXG4n KSBhbmQgU1FMLnN0cmlwKCcgJyk6CisgICAgICAgICAgICAgICAgcmV0dXJu IG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9U1FMLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQg RXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgZGVmIGdldF9zcWwoc2Vs ZiwgZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIHRpZD1Ob25lKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5yYXRlIHNxbCBm cm9tIG1vZGVsIGRhdGEKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHRpZCBp cyBub3QgTm9uZToKKworICAgICAgICAgICAgZm9yIGtleSBpbiBbJ3R5cGFj bCddOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBkYXRhIGFuZCBkYXRh W2tleV0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlmICdh ZGRlZCcgaW4gZGF0YVtrZXldOgorICAgICAgICAgICAgICAgICAgICAgIGRh dGFba2V5XVsnYWRkZWQnXSA9IHBhcnNlX3ByaXZfdG9fZGIoZGF0YVtrZXld WydhZGRlZCddLCBzZWxmLmFjbCkKKyAgICAgICAgICAgICAgICAgICAgaWYg J2NoYW5nZWQnIGluIGRhdGFba2V5XToKKyAgICAgICAgICAgICAgICAgICAg ICBkYXRhW2tleV1bJ2NoYW5nZWQnXSA9IHBhcnNlX3ByaXZfdG9fZGIoZGF0 YVtrZXldWydjaGFuZ2VkJ10sIHNlbGYuYWNsKQorICAgICAgICAgICAgICAg ICAgICBpZiAnZGVsZXRlZCcgaW4gZGF0YVtrZXldOgorICAgICAgICAgICAg ICAgICAgICAgIGRhdGFba2V5XVsnZGVsZXRlZCddID0gcGFyc2VfcHJpdl90 b19kYihkYXRhW2tleV1bJ2RlbGV0ZWQnXSwgc2VsZi5hY2wpCisKKyAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkLCB0aWQ9dGlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNv aWQ9c2VsZi5kYXRsYXN0c3lzb2lkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNob3dfc3lzdGVtX29iamVjdHM9c2VsZi5ibHVlcHJp bnQuc2hvd19zeXN0ZW1fb2JqZWN0cworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIE1ha2lu ZyBjb3B5IG9mIG91dHB1dCBmb3IgZnV0dXJlIHVzZQorICAgICAgICAgICAg b2xkX2RhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQorCisgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ2FjbC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2NpZD1zY2lkLCB0aWQ9dGlkKQorICAgICAgICAgICAg c3RhdHVzLCBhY2wgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1hY2wpCisKKyAg ICAgICAgICAgICMgV2Ugd2lsbCBzZXQgZ2V0IHByaXZpbGVnZXMgZnJvbSBh Y2wgc3FsIHNvIHdlIGRvbid0IG5lZWQKKyAgICAgICAgICAgICMgaXQgZnJv bSBwcm9wZXJ0aWVzIHNxbAorICAgICAgICAgICAgb2xkX2RhdGFbJ3R5cGFj bCddID0gW10KKworICAgICAgICAgICAgZm9yIHJvdyBpbiBhY2xbJ3Jvd3Mn XToKKyAgICAgICAgICAgICAgICBwcml2ID0gcGFyc2VfcHJpdl9mcm9tX2Ri KHJvdykKKyAgICAgICAgICAgICAgICBpZiByb3dbJ2RlZnR5cGUnXSBpbiBv bGRfZGF0YToKKyAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbcm93Wydk ZWZ0eXBlJ11dLmFwcGVuZChwcml2KQorICAgICAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhW3Jvd1snZGVmdHlwZSdd XSA9IFtwcml2XQorCisgICAgICAgICAgICAjIENhbGxpbmcgZnVuY3Rpb24g dG8gY2hlY2sgYW5kIGFkZGl0aW9uYWwgcHJvcGVydGllcyBpZiBhdmFpbGFi bGUKKyAgICAgICAgICAgIG9sZF9kYXRhLnVwZGF0ZShzZWxmLmFkZGl0aW9u YWxfcHJvcGVydGllcyhvbGRfZGF0YSwgdGlkKSkKKworICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAg ICAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRhLCBjb25u PXNlbGYuY29ubgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToK KyAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAg ICAgJ25hbWUnLAorICAgICAgICAgICAgICAgICd0eXB0eXBlJworICAgICAg ICAgICAgXQorCisgICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2Fy Z3M6CisgICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gIiAtLWRlZmluaXRpb24gaW5jb21w bGV0ZSIKKworICAgICAgICAgICAgIyBQcml2aWxlZ2VzCisgICAgICAgICAg ICBpZiAndHlwYWNsJyBpbiBkYXRhIGFuZCBkYXRhWyd0eXBhY2wnXSBpcyBu b3QgTm9uZToKKyAgICAgICAgICAgICAgICBkYXRhWyd0eXBhY2wnXSA9IHBh cnNlX3ByaXZfdG9fZGIoZGF0YVsndHlwYWNsJ10sIHNlbGYuYWNsKQorCisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYu Y29ubikKKworICAgICAgICByZXR1cm4gU1FMCisKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQsIHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgZ2VuZXJhdGVzIHJldmVyc2UgZW5naW5lZXJlZCBzcWwgZm9y IHR5cGUgb2JqZWN0CisKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgIGdp ZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgIHNpZDogU2VydmVyIElE CisgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgc2Np ZDogU2NoZW1hIElECisgICAgICAgICAgIHRpZDogVHlwZSBJRAorICAgICAg ICAiIiIKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkLCB0aWQ9dGlkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1z ZWxmLmRhdGxhc3RzeXNvaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaG93X3N5c3RlbV9vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3df c3lzdGVtX29iamVjdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgICMgTWFraW5nIGNvcHkgb2Ygb3V0cHV0IGZvciBmdXR1cmUg dXNlCisgICAgICAgIGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQorCisg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnYWNsLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRpZCkKKyAgICAgICAgc3Rh dHVzLCBhY2wgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9YWNsKQorCisgICAgICAgICMgV2Ug d2lsbCBzZXQgZ2V0IHByaXZpbGVnZXMgZnJvbSBhY2wgc3FsIHNvIHdlIGRv bid0IG5lZWQKKyAgICAgICAgIyBpdCBmcm9tIHByb3BlcnRpZXMgc3FsCisg ICAgICAgIGRhdGFbJ3R5cGFjbCddID0gW10KKworICAgICAgICBmb3Igcm93 IGluIGFjbFsncm93cyddOgorICAgICAgICAgICAgcHJpdiA9IHBhcnNlX3By aXZfZnJvbV9kYihyb3cpCisgICAgICAgICAgICBpZiByb3dbJ2RlZnR5cGUn XSBpbiBkYXRhOgorICAgICAgICAgICAgICAgIGRhdGFbcm93WydkZWZ0eXBl J11dLmFwcGVuZChwcml2KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg ICAgICAgICBkYXRhW3Jvd1snZGVmdHlwZSddXSA9IFtwcml2XQorCisgICAg ICAgICMgUHJpdmlsZWdlcworICAgICAgICBpZiAndHlwYWNsJyBpbiBkYXRh IGFuZCBkYXRhWyd0eXBhY2wnXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAg IGRhdGFbJ25zcGFjbCddID0gcGFyc2VfcHJpdl90b19kYihkYXRhWyd0eXBh Y2wnXSwgc2VsZi5hY2wpCisKKyAgICAgICAgIyBDYWxsaW5nIGZ1bmN0aW9u IHRvIGNoZWNrIGFuZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgaWYgYXZhaWxh YmxlCisgICAgICAgIGRhdGEudXBkYXRlKHNlbGYuYWRkaXRpb25hbF9wcm9w ZXJ0aWVzKGRhdGEsIHRpZCkpCisKKyAgICAgICAgIyBXZSBkbyBub3Qgd2Fu dCB0byBkaXNwbGF5IHRhYmxlIHdoaWNoIGhhcyAnLScgdmFsdWUKKyAgICAg ICAgIyBzZXR0aW5nIHRoZW0gdG8gTm9uZSBzbyB0aGF0IGppbmphIGF2b2lk IGRpc3BsYXlpbmcgdGhlbQorICAgICAgICBmb3IgayBpbiBkYXRhOgorICAg ICAgICAgICAgaWYgZGF0YVtrXSA9PSAnLSc6CisgICAgICAgICAgICAgICAg ZGF0YVtrXSA9IE5vbmUKKworICAgICAgICBTUUwgPSBzZWxmLmdldF9zcWwo Z2lkLCBzaWQsIGRhdGEsIHNjaWQsIHRpZD1Ob25lKQorCisgICAgICAgICMg V2UgYXJlIGFwcGVuZGluZyBoZWFkZXJzIGhlcmUgZm9yIHNxbCBwYW5lbAor ICAgICAgICBzcWxfaGVhZGVyID0gIi0tIFR5cGU6IHswfVxuXG4tLSAiLmZv cm1hdChkYXRhWyduYW1lJ10pCisgICAgICAgIHNxbF9oZWFkZXIgKz0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKyAgICAg ICAgU1FMID0gc3FsX2hlYWRlciArICdcblxuJyArIFNRTAorCisgICAgICAg IHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPVNRTCkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVwZW5kZW50cyhzZWxmLCBn aWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVy biBhamF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgdHlwZSBub2RlLgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAg IGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJ RAorICAgICAgICAgICAgdGlkOiBUeXBlIElECisgICAgICAgICIiIgorICAg ICAgICBkZXBlbmRlbnRzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVudHMo CisgICAgICAgICAgICBzZWxmLmNvbm4sIHRpZAorICAgICAgICApCisKKyAg ICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAg cmVzcG9uc2U9ZGVwZW5kZW50c19yZXN1bHQsCisgICAgICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBU aGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4g YWpheCByZXNwb25zZQorICAgICAgICBmb3IgdGhlIHR5cGUgbm9kZS4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAg SUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBk aWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQK KyAgICAgICAgICAgIHRpZDogVHlwZSBJRAorICAgICAgICAiIiIKKyAgICAg ICAgZGVwZW5kZW5jaWVzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVuY2ll cygKKyAgICAgICAgICAgIHNlbGYuY29ubiwgdGlkCisgICAgICAgICkKKwor ICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAg ICByZXNwb25zZT1kZXBlbmRlbmNpZXNfcmVzdWx0LAorICAgICAgICAgICAg ICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKK1R5cGVWaWV3 LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlw ZXMvc3RhdGljL2ltZy9jb2xsLXR5cGUucG5nIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dHlwZXMvc3RhdGljL2ltZy9jb2xsLXR5cGUucG5nCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLmZiMDIwZDdkOTlmODQ0MzkwNDZkMjg4NjE1ZTg2NWVlMWZi ZGI4MTUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMyOQp6Y21lQVNATj8o b2xIeWB1VkJxIWlhMHZwXjB3QiE3Mz8kIyllRlBGdjNHZk1WMT0zTmNYST1h TT5mSGFRVEBROTEKemBoUzFSe35PRXhVITM7O01FbX4obUgmNjx7b2xOMy1j REpkST53Uzl6aEROM1hFKU0tOUxAcmQkWUxQdjBtZzE4Cnp2K2FQNDcqN3wr NVJVNyVYUU8hPTQwemxnb153byRFVSFNeSMzaihrcyp9TFQ5ZFVyXm5GVip4 YDxMZkVYTFUmewp6TlRfUVope3AxMWpyOEJSSmYqSjl0MXEkRCVYNkZLKHF9 dUlrNGBPVl8mdit0QVpGKTxjfl8pIXxOTXtWPWUjV1gKek4jSjl2RzArfj42 NCF7NWwqRSEkdEtfMG9Bak0jMFV9JklnWHJ5YWs3LUQyI1dueWUpVnliT21Z R3EoQkAxNVElCnE2Yi1yZ0RWYkBONURmO0ZVPTJYa0NSUFMhNURsbE1ocHF1 P1ZETlBIYjZNdzwmOyRVWiQ4Kk8zCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy9zdGF0aWMvaW1n L3R5cGUucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvc3RhdGljL2ltZy90 eXBlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzE2NzY0ZTdkMDhj NTY5MjJhOTdhMmYwYzZjYzA2NDU1Yzg2YTU2CkdJVCBiaW5hcnkgcGF0Y2gK bGl0ZXJhbCAzMjUKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNzM/ JCMpZUZQRnY1QVg/YjE9OH4jOUVtelQ+KVFXVT1sKHhFCnpgdjJqc3xGX3J0 emRZfiVuRjtAb0h2UWpReyhwUGt8SU1rKTBAKjtOajNxJlMhMystMVpsblBA b0NPfHsjWCNCdgp6ak5NTFYrV3tHJm8tVTNkOU1fVyo0ek1fUklWfDh2KFU0 fHQ2cjhafDVmaDdfTHRCPUgwMUttSlI7SSVRbVhzQ0sKem5IXy09N2EzVzY5 b25BeEQ5bTY8JHltJE88bSVBJkVsPVNGT1VqRW1qN2BvNCs5RGZuQEdfajxC ZmFyflotKSFlCnowQFZgTmg/MTFWbDJvaFlxRXNOb1V9UnV1cGxmS1BZaFZ+ K1dNRX10WS1NN3FaRDQ5O1VALTVVLVlPSWd4JW54WAprWF9YS1MyOXt0QUst REh6MjQpWnFyPjJMbDBjdjNJYm9GeXQ9YWtSezAxaDUmcXlQV18KCmxpdGVy YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3R5cGVzL3RlbXBsYXRlcy90eXBlL2pzL3R5cGUuanMgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9qcy90eXBlLmpzCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNjE2OGYKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlw ZS9qcy90eXBlLmpzCkBAIC0wLDAgKzEsODU2IEBACitkZWZpbmUoCisgICAg ICAgIFsnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJp bmcnLCAncGdhZG1pbicsCisgICAgICAgICAncGdhZG1pbi5icm93c2VyJywg J2FsZXJ0aWZ5JywgJ2JhY2tncmlkJywgJ3BnYWRtaW4uYmFja2dyaWQnLAor ICAgICAgICAgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAorZnVu Y3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSwg QmFja2dyaWQpIHsKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC10 eXBlJ10pIHsKKyAgICB2YXIgZGF0YWJhc2VzID0gcGdBZG1pbi5Ccm93c2Vy Lk5vZGVzWydjb2xsLXR5cGUnXSA9CisgICAgICBwZ0FkbWluLkJyb3dzZXIu Q29sbGVjdGlvbi5leHRlbmQoeworICAgICAgICBub2RlOiAndHlwZScsCisg ICAgICAgIGxhYmVsOiAne3sgXygnVHlwZXMnKSB9fScsCisgICAgICAgIHR5 cGU6ICdjb2xsLXR5cGUnLAorICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAn dHlwZW93bmVyJywgJ2Rlc2NyaXB0aW9uJ10KKyAgICAgIH0pOworICB9Owor CisgIC8vIFN3aXRjaCBvcHRpb25zIHRvIHNhdmUgc3BhY2UgaW4gbW9kZWwn cyBmaWVsZAorICB2YXIgc3dpdGNoT3B0aW9ucyA9IHsKKyAgICAnb25UZXh0 JzogJ1llcycsICdvZmZUZXh0JzogJ05vJywKKyAgICAnb25Db2xvcic6ICdz dWNjZXNzJywgJ29mZkNvbG9yJzogJ2RlZmF1bHQnLAorICAgICdzaXplJzog J3NtYWxsJworICB9OworCisgIC8vIFNlY3VyaXR5IGxhYmVsIG1vZGVsIGRl Y2xhcmF0aW9uCisgIHZhciBTZWN1cml0eU1vZGVsID0gQmFja2Zvcm0uU2Vj dXJpdHlNb2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVu ZCh7CisgICAgZGVmYXVsdHM6IHsKKyAgICAgIHByb3ZpZGVyOiB1bmRlZmlu ZWQsCisgICAgICBzZWN1cml0eV9sYWJlbDogdW5kZWZpbmVkCisgICAgfSwK KyAgICBzY2hlbWE6IFt7CisgICAgICBpZDogJ3Byb3ZpZGVyJywgbGFiZWw6 ICd7eyBfKCdQcm92aWRlcicpIH19JywKKyAgICAgIHR5cGU6ICd0ZXh0Jywg ZGlzYWJsZWQ6IGZhbHNlCisgICAgfSx7CisgICAgICBpZDogJ3NlY3VyaXR5 X2xhYmVsJywgbGFiZWw6ICd7eyBfKCdTZWN1cml0eSBMYWJlbCcpIH19JywK KyAgICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6IGZhbHNlCisgICAgfV0s CisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGVyciA9 IHt9LAorICAgICAgICAgIGVycm1zZyA9IG51bGwsCisgICAgICAgICAgZGF0 YSA9IHRoaXMudG9KU09OKCk7CisKKyAgICAgIGlmIChfLmlzVW5kZWZpbmVk KHRoaXMuZ2V0KCdzZWN1cml0eV9sYWJlbCcpKSB8fAorICAgICAgICBfLmlz TnVsbCh0aGlzLmdldCgnc2VjdXJpdHlfbGFiZWwnKSkgfHwKKyAgICAgICAg U3RyaW5nKHRoaXMuZ2V0KCdzZWN1cml0eV9sYWJlbCcpKS5yZXBsYWNlKC9e XHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBlcnJtc2cg PSAne3sgXygnUGxlYXNlIHByb3ZpZGUgdGhlIHZhbHVlIGZvciBzZWN1cml0 eSBsYWJlbC4nKSB9fSc7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu c2V0KCdzZWN1cml0eV9sYWJlbCcsIGVycm1zZyk7CisgICAgICAgICAgICBy ZXR1cm4gZXJybXNnOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3NlY3VyaXR5X2xhYmVsJyk7Cisg ICAgICAgICAgfQorICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9KTsK KworICAvLyBDb21wb3NpdGUgdHlwZSBtb2RlbCBkZWNsYXJhdGlvbgorICB2 YXIgQ29tcG9zaXRlTW9kZWwgPSBCYWNrZm9ybS5Db21wb3NpdGVNb2RlbCA9 IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgZGVm YXVsdHM6IHsKKyAgICAgIG1lbWJlcl9uYW1lOiB1bmRlZmluZWQsCisgICAg ICB0eXBlOiB1bmRlZmluZWQsCisgICAgICB0bGVuZ3RoOiB1bmRlZmluZWQs CisgICAgICBpc190bGVuZ3RoOiBmYWxzZSwKKyAgICAgIHByZWNpc2lvbjog dW5kZWZpbmVkLAorICAgICAgaXNfcHJlY2lzaW9uOiBmYWxzZSwKKyAgICAg IGNvbGxhdGlvbjogdW5kZWZpbmVkLAorICAgICAgbWluX3ZhbDogdW5kZWZp bmVkLAorICAgICAgbWF4X3ZhbDogdW5kZWZpbmVkLAorICAgIH0sCisgICAg dHlwZV9vcHRpb25zOiB1bmRlZmluZWQsCisgICAgc3VidHlwZXM6IHVuZGVm aW5lZCwKKyAgICBzY2hlbWE6IFt7CisgICAgICBpZDogJ21lbWJlcl9uYW1l JywgbGFiZWw6ICd7eyBfKCdNZW1iZXIgTmFtZScpIH19JywKKyAgICAgIHR5 cGU6ICd0ZXh0JywgIGRpc2FibGVkOiBmYWxzZSwgZWRpdGFibGU6IGZhbHNl CisgICAgfSx7CisgICAgICBpZDogJ3R5cGUnLCBsYWJlbDogJ3t7IF8oJ1R5 cGUnKSB9fScsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsCisgICAg ICB0eXBlOiAndGV4dCcsIHVybDogJ2dldF90eXBlcycsIGRpc2FibGVkOiBm YWxzZSwgbm9kZTogJ3R5cGUnLAorICAgICAgZWRpdGFibGU6IGZhbHNlLAor ICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihkKXsKKyAgICAgICAgdGhpcy5t b2RlbC50eXBlX29wdGlvbnMgPSAgZDsKKyAgICAgICAgcmV0dXJuIGQ7Cisg ICAgICB9CisgICAgfSx7CisgICAgICBpZDogJ3RsZW5ndGgnLCBsYWJlbDog J3t7IF8oJ0xlbmd0aCcpIH19JywgZGVwczogWyd0eXBlJ10sIHR5cGU6ICd0 ZXh0JywKKyAgICAgIGVkaXRhYmxlOiBmYWxzZSwKKyAgICAgIGRpc2FibGVk OiBmdW5jdGlvbihtKSB7CisgICAgICAgIC8vIFdlIHdpbGwgc3RvcmUgdHlw ZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9ib3gKKyAgICAgICAgdmFyIG9m X3R5cGUgPSBtLmdldCgndHlwZScpOworICAgICAgICBpZihtLnR5cGVfb3B0 aW9ucykgeworICAgICAgICAgIC8vIGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUg dHlwZXMKKyAgICAgICAgICBfLmVhY2gobS50eXBlX29wdGlvbnMsIGZ1bmN0 aW9uKG8pIHsKKyAgICAgICAgICAgIC8vIGlmIHR5cGUgZnJvbSBzZWxlY3Rl ZCBmcm9tIGNvbWJvYm94IG1hdGNoZXMgaW4gb3B0aW9ucworICAgICAgICAg ICAgaWYgKCBvZl90eXBlID09IG8udmFsdWUgKSB7CisgICAgICAgICAgICAg ICAgLy8gaWYgbGVuZ3RoIGlzIGFsbG93ZWQgZm9yIHNlbGVjdGVkIHR5cGUK KyAgICAgICAgICAgICAgICBpZihvLmxlbmd0aCkKKyAgICAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIHZhbHVlcyBpbiBt b2RlbAorICAgICAgICAgICAgICAgICAgbS5zZXQoJ2lzX3RsZW5ndGgnLCB0 cnVlLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICBtLnNl dCgnbWluX3ZhbCcsIG8ubWluX3ZhbCwge3NpbGVudDogdHJ1ZX0pOworICAg ICAgICAgICAgICAgICAgbS5zZXQoJ21heF92YWwnLCBvLm1heF92YWwsIHtz aWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICB9CisgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu ICFtLmdldCgnaXNfdGxlbmd0aCcpOworICAgICAgfQorICAgIH0seworICAg ICAgaWQ6ICdwcmVjaXNpb24nLCBsYWJlbDogJ3t7IF8oJ1ByZWNpc2lvbicp IH19JywgZGVwczogWyd0eXBlJ10sCisgICAgICB0eXBlOiAndGV4dCcsIGVk aXRhYmxlOiBmYWxzZSwKKyAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7 CisgICAgICAgIC8vIFdlIHdpbGwgc3RvcmUgdHlwZSBmcm9tIHNlbGVjdGVk IGZyb20gY29tYm9ib3gKKyAgICAgICAgdmFyIG9mX3R5cGUgPSBtLmdldCgn dHlwZScpOworICAgICAgICBpZihtLnR5cGVfb3B0aW9ucykgeworICAgICAg ICAgIC8vIGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgdHlwZXMKKyAgICAgICAg ICBfLmVhY2gobS50eXBlX29wdGlvbnMsIGZ1bmN0aW9uKG8pIHsKKyAgICAg ICAgICAgIC8vIGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94 IG1hdGNoZXMgaW4gb3B0aW9ucworICAgICAgICAgICAgaWYgKCBvZl90eXBl ID09IG8udmFsdWUgKSB7CisgICAgICAgICAgICAgICAgLy8gaWYgcHJlY2Vz c2lvbiBpcyBhbGxvd2VkIGZvciBzZWxlY3RlZCB0eXBlCisgICAgICAgICAg ICAgICAgaWYoby5wcmVjaXNpb24pCisgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgLy8gc2V0IHRoZSB2YWx1ZXMgaW4gbW9kZWwKKyAg ICAgICAgICAgICAgICAgIG0uc2V0KCdpc19wcmVjaXNpb24nLCB0cnVlLCB7 c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICBtLnNldCgnbWlu X3ZhbCcsIG8ubWluX3ZhbCwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAg ICAgICAgICAgbS5zZXQoJ21heF92YWwnLCBvLm1heF92YWwsIHtzaWxlbnQ6 IHRydWV9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg ICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICFtLmdl dCgnaXNfcHJlY2lzaW9uJyk7CisgICAgICB9CisgICAgfSx7CisgICAgICBp ZDogJ2NvbGxhdGlvbicsIGxhYmVsOiAne3sgXygnQ29sbGF0aW9uJykgfX0n LAorICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgZWRpdGFi bGU6IGZhbHNlLAorICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogZmFs c2UsIHVybDogJ2dldF9jb2xsYXRpb25zJywgbm9kZTogJ3R5cGUnCisgICAg fV0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGVy ciA9IHt9LAorICAgICAgICAgIGVycm1zZyA9IG51bGwsCisgICAgICAgICAg ZGF0YSA9IHRoaXMudG9KU09OKCk7CisgICAgICAvLyBWYWxpZGF0aW9uIGZv ciBtZW1iZXIgbmFtZQorICAgICAgaWYgKF8uaXNVbmRlZmluZWQoZGF0YS5t ZW1iZXJfbmFtZSkgfHwKKyAgICAgICAgXy5pc051bGwoZGF0YS5tZW1iZXJf bmFtZSkgfHwKKyAgICAgICAgU3RyaW5nKGRhdGEubWVtYmVyX25hbWUpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICBl cnJtc2cgPSBfKCJQbGVhc2Ugc3BlY2lmeSB0aGUgdmFsdWUgZm9yIG1lbWJl ciBuYW1lLiIpCisgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnbWVt YmVyX25hbWUnLCBlcnJtc2cpCisgICAgICAgICAgcmV0dXJuIGVycm1zZzsK KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNl dCgnbWVtYmVyX25hbWUnKTsKKyAgICAgIH0KKworICAgICAgLy8gVmFsaWRh dGlvbiBmb3IgTGVuZ3RoIGZpZWxkCisgICAgICBpZiAoZGF0YS5pc190bGVu Z3RoICYmICFfLmlzVW5kZWZpbmVkKGRhdGEudGxlbmd0aCkpIHsKKyAgICAg ICAgaWYgKGRhdGEudGxlbmd0aCA8IGRhdGEubWluX3ZhbCApCisgICAgICAg ICAgZXJybXNnID0gXygiTGVuZ3RoIHNob3VsZCBub3QgYmUgbGVzcyB0aGFu ICIgKyBkYXRhLm1pbl92YWwpCisgICAgICAgIGlmIChkYXRhLnRsZW5ndGgg PiBkYXRhLm1heF92YWwgKQorICAgICAgICAgIGVycm1zZyA9IF8oIkxlbmd0 aCBzaG91bGQgbm90IGJlIGdyZWF0ZXIgdGhhbiAiICsgZGF0YS5tYXhfdmFs KQorICAgICAgICAvLyBJZiB3ZSBoYXZlIGFueSBlcnJvciBzZXQgdGhlbiB0 aHJvdyBpdCB0byB1c2VyCisgICAgICAgIGlmKGVycm1zZykgeworICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3RsZW5ndGgnLCBlcnJtc2cpCisg ICAgICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICAgICAgfQorICAgICAgfSBl bHNlIHsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCd0bGVuZ3Ro Jyk7CisgICAgICB9CisKKyAgICAgIC8vIFZhbGlkYXRpb24gZm9yIHByZWNp c2lvbiBmaWVsZAorICAgICAgaWYgKGRhdGEuaXNfcHJlY2lzaW9uICYmICFf LmlzVW5kZWZpbmVkKGRhdGEucHJlY2lzaW9uKSkgeworICAgICAgICBpZiAo ZGF0YS5wcmVjaXNpb24gPCBkYXRhLm1pbl92YWwgKQorICAgICAgICAgIGVy cm1zZyA9IF8oIlByZWNpc2lvbiBzaG91bGQgbm90IGJlIGxlc3MgdGhhbiAi ICsgZGF0YS5taW5fdmFsKQorICAgICAgICBpZiAoZGF0YS5wcmVjaXNpb24g PiBkYXRhLm1heF92YWwgKQorICAgICAgICAgIGVycm1zZyA9IF8oIlByZWNp c2lvbiBzaG91bGQgbm90IGJlIGdyZWF0ZXIgdGhhbiAiICsgZGF0YS5tYXhf dmFsKQorICAgICAgICAvLyBJZiB3ZSBoYXZlIGFueSBlcnJvciBzZXQgdGhl biB0aHJvdyBpdCB0byB1c2VyCisgICAgICAgIGlmKGVycm1zZykgeworICAg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3ByZWNpc2lvbicsIGVycm1z ZykKKyAgICAgICAgICByZXR1cm4gZXJybXNnOworICAgICAgICB9CisgICAg ICB9IGVsc2UgeworICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3By ZWNpc2lvbicpOworICAgICAgfQorCisgICAgICByZXR1cm4gbnVsbDsKKyAg ICB9CisgIH0pOworCisgIHZhciBFbnVtTW9kZWwgPSBCYWNrZm9ybS5FbnVt TW9kZWwgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewor ICAgIGRlZmF1bHRzOiB7CisgICAgICBsYWJlbDogbnVsbCwKKyAgICB9LAor ICAgIHNjaGVtYTogW3sKKyAgICAgIGlkOiAnbGFiZWwnLCBsYWJlbDogJ3t7 IF8oJ0xhYmVsJykgfX0nLHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6IGZhbHNl LAorICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50Xzk5 JworICAgIH1dLAorICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKKyAgICAg IHZhciBlcnIgPSB7fSwKKyAgICAgICAgICBlcnJtc2cgPSBudWxsLAorICAg ICAgICAgIGRhdGEgPSB0aGlzLnRvSlNPTigpOworCisgICAgICBpZiAoXy5p c1VuZGVmaW5lZChkYXRhLmxhYmVsKSB8fAorICAgICAgICBfLmlzTnVsbChk YXRhLmxhYmVsKSB8fAorICAgICAgICBTdHJpbmcoZGF0YS5sYWJlbCkucmVw bGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgIGVy cm1zZyA9IF8oIlBsZWFzZSBzcGVjaWZ5IHRoZSB2YWx1ZSBmb3IgbGFiZWwu Iik7CisgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnbGFiZWwnLCBl cnJtc2cpCisgICAgICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICAgIH0gZWxz ZSB7CisgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnbGFiZWwnKTsK KyAgICAgIH0KKworCisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0p OworCisgIGlmICghcGdCcm93c2VyLk5vZGVzWyd0eXBlJ10pIHsKKyAgICBw Z0FkbWluLkJyb3dzZXIuTm9kZXNbJ3R5cGUnXSA9IHBnQnJvd3Nlci5Ob2Rl LmV4dGVuZCh7CisgICAgICB0eXBlOiAndHlwZScsCisgICAgICBsYWJlbDog J3t7IF8oJ1R5cGUnKSB9fScsCisgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdj b2xsLXR5cGUnLAorICAgICAgaGFzU1FMOiB0cnVlLAorICAgICAgaGFzRGVw ZW5kczogdHJ1ZSwKKyAgICAgIHBhcmVudF90eXBlOiBbJ3NjaGVtYScsICdj YXRhbG9nJ10sCisgICAgICBJbml0OiBmdW5jdGlvbigpIHsKKyAgICAgICAg LyogQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCisg ICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQorICAgICAgICAgICAgcmV0 dXJuOworCisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOworCisg ICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1l OiAnY3JlYXRlX3R5cGVfb25fY29sbCcsIG5vZGU6ICdjb2xsLXR5cGUnLCBt b2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAn Y29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAor ICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxh YmVsOiAne3sgXygnVHlwZS4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAn d2NUYWJJY29uIGljb24tdHlwZScsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUn LCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRl JworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3R5cGUn LCBub2RlOiAndHlwZScsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBs aWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19v YmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUn LCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdUeXBlLi4uJykgfX0nLAor ICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi10eXBlJywgZGF0YTog e2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBl bmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5h bWU6ICdjcmVhdGVfdHlwZScsIG5vZGU6ICdzY2hlbWEnLCBtb2R1bGU6IHRo aXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCdd LCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAg IGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sg XygnVHlwZS4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29u IGljb24tdHlwZScsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazog ZmFsc2V9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAg ICAgfQorICAgICAgICBdKTsKKworICAgICAgfSwKKyAgICAgIGNhbkRyb3A6 IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAg ICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10u Y2FuQ2hpbGREcm9wLAorICAgICAgZXh0X2Z1bmNzOiB1bmRlZmluZWQsCisg ICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5k KHsKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1bmRl ZmluZWQsCisgICAgICAgICAgb2lkOiB1bmRlZmluZWQsCisgICAgICAgICAg aXNfc3lzX3R5cGU6IGZhbHNlLAorICAgICAgICAgIHR5cHR5cGU6IHVuZGVm aW5lZAorICAgICAgIH0sCisKKyAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZXMh CisgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7 CisgICAgICAgICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDAp OworCisgICAgICAgICAgaWYgKGlzTmV3KSB7CisgICAgICAgICAgICB2YXIg dXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5vZGVfaW5m by5zZXJ2ZXIuX2lkXS51c2VyOworICAgICAgICAgICAgdmFyIHNjaGVtYUlu Zm8gPSBhcmdzLm5vZGVfaW5mby5zY2hlbWE7CisKKyAgICAgICAgICAgIHRo aXMuc2V0KHsndHlwZW93bmVyJzogdXNlckluZm8ubmFtZX0sIHtzaWxlbnQ6 IHRydWV9KTsKKyAgICAgICAgICAgIHRoaXMuc2V0KHsnc2NoZW1hJzogc2No ZW1hSW5mby5sYWJlbH0sIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICB9 CisgICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwucHJvdG90 eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAg ICAgfSwKKworICAgICAgICBzY2hlbWE6IFt7CisgICAgICAgICAgaWQ6ICdu YW1lJywgbGFiZWw6ICd7eyBfKCdOYW1lJykgfX0nLCBjZWxsOiAnc3RyaW5n JywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGll cycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgIGRpc2FibGVkOiAn aW5TY2hlbWEnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnb2lkJywg bGFiZWw6J3t7IF8oJ09JRCcpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAg ICAgICAgdHlwZTogJ3RleHQnICwgbW9kZTogWydwcm9wZXJ0aWVzJ10sIGRp c2FibGVkOiB0cnVlCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAndHlw ZW93bmVyJywgbGFiZWw6J3t7IF8oJ093bmVyJykgfX0nLCBjZWxsOiAnc3Ry aW5nJywKKyAgICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUn LAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVz JywgJ2NyZWF0ZScsICdlZGl0J10sIG5vZGU6ICdyb2xlJywKKyAgICAgICAg ICBkaXNhYmxlZDogJ2luU2NoZW1hJworICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ3NjaGVtYScsIGxhYmVsOid7eyBfKCdTY2hlbWEnKSB9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTog WydjcmVhdGUnLCAnZWRpdCddLCBub2RlOiAnc2NoZW1hJywKKyAgICAgICAg ICBkaXNhYmxlZDogJ2luU2NoZW1hJywgZmlsdGVyOiBmdW5jdGlvbihkKSB7 CisgICAgICAgICAgICAvLyBJZiBzY2hlbWEgbmFtZSBzdGFydCB3aXRoIHBn XyogdGhlbiB3ZSBuZWVkIHRvIGV4Y2x1ZGUgdGhlbQorICAgICAgICAgICAg aWYoZCAmJiBkLmxhYmVsLm1hdGNoKC9ecGdfLykpCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0sCisgICAg ICAgICAgY29udHJvbDogQmFja2Zvcm0uTm9kZUxpc3RCeU5hbWVDb250cm9s LmV4dGVuZCh7CisgICAgICAgICAgICByZW5kZXI6IGZ1bmN0aW9uKCl7Cisg ICAgICAgICAgICAvLyBJbml0aWFsaXplIHBhcmVudCdzIHJlbmRlciBtZXRo b2QKKyAgICAgICAgICAgIEJhY2tmb3JtLk5vZGVMaXN0QnlOYW1lQ29udHJv bC5wcm90b3R5cGUucmVuZGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisK KyAgICAgICAgICAgIC8vIFNldCBzY2hlbWEgZGVmYXVsdCB2YWx1ZSB0byBp dHMgcGFyZW50IFNjaGVtYQorICAgICAgICAgICAgaWYodGhpcy5tb2RlbC5p c05ldygpKXsKKyAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0KHsnc2NoZW1h JzogdGhpcy5tb2RlbC5ub2RlX2luZm8uc2NoZW1hLmxhYmVsfSk7CisgICAg ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgICB9KQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ3R5cHR5cGUnLCBsYWJlbDone3sgXygnVHlwZScpIH19JywKKyAgICAg ICAgICBtb2RlOiBbJ2NyZWF0ZScsJ2VkaXQnXSwgZGlzYWJsZWQ6ICdpblNj aGVtYVdpdGhNb2RlbENoZWNrJywKKyAgICAgICAgICBncm91cDogJ3t7IF8o J0RlZmluaXRpb24nKSB9fScsCisgICAgICAgICAgbW9kZTogWydlZGl0Jywg J2NyZWF0ZSddLAorICAgICAgICAgIHNlbGVjdDI6IHsgd2lkdGg6ICI1MCUi IH0sCisgICAgICAgICAgb3B0aW9uczogWworICAgICAgICAgICAge2xhYmVs OiAiQ29tcG9zaXRlIiwgdmFsdWU6ICJjIn0sCisgICAgICAgICAgICB7bGFi ZWw6ICJFbnVtZXJhdGlvbiIsIHZhbHVlOiAiZSJ9LAorICAgICAgICAgICAg e2xhYmVsOiAiRXh0ZXJuYWwiLCB2YWx1ZTogIngifSwKKyAgICAgICAgICAg IHtsYWJlbDogIlJhbmdlIiwgdmFsdWU6ICJyIn0sCisgICAgICAgICAgXSwK KyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2sn LAorICAgICAgICAgIC8vIElmIGNyZWF0ZSBtb2RlIHRoZW4gYnkgZGVmYXVs dCBvcGVuIGNvbXBvc2l0ZSB0eXBlCisgICAgICAgICAgY29udHJvbDogQmFj a2Zvcm0uU2VsZWN0MkNvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgIHJl bmRlcjogZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6 ZSBwYXJlbnQncyByZW5kZXIgbWV0aG9kCisgICAgICAgICAgICAgIEJhY2tm b3JtLlNlbGVjdDJDb250cm9sLnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhp cywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgaWYodGhpcy5tb2RlbC5p c05ldygpKSB7CisgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5zZXQoeyd0 eXB0eXBlJzogJ2MnfSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSkK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjb21wb3NpdGUnLCBsYWJl bDogJ3t7IF8oJ0NvbXBvc2l0ZSBUeXBlJykgfX0nLAorICAgICAgICAgIG1v ZGVsOiBDb21wb3NpdGVNb2RlbCwgZWRpdGFibGU6IHRydWUsIHR5cGU6ICdj b2xsZWN0aW9uJywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ0RlZmluaXRp b24nKSB9fScsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAg ICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywgdW5pcXVlQ29s IDogWydtZW1iZXJfbmFtZSddLAorICAgICAgICAgIGNhbkFkZDogdHJ1ZSwg Y2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBkaXNhYmxlZDogJ2lu U2NoZW1hJywKKyAgICAgICAgICBkZXBzOiBbJ3R5cHR5cGUnXSwgZGVwczog Wyd0eXB0eXBlJ10sCisgICAgICAgICAgdmlzaWJsZTogZnVuY3Rpb24obSkg eworICAgICAgICAgICBpZiAobS5nZXQoJ3R5cHR5cGUnKSA9PT0gJ2MnKSB7 CisgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgIH0KKyAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdlbnVtJywgbGFiZWw6ICd7eyBfKCdFbnVt ZXJhdGlvbiBUeXBlJykgfX0nLAorICAgICAgICAgIG1vZGVsOiBFbnVtTW9k ZWwsIGVkaXRhYmxlOiB0cnVlLCB0eXBlOiAnY29sbGVjdGlvbicsCisgICAg ICAgICAgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCBtb2RlOiBb J2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgY2FuQWRkOiB0cnVlLCBj YW5FZGl0OiBmYWxzZSwgY2FuRGVsZXRlOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICAgIC8vIFdlIHdpbGwgZGlzYWJsZSBpdCBpZiBpdCdzIGluICdl ZGl0JyBtb2RlCisgICAgICAgICAgICAgIGlmIChtLmlzTmV3KCkpIHsKKyAg ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgICAgICAgfQorICAgICAgICAgIH0sCisgICAgICAgICAgZGlzYWJsZWQ6 ICdpblNjaGVtYScsIGRlcHM6IFsndHlwdHlwZSddLAorICAgICAgICAgIGNv bnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLCB1bmlxdWVDb2wgOiBb J2xhYmVsJ10sCisgICAgICAgICAgdmlzaWJsZTogZnVuY3Rpb24obSkgewor ICAgICAgICAgICByZXR1cm4gbS5nZXQoJ3R5cHR5cGUnKSA9PT0gJ2UnOwor ICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgLy8gV2Ugd2ls bCBkaXNhYmxlIHJhbmdlIHR5cGUgY29udHJvbCBpbiBlZGl0IG1vZGUKKyAg ICAgICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ2ZpZWxkc2V0Jywg Z3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAgICAgICAgIG1v ZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICB2aXNpYmxlOiBm dW5jdGlvbihtKSB7CisgICAgICAgICAgICByZXR1cm4gbS5nZXQoJ3R5cHR5 cGUnKSA9PT0gJ3InOworICAgICAgICAgIH0sIGRlcHM6IFsndHlwdHlwZSdd LCBsYWJlbDogJ3t7IF8oJ1JhbmdlIFR5cGUnKSB9fScsCisgICAgICAgICAg c2NoZW1hOlt7CisgICAgICAgICAgICBpZDogJ3R5cG5hbWUnLCBsYWJlbDon e3sgXygnU3VidHlwZScpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAg ICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAg ICAgdXJsOiAnZ2V0X3N0eXBlcycsIHR5cGU6ICd0ZXh0JywgbW9kZTogWydw cm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgICBn cm91cDogJ3t7IF8oJ1JhbmdlIFR5cGUnKSB9fScsIGRpc2FibGVkOiAnaW5T Y2hlbWFXaXRoTW9kZWxDaGVjaycsCisgICAgICAgICAgICB0cmFuc2Zvcm06 IGZ1bmN0aW9uKGQpeworICAgICAgICAgICAgICB0aGlzLm1vZGVsLnN1YnR5 cGVzID0gIGQ7CisgICAgICAgICAgICAgIHJldHVybiBkOworICAgICAgICAg ICAgfQorICAgICAgICAgIH0seworICAgICAgICAgICAgICBpZDogJ29wY25h bWUnLCBsYWJlbDone3sgXygnU3VidHlwZSBPcENsYXNzJykgfX0nLCBjZWxs OiAnc3RyaW5nJywKKyAgICAgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVz JywgJ2NyZWF0ZScsICdlZGl0J10sIGdyb3VwOiAne3sgXygnUmFuZ2UgVHlw ZScpIH19JywKKyAgICAgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdp dGhNb2RlbENoZWNrJywgZGVwczogWyd0eXBuYW1lJ10sCisgICAgICAgICAg ICAgIGNvbnRyb2w6ICdzZWxlY3QnLCBvcHRpb25zOiBmdW5jdGlvbigpIHsK KyAgICAgICAgICAgICAgICB2YXIgbF90eXBuYW1lID0gdGhpcy5tb2RlbC5n ZXQoJ3R5cG5hbWUnKSwKKyAgICAgICAgICAgICAgICAgIHNlbGYgPSB0aGlz LAorICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW107CisgICAgICAgICAg ICAgICAgaWYoIV8uaXNVbmRlZmluZWQobF90eXBuYW1lKSAmJiBsX3R5cG5h bWUgIT0gJycpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgdmFyIG5vZGUgPSB0aGlzLmZpZWxkLmdldCgnc2NoZW1hX25vZGUnKSwK KyAgICAgICAgICAgICAgICAgIF91cmwgPSBub2RlLmdlbmVyYXRlX3VybC5h cHBseSgKKyAgICAgICAgICAgICAgICAgICAgbm9kZSwgWworICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG51bGwsICdnZXRfc3Vib3BjbGFzcycsIHRo aXMuZmllbGQuZ2V0KCdub2RlX2RhdGEnKSwgZmFsc2UsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5nZXQoJ25vZGVfaW5mbycp CisgICAgICAgICAgICAgICAgICAgIF0pOworICAgICAgICAgICAgICAgICAg JC5hamF4KHsKKyAgICAgICAgICAgICAgICAgICAgYXN5bmM6IGZhbHNlLAor ICAgICAgICAgICAgICAgICAgICB1cmw6IF91cmwsCisgICAgICAgICAgICAg ICAgICAgIGNhY2hlOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgZGF0 YTogeyd0eXBuYW1lJyA6IGxfdHlwbmFtZX0sCisgICAgICAgICAgICAgICAg ICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICAg ICAgICAgIHJlc3VsdCA9IHJlcy5kYXRhOworICAgICAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oKSB7 CisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2RlbC50cmlnZ2VyKCdw Z2FkbWluOnZpZXc6ZmV0Y2g6ZXJyb3InLCBzZWxmLm1vZGVsLCBzZWxmLmZp ZWxkKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICB9KTsKKyAgICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICBpZDog J2NvbGxuYW1lJywgbGFiZWw6J3t7IF8oJ0NvbGxhdGlvbicpIH19JywgY2Vs bDogJ3N0cmluZycsCisgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9k ZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAg ICAgICAgIGdyb3VwOiAne3sgXygnUmFuZ2UgVHlwZScpIH19JywKKyAgICAg ICAgICAgICAgZGVwczogWyd0eXBuYW1lJ10sIGNvbnRyb2w6ICdub2RlLWFq YXgtb3B0aW9ucycsIHVybDogJ2dldF9jb2xsYXRpb25zJywKKyAgICAgICAg ICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAg ICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ2NhdGFsb2cnIGluIHRoaXMubm9k ZV9pbmZvKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAgIC8vIERpc2JhbGUgaW4gZWRpdCBtb2RlCisgICAgICAgICAgICAg ICAgaWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg IC8vIFRvIGNoZWNrIGlmIGNvbGxhdGlvbiBpcyBhbGxvd2VkPworICAgICAg ICAgICAgICAgIHZhciBvZl9zdWJ0eXBlID0gbS5nZXQoJ3R5cG5hbWUnKSwK KyAgICAgICAgICAgICAgICAgIGlzX2NvbGxhdGUgPSB1bmRlZmluZWQ7Cisg ICAgICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQob2Zfc3VidHlwZSkp IHsKKyAgICAgICAgICAgICAgICAgIC8vIGl0ZXJhdGluZyBvdmVyIGFsbCB0 aGUgdHlwZXMKKyAgICAgICAgICAgICAgICAgIF8uZWFjaChtLnN1YnR5cGVz LCBmdW5jdGlvbihzKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN1 YnR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94IG1hdGNoZXMKKyAg ICAgICAgICAgICAgICAgICAgaWYgKCBvZl9zdWJ0eXBlID09PSBzLmxhYmVs ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgY29sbGF0aW9u IGlzIGFsbG93ZWQgZm9yIHNlbGVjdGVkIHN1YnR5cGUKKyAgICAgICAgICAg ICAgICAgICAgICAgIC8vIHRoZW4gZW5hYmxlIGl0IGVsc2UgZGlzYWJsZSBp dAorICAgICAgICAgICAgICAgICAgICAgICAgaXNfY29sbGF0ZSA9IHMuaXNf Y29sbGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg IC8vIElmIGlzX2NvbGxhdGUgaXMgdHJ1ZSB0aGVuIGRvIG5vdCBkaXNhYmxl CisgICAgICAgICAgICAgICAgcmV0dXJuIGlzX2NvbGxhdGUgPyBmYWxzZSA6 IHRydWU7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0seworICAg ICAgICAgICAgICBpZDogJ3JuZ2Nhbm9uaWNhbCcsIGxhYmVsOid7eyBfKCdD YW5vbmljYWwnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgICAg ICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUn LCAnZWRpdCddLAorICAgICAgICAgICAgICBncm91cDogJ3t7IF8oJ1Jhbmdl IFR5cGUnKSB9fScsCisgICAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hl bWFXaXRoTW9kZWxDaGVjaycsIGRlcHM6IFsnbmFtZScsICd0eXBuYW1lJ10s CisgICAgICAgICAgICAgIGNvbnRyb2w6ICdzZWxlY3QnLCBvcHRpb25zOiBm dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IHRoaXMu bW9kZWwuZ2V0KCduYW1lJyksCisgICAgICAgICAgICAgICAgIHNlbGYgPSB0 aGlzLAorICAgICAgICAgICAgICAgICByZXN1bHQgPSBbXTsKKworICAgICAg ICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG5hbWUpICYmIG5hbWUgIT0g JycpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgdmFy IG5vZGUgPSB0aGlzLmZpZWxkLmdldCgnc2NoZW1hX25vZGUnKSwKKyAgICAg ICAgICAgICAgICAgIF91cmwgPSBub2RlLmdlbmVyYXRlX3VybC5hcHBseSgK KyAgICAgICAgICAgICAgICAgICAgbm9kZSwgWworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG51bGwsICdnZXRfY2Fub25pY2FsJywgdGhpcy5maWVs ZC5nZXQoJ25vZGVfZGF0YScpLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aGlzLmZpZWxkLmdldCgnbm9kZV9pbmZvJykKKyAgICAg ICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAgICAgICAgICAkLmFqYXgo eworICAgICAgICAgICAgICAgICAgICBhc3luYzogZmFsc2UsCisgICAgICAg ICAgICAgICAgICAgIHVybDogX3VybCwKKyAgICAgICAgICAgICAgICAgICAg Y2FjaGU6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBkYXRhOiB7Im5h bWUiIDogbmFtZX0sCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1 bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9 IHJlcy5kYXRhOworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg ICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5tb2RlbC50cmlnZ2VyKCdwZ2FkbWluOnZpZXc6ZmV0 Y2g6ZXJyb3InLAorICAgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kZWws IHNlbGYuZmllbGQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0seworICAgICAgICAgICAgICBpZDogJ3JuZ3N1YmRpZmYnLCBsYWJl bDone3sgXygnU3ViVHlwZSBkaWZmJykgfX0nLCBjZWxsOiAnc3RyaW5nJywK KyAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICAgICAgZ3JvdXA6 ICd7eyBfKCdSYW5nZSBUeXBlJykgfX0nLAorICAgICAgICAgICAgICBkaXNh YmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snLCBkZXBzOiBbJ29wY25h bWUnXSwKKyAgICAgICAgICAgICAgY29udHJvbDogJ3NlbGVjdCcsIG9wdGlv bnM6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBsX3R5cG5h bWUgPSB0aGlzLm1vZGVsLmdldCgndHlwbmFtZScpLAorICAgICAgICAgICAg ICAgICAgbF9vcGNuYW1lID0gdGhpcy5tb2RlbC5nZXQoJ29wY25hbWUnKSwK KyAgICAgICAgICAgICAgICAgIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAg ICAgICAgcmVzdWx0ID0gW107CisKKyAgICAgICAgICAgICAgICBpZighXy5p c1VuZGVmaW5lZChsX3R5cG5hbWUpICYmIGxfdHlwbmFtZSAhPSAnJyAmJgor ICAgICAgICAgICAgICAgICFfLmlzVW5kZWZpbmVkKGxfb3BjbmFtZSkgJiYg bF9vcGNuYW1lICE9ICcnKSB7CisgICAgICAgICAgICAgICAgICB2YXIgbm9k ZSA9IHRoaXMuZmllbGQuZ2V0KCdzY2hlbWFfbm9kZScpLAorICAgICAgICAg ICAgICAgICAgX3VybCA9IG5vZGUuZ2VuZXJhdGVfdXJsLmFwcGx5KAorICAg ICAgICAgICAgICAgICAgICBub2RlLCBbCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbnVsbCwgJ2dldF9zdHlwZWRpZmYnLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoaXMuZmllbGQuZ2V0KCdub2RlX2RhdGEnKSwg ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVs ZC5nZXQoJ25vZGVfaW5mbycpCisgICAgICAgICAgICAgICAgICAgIF0pOwor ICAgICAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAgICAg ICAgYXN5bmM6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICB1cmw6IF91 cmwsCisgICAgICAgICAgICAgICAgICAgIGNhY2hlOiBmYWxzZSwKKyAgICAg ICAgICAgICAgICAgICAgZGF0YTogeyd0eXBuYW1lJyA6IGxfdHlwbmFtZSwg J29wY25hbWUnOiBsX29wY25hbWV9LAorICAgICAgICAgICAgICAgICAgICBz dWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg ICByZXN1bHQgPSByZXMuZGF0YTsKKyAgICAgICAgICAgICAgICAgICAgfSwK KyAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkgeworICAg ICAgICAgICAgICAgICAgICAgIHNlbGYubW9kZWwudHJpZ2dlcigncGdhZG1p bjp2aWV3OmZldGNoOmVycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICBz ZWxmLm1vZGVsLCBzZWxmLmZpZWxkKTsKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9 CisgICAgICAgICAgfV0KKyAgICAgICAgfSx7CisgICAgICAgICAgdHlwZTog J25lc3RlZCcsIGNvbnRyb2w6ICd0YWInLCBncm91cDogJ3t7IF8oJ0RlZmlu aXRpb24nKSB9fScsCisgICAgICAgICAgbGFiZWw6ICd7eyBfKCdFeHRlcm5h bCBUeXBlJykgfX0nLCBkZXBzOiBbJ3R5cHR5cGUnXSwKKyAgICAgICAgICBt b2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgdmlzaWJsZTog ZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuIG0uZ2V0KCd0eXB0 eXBlJykgPT09ICd4JzsKKyAgICAgICAgICB9LAorICAgICAgICAgIHNjaGVt YTpbeworICAgICAgICAgICAgaWQ6ICd0eXBpbnB1dCcsIGxhYmVsOid7eyBf KCdJbnB1dCBmdW5jdGlvbicpIH19JywKKyAgICAgICAgICAgIGNlbGw6ICdz dHJpbmcnLHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICAgIG1vZGU6IFsncHJv cGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBncm91cDogJ1JlcXVpcmVk JywKKyAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxD aGVjaycsCisgICAgICAgICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlv bnMnLCB1cmw6ICdnZXRfZXh0ZXJuYWxfZnVuY3Rpb25zJywKKyAgICAgICAg ICAgIHRyYW5zZm9ybTogJ2V4dGVybmFsX2Z1bmNfY29tYm8nCisgICAgICAg ICAgfSx7CisgICAgICAgICAgICBpZDogJ3R5cG91dHB1dCcsIGxhYmVsOid7 eyBfKCdPdXRwdXQgZnVuY3Rpb24nKSB9fScsCisgICAgICAgICAgICBjZWxs OiAnc3RyaW5nJywKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTog Wydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAg ICBncm91cDogJ1JlcXVpcmVkJywKKyAgICAgICAgICAgIGRpc2FibGVkOiAn aW5TY2hlbWFXaXRoTW9kZWxDaGVjaycKKyAgICAgICAgICAgICxjb250cm9s OiAnbm9kZS1hamF4LW9wdGlvbnMnLCB1cmw6ICdnZXRfZXh0ZXJuYWxfZnVu Y3Rpb25zJywKKyAgICAgICAgICAgIHRyYW5zZm9ybTogJ2V4dGVybmFsX2Z1 bmNfY29tYm8nCisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ3R5 cHJlY2VpdmUnLCBsYWJlbDone3sgXygnUmVjZWl2ZSBmdW5jdGlvbicpIH19 JywKKyAgICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLCB0eXBlOiAndGV4dCcs IGdyb3VwOiAnT3B0aW9uYWwtMScsCisgICAgICAgICAgICBtb2RlOiBbJ3By b3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICAgIGRp c2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycKKyAgICAgICAgICAg ICxjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCB1cmw6ICdnZXRfZXh0 ZXJuYWxfZnVuY3Rpb25zJywKKyAgICAgICAgICAgIHRyYW5zZm9ybTogJ2V4 dGVybmFsX2Z1bmNfY29tYm8nCisgICAgICAgICAgfSx7CisgICAgICAgICAg ICBpZDogJ3R5cHNlbmQnLCBsYWJlbDone3sgXygnU2VuZCBmdW5jdGlvbicp IH19JywKKyAgICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLCBncm91cDogJ09w dGlvbmFsLTEnLAorICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBb J3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICAg IGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycKKyAgICAgICAg ICAgICxjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCB1cmw6ICdnZXRf ZXh0ZXJuYWxfZnVuY3Rpb25zJywKKyAgICAgICAgICAgIHRyYW5zZm9ybTog J2V4dGVybmFsX2Z1bmNfY29tYm8nCisgICAgICAgICAgfSx7CisgICAgICAg ICAgICBpZDogJ3R5cG1vZGluJywgbGFiZWw6J3t7IF8oJ1R5cG1vZCBpbiBm dW5jdGlvbicpIH19JywKKyAgICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLCB0 eXBlOiAndGV4dCcsCisgICAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMn LCAnY3JlYXRlJywgJ2VkaXQnXSwgZ3JvdXA6ICdPcHRpb25hbC0xJywKKyAg ICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycK KyAgICAgICAgICAgICxjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCB1 cmw6ICdnZXRfZXh0ZXJuYWxfZnVuY3Rpb25zJywKKyAgICAgICAgICAgIHRy YW5zZm9ybTogZnVuY3Rpb24oZCkgeworICAgICAgICAgICAgICB2YXIgcmVz dWx0ID0gW3tsYWJlbCA6IiIsIHZhbHVlIDogIiJ9XTsKKyAgICAgICAgICAg ICAgXy5lYWNoKGQsIGZ1bmN0aW9uKGl0ZW0pIHsKKyAgICAgICAgICAgICAg Ly8gaWYgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9ib3ggbWF0Y2hl cyBpbiBvcHRpb25zCisgICAgICAgICAgICAgIGlmICggaXRlbS5jYnR5cGUg PT09ICd0eXBtb2RpbicgfHwgaXRlbS5jYnR5cGUgPT09ICdhbGwnKSB7Cisg ICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7CisgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICByZXR1cm4g cmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgIH0seworICAgICAg ICAgICAgaWQ6ICd0eXBtb2RvdXQnLCBsYWJlbDone3sgXygnVHlwbW9kIG91 dCBmdW5jdGlvbicpIH19JywKKyAgICAgICAgICAgIGNlbGw6ICdzdHJpbmcn LCBncm91cDogJ09wdGlvbmFsLTEnLAorICAgICAgICAgICAgdHlwZTogJ3Rl eHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwK KyAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVj aycKKyAgICAgICAgICAgICxjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMn LCB1cmw6ICdnZXRfZXh0ZXJuYWxfZnVuY3Rpb25zJywKKyAgICAgICAgICAg IHRyYW5zZm9ybTogZnVuY3Rpb24oZCkgeworICAgICAgICAgICAgICB2YXIg cmVzdWx0ID0gW3tsYWJlbCA6IiIsIHZhbHVlIDogIiJ9XTsKKyAgICAgICAg ICAgICAgXy5lYWNoKGQsIGZ1bmN0aW9uKGl0ZW0pIHsKKyAgICAgICAgICAg ICAgLy8gaWYgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9ib3ggbWF0 Y2hlcyBpbiBvcHRpb25zCisgICAgICAgICAgICAgIGlmICggaXRlbS5jYnR5 cGUgPT09ICd0eXBtb2RvdXQnIHx8IGl0ZW0uY2J0eXBlID09PSAnYWxsJykg eworICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pOworICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgcmV0 dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LHsKKyAg ICAgICAgICAgIGlkOiAndHlwbGVuJywgbGFiZWw6J3t7IF8oJ0ludGVybmFs IGxlbmd0aCcpIH19JywKKyAgICAgICAgICAgIGNlbGw6ICdpbnRlZ2VyJywg Z3JvdXA6ICdPcHRpb25hbC0xJywKKyAgICAgICAgICAgIHR5cGU6ICdpbnQn LCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAg ICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycK KyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAndmFyaWFibGUnLCBs YWJlbDone3sgXygnVmFyaWFibGUnKSB9fScsIGNlbGw6ICdzd2l0Y2gnLAor ICAgICAgICAgICAgZ3JvdXA6ICdPcHRpb25hbC0xJywgdHlwZTogJ3N3aXRj aCcsCisgICAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsJ2VkaXQnXSwgb3B0 aW9uczogc3dpdGNoT3B0aW9ucywKKyAgICAgICAgICAgIGRpc2FibGVkOiAn aW5TY2hlbWFXaXRoTW9kZWxDaGVjaycKKyAgICAgICAgICB9LHsKKyAgICAg ICAgICAgIGlkOiAndHlwZGVmYXVsdCcsIGxhYmVsOid7eyBfKCdEZWZhdWx0 JykgfX0nLAorICAgICAgICAgICAgY2VsbDogJ3N0cmluZycsIGdyb3VwOiAn T3B0aW9uYWwtMScsCisgICAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6 IFsncHJvcGVydGllcycsICdjcmVhdGUnLCdlZGl0J10sCisgICAgICAgICAg ICBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snCisgICAgICAg ICAgfSx7CisgICAgICAgICAgICBpZDogJ3R5cGFuYWx5emUnLCBsYWJlbDon e3sgXygnQW5hbHl6ZSBmdW5jdGlvbicpIH19JywKKyAgICAgICAgICAgIGNl bGw6ICdzdHJpbmcnLCBncm91cDogJ09wdGlvbmFsLTEnLAorICAgICAgICAg ICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRl JywnZWRpdCddLAorICAgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdp dGhNb2RlbENoZWNrJworICAgICAgICAgICAgLGNvbnRyb2w6ICdub2RlLWFq YXgtb3B0aW9ucycsIHVybDogJ2dldF9leHRlcm5hbF9mdW5jdGlvbnMnLAor ICAgICAgICAgICAgdHJhbnNmb3JtOiAnZXh0ZXJuYWxfZnVuY19jb21ibycK KyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAndHlwY2F0ZWdvcnkn LCBsYWJlbDone3sgXygnQ2F0ZWdvcnknKSB9fScsCisgICAgICAgICAgICBj ZWxsOiAnc3RyaW5nJywgZ3JvdXA6ICdPcHRpb25hbC0xJywKKyAgICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0 ZScsJ2VkaXQnXSwKKyAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFX aXRoTW9kZWxDaGVjaycsIGNvbnRyb2w6ICdzZWxlY3QyJywKKyAgICAgICAg ICAgIHNlbGVjdDI6IHsgcGxhY2Vob2xkZXI6ICJTZWxlY3QgY2F0ZWdvcnki LCBhbGxvd0NsZWFyOiB0cnVlLAorICAgICAgICAgICAgIHdpZHRoOiAiMTAw JSIgfSwKKyAgICAgICAgICAgIG9wdGlvbnM6IFsKKyAgICAgICAgICAgICAg e2xhYmVsIDoiIiwgdmFsdWUgOiAiIn0sCisgICAgICAgICAgICAgIHtsYWJl bCA6IkFycmF5IHR5cGVzIiwgdmFsdWUgOiAiQSJ9LAorICAgICAgICAgICAg ICB7bGFiZWwgOiJCb29sZWFuIHR5cGVzIiwgdmFsdWUgOiAiQiJ9LAorICAg ICAgICAgICAgICB7bGFiZWwgOiJDb21wb3NpdGUgdHlwZXMiLCB2YWx1ZSA6 ICJDIn0sCisgICAgICAgICAgICAgIHtsYWJlbCA6IkRhdGUvdGltZSB0eXBl cyIsIHZhbHVlIDogIkQifSwKKyAgICAgICAgICAgICAge2xhYmVsIDoiRW51 bSB0eXBlcyIsIHZhbHVlIDogIkUifSwKKyAgICAgICAgICAgICAge2xhYmVs IDoiR2VvbWV0cmljIHR5cGVzIiwgdmFsdWUgOiAiRyJ9LAorICAgICAgICAg ICAgICB7bGFiZWwgOiJOZXR3b3JrIGFkZHJlc3MgdHlwZXMiLCB2YWx1ZSA6 ICJJIn0sCisgICAgICAgICAgICAgIHtsYWJlbCA6Ik51bWVyaWMgdHlwZXMi LCB2YWx1ZSA6ICJOIn0sCisgICAgICAgICAgICAgIHtsYWJlbCA6IlBzZXVk by10eXBlcyIsIHZhbHVlIDogIlAifSwKKyAgICAgICAgICAgICAge2xhYmVs IDoiU3RyaW5nIHR5cGVzIiwgdmFsdWUgOiAiUyJ9LAorICAgICAgICAgICAg ICB7bGFiZWwgOiJUaW1lc3BhbiB0eXBlcyIsIHZhbHVlIDogIlQifSwKKyAg ICAgICAgICAgICAge2xhYmVsIDoiVXNlci1kZWZpbmVkIHR5cGVzIiwgdmFs dWUgOiAiVSJ9LAorICAgICAgICAgICAgICB7bGFiZWwgOiJCaXQtc3RyaW5n IHR5cGVzIiwgdmFsdWUgOiAiViJ9LAorICAgICAgICAgICAgICB7bGFiZWwg OiJ1bmtub3duIHR5cGUiLCB2YWx1ZSA6ICJYIn0KKyAgICAgICAgICAgIF0K KyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAndHlwaXNwcmVmZXJy ZWQnLCBsYWJlbDone3sgXygnUHJlZmVyZWQnKSB9fScsIGNlbGw6ICdzd2l0 Y2gnLAorICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJv cGVydGllcycsICdjcmVhdGUnLCdlZGl0J10sCisgICAgICAgICAgICBvcHRp b25zOiBzd2l0Y2hPcHRpb25zLCBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1v ZGVsQ2hlY2snLAorICAgICAgICAgICAgZ3JvdXA6ICdPcHRpb25hbC0xJwor ICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICdlbGVtZW50JywgbGFi ZWw6J3t7IF8oJ0VsZW1lbnQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAg ICAgICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgZ3JvdXA6 ICdPcHRpb25hbC0yJywKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9k ZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAg ICAgICBkaXNhYmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snLCB1cmw6 ICdnZXRfdHlwZXMnCisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDog J3R5cGRlbGltJywgbGFiZWw6J3t7IF8oJ0RlbGltaXRlcicpIH19JywgY2Vs bDogJ3N0cmluZycsCisgICAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6 IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAg ICAgZ3JvdXA6ICdPcHRpb25hbC0yJywgZGlzYWJsZWQ6ICdpblNjaGVtYVdp dGhNb2RlbENoZWNrJworICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6 ICd0eXBhbGlnbicsIGxhYmVsOid7eyBfKCdBbGlnbm1lbnQnKSB9fScsCisg ICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywgZ3JvdXA6ICdPcHRpb25hbC0y JywKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0 aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgICBkaXNhYmxl ZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snLCBjb250cm9sOiAnc2VsZWN0 MicsCisgICAgICAgICAgICBzZWxlY3QyOiB7IHBsYWNlaG9sZGVyOiAiU2Vs ZWN0IGFsaWdubWVudCIsIGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgICAg ICAgICAgICAgICAgICB3aWR0aDogIjEwMCUiIH0sCisgICAgICAgICAgICBv cHRpb25zOiBbCisgICAgICAgICAgICAgIHtsYWJlbCA6IiIsIHZhbHVlIDog IiJ9LAorICAgICAgICAgICAgICB7bGFiZWw6ICJjaGFyIiwgdmFsdWU6ICJj In0sCisgICAgICAgICAgICAgIHtsYWJlbDogImludDIiLCB2YWx1ZTogInMi fSwKKyAgICAgICAgICAgICAge2xhYmVsOiAiaW40IiwgdmFsdWU6ICJpIn0s CisgICAgICAgICAgICAgIHtsYWJlbDogImRvdWJsZSIsIHZhbHVlOiAiZCJ9 LAorICAgICAgICAgICAgXQorICAgICAgICAgIH0seworICAgICAgICAgICAg aWQ6ICd0eXBzdG9yYWdlJywgbGFiZWw6J3t7IF8oJ1N0b3JhZ2UnKSB9fScs CisgICAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGll cycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgICAgZ3JvdXA6ICdP cHRpb25hbC0yJywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgICBkaXNh YmxlZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snLCBjb250cm9sOiAnc2Vs ZWN0MicsCisgICAgICAgICAgICBzZWxlY3QyOiB7IHBsYWNlaG9sZGVyOiAi U2VsZWN0IHN0b3JhZ2UiLCBhbGxvd0NsZWFyOiB0cnVlLAorICAgICAgICAg ICAgICAgICAgICAgICAgd2lkdGg6ICIxMDAlIiB9LAorICAgICAgICAgICAg b3B0aW9uczogWworICAgICAgICAgICAgICB7bGFiZWwgOiIiLCB2YWx1ZSA6 ICIifSwKKyAgICAgICAgICAgICAge2xhYmVsOiAiUExBSU4iLCB2YWx1ZTog InAifSwKKyAgICAgICAgICAgICAge2xhYmVsOiAiTUFJTiIsIHZhbHVlOiAi ZSJ9LAorICAgICAgICAgICAgICB7bGFiZWw6ICJFWFRFUk5BTCIsIHZhbHVl OiAibSJ9LAorICAgICAgICAgICAgICB7bGFiZWw6ICJFWFRFTkRFRCIsIHZh bHVlOiAieCJ9LAorICAgICAgICAgICAgIF0KKyAgICAgICAgICB9LHsKKyAg ICAgICAgICAgIGlkOiAndHlwYnl2YWwnLCBsYWJlbDone3sgXygnUGFzc2Vk IGJ5IFZhbHVlPycpIH19JywKKyAgICAgICAgICAgIGNlbGw6ICdzd2l0Y2gn LCBvcHRpb25zOiBzd2l0Y2hPcHRpb25zLAorICAgICAgICAgICAgdHlwZTog J3N3aXRjaCcsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRp dCddLAorICAgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2Rl bENoZWNrJywgZ3JvdXA6ICdPcHRpb25hbC0yJywKKyAgICAgICAgICB9LHsK KyAgICAgICAgICAgIGlkOiAnaXNfY29sbGF0YWJsZScsIGxhYmVsOid7eyBf KCdDb2xsYXRhYmxlPycpIH19JywKKyAgICAgICAgICAgIGNlbGw6ICdzd2l0 Y2gnLCAgbWluX3ZlcnNpb246IDkwMTAwLCBncm91cDogJ09wdGlvbmFsLTIn LAorICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJvcGVy dGllcycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgICAgb3B0aW9u czogc3dpdGNoT3B0aW9ucywgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2Rl bENoZWNrJworICAgICAgICAgIC8vIEVuZCBvZiBleHRlbnNpb24gdGFiCisg ICAgICAgIH1dCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnYWxpYXMn LCBsYWJlbDone3sgXygnQWxpYXMnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAor ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10s CisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICd0eXBlX2FjbCcsIGxhYmVsOid7eyBfKCdQcml2 aWxlZ2VzJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBl OiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLCBncm91cDogJ3t7IF8o J1NlY3VyaXR5JykgfX0nLAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hl bWEnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnbWVtYmVyX2xpc3Qn LCBsYWJlbDone3sgXygnTWVtYmVycycpIH19JywgY2VsbDogJ3N0cmluZycs CisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMn XSwgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAgICAgICAg IGRpc2FibGVkOiAnaW5TY2hlbWEnLCB2aXNpYmxlOiBmdW5jdGlvbihtKSB7 CisgICAgICAgICAgICBpZihtLmdldCgndHlwdHlwZScpID09PSAnYycpIHsK KyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ2VudW1fbGlzdCcsIGxhYmVsOid7eyBf KCdMYWJlbHMnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5 cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sIGdyb3VwOiAne3sg XygnRGVmaW5pdGlvbicpIH19JywKKyAgICAgICAgICBkaXNhYmxlZDogJ2lu U2NoZW1hJywgdmlzaWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAg aWYobS5nZXQoJ3R5cHR5cGUnKSA9PT0gJ2UnKSB7CisgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICdpc19zeXNfdHlwZScsIGxhYmVsOid7eyBfKCdTeXN0ZW0gdHlw ZT8nKSB9fScsIGNlbGw6ICdzd2l0Y2gnLAorICAgICAgICAgIHR5cGU6ICdz d2l0Y2gnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwgb3B0aW9uczogc3dpdGNo T3B0aW9ucywKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJworICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6 J3t7IF8oJ0NvbW1lbnQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAn Y3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2No ZW1hJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3R5cGFjbCcsIGxh YmVsOiAnUHJpdmlsZWdlcycsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAg ICAgICBncm91cDogJ3t7IF8oJ1NlY3VyaXR5JykgfX0nLCBjb250cm9sOiAn dW5pcXVlLWNvbC1jb2xsZWN0aW9uJywKKyAgICAgICAgICBtb2RlbDogcGdB ZG1pbi5Ccm93c2VyLk5vZGUuUHJpdmlsZWdlUm9sZU1vZGVsLmV4dGVuZCh7 cHJpdmlsZWdlczogWydVJ119KSwKKyAgICAgICAgICBtb2RlOiBbJ2VkaXQn LCAnY3JlYXRlJ10sIGNhbkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAor ICAgICAgICAgIHVuaXF1ZUNvbCA6IFsnZ3JhbnRlZSddCisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAnc2VjbGFiZWxzJywgbGFiZWw6ICd7eyBfKCdT ZWN1cml0eSBMYWJlbHMnKSB9fScsCisgICAgICAgICAgbW9kZWw6IFNlY3Vy aXR5TW9kZWwsIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24n LAorICAgICAgICAgIGdyb3VwOiAne3sgXygnU2VjdXJpdHknKSB9fScsIG1v ZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBtaW5fdmVyc2lv bjogOTAyMDAsIGNhbkFkZDogdHJ1ZSwKKyAgICAgICAgICBjYW5FZGl0OiBm YWxzZSwgY2FuRGVsZXRlOiB0cnVlLCBjb250cm9sOiAndW5pcXVlLWNvbC1j b2xsZWN0aW9uJworICAgICAgICB9XSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1 bmN0aW9uKCkgeworICAgICAgICAvLyBWYWxpZGF0aW9uIGNvZGUgZm9yIHJl cXVpcmVkIGZpZWxkcworICAgICAgICAgIHZhciBjaGFuZ2VkQXR0cnMgPSB0 aGlzLnNlc3NBdHRycywKKyAgICAgICAgICAgICAgbXNnID0gdW5kZWZpbmVk OworCisgICAgICAgICAgaWYgKF8uaGFzKGNoYW5nZWRBdHRycywgJ25hbWUn KSAmJgorICAgICAgICAgICAgICAgIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0 KCduYW1lJykpCisgICAgICAgICAgICAgIHx8IFN0cmluZyh0aGlzLmdldCgn bmFtZScpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSkgewor ICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ05hbWUgY2FuIG5vdCBiZSBlbXB0 eSEnKSB9fSc7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdu YW1lJywgbXNnKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKF8uaGFzKGNoYW5n ZWRBdHRycywgJ3NjaGVtYScpICYmCisgICAgICAgICAgICAgICAgKF8uaXNV bmRlZmluZWQodGhpcy5nZXQoJ3NjaGVtYScpKQorICAgICAgICAgICAgICB8 fCBTdHJpbmcodGhpcy5nZXQoJ3NjaGVtYScpKS5yZXBsYWNlKC9eXHMrfFxz KyQvZywgJycpID09ICcnKSkgeworICAgICAgICAgICAgbXNnID0gJ3t7IF8o J1NjaGVtYSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgICAg IHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3NjaGVtYScsIG1zZyk7CisgICAgICAg ICAgfSBlbHNlIGlmIChfLmhhcyhjaGFuZ2VkQXR0cnMsICd0eXB0eXBlJykg JiYKKyAgICAgICAgICAgICAgICAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgn dHlwdHlwZScpKQorICAgICAgICAgICAgICB8fCBTdHJpbmcodGhpcy5nZXQo J25hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykpIHsK KyAgICAgICAgICAgIG1zZyA9ICd7eyBfKCdUeXBlIGNhbiBub3QgYmUgZW1w dHkhJykgfX0nOworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgn dHlwdHlwZScsIG1zZyk7CisgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdl dCgndHlwdHlwZScpID09ICdyJyAmJgorICAgICAgICAgICAgICAgIF8uaGFz KGNoYW5nZWRBdHRycywgJ3R5cG5hbWUnKQorICAgICAgICAgICAgICAmJiAo Xy5pc1VuZGVmaW5lZCh0aGlzLmdldCgndHlwbmFtZScpKQorICAgICAgICAg ICAgICB8fCBTdHJpbmcodGhpcy5nZXQoJ3R5cG5hbWUnKSkucmVwbGFjZSgv XlxzK3xccyskL2csICcnKSA9PSAnJykpIHsKKyAgICAgICAgICAgIG1zZyA9 ICd7eyBfKCdTdWJ0eXBlIE5hbWUgY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7 CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCd0eXBuYW1lJywg bXNnKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0KCd0eXB0eXBl JykgPT0gJ3gnICYmCisgICAgICAgICAgICAgICAgXy5oYXMoY2hhbmdlZEF0 dHJzLCAndHlwaW5wdXQnKQorICAgICAgICAgICAgICAmJiAoXy5pc1VuZGVm aW5lZCh0aGlzLmdldCgndHlwaW5wdXQnKSkKKyAgICAgICAgICAgICAgfHwg U3RyaW5nKHRoaXMuZ2V0KCd0eXBpbnB1dCcpKS5yZXBsYWNlKC9eXHMrfFxz KyQvZywgJycpID09ICcnKSkgeworICAgICAgICAgICAgbXNnID0gJ3t7IF8o J0lucHV0IGZ1bmN0aW9uIGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOworICAg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgndHlwaW5wdXQnLCBtc2cp OworICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXQoJ3R5cHR5cGUnKSA9 PSAneCcgJiYKKyAgICAgICAgICAgICAgICBfLmhhcyhjaGFuZ2VkQXR0cnMs ICd0eXBvdXRwdXQnKQorICAgICAgICAgICAgICAmJiAoXy5pc1VuZGVmaW5l ZCh0aGlzLmdldCgndHlwb3V0cHV0JykpCisgICAgICAgICAgICAgIHx8IFN0 cmluZyh0aGlzLmdldCgndHlwb3V0cHV0JykpLnJlcGxhY2UoL15ccyt8XHMr JC9nLCAnJykgPT0gJycpKSB7CisgICAgICAgICAgICBtc2cgPSAne3sgXygn T3V0cHV0IGZ1bmN0aW9uIGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOworICAg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgndHlwb3V0cHV0JywgbXNn KTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJv ck1vZGVsLnVuc2V0KCduYW1lJyk7CisgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwudW5zZXQoJ3NjaGVtYScpOworICAgICAgICAgICAgdGhpcy5lcnJv ck1vZGVsLnVuc2V0KCd0eXB0eXBlJyk7CisgICAgICAgICAgICB0aGlzLmVy cm9yTW9kZWwudW5zZXQoJ3R5cG5hbWUnKTsKKyAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC51bnNldCgndHlwaW5wdXQnKTsKKyAgICAgICAgICAgIHRo aXMuZXJyb3JNb2RlbC51bnNldCgndHlwb3V0cHV0Jyk7CisgICAgICAgICAg fQorICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9LAorICAgICAg ICAvLyBXZSB3aWxsIGRpc2FibGUgZXZlcnl0aGluZyBpZiB3ZSBhcmUgdW5k ZXIgY2F0YWxvZyBub2RlCisgICAgICAgIGluU2NoZW1hOiBmdW5jdGlvbigp IHsKKyAgICAgICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ2NhdGFsb2cn IGluIHRoaXMubm9kZV9pbmZvKQorICAgICAgICAgIHsKKyAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgIH0sCisgICAgICAgIC8vIFdlIHdpbGwgY2hlY2sg aWYgd2UgYXJlIHVuZGVyIHNjaGVtYSBub2RlICYgaW4gJ2NyZWF0ZScgbW9k ZQorICAgICAgICBpblNjaGVtYVdpdGhNb2RlbENoZWNrOiBmdW5jdGlvbiht KSB7CisgICAgICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdzY2hlbWEn IGluIHRoaXMubm9kZV9pbmZvKQorICAgICAgICAgIHsKKyAgICAgICAgICAg IC8vIFdlIHdpbGwgZGlzYmFsZSBjb250cm9sIGlmIGl0J3MgaW4gJ2VkaXQn IG1vZGUKKyAgICAgICAgICAgIGlmIChtLmlzTmV3KCkpIHsKKyAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0s CisgICAgICAgIC8vIFdlIHdhbnQgdG8gZW5hYmxlIG9ubHkgaW4gZWRpdCBt b2RlCisgICAgICAgIGluU2NoZW1hV2l0aEVkaXRNb2RlOiBmdW5jdGlvbiht KSB7CisgICAgICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdzY2hlbWEn IGluIHRoaXMubm9kZV9pbmZvKQorICAgICAgICAgIHsKKyAgICAgICAgICAg IC8vIFdlIHdpbGwgZGlzYmFsZSBjb250cm9sIGlmIGl0J3MgaW4gJ2VkaXQn IG1vZGUKKyAgICAgICAgICAgIGlmIChtLmlzTmV3KCkpIHsKKyAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0s CisgICAgICAgIC8vIEZ1bmN0aW9uIHdpbGwgaGVscCB1cyB0byBmaWxsIGNv bWJvYm94CisgICAgICAgIGV4dGVybmFsX2Z1bmNfY29tYm86IGZ1bmN0aW9u KGQpIHsKKyAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgICAg ICBfLmVhY2goZCwgZnVuY3Rpb24oaXRlbSkgeworICAgICAgICAgICAgIC8v IGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94IG1hdGNoZXMg aW4gb3B0aW9ucworICAgICAgICAgICAgIGlmICggaXRlbS5jYnR5cGUgPT0g J2FsbCcgKSB7CisgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTsK KyAgICAgICAgICAgICB9CisgICAgICAgICAgIH0pOworICAgICAgICAgICBy ZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICB9KSwKKyAgICAgIGNh bkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKKyAg ICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFs bG93IGNyZWF0ZSBtZW51CisgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5j aGVjayA9PSBmYWxzZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg ICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQg PSBpdGVtRGF0YTsKKyAgICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJl ZSB0byBjaGVjayBwYXJlbnQgbm9kZQorICAgICAgICAgIHdoaWxlIChpKSB7 CisgICAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1 c2VyIHRvIGNyZWF0ZSB0YWJsZQorICAgICAgICAgICAgaWYgKF8uaW5kZXhP ZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQorICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKCdjb2xsLXR5cGUnID09 IGQuX3R5cGUpIHsKKyAgICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUg bm90IGNoaWxkIG9mIGNhdGFsb2cKKyAgICAgICAgICAgICAgcHJldl9pID0g dC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CisgICAgICAg ICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6 IG51bGw7CisgICAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2Nh dGFsb2cnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg ICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7 CisgICAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwor ICAgICAgICAgIH0KKyAgICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5v dCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51CisgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICB9CisgIH0pOworICB9CisgIHJldHVybiBwZ0Jyb3dz ZXIuTm9kZXNbJ3R5cGUnXTsKK30pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBs YXRlcy90eXBlL3NxbC85LjFfcGx1cy9hY2wuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2FjbC5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBlYWIyNQot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBs YXRlcy90eXBlL3NxbC85LjFfcGx1cy9hY2wuc3FsCkBAIC0wLDAgKzEsMjYg QEAKK1NFTEVDVCAndHlwYWNsJyBhcyBkZWZ0eXBlLCBDT0FMRVNDRShndC5y b2xuYW1lLCAncHVibGljJykgZ3JhbnRlZSwgZy5yb2xuYW1lIGdyYW50b3Is IGFycmF5X2FnZyhwcml2aWxlZ2VfdHlwZSkgYXMgcHJpdmlsZWdlcywgYXJy YXlfYWdnKGlzX2dyYW50YWJsZSkgYXMgZ3JhbnRhYmxlCitGUk9NCisgICAg KFNFTEVDVAorICAgICAgICBkLmdyYW50ZWUsIGQuZ3JhbnRvciwgZC5pc19n cmFudGFibGUsCisgICAgICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorICAg ICAgICBXSEVOICdVU0FHRScgVEhFTiAnVScKKyAgICAgICAgRUxTRSAnVU5L Tk9XTicKKyAgICAgICAgRU5EIEFTIHByaXZpbGVnZV90eXBlCisgICAgRlJP TQorICAgICAgICAoU0VMRUNUIHQudHlwYWNsCisgICAgICAgICAgICBGUk9N IHBnX3R5cGUgdAorICAgICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3R5 cGUgZSBPTiBlLm9pZD10LnR5cGVsZW0KKyAgICAgICAgICAgIExFRlQgT1VU RVIgSk9JTiBwZ19jbGFzcyBjdCBPTiBjdC5vaWQ9dC50eXByZWxpZCBBTkQg Y3QucmVsa2luZCA8PiAnYycKKyAgICAgICAgICAgIExFRlQgT1VURVIgSk9J TiBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9dC5vaWQgQU5E IGRlcy5jbGFzc29pZD0ncGdfdHlwZSc6OnJlZ2NsYXNzKQorICAgICAgICAg ICAgV0hFUkUgdC50eXB0eXBlICE9ICdkJyBBTkQgdC50eXBuYW1lIE5PVCBM SUtFIEUnXFxfJScgQU5EIHQudHlwbmFtZXNwYWNlID0ge3tzY2lkfX06Om9p ZAorICAgICAgICAgICAgeyUgaWYgdGlkICV9CisgICAgICAgICAgICBBTkQg dC5vaWQgPSB7e3RpZH19OjpvaWQKKyAgICAgICAgICAgIHslIGVuZGlmICV9 CisgICAgICAgICkgYWNsLAorICAgICAgICAoU0VMRUNUIChkKS5ncmFudGVl IEFTIGdyYW50ZWUsIChkKS5ncmFudG9yIEFTIGdyYW50b3IsIChkKS5pc19n cmFudGFibGUKKyAgICAgICAgICAgIEFTIGlzX2dyYW50YWJsZSwgKGQpLnBy aXZpbGVnZV90eXBlIEFTIHByaXZpbGVnZV90eXBlIEZST00gKFNFTEVDVAor ICAgICAgICAgICAgYWNsZXhwbG9kZSh0LnR5cGFjbCkgYXMgZCBGUk9NIHBn X3R5cGUgdCBXSEVSRSB0Lm9pZCA9IHt7dGlkfX06Om9pZCkgYSkgZAorICAg ICAgICApIGQKKyAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBn IE9OIChkLmdyYW50b3IgPSBnLm9pZCkKKyAgICBMRUZUIEpPSU4gcGdfY2F0 YWxvZy5wZ19yb2xlcyBndCBPTiAoZC5ncmFudGVlID0gZ3Qub2lkKQorR1JP VVAgQlkgZy5yb2xuYW1lLCBndC5yb2xuYW1lClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMv dGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2FkZGl0aW9uYWxfcHJvcGVy dGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlw ZS9zcWwvOS4xX3BsdXMvYWRkaXRpb25hbF9wcm9wZXJ0aWVzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWJjMGJiCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVz L3R5cGUvc3FsLzkuMV9wbHVzL2FkZGl0aW9uYWxfcHJvcGVydGllcy5zcWwK QEAgLTAsMCArMSw0MCBAQAoreyMgVGhlIFNRTCBnaXZlbiBiZWxvdyB3aWxs IGZldGNoIGNvbXBvc2l0ZSB0eXBlI30KK3slIGlmIHR5cGUgPT0gJ2MnICV9 CitTRUxFQ1QgYXR0bmFtZSwgZm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMg dHlwbmFtZSwgYXR0bmRpbXMsIGF0dHR5cG1vZCwgbnNwLm5zcG5hbWUsCiso U0VMRUNUIENPVU5UKDEpIGZyb20gcGdfdHlwZSB0MiBXSEVSRSB0Mi50eXBu YW1lPXQudHlwbmFtZSkgPiAxIEFTIGlzZHVwCistLSBNaW4gOS4xIHN0YXJ0 CissY29sbG5hbWUsIG5zcGMubnNwbmFtZSBhcyBjb2xsbnNwbmFtZQorLS0g RW5kCissIGF0dC5hdHRyZWxpZAorRlJPTSBwZ19hdHRyaWJ1dGUgYXR0CitK T0lOIHBnX3R5cGUgdCBPTiB0Lm9pZD1hdHR0eXBpZAorSk9JTiBwZ19uYW1l c3BhY2UgbnNwIE9OIHQudHlwbmFtZXNwYWNlPW5zcC5vaWQKK0xFRlQgT1VU RVIgSk9JTiBwZ190eXBlIGIgT04gdC50eXBlbGVtPWIub2lkCistLSBNaW4g OS4xIHN0YXJ0CitMRUZUIE9VVEVSIEpPSU4gcGdfY29sbGF0aW9uIGMgT04g YXR0LmF0dGNvbGxhdGlvbj1jLm9pZAorTEVGVCBPVVRFUiBKT0lOIHBnX25h bWVzcGFjZSBuc3BjIE9OIGMuY29sbG5hbWVzcGFjZT1uc3BjLm9pZAorLS0g RW5kCitXSEVSRSBhdHQuYXR0cmVsaWQgPSB7e3R5cHJlbGlkfX06Om9pZAor T1JERVIgYnkgYXR0bnVtOworeyUgZW5kaWYgJX0KK3sjIFRoZSBTUUwgZ2l2 ZW4gYmVsb3cgd2lsbCBmZXRjaCBlbnVtIHR5cGUjfQoreyUgaWYgdHlwZSA9 PSAnZScgJX0KK1NFTEVDVCBlbnVtbGFiZWwgRlJPTSBwZ19lbnVtIFdIRVJF IGVudW10eXBpZD17e3RpZH19OjpvaWQKKy0tIE1pbiA5LjEKK09SREVSIGJ5 IGVudW1zb3J0b3JkZXIKKy0tRW5kCistLSBlbHNlCistLSBPUkRFUiBieSBv aWQKK3slIGVuZGlmICV9Cit7IyBUaGUgU1FMIGdpdmVuIGJlbG93IHdpbGwg ZmV0Y2ggcmFuZ2UgdHlwZSN9Cit7JSBpZiB0eXBlID09ICdyJyAlfQorU0VM RUNUIHJuZ3N1YnR5cGUsIHN0LnR5cG5hbWUsCitybmdjb2xsYXRpb24sIGNv bC5jb2xsbmFtZSwKK3JuZ3N1Ym9wYywgb3BjLm9wY25hbWUsCitybmdjYW5v bmljYWwsIHJuZ3N1YmRpZmYKK0ZST00gcGdfcmFuZ2UKK0xFRlQgSk9JTiBw Z190eXBlIHN0IE9OIHN0Lm9pZD1ybmdzdWJ0eXBlCitMRUZUIEpPSU4gcGdf Y29sbGF0aW9uIGNvbCBPTiBjb2wub2lkPXJuZ2NvbGxhdGlvbgorTEVGVCBK T0lOIHBnX29wY2xhc3Mgb3BjIE9OIG9wYy5vaWQ9cm5nc3Vib3BjCitXSEVS RSBybmd0eXBpZD17e3RpZH19OjpvaWQ7Cit7JSBlbmRpZiAlfQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3Fs LzkuMV9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90 ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTUzNTMyCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5 cGUvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSw3OCBAQAor eyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFz IFNFQ0xBQkxFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZp bGVnZS5tYWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyMjIyAgQ29tcG9zaXRl IFR5cGUgIyMjfQoreyUgaWYgZGF0YSBhbmQgZGF0YS50eXB0eXBlID09ICdj JyAlfQorQ1JFQVRFIFRZUEUgeyUgaWYgZGF0YS5zY2hlbWEgJX17eyBjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX17JSBlbHNlICV9 e3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX17JSBlbmRpZiAlfSBBUwor ICAgICh7JSBpZiBkYXRhLmNvbXBvc2l0ZSAlfXslIGZvciBkIGluIGRhdGEu Y29tcG9zaXRlICV9eyUgaWYgbG9vcC5pbmRleCAhPSAxICV9LCB7JSBlbmRp ZiAlfXt7IGNvbm58cXRJZGVudChkLm1lbWJlcl9uYW1lKSB9fSB7eyBkLnR5 cGUgfX17JSBpZiBkLmlzX3RsZW5ndGggYW5kIGQudGxlbmd0aCAlfSh7e2Qu dGxlbmd0aH19eyUgaWYgZC5pc19wcmVjaXNpb24gYW5kIGQucHJlY2lzaW9u ICV9LHt7ZC5wcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUg aWYgZC5jb2xsYXRpb24gJX0gQ09MTEFURSB7e2QuY29sbGF0aW9ufX17JSBl bmRpZiAlfXslIGVuZGZvciAlfXslIGVuZGlmICV9KTsKK3slIGVuZGlmICV9 Cit7IyMjICBFbnVtIFR5cGUgIyMjfQoreyUgaWYgZGF0YSBhbmQgZGF0YS50 eXB0eXBlID09ICdlJyAlfQorQ1JFQVRFIFRZUEUgeyUgaWYgZGF0YS5zY2hl bWEgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkg fX17JSBlbHNlICV9e3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX17JSBl bmRpZiAlfSBBUyBFTlVNCisgICAgKHslIGZvciBlIGluIGRhdGEuZW51bSAl fXslIGlmIGxvb3AuaW5kZXggIT0gMSAlfSwgeyUgZW5kaWYgJX17eyBlLmxh YmVsfHF0TGl0ZXJhbCB9fXslIGVuZGZvciAlfSk7Cit7JSBlbmRpZiAlfQor eyMjIyAgUmFuZ2UgVHlwZSAjIyN9Cit7JSBpZiBkYXRhIGFuZCBkYXRhLnR5 cHR5cGUgPT0gJ3InICV9CitDUkVBVEUgVFlQRSB7JSBpZiBkYXRhLnNjaGVt YSAlfXt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9 fXslIGVsc2UgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fXslIGVu ZGlmICV9IEFTIFJBTkdFCisgICAgKAorICAgICB7JSBpZiBkYXRhLnR5cG5h bWUgJX1TVUJUWVBFPXt7IGNvbm58cXRUeXBlSWRlbnQoZGF0YS50eXBuYW1l KSB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5jb2xsbmFtZSAlfSwKKyAgICAg Q09MTEFUSU9OID0ge3sgZGF0YS5jb2xsbmFtZSB9fXslIGVuZGlmICV9eyUg aWYgZGF0YS5vcGNuYW1lICAlfSwKKyAgICAgU1VCVFlQRV9PUENMQVNTID0g e3sgZGF0YS5vcGNuYW1lIH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnJuZ2Nh bm9uaWNhbCAlfSwKKyAgICAgQ0FOT05JQ0FMID0ge3sgZGF0YS5ybmdjYW5v bmljYWwgfX17JSBlbmRpZiAlfXslIGlmIGRhdGEucm5nc3ViZGlmZiAlfSwK KyAgICAgU1VCVFlQRV9ESUZGID0ge3sgZGF0YS5ybmdzdWJkaWZmIH19eyUg ZW5kaWYgJX0KKworICAgICk7Cit7JSBlbmRpZiAlfQoreyMjIyAgRXh0ZXJu YWwgVHlwZSAjIyN9Cit7JSBpZiBkYXRhIGFuZCBkYXRhLnR5cHR5cGUgPT0g J3gnICV9CitDUkVBVEUgVFlQRSB7JSBpZiBkYXRhLnNjaGVtYSAlfXt7IGNv bm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fXslIGVsc2Ug JX17eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fXslIGVuZGlmICV9IEFT CisgICAgKAorICAgICB7JSBpZiBkYXRhLnR5cGlucHV0ICV9SU5QVVQgPSB7 e2RhdGEudHlwaW5wdXR9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBvdXRw dXQgJX0sCisgICAgIE9VVFBVVCA9IHt7IGRhdGEudHlwb3V0cHV0IH19eyUg ZW5kaWYgJX17JSBpZiBkYXRhLnR5cHJlY2VpdmUgJX0sCisgICAgIFJFQ0VJ VkUgPSB7e2RhdGEudHlwcmVjZWl2ZX19eyUgZW5kaWYgJX17JSBpZiBkYXRh LnR5cG5hbWUgJX0sCisgICAgIFNFTkQgPSB7e2RhdGEudHlwc2VuZH19eyUg ZW5kaWYgJX17JSBpZiBkYXRhLnR5cG1vZGluICV9LAorICAgICBUWVBNT0Rf SU4gPSB7e2RhdGEudHlwbW9kaW59fXslIGVuZGlmICV9eyUgaWYgZGF0YS50 eXBtb2RvdXQgJX0sCisgICAgIFRZUE1PRF9PVVQgPSB7e2RhdGEudHlwbW9k b3V0fX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwYW5hbHl6ZSAlfSwKKyAg ICAgQU5BTFlaRSA9IHt7ZGF0YS50eXBhbmFseXplfX17JSBlbmRpZiAlfXsl IGlmIGRhdGEudHlwbGVuICV9LAorICAgICBJTlRFUk5BTExFTkdUSCA9IHt7 ZGF0YS50eXBsZW59fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBieXZhbCAl fSwKKyAgICAgUEFTU0VEQllWQUxVRXslIGVuZGlmICV9eyUgaWYgZGF0YS50 eXBhbGlnbiAlfSwKKyAgICAgQUxJR05NRU5UID0gIHt7ZGF0YS50eXBhbGln bn19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cHN0b3JhZ2UgJX0sCisgICAg IFNUT1JBR0UgPSAge3tkYXRhLnR5cHN0b3JhZ2V9fXslIGVuZGlmICV9eyUg aWYgZGF0YS50eXBjYXRlZ29yeSAlfSwKKyAgICAgQ0FURUdPUlkgPSB7e2Rh dGEudHlwY2F0ZWdvcnl9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBpc3By ZWZlcnJlZCAlfSwKKyAgICAgUFJFRkVSUkVEID0gIHt7ZGF0YS50eXBpc3By ZWZlcnJlZH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cGRlZmF1bHQgJX0s CisgICAgIERFRkFVTFQgPSB7e2RhdGEudHlwZGVmYXVsdH19eyUgZW5kaWYg JX17JSBpZiBkYXRhLmVsZW1lbnQgJX0sCisgICAgIEVMRU1FTlQgPSB7e2Rh dGEuZWxlbWVudH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cGRlbGltICV9 LAorICAgICBERUxJTUlURVIgPSB7e2RhdGEudHlwZGVsaW18cXRMaXRlcmFs fX17JSBlbmRpZiAlfXslIGlmIGRhdGEuaXNfY29sbGF0YWJsZSAlfSwKKyAg ICAgQ09MTEFUQUJMRSA9IHt7ZGF0YS5pc19jb2xsYXRhYmxlfX17JSBlbmRp ZiAlfQorCisgICAgKTsKK3slIGVuZGlmICV9Cit7IyMjICBUeXBlIE93bmVy ICMjI30KK3slIGlmIGRhdGEgYW5kIGRhdGEudHlwZW93bmVyICV9CisKK0FM VEVSIFRZUEUgeyUgaWYgZGF0YS5zY2hlbWEgJX17eyBjb25ufHF0SWRlbnQo ZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX17JSBlbHNlICV9e3sgY29ubnxx dElkZW50KGRhdGEubmFtZSkgfX17JSBlbmRpZiAlfQorCisgICAgT1dORVIg VE8ge3tkYXRhLnR5cGVvd25lcn19OworeyUgZW5kaWYgJX0KK3sjIyMgIFR5 cGUgQ29tbWVudHMgIyMjfQoreyUgaWYgZGF0YSBhbmQgZGF0YS5kZXNjcmlw dGlvbiAlfQorCitDT01NRU5UIE9OIFRZUEUgeyUgaWYgZGF0YS5zY2hlbWEg JX17eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX17 JSBlbHNlICV9e3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX17JSBlbmRp ZiAlfQorCisgICAgSVMge3tkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbH19 OworeyUgZW5kaWYgJX0KK3sjIyMgIEFDTCAjIyN9Cit7JSBpZiBkYXRhLnR5 cGFjbCAlfQorCit7JSBmb3IgcHJpdiBpbiBkYXRhLnR5cGFjbCAlfQore3sg UFJJVklMRUdFLlNFVChjb25uLCAnVFlQRScsIHByaXYuZ3JhbnRlZSwgZGF0 YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwg ZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7 IyMjICBTZWN1cml0eSBMYWJsZXMgIyMjfQoreyUgaWYgZGF0YS5zZWNsYWJl bHMgJX0KKworeyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlm IHIucHJvdmlkZXIgYW5kIHIuc2VjdXJpdHlfbGFiZWwgJX0KK3t7IFNFQ0xB QkxFLlNFVChjb25uLCAnVFlQRScsIGRhdGEubmFtZSwgci5wcm92aWRlciwg ci5zZWN1cml0eV9sYWJlbCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRpZiAl fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVz L2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMv dHlwZS9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5jMjU4ODI3Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzku MV9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSBAQAorRFJPUCBUWVBFIHt7 IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fXslIGlm IGNhc2NhZGUlfSBDQVNDQURFeyUgZW5kaWYgJX07ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlw ZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dldF9jb2xsYXRpb25z LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3Nx bC85LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNGIwMTY5YgotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85 LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKQEAgLTAsMCArMSw3IEBACitT RUxFQ1QgLS1uc3BuYW1lLCBjb2xsbmFtZSwKKyAgICBDQVNFIFdIRU4gbGVu Z3RoKG5zcG5hbWUpID4gMCBBTkQgbGVuZ3RoKGNvbGxuYW1lKSA+IDAgIFRI RU4KKyAgICAgICAgY29uY2F0KHF1b3RlX2lkZW50KG5zcG5hbWUpLCAnLics IHF1b3RlX2lkZW50KGNvbGxuYW1lKSkKKyAgICBFTFNFICcnIEVORCBBUyBj b2xsYXRpb24KK0ZST00gcGdfY29sbGF0aW9uIGMsIHBnX25hbWVzcGFjZSBu CitXSEVSRSBjLmNvbGxuYW1lc3BhY2U9bi5vaWQKK09SREVSIEJZIG5zcG5h bWUsIGNvbGxuYW1lOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBl L3NxbC85LjFfcGx1cy9nZXRfZXh0ZXJuYWxfZnVuY3Rpb25zLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1 cy9nZXRfZXh0ZXJuYWxfZnVuY3Rpb25zLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi44NTQ5NGRiCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzku MV9wbHVzL2dldF9leHRlcm5hbF9mdW5jdGlvbnMuc3FsCkBAIC0wLDAgKzEs NDAgQEAKK3sjIyMgSW5wdXQvT3V0cHV0L1NlbmQvUmVjZWl2ZS9BbmFseXpl IGZ1bmN0aW9uIGxpc3QgYWxzbyBhcHBlbmQgaW50byBUeXBNb2RlSU4vVHlw TW9kT1VUICMjI30KK3slIGlmIGV4dGZ1bmMgJX0KK1NFTEVDVCBwcm9uYW1l LCBuc3BuYW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAw IEFORCBsZW5ndGgocHJvbmFtZSkgPiAwICBUSEVOCisgICAgICAgIGNvbmNh dChxdW90ZV9pZGVudChuc3BuYW1lKSwgJy4nLCBxdW90ZV9pZGVudChwcm9u YW1lKSkKKyAgICBFTFNFICcnIEVORCBBUyBmdW5jCitGUk9NICgKKyAgICBT RUxFQ1QgcHJvbmFtZSwgbnNwbmFtZSwgbWF4KHByb2FyZ3R5cGVzWzBdKSBB UyBhcmcwLCBtYXgocHJvYXJndHlwZXNbMV0pIEFTIGFyZzEKK0ZST00gcGdf cHJvYyBwCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1wcm9u YW1lc3BhY2UKK0dST1VQIEJZIHByb25hbWUsIG5zcG5hbWUKK0hBVklORyBj b3VudChwcm9uYW1lKSA9IDEgICApIEFTIHVuaXF1ZWZ1bmMKK1dIRVJFIGFy ZzAgPD4gMCBBTkQgYXJnMSA9IDA7Cit7JSBlbmRpZiAlfQoreyMjIyBUeXBt b2RJTiBsaXN0ICMjI30KK3slIGlmIHR5cGVtb2RpbiAlfQorU0VMRUNUIHBy b25hbWUsIG5zcG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1l KSA+IDAgQU5EIGxlbmd0aChwcm9uYW1lKSA+IDAgIFRIRU4KKyAgICAgICAg Y29uY2F0KHF1b3RlX2lkZW50KG5zcG5hbWUpLCAnLicsIHF1b3RlX2lkZW50 KHByb25hbWUpKQorICAgIEVMU0UgJycgRU5EIEFTIGZ1bmMKK0ZST00gcGdf cHJvYyBwCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1wcm9u YW1lc3BhY2UKK1dIRVJFIHByb3JldHR5cGU9KFNFTEVDVCBvaWQgRlJPTSBw Z190eXBlIFdIRVJFIHR5cG5hbWU9J2ludDQnKQorICAgIEFORCBwcm9hcmd0 eXBlc1swXT0oU0VMRUNUIG9pZCBGUk9NIHBnX3R5cGUgV0hFUkUgdHlwbmFt ZT0nX2NzdHJpbmcnKQorICAgIEFORCBwcm9hcmd0eXBlc1sxXSBJUyBOVUxM CitPUkRFUiBCWSBuc3BuYW1lLCBwcm9uYW1lOworeyUgZW5kaWYgJX0KK3sj IyMgVHlwbW9kT1VUIGxpc3QgIyMjfQoreyUgaWYgdHlwZW1vZG91dCAlfQor U0VMRUNUIHByb25hbWUsIG5zcG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0 aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChwcm9uYW1lKSA+IDAgIFRIRU4K KyAgICAgICAgY29uY2F0KHF1b3RlX2lkZW50KG5zcG5hbWUpLCAnLicsIHF1 b3RlX2lkZW50KHByb25hbWUpKQorICAgIEVMU0UgJycgRU5EIEFTIGZ1bmMK K0ZST00gcGdfcHJvYyBwCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBu Lm9pZD1wcm9uYW1lc3BhY2UKK1dIRVJFIHByb3JldHR5cGU9KFNFTEVDVCBv aWQgRlJPTSBwZ190eXBlIFdIRVJFIHR5cG5hbWU9J2NzdHJpbmcnKQorICAg IEFORCBwcm9hcmd0eXBlc1swXT0oU0VMRUNUIG9pZCBGUk9NIHBnX3R5cGUg V0hFUkUgdHlwbmFtZT0naW50NCcpCisgICAgQU5EIHByb2FyZ3R5cGVzWzFd IElTIE5VTEwKK09SREVSIEJZIG5zcG5hbWUsIHByb25hbWU7Cit7JSBlbmRp ZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxh dGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dldF9v aWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0 Zjc5NTAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBl cy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwKQEAg LTAsMCArMSwxMSBAQAoreyMgQmVsb3cgd2lsbCBwcm92aWRlIG9pZCBmb3Ig bmV3bHkgY3JlYXRlZCB0eXBlICN9CitTRUxFQ1QgdC5vaWQKK0ZST00gcGdf dHlwZSB0CisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3R5cGUgZSBPTiBlLm9p ZD10LnR5cGVsZW0KKyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfY2xhc3MgY3Qg T04gY3Qub2lkPXQudHlwcmVsaWQgQU5EIGN0LnJlbGtpbmQgPD4gJ2MnCisg ICAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVz Lm9iam9pZD10Lm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ190eXBlJzo6cmVn Y2xhc3MpCitXSEVSRSB0LnR5cHR5cGUgIT0gJ2QnIEFORCB0LnR5cG5hbWUg Tk9UIExJS0UgRSdcXF8lJyBBTkQgdC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9 fTo6b2lkCit7JSBpZiBkYXRhICV9CisgICAgQU5EIHQudHlwbmFtZSA9IHt7 ZGF0YS5uYW1lfHF0TGl0ZXJhbH19Cit7JSBlbmRpZiAlfQorT1JERVIgQlkg dC50eXBuYW1lOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3Nx bC85LjFfcGx1cy9nZXRfc3VidHlwZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dldF9zdWJ0eXBl cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUy NzFmZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVz L3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9nZXRfc3VidHlwZXMuc3Fs CkBAIC0wLDAgKzEsNTYgQEAKK3sjIyMgVG8gZmlsbCBzdWJ0eXBlIGNvbWJv Ym94ICMjI30KK3slIGlmIHN1YnR5cGUgJX0KK1NFTEVDVCBESVNUSU5DVCB0 eXAudHlwbmFtZSBBUyBzdHlwZSwKKyAgICAoQ0FTRSBXSEVOIHR5cC50eXBj b2xsYXRpb24gPiAwIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgaXNf Y29sbGF0ZQorRlJPTSBwZ19vcGNsYXNzIG9wYworICAgIEpPSU4gcGdfdHlw ZSB0eXAgT04gb3BjLm9wY2ludHlwZSA9IHR5cC5vaWQKK1dIRVJFIG9wYy5v cGNtZXRob2QgPSA0MDMKK09SREVSIEJZIDEKK3slIGVuZGlmICV9Cit7IyMj IFRvIGZpbGwgc3VidHlwZSBvcGNsYXNzIGNvbWJvYm94ICMjI30KK3slIGlm IHN1YnR5cGVfb3BjbGFzcyBhbmQgZGF0YSBhbmQgZGF0YS50eXBuYW1lICV9 CitTRUxFQ1Qgb3BjLm9wY25hbWUKK0ZST00gcGdfb3BjbGFzcyBvcGMKKyAg ICBKT0lOIHBnX3R5cGUgdHlwIE9OIG9wYy5vcGNpbnR5cGU9dHlwLm9pZAor ICAgIEFORCB0eXAudHlwbmFtZSA9IHt7IGRhdGEudHlwbmFtZXxxdExpdGVy YWwgfX0KK1dIRVJFIG9wYy5vcGNtZXRob2QgPSA0MDMKK09SREVSIEJZIG9w Y25hbWU7Cit7JSBlbmRpZiAlfQoreyMjIyBUbyBmZXRjaCBvcGNpbnR0eXBl IGZyb20gc3VidHlwZSBvcGNsYXNzICMjI30KK3slIGlmIGdldF9vcGNpbnR5 cGUgYW5kIGRhdGEgYW5kIGRhdGEudHlwbmFtZSBhbmQgZGF0YS5vcGNuYW1l ICV9CitTRUxFQ1Qgb3BjLm9wY2ludHlwZQorRlJPTSBwZ19vcGNsYXNzIG9w YworICAgIEpPSU4gcGdfdHlwZSB0eXAgT04gb3BjLm9wY2ludHlwZT10eXAu b2lkCisgICAgQU5EIHR5cC50eXBuYW1lID0ge3sgZGF0YS50eXBuYW1lfHF0 TGl0ZXJhbCB9fQorV0hFUkUgb3BjLm9wY21ldGhvZCA9IDQwMworICAgIEFO RCBvcGMub3BjbmFtZSA9IHt7IGRhdGEub3BjbmFtZXxxdExpdGVyYWwgfX0K K09SREVSIEJZIG9wY25hbWU7Cit7JSBlbmRpZiAlfQoreyMjIyBUbyBmaWxs IHN1YnR5cGUgZGlmZiBmdW5jdGlvbiBjb21ib2JveCAjIyN9Cit7JSBpZiBv cGNpbnR5cGUgJX0KK1NFTEVDVCBwcm9uYW1lLCBuc3BuYW1lLAorICAgIENB U0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBsZW5ndGgocHJvbmFt ZSkgPiAwICBUSEVOCisgICAgICAgIGNvbmNhdChxdW90ZV9pZGVudChuc3Bu YW1lKSwgJy4nLCBxdW90ZV9pZGVudChwcm9uYW1lKSkKKyAgICBFTFNFICcn IEVORCBBUyBzdHlwZGlmZgorRlJPTSBwZ19wcm9jCisgICAgSk9JTiBwZ19u YW1lc3BhY2UgbiBPTiBuLm9pZD1wcm9uYW1lc3BhY2UKK1dIRVJFIHByb3Jl dHR5cGUgPSA3MDEKKyAgICBBTkQgcHJvYXJndHlwZXMgPSAne3tvcGNpbnR5 cGV9fSB7e29wY2ludHlwZX19JworT1JERVIgQlkgcHJvbmFtZTsKK3slIGVu ZGlmICV9Cit7IyMjIFRvIGZpbGwgY2Fub25pY2FsIGNvbWJvYm94ICMjI30K K3slIGlmIGdldG9pZCAlfQorU0VMRUNUIG9pZCBGUk9NIHBnX3R5cGUKK1dI RVJFIHR5cG5hbWUgPSB7eyBkYXRhLm5hbWV8cXRMaXRlcmFsIH19Cit7JSBl bmRpZiAlfQoreyUgaWYgY2Fub25pY2FsIGFuZCBvaWQgJX0KK1NFTEVDVCBw cm9uYW1lLCBuc3BuYW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFt ZSkgPiAwIEFORCBsZW5ndGgocHJvbmFtZSkgPiAwICBUSEVOCisgICAgICAg IGNvbmNhdChxdW90ZV9pZGVudChuc3BuYW1lKSwgJy4nLCBxdW90ZV9pZGVu dChwcm9uYW1lKSkKKyAgICBFTFNFICcnIEVORCBBUyBjYW5vbmljYWwKK0ZS T00gcGdfcHJvYworICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9 cHJvbmFtZXNwYWNlCitXSEVSRSBwcm9yZXR0eXBlPSB7eyBvaWQgfX0KKyAg ICBBTkQgcHJvYXJndHlwZXMgPSAne3sgb2lkIH19JworT1JERVIgQlkgcHJv bmFtZTsKK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVz L3R5cGUvc3FsLzkuMV9wbHVzL2dldF90eXBlcy5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvZ2V0X3R5 cGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h NWQzNTJkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlw ZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dldF90eXBlcy5zcWwK QEAgLTAsMCArMSwxMCBAQAorU0VMRUNUICogRlJPTQorICAgIChTRUxFQ1Qg Zm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMgdHlwbmFtZSwKKyAgICBDQVNF IFdIRU4gdHlwZWxlbSA+IDAgVEhFTiB0eXBlbGVtIEVMU0UgdC5vaWQgRU5E IEFTIGVsZW1vaWQsCisgICAgdHlwbGVuLCB0eXB0eXBlLCB0Lm9pZCwgbnNw bmFtZSwKKyAgICAoU0VMRUNUIENPVU5UKDEpIEZST00gcGdfdHlwZSB0MiBX SEVSRSB0Mi50eXBuYW1lID0gdC50eXBuYW1lKSA+IDEgQVMgaXNkdXAKK0ZS T00gcGdfdHlwZSB0CisgICBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04gdHlw bmFtZXNwYWNlPW5zcC5vaWQKK1dIRVJFIChOT1QgKHR5cG5hbWUgPSAndW5r bm93bicgQU5EIG5zcG5hbWUgPSAncGdfY2F0YWxvZycpKSBBTkQgdHlwaXNk ZWZpbmVkIEFORCB0eXB0eXBlIElOICgnYicsICdjJywgJ2QnLCAnZScsICdy JylBTkQgTk9UIEVYSVNUUyAoc2VsZWN0IDEgZnJvbSBwZ19jbGFzcyB3aGVy ZSByZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNlIGFuZCByZWxuYW1lID0gdHlw bmFtZSBhbmQgcmVsa2luZCAhPSAnYycpIEFORCAodHlwbmFtZSBub3QgbGlr ZSAnXyUnIE9SIE5PVCBFWElTVFMgKHNlbGVjdCAxIGZyb20gcGdfY2xhc3Mg d2hlcmUgcmVsbmFtZXNwYWNlPXR5cG5hbWVzcGFjZSBhbmQgcmVsbmFtZSA9 IHN1YnN0cmluZyh0eXBuYW1lIGZyb20gMik6Om5hbWUgYW5kIHJlbGtpbmQg IT0gJ2MnKSkgIEFORCBuc3AubnNwbmFtZSAhPSAnaW5mb3JtYXRpb25fc2No ZW1hJworICAgICkgQVMgZHVtbXkKK09SREVSIEJZIG5zcG5hbWUgPD4gJ3Bn X2NhdGFsb2cnLCBuc3BuYW1lIDw+ICdwdWJsaWMnLCBuc3BuYW1lLCAxClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL25v ZGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBl L3NxbC85LjFfcGx1cy9ub2Rlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNmFiY2IxOQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1 cy9ub2Rlcy5zcWwKQEAgLTAsMCArMSwxMCBAQAorU0VMRUNUIHQub2lkLCB0 LnR5cG5hbWUgQVMgbmFtZQorRlJPTSBwZ190eXBlIHQKKyAgICBMRUZUIE9V VEVSIEpPSU4gcGdfdHlwZSBlIE9OIGUub2lkPXQudHlwZWxlbQorICAgIExF RlQgT1VURVIgSk9JTiBwZ19jbGFzcyBjdCBPTiBjdC5vaWQ9dC50eXByZWxp ZCBBTkQgY3QucmVsa2luZCA8PiAnYycKKyAgICBMRUZUIE9VVEVSIEpPSU4g cGdfbmFtZXNwYWNlIG5zcCBPTiBuc3Aub2lkID0gdC50eXBuYW1lc3BhY2UK K1dIRVJFIHQudHlwdHlwZSAhPSAnZCcgQU5EIHQudHlwbmFtZSBOT1QgTElL RSBFJ1xcXyUnIEFORCB0LnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQK K3slIGlmIG5vdCBzaG93X3N5c3RlbV9vYmplY3RzICV9CisgICAgQU5EIGN0 Lm9pZCBpcyBOVUxMCit7JSBlbmRpZiAlfQorT1JERVIgQlkgdC50eXBuYW1l OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1 cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBs YXRlcy90eXBlL3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTI2MWE1Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5 cGUvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMjQg QEAKK1NFTEVDVCB0Lm9pZCwgdC50eXBuYW1lIEFTIG5hbWUsCisgICAgKENB U0UgV0hFTiBDQVNUKGNvYWxlc2NlKHQudHlwY29sbGF0aW9uLCAnMCcpIEFT IGludGVnZXIpID0gMTAwIFRIRU4gdHJ1ZSBFbFNFIGZhbHNlIEVORCkgQVMg aXNfY29sbGF0YWJsZSwKKyAgICB0LnR5cGFjbCBBUyB0eXBlX2FjbCwKKyAg ICB0LiosIGZvcm1hdF90eXBlKHQub2lkLCBudWxsKSBBUyBhbGlhcywKKyAg ICBwZ19nZXRfdXNlcmJ5aWQodC50eXBvd25lcikgYXMgdHlwZW93bmVyLCBl LnR5cG5hbWUgYXMgZWxlbWVudCwKKyAgICBkZXNjcmlwdGlvbiwgY3Qub2lk IEFTIHRhYm9pZCwKKyAgICBuc3AubnNwbmFtZSBBUyBzY2hlbWEsCisgICAg LS1NaW5pbXVtVmVyc2lvbiA5LjEgU1RBUlQKKyAgICAoU0VMRUNUIGFycmF5 X2FnZyhwcm92aWRlciB8fCAnPScgfHwgbGFiZWwpIEZST00gcGdfc2hzZWNs YWJlbCBzbDEgV0hFUkUgc2wxLm9iam9pZD10Lm9pZCkgQVMgc2VjbGFiZWxz LAorICAgIC0tIEVORAorICAgIChDQVNFIFdIRU4gKHQub2lkIDw9IHt7IGRh dGxhc3RzeXNvaWR9fTo6b2lkIE9SIGN0Lm9pZCAhPSAwKSBUSEVOIHRydWUg RWxTRSBmYWxzZSBFTkQpIEFTIGlzX3N5c190eXBlCitGUk9NIHBnX3R5cGUg dAorICAgIExFRlQgT1VURVIgSk9JTiBwZ190eXBlIGUgT04gZS5vaWQ9dC50 eXBlbGVtCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNzIGN0IE9OIGN0 Lm9pZD10LnR5cHJlbGlkIEFORCBjdC5yZWxraW5kIDw+ICdjJworICAgIExF RlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpv aWQ9dC5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfdHlwZSc6OnJlZ2NsYXNz KQorICAgIExFRlQgT1VURVIgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIG5z cC5vaWQgPSB0LnR5cG5hbWVzcGFjZQorV0hFUkUgdC50eXB0eXBlICE9ICdk JyBBTkQgdC50eXBuYW1lIE5PVCBMSUtFIEUnXFxfJScgQU5EIHQudHlwbmFt ZXNwYWNlID0ge3tzY2lkfX06Om9pZAoreyUgaWYgdGlkICV9CisgICAgQU5E IHQub2lkID0ge3t0aWR9fTo6b2lkCit7JSBlbmRpZiAlfQoreyUgaWYgbm90 IHNob3dfc3lzdGVtX29iamVjdHMgJX0KKyAgICBBTkQgY3Qub2lkIGlzIE5V TEwKK3slIGVuZGlmICV9CitPUkRFUiBCWSB0LnR5cG5hbWU7ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL3VwZGF0ZS5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwv OS4xX3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi45Mzk1OTdlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL3Vw ZGF0ZS5zcWwKQEAgLTAsMCArMSwxMjcgQEAKK3slIGltcG9ydCAnbWFjcm9z L3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUg aW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQ UklWSUxFR0UgJX0KK3slIGlmIGRhdGEgJX0KK3sjPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyMgQmVsb3cgd2lsbCBjaGFu Z2Ugb2JqZWN0IG93bmVyICN9Cit7JSBpZiBkYXRhLnR5cGVvd25lciBhbmQg ZGF0YS50eXBlb3duZXIgIT0gb19kYXRhLnR5cGVvd25lciAlfQorQUxURVIg VFlQRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5h bWUpIH19CisgICAgT1dORVIgVE8ge3sgZGF0YS50eXBlb3duZXIgfX07CisK K3slIGVuZGlmICV9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09I30KK3sjIEJlbG93IHdpbGwgY2hhbmdlIG9iamVjdHMgY29t bWVudCAgI30KK3slIGlmIGRhdGEuZGVzY3JpcHRpb24gYW5kIGRhdGEuZGVz Y3JpcHRpb24gIT0gb19kYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5UIE9O IFRZUEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5u YW1lKSB9fQorICAgIElTIHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFs IH19OworCit7JSBlbmRpZiAlfQoreyM9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PSN9Cit7IyMjIFRoZSBzcWwgZ2l2ZW4gYmVsb3cg d2lsbCB1cGRhdGUgY29tcG9zaXRlIHR5cGUgIyMjfQoreyUgaWYgZGF0YS5j b21wb3NpdGUgYW5kIGRhdGEuY29tcG9zaXRlfGxlbmd0aCA+IDAgJX0KK3sl IHNldCBjb21wb3NpdGUgPSBkYXRhLmNvbXBvc2l0ZSAlfQoreyUgaWYgJ2Rl bGV0ZWQnIGluIGNvbXBvc2l0ZSBhbmQgY29tcG9zaXRlLmRlbGV0ZWR8bGVu Z3RoID4gMCAlfQoreyUgZm9yIHIgaW4gY29tcG9zaXRlLmRlbGV0ZWQgJX0K K0FMVEVSIFRZUEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIG9f ZGF0YS5uYW1lKSB9fQorICAgIERST1AgQVRUUklCVVRFIHt7Y29ubnxxdElk ZW50KHIubWVtYmVyX25hbWUpfX07Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm ICV9Cit7JSBpZiAnYWRkZWQnIGluIGNvbXBvc2l0ZSBhbmQgY29tcG9zaXRl LmFkZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIGNvbXBvc2l0ZS5h ZGRlZCAlfQorQUxURVIgVFlQRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLnNj aGVtYSwgb19kYXRhLm5hbWUpIH19CisgICAgQUREIEFUVFJJQlVURSB7e2Nv bm58cXRJZGVudChyLm1lbWJlcl9uYW1lKX19IHt7Y29ubnxxdElkZW50KHIu dHlwZSl9fXslIGlmIHIuaXNfdGxlbmd0aCBhbmQgci50bGVuZ3RoICV9Ciso e3tyLnRsZW5ndGh9fXslIGlmIHIuaXNfcHJlY2lzaW9uIGFuZCByLnByZWNp c2lvbiAlfSx7e3IucHJlY2lzaW9ufX17JSBlbmRpZiAlfSl7JSBlbmRpZiAl fXslIGlmIHIuY29sbGF0aW9uICV9CisgQ09MTEFURSB7e3IuY29sbGF0aW9u fX17JSBlbmRpZiAlfTsKK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sl IGlmICdjaGFuZ2VkJyBpbiBjb21wb3NpdGUgYW5kIGNvbXBvc2l0ZS5jaGFu Z2VkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIGNvbXBvc2l0ZS5jaGFu Z2VkICV9CitBTFRFUiBUWVBFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuc2No ZW1hLCBvX2RhdGEubmFtZSkgfX0KKyAgICBBTFRFUiBBVFRSSUJVVEUge3tj b25ufHF0SWRlbnQoci5tZW1iZXJfbmFtZSl9fSBTRVQgREFUQSBUWVBFIHt7 Y29ubnxxdElkZW50KHIudHlwZSl9fXslIGlmIHIuaXNfdGxlbmd0aCBhbmQg ci50bGVuZ3RoICV9Cisoe3tyLnRsZW5ndGh9fXslIGlmIHIuaXNfcHJlY2lz aW9uIGFuZCByLnByZWNpc2lvbiAlfSx7e3IucHJlY2lzaW9ufX17JSBlbmRp ZiAlfSl7JSBlbmRpZiAlfXslIGlmIHIuY29sbGF0aW9uICV9CisgQ09MTEFU RSB7e3IuY29sbGF0aW9ufX17JSBlbmRpZiAlfTsKK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KKworeyUgZW5kaWYgJX0KK3sjPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyMjIyBUaGUgc3FsIGdpdmVu IGJlbG93IHdpbGwgdXBkYXRlIGVudW0gdHlwZSAjIyN9Cit7JSBpZiBkYXRh LmVudW0gYW5kIGRhdGEuZW51bXxsZW5ndGggPiAwICV9Cit7JSBzZXQgZW51 bSA9IGRhdGEuZW51bSAlfQoreyUgc2V0IG9fZW51bV9sZW4gPSBvX2RhdGEu ZW51bXxsZW5ndGggJX0KK3sjIFdlIG5lZWQgYWN0dWFsIGxpc3QgaW5kZXgg ZnJvbSBsZW5ndGggI30KK3slIHNldCBvX2VudW1fbGVuID0gb19lbnVtX2xl biAtIDEgJX0KK3slIGlmICdhZGRlZCcgaW4gZW51bSBhbmQgZW51bS5hZGRl ZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBlbnVtLmFkZGVkICV9Cit7 JSBzZXQgY19pZHggPSBsb29wLmluZGV4ICV9Cit7JSBpZiBjX2lkeCA9PSAx ICV9Cit7IyBpZiBmaXJzdCBuZXcgZWxlbWVudCB0aGVuIGFkZCBpdCBhZnRl ciBvbGQgZGF0YSBlbnVtIGxpc3QjfQorQUxURVIgVFlQRSB7eyBjb25ufHF0 SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19CisgICAgQURE IFZBTFVFIHt7ci5sYWJlbHxxdExpdGVyYWx9fSBBRlRFUiB7e29fZGF0YS5l bnVtW29fZW51bV9sZW5dLmxhYmVsfHF0TGl0ZXJhbCB9fTsKK3slIGVsc2Ug JX0KK3sjIGlmIGZpcnN0IG5ldyBlbGVtZW50IHRoZW4gYWRkIGl0IGFmdGVy IG5ldyBkYXRhIGVudW0gbGlzdCN9Cit7JSBzZXQgcF9pZHggPSBsb29wLmlu ZGV4IC0gMiAlfQorQUxURVIgVFlQRSB7eyBjb25ufHF0SWRlbnQob19kYXRh LnNjaGVtYSwgb19kYXRhLm5hbWUpIH19CisgICAgQUREIFZBTFVFIHt7ci5s YWJlbHxxdExpdGVyYWx9fSBBRlRFUiB7e2VudW0uYWRkZWRbcF9pZHhdLmxh YmVsfHF0TGl0ZXJhbH19OworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KKworeyUgZW5kaWYgJX0KK3sjPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyMgVGhlIFNRTCBnZW5lcmF0 ZWQgYmVsb3cgd2lsbCBjaGFuZ2UgU2VjdXJpdHkgTGFiZWwgI30KK3slIGlm IGRhdGEuc2VjbGFiZWxzIGFuZCBkYXRhLnNlY2xhYmVsc3xsZW5ndGggPiAw ICV9Cit7JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNsYWJlbHMgJX0KK3sl IGlmICdkZWxldGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5kZWxl dGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5kZWxl dGVkICV9Cit7eyBTRUNMQUJMRS5VTlNFVChjb25uLCAnVFlQRScsIG9fZGF0 YS5uYW1lLCByLnByb3ZpZGVyLCBvX2RhdGEuc2NoZW1hKSB9fQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJl bHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3Ig ciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KK3t7IFNFQ0xBQkxFLlNFVChjb25u LCAnVFlQRScsIG9fZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5 X2xhYmVsLCBvX2RhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBl bmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2Vj bGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2Vj bGFiZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkxFLlNFVChjb25uLCAnVFlQ RScsIG9fZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVs LCBvX2RhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAl fQorCit7JSBlbmRpZiAlfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSN9Cit7IyBDaGFuZ2UgdGhlIHByaXZpbGVnZXMgI30K K3slIGlmIGRhdGEudHlwYWNsIGFuZCBkYXRhLnR5cGFjbHxsZW5ndGggPiAw ICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS50eXBhY2wgJX0KK3slIGZv ciBwcml2IGluIGRhdGEudHlwYWNsLmRlbGV0ZWQgJX0KK3t7IFBSSVZJTEVH RS5VTlNFVEFMTChjb25uLCAnVFlQRScsIHByaXYuZ3JhbnRlZSwgb19kYXRh Lm5hbWUsIG9fZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gZGF0YS50eXBhY2wgJX0KK3sl IGZvciBwcml2IGluIGRhdGEudHlwYWNsLmNoYW5nZWQgJX0KK3t7IFBSSVZJ TEVHRS5VTlNFVEFMTChjb25uLCAnVFlQRScsIHByaXYuZ3JhbnRlZSwgb19k YXRhLm5hbWUsIG9fZGF0YS5zY2hlbWEpIH19Cit7eyBQUklWSUxFR0UuU0VU KGNvbm4sICdUWVBFJywgcHJpdi5ncmFudGVlLCBuYW1lLCBwcml2LndpdGhv dXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgb19kYXRhLnNjaGVtYSkgfX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4g ZGF0YS50eXBhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEudHlwYWNsLmFk ZGVkICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUWVBFJywgcHJpdi5n cmFudGVlLCBuYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9n cmFudCwgb19kYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgJX0KK3slIGVuZGlmICV9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09I30KK3sjIEJlbG93IHdpbGwgY2hhbmdlIG9iamVj dCBuYW1lICN9Cit7JSBpZiBkYXRhLm5hbWUgYW5kIGRhdGEubmFtZSAhPSBv X2RhdGEubmFtZSAlfQorQUxURVIgVFlQRSB7eyBjb25ufHF0SWRlbnQob19k YXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19CisgICAgUkVOQU1FIFRPIHt7 IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19OworCit7JSBlbmRpZiAlfQor eyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7 IyBCZWxvdyB3aWxsIGNoYW5nZSB0aGUgc2NoZW1hIGZvciBvYmplY3QgI30K K3sjIHdpdGggZXh0cmEgaWYgY29uZGl0aW9uIHdlIHdpbGwgYWxzbyBtYWtl IHN1cmUgdGhhdCBvYmplY3QgaGFzIGNvcnJlY3QgbmFtZSAjfQoreyUgaWYg ZGF0YS5zY2hlbWEgYW5kIGRhdGEuc2NoZW1hICE9IG9fZGF0YS5zY2hlbWEg JX0KK0FMVEVSIFRZUEUgeyUgaWYgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1l ICV9e3sgY29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkg fX0KK3slIGVsc2UgJX17eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwg b19kYXRhLm5hbWUpIH19eyUgZW5kaWYgJX0KKyAgICBTRVQgU0NIRU1BIHt7 IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSkgfX07CisKK3slIGVuZGlmICV9 Cit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBl L3NxbC9wb3N0Z3Jlc19pbmJ1aXRfdHlwZXMudHh0IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3Bvc3RncmVzX2luYnVpdF90 eXBlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NjMxMDM3ZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5 cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wb3N0Z3Jlc19pbmJ1aXRfdHlwZXMu dHh0CkBAIC0wLDAgKzEsNTMgQEAKKyIiIgorSGVyZSBpcyB0aGUgbGlzdCBv ZiBQb3N0Z3JlcyBpbmJ1aWx0IHR5cGVzICYgdGhlaXIgT0lEJ3MKK1dlIHdp bGwgdXNlIHRoZXNlIHR5cGVzIHRvIGNoZWNrIGZvciB2YWxpZGF0aW9ucwor CisjIyAgUEdPSURfVFlQRV9TRVJJQUwgICAgICAgICAgICAgICAgICAgLTQy TAorIyMgIFBHT0lEX1RZUEVfU0VSSUFMOCAgICAgICAgICAgICAgICAgIC00 M0wKKyMjICBQR09JRF9UWVBFX1NFUklBTDIgICAgICAgICAgICAgICAgICAt NDRMCisjIyAgUEdPSURfVFlQRV9CT09MICAgICAgICAgICAgICAgICAgICAg MTZMCisjIyAgUEdPSURfVFlQRV9CWVRFQSAgICAgICAgICAgICAgICAgICAg MTdMCisjIyAgUEdPSURfVFlQRV9DSEFSICAgICAgICAgICAgICAgICAgICAg MThMCisjIyAgUEdPSURfVFlQRV9OQU1FICAgICAgICAgICAgICAgICAgICAg MTlMCisjIyAgUEdPSURfVFlQRV9JTlQ4ICAgICAgICAgICAgICAgICAgICAg MjBMCisjIyAgUEdPSURfVFlQRV9JTlQyICAgICAgICAgICAgICAgICAgICAg MjFMCisjIyAgUEdPSURfVFlQRV9JTlQ0ICAgICAgICAgICAgICAgICAgICAg MjNMCisjIyAgUEdPSURfVFlQRV9URVhUICAgICAgICAgICAgICAgICAgICAg MjVMCisjIyAgUEdPSURfVFlQRV9PSUQgICAgICAgICAgICAgICAgICAgICAg MjZMCisjIyAgUEdPSURfVFlQRV9USUQgICAgICAgICAgICAgICAgICAgICAg MjdMCisjIyAgUEdPSURfVFlQRV9YSUQgICAgICAgICAgICAgICAgICAgICAg MjhMCisjIyAgUEdPSURfVFlQRV9DSUQgICAgICAgICAgICAgICAgICAgICAg MjlMCisjIyAgUEdPSURfVFlQRV9GTE9BVDQgICAgICAgICAgICAgICAgICAg NzAwTAorIyMgIFBHT0lEX1RZUEVfRkxPQVQ4ICAgICAgICAgICAgICAgICAg IDcwMUwKKyMjICBQR09JRF9UWVBFX01PTkVZICAgICAgICAgICAgICAgICAg ICA3OTBMCisjIyAgUEdPSURfVFlQRV9DSEFSX0FSUkFZICAgICAgICAgICAg ICAgMTAwMkwKKyMjICBQR09JRF9UWVBFX1RFWFRfQVJSQVkgICAgICAgICAg ICAgICAxMDA5TAorIyMgIFBHT0lEX1RZUEVfQlBDSEFSX0FSUkFZICAgICAg ICAgICAgIDEwMTRMCisjIyAgUEdPSURfVFlQRV9WQVJDSEFSX0FSUkFZICAg ICAgICAgICAgMTAxNUwKKyMjICBQR09JRF9UWVBFX0JQQ0hBUiAgICAgICAg ICAgICAgICAgICAxMDQyTAorIyMgIFBHT0lEX1RZUEVfVkFSQ0hBUiAgICAg ICAgICAgICAgICAgIDEwNDNMCisjIyAgUEdPSURfVFlQRV9EQVRFICAgICAg ICAgICAgICAgICAgICAgMTA4MkwKKyMjICBQR09JRF9UWVBFX1RJTUUgICAg ICAgICAgICAgICAgICAgICAxMDgzTAorIyMgIFBHT0lEX1RZUEVfVElNRVNU QU1QICAgICAgICAgICAgICAgIDExMTRMCisjIyAgUEdPSURfVFlQRV9USU1F U1RBTVBfQVJSQVkgICAgICAgICAgMTExNUwKKyMjICBQR09JRF9UWVBFX1RJ TUVfQVJSQVkgICAgICAgICAgICAgICAxMTgzTAorIyMgIFBHT0lEX1RZUEVf VElNRVNUQU1QVFogICAgICAgICAgICAgIDExODRMCisjIyAgUEdPSURfVFlQ RV9USU1FU1RBTVBUWl9BUlJBWSAgICAgICAgMTE4NUwKKyMjICBQR09JRF9U WVBFX0lOVEVSVkFMICAgICAgICAgICAgICAgICAxMTg2TAorIyMgIFBHT0lE X1RZUEVfSU5URVJWQUxfQVJSQVkgICAgICAgICAgIDExODdMCisjIyAgUEdP SURfVFlQRV9OVU1FUklDX0FSUkFZICAgICAgICAgICAgMTIzMUwKKyMjICBQ R09JRF9UWVBFX1RJTUVUWiAgICAgICAgICAgICAgICAgICAxMjY2TAorIyMg IFBHT0lEX1RZUEVfVElNRVRaX0FSUkFZICAgICAgICAgICAgIDEyNzBMCisj IyAgUEdPSURfVFlQRV9CSVQgICAgICAgICAgICAgICAgICAgICAgMTU2MEwK KyMjICBQR09JRF9UWVBFX0JJVF9BUlJBWSAgICAgICAgICAgICAgICAxNTYx TAorIyMgIFBHT0lEX1RZUEVfVkFSQklUICAgICAgICAgICAgICAgICAgIDE1 NjJMCisjIyAgUEdPSURfVFlQRV9WQVJCSVRfQVJSQVkgICAgICAgICAgICAg MTU2M0wKKyMjICBQR09JRF9UWVBFX05VTUVSSUMgICAgICAgICAgICAgICAg ICAxNzAwTAorIyMgIFBHT0lEX1RZUEVfQ1NUUklORyAgICAgICAgICAgICAg ICAgIDIyNzVMCisjIyAgUEdPSURfVFlQRV9BTlkgICAgICAgICAgICAgICAg ICAgICAgMjI3NkwKKyMjICBQR09JRF9UWVBFX1ZPSUQgICAgICAgICAgICAg ICAgICAgICAyMjc4TAorIyMgIFBHT0lEX1RZUEVfVFJJR0dFUiAgICAgICAg ICAgICAgICAgIDIyNzlMCisjIyAgUEdPSURfVFlQRV9MQU5HVUFHRV9IQU5E TEVSICAgICAgICAgMjI4MEwKKyMjICBQR09JRF9UWVBFX0lOVEVSTkFMICAg ICAgICAgICAgICAgICAyMjgxTAorIyMgIFBHT0lEX1RZUEVfSEFORExFUiAg ICAgICAgICAgICAgICAgIDMxMTVMCisiIiIKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90 ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9hY2wuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvYWNsLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmRhNTAw Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVt cGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvYWNsLnNxbApAQCAtMCwwICsxLDI2 IEBACitTRUxFQ1QgJ3R5cGFjbCcgYXMgZGVmdHlwZSwgQ09BTEVTQ0UoZ3Qu cm9sbmFtZSwgJ3B1YmxpYycpIGdyYW50ZWUsIGcucm9sbmFtZSBncmFudG9y LCBhcnJheV9hZ2cocHJpdmlsZWdlX3R5cGUpIGFzIHByaXZpbGVnZXMsIGFy cmF5X2FnZyhpc19ncmFudGFibGUpIGFzIGdyYW50YWJsZQorRlJPTQorICAo U0VMRUNUCisgICAgZC5ncmFudGVlLCBkLmdyYW50b3IsIGQuaXNfZ3JhbnRh YmxlLAorICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorICAgIFdIRU4gJ1VT QUdFJyBUSEVOICdVJworICAgIEVMU0UgJ1VOS05PV04nCisgICAgRU5EIEFT IHByaXZpbGVnZV90eXBlCisgIEZST00KKyAgICAoU0VMRUNUIHQudHlwYWNs CisgICAgIEZST00gcGdfdHlwZSB0CisgICAgICAgICBMRUZUIE9VVEVSIEpP SU4gcGdfdHlwZSBlIE9OIGUub2lkPXQudHlwZWxlbQorICAgICAgICAgTEVG VCBPVVRFUiBKT0lOIHBnX2NsYXNzIGN0IE9OIGN0Lm9pZD10LnR5cHJlbGlk IEFORCBjdC5yZWxraW5kIDw+ICdjJworICAgICAgICAgTEVGVCBPVVRFUiBK T0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD10Lm9pZCBB TkQgZGVzLmNsYXNzb2lkPSdwZ190eXBlJzo6cmVnY2xhc3MpCisgICAgIFdI RVJFIHQudHlwdHlwZSAhPSAnZCcgQU5EIHQudHlwbmFtZSBOT1QgTElLRSBF J1xcXyUnIEFORCB0LnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK3sl IGlmIHRpZCAlfQorICAgICAgICBBTkQgdC5vaWQgPSB7e3RpZH19OjpvaWQK K3slIGVuZGlmICV9CisgICAgKSBhY2wsCisgICAgKFNFTEVDVCAoZCkuZ3Jh bnRlZSBBUyBncmFudGVlLCAoZCkuZ3JhbnRvciBBUyBncmFudG9yLCAoZCku aXNfZ3JhbnRhYmxlCisgICAgICAgIEFTIGlzX2dyYW50YWJsZSwgKGQpLnBy aXZpbGVnZV90eXBlIEFTIHByaXZpbGVnZV90eXBlIEZST00gKFNFTEVDVAor ICAgICAgICBhY2xleHBsb2RlKHQudHlwYWNsKSBhcyBkIEZST00gcGdfdHlw ZSB0IFdIRVJFIHQub2lkID0ge3t0aWR9fTo6b2lkKSBhKSBkCisgICAgKSBk CisgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGcgT04gKGQuZ3Jh bnRvciA9IGcub2lkKQorICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xl cyBndCBPTiAoZC5ncmFudGVlID0gZ3Qub2lkKQorR1JPVVAgQlkgZy5yb2xu YW1lLCBndC5yb2xuYW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5 cGUvc3FsL3ByZV85LjEvYWRkaXRpb25hbF9wcm9wZXJ0aWVzLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4x L2FkZGl0aW9uYWxfcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMDQwNmFmZAotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVf OS4xL2FkZGl0aW9uYWxfcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSw0MCBA QAoreyMgVGhlIFNRTCBnaXZlbiBiZWxvdyB3aWxsIGZldGNoIGNvbXBvc2l0 ZSB0eXBlI30KK3slIGlmIHR5cGUgPT0gJ2MnICV9CitTRUxFQ1QgYXR0bmFt ZSwgZm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMgdHlwbmFtZSwgYXR0bmRp bXMsIGF0dHR5cG1vZCwgbnNwLm5zcG5hbWUsCisgICAgKFNFTEVDVCBDT1VO VCgxKSBmcm9tIHBnX3R5cGUgdDIgV0hFUkUgdDIudHlwbmFtZT10LnR5cG5h bWUpID4gMSBBUyBpc2R1cAorLS0gTWluIDkuMSBzdGFydAorICAgICxjb2xs bmFtZSwgbnNwYy5uc3BuYW1lIGFzIGNvbGxuc3BuYW1lCistLSBFbmQKKyAg ICAsIGF0dC5hdHRyZWxpZAorRlJPTSBwZ19hdHRyaWJ1dGUgYXR0CisgICAg Sk9JTiBwZ190eXBlIHQgT04gdC5vaWQ9YXR0dHlwaWQKKyAgICBKT0lOIHBn X25hbWVzcGFjZSBuc3AgT04gdC50eXBuYW1lc3BhY2U9bnNwLm9pZAorICAg IExFRlQgT1VURVIgSk9JTiBwZ190eXBlIGIgT04gdC50eXBlbGVtPWIub2lk CistLSBNaW4gOS4xIHN0YXJ0CisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2Nv bGxhdGlvbiBjIE9OIGF0dC5hdHRjb2xsYXRpb249Yy5vaWQKKyAgICBMRUZU IE9VVEVSIEpPSU4gcGdfbmFtZXNwYWNlIG5zcGMgT04gYy5jb2xsbmFtZXNw YWNlPW5zcGMub2lkCistLSBFbmQKK1dIRVJFIGF0dC5hdHRyZWxpZCA9IHt7 dHlwcmVsaWR9fTo6b2lkCitPUkRFUiBieSBhdHRudW07Cit7JSBlbmRpZiAl fQoreyMgVGhlIFNRTCBnaXZlbiBiZWxvdyB3aWxsIGZldGNoIGVudW0gdHlw ZSN9Cit7JSBpZiB0eXBlID09ICdlJyAlfQorU0VMRUNUIGVudW1sYWJlbCBG Uk9NIHBnX2VudW0gV0hFUkUgZW51bXR5cGlkPXt7dGlkfX06Om9pZAorLS0g TWluIDkuMQorT1JERVIgYnkgZW51bXNvcnRvcmRlcgorLS1FbmQKKy0tIGVs c2UKKy0tIE9SREVSIGJ5IG9pZAoreyUgZW5kaWYgJX0KK3sjIFRoZSBTUUwg Z2l2ZW4gYmVsb3cgd2lsbCBmZXRjaCByYW5nZSB0eXBlI30KK3slIGlmIHR5 cGUgPT0gJ3InICV9CitTRUxFQ1Qgcm5nc3VidHlwZSwgc3QudHlwbmFtZSwK KyAgICBybmdjb2xsYXRpb24sIGNvbC5jb2xsbmFtZSwKKyAgICBybmdzdWJv cGMsIG9wYy5vcGNuYW1lLAorICAgIHJuZ2Nhbm9uaWNhbCwgcm5nc3ViZGlm ZgorRlJPTSBwZ19yYW5nZQorICAgTEVGVCBKT0lOIHBnX3R5cGUgc3QgT04g c3Qub2lkPXJuZ3N1YnR5cGUKKyAgIExFRlQgSk9JTiBwZ19jb2xsYXRpb24g Y29sIE9OIGNvbC5vaWQ9cm5nY29sbGF0aW9uCisgICBMRUZUIEpPSU4gcGdf b3BjbGFzcyBvcGMgT04gb3BjLm9pZD1ybmdzdWJvcGMKK1dIRVJFIHJuZ3R5 cGlkPXt7dGlkfX06Om9pZDsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzku MS9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVz L3R5cGUvc3FsL3ByZV85LjEvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5kY2I2NDUxCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3By ZV85LjEvY3JlYXRlLnNxbApAQCAtMCwwICsxLDY5IEBACit7JSBpbXBvcnQg J21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBSSVZJTEVH RSAlfQoreyMjIyAgQ29tcG9zaXRlIFR5cGUgIyMjfQoreyUgaWYgZGF0YSBh bmQgZGF0YS50eXB0eXBlID09ICdjJyAlfQorQ1JFQVRFIFRZUEUgeyUgaWYg ZGF0YS5zY2hlbWEgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRh dGEubmFtZSkgfX17JSBlbHNlICV9e3sgY29ubnxxdElkZW50KGRhdGEubmFt ZSkgfX17JSBlbmRpZiAlfSBBUworICAgICh7JSBpZiBkYXRhLmNvbXBvc2l0 ZSAlfXslIGZvciBkIGluIGRhdGEuY29tcG9zaXRlICV9eyUgaWYgbG9vcC5p bmRleCAhPSAxICV9LCB7JSBlbmRpZiAlfXt7IGNvbm58cXRJZGVudChkLm1l bWJlcl9uYW1lKSB9fSB7eyBkLnR5cGUgfX17JSBpZiBkLmlzX3RsZW5ndGgg YW5kIGQudGxlbmd0aCAlfSh7e2QudGxlbmd0aH19eyUgaWYgZC5pc19wcmVj aXNpb24gYW5kIGQucHJlY2lzaW9uICV9LHt7ZC5wcmVjaXNpb259fXslIGVu ZGlmICV9KXslIGVuZGlmICV9eyUgaWYgZC5jb2xsYXRpb24gJX0gQ09MTEFU RSB7e2QuY29sbGF0aW9ufX17JSBlbmRpZiAlfXslIGVuZGZvciAlfXslIGVu ZGlmICV9KTsKK3slIGVuZGlmICV9Cit7IyMjICBFbnVtIFR5cGUgIyMjfQor eyUgaWYgZGF0YSBhbmQgZGF0YS50eXB0eXBlID09ICdlJyAlfQorQ1JFQVRF IFRZUEUgeyUgaWYgZGF0YS5zY2hlbWEgJX17eyBjb25ufHF0SWRlbnQoZGF0 YS5zY2hlbWEsIGRhdGEubmFtZSkgfX17JSBlbHNlICV9e3sgY29ubnxxdElk ZW50KGRhdGEubmFtZSkgfX17JSBlbmRpZiAlfSBBUyBFTlVNCisgICAgKHsl IGZvciBlIGluIGRhdGEuZW51bSAlfXslIGlmIGxvb3AuaW5kZXggIT0gMSAl fSwgeyUgZW5kaWYgJX17eyBlLmxhYmVsfHF0TGl0ZXJhbCB9fXslIGVuZGZv ciAlfSk7Cit7JSBlbmRpZiAlfQoreyMjIyAgUmFuZ2UgVHlwZSAjIyN9Cit7 IyMjICBSYW5nZSBUeXBlICMjI30KK3slIGlmIGRhdGEgYW5kIGRhdGEudHlw dHlwZSA9PSAncicgJX0KK0NSRUFURSBUWVBFIHslIGlmIGRhdGEuc2NoZW1h ICV9e3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19 eyUgZWxzZSAlfXt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19eyUgZW5k aWYgJX0gQVMgUkFOR0UKKyAgICAoCisgICAgIHslIGlmIGRhdGEudHlwbmFt ZSAlfVNVQlRZUEU9e3sgY29ubnxxdFR5cGVJZGVudChkYXRhLnR5cG5hbWUp IH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLmNvbGxuYW1lICV9LAorICAgICBD T0xMQVRJT04gPSB7eyBkYXRhLmNvbGxuYW1lIH19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLm9wY25hbWUgICV9LAorICAgICBTVUJUWVBFX09QQ0xBU1MgPSB7 eyBkYXRhLm9wY25hbWUgfX17JSBlbmRpZiAlfXslIGlmIGRhdGEucm5nY2Fu b25pY2FsICV9LAorICAgICBDQU5PTklDQUwgPSB7eyBkYXRhLnJuZ2Nhbm9u aWNhbCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5ybmdzdWJkaWZmICV9LAor ICAgICBTVUJUWVBFX0RJRkYgPSB7eyBkYXRhLnJuZ3N1YmRpZmYgfX17JSBl bmRpZiAlfQorCisgICAgKTsKK3slIGVuZGlmICV9Cit7IyMjICBFeHRlcm5h bCBUeXBlICMjI30KK3slIGlmIGRhdGEgYW5kIGRhdGEudHlwdHlwZSA9PSAn eCcgJX0KK0NSRUFURSBUWVBFIHslIGlmIGRhdGEuc2NoZW1hICV9e3sgY29u bnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19eyUgZWxzZSAl fXt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19eyUgZW5kaWYgJX0gQVMK KyAgICAoCisgICAgIHslIGlmIGRhdGEudHlwaW5wdXQgJX1JTlBVVCA9IHt7 ZGF0YS50eXBpbnB1dH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cG91dHB1 dCAlfSwKKyAgICAgT1VUUFVUID0ge3sgZGF0YS50eXBvdXRwdXQgfX17JSBl bmRpZiAlfXslIGlmIGRhdGEudHlwcmVjZWl2ZSAlfSwKKyAgICAgUkVDRUlW RSA9IHt7ZGF0YS50eXByZWNlaXZlfX17JSBlbmRpZiAlfXslIGlmIGRhdGEu dHlwbmFtZSAlfSwKKyAgICAgU0VORCA9IHt7ZGF0YS50eXBzZW5kfX17JSBl bmRpZiAlfXslIGlmIGRhdGEudHlwbW9kaW4gJX0sCisgICAgIFRZUE1PRF9J TiA9IHt7ZGF0YS50eXBtb2Rpbn19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5 cG1vZG91dCAlfSwKKyAgICAgVFlQTU9EX09VVCA9IHt7ZGF0YS50eXBtb2Rv dXR9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBhbmFseXplICV9LAorICAg ICBBTkFMWVpFID0ge3tkYXRhLnR5cGFuYWx5emV9fXslIGVuZGlmICV9eyUg aWYgZGF0YS50eXBsZW4gJX0sCisgICAgIElOVEVSTkFMTEVOR1RIID0ge3tk YXRhLnR5cGxlbn19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cGJ5dmFsICV9 LAorICAgICBQQVNTRURCWVZBTFVFeyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5 cGFsaWduICV9LAorICAgICBBTElHTk1FTlQgPSAge3tkYXRhLnR5cGFsaWdu fX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwc3RvcmFnZSAlfSwKKyAgICAg U1RPUkFHRSA9ICB7e2RhdGEudHlwc3RvcmFnZX19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLnR5cGNhdGVnb3J5ICV9LAorICAgICBDQVRFR09SWSA9IHt7ZGF0 YS50eXBjYXRlZ29yeX19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cGlzcHJl ZmVycmVkICV9LAorICAgICBQUkVGRVJSRUQgPSAge3tkYXRhLnR5cGlzcHJl ZmVycmVkfX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwZGVmYXVsdCAlfSwK KyAgICAgREVGQVVMVCA9IHt7ZGF0YS50eXBkZWZhdWx0fX17JSBlbmRpZiAl fXslIGlmIGRhdGEuZWxlbWVudCAlfSwKKyAgICAgRUxFTUVOVCA9IHt7ZGF0 YS5lbGVtZW50fX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwZGVsaW0gJX0s CisgICAgIERFTElNSVRFUiA9IHt7ZGF0YS50eXBkZWxpbXxxdExpdGVyYWx9 fXslIGVuZGlmICV9eyUgaWYgZGF0YS5pc19jb2xsYXRhYmxlICV9LAorICAg ICBDT0xMQVRBQkxFID0ge3tkYXRhLmlzX2NvbGxhdGFibGV9fXslIGVuZGlm ICV9CisKKyAgICApOworeyUgZW5kaWYgJX0KK3sjIyMgIFR5cGUgT3duZXIg IyMjfQoreyUgaWYgZGF0YSBhbmQgZGF0YS50eXBlb3duZXIgJX0KKworQUxU RVIgVFlQRSB7JSBpZiBkYXRhLnNjaGVtYSAlfXt7IGNvbm58cXRJZGVudChk YXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fXslIGVsc2UgJX17eyBjb25ufHF0 SWRlbnQoZGF0YS5uYW1lKSB9fXslIGVuZGlmICV9CisKKyAgICBPV05FUiBU TyB7e2RhdGEudHlwZW93bmVyfX07Cit7JSBlbmRpZiAlfQoreyMjIyAgVHlw ZSBDb21tZW50cyAjIyN9Cit7JSBpZiBkYXRhIGFuZCBkYXRhLmRlc2NyaXB0 aW9uICV9CisKK0NPTU1FTlQgT04gVFlQRSB7JSBpZiBkYXRhLnNjaGVtYSAl fXt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fXsl IGVsc2UgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fXslIGVuZGlm ICV9CisKKyAgICBJUyB7e2RhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsfX07 Cit7JSBlbmRpZiAlfQoreyMjIyAgQUNMICMjI30KK3slIGlmIGRhdGEudHlw YWNsICV9CisKK3slIGZvciBwcml2IGluIGRhdGEudHlwYWNsICV9Cit7eyBQ UklWSUxFR0UuU0VUKGNvbm4sICdUWVBFJywgcHJpdi5ncmFudGVlLCBkYXRh Lm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBk YXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9kZWxl dGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUv c3FsL3ByZV85LjEvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5jMjU4ODI3Ci0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEv ZGVsZXRlLnNxbApAQCAtMCwwICsxIEBACitEUk9QIFRZUEUge3sgY29ubnxx dElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19eyUgaWYgY2FzY2Fk ZSV9IENBU0NBREV7JSBlbmRpZiAlfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1w bGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9nZXRfY29sbGF0aW9ucy5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzku MS9nZXRfY29sbGF0aW9ucy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNGIwMTY5YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4xL2dl dF9jb2xsYXRpb25zLnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVDVCAtLW5z cG5hbWUsIGNvbGxuYW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFt ZSkgPiAwIEFORCBsZW5ndGgoY29sbG5hbWUpID4gMCAgVEhFTgorICAgICAg ICBjb25jYXQocXVvdGVfaWRlbnQobnNwbmFtZSksICcuJywgcXVvdGVfaWRl bnQoY29sbG5hbWUpKQorICAgIEVMU0UgJycgRU5EIEFTIGNvbGxhdGlvbgor RlJPTSBwZ19jb2xsYXRpb24gYywgcGdfbmFtZXNwYWNlIG4KK1dIRVJFIGMu Y29sbG5hbWVzcGFjZT1uLm9pZAorT1JERVIgQlkgbnNwbmFtZSwgY29sbG5h bWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85 LjEvZ2V0X2V4dGVybmFsX2Z1bmN0aW9ucy5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9nZXRfZXh0ZXJu YWxfZnVuY3Rpb25zLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi41M2MzYzg1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvZ2V0X2V4 dGVybmFsX2Z1bmN0aW9ucy5zcWwKQEAgLTAsMCArMSw0MCBAQAoreyMjIyBJ bnB1dC9PdXRwdXQvU2VuZC9SZWNlaXZlL0FuYWx5emUgZnVuY3Rpb24gbGlz dCBhbHNvIGFwcGVuZCBpbnRvIFR5cE1vZGVJTi9UeXBNb2RPVVQgIyMjfQor eyUgaWYgZXh0ZnVuYyAlfQorU0VMRUNUIHByb25hbWUsIG5zcG5hbWUsCisg ICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChw cm9uYW1lKSA+IDAgIFRIRU4KKyAgICAgICAgY29uY2F0KHF1b3RlX2lkZW50 KG5zcG5hbWUpLCAnLicsIHF1b3RlX2lkZW50KHByb25hbWUpKQorICAgIEVM U0UgJycgRU5EIEFTIGZ1bmMKK0ZST00gKAorIFNFTEVDVCBwcm9uYW1lLCBu c3BuYW1lLCBtYXgocHJvYXJndHlwZXNbMF0pIEFTIGFyZzAsIG1heChwcm9h cmd0eXBlc1sxXSkgQVMgYXJnMQorRlJPTSBwZ19wcm9jIHAKKyBKT0lOIHBn X25hbWVzcGFjZSBuIE9OIG4ub2lkPXByb25hbWVzcGFjZQorR1JPVVAgQlkg cHJvbmFtZSwgbnNwbmFtZQorIEhBVklORyBjb3VudChwcm9uYW1lKSA9IDEg ICApIEFTIHVuaXF1ZWZ1bmMKKyBXSEVSRSBhcmcwIDw+IDAgQU5EIGFyZzEg PSAwOworeyUgZW5kaWYgJX0KK3sjIyMgVHlwbW9kSU4gbGlzdCAjIyN9Cit7 JSBpZiB0eXBlbW9kaW4gJX0KK1NFTEVDVCBwcm9uYW1lLCBuc3BuYW1lLAor ICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBsZW5ndGgo cHJvbmFtZSkgPiAwICBUSEVOCisgICAgICAgIGNvbmNhdChxdW90ZV9pZGVu dChuc3BuYW1lKSwgJy4nLCBxdW90ZV9pZGVudChwcm9uYW1lKSkKKyAgICBF TFNFICcnIEVORCBBUyBmdW5jCitGUk9NIHBnX3Byb2MgcAorICAgIEpPSU4g cGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9cHJvbmFtZXNwYWNlCitXSEVSRSBw cm9yZXR0eXBlPShTRUxFQ1Qgb2lkIEZST00gcGdfdHlwZSBXSEVSRSB0eXBu YW1lPSdpbnQ0JykKKyAgICBBTkQgcHJvYXJndHlwZXNbMF09KFNFTEVDVCBv aWQgRlJPTSBwZ190eXBlIFdIRVJFIHR5cG5hbWU9J19jc3RyaW5nJykKKyAg ICBBTkQgcHJvYXJndHlwZXNbMV0gSVMgTlVMTAorT1JERVIgQlkgbnNwbmFt ZSwgcHJvbmFtZTsKK3slIGVuZGlmICV9Cit7IyMjIFR5cG1vZE9VVCBsaXN0 ICMjI30KK3slIGlmIHR5cGVtb2RvdXQgJX0KK1NFTEVDVCBwcm9uYW1lLCBu c3BuYW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFO RCBsZW5ndGgocHJvbmFtZSkgPiAwICBUSEVOCisgICAgICAgIGNvbmNhdChx dW90ZV9pZGVudChuc3BuYW1lKSwgJy4nLCBxdW90ZV9pZGVudChwcm9uYW1l KSkKKyAgICBFTFNFICcnIEVORCBBUyBmdW5jCitGUk9NIHBnX3Byb2MgcAor ICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9cHJvbmFtZXNwYWNl CitXSEVSRSBwcm9yZXR0eXBlPShTRUxFQ1Qgb2lkIEZST00gcGdfdHlwZSBX SEVSRSB0eXBuYW1lPSdjc3RyaW5nJykKKyAgICBBTkQgcHJvYXJndHlwZXNb MF09KFNFTEVDVCBvaWQgRlJPTSBwZ190eXBlIFdIRVJFIHR5cG5hbWU9J2lu dDQnKQorICAgIEFORCBwcm9hcmd0eXBlc1sxXSBJUyBOVUxMCitPUkRFUiBC WSBuc3BuYW1lLCBwcm9uYW1lOworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVf OS4xL2dldF9vaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxh dGVzL3R5cGUvc3FsL3ByZV85LjEvZ2V0X29pZC5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIxOWIyYQotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3Nx bC9wcmVfOS4xL2dldF9vaWQuc3FsCkBAIC0wLDAgKzEsMTEgQEAKK3sjIEJl bG93IHdpbGwgcHJvdmlkZSBvaWQgZm9yIG5ld2x5IGNyZWF0ZWQgdHlwZSAj fQorU0VMRUNUIHQub2lkCitGUk9NIHBnX3R5cGUgdAorICAgIExFRlQgT1VU RVIgSk9JTiBwZ190eXBlIGUgT04gZS5vaWQ9dC50eXBlbGVtCisgICAgTEVG VCBPVVRFUiBKT0lOIHBnX2NsYXNzIGN0IE9OIGN0Lm9pZD10LnR5cHJlbGlk IEFORCBjdC5yZWxraW5kIDw+ICdjJworICAgIExFRlQgT1VURVIgSk9JTiBw Z19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9dC5vaWQgQU5EIGRl cy5jbGFzc29pZD0ncGdfdHlwZSc6OnJlZ2NsYXNzKQorV0hFUkUgdC50eXB0 eXBlICE9ICdkJyBBTkQgdC50eXBuYW1lIE5PVCBMSUtFIEUnXFxfJScgQU5E IHQudHlwbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAoreyUgaWYgZGF0YSAl fQorICAgIEFORCAgdC50eXBuYW1lID0ge3tkYXRhLm5hbWV8cXRMaXRlcmFs fX0KK3slIGVuZGlmICV9CitPUkRFUiBCWSB0LnR5cG5hbWU7ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvZ2V0X3NjaGVt YXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUv c3FsL3ByZV85LjEvZ2V0X3NjaGVtYXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmEzOGRiNjAKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJl XzkuMS9nZXRfc2NoZW1hcy5zcWwKQEAgLTAsMCArMSwyNSBAQAorU0VMRUNU CisgICAgbnNwLm5zcG5hbWUKK0ZST00KKyAgICBwZ19uYW1lc3BhY2UgbnNw CisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAo ZGVzLm9iam9pZD1uc3Aub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX25hbWVz cGFjZSc6OnJlZ2NsYXNzKQorICAgIExFRlQgT1VURVIgSk9JTiBwZ19jYXRh bG9nLnBnX2RlZmF1bHRfYWNsIGRhY2wgT04gKGRhY2wuZGVmYWNsbmFtZXNw YWNlID0gbnNwLm9pZCkKK1dIRVJFCisgICAgTk9UICgobnNwbmFtZSA9ICdw Z19jYXRhbG9nJyBBTkQgRVhJU1RTCisgICAgICAgIChTRUxFQ1QgMSBGUk9N IHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAncGdfY2xhc3MnIEFORCByZWxu YW1lc3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKSBPUgorICAgIChuc3BuYW1l ID0gJ3BnYWdlbnQnIEFORCBFWElTVFMKKyAgICAoU0VMRUNUIDEgRlJPTSBw Z19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnYV9qb2InIEFORCByZWxuYW1l c3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKSBPUgorICAgIChuc3BuYW1lID0g J2luZm9ybWF0aW9uX3NjaGVtYScgQU5EIEVYSVNUUworICAgICAgICAoU0VM RUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3RhYmxlcycg QU5EIHJlbG5hbWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkpIE9SCisgICAg KG5zcG5hbWUgTElLRSAnXyUnIEFORCBFWElTVFMKKyAgICAgICAgKFNFTEVD VCAxIEZST00gcGdfcHJvYyBXSEVSRSBwcm9uYW1lPSdzbG9ueXZlcnNpb24n IEFORCBwcm9uYW1lc3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKSBPUgorICAg IChuc3BuYW1lID0gJ2RibycgT1IgbnNwbmFtZSA9ICdzeXMnKQorICAgICkg QU5ECisgICAgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFx0ZW1wXFwlJyBBTkQK KyAgICBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXHRvYXN0X3RlbXBcXCUnIEFO RAorICAgIC0tIEFEREVEOiBCZWNhdXNlIFdlIG5lZWQgdG8gb21pdCBzeXN0 ZW0gc2NoZW1hIGV4Y2VwdCB0aGUgb25lIG9uIHdoaWNoIHdlIGFyZSB0cnlp bmcgdG8gIGNyZWF0ZSBjb2xsYXRpb24KKyAgICAoIG5zcC5vaWQgPSB7eyBz Y2lkIH19IE9SIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXyUnICkgQU5ECisg ICAgLS0gU3BlY2lmaWMgY29kZSBmb3IgRURCIFBQQVMKKyAgICBuc3AubnNw cGFyZW50ID0gMCBBTkQgTk9UCisgICAgICAgIChuc3BuYW1lID0gJ2RibXNf am9iX3Byb2NlZHVyZScgQU5EIEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX3By b2MgV0hFUkUgcHJvbmFtZXNwYWNlID0gbnNwLm9pZCBhbmQgcHJvbmFtZSA9 ICdydW5fam9iJyBMSU1JVCAxKSkKK09SREVSIEJZIG5zcG5hbWU7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9z cWwvcHJlXzkuMS9nZXRfc3VidHlwZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvZ2V0X3N1YnR5cGVz LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTYx YTk5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMv dGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvZ2V0X3N1YnR5cGVzLnNxbApA QCAtMCwwICsxLDU2IEBACit7IyMjIFRvIGZpbGwgc3VidHlwZSBjb21ib2Jv eCAjIyN9Cit7JSBpZiBzdWJ0eXBlICV9CitTRUxFQ1QgRElTVElOQ1QgdHlw LnR5cG5hbWUgQVMgc3R5cGUsCisgICAgKENBU0UgV0hFTiB0eXAudHlwY29s bGF0aW9uID4gMCBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIGlzX2Nv bGxhdGUKK0ZST00gcGdfb3BjbGFzcyBvcGMKKyAgICBKT0lOIHBnX3R5cGUg dHlwIE9OIG9wYy5vcGNpbnR5cGUgPSB0eXAub2lkCitXSEVSRSBvcGMub3Bj bWV0aG9kID0gNDAzCitPUkRFUiBCWSAxCit7JSBlbmRpZiAlfQoreyMjIyBU byBmaWxsIHN1YnR5cGUgb3BjbGFzcyBjb21ib2JveCAjIyN9Cit7JSBpZiBz dWJ0eXBlX29wY2xhc3MgYW5kIGRhdGEgYW5kIGRhdGEudHlwbmFtZSAlfQor U0VMRUNUIG9wYy5vcGNuYW1lCitGUk9NIHBnX29wY2xhc3Mgb3BjCisgICAg Sk9JTiBwZ190eXBlIHR5cCBPTiBvcGMub3BjaW50eXBlPXR5cC5vaWQKKyAg ICBBTkQgdHlwLnR5cG5hbWUgPSB7eyBkYXRhLnR5cG5hbWV8cXRMaXRlcmFs IH19CitXSEVSRSBvcGMub3BjbWV0aG9kID0gNDAzCitPUkRFUiBCWSBvcGNu YW1lOworeyUgZW5kaWYgJX0KK3sjIyMgVG8gZmV0Y2ggb3BjaW50dHlwZSBm cm9tIHN1YnR5cGUgb3BjbGFzcyAjIyN9Cit7JSBpZiBnZXRfb3BjaW50eXBl IGFuZCBkYXRhIGFuZCBkYXRhLnR5cG5hbWUgYW5kIGRhdGEub3BjbmFtZSAl fQorU0VMRUNUIG9wYy5vcGNpbnR5cGUKK0ZST00gcGdfb3BjbGFzcyBvcGMK KyAgICBKT0lOIHBnX3R5cGUgdHlwIE9OIG9wYy5vcGNpbnR5cGU9dHlwLm9p ZAorICAgIEFORCB0eXAudHlwbmFtZSA9IHt7IGRhdGEudHlwbmFtZXxxdExp dGVyYWwgfX0KK1dIRVJFIG9wYy5vcGNtZXRob2QgPSA0MDMKKyAgICBBTkQg b3BjLm9wY25hbWUgPSB7eyBkYXRhLm9wY25hbWV8cXRMaXRlcmFsIH19CitP UkRFUiBCWSBvcGNuYW1lOworeyUgZW5kaWYgJX0KK3sjIyMgVG8gZmlsbCBz dWJ0eXBlIGRpZmYgZnVuY3Rpb24gY29tYm9ib3ggIyMjfQoreyUgaWYgb3Bj aW50eXBlICV9CitTRUxFQ1QgcHJvbmFtZSwgbnNwbmFtZSwKKyAgICBDQVNF IFdIRU4gbGVuZ3RoKG5zcG5hbWUpID4gMCBBTkQgbGVuZ3RoKHByb25hbWUp ID4gMCAgVEhFTgorICAgICAgICBjb25jYXQocXVvdGVfaWRlbnQobnNwbmFt ZSksICcuJywgcXVvdGVfaWRlbnQocHJvbmFtZSkpCisgICAgRUxTRSAnJyBF TkQgQVMgc3R5cGRpZmYKK0ZST00gcGdfcHJvYworICAgIEpPSU4gcGdfbmFt ZXNwYWNlIG4gT04gbi5vaWQ9cHJvbmFtZXNwYWNlCitXSEVSRSBwcm9yZXR0 eXBlID0gNzAxCitBTkQgcHJvYXJndHlwZXMgPSAne3tvcGNpbnR5cGV9fSB7 e29wY2ludHlwZX19JworT1JERVIgQlkgcHJvbmFtZTsKK3slIGVuZGlmICV9 Cit7IyMjIFRvIGZpbGwgY2Fub25pY2FsIGNvbWJvYm94ICMjI30KK3slIGlm IGdldG9pZCAlfQorU0VMRUNUIG9pZCBGUk9NIHBnX3R5cGUKK1dIRVJFIHR5 cG5hbWUgPSB7eyBkYXRhLm5hbWV8cXRMaXRlcmFsIH19Cit7JSBlbmRpZiAl fQoreyUgaWYgY2Fub25pY2FsIGFuZCBvaWQgJX0KK1NFTEVDVCBwcm9uYW1l LCBuc3BuYW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAw IEFORCBsZW5ndGgocHJvbmFtZSkgPiAwICBUSEVOCisgICAgICAgIGNvbmNh dChxdW90ZV9pZGVudChuc3BuYW1lKSwgJy4nLCBxdW90ZV9pZGVudChwcm9u YW1lKSkKKyAgICBFTFNFICcnIEVORCBBUyBjYW5vbmljYWwKK0ZST00gcGdf cHJvYworICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9cHJvbmFt ZXNwYWNlCitXSEVSRSBwcm9yZXR0eXBlPSB7eyBvaWQgfX0KK0FORCBwcm9h cmd0eXBlcyA9ICd7eyBvaWQgfX0nCitPUkRFUiBCWSBwcm9uYW1lOworeyUg ZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwv cHJlXzkuMS9nZXRfdHlwZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMv dGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvZ2V0X3R5cGVzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDMwZThhCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVz L3R5cGUvc3FsL3ByZV85LjEvZ2V0X3R5cGVzLnNxbApAQCAtMCwwICsxLDEw IEBACitTRUxFQ1QgKiBGUk9NCisgICAgKFNFTEVDVCBmb3JtYXRfdHlwZSh0 Lm9pZCxOVUxMKSBBUyB0eXBuYW1lLAorICAgIENBU0UgV0hFTiB0eXBlbGVt ID4gMCBUSEVOIHR5cGVsZW0gRUxTRSB0Lm9pZCBFTkQgQVMgZWxlbW9pZCwK KyAgICB0eXBsZW4sIHR5cHR5cGUsIHQub2lkLCBuc3BuYW1lLAorICAgIChT RUxFQ1QgQ09VTlQoMSkgRlJPTSBwZ190eXBlIHQyIFdIRVJFIHQyLnR5cG5h bWUgPSB0LnR5cG5hbWUpID4gMSBBUyBpc2R1cAorRlJPTSBwZ190eXBlIHQK KyAgICBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04gdHlwbmFtZXNwYWNlPW5z cC5vaWQKK1dIRVJFIChOT1QgKHR5cG5hbWUgPSAndW5rbm93bicgQU5EIG5z cG5hbWUgPSAncGdfY2F0YWxvZycpKSBBTkQgdHlwaXNkZWZpbmVkIEFORCB0 eXB0eXBlIElOICgnYicsICdjJywgJ2QnLCAnZScsICdyJylBTkQgTk9UIEVY SVNUUyAoc2VsZWN0IDEgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lc3Bh Y2U9dHlwbmFtZXNwYWNlIGFuZCByZWxuYW1lID0gdHlwbmFtZSBhbmQgcmVs a2luZCAhPSAnYycpIEFORCAodHlwbmFtZSBub3QgbGlrZSAnXyUnIE9SIE5P VCBFWElTVFMgKHNlbGVjdCAxIGZyb20gcGdfY2xhc3Mgd2hlcmUgcmVsbmFt ZXNwYWNlPXR5cG5hbWVzcGFjZSBhbmQgcmVsbmFtZSA9IHN1YnN0cmluZyh0 eXBuYW1lIGZyb20gMik6Om5hbWUgYW5kIHJlbGtpbmQgIT0gJ2MnKSkgIEFO RCBuc3AubnNwbmFtZSAhPSAnaW5mb3JtYXRpb25fc2NoZW1hJworICkgQVMg ZHVtbXkKKyAgICBPUkRFUiBCWSBuc3BuYW1lIDw+ICdwZ19jYXRhbG9nJywg bnNwbmFtZSA8PiAncHVibGljJywgbnNwbmFtZSwgMQpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5 cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4xL25vZGVzLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4x L25vZGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li42YWJjYjE5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvbm9kZXMuc3FsCkBA IC0wLDAgKzEsMTAgQEAKK1NFTEVDVCB0Lm9pZCwgdC50eXBuYW1lIEFTIG5h bWUKK0ZST00gcGdfdHlwZSB0CisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3R5 cGUgZSBPTiBlLm9pZD10LnR5cGVsZW0KKyAgICBMRUZUIE9VVEVSIEpPSU4g cGdfY2xhc3MgY3QgT04gY3Qub2lkPXQudHlwcmVsaWQgQU5EIGN0LnJlbGtp bmQgPD4gJ2MnCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX25hbWVzcGFjZSBu c3AgT04gbnNwLm9pZCA9IHQudHlwbmFtZXNwYWNlCitXSEVSRSB0LnR5cHR5 cGUgIT0gJ2QnIEFORCB0LnR5cG5hbWUgTk9UIExJS0UgRSdcXF8lJyBBTkQg dC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCit7JSBpZiBub3Qgc2hv d19zeXN0ZW1fb2JqZWN0cyAlfQorICAgIEFORCBjdC5vaWQgaXMgTlVMTAor eyUgZW5kaWYgJX0KK09SREVSIEJZIHQudHlwbmFtZTsKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9wcm9wZXJ0aWVzLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9w cmVfOS4xL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjk0Mjg0ZDYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9w cm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDIxIEBACitTRUxFQ1QgdC5vaWQs IHQudHlwbmFtZSBBUyBuYW1lLAorICAgIChDQVNFIFdIRU4gQ0FTVChjb2Fs ZXNjZSh0LnR5cGNvbGxhdGlvbiwgJzAnKSBBUyBpbnRlZ2VyKSA9IDEwMCBU SEVOIHRydWUgRWxTRSBmYWxzZSBFTkQpIEFTIGlzX2NvbGxhdGFibGUsCisg ICAgdC50eXBhY2wgQVMgdHlwZV9hY2wsCisgICAgdC4qLCBmb3JtYXRfdHlw ZSh0Lm9pZCwgbnVsbCkgQVMgYWxpYXMsCisgICAgcGdfZ2V0X3VzZXJieWlk KHQudHlwb3duZXIpIGFzIHR5cGVvd25lciwgZS50eXBuYW1lIGFzIGVsZW1l bnQsCisgICAgZGVzY3JpcHRpb24sIGN0Lm9pZCBBUyB0YWJvaWQsCisgICAg bnNwLm5zcG5hbWUgQVMgc2NoZW1hLAorICAgIChDQVNFIFdIRU4gKHQub2lk IDw9IHt7IGRhdGxhc3RzeXNvaWR9fTo6b2lkIE9SIGN0Lm9pZCAhPSAwKSBU SEVOIHRydWUgRWxTRSBmYWxzZSBFTkQpIEFTIGlzX3N5c190eXBlCitGUk9N IHBnX3R5cGUgdAorICAgIExFRlQgT1VURVIgSk9JTiBwZ190eXBlIGUgT04g ZS5vaWQ9dC50eXBlbGVtCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNz IGN0IE9OIGN0Lm9pZD10LnR5cHJlbGlkIEFORCBjdC5yZWxraW5kIDw+ICdj JworICAgIExFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlvbiBkZXMgT04g KGRlcy5vYmpvaWQ9dC5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfdHlwZSc6 OnJlZ2NsYXNzKQorICAgIExFRlQgT1VURVIgSk9JTiBwZ19uYW1lc3BhY2Ug bnNwIE9OIG5zcC5vaWQgPSB0LnR5cG5hbWVzcGFjZQorV0hFUkUgdC50eXB0 eXBlICE9ICdkJyBBTkQgdC50eXBuYW1lIE5PVCBMSUtFIEUnXFxfJScgQU5E IHQudHlwbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAoreyUgaWYgdGlkICV9 CisgICAgQU5EIHQub2lkID0ge3t0aWR9fTo6b2lkCit7JSBlbmRpZiAlfQor eyUgaWYgbm90IHNob3dfc3lzdGVtX29iamVjdHMgJX0KKyAgICBBTkQgY3Qu b2lkIGlzIE5VTEwKK3slIGVuZGlmICV9CitPUkRFUiBCWSB0LnR5cG5hbWU7 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEv dXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90 eXBlL3NxbC9wcmVfOS4xL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMDgyZjk0NAotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVf OS4xL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwxMDYgQEAKK3slIGltcG9ydCAn bWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdF ICV9Cit7JSBpZiBkYXRhICV9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09I30KK3sjIEJlbG93IHdpbGwgY2hhbmdlIG9iamVj dCBvd25lciAjfQoreyUgaWYgZGF0YS50eXBlb3duZXIgYW5kIGRhdGEudHlw ZW93bmVyICE9IG9fZGF0YS50eXBlb3duZXIgJX0KK0FMVEVSIFRZUEUge3sg Y29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fQor ICAgIE9XTkVSIFRPIHt7IGRhdGEudHlwZW93bmVyIH19OworCit7JSBlbmRp ZiAlfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PSN9Cit7IyBCZWxvdyB3aWxsIGNoYW5nZSBvYmplY3RzIGNvbW1lbnQgICN9 Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uIGFuZCBkYXRhLmRlc2NyaXB0aW9u ICE9IG9fZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBPTiBUWVBFIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgfX0K KyAgICBJUyB7eyBkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbCB9fTsKKwor eyUgZW5kaWYgJX0KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0jfQoreyMjIyBUaGUgc3FsIGdpdmVuIGJlbG93IHdpbGwgdXBk YXRlIGNvbXBvc2l0ZSB0eXBlICMjI30KK3slIGlmIGRhdGEuY29tcG9zaXRl IGFuZCBkYXRhLmNvbXBvc2l0ZXxsZW5ndGggPiAwICV9Cit7JSBzZXQgY29t cG9zaXRlID0gZGF0YS5jb21wb3NpdGUgJX0KK3slIGlmICdkZWxldGVkJyBp biBjb21wb3NpdGUgYW5kIGNvbXBvc2l0ZS5kZWxldGVkfGxlbmd0aCA+IDAg JX0KK3slIGZvciByIGluIGNvbXBvc2l0ZS5kZWxldGVkICV9CitBTFRFUiBU WVBFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFt ZSkgfX0KKyAgICBEUk9QIEFUVFJJQlVURSB7e2Nvbm58cXRJZGVudChyLm1l bWJlcl9uYW1lKX19OworeyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUg aWYgJ2FkZGVkJyBpbiBjb21wb3NpdGUgYW5kIGNvbXBvc2l0ZS5hZGRlZHxs ZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBjb21wb3NpdGUuYWRkZWQgJX0K K0FMVEVSIFRZUEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIG9f ZGF0YS5uYW1lKSB9fQorICAgIEFERCBBVFRSSUJVVEUge3tjb25ufHF0SWRl bnQoci5tZW1iZXJfbmFtZSl9fSB7e2Nvbm58cXRJZGVudChyLnR5cGUpfX17 JSBpZiByLmlzX3RsZW5ndGggYW5kIHIudGxlbmd0aCAlfQorKHt7ci50bGVu Z3RofX17JSBpZiByLmlzX3ByZWNpc2lvbiBhbmQgci5wcmVjaXNpb24gJX0s e3tyLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUgZW5kaWYgJX17JSBpZiBy LmNvbGxhdGlvbiAlfQorIENPTExBVEUge3tyLmNvbGxhdGlvbn19eyUgZW5k aWYgJX07Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hh bmdlZCcgaW4gY29tcG9zaXRlIGFuZCBjb21wb3NpdGUuY2hhbmdlZHxsZW5n dGggPiAwICV9Cit7JSBmb3IgciBpbiBjb21wb3NpdGUuY2hhbmdlZCAlfQor QUxURVIgVFlQRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19k YXRhLm5hbWUpIH19CisgICAgQUxURVIgQVRUUklCVVRFIHt7Y29ubnxxdElk ZW50KHIubWVtYmVyX25hbWUpfX0gU0VUIERBVEEgVFlQRSB7e2Nvbm58cXRJ ZGVudChyLnR5cGUpfX17JSBpZiByLmlzX3RsZW5ndGggYW5kIHIudGxlbmd0 aCAlfQorKHt7ci50bGVuZ3RofX17JSBpZiByLmlzX3ByZWNpc2lvbiBhbmQg ci5wcmVjaXNpb24gJX0se3tyLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUg ZW5kaWYgJX17JSBpZiByLmNvbGxhdGlvbiAlfQorIENPTExBVEUge3tyLmNv bGxhdGlvbn19eyUgZW5kaWYgJX07Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm ICV9CisKK3slIGVuZGlmICV9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09I30KK3sjIyMgVGhlIHNxbCBnaXZlbiBiZWxvdyB3 aWxsIHVwZGF0ZSBlbnVtIHR5cGUgIyMjfQoreyUgaWYgZGF0YS5lbnVtIGFu ZCBkYXRhLmVudW18bGVuZ3RoID4gMCAlfQoreyUgc2V0IGVudW0gPSBkYXRh LmVudW0gJX0KK3slIHNldCBvX2VudW1fbGVuID0gb19kYXRhLmVudW18bGVu Z3RoICV9Cit7IyBXZSBuZWVkIGFjdHVhbCBsaXN0IGluZGV4IGZyb20gbGVu Z3RoICN9Cit7JSBzZXQgb19lbnVtX2xlbiA9IG9fZW51bV9sZW4gLSAxICV9 Cit7JSBpZiAnYWRkZWQnIGluIGVudW0gYW5kIGVudW0uYWRkZWR8bGVuZ3Ro ID4gMCAlfQoreyUgZm9yIHIgaW4gZW51bS5hZGRlZCAlfQoreyUgc2V0IGNf aWR4ID0gbG9vcC5pbmRleCAlfQoreyUgaWYgY19pZHggPT0gMSAlfQoreyMg aWYgZmlyc3QgbmV3IGVsZW1lbnQgdGhlbiBhZGQgaXQgYWZ0ZXIgb2xkIGRh dGEgZW51bSBsaXN0I30KK0FMVEVSIFRZUEUge3sgY29ubnxxdElkZW50KG9f ZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fQorICAgIEFERCBWQUxVRSB7 e3IubGFiZWx8cXRMaXRlcmFsfX0gQUZURVIge3tvX2RhdGEuZW51bVtvX2Vu dW1fbGVuXS5sYWJlbHxxdExpdGVyYWwgfX07Cit7JSBlbHNlICV9Cit7IyBp ZiBmaXJzdCBuZXcgZWxlbWVudCB0aGVuIGFkZCBpdCBhZnRlciBuZXcgZGF0 YSBlbnVtIGxpc3QjfQoreyUgc2V0IHBfaWR4ID0gbG9vcC5pbmRleCAtIDIg JX0KK0FMVEVSIFRZUEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEs IG9fZGF0YS5uYW1lKSB9fQorICAgIEFERCBWQUxVRSB7e3IubGFiZWx8cXRM aXRlcmFsfX0gQUZURVIge3tlbnVtLmFkZGVkW3BfaWR4XS5sYWJlbHxxdExp dGVyYWx9fTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm ICV9CisKK3slIGVuZGlmICV9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09I30KK3sjIENoYW5nZSB0aGUgcHJpdmlsZWdlcyAj fQoreyUgaWYgZGF0YS50eXBhY2wgJX0KK3slIGlmICdkZWxldGVkJyBpbiBk YXRhLnR5cGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS50eXBhY2wuZGVs ZXRlZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUWVBFJywg cHJpdi5ncmFudGVlLCBvX2RhdGEubmFtZSwgb19kYXRhLnNjaGVtYSkgfX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBp biBkYXRhLnR5cGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS50eXBhY2wu Y2hhbmdlZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUWVBF JywgcHJpdi5ncmFudGVlLCBvX2RhdGEubmFtZSwgb19kYXRhLnNjaGVtYSkg fX0KK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RZUEUnLCBwcml2LmdyYW50 ZWUsIG9fZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0 aF9ncmFudCwgb19kYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUg ZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gZGF0YS50eXBhY2wgJX0KK3sl IGZvciBwcml2IGluIGRhdGEudHlwYWNsLmFkZGVkICV9Cit7eyBQUklWSUxF R0UuU0VUKGNvbm4sICdUWVBFJywgcHJpdi5ncmFudGVlLCBvX2RhdGEubmFt ZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIG9fZGF0 YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CisKK3sl IGVuZGlmICV9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09I30KK3sjIEJlbG93IHdpbGwgY2hhbmdlIG9iamVjdCBuYW1lICN9 Cit7JSBpZiBkYXRhLm5hbWUgYW5kIGRhdGEubmFtZSAhPSBvX2RhdGEubmFt ZSAlfQorQUxURVIgVFlQRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVt YSwgb19kYXRhLm5hbWUpIH19CisgICAgUkVOQU1FIFRPIHt7IGNvbm58cXRJ ZGVudChkYXRhLm5hbWUpIH19OworCit7JSBlbmRpZiAlfQoreyM9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7IyBCZWxvdyB3 aWxsIGNoYW5nZSB0aGUgc2NoZW1hIGZvciBvYmplY3QgI30KK3sjIHdpdGgg ZXh0cmEgaWYgY29uZGl0aW9uIHdlIHdpbGwgYWxzbyBtYWtlIHN1cmUgdGhh dCBvYmplY3QgaGFzIGNvcnJlY3QgbmFtZSAjfQoreyUgaWYgZGF0YS5zY2hl bWEgYW5kIGRhdGEuc2NoZW1hICE9IG9fZGF0YS5zY2hlbWEgJX0KK0FMVEVS IFRZUEUgeyUgaWYgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9e3sgY29u bnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KK3slIGVs c2UgJX17eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5h bWUpIH19eyUgZW5kaWYgJX0KKyAgICBTRVQgU0NIRU1BIHt7IGNvbm58cXRJ ZGVudChkYXRhLnNjaGVtYSkgfX07CisKK3slIGVuZGlmICV9Cit7JSBlbmRp ZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK --001a11475862f5144a052e0153d0 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a11475862f5144a052e0153d0--