Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b1qcU-0005nP-O2 for pgadmin-hackers@arkaria.postgresql.org; Sun, 15 May 2016 07:37:47 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1b1qcT-00076J-6w for pgadmin-hackers@arkaria.postgresql.org; Sun, 15 May 2016 07:37:45 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1b1qcM-00074l-29 for pgadmin-hackers@postgresql.org; Sun, 15 May 2016 07:37:38 +0000 Received: from mail-lf0-x230.google.com ([2a00:1450:4010:c07::230]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1b1qcA-0002hN-Aa for pgadmin-hackers@postgresql.org; Sun, 15 May 2016 07:37:36 +0000 Received: by mail-lf0-x230.google.com with SMTP id u64so106048498lff.3 for ; Sun, 15 May 2016 00:37:25 -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:date:message-id:subject:from:to :cc; bh=abYp/rKAXi/BH6WeSBoYKt1UsfRnyag9w19E9uEmwgM=; b=DMZCaVZJ01Fa6lRLLLVyCHdLcwxx8X76s7vGqTb1TqP8798mRuNyKu5TZCg6j1Z60N JvAzhgg+srPh2yaukFJSsaL3WDC2tVDeHTj7UMep8mp5myHUUSuvtBZmPUmm9MAHtVJ1 wtwLbyQmd8inLKb1RaTMcmIHc+xjfBJYpdhlABMZrixo952bLb3q+v0KAg2YbQWKyRN9 +Nsh4vd77UAAnu32esfx6U9sExZJspGc5R9GomygGA1033WtpXGrin2wW9cSn/uNCOEO 1mx92npe8loZ0ByC72tkbSbz3X1h3AQt3fnhoJ41v4ACmfsC5UYfpmehHNOwx1Su1n1f NQLA== 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:date :message-id:subject:from:to:cc; bh=abYp/rKAXi/BH6WeSBoYKt1UsfRnyag9w19E9uEmwgM=; b=LcKBbmV7ZZZtT3fS+3wn0o0NBN9Nun1ZYYtLUH6DqU79prOEWeLCTh71nNRv5LGcWw kIAjEnkBz+Afq9KTuSB8Ep1i4CqUby/VJDClwuozjYd3kHIWSwiizFiAcdLYNJMt8crJ HorUhIv2/Ev1lRLnJ7bar6mdYa2MT7VxU70KmQfM/8A2/+eZjtuyKzYrd/xMKgvp9+nI mhbGApy87cyGm5+W5gLBft6P33XVcL13oxr0zBsAyOmDDA03g+Or4zH0lKM4XszgCXDQ qKpEWDVurctncOyHSDLpMYQUdDjVoR45sbF+t61Vucf0HCgc5lrkxN/GpYW99VWydqaw 8VOA== X-Gm-Message-State: AOPr4FXMpX9V1WggM7/Ivh2BNv/Cg3ixG7lHHA2VnBVyzrg55IiLER9S776IiuTN1WxKXvhG7RxqnMB0ju4MzVf7 MIME-Version: 1.0 X-Received: by 10.25.162.76 with SMTP id l73mr9586960lfe.45.1463297842855; Sun, 15 May 2016 00:37:22 -0700 (PDT) Received: by 10.25.206.85 with HTTP; Sun, 15 May 2016 00:37:22 -0700 (PDT) In-Reply-To: References: <58B5FCCE-9882-44C0-B990-8BF5D2FA17DC@enterprisedb.com> <928839C0-1CD1-4307-9C62-6A693D6F0533@enterprisedb.com> <2BC9FA40-F05D-48AA-8796-29808FC15498@enterprisedb.com> Date: Sun, 15 May 2016 13:07:22 +0530 Message-ID: Subject: Re: [pgAdmin4] [Patch]: Foreign Table Module From: Khushboo Vashi To: Murtuza Zabuawala Cc: Dave Page , Ashesh Vashi , Neel Patel , pgadmin-hackers Content-Type: multipart/mixed; boundary=001a1141115c2009430532dc9441 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 --001a1141115c2009430532dc9441 Content-Type: multipart/alternative; boundary=001a1141115c20093d0532dc943f --001a1141115c20093d0532dc943f Content-Type: text/plain; charset=UTF-8 Hi, Please find the updated patch for the foreign table. Thanks, Khushboo On Sat, May 14, 2016 at 10:36 PM, Murtuza Zabuawala < murtuza.zabuawala@enterprisedb.com> wrote: > Hi, > > One last otherwise rest of functionality looks good. > > - We are not able to drop/delete any constraints, not even empty blank row > once added. > > Fixed > > Regards, > Murtuza > > > -- > Regards, > Murtuza Zabuawala > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > On Fri, May 13, 2016 at 3:25 PM, Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Please find the attached updated patch for the foreign table module. >> >> Thanks, >> Khushboo >> >> On Fri, May 13, 2016 at 10:50 AM, Murtuza Zabuawala < >> murtuza.zabuawala@enterprisedb.com> wrote: >> >>> *1)* If we delete one inherited table and add another one >>> It generated drop columns sql for that inherited table which throws >>> error, >>> for example "Test123"."TEST" has col1, col2 in it, once we remove table >>> see the wrong drop column sql. >>> >>> SQL: >>> ---- >>> ALTER FOREIGN TABLE pem.asdas >>> DROP COLUMN col1; >>> >>> ALTER FOREIGN TABLE pem.asdas >>> DROP COLUMN col2; >>> >>> ALTER FOREIGN TABLE pem.asdas INHERIT pemdata.number_of_wal_files; >>> >>> ALTER FOREIGN TABLE pem.asdas NO INHERIT "Test123"."TEST"; >>> >>> Expected: >>> --------- >>> ALTER FOREIGN TABLE pem.asdas INHERIT pemdata.number_of_wal_files; >>> >>> ALTER FOREIGN TABLE pem.asdas NO INHERIT "Test123"."TEST"; >>> >>> Done >> >>> >>> *2)* In EDIT mode, Changing just column name of existing column first >>> drops the entire column >>> and adds it again, instead of just renaming column name >>> >>> (*** Consider a case when user have data in the table & just want to >>> rename column col1 to col2 >>> or any other attribute like default value/not null etc, why do we need >>> to drop entire column in that case? ***) >>> >>> SQL: >>> ---- >>> ALTER FOREIGN TABLE test.test_ft >>> DROP COLUMN c1; >>> >>> ALTER FOREIGN TABLE test.test_ft >>> ADD COLUMN c12 bigint NOT NULL; >>> >>> Expected: >>> --------- >>> ALTER FOREIGN TABLE test.test_ft >>> RENAME c1 TO c12; >>> >>> >>> Done >> >>> *3)* We should not allow user to delete columns inherited from >>> other table in edit mode from UI >>> >>> >>> Done >> >>> *4)* We should not allow user to delete constraint inherited from >>> other table in edit mode from UI >>> >>> Done >> >>> >>> *5)* Issue from my last email still exists, changing type of column >>> creates wrong sql if it has Length/Precision. >>> >>> eg: col12 was numeric(12) which I changed to aclitem >>> See the wrong sql >>> >>> ALTER FOREIGN TABLE pem."test-2" >>> DROP COLUMN col12; >>> >>> ALTER FOREIGN TABLE pem."test-2" >>> ADD COLUMN col12 aclitem(12) NOT NULL COLLATE pg_catalog."default"; >>> >>> >>> Expected: >>> --------- >>> ALTER FOREIGN TABLE pem."test-2" >>> ADD COLUMN col12 aclitem; >>> >>> Done >> >>> >>> *6)* EDIT mode, clearing Data Type from column throws Error on console >>> >>> TypeError: this.dataAdapter is null >>> >>> Couldn't reproduce. >> >>> >>> *7)* EDIT mode, If i have blank column row and clicks on SQL tab throws >>> error >>> >>> app_iter = app(environ, start_response) >>> TypeError: 'KeyError' object is not callable >>> >>> Done >> >>> >>> *8)* User can clear Owner which we should not allow to clear OR we have >>> to generate SQL for that opration >>> >>> >>> Done >> >>> *9)* I do not have option to provide Statistics attribute for column >>> >>> Done >> >>> >>> -- >>> Regards, >>> Murtuza Zabuawala >>> EnterpriseDB: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >>> On Wed, May 11, 2016 at 3:17 PM, Khushboo Vashi < >>> khushboo.vashi@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> Please find the attached updated patch for the Foreign Table module. >>>> >>>> Thanks, >>>> Khushboo >>>> >>>> On Tue, May 10, 2016 at 4:33 PM, Dave Page wrote: >>>> >>>>> >>>>> >>>>> On Mon, May 9, 2016 at 1:23 PM, Ashesh Vashi < >>>>> ashesh.vashi@enterprisedb.com> wrote: >>>>> >>>>>> On Mon, May 9, 2016 at 5:50 PM, Khushboo Vashi < >>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> Please find the attached updated patch for the Foreign Tables module. >>>>>>> >>>>>> >>>>> Feedback from my initial testing: >>>>> >>>>> - Owner is missing from the New dialogue. >>>>> >>>>> Done >>>> >>>>> - The Properties list shows "Select from the list" in a combo box for >>>>> Owner and >>>>> Inherits. >>>>> >>>> >>>> >>>>> >>>>> >>>> This is a generalize issue, I will create a new Kanban card for the >>>> same. >>>> >>>>> - s/Oid/OID >>>>> >>>>> Done >>>> >>>>> - s/Foreign Server/Foreign server >>>>> >>>>> Done >>>> >>>>> - SQL Help filenames are not defined. >>>>> >>>>> Done >>>> >>>>> - SQL formatting is weird, e.g. >>>>> >>>>> CREATE FOREIGN TABLE public.redis_table >>>>> (id text NOT NULL COLLATE pg_catalog."default", >>>>> value text NULL COLLATE pg_catalog."default") >>>>> SERVER redis_server1 >>>>> OPTIONS (database '0'); >>>>> >>>>> instead of: >>>>> >>>>> CREATE FOREIGN TABLE public.redis_table ( >>>>> id text NOT NULL COLLATE pg_catalog."default", >>>>> value text NULL COLLATE pg_catalog."default" >>>>> ) >>>>> SERVER redis_server1 >>>>> OPTIONS (database '0'); >>>>> >>>>> >>>> Done >>>> >>>>> - In the validation error messages, please replace ! with . and "can >>>>> not" with >>>>> "cannot" for consistency with recently reviewed strings. >>>>> >>>>> >>>> Done >>>> >>>>> - s/mulitple/multiple (in the js). >>>>> >>>>> Done >>>> >>>>> - How do I manage the ACL? >>>>> >>>>> Done. I missed this as I was following pgAdmin-3 as usual. >>>> >>>>> Thanks. >>>>> >>>>> >>>>> -- >>>>> Dave Page >>>>> Blog: http://pgsnake.blogspot.com >>>>> Twitter: @pgsnake >>>>> >>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>> The Enterprise PostgreSQL Company >>>>> >>>> >>>> >>> >> > --001a1141115c20093d0532dc943f Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find the updated patch for t= he foreign table.

Thanks,
Khushboo
=

On Sat, May 14, 2= 016 at 10:36 PM, Murtuza Zabuawala <murtuza.zabuawala@ent= erprisedb.com> wrote:
Hi,

One last otherwise rest of fu= nctionality looks good.

- We are not able to drop/= delete any constraints, not even empty blank row once added.

=
Fixed=C2=A0

Regards,
Murtu= za

--
Regards,
Murtuza Zabuawala
EnterpriseDB:=C2=A0http://www.enterprisedb.com
The E= nterprise PostgreSQL Company


On Fri, May 13= , 2016 at 3:25 PM, Khushboo Vashi <khushboo.vashi@enterprise= db.com> wrote:
Hi,

Please find the attached updated patch for the = foreign table module.

Thanks,
Khushboo

On Fri, May 13,= 2016 at 10:50 AM, Murtuza Zabuawala <murtuza.zabuawala@e= nterprisedb.com> wrote:
1) If we delete one inherited table and add anoth= er one
It generated drop columns sql for that inherited table whi= ch throws error,
for example "Test123"."TEST"= has col1, col2 in it, once we remove table=C2=A0
see the wrong d= rop column sql.

SQL:
----=C2=A0
ALTER FOREIGN TABLE pem.asdas
=C2=A0 =C2=A0 DROP COLUMN col1;

ALTER FOREIGN TABLE pem.asdas
=C2=A0 =C2= =A0 DROP COLUMN col2;

ALTER FOREIGN TABLE pem.asda= s INHERIT pemdata.number_of_wal_files;

ALTER FOREI= GN TABLE pem.asdas NO INHERIT "Test123"."TEST";

Expected:
---------
ALTER FOREIGN TAB= LE pem.asdas INHERIT pemdata.number_of_wal_files;

= ALTER FOREIGN TABLE pem.asdas NO INHERIT "Test123"."TEST&quo= t;;

Done=C2=A0

2) In EDIT mode, Changing just column name of existing column first drops t= he entire column
and adds it again, instead of just renaming colu= mn name=C2=A0

(*** = Consider a case when user have data in the table & just want to rename = column col1 to col2=C2=A0
or any other attribute like default val= ue/not null etc, why do we need to drop entire column in that case? ***)

SQL:
----= =C2=A0
ALTER FOREIGN TABLE test.test_ft
=C2=A0 =C2=A0 D= ROP COLUMN c1;

ALTER FOREIGN TABLE test.test_ft
=C2=A0 =C2=A0 ADD COLUMN c12 bigint NOT NULL;

<= div>Expected:
---------
ALTER FOREIGN TABLE test.test_f= t
RENAME c1 TO c12;<= /div>


Done=C2=A0
=
3) W= e should not allow user to delete columns inherited from=C2=A0
ot= her table in edit mode from UI


Done=C2=A0
4) We should not allow user to delete constraint= inherited from=C2=A0
other table in edit mode from UI
=
Done=C2=A0

5) Issue from = my last email still exists, changing type of column
creates wrong= sql if it has Length/Precision.

eg: col12 was num= eric(12) which I changed to aclitem=C2=A0
See the wrong sql
=

ALTER FOREIGN TABLE pem."test-2"
= =C2=A0 =C2=A0 DROP COLUMN col12;

ALTER FOREIGN TAB= LE pem."test-2"
=C2=A0 =C2=A0 ADD COLUMN col12 aclitem(= 12) NOT NULL COLLATE pg_catalog."default";


Expected:
---------
ALTER FOREIGN TAB= LE pem."test-2"
=C2=A0 =C2=A0 ADD COLUMN col12 aclitem;=

Done=C2=A0

6) = EDIT mode, clearing Data Type from column throws Error on console

TypeError: this.dataAdapter is null

Couldn't reproduce.=C2=A0

7) EDI= T mode, If i have blank column row and clicks on SQL tab throws error
=

=C2=A0 =C2=A0 app_iter =3D app(environ, start_response)=
TypeError: 'KeyError' object is not callable
<= br>
Done=C2=A0

8) User can cle= ar Owner which we should not allow to clear OR we have to generate SQL for = that opration


Do= ne=C2=A0
9) I do not have option to provide Statistics attribute for colum= n

Done=C2=A0

--<= div>Regards,
Murtuza Zabuawala
EnterpriseDB:=C2= =A0http://www.enterprisedb.com=
The Enterprise PostgreSQL Company


On Wed, May 11, 2016 at 3:17 PM, Khushboo Va= shi <khushboo.vashi@enterprisedb.com> wrote:
Hi,

Pl= ease find the attached updated patch for the Foreign Table module.

Thanks,
Khushboo

On Tue, May 10, 2016 at 4:33 PM, Dave Page = <dpage@pgadmin.org> wrote:


On Mon, May 9, 2016 at 1:23 PM, Ashesh Vashi &= lt;ashes= h.vashi@enterprisedb.com> wrote:

On Mon, May 9, 2016 at = 5:50 PM, Khushboo Vashi <khushboo.vashi@enterprisedb.com= > wrote:

Hi,

Ple= ase find the attached updated patch for the Foreign Tables module.

Feedback from my initial testing:

- Owner is= missing from the New dialogue.

Done=C2=A0
- T= he Properties list shows "Select from the list" in a combo box fo= r Owner and
=C2=A0 Inherits.
=
=C2=A0
=C2=A0
This is a generalize issue, I will create a new Kanba= n card for the same.
<= div class=3D"gmail_extra">
- s/Oid/OID
=

Done=C2=A0
- s/Foreign Server/Foreign server
<= div>
Done=C2=A0
- SQL Help filenames are not defined.

Done=C2=A0
- SQL formatting is weird, e.g.
<= div>
CREATE FOREIGN TABLE public.redis_table
(id te= xt NOT NULL COLLATE pg_catalog."default",
value text NU= LL COLLATE pg_catalog."default")
=C2=A0 =C2=A0 SERVER r= edis_server1
=C2=A0 =C2=A0 OPTIONS (database '0');
<= div>=C2=A0 =C2=A0=C2=A0
instead of:

CREA= TE FOREIGN TABLE public.redis_table (
=C2=A0 =C2=A0 id text NOT N= ULL COLLATE pg_catalog."default",
=C2=A0 =C2=A0 value t= ext NULL COLLATE pg_catalog."default"
)
=C2= =A0 =C2=A0 SERVER redis_server1
=C2=A0 =C2=A0 OPTIONS (database &= #39;0');
=C2=A0 =C2=A0=C2=A0
Done=C2=A0
- In the validatio= n error messages, please replace ! with . and "can not" with=C2= =A0
=C2=A0 "cannot" for consistency with recently revie= wed strings.
=C2=A0=C2=A0
Done=C2=A0
- s/mulitple/multiple (in= the js).

Done=C2= =A0
- How do I manage the A= CL?=C2=A0

Done. I m= issed this as I was following pgAdmin-3 as usual.=C2=A0
Thanks.


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

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

<= /span>
<= /span>


--001a1141115c20093d0532dc943f-- --001a1141115c2009430532dc9441 Content-Type: text/x-patch; charset=US-ASCII; name="pgAdmin4_foreign_tables_ver6.patch" Content-Disposition: attachment; filename="pgAdmin4_foreign_tables_ver6.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_io89qrw20 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL19f aW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvX19p bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MWZiNmQzYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTEyMSBAQAor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIi SW1wbGVtZW50cyB0aGUgRm9yZWlnbiBUYWJsZSBNb2R1bGUuIiIiCisKK2lt cG9ydCBqc29uCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKK2ltcG9y dCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sKK2Zyb20gZmxhc2sgaW1wb3J0IHJl bmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlm eSwgXAorICAgIGN1cnJlbnRfYXBwCitmcm9tIGZsYXNrLmV4dC5iYWJlbCBp bXBvcnQgZ2V0dGV4dAorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRf RFJJVkVSCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9q c29uX3Jlc3BvbnNlLCBcCisgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jl c3BvbnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIGdvbmUKK2Zyb20gcGdh ZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zy b20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rp b25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9n cm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcyBhcyBzY2hlbWFzCitm cm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0aW9uX3Jl cXVpcmVkCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgaW1wb3J0IFwKKyAgICBT Y2hlbWFDaGlsZE1vZHVsZSwgRGF0YVR5cGVSZWFkZXIKK2Zyb20gcGdhZG1p bi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudXRp bHMgaW1wb3J0IFwKKyAgICBwYXJzZV9zZWNfbGFiZWxzX2Zyb21fZGIKK2Zy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy51dGls cyBpbXBvcnQgcGFyc2VfcHJpdl9mcm9tX2RiLCBcCisgICAgcGFyc2VfcHJp dl90b19kYgorCisKK2NsYXNzIEZvcmVpZ25UYWJsZU1vZHVsZShTY2hlbWFD aGlsZE1vZHVsZSk6CisgICAgIiIiCisgICAgY2xhc3MgRm9yZWlnblRhYmxl TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKworICAgICAgICBUaGlz IGNsYXNzIHJlcHJlc2VudHMgVGhlIEZvcmVpZ24gVGFibGUgTW9kdWxlLgor CisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygq YXJncywgKiprd2FyZ3MpCisgICAgICAtIEluaXRpYWxpemUgdGhlIEZvcmVp Z24gVGFibGUgTW9kdWxlLgorCisgICAgKiBnZXRfbm9kZXMoZ2lkLCBzaWQs IGRpZCwgc2NpZCkKKyAgICAgIC0gR2VuZXJhdGUgdGhlIEZvcmVpZ24gVGFi bGUgY29sbGVjdGlvbiBub2RlLgorCisgICAgKiBub2RlX2lub2RlKCk6Cisg ICAgICAtIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgdG8gbWFrZSB0aGUgRm9y ZWlnbiBUYWJsZSBub2RlIGFzIGxlYWYgbm9kZS4KKworICAgICogc2NyaXB0 X2xvYWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBG b3JlaWduIFRhYmxlLCB3aGVuIHNjaGVtYSBub2RlIGlzCisgICAgICAgIGlu aXRpYWxpemVkLgorICAgICIiIgorICAgIE5PREVfVFlQRSA9ICdmb3JlaWdu LXRhYmxlJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBnZXR0ZXh0KCJGb3Jl aWduIFRhYmxlcyIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3Ms ICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoRm9yZWlnblRhYmxlTW9kdWxl LCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNl bGYubWluX3ZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5tYXhfdmVyID0gTm9u ZQorCisgICAgZGVmIGdldF9ub2RlcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIHRoZSBGb3Jl aWduIFRhYmxlIGNvbGxlY3Rpb24gbm9kZS4KKyAgICAgICAgIiIiCisgICAg ICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25v ZGUoc2NpZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBub2RlX2lub2Rl KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTWFrZSB0aGUgbm9kZSBh cyBsZWFmIG5vZGUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gRmFs c2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzY3JpcHRfbG9hZChzZWxm KToKKyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhlIG1vZHVsZSBzY3Jp cHQgZm9yIGZvcmVpZ24gdGFibGUsIHdoZW4gdGhlCisgICAgICAgIHNjaGVt YSBub2RlIGlzIGluaXRpYWxpemVkLgorICAgICAgICAiIiIKKyAgICAgICAg cmV0dXJuIHNjaGVtYXMuU2NoZW1hTW9kdWxlLk5PREVfVFlQRQorCisKK2Js dWVwcmludCA9IEZvcmVpZ25UYWJsZU1vZHVsZShfX25hbWVfXykKKworCitj bGFzcyBGb3JlaWduVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5 cGVSZWFkZXIpOgorICAgICIiIgorICAgIGNsYXNzIEZvcmVpZ25UYWJsZVZp ZXcoUEdDaGlsZE5vZGVWaWV3KQorCisgICAgVGhpcyBjbGFzcyBpbmhlcml0 cyBQR0NoaWxkTm9kZVZpZXcgdG8gZ2V0IHRoZSBkaWZmZXJlbnQgcm91dGVz IGZvcgorICAgIHRoZSBtb2R1bGUuCisKKyAgICBUaGUgY2xhc3MgaXMgcmVz cG9uc2libGUgdG8gQ3JlYXRlLCBSZWFkLCBVcGRhdGUgYW5kIERlbGV0ZSBv cGVyYXRpb25zIGZvcgorICAgIHRoZSBGb3JlaWduIFRhYmxlLgorCisgICAg TWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiB2YWxpZGF0ZV9yZXF1ZXN0 KGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgICAg VmFsaWRhdGluZyByZXF1ZXN0IG9uIHRoZSByZXF1ZXN0IG9mIGNyZWF0ZSwg dXBkYXRlIGFuZCBtb2RpZmllZCBTUUwuCisKKyAgICAqIG1vZHVsZV9qcygp OgorICAgICAgLSBPdmVycmlkZXMgdGhpcyBwcm9wZXJ0eSB0byBkZWZpbmUg amF2YXNjcmlwdCBmb3IgRm9yZWlnbiBUYWJsZSBub2RlLgorCisgICAgKiBj aGVja19wcmVjb25kaXRpb24oZik6CisgICAgICAtIFdvcmtzIGFzIGEgZGVj b3JhdG9yLgorICAgICAgLSBDaGVja3MgZGF0YWJhc2UgY29ubmVjdGlvbiBz dGF0dXMuCisgICAgICAtIEF0dGFjaCBjb25uZWN0aW9uIG9iamVjdCBhbmQg dGVtcGxhdGUgcGF0aC4KKworICAgICogbGlzdChnaWQsIHNpZCwgZGlkLCBz Y2lkKToKKyAgICAgIC0gTGlzdCB0aGUgRm9yZWlnbiBUYWJsZS4KKworICAg ICogbm9kZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFJldHVy bnMgYWxsIHRoZSBGb3JlaWduIFRhYmxlIHRvIGdlbmVyYXRlIE5vZGVzIGlu IHRoZSBicm93c2VyLgorCisgICAgKiBwcm9wZXJ0aWVzKGdpZCwgc2lkLCBk aWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBSZXR1cm5zIHRoZSBGb3JlaWdu IFRhYmxlIHByb3BlcnRpZXMuCisKKyAgICAqIGdldF9jb2xsYXRpb25zKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVy bnMgQ29sbGF0aW9ucy4KKworICAgICogZ2V0X3R5cGVzKGdpZCwgc2lkLCBk aWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVybnMgRGF0YSBU eXBlcy4KKworICAgICogZ2V0X2ZvcmVpZ25fc2VydmVycyhnaWQsIHNpZCwg ZGlkLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgLSBSZXR1cm5zIHRoZSBG b3JlaWduIFNlcnZlcnMuCisKKyAgICAqIGdldF90YWJsZXMoZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZm9pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyB0aGUg Rm9yZWlnbiBUYWJsZXMgYXMgd2VsbCBhcyBQbGFpbiBUYWJsZXMuCisKKyAg ICAqIGdldF9jb2x1bW5zKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9u ZSk6CisgICAgICAtIFJldHVybnMgdGhlIFRhYmxlIENvbHVtbnMuCisKKyAg ICAqIGNyZWF0ZShnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgIC0gQ3Jl YXRlcyBhIG5ldyBGb3JlaWduIFRhYmxlIG9iamVjdC4KKworICAgICogdXBk YXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBVcGRh dGVzIHRoZSBGb3JlaWduIFRhYmxlIG9iamVjdC4KKworICAgICogZGVsZXRl KGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBEcm9wcyB0 aGUgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAgICAqIHNxbChnaWQsIHNp ZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgIC0gUmV0dXJucyB0aGUgU1FM IGZvciB0aGUgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAgICAqIG1zcWwo Z2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZD1Ob25lKToKKyAgICAgIC0gUmV0 dXJucyB0aGUgbW9kaWZpZWQgU1FMLgorCisgICAgKiBnZXRfc3FsKGdpZCwg c2lkLCBkYXRhLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgLSBHZW5lcmF0 ZXMgdGhlIFNRTCBzdGF0ZW1lbnRzIHRvIGNyZWF0ZS91cGRhdGUgdGhlIEZv cmVpZ24gVGFibGUgb2JqZWN0LgorCisgICAgKiBkZXBlbmRlbnRzKGdpZCwg c2lkLCBkaWQsIHNjaWQsIGZvaWQpOgorICAgICAgLSBSZXR1cm5zIHRoZSBk ZXBlbmRlbnRzIGZvciB0aGUgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAg ICAqIGRlcGVuZGVuY2llcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkKToK KyAgICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgRm9y ZWlnbiBUYWJsZSBvYmplY3QuCisgICAgIiIiCisKKyAgICBub2RlX3R5cGUg PSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRzID0gWwor ICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICB7J3R5 cGUnOiAnaW50JywgJ2lkJzogJ2RpZCd9LAorICAgICAgICB7J3R5cGUnOiAn aW50JywgJ2lkJzogJ3NjaWQnfQorICAgIF0KKyAgICBpZHMgPSBbCisgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZm9pZCd9CisgICAgXQorCisg ICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2JqJzogWworICAg ICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxldGUnOiAnZGVs ZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsnZ2V0Jzog J2xpc3QnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAgICBdLAorICAgICAg ICAnZGVsZXRlJzogW3snZGVsZXRlJzogJ2RlbGV0ZSd9XSwKKyAgICAgICAg J2NoaWxkcmVuJzogW3snZ2V0JzogJ2NoaWxkcmVuJ31dLAorICAgICAgICAn bm9kZXMnOiBbeydnZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwK KyAgICAgICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwnfV0sCisgICAgICAgICdt c3FsJzogW3snZ2V0JzogJ21zcWwnfSwgeydnZXQnOiAnbXNxbCd9XSwKKyAg ICAgICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0YXRpc3RpY3MnfV0sCisgICAg ICAgICdkZXBlbmRlbmN5JzogW3snZ2V0JzogJ2RlcGVuZGVuY2llcyd9XSwK KyAgICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31d LAorICAgICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwgeydnZXQnOiAnbW9k dWxlX2pzJ31dLAorICAgICAgICAnZ2V0X2NvbGxhdGlvbnMnOiBbCisgICAg ICAgICAgICB7J2dldCc6ICdnZXRfY29sbGF0aW9ucyd9LAorICAgICAgICAg ICAgeydnZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfQorICAgICAgICAgICAgXSwK KyAgICAgICAgJ2dldF90eXBlcyc6IFt7J2dldCc6ICd0eXBlcyd9LCB7J2dl dCc6ICd0eXBlcyd9XSwKKyAgICAgICAgJ2dldF9mb3JlaWduX3NlcnZlcnMn OiBbeydnZXQnOiAnZ2V0X2ZvcmVpZ25fc2VydmVycyd9LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7J2dldCc6ICdnZXRfZm9yZWlnbl9z ZXJ2ZXJzJ31dLAorICAgICAgICAnZ2V0X3RhYmxlcyc6IFt7J2dldCc6ICdn ZXRfdGFibGVzJ30sIHsnZ2V0JzogJ2dldF90YWJsZXMnfV0sCisgICAgICAg ICdnZXRfY29sdW1ucyc6IFt7J2dldCc6ICdnZXRfY29sdW1ucyd9LCB7J2dl dCc6ICdnZXRfY29sdW1ucyd9XQorICAgIH0pCisKKyAgICBkZWYgdmFsaWRh dGVfcmVxdWVzdChmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdvcmtzIGFz IGEgZGVjb3JhdG9yLgorICAgICAgICBWYWxpZGF0aW5nIHJlcXVlc3Qgb24g dGhlIHJlcXVlc3Qgb2YgY3JlYXRlLCB1cGRhdGUgYW5kIG1vZGlmaWVkIFNR TC4KKworICAgICAgICBSZXF1aXJlZCBBcmdzOgorICAgICAgICAgICAgICAg ICAgICBuYW1lOiBOYW1lIG9mIHRoZSBGb3JlaWduIFRhYmxlCisgICAgICAg ICAgICAgICAgICAgIGZ0c3J2bmFtZTogRm9yZWlnbiBTZXJ2ZXIgTmFtZQor CisgICAgICAgIEFib3ZlIGJvdGggdGhlIGFyZ3VtZW50cyB3aWxsIG5vdCBi ZSB2YWxpZGF0ZWQgaW4gdGhlIHVwZGF0ZSBhY3Rpb24uCisgICAgICAgICIi IgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoc2VsZiwg Kiprd2FyZ3MpOgorCisgICAgICAgICAgICBkYXRhID0ge30KKworICAgICAg ICAgICAgaWYgcmVxdWVzdC5kYXRhOgorICAgICAgICAgICAgICAgIHJlcSA9 IGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXEgPSByZXF1ZXN0LmFyZ3Mg b3IgcmVxdWVzdC5mb3JtCisKKyAgICAgICAgICAgIGlmICdmb2lkJyBub3Qg aW4ga3dhcmdzOgorICAgICAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBb CisgICAgICAgICAgICAgICAgICAgICduYW1lJywKKyAgICAgICAgICAgICAg ICAgICAgJ2Z0c3J2bmFtZScKKyAgICAgICAgICAgICAgICBdCisKKyAgICAg ICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAg ICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gcmVxIG9yIHJlcVthcmddID09 ICcnOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0 dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0 ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRu J3QgZmluZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCVzKS4iICUgYXJnCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAg KQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbGlzdF9w YXJhbXMgPSBbXQorICAgICAgICAgICAgICAgIGlmIHJlcXVlc3QubWV0aG9k ID09ICdHRVQnOgorICAgICAgICAgICAgICAgICAgICBsaXN0X3BhcmFtcyA9 IFsnY29uc3RyYWludHMnLCAnY29sdW1ucycsICdmdG9wdGlvbnMnLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VjbGFiZWxzJywg J2luaGVyaXRzJywgJ2FjbCddCisgICAgICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICAgICAgbGlzdF9wYXJhbXMgPSBbJ2luaGVyaXRzJ10K KworICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gcmVxOgorICAgICAgICAg ICAgICAgICAgICBpZiBrZXkgaW4gbGlzdF9wYXJhbXMgYW5kIHJlcVtrZXld ICE9ICcnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVx W2tleV0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAj IENvdmVydHMgc3RyaW5nIGludG8gcHl0aG9uIGxpc3QgYXMgZXhwZWN0ZWQu CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBbXSBpZlwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKHJlcVtrZXldKSA9 PSBsaXN0IGFuZCBsZW4ocmVxW2tleV0pID09IDAgZWxzZSBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAganNvbi5sb2FkcyhyZXFba2V5XSkKKwor ICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5ID09ICdpbmhlcml0cyc6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IFRhYmxl IGlkcyBmcm9tIHVuaWNvZGUvc3RyaW5nIHRvIGludAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgYW5kIG1ha2UgdHVwbGUgZm9yICdJTicgcXVl cnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMgPSB0 dXBsZShbaW50KHgpIGZvciB4IGluIGRhdGFba2V5XV0pCisKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBsZW4oaW5oZXJpdHMpID09IDE6Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHl0aG9uIHR1cHBs ZSBoYXMgLCBhZnRlciB0aGUgZmlyc3QgcGFyYW0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIHNpbmdsZSBwYXJhbWV0 ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU28sIHdl IG5lZWQgdG8gbWFrZSBpdCB0dXBsZSBleHBsaWNpdGx5LgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cyA9ICIoIiArIHN0cihp bmhlcml0c1swXSkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBpbmhlcml0czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyBGZXRjaCBUYWJsZSBOYW1lcyBmcm9tIHRoZWlyIHJlc3BlY3RpdmUg SWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFzIHdl IG5lZWQgVGFibGUgbmFtZXMgdG8gZ2VuZXJhdGUgdGhlIFNRTC4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3RhYmxlcy5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRy ZWxpZD1pbmhlcml0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRzJyBp biByZXNbJ3Jvd3MnXVswXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGFba2V5XSA9IHJlc1sncm93cyddWzBdWydpbmhlcml0 cyddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV0g PSBbXQorCisgICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICd0eXBu b3RudWxsJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9 IFRydWUgaWYgKHJlcVtrZXldID09ICd0cnVlJyBvciByZXFba2V5XQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMg VHJ1ZSkgZWxzZSBGYWxzZSBpZlwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocmVxW2tleV0gPT0gJ2ZhbHNlJyBvciByZXFba2V5XSkgaXMgRmFs c2UgZWxzZSAnJworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gcmVxW2tleV0KKworICAg ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3Ry KGUpKQorCisgICAgICAgICAgICBzZWxmLnJlcXVlc3QgPSBkYXRhCisgICAg ICAgICAgICByZXR1cm4gZihzZWxmLCAqKmt3YXJncykKKworICAgICAgICBy ZXR1cm4gd3JhcAorCisgICAgZGVmIG1vZHVsZV9qcyhzZWxmKToKKyAgICAg ICAgIiIiCisgICAgICAgIExvYWQgSlMgZmlsZSAoZm9yZWlnbl90YWJsZXMu anMpIGZvciB0aGlzIG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJl dHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICJmb3JlaWduX3RhYmxlcy9qcy9mb3Jl aWduX3RhYmxlcy5qcyIsCisgICAgICAgICAgICAgICAgXz1nZXR0ZXh0Cisg ICAgICAgICAgICApLAorICAgICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlw ZSc6ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnfQorICAgICAgICApCisK KyAgICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAiIiIK KyAgICAgICAgV29ya3MgYXMgYSBkZWNvcmF0b3IuCisgICAgICAgIENoZWNr cyB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiBzdGF0dXMuCisgICAgICAgIEF0 dGFjaGVzIHRoZSBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0 aCB0byB0aGUgY2xhc3Mgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAg QHdyYXBzKGYpCisgICAgICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6 CisgICAgICAgICAgICBzZWxmID0gYXJnc1swXQorICAgICAgICAgICAgZHJp dmVyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikKKyAgICAgICAg ICAgIHNlbGYubWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIo a3dhcmdzWydzaWQnXSkKKworICAgICAgICAgICAgIyBHZXQgZGF0YWJhc2Ug Y29ubmVjdGlvbgorICAgICAgICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5h Z2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCisKKyAgICAgICAg ICAgIHNlbGYucXRJZGVudCA9IGRyaXZlci5xdElkZW50CisKKyAgICAgICAg ICAgIGlmIG5vdCBzZWxmLmNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAg ICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAg ICAgICAgICAgICAgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAg ICJDb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiCisg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisKKyAg ICAgICAgICAgIHZlciA9IHNlbGYubWFuYWdlci52ZXJzaW9uCisgICAgICAg ICAgICBzZXJ2ZXJfdHlwZSA9IHNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZQor CisgICAgICAgICAgICAjIFNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2Ny aXB0cyBkZXBlbmRpbmcKKyAgICAgICAgICAgICMgb24gdGhlIHNlcnZlciB2 ZXJzaW9uLgorCisgICAgICAgICAgICBpZiB2ZXIgPj0gOTA1MDA6CisgICAg ICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2ZvcmVpZ25fdGFi bGVzL3NxbC85LjVfcGx1cycKKyAgICAgICAgICAgIGVsaWYgdmVyID49IDkw MjAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdm b3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMnCisgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdmb3Jl aWduX3RhYmxlcy9zcWwvOS4xX3BsdXMnCisKKyAgICAgICAgICAgIHJldHVy biBmKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg TGlzdCBhbGwgdGhlIEZvcmVpZ24gVGFibGVzLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAiIiIK KyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdub2RlLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCkKKyAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgIHJldHVybiBhamF4 X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10s CisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5z IHRoZSBGb3JlaWduIFRhYmxlcyB0byBnZW5lcmF0ZSB0aGUgTm9kZXMuCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3Vw IElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElk CisgICAgICAgICIiIgorCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdub2RlLnNxbCddKSwgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJz ZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKworICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciBy b3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCgK KyAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93 c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10sCisg ICAgICAgICAgICAgICAgICAgIHNjaWQsCisgICAgICAgICAgICAgICAgICAg IHJvd1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29u LWZvcmVpZ24tdGFibGUiCisgICAgICAgICAgICAgICAgKSkKKworICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0 YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgICAgIiIi CisgICAgICAgIFJldHVybnMgdGhlIEZvcmVpZ24gVGFibGUgcHJvcGVydGll cy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAg ICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hl bWEgSWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAg ICAgICAgIiIiCisgICAgICAgIGRhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0 aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQpCisKKyAgICAgICAgaWYg bm90IGRhdGE6CisgICAgICAgICAgICByZXR1cm4gZ29uZShnZXR0ZXh0KCIi IgorQ291bGQgbm90IGZpbmQgdGhlIGZvcmVpZ24gdGFibGUgaW4gdGhlIGRh dGFiYXNlLgorSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGJ5IGFub3RoZXIg dXNlciBvcgorc2hpZnRlZCB0byB0aGUgYW5vdGhlciBzY2hlbWEuCisiIiIp KQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAg ICAgcmVzcG9uc2U9ZGF0YSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBn ZXRfY29sbGF0aW9ucyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBmb2lk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgQ29s bGF0aW9ucy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisg ICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUg SWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgcmVzID0gW3snbGFiZWwnOiAn JywgJ3ZhbHVlJzogJyd9XQorICAgICAgICB0cnk6CisgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dldF9jb2xsYXRpb25zLnNxbCddKSkKKyAgICAgICAgICAgIHN0 YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAg ICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgeyds YWJlbCc6IHJvd1snY29weV9jb2xsYXRpb24nXSwKKyAgICAgICAgICAgICAg ICAgICAgICd2YWx1ZSc6IHJvd1snY29weV9jb2xsYXRpb24nXX0KKyAgICAg ICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAg ICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiB0eXBlcyhzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCBmb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAg ICAgICAgUmV0dXJucyB0aGUgRGF0YSBUeXBlcy4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAg IGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisKKyAgICAg ICAgY29uZGl0aW9uID0gIiIidHlwaXNkZWZpbmVkIEFORCB0eXB0eXBlIElO ICgnYicsICdjJywgJ2QnLCAnZScsICdyJykKK0FORCBOT1QgRVhJU1RTIChT RUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWVzcGFjZT10eXBu YW1lc3BhY2UKK0FORCByZWxuYW1lID0gdHlwbmFtZSBBTkQgcmVsa2luZCAh PSAnYycpIEFORAorKHR5cG5hbWUgTk9UIExJS0UgJ18lJyBPUiBOT1QgRVhJ U1RTIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFCityZWxuYW1lc3Bh Y2U9dHlwbmFtZXNwYWNlIEFORCByZWxuYW1lID0gc3Vic3RyaW5nKHR5cG5h bWUgRlJPTSAyKTo6bmFtZQorQU5EIHJlbGtpbmQgIT0gJ2MnKSkiIiIKKwor ICAgICAgICBpZiBzZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3Rz OgorICAgICAgICAgICAgY29uZGl0aW9uICs9ICIgQU5EIG5zcC5uc3BuYW1l ICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnIgorCisgICAgICAgICMgR2V0IFR5 cGVzCisgICAgICAgIHN0YXR1cywgdHlwZXMgPSBzZWxmLmdldF90eXBlcyhz ZWxmLmNvbm4sIGNvbmRpdGlvbikKKworICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz10eXBlcykKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgZGF0YT10eXBlcywKKyAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBnZXRfZm9yZWlnbl9zZXJ2ZXJzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAg ICAgICBSZXR1cm5zIHRoZSBGb3JlaWduIFNlcnZlcnMuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAg ICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAg ICAgICBmb2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICIiIgorICAg ICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFsdWUnOiAnJ31dCisgICAg ICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2ZvcmVpZ25fc2Vy dmVycy5zcWwnXSkpCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxm LmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvciBy b3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHJlcy5hcHBl bmQoCisgICAgICAgICAgICAgICAgICAgIHsnbGFiZWwnOiByb3dbJ3Nydm5h bWUnXSwgJ3ZhbHVlJzogcm93WydzcnZuYW1lJ119CisgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIGdldF90YWJsZXMoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZm9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAg IFJldHVybnMgdGhlIEZvcmVpZ24gVGFibGVzIGFzIHdlbGwgYXMgUGxhaW4g VGFibGVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNl cnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJZAorICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJ ZAorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdnZXRfdGFibGVzLnNxbCddKSwgZm9p ZD1mb2lkKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25u LmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9cnNldFsncm93 cyddLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAg ICkKKworICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBleGNfdHlwZSwg ZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKKyAg ICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcigKKyAgICAgICAg ICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uKGV4Y190eXBlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj X3ZhbHVlLCBleGNfdHJhY2ViYWNrLCBsaW1pdD0yKSkKKworICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIo ZXhjX3ZhbHVlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgZ2V0X2NvbHVtbnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9p ZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIFRh YmxlIENvbHVtbnMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdp ZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJ ZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAg c2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBmb2lkOiBGb3JlaWduIFRh YmxlIElkCisgICAgICAgICAgICBhdHRyZWxpZDogVGFibGUgb2lkCisKKyAg ICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgICAgSlNPTiBBcnJheSB3aXRo IGJlbG93IHBhcmFtZXRlcnMuCisgICAgICAgICAgICAgIGF0dG5hbWU6IENv bHVtbiBOYW1lCisgICAgICAgICAgICAgIGRhdGF0eXBlOiBDb2x1bW4gRGF0 YSBUeXBlCisgICAgICAgICAgICAgIGluaGVyaXRlZF9mcm9tOiBQYXJlbnQg VGFibGUgZnJvbSB3aGljaCB0aGUgcmVsYXRlZCBjb2x1bW4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlzIGluaGVyaXR0ZWQuCisgICAgICAg ICIiIgorICAgICAgICByZXMgPSBbXQorICAgICAgICBkYXRhID0gcmVxdWVz dC5hcmdzIGlmIHJlcXVlc3QuYXJncyBlbHNlIE5vbmUKKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgaWYgZGF0YSBhbmQgJ2F0dHJlbGlkJyBpbiBkYXRh OgorICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF90YWJsZV9jb2x1 bW5zLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXR0cmVsaWQ9ZGF0YVsnYXR0cmVsaWQnXSkKKyAgICAgICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQorCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1yZXNbJ3Jvd3Mn XSwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAg ICAgICAgICkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgZXhjX3R5 cGUsIGV4Y192YWx1ZSwgZXhjX3RyYWNlYmFjayA9IHN5cy5leGNfaW5mbygp CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IodHJhY2Vi YWNrLnByaW50X2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICBleGNfdHlw ZSwKKyAgICAgICAgICAgICAgICBleGNfdmFsdWUsCisgICAgICAgICAgICAg ICAgZXhjX3RyYWNlYmFjaywKKyAgICAgICAgICAgICAgICBsaW1pdD0yCisg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl eGNfdmFsdWUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2 YWxpZGF0ZV9yZXF1ZXN0CisgICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZXMg YSBuZXcgRm9yZWlnbiBUYWJsZSBvYmplY3QuCisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAg ICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJ ZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBm b2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICAgICBuYW1lOiBGb3Jl aWduIFRhYmxlIE5hbWUKKyAgICAgICAgICAgIGJhc2Vuc3A6IFNjaGVtYSBO YW1lCisgICAgICAgICAgICBmdHNydm5hbWU6IEZvcmVpZ24gU2VydmVyIE5h bWUKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgRm9yZWlnbiBU YWJsZSBvYmplY3QgaW4ganNvbiBmb3JtYXQuCisgICAgICAgICIiIgorICAg ICAgICB0cnk6CisgICAgICAgICAgICAjIEdldCBTUUwgdG8gY3JlYXRlIEZv cmVpZ24gVGFibGUKKyAgICAgICAgICAgIHN0YXR1cywgU1FMID0gc2VsZi5n ZXRfc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHNlbGYucmVxdWVzdCkKKyAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1TUUwpCisKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgICMgTmVlZCBvaWQgdG8gYWRkIG9iamVj dCBpbiB0aGUgdHJlZSBhdCBicm93c2VyLgorICAgICAgICAgICAgYmFzZW5z cCA9IHNlbGYucmVxdWVzdFsnYmFzZW5zcCddIGlmICgnYmFzZW5zcCcgaW4g c2VsZi5yZXF1ZXN0KSBcCisgICAgICAgICAgICAgICAgZWxzZSBOb25lCisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2dldF9vaWQuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vuc3A9YmFzZW5zcCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXNlbGYucmVx dWVzdFsnbmFtZSddKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvaWQs IHNjaWQgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICByZXR1cm4g anNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2RlPXNlbGYuYmx1ZXByaW50 LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAg Zm9pZCwKKyAgICAgICAgICAgICAgICAgICAgc2NpZCwKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5yZXF1ZXN0WyduYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgIGljb249Imljb24tZm9yZWlnbi10YWJsZSIKKyAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZm9pZCk6CisgICAgICAgICIiIgorICAgICAgICBEcm9wcyB0aGUgRm9y ZWlnbiBUYWJsZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lk OiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElk CisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBz Y2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFi bGUgSWQKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuY21kID09ICdk ZWxldGUnOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2FzY2FkZSBvcGVy YXRpb24KKyAgICAgICAgICAgIGNhc2NhZGUgPSBUcnVlCisgICAgICAgIGVs c2U6CisgICAgICAgICAgICBjYXNjYWRlID0gRmFsc2UKKworICAgICAgICB0 cnk6CisgICAgICAgICAgICAjIEZldGNoIE5hbWUgYW5kIFNjaGVtYSBOYW1l IHRvIGRlbGV0ZSB0aGUgZm9yZWlnbiB0YWJsZS4KKyAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxl dGUuc3FsJ10pLCBzY2lkPXNjaWQsIGZvaWQ9Zm9pZCkKKyAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgICAgICBuYW1lLCBiYXNlbnNwID0gcmVzWydyb3dzJ11bMF0K KworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9bmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbnNwPWJhc2Vuc3As CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzY2FkZT1j YXNjYWRlKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisg ICAgICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJGb3JlaWduIFRhYmxlIGRy b3BwZWQiKSwKKyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg ICAgICAgICAgJ2lkJzogZm9pZCwKKyAgICAgICAgICAgICAgICAgICAgJ3Nj aWQnOiBzY2lkLAorICAgICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAor ICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAg ICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2 YWxpZGF0ZV9yZXF1ZXN0CisgICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCBmb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFVw ZGF0ZXMgdGhlIEZvcmVpZ24gVGFibGUuCisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBz aWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAor ICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBmb2lk OiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICIiIgorICAgICAgICBzdGF0 dXMsIFNRTCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBz ZWxmLnJlcXVlc3QsIGZvaWQpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9U1FMKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIFNR TCBhbmQgU1FMLnN0cmlwKCdcbicpIGFuZCBTUUwuc3RyaXAoJyAnKToKKyAg ICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdnZXRfb2lkLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZm9pZD1mb2lkKQorICAgICAgICAgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisg ICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgICAgICBzY2lkID0gcmVzWydyb3dzJ11bMF1b J3NjaWQnXQorCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAg ICAgICAgICAgICAgICAgICBpbmZvPSJGb3JlaWduIFRhYmxlIHVwZGF0ZWQi LAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAg ICAgICAgICAgICdpZCc6IGZvaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lk Jzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAg ICAgICAgICAgICAgICBpbmZvPSJOb3RoaW5nIHRvIHVwZGF0ZSIsCisgICAg ICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAg ICAgJ2lkJzogZm9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzY2lk Jzogc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAorICAgICAg ICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZm9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVy bnMgdGhlIFNRTCBmb3IgdGhlIEZvcmVpZ24gVGFibGUgb2JqZWN0LgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ ZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAor ICAgICAgICAgICAgZm9pZDogRm9yZWlnbiBUYWJsZSBJZAorICAgICAgICAi IiIKKyAgICAgICAgZGF0YSA9IHNlbGYuX2ZldGNoX3Byb3BlcnRpZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCwgZm9pZCwgaW5oZXJpdHM9VHJ1ZSkKKworICAg ICAgICBjb2xfZGF0YSA9IFtdCisgICAgICAgIGZvciBjIGluIGRhdGFbJ2Nv bHVtbnMnXToKKyAgICAgICAgICAgIGlmIChub3QgJ2luaGVyaXRlZGZyb20n IGluIGMpIG9yIChjWydpbmhlcml0ZWRmcm9tJ10gaXMgTm9uZSk6CisgICAg ICAgICAgICAgICAgY29sX2RhdGEuYXBwZW5kKGMpCisKKyAgICAgICAgZGF0 YVsnY29sdW1ucyddID0gY29sX2RhdGEKKworICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRl LnNxbCddKSwgZGF0YT1kYXRhKQorCisgICAgICAgIHNxbF9oZWFkZXIgPSAi IiItLSB7MH06IHsxfQorCistLSBEUk9QIHswfSB7MX07CisKKyIiIi5mb3Jt YXQoJ0ZPUkVJR04gVEFCTEUnLCBkYXRhWydiYXNlbnNwJ10gKyAiLiIgKyBk YXRhWyduYW1lJ10pCisKKyAgICAgICAgU1FMID0gc3FsX2hlYWRlciArIFNR TAorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPVNR TC5zdHJpcCgnXG4nKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBAdmFsaWRhdGVfcmVxdWVzdAorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGZvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAg ICAgICBSZXR1cm5zIHRoZSBtb2RpZmllZCBTUUwuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAg ICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAg ICBmb2lkOiBGb3JlaWduIFRhYmxlIElkCisgICAgICAgICAgICBuYW1lOiBG b3JlaWduIFRhYmxlIE5hbWUKKyAgICAgICAgICAgIGZ0c3J2bmFtZTogRm9y ZWlnbiBTZXJ2ZXIgTmFtZQorCisgICAgICAgIFJldHVybnM6CisgICAgICAg ICAgICBTUUwgc3RhdGVtZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBGb3Jl aWduIFRhYmxlLgorICAgICAgICAiIiIKKyAgICAgICAgc3RhdHVzLCBTUUwg PSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgc2VsZi5yZXF1 ZXN0LCBmb2lkKQorICAgICAgICBpZiBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRh dGE9U1FMLnN0cmlwKCdcbicpLAorICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg IHJldHVybiBTUUwKKworICAgIGRlZiBnZXRfc3FsKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIGRhdGEsIGZvaWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBHZW5yYXRlcyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRl L3VwZGF0ZSB0aGUgRm9yZWlnbiBUYWJsZS4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElk CisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZv aWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisgICAgICAgIHRy eToKKyAgICAgICAgICAgIGlmIGZvaWQgaXMgbm90IE5vbmU6CisgICAgICAg ICAgICAgICAgb2xkX2RhdGEgPSBzZWxmLl9mZXRjaF9wcm9wZXJ0aWVzKGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzPVRydWUp CisKKyAgICAgICAgICAgICAgICBpZiBub3Qgb2xkX2RhdGE6CisgICAgICAg ICAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQoIiIiCisgICAgICAg IENvdWxkIG5vdCBmaW5kIHRoZSBmb3JlaWduIHRhYmxlIGluIHRoZSBkYXRh YmFzZS4KKyAgICAgICAgSXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGJ5IGFu b3RoZXIgdXNlciBvcgorICAgICAgICBzaGlmdGVkIHRvIHRoZSBhbm90aGVy IHNjaGVtYS4KKyAgICAgICAgIiIiKSkKKworICAgICAgICAgICAgICAgICMg UHJlcGFyZSBkaWN0IG9mIGNvbHVtbnMgd2l0aCBrZXkgPSBjb2x1bW4ncyBh dHRudW0KKyAgICAgICAgICAgICAgICAjIFdpbGwgdXNlIHRoaXMgaW4gdGhl IHVwZGF0ZSB0ZW1wbGF0ZSB3aGVuIGFueSBjb2x1bW4gaXMKKyAgICAgICAg ICAgICAgICAjIGNoYW5nZWQsIHRvIGlkZW50aWZ5IHRoZSBjb2x1bW5zLgor ICAgICAgICAgICAgICAgIGNvbF9kYXRhID0ge30KKyAgICAgICAgICAgICAg ICBmb3IgYyBpbiBvbGRfZGF0YVsnY29sdW1ucyddOgorICAgICAgICAgICAg ICAgICAgICBjb2xfZGF0YVtjWydhdHRudW0nXV0gPSBjCisKKyAgICAgICAg ICAgICAgICBvbGRfZGF0YVsnY29sdW1ucyddID0gY29sX2RhdGEKKworICAg ICAgICAgICAgICAgIGlmICdjb2x1bW5zJyBpbiBkYXRhIGFuZCAnYWRkZWQn IGluIGRhdGFbJ2NvbHVtbnMnXToKKyAgICAgICAgICAgICAgICAgICAgZGF0 YVsnY29sdW1ucyddWydhZGRlZCddID0gc2VsZi5fZm9ybWF0X2NvbHVtbnMo CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ11bJ2Fk ZGVkJ10pCisKKyAgICAgICAgICAgICAgICBpZiAnY29sdW1ucycgaW4gZGF0 YSBhbmQgJ2NoYW5nZWQnIGluIGRhdGFbJ2NvbHVtbnMnXToKKyAgICAgICAg ICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddWydjaGFuZ2VkJ10gPSBzZWxm Ll9mb3JtYXRfY29sdW1ucygKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh dGFbJ2NvbHVtbnMnXVsnY2hhbmdlZCddKQorCisgICAgICAgICAgICAgICAg IyBQYXJzZSBQcml2aWxlZ2VzCisgICAgICAgICAgICAgICAgaWYgJ2FjbCcg aW4gZGF0YSBhbmQgJ2FkZGVkJyBpbiBkYXRhWydhY2wnXToKKyAgICAgICAg ICAgICAgICAgICAgZGF0YVsnYWNsJ11bJ2FkZGVkJ10gPSBwYXJzZV9wcml2 X3RvX2RiKGRhdGFbJ2FjbCddWydhZGRlZCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJhIiwgInIi LCAidyIsICJ4Il0pCisgICAgICAgICAgICAgICAgaWYgJ2FjbCcgaW4gZGF0 YSBhbmQgJ2NoYW5nZWQnIGluIGRhdGFbJ2FjbCddOgorICAgICAgICAgICAg ICAgICAgICBkYXRhWydhY2wnXVsnY2hhbmdlZCddID0gcGFyc2VfcHJpdl90 b19kYigKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2FjbCddWydj aGFuZ2VkJ10sWyJhIiwgInIiLCAidyIsICJ4Il0pCisgICAgICAgICAgICAg ICAgaWYgJ2FjbCcgaW4gZGF0YSBhbmQgJ2RlbGV0ZWQnIGluIGRhdGFbJ2Fj bCddOgorICAgICAgICAgICAgICAgICAgICBkYXRhWydhY2wnXVsnZGVsZXRl ZCddID0gcGFyc2VfcHJpdl90b19kYigKKyAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGFbJ2FjbCddWydkZWxldGVkJ10sWyJhIiwgInIiLCAidyIsICJ4 Il0pCisKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBk YXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YQorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YVsnY29s dW1ucyddID0gc2VsZi5fZm9ybWF0X2NvbHVtbnMoZGF0YVsnY29sdW1ucydd KQorCisgICAgICAgICAgICAgICAgIyBQYXJzZSBQcml2aWxlZ2VzCisgICAg ICAgICAgICAgICAgaWYgJ2FjbCcgaW4gZGF0YToKKyAgICAgICAgICAgICAg ICAgICAgZGF0YVsnYWNsJ10gPSBwYXJzZV9wcml2X3RvX2RiKGRhdGFbJ2Fj bCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgWyJhIiwgInIiLCAidyIsICJ4Il0pCisKKyAgICAgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLCBkYXRhPWRhdGEp CisgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgU1FMCisKKyAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl LCBlCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlcGVu ZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZm9pZCk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5k ZW50cyBhbmQgcmV0dXJuIGFqYXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRo ZSBGb3JlaWduIFRhYmxlIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisg ICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGZvaWQ6 IEZvcmVpZ24gVGFibGUgSWQKKyAgICAgICAgIiIiCisgICAgICAgIGRlcGVu ZGVudHNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW50cyhzZWxmLmNvbm4s IGZvaWQpCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAg ICAgICAgcmVzcG9uc2U9ZGVwZW5kZW50c19yZXN1bHQsCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIGZvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJuIGFqYXgg cmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSAgRm9yZWlnbiBUYWJsZSBvYmpl Y3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVy IEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAg ICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2No ZW1hIElkCisgICAgICAgICAgICBmb2lkOiBGb3JlaWduIFRhYmxlIElkCisg ICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbmNpZXNfcmVzdWx0ID0gc2Vs Zi5nZXRfZGVwZW5kZW5jaWVzKHNlbGYuY29ubiwgZm9pZCkKKyAgICAgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1k ZXBlbmRlbmNpZXNfcmVzdWx0LAorICAgICAgICAgICAgc3RhdHVzPTIwMAor ICAgICAgICApCisKKyAgICBkZWYgX2Zvcm1hdF9jb2x1bW5zKHNlbGYsIGNv bHVtbnMpOgorICAgICAgICAiIiIKKyAgICAgICAgRm9ybWF0IFRhYmxlIENv bHVtbnMuCisgICAgICAgICIiIgorICAgICAgICBjb2xzID0gW10KKyAgICAg ICAgZm9yIGMgaW4gY29sdW1uczoKKyAgICAgICAgICAgIGlmIGxlbihjKSA+ IDA6CisgICAgICAgICAgICAgICAgaWYgJ1tdJyBpbiBjWydkYXRhdHlwZSdd OgorICAgICAgICAgICAgICAgICAgICBjWydkYXRhdHlwZSddID0gY1snZGF0 YXR5cGUnXS5yZXBsYWNlKCdbXScsICcnKQorICAgICAgICAgICAgICAgICAg ICBjWydpc0FycmF5VHlwZSddID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVs c2U6CisgICAgICAgICAgICAgICAgICAgIGNbJ2lzQXJyYXlUeXBlJ10gPSBG YWxzZQorICAgICAgICAgICAgICAgIGNvbHMuYXBwZW5kKGMpCisKKyAgICAg ICAgcmV0dXJuIGNvbHMKKworCisgICAgZGVmIF9mZXRjaF9wcm9wZXJ0aWVz KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGZvaWQsIGluaGVyaXRzPUZh bHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIEZvcmVp Z24gVGFibGUgcHJvcGVydGllcyB3aGljaCB3aWxsIGJlIHVzZWQgaW4KKyAg ICAgICAgcHJvcGVydGllcywgc3FsIGFuZCBnZXRfc3FsIGZ1bmN0aW9ucy4K KworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3Jv dXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAg ICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEg SWQKKyAgICAgICAgICAgIGZvaWQ6IEZvcmVpZ24gVGFibGUgSWQKKyAgICAg ICAgICAgIGluaGVyaXRzOiBJZiBUcnVlIHRoZW4gaW5oZXJpdGVkIHRhYmxl IHdpbGwgYmUgZmV0Y2hlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAg ZGF0YWJhc2UKKworICAgICAgICBSZXR1cm5zOgorCisgICAgICAgICIiIgor ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIGZvaWQ9Zm9pZCkKKyAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg IGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJldHVy biBGYWxzZQorCisgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorCisg ICAgICAgIGlmIHNlbGYubWFuYWdlci52ZXJzaW9uID49IDkwMjAwOgorICAg ICAgICAgICAgIyBGZXRjaCBwcml2aWxlZ2VzCisgICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2FjbC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZm9pZD1mb2lkKQorICAgICAgICAgICAgc3RhdHVzLCBhY2xyZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1hY2xyZXMpCisKKyAgICAgICAgICAg ICMgR2V0IEZvcm1hdHRlZCBQcml2aWxlZ2VzCisgICAgICAgICAgICBkYXRh LnVwZGF0ZShzZWxmLl9mb3JtYXRfcHJvYWNsX2Zyb21fZGIoYWNscmVzWydy b3dzJ10pKQorCisgICAgICAgICMgR2V0IGZvcm1hdHRlZCBTZWN1cml0eSBM YWJlbHMKKyAgICAgICAgaWYgJ3NlY2xhYmVscycgaW4gZGF0YToKKyAgICAg ICAgICAgIGRhdGEudXBkYXRlKHBhcnNlX3NlY19sYWJlbHNfZnJvbV9kYihk YXRhWydzZWNsYWJlbHMnXSkpCisKKyAgICAgICAgIyBHZXQgZm9ybWF0dGVk IFZhcmlhYmxlcworICAgICAgICBpZiAnZnRvcHRpb25zJyBpbiBkYXRhOgor ICAgICAgICAgICAgZGF0YS51cGRhdGUoeydzdHJmdG9wdGlvbnMnOiBkYXRh WydmdG9wdGlvbnMnXX0pCisgICAgICAgICAgICBkYXRhLnVwZGF0ZShzZWxm Ll9wYXJzZV92YXJpYWJsZXNfZnJvbV9kYihkYXRhWydmdG9wdGlvbnMnXSkp CisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50cy5zcWwnXSksIGZvaWQ9 Zm9pZCkKKyAgICAgICAgc3RhdHVzLCBjb25zID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWNv bnMpCisKKyAgICAgICAgaWYgY29ucyBhbmQgJ3Jvd3MnIGluIGNvbnM6Cisg ICAgICAgICAgICBkYXRhWydjb25zdHJhaW50cyddID0gY29uc1sncm93cydd CisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5zLnNxbCddKSwgZm9pZD1mb2lk KQorICAgICAgICBzdGF0dXMsIGNvbHMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9Y29scykK KworICAgICAgICAjIFRoZSBMZW5ndGggYW5kIHRoZSBwcmVjaXNpb24gb2Yg dGhlIERhdGF0eXBlIHNob3VsZCBiZSBzZXBhcmF0ZWQuCisgICAgICAgICMg VGhlIEZvcm1hdCB3ZSBnZXR0aW5nIGZyb20gZGF0YWJhc2UgaXM6IG51bWVy aWMoMSwxKQorICAgICAgICAjIFNvLCB3ZSBuZWVkIHRvIHNlcGFyYXRlIGl0 IGFzIExlbmd0aDogMSwgUHJlY2lzaW9uOiAxCisgICAgICAgIGZvciBjIGlu IGNvbHNbJ3Jvd3MnXToKKyAgICAgICAgICAgIGlmIGNbJ2Z1bGx0eXBlJ10g IT0gJycgYW5kIGNbJ2Z1bGx0eXBlJ10uZmluZCgiKCIpID4gMDoKKyAgICAg ICAgICAgICAgICBzdWJzdHIgPSBjWydmdWxsdHlwZSddW2NbJ2Z1bGx0eXBl J10uZmluZCgiKCIpICsgMTpjWydmdWxsdHlwZSddLmZpbmQoIikiKV0KKyAg ICAgICAgICAgICAgICB0eXBsZW4gPSBzdWJzdHIuc3BsaXQoIiwiKQorICAg ICAgICAgICAgICAgIGlmIGxlbih0eXBsZW4pID4gMToKKyAgICAgICAgICAg ICAgICAgICAgY1sndHlwbGVuJ10gPSBpbnQodHlwbGVuWzBdKQorICAgICAg ICAgICAgICAgICAgICBjWydwcmVjaXNpb24nXSA9IGludCh0eXBsZW5bMV0p CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg Y1sndHlwbGVuJ10gPSBpbnQodHlwbGVuWzBdKQorICAgICAgICAgICAgICAg ICAgICBjWydwcmVjaXNpb24nXSA9IE5vbmUKKworICAgICAgICBpZiBjb2xz IGFuZCAncm93cycgaW4gY29sczoKKyAgICAgICAgICAgIGRhdGFbJ2NvbHVt bnMnXSA9IGNvbHNbJ3Jvd3MnXQorCisgICAgICAgIGRhdGFbJ3N0cmNvbHVt biddID0gJycKKyAgICAgICAgc3RyX2NvbHMgPSBbXQorICAgICAgICBpZiAn Y29sdW1ucycgaW4gZGF0YToKKyAgICAgICAgICAgIGZvciBjIGluIGRhdGFb J2NvbHVtbnMnXToKKyAgICAgICAgICAgICAgICBzdHJfY29scy5hcHBlbmQo Y1snc3RyY29sdW1uJ10pCisgICAgICAgICAgICBkYXRhWydzdHJjb2x1bW4n XSA9ICcsICcuam9pbihzdHJfY29scykKKworICAgICAgICAjIEdldCBJbmhl cml0ZWQgdGFibGUgbmFtZXMgZnJvbSB0aGVpciBPSUQKKyAgICAgICAgaWYg aW5oZXJpdHM6CisgICAgICAgICAgICBpZiAnaW5oZXJpdHMnIGluIGRhdGEg YW5kIGRhdGFbJ2luaGVyaXRzJ106CisgICAgICAgICAgICAgICAgaW5oZXJp dHMgPSB0dXBsZShbaW50KHgpIGZvciB4IGluIGRhdGFbJ2luaGVyaXRzJ11d KQorICAgICAgICAgICAgICAgIGlmIGxlbihpbmhlcml0cykgPT0gMToKKyAg ICAgICAgICAgICAgICAgICAgaW5oZXJpdHMgPSAiKCIgKyBzdHIoaW5oZXJp dHNbMF0pICsgIikiCisKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn ZXRfdGFibGVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXR0cmVsaWQ9aW5oZXJpdHMpCisgICAgICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KworICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorCisgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRzJyBpbiBy ZXNbJ3Jvd3MnXVswXToKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnaW5o ZXJpdHMnXSA9IHJlc1sncm93cyddWzBdWydpbmhlcml0cyddCisKKyAgICAg ICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBfZm9ybWF0X3Byb2FjbF9mcm9t X2RiKHNlbGYsIHByb2FjbCk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1 cm5zIHByaXZpbGVnZXMuCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBw cm9hY2w6IFByaXZpbGVnZXMgRGljdAorICAgICAgICAiIiIKKyAgICAgICAg cHJpdmlsZWdlcyA9IFtdCisgICAgICAgIGZvciByb3cgaW4gcHJvYWNsOgor ICAgICAgICAgICAgcHJpdiA9IHBhcnNlX3ByaXZfZnJvbV9kYihyb3cpCisg ICAgICAgICAgICBwcml2aWxlZ2VzLmFwcGVuZChwcml2KQorCisgICAgICAg IHJldHVybiB7ImFjbCI6IHByaXZpbGVnZXN9CisKKyAgICBkZWYgX3BhcnNl X3ZhcmlhYmxlc19mcm9tX2RiKHNlbGYsIGRiX3ZhcmlhYmxlcyk6CisgICAg ICAgICIiIgorICAgICAgICBGdW5jdGlvbiB0byBmb3JtYXQgdGhlIG91dHB1 dCBmb3IgdmFyaWFibGVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg ICBkYl92YXJpYWJsZXM6IFZhcmlhYmxlIG9iamVjdAorCisgICAgICAgICAg ICAgICAgRXhwZWN0ZWQgT2JqZWN0IEZvcm1hdDoKKyAgICAgICAgICAgICAg ICAgICAgWydvcHRpb24xPXZhbHVlMScsIC4uXQorICAgICAgICAgICAgICAg IHdoZXJlOgorICAgICAgICAgICAgICAgICAgICB1c2VyX25hbWUgYW5kIGRh dGFiYXNlIGFyZSBvcHRpb25hbAorICAgICAgICBSZXR1cm5zOgorICAgICAg ICAgICAgVmFyaWFibGUgT2JqZWN0IGluIGJlbG93IGZvcm1hdDoKKyAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyc6IFsK KyAgICAgICAgICAgICAgICAgICAgeyduYW1lJzogJ3Zhcl9uYW1lJywgJ3Zh bHVlJzogJ3Zhcl92YWx1ZScsCisgICAgICAgICAgICAgICAgICAgICd1c2Vy X25hbWUnOiAndXNlcl9uYW1lJywgJ2RhdGFiYXNlJzogJ2RhdGFiYXNlX25h bWUnfSwKKyAgICAgICAgICAgICAgICAgICAgLi4uXQorICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICB3aGVyZToKKyAgICAgICAgICAgICAg ICAgICAgdXNlcl9uYW1lIGFuZCBkYXRhYmFzZSBhcmUgb3B0aW9uYWwKKyAg ICAgICAgIiIiCisgICAgICAgIHZhcmlhYmxlc19sc3QgPSBbXQorCisgICAg ICAgIGlmIGRiX3ZhcmlhYmxlcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAg IGZvciByb3cgaW4gZGJfdmFyaWFibGVzOgorICAgICAgICAgICAgICAgIHZh cl9uYW1lLCB2YXJfdmFsdWUgPSByb3cuc3BsaXQoIj0iKQorICAgICAgICAg ICAgICAgICMgQmVjYXVzZSB3ZSBzYXZlIGFzIGJvb2xlYW4gc3RyaW5nIGlu IGRiIHNvIGl0IG5lZWRzCisgICAgICAgICAgICAgICAgIyBjb252ZXJzaW9u CisgICAgICAgICAgICAgICAgaWYgdmFyX3ZhbHVlID09ICdmYWxzZScgb3Ig dmFyX3ZhbHVlID09ICdvZmYnOgorICAgICAgICAgICAgICAgICAgICB2YXJf dmFsdWUgPSBGYWxzZQorCisgICAgICAgICAgICAgICAgdmFyX2RpY3QgPSB7 J29wdGlvbic6IHZhcl9uYW1lLCAndmFsdWUnOiB2YXJfdmFsdWV9CisKKyAg ICAgICAgICAgICAgICB2YXJpYWJsZXNfbHN0LmFwcGVuZCh2YXJfZGljdCkK KworICAgICAgICByZXR1cm4geyJmdG9wdGlvbnMiOiB2YXJpYWJsZXNfbHN0 fQorCitGb3JlaWduVGFibGVWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVl cHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy9zdGF0aWMvaW1nL2NvbGwtZm9yZWlnbi10YWJsZS5wbmcgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvaW1nL2NvbGwtZm9y ZWlnbi10YWJsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMxZjc0 MmJiY2EwNTk4MGYzYzRjYmYzYzE2YWYwZTBjZjlhZmE0MQpHSVQgYmluYXJ5 IHBhdGNoCmxpdGVyYWwgNDkyCnpjbVY8STBUY2QtUCk8aDszS3xMazAwMGUx TkpMVHEwMDBtRzAwMG1PMHt7UjNDQGx8RDAwMDAxYjVjaF8wSXRwKQp6PT5Q eCN4PT43MU1Qc0A0QShpS2YmaTw2b2BLe0lSJUd+UFM8TEJuKj1qUF8tI258 Unt4IyUjUT0hbmghUW4yIX4KeikkUUhnLUdqXmlkZEI7MiExLTNQXkdVMWxK KkRrMnA2ZSU+PkU3UG5nVWtJJnRNRU9mP0lAWSktezBUajteTzF1Cno8S15Z JGhyczlIO05ZakhyPnZ+Mz9DazlCPyhYVTc+RVlxd3Jsekstc0htOzJ0KkBg ST5nd3V7JUpiKnY9ai1lMQp6PTstTEZzajJWcEBBMntSP2R8UVZzO2FRQ3Uo R25VPG1CWT1AYkcpYWApfFBiRDRGUHFwVCMycDAwMDRXUWNoQzwKeks8M3pI MDAwMDFWb09JdjBFaCkwTkJ7cjszMjtiUmF7dkdmNjk1MVU2OUU5NG9FUUtB MDAocVFPK15SVzB+ezQ3CnpDVmM7JWNLYHFZbz1IU09SMmI3OyYlRi05RmJx Yn5kXkNhOUY1eT1RM0poVXRtUTFkTSF1ITckUDc2WlI8SVIhZgp6ODJyWUpn R0ZXQ2EjaHoyQGY2eml6ZDxgUUBIMnpXJDI9bnVIQyUkND9UKG0yQWw3ZyQ9 RTVZfGlBWGZLN3NFajsKelBMaWAySmM9UXkwNHZzTT0rJl5kSCtZZERKQ2wr Y0VRYnlVZUlIIThxfUwjRjFvazI/NFFrTm5QVChxVGBYT1RRCmk8REg0OGts TlVOWitgPU0oaFVtbUs7Ull0MDAwMDxNTlVNbkxTVFg9VGx2dWQKCmxpdGVy YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2ZvcmVpZ25fdGFibGVzL3N0YXRpYy9pbWcvZm9yZWlnbi10YWJsZS5wbmcg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvaW1nL2Zv cmVpZ24tdGFibGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzYzEz Mzg4NWEwYzBjNzA1MGU0Yzg1ODBhZGZkNzVmOGNlYWE4NTIKR0lUIGJpbmFy eSBwYXRjaApsaXRlcmFsIDU2Mwp6Y21WLTMwP2hyMVApPGg7M0t8TGswMDBl MU5KTFRxMDAwbUcwMDBtTzB7e1IzQ0BsfEQwMDAwMWI1Y2hfMEl0cCkKej0+ UHgjKWxmYFNNZGFrPEEoaUtpKEVwT3BgPVpuSnk0ZFp9LXw2NHU9akc8LT1I fSt3O3BNRSg9VlAoeEV9UTYhCnomO056WXsoaXsoYjtKNT56VzhDZF9FeGc8 T1JWcmZyfHZoUD5AQSQ/Q1liNGslPjhTPV8oNyliSGxnZTtvYShnSgp6PyVt enAtcm5CZC17MFdpO05qdW47Xk59dDxLeU0hPCVockw9Oy1MXz5GTVhePWMl Y3d0Z05pOz9Da0NCP2VGakoKej5nd3ZKcj5DZj5zSTlIN3VkbERgPitBNkZA YmRFVj8oWGladEU7ZkV1KDdlUnZhKylBQCR2S1heWSEpaHdZOWJPCnpfVilQ cl9fbnNUeFZYNllfeER0I0tSb35kMDBER1RQRSFDdD1HYk5jMDAwNEVPR2lX aWh5QCk7MDAwMDlhN2JCbQp6MDAwWFUwMDBYVTBSV251N3l0a08yWHNrSU1G LW1oOTJGPWVsSldtcjAwMDJXTmtsPFo3fUhoSC1FTStGNUMhMCEKeiFhYFNP RSE1JnFPTiYlKHc/SVRPYVQ5SF9HNHVaSzxTZXhwJmZSPURuYW1MYT9uVmQh ND8hclNfKSkxKmc0KUNRCnpEYjFjSUZacHlmVWtyKXlZbnJfPTZ6P0JAUCVm OSU9VzR6QWBjYEl1K2tXWDBqVH1IVktrV3VKQ0kmVE1ne25XYQp6dHV8eU1C SSs0QDl1MCpzQldzQ2FSbzhvQDAzZFh3YlBWaEVxPzIrMWwzWnNhMkchSU1j UjVWVCRhTmw/b3JSZEYKejBMYUx0NEU2YiE7fl9VSU5iK1pKKzsrV0BMKVNv aUBQcWsofDBfeXo2d3wmUVF7P352MDAyb3ZQREhMa1YxbkZoCkJDbkVwPQoK bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L2pzL2ZvcmVpZ25fdGFibGVzLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWln bl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL2pzL2ZvcmVpZ25f dGFibGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmU2ZWQ5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m b3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvanMvZm9y ZWlnbl90YWJsZXMuanMKQEAgLTAsMCArMSw3NTEgQEAKKy8qIENyZWF0ZSBh bmQgUmVnaXN0ZXIgRm9yZWlnbiBUYWJsZSBDb2xsZWN0aW9uIGFuZCBOb2Rl LiAqLworZGVmaW5lKAorICAgICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3Jl JywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLCAncGdhZG1pbi5i cm93c2VyJywgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0 aW9uJ10sCitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIs IGFsZXJ0aWZ5KSB7CisKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwt Zm9yZWlnbi10YWJsZSddKSB7CisgICAgdmFyIGZvcmVpZ250YWJsZSA9IHBn QWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1mb3JlaWduLXRhYmxlJ10gPQor ICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAg ICAgICAgbm9kZTogJ2ZvcmVpZ24tdGFibGUnLAorICAgICAgICBsYWJlbDog J3t7IF8oJ0ZvcmVpZ24gVGFibGVzJykgfX0nLAorICAgICAgICB0eXBlOiAn Y29sbC1mb3JlaWduLXRhYmxlJywKKyAgICAgICAgY29sdW1uczogWyduYW1l JywgJ293bmVyJywgJ2Rlc2NyaXB0aW9uJ10KKyAgICAgIH0pOworICB9Owor CisgIC8vIFNlY3VyaXR5IE1vZGVsCisgIHZhciBTZWN1cml0eU1vZGVsID0g QmFja2Zvcm0uU2VjdXJpdHlNb2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rl Lk1vZGVsLmV4dGVuZCh7CisgICAgZGVmYXVsdHM6IHsKKyAgICAgIHByb3Zp ZGVyOiBudWxsLAorICAgICAgbGFiZWw6IG51bGwKKyAgICB9LAorICAgIHNj aGVtYTogW3sKKyAgICAgIGlkOiAncHJvdmlkZXInLCBsYWJlbDogJ3t7IF8o J1Byb3ZpZGVyJykgfX0nLAorICAgICAgdHlwZTogJ3RleHQnLCBlZGl0YWJs ZTogdHJ1ZSwgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNTAn CisgICAgfSx7CisgICAgICBpZDogJ3NlY3VyaXR5X2xhYmVsJywgbGFiZWw6 ICd7eyBfKCdTZWN1cml0eSBMYWJlbCcpIH19JywKKyAgICAgIHR5cGU6ICd0 ZXh0JywgZWRpdGFibGU6IHRydWUsIGNlbGxIZWFkZXJDbGFzc2VzOid3aWR0 aF9wZXJjZW50XzUwJworICAgIH1dLAorICAgIHZhbGlkYXRlOiBmdW5jdGlv bigpIHsKKyAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICBlcnJtc2cg PSBudWxsLAorICAgICAgICAgIGRhdGEgPSB0aGlzLnRvSlNPTigpOworCisg ICAgICBpZiAoXy5pc1VuZGVmaW5lZChkYXRhLnNlY3VyaXR5X2xhYmVsKSB8 fAorICAgICAgICBfLmlzTnVsbChkYXRhLnNlY3VyaXR5X2xhYmVsKSB8fAor ICAgICAgICBTdHJpbmcoZGF0YS5zZWN1cml0eV9sYWJlbCkucmVwbGFjZSgv XlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICByZXR1cm4gXygi UGxlYXNlIHNwZWNpZnkgdGhlIHZhbHVlIGZvciBhbGwgdGhlIHNlY3VyaXR5 IHByb3ZpZGVycy4iKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBudWxsOwor ICAgIH0KKyAgfSk7CisKKyAgLy8gSW50ZWdlciBDZWxsIGZvciBDb2x1bW5z IExlbmd0aCBhbmQgUHJlY2lzaW9uCisgIHZhciBJbnRlZ2VyRGVwQ2VsbCA9 IEJhY2tncmlkLkludGVnZXJDZWxsLmV4dGVuZCh7CisgICAgICBpbml0aWFs aXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgQmFja2dyaWQuTnVtYmVyQ2Vs bC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMp OworICAgICAgICBCYWNrZ3JpZC5FeHRlbnNpb24uRGVwZW5kZW50Q2VsbC5w cm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor ICAgICAgfSwKKyAgICAgIGRlcGVuZGVudENoYW5nZWQ6IGZ1bmN0aW9uICgp IHsKKyAgICAgICAgdGhpcy4kZWwuZW1wdHkoKTsKKyAgICAgICAgdmFyIG1v ZGVsID0gdGhpcy5tb2RlbDsKKyAgICAgICAgdmFyIGNvbHVtbiA9IHRoaXMu Y29sdW1uOworICAgICAgICBlZGl0YWJsZSA9IHRoaXMuY29sdW1uLmdldCgi ZWRpdGFibGUiKTsKKworICAgICAgICBpc19lZGl0YWJsZSA9IF8uaXNGdW5j dGlvbihlZGl0YWJsZSkgPyAhIWVkaXRhYmxlLmFwcGx5KGNvbHVtbiwgW21v ZGVsXSkgOiAhIWVkaXRhYmxlOworICAgICAgICBpZiAoaXNfZWRpdGFibGUp eyB0aGlzLiRlbC5hZGRDbGFzcygiZWRpdGFibGUiKTsgfQorICAgICAgICBl bHNlIHsgdGhpcy4kZWwucmVtb3ZlQ2xhc3MoImVkaXRhYmxlIik7IH0KKwor ICAgICAgICB0aGlzLmRlbGVnYXRlRXZlbnRzKCk7CisgICAgICAgIHJldHVy biB0aGlzOworICAgICAgfSwKKyAgICAgIHJlbW92ZTogQmFja2dyaWQuRXh0 ZW5zaW9uLkRlcGVuZGVudENlbGwucHJvdG90eXBlLnJlbW92ZQorICAgIH0p OworCisKKyAgLy8gQ29sdW1ucyBNb2RlbAorICB2YXIgQ29sdW1uc01vZGVs ID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBp ZEF0dHJpYnV0ZTogJ2F0dG51bScsCisgICAgZGVmYXVsdHM6IHsKKyAgICAg IGF0dG5hbWU6IHVuZGVmaW5lZCwKKyAgICAgIGRhdGF0eXBlOiB1bmRlZmlu ZWQsCisgICAgICB0eXBsZW46IHVuZGVmaW5lZCwKKyAgICAgIHByZWNpc2lv bjogdW5kZWZpbmVkLAorICAgICAgdHlwZGVmYXVsdDogdW5kZWZpbmVkLAor ICAgICAgYXR0bm90bnVsbDogdW5kZWZpbmVkLAorICAgICAgY29sbG5hbWU6 IHVuZGVmaW5lZCwKKyAgICAgIGF0dG51bTogdW5kZWZpbmVkLAorICAgICAg aW5oZXJpdGVkZnJvbTogdW5kZWZpbmVkLAorICAgICAgaW5oZXJpdGVkaWQ6 IHVuZGVmaW5lZCwKKyAgICAgIGF0dHN0YXR0YXJnZXQ6IHVuZGVmaW5lZAor ICAgIH0sCisgICAgdHlwZV9vcHRpb25zOiB1bmRlZmluZWQsCisgICAgc2No ZW1hOiBbeworICAgICAgICBpZDogJ2F0dG5hbWUnLCBsYWJlbDone3sgXygn TmFtZScpIH19JywgY2VsbDogJ3N0cmluZycsIHR5cGU6ICd0ZXh0JywKKyAg ICAgICAgZWRpdGFibGU6ICdpc19lZGl0YWJsZV9jb2x1bW4nLCBjZWxsSGVh ZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjAnCisgICAgICB9LHsKKyAg ICAgICAgaWQ6ICdkYXRhdHlwZScsIGxhYmVsOid7eyBfKCdEYXRhIFR5cGUn KSB9fScsIGNlbGw6ICdub2RlLWFqYXgtb3B0aW9ucycsCisgICAgICAgIGNv bnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHR5cGU6ICd0ZXh0JywgdXJs OiAnZ2V0X3R5cGVzJywKKyAgICAgICAgZWRpdGFibGU6ICdpc19lZGl0YWJs ZV9jb2x1bW4nLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRf MjAnLAorICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGQsIHNlbGYpewor ICAgICAgICAgICAgc2VsZi5tb2RlbC50eXBlX29wdGlvbnMgPSBkOworICAg ICAgICAgICAgcmV0dXJuIGQ7CisgICAgICAgICAgfQorICAgICAgfSx7Cisg ICAgICAgIGlkOiAndHlwbGVuJywgbGFiZWw6J3t7IF8oJ0xlbmd0aCcpIH19 JywKKyAgICAgICAgY2VsbDogSW50ZWdlckRlcENlbGwsCisgICAgICAgIHR5 cGU6ICd0ZXh0JywgZGVwczogWydkYXRhdHlwZSddLAorICAgICAgICBlZGl0 YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAvLyBXZSB3aWxsIHN0b3Jl IHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94CisgICAgICAgICAg aWYoIShfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRpZCcpKQorICAg ICAgICAgICAgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGlkJykpCisg ICAgICAgICAgICB8fCBfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRm cm9tJykpCisgICAgICAgICAgICB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJp dGVkZnJvbScpKSkpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAgICAgdmFy IG9mX3R5cGUgPSBtLmdldCgnZGF0YXR5cGUnKTsKKyAgICAgICAgaWYobS50 eXBlX29wdGlvbnMpIHsKKyAgICAgICAgICBtLnNldCgnaXNfdGxlbmd0aCcs IGZhbHNlLCB7c2lsZW50OiB0cnVlfSk7CisKKyAgICAgICAgICAvLyBpdGVy YXRpbmcgb3ZlciBhbGwgdGhlIHR5cGVzCisgICAgICAgICAgXy5lYWNoKG0u dHlwZV9vcHRpb25zLCBmdW5jdGlvbihvKSB7CisgICAgICAgICAgICAvLyBp ZiB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBjb21ib2JveCBtYXRjaGVzIGlu IG9wdGlvbnMKKyAgICAgICAgICAgIGlmICggb2ZfdHlwZSA9PSBvLnZhbHVl ICkgeworICAgICAgICAgICAgICAgICBtLnNldCgndHlwbGVuJywgdW5kZWZp bmVkKTsKKyAgICAgICAgICAgICAgICAvLyBpZiBsZW5ndGggaXMgYWxsb3dl ZCBmb3Igc2VsZWN0ZWQgdHlwZQorICAgICAgICAgICAgICAgIGlmKG8ubGVu Z3RoKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIC8v IHNldCB0aGUgdmFsdWVzIGluIG1vZGVsCisgICAgICAgICAgICAgICAgICBt LnNldCgnaXNfdGxlbmd0aCcsIHRydWUsIHtzaWxlbnQ6IHRydWV9KTsKKyAg ICAgICAgICAgICAgICAgIG0uc2V0KCdtaW5fdmFsJywgby5taW5fdmFsLCB7 c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICBtLnNldCgnbWF4 X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAg ICAgICByZXR1cm4gbS5nZXQoJ2lzX3RsZW5ndGgnKTsKKyAgICAgICAgfQor ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKyAgICAgICAgY2Vs bEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzEwJworICAgICAgfSx7 CisgICAgICAgIGlkOiAncHJlY2lzaW9uJywgbGFiZWw6J3t7IF8oJ1ByZWNp c2lvbicpIH19JywKKyAgICAgICAgdHlwZTogJ3RleHQnLCBkZXBzOiBbJ2Rh dGF0eXBlJ10sCisgICAgICAgIGNlbGw6IEludGVnZXJEZXBDZWxsLAorICAg ICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgIGlmKCEo Xy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkaWQnKSkKKyAgICAgICAg ICAgIHx8IF8uaXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRpZCcpKQorICAgICAg ICAgICAgfHwgXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkZnJvbScp KQorICAgICAgICAgICAgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGZy b20nKSkpKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgICAgICAgdmFyIG9m X3R5cGUgPSBtLmdldCgnZGF0YXR5cGUnKTsKKyAgICAgICAgICBpZihtLnR5 cGVfb3B0aW9ucykgeworICAgICAgICAgICAgIG0uc2V0KCdpc19wcmVjaXNp b24nLCBmYWxzZSwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAgICAgLy8g aXRlcmF0aW5nIG92ZXIgYWxsIHRoZSB0eXBlcworICAgICAgICAgICAgXy5l YWNoKG0udHlwZV9vcHRpb25zLCBmdW5jdGlvbihvKSB7CisgICAgICAgICAg ICAgIC8vIGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94IG1h dGNoZXMgaW4gb3B0aW9ucworICAgICAgICAgICAgICBpZiAoIG9mX3R5cGUg PT0gby52YWx1ZSApIHsKKyAgICAgICAgICAgICAgICBtLnNldCgncHJlY2lz aW9uJywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICAvLyBpZiBwcmVj ZXNzaW9uIGlzIGFsbG93ZWQgZm9yIHNlbGVjdGVkIHR5cGUKKyAgICAgICAg ICAgICAgICBpZihvLnByZWNpc2lvbikKKyAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIHZhbHVlcyBpbiBtb2RlbAor ICAgICAgICAgICAgICAgICAgbS5zZXQoJ2lzX3ByZWNpc2lvbicsIHRydWUs IHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgIG0uc2V0KCdt aW5fdmFsJywgby5taW5fdmFsLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAg ICAgICAgICAgICBtLnNldCgnbWF4X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVu dDogdHJ1ZX0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9KTsKKyAgICAgICAgICByZXR1cm4gbS5nZXQoJ2lzX3By ZWNpc2lvbicpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor ICAgICAgICB9LCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRf MTAnCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICd0eXBkZWZhdWx0JywgbGFi ZWw6J3t7IF8oJ0RlZmF1bHQnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAg ICAgY2VsbDogJ3N0cmluZycsIG1pbl92ZXJzaW9uOiA5MDMwMCwKKyAgICAg ICAgcGxhY2Vob2xkZXI6ICJFbnRlciBhbiBleHByZXNzaW9uIG9yIGEgdmFs dWUuIiwKKyAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJj ZW50XzEwJywKKyAgICAgICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgICBpZighKF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVyaXRlZGlk JykpCisgICAgICAgICAgICB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVk aWQnKSkKKyAgICAgICAgICAgIHx8IF8uaXNVbmRlZmluZWQobS5nZXQoJ2lu aGVyaXRlZGZyb20nKSkKKyAgICAgICAgICAgIHx8IF8uaXNOdWxsKG0uZ2V0 KCdpbmhlcml0ZWRmcm9tJykpKSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAg ICAgICBpZiAodGhpcy5nZXQoJ25vZGVfaW5mbycpLnNlcnZlci52ZXJzaW9u IDwgOTAzMDApeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg ICAgfSx7CisgICAgICAgIGlkOiAnYXR0bm90bnVsbCcsIGxhYmVsOid7eyBf KCdOb3QgTnVsbCcpIH19JywKKyAgICAgICAgY2VsbDogJ2Jvb2xlYW4nLHR5 cGU6ICdzd2l0Y2gnLCBlZGl0YWJsZTogJ2lzX2VkaXRhYmxlX2NvbHVtbics CisgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8x MCcKKyAgICAgIH0seworICAgICAgICBpZDogJ2F0dHN0YXR0YXJnZXQnLCBs YWJlbDone3sgXygnU3RhdGlzdGljcycpIH19JywgbWluX3ZlcnNpb246IDkw MjAwLAorICAgICAgICBjZWxsOiAnaW50ZWdlcicsIHR5cGU6ICdpbnQnLCBl ZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICBpZiAoXy5pc1VuZGVm aW5lZChtLmlzTmV3KSB8fCBtLmlzTmV3KCkpIHsgcmV0dXJuIGZhbHNlOyB9 CisgICAgICAgIGlmICh0aGlzLmdldCgnbm9kZV9pbmZvJykuc2VydmVyLnZl cnNpb24gPCA5MDIwMCl7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChfLmlzVW5kZWZpbmVkKG0uZ2V0 KCdpbmhlcml0ZWRpZCcpKSB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVk aWQnKSkKKyAgICAgICAgIHx8IF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVy aXRlZGZyb20nKSkgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGZyb20n KSkpID8gdHJ1ZSA6IGZhbHNlCisgICAgICAgIH0sIGNlbGxIZWFkZXJDbGFz c2VzOiAnd2lkdGhfcGVyY2VudF8xMCcKKyAgICAgIH0seworICAgICAgICBp ZDogJ2NvbGxuYW1lJywgbGFiZWw6J3t7IF8oJ0NvbGxhdGlvbicpIH19Jywg Y2VsbDogJ25vZGUtYWpheC1vcHRpb25zJywKKyAgICAgICAgY29udHJvbDog J25vZGUtYWpheC1vcHRpb25zJywgdHlwZTogJ3RleHQnLCB1cmw6ICdnZXRf Y29sbGF0aW9ucycsCisgICAgICAgIG1pbl92ZXJzaW9uOiA5MDMwMCwgZWRp dGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICBpZiAoIShfLmlzVW5k ZWZpbmVkKG0uaXNOZXcpKSAmJiAhbS5pc05ldygpKSB7IHJldHVybiBmYWxz ZTsgfQorICAgICAgICAgIHJldHVybiAoXy5pc1VuZGVmaW5lZChtLmdldCgn aW5oZXJpdGVkaWQnKSkgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGlk JykpCisgICAgICAgICAgIHx8IF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVy aXRlZGZyb20nKSkgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGZyb20n KSkpID8gdHJ1ZSA6IGZhbHNlCisgICAgICAgIH0sCisgICAgICAgIGNlbGxI ZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcKKyAgICAgIH0sewor ICAgICAgICBpZDogJ2F0dG51bScsIGNlbGw6ICdzdHJpbmcnLHR5cGU6ICd0 ZXh0JywgdmlzaWJsZTogZmFsc2UKKyAgICAgIH0seworICAgICAgICBpZDog J2luaGVyaXRlZGZyb20nLCBsYWJlbDone3sgXygnSW5oZXJpdGVkIEZyb20n KSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICB0eXBlOiAndGV4dCcs IHZpc2libGU6IGZhbHNlLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnZWRpdCdd LAorICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRf MTAnCisgICAgfV0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAg ICAgdmFyIGVyciA9IHt9LAorICAgICAgZXJybXNnOworCisgICAgICBpZiAo Xy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnYXR0bmFtZScpKSB8fCBTdHJpbmco dGhpcy5nZXQoJ2F0dG5hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcn KSA9PSAnJykgeworICAgICAgICBlcnJbJ25hbWUnXSA9ICd7eyBfKCdDb2x1 bW4gTmFtZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgZXJy bXNnID0gZXJybXNnIHx8IGVyclsnYXR0bmFtZSddOworICAgICAgfQorCisg ICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZGF0YXR5cGUnKSkg fHwgU3RyaW5nKHRoaXMuZ2V0KCdkYXRhdHlwZScpKQorICAgICAgLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgZXJyWydi YXNlbnNwJ10gPSAne3sgXygnQ29sdW1uIERhdGF0eXBlIGNhbiBub3QgYmUg ZW1wdHkhJykgfX0nOworICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJy WydkYXRhdHlwZSddOworICAgICAgfQorCisgICAgICB0aGlzLmVycm9yTW9k ZWwuY2xlYXIoKS5zZXQoZXJyKTsKKworICAgICAgcmV0dXJuIGVycm1zZzsK KyAgICB9LAorICAgIGlzX2VkaXRhYmxlX2NvbHVtbjogZnVuY3Rpb24obSkg eworICAgICAgcmV0dXJuIChfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0 ZWRpZCcpKSB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVkaWQnKSkKKyAg ICAgICB8fCBfLmlzVW5kZWZpbmVkKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykp IHx8IF8uaXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpKSA/IHRydWUg OiBmYWxzZQorICAgIH0sCisgICAgdG9KU09OOiBCYWNrYm9uZS5Nb2RlbC5w cm90b3R5cGUudG9KU09OCisgIH0pOworCisgIHZhciBmb3JtYXROb2RlID0g ZnVuY3Rpb24ob3B0KSB7CisgICAgaWYgKCFvcHQuaWQpIHsKKyAgICAgIHJl dHVybiBvcHQudGV4dDsKKyAgICB9CisKKyAgICB2YXIgb3B0aW1hZ2UgPSAk KG9wdC5lbGVtZW50KS5kYXRhKCdpbWFnZScpOworCisgICAgaWYoIW9wdGlt YWdlKXsKKyAgICAgIHJldHVybiBvcHQudGV4dDsKKyAgICB9IGVsc2Ugewor ICAgICAgcmV0dXJuICQoCisgICAgICAgICAgJzxzcGFuPjxzcGFuIGNsYXNz PSJ3Y1RhYkljb24gJyArIG9wdGltYWdlICsgJyIvPicgKyBvcHQudGV4dCAr ICc8L3NwYW4+JworICAgICAgICAgICk7CisgICAgfQorICB9OworCisKKyAg LyogTm9kZUFqYXhPcHRpb25zTXVsdGlwbGVDb250cm9sIGlzIGZvciBtdWx0 aXBsZSBzZWxlY3Rpb24gb2YgQ29tYm9ib3guCisgICogIFRoaXMgY29udHJv bCBpcyB1c2VkIHRvIHNlbGVjdCBNdWx0aXBsZSBQYXJlbnQgVGFibGVzIHRv IGJlIGluaGVyaXRlZC4KKyAgKiAgSXQgYWxzbyBwb3B1bGF0ZXMvdmFjYXRl cyBDb2x1bW5zIG9uIHNlbGVjdGlvbi9kZXNlbGVjdGlvbiBvZiB0aGUgb3B0 aW9uIChpLmUuIHRhYmxlIG5hbWUpLgorICAqICBUbyBwb3B1bGF0ZXMgdGhl IGNvbHVtbiwgaXQgY2FsbHMgdGhlIHNlcnZlciBhbmQgZmV0Y2ggdGhlIGNv bHVtbnMgZGF0YQorICAqICBmb3IgdGhlIHNlbGVjdGVkIHRhYmxlLgorICAq LworCisgIHZhciBOb2RlQWpheE9wdGlvbnNNdWx0aXBsZUNvbnRyb2wgPSBC YWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNNdWx0aXBsZUNvbnRyb2wgPSBCYWNr Zm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLmV4dGVuZCh7CisgICAgdGVt cGxhdGU6IF8udGVtcGxhdGUoWworICAgICAgJzxsYWJlbCBjbGFzcz0iPCU9 QmFja2Zvcm0uY29udHJvbExhYmVsQ2xhc3NOYW1lJT4iPjwlPWxhYmVsJT48 L2xhYmVsPicsCisgICAgICAnPGRpdiBjbGFzcz0iPCU9QmFja2Zvcm0uY29u dHJvbHNDbGFzc05hbWUlPiA8JT1leHRyYUNsYXNzZXMuam9pbihcJyBcJykl PiI+JywKKyAgICAgICcgIDxzZWxlY3QgY2xhc3M9InBnYWRtaW4tbm9kZS1z ZWxlY3QgZm9ybS1jb250cm9sIiBuYW1lPSI8JT1uYW1lJT4iIHN0eWxlPSJ3 aWR0aDoxMDAlOyIgdmFsdWU9PCUtdmFsdWUlPiA8JT1kaXNhYmxlZCA/ICJk aXNhYmxlZCIgOiAiIiU+IDwlPXJlcXVpcmVkID8gInJlcXVpcmVkIiA6ICIi JT4gPicsCisgICAgICAnICA8L3NlbGVjdD4nLAorICAgICAgJzwvZGl2Pidd LmpvaW4oIlxuIikpLAorICAgIGRlZmF1bHRzOiBfLmV4dGVuZCgKKyAgICAg IHt9LCBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLnByb3RvdHlw ZS5kZWZhdWx0cywKKyAgICAgIHsKKyAgICAgICAgc2VsZWN0MjogeworICAg ICAgICAgIGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgICAgcGxhY2Vob2xk ZXI6ICdTZWxlY3QgZnJvbSB0aGUgbGlzdCcsCisgICAgICAgICAgd2lkdGg6 ICdzdHlsZScsCisgICAgICAgICAgdGVtcGxhdGVSZXN1bHQ6IGZvcm1hdE5v ZGUsCisgICAgICAgICAgdGVtcGxhdGVTZWxlY3Rpb246IGZvcm1hdE5vZGUK KyAgICAgICAgfQorICAgICAgfSksCisgICAgcmVuZGVyOiBmdW5jdGlvbigp IHsKKyAgICAgIHZhciBmaWVsZCA9IF8uZGVmYXVsdHModGhpcy5maWVsZC50 b0pTT04oKSwgdGhpcy5kZWZhdWx0cyksCisgICAgICAgIGF0dHJpYnV0ZXMg PSB0aGlzLm1vZGVsLnRvSlNPTigpLAorICAgICAgICBhdHRyQXJyID0gZmll bGQubmFtZS5zcGxpdCgnLicpLAorICAgICAgICBuYW1lID0gYXR0ckFyci5z aGlmdCgpLAorICAgICAgICBwYXRoID0gYXR0ckFyci5qb2luKCcuJyksCisg ICAgICAgIHJhd1ZhbHVlID0gdGhpcy5rZXlQYXRoQWNjZXNzb3IoYXR0cmli dXRlc1tuYW1lXSwgcGF0aCksCisgICAgICAgIGRhdGEgPSBfLmV4dGVuZChm aWVsZCwgeworICAgICAgICAgIHJhd1ZhbHVlOiByYXdWYWx1ZSwKKyAgICAg ICAgICB2YWx1ZTogdGhpcy5mb3JtYXR0ZXIuZnJvbVJhdyhyYXdWYWx1ZSwg dGhpcy5tb2RlbCksCisgICAgICAgICAgYXR0cmlidXRlczogYXR0cmlidXRl cywKKyAgICAgICAgICBmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0dGVyCisgICAg ICAgIH0pLAorICAgICAgICBldmFsRiA9IGZ1bmN0aW9uKGYsIGQsIG0pIHsK KyAgICAgICAgICByZXR1cm4gKF8uaXNGdW5jdGlvbihmKSA/ICEhZi5hcHBs eShkLCBbbV0pIDogISFmKTsKKyAgICAgICAgfTsKKworICAgICAgLy8gRXZh bHVhdGUgdGhlIGRpc2FibGVkLCB2aXNpYmxlLCBhbmQgcmVxdWlyZWQgb3B0 aW9uCisgICAgICBfLmV4dGVuZChkYXRhLCB7CisgICAgICAgIGRpc2FibGVk OiBldmFsRihkYXRhLmRpc2FibGVkLCBkYXRhLCB0aGlzLm1vZGVsKSwKKyAg ICAgICAgdmlzaWJsZTogIGV2YWxGKGRhdGEudmlzaWJsZSwgZGF0YSwgdGhp cy5tb2RlbCksCisgICAgICAgIHJlcXVpcmVkOiBldmFsRihkYXRhLnJlcXVp cmVkLCBkYXRhLCB0aGlzLm1vZGVsKQorICAgICAgfSk7CisKKyAgICAgIGlm IChmaWVsZC5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPCBmaWVsZC5taW5f dmVyc2lvbikgeworICAgICAgICBmaWVsZC52ZXJzaW9uX2NvbXBhdGlibGUg PSBmYWxzZQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgIH0KKyAgICAg IGVsc2UgeworICAgICAgICAvLyBFdmFsdWF0aW9uIHRoZSBvcHRpb25zCisg ICAgICAgIGlmIChfLmlzRnVuY3Rpb24oZGF0YS5vcHRpb25zKSkgeworICAg ICAgICB0cnkgeworICAgICAgICAgIGRhdGEub3B0aW9ucyA9IGRhdGEub3B0 aW9ucy5hcHBseSh0aGlzKQorICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg ICAgICAvLyBEbyBub3RoaW5nCisgICAgICAgICAgZGF0YS5vcHRpb25zID0g W10KKyAgICAgICAgICB0aGlzLm1vZGVsLnRyaWdnZXIoJ3BnYWRtaW4tdmll dzp0cmFuc2Zvcm06ZXJyb3InLCBzZWxmLm1vZGVsLCBzZWxmLmZpZWxkLCBl KTsKKyAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2xlYW4g dXAgZmlyc3QKKyAgICAgICAgdGhpcy4kZWwucmVtb3ZlQ2xhc3MoQmFja2Zv cm0uaGlkZGVuQ2xhc3NuYW1lKTsKKyAgICAgICAgdGhpcy4kZWwuaHRtbCh0 aGlzLnRlbXBsYXRlKGRhdGEpKS5hZGRDbGFzcyhmaWVsZC5uYW1lKTsKKwor ICAgICAgICBpZiAoIWRhdGEudmlzaWJsZSkgeworICAgICAgICB0aGlzLiRl bC5hZGRDbGFzcyhCYWNrZm9ybS5oaWRkZW5DbGFzc25hbWUpOworICAgICAg ICB9IGVsc2UgeworICAgICAgICB2YXIgb3B0cyA9IF8uZXh0ZW5kKAorICAg ICAgICAgIHt9LCB0aGlzLmRlZmF1bHRzLnNlbGVjdDIsIGRhdGEuc2VsZWN0 MiwKKyAgICAgICAgICB7CisgICAgICAgICAgICAnZGF0YSc6IGRhdGEub3B0 aW9ucworICAgICAgICAgIH0pOworICAgICAgICB0aGlzLiRlbC5maW5kKCJz ZWxlY3QiKS5zZWxlY3QyKG9wdHMpLnZhbChkYXRhLnJhd1ZhbHVlKS50cmln Z2VyKCJjaGFuZ2UiKTsKKyAgICAgICAgdGhpcy51cGRhdGVJbnZhbGlkKCk7 CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiB0aGlzOworICAg IH0sCisgICAgb25DaGFuZ2U6IGZ1bmN0aW9uKGUpIHsKKyAgICAgIHZhciBt b2RlbCA9IHRoaXMubW9kZWwsCisgICAgICAgICAgJGVsID0gJChlLnRhcmdl dCksCisgICAgICAgICAgYXR0ckFyciA9IHRoaXMuZmllbGQuZ2V0KCJuYW1l Iikuc3BsaXQoJy4nKSwKKyAgICAgICAgICBuYW1lID0gYXR0ckFyci5zaGlm dCgpLAorICAgICAgICAgIHBhdGggPSBhdHRyQXJyLmpvaW4oJy4nKSwKKyAg ICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tRE9NKCksCisgICAg ICAgICAgY2hhbmdlcyA9IHt9LAorICAgICAgICAgIGNvbHVtbnMgPSBtb2Rl bC5nZXQoJ2NvbHVtbnMnKSwKKyAgICAgICAgICBpbmhlcml0cyA9IG1vZGVs LmdldChuYW1lKTsKKworICAgICAgaWYgKHRoaXMubW9kZWwuZXJyb3JNb2Rl bCBpbnN0YW5jZW9mIEJhY2tib25lLk1vZGVsKSB7CisgICAgICAgIGlmIChf LmlzRW1wdHkocGF0aCkpIHsKKyAgICAgICAgICB0aGlzLm1vZGVsLmVycm9y TW9kZWwudW5zZXQobmFtZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgdmFyIG5lc3RlZEVycm9yID0gdGhpcy5tb2RlbC5lcnJvck1vZGVsLmdl dChuYW1lKTsKKyAgICAgICAgICBpZiAobmVzdGVkRXJyb3IpIHsKKyAgICAg ICAgICAgIHRoaXMua2V5UGF0aFNldHRlcihuZXN0ZWRFcnJvciwgcGF0aCwg bnVsbCk7CisgICAgICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwuc2V0 KG5hbWUsIG5lc3RlZEVycm9yKTsKKyAgICAgICAgICB9CisgICAgICAgIH0K KyAgICAgIH0KKworICAgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAgICBp ZiAodHlwZW9mKGluaGVyaXRzKSAgPT0gInN0cmluZyIpeyBpbmhlcml0cyA9 IEpTT04ucGFyc2UoaW5oZXJpdHMpOyB9CisKKyAgICAgIC8vIFJlbW92ZSBD b2x1bW5zIGlmIGluaGVyaXQgb3B0aW9uIGlzIGRlc2VsZWN0ZWQgZnJvbSB0 aGUgY29tYm9ib3gKKyAgICAgIGlmKF8uc2l6ZShKU09OLnBhcnNlKHZhbHVl KSkgPCBfLnNpemUoaW5oZXJpdHMpKSB7CisgICAgICAgIHZhciBkaWYgPSAg Xy5kaWZmZXJlbmNlKGluaGVyaXRzLCBKU09OLnBhcnNlKHZhbHVlKSk7Cisg ICAgICAgIHZhciBybXZfY29sdW1ucyA9IGNvbHVtbnMud2hlcmUoe2luaGVy aXRlZGlkOiBwYXJzZUludChkaWZbMF0pfSk7CisgICAgICAgIGNvbHVtbnMu cmVtb3ZlKHJtdl9jb2x1bW5zKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAg ICAgIHsKKyAgICAgICAgXy5lYWNoKEpTT04ucGFyc2UodmFsdWUpLCBmdW5j dGlvbihpKSB7CisgICAgICAgICAgLy8gRmV0Y2ggQ29sdW1ucyBmcm9tIHNl cnZlcgorICAgICAgICAgIHZhciBmbmRfY29sdW1ucyA9IGNvbHVtbnMud2hl cmUoe2luaGVyaXRlZGlkOiBwYXJzZUludChpKX0pOworICAgICAgICAgIGlm IChmbmRfY29sdW1ucyAmJiBmbmRfY29sdW1ucy5sZW5ndGggPD0gMCkgewor ICAgICAgICAgICAgaW5odGVkX2NvbHVtbnMgPSBzZWxmLmZldGNoQ29sdW1u cyhpKTsKKyAgICAgICAgICAgIGNvbHVtbnMuYWRkKGluaHRlZF9jb2x1bW5z KTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorCisgICAg ICBjaGFuZ2VzW25hbWVdID0gXy5pc0VtcHR5KHBhdGgpID8gdmFsdWUgOiBf LmNsb25lKG1vZGVsLmdldChuYW1lKSkgfHwge307CisgICAgICB0aGlzLnN0 b3BMaXN0ZW5pbmcodGhpcy5tb2RlbCwgImNoYW5nZToiICsgbmFtZSwgdGhp cy5yZW5kZXIpOworICAgICAgbW9kZWwuc2V0KGNoYW5nZXMpOworICAgICAg dGhpcy5saXN0ZW5Ubyh0aGlzLm1vZGVsLCAiY2hhbmdlOiIgKyBuYW1lLCB0 aGlzLnJlbmRlcik7CisgICAgfSwKKyAgICBmZXRjaENvbHVtbnM6IGZ1bmN0 aW9uKHRhYmxlX2lkKXsKKyAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAg ICAgICB1cmwgPSAnZ2V0X2NvbHVtbnMnLAorICAgICAgICAgIG0gPSBzZWxm Lm1vZGVsLnRvcCB8fCBzZWxmLm1vZGVsOworCisgICAgICBpZiAodXJsKSB7 CisgICAgICAgIHZhciBub2RlID0gdGhpcy5maWVsZC5nZXQoJ3NjaGVtYV9u b2RlJyksCisgICAgICAgICAgICBub2RlX2luZm8gPSB0aGlzLmZpZWxkLmdl dCgnbm9kZV9pbmZvJyksCisgICAgICAgICAgICBmdWxsX3VybCA9IG5vZGUu Z2VuZXJhdGVfdXJsLmFwcGx5KAorICAgICAgICAgICAgICBub2RlLCBbCisg ICAgICAgICAgICAgICAgbnVsbCwgdXJsLCB0aGlzLmZpZWxkLmdldCgnbm9k ZV9kYXRhJyksCisgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5nZXQoJ3Vy bF93aXRoX2lkJykgfHwgZmFsc2UsIG5vZGVfaW5mbworICAgICAgICAgICAg ICBdKSwKKyAgICAgICAgICAgIGNhY2hlX2xldmVsID0gdGhpcy5maWVsZC5n ZXQoJ2NhY2hlX2xldmVsJykgfHwgbm9kZS50eXBlLAorICAgICAgICAgICAg Y2FjaGVfbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdjYWNoZV9ub2RlJyk7CisK KyAgICAgICAgY2FjaGVfbm9kZSA9IChjYWNoZV9ub2RlICYmIHBnQWRtaW4u QnJvd3Nlci5Ob2Rlc1snY2FjaGVfbm9kZSddKSB8fCBub2RlOworCisgICAg ICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoaW5nJywgbSwgc2Vs Zi5maWVsZCk7CisgICAgICAgIGRhdGEgPSB7YXR0cmVsaWQ6IHRhYmxlX2lk fQorCisgICAgICAgIC8vIEZldGNoaW5nIENvbHVtbnMgZGF0YSBmb3IgdGhl IHNlbGVjdGVkIHRhYmxlLgorICAgICAgICAkLmFqYXgoeworICAgICAgICAg IGFzeW5jOiBmYWxzZSwKKyAgICAgICAgICB1cmw6IGZ1bGxfdXJsLAorICAg ICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAgICAgc3VjY2VzczogZnVuY3Rp b24ocmVzKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogV2Ug d2lsbCBjYWNoZSB0aGlzIGRhdGEgZm9yIHNob3J0IHBlcmlvZCBvZiB0aW1l IGZvciBhdm9pZGluZworICAgICAgICAgICAgICogc2FtZSBjYWxscy4KKyAg ICAgICAgICAgICAqLworICAgICAgICAgICAgZGF0YSA9IGNhY2hlX25vZGUu Y2FjaGUodXJsLCBub2RlX2luZm8sIGNhY2hlX2xldmVsLCByZXMuZGF0YSk7 CisKKyAgICAgICAgICB9LAorICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigp IHsKKyAgICAgICAgICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNo OmVycm9yJywgbSwgc2VsZi5maWVsZCk7CisgICAgICAgICAgfQorICAgICAg ICB9KTsKKyAgICAgICAgbS50cmlnZ2VyKCdwZ2FkbWluOnZpZXc6ZmV0Y2hl ZCcsIG0sIHNlbGYuZmllbGQpOworCisgICAgICAgIC8vIFRvIGZldGNoIG9u bHkgb3B0aW9ucyBmcm9tIGNhY2hlLCB3ZSBkbyBub3QgbmVlZCB0aW1lIGZy b20gJ2F0JworICAgICAgICAvLyBhdHRyaWJ1dGUgYnV0IG9ubHkgb3B0aW9u cy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSXQgaXMgZmVhc2libGUgdGhh dCB0aGUgZGF0YSBtYXkgbm90IGhhdmUgYmVlbiBmZXRjaGVkLgorICAgICAg ICBkYXRhID0gKGRhdGEgJiYgZGF0YS5kYXRhKSB8fCBbXTsKKyAgICAgICAg cmV0dXJuIGRhdGE7CisgICAgICB9CisgICAgfSwKKyAgfSk7CisKKworICAv LyBDb25zdHJhaW50cyBNb2RlbAorICB2YXIgQ29uc3RyYWludE1vZGVsID0g cGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBpZEF0 dHJpYnV0ZTogJ2Nvbm9pZCcsCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24o YXR0cnMsIGFyZ3MpIHsKKyAgICAgIHZhciBpc05ldyA9IChfLnNpemUoYXR0 cnMpID09PSAwKTsKKyAgICAgIGlmICghaXNOZXcpIHsKKyAgICAgICAgdGhp cy5jb252YWxpZGF0ZWRfZGVmYXVsdCA9IHRoaXMuZ2V0KCdjb252YWxpZGF0 ZWQnKQorICAgICAgfQorICAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9k ZWwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRz KTsKKyAgICB9LAorICAgIGRlZmF1bHRzOiB7CisgICAgICBjb25vaWQ6IHVu ZGVmaW5lZCwKKyAgICAgIGNvbm5hbWU6IHVuZGVmaW5lZCwKKyAgICAgIGNv bnNyYzogdW5kZWZpbmVkLAorICAgICAgY29ubm9pbmhlcml0OiB1bmRlZmlu ZWQsCisgICAgICBjb252YWxpZGF0ZWQ6IHRydWUsCisgICAgICBjb25pc2xv Y2FsOiB1bmRlZmluZWQKKyAgICB9LAorICAgIGNvbnZhbGlkYXRlZF9kZWZh dWx0OiB0cnVlLAorICAgIHNjaGVtYTogW3sKKyAgICAgIGlkOiAnY29ub2lk JywgdHlwZTogJ3RleHQnLCBjZWxsOiAnc3RyaW5nJywgdmlzaWJsZTogZmFs c2UKKyAgICB9LHsKKyAgICAgIGlkOiAnY29ubmFtZScsIGxhYmVsOid7eyBf KCdOYW1lJykgfX0nLCB0eXBlOiAndGV4dCcsIGNlbGw6ICdzdHJpbmcnLAor ICAgICAgZWRpdGFibGU6ICdpc19lZGl0YWJsZScsIGNlbGxIZWFkZXJDbGFz c2VzOiAnd2lkdGhfcGVyY2VudF8zMCcKKyAgICB9LHsKKyAgICAgIGlkOiAn Y29uc3JjJywgbGFiZWw6J3t7IF8oJ0NoZWNrJykgfX0nLCB0eXBlOiAnbXVs dGlsaW5lJywKKyAgICAgIGVkaXRhYmxlOiAnaXNfZWRpdGFibGUnLCBjZWxs OiBCYWNrZ3JpZC5FeHRlbnNpb24uVGV4dGFyZWFDZWxsLAorICAgICAgY2Vs bEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzMwJworICAgIH0sewor ICAgICAgaWQ6ICdjb25ub2luaGVyaXQnLCBsYWJlbDone3sgXygnTm8gSW5o ZXJpdCcpIH19JywgdHlwZTogJ3N3aXRjaCcsCisgICAgICBjZWxsOiAnYm9v bGVhbicsIGVkaXRhYmxlOiAnaXNfZWRpdGFibGUnLAorICAgICAgY2VsbEhl YWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzIwJworICAgIH0seworICAg ICAgaWQ6ICdjb252YWxpZGF0ZWQnLCBsYWJlbDone3sgXygnVmFsaWRhdGU/ JykgfX0nLCB0eXBlOiAnc3dpdGNoJywKKyAgICAgIGNlbGw6ICdib29sZWFu JywgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzIwJywKKyAg ICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgIHZhciBzZXJ2 ZXIgPSB0aGlzLmdldCgnbm9kZV9pbmZvJykuc2VydmVyOworICAgICAgICBp ZiAoXy5pc1VuZGVmaW5lZChtLmlzTmV3KSkgeyByZXR1cm4gdHJ1ZTsgfQor ICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgIGlmKG0uZ2V0 KCdjb252YWxpZGF0ZWQnKSAmJiBtLmNvbnZhbGlkYXRlZF9kZWZhdWx0KSB7 CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAg ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVy biB0cnVlOworICAgICAgfQorICAgICB9CisgICAgXSwKKyAgICB2YWxpZGF0 ZTogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgZXJyID0ge30sCisgICAgICBl cnJtc2c7CisKKyAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdj b25uYW1lJykpIHx8IFN0cmluZyh0aGlzLmdldCgnY29ubmFtZScpKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgIGVyclsn Y29ubmFtZSddID0gJ3t7IF8oJ0NvbnN0cmFpbnQgTmFtZSBjYW4gbm90IGJl IGVtcHR5IScpIH19JzsKKyAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVy clsnY29ubmFtZSddOworICAgICAgfQorCisgICAgICBpZiAoXy5pc1VuZGVm aW5lZCh0aGlzLmdldCgnY29uc3JjJykpIHx8IFN0cmluZyh0aGlzLmdldCgn Y29uc3JjJykpCisgICAgICAucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgeworICAgICAgICBlcnJbJ2NvbnNyYyddID0gJ3t7IF8oJ0NvbnN0 cmFpbnQgQ2hlY2sgY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7CisgICAgICAg IGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ2NvbnNyYyddOworICAgICAgfQor CisgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKS5zZXQoZXJyKTsKKwor ICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICB9LAorICAgIGlzX2VkaXRhYmxl OiBmdW5jdGlvbihtKSB7CisgICAgICAgIHJldHVybiBfLmlzVW5kZWZpbmVk KG0uaXNOZXcpID8gdHJ1ZSA6IG0uaXNOZXcoKTsKKyAgICB9LAorICAgIHRv SlNPTjogQmFja2JvbmUuTW9kZWwucHJvdG90eXBlLnRvSlNPTgorICB9KTsK KworCisgIC8vIE9wdGlvbnMgTW9kZWwKKyAgdmFyIE9wdGlvbnNNb2RlbCA9 IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgZGVm YXVsdHM6IHsKKyAgICAgIG9wdGlvbjogdW5kZWZpbmVkLAorICAgICAgdmFs dWU6IHVuZGVmaW5lZAorICAgIH0sCisgICAgc2NoZW1hOiBbeworICAgICAg aWQ6ICdvcHRpb24nLCBsYWJlbDone3sgXygnT3B0aW9uJykgfX0nLCBjZWxs OiAnc3RyaW5nJywgdHlwZTogJ3RleHQnLAorICAgICAgZWRpdGFibGU6IHRy dWUsIGNlbGxIZWFkZXJDbGFzc2VzOid3aWR0aF9wZXJjZW50XzUwJworICAg IH0seworICAgICAgaWQ6ICd2YWx1ZScsIGxhYmVsOid7eyBfKCdWYWx1ZScp IH19JywgY2VsbDogJ3N0cmluZycsdHlwZTogJ3RleHQnLAorICAgICAgZWRp dGFibGU6IHRydWUsIGNlbGxIZWFkZXJDbGFzc2VzOid3aWR0aF9wZXJjZW50 XzUwJworICAgIH0KKyAgICBdLAorICAgIHZhbGlkYXRlOiBmdW5jdGlvbigp IHsKKyAgICAgIC8vIFRPRE86IEFkZCB2YWxpZGF0aW9uIGhlcmUKKyAgICB9 LAorICAgIHRvSlNPTjogQmFja2JvbmUuTW9kZWwucHJvdG90eXBlLnRvSlNP TgorICB9KTsKKworCisgIGlmICghcGdCcm93c2VyLk5vZGVzWydmb3JlaWdu LXRhYmxlJ10pIHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2ZvcmVp Z24tdGFibGUnXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICB0 eXBlOiAnZm9yZWlnbi10YWJsZScsCisgICAgICBzcWxBbHRlckhlbHA6ICdz cWwtYWx0ZXJmb3JlaWdudGFibGUuaHRtbCcsCisgICAgICBzcWxDcmVhdGVI ZWxwOiAnc3FsLWNyZWF0ZWZvcmVpZ250YWJsZS5odG1sJywKKyAgICAgIGxh YmVsOiAne3sgXygnRm9yZWlnbiBUYWJsZScpIH19JywKKyAgICAgIGNvbGxl Y3Rpb25fdHlwZTogJ2NvbGwtZm9yZWlnbi10YWJsZScsCisgICAgICBoYXNT UUw6IHRydWUsCisgICAgICBoYXNEZXBlbmRzOiB0cnVlLAorICAgICAgcGFy ZW50X3R5cGU6IFsnc2NoZW1hJ10sCisgICAgICBJbml0OiBmdW5jdGlvbigp IHsKKyAgICAgICAgLyogQXZvaWQgbXVsdGlwbGUgcmVnaXN0cmF0aW9uIG9m IG1lbnVzICovCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQorICAg ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQg PSB0cnVlOworCisgICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAg ICAgICAgICBuYW1lOiAnY3JlYXRlX2ZvcmVpZ24tdGFibGVfb25fY29sbCcs IG5vZGU6ICdjb2xsLWZvcmVpZ24tdGFibGUnLCBtb2R1bGU6IHRoaXMsCisg ICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxs YmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVn b3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnRm9y ZWlnbiBUYWJsZS4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJ Y29uIGljb24tZm9yZWlnbi10YWJsZScsIGRhdGE6IHthY3Rpb246ICdjcmVh dGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3Jl YXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2Zv cmVpZ24tdGFibGUnLCBub2RlOiAnZm9yZWlnbi10YWJsZScsIG1vZHVsZTog dGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0 J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAg ICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7 eyBfKCdGb3JlaWduIFRhYmxlLi4uJykgfX0nLAorICAgICAgICAgIGljb246 ICd3Y1RhYkljb24gaWNvbi1mb3JlaWduLXRhYmxlJywgZGF0YToge2FjdGlv bjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6 ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdj cmVhdGVfZm9yZWlnbi10YWJsZScsIG5vZGU6ICdzY2hlbWEnLCBtb2R1bGU6 IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4 dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAg ICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAn e3sgXygnRm9yZWlnbiBUYWJsZS4uLicpIH19JywKKyAgICAgICAgICBpY29u OiAnd2NUYWJJY29uIGljb24tZm9yZWlnbi10YWJsZScsIGRhdGE6IHthY3Rp b246ICdjcmVhdGUnLCBjaGVjazogZmFsc2V9LAorICAgICAgICAgIGVuYWJs ZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfQorICAgICAgICBdKTsKKworICAg ICAgfSwKKyAgICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1h J10uY2FuQ2hpbGREcm9wLAorICAgICAgY2FuRHJvcENhc2NhZGU6IHBnQnJv d3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgbW9k ZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAg ICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7CisgICAg ICAgICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOworICAg ICAgICAgIGlmIChpc05ldykgeworICAgICAgICAgICAgLy8gU2V0IFNlbGVj dGVkIFNjaGVtYQorICAgICAgICAgICAgc2NoZW1hID0gYXJncy5ub2RlX2lu Zm8uc2NoZW1hLmxhYmVsCisgICAgICAgICAgICB0aGlzLnNldCh7J2Jhc2Vu c3AnOiBzY2hlbWF9LCB7c2lsZW50OiB0cnVlfSk7CisKKyAgICAgICAgICAg IC8vIFNldCBDdXJyZW50IFVzZXIKKyAgICAgICAgICAgIHZhciB1c2VySW5m byA9IHBnQnJvd3Nlci5zZXJ2ZXJJbmZvW2FyZ3Mubm9kZV9pbmZvLnNlcnZl ci5faWRdLnVzZXI7CisgICAgICAgICAgICB0aGlzLnNldCh7J293bmVyJzog dXNlckluZm8ubmFtZX0sIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICB9 CisgICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwucHJvdG90 eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAg ICAgfSwKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1 bmRlZmluZWQsCisgICAgICAgICAgb2lkOiB1bmRlZmluZWQsCisgICAgICAg ICAgb3duZXI6IHVuZGVmaW5lZCwKKyAgICAgICAgICBiYXNlbnNwOiB1bmRl ZmluZWQsCisgICAgICAgICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCwKKyAg ICAgICAgICBmdHNydm5hbWU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBzdHJj b2x1bW46IHVuZGVmaW5lZCwKKyAgICAgICAgICBzdHJmdG9wdGlvbnM6IHVu ZGVmaW5lZCwKKyAgICAgICAgICBpbmhlcml0czogW10sCisgICAgICAgICAg Y29sdW1uczogW10sCisgICAgICAgICAgY29uc3RyYWludHM6IFtdLAorICAg ICAgICAgIGZ0b3B0aW9uczogW10sCisgICAgICAgICAgcmVsYWNsOiBbXSwK KyAgICAgICAgICBzdHJhY2w6IFtdLAorICAgICAgICAgIHNlY2xhYmVsczog W10KKyAgICAgICAgfSwKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAg IGlkOiAnbmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgY2VsbDog J3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3By b3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXQorICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCdPSUQnKSB9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JyAsIG1vZGU6 IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn b3duZXInLCBsYWJlbDone3sgXygnT3duZXInKSB9fScsIGNlbGw6ICdzdHJp bmcnLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVMaXN0QnlO YW1lQ29udHJvbCwKKyAgICAgICAgICBub2RlOiAncm9sZScsICB0eXBlOiAn dGV4dCcsIHNlbGVjdDI6IHsgYWxsb3dDbGVhcjogZmFsc2UgfQorICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ2Jhc2Vuc3AnLCBsYWJlbDone3sgXygn U2NoZW1hJykgfX0nLCBjZWxsOiAnbm9kZS1saXN0LWJ5LW5hbWUnLAorICAg ICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLCBjYWNoZV9s ZXZlbDogJ2RhdGFiYXNlJywgdHlwZTogJ3RleHQnLAorICAgICAgICAgICBu b2RlOiAnc2NoZW1hJywgbW9kZTpbJ2NyZWF0ZScsICdlZGl0J10KKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVsOid7 eyBfKCdDb21tZW50JykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICB0eXBlOiAnbXVsdGlsaW5lJworICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2Z0c3J2bmFtZScsIGxhYmVsOid7eyBfKCdGb3JlaWduIHNlcnZlcicp IH19JywgY2VsbDogJ3N0cmluZycsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0 aW9ucycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDogJ0RlZmlu aXRpb24nLCB1cmw6ICdnZXRfZm9yZWlnbl9zZXJ2ZXJzJywgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH0KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdpbmhlcml0cycsIGxhYmVsOid7eyBfKCdJ bmhlcml0cycpIH19JywgY2VsbDogJ3N0cmluZycsIGdyb3VwOiAnRGVmaW5p dGlvbicsCisgICAgICAgICAgdHlwZTogJ2xpc3QnLCBtaW5fdmVyc2lvbjog OTA1MDAsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucy1tdWx0aXBsZScs CisgICAgICAgICAgdXJsOiAnZ2V0X3RhYmxlcycsIHNlbGVjdDI6IHttdWx0 aXBsZTogdHJ1ZX0sCisgICAgICAgICAgJ2NhY2hlX2xldmVsJzogJ2RhdGFi YXNlJywKKyAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGQsIHNlbGYp eworICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQuZ2V0KCdtb2RlJykgPT0g J2VkaXQnKSB7CisgICAgICAgICAgICAgIG9pZCA9IHRoaXMubW9kZWwuZ2V0 KCdvaWQnKTsKKyAgICAgICAgICAgICAgcyA9IF8uZmluZFdoZXJlKGQsIHsn aWQnOiBvaWR9KTsKKyAgICAgICAgICAgICAgaWYgKHMpIHsKKyAgICAgICAg ICAgICAgICBkID0gXy5yZWplY3QoZCwgcyk7CisgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBkOworICAgICAg ICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzdHJjb2x1bW4n LCBsYWJlbDone3sgXygnQ29sdW1ucycpIH19JywgY2VsbDogJ3N0cmluZycs IGdyb3VwOiAnRGVmaW5pdGlvbicsCisgICAgICAgICAgdHlwZTogJ3RleHQn LCBtaW5fdmVyc2lvbjogOTA1MDAsIG1vZGU6IFsncHJvcGVydGllcyddCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnY29sdW1ucycsIGxhYmVsOid7 eyBfKCdDb2x1bW5zJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICB0eXBlOiAnY29sbGVjdGlvbicsIGdyb3VwOiAnQ29sdW1ucycsIHZpc2li bGU6IGZhbHNlLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAg ICAgbW9kZWw6IENvbHVtbnNNb2RlbCwgY2FuQWRkOiB0cnVlLCBjYW5EZWxl dGU6IHRydWUsIGNhbkVkaXQ6IGZhbHNlLAorICAgICAgICAgIGNvbHVtbnM6 IFsnYXR0bmFtZScsICdkYXRhdHlwZScsICd0eXBsZW4nLCAncHJlY2lzaW9u JywgJ3R5cGRlZmF1bHQnLCAnYXR0bm90bnVsbCcsICdhdHRzdGF0dGFyZ2V0 JywgJ2NvbGxuYW1lJywgJ2luaGVyaXRlZGZyb20nXSwKKyAgICAgICAgICBj YW5EZWxldGVSb3c6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVy biAoXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkaWQnKSkgfHwgXy5p c051bGwobS5nZXQoJ2luaGVyaXRlZGlkJykpCisgICAgICAgICAgICAgIHx8 IF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkgfHwgXy5p c051bGwobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkpID8gdHJ1ZSA6IGZhbHNl CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg ICAgaWQ6ICdjb25zdHJhaW50cycsIGxhYmVsOid7eyBfKCdDb25zdHJhaW50 cycpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ2Nv bGxlY3Rpb24nLCBncm91cDogJ0NvbnN0cmFpbnRzJywgdmlzaWJsZTogZmFs c2UsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBtb2Rl bDogQ29uc3RyYWludE1vZGVsLCBjYW5BZGQ6IHRydWUsIGNhbkRlbGV0ZTog dHJ1ZSwgY29sdW1uczogWydjb25uYW1lJywnY29uc3JjJywgJ2Nvbm5vaW5o ZXJpdCcsICdjb252YWxpZGF0ZWQnXSwKKyAgICAgICAgICBjYW5FZGl0OiBm dW5jdGlvbihvKSB7CisgICAgICAgICAgICBpZiAobyBpbnN0YW5jZW9mIEJh Y2tib25lLk1vZGVsKSB7CisgICAgICAgICAgICAgIGlmIChvIGluc3RhbmNl b2YgQ29uc3RyYWludE1vZGVsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu IG8uaXNOZXcoKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfSwgbWluX3Zl cnNpb246IDkwNTAwLCBjYW5EZWxldGVSb3c6IGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgICAgIHJldHVybiAobS5nZXQoJ2NvbmlzbG9jYWwnKSA9PSB0cnVl IHx8IF8uaXNVbmRlZmluZWQobS5nZXQoJ2NvbmlzbG9jYWwnKSkpID8gdHJ1 ZSA6IGZhbHNlCisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ3N0cmZ0b3B0aW9ucycsIGxhYmVsOid7eyBfKCdPcHRpb25zJykg fX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcs IGdyb3VwOiAnRGVmaW5pdGlvbicsIG1vZGU6IFsncHJvcGVydGllcyddCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnZnRvcHRpb25zJywgbGFiZWw6 J3t7IF8oJ09wdGlvbnMnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICdjb2xsZWN0aW9uJywgZ3JvdXA6ICdPcHRpb25zJywgbW9k ZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1vZGVsOiBPcHRp b25zTW9kZWwsIGNhbkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBjYW5F ZGl0OiBmYWxzZSwKKyAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1j b2xsZWN0aW9uJywgdW5pcXVlQ29sIDogWydvcHRpb24nXQorICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ3JlbGFjbCcsIGxhYmVsOiAne3sgXygnUHJp dmlsZWdlcycpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlw ZTogJ3RleHQnLCBncm91cDogJ3t7IF8oJ1NlY3VyaXR5JykgfX0nLAorICAg ICAgICAgIG1vZGU6IFsncHJvcGVydGllcyddLCBtaW5fdmVyc2lvbjogOTAy MDAKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdhY2wnLCBsYWJlbDog J3t7IF8oJ1ByaXZpbGVnZXMnKSB9fScsIG1vZGVsOiBwZ0FkbWluCisgICAg ICAgICAgLkJyb3dzZXIuTm9kZS5Qcml2aWxlZ2VSb2xlTW9kZWwuZXh0ZW5k KAorICAgICAgICAgIHtwcml2aWxlZ2VzOiBbJ2EnLCdyJywndycsJ3gnXX0p LCB1bmlxdWVDb2wgOiBbJ2dyYW50ZWUnLCAnZ3JhbnRvciddLAorICAgICAg ICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24nLCBncm91 cDogJ3t7IF8oJ1NlY3VyaXR5JykgfX0nLAorICAgICAgICAgIG1vZGU6IFsn ZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBjYW5BZGQ6IHRydWUsIGNh bkRlbGV0ZTogdHJ1ZSwgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlv bicsCisgICAgICAgICAgbWluX3ZlcnNpb246IDkwMjAwCisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAnc2VjbGFiZWxzJywgbGFiZWw6ICd7eyBfKCdT ZWN1cml0eSBMYWJlbHMnKSB9fScsCisgICAgICAgICAgbW9kZWw6IFNlY3Vy aXR5TW9kZWwsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICBncm91 cDogJ3t7IF8oJ1NlY3VyaXR5JykgfX0nLCBtb2RlOiBbJ2VkaXQnLCAnY3Jl YXRlJ10sCisgICAgICAgICAgbWluX3ZlcnNpb246IDkwMTAwLCBjYW5BZGQ6 IHRydWUsCisgICAgICAgICAgY2FuRWRpdDogZmFsc2UsIGNhbkRlbGV0ZTog dHJ1ZSwKKyAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0 aW9uJywgdW5pcXVlQ29sIDogWydwcm92aWRlciddCisgICAgICAgIH0KKyAg ICAgICAgXSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkKKyAgICAg ICAgeworICAgICAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICAgICAg ZXJybXNnLAorICAgICAgICAgICAgICBzZWNsYWJlbHMgPSB0aGlzLmdldCgn c2VjbGFiZWxzJyk7CisKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0 aGlzLmdldCgnbmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSku cmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAg ICAgZXJyWyduYW1lJ10gPSAne3sgXygnTmFtZSBjYW5ub3QgYmUgZW1wdHku JykgfX0nOworICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsn bmFtZSddOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChfLmlzVW5k ZWZpbmVkKHRoaXMuZ2V0KCdiYXNlbnNwJykpIHx8IFN0cmluZyh0aGlzLmdl dCgnYmFzZW5zcCcpKQorICAgICAgICAgIC5yZXBsYWNlKC9eXHMrfFxzKyQv ZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBlcnJbJ2Jhc2Vuc3AnXSA9 ICd7eyBfKCdTY2hlbWEgY2Fubm90IGJlIGVtcHR5LicpIH19JzsKKyAgICAg ICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ2Jhc2Vuc3AnXTsKKyAg ICAgICAgICB9CisKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlz LmdldCgnZnRzcnZuYW1lJykpIHx8IFN0cmluZyh0aGlzLmdldCgnZnRzcnZu YW1lJykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAg ICAgICAgICAgIGVyclsnZnRzcnZuYW1lJ10gPSAne3sgXygnRm9yZWlnbiBz ZXJ2ZXIgY2Fubm90IGJlIGVtcHR5LicpIH19JzsKKyAgICAgICAgICAgIGVy cm1zZyA9IGVycm1zZyB8fCBlcnJbJ2Z0c3J2bmFtZSddOworICAgICAgICAg IH0KKworICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpLnNldChl cnIpOworCisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAg ICAgIH0pLAorICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwg aXRlbSwgZGF0YSkgeworICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRo ZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51CisgICAgICAgIGlmIChk YXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCisgICAgICAgICAgcmV0dXJu IHRydWU7CisKKyAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9 IGl0ZW0sIGQgPSBpdGVtRGF0YTsKKyAgICAgICAgLy8gVG8gaXRlcmF0ZSBv dmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKKyAgICAgICAgd2hpbGUg KGkpIHsKKyAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxv dyB1c2VyIHRvIGNyZWF0ZSBmb3JlaWduIHRhYmxlCisgICAgICAgICAgaWYg KF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQorICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICBpZiAoJ2NvbGwtZm9y ZWlnbi10YWJsZScgPT0gZC5fdHlwZSkgeworICAgICAgICAgICAgLy9DaGVj ayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKKyAgICAgICAgICAg IHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxs OworICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShw cmV2X2kpIDogbnVsbDsKKyAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUg PT0gJ2NhdGFsb2cnKSB7CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBp ID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CisgICAg ICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKKyAgICAgICAg fQorICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFs bG93IGNyZWF0ZSBtZW51CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAg fQorICB9KTsKKworICB9CisKKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1sn Zm9yZWlnbi10YWJsZSddOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMv c3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3Jl aWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9w bHVzL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZGNkNjAyNwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9z cWwvOS4xX3BsdXMvY3JlYXRlLnNxbApAQCAtMCwwICsxLDM2IEBACit7JSBp bXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VD TEFCTEUgJX0KK3slIGlmIGRhdGEgJX0KK0NSRUFURSBGT1JFSUdOIFRBQkxF IHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0o Cit7JSBpZiBkYXRhLmNvbHVtbnMgJX0KK3slIGZvciBjIGluIGRhdGEuY29s dW1ucyAlfQorICAgIHt7Y29ubnxxdElkZW50KGMuYXR0bmFtZSl9fSB7eyBj b25ufHF0VHlwZUlkZW50KGMuZGF0YXR5cGUpIH19eyUgaWYgYy50eXBsZW4g JX0oe3tjLnR5cGxlbn19IHslIGlmIGMucHJlY2lzaW9uICV9LCB7e2MucHJl Y2lzaW9ufX17JSBlbmRpZiAlfSl7JSBlbmRpZiAlfXslIGlmIGMuaXNBcnJh eVR5cGUgJX1bXXslIGVuZGlmICV9eyUgaWYgYy5hdHRub3RudWxsICV9Cisg Tk9UIE5VTEx7JSBlbHNlICV9IE5VTEx7JSBlbmRpZiAlfQoreyUgaWYgbm90 IGxvb3AubGFzdCAlfSwKK3slIGVuZGlmICV9eyUgZW5kZm9yIC0lfXslIGVu ZGlmICV9CisKKykKKyAgICBTRVJWRVIge3sgY29ubnxxdElkZW50KGRhdGEu ZnRzcnZuYW1lKSB9fXslIGlmIGRhdGEuZnRvcHRpb25zICV9CisKK3slIGZv ciBvIGluIGRhdGEuZnRvcHRpb25zICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQg by52YWx1ZSAlfQoreyUgaWYgbG9vcC5maXJzdCAlfSAgICBPUFRJT05TICh7 JSBlbmRpZiAlfXslIGlmIG5vdCBsb29wLmZpcnN0ICV9LCB7JSBlbmRpZiAl fXt7by5vcHRpb259fSB7e28udmFsdWV8cXRMaXRlcmFsfX17JSBpZiBsb29w Lmxhc3QgJX0peyUgZW5kaWYgJX17JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9 eyUgZW5kaWYgLSV9OworeyUgaWYgZGF0YS5vd25lciAlfQorCitBTFRFUiBG T1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRh dGEubmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBkYXRhLm93bmVyIH19Owor eyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CisKK0NP TU1FTlQgT04gRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5i YXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAgSVMgJ3t7IGRhdGEuZGVzY3Jp cHRpb24gfX0nOworeyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLnNlY2xhYmVs cyAlfQoreyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmIHIu c2VjdXJpdHlfbGFiZWwgYW5kIHIucHJvdmlkZXIgJX0KKwore3sgU0VDTEFC TEUuU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxFJywgZGF0YS5uYW1lLCByLnBy b3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBkYXRhLmJhc2Vuc3ApIH19Cit7 JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5k aWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZGVs ZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjQzZTA1Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJs ZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9kZWxl dGUuc3FsCkBAIC0wLDAgKzEsMTUgQEAKK3slIGlmIHNjaWQgYW5kIGZvaWQg JX0KK1NFTEVDVAorICAgIGMucmVsbmFtZSBBUyBuYW1lLCBuc3BuYW1lIGFz IGJhc2Vuc3AKK0ZST00KKyAgICBwZ19jbGFzcyBjCitMRUZUIE9VVEVSIEpP SU4KKyAgICBwZ19uYW1lc3BhY2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFt ZXNwYWNlKQorV0hFUkUKKyAgICBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19 OjpvaWQKKyAgICBBTkQgYy5vaWQgPSB7e2ZvaWR9fTo6b2lkOworeyUgZW5k aWYgJX0KKworeyUgaWYgbmFtZSAlfQorRFJPUCBGT1JFSUdOIFRBQkxFIHt7 IGNvbm58cXRJZGVudChiYXNlbnNwLCBuYW1lKSB9fXslIGlmIGNhc2NhZGUg JX0gQ0FTQ0FERXslIGVuZGlmICV9OworeyUgZW5kaWYgJX0KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2Zv cmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU5YzE3ZAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFi bGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0 X2NvbGxhdGlvbnMuc3FsCkBAIC0wLDAgKzEsMTAgQEAKK1NFTEVDVCAtLW5z cG5hbWUsIGNvbGxuYW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgobnNwbmFt ZSkgPiAwIEFORCBsZW5ndGgoY29sbG5hbWUpID4gMCAgVEhFTgorICAgIGNv bmNhdChuc3BuYW1lLCAnLiInLCBjb2xsbmFtZSwnIicpCisgICAgRUxTRSAn JyBFTkQgQVMgY29weV9jb2xsYXRpb24KK0ZST00KKyAgICBwZ19jb2xsYXRp b24gYywgcGdfbmFtZXNwYWNlIG4KK1dIRVJFCisgICAgYy5jb2xsbmFtZXNw YWNlPW4ub2lkCitPUkRFUiBCWQorICAgIG5zcG5hbWUsIGNvbGxuYW1lOwpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9nZXRfY29sdW1u cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9jb2x1bW5zLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmY1ZTE3 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9n ZXRfY29sdW1ucy5zcWwKQEAgLTAsMCArMSwyMiBAQAorU0VMRUNUCisgICAg YXR0bmFtZSwgYXR0bmRpbXMsIGF0dHR5cG1vZCwgZm9ybWF0X3R5cGUodC5v aWQsTlVMTCkgQVMgZGF0YXR5cGUsCisgICAgZm9ybWF0X3R5cGUodC5vaWQs IGF0dC5hdHR0eXBtb2QpIEFTIGZ1bGx0eXBlLCBhdHRub3RudWxsLCBhdHRu dW0sCisgICAgKFNFTEVDVCBDT1VOVCgxKSBmcm9tIHBnX3R5cGUgdDIgV0hF UkUgdDIudHlwbmFtZT10LnR5cG5hbWUpID4gMSBBUyBpc2R1cCwKKyAgICAo CisgICAgICAgIGF0dG5hbWUgfHwgJyAnIHx8IGZvcm1hdF90eXBlKHQub2lk LCBhdHQuYXR0dHlwbW9kKSB8fCAnICcgfHwKKyAgICAgICAgKENBU0UgV0hF TiBhdHRub3RudWxsPSd0cnVlJworICAgICAgICBUSEVOICdOT1QgTlVMTCcg RUxTRSAnTlVMTCcKKyAgICAgICAgRU5EKQorICAgICkgYXMgc3RyY29sdW1u CitGUk9NCisgICAgcGdfYXR0cmlidXRlIGF0dAorSk9JTgorICAgIHBnX3R5 cGUgdCBPTiB0Lm9pZD1hdHR0eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFj ZSBuc3AgT04gdC50eXBuYW1lc3BhY2U9bnNwLm9pZAorTEVGVCBPVVRFUiBK T0lOCisgICAgcGdfdHlwZSBiIE9OIHQudHlwZWxlbT1iLm9pZAorV0hFUkUK KyAgICBhdHQuYXR0cmVsaWQ9e3tmb2lkfX06Om9pZAorICAgIEFORCBhdHRu dW0+MAorT1JERVIgYnkgYXR0bnVtOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L3NxbC85LjFfcGx1cy9nZXRfY29uc3RyYWludHMuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L3NxbC85LjFfcGx1cy9nZXRfY29uc3RyYWludHMuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjOTM1NDkKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9jb25zdHJhaW50 cy5zcWwKQEAgLTAsMCArMSw3IEBACitTRUxFQ1QKKyAgICBjb25uYW1lLCBj b250eXBlLCBjb25zcmMKK0ZST00KKyAgICBwZ19jb25zdHJhaW50CitXSEVS RQorICAgIGNvbnJlbGlkPXt7Zm9pZH19OjpvaWQKK09SREVSIGJ5IGNvbm5h bWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxl cy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9m b3JlaWduX3NlcnZlcnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjFfcGx1cy9n ZXRfZm9yZWlnbl9zZXJ2ZXJzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4xOTgwZjAyCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25f dGFibGVzL3NxbC85LjFfcGx1cy9nZXRfZm9yZWlnbl9zZXJ2ZXJzLnNxbApA QCAtMCwwICsxLDUgQEAKK1NFTEVDVAorICAgIHNydm5hbWUKK0ZST00KKyAg ICBwZ19mb3JlaWduX3NlcnZlcgorT1JERVIgQlkgc3J2bmFtZTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNWY1ZDEKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsCkBA IC0wLDAgKzEsMTkgQEAKK3slIGlmIGJhc2Vuc3AgJX0KK1NFTEVDVAorICAg IGMub2lkLCBibi5vaWQgYXMgc2NpZAorRlJPTQorICAgIHBnX2NsYXNzIGMK K0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWMucmVsbmFt ZXNwYWNlCitXSEVSRQorICAgIGJuLm5zcG5hbWUgPSB7eyBiYXNlbnNwfHF0 TGl0ZXJhbCB9fQorICAgIEFORCBjLnJlbG5hbWU9e3sgbmFtZXxxdExpdGVy YWwgfX07CisKK3slIGVsaWYgZm9pZCAlfQorU0VMRUNUCisgICAgYy5yZWxu YW1lc3BhY2UgYXMgc2NpZAorRlJPTQorICAgIHBnX2NsYXNzIGMKK1dIRVJF CisgICAgYy5vaWQgPSB7e2ZvaWR9fTo6b2lkOworeyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvbm9kZS5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuMV9wbHVzL25vZGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNzMxYzUKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMv Zm9yZWlnbl90YWJsZXMvc3FsLzkuMV9wbHVzL25vZGUuc3FsCkBAIC0wLDAg KzEsMTQgQEAKK1NFTEVDVAorICAgIGMub2lkLCBjLnJlbG5hbWUgQVMgbmFt ZSwgcGdfZ2V0X3VzZXJieWlkKHJlbG93bmVyKSBBUyBvd25lciwKKyAgICBm dG9wdGlvbnMsIG5zcG5hbWUgYXMgYmFzZW5zcCwgZGVzY3JpcHRpb24KK0ZS T00KKyAgICBwZ19jbGFzcyBjCitKT0lOCisgICAgcGdfZm9yZWlnbl90YWJs ZSBmdCBPTiBjLm9pZD1mdC5mdHJlbGlkCitMRUZUIE9VVEVSIEpPSU4KKyAg ICBwZ19uYW1lc3BhY2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNl KQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9O IChkZXMub2Jqb2lkPWMub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNz Jzo6cmVnY2xhc3MpCitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0ge3tz Y2lkfX06Om9pZAorT1JERVIgQlkgYy5yZWxuYW1lOwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVhYmMxYgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwK QEAgLTAsMCArMSwyNSBAQAorU0VMRUNUCisgICAgYy5vaWQsIGMucmVsbmFt ZSBBUyBuYW1lLCBwZ19nZXRfdXNlcmJ5aWQocmVsb3duZXIpIEFTIG93bmVy LAorICAgIGZ0b3B0aW9ucywgc3J2bmFtZSBBUyBmdHNydm5hbWUsIGRlc2Ny aXB0aW9uLCBuc3BuYW1lIGFzIGJhc2Vuc3AsCisgICAgKFNFTEVDVAorICAg ICAgICBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKQorICAg IEZST00KKyAgICAgICAgcGdfc2VjbGFiZWwgc2wxCisgICAgV0hFUkUKKyAg ICAgICAgc2wxLm9iam9pZD1jLm9pZCkgQVMgc2VjbGFiZWxzCitGUk9NCisg ICAgcGdfY2xhc3MgYworSk9JTgorICAgIHBnX2ZvcmVpZ25fdGFibGUgZnQg T04gYy5vaWQ9ZnQuZnRyZWxpZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdf Zm9yZWlnbl9zZXJ2ZXIgZnMgT04gZnQuZnRzZXJ2ZXI9ZnMub2lkCitMRUZU IE9VVEVSIEpPSU4KKyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5v YmpvaWQ9Yy5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdj bGFzcykKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3Ag T04gKG5zcC5vaWQ9Yy5yZWxuYW1lc3BhY2UpCitXSEVSRQorICAgIGMucmVs bmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAorICAgIHslIGlmIGZvaWQgJX0K KyAgICBBTkQgYy5vaWQgPSB7e2ZvaWR9fTo6b2lkCisgICAgeyUgZW5kaWYg JX0KK09SREVSIEJZIGMucmVsbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4x X3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5kMzRiMmQwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L3NxbC85LjFfcGx1cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMTA5IEBACit7 JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMg U0VDTEFCTEUgJX0KK3slIGlmIGRhdGEgJX0KK3slIHNldCBuYW1lID0gb19k YXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5u YW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgb19kYXRhLm5hbWUpIH19 CisgICAgUkVOQU1FIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19 OworeyUgc2V0IG5hbWUgPSBkYXRhLm5hbWUgJX0KK3slIGVuZGlmICV9Cit7 JSBlbmRpZiAtJX0KKworeyUgaWYgZGF0YS5vd25lciAlfQorCitBTFRFUiBG T1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwg bmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBkYXRhLm93bmVyIH19OworeyUg ZW5kaWYgLSV9CisKK3slIGlmIGRhdGEuY29sdW1ucyAlfQoreyUgZm9yIGMg aW4gZGF0YS5jb2x1bW5zLmRlbGV0ZWQgJX0KKworQUxURVIgRk9SRUlHTiBU QUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19 CisgICAgRFJPUCBDT0xVTU4ge3tjb25ufHF0SWRlbnQoYy5hdHRuYW1lKX19 OworeyUgZW5kZm9yIC0lfQoreyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zLmFk ZGVkICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIEFERCBDT0xVTU4ge3tj b25ufHF0SWRlbnQoYy5hdHRuYW1lKX19IHt7IGNvbm58cXRUeXBlSWRlbnQo Yy5kYXRhdHlwZSkgfX17JSBpZiBjLnR5cGxlbiAlfSh7e2MudHlwbGVufX17 JSBpZiBjLnByZWNpc2lvbiAlfSwge3tjLnByZWNpc2lvbn19eyUgZW5kaWYg JX0peyUgZW5kaWYgJX17JSBpZiBjLmlzQXJyYXlUeXBlICV9W117JSBlbmRp ZiAlfQoreyUgaWYgYy5hdHRub3RudWxsICV9IE5PVCBOVUxMeyUgZWxzZSAl fSBOVUxMeyUgZW5kaWYgJX0KK3slIGlmIGMudHlwZGVmYXVsdCAlfSBERUZB VUxUIHt7Yy50eXBkZWZhdWx0fX17JSBlbmRpZiAlfQoreyUgaWYgYy5jb2xs bmFtZSAlfSBDT0xMQVRFIHt7Yy5jb2xsbmFtZX19eyUgZW5kaWYgJX07Cit7 JSBlbmRmb3IgLSV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMuY2hhbmdl ZCAlfQoreyUgc2V0IGNvbF9uYW1lID0gb19kYXRhWydjb2x1bW5zJ11bYy5h dHRudW1dWydhdHRuYW1lJ10gJX0KK3slIGlmIGMuYXR0bmFtZSAhPSBvX2Rh dGFbJ2NvbHVtbnMnXVtjLmF0dG51bV1bJ2F0dG5hbWUnXSAlfQoreyUgc2V0 IGNvbF9uYW1lID0gYy5hdHRuYW1lICV9CisKK0FMVEVSIEZPUkVJR04gVEFC TEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQor ICAgIFJFTkFNRSBDT0xVTU4ge3tjb25ufHF0SWRlbnQob19kYXRhWydjb2x1 bW5zJ11bYy5hdHRudW1dWydhdHRuYW1lJ10pfX0gVE8ge3tjb25ufHF0SWRl bnQoYy5hdHRuYW1lKX19OworeyUgZW5kaWYgJX0KK3slIGlmIGMuYXR0bm90 bnVsbCAhPSBvX2RhdGFbJ2NvbHVtbnMnXVtjLmF0dG51bV1bJ2F0dG5vdG51 bGwnXSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVu dChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBBTFRFUiBDT0xVTU4g e3tjb25ufHF0SWRlbnQoY29sX25hbWUpfX17JSBpZiBjLmF0dG5vdG51bGwg JX0gU0VUeyUgZWxzZSAlfSBEUk9QeyUgZW5kaWYgJX0gTk9UIE5VTEw7Cit7 JSBlbmRpZiAlfQoreyUgaWYgYy5kYXRhdHlwZSAhPSBvX2RhdGFbJ2NvbHVt bnMnXVtjLmF0dG51bV1bJ2RhdGF0eXBlJ10gb3IgYy50eXBsZW4gIT0gb19k YXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWyd0eXBsZW4nXSBvcgorYy5wcmVj aXNpb24gIT0gb19kYXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWydwcmVjaXNp b24nXSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVu dChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBBTFRFUiBDT0xVTU4g e3tjb25ufHF0SWRlbnQoY29sX25hbWUpfX0gVFlQRSB7eyBjb25ufHF0VHlw ZUlkZW50KGMuZGF0YXR5cGUpIH19eyUgaWYgYy50eXBsZW4gJX0oe3tjLnR5 cGxlbn19eyUgaWYgYy5wcmVjaXNpb24gJX0sIHt7Yy5wcmVjaXNpb259fXsl IGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgYy5pc0FycmF5VHlwZSAlfVtd eyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQoreyUgaWYgYy50eXBkZWZhdWx0 ICE9IG9fZGF0YVsnY29sdW1ucyddW2MuYXR0bnVtXVsndHlwZGVmYXVsdCdd ICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9f ZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIEFMVEVSIENPTFVNTiB7e2Nv bm58cXRJZGVudChjb2xfbmFtZSl9fXslIGlmIGMudHlwZGVmYXVsdCAlfSBT RVQgREVGQVVMVCB7e2MudHlwZGVmYXVsdH19eyUgZWxzZSAlfSBEUk9QIERF RkFVTFR7JSBlbmRpZiAlfTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0K K3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5mdG9wdGlvbnMgJX0KK3slIGZv ciBvIGluIGRhdGEuZnRvcHRpb25zLmRlbGV0ZWQgJX0KK3slIGlmIG8ub3B0 aW9uIGFuZCBvLnZhbHVlICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sg Y29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIE9Q VElPTlMgKERST1Age3tvLm9wdGlvbn19KTsKK3slIGVuZGlmICV9Cit7JSBl bmRmb3IgJX0KK3slIGZvciBvIGluIGRhdGEuZnRvcHRpb25zLmFkZGVkICV9 Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQorCitBTFRFUiBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFt ZSkgfX0KKyAgICBPUFRJT05TIChBREQge3tvLm9wdGlvbn19IHt7by52YWx1 ZXxxdExpdGVyYWx9fSk7Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7 JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5jaGFuZ2VkICV9Cit7JSBpZiBv Lm9wdGlvbiBhbmQgby52YWx1ZSAlfQorCitBTFRFUiBGT1JFSUdOIFRBQkxF IHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAg ICBPUFRJT05TIChTRVQge3tvLm9wdGlvbn19IHt7by52YWx1ZXxxdExpdGVy YWx9fSk7Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAt JX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUg aWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0 ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0 ZWQgJX0KK3t7IFNFQ0xBQkxFLlVOU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxF JywgbmFtZSwgci5wcm92aWRlciwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNs YWJlbHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBm b3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KKwore3sgU0VDTEFCTEUuU0VU KGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFtZSwgci5wcm92aWRlciwgci5z ZWN1cml0eV9sYWJlbCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3Ig JX0KK3slIGVuZGlmIC0lfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVs cyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9y IHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KKwore3sgU0VDTEFCTEUuU0VU KGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFtZSwgci5wcm92aWRlciwgci5z ZWN1cml0eV9sYWJlbCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3Ig JX0KK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQor CitDT01NRU5UIE9OIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9f ZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIElTIHt7IGRhdGEuZGVzY3Jp cHRpb258cXRMaXRlcmFsIH19OworeyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRh LmJhc2Vuc3AgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0 SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgU0VUIFNDSEVN QSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwKSB9fTsKK3slIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85 LjJfcGx1cy9hY2wuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJs ZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9hY2wu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMWEw MzUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVz L2FjbC5zcWwKQEAgLTAsMCArMSwzNSBAQAorU0VMRUNUCisgICAgQ09BTEVT Q0UoZ3Qucm9sbmFtZSwgJ3B1YmxpYycpIEFTIGdyYW50ZWUsCisgICAgZy5y b2xuYW1lIEFTIGdyYW50b3IsIGFycmF5X2FnZyhwcml2aWxlZ2VfdHlwZSkg QVMgcHJpdmlsZWdlcywKKyAgICBhcnJheV9hZ2coaXNfZ3JhbnRhYmxlKSBB UyBncmFudGFibGUKK0ZST00KKyAgICAoU0VMRUNUCisgICAgICAgIGQuZ3Jh bnRlZSwgZC5ncmFudG9yLCBkLmlzX2dyYW50YWJsZSwKKyAgICAgICAgQ0FT RSBkLnByaXZpbGVnZV90eXBlCisgICAgICAgIFdIRU4gJ0NPTk5FQ1QnIFRI RU4gJ2MnCisgICAgICAgIFdIRU4gJ0NSRUFURScgVEhFTiAnQycKKyAgICAg ICAgV0hFTiAnREVMRVRFJyBUSEVOICdkJworICAgICAgICBXSEVOICdFWEVD VVRFJyBUSEVOICdYJworICAgICAgICBXSEVOICdJTlNFUlQnIFRIRU4gJ2En CisgICAgICAgIFdIRU4gJ1JFRkVSRU5DRVMnIFRIRU4gJ3gnCisgICAgICAg IFdIRU4gJ1NFTEVDVCcgVEhFTiAncicKKyAgICAgICAgV0hFTiAnVEVNUE9S QVJZJyBUSEVOICdUJworICAgICAgICBXSEVOICdUUklHR0VSJyBUSEVOICd0 JworICAgICAgICBXSEVOICdUUlVOQ0FURScgVEhFTiAnRCcKKyAgICAgICAg V0hFTiAnVVBEQVRFJyBUSEVOICd3JworICAgICAgICBXSEVOICdVU0FHRScg VEhFTiAnVScKKyAgICAgICAgRUxTRSAnVU5LTk9XTicKKyAgICAgICAgRU5E IEFTIHByaXZpbGVnZV90eXBlCisgICAgRlJPTQorICAgICAgICAoU0VMRUNU CisgICAgICAgICAgICAoZCkuZ3JhbnRlZSBBUyBncmFudGVlLCAoZCkuZ3Jh bnRvciBBUyBncmFudG9yLAorICAgICAgICAgICAgKGQpLmlzX2dyYW50YWJs ZSBBUyBpc19ncmFudGFibGUsCisgICAgICAgICAgICAoZCkucHJpdmlsZWdl X3R5cGUgQVMgcHJpdmlsZWdlX3R5cGUKKyAgICAgICAgRlJPTQorICAgICAg ICAgICAgKFNFTEVDVCBhY2xleHBsb2RlKGRiLnJlbGFjbCkgQVMgZCBGUk9N IHBnX2NsYXNzIGRiCisgICAgICAgICAgICBXSEVSRSBkYi5vaWQgPSB7e2Zv aWR9fTo6T0lEKSBhCisgICAgICAgICkgZAorICAgICkgZAorICAgIExFRlQg Sk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGcgT04gKGQuZ3JhbnRvciA9IGcu b2lkKQorICAgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGd0IE9O IChkLmdyYW50ZWUgPSBndC5vaWQpCitHUk9VUCBCWSBnLnJvbG5hbWUsIGd0 LnJvbG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVz L2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk3YjEy NAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25f dGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMv Y3JlYXRlLnNxbApAQCAtMCwwICsxLDQ0IEBACit7JSBpbXBvcnQgJ21hY3Jv cy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3sl IGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMg UFJJVklMRUdFICV9Cit7JSBpZiBkYXRhICV9CitDUkVBVEUgRk9SRUlHTiBU QUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRhLm5hbWUp IH19KAoreyUgaWYgZGF0YS5jb2x1bW5zICV9Cit7JSBmb3IgYyBpbiBkYXRh LmNvbHVtbnMgJX0KKyAgICB7e2Nvbm58cXRJZGVudChjLmF0dG5hbWUpfX0g e3tjb25ufHF0VHlwZUlkZW50KGMuZGF0YXR5cGUpIH19eyUgaWYgYy50eXBs ZW4gJX0oe3tjLnR5cGxlbn19eyUgaWYgYy5wcmVjaXNpb24gJX0sIHt7Yy5w cmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgYy5pc0Fy cmF5VHlwZSAlfVtdeyUgZW5kaWYgJX17JSBpZiBjLmF0dG5vdG51bGwgJX0K KyBOT1QgTlVMTHslIGVsc2UgJX0gTlVMTHslIGVuZGlmICV9eyUgaWYgYy50 eXBkZWZhdWx0ICV9CisgREVGQVVMVCB7e2MudHlwZGVmYXVsdH19eyUgZW5k aWYgJX17JSBpZiBjLmNvbGxuYW1lICV9CisgQ09MTEFURSB7e2MuY29sbG5h bWV9fXslIGVuZGlmICV9Cit7JSBpZiBub3QgbG9vcC5sYXN0ICV9LAoreyUg ZW5kaWYgJX17JSBlbmRmb3IgLSV9eyUgZW5kaWYgJX0KKworKQorICAgIFNF UlZFUiB7eyBjb25ufHF0SWRlbnQoZGF0YS5mdHNydm5hbWUpIH19eyUgaWYg ZGF0YS5mdG9wdGlvbnMgJX0KKworeyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlv bnMgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9Cit7JSBpZiBs b29wLmZpcnN0ICV9ICAgIE9QVElPTlMgKHslIGVuZGlmICV9eyUgaWYgbm90 IGxvb3AuZmlyc3QgJX0sIHslIGVuZGlmICV9e3tvLm9wdGlvbn19IHt7by52 YWx1ZXxxdExpdGVyYWx9fXslIGlmIGxvb3AubGFzdCAlfSl7JSBlbmRpZiAl fXslIGVuZGlmICV9Cit7JSBlbmRmb3IgJX17JSBlbmRpZiAlfTsKK3slIGlm IGRhdGEub3duZXIgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25u fHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAgT1dO RVIgVE8ge3sgZGF0YS5vd25lciB9fTsKK3slIGVuZGlmIC0lfQoreyUgaWYg ZGF0YS5kZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9OIEZPUkVJR04gVEFC TEUge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9 fQorICAgIElTICd7eyBkYXRhLmRlc2NyaXB0aW9uIH19JzsKK3slIGVuZGlm IC0lfQoreyUgaWYgZGF0YS5hY2wgJX0KKworeyUgZm9yIHByaXYgaW4gZGF0 YS5hY2wgJX0KK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJp di5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJp di53aXRoX2dyYW50LCBkYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgLSV9 Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuc2VjbGFiZWxzICV9CisKK3sl IGZvciByIGluIGRhdGEuc2VjbGFiZWxzICV9eyUgaWYgci5zZWN1cml0eV9s YWJlbCBhbmQgci5wcm92aWRlciAlfQore3sgU0VDTEFCTEUuU0VUKGNvbm4s ICdGT1JFSUdOIFRBQkxFJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNl Y3VyaXR5X2xhYmVsLCBkYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRpZiAlfQor eyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRl cy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmIwOTY5Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVz L2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9kZWxldGUuc3FsCkBAIC0w LDAgKzEsMTcgQEAKK3slIGlmIHNjaWQgYW5kIGZvaWQgJX0KK1NFTEVDVAor ICAgIGMucmVsbmFtZSBBUyBuYW1lLCBuc3BuYW1lIGFzIGJhc2Vuc3AKK0ZS T00KKyAgICBwZ19jbGFzcyBjCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19u YW1lc3BhY2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNlKQorV0hF UkUKKyAgICBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK0FORAor ICAgIGMub2lkID0ge3tmb2lkfX06Om9pZDsKK3slIGVuZGlmICV9CisKKwor eyUgaWYgbmFtZSAlfQorRFJPUCBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJ ZGVudChiYXNlbnNwLCBuYW1lKSB9fXslIGlmIGNhc2NhZGUlfSBDQVNDQURF eyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFi bGVzL3NxbC85LjJfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuMl9wbHVzL2dldF9jb2xsYXRpb25zLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGQyNzRiCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9nZXRfY29sbGF0aW9u cy5zcWwKQEAgLTAsMCArMSw5IEBACitTRUxFQ1QgLS1uc3BuYW1lLCBjb2xs bmFtZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3RoKG5zcG5hbWUpID4gMCBBTkQg bGVuZ3RoKGNvbGxuYW1lKSA+IDAgIFRIRU4KKyAgICBjb25jYXQobnNwbmFt ZSwgJy4iJywgY29sbG5hbWUsJyInKQorICAgIEVMU0UgJycgRU5EIEFTIGNv cHlfY29sbGF0aW9uCitGUk9NCisgICAgcGdfY29sbGF0aW9uIGMsIHBnX25h bWVzcGFjZSBuCitXSEVSRQorICAgIGMuY29sbG5hbWVzcGFjZT1uLm9pZAor T1JERVIgQlkgbnNwbmFtZSwgY29sbG5hbWU7CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuMl9wbHVzL2dldF9jb2x1bW5zLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS4yX3BsdXMvZ2V0X2NvbHVtbnMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMDNhZDcKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMv Zm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL2dldF9jb2x1bW5zLnNxbApA QCAtMCwwICsxLDM0IEBACitTRUxFQ1QKKyAgICBhdHRuYW1lLCBhdHRuZGlt cywgYXR0dHlwbW9kLCBmb3JtYXRfdHlwZSh0Lm9pZCxOVUxMKSBBUyBkYXRh dHlwZSwKKyAgICBhdHRub3RudWxsLCBhdHRzdGF0dGFyZ2V0LCBhdHRudW0s IGZvcm1hdF90eXBlKHQub2lkLCBhdHQuYXR0dHlwbW9kKSBBUyBmdWxsdHlw ZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3RoKGNuLm5zcG5hbWUpID4gMCBBTkQg bGVuZ3RoKGNsLmNvbGxuYW1lKSA+IDAgVEhFTgorICAgIGNvbmNhdChjbi5u c3BuYW1lLCAnLiInLCBjbC5jb2xsbmFtZSwnIicpIEVMU0UgJycgRU5EIEFT IGNvbGxuYW1lLAorICAgIChTRUxFQ1QgQ09VTlQoMSkgZnJvbSBwZ190eXBl IHQyIFdIRVJFIHQyLnR5cG5hbWU9dC50eXBuYW1lKSA+IDEgQVMgaXNkdXAs CisgICAgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihkZWYuYWRiaW4sIGRlZi5h ZHJlbGlkKSBBUyB0eXBkZWZhdWx0LAorICAgICgKKyAgICAgICAgYXR0bmFt ZSB8fCAnICcgfHwgZm9ybWF0X3R5cGUodC5vaWQsIGF0dC5hdHR0eXBtb2Qp IHx8ICcgJyB8fAorICAgICAgICAoQ0FTRSBXSEVOIGF0dG5vdG51bGw9J3Ry dWUnCisgICAgICAgIFRIRU4gJ05PVCBOVUxMJyBFTFNFICdOVUxMJworICAg ICAgICBFTkQpIHx8ICcgJyB8fAorICAgICAgICAoQ0FTRSBXSEVOIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoZGVmLmFkYmluLCBkZWYuYWRyZWxpZCk8Picn CisgICAgICAgIFRIRU4gJ0RFRkFVTFQgJyB8fCBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGRlZi5hZGJpbiwgZGVmLmFkcmVsaWQpCisgICAgICAgIEVMU0Ug JycgRU5EKQorICAgICkgYXMgc3RyY29sdW1uCitGUk9NCisgICAgcGdfYXR0 cmlidXRlIGF0dAorSk9JTgorICAgIHBnX3R5cGUgdCBPTiB0Lm9pZD1hdHR0 eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3AgT04gdC50eXBuYW1l c3BhY2U9bnNwLm9pZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfYXR0cmRl ZiBkZWYgT04gYWRyZWxpZD1hdHQuYXR0cmVsaWQgQU5EIGFkbnVtPWF0dC5h dHRudW0KK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX3R5cGUgYiBPTiB0LnR5 cGVsZW09Yi5vaWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2NvbGxhdGlv biBjbCBPTiB0LnR5cGNvbGxhdGlvbj1jbC5vaWQKK0xFRlQgT1VURVIgSk9J TgorICAgIHBnX25hbWVzcGFjZSBjbiBPTiBjbC5jb2xsbmFtZXNwYWNlPWNu Lm9pZAorV0hFUkUKKyAgICBhdHQuYXR0cmVsaWQ9e3tmb2lkfX06Om9pZAor ICAgIEFORCBhdHRudW0+MAorT1JERVIgYnkgYXR0bnVtOwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2Zv cmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9nZXRfY29uc3RyYWludHMuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2Zv cmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9nZXRfY29uc3RyYWludHMuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYTgyOTgK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuMl9wbHVzL2dl dF9jb25zdHJhaW50cy5zcWwKQEAgLTAsMCArMSw3IEBACitTRUxFQ1QKKyAg ICBjb25uYW1lLCBjb250eXBlLCBjb25zcmMsIGNvbmlzbG9jYWwKK0ZST00K KyAgICBwZ19jb25zdHJhaW50CitXSEVSRQorICAgIGNvbnJlbGlkPXt7Zm9p ZH19OjpvaWQKK09SREVSIGJ5IGNvbm5hbWU7CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuMl9wbHVzL2dldF9mb3JlaWduX3NlcnZlcnMuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVp Z25fdGFibGVzL3NxbC85LjJfcGx1cy9nZXRfZm9yZWlnbl9zZXJ2ZXJzLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzk1Y2U1 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy9n ZXRfZm9yZWlnbl9zZXJ2ZXJzLnNxbApAQCAtMCwwICsxLDYgQEAKK1NFTEVD VAorICAgIHNydm5hbWUKK0ZST00KKyAgICBwZ19mb3JlaWduX3NlcnZlcgor T1JERVIgQlkKKyAgICBzcnZuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L3NxbC85LjJfcGx1cy9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4y X3BsdXMvZ2V0X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uOWE1ZjVkMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS4yX3BsdXMvZ2V0X29pZC5zcWwKQEAgLTAsMCArMSwxOSBAQAor eyUgaWYgYmFzZW5zcCAlfQorU0VMRUNUCisgICAgYy5vaWQsIGJuLm9pZCBh cyBzY2lkCitGUk9NCisgICAgcGdfY2xhc3MgYworSk9JTgorICAgIHBnX25h bWVzcGFjZSBibiBPTiBibi5vaWQ9Yy5yZWxuYW1lc3BhY2UKK1dIRVJFCisg ICAgYm4ubnNwbmFtZSA9IHt7IGJhc2Vuc3B8cXRMaXRlcmFsIH19CisgICAg QU5EIGMucmVsbmFtZT17eyBuYW1lfHF0TGl0ZXJhbCB9fTsKKworeyUgZWxp ZiBmb2lkICV9CitTRUxFQ1QKKyAgICBjLnJlbG5hbWVzcGFjZSBhcyBzY2lk CitGUk9NCisgICAgcGdfY2xhc3MgYworV0hFUkUKKyAgICBjLm9pZCA9IHt7 Zm9pZH19OjpvaWQ7Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFi bGVzL3NxbC85LjJfcGx1cy9ub2RlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4y X3BsdXMvbm9kZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYmM3MzFjNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9z cWwvOS4yX3BsdXMvbm9kZS5zcWwKQEAgLTAsMCArMSwxNCBAQAorU0VMRUNU CisgICAgYy5vaWQsIGMucmVsbmFtZSBBUyBuYW1lLCBwZ19nZXRfdXNlcmJ5 aWQocmVsb3duZXIpIEFTIG93bmVyLAorICAgIGZ0b3B0aW9ucywgbnNwbmFt ZSBhcyBiYXNlbnNwLCBkZXNjcmlwdGlvbgorRlJPTQorICAgIHBnX2NsYXNz IGMKK0pPSU4KKyAgICBwZ19mb3JlaWduX3RhYmxlIGZ0IE9OIGMub2lkPWZ0 LmZ0cmVsaWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX25hbWVzcGFjZSBu c3AgT04gKG5zcC5vaWQ9Yy5yZWxuYW1lc3BhY2UpCitMRUZUIE9VVEVSIEpP SU4KKyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5v aWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKK1dI RVJFCisgICAgYy5yZWxuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCitPUkRF UiBCWSBjLnJlbG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m b3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzku Ml9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWln bl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1 cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5jNTU3Yzg3Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVz L3NxbC85LjJfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDI3IEBA CitTRUxFQ1QKKyAgICBjLm9pZCwgYy5yZWxuYW1lIEFTIG5hbWUsIGMucmVs YWNsLCBwZ19nZXRfdXNlcmJ5aWQocmVsb3duZXIpIEFTIG93bmVyLAorICAg IGZ0b3B0aW9ucywgc3J2bmFtZSBBUyBmdHNydm5hbWUsIGRlc2NyaXB0aW9u LCBuc3BuYW1lIGFzIGJhc2Vuc3AsIGNvbnNyYywKKyAgICAoU0VMRUNUCisg ICAgICAgIGFycmF5X2FnZyhwcm92aWRlciB8fCAnPScgfHwgbGFiZWwpCisg ICAgRlJPTQorICAgICAgICBwZ19zaHNlY2xhYmVsIHNsMQorICAgIFdIRVJF CisgICAgICAgIHNsMS5vYmpvaWQ9Yy5vaWQpIEFTIHNlY2xhYmVscworRlJP TQorICAgIHBnX2NsYXNzIGMKK0pPSU4KKyAgICBwZ19mb3JlaWduX3RhYmxl IGZ0IE9OIGMub2lkPWZ0LmZ0cmVsaWQKK0xFRlQgT1VURVIgSk9JTgorICAg IHBnX2ZvcmVpZ25fc2VydmVyIGZzIE9OIGZ0LmZ0c2VydmVyPWZzLm9pZAor TEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChk ZXMub2Jqb2lkPWMub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6 cmVnY2xhc3MpCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19uYW1lc3BhY2Ug bnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNlKQorTEVGVCBPVVRFUiBK T0lOCisgICAgcGdfY29uc3RyYWludCBjbiBPTiAoY24uY29ucmVsaWQ9Yy5v aWQpCitXSEVSRQorICAgIGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06Om9p ZAorICAgIHslIGlmIGZvaWQgJX0KKyAgICBBTkQgYy5vaWQgPSB7e2ZvaWR9 fTo6b2lkCisgICAgeyUgZW5kaWYgJX0KK09SREVSIEJZIGMucmVsbmFtZTsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvdXBkYXRlLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9m b3JlaWduX3RhYmxlcy9zcWwvOS4yX3BsdXMvdXBkYXRlLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGZiNDMzCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjJfcGx1cy91cGRhdGUuc3Fs CkBAIC0wLDAgKzEsMTQ4IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFz L3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAn bWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdF ICV9Cit7JSBpZiBkYXRhICV9Cit7JSBzZXQgbmFtZSA9IG9fZGF0YS5uYW1l ICV9Cit7JSBpZiBkYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAhPSBv X2RhdGEubmFtZSAlfQorQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0 SWRlbnQob19kYXRhLmJhc2Vuc3AsIG9fZGF0YS5uYW1lKSB9fQorICAgIFJF TkFNRSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKK3slIHNl dCBuYW1lID0gZGF0YS5uYW1lICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYg LSV9Cit7JSBpZiBkYXRhLm93bmVyICV9CisKK0FMVEVSIEZPUkVJR04gVEFC TEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQor ICAgIE9XTkVSIFRPIHt7IGRhdGEub3duZXIgfX07Cit7JSBlbmRpZiAtJX0K K3slIGlmIGRhdGEuY29sdW1ucyAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb2x1 bW5zLmRlbGV0ZWQgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25u fHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJPUCBD T0xVTU4ge3tjb25ufHF0SWRlbnQoYy5hdHRuYW1lKX19OworeyUgZW5kZm9y IC0lfQoreyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zLmFkZGVkICV9CisKK0FM VEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNl bnNwLCBuYW1lKSB9fQorICAgIEFERCBDT0xVTU4ge3tjb25ufHF0SWRlbnQo Yy5hdHRuYW1lKX19IHt7IGNvbm58cXRUeXBlSWRlbnQoYy5kYXRhdHlwZSkg fX17JSBpZiBjLnR5cGxlbiAlfSh7e2MudHlwbGVufX17JSBpZiBjLnByZWNp c2lvbiAlfSwge3tjLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUgZW5kaWYg JX17JSBpZiBjLmlzQXJyYXlUeXBlICV9W117JSBlbmRpZiAlfQoreyUgaWYg Yy5hdHRub3RudWxsICV9IE5PVCBOVUxMeyUgZWxzZSAlfSBOVUxMeyUgZW5k aWYgJX0KK3slIGlmIGMudHlwZGVmYXVsdCAlfSBERUZBVUxUIHt7Yy50eXBk ZWZhdWx0fX17JSBlbmRpZiAlfQoreyUgaWYgYy5jb2xsbmFtZSAlfSBDT0xM QVRFIHt7Yy5jb2xsbmFtZX19eyUgZW5kaWYgJX07Cit7JSBlbmRmb3IgLSV9 Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMuY2hhbmdlZCAlfQoreyUgc2V0 IGNvbF9uYW1lID0gb19kYXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWydhdHRu YW1lJ10gJX0KK3slIGlmIGMuYXR0bmFtZSAhPSBvX2RhdGFbJ2NvbHVtbnMn XVtjLmF0dG51bV1bJ2F0dG5hbWUnXSAlfQoreyUgc2V0IGNvbF9uYW1lID0g Yy5hdHRuYW1lICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxx dElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFJFTkFNRSBD T0xVTU4ge3tjb25ufHF0SWRlbnQob19kYXRhWydjb2x1bW5zJ11bYy5hdHRu dW1dWydhdHRuYW1lJ10pfX0gVE8ge3tjb25ufHF0SWRlbnQoYy5hdHRuYW1l KX19OworeyUgZW5kaWYgJX0KK3slIGlmIGMuYXR0bm90bnVsbCAhPSBvX2Rh dGFbJ2NvbHVtbnMnXVtjLmF0dG51bV1bJ2F0dG5vdG51bGwnXSAlfQorCitB TFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgbmFtZSkgfX0KKyAgICBBTFRFUiBDT0xVTU4ge3tjb25ufHF0SWRl bnQoY29sX25hbWUpfX17JSBpZiBjLmF0dG5vdG51bGwgJX0gU0VUeyUgZWxz ZSAlfSBEUk9QeyUgZW5kaWYgJX0gTk9UIE5VTEw7Cit7JSBlbmRpZiAlfQor eyUgaWYgYy5kYXRhdHlwZSAhPSBvX2RhdGFbJ2NvbHVtbnMnXVtjLmF0dG51 bV1bJ2RhdGF0eXBlJ10gb3IgYy50eXBsZW4gIT0gb19kYXRhWydjb2x1bW5z J11bYy5hdHRudW1dWyd0eXBsZW4nXSBvcgorYy5wcmVjaXNpb24gIT0gb19k YXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWydwcmVjaXNpb24nXSAlfQorCitB TFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgbmFtZSkgfX0KKyAgICBBTFRFUiBDT0xVTU4ge3tjb25ufHF0SWRl bnQoY29sX25hbWUpfX0gVFlQRSB7eyBjb25ufHF0VHlwZUlkZW50KGMuZGF0 YXR5cGUpIH19eyUgaWYgYy50eXBsZW4gJX0oe3tjLnR5cGxlbn19eyUgaWYg Yy5wcmVjaXNpb24gJX0sIHt7Yy5wcmVjaXNpb259fXslIGVuZGlmICV9KXsl IGVuZGlmICV9eyUgaWYgYy5pc0FycmF5VHlwZSAlfVtdeyUgZW5kaWYgJX07 Cit7JSBlbmRpZiAlfQoreyUgaWYgYy50eXBkZWZhdWx0ICE9IG9fZGF0YVsn Y29sdW1ucyddW2MuYXR0bnVtXVsndHlwZGVmYXVsdCddICV9CisKK0FMVEVS IEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNw LCBuYW1lKSB9fQorICAgIEFMVEVSIENPTFVNTiB7e2Nvbm58cXRJZGVudChj b2xfbmFtZSl9fXslIGlmIGMudHlwZGVmYXVsdCAlfSBTRVQgREVGQVVMVCB7 e2MudHlwZGVmYXVsdH19eyUgZWxzZSAlfSBEUk9QIERFRkFVTFR7JSBlbmRp ZiAlfTsKK3slIGVuZGlmICV9Cit7JSBpZiBjLmF0dHN0YXR0YXJnZXQgIT0g b19kYXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWydhdHRzdGF0dGFyZ2V0J10g JX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQUxURVIgQ09MVU1OIHt7Y29u bnxxdElkZW50KGNvbF9uYW1lKX19IFNFVCBTVEFUSVNUSUNTIHslIGlmIGMu YXR0c3RhdHRhcmdldCAlfXt7Yy5hdHRzdGF0dGFyZ2V0fX17JSBlbHNlICV9 LTF7JSBlbmRpZiAlfTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3sl IGVuZGlmIC0lfQoreyUgaWYgZGF0YS5jb25zdHJhaW50cyAlfQoreyUgZm9y IGMgaW4gZGF0YS5jb25zdHJhaW50cy5kZWxldGVkICV9CisKK0FMVEVSIEZP UkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBu YW1lKSB9fQorICAgIERST1AgQ09OU1RSQUlOVCB7e2Nvbm58cXRJZGVudChj LmNvbm5hbWUpfX07Cit7JSBlbmRmb3IgJX0KK3slIGZvciBjIGluIGRhdGEu Y29uc3RyYWludHMuYWRkZWQgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7 eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAg QUREIENPTlNUUkFJTlQge3tjb25ufHF0SWRlbnQoYy5jb25uYW1lKX19IHsl IGlmIGMuY29uc3JjICV9IENIRUNLICh7e2MuY29uc3JjfX0peyUgZW5kaWYg JX0geyUgaWYgYy5jb25ub2luaGVyaXQgJX0gTk8gSU5IRVJJVHslIGVuZGlm ICV9OworeyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEu ZnRvcHRpb25zICV9Cit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5kZWxl dGVkICV9Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQorCitBTFRF UiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5z cCwgbmFtZSkgfX0KKyAgICBPUFRJT05TICggRFJPUCB7e28ub3B0aW9ufX0p OworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZm9yIG8gaW4gZGF0 YS5mdG9wdGlvbnMuYWRkZWQgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZh bHVlICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIE9QVElPTlMgKEFERCB7 e28ub3B0aW9ufX0ge3tvLnZhbHVlfHF0TGl0ZXJhbH19KTsKK3slIGVuZGlm ICV9Cit7JSBlbmRmb3IgJX0KK3slIGZvciBvIGluIGRhdGEuZnRvcHRpb25z LmNoYW5nZWQgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9CisK K0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fQorICAgIE9QVElPTlMgKFNFVCB7e28ub3B0aW9u fX0ge3tvLnZhbHVlfHF0TGl0ZXJhbH19KTsKK3slIGVuZGlmICV9Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5hY2wgJX0KK3sl IGlmICdkZWxldGVkJyBpbiBkYXRhLmFjbCAlfQoreyUgZm9yIHByaXYgaW4g ZGF0YS5hY2wuZGVsZXRlZCAlfQorCit7eyBQUklWSUxFR0UuVU5TRVRBTEwo Y29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBuYW1lLCBvX2RhdGEuYmFz ZW5zcCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiAn Y2hhbmdlZCcgaW4gZGF0YS5hY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEu YWNsLmNoYW5nZWQgJX0KKwore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4s ICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgbmFtZSwgb19kYXRhLmJhc2Vuc3Ap IH19CisKK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5n cmFudGVlLCBuYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9n cmFudCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmIC0lfQoreyUgaWYgJ2FkZGVkJyBpbiBkYXRhLmFjbCAlfQoreyUgZm9y IHByaXYgaW4gZGF0YS5hY2wuYWRkZWQgJX0KKwore3sgUFJJVklMRUdFLlNF VChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIG5hbWUsIHByaXYud2l0 aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBvX2RhdGEuYmFzZW5zcCkg fX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmIC0lfQor eyUgc2V0IHNlY2xhYmVscyA9IGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiAn ZGVsZXRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuZGVsZXRlZHxs ZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuZGVsZXRlZCAl fQorCit7eyBTRUNMQUJMRS5VTlNFVChjb25uLCAnRk9SRUlHTiBUQUJMRScs IG5hbWUsIHIucHJvdmlkZXIsIG9fZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmICdhZGRlZCcgaW4gc2VjbGFi ZWxzIGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9y IHIgaW4gc2VjbGFiZWxzLmFkZGVkICV9CisKK3t7IFNFQ0xBQkxFLlNFVChj b25uLCAnRk9SRUlHTiBUQUJMRScsIG5hbWUsIHIucHJvdmlkZXIsIHIuc2Vj dXJpdHlfbGFiZWwsIG9fZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAtJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBzZWNsYWJlbHMg YW5kIHNlY2xhYmVscy5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0KK3slIGZvciBy IGluIHNlY2xhYmVscy5jaGFuZ2VkICV9CisKK3t7IFNFQ0xBQkxFLlNFVChj b25uLCAnRk9SRUlHTiBUQUJMRScsIG5hbWUsIHIucHJvdmlkZXIsIHIuc2Vj dXJpdHlfbGFiZWwsIG9fZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuZGVzY3JpcHRpb24gJX0KKwor Q09NTUVOVCBPTiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2Rh dGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBJUyB7eyBkYXRhLmRlc2NyaXB0 aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5i YXNlbnNwICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElk ZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBTQ0hFTUEg e3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCkgfX07Cit7JSBlbmRpZiAl fQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41 X3BsdXMvYWNsLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVz L3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvYWNsLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjFhMDM1 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9h Y2wuc3FsCkBAIC0wLDAgKzEsMzUgQEAKK1NFTEVDVAorICAgIENPQUxFU0NF KGd0LnJvbG5hbWUsICdwdWJsaWMnKSBBUyBncmFudGVlLAorICAgIGcucm9s bmFtZSBBUyBncmFudG9yLCBhcnJheV9hZ2cocHJpdmlsZWdlX3R5cGUpIEFT IHByaXZpbGVnZXMsCisgICAgYXJyYXlfYWdnKGlzX2dyYW50YWJsZSkgQVMg Z3JhbnRhYmxlCitGUk9NCisgICAgKFNFTEVDVAorICAgICAgICBkLmdyYW50 ZWUsIGQuZ3JhbnRvciwgZC5pc19ncmFudGFibGUsCisgICAgICAgIENBU0Ug ZC5wcml2aWxlZ2VfdHlwZQorICAgICAgICBXSEVOICdDT05ORUNUJyBUSEVO ICdjJworICAgICAgICBXSEVOICdDUkVBVEUnIFRIRU4gJ0MnCisgICAgICAg IFdIRU4gJ0RFTEVURScgVEhFTiAnZCcKKyAgICAgICAgV0hFTiAnRVhFQ1VU RScgVEhFTiAnWCcKKyAgICAgICAgV0hFTiAnSU5TRVJUJyBUSEVOICdhJwor ICAgICAgICBXSEVOICdSRUZFUkVOQ0VTJyBUSEVOICd4JworICAgICAgICBX SEVOICdTRUxFQ1QnIFRIRU4gJ3InCisgICAgICAgIFdIRU4gJ1RFTVBPUkFS WScgVEhFTiAnVCcKKyAgICAgICAgV0hFTiAnVFJJR0dFUicgVEhFTiAndCcK KyAgICAgICAgV0hFTiAnVFJVTkNBVEUnIFRIRU4gJ0QnCisgICAgICAgIFdI RU4gJ1VQREFURScgVEhFTiAndycKKyAgICAgICAgV0hFTiAnVVNBR0UnIFRI RU4gJ1UnCisgICAgICAgIEVMU0UgJ1VOS05PV04nCisgICAgICAgIEVORCBB UyBwcml2aWxlZ2VfdHlwZQorICAgIEZST00KKyAgICAgICAgKFNFTEVDVAor ICAgICAgICAgICAgKGQpLmdyYW50ZWUgQVMgZ3JhbnRlZSwgKGQpLmdyYW50 b3IgQVMgZ3JhbnRvciwKKyAgICAgICAgICAgIChkKS5pc19ncmFudGFibGUg QVMgaXNfZ3JhbnRhYmxlLAorICAgICAgICAgICAgKGQpLnByaXZpbGVnZV90 eXBlIEFTIHByaXZpbGVnZV90eXBlCisgICAgICAgIEZST00KKyAgICAgICAg ICAgIChTRUxFQ1QgYWNsZXhwbG9kZShkYi5yZWxhY2wpIEFTIGQgRlJPTSBw Z19jbGFzcyBkYgorICAgICAgICAgICAgV0hFUkUgZGIub2lkID0ge3tmb2lk fX06Ok9JRCkgYQorICAgICAgICApIGQKKyAgICApIGQKKyAgICBMRUZUIEpP SU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBnIE9OIChkLmdyYW50b3IgPSBnLm9p ZCkKKyAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBndCBPTiAo ZC5ncmFudGVlID0gZ3Qub2lkKQorR1JPVVAgQlkgZy5yb2xuYW1lLCBndC5y b2xuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9j cmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9jcmVhdGUuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNTcwMDgK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2Ny ZWF0ZS5zcWwKQEAgLTAsMCArMSw2MSBAQAoreyUgaW1wb3J0ICdtYWNyb3Mv c2NoZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBp bXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBS SVZJTEVHRSAlfQoreyUgc2V0IGlzX2NvbHVtbnMgPSBbXSAlfQoreyUgaWYg ZGF0YSAlfQorQ1JFQVRFIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50 KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fSgKK3slIGlmIGRhdGEuY29s dW1ucyAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb2x1bW5zICV9Cit7JSBpZiAo bm90IGMuaW5oZXJpdGVkZnJvbSBvciBjLmluaGVyaXRlZGZyb20gPT0nJyBv ciAgYy5pbmhlcml0ZWRmcm9tID09IE5vbmUgb3IgIGMuaW5oZXJpdGVkZnJv bSA9PSAnTm9uZScgKSAlfQoreyUgaWYgaXNfY29sdW1ucy5hcHBlbmQoJzEn KSAlfXslIGVuZGlmICV9CisgICAge3tjb25ufHF0SWRlbnQoYy5hdHRuYW1l KX19IHt7Y29ubnxxdFR5cGVJZGVudChjLmRhdGF0eXBlKSB9fXslIGlmIGMu dHlwbGVuICV9KHt7Yy50eXBsZW59fXslIGlmIGMucHJlY2lzaW9uICV9LCB7 e2MucHJlY2lzaW9ufX17JSBlbmRpZiAlfSl7JSBlbmRpZiAlfXslIGlmIGMu aXNBcnJheVR5cGUgJX1bXXslIGVuZGlmICV9Cit7JSBpZiBjLmF0dG5vdG51 bGwgJX0gTk9UIE5VTEx7JSBlbHNlICV9IE5VTEx7JSBlbmRpZiAlfQoreyUg aWYgYy50eXBkZWZhdWx0ICV9IERFRkFVTFQge3tjLnR5cGRlZmF1bHR9fXsl IGVuZGlmICV9Cit7JSBpZiBjLmNvbGxuYW1lICV9IENPTExBVEUge3tjLmNv bGxuYW1lfX17JSBlbmRpZiAlfQoreyUgaWYgbm90IGxvb3AubGFzdCAlfSwK K3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBl bmRpZiAlfQorCispCit7JSBpZiBkYXRhLmluaGVyaXRzICV9CisgICAgSU5I RVJJVFMgKHslIGZvciBpIGluIGRhdGEuaW5oZXJpdHMgJX17JSBpZiBpICV9 e3tpfX17JSBpZiBub3QgbG9vcC5sYXN0ICV9LCB7JSBlbmRpZiAlfXslIGVu ZGlmICV9eyUgZW5kZm9yICV9KQoreyUgZW5kaWYgJX0KKyAgICBTRVJWRVIg e3sgY29ubnxxdElkZW50KGRhdGEuZnRzcnZuYW1lKSB9fXslIGlmIGRhdGEu ZnRvcHRpb25zICV9CisKK3slIGZvciBvIGluIGRhdGEuZnRvcHRpb25zICV9 Cit7JSBpZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQoreyUgaWYgbG9vcC5m aXJzdCAlfSAgICBPUFRJT05TICh7JSBlbmRpZiAlfXslIGlmIG5vdCBsb29w LmZpcnN0ICV9LCB7JSBlbmRpZiAlfXt7by5vcHRpb259fSB7e28udmFsdWV8 cXRMaXRlcmFsfX17JSBpZiBsb29wLmxhc3QgJX0peyUgZW5kaWYgJX17JSBl bmRpZiAlfQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX07Cit7JSBpZiBkYXRh Lm93bmVyICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElk ZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIE9XTkVSIFRP IHt7IGRhdGEub3duZXIgfX07Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEu Y29uc3RyYWludHMgJX0KK3slIGZvciBjIGluIGRhdGEuY29uc3RyYWludHMg JX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0 YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAgQUREIENPTlNUUkFJTlQg e3sgY29ubnxxdElkZW50KGMuY29ubmFtZSkgfX0gQ0hFQ0sgKHt7IGMuY29u c3JjIH19KXslIGlmIG5vdCBjLmNvbnZhbGlkYXRlZCAlfSBOT1QgVkFMSUR7 JSBlbmRpZiAlfXslIGlmIGMuY29ubm9pbmhlcml0ICV9IE5PIElOSEVSSVR7 JSBlbmRpZiAlfTsKK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlm IGRhdGEuZGVzY3JpcHRpb24gJX0KKworQ09NTUVOVCBPTiBGT1JFSUdOIFRB QkxFIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkg fX0KKyAgICBJUyAne3sgZGF0YS5kZXNjcmlwdGlvbiB9fSc7Cit7JSBlbmRp ZiAtJX0KK3slIGlmIGRhdGEuYWNsICV9CisKK3slIGZvciBwcml2IGluIGRh dGEuYWNsICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHBy aXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHBy aXYud2l0aF9ncmFudCwgZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kZm9yIC0l fQoreyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLnNlY2xhYmVscyAlfQoreyUg Zm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmIHIuc2VjdXJpdHlf bGFiZWwgYW5kIHIucHJvdmlkZXIgJX0KKwore3sgU0VDTEFCTEUuU0VUKGNv bm4sICdGT1JFSUdOIFRBQkxFJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCBy LnNlY3VyaXR5X2xhYmVsLCBkYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRpZiAl fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBs YXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZGVsZXRlLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX3RhYmxlcy9zcWwvOS41X3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmIwOTY5Ci0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9kZWxldGUuc3FsCkBA IC0wLDAgKzEsMTcgQEAKK3slIGlmIHNjaWQgYW5kIGZvaWQgJX0KK1NFTEVD VAorICAgIGMucmVsbmFtZSBBUyBuYW1lLCBuc3BuYW1lIGFzIGJhc2Vuc3AK K0ZST00KKyAgICBwZ19jbGFzcyBjCitMRUZUIE9VVEVSIEpPSU4KKyAgICBw Z19uYW1lc3BhY2UgbnNwIE9OIChuc3Aub2lkPWMucmVsbmFtZXNwYWNlKQor V0hFUkUKKyAgICBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK0FO RAorICAgIGMub2lkID0ge3tmb2lkfX06Om9pZDsKK3slIGVuZGlmICV9CisK KworeyUgaWYgbmFtZSAlfQorRFJPUCBGT1JFSUdOIFRBQkxFIHt7IGNvbm58 cXRJZGVudChiYXNlbnNwLCBuYW1lKSB9fXslIGlmIGNhc2NhZGUlfSBDQVND QURFeyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25f dGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90 YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9jb2xsYXRpb25zLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGQyNzRiCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVt cGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29sbGF0 aW9ucy5zcWwKQEAgLTAsMCArMSw5IEBACitTRUxFQ1QgLS1uc3BuYW1lLCBj b2xsbmFtZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3RoKG5zcG5hbWUpID4gMCBB TkQgbGVuZ3RoKGNvbGxuYW1lKSA+IDAgIFRIRU4KKyAgICBjb25jYXQobnNw bmFtZSwgJy4iJywgY29sbG5hbWUsJyInKQorICAgIEVMU0UgJycgRU5EIEFT IGNvcHlfY29sbGF0aW9uCitGUk9NCisgICAgcGdfY29sbGF0aW9uIGMsIHBn X25hbWVzcGFjZSBuCitXSEVSRQorICAgIGMuY29sbG5hbWVzcGFjZT1uLm9p ZAorT1JERVIgQlkgbnNwbmFtZSwgY29sbG5hbWU7CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWln bl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9jb2x1bW5zLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3Rh Ymxlcy9zcWwvOS41X3BsdXMvZ2V0X2NvbHVtbnMuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZjcwZTgKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9jb2x1bW5zLnNx bApAQCAtMCwwICsxLDUzIEBACitXSVRIIElOSF9UQUJMRVMgQVMKKyAgICAo U0VMRUNUCisgICAgIGRpc3RpbmN0IG9uIChhdC5hdHRuYW1lKSBhdHRuYW1l LCBwaC5pbmhwYXJlbnQgQVMgaW5oZXJpdGVkaWQsIHBoLmluaHNlcW5vLAor ICAgICBjb25jYXQobm1zcF9wYXJlbnQubnNwbmFtZSwgJy4nLHBhcmVudC5y ZWxuYW1lICkgQVMgaW5oZXJpdGVkZnJvbQorICAgIEZST00KKyAgICAgICAg cGdfYXR0cmlidXRlIGF0CisgICAgSk9JTgorICAgICAgICBwZ19pbmhlcml0 cyBwaCBPTiBwaC5pbmhwYXJlbnQgPSBhdC5hdHRyZWxpZCBBTkQgcGguaW5o cmVsaWQgPSB7e2ZvaWR9fTo6b2lkCisgICAgSk9JTgorICAgICAgICBwZ19j bGFzcyBwYXJlbnQgT04gcGguaW5ocGFyZW50ICA9IHBhcmVudC5vaWQKKyAg ICBKT0lOCisgICAgICAgIHBnX25hbWVzcGFjZSBubXNwX3BhcmVudCBPTiBu bXNwX3BhcmVudC5vaWQgID0gcGFyZW50LnJlbG5hbWVzcGFjZQorICAgIEdS T1VQIEJZIGF0LmF0dG5hbWUsIHBoLmluaHBhcmVudCwgcGguaW5oc2Vxbm8s IGluaGVyaXRlZGZyb20KKyAgICBPUkRFUiBCWSBhdC5hdHRuYW1lLCBwaC5p bmhwYXJlbnQsIHBoLmluaHNlcW5vLCBpbmhlcml0ZWRmcm9tCisgICAgKQor U0VMRUNUIElOSC5pbmhlcml0ZWRmcm9tLCBJTkguaW5oZXJpdGVkaWQsCisg ICAgYXR0LmF0dG5hbWUsIGF0dC5hdHRuZGltcywgYXR0LmF0dHR5cG1vZCwg Zm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMgZGF0YXR5cGUsCisgICAgYXR0 LmF0dG5vdG51bGwsIGF0dC5hdHRzdGF0dGFyZ2V0LCBhdHQuYXR0bnVtLCBm b3JtYXRfdHlwZSh0Lm9pZCwgYXR0LmF0dHR5cG1vZCkgQVMgZnVsbHR5cGUs CisgICAgQ0FTRSBXSEVOIGxlbmd0aChjbi5uc3BuYW1lKSA+IDAgQU5EIGxl bmd0aChjbC5jb2xsbmFtZSkgPiAwIFRIRU4KKyAgICBjb25jYXQoY24ubnNw bmFtZSwgJy4iJywgY2wuY29sbG5hbWUsJyInKQorICAgIEVMU0UgJycgRU5E IEFTIGNvbGxuYW1lLAorICAgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoZGVm LmFkYmluLCBkZWYuYWRyZWxpZCkgQVMgdHlwZGVmYXVsdCwKKyAgICAoCisg ICAgICAgIGF0dC5hdHRuYW1lIHx8ICcgJyB8fCBmb3JtYXRfdHlwZSh0Lm9p ZCwgYXR0LmF0dHR5cG1vZCkgfHwgJyAnIHx8CisgICAgICAgIChDQVNFIFdI RU4gYXR0bm90bnVsbD0ndHJ1ZScKKyAgICAgICAgVEhFTiAnTk9UIE5VTEwn IEVMU0UgJ05VTEwnCisgICAgICAgIEVORCkgfHwgJyAnIHx8CisgICAgICAg IChDQVNFIFdIRU4gcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihkZWYuYWRiaW4s IGRlZi5hZHJlbGlkKTw+JycKKyAgICAgICAgVEhFTiAnREVGQVVMVCAnIHx8 IHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoZGVmLmFkYmluLCBkZWYuYWRyZWxp ZCkKKyAgICAgICAgRUxTRSAnJyBFTkQpCisgICAgKSBhcyBzdHJjb2x1bW4s CisKKyAgICAoU0VMRUNUIENPVU5UKDEpIGZyb20gcGdfdHlwZSB0MiBXSEVS RSB0Mi50eXBuYW1lPXQudHlwbmFtZSkgPiAxIEFTIGlzZHVwCitGUk9NCisg ICAgcGdfYXR0cmlidXRlIGF0dAorTEVGVCBKT0lOCisgICAgSU5IX1RBQkxF UyBhcyBJTkggT04gYXR0LmF0dG5hbWUgPSBJTkguYXR0bmFtZQorSk9JTgor ICAgIHBnX3R5cGUgdCBPTiB0Lm9pZD1hdHR0eXBpZAorSk9JTgorICAgIHBn X25hbWVzcGFjZSBuc3AgT04gdC50eXBuYW1lc3BhY2U9bnNwLm9pZAorTEVG VCBPVVRFUiBKT0lOCisgICAgcGdfYXR0cmRlZiBkZWYgT04gYWRyZWxpZD1h dHQuYXR0cmVsaWQgQU5EIGFkbnVtPWF0dC5hdHRudW0KK0xFRlQgT1VURVIg Sk9JTgorICAgIHBnX3R5cGUgYiBPTiB0LnR5cGVsZW09Yi5vaWQKK0xFRlQg T1VURVIgSk9JTgorICAgIHBnX2NvbGxhdGlvbiBjbCBPTiB0LnR5cGNvbGxh dGlvbj1jbC5vaWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX25hbWVzcGFj ZSBjbiBPTiBjbC5jb2xsbmFtZXNwYWNlPWNuLm9pZAorV0hFUkUKKyAgICBh dHQuYXR0cmVsaWQ9e3tmb2lkfX06Om9pZAorICAgIEFORCBhdHQuYXR0bnVt PjAKKyAgICBPUkRFUiBCWSBhdHQuYXR0bmFtZTsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWdu X3RhYmxlcy9zcWwvOS41X3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODMzM2RjCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9nZXRfY29u c3RyYWludHMuc3FsCkBAIC0wLDAgKzEsNyBAQAorU0VMRUNUCisgICAgb2lk IGFzIGNvbm9pZCwgY29ubmFtZSwgY29udHlwZSwgY29uc3JjLCBjb25ub2lu aGVyaXQsIGNvbnZhbGlkYXRlZCwgY29uaXNsb2NhbAorRlJPTQorICAgIHBn X2NvbnN0cmFpbnQKK1dIRVJFCisgICAgY29ucmVsaWQ9e3tmb2lkfX06Om9p ZAorT1JERVIgYnkgY29ubmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9z cWwvOS41X3BsdXMvZ2V0X2ZvcmVpZ25fc2VydmVycy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJs ZXMvc3FsLzkuNV9wbHVzL2dldF9mb3JlaWduX3NlcnZlcnMuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxN2JkZDMKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90 ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF9mb3Jl aWduX3NlcnZlcnMuc3FsCkBAIC0wLDAgKzEsNiBAQAorU0VMRUNUCisgICAg c3J2bmFtZQorRlJPTQorICAgIHBnX2ZvcmVpZ25fc2VydmVyCitPUkRFUgor ICAgIEJZIHNydm5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m b3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzku NV9wbHVzL2dldF9vaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9n ZXRfb2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li45YTVmNWQxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85 LjVfcGx1cy9nZXRfb2lkLnNxbApAQCAtMCwwICsxLDE5IEBACit7JSBpZiBi YXNlbnNwICV9CitTRUxFQ1QKKyAgICBjLm9pZCwgYm4ub2lkIGFzIHNjaWQK K0ZST00KKyAgICBwZ19jbGFzcyBjCitKT0lOCisgICAgcGdfbmFtZXNwYWNl IGJuIE9OIGJuLm9pZD1jLnJlbG5hbWVzcGFjZQorV0hFUkUKKyAgICBibi5u c3BuYW1lID0ge3sgYmFzZW5zcHxxdExpdGVyYWwgfX0KKyAgICBBTkQgYy5y ZWxuYW1lPXt7IG5hbWV8cXRMaXRlcmFsIH19OworCit7JSBlbGlmIGZvaWQg JX0KK1NFTEVDVAorICAgIGMucmVsbmFtZXNwYWNlIGFzIHNjaWQKK0ZST00K KyAgICBwZ19jbGFzcyBjCitXSEVSRQorICAgIGMub2lkID0ge3tmb2lkfX06 Om9pZDsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3Fs LzkuNV9wbHVzL2dldF90YWJsZV9jb2x1bW5zLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9z cWwvOS41X3BsdXMvZ2V0X3RhYmxlX2NvbHVtbnMuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxODgyZGIKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy90ZW1wbGF0 ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL2dldF90YWJsZV9jb2x1 bW5zLnNxbApAQCAtMCwwICsxLDE0IEBACit7JSBpZiBhdHRyZWxpZCAgJX0K K1NFTEVDVAorICAgIGEuYXR0bmFtZSwgZm9ybWF0X3R5cGUoYS5hdHR0eXBp ZCwgTlVMTCkgQVMgZGF0YXR5cGUsCisgICAgcXVvdGVfaWRlbnQobi5uc3Bu YW1lKXx8Jy4nfHxxdW90ZV9pZGVudChjLnJlbG5hbWUpIGFzIGluaGVyaXRl ZGZyb20sCisgICAgYy5vaWQgYXMgaW5oZXJpdGVkaWQKK0ZST00KKyAgICBw Z19jbGFzcyBjCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIG4gT04gYy5yZWxu YW1lc3BhY2U9bi5vaWQKK0pPSU4KKyAgICBwZ19hdHRyaWJ1dGUgYSBPTiBh LmF0dHJlbGlkID0gYy5vaWQgQU5EIE5PVCBhLmF0dGlzZHJvcHBlZCBBTkQg YS5hdHRudW0+MAorV0hFUkUKKyAgICBjLm9pZCA9IHt7YXR0cmVsaWR9fTo6 T0lECit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85 LjVfcGx1cy9nZXRfdGFibGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVp Z25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3Bs dXMvZ2V0X3RhYmxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uODM0NDVhMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxl cy9zcWwvOS41X3BsdXMvZ2V0X3RhYmxlcy5zcWwKQEAgLTAsMCArMSwyMiBA QAoreyUgaWYgYXR0cmVsaWQgICV9CitTRUxFQ1QKKyAgICBhcnJheV9hZ2co cXVvdGVfaWRlbnQobi5uc3BuYW1lKSB8fCAnLicgfHwgcXVvdGVfaWRlbnQo Yy5yZWxuYW1lKSkgYXMgaW5oZXJpdHMKK0ZST00KKyAgICBwZ19jbGFzcyBj LCBwZ19uYW1lc3BhY2UgbgorV0hFUkUKKyAgICBjLnJlbG5hbWVzcGFjZT1u Lm9pZCBBTkQgYy5yZWxraW5kIElOICgncicsICdmJykKKyAgICBBTkQgYy5v aWQgaW4ge3thdHRyZWxpZH19OworCit7JSBlbHNlICV9CitTRUxFQ1QKKyAg ICBjLm9pZCBBUyBpZCwgcXVvdGVfaWRlbnQobi5uc3BuYW1lKSB8fCAnLicg fHwgcXVvdGVfaWRlbnQoYy5yZWxuYW1lKSBhcyB0ZXh0CitGUk9NCisgICAg cGdfY2xhc3MgYywgcGdfbmFtZXNwYWNlIG4KK1dIRVJFCisgICAgYy5yZWxu YW1lc3BhY2U9bi5vaWQgQU5EIGMucmVsa2luZCBJTiAoJ3InLCAnZicpCit7 JSBpZiBmb2lkICV9CisgICAgQU5EIGMub2lkIDw+IHt7Zm9pZH19OjpvaWQK K3slIGVuZGlmICV9CitPUkRFUiBCWQorICAgIG4ubnNwbmFtZSwgYy5yZWxu YW1lOworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwv OS41X3BsdXMvbm9kZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL25v ZGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJj NzMxYzUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3Jl aWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9w bHVzL25vZGUuc3FsCkBAIC0wLDAgKzEsMTQgQEAKK1NFTEVDVAorICAgIGMu b2lkLCBjLnJlbG5hbWUgQVMgbmFtZSwgcGdfZ2V0X3VzZXJieWlkKHJlbG93 bmVyKSBBUyBvd25lciwKKyAgICBmdG9wdGlvbnMsIG5zcG5hbWUgYXMgYmFz ZW5zcCwgZGVzY3JpcHRpb24KK0ZST00KKyAgICBwZ19jbGFzcyBjCitKT0lO CisgICAgcGdfZm9yZWlnbl90YWJsZSBmdCBPTiBjLm9pZD1mdC5mdHJlbGlk CitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19uYW1lc3BhY2UgbnNwIE9OIChu c3Aub2lkPWMucmVsbmFtZXNwYWNlKQorTEVGVCBPVVRFUiBKT0lOCisgICAg cGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPWMub2lkIEFORCBk ZXMuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVnY2xhc3MpCitXSEVSRQorICAg IGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAorT1JERVIgQlkgYy5y ZWxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90 YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC85LjVfcGx1cy9w cm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVz L3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3BsdXMvcHJvcGVy dGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u Mzk3NmEwNwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Zv cmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41 X3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwzMSBAQAorU0VMRUNU CisgICAgYy5vaWQsIGMucmVsbmFtZSBBUyBuYW1lLCBjLnJlbGFjbCwgcGdf Z2V0X3VzZXJieWlkKHJlbG93bmVyKSBBUyBvd25lciwKKyAgICBmdG9wdGlv bnMsIHNydm5hbWUgQVMgZnRzcnZuYW1lLCBkZXNjcmlwdGlvbiwgbnNwbmFt ZSBBUyBiYXNlbnNwLAorICAgIChTRUxFQ1QKKyAgICAgICAgYXJyYXlfYWdn KHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJlbCkKKyAgICBGUk9NCisgICAgICAg IHBnX3Noc2VjbGFiZWwgc2wxCisgICAgV0hFUkUKKyAgICAgICAgc2wxLm9i am9pZD1jLm9pZCkgQVMgc2VjbGFiZWxzCisgICAgeyUgaWYgZm9pZCAlfSwK KyAgICAoU0VMRUNUCisgICAgICAgIGFycmF5X2FnZyhpLmluaHBhcmVudCkg RlJPTSBwZ19pbmhlcml0cyBpCisgICAgV0hFUkUKKyAgICAgICAgaS5pbmhy ZWxpZCA9IHt7Zm9pZH19OjpvaWQgR1JPVVAgQlkgaS5pbmhyZWxpZCkgQVMg aW5oZXJpdHMKKyAgICB7JSBlbmRpZiAlfQorRlJPTQorICAgIHBnX2NsYXNz IGMKK0pPSU4KKyAgICBwZ19mb3JlaWduX3RhYmxlIGZ0IE9OIGMub2lkPWZ0 LmZ0cmVsaWQKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2ZvcmVpZ25fc2Vy dmVyIGZzIE9OIGZ0LmZ0c2VydmVyPWZzLm9pZAorTEVGVCBPVVRFUiBKT0lO CisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPWMub2lk IEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6cmVnY2xhc3MpCitMRUZU IE9VVEVSIEpPSU4KKyAgICBwZ19uYW1lc3BhY2UgbnNwIE9OIChuc3Aub2lk PWMucmVsbmFtZXNwYWNlKQorV0hFUkUKKyAgICBjLnJlbG5hbWVzcGFjZSA9 IHt7c2NpZH19OjpvaWQKKyAgICB7JSBpZiBmb2lkICV9CisgICAgQU5EIGMu b2lkID0ge3tmb2lkfX06Om9pZAorICAgIHslIGVuZGlmICV9CitPUkRFUiBC WSBjLnJlbG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3Jl aWduX3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9w bHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxl cy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvc3FsLzkuNV9wbHVzL3VwZGF0 ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFl ZDcwMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVp Z25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9zcWwvOS41X3Bs dXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDE4MiBAQAoreyUgaW1wb3J0ICdt YWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9 Cit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVnZS5tYWNyb3Mn IGFzIFBSSVZJTEVHRSAlfQoreyUgaWYgZGF0YSAlfQoreyUgc2V0IG5hbWUg PSBvX2RhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICV9eyUgaWYgZGF0 YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBGT1JFSUdOIFRBQkxF IHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgb19kYXRhLm5hbWUp IH19CisgICAgUkVOQU1FIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUp IH19OworeyUgc2V0IG5hbWUgPSBkYXRhLm5hbWUgJX0KK3slIGVuZGlmICV9 eyUgZW5kaWYgJX0KK3slIGlmIGRhdGEub3duZXIgJX0KKworQUxURVIgRk9S RUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5h bWUpIH19CisgICAgT1dORVIgVE8ge3sgZGF0YS5vd25lciB9fTsKK3slIGVu ZGlmICV9Cit7JSBpZiBkYXRhLmNvbHVtbnMgJX0KK3slIGZvciBjIGluIGRh dGEuY29sdW1ucy5kZWxldGVkICV9Cit7JSBpZiAobm90IGMuaW5oZXJpdGVk ZnJvbSBvciBjLmluaGVyaXRlZGZyb20gPT0nJyBvciAgYy5pbmhlcml0ZWRm cm9tID09IE5vbmUgb3IgIGMuaW5oZXJpdGVkZnJvbSA9PSAnTm9uZScgKSAl fQorQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRh LmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJPUCBDT0xVTU4ge3tjb25ufHF0 SWRlbnQoYy5hdHRuYW1lKX19OworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAt JX0KK3slIGZvciBjIGluIGRhdGEuY29sdW1ucy5hZGRlZCAlfQoreyUgaWYg KG5vdCBjLmluaGVyaXRlZGZyb20gb3IgYy5pbmhlcml0ZWRmcm9tID09Jycg b3IgIGMuaW5oZXJpdGVkZnJvbSA9PSBOb25lIG9yICBjLmluaGVyaXRlZGZy b20gPT0gJ05vbmUnICkgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQURE IENPTFVNTiB7e2Nvbm58cXRJZGVudChjLmF0dG5hbWUpfX0ge3sgY29ubnxx dFR5cGVJZGVudChjLmRhdGF0eXBlKSB9fXslIGlmIGMudHlwbGVuICV9KHt7 Yy50eXBsZW59fXslIGlmIGMucHJlY2lzaW9uICV9LCB7e2MucHJlY2lzaW9u fX17JSBlbmRpZiAlfSl7JSBlbmRpZiAlfXslIGlmIGMuaXNBcnJheVR5cGUg JX1bXXslIGVuZGlmICV9Cit7JSBpZiBjLmF0dG5vdG51bGwgJX0gTk9UIE5V TEx7JSBlbHNlICV9IE5VTEx7JSBlbmRpZiAlfQoreyUgaWYgYy50eXBkZWZh dWx0ICV9IERFRkFVTFQge3tjLnR5cGRlZmF1bHR9fXslIGVuZGlmICV9Cit7 JSBpZiBjLmNvbGxuYW1lICV9IENPTExBVEUge3tjLmNvbGxuYW1lfX17JSBl bmRpZiAlfTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgLSV9Cit7JSBmb3Ig YyBpbiBkYXRhLmNvbHVtbnMuY2hhbmdlZCAlfQoreyUgc2V0IGNvbF9uYW1l ID0gb19kYXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWydhdHRuYW1lJ10gJX0K K3slIGlmIGMuYXR0bmFtZSAhPSBvX2RhdGFbJ2NvbHVtbnMnXVtjLmF0dG51 bV1bJ2F0dG5hbWUnXSAlfQoreyUgc2V0IGNvbF9uYW1lID0gYy5hdHRuYW1l ICV9CisKK0FMVEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9f ZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFJFTkFNRSBDT0xVTU4ge3tj b25ufHF0SWRlbnQob19kYXRhWydjb2x1bW5zJ11bYy5hdHRudW1dWydhdHRu YW1lJ10pfX0gVE8ge3tjb25ufHF0SWRlbnQoYy5hdHRuYW1lKX19OworeyUg ZW5kaWYgJX0KK3slIGlmIGMuYXR0bm90bnVsbCAhPSBvX2RhdGFbJ2NvbHVt bnMnXVtjLmF0dG51bV1bJ2F0dG5vdG51bGwnXSAlfQorCitBTFRFUiBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFt ZSkgfX0KKyAgICBBTFRFUiBDT0xVTU4ge3tjb25ufHF0SWRlbnQoY29sX25h bWUpfX17JSBpZiBjLmF0dG5vdG51bGwgJX0gU0VUeyUgZWxzZSAlfSBEUk9Q eyUgZW5kaWYgJX0gTk9UIE5VTEw7Cit7JSBlbmRpZiAlfQoreyUgaWYgYy5k YXRhdHlwZSAhPSBvX2RhdGFbJ2NvbHVtbnMnXVtjLmF0dG51bV1bJ2RhdGF0 eXBlJ10gb3IgYy50eXBsZW4gIT0gb19kYXRhWydjb2x1bW5zJ11bYy5hdHRu dW1dWyd0eXBsZW4nXSBvcgorYy5wcmVjaXNpb24gIT0gb19kYXRhWydjb2x1 bW5zJ11bYy5hdHRudW1dWydwcmVjaXNpb24nXSAlfQorCitBTFRFUiBGT1JF SUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFt ZSkgfX0KKyAgICBBTFRFUiBDT0xVTU4ge3tjb25ufHF0SWRlbnQoY29sX25h bWUpfX0gVFlQRSB7eyBjb25ufHF0VHlwZUlkZW50KGMuZGF0YXR5cGUpIH19 eyUgaWYgYy50eXBsZW4gJX0oe3tjLnR5cGxlbn19eyUgaWYgYy5wcmVjaXNp b24gJX0sIHt7Yy5wcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9 eyUgaWYgYy5pc0FycmF5VHlwZSAlfVtdeyUgZW5kaWYgJX07Cit7JSBlbmRp ZiAlfQoreyUgaWYgYy50eXBkZWZhdWx0ICE9IG9fZGF0YVsnY29sdW1ucydd W2MuYXR0bnVtXVsndHlwZGVmYXVsdCddICV9CisKK0FMVEVSIEZPUkVJR04g VEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9 fQorICAgIEFMVEVSIENPTFVNTiB7e2Nvbm58cXRJZGVudChjb2xfbmFtZSl9 fXslIGlmIGMudHlwZGVmYXVsdCAlfSBTRVQgREVGQVVMVCB7e2MudHlwZGVm YXVsdH19eyUgZWxzZSAlfSBEUk9QIERFRkFVTFR7JSBlbmRpZiAlfTsKK3sl IGVuZGlmICV9Cit7JSBpZiBjLmF0dHN0YXR0YXJnZXQgIT0gb19kYXRhWydj b2x1bW5zJ11bYy5hdHRudW1dWydhdHRzdGF0dGFyZ2V0J10gJX0KKworQUxU RVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vu c3AsIG5hbWUpIH19CisgICAgQUxURVIgQ09MVU1OIHt7Y29ubnxxdElkZW50 KGNvbF9uYW1lKX19IFNFVCBTVEFUSVNUSUNTIHslIGlmIGMuYXR0c3RhdHRh cmdldCAlfXt7Yy5hdHRzdGF0dGFyZ2V0fX17JSBlbHNlICV9LTF7JSBlbmRp ZiAlfTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9 Cit7JSBpZiBkYXRhLmluaGVyaXRzIGFuZCBkYXRhLmluaGVyaXRzfGxlbmd0 aCA+IDAlfQoreyUgaWYgb19kYXRhLmluaGVyaXRzID09IE5vbmUgb3Igb19k YXRhLmluaGVyaXRzID09ICdOb25lJyAlfQoreyUgc2V0IGluaGVyaXRzID0g JycgJX0KK3slIGVsc2UgJX0KK3slIHNldCBpbmhlcml0cyA9IG9fZGF0YS5p bmhlcml0cyAlfQoreyUgZW5kaWYgJX0KK3slIGZvciBpIGluIGRhdGEuaW5o ZXJpdHMgJX0KK3slIGlmIGkgbm90IGluIGluaGVyaXRzICV9eyUgaWYgaSAl fQorCitBTFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2Rh dGEuYmFzZW5zcCwgbmFtZSkgfX0gSU5IRVJJVCB7e2l9fTsKK3slIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQor eyUgaWYgb19kYXRhLmluaGVyaXRzIGFuZCAnaW5oZXJpdHMnIGluIGRhdGEg JX0KK3slIGlmIGRhdGEuaW5oZXJpdHMgPT0gTm9uZSBvciBkYXRhLmluaGVy aXRzID09ICdOb25lJyAlfQoreyUgc2V0IGluaGVyaXRzID0gJycgJX0KK3sl IGVsc2UgJX0KK3slIHNldCBpbmhlcml0cyA9IGRhdGEuaW5oZXJpdHMgJX0K K3slIGVuZGlmICV9Cit7JSBmb3IgaSBpbiBvX2RhdGEuaW5oZXJpdHMgJX17 JSBpZiBpIG5vdCBpbiBpbmhlcml0cyAlfXslIGlmIGkgJX0KKworQUxURVIg Rk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3As IG5hbWUpIH19IE5PIElOSEVSSVQge3tpfX07eyUgZW5kaWYgJX0KK3slIGVu ZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRh LmNvbnN0cmFpbnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRz LmRlbGV0ZWQgJX0KKworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0 SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJPUCBDT05T VFJBSU5UIHt7Y29ubnxxdElkZW50KGMuY29ubmFtZSl9fTsKK3slIGVuZGZv ciAtJX0KK3slIGZvciBjIGluIGRhdGEuY29uc3RyYWludHMuYWRkZWQgJX0K KworQUxURVIgRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0SWRlbnQob19kYXRh LmJhc2Vuc3AsIG5hbWUpIH19CisgICAgQUREIENPTlNUUkFJTlQge3sgY29u bnxxdElkZW50KGMuY29ubmFtZSkgfX0gQ0hFQ0sgKHt7IGMuY29uc3JjIH19 KXslIGlmIG5vdCBjLmNvbnZhbGlkYXRlZCAlfSBOT1QgVkFMSUR7JSBlbmRp ZiAlfXslIGlmIGMuY29ubm9pbmhlcml0ICV9IE5PIElOSEVSSVR7JSBlbmRp ZiAlfTsKK3slIGVuZGZvciAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb25zdHJh aW50cy5jaGFuZ2VkICV9Cit7JSBpZiBjLmNvbnZhbGlkYXRlZCAlfQorCitB TFRFUiBGT1JFSUdOIFRBQkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgbmFtZSkgfX0KKyAgICBWQUxJREFURSBDT05TVFJBSU5UIHt7IGNv bm58cXRJZGVudChjLmNvbm5hbWUpIH19OworeyUgZW5kaWYgJX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuZnRvcHRpb25zICV9 Cit7JSBmb3IgbyBpbiBkYXRhLmZ0b3B0aW9ucy5kZWxldGVkICV9Cit7JSBp ZiBvLm9wdGlvbiBhbmQgby52YWx1ZSAlfQorCitBTFRFUiBGT1JFSUdOIFRB QkxFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0K KyAgICBPUFRJT05TICggRFJPUCB7e28ub3B0aW9ufX0pOworeyUgZW5kaWYg JX0KK3slIGVuZGZvciAlfQoreyUgZm9yIG8gaW4gZGF0YS5mdG9wdGlvbnMu YWRkZWQgJX0KK3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9CisKK0FM VEVSIEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNl bnNwLCBuYW1lKSB9fQorICAgIE9QVElPTlMgKEFERCB7e28ub3B0aW9ufX0g e3tvLnZhbHVlfHF0TGl0ZXJhbH19KTsKK3slIGVuZGlmICV9Cit7JSBlbmRm b3IgJX0KK3slIGZvciBvIGluIGRhdGEuZnRvcHRpb25zLmNoYW5nZWQgJX0K K3slIGlmIG8ub3B0aW9uIGFuZCBvLnZhbHVlICV9CisKK0FMVEVSIEZPUkVJ R04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1l KSB9fQorICAgIE9QVElPTlMgKFNFVCB7e28ub3B0aW9ufX0ge3tvLnZhbHVl fHF0TGl0ZXJhbH19KTsKK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3sl IGVuZGlmIC0lfQoreyUgc2V0IHNlY2xhYmVscyA9IGRhdGEuc2VjbGFiZWxz ICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJl bHMuZGVsZXRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJl bHMuZGVsZXRlZCAlfQorCit7eyBTRUNMQUJMRS5VTlNFVChjb25uLCAnRk9S RUlHTiBUQUJMRScsIG5hbWUsIHIucHJvdmlkZXIsIG9fZGF0YS5iYXNlbnNw KSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVk JyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAw ICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KKwore3sgU0VD TEFCTEUuU0VUKGNvbm4sICdGT1JFSUdOIFRBQkxFJywgbmFtZSwgci5wcm92 aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7 JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4g c2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9 Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQorCit7eyBTRUNM QUJMRS5TRVQoY29ubiwgJ0ZPUkVJR04gVEFCTEUnLCBuYW1lLCByLnByb3Zp ZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3sl IGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmRlc2NyaXB0 aW9uICV9CisKK0NPTU1FTlQgT04gRk9SRUlHTiBUQUJMRSB7eyBjb25ufHF0 SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CitJUyB7eyBkYXRhLmRl c2NyaXB0aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmIC0lfQoreyUgaWYg ZGF0YS5hY2wgJX0KK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLmFjbCAlfQor eyUgZm9yIHByaXYgaW4gZGF0YS5hY2wuZGVsZXRlZCAlfQorCit7eyBQUklW SUxFR0UuVU5TRVRBTEwoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBu YW1lLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgLSV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gZGF0YS5hY2wgJX0KK3slIGZv ciBwcml2IGluIGRhdGEuYWNsLmNoYW5nZWQgJX0KKwore3sgUFJJVklMRUdF LlVOU0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgbmFtZSwg b19kYXRhLmJhc2Vuc3ApIH19CisKK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwg J1RBQkxFJywgcHJpdi5ncmFudGVlLCBuYW1lLCBwcml2LndpdGhvdXRfZ3Jh bnQsIHByaXYud2l0aF9ncmFudCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgJ2FkZGVkJyBpbiBkYXRh LmFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5hY2wuYWRkZWQgJX0KKwor e3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUs IG5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBv X2RhdGEuYmFzZW5zcCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0K K3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5iYXNlbnNwICV9CisKK0FMVEVS IEZPUkVJR04gVEFCTEUge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNw LCBuYW1lKSB9fQorICAgIFNFVCBTQ0hFTUEge3sgY29ubnxxdElkZW50KGRh dGEuYmFzZW5zcCkgfX07Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0K --001a1141115c2009430532dc9441 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 --001a1141115c2009430532dc9441--