Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aQY5v-0008LG-4v for pgadmin-hackers@arkaria.postgresql.org; Tue, 02 Feb 2016 10:21:59 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aQY5u-00072y-Kb for pgadmin-hackers@arkaria.postgresql.org; Tue, 02 Feb 2016 10:21:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aQY5Z-0006nx-GP for pgadmin-hackers@postgresql.org; Tue, 02 Feb 2016 10:21:37 +0000 Received: from mail-lb0-x230.google.com ([2a00:1450:4010:c04::230]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aQY5K-00047g-N6 for pgadmin-hackers@postgresql.org; Tue, 02 Feb 2016 10:21:36 +0000 Received: by mail-lb0-x230.google.com with SMTP id x4so92574384lbm.0 for ; Tue, 02 Feb 2016 02:21:22 -0800 (PST) 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:content-type; bh=UjHhG4O48YFU0eLXwpDPU0RP84xlMTX404lGOxxB850=; b=MepsQwjoKZ0RfWE9IMrbYujldzipLDTTqwawTxQ2AtQFg0jq1gnLdZney4pUmlQfq/ 3a+Hg3ztKRmOeDOuNr23RRe1tZaqG/2iREuJMVugO1kUjde4V4nSsZ7Ezs0Fr8RK/1Qj 9FcZ6tsIakZxl8vl8hNCyMvcE5AfmJwGyK9Ys1yo1P+4FK7X+k5zZPmvdBhMzNm3qpa4 X5Z/mtMcRNzgzpLpjOU1RWFEJWK5Nz/Hs5BYp0Et8mlK4NoNI4O7UywKIKsWqm830nsh u5rKvCqLVjX1bD4VhT0I0IhbYeJUgQv4Pv/FEp4wfboR0SFzUwc9Cym+RuI3QXvqdFWT pM9g== 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:content-type; bh=UjHhG4O48YFU0eLXwpDPU0RP84xlMTX404lGOxxB850=; b=KQDl2iuqMz/AZeq2CGtLLxIQYR7iThHyN03P+eK88XD3rqDvhrGahZb7F9zCoLzDsc Cy8Vc9JvQRm3fzdaxpqc4oKZkbuHR9PUXZzGY6xMxo8nVWxPlA+3DPc+BIZcTwq7JJDV ZnwjbUfiUqndldXsMvFMt9GejRPn+jsTLJng84zxnuNOU7YG1k9eEx2jVMIucY3rmMKx IPkqEOczknebQy+64J4uJSXMt1fkWbImYIw43omRPzk+vi8i31pxns5g2DB7ntjRLa6j OkgGxq73YDLDVaW52QHk2r1fS2WnZzCjHgic13EmMgo/Y64Bf+Y2felNj5SNkZDAudP1 RrdQ== X-Gm-Message-State: AG10YOQ7HPCrZmuHu0aTPXaZL/6QG3DWHf3mh9F/4RV390Tu2h13oaht45ZTt9S07JgIkY12YPFdOE71xZYdn62v MIME-Version: 1.0 X-Received: by 10.112.170.200 with SMTP id ao8mr8464288lbc.84.1454408479431; Tue, 02 Feb 2016 02:21:19 -0800 (PST) Received: by 10.25.42.138 with HTTP; Tue, 2 Feb 2016 02:21:19 -0800 (PST) In-Reply-To: References: Date: Tue, 2 Feb 2016 15:51:19 +0530 Message-ID: Subject: Re: pgAdmin4 PATCH: Domain Module From: Khushboo Vashi To: Neel Patel Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11c3780cc6e3c5052ac6dcd2 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 --001a11c3780cc6e3c5052ac6dcd2 Content-Type: multipart/alternative; boundary=001a11c3780cc6e3be052ac6dcd0 --001a11c3780cc6e3be052ac6dcd0 Content-Type: text/plain; charset=UTF-8 Hi Neel, Thanks for reviewing my patch. I have modified the code as per your suggestions and also fixed some of the issues got while doing unit testing. Please find attached patch for the same. Thanks, Khushboo On Wed, Jan 20, 2016 at 10:56 PM, Neel Patel wrote: > Hi Khushboo, > > Please find below review comments. > > - While creating new Domain and clicking on SQL tab, python side we are > getting error saying "*TypeError: 'bool' object is not callable".* > We are not able to create any domain. Fix this issue so that we can > test other functionality. > - Implement the reverse engineering SQL generation for the domain node. > - As per the checklist, remove the "Use Slony" from Constraints tab, as it > is not required. > - No need to pass "*qtIdent=self.qtIdent*" as function argument in > "create" and "getSQL" function in domains/__init__.py > - In "Security" tab , provider and security label fields are not editable. > - In PG version 9.1, when we update the existing domain name then "ALTER > DOMAIN" is not supported. > Currently there is no checking for the PG version 9.1 and 9.2_plus. It > will fail when we connect to database 9.1 > > e.g. > For PG version 9.1 - Update command should be as below. > ALTER TYPE xyz RENAME TO abc; > For PG version 9.2 onwards - Update command should be as below. > ALTER DOMAIN xyz RENAME TO abc; > > - Some of the SQL file, qtIdent is not used. Please check all the related > SQL files. > e.g. - In update.sql file "data.owner" should be > "conn|qtIdent(data.owner)" > > {% if data.owner %} > ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, name) }} > OWNER TO {{ data.owner }}; > {% endif %} > > Let us know for any issues. > > Thanks, > Neel Patel > > On Wed, Jan 20, 2016 at 2:50 PM, Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi Neel, >> >> Please find updated patch. >> >> Thanks, >> Khushboo >> >> On Wed, Jan 20, 2016 at 12:50 PM, Neel Patel > > wrote: >> >>> Hi Khushboo, >>> >>> While applying the patch file, we are getting below warnings. >>> >>> ######################################### >>> domains (1).patch:1340: trailing whitespace. >>> oid: undefined, >>> domains (1).patch:1483: trailing whitespace. >>> (nspname = 'pg_catalog' AND EXISTS >>> domains (1).patch:1487: trailing whitespace. >>> OR (nspname = 'information_schema' AND EXISTS >>> domains (1).patch:1489: trailing whitespace. >>> OR (nspname LIKE '_%' AND EXISTS >>> domains (1).patch:1642: trailing whitespace. >>> (select 1 from pg_class where relnamespace=typnamespace and relname = >>> typname and relkind != 'c') AND (typname not like '_%' OR NOT EXISTS >>> (select 1 from pg_class where relnamespace=typnamespace and relname = >>> substring(typname from 2)::name and relkind != 'c')) >>> warning: squelched 4 whitespace errors >>> warning: 9 lines add whitespace errors. >>> ######################################### >>> >>> Can you please remove the whitespace and regenerate the patch ? >>> >>> Thanks, >>> Neel Patel >>> >>> On Wed, Jan 20, 2016 at 12:37 PM, Khushboo Vashi < >>> khushboo.vashi@enterprisedb.com> wrote: >>> >>>> Resending patch with binary option. >>>> >>>> On Wed, Jan 20, 2016 at 10:18 AM, Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> Please find attached patch for the Domain Module. >>>>> >>>>> The patch will be modified after Types module implementation as we >>>>> need to populate Base Type and some Type related validations from the >>>>> Types module. >>>>> >>>>> Please review it and let me know the feedback. >>>>> >>>>> Thanks, >>>>> Khushboo >>>>> >>>> >>>> >>>> >>>> -- >>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>>> To make changes to your subscription: >>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>> >>>> >>> >> > --001a11c3780cc6e3be052ac6dcd0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Neel,

Thanks for = reviewing my patch.

I have modified the code as per your sugge= stions and also fixed some of the issues got while doing unit testing.
<= /div>Please find attached patch for the same.


Thanks,
<= /div>Khushboo



On Wed, Jan 20, 2016 at 10:= 56 PM, Neel Patel <neel.patel@enterprisedb.com> wr= ote:
Hi Khushboo,
Please find below review comments.

- = While creating new Domain and clicking on SQL tab, python side we are getti= ng error saying "TypeError: 'bool' object is not callable&q= uot;.
=C2=A0 We are not able to create any domain. Fix= this issue so that we can test other functionality.
- Implement = the reverse engineering SQL generation for the domain node.
- As = per the checklist, remove the "Use Slony" from Constraints tab, a= s it is not required.
- No need to pass "qtIdent=3Dself.q= tIdent" as function argument in "create" and "getSQ= L" function in domains/__init__.py
- In "Security"= tab , provider and security label fields are not editable.
- In = PG version 9.1, when we update the existing domain name then "ALTER DO= MAIN" is not supported.=C2=A0
=C2=A0 Currently there is no c= hecking for the PG version 9.1 and 9.2_plus. It will fail when we connect t= o database 9.1

=C2=A0 e.g.
=C2=A0 For PG= version 9.1 - Update command should be as below.
=C2=A0 ALTER TY= PE xyz RENAME TO abc;
=C2=A0 For PG version 9.2 onwards - Update = command should be as below.
=C2=A0 ALTER DOMAIN xyz RENAME TO abc= ;

- Some of the SQL file, qtIdent is not used. Ple= ase check all the related SQL files.
=C2=A0 e.g. =C2=A0- In updat= e.sql file "data.owner" should be "conn|qtIdent(data.owner)&= quot;

=C2=A0 =C2=A0 {% if data.owner %}
= =C2=A0 =C2=A0 ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, name) }}
=C2=A0 =C2=A0 =C2=A0 OWNER TO {{ data.owner }};
=C2=A0 {% endi= f %}

Let us know for any issues.

Thanks,
Neel Patel

On W= ed, Jan 20, 2016 at 2:50 PM, Khushboo Vashi <khushboo.vash= i@enterprisedb.com> wrote:
=
Hi Neel,

Please find updated p= atch.

Thanks,
Khushboo

On Wed, Jan 20, 2016 at 12:= 50 PM, Neel Patel <neel.patel@enterprisedb.com> wr= ote:
Hi Khushboo,
While applying the patch file, we are getting below warnings.<= /div>

#########################################
domains (1).patch:1340: trailing whitespace.
=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 oid: undefined,=C2=A0
domains (1).patch:148= 3: trailing whitespace.
=C2=A0 =C2=A0 (nspname =3D 'pg_catalo= g' AND EXISTS=C2=A0
domains (1).patch:1487: trailing whitespa= ce.
=C2=A0 =C2=A0 OR (nspname =3D 'information_schema' AN= D EXISTS=C2=A0
domains (1).patch:1489: trailing whitespace.
=
=C2=A0 =C2=A0 OR (nspname LIKE '_%' AND EXISTS=C2=A0
domains (1).patch:1642: trailing whitespace.
=C2=A0(select 1 fro= m pg_class where relnamespace=3Dtypnamespace and relname =3D typname and re= lkind !=3D 'c') AND (typname not like '_%' OR NOT EXISTS (s= elect 1 from pg_class where relnamespace=3Dtypnamespace and relname =3D sub= string(typname from 2)::name and relkind !=3D 'c'))=C2=A0
warning: squelched 4 whitespace errors
warning: 9 lines add whit= espace errors.
#########################################

Can you please remove the whitespace and regener= ate the patch ?

Thanks,
Neel Patel
=

O= n Wed, Jan 20, 2016 at 12:37 PM, Khushboo Vashi <khushboo.va= shi@enterprisedb.com> wrote:
Resending patch with binary option= .

On Wed, Jan 20, 2016 at 10:18 AM, Khushboo Vashi <= khushb= oo.vashi@enterprisedb.com> wrote:
Hi,

Please find at= tached patch for the Domain Module.

The patch will be modified= after Types module implementation as we need to populate Base Type=C2=A0 a= nd some Type related validations from the Types module.

P= lease review it and let me know the feedback.

Thank= s,
Khushboo



--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers=





--001a11c3780cc6e3be052ac6dcd0-- --001a11c3780cc6e3c5052ac6dcd2 Content-Type: text/x-patch; charset=US-ASCII; name="Domain_ver_1.patch" Content-Disposition: attachment; filename="Domain_ver_1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ik598k6u0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvX19pbml0X18u cHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9fLnB5Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMDI5YTQKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9f LnB5CkBAIC0wLDAgKzEsNTMzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IGpzb24KK2Zyb20gZmxhc2sgaW1w b3J0IHJlbmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwg anNvbmlmeQorZnJvbSBmbGFzay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQK K2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVz cG9uc2UsIFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2Us IGludGVybmFsX3NlcnZlcl9lcnJvcgorZnJvbSBwZ2FkbWluLmJyb3dzZXIu dXRpbHMgaW1wb3J0IFBHQ2hpbGROb2RlVmlldworZnJvbSBwZ2FkbWluLmJy b3dzZXIuY29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUK K2ltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJz LmRhdGFiYXNlcy5zY2hlbWFzIGFzIHNjaGVtYXMKK2Zyb20gcGdhZG1pbi51 dGlscy5hamF4IGltcG9ydCBwcmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20g cGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20g Y29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBmdW5jdG9v bHMgaW1wb3J0IHdyYXBzCisKK2NsYXNzIERvbWFpbk1vZHVsZShDb2xsZWN0 aW9uTm9kZU1vZHVsZSk6CisgICAgTk9ERV9UWVBFID0gJ2RvbWFpbicKKyAg ICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiRG9tYWlucyIpCisKKyAg ICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAg ICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1heF92ZXIg PSBOb25lCisgICAgICAgIHN1cGVyKERvbWFpbk1vZHVsZSwgc2VsZikuX19p bml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgIyBCZWZvcmUgbG9hZGlu ZyB0aGlzIG1vZHVsZSB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHNjaWQg aXMgc2NoZW1hIG9iamVjdAorICAgIGRlZiBCYWNrZW5kU3VwcG9ydGVkKHNl bGYsIG1hbmFnZXIsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCB2YWxpZGF0ZSBzY2hlbWEgbmFtZSAmIHNj aWQgYWdhaW5zdCBjYXRhbG9ncyB0aGVuIGFsbG93IHVzIHRvCisgICAgICAg IG1ha2UgZGVjaXNpb24gaWYgd2Ugd2FudCB0byBsb2FkIHRoaXMgbW9kdWxl IG9yIG5vdCBmb3IgdGhlIHNjaGVtYQorICAgICAgICAiIiIKKyAgICAgICAg aWYgc3VwZXIoRG9tYWluTW9kdWxlLCBzZWxmKS5CYWNrZW5kU3VwcG9ydGVk KG1hbmFnZXIsICoqa3dhcmdzKToKKyAgICAgICAgICAgIGNvbm4gPSBtYW5h Z2VyLmNvbm5lY3Rpb24oKQorICAgICAgICAgICAgIyBJZiBEQiBpcyBub3Qg Y29ubmVjdGVkIHRoZW4gcmV0dXJuIGVycm9yIHRvIGJyb3dzZXIKKyAgICAg ICAgICAgIGlmIG5vdCBjb25uLmNvbm5lY3RlZCgpOgorICAgICAgICAgICAg ICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQoCisgICAgICAgICAg ICAgICAgICAgIGdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIK KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgIHZlciA9IG1hbmFnZXIudmVyc2lvbgorICAgICAgICAgICAg c2VydmVyX3R5cGUgPSBtYW5hZ2VyLnNlcnZlcl90eXBlCisgICAgICAgICAg ICAjIHdlIHdpbGwgc2V0IHRlbXBsYXRlIHBhdGggZm9yIHNxbCBzY3JpcHRz CisgICAgICAgICAgICBpZiB2ZXIgPj0gOTAxMDA6CisgICAgICAgICAgICAg ICAgdGVtcGxhdGVfcGF0aCA9ICdkb21haW5zL3NxbC85LjFfcGx1cycKKyAg ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBOb3RlOiBEb21h aW4gaXMgbm90IHN1cHBvcnRlZCBiZWxvdyBwb3N0Z3JlcyB2ZXJzaW9uIDku MQorICAgICAgICAgICAgICAgICMgSGVuY2Ugd2Ugd2lsbCBub3QgbG9hZCB0 aGlzIG1vZHVsZQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Rl bXBsYXRlX3BhdGgsICdiYWNrZW5kX3N1cHBvcnQuc3FsJ10pLCBzY2lkPWt3 YXJnc1snc2NpZCddKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBjb25u LmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgICMgY2hlY2sgaWYg YW55IGVycm9ycworICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKyAgICAgICAgICAgICMgQ2hlY2sgc2NpZCBpcyBjYXRhbG9n IGFuZCBmcm9tICdzeXMnLCAnZGJvJywgJ2luZm9ybWF0aW9uX3NjaGVtYScs CisgICAgICAgICAgICAjIHRoZW4gRmFsc2UgKERvIG5vdCBsb2FkIHRoaXMg bW9kdWxlKSwgb3RoZXdpc2UgVHJ1ZQorICAgICAgICAgICAgaWYgcmVzIGlz IFRydWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAg ICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rpb24g bm9kZQorICAgICAgICAiIiIKKyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0 ZV9icm93c2VyX2NvbGxlY3Rpb25fbm9kZShzY2lkKQorCisgICAgQHByb3Bl cnR5CisgICAgZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIK KyAgICAgICAgTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgZGF0YWJhc2Us IHdoZW4gYW55IG9mIHRoZSBkYXRhYmFzZSBub2RlIGlzCisgICAgICAgIGlu aXRpYWxpemVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNjaGVt YXMuU2NoZW1hTW9kdWxlLk5PREVfVFlQRQorCisKK2JsdWVwcmludCA9IERv bWFpbk1vZHVsZShfX25hbWVfXykKKworCitjbGFzcyBEb21haW5WaWV3KFBH Q2hpbGROb2RlVmlldyk6CisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5v ZGVfdHlwZQorCisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgICAgICB7J3R5 cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICAgICAgeyd0eXBl JzogJ2ludCcsICdpZCc6ICdkaWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6 ICdpbnQnLCAnaWQnOiAnc2NpZCd9CisgICAgICAgICAgICBdCisgICAgaWRz ID0gWworICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdkb2lk J30KKyAgICAgICAgICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsK KyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0JzogJ3Byb3Bl cnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBkYXRlJ30s CisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAnY3JlYXRl J30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7J2RlbGV0ZSc6 ICdkZWxldGUnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dldCc6ICdj aGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0JzogJ25vZGUn fSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBbeydnZXQn OiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30s IHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7J2dldCc6 ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5jeSc6IFt7J2dl dCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBlbmRlbnQnOiBb eydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21vZHVsZS5qcyc6 IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAgICAgICAgJ2dl dF9zY2hlbWFzJzogW3snZ2V0JzogJ2dldF9zY2hlbWFzJ30sIHsnZ2V0Jzog J2dldF9zY2hlbWFzJ31dLAorICAgICAgICAnZ2V0X2NvbGxhdGlvbnMnOiBb eydnZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfSwgeydnZXQnOiAnZ2V0X2NvbGxh dGlvbnMnfV0sCisgICAgICAgICdnZXRfdHlwZXMnOiBbeydnZXQnOiAnZ2V0 X3R5cGVzJ30sIHsnZ2V0JzogJ2dldF90eXBlcyd9XQorICAgIH0pCisKKwor ICAgIGRlZiBtb2R1bGVfanMoc2VsZik6CisgICAgICAgIHJldHVybiBtYWtl X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAgICAgImRvbWFpbnMvanMvZG9tYWlucy5qcyIs CisgICAgICAgICAgICAgICAgICAgIF89Z2V0dGV4dAorICAgICAgICAgICAg ICAgICAgICApLAorICAgICAgICAgICAgICAgIDIwMCwgeydDb250ZW50LVR5 cGUnOiAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0J30KKyAgICAgICAgICAg ICAgICApCisKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6Cisg ICAgICAgICIiIgorICAgICAgICBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAg ICAgICAgQ2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgorICAg ICAgICBBdHRhY2ggY29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBh dGguCisgICAgICAgICIiIgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAg ZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICMgSGVy ZSBhcmdzWzBdIHdpbGwgaG9sZCBzZWxmICYga3dhcmdzIHdpbGwgaG9sZCBn aWQsc2lkLGRpZAorICAgICAgICAgICAgc2VsZiA9IGFyZ3NbMF0KKyAgICAg ICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIp CisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlv bl9tYW5hZ2VyKGt3YXJnc1snc2lkJ10pCisgICAgICAgICAgICAjIEdldCBk YXRhYmFzZSBjb25uZWN0aW9uCisgICAgICAgICAgICBzZWxmLmNvbm4gPSBz ZWxmLm1hbmFnZXIuY29ubmVjdGlvbihkaWQ9a3dhcmdzWydkaWQnXSkKKyAg ICAgICAgICAgIHNlbGYucXRJZGVudCA9IGRyaXZlci5xdElkZW50CisKKyAg ICAgICAgICAgICMgSWYgZGF0YWJhc2UgaXMgbm90IGNvbm5lY3RlZCB0aGVu IHJldHVybiBlcnJvcgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubi5j b25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0 aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHRvIHRo ZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiCisgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHZlciA9IHNl bGYubWFuYWdlci52ZXJzaW9uCisgICAgICAgICAgICBzZXJ2ZXJfdHlwZSA9 IHNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZQorCisgICAgICAgICAgICAjIHdl IHdpbGwgc2V0IHRlbXBsYXRlIHBhdGggZm9yIHNxbCBzY3JpcHRzCisgICAg ICAgICAgICBpZiB2ZXIgPj0gOTAyMDA6CisgICAgICAgICAgICAgICAgc2Vs Zi50ZW1wbGF0ZV9wYXRoID0gJ2RvbWFpbnMvc3FsLzkuMl9wbHVzJworICAg ICAgICAgICAgZWxpZiB2ZXIgPj0gOTAxMDA6CisgICAgICAgICAgICAgICAg c2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2RvbWFpbnMvc3FsLzkuMV9wbHVzJwor CisgICAgICAgICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCisKKyAg ICAgICAgcmV0dXJuIHdyYXAKKworCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgor ICAgICAgICAiIiJMaXN0IHRoZSBEb21haW5zLiIiIgorCisgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAncHJvcGVydGllcy5zcWwnXSksIHNjaWQ9c2NpZCkKKyAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKwor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgIHJl dHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlc3BvbnNl PXJlc1sncm93cyddLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAg ICAgICAgICAgICAgICApCisKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6Cisg ICAgICAgICIiIlJldHVybnMgYWxsIHRoZSBEb21haW5zLiIiIgorCisgICAg ICAgIHJlcyA9IFtdCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwn XSksIHNjaWQ9c2NpZCkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5j b25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydy b3dzJ106CisgICAgICAgICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAg ICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUo CisgICAgICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAorICAgICAg ICAgICAgICAgICAgICAgICAgcm93WyduYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgICAgICBpY29uPSJpY29uLWRvbWFpbiIKKyAgICAgICAgICAgICAg ICAgICAgKSkKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgICAgIiIiUmV0dXJucyBE b21haW4gcHJvcGVydGllcy4iIiIKKworICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3Bl cnRpZXMuc3FsJ10pLHNjaWQ9c2NpZCwgZG9pZD1kb2lkKQorICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZGF0 YSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgIyBHZXQgRG9tYWluIENv bnN0cmFpbnRzCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X2NvbnN0cmFpbnRzLnNx bCddKSxkb2lkPWRvaWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworCisgICAgICAgIGRhdGFbJ2NvbnN0cmFpbnRzJ10g PSByZXNbJ3Jvd3MnXQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICByZXNwb25zZT1kYXRhLAorICAgICAgICAgICAg ICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X3NjaGVtYXMoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKKyAgICAgICAgIiIi UmV0dXJucyBTY2hlbWFzIGZvciBwYXJ0aWN1bGFyIGRhdGFiYXNlLiIiIgor CisgICAgICAgIHJlcyA9IFt7ICdsYWJlbCc6ICcnLCAndmFsdWUnOiAnJyB9 XQorICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF9zY2hl bWFzLnNxbCddKSwgc2NpZD1zY2lkKQorICAgICAgICAgICAgc3RhdHVzLCBy c2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAg ICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg J2xhYmVsJzogcm93Wyduc3BuYW1lJ10sICd2YWx1ZSc6IHJvd1snbnNwbmFt ZSddIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAg ICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIGdldF9jb2xsYXRpb25zKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgICAgICIiIlJl dHVybnMgQ29sbGF0aW9ucy4iIiIKKworICAgICAgICByZXMgPSBbeyAnbGFi ZWwnOiAnJywgJ3ZhbHVlJzogJycgfV0KKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdnZXRfY29sbGF0aW9ucy5zcWwnXSkpCisgICAgICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgor ICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyAnbGFiZWwnOiByb3dbJ2NvcHlfY29sbGF0aW9uJ10s ICd2YWx1ZSc6IHJvd1snY29weV9jb2xsYXRpb24nXSB9CisgICAgICAgICAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pz b25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cmVzLAor ICAgICAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAg ICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXN0cihlKSkKKworCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBnZXRfdHlwZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9p ZD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyBUeXBlcy4iIiIKKyAgICAg ICAgIyBUT0RPOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZW1vdmVkIG9u Y2UgVHlwZXMgbW9kdWxlIHdpbGwgYmUgY29tcGxldGVkLgorCisgICAgICAg IHJlcyA9IFt7ICdsYWJlbCc6ICcnLCAndmFsdWUnOiAnJyB9XQorICAgICAg ICB0cnk6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF90eXBlcy5zcWwnXSkp CisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsn cm93cyddOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyAnbGFiZWwnOiByb3dbJ3R5cG5hbWUn XSwgJ3ZhbHVlJzogcm93Wyd0eXBuYW1lJ10gfQorICAgICAgICAgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAg ICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAgICAg KQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3Ry KGUpKQorCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGNy ZWF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIi CisgICAgICAgIENyZWF0ZXMgbmV3IGRvbWFpbiBvYmplY3QuCisKKyAgICAg ICAgRXhwZWN0ZWQgUGFyYW1ldGVyczoKKyAgICAgICAgICAgIG5hbWU6IERv bWFpbiBOYW1lCisgICAgICAgICAgICBvd25lcjogT3duZXIgTmFtZQorICAg ICAgICAgICAgYmFzZW5zcDogU2NoZW1hIE5hbWUKKyAgICAgICAgICAgIGJh c2V0eXBlOiBEb21haW4gQmFzZSBUeXBlCisKKyAgICAgICAgRXhwZWN0ZWQg UmVzcG9uc2U6CisgICAgICAgICAgICBEb21haW4gb2JqZWN0IGluIGpzb24g Zm9ybWF0LgorICAgICAgICAiIiIKKworICAgICAgICBkYXRhID0gcmVxdWVz dC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVz dC5kYXRhLmRlY29kZSgpKQorICAgICAgICByZXF1aXJlZF9hcmdzID0gWwor ICAgICAgICAgICAgJ25hbWUnLAorICAgICAgICAgICAgJ293bmVyJywKKyAg ICAgICAgICAgICdiYXNlbnNwJywKKyAgICAgICAgICAgICdiYXNldHlwZScK KyAgICAgICAgXQorCisgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJn czoKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YSBvciBkYXRhW2Fy Z10gPT0gJyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAg ICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAg ICAgICBlcnJvcm1zZz1nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAg ICAgIkNvdWxkbid0IGZpbmQgdGhlIHJlcXVpcmVkIHBhcmFtZXRlciAoJXMp LiIgJSBhcmcKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ICAgICkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2Ny ZWF0ZS5zcWwnXSksIGRhdGE9ZGF0YSkKKyAgICAgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgICMgd2UgbmVlZCBvaWQgdG8gdG8gYWRkIG9iamVjdCBpbiB0cmVlIGF0 IGJyb3dzZXIsIGJlbG93IHNxbCB3aWxsIGdpdmVzIHRoZSBzYW1lCisgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2dldF9vaWQuc3FsJ10pLCBiYXNlbnNwPWRhdGFb J2Jhc2Vuc3AnXSwgbmFtZT1kYXRhWyduYW1lJ10pCisgICAgICAgICAgICBz dGF0dXMsIGRvaWQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWRvaWQpCisK KyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgICAg IG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAor ICAgICAgICAgICAgICAgICAgICBkb2lkLAorICAgICAgICAgICAgICAgICAg ICBkYXRhWyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249Imlj b24tZG9tYWluIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkK KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkp CisKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVsZXRl KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgRHJvcCB0aGUgRG9tYWluLgorICAgICAgICAiIiIKKyAg ICAgICAgIyBCZWxvdyB3aWxsIGRlY2lkZSBpZiBpdCdzIHNpbXBsZSBkcm9w IG9yIGRyb3Agd2l0aCBjYXNjYWRlIGNhbGwKKyAgICAgICAgaWYgc2VsZi5j bWQgPT0gJ2RlbGV0ZSc6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSBjYXNj YWRlIG9wZXJhdGlvbgorICAgICAgICAgICAgY2FzY2FkZSA9IFRydWUKKyAg ICAgICAgZWxzZToKKyAgICAgICAgICAgIGNhc2NhZGUgPSBGYWxzZQorCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCdd KSwgc2NpZD1zY2lkLCBkb2lkPWRvaWQpCisgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPW5hbWUpCisKKyAgICAg ICAgICAgIG5hbWUsIGJhc2Vuc3AgPSByZXNbJ3Jvd3MnXVswXQorCisgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksIG5hbWU9bmFtZSwgYmFz ZW5zcD1iYXNlbnNwLCBjYXNjYWRlPWNhc2NhZGUpCisgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdl dHRleHQoIkRvbWFpbiBkcm9wcGVkIiksCisgICAgICAgICAgICAgICAgZGF0 YT17CisgICAgICAgICAgICAgICAgICAgICdpZCc6IGRvaWQsCisgICAgICAg ICAgICAgICAgICAgICdzY2lkJzogc2NpZCwKKyAgICAgICAgICAgICAgICAg ICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdp ZCwKKyAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQsIGRvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVXBkYXRlIHRo ZSBEb21haW4uCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVz dC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVz dC5kYXRhLmRlY29kZSgpKQorCisgICAgICAgIGRvbWFpbl9kYXRhID0ge30K KyAgICAgICAgZm9yIGtleSBpbiBkYXRhOgorICAgICAgICAgICAgaWYga2V5 IGluIFsnY29uc3RyYWludHMnLCAnc2VjbGFiZWxzJ106CisgICAgICAgICAg ICAgICAgZG9tYWluX2RhdGFba2V5XSA9IGpzb24ubG9hZHMoZGF0YVtrZXld KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkb21haW5f ZGF0YVtrZXldID0gZGF0YVtrZXldCisKKyAgICAgICAgcHJpbnQgZG9pZCwg ZG9tYWluX2RhdGEKKyAgICAgICAgc3RhdHVzLCBTUUwgPSBzZWxmLmdldFNR TChnaWQsIHNpZCwgZG9tYWluX2RhdGEsIHNjaWQsIGRvaWQpCisKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9U1FMKQorCisgICAgICAgIHRyeToK KyAgICAgICAgICAgIGlmIFNRTDoKKyAgICAgICAgICAgICAgICBwcmludCBT UUwKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAg ICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89IkRvbWFp biB1cGRhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAg ICAgICAgICAgICAgICAgICAgICAnaWQnOiBkb2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdn aWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlk CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1cGRh dGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg ICAgICAgICAgICAgICdpZCc6IGRvaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn c2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdp ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKworICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbXNxbChzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAg ICAgICAgUmV0dXJucyB0aGUgbW9kaWZpZWQgU1FMLgorCisgICAgICAgIEV4 cGVjdGVkIFBhcmFtZXRlcnM6CisgICAgICAgICAgICBuYW1lOiBEb21haW4g TmFtZQorICAgICAgICAgICAgb3duZXI6IE93bmVyIE5hbWUKKyAgICAgICAg ICAgIGJhc2Vuc3A6IFNjaGVtYSBOYW1lCisgICAgICAgICAgICBiYXNldHlw ZTogRG9tYWluIEJhc2UgVHlwZQorCisgICAgICAgIEV4cGVjdGVkIFJlc3Bv bnNlOgorICAgICAgICAgICAgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRlL3Vw ZGF0ZSB0aGUgRG9tYWluLgorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9 IHJlcXVlc3QuYXJncworCisgICAgICAgIGlmIGRvaWQgaXMgTm9uZToKKyAg ICAgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAgICAg J25hbWUnLAorICAgICAgICAgICAgICAgICdvd25lcicsCisgICAgICAgICAg ICAgICAgJ2Jhc2Vuc3AnLAorICAgICAgICAgICAgICAgICdiYXNldHlwZScK KyAgICAgICAgICAgIF0KKworICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1 aXJlZF9hcmdzOgorICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0 YToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisg ICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAgICAg ICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBw YXJhbWV0ZXIgKCVzKS4iICUgYXJnCisgICAgICAgICAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICBkb21haW5f ZGF0YSA9IHt9CisgICAgICAgIGZvciBrZXkgaW4gZGF0YToKKyAgICAgICAg ICAgIGlmIGtleSBpbiBbJ2NvbnN0cmFpbnRzJywgJ3NlY2xhYmVscyddOgor ICAgICAgICAgICAgICAgIGRvbWFpbl9kYXRhW2tleV0gPSBqc29uLmxvYWRz KGRhdGFba2V5XSkKKyAgICAgICAgICAgIGVsaWYga2V5ID09ICd0eXBub3Ru dWxsJzoKKyAgICAgICAgICAgICAgICBkb21haW5fZGF0YVtrZXldID0gVHJ1 ZSBpZiBkYXRhW2tleV0gPT0gJ3RydWUnIGVsc2UgKEZhbHNlIGlmIGRhdGFb J2tleSddID09ICdmYWxzZScgZWxzZSAnJykKKyAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgZG9tYWluX2RhdGFba2V5XSA9IGRhdGFba2V5 XQorCisgICAgICAgIHN0YXR1cywgU1FMID0gc2VsZi5nZXRTUUwoZ2lkLCBz aWQsIGRvbWFpbl9kYXRhLCBzY2lkLCBkb2lkKQorCisgICAgICAgIGlmIFNR TDoKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisg ICAgICAgICAgICAgICAgICAgIGRhdGE9U1FMLAorICAgICAgICAgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg ICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBTUUwKKworCisgICAgZGVm IGdldFNRTChzZWxmLCBnaWQsIHNpZCwgZGF0YSwgc2NpZCwgZG9pZD1Ob25l KToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbnJhdGVzIHRoZSBTUUwgc3Rh dGVtZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBEb21haW4uCisgICAgICAg ICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBkb2lkIGlzIG5v dCBOb25lOgorICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5z cWwnXSksIHNjaWQ9c2NpZCwgZG9pZD1kb2lkKQorICAgICAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisK KyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJl c1sncm93cyddWzBdCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICBkYXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YSkKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10p LCBkYXRhPWRhdGEpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZSxTUUwKKwor ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBy ZXR1cm4gRmFsc2UsIGUKKworRG9tYWluVmlldy5yZWdpc3Rlcl9ub2RlX3Zp ZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvX19pbml0X18ucHkgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy9fX2luaXRfXy5w eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzAxOTA5 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9k b21haW4tY29uc3RyYWludHMvX19pbml0X18ucHkKQEAgLTAsMCArMSw0MDAg QEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitp bXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRl LCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9tIGZsYXNr LmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWluLnV0aWxz LmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAgIG1ha2Vf cmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vy cm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgTm9kZVZp ZXcKK2Zyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENv bGxlY3Rpb25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy5kb21haW5z IGFzIGRvbWFpbnMKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBw cmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2 ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19E RUZBVUxUX0RSSVZFUgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisK K2NsYXNzIERvbWFpbkNvbnN0cmFpbnRNb2R1bGUoQ29sbGVjdGlvbk5vZGVN b2R1bGUpOgorICAgIE5PREVfVFlQRSA9ICdkb21haW4tY29uc3RyYWludHMn CisgICAgQ09MTEVDVElPTl9MQUJFTCA9IGdldHRleHQoIkRvbWFpbiBDb25z dHJhaW50cyIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoq a3dhcmdzKToKKyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAg ICBzZWxmLm1heF92ZXIgPSBOb25lCisgICAgICAgIHN1cGVyKERvbWFpbkNv bnN0cmFpbnRNb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJn cykKKworICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgZG9pZCk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0ZSB0 aGUgY29sbGVjdGlvbiBub2RlCisgICAgICAgICIiIgorICAgICAgICB5aWVs ZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKGRvaWQp CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShzZWxmKToK KyAgICAgICAgIiIiCisgICAgICAgIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkg dG8gbWFrZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUuCisgICAgICAgICIiIgor ICAgICAgICByZXR1cm4gRmFsc2UKKworCisgICAgQHByb3BlcnR5CisgICAg ZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAg TG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgZGF0YWJhc2UsIHdoZW4gYW55 IG9mIHRoZSBkYXRhYmFzZSBub2RlIGlzCisgICAgICAgIGluaXRpYWxpemVk LgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGRvbWFpbnMuRG9tYWlu TW9kdWxlLk5PREVfVFlQRQorCisKK2JsdWVwcmludCA9IERvbWFpbkNvbnN0 cmFpbnRNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgRG9tYWluQ29uc3Ry YWludFZpZXcoTm9kZVZpZXcpOgorICAgIG5vZGVfdHlwZSA9IGJsdWVwcmlu dC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisgICAgICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAgICAgICAg eyd0eXBlJzogJ2ludCcsICdpZCc6ICdzaWQnfSwKKyAgICAgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAnZGlkJ30sCisgICAgICAgICAgICB7J3R5 cGUnOiAnaW50JywgJ2lkJzogJ3NjaWQnfSwKKyAgICAgICAgICAgIHsndHlw ZSc6ICdpbnQnLCAnaWQnOiAnZG9pZCd9CisgICAgICAgICAgICBdCisgICAg aWRzID0gWworICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdj b2lkJ30KKyAgICAgICAgICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBkaWN0 KHsKKyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0JzogJ3By b3BlcnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBkYXRl J30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAnY3Jl YXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7J2RlbGV0 ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dldCc6 ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0JzogJ25v ZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBbeydn ZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3Fs J30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7J2dl dCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5jeSc6IFt7 J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBlbmRlbnQn OiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21vZHVsZS5q cyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XQorICAgIH0pCisK KyAgICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChpZiBqYXZhc2NyaXB0KSBleGlz dHMgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9w ZXJ0eSBmb3IgeW91ciBvd24gbG9naWMuCisgICAgICAgICIiIgorICAgICAg ICByZXR1cm4gbWFrZV9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICJkb21haW4tY29u c3RyYWludHMvanMvZG9tYWluLWNvbnN0cmFpbnRzLmpzIiwKKyAgICAgICAg ICAgICAgICAgICAgXz1nZXR0ZXh0CisgICAgICAgICAgICAgICAgICAgICks CisgICAgICAgICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlwZSc6ICdhcHBs aWNhdGlvbi94LWphdmFzY3JpcHQnfQorICAgICAgICAgICAgICAgICkKKwor ICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CisgICAgICAgICIiIgor ICAgICAgICBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgICAgQ2hlY2tz IGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgorICAgICAgICBBdHRhY2gg Y29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBhdGguCisgICAgICAg ICIiIgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoKmFy Z3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICMgSGVyZSBhcmdzWzBdIHdp bGwgaG9sZCBzZWxmICYga3dhcmdzIHdpbGwgaG9sZCBnaWQsc2lkLGRpZAor ICAgICAgICAgICAgc2VsZiA9IGFyZ3NbMF0KKyAgICAgICAgICAgIGRyaXZl ciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCisgICAgICAgICAg ICBzZWxmLm1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKGt3 YXJnc1snc2lkJ10pCisgICAgICAgICAgICBzZWxmLmNvbm4gPSBzZWxmLm1h bmFnZXIuY29ubmVjdGlvbihkaWQ9a3dhcmdzWydkaWQnXSkKKyAgICAgICAg ICAgIHNlbGYucXRJZGVudCA9IGRyaXZlci5xdElkZW50CisKKyAgICAgICAg ICAgICMgSWYgREIgbm90IGNvbm5lY3RlZCB0aGVuIHJldHVybiBlcnJvciB0 byBicm93c2VyCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb25uLmNvbm5l Y3RlZCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25f cmVxdWlyZWQoCisgICAgICAgICAgICAgICAgICAgIGdldHRleHQoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24gdG8gdGhlIHNl cnZlciBoYXMgYmVlbiBsb3N0ISIKKyAgICAgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgdmVyID0gc2VsZi5t YW5hZ2VyLnZlcnNpb24KKyAgICAgICAgICAgIHNlcnZlcl90eXBlID0gc2Vs Zi5tYW5hZ2VyLnNlcnZlcl90eXBlCisKKyAgICAgICAgICAgICMgd2Ugd2ls bCBzZXQgdGVtcGxhdGUgcGF0aCBmb3Igc3FsIHNjcmlwdHMKKyAgICAgICAg ICAgIGlmIHZlciA+PSA5MDEwMDoKKyAgICAgICAgICAgICAgICBzZWxmLnRl bXBsYXRlX3BhdGggPSAnZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1 cycKKyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKwor ICAgICAgICByZXR1cm4gd3JhcAorCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg ZG9pZCk6CisgICAgICAgICIiIgorICAgICAgICBMaXN0IHRoZSBEb21haW4g Q29uc3RyYWludHMuCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3By b3BlcnRpZXMuc3FsJ10pLCBkb2lkPWRvaWQpCisgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXR1cm4gYWph eF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jv d3MnXSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAg ICAgICAgKQorCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAg ICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhbGwgdGhlIERvbWFpbiBDb25z dHJhaW50cy4KKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFtdCisgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksIGRvaWQ9ZG9pZCkKKyAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJh eShTUUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkK KworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAg ICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYmx1 ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAg ICAgICAgICAgIHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICByb3dbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGljb249 Imljb24tZG9tYWluLWNvbnN0cmFpbnRzIgorICAgICAgICAgICAgICAgICAg ICApKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisg ICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgUmV0dXJucyB0aGUgRG9tYWluIENvbnN0cmFpbnRzIHByb3BlcnR5Lgor ICAgICAgICAiIiIKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3Fs J10pLGRvaWQ9ZG9pZCwgY29pZD1jb2lkKQorICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dz J11bMF0sCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAg ICAgICAgICkKKworCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6Cisg ICAgICAgICIiIgorICAgICAgICBDcmVhdGVzIG5ldyB0aGUgRG9tYWluIENv bnN0cmFpbnRzLgorCisgICAgICAgIEV4cGVjdGVkIFBhcmFtZXRlcnM6Cisg ICAgICAgICAgICBuYW1lOiBDb25zdHJhaW50cyBOYW1lCisgICAgICAgICAg ICBjb25zcmM6IENvbnN0cmFpbnRzIENoZWNrCisKKyAgICAgICAgRXhwZWN0 ZWQgUmVzcG9uc2U6CisgICAgICAgICAgICBEb21haW4gQ29uc3RyYWludCBv YmplY3QgaW4ganNvbiBmb3JtYXQuCisgICAgICAgICIiIgorCisgICAgICAg IGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNv bi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisgICAgICAgIHJlcXVp cmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAnbmFtZScsCisgICAgICAgICAg ICAnY29uc3JjJworICAgICAgICBdCisKKyAgICAgICAgZm9yIGFyZyBpbiBy ZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRh OgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAgICAg ICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgICAgICAgICAgZXJy b3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb3Vs ZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXIgKCVzKS4iICUgYXJn CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBHZXQgU2NoZW1hIGFuZCBE b21haW4uCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF9kb21haW4uc3FsJ10p LCBkb2lkPWRvaWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPW5hbWUpCisKKyAgICAgICAgICAgIGRvbWFp biwgc2NoZW1hID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdjcmVhdGUuc3FsJ10pLCBkYXRhPWRhdGEsIGRvbWFpbj1kb21haW4s IHNjaGVtYT1zY2hlbWEpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIEdl dCB0aGUgcmVjZW50bHkgYWRkZWQgY29uc3RyYWludHMgb2lkCisgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ2dldF9vaWQuc3FsJ10pLCBkb2lkPWRvaWQsIG5hbWU9 ZGF0YVsnbmFtZSddKQorICAgICAgICAgICAgc3RhdHVzLCBjb2lkID0gc2Vs Zi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1kb2lkKQorCisgICAgICAgICAgICByZXR1 cm4ganNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2RlPXNlbGYuYmx1ZXBy aW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAg ICAgY29pZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddLAor ICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLWRvbWFpbi1jb25zdHJh aW50cyIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlbGV0ZShzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkLCBjb2lkKToKKyAgICAgICAg IiIiCisgICAgICAgIERyb3AgdGhlIERvbWFuIENvbnN0cmFpbnRzLgorICAg ICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdw cm9wZXJ0aWVzLnNxbCddKSwgZG9pZD1kb2lkLCBjb2lkPWNvaWQpCisgICAg ICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo U1FMKQorCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorICAgICAgICAgICAgZGF0YSA9IHJlc1sncm93cyddWzBdCisKKyAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwgZGF0YT1kYXRhKQor ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9z Y2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAg ICAgICAgaW5mbz1nZXR0ZXh0KCJEb21haW4gQ29uc3RyYWludCBkcm9wcGVk IiksCisgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAg ICAgICdpZCc6IGRvaWQsCisgICAgICAgICAgICAgICAgICAgICdzY2lkJzog c2NpZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAg ICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAg ICAgJ2RpZCc6IGRpZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKKworCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiB1 cGRhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCwgY29pZCk6 CisgICAgICAgICIiIgorICAgICAgICBVcGRhdGUgdGhlIERvbWFpbiBDb25z dHJhaW50cy4KKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0 LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0 LmRhdGEuZGVjb2RlKCkpCisKKyAgICAgICAgc3RhdHVzLCBTUUwgPSBzZWxm LmdldFNRTChnaWQsIHNpZCwgZGF0YSwgc2NpZCwgZG9pZCwgY29pZCkKKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgU1FMIGFuZCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgcmV0dXJu IG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3Vj Y2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBpbmZvPSJEb21haW4gQ29u c3RyYWludCB1cGRhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17 CisgICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiBjb2lkLAorICAgICAg ICAgICAgICAgICAgICAgICAgJ2RvaWQnOiBkb2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdn aWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlk CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1cGRh dGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg ICAgICAgICAgICAgICdpZCc6IGNvaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAnZG9pZCc6IGRvaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn c2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lkJzog c2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBSZXR1cm5zIHRoZSBtb2RpZmllZCBTUUwuCisKKyAgICAgICAg RXhwZWN0ZWQgUGFyYW1ldGVyczoKKyAgICAgICAgICAgIG5hbWU6IENvbnN0 cmFpbnRzIE5hbWUKKyAgICAgICAgICAgIGNvbnNyYzogQ29uc3RyYWludHMg Q2hlY2sKKworICAgICAgICBFeHBlY3RlZCBSZXNwb25zZToKKyAgICAgICAg ICAgIERvbWFpbiBDb25zdHJhaW50IG9iamVjdCBpbiBqc29uIGZvcm1hdC4K KyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmFyZ3MKKwor ICAgICAgICBpZiBjb2lkIGlzIE5vbmU6CisgICAgICAgICAgICByZXF1aXJl ZF9hcmdzID0gWworICAgICAgICAgICAgICAgICduYW1lJywKKyAgICAgICAg ICAgICAgICAnY29uc3JjJworICAgICAgICAgICAgXQorCisgICAgICAgICAg ICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICAgICAg aWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICAg ICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPWdldHRl eHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZp bmQgdGhlIHJlcXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcKKyAgICAg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKQor ICAgICAgICBzdGF0dXMsIFNRTCA9IHNlbGYuZ2V0U1FMKGdpZCwgc2lkLCBk YXRhLCBzY2lkLCBkb2lkLCBjb2lkKQorICAgICAgICBpZiBzdGF0dXMgYW5k IFNRTDoKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgICAgIGRhdGE9U1FMLAorICAgICAgICAgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBTUUwKKworCisgICAg ZGVmIGdldFNRTChzZWxmLCBnaWQsIHNpZCwgZGF0YSwgc2NpZCwgZG9pZCwg Y29pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbnJhdGVzIHRo ZSBTUUwgc3RhdGVtZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBEb21haW4g Q29uc3RyYWludC4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAg ICAgICAgIGlmIGNvaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwgZG9pZD1kb2lkLCBjb2lkPWNv aWQpCisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSwgaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAg ICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg ICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsJ3VwZGF0ZS5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9s ZF9kYXRhLCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn Z2V0X2RvbWFpbi5zcWwnXSksIGRvaWQ9ZG9pZCkKKyAgICAgICAgICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FM KQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBGYWxzZSxpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9bmFtZSkKKworICAgICAgICAgICAgICAgIGRvbWFpbiwgc2No ZW1hID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnY3JlYXRlLnNxbCddKSwgZGF0YT1kYXRhLCBkb21haW49ZG9tYWluLCBz Y2hlbWE9c2NoZW1hKQorICAgICAgICAgICAgcmV0dXJuIFRydWUsIFNRTAor ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBy ZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1z dHIoZSkpCisKK0RvbWFpbkNvbnN0cmFpbnRWaWV3LnJlZ2lzdGVyX25vZGVf dmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL2RvbWFpbi1jb25zdHJhaW50cy9zdGF0aWMvaW1nL2NvbGwtZG9t YWluLWNvbnN0cmFpbnRzLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv ZG9tYWluLWNvbnN0cmFpbnRzL3N0YXRpYy9pbWcvY29sbC1kb21haW4tY29u c3RyYWludHMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MmUxMzcw NWM1MGU2YzBjZjhmMTlkNjgwMDUzZTg2NDNlMjg3NTEKR0lUIGJpbmFyeSBw YXRjaApsaXRlcmFsIDMxNAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3 QiE3Mz8kIyllRlBGdjNHZk1WMT0yVHJPODQ3e0psYHx0YFFwYXMKem48aFMr bD1yTVk+UkdQcXZseWRpelJKJj5CYE9tI1Z9Ui15T00/N0A4NjJNN05DUj4+ M3Becj1md1R1MHlQZUZvCnoxMlRMKVRedkk9dHx1b1BVfHxaRjx0Z2FIRypR c1EhP20mVHE9PzNtQ3V9SiNEeDN4QG1NfX1eaUU9NU5JV1huawp6a3BuQzRh aSVhPkA7R2c3PXV1bXM9OWJJSz1FZ2R+KHVzLTNnQEl2MDJnZnNLXkpQXiln SD1taEJUNztkT0ghP3AKemkmQjlVZ09QIXVmdiV5RXU3UDJRayU1KG92NllG NXd0PWFZZnF9KExSWEckNXglbnhYWF9YS1MyOXt0QUFrfGd8ClhXKUthaHJp WlFwWUdDa21ePmJQMGwrWGtLeXlSVX0KCmxpdGVyYWwgMApIY21WP2QwMDAw MQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWlu LWNvbnN0cmFpbnRzL3N0YXRpYy9pbWcvZG9tYWluLWNvbnN0cmFpbnRzLWJh ZC5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJh aW50cy9zdGF0aWMvaW1nL2RvbWFpbi1jb25zdHJhaW50cy1iYWQucG5nCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyYTA0NWI4ZmFmZGMwODY0MGQ1M2Iy YTg2YjFkY2FiY2IwZmUwZmQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDU3 OQp6Y21WLUowPSlmK1ApPGg7M0t8TGswMDBlMU5KTFRxMDAwbUcwMDBtTzB7 e1IzQ0BsfEQwMDAwMWI1Y2hfMEl0cCkKej0+UHgkQVclJEhNUjFaOSNRKkBS RUhtZEhBbTw8Oz1wYGxURGw2JExFMTUkfG5NNnl4SjMjNiZGfV4pUXg8cDNu CnpII2g0eklLKU91Izc5ZlRNQCNISktrWSg4P0wkUUVMYENqSk1lYXNNP25n KDtRQj58b05iWDJVP24rQVVPSDEhZQp6T3oleGk/QGRuY1BFWEtSUz9eQ3oj YW10UVFCbSt4UXQocSNAS2FScVI4O1UpUnE8OTxAbUUqWVZxKGB+VikwdkIK eitHUzwpVlBXJVBWJT0kSmFnIUpIWGxWNnFaU2AoJF9IdUgzcGQ8RW5jSl9D N2YxQFhXcWJHdT5EdT04dWhwakopCnp2TjRhZ0g8aTNVck1ZZ1d5SzxleU4x VnErcDJ0YkEhRzVDM1BPIW0kcXxIdlYjRCR+Sk9zdjtmdGtfcXYtQ2VRWAp6 VCpjQyUkSjM7Pjw2X0wkdDxLcjgpIXd8ckBvPmNQYW00WCorfm1pYF5Le0ds Y3x4aDxOZE4hPDBkIUpNUXZnOGIKeiprJTkjMDBDbDRNPz9VSzFzekJMMDAw U2FOTGgwTDAxRmNVMDFGY1YwR2daXzAwMDA3YlYqR2AyaXBmMzQ8Uk9nCnoo cDcyejAwNTZrTF90Ji0pMXsyWjNjXnFUMW1ERW9keTZJWnVDVyZzMVYhYF40 fSRnb2U/KDE4QGIyRGIqaip3MQp6JTRNKHA7Jlp3PzlaYUtBeG8qeDtDT1h9 PDhmempxS1J2XjJrRjFzcHltWUhNakUybTdIbHxhfmVtQ053RzgoaT8KejhJ I2BgKGtpQnJFYmh9KFFuOFRMMiskfWIzSG5eN3BgSzZSI182elEyJD91eDts WEJZQj5oa05AQyVnPzR2VkJNClIkYmJMPDAwMm92UERITGtWMW1pbjBPU0F3 CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy9zdGF0aWMvaW1n L2RvbWFpbi1jb25zdHJhaW50cy5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL2RvbWFpbi1jb25zdHJhaW50cy9zdGF0aWMvaW1nL2RvbWFpbi1jb25z dHJhaW50cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQxZDJhMDYx Yzc5NDgxNjhkN2IxYzI0NzRkNzY5YjMxNzA5ZjFjZgpHSVQgYmluYXJ5IHBh dGNoCmxpdGVyYWwgNDA2CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdC ITYzP3d5bGBHYkt9WEBGME5FMDh7VlkybmhIY15lTWFVJWpgZAp6YUkkIytI dUVLQ3twS0VaS1luPmgoK2FJTUheTWpHamNzM31mOUNxeXQmZnZ4N0FUKil4 dl5gTDtoZntIaV9pUDQKenhnSyUmVj9xNjVfNGMqOzh9RyU7Sk1NWTxTTE1f X19NNEJpOXtFXiE8WVVwWCZuMWdhYDdQZ0Z3RWtkUyEoI1A8CnpObiZATjlP cWlLKGkmKG5WQFolLUZvVk9oOCktbGVYTXNtI0ZfODhFVzREdnBjMGZqaXI7 QjVWI08zNksxc24hTwp6aFJWZn01alNzR1BIP2Y8eHVkY3x2Qm9ZPCY1Y2I9 dVRHQjl2MTg3SjRJSStpdDU/amhuOEZ7VHNDWklXUmFkJEQKemcxKks5VyVj dTJOc0QoaEVmVlQjKndtI3BZdztEMDQrMEUodVFFP3NgWjYqWlhvcVR2WWVZ IyhWbzlvMWEjMVJmCnpWbFhsPUd8KTlQKGxzeSlGKjJ8K0Z9NS0+KEtheChH QkJ7MXNWYXd9QXZacklHcCFQJCFOM3glMGlAYz56em18ewpUKWIhOWJLbilD QHU2ezEtb0QhTTw9NE9eawoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3Ry YWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9jc3MvZG9tYWlu LWNvbnN0cmFpbnRzLmNzcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9t YWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMv Y3NzL2RvbWFpbi1jb25zdHJhaW50cy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNTdiNjYxMgotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3Rl bXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvY3NzL2RvbWFpbi1jb25zdHJh aW50cy5jc3MKQEAgLTAsMCArMSw4IEBACisucGctaWNvbi1kb21haW4tY29u c3RyYWludHMgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3t7IHVybF9m b3IoJ05PREUtZG9tYWluLWNvbnN0cmFpbnRzLnN0YXRpYycsIGZpbGVuYW1l PSdpbWcvZG9tYWluLWNvbnN0cmFpbnRzLnBuZycpIH19JykgIWltcG9ydGFu dDsKKyAgYm9yZGVyLXJhZGl1czogMTBweDsKKyAgYmFja2dyb3VuZC1yZXBl YXQ6IG5vLXJlcGVhdDsKKyAgYWxpZ24tY29udGVudDogY2VudGVyOworICB2 ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworICBoZWlnaHQ6IDEuM2VtOworfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9qcy9kb21h aW4tY29uc3RyYWludHMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2Rv bWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRz L2pzL2RvbWFpbi1jb25zdHJhaW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5jNTY0ZWY4Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVt cGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9qcy9kb21haW4tY29uc3RyYWlu dHMuanMKQEAgLTAsMCArMSwxMDUgQEAKK2RlZmluZSgKKyAgICAgICAgWydq cXVlcnknLCAndW5kZXJzY29yZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdw Z2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsICdwZ2Fk bWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAorZnVuY3Rpb24oJCwgXywgUywg cGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSkgeworCisgIGlmICghcGdC cm93c2VyLk5vZGVzWydjb2xsLWRvbWFpbi1jb25zdHJhaW50cyddKSB7Cisg ICAgdmFyIGRhdGFiYXNlcyA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29s bC1kb21haW4tY29uc3RyYWludHMnXSA9CisgICAgICBwZ0FkbWluLkJyb3dz ZXIuQ29sbGVjdGlvbi5leHRlbmQoeworICAgICAgICBub2RlOiAnZG9tYWlu LWNvbnN0cmFpbnRzJywKKyAgICAgICAgbGFiZWw6ICd7eyBfKCdEb21haW4g Q29uc3RyYWludHMnKSB9fScsCisgICAgICAgIHR5cGU6ICdjb2xsLWRvbWFp bi1jb25zdHJhaW50cycKKyAgICAgIH0pOworICB9OworCisgIGlmICghcGdC cm93c2VyLk5vZGVzWydkb21haW4tY29uc3RyYWludHMnXSkgeworICAgIHBn QWRtaW4uQnJvd3Nlci5Ob2Rlc1snZG9tYWluLWNvbnN0cmFpbnRzJ10gPSBw Z0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAgICAgdHlwZTogJ2RvbWFpbi1j b25zdHJhaW50cycsCisgICAgICBsYWJlbDogJ3t7IF8oJ0RvbWFpbiBDb25z dHJhaW50cycpIH19JywKKyAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwt ZG9tYWluLWNvbnN0cmFpbnRzJywKKyAgICAgIGhhc1NRTDogdHJ1ZSwKKyAg ICAgIHBhcmVudF90eXBlOiBbJ2RvbWFpbiddLAorICAgICAgSW5pdDogZnVu Y3Rpb24oKSB7CisgICAgICAgIC8qIEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJh dGlvbiBvZiBtZW51cyAqLworICAgICAgICBpZiAodGhpcy5pbml0aWFsaXpl ZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRp YWxpemVkID0gdHJ1ZTsKKworICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVz KFt7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9kb21haW5fb25fY29sbCcs IG5vZGU6ICdjb2xsLWRvbWFpbi1jb25zdHJhaW50cycsIG1vZHVsZTogdGhp cywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10s IGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAg Y2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBf KCdEb21haW4gQ29uc3RyYWludC4uLicpIH19JywKKyAgICAgICAgICBpY29u OiAnd2NUYWJJY29uIGljb24tZG9tYWluLWNvbnN0cmFpbnRzJywgZGF0YTog e2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBl bmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5h bWU6ICdjcmVhdGVfZG9tYWluLWNvbnN0cmFpbnRzJywgbm9kZTogJ2RvbWFp bi1jb25zdHJhaW50cycsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBs aWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19v YmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUn LCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdEb21haW4gQ29uc3RyYWlu dC4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24t ZG9tYWluLWNvbnN0cmFpbnRzJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScs IGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUn CisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZG9tYWlu LWNvbnN0cmFpbnRzJywgbm9kZTogJ2RvbWFpbicsIG1vZHVsZTogdGhpcywK KyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNh bGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0 ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdE b21haW4gQ29uc3RyYWludC4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAn d2NUYWJJY29uIGljb24tZG9tYWluLWNvbnN0cmFpbnRzJywgZGF0YToge2Fj dGlvbjogJ2NyZWF0ZScsIGNoZWNrOiBmYWxzZX0sCisgICAgICAgICAgZW5h YmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9CisgICAgICAgIF0pOworCisg ICAgICB9LAorICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVzWydzY2hl bWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93 c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6IHsK KyAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsCisgICAgICAgICAgZGVzY3Jp cHRpb246IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb25zcmM6IHVuZGVmaW5l ZCwKKyAgICAgICAgICBjb25ub2luaGVyaXQ6IHVuZGVmaW5lZCwKKyAgICAg ICAgICBjb252YWxpZGF0ZWQ6IHVuZGVmaW5lZAorICAgICAgICB9LAorICAg ICAgICBzY2hlbWE6IFt7aWQ6ICduYW1lJywgbGFiZWw6J05hbWUnLCB0eXBl Oid0ZXh0JywgY2VsbDonc3RyaW5nJywgZGlzYWJsZWQ6ICdpc0Rpc2FibGVk J30sCisgICAgICAgIHtpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6J0NvbW1l bnQnLCB0eXBlOiAnbXVsdGlsaW5lJywgY2VsbDogJ3N0cmluZycsIG1vZGU6 IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBkaXNhYmxlZDog ZnVuY3Rpb24obSkgeyByZXR1cm4gIW0uaXNOZXcoKTsgfX0sCisgICAgICAg IHtpZDogJ2NvbnNyYycsIGxhYmVsOidDaGVjaycsIHR5cGU6ICdtdWx0aWxp bmUnLCBjZWw6ICdzdHJpbmcnLCBncm91cDogJ0RlZmluaXRpb24nLCBtb2Rl OiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH19LAorICAgICAg ICB7aWQ6ICdjb25ub2luaGVyaXQnLCBsYWJlbDonTm8gSW5oZXJpdCcsIHR5 cGU6ICdzd2l0Y2gnLCBjZWxsOiAnYm9vbGVhbicsIGdyb3VwOiAnRGVmaW5p dGlvbicsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCdd LCBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnfSwKKyAgICAgICAge2lkOiAnY29u dmFsaWRhdGVkJywgbGFiZWw6IkRvbid0IFZhbGlkYXRlIiwgdHlwZTogJ3N3 aXRjaCcsIGNlbGw6ICdib29sZWFuJywgZ3JvdXA6ICdEZWZpbml0aW9uJywg ZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJ30KKyAgICAgICAgXSwKKyAgICAgICAg dmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgIHZhciBlcnIgPSB7 fSwKKyAgICAgICAgICAgICAgZXJybXNnOworCisgICAgICAgICAgaWYgKF8u aXNVbmRlZmluZWQodGhpcy5nZXQoJ25hbWUnKSkgfHwgU3RyaW5nKHRoaXMu Z2V0KCduYW1lJykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycp IHsKKyAgICAgICAgICAgIGVyclsnbmFtZSddID0gJ3t7IF8oJ05hbWUgY2Fu IG5vdCBiZSBlbXB0eSEnKSB9fSc7CisgICAgICAgICAgICBlcnJtc2cgPSBl cnJtc2cgfHwgZXJyWyduYW1lJ107CisgICAgICAgICAgfQorCisgICAgICAg ICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2NvbnNyYycpKSB8fCBT dHJpbmcodGhpcy5nZXQoJ2NvbnNyYycpKS5yZXBsYWNlKC9eXHMrfFxzKyQv ZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBlcnJbJ2NvbnNyYyddID0g J3t7IF8oJ0NoZWNrIGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOworICAgICAg ICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsnY29uc3JjJ107CisgICAg ICAgICAgfQorCisgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCku c2V0KGVycik7CisKKyAgICAgICAgICBpZiAoXy5zaXplKGVycikpIHsKKyAg ICAgICAgICAgIHRoaXMudHJpZ2dlcignb24tc3RhdHVzJywge21zZzogZXJy bXNnfSk7CisgICAgICAgICAgICByZXR1cm4gZXJybXNnOworICAgICAgICAg IH0KKworICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIH0sCisg ICAgICAgIGlzRGlzYWJsZWQ6IGZ1bmN0aW9uKG0peworICAgICAgICAgIGlm ICghbS5pc05ldygpKSB7CisgICAgICAgICAgICB2YXIgc2VydmVyID0gdGhp cy5ub2RlX2luZm8uc2VydmVyOworICAgICAgICAgICAgaWYgKHNlcnZlci52 ZXJzaW9uIDwgOTAyMDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgIH0pLAor ICB9KTsKKworICB9CisKKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1snZG9t YWluJ107Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3Ry YWludHMvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWlu LWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNmE1ZTgKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25z dHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFf cGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsNCBAQAoreyUgaWYgZGF0YSBh bmQgc2NoZW1hIGFuZCBkb21haW4gJX0KK0FMVEVSIERPTUFJTiB7eyBjb25u fHF0SWRlbnQoc2NoZW1hLCBkb21haW4pIH19CisgICAgQUREIENPTlNUUkFJ TlQge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX0gQ0hFQ0sgKHt7IGRh dGEuY29uc3JjIH19ICkKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9kZWxldGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMv dGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvZGVs ZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x ZmE1YmM0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25z dHJhaW50cy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApAQCAtMCwwICsxLDQg QEAKK3slIGlmIGRhdGEgJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRl bnQoZGF0YS5uc3BuYW1lLCBkYXRhLnJlbG5hbWUpIH19CisgICAgRFJPUCBD T05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19Cit7JSBl bmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9k b21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50 cy9zcWwvOS4xX3BsdXMvZ2V0X2RvbWFpbi5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWlu LWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9nZXRfZG9tYWluLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDBjODU0Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwv OS4xX3BsdXMvZ2V0X2RvbWFpbi5zcWwKQEAgLTAsMCArMSw3IEBACitTRUxF Q1QgZC50eXBuYW1lIGFzIGRvbWFpbiwgYm4ubnNwbmFtZSBhcyBzY2hlbWEK K0ZST00KKyAgcGdfdHlwZSBkCitKT0lOCisgIHBnX25hbWVzcGFjZSBibiBP TiBibi5vaWQ9ZC50eXBuYW1lc3BhY2UKK1dIRVJFCisgIGQub2lkID0ge3tk b2lkfX07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2Rv bWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRz L3NxbC85LjFfcGx1cy9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29u c3RyYWludHMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxM2QwZjIKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJh aW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1 cy9nZXRfb2lkLnNxbApAQCAtMCwwICsxLDQgQEAKK1NFTEVDVCBvaWQsIGNv bm5hbWUgYXMgbmFtZQorICBGUk9NIHBnX2NvbnN0cmFpbnQKK1dIRVJFIGNv bnR5cGlkID0ge3tkb2lkfX06Om9pZAorICBBTkQgY29ubmFtZT17eyBuYW1l fHF0TGl0ZXJhbCB9fTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29u c3RyYWludHMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVz L2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM2Njk2 MAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv ZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWlu dHMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMTgg QEAKK1NFTEVDVCAnVEFCTEUnIEFTIG9iamVjdGtpbmQsIGMub2lkLCBjb25u YW1lIGFzIG5hbWUsIHJlbG5hbWUsIG5zcG5hbWUsIGRlc2NyaXB0aW9uLAor ICBwZ19nZXRfZXhwcihjb25iaW4sIGNvbnJlbGlkLCB0cnVlKSBhcyBjb25z cmMKK0ZST00gcGdfY29uc3RyYWludCBjCitKT0lOIHBnX2NsYXNzIGNsIE9O IGNsLm9pZD1jb25yZWxpZAorSk9JTiBwZ19uYW1lc3BhY2UgbmwgT04gbmwu b2lkPXJlbG5hbWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0 aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jLm9pZCBBTkQgZGVzLmNsYXNzb2lk PSdwZ19jb25zdHJhaW50Jzo6cmVnY2xhc3MpCitXSEVSRSBjb250eXBlID0g J2MnIEFORCBjb25yZWxpZCA9ICB7e2RvaWR9fTo6b2lkCitVTklPTgorU0VM RUNUICdET01BSU4nIEFTIG9iamVjdGtpbmQsIGMub2lkLCBjb25uYW1lIGFz IG5hbWUsIHR5cG5hbWUgYXMgcmVsbmFtZSwgbnNwbmFtZSwgZGVzY3JpcHRp b24sCisgICAgICAgcmVnZXhwX3JlcGxhY2UocGdfZ2V0X2NvbnN0cmFpbnRk ZWYoYy5vaWQsIHRydWUpLCBFJ0NIRUNLIFxcKCguKilcXCkuKicsIEUnXFwx JykgYXMgY29uc3JjCisgIEZST00gcGdfY29uc3RyYWludCBjCisgIEpPSU4g cGdfdHlwZSB0IE9OIHQub2lkPWNvbnR5cGlkCisgIEpPSU4gcGdfbmFtZXNw YWNlIG5sIE9OIG5sLm9pZD10eXBuYW1lc3BhY2UKKyAgTEVGVCBPVVRFUiBK T0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD10Lm9pZCBB TkQgZGVzLmNsYXNzb2lkPSdwZ19jb25zdHJhaW50Jzo6cmVnY2xhc3MpCisg V0hFUkUgY29udHlwZSA9ICdjJyBBTkQgY29udHlwaWQgPSAge3tkb2lkfX06 Om9pZAoreyUgaWYgY29pZCAlfQorICBBTkQgYy5vaWQgPSB7eyBjb2lkIH19 Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25z dHJhaW50cy9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21h aW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU3NDQzMAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNv bnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzku MV9wbHVzL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSw0IEBACit7JSBpZiBkYXRh Lm5hbWUgJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRh Lm5zcG5hbWUsIG9fZGF0YS5yZWxuYW1lKSB9fQorICAgIFJFTkFNRSBDT05T VFJBSU5UIHt7IGNvbm58cXRJZGVudChvX2RhdGEubmFtZSkgfX0gVE8ge3sg Y29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBlbmRpZiAlfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3Ry YWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3Bs dXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWlu LWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3Fs LzkuMl9wbHVzL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uOWMyYzVlZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRl cy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwK QEAgLTAsMCArMSw1IEBACit7JSBpZiBkYXRhIGFuZCBzY2hlbWEgYW5kIGRv bWFpbiAlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChzY2hlbWEs IGRvbWFpbikgfX0KKyAgICBBREQgQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRl bnQoZGF0YS5uYW1lKSB9fSBDSEVDSyAoe3sgZGF0YS5jb25zcmMgfX0gKQor ICB7JSBpZiBkYXRhLmNvbnZhbGlkYXRlZCAlfSBOT1QgVkFMSUQgeyUgZW5k aWYgJX0geyUgaWYgZGF0YS5jb25ub2luaGVyaXQgJX0gTk8gSU5IRVJJVCB7 JSBlbmRpZiAlfTsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMv ZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9kZWxldGUuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVt cGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvZGVsZXRl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmE1 YmM0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJh aW50cy9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbApAQCAtMCwwICsxLDQgQEAK K3slIGlmIGRhdGEgJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQo ZGF0YS5uc3BuYW1lLCBkYXRhLnJlbG5hbWUpIH19CisgICAgRFJPUCBDT05T VFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19Cit7JSBlbmRp ZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21h aW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9z cWwvOS4yX3BsdXMvZ2V0X2RvbWFpbi5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNv bnN0cmFpbnRzL3NxbC85LjJfcGx1cy9nZXRfZG9tYWluLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDBjODU0Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4y X3BsdXMvZ2V0X2RvbWFpbi5zcWwKQEAgLTAsMCArMSw3IEBACitTRUxFQ1Qg ZC50eXBuYW1lIGFzIGRvbWFpbiwgYm4ubnNwbmFtZSBhcyBzY2hlbWEKK0ZS T00KKyAgcGdfdHlwZSBkCitKT0lOCisgIHBnX25hbWVzcGFjZSBibiBPTiBi bi5vaWQ9ZC50eXBuYW1lc3BhY2UKK1dIRVJFCisgIGQub2lkID0ge3tkb2lk fX07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFp bi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3Nx bC85LjJfcGx1cy9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3Ry YWludHMvc3FsLzkuMl9wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxM2QwZjIKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50 cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9n ZXRfb2lkLnNxbApAQCAtMCwwICsxLDQgQEAKK1NFTEVDVCBvaWQsIGNvbm5h bWUgYXMgbmFtZQorICBGUk9NIHBnX2NvbnN0cmFpbnQKK1dIRVJFIGNvbnR5 cGlkID0ge3tkb2lkfX06Om9pZAorICBBTkQgY29ubmFtZT17eyBuYW1lfHF0 TGl0ZXJhbCB9fTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3Ry YWludHMvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2Rv bWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvcHJvcGVydGllcy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I1YzlhYwot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9t YWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMv c3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMTggQEAK K1NFTEVDVCAnVEFCTEUnIEFTIG9iamVjdGtpbmQsIGMub2lkLCBjb25uYW1l IGFzIG5hbWUsIHJlbG5hbWUsIG5zcG5hbWUsIGRlc2NyaXB0aW9uLAorICBw Z19nZXRfZXhwcihjb25iaW4sIGNvbnJlbGlkLCB0cnVlKSBhcyBjb25zcmMs IGNvbm5vaW5oZXJpdCwgY29udmFsaWRhdGVkCitGUk9NIHBnX2NvbnN0cmFp bnQgYworSk9JTiBwZ19jbGFzcyBjbCBPTiBjbC5vaWQ9Y29ucmVsaWQKK0pP SU4gcGdfbmFtZXNwYWNlIG5sIE9OIG5sLm9pZD1yZWxuYW1lc3BhY2UKK0xF RlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpv aWQ9Yy5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJl Z2NsYXNzKQorV0hFUkUgY29udHlwZSA9ICdjJyBBTkQgY29ucmVsaWQgPSAg e3tkb2lkfX06Om9pZAorVU5JT04KK1NFTEVDVCAnRE9NQUlOJyBBUyBvYmpl Y3RraW5kLCBjLm9pZCwgY29ubmFtZSBhcyBuYW1lLCB0eXBuYW1lIGFzIHJl bG5hbWUsIG5zcG5hbWUsIGRlc2NyaXB0aW9uLAorICAgICAgIHJlZ2V4cF9y ZXBsYWNlKHBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkLCB0cnVlKSwgRSdD SEVDSyBcXCgoLiopXFwpLionLCBFJ1xcMScpIGFzIGNvbnNyYworLCBjb25u b2luaGVyaXQsIGNvbnZhbGlkYXRlZCAgRlJPTSBwZ19jb25zdHJhaW50IGMK KyAgSk9JTiBwZ190eXBlIHQgT04gdC5vaWQ9Y29udHlwaWQKKyAgSk9JTiBw Z19uYW1lc3BhY2UgbmwgT04gbmwub2lkPXR5cG5hbWVzcGFjZQorICBMRUZU IE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lk PXQub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NvbnN0cmFpbnQnOjpyZWdj bGFzcykKKyBXSEVSRSBjb250eXBlID0gJ2MnIEFORCBjb250eXBpZCA9ICB7 e2RvaWR9fTo6b2lkCit7JSBpZiBjb2lkICV9CisgIEFORCBjLm9pZCA9IHt7 IGNvaWQgfX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9t YWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy91cGRhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxh dGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvdXBkYXRlLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTc0NDMw Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9k b21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50 cy9zcWwvOS4yX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDQgQEAKK3sl IGlmIGRhdGEubmFtZSAlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVu dChvX2RhdGEubnNwbmFtZSwgb19kYXRhLnJlbG5hbWUpIH19CisgICAgUkVO QU1FIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KG9fZGF0YS5uYW1lKSB9 fSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKK3slIGVuZGlm ICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRp Yy9pbWcvY29sbC1kb21haW4ucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9zdGF0aWMvaW1nL2NvbGwtZG9tYWluLnBuZwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi41NTYyMTUyOGExZGJhNDkyODUzOGZlNTU1N2I5Yjk4OGVkNzhk NmFiCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0NjIKemNtZUFTQE4/KG9s SHlgdVZCcSFpYTB2cF4wd0IhNjM/d3lsYEdiS31VNFQhQkUwQkplb3FmVz07 Z0Z7MFBEOF9vCnppJnBOXyhLKUI3YEZQaSUyaXhgQHY5TFUodE5VUSohSzFj elhPeHVnZ29HVF8oI3BAemY0SnchIXpIVilgM0Y3VAp6ZC1VbX1IfWBpUklp amNjQFdxIz4mcHRrUmBTc3pHNTRVejZ6VzRtZz9NTHNnWjlqYmI+RX55IXpU U0I5YFJlMSgKempTMVM5OShfOWhAWUM0YEE1WSleX14+QEozK012SWt8NGll MjhVLWkodHNTITAqfWFJQW5nSWhaWVEodGZRKXVlCno3c244WiVifFVAI2hN Z0VTVXZzNHdLb1N4Tz5+e089LVlxJDhfIXIpLV5lJTQtbDZmLUpveDElOH1G SVZ4PkZDVwp6UE1Wd2x1UUdia1AxYmNTd1ZWMGRfP1BaYlpWaXMlSGVZVFd5 VSokT3ZZcCR1VGMzUUxiRD8ydHJPbkR1aFphPmYKej0zZF97KHpFUjl4dCg8 bjNVc0JJNFNOQz9ZIXJCVzxtMmBuPnlEUnlnJHVvRThReH1ibzFEMHF3O3Qj dSllX2Y7CnpsOWFAZlJJQjhvUjNPRCpXTUY4WllpT2l2VT5JVSNVfWEpI1du IVhqVX18TXhVQD1vdzRuOyQ1ZW9BSXFCfTlYUAplQzBHTVV3VXZQeE04bTEr cD0qRXw3KDhBNVQtR0B5R3l3b1JDQzJMagoKbGl0ZXJhbCAwCkhjbVY/ZDAw MDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9zdGF0 aWMvaW1nL2RvbWFpbi1zbS5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3N0YXRpYy9pbWcvZG9tYWluLXNtLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi43NTIxY2RkZWFhYWYwZWU0ZTNjNjBlOTQ4MDc4ZDcwZTE3ZTA2ODkz CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0MDEKemNtZUFTQE4/KG9sSHlg dVZCcSFpYTB2cF4wd0IhNjM/d3lsYEdiS31UN1haOEUwRGV1OWV1KlY7Z0Z7 MEtgcElnCnpjNktgcjRJZUlBY31RM0h4VmA9M3krQHh1ZFVKcEdrdDJGflBv STUhXjc4QSRDbShMQEpiY1lSPTs0Ym1fbnY+Ygp6e3BrSSo/VDdEI2d5aVN2 S1lSN3tfUzRUZG9feE9nXztYYHxfTjdPayZPaUtnX1FBKX5fZGxMbzg1e3ck aUxvVGUKekZQT3BNKl5NK0hocUomVnZLVUJ2ZlUoPWpZJiMkJCQ8eEkjTUI7 TXFgSUFCcDIwUlQ5d1VYa2FMKDFSKHBPbj9jCno+Mzg8K2U+S2FOMnslMEpk QHNNYlkkKzEzWiYlWjwlIVArKlNOdSsjKHtScj17X0t4VWhzd0hkSUQwUVdU Q0J2RAp6KV5reTtAZ3VgRSNSQUMjbGBKY25lbFMwcnhrS043YjFCPkg1NmdY KTAmUDwqYWc4V1JOaTBkVk4tanpUUVZkMjAKemg2Y0taTSFFKXVBd352UENk TzdLQ2ZXdzNSdDUkWkdnYWtLSDAwKXxXVHNVQEcjRlRkSEdvdUc4Skl5ZG9T R2lHClEyQj85LSk3OCZxb2xgOyswM19xM2dhN35sCgpsaXRlcmFsIDAKSGNt Vj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3N0YXRpYy9pbWcvZG9tYWluLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvc3RhdGljL2ltZy9kb21haW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjQyY2E5MjkzMjU4NTRiOGYzNDc4NzQyNWU4MDk0ZDA4Yzc1OTgzYmMK R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQyNAp6Y21lQVNATj8ob2xIeWB1 VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVBKbUJ7RTBCSmVvcWZXPTtnRnsw UEQ4XjcKemkmczZgYkw4b3hIfWBpUmRIVT8qbGIycn5KXjZUaD1peF4kelRT V1M8P2Y+b0grQ0hVYV59cFZmYGFXdk10N2ZtCnp4JjhGPmpmZH5BWShIRmBt VWlSRz1XOTxzVXdRQkBLUj5AUUxIbyslUFp1QTNJeyl5fiokMURfSm90Rih7 enZIdAp6byV1bGY3KXlmdWYqQm0xLUFEcytJMTQtP2ktRUtVN2B2VSF3Z1dQ WEp6WDNfQnJjYnBlPVhGY0FtU0ZOZUMzcSYKemwhWisoUnNZTjEyJi1OV3tQ Kl4jPHJ4ODJfMi0raWkmU3FmR2dPYEpjakA7MDFASFRIeyYmNyN2P2p9SSk9 SjZtCnplYH5ocHBabjc/V0F8JXohfVQ2cGY+ejBJamJaclM1SUNEKjI3NSpf YkFvKXI4dCNWZzRBKkx6KTt4YzRKS3EwMwp6WFhDfXpkKVl3aVJaQ25XTj5V T19RbXZBVVFoXmtNayU2SXN1QXp+eGZua1Z8ZnQ4N3xtNUdWQWZ2Sl4mZnlH USEKcUlUUWBLYDYtIWNsQEpYRW1TN0RhKW04Pig1RGxsTWhwcXU/VkROUEhi Nk13PCY7JFZPUj1GcXUKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvY3NzL2RvbWFpbnMuY3NzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90 ZW1wbGF0ZXMvZG9tYWlucy9jc3MvZG9tYWlucy5jc3MKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI5ZTc3NgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvY3NzL2RvbWFpbnMuY3NzCkBAIC0wLDAgKzEsOCBAQAorLnBnLWljb24t ZG9tYWluIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCd7eyB1cmxfZm9y KCdOT0RFLWRvbWFpbi5zdGF0aWMnLCBmaWxlbmFtZT0naW1nL2RvbWFpbi5w bmcnKSB9fScpICFpbXBvcnRhbnQ7CisgIGJvcmRlci1yYWRpdXM6IDEwcHg7 CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGFsaWduLWNv bnRlbnQ6IGNlbnRlcjsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKyAg aGVpZ2h0OiAxLjNlbTsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvanMvZG9tYWlucy5qcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvanMvZG9t YWlucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44 OWJiMjFiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9qcy9kb21haW5zLmpzCkBAIC0wLDAg KzEsMjU2IEBACisvKiBDcmVhdGUgYW5kIFJlZ2lzdGVyIERvbWFpbiBDb2xs ZWN0aW9uIGFuZCBEb21haW4gTm9kZS4gKi8KKworZGVmaW5lKAorICAgICAg ICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5n JywgJ3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ2FsZXJ0aWZ5Jywg J3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitmdW5jdGlvbigkLCBf LCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CisKKyAgaWYg KCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZG9tYWluJ10pIHsKKyAgICB2YXIg ZGF0YWJhc2VzID0gcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb2xsLWRvbWFp biddID0KKyAgICAgIHBnQWRtaW4uQnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVu ZCh7CisgICAgICAgIG5vZGU6ICdkb21haW4nLAorICAgICAgICBsYWJlbDog J3t7IF8oJ0RvbWFpbnMnKSB9fScsCisgICAgICAgIHR5cGU6ICdjb2xsLWRv bWFpbicKKyAgICAgIH0pOworICB9OworCisgIHZhciBTZWN1cml0eU1vZGVs ID0gQmFja2Zvcm0uU2VjdXJpdHlNb2RlbCA9IHBnQWRtaW4uQnJvd3Nlci5O b2RlLk1vZGVsLmV4dGVuZCh7CisgICAgZGVmYXVsdHM6IHsKKyAgICAgIHBy b3ZpZGVyOiBudWxsLAorICAgICAgc2VjdXJpdHlfbGFiZWw6IG51bGwKKyAg ICB9LAorICAgIHNjaGVtYTogW3sKKyAgICAgIGlkOiAncHJvdmlkZXInLCBs YWJlbDogJ3t7IF8oJ1Byb3ZpZGVyJykgfX0nLAorICAgICAgdHlwZTogJ3Rl eHQnCisgICAgfSx7CisgICAgICBpZDogJ3NlY3VyaXR5X2xhYmVsJywgbGFi ZWw6ICd7eyBfKCdTZWN1cml0eSBMYWJlbCcpIH19JywKKyAgICAgIHR5cGU6 ICd0ZXh0JworICAgIH1dLAorICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsK KyAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICBlcnJtc2cgPSBudWxs LAorICAgICAgICAgIGRhdGEgPSB0aGlzLnRvSlNPTigpOworCisgICAgICBp ZiAoXy5pc1VuZGVmaW5lZChkYXRhLmxhYmVsKSB8fAorICAgICAgICBfLmlz TnVsbChkYXRhLmxhYmVsKSB8fAorICAgICAgICBTdHJpbmcoZGF0YS5sYWJl bCkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAg ICByZXR1cm4gXygiUGxlYXNlIHNwZWNpZnkgdGhlIHZhbHVlIGZvciBhbGwg dGhlIHNlY3VyaXR5IHByb3ZpZGVycy4iKTsKKyAgICAgIH0KKyAgICAgIHJl dHVybiBudWxsOworICAgIH0KKyAgfSk7CisKKyAgdmFyIENvbnN0cmFpbnRz TW9kZWwgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewor ICAgIGlkQXR0cmlidXRlOiAnY29ubmFtZScsCisgICAgZGVmYXVsdHM6IHsK KyAgICAgIGNvbm5hbWU6IHVuZGVmaW5lZCwKKyAgICAgIGRlc2NyaXB0aW9u OiB1bmRlZmluZWQsCisgICAgICBjb25zcmM6IHVuZGVmaW5lZCwKKyAgICAg IGNvbm5vaW5oZXJpdDogdW5kZWZpbmVkLAorICAgICAgY29udmFsaWRhdGVk OiB1bmRlZmluZWQKKyAgICB9LAorICAgIHNjaGVtYTogWworICAgICAge2lk OiAnY29ubmFtZScsIGxhYmVsOidOYW1lJywgdHlwZTondGV4dCcsIGNlbGw6 J3N0cmluZyd9LAorICAgICAge2lkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDon Q29tbWVudCcsIHR5cGU6ICdtdWx0aWxpbmUnLCBjZWxsOiAnc3RyaW5nJ30s CisgICAgICB7aWQ6ICdjb25zcmMnLCBsYWJlbDonQ2hlY2snLCB0eXBlOiAn bXVsdGlsaW5lJywgY2VsOiAnc3RyaW5nJywgZ3JvdXA6ICdkZWZpbml0aW9u J30sCisgICAgICB7aWQ6ICdjb25ub2luaGVyaXQnLCBsYWJlbDonTm8gSW5o ZXJpdCcsIHR5cGU6ICdzd2l0Y2gnLCBjZWxsOiAnYm9vbGVhbicsIGdyb3Vw OiAnZGVmaW5pdGlvbid9LAorICAgICAge2lkOiAnY29udmFsaWRhdGVkJywg bGFiZWw6IkRvbid0IFZhbGlkYXRlIiwgdHlwZTogJ3N3aXRjaCcsIGNlbGw6 ICdib29sZWFuJywgZ3JvdXA6ICdkZWZpbml0aW9uJ30KKyAgICBdLAorICAg IHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKKyAgICAgIC8vIFRPRE86IEFkZCB2 YWxpZGF0aW9uIGhlcmUKKyAgICB9LAorICAgIHRvSlNPTjogQmFja2JvbmUu TW9kZWwucHJvdG90eXBlLnRvSlNPTgorICB9KTsKKworCisgIGlmICghcGdC cm93c2VyLk5vZGVzWydkb21haW4nXSkgeworICAgIHBnQWRtaW4uQnJvd3Nl ci5Ob2Rlc1snZG9tYWluJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoewor ICAgICAgdHlwZTogJ2RvbWFpbicsCisgICAgICBsYWJlbDogJ3t7IF8oJ0Rv bWFpbicpIH19JywKKyAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtZG9t YWluJywKKyAgICAgIGhhc1NRTDogdHJ1ZSwKKyAgICAgIHBhcmVudF90eXBl OiBbJ3NjaGVtYSddLAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CisgICAg ICAgIC8qIEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cyAq LworICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAgICAg IHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsK KworICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFt7CisgICAgICAgICAg bmFtZTogJ2NyZWF0ZV9kb21haW5fb25fY29sbCcsIG5vZGU6ICdjb2xsLWRv bWFpbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29i amVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVy dGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0 eTogNCwgbGFiZWw6ICd7eyBfKCdEb21haW4uLi4nKSB9fScsCisgICAgICAg ICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWRvbWFpbicsIGRhdGE6IHthY3Rp b246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxl OiAnY2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAn Y3JlYXRlX2RvbWFpbicsIG5vZGU6ICdkb21haW4nLCBtb2R1bGU6IHRoaXMs CisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBj YWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNh dGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygn RG9tYWluLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24g aWNvbi1kb21haW4nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6 IHRydWV9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAg ICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9kb21haW4nLCBub2Rl OiAnc2NoZW1hJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6 IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9w cm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHBy aW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0RvbWFpbi4uLicpIH19JywKKyAg ICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZG9tYWluJywgZGF0YTog e2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiBmYWxzZX0sCisgICAgICAgICAg ZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9CisgICAgICAgIF0pOwor CisgICAgICB9LAorICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVzWydz Y2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBjYW5Ecm9wQ2FzY2FkZTog cGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAg ICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsK KyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1bmRlZmlu ZWQsCisgICAgICAgICAgb2lkOiB1bmRlZmluZWQsCisgICAgICAgICAgb3du ZXI6IHVuZGVmaW5lZCwKKyAgICAgICAgICBiYXNlbnNwOiB1bmRlZmluZWQs CisgICAgICAgICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCwKKyAgICAgICAg ICBiYXNldHlwZTogdW5kZWZpbmVkLAorICAgICAgICAgIHR5cGxlbjogdW5k ZWZpbmVkLAorICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLAorICAg ICAgICAgIHR5cGRlZmF1bHQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICB0eXBu b3RudWxsOiB1bmRlZmluZWQsCisgICAgICAgICAgY29sbG5hbWU6IHVuZGVm aW5lZCwKKyAgICAgICAgICBjb25zdHJhaW50czogW10sCisgICAgICAgICAg c2VjbGFiZWxzOiBbXQorICAgICAgICB9LAorICAgICAgICBzY2hlbWE6IFt7 CisgICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6ICd7eyBfKCdOYW1lJykg fX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcs IG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6J3t7IF8oJ09p ZCcpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3Rl eHQnICwgbW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdvd25lcicsIGxhYmVsOid7eyBfKCdPd25lcicpIH19Jywg Y2VsbDogJ3N0cmluZycsIGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVMaXN0QnlO YW1lQ29udHJvbCwKKyAgICAgICAgICBub2RlOiAncm9sZScsICB0eXBlOiAn dGV4dCcsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnLCAncHJvcGVydGllcydd CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnYmFzZW5zcCcsIGxhYmVs Oid7eyBfKCdTY2hlbWEnKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBjb250cm9s OiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0 JywgdXJsOiAnZ2V0X3NjaGVtYXMnCisgICAgICAgIH0seworICAgICAgICAg IGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDone3sgXygnQ29tbWVudCcpIH19 JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ211bHRpbGlu ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdiYXNldHlwZScsIGxh YmVsOid7eyBfKCdCYXNlIFR5cGUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBj b250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAgIHR5cGU6 ICd0ZXh0JywgbW9kZTpbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQn XSwgZ3JvdXA6ICdEZWZpbml0aW9uJywgdXJsOiAnZ2V0X3R5cGVzJywKKyAg ICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeyByZXR1cm4gIW0uaXNO ZXcoKTsgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3R5cGxlbics IGxhYmVsOid7eyBfKCdMZW5ndGgnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAor ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdEZWZpbml0aW9uJywg ZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH0K KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdwcmVjaXNpb24nLCBsYWJl bDone3sgXygnUHJlY2lzaW9uJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAg ICAgICAgICB0eXBlOiAndGV4dCcsIGdyb3VwOiAnRGVmaW5pdGlvbicsIGRp c2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVybiAhbS5pc05ldygpOyB9Cisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAndHlwZGVmYXVsdCcsIGxhYmVs Oid7eyBfKCdEZWZhdWx0JykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAg ICAgICB0eXBlOiAndGV4dCcsIGdyb3VwOiAnRGVmaW5pdGlvbicKKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICd0eXBub3RudWxsJywgbGFiZWw6J3t7 IF8oJ05vdCBOdWxsJykgfX0nLCBjZWxsOiAnYm9vbGVhbicsCisgICAgICAg ICAgdHlwZTogJ3N3aXRjaCcsIGdyb3VwOiAnRGVmaW5pdGlvbicKKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdjb2xsbmFtZScsIGxhYmVsOid7eyBf KCdDb2xsYXRpb24nKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBjb250cm9sOiAn bm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0Jywg Z3JvdXA6ICdEZWZpbml0aW9uJywgdXJsOiAnZ2V0X2NvbGxhdGlvbnMnLCBk aXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuICFt LmlzTmV3KCk7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ2NvbnN0cmFpbnRzJywgbGFiZWw6J3t7IF8oJ0NvbnN0cmFpbnRz JykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAnY29s bGVjdGlvbicsIGdyb3VwOiAnQ29uc3RyYWludHMnLCB2aXNpYmxlOiBmYWxz ZSwgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1vZGVs OiBDb25zdHJhaW50c01vZGVsLCBjYW5BZGQ6IHRydWUsIGNhbkRlbGV0ZTog dHJ1ZSwgY2FuRWRpdDogZnVuY3Rpb24obykgeworICAgICAgICAgICAgaWYg KG8gaW5zdGFuY2VvZiBCYWNrYm9uZS5Nb2RlbCkgeworICAgICAgICAgICAg ICBpZiAobyBpbnN0YW5jZW9mIENvbnN0cmFpbnRzTW9kZWwpIHsKKyAgICAg ICAgICAgICAgICByZXR1cm4gby5pc05ldygpOworICAgICAgICAgICAgICB9 CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICB9CisgICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3NlY2xh YmVscycsIGxhYmVsOiAne3sgXygnU2VjdXJpdHkgTGFiZWxzJykgfX0nLAor ICAgICAgICAgIG1vZGVsOiBTZWN1cml0eU1vZGVsLCB0eXBlOiAnY29sbGVj dGlvbicsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdTZWN1cml0eScpIH19 JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1pbl92 ZXJzaW9uOiA5MDEwMCwgY2FuQWRkOiB0cnVlLAorICAgICAgICAgIGNhbkVk aXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZQorICAgICAgICB9CisgICAgICAg IF0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpCisgICAgICAgIHsK KyAgICAgICAgICB2YXIgZXJyID0ge30sCisgICAgICAgICAgICAgIGVycm1z ZywKKyAgICAgICAgICAgICAgc2VjbGFiZWxzID0gdGhpcy5nZXQoJ3NlY2xh YmVscycpOworCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5n ZXQoJ25hbWUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCduYW1lJykpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIGVy clsnbmFtZSddID0gJ3t7IF8oJ05hbWUgY2FuIG5vdCBiZSBlbXB0eSEnKSB9 fSc7CisgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWyduYW1l J107CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQodGhpcy5nZXQoJ2Jhc2V0eXBlJykpIHx8IFN0cmluZyh0aGlzLmdldCgn YmFzZXR5cGUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykg eworICAgICAgICAgICAgZXJyWydiYXNldHlwZSddID0gJ3t7IF8oJ0Jhc2Ug VHlwZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgICAgIGVy cm1zZyA9IGVycm1zZyB8fCBlcnJbJ2Jhc2V0eXBlJ107CisgICAgICAgICAg fQorCisgICAgICAgICAgaWYgKHNlY2xhYmVscykgeworICAgICAgICAgICAg dmFyIHNlY0xhYmVsc0VycjsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAw OyBpIDwgc2VjbGFiZWxzLm1vZGVscy5sZW5ndGggJiYgIXNlY0xhYmVsc0Vy cjsgaSsrKSB7CisgICAgICAgICAgICAgIHNlY0xhYmVsc0VyciA9IChzZWNs YWJlbHMubW9kZWxzW2ldKS52YWxpZGF0ZS5hcHBseShzZWNsYWJlbHMubW9k ZWxzW2ldKTsKKyAgICAgICAgICAgICAgaWYgKHNlY0xhYmVsc0Vycikgewor ICAgICAgICAgICAgICAgIGVyclsnc2VjbGFiZWxzJ10gPSBzZWNMYWJlbHNF cnI7CisgICAgICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IHNlY0xh YmVsc0VycjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg ICAgICAgIH0KKworICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigp LnNldChlcnIpOworCisgICAgICAgICAgaWYgKF8uc2l6ZShlcnIpKSB7Cisg ICAgICAgICAgICB0aGlzLnRyaWdnZXIoJ29uLXN0YXR1cycsIHttc2c6IGVy cm1zZ30pOworICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICAgICAg ICB9CisKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAg ICAgfSksCisgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBp dGVtLCBkYXRhKSB7CisgICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhl biAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAgaWYgKGRh dGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKKyAgICAgICAgICByZXR1cm4g dHJ1ZTsKKworICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0g aXRlbSwgZCA9IGl0ZW1EYXRhOworICAgICAgICAvLyBUbyBpdGVyYXRlIG92 ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQorICAgICAgICB3aGlsZSAo aSkgeworICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93 IHVzZXIgdG8gY3JlYXRlIGRvbWFpbgorICAgICAgICAgIGlmIChfLmluZGV4 T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKKyAgICAgICAgICAgIHJl dHVybiB0cnVlOworCisgICAgICAgICAgaWYgKCdjb2xsLWRvbWFpbicgPT0g ZC5fdHlwZSkgeworICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90 IGNoaWxkIG9mIGNhdGFsb2cKKyAgICAgICAgICAgIHByZXZfaSA9IHQuaGFz UGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOworICAgICAgICAgICAg cHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsK KyAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7 CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBpID0gdC5oYXNQYXJlbnQo aSkgPyB0LnBhcmVudChpKSA6IG51bGw7CisgICAgICAgICAgZCA9IGkgPyB0 Lml0ZW1EYXRhKGkpIDogbnVsbDsKKyAgICAgICAgfQorICAgICAgICAvLyBi eSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51 CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfSwKKyAgICAgIGlzRGlz YWJsZWQ6IGZ1bmN0aW9uKG0peworICAgICAgICAgIGNvbnNvbGUubG9nKCJo ZWUiKTsKKyAgICAgICAgICBjb25zb2xlLmxvZyhtLmlzTmV3KCkpOworICAg ICAgICAgIGlmICghbS5pc05ldygpKSB7CisgICAgICAgICAgICB2YXIgc2Vy dmVyID0gdGhpcy5ub2RlX2luZm8uc2VydmVyOworICAgICAgICAgICAgaWYg KHNlcnZlci52ZXJzaW9uIDwgOTAyMDApCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg fSk7CisKKyAgfQorCisgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2RvbWFp biddOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9iYWNrZW5kX3N1cHBv cnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9t YWlucy9zcWwvOS4xX3BsdXMvYmFja2VuZF9zdXBwb3J0LnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTI1MGFiCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9zcWwvOS4xX3BsdXMvYmFja2VuZF9zdXBwb3J0LnNxbApAQCAt MCwwICsxLDIwIEBACitTRUxFQ1QKKyAgQ0FTRSBXSEVOIG5zcC5uc3BuYW1l IElOICgnc3lzJywgJ2RibycsICdpbmZvcm1hdGlvbl9zY2hlbWEnKSBUSEVO IHRydWUgRUxTRSBmYWxzZSBFTkQgQVMgZGJTdXBwb3J0CitGUk9NCisgIHBn X25hbWVzcGFjZSBuc3AKK1dIRVJFCisgIG5zcC5vaWQ9e3tzY2lkfX06Omlu dAorICBBTkQgKAorICAgIChuc3BuYW1lID0gJ3BnX2NhdGFsb2cnIEFORCBF WElTVFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNF TEVDVCAxIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdwZ19jbGFz cycgQU5EIHJlbG5hbWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkpCisgICAg T1IgKG5zcG5hbWUgPSAncGdhZ2VudCcgQU5EIEVYSVNUUworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19j bGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnYV9qb2InIEFORCByZWxuYW1lc3Bh Y2UgPSBuc3Aub2lkIExJTUlUIDEpKQorICAgIE9SIChuc3BuYW1lID0gJ2lu Zm9ybWF0aW9uX3NjaGVtYScgQU5EIEVYSVNUUworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBX SEVSRSByZWxuYW1lID0gJ3RhYmxlcycgQU5EIHJlbG5hbWVzcGFjZSA9IG5z cC5vaWQgTElNSVQgMSkpCisgICAgT1IgKG5zcG5hbWUgTElLRSAnXyUnIEFO RCBFWElTVFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KFNFTEVDVCAxIEZST00gcGdfcHJvYyBXSEVSRSBwcm9uYW1lPSdzbG9ueXZl cnNpb24nIEFORCBwcm9uYW1lc3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKQor ICAgICkKKyAgQU5ECisgICBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXHRlbXBc XCUnCisgIEFORAorICAgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFx0b2FzdF90 ZW1wXFwlJwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90 ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzku MV9wbHVzL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMDZkYWViOQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVz L2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwzOCBAQAoreyUgaW1wb3J0ICdtYWNy b3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaWYgZGF0 YSAlfQorQ1JFQVRFIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNl bnNwLCBkYXRhLm5hbWUpIH19CisgICAgQVMge3sgY29ubnxxdFR5cGVJZGVu dChkYXRhLmJhc2V0eXBlKSB9fQoreyUgaWYgZGF0YS5jb2xsbmFtZSAlfQor ICAgIENPTExBVEUge3sgZGF0YS5jb2xsbmFtZSBhbmQgZGF0YS5jb2xsbmFt ZSAhPSAicGdfY2F0YWxvZy5cImRlZmF1bHRcIiIgfX0KK3slIGVuZGlmICV9 Cit7JSBpZiBkYXRhLnR5cGRlZmF1bHQgJX0KKyAgICBERUZBVUxUIHt7IGRh dGEudHlwZGVmYXVsdCB9fQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGEudHlw bm90bnVsbCA9PSAndHJ1ZScgJX0KKyAgICBOT1QgTlVMTAoreyUgZW5kaWYg JX07CisKK3slIGlmIGRhdGEuY29uc3RyYWludHMgJX0KK3slIGZvciBjIGlu IGRhdGEuY29uc3RyYWludHMgJX0KK3slIGlmIGMuY29ubmFtZSBhbmQgYy5j b25zcmMgJX1BTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KGRhdGEuYmFz ZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIEFERCBDT05TVFJBSU5UIHt7IGNv bm58cXRJZGVudChjLmNvbm5hbWUpIH19IENIRUNLICh7eyBjLmNvbnNyYyB9 fSApOworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0K KworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3As IGRhdGEubmFtZSkgfX0gT1dORVIgVE8ge3sgY29ubnxxdElkZW50KGRhdGEu b3duZXIpIH19OworCit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01N RU5UIE9OIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBk YXRhLm5hbWUpIH19CisgICAgSVMgJ3t7IGRhdGEuZGVzY3JpcHRpb24gfX0n OworeyUgZW5kaWYgJX0KKworeyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0KK3sl IGZvciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiByLnNlY3VyaXR5 X2xhYmVsIGFuZCByLnByb3ZpZGVyICV9Cit7eyBTRUNMQUJMRS5BUFBMWShj b25uLCAnRE9NQUlOJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3Vy aXR5X2xhYmVsKSB9fQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUg ZW5kaWYgJX0KKworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVz L2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRl cy9kb21haW5zL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzN2RiMTEKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21h aW5zL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsCkBAIC0wLDAgKzEsMTUgQEAK K3slIGlmIHNjaWQgYW5kIGRvaWQgJX0KK1NFTEVDVAorICBkLnR5cG5hbWUg YXMgbmFtZSwgYm4ubnNwbmFtZSBhcyBiYXNlbnNwCitGUk9NCisgIHBnX3R5 cGUgZAorSk9JTgorICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQudHlw bmFtZXNwYWNlCitXSEVSRQorICBkLnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19 OjpvaWQKKyAgQU5EIGQub2lkPXt7ZG9pZH19OjppbnQ7Cit7JSBlbmRpZiAl fQorCit7JSBpZiBuYW1lICV9CitEUk9QIERPTUFJTiB7eyBjb25ufHF0SWRl bnQoYmFzZW5zcCwgbmFtZSkgfX17JSBpZiBjYXNjYWRlJX0gQ0FTQ0FERXsl IGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMv Z2V0X2NvbGxhdGlvbnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90 ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlvbnMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNDkw ZjUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfY29sbGF0aW9u cy5zcWwKQEAgLTAsMCArMSw3IEBACitTRUxFQ1QgLS1uc3BuYW1lLCBjb2xs bmFtZSwKKyAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5EIGxl bmd0aChjb2xsbmFtZSkgPiAwIFRIRU4KKyAgY29uY2F0KG5zcG5hbWUsICcu IicsIGNvbGxuYW1lLCciJykKKyAgRUxTRSAnJyBFTkQgQVMgY29weV9jb2xs YXRpb24KK0ZST00gcGdfY29sbGF0aW9uIGMsIHBnX25hbWVzcGFjZSBuCitX SEVSRSBjLmNvbGxuYW1lc3BhY2U9bi5vaWQKK09SREVSIEJZIG5zcG5hbWUs IGNvbGxuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X2NvbnN0cmFp bnRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2Rv bWFpbnMvc3FsLzkuMV9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcxZmYwOAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVz L2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKQEAg LTAsMCArMSwxOCBAQAorU0VMRUNUCisgICdUQUJMRScgQVMgb2JqZWN0a2lu ZCwgYy5vaWQsIGNvbm5hbWUsIHJlbG5hbWUsIG5zcG5hbWUsIGRlc2NyaXB0 aW9uLAorICBwZ19nZXRfZXhwcihjb25iaW4sIGNvbnJlbGlkLCB0cnVlKSBh cyBjb25zcmMKK0ZST00gcGdfY29uc3RyYWludCBjCitKT0lOIHBnX2NsYXNz IGNsIE9OIGNsLm9pZD1jb25yZWxpZAorSk9JTiBwZ19uYW1lc3BhY2Ugbmwg T04gbmwub2lkPXJlbG5hbWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBnX2Rl c2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jLm9pZCBBTkQgZGVzLmNs YXNzb2lkPSdwZ19jb25zdHJhaW50Jzo6cmVnY2xhc3MpCitXSEVSRSBjb250 eXBlID0gJ2MnIEFORCBjb25yZWxpZCA9ICB7e2RvaWR9fTo6b2lkCitVTklP TgorU0VMRUNUCisgICdET01BSU4nIEFTIG9iamVjdGtpbmQsIGMub2lkLCBj b25uYW1lLCB0eXBuYW1lIGFzIHJlbG5hbWUsIG5zcG5hbWUsIGRlc2NyaXB0 aW9uLAorICByZWdleHBfcmVwbGFjZShwZ19nZXRfY29uc3RyYWludGRlZihj Lm9pZCwgdHJ1ZSksIEUnQ0hFQ0sgXFwoKC4qKVxcKS4qJywgRSdcXDEnKSBh cyBjb25zCitGUk9NIHBnX2NvbnN0cmFpbnQgYworSk9JTiBwZ190eXBlIHQg T04gdC5vaWQ9Y29udHlwaWQKK0pPSU4gcGdfbmFtZXNwYWNlIG5sIE9OIG5s Lm9pZD10eXBuYW1lc3BhY2UKK0xFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlw dGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9dC5vaWQgQU5EIGRlcy5jbGFzc29p ZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQorV0hFUkUgY29udHlwZSA9 ICdjJyBBTkQgY29udHlwaWQgPSAge3tkb2lkfX06Om9pZAorT1JERVIgQlkg Y29ubmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv dGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4xX3BsdXMvZ2V0X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uODI4ZTM1ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9w bHVzL2dldF9vaWQuc3FsCkBAIC0wLDAgKzEsOSBAQAorU0VMRUNUCisgIGQu b2lkLCBkLnR5cG5hbWUgYXMgbmFtZQorRlJPTQorICBwZ190eXBlIGQKK0pP SU4KKyAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1kLnR5cG5hbWVzcGFj ZQorV0hFUkUKKyAgYm4ubnNwbmFtZSA9IHt7IGJhc2Vuc3B8cXRMaXRlcmFs IH19CisgIEFORCBkLnR5cG5hbWU9e3sgbmFtZXxxdExpdGVyYWwgfX07CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjFfcGx1cy9nZXRfc2NoZW1hcy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1 cy9nZXRfc2NoZW1hcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMzg2YzgwMwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVz L2dldF9zY2hlbWFzLnNxbApAQCAtMCwwICsxLDIxIEBACitTRUxFQ1QKKyAg bnNwLm5zcG5hbWUKK0ZST00KKyAgcGdfbmFtZXNwYWNlIG5zcAorICBMRUZU IE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lk PW5zcC5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfbmFtZXNwYWNlJzo6cmVn Y2xhc3MpCisgIExFRlQgT1VURVIgSk9JTiBwZ19jYXRhbG9nLnBnX2RlZmF1 bHRfYWNsIGRhY2wgT04gKGRhY2wuZGVmYWNsbmFtZXNwYWNlID0gbnNwLm9p ZCkKK1dIRVJFCisgIE5PVCAoKG5zcG5hbWUgPSAncGdfY2F0YWxvZycgQU5E IEVYSVNUUworICAgIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJl bG5hbWUgPSAncGdfY2xhc3MnIEFORCByZWxuYW1lc3BhY2UgPSBuc3Aub2lk IExJTUlUIDEpKSBPUgorICAobnNwbmFtZSA9ICdwZ2FnZW50JyBBTkQgRVhJ U1RTCisgICAgKFNFTEVDVCAxIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFt ZSA9ICdwZ2Ffam9iJyBBTkQgcmVsbmFtZXNwYWNlID0gbnNwLm9pZCBMSU1J VCAxKSkgT1IKKyAgKG5zcG5hbWUgPSAnaW5mb3JtYXRpb25fc2NoZW1hJyBB TkQgRVhJU1RTCisgICAgKFNFTEVDVCAxIEZST00gcGdfY2xhc3MgV0hFUkUg cmVsbmFtZSA9ICd0YWJsZXMnIEFORCByZWxuYW1lc3BhY2UgPSBuc3Aub2lk IExJTUlUIDEpKSBPUgorICAobnNwbmFtZSBMSUtFICdfJScgQU5EIEVYSVNU UworICAgICAgKFNFTEVDVCAxIEZST00gcGdfcHJvYyBXSEVSRSBwcm9uYW1l PSdzbG9ueXZlcnNpb24nIEFORCBwcm9uYW1lc3BhY2UgPSBuc3Aub2lkIExJ TUlUIDEpKQorICApQU5ECisgIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcdGVt cFxcJScgQU5ECisgIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcdG9hc3RfdGVt cFxcJScgQU5ECisgIC0tIEFEREVEOiBCZWNhdXNlIFdlIG5lZWQgdG8gb21p dCBzeXN0ZW0gc2NoZW1hIGV4Y2VwdCB0aGUgb25lIG9uIHdoaWNoIHdlIGFy ZSB0cnlpbmcgdG8gIGNyZWF0ZSBjb2xsYXRpb24KKyAgKCBuc3Aub2lkID0g e3sgc2NpZCB9fSBPUiBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXF8lJyApCitP UkRFUiBCWSBuc3BuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X3R5 cGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2Rv bWFpbnMvc3FsLzkuMV9wbHVzL2dldF90eXBlcy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVjZWZkNwotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMV9wbHVzL2dldF90eXBlcy5zcWwKQEAgLTAsMCArMSw5IEBA CitTRUxFQ1QgKiBGUk9NCisoU0VMRUNUIGZvcm1hdF90eXBlKHQub2lkLE5V TEwpIEFTIHR5cG5hbWUsIENBU0UgV0hFTiB0eXBlbGVtID4gMCBUSEVOIHR5 cGVsZW0gRUxTRSB0Lm9pZCBFTkQgYXMgZWxlbW9pZCwgdHlwbGVuLCB0eXB0 eXBlLCB0Lm9pZCwgbnNwbmFtZSwKKyhTRUxFQ1QgQ09VTlQoMSkgRlJPTSBw Z190eXBlIHQyIFdIRVJFIHQyLnR5cG5hbWUgPSB0LnR5cG5hbWUpID4gMSBB UyBpc2R1cAorRlJPTSBwZ190eXBlIHQKK0pPSU4gcGdfbmFtZXNwYWNlIG5z cCBPTiB0eXBuYW1lc3BhY2U9bnNwLm9pZAorV0hFUkUgKE5PVCAodHlwbmFt ZSA9ICd1bmtub3duJyBBTkQgbnNwbmFtZSA9ICdwZ19jYXRhbG9nJykpIEFO RCB0eXBpc2RlZmluZWQgQU5EIHR5cHR5cGUgSU4gKCdiJywgJ2MnLCAnZScs ICdyJylBTkQgTk9UIEVYSVNUUworKHNlbGVjdCAxIGZyb20gcGdfY2xhc3Mg d2hlcmUgcmVsbmFtZXNwYWNlPXR5cG5hbWVzcGFjZSBhbmQgcmVsbmFtZSA9 IHR5cG5hbWUgYW5kIHJlbGtpbmQgIT0gJ2MnKSBBTkQgKHR5cG5hbWUgbm90 IGxpa2UgJ18lJyBPUiBOT1QgRVhJU1RTCisoc2VsZWN0IDEgZnJvbSBwZ19j bGFzcyB3aGVyZSByZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNlIGFuZCByZWxu YW1lID0gc3Vic3RyaW5nKHR5cG5hbWUgZnJvbSAyKTo6bmFtZSBhbmQgcmVs a2luZCAhPSAnYycpKQorKSBBUyBkdW1teSBPUkRFUiBCWSBuc3BuYW1lIDw+ ICdwZ19jYXRhbG9nJywgbnNwbmFtZSA8PiAncHVibGljJywgbnNwbmFtZSwg MQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0 ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFf cGx1cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5lOGI3MWE1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3Bs dXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwxOSBAQAorU0VMRUNUIGQu b2lkLCBkLnR5cG5hbWUgYXMgbmFtZSwgZC50eXBiYXNldHlwZSwgZm9ybWF0 X3R5cGUoYi5vaWQsTlVMTCkgYXMgYmFzZXR5cGUsIHBnX2dldF91c2VyYnlp ZChkLnR5cG93bmVyKSBhcyBvd25lciwKKyAgYy5vaWQgQVMgY29sbG9pZCwK KyAgQ0FTRSBXSEVOIGxlbmd0aChjbi5uc3BuYW1lKSA+IDAgQU5EIGxlbmd0 aChjLmNvbGxuYW1lKSA+IDAgVEhFTgorICBjb25jYXQoY24ubnNwbmFtZSwg Jy4iJywgYy5jb2xsbmFtZSwnIicpCisgIEVMU0UgJycgRU5EIEFTIGNvbGxu YW1lLAorICBkLnR5cGxlbiwgZC50eXB0eXBtb2QsIGQudHlwbm90bnVsbCwg ZC50eXBkZWZhdWx0LCBkLnR5cG5kaW1zLCBkLnR5cGRlbGltLCBibi5uc3Bu YW1lIGFzIGJhc2Vuc3AsCisgIGRlc2NyaXB0aW9uLCAoU0VMRUNUIENPVU5U KDEpIEZST00gcGdfdHlwZSB0MiBXSEVSRSB0Mi50eXBuYW1lPWQudHlwbmFt ZSkgPiAxIEFTIGRvbWlzZHVwLAorICAoU0VMRUNUIENPVU5UKDEpIEZST00g cGdfdHlwZSB0MyBXSEVSRSB0My50eXBuYW1lPWIudHlwbmFtZSkgPiAxIEFT IGJhc2Vpc2R1cAorRlJPTSBwZ190eXBlIGQKKyAgSk9JTiBwZ190eXBlIGIg T04gYi5vaWQgPSBkLnR5cGJhc2V0eXBlCisgIEpPSU4gcGdfbmFtZXNwYWNl IGJuIE9OIGJuLm9pZD1kLnR5cG5hbWVzcGFjZQorICBMRUZUIE9VVEVSIEpP SU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPWQub2lkIEFO RCBkZXMuY2xhc3NvaWQ9J3BnX3R5cGUnOjpyZWdjbGFzcykKKyAgTEVGVCBP VVRFUiBKT0lOIHBnX2NvbGxhdGlvbiBjIE9OIGQudHlwY29sbGF0aW9uPWMu b2lkCisgIExFRlQgT1VURVIgSk9JTiBwZ19uYW1lc3BhY2UgY24gT04gYy5j b2xsbmFtZXNwYWNlPWNuLm9pZAorV0hFUkUgZC50eXBuYW1lc3BhY2UgPSB7 e3NjaWR9fTo6b2lkCit7JSBpZiBkb2lkICV9CisgIEFORCBkLm9pZD17e2Rv aWR9fTo6aW50Cit7JSBlbmRpZiAlfQorT1JERVIgQlkgZC50eXBuYW1lOwpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL3Vw ZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NjAyYjJiZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL3VwZGF0ZS5z cWwKQEAgLTAsMCArMSw3MSBAQAoreyUgaWYgZGF0YSAlfQoreyUgc2V0IG5h bWUgPSBvX2RhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICV9Cit7JSBp ZiBkYXRhLm5hbWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIFRZUEUge3sg Y29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBvX2RhdGEubmFtZSkgfX0K KyAgICBSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07 Cit7JSBzZXQgbmFtZSA9IGRhdGEubmFtZSAlfQoreyUgZW5kaWYgJX0KK3sl IGVuZGlmICV9CisKK3slIGlmIGRhdGEudHlwbm90bnVsbCBhbmQgbm90IG9f ZGF0YS50eXBub3RudWxsICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElk ZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBOT1QgTlVM TDsKK3slIGVsaWYgbm90IGRhdGEudHlwbm90bnVsbCBhbmQgb19kYXRhLnR5 cG5vdG51bGwlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2Rh dGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIE5PVCBOVUxMOworeyUg ZW5kaWYgJX0KKworeyUgaWYgZGF0YS50eXBkZWZhdWx0ICV9CitBTFRFUiBE T01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9 fQorICAgIFNFVCBERUZBVUxUIHt7IGRhdGEudHlwZGVmYXVsdHxxdExpdGVy YWwgfX07Cit7JSBlbGlmIG5vdCBkYXRhLnR5cGRlZmF1bHQgYW5kIG9fZGF0 YS50eXBkZWZhdWx0ICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERST1AgREVGQVVMVDsK K3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLm93bmVyICV9CitBTFRFUiBET01B SU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQor ICAgIE9XTkVSIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm93bmVyKSB9fTsK K3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEuY29uc3RyYWludHMgJX0KK3sl IGZvciBjIGluIGRhdGEuY29uc3RyYWludHMuZGVsZXRlZCAlfQorQUxURVIg RE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkg fX0KKyAgICBEUk9QIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGMuY29u bmFtZSkgfX0KK3slIGVuZGZvciAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb25z dHJhaW50cy5hZGRlZCAlfQoreyUgaWYgYy5jb25uYW1lIGFuZCBjLmNvbnNy YyAlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgbmFtZSkgfX0KKyAgICBBREQgQ09OU1RSQUlOVCB7eyBjb25ufHF0 SWRlbnQoYy5jb25uYW1lKSB9fSBDSEVDSyAoe3sgYy5jb25zcmMgfX0gKTsK K3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQorCit7 JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmICdk ZWxldGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5kZWxldGVkfGxl bmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5kZWxldGVkICV9 Cit7eyBTRUNMQUJMRS5EUk9QKGNvbm4sICdET01BSU4nLCBjb25ufHF0SWRl bnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpLCByLnByb3ZpZGVyKSB9fQoreyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNs YWJlbHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBm b3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZ KGNvbm4sICdET01BSU4nLCBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3As IG5hbWUpLCByLnByb3ZpZGVyLCByLmxhYmVsKSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVscyBh bmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIg aW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNv bm4sICdET01BSU4nLCBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5h bWUpLCByLnByb3ZpZGVyLCByLmxhYmVsKSB9fQoreyUgZW5kZm9yICV9Cit7 JSBlbmRpZiAtJX0KKworeyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09N TUVOVCBPTiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNw LCBuYW1lKSB9fQorICAgIElTIHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRl cmFsIH19OworeyUgZW5kaWYgJX0KKworeyUgaWYgZGF0YS5iYXNlbnNwICV9 CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNw LCBuYW1lKSB9fQorICAgIFNFVCBTQ0hFTUEge3sgY29ubnxxdElkZW50KGRh dGEuYmFzZW5zcCkgfX07Cit7JSBlbmRpZiAlfQorCit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9zcWwvOS4yX3BsdXMvYmFja2VuZF9zdXBwb3J0LnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzku Ml9wbHVzL2JhY2tlbmRfc3VwcG9ydC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uY2EyNTBhYgotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3Fs LzkuMl9wbHVzL2JhY2tlbmRfc3VwcG9ydC5zcWwKQEAgLTAsMCArMSwyMCBA QAorU0VMRUNUCisgIENBU0UgV0hFTiBuc3AubnNwbmFtZSBJTiAoJ3N5cycs ICdkYm8nLCAnaW5mb3JtYXRpb25fc2NoZW1hJykgVEhFTiB0cnVlIEVMU0Ug ZmFsc2UgRU5EIEFTIGRiU3VwcG9ydAorRlJPTQorICBwZ19uYW1lc3BhY2Ug bnNwCitXSEVSRQorICBuc3Aub2lkPXt7c2NpZH19OjppbnQKKyAgQU5EICgK KyAgICAobnNwbmFtZSA9ICdwZ19jYXRhbG9nJyBBTkQgRVhJU1RTCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTRUxFQ1QgMSBGUk9N IHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAncGdfY2xhc3MnIEFORCByZWxu YW1lc3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKQorICAgIE9SIChuc3BuYW1l ID0gJ3BnYWdlbnQnIEFORCBFWElTVFMKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKFNFTEVDVCAxIEZST00gcGdfY2xhc3MgV0hFUkUg cmVsbmFtZSA9ICdwZ2Ffam9iJyBBTkQgcmVsbmFtZXNwYWNlID0gbnNwLm9p ZCBMSU1JVCAxKSkKKyAgICBPUiAobnNwbmFtZSA9ICdpbmZvcm1hdGlvbl9z Y2hlbWEnIEFORCBFWElTVFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFNFTEVDVCAxIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFt ZSA9ICd0YWJsZXMnIEFORCByZWxuYW1lc3BhY2UgPSBuc3Aub2lkIExJTUlU IDEpKQorICAgIE9SIChuc3BuYW1lIExJS0UgJ18lJyBBTkQgRVhJU1RTCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTRUxFQ1QgMSBG Uk9NIHBnX3Byb2MgV0hFUkUgcHJvbmFtZT0nc2xvbnl2ZXJzaW9uJyBBTkQg cHJvbmFtZXNwYWNlID0gbnNwLm9pZCBMSU1JVCAxKSkKKyAgICApCisgIEFO RAorICAgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFx0ZW1wXFwlJworICBBTkQK KyAgIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcdG9hc3RfdGVtcFxcJScKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2Rv bWFpbnMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9jcmVh dGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0 YjY4MzkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9jcmVhdGUuc3Fs CkBAIC0wLDAgKzEsNDAgQEAKK3slIGltcG9ydCAnbWFjcm9zL3NlY3VyaXR5 Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGlmIGRhdGEgJX0KK0NSRUFU RSBET01BSU4ge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5u YW1lKSB9fQorICAgIEFTIHt7IGNvbm58cXRUeXBlSWRlbnQoZGF0YS5iYXNl dHlwZSkgfX0KK3slIGlmIGRhdGEuY29sbG5hbWUgYW5kIGRhdGEuY29sbG5h bWUgIT0gInBnX2NhdGFsb2cuXCJkZWZhdWx0XCIiICV9CisgICAgQ09MTEFU RSB7eyBkYXRhLmNvbGxuYW1lIH19Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0 YS50eXBkZWZhdWx0ICV9CisgICAgREVGQVVMVCB7eyBkYXRhLnR5cGRlZmF1 bHQgfX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLnR5cG5vdG51bGwgPT0g J3RydWUnICV9CisgICAgTk9UIE5VTEwKK3slIGVuZGlmICV9OworCit7JSBp ZiBkYXRhLmNvbnN0cmFpbnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0 cmFpbnRzICV9Cit7JSBpZiBjLmNvbm5hbWUgYW5kIGMuY29uc3JjICV9QUxU RVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEu bmFtZSkgfX0KKyAgICBBREQgQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQo Yy5jb25uYW1lKSB9fSBDSEVDSyAoe3sgYy5jb25zcmMgfX0gKQoreyUgaWYg Yy5jb252YWxpZGF0ZWQgJX0KKyAgICBOT1QgVkFMSUQgeyUgZW5kaWYgJX0g eyUgaWYgYy5jb25ub2luaGVyaXQgJX0gTk8gSU5IRVJJVHslIGVuZGlmICV9 OworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KKwor QUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRh dGEubmFtZSkgfX0gT1dORVIgVE8ge3sgY29ubnxxdElkZW50KGRhdGEub3du ZXIpIH19OworCit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5U IE9OIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRh Lm5hbWUpIH19CisgICAgSVMgJ3t7IGRhdGEuZGVzY3JpcHRpb24gfX0nOwor eyUgZW5kaWYgJX0KKworeyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0KK3slIGZv ciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiByLnNlY3VyaXR5X2xh YmVsIGFuZCByLnByb3ZpZGVyICV9Cit7eyBTRUNMQUJMRS5BUFBMWShjb25u LCAnRE9NQUlOJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5 X2xhYmVsKSB9fQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgJX0KKworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2Rl bGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjJfcGx1cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMjYwMDMKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5z L3NxbC85LjJfcGx1cy9kZWxldGUuc3FsCkBAIC0wLDAgKzEsMTEgQEAKK3sl IGlmIHNjaWQgYW5kIGRvaWQgJX0KK1NFTEVDVCBkLnR5cG5hbWUgYXMgbmFt ZSwgYm4ubnNwbmFtZSBhcyBiYXNlbnNwCitGUk9NIHBnX3R5cGUgZAorSk9J TiBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitX SEVSRSBkLnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK0FORCBkLm9p ZD17e2RvaWR9fTo6aW50OworeyUgZW5kaWYgJX0KKworeyUgaWYgbmFtZSAl fQorRFJPUCBET01BSU4ge3sgY29ubnxxdElkZW50KGJhc2Vuc3AsIG5hbWUp IH19eyUgaWYgY2FzY2FkZSV9IENBU0NBREV7JSBlbmRpZiAlfQoreyUgZW5k aWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVt cGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9jb2xsYXRpb25zLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMv c3FsLzkuMl9wbHVzL2dldF9jb2xsYXRpb25zLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTEzYTY1Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlu cy9zcWwvOS4yX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsCkBAIC0wLDAgKzEs NyBAQAorU0VMRUNUIC0tbnNwbmFtZSwgY29sbG5hbWUsCisgIENBU0UgV0hF TiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBsZW5ndGgoY29sbG5hbWUpID4g MCAgVEhFTgorICBjb25jYXQobnNwbmFtZSwgJy4iJywgY29sbG5hbWUsJyIn KQorICBFTFNFICcnIEVORCBBUyBjb3B5X2NvbGxhdGlvbgorRlJPTSBwZ19j b2xsYXRpb24gYywgcGdfbmFtZXNwYWNlIG4KK1dIRVJFIGMuY29sbG5hbWVz cGFjZT1uLm9pZAorT1JERVIgQlkgbnNwbmFtZSwgY29sbG5hbWU7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21h aW5zL3NxbC85LjJfcGx1cy9nZXRfY29uc3RyYWludHMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3Bs dXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5lMmJlNTIyCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4y X3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApAQCAtMCwwICsxLDE3IEBACitT RUxFQ1QKKyAgJ1RBQkxFJyBBUyBvYmplY3RraW5kLCBjLm9pZCwgY29ubmFt ZSwgcmVsbmFtZSwgbnNwbmFtZSwgZGVzY3JpcHRpb24sCisgIHBnX2dldF9l eHByKGNvbmJpbiwgY29ucmVsaWQsIHRydWUpIGFzIGNvbnNyYywgY29ubm9p bmhlcml0LCBjb252YWxpZGF0ZWQgIEZST00gcGdfY29uc3RyYWludCBjCitK T0lOIHBnX2NsYXNzIGNsIE9OIGNsLm9pZD1jb25yZWxpZAorSk9JTiBwZ19u YW1lc3BhY2UgbmwgT04gbmwub2lkPXJlbG5hbWVzcGFjZQorTEVGVCBPVVRF UiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jLm9p ZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jb25zdHJhaW50Jzo6cmVnY2xhc3Mp CitXSEVSRSBjb250eXBlID0gJ2MnIEFORCBjb25yZWxpZCA9ICB7e2RvaWR9 fTo6b2lkCitVTklPTgorU0VMRUNUCisgICdET01BSU4nIEFTIG9iamVjdGtp bmQsIGMub2lkLCBjb25uYW1lLCB0eXBuYW1lIGFzIHJlbG5hbWUsIG5zcG5h bWUsIGRlc2NyaXB0aW9uLAorICByZWdleHBfcmVwbGFjZShwZ19nZXRfY29u c3RyYWludGRlZihjLm9pZCwgdHJ1ZSksIEUnQ0hFQ0sgXFwoKC4qKVxcKS4q JywgRSdcXDEnKSBhcyBjb25zcmMsIGNvbm5vaW5oZXJpdCwgY29udmFsaWRh dGVkCitGUk9NIHBnX2NvbnN0cmFpbnQgYworSk9JTiBwZ190eXBlIHQgT04g dC5vaWQ9Y29udHlwaWQKK0pPSU4gcGdfbmFtZXNwYWNlIG5sIE9OIG5sLm9p ZD10eXBuYW1lc3BhY2UKK0xFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlv biBkZXMgT04gKGRlcy5vYmpvaWQ9dC5vaWQgQU5EIGRlcy5jbGFzc29pZD0n cGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQorV0hFUkUgY29udHlwZSA9ICdj JyBBTkQgY29udHlwaWQgPSAge3tkb2lkfX06Om9pZAorT1JERVIgQlkgY29u bmFtZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X29pZC5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJf cGx1cy9nZXRfb2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4wYzFhYWNlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMv Z2V0X29pZC5zcWwKQEAgLTAsMCArMSw5IEBACitTRUxFQ1QKKyAgZC5vaWQs IGQudHlwbmFtZSBhcyBuYW1lCitGUk9NCisgIHBnX3R5cGUgZAorSk9JTgor ICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitX SEVSRQorICBibi5uc3BuYW1lID0ge3sgYmFzZW5zcHxxdExpdGVyYWwgfX0K KyAgQU5EIGQudHlwbmFtZT17eyBuYW1lfHF0TGl0ZXJhbCB9fQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlu cy9zcWwvOS4yX3BsdXMvZ2V0X3NjaGVtYXMuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0 X3NjaGVtYXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjM4NmM4MDMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRf c2NoZW1hcy5zcWwKQEAgLTAsMCArMSwyMSBAQAorU0VMRUNUCisgIG5zcC5u c3BuYW1lCitGUk9NCisgIHBnX25hbWVzcGFjZSBuc3AKKyAgTEVGVCBPVVRF UiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1uc3Au b2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX25hbWVzcGFjZSc6OnJlZ2NsYXNz KQorICBMRUZUIE9VVEVSIEpPSU4gcGdfY2F0YWxvZy5wZ19kZWZhdWx0X2Fj bCBkYWNsIE9OIChkYWNsLmRlZmFjbG5hbWVzcGFjZSA9IG5zcC5vaWQpCitX SEVSRQorICBOT1QgKChuc3BuYW1lID0gJ3BnX2NhdGFsb2cnIEFORCBFWElT VFMKKyAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1l ID0gJ3BnX2NsYXNzJyBBTkQgcmVsbmFtZXNwYWNlID0gbnNwLm9pZCBMSU1J VCAxKSkgT1IKKyAgKG5zcG5hbWUgPSAncGdhZ2VudCcgQU5EIEVYSVNUUwor ICAgIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAn cGdhX2pvYicgQU5EIHJlbG5hbWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkp IE9SCisgIChuc3BuYW1lID0gJ2luZm9ybWF0aW9uX3NjaGVtYScgQU5EIEVY SVNUUworICAgIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5h bWUgPSAndGFibGVzJyBBTkQgcmVsbmFtZXNwYWNlID0gbnNwLm9pZCBMSU1J VCAxKSkgT1IKKyAgKG5zcG5hbWUgTElLRSAnXyUnIEFORCBFWElTVFMKKyAg ICAgIChTRUxFQ1QgMSBGUk9NIHBnX3Byb2MgV0hFUkUgcHJvbmFtZT0nc2xv bnl2ZXJzaW9uJyBBTkQgcHJvbmFtZXNwYWNlID0gbnNwLm9pZCBMSU1JVCAx KSkKKyAgKUFORAorICBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXHRlbXBcXCUn IEFORAorICBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXHRvYXN0X3RlbXBcXCUn IEFORAorICAtLSBBRERFRDogQmVjYXVzZSBXZSBuZWVkIHRvIG9taXQgc3lz dGVtIHNjaGVtYSBleGNlcHQgdGhlIG9uZSBvbiB3aGljaCB3ZSBhcmUgdHJ5 aW5nIHRvICBjcmVhdGUgY29sbGF0aW9uCisgICggbnNwLm9pZCA9IHt7IHNj aWQgfX0gT1IgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxfJScgKQorT1JERVIg QlkgbnNwbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF90eXBlcy5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5z L3NxbC85LjJfcGx1cy9nZXRfdHlwZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjBlY2VmZDcKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3Nx bC85LjJfcGx1cy9nZXRfdHlwZXMuc3FsCkBAIC0wLDAgKzEsOSBAQAorU0VM RUNUICogRlJPTQorKFNFTEVDVCBmb3JtYXRfdHlwZSh0Lm9pZCxOVUxMKSBB UyB0eXBuYW1lLCBDQVNFIFdIRU4gdHlwZWxlbSA+IDAgVEhFTiB0eXBlbGVt IEVMU0UgdC5vaWQgRU5EIGFzIGVsZW1vaWQsIHR5cGxlbiwgdHlwdHlwZSwg dC5vaWQsIG5zcG5hbWUsCisoU0VMRUNUIENPVU5UKDEpIEZST00gcGdfdHlw ZSB0MiBXSEVSRSB0Mi50eXBuYW1lID0gdC50eXBuYW1lKSA+IDEgQVMgaXNk dXAKK0ZST00gcGdfdHlwZSB0CitKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04g dHlwbmFtZXNwYWNlPW5zcC5vaWQKK1dIRVJFIChOT1QgKHR5cG5hbWUgPSAn dW5rbm93bicgQU5EIG5zcG5hbWUgPSAncGdfY2F0YWxvZycpKSBBTkQgdHlw aXNkZWZpbmVkIEFORCB0eXB0eXBlIElOICgnYicsICdjJywgJ2UnLCAncicp QU5EIE5PVCBFWElTVFMKKyhzZWxlY3QgMSBmcm9tIHBnX2NsYXNzIHdoZXJl IHJlbG5hbWVzcGFjZT10eXBuYW1lc3BhY2UgYW5kIHJlbG5hbWUgPSB0eXBu YW1lIGFuZCByZWxraW5kICE9ICdjJykgQU5EICh0eXBuYW1lIG5vdCBsaWtl ICdfJScgT1IgTk9UIEVYSVNUUworKHNlbGVjdCAxIGZyb20gcGdfY2xhc3Mg d2hlcmUgcmVsbmFtZXNwYWNlPXR5cG5hbWVzcGFjZSBhbmQgcmVsbmFtZSA9 IHN1YnN0cmluZyh0eXBuYW1lIGZyb20gMik6Om5hbWUgYW5kIHJlbGtpbmQg IT0gJ2MnKSkKKykgQVMgZHVtbXkgT1JERVIgQlkgbnNwbmFtZSA8PiAncGdf Y2F0YWxvZycsIG5zcG5hbWUgPD4gJ3B1YmxpYycsIG5zcG5hbWUsIDEKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2Rv bWFpbnMvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMv cHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMjRhY2UwOAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL3By b3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMjAgQEAKK1NFTEVDVCBkLm9pZCwg ZC50eXBuYW1lIGFzIG5hbWUsIGQudHlwYmFzZXR5cGUsIGZvcm1hdF90eXBl KGIub2lkLE5VTEwpIGFzIGJhc2V0eXBlLCBwZ19nZXRfdXNlcmJ5aWQoZC50 eXBvd25lcikgYXMgb3duZXIsCisgIGMub2lkIEFTIGNvbGxvaWQsCisgIENB U0UgV0hFTiBsZW5ndGgoY24ubnNwbmFtZSkgPiAwIEFORCBsZW5ndGgoYy5j b2xsbmFtZSkgPiAwIFRIRU4KKyAgY29uY2F0KGNuLm5zcG5hbWUsICcuIics IGMuY29sbG5hbWUsJyInKQorICBFTFNFICcnIEVORCBBUyBjb2xsbmFtZSwK KyAgZC50eXBsZW4sIGQudHlwdHlwbW9kLCBkLnR5cG5vdG51bGwsIGQudHlw ZGVmYXVsdCwgZC50eXBuZGltcywgZC50eXBkZWxpbSwgYm4ubnNwbmFtZSBh cyBiYXNlbnNwLAorICBkZXNjcmlwdGlvbiwgKFNFTEVDVCBDT1VOVCgxKSBG Uk9NIHBnX3R5cGUgdDIgV0hFUkUgdDIudHlwbmFtZT1kLnR5cG5hbWUpID4g MSBBUyBkb21pc2R1cCwKKyAgKFNFTEVDVCBDT1VOVCgxKSBGUk9NIHBnX3R5 cGUgdDMgV0hFUkUgdDMudHlwbmFtZT1iLnR5cG5hbWUpID4gMSBBUyBiYXNl aXNkdXAsCisgIChTRUxFQ1QgYXJyYXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8 fCBsYWJlbCkgRlJPTSBwZ19zaHNlY2xhYmVsIHNsMSBXSEVSRSBzbDEub2Jq b2lkPWQub2lkKSBBUyBzZWNsYWJlbHMKK0ZST00gcGdfdHlwZSBkCisgIEpP SU4gcGdfdHlwZSBiIE9OIGIub2lkID0gZC50eXBiYXNldHlwZQorICBKT0lO IHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBuYW1lc3BhY2UKKyAg TEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9i am9pZD1kLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ190eXBlJzo6cmVnY2xh c3MpCisgIExFRlQgT1VURVIgSk9JTiBwZ19jb2xsYXRpb24gYyBPTiBkLnR5 cGNvbGxhdGlvbj1jLm9pZAorICBMRUZUIE9VVEVSIEpPSU4gcGdfbmFtZXNw YWNlIGNuIE9OIGMuY29sbG5hbWVzcGFjZT1jbi5vaWQKK1dIRVJFIGQudHlw bmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAoreyUgaWYgZG9pZCAlfQorICBB TkQgZC5vaWQ9e3tkb2lkfX06OmludAoreyUgZW5kaWYgJX0KK09SREVSIEJZ IGQudHlwbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL3VwZGF0ZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3Nx bC85LjJfcGx1cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmQ0MGFmNGMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJf cGx1cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNzEgQEAKK3slIGlmIGRhdGEg JX0KK3slIHNldCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEu bmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitB TFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBv X2RhdGEubmFtZSkgfX0KKyAgICBSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50 KGRhdGEubmFtZSkgfX07Cit7JSBzZXQgbmFtZSA9IGRhdGEubmFtZSAlfQor eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEudHlwbm90 bnVsbCBhbmQgbm90IG9fZGF0YS50eXBub3RudWxsICV9CitBTFRFUiBET01B SU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQor ICAgIFNFVCBOT1QgTlVMTDsKK3slIGVsaWYgbm90IGRhdGEudHlwbm90bnVs bCBhbmQgb19kYXRhLnR5cG5vdG51bGwlfQorQUxURVIgRE9NQUlOIHt7IGNv bm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9Q IE5PVCBOVUxMOworeyUgZW5kaWYgJX0KKworeyUgaWYgZGF0YS50eXBkZWZh dWx0ICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBERUZBVUxUIHt7IGRhdGEudHlw ZGVmYXVsdHxxdExpdGVyYWwgfX07Cit7JSBlbGlmIG5vdCBkYXRhLnR5cGRl ZmF1bHQgYW5kIG9fZGF0YS50eXBkZWZhdWx0ICV9CitBTFRFUiBET01BSU4g e3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAg IERST1AgREVGQVVMVDsKK3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEub3du ZXIgJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJh c2Vuc3AsIG5hbWUpIH19CisgICAgT1dORVIgVE8ge3sgY29ubnxxdElkZW50 KGRhdGEub3duZXIpIH19OworeyUgZW5kaWYgJX0KKworeyUgaWYgZGF0YS5j b25zdHJhaW50cyAlfQoreyUgZm9yIGMgaW4gZGF0YS5jb25zdHJhaW50cy5k ZWxldGVkICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0 YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERST1AgQ09OU1RSQUlOVCB7eyBj b25ufHF0SWRlbnQoYy5jb25uYW1lKSB9fQoreyUgZW5kZm9yICV9Cit7JSBm b3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmFkZGVkICV9CitBTFRFUiBET01B SU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQor ICAgIEFERCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUp IH19IENIRUNLICh7eyBjLmNvbnNyYyB9fSApCit7JSBpZiBjLmNvbnZhbGlk YXRlZCAlfSBOT1QgVkFMSUQgeyUgZW5kaWYgJX0geyUgaWYgYy5jb25ub2lu aGVyaXQgJX0gTk8gSU5IRVJJVCB7JSBlbmRpZiAlfTsKK3slIGVuZGZvciAl fQoreyUgZW5kaWYgJX0KKworeyUgc2V0IHNlY2xhYmVscyA9IGRhdGEuc2Vj bGFiZWxzICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gc2VjbGFiZWxzIGFuZCBz ZWNsYWJlbHMuZGVsZXRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBz ZWNsYWJlbHMuZGVsZXRlZCAlfQore3sgU0VDTEFCTEUuRFJPUChjb25uLCAn RE9NQUlOJywgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSwg ci5wcm92aWRlcikgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sl IGlmICdhZGRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuYWRkZWR8 bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmFkZGVkICV9 Cit7eyBTRUNMQUJMRS5BUFBMWShjb25uLCAnRE9NQUlOJywgY29ubnxxdElk ZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSwgci5wcm92aWRlciwgci5sYWJl bCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFu Z2VkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5jaGFuZ2VkfGxlbmd0 aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5jaGFuZ2VkICV9Cit7 eyBTRUNMQUJMRS5BUFBMWShjb25uLCAnRE9NQUlOJywgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSwgci5wcm92aWRlciwgci5sYWJlbCkg fX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KKworeyUgaWYgZGF0YS5k ZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBPTiBET01BSU4ge3sgY29ubnxxdElk ZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIElTIHt7IGRhdGEu ZGVzY3JpcHRpb258cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KKworeyUg aWYgZGF0YS5iYXNlbnNwICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElk ZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBTQ0hFTUEg e3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCkgfX07Cit7JSBlbmRpZiAl fQorCit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zdGF0aWMvanMvbm9kZS51aS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc3RhdGljL2pzL25vZGUudWkuanMKaW5kZXggYWE3MzE0ZS4uOTRkNTIw NSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMv bm9kZS51aS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9q cy9ub2RlLnVpLmpzCkBAIC01Miw3ICs1Miw3IEBAIGZ1bmN0aW9uKCQsIF8s IHBnQWRtaW4sIEJhY2tib25lLCBCYWNrZm9ybSwgQWxlcnRpZnksIE5vZGUp IHsKICAgICAgICcgICAgPCUgfSAlPicsCiAgICAgICAnICAgIDwlIGZvciAo dmFyIGk9MDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsgJT4nLAogICAg ICAgJyAgICA8JSB2YXIgb3B0aW9uID0gb3B0aW9uc1tpXTsgJT4nLAotICAg ICAgJyAgICA8b3B0aW9uIDwlIGlmIChvcHRpb24uaW1hZ2UpIHsgJT4gZGF0 YS1pbWFnZT08JT0gb3B0aW9uLmltYWdlICU+IDwlIH0gJT4gdmFsdWU9PCU9 IGZvcm1hdHRlci5mcm9tUmF3KG9wdGlvbi52YWx1ZSkgJT4gPCU9b3B0aW9u LnZhbHVlID09PSByYXdWYWx1ZSA/ICJzZWxlY3RlZD1cJ3NlbGVjdGVkXCci IDogIiIgJT4+PCUtb3B0aW9uLmxhYmVsJT48L29wdGlvbj4nLAorICAgICAg JyAgICA8b3B0aW9uIDwlIGlmIChvcHRpb24uaW1hZ2UpIHsgJT4gZGF0YS1p bWFnZT08JT0gb3B0aW9uLmltYWdlICU+IDwlIH0gJT4gPCUgaWYgKHR5cGVv ZiBvcHRpb24udmFsdWUgPT0gInN0cmluZyIpIHsgJT52YWx1ZT08JT1mb3Jt YXR0ZXIuZnJvbVJhdyhvcHRpb24udmFsdWUucmVwbGFjZSgvIi9nLCAiJnF1 b3Q7IikpICU+IDwlIH1lbHNlIHsgJT52YWx1ZT08JT1mb3JtYXR0ZXIuZnJv bVJhdyhvcHRpb24udmFsdWUpJT4gPCUgfSAlPjwlPW9wdGlvbi52YWx1ZSA9 PT0gcmF3VmFsdWUgPyAic2VsZWN0ZWQ9XCdzZWxlY3RlZFwnIiA6ICIiICU+ PjwlLW9wdGlvbi5sYWJlbCU+PC9vcHRpb24+JywKICAgICAgICcgICAgPCUg fSAlPicsCiAgICAgICAnICA8L3NlbGVjdD4nLAogICAgICAgJzwvZGl2Pidd LmpvaW4oIlxuIikpLApAQCAtMTE2LDcgKzExNiw2IEBAIGZ1bmN0aW9uKCQs IF8sIHBnQWRtaW4sIEJhY2tib25lLCBCYWNrZm9ybSwgQWxlcnRpZnksIE5v ZGUpIHsKICAgICAgICAgLy8KICAgICAgICAgLy8gSXQgaXMgZmVhc2libGUg dGhhdCB0aGUgZGF0YSBtYXkgbm90IGhhdmUgYmVlbiBmZXRjaGVkLgogICAg ICAgICBkYXRhID0gKGRhdGEgJiYgZGF0YS5kYXRhKSB8fCBbXTsKLQogICAg ICAgICAvKgogICAgICAgICAgKiBUcmFuc2Zvcm0gdGhlIGRhdGEKICAgICAg ICAgICovCkBAIC0xMjksNiArMTI4LDcgQEAgZnVuY3Rpb24oJCwgXywgcGdB ZG1pbiwgQmFja2JvbmUsIEJhY2tmb3JtLCBBbGVydGlmeSwgTm9kZSkgewog ICAgICAgICB9IGVsc2UgewogICAgICAgICAgIHNlbGYuZmllbGQuc2V0KCdv cHRpb25zJywgZGF0YSk7CiAgICAgICAgIH0KKwogICAgICAgfQogICAgIH0s CiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluLmpzIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKaW5kZXggODgz N2ZhOS4uYmU3ZDE3NyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKKysrIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKQEAgLTEwMDAsMTIgKzEwMDAs MTQgQEAKICAgICAgIC8vIEluc2VydCBFZGl0IENlbGwgaW50byBHcmlkCiAg ICAgICBpZiAoZGF0YS5kaXNhYmxlZCA9PSBmYWxzZSAmJiBkYXRhLmNhbkVk aXQpIHsKICAgICAgICAgICB2YXIgZWRpdENlbGwgPSBCYWNrZ3JpZC5FeHRl bnNpb24uT2JqZWN0Q2VsbC5leHRlbmQoewotICAgICAgICAgICAgc2NoZW1h OiBncmlkU2NoZW1hLnNjaGVtYQotICAgICAgICAgIH0pOworICAgICAgICAg ICAgICAgIHNjaGVtYTogZ3JpZFNjaGVtYS5zY2hlbWEKKyAgICAgICAgICAg ICAgICB9KSwKKyAgICAgICAgICAgICAgY2FuRWRpdCA9IHNlbGYuZmllbGQu aGFzKCdjYW5FZGl0JykgJiYKKyAgICAgICAgICAgICAgICBzZWxmLmZpZWxk LmdldCgnY2FuRWRpdCcpIHx8IHRydWU7CiAKICAgICAgICAgICBncmlkU2No ZW1hLmNvbHVtbnMudW5zaGlmdCh7CiAgICAgICAgICAgICBuYW1lOiAicGct YmFja2Zvcm0tZWRpdCIsIGxhYmVsOiAiIiwgY2VsbCA6IGVkaXRDZWxsLAot ICAgICAgICAgICAgY2VsbF9wcmlvcml0eTogLTIKKyAgICAgICAgICAgIGNl bGxfcHJpb3JpdHk6IC0yLCBlZGl0YWJsZTogY2FuRWRpdAogICAgICAgICAg IH0pOwogICAgICAgfQogCkBAIC0xMDQ0LDggKzEwNDYsOSBAQAogICAgICAg ICBncmlkLmluc2VydFJvdyh7fSk7CiAgICAgICAgIHZhciBuZXdSb3cgPSAk KGdyaWQuYm9keS5yb3dzW2NvbGxlY3Rpb24ubGVuZ3RoIC0gMV0uJGVsKTsK ICAgICAgICAgbmV3Um93LmF0dHIoImNsYXNzIiwgIm5ldyIpLmNsaWNrKGZ1 bmN0aW9uKGUpIHsKLSAgICAgICAgICAkKHRoaXMpLmF0dHIoImNsYXNzIiwg IiIpOworICAgICAgICAgICQodGhpcykuYXR0cigiY2xhc3MiLCAiZWRpdGFi bGUiKTsKICAgICAgICAgfSk7CisKICAgICAgICAgJChuZXdSb3cpLnBnTWFr ZVZpc2libGUoJ2JhY2tmb3JtLXRhYicpOwogICAgICAgICByZXR1cm4gZmFs c2U7CiAgICAgICB9KTsK --001a11c3780cc6e3c5052ac6dcd2 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 --001a11c3780cc6e3c5052ac6dcd2--