Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dRxuP-0004Z9-8C for pgadmin-hackers@arkaria.postgresql.org; Mon, 03 Jul 2017 09:44:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dRxuO-0002tv-6W for pgadmin-hackers@arkaria.postgresql.org; Mon, 03 Jul 2017 09:44:44 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dRxuM-0002tl-Ue for pgadmin-hackers@lists.postgresql.org; Mon, 03 Jul 2017 09:44:43 +0000 Received: from mail-pg0-x236.google.com ([2607:f8b0:400e:c05::236]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dRxuI-0001WZ-LT for pgadmin-hackers@postgresql.org; Mon, 03 Jul 2017 09:44:41 +0000 Received: by mail-pg0-x236.google.com with SMTP id j186so92696476pge.2 for ; Mon, 03 Jul 2017 02:44:38 -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=ZQw00HeaPfXlTkPY/mTKqvxUj0cPNhFyMx5B/4Nyk0k=; b=nir53xtxGQ/AYAb0YdeLDxQcFvZUZBCQ3mKf//q2yk5eqe1K7FgHEW6BW7MzvpGlsn UKZdufslGrmUmzS0A4SiG1k/e/XYYgS/sQVeYWE60+rtnyymetJMQa007+5tvnhUNsF8 bzodYCYLSgnNXg3SCwB5zZNP4km+qqCyb8MxSgnKEQs0Ng9r65NWpQu9Ns0r1ebBB/of vsIEkqij/Hs9QQIEACBr7bfV0AHozSJYKRUf1oiVUeiY5t0h6YsvAtiF2+0G7Nxfo0a9 nAg6h2iU7f6s6Bi3IDLax6upWciaysINw0yOUFRT7X5FtBwCZ7qznf0ZN8Au9Ac/Yuet rZEQ== 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=ZQw00HeaPfXlTkPY/mTKqvxUj0cPNhFyMx5B/4Nyk0k=; b=iN7hGymqZHmxSNpdj/n06IynC4xNiSmqaWis/xlbdQcD/NSi4T5RkIMtQXrvQFEbhe 2Xti3iYOVWvFbGbSL7YjPmiivQ5yoD5CE7/uOW8Kx2BpG5BMbinO8c+8tWD/6K+tQwZe NT7uWB08ENjpsv73YxClnFS/gYa9aUZrHzmjFcFvzeG0KvtppTixKI8sIYHKqGYi0pov EVIAUN1JaHAcFJksHFnJiTh5VRZLrUqghKKkRLPueaJA0gjVti2JhDGcZlGlwXcawP0M hEhJ10R0nEZbEmmQIT+dNypn4aIY+3fatzBpBiZFFQFMTKIVZABZEUFzBYzdVIfo93LM +jYQ== X-Gm-Message-State: AIVw1102fofAj5HxEwCy1cD8yp2hkiyOdaz59M5v8ejuqQuJA0G9Rrup mYA71JJPSnODz9T6YxyqCwZpqXoC33nb X-Received: by 10.84.248.10 with SMTP id p10mr9400659pll.89.1499075077473; Mon, 03 Jul 2017 02:44:37 -0700 (PDT) MIME-Version: 1.0 Received: by 10.100.134.226 with HTTP; Mon, 3 Jul 2017 02:44:35 -0700 (PDT) In-Reply-To: References: From: Akshay Joshi Date: Mon, 3 Jul 2017 15:14:35 +0530 Message-ID: Subject: Re: [pgadmin-hackers] Declarative partitioning in pgAdmin4 To: Ashesh Vashi Cc: Harshal Dhumal , pgadmin-hackers , Dave Page , Robert Eckhardt , Shirley Wang Content-Type: multipart/mixed; boundary="f403045fe3ec7e71d80553669df4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Unsubscribe: , List-Archive: Precedence: bulk --f403045fe3ec7e71d80553669df4 Content-Type: multipart/related; boundary="f403045fe3ec7e71d50553669df3" --f403045fe3ec7e71d50553669df3 Content-Type: multipart/alternative; boundary="f403045fe3ec7e71d20553669df2" --f403045fe3ec7e71d20553669df2 Content-Type: text/plain; charset="UTF-8" Hi Ashesh On Fri, Jun 30, 2017 at 12:46 PM, Ashesh Vashi < ashesh.vashi@enterprisedb.com> wrote: > On Thu, Jun 29, 2017 at 5:02 PM, Ashesh Vashi < > ashesh.vashi@enterprisedb.com> wrote: > >> Hi Harshal, >> >> These are initial review comments. >> 1. >> Please share a separate patch for generic code changes from this patch >> for the following files: >> - web/pgadmin/tools/user_management/templates/user_management/ >> js/user_management.js >> - web/pgadmin/static/js/backform.pgadmin.js >> - web/pgadmin/static/js/backgrid.pgadmin.js >> >> This should be committed as separate functionality, and should not be >> part of this commit. >> > Committed. > >> 2. >> Please put a space after a colon (:) in javascript object definition. >> i.e. >> {cell: Backgrid.Extension.StringDepCell, cellHeaderClasses: >> 'width_percent_30'} >> >> 3. >> Conversion of ptid (partition table OID) to tid (table OID) for its >> children must not be in 'web/pgadmin/browser/utils.py' file. >> Please create a inherited class of PGChildNodeView, and extend the >> functionality in it, and use it as the base class for all children of table. >> >> I will keep you posted for further review comments. >> > 4. > URL definition of the javascript for tables & partition tables utility > must be exposed from the table/partition table module, and not from the > database module. > i.e. > No changes should be done in the database module for this feature. Hence - > I don't expect any change in the file: > web/pgadmin/browser/server_groups/servers/databases/__init__.py > Fixed. Apart from above this patch contains test cases as well. > > -- Thanks, Ashesh > >> >> >> -- >> >> Thanks & Regards, >> >> Ashesh Vashi >> EnterpriseDB INDIA: Enterprise PostgreSQL Company >> >> >> >> *http://www.linkedin.com/in/asheshvashi* >> >> >> On Fri, Jun 23, 2017 at 6:55 PM, Harshal Dhumal < >> harshal.dhumal@enterprisedb.com> wrote: >> >>> Hi, >>> >>> Please find attached patch for partition support. >>> >>> This patch includes all the work done by Akashy and support for child >>> nodes (constraints, rules, index, triggers and partition itself ) under >>> partition node. >>> >>> >>> Thanks, >>> >>> -- >>> *Harshal Dhumal* >>> *Sr. Software Engineer* >>> >>> EnterpriseDB India: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >>> On Tue, Jun 20, 2017 at 12:16 AM, Shirley Wang wrote: >>> >>>> >>>> >>>> On Mon, Jun 19, 2017 at 1:59 AM Akshay Joshi < >>>> akshay.joshi@enterprisedb.com> wrote: >>>> >>>>> On Fri, Jun 16, 2017 at 11:16 PM, Shirley Wang >>>>> wrote: >>>>> >>>>>> Looks good. I noticed people clicking back and forth to the columns >>>>>> tab to remember which columns they've created while filling out the >>>>>> Expressions column. It might be better to have a list of the columns and >>>>>> the datatype above the 'Partition Keys' subnode and have columns as a type >>>>>> field rather than a drop down. >>>>>> >>>>> >>>>> I think we should not duplicate that data as we already have all >>>>> the information on "Columns" tab and by providing drop down user can select >>>>> columns from there only. >>>>> >>>>>> >>>>>> Also, I think the fields someone sees after selecting the Key type >>>>>> needs to depend on what they select. Seeing both Column and Expressions >>>>>> type field might lead someone to think they need to fill out both fields. >>>>>> >>>>> >>>>> We can't, because user can select one column and provide an >>>>> expression as partition key in this case we will have to show both the >>>>> columns in subnode control. Anyways when user select columns I have >>>>> disabled the expression cell and if user selects expression column cell is >>>>> disabled. >>>>> >>>> >>>> Ah I see what you mean. What I meant was that the column would change >>>> depending on if someone selects Column or Expressions from the dropdown >>>> [image: expression.png] >>>> Can a user select more than one key type? The use case I can see where >>>> hiding 'Columns' or 'Expressions' would fail is if someone can create an >>>> expression key type and a column key type. >>>> >>>> Disabling a feature is one way to guide user behavior, but it doesn't >>>> provide enough context for someone to understand why it's disabled. It's >>>> better to only display what is absolutely necessary and hide fields that >>>> are unrelated to the workflow. >>>> >>>> Typically, disabling a UI element is useful when that disabled UI >>>> element also provides some context or value while disabled. In this case, >>>> I'm not sure it is. >>>> >>>> If hiding options isn't possible, providing some text in the fields >>>> (like N/A or --) would be helpful. >>>> >>>> >>>> >>>>> >>>>>> [image: coluns_partitioning.png] >>>>>> When is the 'In' column in the Partitions subnode enabled? >>>>>> >>>>> >>>>> In case of 'List' Partition. >>>>> >>>> >>>> It would improve the experience if the 'In' column was removed when a >>>> user selects 'Range' partitions then. And then if a user is creating a >>>> 'List' partition, 'From/To' should be hidden. In this case, 'From/To' and >>>> 'In' are dependent on that first drop down step, so seeing 'In' while on >>>> 'Range partitions' (and 'From/To' on 'List partitions') is not providing >>>> any value. >>>> >>>> >>>>> >>>>>> For the NoteControl on the bottom, what do 'Mode Control' or 'Attach >>>>>> Mode' refer to? And how can I tell the difference between 'Create Mode' and >>>>>> 'Edit Mode'? >>>>>> >>>>> >>>>> 'Mode control' is a switch control in subnode control that should >>>>> be "Mode switch control". 'Create Mode' is when user creates the new table >>>>> by clicking create-> table and 'Edit Mode' is when user open the properties >>>>> dialog for the existing table. In case of 'Edit Mode' there are two ways >>>>> user can create/attach partitions. In Attach mode we will identify and list >>>>> down the suitable tables to be attached. >>>>> >>>> >>>> I see. Describing these various states is great in case a user needs >>>> it. What are your thoughts on having it live in the documentation of >>>> pgAdmin4 rather than in the dialog? This seems to be the established >>>> pattern for all other explanations. >>>> >>>>> >>> >> > -- *Akshay Joshi* *Principal Software Engineer * *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* --f403045fe3ec7e71d20553669df2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Ashesh

On Fri, Jun 30, 2017 at 12:46 PM, Ashesh Vashi &= lt;ashes= h.vashi@enterprisedb.com> wrote:
On Thu, Jun 29, 2017 at 5:02 PM, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:
Hi Harshal,
These are initial review comments.
1.
Plea= se share a separate patch for generic code changes from this patch for the = following files:
- web/pgadmin/tools/user_management/templat= es/user_management/js/user_management.js
- web/pgadmin/stati= c/js/backform.pgadmin.js
- web/pgadmin/static/js/backgrid.pgadmin.js

This should be committed as separate= functionality, and should not be part of this commit.

=C2=A0 =C2=A0= =C2=A0 Committed.=C2=A0
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">

=
2.
Please put a space after a colon (:) in javascript = object definition.
i.e.
{cell: Backgrid.E= xtension.StringDepCell, cellHeaderClasses: 'width_percent_30'}=

3.
Conversion of ptid (partition= table OID) to tid (table OID) for its children must not be in 'web/pga= dmin/browser/utils.py' =C2=A0file.
Please create a inherited = class of PGChildNodeView, and extend the functionality in it, and use it as= the base class for all children of table.

I will = keep you posted for further review comments.=C2=A0
=
4.
URL definition of the javascript for tables & partition tables = utility must be exposed from the table/partition table module, and not from= the database module.
i.e.
No changes should be done in= the database module for this feature. Hence - I don't expect any chang= e in the file:
web/pgadmin/browser/server_groups/servers/dat= abases/__init__.py

=
=C2=A0 =C2=A0 Fixed.

=C2=A0 =C2=A0Apart from = above this patch contains test cases as well.=C2=A0

-- Thanks, Ashesh

--

Thanks & Regards,<= /span>

Ashesh Vashi

EnterpriseDB INDIA: Enterprise PostgreSQL Co= mpany


http://www.linkedin.com/in/asheshvashi


On Fri, Jun 23, 2017 at 6:55 PM, Harshal Dhu= mal <harshal.dhumal@enterprisedb.com> wro= te:
H= i,

Please find attached patch for partition support.

This patch includes all the work done by Akashy and s= upport for child nodes (constraints, rules, index, triggers and partition i= tself ) under partition node.


Thank= s,

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

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

On Tue, Jun 20, 2017 at 12:16 AM, Shirley Wa= ng <swang@pivotal.io> wrote:


On Mon, Jun 19, 2017 at 1:59 AM Akshay Joshi <akshay.joshi@= enterprisedb.com> wrote:
On Fri, Jun 16, 2017 at 11:16 PM, Shirley Wang <swang@pi= votal.io> wrote:
Looks good. I noticed people clicking back and = forth to the columns tab to remember which columns they've created whil= e filling out the Expressions column. It might be better to have a list of = the columns and the datatype above the 'Partition Keys' subnode and= have columns as a type field rather than a drop down.

=
=C2=A0 =C2=A0I think we should not duplicat= e that data as we already have all the information on "Columns" t= ab and by providing drop down user can select columns from there only.=C2= =A0

Also, I think the fields someone sees af= ter selecting the Key type needs to depend on what they select. Seeing both= Column and Expressions type field might lead someone to think they need to= fill out both fields.

<= /div>
=C2=A0 =C2=A0We can't, because user can select one column and pro= vide an expression as partition key in this case we will have to show both = the columns in subnode control. Anyways when user select columns I have dis= abled the expression cell and if user selects expression column cell is dis= abled. =C2=A0

Ah I see what you mean. What I meant was that the column would change dep= ending on if someone selects Column or Expressions from the dropdown
<= div>3D"expression.png"
Can a user select more than one key= type? The use case I can see where hiding 'Columns' or 'Expres= sions' would fail is if someone can create an expression key type and a= column key type.

Disabling a feature is one way t= o guide user behavior, but it doesn't provide enough context for someon= e to understand why it's disabled. It's better to only display what= is absolutely necessary and hide fields that are unrelated to the workflow= .=C2=A0

Typically, disabling a UI element is usefu= l when that disabled UI element also provides some context or value while d= isabled. In this case, I'm not sure it is.

If = hiding options isn't possible, providing some text in the fields (like = N/A or --) would be helpful.

=C2=A0

3D"coluns_partitioning.png"
When is the 'In' column in the Partitions subnode e= nabled?=C2=A0

=C2= =A0 =C2=A0 In case of 'List' Partition.=C2=A0

It would improve the experience i= f the 'In' column was removed when a user selects 'Range' p= artitions then. And then if a user is creating a 'List' partition, = 'From/To' should be hidden. In this case, 'From/To' and = 9;In' are dependent on that first drop down step, so seeing 'In'= ; while on 'Range partitions' (and 'From/To' on 'List p= artitions') is not providing any value.
=C2=A0

For the NoteControl= on the bottom, what do 'Mode Control' or 'Attach Mode' ref= er to? And how can I tell the difference between 'Create Mode' and = 'Edit Mode'?

<= div>=C2=A0 =C2=A0'Mode control' is a switch control in subnode cont= rol that should be "Mode switch control". 'Create Mode' i= s when user creates the new table by clicking create-> table and 'Ed= it Mode' is when user open the properties dialog for the existing table= . In case of 'Edit Mode' there are two ways user can create/attach = partitions. In Attach mode we will identify and list down the suitable tabl= es to be attached.=C2=A0

I see. Describing these various states is great in case a user= needs it. What are your thoughts on having it live in the documentation of= pgAdmin4 rather than in the dialog? This seems to be the established patte= rn for all other explanations.






--
Akshay Joshi


<= b>Phone: +91 20-3058-9517
Mobile: +91 976-788= -8246
--f403045fe3ec7e71d20553669df2-- --f403045fe3ec7e71d50553669df3 Content-Type: image/png; name="expression.png" Content-Disposition: inline; filename="expression.png" Content-Transfer-Encoding: base64 Content-ID: <15cc18ce64fb15721d31> X-Attachment-Id: 15cc18ce64fb15721d31 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 EolEIpGc+iJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQi kUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolE IpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJ RCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQS iUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKE EolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoi hBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUq IoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQl KiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFIJCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgk JSoihBKJRCKRSCQSiURSoiJCKJFIJBKJRCKRSCQlKiKEEolEIpFIJBKJRFKiIkIokUgkEolEIpFI JCUqIoQSiUQikUgkEolEUqIiQiiRSCQSiUQikUgkJSoihBKJRCKRSCQSiURSYvLLL7+4srIyEUKJ RCKRSCQSiUQiKTXJixC2bNlSEARBEARBEARB+A3hnnvuESEUBEEQBEEQBEEoRXTt2jUdIfzhhx8E QRAEQRAEQRCE3xA+/fRTEUJBEARBEARBEIRShAihIAiCIAiCIAhCiUKEUBAEQRAEQRAEoURRbUI4 f/58N2fOHDdr1qxTAtSFOp3udRUEQRAEQSh1jJo41d3wZHf3t9tecb9r2f43C9p3w1Pd3eiovUl6 mDNmtJvY6mY3pt45bvSZfxQioIuJt94c6WZMos4WThvhfuxzuVvT+X+5nzv+byUL2v9j38vdwukj M/pZtQjhvHnz3OzZs93GjRvdkSNH/HcsTiYOHz7s60KdqNvpWldBEARBEIRSx5hJU91ZrTq4eg/2 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 IAglimyE8P8H4sam5is+PfIAAAAASUVORK5CYII= --f403045fe3ec7e71d50553669df3 Content-Type: image/png; name="coluns_partitioning.png" Content-Disposition: inline; filename="coluns_partitioning.png" Content-Transfer-Encoding: base64 Content-ID: <15cb1f7bd866477d6182> X-Attachment-Id: 15cb1f7bd866477d6182 iVBORw0KGgoAAAANSUhEUgAAA4QAAALvCAYAAAA9CgsWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA AXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAATnbSURBVHgB7L13cBzH/aetqqururqru3PV3f11 VVeuu7eu3tc/B9lUlizJClawomVZwYpWtGQr50BSgRIVSWVSpERSmRLFIOYIkmACE8CcAeYcQYKZ 7Hc+DXyXjeEusFgugF3M81Q9BezO7ITdntn+TPf0nrRixQqHiIiIiIiIyfOkYtpYREREREREzJ8E QkRERERExIRKIEREREREREyoxwXCXz41BBEREREREduYBEJERERERMSESiBERERERERMqARCRERE RETEBPqrpwYTCBEREREREZPor5/6iUCIiIiIiIhYCF7asb974f2v3Uc9ernPP/88J/VaLUPLanh9 g91v8hEIf/HsSPd/PljjftFjs/vlpxvdr3tsdL/tscG167nenfrZMU+LPCV67jc91rv/t9vG6DWr /WsL9cNARERERERsKe95s2/OITCTd73Rt4F1DnYn5yMQ/n8Kdd3WuadKD7pXp+13Xabvdr1mbXMD 525yo+ZvcGMXyvVuzIL1bkD5Ovf2+PXur/02ut90W+P+jUCIiIiIiIgJV615CnC9evVyJSUlbvHi xTn/hqBeq2VoWVpm5pbCwe63Tw3KTyD8Vbf1rkPZEff6zCPupWkH3QuT97unJtS4h8bsdvcM3+X+ Nmi7u/bHre6Sbza7s3pvcr+MWhP/H1oIERERERER3Qvvf+XDm4JcrkEwrpalZWrZ6debx0D46ygQ vlJ2yL0764B7vWyf6zB5r3tq/B73r9HV7q5hO91NA7e5a36IAuG3m925X2xyv+m5yXcZ/f8IhIiI iIiImHDtnsETaRlM11Jo9xSmX28eA+Fvu69131ZscxVLV7m5S6vcnKUr3dxlq9wc72o3Z/ma6G/k irVu+tIoPI7b6H758RoCISIiIiIiJl675y9fYdC05aZfbx4D4WndV7nJ81e6qsoVrqqqMvpb6ZYt W+pWVlW5VStXusro+XVr17oN69e7TRs3uhnLN7nTP13j/t9nCISIiIiIiJhsiz8QfrrKTVtQ6Sqj eSujMLhkyRI3YsQIt3z5cv/6MWPG+L9rfShc5+at2uzO6NH0QPh83wpXvnK721K9363bvtf9OH21 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 tnbWDRKj8KjpGjjGumtqlNHfvzTKD04TsmLTbh9GT6QAWADcHLVk6rFGObUBbYS6xFpYva9nWWow HLV8Gmq91M9K6PXrttdO71Q3yui3UUtiOMqowuD9n/HzE4iIiIiIhWA29xAuXbrUdx0Nn9NP/ekn /lr1HsKW9uq3x/v75NSN8qyO2QVK/YyDul4qBMV/h/D6rqV+cJXwd/5C9fuDV0dh9KwOx153Seex fv0a4KW59vPM9iPdfdH23tltaoPz6XcI0+1X3HOjMKv9vOvTqc22zYiIiIiI2HSzCYS52CYDISIi IiIiYluSQIiIiIiIiJhQP+rRywc3dQHNVxjUsrRMLTv9egmEiIiIiIiIre4L73/lw1tJSUneAqGW pWVq2enXSyBERERERERsdS/t2N+Ht169evkgdyIthXqtlqFlaZladvr1EggRERERERELwnve/C51 z1++vLNz3wbWSSBEREREREQsGNWapy6edk9hLuq1WkbmlkGTQIiIiIiIiJhQCYSIiIiIiIgJlUCI iIiIiIiYUAmEiIiIiIiICbUJgbBv376IiIiIiIjYRvzuu+/ct99+SyBERERERERMmk0KhKtXr0ZE RERERMQ24qpVqzL+uD2BEBERERERsQ1LIEREREREREyoBEJERERERMSESiBExKJz48aNbu/eve7w 4cOuraJ90z5qX4vps0FERMTikkCIiEXljh07XNLQPhfTZ4SIiIjFI4EQEYtGtZYdPXrUJQ3tMy2F iIiI2BwSCBGxaKypqXFJRfteTJ8VIiIiFocEQkQsGtvyPYONoX0vps8KERERi0MCISIWjUmnmD4r RERELA4JhIhYNCadYvqsEBERsTgkECJi0Zh0iumzQkRExOKQQIiIRWPSKabPChEREYtDAiEiFo1J p5g+K0RERCwO8x4If5q80D3y+RR3Q5fx7rYPJ7hX+k535YsKJ0wuXbHSvfL9DDdh9tK8Lre0Ypl7 /usyd/N7490tH0xwL35T5srmLc/qtdqWV76f7pZXrmyWfW4tfyxdkCoLf/94onuz/0y3eHnz7uPK qEBXrVyV02tHli12r0ZlY9WqxuetrMptHSdiRXQc6Xj6auzcRucdNm2R6zpodotvY1PV8fhy3xl+ 37KZvzH27NnjnnvuuXo+++yzbuTIkS5XwpFN161b5zp06OAOHTrU6LTmINv39eOh5b6smC9HvjVg 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 iIiIiFjs3vXp1KwzW7MGwj++TiBERERERERsSe/sNiXrzEYgREREREREbEMSCBERERERERMqgRAR ERERETGhEggRERERERGLyMtfG+Ee7THOvdBnfNY++dk4d/3bo45bFoEQERERERGxSOzwRYmbM2ee z16VlZVZq/kXLFjgHu/yXb3lEQgRERERERGLwItfGeamzZrjampq3OHDh92RI0ea5MGDB91Hn3Rz f3iyd2qZBEJERERERMQC99+eHOzu7DrSLVu+3B06dChnhw4d6m54qku0vJ/8cgs+EP7+pVHu3MDz Xh7tTn9xRF7f3N89P8wvO900rUvTfvvssLx/qNq3czqOcr95emi95095frhf56kvDM/7OhERERER sfhUILzvw5E+cx04cCCtajncsmWLq66uzjjPiBEj3N+eetv92xNFEAhPfmaoW7Rul1u+sTrlik3V bu7qHe79EYvdqc83PTD96ukh7taPJ7vL3xjnH//uuWFu8Ow1bnbVdv/4j6+Pcbd/MsWvW497TVjh Fq7d6W7+aFJeP9DfRMtfsGanm7pssw+G9vx5r4x2Zcu3umXRvr7wfUWzFShERERERCwe1aJngXD/ /v1pff/9991f//pX984777i9e/emnWf48OF1gXCQX25BB8LfPTfU7Tt42O3ed9DNWLHVTV++xZWv 3O6fO3T4iOsybFGT30gFvcpNu324rG2hG+nmrNrhw5mmfzBysTt05Kh74PMZ/vFnJcvd2m017vr3 J+b1A/3ts0Ndzf5Dbu32mlQgvPH9Ur8th6P1/zh9tftdM7RKIiIiIiJi8WmBcPny5T7spfP+++93 7dq1cw888IDbuXNn2nmGDRtWfIFw6Ybqeq1o/+o9wx08fNRVrNzhH5/2wgh3y0eT3Uv957rno1a1 a94dn5r3ss7jfKvbxa+NdS/9OM/d02OaW7l5j9u4c5+769Op7sz2I9xf3yt113WZ6Lfhi4krfCBT 2Dy7w0h3WdSSeF/Pab4bp5bX7vlh7sYPJ0XLql3Xn+paGuVFnca4q98e785/dbRr32+On+eyYHpo PBDe+P4k3xJpQVctmTbvBdHyHv9qtntlwDz353cnRPs73G+HtleB1uZr91ztcxe8Osa//s9dJriO /ea6DpE3RGFT6yykQo2IiIiIiNlpgXDZsmVuz549aQ0D4fbt29POU5SBcNnG+oFQoWvb7v1uwdra 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 5mXe1uUJBOn8889vSMhklCcesI9vfvObTeIUvyM4fnv55ZeXextrnHLKKY2NTNVJOMnODjvs0Pjt V77ylSbhmwr1uu+++8q5557bNybr9x/+8Ifl0EMPXeKYBP2CCy4Y1cb++te/NvaxvMbBiUL7xRlt jfEOkdVnv/jFLyZkVwcddFATw1cEMiyuXnTRRZPux2KQMWmjjTYqP//5zydUxlNPPVW22267cvbZ Z09q3WpceOGFZeutt15i4oNOJjOu8APjmEmhruNsRc61zTbblA022KCxwYneS1lf/vKXy/HHHz+u 6+TtG2+88WJxfjLw+OOPN/HAmF7/Lo589KMfbSa0R7teXiRXOOqoo4Z6kqXGs88+W770pS81MXxZ 3icJ4Tjx0EMPlfXXX78JXIKIAGMgmejM6njAOSRr22+//aSVKZiss846ZdVVV23a4h5HH3108/en P/3pcQXIcN4TTzyxfO1rX1vmAyTip44xkyQZQ0T32muvZXrfyexP5J4d1b/Tudm7M888s2lfm7yZ STXgSMD222+/cd3zV7/6VaMfZS7PYKu+X/ziF8s555wz0va2LvSfldHNNtusmXSZbF1L0o844ojl 1ublAYm6eGQQnozy+Ozmm29eVl555bLbbruNJI4GeDHhvV65lfREXJqKyQLi/MlPfrKZfJDgLu+J l374wx/+UDbddNO+9aFPdbbS0D527bXXNon+aDZmopItTvXdMhKetdZaq7FlZJ0NHXLIIc3fxvSJ jHe//vWvy9e//vUVghAec8wxDQlpJ+uToVdJq4nMn/70pxMqQ2z585//PCZhmAiiryTU/KC9+mSn jonWyYopdo4heldffXXfXUvae+mll5ZPfepTE1qdjHIjZo93bBOfTLBN1tgR6Kdj91tppZWaFfXR dnL5XZ4gpkxmvVZksCe+YSfCsrxPEsJxwgzqJptsUm644YaR3yRNZlj934BiFcSMj39/9rOfNdfE cr6gaXCWlJtZrIMfPZ522mnNMcTPgBWDDJ05JqmWMJ911lkN4npOhJQqe88992xWjmIGdDQEITRT 9L3vfa+pHzLn7zrxYohWlxAKK4B1YsiIzjjjjKbeyOBhhx22GCGUhEgW1Eu72v3vPLo6/fTTxzVQ jUUI1dv2FauGfvOvwF/f17YNhF4/WXGs76/e2qrtJ598clPGn/70p1HriPiY4TQj3z7mXldccUWj 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 SCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJS UlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKk koQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkp KSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJ QpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSU lJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQh TElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpK SkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCm pKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUl JSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNS UlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKS kjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSUlJSUlJSUlJQhlSSEKSkp KSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQMqSQhTElJSUlJSUlJSUlJ GVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpKSkpKSkpKypBKEsKUlJSU lJSUlJSUlJQhlSSEKSkpKSkpKSkpKSkpQypJCFNSUlJSUlJSUlJSUoZUkhCmpKSkpKSkpKSkpKQM qSQhTElJSUlJSUlJSUlJGVJJQpiSkpKSkpKSkpKSkjKkkoQwJSUlJSUlJSUlJSVlSCUJYUpKSkpK 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 7HTmYvhwDw0hPP7qsmsPixPCv42cd8ntj438vem+f32XFD5VVtrhmCXL/N4p5eo7F60IvfOPf5S/ v/XOotWi3v8POfuGhkS2r1mW6CKEd/UIWReu+Oia5f5TTlLZMuvii8rFvb/j2G3rfaxM+9xmZV4v 136zl29e+e3tyy09UthVzoweGbz+B98rb73xxqK2v/VW+cfbbzf/f3P+vHL9N7/Wtw7LA3/b6ydN XZ468rDO452E8LQ1lsBLp3ykwSunrlEW3PK7Xjvf+Od20dn39s5Zszn+8Anrl3fe/OexhY9fUR48 YuXywOErd5YL82/ar/STNxfMKU/8cZu+104GXrtxvzL/xUfKqxf0v88yI4Tz5s1bKiBEPr0Q3+Tz TN3SlgldhHCiZR1xxBGLEcBNN920bL755kusFE5GXROJRCKRSCSGHSOE8PunL4GGEB53VY8QXrVY 0n3xLQ+XD3zz2AbTb324TLvtbyPXbLrPhQ0p/NNVdy9R3s9Pu7G5/saHni3r7nlO89t3j7mqzH/j zWZ76np7LfrtQzueWv7t60eWf/3qoT0c1qwq/sf3Tisf+u7J5V+/dkTv+CkjZX6o9/u/ff2I5gU4 zd/O+erhzbX/1px7amfboJMQ9ghbF2Yec9RiOnh8+rRy8Tprllt7xO/iz25a5j/7zD8Jz+sLyh1f 266znDu++uUeAXqzvPP3v5cnD9x/0e+9lbdnlP/OO2XhnFfKXZtu3Px+08fXKdPX/kiZttZHmn/9 7fc7ewT08t69b+79fUXv3zh+68c/OnIf51z10UXH4Ore//0Wx2/r1fuSd8u+dO01yh3vHnt0jx8v IoSHH9pZ/05CeOrqS+DF03t1OGzNctWvPtzDh8oth69f3njs8h4DfqfMvegrzTlevvL6jKPKwofO Ln//20XltUevKLcfvUl57Oojy+PXHl2eO3G1zrLn3fibpo6v33dqee2Sb/WwQ4OFj1ywiFQ+d8fI uU8dt2q595D/Lncf/F/l4SNXKi+f8s9y/nb0yuWeQ/6r3NM79uDhK5XZJ//z2Eu9/z90xErNsXt7 5zx74qoj5b1w09GofHnsrG3L08ev2lnHZUYIX3vttQlj1qxZ5cILL1wMtl8uTZmBLkI40bKef/75 5tlGxO/kk0/u+cU7DY477rgRQrjWWmtNSl0TiUQikUgkhh1BCD/0vVMXw3/0sIgQXll2PWHxFcL7 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 m4/e/+t2h5STLrqpHHzODUvUBboI4W090teFG9davVzYI1jxbF4/aUjhaiuXW/uU83yPxJFHzj2n TF9tpabcG9Zcrfx19VXK3MdnNWRt5g937pGTt8qcBx8sN/ZW5a7vHb/lx4u2cv7toAPKPVtvOUII o9yZP9plEZE7+MAyu1cHctMPvt+UfV0P9x16cHPNE4cc2Dxv+My115TLVl+53NS7/2W9ez90xunl 0WOOWqycrvp3EsITP9SJNx46exHBvfLgcuUv/q1c9fP/Ua7Z+3+W6375P8vtv/2X5pxnf//B8sR1 R5e7T9++XN07fvXe/6M8Mm3f8vxd55U503boLPe16/b+JyGsfn/1/M83RG3hE1eXeVfv1pzz5BX7 lSeO+kB5/tgPlkeOW7e8cN/F5eXpO5aX7/9rmTV97/Lku8devOmI5vzX7z25ed7QFtEHDvuv5phz nrj812X2jDPKyyevUubffnhzn2f+tEV5rlf/rjouM0Log+1Lgy5CuLRlQhchnIxyH3jggXLZZZc1 uPfeeye9rolEIpFIJBLDjhFC+O5nJEbwrWPfJYTTy849WH1b4pwKH3z3/J2Oml526ZHIhhC2zvnZ yYs+cO+lMvuceFH5zv5nlL1+/5fy5POvNL/vfep15aq7H2/udfQ515TvHXhWmX7T/c2xZ2a/Wj77 szOacn552nUjBOyQ824dKf+ae55ofjvjklvLt/c7vZw+fdH2wzOuur+zzl2E8NYeQerC9GZlcEky +E7HS2Ueu/iv5XLP/XWUc9fmm5W35r66iChNn1au7RG96/f6SXnhrjub3+b0iNqMjddvSNvrs2eX 6/bcvdz0y73L6y8u2jL6t7+cX+7b/msjhDDKfahHIhcRuQMaQkmJC154vnf9T8qNvev/3ltYsV11 xqc2KHNuvL45d+bZfypX7fKDMvPPf2z+fuGcsxcrp6v+nYTwhA90wmclvNDllUeuXaSr3grcm/Nf bp79mzPzkuac+3//id7vf1/0kpuF88tbb7zWPAto1c71XeXOu+7n7xLCfRc/dtJKPb0tLPOfun3R /9+Y03zj8OGL9yn3ntUjgY8sspt5V+3WbDd9561/HnvurvMXEcIZR5YFtx7Q/N9W0Xv/+L3y8EW/ bOr49pxHm/ssuOPw5vhTN59SnrngO511XGaEcHbPKCaKadOmle22224xQrj++uuXffbZp7zYM7Cl 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 IpFIDCn+/+6eCsZPWwq7AAAAAElFTkSuQmCC --f403045fe3ec7e71d50553669df3-- --f403045fe3ec7e71d80553669df4 Content-Type: application/octet-stream; name="Partition_v5.patch" Content-Disposition: attachment; filename="Partition_v5.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j4nyl7ax0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9fX2luaXRfXy5weQppbmRleCBlNDBjNzg3Li40ZGM3M2Y1IDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL19faW5pdF9fLnB5CkBAIC0xNCw3ICsxNCw4IEBAIGltcG9ydCByZQog ZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiAKIGltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2Vy dmVyX2dyb3Vwcy5zZXJ2ZXJzIGFzIHNlcnZlcnMKLWZyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90 ZW1wbGF0ZSwgY3VycmVudF9hcHAsIHJlcXVlc3QsIGpzb25pZnkKK2Zyb20gZmxhc2sgaW1wb3J0 IHJlbmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgY3VycmVudF9hcHAsIHJlcXVlc3QsXAor ICAgIGpzb25pZnkKIGZyb20gZmxhc2tfYmFiZWwgaW1wb3J0IGdldHRleHQgYXMgXwogZnJvbSBw Z2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKIGZy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudXRpbHMg aW1wb3J0IFwKQEAgLTg2LDYgKzg3LDcgQEAgY2xhc3MgRGF0YWJhc2VNb2R1bGUoQ29sbGVjdGlv bk5vZGVNb2R1bGUpOgogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKwogYmx1 ZXByaW50ID0gRGF0YWJhc2VNb2R1bGUoX19uYW1lX18pCiAKIApkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3Rh dGljL2pzL3NjaGVtYS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hlbWEuanMKaW5kZXggMGU5MDk5Ny4u ZWY0OTZlNyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVtYS5qcworKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0 aWMvanMvc2NoZW1hLmpzCkBAIC0xNDUsNiArMTQ1LDE2IEBAIGRlZmluZSgncGdhZG1pbi5ub2Rl LnNjaGVtYScsIFsKICAgICBncm91cDogZ2V0dGV4dCgnVGFibGUnKSwgbW9kZTogWydlZGl0Jywg J2NyZWF0ZSddLAogICAgIHR5cGU6ICdzd2l0Y2gnLAogICAgIGRpc2FibGVkOiBmdW5jdGlvbiht KSB7CisgICAgICAvLyBJZiB0YWJsZSBpcyBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIGRpc2FibGVk IGl0LgorICAgICAgaWYgKG0udG9wICYmIG0udG9wLmdldCgnaXNfcGFydGl0aW9uZWQnKSkgewor ICAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gdW5zZXQgcmVzdCBvZiBhbGwKKyAgICAgICAgc2V0 VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICBtLnNldCgnYXV0b3ZhY3V1bV9jdXN0b20n LCBmYWxzZSk7CisgICAgICAgIH0sIDEwKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg IH0KKwogICAgICAgaWYoIW0udG9wLmluU2NoZW1hLmFwcGx5KHRoaXMsIFttXSkpIHsKICAgICAg ICAgcmV0dXJuIGZhbHNlOwogICAgICAgfQpAQCAtNDU5LDYgKzQ2OSwzMiBAQCBkZWZpbmUoJ3Bn YWRtaW4ubm9kZS5zY2hlbWEnLCBbCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgfQogICAg IH0pOworCisgICAgcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSA9IGZ1bmN0 aW9uKGkpIHsKKyAgICAgIHZhciBpZHggPSAwLAorICAgICAgICAgIHJlcyA9IHt9LAorICAgICAg ICAgIHQgPSBwZ0Jyb3dzZXIudHJlZTsKKworICAgICAgZG8geworICAgICAgICBkID0gdC5pdGVt RGF0YShpKTsKKyAgICAgICAgaWYgKAorICAgICAgICAgIGQuX3R5cGUgaW4gcGdCcm93c2VyLk5v ZGVzICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXS5oYXNJZAorICAgICAgICApIHsKKyAgICAg ICAgICBpZiAoZC5fdHlwZSA9PT0gJ3BhcnRpdGlvbicgfHwgZC5fdHlwZSA9PT0gJ3RhYmxlJykg eworICAgICAgICAgICAgaWYgKCEoJ3RhYmxlJyBpbiByZXMpKSB7CisgICAgICAgICAgICAgIHJl c1sndGFibGUnXSA9IF8uZXh0ZW5kKHt9LCBkLCB7J3ByaW9yaXR5JzogaWR4fSk7CisgICAgICAg ICAgICAgIGlkeCAtPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICByZXNbZC5fdHlwZV0gPSBfLmV4dGVuZCh7fSwgZCwgeydwcmlvcml0eSc6IGlkeH0p OworICAgICAgICAgICAgaWR4IC09IDE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg IGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAgIH0gd2hpbGUg KGkpOworCisgICAgICByZXR1cm4gcmVzOworICAgIH07CiAgIH0KIAogICAvLyBTd2l0Y2ggQ2Vs bCB3aXRoIERlcHMgKHNwZWNpZmljYWxseSBmb3IgdGFibGUgY2hpbGRyZW4pCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvX19pbml0X18ucHkKaW5kZXggZjZm YTY1ZS4uYmJiYzhhOSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL19faW5pdF9fLnB5CisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9fX2luaXRfXy5weQpAQCAtMTEsMjIgKzExLDE2IEBACiAKIGltcG9ydCBzaW1wbGVq c29uIGFzIGpzb24KIGltcG9ydCByZQotZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiAKIGlt cG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcyBhcyBk YXRhYmFzZQotZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCByZXF1ZXN0LCBqc29u aWZ5Citmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIGpzb25pZnks IHVybF9mb3IKIGZyb20gZmxhc2tfYmFiZWwgaW1wb3J0IGdldHRleHQKIGZyb20gcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy51dGlscyBcCi0g ICAgaW1wb3J0IFNjaGVtYUNoaWxkTW9kdWxlLCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGlu Z3MsIFwKLSAgICB0cmlnZ2VyX2RlZmluaXRpb24sIHBhcnNlX3J1bGVfZGVmaW5pdGlvbgotZnJv bSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnV0aWxzIGltcG9ydCBwYXJz ZV9wcml2X2Zyb21fZGIsIFwKLSAgICBwYXJzZV9wcml2X3RvX2RiCi1mcm9tIHBnYWRtaW4uYnJv d3Nlci51dGlscyBpbXBvcnQgUEdDaGlsZE5vZGVWaWV3CisgICAgaW1wb3J0IFNjaGVtYUNoaWxk TW9kdWxlLCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MKK2Zyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy51dGlscyBpbXBvcnQgcGFyc2VfcHJpdl90b19kYgog ZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgaW50ZXJu YWxfc2VydmVyX2Vycm9yLCBcCiAgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlLCBn b25lCi1mcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCi0KLWZyb20g Y29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSAudXRpbHMgaW1wb3J0IEJhc2VU YWJsZVZpZXcKIAogCiBjbGFzcyBUYWJsZU1vZHVsZShTY2hlbWFDaGlsZE1vZHVsZSk6CkBAIC03 OSwxMSArNzMsMjIgQEAgY2xhc3MgVGFibGVNb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUpOgogICAg ICAgICAiIiIKICAgICAgICAgcmV0dXJuIGRhdGFiYXNlLkRhdGFiYXNlTW9kdWxlLk5PREVfVFlQ RQogCisgICAgZGVmIGdldF9vd25famF2YXNjcmlwdHMoc2VsZik6CisgICAgICAgIHNjcmlwdHMg PSBTY2hlbWFDaGlsZE1vZHVsZS5nZXRfb3duX2phdmFzY3JpcHRzKHNlbGYpCisKKyAgICAgICAg c2NyaXB0cy5hcHBlbmQoeworICAgICAgICAgICAgJ25hbWUnOiAncGdhZG1pbi5icm93c2VyLnRh YmxlLnBhcnRpdGlvbi51dGlscycsCisgICAgICAgICAgICAncGF0aCc6IHVybF9mb3IoJ2Jyb3dz ZXIuaW5kZXgnKSArICd0YWJsZS9zdGF0aWMvanMvcGFydGl0aW9uLnV0aWxzJywKKyAgICAgICAg ICAgICd3aGVuJzogJ2RhdGFiYXNlJywgJ2lzX3RlbXBsYXRlJzogRmFsc2UKKyAgICAgICAgfSkK KworICAgICAgICByZXR1cm4gc2NyaXB0cworCiAKIGJsdWVwcmludCA9IFRhYmxlTW9kdWxlKF9f bmFtZV9fKQogCiAKLWNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVh ZGVyLCBWYWN1dW1TZXR0aW5ncyk6CitjbGFzcyBUYWJsZVZpZXcoQmFzZVRhYmxlVmlldywgRGF0 YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAiIiIKICAgICBUaGlzIGNsYXNzIGlz IHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHJvdXRlcyBmb3IgVGFibGUgbm9kZQogCkBAIC05 NiwxMSArMTAxLDYgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVS ZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgIC0gVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChp ZiBqYXZhc2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KICAgICAgICAgT3ZlcnJpZGUgdGhp cyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9naWMKIAotICAgICogY2hlY2tfcHJlY29uZGl0aW9u KCkKLSAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGlj aCB3aWxsIGNoZWNrcwotICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5uaW5n IHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcwotICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1w bGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgotCiAgICAgKiBsaXN0KCkKICAgICAgIC0gVGhp cyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxpc3QgYWxsIHRoZSBUYWJsZSBub2RlcyB3aXRoaW4gdGhh dAogICAgICAgY29sbGVjdGlvbi4KQEAgLTE0OSwxMCArMTQ5LDYgQEAgY2xhc3MgVGFibGVWaWV3 KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAg IC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIGRlcGVuZGVudCBsaXN0IHRvIHNob3cgaXQg aW4gZGVwZW5kZW50CiAgICAgICAgIHBhbmUgZm9yIHRoZSBzZWxlY3RlZCBub2RlLgogCi0gICAg KiBfZm9ybWF0dGVyKGRhdGEsIHRpZCkKLSAgICAgIC0gSXQgd2lsbCByZXR1cm4gZm9ybWF0dGVk IG91dHB1dCBvZiBxdWVyeSByZXN1bHQKLSAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3Jt YXQKLQogICAgICogZ2V0X3R5cGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpCiAgICAgICAt IFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiB0eXBlcyBhdmFpbGFibGUgZm9yIGNv bHVtbnMgbm9kZQogICAgICAgICB2aWEgQUpBWCByZXNwb25zZQpAQCAtMTc4LDE5ICsxNzQsNiBA QCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVt U2V0dGluZ3MpOgogICAgICogZ2V0X3RvYXN0X3RhYmxlX3ZhY3V1bShnaWQsIHNpZCwgZGlkLCBz Y2lkPU5vbmUsIHRpZD1Ob25lKQogICAgICAgLSBGZXRjaCB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9y IHRvYXN0IHRhYmxlIGF1dG8tdmFjdXVtCiAKLSAgICAqIF9jb2x1bW5zX2Zvcm1hdHRlcih0aWQs IGRhdGEpOgotICAgICAgLSBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5 IHJlc3VsdAotICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBmb3IgY29sdW1uIG5v ZGUKLQotICAgICogX2luZGV4X2NvbnN0cmFpbnRzX2Zvcm1hdHRlcihzZWxmLCBkaWQsIHRpZCwg ZGF0YSk6Ci0gICAgICAtIEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkg cmVzdWx0Ci0gICAgICAgIGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBpbmRleCBjb25z dHJhaW50IG5vZGUKLQotICAgICogX2NsdHlwZV9mb3JtYXR0ZXIodHlwZSk6IChzdGF0aWNtZXRo b2QpCi0gICAgICAtIFdlIG5lZWQgdG8gcmVtb3ZlIFtdIGZyb20gdHlwZSBhbmQgYXBwZW5kIGl0 Ci0gICAgICAgIGFmdGVyIGxlbmd0aC9wcmVjaXNpb24gc28gd2Ugd2lsbCBzZW5kIGZsYWcgZm9y Ci0gICAgICAgIHNxbCB0ZW1wbGF0ZQotCiAgICAgKiBfcGFyc2VfZm9ybWF0X2NvbHVtbnMoc2Vs ZiwgZGF0YSwgbW9kZT1Ob25lKToKICAgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBwYXJzZSBh bmQgcmV0dXJuIGZvcm1hdHRlZCBsaXN0IG9mIGNvbHVtbnMKICAgICAgICAgIGFkZGVkIGJ5IHVz ZXIKQEAgLTI1Miw3MSArMjM1LDE2IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcs IERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICdnZXRfYWNjZXNzX21l dGhvZHMnOiBbe30sIHsnZ2V0JzogJ2dldF9hY2Nlc3NfbWV0aG9kcyd9XSwKICAgICAgICAgJ2dl dF9vcGVyX2NsYXNzJzogW3t9LCB7J2dldCc6ICdnZXRfb3Blcl9jbGFzcyd9XSwKICAgICAgICAg J2dldF9vcGVyYXRvcic6IFt7fSwgeydnZXQnOiAnZ2V0X29wZXJhdG9yJ31dLAorICAgICAgICAn Z2V0X2F0dGFjaF90YWJsZXMnOiBbCisgICAgICAgICAgICB7J2dldCc6ICdnZXRfYXR0YWNoX3Rh Ymxlcyd9LAorICAgICAgICAgICAgeydnZXQnOiAnZ2V0X2F0dGFjaF90YWJsZXMnfV0sCiAgICAg ICAgICdzZWxlY3Rfc3FsJzogW3snZ2V0JzogJ3NlbGVjdF9zcWwnfV0sCiAgICAgICAgICdpbnNl cnRfc3FsJzogW3snZ2V0JzogJ2luc2VydF9zcWwnfV0sCiAgICAgICAgICd1cGRhdGVfc3FsJzog W3snZ2V0JzogJ3VwZGF0ZV9zcWwnfV0sCiAgICAgICAgICdkZWxldGVfc3FsJzogW3snZ2V0Jzog J2RlbGV0ZV9zcWwnfV0KLQogICAgIH0pCiAKLSAgICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYp OgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRl Y29yYXRvciB3aGljaCB3aWxsIGNoZWNrcwotICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJl Zm9yZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcwotICAgICAgICBtYW5hZ2Vy LGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgotICAgICAgICAiIiIKLQot ICAgICAgICBAd3JhcHMoZikKLSAgICAgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKLSAg ICAgICAgICAgICMgSGVyZSBhcmdzWzBdIHdpbGwgaG9sZCBzZWxmICYga3dhcmdzIHdpbGwgaG9s ZCBnaWQsc2lkLGRpZAotICAgICAgICAgICAgc2VsZiA9IGFyZ3NbMF0KLSAgICAgICAgICAgIGRy aXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCi0gICAgICAgICAgICBkaWQgPSBr d2FyZ3NbJ2RpZCddCi0gICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlv bl9tYW5hZ2VyKGt3YXJnc1snc2lkJ10pCi0gICAgICAgICAgICBzZWxmLmNvbm4gPSBzZWxmLm1h bmFnZXIuY29ubmVjdGlvbihkaWQ9a3dhcmdzWydkaWQnXSkKLSAgICAgICAgICAgIHNlbGYucXRJ ZGVudCA9IGRyaXZlci5xdElkZW50Ci0gICAgICAgICAgICBzZWxmLnF0VHlwZUlkZW50ID0gZHJp dmVyLnF0VHlwZUlkZW50Ci0gICAgICAgICAgICAjIFdlIG5lZWQgZGF0bGFzdHN5c29pZCB0byBj aGVjayBpZiBjdXJyZW50IHRhYmxlIGlzIHN5c3RlbSB0YWJsZQotICAgICAgICAgICAgc2VsZi5k YXRsYXN0c3lzb2lkID0gc2VsZi5tYW5hZ2VyLmRiX2luZm9bCi0gICAgICAgICAgICAgICAgZGlk Ci0gICAgICAgICAgICBdWydkYXRsYXN0c3lzb2lkJ10gaWYgc2VsZi5tYW5hZ2VyLmRiX2luZm8g aXMgbm90IE5vbmUgYW5kIFwKLSAgICAgICAgICAgICAgICBkaWQgaW4gc2VsZi5tYW5hZ2VyLmRi X2luZm8gZWxzZSAwCi0KLSAgICAgICAgICAgIHZlciA9IHNlbGYubWFuYWdlci52ZXJzaW9uCi0g ICAgICAgICAgICAjIFNldCB0aGUgdGVtcGxhdGUgcGF0aCBmb3IgdGhlIFNRTCBzY3JpcHRzCi0g ICAgICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSAndGFibGUvc3FsLyN7MH0jJy5mb3JtYXQo dmVyKQotCi0gICAgICAgICAgICAjIFRlbXBsYXRlIGZvciBDb2x1bW4gLGNoZWNrIGNvbnN0cmFp bnQgYW5kIGV4Y2x1c2lvbiBjb25zdHJhaW50IG5vZGUKLSAgICAgICAgICAgIHNlbGYuY29sdW1u X3RlbXBsYXRlX3BhdGggPSAnY29sdW1uL3NxbC8jezB9IycuZm9ybWF0KHZlcikKLSAgICAgICAg ICAgIHNlbGYuY2hlY2tfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoID0gJ2NoZWNrX2NvbnN0cmFp bnQvc3FsLyN7MH0jJy5mb3JtYXQodmVyKQotICAgICAgICAgICAgc2VsZi5leGNsdXNpb25fY29u c3RyYWludF90ZW1wbGF0ZV9wYXRoID0gJ2V4Y2x1c2lvbl9jb25zdHJhaW50L3NxbC8jezB9Iycu Zm9ybWF0KHZlcikKLQotICAgICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgUEsgJiBVbmlxdWUgY29u c3RyYWludCBub2RlCi0gICAgICAgICAgICBzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVf cGF0aCA9ICdpbmRleF9jb25zdHJhaW50L3NxbCcKLQotICAgICAgICAgICAgIyBUZW1wbGF0ZSBm b3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBub2RlCi0gICAgICAgICAgICBzZWxmLmZvcmVpZ25f a2V5X3RlbXBsYXRlX3BhdGggPSAnZm9yZWlnbl9rZXkvc3FsLyN7MH0jJy5mb3JtYXQodmVyKQot Ci0gICAgICAgICAgICAjIFRlbXBsYXRlIGZvciBpbmRleCBub2RlCi0gICAgICAgICAgICBzZWxm LmluZGV4X3RlbXBsYXRlX3BhdGggPSAnaW5kZXgvc3FsLyN7MH0jJy5mb3JtYXQodmVyKQotCi0g ICAgICAgICAgICAjIFRlbXBsYXRlIGZvciB0cmlnZ2VyIG5vZGUKLSAgICAgICAgICAgIHNlbGYu dHJpZ2dlcl90ZW1wbGF0ZV9wYXRoID0gJ3RyaWdnZXIvc3FsLyN7MH0jJy5mb3JtYXQodmVyKQot Ci0gICAgICAgICAgICAjIFRlbXBsYXRlIGZvciBydWxlcyBub2RlCi0gICAgICAgICAgICBzZWxm LnJ1bGVzX3RlbXBsYXRlX3BhdGggPSAncnVsZXMvc3FsJwotCi0gICAgICAgICAgICAjIFN1cHBv cnRlZCBBQ0wgZm9yIHRhYmxlCi0gICAgICAgICAgICBzZWxmLmFjbCA9IFsnYScsICdyJywgJ3cn LCAnZCcsICdEJywgJ3gnLCAndCddCi0KLSAgICAgICAgICAgICMgU3VwcG9ydGVkIEFDTCBmb3Ig Y29sdW1ucwotICAgICAgICAgICAgc2VsZi5jb2x1bW5fYWNsID0gWydhJywgJ3InLCAndycsICd4 J10KLQotICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgICAgIHJl dHVybiB3cmFwCi0KLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcu Y2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBh bGwgdGhlIHRhYmxlIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCkBAIC0zMzAsNyArMjU4 LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZh Y3V1bVNldHRpbmdzKToKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgIEpTT04gb2YgYXZh aWxhYmxlIHRhYmxlIG5vZGVzCiAgICAgICAgICIiIgotICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCkBAIC0z NDMsNyArMjcxLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVS ZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgIHN0YXR1cz0yMDAKICAgICAgICAg KQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3By ZWNvbmRpdGlvbgogICAgIGRlZiBub2RlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6 CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwg dGhlIHRhYmxlIG5vZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCkBAIC0zNTksNyArMjg3LDcg QEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1 bVNldHRpbmdzKToKICAgICAgICAgICAgIEpTT04gb2YgYXZhaWxhYmxlIHRhYmxlIG5vZGVzCiAg ICAgICAgICIiIgogICAgICAgICByZXMgPSBbXQotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRpZCkKICAgICAgICAgc3RhdHVzLCByc2V0 ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCkBAIC0zNzIsOSArMzAwLDEwIEBAIGNs YXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0 aW5ncyk6CiAgICAgICAgICAgICAgICAgcnNldFsncm93cyddWzBdWydvaWQnXSwKICAgICAgICAg ICAgICAgICBzY2lkLAogICAgICAgICAgICAgICAgIHJzZXRbJ3Jvd3MnXVswXVsnbmFtZSddLAot ICAgICAgICAgICAgICAgIGljb249Imljb24tdGFibGUiLAorICAgICAgICAgICAgICAgIGljb249 Imljb24tcGFydGl0aW9uIiBpZiAnaXNfcGFydGl0aW9uZWQnIGluIHJzZXRbJ3Jvd3MnXVswXSBh bmQgcnNldFsncm93cyddWzBdWydpc19wYXJ0aXRpb25lZCddIGVsc2UgImljb24tdGFibGUiLAog ICAgICAgICAgICAgICAgIHRpZ2dlcl9jb3VudD1yc2V0Wydyb3dzJ11bMF1bJ3RyaWdnZXJjb3Vu dCddLAotICAgICAgICAgICAgICAgIGhhc19lbmFibGVfdHJpZ2dlcnM9cnNldFsncm93cyddWzBd WydoYXNfZW5hYmxlX3RyaWdnZXJzJ10KKyAgICAgICAgICAgICAgICBoYXNfZW5hYmxlX3RyaWdn ZXJzPXJzZXRbJ3Jvd3MnXVswXVsnaGFzX2VuYWJsZV90cmlnZ2VycyddLAorICAgICAgICAgICAg ICAgIGlzX3BhcnRpdGlvbmVkPXJzZXRbJ3Jvd3MnXVswXVsnaXNfcGFydGl0aW9uZWQnXSBpZiAn aXNfcGFydGl0aW9uZWQnIGluIHJzZXRbJ3Jvd3MnXVswXSBlbHNlIEZhbHNlCiAgICAgICAgICAg ICApCiAKICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKQEAgLTM4Miw4ICszMTEs NyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFj dXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgc3RhdHVzPTIwMAogICAgICAgICApCiAKLQotICAg IEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRp b24KICAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CiAgICAgICAgICIi IgogICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlIHRhYmxlIG5v ZGVzIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCkBAIC0zOTgsNyArMzI2LDcgQEAgY2xhc3MgVGFi bGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToK ICAgICAgICAgICAgIEpTT04gb2YgYXZhaWxhYmxlIHRhYmxlIG5vZGVzCiAgICAgICAgICIiIgog ICAgICAgICByZXMgPSBbXQotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNjaWQ9c2NpZCkKICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVf MmRhcnJheShTUUwpCkBAIC00MTEsOSArMzM5LDEwIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxk Tm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICAg ICAgICAgIHJvd1snb2lkJ10sCiAgICAgICAgICAgICAgICAgICAgIHNjaWQsCiAgICAgICAgICAg ICAgICAgICAgIHJvd1snbmFtZSddLAotICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXRh YmxlIiwKKyAgICAgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1wYXJ0aXRpb24iIGlmICdpc19w YXJ0aXRpb25lZCcgaW4gcm93IGFuZCByb3dbJ2lzX3BhcnRpdGlvbmVkJ10gZWxzZSAiaWNvbi10 YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgIHRpZ2dlcl9jb3VudD1yb3dbJ3RyaWdnZXJjb3Vu dCddLAotICAgICAgICAgICAgICAgICAgICBoYXNfZW5hYmxlX3RyaWdnZXJzPXJvd1snaGFzX2Vu YWJsZV90cmlnZ2VycyddCisgICAgICAgICAgICAgICAgICAgIGhhc19lbmFibGVfdHJpZ2dlcnM9 cm93WydoYXNfZW5hYmxlX3RyaWdnZXJzJ10sCisgICAgICAgICAgICAgICAgICAgIGlzX3BhcnRp dGlvbmVkPXJvd1snaXNfcGFydGl0aW9uZWQnXSBpZiAnaXNfcGFydGl0aW9uZWQnIGluIHJvdyBl bHNlIEZhbHNlCiAgICAgICAgICAgICAgICAgKSkKIAogICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKApAQCAtNDIxLDcgKzM1MCw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9k ZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICBzdGF0 dXM9MjAwCiAgICAgICAgICkKIAotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRh YmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgZ2V0X2FsbF90YWJsZXMoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgQXJn czoKQEAgLTQzNSw3ICszNjQsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBE YXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgUmV0dXJucyB0aGUg bGl0cyBvZiB0YWJsZXMgcmVxdWlyZWQgZm9yIGNvbnN0cmFpbnRzLgogICAgICAgICAiIiIKICAg ICAgICAgdHJ5OgotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2dldF90YWJsZXNfZm9yX2NvbnN0cmFpbnRzLnNxbCddKSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3N5c29iaj1zZWxmLmJsdWVw cmludC5zaG93X3N5c3RlbV9vYmplY3RzKQogCkBAIC00NTIsNyArMzgxLDcgQEAgY2xhc3MgVGFi bGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToK ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGdldF90 YWJsZV92YWN1dW0oc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZD1Ob25lLCB0aWQ9Tm9uZSk6CiAg ICAgICAgICIiIgogICAgICAgICBGZXRjaCB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRhYmxlIGF1 dG8tdmFjdXVtCkBAIC00NjgsNyArMzk3LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2Rl VmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgIHN0YXR1 cz0yMDAKICAgICAgICAgKQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFi bGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBnZXRfdG9hc3RfdGFibGVfdmFjdXVt KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQ9Tm9uZSwgdGlkPU5vbmUpOgogICAgICAgICAiIiIK ICAgICAgICAgRmV0Y2ggdGhlIGRlZmF1bHQgdmFsdWVzIGZvciB0b2FzdCB0YWJsZSBhdXRvLXZh Y3V1bQpAQCAtNDg0LDcgKzQxMyw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcs IERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICBzdGF0dXM9MjAw CiAgICAgICAgICkKIAotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmll dy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgZ2V0X2FjY2Vzc19tZXRob2RzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMg ZnVuY3Rpb24gcmV0dXJucyBhY2Nlc3MgbWV0aG9kcy4KQEAgLTUxOCw3ICs0NDcsNyBAQCBjbGFz cyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGlu Z3MpOgogICAgICAgICAgICAgc3RhdHVzPTIwMAogICAgICAgICApCiAKLSAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVm IGdldF9vcGVyX2NsYXNzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKICAg ICAgICAgIiIiCiAKQEAgLTU1NSw3ICs0ODQsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5v ZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICBleGNlcHQg RXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXN0cihlKSkKIAotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRh YmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgZ2V0X29wZXJhdG9yKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKICAgICAgICAgIiIiCiAKQEAgLTU5Myw1MDYg KzUyMiw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVy LCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0g ICAgZGVmIF9jb2x1bW5zX2Zvcm1hdHRlcihzZWxmLCB0aWQsIGRhdGEpOgotICAgICAgICAiIiIK LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHRpZDogVGFibGUgT0lECi0gICAgICAgICAgICBk YXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAg ICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAg ICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGNvbHVtbiBub2RlCi0gICAgICAg ICIiIgotICAgICAgICBmb3IgY29sdW1uIGluIGRhdGFbJ2NvbHVtbnMnXToKLQotICAgICAgICAg ICAgIyBXZSBuZWVkIHRvIGZvcm1hdCB2YXJpYWJsZXMgYWNjb3JkaW5nIHRvIGNsaWVudCBqcyBj b2xsZWN0aW9uCi0gICAgICAgICAgICBpZiAnYXR0b3B0aW9ucycgaW4gY29sdW1uIGFuZCBjb2x1 bW5bJ2F0dG9wdGlvbnMnXSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBzcGNvcHRpb25z ID0gW10KLSAgICAgICAgICAgICAgICBmb3Igc3Bjb3B0aW9uIGluIGNvbHVtblsnYXR0b3B0aW9u cyddOgotICAgICAgICAgICAgICAgICAgICBrLCB2ID0gc3Bjb3B0aW9uLnNwbGl0KCc9JykKLSAg ICAgICAgICAgICAgICAgICAgc3Bjb3B0aW9ucy5hcHBlbmQoeyduYW1lJzogaywgJ3ZhbHVlJzog dn0pCi0KLSAgICAgICAgICAgICAgICBjb2x1bW5bJ2F0dG9wdGlvbnMnXSA9IHNwY29wdGlvbnMK LQotICAgICAgICAgICAgIyBOZWVkIHRvIGZvcm1hdCBzZWN1cml0eSBsYWJlbHMgYWNjb3JkaW5n IHRvIGNsaWVudCBqcyBjb2xsZWN0aW9uCi0gICAgICAgICAgICBpZiAnc2VjbGFiZWxzJyBpbiBj b2x1bW4gYW5kIGNvbHVtblsnc2VjbGFiZWxzJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAg ICAgc2VjbGFiZWxzID0gW10KLSAgICAgICAgICAgICAgICBmb3Igc2VjbGJscyBpbiBjb2x1bW5b J3NlY2xhYmVscyddOgotICAgICAgICAgICAgICAgICAgICBrLCB2ID0gc2VjbGJscy5zcGxpdCgn PScpCi0gICAgICAgICAgICAgICAgICAgIHNlY2xhYmVscy5hcHBlbmQoeydwcm92aWRlcic6IGss ICdsYWJlbCc6IHZ9KQotCi0gICAgICAgICAgICAgICAgY29sdW1uWydzZWNsYWJlbHMnXSA9IHNl Y2xhYmVscwotCi0gICAgICAgICAgICBpZiAnYXR0bnVtJyBpbiBjb2x1bW4gYW5kIGNvbHVtblsn YXR0bnVtJ10gaXMgbm90IE5vbmUgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b2x1bW5bJ2F0dG51bSddID4gMDoKLSAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcGFyc2Ug JiBjb252ZXJ0IEFDTCBjb21pbmcgZnJvbSBkYXRhYmFzZSB0byBqc29uIGZvcm1hdAotICAgICAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5jb2x1bW5fdGVt cGxhdGVfcGF0aCwgJ2FjbC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpZD10aWQsIGNsaWQ9Y29sdW1uWydhdHRudW0nXSkKLSAgICAgICAgICAgICAgICBz dGF0dXMsIGFjbCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotCi0gICAgICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1hY2wpCi0KLSAgICAgICAgICAgICAgICAjIFdlIHdpbGwgc2V0 IGdldCBwcml2aWxlZ2VzIGZyb20gYWNsIHNxbCBzbyB3ZSBkb24ndCBuZWVkCi0gICAgICAgICAg ICAgICAgIyBpdCBmcm9tIHByb3BlcnRpZXMgc3FsCi0gICAgICAgICAgICAgICAgY29sdW1uWydh dHRhY2wnXSA9IFtdCi0KLSAgICAgICAgICAgICAgICBmb3Igcm93IGluIGFjbFsncm93cyddOgot ICAgICAgICAgICAgICAgICAgICBwcml2ID0gcGFyc2VfcHJpdl9mcm9tX2RiKHJvdykKLSAgICAg ICAgICAgICAgICAgICAgY29sdW1uLnNldGRlZmF1bHQocm93WydkZWZ0eXBlJ10sIFtdKS5hcHBl bmQocHJpdikKLQotICAgICAgICAgICAgICAgICMgd2UgYXJlIHJlY2VpdmluZyByZXF1ZXN0IHdo ZW4gaW4gZWRpdCBtb2RlCi0gICAgICAgICAgICAgICAgIyB3ZSB3aWxsIHNlbmQgZmlsdGVyZWQg dHlwZXMgcmVsYXRlZCB0byBjdXJyZW50IHR5cGUKLSAgICAgICAgICAgICAgICBwcmVzZW50X3R5 cGUgPSBjb2x1bW5bJ2NsdHlwZSddCi0KLSAgICAgICAgICAgICAgICB0eXBlX2lkID0gY29sdW1u WydhdHR0eXBpZCddCi0KLSAgICAgICAgICAgICAgICBmdWxsdHlwZSA9IHNlbGYuZ2V0X2Z1bGxf dHlwZSgKLSAgICAgICAgICAgICAgICAgICAgY29sdW1uWyd0eXBuc3BuYW1lJ10sIGNvbHVtblsn dHlwbmFtZSddLAotICAgICAgICAgICAgICAgICAgICBjb2x1bW5bJ2lzZHVwJ10sIGNvbHVtblsn YXR0bmRpbXMnXSwgY29sdW1uWydhdHR0eXBtb2QnXQotICAgICAgICAgICAgICAgICkKLQotICAg ICAgICAgICAgICAgIGxlbmd0aCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgcHJlY2lzaW9uID0g RmFsc2UKLSAgICAgICAgICAgICAgICBpZiAnZWxlbW9pZCcgaW4gY29sdW1uOgotICAgICAgICAg ICAgICAgICAgICBsZW5ndGgsIHByZWNpc2lvbiwgdHlwZXZhbCA9IHNlbGYuZ2V0X2xlbmd0aF9w cmVjaXNpb24oY29sdW1uWydlbGVtb2lkJ10pCi0KLSAgICAgICAgICAgICAgICAjIFNldCBsZW5n dGggYW5kIHByZWNpc2lvbiB0byBOb25lCi0gICAgICAgICAgICAgICAgY29sdW1uWydhdHRsZW4n XSA9IE5vbmUKLSAgICAgICAgICAgICAgICBjb2x1bW5bJ2F0dHByZWNpc2lvbiddID0gTm9uZQot Ci0gICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGxlbmd0aCAmIHByZWNpc2lvbiBib3RoCi0g ICAgICAgICAgICAgICAgaWYgbGVuZ3RoIGFuZCBwcmVjaXNpb246Ci0gICAgICAgICAgICAgICAg ICAgIG1hdGNoT2JqID0gcmUuc2VhcmNoKHInKFxkKyksKFxkKyknLCBmdWxsdHlwZSkKLSAgICAg ICAgICAgICAgICAgICAgaWYgbWF0Y2hPYmo6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1 bW5bJ2F0dGxlbiddID0gbWF0Y2hPYmouZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICAgICAgICAg IGNvbHVtblsnYXR0cHJlY2lzaW9uJ10gPSBtYXRjaE9iai5ncm91cCgyKQotICAgICAgICAgICAg ICAgIGVsaWYgbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgbGVuZ3Ro IG9ubHkKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hPYmogPSByZS5zZWFyY2gocicoXGQrKScs IGZ1bGx0eXBlKQotICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaE9iajoKLSAgICAgICAgICAg ICAgICAgICAgICAgIGNvbHVtblsnYXR0bGVuJ10gPSBtYXRjaE9iai5ncm91cCgxKQotICAgICAg ICAgICAgICAgICAgICAgICAgY29sdW1uWydhdHRwcmVjaXNpb24nXSA9IE5vbmUKLQotCi0gICAg ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmNvbHVtbl90 ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2lzX3JlZmVyZW5jZWQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aWQ9dGlkLCBjbGlkPWNvbHVtblsnYXR0bnVtJ10pCi0KLSAgICAgICAgICAg ICAgICBzdGF0dXMsIGlzX3JlZmVyZW5jZSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwp Ci0KLSAgICAgICAgICAgICAgICBlZGl0X3R5cGVzX2xpc3QgPSBsaXN0KCkKLSAgICAgICAgICAg ICAgICAjIFdlIHdpbGwgbmVlZCBwcmVzZW50IHR5cGUgaW4gZWRpdCBtb2RlCi0KLSAgICAgICAg ICAgICAgICBpZiBjb2x1bW5bJ3R5cG5zcG5hbWUnXSA9PSAicGdfY2F0YWxvZyIgb3IgY29sdW1u Wyd0eXBuc3BuYW1lJ10gPT0gInB1YmxpYyI6Ci0gICAgICAgICAgICAgICAgICAgIGVkaXRfdHlw ZXNfbGlzdC5hcHBlbmQocHJlc2VudF90eXBlKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg ICAgICAgICAgICAgICAgIHQgPSBzZWxmLnF0VHlwZUlkZW50KHNlbGYuY29ubiwgY29sdW1uWyd0 eXBuc3BuYW1lJ10sIHByZXNlbnRfdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgZWRpdF90eXBl c19saXN0LmFwcGVuZCh0KQotICAgICAgICAgICAgICAgICAgICBjb2x1bW5bJ2NsdHlwZSddID0g dAotCi0gICAgICAgICAgICAgICAgaWYgaW50KGlzX3JlZmVyZW5jZSkgPT0gMDoKLSAgICAgICAg ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmNvbHVtbl90 ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdlZGl0X21vZGVfdHlwZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdHlwZV9pZD10eXBlX2lkKQotICAgICAgICAgICAgICAgICAg ICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLQotICAgICAg ICAgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICAg ICAgICAgIGVkaXRfdHlwZXNfbGlzdC5hcHBlbmQocm93Wyd0eXBuYW1lJ10pCi0gICAgICAgICAg ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZWRpdF90eXBlc19saXN0LmFwcGVuZChw cmVzZW50X3R5cGUpCi0KLSAgICAgICAgICAgICAgICBjb2x1bW5bJ2VkaXRfdHlwZXMnXSA9IGVk aXRfdHlwZXNfbGlzdAotICAgICAgICAgICAgICAgIGNvbHVtblsnY2x0eXBlJ10gPSBEYXRhVHlw ZVJlYWRlci5wYXJzZV90eXBlX25hbWUoY29sdW1uWydjbHR5cGUnXSkKLQotICAgICAgICAgICAg ICAgIGlmICdpbmRrZXknIGluIGNvbHVtbjoKLSAgICAgICAgICAgICAgICAgICAgIyBDdXJyZW50 IGNvbHVtbgotICAgICAgICAgICAgICAgICAgICBhdHRudW0gPSBzdHIoY29sdW1uWydhdHRudW0n XSkKLQotICAgICAgICAgICAgICAgICAgICAjIFNpbmdsZS9MaXN0IG9mIHByaW1hcnkga2V5IGNv bHVtbihzKQotICAgICAgICAgICAgICAgICAgICBpbmRrZXkgPSBzdHIoY29sdW1uWydpbmRrZXkn XSkKLQotICAgICAgICAgICAgICAgICAgICAjIFdlIHdpbGwgY2hlY2sgaWYgY29sdW1uIGlzIGlu IHByaW1hcnkgY29sdW1uKHMpCi0gICAgICAgICAgICAgICAgICAgIGlmIGF0dG51bSBpbiBpbmRr ZXkuc3BsaXQoIiAiKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnaXNfcHJpbWFy eV9rZXknXSA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg ICAgICAgICAgIGNvbHVtblsnaXNfcHJpbWFyeV9rZXknXSA9IEZhbHNlCi0KLSAgICAgICAgcmV0 dXJuIGRhdGEKLQotICAgIGRlZiBfaW5kZXhfY29uc3RyYWludHNfZm9ybWF0dGVyKHNlbGYsIGRp ZCwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICB0 aWQ6IFRhYmxlIE9JRAotICAgICAgICAgICAgZGF0YTogZGljdCBvZiBxdWVyeSByZXN1bHQKLQot ICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgSXQgd2lsbCByZXR1cm4gZm9ybWF0dGVkIG91 dHB1dCBvZiBxdWVyeSByZXN1bHQKLSAgICAgICAgICAgIGFzIHBlciBjbGllbnQgbW9kZWwgZm9y bWF0IGZvciBpbmRleCBjb25zdHJhaW50IG5vZGUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBX ZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3RyYWludHMgZm9yIHRoZSB0YWJsZQotICAg ICAgICBpbmRleF9jb25zdHJhaW50cyA9IHsKLSAgICAgICAgICAgICdwJzogJ3ByaW1hcnlfa2V5 JywgJ3UnOiAndW5pcXVlX2NvbnN0cmFpbnQnCi0gICAgICAgIH0KLQotICAgICAgICBmb3IgY3R5 cGUgaW4gaW5kZXhfY29uc3RyYWludHMua2V5cygpOgotICAgICAgICAgICAgZGF0YVtpbmRleF9j b25zdHJhaW50c1tjdHlwZV1dID0gW10KLQotICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10p LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHRpZD10aWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludF90eXBlPWN0eXBlKQot ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQot ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgZm9yIHJvdyBpbiBy ZXNbJ3Jvd3MnXToKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByb3cKLSAgICAgICAgICAgICAg ICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtz ZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdnZXRfY29uc3RyYWludF9jb2xzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAg ICAgY2lkPXJvd1snb2lkJ10sCi0gICAgICAgICAgICAgICAgICAgIGNvbGNudD1yb3dbJ2luZG5h dHRzJ10pCi0gICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KHNxbCkKLQotICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAg ICAgICAgICAgICAgY29sdW1ucyA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIHIgaW4gcmVzWydy b3dzJ106Ci0gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBwZW5kKHsiY29sdW1uIjogclsn Y29sdW1uJ10uc3RyaXAoJyInKX0pCi0KLSAgICAgICAgICAgICAgICByZXN1bHRbJ2NvbHVtbnMn XSA9IGNvbHVtbnMKLQotICAgICAgICAgICAgICAgICMgSWYgbm90IGV4aXN0cyB0aGVuIGNyZWF0 ZSBsaXN0IGFuZC9vciBhcHBlbmQgaW50bwotICAgICAgICAgICAgICAgICMgZXhpc3RpbmcgbGlz dCBbIEFkZGluZyBpbnRvIG1haW4gZGF0YSBkaWN0XQotICAgICAgICAgICAgICAgIGRhdGEuc2V0 ZGVmYXVsdChpbmRleF9jb25zdHJhaW50c1tjdHlwZV0sIFtdKS5hcHBlbmQocmVzdWx0KQotCi0g ICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYgX2ZvcmVpZ25fa2V5X2Zvcm1hdHRlcihzZWxm LCB0aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHRp ZDogVGFibGUgT0lECi0gICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAotCi0g ICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0 cHV0IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3Jt YXQgZm9yIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgbm9kZQotICAgICAgICAiIiIKLQotICAgICAg ICAjIFdlIHdpbGwgZmV0Y2ggYWxsIHRoZSBpbmRleCBjb25zdHJhaW50cyBmb3IgdGhlIHRhYmxl Ci0gICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5mb3JlaWduX2tl eV90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10 aWQpCi0KLSAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNx bCkKLQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1bHQpCi0KLSAgICAgICAgZm9yIGZrIGluIHJlc3Vs dFsncm93cyddOgotCi0gICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50X2NvbHMuc3FsJ10pLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAga2V5cz16aXAoZmtbJ2NvbmZrZXknXSwgZmtbJ2NvbmtleSddKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25mcmVsaWQ9ZmtbJ2NvbmZyZWxpZCdd KQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3Fs KQotCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICBjb2x1bW5z ID0gW10KLSAgICAgICAgICAgIGNvbHMgPSBbXQotICAgICAgICAgICAgZm9yIHJvdyBpbiByZXNb J3Jvd3MnXToKLSAgICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7ImxvY2FsX2NvbHVtbiI6 IHJvd1snY29uYXR0bmFtZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVm ZXJlbmNlcyI6IGZrWydjb25mcmVsaWQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgInJlZmVyZW5jZWQiOiByb3dbJ2NvbmZhdHRuYW1lJ119KQotICAgICAgICAgICAgICAgIGNv bHMuYXBwZW5kKHJvd1snY29uYXR0bmFtZSddKQotCi0gICAgICAgICAgICBma1snY29sdW1ucydd ID0gY29sdW1ucwotCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRpZD1ma1snY29sdW1ucyddWzBdWydyZWZlcmVuY2VzJ10pCi0K LSAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FM KQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCi0KLSAgICAgICAgICAgIGZrWydyZW1v dGVfc2NoZW1hJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSddCi0gICAgICAgICAgICBma1sn cmVtb3RlX3RhYmxlJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KLQotICAgICAgICAgICAg Y292ZXJpbmdpbmRleCA9IHNlbGYuc2VhcmNoX2NvdmVyaW5naW5kZXgodGlkLCBjb2xzKQotCi0g ICAgICAgICAgICBma1snY292ZXJpbmdpbmRleCddID0gY292ZXJpbmdpbmRleAotICAgICAgICAg ICAgaWYgY292ZXJpbmdpbmRleDoKLSAgICAgICAgICAgICAgICBma1snYXV0b2luZGV4J10gPSBU cnVlCi0gICAgICAgICAgICAgICAgZmtbJ2hhc2luZGV4J10gPSBUcnVlCi0gICAgICAgICAgICBl bHNlOgotICAgICAgICAgICAgICAgIGZrWydhdXRvaW5kZXgnXSA9IEZhbHNlCi0gICAgICAgICAg ICAgICAgZmtbJ2hhc2luZGV4J10gPSBGYWxzZQotICAgICAgICAgICAgIyBJZiBub3QgZXhpc3Rz IHRoZW4gY3JlYXRlIGxpc3QgYW5kL29yIGFwcGVuZCBpbnRvCi0gICAgICAgICAgICAjIGV4aXN0 aW5nIGxpc3QgWyBBZGRpbmcgaW50byBtYWluIGRhdGEgZGljdF0KLSAgICAgICAgICAgIGRhdGEu c2V0ZGVmYXVsdCgnZm9yZWlnbl9rZXknLCBbXSkuYXBwZW5kKGZrKQotCi0gICAgICAgIHJldHVy biBkYXRhCi0KLSAgICBkZWYgX2NoZWNrX2NvbnN0cmFpbnRfZm9ybWF0dGVyKHNlbGYsIHRpZCwg ZGF0YSk6Ci0gICAgICAgICIiIgotICAgICAgICBBcmdzOgotICAgICAgICAgICAgdGlkOiBUYWJs ZSBPSUQKLSAgICAgICAgICAgIGRhdGE6IGRpY3Qgb2YgcXVlcnkgcmVzdWx0Ci0KLSAgICAgICAg UmV0dXJuczoKLSAgICAgICAgICAgIEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2Yg cXVlcnkgcmVzdWx0Ci0gICAgICAgICAgICBhcyBwZXIgY2xpZW50IG1vZGVsIGZvcm1hdCBmb3Ig Y2hlY2sgY29uc3RyYWludCBub2RlCi0gICAgICAgICIiIgotCi0gICAgICAgICMgV2Ugd2lsbCBm ZXRjaCBhbGwgdGhlIGluZGV4IGNvbnN0cmFpbnRzIGZvciB0aGUgdGFibGUKLSAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxh dGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVy dGllcy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkKQotCi0g ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0KLSAgICAg ICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQotICAgICAgICAjIElmIG5vdCBleGlzdHMgdGhlbiBjcmVhdGUgbGlz dCBhbmQvb3IgYXBwZW5kIGludG8KLSAgICAgICAgIyBleGlzdGluZyBsaXN0IFsgQWRkaW5nIGlu dG8gbWFpbiBkYXRhIGRpY3RdCi0KLSAgICAgICAgZGF0YVsnY2hlY2tfY29uc3RyYWludCddID0g cmVzWydyb3dzJ10KLQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIF9leGNsdXNpb25f Y29uc3RyYWludF9mb3JtYXR0ZXIoc2VsZiwgZGlkLCB0aWQsIGRhdGEpOgotICAgICAgICAiIiIK LSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHRpZDogVGFibGUgT0lECi0gICAgICAgICAgICBk YXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAg ICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAg ICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50 IG5vZGUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBXZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5k ZXggY29uc3RyYWludHMgZm9yIHRoZSB0YWJsZQotICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkKQotCi0gICAg ICAgIHN0YXR1cywgcmVzdWx0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCi0KLSAgICAg ICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzdWx0KQotCi0gICAgICAgIGZvciBleCBpbiByZXN1bHRbJ3Jvd3MnXToK LQotICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmV4Y2x1 c2lvbl9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludF9jb2xzLnNxbCddKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9ZXhbJ29pZCddLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbGNudD1leFsnaW5kbmF0dHMnXSkKLQotICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKLQotICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgY29sdW1ucyA9IFtdCi0gICAgICAgICAg ICBmb3Igcm93IGluIHJlc1sncm93cyddOgotICAgICAgICAgICAgICAgIGlmIHJvd1snb3B0aW9u cyddICYgMToKLSAgICAgICAgICAgICAgICAgICAgb3JkZXIgPSBGYWxzZQotICAgICAgICAgICAg ICAgICAgICBudWxsc19vcmRlciA9IFRydWUgaWYgKHJvd1snb3B0aW9ucyddICYgMikgZWxzZSBG YWxzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG9yZGVyID0g VHJ1ZQotICAgICAgICAgICAgICAgICAgICBudWxsc19vcmRlciA9IFRydWUgaWYgKHJvd1snb3B0 aW9ucyddICYgMikgZWxzZSBGYWxzZQotCi0gICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQo eyJjb2x1bW4iOiByb3dbJ2NvbGRlZiddLnN0cmlwKCciJyksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJvcGVyX2NsYXNzIjogcm93WydvcGNuYW1lJ10sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJvcmRlciI6IG9yZGVyLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAibnVsbHNfb3JkZXIiOiBudWxsc19vcmRlciwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIm9wZXJhdG9yIjogcm93WydvcHJuYW1lJ10sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJjb2xfdHlwZSI6IHJvd1snZGF0YXR5cGUnXQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9KQotCi0gICAgICAgICAgICBleFsnY29sdW1ucyddID0g Y29sdW1ucwotICAgICAgICAgICAgIyBJZiBub3QgZXhpc3RzIHRoZW4gY3JlYXRlIGxpc3QgYW5k L29yIGFwcGVuZCBpbnRvCi0gICAgICAgICAgICAjIGV4aXN0aW5nIGxpc3QgWyBBZGRpbmcgaW50 byBtYWluIGRhdGEgZGljdF0KLSAgICAgICAgICAgIGRhdGEuc2V0ZGVmYXVsdCgnZXhjbHVkZV9j b25zdHJhaW50JywgW10pLmFwcGVuZChleCkKLQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAg ZGVmIHNlYXJjaF9jb3ZlcmluZ2luZGV4KHNlbGYsIHRpZCwgY29scyk6Ci0gICAgICAgICIiIgot Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGlkOiBUYWJsZSBpZAotICAgICAgICAgIGNvbHM6 IGNvbHVtbiBsaXN0Ci0KLSAgICAgICAgUmV0dXJuczoKLQotICAgICAgICAiIiIKLQotICAgICAg ICBjb2xzID0gc2V0KGNvbHMpCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludHMuc3FsJ10pLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKLSAgICAgICAgc3RhdHVzLCBjb25zdHJhaW50cyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotCi0gICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0g ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oY29uc3RyYWludHMpCi0KLSAgICAgICAgZm9yIGNv c3RybnQgaW4gY29uc3RyYWludHNbJ3Jvd3MnXToKLQotICAgICAgICAgICAgc3FsID0gcmVuZGVy X3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3Rl bXBsYXRlX3BhdGgsICdnZXRfY29scy5zcWwnXSksCi0gICAgICAgICAgICAgICAgY2lkPWNvc3Ry bnRbJ29pZCddLAotICAgICAgICAgICAgICAgIGNvbGNudD1jb3N0cm50WydpbmRuYXR0cyddKQot ICAgICAgICAgICAgc3RhdHVzLCByZXN0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCi0K LSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN0KQotCi0gICAgICAgICAgICBpbmRleGNvbHMg PSBzZXQoKQotICAgICAgICAgICAgZm9yIHIgaW4gcmVzdFsncm93cyddOgotICAgICAgICAgICAg ICAgIGluZGV4Y29scy5hZGQoclsnY29sdW1uJ10uc3RyaXAoJyInKSkKLQotICAgICAgICAgICAg aWYgbGVuKGNvbHMgLSBpbmRleGNvbHMpID09IGxlbihpbmRleGNvbHMgLSBjb2xzKSA9PSAwOgot ICAgICAgICAgICAgICAgIHJldHVybiBjb3N0cm50WyJpZHhuYW1lIl0KLQotICAgICAgICByZXR1 cm4gTm9uZQotCi0gICAgZGVmIF9mb3JtYXR0ZXIoc2VsZiwgZGlkLCBzY2lkLCB0aWQsIGRhdGEp OgotICAgICAgICAiIiIKLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGRhdGE6IGRpY3Qgb2Yg cXVlcnkgcmVzdWx0Ci0gICAgICAgICAgICBzY2lkOiBzY2hlbWEgb2lkCi0gICAgICAgICAgICB0 aWQ6IHRhYmxlIG9pZAotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBJdCB3aWxsIHJl dHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAotICAgICAgICAgICAgYXMgcGVy IGNsaWVudCBtb2RlbCBmb3JtYXQKLSAgICAgICAgIiIiCi0gICAgICAgICMgTmVlZCB0byBmb3Jt YXQgc2VjdXJpdHkgbGFiZWxzIGFjY29yZGluZyB0byBjbGllbnQganMgY29sbGVjdGlvbgotICAg ICAgICBpZiAnc2VjbGFiZWxzJyBpbiBkYXRhIGFuZCBkYXRhWydzZWNsYWJlbHMnXSBpcyBub3Qg Tm9uZToKLSAgICAgICAgICAgIHNlY2xhYmVscyA9IFtdCi0gICAgICAgICAgICBmb3Igc2VjbGJs cyBpbiBkYXRhWydzZWNsYWJlbHMnXToKLSAgICAgICAgICAgICAgICBrLCB2ID0gc2VjbGJscy5z cGxpdCgnPScpCi0gICAgICAgICAgICAgICAgc2VjbGFiZWxzLmFwcGVuZCh7J3Byb3ZpZGVyJzog aywgJ2xhYmVsJzogdn0pCi0KLSAgICAgICAgICAgIGRhdGFbJ3NlY2xhYmVscyddID0gc2VjbGFi ZWxzCi0KLSAgICAgICAgIyBXZSBuZWVkIHRvIHBhcnNlICYgY29udmVydCBBQ0wgY29taW5nIGZy b20gZGF0YWJhc2UgdG8ganNvbiBmb3JtYXQKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdhY2wuc3FsJ10pLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgc2NpZD1zY2lkKQotICAgICAgICBzdGF0dXMsIGFj bCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQotICAgICAgICBpZiBub3Qgc3RhdHVzOgot ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1hY2wpCi0K LSAgICAgICAgIyBXZSB3aWxsIHNldCBnZXQgcHJpdmlsZWdlcyBmcm9tIGFjbCBzcWwgc28gd2Ug ZG9uJ3QgbmVlZAotICAgICAgICAjIGl0IGZyb20gcHJvcGVydGllcyBzcWwKLSAgICAgICAgZm9y IHJvdyBpbiBhY2xbJ3Jvd3MnXToKLSAgICAgICAgICAgIHByaXYgPSBwYXJzZV9wcml2X2Zyb21f ZGIocm93KQotICAgICAgICAgICAgaWYgcm93WydkZWZ0eXBlJ10gaW4gZGF0YToKLSAgICAgICAg ICAgICAgICBkYXRhW3Jvd1snZGVmdHlwZSddXS5hcHBlbmQocHJpdikKLSAgICAgICAgICAgIGVs c2U6Ci0gICAgICAgICAgICAgICAgZGF0YVtyb3dbJ2RlZnR5cGUnXV0gPSBbcHJpdl0KLQotICAg ICAgICAjIFdlIHdpbGwgYWRkIEF1dG8gdmFjdXVtIGRlZmF1bHRzIHdpdGggb3V0IHJlc3VsdCBm b3IgZ3JpZAotICAgICAgICBkYXRhWyd2YWN1dW1fdGFibGUnXSA9IHNlbGYucGFyc2VfdmFjdXVt X2RhdGEoc2VsZi5jb25uLCBkYXRhLCAndGFibGUnKQotICAgICAgICBkYXRhWyd2YWN1dW1fdG9h c3QnXSA9IHNlbGYucGFyc2VfdmFjdXVtX2RhdGEoc2VsZi5jb25uLCBkYXRhLCAndG9hc3QnKQot Ci0gICAgICAgICMgRmV0Y2ggY29sdW1ucyBmb3IgdGhlIHRhYmxlIGxvZ2ljCi0gICAgICAgICMK LSAgICAgICAgIyAxKSBDaGVjayBpZiBvZl90eXBlIGFuZCBpbmhlcml0ZWQgdGFibGVzIGFyZSBw cmVzZW50PwotICAgICAgICAjIDIpIElmIHllcyB0aGVuIEZldGNoIGFsbCB0aGUgY29sdW1ucyBm b3Igb2ZfdHlwZSBhbmQgaW5oZXJpdGVkIHRhYmxlcwotICAgICAgICAjIDMpIEFkZCBjb2x1bW5z IGluIGNvbHVtbnMgY29sbGVjdGlvbgotICAgICAgICAjIDQpIEZpbmQgYWxsIHRoZSBjb2x1bW5z IGZvciB0YWJsZXMgYW5kIGZpbHRlciBvdXQgY29sdW1ucyB3aGljaCBhcmUKLSAgICAgICAgIyAg IG5vdCBpbmhlcml0ZWQgZnJvbSBhbnkgdGFibGUgJiBmb3JtYXQgdGhlbSBvbmUgYnkgb25lCi0K LSAgICAgICAgIyBHZXQgb2ZfdHlwZSB0YWJsZSBjb2x1bW5zIGFuZCBhZGQgaXQgaW50byBjb2x1 bW5zIGRpY3QKLSAgICAgICAgaWYgZGF0YVsndHlwbmFtZSddOgotICAgICAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29sdW1uc19mb3JfdGFibGUu c3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRuYW1lPWRhdGFbJ3R5 cG5hbWUnXSkKLQotICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0gICAgICAgICAgICBkYXRh Wydjb2x1bW5zJ10gPSByZXNbJ3Jvd3MnXQotCi0gICAgICAgICMgR2V0IGluaGVyaXRlZCB0YWJs ZShzKSBjb2x1bW5zIGFuZCBhZGQgaXQgaW50byBjb2x1bW5zIGRpY3QKLSAgICAgICAgZWxpZiBk YXRhWydjb2xsX2luaGVyaXRzJ10gYW5kIGxlbihkYXRhWydjb2xsX2luaGVyaXRzJ10pID4gMDoK LSAgICAgICAgICAgIGNvbHVtbnMgPSBbXQotICAgICAgICAgICAgIyBSZXR1cm4gYWxsIHRhYmxl cyB3aGljaCBjYW4gYmUgaW5oZXJpdGVkICYgZG8gbm90IHNob3cKLSAgICAgICAgICAgICMgc3lz dGVtIGNvbHVtbnMKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X2luaGVyaXRzLnNxbCddKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaG93X3N5c3RlbV9vYmplY3RzPUZhbHNlCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCi0gICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgot ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNl dCkKLQotICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106Ci0gICAgICAgICAgICAg ICAgaWYgcm93Wydpbmhlcml0cyddIGluIGRhdGFbJ2NvbGxfaW5oZXJpdHMnXToKLSAgICAgICAg ICAgICAgICAgICAgIyBGZXRjaCBjb2x1bW5zIHVzaW5nIGluaGVyaXRlZCB0YWJsZSBPSUQKLSAg ICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF9jb2x1bW5zX2Zvcl90YWJsZS5zcWwnXSksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9cm93WydvaWQnXSkKLSAgICAgICAgICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKLSAgICAgICAg ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotICAgICAgICAgICAgICAgICAg ICBjb2x1bW5zLmV4dGVuZChyZXNbJ3Jvd3MnXVs6XSkKLSAgICAgICAgICAgIGRhdGFbJ2NvbHVt bnMnXSA9IGNvbHVtbnMKLQotICAgICAgICAjIFdlIHdpbGwgZmV0Y2ggYWxsIHRoZSBjb2x1bW5z IGZvciB0aGUgdGFibGUgdXNpbmcKLSAgICAgICAgIyBjb2x1bW5zIHByb3BlcnRpZXMuc3FsLCBz byB3ZSBuZWVkIHRvIHNldCB0ZW1wbGF0ZSBwYXRoCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2hvd19zeXNfb2JqZWN0cz1GYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KQotCi0gICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0g ICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKLSAgICAgICAgYWxsX2NvbHVtbnMgPSByZXNbJ3Jvd3MnXQot Ci0gICAgICAgICMgRmlsdGVyIGluaGVyaXRlZCBjb2x1bW5zIGZyb20gYWxsIGNvbHVtbnMKLSAg ICAgICAgaWYgJ2NvbHVtbnMnIGluIGRhdGEgYW5kIGxlbihkYXRhWydjb2x1bW5zJ10pID4gMCBc Ci0gICAgICAgICAgICAgICAgYW5kIGxlbihhbGxfY29sdW1ucykgPiAwOgotICAgICAgICAgICAg Zm9yIHJvdyBpbiBkYXRhWydjb2x1bW5zJ106Ci0gICAgICAgICAgICAgICAgZm9yIGksIGNvbCBp biBlbnVtZXJhdGUoYWxsX2NvbHVtbnMpOgotICAgICAgICAgICAgICAgICAgICAjIElmIGJvdGgg bmFtZSBhcmUgc2FtZSB0aGVuIHJlbW92ZSBpdAotICAgICAgICAgICAgICAgICAgICAjIGFzIGl0 IGlzIGluaGVyaXRlZCBmcm9tIG90aGVyIHRhYmxlCi0gICAgICAgICAgICAgICAgICAgIGlmIGNv bFsnbmFtZSddID09IHJvd1snbmFtZSddOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBSZW1v dmUgc2FtZSBjb2x1bW4gZnJvbSBhbGxfY29sdW1ucyBhcwotICAgICAgICAgICAgICAgICAgICAg ICAgIyBhbHJlYWR5IGhhdmUgaXQgY29sdW1ucyBjb2xsZWN0aW9uCi0gICAgICAgICAgICAgICAg ICAgICAgICBkZWwgYWxsX2NvbHVtbnNbaV0KLQotICAgICAgICAgICAgIyBJZiBhbnkgY29sdW1u IGlzIGFkZGVkIHRoZW4gdXBkYXRlIGNvbHVtbnMgY29sbGVjdGlvbgotICAgICAgICAgICAgaWYg bGVuKGFsbF9jb2x1bW5zKSA+IDA6Ci0gICAgICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddICs9 IGFsbF9jb2x1bW5zCi0gICAgICAgICMgSWYgbm8gaW5oZXJpdGVkIGNvbHVtbnMgZm91bmQgdGhl biBhZGQgYWxsIGNvbHVtbnMKLSAgICAgICAgZWxpZiBsZW4oYWxsX2NvbHVtbnMpID4gMDoKLSAg ICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGFsbF9jb2x1bW5zCi0KLSAgICAgICAgaWYgJ2Nv bHVtbnMnIGluIGRhdGEgYW5kIGxlbihkYXRhWydjb2x1bW5zJ10pID4gMDoKLSAgICAgICAgICAg IGRhdGEgPSBzZWxmLl9jb2x1bW5zX2Zvcm1hdHRlcih0aWQsIGRhdGEpCi0KLSAgICAgICAgIyBI ZXJlIHdlIHdpbGwgYWRkIGNvbnN0cmFpbnQgaW4gb3VyIG91dHB1dAotICAgICAgICBkYXRhID0g c2VsZi5faW5kZXhfY29uc3RyYWludHNfZm9ybWF0dGVyKGRpZCwgdGlkLCBkYXRhKQotICAgICAg ICBkYXRhID0gc2VsZi5fZm9yZWlnbl9rZXlfZm9ybWF0dGVyKHRpZCwgZGF0YSkKLSAgICAgICAg ZGF0YSA9IHNlbGYuX2NoZWNrX2NvbnN0cmFpbnRfZm9ybWF0dGVyKHRpZCwgZGF0YSkKLSAgICAg ICAgZGF0YSA9IHNlbGYuX2V4Y2x1c2lvbl9jb25zdHJhaW50X2Zvcm1hdHRlcihkaWQsIHRpZCwg ZGF0YSkKLQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBwcm9wZXJ0aWVz KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAgICAgICIiIgogICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgc2hvdyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0ZWQgdGFi bGUgbm9kZS4KQEAgLTExMDksNyArNTM5LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2Rl VmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgICAgIEpTT04g b2Ygc2VsZWN0ZWQgdGFibGUgbm9kZQogICAgICAgICAiIiIKIAotICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlk LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxh c3RzeXNvaWQpCkBAIC0xMTIwLDQxICs1NTAsMTkgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGRO b2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgaWYgbGVu KHJlc1sncm93cyddKSA9PSAwOgogICAgICAgICAgICAgICAgIHJldHVybiBnb25lKGdldHRleHQo IlRoZSBzcGVjaWZpZWQgdGFibGUgY291bGQgbm90IGJlIGZvdW5kLiIpKQogCi0gICAgICAgIGRh dGEgPSByZXNbJ3Jvd3MnXVswXQotCi0gICAgICAgIGRhdGFbJ3ZhY3V1bV9zZXR0aW5nc19zdHIn XSA9ICIiCi0KLSAgICAgICAgaWYgZGF0YVsndGFibGVfdmFjdXVtX3NldHRpbmdzX3N0ciddIGlz IG5vdCBOb25lOgotICAgICAgICAgICAgZGF0YVsndmFjdXVtX3NldHRpbmdzX3N0ciddICs9IGRh dGFbCi0gICAgICAgICAgICAgICAgJ3RhYmxlX3ZhY3V1bV9zZXR0aW5nc19zdHInXS5yZXBsYWNl KCcsJywgJ1xuJykKLQotICAgICAgICBpZiBkYXRhWyd0b2FzdF90YWJsZV92YWN1dW1fc2V0dGlu Z3Nfc3RyJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBkYXRhWyd2YWN1dW1fc2V0dGluZ3Nf c3RyJ10gKz0gJ1xuJyArICdcbicuam9pbigKLSAgICAgICAgICAgICAgICBbJ3RvYXN0XycgKyBz ZXR0aW5nIGZvciBzZXR0aW5nIGluIGRhdGFbCi0gICAgICAgICAgICAgICAgICAgICd0b2FzdF90 YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3RyJwotICAgICAgICAgICAgICAgIF0uc3BsaXQoJywnKV0K LSAgICAgICAgICAgICkKLSAgICAgICAgZGF0YVsndmFjdXVtX3NldHRpbmdzX3N0ciddID0gZGF0 YVsKLSAgICAgICAgICAgICd2YWN1dW1fc2V0dGluZ3Nfc3RyJwotICAgICAgICBdLnJlcGxhY2Uo Ij0iLCAiID0gIikKLQotICAgICAgICBkYXRhID0gc2VsZi5fZm9ybWF0dGVyKGRpZCwgc2NpZCwg dGlkLCBkYXRhKQotCi0gICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAotICAgICAgICAgICAg cmVzcG9uc2U9ZGF0YSwKLSAgICAgICAgICAgIHN0YXR1cz0yMDAKLSAgICAgICAgKQorICAgICAg ICByZXR1cm4gc3VwZXIoVGFibGVWaWV3LCBzZWxmKS5wcm9wZXJ0aWVzKAorICAgICAgICAgICAg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCByZXMpCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIHR5cGVzKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lLCBjbGlkPU5vbmUpOgogICAgICAgICAi IiIKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1 cm4gbGlzdCBvZiB0eXBlcyBhdmFpbGFibGUgZm9yIGNvbHVtbiBub2RlCiAgICAgICAgICAgICBm b3Igbm9kZS1hamF4LWNvbnRyb2wKICAgICAgICAgIiIiCi0gICAgICAgIGNvbmRpdGlvbiA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfdHlwZXNfd2hlcmVfY29uZGl0 aW9uLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dfc3lz dGVtX29iamVjdHM9c2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0cykKKyAgICAgICAg Y29uZGl0aW9uID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgW3NlbGYu dGFibGVfdGVtcGxhdGVfcGF0aCwgJ2dldF90eXBlc193aGVyZV9jb25kaXRpb24uc3FsJ10pLAor ICAgICAgICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0cz1zZWxmLmJsdWVwcmludC5zaG93X3N5c3Rl bV9vYmplY3RzKQogCiAgICAgICAgIHN0YXR1cywgdHlwZXMgPSBzZWxmLmdldF90eXBlcyhzZWxm LmNvbm4sIGNvbmRpdGlvbiwgVHJ1ZSkKIApAQCAtMTE2Niw3ICs1NzQsNyBAQCBjbGFzcyBUYWJs ZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgog ICAgICAgICAgICAgc3RhdHVzPTIwMAogICAgICAgICApCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGdldF9j b2x1bW5zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKICAgICAgICAgIiIi CiAgICAgICAgIFJldHVybnMgdGhlIFRhYmxlIENvbHVtbnMuCkBAIC0xMTg5LDEzICs1OTcsMTQg QEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1 bVNldHRpbmdzKToKICAgICAgICAgZGF0YSA9IHJlcXVlc3QuYXJncyBpZiByZXF1ZXN0LmFyZ3Mg ZWxzZSBOb25lCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIGRhdGEgYW5kICd0aWQnIGlu IGRhdGE6Ci0gICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnNfZm9yX3RhYmxlLnNxbCdd KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPWRhdGFbJ3RpZCdd KQogICAgICAgICAgICAgZWxpZiBkYXRhIGFuZCAndG5hbWUnIGluIGRhdGE6Ci0gICAgICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2Nv bHVtbnNfZm9yX3RhYmxlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG5hbWU9ZGF0YVsndG5hbWUnXSkKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgIFtzZWxmLnRhYmxlX3RlbXBs YXRlX3BhdGgsICdnZXRfY29sdW1uc19mb3JfdGFibGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICB0bmFtZT1kYXRhWyd0bmFtZSddCisgICAgICAgICAgICAgICAgKQogCiAgICAgICAgICAg ICBpZiBTUUw6CiAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKQEAgLTEyMTEsNyArNjIwLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGRO b2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VU YWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGdldF9vZnR5cGUoc2VsZiwgZ2lk LCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJu czoKQEAgLTEyMjAsMTAgKzYyOSwxMSBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3 LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAiIiIKICAgICAgICAg cmVzID0gW3snbGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQogICAgICAgICB0cnk6Ci0gICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9vZnR5cGUu c3FsJ10pLCBzY2lkPXNjaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vy dmVyX3R5cGU9c2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNob3dfc3lzX29iamVjdHM9c2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1f b2JqZWN0cykKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAg ICAgICAgICAgICAgICBbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLCAnZ2V0X29mdHlwZS5zcWwn XSksCisgICAgICAgICAgICAgICAgc2NpZD1zY2lkLAorICAgICAgICAgICAgICAgIHNlcnZlcl90 eXBlPXNlbGYubWFuYWdlci5zZXJ2ZXJfdHlwZSwKKyAgICAgICAgICAgICAgICBzaG93X3N5c19v YmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMpCiAgICAgICAgICAgICBz dGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCkBAIC0xMjQxLDcgKzY1MSw3IEBAIGNsYXNzIFRhYmxlVmlldyhQ R0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBnZXRfaW5oZXJpdHMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAg ICAgUmV0dXJuczoKQEAgLTEyNTAsMTAgKzY2MCwxMSBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGls ZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAiIiIK ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzID0gW10KLSAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X2luaGVyaXRz LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3N5c3RlbV9v YmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29iamVjdHMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZXJ2ZXJfdHlwZT1zZWxmLm1hbmFnZXIuc2VydmVyX3R5cGUpCisgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgW3NlbGYu dGFibGVfdGVtcGxhdGVfcGF0aCwgJ2dldF9pbmhlcml0cy5zcWwnXSksCisgICAgICAgICAgICAg ICAgc2hvd19zeXN0ZW1fb2JqZWN0cz1zZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3Rz LAorICAgICAgICAgICAgICAgIHRpZD10aWQsCisgICAgICAgICAgICAgICAgc2VydmVyX3R5cGU9 c2VsZi5tYW5hZ2VyLnNlcnZlcl90eXBlKQogICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCiAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgog ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQpAQCAtMTI3MSwyNSArNjgyLDI5IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcs IERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9c3RyKGUpKQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgotICAgIGRlZiBnZXRfcmVsYXRp b25zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKKyAgICBAQmFzZVRhYmxl Vmlldy5jaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X2F0dGFjaF90YWJsZXMoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgUmV0 dXJuczoKLSAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiB0YWJs ZXMgYXZhaWxhYmxlIGZvciBsaWtlL3JlbGF0aW9uCi0gICAgICAgICAgICBjb21ib2JveCB3aGls ZSBjcmVhdGluZyBuZXcgdGFibGUKKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1 cm4gbGlzdCBvZiB0YWJsZXMgYXZhaWxhYmxlIHRvIGJlIGF0dGFjaGVkCisgICAgICAgICAgICB0 byB0aGUgcGFydGl0aW9uZWQgdGFibGUuCiAgICAgICAgICIiIgotICAgICAgICByZXMgPSBbeyds YWJlbCc6ICcnLCAndmFsdWUnOiAnJ31dCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X3JlbGF0 aW9ucy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19zeXNf b2JqZWN0cz1zZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl90eXBlPXNlbGYubWFuYWdlci5zZXJ2ZXJfdHlw ZSkKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgW3NlbGYucGFydGl0aW9uX3RlbXBsYXRlX3Bh dGgsICdnZXRfYXR0YWNoX3RhYmxlcy5zcWwnXSksCisgICAgICAgICAgICAgICAgdGlkPXRpZAor ICAgICAgICAgICAgKQorCiAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhl Y3V0ZV8yZGFycmF5KFNRTCkKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKICAgICAg ICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgogICAgICAgICAgICAgICAgIHJlcy5hcHBl bmQoCi0gICAgICAgICAgICAgICAgICAgIHsnbGFiZWwnOiByb3dbJ2xpa2VfcmVsYXRpb24nXSwg J3ZhbHVlJzogcm93WydsaWtlX3JlbGF0aW9uJ119CisgICAgICAgICAgICAgICAgICAgIHsnbGFi ZWwnOiByb3dbJ3RhYmxlX25hbWUnXSwgJ3ZhbHVlJzogcm93WydvaWQnXX0KICAgICAgICAgICAg ICAgICApCisKICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAg ICAgICAgICAgZGF0YT1yZXMsCiAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMApAQCAtMTI5OCw0 MCArNzEzLDMzIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVh ZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQog Ci0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfY2x0eXBlX2Zvcm1hdHRlcihkYXRhX3R5cGUp OgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfcmVs YXRpb25zKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKICAgICAgICAgIiIi Ci0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGRhdGFfdHlwZTogVHlwZSBzdHJpbmcKLQog ICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgV2UgbmVlZCB0byByZW1vdmUgW10gZnJvbSB0 eXBlIGFuZCBhcHBlbmQgaXQKLSAgICAgICAgICAgIGFmdGVyIGxlbmd0aC9wcmVjaXNpb24gc28g d2Ugd2lsbCBzZW5kIGZsYWcgZm9yCi0gICAgICAgICAgICBzcWwgdGVtcGxhdGUKLSAgICAgICAg IiIiCi0gICAgICAgIGlmICdbXScgaW4gZGF0YV90eXBlOgotICAgICAgICAgICAgcmV0dXJuIGRh dGFfdHlwZVs6LTJdLCBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gZGF0 YV90eXBlLCBGYWxzZQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBjb252ZXJ0X2xlbmd0 aF9wcmVjaXNpb25fdG9fc3RyaW5nKGRhdGEpOgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiB3 aWxsIHJldHVybiBsaXN0IG9mIHRhYmxlcyBhdmFpbGFibGUgZm9yIGxpa2UvcmVsYXRpb24KKyAg ICAgICAgICAgIGNvbWJvYm94IHdoaWxlIGNyZWF0aW5nIG5ldyB0YWJsZQogICAgICAgICAiIiIK LSAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbnZlcnQgbGVuZ3RoICYgcHJlY2lz aW9uIHRvIHN0cmluZwotICAgICAgICB0byBoYW5kbGUgY2FzZSBsaWtlIHdoZW4gdXNlciBnaXZl cyAwIGFzIGxlbmd0aAotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBkYXRhOiBEYXRhIGZy b20gY2xpZW50CisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFsK KyAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsICdnZXRfcmVsYXRpb25z LnNxbCddKSwKKyAgICAgICAgICAgICAgICBzaG93X3N5c19vYmplY3RzPXNlbGYuYmx1ZXByaW50 LnNob3dfc3lzdGVtX29iamVjdHMsCisgICAgICAgICAgICAgICAgc2VydmVyX3R5cGU9c2VsZi5t YW5hZ2VyLnNlcnZlcl90eXBlKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25u LmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAg ICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICAgICAgcmVzLmFw cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgeydsYWJlbCc6IHJvd1snbGlrZV9yZWxhdGlvbidd LCAndmFsdWUnOiByb3dbJ2xpa2VfcmVsYXRpb24nXX0KKyAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9 cmVzLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICkKIAotICAgICAg ICBSZXR1cm5zOgotICAgICAgICAgICAgQ29udmVydGVkIGRhdGEKLSAgICAgICAgIiIiCi0gICAg ICAgIGlmICdhdHRsZW4nIGluIGRhdGEgYW5kIGRhdGFbJ2F0dGxlbiddIGlzIG5vdCBOb25lOgot ICAgICAgICAgICAgZGF0YVsnYXR0bGVuJ10gPSBzdHIoZGF0YVsnYXR0bGVuJ10pCi0gICAgICAg IGlmICdhdHRwcmVjaXNpb24nIGluIGRhdGEgYW5kIGRhdGFbJ2F0dHByZWNpc2lvbiddIGlzIG5v dCBOb25lOgotICAgICAgICAgICAgZGF0YVsnYXR0cHJlY2lzaW9uJ10gPSBzdHIoZGF0YVsnYXR0 cHJlY2lzaW9uJ10pCi0gICAgICAgIHJldHVybiBkYXRhCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9c3RyKGUpKQogCiAgICAgZGVmIF9wYXJzZV9mb3JtYXRfY29sdW1ucyhzZWxmLCBkYXRhLCBt b2RlPU5vbmUpOgogICAgICAgICAiIiIKQEAgLTEzNjAsMTIgKzc2OCwxMiBAQCBjbGFzcyBUYWJs ZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdHlwZSBmb3IgJ1tdJyBpbiBpdAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbJ2NsdHlwZSddLCBjWydoYXNTcXJCcmFja2V0 J10gPSBzZWxmLl9jbHR5cGVfZm9ybWF0dGVyKGNbJ2NsdHlwZSddKQogCi0gICAgICAgICAgICAg ICAgICAgICAgICBjID0gc2VsZi5jb252ZXJ0X2xlbmd0aF9wcmVjaXNpb25fdG9fc3RyaW5nKGMp CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gVGFibGVWaWV3LmNvbnZlcnRfbGVuZ3RoX3By ZWNpc2lvbl90b19zdHJpbmcoYykKIAogICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5z J11bYWN0aW9uXSA9IGZpbmFsX2NvbHVtbnMKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMg V2UgbmVlZCB0byBleGNsdWRlIGFsbCB0aGUgY29sdW1ucyB3aGljaCBhcmUgaW5oZXJpdGVkIGZy b20gb3RoZXIgdGFibGVzCi0gICAgICAgICAgICAjICdDUkVBVEUnIG1vZGUKKyAgICAgICAgICAg ICMgV2UgbmVlZCB0byBleGNsdWRlIGFsbCB0aGUgY29sdW1ucyB3aGljaCBhcmUgaW5oZXJpdGVk IGZyb20gb3RoZXIKKyAgICAgICAgICAgICMgdGFibGVzICdDUkVBVEUnIG1vZGUKICAgICAgICAg ICAgIGZpbmFsX2NvbHVtbnMgPSBbXQogCiAgICAgICAgICAgICBmb3IgYyBpbiBjb2x1bW5zOgpA QCAtMTM4MiwzNSArNzkwLDEzIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERh dGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICAgICAgICAgICMgY2hl Y2sgdHlwZSBmb3IgJ1tdJyBpbiBpdAogICAgICAgICAgICAgICAgICAgICBjWydjbHR5cGUnXSwg Y1snaGFzU3FyQnJhY2tldCddID0gc2VsZi5fY2x0eXBlX2Zvcm1hdHRlcihjWydjbHR5cGUnXSkK IAotICAgICAgICAgICAgICAgIGMgPSBzZWxmLmNvbnZlcnRfbGVuZ3RoX3ByZWNpc2lvbl90b19z dHJpbmcoYykKKyAgICAgICAgICAgICAgICBjID0gVGFibGVWaWV3LmNvbnZlcnRfbGVuZ3RoX3By ZWNpc2lvbl90b19zdHJpbmcoYykKIAogICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddID0gZmlu YWxfY29sdW1ucwogCiAgICAgICAgIHJldHVybiBkYXRhCiAKLSAgICBkZWYgY2hlY2tfYW5kX2Nv bnZlcnRfbmFtZV90b19zdHJpbmcoc2VsZiwgZGF0YSk6Ci0gICAgICAgICIiIgotICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgY2hlY2sgYW5kIGNvdmVydCB0YWJsZSB0byBzdHJpbmcgaW5jYXNl Ci0gICAgICAgIGl0IGlzIG51bWVyaWMKLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgZGF0 YTogZGF0YSBkaWN0Ci0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIFVwZGF0ZWQgZGF0 YSBkaWN0Ci0gICAgICAgICIiIgotICAgICAgICAjIEZvciBQeXRob24yLCBpdCBjYW4gYmUgaW50 LCBsb25nLCBmbG9hdAotICAgICAgICBpZiBoYXNhdHRyKHN0ciwgJ2RlY29kZScpOgotICAgICAg ICAgICAgaWYgaXNpbnN0YW5jZShkYXRhWyduYW1lJ10sIChpbnQsIGxvbmcsIGZsb2F0KSk6Ci0g ICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddID0gc3RyKGRhdGFbJ25hbWUnXSkKLSAgICAgICAg ZWxzZToKLSAgICAgICAgICAgICMgRm9yIFB5dGhvbjMsIGl0IGNhbiBiZSBpbnQsIGZsb2F0Ci0g ICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGFbJ25hbWUnXSwgKGludCwgZmxvYXQpKToKLSAg ICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSBzdHIoZGF0YVsnbmFtZSddKQotICAgICAgICBy ZXR1cm4gZGF0YQotCi0KLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZp ZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNpZCwgZGlk LCBzY2lkKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGVz IG5ldyB0aGUgdGFibGUgb2JqZWN0CkBAIC0xNDUxLDcgKzgzNyw3IEBAIGNsYXNzIFRhYmxlVmll dyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAKICAg ICAgICAgIyBQYXJzZSAmIGZvcm1hdCBjb2x1bW5zCiAgICAgICAgIGRhdGEgPSBzZWxmLl9wYXJz ZV9mb3JtYXRfY29sdW1ucyhkYXRhKQotICAgICAgICBkYXRhID0gc2VsZi5jaGVja19hbmRfY29u dmVydF9uYW1lX3RvX3N0cmluZyhkYXRhKQorICAgICAgICBkYXRhID0gVGFibGVWaWV3LmNoZWNr X2FuZF9jb252ZXJ0X25hbWVfdG9fc3RyaW5nKGRhdGEpCiAKICAgICAgICAgIyAnY29sbF9pbmhl cml0cycgaXMgQXJyYXkgYnV0IGl0IGNvbWVzIGFzIHN0cmluZyBmcm9tIGJyb3dzZXIKICAgICAg ICAgIyBXZSB3aWxsIGNvbnZlcnQgaXQgYWdhaW4gdG8gbGlzdApAQCAtMTQ3NCw5ICs4NjAsMjIg QEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1 bVNldHRpbmdzKToKICAgICAgICAgICAgICAgICBjWydyZW1vdGVfdGFibGUnXSA9IHJzZXRbJ3Jv d3MnXVswXVsndGFibGUnXQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgcGFy dGl0aW9uc19zcWwgPSAnJworICAgICAgICAgICAgcGFydGl0aW9uZWQgPSBGYWxzZQorICAgICAg ICAgICAgaWYgJ2lzX3BhcnRpdGlvbmVkJyBpbiBkYXRhIGFuZCBkYXRhWydpc19wYXJ0aXRpb25l ZCddOgorICAgICAgICAgICAgICAgIGRhdGFbJ3JlbGtpbmQnXSA9ICdwJworICAgICAgICAgICAg ICAgICMgY3JlYXRlIHBhcnRpdGlvbiBzY2hlbWUKKyAgICAgICAgICAgICAgICBkYXRhWydwYXJ0 aXRpb25fc2NoZW1lJ10gPSBzZWxmLmdldF9wYXJ0aXRpb25fc2NoZW1lKGRhdGEpCisgICAgICAg ICAgICAgICAgcGFydGl0aW9uc19zcWwgPSBzZWxmLmdldF9wYXJ0aXRpb25zX3NxbChkYXRhKQor ICAgICAgICAgICAgICAgIHBhcnRpdGlvbmVkID0gVHJ1ZQorCisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29u bikKKworICAgICAgICAgICAgIyBBcHBlbmQgU1FMIGZvciBwYXJ0aXRpb25zCisgICAgICAgICAg ICBTUUwgKz0gJ1xuJyArIHBhcnRpdGlvbnNfc3FsCisKICAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKICAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCkBAIC0xNDkwLDcgKzg4OSw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZp ZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICAgICAgZGF0 YVsnbmFtZSddID0gZGF0YVsnbmFtZSddWzA6Q09OU1RfTUFYX0NIQVJfQ09VTlRdCiAKICAgICAg ICAgICAgICMgR2V0IHVwZGF0ZWQgc2NoZW1hIG9pZAotICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3NjaGVtYV9vaWQuc3FsJ10pLCB0 bmFtZT1kYXRhWyduYW1lJ10pCiAKICAgICAgICAgICAgIHN0YXR1cywgc2NpZCA9IHNlbGYuY29u bi5leGVjdXRlX3NjYWxhcihTUUwpCkBAIC0xNDk4LDcgKzg5Nyw3IEBAIGNsYXNzIFRhYmxlVmll dyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zY2lkKQog CiAgICAgICAgICAgICAjIHdlIG5lZWQgb2lkIHRvIHRvIGFkZCBvYmplY3QgaW4gdHJlZSBhdCBi cm93c2VyCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdnZXRfb2lkLnNxbCddKSwgc2NpZD1zY2lkLCBkYXRhPWRhdGEpCiAgICAgICAgICAg ICBzdGF0dXMsIHRpZCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCiAgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgpAQCAtMTUwOSwxMyArOTA4LDE0IEBAIGNsYXNzIFRhYmxlVmlldyhQ R0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAg ICAgICAgICAgICAgIHRpZCwKICAgICAgICAgICAgICAgICAgICAgc2NpZCwKICAgICAgICAgICAg ICAgICAgICAgZGF0YVsnbmFtZSddLAotICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXRh YmxlIgorICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBhcnRpdGlvbiIgaWYgcGFydGl0 aW9uZWQgZWxzZSAiaWNvbi10YWJsZSIsCisgICAgICAgICAgICAgICAgICAgIGlzX3BhcnRpdGlv bmVkPXBhcnRpdGlvbmVkCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKIAotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgdXBkYXRlKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1 bmN0aW9uIHdpbGwgdXBkYXRlIGFuIGV4aXN0aW5nIHRhYmxlIG9iamVjdApAQCAtMTUzOCwzNyAr OTM4LDIzIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVy LCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKIAogICAgICAg ICB0cnk6Ci0gICAgICAgICAgICBTUUwsIG5hbWUgPSBzZWxmLmdldF9zcWwoZGlkLCBzY2lkLCB0 aWQsIGRhdGEpCi0KLSAgICAgICAgICAgIFNRTCA9IFNRTC5zdHJpcCgnXG4nKS5zdHJpcCgnICcp Ci0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwp CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVf dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCiAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQogCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnZ2V0X3NjaGVtYV9vaWQuc3FsJ10pLCB0aWQ9dGlkKQotICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisgICAgICAgICAgICByZXR1cm4gc3VwZXIoVGFibGVWaWV3LCBzZWxmKS51cGRh dGUoCisgICAgICAgICAgICAgICAgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBkYXRhLCByZXMp CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0gICAgICAgICAgICAjIG5ldyBz Y2hlbWEgaWQKLSAgICAgICAgICAgIHNjaWQgPSByZXNbJ3Jvd3MnXVswXVsnc2NpZCddCi0KLSAg ICAgICAgICAgIHJldHVybiBqc29uaWZ5KAotICAgICAgICAgICAgICAgIG5vZGU9c2VsZi5ibHVl cHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAotICAgICAgICAgICAgICAgICAgICB0aWQsCi0g ICAgICAgICAgICAgICAgICAgIHNjaWQsCi0gICAgICAgICAgICAgICAgICAgIG5hbWUsCi0gICAg ICAgICAgICAgICAgICAgIGljb249Imljb24tJXMiICUgc2VsZi5ub2RlX3R5cGUKLSAgICAgICAg ICAgICAgICApCi0gICAgICAgICAgICApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK LSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQotCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgotICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCwgdGlkKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCBkZWxldGVzIHRoZSB0YWJsZSBvYmplY3QKKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZGVsZXRlcyB0aGUg dGFibGUgb2JqZWN0CiAKICAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgIGdpZDogU2VydmVyIEdy b3VwIElECkBAIC0xNTg1LDcgKzk3MSw3IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZp ZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICBjYXNjYWRl ID0gRmFsc2UKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9 dGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2Vs Zi5kYXRsYXN0c3lzb2lkKQpAQCAtMTYwNiw3ICs5OTIsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdD aGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogCiAgICAgICAg ICAgICBkYXRhID0gcmVzWydyb3dzJ11bMF0KIAotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjYXNjYWRlPWNhc2Nh ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4pCkBA IC0xNjI2LDcgKzEwMTIsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRh VHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz IGU6CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKIAotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVj a19wcmVjb25kaXRpb24KICAgICBkZWYgdHJ1bmNhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgdGlkKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB0cnVuY2F0 ZSB0aGUgdGFibGUgb2JqZWN0CkBAIC0xNjM4LDQzICsxMDI0LDIyIEBAIGNsYXNzIFRhYmxlVmll dyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAg ICAgICAgIHNjaWQ6IFNjaGVtYSBJRAogICAgICAgICAgICB0aWQ6IFRhYmxlIElECiAgICAgICAg ICIiIgotICAgICAgICAjIEJlbG93IHdpbGwgZGVjaWRlIGlmIGl0J3Mgc2ltcGxlIGRyb3Agb3Ig ZHJvcCB3aXRoIGNhc2NhZGUgY2FsbAotICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJl cXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMoCi0gICAgICAgICAgICByZXF1ZXN0LmRhdGEsIGVu Y29kaW5nPSd1dGYtOCcKLSAgICAgICAgKQotICAgICAgICAjIENvbnZlcnQgc3RyICd0cnVlJyB0 byBib29sZWFuIHR5cGUKLSAgICAgICAgaXNfY2FzY2FkZSA9IGpzb24ubG9hZHMoZGF0YVsnY2Fz Y2FkZSddKQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10 aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxm LmRhdGxhc3RzeXNvaWQpCiAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlX2RpY3QoU1FMKQogICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLSAgICAgICAgICAg IGRhdGEgPSByZXNbJ3Jvd3MnXVswXQogCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ3RydW5jYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNhc2NhZGU9aXNfY2FzY2FkZSkKLSAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKLSAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2UoCi0gICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAotICAgICAgICAgICAgICAgIGluZm89 Z2V0dGV4dCgiVGFibGUgdHJ1bmNhdGVkIiksCi0gICAgICAgICAgICAgICAgZGF0YT17Ci0gICAg ICAgICAgICAgICAgICAgICdpZCc6IHRpZCwKLSAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBz Y2lkCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJu IHN1cGVyKFRhYmxlVmlldywgc2VsZikudHJ1bmNhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlk LCByZXMpCiAKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAKLSAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAg ZGVmIGVuYWJsZV9kaXNhYmxlX3RyaWdnZXJzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZCk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZW5hYmxlL2Rpc2Fi bGUgdHJpZ2dlcihzKSBvbiB0aGUgdGFibGUgb2JqZWN0CkBAIC0xNjk0LDcgKzEwNTksNyBAQCBj bGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0 dGluZ3MpOgogICAgICAgICBpc19lbmFibGUgPSBqc29uLmxvYWRzKGRhdGFbJ2VuYWJsZSddKQog CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3Rz eXNvaWQpCkBAIC0xNzAzLDcgKzEwNjgsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVW aWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQogICAgICAgICAgICAgZGF0 YSA9IHJlc1sncm93cyddWzBdCiAKLSAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmFibGVfZGlzYWJsZV90cmlnZ2VyLnNx bCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGlzX2Vu YWJsZV90cmlnZ2VyPWlzX2VuYWJsZSkKICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKQEAgLTE3MjMsNyArMTA4OCw3IEBAIGNsYXNzIFRhYmxl VmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQogCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlv bgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiByZXNldChz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgogICAgICAgICAiIiIKICAgICAgICAgVGhp cyBmdW5jdGlvbiB3aWxsIHJlc2V0IHN0YXRpc3RpY3Mgb2YgdGFibGUKQEAgLTE3MzUsMjcgKzEx MDAsOSBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwg VmFjdXVtU2V0dGluZ3MpOgogICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKICAgICAgICAgICAg dGlkOiBUYWJsZSBJRAogICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNldF9zdGF0cy5zcWwnXSks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCkKLSAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKLSAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCi0gICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAotICAgICAgICAgICAgICAgIGluZm89Z2V0 dGV4dCgiVGFibGUgc3RhdGlzdGljcyBoYXZlIGJlZW4gcmVzZXQiKSwKLSAgICAgICAgICAgICAg ICBkYXRhPXsKLSAgICAgICAgICAgICAgICAgICAgJ2lkJzogdGlkLAotICAgICAgICAgICAgICAg ICAgICAnc2NpZCc6IHNjaWQKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApCi0KLSAg ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisgICAgICAgIHJldHVybiBCYXNlVGFibGVW aWV3LnJlc2V0X3N0YXRpc3RpY3Moc2VsZiwgc2NpZCwgdGlkKQogCi0gICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBt c3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKICAgICAgICAgIiIiCiAg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgbW9kaWZpZWQgc3FsIGZvciB0YWJsZSBv YmplY3QKQEAgLTE3NjgsNDI3ICsxMTE1LDE1IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9k ZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgIHRpZDog VGFibGUgSUQKICAgICAgICAgIiIiCiAgICAgICAgIGRhdGEgPSBkaWN0KCkKKyAgICAgICAgcmVz ID0gTm9uZQogICAgICAgICBmb3IgaywgdiBpbiByZXF1ZXN0LmFyZ3MuaXRlbXMoKToKICAgICAg ICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBkYXRhW2tdID0ganNvbi5sb2Fkcyh2LCBlbmNv ZGluZz0ndXRmLTgnKQogICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3Is IEtleUVycm9yKToKICAgICAgICAgICAgICAgICBkYXRhW2tdID0gdgogCi0gICAgICAgIFNRTCwg bmFtZSA9IHNlbGYuZ2V0X3NxbChkaWQsIHNjaWQsIHRpZCwgZGF0YSkKLSAgICAgICAgU1FMID0g cmUuc3ViKCdcbnsyLH0nLCAnXG5cbicsIFNRTCkKLSAgICAgICAgU1FMID0gU1FMLnN0cmlwKCdc bicpCi0gICAgICAgIGlmIFNRTCA9PSAnJzoKLSAgICAgICAgICAgIFNRTCA9ICItLW1vZGlmaWVk IFNRTCIKLSAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKLSAgICAgICAgICAgIGRh dGE9U1FMLAotICAgICAgICAgICAgc3RhdHVzPTIwMAotICAgICAgICApCi0KLSAgICBkZWYgZ2V0 X2luZGV4X2NvbnN0cmFpbnRfc3FsKHNlbGYsIGRpZCwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIi Ci0gICAgICAgICBBcmdzOgotICAgICAgICAgICB0aWQ6IFRhYmxlIElECi0gICAgICAgICAgIGRh dGE6IGRhdGEgZGljdCBjb21pbmcgZnJvbSB0aGUgY2xpZW50Ci0KLSAgICAgICAgUmV0dXJuczoK LSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIG1vZGlmaWVkIHNxbCBmb3IgaW5k ZXggY29uc3RyYWludHMKLSAgICAgICAgKFByaW1hcnkgS2V5ICYgVW5pcXVlKQotICAgICAgICAi IiIKLSAgICAgICAgc3FsID0gW10KLSAgICAgICAgIyBXZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5k ZXggY29uc3RyYWludHMgZm9yIHRoZSB0YWJsZQotICAgICAgICBpbmRleF9jb25zdHJhaW50cyA9 IHsKLSAgICAgICAgICAgICdwJzogJ3ByaW1hcnlfa2V5JywgJ3UnOiAndW5pcXVlX2NvbnN0cmFp bnQnCi0gICAgICAgIH0KLQotICAgICAgICBmb3IgY3R5cGUgaW4gaW5kZXhfY29uc3RyYWludHMu a2V5cygpOgotICAgICAgICAgICAgIyBDaGVjayBpZiBjb25zdHJhaW50IGlzIGluIGRhdGEKLSAg ICAgICAgICAgICMgSWYgeWVzIHRoZW4gd2UgbmVlZCB0byBjaGVjayBmb3IgYWRkL2NoYW5nZS9k ZWxldGUKLSAgICAgICAgICAgIGlmIGluZGV4X2NvbnN0cmFpbnRzW2N0eXBlXSBpbiBkYXRhOgot ICAgICAgICAgICAgICAgIGNvbnN0cmFpbnQgPSBkYXRhW2luZGV4X2NvbnN0cmFpbnRzW2N0eXBl XV0KLSAgICAgICAgICAgICAgICAjIElmIGNvbnN0cmFpbnQocykgaXMvYXJlIGRlbGV0ZWQKLSAg ICAgICAgICAgICAgICBpZiAnZGVsZXRlZCcgaW4gY29uc3RyYWludDoKLSAgICAgICAgICAgICAg ICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsnZGVsZXRlZCddOgotICAgICAgICAgICAgICAgICAg ICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAgICAgICAgICAgICAgICAgICAg ICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotCi0gICAgICAgICAgICAgICAgICAgICAgICAj IFNxbCBmb3IgZHJvcAotICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVf cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5z dHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAgICAg aWYgJ2NoYW5nZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBjIGlu IGNvbnN0cmFpbnRbJ2NoYW5nZWQnXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVt YSddID0gZGF0YVsnc2NoZW1hJ10KLSAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10g PSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc19zcWwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg W3NlbGYuaW5kZXhfY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgdGlkPXRpZCwgY2lkPWNbJ29p ZCddLCBjb25zdHJhaW50X3R5cGU9Y3R5cGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QocHJvcGVydGllc19zcWwpCi0gICAgICAg ICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAg ICAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCi0gICAgICAgICAgICAg ICAgICAgICAgICAjIFNxbCB0byB1cGRhdGUgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAg ICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5kZXhf Y29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAndXBkYXRlLnNxbCddKSwgZGF0YT1jLCBvX2RhdGE9b2xkX2RhdGEsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQotICAgICAgICAg ICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAgICAgaWYgJ2FkZGVkJyBpbiBjb25zdHJh aW50OgotICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydhZGRlZCddOgot ICAgICAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAg ICAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotCi0gICAgICAg ICAgICAgICAgICAgICAgICAjIFNxbCB0byBhZGQgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAg ICAgICBpZiBzZWxmLnZhbGlkYXRlX2NvbnN0cmFpbnMoaW5kZXhfY29uc3RyYWludHNbY3R5cGVd LCBjKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5pbmRleF9jb25zdHJhaW50X3RlbXBs YXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh PWMsIGNvbm49c2VsZi5jb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3RyYWludF9uYW1lPSdQUklNQVJZIEtFWScKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIGN0eXBlID09ICdwJyBlbHNlICdVTklRVUUnCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICkuc3RyaXAoJ1xuJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICApCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRl eHQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0gZGVmaW5pdGlvbiBp bmNvbXBsZXRlIGZvciB7MH0gY29uc3RyYWludCcuZm9ybWF0KGluZGV4X2NvbnN0cmFpbnRzW2N0 eXBlXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkKLSAgICAgICAgaWYgbGVuKHNxbCkgPiAwOgotICAgICAgICAgICAgIyBK b2luIGFsbCB0aGUgc3FsKHMpIGFzIHNpbmdsZSBzdHJpbmcKLSAgICAgICAgICAgIHJldHVybiAn XG5cbicuam9pbihzcWwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQot Ci0gICAgZGVmIGdldF9mb3JlaWduX2tleV9zcWwoc2VsZiwgdGlkLCBkYXRhKToKLSAgICAgICAg IiIiCi0gICAgICAgICBBcmdzOgotICAgICAgICAgICB0aWQ6IFRhYmxlIElECi0gICAgICAgICAg IGRhdGE6IGRhdGEgZGljdCBjb21pbmcgZnJvbSB0aGUgY2xpZW50Ci0KLSAgICAgICAgUmV0dXJu czoKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIG1vZGlmaWVkIHNxbCBmb3Ig Zm9yZWlnbiBrZXkKLSAgICAgICAgIiIiCi0gICAgICAgIHNxbCA9IFtdCi0gICAgICAgICMgQ2hl Y2sgaWYgY29uc3RyYWludCBpcyBpbiBkYXRhCi0gICAgICAgICMgSWYgeWVzIHRoZW4gd2UgbmVl ZCB0byBjaGVjayBmb3IgYWRkL2NoYW5nZS9kZWxldGUKLSAgICAgICAgaWYgJ2ZvcmVpZ25fa2V5 JyBpbiBkYXRhOgotICAgICAgICAgICAgY29uc3RyYWludCA9IGRhdGFbJ2ZvcmVpZ25fa2V5J10K LSAgICAgICAgICAgICMgSWYgY29uc3RyYWludChzKSBpcy9hcmUgZGVsZXRlZAotICAgICAgICAg ICAgaWYgJ2RlbGV0ZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4g Y29uc3RyYWludFsnZGVsZXRlZCddOgotICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9 IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWydu YW1lJ10KLQotICAgICAgICAgICAgICAgICAgICAjIFNxbCBmb3IgZHJvcAotICAgICAgICAgICAg ICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmZvcmVpZ25f a2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUu c3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNv bm4pLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgaWYg J2NoYW5nZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3Ry YWludFsnY2hhbmdlZCddOgotICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFb J3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10K LQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBs YXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRp ZD10aWQsIGNpZD1jWydvaWQnXSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHByb3BlcnRpZXNfc3FsKQotICAgICAgICAgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAgICAgICAgICAgb2xkX2Rh dGEgPSByZXNbJ3Jvd3MnXVswXQotICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byB1cGRhdGUg b2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAg ICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAndXBkYXRlLnNxbCddKSwgZGF0YT1jLCBvX2RhdGE9b2xkX2RhdGEsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCi0gICAg ICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52YWxp ZGF0ZV9jb25zdHJhaW5zKCdmb3JlaWduX2tleScsIGMpOgotICAgICAgICAgICAgICAgICAgICAg ICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlIGZv ciBmb3JlaWduX2tleSBjb25zdHJhaW50JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkK LSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biAnXG5cbicuam9pbihzcWwpCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgJ2NvbHVtbnMnIGlu IGM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2xzID0gW10KLSAgICAgICAgICAgICAgICAg ICAgICAgIGZvciBjb2wgaW4gY1snY29sdW1ucyddOgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbHMuYXBwZW5kKGNvbFsnbG9jYWxfY29sdW1uJ10pCi0KLSAgICAgICAgICAgICAgICAg ICAgICAgIGNvdmVyaW5naW5kZXggPSBzZWxmLnNlYXJjaF9jb3ZlcmluZ2luZGV4KHRpZCwgY29s cykKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY292ZXJpbmdpbmRleCBpcyBOb25lIGFu ZCAnYXV0b2luZGV4JyBpbiBjIGFuZCBjWydhdXRvaW5kZXgnXSBhbmQgXAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoJ2NvdmVyaW5naW5kZXgnIGluIGMgYW5kCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbJ2NvdmVyaW5naW5kZXgnXSAhPSAnJyk6 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZChyZW5kZXJfdGVtcGxhdGUo Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmZvcmVpZ25f a2V5X3RlbXBsYXRlX3BhdGgsICdjcmVhdGVfaW5kZXguc3FsJ10pLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4nKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBpZiAn YWRkZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWlu dFsnYWRkZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hl bWEnXQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0KLSAg ICAgICAgICAgICAgICAgICAgIyBTcWwgdG8gYWRkIG9iamVjdAotICAgICAgICAgICAgICAgICAg ICAjIENvbHVtbnMKLQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9j b25zdHJhaW5zKCdmb3JlaWduX2tleScsIGMpOgotICAgICAgICAgICAgICAgICAgICAgICAgc3Fs LmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlIGZvciBmb3Jl aWduX2tleSBjb25zdHJhaW50JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAg ICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnXG5c bicuam9pbihzcWwpCi0KLSAgICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10p LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPWNbJ2NvbHVt bnMnXVswXVsncmVmZXJlbmNlcyddKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJzZXQg PSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICAgICAgICAgICAgICBjWydyZW1vdGVf c2NoZW1hJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAg IGNbJ3JlbW90ZV90YWJsZSddID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCi0KLSAgICAgICAg ICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90 ZW1wbGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5mb3Jl aWduX2tleV90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnY3JlYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMs IGNvbm49c2VsZi5jb25uCi0gICAgICAgICAgICAgICAgICAgICAgICApLnN0cmlwKCdcbicpCi0g ICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgICAgICAgICBpZiBjWydhdXRvaW5k ZXgnXToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiLyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZV9pbmRleC5zcWwnXSks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4p LnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgaWYgbGVu KHNxbCkgPiAwOgotICAgICAgICAgICAgIyBKb2luIGFsbCB0aGUgc3FsKHMpIGFzIHNpbmdsZSBz dHJpbmcKLSAgICAgICAgICAgIHJldHVybiAnXG5cbicuam9pbihzcWwpCi0gICAgICAgIGVsc2U6 Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9jaGVja19jb25zdHJhaW50 X3NxbChzZWxmLCB0aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgIEFyZ3M6Ci0gICAg ICAgICAgIHRpZDogVGFibGUgSUQKLSAgICAgICAgICAgZGF0YTogZGF0YSBkaWN0IGNvbWluZyBm cm9tIHRoZSBjbGllbnQKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgIFRoaXMgZnVuY3Rp b24gd2lsbCBnZW5lcmF0ZSBtb2RpZmllZCBzcWwgZm9yIGNoZWNrIGNvbnN0cmFpbnQKLSAgICAg ICAgIiIiCi0gICAgICAgIHNxbCA9IFtdCi0gICAgICAgICMgQ2hlY2sgaWYgY29uc3RyYWludCBp cyBpbiBkYXRhCi0gICAgICAgICMgSWYgeWVzIHRoZW4gd2UgbmVlZCB0byBjaGVjayBmb3IgYWRk L2NoYW5nZS9kZWxldGUKLSAgICAgICAgaWYgJ2NoZWNrX2NvbnN0cmFpbnQnIGluIGRhdGE6Ci0g ICAgICAgICAgICBjb25zdHJhaW50ID0gZGF0YVsnY2hlY2tfY29uc3RyYWludCddCi0gICAgICAg ICAgICAjIElmIGNvbnN0cmFpbnQocykgaXMvYXJlIGRlbGV0ZWQKLSAgICAgICAgICAgIGlmICdk ZWxldGVkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFp bnRbJ2RlbGV0ZWQnXToKLSAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydz Y2hlbWEnXQotICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0K LSAgICAgICAgICAgICAgICAgICAgIyBTcWwgZm9yIGRyb3AKLSAgICAgICAgICAgICAgICAgICAg c3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5jaGVja19jb25zdHJhaW50 X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3Fs J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4p LnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgaWYgJ2No YW5nZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWlu dFsnY2hhbmdlZCddOgotICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3Nj aGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQot ICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmNoZWNrX2NvbnN0cmFpbnRfdGVt cGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAg dGlkPXRpZCwgY2lkPWNbJ29pZCddKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QocHJvcGVydGllc19zcWwpCi0gICAgICAgICAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgICAgICAgICBvbGRf ZGF0YSA9IHJlc1sncm93cyddWzBdCi0gICAgICAgICAgICAgICAgICAgICMgU3FsIHRvIHVwZGF0 ZSBvYmplY3QKLSAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKLSAgICAgICAgICAgICAg ICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5jaGVja19jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3VwZGF0ZS5zcWwnXSksIGRhdGE9Yywgb19kYXRhPW9sZF9kYXRh LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uKS5zdHJpcCgnXG4n KQotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gY29u c3RyYWludDoKLSAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydhZGRlZCddOgot ICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAg ICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAgICAgICAgICAgICAg ICAgICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9jb25zdHJhaW5zKCdjaGVja19jb25zdHJhaW50Jywg Yyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdldHRleHQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct LSBkZWZpbml0aW9uIGluY29tcGxldGUgZm9yIGNoZWNrX2NvbnN0cmFpbnQnCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuICdcblxuJy5qb2luKHNxbCkKLQotICAgICAgICAgICAgICAg ICAgICBzcWwuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRl KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmNoZWNrX2NvbnN0 cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBj b25uPXNlbGYuY29ubgotICAgICAgICAgICAgICAgICAgICAgICAgKS5zdHJpcCgnXG4nKQotICAg ICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgaWYgbGVuKHNxbCkgPiAwOgotICAgICAgICAg ICAgIyBKb2luIGFsbCB0aGUgc3FsKHMpIGFzIHNpbmdsZSBzdHJpbmcKLSAgICAgICAgICAgIHJl dHVybiAnXG5cbicuam9pbihzcWwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4g Tm9uZQotCi0gICAgZGVmIGdldF9leGNsdXNpb25fY29uc3RyYWludF9zcWwoc2VsZiwgZGlkLCB0 aWQsIGRhdGEpOgotICAgICAgICAiIiIKLSAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgIHRpZDog VGFibGUgSUQKLSAgICAgICAgICAgZGF0YTogZGF0YSBkaWN0IGNvbWluZyBmcm9tIHRoZSBjbGll bnQKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5l cmF0ZSBtb2RpZmllZCBzcWwgZm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50Ci0gICAgICAgICIiIgot ICAgICAgICBzcWwgPSBbXQotICAgICAgICAjIENoZWNrIGlmIGNvbnN0cmFpbnQgaXMgaW4gZGF0 YQotICAgICAgICAjIElmIHllcyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFkZC9jaGFuZ2Uv ZGVsZXRlCi0gICAgICAgIGlmICdleGNsdWRlX2NvbnN0cmFpbnQnIGluIGRhdGE6Ci0gICAgICAg ICAgICBjb25zdHJhaW50ID0gZGF0YVsnZXhjbHVkZV9jb25zdHJhaW50J10KLSAgICAgICAgICAg ICMgSWYgY29uc3RyYWludChzKSBpcy9hcmUgZGVsZXRlZAotICAgICAgICAgICAgaWYgJ2RlbGV0 ZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWludFsn ZGVsZXRlZCddOgotICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVt YSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQotICAg ICAgICAgICAgICAgICAgICAjIFNxbCBmb3IgZHJvcAotICAgICAgICAgICAgICAgICAgICBzcWwu YXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50 X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3Fs J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4p LnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgaWYgJ2No YW5nZWQnIGluIGNvbnN0cmFpbnQ6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gY29uc3RyYWlu dFsnY2hhbmdlZCddOgotICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3Nj aGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLQot ICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50 X3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgIGRpZD1kaWQsIHRpZD10aWQsIGNpZD1jWydvaWQnXSkKLSAgICAgICAgICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHByb3BlcnRpZXNfc3FsKQotICAg ICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAg ICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQotICAgICAgICAgICAgICAgICAgICAj IFNxbCB0byB1cGRhdGUgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0g ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oWwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVf cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXBkYXRlLnNxbCddKSwgZGF0YT1j LCBvX2RhdGE9b2xkX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1zZWxm LmNvbm4pLnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAg aWYgJ2FkZGVkJyBpbiBjb25zdHJhaW50OgotICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0 cmFpbnRbJ2FkZGVkJ106Ci0gICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsn c2NoZW1hJ10KLSAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQot Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZhbGlkYXRlX2NvbnN0cmFpbnMoJ2V4 Y2x1ZGVfY29uc3RyYWludCcsIGMpOgotICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVu ZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlIGZvciBleGNsdXNpb25f Y29uc3RyYWludCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAg ICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4o c3FsKQotCi0gICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCi0gICAgICAgICAgICAgICAg ICAgICAgICByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYuZXhjbHVzaW9uX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYuY29ubgotICAgICAgICAgICAgICAg ICAgICAgICAgKS5zdHJpcCgnXG4nKQotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAg aWYgbGVuKHNxbCkgPiAwOgotICAgICAgICAgICAgIyBKb2luIGFsbCB0aGUgc3FsKHMpIGFzIHNp bmdsZSBzdHJpbmcKLSAgICAgICAgICAgIHJldHVybiB1J1xuXG4nLmpvaW4oc3FsKQotICAgICAg ICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBnZXRfdHJpZ2dlcl9m dW5jdGlvbl9zY2hlbWEoc2VsZiwgZGF0YSk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1 bmN0aW9uIHdpbGwgcmV0dXJuIHRyaWdnZXIgZnVuY3Rpb24gd2l0aCBzY2hlbWEgbmFtZQotICAg ICAgICAiIiIKLSAgICAgICAgIyBJZiBsYW5ndWFnZSBpcyAnZWRic3BsJyB0aGVuIHRyaWdnZXIg ZnVuY3Rpb24gc2hvdWxkIGJlCi0gICAgICAgICMgJ0lubGluZSBFREItU1BMJyBlbHNlIHdlIHdp bGwgZmluZCB0aGUgdHJpZ2dlciBmdW5jdGlvbgotICAgICAgICAjIHdpdGggc2NoZW1hIG5hbWUu Ci0gICAgICAgIGlmIGRhdGFbJ2xhbm5hbWUnXSA9PSAnZWRic3BsJzoKLSAgICAgICAgICAgIGRh dGFbJ3RmdW5jdGlvbiddID0gJ0lubGluZSBFREItU1BMJwotICAgICAgICBlbHNlOgotICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICIvIi5qb2luKAot ICAgICAgICAgICAgICAgICAgICBbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsJ2dldF90cmln Z2VyZnVuY3Rpb25zLnNxbCddCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICB0 Z2ZvaWQ9ZGF0YVsndGdmb2lkJ10sCi0gICAgICAgICAgICAgICAgc2hvd19zeXN0ZW1fb2JqZWN0 cz1zZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzCi0gICAgICAgICAgICApCi0KLSAg ICAgICAgICAgIHN0YXR1cywgcmVzdWx0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCi0g ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQotCi0gICAgICAgICAgICAjIFVwZGF0ZSB0aGUg dHJpZ2dlciBmdW5jdGlvbiB3aGljaCB3ZSBoYXZlIGZldGNoZWQgd2l0aAotICAgICAgICAgICAg IyBzY2hlbWEgbmFtZQotICAgICAgICAgICAgaWYgJ3Jvd3MnIGluIHJlc3VsdCBhbmQgbGVuKHJl c3VsdFsncm93cyddKSA+IDAgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGZ1 bmN0aW9ucycgaW4gcmVzdWx0Wydyb3dzJ11bMF06Ci0gICAgICAgICAgICAgICAgZGF0YVsndGZ1 bmN0aW9uJ10gPSByZXN1bHRbJ3Jvd3MnXVswXVsndGZ1bmN0aW9ucyddCi0gICAgICAgIHJldHVy biBkYXRhCi0KLSAgICBkZWYgX2Zvcm1hdF9hcmdzKHNlbGYsIGFyZ3MpOgotICAgICAgICAiIiIK LSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGZvcm1hdCBhcmd1bWVudHMuCi0KLSAgICAgICAg QXJnczoKLSAgICAgICAgICAgIGFyZ3M6IEFyZ3VtZW50cwotCi0gICAgICAgIFJldHVybnM6Ci0g ICAgICAgICAgICBGb3JtYXRlZCBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCi0gICAgICAgICIiIgot ICAgICAgICBmb3JtYXR0ZWRfYXJncyA9IFsiJ3swfSciLmZvcm1hdChhcmcpIGZvciBhcmcgaW4g YXJnc10KLSAgICAgICAgcmV0dXJuICcsICcuam9pbihmb3JtYXR0ZWRfYXJncykKLQotICAgIGRl ZiBnZXRfc3FsKHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBkYXRhKToKLSAgICAgICAgIiIiCi0gICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBjcmVhdGUvdXBkYXRlIHNxbCBmcm9tIG1v ZGVsIGRhdGEKLSAgICAgICAgY29taW5nIGZyb20gY2xpZW50Ci0gICAgICAgICIiIgogICAgICAg ICBpZiB0aWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlk LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5k YXRsYXN0c3lzb2lkKQpAQCAtMjE5NiwyNTggKzExMzEsMTcgQEAgY2xhc3MgVGFibGVWaWV3KFBH Q2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCiAKLSAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dz J11bMF0KLSAgICAgICAgICAgIG9sZF9kYXRhID0gc2VsZi5fZm9ybWF0dGVyKGRpZCwgc2NpZCwg dGlkLCBvbGRfZGF0YSkKLQotICAgICAgICAgICAgIyBXZSB3aWxsIGNvbnZlcnQgcHJpdmlsZWdl cyBjb21pbmcgZnJvbSBjbGllbnQgcmVxdWlyZWQKLSAgICAgICAgICAgIGlmICdyZWxhY2wnIGlu IGRhdGE6Ci0gICAgICAgICAgICAgICAgZm9yIG1vZGUgaW4gWydhZGRlZCcsICdjaGFuZ2VkJywg J2RlbGV0ZWQnXToKLSAgICAgICAgICAgICAgICAgICAgaWYgbW9kZSBpbiBkYXRhWydyZWxhY2wn XToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ3JlbGFjbCddW21vZGVdID0gcGFyc2Vf cHJpdl90b19kYigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydyZWxhY2wnXVtt b2RlXSwgc2VsZi5hY2wKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAg IyBJZiBuYW1lIGlzIG5vdCBwcmVzZW50IGluIHJlcXVlc3QgZGF0YQotICAgICAgICAgICAgaWYg J25hbWUnIG5vdCBpbiBkYXRhOgotICAgICAgICAgICAgICAgIGRhdGFbJ25hbWUnXSA9IG9sZF9k YXRhWyduYW1lJ10KLQotICAgICAgICAgICAgZGF0YSA9IHNlbGYuY2hlY2tfYW5kX2NvbnZlcnRf bmFtZV90b19zdHJpbmcoZGF0YSkKLQotICAgICAgICAgICAgIyBJZiBuYW1lIGlmIG5vdCBwcmVz ZW50Ci0gICAgICAgICAgICBpZiAnc2NoZW1hJyBub3QgaW4gZGF0YToKLSAgICAgICAgICAgICAg ICBkYXRhWydzY2hlbWEnXSA9IG9sZF9kYXRhWydzY2hlbWEnXQotCi0gICAgICAgICAgICAjIEZp bHRlciBvdXQgbmV3IHRhYmxlcyBmcm9tIGxpc3QsIHdlIHdpbGwgc2VuZCBjb21wbGV0ZSBsaXN0 Ci0gICAgICAgICAgICAjIGFuZCBub3QgbmV3bHkgYWRkZWQgdGFibGVzIGluIHRoZSBsaXN0IGZy b20gY2xpZW50Ci0gICAgICAgICAgICAjIHNvIHdlIHdpbGwgZmlsdGVyIG5ldyB0YWJsZXMgaGVy ZQotICAgICAgICAgICAgaWYgJ2NvbGxfaW5oZXJpdHMnIGluIGRhdGE6Ci0gICAgICAgICAgICAg ICAgcF9sZW4gPSBsZW4ob2xkX2RhdGFbJ2NvbGxfaW5oZXJpdHMnXSkKLSAgICAgICAgICAgICAg ICBjX2xlbiA9IGxlbihkYXRhWydjb2xsX2luaGVyaXRzJ10pCi0gICAgICAgICAgICAgICAgIyBJ ZiB0YWJsZShzKSBhZGRlZAotICAgICAgICAgICAgICAgIGlmIGNfbGVuID4gcF9sZW46Ci0gICAg ICAgICAgICAgICAgICAgIGRhdGFbJ2NvbGxfaW5oZXJpdHNfYWRkZWQnXSA9IGxpc3QoCi0gICAg ICAgICAgICAgICAgICAgICAgICBzZXQoZGF0YVsnY29sbF9pbmhlcml0cyddKSAtIHNldChvbGRf ZGF0YVsnY29sbF9pbmhlcml0cyddKQotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAg ICAgICAgIyBJZiB0YWJsZShzKXJlbW92ZWQKLSAgICAgICAgICAgICAgICBlbGlmIGNfbGVuIDwg cF9sZW46Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFbJ2NvbGxfaW5oZXJpdHNfcmVtb3ZlZCdd ID0gbGlzdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldChvbGRfZGF0YVsnY29sbF9pbmhl cml0cyddKSAtIHNldChkYXRhWydjb2xsX2luaGVyaXRzJ10pCi0gICAgICAgICAgICAgICAgICAg ICkKLSAgICAgICAgICAgICAgICAjIFNhZmUgc2lkZSB2ZXJpZmljYXRpb24sSW4gY2FzZSBpdCBo YXBwZW5zLi4KLSAgICAgICAgICAgICAgICAjIElmIHVzZXIgcmVtb3ZlcyBhbmQgYWRkcyBzYW1l IG51bWJlciBvZiB0YWJsZQotICAgICAgICAgICAgICAgICMgZWcgcmVtb3ZlZCBvbmUgdGFibGUg YW5kIGFkZGVkIG9uZSBuZXcgdGFibGUKLSAgICAgICAgICAgICAgICBlbGlmIGNfbGVuID09IHBf bGVuOgotICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2xsX2luaGVyaXRzX2FkZGVkJ10gPSBs aXN0KAotICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkg LSBzZXQob2xkX2RhdGFbJ2NvbGxfaW5oZXJpdHMnXSkKLSAgICAgICAgICAgICAgICAgICAgKQot ICAgICAgICAgICAgICAgICAgICBkYXRhWydjb2xsX2luaGVyaXRzX3JlbW92ZWQnXSA9IGxpc3Qo Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXQob2xkX2RhdGFbJ2NvbGxfaW5oZXJpdHMnXSkg LSBzZXQoZGF0YVsnY29sbF9pbmhlcml0cyddKQotICAgICAgICAgICAgICAgICAgICApCi0KLSAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAndXBkYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv X2RhdGE9b2xkX2RhdGEsIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCi0gICAgICAgICAgICAj IFJlbW92ZXMgdHJhaW5pbmcgbmV3IGxpbmVzCi0gICAgICAgICAgICBTUUwgPSBTUUwuc3RyaXAo J1xuJykgKyAnXG5cbicKLQotICAgICAgICAgICAgIyBQYXJzZS9Gb3JtYXQgY29sdW1ucyAmIGNy ZWF0ZSBzcWwKLSAgICAgICAgICAgIGlmICdjb2x1bW5zJyBpbiBkYXRhOgotICAgICAgICAgICAg ICAgICMgUGFyc2UgdGhlIGRhdGEgY29taW5nIGZyb20gY2xpZW50Ci0gICAgICAgICAgICAgICAg ZGF0YSA9IHNlbGYuX3BhcnNlX2Zvcm1hdF9jb2x1bW5zKGRhdGEsIG1vZGU9J2VkaXQnKQotCi0g ICAgICAgICAgICAgICAgY29sdW1ucyA9IGRhdGFbJ2NvbHVtbnMnXQotICAgICAgICAgICAgICAg IGNvbHVtbl9zcWwgPSAnXG4nCi0KLSAgICAgICAgICAgICAgICAjIElmIGNvbHVtbihzKSBpcy9h cmUgZGVsZXRlZAotICAgICAgICAgICAgICAgIGlmICdkZWxldGVkJyBpbiBjb2x1bW5zOgotICAg ICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb2x1bW5zWydkZWxldGVkJ106Ci0gICAgICAgICAg ICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCi0gICAgICAgICAgICAg ICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCi0gICAgICAgICAgICAgICAgICAg ICAgICAjIFNxbCBmb3IgZHJvcCBjb2x1bW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICdp bmhlcml0ZWRmcm9tJyBub3QgaW4gYzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1 bW5fc3FsICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgW3NlbGYuY29sdW1uX3RlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uKS5z dHJpcCgnXG4nKSArICdcblxuJwotCi0gICAgICAgICAgICAgICAgIyBJZiBjb2x1bW4ocykgaXMv YXJlIGNoYW5nZWQKLSAgICAgICAgICAgICAgICAjIEhlcmUgd2Ugd2lsbCBiZSBuZWVkaW5nIHBy ZXZpb3VzIHByb3BlcnRpZXMgb2YgY29sdW1uCi0gICAgICAgICAgICAgICAgIyBzbyB0aGF0IHdl IGNhbiBjb21wYXJlICYgdXBkYXRlIGl0Ci0gICAgICAgICAgICAgICAgaWYgJ2NoYW5nZWQnIGlu IGNvbHVtbnM6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbHVtbnNbJ2NoYW5nZWQn XToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10K LSAgICAgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KLSAgICAg ICAgICAgICAgICAgICAgICAgIGlmICdhdHRhY2wnIGluIGM6Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgY1snYXR0YWNsJ10gPSBwYXJzZV9wcml2X3RvX2RiKGNbJ2F0dGFjbCddLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmNvbHVtbl9hY2wpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNfc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlkPWNbJ2F0dG51bSdd LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2hvd19zeXNfb2JqZWN0cz1zZWxmLmJsdWVwcmludC5zaG93X3N5c3RlbV9vYmplY3RzCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChwcm9wZXJ0aWVzX3NxbCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBz dGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YSA9 IHJlc1sncm93cyddWzBdCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhWydjbHR5 cGUnXSwgb2xkX2RhdGFbJ2hhc1NxckJyYWNrZXQnXSA9IHNlbGYuX2NsdHlwZV9mb3JtYXR0ZXIo b2xkX2RhdGFbJ2NsdHlwZSddKQotICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSBz ZWxmLmNvbnZlcnRfbGVuZ3RoX3ByZWNpc2lvbl90b19zdHJpbmcob2xkX2RhdGEpCi0KLSAgICAg ICAgICAgICAgICAgICAgICAgIGZ1bGx0eXBlID0gc2VsZi5nZXRfZnVsbF90eXBlKAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhWyd0eXBuc3BuYW1lJ10sIG9sZF9kYXRhWyd0 eXBuYW1lJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ2lzZHVwJ10s IG9sZF9kYXRhWydhdHRuZGltcyddLCBvbGRfZGF0YVsnYXR0dHlwbW9kJ10KLSAgICAgICAgICAg ICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGxl bmd0aCAmIHByZWNpc2lvbiBib3RoCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaE9iaiA9 IHJlLnNlYXJjaChyJyhcZCspLChcZCspJywgZnVsbHR5cGUpCi0gICAgICAgICAgICAgICAgICAg ICAgICBpZiBtYXRjaE9iajoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsn YXR0bGVuJ10gPSBpbnQobWF0Y2hPYmouZ3JvdXAoMSkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2xkX2RhdGFbJ2F0dHByZWNpc2lvbiddID0gaW50KG1hdGNoT2JqLmdyb3VwKDIpKQot ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIElmIHdlIGhhdmUgbGVuZ3RoIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBt YXRjaE9iaiA9IHJlLnNlYXJjaChyJyhcZCspJywgZnVsbHR5cGUpCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgbWF0Y2hPYmo6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9sZF9kYXRhWydhdHRsZW4nXSA9IGludChtYXRjaE9iai5ncm91cCgxKSkKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ2F0dHByZWNpc2lvbiddID0gTm9uZQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9sZF9kYXRhWydhdHRsZW4nXSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb2xkX2RhdGFbJ2F0dHByZWNpc2lvbiddID0gTm9uZQotCi0gICAgICAgICAgICAg ICAgICAgICAgICBvbGRfZGF0YVsnY2x0eXBlJ10gPSBEYXRhVHlwZVJlYWRlci5wYXJzZV90eXBl X25hbWUob2xkX2RhdGFbJ2NsdHlwZSddKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNx bCBmb3IgYWx0ZXIgY29sdW1uCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAnaW5oZXJpdGVk ZnJvbScgbm90IGluIGM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uX3NxbCAr PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBvX2RhdGE9b2xkX2RhdGEsIGNvbm49c2Vs Zi5jb25uKS5zdHJpcCgnXG4nKSArICdcblxuJwotCi0gICAgICAgICAgICAgICAgIyBJZiBjb2x1 bW4ocykgaXMvYXJlIGFkZGVkCi0gICAgICAgICAgICAgICAgaWYgJ2FkZGVkJyBpbiBjb2x1bW5z OgotICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb2x1bW5zWydhZGRlZCddOgotICAgICAg ICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQotICAgICAgICAg ICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQotICAgICAgICAgICAgICAg ICAgICAgICAgIyBTcWwgZm9yIGNyZWF0ZSBjb2x1bW4KLSAgICAgICAgICAgICAgICAgICAgICAg IGlmICdhdHRhY2wnIGluIGM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY1snYXR0YWNs J10gPSBwYXJzZV9wcml2X3RvX2RiKGNbJ2F0dGFjbCddLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbHVtbl9hY2wpCi0K LSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzZWxmLmNvbnZlcnRfbGVuZ3RoX3ByZWNpc2lv bl90b19zdHJpbmcoYykKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRlZGZy b20nIG5vdCBpbiBjOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbl9zcWwgKz0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicp ICsgJ1xuXG4nCi0KLSAgICAgICAgICAgICAgICAjIENvbWJpbmUgYWxsIHRoZSBTUUwgdG9nZXRo ZXIKLSAgICAgICAgICAgICAgICBTUUwgKz0gY29sdW1uX3NxbC5zdHJpcCgnXG4nKQotCi0gICAg ICAgICAgICAjIENoZWNrIGlmIGluZGV4IGNvbnN0cmFpbnRzIGFyZSBhZGRlZC9jaGFuZ2VkL2Rl bGV0ZWQKLSAgICAgICAgICAgIGluZGV4X2NvbnN0cmFpbnRfc3FsID0gc2VsZi5nZXRfaW5kZXhf Y29uc3RyYWludF9zcWwoZGlkLCB0aWQsIGRhdGEpCi0gICAgICAgICAgICAjIElmIHdlIGhhdmUg aW5kZXggY29uc3RyYWludCBzcWwgdGhlbiBhZCBpdCBpbiBtYWluIHNxbAotICAgICAgICAgICAg aWYgaW5kZXhfY29uc3RyYWludF9zcWwgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgU1FM ICs9ICdcbicgKyBpbmRleF9jb25zdHJhaW50X3NxbAotCi0gICAgICAgICAgICAjIENoZWNrIGlm IGZvcmVpZ24ga2V5KHMpIGlzL2FyZSBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQKLSAgICAgICAgICAg IGZvcmVpZ25fa2V5X3NxbCA9IHNlbGYuZ2V0X2ZvcmVpZ25fa2V5X3NxbCh0aWQsIGRhdGEpCi0g ICAgICAgICAgICAjIElmIHdlIGhhdmUgZm9yZWlnbiBrZXkgc3FsIHRoZW4gYWQgaXQgaW4gbWFp biBzcWwKLSAgICAgICAgICAgIGlmIGZvcmVpZ25fa2V5X3NxbCBpcyBub3QgTm9uZToKLSAgICAg ICAgICAgICAgICBTUUwgKz0gJ1xuJyArIGZvcmVpZ25fa2V5X3NxbAotCi0gICAgICAgICAgICAj IENoZWNrIGlmIGNoZWNrIGNvbnN0cmFpbnQocykgaXMvYXJlIGFkZGVkL2NoYW5nZWQvZGVsZXRl ZAotICAgICAgICAgICAgY2hlY2tfY29uc3RyYWludF9zcWwgPSBzZWxmLmdldF9jaGVja19jb25z dHJhaW50X3NxbCh0aWQsIGRhdGEpCi0gICAgICAgICAgICAjIElmIHdlIGhhdmUgY2hlY2sgY29u c3RyYWludCBzcWwgdGhlbiBhZCBpdCBpbiBtYWluIHNxbAotICAgICAgICAgICAgaWYgY2hlY2tf Y29uc3RyYWludF9zcWwgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgU1FMICs9ICdcbicg KyBjaGVja19jb25zdHJhaW50X3NxbAotCi0gICAgICAgICAgICAjIENoZWNrIGlmIGV4Y2x1c2lv biBjb25zdHJhaW50KHMpIGlzL2FyZSBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQKLSAgICAgICAgICAg IGV4Y2x1c2lvbl9jb25zdHJhaW50X3NxbCA9IHNlbGYuZ2V0X2V4Y2x1c2lvbl9jb25zdHJhaW50 X3NxbChkaWQsIHRpZCwgZGF0YSkKLSAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBjaGVjayBjb25z dHJhaW50IHNxbCB0aGVuIGFkIGl0IGluIG1haW4gc3FsCi0gICAgICAgICAgICBpZiBleGNsdXNp b25fY29uc3RyYWludF9zcWwgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgU1FMICs9ICdc bicgKyBleGNsdXNpb25fY29uc3RyYWludF9zcWwKLQotICAgICAgICBlbHNlOgotICAgICAgICAg ICAgcmVxdWlyZWRfYXJncyA9IFsKLSAgICAgICAgICAgICAgICAnbmFtZScKLSAgICAgICAgICAg IF0KLQotICAgICAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgotICAgICAgICAgICAg ICAgIGlmIGFyZyBub3QgaW4gZGF0YToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldHRl eHQoJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZScpCi0KLSAgICAgICAgICAgICMgdmFsaWRhdGUg Y29uc3RyYWludCBkYXRhLgotICAgICAgICAgICAgZm9yIGtleSBpbiBbJ3ByaW1hcnlfa2V5Jywg J3VuaXF1ZV9jb25zdHJhaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdmb3JlaWduX2tl eScsICdjaGVja19jb25zdHJhaW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdleGNsdWRl X2NvbnN0cmFpbnQnXToKLSAgICAgICAgICAgICAgICBpZiBrZXkgaW4gZGF0YSBhbmQgbGVuKGRh dGFba2V5XSkgPiAwOgotICAgICAgICAgICAgICAgICAgICBmb3IgY29uc3RyYWludCBpbiBkYXRh W2tleV06Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9jb25z dHJhaW5zKGtleSwgY29uc3RyYWludCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGdldHRleHQoJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZSBmb3IgezB9Jy5mb3JtYXQoa2V5 KSkKLQotICAgICAgICAgICAgIyBXZSB3aWxsIGNvbnZlcnQgcHJpdmlsZWdlcyBjb21pbmcgZnJv bSBjbGllbnQgcmVxdWlyZWQKLSAgICAgICAgICAgICMgaW4gc2VydmVyIHNpZGUgZm9ybWF0Ci0g ICAgICAgICAgICBpZiAncmVsYWNsJyBpbiBkYXRhOgotICAgICAgICAgICAgICAgIGRhdGFbJ3Jl bGFjbCddID0gcGFyc2VfcHJpdl90b19kYihkYXRhWydyZWxhY2wnXSwgc2VsZi5hY2wpCi0KLSAg ICAgICAgICAgICMgUGFyc2UgJiBmb3JtYXQgY29sdW1ucwotICAgICAgICAgICAgZGF0YSA9IHNl bGYuX3BhcnNlX2Zvcm1hdF9jb2x1bW5zKGRhdGEpCi0gICAgICAgICAgICBkYXRhID0gc2VsZi5j aGVja19hbmRfY29udmVydF9uYW1lX3RvX3N0cmluZyhkYXRhKQotCi0gICAgICAgICAgICBpZiAn Zm9yZWlnbl9rZXknIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgZm9yIGMgaW4gZGF0YVsnZm9y ZWlnbl9rZXknXToKLSAgICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPWNbJ2NvbHVtbnMn XVswXVsncmVmZXJlbmNlcyddKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICAgICAgICAgICAgICBjWydyZW1vdGVfc2No ZW1hJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3NjaGVtYSddCi0gICAgICAgICAgICAgICAgICAgIGNb J3JlbW90ZV90YWJsZSddID0gcnNldFsncm93cyddWzBdWyd0YWJsZSddCi0KLSAgICAgICAgICAg ICMgSWYgdGhlIHJlcXVlc3QgZm9yIG5ldyBvYmplY3Qgd2hpY2ggZG8gbm90IGhhdmUgZGlkCi0g ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ2NyZWF0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKyAgICAgICAgU1FMLCBuYW1lID0gc2VsZi5nZXRf c3FsKGRpZCwgc2NpZCwgdGlkLCBkYXRhLCByZXMpCiAgICAgICAgIFNRTCA9IHJlLnN1YignXG57 Mix9JywgJ1xuXG4nLCBTUUwpCiAgICAgICAgIFNRTCA9IFNRTC5zdHJpcCgnXG4nKQorICAgICAg ICBpZiBTUUwgPT0gJyc6CisgICAgICAgICAgICBTUUwgPSAiLS1tb2RpZmllZCBTUUwiCisgICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPVNRTCwKKyAg ICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQogCi0gICAgICAgIHJldHVybiBTUUwsIGRh dGFbJ25hbWUnXSBpZiAnbmFtZScgaW4gZGF0YSBlbHNlIG9sZF9kYXRhWyduYW1lJ10KLQotICAg IEBzdGF0aWNtZXRob2QKLSAgICBkZWYgdmFsaWRhdGVfY29uc3RyYWlucyhrZXksIGRhdGEpOgot Ci0gICAgICAgIGlmIGtleSA9PSAncHJpbWFyeV9rZXknIG9yIGtleSA9PSAndW5pcXVlX2NvbnN0 cmFpbnQnOgotICAgICAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGRhdGEgYW5kIGxlbihkYXRhWydj b2x1bW5zJ10pID4gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAg ZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZWxpZiBrZXkgPT0g J2ZvcmVpZ25fa2V5JzoKLSAgICAgICAgICAgIGlmICdvaWQnIG5vdCBpbiBkYXRhOgotICAgICAg ICAgICAgICAgIGZvciBhcmcgaW4gWydjb2x1bW5zJ106Ci0gICAgICAgICAgICAgICAgICAgIGlm IGFyZyBub3QgaW4gZGF0YToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQot ICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YVthcmddLCBsaXN0KSBhbmQg bGVuKGRhdGFbYXJnXSkgPCAxOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl Ci0KLSAgICAgICAgICAgICAgICBpZiAnYXV0b2luZGV4JyBpbiBkYXRhIGFuZCBkYXRhWydhdXRv aW5kZXgnXSBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgKCdjb3ZlcmluZ2luZGV4JyBu b3QgaW4gZGF0YSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhWydjb3ZlcmluZ2luZGV4J10gPT0gJycpOgotICAgICAgICAgICAgICAgICAg ICByZXR1cm4gRmFsc2UKLQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBlbGlm IGtleSA9PSAnY2hlY2tfY29uc3RyYWludCc6Ci0gICAgICAgICAgICBmb3IgYXJnIGluIFsnY29u c3JjJ106Ci0gICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhIG9yIGRhdGFbYXJnXSA9 PSAnJzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICByZXR1 cm4gVHJ1ZQotCi0gICAgICAgIGVsaWYga2V5ID09ICdleGNsdWRlX2NvbnN0cmFpbnQnOgotICAg ICAgICAgICAgcGFzcwotCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBAY2hlY2tfcHJlY29u ZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIGRl cGVuZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKICAgICAgICAgIiIiCiAg ICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCBy ZXNwb25zZQpAQCAtMjQ2MCw0MyArMTE1NCw5IEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9k ZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSUQKICAgICAgICAgICAgIHRpZDogVGFibGUgSUQKICAgICAgICAgIiIiCi0gICAg ICAgICMgU3BlY2lmaWMgY29uZGl0aW9uIGZvciBjb2x1bW4gd2hpY2ggd2UgbmVlZCB0byBhcHBl bmQKLSAgICAgICAgd2hlcmUgPSAiV0hFUkUgZGVwLnJlZm9iamlkPXswfTo6T0lEIi5mb3JtYXQo dGlkKQotCi0gICAgICAgIGRlcGVuZGVudHNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW50cygK LSAgICAgICAgICAgIHNlbGYuY29ubiwgdGlkCi0gICAgICAgICkKLQotICAgICAgICAjIFNwZWNp ZmljIHNxbCB0byBydW4gYWdhaW50IGNvbHVtbiB0byBmZXRjaCBkZXBlbmRlbnRzCi0gICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmQuc3FsJ10pLCB3aGVy ZT13aGVyZSkKKyAgICAgICAgcmV0dXJuIEJhc2VUYWJsZVZpZXcuZ2V0X3RhYmxlX2RlcGVuZGVu dHMoc2VsZiwgdGlkKQogCi0gICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCi0gICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICBmb3Igcm93IGluIHJl c1sncm93cyddOgotICAgICAgICAgICAgcmVmX25hbWUgPSByb3dbJ3JlZm5hbWUnXQotICAgICAg ICAgICAgaWYgcmVmX25hbWUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0g ICAgICAgICAgICBkZXBfdHlwZSA9ICcnCi0gICAgICAgICAgICBkZXBfc3RyID0gcm93WydkZXB0 eXBlJ10KLSAgICAgICAgICAgIGlmIGRlcF9zdHIgPT0gJ2EnOgotICAgICAgICAgICAgICAgIGRl cF90eXBlID0gJ2F1dG8nCi0gICAgICAgICAgICBlbGlmIGRlcF9zdHIgPT0gJ24nOgotICAgICAg ICAgICAgICAgIGRlcF90eXBlID0gJ25vcm1hbCcKLSAgICAgICAgICAgIGVsaWYgZGVwX3N0ciA9 PSAnaSc6Ci0gICAgICAgICAgICAgICAgZGVwX3R5cGUgPSAnaW50ZXJuYWwnCi0KLSAgICAgICAg ICAgIGRlcGVuZGVudHNfcmVzdWx0LmFwcGVuZCh7J3R5cGUnOiAnc2VxdWVuY2UnLCAnbmFtZSc6 IHJlZl9uYW1lLCAnZmllbGQnOiBkZXBfdHlwZX0pCi0KLSAgICAgICAgcmV0dXJuIGFqYXhfcmVz cG9uc2UoCi0gICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbnRzX3Jlc3VsdCwKLSAgICAgICAg ICAgIHN0YXR1cz0yMDAKLSAgICAgICAgKQotCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBkZXBlbmRlbmNpZXMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKICAgICAgICAgIiIiCiAgICAgICAgIFRo aXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNl CkBAIC0yNTA4LDE4ICsxMTY4LDEwIEBAIGNsYXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcs IERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAgICAgICAgICBkaWQ6IERhdGFi YXNlIElECiAgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKICAgICAgICAgICAgIHRpZDogVGFi bGUgSUQKLQogICAgICAgICAiIiIKLSAgICAgICAgZGVwZW5kZW5jaWVzX3Jlc3VsdCA9IHNlbGYu Z2V0X2RlcGVuZGVuY2llcygKLSAgICAgICAgICAgIHNlbGYuY29ubiwgdGlkCi0gICAgICAgICkK KyAgICAgICAgcmV0dXJuIEJhc2VUYWJsZVZpZXcuZ2V0X3RhYmxlX2RlcGVuZGVuY2llcyhzZWxm LCB0aWQpCiAKLSAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCi0gICAgICAgICAgICByZXNw b25zZT1kZXBlbmRlbmNpZXNfcmVzdWx0LAotICAgICAgICAgICAgc3RhdHVzPTIwMAotICAgICAg ICApCi0KLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tf cHJlY29uZGl0aW9uCiAgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQp OgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZXMgcmV2ZXJz ZSBlbmdpbmVlcmVkIHNxbCBmb3IKQEAgLTI1MzQsMTIgKzExODYsNyBAQCBjbGFzcyBUYWJsZVZp ZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAg ICAgICAiIiIKICAgICAgICAgbWFpbl9zcWwgPSBbXQogCi0gICAgICAgICIiIgotICAgICAgICAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgICAgICMgMSkgUmV2ZXJz ZSBlbmdpbmVlcmVkIHNxbCBmb3IgVEFCTEUKLSAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotICAgICAgICAiIiIKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lk KQpAQCAtMjU1MiwyNTAgKzExOTksMTAgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmll dywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKIAogICAgICAgICBkYXRhID0gcmVz Wydyb3dzJ11bMF0KIAotICAgICAgICAjIFRhYmxlICYgU2NoZW1hIGRlY2xhcmF0aW9uIHNvIHRo YXQgd2UgY2FuIHVzZSB0aGVtIGluIGNoaWxkIG5vZGVzCi0gICAgICAgIHNjaGVtYSA9IGRhdGFb J3NjaGVtYSddCi0gICAgICAgIHRhYmxlID0gZGF0YVsnbmFtZSddCi0KLSAgICAgICAgZGF0YSA9 IHNlbGYuX2Zvcm1hdHRlcihkaWQsIHNjaWQsIHRpZCwgZGF0YSkKLQotICAgICAgICAjIE5vdyB3 ZSBoYXZlIGFsbCBsaXMgb2YgY29sdW1ucyB3aGljaCB3ZSBuZWVkCi0gICAgICAgICMgdG8gaW5j bHVkZSBpbiBvdXIgY3JlYXRlIGRlZmluaXRpb24sIExldCdzIGZvcm1hdCB0aGVtCi0gICAgICAg IGlmICdjb2x1bW5zJyBpbiBkYXRhOgotICAgICAgICAgICAgZm9yIGMgaW4gZGF0YVsnY29sdW1u cyddOgotICAgICAgICAgICAgICAgIGlmICdhdHRhY2wnIGluIGM6Ci0gICAgICAgICAgICAgICAg ICAgIGNbJ2F0dGFjbCddID0gcGFyc2VfcHJpdl90b19kYihjWydhdHRhY2wnXSwgc2VsZi5jb2x1 bW5fYWNsKQotCi0gICAgICAgICAgICAgICAgIyBjaGVjayB0eXBlIGZvciAnW10nIGluIGl0Ci0g ICAgICAgICAgICAgICAgaWYgJ2NsdHlwZScgaW4gYzoKLSAgICAgICAgICAgICAgICAgICAgY1sn Y2x0eXBlJ10sIGNbJ2hhc1NxckJyYWNrZXQnXSA9IHNlbGYuX2NsdHlwZV9mb3JtYXR0ZXIoY1sn Y2x0eXBlJ10pCi0KLSAgICAgICAgc3FsX2hlYWRlciA9IHUiLS0gVGFibGU6IHswfVxuXG4tLSAi LmZvcm1hdChzZWxmLnF0SWRlbnQoc2VsZi5jb25uLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ3NjaGVtYSddLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGFbJ25hbWUnXSkpCi0KLSAgICAgICAgc3FsX2hlYWRlciArPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQotCi0g ICAgICAgIHNxbF9oZWFkZXIgPSBzcWxfaGVhZGVyLnN0cmlwKCdcbicpCi0gICAgICAgIHNxbF9o ZWFkZXIgKz0gJ1xuJwotCi0gICAgICAgICMgQWRkIGludG8gbWFpbiBzcWwKLSAgICAgICAgbWFp bl9zcWwuYXBwZW5kKHNxbF9oZWFkZXIpCi0KLSAgICAgICAgIyBQYXJzZSBwcml2aWxlZ2UgZGF0 YQotICAgICAgICBpZiAncmVsYWNsJyBpbiBkYXRhOgotICAgICAgICAgICAgZGF0YVsncmVsYWNs J10gPSBwYXJzZV9wcml2X3RvX2RiKGRhdGFbJ3JlbGFjbCddLCBzZWxmLmFjbCkKLQotICAgICAg ICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdoaWNoIGRvIG5vdCBoYXZlIGRpZAot ICAgICAgICB0YWJsZV9zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Y3JlYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 ZGF0YSwgY29ubj1zZWxmLmNvbm4sIGlzX3NxbD1UcnVlKQotCi0gICAgICAgICMgQWRkIGludG8g bWFpbiBzcWwKLSAgICAgICAgdGFibGVfc3FsID0gcmUuc3ViKCdcbnsyLH0nLCAnXG5cbicsIHRh YmxlX3NxbCkKLSAgICAgICAgbWFpbl9zcWwuYXBwZW5kKHRhYmxlX3NxbC5zdHJpcCgnXG4nKSkK LQotICAgICAgICAiIiIKLSAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLSAgICAgICAgIyAyKSBSZXZlcnNlIGVuZ2luZWVyZWQgc3FsIGZvciBJTkRFWAotICAg ICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICAgICAiIiIK LQotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVt cGxhdGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9k ZXMuc3FsJ10pLCB0aWQ9dGlkKQotICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhl Y3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICBmb3Ig cm93IGluIHJzZXRbJ3Jvd3MnXToKLQotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBpZHg9cm93WydvaWQnXSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0 bGFzdHN5c29pZCkKLQotICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAgICAgICAg IGRhdGEgPSBkaWN0KHJlc1sncm93cyddWzBdKQotICAgICAgICAgICAgIyBBZGRpbmcgcGFyZW50 IGludG8gZGF0YSBkaWN0LCB3aWxsIGJlIHVzaW5nIGl0IHdoaWxlIGNyZWF0aW5nIHNxbAotICAg ICAgICAgICAgZGF0YVsnc2NoZW1hJ10gPSBzY2hlbWEKLSAgICAgICAgICAgIGRhdGFbJ3RhYmxl J10gPSB0YWJsZQotICAgICAgICAgICAgIyBXZSBhbHNvIG5lZWQgdG8gZmVjdGggY29sdW1ucyBv ZiBpbmRleAotICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LmluZGV4X3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdjb2x1bW5fZGV0YWlscy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWR4PXJvd1snb2lkJ10pCi0gICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y c2V0KQotCi0gICAgICAgICAgICAjICdhdHRkZWYnIGNvbWVzIHdpdGggcXVvdGVzIGZyb20gcXVl cnkgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCi0gICAgICAgICAgICAjICdvcHRpb25zJyB3ZSBu ZWVkIHRydWUvZmFsc2UgdG8gcmVuZGVyIHN3aXRjaCBBU0MoZmFsc2UpL0RFU0ModHJ1ZSkKLSAg ICAgICAgICAgIGNvbHVtbnMgPSBbXQotICAgICAgICAgICAgY29scyA9IFtdCi0gICAgICAgICAg ICBmb3IgY29sX3JvdyBpbiByc2V0Wydyb3dzJ106Ci0gICAgICAgICAgICAgICAgIyBXZSBuZWVk IGFsbCBkYXRhIGFzIGNvbGxlY3Rpb24gZm9yIENvbHVtbnNNb2RlbAotICAgICAgICAgICAgICAg IGNvbHNfZGF0YSA9IHsKLSAgICAgICAgICAgICAgICAgICAgJ2NvbG5hbWUnOiBjb2xfcm93Wydh dHRkZWYnXS5zdHJpcCgnIicpLAotICAgICAgICAgICAgICAgICAgICAnY29sbHNwY25hbWUnOiBj b2xfcm93Wydjb2xsbnNwbmFtZSddLAotICAgICAgICAgICAgICAgICAgICAnb3BfY2xhc3MnOiBj b2xfcm93WydvcGNuYW1lJ10sCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm IGNvbF9yb3dbJ29wdGlvbnMnXVswXSA9PSAnREVTQyc6Ci0gICAgICAgICAgICAgICAgICAgIGNv bHNfZGF0YVsnc29ydF9vcmRlciddID0gVHJ1ZQotICAgICAgICAgICAgICAgIGNvbHVtbnMuYXBw ZW5kKGNvbHNfZGF0YSkKLQotICAgICAgICAgICAgICAgICMgV2UgbmVlZCBzYW1lIGRhdGEgYXMg c3RyaW5nIHRvIGRpc3BsYXkgaW4gcHJvcGVydGllcyB3aW5kb3cKLSAgICAgICAgICAgICAgICAj IElmIG11bHRpcGxlIGNvbHVtbiB0aGVuIHNlcGFyYXRlIGl0IGJ5IGNvbG9uCi0gICAgICAgICAg ICAgICAgY29sc19zdHIgPSBjb2xfcm93WydhdHRkZWYnXQotICAgICAgICAgICAgICAgIGlmIGNv bF9yb3dbJ2NvbGxuc3BuYW1lJ106Ci0gICAgICAgICAgICAgICAgICAgIGNvbHNfc3RyICs9ICcg Q09MTEFURSAnICsgY29sX3Jvd1snY29sbG5zcG5hbWUnXQotICAgICAgICAgICAgICAgIGlmIGNv bF9yb3dbJ29wY25hbWUnXToKLSAgICAgICAgICAgICAgICAgICAgY29sc19zdHIgKz0gJyAnICsg Y29sX3Jvd1snb3BjbmFtZSddCi0gICAgICAgICAgICAgICAgaWYgY29sX3Jvd1snb3B0aW9ucydd WzBdID09ICdERVNDJzoKLSAgICAgICAgICAgICAgICAgICAgY29sc19zdHIgKz0gJyBERVNDJwot ICAgICAgICAgICAgICAgIGNvbHMuYXBwZW5kKGNvbHNfc3RyKQotCi0gICAgICAgICAgICAjIFB1 c2ggYXMgY29sbGVjdGlvbgotICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddID0gY29sdW1ucwot ICAgICAgICAgICAgIyBQdXNoIGFzIHN0cmluZwotICAgICAgICAgICAgZGF0YVsnY29scyddID0g JywgJy5qb2luKGNvbHMpCi0KLSAgICAgICAgICAgIHNxbF9oZWFkZXIgPSB1IlxuLS0gSW5kZXg6 IHswfVxuXG4tLSAiLmZvcm1hdChkYXRhWyduYW1lJ10pCi0KLSAgICAgICAgICAgIHNxbF9oZWFk ZXIgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRlX3BhdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rl bGV0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQotCi0gICAgICAgICAgICBpbmRleF9zcWwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVtcGxhdGVfcGF0aCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25u PXNlbGYuY29ubikKLSAgICAgICAgICAgIGluZGV4X3NxbCArPSAiXG4iCi0gICAgICAgICAgICBp bmRleF9zcWwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3RlbXBsYXRl X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnYWx0ZXIuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQotCi0gICAgICAgICAgICAjIEFkZCBpbnRvIG1h aW4gc3FsCi0gICAgICAgICAgICBpbmRleF9zcWwgPSByZS5zdWIoJ1xuezIsfScsICdcblxuJywg aW5kZXhfc3FsKQotICAgICAgICAgICAgbWFpbl9zcWwuYXBwZW5kKHNxbF9oZWFkZXIgKyAnXG5c bicgKyBpbmRleF9zcWwuc3RyaXAoJ1xuJykpCi0KLSAgICAgICAgIiIiCi0gICAgICAgICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAgICAgIyAzKSBSZXZlcnNl IGVuZ2luZWVyZWQgc3FsIGZvciBUUklHR0VSUwotICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgICAgICIiIgotICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwnXSksIHRpZD10aWQpCi0g ICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAg ICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yc2V0KQotCi0gICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgot ICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSAnJwotCi0gICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgdHJpZD1yb3dbJ29pZCdd LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5k YXRsYXN0c3lzb2lkKQotCi0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlX2RpY3QoU1FMKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAg ICAgZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0pCi0gICAgICAgICAgICAjIEFkZGluZyBwYXJl bnQgaW50byBkYXRhIGRpY3QsIHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCi0g ICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNjaGVtYQotICAgICAgICAgICAgZGF0YVsndGFi bGUnXSA9IHRhYmxlCi0KLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLmdldF90cmlnZ2VyX2Z1bmN0 aW9uX3NjaGVtYShkYXRhKQotCi0gICAgICAgICAgICBpZiBsZW4oZGF0YVsnY3VzdG9tX3RnYXJn cyddKSA+IDE6Ci0gICAgICAgICAgICAgICAgIyBXZSBrbm93IHRoYXQgdHJpZ2dlciBoYXMgbW9y ZSB0aGFuIDEgYXJndW1lbnQsIGxldCdzIGpvaW4gdGhlbQotICAgICAgICAgICAgICAgIGRhdGFb J3RnYXJncyddID0gc2VsZi5fZm9ybWF0X2FyZ3MoZGF0YVsnY3VzdG9tX3RnYXJncyddKQotCi0g ICAgICAgICAgICBpZiBsZW4oZGF0YVsndGdhdHRyJ10pID4gMToKLSAgICAgICAgICAgICAgICBj b2x1bW5zID0gJywgJy5qb2luKGRhdGFbJ3RnYXR0ciddLnNwbGl0KCcgJykpCi0KLSAgICAgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dlcl90ZW1w bGF0ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2dldF9jb2x1bW5zLnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGlkPXRpZCwgY2xpc3Q9Y29sdW1ucykKLQotICAgICAgICAgICAgICAgIHN0YXR1cywg cnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQotICAgICAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cnNldCkKLSAgICAgICAgICAgICAgICAjICd0Z2F0dHInIGNvbnRhaW5z IGxpc3Qgb2YgY29sdW1ucyBmcm9tIHRhYmxlIHVzZWQgaW4gdHJpZ2dlcgotICAgICAgICAgICAg ICAgIGNvbHVtbnMgPSBbXQotCi0gICAgICAgICAgICAgICAgZm9yIGNvbF9yb3cgaW4gcnNldFsn cm93cyddOgotICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7J2NvbHVtbic6IGNv bF9yb3dbJ25hbWUnXX0pCi0KLSAgICAgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1 bW5zCi0KLSAgICAgICAgICAgIGRhdGEgPSB0cmlnZ2VyX2RlZmluaXRpb24oZGF0YSkKLQotICAg ICAgICAgICAgc3FsX2hlYWRlciA9IHUiXG4tLSBUcmlnZ2VyOiB7MH1cblxuLS0gIi5mb3JtYXQo ZGF0YVsnbmFtZSddKQotCi0gICAgICAgICAgICBzcWxfaGVhZGVyICs9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2Vs Zi5jb25uKQotCi0gICAgICAgICAgICAjIElmIHRoZSByZXF1ZXN0IGZvciBuZXcgb2JqZWN0IHdo aWNoIGRvIG5vdCBoYXZlIGRpZAotICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25u PXNlbGYuY29ubikKLQotICAgICAgICAgICAgdHJpZ2dlcl9zcWwgPSBzcWxfaGVhZGVyICsgJ1xu XG4nICsgdHJpZ2dlcl9zcWwuc3RyaXAoJ1xuJykKLQotICAgICAgICAgICAgIyBJZiB0cmlnZ2Vy IGlzIGRpc2FibGVkIHRoZW4gYWRkIHNxbCBjb2RlIGZvciB0aGUgc2FtZQotICAgICAgICAgICAg aWYgbm90IGRhdGFbJ2lzX2VuYWJsZV90cmlnZ2VyJ106Ci0gICAgICAgICAgICAgICAgdHJpZ2dl cl9zcWwgKz0gJ1xuXG4nCi0gICAgICAgICAgICAgICAgdHJpZ2dlcl9zcWwgKz0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50cmlnZ2VyX3RlbXBs YXRlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICdlbmFibGVfZGlzYWJsZV90cmlnZ2VyLnNx bCddKSwKLSAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKLQot ICAgICAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAotICAgICAgICAgICAgdHJpZ2dlcl9zcWwg PSByZS5zdWIoJ1xuezIsfScsICdcblxuJywgdHJpZ2dlcl9zcWwpCi0gICAgICAgICAgICBtYWlu X3NxbC5hcHBlbmQodHJpZ2dlcl9zcWwpCi0KLSAgICAgICAgIiIiCi0gICAgICAgICMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAgICAgIyA0KSBSZXZlcnNlIGVuZ2lu ZWVyZWQgc3FsIGZvciBSVUxFUwotICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCi0gICAgICAgICIiIgotCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbigKLSAgICAgICAgICAgIFtzZWxmLnJ1bGVzX3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0 aWVzLnNxbCddKSwgdGlkPXRpZCkKLQotICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4u ZXhlY3V0ZV8yZGFycmF5KFNRTCkKLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKLQotICAgICAgICBm b3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKLSAgICAgICAgICAgIHJ1bGVzX3NxbCA9ICdcbicKLSAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAg ICBbc2VsZi5ydWxlc190ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXQotICAgICAgICAg ICAgKSwgcmlkPXJvd1snb2lkJ10sIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQot Ci0gICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQot ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKLQotICAgICAgICAgICAgcmVzX2RhdGEgPSBw YXJzZV9ydWxlX2RlZmluaXRpb24ocmVzKQotICAgICAgICAgICAgcnVsZXNfc3FsICs9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbigKLSAgICAgICAgICAgICAgICBbc2VsZi5ydWxlc190ZW1wbGF0 ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAgICBkYXRhPXJlc19kYXRhLCBk aXNwbGF5X2NvbW1lbnRzPVRydWUpCi0KLSAgICAgICAgICAgICMgQWRkIGludG8gbWFpbiBzcWwK LSAgICAgICAgICAgIHJ1bGVzX3NxbCA9IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCBydWxlc19z cWwpCi0gICAgICAgICAgICBtYWluX3NxbC5hcHBlbmQocnVsZXNfc3FsKQorICAgICAgICByZXR1 cm4gQmFzZVRhYmxlVmlldy5nZXRfcmV2ZXJzZV9lbmdpbmVlcmVkX3NxbCgKKyAgICAgICAgICAg IHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBtYWluX3NxbCwgZGF0YSkKIAotICAgICAgICBzcWwgPSAn XG4nLmpvaW4obWFpbl9zcWwpCi0KLSAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9u c2U9c3FsLnN0cmlwKCdcbicpKQotCi0gICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNl VGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgogICAgIGRlZiBzZWxlY3Rfc3FsKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CiAgICAgICAgICIiIgogICAgICAgICBTRUxFQ1Qgc2Ny aXB0IHNxbCBmb3IgdGhlIG9iamVjdApAQCAtMjgxMCw3ICsxMjE3LDcgQEAgY2xhc3MgVGFibGVW aWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAg ICAgICAgUmV0dXJuczoKICAgICAgICAgICAgIFNFTEVDVCBTY3JpcHQgc3FsIGZvciB0aGUgb2Jq ZWN0CiAgICAgICAgICIiIgotICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQpCkBAIC0yODM5LDcg KzEyNDYsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRl ciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICApCiAgICAgICAgIHJldHVybiBhamF4X3Jlc3Bv bnNlKHJlc3BvbnNlPXNxbCkKIAotICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBAQmFzZVRh YmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBkZWYgaW5zZXJ0X3NxbChzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCB0aWQpOgogICAgICAgICAiIiIKICAgICAgICAgSU5TRVJUIHNjcmlw dCBzcWwgZm9yIHRoZSBvYmplY3QKQEAgLTI4NTQsNyArMTI2MSw3IEBAIGNsYXNzIFRhYmxlVmll dyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5ncyk6CiAgICAg ICAgIFJldHVybnM6CiAgICAgICAgICAgICBJTlNFUlQgU2NyaXB0IHNxbCBmb3IgdGhlIG9iamVj dAogICAgICAgICAiIiIKLSAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQpAQCAtMjg4Niw3ICsx MjkzLDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIs IFZhY3V1bVNldHRpbmdzKToKIAogICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25z ZT1zcWwpCiAKLSAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQEJhc2VUYWJsZVZpZXcuY2hl Y2tfcHJlY29uZGl0aW9uCiAgICAgZGVmIHVwZGF0ZV9zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgdGlkKToKICAgICAgICAgIiIiCiAgICAgICAgIFVQREFURSBzY3JpcHQgc3FsIGZvciB0 aGUgb2JqZWN0CkBAIC0yOTAxLDcgKzEzMDgsNyBAQCBjbGFzcyBUYWJsZVZpZXcoUEdDaGlsZE5v ZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogICAgICAgICBSZXR1cm5z OgogICAgICAgICAgICAgVVBEQVRFIFNjcmlwdCBzcWwgZm9yIHRoZSBvYmplY3QKICAgICAgICAg IiIiCi0gICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLAorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFi bGVfdGVtcGxhdGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAncHJvcGVydGllcy5zcWwnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9 ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKQEAgLTI5MzUsNyArMTM0Miw3IEBAIGNs YXNzIFRhYmxlVmlldyhQR0NoaWxkTm9kZVZpZXcsIERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0 aW5ncyk6CiAKICAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9c3FsKQogCi0g ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRp dGlvbgogICAgIGRlZiBkZWxldGVfc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6 CiAgICAgICAgICIiIgogICAgICAgICBERUxFVEUgc2NyaXB0IHNxbCBmb3IgdGhlIG9iamVjdApA QCAtMjk1MCw3ICsxMzU3LDcgQEAgY2xhc3MgVGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0 YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdzKToKICAgICAgICAgUmV0dXJuczoKICAgICAgICAg ICAgIERFTEVURSBTY3JpcHQgc3FsIGZvciB0aGUgb2JqZWN0CiAgICAgICAgICIiIgotICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRl X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRp ZXMuc3FsJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1z Y2lkLCB0aWQ9dGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29p ZD1zZWxmLmRhdGxhc3RzeXNvaWQpCkBAIC0yOTY2LDcgKzEzNzMsNyBAQCBjbGFzcyBUYWJsZVZp ZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgogCiAg ICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPXNxbCkKIAotICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25kaXRpb24KICAgICBk ZWYgc3RhdGlzdGljcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9Tm9uZSk6CiAgICAg ICAgICIiIgogICAgICAgICBTdGF0aXN0aWNzCkBAIC0yOTgyLDYzICsxMzg5LDYgQEAgY2xhc3Mg VGFibGVWaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVSZWFkZXIsIFZhY3V1bVNldHRpbmdz KToKICAgICAgICAgb3RoZXJ3aXNlIGl0IHdpbGwgcmV0dXJuIHN0YXRpc3RpY3MgZm9yIGFsbCB0 aGUgdGFibGVzIGluIHRoYXQKICAgICAgICAgc2NoZW1hLgogICAgICAgICAiIiIKLQotICAgICAg ICAjIEZldGNoIHNjaGVtYSBuYW1lCi0gICAgICAgIHN0YXR1cywgc2NoZW1hX25hbWUgPSBzZWxm LmNvbm4uZXhlY3V0ZV9zY2FsYXIoCi0gICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCi0gICAg ICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldF9zY2hlbWEuc3Fs J10pLAotICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLCBzY2lkPXNjaWQKLSAgICAgICAg ICAgICkKLSAgICAgICAgKQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zY2hlbWFfbmFtZSkKLQotICAgICAg ICBpZiB0aWQgaXMgTm9uZToKLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdCgKLSAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjb2xsX3RhYmxlX3N0YXRz LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sIHNjaGVtYV9uYW1l PXNjaGVtYV9uYW1lCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQotICAgICAgICBl bHNlOgotICAgICAgICAgICAgIyBGb3IgSW5kaXZpZHVhbCB0YWJsZSBzdGF0cwotCi0gICAgICAg ICAgICAjIENoZWNrIGlmIHBnc3RhdHR1cGxlIGV4dGVuc2lvbiBpcyBhbHJlYWR5IGNyZWF0ZWQ/ Ci0gICAgICAgICAgICAjIGlmIGNyZWF0ZWQgdGhlbiBvbmx5IGFkZCBleHRlbmRlZCBzdGF0cwot ICAgICAgICAgICAgc3RhdHVzLCBpc19wZ3N0YXR0dXBsZSA9IHNlbGYuY29ubi5leGVjdXRlX3Nj YWxhcigiIiIKLSAgICAgICAgICAgIFNFTEVDVCAoY291bnQoZXh0bmFtZSkgPiAwKSBBUyBpc19w Z3N0YXR0dXBsZQotICAgICAgICAgICAgRlJPTSBwZ19leHRlbnNpb24KLSAgICAgICAgICAgIFdI RVJFIGV4dG5hbWU9J3Bnc3RhdHR1cGxlJwotICAgICAgICAgICAgIiIiKQotICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPWlzX3Bnc3RhdHR1cGxlKQotCi0gICAgICAgICAgICAjIEZldGNoIFRhYmxl IG5hbWUKLSAgICAgICAgICAgIHN0YXR1cywgdGFibGVfbmFtZSA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcigKLSAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdnZXRfdGFibGUuc3FsJ10pLAot ICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwgc2NpZD1zY2lkLCB0aWQ9dGlkCi0g ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXRhYmxlX25hbWUpCi0KLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdCgKLSAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzdGF0cy5zcWwnXSksCi0gICAg ICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLCBzY2hlbWFfbmFtZT1zY2hlbWFfbmFtZSwK LSAgICAgICAgICAgICAgICAgICAgdGFibGVfbmFtZT10YWJsZV9uYW1lLAotICAgICAgICAgICAg ICAgICAgICBpc19wZ3N0YXR0dXBsZT1pc19wZ3N0YXR0dXBsZSwgdGlkPXRpZAotICAgICAgICAg ICAgICAgICkKLSAgICAgICAgICAgICkKLQotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCi0KLSAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKLSAgICAgICAgICAgIGRhdGE9cmVzLAotICAg ICAgICAgICAgc3RhdHVzPTIwMAotICAgICAgICApCi0KKyAgICAgICAgcmV0dXJuIEJhc2VUYWJs ZVZpZXcuZ2V0X3RhYmxlX3N0YXRpc3RpY3Moc2VsZiwgc2NpZCwgdGlkKQogCiBUYWJsZVZpZXcu cmVnaXN0ZXJfbm9kZV92aWV3KGJsdWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1 bW4vdGVtcGxhdGVzL2NvbHVtbi9qcy9jb2x1bW4uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29sdW1uL3RlbXBs YXRlcy9jb2x1bW4vanMvY29sdW1uLmpzCmluZGV4IDE3OWI5NjEuLjcwZmZiZDIgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9jb2x1bW4vdGVtcGxhdGVzL2NvbHVtbi9qcy9jb2x1bW4uanMKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbHVtbi90ZW1wbGF0ZXMvY29sdW1uL2pzL2NvbHVtbi5qcwpAQCAtODYsNiAr ODYsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5jb2x1bW4nLCBbCiAKICAgaWYgKCFwZ0Jyb3dz ZXIuTm9kZXNbJ2NvbHVtbiddKSB7CiAgICAgcGdCcm93c2VyLk5vZGVzWydjb2x1bW4nXSA9IHBn QnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93 c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHBhcmVudF90eXBlOiBbJ3Rh YmxlJywgJ3ZpZXcnLCAnbXZpZXcnXSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogWydjb2xsLXRh YmxlJywgJ2NvbGwtdmlldycsICdjb2xsLW12aWV3J10sCiAgICAgICB0eXBlOiAnY29sdW1uJywK QEAgLTIyOCw2ICsyMjksMTcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuY29sdW1uJywgWwogICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIC8v IElmIHRhYmxlIGlzIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gZGlzYWJsZQorICAgICAgICAgICAg aWYgKG0udG9wICYmICFfLmlzVW5kZWZpbmVkKG0udG9wLmdldCgnaXNfcGFydGl0aW9uZWQnKSkg JiYKKyAgICAgICAgICAgICAgbS50b3AuZ2V0KCdpc19wYXJ0aXRpb25lZCcpKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg ICAgICBtLnNldCgnaXNfcHJpbWFyeV9rZXknLCBmYWxzZSk7CisgICAgICAgICAgICAgIH0sIDEw KTsKKworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKICAgICAg ICAgICAgIGlmKCFtLmluU2NoZW1hV2l0aENvbHVtbkNoZWNrLmFwcGx5KHRoaXMsIFttXSkgJiYK ICAgICAgICAgICAgICAgIV8uaXNVbmRlZmluZWQobmFtZSkgJiYgIV8uaXNOdWxsKG5hbWUpICYm IG5hbWUgIT09ICcnKSB7CiAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbHVtbi90ZXN0cy90ZXN0X2NvbHVtbl9nZXQucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29s dW1uL3Rlc3RzL3Rlc3RfY29sdW1uX2dldC5weQppbmRleCA3MTNkOTk5Li40YWRmYmVmIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29sdW1uL3Rlc3RzL3Rlc3RfY29sdW1uX2dldC5weQorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvY29sdW1uL3Rlc3RzL3Rlc3RfY29sdW1uX2dldC5weQpAQCAtMjQsNyArMjQsNyBA QCBmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIGNvbHVtbnNfdXRpbHMKIGNsYXNzIENvbHVtbkdldFRl c3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAiIiJUaGlzIGNsYXNzIHdpbGwgZ2V0IGNv bHVtbiB1bmRlciB0YWJsZSBub2RlLiIiIgogICAgIHNjZW5hcmlvcyA9IFsKLSAgICAgICAgKCdG ZXRjaCB0YWJsZSBOb2RlIFVSTCcsIGRpY3QodXJsPScvYnJvd3Nlci9jb2x1bW4vb2JqLycpKQor ICAgICAgICAoJ0ZldGNoIGNvbHVtbnMgdW5kZXIgdGFibGUgbm9kZScsIGRpY3QodXJsPScvYnJv d3Nlci9jb2x1bW4vb2JqLycpKQogICAgIF0KIAogICAgIGRlZiBzZXRVcChzZWxmKToKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3RlbXBsYXRlcy9j aGVja19jb25zdHJhaW50L2pzL2NoZWNrX2NvbnN0cmFpbnQuanMgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3Ry YWludHMvY2hlY2tfY29uc3RyYWludC90ZW1wbGF0ZXMvY2hlY2tfY29uc3RyYWludC9qcy9jaGVj a19jb25zdHJhaW50LmpzCmluZGV4IGIxMmQ5ZDMuLjg1ZjYyZjcgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3RlbXBsYXRlcy9jaGVja19jb25zdHJh aW50L2pzL2NoZWNrX2NvbnN0cmFpbnQuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2No ZWNrX2NvbnN0cmFpbnQvdGVtcGxhdGVzL2NoZWNrX2NvbnN0cmFpbnQvanMvY2hlY2tfY29uc3Ry YWludC5qcwpAQCAtMTAsNiArMTAsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5jaGVja19jb25z dHJhaW50cycsIFsKICAgLy8gQ2hlY2sgQ29uc3RyYWludCBOb2RlCiAgIGlmICghcGdCcm93c2Vy Lk5vZGVzWydjaGVja19jb25zdHJhaW50cyddKSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVz WydjaGVja19jb25zdHJhaW50cyddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgIGdl dFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5 LAogICAgICAgdHlwZTogJ2NoZWNrX2NvbnN0cmFpbnRzJywKICAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdDaGVjaycpLAogICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1jb25zdHJhaW50cycsCkBA IC0xOCw3ICsxOSw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmNoZWNrX2NvbnN0cmFpbnRzJywg WwogICAgICAgZGlhbG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7J2ZpbGVuYW1lJzog J2NoZWNrX2RpYWxvZy5odG1sJ30pLAogICAgICAgaGFzU1FMOiB0cnVlLAogICAgICAgaGFzRGVw ZW5kczogdHJ1ZSwKLSAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJ10sCisgICAgICBwYXJlbnRf dHlwZTogWyd0YWJsZScsJ3BhcnRpdGlvbiddLAogICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CiAg ICAgICAgIC8vIEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cwogICAgICAgICBp ZiAodGhpcy5pbml0aWFsaXplZCkKQEAgLTEzNyw2ICsxMzgsMTggQEAgZGVmaW5lKCdwZ2FkbWlu Lm5vZGUuY2hlY2tfY29uc3RyYWludHMnLCBbCiAgICAgICAgICAgJ3N3aXRjaCcsIGNlbGw6ICdi b29sZWFuJywgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRpb24nKSwgbW9kZToKICAgICAgICAgICBb J3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgbWluX3ZlcnNpb246IDkwMjAwLAogICAg ICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBEaXNhYmxlZCBp ZiB0YWJsZSBpcyBhIHBhcnRpdGlvbmVkIHRhYmxlLgorICAgICAgICAgICAgaWYgKChfLmhhcyht ICwgJ3RvcCcpICYmICFfLmlzVW5kZWZpbmVkKG0udG9wKSAmJiBtLnRvcC5nZXQoJ2lzX3BhcnRp dGlvbmVkJykpIHx8CisgICAgICAgICAgICAgICAgKF8uaGFzKG0sICdub2RlX2luZm8nKSAmJiBf LmhhcyhtLm5vZGVfaW5mbywgJ3RhYmxlJykgJiYKKyAgICAgICAgICAgICAgICBfLmhhcyhtLm5v ZGVfaW5mby50YWJsZSwgJ2lzX3BhcnRpdGlvbmVkJykgJiYgbS5ub2RlX2luZm8udGFibGUuaXNf cGFydGl0aW9uZWQpCisgICAgICAgICAgICApeworICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1 bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgICBtLnNldCgnY29ubm9pbmhlcml0JywgZmFsc2Up OworICAgICAgICAgICAgICB9LDEwKTsKKworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICAgIH0KKwogICAgICAgICAgICAgcmV0dXJuICgoXy5oYXMobSwgJ2hhbmRsZXInKSAm JgogICAgICAgICAgICAgICAhXy5pc1VuZGVmaW5lZChtLmhhbmRsZXIpICYmCiAgICAgICAgICAg ICAgICFfLmlzVW5kZWZpbmVkKG0uZ2V0KCdvaWQnKSkpIHx8IChfLmlzRnVuY3Rpb24obS5pc05l dykgJiYgIW0uaXNOZXcoKSkpOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4 Y2x1c2lvbl9jb25zdHJhaW50L3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3RyYWludC9qcy9leGNs dXNpb25fY29uc3RyYWludC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29u c3RyYWludC90ZW1wbGF0ZXMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvanMvZXhjbHVzaW9uX2NvbnN0 cmFpbnQuanMKaW5kZXggODE0ZWRjZS4uNjA1NDk1ZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2Nv bnN0cmFpbnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3RlbXBsYXRlcy9leGNsdXNpb25fY29uc3Ry YWludC9qcy9leGNsdXNpb25fY29uc3RyYWludC5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWlu dHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvdGVtcGxhdGVzL2V4Y2x1c2lvbl9jb25zdHJhaW50L2pz L2V4Y2x1c2lvbl9jb25zdHJhaW50LmpzCkBAIC02MDIsNiArNjAyLDcgQEAgZGVmaW5lKCdwZ2Fk bWluLm5vZGUuZXhjbHVzaW9uX2NvbnN0cmFpbnQnLCBbCiAgIC8vIEV4dGVuZCB0aGUgYnJvd3Nl cidzIG5vZGUgY2xhc3MgZm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50IG5vZGUKICAgaWYgKCFwZ0Jy b3dzZXIuTm9kZXNbJ2V4Y2x1c2lvbl9jb25zdHJhaW50J10pIHsKICAgICBwZ0FkbWluLkJyb3dz ZXIuTm9kZXNbJ2V4Y2x1c2lvbl9jb25zdHJhaW50J10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQo eworICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5v ZGVIaWVyYXJjaHksCiAgICAgICB0eXBlOiAnZXhjbHVzaW9uX2NvbnN0cmFpbnQnLAogICAgICAg bGFiZWw6IGdldHRleHQoJ0V4Y2x1c2lvbiBjb25zdHJhaW50JyksCiAgICAgICBjb2xsZWN0aW9u X3R5cGU6ICdjb2xsLWNvbnN0cmFpbnRzJywKQEAgLTYwOSw3ICs2MTAsNyBAQCBkZWZpbmUoJ3Bn YWRtaW4ubm9kZS5leGNsdXNpb25fY29uc3RyYWludCcsIFsKICAgICAgIHNxbENyZWF0ZUhlbHA6 ICdkZGwtY29uc3RyYWludHMuaHRtbCcsCiAgICAgICBkaWFsb2dIZWxwOiB1cmxfZm9yKCdoZWxw LnN0YXRpYycsIHsnZmlsZW5hbWUnOiAnZXhjbHVzaW9uX2NvbnN0cmFpbnRfZGlhbG9nLmh0bWwn fSksCiAgICAgICBoYXNTUUw6IHRydWUsCi0gICAgICBwYXJlbnRfdHlwZTogJ3RhYmxlJywKKyAg ICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywncGFydGl0aW9uJ10sCiAgICAgICBjYW5Ecm9wOiB0 cnVlLAogICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCiAgICAgICBoYXNEZXBlbmRzOiB0cnVl LApAQCAtOTE2LDEyICs5MTcsMjIgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZXhjbHVzaW9uX2Nv bnN0cmFpbnQnLCBbCiAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkK ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIu dHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YSwgcGFyZW50cyA9IFtdOworICAgICAgICAgIHZh ciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGEsIHBhcmVudHMgPSBb XSwKKyAgICAgICAgICAgIGltbWVkaWF0ZV9wYXJlbnRfdGFibGVfZm91bmQgPSBmYWxzZSwKKyAg ICAgICAgICAgIGlzX2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQgPSBmYWxzZTsK ICAgICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQog ICAgICAgICAgIHdoaWxlIChpKSB7CisgICAgICAgICAgICAvLyBJZiB0YWJsZSBpcyBwYXJ0aXRp b25lZCB0YWJsZSB0aGVuIHJldHVybiBmYWxzZQorICAgICAgICAgICAgaWYgKCFpbW1lZGlhdGVf cGFyZW50X3RhYmxlX2ZvdW5kICYmIChkLl90eXBlID09ICd0YWJsZScgfHwgZC5fdHlwZSA9PSAn cGFydGl0aW9uJykpIHsKKyAgICAgICAgICAgICAgaW1tZWRpYXRlX3BhcmVudF90YWJsZV9mb3Vu ZCA9IHRydWU7CisgICAgICAgICAgICAgIGlmICgnaXNfcGFydGl0aW9uZWQnIGluIGQgJiYgZC5p c19wYXJ0aXRpb25lZCkgeworICAgICAgICAgICAgICAgIGlzX2ltbWVkaWF0ZV9wYXJlbnRfdGFi bGVfcGFydGl0aW9uZWQgPSB0cnVlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK ICAgICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRl IHRhYmxlCiAgICAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4g LTEpCi0gICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICByZXR1cm4gIWlz X2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQ7CiAgICAgICAgICAgICBwYXJlbnRz LnB1c2goZC5fdHlwZSk7CiAgICAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVu dChpKSA6IG51bGw7CiAgICAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwpA QCAtOTMwLDcgKzk0MSw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmV4Y2x1c2lvbl9jb25zdHJh aW50JywgWwogICAgICAgICAgIGlmIChfLmluZGV4T2YocGFyZW50cywgJ2NhdGFsb2cnKSA+IC0x KSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuICFpc19pbW1lZGlhdGVfcGFy ZW50X3RhYmxlX3BhcnRpdGlvbmVkOwogICAgICAgICAgIH0KICAgICAgIH0KICAgICB9KTsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9mb3JlaWduX2tleS90ZW1wbGF0ZXMvZm9y ZWlnbl9rZXkvanMvZm9yZWlnbl9rZXkuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9yZWln bl9rZXkvdGVtcGxhdGVzL2ZvcmVpZ25fa2V5L2pzL2ZvcmVpZ25fa2V5LmpzCmluZGV4IDk1YWZh M2UuLmE0YmVjMDkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9mb3JlaWduX2tl eS90ZW1wbGF0ZXMvZm9yZWlnbl9rZXkvanMvZm9yZWlnbl9rZXkuanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3RlbXBsYXRlcy9mb3JlaWduX2tleS9qcy9mb3JlaWdu X2tleS5qcwpAQCAtNjAyLDYgKzYwMiw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZvcmVpZ25f a2V5JywgWwogICAvLyBFeHRlbmQgdGhlIGJyb3dzZXIncyBub2RlIGNsYXNzIGZvciBmb3JlaWdu IGtleSBub2RlCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydmb3JlaWduX2tleSddKSB7CiAgICAg cGdBZG1pbi5Ccm93c2VyLk5vZGVzWydmb3JlaWduX2tleSddID0gcGdCcm93c2VyLk5vZGUuZXh0 ZW5kKHsKKyAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRy ZWVOb2RlSGllcmFyY2h5LAogICAgICAgdHlwZTogJ2ZvcmVpZ25fa2V5JywKICAgICAgIGxhYmVs OiBnZXR0ZXh0KCdGb3JlaWduIGtleScpLAogICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1j b25zdHJhaW50cycsCkBAIC02MTAsNyArNjExLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZm9y ZWlnbl9rZXknLCBbCiAgICAgICBkaWFsb2dIZWxwOiB1cmxfZm9yKCdoZWxwLnN0YXRpYycsIHsn ZmlsZW5hbWUnOiAnZm9yZWlnbl9rZXlfZGlhbG9nLmh0bWwnfSksCiAgICAgICBoYXNTUUw6IHRy dWUsCiAgICAgICBoYXNEZXBlbmRzOiBmYWxzZSwKLSAgICAgIHBhcmVudF90eXBlOiAndGFibGUn LAorICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCdwYXJ0aXRpb24nXSwKICAgICAgIGNhbkRy b3A6IHRydWUsCiAgICAgICBjYW5Ecm9wQ2FzY2FkZTogdHJ1ZSwKICAgICAgIGhhc0RlcGVuZHM6 IHRydWUsCkBAIC0xMDY4LDEyICsxMDY5LDIyIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZvcmVp Z25fa2V5JywgWwogICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCiAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRy ZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGEsIHBhcmVudHMgPSBbXTsKKyAgICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhLCBwYXJlbnRzID0gW10s CisgICAgICAgICAgICBpbW1lZGlhdGVfcGFyZW50X3RhYmxlX2ZvdW5kID0gZmFsc2UsCisgICAg ICAgICAgICBpc19pbW1lZGlhdGVfcGFyZW50X3RhYmxlX3BhcnRpdGlvbmVkID0gZmFsc2U7CiAg ICAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKICAg ICAgICAgICB3aGlsZSAoaSkgeworICAgICAgICAgICAgLy8gSWYgdGFibGUgaXMgcGFydGl0aW9u ZWQgdGFibGUgdGhlbiByZXR1cm4gZmFsc2UKKyAgICAgICAgICAgIGlmICghaW1tZWRpYXRlX3Bh cmVudF90YWJsZV9mb3VuZCAmJiAoZC5fdHlwZSA9PSAndGFibGUnIHx8IGQuX3R5cGUgPT0gJ3Bh cnRpdGlvbicpKSB7CisgICAgICAgICAgICAgIGltbWVkaWF0ZV9wYXJlbnRfdGFibGVfZm91bmQg PSB0cnVlOworICAgICAgICAgICAgICBpZiAoJ2lzX3BhcnRpdGlvbmVkJyBpbiBkICYmIGQuaXNf cGFydGl0aW9uZWQpIHsKKyAgICAgICAgICAgICAgICBpc19pbW1lZGlhdGVfcGFyZW50X3RhYmxl X3BhcnRpdGlvbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAg ICAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGMgcmVhdGUg dGFibGUKICAgICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAt MSkKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIHJldHVybiAhaXNf aW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0aXRpb25lZDsKICAgICAgICAgICAgIHBhcmVudHMu cHVzaChkLl90eXBlKTsKICAgICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50 KGkpIDogbnVsbDsKICAgICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7CkBA IC0xMDgyLDcgKzEwOTMsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mb3JlaWduX2tleScsIFsK ICAgICAgICAgICBpZiAoXy5pbmRleE9mKHBhcmVudHMsICdjYXRhbG9nJykgPiAtMSkgewogICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAhaXNfaW1tZWRpYXRlX3BhcmVudF90YWJs ZV9wYXJ0aXRpb25lZDsKICAgICAgICAgICB9CiAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZW1wbGF0ZXMvaW5kZXhf Y29uc3RyYWludC9qcy9pbmRleF9jb25zdHJhaW50LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRz L2luZGV4X2NvbnN0cmFpbnQvdGVtcGxhdGVzL2luZGV4X2NvbnN0cmFpbnQvanMvaW5kZXhfY29u c3RyYWludC5qcwppbmRleCA5N2E0MDRhLi45NDc5YWNkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv Y29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC90ZW1wbGF0ZXMvaW5kZXhfY29uc3RyYWludC9q cy9pbmRleF9jb25zdHJhaW50LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9j b25zdHJhaW50L3RlbXBsYXRlcy9pbmRleF9jb25zdHJhaW50L2pzL2luZGV4X2NvbnN0cmFpbnQu anMKQEAgLTYsNiArNiw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnt7bm9kZV90eXBlfX0nLCBb CiAgIC8vIEV4dGVuZCB0aGUgYnJvd3NlcidzIG5vZGUgY2xhc3MgZm9yIGluZGV4IGNvbnN0cmFp bnQgbm9kZQogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sne3tub2RlX3R5cGV9fSddKSB7CiAgICAg cGdBZG1pbi5Ccm93c2VyLk5vZGVzWyd7e25vZGVfdHlwZX19J10gPSBwZ0Jyb3dzZXIuTm9kZS5l eHRlbmQoeworICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxk VHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICB0eXBlOiAne3tub2RlX3R5cGV9fScsCiAgICAgICBs YWJlbDogJ3t7IG5vZGVfbGFiZWwgfX0nLAogICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1j b25zdHJhaW50cycsCkBAIC0yMCw3ICsyMSw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnt7bm9k ZV90eXBlfX0nLCBbCiAgICAgICBoYXNEZXBlbmRzOiB0cnVlLAogICAgICAgaGFzU3RhdGlzdGlj czogdHJ1ZSwKICAgICAgIHN0YXRzUHJldHRpZnlGaWVsZHM6IFsnSW5kZXggc2l6ZSddLAotICAg ICAgcGFyZW50X3R5cGU6ICd0YWJsZScsCisgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsJ3Bh cnRpdGlvbiddLAogICAgICAgY2FuRHJvcDogdHJ1ZSwKICAgICAgIGNhbkRyb3BDYXNjYWRlOiB0 cnVlLAogICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CkBAIC00NSwxMiArNDYsMjggQEAgZGVmaW5l KCdwZ2FkbWluLm5vZGUue3tub2RlX3R5cGV9fScsIFsKICAgICAgICAgaWYgKGRhdGEgJiYgZGF0 YS5jaGVjayA9PSBmYWxzZSkKICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhLCBwYXJlbnRzID0gW107 CisgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGEs IHBhcmVudHMgPSBbXSwKKyAgICAgICAgICBpbW1lZGlhdGVfcGFyZW50X3RhYmxlX2ZvdW5kID0g ZmFsc2UsCisgICAgICAgICAgaXNfaW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0aXRpb25lZCA9 IGZhbHNlOworCiAgICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVu dCBub2RlCiAgICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1h IHRoZW4gYWxsb3cgdXNlciB0byBjIHJlYXRlIHRhYmxlCisgICAgICAgICAgLy8gSWYgdGFibGUg aXMgcGFydGl0aW9uZWQgdGFibGUgdGhlbiByZXR1cm4gZmFsc2UKKyAgICAgICAgICBpZiAoIWlt bWVkaWF0ZV9wYXJlbnRfdGFibGVfZm91bmQgJiYgKGQuX3R5cGUgPT0gJ3RhYmxlJyB8fCBkLl90 eXBlID09ICdwYXJ0aXRpb24nKSkgeworICAgICAgICAgICAgaW1tZWRpYXRlX3BhcmVudF90YWJs ZV9mb3VuZCA9IHRydWU7CisgICAgICAgICAgICBpZiAoJ2lzX3BhcnRpdGlvbmVkJyBpbiBkICYm IGQuaXNfcGFydGl0aW9uZWQpIHsKKyAgICAgICAgICAgICAgICBpc19pbW1lZGlhdGVfcGFyZW50 X3RhYmxlX3BhcnRpdGlvbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisK KyAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSB0 YWJsZQogICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkg ewogICAgICAgICAgICAgeyUgaWYgbm9kZV90eXBlID09ICdwcmltYXJ5X2tleScgJX0KKworICAg ICAgICAgICAgaWYgKGlzX2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQpIHsKKyAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAv LyBUaGVyZSBzaG91bGQgYmUgb25seSBvbmUgcHJpbWFyeSBrZXkgcGVyIHRhYmxlLgogICAgICAg ICAgICAgdmFyIGNoaWxkcmVuID0gdC5jaGlsZHJlbihhcmd1bWVudHNbMV0sIGZhbHNlKSwKICAg ICAgICAgICAgICAgcHJpbWFyeV9rZXlfZm91bmQgPSBmYWxzZTsKQEAgLTYzLDcgKzgwLDcgQEAg ZGVmaW5lKCdwZ2FkbWluLm5vZGUue3tub2RlX3R5cGV9fScsIFsKICAgICAgICAgICAgIH0pOwog ICAgICAgICAgICAgcmV0dXJuICFwcmltYXJ5X2tleV9mb3VuZDsKICAgICAgICAgICAgIHslIGVs c2UgJX0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuICFpc19p bW1lZGlhdGVfcGFyZW50X3RhYmxlX3BhcnRpdGlvbmVkOwogICAgICAgICAgICAgeyUgZW5kaWYg JX0KICAgICAgICAgICB9CiAgICAgICAgICAgcGFyZW50cy5wdXNoKGQuX3R5cGUpOwpAQCAtNzQs NyArOTEsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS57e25vZGVfdHlwZX19JywgWwogICAgICAg ICBpZiAoXy5pbmRleE9mKHBhcmVudHMsICdjYXRhbG9nJykgPiAtMSkgewogICAgICAgICAgIHJl dHVybiBmYWxzZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwor ICAgICAgICAgICAgcmV0dXJuICFpc19pbW1lZGlhdGVfcGFyZW50X3RhYmxlX3BhcnRpdGlvbmVk OwogICAgICAgICB9CiAgICAgICB9LAogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWlu dHMvdGVtcGxhdGVzL2NvbnN0cmFpbnRzL2pzL2NvbnN0cmFpbnRzLmpzIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2Nv bnN0cmFpbnRzL3RlbXBsYXRlcy9jb25zdHJhaW50cy9qcy9jb25zdHJhaW50cy5qcwppbmRleCBh NzM0NmYxLi5lMzcyYjNjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvdGVtcGxh dGVzL2NvbnN0cmFpbnRzL2pzL2NvbnN0cmFpbnRzLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJh aW50cy90ZW1wbGF0ZXMvY29uc3RyYWludHMvanMvY29uc3RyYWludHMuanMKQEAgLTksMTYgKzks MTggQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuY29uc3RyYWludHMnLCBbCiAgICAgICAgIG5vZGU6 ICdjb25zdHJhaW50cycsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdDb25zdHJhaW50cycpLAog ICAgICAgICB0eXBlOiAnY29sbC1jb25zdHJhaW50cycsCisgICAgICAgIGdldFRyZWVOb2RlSGll cmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgICBj b2x1bW5zOiBbJ25hbWUnLCAnY29tbWVudCddCiAgICAgICB9KTsKICAgfTsKIAogICBpZiAoIXBn QnJvd3Nlci5Ob2Rlc1snY29uc3RyYWludHMnXSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rl c1snY29uc3RyYWludHMnXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBnZXRUcmVl Tm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAg ICAgIHR5cGU6ICdjb25zdHJhaW50cycsCiAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ29uc3RyYWlu dHMnKSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLAotICAgICAg cGFyZW50X3R5cGU6IFsndGFibGUnXSwKKyAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywncGFy dGl0aW9uJ10sCiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgLyogQXZvaWQgbXVs aXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCiAgICAgICAgIGlmICh0aGlzLmluaXRpYWxp emVkKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvX19pbml0X18ucHkgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvaW5kZXhlcy9fX2luaXRfXy5weQppbmRleCBlNTJjMTViLi44NWRhNzY2IDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvaW5kZXhlcy9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9f X2luaXRfXy5weQpAQCAtNzIsNiArNzIsMTggQEAgY2xhc3MgSW5kZXhlc01vZHVsZShDb2xsZWN0 aW9uTm9kZU1vZHVsZSk6CiAgICAgICAgIGlmIHN1cGVyKEluZGV4ZXNNb2R1bGUsIHNlbGYpLkJh Y2tlbmRTdXBwb3J0ZWQobWFuYWdlciwgKiprd2FyZ3MpOgogICAgICAgICAgICAgY29ubiA9IG1h bmFnZXIuY29ubmVjdGlvbihkaWQ9a3dhcmdzWydkaWQnXSkKIAorICAgICAgICAgICAgIyBJbiBj YXNlIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHJldHVybiBmYWxzZS4KKyAgICAgICAgICAgIGlmICd0 aWQnIGluIGt3YXJncyBhbmQgbWFuYWdlci52ZXJzaW9uID49IDEwMDAwMDoKKyAgICAgICAgICAg ICAgICBwYXJ0aXRpb25fcGF0aCA9ICdwYXJ0aXRpb24vc3FsLyN7MH0jJy5mb3JtYXQobWFuYWdl ci52ZXJzaW9uKQorICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bigKKyAgICAgICAgICAgICAgICAgICAgW3BhcnRpdGlvbl9wYXRoLCAnYmFja2VuZF9zdXBwb3J0 LnNxbCddKSwgdGlkPWt3YXJnc1sndGlkJ10pCisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMg PSBjb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKworICAgICAgICAgICAgICAgICMgY2hlY2sgaWYg YW55IGVycm9ycworICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAg ICAgICAgICAgIHJldHVybiBub3QgcmVzCisKICAgICAgICAgICAgIGlmICd2aWQnIG5vdCBpbiBr d2FyZ3M6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIApkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2luZGV4ZXMvdGVtcGxhdGVzL2luZGV4L2pzL2luZGV4LmpzIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4 ZXMvdGVtcGxhdGVzL2luZGV4L2pzL2luZGV4LmpzCmluZGV4IDI0ZjM3ZjAuLjRmYzFkNTQgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL3RlbXBsYXRlcy9pbmRleC9qcy9pbmRleC5qcwor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvaW5kZXhlcy90ZW1wbGF0ZXMvaW5kZXgvanMvaW5kZXguanMKQEAgLTEw LDYgKzEwLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuaW5kZXgnLCBbCiAgICAgICAgIG5vZGU6 ICdpbmRleCcsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdJbmRleGVzJyksCiAgICAgICAgIHR5 cGU6ICdjb2xsLWluZGV4JywKKyAgICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nl ci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICAgIHNxbEFsdGVySGVscDogJ3Nx bC1hbHRlcmluZGV4Lmh0bWwnLAogICAgICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZWlu ZGV4Lmh0bWwnLAogICAgICAgICBkaWFsb2dIZWxwOiB1cmxfZm9yKCdoZWxwLnN0YXRpYycsIHsn ZmlsZW5hbWUnOiAnaW5kZXhfZGlhbG9nLmh0bWwnfSksCkBAIC0yMTAsOCArMjExLDkgQEAgZGVm aW5lKCdwZ2FkbWluLm5vZGUuaW5kZXgnLCBbCiAgICAgfSk7CiAKICAgaWYgKCFwZ0Jyb3dzZXIu Tm9kZXNbJ2luZGV4J10pIHsKLSAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2luZGV4J10gPSBw Z0FkbWluLkJyb3dzZXIuTm9kZS5leHRlbmQoewotICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUn LCAndmlldycsICdtdmlldyddLAorICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snaW5kZXgnXSA9 IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdC cm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKKyAgICAgIHBhcmVudF90eXBlOiBb J3RhYmxlJywgJ3ZpZXcnLCAnbXZpZXcnLCAncGFydGl0aW9uJ10sCiAgICAgICBjb2xsZWN0aW9u X3R5cGU6IFsnY29sbC10YWJsZScsICdjb2xsLXZpZXcnXSwKICAgICAgIHNxbEFsdGVySGVscDog J3NxbC1hbHRlcmluZGV4Lmh0bWwnLAogICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1jcmVhdGVp bmRleC5odG1sJywKQEAgLTI0Nyw2ICsyNDksMTIgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuaW5k ZXgnLCBbCiAgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWluZGV4JywgZGF0YToge2Fj dGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKICAgICAgICAgICBlbmFibGU6ICdjYW5DcmVh dGUnCiAgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfaW5kZXhfb25QYXJ0aXRp b24nLCBub2RlOiAncGFydGl0aW9uJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6 IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywK KyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogZ2V0dGV4 dCgnSW5kZXguLi4nKSwKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24taW5kZXgnLCBk YXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTog J2NhbkNyZWF0ZScKKyAgICAgICAgfSx7CiAgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9pbmRleF9v bk1hdFZpZXcnLCBub2RlOiAnbXZpZXcnLCBtb2R1bGU6IHRoaXMsCiAgICAgICAgICAgYXBwbGll czogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMn LAogICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDUsIGxhYmVsOiBnZXR0 ZXh0KCdJbmRleC4uLicpLApAQCAtNDcyLDEyICs0ODAsMjMgQEAgZGVmaW5lKCdwZ2FkbWluLm5v ZGUuaW5kZXgnLCBbCiAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkK ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIu dHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YSwgcGFyZW50cyA9IFtdOworICAgICAgICAgIHZh ciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGEsIHBhcmVudHMgPSBb XSwKKyAgICAgICAgICAgIGltbWVkaWF0ZV9wYXJlbnRfdGFibGVfZm91bmQgPSBmYWxzZSwKKyAg ICAgICAgICAgIGlzX2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQgPSBmYWxzZTsK ICAgICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQog ICAgICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhl biBhbGxvdyB1c2VyIHRvIGMgcmVhdGUgdGFibGUKKyAgICAgICAgICAgIC8vIERvIG5vdCBhbGxv dyBjcmVhdGluZyBpbmRleCBvbiBwYXJ0aXRpb25lZCB0YWJsZXMuCisgICAgICAgICAgICBpZiAo IWltbWVkaWF0ZV9wYXJlbnRfdGFibGVfZm91bmQgJiYKKyAgICAgICAgICAgICAgICBfLmluZGV4 T2YoWyd0YWJsZScsICdwYXJ0aXRpb24nXSwgZC5fdHlwZSkgPiAtMSkgeworICAgICAgICAgICAg ICBpbW1lZGlhdGVfcGFyZW50X3RhYmxlX2ZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgaWYg KCdpc19wYXJ0aXRpb25lZCcgaW4gZCAmJiBkLmlzX3BhcnRpdGlvbmVkKSB7CisgICAgICAgICAg ICAgICAgaXNfaW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0aXRpb25lZCA9IHRydWU7CisgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2No ZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgaW5kZXgKICAgICAgICAgICAgIGlmIChfLmlu ZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICAgICAgIHJldHVybiAhaXNfaW1tZWRpYXRlX3BhcmVudF90YWJsZV9wYXJ0 aXRpb25lZDsKICAgICAgICAgICAgIHBhcmVudHMucHVzaChkLl90eXBlKTsKICAgICAgICAgICAg IGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKICAgICAgICAgICAgIGQg PSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7CkBAIC00ODYsNyArNTA1LDcgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUuaW5kZXgnLCBbCiAgICAgICAgICAgaWYgKF8uaW5kZXhPZihwYXJlbnRzLCAn Y2F0YWxvZycpID4gLTEpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gIWlz X2ltbWVkaWF0ZV9wYXJlbnRfdGFibGVfcGFydGl0aW9uZWQ7CiAgICAgICAgICAgfQogICAgICAg fQogICB9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL19faW5pdF9fLnB5IGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3BhcnRpdGlvbnMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uYTFjMDEwZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRp b25zL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNTgzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIwor IyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMTcsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyBy ZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCisiIiIgSW1wbGVtZW50cyBQYXJ0aXRpb25zIE5vZGUgIiIiCisKK2ltcG9ydCByZQoraW1w b3J0IHNpbXBsZWpzb24gYXMganNvbgoraW1wb3J0IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMgYXMgc2NoZW1hCitmcm9tIGZsYXNrIGltcG9y dCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QKK2Zyb20gZmxhc2tfYmFiZWwgaW1wb3J0IGdldHRl eHQKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu c2NoZW1hcy51dGlscyBcCisgICAgaW1wb3J0IERhdGFUeXBlUmVhZGVyLCBWYWN1dW1TZXR0aW5n cworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IGludGVybmFsX3NlcnZlcl9lcnJvciwg XAorICAgIG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgZ29uZQorZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRhYmxlcy51 dGlscyBcCisgICAgaW1wb3J0IEJhc2VUYWJsZVZpZXcKK2Zyb20gcGdhZG1pbi5icm93c2VyLmNv bGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCitmcm9tIHBnYWRtaW4udXRpbHMu YWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBwcmVjb25kaXRpb25fcmVxdWlyZWQKK2Zy b20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBwZ2FkbWluLmJyb3dzZXIu dXRpbHMgaW1wb3J0IFBHQ2hpbGRNb2R1bGUKKworCitjbGFzcyBQYXJ0aXRpb25zTW9kdWxlKENv bGxlY3Rpb25Ob2RlTW9kdWxlKToKKyAgICAiIiIKKyAgICAgY2xhc3MgUGFydGl0aW9uc01vZHVs ZShDb2xsZWN0aW9uTm9kZU1vZHVsZSkKKworICAgICAgICBBIG1vZHVsZSBjbGFzcyBmb3IgUGFy dGl0aW9uIG5vZGUgZGVyaXZlZCBmcm9tIENvbGxlY3Rpb25Ob2RlTW9kdWxlLgorCisgICAgTWV0 aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAg ICAtIE1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIFBhcnRpdGlvbiBhbmQgaXQncyBi YXNlIG1vZHVsZS4KKworICAgICogZ2V0X25vZGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCkK KyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGJyb3dzZXIgY29sbGVjdGlv biBub2RlLgorCisgICAgKiBub2RlX2lub2RlKCkKKyAgICAgIC0gTWV0aG9kIGlzIG92ZXJyaWRk ZW4gZnJvbSBpdHMgYmFzZSBjbGFzcyB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZS4KKwor ICAgICogc2NyaXB0X2xvYWQoKQorICAgICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBz Y2hlbWEsIHdoZW4gYW55IG9mIHRoZSBzZXJ2ZXIgbm9kZSBpcworICAgICAgICBpbml0aWFsaXpl ZC4KKyAgICAiIiIKKworICAgIE5PREVfVFlQRSA9ICdwYXJ0aXRpb24nCisgICAgQ09MTEVDVElP Tl9MQUJFTCA9IGdldHRleHQoIlBhcnRpdGlvbnMiKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs ICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICBNZXRob2QgaXMgdXNlZCB0 byBpbml0aWFsaXplIHRoZSBQYXJ0aXRpb25zTW9kdWxlIGFuZCBpdCdzIGJhc2UgbW9kdWxlLgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICAqYXJnczoKKyAgICAgICAgICAgICoqa3dhcmdz OgorICAgICAgICAiIiIKKyAgICAgICAgc3VwZXIoUGFydGl0aW9uc01vZHVsZSwgc2VsZikuX19p bml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLm1pbl92ZXIgPSAxMDAwMDAKKyAg ICAgICAgc2VsZi5tYXhfdmVyID0gTm9uZQorCisgICAgZGVmIGdldF9ub2RlcyhzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCAqKmt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0 ZSB0aGUgY29sbGVjdGlvbiBub2RlCisgICAgICAgICIiIgorICAgICAgICB5aWVsZCBzZWxmLmdl bmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKGt3YXJnc1sndGlkJ10pCisKKyAgICBAcHJv cGVydHkKKyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBM b2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBzZXJ2ZXIsIHdoZW4gYW55IG9mIHRoZSBzZXJ2ZXIt Z3JvdXAgbm9kZSBpcworICAgICAgICBpbml0aWFsaXplZC4KKyAgICAgICAgIiIiCisgICAgICAg IHJldHVybiBzY2hlbWEuU2NoZW1hTW9kdWxlLk5PREVfVFlQRQorCisgICAgQHByb3BlcnR5Cisg ICAgZGVmIG5vZGVfaW5vZGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIHRoZSBt b2R1bGUgbm9kZSBhcyBhIGxlYWYgbm9kZQorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIFRy dWUKKworICAgIGRlZiBCYWNrZW5kU3VwcG9ydGVkKHNlbGYsIG1hbmFnZXIsICoqa3dhcmdzKToK KyAgICAgICAgIiIiCisgICAgICAgIExvYWQgdGhpcyBtb2R1bGUgaWYgaXQgaXMgYSBwYXJ0aXRp b24gdGFibGUKKyAgICAgICAgIiIiCisgICAgICAgIGlmICd0aWQnIGluIGt3YXJncyBhbmQgQ29s bGVjdGlvbk5vZGVNb2R1bGUuQmFja2VuZFN1cHBvcnRlZChzZWxmLCBtYW5hZ2VyLCAqKmt3YXJn cyk6CisgICAgICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1rd2FyZ3NbJ2Rp ZCddKQorCisgICAgICAgICAgICB0ZW1wbGF0ZV9wYXRoID0gJ3BhcnRpdGlvbi9zcWwvI3swfSMn LmZvcm1hdChtYW5hZ2VyLnZlcnNpb24pCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgW3RlbXBsYXRlX3BhdGgsICdiYWNrZW5kX3N1 cHBvcnQuc3FsJ10pLCB0aWQ9a3dhcmdzWyd0aWQnXSkKKyAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisKKyAgICAgICAgICAgICMgY2hlY2sgaWYgYW55 IGVycm9ycworICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgcmV0 dXJuIHJlcworCisgICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGFwcCwgb3B0aW9ucywgZmlyc3RfcmVn aXN0cmF0aW9uPUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIE92ZXJyaWRlIHRoZSBkZWZh dWx0IHJlZ2lzdGVyIGZ1bmN0aW9uIHRvIGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXIKKyAgICAgICAg c3ViLW1vZHVsZXMgb2YgdGFibGUgbm9kZSB1bmRlciBwYXJ0aXRpb24gdGFibGUgbm9kZS4KKyAg ICAgICAgIiIiCisKKyAgICAgICAgaWYgZmlyc3RfcmVnaXN0cmF0aW9uOgorICAgICAgICAgICAg c2VsZi5zdWJtb2R1bGVzID0gbGlzdChhcHAuZmluZF9zdWJtb2R1bGVzKHNlbGYuaW1wb3J0X25h bWUpKQorCisgICAgICAgIHN1cGVyKENvbGxlY3Rpb25Ob2RlTW9kdWxlLCBzZWxmKS5yZWdpc3Rl cihhcHAsIG9wdGlvbnMsIGZpcnN0X3JlZ2lzdHJhdGlvbikKKworICAgICAgICBmb3IgbW9kdWxl IGluIHNlbGYuc3VibW9kdWxlczoKKyAgICAgICAgICAgIGlmIGZpcnN0X3JlZ2lzdHJhdGlvbjoK KyAgICAgICAgICAgICAgICBtb2R1bGUucGFyZW50bW9kdWxlcy5hcHBlbmQoc2VsZikKKyAgICAg ICAgICAgIGFwcC5yZWdpc3Rlcl9ibHVlcHJpbnQobW9kdWxlKQorCisgICAgICAgICMgTm93IGFk ZCBzdWIgbW9kdWxlcyBvZiB0YWJsZSBub2RlIHRvIHBhcnRpdGlvbiB0YWJsZSBub2RlLgorICAg ICAgICBpZiBmaXJzdF9yZWdpc3RyYXRpb246CisgICAgICAgICAgICAjIEV4Y2x1ZGUgJ3BhcnRp dGlvbicgbW9kdWxlIGZvciBub3cgdG8gYXZvaWQgY3ljbGljIGltcG9ydCBpc3N1ZS4KKyAgICAg ICAgICAgIG1vZHVsZXNfdG9fc2tpcCA9IFsncGFydGl0aW9uJywgJ2NvbHVtbiddCisgICAgICAg ICAgICBmb3IgcGFyZW50IGluIHNlbGYucGFyZW50bW9kdWxlczoKKyAgICAgICAgICAgICAgICBp ZiBwYXJlbnQuTk9ERV9UWVBFID09ICd0YWJsZSc6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu c3VibW9kdWxlcyArPSBbCisgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGUgZm9yIHN1 Ym1vZHVsZSBpbiBwYXJlbnQuc3VibW9kdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgaWYg c3VibW9kdWxlLk5PREVfVFlQRSBub3QgaW4gbW9kdWxlc190b19za2lwCisgICAgICAgICAgICAg ICAgICAgIF0KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtb2R1bGVfdXNlX3RlbXBsYXRlX2ph dmFzY3JpcHQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHdoZXRoZXIgSmlu amEyIHRlbXBsYXRlIGlzIHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlIGphdmFzY3JpcHQKKyAgICAg ICAgbW9kdWxlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKworYmx1ZXBy aW50ID0gUGFydGl0aW9uc01vZHVsZShfX25hbWVfXykKKworCitjbGFzcyBQYXJ0aXRpb25zVmll dyhCYXNlVGFibGVWaWV3LCBEYXRhVHlwZVJlYWRlciwgVmFjdXVtU2V0dGluZ3MpOgorICAgICIi IgorICAgIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgcm91dGVzIGZv ciBQYXJ0aXRpb24gbm9kZQorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisKKyAgICAqIGxp c3QoKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlIFBhcnRp dGlvbiBub2RlcyB3aXRoaW4gdGhhdAorICAgICAgY29sbGVjdGlvbi4KKworICAgICogbm9kZXMo KQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgdXNlZCB0byBjcmVhdGUgYWxsIHRoZSBjaGls ZCBub2RlIHdpdGhpbiB0aGF0CisgICAgICAgIGNvbGxlY3Rpb24sIEhlcmUgaXQgd2lsbCBjcmVh dGUgYWxsIHRoZSBQYXJ0aXRpb24gbm9kZS4KKworICAgICogcHJvcGVydGllcyhnaWQsIHNpZCwg ZGlkLCBzY2lkLCB0aWQsIHB0aWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBzaG93IHRo ZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWxlY3RlZCBQYXJ0aXRpb24gbm9kZQorCisgICAgIiIiCisK KyAgICBub2RlX3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRzID0g WworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAgICB7J3R5cGUn OiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2Rp ZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NjaWQnfSwKKyAgICAgICAgeyd0 eXBlJzogJ2ludCcsICdpZCc6ICd0aWQnfQorICAgIF0KKyAgICBpZHMgPSBbCisgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAncHRpZCd9CisgICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRp Y3QoeworICAgICAgICAnb2JqJzogWworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycs ICdkZWxldGUnOiAnZGVsZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsnZ2V0 JzogJ2xpc3QnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAgICBdLAorICAgICAgICAnbm9kZXMn OiBbeydnZXQnOiAnbm9kZXMnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdjaGlsZHJl bic6IFt7J2dldCc6ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwn fV0sCisgICAgICAgICdtc3FsJzogW3snZ2V0JzogJ21zcWwnfSwge31dLAorICAgICAgICAnZGV0 YWNoJzogW3sncHV0JzogJ2RldGFjaCd9XSwKKyAgICAgICAgJ3RydW5jYXRlJzogW3sncHV0Jzog J3RydW5jYXRlJ31dCisKKyAgICB9KQorCisgICAgZGVmIGNoaWxkcmVuKHNlbGYsICoqa3dhcmdz KToKKyAgICAgICAgIiIiQnVpbGQgYSBsaXN0IG9mIHRyZWV2aWV3IG5vZGVzIGZyb20gdGhlIGNo aWxkIG5vZGVzLiIiIgorCisgICAgICAgIGlmICdzaWQnIG5vdCBpbiBrd2FyZ3M6CisgICAgICAg ICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgIGdldHRl eHQoJ1JlcXVpcmVkIHByb3BlcnRpZXMgYXJlIG1pc3NpbmcuJykKKyAgICAgICAgICAgICkKKwor ICAgICAgICBmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCisgICAg ICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21h bmFnZXIoCisgICAgICAgICAgICBzaWQ9a3dhcmdzWydzaWQnXQorICAgICAgICApCisKKyAgICAg ICAgZGlkID0gTm9uZQorICAgICAgICBpZiAnZGlkJyBpbiBrd2FyZ3M6CisgICAgICAgICAgICBk aWQgPSBrd2FyZ3NbJ2RpZCddCisKKyAgICAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihk aWQ9ZGlkKQorCisgICAgICAgIGlmIG5vdCBjb25uLmNvbm5lY3RlZCgpOgorICAgICAgICAgICAg cmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAgICAgICAgICBnZXR0ZXh0KAor ICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGxv c3QuIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgICAgICBub2RlcyA9 IFtdCisgICAgICAgIGZvciBtb2R1bGUgaW4gc2VsZi5ibHVlcHJpbnQuc3VibW9kdWxlczoKKyAg ICAgICAgICAgIGlmIGlzaW5zdGFuY2UobW9kdWxlLCBQR0NoaWxkTW9kdWxlKToKKyAgICAgICAg ICAgICAgICBpZiBtYW5hZ2VyIGlzIG5vdCBOb25lIGFuZCBcCisgICAgICAgICAgICAgICAgICAg ICAgICBtb2R1bGUuQmFja2VuZFN1cHBvcnRlZChtYW5hZ2VyLCAqKmt3YXJncyk6CisgICAgICAg ICAgICAgICAgICAgICMgdHJlYXQgcGFydGl0aW9uIHRhYmxlIGFzIG5vcm1hbCB0YWJsZS4KKyAg ICAgICAgICAgICAgICAgICAgIyByZXBsYWNlIHRpZCB3aXRoIHB0aWQgYW5kIHBvcCBwdGlkIGZy b20ga3dhcmdzCisgICAgICAgICAgICAgICAgICAgIGlmICdwdGlkJyBpbiBrd2FyZ3M6CisgICAg ICAgICAgICAgICAgICAgICAgICBwdGlkID0ga3dhcmdzLnBvcCgncHRpZCcpCisgICAgICAgICAg ICAgICAgICAgICAgICBrd2FyZ3NbJ3RpZCddID0gcHRpZAorICAgICAgICAgICAgICAgICAgICBu b2Rlcy5leHRlbmQobW9kdWxlLmdldF9ub2RlcygqKmt3YXJncykpCisgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgIG5vZGVzLmV4dGVuZChtb2R1bGUuZ2V0X25vZGVzKCoqa3dhcmdz KSkKKworICAgICAgICAjIEV4cGxpY2l0bHkgaW5jbHVkZSAncGFydGl0aW9uJyBtb2R1bGUgYXMg d2UgaGFkIGV4Y2x1ZGVkIGl0IGR1cmluZworICAgICAgICAjIHJlZ2lzdHJhdGlvbi4KKyAgICAg ICAgbm9kZXMuZXh0ZW5kKHNlbGYuYmx1ZXByaW50LmdldF9ub2RlcygqKmt3YXJncykpCisKKyAg ICAgICAgIyBSZXR1cm4gc29ydGVkIG5vZGVzIGJhc2VkIG9uIGxhYmVsCisgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXNvcnRlZCgKKyAgICAgICAg ICAgICAgICBub2Rlcywga2V5PWxhbWJkYSBjOiBjWydsYWJlbCddCisgICAgICAgICAgICApCisg ICAgICAgICkKKworICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlIHRhYmxlIG5vZGVzIHdp dGhpbiB0aGF0CisgICAgICAgIGNvbGxlY3Rpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgIGdpZDogU2VydmVyIGdyb3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAg ICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisg ICAgICAgICAgICB0aWQ6IFRhYmxlIElECisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAg IEpTT04gb2YgYXZhaWxhYmxlIHRhYmxlIG5vZGVzCisgICAgICAgICIiIgorICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3Fs J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0 aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxm LmRhdGxhc3RzeXNvaWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXR1cm4gYWpheF9y ZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBwdGlk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxp c3QgYWxsIHRoZSB0YWJsZSBub2RlcyB3aXRoaW4gdGhhdAorICAgICAgICBjb2xsZWN0aW9uLgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBncm91cCBJRAorICAgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAg ICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICAgdGlkOiBQYXJlbnQgVGFibGUgSUQK KyAgICAgICAgICAgIHB0aWQ6IFBhcnRpdGlvbiBUYWJsZSBJRAorCisgICAgICAgIFJldHVybnM6 CisgICAgICAgICAgICBKU09OIG9mIGF2YWlsYWJsZSB0YWJsZSBub2RlcworICAgICAgICAiIiIK KyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoLCAnbm9kZXMuc3FsJ10pLAorICAgICAgICAg ICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRpZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgc3Rh dHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJzZXQpCisKKyAgICAgICAgZGVmIGJyb3dzZXJfbm9kZShyb3cpOgorICAgICAgICAgICAg cmV0dXJuIHNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAg ICAgICByb3dbJ29pZCddLAorICAgICAgICAgICAgICAgIHRpZCwKKyAgICAgICAgICAgICAgICBy b3dbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBhcnRpdGlvbiIsCisgICAg ICAgICAgICAgICAgdGlnZ2VyX2NvdW50PXJvd1sndHJpZ2dlcmNvdW50J10sCisgICAgICAgICAg ICAgICAgaGFzX2VuYWJsZV90cmlnZ2Vycz1yb3dbJ2hhc19lbmFibGVfdHJpZ2dlcnMnXSwKKyAg ICAgICAgICAgICAgICBpc19wYXJ0aXRpb25lZD1yb3dbJ2lzX3BhcnRpdGlvbmVkJ10sCisgICAg ICAgICAgICAgICAgcGFyZW50X3NjaGVtYV9pZD1zY2lkLAorICAgICAgICAgICAgICAgIHNjaGVt YV9pZD1yb3dbJ3NjaGVtYV9pZCddLAorICAgICAgICAgICAgICAgIHNjaGVtYV9uYW1lPXJvd1sn c2NoZW1hX25hbWUnXQorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIHB0aWQgaXMgbm90IE5v bmU6CisgICAgICAgICAgICBpZiBsZW4ocnNldFsncm93cyddKSA9PSAwOgorICAgICAgICAgICAg ICAgIHJldHVybiBnb25lKGdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICJUaGUgc3BlY2lm aWVkIHBhcnRpdGlvbmVkIHRhYmxlIGNvdWxkIG5vdCBiZSBmb3VuZC4iCisgICAgICAgICAgICAg ICAgKSkKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICBkYXRhPWJyb3dzZXJfbm9kZShyc2V0Wydyb3dzJ11bMF0pLCBzdGF0dXM9MjAwCisg ICAgICAgICAgICAgICAgKQorCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGZvciByb3cgaW4g cnNldFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZChicm93c2VyX25vZGUocm93KSkK KworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1y ZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBCYXNlVGFibGVW aWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lk LCBkaWQsIHNjaWQsIHRpZCwgcHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgc2hvdyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0ZWQgdGFibGUgbm9kZS4K KworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAg ICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6ICBEYXRhYmFzZSBJRAorICAg ICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAg ICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgICAgIHB0aWQ6IFBhcnRpdGlvbiBUYWJs ZSBJRAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBKU09OIG9mIHNlbGVjdGVkIHRh YmxlIG5vZGUKKyAgICAgICAgIiIiCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHB0aWQ9cHRpZCwgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3Rz eXNvaWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwp CisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09 IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoZ2V0dGV4dCgKKyAgICAgICAgICAgICAg ICAgICAgIlRoZSBzcGVjaWZpZWQgcGFydGl0aW9uZWQgdGFibGUgY291bGQgbm90IGJlIGZvdW5k LiIpKQorCisgICAgICAgIHJldHVybiBzdXBlcihQYXJ0aXRpb25zVmlldywgc2VsZikucHJvcGVy dGllcygKKyAgICAgICAgICAgIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHB0aWQsIHJlcykKKworICAg IEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lk LCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBwdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBjcmVhdGVzIHJldmVyc2UgZW5naW5lZXJlZCBzcWwgZm9yCisgICAgICAg IHRoZSB0YWJsZSBvYmplY3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2 ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBE YXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgdGlkOiBU YWJsZSBJRAorICAgICAgICAgICBwdGlkOiBQYXJ0aXRpb24gVGFibGUgSUQKKyAgICAgICAgIiIi CisgICAgICAgIG1haW5fc3FsID0gW10KKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGlkPWRpZCwgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHRpZD1wdGlkLCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFz dHN5c29pZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNR TCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkg PT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ29uZShnZXR0ZXh0KAorICAgICAgICAgICAg ICAgICAgICAiVGhlIHNwZWNpZmllZCBwYXJ0aXRpb25lZCB0YWJsZSBjb3VsZCBub3QgYmUgZm91 bmQuIikpCisKKyAgICAgICAgZGF0YSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgcmV0dXJu IEJhc2VUYWJsZVZpZXcuZ2V0X3JldmVyc2VfZW5naW5lZXJlZF9zcWwoc2VsZiwgZGlkLCBzY2lk LCBwdGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtYWluX3NxbCwgZGF0YSkKKworICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBkZXRhY2goc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBw dGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXNldCBzdGF0 aXN0aWNzIG9mIHRhYmxlCisKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgIGdpZDogU2VydmVy IEdyb3VwIElECisgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgIGRpZDogRGF0 YWJhc2UgSUQKKyAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgIHRpZDogVGFi bGUgSUQKKyAgICAgICAgICAgcHRpZDogUGFydGl0aW9uIFRhYmxlIElECisgICAgICAgICIiIgor ICAgICAgICAjIEZldGNoIHNjaGVtYSBuYW1lCisgICAgICAgIHN0YXR1cywgcGFyZW50X3NjaGVt YSA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcigKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLCAn Z2V0X3NjaGVtYS5zcWwnXSksCisgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sIHNjaWQ9 c2NpZAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXBhcmVudF9z Y2hlbWEpCisKKyAgICAgICAgIyBGZXRjaCBQYXJlbnQgVGFibGUgbmFtZQorICAgICAgICBzdGF0 dXMsIHBhcnRpdGlvbmVkX3RhYmxlX25hbWUgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoCisg ICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3Nl bGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ2dldF90YWJsZS5zcWwnXSksCisgICAgICAgICAgICAg ICAgY29ubj1zZWxmLmNvbm4sIHNjaWQ9c2NpZCwgdGlkPXRpZAorICAgICAgICAgICAgKQorICAg ICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXBhcnRpdGlvbmVkX3RhYmxlX25hbWUpCisKKyAgICAg ICAgIyBHZXQgc2NoZW1hIG9pZCBvZiBwYXJ0aXRpb24KKyAgICAgICAgc3RhdHVzLCBwc2NpZCA9 IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcigKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZ2V0X3NjaGVtYV9vaWQuc3FsJ10pLCB0aWQ9cHRpZCkpCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXNjaWQpCisKKyAgICAgICAgIyBGZXRjaCBzY2hlbWEgbmFtZQorICAgICAg ICBzdGF0dXMsIHBhcnRpdGlvbl9zY2hlbWEgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoCisg ICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9zY2hlbWEu c3FsJ10pLCBjb25uPXNlbGYuY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lk PXBzY2lkKQorICAgICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXBhcnRpdGlvbl9zY2hlbWEpCisK KyAgICAgICAgIyBGZXRjaCBQYXJ0aXRpb24gVGFibGUgbmFtZQorICAgICAgICBzdGF0dXMsIHBh cnRpdGlvbl9uYW1lID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBs YXRlX3BhdGgsICdnZXRfdGFibGUuc3FsJ10pLAorICAgICAgICAgICAgICAgIGNvbm49c2VsZi5j b25uLCBzY2lkPXBzY2lkLCB0aWQ9cHRpZAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXBhcnRpdGlvbl9uYW1lKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAg IHRlbXBfZGF0YSA9IGRpY3QoKQorICAgICAgICAgICAgdGVtcF9kYXRhWydwYXJlbnRfc2NoZW1h J10gPSBwYXJlbnRfc2NoZW1hCisgICAgICAgICAgICB0ZW1wX2RhdGFbJ3BhcnRpdGlvbmVkX3Rh YmxlX25hbWUnXSA9IHBhcnRpdGlvbmVkX3RhYmxlX25hbWUKKyAgICAgICAgICAgIHRlbXBfZGF0 YVsnc2NoZW1hJ10gPSBwYXJ0aXRpb25fc2NoZW1hCisgICAgICAgICAgICB0ZW1wX2RhdGFbJ25h bWUnXSA9IHBhcnRpdGlvbl9uYW1lCisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5wYXJ0aXRpb25f dGVtcGxhdGVfcGF0aCwgJ2RldGFjaC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YT10ZW1wX2RhdGEsIGNvbm49c2VsZi5jb25uKQorCisgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdldHRleHQoIlBh cnRpdGlvbiBkZXRhY2hlZC4iKSwKKyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAg ICAgICAgICAgJ2lkJzogcHRpZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkCisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXN0cihlKSkKKworICAgIEBCYXNlVGFibGVWaWV3LmNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcHRpZD1Ob25lKToKKyAgICAg ICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgbW9kaWZpZWQgc3FsIGZv ciB0YWJsZSBvYmplY3QKKworICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgdGlkOiBUYWJs ZSBJRAorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IGRpY3QoKQorICAgICAgICBmb3Igaywg diBpbiByZXF1ZXN0LmFyZ3MuaXRlbXMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg ICAgICBkYXRhW2tdID0ganNvbi5sb2Fkcyh2LCBlbmNvZGluZz0ndXRmLTgnKQorICAgICAgICAg ICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3IsIEtleUVycm9yKToKKyAgICAgICAgICAg ICAgICBkYXRhW2tdID0gdgorCisgICAgICAgIGlmIHB0aWQgaXMgbm90IE5vbmU6CisgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYucGFydGl0aW9uX3RlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdw cm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9 ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcHRpZD1wdGlkLCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIFNRTCwgbmFtZSA9IHNlbGYuZ2V0X3NxbChk aWQsIHNjaWQsIHB0aWQsIGRhdGEsIHJlcykKKyAgICAgICAgU1FMID0gcmUuc3ViKCdcbnsyLH0n LCAnXG5cbicsIFNRTCkKKyAgICAgICAgU1FMID0gU1FMLnN0cmlwKCdcbicpCisgICAgICAgIGlm IFNRTCA9PSAnJzoKKyAgICAgICAgICAgIFNRTCA9ICItLW1vZGlmaWVkIFNRTCIKKyAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9U1FMLAorICAgICAg ICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBAQmFzZVRhYmxlVmlldy5jaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZCwgcHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRl IGFuIGV4aXN0aW5nIHRhYmxlIG9iamVjdAorCisgICAgICAgICBBcmdzOgorICAgICAgICAgICBn aWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAg ICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAg ICB0aWQ6IFRhYmxlIElECisgICAgICAgICAgIHB0aWQ6IFBhcnRpdGlvbiBUYWJsZSBJRAorICAg ICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxz ZSBqc29uLmxvYWRzKAorICAgICAgICAgICAgcmVxdWVzdC5kYXRhLCBlbmNvZGluZz0ndXRmLTgn CisgICAgICAgICkKKworICAgICAgICBmb3IgaywgdiBpbiBkYXRhLml0ZW1zKCk6CisgICAgICAg ICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHModiwgZW5jb2Rp bmc9J3V0Zi04JykKKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yLCBL ZXlFcnJvcik6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKKworICAgICAgICB0cnk6Cisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYucGFydGl0aW9u X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkaWQ9ZGlkLCBzY2lkPXNjaWQsIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHRpZD1wdGlkLCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gc3VwZXIoUGFy dGl0aW9uc1ZpZXcsIHNlbGYpLnVwZGF0ZSgKKyAgICAgICAgICAgICAgICBnaWQsIHNpZCwgZGlk LCBzY2lkLCBwdGlkLCBkYXRhLCByZXMsIHBhcmVudF9pZD10aWQpCisgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQEJhc2VUYWJsZVZpZXcuY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIHRydW5jYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCwgcHRpZCk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdHJ1bmNhdGUgdGhlIHRh YmxlIG9iamVjdAorCisgICAgICAgICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJRAorICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElECisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6IFRhYmxlIElE CisgICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1kaWQsIHNjaWQ9c2NpZCwgdGlk PXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdGlkPXB0aWQsIGRhdGxh c3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisKKyAgICAgICAgICAgIHJldHVybiBzdXBlcihQYXJ0aXRpb25zVmlldywgc2VsZikudHJ1bmNh dGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgcHRpZCwgcmVzKQorCisgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9c3RyKGUpKQorCisKK1BhcnRpdGlvbnNWaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVl cHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0aWMvaW1nL2NvbGwt cGFydGl0aW9uLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL3N0YXRpYy9pbWcvY29sbC1wYXJ0 aXRpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MzZjNjZhZmIxMDk5ZTE4OThmM2M2MTYzYTcwOWUzZTUz NzU1NjQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE0MzMKemNtZUFTQE4/KG9sSHlgdVZCcSFp YTB2cF4wd0IhNjF8O1BffDQjJWBrfG5NWUNCZ1k9Q0ZPfWxzU0opT2BBTWs/CnpwMUZ6WHNYP2lV RFYycE1RKjlVK21ANl92QjEkNUJlWE5yNmJNK0VJWVY7fnszeEsqQTc7TmstM0tFbUVRJWUrKgp6 UXF3Y0BZP2E+Yy1taiNQblBSSUhadDgyYFRpfjNVaz9CIVlscDAqKzdtezMrb290eitXTilXblEo Ki0oQVVDeG4KelFLMkY/QyRIRzUhZDN9dnRgKDNDNjRxQnowNHBpVXdwRF5TRCNBQkYhOHlNdVJs IXV4T2dHdWsqaDBiRlFxUiFUCnooISQ2QE41Uk96JmBqVUpRczItLSpUQiVxenx6WFZQeXFeKmZW TEgtcSooPkl4SXlnI0BAJG5kTj1nYz5eITNaagp6JWt8MlFfNDEzLV4kamc4RSVnbkleb0Aqa2Zo dSYxRUF2VmNEfEdYVW0wPjJocSF1Ul5XZnFpVj1JMUdaT2lXRDUKekZEPGNFMD1nOTloMT4jUFUl MF99I242QlAyQU9fRVZ1OE0pb2BIVURGMzRZQyl4ey0yc1IoQ2FSYjNvWFMmKnQ5CnpsdjxvJFQ5 Z2NvazJHYk5XPzxPaXcrTiZWPW8lfmtxRCl8PEI8OHJ9Q3pzfT89OVBINSplVV5LXmluY1l0a1RS Wgp6NXsqb2FsNWBEP09idkJTT2NPMTFsWWxfaUprYFgpRnZZK20pZyZubVcpMyN9RSo2ZF5QTnQ0 ZENON1JIaEs4PUAKelBIdntvRjN5SFZtWDV9KlpqTWR7RnVrNjYjVStWKCQqQ35BR2w2elBeKlo5 IVl2byombnBsIXc2cTI4eDE0eyh+Cno4VGxwbyNUb2VwM2VMYDtTVHxTREBKJnE0JW1XRShmKzdt eVo8b31mJShCIUp4MSMpOTEjbjFQV255dUtzZkRTagp6TVQlaUUoOTZrYngrYU9xMkQrQiFDYUpv ezdEKyY8UkxjfXxsVmx+Unt1RlhVUCNAP2hlTmJ7aU48Sl9sVjQ0SW0KejtoNiEqZm9HQEdKWVhJ dzAlbiVxRC1TNiVGZmVaU2JhNCEreEhWX2VkRj5XUWlSMWY/LSR5OFYyNmNCbzt1a3BXCno9K1JZ R0s3Ry1nemw/bChlNEZhbD1FJXFfbktNVm1NTmB2MHRON05GMXU4fDhwRDZLZGQ3R01oWlF0WFdt RXt7SAp6an5NJVl1M2glTEB8cDJAcDNpT0glT157VWBCKm5oUUo4RVooYVJ0RVplc1FLO0QyIXZK fWFLTWR9bGtyWlRRUWcKemB7PTM2MUN1MGIxRkdnXmFaR1YjWn5BZDg7Xkw3O3BJZnNYVVE0Wj5X JjZYSkhAd21LPEEkOyM2VkdidCFAOWZgCnpkflghNFBRTSlPQHBGNXImcGxDenQ2T0poWiZ+Y2V3 KX1IY18pViplWXRudmdIaENVI0BQVCNqcUhgQXVUR2JSewp6UHQ7IzFuMGprbCU/cTw1RjNFKT0p akU1JTs8RiNWVFA8TjJSYEJXQDJqaCY0OWpYQ1lPQVc7NXZuKiF2SSlBekQKeioyMmU2UkRUQG1f RndoIytmVkpAeUg4dmpDcFckUWVDVTQ2K2dFUylicVEpfG5xNjh2Kn5pNGs+Y04mTUJqKWI1Cnop dl57KFVlOW5rY3o8S0QlOXA3KCh4cjBVdWU8M1VjXmtQVG57fWJmamtjTjModU11QTdqaX5qWlJ2 Yj1vdkVefgp6dkNYKmNAbi0yUXpoQXZAKWo4c34/IXdLV3t4N1NXYDw3PFpGJCRtY194KkNBSnxT cTlyKkBsQ0AlcFgzM3JwTnMKcWdUb2BnJkFuQFc/ZjtTfEAwMzJOOWJob1pfX3lySGtBQEFQIXFV XiMmdDt1Y0xLNlZOY0ByNGAKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9wYXJ0aXRpb25zL3N0YXRpYy9pbWcvcGFydGl0aW9uLnBuZyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9w YXJ0aXRpb25zL3N0YXRpYy9pbWcvcGFydGl0aW9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDZkZDhiMzVh ZDJkYTFjMTUwZGNmZTViZTg4NjFjNzNjZWY3MmU2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAx MjY0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYxfDtQX3w0IyVga3xuTVlDQmdZPUNG T31sc1NKKU9gQU1rPwp6cDFGelhzWD9pVURWMnBNUSo5VSttXkNzKEIxJDVCZVhOcjZiTStFSVlW O357M3hLKkE3O05rLTNLRW1FUSVlKyoKelFxd2NAWT9hPmMtbWojUG5QUklIWnQ4MmBUaX4zVWs/ QiFZbHAwKis3bXszK29vdHorV04pV25RKCotKEFVQ3huCnpRSzJGP0MkSEc1IWQzfXZ0YCgzQzY0 cUJ6MDRwaVV3cEReU0QjQUJGITh5TXVSbCF1eE9nR3VrKmgwYkZRcVIhVAp6KCEkNkBONVJPeiZg alVKUXMyLS0qVEIlcXp8elhWUHlxXipmVkxILXEqKD5JeEl5ZyNAQCRuZE49Z2M+XiEzWmoKeiVr fDJRXzQxMy1eJGpnOEUlZ25JXm9AKmtmaHUmMUVBdlZjRHxHWFVtMD4yaHEhdVJeV2ZxaVY9STFH Wk9pV0Q1CnpGRDxjRTA9Zzk5aDE+JFR2M2JTTlU7K2wxZW5uenx6TS1CMCRWKUpWelB8WEM9SHxq eDduY08zQkhXQUI7TnA8Vgp6Zj5peVcpWitab3FHVnZpcjc0NH5EeklgY049Kz11RkFCLWUmdyso dkt0X0heZXNNO0FmcjdJJERBZGRxRzwqfTIKekd4ST0jbnFYYk56RSstaiNVK1YoJCpHPCR3bnsq QV5mRUozdFNzRk8tSGU+ZkVsbihxNEdqJWwlYElLYm90I1hhCnpPeCtCUFU3WEMjKytjY0xAez56 KlF9YXEtZFElWDM5ZFlVZkM1WVN0cHZeOStNVlYhKERRLXBpeGU4IzlUVj4qUQp6aSNibTdwbjZr cXlUdDtoVVZXZnJeZys+ITZ4fWMoVT5YODM7ZldXPmZoWWdlSllicUgwdyhTXjNvfmpNNyNRT2AK elRedkl5Wm1rS25ePiNLQ3V7SE54e1gmN08+NERPVk1fTzdJOGNIRG9SekkybGFPKlcpOzhWS05m QUM9YUw7ZWsxCnpjU1dwcnUzV3UoXjVwSi1UVGlNY2ViM140YlNlR05VWHx4fWl6aWpUPz47bTQt cmMmJm0xV0VWQkFGaGFQSERiYQp6O1RZKzM9dlBJSXQ5fFVYVyErRUNwVztuOCleVTctVVozNSRM ZXB4ZGhfO19TVyhUcmtybXQ4JEJrT0g9dGNfJXcKejxGeW9+RXVFWHJlcDlQR3Z3ckkxS0Vwa3NB e3taMz4raXEqYys5QSReb24zYS0xV3t5IWE2TzdXPDlAcHlqdHNuCnoyIzNneWpRd3U1TkFLT0xR SVp6WWRIZTdzdWw0Rn5rKnlyfSh3UXZkQklCRXVYRG89XzdYS2hBRmgqeE9vNVpUPAp6Um5xVSlS ej4pJlJ9e0BfREUxZT0rVlkmVSZufXtRblYzKzM/dmVsZkIzVmErM01UJW8qenRSSEA5Zz81aDFE eTEKenFwej8xNS0qeWVlQ2dvZz1sPClvWihlKkl2NTlHPldyaiU9eEF4YXt7UHlRfXU5digycmw1 N3tgPVhqcGV9QkctCmJaZVYwRWRCNjE0cyhqVHBQI05VdT5nVGV+RFdNNGYyMmFKJQoKbGl0ZXJh bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvc3RhdGlj L2pzL3BhcnRpdGlvbi5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL3N0YXRpYy9qcy9wYXJ0aXRp b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJkZTI5YwotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL3N0YXRpYy9qcy9wYXJ0aXRpb24uanMK QEAgLTAsMCArMSwxMjc2IEBACitkZWZpbmUoWworICAgICdzb3VyY2VzL2dldHRleHQnLCAnanF1 ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbicsCisgICAg J3BnYWRtaW4uYnJvd3NlcicsICdiYWNrZm9ybScsICdhbGVydGlmeScsICdwZ2FkbWluLmJyb3dz ZXIuY29sbGVjdGlvbicsCisgICAgJ3BnYWRtaW4uYnJvd3Nlci50YWJsZS5wYXJ0aXRpb24udXRp bHMnCitdLAorZnVuY3Rpb24oZ2V0dGV4dCwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBC YWNrZm9ybSwgYWxlcnRpZnkpIHsKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1wYXJ0 aXRpb24nXSkgeworICAgIHZhciBkYXRhYmFzZXMgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2Nv bGwtcGFydGl0aW9uJ10gPQorICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5k KHsKKyAgICAgICAgbm9kZTogJ3BhcnRpdGlvbicsCisgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdQ YXJ0aXRpb25zJyksCisgICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFi bGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAorICAgICAgICB0eXBlOiAnY29sbC1wYXJ0aXRpb24n LAorICAgICAgICBjb2x1bW5zOiBbCisgICAgICAgICAgJ25hbWUnLCAnc2NoZW1hJywgJ3BhcnRp dGlvbl92YWx1ZScsICdpc19wYXJ0aXRpb25lZCcsICdkZXNjcmlwdGlvbicKKyAgICAgICAgXSwK KyAgICAgICAgaGFzU3RhdGlzdGljczogdHJ1ZQorICAgICAgfSk7CisgIH07CisKKyAgaWYgKCFw Z0Jyb3dzZXIuTm9kZXNbJ3BhcnRpdGlvbiddKSB7CisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVz WydwYXJ0aXRpb24nXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBnZXRUcmVlTm9k ZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKKyAgICAg IHBhcmVudF90eXBlOiAndGFibGUnLAorICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1wYXJ0 aXRpb24nLAorICAgICAgdHlwZTogJ3BhcnRpdGlvbicsCisgICAgICBsYWJlbDogZ2V0dGV4dCgn UGFydGl0aW9uJyksCisgICAgICBoYXNTUUw6IHRydWUsCisgICAgICBoYXNEZXBlbmRzOiB0cnVl LAorICAgICAgaGFzU3RhdGlzdGljczogdHJ1ZSwKKyAgICAgIHN0YXRzUHJldHRpZnlGaWVsZHM6 IFsnU2l6ZScsICdJbmRleGVzIHNpemUnLCAnVGFibGUgc2l6ZScsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ1RvYXN0IHRhYmxlIHNpemUnLCAnVHVwbGUgbGVuZ3RoJywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnRGVhZCB0dXBsZSBsZW5ndGgnLCAnRnJlZSBzcGFjZSddLAor ICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVydGFibGUuaHRtbCcsCisgICAgICBzcWxDcmVh dGVIZWxwOiAnc3FsLWNyZWF0ZXRhYmxlLmh0bWwnLAorICAgICAgZGlhbG9nSGVscDogJ3t7IHVy bF9mb3IoJ2hlbHAuc3RhdGljJywgZmlsZW5hbWU9J3RhYmxlX2RpYWxvZy5odG1sJykgfX0nLAor ICAgICAgaGFzU2NyaXB0VHlwZXM6IFsnY3JlYXRlJ10sCisgICAgICBoZWlnaHQ6ICc5NSUnLAor ICAgICAgd2lkdGg6ICc4NSUnLAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CisgICAgICAgIC8q IEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cyAqLworICAgICAgICBpZiAodGhp cy5pbml0aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRp YWxpemVkID0gdHJ1ZTsKKworICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFt7CisgICAgICAg ICAgbmFtZTogJ3RydW5jYXRlX3RhYmxlJywgbm9kZTogJ3BhcnRpdGlvbicsIG1vZHVsZTogdGhp cywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAn dHJ1bmNhdGVfdGFibGUnLAorICAgICAgICAgIGNhdGVnb3J5OiAnVHJ1bmNhdGUnLCBwcmlvcml0 eTogMywgbGFiZWw6IGdldHRleHQoJ1RydW5jYXRlJyksCisgICAgICAgICAgaWNvbjogJ2ZhIGZh LWVyYXNlcicsIGVuYWJsZSA6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5h bWU6ICd0cnVuY2F0ZV90YWJsZV9jYXNjYWRlJywgbm9kZTogJ3BhcnRpdGlvbicsIG1vZHVsZTog dGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNr OiAndHJ1bmNhdGVfdGFibGVfY2FzY2FkZScsCisgICAgICAgICAgY2F0ZWdvcnk6ICdUcnVuY2F0 ZScsIHByaW9yaXR5OiAzLCBsYWJlbDogZ2V0dGV4dCgnVHJ1bmNhdGUgQ2FzY2FkZScpLAorICAg ICAgICAgIGljb246ICdmYSBmYS1lcmFzZXInLCBlbmFibGUgOiAnY2FuQ3JlYXRlJworICAgICAg ICB9LHsKKyAgICAgICAgICAvLyBUbyBlbmFibGUvZGlzYWJsZSBhbGwgdHJpZ2dlcnMgZm9yIHRo ZSB0YWJsZQorICAgICAgICAgIG5hbWU6ICdlbmFibGVfYWxsX3RyaWdnZXJzJywgbm9kZTogJ3Bh cnRpdGlvbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdj b250ZXh0J10sIGNhbGxiYWNrOiAnZW5hYmxlX3RyaWdnZXJzX29uX3RhYmxlJywKKyAgICAgICAg ICBjYXRlZ29yeTogJ1RyaWdnZXIocyknLCBwcmlvcml0eTogNCwgbGFiZWw6IGdldHRleHQoJ0Vu YWJsZSBBbGwnKSwKKyAgICAgICAgICBpY29uOiAnZmEgZmEtY2hlY2snLCBlbmFibGUgOiAnY2Fu Q3JlYXRlX3dpdGhfdHJpZ2dlcl9lbmFibGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6 ICdkaXNhYmxlX2FsbF90cmlnZ2VycycsIG5vZGU6ICdwYXJ0aXRpb24nLCBtb2R1bGU6IHRoaXMs CisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ2Rp c2FibGVfdHJpZ2dlcnNfb25fdGFibGUnLAorICAgICAgICAgIGNhdGVnb3J5OiAnVHJpZ2dlcihz KScsIHByaW9yaXR5OiA0LCBsYWJlbDogZ2V0dGV4dCgnRGlzYWJsZSBBbGwnKSwKKyAgICAgICAg ICBpY29uOiAnZmEgZmEtdGltZXMnLCBlbmFibGUgOiAnY2FuQ3JlYXRlX3dpdGhfdHJpZ2dlcl9k aXNhYmxlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAncmVzZXRfdGFibGVfc3RhdHMn LCBub2RlOiAncGFydGl0aW9uJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsn b2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdyZXNldF90YWJsZV9zdGF0cycsCisgICAg ICAgICAgY2F0ZWdvcnk6ICdSZXNldCcsIHByaW9yaXR5OiA0LCBsYWJlbDogZ2V0dGV4dCgnUmVz ZXQgU3RhdGlzdGljcycpLAorICAgICAgICAgIGljb246ICdmYSBmYS1iYXItY2hhcnQnLCBlbmFi bGUgOiAnY2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnZGV0YWNoX3Bh cnRpdGlvbicsIG5vZGU6ICdwYXJ0aXRpb24nLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBw bGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ2RldGFjaF9wYXJ0aXRpb24n LAorICAgICAgICAgIHByaW9yaXR5OiAyLCBsYWJlbDogZ2V0dGV4dCgnRGV0YWNoIFBhcnRpdGlv bicpLAorICAgICAgICAgIGljb246ICdmYSBmYS1yZW1vdmUnCisgICAgICAgIH0KKyAgICAgICAg XSk7CisgICAgICB9LAorICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IGZ1bmN0aW9uKGkpIHsK KyAgICAgICAgdmFyIGlkeCA9IDAsCisgICAgICAgICAgICByZXMgPSB7fSwKKyAgICAgICAgICAg IHQgPSBwZ0Jyb3dzZXIudHJlZTsKKworICAgICAgICBkbyB7CisgICAgICAgICAgZCA9IHQuaXRl bURhdGEoaSk7CisgICAgICAgICAgaWYgKAorICAgICAgICAgICAgZC5fdHlwZSBpbiBwZ0Jyb3dz ZXIuTm9kZXMgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdLmhhc0lkCisgICAgICAgICAgKSB7 CisgICAgICAgICAgICBpZiAoZC5fdHlwZSA9PSAncGFydGl0aW9uJyAmJiAncGFydGl0aW9uJyBp biByZXMpIHsKKyAgICAgICAgICAgICAgaWYgKCEoJ3RhYmxlJyBpbiByZXMpKSB7CisgICAgICAg ICAgICAgICAgcmVzWyd0YWJsZSddID0gXy5leHRlbmQoe30sIGQsIHsncHJpb3JpdHknOiBpZHh9 KTsKKyAgICAgICAgICAgICAgICBpZHggLT0gMTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgfSBlbHNlIGlmIChkLl90eXBlID09ICd0YWJsZScpIHsKKyAgICAgICAgICAgICAgaWYgKCEo J3RhYmxlJyBpbiByZXMpKSB7CisgICAgICAgICAgICAgICAgcmVzWyd0YWJsZSddID0gXy5leHRl bmQoe30sIGQsIHsncHJpb3JpdHknOiBpZHh9KTsKKyAgICAgICAgICAgICAgICBpZHggLT0gMTsK KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgcmVz W2QuX3R5cGVdID0gXy5leHRlbmQoe30sIGQsIHsncHJpb3JpdHknOiBpZHh9KTsKKyAgICAgICAg ICAgICAgaWR4IC09IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGkg PSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAgICAgfSB3aGlsZSAo aSk7CisKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgIH0sCisgICAgICBnZW5lcmF0ZV91cmw6 IGZ1bmN0aW9uKGl0ZW0sIHR5cGUsIGQsIHdpdGhfaWQsIGluZm8pIHsKKyAgICAgICAgaWYgKF8u aW5kZXhPZihbCisgICAgICAgICAgICAnc3RhdHMnLCAnc3RhdGlzdGljcycsICdkZXBlbmRlbmN5 JywgJ2RlcGVuZGVudCcsICdyZXNldCcsCisgICAgICAgICAgICAnZ2V0X3JlbGF0aW9ucycsICdn ZXRfb2Z0eXBlJywgJ2dldF9hdHRhY2hfdGFibGVzJworICAgICAgICAgICAgXSwgdHlwZSkgPT0g LTEpIHsKKyAgICAgICAgICByZXR1cm4gcGdCcm93c2VyLk5vZGUuZ2VuZXJhdGVfdXJsLmFwcGx5 KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodHlwZSA9PSAnc3Rh dGlzdGljcycpIHsKKyAgICAgICAgICB0eXBlID0gJ3N0YXRzJzsKKyAgICAgICAgfQorCisgICAg ICAgIGluZm8gPSAoXy5pc1VuZGVmaW5lZChpdGVtKSB8fCBfLmlzTnVsbChpdGVtKSkgPworICAg ICAgICAgIGluZm8gfHwge30gOiB0aGlzLmdldFRyZWVOb2RlSGllcmFyY2h5KGl0ZW0pOworCisg ICAgICAgIHJldHVybiBTKCd0YWJsZS8lcy8lcy8lcy8lcy8lcy8lcycpLnNwcmludGYoCisgICAg ICAgICAgICBlbmNvZGVVUklDb21wb25lbnQodHlwZSksIGVuY29kZVVSSUNvbXBvbmVudChpbmZv WydzZXJ2ZXItZ3JvdXAnXS5faWQpLAorICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KGlu Zm9bJ3NlcnZlciddLl9pZCksCisgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoaW5mb1sn ZGF0YWJhc2UnXS5faWQpLAorICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KGluZm9bJ3Bh cnRpdGlvbiddLnNjaGVtYV9pZCksCisgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoaW5m b1sncGFydGl0aW9uJ10uX2lkKQorICAgICAgICAgICAgKS52YWx1ZSgpOworICAgICAgfSwKKyAg ICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAg ICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9w LAorICAgICAgY2FsbGJhY2tzOiB7CisgICAgICAgIC8qIEVuYWJsZSB0cmlnZ2VyKHMpIG9uIHRh YmxlICovCisgICAgICAgIGVuYWJsZV90cmlnZ2Vyc19vbl90YWJsZTogZnVuY3Rpb24oYXJncykg eworICAgICAgICAgICAgdmFyIHBhcmFtcyA9IHsnZW5hYmxlJzogdHJ1ZSB9OworICAgICAgICAg ICAgdGhpcy5jYWxsYmFja3Muc2V0X3RyaWdnZXJzLmFwcGx5KHRoaXMsIFthcmdzLCBwYXJhbXNd KTsKKyAgICAgICAgfSwKKyAgICAgICAgLyogRGlzYWJsZSB0cmlnZ2VyKHMpIG9uIHRhYmxlICov CisgICAgICAgIGRpc2FibGVfdHJpZ2dlcnNfb25fdGFibGU6IGZ1bmN0aW9uKGFyZ3MpIHsKKyAg ICAgICAgICAgIHZhciBwYXJhbXMgPSB7J2VuYWJsZSc6IGZhbHNlIH07CisgICAgICAgICAgICB0 aGlzLmNhbGxiYWNrcy5zZXRfdHJpZ2dlcnMuYXBwbHkodGhpcywgW2FyZ3MsIHBhcmFtc10pOwor ICAgICAgICB9LAorICAgICAgICBzZXRfdHJpZ2dlcnM6IGZ1bmN0aW9uKGFyZ3MsIHBhcmFtcykg eworICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBzZW5kIHJlcXVlc3QgdG8gZW5hYmxl IG9yCisgICAgICAgICAgLy8gZGlzYWJsZSB0cmlnZ2VycyBvbiB0YWJsZSBsZXZlbAorICAgICAg ICAgIHZhciBpbnB1dCA9IGFyZ3MgfHwge307CisgICAgICAgICAgb2JqID0gdGhpcywKKyAgICAg ICAgICB0ID0gcGdCcm93c2VyLnRyZWUsCisgICAgICAgICAgaSA9IGlucHV0Lml0ZW0gfHwgdC5z ZWxlY3RlZCgpLAorICAgICAgICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRh KGkpIDogdW5kZWZpbmVkOworICAgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgIHJldHVybiBm YWxzZTsKKworICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICB1cmw6IG9iai5nZW5lcmF0 ZV91cmwoaSwgJ3NldF90cmlnZ2VyJyAsIGQsIHRydWUpLAorICAgICAgICAgICAgdHlwZTonUFVU JywKKyAgICAgICAgICAgIGRhdGE6IHBhcmFtcywKKyAgICAgICAgICAgIGRhdGFUeXBlOiAianNv biIsCisgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAg aWYgKHJlcy5zdWNjZXNzID09IDEpIHsKKyAgICAgICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNz KCJ7eyBfKCciICsgcmVzLmluZm8gKyAiJykgfX0iKTsKKyAgICAgICAgICAgICAgICB0LnVubG9h ZChpKTsKKyAgICAgICAgICAgICAgICB0LnNldElub2RlKGkpOworICAgICAgICAgICAgICAgIHQu ZGVzZWxlY3QoaSk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg ICAgICAgICAgICAgICAgIHQuc2VsZWN0KGkpOworICAgICAgICAgICAgICAgIH0sIDEwKTsKKyAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGVycm9yOiBmdW5jdGlv bih4aHIsIHN0YXR1cywgZXJyb3IpIHsKKyAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg ICAgICB2YXIgZXJyID0gJC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAg ICAgICAgaWYgKGVyci5zdWNjZXNzID09IDApIHsKKyAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5 LmVycm9yKGVyci5lcnJvcm1zZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9 IGNhdGNoIChlKSB7fQorICAgICAgICAgICAgICB0LnVubG9hZChpKTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgLyogVHJ1bmNhdGUgdGFibGUgKi8K KyAgICAgICAgdHJ1bmNhdGVfdGFibGU6IGZ1bmN0aW9uKGFyZ3MpIHsKKyAgICAgICAgICAgIHZh ciBwYXJhbXMgPSB7J2Nhc2NhZGUnOiBmYWxzZSB9OworICAgICAgICAgICAgdGhpcy5jYWxsYmFj a3MudHJ1bmNhdGUuYXBwbHkodGhpcywgW2FyZ3MsIHBhcmFtc10pOworICAgICAgICB9LAorICAg ICAgICAvKiBUcnVuY2F0ZSB0YWJsZSB3aXRoIGNhc2NhZGUgKi8KKyAgICAgICAgdHJ1bmNhdGVf dGFibGVfY2FzY2FkZTogZnVuY3Rpb24oYXJncykgeworICAgICAgICAgICAgdmFyIHBhcmFtcyA9 IHsnY2FzY2FkZSc6IHRydWUgfTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tzLnRydW5jYXRl LmFwcGx5KHRoaXMsIFthcmdzLCBwYXJhbXNdKTsKKyAgICAgICAgfSwKKyAgICAgICAgdHJ1bmNh dGU6IGZ1bmN0aW9uKGFyZ3MsIHBhcmFtcykgeworICAgICAgICAgIHZhciBpbnB1dCA9IGFyZ3Mg fHwge307CisgICAgICAgICAgb2JqID0gdGhpcywKKyAgICAgICAgICB0ID0gcGdCcm93c2VyLnRy ZWUsCisgICAgICAgICAgaSA9IGlucHV0Lml0ZW0gfHwgdC5zZWxlY3RlZCgpLAorICAgICAgICAg IGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkOworCisg ICAgICAgICAgaWYgKCFkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg YWxlcnRpZnkuY29uZmlybSgKKyAgICAgICAgICAgIGdldHRleHQoJ1RydW5jYXRlIFRhYmxlJyks CisgICAgICAgICAgICBTKGdldHRleHQoJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB0cnVuY2F0 ZSB0YWJsZSAlcz8nKSkuc3ByaW50ZihkLmxhYmVsKS52YWx1ZSgpLAorICAgICAgICAgICAgZnVu Y3Rpb24gKGUpIHsKKyAgICAgICAgICAgIGlmIChlKSB7CisgICAgICAgICAgICAgIHZhciBkYXRh ID0gZDsKKyAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAgICB1cmw6IG9iai5n ZW5lcmF0ZV91cmwoaSwgJ3RydW5jYXRlJyAsIGQsIHRydWUpLAorICAgICAgICAgICAgICAgIHR5 cGU6J1BVVCcsCisgICAgICAgICAgICAgICAgZGF0YTogcGFyYW1zLAorICAgICAgICAgICAgICAg IGRhdGFUeXBlOiAianNvbiIsCisgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVz KSB7CisgICAgICAgICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgPT0gMSkgeworICAgICAgICAg ICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNzKCJ7eyBfKCciICsgcmVzLmluZm8gKyAiJykgfX0i KTsKKyAgICAgICAgICAgICAgICAgICAgdC5yZW1vdmVJY29uKGkpOworICAgICAgICAgICAgICAg ICAgICBkYXRhLmljb24gPSAnaWNvbi10YWJsZSc7CisgICAgICAgICAgICAgICAgICAgIHQuYWRk SWNvbihpLCB7aWNvbjogZGF0YS5pY29ufSk7CisgICAgICAgICAgICAgICAgICAgIHQudW5sb2Fk KGkpOworICAgICAgICAgICAgICAgICAgICB0LnNldElub2RlKGkpOworICAgICAgICAgICAgICAg ICAgICB0LmRlc2VsZWN0KGkpOworICAgICAgICAgICAgICAgICAgICAvLyBGZXRjaCB1cGRhdGVk IGRhdGEgZnJvbSBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICB0LnNlbGVjdChpKTsKKyAgICAgICAgICAgICAg ICAgICAgfSwgMTApOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisg ICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgeworICAg ICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGVyciA9ICQucGFy c2VKU09OKHhoci5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLnN1 Y2Nlc3MgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmVycm9yKGVyci5l cnJvcm1zZyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0gY2F0 Y2ggKGUpIHt9CisgICAgICAgICAgICAgICAgICB0LnVubG9hZChpKTsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfX0sCisgICAgICAgICAgICBmdW5j dGlvbigpIHt9CisgICAgICAgICAgKTsKKyAgICAgICAgfSwKKyAgICAgICAgcmVzZXRfdGFibGVf c3RhdHM6IGZ1bmN0aW9uKGFyZ3MpIHsKKyAgICAgICAgICB2YXIgaW5wdXQgPSBhcmdzIHx8IHt9 LAorICAgICAgICAgICAgb2JqID0gdGhpcywKKyAgICAgICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJl ZSwKKyAgICAgICAgICAgIGkgPSBpbnB1dC5pdGVtIHx8IHQuc2VsZWN0ZWQoKSwKKyAgICAgICAg ICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkOwor CisgICAgICAgICAgaWYgKCFkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg ICAgYWxlcnRpZnkuY29uZmlybSgKKyAgICAgICAgICAgIGdldHRleHQoJ1Jlc2V0IHN0YXRpc3Rp Y3MnKSwKKyAgICAgICAgICAgIFMoZ2V0dGV4dCgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJl c2V0IHRoZSBzdGF0aXN0aWNzIGZvciB0YWJsZSAlcz8nKSkuc3ByaW50ZihkLl9sYWJlbCkudmFs dWUoKSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIChlKSB7CisgICAgICAgICAgICAgIGlmIChlKSB7 CisgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBkOworICAgICAgICAgICAgICAgICQuYWpheCh7 CisgICAgICAgICAgICAgICAgICB1cmw6IG9iai5nZW5lcmF0ZV91cmwoaSwgJ3Jlc2V0JyAsIGQs IHRydWUpLAorICAgICAgICAgICAgICAgICAgdHlwZTonREVMRVRFJywKKyAgICAgICAgICAgICAg ICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVz LnN1Y2Nlc3MgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3Mo Int7IF8oJyIgKyByZXMuaW5mbyArICInKSB9fSIpOworICAgICAgICAgICAgICAgICAgICAgIHQu cmVtb3ZlSWNvbihpKTsKKyAgICAgICAgICAgICAgICAgICAgICBkYXRhLmljb24gPSAnaWNvbi10 YWJsZSc7CisgICAgICAgICAgICAgICAgICAgICAgdC5hZGRJY29uKGksIHtpY29uOiBkYXRhLmlj b259KTsKKyAgICAgICAgICAgICAgICAgICAgICB0LnVubG9hZChpKTsKKyAgICAgICAgICAgICAg ICAgICAgICB0LnNldElub2RlKGkpOworICAgICAgICAgICAgICAgICAgICAgIHQuZGVzZWxlY3Qo aSk7CisgICAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggdXBkYXRlZCBkYXRhIGZyb20gc2Vy dmVyCisgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHQuc2VsZWN0KGkpOworICAgICAgICAgICAgICAgICAgICAgIH0s IDEwKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0YXR1cywgZXJyb3IpIHsKKyAgICAg ICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyID0gJC5w YXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgaWYgKGVy ci5zdWNjZXNzID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmVycm9y KGVyci5lcnJvcm1zZyk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICB9IGNhdGNoIChlKSB7fQorICAgICAgICAgICAgICAgICAgICB0LnVubG9hZChpKTsKKyAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkge30KKyAgICAgICAgICApOwor ICAgICAgICB9LAorICAgICAgICBkZXRhY2hfcGFydGl0aW9uOiBmdW5jdGlvbihhcmdzKSB7Cisg ICAgICAgICAgdmFyIGlucHV0ID0gYXJncyB8fCB7fSwKKyAgICAgICAgICAgIG9iaiA9IHRoaXMs CisgICAgICAgICAgICB0ID0gcGdCcm93c2VyLnRyZWUsCisgICAgICAgICAgICBpID0gaW5wdXQu aXRlbSB8fCB0LnNlbGVjdGVkKCksCisgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAx ID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZDsKKworICAgICAgICAgIGlmICghZCkKKyAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgIGFsZXJ0aWZ5LmNvbmZpcm0oCisgICAg ICAgICAgICBnZXR0ZXh0KCdEZXRhY2ggUGFydGl0aW9uJyksCisgICAgICAgICAgICBTKGdldHRl eHQoJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZXRhY2ggdGhlIHBhcnRpdGlvbiAlcz8nKSku c3ByaW50ZihkLl9sYWJlbCkudmFsdWUoKSwKKyAgICAgICAgICAgIGZ1bmN0aW9uIChlKSB7Cisg ICAgICAgICAgICAgIGlmIChlKSB7CisgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBkOworICAg ICAgICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICAgICAgICB1cmw6IG9iai5nZW5lcmF0 ZV91cmwoaSwgJ2RldGFjaCcgLCBkLCB0cnVlKSwKKyAgICAgICAgICAgICAgICAgIHR5cGU6J1BV VCcsCisgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAg ICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAg ICBhbGVydGlmeS5zdWNjZXNzKCJ7eyBfKCciICsgcmVzLmluZm8gKyAiJykgfX0iKTsKKyAgICAg ICAgICAgICAgICAgICAgICB2YXIgbiA9IHQubmV4dChpKTsKKyAgICAgICAgICAgICAgICAgICAg ICBpZiAoIW4gfHwgIW4ubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5w cmV2KGkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuIHx8ICFuLmxlbmd0aCkgewor ICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5wYXJlbnQoaSk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgIHQuc2V0SW5vZGUobiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIHQucmVt b3ZlKGkpOworICAgICAgICAgICAgICAgICAgICAgIGlmIChuLmxlbmd0aCkgeworICAgICAgICAg ICAgICAgICAgICAgICAgdC5zZWxlY3Qobik7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg ICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgeworICAgICAgICAgICAgICAg ICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4 aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLnN1Y2Nlc3Mg PT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuZXJyb3IoZXJyLmVycm9y bXNnKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gY2F0 Y2ggKGUpIHt9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmdW5jdGlvbigpIHt9Cisg ICAgICAgICAgKTsKKyAgICAgICB9CisgICAgICB9LAorICAgICAgbW9kZWw6IHBnQnJvd3Nlci5O b2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAgbmFtZTog dW5kZWZpbmVkLAorICAgICAgICAgIG9pZDogdW5kZWZpbmVkLAorICAgICAgICAgIHNwY29pZDog dW5kZWZpbmVkLAorICAgICAgICAgIHNwY25hbWU6IHVuZGVmaW5lZCwKKyAgICAgICAgICByZWxv d25lcjogdW5kZWZpbmVkLAorICAgICAgICAgIHJlbGFjbDogdW5kZWZpbmVkLAorICAgICAgICAg IHJlbGhhc29pZHM6IHVuZGVmaW5lZCwKKyAgICAgICAgICByZWxoYXNzdWJjbGFzczogdW5kZWZp bmVkLAorICAgICAgICAgIHJlbHR1cGxlczogdW5kZWZpbmVkLAorICAgICAgICAgIGRlc2NyaXB0 aW9uOiB1bmRlZmluZWQsCisgICAgICAgICAgY29ubmFtZTogdW5kZWZpbmVkLAorICAgICAgICAg IGNvbmtleTogdW5kZWZpbmVkLAorICAgICAgICAgIGlzcmVwbDogdW5kZWZpbmVkLAorICAgICAg ICAgIHRyaWdnZXJjb3VudDogdW5kZWZpbmVkLAorICAgICAgICAgIHJlbHBlcnNpc3RlbmNlOiB1 bmRlZmluZWQsCisgICAgICAgICAgZmlsbGZhY3RvcjogdW5kZWZpbmVkLAorICAgICAgICAgIHJl bG9mdHlwZTogdW5kZWZpbmVkLAorICAgICAgICAgIHR5cG5hbWU6IHVuZGVmaW5lZCwKKyAgICAg ICAgICBsYWJlbHM6IHVuZGVmaW5lZCwKKyAgICAgICAgICBwcm92aWRlcnM6IHVuZGVmaW5lZCwK KyAgICAgICAgICBpc19zeXNfdGFibGU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb2xsX2luaGVy aXRzOiBbXSwKKyAgICAgICAgICBoYXN0b2FzdHRhYmxlOiB0cnVlLAorICAgICAgICAgIHRvYXN0 X2F1dG92YWN1dW1fZW5hYmxlZDogZmFsc2UsCisgICAgICAgICAgYXV0b3ZhY3V1bV9lbmFibGVk OiBmYWxzZSwKKyAgICAgICAgICBwcmltYXJ5X2tleTogW10sCisgICAgICAgICAgcGFydGl0aW9u czogW10sCisgICAgICAgICAgcGFydGl0aW9uX3R5cGU6ICdyYW5nZScsCisgICAgICAgICAgaXNf cGFydGl0aW9uZWQ6IGZhbHNlLAorICAgICAgICAgIHBhcnRpdGlvbl92YWx1ZTogdW5kZWZpbmVk CisgICAgICAgIH0sCisgICAgICAgIC8vIERlZmF1bHQgdmFsdWVzIQorICAgICAgICBpbml0aWFs aXplOiBmdW5jdGlvbihhdHRycywgYXJncykgeworICAgICAgICAgIHZhciBzZWxmID0gdGhpczsK KworICAgICAgICAgIGlmIChfLnNpemUoYXR0cnMpID09PSAwKSB7CisgICAgICAgICAgICB2YXIg dXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5vZGVfaW5mby5zZXJ2ZXIuX2lk XS51c2VyLAorICAgICAgICAgICAgICAgIHNjaGVtYUluZm8gPSBhcmdzLm5vZGVfaW5mby5zY2hl bWE7CisKKyAgICAgICAgICAgIHRoaXMuc2V0KHsKKyAgICAgICAgICAgICAgJ3JlbG93bmVyJzog dXNlckluZm8ubmFtZSwgJ3NjaGVtYSc6IHNjaGVtYUluZm8uX2xhYmVsCisgICAgICAgICAgICB9 LCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgfQorICAgICAgICAgIHBnQnJvd3Nlci5Ob2Rl Lk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisKKyAg ICAgICAgfSwKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVs OiBnZXR0ZXh0KCdOYW1lJyksIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBtb2RlOiBbJ3Byb3Bl cnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdvaWQnLCBsYWJlbDogZ2V0dGV4dCgnT0lEJyksIHR5cGU6ICd0 ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdy ZWxvd25lcicsIGxhYmVsOiBnZXR0ZXh0KCdPd25lcicpLCB0eXBlOiAndGV4dCcsIG5vZGU6ICdy b2xlJywKKyAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwg c2VsZWN0Mjoge2FsbG93Q2xlYXI6IGZhbHNlfSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2No ZW1hJywgY29udHJvbDogJ25vZGUtbGlzdC1ieS1uYW1lJworICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ3NjaGVtYScsIGxhYmVsOiBnZXR0ZXh0KCdTY2hlbWEnKSwgdHlwZTogJ3RleHQnLCBu b2RlOiAnc2NoZW1hJywKKyAgICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLCBt b2RlOiBbJ2NyZWF0ZScsICdlZGl0JywgJ3Byb3BlcnRpZXMnXSwKKyAgICAgICAgICBkaXNhYmxl ZDogJ2luU2NoZW1hJywgZmlsdGVyOiBmdW5jdGlvbihkKSB7CisgICAgICAgICAgICAvLyBJZiBz Y2hlbWEgbmFtZSBzdGFydCB3aXRoIHBnXyogdGhlbiB3ZSBuZWVkIHRvIGV4Y2x1ZGUgdGhlbQor ICAgICAgICAgICAgaWYoZCAmJiBkLmxhYmVsLm1hdGNoKC9ecGdfLykpCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgIH0sIGNhY2hlX25vZGU6ICdkYXRhYmFzZScsIGNhY2hl X2xldmVsOiAnZGF0YWJhc2UnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnc3BjbmFtZScs IGxhYmVsOiBnZXR0ZXh0KCdUYWJsZXNwYWNlJyksIG5vZGU6ICd0YWJsZXNwYWNlJywKKyAgICAg ICAgICB0eXBlOiAndGV4dCcsIGNvbnRyb2w6ICdub2RlLWxpc3QtYnktbmFtZScsIGRpc2FibGVk OiAnaW5TY2hlbWEnLAorICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAn ZWRpdCddLAorICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oZCkgeworICAgICAgICAgICAgLy8g SWYgdGFibGVzcGFjZSBuYW1lIGlzIG5vdCAicGdfZ2xvYmFsIiB0aGVuIHdlIG5lZWQgdG8gZXhj bHVkZSB0aGVtCisgICAgICAgICAgICByZXR1cm4gKCEoZCAmJiBkLmxhYmVsLm1hdGNoKC9wZ19n bG9iYWwvKSkpCisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3BhcnRp dGlvbicsIHR5cGU6ICdncm91cCcsIGxhYmVsOiBnZXR0ZXh0KCdQYXJ0aXRpb24nKSwKKyAgICAg ICAgICBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sIG1pbl92ZXJzaW9uOiAxMDAwMDAsCisgICAg ICAgICAgdmlzaWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgLy8gQWx3YXlzIHNob3cg aW4gY2FzZSBvZiBjcmVhdGUgbW9kZQorICAgICAgICAgICAgaWYgKG0uaXNOZXcoKSB8fCBtLmdl dCgnaXNfcGFydGl0aW9uZWQnKSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2lzX3BhcnRpdGlvbmVkJywgbGFiZWw6Z2V0dGV4dCgnUGFydGl0aW9uZWQgVGFibGU/Jyks IGNlbGw6ICdzd2l0Y2gnLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ3Byb3Bl cnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbiht KSB7CisgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykgJiYgIV8uaXNV bmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAgICAmJiAhXy5pc1VuZGVm aW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAgICAgbS5ub2Rl X2luZm8uc2VydmVyLnZlcnNpb24gPj0gMTAwMDAwKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0sCisgICAgICAgICAg ZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmICghbS5pc05ldygpKQorICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDog Z2V0dGV4dCgnQ29tbWVudCcpLCB0eXBlOiAnbXVsdGlsaW5lJywKKyAgICAgICAgICBtb2RlOiBb J3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAg ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgIGlkOiAncGFydGl0aW9uX3ZhbHVlJywgbGFi ZWw6Z2V0dGV4dCgnUGFydGl0aW9uIFNjaGVtZScpLAorICAgICAgICAgIHR5cGU6ICd0ZXh0Jywg dmlzaWJsZTogZmFsc2UKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjb2xsX2luaGVyaXRz JywgbGFiZWw6IGdldHRleHQoJ0luaGVyaXRlZCBmcm9tIHRhYmxlKHMpJyksCisgICAgICAgICAg dHlwZTogJ3RleHQnLCBncm91cDogZ2V0dGV4dCgnQWR2YW5jZWQnKSwgbW9kZTogWydwcm9wZXJ0 aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdDb2x1bW5zJywgdHlwZTogJ2dyb3Vw JywgbGFiZWw6IGdldHRleHQoJ0NvbHVtbnMnKSwKKyAgICAgICAgICBtb2RlOiBbJ2VkaXQnLCAn Y3JlYXRlJ10sIG1pbl92ZXJzaW9uOiAxMDAwMDAsCisgICAgICAgICAgdmlzaWJsZTogZnVuY3Rp b24obSkgeworICAgICAgICAgICAgLy8gQWx3YXlzIGhpZGUgaW4gY2FzZSBvZiBwYXJ0aXRpb24g dGFibGUuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICB9 LHsKKyAgICAgICAgICAvLyBUYWIgY29udHJvbCBmb3IgY29sdW1ucworICAgICAgICAgIGlkOiAn Y29sdW1ucycsIGxhYmVsOiBnZXR0ZXh0KCdDb2x1bW5zJyksIHR5cGU6ICdjb2xsZWN0aW9uJywK KyAgICAgICAgICBncm91cDogZ2V0dGV4dCgnQ29sdW1ucycpLAorICAgICAgICAgIG1vZGVsOiBw Z0Jyb3dzZXIuTm9kZXNbJ2NvbHVtbiddLm1vZGVsLAorICAgICAgICAgIHN1Ym5vZGU6IHBnQnJv d3Nlci5Ob2Rlc1snY29sdW1uJ10ubW9kZWwsCisgICAgICAgICAgbW9kZTogWydjcmVhdGUnLCAn ZWRpdCddLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAv LyBJbiBjYXNlIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHJlbW92ZSBpbmhlcml0ZWQgY29sdW1ucwor ICAgICAgICAgICAgaWYgKG0uaXNOZXcoKSAmJiBtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkgewor ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZh ciBjb2xsID0gbS5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgICAgICBjb2xsLnJlbW92ZShj b2xsLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAgICAgaWYgKF8uaXNV bmRlZmluZWQobW9kZWwuZ2V0KCdpbmhlcml0ZWRmcm9tJykpKQorICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg ICAgICAgICB9KSk7CisgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdjYXRhbG9nJyBpbiB0aGlzLm5vZGVfaW5m bykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg ICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICBk ZXBzOiBbJ3R5cG5hbWUnLCAnaXNfcGFydGl0aW9uZWQnXSwKKyAgICAgICAgICBjYW5BZGQ6ICdj aGVja19ncmlkX2FkZF9jb25kaXRpb24nLAorICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRl bGV0ZTogdHJ1ZSwKKyAgICAgICAgICAvLyBGb3IgZWFjaCByb3cgZWRpdC9kZWxldGUgYnV0dG9u IGVuYWJsZS9kaXNhYmxlCisgICAgICAgICAgY2FuRWRpdFJvdzogJ2NoZWNrX2dyaWRfcm93X2Vk aXRfZGVsZXRlJywKKyAgICAgICAgICBjYW5EZWxldGVSb3c6ICdjaGVja19ncmlkX3Jvd19lZGl0 X2RlbGV0ZScsCisgICAgICAgICAgdW5pcXVlQ29sIDogWyduYW1lJ10sCisgICAgICAgICAgY29s dW1ucyA6IFsnbmFtZScgLCAnY2x0eXBlJywgJ2F0dGxlbicsICdhdHRwcmVjaXNpb24nLCAnYXR0 bm90bnVsbCcsICdpc19wcmltYXJ5X2tleSddLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3Jt LlVuaXF1ZUNvbENvbGxlY3Rpb25Db250cm9sLmV4dGVuZCh7CisgICAgICAgICAgICBpbml0aWFs aXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgQmFja2Zvcm0uVW5pcXVlQ29sQ29sbGVj dGlvbkNvbnRyb2wucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsK KyAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgICAgICAgY29sbGVj dGlvbiA9IHNlbGYubW9kZWwuZ2V0KHNlbGYuZmllbGQuZ2V0KCduYW1lJykpOworCisgICAgICAg ICAgICAgIGNvbGxlY3Rpb24ub24oImNoYW5nZTppc19wcmltYXJ5X2tleSIsIGZ1bmN0aW9uKG0p IHsKKyAgICAgICAgICAgICAgICB2YXIgcHJpbWFyeV9rZXlfY29sbCA9IHNlbGYubW9kZWwuZ2V0 KCdwcmltYXJ5X2tleScpLAorICAgICAgICAgICAgICAgICAgICBjb2x1bW5fbmFtZSA9IG0uZ2V0 KCduYW1lJyksCisgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfa2V5OworCisgICAgICAgICAg ICAgICAgaWYobS5nZXQoJ2lzX3ByaW1hcnlfa2V5JykpIHsKKyAgICAgICAgICAgICAgICAvLyBB ZGQgY29sdW1uIHRvIHByaW1hcnkga2V5LgorICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlf a2V5X2NvbGwubGVuZ3RoIDwgMSkgeworICAgICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleSA9 IG5ldyAocHJpbWFyeV9rZXlfY29sbC5tb2RlbCkoe30sIHsKKyAgICAgICAgICAgICAgICAgICAg ICB0b3A6IHNlbGYubW9kZWwsCisgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbjogcHJp bWFyeV9rZXlfY29sbCwKKyAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBwcmltYXJ5X2tl eV9jb2xsCisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICBwcmlt YXJ5X2tleV9jb2xsLmFkZChwcmltYXJ5X2tleSk7CisgICAgICAgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleSA9IHByaW1hcnlfa2V5X2NvbGwuZmly c3QoKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBh bHRlciBleGlzdGluZyBwcmltYXJ5IGtleSBjb2x1bW5zLgorICAgICAgICAgICAgICAgICAgaWYg KF8uaXNVbmRlZmluZWQocHJpbWFyeV9rZXkuZ2V0KCdvaWQnKSkpIHsKKyAgICAgICAgICAgICAg ICAgICAgdmFyIHByaW1hcnlfa2V5X2NvbHVtbl9jb2xsID0gcHJpbWFyeV9rZXkuZ2V0KCdjb2x1 bW5zJyksCisgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlfY29sdW1uX2V4aXN0ID0g cHJpbWFyeV9rZXlfY29sdW1uX2NvbGwud2hlcmUoe2NvbHVtbjpjb2x1bW5fbmFtZX0pOworCisg ICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5X2tleV9jb2x1bW5fZXhpc3QubGVuZ3RoID09 IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJpbWFyeV9rZXlfY29sdW1uID0gbmV3 IChwcmltYXJ5X2tleV9jb2x1bW5fY29sbC5tb2RlbCkoCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHtjb2x1bW46IGNvbHVtbl9uYW1lfSwgeyBzaWxlbnQ6IHRydWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHRvcDogc2VsZi5tb2RlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg Y29sbGVjdGlvbjogcHJpbWFyeV9rZXlfY29sbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg aGFuZGxlcjogcHJpbWFyeV9rZXlfY29sbAorICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisK KyAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleV9jb2x1bW5fY29sbC5hZGQocHJpbWFy eV9rZXlfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg ICAgIHByaW1hcnlfa2V5X2NvbHVtbl9jb2xsLnRyaWdnZXIoJ3BnYWRtaW46bXVsdGljb2x1bW46 dXBkYXRlZCcsIHByaW1hcnlfa2V5X2NvbHVtbl9jb2xsKTsKKyAgICAgICAgICAgICAgICAgIH0K KworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGNv bHVtbiBmcm9tIHByaW1hcnkga2V5LgorICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlfa2V5 X2NvbGwubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgcHJpbWFyeV9rZXkg PSBwcmltYXJ5X2tleV9jb2xsLmZpcnN0KCk7CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG5v dCBhbHRlciBleGlzdGluZyBwcmltYXJ5IGtleSBjb2x1bW5zLgorICAgICAgICAgICAgICAgICAg ICBpZiAoIV8uaXNVbmRlZmluZWQocHJpbWFyeV9rZXkuZ2V0KCdvaWQnKSkpIHsKKyAgICAgICAg ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAgICAgICB2YXIgIHByaW1hcnlfa2V5X2NvbHVtbl9jb2xsID0gcHJpbWFyeV9rZXkuZ2V0 KCdjb2x1bW5zJyksCisgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkQ29scyA9IHByaW1h cnlfa2V5X2NvbHVtbl9jb2xsLndoZXJlKHtjb2x1bW46Y29sdW1uX25hbWV9KTsKKyAgICAgICAg ICAgICAgICAgICAgaWYgKHJlbW92ZWRDb2xzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAg ICAgICAgICBwcmltYXJ5X2tleV9jb2x1bW5fY29sbC5yZW1vdmUocmVtb3ZlZENvbHMpOworICAg ICAgICAgICAgICAgICAgICAgIF8uZWFjaChyZW1vdmVkQ29scywgZnVuY3Rpb24obSkgeworICAg ICAgICAgICAgICAgICAgICAgICAgbS5kZXN0cm95KCk7CisgICAgICAgICAgICAgICAgICAgICAg fSkKKyAgICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWFyeV9rZXlfY29sdW1uX2NvbGwubGVu Z3RoID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24g KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSB3aWxsIGJlIG9ubHkgb24g cHJpbWFyeSBrZXkgc28gcmVtb3ZlIHRoZSBmaXJzdCBvbmUuCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHByaW1hcnlfa2V5X2NvbGwucmVtb3ZlKHByaW1hcnlfa2V5X2NvbGwuZmlyc3QoKSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElkZWFsbHkgYWJvdmUgbGluZSBvZiBjb2Rl IHNob3VsZCBiZSAicHJpbWFyeV9rZXlfY29sbC5yZXNldCgpIi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICogQnV0IG91ciBjdXN0b20gRGF0YUNvbGxlY3Rpb24gKGV4dGVuZGVkIGZyb20g QmFja2JvbmUgY29sbGVjdGlvbiBpbiBkYXRhbW9kZWwuanMpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAqIGRvZXMgbm90IHJlc3BvbmQgdG8gcmVzZXQgZXZlbnQsIGl0IG9ubHkgc3VwcG9y dHMgYWRkLCByZW1vdmUsIGNoYW5nZSBldmVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAqIEFuZCBoZW5jZSBubyBjdXN0b20gZXZlbnQgbGlzdGVuZXJzL3ZhbGlkYXRvcnMgZ2V0IGNh bGxlZCBmb3IgcmVzZXQgZXZlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAg ICAgICAgICAgICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcmltYXJ5X2tleV9jb2x1 bW5fY29sbC50cmlnZ2VyKCdwZ2FkbWluOm11bHRpY29sdW1uOnVwZGF0ZWQnLCBwcmltYXJ5X2tl eV9jb2x1bW5fY29sbCk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHJlbW92ZTogZnVu Y3Rpb24oKSB7CisgICAgICAgICAgICAgIHZhciBjb2xsZWN0aW9uID0gdGhpcy5tb2RlbC5nZXQo dGhpcy5maWVsZC5nZXQoJ25hbWUnKSk7CisgICAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uKSB7 CisgICAgICAgICAgICAgICAgY29sbGVjdGlvbi5vZmYoImNoYW5nZTppc19wcmltYXJ5X2tleSIp OworICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgQmFja2Zvcm0uVW5pcXVlQ29sQ29s bGVjdGlvbkNvbnRyb2wucHJvdG90eXBlLnJlbW92ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor ICAgICAgICAgICAgfQorICAgICAgICAgIH0pLAorICAgICAgICAgIGFsbG93TXVsdGlwbGVFbXB0 eVJvdzogZmFsc2UKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdpbmhlcml0ZWRfdGFibGVz X2NudCcsIGxhYmVsOiBnZXR0ZXh0KCdJbmhlcml0ZWQgdGFibGVzIGNvdW50JyksCisgICAgICAg ICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwgZ3JvdXA6IGdldHRleHQoJ0Fk dmFuY2VkJyksCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSx7Cisg ICAgICAgICAgLy8gSGVyZSB3ZSB3aWxsIGNyZWF0ZSB0YWIgY29udHJvbCBmb3IgY29uc3RyYWlu dHMKKyAgICAgICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ3RhYicsIGdyb3VwOiBnZXR0 ZXh0KCdDb25zdHJhaW50cycpLAorICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwK KyAgICAgICAgICBzY2hlbWE6IFt7CisgICAgICAgICAgICAgIGlkOiAncHJpbWFyeV9rZXknLCBs YWJlbDogZ2V0dGV4dCgnUHJpbWFyeSBrZXknKSwKKyAgICAgICAgICAgICAgbW9kZWw6IHBnQnJv d3Nlci5Ob2Rlc1sncHJpbWFyeV9rZXknXS5tb2RlbCwKKyAgICAgICAgICAgICAgc3Vibm9kZTog cGdCcm93c2VyLk5vZGVzWydwcmltYXJ5X2tleSddLm1vZGVsLAorICAgICAgICAgICAgICBlZGl0 YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICAgICAgZ3JvdXA6IGdl dHRleHQoJ1ByaW1hcnkgS2V5JyksIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAg ICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBkZXBzOlsnaXNfcGFydGl0aW9u ZWQnXSwKKyAgICAgICAgICAgICAgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCisg ICAgICAgICAgICAgIGNvbHVtbnMgOiBbJ25hbWUnLCAnY29sdW1ucyddLAorICAgICAgICAgICAg ICBjYW5BZGQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgICBpZiAobS5nZXQoJ2lzX3Bh cnRpdGlvbmVkJykpIHsKKyAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7 CisgICAgICAgICAgICAgICAgICAgIHZhciBjb2xsID0gbS5nZXQoJ3ByaW1hcnlfa2V5Jyk7Cisg ICAgICAgICAgICAgICAgICAgIGNvbGwucmVtb3ZlKGNvbGwuZmlsdGVyKGZ1bmN0aW9uKG1vZGVs KSB7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg ICAgIH0pKTsKKyAgICAgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgY2FuQWRkUm93OiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICAgICAvLyBVc2VyIGNhbiBvbmx5IGFkZCBvbmUgcHJpbWFyeSBr ZXkKKyAgICAgICAgICAgICAgIHZhciBjb2x1bW5zID0gbS5nZXQoJ2NvbHVtbnMnKTsKKworICAg ICAgICAgICAgICAgcmV0dXJuIChtLmdldCgncHJpbWFyeV9rZXknKSAmJgorICAgICAgICAgICAg ICAgICAgICAgICAgbS5nZXQoJ3ByaW1hcnlfa2V5JykubGVuZ3RoIDwgMSAmJgorICAgICAgICAg ICAgICAgICAgICAgICAgXy5zb21lKGNvbHVtbnMucGx1Y2soJ25hbWUnKSkpOworICAgICAgICAg ICAgICB9CisgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgaWQ6ICdmb3JlaWduX2tleScs IGxhYmVsOiBnZXR0ZXh0KCdGb3JlaWduIGtleScpLAorICAgICAgICAgICAgICBtb2RlbDogcGdC cm93c2VyLk5vZGVzWydmb3JlaWduX2tleSddLm1vZGVsLAorICAgICAgICAgICAgICBzdWJub2Rl OiBwZ0Jyb3dzZXIuTm9kZXNbJ2ZvcmVpZ25fa2V5J10ubW9kZWwsCisgICAgICAgICAgICAgIGVk aXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgICAgICBncm91cDog Z2V0dGV4dCgnRm9yZWlnbiBLZXknKSwgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAg ICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGRlcHM6Wydpc19wYXJ0aXRp b25lZCddLAorICAgICAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywK KyAgICAgICAgICAgICAgY2FuQWRkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgaWYg KG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0 KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgY29sbCA9IG0uZ2V0KCdmb3Jl aWduX2tleScpOworICAgICAgICAgICAgICAgICAgICBjb2xsLnJlbW92ZShjb2xsLmZpbHRlcihm dW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIGNvbHVt bnMgOiBbJ25hbWUnLCAnY29sdW1ucyddLAorICAgICAgICAgICAgICBjYW5BZGRSb3c6IGZ1bmN0 aW9uKG0pIHsKKyAgICAgICAgICAgICAgIC8vIFVzZXIgY2FuIG9ubHkgYWRkIGlmIHRoZXJlIGlz IGF0IGxlYXN0IG9uZSBjb2x1bW4gd2l0aCBuYW1lLgorICAgICAgICAgICAgICAgdmFyIGNvbHVt bnMgPSBtLmdldCgnY29sdW1ucycpOworICAgICAgICAgICAgICAgcmV0dXJuIF8uc29tZShjb2x1 bW5zLnBsdWNrKCduYW1lJykpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LHsKKyAg ICAgICAgICAgICAgaWQ6ICdjaGVja19jb25zdHJhaW50JywgbGFiZWw6IGdldHRleHQoJ0NoZWNr IGNvbnN0cmFpbnQnKSwKKyAgICAgICAgICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2Rlc1snY2hl Y2tfY29uc3RyYWludHMnXS5tb2RlbCwKKyAgICAgICAgICAgICAgc3Vibm9kZTogcGdCcm93c2Vy Lk5vZGVzWydjaGVja19jb25zdHJhaW50cyddLm1vZGVsLAorICAgICAgICAgICAgICBlZGl0YWJs ZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICAgICAgZ3JvdXA6IGdldHRl eHQoJ0NoZWNrJyksIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICAgICAgY2Fu RWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLCBkZXBzOlsnaXNfcGFydGl0aW9uZWQnXSwKKyAg ICAgICAgICAgICAgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCisgICAgICAgICAg ICAgIGNhbkFkZDogdHJ1ZSwKKyAgICAgICAgICAgICAgY29sdW1ucyA6IFsnbmFtZScsICdjb25z cmMnXQorICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgIGlkOiAndW5pcXVlX2NvbnN0cmFp bnQnLCBsYWJlbDogZ2V0dGV4dCgnVW5pcXVlIENvbnN0cmFpbnQnKSwKKyAgICAgICAgICAgICAg bW9kZWw6IHBnQnJvd3Nlci5Ob2Rlc1sndW5pcXVlX2NvbnN0cmFpbnQnXS5tb2RlbCwKKyAgICAg ICAgICAgICAgc3Vibm9kZTogcGdCcm93c2VyLk5vZGVzWyd1bmlxdWVfY29uc3RyYWludCddLm1v ZGVsLAorICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywK KyAgICAgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ1VuaXF1ZScpLCBtb2RlOiBbJ2VkaXQnLCAn Y3JlYXRlJ10sCisgICAgICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwg ZGVwczpbJ2lzX3BhcnRpdGlvbmVkJ10sCisgICAgICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUt Y29sLWNvbGxlY3Rpb24nLAorICAgICAgICAgICAgICBjb2x1bW5zIDogWyduYW1lJywgJ2NvbHVt bnMnXSwKKyAgICAgICAgICAgICAgY2FuQWRkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAg ICAgaWYgKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAgICAgICAgICAgICAgICBzZXRU aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgY29sbCA9IG0uZ2V0 KCd1bmlxdWVfY29uc3RyYWludCcpOworICAgICAgICAgICAgICAgICAgICBjb2xsLnJlbW92ZShj b2xsLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgICAgICB9LCAx MCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQor CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICAgIGNhbkFkZFJvdzogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICAgLy8gVXNlciBj YW4gb25seSBhZGQgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNvbHVtbiB3aXRoIG5hbWUuCisg ICAgICAgICAgICAgICB2YXIgY29sdW1ucyA9IG0uZ2V0KCdjb2x1bW5zJyk7CisgICAgICAgICAg ICAgICByZXR1cm4gXy5zb21lKGNvbHVtbnMucGx1Y2soJ25hbWUnKSk7CisgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0seworICAgICAgICAgICAgICBpZDogJ2V4Y2x1ZGVfY29uc3RyYWlu dCcsIGxhYmVsOiBnZXR0ZXh0KCdFeGNsdWRlIGNvbnN0cmFpbnQnKSwKKyAgICAgICAgICAgICAg bW9kZWw6IHBnQnJvd3Nlci5Ob2Rlc1snZXhjbHVzaW9uX2NvbnN0cmFpbnQnXS5tb2RlbCwKKyAg ICAgICAgICAgICAgc3Vibm9kZTogcGdCcm93c2VyLk5vZGVzWydleGNsdXNpb25fY29uc3RyYWlu dCddLm1vZGVsLAorICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0 aW9uJywKKyAgICAgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0V4Y2x1ZGUnKSwgbW9kZTogWydl ZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6 IHRydWUsIGRlcHM6Wydpc19wYXJ0aXRpb25lZCddLAorICAgICAgICAgICAgICBjb250cm9sOiAn dW5pcXVlLWNvbC1jb2xsZWN0aW9uJywKKyAgICAgICAgICAgICAgY29sdW1ucyA6IFsnbmFtZScs ICdjb2x1bW5zJywgJ2NvbnN0cmFpbnQnXSwKKyAgICAgICAgICAgICAgY2FuQWRkOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICAgICAgaWYgKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7Cisg ICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg ICAgICB2YXIgY29sbCA9IG0uZ2V0KCdleGNsdWRlX2NvbnN0cmFpbnQnKTsKKyAgICAgICAgICAg ICAgICAgICAgY29sbC5yZW1vdmUoY29sbC5maWx0ZXIoZnVuY3Rpb24obW9kZWwpIHsKKyAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSkpOwor ICAgICAgICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgICB9LAorICAgICAgICAgICAgICBjYW5BZGRSb3c6IGZ1bmN0aW9uKG0pIHsKKyAg ICAgICAgICAgICAgIC8vIFVzZXIgY2FuIG9ubHkgYWRkIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9u ZSBjb2x1bW4gd2l0aCBuYW1lLgorICAgICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSBtLmdldCgn Y29sdW1ucycpOworICAgICAgICAgICAgICAgcmV0dXJuIF8uc29tZShjb2x1bW5zLnBsdWNrKCdu YW1lJykpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfV0KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICd0eXBuYW1lJywgbGFiZWw6IGdldHRleHQoJ09mIHR5cGUnKSwgdHlwZTogJ3Rl eHQnLAorICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIG1vZGU6IFsncHJv cGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgIGRpc2FibGVkOiAnY2hlY2tP ZlR5cGUnLCB1cmw6ICdnZXRfb2Z0eXBlJywgZ3JvdXA6IGdldHRleHQoJ0FkdmFuY2VkJyksCisg ICAgICAgICAgZGVwczogWydjb2xsX2luaGVyaXRzJywgJ2lzX3BhcnRpdGlvbmVkJ10sIHRyYW5z Zm9ybTogZnVuY3Rpb24oZGF0YSwgY2VsbCkgeworICAgICAgICAgICAgdmFyIGNvbnRyb2wgPSBj ZWxsIHx8IHRoaXMsCisgICAgICAgICAgICAgIG0gPSBjb250cm9sLm1vZGVsOworICAgICAgICAg ICAgICBtLm9mX3R5cGVzX3RhYmxlcyA9IGRhdGE7CisgICAgICAgICAgICAgIHJldHVybiBkYXRh OworICAgICAgICAgIH0sCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uTm9kZUFqYXhPcHRp b25zQ29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgICAvLyBXaGVuIG9mX3R5cGVzIGNoYW5n ZXMgd2UgbmVlZCB0byBjbGVhciBjb2x1bW5zIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAgb25D aGFuZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIEJhY2tmb3JtLk5vZGVBamF4T3B0 aW9uc0NvbnRyb2wucHJvdG90eXBlLm9uQ2hhbmdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cisg ICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgICAgICAgdGJsX29p ZCA9IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgIHRibF9uYW1lID0gc2VsZi5tb2RlbC5n ZXQoJ3R5cG5hbWUnKSwKKyAgICAgICAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQsCisgICAg ICAgICAgICAgICAgICBhcmcgPSB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICBjb2x1bW5f Y29sbGVjdGlvbiA9IHNlbGYubW9kZWwuZ2V0KCdjb2x1bW5zJyk7CisKKyAgICAgICAgICAgICAg ICBpZiAoIV8uaXNVbmRlZmluZWQodGJsX25hbWUpICYmCisgICAgICAgICAgICAgICAgICAgIHRi bF9uYW1lICE9PSAnJyAmJiBjb2x1bW5fY29sbGVjdGlvbi5sZW5ndGggIT09IDApIHsKKyAgICAg ICAgICAgICAgICAgIHZhciBtc2cgPSBnZXR0ZXh0KCdDaGFuZ2luZyBvZiB0eXBlIHRhYmxlIHdp bGwgY2xlYXIgY29sdW1ucyBjb2xsZWN0aW9uJyk7CisgICAgICAgICAgICAgICAgICBhbGVydGlm eS5jb25maXJtKG1zZywgZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGUp IHsKKyAgICAgICAgICAgICAgICAgICAgICAvLyBVc2VyIGNsaWNrcyBPaywgbGV0cyBjbGVhciBj b2x1bW5zIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fY29sbGVjdGlv bi5yZXNldCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKHRibF9u YW1lKSAmJiB0YmxfbmFtZSA9PT0gJycpIHsKKyAgICAgICAgICAgICAgICAgIGNvbHVtbl9jb2xs ZWN0aW9uLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8g UnVuIEFqYXggbm93IHRvIGZldGNoIGNvbHVtbnMKKyAgICAgICAgICAgICAgICBpZiAoIV8uaXNV bmRlZmluZWQodGJsX25hbWUpICYmIHRibF9uYW1lICE9PSAnJykgeworICAgICAgICAgICAgICAg ICAgYXJnID0geyAndG5hbWUnOiB0YmxfbmFtZSB9CisgICAgICAgICAgICAgICAgICBkYXRhID0g c2VsZi5tb2RlbC5mZXRjaF9jb2x1bW5zX2FqYXguYXBwbHkoc2VsZiwgW2FyZ10pOworICAgICAg ICAgICAgICAgICAgLy8gQWRkIGludG8gY29sdW1uIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAg ICAgIGNvbHVtbl9jb2xsZWN0aW9uLnNldChkYXRhLCB7IG1lcmdlOmZhbHNlLHJlbW92ZTpmYWxz ZSB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0p CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnZmlsbGZhY3RvcicsIGxhYmVsOiBnZXR0ZXh0 KCdGaWxsIGZhY3RvcicpLCB0eXBlOiAnaW50JywKKyAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScs ICdlZGl0J10sIG1pbjogMTAsIG1heDogMTAwLAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hl bWEnLGdyb3VwOiBnZXR0ZXh0KCdBZHZhbmNlZCcpCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAncmVsaGFzb2lkcycsIGxhYmVsOiBnZXR0ZXh0KCdIYXMgT0lEcz8nKSwgY2VsbDogJ3N3aXRj aCcsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVh dGUnLCAnZWRpdCddLAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnLCBncm91cDogZ2V0 dGV4dCgnQWR2YW5jZWQnKQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3JlbHBlcnNpc3Rl bmNlJywgbGFiZWw6IGdldHRleHQoJ1VubG9nZ2VkPycpLCBjZWxsOiAnc3dpdGNoJywKKyAgICAg ICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0 J10sCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJywKKyAgICAg ICAgICBncm91cDogZ2V0dGV4dCgnQWR2YW5jZWQnKQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2Nvbm5hbWUnLCBsYWJlbDogZ2V0dGV4dCgnUHJpbWFyeSBrZXknKSwgY2VsbDogJ3N0cmlu ZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwgZ3JvdXA6 IGdldHRleHQoJ0FkdmFuY2VkJyksCisgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScKKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdyZWx0dXBsZXMnLCBsYWJlbDogZ2V0dGV4dCgnUm93 cyAoZXN0aW1hdGVkKScpLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcs IG1vZGU6IFsncHJvcGVydGllcyddLCBncm91cDogZ2V0dGV4dCgnQWR2YW5jZWQnKSwKKyAgICAg ICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3Jv d3NfY250JywgbGFiZWw6IGdldHRleHQoJ1Jvd3MgKGNvdW50ZWQpJyksIGNlbGw6ICdzdHJpbmcn LAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sIGdyb3VwOiBn ZXR0ZXh0KCdBZHZhbmNlZCcpLAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAncmVsaGFzc3ViY2xhc3MnLCBsYWJlbDogZ2V0dGV4dCgn SW5oZXJpdHMgdGFibGVzPycpLCBjZWxsOiAnc3dpdGNoJywKKyAgICAgICAgICB0eXBlOiAnc3dp dGNoJywgbW9kZTogWydwcm9wZXJ0aWVzJ10sIGdyb3VwOiBnZXR0ZXh0KCdBZHZhbmNlZCcpLAor ICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnaXNfc3lzX3RhYmxlJywgbGFiZWw6IGdldHRleHQoJ1N5c3RlbSB0YWJsZT8nKSwgY2VsbDog J3N3aXRjaCcsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsncHJvcGVydGllcydd LAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnCisgICAgICAgIH0seworICAgICAgICAg IHR5cGU6ICduZXN0ZWQnLCBjb250cm9sOiAnZmllbGRzZXQnLCBsYWJlbDogZ2V0dGV4dCgnTGlr ZScpLAorICAgICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdBZHZhbmNlZCcpLAorICAgICAgICAgIHNj aGVtYTpbeworICAgICAgICAgICAgaWQ6ICdsaWtlX3JlbGF0aW9uJywgbGFiZWw6IGdldHRleHQo J1JlbGF0aW9uJyksCisgICAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsnY3JlYXRlJywg J2VkaXQnXSwgZGVwczogWyd0eXBuYW1lJ10sCisgICAgICAgICAgICBjb250cm9sOiAnbm9kZS1h amF4LW9wdGlvbnMnLCB1cmw6ICdnZXRfcmVsYXRpb25zJywKKyAgICAgICAgICAgIGRpc2FibGVk OiAnaXNMaWtlRGlzYWJsZScsIGdyb3VwOiBnZXR0ZXh0KCdMaWtlJykKKyAgICAgICAgICB9LHsK KyAgICAgICAgICAgIGlkOiAnbGlrZV9kZWZhdWx0X3ZhbHVlJywgbGFiZWw6IGdldHRleHQoJ1dp dGggZGVmYXVsdCB2YWx1ZXM/JyksCisgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTog WydjcmVhdGUnLCAnZWRpdCddLCBkZXBzOiBbJ3R5cG5hbWUnXSwKKyAgICAgICAgICAgIGRpc2Fi bGVkOiAnaXNMaWtlRGlzYWJsZScsIGdyb3VwOiBnZXR0ZXh0KCdMaWtlJykKKyAgICAgICAgICB9 LHsKKyAgICAgICAgICAgIGlkOiAnbGlrZV9jb25zdHJhaW50cycsIGxhYmVsOiBnZXR0ZXh0KCdX aXRoIGNvbnN0cmFpbnRzPycpLAorICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsIG1vZGU6IFsn Y3JlYXRlJywgJ2VkaXQnXSwgZGVwczogWyd0eXBuYW1lJ10sCisgICAgICAgICAgICBkaXNhYmxl ZDogJ2lzTGlrZURpc2FibGUnLCBncm91cDogZ2V0dGV4dCgnTGlrZScpCisgICAgICAgICAgfSx7 CisgICAgICAgICAgICBpZDogJ2xpa2VfaW5kZXhlcycsIGxhYmVsOiBnZXR0ZXh0KCdXaXRoIGlu ZGV4ZXM/JyksCisgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydjcmVhdGUnLCAn ZWRpdCddLCBkZXBzOiBbJ3R5cG5hbWUnXSwKKyAgICAgICAgICAgIGRpc2FibGVkOiAnaXNMaWtl RGlzYWJsZScsIGdyb3VwOiBnZXR0ZXh0KCdMaWtlJykKKyAgICAgICAgICB9LHsKKyAgICAgICAg ICAgIGlkOiAnbGlrZV9zdG9yYWdlJywgbGFiZWw6IGdldHRleHQoJ1dpdGggc3RvcmFnZT8nKSwK KyAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sIGRl cHM6IFsndHlwbmFtZSddLAorICAgICAgICAgICAgZGlzYWJsZWQ6ICdpc0xpa2VEaXNhYmxlJywg Z3JvdXA6IGdldHRleHQoJ0xpa2UnKQorICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICds aWtlX2NvbW1lbnRzJywgbGFiZWw6IGdldHRleHQoJ1dpdGggY29tbWVudHM/JyksCisgICAgICAg ICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydjcmVhdGUnLCAnZWRpdCddLCBkZXBzOiBbJ3R5 cG5hbWUnXSwKKyAgICAgICAgICAgIGRpc2FibGVkOiAnaXNMaWtlRGlzYWJsZScsIGdyb3VwOiBn ZXR0ZXh0KCdMaWtlJykKKyAgICAgICAgICB9XQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J3BhcnRpdGlvbl90eXBlJywgbGFiZWw6Z2V0dGV4dCgnUGFydGl0aW9uIFR5cGUnKSwKKyAgICAg ICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdzZWxlY3QyJywgc2VsZWN0Mjoge2FsbG93Q2xl YXI6IGZhbHNlfSwKKyAgICAgICAgICBncm91cDogJ3BhcnRpdGlvbicsIGRlcHM6IFsnaXNfcGFy dGl0aW9uZWQnXSwKKyAgICAgICAgICBvcHRpb25zOlt7CisgICAgICAgICAgICBsYWJlbDogJ1Jh bmdlJywgdmFsdWU6ICdyYW5nZScKKyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGxhYmVsOiAn TGlzdCcsIHZhbHVlOiAnbGlzdCcKKyAgICAgICAgICB9XSwKKyAgICAgICAgICBtb2RlOlsnY3Jl YXRlJ10sCisgICAgICAgICAgdmlzaWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYo IV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8pICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZv LnNlcnZlcikKKyAgICAgICAgICAgICAgJiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2Vy dmVyLnZlcnNpb24pICYmCisgICAgICAgICAgICAgIG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9u ID49IDEwMDAwMCkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICB9LAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbiht KSB7CisgICAgICAgICAgICBpZiAoIW0uaXNOZXcoKSB8fCAhbS5nZXQoJ2lzX3BhcnRpdGlvbmVk JykpCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdwYXJ0aXRpb25fa2V5 cycsIGxhYmVsOmdldHRleHQoJ1BhcnRpdGlvbiBLZXlzJyksCisgICAgICAgICAgbW9kZWw6IEJh Y2tmb3JtLlBhcnRpdGlvbktleU1vZGVsLAorICAgICAgICAgIHN1Ym5vZGU6IEJhY2tmb3JtLlBh cnRpdGlvbktleU1vZGVsLAorICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLCB0eXBlOiAnY29sbGVj dGlvbicsCisgICAgICAgICAgZ3JvdXA6ICdwYXJ0aXRpb24nLCBtb2RlOiBbJ2NyZWF0ZSddLAor ICAgICAgICAgIGRlcHM6IFsnaXNfcGFydGl0aW9uZWQnLCAncGFydGl0aW9uX3R5cGUnXSwKKyAg ICAgICAgICBjYW5FZGl0OiBmYWxzZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgIGNvbnRy b2w6ICdzdWItbm9kZS1jb2xsZWN0aW9uJywKKyAgICAgICAgICBjYW5BZGQ6IGZ1bmN0aW9uKG0p IHsKKyAgICAgICAgICAgIGlmIChtLmlzTmV3KCkgJiYgbS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykp CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICAgICAgIH0sCisgICAgICAgICAgY2FuQWRkUm93OiBmdW5jdGlvbihtKSB7CisgICAgICAg ICAgICB2YXIgY29sdW1ucyA9IG0uZ2V0KCdjb2x1bW5zJyk7CisgICAgICAgICAgICB2YXIgbWF4 X3Jvd19jb3VudCA9IDEwMDA7CisKKyAgICAgICAgICAgIGlmIChtLmdldCgncGFydGl0aW9uX3R5 cGUnKSAmJiBtLmdldCgncGFydGl0aW9uX3R5cGUnKSA9PSAnbGlzdCcpCisgICAgICAgICAgICAg IG1heF9yb3dfY291bnQgPSAxOworCisgICAgICAgICAgICByZXR1cm4gKG0uZ2V0KCdwYXJ0aXRp b25fa2V5cycpICYmCisgICAgICAgICAgICAgICAgbS5nZXQoJ3BhcnRpdGlvbl9rZXlzJykubGVu Z3RoIDwgbWF4X3Jvd19jb3VudCAmJgorICAgICAgICAgICAgICAgIF8uc29tZShjb2x1bW5zLnBs dWNrKCduYW1lJykpCisgICAgICAgICAgICApOworICAgICAgICAgIH0sCisgICAgICAgICAgdmlz aWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQobS5ub2Rl X2luZm8pICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlcikKKyAgICAgICAgICAg ICAgJiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24pICYmCisgICAg ICAgICAgICAgIG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uID49IDEwMDAwMCkKKyAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg ICB9LAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZiAo bS5nZXQoJ3BhcnRpdGlvbl9rZXlzJykgJiYgbS5nZXQoJ3BhcnRpdGlvbl9rZXlzJykubW9kZWxz Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Cisg ICAgICAgICAgICAgICAgdmFyIGNvbGwgPSBtLmdldCgncGFydGl0aW9uX2tleXMnKTsKKyAgICAg ICAgICAgICAgICBjb2xsLnJlbW92ZShjb2xsLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeworICAg ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfSkpOworICAgICAg ICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ3BhcnRpdGlvbl9zY2hlbWUnLCBsYWJlbDogZ2V0dGV4dCgnUGFydGl0 aW9uIFNjaGVtZScpLAorICAgICAgICAgIHR5cGU6ICdub3RlJywgZ3JvdXA6ICdwYXJ0aXRpb24n LCBtb2RlOiBbJ2VkaXQnXSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykgJiYgIV8uaXNVbmRlZmluZWQo bS5ub2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAgICAmJiAhXy5pc1VuZGVmaW5lZChtLm5v ZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAgICAgbS5ub2RlX2luZm8uc2Vy dmVyLnZlcnNpb24gPj0gMTAwMDAwKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0sCisgICAgICAgICAgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmICghbS5pc05ldygpKSB7CisgICAgICAgICAg ICAgIHRoaXMudGV4dCA9IG0uZ2V0KCdwYXJ0aXRpb25fc2NoZW1lJyk7CisgICAgICAgICAgICB9 CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3BhcnRpdGlvbnMnLCBs YWJlbDpnZXR0ZXh0KCdQYXJ0aXRpb25zJyksCisgICAgICAgICAgbW9kZWw6IEJhY2tmb3JtLlBh cnRpdGlvbnNNb2RlbCwKKyAgICAgICAgICBzdWJub2RlOiBCYWNrZm9ybS5QYXJ0aXRpb25zTW9k ZWwsCisgICAgICAgICAgZWRpdGFibGU6IHRydWUsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAg ICAgICBncm91cDogJ3BhcnRpdGlvbicsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAg ICAgICBkZXBzOiBbJ2lzX3BhcnRpdGlvbmVkJywgJ3BhcnRpdGlvbl90eXBlJ10sCisgICAgICAg ICAgY2FuRWRpdDogZmFsc2UsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICBjdXN0b21EZWxl dGVUaXRsZTogZ2V0dGV4dCgnRGV0YWNoIFBhcnRpdGlvbicpLAorICAgICAgICAgIGN1c3RvbURl bGV0ZU1zZzogZ2V0dGV4dCgnQXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGRldGFjaCB0aGlzIHBh cnRpdGlvbj8nKSwKKyAgICAgICAgICBjb2x1bW5zOlsnaXNfYXR0YWNoJywgJ3BhcnRpdGlvbl9u YW1lJywgJ3ZhbHVlc19mcm9tJywgJ3ZhbHVlc190bycsICd2YWx1ZXNfaW4nXSwKKyAgICAgICAg ICBjb250cm9sOiBCYWNrZm9ybS5TdWJOb2RlQ29sbGVjdGlvbkNvbnRyb2wuZXh0ZW5kKHsKKyAg ICAgICAgICAgIHJvdzogQmFja2dyaWQuUGFydGl0aW9uUm93LAorICAgICAgICAgICAgaW5pdGlh bGl6ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIEJhY2tmb3JtLlN1Yk5vZGVDb2xsZWN0 aW9uQ29udHJvbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor ICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICAgIGlmICghdGhpcy5t b2RlbC5pc05ldygpKSB7CisgICAgICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmZpZWxkLmdl dCgnc2NoZW1hX25vZGUnKSwKKyAgICAgICAgICAgICAgICAgICAgbm9kZV9pbmZvID0gdGhpcy5m aWVsZC5nZXQoJ25vZGVfaW5mbycpOworCisgICAgICAgICAgICAgICAgLy8gTWFrZSBhamF4IGNh bGwgdG8gZ2V0IHRoZSB0YWJsZXMgdG8gYmUgYXR0YWNoZWQKKyAgICAgICAgICAgICAgICAkLmFq YXgoeworICAgICAgICAgICAgICAgICAgdXJsOiBub2RlLmdlbmVyYXRlX3VybC5hcHBseSgKKyAg ICAgICAgICAgICAgICAgICAgICBub2RlLCBbCisgICAgICAgICAgICAgICAgICAgICAgICBudWxs LCAnZ2V0X2F0dGFjaF90YWJsZXMnLCB0aGlzLmZpZWxkLmdldCgnbm9kZV9kYXRhJyksCisgICAg ICAgICAgICAgICAgICAgICAgICB0cnVlLCBub2RlX2luZm8KKyAgICAgICAgICAgICAgICAgICAg ICBdKSwKKworICAgICAgICAgICAgICAgICAgdHlwZTogJ0dFVCcsCisgICAgICAgICAgICAgICAg ICBhc3luYzogZmFsc2UsCisgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMp IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzID09IDEpIHsKKyAgICAgICAg ICAgICAgICAgICAgICBzZWxmLm1vZGVsLnRhYmxlX29wdGlvbnMgPSByZXMuZGF0YTsKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg ICAgICAgICAgICBhbGVydGlmeS5hbGVydCgKKyAgICAgICAgICAgICAgICAgICAgICAgICdFcnJv ciBmZXRjaGluZyB0YWJsZXMgdG8gYmUgYXR0YWNoZWQnLCByZXMuZGF0YS5yZXN1bHQKKyAgICAg ICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICB9LAorICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAg ICAgICAgICAgICAgdmFyIGVycm1zZyA9ICQucGFyc2VKU09OKGUucmVzcG9uc2VUZXh0KTsKKyAg ICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoJ0Vycm9yIGZldGNoaW5nIHRhYmxlcyB0 byBiZSBhdHRhY2hlZC4nLCBlcnJtc2cuZXJyb3Jtc2cpOworICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg ICAgICAgfQorICAgICAgICAgICksCisgICAgICAgICAgY2FuQWRkOiBmdW5jdGlvbihtKSB7Cisg ICAgICAgICAgICBpZiAobS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpCisgICAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0sCisgICAg ICAgICAgdmlzaWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmlu ZWQobS5ub2RlX2luZm8pICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlcikKKyAg ICAgICAgICAgICAgJiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24p ICYmCisgICAgICAgICAgICAgIG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uID49IDEwMDAwMCkK KyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgICAgICB9LAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAg ICAgICBpZiAobS5pc05ldygpICYmIG0uZ2V0KCdwYXJ0aXRpb25zJykgJiYgbS5nZXQoJ3BhcnRp dGlvbnMnKS5tb2RlbHMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1 bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29sbCA9IG0uZ2V0KCdwYXJ0aXRpb25z Jyk7CisgICAgICAgICAgICAgICAgY29sbC5yZW1vdmUoY29sbC5maWx0ZXIoZnVuY3Rpb24obW9k ZWwpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0p KTsKKyAgICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdwYXJ0aXRpb25fbm90ZScsIGxhYmVsOiBnZXR0ZXh0 KCdQYXJ0aXRpb24nKSwKKyAgICAgICAgICB0eXBlOiAnbm90ZScsIGdyb3VwOiAncGFydGl0aW9u JywKKyAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdBYm92ZSBjb250cm9sIHdpbGwgYmUgdXNlZCB0 byBDcmVhdGUvQXR0YWNoL0RldGFjaCBwYXJ0aXRpb25zLjxicj4nICsKKyAgICAgICAgICAgICc8 dWw+PGxpPkNyZWF0ZSBNb2RlOiBVc2VyIHdpbGwgYmUgYWJsZSB0byBjcmVhdGUgTiBudW1iZXIg b2YgcGFydGl0aW9ucy4gTW9kZSBzd2l0Y2ggY29udHJvbCBpcyBkaXNhYmxlZCBpbiB0aGlzIHNj ZW5hcmlvLjwvbGk+JyArCisgICAgICAgICAgICAnPGxpPkVkaXQgTW9kZTogVXNlciB3aWxsIGJl IGFibGUgdG8gY3JlYXRlL2F0dGFjaC9kZXRhY2ggTiBudW1iZXIgb2YgcGFydGl0aW9ucy4nICsK KyAgICAgICAgICAgICdJbiBhdHRhY2ggbW9kZSB0aGVyZSB3aWxsIGJlIGxpc3Qgb2Ygc3VpdGFi bGUgdGFibGVzIHRvIGJlIGF0dGFjaGVkLjwvbGk+PC91bD4nKSwKKyAgICAgICAgICB2aXNpYmxl OiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5m bykgJiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAgICAm JiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAg ICAgICAgbS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPj0gMTAwMDAwKQorICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0K KyAgICAgICAgfSx7CisgICAgICAgICAgLy8gSGVyZSAtIHdlIHdpbGwgY3JlYXRlIHRhYiBjb250 cm9sIGZvciBzdG9yYWdlIHBhcmFtZXRlcnMKKyAgICAgICAgICAvLyAoYXV0byB2YWN1dW0pLgor ICAgICAgICAgIHR5cGU6ICduZXN0ZWQnLCBjb250cm9sOiAndGFiJywgZ3JvdXA6IGdldHRleHQo J1BhcmFtZXRlcicpLAorICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwgZGVwczog Wydpc19wYXJ0aXRpb25lZCddLAorICAgICAgICAgIHNjaGVtYTogQmFja2Zvcm0uVmFjdXVtU2V0 dGluZ3NTY2hlbWEKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdyZWxhY2xfc3RyJywgbGFi ZWw6IGdldHRleHQoJ1ByaXZpbGVnZXMnKSwgZGlzYWJsZWQ6ICdpblNjaGVtYScsCisgICAgICAg ICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwgZ3JvdXA6IGdldHRleHQoJ1Nl Y3VyaXR5JykKKyAgICAgICAgfSwgcGdCcm93c2VyLlNlY3VyaXR5R3JvdXBVbmRlclNjaGVtYSx7 CisgICAgICAgICAgaWQ6ICdyZWxhY2wnLCBsYWJlbDogZ2V0dGV4dCgnUHJpdmlsZWdlcycpLCB0 eXBlOiAnY29sbGVjdGlvbicsCisgICAgICAgICAgZ3JvdXA6ICdzZWN1cml0eScsIGNvbnRyb2w6 ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLAorICAgICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9k ZS5Qcml2aWxlZ2VSb2xlTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgICBwcml2aWxlZ2VzOiBbJ2En LCdyJywndycsJ2QnLCdEJywneCcsJ3QnXX0pLAorICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdj cmVhdGUnXSwgY2FuQWRkOiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAgdW5pcXVl Q29sIDogWydncmFudGVlJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzZWNsYWJlbHMn LCBsYWJlbDogZ2V0dGV4dCgnU2VjdXJpdHkgbGFiZWxzJyksIGNhbkVkaXQ6IGZhbHNlLAorICAg ICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuU2VjTGFiZWxNb2RlbCwgZWRpdGFibGU6IGZhbHNlLCBj YW5BZGQ6IHRydWUsCisgICAgICAgICAgdHlwZTogJ2NvbGxlY3Rpb24nLCBtaW5fdmVyc2lvbjog OTAxMDAsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBncm91cDogJ3NlY3Vy aXR5JywgY2FuRGVsZXRlOiB0cnVlLCBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJwor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3ZhY3V1bV9zZXR0aW5nc19zdHInLCBsYWJlbDog Z2V0dGV4dCgnU3RvcmFnZSBzZXR0aW5ncycpLAorICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUn LCBncm91cDogZ2V0dGV4dCgnQWR2YW5jZWQnKSwgbW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAg ICAgfV0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbihrZXlzKSB7CisgICAgICAgICAgdmFy IGVyciA9IHt9LAorICAgICAgICAgICAgICBjaGFuZ2VkQXR0cnMgPSB0aGlzLmNoYW5nZWQsCisg ICAgICAgICAgICAgIG1zZyA9IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgbmFtZSA9IHRoaXMu Z2V0KCduYW1lJyksCisgICAgICAgICAgICAgIHNjaGVtYSA9IHRoaXMuZ2V0KCdzY2hlbWEnKSwK KyAgICAgICAgICAgICAgcmVsb3duZXIgPSB0aGlzLmdldCgncmVsb3duZXInKSwKKyAgICAgICAg ICAgICAgaXNfcGFydGl0aW9uZWQgPSB0aGlzLmdldCgnaXNfcGFydGl0aW9uZWQnKSwKKyAgICAg ICAgICAgICAgcGFydGl0aW9uX2tleXMgPSB0aGlzLmdldCgncGFydGl0aW9uX2tleXMnKTsKKwor ICAgICAgICAgIC8vIElmIG5vdGhpbmcgdG8gdmFsaWRhdGUgb3IgVmFjdXVtU2V0dGluZyBrZXlz IHRoZW4KKyAgICAgICAgICAvLyByZXR1cm4gZnJvbSBoZXJlCisgICAgICAgICAgaWYgKCBrZXlz ICYmIChrZXlzLmxlbmd0aCA9PSAwCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBfLmluZGV4 T2Yoa2V5cywgJ2F1dG92YWN1dW1fZW5hYmxlZCcpICE9IC0xCisgICAgICAgICAgICAgICAgICAg ICAgICB8fCBfLmluZGV4T2Yoa2V5cywgJ3RvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCcpICE9IC0x KSApIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgIH0KKworICAgICAgICAg IC8vIEhhdmUgdG8gY2xlYXIgZXhpc3RpbmcgdmFsaWRhdGlvbiBiZWZvcmUgaW5pdGlhdGluZyBj dXJyZW50IHN0YXRlIHZhbGlkYXRpb24gb25seQorICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5j bGVhcigpOworCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQobmFtZSkgfHwgXy5pc051bGwo bmFtZSkgfHwKKyAgICAgICAgICAgIFN0cmluZyhuYW1lKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywg JycpID09ICcnKSB7CisgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdUYWJsZSBuYW1lIGNhbm5v dCBiZSBlbXB0eS4nKTsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBt c2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9IGVsc2UgaWYgKF8uaXNV bmRlZmluZWQoc2NoZW1hKSB8fCBfLmlzTnVsbChzY2hlbWEpIHx8CisgICAgICAgICAgICBTdHJp bmcoc2NoZW1hKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAg ICBtc2cgPSBnZXR0ZXh0KCdUYWJsZSBzY2hlbWEgY2Fubm90IGJlIGVtcHR5LicpOworICAgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnc2NoZW1hJywgbXNnKTsKKyAgICAgICAgICAgIHJl dHVybiBtc2c7CisgICAgICAgICAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHJlbG93bmVyKSB8 fCBfLmlzTnVsbChyZWxvd25lcikgfHwKKyAgICAgICAgICAgIFN0cmluZyhyZWxvd25lcikucmVw bGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgbXNnID0gZ2V0dGV4 dCgnVGFibGUgb3duZXIgY2Fubm90IGJlIGVtcHR5LicpOworICAgICAgICAgICAgdGhpcy5lcnJv ck1vZGVsLnNldCgncmVsb3duZXInLCBtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAg ICAgICAgICB9IGVsc2UgaWYgKGlzX3BhcnRpdGlvbmVkICYmIHRoaXMuaXNOZXcoKSAmJgorICAg ICAgICAgICAgIV8uaXNOdWxsKHBhcnRpdGlvbl9rZXlzKSAmJiBwYXJ0aXRpb25fa2V5cy5sZW5n dGggPD0gMCkKKyAgICAgICAgICB7CisgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdQbGVhc2Ug c3BlY2lmeSBhdCBsZWFzdCBvbmUga2V5IGZvciBwYXJ0aXRpb25lZCB0YWJsZS4nKTsKKyAgICAg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3BhcnRpdGlvbl9rZXlzJywgbXNnKTsKKyAgICAg ICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBudWxsOwor ICAgICAgICB9LAorICAgICAgICAvLyBXZSB3aWxsIGRpc2FibGUgZXZlcnl0aGluZyBpZiB3ZSBh cmUgdW5kZXIgY2F0YWxvZyBub2RlCisgICAgICAgIGluU2NoZW1hOiBmdW5jdGlvbigpIHsKKyAg ICAgICAgICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ2NhdGFsb2cnIGluIHRoaXMubm9kZV9pbmZv KQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0KKyAg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0sCisgICAgICAgIGlzSW5oZXJpdGVkVGFi bGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICBpZighbS5pblNjaGVtYS5hcHBseSh0aGlzLCBb bV0pKSB7CisgICAgICAgICAgICBpZigKKyAgICAgICAgICAgICAgKCFfLmlzVW5kZWZpbmVkKG0u Z2V0KCdjb2xsX2luaGVyaXRzJykpICYmIG0uZ2V0KCdjb2xsX2luaGVyaXRzJykubGVuZ3RoICE9 IDApCisgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICAgICghXy5pc1VuZGVmaW5l ZChtLmdldCgndHlwbmFtZScpKSAmJiBTdHJpbmcobS5nZXQoJ3R5cG5hbWUnKSkucmVwbGFjZSgv XlxzK3xccyskL2csICcnKSAhPT0gJycpCisgICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAg Ly8gRWl0aGVyIG9mX3R5cGVzIG9yIGNvbGxfaW5oZXJpdHMgaGFzIHZhbHVlCisgICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgIH0sCisgICAgICAgIC8vIE9mdHlwZSBpcyBkZWZpbmVkPworICAgICAg ICBjaGVja0luaGVyaXRhbmNlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgLy8gRGlzYWJsZWQg aWYgaXQgaXMgcGFydGl0aW9uZWQgdGFibGUKKyAgICAgICAgICBpZiAobS5nZXQoJ2lzX3BhcnRp dGlvbmVkJykpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworICAgICAg ICAgICAgICAgbS5zZXQoJ2NvbGxfaW5oZXJpdHMnLCBbXSk7CisgICAgICAgICAgICB9LCAxMCk7 CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvLyBj b2xsX2luaGVyaXRzIHx8IHR5cG5hbWUKKyAgICAgICAgICBpZighbS5pblNjaGVtYS5hcHBseSh0 aGlzLCBbbV0pICYmCisgICAgICAgICAgICAgICggXy5pc1VuZGVmaW5lZChtLmdldCgndHlwbmFt ZScpKSB8fAorICAgICAgICAgICAgICAgIF8uaXNOdWxsKG0uZ2V0KCd0eXBuYW1lJykpIHx8Cisg ICAgICAgICAgICAgICAgU3RyaW5nKG0uZ2V0KCd0eXBuYW1lJykpLnJlcGxhY2UoL15ccyt8XHMr JC9nLCAnJykgPT0gJycpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg fQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAorICAgICAgICAvLyBXZSB3aWxs IGRpc2FibGUgTGlrZSBpZiBvZlR5cGUgaXMgZGVmaW5lZAorICAgICAgICBpc0xpa2VEaXNhYmxl OiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgaWYoIW0uaW5TY2hlbWFXaXRoTW9kZWxDaGVjay5h cHBseSh0aGlzLCBbbV0pICYmCisgICAgICAgICAgICAgICggXy5pc1VuZGVmaW5lZChtLmdldCgn dHlwbmFtZScpKSB8fAorICAgICAgICAgICAgICAgIF8uaXNOdWxsKG0uZ2V0KCd0eXBuYW1lJykp IHx8CisgICAgICAgICAgICAgICAgU3RyaW5nKG0uZ2V0KCd0eXBuYW1lJykpLnJlcGxhY2UoL15c cyt8XHMrJC9nLCAnJykgPT0gJycpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgICAgfQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAorICAgICAgICAvLyBD aGVjayBmb3IgY29sdW1uIGdyaWQgd2hlbiB0byBBZGQKKyAgICAgICAgY2hlY2tfZ3JpZF9hZGRf Y29uZGl0aW9uOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgdmFyIGVuYWJsZV9mbGFnID0gdHJ1 ZTsKKyAgICAgICAgICBpZighbS5pblNjaGVtYS5hcHBseSh0aGlzLCBbbV0pKSB7CisgICAgICAg ICAgICAvLyBpZiBvZl90eXBlIHRoZW4gZGlzYWJsZSBhZGQgaW4gZ3JpZAorICAgICAgICAgICAg aWYgKCFfLmlzVW5kZWZpbmVkKG0uZ2V0KCd0eXBuYW1lJykpICYmCisgICAgICAgICAgICAgICAg IV8uaXNOdWxsKG0uZ2V0KCd0eXBuYW1lJykpICYmCisgICAgICAgICAgICAgICAgbS5nZXQoJ3R5 cG5hbWUnKSAhPT0gJycpIHsKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlX2ZsYWcgPSBmYWxz ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBlbmFi bGVfZmxhZzsKKyAgICAgICAgfSwKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbHVtbiBncmlkIHdo ZW4gdG8gZWRpdC9kZWxldGUgKGZvciBlYWNoIHJvdykKKyAgICAgICAgY2hlY2tfZ3JpZF9yb3df ZWRpdF9kZWxldGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICB2YXIgZmxhZyA9IHRydWU7Cisg ICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVyaXRlZGZyb20nKSkgJiYKKyAg ICAgICAgICAgICAgICFfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVkZnJvbScpKSAmJgorICAgICAg ICAgICAgICAgU3RyaW5nKG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpLnJlcGxhY2UoL15ccyt8XHMr JC9nLCAnJykgIT09ICcnKSB7CisgICAgICAgICAgICBmbGFnID0gZmFsc2U7CisgICAgICAgICAg fQorICAgICAgICAgIHJldHVybiBmbGFnOworICAgICAgICB9LAorICAgICAgICAvLyBXZSB3aWxs IGRpc2FibGUgaXQgaWYgSW5oZXJpdGFuY2UgaXMgZGVmaW5lZAorICAgICAgICBjaGVja09mVHlw ZTogZnVuY3Rpb24obSkgeworICAgICAgICAgIC8vIERpc2FibGVkIGlmIGl0IGlzIHBhcnRpdGlv bmVkIHRhYmxlCisgICAgICAgICAgaWYgKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAg ICAgICAgICBzZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgIG0uc2V0KCd0 eXBuYW1lJywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICAgIH0KKworICAgICAgICAgIC8vY29sbF9pbmhlcml0cyB8fCB0 eXBuYW1lCisgICAgICAgICAgaWYoIW0uaW5TY2hlbWFXaXRoTW9kZWxDaGVjay5hcHBseSh0aGlz LCBbbV0pICYmCisgICAgICAgICAgICAgIChfLmlzVW5kZWZpbmVkKG0uZ2V0KCdjb2xsX2luaGVy aXRzJykpIHx8CisgICAgICAgICAgICAgICBfLmlzTnVsbChtLmdldCgnY29sbF9pbmhlcml0cycp KSB8fAorICAgICAgICAgICAgICAgU3RyaW5nKG0uZ2V0KCdjb2xsX2luaGVyaXRzJykpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAorICAgICAg ICAvLyBXZSB3aWxsIGNoZWNrIGlmIHdlIGFyZSB1bmRlciBzY2hlbWEgbm9kZSAmIGluICdjcmVh dGUnIG1vZGUKKyAgICAgICAgaW5TY2hlbWFXaXRoTW9kZWxDaGVjazogZnVuY3Rpb24obSkgewor ICAgICAgICAgIGlmKHRoaXMubm9kZV9pbmZvICYmICAnc2NoZW1hJyBpbiB0aGlzLm5vZGVfaW5m bykKKyAgICAgICAgICB7CisgICAgICAgICAgICAvLyBXZSB3aWxsIGRpc2JhbGUgY29udHJvbCBp ZiBpdCdzIGluICdlZGl0JyBtb2RlCisgICAgICAgICAgICBpZiAobS5pc05ldygpKSB7CisgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKyAgICAgICAgaXNUYWJsZUF1dG9WYWN1dW1FbmFibGU6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGFkZGl0aW9uYWwg Y29uZGl0aW9uIHRvIHRvZ2dsZSBlbmFibGUvZGlzYWJsZQorICAgICAgICAgIC8vIGZvciB0YWJs ZSBhdXRvLXZhY3V1bQorICAgICAgICAgIGlmKCFtLmluU2NoZW1hLmFwcGx5KHRoaXMsIFttXSkg JiYKKyAgICAgICAgICAgICAgbS5nZXQoJ2F1dG92YWN1dW1fZW5hYmxlZCcpID09PSB0cnVlKSB7 CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICB9LAorICAgICAgICBpc1RvYXN0VGFibGVBdXRvVmFjdXVtRW5hYmxl OiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBhZGRpdGlvbmFs IGNvbmRpdGlvbiB0byB0b2dnbGUgZW5hYmxlL2Rpc2FibGUKKyAgICAgICAgICAvLyBmb3IgdG9h c3QgdGFibGUgYXV0by12YWN1dW0KKyAgICAgICAgICBpZighbS5pblNjaGVtYVdpdGhNb2RlbENo ZWNrLmFwcGx5KHRoaXMsIFttXSkgJiYKKyAgICAgICAgICAgICAgbS5nZXQoJ3RvYXN0X2F1dG92 YWN1dW1fZW5hYmxlZCcpID09IHRydWUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0sCisgICAgICAgIGZl dGNoX2NvbHVtbnNfYWpheDogZnVuY3Rpb24oYXJnKSB7CisgICAgICAgICAgdmFyIHNlbGYgPSB0 aGlzLAorICAgICAgICAgICAgICB1cmwgPSAnZ2V0X2NvbHVtbnMnLAorICAgICAgICAgICAgICBt ID0gc2VsZi5tb2RlbC50b3AgfHwgc2VsZi5tb2RlbCwKKyAgICAgICAgICAgICAgb2xkX2NvbHVt bnMgPSBfLmNsb25lKG0uZ2V0KCdjb2x1bW5zJykpCisgICAgICAgICAgICAgIGRhdGEgPSB1bmRl ZmluZWQsCisgICAgICAgICAgICAgIG5vZGUgPSB0aGlzLmZpZWxkLmdldCgnc2NoZW1hX25vZGUn KSwKKyAgICAgICAgICAgICAgbm9kZV9pbmZvID0gdGhpcy5maWVsZC5nZXQoJ25vZGVfaW5mbycp LAorICAgICAgICAgICAgICBmdWxsX3VybCA9IG5vZGUuZ2VuZXJhdGVfdXJsLmFwcGx5KAorICAg ICAgICAgICAgICAgIG5vZGUsIFsKKyAgICAgICAgICAgICAgICAgIG51bGwsIHVybCwgdGhpcy5m aWVsZC5nZXQoJ25vZGVfZGF0YScpLAorICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5nZXQo J3VybF93aXRoX2lkJykgfHwgZmFsc2UsIG5vZGVfaW5mbworICAgICAgICAgICAgICAgIF0KKyAg ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgY2FjaGVfbGV2ZWwgPSB0aGlzLmZpZWxkLmdl dCgnY2FjaGVfbGV2ZWwnKSB8fCBub2RlLnR5cGUsCisgICAgICAgICAgICAgIGNhY2hlX25vZGUg PSB0aGlzLmZpZWxkLmdldCgnY2FjaGVfbm9kZScpOworCisgICAgICAgICAgY2FjaGVfbm9kZSA9 IChjYWNoZV9ub2RlICYmIHBnQnJvd3Nlci5Ob2Rlc1snY2FjaGVfbm9kZSddKSB8fCBub2RlOwor CisgICAgICAgICAgbS50cmlnZ2VyKCdwZ2FkbWluOnZpZXc6ZmV0Y2hpbmcnLCBtLCBzZWxmLmZp ZWxkKTsKKyAgICAgICAgICAvLyBGZXRjaGluZyBDb2x1bW5zIGRhdGEgZm9yIHRoZSBzZWxlY3Rl ZCB0YWJsZS4KKyAgICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgYXN5bmM6IGZhbHNlLAor ICAgICAgICAgICAgdXJsOiBmdWxsX3VybCwKKyAgICAgICAgICAgIGRhdGE6IGFyZywKKyAgICAg ICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICBkYXRhID0gY2Fj aGVfbm9kZS5jYWNoZSh1cmwsIG5vZGVfaW5mbywgY2FjaGVfbGV2ZWwsIHJlcy5kYXRhKTsKKyAg ICAgICAgICAgIH0sCisgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg ICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoOmVycm9yJywgbSwgc2VsZi5maWVsZCk7 CisgICAgICAgICAgICB9CisgICAgICAgICAgfSk7CisgICAgICAgICAgbS50cmlnZ2VyKCdwZ2Fk bWluOnZpZXc6ZmV0Y2hlZCcsIG0sIHNlbGYuZmllbGQpOworICAgICAgICAgIGRhdGEgPSAoZGF0 YSAmJiBkYXRhLmRhdGEpIHx8IFtdOworICAgICAgICAgIHJldHVybiBkYXRhOworICAgICAgICB9 CisgICAgICB9KSwKKyAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRh dGEpIHsKKyAgICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93 IGNyZWF0ZSBtZW51CisgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkK KyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIu dHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YTsKKyAgICAgICAgICAvLyBUbyBpdGVyYXRlIG92 ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQorICAgICAgICAgIHdoaWxlIChpKSB7CisgICAg ICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSB0YWJs ZQorICAgICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQor ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKCdjb2xsLXRhYmxl JyA9PSBkLl90eXBlKSB7CisgICAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGls ZCBvZiBjYXRhbG9nCisgICAgICAgICAgICAgIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5w YXJlbnQoaSkgOiBudWxsOworICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1E YXRhKHByZXZfaSkgOiBudWxsOworICAgICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdj YXRhbG9nJykgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgfQorICAgICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQo aSkgOiBudWxsOworICAgICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKKyAg ICAgICAgICB9CisgICAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxv dyBjcmVhdGUgbWVudQorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfSwKKyAgICAgIC8v IENoZWNrIHRvIHdoZXRoZXIgdGFibGUgaGFzIGRpc2FibGUgdHJpZ2dlcihzKQorICAgICAgY2Fu Q3JlYXRlX3dpdGhfdHJpZ2dlcl9lbmFibGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRh KSB7CisgICAgICAgIGlmKHRoaXMuY2FuQ3JlYXRlLmFwcGx5KHRoaXMsIFtpdGVtRGF0YSwgaXRl bSwgZGF0YV0pKSB7CisgICAgICAgICAgLy8gV2UgYXJlIGhlcmUgbWVhbnMgd2UgY2FuIGNyZWF0 ZSBtZW51LCBub3cgbGV0J3MgY2hlY2sgY29uZGl0aW9uCisgICAgICAgICAgaWYoaXRlbURhdGEu dGlnZ2VyX2NvdW50ID4gMCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAg IH0KKyAgICAgIH0sCisgICAgICAvLyBDaGVjayB0byB3aGV0aGVyIHRhYmxlIGhhcyBlbmFibGUg dHJpZ2dlcihzKQorICAgICAgY2FuQ3JlYXRlX3dpdGhfdHJpZ2dlcl9kaXNhYmxlOiBmdW5jdGlv bihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgeworICAgICAgICBpZih0aGlzLmNhbkNyZWF0ZS5hcHBs eSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0sIGRhdGFdKSkgeworICAgICAgICAgIC8vIFdlIGFyZSBo ZXJlIG1lYW5zIHdlIGNhbiBjcmVhdGUgbWVudSwgbm93IGxldCdzIGNoZWNrIGNvbmRpdGlvbgor ICAgICAgICAgIGlmKGl0ZW1EYXRhLnRpZ2dlcl9jb3VudCA+IDAgJiYgaXRlbURhdGEuaGFzX2Vu YWJsZV90cmlnZ2VycyA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAg ICB9CisgICAgICB9CisgICAgfSk7CisgIH0KKworICByZXR1cm4gcGdCcm93c2VyLk5vZGVzWydw YXJ0aXRpb24nXTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL3RlbXBsYXRlcy9y dWxlcy9qcy9ydWxlcy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9ydWxlcy90ZW1wbGF0ZXMvcnVsZXMvanMvcnVs ZXMuanMKaW5kZXggMjVmZTk2My4uZGI5MWFmMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVz L3RlbXBsYXRlcy9ydWxlcy9qcy9ydWxlcy5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMvdGVtcGxh dGVzL3J1bGVzL2pzL3J1bGVzLmpzCkBAIC0xNiw2ICsxNiw3IEBAIGRlZmluZSgncGdhZG1pbi5u b2RlLnJ1bGUnLCBbCiAgICAgICAgIG5vZGU6ICdydWxlJywKICAgICAgICAgbGFiZWw6IGdldHRl eHQoJ1J1bGVzJyksCiAgICAgICAgIHR5cGU6ICdjb2xsLXJ1bGUnLAorICAgICAgICBnZXRUcmVl Tm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAg ICAgICAgY29sdW1uczogWyJuYW1lIiwgIm93bmVyIiwgImNvbW1lbnQiXQogICAgICAgfSk7CiAg IH0KQEAgLTMzLDggKzM0LDkgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUucnVsZScsIFsKICAgICBy dWxlIG9wdGlvbiBpbiB0aGUgY29udGV4dCBtZW51CiAgICAqLwogICBpZiAoIXBnQnJvd3Nlci5O b2Rlc1sncnVsZSddKSB7Ci0gICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydydWxlJ10gPSBwZ0Fk bWluLkJyb3dzZXIuTm9kZS5leHRlbmQoewotICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCd2 aWV3J10sCisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydydWxlJ10gPSBwZ0Jyb3dzZXIuTm9k ZS5leHRlbmQoeworICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNo aWxkVHJlZU5vZGVIaWVyYXJjaHksCisgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsJ3ZpZXcn LCAncGFydGl0aW9uJ10sCiAgICAgICB0eXBlOiAncnVsZScsCiAgICAgICBzcWxBbHRlckhlbHA6 ICdzcWwtYWx0ZXJydWxlLmh0bWwnLAogICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1jcmVhdGVy dWxlLmh0bWwnLApAQCAtOTgsNiArMTAwLDEyIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnJ1bGUn LCBbCiAgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6IGdl dHRleHQoJ1J1bGUuLi4nKSwKICAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tcnVsZScs IGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCiAgICAgICAgICAgZW5hYmxl OiAnY2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3J1bGUn LCBub2RlOiAncGFydGl0aW9uJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsn b2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAg ICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogZ2V0dGV4dCgn UnVsZS4uLicpLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1ydWxlJywgZGF0YTog e2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5D cmVhdGUnCiAgICAgICAgIH0KICAgICAgICAgXSk7CiAgICAgICB9LApkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3N0YXRpYy9qcy9wYXJ0aXRpb24udXRpbHMuanMgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pz L3BhcnRpdGlvbi51dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41 YjFlM2MxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy9wYXJ0aXRpb24u dXRpbHMuanMKQEAgLTAsMCArMSwzMjMgQEAKK2RlZmluZSgKKyAgICAgICAgWydzb3VyY2VzL2dl dHRleHQnLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAncGdhZG1pbi5icm93c2VyJywKKyAgICAg ICAgJ2JhY2tmb3JtJywnYmFja2dyaWQnLCAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nXSwK K2Z1bmN0aW9uKGdldHRleHQsICQsIF8sIHBnQnJvd3NlciwgQmFja2Zvcm0sIEJhY2tncmlkKSB7 CisKKyAgQmFja2dyaWQuUGFydGl0aW9uUm93ID0gQmFja2dyaWQuUm93LmV4dGVuZCh7CisgICAg bW9kZWxEdXBsaWNhdGVDb2xvcjogImxpZ2h0WWVsbG93IiwKKworICAgIG1vZGVsVW5pcXVlQ29s b3I6ICIjZmZmIiwKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHsKKyAgICAgIEJhY2tn cmlkLlJvdy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAg ICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgc2VsZi5tb2RlbC5vbigiY2hhbmdlOmlzX2F0dGFj aCIsIGZ1bmN0aW9uKCkgeworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg ICAgIHNlbGYuY29sdW1ucy5lYWNoKGZ1bmN0aW9uKGNvbCkgeworICAgICAgICAgICAgaWYgKGNv bC5nZXQoJ25hbWUnKSA9PSAncGFydGl0aW9uX25hbWUnKSB7CisgICAgICAgICAgICAgIHZhciBp ZHggPSBzZWxmLmNvbHVtbnMuaW5kZXhPZihjb2wpLAorICAgICAgICAgICAgICAgIGNmID0gY29s LmdldCgiY2VsbEZ1bmN0aW9uIiksCisgICAgICAgICAgICAgICAgY2VsbCA9IG5ldyAoY2YuYXBw bHkoY29sLCBbc2VsZi5tb2RlbF0pKSh7CisgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbCwK KyAgICAgICAgICAgICAgICAgIG1vZGVsOiBzZWxmLm1vZGVsCisgICAgICAgICAgICAgICAgfSks CisgICAgICAgICAgICAgICAgICBvbGRDZWxsID0gc2VsZi5jZWxsc1tpZHhdOworICAgICAgICAg ICAgICAgIG9sZENlbGwucmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgc2VsZi5jZWxsc1tpZHhd ID0gY2VsbDsKKyAgICAgICAgICAgICAgICBzZWxmLnJlbmRlcigpOworICAgICAgICAgICAgfQor ICAgICAgICAgIH0pOworICAgICAgICB9LCAxMCk7CisgICAgICB9KTsKKyAgICAgIHNlbGYubGlz dGVuVG8oc2VsZi5tb2RlbCwgJ3BnYWRtaW4tc2Vzc2lvbjptb2RlbDpkdXBsaWNhdGUnLCBzZWxm Lm1vZGVsRHVwbGljYXRlKTsKKyAgICAgIHNlbGYubGlzdGVuVG8oc2VsZi5tb2RlbCwgJ3BnYWRt aW4tc2Vzc2lvbjptb2RlbDp1bmlxdWUnLCBzZWxmLm1vZGVsVW5pcXVlKTsKKyAgICB9LAorICAg IG1vZGVsRHVwbGljYXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICQodGhpcy5lbCkucmVtb3ZlQ2xh c3MoIm5ldyIpOworICAgICAgdGhpcy5lbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLm1v ZGVsRHVwbGljYXRlQ29sb3I7CisgICAgfSwKKyAgICBtb2RlbFVuaXF1ZTogZnVuY3Rpb24oKSB7 CisgICAgICB0aGlzLmVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMubW9kZWxVbmlxdWVD b2xvcjsKKyAgICB9CisgIH0pOworCisgIHZhciBnZXRQYXJ0aXRpb25DZWxsID0gZnVuY3Rpb24o bW9kZWwpIHsKKyAgICB2YXIgaXNfYXR0YWNoID0gbW9kZWwuZ2V0KCJpc19hdHRhY2giKTsKKyAg ICBpZiAoaXNfYXR0YWNoKSB7CisgICAgICB2YXIgb3B0aW9ucyA9IFtdOworICAgICAgbW9kZWwu c2V0KHsncGFydGl0aW9uX25hbWUnOiB1bmRlZmluZWR9LCB7c2lsZW50OnRydWV9KTsKKyAgICAg IF8uZWFjaChtb2RlbC50b3AudGFibGVfb3B0aW9ucywgZnVuY3Rpb24odCkgeworICAgICAgICBv cHRpb25zLnB1c2goW3QubGFiZWwsIHQudmFsdWVdKTsKKyAgICAgIH0pOworICAgICAgcmV0dXJu IEJhY2tncmlkLkV4dGVuc2lvbi5TZWxlY3QyQ2VsbC5leHRlbmQoe29wdGlvblZhbHVlczogb3B0 aW9uc30pOworCisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBCYWNrZ3JpZC5TdHJpbmdDZWxs OworICAgIH0KKyAgfTsKKworICBCYWNrZm9ybS5QYXJ0aXRpb25LZXlNb2RlbCA9IHBnQnJvd3Nl ci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgIGRlZmF1bHRzOiB7CisgICAgICAga2V5X3R5cGU6 ICdjb2x1bW4nLAorICAgICAgIHB0X2NvbHVtbjogdW5kZWZpbmVkLAorICAgICAgIGV4cHJlc3Np b246IHVuZGVmaW5lZAorICAgICB9LAorICAgICBrZXlzOlsncHRfY29sdW1uJ10sCisgICAgIHNj aGVtYTogW3sKKyAgICAgICBpZDogJ2tleV90eXBlJywgbGFiZWw6J0tleSB0eXBlJywgdHlwZTon c2VsZWN0MicsIGVkaXRhYmxlOiB0cnVlLAorICAgICAgIGNlbGw6J3NlbGVjdDInLCBjZWxsSGVh ZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjUnLAorICAgICAgIHNlbGVjdDI6IHthbGxvd0Ns ZWFyOiBmYWxzZX0sCisgICAgICAgb3B0aW9uczpbeworICAgICAgICAgbGFiZWw6ICdDb2x1bW4n LCB2YWx1ZTogJ2NvbHVtbicKKyAgICAgICB9LHsKKyAgICAgICAgIGxhYmVsOiAnRXhwcmVzc2lv bicsIHZhbHVlOiAnZXhwcmVzc2lvbicKKyAgICAgICB9XQorICAgICB9LHsKKyAgICAgICBpZDog J3B0X2NvbHVtbicsIGxhYmVsOiBnZXR0ZXh0KCdDb2x1bW4nKSwgdHlwZTondGV4dCcsCisgICAg ICAgY2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLlNlbGVjdDJEZXBDZWxsLmV4dGVuZCh7CisgICAg ICAgICBrZXlQYXRoQWNjZXNzb3I6IGZ1bmN0aW9uKG9iaiwgcGF0aCkgeworICAgICAgICAgICB2 YXIgcmVzID0gb2JqOworICAgICAgICAgICBpZihfLmlzQXJyYXkocmVzKSkgeworICAgICAgICAg ICAgIHJldHVybiBfLm1hcChyZXMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG9bJ3B0X2NvbHVtbidd CisgICAgICAgICAgICAgfSk7CisgICAgICAgICAgIH0KKyAgICAgICAgICAgcGF0aCA9IHBhdGgu c3BsaXQoJy4nKTsKKyAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsg aSsrKSB7CisgICAgICAgICAgICAgaWYgKF8uaXNOdWxsKHJlcykpIHJldHVybiBudWxsOworICAg ICAgICAgICAgIGlmIChfLmlzRW1wdHkocGF0aFtpXSkpIGNvbnRpbnVlOworICAgICAgICAgICAg IGlmICghXy5pc1VuZGVmaW5lZChyZXNbcGF0aFtpXV0pKSByZXMgPSByZXNbcGF0aFtpXV07Cisg ICAgICAgICAgIH0KKyAgICAgICAgICAgcmV0dXJuIF8uaXNPYmplY3QocmVzKSAmJiAhXy5pc0Fy cmF5KHJlcykgPyBudWxsIDogcmVzOworICAgICAgICAgfSwKKyAgICAgICAgIGluaXRpYWxpemU6 IGZ1bmN0aW9uKCkgeworICAgICAgICAgLy8gSGVyZSB3ZSB3aWxsIGRlY2lkZSBpZiB3ZSBuZWVk IHRvIGNhbGwgVVJMCisgICAgICAgICAvLyBPciBmZXRjaCB0aGUgZGF0YSBmcm9tIHBhcmVudCBj b2x1bW5zIGNvbGxlY3Rpb24KKyAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICAg ICBpZih0aGlzLm1vZGVsLmhhbmRsZXIpIHsKKyAgICAgICAgICAgICBCYWNrZ3JpZC5FeHRlbnNp b24uU2VsZWN0MkRlcENlbGwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1l bnRzKTsKKyAgICAgICAgICAgICAvLyBEbyBub3QgbGlzdGVuIGZvciBhbnkgZXZlbnQocykgZm9y IGV4aXN0aW5nIGNvbnN0cmFpbnQuCisgICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoc2Vs Zi5tb2RlbC5nZXQoJ29pZCcpKSkgeworICAgICAgICAgICAgICAgdmFyIHRhYmxlQ29scyA9IHNl bGYubW9kZWwudG9wLmdldCgnY29sdW1ucycpOworICAgICAgICAgICAgICAgc2VsZi5saXN0ZW5U byh0YWJsZUNvbHMsICdyZW1vdmUnICwgc2VsZi5yZXNldENvbE9wdGlvbnMpOworICAgICAgICAg ICAgICAgc2VsZi5saXN0ZW5Ubyh0YWJsZUNvbHMsICdjaGFuZ2U6bmFtZScsIHNlbGYucmVzZXRD b2xPcHRpb25zKTsKKyAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICBzZWxmLmN1c3RvbV9v cHRpb25zKCk7CisgICAgICAgICAgIH0KKyAgICAgICAgIH0sCisgICAgICAgICByZXNldENvbE9w dGlvbnM6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAg ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgIHNlbGYuY3VzdG9t X29wdGlvbnMoKTsKKyAgICAgICAgICAgICBzZWxmLnJlbmRlci5hcHBseShzZWxmKTsKKyAgICAg ICAgICAgfSwgNTApOworICAgICAgICAgfSwKKyAgICAgICAgIGN1c3RvbV9vcHRpb25zOiBmdW5j dGlvbigpIHsKKyAgICAgICAgICAgLy8gV2Ugd2lsbCBhZGQgYWxsIHRoZSBjb2x1bW5zIGVudGVy ZWQgYnkgdXNlciBpbiB0YWJsZSBtb2RlbAorICAgICAgICAgICB2YXIgY29sdW1ucyA9IHRoaXMu bW9kZWwudG9wLmdldCgnY29sdW1ucycpLAorICAgICAgICAgICAgIGFkZGVkX2NvbHVtbnNfZnJv bV90YWJsZXMgPSBbXTsKKworICAgICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPiAwKSB7Cisg ICAgICAgICAgICAgXy5lYWNoKGNvbHVtbnMubW9kZWxzLCBmdW5jdGlvbihtKSB7CisgICAgICAg ICAgICAgICAgIHZhciBjb2wgPSBtLmdldCgnbmFtZScpOworICAgICAgICAgICAgICAgICBpZigh Xy5pc1VuZGVmaW5lZChjb2wpICYmICFfLmlzTnVsbChjb2wpKSB7CisgICAgICAgICAgICAgICAg ICAgYWRkZWRfY29sdW1uc19mcm9tX3RhYmxlcy5wdXNoKAorICAgICAgICAgICAgICAgICAgICAg e2xhYmVsOiBjb2wsIHZhbHVlOiBjb2wsIGltYWdlOidpY29uLWNvbHVtbid9CisgICAgICAgICAg ICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0pOworICAgICAg ICAgICB9CisgICAgICAgICAgIC8vIFNldCB0aGUgdmFsdWVzIGluIHRvIG9wdGlvbnMgc28gdGhh dCB1c2VyIGNhbiBzZWxlY3QKKyAgICAgICAgICAgdGhpcy5jb2x1bW4uc2V0KCdvcHRpb25zJywg YWRkZWRfY29sdW1uc19mcm9tX3RhYmxlcyk7CisgICAgICAgICB9LAorICAgICAgICAgcmVtb3Zl OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgaWYodGhpcy5tb2RlbC5oYW5kbGVyKSB7CisgICAg ICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgIHRhYmxlQ29scyA9IHNlbGYu bW9kZWwudG9wLmdldCgnY29sdW1ucycpOworICAgICAgICAgICAgIHNlbGYuc3RvcExpc3Rlbmlu Zyh0YWJsZUNvbHMsICdyZW1vdmUnICwgc2VsZi5yZXNldENvbE9wdGlvbnMpOworICAgICAgICAg ICAgIHNlbGYuc3RvcExpc3RlbmluZyh0YWJsZUNvbHMsICdjaGFuZ2U6bmFtZScgLCBzZWxmLnJl c2V0Q29sT3B0aW9ucyk7CisgICAgICAgICAgICAgQmFja2dyaWQuRXh0ZW5zaW9uLlNlbGVjdDJE ZXBDZWxsLnByb3RvdHlwZS5yZW1vdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAg ICAgfQorICAgICAgICAgfQorICAgICAgIH0pLAorICAgICAgIGRlcHM6IFsna2V5X3R5cGUnXSwK KyAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMzAnLAorICAgICAgIHRy YW5zZm9ybSA6IGZ1bmN0aW9uKGRhdGEpeworICAgICAgICAgdmFyIHJlcyA9IFtdOworICAgICAg ICAgaWYgKGRhdGEgJiYgXy5pc0FycmF5KGRhdGEpKSB7CisgICAgICAgICAgIF8uZWFjaChkYXRh LCBmdW5jdGlvbihkKSB7CisgICAgICAgICAgICAgcmVzLnB1c2goe2xhYmVsOiBkLmxhYmVsLCB2 YWx1ZTogZC5sYWJlbCwgaW1hZ2U6J2ljb24tY29sdW1uJ30pOworICAgICAgICAgICB9KQorICAg ICAgICAgfQorICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICB9LAorICAgICAgIHNlbGVjdDI6 e2FsbG93Q2xlYXI6ZmFsc2V9LAorICAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICBpZiAobS5nZXQoJ2tleV90eXBlJykgPT0gJ2V4cHJlc3Npb24nKSB7CisgICAgICAgICAg IHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICBtLnNldCgncHRfY29sdW1u JywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICB9CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICB9CisgICAgIH0s eworICAgICAgIGlkOiAnZXhwcmVzc2lvbicsIGxhYmVsOidFeHByZXNzaW9uJywgdHlwZTondGV4 dCcsCisgICAgICAgY2VsbDpCYWNrZ3JpZC5FeHRlbnNpb24uU3RyaW5nRGVwQ2VsbCwKKyAgICAg ICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNDUnLAorICAgICAgIGRlcHM6IFsn a2V5X3R5cGUnXSwKKyAgICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgaWYg KG0uZ2V0KCdrZXlfdHlwZScpID09ICdjb2x1bW4nKSB7CisgICAgICAgICAgIHNldFRpbWVvdXQo IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICBtLnNldCgnZXhwcmVzc2lvbicsIHVuZGVmaW5l ZCk7CisgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgfQorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgfQorICAgICB9CisgICAgXSwKKyAg ICB2YWxpZGF0ZTogZnVuY3Rpb24oa2V5cykgeworICAgICAgdmFyIGNvbF90eXBlID0gdGhpcy5n ZXQoJ2tleV90eXBlJyksCisgICAgICAgICBwdF9jb2x1bW4gPSB0aGlzLmdldCgncHRfY29sdW1u JyksCisgICAgICAgICBleHByZXNzaW9uID0gdGhpcy5nZXQoJ2V4cHJlc3Npb24nKTsKKworICAg ICAgLy8gSGF2ZSB0byBjbGVhciBleGlzdGluZyB2YWxpZGF0aW9uIGJlZm9yZSBpbml0aWF0aW5n IGN1cnJlbnQgc3RhdGUKKyAgICAgIC8vIHZhbGlkYXRpb24gb25seQorICAgICAgdGhpcy5lcnJv ck1vZGVsLmNsZWFyKCk7CisKKyAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGNvbF90eXBlKSB8fCBf LmlzTnVsbChjb2xfdHlwZSkgfHwKKyAgICAgICAgU3RyaW5nKGNvbF90eXBlKS5yZXBsYWNlKC9e XHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgIG1zZyA9IGdldHRleHQoJ1BhcnRpdGlv biBrZXkgdHlwZSBjYW5ub3QgYmUgZW1wdHkuJyk7CisgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5z ZXQoJ2tleV90eXBlJywgbXNnKTsKKyAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgIH0KKyAgICAg IGVsc2UgaWYgKGNvbF90eXBlID09ICdjb2x1bW4nICYmCisgICAgICAgIF8uaXNVbmRlZmluZWQo cHRfY29sdW1uKSB8fCBfLmlzTnVsbChwdF9jb2x1bW4pIHx8CisgICAgICAgIFN0cmluZyhwdF9j b2x1bW4pLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgbXNnID0g Z2V0dGV4dCgnUGFydGl0aW9uIGtleSBjb2x1bW4gY2Fubm90IGJlIGVtcHR5LicpOworICAgICAg ICB0aGlzLmVycm9yTW9kZWwuc2V0KCdwdF9jb2x1bW4nLCBtc2cpOworICAgICAgICByZXR1cm4g bXNnOworICAgICAgfQorICAgICAgZWxzZSBpZiAoY29sX3R5cGUgPT0gJ2V4cHJlc3Npb24nICYm CisgICAgICAgIF8uaXNVbmRlZmluZWQoZXhwcmVzc2lvbikgfHwgXy5pc051bGwoZXhwcmVzc2lv bikgfHwKKyAgICAgICAgU3RyaW5nKGV4cHJlc3Npb24pLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAn JykgPT0gJycpIHsKKyAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGFydGl0aW9uIGtleSBleHByZXNz aW9uIGNhbm5vdCBiZSBlbXB0eS4nKTsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZXhw cmVzc2lvbicsIG1zZyk7CisgICAgICAgIHJldHVybiBtc2c7CisgICAgICB9CisKKyAgICAgIHJl dHVybiBudWxsOworICAgIH0KKyAgfSk7CisKKyAgQmFja2Zvcm0uUGFydGl0aW9uc01vZGVsID0g cGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBkZWZhdWx0czogeworICAgICAgb2lk OiB1bmRlZmluZWQsCisgICAgICBpc19hdHRhY2g6IGZhbHNlLAorICAgICAgcGFydGl0aW9uX25h bWU6IHVuZGVmaW5lZCwKKyAgICAgIHZhbHVlc19mcm9tOiB1bmRlZmluZWQsCisgICAgICB2YWx1 ZXNfdG86IHVuZGVmaW5lZCwKKyAgICAgIHZhbHVlc19pbjogdW5kZWZpbmVkCisgICAgfSwKKyAg ICBrZXlzOlsncGFydGl0aW9uX25hbWUnXSwKKyAgICBzY2hlbWE6IFt7CisgICAgICBpZDogJ29p ZCcsIGxhYmVsOiBnZXR0ZXh0KCdPSUQnKSwgdHlwZTogJ3RleHQnCisgICAgfSx7CisgICAgICBp ZDogJ2lzX2F0dGFjaCcsIGxhYmVsOmdldHRleHQoJ01vZGUnKSwgY2VsbDogJ3N3aXRjaCcsCisg ICAgICB0eXBlOiAnc3dpdGNoJywgb3B0aW9uczogeyAnb25UZXh0JzogJ0F0dGFjaCcsICdvZmZU ZXh0JzogJ0NyZWF0ZSd9LAorICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50 XzUnLAorICAgICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgaWYgKG0gaW5zdGFu Y2VvZiBCYWNrYm9uZS5Nb2RlbCAmJiBtLmlzTmV3KCkgJiYgIW0udG9wLmlzTmV3KCkpCisgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9 LHsKKyAgICAgIGlkOiAncGFydGl0aW9uX25hbWUnLCBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLCB0 eXBlOiAndGV4dCcsIGNlbGw6J3N0cmluZycsCisgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dp ZHRoX3BlcmNlbnRfMjUnLAorICAgICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg aWYgKG0gaW5zdGFuY2VvZiBCYWNrYm9uZS5Nb2RlbCAmJiBtLmlzTmV3KCkpCisgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0sIGNlbGxGdW5jdGlv bjogZ2V0UGFydGl0aW9uQ2VsbAorICAgIH0seworICAgICAgaWQ6ICd2YWx1ZXNfZnJvbScsIGxh YmVsOidGcm9tJywgdHlwZTondGV4dCcsCisgICAgICBjZWxsOkJhY2tncmlkLkV4dGVuc2lvbi5T dHJpbmdEZXBDZWxsLAorICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzIw JywKKyAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgaWYobS5oYW5kbGVyICYm IG0uaGFuZGxlci50b3AgJiYKKyAgICAgICAgICBtLmhhbmRsZXIudG9wLmF0dHJpYnV0ZXMgJiYK KyAgICAgICAgICBtLmhhbmRsZXIudG9wLmF0dHJpYnV0ZXMucGFydGl0aW9uX3R5cGUgPT0gJ3Jh bmdlJyAmJgorICAgICAgICAgIG0gaW5zdGFuY2VvZiBCYWNrYm9uZS5Nb2RlbCAmJiBtLmlzTmV3 KCkpCisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg fQorICAgIH0seworICAgICAgaWQ6ICd2YWx1ZXNfdG8nLCBsYWJlbDonVG8nLCB0eXBlOid0ZXh0 JywKKyAgICAgIGNlbGw6QmFja2dyaWQuRXh0ZW5zaW9uLlN0cmluZ0RlcENlbGwsCisgICAgICBj ZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjAnLAorICAgICAgZWRpdGFibGU6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgaWYobS5oYW5kbGVyICYmIG0uaGFuZGxlci50b3AgJiYKKyAg ICAgICAgICBtLmhhbmRsZXIudG9wLmF0dHJpYnV0ZXMgJiYKKyAgICAgICAgICBtLmhhbmRsZXIu dG9wLmF0dHJpYnV0ZXMucGFydGl0aW9uX3R5cGUgPT0gJ3JhbmdlJyAmJgorICAgICAgICAgIG0g aW5zdGFuY2VvZiBCYWNrYm9uZS5Nb2RlbCAmJiBtLmlzTmV3KCkpCisgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9LHsKKyAgICAgIGlk OiAndmFsdWVzX2luJywgbGFiZWw6J0luJywgdHlwZTondGV4dCcsCisgICAgICBjZWxsOkJhY2tn cmlkLkV4dGVuc2lvbi5TdHJpbmdEZXBDZWxsLAorICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3 aWR0aF9wZXJjZW50XzI1JywKKyAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAg IGlmKG0uaGFuZGxlciAmJiBtLmhhbmRsZXIudG9wICYmCisgICAgICAgICAgbS5oYW5kbGVyLnRv cC5hdHRyaWJ1dGVzICYmCisgICAgICAgICAgbS5oYW5kbGVyLnRvcC5hdHRyaWJ1dGVzLnBhcnRp dGlvbl90eXBlID09ICdsaXN0JyAmJgorICAgICAgICAgIG0gaW5zdGFuY2VvZiBCYWNrYm9uZS5N b2RlbCAmJiBtLmlzTmV3KCkpCisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgIH0KKyAgICB9XSwKKyAgICB2YWxpZGF0ZTogZnVuY3Rpb24oa2V5cykg eworICAgICAgdmFyIHBhcnRpdGlvbl9uYW1lID0gdGhpcy5nZXQoJ3BhcnRpdGlvbl9uYW1lJyks CisgICAgICAgICB2YWx1ZXNfZnJvbSA9IHRoaXMuZ2V0KCd2YWx1ZXNfZnJvbScpLAorICAgICAg ICAgdmFsdWVzX3RvID0gdGhpcy5nZXQoJ3ZhbHVlc190bycpLAorICAgICAgICAgdmFsdWVzX2lu ID0gdGhpcy5nZXQoJ3ZhbHVlc19pbicpOworCisgICAgICAvLyBIYXZlIHRvIGNsZWFyIGV4aXN0 aW5nIHZhbGlkYXRpb24gYmVmb3JlIGluaXRpYXRpbmcgY3VycmVudCBzdGF0ZQorICAgICAgLy8g dmFsaWRhdGlvbiBvbmx5CisgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsKKworICAgICAg aWYgKF8uaXNVbmRlZmluZWQocGFydGl0aW9uX25hbWUpIHx8IF8uaXNOdWxsKHBhcnRpdGlvbl9u YW1lKSB8fAorICAgICAgIFN0cmluZyhwYXJ0aXRpb25fbmFtZSkucmVwbGFjZSgvXlxzK3xccysk L2csICcnKSA9PSAnJykgeworICAgICAgIG1zZyA9IGdldHRleHQoJ1BhcnRpdGlvbiBuYW1lIGNh bm5vdCBiZSBlbXB0eS4nKTsKKyAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdwYXJ0aXRpb25f bmFtZScsIG1zZyk7CisgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgIH0KKworICAgICAgaWYgKHRo aXMudG9wLmdldCgncGFydGl0aW9uX3R5cGUnKSA9PSAncmFuZ2UnKSB7CisgICAgICAgIGlmIChf LmlzVW5kZWZpbmVkKHZhbHVlc19mcm9tKSB8fCBfLmlzTnVsbCh2YWx1ZXNfZnJvbSkgfHwKKyAg ICAgICAgICBTdHJpbmcodmFsdWVzX2Zyb20pLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0g JycpIHsKKyAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdGb3IgcmFuZ2UgcGFydGl0aW9uIEZyb20g ZmllbGQgY2Fubm90IGJlIGVtcHR5LicpOworICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQo J3ZhbHVlc19mcm9tJywgbXNnKTsKKyAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICB9IGVs c2UgaWYgKF8uaXNVbmRlZmluZWQodmFsdWVzX3RvKSB8fCBfLmlzTnVsbCh2YWx1ZXNfdG8pIHx8 CisgICAgICAgICAgU3RyaW5nKHZhbHVlc190bykucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgeworICAgICAgICAgIG1zZyA9IGdldHRleHQoJ0ZvciByYW5nZSBwYXJ0aXRpb24gVG8g ZmllbGQgY2Fubm90IGJlIGVtcHR5LicpOworICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQo J3ZhbHVlc190bycsIG1zZyk7CisgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgfQorICAg ICAgfSBlbHNlIGlmICh0aGlzLnRvcC5nZXQoJ3BhcnRpdGlvbl90eXBlJykgPT0gJ2xpc3QnKSB7 CisgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHZhbHVlc19pbikgfHwgXy5pc051bGwodmFsdWVz X2luKSB8fAorICAgICAgICAgIFN0cmluZyh2YWx1ZXNfaW4pLnJlcGxhY2UoL15ccyt8XHMrJC9n LCAnJykgPT0gJycpIHsKKyAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdGb3IgbGlzdCBwYXJ0aXRp b24gSW4gZmllbGQgY2Fubm90IGJlIGVtcHR5LicpOworICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC5zZXQoJ3ZhbHVlc19pbicsIG1zZyk7CisgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAg fQorICAgICAgfQorCisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0pOworCit9KTsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUuanMgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGlj L2pzL3RhYmxlLmpzCmluZGV4IGRiZDE3MWUuLjdiMGM2YjcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9zdGF0aWMvanMvdGFibGUuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy90YWJsZS5qcwpA QCAtMyw4ICszLDEwIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywgWwogICAndW5kZXJz Y29yZS5zdHJpbmcnLCAncGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAnYWxlcnRpZnknLAog ICAnc291cmNlcy9hbGVydHMvYWxlcnRpZnlfd3JhcHBlcicsCiAgICdwZ2FkbWluLmJyb3dzZXIu Y29sbGVjdGlvbicsICdwZ2FkbWluLm5vZGUuY29sdW1uJywKLSAgJ3BnYWRtaW4ubm9kZS5jb25z dHJhaW50cycKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMsIHBnQWRtaW4s IHBnQnJvd3NlciwgYWxlcnRpZnksIEFsZXJ0aWZ5V3JhcHBlcikgeworICAncGdhZG1pbi5ub2Rl LmNvbnN0cmFpbnRzJywgJ3BnYWRtaW4uYnJvd3Nlci50YWJsZS5wYXJ0aXRpb24udXRpbHMnCitd LCBmdW5jdGlvbigKKyAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93 c2VyLCBhbGVydGlmeSwgQWxlcnRpZnlXcmFwcGVyCispIHsKIAogICBpZiAoIXBnQnJvd3Nlci5O b2Rlc1snY29sbC10YWJsZSddKSB7CiAgICAgdmFyIGRhdGFiYXNlcyA9IHBnQnJvd3Nlci5Ob2Rl c1snY29sbC10YWJsZSddID0KQEAgLTEyLDcgKzE0LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUu dGFibGUnLCBbCiAgICAgICAgIG5vZGU6ICd0YWJsZScsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdUYWJsZXMnKSwKICAgICAgICAgdHlwZTogJ2NvbGwtdGFibGUnLAotICAgICAgICBjb2x1bW5z OiBbJ25hbWUnLCAncmVsb3duZXInLCAnZGVzY3JpcHRpb24nXSwKKyAgICAgICAgY29sdW1uczog WyduYW1lJywgJ3JlbG93bmVyJywgJ2lzX3BhcnRpdGlvbmVkJywgJ2Rlc2NyaXB0aW9uJ10sCiAg ICAgICAgIGhhc1N0YXRpc3RpY3M6IHRydWUsCiAgICAgICAgIHN0YXRzUHJldHRpZnlGaWVsZHM6 IFsnU2l6ZScsICdJbmRleGVzIHNpemUnLCAnVGFibGUgc2l6ZScsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnVG9hc3QgdGFibGUgc2l6ZScsICdUdXBsZSBsZW5ndGgnLApAQCAtMjIs NiArMjQsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKIAogICBpZiAoIXBnQnJv d3Nlci5Ob2Rlc1sndGFibGUnXSkgewogICAgIHBnQnJvd3Nlci5Ob2Rlc1sndGFibGUnXSA9IHBn QnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93 c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6ICd0YWJsZScsCiAg ICAgICBsYWJlbDogZ2V0dGV4dCgnVGFibGUnKSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2Nv bGwtdGFibGUnLApAQCAtMzksNyArNDIsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScs IFsKICAgICAgIGhlaWdodDogJzk1JScsCiAgICAgICB3aWR0aDogJzg1JScsCiAgICAgICBJbml0 OiBmdW5jdGlvbigpIHsKLSAgICAgICAgLyogQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9m IG1lbnVzICovCisgICAgICAgIC8qIEF2b2lkIG11bHRpcGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51 cyAqLwogICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKICAgICAgICAgICAgIHJldHVybjsK IApAQCAtMjg0LDcgKzI4NywxMCBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAg ICAgICAgICBoYXN0b2FzdHRhYmxlOiB0cnVlLAogICAgICAgICAgIHRvYXN0X2F1dG92YWN1dW1f ZW5hYmxlZDogZmFsc2UsCiAgICAgICAgICAgYXV0b3ZhY3V1bV9lbmFibGVkOiBmYWxzZSwKLSAg ICAgICAgICBwcmltYXJ5X2tleTogW10KKyAgICAgICAgICBwcmltYXJ5X2tleTogW10sCisgICAg ICAgICAgcGFydGl0aW9uczogW10sCisgICAgICAgICAgcGFydGl0aW9uX3R5cGU6ICdyYW5nZScs CisgICAgICAgICAgaXNfcGFydGl0aW9uZWQ6IGZhbHNlCiAgICAgICAgIH0sCiAgICAgICAgIC8v IERlZmF1bHQgdmFsdWVzIQogICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihhdHRycywgYXJn cykgewpAQCAtMzMwLDEyICszMzYsMzcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBb CiAgICAgICAgICAgICByZXR1cm4gKCEoZCAmJiBkLmxhYmVsLm1hdGNoKC9wZ19nbG9iYWwvKSkp CiAgICAgICAgICAgfQogICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3BhcnRpdGlvbicsIHR5 cGU6ICdncm91cCcsIGxhYmVsOiBnZXR0ZXh0KCdQYXJ0aXRpb24nKSwKKyAgICAgICAgICBtb2Rl OiBbJ2VkaXQnLCAnY3JlYXRlJ10sIG1pbl92ZXJzaW9uOiAxMDAwMDAsCisgICAgICAgICAgdmlz aWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgLy8gQWx3YXlzIHNob3cgaW4gY2FzZSBv ZiBjcmVhdGUgbW9kZQorICAgICAgICAgICAgaWYgKG0uaXNOZXcoKSB8fCBtLmdldCgnaXNfcGFy dGl0aW9uZWQnKSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2lzX3Bh cnRpdGlvbmVkJywgbGFiZWw6Z2V0dGV4dCgnUGFydGl0aW9uZWQgVGFibGU/JyksIGNlbGw6ICdz d2l0Y2gnLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAn Y3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykgJiYgIV8uaXNVbmRlZmluZWQo bS5ub2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAgICAmJiAhXy5pc1VuZGVmaW5lZChtLm5v ZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAgICAgbS5ub2RlX2luZm8uc2Vy dmVyLnZlcnNpb24gPj0gMTAwMDAwKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0sCisgICAgICAgICAgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmICghbS5pc05ldygpKQorICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9Cisg ICAgICAgIH0sewogICAgICAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogZ2V0dGV4dCgn Q29tbWVudCcpLCB0eXBlOiAnbXVsdGlsaW5lJywKICAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRp ZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZGlzYWJsZWQ6ICdpblNjaGVtYScKICAgICAgICAgfSx7 CiAgICAgICAgICAgaWQ6ICdjb2xsX2luaGVyaXRzJywgbGFiZWw6IGdldHRleHQoJ0luaGVyaXRl ZCBmcm9tIHRhYmxlKHMpJyksCiAgICAgICAgICAgdXJsOiAnZ2V0X2luaGVyaXRzJywgdHlwZTog J2FycmF5JywgZ3JvdXA6IGdldHRleHQoJ0NvbHVtbnMnKSwKLSAgICAgICAgICBkaXNhYmxlZDog J2NoZWNrSW5oZXJpdGFuY2UnLCBkZXBzOiBbJ3R5cG5hbWUnXSwKKyAgICAgICAgICBkaXNhYmxl ZDogJ2NoZWNrSW5oZXJpdGFuY2UnLCBkZXBzOiBbJ3R5cG5hbWUnLCAnaXNfcGFydGl0aW9uZWQn XSwKICAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sCiAgICAgICAgICAgc2VsZWN0 MjogeyBtdWx0aXBsZTogdHJ1ZSwgYWxsb3dDbGVhcjogdHJ1ZSwKICAgICAgICAgICBwbGFjZWhv bGRlcjogZ2V0dGV4dCgnU2VsZWN0IHRvIGluaGVyaXQgZnJvbS4uLicpfSwKQEAgLTQzMiw3ICs0 NjMsMjYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgICAgbW9kZWw6 IHBnQnJvd3Nlci5Ob2Rlc1snY29sdW1uJ10ubW9kZWwsCiAgICAgICAgICAgc3Vibm9kZTogcGdC cm93c2VyLk5vZGVzWydjb2x1bW4nXS5tb2RlbCwKICAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScs ICdlZGl0J10sCi0gICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScsIGRlcHM6IFsndHlwbmFt ZSddLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBJ biBjYXNlIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHJlbW92ZSBpbmhlcml0ZWQgY29sdW1ucworICAg ICAgICAgICAgaWYgKG0uaXNOZXcoKSAmJiBtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkgeworICAg ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBj b2xsID0gbS5nZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgICAgICBjb2xsLnJlbW92ZShjb2xs LmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAgICAgaWYgKF8uaXNVbmRl ZmluZWQobW9kZWwuZ2V0KCdpbmhlcml0ZWRmcm9tJykpKQorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg ICAgICB9KSk7CisgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdjYXRhbG9nJyBpbiB0aGlzLm5vZGVfaW5mbykK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICBkZXBz OiBbJ3R5cG5hbWUnLCAnaXNfcGFydGl0aW9uZWQnXSwKICAgICAgICAgICBjYW5BZGQ6ICdjaGVj a19ncmlkX2FkZF9jb25kaXRpb24nLAogICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0 ZTogdHJ1ZSwKICAgICAgICAgICAvLyBGb3IgZWFjaCByb3cgZWRpdC9kZWxldGUgYnV0dG9uIGVu YWJsZS9kaXNhYmxlCkBAIC01MzUsMTAgKzU4NSwyMiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50 YWJsZScsIFsKICAgICAgICAgICAgICAgc3Vibm9kZTogcGdCcm93c2VyLk5vZGVzWydwcmltYXJ5 X2tleSddLm1vZGVsLAogICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xs ZWN0aW9uJywKICAgICAgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ1ByaW1hcnkgS2V5JyksIG1v ZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKLSAgICAgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2Fu RGVsZXRlOiB0cnVlLAorICAgICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRy dWUsIGRlcHM6Wydpc19wYXJ0aXRpb25lZCddLAogICAgICAgICAgICAgICBjb250cm9sOiAndW5p cXVlLWNvbC1jb2xsZWN0aW9uJywKICAgICAgICAgICAgICAgY29sdW1ucyA6IFsnbmFtZScsICdj b2x1bW5zJ10sCi0gICAgICAgICAgICAgIGNhbkFkZDogdHJ1ZSwKKyAgICAgICAgICAgICAgY2Fu QWRkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgaWYgKG0uZ2V0KCdpc19wYXJ0aXRp b25lZCcpKSB7CisgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg ICAgICAgICAgICAgICAgICB2YXIgY29sbCA9IG0uZ2V0KCdwcmltYXJ5X2tleScpOworICAgICAg ICAgICAgICAgICAgICBjb2xsLnJlbW92ZShjb2xsLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgewor ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9 KSk7CisgICAgICAgICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIGNhbkFkZFJvdzogZnVuY3Rpb24obSkg ewogICAgICAgICAgICAgICAgLy8gVXNlciBjYW4gb25seSBhZGQgb25lIHByaW1hcnkga2V5CiAg ICAgICAgICAgICAgICB2YXIgY29sdW1ucyA9IG0uZ2V0KCdjb2x1bW5zJyk7CkBAIC01NTMsOSAr NjE1LDIxIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywgWwogICAgICAgICAgICAgICBz dWJub2RlOiBwZ0Jyb3dzZXIuTm9kZXNbJ2ZvcmVpZ25fa2V5J10ubW9kZWwsCiAgICAgICAgICAg ICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAogICAgICAgICAgICAgICBn cm91cDogZ2V0dGV4dCgnRm9yZWlnbiBLZXknKSwgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAot ICAgICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAg ICAgIGNhbkVkaXQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwgZGVwczpbJ2lzX3BhcnRpdGlvbmVk J10sCiAgICAgICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLAotICAg ICAgICAgICAgICBjYW5BZGQ6IHRydWUsCisgICAgICAgICAgICAgIGNhbkFkZDogZnVuY3Rpb24o bSkgeworICAgICAgICAgICAgICAgIGlmIChtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkgeworICAg ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg ICAgdmFyIGNvbGwgPSBtLmdldCgnZm9yZWlnbl9rZXknKTsKKyAgICAgICAgICAgICAgICAgICAg Y29sbC5yZW1vdmUoY29sbC5maWx0ZXIoZnVuY3Rpb24obW9kZWwpIHsKKyAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAg ICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg ICB9LAogICAgICAgICAgICAgICBjb2x1bW5zIDogWyduYW1lJywgJ2NvbHVtbnMnXSwKICAgICAg ICAgICAgICAgY2FuQWRkUm93OiBmdW5jdGlvbihtKSB7CiAgICAgICAgICAgICAgICAvLyBVc2Vy IGNhbiBvbmx5IGFkZCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY29sdW1uIHdpdGggbmFtZS4K QEAgLTU2OCw3ICs2NDIsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAgICAg ICAgICAgICAgc3Vibm9kZTogcGdCcm93c2VyLk5vZGVzWydjaGVja19jb25zdHJhaW50cyddLm1v ZGVsLAogICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywK ICAgICAgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0NoZWNrJyksIG1vZGU6IFsnZWRpdCcsICdj cmVhdGUnXSwKLSAgICAgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAor ICAgICAgICAgICAgICBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGRlcHM6Wydpc19w YXJ0aXRpb25lZCddLAogICAgICAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0 aW9uJywKICAgICAgICAgICAgICAgY2FuQWRkOiB0cnVlLAogICAgICAgICAgICAgICBjb2x1bW5z IDogWyduYW1lJywgJ2NvbnNyYyddCkBAIC01NzgsMTAgKzY1MiwyMiBAQCBkZWZpbmUoJ3BnYWRt aW4ubm9kZS50YWJsZScsIFsKICAgICAgICAgICAgICAgc3Vibm9kZTogcGdCcm93c2VyLk5vZGVz Wyd1bmlxdWVfY29uc3RyYWludCddLm1vZGVsLAogICAgICAgICAgICAgICBlZGl0YWJsZTogZmFs c2UsIHR5cGU6ICdjb2xsZWN0aW9uJywKICAgICAgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ1Vu aXF1ZScpLCBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sCi0gICAgICAgICAgICAgIGNhbkVkaXQ6 IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2Fu RGVsZXRlOiB0cnVlLCBkZXBzOlsnaXNfcGFydGl0aW9uZWQnXSwKICAgICAgICAgICAgICAgY29u dHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsCiAgICAgICAgICAgICAgIGNvbHVtbnMgOiBb J25hbWUnLCAnY29sdW1ucyddLAotICAgICAgICAgICAgICBjYW5BZGQ6IHRydWUsCisgICAgICAg ICAgICAgIGNhbkFkZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICAgIGlmIChtLmdldCgn aXNfcGFydGl0aW9uZWQnKSkgeworICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv bigpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGNvbGwgPSBtLmdldCgndW5pcXVlX2NvbnN0 cmFpbnQnKTsKKyAgICAgICAgICAgICAgICAgICAgY29sbC5yZW1vdmUoY29sbC5maWx0ZXIoZnVu Y3Rpb24obW9kZWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgICAgICAgfSwgMTApOworICAgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICBjYW5BZGRS b3c6IGZ1bmN0aW9uKG0pIHsKICAgICAgICAgICAgICAgIC8vIFVzZXIgY2FuIG9ubHkgYWRkIGlm IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjb2x1bW4gd2l0aCBuYW1lLgogICAgICAgICAgICAgICAg dmFyIGNvbHVtbnMgPSBtLmdldCgnY29sdW1ucycpOwpAQCAtNTkzLDEwICs2NzksMjIgQEAgZGVm aW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgICAgICAgIHN1Ym5vZGU6IHBnQnJv d3Nlci5Ob2Rlc1snZXhjbHVzaW9uX2NvbnN0cmFpbnQnXS5tb2RlbCwKICAgICAgICAgICAgICAg ZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnY29sbGVjdGlvbicsCiAgICAgICAgICAgICAgIGdyb3Vw OiBnZXR0ZXh0KCdFeGNsdWRlJyksIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKLSAgICAgICAg ICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgICAgICBjYW5F ZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGRlcHM6Wydpc19wYXJ0aXRpb25lZCddLAogICAg ICAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywKICAgICAgICAgICAg ICAgY29sdW1ucyA6IFsnbmFtZScsICdjb2x1bW5zJywgJ2NvbnN0cmFpbnQnXSwKLSAgICAgICAg ICAgICAgY2FuQWRkOiB0cnVlLAorICAgICAgICAgICAgICBjYW5BZGQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICAgICAgICBpZiAobS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpIHsKKyAgICAgICAg ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHZh ciBjb2xsID0gbS5nZXQoJ2V4Y2x1ZGVfY29uc3RyYWludCcpOworICAgICAgICAgICAgICAgICAg ICBjb2xsLnJlbW92ZShjb2xsLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9KSk7CisgICAgICAg ICAgICAgICAgICB9LCAxMCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg ICAgIH0sCiAgICAgICAgICAgICAgIGNhbkFkZFJvdzogZnVuY3Rpb24obSkgewogICAgICAgICAg ICAgICAgLy8gVXNlciBjYW4gb25seSBhZGQgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNvbHVt biB3aXRoIG5hbWUuCiAgICAgICAgICAgICAgICB2YXIgY29sdW1ucyA9IG0uZ2V0KCdjb2x1bW5z Jyk7CkBAIC02MDcsNyArNzA1LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAg ICAgICAgICAgaWQ6ICd0eXBuYW1lJywgbGFiZWw6IGdldHRleHQoJ09mIHR5cGUnKSwgdHlwZTog J3RleHQnLAogICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIG1vZGU6IFsn cHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAogICAgICAgICAgIGRpc2FibGVkOiAnY2hl Y2tPZlR5cGUnLCB1cmw6ICdnZXRfb2Z0eXBlJywgZ3JvdXA6IGdldHRleHQoJ0FkdmFuY2VkJyks Ci0gICAgICAgICAgZGVwczogWydjb2xsX2luaGVyaXRzJ10sIHRyYW5zZm9ybTogZnVuY3Rpb24o ZGF0YSwgY2VsbCkgeworICAgICAgICAgIGRlcHM6IFsnY29sbF9pbmhlcml0cycsICdpc19wYXJ0 aXRpb25lZCddLCB0cmFuc2Zvcm06IGZ1bmN0aW9uKGRhdGEsIGNlbGwpIHsKICAgICAgICAgICAg IHZhciBjb250cm9sID0gY2VsbCB8fCB0aGlzLAogICAgICAgICAgICAgICBtID0gY29udHJvbC5t b2RlbDsKICAgICAgICAgICAgICAgbS5vZl90eXBlc190YWJsZXMgPSBkYXRhOwpAQCAtNzExLDEw ICs4MDksMTgwIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywgWwogICAgICAgICAgICAg ZGlzYWJsZWQ6ICdpc0xpa2VEaXNhYmxlJywgZ3JvdXA6IGdldHRleHQoJ0xpa2UnKQogICAgICAg ICAgIH1dCiAgICAgICAgIH0seworICAgICAgICAgIGlkOiAncGFydGl0aW9uX3R5cGUnLCBsYWJl bDpnZXR0ZXh0KCdQYXJ0aXRpb24gVHlwZScpLAorICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwg dHlwZTogJ3NlbGVjdDInLCBzZWxlY3QyOiB7YWxsb3dDbGVhcjogZmFsc2V9LAorICAgICAgICAg IGdyb3VwOiAncGFydGl0aW9uJywgZGVwczogWydpc19wYXJ0aXRpb25lZCddLAorICAgICAgICAg IG9wdGlvbnM6W3sKKyAgICAgICAgICAgIGxhYmVsOiAnUmFuZ2UnLCB2YWx1ZTogJ3JhbmdlJwor ICAgICAgICAgIH0seworICAgICAgICAgICAgbGFiZWw6ICdMaXN0JywgdmFsdWU6ICdsaXN0Jwor ICAgICAgICAgIH1dLAorICAgICAgICAgIG1vZGU6WydjcmVhdGUnXSwKKyAgICAgICAgICB2aXNp YmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVf aW5mbykgJiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAg ICAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAg ICAgICAgICAgbS5ub2RlX2luZm8uc2VydmVyLnZlcnNpb24gPj0gMTAwMDAwKQorICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg IH0sCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmICgh bS5pc05ldygpIHx8ICFtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkKKyAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ3BhcnRpdGlvbl9rZXlzJywgbGFiZWw6Z2V0dGV4dCgnUGFy dGl0aW9uIEtleXMnKSwKKyAgICAgICAgICBtb2RlbDogQmFja2Zvcm0uUGFydGl0aW9uS2V5TW9k ZWwsCisgICAgICAgICAgc3Vibm9kZTogQmFja2Zvcm0uUGFydGl0aW9uS2V5TW9kZWwsCisgICAg ICAgICAgZWRpdGFibGU6IHRydWUsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICBncm91 cDogJ3BhcnRpdGlvbicsIG1vZGU6IFsnY3JlYXRlJ10sCisgICAgICAgICAgZGVwczogWydpc19w YXJ0aXRpb25lZCcsICdwYXJ0aXRpb25fdHlwZSddLAorICAgICAgICAgIGNhbkVkaXQ6IGZhbHNl LCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAgY29udHJvbDogJ3N1Yi1ub2RlLWNvbGxlY3Rp b24nLAorICAgICAgICAgIGNhbkFkZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgaWYgKG0u aXNOZXcoKSAmJiBtLmdldCgnaXNfcGFydGl0aW9uZWQnKSkKKyAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAg ICBjYW5BZGRSb3c6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHZhciBjb2x1bW5zID0gbS5n ZXQoJ2NvbHVtbnMnKTsKKyAgICAgICAgICAgIHZhciBtYXhfcm93X2NvdW50ID0gMTAwMDsKKwor ICAgICAgICAgICAgaWYgKG0uZ2V0KCdwYXJ0aXRpb25fdHlwZScpICYmIG0uZ2V0KCdwYXJ0aXRp b25fdHlwZScpID09ICdsaXN0JykKKyAgICAgICAgICAgICAgbWF4X3Jvd19jb3VudCA9IDE7CisK KyAgICAgICAgICAgIHJldHVybiAobS5nZXQoJ3BhcnRpdGlvbl9rZXlzJykgJiYKKyAgICAgICAg ICAgICAgICBtLmdldCgncGFydGl0aW9uX2tleXMnKS5sZW5ndGggPCBtYXhfcm93X2NvdW50ICYm CisgICAgICAgICAgICAgICAgXy5zb21lKGNvbHVtbnMucGx1Y2soJ25hbWUnKSkKKyAgICAgICAg ICAgICk7CisgICAgICAgICAgfSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7Cisg ICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykgJiYgIV8uaXNVbmRlZmlu ZWQobS5ub2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAgICAmJiAhXy5pc1VuZGVmaW5lZCht Lm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAgICAgbS5ub2RlX2luZm8u c2VydmVyLnZlcnNpb24gPj0gMTAwMDAwKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwor ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0sCisgICAgICAgICAgZGlzYWJs ZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmIChtLmdldCgncGFydGl0aW9uX2tleXMn KSAmJiBtLmdldCgncGFydGl0aW9uX2tleXMnKS5tb2RlbHMubGVuZ3RoID4gMCkgeworICAgICAg ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY29s bCA9IG0uZ2V0KCdwYXJ0aXRpb25fa2V5cycpOworICAgICAgICAgICAgICAgIGNvbGwucmVtb3Zl KGNvbGwuZmlsdGVyKGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICAgIH0sIDEwKTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncGFydGl0 aW9uX3NjaGVtZScsIGxhYmVsOiBnZXR0ZXh0KCdQYXJ0aXRpb24gU2NoZW1lJyksCisgICAgICAg ICAgdHlwZTogJ25vdGUnLCBncm91cDogJ3BhcnRpdGlvbicsIG1vZGU6IFsnZWRpdCddLAorICAg ICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmKCFfLmlzVW5kZWZp bmVkKG0ubm9kZV9pbmZvKSAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIpCisg ICAgICAgICAgICAgICYmICFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvLnNlcnZlci52ZXJzaW9u KSAmJgorICAgICAgICAgICAgICBtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbiA+PSAxMDAwMDAp CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICAgfSwKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAg ICAgICAgaWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgdGhpcy50ZXh0ID0gbS5nZXQo J3BhcnRpdGlvbl9zY2hlbWUnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAg IH0seworICAgICAgICAgIGlkOiAncGFydGl0aW9ucycsIGxhYmVsOmdldHRleHQoJ1BhcnRpdGlv bnMnKSwKKyAgICAgICAgICBtb2RlbDogQmFja2Zvcm0uUGFydGl0aW9uc01vZGVsLAorICAgICAg ICAgIHN1Ym5vZGU6IEJhY2tmb3JtLlBhcnRpdGlvbnNNb2RlbCwKKyAgICAgICAgICBlZGl0YWJs ZTogdHJ1ZSwgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdyb3VwOiAncGFydGl0aW9u JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIGRlcHM6IFsnaXNfcGFydGl0 aW9uZWQnLCAncGFydGl0aW9uX3R5cGUnXSwKKyAgICAgICAgICBjYW5FZGl0OiBmYWxzZSwgY2Fu RGVsZXRlOiB0cnVlLAorICAgICAgICAgIGN1c3RvbURlbGV0ZVRpdGxlOiBnZXR0ZXh0KCdEZXRh Y2ggUGFydGl0aW9uJyksCisgICAgICAgICAgY3VzdG9tRGVsZXRlTXNnOiBnZXR0ZXh0KCdBcmUg eW91IHN1cmUgeW91IHdpc2ggdG8gZGV0YWNoIHRoaXMgcGFydGl0aW9uPycpLAorICAgICAgICAg IGNvbHVtbnM6Wydpc19hdHRhY2gnLCAncGFydGl0aW9uX25hbWUnLCAndmFsdWVzX2Zyb20nLCAn dmFsdWVzX3RvJywgJ3ZhbHVlc19pbiddLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLlN1 Yk5vZGVDb2xsZWN0aW9uQ29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgcm93OiBCYWNrZ3Jp ZC5QYXJ0aXRpb25Sb3csCisgICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKKyAg ICAgICAgICAgICAgQmFja2Zvcm0uU3ViTm9kZUNvbGxlY3Rpb25Db250cm9sLnByb3RvdHlwZS5p bml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgIHZhciBzZWxm ID0gdGhpczsKKyAgICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmlzTmV3KCkpIHsKKyAgICAg ICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdzY2hlbWFfbm9kZScpLAorICAg ICAgICAgICAgICAgICAgICBub2RlX2luZm8gPSB0aGlzLmZpZWxkLmdldCgnbm9kZV9pbmZvJyk7 CisKKyAgICAgICAgICAgICAgICAvLyBNYWtlIGFqYXggY2FsbCB0byBnZXQgdGhlIHRhYmxlcyB0 byBiZSBhdHRhY2hlZAorICAgICAgICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICAgICAg ICB1cmw6IG5vZGUuZ2VuZXJhdGVfdXJsLmFwcGx5KAorICAgICAgICAgICAgICAgICAgICAgIG5v ZGUsIFsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsICdnZXRfYXR0YWNoX3RhYmxlcycs IHRoaXMuZmllbGQuZ2V0KCdub2RlX2RhdGEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRy dWUsIG5vZGVfaW5mbworICAgICAgICAgICAgICAgICAgICAgIF0pLAorCisgICAgICAgICAgICAg ICAgICB0eXBlOiAnR0VUJywKKyAgICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZSwKKyAgICAg ICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICAgICAg ICBpZiAocmVzLnN1Y2Nlc3MgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgIHNlbGYubW9k ZWwudGFibGVfb3B0aW9ucyA9IHJlcy5kYXRhOworICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFs ZXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAgJ0Vycm9yIGZldGNoaW5nIHRhYmxlcyB0byBi ZSBhdHRhY2hlZCcsIHJlcy5kYXRhLnJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICk7Cisg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg ICAgICBlcnJvcjogZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZXJybXNn ID0gJC5wYXJzZUpTT04oZS5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAgICAgICBhbGVy dGlmeS5hbGVydCgnRXJyb3IgZmV0Y2hpbmcgdGFibGVzIHRvIGJlIGF0dGFjaGVkLicsIGVycm1z Zy5lcnJvcm1zZyk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgKSwK KyAgICAgICAgICBjYW5BZGQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmIChtLmdldCgn aXNfcGFydGl0aW9uZWQnKSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykgJiYgIV8u aXNVbmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAgICAmJiAhXy5pc1Vu ZGVmaW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAgICAgbS5u b2RlX2luZm8uc2VydmVyLnZlcnNpb24gPj0gMTAwMDAwKQorICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0sCisgICAgICAg ICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIGlmIChtLmlzTmV3KCkgJiYg bS5nZXQoJ3BhcnRpdGlvbnMnKSAmJiBtLmdldCgncGFydGl0aW9ucycpLm1vZGVscy5sZW5ndGgg PiAwKSB7CisgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAg ICAgICAgIHZhciBjb2xsID0gbS5nZXQoJ3BhcnRpdGlvbnMnKTsKKyAgICAgICAgICAgICAgICBj b2xsLnJlbW92ZShjb2xsLmZpbHRlcihmdW5jdGlvbihtb2RlbCkgeworICAgICAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgICB9LCAx MCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ3BhcnRpdGlvbl9ub3RlJywgbGFiZWw6IGdldHRleHQoJ1BhcnRpdGlvbicpLAorICAgICAg ICAgIHR5cGU6ICdub3RlJywgZ3JvdXA6ICdwYXJ0aXRpb24nLAorICAgICAgICAgIHRleHQ6IGdl dHRleHQoJ0Fib3ZlIGNvbnRyb2wgd2lsbCBiZSB1c2VkIHRvIENyZWF0ZS9BdHRhY2gvRGV0YWNo IHBhcnRpdGlvbnMuPGJyPicgKworICAgICAgICAgICAgJzx1bD48bGk+Q3JlYXRlIE1vZGU6IFVz ZXIgd2lsbCBiZSBhYmxlIHRvIGNyZWF0ZSBOIG51bWJlciBvZiBwYXJ0aXRpb25zLiBNb2RlIHN3 aXRjaCBjb250cm9sIGlzIGRpc2FibGVkIGluIHRoaXMgc2NlbmFyaW8uPC9saT4nICsKKyAgICAg ICAgICAgICc8bGk+RWRpdCBNb2RlOiBVc2VyIHdpbGwgYmUgYWJsZSB0byBjcmVhdGUvYXR0YWNo L2RldGFjaCBOIG51bWJlciBvZiBwYXJ0aXRpb25zLicgKworICAgICAgICAgICAgJ0luIGF0dGFj aCBtb2RlIHRoZXJlIHdpbGwgYmUgbGlzdCBvZiBzdWl0YWJsZSB0YWJsZXMgdG8gYmUgYXR0YWNo ZWQuPC9saT48L3VsPicpLAorICAgICAgICAgIHZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKG0ubm9kZV9pbmZvKSAmJiAhXy5pc1VuZGVmaW5lZCht Lm5vZGVfaW5mby5zZXJ2ZXIpCisgICAgICAgICAgICAgICYmICFfLmlzVW5kZWZpbmVkKG0ubm9k ZV9pbmZvLnNlcnZlci52ZXJzaW9uKSAmJgorICAgICAgICAgICAgICBtLm5vZGVfaW5mby5zZXJ2 ZXIudmVyc2lvbiA+PSAxMDAwMDApCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICB9LHsKICAgICAgICAg ICAvLyBIZXJlIC0gd2Ugd2lsbCBjcmVhdGUgdGFiIGNvbnRyb2wgZm9yIHN0b3JhZ2UgcGFyYW1l dGVycwogICAgICAgICAgIC8vIChhdXRvIHZhY3V1bSkuCiAgICAgICAgICAgdHlwZTogJ25lc3Rl ZCcsIGNvbnRyb2w6ICd0YWInLCBncm91cDogZ2V0dGV4dCgnUGFyYW1ldGVyJyksCi0gICAgICAg ICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdj cmVhdGUnXSwgZGVwczogWydpc19wYXJ0aXRpb25lZCddLAogICAgICAgICAgIHNjaGVtYTogQmFj a2Zvcm0uVmFjdXVtU2V0dGluZ3NTY2hlbWEKICAgICAgICAgfSx7CiAgICAgICAgICAgaWQ6ICdy ZWxhY2xfc3RyJywgbGFiZWw6IGdldHRleHQoJ1ByaXZpbGVnZXMnKSwgZGlzYWJsZWQ6ICdpblNj aGVtYScsCkBAIC03NDEsNyArMTAwOSw5IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywg WwogICAgICAgICAgICAgICBtc2cgPSB1bmRlZmluZWQsCiAgICAgICAgICAgICAgIG5hbWUgPSB0 aGlzLmdldCgnbmFtZScpLAogICAgICAgICAgICAgICBzY2hlbWEgPSB0aGlzLmdldCgnc2NoZW1h JyksCi0gICAgICAgICAgICAgIHJlbG93bmVyID0gdGhpcy5nZXQoJ3JlbG93bmVyJyk7CisgICAg ICAgICAgICAgIHJlbG93bmVyID0gdGhpcy5nZXQoJ3JlbG93bmVyJyksCisgICAgICAgICAgICAg IGlzX3BhcnRpdGlvbmVkID0gdGhpcy5nZXQoJ2lzX3BhcnRpdGlvbmVkJyksCisgICAgICAgICAg ICAgIHBhcnRpdGlvbl9rZXlzID0gdGhpcy5nZXQoJ3BhcnRpdGlvbl9rZXlzJyk7CiAKICAgICAg ICAgICAvLyBJZiBub3RoaW5nIHRvIHZhbGlkYXRlIG9yIFZhY3V1bVNldHRpbmcga2V5cyB0aGVu CiAgICAgICAgICAgLy8gcmV0dXJuIGZyb20gaGVyZQpAQCAtNzY5LDYgKzEwMzksMTIgQEAgZGVm aW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdU YWJsZSBvd25lciBjYW5ub3QgYmUgZW1wdHkuJyk7CiAgICAgICAgICAgICB0aGlzLmVycm9yTW9k ZWwuc2V0KCdyZWxvd25lcicsIG1zZyk7CiAgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAg ICAgIH0gZWxzZSBpZiAoaXNfcGFydGl0aW9uZWQgJiYgdGhpcy5pc05ldygpICYmCisgICAgICAg ICAgICAhXy5pc051bGwocGFydGl0aW9uX2tleXMpICYmIHBhcnRpdGlvbl9rZXlzLmxlbmd0aCA8 PSAwKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBzcGVj aWZ5IGF0IGxlYXN0IG9uZSBrZXkgZm9yIHBhcnRpdGlvbmVkIHRhYmxlLicpOworICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnNldCgncGFydGl0aW9uX2tleXMnLCBtc2cpOworICAgICAgICAg ICAgcmV0dXJuIG1zZzsKICAgICAgICAgICB9CiAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAg ICAgIH0sCkBAIC03OTcsNyArMTA3MywxNSBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScs IFsKICAgICAgICAgfSwKICAgICAgICAgLy8gT2Z0eXBlIGlzIGRlZmluZWQ/CiAgICAgICAgIGNo ZWNrSW5oZXJpdGFuY2U6IGZ1bmN0aW9uKG0pIHsKLSAgICAgICAgIC8vIGNvbGxfaW5oZXJpdHMg fHwgdHlwbmFtZQorICAgICAgICAgIC8vIERpc2FibGVkIGlmIGl0IGlzIHBhcnRpdGlvbmVkIHRh YmxlCisgICAgICAgICAgaWYgKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAgICAgICAg ICBzZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgIG0uc2V0KCdjb2xsX2lu aGVyaXRzJywgW10pOworICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICAgfQorCisgICAgICAgICAgLy8gY29sbF9pbmhlcml0cyB8fCB0eXBuYW1l CiAgICAgICAgICAgaWYoIW0uaW5TY2hlbWEuYXBwbHkodGhpcywgW21dKSAmJgogICAgICAgICAg ICAgICAoIF8uaXNVbmRlZmluZWQobS5nZXQoJ3R5cG5hbWUnKSkgfHwKICAgICAgICAgICAgICAg ICBfLmlzTnVsbChtLmdldCgndHlwbmFtZScpKSB8fApAQCAtODQxLDcgKzExMjUsMTUgQEAgZGVm aW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgIH0sCiAgICAgICAgIC8vIFdlIHdp bGwgZGlzYWJsZSBpdCBpZiBJbmhlcml0YW5jZSBpcyBkZWZpbmVkCiAgICAgICAgIGNoZWNrT2ZU eXBlOiBmdW5jdGlvbihtKSB7Ci0gICAgICAgIC8vY29sbF9pbmhlcml0cyB8fCB0eXBuYW1lCisg ICAgICAgICAgLy8gRGlzYWJsZWQgaWYgaXQgaXMgcGFydGl0aW9uZWQgdGFibGUKKyAgICAgICAg ICBpZiAobS5nZXQoJ2lzX3BhcnRpdGlvbmVkJykpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQo IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgbS5zZXQoJ3R5cG5hbWUnLCB1bmRlZmluZWQp OworICAgICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg ICAgfQorCisgICAgICAgICAgLy9jb2xsX2luaGVyaXRzIHx8IHR5cG5hbWUKICAgICAgICAgICBp ZighbS5pblNjaGVtYVdpdGhNb2RlbENoZWNrLmFwcGx5KHRoaXMsIFttXSkgJiYKICAgICAgICAg ICAgICAgKF8uaXNVbmRlZmluZWQobS5nZXQoJ2NvbGxfaW5oZXJpdHMnKSkgfHwKICAgICAgICAg ICAgICAgIF8uaXNOdWxsKG0uZ2V0KCdjb2xsX2luaGVyaXRzJykpIHx8CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9hdHRhY2guc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMvYXR0YWNoLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjYxZDljCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMvYXR0YWNoLnNxbApAQCAt MCwwICsxLDIgQEAKK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEucGFyZW50X3NjaGVt YSwgZGF0YS5wYXJ0aXRpb25lZF90YWJsZV9uYW1lKX19IEFUVEFDSCBQQVJUSVRJT04ge3tjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIHt7IGRhdGEucGFydGl0aW9u X3ZhbHVlIH19OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3Fs LzEwX3BsdXMvYmFja2VuZF9zdXBwb3J0LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0 aW9uL3NxbC8xMF9wbHVzL2JhY2tlbmRfc3VwcG9ydC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNWZhMWQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvcGFydGl0aW9uL3NxbC8xMF9wbHVzL2JhY2tlbmRfc3VwcG9ydC5zcWwKQEAgLTAsMCAr MSw5IEBACit7Iz09PT09PT09PT09PT1DaGVja3MgaWYgaXQgaXMgcGFydGl0aW9uZWQgdGFibGU9 PT09PT09PSN9Cit7JSBpZiB0aWQgJX0KK1NFTEVDVAorICAgIENBU0UgV0hFTiBjLnJlbGtpbmQg PSAncCcgVEhFTiBUcnVlIEVMU0UgRmFsc2UgRU5EIEFzIHB0YWJsZQorRlJPTQorICAgIHBnX2Ns YXNzIGMKK1dIRVJFCisgICAgYy5vaWQgPSB7eyB0aWQgfX06Om9pZAoreyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9uL3NxbC8xMF9wbHVzL2NyZWF0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9jcmVhdGUu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZTk0MDQKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9jcmVh dGUuc3FsCkBAIC0wLDAgKzEsMzAgQEAKK3slIGltcG9ydCAndGFibGUvc3FsL21hY3Jvcy9jb25z dHJhaW50cy5tYWNybycgYXMgQ09OU1RSQUlOVFMgJX0KK3sjPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSN9Cit7Iz09PT09PSBNQUlOIFRBQkxFIFRFTVBMQVRFIFNU QVJUUyBIRVJFID09PT09PSN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0jfQoreyMjIyBDUkVBVEUgVEFCTEUgU1RBVEVNRU5UIEZPUiBwYXJ0aXRpb25zICMj I30KK0NSRUFURSB7JSBpZiBkYXRhLnJlbHBlcnNpc3RlbmNlICV9VU5MT0dHRUQgeyUgZW5kaWYg JX1UQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19eyUgaWYgZGF0 YS5yZWxpc3BhcnRpdGlvbiBpcyBkZWZpbmVkIGFuZCBkYXRhLnJlbGlzcGFydGl0aW9uICV9IFBB UlRJVElPTiBPRiB7e2Nvbm58cXRJZGVudChkYXRhLnBhcmVudF9zY2hlbWEsIGRhdGEucGFydGl0 aW9uZWRfdGFibGVfbmFtZSl9fXslIGVuZGlmICV9CisKK3sjIE1hY3JvIHRvIHJlbmRlciBmb3Ig Y29uc3RyYWludHMgI30KK3slIGlmIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBkYXRh LnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWduX2tleXxsZW5ndGgg PiAwIG9yIGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZXhjbHVkZV9j b25zdHJhaW50fGxlbmd0aCA+IDAgJX0KKyggeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEucHJpbWFy eV9rZXl8bGVuZ3RoID4gMCAlfXt7Q09OU1RSQUlOVFMuUFJJTUFSWV9LRVkoY29ubiwgZGF0YS5w cmltYXJ5X2tleVswXSl9fXslIGVuZGlmICV9eyUgaWYgZGF0YS51bmlxdWVfY29uc3RyYWludHxs ZW5ndGggPiAwICV9eyUgaWYgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwICV9LHslIGVuZGlm ICV9Cit7e0NPTlNUUkFJTlRTLlVOSVFVRShjb25uLCBkYXRhLnVuaXF1ZV9jb25zdHJhaW50KX19 eyUgZW5kaWYgJX17JSBpZiBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgJX17JSBpZiBkYXRh LnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGgg PiAwICV9LHslIGVuZGlmICV9Cit7e0NPTlNUUkFJTlRTLkZPUkVJR05fS0VZKGNvbm4sIGRhdGEu Zm9yZWlnbl9rZXkpfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5n dGggPiAwICV9eyUgaWYgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5pcXVl X2NvbnN0cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgJX0s eyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlOVFMuQ0hFQ0soY29ubiwgZGF0YS5jaGVja19jb25zdHJh aW50KX19eyUgZW5kaWYgJX17JSBpZiBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPiAw ICV9eyUgaWYgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5pcXVlX2NvbnN0 cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS5j aGVja19jb25zdHJhaW50fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlOVFMu RVhDTFVERShjb25uLCBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludCl9fXslIGVuZGlmICV9Cit7JSBp ZiBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxs ZW5ndGggPiAwIG9yIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLmNoZWNrX2Nv bnN0cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPiAw ICV9CisKKykKK3slIGVuZGlmICV9CisgICAge3sgZGF0YS5wYXJ0aXRpb25fdmFsdWUgfX17JSBp ZiBkYXRhLmlzX3BhcnRpdGlvbmVkIGlzIGRlZmluZWQgYW5kIGRhdGEuaXNfcGFydGl0aW9uZWQg JX0KKworICAgIFBBUlRJVElPTiBCWSB7eyBkYXRhLnBhcnRpdGlvbl9zY2hlbWUgfX17JSBlbmRp ZiAlfTsKKworCit7IyMjIEFsdGVyIFNRTCBmb3IgT3duZXIgIyMjfQoreyUgaWYgZGF0YS5yZWxv d25lciAlfQorCitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5u YW1lKX19CisgICAgT1dORVIgdG8ge3tjb25ufHF0SWRlbnQoZGF0YS5yZWxvd25lcil9fTsKK3sl IGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwv MTBfcGx1cy9kZXRhY2guc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEw X3BsdXMvZGV0YWNoLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjQx M2RiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3Fs LzEwX3BsdXMvZGV0YWNoLnNxbApAQCAtMCwwICsxIEBACitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJ ZGVudChkYXRhLnBhcmVudF9zY2hlbWEsIGRhdGEucGFydGl0aW9uZWRfdGFibGVfbmFtZSl9fSBE RVRBQ0ggUEFSVElUSU9OIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX07 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9n ZXRfYXR0YWNoX3RhYmxlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwv MTBfcGx1cy9nZXRfYXR0YWNoX3RhYmxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNDc2ZGMzZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMv cGFydGl0aW9uL3NxbC8xMF9wbHVzL2dldF9hdHRhY2hfdGFibGVzLnNxbApAQCAtMCwwICsxLDIz IEBACitTRUxFQ1Qgb2lkLCBxdW90ZV9pZGVudChuc3BuYW1lKXx8Jy4nfHxxdW90ZV9pZGVudChy ZWxuYW1lKSBBUyB0YWJsZV9uYW1lIEZST00KKyhTRUxFQ1QKKwlyLm9pZCwgci5yZWxuYW1lLCBu Lm5zcG5hbWUsIGFycmF5X2FnZyhhLmF0dG5hbWUpIGF0dG5hbWVzLCBhcnJheV9hZ2coYS5hdHR0 eXBpZCkgYXR0dHlwZXMKK0ZST00KKwkoU0VMRUNUIG9pZCwgcmVsbmFtZSwgcmVsbmFtZXNwYWNl IEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcworCSAgV0hFUkUgcmVsa2luZCBpbiAoJ3InLCAncCcp IEFORCBOT1QgcmVsaXNwYXJ0aXRpb24pIHIKKyAgICBKT0lOIChTRUxFQ1Qgb2lkIEFTIG5zcG9p ZCwgbnNwbmFtZSBGUk9NCisgICAgICAgICAgcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgV0hFUkUg bnNwbmFtZSBOT1QgTElLRSBFJ3BnXF8lJykgbgorICAgICAgICAgIE9OIChyLnJlbG5hbWVzcGFj ZSA9IG4ubnNwb2lkKQorICAgIEpPSU4gKFNFTEVDVCBhdHRyZWxpZCwgYXR0bmFtZSwgYXR0dHlw aWQgRlJPTQorICAgICAgICAgIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+ IDAgT1JERVIgQlkgYXR0cmVsaWQsIGF0dG51bSkgYQorICAgICAgICAgIE9OIChyLm9pZCA9IGEu YXR0cmVsaWQpCitHUk9VUCBCWSByLm9pZCwgci5yZWxuYW1lLCByLnJlbG5hbWVzcGFjZSwgbi5u c3BuYW1lKSBhbGxfdGFibGVzCitKT0lOCisoU0VMRUNUCisJYXR0cmVsaWQsIGFycmF5X2FnZyhh dHRuYW1lKSBhdHRuYW1lcywgYXJyYXlfYWdnKGF0dHR5cGlkKSBhdHR0eXBlcworRlJPTQorCShT RUxFQ1QgKiBGUk9NIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlCisJICBXSEVSRSBhdHRyZWxpZCA9 IHt7IHRpZCB9fSBBTkQgYXR0bnVtID4gMAorCSAgT1JERVIgQlkgYXR0cmVsaWQsIGF0dG51bSkg YXR0cmlidXRlcworR1JPVVAgQlkgYXR0cmVsaWQpIGN1cnJlbnRfdGFibGUgT04gY3VycmVudF90 YWJsZS5hdHRyZWxpZCAhPSBhbGxfdGFibGVzLm9pZAorICBBTkQgY3VycmVudF90YWJsZS5hdHRu YW1lcyA9IGFsbF90YWJsZXMuYXR0bmFtZXMKKyAgQU5EIGN1cnJlbnRfdGFibGUuYXR0dHlwZXMg PSBhbGxfdGFibGVzLmF0dHR5cGVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMvbm9kZXMuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMvbm9kZXMuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkODI4Y2QKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1cy9ub2Rlcy5zcWwK QEAgLTAsMCArMSwxNSBAQAorU0VMRUNUIHJlbC5vaWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsCisg ICAgKFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZD1yZWwub2lk IEFORCB0Z2lzaW50ZXJuYWwgPSBGQUxTRSkgQVMgdHJpZ2dlcmNvdW50LAorICAgIChTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ190cmlnZ2VyIFdIRVJFIHRncmVsaWQ9cmVsLm9pZCBBTkQgdGdpc2lu dGVybmFsID0gRkFMU0UgQU5EIHRnZW5hYmxlZCA9ICdPJykgQVMgaGFzX2VuYWJsZV90cmlnZ2Vy cywKKyAgICBwZ19nZXRfZXhwcihyZWwucmVscGFydGJvdW5kLCByZWwub2lkKSBBUyBwYXJ0aXRp b25fdmFsdWUsCisgICAgcmVsLnJlbG5hbWVzcGFjZSBBUyBzY2hlbWFfaWQsCisgICAgbnNwLm5z cG5hbWUgQVMgc2NoZW1hX25hbWUsCisgICAgKENBU0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBU SEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIGlzX3BhcnRpdGlvbmVkLAorICAgIChDQVNFIFdI RU4gcmVsLnJlbGtpbmQgPSAncCcgVEhFTiBwZ19nZXRfcGFydGtleWRlZihyZWwub2lkOjpvaWQp IEVMU0UgJycgRU5EKSBBUyBwYXJ0aXRpb25fc2NoZW1lCitGUk9NCisgICAgKFNFTEVDVCAqIEZS T00gcGdfaW5oZXJpdHMgV0hFUkUgaW5ocGFyZW50ID0ge3sgdGlkIH19OjpvaWQpIGluaAorICAg IExFRlQgSk9JTiBwZ19jbGFzcyByZWwgT04gaW5oLmluaHJlbGlkID0gcmVsLm9pZAorICAgIExF RlQgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIHJlbC5yZWxuYW1lc3BhY2UgPSBuc3Aub2lkCisg ICAgV0hFUkUgcmVsLnJlbGlzcGFydGl0aW9uCisgICAgeyUgaWYgcHRpZCAlfSBBTkQgcmVsLm9p ZCA9IHt7IHB0aWQgfX06Ok9JRCB7JSBlbmRpZiAlfQorICAgIE9SREVSIEJZIHJlbC5yZWxuYW1l OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3FsLzEwX3BsdXMv cHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbi9zcWwvMTBfcGx1 cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWY0 NDc2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRpb24vc3Fs LzEwX3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSw4MiBAQAorU0VMRUNUIHJlbC5vaWQs IHJlbC5yZWxuYW1lIEFTIG5hbWUsIHJlbC5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCxyZWwucmVs YWNsIEFTIHJlbGFjbF9zdHIsCisgIChDQVNFIFdIRU4gbGVuZ3RoKHNwYy5zcGNuYW1lKSA+IDAg VEhFTiBzcGMuc3BjbmFtZSBFTFNFCisgICAgKFNFTEVDVCBzcC5zcGNuYW1lIEZST00gcGdfZGF0 YWJhc2UgZHRiCisgICAgSk9JTiBwZ190YWJsZXNwYWNlIHNwIE9OIGR0Yi5kYXR0YWJsZXNwYWNl PXNwLm9pZAorICAgIFdIRVJFIGR0Yi5vaWQgPSB7eyBkaWQgfX06Om9pZCkKKyAgRU5EKSBhcyBz cGNuYW1lLAorICAoc2VsZWN0IG5zcG5hbWUgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgb2lkID0g e3tzY2lkfX06Om9pZCApIGFzIHBhcmVudF9zY2hlbWEsCisgIG5zcC5uc3BuYW1lIGFzIHNjaGVt YSwKKyAgcGdfZ2V0X3VzZXJieWlkKHJlbC5yZWxvd25lcikgQVMgcmVsb3duZXIsIHJlbC5yZWxo YXNvaWRzLCByZWwucmVsaXNwYXJ0aXRpb24sCisgIHJlbC5yZWxoYXNzdWJjbGFzcywgcmVsLnJl bHR1cGxlcywgZGVzLmRlc2NyaXB0aW9uLCBjb24uY29ubmFtZSwgY29uLmNvbmtleSwKKwlFWElT VFMoc2VsZWN0IDEgRlJPTSBwZ190cmlnZ2VyCisJCQlKT0lOIHBnX3Byb2MgcHQgT04gcHQub2lk PXRnZm9pZCBBTkQgcHQucHJvbmFtZT0nbG9ndHJpZ2dlcicKKwkJCUpPSU4gcGdfcHJvYyBwYyBP TiBwYy5wcm9uYW1lc3BhY2U9cHQucHJvbmFtZXNwYWNlIEFORCBwYy5wcm9uYW1lPSdzbG9ueXZl cnNpb24nCisJCQlXSEVSRSB0Z3JlbGlkPXJlbC5vaWQpIEFTIGlzcmVwbCwKKwkoU0VMRUNUIGNv dW50KCopIEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlkPXJlbC5vaWQgQU5EIHRnaXNpbnRl cm5hbCA9IEZBTFNFKSBBUyB0cmlnZ2VyY291bnQsCisJKFNFTEVDVCBBUlJBWShTRUxFQ1QgQ0FT RSBXSEVOIChuc3BuYW1lIE5PVCBMSUtFIEUncGdcXyUnKSBUSEVOCisgICAgICAgICAgICBxdW90 ZV9pZGVudChuc3BuYW1lKXx8Jy4nfHxxdW90ZV9pZGVudChjLnJlbG5hbWUpCisgICAgICAgICAg ICBFTFNFIHF1b3RlX2lkZW50KGMucmVsbmFtZSkgRU5EIEFTIGluaGVyaXRlZF90YWJsZXMKKyAg ICBGUk9NIHBnX2luaGVyaXRzIGkKKyAgICBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBpLmlu aHBhcmVudAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9Yy5yZWxuYW1lc3BhY2UK KyAgICBXSEVSRSBpLmluaHJlbGlkID0gcmVsLm9pZCBPUkRFUiBCWSBpbmhzZXFubykpIEFTIGNv bGxfaW5oZXJpdHMsCisgIChTRUxFQ1QgY291bnQoKikKKwkJRlJPTSBwZ19pbmhlcml0cyBpCisg ICAgICBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBpLmluaHBhcmVudAorICAgICAgSk9JTiBw Z19uYW1lc3BhY2UgbiBPTiBuLm9pZD1jLnJlbG5hbWVzcGFjZQorCQlXSEVSRSBpLmluaHJlbGlk ID0gcmVsLm9pZCkgQVMgaW5oZXJpdGVkX3RhYmxlc19jbnQsCisJKENBU0UgV0hFTiByZWwucmVs cGVyc2lzdGVuY2UgPSAndScgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyByZWxwZXJzaXN0 ZW5jZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZS T00gJ2ZpbGxmYWN0b3I9KFswLTldKiknKSBBUyBmaWxsZmFjdG9yLAorCShDQVNFIFdIRU4gKHN1 YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3Zh Y3V1bV9lbmFibGVkPShbYS16fDAtOV0qKScpID0gJ3RydWUnKQorCSAgVEhFTiB0cnVlIEVMU0Ug ZmFsc2UgRU5EKSBBUyBhdXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hv bGQ9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQsCisJc3Vic3RyaW5n KGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3Zh Y3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1 bV9zY2FsZV9mYWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9u cywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkPShbMC05XSopJykgQVMg YXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5n KHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0 b3I9KFswLTldKlsuXVswLTldKiknKSBBUyBhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9y LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAn YXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFj dXVtX2Nvc3RfZGVsYXksCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9u cywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0PShbMC05XSopJykgQVMg YXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5n KHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2U9KFsw LTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorCXN1YnN0cmluZyhhcnJheV90 b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4 X2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisJc3Vic3RyaW5n KGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2Zy ZWV6ZV90YWJsZV9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2Us CisJKENBU0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywg JywnKSBGUk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSopJykgPSAgJ3RydWUnKQor CSAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQs CisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdh dXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVt X3ZhY3V1bV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0 aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsu XVswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisJc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFj dXVtX2FuYWx5emVfdGhyZXNob2xkPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9hbmFs eXplX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25z LCAnLCcpIEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVsw LTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yLAorCXN1YnN0 cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1 bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVt X2Nvc3RfZGVsYXksCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywg JywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0PShbMC05XSopJykgQVMgdG9h c3RfYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3Ry aW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2U9 KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorCXN1YnN0cmlu ZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9m cmVlemVfbWF4X2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fZnJlZXplX21heF9h Z2UsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9N ICdhdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2U9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFj dXVtX2ZyZWV6ZV90YWJsZV9hZ2UsCisJYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAn LCcpIEFTIHRhYmxlX3ZhY3V1bV9zZXR0aW5nc19zdHIsCisJYXJyYXlfdG9fc3RyaW5nKHRzdC5y ZWxvcHRpb25zLCAnLCcpIEFTIHRvYXN0X3RhYmxlX3ZhY3V1bV9zZXR0aW5nc19zdHIsCisJcmVs LnJlbG9wdGlvbnMgQVMgcmVsb3B0aW9ucywgdHN0LnJlbG9wdGlvbnMgQVMgdG9hc3RfcmVsb3B0 aW9ucywgcmVsLnJlbG9mdHlwZSwgdHlwLnR5cG5hbWUsCisJKENBU0UgV0hFTiByZWwucmVsdG9h c3RyZWxpZCA9IDAgVEhFTiBmYWxzZSBFTFNFIHRydWUgRU5EKSBBUyBoYXN0b2FzdHRhYmxlLAor ICAgIC0tIEFkZGVkIGZvciBwZ0FkbWluNAorCShDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90 b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShb YS16fDAtOV0qKScpKTo6Ym9vbGVhbiAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBhdXRv dmFjdXVtX2N1c3RvbSwKKwkoQ0FTRSBXSEVOIChzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRz dC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTldKikn KSk6OmJvb2xlYW4gIEFORCByZWwucmVsdG9hc3RyZWxpZCAhPSAwIFRIRU4gdHJ1ZSBFTFNFIGZh bHNlIEVORCkgQVMgdG9hc3RfYXV0b3ZhY3V1bSwKKworCShTRUxFQ1QgYXJyYXlfYWdnKHByb3Zp ZGVyIHx8ICc9JyB8fCBsYWJlbCkgRlJPTSBwZ19zZWNsYWJlbHMgc2wxIFdIRVJFIHNsMS5vYmpv aWQ9cmVsLm9pZCBBTkQgc2wxLm9ianN1YmlkPTApIEFTIHNlY2xhYmVscywKKwkoQ0FTRSBXSEVO IHJlbC5vaWQgPD0ge3sgZGF0bGFzdHN5c29pZH19OjpvaWQgVEhFTiB0cnVlIEVsU0UgZmFsc2Ug RU5EKSBBUyBpc19zeXNfdGFibGUsCisJLS0gQWRkZWQgZm9yIHBhcnRpdGlvbiB0YWJsZQorCShD QVNFIFdIRU4gcmVsLnJlbGtpbmQgPSAncCcgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBp c19wYXJ0aXRpb25lZCwKKwkoQ0FTRSBXSEVOIHJlbC5yZWxraW5kID0gJ3AnIFRIRU4gcGdfZ2V0 X3BhcnRrZXlkZWYocmVsLm9pZDo6b2lkKSBFTFNFICcnIEVORCkgQVMgcGFydGl0aW9uX3NjaGVt ZSwKKwl7JSBpZiBwdGlkICV9CisJICAoQ0FTRSBXSEVOIHJlbC5yZWxpc3BhcnRpdGlvbiBUSEVO IHBnX2dldF9leHByKHJlbC5yZWxwYXJ0Ym91bmQsIHt7IHB0aWQgfX06Om9pZCkgRUxTRSAnJyBF TkQpIEFTIHBhcnRpdGlvbl92YWx1ZSwKKwkgIChTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNz IFdIRVJFIG9pZCA9IHt7IHRpZCB9fTo6b2lkKSBBUyBwYXJ0aXRpb25lZF90YWJsZV9uYW1lCisJ eyUgZWxzZSAlfQorCSAgcGdfZ2V0X2V4cHIocmVsLnJlbHBhcnRib3VuZCwgcmVsLm9pZCkgQVMg cGFydGl0aW9uX3ZhbHVlCisJeyUgZW5kaWYgJX0KKworRlJPTSBwZ19jbGFzcyByZWwKKyAgTEVG VCBPVVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9cmVsLnJlbHRhYmxlc3Bh Y2UKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1y ZWwub2lkIEFORCBkZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJl Z2NsYXNzKQorICBMRUZUIE9VVEVSIEpPSU4gcGdfY29uc3RyYWludCBjb24gT04gY29uLmNvbnJl bGlkPXJlbC5vaWQgQU5EIGNvbi5jb250eXBlPSdwJworICBMRUZUIE9VVEVSIEpPSU4gcGdfY2xh c3MgdHN0IE9OIHRzdC5vaWQgPSByZWwucmVsdG9hc3RyZWxpZAorICBMRUZUIEpPSU4gcGdfdHlw ZSB0eXAgT04gcmVsLnJlbG9mdHlwZT10eXAub2lkCisgIExFRlQgSk9JTiBwZ19pbmhlcml0cyBp bmggT04gaW5oLmluaHJlbGlkID0gcmVsLm9pZAorICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5z cCBPTiByZWwucmVsbmFtZXNwYWNlID0gbnNwLm9pZAorV0hFUkUgcmVsLnJlbGlzcGFydGl0aW9u IEFORCBpbmguaW5ocGFyZW50ID0ge3sgdGlkIH19OjpvaWQKK3slIGlmIHB0aWQgJX0gIEFORCBy ZWwub2lkID0ge3sgcHRpZCB9fTo6b2lkIHslIGVuZGlmICV9CitPUkRFUiBCWSByZWwucmVsbmFt ZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvYWNs LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvYWNsLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWRmOWQ1Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9hY2wuc3FsCkBAIC0wLDAg KzEsNDYgQEAKK3sjIyMgU1FMIHRvIGZldGNoIHByaXZpbGVnZXMgZm9yIHRhYmxlc3BhY2UgIyMj fQorU0VMRUNUICdyZWxhY2wnIGFzIGRlZnR5cGUsIENPQUxFU0NFKGd0LnJvbG5hbWUsICdQVUJM SUMnKSBncmFudGVlLCBnLnJvbG5hbWUgZ3JhbnRvciwKKyAgICBhcnJheV9hZ2cocHJpdmlsZWdl X3R5cGUpIGFzIHByaXZpbGVnZXMsIGFycmF5X2FnZyhpc19ncmFudGFibGUpIGFzIGdyYW50YWJs ZQorRlJPTQorICAoU0VMRUNUCisgICAgZC5ncmFudGVlLCBkLmdyYW50b3IsIGQuaXNfZ3JhbnRh YmxlLAorICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorCQlXSEVOICdDT05ORUNUJyBUSEVOICdj JworCQlXSEVOICdDUkVBVEUnIFRIRU4gJ0MnCisJCVdIRU4gJ0RFTEVURScgVEhFTiAnZCcKKwkJ V0hFTiAnRVhFQ1VURScgVEhFTiAnWCcKKwkJV0hFTiAnSU5TRVJUJyBUSEVOICdhJworCQlXSEVO ICdSRUZFUkVOQ0VTJyBUSEVOICd4JworCQlXSEVOICdTRUxFQ1QnIFRIRU4gJ3InCisJCVdIRU4g J1RFTVBPUkFSWScgVEhFTiAnVCcKKwkJV0hFTiAnVFJJR0dFUicgVEhFTiAndCcKKwkJV0hFTiAn VFJVTkNBVEUnIFRIRU4gJ0QnCisJCVdIRU4gJ1VQREFURScgVEhFTiAndycKKwkJV0hFTiAnVVNB R0UnIFRIRU4gJ1UnCisJCUVMU0UgJ1VOS05PV04nCisJRU5EIEFTIHByaXZpbGVnZV90eXBlCisg IEZST00KKyAgICAoU0VMRUNUIHJlbC5yZWxhY2wKKyAgICAgICAgRlJPTSBwZ19jbGFzcyByZWwK KyAgICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfdGFibGVzcGFjZSBzcGMgb24gc3BjLm9pZD1y ZWwucmVsdGFibGVzcGFjZQorICAgICAgICAgIExFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJhaW50 IGNvbiBPTiBjb24uY29ucmVsaWQ9cmVsLm9pZCBBTkQgY29uLmNvbnR5cGU9J3AnCisgICAgICAg ICAgTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNzIHRzdCBPTiB0c3Qub2lkID0gcmVsLnJlbHRvYXN0 cmVsaWQKKyAgICAgICAgICBMRUZUIEpPSU4gcGdfdHlwZSB0eXAgT04gcmVsLnJlbG9mdHlwZT10 eXAub2lkCisgICAgICAgIFdIRVJFIHJlbC5yZWxraW5kIElOICgncicsJ3MnLCd0JywncCcpIEFO RCByZWwucmVsbmFtZXNwYWNlID0ge3sgc2NpZCB9fTo6b2lkCisgICAgICAgICAgICBBTkQgcmVs Lm9pZCA9IHt7IHRpZCB9fTo6b2lkCisgICAgKSBhY2wsCisgICAgKFNFTEVDVCAoZCkuZ3JhbnRl ZSBBUyBncmFudGVlLCAoZCkuZ3JhbnRvciBBUyBncmFudG9yLCAoZCkuaXNfZ3JhbnRhYmxlCisg ICAgICAgIEFTIGlzX2dyYW50YWJsZSwgKGQpLnByaXZpbGVnZV90eXBlIEFTIHByaXZpbGVnZV90 eXBlIEZST00gKFNFTEVDVAorICAgICAgICBhY2xleHBsb2RlKHJlbC5yZWxhY2wpIGFzIGQKKyAg ICAgICAgRlJPTSBwZ19jbGFzcyByZWwKKyAgICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfdGFi bGVzcGFjZSBzcGMgb24gc3BjLm9pZD1yZWwucmVsdGFibGVzcGFjZQorICAgICAgICAgIExFRlQg T1VURVIgSk9JTiBwZ19jb25zdHJhaW50IGNvbiBPTiBjb24uY29ucmVsaWQ9cmVsLm9pZCBBTkQg Y29uLmNvbnR5cGU9J3AnCisgICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNzIHRzdCBP TiB0c3Qub2lkID0gcmVsLnJlbHRvYXN0cmVsaWQKKyAgICAgICAgICBMRUZUIEpPSU4gcGdfdHlw ZSB0eXAgT04gcmVsLnJlbG9mdHlwZT10eXAub2lkCisgICAgICAgIFdIRVJFIHJlbC5yZWxraW5k IElOICgncicsJ3MnLCd0JywncCcpIEFORCByZWwucmVsbmFtZXNwYWNlID0ge3sgc2NpZCB9fTo6 b2lkCisgICAgICAgICAgICBBTkQgcmVsLm9pZCA9IHt7IHRpZCB9fTo6b2lkCisgICAgICAgICkg YSkgZAorICAgICkgZAorICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBnIE9OIChkLmdy YW50b3IgPSBnLm9pZCkKKyAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZ3QgT04gKGQu Z3JhbnRlZSA9IGd0Lm9pZCkKK0dST1VQIEJZIGcucm9sbmFtZSwgZ3Qucm9sbmFtZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfaW5oZXJpdHMu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfaW5oZXJpdHMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyOGYyOTgKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC8xMF9wbHVzL2dldF9pbmhl cml0cy5zcWwKQEAgLTAsMCArMSwxNyBAQAoreyUgaW1wb3J0ICd0YWJsZS9zcWwvbWFjcm9zL2Ri X2NhdGFsb2dzLm1hY3JvJyBhcyBDQVRBTE9HICV9CitTRUxFQ1QgYy5vaWQsIGMucmVsbmFtZSAs IG5zcG5hbWUsCitDQVNFIFdIRU4gbnNwbmFtZSBOT1QgTElLRSBFJ3BnXF8lJyBUSEVOCisgcXVv dGVfaWRlbnQobnNwbmFtZSl8fCcuJ3x8cXVvdGVfaWRlbnQoYy5yZWxuYW1lKQorRUxTRSBxdW90 ZV9pZGVudChjLnJlbG5hbWUpCitFTkQgQVMgaW5oZXJpdHMKK0ZST00gcGdfY2xhc3MgYworSk9J TiBwZ19uYW1lc3BhY2UgbgorT04gbi5vaWQ9Yy5yZWxuYW1lc3BhY2UKK1dIRVJFIHJlbGtpbmQ9 J3InIEFORCBOT1QgcmVsaXNwYXJ0aXRpb24KK3slIGlmIG5vdCBzaG93X3N5c3RlbV9vYmplY3Rz ICV9Cit7eyBDQVRBTE9HLlZBTElEX0NBVEFMT0dTKHNlcnZlcl90eXBlKSB9fQoreyUgZW5kaWYg JX0KK3slIGlmIHRpZCAlfQorQU5EIGMub2lkICE9IHRpZAoreyUgZW5kaWYgJX0KK09SREVSIEJZ IHJlbG5hbWVzcGFjZSwgYy5yZWxuYW1lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfb2lkLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvZ2V0X29pZC5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYzMDY5OAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvZ2V0X29pZC5zcWwKQEAg LTAsMCArMSw1IEBACitTRUxFQ1QgcmVsLm9pZCBhcyB0aWQKK0ZST00gcGdfY2xhc3MgcmVsCitX SEVSRSByZWwucmVsa2luZCBJTiAoJ3InLCdzJywndCcsJ3AnKQorQU5EIHJlbC5yZWxuYW1lc3Bh Y2UgPSB7eyBzY2lkIH19OjpvaWQKK0FORCByZWwucmVsbmFtZSA9IHt7ZGF0YS5uYW1lfHF0TGl0 ZXJhbH19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfdGFibGUuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9nZXRfdGFibGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjY5NTJjOGQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL3RhYmxlL3NxbC8xMF9wbHVzL2dldF90YWJsZS5zcWwKQEAgLTAsMCArMSw4IEBA CitTRUxFQ1QKKyAgICByZWwucmVsbmFtZSBBUyBuYW1lCitGUk9NCisgICAgcGdfY2xhc3MgcmVs CitXSEVSRQorICAgIHJlbC5yZWxraW5kIElOICgncicsJ3MnLCd0JywncCcpCisgICAgQU5EIHJl bC5yZWxuYW1lc3BhY2UgPSB7eyBzY2lkIH19OjpvaWQKKyAgICBBTkQgcmVsLm9pZCA9IHt7IHRp ZCB9fTo6b2lkOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvbm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9ub2Rlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZmJmOWM0MgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvbm9kZXMuc3FsCkBAIC0wLDAgKzEsOSBAQAorU0VMRUNU IHJlbC5vaWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsCisgICAgKFNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZD1yZWwub2lkIEFORCB0Z2lzaW50ZXJuYWwgPSBGQUxT RSkgQVMgdHJpZ2dlcmNvdW50LAorICAgIChTRUxFQ1QgY291bnQoKikgRlJPTSBwZ190cmlnZ2Vy IFdIRVJFIHRncmVsaWQ9cmVsLm9pZCBBTkQgdGdpc2ludGVybmFsID0gRkFMU0UgQU5EIHRnZW5h YmxlZCA9ICdPJykgQVMgaGFzX2VuYWJsZV90cmlnZ2VycywKKyAgICAoQ0FTRSBXSEVOIHJlbC5y ZWxraW5kID0gJ3AnIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgaXNfcGFydGl0aW9uZWQK K0ZST00gcGdfY2xhc3MgcmVsCisgICAgV0hFUkUgcmVsLnJlbGtpbmQgSU4gKCdyJywncycsJ3Qn LCdwJykgQU5EIHJlbC5yZWxuYW1lc3BhY2UgPSB7eyBzY2lkIH19OjpvaWQKKyAgICBBTkQgTk9U IHJlbC5yZWxpc3BhcnRpdGlvbgorICAgIHslIGlmIHRpZCAlfSBBTkQgcmVsLm9pZCA9IHt7dGlk fX06Ok9JRCB7JSBlbmRpZiAlfQorICAgIE9SREVSIEJZIHJlbC5yZWxuYW1lOwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvMTBfcGx1cy9wcm9wZXJ0aWVzLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ1ODlkZgotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsLzEwX3BsdXMvcHJvcGVydGllcy5zcWwK QEAgLTAsMCArMSw3MyBAQAorU0VMRUNUIHJlbC5vaWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsIHJl bC5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCxyZWwucmVsYWNsIEFTIHJlbGFjbF9zdHIsCisgIChD QVNFIFdIRU4gbGVuZ3RoKHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBzcGMuc3BjbmFtZSBFTFNFCisg ICAgKFNFTEVDVCBzcC5zcGNuYW1lIEZST00gcGdfZGF0YWJhc2UgZHRiCisgICAgSk9JTiBwZ190 YWJsZXNwYWNlIHNwIE9OIGR0Yi5kYXR0YWJsZXNwYWNlPXNwLm9pZAorICAgIFdIRVJFIGR0Yi5v aWQgPSB7eyBkaWQgfX06Om9pZCkKKyAgRU5EKSBhcyBzcGNuYW1lLAorICAoc2VsZWN0IG5zcG5h bWUgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgb2lkID0ge3tzY2lkfX06Om9pZCApIGFzIHNjaGVt YSwKKyAgcGdfZ2V0X3VzZXJieWlkKHJlbC5yZWxvd25lcikgQVMgcmVsb3duZXIsIHJlbC5yZWxo YXNvaWRzLCByZWwucmVsa2luZCwKKyAgKENBU0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBUSEVO IHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIGlzX3BhcnRpdGlvbmVkLAorICByZWwucmVsaGFzc3Vi Y2xhc3MsIHJlbC5yZWx0dXBsZXMsIGRlcy5kZXNjcmlwdGlvbiwgY29uLmNvbm5hbWUsIGNvbi5j b25rZXksCisJRVhJU1RTKHNlbGVjdCAxIEZST00gcGdfdHJpZ2dlcgorCQkJSk9JTiBwZ19wcm9j IHB0IE9OIHB0Lm9pZD10Z2ZvaWQgQU5EIHB0LnByb25hbWU9J2xvZ3RyaWdnZXInCisJCQlKT0lO IHBnX3Byb2MgcGMgT04gcGMucHJvbmFtZXNwYWNlPXB0LnByb25hbWVzcGFjZSBBTkQgcGMucHJv bmFtZT0nc2xvbnl2ZXJzaW9uJworCQkJV0hFUkUgdGdyZWxpZD1yZWwub2lkKSBBUyBpc3JlcGws CisJKFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZD1yZWwub2lk IEFORCB0Z2lzaW50ZXJuYWwgPSBGQUxTRSkgQVMgdHJpZ2dlcmNvdW50LAorCShTRUxFQ1QgQVJS QVkoU0VMRUNUIENBU0UgV0hFTiAobnNwbmFtZSBOT1QgTElLRSBFJ3BnXF8lJykgVEhFTgorICAg ICAgICAgICAgcXVvdGVfaWRlbnQobnNwbmFtZSl8fCcuJ3x8cXVvdGVfaWRlbnQoYy5yZWxuYW1l KQorICAgICAgICAgICAgRUxTRSBxdW90ZV9pZGVudChjLnJlbG5hbWUpIEVORCBBUyBpbmhlcml0 ZWRfdGFibGVzCisgICAgRlJPTSBwZ19pbmhlcml0cyBpCisgICAgSk9JTiBwZ19jbGFzcyBjIE9O IGMub2lkID0gaS5pbmhwYXJlbnQKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkPWMu cmVsbmFtZXNwYWNlCisgICAgV0hFUkUgaS5pbmhyZWxpZCA9IHJlbC5vaWQgT1JERVIgQlkgaW5o c2Vxbm8pKSBBUyBjb2xsX2luaGVyaXRzLAorICAoU0VMRUNUIGNvdW50KCopCisJCUZST00gcGdf aW5oZXJpdHMgaQorICAgICAgSk9JTiBwZ19jbGFzcyBjIE9OIGMub2lkID0gaS5pbmhwYXJlbnQK KyAgICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9Yy5yZWxuYW1lc3BhY2UKKwkJV0hF UkUgaS5pbmhyZWxpZCA9IHJlbC5vaWQpIEFTIGluaGVyaXRlZF90YWJsZXNfY250LAorCShDQVNF IFdIRU4gcmVsLnJlbHBlcnNpc3RlbmNlID0gJ3UnIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkg QVMgcmVscGVyc2lzdGVuY2UsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0 aW9ucywgJywnKSBGUk9NICdmaWxsZmFjdG9yPShbMC05XSopJykgQVMgZmlsbGZhY3RvciwKKwko Q0FTRSBXSEVOIChzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTldKiknKSA9ICd0cnVlJykKKwkgIFRI RU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgYXV0b3ZhY3V1bV9lbmFibGVkLAorCXN1YnN0cmlu ZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92 YWN1dW1fdGhyZXNob2xkPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xk LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAn YXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yPShbMC05XSpbLl1bMC05XSopJykgQVMgYXV0 b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmco cmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZD0o WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5 emVfc2NhbGVfZmFjdG9yPShbMC05XSpbLl1bMC05XSopJykgQVMgYXV0b3ZhY3V1bV9hbmFseXpl X3NjYWxlX2ZhY3RvciwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25z LCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXk9KFswLTldKiknKSBBUyBh dXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmco cmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdD0o WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisJc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6 ZV9taW5fYWdlPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVlemVfbWluX2FnZSwKKwlzdWJz dHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1 dW1fZnJlZXplX21heF9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdl LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAn YXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVl emVfdGFibGVfYWdlLAorCShDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0 LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShbYS16fDAtOV0qKScp ID0gICd0cnVlJykKKwkgIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgdG9hc3RfYXV0b3Zh Y3V1bV9lbmFibGVkLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMs ICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkPShbMC05XSopJykgQVMgdG9h c3RfYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJp bmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFj dG9yPShbMC05XSpbLl1bMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVf ZmFjdG9yLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykg RlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1 dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0 c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9y PShbMC05XSpbLl1bMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2Zh Y3RvciwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZS T00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXk9KFswLTldKiknKSBBUyB0b2FzdF9hdXRv dmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0 LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdD0oWzAt OV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisJc3Vic3RyaW5n KGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2Zy ZWV6ZV9taW5fYWdlPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVfbWluX2Fn ZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00g J2F1dG92YWN1dW1fZnJlZXplX21heF9hZ2U9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVt X2ZyZWV6ZV9tYXhfYWdlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlv bnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlPShbMC05XSopJykgQVMg dG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlLAorCWFycmF5X3RvX3N0cmluZyhyZWwu cmVsb3B0aW9ucywgJywnKSBBUyB0YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3RyLAorCWFycmF5X3Rv X3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBBUyB0b2FzdF90YWJsZV92YWN1dW1fc2V0dGlu Z3Nfc3RyLAorCXJlbC5yZWxvcHRpb25zIEFTIHJlbG9wdGlvbnMsIHRzdC5yZWxvcHRpb25zIEFT IHRvYXN0X3JlbG9wdGlvbnMsIHJlbC5yZWxvZnR5cGUsIHR5cC50eXBuYW1lLAorCShDQVNFIFdI RU4gcmVsLnJlbHRvYXN0cmVsaWQgPSAwIFRIRU4gZmFsc2UgRUxTRSB0cnVlIEVORCkgQVMgaGFz dG9hc3R0YWJsZSwKKyAgICAtLSBBZGRlZCBmb3IgcGdBZG1pbjQKKwkoQ0FTRSBXSEVOIChzdWJz dHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1 dW1fZW5hYmxlZD0oW2EtenwwLTldKiknKSk6OmJvb2xlYW4gIFRIRU4gdHJ1ZSBFTFNFIGZhbHNl IEVORCkgQVMgYXV0b3ZhY3V1bV9jdXN0b20sCisJKENBU0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5 X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9 KFthLXp8MC05XSopJykpOjpib29sZWFuICBBTkQgcmVsLnJlbHRvYXN0cmVsaWQgIT0gMCBUSEVO IHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHRvYXN0X2F1dG92YWN1dW0sCisKKwkoU0VMRUNUIGFy cmF5X2FnZyhwcm92aWRlciB8fCAnPScgfHwgbGFiZWwpIEZST00gcGdfc2VjbGFiZWxzIHNsMSBX SEVSRSBzbDEub2Jqb2lkPXJlbC5vaWQgQU5EIHNsMS5vYmpzdWJpZD0wKSBBUyBzZWNsYWJlbHMs CisJKENBU0UgV0hFTiByZWwub2lkIDw9IHt7IGRhdGxhc3RzeXNvaWR9fTo6b2lkIFRIRU4gdHJ1 ZSBFbFNFIGZhbHNlIEVORCkgQVMgaXNfc3lzX3RhYmxlCisJLS0gQWRkZWQgZm9yIHBhcnRpdGlv biB0YWJsZQorICAgIHslIGlmIHRpZCAlfSwgKENBU0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBU SEVOIHBnX2dldF9wYXJ0a2V5ZGVmKHt7IHRpZCB9fTo6b2lkKSBFTFNFICcnIEVORCkgQVMgcGFy dGl0aW9uX3NjaGVtZSB7JSBlbmRpZiAlfQorRlJPTSBwZ19jbGFzcyByZWwKKyAgTEVGVCBPVVRF UiBKT0lOIHBnX3RhYmxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9cmVsLnJlbHRhYmxlc3BhY2UKKyAg TEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1yZWwub2lk IEFORCBkZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNz KQorICBMRUZUIE9VVEVSIEpPSU4gcGdfY29uc3RyYWludCBjb24gT04gY29uLmNvbnJlbGlkPXJl bC5vaWQgQU5EIGNvbi5jb250eXBlPSdwJworICBMRUZUIE9VVEVSIEpPSU4gcGdfY2xhc3MgdHN0 IE9OIHRzdC5vaWQgPSByZWwucmVsdG9hc3RyZWxpZAorICBMRUZUIEpPSU4gcGdfdHlwZSB0eXAg T04gcmVsLnJlbG9mdHlwZT10eXAub2lkCitXSEVSRSByZWwucmVsa2luZCBJTiAoJ3InLCdzJywn dCcsJ3AnKSBBTkQgcmVsLnJlbG5hbWVzcGFjZSA9IHt7IHNjaWQgfX06Om9pZAorQU5EIE5PVCBy ZWwucmVsaXNwYXJ0aXRpb24KK3slIGlmIHRpZCAlfSAgQU5EIHJlbC5vaWQgPSB7eyB0aWQgfX06 Om9pZCB7JSBlbmRpZiAlfQorT1JERVIgQlkgcmVsLnJlbG5hbWU7CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC9kZWZhdWx0L2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL3RhYmxlL3NxbC9kZWZhdWx0L2NyZWF0ZS5zcWwKaW5kZXggZjhlODU4Zi4uNWVj OGZmYyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvZGVmYXVsdC9j cmVhdGUuc3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL2RlZmF1bHQvY3Jl YXRlLnNxbApAQCAtNTcsNyArNTcsOCBAQCBDUkVBVEUgeyUgaWYgZGF0YS5yZWxwZXJzaXN0ZW5j ZSAlfVVOTE9HR0VEIHslIGVuZGlmICV9VEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YQoge3tDT05T VFJBSU5UUy5FWENMVURFKGNvbm4sIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50KX19eyUgZW5kaWYg JX0KIHslIGlmIGRhdGEubGlrZV9yZWxhdGlvbiBvciBkYXRhLmNvbGxfaW5oZXJpdHMgb3IgZGF0 YS5jb2x1bW5zfGxlbmd0aCA+IDAgb3IgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwIG9yIGRh dGEudW5pcXVlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0 aCA+IDAgb3IgZGF0YS5jaGVja19jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5leGNsdWRl X2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfQogCi0pCispeyUgaWYgZGF0YS5yZWxraW5kIGlzIGRl ZmluZWQgYW5kIGRhdGEucmVsa2luZCA9PSAncCcgJX0gUEFSVElUSU9OIEJZIHt7IGRhdGEucGFy dGl0aW9uX3NjaGVtZSB9fSB7JSBlbmRpZiAlfQorCiB7JSBlbmRpZiAlfQogeyMjIyBJZiB3ZSBh cmUgaW5oZXJpdGluZyBpdCBmcm9tIGFub3RoZXIgdGFibGUocykgIyMjfQogeyUgaWYgZGF0YS5j b2xsX2luaGVyaXRzICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3Nx bC9kZWZhdWx0L2dldF9zY2hlbWFfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUv c3FsL2RlZmF1bHQvZ2V0X3NjaGVtYV9vaWQuc3FsCmluZGV4IDRkMzI5ZDIuLjhkZjg0YjUgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL2RlZmF1bHQvZ2V0X3NjaGVt YV9vaWQuc3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL2RlZmF1bHQvZ2V0 X3NjaGVtYV9vaWQuc3FsCkBAIC0xLDggKzEsOSBAQAogeyMgPT09PT0gZmV0Y2ggbmV3IGFzc2ln bmVkIHNjaGVtYSBvaWQgPT09PT0gI30KIFNFTEVDVAotICAgIGMucmVsbmFtZXNwYWNlIGFzIHNj aWQKKyAgICBjLnJlbG5hbWVzcGFjZSBhcyBzY2lkLCBuc3AubnNwbmFtZSBhcyBuc3BuYW1lCiBG Uk9NCiAgICAgcGdfY2xhc3MgYworTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04gbnNwLm9p ZCA9IGMucmVsbmFtZXNwYWNlCiBXSEVSRQogeyUgaWYgdGlkICV9CiAgICAgYy5vaWQgPSB7e3Rp ZH19OjpvaWQ7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZV9hZGQucHkg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZV9hZGQucHkKaW5kZXggMDcwM2NiYS4uOWU0ODQ2 YyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVfYWRkLnB5CisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxlX2FkZC5weQpAQCAtMTQsNiArMTQsNyBAQCBmcm9tIHBn YWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGVz dHMgaW1wb3J0IFwKICAgICB1dGlscyBhcyBzY2hlbWFfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFz IFwKICAgICBkYXRhYmFzZV91dGlscworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKIGZyb20gcGdhZG1p bi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKIGZyb20gcmVncmVzc2lvbiBp bXBvcnQgcGFyZW50X25vZGVfZGljdAogZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxz IGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCkBAIC0yMyw3ICsyNCwxOSBAQCBjbGFzcyBUYWJs ZUFkZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAiIiIgVGhpcyBjbGFzcyB3aWxs IGFkZCBuZXcgY29sbGF0aW9uIHVuZGVyIHNjaGVtYSBub2RlLiAiIiIKICAgICBzY2VuYXJpb3Mg PSBbCiAgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIHRhYmxlIG5vZGUuCi0gICAg ICAgICgnRmV0Y2ggdGFibGUgTm9kZSBVUkwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvdGFibGUvb2Jq LycpKQorICAgICAgICAoJ0NyZWF0ZSBUYWJsZScsIGRpY3QodXJsPScvYnJvd3Nlci90YWJsZS9v YmovJykpLAorICAgICAgICAoJ0NyZWF0ZSBSYW5nZSBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIDIg cGFydGl0aW9ucycsCisgICAgICAgICBkaWN0KHVybD0nL2Jyb3dzZXIvdGFibGUvb2JqLycsCisg ICAgICAgICAgICAgIHNlcnZlcl9taW5fdmVyc2lvbj0xMDAwMDAsCisgICAgICAgICAgICAgIHBh cnRpdGlvbl90eXBlPSdyYW5nZScKKyAgICAgICAgICAgICAgKQorICAgICAgICAgKSwKKyAgICAg ICAgKCdDcmVhdGUgTGlzdCBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIDIgcGFydGl0aW9ucycsCisg ICAgICAgICBkaWN0KHVybD0nL2Jyb3dzZXIvdGFibGUvb2JqLycsCisgICAgICAgICAgICAgIHNl cnZlcl9taW5fdmVyc2lvbj0xMDAwMDAsCisgICAgICAgICAgICAgIHBhcnRpdGlvbl90eXBlPSds aXN0JworICAgICAgICAgICAgICApCisgICAgICAgICApCiAgICAgXQogCiAgICAgZGVmIHNldFVw KHNlbGYpOgpAQCAtNDMsNiArNTYsMTkgQEAgY2xhc3MgVGFibGVBZGRUZXN0Q2FzZShCYXNlVGVz dEdlbmVyYXRvcik6CiAgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CiAgICAgICAgICAg ICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gYWRkIGEgdGFi bGUuIikKIAorICAgICAgICBzZWxmLmlzX3BhcnRpdGlvbiA9IEZhbHNlCisgICAgICAgIGlmIGhh c2F0dHIoc2VsZiwgJ3NlcnZlcl9taW5fdmVyc2lvbicpOgorICAgICAgICAgICAgc2VydmVyX2Nv biA9IHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAg ICAgICAgICAgIGlmIG5vdCBzZXJ2ZXJfY29uWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQu IjoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRv IHNlcnZlciB0byBhZGQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFydGl0 aW9uZWQgdGFibGUuIikKKyAgICAgICAgICAgIGlmIHNlcnZlcl9jb25bImRhdGEiXVsidmVyc2lv biJdIDwgc2VsZi5zZXJ2ZXJfbWluX3ZlcnNpb246CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9 ICJQYXJ0aXRpb25lZCB0YWJsZSBhcmUgbm90IHN1cHBvcnRlZCBieSAiIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIlBQQVMvUEcgMTAuMCBhbmQgYmVsb3cuIgorICAgICAgICAgICAgICAg IHNlbGYuc2tpcFRlc3QobWVzc2FnZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgc2VsZi5pc19wYXJ0aXRpb24gPSBUcnVlCisKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAg ICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBhZGQgdGFibGUgdW5kZXIgc2NoZW1hIG5vZGUu ICIiIgogICAgICAgICBkYl91c2VyID0gc2VsZi5zZXJ2ZXJbInVzZXJuYW1lIl0KQEAgLTY4LDcg Kzk0LDcgQEAgY2xhc3MgVGFibGVBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAg ICAgICAgICAgICAgICAgICJzZWNsYWJlbHMiOiBbXQogICAgICAgICAgICAgICAgIH0sCiAgICAg ICAgICAgICAgICAgeyJuYW1lIjogIkRPSiIsCi0gICAgICAgICAgICAgICAgICJjbHR5cGUiOiAi ZGF0ZVtdIiwKKyAgICAgICAgICAgICAgICAgImNsdHlwZSI6ICJkYXRlIiwKICAgICAgICAgICAg ICAgICAgImF0dGFjbCI6IFtdLAogICAgICAgICAgICAgICAgICAiaXNfcHJpbWFyeV9rZXkiOiBG YWxzZSwKICAgICAgICAgICAgICAgICAgImF0dG9wdGlvbnMiOiBbXSwKQEAgLTc2LDcgKzEwMiw3 IEBAIGNsYXNzIFRhYmxlQWRkVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImV4Y2x1ZGVfY29uc3RyYWlu dCI6IFtdLAotICAgICAgICAgICAgImZpbGxmYWN0b3IiOiAiMTEiLAorICAgICAgICAgICAgImZp bGxmYWN0b3IiOiAiIiwKICAgICAgICAgICAgICJoYXN0b2FzdHRhYmxlIjogVHJ1ZSwKICAgICAg ICAgICAgICJsaWtlX2NvbnN0cmFpbnRzIjogVHJ1ZSwKICAgICAgICAgICAgICJsaWtlX2RlZmF1 bHRfdmFsdWUiOiBUcnVlLApAQCAtMTY2LDYgKzE5MiwzNSBAQCBjbGFzcyBUYWJsZUFkZFRlc3RD YXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBd CiAgICAgICAgIH0KKworICAgICAgICBpZiBzZWxmLmlzX3BhcnRpdGlvbjoKKyAgICAgICAgICAg IGRhdGFbJ3BhcnRpdGlvbl90eXBlJ10gPSBzZWxmLnBhcnRpdGlvbl90eXBlCisgICAgICAgICAg ICBkYXRhWydpc19wYXJ0aXRpb25lZCddID0gVHJ1ZQorICAgICAgICAgICAgaWYgc2VsZi5wYXJ0 aXRpb25fdHlwZSA9PSAncmFuZ2UnOgorICAgICAgICAgICAgICAgIGRhdGFbJ3BhcnRpdGlvbnMn XSA9IFwKKyAgICAgICAgICAgICAgICAgICAgW3sndmFsdWVzX2Zyb20nOiAiJzIwMTAtMDEtMDEn IiwKKyAgICAgICAgICAgICAgICAgICAgICAndmFsdWVzX3RvJzogIicyMDEwLTEyLTMxJyIsCisg ICAgICAgICAgICAgICAgICAgICAgJ2lzX2F0dGFjaCc6IEZhbHNlLAorICAgICAgICAgICAgICAg ICAgICAgICdwYXJ0aXRpb25fbmFtZSc6ICdlbXBfMjAxMCcKKyAgICAgICAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgICAgICAgeyd2YWx1ZXNfZnJvbSc6ICInMjAxMS0wMS0wMSci LAorICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZXNfdG8nOiAiJzIwMTEtMTItMzEnIiwKKyAg ICAgICAgICAgICAgICAgICAgICAnaXNfYXR0YWNoJzogRmFsc2UsCisgICAgICAgICAgICAgICAg ICAgICAgJ3BhcnRpdGlvbl9uYW1lJzogJ2VtcF8yMDExJworICAgICAgICAgICAgICAgICAgICAg IH1dCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGFbJ3BhcnRpdGlvbnMn XSA9IFwKKyAgICAgICAgICAgICAgICAgICAgW3sndmFsdWVzX2luJzogIicyMDEyLTAxLTAxJywg JzIwMTItMTItMzEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAnaXNfYXR0YWNoJzogRmFsc2Us CisgICAgICAgICAgICAgICAgICAgICAgJ3BhcnRpdGlvbl9uYW1lJzogJ2VtcF8yMDEyJworICAg ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICB7J3ZhbHVlc19pbic6 ICInMjAxMy0wMS0wMScsICcyMDEzLTEyLTMxJyIsCisgICAgICAgICAgICAgICAgICAgICAgJ2lz X2F0dGFjaCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICdwYXJ0aXRpb25fbmFtZSc6 ICdlbXBfMjAxMycKKyAgICAgICAgICAgICAgICAgICAgICB9XQorICAgICAgICAgICAgZGF0YVsn cGFydGl0aW9uX2tleXMnXSA9IFwKKyAgICAgICAgICAgICAgICBbeydrZXlfdHlwZSc6ICdjb2x1 bW4nLCAncHRfY29sdW1uJzogJ0RPSid9XQorCiAgICAgICAgICMgQWRkIHRhYmxlCiAgICAgICAg IHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCgKICAgICAgICAgICAgIHNlbGYudXJsICsgc3Ry KHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3Rz L3Rlc3RfdGFibGVfZGVsZXRlLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVfZGVsZXRl LnB5CmluZGV4IDFiMmY5ZjUuLjk3NDlmZWQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90 ZXN0X3RhYmxlX2RlbGV0ZS5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZV9kZWxl dGUucHkKQEAgLTIzLDcgKzIzLDcgQEAgY2xhc3MgVGFibGVEZWxldGVUZXN0Q2FzZShCYXNlVGVz dEdlbmVyYXRvcik6CiAgICAgIiIiVGhpcyBjbGFzcyB3aWxsIGRlbGV0ZSBuZXcgdGFibGUgdW5k ZXIgc2NoZW1hIG5vZGUuIiIiCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIEZldGNoaW5n IGRlZmF1bHQgVVJMIGZvciB0YWJsZSBub2RlLgotICAgICAgICAoJ0ZldGNoIHRhYmxlIE5vZGUg VVJMJywgZGljdCh1cmw9Jy9icm93c2VyL3RhYmxlL29iai8nKSkKKyAgICAgICAgKCdEZWxldGUg VGFibGUnLCBkaWN0KHVybD0nL2Jyb3dzZXIvdGFibGUvb2JqLycpKQogICAgIF0KIAogICAgIGRl ZiBzZXRVcChzZWxmKToKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxlX3B1 dC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxlX3B1dC5weQppbmRleCBiZmJmODg0Li5l ZjQ3NmQ3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZV9wdXQucHkKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVfcHV0LnB5CkBAIC0xNCw2ICsxNCw3IEBAIGZy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1h cy50ZXN0cyBpbXBvcnQgXAogICAgIHV0aWxzIGFzIHNjaGVtYV91dGlscwogZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRp bHMgYXMgXAogICAgIGRhdGFiYXNlX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwogZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSByZWdyZXNz aW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0CiBmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3Rf dXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKQEAgLTI0LDcgKzI1LDQ5IEBAIGNsYXNz IFRhYmxlVXBkYXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICIiIlRoaXMgY2xh c3Mgd2lsbCBhZGQgbmV3IGNvbGxhdGlvbiB1bmRlciBzY2hlbWEgbm9kZS4iIiIKICAgICBzY2Vu YXJpb3MgPSBbCiAgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIHRhYmxlIG5vZGUu Ci0gICAgICAgICgnRmV0Y2ggdGFibGUgTm9kZSBVUkwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvdGFi bGUvb2JqLycpKQorICAgICAgICAoJ1VwZGF0ZSBUYWJsZScsIGRpY3QodXJsPScvYnJvd3Nlci90 YWJsZS9vYmovJykpLAorICAgICAgICAoJ0NyZWF0ZSBwYXJ0aXRpb25zIG9mIGV4aXN0aW5nIHJh bmdlIHBhcnRpdGlvbmVkIHRhYmxlJywKKyAgICAgICAgIGRpY3QodXJsPScvYnJvd3Nlci90YWJs ZS9vYmovJywKKyAgICAgICAgICAgICAgc2VydmVyX21pbl92ZXJzaW9uPTEwMDAwMCwKKyAgICAg ICAgICAgICAgcGFydGl0aW9uX3R5cGU9J3JhbmdlJywKKyAgICAgICAgICAgICAgbW9kZT0nY3Jl YXRlJworICAgICAgICAgICAgICApCisgICAgICAgICApLAorICAgICAgICAoJ0NyZWF0ZSBwYXJ0 aXRpb25zIG9mIGV4aXN0aW5nIGxpc3QgcGFydGl0aW9uZWQgdGFibGUnLAorICAgICAgICAgZGlj dCh1cmw9Jy9icm93c2VyL3RhYmxlL29iai8nLAorICAgICAgICAgICAgICBzZXJ2ZXJfbWluX3Zl cnNpb249MTAwMDAwLAorICAgICAgICAgICAgICBwYXJ0aXRpb25fdHlwZT0nbGlzdCcsCisgICAg ICAgICAgICAgIG1vZGU9J2NyZWF0ZScKKyAgICAgICAgICAgICAgKQorICAgICAgICAgKSwKKyAg ICAgICAgKCdEZXRhY2ggcGFydGl0aW9uIGZyb20gZXhpc3RpbmcgcmFuZ2UgcGFydGl0aW9uZWQg dGFibGUnLAorICAgICAgICAgZGljdCh1cmw9Jy9icm93c2VyL3RhYmxlL29iai8nLAorICAgICAg ICAgICAgICBzZXJ2ZXJfbWluX3ZlcnNpb249MTAwMDAwLAorICAgICAgICAgICAgICBwYXJ0aXRp b25fdHlwZT0ncmFuZ2UnLAorICAgICAgICAgICAgICBtb2RlPSdkZXRhY2gnCisgICAgICAgICAg ICAgICkKKyAgICAgICAgICksCisgICAgICAgICgnRGV0YWNoIHBhcnRpdGlvbiBmcm9tIGV4aXN0 aW5nIGxpc3QgcGFydGl0aW9uZWQgdGFibGUnLAorICAgICAgICAgZGljdCh1cmw9Jy9icm93c2Vy L3RhYmxlL29iai8nLAorICAgICAgICAgICAgICBzZXJ2ZXJfbWluX3ZlcnNpb249MTAwMDAwLAor ICAgICAgICAgICAgICBwYXJ0aXRpb25fdHlwZT0nbGlzdCcsCisgICAgICAgICAgICAgIG1vZGU9 J2RldGFjaCcKKyAgICAgICAgICAgICAgKQorICAgICAgICAgKSwKKyAgICAgICAgKCdBdHRhY2gg cGFydGl0aW9uIHRvIGV4aXN0aW5nIHJhbmdlIHBhcnRpdGlvbmVkIHRhYmxlJywKKyAgICAgICAg IGRpY3QodXJsPScvYnJvd3Nlci90YWJsZS9vYmovJywKKyAgICAgICAgICAgICAgc2VydmVyX21p bl92ZXJzaW9uPTEwMDAwMCwKKyAgICAgICAgICAgICAgcGFydGl0aW9uX3R5cGU9J3JhbmdlJywK KyAgICAgICAgICAgICAgbW9kZT0nYXR0YWNoJworICAgICAgICAgICAgICApCisgICAgICAgICAp LAorICAgICAgICAoJ0F0dGFjaCBwYXJ0aXRpb24gdG8gZXhpc3RpbmcgbGlzdCBwYXJ0aXRpb25l ZCB0YWJsZScsCisgICAgICAgICBkaWN0KHVybD0nL2Jyb3dzZXIvdGFibGUvb2JqLycsCisgICAg ICAgICAgICAgIHNlcnZlcl9taW5fdmVyc2lvbj0xMDAwMDAsCisgICAgICAgICAgICAgIHBhcnRp dGlvbl90eXBlPSdsaXN0JywKKyAgICAgICAgICAgICAgbW9kZT0nYXR0YWNoJworICAgICAgICAg ICAgICApCisgICAgICAgICApCiAgICAgXQogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNDQs OSArODcsMzEgQEAgY2xhc3MgVGFibGVVcGRhdGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6 CiAgICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6CiAgICAgICAgICAgICByYWlzZSBFeGNl cHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gYWRkIGEgdGFibGUuIikKICAgICAg ICAgc2VsZi50YWJsZV9uYW1lID0gInRlc3RfdGFibGVfcHV0XyVzIiAlIChzdHIodXVpZC51dWlk NCgpKVsxOjZdKQotICAgICAgICBzZWxmLnRhYmxlX2lkID0gdGFibGVzX3V0aWxzLmNyZWF0ZV90 YWJsZShzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjaGVtYV9uYW1lLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX25hbWUpCisK KyAgICAgICAgc2VsZi5pc19wYXJ0aXRpb24gPSBGYWxzZQorICAgICAgICBpZiBoYXNhdHRyKHNl bGYsICdzZXJ2ZXJfbWluX3ZlcnNpb24nKToKKyAgICAgICAgICAgIHNlcnZlcl9jb24gPSBzZXJ2 ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQpCisgICAgICAgICAg ICBpZiBub3Qgc2VydmVyX2NvblsiaW5mbyJdID09ICJTZXJ2ZXIgY29ubmVjdGVkLiI6CisgICAg ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBzZXJ2ZXIg dG8gYWRkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcnRpdGlvbmVkIHRh YmxlLiIpCisgICAgICAgICAgICBpZiBzZXJ2ZXJfY29uWyJkYXRhIl1bInZlcnNpb24iXSA8IHNl bGYuc2VydmVyX21pbl92ZXJzaW9uOgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiUGFydGl0 aW9uZWQgdGFibGUgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgIiBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgICJQUEFTL1BHIDEwLjAgYW5kIGJlbG93LiIKKyAgICAgICAgICAgICAgICBzZWxmLnNr aXBUZXN0KG1lc3NhZ2UpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYu aXNfcGFydGl0aW9uID0gVHJ1ZQorCisgICAgICAgICAgICBzZWxmLnRhYmxlX2lkID0gdGFibGVz X3V0aWxzLmNyZWF0ZV90YWJsZV9mb3JfcGFydGl0aW9uKAorICAgICAgICAgICAgICAgIHNlbGYu c2VydmVyLAorICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKKyAgICAgICAgICAgICAgICBz ZWxmLnNjaGVtYV9uYW1lLAorICAgICAgICAgICAgICAgIHNlbGYudGFibGVfbmFtZSwKKyAgICAg ICAgICAgICAgICAncGFydGl0aW9uZWQnLAorICAgICAgICAgICAgICAgIHNlbGYucGFydGl0aW9u X3R5cGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnRhYmxlX2lkID0gdGFibGVz X3V0aWxzLmNyZWF0ZV90YWJsZShzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFf bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYudGFibGVfbmFtZSkKIAogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAi IiJUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggYWRkZWQgdGFibGUgdW5kZXIgc2NoZW1hIG5vZGUu IiIiCkBAIC01NCwxMCArMTE5LDE4IEBAIGNsYXNzIFRhYmxlVXBkYXRlVGVzdENhc2UoQmFzZVRl c3RHZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi50YWJsZV9pZCkKICAgICAgICAgaWYgbm90IHRhYmxlX3Jlc3BvbnNlOgog ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCB0aGUgdGFibGUgdG8g dXBkYXRlLiIpCi0gICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi VGhpcyBpcyB0ZXN0IGNvbW1lbnQgZm9yIHRhYmxlIiwKLSAgICAgICAgICAgICJpZCI6IHNlbGYu dGFibGVfaWQKLSAgICAgICAgfQorCisgICAgICAgIGlmIHNlbGYuaXNfcGFydGl0aW9uOgorICAg ICAgICAgICAgZGF0YSA9IHsiaWQiOiBzZWxmLnRhYmxlX2lkfQorICAgICAgICAgICAgdGFibGVz X3V0aWxzLnNldF9wYXJ0aXRpb25fZGF0YSgKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlciwg c2VsZi5kYl9uYW1lLCBzZWxmLnNjaGVtYV9uYW1lLCBzZWxmLnRhYmxlX25hbWUsCisgICAgICAg ICAgICAgICAgc2VsZi5wYXJ0aXRpb25fdHlwZSwgZGF0YSwgc2VsZi5tb2RlKQorICAgICAgICBl bHNlOgorICAgICAgICAgICAgZGF0YSA9IHsKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i OiAiVGhpcyBpcyB0ZXN0IGNvbW1lbnQgZm9yIHRhYmxlIiwKKyAgICAgICAgICAgICAgICAiaWQi OiBzZWxmLnRhYmxlX2lkCisgICAgICAgICAgICB9CisKICAgICAgICAgcmVzcG9uc2UgPSBzZWxm LnRlc3Rlci5wdXQoCiAgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JP VVApICsgJy8nICsKICAgICAgICAgICAgIHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBzdHIo c2VsZi5kYl9pZCkgKyAnLycgKwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3V0aWxzLnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3Rlc3RzL3V0aWxzLnB5CmluZGV4IDQ1NmYwMjAuLjBjN2FlZGUgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZXN0cy91dGlscy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdXRp bHMucHkKQEAgLTg1LDMgKzg1LDE1MyBAQCBkZWYgdmVyaWZ5X3RhYmxlKHNlcnZlciwgZGJfbmFt ZSwgdGFibGVfaWQpOgogICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgIHRyYWNlYmFjay5w cmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICByYWlzZQorCisKK2RlZiBjcmVhdGVf dGFibGVfZm9yX3BhcnRpdGlvbihzZXJ2ZXIsIGRiX25hbWUsIHNjaGVtYV9uYW1lLCB0YWJsZV9u YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX3R5cGUsIHBhcnRpdGlv bl90eXBlLCBwYXJ0aXRpb25fbmFtZT1Ob25lKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9u IGNyZWF0ZXMgcGFydGl0aW9uZWQvcGFydGl0aW9uL3JlZ3VsYXIgdGFibGUKKyAgICB1bmRlciBw cm92aWRlZCBzY2hlbWEuCisKKyAgICA6cGFyYW0gc2VydmVyOiBzZXJ2ZXIgZGV0YWlscworICAg IDpwYXJhbSBkYl9uYW1lOiBkYXRhYmFzZSBuYW1lCisgICAgOnBhcmFtIHNjaGVtYV9uYW1lOiBz Y2hlbWEgbmFtZQorICAgIDpwYXJhbSB0YWJsZV9uYW1lOiB0YWJsZSBuYW1lCisgICAgOnBhcmFt IHRhYmxlX3R5cGU6IHJlZ3VsYXIvcGFydGl0aW9uZWQvcGFydGl0aW9uCisgICAgOnBhcmFtIHBh cnRpdGlvbl90eXBlOiBwYXJ0aXRpb24gdGFibGUgdHlwZSAocmFuZ2UvbGlzdCkKKyAgICA6cGFy YW0gcGFydGl0aW9uX25hbWU6IFBhcnRpdGlvbiBOYW1lCisgICAgOnJldHVybiB0YWJsZV9pZDog dGFibGUgaWQKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIGNvbm5lY3Rpb24gPSB1dGlscy5n ZXRfZGJfY29ubmVjdGlvbihkYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydob3N0J10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3BvcnQnXSkK KyAgICAgICAgb2xkX2lzb2xhdGlvbl9sZXZlbCA9IGNvbm5lY3Rpb24uaXNvbGF0aW9uX2xldmVs CisgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xhdGlvbl9sZXZlbCgwKQorICAgICAgICBwZ19j dXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCisKKyAgICAgICAgcXVlcnkgPSAnJworICAgICAg ICBpZiB0YWJsZV90eXBlID09ICdwYXJ0aXRpb25lZCc6CisgICAgICAgICAgICBpZiBwYXJ0aXRp b25fdHlwZSA9PSAncmFuZ2UnOgorICAgICAgICAgICAgICAgIHF1ZXJ5ID0gIkNSRUFURSBUQUJM RSAlcy4lcyhjb3VudHJ5IHRleHQsIHNhbGVzIGJpZ2ludCwgIiBcCisgICAgICAgICAgICAgICAg ICAgICAgICAic2FsZWRhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFKHNhbGVkYXRlKSIgJSBc CisgICAgICAgICAgICAgICAgICAgICAgICAoc2NoZW1hX25hbWUsIHRhYmxlX25hbWUpCisgICAg ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHF1ZXJ5ID0gIkNSRUFURSBUQUJMRSAlcy4l cyhjb3VudHJ5IHRleHQsIHNhbGVzIGJpZ2ludCwgIiBcCisgICAgICAgICAgICAgICAgICAgICAg ICAic2FsZWRhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIExJU1Qoc2FsZWRhdGUpIiAlIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgIChzY2hlbWFfbmFtZSwgdGFibGVfbmFtZSkKKyAgICAgICAgZWxp ZiB0YWJsZV90eXBlID09ICdwYXJ0aXRpb24nOgorICAgICAgICAgICAgaWYgcGFydGl0aW9uX3R5 cGUgPT0gJ3JhbmdlJzoKKyAgICAgICAgICAgICAgICBxdWVyeSA9ICJDUkVBVEUgVEFCTEUgJXMu JXMgUEFSVElUSU9OIE9GICVzLiVzICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIkZPUiBW QUxVRVMgRlJPTSAoJzIwMTItMDEtMDEnKSBUTyAoJzIwMTItMTItMzEnKSIgJSBcCisgICAgICAg ICAgICAgICAgICAgICAgICAoc2NoZW1hX25hbWUsIHBhcnRpdGlvbl9uYW1lLCBzY2hlbWFfbmFt ZSwgdGFibGVfbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcXVlcnkg PSAiQ1JFQVRFIFRBQkxFICVzLiVzIFBBUlRJVElPTiBPRiAlcy4lcyAiIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICJGT1IgVkFMVUVTIElOICgnMjAxMy0wMS0wMScpIiAlIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgIChzY2hlbWFfbmFtZSwgcGFydGl0aW9uX25hbWUsIHNjaGVtYV9uYW1l LCB0YWJsZV9uYW1lKQorCisgICAgICAgICAgICAjIFRvIGZldGNoIE9JRCB0YWJsZSBuYW1lIGlz IGFjdHVhbGx5IHBhcnRpdGlvbiBuYW1lCisgICAgICAgICAgICB0YWJsZV9uYW1lID0gcGFydGl0 aW9uX25hbWUKKyAgICAgICAgZWxpZiB0YWJsZV90eXBlID09ICdyZWd1bGFyJzoKKyAgICAgICAg ICAgIHF1ZXJ5ID0gIkNSRUFURSBUQUJMRSAlcy4lcyhjb3VudHJ5IHRleHQsIHNhbGVzIGJpZ2lu dCwiIFwKKyAgICAgICAgICAgICAgICAgICAgInNhbGVkYXRlIGRhdGUgTk9UIE5VTEwpIiAlIChz Y2hlbWFfbmFtZSwgdGFibGVfbmFtZSkKKworICAgICAgICBwZ19jdXJzb3IuZXhlY3V0ZShxdWVy eSkKKyAgICAgICAgY29ubmVjdGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKG9sZF9pc29sYXRpb25f bGV2ZWwpCisgICAgICAgIGNvbm5lY3Rpb24uY29tbWl0KCkKKyAgICAgICAgIyBHZXQgJ29pZCcg ZnJvbSBuZXdseSBjcmVhdGVkIHRhYmxlCisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKCJzZWxl Y3Qgb2lkIGZyb20gcGdfY2xhc3Mgd2hlcmUgcmVsbmFtZT0nJXMnIiAlCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHRhYmxlX25hbWUpCisgICAgICAgIHRhYmxlID0gcGdfY3Vyc29yLmZldGNo b25lKCkKKyAgICAgICAgdGFibGVfaWQgPSAnJworICAgICAgICBpZiB0YWJsZToKKyAgICAgICAg ICAgIHRhYmxlX2lkID0gdGFibGVbMF0KKyAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpCisgICAg ICAgIHJldHVybiB0YWJsZV9pZAorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHRyYWNl YmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICByYWlzZQorCisKK2RlZiBz ZXRfcGFydGl0aW9uX2RhdGEoc2VydmVyLCBkYl9uYW1lLCBzY2hlbWFfbmFtZSwgdGFibGVfbmFt ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uX3R5cGUsIGRhdGEsIG1vZGUpOgor ICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzZXQgdGhlIHBhcnRpdGlvbnMg ZGF0YSBvbiB0aGUgYmFzaXMgb2YKKyAgICBwYXJ0aXRpb24gdHlwZSBhbmQgYWN0aW9uLgorCisg ICAgOnBhcmFtIHNlcnZlcjogc2VydmVyIGRldGFpbHMKKyAgICA6cGFyYW0gZGJfbmFtZTogRGF0 YWJhc2UgTmFtZQorICAgIDpwYXJhbSBzY2hlbWFfbmFtZTogU2NoZW1hIE5hbWUKKyAgICA6cGFy YW0gdGFibGVfbmFtZTogVGFibGUgTmFtZQorICAgIDpwYXJhbSBwYXJ0aXRpb25fdHlwZTogcmFu Z2Ugb3IgbGlzdAorICAgIDpwYXJhbSBkYXRhOiBEYXRhCisgICAgOnBhcmFtIG1vZGU6IGNyZWF0 ZS9kZXRhY2gKKyAgICA6cmV0dXJuOgorICAgICIiIgorCisgICAgZGF0YVsncGFydGl0aW9ucydd ID0gZGljdCgpCisgICAgaWYgcGFydGl0aW9uX3R5cGUgPT0gJ3JhbmdlJyBhbmQgbW9kZSA9PSAn Y3JlYXRlJzoKKyAgICAgICAgZGF0YVsncGFydGl0aW9ucyddLnVwZGF0ZSgKKyAgICAgICAgICAg IHsnYWRkZWQnOiBbeyd2YWx1ZXNfZnJvbSc6ICInMjAxNC0wMS0wMSciLAorICAgICAgICAgICAg ICAgICAgICAgICAgJ3ZhbHVlc190byc6ICInMjAxNC0xMi0zMSciLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ2lzX2F0dGFjaCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3Bh cnRpdGlvbl9uYW1lJzogJ3NhbGVfMjAxNCd9LAorICAgICAgICAgICAgICAgICAgICAgICB7J3Zh bHVlc19mcm9tJzogIicyMDE1LTAxLTAxJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAndmFs dWVzX3RvJzogIicyMDE1LTEyLTMxJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAnaXNfYXR0 YWNoJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAncGFydGl0aW9uX25hbWUnOiAn c2FsZV8yMDE1JworICAgICAgICAgICAgICAgICAgICAgICAgfV0KKyAgICAgICAgICAgICB9Cisg ICAgICAgICkKKyAgICBlbGlmIHBhcnRpdGlvbl90eXBlID09ICdsaXN0JyBhbmQgbW9kZSA9PSAn Y3JlYXRlJzoKKyAgICAgICAgZGF0YVsncGFydGl0aW9ucyddLnVwZGF0ZSgKKyAgICAgICAgICAg IHsnYWRkZWQnOiBbeyd2YWx1ZXNfaW4nOiAiJzIwMTYtMDEtMDEnLCAnMjAxNi0xMi0zMSciLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX2F0dGFjaCc6IEZhbHNlLAorICAgICAgICAgICAg ICAgICAgICAgICAgJ3BhcnRpdGlvbl9uYW1lJzogJ3NhbGVfMjAxNid9LAorICAgICAgICAgICAg ICAgICAgICAgICB7J3ZhbHVlc19pbic6ICInMjAxNy0wMS0wMScsICcyMDE3LTEyLTMxJyIsCisg ICAgICAgICAgICAgICAgICAgICAgICAnaXNfYXR0YWNoJzogRmFsc2UsCisgICAgICAgICAgICAg ICAgICAgICAgICAncGFydGl0aW9uX25hbWUnOiAnc2FsZV8yMDE3JworICAgICAgICAgICAgICAg ICAgICAgICAgfV0KKyAgICAgICAgICAgICB9CisgICAgICAgICkKKyAgICBlbGlmIHBhcnRpdGlv bl90eXBlID09ICdyYW5nZScgYW5kIG1vZGUgPT0gJ2RldGFjaCc6CisgICAgICAgIHBhcnRpdGlv bl9pZCA9IGNyZWF0ZV90YWJsZV9mb3JfcGFydGl0aW9uKHNlcnZlciwgZGJfbmFtZSwgc2NoZW1h X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRhYmxlX25hbWUsICdwYXJ0aXRpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25fdHlwZSwgJ3NhbGVfMjAxMicpCisgICAgICAg IGRhdGFbJ3BhcnRpdGlvbnMnXS51cGRhdGUoCisgICAgICAgICAgICB7J2RlbGV0ZWQnOiBbeydv aWQnOiBwYXJ0aXRpb25faWR9XQorICAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgIGVsaWYg cGFydGl0aW9uX3R5cGUgPT0gJ2xpc3QnIGFuZCBtb2RlID09ICdkZXRhY2gnOgorICAgICAgICBw YXJ0aXRpb25faWQgPSBjcmVhdGVfdGFibGVfZm9yX3BhcnRpdGlvbihzZXJ2ZXIsIGRiX25hbWUs IHNjaGVtYV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0YWJsZV9uYW1lLCAncGFydGl0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uX3R5cGUsICdzYWxlXzIwMTMnKQor ICAgICAgICBkYXRhWydwYXJ0aXRpb25zJ10udXBkYXRlKAorICAgICAgICAgICAgeydkZWxldGVk JzogW3snb2lkJzogcGFydGl0aW9uX2lkfV0KKyAgICAgICAgICAgICB9CisgICAgICAgICkKKyAg ICBlbGlmIHBhcnRpdGlvbl90eXBlID09ICdyYW5nZScgYW5kIG1vZGUgPT0gJ2F0dGFjaCc6Cisg ICAgICAgIHBhcnRpdGlvbl9pZCA9IGNyZWF0ZV90YWJsZV9mb3JfcGFydGl0aW9uKHNlcnZlciwg ZGJfbmFtZSwgc2NoZW1hX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdhdHRhY2hfc2FsZV8yMDEwJywgJ3JlZ3VsYXInLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25fdHlwZSkK KyAgICAgICAgZGF0YVsncGFydGl0aW9ucyddLnVwZGF0ZSgKKyAgICAgICAgICAgIHsnYWRkZWQn OiBbeyd2YWx1ZXNfZnJvbSc6ICInMjAxMC0wMS0wMSciLAorICAgICAgICAgICAgICAgICAgICAg ICAgJ3ZhbHVlc190byc6ICInMjAxMC0xMi0zMSciLAorICAgICAgICAgICAgICAgICAgICAgICAg J2lzX2F0dGFjaCc6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAncGFydGl0aW9uX25h bWUnOiBwYXJ0aXRpb25faWQKKyAgICAgICAgICAgICAgICAgICAgICAgIH1dCisgICAgICAgICAg ICAgfQorICAgICAgICApCisgICAgZWxpZiBwYXJ0aXRpb25fdHlwZSA9PSAnbGlzdCcgYW5kIG1v ZGUgPT0gJ2F0dGFjaCc6CisgICAgICAgIHBhcnRpdGlvbl9pZCA9IGNyZWF0ZV90YWJsZV9mb3Jf cGFydGl0aW9uKHNlcnZlciwgZGJfbmFtZSwgc2NoZW1hX25hbWUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdHRhY2hfc2FsZV8yMDExJywgJ3Jl Z3VsYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYXJ0aXRpb25fdHlwZSkKKyAgICAgICAgZGF0YVsncGFydGl0aW9ucyddLnVwZGF0ZSgKKyAg ICAgICAgICAgIHsnYWRkZWQnOiBbeyd2YWx1ZXNfaW4nOiAiJzIwMTEtMDEtMDEnIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICdpc19hdHRhY2gnOiBUcnVlLAorICAgICAgICAgICAgICAgICAg ICAgICAgJ3BhcnRpdGlvbl9uYW1lJzogcGFydGl0aW9uX2lkCisgICAgICAgICAgICAgICAgICAg ICAgICB9XQorICAgICAgICAgICAgIH0KKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RyaWdnZXJzL3RlbXBsYXRlcy90cmlnZ2VyL2pzL3RyaWdnZXIuanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdHJp Z2dlcnMvdGVtcGxhdGVzL3RyaWdnZXIvanMvdHJpZ2dlci5qcwppbmRleCAxNjIzZmU1Li44N2Yx ZWIzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvdGVtcGxhdGVzL3RyaWdnZXIvanMv dHJpZ2dlci5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvdGVtcGxhdGVzL3RyaWdnZXIvanMv dHJpZ2dlci5qcwpAQCAtMzAsMTMgKzMwLDE1IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRyaWdn ZXInLCBbCiAgICAgICAgIG5vZGU6ICd0cmlnZ2VyJywKICAgICAgICAgbGFiZWw6IGdldHRleHQo J1RyaWdnZXJzJyksCiAgICAgICAgIHR5cGU6ICdjb2xsLXRyaWdnZXInLAorICAgICAgICBnZXRU cmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwK ICAgICAgICAgY29sdW1uczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10KICAgICAgIH0pOwogICB9 OwogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWyd0cmlnZ2VyJ10pIHsKLSAgICBwZ0FkbWluLkJy b3dzZXIuTm9kZXNbJ3RyaWdnZXInXSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0g ICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsICd2aWV3J10sCisgICAgcGdBZG1pbi5Ccm93c2Vy Lk5vZGVzWyd0cmlnZ2VyJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAgICAgZ2V0VHJl ZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHksCisg ICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsICd2aWV3JywgJ3BhcnRpdGlvbiddLAogICAgICAg Y29sbGVjdGlvbl90eXBlOiBbJ2NvbGwtdGFibGUnLCAnY29sbC12aWV3J10sCiAgICAgICB0eXBl OiAndHJpZ2dlcicsCiAgICAgICBsYWJlbDogZ2V0dGV4dCgnVHJpZ2dlcicpLApAQCAtNzIsNiAr NzQsMTIgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudHJpZ2dlcicsIFsKICAgICAgICAgICBpY29u OiAnd2NUYWJJY29uIGljb24tdHJpZ2dlcicsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnLCBjaGVj azogdHJ1ZX0sCiAgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJwogICAgICAgICB9LHsKKyAg ICAgICAgICBuYW1lOiAnY3JlYXRlX3RyaWdnZXJfb25QYXJ0aXRpb24nLCBub2RlOiAncGFydGl0 aW9uJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRl eHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29y eTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogZ2V0dGV4dCgnVHJpZ2dlci4uLicpLAor ICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi10cmlnZ2VyJywgZGF0YToge2FjdGlvbjog J2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisg ICAgICAgIH0sewogICAgICAgICAgIG5hbWU6ICdlbmFibGVfdHJpZ2dlcicsIG5vZGU6ICd0cmln Z2VyJywgbW9kdWxlOiB0aGlzLAogICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRl eHQnXSwgY2FsbGJhY2s6ICdlbmFibGVfdHJpZ2dlcicsCiAgICAgICAgICAgY2F0ZWdvcnk6ICdj b25uZWN0JywgcHJpb3JpdHk6IDMsIGxhYmVsOiBnZXR0ZXh0KCdFbmFibGUgdHJpZ2dlcicpLApA QCAtMjA2LDYgKzIxNCwxNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50cmlnZ2VyJywgWwogICAg ICAgICAgIG1vZGU6IFsnY3JlYXRlJywnZWRpdCcsICdwcm9wZXJ0aWVzJ10sCiAgICAgICAgICAg ZGVwczogWydpc19jb25zdHJhaW50X3RyaWdnZXInXSwKICAgICAgICAgICBkaXNhYmxlZDogZnVu Y3Rpb24obSkgeworICAgICAgICAgICAgLy8gRGlzYWJsZWQgaWYgdGFibGUgaXMgYSBwYXJ0aXRp b25lZCB0YWJsZS4KKyAgICAgICAgICAgIGlmIChfLmhhcyhtLCAnbm9kZV9pbmZvJykgJiYgXy5o YXMobS5ub2RlX2luZm8sICd0YWJsZScpICYmCisgICAgICAgICAgICAgICAgXy5oYXMobS5ub2Rl X2luZm8udGFibGUsICdpc19wYXJ0aXRpb25lZCcpICYmIG0ubm9kZV9pbmZvLnRhYmxlLmlzX3Bh cnRpdGlvbmVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0 aW9uKCl7CisgICAgICAgICAgICAgICAgICBtLnNldCgnaXNfcm93X3RyaWdnZXInLCBmYWxzZSk7 CisgICAgICAgICAgICAgIH0sMTApOworCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBJZiBjb25zdHJhaW50IHRyaWdnZXIgaXMgc2V0 IHRvIFRydWUgdGhlbiByb3cgdHJpZ2dlciB3aWxsCiAgICAgICAgICAgICAvLyBhdXRvbWF0aWNh bGx5IHNldCB0byBUcnVlIGFuZCBiZWNvbWVzIGRpc2FibGUKICAgICAgICAgICAgIHZhciBpc19j b25zdHJhaW50X3RyaWdnZXIgPSBtLmdldCgnaXNfY29uc3RyYWludF90cmlnZ2VyJyk7CkBAIC0y MzIsNyArMjUxLDE5IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRyaWdnZXInLCBbCiAgICAgICAg ICAgaWQ6ICdpc19jb25zdHJhaW50X3RyaWdnZXInLCBsYWJlbDogZ2V0dGV4dCgnQ29uc3RyYWlu dCB0cmlnZ2VyPycpLAogICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBkaXNhYmxlZDogJ2luU2No ZW1hV2l0aE1vZGVsQ2hlY2snLAogICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywnZWRpdCcsICdw cm9wZXJ0aWVzJ10sCi0gICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ0RlZmluaXRpb24nKQorICAg ICAgICAgIGdyb3VwOiBnZXR0ZXh0KCdEZWZpbml0aW9uJyksCisgICAgICAgICAgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8vIERpc2FibGVkIGlmIHRhYmxlIGlzIGEgcGFy dGl0aW9uZWQgdGFibGUuCisgICAgICAgICAgICBpZiAoXy5oYXMobSwgJ25vZGVfaW5mbycpICYm IF8uaGFzKG0ubm9kZV9pbmZvLCAndGFibGUnKSAmJgorICAgICAgICAgICAgICAgIF8uaGFzKG0u bm9kZV9pbmZvLnRhYmxlLCAnaXNfcGFydGl0aW9uZWQnKSAmJiBtLm5vZGVfaW5mby50YWJsZS5p c19wYXJ0aXRpb25lZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc2V0VGltZW91dChm dW5jdGlvbigpeworICAgICAgICAgICAgICAgICAgbS5zZXQoJ2lzX2NvbnN0cmFpbnRfdHJpZ2dl cicsIGZhbHNlKTsKKyAgICAgICAgICAgICAgfSwxMCk7CisKKyAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQogICAgICAgICB9LHsKICAgICAgICAg ICBpZDogJ3RnZGVmZXJyYWJsZScsIGxhYmVsOiBnZXR0ZXh0KCdEZWZlcnJhYmxlPycpLAogICAg ICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBncm91cDogZ2V0dGV4dCgnRGVmaW5pdGlvbicpLApkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3V0aWxzLnB5Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MDllMWEKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdXRpbHMucHkKQEAgLTAsMCArMSwyMTEyIEBACisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAx MyAtIDIwMTcsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCisiIiIgSW1wbGVtZW50cyBVdGlsaXR5IGNsYXNzIGZvciBUYWJsZSBhbmQgUGFydGl0 aW9uZWQgVGFibGUuICIiIgorCitpbXBvcnQgcmUKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFw cworaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3Rl bXBsYXRlLCBqc29uaWZ5LCByZXF1ZXN0Citmcm9tIGZsYXNrX2JhYmVsIGltcG9ydCBnZXR0ZXh0 Citmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IsIFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2Us IGdvbmUKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFz ZXMuc2NoZW1hcy51dGlscyBcCisgICAgaW1wb3J0IERhdGFUeXBlUmVhZGVyLCB0cmlnZ2VyX2Rl ZmluaXRpb24sIHBhcnNlX3J1bGVfZGVmaW5pdGlvbgorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2Vy dmVyX2dyb3Vwcy5zZXJ2ZXJzLnV0aWxzIGltcG9ydCBwYXJzZV9wcml2X2Zyb21fZGIsIFwKKyAg ICBwYXJzZV9wcml2X3RvX2RiCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdD aGlsZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVy Citmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKKworCitjbGFzcyBCYXNlVGFi bGVWaWV3KFBHQ2hpbGROb2RlVmlldyk6CisgICAgIiIiCisgICAgVGhpcyBjbGFzcyBpcyBiYXNl IGNsYXNzIGZvciB0YWJsZXMgYW5kIHBhcnRpdGlvbmVkIHRhYmxlcy4KKworICAgIE1ldGhvZHM6 CisgICAgLS0tLS0tLQorICAgICogY2hlY2tfcHJlY29uZGl0aW9uKCkKKyAgICAgIC0gVGhpcyBm dW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNoZWNrcworICAg ICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxz byBhdHRhY2hlcworICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRp ZXMgdG8gc2VsZgorCisgICAgKiBfZm9ybWF0dGVyKGRhdGEsIHRpZCkKKyAgICAgIC0gSXQgd2ls bCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKKyAgICAgICAgYXMgcGVy IGNsaWVudCBtb2RlbCBmb3JtYXQKKworICAgICogX2NvbHVtbnNfZm9ybWF0dGVyKHRpZCwgZGF0 YSk6CisgICAgICAtIEl0IHdpbGwgcmV0dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVz dWx0CisgICAgICAgIGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBjb2x1bW4gbm9kZQor CisgICAgKiBfaW5kZXhfY29uc3RyYWludHNfZm9ybWF0dGVyKHNlbGYsIGRpZCwgdGlkLCBkYXRh KToKKyAgICAgIC0gSXQgd2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1 bHQKKyAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGluZGV4IGNvbnN0cmFp bnQgbm9kZQorCisgICAgKiBfY2x0eXBlX2Zvcm1hdHRlcih0eXBlKTogKHN0YXRpY21ldGhvZCkK KyAgICAgIC0gV2UgbmVlZCB0byByZW1vdmUgW10gZnJvbSB0eXBlIGFuZCBhcHBlbmQgaXQKKyAg ICAgICAgYWZ0ZXIgbGVuZ3RoL3ByZWNpc2lvbiBzbyB3ZSB3aWxsIHNlbmQgZmxhZyBmb3IKKyAg ICAgICAgc3FsIHRlbXBsYXRlLgorCisgICAgKiBnZXRfdGFibGVfZGVwZW5kZW50cyhzZWxmLCB0 aWQpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW50cyBhbmQgcmV0dXJu IGFqYXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSB0YWJsZSBub2RlLgorCisgICAgKiBnZXRf dGFibGVfZGVwZW5kZW5jaWVzKHNlbGYsIHRpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gZ2V0 IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0 aGUgdGFibGUgbm9kZS4KKworICAgICogZ2V0X3RhYmxlX3N0YXRpc3RpY3Moc2VsZiwgdGlkKToK KyAgICAgIC0gUmV0dXJucyB0aGUgc3RhdGlzdGljcyBmb3IgYSBwYXJ0aWN1bGFyIHRhYmxlIGlm IHRpZCBpcyBzcGVjaWZpZWQsCisgICAgICAgIG90aGVyd2lzZSBpdCB3aWxsIHJldHVybiBzdGF0 aXN0aWNzIGZvciBhbGwgdGhlIHRhYmxlcyBpbiB0aGF0CisgICAgICAgIHNjaGVtYS4KKyAgICAq IGdldF9yZXZlcnNlX2VuZ2luZWVyZWRfc3FsKHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBtYWluX3Nx bCwgZGF0YSk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGVzIHJldmVyc2UgZW5n aW5lZXJlZCBzcWwgZm9yCisgICAgICAgIHRoZSB0YWJsZSBvYmplY3QuCisKKyAgICAqIHJlc2V0 X3N0YXRpc3RpY3Moc2VsZiwgc2NpZCwgdGlkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxs IHJlc2V0IHN0YXRpc3RpY3Mgb2YgdGFibGUuCisgICAgIiIiCisgICAgQHN0YXRpY21ldGhvZAor ICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlz IGZ1bmN0aW9uIHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2tzCisg ICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdmlldywgaXQgd2lsbCBh bHNvIGF0dGFjaGVzCisgICAgICAgIG1hbmFnZXIsY29ubiAmIHRlbXBsYXRlX3BhdGggcHJvcGVy dGllcyB0byBzZWxmCisgICAgICAgICIiIgorCisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBk ZWYgd3JhcCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgIyBIZXJlIGFyZ3NbMF0gd2ls bCBob2xkIHNlbGYgJiBrd2FyZ3Mgd2lsbCBob2xkIGdpZCxzaWQsZGlkCisgICAgICAgICAgICBz ZWxmID0gYXJnc1swXQorICAgICAgICAgICAgZHJpdmVyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxU X0RSSVZFUikKKyAgICAgICAgICAgIGRpZCA9IGt3YXJnc1snZGlkJ10KKyAgICAgICAgICAgIHNl bGYubWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoa3dhcmdzWydzaWQnXSkKKyAg ICAgICAgICAgIHNlbGYuY29ubiA9IHNlbGYubWFuYWdlci5jb25uZWN0aW9uKGRpZD1rd2FyZ3Nb J2RpZCddKQorICAgICAgICAgICAgc2VsZi5xdElkZW50ID0gZHJpdmVyLnF0SWRlbnQKKyAgICAg ICAgICAgIHNlbGYucXRUeXBlSWRlbnQgPSBkcml2ZXIucXRUeXBlSWRlbnQKKyAgICAgICAgICAg ICMgV2UgbmVlZCBkYXRsYXN0c3lzb2lkIHRvIGNoZWNrIGlmIGN1cnJlbnQgdGFibGUgaXMgc3lz dGVtIHRhYmxlCisgICAgICAgICAgICBzZWxmLmRhdGxhc3RzeXNvaWQgPSBzZWxmLm1hbmFnZXIu ZGJfaW5mb1sKKyAgICAgICAgICAgICAgICBkaWQKKyAgICAgICAgICAgIF1bJ2RhdGxhc3RzeXNv aWQnXSBpZiBzZWxmLm1hbmFnZXIuZGJfaW5mbyBpcyBub3QgTm9uZSBhbmQgXAorICAgICAgICAg ICAgICAgIGRpZCBpbiBzZWxmLm1hbmFnZXIuZGJfaW5mbyBlbHNlIDAKKworICAgICAgICAgICAg dmVyID0gc2VsZi5tYW5hZ2VyLnZlcnNpb24KKyAgICAgICAgICAgICMgU2V0IHRoZSB0ZW1wbGF0 ZSBwYXRoIGZvciB0aGUgU1FMIHNjcmlwdHMKKyAgICAgICAgICAgIHNlbGYudGFibGVfdGVtcGxh dGVfcGF0aCA9ICd0YWJsZS9zcWwvI3swfSMnLmZvcm1hdCh2ZXIpCisgICAgICAgICAgICBzZWxm LnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoID0gJ3BhcnRpdGlvbi9zcWwvI3swfSMnLmZvcm1hdCh2 ZXIpCisKKyAgICAgICAgICAgICMgVGVtcGxhdGUgZm9yIENvbHVtbiAsY2hlY2sgY29uc3RyYWlu dCBhbmQgZXhjbHVzaW9uCisgICAgICAgICAgICAjIGNvbnN0cmFpbnQgbm9kZQorICAgICAgICAg ICAgc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCA9ICdjb2x1bW4vc3FsLyN7MH0jJy5mb3JtYXQo dmVyKQorICAgICAgICAgICAgc2VsZi5jaGVja19jb25zdHJhaW50X3RlbXBsYXRlX3BhdGggPSBc CisgICAgICAgICAgICAgICAgJ2NoZWNrX2NvbnN0cmFpbnQvc3FsLyN7MH0jJy5mb3JtYXQodmVy KQorICAgICAgICAgICAgc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoID0g XAorICAgICAgICAgICAgICAgICdleGNsdXNpb25fY29uc3RyYWludC9zcWwvI3swfSMnLmZvcm1h dCh2ZXIpCisKKyAgICAgICAgICAgICMgVGVtcGxhdGUgZm9yIFBLICYgVW5pcXVlIGNvbnN0cmFp bnQgbm9kZQorICAgICAgICAgICAgc2VsZi5pbmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgg PSAnaW5kZXhfY29uc3RyYWludC9zcWwnCisKKyAgICAgICAgICAgICMgVGVtcGxhdGUgZm9yIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgbm9kZQorICAgICAgICAgICAgc2VsZi5mb3JlaWduX2tleV90 ZW1wbGF0ZV9wYXRoID0gJ2ZvcmVpZ25fa2V5L3NxbC8jezB9IycuZm9ybWF0KHZlcikKKworICAg ICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgaW5kZXggbm9kZQorICAgICAgICAgICAgc2VsZi5pbmRl eF90ZW1wbGF0ZV9wYXRoID0gJ2luZGV4L3NxbC8jezB9IycuZm9ybWF0KHZlcikKKworICAgICAg ICAgICAgIyBUZW1wbGF0ZSBmb3IgdHJpZ2dlciBub2RlCisgICAgICAgICAgICBzZWxmLnRyaWdn ZXJfdGVtcGxhdGVfcGF0aCA9ICd0cmlnZ2VyL3NxbC8jezB9IycuZm9ybWF0KHZlcikKKworICAg ICAgICAgICAgIyBUZW1wbGF0ZSBmb3IgcnVsZXMgbm9kZQorICAgICAgICAgICAgc2VsZi5ydWxl c190ZW1wbGF0ZV9wYXRoID0gJ3J1bGVzL3NxbCcKKworICAgICAgICAgICAgIyBTdXBwb3J0ZWQg QUNMIGZvciB0YWJsZQorICAgICAgICAgICAgc2VsZi5hY2wgPSBbJ2EnLCAncicsICd3JywgJ2Qn LCAnRCcsICd4JywgJ3QnXQorCisgICAgICAgICAgICAjIFN1cHBvcnRlZCBBQ0wgZm9yIGNvbHVt bnMKKyAgICAgICAgICAgIHNlbGYuY29sdW1uX2FjbCA9IFsnYScsICdyJywgJ3cnLCAneCddCisK KyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4g d3JhcAorCisgICAgZGVmIF9jb2x1bW5zX2Zvcm1hdHRlcihzZWxmLCB0aWQsIGRhdGEpOgorICAg ICAgICAiIiIKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHRpZDogVGFibGUgT0lECisgICAg ICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAorCisgICAgICAgIFJldHVybnM6Cisg ICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3Vs dAorICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGNvbHVtbiBub2Rl CisgICAgICAgICIiIgorICAgICAgICBmb3IgY29sdW1uIGluIGRhdGFbJ2NvbHVtbnMnXToKKwor ICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGZvcm1hdCB2YXJpYWJsZXMgYWNjb3JkaW5nIHRvIGNs aWVudCBqcyBjb2xsZWN0aW9uCisgICAgICAgICAgICBpZiAnYXR0b3B0aW9ucycgaW4gY29sdW1u IGFuZCBjb2x1bW5bJ2F0dG9wdGlvbnMnXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBz cGNvcHRpb25zID0gW10KKyAgICAgICAgICAgICAgICBmb3Igc3Bjb3B0aW9uIGluIGNvbHVtblsn YXR0b3B0aW9ucyddOgorICAgICAgICAgICAgICAgICAgICBrLCB2ID0gc3Bjb3B0aW9uLnNwbGl0 KCc9JykKKyAgICAgICAgICAgICAgICAgICAgc3Bjb3B0aW9ucy5hcHBlbmQoeyduYW1lJzogaywg J3ZhbHVlJzogdn0pCisKKyAgICAgICAgICAgICAgICBjb2x1bW5bJ2F0dG9wdGlvbnMnXSA9IHNw Y29wdGlvbnMKKworICAgICAgICAgICAgIyBOZWVkIHRvIGZvcm1hdCBzZWN1cml0eSBsYWJlbHMg YWNjb3JkaW5nIHRvIGNsaWVudCBqcyBjb2xsZWN0aW9uCisgICAgICAgICAgICBpZiAnc2VjbGFi ZWxzJyBpbiBjb2x1bW4gYW5kIGNvbHVtblsnc2VjbGFiZWxzJ10gaXMgbm90IE5vbmU6CisgICAg ICAgICAgICAgICAgc2VjbGFiZWxzID0gW10KKyAgICAgICAgICAgICAgICBmb3Igc2VjbGJscyBp biBjb2x1bW5bJ3NlY2xhYmVscyddOgorICAgICAgICAgICAgICAgICAgICBrLCB2ID0gc2VjbGJs cy5zcGxpdCgnPScpCisgICAgICAgICAgICAgICAgICAgIHNlY2xhYmVscy5hcHBlbmQoeydwcm92 aWRlcic6IGssICdsYWJlbCc6IHZ9KQorCisgICAgICAgICAgICAgICAgY29sdW1uWydzZWNsYWJl bHMnXSA9IHNlY2xhYmVscworCisgICAgICAgICAgICBpZiAnYXR0bnVtJyBpbiBjb2x1bW4gYW5k IGNvbHVtblsnYXR0bnVtJ10gaXMgbm90IE5vbmUgXAorICAgICAgICAgICAgICAgICAgICBhbmQg Y29sdW1uWydhdHRudW0nXSA+IDA6CisgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHBhcnNl ICYgY29udmVydCBBQ0wgY29taW5nIGZyb20gZGF0YWJhc2UgdG8KKyAgICAgICAgICAgICAgICAj IGpzb24gZm9ybWF0CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKAorICAgICAgICAgICAgICAgICAgICBbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwgJ2Fj bC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIGNsaWQ9Y29sdW1uWydhdHRu dW0nXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIGFjbCA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1hY2wpCisKKyAgICAgICAgICAgICAgICAjIFdlIHdpbGwgc2V0IGdldCBwcml2aWxlZ2Vz IGZyb20gYWNsIHNxbCBzbyB3ZSBkb24ndCBuZWVkCisgICAgICAgICAgICAgICAgIyBpdCBmcm9t IHByb3BlcnRpZXMgc3FsCisgICAgICAgICAgICAgICAgY29sdW1uWydhdHRhY2wnXSA9IFtdCisK KyAgICAgICAgICAgICAgICBmb3Igcm93IGluIGFjbFsncm93cyddOgorICAgICAgICAgICAgICAg ICAgICBwcml2ID0gcGFyc2VfcHJpdl9mcm9tX2RiKHJvdykKKyAgICAgICAgICAgICAgICAgICAg Y29sdW1uLnNldGRlZmF1bHQocm93WydkZWZ0eXBlJ10sIFtdKS5hcHBlbmQocHJpdikKKworICAg ICAgICAgICAgICAgICMgd2UgYXJlIHJlY2VpdmluZyByZXF1ZXN0IHdoZW4gaW4gZWRpdCBtb2Rl CisgICAgICAgICAgICAgICAgIyB3ZSB3aWxsIHNlbmQgZmlsdGVyZWQgdHlwZXMgcmVsYXRlZCB0 byBjdXJyZW50IHR5cGUKKyAgICAgICAgICAgICAgICBwcmVzZW50X3R5cGUgPSBjb2x1bW5bJ2Ns dHlwZSddCisKKyAgICAgICAgICAgICAgICB0eXBlX2lkID0gY29sdW1uWydhdHR0eXBpZCddCisK KyAgICAgICAgICAgICAgICBmdWxsdHlwZSA9IHNlbGYuZ2V0X2Z1bGxfdHlwZSgKKyAgICAgICAg ICAgICAgICAgICAgY29sdW1uWyd0eXBuc3BuYW1lJ10sIGNvbHVtblsndHlwbmFtZSddLAorICAg ICAgICAgICAgICAgICAgICBjb2x1bW5bJ2lzZHVwJ10sIGNvbHVtblsnYXR0bmRpbXMnXSwgY29s dW1uWydhdHR0eXBtb2QnXQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgIGxl bmd0aCA9IEZhbHNlCisgICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gRmFsc2UKKyAgICAgICAg ICAgICAgICBpZiAnZWxlbW9pZCcgaW4gY29sdW1uOgorICAgICAgICAgICAgICAgICAgICBsZW5n dGgsIHByZWNpc2lvbiwgdHlwZXZhbCA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu Z2V0X2xlbmd0aF9wcmVjaXNpb24oY29sdW1uWydlbGVtb2lkJ10pCisKKyAgICAgICAgICAgICAg ICAjIFNldCBsZW5ndGggYW5kIHByZWNpc2lvbiB0byBOb25lCisgICAgICAgICAgICAgICAgY29s dW1uWydhdHRsZW4nXSA9IE5vbmUKKyAgICAgICAgICAgICAgICBjb2x1bW5bJ2F0dHByZWNpc2lv biddID0gTm9uZQorCisgICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGxlbmd0aCAmIHByZWNp c2lvbiBib3RoCisgICAgICAgICAgICAgICAgaWYgbGVuZ3RoIGFuZCBwcmVjaXNpb246CisgICAg ICAgICAgICAgICAgICAgIG1hdGNoT2JqID0gcmUuc2VhcmNoKHInKFxkKyksKFxkKyknLCBmdWxs dHlwZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2hPYmo6CisgICAgICAgICAgICAgICAg ICAgICAgICBjb2x1bW5bJ2F0dGxlbiddID0gbWF0Y2hPYmouZ3JvdXAoMSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIGNvbHVtblsnYXR0cHJlY2lzaW9uJ10gPSBtYXRjaE9iai5ncm91cCgyKQor ICAgICAgICAgICAgICAgIGVsaWYgbGVuZ3RoOgorICAgICAgICAgICAgICAgICAgICAjIElmIHdl IGhhdmUgbGVuZ3RoIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hPYmogPSByZS5zZWFy Y2gocicoXGQrKScsIGZ1bGx0eXBlKQorICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaE9iajoK KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnYXR0bGVuJ10gPSBtYXRjaE9iai5ncm91 cCgxKQorICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uWydhdHRwcmVjaXNpb24nXSA9IE5v bmUKKworCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2lzX3JlZmVyZW5jZWQuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCBjbGlkPWNvbHVtblsnYXR0bnVtJ10pCisK KyAgICAgICAgICAgICAgICBzdGF0dXMsIGlzX3JlZmVyZW5jZSA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihTUUwpCisKKyAgICAgICAgICAgICAgICBlZGl0X3R5cGVzX2xpc3QgPSBsaXN0KCkK KyAgICAgICAgICAgICAgICAjIFdlIHdpbGwgbmVlZCBwcmVzZW50IHR5cGUgaW4gZWRpdCBtb2Rl CisKKyAgICAgICAgICAgICAgICBpZiBjb2x1bW5bJ3R5cG5zcG5hbWUnXSA9PSAicGdfY2F0YWxv ZyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3IgY29sdW1uWyd0eXBuc3BuYW1lJ10gPT0g InB1YmxpYyI6CisgICAgICAgICAgICAgICAgICAgIGVkaXRfdHlwZXNfbGlzdC5hcHBlbmQocHJl c2VudF90eXBlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHQg PSBzZWxmLnF0VHlwZUlkZW50KHNlbGYuY29ubiwgY29sdW1uWyd0eXBuc3BuYW1lJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnRfdHlwZSkKKyAgICAg ICAgICAgICAgICAgICAgZWRpdF90eXBlc19saXN0LmFwcGVuZCh0KQorICAgICAgICAgICAgICAg ICAgICBjb2x1bW5bJ2NsdHlwZSddID0gdAorCisgICAgICAgICAgICAgICAgaWYgaW50KGlzX3Jl ZmVyZW5jZSkgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZGl0X21vZGVfdHlwZXMuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9pZD10eXBl X2lkKQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KFNRTCkKKworICAgICAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jv d3MnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRfdHlwZXNfbGlzdC5hcHBlbmQocm93 Wyd0eXBuYW1lJ10pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg ZWRpdF90eXBlc19saXN0LmFwcGVuZChwcmVzZW50X3R5cGUpCisKKyAgICAgICAgICAgICAgICBj b2x1bW5bJ2VkaXRfdHlwZXMnXSA9IGVkaXRfdHlwZXNfbGlzdAorICAgICAgICAgICAgICAgIGNv bHVtblsnY2x0eXBlJ10gPSBEYXRhVHlwZVJlYWRlci5wYXJzZV90eXBlX25hbWUoY29sdW1uWydj bHR5cGUnXSkKKworICAgICAgICAgICAgICAgIGlmICdpbmRrZXknIGluIGNvbHVtbjoKKyAgICAg ICAgICAgICAgICAgICAgIyBDdXJyZW50IGNvbHVtbgorICAgICAgICAgICAgICAgICAgICBhdHRu dW0gPSBzdHIoY29sdW1uWydhdHRudW0nXSkKKworICAgICAgICAgICAgICAgICAgICAjIFNpbmds ZS9MaXN0IG9mIHByaW1hcnkga2V5IGNvbHVtbihzKQorICAgICAgICAgICAgICAgICAgICBpbmRr ZXkgPSBzdHIoY29sdW1uWydpbmRrZXknXSkKKworICAgICAgICAgICAgICAgICAgICAjIFdlIHdp bGwgY2hlY2sgaWYgY29sdW1uIGlzIGluIHByaW1hcnkgY29sdW1uKHMpCisgICAgICAgICAgICAg ICAgICAgIGlmIGF0dG51bSBpbiBpbmRrZXkuc3BsaXQoIiAiKToKKyAgICAgICAgICAgICAgICAg ICAgICAgIGNvbHVtblsnaXNfcHJpbWFyeV9rZXknXSA9IFRydWUKKyAgICAgICAgICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblsnaXNfcHJpbWFyeV9rZXkn XSA9IEZhbHNlCisKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBfaW5kZXhfY29uc3Ry YWludHNfZm9ybWF0dGVyKHNlbGYsIGRpZCwgdGlkLCBkYXRhKToKKyAgICAgICAgIiIiCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICB0aWQ6IFRhYmxlIE9JRAorICAgICAgICAgICAgZGF0YTog ZGljdCBvZiBxdWVyeSByZXN1bHQKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgSXQg d2lsbCByZXR1cm4gZm9ybWF0dGVkIG91dHB1dCBvZiBxdWVyeSByZXN1bHQKKyAgICAgICAgICAg IGFzIHBlciBjbGllbnQgbW9kZWwgZm9ybWF0IGZvciBpbmRleCBjb25zdHJhaW50IG5vZGUKKyAg ICAgICAgIiIiCisKKyAgICAgICAgIyBXZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3Ry YWludHMgZm9yIHRoZSB0YWJsZQorICAgICAgICBpbmRleF9jb25zdHJhaW50cyA9IHsKKyAgICAg ICAgICAgICdwJzogJ3ByaW1hcnlfa2V5JywgJ3UnOiAndW5pcXVlX2NvbnN0cmFpbnQnCisgICAg ICAgIH0KKworICAgICAgICBmb3IgY3R5cGUgaW4gaW5kZXhfY29uc3RyYWludHMua2V5cygpOgor ICAgICAgICAgICAgZGF0YVtpbmRleF9jb25zdHJhaW50c1tjdHlwZV1dID0gW10KKworICAgICAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X2NvbnN0cmFp bnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRpZD1kaWQsIHRpZD10aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3RyYWludF90eXBlPWN0eXBlKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICByZXN1 bHQgPSByb3cKKyAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAg ICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmluZGV4X2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludF9jb2xzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgY2lkPXJvd1snb2lkJ10sCisgICAgICAgICAgICAg ICAgICAgIGNvbGNudD1yb3dbJ2luZG5hdHRzJ10pCisgICAgICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgY29sdW1ucyA9IFtdCisgICAgICAg ICAgICAgICAgZm9yIHIgaW4gcmVzWydyb3dzJ106CisgICAgICAgICAgICAgICAgICAgIGNvbHVt bnMuYXBwZW5kKHsiY29sdW1uIjogclsnY29sdW1uJ10uc3RyaXAoJyInKX0pCisKKyAgICAgICAg ICAgICAgICByZXN1bHRbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKKworICAgICAgICAgICAgICAgICMg SWYgbm90IGV4aXN0cyB0aGVuIGNyZWF0ZSBsaXN0IGFuZC9vciBhcHBlbmQgaW50bworICAgICAg ICAgICAgICAgICMgZXhpc3RpbmcgbGlzdCBbIEFkZGluZyBpbnRvIG1haW4gZGF0YSBkaWN0XQor ICAgICAgICAgICAgICAgIGRhdGEuc2V0ZGVmYXVsdChpbmRleF9jb25zdHJhaW50c1tjdHlwZV0s IFtdKS5hcHBlbmQocmVzdWx0KQorCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgX2Zv cmVpZ25fa2V5X2Zvcm1hdHRlcihzZWxmLCB0aWQsIGRhdGEpOgorICAgICAgICAiIiIKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICAgIHRpZDogVGFibGUgT0lECisgICAgICAgICAgICBkYXRhOiBk aWN0IG9mIHF1ZXJ5IHJlc3VsdAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBJdCB3 aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3VsdAorICAgICAgICAgICAg YXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQgZm9yIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgbm9k ZQorICAgICAgICAiIiIKKworICAgICAgICAjIFdlIHdpbGwgZmV0Y2ggYWxsIHRoZSBpbmRleCBj b25zdHJhaW50cyBmb3IgdGhlIHRhYmxlCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCisKKyAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1bHQpCisK KyAgICAgICAgZm9yIGZrIGluIHJlc3VsdFsncm93cyddOgorCisgICAgICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJh aW50X2NvbHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10 aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cz16aXAoZmtbJ2NvbmZr ZXknXSwgZmtbJ2NvbmtleSddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25mcmVsaWQ9ZmtbJ2NvbmZyZWxpZCddKQorCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgICAgICBjb2x1bW5zID0gW10KKyAgICAgICAgICAgIGNvbHMgPSBbXQorICAg ICAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICBjb2x1bW5z LmFwcGVuZCh7ImxvY2FsX2NvbHVtbiI6IHJvd1snY29uYXR0bmFtZSddLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlcyI6IGZrWydjb25mcmVsaWQnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jZWQiOiByb3dbJ2NvbmZhdHRuYW1l J119KQorICAgICAgICAgICAgICAgIGNvbHMuYXBwZW5kKHJvd1snY29uYXR0bmFtZSddKQorCisg ICAgICAgICAgICBma1snY29sdW1ucyddID0gY29sdW1ucworCisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1ma1snY29sdW1u cyddWzBdWydyZWZlcmVuY2VzJ10pCisKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYu Y29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQp CisKKyAgICAgICAgICAgIGZrWydyZW1vdGVfc2NoZW1hJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3Nj aGVtYSddCisgICAgICAgICAgICBma1sncmVtb3RlX3RhYmxlJ10gPSByc2V0Wydyb3dzJ11bMF1b J3RhYmxlJ10KKworICAgICAgICAgICAgY292ZXJpbmdpbmRleCA9IHNlbGYuc2VhcmNoX2NvdmVy aW5naW5kZXgodGlkLCBjb2xzKQorCisgICAgICAgICAgICBma1snY292ZXJpbmdpbmRleCddID0g Y292ZXJpbmdpbmRleAorICAgICAgICAgICAgaWYgY292ZXJpbmdpbmRleDoKKyAgICAgICAgICAg ICAgICBma1snYXV0b2luZGV4J10gPSBUcnVlCisgICAgICAgICAgICAgICAgZmtbJ2hhc2luZGV4 J10gPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZrWydhdXRvaW5k ZXgnXSA9IEZhbHNlCisgICAgICAgICAgICAgICAgZmtbJ2hhc2luZGV4J10gPSBGYWxzZQorICAg ICAgICAgICAgIyBJZiBub3QgZXhpc3RzIHRoZW4gY3JlYXRlIGxpc3QgYW5kL29yIGFwcGVuZCBp bnRvCisgICAgICAgICAgICAjIGV4aXN0aW5nIGxpc3QgWyBBZGRpbmcgaW50byBtYWluIGRhdGEg ZGljdF0KKyAgICAgICAgICAgIGRhdGEuc2V0ZGVmYXVsdCgnZm9yZWlnbl9rZXknLCBbXSkuYXBw ZW5kKGZrKQorCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgX2NoZWNrX2NvbnN0cmFp bnRfZm9ybWF0dGVyKHNlbGYsIHRpZCwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICBBcmdz OgorICAgICAgICAgICAgdGlkOiBUYWJsZSBPSUQKKyAgICAgICAgICAgIGRhdGE6IGRpY3Qgb2Yg cXVlcnkgcmVzdWx0CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEl0IHdpbGwgcmV0 dXJuIGZvcm1hdHRlZCBvdXRwdXQgb2YgcXVlcnkgcmVzdWx0CisgICAgICAgICAgICBhcyBwZXIg Y2xpZW50IG1vZGVsIGZvcm1hdCBmb3IgY2hlY2sgY29uc3RyYWludCBub2RlCisgICAgICAgICIi IgorCisgICAgICAgICMgV2Ugd2lsbCBmZXRjaCBhbGwgdGhlIGluZGV4IGNvbnN0cmFpbnRzIGZv ciB0aGUgdGFibGUKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aWQ9dGlkKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAjIElmIG5v dCBleGlzdHMgdGhlbiBjcmVhdGUgbGlzdCBhbmQvb3IgYXBwZW5kIGludG8KKyAgICAgICAgIyBl eGlzdGluZyBsaXN0IFsgQWRkaW5nIGludG8gbWFpbiBkYXRhIGRpY3RdCisKKyAgICAgICAgZGF0 YVsnY2hlY2tfY29uc3RyYWludCddID0gcmVzWydyb3dzJ10KKworICAgICAgICByZXR1cm4gZGF0 YQorCisgICAgZGVmIF9leGNsdXNpb25fY29uc3RyYWludF9mb3JtYXR0ZXIoc2VsZiwgZGlkLCB0 aWQsIGRhdGEpOgorICAgICAgICAiIiIKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHRpZDog VGFibGUgT0lECisgICAgICAgICAgICBkYXRhOiBkaWN0IG9mIHF1ZXJ5IHJlc3VsdAorCisgICAg ICAgIFJldHVybnM6CisgICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0 IG9mIHF1ZXJ5IHJlc3VsdAorICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQg Zm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50IG5vZGUKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBX ZSB3aWxsIGZldGNoIGFsbCB0aGUgaW5kZXggY29uc3RyYWludHMgZm9yIHRoZSB0YWJsZQorICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuZXhjbHVzaW9uX2NvbnN0 cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk aWQ9ZGlkLCB0aWQ9dGlkKQorCisgICAgICAgIHN0YXR1cywgcmVzdWx0ID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdWx0KQorCisgICAgICAgIGZv ciBleCBpbiByZXN1bHRbJ3Jvd3MnXToKKworICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgIFtzZWxmLmV4Y2x1c2lvbl9jb25zdHJhaW50 X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICdnZXRfY29uc3RyYWludF9jb2xzLnNx bCddKSwKKyAgICAgICAgICAgICAgICBjaWQ9ZXhbJ29pZCddLAorICAgICAgICAgICAgICAgIGNv bGNudD1leFsnaW5kbmF0dHMnXSkKKworICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgY29sdW1ucyA9IFtdCisgICAgICAgICAgICBmb3Igcm93IGluIHJlc1sncm93 cyddOgorICAgICAgICAgICAgICAgIGlmIHJvd1snb3B0aW9ucyddICYgMToKKyAgICAgICAgICAg ICAgICAgICAgb3JkZXIgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBudWxsc19vcmRlciA9 IFRydWUgaWYgKHJvd1snb3B0aW9ucyddICYgMikgZWxzZSBGYWxzZQorICAgICAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG9yZGVyID0gVHJ1ZQorICAgICAgICAgICAgICAg ICAgICBudWxsc19vcmRlciA9IFRydWUgaWYgKHJvd1snb3B0aW9ucyddICYgMikgZWxzZSBGYWxz ZQorCisgICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoeyJjb2x1bW4iOiByb3dbJ2NvbGRl ZiddLnN0cmlwKCciJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyX2Ns YXNzIjogcm93WydvcGNuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJv cmRlciI6IG9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibnVsbHNfb3Jk ZXIiOiBudWxsc19vcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJh dG9yIjogcm93WydvcHJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj b2xfdHlwZSI6IHJvd1snZGF0YXR5cGUnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9KQorCisgICAgICAgICAgICBleFsnY29sdW1ucyddID0gY29sdW1ucworICAgICAgICAgICAg IyBJZiBub3QgZXhpc3RzIHRoZW4gY3JlYXRlIGxpc3QgYW5kL29yIGFwcGVuZCBpbnRvCisgICAg ICAgICAgICAjIGV4aXN0aW5nIGxpc3QgWyBBZGRpbmcgaW50byBtYWluIGRhdGEgZGljdF0KKyAg ICAgICAgICAgIGRhdGEuc2V0ZGVmYXVsdCgnZXhjbHVkZV9jb25zdHJhaW50JywgW10pLmFwcGVu ZChleCkKKworICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIF9mb3JtYXR0ZXIoc2VsZiwg ZGlkLCBzY2lkLCB0aWQsIGRhdGEpOgorICAgICAgICAiIiIKKyAgICAgICAgQXJnczoKKyAgICAg ICAgICAgIGRhdGE6IGRpY3Qgb2YgcXVlcnkgcmVzdWx0CisgICAgICAgICAgICBzY2lkOiBzY2hl bWEgb2lkCisgICAgICAgICAgICB0aWQ6IHRhYmxlIG9pZAorCisgICAgICAgIFJldHVybnM6Cisg ICAgICAgICAgICBJdCB3aWxsIHJldHVybiBmb3JtYXR0ZWQgb3V0cHV0IG9mIHF1ZXJ5IHJlc3Vs dAorICAgICAgICAgICAgYXMgcGVyIGNsaWVudCBtb2RlbCBmb3JtYXQKKyAgICAgICAgIiIiCisg ICAgICAgICMgTmVlZCB0byBmb3JtYXQgc2VjdXJpdHkgbGFiZWxzIGFjY29yZGluZyB0byBjbGll bnQganMgY29sbGVjdGlvbgorICAgICAgICBpZiAnc2VjbGFiZWxzJyBpbiBkYXRhIGFuZCBkYXRh WydzZWNsYWJlbHMnXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlY2xhYmVscyA9IFtdCisg ICAgICAgICAgICBmb3Igc2VjbGJscyBpbiBkYXRhWydzZWNsYWJlbHMnXToKKyAgICAgICAgICAg ICAgICBrLCB2ID0gc2VjbGJscy5zcGxpdCgnPScpCisgICAgICAgICAgICAgICAgc2VjbGFiZWxz LmFwcGVuZCh7J3Byb3ZpZGVyJzogaywgJ2xhYmVsJzogdn0pCisKKyAgICAgICAgICAgIGRhdGFb J3NlY2xhYmVscyddID0gc2VjbGFiZWxzCisKKyAgICAgICAgIyBXZSBuZWVkIHRvIHBhcnNlICYg Y29udmVydCBBQ0wgY29taW5nIGZyb20gZGF0YWJhc2UgdG8ganNvbiBmb3JtYXQKKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgs ICdhY2wuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwgc2Np ZD1zY2lkKQorICAgICAgICBzdGF0dXMsIGFjbCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1hY2wpCisKKyAgICAgICAgIyBXZSB3aWxsIHNldCBnZXQgcHJp dmlsZWdlcyBmcm9tIGFjbCBzcWwgc28gd2UgZG9uJ3QgbmVlZAorICAgICAgICAjIGl0IGZyb20g cHJvcGVydGllcyBzcWwKKyAgICAgICAgZm9yIHJvdyBpbiBhY2xbJ3Jvd3MnXToKKyAgICAgICAg ICAgIHByaXYgPSBwYXJzZV9wcml2X2Zyb21fZGIocm93KQorICAgICAgICAgICAgaWYgcm93Wydk ZWZ0eXBlJ10gaW4gZGF0YToKKyAgICAgICAgICAgICAgICBkYXRhW3Jvd1snZGVmdHlwZSddXS5h cHBlbmQocHJpdikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YVtyb3db J2RlZnR5cGUnXV0gPSBbcHJpdl0KKworICAgICAgICAjIFdlIHdpbGwgYWRkIEF1dG8gdmFjdXVt IGRlZmF1bHRzIHdpdGggb3V0IHJlc3VsdCBmb3IgZ3JpZAorICAgICAgICBkYXRhWyd2YWN1dW1f dGFibGUnXSA9IHNlbGYucGFyc2VfdmFjdXVtX2RhdGEoc2VsZi5jb25uLCBkYXRhLCAndGFibGUn KQorICAgICAgICBkYXRhWyd2YWN1dW1fdG9hc3QnXSA9IHNlbGYucGFyc2VfdmFjdXVtX2RhdGEo c2VsZi5jb25uLCBkYXRhLCAndG9hc3QnKQorCisgICAgICAgICMgRmV0Y2ggY29sdW1ucyBmb3Ig dGhlIHRhYmxlIGxvZ2ljCisgICAgICAgICMKKyAgICAgICAgIyAxKSBDaGVjayBpZiBvZl90eXBl IGFuZCBpbmhlcml0ZWQgdGFibGVzIGFyZSBwcmVzZW50PworICAgICAgICAjIDIpIElmIHllcyB0 aGVuIEZldGNoIGFsbCB0aGUgY29sdW1ucyBmb3Igb2ZfdHlwZSBhbmQgaW5oZXJpdGVkIHRhYmxl cworICAgICAgICAjIDMpIEFkZCBjb2x1bW5zIGluIGNvbHVtbnMgY29sbGVjdGlvbgorICAgICAg ICAjIDQpIEZpbmQgYWxsIHRoZSBjb2x1bW5zIGZvciB0YWJsZXMgYW5kIGZpbHRlciBvdXQgY29s dW1ucyB3aGljaCBhcmUKKyAgICAgICAgIyAgIG5vdCBpbmhlcml0ZWQgZnJvbSBhbnkgdGFibGUg JiBmb3JtYXQgdGhlbSBvbmUgYnkgb25lCisKKyAgICAgICAgIyBHZXQgb2ZfdHlwZSB0YWJsZSBj b2x1bW5zIGFuZCBhZGQgaXQgaW50byBjb2x1bW5zIGRpY3QKKyAgICAgICAgaWYgZGF0YVsndHlw bmFtZSddOgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRhYmxlX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdnZXRfY29sdW1uc19mb3JfdGFibGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRuYW1lPWRhdGFbJ3R5cG5hbWUnXSkKKworICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSByZXNbJ3Jvd3Mn XQorCisgICAgICAgICMgR2V0IGluaGVyaXRlZCB0YWJsZShzKSBjb2x1bW5zIGFuZCBhZGQgaXQg aW50byBjb2x1bW5zIGRpY3QKKyAgICAgICAgZWxpZiBkYXRhWydjb2xsX2luaGVyaXRzJ10gYW5k IGxlbihkYXRhWydjb2xsX2luaGVyaXRzJ10pID4gMDoKKyAgICAgICAgICAgIGNvbHVtbnMgPSBb XQorICAgICAgICAgICAgIyBSZXR1cm4gYWxsIHRhYmxlcyB3aGljaCBjYW4gYmUgaW5oZXJpdGVk ICYgZG8gbm90IHNob3cKKyAgICAgICAgICAgICMgc3lzdGVtIGNvbHVtbnMKKyAgICAgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2luaGVy aXRzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3N5c3Rl bV9vYmplY3RzPUZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICAgICAgZm9yIHJvdyBpbiBy c2V0Wydyb3dzJ106CisgICAgICAgICAgICAgICAgaWYgcm93Wydpbmhlcml0cyddIGluIGRhdGFb J2NvbGxfaW5oZXJpdHMnXToKKyAgICAgICAgICAgICAgICAgICAgIyBGZXRjaCBjb2x1bW5zIHVz aW5nIGluaGVyaXRlZCB0YWJsZSBPSUQKKyAgICAgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYudGFibGVf dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbHVtbnNfZm9y X3RhYmxlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpZD1yb3dbJ29pZCddCisg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLmV4dGVuZChyZXNb J3Jvd3MnXVs6XSkKKyAgICAgICAgICAgIGRhdGFbJ2NvbHVtbnMnXSA9IGNvbHVtbnMKKworICAg ICAgICAjIFdlIHdpbGwgZmV0Y2ggYWxsIHRoZSBjb2x1bW5zIGZvciB0aGUgdGFibGUgdXNpbmcK KyAgICAgICAgIyBjb2x1bW5zIHByb3BlcnRpZXMuc3FsLCBzbyB3ZSBuZWVkIHRvIHNldCB0ZW1w bGF0ZSBwYXRoCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5j b2x1bW5fdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aWQ9dGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19zeXNfb2JqZWN0cz1G YWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KyAgICAgICAgYWxsX2NvbHVtbnMgPSByZXNbJ3Jvd3MnXQorCisgICAgICAgICMgRmlsdGVyIGlu aGVyaXRlZCBjb2x1bW5zIGZyb20gYWxsIGNvbHVtbnMKKyAgICAgICAgaWYgJ2NvbHVtbnMnIGlu IGRhdGEgYW5kIGxlbihkYXRhWydjb2x1bW5zJ10pID4gMCBcCisgICAgICAgICAgICAgICAgYW5k IGxlbihhbGxfY29sdW1ucykgPiAwOgorICAgICAgICAgICAgZm9yIHJvdyBpbiBkYXRhWydjb2x1 bW5zJ106CisgICAgICAgICAgICAgICAgZm9yIGksIGNvbCBpbiBlbnVtZXJhdGUoYWxsX2NvbHVt bnMpOgorICAgICAgICAgICAgICAgICAgICAjIElmIGJvdGggbmFtZSBhcmUgc2FtZSB0aGVuIHJl bW92ZSBpdAorICAgICAgICAgICAgICAgICAgICAjIGFzIGl0IGlzIGluaGVyaXRlZCBmcm9tIG90 aGVyIHRhYmxlCisgICAgICAgICAgICAgICAgICAgIGlmIGNvbFsnbmFtZSddID09IHJvd1snbmFt ZSddOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBSZW1vdmUgc2FtZSBjb2x1bW4gZnJvbSBh bGxfY29sdW1ucyBhcworICAgICAgICAgICAgICAgICAgICAgICAgIyBhbHJlYWR5IGhhdmUgaXQg Y29sdW1ucyBjb2xsZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgYWxsX2NvbHVt bnNbaV0KKworICAgICAgICAgICAgIyBJZiBhbnkgY29sdW1uIGlzIGFkZGVkIHRoZW4gdXBkYXRl IGNvbHVtbnMgY29sbGVjdGlvbgorICAgICAgICAgICAgaWYgbGVuKGFsbF9jb2x1bW5zKSA+IDA6 CisgICAgICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddICs9IGFsbF9jb2x1bW5zCisgICAgICAg ICMgSWYgbm8gaW5oZXJpdGVkIGNvbHVtbnMgZm91bmQgdGhlbiBhZGQgYWxsIGNvbHVtbnMKKyAg ICAgICAgZWxpZiBsZW4oYWxsX2NvbHVtbnMpID4gMDoKKyAgICAgICAgICAgIGRhdGFbJ2NvbHVt bnMnXSA9IGFsbF9jb2x1bW5zCisKKyAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGRhdGEgYW5kIGxl bihkYXRhWydjb2x1bW5zJ10pID4gMDoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9jb2x1bW5z X2Zvcm1hdHRlcih0aWQsIGRhdGEpCisKKyAgICAgICAgIyBIZXJlIHdlIHdpbGwgYWRkIGNvbnN0 cmFpbnQgaW4gb3VyIG91dHB1dAorICAgICAgICBkYXRhID0gc2VsZi5faW5kZXhfY29uc3RyYWlu dHNfZm9ybWF0dGVyKGRpZCwgdGlkLCBkYXRhKQorICAgICAgICBkYXRhID0gc2VsZi5fZm9yZWln bl9rZXlfZm9ybWF0dGVyKHRpZCwgZGF0YSkKKyAgICAgICAgZGF0YSA9IHNlbGYuX2NoZWNrX2Nv bnN0cmFpbnRfZm9ybWF0dGVyKHRpZCwgZGF0YSkKKyAgICAgICAgZGF0YSA9IHNlbGYuX2V4Y2x1 c2lvbl9jb25zdHJhaW50X2Zvcm1hdHRlcihkaWQsIHRpZCwgZGF0YSkKKworICAgICAgICByZXR1 cm4gZGF0YQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfY2x0eXBlX2Zvcm1hdHRlcihk YXRhX3R5cGUpOgorICAgICAgICAiIiIKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZGF0 YV90eXBlOiBUeXBlIHN0cmluZworCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBXZSBu ZWVkIHRvIHJlbW92ZSBbXSBmcm9tIHR5cGUgYW5kIGFwcGVuZCBpdAorICAgICAgICAgICAgYWZ0 ZXIgbGVuZ3RoL3ByZWNpc2lvbiBzbyB3ZSB3aWxsIHNlbmQgZmxhZyBmb3IKKyAgICAgICAgICAg IHNxbCB0ZW1wbGF0ZQorICAgICAgICAiIiIKKyAgICAgICAgaWYgJ1tdJyBpbiBkYXRhX3R5cGU6 CisgICAgICAgICAgICByZXR1cm4gZGF0YV90eXBlWzotMl0sIFRydWUKKyAgICAgICAgZWxzZToK KyAgICAgICAgICAgIHJldHVybiBkYXRhX3R5cGUsIEZhbHNlCisKKyAgICBkZWYgZ2V0X3RhYmxl X2RlcGVuZGVudHMoc2VsZiwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rp b24gZ2V0IHRoZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAgICAgICBm b3IgdGhlIHRhYmxlIG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHRpZDogVGFi bGUgSUQKKyAgICAgICAgIiIiCisgICAgICAgICMgU3BlY2lmaWMgY29uZGl0aW9uIGZvciBjb2x1 bW4gd2hpY2ggd2UgbmVlZCB0byBhcHBlbmQKKyAgICAgICAgd2hlcmUgPSAiV0hFUkUgZGVwLnJl Zm9iamlkPXswfTo6T0lEIi5mb3JtYXQodGlkKQorCisgICAgICAgIGRlcGVuZGVudHNfcmVzdWx0 ID0gc2VsZi5nZXRfZGVwZW5kZW50cygKKyAgICAgICAgICAgIHNlbGYuY29ubiwgdGlkCisgICAg ICAgICkKKworICAgICAgICAjIFNwZWNpZmljIHNxbCB0byBydW4gYWdhaW50IGNvbHVtbiB0byBm ZXRjaCBkZXBlbmRlbnRzCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdkZXBlbmQuc3FsJ10pLCB3aGVyZT13aGVyZSkKKworICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisKKyAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlZl9uYW1l ID0gcm93WydyZWZuYW1lJ10KKyAgICAgICAgICAgIGlmIHJlZl9uYW1lIGlzIE5vbmU6CisgICAg ICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZGVwX3R5cGUgPSAnJworICAgICAg ICAgICAgZGVwX3N0ciA9IHJvd1snZGVwdHlwZSddCisgICAgICAgICAgICBpZiBkZXBfc3RyID09 ICdhJzoKKyAgICAgICAgICAgICAgICBkZXBfdHlwZSA9ICdhdXRvJworICAgICAgICAgICAgZWxp ZiBkZXBfc3RyID09ICduJzoKKyAgICAgICAgICAgICAgICBkZXBfdHlwZSA9ICdub3JtYWwnCisg ICAgICAgICAgICBlbGlmIGRlcF9zdHIgPT0gJ2knOgorICAgICAgICAgICAgICAgIGRlcF90eXBl ID0gJ2ludGVybmFsJworCisgICAgICAgICAgICBkZXBlbmRlbnRzX3Jlc3VsdC5hcHBlbmQoeyd0 eXBlJzogJ3NlcXVlbmNlJywgJ25hbWUnOiByZWZfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2ZpZWxkJzogZGVwX3R5cGV9KQorCisgICAgICAgIHJldHVybiBh amF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW50c19yZXN1bHQsCisg ICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIGRlZiBnZXRfdGFibGVfZGVw ZW5kZW5jaWVzKHNlbGYsIHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IGdldCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAgICAgICBm b3IgdGhlIHRhYmxlIG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHRpZDogVGFi bGUgSUQKKworICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW5jaWVzX3Jlc3VsdCA9IHNlbGYu Z2V0X2RlcGVuZGVuY2llcygKKyAgICAgICAgICAgIHNlbGYuY29ubiwgdGlkCisgICAgICAgICkK KworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPWRl cGVuZGVuY2llc19yZXN1bHQsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKwor ICAgIGRlZiBnZXRfdGFibGVfc3RhdGlzdGljcyhzZWxmLCBzY2lkLCB0aWQpOgorICAgICAgICAi IiIKKyAgICAgICAgU3RhdGlzdGljcworCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSWQKKyAgICAgICAgICAgIHRpZDogVGFibGUgSWQKKworICAgICAgICBSZXR1cm5z IHRoZSBzdGF0aXN0aWNzIGZvciBhIHBhcnRpY3VsYXIgdGFibGUgaWYgdGlkIGlzIHNwZWNpZmll ZCwKKyAgICAgICAgb3RoZXJ3aXNlIGl0IHdpbGwgcmV0dXJuIHN0YXRpc3RpY3MgZm9yIGFsbCB0 aGUgdGFibGVzIGluIHRoYXQKKyAgICAgICAgc2NoZW1hLgorICAgICAgICAiIiIKKworICAgICAg ICAjIEZldGNoIHNjaGVtYSBuYW1lCisgICAgICAgIHN0YXR1cywgc2NoZW1hX25hbWUgPSBzZWxm LmNvbm4uZXhlY3V0ZV9zY2FsYXIoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAg ICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwgJ2dldF9zY2hl bWEuc3FsJ10pLAorICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLCBzY2lkPXNjaWQKKyAg ICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zY2hlbWFfbmFtZSkKKwor ICAgICAgICBpZiB0aWQgaXMgTm9uZToKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdCgKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAg ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sbF90YWJsZV9zdGF0cy5zcWwnXSksIGNvbm49 c2VsZi5jb25uLAorICAgICAgICAgICAgICAgICAgICBzY2hlbWFfbmFtZT1zY2hlbWFfbmFtZQor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAg ICAgICMgRm9yIEluZGl2aWR1YWwgdGFibGUgc3RhdHMKKworICAgICAgICAgICAgIyBDaGVjayBp ZiBwZ3N0YXR0dXBsZSBleHRlbnNpb24gaXMgYWxyZWFkeSBjcmVhdGVkPworICAgICAgICAgICAg IyBpZiBjcmVhdGVkIHRoZW4gb25seSBhZGQgZXh0ZW5kZWQgc3RhdHMKKyAgICAgICAgICAgIHN0 YXR1cywgaXNfcGdzdGF0dHVwbGUgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoIiIiCisgICAg ICAgICAgICBTRUxFQ1QgKGNvdW50KGV4dG5hbWUpID4gMCkgQVMgaXNfcGdzdGF0dHVwbGUKKyAg ICAgICAgICAgIEZST00gcGdfZXh0ZW5zaW9uCisgICAgICAgICAgICBXSEVSRSBleHRuYW1lPSdw Z3N0YXR0dXBsZScKKyAgICAgICAgICAgICIiIikKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1p c19wZ3N0YXR0dXBsZSkKKworICAgICAgICAgICAgIyBGZXRjaCBUYWJsZSBuYW1lCisgICAgICAg ICAgICBzdGF0dXMsIHRhYmxlX25hbWUgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoCisgICAg ICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9p bihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLCAnZ2V0X3RhYmxlLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sIHNjaWQ9c2NpZCwgdGlkPXRpZAorICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz10YWJsZV9u YW1lKQorCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qo CisgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLCAnc3RhdHMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwgc2NoZW1hX25hbWU9c2NoZW1hX25hbWUsCisg ICAgICAgICAgICAgICAgICAgIHRhYmxlX25hbWU9dGFibGVfbmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgaXNfcGdzdGF0dHVwbGU9aXNfcGdzdGF0dHVwbGUsIHRpZD10aWQKKyAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg IHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAg ICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgZGVmIGdldF9yZXZlcnNlX2VuZ2lu ZWVyZWRfc3FsKHNlbGYsIGRpZCwgc2NpZCwgdGlkLCBtYWluX3NxbCwgZGF0YSk6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlcyByZXZlcnNlIGVuZ2luZWVy ZWQgc3FsIGZvcgorICAgICAgICB0aGUgdGFibGUgb2JqZWN0CisKKyAgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisg ICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAgICAgbWFpbl9zcWw6IExpc3QgY29udGFp bnMgYWxsIHRoZSByZXZlcnNlZCBlbmdpbmVlcmVkIHNxbAorICAgICAgICAgICBkYXRhOiBUYWJs ZSdzIERhdGEKKyAgICAgICAgIiIiCisgICAgICAgICIiIgorICAgICAgICAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAgICMgMSkgUmV2ZXJzZSBlbmdpbmVlcmVk IHNxbCBmb3IgVEFCTEUKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworICAgICAgICAiIiIKKworICAgICAgICAjIFRhYmxlICYgU2NoZW1hIGRlY2xhcmF0aW9u IHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVtIGluIGNoaWxkIG5vZGVzCisgICAgICAgIHNjaGVtYSA9 IGRhdGFbJ3NjaGVtYSddCisgICAgICAgIHRhYmxlID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAg ZGF0YSA9IHNlbGYuX2Zvcm1hdHRlcihkaWQsIHNjaWQsIHRpZCwgZGF0YSkKKworICAgICAgICAj IE5vdyB3ZSBoYXZlIGFsbCBsaXMgb2YgY29sdW1ucyB3aGljaCB3ZSBuZWVkCisgICAgICAgICMg dG8gaW5jbHVkZSBpbiBvdXIgY3JlYXRlIGRlZmluaXRpb24sIExldCdzIGZvcm1hdCB0aGVtCisg ICAgICAgIGlmICdjb2x1bW5zJyBpbiBkYXRhOgorICAgICAgICAgICAgZm9yIGMgaW4gZGF0YVsn Y29sdW1ucyddOgorICAgICAgICAgICAgICAgIGlmICdhdHRhY2wnIGluIGM6CisgICAgICAgICAg ICAgICAgICAgIGNbJ2F0dGFjbCddID0gcGFyc2VfcHJpdl90b19kYihjWydhdHRhY2wnXSwgc2Vs Zi5jb2x1bW5fYWNsKQorCisgICAgICAgICAgICAgICAgIyBjaGVjayB0eXBlIGZvciAnW10nIGlu IGl0CisgICAgICAgICAgICAgICAgaWYgJ2NsdHlwZScgaW4gYzoKKyAgICAgICAgICAgICAgICAg ICAgY1snY2x0eXBlJ10sIGNbJ2hhc1NxckJyYWNrZXQnXSA9IFwKKyAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuX2NsdHlwZV9mb3JtYXR0ZXIoY1snY2x0eXBlJ10pCisKKyAgICAgICAgc3Fs X2hlYWRlciA9IHUiLS0gVGFibGU6IHswfVxuXG4tLSAiLmZvcm1hdCgKKyAgICAgICAgICAgIHNl bGYucXRJZGVudChzZWxmLmNvbm4sIGRhdGFbJ3NjaGVtYSddLCBkYXRhWyduYW1lJ10pKQorCisg ICAgICAgIHNxbF9oZWFkZXIgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxl X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICBzcWxfaGVhZGVyID0g c3FsX2hlYWRlci5zdHJpcCgnXG4nKQorICAgICAgICBzcWxfaGVhZGVyICs9ICdcbicKKworICAg ICAgICAjIEFkZCBpbnRvIG1haW4gc3FsCisgICAgICAgIG1haW5fc3FsLmFwcGVuZChzcWxfaGVh ZGVyKQorCisgICAgICAgICMgUGFyc2UgcHJpdmlsZWdlIGRhdGEKKyAgICAgICAgaWYgJ3JlbGFj bCcgaW4gZGF0YToKKyAgICAgICAgICAgIGRhdGFbJ3JlbGFjbCddID0gcGFyc2VfcHJpdl90b19k YihkYXRhWydyZWxhY2wnXSwgc2VsZi5hY2wpCisKKyAgICAgICAgIyBpZiB0YWJsZSBpcyBwYXJ0 aXRpb25zIHRoZW4KKyAgICAgICAgaWYgJ3JlbGlzcGFydGl0aW9uJyBpbiBkYXRhIGFuZCBkYXRh WydyZWxpc3BhcnRpdGlvbiddOgorICAgICAgICAgICAgdGFibGVfc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnBhcnRpdGlvbl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2Vs Zi5jb25uKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGFibGVfc3FsID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxm LmNvbm4pCisKKyAgICAgICAgIyBBZGQgaW50byBtYWluIHNxbAorICAgICAgICB0YWJsZV9zcWwg PSByZS5zdWIoJ1xuezIsfScsICdcblxuJywgdGFibGVfc3FsKQorICAgICAgICBtYWluX3NxbC5h cHBlbmQodGFibGVfc3FsLnN0cmlwKCdcbicpKQorCisgICAgICAgICIiIgorICAgICAgICAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICAgICAjIDIpIFJldmVyc2Ug ZW5naW5lZXJlZCBzcWwgZm9yIElOREVYCisgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisgICAgICAgICIiIgorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdub2Rlcy5zcWwnXSksIHRpZD10aWQpCisgICAgICAg IHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorCisgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVtcGxh dGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3By b3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD1k aWQsIHRpZD10aWQsIGlkeD1yb3dbJ29pZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkKQorCisgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0p CisgICAgICAgICAgICAjIEFkZGluZyBwYXJlbnQgaW50byBkYXRhIGRpY3QsIHdpbGwgYmUgdXNp bmcgaXQgd2hpbGUgY3JlYXRpbmcgc3FsCisgICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IHNj aGVtYQorICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9IHRhYmxlCisgICAgICAgICAgICAjIFdl IGFsc28gbmVlZCB0byBmZWN0aCBjb2x1bW5zIG9mIGluZGV4CisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVtcGxhdGVfcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbHVtbl9kZXRhaWxzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHg9cm93WydvaWQnXSkK KyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FM KQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgICAgICMgJ2F0dGRl ZicgY29tZXMgd2l0aCBxdW90ZXMgZnJvbSBxdWVyeSBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0K KyAgICAgICAgICAgICMgJ29wdGlvbnMnIHdlIG5lZWQgdHJ1ZS9mYWxzZSB0byByZW5kZXIgc3dp dGNoCisgICAgICAgICAgICAjIEFTQyhmYWxzZSkvREVTQyh0cnVlKQorICAgICAgICAgICAgY29s dW1ucyA9IFtdCisgICAgICAgICAgICBjb2xzID0gW10KKyAgICAgICAgICAgIGZvciBjb2xfcm93 IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICAjIFdlIG5lZWQgYWxsIGRhdGEgYXMg Y29sbGVjdGlvbiBmb3IgQ29sdW1uc01vZGVsCisgICAgICAgICAgICAgICAgY29sc19kYXRhID0g eworICAgICAgICAgICAgICAgICAgICAnY29sbmFtZSc6IGNvbF9yb3dbJ2F0dGRlZiddLnN0cmlw KCciJyksCisgICAgICAgICAgICAgICAgICAgICdjb2xsc3BjbmFtZSc6IGNvbF9yb3dbJ2NvbGxu c3BuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICdvcF9jbGFzcyc6IGNvbF9yb3dbJ29wY25h bWUnXSwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgY29sX3Jvd1snb3B0 aW9ucyddWzBdID09ICdERVNDJzoKKyAgICAgICAgICAgICAgICAgICAgY29sc19kYXRhWydzb3J0 X29yZGVyJ10gPSBUcnVlCisgICAgICAgICAgICAgICAgY29sdW1ucy5hcHBlbmQoY29sc19kYXRh KQorCisgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHNhbWUgZGF0YSBhcyBzdHJpbmcgdG8gZGlz cGxheSBpbiBwcm9wZXJ0aWVzIHdpbmRvdworICAgICAgICAgICAgICAgICMgSWYgbXVsdGlwbGUg Y29sdW1uIHRoZW4gc2VwYXJhdGUgaXQgYnkgY29sb24KKyAgICAgICAgICAgICAgICBjb2xzX3N0 ciA9IGNvbF9yb3dbJ2F0dGRlZiddCisgICAgICAgICAgICAgICAgaWYgY29sX3Jvd1snY29sbG5z cG5hbWUnXToKKyAgICAgICAgICAgICAgICAgICAgY29sc19zdHIgKz0gJyBDT0xMQVRFICcgKyBj b2xfcm93Wydjb2xsbnNwbmFtZSddCisgICAgICAgICAgICAgICAgaWYgY29sX3Jvd1snb3BjbmFt ZSddOgorICAgICAgICAgICAgICAgICAgICBjb2xzX3N0ciArPSAnICcgKyBjb2xfcm93WydvcGNu YW1lJ10KKyAgICAgICAgICAgICAgICBpZiBjb2xfcm93WydvcHRpb25zJ11bMF0gPT0gJ0RFU0Mn OgorICAgICAgICAgICAgICAgICAgICBjb2xzX3N0ciArPSAnIERFU0MnCisgICAgICAgICAgICAg ICAgY29scy5hcHBlbmQoY29sc19zdHIpCisKKyAgICAgICAgICAgICMgUHVzaCBhcyBjb2xsZWN0 aW9uCisgICAgICAgICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1bW5zCisgICAgICAgICAgICAj IFB1c2ggYXMgc3RyaW5nCisgICAgICAgICAgICBkYXRhWydjb2xzJ10gPSAnLCAnLmpvaW4oY29s cykKKworICAgICAgICAgICAgc3FsX2hlYWRlciA9IHUiXG4tLSBJbmRleDogezB9XG5cbi0tICIu Zm9ybWF0KGRhdGFbJ25hbWUnXSkKKworICAgICAgICAgICAgc3FsX2hlYWRlciArPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29u bj1zZWxmLmNvbm4pCisKKyAgICAgICAgICAgIGluZGV4X3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc2VsZi5pbmRleF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uKQor ICAgICAgICAgICAgaW5kZXhfc3FsICs9ICJcbiIKKyAgICAgICAgICAgIGluZGV4X3NxbCArPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuaW5kZXhfdGVtcGxhdGVfcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbHRlci5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwg Y29ubj1zZWxmLmNvbm4pCisKKyAgICAgICAgICAgICMgQWRkIGludG8gbWFpbiBzcWwKKyAgICAg ICAgICAgIGluZGV4X3NxbCA9IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCBpbmRleF9zcWwpCisg ICAgICAgICAgICBtYWluX3NxbC5hcHBlbmQoc3FsX2hlYWRlciArICdcblxuJyArIGluZGV4X3Nx bC5zdHJpcCgnXG4nKSkKKworICAgICAgICAiIiIKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICAgICAjIDMpIFJldmVyc2UgZW5naW5lZXJlZCBz cWwgZm9yIFRSSUdHRVJTCisgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyAgICAgICAgIiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwgdGlkPXRpZCkKKyAgICAgICAgc3RhdHVz LCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJzZXQpCisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICB0 cmlnZ2VyX3NxbCA9ICcnCisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50cmlnZ2VyX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aWQ9dGlkLCB0cmlkPXJvd1snb2lkJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxhc3RzeXNvaWQp CisKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwp CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBkYXRhID0gZGlj dChyZXNbJ3Jvd3MnXVswXSkKKyAgICAgICAgICAgICMgQWRkaW5nIHBhcmVudCBpbnRvIGRhdGEg ZGljdCwgd2lsbCBiZSB1c2luZyBpdCB3aGlsZSBjcmVhdGluZyBzcWwKKyAgICAgICAgICAgIGRh dGFbJ3NjaGVtYSddID0gc2NoZW1hCisgICAgICAgICAgICBkYXRhWyd0YWJsZSddID0gdGFibGUK KworICAgICAgICAgICAgaWYgZGF0YVsndGduYXJncyddID4gMToKKyAgICAgICAgICAgICAgICAj IFdlIGtub3cgdGhhdCB0cmlnZ2VyIGhhcyBtb3JlIHRoYW4gMSBhcmd1bWVudHMsCisgICAgICAg ICAgICAgICAgIyBsZXQncyBqb2luIHRoZW0KKyAgICAgICAgICAgICAgICBkYXRhWyd0Z2FyZ3Mn XSA9ICcsICcuam9pbihkYXRhWyd0Z2FyZ3MnXSkKKworICAgICAgICAgICAgaWYgbGVuKGRhdGFb J3RnYXR0ciddKSA+IDE6CisgICAgICAgICAgICAgICAgY29sdW1ucyA9ICcsICcuam9pbihkYXRh Wyd0Z2F0dHInXS5zcGxpdCgnICcpKQorCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRyaWdnZXJfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29sdW1ucy5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQsIGNsaXN0PWNv bHVtbnMpCisKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisg ICAgICAgICAgICAgICAgIyAndGdhdHRyJyBjb250YWlucyBsaXN0IG9mIGNvbHVtbnMgZnJvbSB0 YWJsZSB1c2VkIGluIHRyaWdnZXIKKyAgICAgICAgICAgICAgICBjb2x1bW5zID0gW10KKworICAg ICAgICAgICAgICAgIGZvciBjb2xfcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAg ICAgICAgY29sdW1ucy5hcHBlbmQoeydjb2x1bW4nOiBjb2xfcm93WyduYW1lJ119KQorCisgICAg ICAgICAgICAgICAgZGF0YVsnY29sdW1ucyddID0gY29sdW1ucworCisgICAgICAgICAgICBkYXRh ID0gdHJpZ2dlcl9kZWZpbml0aW9uKGRhdGEpCisKKyAgICAgICAgICAgIHNxbF9oZWFkZXIgPSB1 IlxuLS0gVHJpZ2dlcjogezB9XG5cbi0tICIuZm9ybWF0KGRhdGFbJ25hbWUnXSkKKworICAgICAg ICAgICAgc3FsX2hlYWRlciArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dl cl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKworICAgICAgICAgICAg IyBJZiB0aGUgcmVxdWVzdCBmb3IgbmV3IG9iamVjdCB3aGljaCBkbyBub3QgaGF2ZSBkaWQKKyAg ICAgICAgICAgIHRyaWdnZXJfc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRy aWdnZXJfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisKKyAgICAgICAg ICAgIHRyaWdnZXJfc3FsID0gc3FsX2hlYWRlciArICdcblxuJyArIHRyaWdnZXJfc3FsLnN0cmlw KCdcbicpCisKKyAgICAgICAgICAgICMgSWYgdHJpZ2dlciBpcyBkaXNhYmxlZCB0aGVuIGFkZCBz cWwgY29kZSBmb3IgdGhlIHNhbWUKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhWydpc19lbmFibGVf dHJpZ2dlciddOgorICAgICAgICAgICAgICAgIHRyaWdnZXJfc3FsICs9ICdcblxuJworICAgICAg ICAgICAgICAgIHRyaWdnZXJfc3FsICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbCisgICAg ICAgICAgICAgICAgICAgIHNlbGYudHJpZ2dlcl90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAnZW5hYmxlX2Rpc2FibGVfdHJpZ2dlci5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisKKyAgICAgICAgICAgICMgQWRkIGludG8g bWFpbiBzcWwKKyAgICAgICAgICAgIHRyaWdnZXJfc3FsID0gcmUuc3ViKCdcbnsyLH0nLCAnXG5c bicsIHRyaWdnZXJfc3FsKQorICAgICAgICAgICAgbWFpbl9zcWwuYXBwZW5kKHRyaWdnZXJfc3Fs KQorCisgICAgICAgICIiIgorICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisgICAgICAgICMgNCkgUmV2ZXJzZSBlbmdpbmVlcmVkIHNxbCBmb3IgUlVMRVMKKyAg ICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICAgICAiIiIK KworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICBb c2VsZi5ydWxlc190ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksIHRpZD10aWQpCisK KyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106 CisgICAgICAgICAgICBydWxlc19zcWwgPSAnXG4nCisgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgW3NlbGYucnVsZXNfdGVtcGxhdGVf cGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10KKyAgICAgICAgICAgICksIHJpZD1yb3dbJ29pZCddLCBk YXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKworICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIHJlc19kYXRhID0gcGFyc2VfcnVsZV9kZWZpbml0aW9uKHJl cykKKyAgICAgICAgICAgIHJ1bGVzX3NxbCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisg ICAgICAgICAgICAgICAgW3NlbGYucnVsZXNfdGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgZGF0YT1yZXNfZGF0YSwgZGlzcGxheV9jb21tZW50cz1UcnVlKQor CisgICAgICAgICAgICAjIEFkZCBpbnRvIG1haW4gc3FsCisgICAgICAgICAgICBydWxlc19zcWwg PSByZS5zdWIoJ1xuezIsfScsICdcblxuJywgcnVsZXNfc3FsKQorICAgICAgICAgICAgbWFpbl9z cWwuYXBwZW5kKHJ1bGVzX3NxbCkKKworICAgICAgICAiIiIKKyAgICAgICAgIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAgICMgNSkgUmV2ZXJzZSBlbmdp bmVlcmVkIHNxbCBmb3IgUEFSVElUSU9OUworICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgICAgIiIiCisgICAgICAgIGlmICdpc19wYXJ0aXRp b25lZCcgaW4gZGF0YSBhbmQgZGF0YVsnaXNfcGFydGl0aW9uZWQnXToKKyAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVfcGF0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIHRpZD10 aWQpCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgICAgICBzcWxf aGVhZGVyID0gdSJcbi0tIFBhcnRpdGlvbnMgU1FMIgorICAgICAgICAgICAgcGFydGl0aW9uX3Nx bCA9ICcnCisgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAg ICAgICBwYXJ0X2RhdGEgPSBkaWN0KCkKKyAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ3BhcnRp dGlvbmVkX3RhYmxlX25hbWUnXSA9IGRhdGFbJ25hbWUnXQorICAgICAgICAgICAgICAgIHBhcnRf ZGF0YVsncGFyZW50X3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICBw YXJ0X2RhdGFbJ3NjaGVtYSddID0gcm93WydzY2hlbWFfbmFtZSddCisgICAgICAgICAgICAgICAg cGFydF9kYXRhWydyZWxpc3BhcnRpdGlvbiddID0gVHJ1ZQorICAgICAgICAgICAgICAgIHBhcnRf ZGF0YVsnbmFtZSddID0gcm93WyduYW1lJ10KKyAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ3Bh cnRpdGlvbl92YWx1ZSddID0gcm93WydwYXJ0aXRpb25fdmFsdWUnXQorICAgICAgICAgICAgICAg IHBhcnRfZGF0YVsnaXNfcGFydGl0aW9uZWQnXSA9IHJvdyBbJ2lzX3BhcnRpdGlvbmVkJ10KKyAg ICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ3BhcnRpdGlvbl9zY2hlbWUnXSA9IHJvd1sncGFydGl0 aW9uX3NjaGVtZSddCisKKyAgICAgICAgICAgICAgICBwYXJ0aXRpb25fc3FsICs9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgW3NlbGYucGFydGl0aW9uX3Rl bXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXBh cnRfZGF0YSwgY29ubj1zZWxmLmNvbm4pCisKKyAgICAgICAgICAgICMgQWRkIGludG8gbWFpbiBz cWwKKyAgICAgICAgICAgIHBhcnRpdGlvbl9zcWwgPSByZS5zdWIoJ1xuezIsfScsICdcblxuJywg cGFydGl0aW9uX3NxbCkKKyAgICAgICAgICAgIG1haW5fc3FsLmFwcGVuZChzcWxfaGVhZGVyICsg J1xuXG4nICsgcGFydGl0aW9uX3NxbC5zdHJpcCgnXG4nKSkKKworICAgICAgICBzcWwgPSAnXG4n LmpvaW4obWFpbl9zcWwpCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9 c3FsLnN0cmlwKCdcbicpKQorCisgICAgZGVmIHJlc2V0X3N0YXRpc3RpY3Moc2VsZiwgc2NpZCwg dGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXNldCBzdGF0 aXN0aWNzIG9mIHRhYmxlCisKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJRAorICAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICIiIgorICAgICAgICB0cnk6 CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVf dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3Jlc2V0X3N0YXRzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aWQ9dGlkKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9z Y2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisg ICAgICAgICAgICAgICAgaW5mbz1nZXR0ZXh0KCJUYWJsZSBzdGF0aXN0aWNzIGhhdmUgYmVlbiBy ZXNldCIpLAorICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAnaWQn OiB0aWQsCisgICAgICAgICAgICAgICAgICAgICdzY2lkJzogc2NpZAorICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKwor ICAgIGRlZiBnZXRfcGFydGl0aW9uX3NjaGVtZShzZWxmLCBkYXRhKToKKyAgICAgICAgcGFydGl0 aW9uX3NjaGVtZSA9IE5vbmUKKyAgICAgICAgaWYgJ3BhcnRpdGlvbl90eXBlJyBpbiBkYXRhIFwK KyAgICAgICAgICAgICAgICBhbmQgZGF0YVsncGFydGl0aW9uX3R5cGUnXSA9PSAncmFuZ2UnOgor ICAgICAgICAgICAgcGFydGl0aW9uX3NjaGVtZSA9ICdSQU5HRSAoJworICAgICAgICBlbGlmICdw YXJ0aXRpb25fdHlwZScgaW4gZGF0YSBcCisgICAgICAgICAgICAgICAgYW5kIGRhdGFbJ3BhcnRp dGlvbl90eXBlJ10gPT0gJ2xpc3QnOgorICAgICAgICAgICAgcGFydGl0aW9uX3NjaGVtZSA9ICdM SVNUICgnCisKKyAgICAgICAgZm9yIHJvdyBpbiBkYXRhWydwYXJ0aXRpb25fa2V5cyddOgorICAg ICAgICAgICAgaWYgcm93WydrZXlfdHlwZSddID09ICdjb2x1bW4nOgorICAgICAgICAgICAgICAg IHBhcnRpdGlvbl9zY2hlbWUgKz0gc2VsZi5xdElkZW50KAorICAgICAgICAgICAgICAgICAgICBz ZWxmLmNvbm4sIHJvd1sncHRfY29sdW1uJ10pICsgJywgJworICAgICAgICAgICAgZWxpZiByb3db J2tleV90eXBlJ10gPT0gJ2V4cHJlc3Npb24nOgorICAgICAgICAgICAgICAgIHBhcnRpdGlvbl9z Y2hlbWUgKz0gcm93WydleHByZXNzaW9uJ10gKyAnLCAnCisKKyAgICAgICAgIyBSZW1vdmUgZXh0 cmEgc3BhY2UgYW5kIGNvbW1hCisgICAgICAgIGlmIGxlbihkYXRhWydwYXJ0aXRpb25fa2V5cydd KSA+IDA6CisgICAgICAgICAgICBwYXJ0aXRpb25fc2NoZW1lID0gcGFydGl0aW9uX3NjaGVtZVs6 LTJdCisgICAgICAgIHBhcnRpdGlvbl9zY2hlbWUgKz0gJyknCisKKyAgICAgICAgcmV0dXJuIHBh cnRpdGlvbl9zY2hlbWUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgdmFsaWRhdGVfY29u c3RyYWlucyhrZXksIGRhdGEpOgorCisgICAgICAgIGlmIGtleSA9PSAncHJpbWFyeV9rZXknIG9y IGtleSA9PSAndW5pcXVlX2NvbnN0cmFpbnQnOgorICAgICAgICAgICAgaWYgJ2NvbHVtbnMnIGlu IGRhdGEgYW5kIGxlbihkYXRhWydjb2x1bW5zJ10pID4gMDoKKyAgICAgICAgICAgICAgICByZXR1 cm4gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK KyAgICAgICAgZWxpZiBrZXkgPT0gJ2ZvcmVpZ25fa2V5JzoKKyAgICAgICAgICAgIGlmICdvaWQn IG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgIGZvciBhcmcgaW4gWydjb2x1bW5zJ106Cisg ICAgICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo ZGF0YVthcmddLCBsaXN0KSBhbmQgbGVuKGRhdGFbYXJnXSkgPCAxOgorICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgICAgICAgICBpZiAnYXV0b2luZGV4JyBp biBkYXRhIGFuZCBkYXRhWydhdXRvaW5kZXgnXSBhbmQgXAorICAgICAgICAgICAgICAgICAgICAg ICAgKCdjb3ZlcmluZ2luZGV4JyBub3QgaW4gZGF0YSBvcgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydjb3ZlcmluZ2luZGV4J10gPT0gJycp OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgcmV0dXJu IFRydWUKKworICAgICAgICBlbGlmIGtleSA9PSAnY2hlY2tfY29uc3RyYWludCc6CisgICAgICAg ICAgICBmb3IgYXJnIGluIFsnY29uc3JjJ106CisgICAgICAgICAgICAgICAgaWYgYXJnIG5vdCBp biBkYXRhIG9yIGRhdGFbYXJnXSA9PSAnJzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZh bHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGVsaWYga2V5ID09ICdleGNs dWRlX2NvbnN0cmFpbnQnOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHJldHVybiBUcnVl CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNoZWNrX2FuZF9jb252ZXJ0X25hbWVfdG9f c3RyaW5nKGRhdGEpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNo ZWNrIGFuZCBjb3ZlcnQgdGFibGUgdG8gc3RyaW5nIGluY2FzZQorICAgICAgICBpdCBpcyBudW1l cmljCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGRhdGE6IGRhdGEgZGljdAorCisgICAg ICAgIFJldHVybnM6CisgICAgICAgICAgICBVcGRhdGVkIGRhdGEgZGljdAorICAgICAgICAiIiIK KyAgICAgICAgIyBGb3IgUHl0aG9uMiwgaXQgY2FuIGJlIGludCwgbG9uZywgZmxvYXQKKyAgICAg ICAgaWYgaGFzYXR0cihzdHIsICdkZWNvZGUnKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo ZGF0YVsnbmFtZSddLCAoaW50LCBsb25nLCBmbG9hdCkpOgorICAgICAgICAgICAgICAgIGRhdGFb J25hbWUnXSA9IHN0cihkYXRhWyduYW1lJ10pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAj IEZvciBQeXRob24zLCBpdCBjYW4gYmUgaW50LCBmbG9hdAorICAgICAgICAgICAgaWYgaXNpbnN0 YW5jZShkYXRhWyduYW1lJ10sIChpbnQsIGZsb2F0KSk6CisgICAgICAgICAgICAgICAgZGF0YVsn bmFtZSddID0gc3RyKGRhdGFbJ25hbWUnXSkKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRl ZiBnZXRfaW5kZXhfY29uc3RyYWludF9zcWwoc2VsZiwgZGlkLCB0aWQsIGRhdGEpOgorICAgICAg ICAiIiIKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAgICAg ICAgZGF0YTogZGF0YSBkaWN0IGNvbWluZyBmcm9tIHRoZSBjbGllbnQKKworICAgICAgICBSZXR1 cm5zOgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgbW9kaWZpZWQgc3FsIGZv ciBpbmRleCBjb25zdHJhaW50cworICAgICAgICAoUHJpbWFyeSBLZXkgJiBVbmlxdWUpCisgICAg ICAgICIiIgorICAgICAgICBzcWwgPSBbXQorICAgICAgICAjIFdlIHdpbGwgZmV0Y2ggYWxsIHRo ZSBpbmRleCBjb25zdHJhaW50cyBmb3IgdGhlIHRhYmxlCisgICAgICAgIGluZGV4X2NvbnN0cmFp bnRzID0geworICAgICAgICAgICAgJ3AnOiAncHJpbWFyeV9rZXknLCAndSc6ICd1bmlxdWVfY29u c3RyYWludCcKKyAgICAgICAgfQorCisgICAgICAgIGZvciBjdHlwZSBpbiBpbmRleF9jb25zdHJh aW50cy5rZXlzKCk6CisgICAgICAgICAgICAjIENoZWNrIGlmIGNvbnN0cmFpbnQgaXMgaW4gZGF0 YQorICAgICAgICAgICAgIyBJZiB5ZXMgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIGZvciBhZGQvY2hh bmdlL2RlbGV0ZQorICAgICAgICAgICAgaWYgaW5kZXhfY29uc3RyYWludHNbY3R5cGVdIGluIGRh dGE6CisgICAgICAgICAgICAgICAgY29uc3RyYWludCA9IGRhdGFbaW5kZXhfY29uc3RyYWludHNb Y3R5cGVdXQorICAgICAgICAgICAgICAgICMgSWYgY29uc3RyYWludChzKSBpcy9hcmUgZGVsZXRl ZAorICAgICAgICAgICAgICAgIGlmICdkZWxldGVkJyBpbiBjb25zdHJhaW50OgorICAgICAgICAg ICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJhaW50WydkZWxldGVkJ106CisgICAgICAgICAgICAg ICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAg ICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAgICAgICAgICAgICAgICAgICAg ICAgICMgU3FsIGZvciBkcm9wCisgICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuaW5kZXhfY29uc3RyYWludF90ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNv bm4pLnN0cmlwKCdcbicpCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAg ICAgICBpZiAnY2hhbmdlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICAgICAgZm9y IGMgaW4gY29uc3RyYWludFsnY2hhbmdlZCddOgorICAgICAgICAgICAgICAgICAgICAgICAgY1sn c2NoZW1hJ10gPSBkYXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICAgICAgY1sndGFi bGUnXSA9IGRhdGFbJ25hbWUnXQorCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVz X3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBbc2VsZi5pbmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9ZGlkLCB0aWQ9dGlkLCBjaWQ9 Y1snb2lkJ10sIGNvbnN0cmFpbnRfdHlwZT1jdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChwcm9wZXJ0aWVzX3NxbCkKKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAg ICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAg ICAgICAgICAgICAgICAgICMgU3FsIHRvIHVwZGF0ZSBvYmplY3QKKyAgICAgICAgICAgICAgICAg ICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5p bmRleF9jb25zdHJhaW50X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICd1cGRhdGUuc3FsJ10pLCBkYXRhPWMsIG9fZGF0YT1vbGRfZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpCisgICAg ICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICBpZiAnYWRkZWQnIGluIGNv bnN0cmFpbnQ6CisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2FkZGVk J106CisgICAgICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3NjaGVtYSdd CisgICAgICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSddCisKKyAg ICAgICAgICAgICAgICAgICAgICAgICMgU3FsIHRvIGFkZCBvYmplY3QKKyAgICAgICAgICAgICAg ICAgICAgICAgIGlmIHNlbGYudmFsaWRhdGVfY29uc3RyYWlucyhpbmRleF9jb25zdHJhaW50c1tj dHlwZV0sIGMpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmluZGV4X2NvbnN0cmFpbnRf dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9YywgY29ubj1zZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdHJhaW50X25hbWU9J1BSSU1BUlkgS0VZJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgY3R5cGUgPT0gJ3AnIGVsc2UgJ1VOSVFVRScKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKS5zdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSBkZWZpbml0 aW9uIGluY29tcGxldGUgZm9yIHswfSBjb25zdHJhaW50Jy5mb3JtYXQoaW5kZXhfY29uc3RyYWlu dHNbY3R5cGVdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICBpZiBsZW4oc3FsKSA+IDA6CisgICAgICAgICAg ICAjIEpvaW4gYWxsIHRoZSBzcWwocykgYXMgc2luZ2xlIHN0cmluZworICAgICAgICAgICAgcmV0 dXJuICdcblxuJy5qb2luKHNxbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBO b25lCisKKyAgICBkZWYgZ2V0X2ZvcmVpZ25fa2V5X3NxbChzZWxmLCB0aWQsIGRhdGEpOgorICAg ICAgICAiIiIKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgIHRpZDogVGFibGUgSUQKKyAgICAg ICAgICAgZGF0YTogZGF0YSBkaWN0IGNvbWluZyBmcm9tIHRoZSBjbGllbnQKKworICAgICAgICBS ZXR1cm5zOgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgbW9kaWZpZWQgc3Fs IGZvciBmb3JlaWduIGtleQorICAgICAgICAiIiIKKyAgICAgICAgc3FsID0gW10KKyAgICAgICAg IyBDaGVjayBpZiBjb25zdHJhaW50IGlzIGluIGRhdGEKKyAgICAgICAgIyBJZiB5ZXMgdGhlbiB3 ZSBuZWVkIHRvIGNoZWNrIGZvciBhZGQvY2hhbmdlL2RlbGV0ZQorICAgICAgICBpZiAnZm9yZWln bl9rZXknIGluIGRhdGE6CisgICAgICAgICAgICBjb25zdHJhaW50ID0gZGF0YVsnZm9yZWlnbl9r ZXknXQorICAgICAgICAgICAgIyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCisgICAg ICAgICAgICBpZiAnZGVsZXRlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICBmb3Ig YyBpbiBjb25zdHJhaW50WydkZWxldGVkJ106CisgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVt YSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRh dGFbJ25hbWUnXQorCisgICAgICAgICAgICAgICAgICAgICMgU3FsIGZvciBkcm9wCisgICAgICAg ICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuZm9y ZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rl bGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNl bGYuY29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAg ICBpZiAnY2hhbmdlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICBmb3IgYyBpbiBj b25zdHJhaW50WydjaGFuZ2VkJ106CisgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0g ZGF0YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25h bWUnXQorCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNfc3FsID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuZm9yZWlnbl9rZXlf dGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgdGlkPXRpZCwgY2lkPWNbJ29pZCddKQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QocHJvcGVydGllc19zcWwpCisgICAgICAgICAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgICAgICBv bGRfZGF0YSA9IHJlc1sncm93cyddWzBdCisgICAgICAgICAgICAgICAgICAgICMgU3FsIHRvIHVw ZGF0ZSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5mb3JlaWduX2tleV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICd1cGRhdGUuc3FsJ10pLCBkYXRhPWMsIG9fZGF0YT1vbGRfZGF0YSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykK KyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxm LnZhbGlkYXRlX2NvbnN0cmFpbnMoJ2ZvcmVpZ25fa2V5JywgYyk6CisgICAgICAgICAgICAgICAg ICAgICAgICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSBkZWZpbml0aW9uIGluY29tcGxl dGUgZm9yIGZvcmVpZ25fa2V5IGNvbnN0cmFpbnQnCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuICdcblxuJy5qb2luKHNxbCkKKworICAgICAgICAgICAgICAgICAgICBpZiAnY29sdW1u cycgaW4gYzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHMgPSBbXQorICAgICAgICAgICAg ICAgICAgICAgICAgZm9yIGNvbCBpbiBjWydjb2x1bW5zJ106CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29scy5hcHBlbmQoY29sWydsb2NhbF9jb2x1bW4nXSkKKworICAgICAgICAgICAg ICAgICAgICAgICAgY292ZXJpbmdpbmRleCA9IHNlbGYuc2VhcmNoX2NvdmVyaW5naW5kZXgodGlk LCBjb2xzKQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb3ZlcmluZ2luZGV4IGlzIE5v bmUgYW5kICdhdXRvaW5kZXgnIGluIGMgYW5kIGNbJ2F1dG9pbmRleCddIGFuZCBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgnY292ZXJpbmdpbmRleCcgaW4gYyBhbmQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1snY292ZXJpbmdpbmRleCddICE9 ICcnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuZm9y ZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZV9pbmRleC5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAg IGlmICdhZGRlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25z dHJhaW50WydhZGRlZCddOgorICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFb J3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10K KworICAgICAgICAgICAgICAgICAgICAjIFNxbCB0byBhZGQgb2JqZWN0CisgICAgICAgICAgICAg ICAgICAgICMgQ29sdW1ucworCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZhbGlk YXRlX2NvbnN0cmFpbnMoJ2ZvcmVpZ25fa2V5JywgYyk6CisgICAgICAgICAgICAgICAgICAgICAg ICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSBkZWZpbml0aW9uIGluY29tcGxldGUgZm9y IGZvcmVpZ25fa2V5IGNvbnN0cmFpbnQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu ICdcblxuJy5qb2luKHNxbCkKKworICAgICAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3BhcmVudC5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9Y1sn Y29sdW1ucyddWzBdWydyZWZlcmVuY2VzJ10pCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cywg cnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgICAgICAgICAgICAgIGNbJ3Jl bW90ZV9zY2hlbWEnXSA9IHJzZXRbJ3Jvd3MnXVswXVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAg ICAgICAgY1sncmVtb3RlX3RhYmxlJ10gPSByc2V0Wydyb3dzJ11bMF1bJ3RhYmxlJ10KKworICAg ICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxm LmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9YywgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICAgICAgICAgICAgICkuc3RyaXAoJ1xu JykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgICAgIGlmIGNbJ2F1 dG9pbmRleCddOgorICAgICAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlX2luZGV4LnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYu Y29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICBp ZiBsZW4oc3FsKSA+IDA6CisgICAgICAgICAgICAjIEpvaW4gYWxsIHRoZSBzcWwocykgYXMgc2lu Z2xlIHN0cmluZworICAgICAgICAgICAgcmV0dXJuICdcblxuJy5qb2luKHNxbCkKKyAgICAgICAg ZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZ2V0X2NoZWNrX2NvbnN0 cmFpbnRfc3FsKHNlbGYsIHRpZCwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICAgQXJnczoK KyAgICAgICAgICAgdGlkOiBUYWJsZSBJRAorICAgICAgICAgICBkYXRhOiBkYXRhIGRpY3QgY29t aW5nIGZyb20gdGhlIGNsaWVudAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIGdlbmVyYXRlIG1vZGlmaWVkIHNxbCBmb3IgY2hlY2sgY29uc3RyYWludAor ICAgICAgICAiIiIKKyAgICAgICAgc3FsID0gW10KKyAgICAgICAgIyBDaGVjayBpZiBjb25zdHJh aW50IGlzIGluIGRhdGEKKyAgICAgICAgIyBJZiB5ZXMgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIGZv ciBhZGQvY2hhbmdlL2RlbGV0ZQorICAgICAgICBpZiAnY2hlY2tfY29uc3RyYWludCcgaW4gZGF0 YToKKyAgICAgICAgICAgIGNvbnN0cmFpbnQgPSBkYXRhWydjaGVja19jb25zdHJhaW50J10KKyAg ICAgICAgICAgICMgSWYgY29uc3RyYWludChzKSBpcy9hcmUgZGVsZXRlZAorICAgICAgICAgICAg aWYgJ2RlbGV0ZWQnIGluIGNvbnN0cmFpbnQ6CisgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29u c3RyYWludFsnZGVsZXRlZCddOgorICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRh dGFbJ3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1l J10KKworICAgICAgICAgICAgICAgICAgICAjIFNxbCBmb3IgZHJvcAorICAgICAgICAgICAgICAg ICAgICBzcWwuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmNoZWNrX2NvbnN0 cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0 ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYu Y29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBp ZiAnY2hhbmdlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25z dHJhaW50WydjaGFuZ2VkJ106CisgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0 YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUn XQorCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNfc3FsID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY2hlY2tfY29uc3RyYWlu dF90ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICB0aWQ9dGlkLCBjaWQ9Y1snb2lkJ10pCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChwcm9wZXJ0aWVzX3NxbCkKKyAgICAgICAgICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgICAg IG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAgICAgICAgICAgIyBTcWwgdG8g dXBkYXRlIG9iamVjdAorICAgICAgICAgICAgICAgICAgICBzcWwuYXBwZW5kKAorICAgICAgICAg ICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLmNoZWNrX2NvbnN0cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAndXBkYXRlLnNxbCddKSwgZGF0YT1jLCBvX2RhdGE9b2xk X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4pLnN0cmlw KCdcbicpCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgaWYgJ2FkZGVkJyBp biBjb25zdHJhaW50OgorICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbnN0cmFpbnRbJ2FkZGVk J106CisgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAg ICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQorCisgICAgICAgICAg ICAgICAgICAgIGlmIG5vdCBzZWxmLnZhbGlkYXRlX2NvbnN0cmFpbnMoJ2NoZWNrX2NvbnN0cmFp bnQnLCBjKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJy0tIGRlZmluaXRpb24gaW5jb21wbGV0ZSBmb3IgY2hlY2tfY29uc3RyYWludCcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc3FsKQorCisgICAgICAgICAg ICAgICAgICAgIHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYuY2hlY2tf Y29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh PWMsIGNvbm49c2VsZi5jb25uCisgICAgICAgICAgICAgICAgICAgICAgICApLnN0cmlwKCdcbicp CisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICBpZiBsZW4oc3FsKSA+IDA6CisgICAg ICAgICAgICAjIEpvaW4gYWxsIHRoZSBzcWwocykgYXMgc2luZ2xlIHN0cmluZworICAgICAgICAg ICAgcmV0dXJuICdcblxuJy5qb2luKHNxbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl dHVybiBOb25lCisKKyAgICBkZWYgZ2V0X2V4Y2x1c2lvbl9jb25zdHJhaW50X3NxbChzZWxmLCBk aWQsIHRpZCwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICAgQXJnczoKKyAgICAgICAgICAg dGlkOiBUYWJsZSBJRAorICAgICAgICAgICBkYXRhOiBkYXRhIGRpY3QgY29taW5nIGZyb20gdGhl IGNsaWVudAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IGdlbmVyYXRlIG1vZGlmaWVkIHNxbCBmb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQKKyAgICAgICAg IiIiCisgICAgICAgIHNxbCA9IFtdCisgICAgICAgICMgQ2hlY2sgaWYgY29uc3RyYWludCBpcyBp biBkYXRhCisgICAgICAgICMgSWYgeWVzIHRoZW4gd2UgbmVlZCB0byBjaGVjayBmb3IgYWRkL2No YW5nZS9kZWxldGUKKyAgICAgICAgaWYgJ2V4Y2x1ZGVfY29uc3RyYWludCcgaW4gZGF0YToKKyAg ICAgICAgICAgIGNvbnN0cmFpbnQgPSBkYXRhWydleGNsdWRlX2NvbnN0cmFpbnQnXQorICAgICAg ICAgICAgIyBJZiBjb25zdHJhaW50KHMpIGlzL2FyZSBkZWxldGVkCisgICAgICAgICAgICBpZiAn ZGVsZXRlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25zdHJh aW50WydkZWxldGVkJ106CisgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsn c2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUnXQor CisgICAgICAgICAgICAgICAgICAgICMgU3FsIGZvciBkcm9wCisgICAgICAgICAgICAgICAgICAg IHNxbC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuZXhjbHVzaW9uX2NvbnN0 cmFpbnRfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0 ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBjb25uPXNlbGYu Y29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICBp ZiAnY2hhbmdlZCcgaW4gY29uc3RyYWludDoKKyAgICAgICAgICAgICAgICBmb3IgYyBpbiBjb25z dHJhaW50WydjaGFuZ2VkJ106CisgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0 YVsnc2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUn XQorCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNfc3FsID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYuZXhjbHVzaW9uX2NvbnN0 cmFpbnRfdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgZGlkPWRpZCwgdGlkPXRpZCwgY2lkPWNbJ29pZCddKQorICAgICAgICAgICAgICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QocHJvcGVydGllc19zcWwp CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCisgICAgICAgICAgICAgICAg ICAgICMgU3FsIHRvIHVwZGF0ZSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVu ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cGRhdGUuc3FsJ10pLCBk YXRhPWMsIG9fZGF0YT1vbGRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25u PXNlbGYuY29ubikuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAg ICAgICBpZiAnYWRkZWQnIGluIGNvbnN0cmFpbnQ6CisgICAgICAgICAgICAgICAgZm9yIGMgaW4g Y29uc3RyYWludFsnYWRkZWQnXToKKyAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBk YXRhWydzY2hlbWEnXQorICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFt ZSddCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfY29uc3RyYWlu cygnZXhjbHVkZV9jb25zdHJhaW50JywgYyk6CisgICAgICAgICAgICAgICAgICAgICAgICBzcWwu YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICctLSBkZWZpbml0aW9uIGluY29tcGxldGUgZm9yIGV4Y2x1 c2lvbl9jb25zdHJhaW50JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnXG5cbicu am9pbihzcWwpCisKKyAgICAgICAgICAgICAgICAgICAgc3FsLmFwcGVuZCgKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiLyIuam9pbihbc2VsZi5leGNsdXNpb25fY29uc3RyYWludF90ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIGNvbm49c2VsZi5jb25uCisgICAgICAgICAg ICAgICAgICAgICAgICApLnN0cmlwKCdcbicpCisgICAgICAgICAgICAgICAgICAgICkKKworICAg ICAgICBpZiBsZW4oc3FsKSA+IDA6CisgICAgICAgICAgICAjIEpvaW4gYWxsIHRoZSBzcWwocykg YXMgc2luZ2xlIHN0cmluZworICAgICAgICAgICAgcmV0dXJuIHUnXG5cbicuam9pbihzcWwpCisg ICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGdldF9zcWwo c2VsZiwgZGlkLCBzY2lkLCB0aWQsIGRhdGEsIHJlcyk6CisgICAgICAgICIiIgorICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgY3JlYXRlL3VwZGF0ZSBzcWwgZnJvbSBtb2RlbCBk YXRhCisgICAgICAgIGNvbWluZyBmcm9tIGNsaWVudAorICAgICAgICAiIiIKKyAgICAgICAgaWYg dGlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQor ICAgICAgICAgICAgb2xkX2RhdGEgPSBzZWxmLl9mb3JtYXR0ZXIoZGlkLCBzY2lkLCB0aWQsIG9s ZF9kYXRhKQorCisgICAgICAgICAgICAjIFdlIHdpbGwgY29udmVydCBwcml2aWxlZ2VzIGNvbWlu ZyBmcm9tIGNsaWVudCByZXF1aXJlZAorICAgICAgICAgICAgaWYgJ3JlbGFjbCcgaW4gZGF0YToK KyAgICAgICAgICAgICAgICBmb3IgbW9kZSBpbiBbJ2FkZGVkJywgJ2NoYW5nZWQnLCAnZGVsZXRl ZCddOgorICAgICAgICAgICAgICAgICAgICBpZiBtb2RlIGluIGRhdGFbJ3JlbGFjbCddOgorICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YVsncmVsYWNsJ11bbW9kZV0gPSBwYXJzZV9wcml2X3Rv X2RiKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ3JlbGFjbCddW21vZGVdLCBz ZWxmLmFjbAorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIElmIG5h bWUgaXMgbm90IHByZXNlbnQgaW4gcmVxdWVzdCBkYXRhCisgICAgICAgICAgICBpZiAnbmFtZScg bm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddID0gb2xkX2RhdGFbJ25h bWUnXQorCisgICAgICAgICAgICBkYXRhID0gQmFzZVRhYmxlVmlldy5jaGVja19hbmRfY29udmVy dF9uYW1lX3RvX3N0cmluZyhkYXRhKQorCisgICAgICAgICAgICAjIElmIG5hbWUgaWYgbm90IHBy ZXNlbnQKKyAgICAgICAgICAgIGlmICdzY2hlbWEnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAg ICAgIGRhdGFbJ3NjaGVtYSddID0gb2xkX2RhdGFbJ3NjaGVtYSddCisKKyAgICAgICAgICAgICMg RmlsdGVyIG91dCBuZXcgdGFibGVzIGZyb20gbGlzdCwgd2Ugd2lsbCBzZW5kIGNvbXBsZXRlIGxp c3QKKyAgICAgICAgICAgICMgYW5kIG5vdCBuZXdseSBhZGRlZCB0YWJsZXMgaW4gdGhlIGxpc3Qg ZnJvbSBjbGllbnQKKyAgICAgICAgICAgICMgc28gd2Ugd2lsbCBmaWx0ZXIgbmV3IHRhYmxlcyBo ZXJlCisgICAgICAgICAgICBpZiAnY29sbF9pbmhlcml0cycgaW4gZGF0YToKKyAgICAgICAgICAg ICAgICBwX2xlbiA9IGxlbihvbGRfZGF0YVsnY29sbF9pbmhlcml0cyddKQorICAgICAgICAgICAg ICAgIGNfbGVuID0gbGVuKGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkKKyAgICAgICAgICAgICAgICAj IElmIHRhYmxlKHMpIGFkZGVkCisgICAgICAgICAgICAgICAgaWYgY19sZW4gPiBwX2xlbjoKKyAg ICAgICAgICAgICAgICAgICAgZGF0YVsnY29sbF9pbmhlcml0c19hZGRlZCddID0gbGlzdCgKKyAg ICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRhWydjb2xsX2luaGVyaXRzJ10pIC0gc2V0KG9s ZF9kYXRhWydjb2xsX2luaGVyaXRzJ10pCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICAgICAjIElmIHRhYmxlKHMpcmVtb3ZlZAorICAgICAgICAgICAgICAgIGVsaWYgY19sZW4g PCBwX2xlbjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnY29sbF9pbmhlcml0c19yZW1vdmVk J10gPSBsaXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG9sZF9kYXRhWydjb2xsX2lu aGVyaXRzJ10pIC0gc2V0KGRhdGFbJ2NvbGxfaW5oZXJpdHMnXSkKKyAgICAgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgICAgICMgU2FmZSBzaWRlIHZlcmlmaWNhdGlvbixJbiBjYXNlIGl0 IGhhcHBlbnMuLgorICAgICAgICAgICAgICAgICMgSWYgdXNlciByZW1vdmVzIGFuZCBhZGRzIHNh bWUgbnVtYmVyIG9mIHRhYmxlCisgICAgICAgICAgICAgICAgIyBlZyByZW1vdmVkIG9uZSB0YWJs ZSBhbmQgYWRkZWQgb25lIG5ldyB0YWJsZQorICAgICAgICAgICAgICAgIGVsaWYgY19sZW4gPT0g cF9sZW46CisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2NvbGxfaW5oZXJpdHNfYWRkZWQnXSA9 IGxpc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0YVsnY29sbF9pbmhlcml0cydd KSAtIHNldChvbGRfZGF0YVsnY29sbF9pbmhlcml0cyddKQorICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2NvbGxfaW5oZXJpdHNfcmVtb3ZlZCddID0gbGlz dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldChvbGRfZGF0YVsnY29sbF9pbmhlcml0cydd KSAtIHNldChkYXRhWydjb2xsX2luaGVyaXRzJ10pCisgICAgICAgICAgICAgICAgICAgICkKKwor ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRhYmxlX3Rl bXBsYXRlX3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9fZGF0YT1vbGRfZGF0YSwgZGF0YT1kYXRhLCBjb25uPXNlbGYuY29ubikKKyAgICAg ICAgICAgICMgUmVtb3ZlcyB0cmFpbmluZyBuZXcgbGluZXMKKyAgICAgICAgICAgIFNRTCA9IFNR TC5zdHJpcCgnXG4nKSArICdcblxuJworCisgICAgICAgICAgICAjIFBhcnNlL0Zvcm1hdCBjb2x1 bW5zICYgY3JlYXRlIHNxbAorICAgICAgICAgICAgaWYgJ2NvbHVtbnMnIGluIGRhdGE6CisgICAg ICAgICAgICAgICAgIyBQYXJzZSB0aGUgZGF0YSBjb21pbmcgZnJvbSBjbGllbnQKKyAgICAgICAg ICAgICAgICBkYXRhID0gc2VsZi5fcGFyc2VfZm9ybWF0X2NvbHVtbnMoZGF0YSwgbW9kZT0nZWRp dCcpCisKKyAgICAgICAgICAgICAgICBjb2x1bW5zID0gZGF0YVsnY29sdW1ucyddCisgICAgICAg ICAgICAgICAgY29sdW1uX3NxbCA9ICdcbicKKworICAgICAgICAgICAgICAgICMgSWYgY29sdW1u KHMpIGlzL2FyZSBkZWxldGVkCisgICAgICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGNvbHVt bnM6CisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbHVtbnNbJ2RlbGV0ZWQnXToKKyAg ICAgICAgICAgICAgICAgICAgICAgIGNbJ3NjaGVtYSddID0gZGF0YVsnc2NoZW1hJ10KKyAgICAg ICAgICAgICAgICAgICAgICAgIGNbJ3RhYmxlJ10gPSBkYXRhWyduYW1lJ10KKyAgICAgICAgICAg ICAgICAgICAgICAgICMgU3FsIGZvciBkcm9wIGNvbHVtbgorICAgICAgICAgICAgICAgICAgICAg ICAgaWYgJ2luaGVyaXRlZGZyb20nIG5vdCBpbiBjOgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbHVtbl9zcWwgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBbc2VsZi5jb2x1bW5fdGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YywgY29ubj1zZWxm LmNvbm4pLnN0cmlwKCdcbicpICsgJ1xuXG4nCisKKyAgICAgICAgICAgICAgICAjIElmIGNvbHVt bihzKSBpcy9hcmUgY2hhbmdlZAorICAgICAgICAgICAgICAgICMgSGVyZSB3ZSB3aWxsIGJlIG5l ZWRpbmcgcHJldmlvdXMgcHJvcGVydGllcyBvZiBjb2x1bW4KKyAgICAgICAgICAgICAgICAjIHNv IHRoYXQgd2UgY2FuIGNvbXBhcmUgJiB1cGRhdGUgaXQKKyAgICAgICAgICAgICAgICBpZiAnY2hh bmdlZCcgaW4gY29sdW1uczoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gY29sdW1uc1sn Y2hhbmdlZCddOgorICAgICAgICAgICAgICAgICAgICAgICAgY1snc2NoZW1hJ10gPSBkYXRhWydz Y2hlbWEnXQorICAgICAgICAgICAgICAgICAgICAgICAgY1sndGFibGUnXSA9IGRhdGFbJ25hbWUn XQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2F0dGFjbCcgaW4gYzoKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjWydhdHRhY2wnXSA9IHBhcnNlX3ByaXZfdG9fZGIoY1snYXR0YWNs J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuY29sdW1uX2FjbCkKKworICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVy dGllc19zcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYuY29sdW1uX3RlbXBsYXRl X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXRpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWQ9Y1sn YXR0bnVtJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaG93X3N5c19vYmplY3RzPXNlbGYuYmx1ZXByaW50LnNob3dfc3lzdGVtX29i amVjdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHByb3BlcnRpZXNfc3FsKQorICAgICAgICAgICAgICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIG9s ZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2Rh dGFbJ2NsdHlwZSddLCBvbGRfZGF0YVsnaGFzU3FyQnJhY2tldCddID0gc2VsZi5fY2x0eXBlX2Zv cm1hdHRlcihvbGRfZGF0YVsnY2x0eXBlJ10pCisgICAgICAgICAgICAgICAgICAgICAgICBvbGRf ZGF0YSA9IEJhc2VUYWJsZVZpZXcuY29udmVydF9sZW5ndGhfcHJlY2lzaW9uX3RvX3N0cmluZyhv bGRfZGF0YSkKKworICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHR5cGUgPSBzZWxmLmdldF9m dWxsX3R5cGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ3R5cG5zcG5h bWUnXSwgb2xkX2RhdGFbJ3R5cG5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBv bGRfZGF0YVsnaXNkdXAnXSwgb2xkX2RhdGFbJ2F0dG5kaW1zJ10sIG9sZF9kYXRhWydhdHR0eXBt b2QnXQorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgICAgICAg ICAjIElmIHdlIGhhdmUgbGVuZ3RoICYgcHJlY2lzaW9uIGJvdGgKKyAgICAgICAgICAgICAgICAg ICAgICAgIG1hdGNoT2JqID0gcmUuc2VhcmNoKHInKFxkKyksKFxkKyknLCBmdWxsdHlwZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoT2JqOgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9sZF9kYXRhWydhdHRsZW4nXSA9IGludChtYXRjaE9iai5ncm91cCgxKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsnYXR0cHJlY2lzaW9uJ10gPSBpbnQobWF0 Y2hPYmouZ3JvdXAoMikpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBsZW5ndGggb25seQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1hdGNoT2JqID0gcmUuc2VhcmNoKHInKFxkKyknLCBmdWxsdHlwZSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaE9iajoKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ2F0dGxlbiddID0gaW50KG1hdGNoT2JqLmdyb3Vw KDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsnYXR0cHJlY2lz aW9uJ10gPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ2F0dGxlbiddID0gTm9uZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVsnYXR0cHJlY2lzaW9uJ10gPSBOb25l CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kYXRhWydjbHR5cGUnXSA9IERhdGFUeXBl UmVhZGVyLnBhcnNlX3R5cGVfbmFtZShvbGRfZGF0YVsnY2x0eXBlJ10pCisKKyAgICAgICAgICAg ICAgICAgICAgICAgICMgU3FsIGZvciBhbHRlciBjb2x1bW4KKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmICdpbmhlcml0ZWRmcm9tJyBub3QgaW4gYzoKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb2x1bW5fc3FsICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgW3NlbGYuY29sdW1uX3RlbXBsYXRlX3BhdGgsICd1cGRhdGUu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWMsIG9fZGF0YT1v bGRfZGF0YSwgY29ubj1zZWxmLmNvbm4pLnN0cmlwKCdcbicpICsgJ1xuXG4nCisKKyAgICAgICAg ICAgICAgICAjIElmIGNvbHVtbihzKSBpcy9hcmUgYWRkZWQKKyAgICAgICAgICAgICAgICBpZiAn YWRkZWQnIGluIGNvbHVtbnM6CisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNvbHVtbnNb J2FkZGVkJ106CisgICAgICAgICAgICAgICAgICAgICAgICBjWydzY2hlbWEnXSA9IGRhdGFbJ3Nj aGVtYSddCisgICAgICAgICAgICAgICAgICAgICAgICBjWyd0YWJsZSddID0gZGF0YVsnbmFtZSdd CisgICAgICAgICAgICAgICAgICAgICAgICAjIFNxbCBmb3IgY3JlYXRlIGNvbHVtbgorICAgICAg ICAgICAgICAgICAgICAgICAgaWYgJ2F0dGFjbCcgaW4gYzoKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjWydhdHRhY2wnXSA9IHBhcnNlX3ByaXZfdG9fZGIoY1snYXR0YWNsJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuY29sdW1uX2FjbCkKKworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IEJhc2VUYWJsZVZp ZXcuY29udmVydF9sZW5ndGhfcHJlY2lzaW9uX3RvX3N0cmluZyhjKQorCisgICAgICAgICAgICAg ICAgICAgICAgICBpZiAnaW5oZXJpdGVkZnJvbScgbm90IGluIGM6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29sdW1uX3NxbCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmNvbHVtbl90ZW1wbGF0ZV9wYXRoLCAn Y3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1jLCBj b25uPXNlbGYuY29ubikuc3RyaXAoJ1xuJykgKyAnXG5cbicKKworICAgICAgICAgICAgICAgICMg Q29tYmluZSBhbGwgdGhlIFNRTCB0b2dldGhlcgorICAgICAgICAgICAgICAgIFNRTCArPSBjb2x1 bW5fc3FsLnN0cmlwKCdcbicpCisKKyAgICAgICAgICAgICMgQ2hlY2sgZm9yIHBhcnRpdGlvbnMK KyAgICAgICAgICAgIGlmICdwYXJ0aXRpb25zJyBpbiBkYXRhOgorICAgICAgICAgICAgICAgIHBh cnRpdGlvbnMgPSBkYXRhWydwYXJ0aXRpb25zJ10KKyAgICAgICAgICAgICAgICBwYXJ0aXRpb25z X3NxbCA9ICdcbicKKworICAgICAgICAgICAgICAgICMgSWYgcGFydGl0aW9uKHMpIGlzL2FyZSBk ZWxldGVkCisgICAgICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIHBhcnRpdGlvbnM6CisgICAg ICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcGFydGl0aW9uc1snZGVsZXRlZCddOgorICAgICAg ICAgICAgICAgICAgICAgICAgdGVtcF9kYXRhID0gZGljdCgpCisgICAgICAgICAgICAgICAgICAg ICAgICBzY2hlbWFfbmFtZSwgdGFibGVfbmFtZSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmdldF9zY2hlbWFfYW5kX3RhYmxlX25hbWUocm93WydvaWQnXSkKKworICAgICAg ICAgICAgICAgICAgICAgICAgdGVtcF9kYXRhWydwYXJlbnRfc2NoZW1hJ10gPSBvbGRfZGF0YVsn c2NoZW1hJ10KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBfZGF0YVsncGFydGl0aW9uZWRf dGFibGVfbmFtZSddID0gb2xkX2RhdGFbJ25hbWUnXQorICAgICAgICAgICAgICAgICAgICAgICAg dGVtcF9kYXRhWydzY2hlbWEnXSA9IHNjaGVtYV9uYW1lCisgICAgICAgICAgICAgICAgICAgICAg ICB0ZW1wX2RhdGFbJ25hbWUnXSA9IHRhYmxlX25hbWUKKworICAgICAgICAgICAgICAgICAgICAg ICAgIyBTcWwgZm9yIGRldGFjaCBwYXJ0aXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHBh cnRpdGlvbnNfc3FsICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBbc2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVfcGF0aCwgJ2RldGFjaC5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT10ZW1wX2RhdGEsIGNvbm49c2Vs Zi5jb25uKS5zdHJpcCgnXG4nKSArICdcblxuJworCisgICAgICAgICAgICAgICAgIyBJZiBwYXJ0 aXRpb24ocykgaXMvYXJlIGFkZGVkCisgICAgICAgICAgICAgICAgaWYgJ2FkZGVkJyBpbiBwYXJ0 aXRpb25zOgorICAgICAgICAgICAgICAgICAgICB0ZW1wX2RhdGEgPSBkaWN0KCkKKyAgICAgICAg ICAgICAgICAgICAgdGVtcF9kYXRhWydzY2hlbWEnXSA9IG9sZF9kYXRhWydzY2hlbWEnXQorICAg ICAgICAgICAgICAgICAgICB0ZW1wX2RhdGFbJ25hbWUnXSA9IG9sZF9kYXRhWyduYW1lJ10KKyAg ICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHBhcnRpdGlvbiB0eXBlCisgICAgICAgICAgICAg ICAgICAgIHRlbXBfZGF0YVsncGFydGl0aW9uX3R5cGUnXSA9IFwKKyAgICAgICAgICAgICAgICAg ICAgICAgIG9sZF9kYXRhWydwYXJ0aXRpb25fc2NoZW1lJ10uc3BsaXQoKVswXS5sb3dlcigpCisg ICAgICAgICAgICAgICAgICAgIHRlbXBfZGF0YVsncGFydGl0aW9ucyddID0gcGFydGl0aW9uc1sn YWRkZWQnXQorCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbnNfc3FsICs9IFwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3BhcnRpdGlvbnNfc3FsKHRlbXBfZGF0YSkuc3Ry aXAoJ1xuJykgKyAnXG5cbicKKworICAgICAgICAgICAgICAgICMgQ29tYmluZSBhbGwgdGhlIFNR TCB0b2dldGhlcgorICAgICAgICAgICAgICAgIFNRTCArPSBwYXJ0aXRpb25zX3NxbC5zdHJpcCgn XG4nKQorCisgICAgICAgICAgICAjIENoZWNrIGlmIGluZGV4IGNvbnN0cmFpbnRzIGFyZSBhZGRl ZC9jaGFuZ2VkL2RlbGV0ZWQKKyAgICAgICAgICAgIGluZGV4X2NvbnN0cmFpbnRfc3FsID0gc2Vs Zi5nZXRfaW5kZXhfY29uc3RyYWludF9zcWwoZGlkLCB0aWQsIGRhdGEpCisgICAgICAgICAgICAj IElmIHdlIGhhdmUgaW5kZXggY29uc3RyYWludCBzcWwgdGhlbiBhZCBpdCBpbiBtYWluIHNxbAor ICAgICAgICAgICAgaWYgaW5kZXhfY29uc3RyYWludF9zcWwgaXMgbm90IE5vbmU6CisgICAgICAg ICAgICAgICAgU1FMICs9ICdcbicgKyBpbmRleF9jb25zdHJhaW50X3NxbAorCisgICAgICAgICAg ICAjIENoZWNrIGlmIGZvcmVpZ24ga2V5KHMpIGlzL2FyZSBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQK KyAgICAgICAgICAgIGZvcmVpZ25fa2V5X3NxbCA9IHNlbGYuZ2V0X2ZvcmVpZ25fa2V5X3NxbCh0 aWQsIGRhdGEpCisgICAgICAgICAgICAjIElmIHdlIGhhdmUgZm9yZWlnbiBrZXkgc3FsIHRoZW4g YWQgaXQgaW4gbWFpbiBzcWwKKyAgICAgICAgICAgIGlmIGZvcmVpZ25fa2V5X3NxbCBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgICAgICBTUUwgKz0gJ1xuJyArIGZvcmVpZ25fa2V5X3NxbAorCisg ICAgICAgICAgICAjIENoZWNrIGlmIGNoZWNrIGNvbnN0cmFpbnQocykgaXMvYXJlIGFkZGVkL2No YW5nZWQvZGVsZXRlZAorICAgICAgICAgICAgY2hlY2tfY29uc3RyYWludF9zcWwgPSBzZWxmLmdl dF9jaGVja19jb25zdHJhaW50X3NxbCh0aWQsIGRhdGEpCisgICAgICAgICAgICAjIElmIHdlIGhh dmUgY2hlY2sgY29uc3RyYWludCBzcWwgdGhlbiBhZCBpdCBpbiBtYWluIHNxbAorICAgICAgICAg ICAgaWYgY2hlY2tfY29uc3RyYWludF9zcWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg U1FMICs9ICdcbicgKyBjaGVja19jb25zdHJhaW50X3NxbAorCisgICAgICAgICAgICAjIENoZWNr IGlmIGV4Y2x1c2lvbiBjb25zdHJhaW50KHMpIGlzL2FyZSBhZGRlZC9jaGFuZ2VkL2RlbGV0ZWQK KyAgICAgICAgICAgIGV4Y2x1c2lvbl9jb25zdHJhaW50X3NxbCA9IHNlbGYuZ2V0X2V4Y2x1c2lv bl9jb25zdHJhaW50X3NxbChkaWQsIHRpZCwgZGF0YSkKKyAgICAgICAgICAgICMgSWYgd2UgaGF2 ZSBjaGVjayBjb25zdHJhaW50IHNxbCB0aGVuIGFkIGl0IGluIG1haW4gc3FsCisgICAgICAgICAg ICBpZiBleGNsdXNpb25fY29uc3RyYWludF9zcWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg ICAgU1FMICs9ICdcbicgKyBleGNsdXNpb25fY29uc3RyYWludF9zcWwKKworICAgICAgICBlbHNl OgorICAgICAgICAgICAgcmVzID0gTm9uZQorICAgICAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsK KyAgICAgICAgICAgICAgICAnbmFtZScKKyAgICAgICAgICAgIF0KKworICAgICAgICAgICAgZm9y IGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0 YToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldHRleHQoJy0tIGRlZmluaXRpb24gaW5j b21wbGV0ZScpCisKKyAgICAgICAgICAgICMgdmFsaWRhdGUgY29uc3RyYWludCBkYXRhLgorICAg ICAgICAgICAgZm9yIGtleSBpbiBbJ3ByaW1hcnlfa2V5JywgJ3VuaXF1ZV9jb25zdHJhaW50JywK KyAgICAgICAgICAgICAgICAgICAgICAgICdmb3JlaWduX2tleScsICdjaGVja19jb25zdHJhaW50 JywKKyAgICAgICAgICAgICAgICAgICAgICAgICdleGNsdWRlX2NvbnN0cmFpbnQnXToKKyAgICAg ICAgICAgICAgICBpZiBrZXkgaW4gZGF0YSBhbmQgbGVuKGRhdGFba2V5XSkgPiAwOgorICAgICAg ICAgICAgICAgICAgICBmb3IgY29uc3RyYWludCBpbiBkYXRhW2tleV06CisgICAgICAgICAgICAg ICAgICAgICAgICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9jb25zdHJhaW5zKGtleSwgY29uc3RyYWlu dCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldHRleHQoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICctLSBkZWZpbml0aW9uIGluY29tcGxldGUgZm9yIHsw fScuZm9ybWF0KGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAg ICAgICMgV2Ugd2lsbCBjb252ZXJ0IHByaXZpbGVnZXMgY29taW5nIGZyb20gY2xpZW50IHJlcXVp cmVkCisgICAgICAgICAgICAjIGluIHNlcnZlciBzaWRlIGZvcm1hdAorICAgICAgICAgICAgaWYg J3JlbGFjbCcgaW4gZGF0YToKKyAgICAgICAgICAgICAgICBkYXRhWydyZWxhY2wnXSA9IHBhcnNl X3ByaXZfdG9fZGIoZGF0YVsncmVsYWNsJ10sIHNlbGYuYWNsKQorCisgICAgICAgICAgICAjIFBh cnNlICYgZm9ybWF0IGNvbHVtbnMKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9wYXJzZV9mb3Jt YXRfY29sdW1ucyhkYXRhKQorICAgICAgICAgICAgZGF0YSA9IEJhc2VUYWJsZVZpZXcuY2hlY2tf YW5kX2NvbnZlcnRfbmFtZV90b19zdHJpbmcoZGF0YSkKKworICAgICAgICAgICAgaWYgJ2ZvcmVp Z25fa2V5JyBpbiBkYXRhOgorICAgICAgICAgICAgICAgIGZvciBjIGluIGRhdGFbJ2ZvcmVpZ25f a2V5J106CisgICAgICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bigKKyAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLmZvcmVpZ25fa2V5X3RlbXBsYXRlX3Bh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9wYXJlbnQuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgdGlkPWNbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcyddKQorICAg ICAgICAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KFNRTCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKwor ICAgICAgICAgICAgICAgICAgICBjWydyZW1vdGVfc2NoZW1hJ10gPSByc2V0Wydyb3dzJ11bMF1b J3NjaGVtYSddCisgICAgICAgICAgICAgICAgICAgIGNbJ3JlbW90ZV90YWJsZSddID0gcnNldFsn cm93cyddWzBdWyd0YWJsZSddCisKKyAgICAgICAgICAgIHBhcnRpdGlvbnNfc3FsID0gJycKKyAg ICAgICAgICAgIGlmICdpc19wYXJ0aXRpb25lZCcgaW4gZGF0YSBhbmQgZGF0YVsnaXNfcGFydGl0 aW9uZWQnXToKKyAgICAgICAgICAgICAgICBkYXRhWydyZWxraW5kJ10gPSAncCcKKyAgICAgICAg ICAgICAgICAjIGNyZWF0ZSBwYXJ0aXRpb24gc2NoZW1lCisgICAgICAgICAgICAgICAgZGF0YVsn cGFydGl0aW9uX3NjaGVtZSddID0gc2VsZi5nZXRfcGFydGl0aW9uX3NjaGVtZShkYXRhKQorICAg ICAgICAgICAgICAgIHBhcnRpdGlvbnNfc3FsID0gc2VsZi5nZXRfcGFydGl0aW9uc19zcWwoZGF0 YSkKKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRh YmxlX3RlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4pCisKKyAgICAgICAgICAgICMgQXBwZW5kIFNRTCBm b3IgcGFydGl0aW9ucworICAgICAgICAgICAgU1FMICs9ICdcbicgKyBwYXJ0aXRpb25zX3NxbAor CisgICAgICAgIFNRTCA9IHJlLnN1YignXG57Mix9JywgJ1xuXG4nLCBTUUwpCisgICAgICAgIFNR TCA9IFNRTC5zdHJpcCgnXG4nKQorCisgICAgICAgIHJldHVybiBTUUwsIGRhdGFbJ25hbWUnXSBp ZiAnbmFtZScgaW4gZGF0YSBlbHNlIG9sZF9kYXRhWyduYW1lJ10KKworICAgIGRlZiB1cGRhdGUo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCBkYXRhLCByZXMsIHBhcmVudF9pZD1Ob25l KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgYW4gZXhp c3RpbmcgdGFibGUgb2JqZWN0CisKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAgIGdpZDogU2Vy dmVyIEdyb3VwIElECisgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgIGRpZDog RGF0YWJhc2UgSUQKKyAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgIHRpZDog VGFibGUgSUQKKyAgICAgICAgICAgZGF0YTogRGF0YSB0byB1cGRhdGUKKyAgICAgICAgICAgcmVz OiBUYWJsZSBwcm9wZXJ0aWVzCisgICAgICAgICAgIHBhcmVudF9pZDogcGFyZW50IHRhYmxlIGlk IGlmIGN1cnJlbnQgdGFibGUgaXMgcGFydGl0aW9uIG9mIHBhcmVudAorICAgICAgICAgICAgICAg ICAgICB0YWJsZSBlbHNlIG5vbmUKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAg ICAgIHJlbGtpbmQgPSByZXNbJ3JlbGtpbmQnXSBpZiAncmVsa2luZCcgaW4gcmVzIGVsc2UgJycK KyAgICAgICAgICAgIFNRTCwgbmFtZSA9IHNlbGYuZ2V0X3NxbChkaWQsIHNjaWQsIHRpZCwgZGF0 YSwgcmVzKQorCisgICAgICAgICAgICBTUUwgPSBTUUwuc3RyaXAoJ1xuJykuc3RyaXAoJyAnKQor ICAgICAgICAgICAgc3RhdHVzLCByZXN0ID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN0KQorCisgICAgICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3NjaGVtYV9vaWQuc3FsJ10pLCB0aWQ9dGlk KQorICAgICAgICAgICAgc3RhdHVzLCByZXN0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShT UUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdCkKKworICAgICAgICAgICAgaWYgbm90 IHBhcmVudF9pZDoKKyAgICAgICAgICAgICAgICBwYXJlbnRfaWQgPSBzY2lkCisKKyAgICAgICAg ICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQu Z2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICB0aWQsCisgICAgICAg ICAgICAgICAgICAgIHBhcmVudF9pZCwKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAg ICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1wYXJ0aXRpb24iIGlmICgnaXNfcGFydGl0aW9uZWQn IGluIHJlc1sncm93cyddWzBdIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzWydyb3dzJ11bMF1bJ2lzX3BhcnRpdGlvbmVkJ10pIG9yCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5vZGVfdHlwZSA9PSAn cGFydGl0aW9uJyBlbHNlICJpY29uLXRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgaXNfcGFy dGl0aW9uZWQ9VHJ1ZSBpZiByZWxraW5kID09ICdwJyBlbHNlIEZhbHNlLAorICAgICAgICAgICAg ICAgICAgICBwYXJlbnRfc2NoZW1hX2lkPXNjaWQsCisgICAgICAgICAgICAgICAgICAgIHNjaGVt YV9pZD1yZXN0Wydyb3dzJ11bMF1bJ3NjaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgc2NoZW1h X25hbWU9cmVzdFsncm93cyddWzBdWyduc3BuYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgZGVmIHBy b3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkLCByZXMpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhl IHNlbGVjdGVkIHRhYmxlIG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDog U2VydmVyIEdyb3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAg ZGlkOiAgRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAg ICAgc2NpZDogU2NoZW1hIElECisgICAgICAgICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICAg ICByZXM6IFRhYmxlL1BhcnRpdGlvbiB0YWJsZSBwcm9wZXJ0aWVzCisKKyAgICAgICAgUmV0dXJu czoKKyAgICAgICAgICAgIEpTT04gb2Ygc2VsZWN0ZWQgdGFibGUgbm9kZQorICAgICAgICAiIiIK KyAgICAgICAgZGF0YSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgZGF0YVsndmFjdXVtX3Nl dHRpbmdzX3N0ciddID0gIiIKKworICAgICAgICBpZiBkYXRhWyd0YWJsZV92YWN1dW1fc2V0dGlu Z3Nfc3RyJ10gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhWyd2YWN1dW1fc2V0dGluZ3Nf c3RyJ10gKz0gZGF0YVsKKyAgICAgICAgICAgICAgICAndGFibGVfdmFjdXVtX3NldHRpbmdzX3N0 ciddLnJlcGxhY2UoJywnLCAnXG4nKQorCisgICAgICAgIGlmIGRhdGFbJ3RvYXN0X3RhYmxlX3Zh Y3V1bV9zZXR0aW5nc19zdHInXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRhdGFbJ3ZhY3V1 bV9zZXR0aW5nc19zdHInXSArPSAnXG4nICsgJ1xuJy5qb2luKAorICAgICAgICAgICAgICAgIFsn dG9hc3RfJyArIHNldHRpbmcgZm9yIHNldHRpbmcgaW4gZGF0YVsKKyAgICAgICAgICAgICAgICAg ICAgJ3RvYXN0X3RhYmxlX3ZhY3V1bV9zZXR0aW5nc19zdHInCisgICAgICAgICAgICAgICAgXS5z cGxpdCgnLCcpXQorICAgICAgICAgICAgKQorICAgICAgICBkYXRhWyd2YWN1dW1fc2V0dGluZ3Nf c3RyJ10gPSBkYXRhWworICAgICAgICAgICAgJ3ZhY3V1bV9zZXR0aW5nc19zdHInCisgICAgICAg IF0ucmVwbGFjZSgiPSIsICIgPSAiKQorCisgICAgICAgIGRhdGEgPSBzZWxmLl9mb3JtYXR0ZXIo ZGlkLCBzY2lkLCB0aWQsIGRhdGEpCisKKyAgICAgICAgIyBGZXRjaCBwYXJ0aXRpb24gb2YgdGhp cyB0YWJsZSBpZiBpdCBpcyBwYXJ0aXRpb25lZCB0YWJsZS4KKyAgICAgICAgaWYgJ2lzX3BhcnRp dGlvbmVkJyBpbiBkYXRhIGFuZCBkYXRhWydpc19wYXJ0aXRpb25lZCddOgorICAgICAgICAgICAg IyBnZXQgdGhlIHBhcnRpdGlvbiB0eXBlCisgICAgICAgICAgICBkYXRhWydwYXJ0aXRpb25fdHlw ZSddID0gZGF0YVsncGFydGl0aW9uX3NjaGVtZSddLnNwbGl0KClbMF0ubG93ZXIoKQorCisgICAg ICAgICAgICBwYXJ0aXRpb25zID0gW10KKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVzLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIHRpZD10aWQpCisgICAgICAgICAgICBz dGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3Mn XToKKyAgICAgICAgICAgICAgICBwYXJ0aXRpb25fbmFtZSA9IHJvd1snbmFtZSddCisgICAgICAg ICAgICAgICAgIyBpZiBzY2hlbWEgbmFtZSBpcyBkaWZmZXJlbnQgdGhlbiBkaXNwbGF5IHNjaGVt YQorICAgICAgICAgICAgICAgICMgcXVhbGlmaWVkIG5hbWUgb24gVUkuCisgICAgICAgICAgICAg ICAgaWYgZGF0YVsnc2NoZW1hJ10gIT0gcm93WydzY2hlbWFfbmFtZSddOgorICAgICAgICAgICAg ICAgICAgICBwYXJ0aXRpb25fbmFtZSA9IHJvd1snc2NoZW1hX25hbWUnXSArICcuJyArIHJvd1sn bmFtZSddCisKKyAgICAgICAgICAgICAgICBpZiBkYXRhWydwYXJ0aXRpb25fdHlwZSddID09ICdy YW5nZSc6CisgICAgICAgICAgICAgICAgICAgIHJhbmdlX3BhcnQgPSByb3dbJ3BhcnRpdGlvbl92 YWx1ZSddLnNwbGl0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGT1IgVkFMVUVTIEZS T00gKCcpWzFdLnNwbGl0KCcpIFRPJykKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2VfZnJvbSA9 IHJhbmdlX3BhcnRbMF0KKyAgICAgICAgICAgICAgICAgICAgcmFuZ2VfdG8gPSByYW5nZV9wYXJ0 WzFdWzI6LTFdCisKKyAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9ucy5hcHBlbmQoeworICAg ICAgICAgICAgICAgICAgICAgICAgJ29pZCc6IHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAncGFydGl0aW9uX25hbWUnOiBwYXJ0aXRpb25fbmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICd2YWx1ZXNfZnJvbSc6IHJhbmdlX2Zyb20sCisgICAgICAgICAgICAgICAgICAg ICAgICAndmFsdWVzX3RvJzogcmFuZ2VfdG8KKyAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYW5nZV9wYXJ0ID0gXAorICAg ICAgICAgICAgICAgICAgICAgICAgcm93WydwYXJ0aXRpb25fdmFsdWUnXS5zcGxpdCgnRk9SIFZB TFVFUyBJTiAoJylbMV0KKworICAgICAgICAgICAgICAgICAgICByYW5nZV9pbiA9IHJhbmdlX3Bh cnRbOi0xXQorICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25zLmFwcGVuZCh7CisgICAgICAg ICAgICAgICAgICAgICAgICAnb2lkJzogcm93WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICdwYXJ0aXRpb25fbmFtZSc6IHBhcnRpdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAg ICAgICAgJ3ZhbHVlc19pbic6IHJhbmdlX2luCisgICAgICAgICAgICAgICAgICAgIH0pCisKKyAg ICAgICAgICAgIGRhdGFbJ3BhcnRpdGlvbnMnXSA9IHBhcnRpdGlvbnMKKworICAgICAgICByZXR1 cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPWRhdGEsCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIGRlZiBnZXRfcGFydGl0aW9uc19zcWwoc2Vs ZiwgcGFydGl0aW9ucyk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg aXRlcmF0ZSBhbGwgdGhlIHBhcnRpdGlvbnMgYW5kIGNyZWF0ZSBTUUwuCisKKyAgICAgICAgOnBh cmFtIHBhcnRpdGlvbnM6IExpc3Qgb2YgcGFydGl0aW9ucworICAgICAgICAiIiIKKyAgICAgICAg c3FsID0gJycKKworICAgICAgICBmb3Igcm93IGluIHBhcnRpdGlvbnNbJ3BhcnRpdGlvbnMnXToK KyAgICAgICAgICAgIHBhcnRfZGF0YSA9IGRpY3QoKQorICAgICAgICAgICAgcGFydF9kYXRhWydw YXJ0aXRpb25lZF90YWJsZV9uYW1lJ10gPSBwYXJ0aXRpb25zWyduYW1lJ10KKyAgICAgICAgICAg IHBhcnRfZGF0YVsncGFyZW50X3NjaGVtYSddID0gcGFydGl0aW9uc1snc2NoZW1hJ10KKworICAg ICAgICAgICAgaWYgJ2lzX2F0dGFjaCcgaW4gcm93IGFuZCByb3dbJ2lzX2F0dGFjaCddOgorICAg ICAgICAgICAgICAgIHNjaGVtYV9uYW1lLCB0YWJsZV9uYW1lID0gXAorICAgICAgICAgICAgICAg ICAgICBzZWxmLmdldF9zY2hlbWFfYW5kX3RhYmxlX25hbWUocm93WydwYXJ0aXRpb25fbmFtZSdd KQorCisgICAgICAgICAgICAgICAgcGFydF9kYXRhWydzY2hlbWEnXSA9IHNjaGVtYV9uYW1lCisg ICAgICAgICAgICAgICAgcGFydF9kYXRhWyduYW1lJ10gPSB0YWJsZV9uYW1lCisgICAgICAgICAg ICBlbHNlOgorICAgICAgICAgICAgICAgIHBhcnRfZGF0YVsnc2NoZW1hJ10gPSBwYXJ0aXRpb25z WydzY2hlbWEnXQorICAgICAgICAgICAgICAgIHBhcnRfZGF0YVsncmVsaXNwYXJ0aXRpb24nXSA9 IFRydWUKKyAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ25hbWUnXSA9IHJvd1sncGFydGl0aW9u X25hbWUnXQorCisgICAgICAgICAgICBpZiBwYXJ0aXRpb25zWydwYXJ0aXRpb25fdHlwZSddID09 ICdyYW5nZSc6CisgICAgICAgICAgICAgICAgcmFuZ2VfZnJvbSA9IHJvd1sndmFsdWVzX2Zyb20n XS5zcGxpdCgnLCcpCisgICAgICAgICAgICAgICAgcmFuZ2VfdG8gPSByb3dbJ3ZhbHVlc190bydd LnNwbGl0KCcsJykKKworICAgICAgICAgICAgICAgIGZyb21fc3RyID0gJywgJy5qb2luKCJ7MH0i LmZvcm1hdChpdGVtKSBmb3IgaXRlbSBpbiByYW5nZV9mcm9tKQorICAgICAgICAgICAgICAgIHRv X3N0ciA9ICcsICcuam9pbigiezB9Ii5mb3JtYXQoaXRlbSkgZm9yIGl0ZW0gaW4gcmFuZ2VfdG8p CisKKyAgICAgICAgICAgICAgICBwYXJ0X2RhdGFbJ3BhcnRpdGlvbl92YWx1ZSddID0gJ0ZPUiBW QUxVRVMgRlJPTSAoJyArIGZyb21fc3RyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKyAnKSBUTyAoJyArIHRvX3N0ciArICcpJworICAgICAgICAgICAg ZWxzZToKKyAgICAgICAgICAgICAgICByYW5nZV9pbiA9IHJvd1sndmFsdWVzX2luJ10uc3BsaXQo JywnKQorICAgICAgICAgICAgICAgIGluX3N0ciA9ICcsICcuam9pbigiezB9Ii5mb3JtYXQoaXRl bSkgZm9yIGl0ZW0gaW4gcmFuZ2VfaW4pCisgICAgICAgICAgICAgICAgcGFydF9kYXRhWydwYXJ0 aXRpb25fdmFsdWUnXSA9ICdGT1IgVkFMVUVTIElOICgnICsgaW5fc3RyICsgJyknCisKKyAgICAg ICAgICAgIGlmICdpc19hdHRhY2gnIGluIHJvdyBhbmQgcm93Wydpc19hdHRhY2gnXToKKyAgICAg ICAgICAgICAgICBwYXJ0aXRpb25fc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICAgICAiLyIuam9pbihbc2VsZi5wYXJ0aXRpb25fdGVtcGxhdGVfcGF0aCwgJ2F0dGFjaC5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cGFydF9kYXRhLCBjb25uPXNlbGYuY29u bgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg cGFydGl0aW9uX3NxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYucGFydGl0aW9uX3RlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICBkYXRhPXBhcnRfZGF0YSwgY29ubj1zZWxmLmNvbm4KKyAgICAgICAg ICAgICAgICApCisKKyAgICAgICAgICAgIHNxbCArPSBwYXJ0aXRpb25fc3FsICsgJ1xuJworCisg ICAgICAgIHJldHVybiBzcWwKKworICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBnaWQsIHNpZCwgZGlk LCBzY2lkLCB0aWQsIHJlcyk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgdHJ1bmNhdGUgdGhlIHRhYmxlIG9iamVjdAorCisgICAgICAgICBBcmdzOgorICAgICAgICAg ICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAg ICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAg ICAgICB0aWQ6IFRhYmxlIElECisgICAgICAgICIiIgorICAgICAgICAjIEJlbG93IHdpbGwgZGVj aWRlIGlmIGl0J3Mgc2ltcGxlIGRyb3Agb3IgZHJvcCB3aXRoIGNhc2NhZGUgY2FsbAorICAgICAg ICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMoCisg ICAgICAgICAgICByZXF1ZXN0LmRhdGEsIGVuY29kaW5nPSd1dGYtOCcKKyAgICAgICAgKQorICAg ICAgICAjIENvbnZlcnQgc3RyICd0cnVlJyB0byBib29sZWFuIHR5cGUKKyAgICAgICAgaXNfY2Fz Y2FkZSA9IGpzb24ubG9hZHMoZGF0YVsnY2FzY2FkZSddKQorCisgICAgICAgIGRhdGEgPSByZXNb J3Jvd3MnXVswXQorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICd0cnVuY2F0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhPWRhdGEsIGNhc2NhZGU9aXNfY2FzY2FkZSkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAg ICAgICAgICAgIGluZm89Z2V0dGV4dCgiVGFibGUgdHJ1bmNhdGVkIiksCisgICAgICAgICAgICBk YXRhPXsKKyAgICAgICAgICAgICAgICAnaWQnOiB0aWQsCisgICAgICAgICAgICAgICAgJ3NjaWQn OiBzY2lkCisgICAgICAgICAgICB9CisgICAgICAgICkKKworICAgIGRlZiBnZXRfc2NoZW1hX2Fu ZF90YWJsZV9uYW1lKHNlbGYsIHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgZmV0Y2ggdGhlIHNjaGVtYSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUKKyAgICAgICAg Z2l2ZW4gdGFibGUgaWQuCisKKyAgICAgICAgOnBhcmFtIHRpZDogVGFibGUgSWQuCisgICAgICAg ICIiIgorICAgICAgICAjIEdldCBzY2hlbWEgb2lkCisgICAgICAgIHN0YXR1cywgc2NpZCA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcigKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZ2V0X3NjaGVtYV9vaWQuc3FsJ10pLCB0aWQ9dGlkKSkKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9c2NpZCkKKworICAgICAgICAjIEZldGNoIHNjaGVtYSBuYW1lCisgICAgICAgIHN0 YXR1cywgc2NoZW1hX25hbWUgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoCisgICAgICAgICAg ICByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGFibGVfdGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9zY2hlbWEuc3FsJ10pLCBj b25uPXNlbGYuY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQpCisg ICAgICAgICkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c2NoZW1hX25hbWUpCisKKyAgICAgICAgIyBGZXRj aCBUYWJsZSBuYW1lCisgICAgICAgIHN0YXR1cywgdGFibGVfbmFtZSA9IHNlbGYuY29ubi5leGVj dXRlX3NjYWxhcigKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAg ICAiLyIuam9pbihbc2VsZi50YWJsZV90ZW1wbGF0ZV9wYXRoLCAnZ2V0X3RhYmxlLnNxbCddKSwK KyAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwgc2NpZD1zY2lkLCB0aWQ9dGlkCisgICAg ICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9dGFibGVfbmFtZSkKKworICAg ICAgICByZXR1cm4gc2NoZW1hX25hbWUsIHRhYmxlX25hbWUKKworICAgIEBzdGF0aWNtZXRob2QK KyAgICBkZWYgY29udmVydF9sZW5ndGhfcHJlY2lzaW9uX3RvX3N0cmluZyhkYXRhKToKKyAgICAg ICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjb252ZXJ0IGxlbmd0aCAm IHByZWNpc2lvbiB0byBzdHJpbmcKKyAgICAgICAgdG8gaGFuZGxlIGNhc2UgbGlrZSB3aGVuIHVz ZXIgZ2l2ZXMgMCBhcyBsZW5ndGgKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZGF0YTog RGF0YSBmcm9tIGNsaWVudAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBDb252ZXJ0 ZWQgZGF0YQorICAgICAgICAiIiIKKyAgICAgICAgaWYgJ2F0dGxlbicgaW4gZGF0YSBhbmQgZGF0 YVsnYXR0bGVuJ10gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhWydhdHRsZW4nXSA9IHN0 cihkYXRhWydhdHRsZW4nXSkKKyAgICAgICAgaWYgJ2F0dHByZWNpc2lvbicgaW4gZGF0YSBhbmQg ZGF0YVsnYXR0cHJlY2lzaW9uJ10gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhWydhdHRw cmVjaXNpb24nXSA9IHN0cihkYXRhWydhdHRwcmVjaXNpb24nXSkKKyAgICAgICAgcmV0dXJuIGRh dGEKKworICAgIGRlZiBzZWFyY2hfY292ZXJpbmdpbmRleChzZWxmLCB0aWQsIGNvbHMpOgorICAg ICAgICAiIiIKKworICAgICAgICBBcmdzOgorICAgICAgICAgIHRpZDogVGFibGUgaWQKKyAgICAg ICAgICBjb2xzOiBjb2x1bW4gbGlzdAorCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIi CisKKyAgICAgICAgY29scyA9IHNldChjb2xzKQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYuZm9yZWlnbl9rZXlfdGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10aWQpCisgICAgICAgIHN0YXR1cywgY29u c3RyYWludHMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKGNvbnN0cmFpbnRzKQorCisgICAg ICAgIGZvciBjb3N0cm50IGluIGNvbnN0cmFpbnRzWydyb3dzJ106CisKKyAgICAgICAgICAgIHNx bCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5mb3Jl aWduX2tleV90ZW1wbGF0ZV9wYXRoLCAnZ2V0X2NvbHMuc3FsJ10pLAorICAgICAgICAgICAgICAg IGNpZD1jb3N0cm50WydvaWQnXSwKKyAgICAgICAgICAgICAgICBjb2xjbnQ9Y29zdHJudFsnaW5k bmF0dHMnXSkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzdCA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3Qoc3FsKQorCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzdCkKKworICAgICAgICAgICAg aW5kZXhjb2xzID0gc2V0KCkKKyAgICAgICAgICAgIGZvciByIGluIHJlc3RbJ3Jvd3MnXToKKyAg ICAgICAgICAgICAgICBpbmRleGNvbHMuYWRkKHJbJ2NvbHVtbiddLnN0cmlwKCciJykpCisKKyAg ICAgICAgICAgIGlmIGxlbihjb2xzIC0gaW5kZXhjb2xzKSA9PSBsZW4oaW5kZXhjb2xzIC0gY29s cykgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29zdHJudFsiaWR4bmFtZSJdCisKKyAg ICAgICAgcmV0dXJuIE5vbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVtcGxhdGVzL2JhY2t1cC9qcy9iYWNrdXAuanMg Yi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVtcGxhdGVzL2JhY2t1cC9qcy9iYWNrdXAuanMK aW5kZXggYzQzZGNkMi4uM2I1ODQ1NSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFj a3VwL3RlbXBsYXRlcy9iYWNrdXAvanMvYmFja3VwLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L2JhY2t1cC90ZW1wbGF0ZXMvYmFja3VwL2pzL2JhY2t1cC5qcwpAQCAtMjcwLDcgKzI3MCw3IEBA IFRPRE8gTElTVCBGT1IgQkFDS1VQOgogCiAgICAgICAgIC8vIERlZmluZSBsaXN0IG9mIG5vZGVz IG9uIHdoaWNoIGJhY2t1cCBjb250ZXh0IG1lbnUgb3B0aW9uIGFwcGVhcnMKICAgICAgICAgdmFy IGJhY2t1cF9zdXBwb3J0ZWRfbm9kZXMgPSBbCi0gICAgICAgICAgICAgICdkYXRhYmFzZScsICdz Y2hlbWEnLCAndGFibGUnCisgICAgICAgICAgICAgICdkYXRhYmFzZScsICdzY2hlbWEnLCAndGFi bGUnLCAncGFydGl0aW9uJwogICAgICAgICAgICAgXTsKIAogICAgICAgICAvKioKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4v dG9vbHMvZGF0YWdyaWQvX19pbml0X18ucHkKaW5kZXggNjdmNjcyOS4uODM5YjI0NCAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvX19pbml0X18ucHkKKysrIGIvd2ViL3Bn YWRtaW4vdG9vbHMvZGF0YWdyaWQvX19pbml0X18ucHkKQEAgLTEyNyw2ICsxMjcsMTAgQEAgZGVm IGluaXRpYWxpemVfZGF0YWdyaWQoY21kX3R5cGUsIG9ial90eXBlLCBzaWQsIGRpZCwgb2JqX2lk KToKICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIobXNn KSkKIAogICAgIHRyeToKKyAgICAgICAgIyBpZiBvYmplY3QgdHlwZSBpcyBwYXJ0aXRpb24gdGhl biBpdCBpcyBub3RoaW5nIGJ1dCBhIHRhYmxlLgorICAgICAgICBpZiBvYmpfdHlwZSA9PSAncGFy dGl0aW9uJzoKKyAgICAgICAgICAgIG9ial90eXBlID0gJ3RhYmxlJworCiAgICAgICAgICMgR2V0 IHRoZSBvYmplY3QgYXMgcGVyIHRoZSBvYmplY3QgdHlwZQogICAgICAgICBjb21tYW5kX29iaiA9 IE9iamVjdFJlZ2lzdHJ5LmdldF9vYmplY3Qob2JqX3R5cGUsIGNvbm5faWQ9Y29ubl9pZCwgc2lk PXNpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp ZD1kaWQsIG9ial9pZD1vYmpfaWQsIGNtZF90eXBlPWNtZF90eXBlLApkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2pzL2RhdGFncmlkLmpz IGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2pzL2RhdGFn cmlkLmpzCmluZGV4IGViODZhMTIuLmNkYTVjNTMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rv b2xzL2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9qcy9kYXRhZ3JpZC5qcworKysgYi93ZWIv cGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZW1wbGF0ZXMvZGF0YWdyaWQvanMvZGF0YWdyaWQuanMK QEAgLTI5LDcgKzI5LDcgQEAgZGVmaW5lKFsKICAgICAgICAgLy8gRGVmaW5lIGxpc3Qgb2Ygbm9k ZXMgb24gd2hpY2ggdmlldyBkYXRhIG9wdGlvbiBhcHBlYXJzCiAgICAgICAgIHZhciBzdXBwb3J0 ZWRfbm9kZXMgPSBbCiAgICAgICAgICAgICd0YWJsZScsICd2aWV3JywgJ212aWV3JywKLSAgICAg ICAgICAgJ2ZvcmVpZ24tdGFibGUnLCAnY2F0YWxvZ19vYmplY3QnCisgICAgICAgICAgICdmb3Jl aWduLXRhYmxlJywgJ2NhdGFsb2dfb2JqZWN0JywgJ3BhcnRpdGlvbicKICAgICAgICAgXSwKIAog ICAgICAgICAvKiBFbmFibGUvZGlzYWJsZSBWaWV3IGRhdGEgbWVudSBpbiB0b29scyBiYXNlZApk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVtcGxhdGVzL21haW50 ZW5hbmNlL2pzL21haW50ZW5hbmNlLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uv dGVtcGxhdGVzL21haW50ZW5hbmNlL2pzL21haW50ZW5hbmNlLmpzCmluZGV4IDVhYjNjNDQuLjBl NTFmZDkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3RlbXBsYXRl cy9tYWludGVuYW5jZS9qcy9tYWludGVuYW5jZS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9t YWludGVuYW5jZS90ZW1wbGF0ZXMvbWFpbnRlbmFuY2UvanMvbWFpbnRlbmFuY2UuanMKQEAgLTE1 MCw3ICsxNTAsNyBAQCBkZWZpbmUoWwogCiAgICAgICAgIHZhciBtYWludGVuYW5jZV9zdXBwb3J0 ZWRfbm9kZXMgPSBbCiAgICAgICAgICAgICAgICdkYXRhYmFzZScsICd0YWJsZScsICdwcmltYXJ5 X2tleScsCi0gICAgICAgICAgICAgICd1bmlxdWVfY29uc3RyYWludCcsICdpbmRleCcKKyAgICAg ICAgICAgICAgJ3VuaXF1ZV9jb25zdHJhaW50JywgJ2luZGV4JywgJ3BhcnRpdGlvbicKICAgICAg ICAgICAgIF07CiAKICAgICAgICAgLyoqCkBAIC0xODAsNyArMTgwLDcgQEAgZGVmaW5lKFsKIAog ICAgICAgICB2YXIgbWVudXMgPSBbewogICAgICAgICAgIG5hbWU6ICdtYWludGVuYW5jZScsIG1v ZHVsZTogdGhpcywKLSAgICAgICAgICBhcHBsaWVzOiBbJ3Rvb2xzJ10sIGNhbGxiYWNrOiAnY2Fs bGJhY2tfbWFpbnRlbmFjZScsCisgICAgICAgICAgYXBwbGllczogWyd0b29scyddLCBjYWxsYmFj azogJ2NhbGxiYWNrX21haW50ZW5hbmNlJywKICAgICAgICAgICBwcmlvcml0eTogMTAsIGxhYmVs OiBnZXR0ZXh0KCdNYWludGVuYW5jZS4uLicpLAogICAgICAgICAgIGljb246ICdmYSBmYS13cmVu Y2gnLCBlbmFibGU6IG1lbnVfZW5hYmxlZAogICAgICAgICB9XTsKQEAgLTE5MCw3ICsxOTAsNyBA QCBkZWZpbmUoWwogICAgICAgICAgIG1lbnVzLnB1c2goewogICAgICAgICAgICAgbmFtZTogJ21h aW50ZW5hbmNlX2NvbnRleHRfJyArIG1haW50ZW5hbmNlX3N1cHBvcnRlZF9ub2Rlc1tpZHhdLAog ICAgICAgICAgICAgbm9kZTogbWFpbnRlbmFuY2Vfc3VwcG9ydGVkX25vZGVzW2lkeF0sIG1vZHVs ZTogdGhpcywKLSAgICAgICAgICAgIGFwcGxpZXM6IFsnY29udGV4dCddLCBjYWxsYmFjazogJ2Nh bGxiYWNrX21haW50ZW5hY2UnLAorICAgICAgICAgICAgYXBwbGllczogWydjb250ZXh0J10sIGNh bGxiYWNrOiAnY2FsbGJhY2tfbWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgcHJpb3JpdHk6IDEw LCBsYWJlbDogZ2V0dGV4dCgnTWFpbnRlbmFuY2UuLi4nKSwKICAgICAgICAgICAgIGljb246ICdm YSBmYS13cmVuY2gnLCBlbmFibGU6IG1lbnVfZW5hYmxlZAogICAgICAgICAgIH0pOwpAQCAtMjAx LDcgKzIwMSw3IEBAIGRlZmluZShbCiAgICAgICAvKgogICAgICAgICBPcGVuIHRoZSBkaWFsb2cg Zm9yIHRoZSBtYWludGVuYW5jZSBmdW5jdGlvbmFsaXR5CiAgICAgICAqLwotICAgICAgY2FsbGJh Y2tfbWFpbnRlbmFjZTogZnVuY3Rpb24oYXJncywgaXRlbSkgeworICAgICAgY2FsbGJhY2tfbWFp bnRlbmFuY2U6IGZ1bmN0aW9uKGFyZ3MsIGl0ZW0pIHsKICAgICAgICAgdmFyIGkgPSBpdGVtIHx8 IHBnQnJvd3Nlci50cmVlLnNlbGVjdGVkKCksCiAgICAgICAgICAgc2VydmVyX2RhdGEgPSBudWxs OwogCkBAIC0zMjAsNyArMzIwLDEwIEBAIGRlZmluZShbCiAgICAgICAgICAgICAgICAgICBpZiAo dHJlZUluZm8uc2NoZW1hICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICBzY2hl bWEgPSB0cmVlSW5mby5zY2hlbWEuX2xhYmVsOwogICAgICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgICAgaWYgKHRyZWVJbmZvLnRhYmxlICE9IHVuZGVmaW5lZCkgeworCisgICAgICAg ICAgICAgICAgICBpZiAodHJlZUluZm8ucGFydGl0aW9uICE9IHVuZGVmaW5lZCkgeworICAgICAg ICAgICAgICAgICAgICB0YWJsZSA9IHRyZWVJbmZvLnBhcnRpdGlvbi5fbGFiZWw7CisgICAgICAg ICAgICAgICAgICB9IGVsc2UgaWYgICh0cmVlSW5mby50YWJsZSAhPSB1bmRlZmluZWQpIHsKICAg ICAgICAgICAgICAgICAgICAgdGFibGUgPSB0cmVlSW5mby50YWJsZS5fbGFiZWw7CiAgICAgICAg ICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVt cGxhdGVzL3Jlc3RvcmUvanMvcmVzdG9yZS5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUv dGVtcGxhdGVzL3Jlc3RvcmUvanMvcmVzdG9yZS5qcwppbmRleCBjMjNkOWUzLi4wZGEwMDA0IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3RlbXBsYXRlcy9yZXN0b3JlL2pz L3Jlc3RvcmUuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZW1wbGF0ZXMvcmVz dG9yZS9qcy9yZXN0b3JlLmpzCkBAIC0yMjgsNyArMjI4LDggQEAgZGVmaW5lKFsKICAgICAgICAg dmFyIHJlc3RvcmVfc3VwcG9ydGVkX25vZGVzID0gWwogICAgICAgICAgICAgICAnZGF0YWJhc2Un LCAnc2NoZW1hJywKICAgICAgICAgICAgICAgJ3RhYmxlJywgJ2Z1bmN0aW9uJywKLSAgICAgICAg ICAgICAgJ3RyaWdnZXInLCAnaW5kZXgnCisgICAgICAgICAgICAgICd0cmlnZ2VyJywgJ2luZGV4 JywKKyAgICAgICAgICAgICAgJ3BhcnRpdGlvbicKICAgICAgICAgICAgIF07CiAKICAgICAgICAg LyoqCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi91dGlscy9fX2luaXRfXy5weSBiL3dlYi9wZ2Fk bWluL3V0aWxzL19faW5pdF9fLnB5CmluZGV4IDU1MGJhZDIuLjcwMWEzOGMgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL3V0aWxzL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3V0aWxzL19f aW5pdF9fLnB5CkBAIC0yOSw2ICsyOSw3IEBAIGNsYXNzIFBnQWRtaW5Nb2R1bGUoQmx1ZXByaW50 KToKICAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoJ3RlbXBsYXRlX2ZvbGRlcicsICd0ZW1wbGF0 ZXMnKQogICAgICAgICBrd2FyZ3Muc2V0ZGVmYXVsdCgnc3RhdGljX2ZvbGRlcicsICdzdGF0aWMn KQogICAgICAgICBzZWxmLnN1Ym1vZHVsZXMgPSBbXQorICAgICAgICBzZWxmLnBhcmVudG1vZHVs ZXMgPSBbXQogCiAgICAgICAgIHN1cGVyKFBnQWRtaW5Nb2R1bGUsIHNlbGYpLl9faW5pdF9fKG5h bWUsIGltcG9ydF9uYW1lLCAqKmt3YXJncykKIApAQCAtNTksNiArNjAsOCBAQCBjbGFzcyBQZ0Fk bWluTW9kdWxlKEJsdWVwcmludCk6CiAgICAgICAgIHN1cGVyKFBnQWRtaW5Nb2R1bGUsIHNlbGYp LnJlZ2lzdGVyKGFwcCwgb3B0aW9ucywgZmlyc3RfcmVnaXN0cmF0aW9uKQogCiAgICAgICAgIGZv ciBtb2R1bGUgaW4gc2VsZi5zdWJtb2R1bGVzOgorICAgICAgICAgICAgaWYgZmlyc3RfcmVnaXN0 cmF0aW9uOgorICAgICAgICAgICAgICAgIG1vZHVsZS5wYXJlbnRtb2R1bGVzLmFwcGVuZChzZWxm KQogICAgICAgICAgICAgYXBwLnJlZ2lzdGVyX2JsdWVwcmludChtb2R1bGUpCiAKICAgICBkZWYg Z2V0X293bl9zdHlsZXNoZWV0cyhzZWxmKToKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3V0aWxz L2V4Y2VwdGlvbi5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL2V4Y2VwdGlvbi5weQppbmRleCA1N2Mz MjI0Li43N2Q1OWRhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi91dGlscy9leGNlcHRpb24ucHkK KysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvZXhjZXB0aW9uLnB5CkBAIC00MCwzICs0MCwxMSBAQCBj bGFzcyBDb25uZWN0aW9uTG9zdChIVFRQRXhjZXB0aW9uKToKICAgICAgICAgICAgICAgICAnY29u bl9pZCc6IHNlbGYuY29ubl9pZAogICAgICAgICAgICAgfQogICAgICAgICApCisKKyAgICBkZWYg X19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJDb25uZWN0aW9uIChpZCAjezJ9KSBsb3N0 IGZvciB0aGUgc2VydmVyICgjezB9KSBvbiAiIFwKKyAgICAgICAgICAgICAgICJkYXRhYmFzZSAo ezF9KSIuZm9ybWF0KHNlbGYuc2lkLCBzZWxmLmRiLCBzZWxmLmNvbm5faWQpCisKKyAgICBkZWYg X19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiQ29ubmVjdGlvbiAoaWQgI3syfSkgbG9z dCBmb3IgdGhlIHNlcnZlciAoI3swfSkgb24gIiBcCisgICAgICAgICAgICAgICAiZGF0YWJhc2Ug KHsxfSkiLmZvcm1hdChzZWxmLnNpZCwgc2VsZi5kYiwgc2VsZi5jb25uX2lkKQo= --f403045fe3ec7e71d80553669df4--