Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1etyk4-0000Oc-3b for pgadmin-hackers@arkaria.postgresql.org; Thu, 08 Mar 2018 16:50:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1etyk2-0007e1-QI for pgadmin-hackers@arkaria.postgresql.org; Thu, 08 Mar 2018 16:50:06 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1etyk2-0007ce-A3 for pgadmin-hackers@lists.postgresql.org; Thu, 08 Mar 2018 16:50:06 +0000 Received: from mail-it0-x233.google.com ([2607:f8b0:4001:c0b::233]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1etyjw-00022J-QG for pgadmin-hackers@postgresql.org; Thu, 08 Mar 2018 16:50:04 +0000 Received: by mail-it0-x233.google.com with SMTP id n128so20167068ith.1 for ; Thu, 08 Mar 2018 08:49:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pivotal-io.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=TR7XWacxb/3eNZKJjVZyXGZsc0mrWlwtVSFjASIHFPs=; b=WlhyGgIGZSf1fAFSlefXUwk+YAGZe2A7Tr6JjlYgTzjmFK0LjVGc8PGG8lT6cHiE/z 24mAvXJIB2CQQ/vUWb1RYf7BZJyEGJvMX2Zcpgys8FEbYOBO8Lx+hfJ80ZZksZ/RWIpd UPkKqLITE5MH1/Ix9N/bWAYufl3GOZIdn5mEtBxlrgNQzeccZ5COF94lDX0b97BrZoxz ZBSLkwjKwtUGtGv4J6G8fF8XHfbaR3GSsDyDTgIMPD3CSGS96SrokKl/Y+cfp+Rk0SEr AtZdA/22XZvLxEdIbXs5CluEs7JrOardRC59VIkvo/yRirYsKFAWZnu9QfnVMV2dOPPV xHMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=TR7XWacxb/3eNZKJjVZyXGZsc0mrWlwtVSFjASIHFPs=; b=IpBsN/xVHTDD48m3eX96ntTKnp87Db3L63bD3sapLwSp3lw1cqRUreRqE5VJRIy9XJ 5o9R8LSbm29M7oOatk9on3obcYRLuqLet58QPZqwO2RbNe66PTVygyAW+/U5vtCisBNL w03d1zwhkoG2td4uys2mBdtT1CrtA/wku076NeagPI6/Il2AusXghibLB8tlATkmswup BvUaVhBw6iUSjBbYsESHokzpdpqu6FurYpKYTiBhktioUzXDwph7WcqyfemEFj7+z41L FD0o52GAJXrTX651vsMvt3uk8s3NXfDbDp4B5x5QPeo1EthdTgcHgr6FlMn+usxonD2t MG3g== X-Gm-Message-State: AElRT7FeYe2F0VfX9WaOK1PJh62wg+5BQiXgbyD9UJJUCA8m23pURW3f TaUylxFAJh5j2fIPAr2fcT70i2P+BO8gVnedLiJtmw== X-Google-Smtp-Source: AG47ELsqpdwRmqjDhWg3mYrwuRPsNK8P9yRishiVk1DyZKF4oHPK7bZagSM0tGWYxbo0gNoq4pPmd/UH80VUUtf1V7U= X-Received: by 10.36.228.143 with SMTP id o137mr1222997ith.147.1520527798080; Thu, 08 Mar 2018 08:49:58 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Joao De Almeida Pereira Date: Thu, 08 Mar 2018 16:49:47 +0000 Message-ID: Subject: Re: [pgAdmin4][RM#2989] To fix the issue in Table node To: Murtuza Zabuawala Cc: Dave Page , pgadmin-hackers Content-Type: multipart/mixed; boundary="94eb2c1114584760960566e9773d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --94eb2c1114584760960566e9773d Content-Type: multipart/alternative; boundary="94eb2c1114584760920566e9773b" --94eb2c1114584760920566e9773b Content-Type: text/plain; charset="UTF-8" Hello Murtuza/Dave, Nice splitting of some of the functionality into functions, removing some of the complexity of the initial function. Good job. I made some changes because the linter was failing and also changed some variable names. These changes pass our CI and the linter. Thanks Joao On Thu, Mar 8, 2018 at 8:13 AM Murtuza Zabuawala < murtuza.zabuawala@enterprisedb.com> wrote: > Hi Dave, > > Please find updated patch. > > -- > Regards, > Murtuza Zabuawala > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > > On Thu, Mar 8, 2018 at 6:10 PM, Dave Page wrote: > >> Can you rebase this please? >> >> Thanks. >> >> On Thu, Mar 8, 2018 at 9:00 AM, Murtuza Zabuawala < >> murtuza.zabuawala@enterprisedb.com> wrote: >> >>> Hi Dave, >>> >>> Please find updated patch & updated test case to cover that as well. >>> >>> >>> >>> -- >>> Regards, >>> Murtuza Zabuawala >>> EnterpriseDB: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >>> >>> On Wed, Mar 7, 2018 at 9:59 PM, Dave Page wrote: >>> >>>> Hi >>>> >>>> On Wed, Mar 7, 2018 at 2:59 PM, Murtuza Zabuawala < >>>> murtuza.zabuawala@enterprisedb.com> wrote: >>>> >>>>> Hi Dave, >>>>> >>>>> PFA updated patch. >>>>> >>>>> >>>> Using your example on the ticket, I added a "character varying (32)" >>>> column with NOT NULL to the table. When I then edit the column, and turn >>>> off NOT NULL (making no other changes), the SQL generated is: >>>> >>>> ALTER TABLE public.test_drop >>>> ALTER COLUMN col2 TYPE character varying (32) COLLATE >>>> pg_catalog."default"; >>>> ALTER TABLE public.test_drop >>>> ALTER COLUMN col2 DROP NOT NULL; >>>> >>>> I didn't see that when turning off NOT NULL for col1. >>>> >>>> -- >>>> Dave Page >>>> Blog: http://pgsnake.blogspot.com >>>> Twitter: @pgsnake >>>> >>>> EnterpriseDB UK: http://www.enterprisedb.com >>>> The Enterprise PostgreSQL Company >>>> >>> >>> >> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --94eb2c1114584760920566e9773b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello Murtuza/Dave,

Nice splitting of s= ome of the functionality into functions, removing some of the complexity of= the initial function. Good job.

I made some chang= es because the linter was failing and also changed some variable names.
These changes pass our CI and the linter.

T= hanks
Joao

O= n Thu, Mar 8, 2018 at 8:13 AM Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> w= rote:
H= i Dave,

Please find updated patch.

--
Re= gards,
Murtuza Zabuawala
EnterpriseDB:=C2=A0http://www.enterpri= sedb.com
The Enterprise PostgreSQL Company
=
=

On Thu, Mar= 8, 2018 at 6:10 PM, Dave Page <dpage@pgadmin.org> wrote:
Can you rebase this please= ?

Thanks.

On Thu, Mar 8, 2018 at 9:00 AM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote:
Hi Dave,

Please find updated patch & updated test case= to cover that as well.



--
Re= gards,
Murtuza Zabuawala
EnterpriseDB:=C2=A0http://www.enterpri= sedb.com
The Enterprise PostgreSQL Company
=
=

On Wed, Mar 7, 2018 at 9:59 PM, Dave Page <= dpage@pgadmin.org> wrote:
<= div dir=3D"ltr">Hi

On Wed, Mar 7, 2018 at 2:59 PM, Murtuza Zabuawala &l= t;m= urtuza.zabuawala@enterprisedb.com> wrote:
Hi Dave,

PFA updated patch.


Us= ing your example on the ticket, I added a "character varying (32)"= ; column with NOT NULL to the table. When I then edit the column, and turn = off NOT NULL (making no other changes), the SQL generated is:
ALTER TABLE public.test_drop
=C2=A0 =C2=A0 ALTER= COLUMN col2 TYPE character varying (32) COLLATE pg_catalog."default&q= uot;;
ALTER TABLE public.test_drop
=C2=A0 =C2=A0 ALTER = COLUMN col2 DROP NOT NULL;

I didn't see = that when turning off NOT NULL for col1.

--
Dav= e Page
Blog: h= ttp://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK:= http://www.enter= prisedb.com
The Enterprise PostgreSQL Company




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

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise Postgre= SQL Company

--94eb2c1114584760920566e9773b-- --94eb2c1114584760960566e9773d Content-Type: application/octet-stream; name="RM_2989_version3.diff" Content-Disposition: attachment; filename="RM_2989_version3.diff" Content-Transfer-Encoding: base64 Content-ID: <1620684c0097ff887c51> X-Attachment-Id: 1620684c0097ff887c51 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1bW4vX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29s dW1uL19faW5pdF9fLnB5CmluZGV4IDJiMWFjOTJhLi5mMWJhNmY2ZSAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2NvbHVtbi9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29sdW1uL19faW5pdF9f LnB5CkBAIC0zNjQsMjAgKzM2NCw5IEBAIGNsYXNzIENvbHVtbnNWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIpOgogICAgICAgICBkYXRhWydhdHRsZW4nXSA9IE5vbmUKICAgICAg ICAgZGF0YVsnYXR0cHJlY2lzaW9uJ10gPSBOb25lCiAKLSAgICAgICAgaW1wb3J0IHJlCi0KLSAg ICAgICAgIyBJZiB3ZSBoYXZlIGxlbmd0aCAmIHByZWNpc2lvbiBib3RoCi0gICAgICAgIGlmIGxl bmd0aCBhbmQgcHJlY2lzaW9uOgotICAgICAgICAgICAgbWF0Y2hPYmogPSByZS5zZWFyY2gocico XGQrKSwoXGQrKScsIGZ1bGx0eXBlKQotICAgICAgICAgICAgaWYgbWF0Y2hPYmo6Ci0gICAgICAg ICAgICAgICAgZGF0YVsnYXR0bGVuJ10gPSBtYXRjaE9iai5ncm91cCgxKQotICAgICAgICAgICAg ICAgIGRhdGFbJ2F0dHByZWNpc2lvbiddID0gbWF0Y2hPYmouZ3JvdXAoMikKLSAgICAgICAgZWxp ZiBsZW5ndGg6Ci0gICAgICAgICAgICAjIElmIHdlIGhhdmUgbGVuZ3RoIG9ubHkKLSAgICAgICAg ICAgIG1hdGNoT2JqID0gcmUuc2VhcmNoKHInKFxkKyknLCBmdWxsdHlwZSkKLSAgICAgICAgICAg IGlmIG1hdGNoT2JqOgotICAgICAgICAgICAgICAgIGRhdGFbJ2F0dGxlbiddID0gbWF0Y2hPYmou Z3JvdXAoMSkKLSAgICAgICAgICAgICAgICBkYXRhWydhdHRwcmVjaXNpb24nXSA9IE5vbmUKKyAg ICAgICAgc2VsZi5zZXRfbGVuZ3RoX3ByZWNpc2lvbigKKyAgICAgICAgICAgIGxlbmd0aCwgcHJl Y2lzaW9uLCBmdWxsdHlwZSwgZGF0YQorICAgICAgICApCiAKICAgICAgICAgIyBXZSBuZWVkIHRv IGZldGNoIGluaGVyaXRlZCB0YWJsZXMgZm9yIGVhY2ggdGFibGUKICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZV9jb2x1bW5fdXBkYXRlLnB5IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl c3RzL3Rlc3RfdGFibGVfY29sdW1uX3VwZGF0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMC4uMTMyMWQ2ZjYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMv dGVzdF90YWJsZV9jb2x1bW5fdXBkYXRlLnB5CkBAIC0wLDAgKzEsOTYgQEAKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKK2ltcG9ydCBqc29uCitpbXBvcnQgdXVpZAorCitmcm9tIHBnYWRtaW4u YnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGVzdHMgaW1w b3J0IFwKKyAgICB1dGlscyBhcyBzY2hlbWFfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAg ICBkYXRhYmFzZV91dGlscworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVz dEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9t IHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMK K2Zyb20gLiBpbXBvcnQgdXRpbHMgYXMgdGFibGVzX3V0aWxzCisKKworY2xhc3MgVGFibGVOb3RO dWxsVXBkYXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRoaXMgY2xhc3Mg d2lsbCBhZGQgbmV3IGNvbGxhdGlvbiB1bmRlciBzY2hlbWEgbm9kZS4iIiIKKyAgICBzY2VuYXJp b3MgPSBbCisgICAgICAgICgnVXBkYXRlIFRhYmxlIHdpdGggbm90IG51bGwgZmllbGQnLCBkaWN0 KHVybD0nL2Jyb3dzZXIvdGFibGUvb2JqLycpKSwKKyAgICBdCisKKyAgICBkZWYgc2V0VXAoc2Vs Zik6CisgICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1b LTFdWyJkYl9uYW1lIl0KKyAgICAgICAgc2NoZW1hX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJz Y2hlbWEiXVstMV0KKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBzY2hlbWFfaW5mb1sic2VydmVy X2lkIl0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHNjaGVtYV9pbmZvWyJkYl9pZCJdCisgICAgICAg IGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2UoCisgICAgICAgICAgICBz ZWxmLCB1dGlscy5TRVJWRVJfR1JPVVAsIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkCisgICAg ICAgICkKKyAgICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKKyAgICAg ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgdG8g YWRkIGEgdGFibGUuIikKKyAgICAgICAgc2VsZi5zY2hlbWFfaWQgPSBzY2hlbWFfaW5mb1sic2No ZW1hX2lkIl0KKyAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHNjaGVtYV9pbmZvWyJzY2hlbWFf bmFtZSJdCisgICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlfc2No ZW1hcyhzZWxmLnNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUpCisgICAgICAgIGlm IG5vdCBzY2hlbWFfcmVzcG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxk IG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gYWRkIGEgdGFibGUuIikKKworICAgICAgICBzZWxmLnRh YmxlX25hbWUgPSAidGVzdF90YWJsZV9jb2x1bW5fcHV0XyVzIiAlIChzdHIodXVpZC51dWlkNCgp KVsxOjhdKQorCisgICAgICAgIGN1c3RvbV9zcWwgPSAnY29sdW1uXzEgImNoYXIiIE5PVCBOVUxM LCAnIFwKKyAgICAgICAgICAgICAgICAgICAgICdjb2x1bW5fMiBjaGFyYWN0ZXIgdmFyeWluZygx MCkgTk9UIE5VTEwnCisKKyAgICAgICAgc2VsZi50YWJsZV9pZCA9IHRhYmxlc191dGlscy5jcmVh dGVfdGFibGUoCisgICAgICAgICAgICBzZWxmLnNlcnZlciwKKyAgICAgICAgICAgIHNlbGYuZGJf bmFtZSwKKyAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUsCisgICAgICAgICAgICBzZWxmLnRh YmxlX25hbWUsCisgICAgICAgICAgICBjdXN0b21fc3FsCisgICAgICAgICkKKworICAgIGRlZiBy dW5UZXN0KHNlbGYpOgorICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggYWRkZWQg dGFibGUgdW5kZXIgc2NoZW1hIG5vZGUuIiIiCisgICAgICAgIHRhYmxlX3Jlc3BvbnNlID0gdGFi bGVzX3V0aWxzLnZlcmlmeV90YWJsZSgKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLmRi X25hbWUsIHNlbGYudGFibGVfaWQKKyAgICAgICAgKQorICAgICAgICBpZiBub3QgdGFibGVfcmVz cG9uc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSB0 YWJsZSB0byB1cGRhdGUuIikKKworICAgICAgICBkYXRhID0geworICAgICAgICAgICAgImlkIjog c2VsZi50YWJsZV9pZCwKKyAgICAgICAgICAgICJjb2x1bW5zIjogeworICAgICAgICAgICAgICAg ICJjaGFuZ2VkIjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg ICAgICAiYXR0bnVtIjogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhdHRub3RudWxsIjog RmFsc2UKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICAgICAgImF0dG51bSI6IDIsCisgICAgICAgICAgICAgICAgICAgICAg ICAiYXR0bm90bnVsbCI6IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJlc3BvbnNlID0g c2VsZi50ZXN0ZXIucHV0KAorICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVS X0dST1VQKSArICcvJyArCisgICAgICAgICAgICBzdHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsg c3RyKHNlbGYuZGJfaWQpICsgJy8nICsKKyAgICAgICAgICAgIHN0cihzZWxmLnNjaGVtYV9pZCkg KyAnLycgKyBzdHIoc2VsZi50YWJsZV9pZCksCisgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMo ZGF0YSksIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5h c3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKworICAgIGRlZiB0ZWFyRG93 bihzZWxmKToKKyAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQorICAgICAgICBkYXRh YmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBzZWxm LmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3V0aWxzLnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3Rlc3RzL3V0aWxzLnB5CmluZGV4IDRjZWMzMjNiLi5iNzIyMTQ3YyAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3Rlc3RzL3V0aWxzLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy91dGlscy5weQpAQCAt MTUsNyArMTUsOCBAQCBpbXBvcnQgdHJhY2ViYWNrCiBmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rl c3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKIAogCi1kZWYgY3JlYXRlX3RhYmxl KHNlcnZlciwgZGJfbmFtZSwgc2NoZW1hX25hbWUsIHRhYmxlX25hbWUpOgorZGVmIGNyZWF0ZV90 YWJsZShzZXJ2ZXIsIGRiX25hbWUsIHNjaGVtYV9uYW1lLCB0YWJsZV9uYW1lLAorICAgICAgICAg ICAgICAgICBjdXN0b21fY29sdW1uX3NxbD1Ob25lKToKICAgICAiIiIKICAgICBUaGlzIGZ1bmN0 aW9uIGNyZWF0ZXMgYSB0YWJsZSB1bmRlciBwcm92aWRlZCBzY2hlbWEuCiAgICAgOnBhcmFtIHNl cnZlcjogc2VydmVyIGRldGFpbHMKQEAgLTM5LDkgKzQwLDEzIEBAIGRlZiBjcmVhdGVfdGFibGUo c2VydmVyLCBkYl9uYW1lLCBzY2hlbWFfbmFtZSwgdGFibGVfbmFtZSk6CiAgICAgICAgIG9sZF9p c29sYXRpb25fbGV2ZWwgPSBjb25uZWN0aW9uLmlzb2xhdGlvbl9sZXZlbAogICAgICAgICBjb25u ZWN0aW9uLnNldF9pc29sYXRpb25fbGV2ZWwoMCkKICAgICAgICAgcGdfY3Vyc29yID0gY29ubmVj dGlvbi5jdXJzb3IoKQotICAgICAgICBxdWVyeSA9ICJDUkVBVEUgVEFCTEUgJXMuJXMoaWQgc2Vy aWFsIFVOSVFVRSBOT1QgTlVMTCwgbmFtZSB0ZXh0LCIgXAotICAgICAgICAgICAgICAgICIgbG9j YXRpb24gdGV4dCkiICVcCi0gICAgICAgICAgICAgICAgKHNjaGVtYV9uYW1lLCB0YWJsZV9uYW1l KQorICAgICAgICBpZiBjdXN0b21fY29sdW1uX3NxbDoKKyAgICAgICAgICAgIHF1ZXJ5ID0gIkNS RUFURSBUQUJMRSAlcy4lcyglcykiICUgXAorICAgICAgICAgICAgICAgICAgICAoc2NoZW1hX25h bWUsIHRhYmxlX25hbWUsIGN1c3RvbV9jb2x1bW5fc3FsKQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgcXVlcnkgPSAiQ1JFQVRFIFRBQkxFICVzLiVzKGlkIHNlcmlhbCBVTklRVUUgTk9UIE5V TEwsICIgXAorICAgICAgICAgICAgICAgICAgICAibmFtZSB0ZXh0LCBsb2NhdGlvbiB0ZXh0KSIg JSBcCisgICAgICAgICAgICAgICAgICAgIChzY2hlbWFfbmFtZSwgdGFibGVfbmFtZSkKICAgICAg ICAgcGdfY3Vyc29yLmV4ZWN1dGUocXVlcnkpCiAgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xh dGlvbl9sZXZlbChvbGRfaXNvbGF0aW9uX2xldmVsKQogICAgICAgICBjb25uZWN0aW9uLmNvbW1p dCgpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdXRpbHMucHkK aW5kZXggNDU0MDNkMTEuLmY2ZDFiMjI5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdXRpbHMucHkK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3V0aWxzLnB5CkBAIC0xNzQ4LDM5ICsxNzQ4LDIwIEBAIGNsYXNzIEJh c2VUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvbGRfZGF0YVsnYXR0dHlwbW9kJ10KICAgICAgICAgICAgICAgICAgICAgICAgICkKIAotICAg ICAgICAgICAgICAgICAgICAgICAgZGVmIGdldF90eXBlX2F0dHIoa2V5LCBkYXRhKToKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiIiJVdGlsaXR5IGZ1bmN0aW9uIiIiCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYga2V5IGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBkYXRhW2tleV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gTm9uZQotCiAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHRoZSBjb2x1bW4gZGF0 YSB0eXBlIGhhcyBub3QgY2hhbmdlZCB0aGVuIGZldGNoCiAgICAgICAgICAgICAgICAgICAgICAg ICAjIG9sZCBsZW5ndGggYW5kIHByZWNpc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgaWYg J2VsZW1vaWQnIGluIG9sZF9kYXRhIGFuZCAnY2x0eXBlJyBub3QgaW4gYzoKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsZW5ndGgsIHByZWNpc2lvbiwgdHlwZXZhbCA9IFwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfbGVuZ3RoX3ByZWNpc2lvbihvbGRfZGF0 YVsnZWxlbW9pZCddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2V0IHByb3BlciB2 YWx1ZXMgZm9yIG9sZCBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXRf bGVuZ3RoX3ByZWNpc2lvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro LCBwcmVjaXNpb24sIGZ1bGx0eXBlLCBvbGRfZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBsZW5ndGgg JiBwcmVjaXNpb24gYm90aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbmd0aCBh bmQgcHJlY2lzaW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaE9iaiA9 IHJlLnNlYXJjaChyJyhcZCspLChcZCspJywgZnVsbHR5cGUpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIG1hdGNoT2JqOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY1snYXR0bGVuJ10gPSBnZXRfdHlwZV9hdHRyKAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdhdHRsZW4nLCBjCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApIG9yIG1hdGNoT2JqLmdyb3VwKDEpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjWydhdHRwcmVjaXNpb24nXSA9IGdldF90eXBlX2F0dHIoCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0dHByZWNpc2lvbicsIGMKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgb3IgbWF0Y2hPYmouZ3JvdXAoMikKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGxlbmd0aDoKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGxlbmd0aCBvbmx5Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1hdGNoT2JqID0gcmUuc2VhcmNoKHInKFxkKyknLCBmdWxsdHlwZSkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2hPYmo6Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjWydhdHRsZW4nXSA9IGdldF90eXBlX2F0dHIoCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0dGxlbicsIGMKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgb3IgbWF0Y2hPYmouZ3JvdXAoMSkKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbJ2F0dHByZWNpc2lvbiddID0gTm9u ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNbJ2F0dGxlbiddID0gTm9uZQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjWydhdHRwcmVjaXNpb24nXSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIFNldCBwcm9wZXIgdmFsdWVzIGZvciBpbiBuZXcgZGF0YQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc2V0X2xlbmd0aF9wcmVjaXNpb24oCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxlbmd0aCwgcHJlY2lzaW9uLCBmdWxsdHlwZSwgYywgb2xkX2RhdGEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAKICAgICAgICAgICAgICAgICAgICAgICAg IGlmICdjbHR5cGUnIGluIGM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUg PSBjWydjbHR5cGUnXQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvX19pbml0X18ucHkgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBl cy9fX2luaXRfXy5weQppbmRleCAyMzk1NDM5Yy4uYjk5NWM0MDggMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5 cGVzL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL19faW5pdF9fLnB5CkBAIC00NjQsMjIgKzQ2 NCwxNyBAQCBjbGFzcyBUeXBlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyKToK IAogICAgICAgICAgICAgICAgICMgQmVsb3cgbG9naWMgd2lsbCBhbGxvdyB1cyB0byBzcGxpdCBs ZW5ndGgsIHByZWNpc2lvbiBmcm9tCiAgICAgICAgICAgICAgICAgIyB0eXBlIG5hbWUgZm9yIGdy aWQKLSAgICAgICAgICAgICAgICBpbXBvcnQgcmUKLSAgICAgICAgICAgICAgICB0X2xlbiA9IE5v bmUKLSAgICAgICAgICAgICAgICB0X3ByZWMgPSBOb25lCi0KLSAgICAgICAgICAgICAgICAjIElm IHdlIGhhdmUgbGVuZ3RoICYgcHJlY2lzaW9uIGJvdGgKLSAgICAgICAgICAgICAgICBpZiBpc190 bGVuZ3RoIGFuZCBpc19wcmVjaXNpb246Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoT2JqID0g cmUuc2VhcmNoKHInKFxkKyksKFxkKyknLCByb3dbJ2Z1bGx0eXBlJ10pCi0gICAgICAgICAgICAg ICAgICAgIGlmIG1hdGNoT2JqOgotICAgICAgICAgICAgICAgICAgICAgICAgdF9sZW4gPSBtYXRj aE9iai5ncm91cCgxKQotICAgICAgICAgICAgICAgICAgICAgICAgdF9wcmVjID0gbWF0Y2hPYmou Z3JvdXAoMikKLSAgICAgICAgICAgICAgICBlbGlmIGlzX3RsZW5ndGg6Ci0gICAgICAgICAgICAg ICAgICAgICMgSWYgd2UgaGF2ZSBsZW5ndGggb25seQotICAgICAgICAgICAgICAgICAgICBtYXRj aE9iaiA9IHJlLnNlYXJjaChyJyhcZCspJywgcm93WydmdWxsdHlwZSddKQotICAgICAgICAgICAg ICAgICAgICBpZiBtYXRjaE9iajoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRfbGVuID0gbWF0 Y2hPYmouZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRfcHJlYyA9IE5vbmUKKyAg ICAgICAgICAgICAgICBkYXRhID0geworICAgICAgICAgICAgICAgICAgICAnYXR0bGVuJzogTm9u ZSwKKyAgICAgICAgICAgICAgICAgICAgJ2F0dHByZWNpc2lvbic6IE5vbmUKKyAgICAgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgICAgICBzZWxmLnNldF9sZW5ndGhfcHJlY2lzaW9uKAorICAg ICAgICAgICAgICAgICAgICBpc190bGVuZ3RoLCBpc19wcmVjaXNpb24sIHJvd1snZnVsbHR5cGUn XSwgZGF0YQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIHRfbGVuID0gZGF0 YVsnYXR0bGVuJ10KKyAgICAgICAgICAgICAgICB0X3ByZWMgPSBkYXRhWydhdHRwcmVjaXNpb24n XQogCiAgICAgICAgICAgICAgICAgdHlwZV9uYW1lID0gRGF0YVR5cGVSZWFkZXIucGFyc2VfdHlw ZV9uYW1lKHJvd1sndHlwbmFtZSddKQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy91dGlscy5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3V0 aWxzLnB5CmluZGV4IGYzMzBlZDk2Li44YjczYWEwMCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdXRpbHMucHkK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdXRpbHMucHkKQEAgLTgsNyArOCw3IEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAi IiJTY2hlbWEgY29sbGVjdGlvbiBub2RlIGhlbHBlciBjbGFzcyIiIgotCitpbXBvcnQgcmUKIGlt cG9ydCBqc29uCiAKIGZyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZQpAQCAtMzM2LDYg KzMzNiw1NiBAQCBjbGFzcyBEYXRhVHlwZVJlYWRlcjoKIAogICAgICAgICByZXR1cm4gdHlwZV9u YW1lCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0X2xlbmd0aF9wcmVjaXNpb24oY2xz LCBsZW5ndGgsIHByZWNpc2lvbiwgZnVsbHR5cGUsIGRhdGEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9sZF9kYXRhPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUGFyc2UgbGVu Z3RoICYgcHJlY2lzaW9uIGZyb20gZGF0YXR5cGUgYW5kIHRoZW4gYXNzaWduIGl0IHRvIGRhdGF0 eXBlCisgICAgICAgIGFjY29yZGluZyB0byBjbGllbnQgZm9ybWF0CisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICAgIGxlbmd0aDogQm9vbGVhbiBmbGFnIGZvciBsZW5ndGgKKyAgICAgICAgICAg IHByZWNpc2lvbjogQm9vbGVhbiBmbGFnIGZvciBwcmVjaXNpb24KKyAgICAgICAgICAgIGZ1bGx0 eXBlOiBUeXBlIG5hbWUgd2l0aCBsZW5ndGggJiBwcmVjaXNpb24KKyAgICAgICAgICAgIGRhdGE6 IE5ldyB2YWx1ZXMKKyAgICAgICAgICAgIG9sZF9kYXRhOiBPbGQgdmFsdWVzCisgICAgICAgICIi IgorICAgICAgICAjIElmIHdlIGhhdmUgbGVuZ3RoICYgcHJlY2lzaW9uIGJvdGgKKworICAgICAg ICBpZiBsZW5ndGggYW5kIHByZWNpc2lvbjoKKyAgICAgICAgICAgIG1hdGNoX29iaiA9IHJlLnNl YXJjaChyJyhcZCspLChcZCspJywgZnVsbHR5cGUpCisgICAgICAgICAgICBpZiBtYXRjaF9vYmo6 CisgICAgICAgICAgICAgICAgYXR0cmlidXRlX2xlbmd0aCA9IERhdGFUeXBlUmVhZGVyLmdldF92 YWxpZF9sZW5ndGhfdmFsdWUoCisgICAgICAgICAgICAgICAgICAgIGRhdGEuZ2V0KCdhdHRsZW4n LCBOb25lKSkKKyAgICAgICAgICAgICAgICBkYXRhWydhdHRsZW4nXSA9IGF0dHJpYnV0ZV9sZW5n dGggb3IgbWF0Y2hfb2JqLmdyb3VwKDEpCisgICAgICAgICAgICAgICAgYXR0cmlidXRlX3ByZWNp c2lvbiA9IERhdGFUeXBlUmVhZGVyLmdldF92YWxpZF9sZW5ndGhfdmFsdWUoCisgICAgICAgICAg ICAgICAgICAgIGRhdGEuZ2V0KCdhdHRwcmVjaXNpb24nLCBOb25lKSkKKyAgICAgICAgICAgICAg ICBkYXRhWydhdHRwcmVjaXNpb24nXSA9IGF0dHJpYnV0ZV9wcmVjaXNpb24gb3IgbWF0Y2hfb2Jq Lmdyb3VwKAorICAgICAgICAgICAgICAgICAgICAyKQorICAgICAgICBlbGlmIGxlbmd0aDoKKyAg ICAgICAgICAgICMgSWYgd2UgaGF2ZSBsZW5ndGggb25seQorICAgICAgICAgICAgbWF0Y2hfb2Jq ID0gcmUuc2VhcmNoKHInKFxkKyknLCBmdWxsdHlwZSkKKyAgICAgICAgICAgIGlmIG1hdGNoX29i ajoKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVfbGVuZ3RoID0gRGF0YVR5cGVSZWFkZXIuZ2V0 X3ZhbGlkX2xlbmd0aF92YWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5nZXQoJ2F0dGxl bicsIE5vbmUpKQorICAgICAgICAgICAgICAgIGRhdGFbJ2F0dGxlbiddID0gYXR0cmlidXRlX2xl bmd0aCBvciBtYXRjaF9vYmouZ3JvdXAoMSkKKyAgICAgICAgICAgICAgICBkYXRhWydhdHRwcmVj aXNpb24nXSA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgVXNlIHRoZSBvbGQg dmFsdWVzIHRvIGF2b2lkIHVubmVjZXNzYXJ5CisgICAgICAgICAgICBpZiBvbGRfZGF0YToKKyAg ICAgICAgICAgICAgICBpZiAnYXR0bGVuJyBpbiBvbGRfZGF0YToKKyAgICAgICAgICAgICAgICAg ICAgaWYgb2xkX2RhdGFbJ2F0dGxlbiddICE9ICctMSc6CisgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhWydhdHRsZW4nXSA9IG9sZF9kYXRhLmdldCgnYXR0bGVuJywgTm9uZSkKKyAgICAgICAg ICAgICAgICAgICAgaWYgJ2F0dHByZWNpc2lvbicgaW4gb2xkX2RhdGE6CisgICAgICAgICAgICAg ICAgICAgICAgICBpZiBvbGRfZGF0YVsnYXR0cHJlY2lzaW9uJ10gIT0gJy0xJzoKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhWydhdHRwcmVjaXNpb24nXSA9IG9sZF9kYXRhLmdldCgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0dHByZWNpc2lvbicsIE5vbmUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg Z2V0X3ZhbGlkX2xlbmd0aF92YWx1ZShjbHMsIHZhbCk6CisgICAgICAgIHJldHVybiB2YWwgaWYg dmFsIGFuZCBpbnQodmFsKSAhPSAtMSBlbHNlIE5vbmUKKwogCiBkZWYgdHJpZ2dlcl9kZWZpbml0 aW9uKGRhdGEpOgogICAgICIiIgo= --94eb2c1114584760960566e9773d--