Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dI8CL-00033Y-1A for pgadmin-hackers@arkaria.postgresql.org; Tue, 06 Jun 2017 06:42:37 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dI8CK-0005g9-Jq for pgadmin-hackers@arkaria.postgresql.org; Tue, 06 Jun 2017 06:42:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dI8C1-0005EH-GG for pgadmin-hackers@postgresql.org; Tue, 06 Jun 2017 06:42:17 +0000 Received: from mail-it0-x231.google.com ([2607:f8b0:4001:c0b::231]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dI8Bw-0002Rr-QD for pgadmin-hackers@postgresql.org; Tue, 06 Jun 2017 06:42:16 +0000 Received: by mail-it0-x231.google.com with SMTP id m47so99630956iti.0 for ; Mon, 05 Jun 2017 23:42:12 -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=fgZSvT4M8MGocGcxLzBIcldLdz/GhsE+LGmBO7Qc9Qw=; b=yZvBM1ZYx0yS8F6ukScg/BZSvVKxTd8NBml7piadg7xq/uaSu7I8QUzMG6XuTKu6te f9SoGDKFiPBWA9+HTTrgmNuRUg2u+xcUTgZ3XO+1/Cm8d7RZYkYQixqVLiWXWI+9tgZy 1yq2ytNZfDfGcGaYhICqfJAtEHfusuSYSo/obTAaE1edC3ZSZqNrVNXHWtHmNsT+Z06N Kjh1fOGpYEjVpqRLLeDXK1mqrqSHXJm114YYTGf5pyhYKI0UFZyCSeUj5Z92LfiAFEN4 2Vz9D+lUBQfwd51mShk3Pm0nhzQciMIS2UL5Q+zVVZY/iL9AHbrubbdpFF4kx8BNXHyc OP2Q== 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=fgZSvT4M8MGocGcxLzBIcldLdz/GhsE+LGmBO7Qc9Qw=; b=Fojf8xoYmW/BoBF092gZAGz01UydFN+P2lR9qSAVDy3z5YBMVuZfSnbwDG/0nig3BB UKzhNQWqbrpC9KfPIbBJvU2Ldb2tYJrbqVp1f4InMMckbJTqCKuF/nsEgC+0s/PJnYwh aUHKdNmQew0oZ13dHKErVS9g0aobbXbMM2oA2LQLbljD9GLB1u0Y4k0S9sHcvcgtM7Ro j6ATtcKAXGsl43JMYHXAqlEhVHM1dQFZ8aM8Ji20ncn3F84ePXb/OewAnpNcz49791uX djWq/0OseLPo0qHd7VifKgHmo+28RV8tmEP0g1ojW4MiVFcSPdJ1dwnbmGOhLpxrKX2v eN7A== X-Gm-Message-State: AKS2vOz+PtCTLaM+f8F8kgS9F0D5dqsPIbCSWZv15g1A+61M5AKXiMJK O9yK5l5Zi70E9vLSM7hSYhPmEjgGAKHCYHY= X-Received: by 10.107.154.199 with SMTP id c190mr17674923ioe.109.1496731330560; Mon, 05 Jun 2017 23:42:10 -0700 (PDT) MIME-Version: 1.0 Received: by 10.79.81.1 with HTTP; Mon, 5 Jun 2017 23:42:09 -0700 (PDT) In-Reply-To: References: From: Harshal Dhumal Date: Tue, 6 Jun 2017 12:12:09 +0530 Message-ID: Subject: Re: Fix for RM2421 [pgAdmin4][patch] To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="001a1140f16e48eb4e055144eb1e" 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 --001a1140f16e48eb4e055144eb1e Content-Type: multipart/alternative; boundary="001a1140f16e48eb4a055144eb1c" --001a1140f16e48eb4a055144eb1c Content-Type: text/plain; charset="UTF-8" Hi, On Mon, Jun 5, 2017 at 9:25 PM, Dave Page wrote: > Hi > > With this patch applied, it uses the field names instead of the labels > in error messages - e.g. > > 'dirty_rate_limit' must be numeric > > instead of: > > 'Dirty Rate Limit (KB)' must be numeric. > Fixed. Please find attached updated patch. > > Thanks. > > On Tue, May 30, 2017 at 8:28 AM, Harshal Dhumal > wrote: > > Hi, > > > > Please find updated patch. > > > > -- > > 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 > > 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 > >> 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 > >>> wrote: > >>>> > >>>> Hi, > >>>> > >>>> On Thu, May 18, 2017 at 7:57 PM, Joao Pedro De Almeida Pereira > >>>> 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 > were no > >>>>> chaining of variable creation, specially if those variables are > functions. > >>>>> 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 = field.max, > >>>>> isValid = true, > >>>>> intPattern = new RegExp("^-?[0-9]*$"), > >>>>> - isMatched = intPattern.test(value); > >>>>> + isMatched = intPattern.test(value), > >>>>> + trigger_invalid_event = function(msg) { > >>>>> > >>>>> 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.collection || this.model.handler) > >>>>> - ); > >>>>> + // Check if other fields of same model are valid before > >>>>> + // triggering 'session:valid' event > >>>>> + if(_.size(this.model.errorModel.attributes) == 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(), > >>>>> this.model > >>>>> + ); > >>>>> + } > >>>>> > >>>>> 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 @@ > >>>>> > >>>>> > >>>>> Thanks > >>>>> Joao & Shruti > >>>>> > >>>>> On Thu, May 18, 2017 at 6:01 AM, Harshal Dhumal > >>>>> 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 > >>>>>> > >>>>> > >>>> > >>> > >> > > > > > > > > -- > > Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) > > To make changes to your subscription: > > http://www.postgresql.org/mailpref/pgadmin-hackers > > > > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --001a1140f16e48eb4a055144eb1c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

<= /div>
On Mon,= Jun 5, 2017 at 9:25 PM, Dave Page <dpage@pgadmin.org> wrote= :
Hi

With this patch applied, it uses the field names instead of the labels
in error messages - e.g.

'dirty_rate_limit' must be numeric

instead of:

'Dirty Rate Limit (KB)' must be numeric.
Fixed= . Please find attached=C2=A0updated patch.
=C2=A0

Thanks.

On Tue, May 30, 2017 at 8:28 AM, Harshal Dhumal
<harshal.dhumal@enterprisedb.com>= ; wrote:
> Hi,
>
> Please find updated patch.
>
> --
> 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.dhu= mal@enterprisedb.com> wrote:
>>>
>>> Hi,
>>>
>>> Here is updated patch for RM2421.
>>>
>>> Now I have moved all Numeric control level validations to data= model. As
>>> existing implementation was causing
>>> issues with error messages in create/edit dialog when schema c= ontains 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 Per= eira
>>>> <jdealm= eidapereira@pivotal.io> wrote:
>>>>>
>>>>> Hello Harshal,
>>>>>
>>>>> We review the patch and have some questions:
>>>>> 1) Is there any particular reason to initialize variab= les and functions
>>>>> in the same place? We believe that it would be more re= adable there were no
>>>>> chaining of variable creation, specially if those vari= ables are functions.
>>>>> Check line:
>>>>
>>>> That function is only going to be used in checkNumeric fun= ction (in case
>>>> of Number control) and checkInt function (in case of Integ= er control) so
>>>> declared them locally.
>>>> 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 @@
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 max_value =3D= field.max,
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 isValid =3D t= rue,
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 intPattern = =3D new RegExp("^-?[0-9]*$"),
>>>>> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 isMatched =3D intP= attern.test(value);
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 isMatched =3D intP= attern.test(value),
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 trigger_invalid_ev= ent =3D function(msg) {
>>>>>
>>>>> 2) The functions added in both places look very simila= r, 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 an= d
>>>> 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; opposit= e to "model invalid"
>>>> event (trigger_invalid_event)
>>>>>
>>>>> +++ b/web/pgadmin/static/js/backform.pgadmin.js >>>>> @@ -1573,25 +1584,23 @@
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 this.model.errorMode= l.unset(name);
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 this.model.set(name,= value);
>>>>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 this.listenTo(this.m= odel, "change:" + name, this.render);
>>>>> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (this.model.collection= || this.model.handler) {
>>>>> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (this.model.collec= tion || this.model.handler).trigger(
>>>>> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0'= pgadmin-session:model:valid', this.model,
>>>>> (this.model.collection || this.model.handler)
>>>>> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 );
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 // Check if other fields = of same model are valid before
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 // triggering 'sessio= n:valid' event
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if(_.size(this.model.errorModel.attributes) =3D=3D 0) {
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (this.model.col= lection || this.model.handler) {
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (this.model= .collection || this.model.handler).trigger(
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0'pgadmin-session:model:valid', this.model,
>>>>> (this.model.collection || this.model.handler)
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ); >>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } else {
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (this.model= ).trigger(
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0'pgadmin-session:valid', this.model.sessChanged(),
>>>>> this.model
>>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ); >>>>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }
>>>>>
>>>>> 4) We also noticed that the following change sets look= very similiar.
>>>>> Is there any reason to have this code duplicated? If n= ot 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 @@
>>>>>
>>>>>
>>>>> 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<= /a>
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Sent via pgadmin-hackers mailing list (
pgadmin-hackers@postgresql.org<= /a>)
>>>>>> 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/pgadm= in-hackers
>



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

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

--001a1140f16e48eb4a055144eb1c-- --001a1140f16e48eb4e055144eb1e Content-Type: text/x-patch; charset="US-ASCII"; name="RM2421_V4.patch" Content-Disposition: attachment; filename="RM2421_V4.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j3l75yet0 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 YW1vZGVsLmpzCmluZGV4IDViMWMzYTcuLmFkOGY5NWYgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2RhdGFtb2RlbC5qcwor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9kYXRhbW9kZWwu anMKQEAgLTEsNiArMSw2IEBACiBkZWZpbmUoCi0gICBbJ3VuZGVyc2NvcmUn LCAncGdhZG1pbicsICdqcXVlcnknLCAnYmFja2JvbmUnXSwKLWZ1bmN0aW9u KF8sIHBnQWRtaW4sICQsIEJhY2tib25lKSB7CisgICBbJ3VuZGVyc2NvcmUn LCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbicsICdqcXVlcnknLCAn YmFja2JvbmUnXSwKK2Z1bmN0aW9uKF8sIFMsIHBnQWRtaW4sICQsIEJhY2ti b25lKSB7CiAgIHZhciBwZ0Jyb3dzZXIgPSBwZ0FkbWluLkJyb3dzZXIgPSBw Z0FkbWluLkJyb3dzZXIgfHwge307CiAKICAgcGdCcm93c2VyLkRhdGFNb2Rl bCA9IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7CkBAIC0xMzYsNiArMTM2LDcg QEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAg ICAgfQogCiAgICAgICAgIHNlbGYuc2Vzc0F0dHJzID0ge307CisgICAgICAg IHNlbGYuZmllbGREYXRhID0ge307CiAgICAgICAgIHNlbGYub3JpZ1Nlc3NB dHRycyA9IHt9OwogICAgICAgICBzZWxmLm9iamVjdHMgPSBbXTsKICAgICAg ICAgc2VsZi5hcnJheXMgPSBbXTsKQEAgLTE1Myw2ICsxNTQsMjUgQEAgZnVu Y3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAgICAgICAg IF8uZWFjaChzY2hlbWEsIGZ1bmN0aW9uKHMpIHsKIAogICAgICAgICAgICAg ICBzd2l0Y2gocy50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnaW50 JzoKKyAgICAgICAgICAgICAgICBjYXNlICdudW1lcmljJzoKKyAgICAgICAg ICAgICAgICAgIHNlbGYuZmllbGREYXRhW3MuaWRdID0geworICAgICAgICAg ICAgICAgICAgICBpZDogcy5pZCwKKyAgICAgICAgICAgICAgICAgICAgbGFi ZWw6IHMubGFiZWwsCisgICAgICAgICAgICAgICAgICAgIHR5cGU6IHMudHlw ZSwKKyAgICAgICAgICAgICAgICAgICAgbWluOiBzLm1pbiB8fCB1bmRlZmlu ZWQsCisgICAgICAgICAgICAgICAgICAgIG1heDogcy5tYXggfHwgdW5kZWZp bmVkCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg ICAgICAgc2VsZi5maWVsZERhdGFbcy5pZF0gPSB7CisgICAgICAgICAgICAg ICAgICAgICAgaWQ6IHMuaWQsCisgICAgICAgICAgICAgICAgICAgICAgbGFi ZWw6IHMubGFiZWwsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZTogcy50 eXBlCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQor CisgICAgICAgICAgICAgIHN3aXRjaChzLnR5cGUpIHsKICAgICAgICAgICAg ICAgICBjYXNlICdhcnJheSc6CiAgICAgICAgICAgICAgICAgICBzZWxmLmFy cmF5cy5wdXNoKHMuaWQpOwogCkBAIC0yODAsNiArMzAwLDEyIEBAIGZ1bmN0 aW9uKF8sIHBnQWRtaW4sICQsIEJhY2tib25lKSB7CiAgICAgICB9LAogICAg ICAgc2Vzc1ZhbGlkOiBmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHNlbGYg PSB0aGlzOworICAgICAgICAvLyBQZXJmb3JtIGRlZmF1bHQgdmFsaWRhdGlv bnMuCisgICAgICAgIGlmICgnZGVmYXVsdF92YWxpZGF0ZScgaW4gc2VsZiAm JiB0eXBlb2Yoc2VsZi5kZWZhdWx0X3ZhbGlkYXRlKSA9PSAnZnVuY3Rpb24n ICYmCisgICAgICAgICAgICBfLmlzU3RyaW5nKHNlbGYuZGVmYXVsdF92YWxp ZGF0ZSgpKSkgeworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg fQorCiAgICAgICAgIGlmICgndmFsaWRhdGUnIGluIHNlbGYgJiYgXy5pc0Z1 bmN0aW9uKHNlbGYudmFsaWRhdGUpICYmCiAgICAgICAgICAgICBfLmlzU3Ry aW5nKHNlbGYudmFsaWRhdGUuYXBwbHkoc2VsZikpKSB7CiAgICAgICAgICAg cmV0dXJuIGZhbHNlOwpAQCAtMzAxLDggKzMyNyw5IEBAIGZ1bmN0aW9uKF8s IHBnQWRtaW4sICQsIEJhY2tib25lKSB7CiAgICAgICAgIH0KIAogICAgICAg ICBpZiAoa2V5ICE9IG51bGwgJiYgcmVzKSB7Ci0gICAgICAgICAgdmFyIGF0 dHJzID0ge307Ci0gICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAg ICAgIHZhciBhdHRycyA9IHt9LAorICAgICAgICAgICAgICBzZWxmID0gdGhp cywKKyAgICAgICAgICAgICAgbXNnOwogCiAgICAgICAgICAgYXR0ckNoYW5n ZWQgPSBmdW5jdGlvbih2LCBrKSB7CiAgICAgICAgICAgICBpZiAoayBpbiBz ZWxmLm9iamVjdHMpIHsKQEAgLTMyNyw5ICszNTQsMTggQEAgZnVuY3Rpb24o XywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAgICAgICBpZiAoIW9w dGlvbnMgfHwgIW9wdGlvbnMuc2lsZW50KSB7CiAgICAgICAgICAgICBzZWxm LnRyaWdnZXIoJ2NoYW5nZScsIHNlbGYsIG9wdGlvbnMpOwogICAgICAgICAg IH0KKworICAgICAgICAgIC8vIFBlcmZvcm0gZGVmYXVsdCB2YWxpZGF0aW9u cy4KKworICAgICAgICAgIGlmICgnZGVmYXVsdF92YWxpZGF0ZScgaW4gc2Vs ZiAmJiB0eXBlb2Yoc2VsZi5kZWZhdWx0X3ZhbGlkYXRlKSA9PSAnZnVuY3Rp b24nKSB7CisgICAgICAgICAgICBtc2cgPSBzZWxmLmRlZmF1bHRfdmFsaWRh dGUoKTsKKyAgICAgICAgICB9CisKICAgICAgICAgICBpZiAoJ3ZhbGlkYXRl JyBpbiBzZWxmICYmIHR5cGVvZihzZWxmWyd2YWxpZGF0ZSddKSA9PT0gJ2Z1 bmN0aW9uJykgewogCi0gICAgICAgICAgICB2YXIgbXNnID0gc2VsZi52YWxp ZGF0ZShfLmtleXMoYXR0cnMpKTsKKyAgICAgICAgICAgIGlmICghbXNnKSB7 CisgICAgICAgICAgICAgIG1zZyA9IHNlbGYudmFsaWRhdGUoXy5rZXlzKGF0 dHJzKSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qCiAgICAg ICAgICAgICAgKiBJZiBhbnkgcGFyZW50IHByZXNlbnQsIHdlIHdpbGwgbmVl ZCB0byBpbmZvcm0gdGhlIHBhcmVudCAtIHRoYXQKQEAgLTU2Miw2ICs1OTgs MTMgQEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKIAog ICAgICAgICAgIHZhciBtc2cgPSBudWxsLAogICAgICAgICAgICAgICB2YWxp ZGF0ZSA9IGZ1bmN0aW9uKG0sIGF0dHJzKSB7CisgICAgICAgICAgICAgICAg aWYgKCdkZWZhdWx0X3ZhbGlkYXRlJyBpbiBtICYmIHR5cGVvZihtLmRlZmF1 bHRfdmFsaWRhdGUpID09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICAgICAg ICAgIG1zZyA9IG0uZGVmYXVsdF92YWxpZGF0ZSgpOworICAgICAgICAgICAg ICAgICAgaWYgKF8uaXNTdHJpbmcobXNnKSkgeworICAgICAgICAgICAgICAg ICAgICByZXR1cm4gbXNnOworICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmICgndmFsaWRhdGUn IGluIG0gJiYgdHlwZW9mKG0udmFsaWRhdGUpID09ICdmdW5jdGlvbicpIHsK ICAgICAgICAgICAgICAgICAgIG1zZyA9IG0udmFsaWRhdGUoYXR0cnMpOwog CkBAIC02NTUsNiArNjk4LDc5IEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4sICQs IEJhY2tib25lKSB7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHNlbGYudHJp Z2dlcigncGdhZG1pbi1zZXNzaW9uOnN0b3AnKTsKKyAgICAgIH0sCisgICAg ICBkZWZhdWx0X3ZhbGlkYXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFy IG1zZywgZmllbGQsIHZhbHVlLCB0eXBlOworCisgICAgICAgIGZvciAodmFy IGkgPSAwLCBrZXlzID0gXy5rZXlzKHRoaXMuYXR0cmlidXRlcyksIGwgPSBr ZXlzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgaTxsOworICAgICAgICAg ICAgICAgICBpKyspIHsKKworICAgICAgICAgIHZhbHVlID0gdGhpcy5hdHRy aWJ1dGVzW2tleXNbaV1dOworICAgICAgICAgIGZpZWxkICA9IHRoaXMuZmll bGREYXRhW2tleXNbaV1dCisgICAgICAgICAgbXNnID0gbnVsbDsKKworICAg ICAgICAgIGlmICghKF8uaXNVbmRlZmluZWQodmFsdWUpIHx8IF8uaXNOdWxs KHZhbHVlKSB8fAorICAgICAgICAgICAgICAgIFN0cmluZyh2YWx1ZSkucmVw bGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykpIHsKKworICAgICAgICAg ICAgaWYgKCFmaWVsZCkgeworICAgICAgICAgICAgICBjb250aW51ZTsKKyAg ICAgICAgICAgIH0KKworICAgICAgICAgICAgdHlwZSA9IGZpZWxkLnR5cGUg fHwgdW5kZWZpbmVkOworICAgICAgICAgICAgaWYgKCF0eXBlKSB7CisgICAg ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBzd2l0Y2godHlwZSkgeworICAgICAgICAgICAgICBjYXNlICdpbnQn OgorICAgICAgICAgICAgICAgIG1zZyA9IHRoaXMuaW50ZWdlcl92YWxpZGF0 ZSh2YWx1ZSwgZmllbGQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgICBjYXNlICdudW1lcmljJzoKKyAgICAgICAgICAgICAgICBt c2cgPSB0aGlzLm51bWJlcl92YWxpZGF0ZSh2YWx1ZSwgZmllbGQpOworICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBpZiAobXNnKSB7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC5zZXQoZmllbGQuaWQsIG1zZyk7CisgICAgICAgICAgICAgIHJldHVybiBt c2c7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwudW5zZXQoZmllbGQuaWQpOworICAgICAgICAgICAgfQor ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZmllbGQpIHsK KyAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KGZpZWxkLmlk KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAg ICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9LAorCisgICAgICBjaGVja19t aW5fbWF4OiBmdW5jdGlvbiAodmFsdWUsIGZpZWxkKSB7CisgICAgICAgIHZh ciBsYWJlbCA9IGZpZWxkLmxhYmVsLAorICAgICAgICAgICAgbWluX3ZhbHVl ID0gZmllbGQubWluLAorICAgICAgICAgICAgbWF4X3ZhbHVlID0gIGZpZWxk Lm1heDsKKworICAgICAgICBpZiAobWluX3ZhbHVlICYmIHZhbHVlIDwgbWlu X3ZhbHVlKSB7CisgICAgICAgICAgcmV0dXJuIFMocGdBZG1pbi5Ccm93c2Vy Lm1lc3NhZ2VzLk1VU1RfR1JfRVEpLnNwcmludGYobGFiZWwsIG1pbl92YWx1 ZSkudmFsdWUoKTsKKyAgICAgICAgfSBlbHNlIGlmIChtYXhfdmFsdWUgJiYg dmFsdWUgPiBtYXhfdmFsdWUpIHsKKyAgICAgICAgICByZXR1cm4gUyhwZ0Fk bWluLkJyb3dzZXIubWVzc2FnZXMuTVVTVF9MRVNTX0VRKS5zcHJpbnRmKGxh YmVsLCBtYXhfdmFsdWUpLnZhbHVlKCk7CisgICAgICAgIH0KKyAgICAgICAg cmV0dXJuIG51bGw7CisgICAgICB9LAorICAgICAgbnVtYmVyX3ZhbGlkYXRl OiBmdW5jdGlvbiAodmFsdWUsIGZpZWxkKSB7CisgICAgICAgIHZhciBwYXR0 ZXJuID0gbmV3IFJlZ0V4cCgiXi0/WzAtOV0rKFwuP1swLTldKik/JCIpOwor ICAgICAgICBpZiAoIXBhdHRlcm4udGVzdCh2YWx1ZSkpIHsKKyAgICAgICAg ICByZXR1cm4gUyhwZ0FkbWluLkJyb3dzZXIubWVzc2FnZXMuTVVTVF9CRV9O VU0pLnNwcmludGYoZmllbGQubGFiZWwpLnZhbHVlKCkKKyAgICAgICAgfQor ICAgICAgICByZXR1cm4gdGhpcy5jaGVja19taW5fbWF4KHZhbHVlLCBmaWVs ZCkKKyAgICAgIH0sCisgICAgICBpbnRlZ2VyX3ZhbGlkYXRlOiBmdW5jdGlv bih2YWx1ZSwgZmllbGQpIHsKKyAgICAgICAgdmFyIHBhdHRlcm4gPSBuZXcg UmVnRXhwKCJeLT9bMC05XSokIik7CisgICAgICAgIGlmICghcGF0dGVybi50 ZXN0KHZhbHVlKSkgeworICAgICAgICAgIHJldHVybiBTKHBnQWRtaW4uQnJv d3Nlci5tZXNzYWdlcy5NVVNUX0JFX0lOVCkuc3ByaW50ZihmaWVsZC5sYWJl bCkudmFsdWUoKQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLmNo ZWNrX21pbl9tYXgodmFsdWUsIGZpZWxkKQogICAgICAgfQogICAgIH0pOwog CkBAIC02OTYsNyArODEyLDggQEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwg QmFja2JvbmUpIHsKICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgICB9LAog ICAgICAgc3RhcnROZXdTZXNzaW9uOiBmdW5jdGlvbigpIHsKLSAgICAgICAg dmFyIHNlbGYgPSB0aGlzOworICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisg ICAgICAgICAgICBtc2c7CiAKICAgICAgICAgaWYgKHNlbGYudHJhY2tDaGFu Z2VzKSB7CiAgICAgICAgICAgLy8gV2UncmUgc3RvcHBpbmcgdGhlIGV4aXN0 aW5nIHNlc3Npb24uCkBAIC03MTgsOCArODM1LDE1IEBAIGZ1bmN0aW9uKF8s IHBnQWRtaW4sICQsIEJhY2tib25lKSB7CiAgICAgICAgICAgaWYgKCdzdGFy dE5ld1Nlc3Npb24nIGluIG0gJiYgXy5pc0Z1bmN0aW9uKG0uc3RhcnROZXdT ZXNzaW9uKSkgewogICAgICAgICAgICAgbS5zdGFydE5ld1Nlc3Npb24oKTsK ICAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKCd2YWxpZGF0ZScgaW4gbSAm JiB0eXBlb2YobS52YWxpZGF0ZSkgPT09ICdmdW5jdGlvbicpIHsKLSAgICAg ICAgICAgIHZhciBtc2cgPSBtLnZhbGlkYXRlKCk7CisKKyAgICAgICAgICBp ZiAoJ2RlZmF1bHRfdmFsaWRhdGUnIGluIG0gJiYgdHlwZW9mKG0uZGVmYXVs dF92YWxpZGF0ZSkgPT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgICAgbXNn ID0gbS5kZWZhdWx0X3ZhbGlkYXRlKCk7CisgICAgICAgICAgfQorCisgICAg ICAgICAgaWYgKF8uaXNTdHJpbmcobXNnKSkgeworICAgICAgICAgICAgc2Vs Zi5zZXNzQXR0cnNbJ2ludmFsaWQnXVttLmNpZF0gPSBtc2c7CisgICAgICAg ICAgfSBlbHNlIGlmICgndmFsaWRhdGUnIGluIG0gJiYgdHlwZW9mKG0udmFs aWRhdGUpID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAgICAgICBtc2cgPSBt LnZhbGlkYXRlKCk7CiAKICAgICAgICAgICAgIGlmIChtc2cpIHsKICAgICAg ICAgICAgICAgc2VsZi5zZXNzQXR0cnNbJ2ludmFsaWQnXVttLmNpZF0gPSBt c2c7CkBAIC05MDAsNyArMTAyNCwxNCBAQCBmdW5jdGlvbihfLCBwZ0FkbWlu LCAkLCBCYWNrYm9uZSkgewogCiAgICAgICAgICAgKHNlbGYuaGFuZGxlciB8 fCBzZWxmKS50cmlnZ2VyKCdwZ2FkbWluLXNlc3Npb246YWRkZWQnLCBzZWxm LCBvYmopOwogCi0gICAgICAgICAgaWYgKCd2YWxpZGF0ZScgaW4gb2JqICYm IHR5cGVvZihvYmoudmFsaWRhdGUpID09PSAnZnVuY3Rpb24nKSB7CisKKyAg ICAgICAgICBpZiAoJ2RlZmF1bHRfdmFsaWRhdGUnIGluIG9iaiAmJiB0eXBl b2Yob2JqLmRlZmF1bHRfdmFsaWRhdGUpID09ICdmdW5jdGlvbicpIHsKKyAg ICAgICAgICAgIG1zZyA9IG9iai5kZWZhdWx0X3ZhbGlkYXRlKCk7CisgICAg ICAgICAgfQorCisgICAgICAgICAgaWYgKF8uaXNTdHJpbmcobXNnKSkgewor ICAgICAgICAgICAgKHNlbGYuc2Vzc0F0dHJzWydpbnZhbGlkJ10pW29iai5j aWRdID0gbXNnOworICAgICAgICAgIH0gZWxzZSBpZiAoJ3ZhbGlkYXRlJyBp biBvYmogJiYgdHlwZW9mKG9iai52YWxpZGF0ZSkgPT09ICdmdW5jdGlvbicp IHsKICAgICAgICAgICAgIG1zZyA9IG9iai52YWxpZGF0ZSgpOwogCiAgICAg ICAgICAgICBpZiAobXNnKSB7CkBAIC05MDgsNyArMTAzOSwxNCBAQCBmdW5j dGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9uZSkgewogICAgICAgICAgICAg fQogICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBp ZiAoJ3ZhbGlkYXRlJyBpbiBvYmogJiYgdHlwZW9mKG9iai52YWxpZGF0ZSkg PT09ICdmdW5jdGlvbicpIHsKKworICAgICAgICAgIGlmICgnZGVmYXVsdF92 YWxpZGF0ZScgaW4gb2JqICYmIHR5cGVvZihvYmouZGVmYXVsdF92YWxpZGF0 ZSkgPT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgICAgbXNnID0gb2JqLmRl ZmF1bHRfdmFsaWRhdGUoKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBp ZiAoXy5pc1N0cmluZyhtc2cpKSB7CisgICAgICAgICAgICAoc2VsZi5zZXNz QXR0cnNbJ2ludmFsaWQnXSlbb2JqLmNpZF0gPSBtc2c7CisgICAgICAgICAg fSBlbHNlIGlmICgndmFsaWRhdGUnIGluIG9iaiAmJiB0eXBlb2Yob2JqLnZh bGlkYXRlKSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgbXNnID0g b2JqLnZhbGlkYXRlKCk7CiAKICAgICAgICAgICAgIGlmIChtc2cpIHsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2Fk bWluLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRt aW4uanMKaW5kZXggNTUzNjc2ZS4uMTM4MjNiNyAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKKysrIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKQEAg LTU3LDcgKzU3LDcgQEAKICAgICB9KTsKIAogICB2YXIgY29udHJvbE1hcHBl ciA9IEJhY2tmb3JtLmNvbnRyb2xNYXBwZXIgPSB7Ci0gICAgJ2ludCc6IFsn dW5lZGl0YWJsZS1pbnB1dCcsICdpbnRlZ2VyJywgJ2ludGVnZXInXSwKKyAg ICAnaW50JzogWyd1bmVkaXRhYmxlLWlucHV0JywgJ251bWVyaWMnLCAnbnVt ZXJpYyddLAogICAgICd0ZXh0JzogWyd1bmVkaXRhYmxlLWlucHV0JywgJ2lu cHV0JywgJ3N0cmluZyddLAogICAgICdudW1lcmljJzogWyd1bmVkaXRhYmxl LWlucHV0JywgJ251bWVyaWMnLCAnbnVtZXJpYyddLAogICAgICdkYXRlJzog J2RhdGVwaWNrZXInLApAQCAtMTQ5MywxMDkgKzE0OTMsNiBAQAogICAgIH0K IH0pOwogCi0gIC8qCi0gICAqIEludGVnZXIgaW5wdXQgQ29udHJvbCBmdW5j dGlvbmFsaXR5IGp1c3QgbGlrZSBiYWNrZ3JpZAotICAgKi8KLSAgdmFyIElu dGVnZXJDb250cm9sID0gQmFja2Zvcm0uSW50ZWdlckNvbnRyb2wgPSBCYWNr Zm9ybS5JbnB1dENvbnRyb2wuZXh0ZW5kKHsKLSAgICBkZWZhdWx0czogewot ICAgICAgdHlwZTogIm51bWJlciIsCi0gICAgICBsYWJlbDogIiIsCi0gICAg ICBtaW46IHVuZGVmaW5lZCwKLSAgICAgIG1heDogdW5kZWZpbmVkLAotICAg ICAgbWF4bGVuZ3RoOiAyNTUsCi0gICAgICBleHRyYUNsYXNzZXM6IFtdLAot ICAgICAgaGVscE1lc3NhZ2U6IG51bGwKLSAgICB9LAotICAgIHRlbXBsYXRl OiBfLnRlbXBsYXRlKFsKLSAgICAgICc8bGFiZWwgY2xhc3M9IjwlPUJhY2tm b3JtLmNvbnRyb2xMYWJlbENsYXNzTmFtZSU+Ij48JT1sYWJlbCU+PC9sYWJl bD4nLAotICAgICAgJzxkaXYgY2xhc3M9IjwlPUJhY2tmb3JtLmNvbnRyb2xz Q2xhc3NOYW1lJT4iPicsCi0gICAgICAnICA8aW5wdXQgdHlwZT0iPCU9dHlw ZSU+IiBjbGFzcz0iPCU9QmFja2Zvcm0uY29udHJvbENsYXNzTmFtZSU+IDwl PWV4dHJhQ2xhc3Nlcy5qb2luKFwnIFwnKSU+IiBuYW1lPSI8JT1uYW1lJT4i IG1pbj0iPCU9bWluJT4iIG1heD0iPCU9bWF4JT4ibWF4bGVuZ3RoPSI8JT1t YXhsZW5ndGglPiIgdmFsdWU9IjwlLXZhbHVlJT4iIHBsYWNlaG9sZGVyPSI8 JS1wbGFjZWhvbGRlciU+IiA8JT1kaXNhYmxlZCA/ICJkaXNhYmxlZCIgOiAi IiU+IDwlPXJlcXVpcmVkID8gInJlcXVpcmVkIiA6ICIiJT4gLz4nLAotICAg ICAgJyAgPCUgaWYgKGhlbHBNZXNzYWdlICYmIGhlbHBNZXNzYWdlLmxlbmd0 aCkgeyAlPicsCi0gICAgICAnICAgIDxzcGFuIGNsYXNzPSI8JT1CYWNrZm9y bS5oZWxwTWVzc2FnZUNsYXNzTmFtZSU+Ij48JT1oZWxwTWVzc2FnZSU+PC9z cGFuPicsCi0gICAgICAnICA8JSB9ICU+JywKLSAgICAgICc8L2Rpdj4nCi0g ICAgXS5qb2luKCJcbiIpKSwKLSAgICBldmVudHM6IHsKLSAgICAgICJjaGFu Z2UgaW5wdXQiOiAiY2hlY2tJbnQiLAotICAgICAgImZvY3VzIGlucHV0Ijog ImNsZWFySW52YWxpZCIKLSAgICB9LAotICAgIGNoZWNrSW50OiBmdW5jdGlv bihlKSB7Ci0gICAgICB2YXIgZmllbGQgPSBfLmRlZmF1bHRzKHRoaXMuZmll bGQudG9KU09OKCksIHRoaXMuZGVmYXVsdHMpLAotICAgICAgICAgIGF0dHJB cnIgPSB0aGlzLmZpZWxkLmdldCgibmFtZSIpLnNwbGl0KCcuJyksCi0gICAg ICAgICAgbmFtZSA9IGF0dHJBcnIuc2hpZnQoKSwKLSAgICAgICAgICB2YWx1 ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tRE9NKCksCi0gICAgICAgICAgbWluX3Zh bHVlID0gZmllbGQubWluLAotICAgICAgICAgIG1heF92YWx1ZSA9IGZpZWxk Lm1heCwKLSAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZSwKLSAgICAgICAgICBp bnRQYXR0ZXJuID0gbmV3IFJlZ0V4cCgiXi0/WzAtOV0qJCIpLAotICAgICAg ICAgIGlzTWF0Y2hlZCA9IGludFBhdHRlcm4udGVzdCh2YWx1ZSk7Ci0KLSAg ICAgIC8vIEJlbG93IGxvZ2ljIHdpbGwgdmFsaWRhdGUgaW5wdXQKLSAgICAg IGlmICghaXNNYXRjaGVkKSB7Ci0gICAgICAgIGlzVmFsaWQgPSBmYWxzZTsK LSAgICAgICAgdGhpcy5tb2RlbC5lcnJvck1vZGVsLnVuc2V0KG5hbWUpOwot ICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwuc2V0KAotICAgICAgICAg ICAgbmFtZSwKLSAgICAgICAgICAgIFMocGdBZG1pbi5Ccm93c2VyLm1lc3Nh Z2VzLk1VU1RfQkVfSU5UKS5zcHJpbnRmKAotICAgICAgICAgICAgICBmaWVs ZC5sYWJlbAotICAgICAgICAgICAgICApLnZhbHVlKCkKLSAgICAgICAgICAg ICk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEJlbG93IHdpbGwgY2hlY2sgaWYg ZW50ZXJlZCB2YWx1ZSBpcyBpbi1iZXR3ZWVuIG1pbiAmIG1heCByYW5nZQot ICAgICAgaWYgKGlzVmFsaWQgJiYgKCFfLmlzVW5kZWZpbmVkKG1pbl92YWx1 ZSkgJiYgdmFsdWUgPCBtaW5fdmFsdWUpKSB7Ci0gICAgICAgIGlzVmFsaWQg PSBmYWxzZTsKLSAgICAgICAgdGhpcy5tb2RlbC5lcnJvck1vZGVsLnVuc2V0 KG5hbWUpOwotICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwuc2V0KAot ICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgIFMocGdBZG1pbi5Ccm93 c2VyLm1lc3NhZ2VzLk1VU1RfR1JfRVEpLnNwcmludGYoCi0gICAgICAgICAg ICAgIGZpZWxkLmxhYmVsLAotICAgICAgICAgICAgICBtaW5fdmFsdWUKLSAg ICAgICAgICAgICAgKS52YWx1ZSgpCi0gICAgICAgICAgICApOwotICAgICAg fQotCi0gICAgICBpZiAoaXNWYWxpZCAmJiAoIV8uaXNVbmRlZmluZWQobWF4 X3ZhbHVlKSAmJiB2YWx1ZSA+IG1heF92YWx1ZSkpIHsKLSAgICAgICAgaXNW YWxpZCA9IGZhbHNlOwotICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwu dW5zZXQobmFtZSk7Ci0gICAgICAgIHRoaXMubW9kZWwuZXJyb3JNb2RlbC5z ZXQoCi0gICAgICAgICAgICBuYW1lLAotICAgICAgICAgICAgUyhwZ0FkbWlu LkJyb3dzZXIubWVzc2FnZXMuTVVTVF9MRVNTX0VRKS5zcHJpbnRmKAotICAg ICAgICAgICAgICBmaWVsZC5sYWJlbCwKLSAgICAgICAgICAgICAgbWF4X3Zh bHVlCi0gICAgICAgICAgICAgICkudmFsdWUoKQotICAgICAgICAgICAgKTsK LSAgICAgIH0KLQotICAgICAgLy8gQWZ0ZXIgdmFsaWRhdGlvbiB3ZSBuZWVk IHRvIHNldCB0aGF0IHZhbHVlIGludG8gbW9kZWwgKG9ubHkgaWYgYWxsIGZs YWdzIGFyZSB0cnVlKQotICAgICAgaWYgKGlzVmFsaWQpIHsKLSAgICAgICAg dGhpcy5zdG9wTGlzdGVuaW5nKHRoaXMubW9kZWwsICJjaGFuZ2U6IiArIG5h bWUsIHRoaXMucmVuZGVyKTsKLSAgICAgICAgdGhpcy5tb2RlbC5lcnJvck1v ZGVsLnVuc2V0KG5hbWUpOwotICAgICAgICB0aGlzLm1vZGVsLnNldChuYW1l LCB2YWx1ZSk7Ci0gICAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5tb2RlbCwg ImNoYW5nZToiICsgbmFtZSwgdGhpcy5yZW5kZXIpOwotICAgICAgICBpZiAo dGhpcy5tb2RlbC5jb2xsZWN0aW9uIHx8IHRoaXMubW9kZWwuaGFuZGxlcikg ewotICAgICAgICAgICh0aGlzLm1vZGVsLmNvbGxlY3Rpb24gfHwgdGhpcy5t b2RlbC5oYW5kbGVyKS50cmlnZ2VyKAotICAgICAgICAgICAgICdwZ2FkbWlu LXNlc3Npb246bW9kZWw6dmFsaWQnLCB0aGlzLm1vZGVsLCAodGhpcy5tb2Rl bC5jb2xsZWN0aW9uIHx8IHRoaXMubW9kZWwuaGFuZGxlcikKLSAgICAgICAg ICAgICk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgKHRoaXMubW9k ZWwpLnRyaWdnZXIoCi0gICAgICAgICAgICAgJ3BnYWRtaW4tc2Vzc2lvbjp2 YWxpZCcsIHRoaXMubW9kZWwuc2Vzc0NoYW5nZWQoKSwgdGhpcy5tb2RlbAot ICAgICAgICAgICAgKTsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAg ICAgICAgaWYgKHRoaXMubW9kZWwuY29sbGVjdGlvbiB8fCB0aGlzLm1vZGVs LmhhbmRsZXIpIHsKLSAgICAgICAgICAodGhpcy5tb2RlbC5jb2xsZWN0aW9u IHx8IHRoaXMubW9kZWwuaGFuZGxlcikudHJpZ2dlcigKLSAgICAgICAgICAg ICAncGdhZG1pbi1zZXNzaW9uOm1vZGVsOmludmFsaWQnLCB0aGlzLm1vZGVs LmVycm9yTW9kZWwuZ2V0KG5hbWUpLCB0aGlzLm1vZGVsCi0gICAgICAgICAg ICApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICh0aGlzLm1vZGVs KS50cmlnZ2VyKAotICAgICAgICAgICAgICdwZ2FkbWluLXNlc3Npb246aW52 YWxpZCcsIHRoaXMubW9kZWwuZXJyb3JNb2RlbC5nZXQobmFtZSksIHRoaXMu bW9kZWwKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAg ICB9Ci0gIH0pOwotCiAgICAvKgogICAgKiBOdW1lcmljIGlucHV0IENvbnRy b2wgZnVuY3Rpb25hbGl0eSBqdXN0IGxpa2UgYmFja2dyaWQKICAgICovCkBA IC0xNjE3LDg2ICsxNTE0LDcgQEAKICAgICAgICcgICAgPHNwYW4gY2xhc3M9 IjwlPUJhY2tmb3JtLmhlbHBNZXNzYWdlQ2xhc3NOYW1lJT4iPjwlPWhlbHBN ZXNzYWdlJT48L3NwYW4+JywKICAgICAgICcgIDwlIH0gJT4nLAogICAgICAg JzwvZGl2PicKLSAgICBdLmpvaW4oIlxuIikpLAotICAgIGV2ZW50czogewot ICAgICAgImNoYW5nZSBpbnB1dCI6ICJjaGVja051bWVyaWMiLAotICAgICAg ImZvY3VzIGlucHV0IjogImNsZWFySW52YWxpZCIKLSAgICB9LAotICAgIGNo ZWNrTnVtZXJpYzogZnVuY3Rpb24oZSkgewotICAgICAgdmFyIGZpZWxkID0g Xy5kZWZhdWx0cyh0aGlzLmZpZWxkLnRvSlNPTigpLCB0aGlzLmRlZmF1bHRz KSwKLSAgICAgICAgICBhdHRyQXJyID0gdGhpcy5maWVsZC5nZXQoIm5hbWUi KS5zcGxpdCgnLicpLAotICAgICAgICAgIG5hbWUgPSBhdHRyQXJyLnNoaWZ0 KCksCi0gICAgICAgICAgdmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbURPTSgp LAotICAgICAgICAgIG1pbl92YWx1ZSA9IGZpZWxkLm1pbiwKLSAgICAgICAg ICBtYXhfdmFsdWUgPSBmaWVsZC5tYXgsCi0gICAgICAgICAgaXNWYWxpZCA9 IHRydWUsCi0gICAgICAgICAgaW50UGF0dGVybiA9IG5ldyBSZWdFeHAoIl4t P1swLTldKyhcLj9bMC05XSopPyQiKSwKLSAgICAgICAgICBpc01hdGNoZWQg PSBpbnRQYXR0ZXJuLnRlc3QodmFsdWUpOwotCi0gICAgICAvLyBCZWxvdyBs b2dpYyB3aWxsIHZhbGlkYXRlIGlucHV0Ci0gICAgICBpZiAoIWlzTWF0Y2hl ZCkgewotICAgICAgICBpc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHRoaXMu bW9kZWwuZXJyb3JNb2RlbC51bnNldChuYW1lKTsKLSAgICAgICAgdGhpcy5t b2RlbC5lcnJvck1vZGVsLnNldCgKLSAgICAgICAgICAgIG5hbWUsCi0gICAg ICAgICAgICBTKHBnQWRtaW4uQnJvd3Nlci5tZXNzYWdlcy5NVVNUX0JFX05V TSkuc3ByaW50ZigKLSAgICAgICAgICAgICAgZmllbGQubGFiZWwKLSAgICAg ICAgICAgICAgKS52YWx1ZSgpCi0gICAgICAgICAgICApOwotICAgICAgfQot Ci0gICAgICAvLyBCZWxvdyB3aWxsIGNoZWNrIGlmIGVudGVyZWQgdmFsdWUg aXMgaW4tYmV0d2VlbiBtaW4gJiBtYXggcmFuZ2UKLSAgICAgIGlmIChpc1Zh bGlkICYmICghXy5pc1VuZGVmaW5lZChtaW5fdmFsdWUpICYmIHZhbHVlIDwg bWluX3ZhbHVlKSkgewotICAgICAgICBpc1ZhbGlkID0gZmFsc2U7Ci0gICAg ICAgIHRoaXMubW9kZWwuZXJyb3JNb2RlbC51bnNldChuYW1lKTsKLSAgICAg ICAgdGhpcy5tb2RlbC5lcnJvck1vZGVsLnNldCgKLSAgICAgICAgICAgIG5h bWUsCi0gICAgICAgICAgICBTKHBnQWRtaW4uQnJvd3Nlci5tZXNzYWdlcy5N VVNUX0dSX0VRKS5zcHJpbnRmKAotICAgICAgICAgICAgICBmaWVsZC5sYWJl bCwKLSAgICAgICAgICAgICAgbWluX3ZhbHVlCi0gICAgICAgICAgICAgICku dmFsdWUoKQotICAgICAgICAgICAgKTsKLSAgICAgIH0KLQotICAgICAgaWYg KGlzVmFsaWQgJiYgKCFfLmlzVW5kZWZpbmVkKG1heF92YWx1ZSkgJiYgdmFs dWUgPiBtYXhfdmFsdWUpKSB7Ci0gICAgICAgIGlzVmFsaWQgPSBmYWxzZTsK LSAgICAgICAgdGhpcy5tb2RlbC5lcnJvck1vZGVsLnVuc2V0KG5hbWUpOwot ICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwuc2V0KAotICAgICAgICAg ICAgbmFtZSwKLSAgICAgICAgICAgIFMocGdBZG1pbi5Ccm93c2VyLm1lc3Nh Z2VzLk1VU1RfTEVTU19FUSkuc3ByaW50ZigKLSAgICAgICAgICAgICAgZmll bGQubGFiZWwsCi0gICAgICAgICAgICAgIG1heF92YWx1ZQotICAgICAgICAg ICAgICApLnZhbHVlKCkKLSAgICAgICAgICAgICk7Ci0gICAgICB9Ci0KLSAg ICAgIC8vIEFmdGVyIHZhbGlkYXRpb24gd2UgbmVlZCB0byBzZXQgdGhhdCB2 YWx1ZSBpbnRvIG1vZGVsIChvbmx5IGlmIGFsbCBmbGFncyBhcmUgdHJ1ZSkK LSAgICAgIGlmIChpc1ZhbGlkKSB7Ci0gICAgICAgIHRoaXMuc3RvcExpc3Rl bmluZyh0aGlzLm1vZGVsLCAiY2hhbmdlOiIgKyBuYW1lLCB0aGlzLnJlbmRl cik7Ci0gICAgICAgIHRoaXMubW9kZWwuZXJyb3JNb2RlbC51bnNldChuYW1l KTsKLSAgICAgICAgdGhpcy5tb2RlbC5zZXQobmFtZSwgdmFsdWUpOwotICAg ICAgICB0aGlzLmxpc3RlblRvKHRoaXMubW9kZWwsICJjaGFuZ2U6IiArIG5h bWUsIHRoaXMucmVuZGVyKTsKLSAgICAgICAgaWYgKHRoaXMubW9kZWwuY29s bGVjdGlvbiB8fCB0aGlzLm1vZGVsLmhhbmRsZXIpIHsKLSAgICAgICAgICAo dGhpcy5tb2RlbC5jb2xsZWN0aW9uIHx8IHRoaXMubW9kZWwuaGFuZGxlciku dHJpZ2dlcigKLSAgICAgICAgICAgICAncGdhZG1pbi1zZXNzaW9uOm1vZGVs OnZhbGlkJywgdGhpcy5tb2RlbCwgKHRoaXMubW9kZWwuY29sbGVjdGlvbiB8 fCB0aGlzLm1vZGVsLmhhbmRsZXIpCi0gICAgICAgICAgICApOwotICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICh0aGlzLm1vZGVsKS50cmlnZ2VyKAot ICAgICAgICAgICAgICdwZ2FkbWluLXNlc3Npb246dmFsaWQnLCB0aGlzLm1v ZGVsLnNlc3NDaGFuZ2VkKCksIHRoaXMubW9kZWwKLSAgICAgICAgICAgICk7 Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh0aGlz Lm1vZGVsLmNvbGxlY3Rpb24gfHwgdGhpcy5tb2RlbC5oYW5kbGVyKSB7Ci0g ICAgICAgICAgKHRoaXMubW9kZWwuY29sbGVjdGlvbiB8fCB0aGlzLm1vZGVs LmhhbmRsZXIpLnRyaWdnZXIoCi0gICAgICAgICAgICAgJ3BnYWRtaW4tc2Vz c2lvbjptb2RlbDppbnZhbGlkJywgdGhpcy5tb2RlbC5lcnJvck1vZGVsLmdl dChuYW1lKSwgdGhpcy5tb2RlbAotICAgICAgICAgICAgKTsKLSAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICAodGhpcy5tb2RlbCkudHJpZ2dlcigKLSAg ICAgICAgICAgICAncGdhZG1pbi1zZXNzaW9uOmludmFsaWQnLCB0aGlzLm1v ZGVsLmVycm9yTW9kZWwuZ2V0KG5hbWUpLCB0aGlzLm1vZGVsCi0gICAgICAg ICAgICApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQorICAgIF0uam9p bigiXG4iKSkKICAgfSk7CiAKICAgLy8vLy8vLwo= --001a1140f16e48eb4e055144eb1e 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 --001a1140f16e48eb4e055144eb1e--