Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aSirQ-0001WU-5F for pgadmin-hackers@arkaria.postgresql.org; Mon, 08 Feb 2016 10:16:00 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aSirP-0003Yp-N9 for pgadmin-hackers@arkaria.postgresql.org; Mon, 08 Feb 2016 10:15:59 +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) (envelope-from ) id 1aSir8-0003Ja-Uq for pgadmin-hackers@postgresql.org; Mon, 08 Feb 2016 10:15:43 +0000 Received: from mail-yw0-x231.google.com ([2607:f8b0:4002:c05::231]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aSir0-00006l-MY for pgadmin-hackers@postgresql.org; Mon, 08 Feb 2016 10:15:41 +0000 Received: by mail-yw0-x231.google.com with SMTP id q190so98429700ywd.3 for ; Mon, 08 Feb 2016 02:15:34 -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=hxsAdpBmR2fn0yG5cba3zmgBOtcIhr/UsToe1sEH15M=; b=kFmgNWshYXLvP+4lhd2+8m1QSCYPvn8dG+fnhhS2GtF3Nm9TJG7xV8wEHWsq/3DTrs +4V/tbO+nDfUTtophK/KAvKdAQ5dBZ+iGuhZRIjwb6I5DbHI3AOoEhPmVjqygSUlpXKn 8pMe4O7uHM/N0WomeyOm6QI2p3XDUQOIBE2raxkvCakqg3z0KbWlHV/R2XvynU68Po6l ZVc3QxUYCU5gAJNnj6buFjy52VEt3CD7fjrFQuuVeRALzvNM+0WxDAEL22ggq3td5Jkt 3oyXb/gtaSmI9R2/dywIWLs+sGQQ2dUZ7RgTHIOEVk47Z5QjhxcHoHtnAUivBVb+/kC3 E0GA== 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=hxsAdpBmR2fn0yG5cba3zmgBOtcIhr/UsToe1sEH15M=; b=RWnPgQSlD6CnpCOwV2a/w5Z5sg+o5NI/wZbAles0BNY07MjlRiljG0bo1gTtA+9acc h7bt+pibnOMJWyVNh8LcIAv3zXeA6JZyZVBL9pziKUrWVZUKiwdOylrDjkXWCCfBZC2e hDGebHA/zK1Jqi/vSujsUbDb09sE8cSolXdluNIH/irwRwYlMCG397ykFXOXBOMiMNcA XlRaOmc73qyeMkDnhnlhSePBRR1EtnKwhu27klnFHKAZZEjXKk467Um//E2flLfTO+6a JXKAtZhMpFzaL5sMAP0awnwwiGiKqU1+FVFXlDW2l3NFfU2RkvkdoRlDcqPR6JK6GOHc eTVg== X-Gm-Message-State: AG10YOSmFx0TnH3Gs69+K5VJYoxu71GRsLU5izuogdB6AEngAvj+y9PPAP/ylYAnjB16+ZX2q/3C+EjupY2uv6sM MIME-Version: 1.0 X-Received: by 10.129.96.7 with SMTP id u7mr13473165ywb.344.1454926533984; Mon, 08 Feb 2016 02:15:33 -0800 (PST) Received: by 10.129.84.198 with HTTP; Mon, 8 Feb 2016 02:15:33 -0800 (PST) In-Reply-To: References: Date: Mon, 8 Feb 2016 15:45:33 +0530 Message-ID: Subject: Re: patch for cast module From: Sanket Mehta To: Akshay Joshi Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a1149022e3bdd0d052b3f7b34 X-Pg-Spam-Score: -1.9 (-) 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 --001a1149022e3bdd0d052b3f7b34 Content-Type: multipart/alternative; boundary=001a1149022e3bdd08052b3f7b32 --001a1149022e3bdd08052b3f7b32 Content-Type: text/plain; charset=UTF-8 Hi Akshay, PFA the revised patch. All the comments are inline. Regards, Sanket Mehta Sr Software engineer Enterprisedb On Fri, Feb 5, 2016 at 12:43 PM, Akshay Joshi wrote: > Hi Sanket > > Below are the review comments > > - As "Show System Object" is not implemented yet, we should show all > the objects by default. > > Done > > - As in pgAdmin3 when click on Casts (Collection) node it should show > only Name, Owner and Comments. With current code it is showing all the > properties. > > Done.. Owner field is ignore as it is not a part of cast properties. > > - Properties Tab contains only one control "Comment" can that be a > part of the Definition tab??? > - For some data type like "Character", "Integer", it is throwing error > that data type doesn't exist. > > resolved > > - If node is leaf node then it should not show (+) expand symbol. > > Done > > - Remove extra lines from create.sql and update.sql files as it shown > in the SQL tab as well. > > Ignored as it was suggested by Ashesh. > > - When select any system cast it is not showing function in the > function control. > > Resolved. > > - If comment is already exist and we remove the comments, sql query > not generated in the SQL tab while it is generating in pgAdmin3. > > Done. > *Question*: With current implementation in "pgAdmin3" to create "Cast" > user will have to select source type and target type and then click on OK > button. If source and target type is not physically compatible, server will > throw an error. I am not sure, but instead of that can we implement it like > when user select the source type from combo box, target type combo will > only show types which are physically compatible? > After consulting with db server team, it is clear that they do not maintain any mapping for compatible source and target types. in postgresql, they pick selected source and target type and check them for compatibility. So its not possible to filter out target type based on selected source type. > > > > On Thu, Feb 4, 2016 at 6:31 PM, Sanket Mehta < > sanket.mehta@enterprisedb.com> wrote: > >> Hi Akshay, >> >> PFA the latest patch for Cast module. >> Please do review it and let me know if anything is missing. >> >> >> Regards, >> Sanket Mehta >> Sr Software engineer >> Enterprisedb >> >> On Wed, Jan 20, 2016 at 5:03 PM, Sanket Mehta < >> sanket.mehta@enterprisedb.com> wrote: >> >>> Hi Neel. >>> >>> PFA the revised patch which has changed according to your comments. >>> Please do review it and let me know in case anything is missing. >>> >>> >>> >>> Regards, >>> Sanket Mehta >>> Sr Software engineer >>> Enterprisedb >>> >>> On Wed, Jan 20, 2016 at 10:20 AM, Neel Patel < >>> neel.patel@enterprisedb.com> wrote: >>> >>>> Hi Sanket, >>>> >>>> Below are the review comments. >>>> >>>> - When we edit any existing cast node then it gives error "*Response >>>> object has no attribute strip*". This error is coming because >>>> generated SQL is >>>> wrong. >>>> - Unnecessary debug logs are coming on console. Please remove >>>> unnecessary debug logs. >>>> - In some of the sql file, 'qtIdent' and 'qtLiteral' is not used. >>>> Please check all the SQL files. >>>> - "Delete" cast functionality is not working. Error is getting >>>> displayed saying *"syntax error at or near "castsource"*. >>>> - "Delete cascade" functionality is not working - error is getting >>>> displayed saying *"The requested URL not found".* >>>> - Do the proper comments, in some of the function like "script_load" , >>>> comments are wrong. >>>> - Is "configs" really required in __init__.py file ? We have not seen >>>> any usage for this. Please remove it if it is not required. >>>> - Remove commented code from the source file. >>>> >>>> Please check all the generated SQL statements . Test the basic >>>> functionality of "create", "Edit" and "Delete" node before sending patch >>>> file. >>>> >>>> Do let us know for any comments/issues. >>>> >>>> Thanks, >>>> Neel Patel >>>> >>>> On Tue, Jan 19, 2016 at 8:06 PM, Sanket Mehta < >>>> sanket.mehta@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> PFA updated patch for cast module as per check list provided by Neel. >>>>> Please do review it and let me know in case of anything is missing. >>>>> >>>>> >>>>> >>>>> Regards, >>>>> Sanket Mehta >>>>> Sr Software engineer >>>>> Enterprisedb >>>>> >>>>> On Mon, Jan 18, 2016 at 7:16 PM, Sanket Mehta < >>>>> sanket.mehta@enterprisedb.com> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> PFA patch for cast module. >>>>>> Please do review it and let me know in case of any issue. >>>>>> >>>>>> >>>>>> Regards, >>>>>> Sanket Mehta >>>>>> Sr Software engineer >>>>>> Enterprisedb >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>>>> To make changes to your subscription: >>>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>>> >>>>> >>>> >>> >> >> >> -- >> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgadmin-hackers >> >> > > > -- > *Akshay Joshi* > *Principal Software Engineer * > > > > *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* > --001a1149022e3bdd08052b3f7b32 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Akshay,

PFA the revised patch.
All the comments are inline.


Regards,
Sanket Me= hta
Sr Software engineer
Enterprisedb
=

On Fri, Feb 5, 2016 at 12:43 PM, Akshay Josh= i <akshay.joshi@enterprisedb.com> wrote:
Hi Sanket=C2=A0
Below are the review comments
  • As "S= how System Object" is not implemented yet, we should show all the obje= cts by default.
Done
  • As in pgAdmin3 when = click on Casts (Collection) node it should show only Name, Owner and Commen= ts. With current code it is showing all the properties.
Done.. Owner field is ignore as it is not a part of cas= t properties.
  • Properties Tab contains only one control "Comment" can = that be a part of the Definition tab???
  • For some data type like &qu= ot;Character", "Integer", it is throwing error that data typ= e doesn't exist.
resolved
  • If node is= leaf node then it should not show (+) expand symbol.
=
Done
  • Remove extra lines from create.sql and upda= te.sql files as it shown in the SQL tab as well.<= /li>
Ignored as it was suggested by Ashes= h.
  • W= hen select any system cast it is not showing function in the function contr= ol.
Resolved.
  • If comment is already exis= t and we remove the comments, sql query not generated in the <= span>SQL tab while it is generating in pgAdmin3.
Done.
=C2=A0
Question: With current implementation in &quo= t;pgAdmin3" to create "Cast" user will have to select source= type and target type and then click on OK button. If source and target typ= e is not physically compatible, server will throw an error. I am not sure, = but instead of that can we implement it like when user select the source ty= pe from combo box, target type combo will only show types which are physica= lly compatible?
After consulting with db s= erver team, it is clear that they do not maintain any mapping for compatibl= e source and target types. in postgresql, they pick selected source and tar= get type and check them for compatibility. So its not possible to filter ou= t target type based on selected source type.

=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0=C2=A0

On Thu, Feb 4, 2016 at 6:31 PM, Sanket Meht= a <sanket.mehta@enterprisedb.com> wrote:
Hi Akshay,

PFA the latest patch for Cast module.
Please do review it and l= et me know if anything is missing.

=
Regards,
Sanket Meht= a
Sr Software engineer
Enterprisedb

On Wed, Jan 20, 2016 at 5:0= 3 PM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
Hi Neel.
<= br>
PFA the revised patch which has changed according to your com= ments.
Please do review it and let me know in case anything is mi= ssing.


=
Regards,
Sanket Meht= a
Sr Software engineer
Enterprisedb

On Wed, Jan 20, 2016 at 10:= 20 AM, Neel Patel <neel.patel@enterprisedb.com> wr= ote:
Hi Sanket,

Below are the review comments.

- = When we edit any existing cast node then it gives error "Response o= bject has no attribute strip". This error is coming because genera= ted SQL is=C2=A0
=C2=A0 wrong.
- Unnecessary debug logs are coming = on console. Please remove unnecessary debug logs.
- In some of th= e sql file, 'qtIdent' and 'qtLiteral' is not used. Please c= heck all the SQL files.
- "Delete" cast functiona= lity is not working. Error is getting displayed saying "syntax erro= r at or near "castsource".=C2=A0
-=C2=A0"Delet= e cascade" functionality is not working=C2=A0- error is getting displa= yed saying "The requested URL not found".
- Do t= he proper comments, in some of the function like "script_load" , = comments are wrong.
- Is "configs" really required in _= _init__.py file ? We have not seen any usage for this. Please remove it if = it is not required.
- Remove commented code from the source file.=

Please check all the generated SQL statements . T= est the basic functionality of "create", "Edit" and &qu= ot;Delete" node before sending patch file.

Do= let us know for any comments/issues.

Thanks,
Neel Patel

On Tue, Jan 19, 2016 at 8:06 PM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
Hi,

PFA updat= ed patch for cast module as per check list provided by Neel.
Plea= se do review it and let me know in case of anything is missing.
<= br>


Regards,
Sanket Mehta
Sr Sof= tware engineer
Enterprisedb

On Mon, Jan 18, 2016 at 7:1= 6 PM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
Hi,

PFA patch for cast module.
Please do review it and let m= e know in case of any issue.


Regards,
Sanket Mehta
Sr Software eng= ineer
Enterprisedb



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






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




--
Akshay Joshi
Principal Softw= are Engineer=C2=A0
<= span style=3D"color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px;= border-collapse:collapse">
<= /b>
=
Phone: +91 20-3058-9517
Mobile: +91 976-788-8246
<= /font>

--001a1149022e3bdd08052b3f7b32-- --001a1149022e3bdd0d052b3f7b34 Content-Type: text/x-patch; charset=US-ASCII; name="castv6.patch" Content-Disposition: attachment; filename="castv6.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ikdtotyg0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy9fX2luaXRfXy5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9jYXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4yY2VjOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L2Nhc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNDQ1IEBACisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxNiwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQganNvbgorZnJvbSBm bGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCBj dXJyZW50X2FwcCwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBmbGFzay5leHQu YmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4 IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIFwKKyAgICBtYWtlX3Jlc3Bv bnNlIGFzIGFqYXhfcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcgor ZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IE5vZGVWaWV3Citm cm9tIHBnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uIGltcG9ydCBDb2xsZWN0 aW9uTm9kZU1vZHVsZQoraW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzIGFzIGRhdGFiYXNlcworZnJvbSBw Z2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IHByZWNvbmRpdGlvbl9yZXF1aXJl ZAorZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZl cgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9t IGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKK2Zyb20gaHRtbCBpbXBvcnQgZXNj YXBlCisKKworY2xhc3MgQ2FzdE1vZHVsZShDb2xsZWN0aW9uTm9kZU1vZHVs ZSk6CisgICAgTk9ERV9UWVBFID0gJ2Nhc3QnCisgICAgQ09MTEVDVElPTl9M QUJFTCA9ICdDYXN0cycKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJn cywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihDYXN0TW9kdWxlLCBzZWxm KS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgZ2V0X25v ZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rpb24gbm9kZQorICAgICAgICAiIiIK KyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0ZV9icm93c2VyX2NvbGxlY3Rp b25fbm9kZShkaWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9kZV9p bm9kZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE92ZXJyaWRlIHRo ZSBwcm9wZXJ0eSB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZQorICAg ICAgICAiIiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVy dHkKKyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgor ICAgICAgICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBjYXN0LCB3aGVu IGFueSBvZiB0aGUgZGF0YWJhc2Ugbm9kZSBpcworICAgICAgICBpbml0aWFs aXplZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBkYXRhYmFzZXMu RGF0YWJhc2VNb2R1bGUuTk9ERV9UWVBFCisKKworYmx1ZXByaW50ID0gQ2Fz dE1vZHVsZShfX25hbWVfXykKKworCitjbGFzcyBDYXN0VmlldyhOb2RlVmll dyk6CisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQorCisg ICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQn LCAnaWQnOiAnZ2lkJ30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50Jywg J2lkJzogJ3NpZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdp ZCc6ICdkaWQnfQorICAgICAgICAgICAgXQorICAgIGlkcyA9IFsKKyAgICAg ICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnY2lkJ30KKyAgICAgICAg ICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsKKyAgICAgICAgJ29i aic6IFsKKyAgICAgICAgICAgIHsnZ2V0JzogJ3Byb3BlcnRpZXMnLCAnZGVs ZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBkYXRlJ30sCisgICAgICAgICAg ICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAg XSwKKyAgICAgICAgJ2NoaWxkcmVuJzogW3sKKyAgICAgICAgICAgICdnZXQn OiAnY2hpbGRyZW4nCisgICAgICAgIH1dLAorICAgICAgICAnZGVsZXRlJzog W3snZGVsZXRlJzogJ2RlbGV0ZSd9XSwKKyAgICAgICAgJ25vZGVzJzogW3sn Z2V0JzogJ25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdz cWwnOiBbeydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dl dCc6ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0 cyc6IFt7J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5k ZW5jeSc6IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdk ZXBlbmRlbnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAg J21vZHVsZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwK KyAgICAgICAgJ2dldF90eXBlJzogW3snZ2V0JzogJ2dldF9zb3VyY2VUYXJn ZXRfdHlwZSd9LCB7J2dldCc6ICdnZXRfc291cmNlVGFyZ2V0X3R5cGUnfV0s CisgICAgICAgICdnZXRmdW5jdGlvbnMnOiBbeydwb3N0JzogJ2dldF9mdW5j dGlvbnMnfSwgeydwb3N0JzogJ2dldF9mdW5jdGlvbnMnfV0KKyAgICB9KQor CisgICAgZGVmIG1vZHVsZV9qcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgcHJvcGVydHkgZGVmaW5lcyAoaWYgamF2YXNjcmlwdCkgZXhp c3RzIGZvciB0aGlzIG5vZGUuCisgICAgICAgIE92ZXJyaWRlIHRoaXMgcHJv cGVydHkgZm9yIHlvdXIgb3duIGxvZ2ljLgorICAgICAgICAiIiIKKyAgICAg ICAgcmV0dXJuIG1ha2VfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiY2FzdC9qcy9j YXN0cy5qcyIsCisgICAgICAgICAgICAgICAgICAgIF89Z2V0dGV4dAorICAg ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIDIwMCwgeydD b250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0J30KKyAg ICAgICAgICAgICAgICApCisKKyAgICBkZWYgY2hlY2tfcHJlY29uZGl0aW9u KGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNoZWNrcworICAg ICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcs IGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAgICBtYW5hZ2VyLGNvbm4g JiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgorICAgICAgICAi IiIKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAgIGRlZiB3cmFwKCphcmdz LCAqKmt3YXJncyk6CisgICAgICAgICAgICAjIEhlcmUgYXJnc1swXSB3aWxs IGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQgZ2lkLHNpZCxkaWQKKyAg ICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAgICAgICAgICBzZWxmLm1h bmFnZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0 aW9uX21hbmFnZXIoa3dhcmdzWydzaWQnXSkKKyAgICAgICAgICAgIHNlbGYu Y29ubiA9IHNlbGYubWFuYWdlci5jb25uZWN0aW9uKGRpZD1rd2FyZ3NbJ2Rp ZCddKQorICAgICAgICAgICAgIyBJZiBEQiBub3QgY29ubmVjdGVkIHRoZW4g cmV0dXJuIGVycm9yIHRvIGJyb3dzZXIKKyAgICAgICAgICAgIGlmIG5vdCBz ZWxmLmNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAgICAgICAgcmV0dXJu IHByZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAgICAgICAgICAgICAg Z2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVj dGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGxvc3QhIgorICAgICAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg dmVyID0gc2VsZi5tYW5hZ2VyLnZlcnNpb24KKyAgICAgICAgICAgICMgd2Ug d2lsbCBzZXQgdGVtcGxhdGUgcGF0aCBmb3Igc3FsIHNjcmlwdHMKKyAgICAg ICAgICAgIGlmIHZlciA+PSA5MDAwMDoKKyAgICAgICAgICAgICAgICBzZWxm LnRlbXBsYXRlX3BhdGggPSAnY2FzdC9zcWwvOS4wX3BsdXMnCisKKyAgICAg ICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBy ZXR1cm4gd3JhcAorCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5tYW5hZ2VyLmRiX2luZm9bZGlkXVsn ZGF0bGFzdHN5c29pZCddCisgICAgICAgICAgICApCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGZvciBy b3cgaW4gcmVzWydyb3dzJ106CisgICAgICAgICAgICByb3dbJ2Nhc3Rjb250 ZXh0J10gPSBUcnVlIGlmIHJvd1snY2FzdGNvbnRleHQnXSA9PSAnSU1QTElD SVQnIGVsc2UgRmFsc2UKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwKKyAg ICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxm LCBnaWQsIHNpZCwgZGlkKToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAg ICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLm1hbmFnZXIuZGJfaW5mb1tk aWRdWydkYXRsYXN0c3lzb2lkJ10KKyAgICAgICAgICAgICkKKyAgICAgICAg c3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAg ICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICByb3db J2Nhc3Rjb250ZXh0J10gPSBUcnVlIGlmIHJvd1snY2FzdGNvbnRleHQnXSA9 PSAnSU1QTElDSVQnIGVsc2UgRmFsc2UKKyAgICAgICAgICAgIHJlcy5hcHBl bmQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYmx1ZXByaW50LmdlbmVy YXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJv d1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBkaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgIGljb249Imljb24tY2FzdCIKKyAgICAgICAgICAgICAg ICAgICAgKSkKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgY2lkKToKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgY2lkPWNpZCwKKyAg ICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5tYW5hZ2VyLmRiX2luZm9b ZGlkXVsnZGF0bGFzdHN5c29pZCddCisgICAgICAgICAgICApCisgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisK KyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICBy ZXN1bHQgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICByZXN1bHRbJ2Nhc3Rj b250ZXh0J10gPSBUcnVlIGlmIHJlc3VsdFsnY2FzdGNvbnRleHQnXSA9PSAn SU1QTElDSVQnIGVsc2UgRmFsc2UKKworICAgICAgICByZXR1cm4gYWpheF9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3Mn XVswXSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBj cmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlcyBuZXcgdGhlIGNhc3Qg b2JqZWN0CisgICAgICAgICIiIgorCisgICAgICAgIHJlcXVpcmVkX2FyZ3Mg PSBbCisgICAgICAgICAgICAnc3JjdHlwJywKKyAgICAgICAgICAgICd0cmd0 eXAnCisgICAgICAgIF0KKworICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3Jt IGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVzdC5kYXRh LmRlY29kZSgpKQorICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6 CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAgICAgICAgICAgc3Vj Y2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0 KAorICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgdGhl IHJlcXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcKKyAgICAgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgIyB3ZSBuZWVkIG9pZCB0byB0byBhZGQgb2JqZWN0IGlu IHRyZWUgYXQgYnJvd3NlciwgYmVsb3cgc3FsIHdpbGwgZ2l2ZXMgdGhlIHNh bWUKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjdHlwPWRhdGFb J3NyY3R5cCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRyZ3R5cD1kYXRhWyd0cmd0eXAnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYubWFuYWdlci5kYl9p bmZvW2RpZF1bJ2RhdGxhc3RzeXNvaWQnXQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMsIGNpZCA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9Y2lkKQorCisgICAgICAgICAgICByZXR1 cm4ganNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2RlPXNlbGYuYmx1ZXBy aW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAg ICAgY2lkLAorICAgICAgICAgICAgICAgICAgICBkaWQsCisgICAgICAgICAg ICAgICAgICAgIGRhdGFbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAg aWNvbj0iaWNvbi1jYXN0IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1z dHIoZSkpCisKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg dXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIGNpZCk6CisgICAgICAgICIi IgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIGNhc3Qgb2Jq ZWN0CisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3Jt IGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVzdC5kYXRh LmRlY29kZSgpKQorICAgICAgICBTUUwgPSBzZWxmLmdldFNRTChnaWQsIHNp ZCwgZGlkLCBkYXRhLCBjaWQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg IGlmIFNRTCBhbmQgU1FMLnN0cmlwKCdcbicpIGFuZCBTUUwuc3RyaXAoJyAn KToKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAg ICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89IkNhc3Qg dXBkYXRlZCIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAg ICAgICAgICAgICAgICAgICAgJ2lkJzogY2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlkJzog ZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nl c3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1 cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAg ICAgICAgICAgICAgICAgICdpZCc6IGNpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn Z2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRp ZAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKQor CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZWxldGUo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgY2lkKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBkcm9wIHRoZSBjYXN0IG9iamVjdAor ICAgICAgICAiIiIKKyAgICAgICAgIyBCZWxvdyB3aWxsIGRlY2lkZSBpZiBp dCdzIHNpbXBsZSBkcm9wIG9yIGRyb3Agd2l0aCBjYXNjYWRlIGNhbGwKKyAg ICAgICAgaWYgc2VsZi5jbWQgPT0gJ2RlbGV0ZSc6CisgICAgICAgICAgICAj IFRoaXMgaXMgYSBjYXNjYWRlIG9wZXJhdGlvbgorICAgICAgICAgICAgY2Fz Y2FkZSA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNhc2Nh ZGUgPSBGYWxzZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgR2V0 IG5hbWUgZm9yIGNhc3QgZnJvbSBjaWQKKyAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn ZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaWQ9Y2lkKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICMgZHJvcCBj YXN0CisgICAgICAgICAgICByZXN1bHQgPSByZXNbJ3Jvd3MnXVswXQorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNhc3Rzb3VyY2U9cmVzdWx0WydjYXN0 c291cmNlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2FzdHRhcmdldD1yZXN1bHRbJ2Nhc3R0YXJnZXQnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjYXNjYWRlPWNhc2NhZGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdl dHRleHQoIkNhc3QgZHJvcHBlZCIpLAorICAgICAgICAgICAgICAgIGRhdGE9 eworICAgICAgICAgICAgICAgICAgICAnaWQnOiBjaWQsCisgICAgICAgICAg ICAgICAgICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICdn aWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICApCisKKyAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgY2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgIFRoaXMg ZnVuY3Rpb24gcmV0dXJucyBtb2RpZmllZCBTUUwKKyAgICAgICAgIiIiCisg ICAgICAgIGRhdGEgPSByZXF1ZXN0LmFyZ3MKKyAgICAgICAgU1FMID0gc2Vs Zi5nZXRTUUwoZ2lkLCBzaWQsIGRpZCwgZGF0YSwgY2lkKQorICAgICAgICBp ZiBpc2luc3RhbmNlKFNRTCwgc3RyKSBhbmQgU1FMIGFuZCBTUUwuc3RyaXAo J1xuJykgYW5kIFNRTC5zdHJpcCgnICcpOgorICAgICAgICAgICAgcmV0dXJu IG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0 YT1TUUwsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAg ICAgZGF0YT0iLS1tb2RpZmllZCBTUUwiLAorICAgICAgICAgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkKKworICAgIGRl ZiBnZXRTUUwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgZGF0YSwgY2lkPU5vbmUp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJl dHVybiBTUUwgZm9yIG1vZGVsIGRhdGEKKyAgICAgICAgIiIiCisgICAgICAg IHRyeToKKyAgICAgICAgICAgIGlmIGNpZCBpcyBub3QgTm9uZToKKyAgICAg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9Y2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lz b2lkPXNlbGYubWFuYWdlci5kYl9pbmZvW2RpZF1bJ2RhdGxhc3RzeXNvaWQn XSkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBv bGRfZGF0YSA9IHJlc1sncm93cyddWzBdCisgICAgICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBvX2RhdGE9b2xkX2RhdGEK KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICBpZiAnc3JjdHlwJyBpbiBkYXRhIGFuZCAndHJndHlw JyBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0 ZS5zcWwnXSksIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAg ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgU1FMID0gIi0t IGluY29tcGxldGUgZGVmaW5pdGlvbiIKKyAgICAgICAgICAgIHJldHVybiBT UUwKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0 X2Z1bmN0aW9ucyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBjaWQ9Tm9uZSk6Cisg ICAgICAgIHJlcz1bXQorICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3JtIGlm IHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRl Y29kZSgpKQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2Z1bmN0aW9ucy5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3R5cD1k YXRhWydzcmN0eXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHJndHlwPWRhdGFbJ3RyZ3R5cCddKQorICAgICAgICBzdGF0 dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgICMg VE9ETzogYWRkIHNjaGVtYXByZWZpeCB0byBwcm9uYW1lIGJlZm9yZSBhZGRp bmcgaXQgdG8gdmFsdWUgaW4gcmVzCisgICAgICAgIGZvciByb3cgaW4gcnNl dFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCh7J2xhYmVsJzog cm93Wydwcm9uYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICd2YWx1 ZSc6IHJvd1sncHJvbmFtZSddfSkKKyAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisg ICAgICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBn ZXRfc291cmNlVGFyZ2V0X3R5cGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgY2lk PU5vbmUpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnZ2V0c3JjYW5kdHJndHR5cGUuc3FsJ10pLAorICAgICAg ICAgICAgY2lkPWNpZAorICAgICAgICAgICAgKQorICAgICAgICBzdGF0dXMs IHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIHJlcyA9 IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgZm9yIHJv dyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICAjIFRPRE86IEZvbGxv dyBkbGdUeXBlUHJvcGVydHk6OkZpbGxEYXRhVHlwZSgpIGZ1bmN0aW9uIGJl Zm9yZSBhZGRpbmcgdHlwZW5hbWUgdG8gcmVzCisgICAgICAgICAgICByZXMu YXBwZW5kKHsKKyAgICAgICAgICAgICAgICAnbGFiZWwnOiByb3dbJ3R5cG5h bWUnXSwKKyAgICAgICAgICAgICAgICAndmFsdWUnOiBlc2NhcGUocm93Wyd0 eXBuYW1lJ10pCisgICAgICAgICAgICAgICAgfSkKKworICAgICAgICByZXR1 cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMs CisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICApCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHNxbChzZWxmLCBnaWQs IHNpZCwgZGlkLCBjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBmb3Igc3FsIHBhbmVsCisgICAg ICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAg ICAgICAgIGNpZD1jaWQsCisgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29p ZD1zZWxmLm1hbmFnZXIuZGJfaW5mb1tkaWRdWydkYXRsYXN0c3lzb2lkJ10K KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmVz dWx0ID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAgIHJlc3VsdFsnY2Fz dGNvbnRleHQnXSA9IEZhbHNlIGlmIHJlc3VsdFsnY2FzdGNvbnRleHQnXSA9 PSAnRVhQTElDSVQnIGVsc2UgVHJ1ZQorICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdj cmVhdGUuc3FsJ10pLCBkYXRhPXJlc3VsdCwgY29ubj1zZWxmLmNvbm4sIGlz X3NxbD1UcnVlKQorICAgICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo cmVzcG9uc2U9U1FMKQorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg ZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9c3RyKGUpKQorCitDYXN0Vmlldy5yZWdpc3Rlcl9ub2RlX3Zp ZXcoYmx1ZXByaW50KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy9zdGF0aWMvaW1nL2Nhc3QucG5nIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2Nhc3RzL3N0YXRpYy9pbWcvY2FzdC5wbmcKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uMmJlN2YzNzQyYTc2MGZhYTc3MDkwNTI2NjlmNDQ0YmE4 OTQ5YzMzMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDI2CnpjbWVBU0BO PyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYkt9YSkze1dFMEE4PVhM SVl+YGJocz5iRWpYcwp6ZHRjKDwjKV9We15HbGNoS2VlfiMtVUdRNkVCQGJx c0loTHt8QSZ1X0gqZnlgPGY7OXhVSF9qd19jP2cqfEJJSlYKekNyPG8te1d7 fnFoNXY4Z21SYEh8fE5aLT5kLXdpLXtNaF5XQCZDYENyb0RMYWY2dztFKFF7 KHNmen5qVjFvO0lzCnpJNlMrTjJJTyFTY3RqUWhYJThAVkpERl88V1lsQE9J RUZ9RSZPTHV5c0w0UXBgTkZaUXl3akRHSXlgcCVfI2RCbgp6UTAoYEVPN0NV SFhRZSpOYD8pPXReUTdEOHc4fTlWKk0mT1htWWNTUU1UVHhYYTVlWl5zWWJ6 VmpvSHRsQU02WD4KencpVnQ3O1hVaHU/YUNnOC1xKVQjZGpzcD8xdlFuMCgj SFp7JmF2Sz5HOzdNfEtlemkqMUp8OUB3TUBBOEdJdTVhCno3a0BTdktBJWxM Zmk2KWthZzhXUk5pMGRWTi1qelRRVmQyMGg2Y0taTSFFKXVBd352UENkTzdL Q2ZXdzNSdDUkWgpzR2dha0tIMDApfFdUc1VARyNGVGRIR291RzhKSXlkb1NH aUcyQj85LSk3OCZxb2xgOyswNnpAM2h5VlpwCgpsaXRlcmFsIDAKSGNtVj9k MDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvc3RhdGljL2ltZy9j b2xsLWNhc3QucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3N0YXRpYy9pbWcvY29sbC1j YXN0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWViNjVhZjAyYzY2 YmQ2NGFiMzQwNWM1OTJlZmU0ZDkwZDQxYzk4CkdJVCBiaW5hcnkgcGF0Y2gK bGl0ZXJhbCA0MDIKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNjM/ d3lsYEdiS31SRGUmMkUwOHw1d2BYYWVPPGxxNE5kSH1QCnpyKGU1IVUhcCMq ZGc7PnRfWn0hdFo0QXAjb2NpI1F7PVNYb1BvQ1FFLSg8VUwpJkdxZnxMQHhN fExGRkY9UHY+ZQp6QU84UjBlY1AqN0RRRDBBfE1ZM3srcWIzSHVLbUElfE5w YVJ8MVpoUmowYyp8U1E2d0glOzUwc01qRFhBUz5PPl8KejQ1VTU0KnpJSnQ5 Z3ZhbD5FYWs3YWs9I1RaTjZwJjBoU0E/eUdwJjVYNlElaGUqMGVeVG9aWldO VHNyK2IpdClsCnpqOSU0THE0cVpPd2ZGRGN6Y3tPcTw2KXJta3NFSiZuRWlP RndAeTNEVnoqWk89OCtUQVo9SlFDJkNoPUlsSiVxMAp6biNhJWQkT241fWVR IV97YE8wPDFQa1dzXmBnKU8hIUpBbS11eztYZzR6eWFlIzVKTk1DOXgjY0Qh Q3tYTkhHezAKejcjaXByOHRFRHNoOFApR25IWER7bX1uY0FTe1dFdiV2Njtf KFU2OztsOV5UcyhPX1QrKSZOcCVXbmMhO2FCNnohClE4bFZPU1BnZyZlYnhz TFEwOVhmfmZkQnZpCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3QvanMvY2FzdHMuanMg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3QvanMvY2FzdHMuanMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBjZGQyMQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9q cy9jYXN0cy5qcwpAQCAtMCwwICsxLDIxMyBAQAorZGVmaW5lKAorICAgICAg ICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5n JywgJ3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ2FsZXJ0aWZ5Jywg J3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitmdW5jdGlvbigkLCBf LCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CisKKyAgICBp ZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1jYXN0J10pIHsKKyAgICAgIHZh ciBjYXN0cyA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1jYXN0J10g PQorICAgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQo eworICAgICAgICAgIG5vZGU6ICdjYXN0JywKKyAgICAgICAgICBsYWJlbDog J3t7IF8oJ0Nhc3RzJykgfX0nLAorICAgICAgICAgIHR5cGU6ICdjb2xsLWNh c3QnLAorICAgICAgICAgIGNvbHVtbnM6IFsnbmFtZScsJ2Rlc2NyaXB0aW9u J10KKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGlmICghcGdCcm93c2Vy Lk5vZGVzWydjYXN0J10pIHsKKyAgICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rl c1snY2FzdCddID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAg ICAgICAgcGFyZW50X3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgIHR5cGU6 ICdjYXN0JywKKyAgICAgICAgY2FuRHJvcDogdHJ1ZSwKKyAgICAgICAgY2Fu RHJvcENhc2NhZGU6IHRydWUsCisgICAgICAgIGxhYmVsOiAne3sgXygnQ2Fz dCcpIH19JywKKyAgICAgICAgaGFzU1FMOiB0cnVlLAorICAgICAgICBJbml0 OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSBy ZWdpc3RyYXRpb24gb2YgbWVudXMgKi8KKyAgICAgICAgICBpZiAodGhpcy5p bml0aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg IHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgICAgcGdCcm93 c2VyLmFkZF9tZW51cyhbeworICAgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9j YXN0X29uX2RhdGFiYXNlJywgbm9kZTogJ2RhdGFiYXNlJywgbW9kdWxlOiB0 aGlzLAorICAgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4 dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAg ICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6 ICd7eyBfKCdDYXN0Li4uJykgfX0nLAorICAgICAgICAgICAgaWNvbjogJ3dj VGFiSWNvbiBpY29uLWNhc3QnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30K KyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIG5hbWU6ICdjcmVhdGVfY2Fz dF9vbl9jb2xsJywgbm9kZTogJ2NvbGwtY2FzdCcsIG1vZHVsZTogdGhpcywK KyAgICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwg Y2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICAg IGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sg XygnQ2FzdC4uLicpIH19JywKKyAgICAgICAgICAgIGljb246ICd3Y1RhYklj b24gaWNvbi1jYXN0JywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAg ICAgICAgfSx7CisgICAgICAgICAgICBuYW1lOiAnY3JlYXRlX2Nhc3QnLCBu b2RlOiAnY2FzdCcsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICAgIGFwcGxp ZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29i al9wcm9wZXJ0aWVzJywKKyAgICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRl JywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnQ2FzdC4uLicpIH19JywK KyAgICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1jYXN0JywgZGF0 YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAgICAgICAgfV0pOworCisgICAg ICAgIH0sCisgICAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5N b2RlbC5leHRlbmQoeworICAgICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAg ICAgICBuYW1lOiB1bmRlZmluZWQsCisgICAgICAgICAgICBlbmNvZGluZzog J1VURjgnLAorICAgICAgICAgICAgc3JjdHlwOiB1bmRlZmluZWQsCisgICAg ICAgICAgICB0cmd0eXA6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIHByb25h bWU6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIGNhc3Rjb250ZXh0OiB1bmRl ZmluZWQsCisgICAgICAgICAgICBzeXNjYXN0OiB1bmRlZmluZWQsCisgICAg ICAgICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkCisgICAgICAgICAgfSwK KyAgICAgICAgICBzY2hlbWE6IFt7CisgICAgICAgICAgICBpZDogJ25hbWUn LCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBn cm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAgICAgICAgICBl ZGl0YWJsZTogZmFsc2UsIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6IHRydWUs IGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF81MCcKKyAgICAg ICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAnb2lkJywgbGFiZWw6J3t7IF8o J09pZCcpIH19JywgY2VsbDogJ3N0cmluZycsIGdyb3VwOiAne3sgXygnRGVm aW5pdGlvbicpIH19JywKKyAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwg dHlwZTogJ3RleHQnLCBkaXNhYmxlZDogdHJ1ZQorICAgICAgICAgIH0sewor ICAgICAgICAgICAgaWQ6ICdzcmN0eXAnLCBsYWJlbDone3sgXygnU291cmNl IHR5cGUnKSB9fScsIHVybDogJ2dldF90eXBlJywKKyAgICAgICAgICAgIHR5 cGU6ICd0ZXh0JywgZ3JvdXA6ICdEZWZpbml0aW9uJywgZGlzYWJsZWQ6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiAhbS5pc05ldygpCisg ICAgICAgICAgICB9LAorICAgICAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlv bihyb3dzKSB7CisgICAgICAgICAgICAgIF8uZWFjaChyb3dzLCBmdW5jdGlv bihyKSB7CisgICAgICAgICAgICAgICAgclsnaW1hZ2UnXSA9ICdpY29uLWNh c3QnOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgcmV0dXJu IHJvd3M7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgLyogIEFzIG5h bWUgaXMgYmVpbmcgZ2VuZXJhdGVkIGZyb20gc3JjdHlwIGFuZCB0cmd0eXAs IGEgY2hlY2sgaGFzIGJlZW4gcHV0IGluCisgICAgICAgICAgICAgKiAgY29u dHJvbCBmaWVsZCBpZiBib3RoIGFyZSBjaGFuZ2VkIG9yIG5vdCBhbmQgZGVw ZW5kaW5nIHVwb24gaXQsIG5hbWUgaGFzIGJlZW4gc2V0LgorICAgICAgICAg ICAgICovCisgICAgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uTm9kZUFq YXhPcHRpb25zQ29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgICAgb25D aGFuZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICBCYWNrZm9y bS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLnByb3RvdHlwZS5vbkNoYW5nZS5h cHBseSgKKyAgICAgICAgICAgICAgICAgICAgdGhpcywgYXJndW1lbnRzCisg ICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgIHZhciBz cmN0eXBlID0gdGhpcy5tb2RlbC5nZXQoJ3NyY3R5cCcpOworICAgICAgICAg ICAgICAgICB2YXIgdHJndHlwZSA9IHRoaXMubW9kZWwuZ2V0KCd0cmd0eXAn KTsKKyAgICAgICAgICAgICAgICAgaWYoc3JjdHlwZSAhPSB1bmRlZmluZWQg JiYgc3JjdHlwZSAhPSAnJyAmJgorICAgICAgICAgICAgICAgICAgICB0cmd0 eXBlICE9IHVuZGVmaW5lZCAmJiB0cmd0eXBlICE9ICcnKQorICAgICAgICAg ICAgICAgICAgIHRoaXMubW9kZWwuc2V0KCJuYW1lIiwgc3JjdHlwZSsiLT4i K3RyZ3R5cGUpOworICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg ICAgICAgICAgdGhpcy5tb2RlbC51bnNldCgibmFtZSIpOworICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgfSkKKyAgICAgICAgICB9LHsKKyAgICAg ICAgICAgIGlkOiAndHJndHlwJywgbGFiZWw6J3t7IF8oJ1RhcmdldCB0eXBl JykgfX0nLCB1cmw6ICdnZXRfdHlwZScsCisgICAgICAgICAgICB0eXBlOiAn dGV4dCcsIGdyb3VwOiAnRGVmaW5pdGlvbicsIGRpc2FibGVkOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICAgIHJldHVybiAhbS5pc05ldygpCisgICAg ICAgICAgICAgIH0sCisgICAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9u KHJvd3MpIHsKKyAgICAgICAgICAgICAgXy5lYWNoKHJvd3MsIGZ1bmN0aW9u KHIpIHsKKyAgICAgICAgICAgICAgICByWydpbWFnZSddID0gJ2ljb24tY2Fz dCc7CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICByZXR1cm4g cm93czsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAvKiAgQXMgbmFt ZSBpcyBiZWluZyBnZW5lcmF0ZWQgZnJvbSBzcmN0eXAgYW5kIHRyZ3R5cCwg YSBjaGVjayBoYXMgYmVlbiBwdXQgaW4KKyAgICAgICAgICAgICAqICBjb250 cm9sIGZpZWxkIGlmIGJvdGggYXJlIGNoYW5nZWQgb3Igbm90IGFuZCBkZXBl bmRpbmcgdXBvbiBpdCwgbmFtZSBoYXMgYmVlbiBzZXQuCisgICAgICAgICAg ICAgKi8KKyAgICAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Ob2RlQWph eE9wdGlvbnNDb250cm9sLmV4dGVuZCh7CisgICAgICAgICAgICAgb25DaGFu Z2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgQmFja2Zvcm0uTm9k ZUFqYXhPcHRpb25zQ29udHJvbC5wcm90b3R5cGUub25DaGFuZ2UuYXBwbHko CisgICAgICAgICAgICAgICAgIHRoaXMsIGFyZ3VtZW50cworICAgICAgICAg ICAgICAgICApOworICAgICAgICAgICAgICAgdmFyIHNyY1R5cGUgPSB0aGlz Lm1vZGVsLmdldCgnc3JjdHlwJyk7CisgICAgICAgICAgICAgICB2YXIgdHJn dHlwZSA9IHRoaXMubW9kZWwuZ2V0KCd0cmd0eXAnKTsKKyAgICAgICAgICAg ICAgIGlmKHNyY1R5cGUgIT0gdW5kZWZpbmVkICYmIHNyY1R5cGUgIT0gJycg JiYKKyAgICAgICAgICAgICAgICAgIHRyZ3R5cGUgIT0gdW5kZWZpbmVkICYm IHRyZ3R5cGUgIT0gJycpCisgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwu c2V0KCJuYW1lIiwgc3JjVHlwZSsiLT4iK3RyZ3R5cGUpOworICAgICAgICAg ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnVuc2V0 KCJuYW1lIik7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0pCisg ICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ3Byb25hbWUnLCBsYWJl bDone3sgXygnRnVuY3Rpb24nKSB9fScsIGRlcHM6WydzcmN0eXAnLCAndHJn dHlwJ10sCisgICAgICAgICAgICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiBm dW5jdGlvbihtKSB7IHJldHVybiAhbS5pc05ldygpOyB9LAorICAgICAgICAg ICAgZ3JvdXA6ICdEZWZpbml0aW9uJywKKyAgICAgICAgICAgIGNvbnRyb2w6 ICdub2RlLWFqYXgtb3B0aW9ucycsCisgICAgICAgICAgICBvcHRpb25zOiBm dW5jdGlvbigpIHsKKworICAgICAgICAgICAgICB2YXIgc3JjVHlwID0gdGhp cy5tb2RlbC5nZXQoJ3NyY3R5cCcpOworICAgICAgICAgICAgICB2YXIgdHJn dHlwID0gdGhpcy5tb2RlbC5nZXQoJ3RyZ3R5cCcpOworICAgICAgICAgICAg ICB2YXIgcmVzID0gW107CisgICAgICAgICAgICAgIC8qICBPbiBzcmN0eXAg YW5kIHRyZ3R5cCBzdGF0ZSBjaGFuZ2UgZXZlbnQgYW4gYWpheCBjYWxsIGlz IG1hZGUgdG8KKyAgICAgICAgICAgICAgKiAgIGZldGNoIGxpc3Qgb2YgcmVs YXRlZCBmdW5jdGlvbnMKKyAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAg ICAgaWYoc3JjVHlwICE9IHVuZGVmaW5lZCAmJiBzcmNUeXAgIT0gJycgJiYK KyAgICAgICAgICAgICAgICAgdHJndHlwICE9IHVuZGVmaW5lZCAmJiB0cmd0 eXAgIT0gJycpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg dmFyIG5vZGUgPSB0aGlzLmZpZWxkLmdldCgnc2NoZW1hX25vZGUnKSwKKyAg ICAgICAgICAgICAgICAgX3VybCA9IG5vZGUuZ2VuZXJhdGVfdXJsLmFwcGx5 KAorICAgICAgICAgICAgICAgICBub2RlLCBbCisgICAgICAgICAgICAgICAg ICAgbnVsbCwgJ2dldGZ1bmN0aW9ucycsIHRoaXMuZmllbGQuZ2V0KCdub2Rl X2RhdGEnKSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgdGhpcy5maWVs ZC5nZXQoJ25vZGVfaW5mbycpCisgICAgICAgICAgICAgICAgIF0pOworICAg ICAgICAgICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgICAgICB0eXBl OiAnUE9TVCcsCisgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDMwMDAwLAor ICAgICAgICAgICAgICAgICB1cmw6IF91cmwsCisgICAgICAgICAgICAgICAg IGNhY2hlOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgYXN5bmM6IGZhbHNl LAorICAgICAgICAgICAgICAgICBkYXRhOiB7InNyY3R5cCIgOiBzcmNUeXAs ICJ0cmd0eXAiIDogdHJndHlwfSwKKyAgICAgICAgICAgICAgICAgc3VjY2Vz czogZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgcmVz ID0gcmVzdWx0LmRhdGE7CisgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl czsKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgZXJy b3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgeworICAgICAgICAg ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICB2YXIgZXJy ID0gJC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAg ICAgICAgICAgICBpZiAoZXJyLnN1Y2Nlc3MgPT0gMCkgeworICAgICAgICAg ICAgICAgICAgICAgICBtc2cgPSBTKCd7eyBfKCcgKyBlcnIuZXJyb3Jtc2cg KyAnKX19JykudmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgYWxl cnRpZnkuZXJyb3IoInt7IF8oJyIgKyBlcnIuZXJyb3Jtc2cgKyAiJykgfX0i KTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ICB9IGNhdGNoIChlKSB7fQorICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgfSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl dHVybiByZXM7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ2Nhc3Rjb250ZXh0JywgbGFiZWw6J3t7IF8oJ0NvbnRleHQnKSB9 fScsIG9wdGlvbnM6eydvblRleHQnOidJTVBMSUNJVCcsJ29mZlRleHQnOidF WFBMSUNJVCd9LAorICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTog J3N3aXRjaCcsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVybiAhbS5p c05ldygpOyB9LAorICAgICAgICAgIGdyb3VwOiAnRGVmaW5pdGlvbicKKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzeXNjYXN0JywgbGFiZWw6J3t7 IF8oJ1N5c3RlbSBDYXN0PycpIH19JywgbW9kZTogWydwcm9wZXJ0aWVzJ10s CisgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAndGV4dCcKKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVs Oid7eyBfKCdDb21tZW50JykgfX0nLHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdQ cm9wZXJ0aWVzJywKKyAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJywgY2Vs bEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUwJworICAgICAgICB9 CisgICAgICAgIF0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbihrZXlz KXsKKyAgICAgICAgLyoKKyAgICAgICAgICAgICogVHJpZ2dlcnMgc3BlY2lm aWMgZXJyb3IgbWVzc2FnZXMgZm9yIHNyY3R5cCBhbmQKKyAgICAgICAgICAg ICogdHJndHlwIGlmIGFueSBvbmUgb2YgdGhlbSBpcyBub3Qgc2VsZWN0ZWQK KyAgICAgICAgKi8KKyAgICAgICAgICB2YXIgc3JjdHlwZSA9IHRoaXMuZ2V0 KCdzcmN0eXAnKTsKKyAgICAgICAgICB2YXIgdHJndHlwZSA9IHRoaXMuZ2V0 KCd0cmd0eXAnKTsKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChzcmN0 eXBlKSB8fCBfLmlzTnVsbChzcmN0eXBlKSB8fCBTdHJpbmcoc3JjdHlwZSku cmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAg ICAgdmFyIG1zZyA9ICd7eyBfKCdTb3VyY2UgdHlwZSBtdXN0IGJlIHNlbGVj dGVkIScpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQo J3NyY3R5cCcsIG1zZyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAg ICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdzcmN0eXAnKTsKKyAgICAg ICAgICB9CisKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0cmd0eXBl KSB8fCBfLmlzTnVsbCh0cmd0eXBlKSB8fCBTdHJpbmcodHJndHlwZSkucmVw bGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAg dmFyIG1zZyA9ICd7eyBfKCdUYXJnZXQgdHlwZSBtdXN0IGJlIHNlbGVjdGVk IScpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3Ry Z3R5cCcsIG1zZyk7CisgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAg ICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCd0cmd0eXAnKTsKKyAgICAgICAg ICB9CisgICAgICAgICAgdGhpcy50cmlnZ2VyKCdvbi1zdGF0dXMtY2xlYXIn KTsKKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAg fSkKKyAgfSk7CisKKyAgfQorICAgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNb J2NvbGwtY2FzdCddOworfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3Nx bC85LjBfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRl cy9jYXN0L3NxbC85LjBfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMWFhMWEKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMF9wbHVz L2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwyMSBAQAorCisKK3sjIENSRUFURSBD QVNUIFN0YXRlbWVudCAjfQoreyUgaWYgaXNfc3FsICV9CistLSBEUk9QIENB U1QgKHt7IGNvbm58cXRUeXBlSWRlbnQoZGF0YS5zcmN0eXApIH19IEFTIHt7 IGNvbm58cXRUeXBlSWRlbnQoZGF0YS50cmd0eXApIH19KTsKKworeyUgZW5k aWYgJX0KK3slIGlmIGRhdGEgYW5kIGRhdGEuc3JjdHlwIGFuZCBkYXRhLnRy Z3R5cCAlfQorQ1JFQVRFIENBU1QgKHt7IGNvbm58cXRUeXBlSWRlbnQoZGF0 YS5zcmN0eXApIH19IEFTIHt7IGNvbm58cXRUeXBlSWRlbnQoZGF0YS50cmd0 eXApIH19KQoreyUgaWYgZGF0YS5wcm9uYW1lIGFuZCBkYXRhLnByb25hbWUg IT0gJ2JpbmFyeSBjb21wYXRpYmxlJyV9CisgICAgV0lUSCBGVU5DVElPTiB7 e2RhdGEucHJvbmFtZX19eyUgZWxzZSAlfQorICAgIFdJVEhPVVQgRlVOQ1RJ T057JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jYXN0Y29udGV4dCA9PSBUcnVl IG9yIGRhdGEuY2FzdGNvbnRleHQgPT0gJ3RydWUnICV9CisKKyAgICBBUyBJ TVBMSUNJVHslIGVuZGlmICV9OworCit7IyBEZXNjcmlwdGlvbiBmb3IgQ0FT VCAjfQoreyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBPTiBD QVNUICh7eyBjb25ufHF0VHlwZUlkZW50KGRhdGEuc3JjdHlwKSB9fSBBUyB7 eyBjb25ufHF0VHlwZUlkZW50KGRhdGEudHJndHlwKSB9fSkKKyAgICAgIElT IHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsIH19OworeyUgZW5kaWYg JX17JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4w X3BsdXMvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2Fz dC9zcWwvOS4wX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4xYjhkOGI2Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjBfcGx1cy9kZWxl dGUuc3FsCkBAIC0wLDAgKzEsMTQgQEAKK3sjIEZFVENIIENBU1QgU09VUkNF IFRZUEUgQU5EIFRBUkdFVCBUWVBFIFN0YXRlbWVudCAjfQoreyUgaWYgY2lk ICV9CisgIFNFTEVDVAorICAgIGZvcm1hdF90eXBlKGNhLmNhc3Rzb3VyY2Us IG51bGwpIGFzIGNhc3Rzb3VyY2UsCisgICAgZm9ybWF0X3R5cGUoY2EuY2Fz dHRhcmdldCwgbnVsbCkgYXMgY2FzdHRhcmdldAorICBGUk9NCisgICAgcGdf Y2FzdCBjYQorICBXSEVSRQorICAgIGNhLm9pZCA9IHt7Y2lkfX06Ok9JRDsK K3slIGVuZGlmICV9Cit7IyBEUk9QIENBU1QgU3RhdGVtZW50ICN9Cit7JSBp ZiBjYXN0c291cmNlIGFuZCBjYXN0dGFyZ2V0ICV9CitEUk9QIENBU1QgKHt7 Y2FzdHNvdXJjZX19IEFTIHt7Y2FzdHRhcmdldH19KSB7JSBpZiBjYXNjYWRl ICV9Q0FTQ0FERXslZW5kaWYlfTsKK3slIGVuZGlmICV9ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3Rl bXBsYXRlcy9jYXN0L3NxbC85LjBfcGx1cy9mdW5jdGlvbnMuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjBfcGx1cy9mdW5jdGlv bnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4 YzBlNGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxh dGVzL2Nhc3Qvc3FsLzkuMF9wbHVzL2Z1bmN0aW9ucy5zcWwKQEAgLTAsMCAr MSwxOCBAQAoreyMgRkVUQ0ggRlVOQ1RJT05TIGRlcGVuZGluZyB1cG9uIFNP VVJDRSBUWVBFIGFuZCBUQVJHRVQgVFlQRSBJTiBDQVNUICAjfQorU0VMRUNU CisgIHByb25hbWUsCisgIG5zcG5hbWUsCisgIHByb2FyZ3R5cGVzCitGUk9N CisgIHBnX3Byb2MgcCBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkPXAu cHJvbmFtZXNwYWNlCitXSEVSRQorICBwcm9hcmd0eXBlc1swXSA9IChTRUxF Q1QgdC5vaWQgRlJPTSBwZ190eXBlIHQgV0hFUkUgZm9ybWF0X3R5cGUodC5v aWQsIE5VTEwpID0ge3tzcmN0eXB8cXRMaXRlcmFsfX0pCisgIEFORCBwcm9y ZXR0eXBlID0gKFNFTEVDVCB0Lm9pZCBGUk9NIHBnX3R5cGUgdCBXSEVSRSBm b3JtYXRfdHlwZSh0Lm9pZCwgTlVMTCkgPSB7e3RyZ3R5cHxxdExpdGVyYWx9 fSkKKyAgQU5ECisgICAgQ0FTRQorICAgIFdIRU4gYXJyYXlfbGVuZ3RoKHBy b2FyZ3R5cGVzLDEpICA9IDIgVEhFTgorICAgICAgcHJvYXJndHlwZXNbMV0g PSAyMworICAgIFdIRU4gYXJyYXlfbGVuZ3RoKHByb2FyZ3R5cGVzLDEpICA+ PSAzIFRIRU4KKyAgICAgIHByb2FyZ3R5cGVzWzFdID0gMjMgQU5EIHByb2Fy Z3R5cGVzWzJdID0gMTYKKyAgICBFTFNFIFRSVUUKKyAgICBFTkQKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4wX3Bs dXMvZ2V0c3JjYW5kdHJndHR5cGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBs YXRlcy9jYXN0L3NxbC85LjBfcGx1cy9nZXRzcmNhbmR0cmd0dHlwZS5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUwNWNjYgot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2Fz dC9zcWwvOS4wX3BsdXMvZ2V0c3JjYW5kdHJndHR5cGUuc3FsCkBAIC0wLDAg KzEsNDMgQEAKK1NFTEVDVAorICAgICoKK0ZST00gKAorCSAgICBTRUxFQ1Qg Zm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMgdHlwbmFtZSwKKwkJQ0FTRQor CQkgIFdIRU4gdHlwZWxlbSA+IDAgVEhFTiB0eXBlbGVtCisJICAgICAgRUxT RSB0Lm9pZAorCQlFTkQgYXMgZWxlbW9pZCwKKwkJICB0eXBsZW4sCisJCSAg dHlwdHlwZSwKKwkJICB0Lm9pZCwKKwkgICAgICBuc3BuYW1lLAorCQkgIChT RUxFQ1QgQ09VTlQoMSkgRlJPTSBwZ190eXBlIHQyIFdIRVJFIHQyLnR5cG5h bWUgPSB0LnR5cG5hbWUpID4gMSBBUyBpc2R1cAorCSAgICBGUk9NCisJICAg ICAgcGdfdHlwZSB0CisJICAgICAgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9O IHR5cG5hbWVzcGFjZT1uc3Aub2lkCisJCVdIRVJFCisJCSAgKE5PVCAodHlw bmFtZSA9ICd1bmtub3duJworCQkgICBBTkQgbnNwbmFtZSA9ICdwZ19jYXRh bG9nJykpCisJCSAgIEFORCB0eXBpc2RlZmluZWQKKwkJICAgQU5EIHR5cHR5 cGUgSU4gKCdiJywgJ2MnLCAnZScsICdyJykKKwkJICAgQU5EIE5PVCBFWElT VFMgKAorCQkgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QKKwkJICAgICAg ICAgICAgICAgICAgICAgICAxCisJCSAgICAgICAgICAgICAgICAgICAgIEZS T00KKwkJICAgICAgICAgICAgICAgICAgICAgICBwZ19jbGFzcworCQkgICAg ICAgICAgICAgICAgICAgICBXSEVSRQorCQkgICAgICAgICAgICAgICAgICAg ICAgIHJlbG5hbWVzcGFjZSA9IHR5cG5hbWVzcGFjZQorCQkgICAgICAgICAg ICAgICAgICAgICAgIEFORCByZWxuYW1lID0gdHlwbmFtZQorCQkgICAgICAg ICAgICAgICAgICAgICAgIEFORCByZWxraW5kICE9ICdjJykKKwkJICAgICAg ICAgICAgICAgICAgICAgICBBTkQgKHR5cG5hbWUgTk9UIExJS0UgJ18lJwor CQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1IgTk9UIEVYSVNUUyAo CisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNFTEVDVAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDEKKwkJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRlJPTQorCQkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2NsYXNzCisJCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdI RVJFCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVsbmFtZXNwYWNlID0gdHlwbmFtZXNwYWNlCisJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5E IHJlbG5hbWUgPSBTVUJTVFJJTkcodHlwbmFtZSBGUk9NIDIpOjpuYW1lCisJ CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQU5EIHJlbGtpbmQgIT0gJ2MnKSkKKwkJICAgQU5EIG5zcC5uc3BuYW1l ICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnICkgQVMgZHVtbXkKK09SREVSIEJZ CisgIG5zcG5hbWUgPD4gJ3BnX2NhdGFsb2cnLCBuc3BuYW1lIDw+ICdwdWJs aWMnLCBuc3BuYW1lLCAxCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVt cGxhdGVzL2Nhc3Qvc3FsLzkuMF9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjBfcGx1cy9wcm9wZXJ0 aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k ZDJkMzhkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBs YXRlcy9jYXN0L3NxbC85LjBfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMCww ICsxLDYxIEBACit7IyBHZXQgT0lEIGZvciBDQVNUICN9Cit7JSBpZiBzcmN0 eXAgYW5kIHRyZ3R5cCAlfQorICBTRUxFQ1QKKyAgICBjYS5vaWQKKyAgRlJP TSBwZ19jYXN0IGNhCisgIFdIRVJFIGNhLmNhc3Rzb3VyY2UgPSAoU0VMRUNU IHQub2lkIEZST00gcGdfdHlwZSB0IFdIRVJFIGZvcm1hdF90eXBlKHQub2lk LCBOVUxMKSA9IHt7c3JjdHlwfHF0TGl0ZXJhbH19KQorICBBTkQgY2EuY2Fz dHRhcmdldCA9IChTRUxFQ1QgdC5vaWQgRlJPTSBwZ190eXBlIHQgV0hFUkUg Zm9ybWF0X3R5cGUodC5vaWQsIE5VTEwpID0ge3t0cmd0eXB8cXRMaXRlcmFs fX0pCisgIHslIGlmIGRhdGxhc3RzeXNvaWQgJX0KKyAgIEFORCBjYS5vaWQg PiB7e2RhdGxhc3RzeXNvaWR9fTo6T0lECisgIHslIGVuZGlmICV9CisKK3sj IEZFVENIIHByb3BlcnRpZXMgZm9yIENBU1QgI30KK3slIGVsc2UgJX0KKyAg U0VMRUNUCisgICAgY2Eub2lkLAorICBDQVNFCisgICAgV0hFTiB7e2RhdGxh c3RzeXNvaWR9fTo6T0lEID4gY2Eub2lkIHRoZW4gJ1lFUycgRUxTRSAnTk8n CisgIEVORCBBUyBzeXNjYXN0LAorICBDQVNFCisgICAgV0hFTiBjYS5jYXN0 Y29udGV4dCA9ICdhJyBUSEVOICdBU1NJR05NRU5UJworICAgIFdIRU4gY2Eu Y2FzdGNvbnRleHQgPSAnaScgVEhFTiAnSU1QTElDSVQnCisgICAgV0hFTiBj YS5jYXN0Y29udGV4dCA9ICdlJyBUSEVOICdFWFBMSUNJVCcKKyAgRU5EIEFT IGNhc3Rjb250ZXh0LAorICBDQVNFCisgICAgV0hFTiBwcm9uYW1lIElTIE5V TEwgVEhFTiAnYmluYXJ5IGNvbXBhdGlibGUnCisgICAgRUxTRSBwcm9uYW1l CisgIEVORCBBUyBwcm9uYW1lLAorICAgIGNhLmNhc3RmdW5jLAorICAgIGZv cm1hdF90eXBlKHN0Lm9pZCxOVUxMKSBBUyBzcmN0eXAsCisgICAgZm9ybWF0 X3R5cGUodHQub2lkLHR0LnR5cHR5cG1vZCkgQVMgdHJndHlwLAorICAgIG5z Lm5zcG5hbWUgQVMgc3JjbnNwbmFtZSwKKyAgICBudC5uc3BuYW1lIEFTIHRy Z25zcG5hbWUsCisgICAgbnAubnNwbmFtZSBBUyBwcm9uc3BuYW1lLAorICAg IGRlc2NyaXB0aW9uLAorICAgIGNvbmNhdChmb3JtYXRfdHlwZShzdC5vaWQs TlVMTCksJy0+Jyxmb3JtYXRfdHlwZSh0dC5vaWQsdHQudHlwdHlwbW9kKSkg YXMgbmFtZQorICBGUk9NIHBnX2Nhc3QgY2EKKyAgSk9JTiBwZ190eXBlIHN0 IE9OIHN0Lm9pZD1jYXN0c291cmNlCisgIEpPSU4gcGdfbmFtZXNwYWNlIG5z IE9OIG5zLm9pZD1zdC50eXBuYW1lc3BhY2UKKyAgSk9JTiBwZ190eXBlIHR0 IE9OIHR0Lm9pZD1jYXN0dGFyZ2V0CisgIEpPSU4gcGdfbmFtZXNwYWNlIG50 IE9OIG50Lm9pZD10dC50eXBuYW1lc3BhY2UKKyAgTEVGVCBKT0lOIHBnX3By b2MgcHIgT04gcHIub2lkPWNhc3RmdW5jCisgIExFRlQgSk9JTiBwZ19uYW1l c3BhY2UgbnAgT04gbnAub2lkPXByLnByb25hbWVzcGFjZQorICBMRUZUIE9V VEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPWNh Lm9pZCBBTkQgZGVzLm9ianN1YmlkPTAgQU5EIGRlcy5jbGFzc29pZD0ncGdf Y2FzdCc6OnJlZ2NsYXNzKQorCisgIHslIGlmIGNpZCAlfQorICAgIFdIRVJF IGNhLm9pZD17e2NpZH19OjppbnQKKyAgeyUgZW5kaWYgJX0KKworLS1UT0RP OiBhZGQgY2hlY2sgZm9yIHNob3dTeXN0ZW1PYmplY3QoKS4gY3VycmVudGx5 IGFzc3VtZWQgYXMgZmFsc2UKKyAgeyMKKyAgeyUgaWYgZGF0bGFzdHN5c29p ZCAlfQorICAgIHslIGlmIGNpZCAlfQorICAgICAgQU5ECisgICAgeyUgZWxz ZSAlfQorICAgICAgV0hFUkUKKyAgICB7JSBlbmRpZiAlfQorICAgIGNhLm9p ZCA+IHt7ZGF0bGFzdHN5c29pZH19OjpPSUQKKyAgeyUgZW5kaWYgJX0KKyAg I30KKyAgT1JERVIgQlkgc3QudHlwbmFtZSwgdHQudHlwbmFtZQoreyUgZW5k aWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMF9wbHVzL3Vw ZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzku MF9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uOGI5MGEyMwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9j YXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4wX3BsdXMvdXBkYXRlLnNxbApA QCAtMCwwICsxLDYgQEAKK3sjIFVQREFURSBEZXNjcmlwdGlvbiBmb3IgQ0FT VCAjfQorCit7JSAgaWYgZGF0YSBhbmQgJ2Rlc2NyaXB0aW9uJyBpbiBkYXRh IGFuZCBkYXRhLmRlc2NyaXB0aW9uICE9IG9fZGF0YS5kZXNjcmlwdGlvbiAl fQorICBDT01NRU5UIE9OIENBU1QgKHt7IGNvbm58cXRUeXBlSWRlbnQob19k YXRhLnNyY3R5cCkgfX0gQVMge3sgY29ubnxxdFR5cGVJZGVudChvX2RhdGEu dHJndHlwKSB9fSkKKyAgICBJUyB7eyBkYXRhLmRlc2NyaXB0aW9ufHF0TGl0 ZXJhbCB9fTsKK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQo= --001a1149022e3bdd0d052b3f7b34 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 --001a1149022e3bdd0d052b3f7b34--