Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aygmb-0004oK-MB for pgadmin-hackers@arkaria.postgresql.org; Fri, 06 May 2016 14:31:10 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1aygmb-0005q6-6h for pgadmin-hackers@arkaria.postgresql.org; Fri, 06 May 2016 14:31:09 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1aygmL-00057e-M8 for pgadmin-hackers@postgresql.org; Fri, 06 May 2016 14:30:54 +0000 Received: from mail-qk0-x231.google.com ([2607:f8b0:400d:c09::231]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1aygmI-0003ZJ-OU for pgadmin-hackers@postgresql.org; Fri, 06 May 2016 14:30:52 +0000 Received: by mail-qk0-x231.google.com with SMTP id r184so60907303qkc.1 for ; Fri, 06 May 2016 07:30:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=d4iLibrMV25AoWE/DoAZ9VFIjCMoP/21lPvwcuYJqw4=; b=1wwUre5NjYqh0dFxxw/yMEblVdxDvaxR/DCc6nSoeFQXYkHE0Veo3If/yf3KmLvPeK ogdrOQhQR5/jutF2S/Rw0WRjbIml5H1cFafka60HJZq5kSIFa4BQCsLVbd35U1IPljYf YAU8Eiohq7RKKHJhoaMg3058HVSssvZ9EEZlDF/hZSZe5VzPQst0OvANTkQHKHZjV995 eb8MrZqOTvWgKVSpKqIN4fhAPKyE2dxIfRcU7O2N4nCUtWd26qioxVPuFAQdPqeVwFVn /LJ3Xfo4A5AYZxrdHemCb9ZxqjZQNxFeelXIclQQFE5mbQemfXRIATgobuLeL8BNvyPq 26Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=d4iLibrMV25AoWE/DoAZ9VFIjCMoP/21lPvwcuYJqw4=; b=IwcuinqU2uebpYikrFfIpeSFoIMlXwrqUKvFCeiJI1Ql9xsyftWS26QWL4rHtzeWZ4 jkEcybgSS4GYtwnbQBQL4+LoYitU15Zr5mbMb30YOVY7p+F72g30guBFfmDGzajpNTMt LVDQF+TL4P6e2XWdzlDNXycS1jSpbK4Hw5hsE2ICPTTOPfzQ4EjCEl5ELP5m4kAPMLUN VLPWEQIRG/XdWCYvcZUH+UTztlGNP8NnokhhV8WHaCjdL1z6y7wn9u6mTsgT3WsB5KY9 B2HIL/vTNFqfl6+UkD+TffzUwgwbOCHJEX+Bez8q2K3ykK0ClmJbXc5J+9r3tBSlcZCT +EGA== X-Gm-Message-State: AOPr4FVzluzy4oe/k0C/xAXWw3pDI6C52sSbL8z6pOYRtyEzrRpEX+TNURPHK/oEbQVlas6s73MPwUjoFJRikZaq X-Received: by 10.55.173.5 with SMTP id w5mr21904685qke.115.1462545049683; Fri, 06 May 2016 07:30:49 -0700 (PDT) MIME-Version: 1.0 Received: by 10.55.170.147 with HTTP; Fri, 6 May 2016 07:30:30 -0700 (PDT) From: Murtuza Zabuawala Date: Fri, 6 May 2016 20:00:30 +0530 Message-ID: Subject: Re: PATCH: Initiale for "Restore Utility" [pgAdmin4] To: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a114f3bee29470e05322d4e65 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 --001a114f3bee29470e05322d4e65 Content-Type: multipart/alternative; boundary=001a114f3bee29470805322d4e63 --001a114f3bee29470805322d4e63 Content-Type: text/plain; charset=UTF-8 Hi, PFA updated patch, I have fixed typo in argument template. -- Regards, Murtuza Zabuawala EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Fri, May 6, 2016 at 6:56 PM, Murtuza Zabuawala < murtuza.zabuawala@enterprisedb.com> wrote: > Hi, > > PFA initial patch for restore utility. > > *Note:* This patch depends on File manager patch. > > > -- > Regards, > Murtuza Zabuawala > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --001a114f3bee29470805322d4e63 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA updated patch, I have fixed typ= o in argument template.

--
Regards,
Murtuza Zabuawala
EnterpriseDB:=C2=A0http://ww= w.enterprisedb.com
The Enterprise PostgreSQL Company


On Fri, May 6, 2016 at 6:56 PM, Murtuza Zabu= awala <murtuza.zabuawala@enterprisedb.com> = wrote:
Hi,

PFA initial patch for restore utility.

No= te: This patch depends on File manager patch.

<= div>
--Regards,
Murtuza Zabuawala
EnterpriseDB:=C2=A0= http://www.enterprisedb.comTh= e Enterprise PostgreSQL Company


--001a114f3bee29470805322d4e63-- --001a114f3bee29470e05322d4e65 Content-Type: application/octet-stream; name="Restore_tool_v2.patch" Content-Disposition: attachment; filename="Restore_tool_v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_invtj30n1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvX19pbml0 X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1OTZkYTkK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3Jl L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMjA3IEBACisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyBy ZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiJJbXBsZW1lbnRzIFJl c3RvcmUgVXRpbGl0eSIiIgorCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitm cm9tIHJhbmRvbSBpbXBvcnQgcmFuZGludAorZnJvbSBmbGFzayBpbXBvcnQg cmVuZGVyX3RlbXBsYXRlLCByZXF1ZXN0LCBjdXJyZW50X2FwcCwgXAorICAg IHVybF9mb3IsIFJlc3BvbnNlCitmcm9tIGZsYXNrLmV4dC5iYWJlbCBpbXBv cnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1h a2VfanNvbl9yZXNwb25zZSwgXAorICAgIGludGVybmFsX3NlcnZlcl9lcnJv ciwgYmFkX3JlcXVlc3QKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgUGdB ZG1pbk1vZHVsZQorZnJvbSBmbGFzay5leHQuc2VjdXJpdHkgaW1wb3J0IGxv Z2luX3JlcXVpcmVkCitmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IGRiLCBK b2JzLCBTZXJ2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RS SVZFUiwgVVRJTElUSUVTCitmcm9tIHBnYWRtaW4udXRpbHMucHJlZmVyZW5j ZXMgaW1wb3J0IFByZWZlcmVuY2VzCitmcm9tIHBnYWRtaW4udG9vbHMuYmFj a3VwIGltcG9ydCBfZm9ybWF0X3F0SWRlbnRzCisKKyMgc2V0IHRlbXBsYXRl IHBhdGggZm9yIHNxbCBzY3JpcHRzCitNT0RVTEVfTkFNRSA9ICdyZXN0b3Jl Jworc2VydmVyX2luZm8gPSB7fQorCisKK2NsYXNzIFJlc3RvcmVNb2R1bGUo UGdBZG1pbk1vZHVsZSk6CisgICAgIiIiCisgICAgY2xhc3MgUmVzdG9yZU1v ZHVsZShPYmplY3QpOgorCisgICAgICAgIEl0IGlzIGEgdXRpbGl0eSB3aGlj aCBpbmhlcml0cyBQZ0FkbWluTW9kdWxlCisgICAgICAgIGNsYXNzIGFuZCBk ZWZpbmUgbWV0aG9kcyB0byBsb2FkIGl0cyBvd24KKyAgICAgICAgamF2YXNj cmlwdCBmaWxlLgorCisgICAgTEFCRUwgPSBnZXR0ZXh0KCdCaW5hcnkgUGF0 aHMnKQorICAgICIiIgorCisgICAgTEFCRUwgPSBnZXR0ZXh0KCdVdGlsaXRp ZXMnKQorCisgICAgZGVmIGdldF9vd25famF2YXNjcmlwdHMoc2VsZik6Cisg ICAgICAgICIiIiIKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIGxp c3Q6IGpzIGZpbGVzIHVzZWQgYnkgdGhpcyBtb2R1bGUKKyAgICAgICAgIiIi CisgICAgICAgIHJldHVybiBbeworICAgICAgICAgICAgJ25hbWUnOiAncGdh ZG1pbi50b29scy5yZXN0b3JlJywKKyAgICAgICAgICAgICdwYXRoJzogdXJs X2ZvcigncmVzdG9yZS5pbmRleCcpICsgJ3Jlc3RvcmUnLAorICAgICAgICAg ICAgJ3doZW4nOiBOb25lCisgICAgICAgIH1dCisKKyAgICBkZWYgcmVnaXN0 ZXJfcHJlZmVyZW5jZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBH ZXQgc3RvcmFnZSBkaXJlY3RvcnkgcHJlZmVyZW5jZQorICAgICAgICAiIiIK KyAgICAgICAgc2VsZi5zdG9yYWdlX2RpcmVjdG9yeSA9IFByZWZlcmVuY2Vz Lm1vZHVsZSgnZmlsZV9tYW5hZ2VyJykKKyAgICAgICAgc2VsZi5zdG9yYWdl X2RpciA9IHNlbGYuc3RvcmFnZV9kaXJlY3RvcnkucHJlZmVyZW5jZSgKKyAg ICAgICAgICAgICAgICAnc3RvcmFnZV9kaXInCisgICAgICAgICkKKworICAg ICAgICBzZWxmLmJpbl9wYXRoID0gUHJlZmVyZW5jZXMubW9kdWxlKCdiYWNr dXAnKQorICAgICAgICAjIFJlZ2lzdGVyICdFREIgc3BlY2lmaWMgdXRpbGl0 eSBiaW5hcnkgZGlyZWN0b3J5JyBwcmVmZXJlbmNlCisgICAgICAgIHNlbGYu ZWRiX3V0aWxpdHlfZGlyID0gc2VsZi5iaW5fcGF0aC5wcmVmZXJlbmNlKAor ICAgICAgICAgICAgICAgICdlZGJfdXRpbGl0aWVzX2Jpbl9kaXInCisgICAg ICAgICkKKworICAgICAgICAjIFJlZ2lzdGVyICdQRyBzcGVjaWZpYyB1dGls aXR5IGJpbmFyeSBkaXJlY3RvcnknIHByZWZlcmVuY2UKKyAgICAgICAgc2Vs Zi5wZ191dGlsaXR5X2RpciA9IHNlbGYuYmluX3BhdGgucHJlZmVyZW5jZSgK KyAgICAgICAgICAgICAgICAncGdfdXRpbGl0aWVzX2Jpbl9kaXInCisgICAg ICAgICkKKworIyBDcmVhdGUgYmx1ZXByaW50IGZvciBSZXN0b3JlTW9kdWxl IGNsYXNzCitibHVlcHJpbnQgPSBSZXN0b3JlTW9kdWxlKAorICAgIE1PRFVM RV9OQU1FLCBfX25hbWVfXywgc3RhdGljX3VybF9wYXRoPScnKQorCisKK0Bi bHVlcHJpbnQucm91dGUoIi8iKQorQGxvZ2luX3JlcXVpcmVkCitkZWYgaW5k ZXgoKToKKyAgICByZXR1cm4gYmFkX3JlcXVlc3QoZXJyb3Jtc2c9Z2V0dGV4 dCgiVGhpcyBVUkwgY2FuIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkhIikpCisK KworQGJsdWVwcmludC5yb3V0ZSgiL3Jlc3RvcmUuanMiKQorQGxvZ2luX3Jl cXVpcmVkCitkZWYgc2NyaXB0KCk6CisgICAgIiIicmVuZGVyIG93biBqYXZh c2NyaXB0IiIiCisgICAgcmV0dXJuIFJlc3BvbnNlKHJlc3BvbnNlPXJlbmRl cl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAicmVzdG9yZS9qcy9yZXN0 b3JlLmpzIiwgXz1nZXR0ZXh0KSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9 MjAwLAorICAgICAgICAgICAgICAgIG1pbWV0eXBlPSJhcHBsaWNhdGlvbi9q YXZhc2NyaXB0IikKKworCitkZWYgdXRpbGl0eV93aXRoX2Jpbl9wYXRoKHNl cnZlcl90eXBlKToKKyAgICAiIiIKKyAgICBBcmdzOgorICAgICAgICBzZXJ2 ZXJfdHlwZTogU2VydmVyIHR5cGUgKFBHL1BQQVMpCisKKyAgICBSZXR1cm5z OgorICAgICAgICBVdGlsaXR5IHRvIHVzZSBmb3IgcmVzdG9yZSB3aXRoIGZ1 bGwgcGF0aCB0YWtlbiBmcm9tIHByZWZlcmVuY2UKKyAgICAiIiIKKyAgICBp ZiBzZXJ2ZXJfdHlwZSA9PSAncHBhcyc6CisgICAgICAgIHJldHVybiBvcy5w YXRoLmpvaW4oYmx1ZXByaW50LmVkYl91dGlsaXR5X2Rpci5nZXQoKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBVVElMSVRJRVNbJ0VEQl9SRVNU T1JFJ10pCisgICAgZWxpZiBzZXJ2ZXJfdHlwZSA9PSAncGcnOgorICAgICAg ICByZXR1cm4gb3MucGF0aC5qb2luKGJsdWVwcmludC5wZ191dGlsaXR5X2Rp ci5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVElMSVRJ RVNbJ1BHX1JFU1RPUkUnXSkKKworCitkZWYgZmlsZW5hbWVfd2l0aF9maWxl X21hbmFnZXJfcGF0aChmaWxlKToKKyAgICAiIiIKKyAgICBBcmdzOgorICAg ICAgICBmaWxlOiBGaWxlIG5hbWUgcmV0dXJuZWQgZnJvbSBjbGllbnQgZmls ZSBtYW5hZ2VyCisKKyAgICBSZXR1cm5zOgorICAgICAgICBGaWxlbmFtZSB0 byB1c2UgZm9yIHJlc3RvcmUgd2l0aCBmdWxsIHBhdGggdGFrZW4gZnJvbSBw cmVmZXJlbmNlCisgICAgIiIiCisgICAgIyBTZXQgZmlsZSBtYW5hZ2VyIGRp cmVjdG9yeSBmcm9tIHByZWZlcmVuY2UKKyAgICBmaWxlX21hbmFnZXJfZGly ID0gYmx1ZXByaW50LnN0b3JhZ2VfZGlyLmdldCgpCisgICAgcmV0dXJuIG9z LnBhdGguam9pbihmaWxlX21hbmFnZXJfZGlyLCBmaWxlKQorCisKK0BibHVl cHJpbnQucm91dGUoJy9jcmVhdGVfam9iLzxpbnQ6c2lkPicsIG1ldGhvZHM9 WydQT1NUJ10pCitAbG9naW5fcmVxdWlyZWQKK2RlZiBjcmVhdGVfcmVzdG9y ZV9qb2Ioc2lkKToKKyAgICAiIiIKKyAgICBBcmdzOgorICAgICAgICBzaWQ6 IFNlcnZlciBJRAorCisgICAgICAgIENyZWF0ZXMgYSBuZXcgam9iIGZvciBy ZXN0b3JlIHRhc2sKKworICAgIFJldHVybnM6CisgICAgICAgIE5vbmUKKyAg ICAiIiIKKyAgICBpZiByZXF1ZXN0LmZvcm06CisgICAgICAgICMgQ29udmVy dCBJbW11dGFibGVEaWN0IHRvIGRpY3QKKyAgICAgICAgZGF0YSA9IGRpY3Qo cmVxdWVzdC5mb3JtKQorICAgICAgICBkYXRhID0ganNvbi5sb2FkcyhkYXRh WydkYXRhJ11bMF0pCisgICAgZWxzZToKKyAgICAgICAgZGF0YSA9IGpzb24u bG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorCisgICAgZGF0YVsnZmls ZSddID0gZmlsZW5hbWVfd2l0aF9maWxlX21hbmFnZXJfcGF0aChkYXRhWydm aWxlJ10pCisKKyAgICAjIEZldGNoIHRoZSBzZXJ2ZXIgZGV0YWlscyBsaWtl IGhvc3RuYW1lLCBwb3J0LCByb2xlcyBldGMKKyAgICBzZXJ2ZXIgPSBTZXJ2 ZXIucXVlcnkuZmlsdGVyX2J5KAorICAgICAgICBpZD1zaWQpLmZpcnN0KCkK KworICAgIGlmIHNlcnZlciBpcyBOb25lOgorICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAg ICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgiQ291bGRuJ3QgZmluZCB0aGUg Z2l2ZW4gc2VydmVyIikKKyAgICAgICAgKQorCisgICAgIyBUbyBmZXRjaCBN ZXRhRGF0YSBmb3IgdGhlIHNlcnZlcgorICAgIGZyb20gcGdhZG1pbi51dGls cy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKKyAgICBtYW5hZ2VyID0gZ2V0 X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2Vy KHNlcnZlci5pZCkKKyAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKCkK KyAgICBjb25uZWN0ZWQgPSBjb25uLmNvbm5lY3RlZCgpCisKKyAgICBpZiBu b3QgY29ubmVjdGVkOgorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3Bv bnNlKAorICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgZXJy b3Jtc2c9Z2V0dGV4dCgiUGxlYXNlIGNvbm5lY3QgdG8gdGhlIHNlcnZlciBm aXJzdC4uLiIpCisgICAgICAgICkKKworICAgIHV0aWxpdHkgPSB1dGlsaXR5 X3dpdGhfYmluX3BhdGgobWFuYWdlci5zZXJ2ZXJfdHlwZSkKKworICAgIGFy Z3VtZW50cyA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgJ2FyZ3VtZW50 cy9yZXN0b3JlX29iamVjdHMuYXJncycsCisgICAgICAgIHNlcnZlcj1zZXJ2 ZXIsCisgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAgICAgZmlyc3RfdGltZT1G YWxzZQorICAgICkKKworICAgIGFyZ3VtZW50cyA9IF9mb3JtYXRfcXRJZGVu dHMoYXJndW1lbnRzKQorCisgICAgdHJ5OgorICAgICAgICAjIEdlbmVyYXRl IHJhbmRvbSBqb2IgaWQKKyAgICAgICAgamlkID0gcmFuZGludCgyMDAxLCAz MDAwKQorICAgICAgICBjcmVhdGVfam9iID0gSm9icygKKyAgICAgICAgICAg IGpvYl9pZD1qaWQsCisgICAgICAgICAgICBjb21tYW5kPXV0aWxpdHksCisg ICAgICAgICAgICBhcmd1bWVudHM9YXJndW1lbnRzCisgICAgICAgICkKKyAg ICAgICAgIyBTYXZlIGl0CisgICAgICAgIGRiLnNlc3Npb24uYWRkKGNyZWF0 ZV9qb2IpCisgICAgICAgIGRiLnNlc3Npb24uY29tbWl0KCkKKworICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgY3VycmVudF9hcHAubG9n Z2VyLmV4Y2VwdGlvbihlKQorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAg IHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgIGVycm9ybXNnPXN0cihlKQorICAg ICAgICApCisgICAgIyBSZXR1cm4gcmVzcG9uc2UKKyAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICBkYXRhPXsnam9iX2lkJzogamlk LCAnU3VjY2Vzcyc6IDF9CisgICAgKQorCisiIiIKK1RPRE86Ly8KKyAgICBB ZGQgYnJvd3NlciB0cmVlCisiIiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rl bXBsYXRlcy9hcmd1bWVudHMvcmVzdG9yZV9vYmplY3RzLmFyZ3MgYi93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL3RlbXBsYXRlcy9hcmd1bWVudHMvcmVz dG9yZV9vYmplY3RzLmFyZ3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMTkyMGY5OAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL3Jlc3RvcmUvdGVtcGxhdGVzL2FyZ3VtZW50cy9yZXN0b3Jl X29iamVjdHMuYXJncwpAQCAtMCwwICsxLDMzIEBACistLWhvc3Qge3tzZXJ2 ZXIuaG9zdH19IC0tcG9ydCB7e3NlcnZlci5wb3J0fX0gLS11c2VybmFtZSAi e3tjb25ufHF0SWRlbnQoc2VydmVyLnVzZXJuYW1lKX19IiAtLXJvbGUgeyUg aWYgZGF0YS5yb2xlICV9Cisie3sgY29ubnxxdElkZW50KGRhdGEucm9sZSkg fX0iIHslIGVsc2UgJX0ie3sgY29ubnxxdElkZW50KHNlcnZlci5yb2xlKSB9 fSIgeyUgZW5kaWYgJX0tLW5vLXBhc3N3b3JkIC0tZGJuYW1lICJ7eworY29u bnxxdElkZW50KGRhdGEuZGF0YWJhc2UpIH19IiB7JSBpZiBkYXRhLmZvcm1h dCA9PSAnRGlyZWN0b3J5JyAlfS0tZm9ybWF0IGRpcmVjdG9yeQorIHslIGVu ZGlmICV9eyUgaWYgZGF0YS5wcmVfZGF0YSAlfQorLS1zZWN0aW9uIHByZS1k YXRhIHslIGVuZGlmICV9eyUgaWYgZGF0YS5kYXRhICV9CistLXNlY3Rpb24g ZGF0YSB7JSBlbmRpZiAlfXslIGlmIGRhdGEucG9zdF9kYXRhICV9CistLXNl Y3Rpb24gcG9zdC1kYXRhIHslIGVuZGlmICV9eyUgaWYgZGF0YS5vbmx5X2Rh dGEgJX0KKy0tZGF0YS1vbmx5IHslIGVsc2UgJX0KK3slIGlmIGRhdGEuZG5z X293bmVyICV9CistLW5vLW93bmVyIHslIGVuZGlmICV9eyUgaWYgZGF0YS5k bnNfcHJpdmlsZWdlICV9CistLW5vLXByaXZpbGVnZXMgeyUgZW5kaWYgJX17 JSBpZiBkYXRhLmRuc190YWJsZXNwYWNlICV9CistLW5vLXRhYmxlc3BhY2Vz IHslIGVuZGlmICV9Cit7JSBlbmRpZiAlfXslIGlmIGRhdGEub25seV9zY2hl bWEgJX0KKy0tc2NoZW1hLW9ubHkgeyUgZWxzZSAlfQoreyUgaWYgZGF0YS5k aXNhYmxlX3RyaWdnZXIgJX0tLWRpc2FibGUtdHJpZ2dlcnMgeyUgZW5kaWYg JX0KK3slIGVuZGlmICV9eyUgaWYgZGF0YS5pbmNsdWRlX2NyZWF0ZV9kYXRh YmFzZSAlfQorLS1jcmVhdGUgeyUgZW5kaWYgJX17JSBpZiBkYXRhLmNsZWFu ICV9CistLWNsZWFuIHslIGVuZGlmICV9eyUgaWYgZGF0YS5zaW5nbGVfdHJh bnNhY3Rpb24gJX0KKy0tc2luZ2xlLXRyYW5zYWN0aW9uIHslIGVuZGlmICV9 eyUgaWYgZGF0YS5ub19kYXRhX2ZhaWxfdGFibGUgJX0KKy0tbm8tZGF0YS1m b3ItZmFpbGVkLXRhYmxlcyB7JSBlbmRpZiAlfXslIGlmIGRhdGEudXNlX3Nl dF9zZXNzaW9uX2F1dGggJX0KKy0tdXNlLXNldC1zZXNzaW9uLWF1dGhvcml6 YXRpb24geyUgZW5kaWYgJX17JSBpZiBkYXRhLmV4aXRfb25fZXJyb3IgJX0K Ky0tZXhpdC1vbi1lcnJvciB7JSBlbmRpZiAlfXslIGlmIGRhdGEubm9fb2Zf am9icyAlfQorLS1qb2JzIHt7IGRhdGEubm9fb2Zfam9icyB9fSB7JSBlbmRp ZiAlfXslIGlmIGRhdGEudmVyYm9zZSAlfQorLS12ZXJib3NlIHslIGVuZGlm ICV9eyUgaWYgZGF0YS5zY2hlbWFzICV9CistLXNjaGVtYSB7eyBjb25ufHF0 SWRlbnQoZGF0YS5zY2hlbWFzKSB9fSB7JSBlbmRpZiAlfXslIGlmIGRhdGEu dGFibGVzICV9CistLXRhYmxlIHt7IGNvbm58cXRJZGVudChkYXRhLnRhYmxl cykgfX0geyUgZW5kaWYgJX17JSBpZiBkYXRhLmZ1bmN0aW9uX25vZGUgJX0K Ky0tZnVuY3Rpb24ge3sgY29ubnxxdElkZW50KGRhdGEuZnVuY3Rpb25fbm9k ZSkgfX0geyUgZW5kaWYgJX17JSBpZiBkYXRhLnRyaWdnZXJfbm9kZSAlfQor LS10cmlnZ2VyIHt7IGNvbm58cXRJZGVudChkYXRhLnRyaWdnZXJfbm9kZSkg fX0geyUgZW5kaWYgJX17JSBpZiBkYXRhLnRyaWdnZXJfZnVuY3Rpb25fbm9k ZSAlfQorLS1mdW5jdGlvbiB7eyBjb25ufHF0SWRlbnQoZGF0YS50cmlnZ2Vy X2Z1bmN0aW9uX25vZGUpIH19IHslIGVuZGlmICV9eyUgaWYgZGF0YS5pbmRl eF9ub2RlICV9CistLWluZGV4IHt7IGNvbm58cXRJZGVudChkYXRhLmluZGV4 X25vZGUpIH19IHslIGVuZGlmICV9eyUgaWYgZGF0YS5maWxlICV9Cisie3tk YXRhLmZpbGV9fSIKK3slIGVuZGlmICV9eyUgaWYgZmlyc3RfdGltZSAlfQor LS1saXN0IHslIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZW1w bGF0ZXMvcmVzdG9yZS9qcy9yZXN0b3JlLmpzIGIvd2ViL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS90ZW1wbGF0ZXMvcmVzdG9yZS9qcy9yZXN0b3JlLmpzCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNjhmNGYKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rl bXBsYXRlcy9yZXN0b3JlL2pzL3Jlc3RvcmUuanMKQEAgLTAsMCArMSw0NDIg QEAKK2RlZmluZShbCisgICAgICAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAn dW5kZXJzY29yZS5zdHJpbmcnLCAnYWxlcnRpZnknLAorICAgICAgJ3BnYWRt aW4uYnJvd3NlcicsICdiYWNrYm9uZScsICdiYWNrZ3JpZCcsICdiYWNrZm9y bScsICdwZ2FkbWluLmJyb3dzZXIubm9kZScKKyAgICAgIF0sCisKKyAgLy8g VGhpcyBkZWZpbmVzIFJlc3RvcmUgZGlhbG9nCisgIGZ1bmN0aW9uKCQsIF8s IFMsIGFsZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tib25lLCBCYWNrZ3JpZCwg QmFja2Zvcm0sIHBnTm9kZSkgeworCisgICAgLy8gaWYgbW9kdWxlIGlzIGFs cmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRvIHRoYXQuCisgICAgaWYgKHBn QnJvd3Nlci5SZXN0b3JlKSB7CisgICAgICByZXR1cm4gcGdCcm93c2VyLlJl c3RvcmU7CisgICAgfQorCisgICAgdmFyIEN1c3RvbVN3aXRjaENvbnRyb2wg PSBCYWNrZm9ybS5DdXN0b21Td2l0Y2hDb250cm9sID0gQmFja2Zvcm0uU3dp dGNoQ29udHJvbC5leHRlbmQoeworICAgICAgICB0ZW1wbGF0ZTogXy50ZW1w bGF0ZShbCisgICAgICAgICAgJzxsYWJlbCBjbGFzcz0iPCU9QmFja2Zvcm0u Y29udHJvbExhYmVsQ2xhc3NOYW1lJT4gY3VzdG9tX3N3aXRjaF9sYWJlbF9j bGFzcyI+PCU9bGFiZWwlPjwvbGFiZWw+JywKKyAgICAgICAgICAnPGRpdiBj bGFzcz0iPCU9QmFja2Zvcm0uY29udHJvbHNDbGFzc05hbWUlPiBjdXN0b21f c3dpdGNoX2NvbnRyb2xfY2xhc3MiPicsCisgICAgICAgICAgJyAgPGRpdiBj bGFzcz0iY2hlY2tib3giPicsCisgICAgICAgICAgJyAgICA8bGFiZWw+JywK KyAgICAgICAgICAnICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFz cz0iPCU9ZXh0cmFDbGFzc2VzLmpvaW4oXCcgXCcpJT4iIG5hbWU9IjwlPW5h bWUlPiIgPCU9dmFsdWUgPyAiY2hlY2tlZD1cJ2NoZWNrZWRcJyIgOiAiIiU+ IDwlPWRpc2FibGVkID8gImRpc2FibGVkIiA6ICIiJT4gPCU9cmVxdWlyZWQg PyAicmVxdWlyZWQiIDogIiIlPiAvPicsCisgICAgICAgICAgJyAgICA8L2xh YmVsPicsCisgICAgICAgICAgJyAgPC9kaXY+JywKKyAgICAgICAgICAnPC9k aXY+JywKKyAgICAgICAgICAnPCUgaWYgKGhlbHBNZXNzYWdlICYmIGhlbHBN ZXNzYWdlLmxlbmd0aCkgeyAlPicsCisgICAgICAgICAgJyAgPHNwYW4gY2xh c3M9IjwlPUJhY2tmb3JtLmhlbHBNZXNzYWdlQ2xhc3NOYW1lJT4iPjwlPWhl bHBNZXNzYWdlJT48L3NwYW4+JywKKyAgICAgICAgICAnPCUgfSAlPicKKyAg ICAgICAgXS5qb2luKCJcbiIpKSwKKyAgICAgICAgY2xhc3NOYW1lOiAncGdh ZG1pbi1jb250cm9sLWdyb3VwIGZvcm0tZ3JvdXAgY29sLXhzLTYnCisgICAg fSk7CisKKyAgICAvL1Jlc3RvcmUgTW9kZWwgKE9iamVjdHMgbGlrZSBEYXRh YmFzZS9TY2hlbWEvVGFibGUpCisgICAgdmFyIFJlc3RvcmVPYmplY3RNb2Rl bCA9IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7CisgICAgICBpZEF0dHJpYnV0 ZTogJ2lkJywKKyAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgIGZpbGU6IHVu ZGVmaW5lZCwKKyAgICAgICAgcm9sZTogJ3Bvc3RncmVzJywKKyAgICAgICAg Zm9ybWF0OiAnQ3VzdG9tIG9yIHRhcicsCisgICAgICAgIHZlcmJvc2U6IHRy dWUsCisgICAgICAgIGJsb2JzOiB0cnVlLAorICAgICAgICBlbmNvZGluZzog dW5kZWZpbmVkLAorICAgICAgICBkYXRhYmFzZTogdW5kZWZpbmVkLAorICAg ICAgICBzY2hlbWFzOiB1bmRlZmluZWQsCisgICAgICAgIHRhYmxlczogdW5k ZWZpbmVkLAorICAgICAgICBmdW5jdGlvbl9ub2RlOiB1bmRlZmluZWQsCisg ICAgICAgIHRyaWdnZXJfbm9kZTogdW5kZWZpbmVkLAorICAgICAgICB0cmln Z2VyX2Z1bmN0aW9uX25vZGU6IHVuZGVmaW5lZCwKKyAgICAgICAgaW5kZXhf bm9kZTogdW5kZWZpbmVkCisgICAgICB9LAorICAgICAgICAvLyBEZWZhdWx0 IHZhbHVlcyEKKyAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYXR0cnMs IGFyZ3MpIHsKKyAgICAgICAgICAvLyBTZXQgZGVmYXVsdCBvcHRpb25zIGFj Y29yZGluZyB0byBub2RlIHR5cGUgc2VsZWN0aW9uIGJ5IHVzZXIKKyAgICAg ICAgICAgIHZhciBub2RlX3R5cGUgPSBhdHRycy5ub2RlX2RhdGEudHlwZTsK KworICAgICAgICAgICAgaWYgKG5vZGVfdHlwZSkgeworICAgICAgICAgICAg ICAvLyBPbmx5X1NjaGVtYSBvcHRpb24KKyAgICAgICAgICAgICAgaWYgKG5v ZGVfdHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCBub2RlX3R5cGUgPT09ICdpbmRl eCcKKyAgICAgICAgICAgICAgfHwgbm9kZV90eXBlID09PSAndHJpZ2dlcicp IHsKKyAgICAgICAgICAgICAgICB0aGlzLnNldCh7J29ubHlfc2NoZW1hJzog dHJ1ZX0sIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgfQorCisg ICAgICAgICAgICAgIC8vIE9ubHlfRGF0YSBvcHRpb24KKyAgICAgICAgICAg ICAgaWYgKG5vZGVfdHlwZSA9PT0gJ3RhYmxlJykgeworICAgICAgICAgICAg ICAgIHRoaXMuc2V0KHsnb25seV9kYXRhJzogdHJ1ZX0sIHtzaWxlbnQ6IHRy dWV9KTsKKyAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgIC8vIENs ZWFuIG9wdGlvbgorICAgICAgICAgICAgICBpZiAobm9kZV90eXBlID09PSAn ZnVuY3Rpb24nIHx8IG5vZGVfdHlwZSA9PT0gJ3RyaWdnZXJfZnVuY3Rpb24n KSB7CisgICAgICAgICAgICAgICAgdGhpcy5zZXQoeydjbGVhbic6IHRydWV9 LCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgICBCYWNrYm9uZS5Nb2RlbC5wcm90b3R5cGUuaW5p dGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgfSwKKyAg ICAgIHNjaGVtYTogW3sKKyAgICAgICAgaWQ6ICdmb3JtYXQnLCBsYWJlbDog J3t7IF8oJ0Zvcm1hdCcpIH19JywKKyAgICAgICAgdHlwZTogJ3RleHQnLCBk aXNhYmxlZDogZmFsc2UsCisgICAgICAgIGNvbnRyb2w6ICdzZWxlY3QyJywg c2VsZWN0MjogeworICAgICAgICAgICAgYWxsb3dDbGVhcjogZmFsc2UsCisg ICAgICAgICAgICB3aWR0aDogIjEwMCUiCisgICAgICAgIH0sCisgICAgICAg IG9wdGlvbnM6IFsKKyAgICAgICAgICB7bGFiZWw6ICJDdXN0b20gb3IgdGFy IiwgdmFsdWU6ICJDdXN0b20gb3IgdGFyIn0sCisgICAgICAgICAge2xhYmVs OiAiRGlyZWN0b3J5IiwgdmFsdWU6ICJEaXJlY3RvcnkifQorICAgICAgICBd CisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdmaWxlJywgbGFiZWw6ICd7eyBf KCdGaWxlbmFtZScpIH19JywKKyAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNh YmxlZDogZmFsc2UsIGNvbnRyb2w6IEJhY2tmb3JtLkZpbGVDb250cm9sLAor ICAgICAgICBkaWFsb2dfdHlwZTogJ3NlbGVjdF9maWxlJywgc3VwcF90eXBl czogWycqJywgJ2JhY2t1cCcsJ3NxbCcsICdwYXRjaCddCisgICAgICB9LHsK KyAgICAgICAgaWQ6ICdub19vZl9qb2JzJywgbGFiZWw6ICd7eyBfKCdOdW1i ZXIgb2Ygam9icycpIH19JywKKyAgICAgICAgdHlwZTogJ2ludCcKKyAgICAg IH0seworICAgICAgICBpZDogJ3JvbGUnLCBsYWJlbDogJ3t7IF8oJ1JvbGUg bmFtZScpIH19JywKKyAgICAgICAgY29udHJvbDogJ25vZGUtbGlzdC1ieS1u YW1lJywgbm9kZTogJ3JvbGUnLAorICAgICAgICBzZWxlY3QyOiB7IGFsbG93 Q2xlYXI6IGZhbHNlIH0KKyAgICAgIH0seworICAgICAgICB0eXBlOiAnbmVz dGVkJywgY29udHJvbDogJ2ZpZWxkc2V0JywgbGFiZWw6ICd7eyBfKCdTZWN0 aW9ucycpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBfKCdSZXN0b3JlIG9w dGlvbnMnKSB9fScsCisgICAgICAgIHNjaGVtYTpbeworICAgICAgICAgIGlk OiAncHJlX2RhdGEnLCBsYWJlbDogJ3t7IF8oJ1ByZS1kYXRhJykgfX0nLAor ICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRy b2wsIGdyb3VwOiAne3sgXygnU2VjdGlvbnMnKSB9fScsCisgICAgICAgICAg ZGVwczogWydvbmx5X2RhdGEnLCAnb25seV9zY2hlbWEnXSwgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUu dHlwZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0aGlzLm5vZGUudHlwZSAhPT0gJ3Rh YmxlJworICAgICAgICAgICAgICAgICAgICYmIHRoaXMubm9kZS50eXBlICE9 PSAndHJpZ2dlcicKKyAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm5vZGUu dHlwZSAhPT0gJ3RyaWdnZXJfZnVuY3Rpb24nCisgICAgICAgICAgICAgICAg ICAgJiYgKG0uZ2V0KCdvbmx5X2RhdGEnKSB8fCBtLmdldCgnb25seV9zY2hl bWEnKSk7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2RhdGEnLCBsYWJlbDogJ3t7IF8oJ0RhdGEnKSB9fScsCisgICAgICAg ICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwgZ3Jv dXA6ICd7eyBfKCdTZWN0aW9ucycpIH19JywKKyAgICAgICAgICBkZXBzOiBb J29ubHlfZGF0YScsICdvbmx5X3NjaGVtYSddLCBkaXNhYmxlZDogZnVuY3Rp b24obSkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZS50eXBlICE9 PSAnZnVuY3Rpb24nICYmIHRoaXMubm9kZS50eXBlICE9PSAndGFibGUnCisg ICAgICAgICAgICAgICAgICAgJiYgdGhpcy5ub2RlLnR5cGUgIT09ICd0cmln Z2VyJworICAgICAgICAgICAgICAgICAgICYmIHRoaXMubm9kZS50eXBlICE9 PSAndHJpZ2dlcl9mdW5jdGlvbicKKyAgICAgICAgICAgICAgICAgICAmJiAo bS5nZXQoJ29ubHlfZGF0YScpIHx8IG0uZ2V0KCdvbmx5X3NjaGVtYScpKTsK KyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncG9z dF9kYXRhJywgbGFiZWw6ICd7eyBfKCdQb3N0LWRhdGEnKSB9fScsCisgICAg ICAgICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwg Z3JvdXA6ICd7eyBfKCdTZWN0aW9ucycpIH19JywKKyAgICAgICAgICBkZXBz OiBbJ29ubHlfZGF0YScsICdvbmx5X3NjaGVtYSddLCBkaXNhYmxlZDogZnVu Y3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZS50eXBl ICE9PSAnZnVuY3Rpb24nICYmIHRoaXMubm9kZS50eXBlICE9PSAndGFibGUn CisgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5ub2RlLnR5cGUgIT09ICd0 cmlnZ2VyJworICAgICAgICAgICAgICAgICAgICYmIHRoaXMubm9kZS50eXBl ICE9PSAndHJpZ2dlcl9mdW5jdGlvbicKKyAgICAgICAgICAgICAgICAgICAm JiAobS5nZXQoJ29ubHlfZGF0YScpIHx8IG0uZ2V0KCdvbmx5X3NjaGVtYScp KTsKKyAgICAgICAgICB9CisgICAgICAgIH1dCisgICAgICB9LHsKKyAgICAg ICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdmaWVsZHNldCcsIGxhYmVs OiAne3sgXygnVHlwZSBvZiBvYmplY3RzJykgfX0nLAorICAgICAgICBncm91 cDogJ3t7IF8oJ1Jlc3RvcmUgb3B0aW9ucycpIH19JywKKyAgICAgICAgc2No ZW1hOlt7CisgICAgICAgICAgaWQ6ICdvbmx5X2RhdGEnLCBsYWJlbDogJ3t7 IF8oJ09ubHkgZGF0YScpIH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNr Zm9ybS5DdXN0b21Td2l0Y2hDb250cm9sLCBncm91cDogJ3t7IF8oJ1R5cGUg b2Ygb2JqZWN0cycpIH19JywKKyAgICAgICAgICBkZXBzOiBbJ3ByZV9kYXRh JywgJ2RhdGEnLCAncG9zdF9kYXRhJywnb25seV9zY2hlbWEnXSwgZGlzYWJs ZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiAodGhpcy5u b2RlLnR5cGUgIT09ICdkYXRhYmFzZScgJiYgdGhpcy5ub2RlLnR5cGUgIT09 ICdzY2hlbWEnKQorICAgICAgICAgICAgICAgICAgIHx8ICggbS5nZXQoJ3By ZV9kYXRhJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8bS5nZXQoJ2Rh dGEnKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgbS5nZXQoJ3Bvc3Rf ZGF0YScpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBtLmdldCgnb25s eV9zY2hlbWEnKQorICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAg ICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ29ubHlfc2NoZW1h JywgbGFiZWw6ICd7eyBfKCdPbmx5IHNjaGVtYScpIH19JywKKyAgICAgICAg ICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hDb250cm9sLCBncm91 cDogJ3t7IF8oJ1R5cGUgb2Ygb2JqZWN0cycpIH19JywKKyAgICAgICAgICBk ZXBzOiBbJ3ByZV9kYXRhJywgJ2RhdGEnLCAncG9zdF9kYXRhJywgJ29ubHlf ZGF0YSddLCBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAg cmV0dXJuICh0aGlzLm5vZGUudHlwZSAhPT0gJ2RhdGFiYXNlJyAmJiB0aGlz Lm5vZGUudHlwZSAhPT0gJ3NjaGVtYScpCisgICAgICAgICAgICAgICAgICAg fHwgKCBtLmdldCgncHJlX2RhdGEnKQorICAgICAgICAgICAgICAgICAgICAg ICAgfHwgbS5nZXQoJ2RhdGEnKQorICAgICAgICAgICAgICAgICAgICAgICAg fHwgbS5nZXQoJ3Bvc3RfZGF0YScpCisgICAgICAgICAgICAgICAgICAgICAg ICB8fCBtLmdldCgnb25seV9kYXRhJykKKyAgICAgICAgICAgICAgICAgICAg ICApOworICAgICAgICAgIH0KKyAgICAgICAgfV0KKyAgICAgIH0seworICAg ICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ2ZpZWxkc2V0JywgbGFi ZWw6ICd7eyBfKCdEbyBub3Qgc2F2ZScpIH19JywKKyAgICAgICAgZ3JvdXA6 ICd7eyBfKCdSZXN0b3JlIG9wdGlvbnMnKSB9fScsCisgICAgICAgIHNjaGVt YTpbeworICAgICAgICAgIGlkOiAnZG5zX293bmVyJywgbGFiZWw6ICd7eyBf KCdPd25lcicpIH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5D dXN0b21Td2l0Y2hDb250cm9sLCBkaXNhYmxlZDogZmFsc2UsIGdyb3VwOiAn e3sgXygnRG8gbm90IHNhdmUnKSB9fScKKyAgICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICdkbnNfcHJpdmlsZWdlJywgbGFiZWw6ICd7eyBfKCdQcml2aWxl Z2UnKSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9t U3dpdGNoQ29udHJvbCwgZGlzYWJsZWQ6IGZhbHNlLCBncm91cDogJ3t7IF8o J0RvIG5vdCBzYXZlJykgfX0nCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnZG5zX3RhYmxlc3BhY2UnLCBsYWJlbDogJ3t7IF8oJ1RhYmxlc3BhY2Un KSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dp dGNoQ29udHJvbCwgZGlzYWJsZWQ6IGZhbHNlLCBncm91cDogJ3t7IF8oJ0Rv IG5vdCBzYXZlJykgfX0nCisgICAgICAgIH1dCisgICAgICB9LHsKKyAgICAg ICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdmaWVsZHNldCcsIGxhYmVs OiAne3sgXygnUXVlcmllcycpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBf KCdSZXN0b3JlIG9wdGlvbnMnKSB9fScsCisgICAgICAgIHNjaGVtYTpbewor ICAgICAgICAgIGlkOiAnaW5jbHVkZV9jcmVhdGVfZGF0YWJhc2UnLCBsYWJl bDogJ3t7IF8oJ0luY2x1ZGUgQ1JFQVRFIERBVEFCQVNFIHN0YXRlbWVudCcp IH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0 Y2hDb250cm9sLCBkaXNhYmxlZDogZmFsc2UsIGdyb3VwOiAne3sgXygnUXVl cmllcycpIH19JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NsZWFu JywgbGFiZWw6ICd7eyBfKCdDbGVhbiBiZWZvcmUgcmVzdG9yZScpIH19JywK KyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hDb250 cm9sLCBncm91cDogJ3t7IF8oJ1F1ZXJpZXMnKSB9fScsCisgICAgICAgICAg ZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiB0 aGlzLm5vZGUudHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fAorICAgICAgICAgICAg ICAgICAgICAgdGhpcy5ub2RlLnR5cGUgPT09ICd0cmlnZ2VyX2Z1bmN0aW9u JzsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn c2luZ2xlX3RyYW5zYWN0aW9uJywgbGFiZWw6ICd7eyBfKCdTaW5nbGUgdHJh bnNhY3Rpb24nKSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0u Q3VzdG9tU3dpdGNoQ29udHJvbCwgZGlzYWJsZWQ6IGZhbHNlLCBncm91cDog J3t7IF8oJ1F1ZXJpZXMnKSB9fScKKyAgICAgICAgfV0KKyAgICAgIH0sewor ICAgICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ2ZpZWxkc2V0Jywg bGFiZWw6ICd7eyBfKCdEaXNhYmxlJykgfX0nLAorICAgICAgICBncm91cDog J3t7IF8oJ1Jlc3RvcmUgb3B0aW9ucycpIH19JywKKyAgICAgICAgc2NoZW1h Olt7CisgICAgICAgICAgaWQ6ICdkaXNhYmxlX3RyaWdnZXInLCBsYWJlbDog J3t7IF8oJ1RyaWdnZXInKSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFj a2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwgZ3JvdXA6ICd7eyBfKCdEaXNh YmxlJykgfX0nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnbm9fZGF0 YV9mYWlsX3RhYmxlJywgbGFiZWw6ICd7eyBfKCdObyBkYXRhIGZvciBGYWls ZWQgVGFibGVzJykgfX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3Jt LkN1c3RvbVN3aXRjaENvbnRyb2wsIGRpc2FibGVkOiBmYWxzZSwgZ3JvdXA6 ICd7eyBfKCdEaXNhYmxlJykgfX0nCisgICAgICAgIH1dCisgICAgICB9LHsK KyAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdmaWVsZHNldCcs IGxhYmVsOiAne3sgXygnTWlzY2VsbGFuZW91cyAvIEJlaGF2aW9yJykgfX0n LAorICAgICAgICBncm91cDogJ3t7IF8oJ1Jlc3RvcmUgb3B0aW9ucycpIH19 JywKKyAgICAgICAgc2NoZW1hOlt7CisgICAgICAgICAgaWQ6ICd2ZXJib3Nl JywgbGFiZWw6ICd7eyBfKCdWZXJib3NlIG1lc3NhZ2VzJykgfX0nLAorICAg ICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRyb2ws IGRpc2FibGVkOiBmYWxzZSwKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ01p c2NlbGxhbmVvdXMgLyBCZWhhdmlvcicpIH19JworICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ3VzZV9zZXRfc2Vzc2lvbl9hdXRoJywgbGFiZWw6ICd7 eyBfKCdVc2UgU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTicpIH19JywKKyAg ICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hDb250cm9s LCBkaXNhYmxlZDogZmFsc2UsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdN aXNjZWxsYW5lb3VzIC8gQmVoYXZpb3InKSB9fScKKyAgICAgICAgfSx7Cisg ICAgICAgICAgaWQ6ICdleGl0X29uX2Vycm9yJywgbGFiZWw6ICd7eyBfKCdF eGl0IG9uIGVycm9yJykgfX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tm b3JtLkN1c3RvbVN3aXRjaENvbnRyb2wsIGRpc2FibGVkOiBmYWxzZSwKKyAg ICAgICAgICBncm91cDogJ3t7IF8oJ01pc2NlbGxhbmVvdXMgLyBCZWhhdmlv cicpIH19JworICAgICAgICB9XQorICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICd0b2RvJywgbGFiZWw6ICd7eyBfKCdUT0RPJykgfX0nLCB0ZXh0OiAne3sg XygnQWRkIE9iamVjdHMgc2VsZWN0aW9uIHRyZWUgaGVyZScpIH19JywKKyAg ICAgICAgICB0eXBlOiAnbm90ZScsIGdyb3VwOiAne3sgXygnT2JqZWN0cycp IH19JworICAgICB9XSwKKyAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsK KyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9CisgICAgfSk7CisKKyAg ICAvLyBDcmVhdGUgYW4gT2JqZWN0IFJlc3RvcmUgb2YgcGdCcm93c2VyIGNs YXNzCisgICAgcGdCcm93c2VyLlJlc3RvcmUgID0geworICAgICAgaW5pdDog ZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQor ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVk ID0gdHJ1ZTsKKworICAgICAgICAvLyBEZWZpbmUgbGlzdCBvZiBub2RlcyBv biB3aGljaCByZXN0b3JlIGNvbnRleHQgbWVudSBvcHRpb24gYXBwZWFycwor ICAgICAgICB2YXIgcmVzdG9yZV9zdXBwb3J0ZWRfbm9kZXMgPSBbCisgICAg ICAgICAgICAgICdkYXRhYmFzZScsICdzY2hlbWEnLAorICAgICAgICAgICAg ICAndGFibGUnLCAnZnVuY3Rpb24nLAorICAgICAgICAgICAgICAndHJpZ2dl cicsICdpbmRleCcKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgLyoqCisg ICAgICAgICAgRW5hYmxlL2Rpc2FibGUgcmVzdG9yZSBtZW51IGluIHRvb2xz IGJhc2VkCisgICAgICAgICAgb24gbm9kZSBzZWxlY3RlZAorICAgICAgICAg IGlmIHNlbGVjdGVkIG5vZGUgaXMgcHJlc2VudCBpbiBzdXBwb3J0ZWRfbm9k ZXMsCisgICAgICAgICAgbWVudSB3aWxsIGJlIGVuYWJsZWQgb3RoZXJ3aXNl IGRpc2FibGVkLgorICAgICAgICAgIEFsc28sIGhpZGUgaXQgZm9yIHN5c3Rl bSB2aWV3IGluIGNhdGFsb2dzCisgICAgICAgICovCisgICAgICAgIG1lbnVf ZW5hYmxlZCA9IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Cisg ICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQg PSBpdGVtRGF0YTsKKyAgICAgICAgICB2YXIgcGFyZW50X2l0ZW0gPSB0Lmhh c1BhcmVudChpKSA/IHQucGFyZW50KGkpOiBudWxsLAorICAgICAgICAgICAg ICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVtID8gdC5pdGVtRGF0YShwYXJl bnRfaXRlbSkgOiBudWxsOworICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmlu ZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYmICFfLmlzTnVsbChwYXJlbnRfZGF0 YSkpCisgICAgICAgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICAgICAg KF8uaW5kZXhPZihyZXN0b3JlX3N1cHBvcnRlZF9ub2RlcywgZC5fdHlwZSkg IT09IC0xICYmCisgICAgICAgICAgICAgICAgaXNfcGFyZW50X2NhdGFsb2co aXRlbURhdGEsIGl0ZW0sIGRhdGEpICkgPyB0cnVlOiBmYWxzZQorICAgICAg ICAgICAgICApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgICAgIH07CisKKyAgICAgICAgaXNfcGFyZW50 X2NhdGFsb2cgPSBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewor ICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBk ID0gaXRlbURhdGE7CisgICAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRy ZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKKyAgICAgICAgICB3aGlsZSAoaSkg eworICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cg dXNlciB0byByZXN0b3JlCisgICAgICAgICAgICBpZiAoXy5pbmRleE9mKFsn Y2F0YWxvZyddLCBkLl90eXBlKSA+IC0xKQorICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0 LnBhcmVudChpKSA6IG51bGw7CisgICAgICAgICAgICBkID0gaSA/IHQuaXRl bURhdGEoaSkgOiBudWxsOworICAgICAgICAgIH0KKyAgICAgICAgICAvLyBi eSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51 CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAg ICAvLyBEZWZpbmUgdGhlIG5vZGVzIG9uIHdoaWNoIHRoZSBtZW51cyB0byBi ZSBhcHBlYXIKKyAgICAgICAgdmFyIG1lbnVzID0gW3sKKyAgICAgICAgICBu YW1lOiAncmVzdG9yZV9vYmplY3QnLCBtb2R1bGU6IHRoaXMsCisgICAgICAg ICAgYXBwbGllczogWyd0b29scyddLCBjYWxsYmFjazogJ3Jlc3RvcmVfb2Jq ZWN0cycsCisgICAgICAgICAgcHJpb3JpdHk6IDksIGxhYmVsOiAne3tfKCJS ZXN0b3JlLi4uIikgfX0nLAorICAgICAgICAgIGljb246ICdmYSBmYS11cGxv YWQnLCBlbmFibGU6IG1lbnVfZW5hYmxlZAorICAgICAgICB9XTsKKworICAg ICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCByZXN0b3JlX3N1cHBvcnRl ZF9ub2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICAgICAgbWVudXMucHVz aCh7CisgICAgICAgICAgICBuYW1lOiAncmVzdG9yZV8nICsgcmVzdG9yZV9z dXBwb3J0ZWRfbm9kZXNbaWR4XSwKKyAgICAgICAgICAgIG5vZGU6IHJlc3Rv cmVfc3VwcG9ydGVkX25vZGVzW2lkeF0sIG1vZHVsZTogdGhpcywKKyAgICAg ICAgICAgIGFwcGxpZXM6IFsnY29udGV4dCddLCBjYWxsYmFjazogJ3Jlc3Rv cmVfb2JqZWN0cycsCisgICAgICAgICAgICBwcmlvcml0eTogOSwgbGFiZWw6 ICd7e18oIlJlc3RvcmUuLi4iKSB9fScsCisgICAgICAgICAgICBpY29uOiAn ZmEgZmEtdXBsb2FkJywgZW5hYmxlOiBtZW51X2VuYWJsZWQKKyAgICAgICAg ICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgcGdBZG1pbi5Ccm93c2Vy LmFkZF9tZW51cyhtZW51cyk7CisgICAgICAgIHJldHVybiB0aGlzOworICAg ICAgfSwKKyAgICAgIC8vIENhbGxiYWNrIHRvIGRyYXcgQmFja3VwIERpYWxv ZyBmb3Igb2JqZWN0cworICAgICAgcmVzdG9yZV9vYmplY3RzOiBmdW5jdGlv bihhY3Rpb24sIHRyZWVJdGVtKSB7CisgICAgICAgIHZhciB0aXRsZSA9ICd7 eyBfKCdSZXN0b3JlJykgfX0nLAorICAgICAgICAgICAgdHJlZSA9IHBnQnJv d3Nlci50cmVlLAorICAgICAgICAgICAgaXRlbSA9IHRyZWVJdGVtIHx8IHRy ZWUuc2VsZWN0ZWQoKSwKKyAgICAgICAgICAgIGRhdGEgPSBpdGVtICYmIGl0 ZW0ubGVuZ3RoID09IDEgJiYgdHJlZS5pdGVtRGF0YShpdGVtKSwKKyAgICAg ICAgICAgIG5vZGUgPSBkYXRhICYmIGRhdGEuX3R5cGUgJiYgcGdCcm93c2Vy Lk5vZGVzW2RhdGEuX3R5cGVdOworCisgICAgICAgIGlmICghbm9kZSkKKyAg ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYoIWFsZXJ0aWZ5LnJlc3Rv cmVfb2JqZWN0cykgeworICAgICAgICAgIC8vIENyZWF0ZSBEaWFsb2cgdGl0 bGUgb24gdGhlIGZseSB3aXRoIG5vZGUgZGV0YWlscworICAgICAgICAgIGFs ZXJ0aWZ5LmRpYWxvZygncmVzdG9yZV9vYmplY3RzJyAsZnVuY3Rpb24gZmFj dG9yeSgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAg ICBtYWluOiBmdW5jdGlvbih0aXRsZSkgeworICAgICAgICAgICAgICAgIHRo aXMuc2V0KCd0aXRsZScsIHRpdGxlKTsKKyAgICAgICAgICAgICAgIH0sCisg ICAgICAgICAgICAgICBzZXR1cDpmdW5jdGlvbigpIHsKKyAgICAgICAgICAg ICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgYnV0dG9uczogW3sK KyAgICAgICAgICAgICAgICAgICAgdGV4dDogJ3t7IF8oJ1Jlc3RvcmUnKSB9 fScsIGtleTogMjcsIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeScKKyAg ICAgICAgICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgICAgIHRl eHQ6ICd7eyBfKCdDYW5jZWwnKSB9fScsIGtleTogMjcsIGNsYXNzTmFtZTog J2J0biBidG4tZGFuZ2VyJworICAgICAgICAgICAgICAgICAgfV0sCisgICAg ICAgICAgICAgICAgICAvLyBTZXQgb3B0aW9ucyBmb3IgZGlhbG9nCisgICAg ICAgICAgICAgICAgICBvcHRpb25zOiB7CisgICAgICAgICAgICAgICAgICAg IHRpdGxlOiB0aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgLy9kaXNhYmxl IGJvdGggcGFkZGluZyBhbmQgb3ZlcmZsb3cgY29udHJvbC4KKyAgICAgICAg ICAgICAgICAgICAgcGFkZGluZyA6ICExLAorICAgICAgICAgICAgICAgICAg ICBvdmVyZmxvdzogITEsCisgICAgICAgICAgICAgICAgICAgIG1vZGVsOiAw LAorICAgICAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsCisgICAg ICAgICAgICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLAorICAgICAgICAg ICAgICAgICAgICBwaW5uYWJsZTogZmFsc2UKKyAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICB9LAorICAg ICAgICAgICAgICBob29rczogeworICAgICAgICAgICAgICAgIC8vIHRyaWdn ZXJlZCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2VkCisgICAgICAgICAgICAg ICAgb25jbG9zZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICBp ZiAodGhpcy52aWV3KSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMudmll dy5yZW1vdmUoe2RhdGE6IHRydWUsIGludGVybmFsOiB0cnVlLCBzaWxlbnQ6 IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIHByZXBhcmU6 IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhp czsKKyAgICAgICAgICAgICAgICAvLyBEaXNhYmxlIEJhY2t1cCBidXR0b24g dW50aWwgdXNlciBwcm92aWRlcyBGaWxlbmFtZQorICAgICAgICAgICAgICAg IHRoaXMuX19pbnRlcm5hbC5idXR0b25zWzBdLmVsZW1lbnQuZGlzYWJsZWQg PSB0cnVlOworICAgICAgICAgICAgICAgIHZhciAkY29udGFpbmVyID0gJCgi PGRpdiBjbGFzcz0ncmVzdG9yZV9kaWFsb2cnPjwvZGl2PiIpOworICAgICAg ICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCisgICAgICAgICAg ICAgICAgICBpID0gdC5zZWxlY3RlZCgpLAorICAgICAgICAgICAgICAgICAg ZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRl ZmluZWQsCisgICAgICAgICAgICAgICAgICBub2RlID0gZCAmJiBwZ0Jyb3dz ZXIuTm9kZXNbZC5fdHlwZV07CisKKyAgICAgICAgICAgICAgICBpZiAoIWQp CisgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAg ICB2YXIgdHJlZUluZm8gPSBub2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFw cGx5KG5vZGUsIFtpXSk7CisKKyAgICAgICAgICAgICAgICB2YXIgbmV3TW9k ZWwgPSBuZXcgUmVzdG9yZU9iamVjdE1vZGVsKAorICAgICAgICAgICAgICAg ICAge25vZGVfZGF0YTogbm9kZX0sIHtub2RlX2luZm86IHRyZWVJbmZvfQor ICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgIGZpZWxk cyA9IEJhY2tmb3JtLmdlbmVyYXRlVmlld1NjaGVtYSgKKyAgICAgICAgICAg ICAgICAgICAgdHJlZUluZm8sIG5ld01vZGVsLCAnY3JlYXRlJywgbm9kZSwg dHJlZUluZm8uc2VydmVyLCB0cnVlCisgICAgICAgICAgICAgICAgICApOwor CisgICAgICAgICAgICAgICAgdmFyIHZpZXcgPSB0aGlzLnZpZXcgPSBuZXcg QmFja2Zvcm0uRGlhbG9nKHsKKyAgICAgICAgICAgICAgICAgIGVsOiAkY29u dGFpbmVyLCBtb2RlbDogbmV3TW9kZWwsIHNjaGVtYTogZmllbGRzCisgICAg ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAkKHRoaXMuZWxl bWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKS5hZGRDbGFzcygKKyAgICAgICAg ICAgICAgICAgICdhbGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVydGllcyBv YmpfcHJvcGVydGllcycKKyAgICAgICAgICAgICAgICApOworCisgICAgICAg ICAgICAgICAgdmlldy5yZW5kZXIoKTsKKworICAgICAgICAgICAgICAgIHRo aXMuZWxlbWVudHMuY29udGVudC5hcHBlbmRDaGlsZCgkY29udGFpbmVyLmdl dCgwKSk7CisKKyAgICAgICAgICAgICAgICAgLy8gTGlzdGVuIHRvIG1vZGVs ICYgaWYgZmlsZW5hbWUgaXMgcHJvdmlkZWQgdGhlbiBlbmFibGUgQmFja3Vw IGJ1dHRvbgorICAgICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5vbign Y2hhbmdlJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlm ICghXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZmlsZScpKSAmJiB0aGlzLmdl dCgnZmlsZScpICE9PSAnJykgeworICAgICAgICAgICAgICAgICAgICAgIHRo aXMuZXJyb3JNb2RlbC5jbGVhcigpOworICAgICAgICAgICAgICAgICAgICAg IHNlbGYuX19pbnRlcm5hbC5idXR0b25zWzBdLmVsZW1lbnQuZGlzYWJsZWQg PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJuYWwuYnV0dG9uc1swXS5l bGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg ICB0aGlzLmVycm9yTW9kZWwuc2V0KCdmaWxlJywgJ3t7IF8oJ1BsZWFzZSBw cm92aWRlIGZpbGVuYW1lJykgfX0nKQorICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb25zIHdoZW4gY2xpY2sg b24gdGhlIGJ1dHRvbnMgb2YgdGhlIEFsZXJ0aWZ5IGRpYWxvZ3MKKyAgICAg ICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAg ICAgICBpZiAoZS5idXR0b24udGV4dCA9PT0gIlJlc3RvcmUiKSB7CisgICAg ICAgICAgICAgICAgICAvLyBGZXRjaCBjdXJyZW50IHNlcnZlciBpZAorICAg ICAgICAgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKKyAgICAg ICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwKKyAgICAgICAgICAg ICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEo aSkgOiB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBk ICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsKKworICAgICAgICAgICAg ICAgICAgaWYgKCFkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisK KyAgICAgICAgICAgICAgICAgIHZhciB0cmVlSW5mbyA9IG5vZGUuZ2V0VHJl ZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKTsKKyAgICAgICAgICAg ICAgICAgIC8vIFNldCBjdXJyZW50IG5vZGUgaW5mbyBpbnRvIG1vZGVsCisg ICAgICAgICAgICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdkYXRhYmFz ZScsIHRyZWVJbmZvLmRhdGFiYXNlLmxhYmVsKTsKKyAgICAgICAgICAgICAg ICAgIGlmICh0cmVlSW5mby5zY2hlbWEpCisgICAgICAgICAgICAgICAgICAg IHRoaXMudmlldy5tb2RlbC5zZXQoJ3NjaGVtYScsIHRyZWVJbmZvLnNjaGVt YS5sYWJlbCk7CisgICAgICAgICAgICAgICAgICBpZiAodHJlZUluZm8udGFi bGUpCisgICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQo J3RhYmxlJywgdHJlZUluZm8udGFibGUubGFiZWwpOworICAgICAgICAgICAg ICAgICAgaWYgKHRyZWVJbmZvLmZ1bmN0aW9uKQorICAgICAgICAgICAgICAg ICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdmdW5jdGlvbicsIHRyZWVJbmZv LmZ1bmN0aW9uLmxhYmVsKTsKKyAgICAgICAgICAgICAgICAgIGlmICh0cmVl SW5mby5pbmRleCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Lm1v ZGVsLnNldCgnaW5kZXgnLCB0cmVlSW5mby5pbmRleC5sYWJlbCk7CisgICAg ICAgICAgICAgICAgICBpZiAodHJlZUluZm8udHJpZ2dlcikKKyAgICAgICAg ICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgndHJpZ2dlcicsIHRy ZWVJbmZvLnRyaWdnZXIubGFiZWwpOworICAgICAgICAgICAgICAgICAgaWYg KHRyZWVJbmZvLnRyaWdnZXJfZnVuY3Rpb24pCisgICAgICAgICAgICAgICAg ICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3RyaWdnZXJfZnVuY3Rpb24nLCB0 cmVlSW5mby50cmlnZ2VyX2Z1bmN0aW9uLmxhYmVsKTsKKworICAgICAgICAg ICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgICAgICAg ICBiYXNlVXJsID0gInt7IHVybF9mb3IoJ3Jlc3RvcmUuaW5kZXgnKSB9fSIg KworICAgICAgICAgICAgICAgICAgICAgICJjcmVhdGVfam9iLyIgKyB0cmVl SW5mby5zZXJ2ZXIuX2lkLAorICAgICAgICAgICAgICAgICAgICAgIGFyZ3Mg PSAgdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpOworCisgICAgICAgICAgICAg ICAgICAkLmFqYXgoeworICAgICAgICAgICAgICAgICAgICB1cmw6IGJhc2VV cmwsCisgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAorICAg ICAgICAgICAgICAgICAgICBkYXRhOnsgJ2RhdGEnOiBKU09OLnN0cmluZ2lm eShhcmdzKSB9LAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5j dGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgbXNnID0g YWxlcnRpZnkubWVzc2FnZSgne3sgXygnUmVzdG9yZSBqb2IgY3JlYXRlZCAo Q2xpY2sgZm9yIG1vcmUgZGV0YWlscyknKSB9fScsIDEwKTsKKyAgICAgICAg ICAgICAgICAgICAgICBtc2cuY2FsbGJhY2sgPSBmdW5jdGlvbiAoaXNDbGlj a2VkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihpc0NsaWNrZWQp CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTaG93 IGRldGFpbGVkIGxvZ3MgPj4nICsgcmVzKTsKKyAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg ICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0YXR1cywgZXJyb3IpIHsK KyAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAg ICAgICAgICAgdmFyIGVyciA9ICQucGFyc2VKU09OKHhoci5yZXNwb25zZVRl eHQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQo CisgICAgICAgICAgICAgICAgICAgICAgICAgICd7eyBfKCdCYWNrdXAgZmFp bGVkLi4uJykgfX0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIu ZXJyb3Jtc2cKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAg ICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgICB9OworICAgICAgfSk7 CisgICAgICB9CisgICAgICBhbGVydGlmeS5yZXN0b3JlX29iamVjdHModGl0 bGUpLnJlc2l6ZVRvKCc2NSUnLCc2MCUnKTsKKyAgICAgIH0KKyAgICB9Owor ICAgIHJldHVybiBwZ0Jyb3dzZXIuUmVzdG9yZTsKKyAgfSk7ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQo= --001a114f3bee29470e05322d4e65 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 --001a114f3bee29470e05322d4e65--