Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dFba0-0004J6-4H for pgadmin-hackers@arkaria.postgresql.org; Tue, 30 May 2017 07:28:36 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dFbZz-0000cQ-IR for pgadmin-hackers@arkaria.postgresql.org; Tue, 30 May 2017 07:28:35 +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 1dFbZx-0000c1-Bz for pgadmin-hackers@postgresql.org; Tue, 30 May 2017 07:28:33 +0000 Received: from mail-it0-x235.google.com ([2607:f8b0:4001:c0b::235]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dFbZs-0002xm-RE for pgadmin-hackers@postgresql.org; Tue, 30 May 2017 07:28:32 +0000 Received: by mail-it0-x235.google.com with SMTP id g126so36853203ith.0 for ; Tue, 30 May 2017 00:28:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=3u0wz7Ff5Bl1xvafVTHMn+olStsuW36SbIruFNiBME4=; b=wOy3rFYBCHLfafFjjk2LOqaeQUErvqb/IjdaZzE12yoBQXJnAnWTu7q2VUKSkXEHcm F6VEgNCmSv2yk188jwzTaOy0GHWinay/pjjN1k84X7PBZ2K65l7hwItbXCX5G8Ii9aST Num83m9hY1hIkDOoscBco2QKofdB3Aof2JSjKWKV+2J2Jp54llUFUXZFscPJb7gtiLfe ICD15w0Kz1NtfjRHGsIC0kcITYjJLbmfECx4s9w+HXrB3Ydll7lbVKzCEd3gIcYrR2u4 YJGpnfvtRjl5Z0vU1GBHXqwWLpe0mPytvfAii6K0TuggHl9SNpe1LnQmbUY4Cs9mHCez zXow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=3u0wz7Ff5Bl1xvafVTHMn+olStsuW36SbIruFNiBME4=; b=i2zMuqOxJMT1B4adZdiID6w6yXUesSLad7bWZDO6E5s2cVWpYWXSsrO6SmfWpYGczg dmUb4c/agyUYSoIc3gpDQOk3TVSWHMQsPlJW+pVaeXSvzafGQyKNmQrl1BKb7e1AhStr K7yTeRkYeod8xg0CoBuITFZmTfEHGS73kuWp2yKA8l78o/e4Hgv1i+vSXWwYe7GVQStD hw9HhiTUXDUOyyp4Niaj8BFWtE+FHpzC/Bqkf+DCHtO7HY4VbpZgGazMEj8dYJtyHYEm 8OEyFUdOmPpyU6mQhySNCl7/fAwWZMfBIjP71g5YktuZyjsFWtVhYk1sP38C5Lf46R8e UgmA== X-Gm-Message-State: AODbwcDulNl195vaV67C/jKzPLJrLv9dyfH+S9FOTawnl0QGe1AJU5fi qiSnx5D+kCf0SHx7EWOWC29I+OZRlOOG X-Received: by 10.36.55.149 with SMTP id r143mr621697itr.53.1496129307715; Tue, 30 May 2017 00:28:27 -0700 (PDT) MIME-Version: 1.0 Received: by 10.79.38.15 with HTTP; Tue, 30 May 2017 00:28:27 -0700 (PDT) In-Reply-To: References: From: Harshal Dhumal Date: Tue, 30 May 2017 12:58:27 +0530 Message-ID: Subject: Re: Fix for RM2421 [pgAdmin4][patch] To: Joao Pedro De Almeida Pereira Cc: pgadmin-hackers , Shruti B Iyer Content-Type: multipart/mixed; boundary="001a1140c838ed0e8e0550b8bf31" 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 --001a1140c838ed0e8e0550b8bf31 Content-Type: multipart/alternative; boundary="001a1140c838ed0e8b0550b8bf2f" --001a1140c838ed0e8b0550b8bf2f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Please find updated patch. --=20 *Harshal Dhumal* *Sr. Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Tue, May 30, 2017 at 12:30 PM, Harshal Dhumal < harshal.dhumal@enterprisedb.com> wrote: > Hi, > > Please ignore this patch as I forgot to include few changes. I'll send > updated one. > > -- > *Harshal Dhumal* > *Sr. Software Engineer* > > EnterpriseDB India: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > On Mon, May 29, 2017 at 3:18 PM, Harshal Dhumal < > harshal.dhumal@enterprisedb.com> wrote: > >> Hi, >> >> Here is updated patch for RM2421. >> >> Now I have moved all Numeric control level validations to datamodel. As >> existing implementation was causing >> issues with error messages in create/edit dialog when schema contains two >> or more Numeric controls. >> >> This is generic issue and not related to resource group. Also I have >> updated all other nodes which uses Numeric controls >> >> >> >> -- >> *Harshal Dhumal* >> *Sr. Software Engineer* >> >> EnterpriseDB India: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> >> On Fri, May 19, 2017 at 12:22 PM, Harshal Dhumal < >> harshal.dhumal@enterprisedb.com> wrote: >> >>> Hi, >>> >>> On Thu, May 18, 2017 at 7:57 PM, Joao Pedro De Almeida Pereira < >>> jdealmeidapereira@pivotal.io> wrote: >>> >>>> Hello Harshal, >>>> >>>> We review the patch and have some questions: >>>> 1) Is there any particular reason to initialize variables and functions >>>> in the same place? We believe that it would be more readable there wer= e no >>>> chaining of variable creation, specially if those variables are functi= ons. >>>> Check line: >>>> >>> That function is only going to be used in checkNumeric function (in case >>> of Number control) and checkInt function (in case of Integer control) so >>> declared them locally. >>> Anyway I'm going to refactor both the controls as Number and Integer >>> shares some common properties. >>> >>> +++ b/web/pgadmin/static/js/backform.pgadmin.js >>>> @@ -1528,7 +1528,18 @@ >>>> max_value =3D field.max, >>>> isValid =3D true, >>>> intPattern =3D new RegExp("^-?[0-9]*$"), >>>> - isMatched =3D intPattern.test(value); >>>> + isMatched =3D intPattern.test(value), >>>> + trigger_invalid_event =3D function(msg) { >>>> >>>> =E2=80=8B >>>> 2) The functions added in both places look very similar, can they be >>>> merged and extracted? We are talking about the trigger_invalid_event >>>> function. >>>> >>> Yes they can be merged. As of now both NumericControl and IntegerControl >>> are derived from InputControl. Ideally >>> only NumericControl should be derived from InputControl and >>> IntegerControl should be derive from NumericControl. >>> >>> >>> >>>> 3) The following change is very similar to the trigger_invalid_event, >>>> was there a reason not to use it? >>>> >>> Below code triggers "model valid" event; opposite to "model invalid" >>> event (trigger_invalid_event) >>> >>>> +++ b/web/pgadmin/static/js/backform.pgadmin.js >>>> @@ -1573,25 +1584,23 @@ >>>> this.model.errorModel.unset(name); >>>> this.model.set(name, value); >>>> this.listenTo(this.model, "change:" + name, this.render); >>>> - if (this.model.collection || this.model.handler) { >>>> - (this.model.collection || this.model.handler).trigger( >>>> - 'pgadmin-session:model:valid', this.model, (this.model.c= ollection || this.model.handler) >>>> - ); >>>> + // Check if other fields of same model are valid before >>>> + // triggering 'session:valid' event >>>> + if(_.size(this.model.errorModel.attributes) =3D=3D 0) { >>>> + if (this.model.collection || this.model.handler) { >>>> + (this.model.collection || this.model.handler).trigger( >>>> + 'pgadmin-session:model:valid', this.model, (this.model= .collection || this.model.handler) >>>> + ); >>>> + } else { >>>> + (this.model).trigger( >>>> + 'pgadmin-session:valid', this.model.sessChanged(), thi= s.model >>>> + ); >>>> + } >>>> >>>> =E2=80=8B >>>> 4) We also noticed that the following change sets look very similiar. >>>> Is there any reason to have this code duplicated? If not this could be= a >>>> good time to refactor it. >>>> >>> As said earlier in response of point 2 code duplication is because the >>> way controls are derived. >>> >>> >>>> +++ b/web/pgadmin/static/js/backform.pgadmin.js >>>> @@ -1528,7 +1528,18 @@ >>>> >>>> @@ -1573,25 +1584,23 @@ >>>> >>>> @@ -1631,7 +1640,18 @@ >>>> >>>> @@ -1676,25 +1696,23 @@ >>>> >>>> =E2=80=8B >>>> >>>> Thanks >>>> Joao & Shruti >>>> >>>> On Thu, May 18, 2017 at 6:01 AM, Harshal Dhumal < >>>> harshal.dhumal@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> Please find attached patch for RM2421 >>>>> >>>>> Issue fixed: 1. Integer/numeric Validation is not working properly. >>>>> 2. Wrong CPU rate unit >>>>> -- >>>>> *Harshal Dhumal* >>>>> *Sr. Software Engineer* >>>>> >>>>> EnterpriseDB India: http://www.enterprisedb.com >>>>> The Enterprise PostgreSQL Company >>>>> >>>>> >>>>> -- >>>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>>>> To make changes to your subscription: >>>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>>> >>>>> >>>> >>> >> > --001a1140c838ed0e8b0550b8bf2f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find updated patch.

=
--=C2=A0
Hars= hal Dhumal
Sr. Software Engineer

=
Enterpri= seDB India:=C2=A0http://www.enterpri= sedb.com
The Enterprise PostgreSQL Co= mpany

On Tue, May 30, 2017 at 12:30 PM, Harshal Dh= umal <harshal.dhumal@enterprisedb.com> wrote:<= br>
Hi,

P= lease ignore this patch as I forgot to include few changes. I'll send u= pdated one.

--=C2=A0
Harshal Dhumal
Sr. Software Engineer

EnterpriseDB India:=C2=A0<= /span>http://www.enterprisedb.com<= br style=3D"color:rgb(136,136,136);font-size:12.8px">The Enterprise PostgreSQL Company<= br>
=

On Mon, May 29= , 2017 at 3:18 PM, Harshal Dhumal <harshal.dhumal@enterprise= db.com> wrote:
Hi,

Here is updated patch for RM2421.

Now I have moved all Numeric control level validations to = datamodel. As existing implementation was causing=C2=A0
issues wi= th error messages in create/edit dialog when schema contains two or more Nu= meric controls.

This is generic issue and not rela= ted to resource group. Also I have updated all other nodes which uses Numer= ic controls



=
--= =C2=A0
Harshal Dhumal
Sr. Software Engineer

EnterpriseDB India:=C2=A0http://www.enterprisedb.com
The Enterprise PostgreSQL Company
=

On Fri, May 19, 2017 at 12:22 PM, Harshal Dhumal &= lt;har= shal.dhumal@enterprisedb.com> wrote:
Hi,

=
On Thu, May 18, 2017 at 7:57 PM, Jo= ao Pedro De Almeida Pereira <jdealmeidapereira@pivotal.io&g= t; wrote:
<= /div>
=
He= llo Harshal,

We review the patch and have some questions= :
1) Is there any particular reason to initialize variables and f= unctions in the same place? We believe that it would be more readable there= were no chaining of variable creation, specially if those variables are fu= nctions. Check line:=C2=A0
That functio= n is only going to be used in checkNumeric function (in case of Number cont= rol) and checkInt function (in case of Integer control) so declared them lo= cally.
Anyway I'm going to refactor both the controls as Numb= er and Integer shares some common properties.

=
+++ b/web/pgadmin/=
static/js/backform.pgadmin.js
@@ -1528,7 +1528,18 @@
           max_value =3D field.max,
           isValid =3D true,
           intPattern =3D new RegExp("^-?[0-9]*$"),
-          isMatched =3D intPattern.test(value);
+          isMatched =3D intPattern.test(value),
+          trigger_invalid_event =3D function(msg) {
=E2=80=8B
2) The functions added in both pl= aces look very similar, can they be merged and extracted? We are talking ab= out the trigger_invalid_event=C2= =A0function.
Yes they can be merge= d. As of now both NumericControl and IntegerControl are derived from InputC= ontrol. Ideally=C2=A0
only NumericControl should be derived from = InputControl and IntegerControl should be derive from NumericControl.
=

=C2=A0
3) The following change is ve= ry similar to the trigger_invalid_event= , was there a reason not to use it?
<= div>Below code triggers "model valid" event; opposite to "mo= del invalid" event (tr= igger_invalid_event)
+++ b/web/pgadmin/static/js/backfor=
m.pgadmin.js
@@ -1573,25 +1584,23 @@
         this.model.errorModel.unset(name);
         this.model.set(name, value);
         this.listenTo(this.model, "change:" + name, this.render);
-        if (this.model.collection || this.model.handler) {
-          (this.model.collection || this.model.handler).trigger(
-             'pgadmin-session:model:valid', this.model, (this.mode=
l.collection || this.model.handler)
-            );
+        // Check if other fields of same model are valid before
+        // triggering 'session:valid' event
+        if(_.size(this.model.errorModel.attributes) =3D=3D 0) {
+          if (this.model.collection || this.model.handler) {
+            (this.model.collection || this.model.handler).trigger(
+               'pgadmin-session:model:valid', this.model, (this.mo=
del.collection || this.model.handler)
+              );
+          } else {
+            (this.model).trigger(
+               'pgadmin-session:valid', this.model.sessChanged(), =
this.model
+              );
+          }
=E2=80=8B
4) We also noticed that the following change sets look very similia= r. Is there any reason to have this code duplicated? If not this could be a= good time to refactor it.
As said earl= ier in response of point 2 code duplication is because the way controls are= derived.
=C2=A0
+++ b/web/pgadmin/static/js/backform.pgadm=
in.js
@@ -1528,7 +1528,18 @@

@@ -1573,25 +1584,23 @@

@@ -1631,7 +1640,18 @@

@@ -1676,25 +1696,23 @@
=E2=80=8B

Thanks
Joao & Shruti

On Thu, May 18, 2017 a= t 6:01 AM, Harshal Dhumal <harshal.dhumal@enterprisedb.com> wrote:
Hi,

P= lease find attached patch for RM2421

Issue fixed: = 1. Integer/numeric Validation is not working properly.
2. Wrong C= PU rate unit
=
--=C2=A0
Harshal Dhumal
Sr. Software Engineer

EnterpriseDB India:=C2=A0http://www.enterprisedb.com
The Enterprise PostgreSQL Company


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






--001a1140c838ed0e8b0550b8bf2f-- --001a1140c838ed0e8e0550b8bf31 Content-Type: text/x-patch; charset="US-ASCII"; name="RM2421_V3.patch" Content-Disposition: attachment; filename="RM2421_V3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j3b8rasl0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX3RhYmxlcy9qcy9mb3JlaWduX3RhYmxlcy5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX3RhYmxlcy9qcy9mb3JlaWduX3RhYmxlcy5qcwppbmRleCA1ZjNkYzY5 Li5iN2RmNTg1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvanMvZm9yZWlnbl90 YWJsZXMuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL2pzL2ZvcmVpZ25fdGFibGVzLmpz CkBAIC0xMDEsMzQgKzEwMSw1NiBAQCBmdW5jdGlvbigkLCBfLCBTLCBwZ0Fk bWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CiAgICAgICAgIGNlbGw6ICdz dHJpbmcnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCiAgICAg ICAgIHR5cGU6ICdpbnQnLCBkZXBzOiBbJ2RhdGF0eXBlJ10sCiAgICAgICAg IGRpc2FibGVkOiBmdW5jdGlvbihtKSB7Ci0gICAgICAgIC8vIFdlIHdpbGwg c3RvcmUgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9ib3gKKyAgICAg ICAgICB2YXIgdmFsID0gbS5nZXQoJ3R5cGxlbicpOworICAgICAgICAgIC8v IFdlIHdpbGwgc3RvcmUgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9i b3gKICAgICAgICAgICBpZighKF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVy aXRlZGlkJykpCiAgICAgICAgICAgICB8fCBfLmlzTnVsbChtLmdldCgnaW5o ZXJpdGVkaWQnKSkKICAgICAgICAgICAgIHx8IF8uaXNVbmRlZmluZWQobS5n ZXQoJ2luaGVyaXRlZGZyb20nKSkKLSAgICAgICAgICAgIHx8IF8uaXNOdWxs KG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpKSkgeyByZXR1cm4gdHJ1ZTsgfQor ICAgICAgICAgICAgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGZyb20n KSkpKSB7CiAKLSAgICAgICAgdmFyIG9mX3R5cGUgPSBtLmdldCgnZGF0YXR5 cGUnKTsKLSAgICAgICAgaWYobS50eXBlX29wdGlvbnMpIHsKLSAgICAgICAg ICBtLnNldCgnaXNfdGxlbmd0aCcsIGZhbHNlLCB7c2lsZW50OiB0cnVlfSk7 CisgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodmFsKSkgeworICAg ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAg ICAgICAgIG0uc2V0KCd0eXBsZW4nLCB1bmRlZmluZWQpOworICAgICAgICAg ICAgICB9LCAxMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICB2YXIgb2ZfdHlw ZSA9IG0uZ2V0KCdkYXRhdHlwZScpLAorICAgICAgICAgICAgICBoYXNfbGVu Z3RoID0gZmFsc2U7CisgICAgICAgICAgaWYobS50eXBlX29wdGlvbnMpIHsK KyAgICAgICAgICAgIG0uc2V0KCdpc190bGVuZ3RoJywgZmFsc2UsIHtzaWxl bnQ6IHRydWV9KTsKIAotICAgICAgICAgIC8vIGl0ZXJhdGluZyBvdmVyIGFs bCB0aGUgdHlwZXMKLSAgICAgICAgICBfLmVhY2gobS50eXBlX29wdGlvbnMs IGZ1bmN0aW9uKG8pIHsKLSAgICAgICAgICAgIC8vIGlmIHR5cGUgZnJvbSBz ZWxlY3RlZCBmcm9tIGNvbWJvYm94IG1hdGNoZXMgaW4gb3B0aW9ucwotICAg ICAgICAgICAgaWYgKCBvZl90eXBlID09IG8udmFsdWUgKSB7Ci0gICAgICAg ICAgICAgICAgIG0uc2V0KCd0eXBsZW4nLCB1bmRlZmluZWQpOworICAgICAg ICAgICAgLy8gaXRlcmF0aW5nIG92ZXIgYWxsIHRoZSB0eXBlcworICAgICAg ICAgICAgXy5lYWNoKG0udHlwZV9vcHRpb25zLCBmdW5jdGlvbihvKSB7Cisg ICAgICAgICAgICAgIC8vIGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNv bWJvYm94IG1hdGNoZXMgaW4gb3B0aW9ucworICAgICAgICAgICAgICBpZiAo IG9mX3R5cGUgPT0gby52YWx1ZSApIHsKICAgICAgICAgICAgICAgICAvLyBp ZiBsZW5ndGggaXMgYWxsb3dlZCBmb3Igc2VsZWN0ZWQgdHlwZQogICAgICAg ICAgICAgICAgIGlmKG8ubGVuZ3RoKQogICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgIC8vIHNldCB0aGUgdmFsdWVzIGluIG1vZGVsCisg ICAgICAgICAgICAgICAgICBoYXNfbGVuZ3RoID0gdHJ1ZTsKICAgICAgICAg ICAgICAgICAgIG0uc2V0KCdpc190bGVuZ3RoJywgdHJ1ZSwge3NpbGVudDog dHJ1ZX0pOwogICAgICAgICAgICAgICAgICAgbS5zZXQoJ21pbl92YWwnLCBv Lm1pbl92YWwsIHtzaWxlbnQ6IHRydWV9KTsKICAgICAgICAgICAgICAgICAg IG0uc2V0KCdtYXhfdmFsJywgby5tYXhfdmFsLCB7c2lsZW50OiB0cnVlfSk7 CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAg ICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFoYXNfbGVuZ3RoICYmICFf LmlzVW5kZWZpbmVkKHZhbCkpIHsKKyAgICAgICAgICAgICAgc2V0VGltZW91 dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBtLnNldCgndHlwbGVu JywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgfSwgMTApOwogICAgICAg ICAgICAgfQotICAgICAgICAgIH0pOwotICAgICAgICAgIHJldHVybiAhKG0u Z2V0KCdpc190bGVuZ3RoJykpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy biB0cnVlOworCisgICAgICAgICAgICByZXR1cm4gIShtLmdldCgnaXNfdGxl bmd0aCcpKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKCFoYXNfbGVu Z3RoICYmICFfLmlzVW5kZWZpbmVkKHZhbCkpIHsKKyAgICAgICAgICAgICAg c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBtLnNl dCgndHlwbGVuJywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgfSwgMTAp OworICAgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiB0cnVlOwogICAg ICAgICB9LAogICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3Bl cmNlbnRfMTAnCiAgICAgICB9LHsKQEAgLTEzNiwzMyArMTU4LDU0IEBAIGZ1 bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgYWxlcnRpZnkp IHsKICAgICAgICAgdHlwZTogJ2ludCcsIGRlcHM6IFsnZGF0YXR5cGUnXSwK ICAgICAgICAgY2VsbDogJ3N0cmluZycsIGdyb3VwOiAne3sgXygnRGVmaW5p dGlvbicpIH19JywKICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICB2YXIgdmFsID0gbS5nZXQoJ3ByZWNpc2lvbicpOwogICAg ICAgICAgIGlmKCEoXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkaWQn KSkKICAgICAgICAgICAgIHx8IF8uaXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRp ZCcpKQogICAgICAgICAgICAgfHwgXy5pc1VuZGVmaW5lZChtLmdldCgnaW5o ZXJpdGVkZnJvbScpKQotICAgICAgICAgICAgfHwgXy5pc051bGwobS5nZXQo J2luaGVyaXRlZGZyb20nKSkpKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAg ICAgICB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVkZnJvbScpKSkpIHsK KworICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHZhbCkpIHsKKyAg ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgICAgICBtLnNldCgncHJlY2lzaW9uJywgdW5kZWZpbmVkKTsKKyAgICAg ICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgfQorICAgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgICAgfQorCisgICAgICAgICAgdmFyIG9m X3R5cGUgPSBtLmdldCgnZGF0YXR5cGUnKSwKKyAgICAgICAgICAgICAgaGFz X3ByZWNpc2lvbiA9IGZhbHNlOwogCi0gICAgICAgICAgdmFyIG9mX3R5cGUg PSBtLmdldCgnZGF0YXR5cGUnKTsKICAgICAgICAgICBpZihtLnR5cGVfb3B0 aW9ucykgewogICAgICAgICAgICAgIG0uc2V0KCdpc19wcmVjaXNpb24nLCBm YWxzZSwge3NpbGVudDogdHJ1ZX0pOwogICAgICAgICAgICAgLy8gaXRlcmF0 aW5nIG92ZXIgYWxsIHRoZSB0eXBlcwogICAgICAgICAgICAgXy5lYWNoKG0u dHlwZV9vcHRpb25zLCBmdW5jdGlvbihvKSB7CiAgICAgICAgICAgICAgIC8v IGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94IG1hdGNoZXMg aW4gb3B0aW9ucwogICAgICAgICAgICAgICBpZiAoIG9mX3R5cGUgPT0gby52 YWx1ZSApIHsKLSAgICAgICAgICAgICAgICBtLnNldCgncHJlY2lzaW9uJywg dW5kZWZpbmVkKTsKICAgICAgICAgICAgICAgICAvLyBpZiBwcmVjZXNzaW9u IGlzIGFsbG93ZWQgZm9yIHNlbGVjdGVkIHR5cGUKICAgICAgICAgICAgICAg ICBpZihvLnByZWNpc2lvbikKICAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICBoYXNfcHJlY2lzaW9uID0gdHJ1ZTsKICAgICAgICAgICAg ICAgICAgIC8vIHNldCB0aGUgdmFsdWVzIGluIG1vZGVsCiAgICAgICAgICAg ICAgICAgICBtLnNldCgnaXNfcHJlY2lzaW9uJywgdHJ1ZSwge3NpbGVudDog dHJ1ZX0pOwogICAgICAgICAgICAgICAgICAgbS5zZXQoJ21pbl92YWwnLCBv Lm1pbl92YWwsIHtzaWxlbnQ6IHRydWV9KTsKICAgICAgICAgICAgICAgICAg IG0uc2V0KCdtYXhfdmFsJywgby5tYXhfdmFsLCB7c2lsZW50OiB0cnVlfSk7 CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAg ICAgICB9KTsKKyAgICAgICAgICAgIGlmICghaGFzX3ByZWNpc2lvbiAmJiAh Xy5pc1VuZGVmaW5lZCh2YWwpKSB7CisgICAgICAgICAgICAgIHNldFRpbWVv dXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgbS5zZXQoJ3ByZWNp c2lvbicsIHVuZGVmaW5lZCk7CisgICAgICAgICAgICAgIH0sIDEwKTsKICAg ICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgICAgICByZXR1cm4g IShtLmdldCgnaXNfcHJlY2lzaW9uJykpOwotICAgICAgICB9Ci0gICAgICAg IHJldHVybiB0cnVlOwotICAgICAgICB9LCBjZWxsSGVhZGVyQ2xhc3Nlczog J3dpZHRoX3BlcmNlbnRfMTAnCisgICAgICAgICAgICByZXR1cm4gIShtLmdl dCgnaXNfcHJlY2lzaW9uJykpOworICAgICAgICAgIH0KKyAgICAgICAgICBp ZiAoIWhhc19wcmVjaXNpb24gJiYgIV8uaXNVbmRlZmluZWQodmFsKSkgewor ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgICAgbS5zZXQoJ3ByZWNpc2lvbicsIHVuZGVmaW5lZCk7CisgICAgICAg ICAgICB9LCAxMCk7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgfSwgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJj ZW50XzEwJwogICAgICAgfSx7CiAgICAgICAgIGlkOiAndHlwZGVmYXVsdCcs IGxhYmVsOid7eyBfKCdEZWZhdWx0JykgfX0nLCB0eXBlOiAndGV4dCcsCiAg ICAgICAgIGNlbGw6ICdzdHJpbmcnLCBtaW5fdmVyc2lvbjogOTAzMDAsIGdy b3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywKQEAgLTIxNiwyMiArMjU5 LDIzIEBAIGZ1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3Nlciwg YWxlcnRpZnkpIHsKICAgICAgICAgICBtaW5fdmVyc2lvbjogOTAyMDAKICAg ICAgIH1dLAogICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKLSAgICAgIHZh ciBlcnIgPSB7fSwKLSAgICAgIGVycm1zZzsKKyAgICAgIHZhciBlcnJtc2cg PSBudWxsOwogCiAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgn YXR0bmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2F0dG5hbWUnKSkucmVw bGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICBlcnJb J25hbWUnXSA9ICd7eyBfKCdDb2x1bW4gTmFtZSBjYW5ub3QgYmUgZW1wdHkh JykgfX0nOwotICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydhdHRu YW1lJ107CisgICAgICAgIGVycm1zZyA9ICd7eyBfKCdDb2x1bW4gTmFtZSBj YW5ub3QgYmUgZW1wdHkhJykgfX0nOworICAgICAgICB0aGlzLmVycm9yTW9k ZWwuc2V0KCdhdHRuYW1lJywgZXJybXNnKTsKKyAgICAgIH0gZWxzZSB7Cisg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnYXR0bmFtZScpOwogICAg ICAgfQogCiAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZGF0 YXR5cGUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdkYXRhdHlwZScpKQogICAg ICAgLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAg ICAgZXJyWydiYXNlbnNwJ10gPSAne3sgXygnQ29sdW1uIERhdGF0eXBlIGNh bm5vdCBiZSBlbXB0eSEnKSB9fSc7Ci0gICAgICAgIGVycm1zZyA9IGVycm1z ZyB8fCBlcnJbJ2RhdGF0eXBlJ107CisgICAgICAgIGVycm1zZyA9ICd7eyBf KCdDb2x1bW4gRGF0YXR5cGUgY2Fubm90IGJlIGVtcHR5IScpIH19JzsKKyAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZGF0YXR5cGUnLCBlcnJtc2cp OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVu c2V0KCdkYXRhdHlwZScpOwogICAgICAgfQogCi0gICAgICB0aGlzLmVycm9y TW9kZWwuY2xlYXIoKS5zZXQoZXJyKTsKLQogICAgICAgcmV0dXJuIGVycm1z ZzsKICAgICB9LAogICAgIGlzX2VkaXRhYmxlX2NvbHVtbjogZnVuY3Rpb24o bSkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2VzL3Rl bXBsYXRlcy9zZXF1ZW5jZS9qcy9zZXF1ZW5jZS5qcyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3NlcXVlbmNlcy90ZW1wbGF0ZXMvc2VxdWVuY2UvanMvc2VxdWVuY2Uu anMKaW5kZXggMmZiN2FlNS4uMWI5ZGI1MCAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvc2VxdWVuY2VzL3RlbXBsYXRlcy9zZXF1ZW5jZS9qcy9zZXF1 ZW5jZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5jZXMvdGVtcGxh dGVzL3NlcXVlbmNlL2pzL3NlcXVlbmNlLmpzCkBAIC0xNTMsNyArMTUzLDEw IEBAIGZ1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgYWxl cnRpZnkpIHsKICAgICAgICAgICBtaW46IDEKICAgICAgICAgfSx7CiAgICAg ICAgICAgaWQ6ICdzdGFydCcsIGxhYmVsOiAne3sgXygnU3RhcnQnKSB9fScs IHR5cGU6ICdpbnQnLAotICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcycs ICdjcmVhdGUnXSwgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nCisg ICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0 J10sIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywKKyAgICAgICAg ICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJu ICFtLmlzTmV3KCk7CisgICAgICAgICAgfQogICAgICAgICB9LHsKICAgICAg ICAgICBpZDogJ21pbmltdW0nLCBsYWJlbDogJ3t7IF8oJ01pbmltdW0nKSB9 fScsIHR5cGU6ICdpbnQnLAogICAgICAgICAgIG1vZGU6IFsncHJvcGVydGll cycsICdjcmVhdGUnLCAnZWRpdCddLCBncm91cDogJ3t7IF8oJ0RlZmluaXRp b24nKSB9fScKQEAgLTE5OSwxNCArMjAyLDE0IEBAIGZ1bmN0aW9uKCQsIF8s IFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgYWxlcnRpZnkpIHsKICAgICAgICAg ICAgICAgbWluaW11bSA9IHRoaXMuZ2V0KCdtaW5pbXVtJyksCiAgICAgICAg ICAgICAgIG1heGltdW0gPSB0aGlzLmdldCgnbWF4aW11bScpOwogICAgICAg ICAgICAgICBzdGFydCA9IHRoaXMuZ2V0KCdzdGFydCcpOwotICAgICAgICAg IC8vIENsZWFyIGFueSBleGlzdGluZyBlcnJvciBtc2cuCi0gICAgICAgICAg dGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7CiAKICAgICAgICAgICBpZiAoXy5p c1VuZGVmaW5lZCh0aGlzLmdldCgnbmFtZScpKQogICAgICAgICAgICAgICB8 fCBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSkucmVwbGFjZSgvXlxzK3xccysk L2csICcnKSA9PSAnJykgewogICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ05h bWUgY2Fubm90IGJlIGVtcHR5LicpIH19JzsKICAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBtc2cpOwogICAgICAgICAgICAgcmV0 dXJuIG1zZzsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnVuc2V0KCduYW1lJyk7CiAgICAgICAgICAgfQogCiAg ICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ3NlcW93bmVy JykpCkBAIC0yMTQsNiArMjE3LDggQEAgZnVuY3Rpb24oJCwgXywgUywgcGdB ZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSkgewogICAgICAgICAgICAgbXNn ID0gJ3t7IF8oJ093bmVyIGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7CiAgICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzZXFvd25lcicsIG1zZyk7 CiAgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3NlcW93bmVy Jyk7CiAgICAgICAgICAgfQogCiAgICAgICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQodGhpcy5nZXQoJ3NjaGVtYScpKQpAQCAtMjIxLDI2ICsyMjYsODEgQEAg ZnVuY3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlm eSkgewogICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ1NjaGVtYSBjYW5ub3Qg YmUgZW1wdHkuJykgfX0nOwogICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVs LnNldCgnc2NoZW1hJywgbXNnKTsKICAgICAgICAgICAgIHJldHVybiBtc2c7 CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JN b2RlbC51bnNldCgnc2NoZW1hJyk7CisgICAgICAgICAgfQorCisgICAgICAg ICAgaWYgKCF0aGlzLmlzTmV3KCkpIHsKKyAgICAgICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKHRoaXMuZ2V0KCdjdXJyZW50X3ZhbHVlJykpCisgICAgICAg ICAgICAgIHx8IFN0cmluZyh0aGlzLmdldCgnY3VycmVudF92YWx1ZScpKS5y ZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAg ICAgIG1zZyA9ICd7eyBfKCdDdXJyZW50IHZhbHVlIGNhbm5vdCBiZSBlbXB0 eS4nKSB9fSc7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQo J2N1cnJlbnRfdmFsdWUnLCBtc2cpOworICAgICAgICAgICAgICByZXR1cm4g bXNnOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnVuc2V0KCdjdXJyZW50X3ZhbHVlJyk7CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMu Z2V0KCdpbmNyZW1lbnQnKSkKKyAgICAgICAgICAgICAgfHwgU3RyaW5nKHRo aXMuZ2V0KCdpbmNyZW1lbnQnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcn KSA9PSAnJykgeworICAgICAgICAgICAgICBtc2cgPSAne3sgXygnSW5jcmVt ZW50IHZhbHVlIGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7CisgICAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2luY3JlbWVudCcsIG1zZyk7Cisg ICAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2luY3Jl bWVudCcpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoXy5p c1VuZGVmaW5lZCh0aGlzLmdldCgnbWluaW11bScpKQorICAgICAgICAgICAg ICB8fCBTdHJpbmcodGhpcy5nZXQoJ21pbmltdW0nKSkucmVwbGFjZSgvXlxz K3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgICBtc2cgPSAn e3sgXygnTWluaW11bSB2YWx1ZSBjYW5ub3QgYmUgZW1wdHkuJykgfX0nOwor ICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdtaW5pbXVtJywg bXNnKTsKKyAgICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNl dCgnbWluaW11bScpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp ZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbWF4aW11bScpKQorICAgICAg ICAgICAgICB8fCBTdHJpbmcodGhpcy5nZXQoJ21heGltdW0nKSkucmVwbGFj ZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgICBt c2cgPSAne3sgXygnTWF4aW11bSB2YWx1ZSBjYW5ub3QgYmUgZW1wdHkuJykg fX0nOworICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdtYXhp bXVtJywgbXNnKTsKKyAgICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC51bnNldCgnbWF4aW11bScpOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnY2FjaGUnKSkKKyAg ICAgICAgICAgICAgfHwgU3RyaW5nKHRoaXMuZ2V0KCdjYWNoZScpKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICAg IG1zZyA9ICd7eyBfKCdDYWNoZSB2YWx1ZSBjYW5ub3QgYmUgZW1wdHkuJykg fX0nOworICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdjYWNo ZScsIG1zZyk7CisgICAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu dW5zZXQoJ2NhY2hlJyk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgfQog CiAgICAgICAgICAgdmFyIG1pbl9sdCA9ICd7eyBfKCdNaW5pbXVtIHZhbHVl IG11c3QgYmUgbGVzcyB0aGFuIG1heGltdW0gdmFsdWUuJykgfX0nLAogICAg ICAgICAgICAgICBzdGFydF9sdCA9ICd7eyBfKCdTdGFydCB2YWx1ZSBjYW5u b3QgYmUgbGVzcyB0aGFuIG1pbmltdW0gdmFsdWUuJykgfX0nLAogICAgICAg ICAgICAgICBzdGFydF9ndCA9ICd7eyBfKCdTdGFydCB2YWx1ZSBjYW5ub3Qg YmUgZ3JlYXRlciB0aGFuIG1heGltdW0gdmFsdWUuJykgfX0nOworCiAgICAg ICAgICAgaWYgKChtaW5pbXVtID09IDAgJiYgbWF4aW11bSA9PSAwKSB8fAog ICAgICAgICAgICAgICAocGFyc2VJbnQobWluaW11bSwgMTApID49IHBhcnNl SW50KG1heGltdW0sIDEwKSkpIHsKLSAgICAgICAgICAgIG1zZyA9IG1pbl9s dAotICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnbWluaW11bScs IG1zZyk7Ci0gICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnNldCgnbWluaW11bScsIG1pbl9sdCk7CisgICAg ICAgICAgICByZXR1cm4gbWluX2x0OworICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ21pbmltdW0nKTsK ICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoc3RhcnQgPCBtaW5p bXVtKSB7Ci0gICAgICAgICAgICBtc2cgPSBzdGFydF9sdAotICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnNldCgnc3RhcnQnLCBtc2cpOwotICAgICAg ICAgICAgcmV0dXJuIG1zZzsKKworICAgICAgICAgIGlmIChzdGFydCAmJiBt aW5pbXVtICYmIHBhcnNlSW50KHN0YXJ0KSA8IHBhcnNlSW50KG1pbmltdW0p KSB7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzdGFydCcs IHN0YXJ0X2x0KTsKKyAgICAgICAgICAgIHJldHVybiBzdGFydF9sdDsKKyAg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVs LnVuc2V0KCdzdGFydCcpOwogICAgICAgICAgIH0KLSAgICAgICAgICBlbHNl IGlmIChzdGFydCA+IG1heGltdW0pIHsKLSAgICAgICAgICAgIG1zZyA9IHN0 YXJ0X2d0Ci0gICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzdGFy dCcsIG1zZyk7Ci0gICAgICAgICAgICByZXR1cm4gbXNnOworCisgICAgICAg ICAgaWYgKHN0YXJ0ICYmIG1heGltdW0gJiYgcGFyc2VJbnQoc3RhcnQpID4g cGFyc2VJbnQobWF4aW11bSkpIHsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JN b2RlbC5zZXQoJ3N0YXJ0Jywgc3RhcnRfZ3QpOworICAgICAgICAgICAgcmV0 dXJuIHN0YXJ0X2d0OworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3N0YXJ0Jyk7CiAgICAgICAgICAg fQogICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9yZXNvdXJjZV9ncm91cHMvdGVtcGxhdGVzL3Jlc291cmNlX2dyb3Vwcy9q cy9yZXNvdXJjZV9ncm91cHMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9yZXNvdXJjZV9ncm91cHMvdGVtcGxhdGVz L3Jlc291cmNlX2dyb3Vwcy9qcy9yZXNvdXJjZV9ncm91cHMuanMKaW5kZXgg M2NjODIyZS4uMjZlNjNiZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcmVzb3VyY2VfZ3JvdXBzL3Rl bXBsYXRlcy9yZXNvdXJjZV9ncm91cHMvanMvcmVzb3VyY2VfZ3JvdXBzLmpz CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3Jlc291cmNlX2dyb3Vwcy90ZW1wbGF0ZXMvcmVzb3VyY2VfZ3JvdXBz L2pzL3Jlc291cmNlX2dyb3Vwcy5qcwpAQCAtODUsNTQgKzg1LDM1IEBAIGRl ZmluZSgKICAgICAgICAgICovCiAgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlv bihrZXlzKSB7CiAKLSAgICAgICAgICAvKiBDaGVjayB3aGV0aGVyICduYW1l JyBpcyBwcmVzZW50IGluICdrZXlzJywgaWYgaXQgaXMgcHJlc2VudAotICAg ICAgICAgICAqIGl0IG1lYW5zIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoYXQg ZmllbGQgZnJvbSB0aGUgR1VJLCBzbyB3ZQotICAgICAgICAgICAqIG5lZWQg dG8gdmFsaWRhdGUgaXQuCi0gICAgICAgICAgICovCi0gICAgICAgICAgaWYg KF8uaW5kZXhPZihrZXlzLCAnbmFtZScpID49IDApIHsKLSAgICAgICAgICAg IHZhciBuYW1lID0gdGhpcy5nZXQoJ25hbWUnKTsKLSAgICAgICAgICAgIGlm IChfLmlzVW5kZWZpbmVkKG5hbWUpIHx8IF8uaXNOdWxsKG5hbWUpIHx8Ci0g ICAgICAgICAgICAgICAgU3RyaW5nKG5hbWUpLnJlcGxhY2UoL15ccyt8XHMr JC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgICAgICAgdmFyIG1zZyA9ICd7 eyBfKCdOYW1lIGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7Ci0gICAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBtc2cpOwotICAgICAg ICAgICAgICByZXR1cm4gbXNnOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg ICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCduYW1lJyk7Ci0g ICAgICAgICAgICB9CisgICAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmdldCgn bmFtZScpOworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG5hbWUpIHx8 IF8uaXNOdWxsKG5hbWUpIHx8CisgICAgICAgICAgICAgIFN0cmluZyhuYW1l KS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAg ICAgICB2YXIgbXNnID0gJ3t7IF8oJ05hbWUgY2Fubm90IGJlIGVtcHR5Licp IH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUn LCBtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdu YW1lJyk7CiAgICAgICAgICAgfQogCi0gICAgICAgICAgLyogQ2hlY2sgd2hl dGhlciAnY3B1X3JhdGVfbGltaXQnIGlzIHByZXNlbnQgaW4gJ2tleXMnLCBp ZiBpdCBpcyBwcmVzZW50Ci0gICAgICAgICAgICogaXQgbWVhbnMgdGhlcmUg aXMgYSBjaGFuZ2UgaW4gdGhhdCBmaWVsZCBmcm9tIHRoZSBHVUksIHNvIHdl Ci0gICAgICAgICAgICogbmVlZCB0byB2YWxpZGF0ZSBpdC4KLSAgICAgICAg ICAgKi8KLSAgICAgICAgICBpZiAoXy5pbmRleE9mKGtleXMsICdjcHVfcmF0 ZV9saW1pdCcpID49IDApIHsKLSAgICAgICAgICAgIHZhciBjcHVfcmF0ZV9s aW1pdCA9IHRoaXMuZ2V0KCdjcHVfcmF0ZV9saW1pdCcpOwotICAgICAgICAg ICAgaWYgKF8uaXNVbmRlZmluZWQoY3B1X3JhdGVfbGltaXQpIHx8IF8uaXNO dWxsKGNwdV9yYXRlX2xpbWl0KSB8fAotICAgICAgICAgICAgICAgIFN0cmlu ZyhjcHVfcmF0ZV9saW1pdCkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgewotICAgICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ0NQVSBy YXRlIGxpbWl0IGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7Ci0gICAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2NwdV9yYXRlX2xpbWl0JywgbXNn KTsKLSAgICAgICAgICAgICAgcmV0dXJuIG1zZzsKLSAgICAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgn Y3B1X3JhdGVfbGltaXQnKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICB2 YXIgY3B1X3JhdGVfbGltaXQgPSB0aGlzLmdldCgnY3B1X3JhdGVfbGltaXQn KTsKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChjcHVfcmF0ZV9saW1p dCkgfHwgXy5pc051bGwoY3B1X3JhdGVfbGltaXQpIHx8CisgICAgICAgICAg ICAgIFN0cmluZyhjcHVfcmF0ZV9saW1pdCkucmVwbGFjZSgvXlxzK3xccysk L2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBf KCdDUFUgcmF0ZSBsaW1pdCBjYW5ub3QgYmUgZW1wdHkuJykgfX0nOworICAg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnY3B1X3JhdGVfbGltaXQn LCBtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdj cHVfcmF0ZV9saW1pdCcpOwogICAgICAgICAgIH0KIAotICAgICAgICAgIC8q IENoZWNrIHdoZXRoZXIgJ2RpcnR5X3JhdGVfbGltaXQnIGlzIHByZXNlbnQg aW4gJ2tleXMnLCBpZiBpdCBpcyBwcmVzZW50Ci0gICAgICAgICAgICogaXQg bWVhbnMgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhhdCBmaWVsZCBmcm9tIHRo ZSBHVUksIHNvIHdlCi0gICAgICAgICAgICogbmVlZCB0byB2YWxpZGF0ZSBp dC4KLSAgICAgICAgICAgKi8KLSAgICAgICAgICBpZiAoXy5pbmRleE9mKGtl eXMsICdkaXJ0eV9yYXRlX2xpbWl0JykgPj0gMCkgewotICAgICAgICAgICAg dmFyIGRpcnR5X3JhdGVfbGltaXQgPSB0aGlzLmdldCgnZGlydHlfcmF0ZV9s aW1pdCcpOwotICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoZGlydHlf cmF0ZV9saW1pdCkgfHwgXy5pc051bGwoZGlydHlfcmF0ZV9saW1pdCkgfHwK LSAgICAgICAgICAgICAgU3RyaW5nKGRpcnR5X3JhdGVfbGltaXQpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgICAgICAg dmFyIG1zZyA9ICd7eyBfKCdEaXJ0eSByYXRlIGxpbWl0IGNhbm5vdCBiZSBl bXB0eS4nKSB9fSc7Ci0gICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5z ZXQoJ2RpcnR5X3JhdGVfbGltaXQnLCBtc2cpOwotICAgICAgICAgICAgICBy ZXR1cm4gbXNnOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdkaXJ0eV9yYXRlX2xpbWl0Jyk7 Ci0gICAgICAgICAgICB9CisgICAgICAgICAgdmFyIGRpcnR5X3JhdGVfbGlt aXQgPSB0aGlzLmdldCgnZGlydHlfcmF0ZV9saW1pdCcpOworICAgICAgICAg IGlmIChfLmlzVW5kZWZpbmVkKGRpcnR5X3JhdGVfbGltaXQpIHx8IF8uaXNO dWxsKGRpcnR5X3JhdGVfbGltaXQpIHx8CisgICAgICAgICAgICBTdHJpbmco ZGlydHlfcmF0ZV9saW1pdCkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgeworICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBfKCdEaXJ0eSBy YXRlIGxpbWl0IGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7CisgICAgICAgICAg ICB0aGlzLmVycm9yTW9kZWwuc2V0KCdkaXJ0eV9yYXRlX2xpbWl0JywgbXNn KTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnZGlydHlf cmF0ZV9saW1pdCcpOwogICAgICAgICAgIH0KLQogICAgICAgICAgIHJldHVy biBudWxsOwogICAgICAgICB9CiAgICAgICB9KQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMv dGVtcGxhdGVzL3JvbGUvanMvcm9sZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xl L2pzL3JvbGUuanMKaW5kZXggYTg1NDE2Yy4uYzc0Y2Q1OSAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cm9sZXMvdGVtcGxhdGVzL3JvbGUvanMvcm9sZS5qcworKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1w bGF0ZXMvcm9sZS9qcy9yb2xlLmpzCkBAIC00MjcsNyArNDI3LDcgQEAgZnVu Y3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSwg QmFja2Zvcm0pIHsKICAgICAgICAgICBkZXBzOiBbJ3JvbGNhbmxvZ2luJ10s IG9wdGlvbnM6IHtmb3JtYXQ6ICdZWVlZLU1NLUREIEhIOm1tOnNzIFonfQog ICAgICAgICB9LHsKICAgICAgICAgICBpZDogJ3JvbGNvbm5saW1pdCcsICB0 eXBlOiAnaW50JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAot ICAgICAgICAgIGxhYmVsOiAne3sgXygnQ29ubmVjdGlvbiBsaW1pdCcpIH19 JywgY2VsbDogJ251bWJlcicsCisgICAgICAgICAgbGFiZWw6ICd7eyBfKCdD b25uZWN0aW9uIGxpbWl0JykgfX0nLCBjZWxsOiAnbnVtYmVyJywgbWluIDog LTEsCiAgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2VkaXQnLCAn Y3JlYXRlJ10sIGRpc2FibGVkOiAncmVhZG9ubHknCiAgICAgICAgIH0sewog ICAgICAgICAgIGlkOiAncm9sY2FubG9naW4nLCBsYWJlbDone3sgXygnQ2Fu IGxvZ2luPycpIH19JywgdHlwZTogJ3N3aXRjaCcsCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1w bGF0ZXMvc2VydmVycy9zZXJ2ZXJzLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVzL3NlcnZlcnMvc2Vy dmVycy5qcwppbmRleCA5ZWI4MmI4Li5iZjI4NDc0IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1w bGF0ZXMvc2VydmVycy9zZXJ2ZXJzLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RlbXBsYXRlcy9zZXJ2ZXJz L3NlcnZlcnMuanMKQEAgLTcyNyw2ICs3MjcsOSBAQCBmdW5jdGlvbigkLCBf LCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CiAgICAgICAg ICAgY2hlY2tfZm9yX2VtcHR5KAogICAgICAgICAgICAgJ3VzZXJuYW1lJywg J3t7IF8oJ1VzZXJuYW1lIG11c3QgYmUgc3BlY2lmaWVkLicpIH19JwogICAg ICAgICAgICk7CisgICAgICAgICAgY2hlY2tfZm9yX2VtcHR5KAorICAgICAg ICAgICAgJ3BvcnQnLCAne3sgXygnUG9ydCBtdXN0IGJlIHNwZWNpZmllZC4n KSB9fScKKyAgICAgICAgICApOwogICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC5zZXQoZXJyKTsKIAogICAgICAgICAgIGlmIChfLnNpemUoZXJyKSkgewpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZGF0 YW1vZGVsLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZGF0 YW1vZGVsLmpzCmluZGV4IDViMWMzYTcuLmMzYjVmYWMgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2RhdGFtb2RlbC5qcwor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9kYXRhbW9kZWwu anMKQEAgLTEsNiArMSw2IEBACiBkZWZpbmUoCi0gICBbJ3VuZGVyc2NvcmUn LCAncGdhZG1pbicsICdqcXVlcnknLCAnYmFja2JvbmUnXSwKLWZ1bmN0aW9u KF8sIHBnQWRtaW4sICQsIEJhY2tib25lKSB7CisgICBbJ3VuZGVyc2NvcmUn LCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbicsICdqcXVlcnknLCAn YmFja2JvbmUnXSwKK2Z1bmN0aW9uKF8sIFMsIHBnQWRtaW4sICQsIEJhY2ti b25lKSB7CiAgIHZhciBwZ0Jyb3dzZXIgPSBwZ0FkbWluLkJyb3dzZXIgPSBw Z0FkbWluLkJyb3dzZXIgfHwge307CiAKICAgcGdCcm93c2VyLkRhdGFNb2Rl bCA9IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7CkBAIC0xMzYsNiArMTM2LDcg QEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAg ICAgfQogCiAgICAgICAgIHNlbGYuc2Vzc0F0dHJzID0ge307CisgICAgICAg IHNlbGYuZmllbGREYXRhID0ge307CiAgICAgICAgIHNlbGYub3JpZ1Nlc3NB dHRycyA9IHt9OwogICAgICAgICBzZWxmLm9iamVjdHMgPSBbXTsKICAgICAg ICAgc2VsZi5hcnJheXMgPSBbXTsKQEAgLTE1Myw2ICsxNTQsMjMgQEAgZnVu Y3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAgICAgICAg IF8uZWFjaChzY2hlbWEsIGZ1bmN0aW9uKHMpIHsKIAogICAgICAgICAgICAg ICBzd2l0Y2gocy50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnaW50 JzoKKyAgICAgICAgICAgICAgICBjYXNlICdudW1lcmljJzoKKyAgICAgICAg ICAgICAgICAgIHNlbGYuZmllbGREYXRhW3MuaWRdID0geworICAgICAgICAg ICAgICAgICAgICBsYWJlbDogcy5pZCwKKyAgICAgICAgICAgICAgICAgICAg dHlwZTogcy50eXBlLAorICAgICAgICAgICAgICAgICAgICBtaW46IHMubWlu IHx8IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgbWF4OiBzLm1h eCB8fCB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg ICAgICAgICAgICAgICAgICBzZWxmLmZpZWxkRGF0YVtzLmlkXSA9IHsKKyAg ICAgICAgICAgICAgICAgICAgICBsYWJlbDogcy5pZCwKKyAgICAgICAgICAg ICAgICAgICAgICB0eXBlOiBzLnR5cGUKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgc3dpdGNoKHMu dHlwZSkgewogICAgICAgICAgICAgICAgIGNhc2UgJ2FycmF5JzoKICAgICAg ICAgICAgICAgICAgIHNlbGYuYXJyYXlzLnB1c2gocy5pZCk7CiAKQEAgLTI4 MCw2ICsyOTgsMTIgQEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2Jv bmUpIHsKICAgICAgIH0sCiAgICAgICBzZXNzVmFsaWQ6IGZ1bmN0aW9uKCkg ewogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIC8vIFBlcmZv cm0gZGVmYXVsdCB2YWxpZGF0aW9ucy4KKyAgICAgICAgaWYgKCdkZWZhdWx0 X3ZhbGlkYXRlJyBpbiBzZWxmICYmIHR5cGVvZihzZWxmLmRlZmF1bHRfdmFs aWRhdGUpID09ICdmdW5jdGlvbicgJiYKKyAgICAgICAgICAgIF8uaXNTdHJp bmcoc2VsZi5kZWZhdWx0X3ZhbGlkYXRlKCkpKSB7CisgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICB9CisKICAgICAgICAgaWYgKCd2YWxpZGF0 ZScgaW4gc2VsZiAmJiBfLmlzRnVuY3Rpb24oc2VsZi52YWxpZGF0ZSkgJiYK ICAgICAgICAgICAgIF8uaXNTdHJpbmcoc2VsZi52YWxpZGF0ZS5hcHBseShz ZWxmKSkpIHsKICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDEsOCAr MzI1LDkgQEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsK ICAgICAgICAgfQogCiAgICAgICAgIGlmIChrZXkgIT0gbnVsbCAmJiByZXMp IHsKLSAgICAgICAgICB2YXIgYXR0cnMgPSB7fTsKLSAgICAgICAgICB2YXIg c2VsZiA9IHRoaXM7CisgICAgICAgICAgdmFyIGF0dHJzID0ge30sCisgICAg ICAgICAgICAgIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgICBtc2c7CiAK ICAgICAgICAgICBhdHRyQ2hhbmdlZCA9IGZ1bmN0aW9uKHYsIGspIHsKICAg ICAgICAgICAgIGlmIChrIGluIHNlbGYub2JqZWN0cykgewpAQCAtMzI3LDkg KzM1MiwxOCBAQCBmdW5jdGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9uZSkg ewogICAgICAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5zaWxlbnQp IHsKICAgICAgICAgICAgIHNlbGYudHJpZ2dlcignY2hhbmdlJywgc2VsZiwg b3B0aW9ucyk7CiAgICAgICAgICAgfQorCisgICAgICAgICAgLy8gUGVyZm9y bSBkZWZhdWx0IHZhbGlkYXRpb25zLgorCisgICAgICAgICAgaWYgKCdkZWZh dWx0X3ZhbGlkYXRlJyBpbiBzZWxmICYmIHR5cGVvZihzZWxmLmRlZmF1bHRf dmFsaWRhdGUpID09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICAgIG1zZyA9 IHNlbGYuZGVmYXVsdF92YWxpZGF0ZSgpOworICAgICAgICAgIH0KKwogICAg ICAgICAgIGlmICgndmFsaWRhdGUnIGluIHNlbGYgJiYgdHlwZW9mKHNlbGZb J3ZhbGlkYXRlJ10pID09PSAnZnVuY3Rpb24nKSB7CiAKLSAgICAgICAgICAg IHZhciBtc2cgPSBzZWxmLnZhbGlkYXRlKF8ua2V5cyhhdHRycykpOworICAg ICAgICAgICAgaWYgKCFtc2cpIHsKKyAgICAgICAgICAgICAgbXNnID0gc2Vs Zi52YWxpZGF0ZShfLmtleXMoYXR0cnMpKTsKKyAgICAgICAgICAgIH0KIAog ICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIElmIGFueSBwYXJlbnQg cHJlc2VudCwgd2Ugd2lsbCBuZWVkIHRvIGluZm9ybSB0aGUgcGFyZW50IC0g dGhhdApAQCAtNTYyLDYgKzU5NiwxMyBAQCBmdW5jdGlvbihfLCBwZ0FkbWlu LCAkLCBCYWNrYm9uZSkgewogCiAgICAgICAgICAgdmFyIG1zZyA9IG51bGws CiAgICAgICAgICAgICAgIHZhbGlkYXRlID0gZnVuY3Rpb24obSwgYXR0cnMp IHsKKyAgICAgICAgICAgICAgICBpZiAoJ2RlZmF1bHRfdmFsaWRhdGUnIGlu IG0gJiYgdHlwZW9mKG0uZGVmYXVsdF92YWxpZGF0ZSkgPT0gJ2Z1bmN0aW9u JykgeworICAgICAgICAgICAgICAgICAgbXNnID0gbS5kZWZhdWx0X3ZhbGlk YXRlKCk7CisgICAgICAgICAgICAgICAgICBpZiAoXy5pc1N0cmluZyhtc2cp KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAg ICAgICAgaWYgKCd2YWxpZGF0ZScgaW4gbSAmJiB0eXBlb2YobS52YWxpZGF0 ZSkgPT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgICAgICAgbXNnID0g bS52YWxpZGF0ZShhdHRycyk7CiAKQEAgLTY1NSw2ICs2OTYsNzkgQEAgZnVu Y3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAgICAgfSk7 CiAKICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNlc3Npb246c3Rv cCcpOworICAgICAgfSwKKyAgICAgIGRlZmF1bHRfdmFsaWRhdGU6IGZ1bmN0 aW9uKCkgeworICAgICAgICB2YXIgbXNnLCBmaWVsZCwgdmFsdWUsIHR5cGU7 CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGtleXMgPSBfLmtleXModGhp cy5hdHRyaWJ1dGVzKSwgbCA9IGtleXMubGVuZ3RoOworICAgICAgICAgICAg ICAgICBpPGw7CisgICAgICAgICAgICAgICAgIGkrKykgeworCisgICAgICAg ICAgdmFsdWUgPSB0aGlzLmF0dHJpYnV0ZXNba2V5c1tpXV07CisgICAgICAg ICAgZmllbGQgID0gdGhpcy5maWVsZERhdGFba2V5c1tpXV0KKyAgICAgICAg ICBtc2cgPSBudWxsOworCisgICAgICAgICAgaWYgKCEoXy5pc1VuZGVmaW5l ZCh2YWx1ZSkgfHwgXy5pc051bGwodmFsdWUpIHx8CisgICAgICAgICAgICAg ICAgU3RyaW5nKHZhbHVlKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09 ICcnKSkgeworCisgICAgICAgICAgICBpZiAoIWZpZWxkKSB7CisgICAgICAg ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg ICB0eXBlID0gZmllbGQudHlwZSB8fCB1bmRlZmluZWQ7CisgICAgICAgICAg ICBpZiAoIXR5cGUpIHsKKyAgICAgICAgICAgICAgY29udGludWU7CisgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCh0eXBlKSB7CisgICAg ICAgICAgICAgIGNhc2UgJ2ludCc6CisgICAgICAgICAgICAgICAgbXNnID0g dGhpcy5pbnRlZ2VyX3ZhbGlkYXRlKHZhbHVlLCBmaWVsZCk7CisgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgJ251bWVyaWMn OgorICAgICAgICAgICAgICAgIG1zZyA9IHRoaXMubnVtYmVyX3ZhbGlkYXRl KHZhbHVlLCBmaWVsZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtc2cpIHsKKyAgICAgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldChmaWVsZC5sYWJlbCwgbXNnKTsK KyAgICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldChmaWVs ZC5sYWJlbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIGlmIChmaWVsZCkgeworICAgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwudW5zZXQoZmllbGQubGFiZWwpOworICAgICAgICAgICAg fQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVs bDsKKyAgICAgIH0sCisKKyAgICAgIGNoZWNrX21pbl9tYXg6IGZ1bmN0aW9u ICh2YWx1ZSwgZmllbGQpIHsKKyAgICAgICAgdmFyIGxhYmVsID0gZmllbGQu bGFiZWwsCisgICAgICAgICAgICBtaW5fdmFsdWUgPSBmaWVsZC5taW4sCisg ICAgICAgICAgICBtYXhfdmFsdWUgPSAgZmllbGQubWF4OworCisgICAgICAg IGlmIChtaW5fdmFsdWUgJiYgdmFsdWUgPCBtaW5fdmFsdWUpIHsKKyAgICAg ICAgICByZXR1cm4gUyhwZ0FkbWluLkJyb3dzZXIubWVzc2FnZXMuTVVTVF9H Ul9FUSkuc3ByaW50ZihsYWJlbCwgbWluX3ZhbHVlKS52YWx1ZSgpOworICAg ICAgICB9IGVsc2UgaWYgKG1heF92YWx1ZSAmJiB2YWx1ZSA+IG1heF92YWx1 ZSkgeworICAgICAgICAgIHJldHVybiBTKHBnQWRtaW4uQnJvd3Nlci5tZXNz YWdlcy5NVVNUX0xFU1NfRVEpLnNwcmludGYobGFiZWwsIG1heF92YWx1ZSku dmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAg ICAgIH0sCisgICAgICBudW1iZXJfdmFsaWRhdGU6IGZ1bmN0aW9uICh2YWx1 ZSwgZmllbGQpIHsKKyAgICAgICAgdmFyIHBhdHRlcm4gPSBuZXcgUmVnRXhw KCJeLT9bMC05XSsoXC4/WzAtOV0qKT8kIik7CisgICAgICAgIGlmICghcGF0 dGVybi50ZXN0KHZhbHVlKSkgeworICAgICAgICAgIHJldHVybiBTKHBnQWRt aW4uQnJvd3Nlci5tZXNzYWdlcy5NVVNUX0JFX05VTSkuc3ByaW50ZihmaWVs ZC5sYWJlbCkudmFsdWUoKQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0 aGlzLmNoZWNrX21pbl9tYXgodmFsdWUsIGZpZWxkKQorICAgICAgfSwKKyAg ICAgIGludGVnZXJfdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlLCBmaWVsZCkg eworICAgICAgICB2YXIgcGF0dGVybiA9IG5ldyBSZWdFeHAoIl4tP1swLTld KiQiKTsKKyAgICAgICAgaWYgKCFwYXR0ZXJuLnRlc3QodmFsdWUpKSB7Cisg ICAgICAgICAgcmV0dXJuIFMocGdBZG1pbi5Ccm93c2VyLm1lc3NhZ2VzLk1V U1RfQkVfSU5UKS5zcHJpbnRmKGZpZWxkLmxhYmVsKS52YWx1ZSgpCisgICAg ICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tfbWluX21heCh2YWx1 ZSwgZmllbGQpCiAgICAgICB9CiAgICAgfSk7CiAKQEAgLTY5Niw3ICs4MTAs OCBAQCBmdW5jdGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9uZSkgewogICAg ICAgICByZXR1cm4gc2VsZjsKICAgICAgIH0sCiAgICAgICBzdGFydE5ld1Nl c3Npb246IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7 CisgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgIG1zZzsK IAogICAgICAgICBpZiAoc2VsZi50cmFja0NoYW5nZXMpIHsKICAgICAgICAg ICAvLyBXZSdyZSBzdG9wcGluZyB0aGUgZXhpc3Rpbmcgc2Vzc2lvbi4KQEAg LTcxOCw4ICs4MzMsMTUgQEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFj a2JvbmUpIHsKICAgICAgICAgICBpZiAoJ3N0YXJ0TmV3U2Vzc2lvbicgaW4g bSAmJiBfLmlzRnVuY3Rpb24obS5zdGFydE5ld1Nlc3Npb24pKSB7CiAgICAg ICAgICAgICBtLnN0YXJ0TmV3U2Vzc2lvbigpOwogICAgICAgICAgIH0KLSAg ICAgICAgICBpZiAoJ3ZhbGlkYXRlJyBpbiBtICYmIHR5cGVvZihtLnZhbGlk YXRlKSA9PT0gJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgdmFyIG1zZyA9 IG0udmFsaWRhdGUoKTsKKworICAgICAgICAgIGlmICgnZGVmYXVsdF92YWxp ZGF0ZScgaW4gbSAmJiB0eXBlb2YobS5kZWZhdWx0X3ZhbGlkYXRlKSA9PSAn ZnVuY3Rpb24nKSB7CisgICAgICAgICAgICBtc2cgPSBtLmRlZmF1bHRfdmFs aWRhdGUoKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoXy5pc1N0 cmluZyhtc2cpKSB7CisgICAgICAgICAgICBzZWxmLnNlc3NBdHRyc1snaW52 YWxpZCddW20uY2lkXSA9IG1zZzsKKyAgICAgICAgICB9IGVsc2UgaWYgKCd2 YWxpZGF0ZScgaW4gbSAmJiB0eXBlb2YobS52YWxpZGF0ZSkgPT09ICdmdW5j dGlvbicpIHsKKyAgICAgICAgICAgIG1zZyA9IG0udmFsaWRhdGUoKTsKIAog ICAgICAgICAgICAgaWYgKG1zZykgewogICAgICAgICAgICAgICBzZWxmLnNl c3NBdHRyc1snaW52YWxpZCddW20uY2lkXSA9IG1zZzsKQEAgLTkwMCw3ICsx MDIyLDE0IEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4sICQsIEJhY2tib25lKSB7 CiAKICAgICAgICAgICAoc2VsZi5oYW5kbGVyIHx8IHNlbGYpLnRyaWdnZXIo J3BnYWRtaW4tc2Vzc2lvbjphZGRlZCcsIHNlbGYsIG9iaik7CiAKLSAgICAg ICAgICBpZiAoJ3ZhbGlkYXRlJyBpbiBvYmogJiYgdHlwZW9mKG9iai52YWxp ZGF0ZSkgPT09ICdmdW5jdGlvbicpIHsKKworICAgICAgICAgIGlmICgnZGVm YXVsdF92YWxpZGF0ZScgaW4gb2JqICYmIHR5cGVvZihvYmouZGVmYXVsdF92 YWxpZGF0ZSkgPT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgICAgbXNnID0g b2JqLmRlZmF1bHRfdmFsaWRhdGUoKTsKKyAgICAgICAgICB9CisKKyAgICAg ICAgICBpZiAoXy5pc1N0cmluZyhtc2cpKSB7CisgICAgICAgICAgICAoc2Vs Zi5zZXNzQXR0cnNbJ2ludmFsaWQnXSlbb2JqLmNpZF0gPSBtc2c7CisgICAg ICAgICAgfSBlbHNlIGlmICgndmFsaWRhdGUnIGluIG9iaiAmJiB0eXBlb2Yo b2JqLnZhbGlkYXRlKSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAg bXNnID0gb2JqLnZhbGlkYXRlKCk7CiAKICAgICAgICAgICAgIGlmIChtc2cp IHsKQEAgLTkwOCw3ICsxMDM3LDE0IEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4s ICQsIEJhY2tib25lKSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgfQog ICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGlmICgndmFsaWRhdGUnIGlu IG9iaiAmJiB0eXBlb2Yob2JqLnZhbGlkYXRlKSA9PT0gJ2Z1bmN0aW9uJykg eworCisgICAgICAgICAgaWYgKCdkZWZhdWx0X3ZhbGlkYXRlJyBpbiBvYmog JiYgdHlwZW9mKG9iai5kZWZhdWx0X3ZhbGlkYXRlKSA9PSAnZnVuY3Rpb24n KSB7CisgICAgICAgICAgICBtc2cgPSBvYmouZGVmYXVsdF92YWxpZGF0ZSgp OworICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChfLmlzU3RyaW5nKG1z ZykpIHsKKyAgICAgICAgICAgIChzZWxmLnNlc3NBdHRyc1snaW52YWxpZCdd KVtvYmouY2lkXSA9IG1zZzsKKyAgICAgICAgICB9IGVsc2UgaWYgKCd2YWxp ZGF0ZScgaW4gb2JqICYmIHR5cGVvZihvYmoudmFsaWRhdGUpID09PSAnZnVu Y3Rpb24nKSB7CiAgICAgICAgICAgICBtc2cgPSBvYmoudmFsaWRhdGUoKTsK IAogICAgICAgICAgICAgaWYgKG1zZykgewpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMgYi93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvYmFja2Zvcm0ucGdhZG1pbi5qcwppbmRleCA1NTM2 NzZlLi4xMzgyM2I3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMv anMvYmFja2Zvcm0ucGdhZG1pbi5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvYmFja2Zvcm0ucGdhZG1pbi5qcwpAQCAtNTcsNyArNTcsNyBAQAog ICAgIH0pOwogCiAgIHZhciBjb250cm9sTWFwcGVyID0gQmFja2Zvcm0uY29u dHJvbE1hcHBlciA9IHsKLSAgICAnaW50JzogWyd1bmVkaXRhYmxlLWlucHV0 JywgJ2ludGVnZXInLCAnaW50ZWdlciddLAorICAgICdpbnQnOiBbJ3VuZWRp dGFibGUtaW5wdXQnLCAnbnVtZXJpYycsICdudW1lcmljJ10sCiAgICAgJ3Rl eHQnOiBbJ3VuZWRpdGFibGUtaW5wdXQnLCAnaW5wdXQnLCAnc3RyaW5nJ10s CiAgICAgJ251bWVyaWMnOiBbJ3VuZWRpdGFibGUtaW5wdXQnLCAnbnVtZXJp YycsICdudW1lcmljJ10sCiAgICAgJ2RhdGUnOiAnZGF0ZXBpY2tlcicsCkBA IC0xNDkzLDEwOSArMTQ5Myw2IEBACiAgICAgfQogfSk7CiAKLSAgLyoKLSAg ICogSW50ZWdlciBpbnB1dCBDb250cm9sIGZ1bmN0aW9uYWxpdHkganVzdCBs aWtlIGJhY2tncmlkCi0gICAqLwotICB2YXIgSW50ZWdlckNvbnRyb2wgPSBC YWNrZm9ybS5JbnRlZ2VyQ29udHJvbCA9IEJhY2tmb3JtLklucHV0Q29udHJv bC5leHRlbmQoewotICAgIGRlZmF1bHRzOiB7Ci0gICAgICB0eXBlOiAibnVt YmVyIiwKLSAgICAgIGxhYmVsOiAiIiwKLSAgICAgIG1pbjogdW5kZWZpbmVk LAotICAgICAgbWF4OiB1bmRlZmluZWQsCi0gICAgICBtYXhsZW5ndGg6IDI1 NSwKLSAgICAgIGV4dHJhQ2xhc3NlczogW10sCi0gICAgICBoZWxwTWVzc2Fn ZTogbnVsbAotICAgIH0sCi0gICAgdGVtcGxhdGU6IF8udGVtcGxhdGUoWwot ICAgICAgJzxsYWJlbCBjbGFzcz0iPCU9QmFja2Zvcm0uY29udHJvbExhYmVs Q2xhc3NOYW1lJT4iPjwlPWxhYmVsJT48L2xhYmVsPicsCi0gICAgICAnPGRp diBjbGFzcz0iPCU9QmFja2Zvcm0uY29udHJvbHNDbGFzc05hbWUlPiI+JywK LSAgICAgICcgIDxpbnB1dCB0eXBlPSI8JT10eXBlJT4iIGNsYXNzPSI8JT1C YWNrZm9ybS5jb250cm9sQ2xhc3NOYW1lJT4gPCU9ZXh0cmFDbGFzc2VzLmpv aW4oXCcgXCcpJT4iIG5hbWU9IjwlPW5hbWUlPiIgbWluPSI8JT1taW4lPiIg bWF4PSI8JT1tYXglPiJtYXhsZW5ndGg9IjwlPW1heGxlbmd0aCU+IiB2YWx1 ZT0iPCUtdmFsdWUlPiIgcGxhY2Vob2xkZXI9IjwlLXBsYWNlaG9sZGVyJT4i IDwlPWRpc2FibGVkID8gImRpc2FibGVkIiA6ICIiJT4gPCU9cmVxdWlyZWQg PyAicmVxdWlyZWQiIDogIiIlPiAvPicsCi0gICAgICAnICA8JSBpZiAoaGVs cE1lc3NhZ2UgJiYgaGVscE1lc3NhZ2UubGVuZ3RoKSB7ICU+JywKLSAgICAg ICcgICAgPHNwYW4gY2xhc3M9IjwlPUJhY2tmb3JtLmhlbHBNZXNzYWdlQ2xh c3NOYW1lJT4iPjwlPWhlbHBNZXNzYWdlJT48L3NwYW4+JywKLSAgICAgICcg IDwlIH0gJT4nLAotICAgICAgJzwvZGl2PicKLSAgICBdLmpvaW4oIlxuIikp LAotICAgIGV2ZW50czogewotICAgICAgImNoYW5nZSBpbnB1dCI6ICJjaGVj a0ludCIsCi0gICAgICAiZm9jdXMgaW5wdXQiOiAiY2xlYXJJbnZhbGlkIgot ICAgIH0sCi0gICAgY2hlY2tJbnQ6IGZ1bmN0aW9uKGUpIHsKLSAgICAgIHZh ciBmaWVsZCA9IF8uZGVmYXVsdHModGhpcy5maWVsZC50b0pTT04oKSwgdGhp cy5kZWZhdWx0cyksCi0gICAgICAgICAgYXR0ckFyciA9IHRoaXMuZmllbGQu Z2V0KCJuYW1lIikuc3BsaXQoJy4nKSwKLSAgICAgICAgICBuYW1lID0gYXR0 ckFyci5zaGlmdCgpLAotICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRWYWx1 ZUZyb21ET00oKSwKLSAgICAgICAgICBtaW5fdmFsdWUgPSBmaWVsZC5taW4s Ci0gICAgICAgICAgbWF4X3ZhbHVlID0gZmllbGQubWF4LAotICAgICAgICAg IGlzVmFsaWQgPSB0cnVlLAotICAgICAgICAgIGludFBhdHRlcm4gPSBuZXcg UmVnRXhwKCJeLT9bMC05XSokIiksCi0gICAgICAgICAgaXNNYXRjaGVkID0g aW50UGF0dGVybi50ZXN0KHZhbHVlKTsKLQotICAgICAgLy8gQmVsb3cgbG9n aWMgd2lsbCB2YWxpZGF0ZSBpbnB1dAotICAgICAgaWYgKCFpc01hdGNoZWQp IHsKLSAgICAgICAgaXNWYWxpZCA9IGZhbHNlOwotICAgICAgICB0aGlzLm1v ZGVsLmVycm9yTW9kZWwudW5zZXQobmFtZSk7Ci0gICAgICAgIHRoaXMubW9k ZWwuZXJyb3JNb2RlbC5zZXQoCi0gICAgICAgICAgICBuYW1lLAotICAgICAg ICAgICAgUyhwZ0FkbWluLkJyb3dzZXIubWVzc2FnZXMuTVVTVF9CRV9JTlQp LnNwcmludGYoCi0gICAgICAgICAgICAgIGZpZWxkLmxhYmVsCi0gICAgICAg ICAgICAgICkudmFsdWUoKQotICAgICAgICAgICAgKTsKLSAgICAgIH0KLQot ICAgICAgLy8gQmVsb3cgd2lsbCBjaGVjayBpZiBlbnRlcmVkIHZhbHVlIGlz IGluLWJldHdlZW4gbWluICYgbWF4IHJhbmdlCi0gICAgICBpZiAoaXNWYWxp ZCAmJiAoIV8uaXNVbmRlZmluZWQobWluX3ZhbHVlKSAmJiB2YWx1ZSA8IG1p bl92YWx1ZSkpIHsKLSAgICAgICAgaXNWYWxpZCA9IGZhbHNlOwotICAgICAg ICB0aGlzLm1vZGVsLmVycm9yTW9kZWwudW5zZXQobmFtZSk7Ci0gICAgICAg IHRoaXMubW9kZWwuZXJyb3JNb2RlbC5zZXQoCi0gICAgICAgICAgICBuYW1l LAotICAgICAgICAgICAgUyhwZ0FkbWluLkJyb3dzZXIubWVzc2FnZXMuTVVT VF9HUl9FUSkuc3ByaW50ZigKLSAgICAgICAgICAgICAgZmllbGQubGFiZWws Ci0gICAgICAgICAgICAgIG1pbl92YWx1ZQotICAgICAgICAgICAgICApLnZh bHVlKCkKLSAgICAgICAgICAgICk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChp c1ZhbGlkICYmICghXy5pc1VuZGVmaW5lZChtYXhfdmFsdWUpICYmIHZhbHVl ID4gbWF4X3ZhbHVlKSkgewotICAgICAgICBpc1ZhbGlkID0gZmFsc2U7Ci0g ICAgICAgIHRoaXMubW9kZWwuZXJyb3JNb2RlbC51bnNldChuYW1lKTsKLSAg ICAgICAgdGhpcy5tb2RlbC5lcnJvck1vZGVsLnNldCgKLSAgICAgICAgICAg IG5hbWUsCi0gICAgICAgICAgICBTKHBnQWRtaW4uQnJvd3Nlci5tZXNzYWdl cy5NVVNUX0xFU1NfRVEpLnNwcmludGYoCi0gICAgICAgICAgICAgIGZpZWxk LmxhYmVsLAotICAgICAgICAgICAgICBtYXhfdmFsdWUKLSAgICAgICAgICAg ICAgKS52YWx1ZSgpCi0gICAgICAgICAgICApOwotICAgICAgfQotCi0gICAg ICAvLyBBZnRlciB2YWxpZGF0aW9uIHdlIG5lZWQgdG8gc2V0IHRoYXQgdmFs dWUgaW50byBtb2RlbCAob25seSBpZiBhbGwgZmxhZ3MgYXJlIHRydWUpCi0g ICAgICBpZiAoaXNWYWxpZCkgewotICAgICAgICB0aGlzLnN0b3BMaXN0ZW5p bmcodGhpcy5tb2RlbCwgImNoYW5nZToiICsgbmFtZSwgdGhpcy5yZW5kZXIp OwotICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwudW5zZXQobmFtZSk7 Ci0gICAgICAgIHRoaXMubW9kZWwuc2V0KG5hbWUsIHZhbHVlKTsKLSAgICAg ICAgdGhpcy5saXN0ZW5Ubyh0aGlzLm1vZGVsLCAiY2hhbmdlOiIgKyBuYW1l LCB0aGlzLnJlbmRlcik7Ci0gICAgICAgIGlmICh0aGlzLm1vZGVsLmNvbGxl Y3Rpb24gfHwgdGhpcy5tb2RlbC5oYW5kbGVyKSB7Ci0gICAgICAgICAgKHRo aXMubW9kZWwuY29sbGVjdGlvbiB8fCB0aGlzLm1vZGVsLmhhbmRsZXIpLnRy aWdnZXIoCi0gICAgICAgICAgICAgJ3BnYWRtaW4tc2Vzc2lvbjptb2RlbDp2 YWxpZCcsIHRoaXMubW9kZWwsICh0aGlzLm1vZGVsLmNvbGxlY3Rpb24gfHwg dGhpcy5tb2RlbC5oYW5kbGVyKQotICAgICAgICAgICAgKTsKLSAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICAodGhpcy5tb2RlbCkudHJpZ2dlcigKLSAg ICAgICAgICAgICAncGdhZG1pbi1zZXNzaW9uOnZhbGlkJywgdGhpcy5tb2Rl bC5zZXNzQ2hhbmdlZCgpLCB0aGlzLm1vZGVsCi0gICAgICAgICAgICApOwot ICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICBpZiAodGhpcy5t b2RlbC5jb2xsZWN0aW9uIHx8IHRoaXMubW9kZWwuaGFuZGxlcikgewotICAg ICAgICAgICh0aGlzLm1vZGVsLmNvbGxlY3Rpb24gfHwgdGhpcy5tb2RlbC5o YW5kbGVyKS50cmlnZ2VyKAotICAgICAgICAgICAgICdwZ2FkbWluLXNlc3Np b246bW9kZWw6aW52YWxpZCcsIHRoaXMubW9kZWwuZXJyb3JNb2RlbC5nZXQo bmFtZSksIHRoaXMubW9kZWwKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgKHRoaXMubW9kZWwpLnRyaWdnZXIoCi0gICAg ICAgICAgICAgJ3BnYWRtaW4tc2Vzc2lvbjppbnZhbGlkJywgdGhpcy5tb2Rl bC5lcnJvck1vZGVsLmdldChuYW1lKSwgdGhpcy5tb2RlbAotICAgICAgICAg ICAgKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfSk7Ci0KICAg IC8qCiAgICAqIE51bWVyaWMgaW5wdXQgQ29udHJvbCBmdW5jdGlvbmFsaXR5 IGp1c3QgbGlrZSBiYWNrZ3JpZAogICAgKi8KQEAgLTE2MTcsODYgKzE1MTQs NyBAQAogICAgICAgJyAgICA8c3BhbiBjbGFzcz0iPCU9QmFja2Zvcm0uaGVs cE1lc3NhZ2VDbGFzc05hbWUlPiI+PCU9aGVscE1lc3NhZ2UlPjwvc3Bhbj4n LAogICAgICAgJyAgPCUgfSAlPicsCiAgICAgICAnPC9kaXY+JwotICAgIF0u am9pbigiXG4iKSksCi0gICAgZXZlbnRzOiB7Ci0gICAgICAiY2hhbmdlIGlu cHV0IjogImNoZWNrTnVtZXJpYyIsCi0gICAgICAiZm9jdXMgaW5wdXQiOiAi Y2xlYXJJbnZhbGlkIgotICAgIH0sCi0gICAgY2hlY2tOdW1lcmljOiBmdW5j dGlvbihlKSB7Ci0gICAgICB2YXIgZmllbGQgPSBfLmRlZmF1bHRzKHRoaXMu ZmllbGQudG9KU09OKCksIHRoaXMuZGVmYXVsdHMpLAotICAgICAgICAgIGF0 dHJBcnIgPSB0aGlzLmZpZWxkLmdldCgibmFtZSIpLnNwbGl0KCcuJyksCi0g ICAgICAgICAgbmFtZSA9IGF0dHJBcnIuc2hpZnQoKSwKLSAgICAgICAgICB2 YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tRE9NKCksCi0gICAgICAgICAgbWlu X3ZhbHVlID0gZmllbGQubWluLAotICAgICAgICAgIG1heF92YWx1ZSA9IGZp ZWxkLm1heCwKLSAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZSwKLSAgICAgICAg ICBpbnRQYXR0ZXJuID0gbmV3IFJlZ0V4cCgiXi0/WzAtOV0rKFwuP1swLTld Kik/JCIpLAotICAgICAgICAgIGlzTWF0Y2hlZCA9IGludFBhdHRlcm4udGVz dCh2YWx1ZSk7Ci0KLSAgICAgIC8vIEJlbG93IGxvZ2ljIHdpbGwgdmFsaWRh dGUgaW5wdXQKLSAgICAgIGlmICghaXNNYXRjaGVkKSB7Ci0gICAgICAgIGlz VmFsaWQgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5tb2RlbC5lcnJvck1vZGVs LnVuc2V0KG5hbWUpOwotICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwu c2V0KAotICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgIFMocGdBZG1p bi5Ccm93c2VyLm1lc3NhZ2VzLk1VU1RfQkVfTlVNKS5zcHJpbnRmKAotICAg ICAgICAgICAgICBmaWVsZC5sYWJlbAotICAgICAgICAgICAgICApLnZhbHVl KCkKLSAgICAgICAgICAgICk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEJlbG93 IHdpbGwgY2hlY2sgaWYgZW50ZXJlZCB2YWx1ZSBpcyBpbi1iZXR3ZWVuIG1p biAmIG1heCByYW5nZQotICAgICAgaWYgKGlzVmFsaWQgJiYgKCFfLmlzVW5k ZWZpbmVkKG1pbl92YWx1ZSkgJiYgdmFsdWUgPCBtaW5fdmFsdWUpKSB7Ci0g ICAgICAgIGlzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5tb2RlbC5l cnJvck1vZGVsLnVuc2V0KG5hbWUpOwotICAgICAgICB0aGlzLm1vZGVsLmVy cm9yTW9kZWwuc2V0KAotICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAg IFMocGdBZG1pbi5Ccm93c2VyLm1lc3NhZ2VzLk1VU1RfR1JfRVEpLnNwcmlu dGYoCi0gICAgICAgICAgICAgIGZpZWxkLmxhYmVsLAotICAgICAgICAgICAg ICBtaW5fdmFsdWUKLSAgICAgICAgICAgICAgKS52YWx1ZSgpCi0gICAgICAg ICAgICApOwotICAgICAgfQotCi0gICAgICBpZiAoaXNWYWxpZCAmJiAoIV8u aXNVbmRlZmluZWQobWF4X3ZhbHVlKSAmJiB2YWx1ZSA+IG1heF92YWx1ZSkp IHsKLSAgICAgICAgaXNWYWxpZCA9IGZhbHNlOwotICAgICAgICB0aGlzLm1v ZGVsLmVycm9yTW9kZWwudW5zZXQobmFtZSk7Ci0gICAgICAgIHRoaXMubW9k ZWwuZXJyb3JNb2RlbC5zZXQoCi0gICAgICAgICAgICBuYW1lLAotICAgICAg ICAgICAgUyhwZ0FkbWluLkJyb3dzZXIubWVzc2FnZXMuTVVTVF9MRVNTX0VR KS5zcHJpbnRmKAotICAgICAgICAgICAgICBmaWVsZC5sYWJlbCwKLSAgICAg ICAgICAgICAgbWF4X3ZhbHVlCi0gICAgICAgICAgICAgICkudmFsdWUoKQot ICAgICAgICAgICAgKTsKLSAgICAgIH0KLQotICAgICAgLy8gQWZ0ZXIgdmFs aWRhdGlvbiB3ZSBuZWVkIHRvIHNldCB0aGF0IHZhbHVlIGludG8gbW9kZWwg KG9ubHkgaWYgYWxsIGZsYWdzIGFyZSB0cnVlKQotICAgICAgaWYgKGlzVmFs aWQpIHsKLSAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nKHRoaXMubW9kZWws ICJjaGFuZ2U6IiArIG5hbWUsIHRoaXMucmVuZGVyKTsKLSAgICAgICAgdGhp cy5tb2RlbC5lcnJvck1vZGVsLnVuc2V0KG5hbWUpOwotICAgICAgICB0aGlz Lm1vZGVsLnNldChuYW1lLCB2YWx1ZSk7Ci0gICAgICAgIHRoaXMubGlzdGVu VG8odGhpcy5tb2RlbCwgImNoYW5nZToiICsgbmFtZSwgdGhpcy5yZW5kZXIp OwotICAgICAgICBpZiAodGhpcy5tb2RlbC5jb2xsZWN0aW9uIHx8IHRoaXMu bW9kZWwuaGFuZGxlcikgewotICAgICAgICAgICh0aGlzLm1vZGVsLmNvbGxl Y3Rpb24gfHwgdGhpcy5tb2RlbC5oYW5kbGVyKS50cmlnZ2VyKAotICAgICAg ICAgICAgICdwZ2FkbWluLXNlc3Npb246bW9kZWw6dmFsaWQnLCB0aGlzLm1v ZGVsLCAodGhpcy5tb2RlbC5jb2xsZWN0aW9uIHx8IHRoaXMubW9kZWwuaGFu ZGxlcikKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgKHRoaXMubW9kZWwpLnRyaWdnZXIoCi0gICAgICAgICAgICAgJ3Bn YWRtaW4tc2Vzc2lvbjp2YWxpZCcsIHRoaXMubW9kZWwuc2Vzc0NoYW5nZWQo KSwgdGhpcy5tb2RlbAotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotICAg ICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHRoaXMubW9kZWwuY29sbGVjdGlv biB8fCB0aGlzLm1vZGVsLmhhbmRsZXIpIHsKLSAgICAgICAgICAodGhpcy5t b2RlbC5jb2xsZWN0aW9uIHx8IHRoaXMubW9kZWwuaGFuZGxlcikudHJpZ2dl cigKLSAgICAgICAgICAgICAncGdhZG1pbi1zZXNzaW9uOm1vZGVsOmludmFs aWQnLCB0aGlzLm1vZGVsLmVycm9yTW9kZWwuZ2V0KG5hbWUpLCB0aGlzLm1v ZGVsCi0gICAgICAgICAgICApOwotICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICh0aGlzLm1vZGVsKS50cmlnZ2VyKAotICAgICAgICAgICAgICdwZ2Fk bWluLXNlc3Npb246aW52YWxpZCcsIHRoaXMubW9kZWwuZXJyb3JNb2RlbC5n ZXQobmFtZSksIHRoaXMubW9kZWwKLSAgICAgICAgICAgICk7Ci0gICAgICAg IH0KLSAgICAgIH0KLSAgICB9CisgICAgXS5qb2luKCJcbiIpKQogICB9KTsK IAogICAvLy8vLy8vCg== --001a1140c838ed0e8e0550b8bf31 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 --001a1140c838ed0e8e0550b8bf31--