Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bP4uj-0005tw-U7 for pgadmin-hackers@arkaria.postgresql.org; Mon, 18 Jul 2016 09:32:38 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bP4uj-0001MJ-Bq for pgadmin-hackers@arkaria.postgresql.org; Mon, 18 Jul 2016 09:32:37 +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 1bP4uU-000180-DF for pgadmin-hackers@postgresql.org; Mon, 18 Jul 2016 09:32:22 +0000 Received: from mail-oi0-x230.google.com ([2607:f8b0:4003:c06::230]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1bP4uN-0002ZZ-FK for pgadmin-hackers@postgresql.org; Mon, 18 Jul 2016 09:32:21 +0000 Received: by mail-oi0-x230.google.com with SMTP id j185so237754207oih.0 for ; Mon, 18 Jul 2016 02:32:15 -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=MKP846znizBFRasuAWuNGnsTEQ+DKRcu+/TieKA3zrc=; b=dNpbB1B/osFlrpBGln96fTxsP/xx1vDKZtsl+YWpAGqoubgV4oB9Zzcpn0ioSnLNmZ 3M2iMI+psx6TMXjKXqqRufYGc85sNoChRL7q88v6F+bu8Pja8JtikX9L5ErgcrsGD4F1 3dNOgEW3mVi8goK8mtisaWgB5RWsR8Hn7sy5Sj1HrUJYOyGRPtaZYIh6N7TUNjq35ggW vy6pswqecf20NUVFHY6Umt2hG+wTHIkihjRl/TQK9GUzalMuScJJ2pjZl8f4WrWj7K8D qJUGj+wc2WRUK3q7V+6Q5kcgd+hrNi8B0y0Kveil6hIZWA6snEJLICl1EN4sqWTNKnHu vLUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=MKP846znizBFRasuAWuNGnsTEQ+DKRcu+/TieKA3zrc=; b=Pq5ySk5/P6x6YODQP9VQaWajguKkBf0hk+lyJTynYGbmFAv4QPVrci0+Qknxw4QN2Z HEoj4uW9IDUFtawyJezawbu0AbXvAi2J1r6fpvWMYBi/dQYz70SiEl6VxfHnm+SLIXPq Ex6PpiVqNwE21q3s2WVlKLREGRghS/fcI2/DrAiElHelY3eps4JBMn9pq/UNAQKh1kvv rurc9TZBITDdCiflYTcLzq1RvodTEoFygXMfIF9q+n538kx0glrBxmlB6AyI1gxjvRkS 3YyeOyUfGHvVr+K01T+0x2ngtS/zTAYToEwzhClfYXmUvqQv0SWPYIGlwcHhn3x8/2N5 semA== X-Gm-Message-State: ALyK8tJU96LwAIu+8sZmBIxW0eAJZt4oixcsaU/b0U6gAajhynd9VnLmLz1WCPt122Q92VP29z3zTRA97QBR6JoM X-Received: by 10.157.19.98 with SMTP id q31mr19508600otq.125.1468834333419; Mon, 18 Jul 2016 02:32:13 -0700 (PDT) MIME-Version: 1.0 Received: by 10.157.5.99 with HTTP; Mon, 18 Jul 2016 02:32:12 -0700 (PDT) In-Reply-To: References: From: Harshal Dhumal Date: Mon, 18 Jul 2016 15:02:12 +0530 Message-ID: Subject: Re: Regarding issue 1241 To: Ashesh Vashi Cc: Dave Page , pgadmin-hackers Content-Type: multipart/mixed; boundary=001a1135177aad95450537e5a45b 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 --001a1135177aad95450537e5a45b Content-Type: multipart/alternative; boundary=001a1135177aad953f0537e5a459 --001a1135177aad953f0537e5a459 Content-Type: text/plain; charset=UTF-8 Hi, PFA patch for issue RM1241 Changes: 1. Altered variable control to make its UI consistence with privileges and Security labels. 2. Changed datamodel.js to handle duplicate rows at datamodel level and not UI/Control level. (See variable control for example) -- *Harshal Dhumal* *Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Wed, Jun 15, 2016 at 7:57 PM, Ashesh Vashi wrote: > On Wed, Jun 15, 2016 at 7:24 PM, Dave Page wrote: > >> >> >> On Wed, Jun 15, 2016 at 2:08 PM, Ashesh Vashi < >> ashesh.vashi@enterprisedb.com> wrote: >> >>> On Wed, Jun 15, 2016 at 6:25 PM, Dave Page wrote: >>> >>>> On Wed, Jun 15, 2016 at 1:49 PM, Ashesh Vashi >>>> wrote: >>>> > On Thu, Jun 2, 2016 at 1:59 PM, Dave Page wrote: >>>> >> >>>> >> >>>> >> >>>> >> On Tue, May 31, 2016 at 8:53 PM, Harshal Dhumal >>>> >> wrote: >>>> >>> >>>> >>> Hi Dave, >>>> >>> >>>> >>> Regarding Issue 1241: >>>> >>> >>>> >>> We have added header section for parameter tab deliberately so that >>>> we >>>> >>> can force user to select parameter name (and therefore parameter's >>>> data >>>> >>> type) before adding new row. This is required because behavior of >>>> second >>>> >>> cell (Value cell) is dependent on what parameter name user has >>>> selected in >>>> >>> first cell (Name cell). See attached screen-shot. >>>> >>> >>>> >>> For example: >>>> >>> 1. If user selects parameter 'array_nulls' then value for this >>>> should be >>>> >>> either true or false (and hence switch cell). >>>> >>> 2. If user selects parameter 'cpu_index_tuple_cost' then value for >>>> this >>>> >>> should be Integer (and hence Integer cell). >>>> >>> >>>> >>> Without the custom header (and forcing user to select parameter) we >>>> >>> cannot decide what type of cell we need in second column. >>>> >>> >>>> >>> Let me know your opinion on this. >>>> >> >>>> >> >>>> >> We need to figure out a way to fix it. Our difficulties encountered >>>> >> writing code should not dictate usability compromises. >>>> >> >>>> >> In this case, something that needs some thought and maybe some >>>> tricky code >>>> >> has caused us to create an inconsistent UI workflow to side-step the >>>> >> problem, which is not appropriate as it leads to a poor look and >>>> feel and >>>> >> potentially confusion for the user. >>>> > >>>> > Agree - we should handle these cases gracefully. >>>> > We need to over come the limitation by brain storming, which we >>>> already >>>> > started offline. :-) >>>> > >>>> > To be honest - it is a time consuming work, and there is no quick fix >>>> for >>>> > this. >>>> > We can handle it as one case for each change instead of targeting all >>>> UI >>>> > changes as one whole problem. >>>> > And, we can utilize the same time to fix a lot more cases in beta 2. >>>> >>>> As far as I'm aware, this is the only case where there's a real problem. >>>> >>>> > I can ask Harshal to find out all possible places, where the similar >>>> changes >>>> > are required, and create a separate case for each (though - not >>>> without your >>>> > agreement). >>>> >>>> I don't think we need to. This one sub-node grid (parameters) is the >>>> only one that I've seen where we deviate from the intended design - >>>> and I think I've seen them all now! >>>> >>> Hmm.. >>> >>> Unfortunately - some set of columns needs to be unique in most of the >>> cases (where these controls are used), and the checks for the unique >>> dataset is done at the control side, which was wrong at our end. >>> And, we will need to change the model validation code to check the >>> uniqueness of data set at data level (through Backbone.Model) now, which >>> will require a lot more changes than it looks. >>> >>> For example - in table node, we have too many UniqueCollControl, which >>> requires these changes. >>> >> >> Perhaps - but I fail to see how this justifies the different UI design >> for this one use. Are we talking about the same thing? >> > Yes - we do. > It is not change in the design of the UI control, but - we will need to > replace simplified subnode control (which is already present in the > system), and make the validation check in each of the data model one at a > time. > > We need to keep the UI at other place, until we fix the data validation > part at each of those places. > We will remove the UniqueColControl once we complete all these changes. > > That's why - I said it was mistake to do the validation in Control rather > than the data (Backbone.Model). > > > -- > Thanks & Regards, > Ashesh Vashi > > >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --001a1135177aad953f0537e5a459 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA patch for issue RM1241=

Changes: 1. Altered variable control to make its UI consisten= ce with privileges and Security labels.
2. Changed datamodel.js to= handle duplicate rows at datamodel level and not UI/Control level. (See va= riable control for example)



--=C2=A0
Harshal Dhumal
Softwa= re Engineer

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

On Wed, Jun 15, 2016 at 7:57 PM, Ashesh Vash= i <ashesh.vashi@enterprisedb.com> wrote:

On Wed, Jun= 15, 2016 at 7:24 PM, Dave Page <dpage@pgadmin.org> wrote:

<= div class=3D"h5">


On Wed, Jun 15, 2016 at 2:0= 8 PM, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:
<= div>

On Wed, Jun 15, 2016 = at 6:25 PM, Dave Page <dpage@pgadmin.org> wrote:

On Wed, Jun 15, 2016 at 1:49 PM, Ashesh Vashi
<ashe= sh.vashi@enterprisedb.com> wrote:
> On Thu, Jun 2, 2016 at 1:59 PM, Dave Page <dpage@pgadmin.org> wrote:
>>
>>
>>
>> On Tue, May 31, 2016 at 8:53 PM, Harshal Dhumal
>> <harshal.dhumal@enterprisedb.com> wrote:
>>>
>>> Hi Dave,
>>>
>>> Regarding Issue 1241:
>>>
>>> We have added header section for parameter tab deliberately so= that we
>>> can force user to select parameter name (and therefore paramet= er's data
>>> type) before adding new row. This is required because behavior= of second
>>> cell (Value cell) is dependent on what parameter name user has= selected in
>>> first cell (Name cell). See attached screen-shot.
>>>
>>> For example:
>>> 1. If user selects parameter 'array_nulls' then value = for this should be
>>> either true or false (and hence switch cell).
>>> 2. If user selects parameter 'cpu_index_tuple_cost' th= en value for this
>>> should be Integer (and hence Integer cell).
>>>
>>> Without the custom header (and forcing user to select paramete= r) we
>>> cannot decide what type of cell we need in second column.
>>>
>>> Let me know your opinion on this.
>>
>>
>> We need to figure out a way to fix it. Our difficulties encountere= d
>> writing code should not dictate usability compromises.
>>
>> In this case, something that needs some thought and maybe some tri= cky code
>> has caused us to create an inconsistent UI workflow to side-step t= he
>> problem, which is not appropriate as it leads to a poor look and f= eel and
>> potentially confusion for the user.
>
> Agree - we should handle these cases gracefully.
> We need to over come the limitation by brain storming, which we alread= y
> started offline. :-)
>
> To be honest - it is a time consuming work, and there is no quick fix = for
> this.
> We can handle it as one case for each change instead of targeting all = UI
> changes as one whole problem.
> And, we can utilize the same time to fix a lot more cases in beta 2.
As far as I'm aware, this is the only case where there'= s a real problem.

> I can ask Harshal to find out all possible places, where the similar c= hanges
> are required, and create a separate case for each (though - not withou= t your
> agreement).

I don't think we need to. This one sub-node grid (parameters) is= the
only one that I've seen where we deviate from the intended design -
and I think I've seen them all now!
Hm= m..

Unfortunately - some set of columns needs to b= e unique in most of the cases (where these controls are used), and the chec= ks for the unique dataset is done at the control side, which was wrong at o= ur end.
And, we will need to change the model validation code to = check the uniqueness of data set at data level (through Backbone.Model) now= , which will require a lot more changes than it looks.

=
For example - in table node, we have too many UniqueCollControl, which= requires these changes.

Perhaps - but I fail to see how this justifies the differ= ent UI design for this one use. Are we talking about the same thing?=C2=A0<= /div>
Yes - we do.
It is not change in the design of the UI control, but - we will need to re= place simplified subnode control (which is already present in the system), = and make the validation check in each of the data model one at a time.

We need to keep the UI at other place, until we fix th= e data validation part at each of those places.=C2=A0
We will remove t= he UniqueColControl once we complete all these changes.

= That's why - I said it was mistake to do the validation in Control rath= er than the data (Backbone.Model).


--
Thanks & Regards,
Ashesh Vashi<= /div>
=C2=A0

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

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


--001a1135177aad953f0537e5a459-- --001a1135177aad95450537e5a45b Content-Type: text/x-patch; charset=US-ASCII; name="RM1241.patch" Content-Disposition: attachment; filename="RM1241.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iqru06kt0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZW1wbGF0ZXMvZGF0YWJhc2VzL2pzL2Rh dGFiYXNlcy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZW1wbGF0ZXMvZGF0YWJhc2VzL2pzL2Rh dGFiYXNlcy5qcwppbmRleCA2MTY3MWY0Li5mMmE0OWM5IDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvdGVtcGxhdGVzL2RhdGFiYXNlcy9qcy9kYXRhYmFzZXMuanMK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3RlbXBsYXRlcy9kYXRhYmFzZXMvanMvZGF0YWJhc2Vz LmpzCkBAIC0yODQsNyArMjg0LDcgQEAgZnVuY3Rpb24oJCwgXywgUywgcGdB ZG1pbiwgcGdCcm93c2VyLCBBbGVydGlmeSkgewogICAgICAgICAgIGNhbkFk ZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBjb250cm9sOiAndW5pcXVlLWNv bC1jb2xsZWN0aW9uJywKICAgICAgICAgfSx7CiAgICAgICAgICAgaWQ6ICd2 YXJpYWJsZXMnLCBsYWJlbDogJ3t7IF8oJ1BhcmFtZXRlcnMnKSB9fScsIHR5 cGU6ICdjb2xsZWN0aW9uJywKLSAgICAgICAgICBtb2RlbDogcGdCcm93c2Vy Lk5vZGUuVmFyaWFibGVNb2RlbCwgZWRpdGFibGU6IGZhbHNlLAorICAgICAg ICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5WYXJpYWJsZU1vZGVsLmV4dGVu ZCh7a2V5czpbJ25hbWUnLCAncm9sZSddfSksIGVkaXRhYmxlOiBmYWxzZSwK ICAgICAgICAgICBncm91cDogJ3t7IF8oJ1BhcmFtZXRlcnMnKSB9fScsIG1v ZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKICAgICAgICAgICBjYW5BZGQ6IHRy dWUsIGNhbkVkaXQ6IGZhbHNlLCBjYW5EZWxldGU6IHRydWUsIGhhc1JvbGU6 IHRydWUsCiAgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uVmFyaWFibGVD b2xsZWN0aW9uQ29udHJvbCwgbm9kZTogJ3JvbGUnCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xl cy90ZW1wbGF0ZXMvcm9sZS9qcy9yb2xlLmpzIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVtcGxhdGVzL3Jv bGUvanMvcm9sZS5qcwppbmRleCA2NGZkMzJiLi40NDRlOGNhIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9yb2xlcy90ZW1wbGF0ZXMvcm9sZS9qcy9yb2xlLmpzCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rl bXBsYXRlcy9yb2xlL2pzL3JvbGUuanMKQEAgLTQ3Niw3ICs0NzYsOCBAQCBm dW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5 LCBCYWNrZm9ybSkgewogICAgICAgICB9LHsKICAgICAgICAgICBpZDogJ3Zh cmlhYmxlcycsIGxhYmVsOiAne3sgXygnUGFyYW1ldGVycycpIH19JywgdHlw ZTogJ2NvbGxlY3Rpb24nLAogICAgICAgICAgIGdyb3VwOiAne3sgXygnUGFy YW1ldGVycycpIH19JywgaGFzRGF0YWJhc2U6IHRydWUsIHVybDogJ3Zhcmlh YmxlcycsCi0gICAgICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLlZhcmlh YmxlTW9kZWwsIGNvbnRyb2w6ICd2YXJpYWJsZS1jb2xsZWN0aW9uJywKKyAg ICAgICAgICBtb2RlbDogcGdCcm93c2VyLk5vZGUuVmFyaWFibGVNb2RlbC5l eHRlbmQoe2tleXM6WyduYW1lJywgJ2RhdGFiYXNlJ119KSwKKyAgICAgICAg ICBjb250cm9sOiAndmFyaWFibGUtY29sbGVjdGlvbicsCiAgICAgICAgICAg bW9kZTogWyAnZWRpdCcsICdjcmVhdGUnXSwgY2FuQWRkOiB0cnVlLCBjYW5E ZWxldGU6IHRydWUsCiAgICAgICAgICAgdXJsOiAidmFyaWFibGVzIiwgZGlz YWJsZWQ6ICdyZWFkb25seScKICAgICAgICAgfSx7CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9zdGF0 aWMvanMvdmFyaWFibGUuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9zdGF0aWMvanMvdmFyaWFibGUuanMKaW5kZXgg MmQxMzcyOC4uODJiMGFjNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvc3RhdGljL2pzL3ZhcmlhYmxl LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3N0YXRpYy9qcy92YXJpYWJsZS5qcwpAQCAtMjAsNiArMjAsNyBA QAogICAgICAgQWxlcnRpZnkgPSByZXF1aXJlKCdhbGVydGlmeScpIHx8IHJv b3QuQWxlcnRpZnk7CiAgICAgICBwZ0FkbWluID0gcmVxdWlyZSgncGdhZG1p bicpIHx8IHJvb3QucGdBZG1pbiwKICAgICAgIHBnTm9kZSA9IHJlcXVpcmUo J3BnYWRtaW4uYnJvd3Nlci5ub2RlJykgfHwgcm9vdC5wZ0FkbWluLkJyb3dz ZXIuTm9kZTsKKwogICAgIGZhY3Rvcnkocm9vdCwgXywgJCwgQmFja2JvbmUs IEJhY2tmb3JtLCBBbGVydGlmeSwgcGdBZG1pbiwgcGdOb2RlKTsKIAogICAv LyBGaW5hbGx5LCBhcyBhIGJyb3dzZXIgZ2xvYmFsLgpAQCAtMzgsOCArMzks MTcgQEAKICAgdmFyIGNlbGxGdW5jdGlvbiA9IGZ1bmN0aW9uKG1vZGVsKSB7 CiAgICAgdmFyIHNlbGYgPSB0aGlzLAogICAgICAgbmFtZSA9IG1vZGVsLmdl dCgibmFtZSIpLAotICAgICAgYXZhaWxWYXJpYWJsZXMgPSBzZWxmLmdldCgn YXZhaWxWYXJpYWJsZXMnKSwKLSAgICAgIHZhcmlhYmxlID0gYXZhaWxWYXJp YWJsZXNbbmFtZV07CisgICAgICBhdmFpbFZhcmlhYmxlcyA9IHt9OworCisg ICAgc2VsZi5jb2xsZWN0aW9uLmVhY2goZnVuY3Rpb24oY29sKSB7CisgICAg ICBpZiAoY29sLmdldCgibmFtZSIpID09ICJuYW1lIikgeworICAgICAgICBh dmFpbFZhcmlhYmxlcyA9IGNvbC5nZXQoJ2F2YWlsVmFyaWFibGVzJyk7Cisg ICAgICB9CisgICAgfSk7CisKKworICAgIHZhciB2YXJpYWJsZSA9IG5hbWUg PyBhdmFpbFZhcmlhYmxlc1tuYW1lXTogdW5kZWZpbmVkLAorICAgICAgdmFs dWUgPSBtb2RlbC5nZXQoInZhbHVlIik7CiAKICAgICBzd2l0Y2godmFyaWFi bGUgJiYgdmFyaWFibGUudmFydHlwZSkgewogICAgICAgY2FzZSAiYm9vbCI6 CkBAIC00NywxMyArNTcsMTMgQEAKICAgICAgICAgICogYm9vbCBjZWxsIGFu ZCB2YXJpYWJsZSBjYW4gbm90IGJlIHN0YXRlbGVzcyAoaS5lIHVuZGVmaW5l ZCkuCiAgICAgICAgICAqIEl0IHNob3VsZCBiZSBlaXRoZXIgdHJ1ZSBvciBm YWxzZS4KICAgICAgICAgICovCi0gICAgICAgIGlmIChfLmlzVW5kZWZpbmVk KG1vZGVsLmdldCgidmFsdWUiKSkpIHsKLSAgICAgICAgICBtb2RlbC5zZXQo InZhbHVlIiwgZmFsc2UpOwotICAgICAgICB9CisKKyAgICAgICAgbW9kZWwu c2V0KCJ2YWx1ZSIsICEhbW9kZWwuZ2V0KCJ2YWx1ZSIpLCB7c2lsZW50OiB0 cnVlfSk7CiAKICAgICAgICAgcmV0dXJuIEJhY2tncmlkLkV4dGVuc2lvbi5T d2l0Y2hDZWxsOwogICAgICAgYnJlYWs7CiAgICAgICBjYXNlICJlbnVtIjoK KyAgICAgICAgbW9kZWwuc2V0KHsndmFsdWUnOiB1bmRlZmluZWR9LCB7c2ls ZW50OnRydWV9KTsKICAgICAgICAgdmFyIG9wdGlvbnMgPSBbXSwKICAgICAg ICAgICAgIGVudW1WYWxzID0gdmFyaWFibGUuZW51bXZhbHM7CiAKQEAgLTY0 LDQwICs3NCwxMzggQEAKICAgICAgICAgcmV0dXJuIEJhY2tncmlkLkV4dGVu c2lvbi5TZWxlY3QyQ2VsbC5leHRlbmQoe29wdGlvblZhbHVlczogb3B0aW9u c30pOwogICAgICAgYnJlYWs7CiAgICAgICBjYXNlICJpbnRlZ2VyIjoKKyAg ICAgICAgaWYgKCFfLmlzTmFOKHBhcnNlSW50KHZhbHVlKSkpIHsKKyAgICAg ICAgICBtb2RlbC5zZXQoeyd2YWx1ZSc6IHBhcnNlSW50KHZhbHVlKX0sIHtz aWxlbnQ6dHJ1ZX0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG1v ZGVsLnNldCh7J3ZhbHVlJzogdW5kZWZpbmVkfSwge3NpbGVudDp0cnVlfSk7 CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEJhY2tncmlkLkludGVnZXJD ZWxsOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgInJlYWwiOgorICAg ICAgICBpZiAoIV8uaXNOYU4ocGFyc2VGbG9hdCh2YWx1ZSkpKSB7CisgICAg ICAgICAgbW9kZWwuc2V0KHsndmFsdWUnOiBwYXJzZUZsb2F0KHZhbHVlKX0s IHtzaWxlbnQ6dHJ1ZX0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg IG1vZGVsLnNldCh7J3ZhbHVlJzogdW5kZWZpbmVkfSwge3NpbGVudDp0cnVl fSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEJhY2tncmlkLk51bWJl ckNlbGwuZXh0ZW5kKHtkZWNpbWFsczogMH0pOwogICAgICAgYnJlYWs7CiAg ICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICByZXR1cm4gQmFja2dyaWQu U3RyaW5nQ2VsbDsKICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKKyAg ICAgICAgbW9kZWwuc2V0KHsndmFsdWUnOiB1bmRlZmluZWR9LCB7c2lsZW50 OnRydWV9KTsKICAgICAgICAgcmV0dXJuIEJhY2tncmlkLkNlbGw7CiAgICAg ICBicmVhazsKICAgICB9CisgICAgbW9kZWwuc2V0KHsndmFsdWUnOiB1bmRl ZmluZWR9LCB7c2lsZW50OnRydWV9KTsKKyAgICByZXR1cm4gQmFja2dyaWQu Q2VsbDsKICAgfQogCisgIC8qCisgICAqIFRoaXMgcm93IHdpbGwgZGVmaW5l IGJlaGF2aW91ciBvciB2YWx1ZSBjb2x1bW4gY2VsbCBkZXBlbmRpbmcgdXBv bgorICAgKiB2YXJpYWJsZSBuYW1lLgorICAgKi8KKyAgdmFyIFZhcmlhYmxl Um93ID0gQmFja2dyaWQuUm93LmV4dGVuZCh7CisgICAgbW9kZWxEdXBsaWNh dGVDb2xvcjogImxpZ2h0WWVsbG93IiwKKworICAgIG1vZGVsVW5pcXVlQ29s b3I6ICIjZmZmIiwKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHsK KyAgICAgIEJhY2tncmlkLlJvdy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBs eSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgdmFyIHNlbGYgPSB0aGlzOwor ICAgICAgc2VsZi5tb2RlbC5vbigiY2hhbmdlOm5hbWUiLCBmdW5jdGlvbigp IHsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg ICBzZWxmLmNvbHVtbnMuZWFjaChmdW5jdGlvbihjb2wpIHsKKyAgICAgICAg ICAgIGlmIChjb2wuZ2V0KCduYW1lJykgPT0gJ3ZhbHVlJykgeworCisgICAg ICAgICAgICAgIHZhciBpZHggPSBzZWxmLmNvbHVtbnMuaW5kZXhPZihjb2wp LAorICAgICAgICAgICAgICAgIGNmID0gY29sLmdldCgiY2VsbEZ1bmN0aW9u IiksCisgICAgICAgICAgICAgICAgY2VsbCA9IG5ldyAoY2YuYXBwbHkoY29s LCBbc2VsZi5tb2RlbF0pKSh7CisgICAgICAgICAgICAgICAgICBjb2x1bW46 IGNvbCwKKyAgICAgICAgICAgICAgICAgIG1vZGVsOiBzZWxmLm1vZGVsCisg ICAgICAgICAgICAgICAgfSksCisgICAgICAgICAgICAgICAgICBvbGRDZWxs ID0gc2VsZi5jZWxsc1tpZHhdOworICAgICAgICAgICAgICAgIG9sZENlbGwu cmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgc2VsZi5jZWxsc1tpZHhdID0g Y2VsbDsKKyAgICAgICAgICAgICAgICBzZWxmLnJlbmRlcigpOworICAgICAg ICAgICAgfQorCisgICAgICAgICAgfSk7CisgICAgICAgIH0sIDEwKTsKKyAg ICAgIH0pOworICAgICAgc2VsZi5saXN0ZW5UbyhzZWxmLm1vZGVsLCAncGdh ZG1pbi1zZXNzaW9uOm1vZGVsOmR1cGxpY2F0ZScsIHNlbGYubW9kZWxEdXBs aWNhdGUpOworICAgICAgc2VsZi5saXN0ZW5UbyhzZWxmLm1vZGVsLCAncGdh ZG1pbi1zZXNzaW9uOm1vZGVsOnVuaXF1ZScsIHNlbGYubW9kZWxVbmlxdWUp OworICAgIH0sCisgICAgbW9kZWxEdXBsaWNhdGU6IGZ1bmN0aW9uKCkgewor ICAgICAgJCh0aGlzLmVsKS5yZW1vdmVDbGFzcygibmV3Iik7CisgICAgICB0 aGlzLmVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMubW9kZWxEdXBs aWNhdGVDb2xvcjsKKyAgICB9LAorICAgIG1vZGVsVW5pcXVlOiBmdW5jdGlv bigpIHsKKyAgICAgIHRoaXMuZWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0g dGhpcy5tb2RlbFVuaXF1ZUNvbG9yOworICAgIH0KKworICB9KQogICAvKioK ICAgICogIFZhcmlhYmxlTW9kZWwgdXNlZCB0byByZXByZXNlbnQgY29uZmln dXJhdGlvbiBwYXJhbWV0ZXJzICh2YXJpYWJsZXMgdGFiKQogICAgKiAgZm9y IGRhdGFiYXNlIG9iamVjdHMuCiAgICAqKi8KICAgdmFyIFZhcmlhYmxlTW9k ZWwgPSBwZ05vZGUuVmFyaWFibGVNb2RlbCA9IHBnTm9kZS5Nb2RlbC5leHRl bmQoeworICAgIGtleXM6IFsnbmFtZSddLAogICAgIGRlZmF1bHRzOiB7CiAg ICAgICBuYW1lOiB1bmRlZmluZWQsCiAgICAgICB2YWx1ZTogdW5kZWZpbmVk LAotICAgICAgcm9sZTogdW5kZWZpbmVkLAotICAgICAgZGF0YWJhc2U6IHVu ZGVmaW5lZCwKKyAgICAgIHJvbGU6IG51bGwsCisgICAgICBkYXRhYmFzZTog bnVsbCwKICAgICB9LAotICAgIGtleXM6IFsnbmFtZScsICdyb2xlJywgJ2Rh dGFiYXNlJ10sCiAgICAgc2NoZW1hOiBbCi0gICAgICB7aWQ6ICduYW1lJywg bGFiZWw6J05hbWUnLCB0eXBlOid0ZXh0JywgZWRpdGFibGU6IGZhbHNlLCBj ZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMzAnfSwKKyAgICAg IHsKKyAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6J05hbWUnLCB0eXBlOid0 ZXh0JywgZWRpdGFibGU6IHRydWUsIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lk dGhfcGVyY2VudF8zMCcsCisgICAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbiht KSB7CisgICAgICAgICAgcmV0dXJuIChtIGluc3RhbmNlb2YgQmFja2JvbmUu Q29sbGVjdGlvbikgPyB0cnVlIDogbS5pc05ldygpOworICAgICAgICB9LAor ICAgICAgICBjZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uTm9kZUFqYXhPcHRp b25zQ2VsbC5leHRlbmQoeworICAgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0 aW9uKCkgeworICAgICAgICAgICAgQmFja2dyaWQuRXh0ZW5zaW9uLk5vZGVB amF4T3B0aW9uc0NlbGwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhp cywgYXJndW1lbnRzKTsKKworICAgICAgICAgICAgLy8gSW1tZWRpYXRlbHkg cHJvY2VzcyBvcHRpb25zIGFzIHdlIG5lZWQgdGhlbSBiZWZvcmUgcmVuZGVy LgorCisgICAgICAgICAgICB2YXIgb3BWYWxzID0gXy5jbG9uZSh0aGlzLm9w dGlvblZhbHVlcyB8fAorICAgICAgICAgICAgICAgIChfLmlzRnVuY3Rpb24o dGhpcy5jb2x1bW4uZ2V0KCdvcHRpb25zJykpID8KKyAgICAgICAgICAgICAg ICAgICAgKHRoaXMuY29sdW1uLmdldCgnb3B0aW9ucycpKSh0aGlzKSA6Cisg ICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uLmdldCgnb3B0aW9ucycp KSk7CisKKyAgICAgICAgICAgIHRoaXMuY29sdW1uLnNldCgnb3B0aW9ucycs IG9wVmFscyk7CisgICAgICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAg dXJsOiAndm9wdHMnLAorICAgICAgICBzZWxlY3QyOiB7IGFsbG93Q2xlYXI6 IGZhbHNlIH0sCisgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24odmFycywg Y2VsbCkgeworICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAg ICAgICAgcmVzID0gW10sCisgICAgICAgICAgICAgIGF2YWlsVmFyaWFibGVz ID0ge307CisKKyAgICAgICAgICBfLmVhY2godmFycywgZnVuY3Rpb24odikg eworICAgICAgICAgICAgcmVzLnB1c2goeworICAgICAgICAgICAgICAndmFs dWUnOiB2Lm5hbWUsCisgICAgICAgICAgICAgICdpbWFnZSc6IHVuZGVmaW5l ZCwKKyAgICAgICAgICAgICAgJ2xhYmVsJzogdi5uYW1lCisgICAgICAgICAg ICB9KTsKKyAgICAgICAgICAgIGF2YWlsVmFyaWFibGVzW3YubmFtZV0gPSB2 OworICAgICAgICAgIH0pOworCisgICAgICAgICAgY2VsbC5jb2x1bW4uc2V0 KCJhdmFpbFZhcmlhYmxlcyIsIGF2YWlsVmFyaWFibGVzKTsKKyAgICAgICAg ICByZXR1cm4gcmVzOworICAgICAgICB9CisgICAgICB9LAogICAgICAgewog ICAgICAgICBpZDogJ3ZhbHVlJywgbGFiZWw6J1ZhbHVlJywgdHlwZTogJ3Rl eHQnLCBlZGl0YWJsZTogdHJ1ZSwKLSAgICAgICAgY2VsbEZ1bmN0aW9uOiBj ZWxsRnVuY3Rpb24sIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2Vu dF81MCcKKyAgICAgICAgY2VsbEZ1bmN0aW9uOiBjZWxsRnVuY3Rpb24sIGNl bGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF80MCcKKyAgICAgIH0s CisgICAgICB7aWQ6ICdkYXRhYmFzZScsIGxhYmVsOidEYXRhYmFzZScsIHR5 cGU6ICd0ZXh0JywgZWRpdGFibGU6IHRydWUsCisgICAgICBub2RlOiAnZGF0 YWJhc2UnLCBjZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uTm9kZUxpc3RCeU5h bWVDZWxsCiAgICAgICB9LAotICAgICAge2lkOiAnZGF0YWJhc2UnLCBsYWJl bDonRGF0YWJhc2UnLCB0eXBlOiAndGV4dCcsIGVkaXRhYmxlOiBmYWxzZX0s Ci0gICAgICB7aWQ6ICdyb2xlJywgbGFiZWw6J1JvbGUnLCB0eXBlOiAndGV4 dCcsIGVkaXRhYmxlOiBmYWxzZX0KKyAgICAgIHtpZDogJ3JvbGUnLCBsYWJl bDonUm9sZScsIHR5cGU6ICd0ZXh0JywgZWRpdGFibGU6IHRydWUsCisgICAg ICBub2RlOiAncm9sZScsIGNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5Ob2Rl TGlzdEJ5TmFtZUNlbGx9CiAgICAgXSwKICAgICB0b0pTT046IGZ1bmN0aW9u KCkgewogICAgICAgdmFyIGQgPSBCYWNrYm9uZS5Nb2RlbC5wcm90b3R5cGUu dG9KU09OLmFwcGx5KHRoaXMpOwpAQCAtMTQ0LDcgKzI1Miw3IEBACiAKICAg ICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRzKSB7CiAgICAgICB2YXIgc2Vs ZiA9IHRoaXMsCi0gICAgICAgICAgdW5pcXVlQ29scyA9IFsnbmFtZSddOwor ICAgICAgICAgIGtleXMgPSBbJ25hbWUnXTsKIAogICAgICAgLyoKICAgICAg ICAqIFJlYWQgZnJvbSBmaWVsZCBzY2hlbWEgd2hldGhlciB1c2VyIHdhbnRz IHRvIHVzZSBkYXRhYmFzZSBhbmQgcm9sZQpAQCAtMTU1LDI0ICsyNjMsMjIg QEAKIAogICAgICAgLy8gVXBkYXRlIHVuaXF1ZSBjb2xsIGZpZWxkIGJhc2Vk IG9uIGFib3ZlIGZsYWcgc3RhdHVzLgogICAgICAgaWYgKHNlbGYuaGFzRGF0 YWJhc2UpIHsKLSAgICAgICAgdW5pcXVlQ29scy5wdXNoKCdkYXRhYmFzZScp CisgICAgICAgIGtleXMucHVzaCgnZGF0YWJhc2UnKTsKICAgICAgIH0gZWxz ZSBpZiAoc2VsZi5oYXNSb2xlKSB7Ci0gICAgICAgIHVuaXF1ZUNvbHMucHVz aCgncm9sZScpCisgICAgICAgIGtleXMucHVzaCgncm9sZScpOwogICAgICAg fQogICAgICAgLy8gT3ZlcnJpZGluZyB0aGUgdW5pcXVlQ29sIGluIHRoZSBm aWVsZAogICAgICAgaWYgKG9wdHMgJiYgb3B0cy5maWVsZCkgewogICAgICAg ICBpZiAob3B0cy5maWVsZCBpbnN0YW5jZW9mIEJhY2tmb3JtLkZpZWxkKSB7 CiAgICAgICAgICAgb3B0cy5maWVsZC5zZXQoewotICAgICAgICAgICAgdW5p cXVlQ29sOiB1bmlxdWVDb2xzLAotICAgICAgICAgICAgbW9kZWw6IHBnTm9k ZS5WYXJpYWJsZU1vZGVsCisgICAgICAgICAgICBtb2RlbDogcGdOb2RlLlZh cmlhYmxlTW9kZWwuZXh0ZW5kKHtrZXlzOmtleXN9KQogICAgICAgICAgIH0s CiAgICAgICAgICAgewogICAgICAgICAgICAgc2lsZW50OiB0cnVlCiAgICAg ICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgb3B0cy5m aWVsZC5leHRlbmQoewotICAgICAgICAgICAgdW5pcXVlQ29sOiB1bmlxdWVD b2xzLAotICAgICAgICAgICAgbW9kZWw6IHBnTm9kZS5WYXJpYWJsZU1vZGVs CisgICAgICAgICAgICBtb2RlbDogcGdOb2RlLlZhcmlhYmxlTW9kZWwuZXh0 ZW5kKHtrZXlzOmtleXN9KQogICAgICAgICAgIH0pOwogICAgICAgICB9CiAg ICAgICB9CkBAIC0xODEsOTQgKzI4NywyNSBAQAogICAgICAgICAgIHNlbGYs IGFyZ3VtZW50cwogICAgICAgICAgICk7CiAKLQogICAgICAgc2VsZi5hdmFp bFZhcmlhYmxlcyA9IHt9OwogCiAgICAgICB2YXIgbm9kZSA9IHNlbGYuZmll bGQuZ2V0KCdub2RlJykudHlwZSwKLSAgICAgICAgICBoZWFkZXJTY2hlbWEg PSBbewotICAgICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6JycsIHR5cGU6 J3RleHQnLAotICAgICAgICAgICAgdXJsOiBzZWxmLmZpZWxkLmdldCgndmFy aWFibGVfb3B0cycpIHx8ICd2b3B0cycsCi0gICAgICAgICAgICBjb250cm9s OiBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLAotICAgICAgICAg ICAgY2FjaGVfbGV2ZWw6ICdzZXJ2ZXInLAotICAgICAgICAgICAgc2VsZWN0 MjogewotICAgICAgICAgICAgICBhbGxvd0NsZWFyOiBmYWxzZSwgd2lkdGg6 ICdzdHlsZScKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBhdmFpbFZh cmlhYmxlczogc2VsZi5hdmFpbFZhcmlhYmxlcywKLSAgICAgICAgICAgIG5v ZGU6IG5vZGUsIGZpcnN0X2VtcHR5OiBmYWxzZSwKLSAgICAgICAgICAgIHZl cnNpb25fY29tcGF0aWJsZTogc2VsZi5maWVsZC5nZXQoJ3ZlcnNpb25fY29t cGF0aWJsZScpLAotICAgICAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbih2 YXJzKSB7Ci0gICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKLSAgICAg ICAgICAgICAgICAgIG9wdHMgPSBzZWxmLmZpZWxkLmdldCgnYXZhaWxWYXJp YWJsZXMnKTsKLQotICAgICAgICAgICAgICByZXMgPSBbXTsKLQotICAgICAg ICAgICAgICBmb3IgKHZhciBwcm9wIGluIG9wdHMpIHsKLSAgICAgICAgICAg ICAgICBpZiAob3B0cy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewotICAgICAg ICAgICAgICAgICAgZGVsZXRlIG9wdHNbcHJvcF07Ci0gICAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgXy5lYWNo KHZhcnMsIGZ1bmN0aW9uKHYpIHsKLSAgICAgICAgICAgICAgICBvcHRzW3Yu bmFtZV0gPSBfLmV4dGVuZCh7fSwgdik7Ci0gICAgICAgICAgICAgICAgcmVz LnB1c2goewotICAgICAgICAgICAgICAgICAgJ2xhYmVsJzogdi5uYW1lLAot ICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogdi5uYW1lCi0gICAgICAgICAg ICAgICAgfSk7Ci0gICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAg IHJldHVybiByZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfV0sCi0g ICAgICAgICAgaGVhZGVyRGVmYXVsdHMgPSB7bmFtZTogbnVsbH0sCiAgICAg ICAgICAgZ3JpZENvbHMgPSBbJ25hbWUnLCAndmFsdWUnXTsKIAogICAgICAg aWYgKHNlbGYuaGFzRGF0YWJhc2UpIHsKLSAgICAgICAgaGVhZGVyU2NoZW1h LnB1c2goewotICAgICAgICAgIGlkOiAnZGF0YWJhc2UnLCBsYWJlbDonJywg dHlwZTogJ3RleHQnLCBjYWNoZV9sZXZlbDogJ3NlcnZlcicsCi0gICAgICAg ICAgY29udHJvbDogQmFja2Zvcm0uTm9kZUxpc3RCeU5hbWVDb250cm9sLCBu b2RlOiAnZGF0YWJhc2UnLAotICAgICAgICAgIHZlcnNpb25fY29tcGF0aWJs ZTogc2VsZi5maWVsZC5nZXQoJ3ZlcnNpb25fY29tcGF0aWJsZScpCi0gICAg ICAgIH0pOwotICAgICAgICBoZWFkZXJEZWZhdWx0c1snZGF0YWJhc2UnXSA9 IG51bGw7CiAgICAgICAgIGdyaWRDb2xzLnB1c2goJ2RhdGFiYXNlJyk7CiAg ICAgICB9CiAKICAgICAgIGlmIChzZWxmLmhhc1JvbGUpIHsKLSAgICAgICAg aGVhZGVyU2NoZW1hLnB1c2goewotICAgICAgICAgIGlkOiAncm9sZScsIGxh YmVsOicnLCB0eXBlOiAndGV4dCcsIGNhY2hlX2xldmVsOiAnc2VydmVyJywK LSAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNv bnRyb2wsIG5vZGU6ICdyb2xlJywKLSAgICAgICAgICB2ZXJzaW9uX2NvbXBh dGlibGU6IHNlbGYuZmllbGQuZ2V0KCd2ZXJzaW9uX2NvbXBhdGlibGUnKQot ICAgICAgICB9KTsKLSAgICAgICAgaGVhZGVyRGVmYXVsdHNbJ3JvbGUnXSA9 IG51bGw7CiAgICAgICAgIGdyaWRDb2xzLnB1c2goJ3JvbGUnKTsKICAgICAg IH0KIAotICAgICAgc2VsZi5oZWFkZXJEYXRhID0gbmV3IChCYWNrYm9uZS5N b2RlbC5leHRlbmQoewotICAgICAgICBkZWZhdWx0czogaGVhZGVyRGVmYXVs dHMsCi0gICAgICAgIHNjaGVtYTogaGVhZGVyU2NoZW1hCi0gICAgICB9KSko e30pOwotCi0gICAgICB2YXIgaGVhZGVyR3JvdXBzID0gQmFja2Zvcm0uZ2Vu ZXJhdGVWaWV3U2NoZW1hKAotICAgICAgICAgIHNlbGYuZmllbGQuZ2V0KCdu b2RlX2luZm8nKSwgc2VsZi5oZWFkZXJEYXRhLCAnY3JlYXRlJywKLSAgICAg ICAgICBub2RlLCBzZWxmLmZpZWxkLmdldCgnbm9kZV9kYXRhJykKLSAgICAg ICAgICApLAotICAgICAgICAgIGZpZWxkcyA9IFtdOwotCi0gICAgICBfLmVh Y2goaGVhZGVyR3JvdXBzLCBmdW5jdGlvbihvKSB7Ci0gICAgICAgIGZpZWxk cyA9IGZpZWxkcy5jb25jYXQoby5maWVsZHMpOwotICAgICAgfSk7Ci0KLSAg ICAgIHNlbGYuaGVhZGVyRmllbGRzID0gbmV3IEJhY2tmb3JtLkZpZWxkcyhm aWVsZHMpOwogICAgICAgc2VsZi5ncmlkU2NoZW1hID0gQmFja2Zvcm0uZ2Vu ZXJhdGVHcmlkQ29sdW1uc0Zyb21Nb2RlbCgKLSAgICAgICAgICBudWxsLCBW YXJpYWJsZU1vZGVsLCAnZWRpdCcsIGdyaWRDb2xzCisgICAgICAgICAgc2Vs Zi5maWVsZC5nZXQoJ25vZGVfaW5mbycpLCBWYXJpYWJsZU1vZGVsLmV4dGVu ZCh7a2V5czprZXlzfSksICdlZGl0JywgZ3JpZENvbHMsIHNlbGYuZmllbGQu Z2V0KCdzY2hlbWFfbm9kZScpCiAgICAgICAgICAgKTsKIAogICAgICAgLy8g TWFrZSBzdXJlIC0gd2UgZG8gaGF2ZSB0aGUgZGF0YSBmb3IgdmFyaWFibGVz CiAgICAgICBzZWxmLmdldFZhcmlhYmxlcygpOwotCi0gICAgICBzZWxmLmNv bnRyb2xzID0gW107Ci0gICAgICBzZWxmLmxpc3RlblRvKHNlbGYuaGVhZGVy RGF0YSwgImNoYW5nZSIsIHNlbGYuaGVhZGVyRGF0YUNoYW5nZWQpOwotICAg ICAgc2VsZi5saXN0ZW5UbyhzZWxmLmhlYWRlckRhdGEsICJzZWxlY3QyIiwg c2VsZi5oZWFkZXJEYXRhQ2hhbmdlZCk7Ci0gICAgICBzZWxmLmxpc3RlblRv KHNlbGYuY29sbGVjdGlvbiwgInJlbW92ZSIsIHNlbGYub25SZW1vdmVWYXJp YWJsZSk7CiAgICAgfSwKICAgICAvKgogICAgICAqIEdldCB0aGUgdmFyaWFi bGUgZGF0YSBmb3IgdGhpcyBub2RlLgpAQCAtMzIxLDEwMSArMzU4LDE5IEBA CiAgICAgICB9CiAgICAgfSwKIAotICAgIGdlbmVyYXRlSGVhZGVyOiBmdW5j dGlvbihkYXRhKSB7Ci0gICAgICB2YXIgaGVhZGVyID0gWwotICAgICAgICAn PGRpdiBjbGFzcz0ic3Vibm9kZS1oZWFkZXItZm9ybSI+JywKLSAgICAgICAg JyA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQiPicsCi0gICAgICAgICcg IDxkaXYgY2xhc3M9InJvdyI+JywKLSAgICAgICAgJyAgIDxkaXYgY2xhc3M9 ImNvbC1tZC00Ij4nLAotICAgICAgICAnICAgIDxsYWJlbCBjbGFzcz0iY29u dHJvbC1sYWJlbCI+PCUtdmFyaWFibGVfbGFiZWwlPjwvbGFiZWw+JywKLSAg ICAgICAgJyAgIDwvZGl2PicsCi0gICAgICAgICcgICA8ZGl2IGNsYXNzPSJj b2wtbWQtNCIgaGVhZGVyPSJuYW1lIj48L2Rpdj4nLAotICAgICAgICAnICAg PGRpdiBjbGFzcz0iY29sLW1kLTQiPicsCi0gICAgICAgICcgICAgIDxidXR0 b24gY2xhc3M9ImJ0bi1zbSBidG4tZGVmYXVsdCBhZGQiIDwlPWNhbkFkZCA/ ICIiIDogImRpc2FibGVkPVwnZGlzYWJsZWRcJyIlPiA+PCUtYWRkX2xhYmVs JT48L2J1dHR0b24+JywKLSAgICAgICAgJyAgIDwvZGl2PicsCi0gICAgICAg ICcgIDwvZGl2PiddOwotCi0gICAgICBpZih0aGlzLmhhc0RhdGFiYXNlKSB7 Ci0gICAgICAgIGhlYWRlci5wdXNoKFsKLSAgICAgICAgICAnICA8ZGl2IGNs YXNzPSJyb3ciPicsCi0gICAgICAgICAgJyAgIDxkaXYgY2xhc3M9ImNvbC1t ZC00Ij4nLAotICAgICAgICAgICcgICAgPGxhYmVsIGNsYXNzPSJjb250cm9s LWxhYmVsIj48JS1kYXRhYmFzZV9sYWJlbCU+PC9sYWJlbD4nLAotICAgICAg ICAgICcgICA8L2Rpdj4nLAotICAgICAgICAgICcgICA8ZGl2IGNsYXNzPSJj b2wtbWQtNCIgaGVhZGVyPSJkYXRhYmFzZSI+PC9kaXY+JywKLSAgICAgICAg ICAnICA8L2Rpdj4nXS5qb2luKCJcbiIpCi0gICAgICAgICAgKTsKLSAgICAg IH0KLQotICAgICAgaWYgKHRoaXMuaGFzUm9sZSkgewotICAgICAgICBoZWFk ZXIucHVzaChbCi0gICAgICAgICAgJyAgPGRpdiBjbGFzcz0icm93Ij4nLAot ICAgICAgICAgICcgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNCI+JywKLSAgICAg ICAgICAnICAgIDxsYWJlbCBjbGFzcz0iY29udHJvbC1sYWJlbCI+PCUtcm9s ZV9sYWJlbCU+PC9sYWJlbD4nLAotICAgICAgICAgICcgICA8L2Rpdj4nLAot ICAgICAgICAgICcgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNCIgaGVhZGVyPSJy b2xlIj48L2Rpdj4nLAotICAgICAgICAgICcgIDwvZGl2PiddLmpvaW4oIlxu IikKLSAgICAgICAgICApOwotICAgICAgfQotCi0gICAgICBoZWFkZXIucHVz aChbCi0gICAgICAgICAgJyA8L2Rpdj4nLAotICAgICAgICAgICc8L2Rpdj4n XS5qb2luKCJcbiIpKTsKLQotICAgICAgLy8gVE9ETzo6IERvIHRoZSBpMThu Ci0gICAgICBfLmV4dGVuZChkYXRhLCB7Ci0gICAgICAgIHZhcmlhYmxlX2xh YmVsOiAiUGFyYW1ldGVyIG5hbWUiLAotICAgICAgICBhZGRfbGFiZWw6ICJB REQiLAotICAgICAgICBkYXRhYmFzZV9sYWJlbDogIkRhdGFiYXNlIiwKLSAg ICAgICAgcm9sZV9sYWJlbDogIlJvbGUiCi0gICAgICB9KTsKLQotICAgICAg dmFyIHNlbGYgPSB0aGlzLAotICAgICAgICAgIGhlYWRlclRtcGwgPSBfLnRl bXBsYXRlKGhlYWRlci5qb2luKCJcbiIpKSwKLSAgICAgICAgICAkaGVhZGVy ID0gJChoZWFkZXJUbXBsKGRhdGEpKSwKLSAgICAgICAgICBjb250cm9scyA9 IHRoaXMuY29udHJvbHM7Ci0KLSAgICAgIHRoaXMuaGVhZGVyRmllbGRzLmVh Y2goZnVuY3Rpb24oZmllbGQpIHsKLSAgICAgICAgdmFyIGNvbnRyb2wgPSBu ZXcgKGZpZWxkLmdldCgiY29udHJvbCIpKSh7Ci0gICAgICAgICAgZmllbGQ6 IGZpZWxkLAotICAgICAgICAgIG1vZGVsOiBzZWxmLmhlYWRlckRhdGEKLSAg ICAgICAgfSk7Ci0KLSAgICAgICAgJGhlYWRlci5maW5kKCdkaXZbaGVhZGVy PSInICsgZmllbGQuZ2V0KCduYW1lJykgKyAnIl0nKS5hcHBlbmQoCi0gICAg ICAgICAgY29udHJvbC5yZW5kZXIoKS4kZWwKLSAgICAgICAgKTsKLQotICAg ICAgICBjb250cm9scy5wdXNoKGNvbnRyb2wpOwotICAgICAgfSk7Ci0KLSAg ICAgIC8vIFdlIHNob3VsZCBub3Qgc2hvdyBhZGQgYnV0IGluIHByb3BlcnRp ZXMgbW9kZQotICAgICAgaWYgKGRhdGEubW9kZSA9PSAncHJvcGVydGllcycp IHsKLSAgICAgICAgJGhlYWRlci5maW5kKCJidXR0b24uYWRkIikucmVtb3Zl KCk7Ci0gICAgICB9Ci0KLSAgICAgIHNlbGYuJGhlYWRlciA9ICRoZWFkZXI7 Ci0KLSAgICAgIHJldHVybiAkaGVhZGVyOwotICAgIH0sCi0KLSAgICBldmVu dHM6IF8uZXh0ZW5kKAotICAgICAgICAgICAgICAgIHt9LCBCYWNrZm9ybS5V bmlxdWVDb2xDb2xsZWN0aW9uQ29udHJvbC5wcm90b3R5cGUuZXZlbnRzLAot ICAgICAgICAgICAgICAgIHsnY2xpY2sgYnV0dG9uLmFkZCc6ICdhZGRWYXJp YWJsZSd9Ci0gICAgICAgICAgICAgICAgKSwKLQogICAgIHNob3dHcmlkQ29u dHJvbDogZnVuY3Rpb24oZGF0YSkgewogCiAgICAgICB2YXIgc2VsZiA9IHRo aXMsCiAgICAgICAgICAgdGl0bGVUbXBsID0gXy50ZW1wbGF0ZShbCiAgICAg ICAgICAgICAiPGRpdiBjbGFzcz0nc3Vibm9kZS1oZWFkZXInPiIsCiAgICAg ICAgICAgICAiPGxhYmVsIGNsYXNzPSdjb250cm9sLWxhYmVsJz48JS1sYWJl bCU+PC9sYWJlbD4iLAorICAgICAgICAgICAgIjxidXR0b24gY2xhc3M9J2J0 bi1zbSBidG4tZGVmYXVsdCBhZGQnIDwlPWNhbkFkZCA/ICcnIDogJ2Rpc2Fi bGVkPVwiZGlzYWJsZWRcIiclPj5BZGQ8L2J1dHR0b24+IiwKICAgICAgICAg ICAgICI8L2Rpdj4iXS5qb2luKCJcbiIpKSwKICAgICAgICAgICAkZ3JpZEJv ZHkgPQogICAgICAgICAgICAgJCgiPGRpdiBjbGFzcz0ncGdhZG1pbi1jb250 cm9sLWdyb3VwIGJhY2tncmlkIGZvcm0tZ3JvdXAgY29sLXhzLTEyIG9iamVj dCBzdWJub2RlJz48L2Rpdj4iKS5hcHBlbmQoCi0gICAgICAgICAgICAgIHRp dGxlVG1wbCh7bGFiZWw6IGRhdGEubGFiZWx9KQorICAgICAgICAgICAgICB0 aXRsZVRtcGwoZGF0YSkKICAgICAgICAgICAgICk7CiAKLSAgICAgICRncmlk Qm9keS5hcHBlbmQoc2VsZi5nZW5lcmF0ZUhlYWRlcihkYXRhKSk7Ci0KICAg ICAgIHZhciBncmlkU2NoZW1hID0gXy5jbG9uZSh0aGlzLmdyaWRTY2hlbWEp OwogCiAgICAgICBfLmVhY2goZ3JpZFNjaGVtYS5jb2x1bW5zLCBmdW5jdGlv bihjb2wpIHsKQEAgLTQ2MCwxOCArNDE1LDYxIEBACiAgICAgICB2YXIgZ3Jp ZCA9IHNlbGYuZ3JpZCA9IG5ldyBCYWNrZ3JpZC5HcmlkKHsKICAgICAgICAg Y29sdW1uczogZ3JpZFNjaGVtYS5jb2x1bW5zLAogICAgICAgICBjb2xsZWN0 aW9uOiBzZWxmLmNvbGxlY3Rpb24sCisgICAgICAgIHJvdzogVmFyaWFibGVS b3csCiAgICAgICAgIGNsYXNzTmFtZTogImJhY2tncmlkIHRhYmxlLWJvcmRl cmVkIgogICAgICAgfSk7CiAgICAgICBzZWxmLiRncmlkID0gZ3JpZC5yZW5k ZXIoKS4kZWw7CiAKICAgICAgICRncmlkQm9keS5hcHBlbmQoc2VsZi4kZ3Jp ZCk7CiAKLSAgICAgIHNlbGYuaGVhZGVyRGF0YS5zZXQoCi0gICAgICAgICAg J25hbWUnLAotICAgICAgICAgIHNlbGYuJGhlYWRlci5maW5kKAotICAgICAg ICAgICAgJ2RpdltoZWFkZXI9Im5hbWUiXSBzZWxlY3Qgb3B0aW9uOmZpcnN0 JwotICAgICAgICAgICAgKS52YWwoKQotICAgICAgICAgICk7CisgICAgICAv LyBBZGQgYnV0dG9uIGNhbGxiYWNrCisgICAgICBpZiAoIShkYXRhLmRpc2Fi bGVkIHx8IGRhdGEuY2FuQWRkID09IGZhbHNlKSkgeworICAgICAgICAkZ3Jp ZEJvZHkuZmluZCgnYnV0dG9uLmFkZCcpLmZpcnN0KCkuY2xpY2soZnVuY3Rp b24oZSkgeworICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAg ICAgICB2YXIgY2FuQWRkUm93ID0gXy5pc0Z1bmN0aW9uKGRhdGEuY2FuQWRk Um93KSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5jYW5B ZGRSb3cuYXBwbHkoc2VsZiwgW3NlbGYubW9kZWxdKSA6IHRydWU7CisgICAg ICAgICAgaWYgKGNhbkFkZFJvdykgeworCisgICAgICAgICAgICAgIHZhciBh bGxvd011bHRpcGxlRW1wdHlSb3dzID0gISFzZWxmLmZpZWxkLmdldCgnYWxs b3dNdWx0aXBsZUVtcHR5Um93cycpOworCisgICAgICAgICAgICAgIC8vIElm IGFsbG93TXVsdGlwbGVFbXB0eVJvd3MgaXMgbm90IHNldCBvciBpcyBmYWxz ZSB0aGVuIGRvbid0IGFsbG93IHNlY29uZCBuZXcgZW1wdHkgcm93LgorICAg ICAgICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgb25seSBvbmUgZW1wdHkg cm93LgorICAgICAgICAgICAgICBpZiAoIWFsbG93TXVsdGlwbGVFbXB0eVJv d3MgJiYgc2VsZi5jb2xsZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgdmFy IGlzRW1wdHkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBzZWxmLmNvbGxl Y3Rpb24uZWFjaChmdW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAg ICAgdmFyIG1vZGVsVmFsdWVzID0gW107CisgICAgICAgICAgICAgICAgICBf LmVhY2gobW9kZWwuYXR0cmlidXRlcywgZnVuY3Rpb24odmFsLCBrZXkpIHsK KyAgICAgICAgICAgICAgICAgICAgbW9kZWxWYWx1ZXMucHVzaCh2YWwpOwor ICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgIGlmKCFf LnNvbWUobW9kZWxWYWx1ZXMsIF8uaWRlbnRpdHkpKSB7CisgICAgICAgICAg ICAgICAgICAgIGlzRW1wdHkgPSB0cnVlOworICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGlmKGlz RW1wdHkpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAkKGdyaWQuYm9keS4kZWwuZmluZCgkKCJ0ci5uZXciKSkpLnJlbW92 ZUNsYXNzKCJuZXciKQorICAgICAgICAgICAgICB2YXIgbSA9IG5ldyAoZGF0 YS5tb2RlbCkgKG51bGwsIHsKKyAgICAgICAgICAgICAgICBzaWxlbnQ6IHRy dWUsCisgICAgICAgICAgICAgICAgaGFuZGxlcjogc2VsZi5jb2xsZWN0aW9u LAorICAgICAgICAgICAgICAgIHRvcDogc2VsZi5tb2RlbC50b3AgfHwgc2Vs Zi5tb2RlbCwKKyAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBzZWxmLmNv bGxlY3Rpb24sCisgICAgICAgICAgICAgICAgbm9kZV9pbmZvOiBzZWxmLm1v ZGVsLm5vZGVfaW5mbworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg ICAgc2VsZi5jb2xsZWN0aW9uLmFkZChtKTsKKworICAgICAgICAgICAgICB2 YXIgaWR4ID0gc2VsZi5jb2xsZWN0aW9uLmluZGV4T2YobSksCisgICAgICAg ICAgICAgICAgICBuZXdSb3cgPSBncmlkLmJvZHkucm93c1tpZHhdLiRlbDsK KworICAgICAgICAgICAgICBuZXdSb3cuYWRkQ2xhc3MoIm5ldyIpOworICAg ICAgICAgICAgICAkKG5ld1JvdykucGdNYWtlVmlzaWJsZSgnYmFja2Zvcm0t dGFiJyk7CisKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgIH0KKyAgICAgICAgfSk7CisgICAgICB9CiAKICAgICAgIC8vIFJlbmRl ciBub2RlIGdyaWQKICAgICAgIHJldHVybiAkZ3JpZEJvZHk7CkBAIC01MDUs ODMgKzUwMyw3IEBACiAgICAgICAgIGRlbGV0ZSBtOwogICAgICAgfQogCi0g ICAgICB0aGlzLmhlYWRlckRhdGFDaGFuZ2VkKCk7Ci0KICAgICAgIHJldHVy biBmYWxzZTsKLSAgICB9LAotCi0gICAgaGVhZGVyRGF0YUNoYW5nZWQ6IGZ1 bmN0aW9uKCkgewotICAgICAgdmFyIHNlbGYgPSB0aGlzLCB2YWwsCi0gICAg ICAgICAgZGF0YSA9IHRoaXMuaGVhZGVyRGF0YS50b0pTT04oKSwKLSAgICAg ICAgICBpblNlbGVjdGVkID0gZmFsc2UsCi0gICAgICAgICAgY2hlY2tWYXJz ID0gWyduYW1lJ107Ci0KLSAgICAgIGlmICghc2VsZi4kaGVhZGVyKSB7Ci0g ICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgaWYgKHNlbGYuaGFz RGF0YWJhc2UpIHsKLSAgICAgICAgY2hlY2tWYXJzLnB1c2goJ2RhdGFiYXNl Jyk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChzZWxmLmhhc1JvbGUpIHsKLSAg ICAgICAgY2hlY2tWYXJzLnB1c2goJ3JvbGUnKTsKLSAgICAgIH0KLQotICAg ICAgaWYgKHNlbGYuY29udHJvbF9kYXRhLmNhbkFkZCkgewotICAgICAgICBz ZWxmLmNvbGxlY3Rpb24uZWFjaChmdW5jdGlvbihtKSB7Ci0gICAgICAgICAg aWYgKCFpblNlbGVjdGVkKSB7Ci0gICAgICAgICAgICB2YXIgaGFzID0gdHJ1 ZTsKLSAgICAgICAgICAgIF8uZWFjaChjaGVja1ZhcnMsIGZ1bmN0aW9uKHYp IHsKLSAgICAgICAgICAgICAgdmFsID0gbS5nZXQodik7Ci0gICAgICAgICAg ICAgIGhhcyA9IGhhcyAmJiAoKAotICAgICAgICAgICAgICAgIChfLmlzVW5k ZWZpbmVkKHZhbCkgfHwgXy5pc051bGwodmFsKSkgJiYKLSAgICAgICAgICAg ICAgICAoXy5pc1VuZGVmaW5lZChkYXRhW3ZdKSB8fCBfLmlzTnVsbChkYXRh W3ZdKSkKLSAgICAgICAgICAgICAgICApIHx8Ci0gICAgICAgICAgICAgICAg KHZhbCA9PSBkYXRhW3ZdKSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAg ICAgICAgaW5TZWxlY3RlZCA9IGhhczsKLSAgICAgICAgICB9Ci0gICAgICAg IH0pOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGluU2VsZWN0 ZWQgPSB0cnVlOwotICAgICAgfQotCi0gICAgICBzZWxmLiRoZWFkZXIuZmlu ZCgnYnV0dG9uLmFkZCcpLnByb3AoJ2Rpc2FibGVkJywgaW5TZWxlY3RlZCk7 Ci0gICAgfSwKLQotICAgIG9uUmVtb3ZlVmFyaWFibGU6IGZ1bmN0aW9uKCkg ewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICAvLyBXYWl0IGZv ciBjb2xsZWN0aW9uIHRvIGJlIHVwZGF0ZWQgYmVmb3JlIGNoZWNraW5nIGZv ciB0aGUgYnV0dG9uIHRvIGJlCi0gICAgICAvLyBlbmFibGVkLCBvciBub3Qu Ci0gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICBzZWxm LmhlYWRlckRhdGFDaGFuZ2VkKCk7Ci0gICAgICB9LCAxMCk7Ci0gICAgfSwK LQotICAgIHJlbW92ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAvKgotICAgICAg ICogU3RvcCBsaXN0ZW5pbmcgdGhlIGV2ZW50cyByZWdpc3RlcmVkIGJ5IHRo aXMgY29udHJvbC4KLSAgICAgICAqLwotICAgICAgdGhpcy5zdG9wTGlzdGVu aW5nKHRoaXMuaGVhZGVyRGF0YSwgImNoYW5nZSIsIHRoaXMuaGVhZGVyRGF0 YUNoYW5nZWQpOwotICAgICAgdGhpcy5saXN0ZW5Ubyh0aGlzLmhlYWRlckRh dGEsICJzZWxlY3QyIiwgdGhpcy5oZWFkZXJEYXRhQ2hhbmdlZCk7Ci0gICAg ICB0aGlzLmxpc3RlblRvKHRoaXMuY29sbGVjdGlvbiwgInJlbW92ZSIsIHRo aXMub25SZW1vdmVWYXJpYWJsZSk7Ci0KLSAgICAgIC8vIFJlbW92ZSBoZWFk ZXIgY29udHJvbHMuCi0gICAgICBfLmVhY2godGhpcy5jb250cm9scywgZnVu Y3Rpb24oY29udHJvbCkgewotICAgICAgICBjb250cm9sLnJlbW92ZSgpOwot ICAgICAgfSk7Ci0KLSAgICAgIFZhcmlhYmxlQ29sbGVjdGlvbkNvbnRyb2wu X19zdXBlcl9fLnJlbW92ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotCi0g ICAgICAvLyBSZW1vdmUgdGhlIGhlYWRlciBtb2RlbAotICAgICAgZGVsZXRl ICh0aGlzLmhlYWRlckRhdGEpOwotCi0gICAgICAvLyBDbGVhciB0aGUgYXZh aWxhYmxlIFZhcmlhYmxlcyBvYmplY3QKLSAgICAgIHNlbGYuYXZhaWxWYXJp YWJsZXMgPSB7fTsKICAgICB9CiAgIH0pOwogCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9kYXRhbW9kZWwuanMgYi93ZWIv cGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9kYXRhbW9kZWwuanMKaW5kZXgg ODdiNWE2NC4uOGNiNzAzNCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zdGF0aWMvanMvZGF0YW1vZGVsLmpzCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc3RhdGljL2pzL2RhdGFtb2RlbC5qcwpAQCAtNyw2ICs3LDcg QEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAg IC8qCiAgICAgICAgKiBQYXJzaW5nIHRoZSBleGlzdGluZyBkYXRhCiAgICAg ICAgKi8KKyAgICAgIG9uX3NlcnZlcjogZmFsc2UsCiAgICAgICBwYXJzZTog ZnVuY3Rpb24ocmVzKSB7CiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAg ICAgICAgaWYgKHJlcyAmJiBfLmlzT2JqZWN0KHJlcykgJiYgJ25vZGUnIGlu IHJlcyAmJiByZXNbJ25vZGUnXSkgewpAQCAtMzMsOSArMzQsMjEgQEAgZnVu Y3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAgICAgICAg ICAgICAgICAgICAgIHNpbGVudDogdHJ1ZSwKICAgICAgICAgICAgICAgICAg ICAgICAgIGF0dHJOYW1lOiBzLmlkCiAgICAgICAgICAgICAgICAgICAgICAg ICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNldChzLmlkLCBv YmosIHtzaWxlbnQ6IHRydWUsIHBhcnNlOiB0cnVlfSk7CisKKyAgICAgICAg ICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAqIE5l c3RlZCBjb2xsZWN0aW9uIG1vZGVscyBtYXkgb3IgbWF5IG5vdCBoYXZlIGlk QXR0cmlidXRlLgorICAgICAgICAgICAgICAgICAgICAgICAqIFNvIHRvIGRl Y2lkZSB3aGV0aGVyIG1vZGVsIGlzIG5ldyBvciBub3Qgc2V0ICdvbl9zZXJ2 ZXInCisgICAgICAgICAgICAgICAgICAgICAgICogZmxhZyBvbiBzdWNoIG1v ZGVscy4KKyAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc2V0KHMuaWQsIG9iaiwge3NpbGVudDogdHJ1 ZSwgcGFyc2U6IHRydWUsIG9uX3NlcnZlciA6IHRydWV9KTsKICAgICAgICAg ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICBv YmoucmVzZXQodmFsLCB7c2lsZW50OiB0cnVlLCBwYXJzZTogdHJ1ZX0pOwor ICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAg ICAgICogTmVzdGVkIGNvbGxlY3Rpb24gbW9kZWxzIG1heSBvciBtYXkgbm90 IGhhdmUgaWRBdHRyaWJ1dGUuCisgICAgICAgICAgICAgICAgICAgICAgICog U28gdG8gZGVjaWRlIHdoZXRoZXIgbW9kZWwgaXMgbmV3IG9yIG5vdCBzZXQg J29uX3NlcnZlcicKKyAgICAgICAgICAgICAgICAgICAgICAgKiBmbGFnIG9u IHN1Y2ggbW9kZWxzLgorICAgICAgICAgICAgICAgICAgICAgICAqLworICAg ICAgICAgICAgICAgICAgICAgIG9iai5yZXNldCh2YWwsIHtzaWxlbnQ6IHRy dWUsIHBhcnNlOiB0cnVlLCBvbl9zZXJ2ZXIgOiB0cnVlfSk7CiAgICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgIGVsc2UgewpAQCAtODksNiArMTAyLDEyIEBAIGZ1bmN0aW9u KF8sIHBnQWRtaW4sICQsIEJhY2tib25lKSB7CiAKICAgICAgICAgcmV0dXJu IHJlczsKICAgICAgIH0sCisgICAgICBpc05ldzogZnVuY3Rpb24oKSB7Cisg ICAgICAgIGlmICh0aGlzLmhhcyh0aGlzLmlkQXR0cmlidXRlKSkgeworICAg ICAgICAgIHJldHVybiAhdGhpcy5oYXModGhpcy5pZEF0dHJpYnV0ZSk7Cisg ICAgICAgIH0KKyAgICAgICAgcmV0dXJuICF0aGlzLm9uX3NlcnZlcjsKKyAg ICAgIH0sCiAgICAgICBwcmltYXJ5X2tleTogZnVuY3Rpb24oKSB7CiAgICAg ICAgIGlmICh0aGlzLmtleXMgJiYgXy5pc0FycmF5KHRoaXMua2V5cykpIHsK ICAgICAgICAgICB2YXIgcmVzID0ge30sIHNlbGYgPSB0aGlzOwpAQCAtMTAz LDYgKzEyMiwxMSBAQCBmdW5jdGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9u ZSkgewogICAgICAgfSwKICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0 dHJpYnV0ZXMsIG9wdGlvbnMpIHsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlz OworICAgICAgICBzZWxmLl9wcmV2aW91c19rZXlfdmFsdWVzID0ge307CisK KyAgICAgICAgaWYgKCdvbl9zZXJ2ZXInIGluIG9wdGlvbnMgJiYgb3B0aW9u cy5vbl9zZXJ2ZXIpIHsKKyAgICAgICAgICBzZWxmLm9uX3NlcnZlciA9IHRy dWU7CisgICAgICAgIH0KIAogICAgICAgICBCYWNrYm9uZS5Nb2RlbC5wcm90 b3R5cGUuaW5pdGlhbGl6ZS5hcHBseShzZWxmLCBhcmd1bWVudHMpOwogCkBA IC0xOTgsNiArMjIyLDEzIEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4sICQsIEJh Y2tib25lKSB7CiAgICAgICAgICAgc2VsZi5zdGFydE5ld1Nlc3Npb24oKTsK ICAgICAgICAgfQogCisgICAgICAgIGlmICgna2V5cycgaW4gc2VsZiAmJiBf LmlzQXJyYXkoc2VsZi5rZXlzKSkgeworICAgICAgICAgIF8uZWFjaChzZWxm LmtleXMsIGZ1bmN0aW9uKGtleSkgeworICAgICAgICAgICAgICBzZWxmLm9u KCJjaGFuZ2U6IiArIGtleSwgZnVuY3Rpb24obSkgeworICAgICAgICAgICAg ICAgIHNlbGYuX3ByZXZpb3VzX2tleV92YWx1ZXNba2V5XSA9ICBtLnByZXZp b3VzKGtleSk7CisgICAgICAgICAgICAgIH0pCisgICAgICAgICAgfSkKKyAg ICAgICAgfQogICAgICAgICByZXR1cm4gc2VsZjsKICAgICAgIH0sCiAgICAg ICAvLyBDcmVhdGUgYSByZXNldCBmdW5jdGlvbiwgd2hpY2ggYWxsb3cgdXMg dG8gcmVtb3ZlIHRoZSBuZXN0ZWQgb2JqZWN0LgpAQCAtNzI1LDEzICs3NTYs MTkgQEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAg ICAgICAgICAgIGludmFsaWRNb2RlbHMgPSBzZWxmLnNlc3NBdHRyc1snaW52 YWxpZCddOwogCiAgICAgICAgIGlmIChzZWxmLnRyYWNrQ2hhbmdlcykgewot ICAgICAgICAgIC8vIEZpbmQgdGhlIG9iamVjdCB0aGUgaW52YWxpZCBsaXN0 LCBpZiBmb3VuZCByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdAorICAgICAgICAg IC8vIE5vdyBjaGVjayB1bmlxdWVuZXNzIG9mIGN1cnJlbnQgbW9kZWwgd2l0 aCBvdGhlciBtb2RlbHMuCisgICAgICAgICAgdmFyIGlzVW5pcXVlID0gc2Vs Zi5jaGVja0R1cGxpY2F0ZVdpdGhNb2RlbChtKTsKKworICAgICAgICAgIC8v IElmIHVuaXF1ZSB0aGVuIGZpbmQgdGhlIG9iamVjdCB0aGUgaW52YWxpZCBs aXN0LCBpZiBmb3VuZCByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdAogICAgICAg ICAgIC8vIGFuZCBpbmZvcm0gdGhlIHBhcmVudCB0aGF0IC0gSSBhbSBhIHZh bGlkIG9iamVjdCBub3cuCi0gICAgICAgICAgaWYgKG0uY2lkIGluIGludmFs aWRNb2RlbHMpIHsKKworICAgICAgICAgIGlmIChpc1VuaXF1ZSAmJiBtLmNp ZCBpbiBpbnZhbGlkTW9kZWxzKSB7CiAgICAgICAgICAgICBkZWxldGUgaW52 YWxpZE1vZGVsc1ttLmNpZF07CiAgICAgICAgICAgfQogCi0gICAgICAgICAg dGhpcy50cmlnZ2VyVmFsaWRhdGlvbkV2ZW50LmFwcGx5KHRoaXMpOworICAg ICAgICAgIGlmIChpc1VuaXF1ZSkgeworICAgICAgICAgICAgdGhpcy50cmln Z2VyVmFsaWRhdGlvbkV2ZW50LmFwcGx5KHRoaXMpOworICAgICAgICAgIH0K ICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODM3LDcg Kzg3NCw2IEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4sICQsIEJhY2tib25lKSB7 CiAgICAgICAgIHJldHVybiAoXy5maW5kSW5kZXgodGhpcy5zZXNzQXR0cnNb dHlwZV0sIGNvbXBhcmF0b3IpKTsKICAgICAgIH0sCiAgICAgICBvbk1vZGVs QWRkOiBmdW5jdGlvbihvYmopIHsKLQogICAgICAgICBpZiAoIXRoaXMudHJh Y2tDaGFuZ2VzKQogICAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC04NzEs MjUgKzkwNywyMSBAQCBmdW5jdGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9u ZSkgewogICAgICAgICAgICAgICAoc2VsZi5zZXNzQXR0cnNbJ2ludmFsaWQn XSlbb2JqLmNpZF0gPSBtc2c7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmICgndmFsaWRhdGUn IGluIG9iaiAmJiB0eXBlb2Yob2JqLnZhbGlkYXRlKSA9PT0gJ2Z1bmN0aW9u JykgeworICAgICAgICAgICAgbXNnID0gb2JqLnZhbGlkYXRlKCk7CiAKLSAg ICAgICAgICAvLyBMZXQgdGhlIHBhcmVudC9saXN0ZW5lciBrbm93IGFib3V0 IG15IHN0YXR1cyAodmFsaWQvaW52YWxpZCkuCi0gICAgICAgICAgdGhpcy50 cmlnZ2VyVmFsaWRhdGlvbkV2ZW50LmFwcGx5KHRoaXMpOwotCi0gICAgICAg ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCd2YWxp ZGF0ZScgaW4gb2JqICYmIHR5cGVvZihvYmoudmFsaWRhdGUpID09PSAnZnVu Y3Rpb24nKSB7Ci0gICAgICAgICAgbXNnID0gb2JqLnZhbGlkYXRlKCk7Ci0K LSAgICAgICAgICBpZiAobXNnKSB7Ci0gICAgICAgICAgICAoc2VsZi5zZXNz QXR0cnNbJ2ludmFsaWQnXSlbb2JqLmNpZF0gPSBtc2c7CisgICAgICAgICAg ICBpZiAobXNnKSB7CisgICAgICAgICAgICAgIChzZWxmLnNlc3NBdHRyc1sn aW52YWxpZCddKVtvYmouY2lkXSA9IG1zZzsKKyAgICAgICAgICAgIH0KICAg ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgc2VsZi5zZXNzQXR0cnNb J2FkZGVkJ10ucHVzaChvYmopOworICAgICAgICAgIHNlbGYuc2Vzc0F0dHJz WydhZGRlZCddLnB1c2gob2JqKTsKIAotICAgICAgICAvKgotICAgICAgICAg KiBTZXNzaW9uIGhhcyBiZWVuIGNoYW5nZWQKLSAgICAgICAgICovCi0gICAg ICAgIChzZWxmLmhhbmRsZXIgfHwgc2VsZikudHJpZ2dlcigncGdhZG1pbi1z ZXNzaW9uOmFkZGVkJywgc2VsZiwgb2JqKTsKKyAgICAgICAgICAvKgorICAg ICAgICAgICAqIFNlc3Npb24gaGFzIGJlZW4gY2hhbmdlZAorICAgICAgICAg ICAqLworICAgICAgICAgIChzZWxmLmhhbmRsZXIgfHwgc2VsZikudHJpZ2dl cigncGdhZG1pbi1zZXNzaW9uOmFkZGVkJywgc2VsZiwgb2JqKTsKKyAgICAg ICAgfQogCiAgICAgICAgIC8vIExldCB0aGUgcGFyZW50L2xpc3RlbmVyIGtu b3cgYWJvdXQgbXkgc3RhdHVzICh2YWxpZC9pbnZhbGlkKS4KICAgICAgICAg dGhpcy50cmlnZ2VyVmFsaWRhdGlvbkV2ZW50LmFwcGx5KHRoaXMpOwpAQCAt ODk3LDcgKzkyOSw2IEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4sICQsIEJhY2ti b25lKSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgfSwKICAgICAg IG9uTW9kZWxSZW1vdmU6IGZ1bmN0aW9uKG9iaikgewotCiAgICAgICAgIGlm ICghdGhpcy50cmFja0NoYW5nZXMpCiAgICAgICAgICAgcmV0dXJuIHRydWU7 CiAKQEAgLTkxNyw2ICs5NDgsOCBAQCBmdW5jdGlvbihfLCBwZ0FkbWluLCAk LCBCYWNrYm9uZSkgewogCiAgICAgICAgICAgKHNlbGYuaGFuZGxlciB8fCBz ZWxmKS50cmlnZ2VyKCdwZ2FkbWluLXNlc3Npb246cmVtb3ZlZCcsIHNlbGYs IGNvcHkpOwogCisgICAgICAgICAgc2VsZi5jaGVja0R1cGxpY2F0ZVdpdGhN b2RlbChjb3B5KTsKKwogICAgICAgICAgIC8vIExldCB0aGUgcGFyZW50L2xp c3RlbmVyIGtub3cgYWJvdXQgbXkgc3RhdHVzICh2YWxpZC9pbnZhbGlkKS4K ICAgICAgICAgICB0aGlzLnRyaWdnZXJWYWxpZGF0aW9uRXZlbnQuYXBwbHko dGhpcyk7CiAKQEAgLTkzNiw2ICs5NjksOCBAQCBmdW5jdGlvbihfLCBwZ0Fk bWluLCAkLCBCYWNrYm9uZSkgewogCiAgICAgICAgIHNlbGYuc2Vzc0F0dHJz WydkZWxldGVkJ10ucHVzaChvYmopOwogCisgICAgICAgIHNlbGYuY2hlY2tE dXBsaWNhdGVXaXRoTW9kZWwob2JqKTsKKwogICAgICAgICAvLyBMZXQgdGhl IHBhcmVudC9saXN0ZW5lciBrbm93IGFib3V0IG15IHN0YXR1cyAodmFsaWQv aW52YWxpZCkuCiAgICAgICAgIHRoaXMudHJpZ2dlclZhbGlkYXRpb25FdmVu dC5hcHBseSh0aGlzKTsKIApAQCAtOTg1LDEyICsxMDIwLDEyIEBAIGZ1bmN0 aW9uKF8sIHBnQWRtaW4sICQsIEJhY2tib25lKSB7CiAgICAgICAgIH0KICAg ICAgIH0sCiAgICAgICBvbk1vZGVsQ2hhbmdlOiBmdW5jdGlvbihvYmopIHsK KyAgICAgICAgdmFyICBzZWxmID0gdGhpczsKIAogICAgICAgICBpZiAoIXRo aXMudHJhY2tDaGFuZ2VzIHx8ICEob2JqIGluc3RhbmNlb2YgcGdCcm93c2Vy Lk5vZGUuTW9kZWwpKQogICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg ICAgIHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICAgIGlkeCA9IHNlbGYu b2JqRmluZEluU2Vzc2lvbihvYmosICdhZGRlZCcpOworICAgICAgICB2YXIg aWR4ID0gc2VsZi5vYmpGaW5kSW5TZXNzaW9uKG9iaiwgJ2FkZGVkJyk7CiAK ICAgICAgICAgLy8gSXQgd2FzIG5ld2x5IGFkZGVkIG1vZGVsLCB3ZSBkb24n dCBuZWVkIHRvIGFkZCBpbnRvIHRoZSBjaGFuZ2VkCiAgICAgICAgIC8vIGxp c3QuCkBAIC0xMDM0LDYgKzEwNjksNzQgQEAgZnVuY3Rpb24oXywgcGdBZG1p biwgJCwgQmFja2JvbmUpIHsKICAgICAgICAgKHNlbGYuaGFuZGxlciB8fCBz ZWxmKS50cmlnZ2VyKCdwZ2FkbWluLXNlc3Npb246Y2hhbmdlZCcsIHNlbGYs IG9iaik7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9LAorCisg ICAgICAvKgorICAgICAgICogVGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIGlm IGdpdmVuIG1vZGVsIGlzIHVuaXF1ZSBvciBkdXBsaWNhdGUgaW4KKyAgICAg ICAqIGNvbGxlY3Rpb24gYW5kIHNldC9jbGVhciBkdXBsaWNhdGUgZXJyb3Jz IG9uIG1vZGVscy4KKyAgICAgICAqLworICAgICAgY2hlY2tEdXBsaWNhdGVX aXRoTW9kZWw6IGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgICAgIGlmICghKCdr ZXlzJyBpbiBtb2RlbCkgfHwgXy5pc0VtcHR5KG1vZGVsLmtleXMpKSB7Cisg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICB2 YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICBjb25kaXRpb24gPSB7fSwK KyAgICAgICAgICAgIHByZXZpb3VzX2NvbmRpdGlvbiA9IHt9OworCisgICAg ICAgIF8uZWFjaChtb2RlbC5rZXlzLCBmdW5jdGlvbihrZXkpIHsKKyAgICAg ICAgICBjb25kaXRpb25ba2V5XSA9IG1vZGVsLmdldChrZXkpOworICAgICAg ICAgIGlmKGtleSBpbiBtb2RlbC5fcHJldmlvdXNfa2V5X3ZhbHVlcykgewor ICAgICAgICAgICAgICBwcmV2aW91c19jb25kaXRpb25ba2V5XSA9IG1vZGVs Ll9wcmV2aW91c19rZXlfdmFsdWVzW2tleV07CisgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICBwcmV2aW91c19jb25kaXRpb25ba2V5XSA9 IG1vZGVsLnByZXZpb3VzKGtleSk7CisgICAgICAgICAgICB9CisgICAgICAg IH0pOworCisgICAgICAgIC8vIFJlc2V0IHByZXZpb3VzbHkgY2hhbmdlZCB2 YWx1ZXMuCisgICAgICAgIG1vZGVsLl9wcmV2aW91c19rZXlfdmFsdWVzID0g e307CisKKyAgICAgICAgdmFyIG9sZF9jb25mbGljdGluZ19tb2RlbHMgPSAg c2VsZi53aGVyZShwcmV2aW91c19jb25kaXRpb24pOworCisgICAgICAgIGlm IChvbGRfY29uZmxpY3RpbmdfbW9kZWxzLmxlbmd0aCA9PSAxKSB7CisgICAg ICAgICAgdmFyIG0gPSBvbGRfY29uZmxpY3RpbmdfbW9kZWxzWzBdOworICAg ICAgICAgIHNlbGYuY2xlYXJJbnZhbGlkU2Vzc2lvbklmTW9kZWxWYWxpZCht KTsKKyAgICAgICAgfQorCisgICAgICAgIG5ld19jb25mbGljdGluZ19tb2Rl bHMgPSBzZWxmLndoZXJlKGNvbmRpdGlvbik7CisgICAgICAgIGlmIChuZXdf Y29uZmxpY3RpbmdfbW9kZWxzLmxlbmd0aCA9PSAwKSB7CisgICAgICAgICAg c2VsZi5jbGVhckludmFsaWRTZXNzaW9uSWZNb2RlbFZhbGlkKG1vZGVsKTsK KyAgICAgICAgfSBlbHNlIGlmIChuZXdfY29uZmxpY3RpbmdfbW9kZWxzLmxl bmd0aCA9PSAxKSB7CisgICAgICAgICAgc2VsZi5jbGVhckludmFsaWRTZXNz aW9uSWZNb2RlbFZhbGlkKG1vZGVsKTsKKyAgICAgICAgICBzZWxmLmNsZWFy SW52YWxpZFNlc3Npb25JZk1vZGVsVmFsaWQobmV3X2NvbmZsaWN0aW5nX21v ZGVsc1swXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdmFyIG1z ZyA9ICJEdXBsaWNhdGUgcm93cy4iOworICAgICAgICAgIHNldFRpbWVvdXQo ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBfLmVhY2gobmV3X2NvbmZsaWN0 aW5nX21vZGVscywgZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICBzZWxm LnRyaWdnZXIoCisgICAgICAgICAgICAgICAgICAgICdwZ2FkbWluLXNlc3Np b246bW9kZWw6aW52YWxpZCcsIG1zZywgbSwgc2VsZi5oYW5kbGVyCisgICAg ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIG0udHJpZ2dlcigK KyAgICAgICAgICAgICAgICAgICAgJ3BnYWRtaW4tc2Vzc2lvbjptb2RlbDpk dXBsaWNhdGUnLCBtLCBtc2cKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAg ICAgICAgICAgIH0pOworICAgICAgICAgIH0sIDEwKTsKKworICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgIH0sCisgICAgICBjbGVhckludmFsaWRTZXNzaW9uSWZNb2Rl bFZhbGlkOiBmdW5jdGlvbihtKSB7CisgICAgICAgIHZhciBlcnJvcnMgPSBt LmVycm9yTW9kZWwuYXR0cmlidXRlcywKKyAgICAgICAgICAgIGludmFsaWRN b2RlbHMgPSB0aGlzLnNlc3NBdHRyc1snaW52YWxpZCddOworCisgICAgICAg IG0udHJpZ2dlcigncGdhZG1pbi1zZXNzaW9uOm1vZGVsOnVuaXF1ZScsIG0K KyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgaWYgKF8uc2l6ZShl cnJvcnMpID09IDApIHsKKyAgICAgICAgICBkZWxldGUgaW52YWxpZE1vZGVs c1ttLmNpZF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaW52YWxp ZE1vZGVsc1ttLmNpZF0gPSBlcnJvcnNbT2JqZWN0LmtleXMoZXJyb3JzKVsw XV07CisgICAgICAgIH0KICAgICAgIH0KICAgICB9KTsKIAo= --001a1135177aad95450537e5a45b 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 --001a1135177aad95450537e5a45b--