Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fFlOk-00080t-CN for pgadmin-hackers@arkaria.postgresql.org; Mon, 07 May 2018 19:02:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fFlOi-0003S4-HJ for pgadmin-hackers@arkaria.postgresql.org; Mon, 07 May 2018 19:02:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fFlOi-0003Ru-0F for pgadmin-hackers@lists.postgresql.org; Mon, 07 May 2018 19:02:08 +0000 Received: from mx0a-00296801.pphosted.com ([148.163.150.38]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fFlOU-0002Jc-6n for pgadmin-hackers@postgresql.org; Mon, 07 May 2018 19:02:06 +0000 Received: from pps.filterd (m0114581.ppops.net [127.0.0.1]) by mx0a-00296801.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w47IpbHE027485 for ; Mon, 7 May 2018 19:01:50 GMT Received: from mail-io0-f200.google.com (mail-io0-f200.google.com [209.85.223.200]) by mx0a-00296801.pphosted.com with ESMTP id 2hs37f9gx5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 07 May 2018 19:01:47 +0000 Received: by mail-io0-f200.google.com with SMTP id w18-v6so28626069ioe.3 for ; Mon, 07 May 2018 12:01:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=/ZWfnka7er/N+eY5a5n0ncQrZ406jjCpbfNOV881Jvs=; b=Newqy+Ndld/wc2EVeBSRq4XUW2Tg61hXfiuxoFij6170bY0ggf86wNjYZdv8QSdO2D +nm5dkd7NYzbsIKqs7XtSc/aKdsIaetzl8MJR6SJHiXKAsD+ReiIs+67V+zXJodLeBEV hNVQtEk0XCYUSpawWiRAqZOov0bLP1f+FKUU/4eVKctjx69ftiJ2ln28umw4joR0stU1 m0g2t3Xg8naS0UyPF6C8xCCUxiHru3CcC4WIKhcGbUh0ZNKvPg+Ok2kHTui7TY+/n9W7 ympoIJIhwNukSJDvwWHQbwPxV5G8T8os1St11dJ/aUKMugh+naGCOWqeDbMSQcn+0gz1 PJsg== X-Gm-Message-State: ALKqPwei881v0czX/R4VDCM5ktK4d5fspYX/e4vpQEbJyZu/5aZ6iAgJ LLThJsh4rFPUWISKoahOEvK2f0NHPHNACLogDeVKCuSjQjdYEW6k9KFYIQl/gyQ/XG5SYy4TJ5y wiqEIFKpjoEsZBN45L2ScpU7QsNMF0zwHhqfOh3xZSG4C1Kx1h0fHbuv1RoHZnnEPKE64 X-Received: by 2002:a24:a342:: with SMTP id p63-v6mr2730482ite.146.1525719704695; Mon, 07 May 2018 12:01:44 -0700 (PDT) X-Google-Smtp-Source: AB8JxZriP66Bwca986lHUuwRyuRLUDsPl+8uTfp0Axd11J5czV55O3bddbpaGnyIHanjC+gg1lD6fwGhElBc2lAIDgE= X-Received: by 2002:a24:a342:: with SMTP id p63-v6mr2730430ite.146.1525719704097; Mon, 07 May 2018 12:01:44 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Joao De Almeida Pereira Date: Mon, 07 May 2018 19:01:08 +0000 Message-ID: Subject: Re: [pgadmin4][patch] Initial patch to decouple from ACI Tree To: Dave Page Cc: Ashesh Vashi , Anthony Emengo , Khushboo Vashi , Murtuza Zabuawala , pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000fe853a056ba24cb7" X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-05-07_09:,, signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=5 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1805070188 X-Proofpoint-Quarantined: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000fe853a056ba24cb7 Content-Type: multipart/related; boundary="000000000000fe8539056ba24cb6" --000000000000fe8539056ba24cb6 Content-Type: multipart/alternative; boundary="000000000000fe8537056ba24cb5" --000000000000fe8537056ba24cb5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Hackers, We noticed that some of the latest changes created some conflicts with this patch. So you can find attached the patch rebased on the new master. Thanks Victoria && Joao On Fri, May 4, 2018 at 6:03 PM Joao De Almeida Pereira < jdealmeidapereira@pivotal.io> wrote: > And now the patches...... > > > On Fri, May 4, 2018 at 6:01 PM Joao De Almeida Pereira < > jdealmeidapereira@pivotal.io> wrote: > >> Hi Hackers, >> >> *Be prepared this is going to be a big email.* >> Objectives of this patch: >> >> 1. Start the work to split ACI from pgAdmin code >> 2. Add more tests around the front end components >> 3. Start the discussion on application architecture >> >> 1. Start the work to split ACI from pgAdmin code Why >> >> This journey started on our first attempt to store state of the current >> tree, so that when a user accessed again pgAdmin >> there would be no need to reopen all the nodes and make the flow better. >> Another problem users brought to us was related >> to the UI behavior when the number of objects was too big. >> >> In order to do implement this features we would have to play around with >> aciTree or some functions from our code that >> called and leveraged the aciTree functionalities. To do this we needed t= o >> have some confidence that our changes would >> implement correctly the new feature and it would not break the current >> functionality. >> The process that we used was first extract the functions that interacted >> with the tree, wrap them with >> tests and then refactor them in some way. While doing this work we >> realized that the tree started spreading roots >> throughout the majority of the application. >> How >> >> Options: >> >> 1. Rewrite the front end >> 2. One bang replace ACI Tree without change on the application >> 3. Create an abstraction layer between ACI Tree and the application >> >> 1. Rewrite the front end >> Pros Const >> Achieve decoupling by recreating the frontend Cost is too high >> Do not rely on deprecated or unmaintained libraries Turn around is too >> long >> One shot change 2. One bang replace ACI Tree >> Pros Const >> Achieve decoupling by recreating the frontend Cost is too high >> Does not achieve the decoupling unless we change the application >> Need to create an adaptor >> No garantee of success >> One shot change 3. Create an abstraction layer between ACI Tree and the >> application >> Pros Const >> Achieve decoupling of the application and the tree 90% of the time on >> Code archaeology >> Lower cost >> Ability to change or keep ACI Tree, decision TBD >> Can be done in a iterative way >> >> We decided that options 3 looked more attractive specially because we >> could do it in a iterative way. >> >> The next image depicts the current state of the interactions between the >> application and the ACI and the place we want >> to be in. >> >> [image: Screen Shot 2018-05-04 at 4.06.17 PM.png] >> >> for retrieving of data from the ACI Tree that then is used in different >> ways. >> >> Because we are doing this in a iterative process we need to keep the >> current tree working and create our adaptor next >> to it. In order to do that we created a new property on PGBrowser class >> called treeMenu and when ACI Tree receives >> the node information we also populate the new Tree with all the needed >> information. >> >> This approach allow us not to worry, for now, with data retrieval, URL >> system and other issues that should be addressed >> in the future when the adaptor is done. >> >> This first patch tries to deal with the low hanging fruit, functions tha= t >> are triggered by events from ACI Tree. >> Cases like registering to events and triggering events need to be handle= d >> in the future as well. >> 2. Add more tests around the front end components Why >> >> Go Fast Forever: https://builttoadapt.io/why-tdd-489fdcdda05e >> I think this is a very good summary of why do we need tests in our >> applications. >> 3. Start the discussion on application architecture >> >> Why should we care about location of files inside a our application? >> >> Why is this way better the another? >> >> These are 2 good questions that have very lengthy answers. Trying to mor= e >> or less summarize the answers we care about >> the location of the files, because we want our application to communicat= e >> intent and there are always pros and cons >> on all the decisions that we make. >> >> At this point the application structure follows our menu, this approach >> eventually make is easier to follow the code >> but at the same time if the menu changes down the line, will we change >> the structure of our folders? >> >> The proposal that we do with the last diff of this patch is to change to >> a structure that slices vertically the >> application. This way we can understand intent behind the code and more >> easily find what we are looking for. >> >> In the current structure if you want to see the tables code you need to >> go to >> pgAdmin/browser/server_groups/servers/databases/schemas/tables/ this is >> a huge path to remember and to get to. What >> do we win with this? If we open pgAdmin we know which nodes to click in >> order to get to tables. But for development >> every time that you are looking for a specific functionality you need to >> run the application, navigate the menu so that >> you know where you can find the code. This doesn=E2=80=99t sound very ap= pealing. >> >> What if our structure would look like this: >> >> - web >> - tables >> - controller >> - get_nodes.py >> - get_sql.py >> - __init__.py >> - frontend >> - component >> - ddl_component.js >> - services >> - table-service.js >> - schemas >> - servers >> - .... >> >> This would saves us time because all the information that we need is wha= t >> are we working on and everything is right there. >> Menu driven structure Intent Driven Structure >> *Pros:* *Pros:* >> Already in place Explicitly shows features >> Self contained features Self contained features >> Support for drop in features Support for drop in features >> *Cons:* *Cons:* >> Follows the menu, and it could change Need to change current code >> Hard to find features Some additional plumbing might be needed >> Drop in features need to be placed in a specific location according to >> the menu location >> >> What are your thought about this architecture? >> >> Around minute 7 of this video >> Uncle Bob shows an >> application written >> in rails to talk about architecture. It is a long KeyNote if you are >> curious I would advise you to see the full video. >> His approach to architecture of the application is pretty interesting. >> ------------------------------ >> Patches 0001 Change the order of the shims on the shim file >> >> Simple change that orders the shims inside the shim file >> 0002 New tree implementation >> >> This is the first version of our Tree implementation. At this point is a >> very simple tree without no abstractions and >> with code that eventually is not very performant, but this is only the >> first iteration and we are trying to follow the >> Last Responsible Moment Principle >> >> . >> >> What can you find in this patch: >> >> - Creation of PGBrowser.treeMenu >> - Initial version of the Tree Adaptor >> web/pgadmin/static/js/tree/tree.js >> - TreeFake test double >> that can replace the >> Tree for testing purposes >> - Tests. As an interesting asside because Fake=E2=80=99s need to beha= ve like >> the real object you will noticed that there are >> tests for this type of double and they the same as of the real object= . >> >> 0003 Extract, Test and Refactor Methods >> >> This is the patch that contains the change that we talked a in the >> objectives. It touches in a subset of the places >> where itemData function is called. To have a sense of progress the >> following image depicts, on the left all places >> where this functions can be found in the code and on the right the place= s >> where it still remains after this patch. >> >> But this patch is not only related to the ACI Tree, it also creates some >> abstractions from code that we found repeated. >> Some examples of this are the dialogs for Backup and Restore, where the >> majority of the logic was common, so we created >> in web/pgadmin/static/js/alertify/ 3 different objects: >> A Factory DialogFactory that is responsible for creating new Dialog and >> these dialogs will use the DialogWrapper. >> >> This is also a good example of the Last Responsible Moment Principle >> >> , >> in Dialog there are still some functions that are used in a Recover and >> Backup scenario. When we have more examples >> we will be able to, if we want, to extract that into another function. >> >> While doing some code refactoring we found out that the Right Click Menu >> as some checks that can be centralized. Examples >> of these are checks for Enable/Disable of an option of the display of th= e >> Create/Edit/Drop option in some menus. >> Check web/pgadmin/static/js/menu/ for more information. This simplified >> code like: >> >> canCreate: function(itemData, item, data) { >> - //If check is false then , we will allow create menu >> - if (data && data.check =3D=3D false) >> - return true; >> - >> - var t =3D pgBrowser.tree, i =3D item, d =3D itemData; >> - // To iterate over tree to check parent node >> - while (i) { >> - // If it is schema then allow user to create domain >> - if (_.indexOf(['schema'], d._type) > -1) >> - return true; >> - >> - if ('coll-domain' =3D=3D d._type) { >> - //Check if we are not child of catalog >> - var prev_i =3D t.hasParent(i) ? t.parent(i) : null, >> - prev_d =3D prev_i ? t.itemData(prev_i) : null; >> - if( prev_d._type =3D=3D 'catalog') { >> - return false; >> - } else { >> - return true; >> - } >> - } >> - i =3D t.hasParent(i) ? t.parent(i) : null; >> - d =3D i ? t.itemData(i) : null; >> - } >> - // by default we do not want to allow create menu >> - return true; >> + return canCreate.canCreate(pgBrowser, 'coll-domain', item, data= ); >> } >> >> This refactor was made in a couple of places throughout the code. >> >> Another refactor that had to be done was the creation of the functions >> getTreeNodeHierarchyFromElement and >> getTreeNodeHierarchyFromIdentifier that replace the old >> getTreeNodeHierarchy. This implementation was done >> because for the time being we have 2 different types of trees and calls >> to them. >> >> The rest of the changes resulted from our process of refactoring that we >> are following: >> >> 1. Find a location where itemData is used >> 2. Extract that into a function outside of the current code >> 3. Wrap it with tests >> 4. When we have enough confidence on the tests, we refactor the >> function to use the new Tree >> 5. We refactor the function to become more readable >> 6. Start over >> >> 0004 Architecture >> >> The proposed structure is our vision for the application, this is not th= e >> state we will be in when this patch lands. >> For now the only change we are doing is move the javascript into >> static/js/FEATURE_NAME. This is a first step in the >> direction that we would like to see the product heading. >> >> Even if we decide to keep using the same architecture the move of >> Javascript to a centralized place will >> not break any plugability as webpack can retrieve all the Javascript fro= m >> any place in the code. >> >> Have a nice weekend >> Joao >> =E2=80=8B >> >> --000000000000fe8537056ba24cb5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,
We noticed that some of the latest changes= created some conflicts with this patch. So you can find attached the patch= rebased on the new master.

Thanks
Victo= ria && Joao

On Fri, May 4, 2018 at 6:03 PM Joao De Almeida Pereira <jdealmeidapereira@pivotal.io> wr= ote:
And now the p= atches......


On Fri, May 4, 2018 at 6:01 PM Joao De Almeida Pereira <jdealmeidapereira@p= ivotal.io> wrote:

Hi Hackers,

Be prepared this is goi= ng to be a big email.

Objectives of this patch:
  1. Start the work to split ACI from pgAdmin cod= e
  2. Add more tests around the front end componen= ts
  3. Start the discussion on application architec= ture

1. Start the work to split ACI from pgAdmin code=

Why

This journey started on our fir= st attempt to store state of the current tree, so that when a user accessed= again pgAdmin
there would be no need to reopen all the nodes and make t= he flow better. Another problem users brought to us was related
to the U= I behavior when the number of objects was too big.

In order to do implement this f= eatures we would have to play around with aciTree or some functions from ou= r code that
called and leveraged the aciTree functionalities. To do this= we needed to have some confidence that our changes would
implement corr= ectly the new feature and it would not break the current functionality.
= The process that we used was first extract the functions that interacted wi= th the tree, wrap them with
tests and then refactor them in some way. Wh= ile doing this work we realized that the tree started spreading roots
th= roughout the majority of the application.

How

Options:

  1. Rewrite the front end
  2. One bang replace ACI Tree without change on = the application
  3. Create an abstraction layer between ACI Tree= and the application
1. Rewrite the front end
Pros Const
Achieve decoupling by recreating the fron= tend Cost is too high
Do not rely on deprecated or unmaintained= libraries Turn around is too long
One shot change
2. One bang replace ACI Tree
Pros Const
Achieve decoupling by recreating the fron= tend Cost is too high
Does not achieve the decoupling unless we= change the application
Need to create an adaptor
No garantee of success
One shot change
3. Create an abstraction layer = between ACI Tree and the application
Pros Const
Achieve decoupling of the application and= the tree 90% of the time on Code archaeology
Lower cost
Ability to change or keep ACI Tree, decis= ion TBD
Can be done in a iterative way

We decided that options 3 looke= d more attractive specially because we could do it in a iterative way.

The next image depicts the curr= ent state of the interactions between the application and the ACI and the p= lace we want
to be in.

for retrieving of data from the= ACI Tree that then is used in different ways.

Because we are doing this in a = iterative process we need to keep the current tree working and create our a= daptor next
to it. In order to do that we created a new property on PGBrowser class called treeMenu= and when ACI Tree receives
the node information we also populate the ne= w Tree with all the needed information.

This approach allow us not to w= orry, for now, with data retrieval, URL system and other issues that should= be addressed
in the future when the adaptor is done.

This first patch tries to deal = with the low hanging fruit, functions that are triggered by events from ACI= Tree.
Cases like registering to events and triggering events need to be= handled in the future as well.

2. Add more tests around the front end componen= ts

Why

Go Fast Forever: https://builtt= oadapt.io/why-tdd-489fdcdda05e
I think this is a very good summary o= f why do we need tests in our applications.

3. Start the discussion on application archit= ecture

Why should we care about locati= on of files inside a our application?

Why is this way better the anot= her?

These are 2 good questions that= have very lengthy answers. Trying to more or less summarize the answers we= care about
the location of the files, because we want our application t= o communicate intent and there are always pros and cons
on all the decis= ions that we make.

At this point the application s= tructure follows our menu, this approach eventually make is easier to follo= w the code
but at the same time if the menu changes down the line, will = we change the structure of our folders?

The proposal that we do with th= e last diff of this patch is to change to a structure that slices verticall= y the
application. This way we can understand intent behind the code and= more easily find what we are looking for.

In the current structure if you= want to see the tables code you need to go to
pgAdmin/= browser/server_groups/servers/databases/schemas/tables/ this is a hu= ge path to remember and to get to. What
do we win with this? If we open = pgAdmin we know which nodes to click in order to get to tables. But for dev= elopment
every time that you are looking for a specific functionality yo= u need to run the application, navigate the menu so that
you know where = you can find the code. This doesn=E2=80=99t sound very appealing.

What if our structure would loo= k like this:

 - web
   - tables
     - controller
       - get_nodes.py
       - get_sql.py
       - __init__.py
     - frontend
        - component
            - ddl_component.js
        - services
            - table-service.js
   - schemas
   - servers
   - ....

This would saves u= s time because all the information that we need is what are we working on a= nd everything is right there.

Menu dri= ven structure Intent D= riven Structure
Pros: Pros:
Already in place Explicitly shows features
Self contained features Self contained features
Support for drop in features Support for drop in features
Cons: Cons:
Follows the menu, and it could change Need to change current code
Hard to find features Some additional plumbing might be needed
Drop in features need to be placed in a specific location a= ccording to the menu location

What are your thought about thi= s architecture?

Around minute 7 of this video<= /a> Uncle Bob shows an application written
in rails to talk about archit= ecture. It is a long KeyNote if you are curious I would advise you to see t= he full video.
His approach to architecture of the application is pretty= interesting.


Patches

0001 Change the order of the shims on the sh= im file

Simple change that orders the s= hims inside the shim file

0002 New tree implementation

This is the first version of ou= r Tree implementation. At this point is a very simple tree without no abstr= actions and
with code that eventually is not very performant, but this i= s only the first iteration and we are trying to follow the
Last Responsible Moment Pri= nciple.

What can you find in this patch= :

  • Creation of PGBrowser.treeM= enu
  • Initial version of the Tree Adaptor web/pgadmin/static/js/tree/tree.js
  • TreeFake test double that can replace = the Tree for testing purposes
  • Tests. As an interesting asside because Fake= =E2=80=99s need to behave like the real object you will noticed that there = are
    tests for this type of double and they the same as of the real objec= t.

0003 Extract, Test and Refactor Methods

This is the patch that contains= the change that we talked a in the objectives. It touches in a subset of t= he places
where itemData function is called. To = have a sense of progress the following image depicts, on the left all place= s
where this functions can be found in the code and on the right the pla= ces where it still remains after this patch.

But this patch is not only rela= ted to the ACI Tree, it also creates some abstractions from code that we fo= und repeated.
Some examples of this are the dialogs for Backup and Resto= re, where the majority of the logic was common, so we created
in web/pgadmin/static/js/alertify/ 3 different objects:
A = Factory DialogFactory that is responsible for creat= ing new Dialog and these dialogs will use the DialogWrapper.

This is also a good example of = the Last Respo= nsible Moment Principle,
in Dialog there are= still some functions that are used in a Recover and Backup scenario. When = we have more examples
we will be able to, if we want, to extract that in= to another function.

While doing some code refactori= ng we found out that the Right Click Menu as some checks that can be centra= lized. Examples
of these are checks for Enable/Disable of an option of t= he display of the Create/Edit/Drop option in some menus.
Check web/pgadmin/static/js/menu/ for more information. This simpl= ified code like:

      canCreate: fun=
ction(itemData, item, data) {
-        //If check is false then , we will allow create menu
-        if (data && data.check =3D=3D false)
-          return true;
-
-        var t =3D pgBrowser.tree, i =3D item, d =3D itemData;
-        // To iterate over tree to check parent node
-        while (i) {
-          // If it is schema then allow user to create domain
-          if (_.indexOf(['schema'], d._type) > -1)
-            return true;
-
-          if ('coll-domain' =3D=3D d._type) {
-            //Check if we are not child of catalog
-            var prev_i =3D t.hasParent(i) ? t.parent(i) : null,
-              prev_d =3D prev_i ? t.itemData(prev_i) : null;
-            if( prev_d._type =3D=3D 'catalog') {
-              return false;
-            } else {
-              return true;
-            }
-          }
-          i =3D t.hasParent(i) ? t.parent(i) : null;
-          d =3D i ? t.itemData(i) : null;
-        }
-        // by default we do not want to allow create menu
-        return true;
+        return canCreate.canCreate(pgBrowser, 'coll-domain', item,=
 data);
      }

This refactor was = made in a couple of places throughout the code.

Another refactor that had to be= done was the creation of the functions getTreeNodeHierarc= hyFromElement and
getTreeNodeHierarchyFromIdenti= fier that replace the old getTreeNodeHierarchy. This implementation was done
because for the time being we have 2 di= fferent types of trees and calls to them.

The rest of the changes resulte= d from our process of refactoring that we are following:

  1. Find a location where itemD= ata is used
  2. Extract that into a function outside of the = current code
  3. Wrap it with tests
  4. When we have enough confidence on the tests,= we refactor the function to use the new Tree
  5. We refactor the function to become more read= able
  6. Start over

000= 4 Architecture

The proposed structure is our v= ision for the application, this is not the state we will be in when this pa= tch lands.
For now the only change we are doing is move the javascript i= nto static/js/FEATURE_NAME. This is a first step in= the
direction that we would like to see the product heading.

Even if we decide to keep using= the same architecture the move of Javascript to a centralized place willnot break any plugability as webpack can retrieve all the Javascript from= any place in the code.

Have a nice weekend
Joao

=E2=80=8B

--000000000000fe8537056ba24cb5-- --000000000000fe8539056ba24cb6 Content-Type: image/png; name="Screen Shot 2018-05-04 at 4.06.17 PM.png" Content-Disposition: inline; filename="Screen Shot 2018-05-04 at 4.06.17 PM.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_jgsi60kn0 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 E02Tk1+r0GYfAdD2flqXSw2H6vd65MyIZuatkM254F/sH8L/BuHvqv32AAAACXBIWXMAABYlAAAW JQFJUiTwAAABnmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJh ZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxu czpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAg ICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJo dHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVu c2lvbj4xMjg0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGlt ZW5zaW9uPjc2ODwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9u PgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo2e0g7AAAAHGlET1QAAAACAAAAAAAAAYAAAAAo AAABgAAAAYAAALAgQlVMKgAAQABJREFUeAHsnQmwLUWR9/uBwEMQBGcUUEHcUVEH11CURQjFJZRB CZwRF4QxwgVDR0BmQEDcEEXDDUN9grKJAjooirIIIorjggoiKIKi4xNcQEDlfSjnq39DnqzTp6q7 KrvOvX3u/XfEeye7KjOr6tfVVd15q7tXjNxW9dz+3//7f7WHddddt6enO82H7g+1/NWvflVttdVW y6K9pY8H+fXvNux//RiSH/mlEuD4l0oqrEd+YS6pqeSXSiqsR35hLqmp5JdKKqxHfmEuqankl0oq rEd+YS6pqeSXSiqsR35hLqmpC8lvBQOCqYdlUo8BhUkeuXvkl0tsUp/8Jnnk7pFfLrFJffKb5JG7 R365xCb1yW+SR+4e+eUSm9Qnv0keuXvkl0tsUp/8Jnnk7pFfLrFJffKb5JG7R365xCb1yW+SR+5e jB8Dgrkk79KPAbW4Kx0BHro/MCI/S09RG/JTFhaJ/CzU1Ib8lIVFIj8LNbUhP2VhkcjPQk1tyE9Z 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 VYH8WvF0ZpJfJ6JWBfJrxdOZuVT4XXLJJeMABIIJbf/OOOOMKS6HuQ+MtNlInh+kkIBZLLjRlY9A FQJX4hu/sspN0hAIQ5BENgmYxMqUfNj7AcETTzxxohz/gxbiu/kr9ZcgFObzroCgBFb9wJH4laCk +EO6BASlvbHfT33qU+KmDhiGysE7CJtf05VAo/jN4YkAV/MrueNKOCHUHuQjmCbl4bdZB6Sdfvrp vqtgwM1X8MvCexSxIdi95ZZbTpSF/uk/uuzXIyZj1SgexcZ7KuWdf6Ir/V2Cf/5xRUBTVtaKfvP3 vve970TgU/pnSv+VsoVD6etJ+F0q458wavslvzY63Xnk182oTYP82uh055FfN6M2DfJro9Odt5D8 GBDsPh5BDV7QBLEkJ5JfMqqgIvkFsSQnkl8yqqAi+QWxJCcuJX4IaLz5zW+eCJD4AYrdd9+9Xh0X goNVTW94wxumbBFgwscoJHDnP2L5+c9/vtZHUCS04q4rH/VAuUcfffRUuag33p2H1Y3+9vOf/7zW DX0VF3r+akk8LoqLOGy//e1vJ1ZB+kG5WiHwn9RfAkbwdcUVV0TLx8o9ed+fH8AT14cffnhtK/6Q 7gcEJd8/ZpBRD3/zVwj678hD/fCewFI8ERB8/OMfX9c5tT1ST2HXbAsCYeeff76ojX8POOCAuhw8 zhvasNIPvuQ9iqJz1FFH1elSjgTR0A8kaCp5+N1jjz3qlahYGSjpCA4jyAh+/mPVyBd/Uj95bFvK xypcHE/x5f++9KUvnQgGwian/15++eVSTP2L+uFfyW0pjX9dXMivi1B7Pvm18+nKJb8uQu355NfO pyuX/LoItecvJL8VqIq7mOi1uff91PbrrrtuLz9iPHR/qOevfvWraquttpIq9/odentL14/8enWX 2pj9rx9D8iO/VAIc/9JIuZVilQuIVG6lVG2wYsWKygXtqk033bTeb7s+uPHGG6sbbrgBf6Cs3Gqy yq1wai201PmLct2jvBWO8UYbbVRtscUW1WabbdZadldms7+4VWAV2KBtd7/73auVK1d2uZjIb/qb yDTuHHvssZVb/Va5AGd11VVXVe7dc5ULglbu4rOu44Mf/OBq/fXXT/Lu1w884QdpsLfw9P0lVaCh 5AKXlVsRV/fDddZZp9pkk00qt6KvWm+99Rqa9l30P/RrF1iu1l577WrjjTeecOYCuJULVlcov8nA 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 /isP+78g7v+Nc/9JIIGfrsD+L4jff//99AtYfX85+3472CN9/n75K8PTB6UNEkjgzQRW3e/3F/BI 97/Vn0f5zb8FOn9zhvndx6+BoHTtQEq4z7X88jsq0Beao1KX1+V32eXoo/kdlbq8Lr/LLkcfze+o 1OV1+V12OfpofkelLq/L77LL0UfzOyp1eV1+l12OPprfUanL6/K77HL00d+lXwPBoz+Vb9Y10PoG 5MZf5ncj2DfL8/sG5MZf5ncj2DfL8/sG5MZf5ncj2DfL8/sG5MZf5ncj2DfL8/sG5MZf5ncj2DfL 8/sG5MZf5ncj2DfL8/sG5MZf5ncj2DfL8/sG5MZfjvwaCN4I+WX5CPTL87f8c/UE+Oz77Tb53XJC Xq7N76XJLY/kd4vWy7X5vTS55ZH8btF6uTa/lya3PJLfLVov1+b30uSWR/K7Revl2vxemtzySH63 aL1cm99Lk1seye8WrZdr83tpcssjI78GgrcoPls7An225HA8+wBv9fXtMPkdPh4XF+Z3keXwg/kd prq4ML+LLIcfzO8w1cWF+V1kOfxgfoepLi7M7yLL4QfzO0x1cWF+F1kOP5jfYaqLC/O7yHL4wfwO U11cmN9FlsMPjvwaCB4m/HrhCPTrVcd+tXrgdvb9dpX8jp2N0ar8RjLHHs/vmNNoVX4jmWOP53fM abQqv5HMscfzO+Y0WpXfSObY4/kdcxqtym8kc+zx/I45jVblN5I59nh+x5xGq/IbyRx7fOTXQPCY 34tVI9AXCw88cPYB3urr20nyO3AwrizJ7wrOgafyO4B0ZUl+V3AOPJXfAaQrS/K7gnPgqfwOIF1Z kt8VnANP5XcA6cqS/K7gHHgqvwNIV5bkdwXnwFP5HUC6siS/KzgHnhr5NRA8gHdpyQj00trXHls9 cDv7frtHfq+diuvP53fd57Vn83tN6Prz+V33ee3Z/F4Tuv58ftd9Xns2v9eErj+f33Wf157N7zWh 68/nd93ntWfze03o+vP5Xfd57dn8XhO6/nx+131ee3bk10DwNbnB8yPQwfKrD599gLf6+naM/K4e iVefzO9VoqsL8rvK8+qT+b1KdHVBfld5Xn0yv1eJri7I7yrPq0/m9yrR1QX5XeV59cn8XiW6uiC/ qzyvPpnfq0RXF+R3lefVJ/N7lejqgpFfA8GrbOMnR6DjxviZ1QO3s++3S+Q3Pg9HnsnviNJ4TX5j myPP5HdEabwmv7HNkWfyO6I0XpPf2ObIM/kdURqvyW9sc+SZ/I4ojdfkN7Y58kx+R5TGa/Ib2xx5 Jr8jSuM1I78GgmOzq8+MQK+WBk+efYC3+vp2hvwGh+Hgw/kdhBosy28Ac/Dh/A5CDZblN4A5+HB+ B6EGy/IbwBx8OL+DUINl+Q1gDj6c30GowbL8BjAHH87vINRgWX4DmIMP53cQarBs5NdAcAD22sMj 0Nd6l55fPXA7+367QX6XTsLxx/I7bnVpZX6XVI4/lt9xq0sr87ukcvyx/I5bXVqZ3yWV44/ld9zq 0sr8Lqkcfyy/41aXVuZ3SeX4Y/kdt7q0Mr9LKscfy++41aWVI78Ggpe0Djw2Aj1QfbHk7AO81de3 A+T34hjc9EB+N3G9WJzfC5KbHsjvJq4Xi/N7QXLTA/ndxPVicX4vSG56IL+buF4szu8FyU0P5HcT 14vF+b0guemB/G7ierE4vxckNz2Q301cLxaP/BoIvqA69sAI9Fj761WrB25n329/9fl9fQZu/VV+ t4p9vT6/rz1u/VV+t4p9vT6/rz1u/VV+t4p9vT6/rz1u/VV+t4p9vT6/rz1u/VV+t4p9vT6/rz1u /VV+t4p9vT6/rz1u/VV+t4p9vX7k10Dwa6fDvxqBHt7g2cKzD/BWX9/+0vN7dgBEzE+gPavk9wxD xPwE2rNKfs8wRMxPoD2r5PcMQ8T8BNqzSn7PMETMT6A9q+T3DEPE/ATas0p+zzBEzE+gPauM/BoI PkO6JY5Ab9njy9rVA7ez77e/7vy+/PTdP/Nzbl9a+X2RcP/Mz7l9aeX3RcL9Mz/n9qWV3xcJ98/8 nNuXVn5fJNw/83NuX1r5fZFw/8zPuX1p5fdFwv0zP+f2pTXyayD4RejGf45Ab9zm0/KzD/BWX9/+ ovMzJ4VOfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU6OSHhUkj vwaCRnPrjEDNdqsHbmffbzfKz5wUOvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWFS fkaNTn5YmJSfUaOTHxYmjfzeffz48Qez4aN3Pnz48PT+/ftHZ9CvPz9N96mYX35zAnPtzl9+cwJz 7c5ffnMCc+3OX35zAnPtzl9+cwJz7c5ffnMCc+3O3338GghK1w6khPtcyy+/OYG5ducvvzmBuXbn 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 1Ojkh4VJ+Rk1OvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSSO/BoJGc+uMQM12Zx/grb6+3Sg/ c1Lo5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFhUn5GjU5+WJg08msg aDS3zgjUbLd64Hb2/Xaj/MxJoZMfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU 6OSHhUn5GTU6+WFh0sivgaDR3DojULPd2Qd4q69vN8rPnBQ6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn 1Ojkh4VJ+Rk1OvlhYVJ+Ro1OfliYlJ9Ro5MfFiaN/BoIGs2tMwI1260euJ19v90oP3NS6OSHhUn5 GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn1Ojkh4VJ+Rk1OvlhYVJ+Ro1OfliYNPJrIGg0t84I1Gx3 9gHe6uvbjfIzJ4VOfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU 6OSHhUkjvwaCRnPrjEDNdqsHbmffbzfKz5wUOvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSfkZ NTr5YWFSfkaNTn5YmJSfUaOTHxYmjfwaCBrNrTMCNdudfYC3+vp2o/zMSaGTHxYm5WfU6OSHhUn5 GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn1Ojkh4VJ+Rk1OvlhYdLIr4Gg0dw6I1Cz3eqB29n3243y MyeFTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJuVn1Ojkh4VJI78G gkZz64xAzXZnH+Ctvr7dKD9zUujkh4VJ+Rk1OvlhYVJ+Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSfkZ NTr5YWFSfkaNTn5YmDTyayBoNLfOCNRst3rgdvb9dqP8zEmhkx8WJuVn1Ojkh4VJ+Rk1OvlhYVJ+ Ro1OfliYlJ9Ro5MfFiblZ9To5IeFSfkZNTr5YWHSyK+BoNHcOiNQs93ZB3irr283ys+cFDr5YWFS fkaNTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFhUn5GjU5+WJiUn1Gjkx8WJo38Gggaza0zAjXb rR64nX2/3Sg/c1Lo5IeFSfkZNTr5YWFSfkaNTn5YmJSfUaOTHxYm5WfU6OSHhUn5GTU6+WFhUn5G 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 y/m5INjtNXdpDnRuYkeD0m+YsfcHAvt1TIQFFtlvAayOpvbrQFlgkf0WwOpoar8OlAUW2W8BrI6m 1xS/Aw44IMQrSkO8CjLEKzWniswo7sUnFYejjjoq3PzmNw/x+y2rIlwHx8KLril+fXa89Pkktmm/ PvL5NvbL2/RZY78+Svk29svb9Fljvz5K+Tb2y9v0WZPzc0Gwj15HmxxoR9O5i0qfcI29P4DYb+60 mNnAfjN55q6031yimQ3sN5Nn7kr7zSWa2cB+M3nmrrym+B1yyCEhPsm32t/48Juw7777BlyBGr+v MMQnFgcUDPF6xSteEV7wghdUcYl/XVP8+liUPp/ENu3XRz7fxn55mz5r7NdHKd/GfnmbPmvs10cp 38Z+eZs+a3J+Lgj20etokwPtaDp3UekTrrH3BxD7zZ0WMxvYbybP3JX2m0s0s4H9ZvLMXWm/uUQz G9hvJs/cldcUv/h9idWt67N2OD6xOJx55plh2223ndVsoXXXFL8+O136fBLbtF8f+Xwb++Vt+qyx Xx+lfBv75W36rLFfH6V8G/vlbfqsyfm5INhHr6NNDrSj6dxFpU+4xt4fQOw3d1rMbGC/mTxzV9pv LtHMBvabyTN3pf3mEs1sYL+ZPHNXXpP84gNWAq4UPOaYY1bs94EHHhie9axnVcXAUt/Rh41ck/xW oLUWlD6ftF8LWPjV809Aa6TYr4EhhPYT0Bop9mtgCKH9BLRGSs7PBcEG0iJhDnSRPlLb0idcY+8P +22/dPS1n/bT3FKW/ZKE9tN+mlvKsl+S0H7aT3NLWddEPzxQBA8qwXcHoviHh77g4Talz4dgeE30 S3Oj/dN+bZHFfrffYl7t1vZriyz2u/0W82q3tl9bZLHf7beYV7v11enngmBbv+fvPiHsCZVpZr8M TM/F9usJlWlmvwxMz8X26wmVaWa/DEzPxfbrCZVpZr8MTM/F9usJlWlmvwxMz8X26wmVaWa/DEzP xfbrCZVpZr8MTM/F9usJlWmW83NBMAM2b3EOdF5e1/rSFeCx9wcD+3XNhP7L7Nffqqul/bpU+i+z X3+rrpb261Lpv8x+/a26WtqvS6X/Mvv1t+pqab8ulf7L7Nffqqul/bpU+i+zX3+rrpb261Lpv8x+ /a26Wub8XBDs0uqxLAfaI3VFk7EX8EqPDwD2WzENFlpgv4W4VjS23wqShRbYbyGuFY3tt4JkoQX2 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 8fv/LUz6Nrha+o0AAAAASUVORK5CYII= --000000000000fe8539056ba24cb6-- --000000000000fe853a056ba24cb7 Content-Type: application/octet-stream; name="0004-Architectural-change.patch" Content-Disposition: attachment; filename="0004-Architectural-change.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jgwlvb370 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hlbWEuanMgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvc2NoZW1h LmpzCmluZGV4IGEwOTYxMGFkLi42ZDAwMzU3OCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3Nj aGVtYS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvc2NoZW1hLmpzCkBAIC0xLDcgKzEsNyBAQAogZGVm aW5lKCdwZ2FkbWluLm5vZGUuc2NoZW1hJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJj ZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICdzb3VyY2VzL3BnYWRtaW4n LCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3Jp ZCcsCi0gICdwZ2FkbWluLm5vZGUuc2NoZW1hLmRpci9jYW5fZHJvcF9jaGlsZCcsCisgICdzb3Vy Y2VzL3NjaGVtYS9jYW5fZHJvcF9jaGlsZCcsCiAgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlv bicsICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyLnByaXZpbGVnZScsCiBdLCBmdW5jdGlvbihnZXR0 ZXh0LCB1cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3Jp ZCwKIGNhbkRyb3BDaGlsZCkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy90YWJs ZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUuanMKaW5kZXggOWEwMjE3NDUuLjRiMDZk Mzc1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9zdGF0aWMvanMvdGFibGUuanMKQEAgLTEsOSArMSw5IEBACiBkZWZpbmUoJ3BnYWRtaW4u bm9kZS50YWJsZScsIFsKLSAgJ3BnYWRtaW4udGFibGVzLmpzL2VuYWJsZV9kaXNhYmxlX3RyaWdn ZXJzJywKKyAgJ3NvdXJjZXMvdGFibGUvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMnLAogICAnc291 cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScs CiAgICd1bmRlcnNjb3JlLnN0cmluZycsICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93 c2VyJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRt aW4uYmFja2dyaWQnLAotICAncGdhZG1pbi50YWJsZXMuanMvc2hvd19hZHZhbmNlZF90YWInLAor ICAnc291cmNlcy90YWJsZS9zaG93X2FkdmFuY2VkX3RhYicsCiAgICdzb3VyY2VzL21lbnUvY2Fu X2NyZWF0ZScsCiAKICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3BnYWRtaW4ubm9k ZS5jb2x1bW4nLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2Rp YWxvZ19mYWN0b3J5LmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ19m YWN0b3J5LmpzCmluZGV4IDUwMDE0MGI4Li44MDZmODY4NyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ19mYWN0b3J5LmpzCisrKyBiL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfZmFjdG9yeS5qcwpAQCAtNyw4ICs3LDggQEAKIC8v CiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLwogCi1pbXBvcnQgKiBhcyBCYWNrdXBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vdG9vbHMv YmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nX3dyYXBwZXInOwotaW1wb3J0IHtSZXN0b3Jl RGlhbG9nV3JhcHBlcn0gZnJvbSAnLi4vLi4vLi4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVz dG9yZV9kaWFsb2dfd3JhcHBlcic7CitpbXBvcnQgKiBhcyBCYWNrdXBEaWFsb2cgZnJvbSAnLi4v YmFja3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBlcic7CitpbXBvcnQge1Jlc3RvcmVEaWFsb2dXcmFw cGVyfSBmcm9tICcuLi9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXInOwogCiBleHBvcnQg Y2xhc3MgRGlhbG9nRmFjdG9yeSB7CiAgIGNvbnN0cnVjdG9yKHBnQnJvd3NlciwgJCwKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZy5q cyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrdXAvYmFja3VwX2RpYWxvZy5qcwpzaW1pbGFy aXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSB3ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGlj L2pzL2JhY2t1cF9kaWFsb2cuanMKcmVuYW1lIHRvIHdlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNr dXAvYmFja3VwX2RpYWxvZy5qcwppbmRleCBjNzRjMzc2Yy4uMTkwMzY3Y2EgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZy5qcworKysg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja3VwL2JhY2t1cF9kaWFsb2cuanMKQEAgLTcsOSAr Nyw5IEBACiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KIAotaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3Rh dGljL2pzL2dldHRleHQnOwotaW1wb3J0IEJhY2tmb3JtIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRp Yy9qcy9iYWNrZm9ybS5wZ2FkbWluJzsKLWltcG9ydCB7RGlhbG9nfSBmcm9tICcuLi8uLi8uLi8u Li9zdGF0aWMvanMvYWxlcnRpZnkvZGlhbG9nJzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJy4uL2dl dHRleHQnOworaW1wb3J0IEJhY2tmb3JtIGZyb20gJy4uL2JhY2tmb3JtLnBnYWRtaW4nOworaW1w b3J0IHtEaWFsb2d9IGZyb20gJy4uL2FsZXJ0aWZ5L2RpYWxvZyc7CiAKIGV4cG9ydCBjbGFzcyBC YWNrdXBEaWFsb2cgZXh0ZW5kcyBEaWFsb2cgewogICBjb25zdHJ1Y3RvcihwZ0Jyb3dzZXIsICQs IGFsZXJ0aWZ5LCBCYWNrdXBNb2RlbCwgYmFja2Zvcm0gPSBCYWNrZm9ybSkgewpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nX3dyYXBw ZXIuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBl ci5qcwpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSB3ZWIvcGdhZG1pbi90b29scy9i YWNrdXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2dfd3JhcHBlci5qcwpyZW5hbWUgdG8gd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2JhY2t1cC9iYWNrdXBfZGlhbG9nX3dyYXBwZXIuanMKaW5kZXggMmNl YmUzZDEuLjdiNjI1MGY3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3Rh dGljL2pzL2JhY2t1cF9kaWFsb2dfd3JhcHBlci5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvYmFja3VwL2JhY2t1cF9kaWFsb2dfd3JhcHBlci5qcwpAQCAtNywxMiArNywxMiBAQAogLy8K IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCiAKLWltcG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudH0gZnJvbSAn Li4vLi4vLi4vLi4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUnOworaW1wb3J0IHtn ZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50fSBmcm9tICcuLi90cmVlL3BnYWRtaW5fdHJl ZV9ub2RlJzsKIGltcG9ydCBheGlvcyBmcm9tICdheGlvcy9pbmRleCc7Ci1pbXBvcnQgZ2V0dGV4 dCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvZ2V0dGV4dCc7Ci1pbXBvcnQgdXJsX2ZvciBm cm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvdXJsX2Zvcic7CitpbXBvcnQgZ2V0dGV4dCBmcm9t ICcuLi9nZXR0ZXh0JzsKK2ltcG9ydCB1cmxfZm9yIGZyb20gJy4uL3VybF9mb3InOwogaW1wb3J0 IF8gZnJvbSAndW5kZXJzY29yZSc7Ci1pbXBvcnQge0RpYWxvZ1dyYXBwZXJ9IGZyb20gJy4uLy4u Ly4uLy4uL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfd3JhcHBlcic7CitpbXBvcnQge0RpYWxv Z1dyYXBwZXJ9IGZyb20gJy4uL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVyJzsKIAogZXhwb3J0IGNs YXNzIEJhY2t1cERpYWxvZ1dyYXBwZXIgZXh0ZW5kcyBEaWFsb2dXcmFwcGVyIHsKICAgY29uc3Ry dWN0b3IoZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IsIGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2cs CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL21lbnVfdXRp bHMuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja3VwL21lbnVfdXRpbHMuanMKc2ltaWxh cml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRp Yy9qcy9tZW51X3V0aWxzLmpzCnJlbmFtZSB0byB3ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja3Vw L21lbnVfdXRpbHMuanMKaW5kZXggZmRmNDAwYWYuLmQzYzFiMTQzIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL21lbnVfdXRpbHMuanMKKysrIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2JhY2t1cC9tZW51X3V0aWxzLmpzCkBAIC03LDcgKzcsNyBAQAogLy8K IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCiAKLWltcG9ydCB7aXNQcm92aWRlZERhdGFWYWxpZH0gZnJvbSAnLi4vLi4vLi4vLi4v c3RhdGljL2pzL21lbnUvbWVudV9lbmFibGVkJzsKK2ltcG9ydCB7aXNQcm92aWRlZERhdGFWYWxp ZH0gZnJvbSAnLi4vbWVudS9tZW51X2VuYWJsZWQnOwogCiBleHBvcnQgY29uc3QgYmFja3VwU3Vw cG9ydGVkTm9kZXMgPSBbCiAgICdkYXRhYmFzZScsICdzY2hlbWEnLCAndGFibGUnLCAncGFydGl0 aW9uJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9n ZXRfcGFuZWxfdGl0bGUuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvZGF0YWdyaWQvZ2V0X3Bh bmVsX3RpdGxlLmpzCnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIHdlYi9wZ2FkbWlu L3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9nZXRfcGFuZWxfdGl0bGUuanMKcmVuYW1lIHRvIHdl Yi9wZ2FkbWluL3N0YXRpYy9qcy9kYXRhZ3JpZC9nZXRfcGFuZWxfdGl0bGUuanMKaW5kZXggNjRi M2EzZDIuLmY1YTU2NjRkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9z dGF0aWMvanMvZ2V0X3BhbmVsX3RpdGxlLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9k YXRhZ3JpZC9nZXRfcGFuZWxfdGl0bGUuanMKQEAgLTcsNyArNyw3IEBACiAvLwogLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAot aW1wb3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyfSBmcm9tICcuLi8uLi8u Li8uLi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CitpbXBvcnQge2dldFRyZWVO b2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXJ9IGZyb20gJy4uL3RyZWUvcGdhZG1pbl90cmVlX25v ZGUnOwogCiBmdW5jdGlvbiBnZXREYXRhYmFzZUxhYmVsKHBhcmVudERhdGEpIHsKICAgcmV0dXJu IHBhcmVudERhdGEuZGF0YWJhc2UgPyBwYXJlbnREYXRhLmRhdGFiYXNlLmxhYmVsCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19kYXRhLmpzIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL2RhdGFncmlkL3Nob3dfZGF0YS5qcwpzaW1pbGFyaXR5IGlu ZGV4IDkyJQpyZW5hbWUgZnJvbSB3ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMv c2hvd19kYXRhLmpzCnJlbmFtZSB0byB3ZWIvcGdhZG1pbi9zdGF0aWMvanMvZGF0YWdyaWQvc2hv d19kYXRhLmpzCmluZGV4IDM3M2M5N2NkLi5iNmQ3YzUyYiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfZGF0YS5qcworKysgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvZGF0YWdyaWQvc2hvd19kYXRhLmpzCkBAIC02LDkgKzYsOSBAQAogLy8gVGhp cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAvLwog Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8KLWltcG9ydCBnZXR0ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0 JzsKLWltcG9ydCB1cmxfZm9yIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy91cmxfZm9yJzsK LWltcG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllcn0gZnJvbSAnLi4vLi4v Li4vLi4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUnOworaW1wb3J0IGdldHRleHQg ZnJvbSAnLi4vZ2V0dGV4dCc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICcuLi91cmxfZm9yJzsKK2lt cG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllcn0gZnJvbSAnLi4vdHJlZS9w Z2FkbWluX3RyZWVfbm9kZSc7CiAKIGV4cG9ydCBmdW5jdGlvbiBzaG93RGF0YUdyaWQoCiAgIGRh dGFncmlkLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pz L3Nob3dfcXVlcnlfdG9vbC5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9kYXRhZ3JpZC9zaG93 X3F1ZXJ5X3Rvb2wuanMKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1lIGZyb20gd2ViL3BnYWRt aW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbC5qcwpyZW5hbWUgdG8g d2ViL3BnYWRtaW4vc3RhdGljL2pzL2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbC5qcwppbmRleCAw ZWIxMmI4Yi4uYTFiNDg3NGMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlk L3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pz L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbC5qcwpAQCAtNyw5ICs3LDkgQEAKIC8vCiAvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwog Ci1pbXBvcnQgZ2V0dGV4dCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvZ2V0dGV4dCc7Ci1p bXBvcnQgdXJsX2ZvciBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvdXJsX2Zvcic7Ci1pbXBv cnQge2dldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXJ9IGZyb20gJy4uLy4uLy4uLy4u L3N0YXRpYy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20g Jy4uL2dldHRleHQnOworaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vdXJsX2Zvcic7CitpbXBvcnQg e2dldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXJ9IGZyb20gJy4uL3RyZWUvcGdhZG1p bl90cmVlX25vZGUnOwogCiBmdW5jdGlvbiBoYXNEYXRhYmFzZUluZm9ybWF0aW9uKHBhcmVudERh dGEpIHsKICAgcmV0dXJuIHBhcmVudERhdGEuZGF0YWJhc2U7CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9ncmFudF93aXphcmQvc3RhdGljL2pzL21lbnVfdXRpbHMuanMgYi93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvZ3JhbnQvd2l6YXJkL21lbnVfdXRpbHMuanMKc2ltaWxhcml0eSBpbmRl eCAxMDAlCnJlbmFtZSBmcm9tIHdlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMv anMvbWVudV91dGlscy5qcwpyZW5hbWUgdG8gd2ViL3BnYWRtaW4vc3RhdGljL2pzL2dyYW50L3dp emFyZC9tZW51X3V0aWxzLmpzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVu YW5jZS9zdGF0aWMvanMvbWVudV91dGlscy5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9tYWlu dGVuYW5jZS9tZW51X3V0aWxzLmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB3 ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS9zdGF0aWMvanMvbWVudV91dGlscy5qcwpyZW5h bWUgdG8gd2ViL3BnYWRtaW4vc3RhdGljL2pzL21haW50ZW5hbmNlL21lbnVfdXRpbHMuanMKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL21lbnVfdXRpbHMu anMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvcmVzdG9yZS9tZW51X3V0aWxzLmpzCnNpbWlsYXJp dHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB3ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRp Yy9qcy9tZW51X3V0aWxzLmpzCnJlbmFtZSB0byB3ZWIvcGdhZG1pbi9zdGF0aWMvanMvcmVzdG9y ZS9tZW51X3V0aWxzLmpzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0 YXRpYy9qcy9yZXN0b3JlX2RpYWxvZy5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9yZXN0b3Jl L3Jlc3RvcmVfZGlhbG9nLmpzCnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIHdlYi9w Z2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nLmpzCnJlbmFtZSB0 byB3ZWIvcGdhZG1pbi9zdGF0aWMvanMvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZy5qcwppbmRleCA0 ODg0ZDkwMS4uNzJmODkwNDUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUv c3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9y ZXN0b3JlL3Jlc3RvcmVfZGlhbG9nLmpzCkBAIC03LDEwICs3LDEwIEBACiAvLwogLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAot aW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2dldHRleHQnOworaW1w b3J0IGdldHRleHQgZnJvbSAnLi4vZ2V0dGV4dCc7CiBpbXBvcnQge3NwcmludGZ9IGZyb20gJ3Nw cmludGYtanMnOwotaW1wb3J0IEJhY2tmb3JtIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9i YWNrZm9ybS5wZ2FkbWluJzsKLWltcG9ydCB7RGlhbG9nfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0 aWMvanMvYWxlcnRpZnkvZGlhbG9nJzsKK2ltcG9ydCBCYWNrZm9ybSBmcm9tICcuLi9iYWNrZm9y bS5wZ2FkbWluJzsKK2ltcG9ydCB7RGlhbG9nfSBmcm9tICcuLi9hbGVydGlmeS9kaWFsb2cnOwog CiBleHBvcnQgY2xhc3MgUmVzdG9yZURpYWxvZyBleHRlbmRzIERpYWxvZyB7CiAgIGNvbnN0cnVj dG9yKHBnQnJvd3NlciwgJCwgYWxlcnRpZnksIFJlc3RvcmVNb2RlbCwgYmFja2Zvcm0gPSBCYWNr Zm9ybSkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMv cmVzdG9yZV9kaWFsb2dfd3JhcHBlci5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9yZXN0b3Jl L3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXIuanMKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZy b20gd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2dfd3Jh cHBlci5qcwpyZW5hbWUgdG8gd2ViL3BnYWRtaW4vc3RhdGljL2pzL3Jlc3RvcmUvcmVzdG9yZV9k aWFsb2dfd3JhcHBlci5qcwppbmRleCA4NDVkYTdhMy4uMTNkNzgxZmIgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXIu anMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2dfd3Jh cHBlci5qcwpAQCAtMSw5ICsxLDkgQEAKLWltcG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9t RWxlbWVudH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25v ZGUnOworaW1wb3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50fSBmcm9tICcuLi90 cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKIGltcG9ydCBheGlvcyBmcm9tICdheGlvcy9pbmRleCc7 CiBpbXBvcnQgXyBmcm9tICd1bmRlcnNjb3JlJzsKLWltcG9ydCBnZXR0ZXh0IGZyb20gJy4uLy4u Ly4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsKLWltcG9ydCB1cmxfZm9yIGZyb20gJy4uLy4uLy4u Ly4uL3N0YXRpYy9qcy91cmxfZm9yJzsKLWltcG9ydCB7RGlhbG9nV3JhcHBlcn0gZnJvbSAnLi4v Li4vLi4vLi4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVyJzsKK2ltcG9ydCBnZXR0 ZXh0IGZyb20gJy4uL2dldHRleHQnOworaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vdXJsX2Zvcic7 CitpbXBvcnQge0RpYWxvZ1dyYXBwZXJ9IGZyb20gJy4uL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVy JzsKIAogZXhwb3J0IGNsYXNzIFJlc3RvcmVEaWFsb2dXcmFwcGVyIGV4dGVuZHMgRGlhbG9nV3Jh cHBlciB7CiAgIGNvbnN0cnVjdG9yKGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yLCBkaWFsb2dUaXRs ZSwgdHlwZU9mRGlhbG9nLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL2Nhbl9kcm9wX2NoaWxk LmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NjaGVtYS9jYW5fZHJvcF9jaGlsZC5qcwpzaW1p bGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL2Nhbl9kcm9wX2NoaWxk LmpzCnJlbmFtZSB0byB3ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2NoZW1hL2Nhbl9kcm9wX2NoaWxk LmpzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL2VuYWJsZV9kaXNhYmxlX3RyaWdn ZXJzLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RhYmxlL2VuYWJsZV9kaXNhYmxlX3RyaWdn ZXJzLmpzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB3ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGlj L2pzL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJzLmpzCnJlbmFtZSB0byB3ZWIvcGdhZG1pbi9zdGF0 aWMvanMvdGFibGUvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMuanMKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9zdGF0aWMvanMvc2hvd19hZHZhbmNlZF90YWIuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvdGFibGUvc2hvd19hZHZhbmNlZF90YWIuanMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFt ZSBmcm9tIHdlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvc2hvd19hZHZhbmNlZF90YWIuanMKcmVuYW1lIHRv IHdlYi9wZ2FkbWluL3N0YXRpYy9qcy90YWJsZS9zaG93X2FkdmFuY2VkX3RhYi5qcwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXAuanMgYi93ZWIv cGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cC5qcwppbmRleCBkNzRlZDZkZC4u YjIwYjdlNmMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMv YmFja3VwLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3Vw LmpzCkBAIC0zLDggKzMsOCBAQCBkZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJj ZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0cmlu ZycsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAnYmFja2JvbmUnLCAncGdhZG1pbi5iYWNrZ3JpZCcs CiAgICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYnJvd3NlcicsICdzb3VyY2VzL3V0aWxz JywKLSAgJ3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvbWVudV91dGlscycsCi0gICd0b29scy9iYWNr dXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2cnLAorICAnc291cmNlcy9iYWNrdXAvbWVudV91dGls cycsCisgICdzb3VyY2VzL2JhY2t1cC9iYWNrdXBfZGlhbG9nJywKICAgJ3NvdXJjZXMvbWVudS9t ZW51X2VuYWJsZWQnLAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMs IGFsZXJ0aWZ5LCBCYWNrYm9uZSwgQmFja2dyaWQsIEJhY2tmb3JtLCBwZ0Jyb3dzZXIsCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMg Yi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMKaW5kZXgg NTIwYTljZTUuLjY3NmYxOTAxIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3Jp ZC9zdGF0aWMvanMvZGF0YWdyaWQuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQv c3RhdGljL2pzL2RhdGFncmlkLmpzCkBAIC0yLDkgKzIsOSBAQCBkZWZpbmUoJ3BnYWRtaW4uZGF0 YWdyaWQnLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVy eScsICd1bmRlcnNjb3JlJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdzb3VyY2VzL3BnYWRt aW4nLCAnYnVuZGxlZF9jb2RlbWlycm9yJywKICAgJ3NvdXJjZXMvc3FsZWRpdG9yX3V0aWxzJywg J2JhY2tib25lJywKLSAgJ3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X2RhdGEnLAotICAn dG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2dldF9wYW5lbF90aXRsZScsCi0gICd0b29scy9kYXRh Z3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sJywKKyAgJ3NvdXJjZXMvZGF0YWdyaWQvc2hv d19kYXRhJywKKyAgJ3NvdXJjZXMvZGF0YWdyaWQvZ2V0X3BhbmVsX3RpdGxlJywKKyAgJ3NvdXJj ZXMvZGF0YWdyaWQvc2hvd19xdWVyeV90b29sJywKICAgJ3djZG9ja2VyJywKIF0sIGZ1bmN0aW9u KAogICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBhbGVydGlmeSwgcGdBZG1pbiwgY29kZW1pcnJv ciwgc3FsRWRpdG9yVXRpbHMsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9ncmFudF93 aXphcmQvc3RhdGljL2pzL2dyYW50X3dpemFyZC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50 X3dpemFyZC9zdGF0aWMvanMvZ3JhbnRfd2l6YXJkLmpzCmluZGV4IGNmMjM0ZjFkLi41NmViMzc4 YSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9n cmFudF93aXphcmQuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRp Yy9qcy9ncmFudF93aXphcmQuanMKQEAgLTMsNyArMyw3IEBAIGRlZmluZShbCiAgICdzb3VyY2Vz L2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ2Jh Y2tib25lJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdwZ2FkbWluLmJhY2tncmlkJywgJ3Bn YWRtaW4uYmFja2Zvcm0nLAogICAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5u b2RlJywKLSAgJ3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMvbWVudV91dGlscycsCisgICdz b3VyY2VzL2dyYW50L3dpemFyZC9tZW51X3V0aWxzJywKICAgJ3NvdXJjZXMvbWVudS9tZW51X2Vu YWJsZWQnLAogCiAgICdiYWNrZ3JpZC5zZWxlY3QuYWxsJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9qcy9tYWludGVuYW5jZS5qcyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9qcy9tYWludGVuYW5jZS5qcwppbmRleCA5MDky ZWI3My4uZTZhYTY5ZTMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNl L3N0YXRpYy9qcy9tYWludGVuYW5jZS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVu YW5jZS9zdGF0aWMvanMvbWFpbnRlbmFuY2UuanMKQEAgLTIsNyArMiw3IEBAIGRlZmluZShbCiAg ICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNj b3JlJywKICAgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdzb3Vy Y2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ2JhY2tib25lJywKICAgJ2JhY2tncmlk JywgJ2JhY2tmb3JtJywgJ3NvdXJjZXMvdXRpbHMnLAotICAndG9vbHMvbWFpbnRlbmFuY2Uvc3Rh dGljL2pzL21lbnVfdXRpbHMnLAorICAnc291cmNlcy9tYWludGVuYW5jZS9tZW51X3V0aWxzJywK ICAgJ3NvdXJjZXMvbWVudS9tZW51X2VuYWJsZWQnLAogICAncGdhZG1pbi5iYWNrZm9ybScsICdw Z2FkbWluLmJhY2tncmlkJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5ub2RlLnVpJywKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmUuanMgYi93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlLmpzCmluZGV4IGVhYTdhMTVl Li5iNWQ2OTEzYSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMv anMvcmVzdG9yZS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9y ZXN0b3JlLmpzCkBAIC0yLDkgKzIsOSBAQCBkZWZpbmUoJ3Rvb2xzLnJlc3RvcmUnLCBbCiAgICdz b3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3Jl JywgJ2JhY2tib25lJywKICAgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4uYWxlcnRpZnlq cycsICdwZ2FkbWluLmJyb3dzZXInLAogICAncGdhZG1pbi5iYWNrZ3JpZCcsICdwZ2FkbWluLmJh Y2tmb3JtJywgJ3NvdXJjZXMvdXRpbHMnLAotICAndG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvbWVu dV91dGlscycsCisgICdzb3VyY2VzL3Jlc3RvcmUvbWVudV91dGlscycsCiAgICdzb3VyY2VzL21l bnUvbWVudV9lbmFibGVkJywKLSAgJ3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlh bG9nJywKKyAgJ3NvdXJjZXMvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZycsCiBdLCBmdW5jdGlvbigK ICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIFMsIGFsZXJ0aWZ5LCBwZ0Jyb3dz ZXIsIEJhY2tncmlkLCBCYWNrZm9ybSwKIGNvbW1vblV0aWxzLCBtZW51VXRpbHMsIG1lbnVFbmFi bGVkLCByZXN0b3JlRGlhbG9nCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3NwZWMuanMKaW5kZXggMjY1NTA1OWQuLmFhZTE4ZWViIDEw MDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9n X3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFja3VwX2Rp YWxvZ19zcGVjLmpzCkBAIC02LDcgKzYsNyBAQAogLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLWltcG9ydCB7QmFja3Vw RGlhbG9nfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFj a3VwX2RpYWxvZyc7CitpbXBvcnQge0JhY2t1cERpYWxvZ30gZnJvbSAnLi4vLi4vLi4vcGdhZG1p bi9zdGF0aWMvanMvYmFja3VwL2JhY2t1cF9kaWFsb2cnOwogaW1wb3J0IHtUcmVlRmFrZX0gZnJv bSAnLi4vdHJlZS90cmVlX2Zha2UnOwogCiBjb25zdCBjb250ZXh0ID0gZGVzY3JpYmU7CmRpZmYg LS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3dy YXBwZXJfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL2JhY2t1cF9k aWFsb2dfd3JhcHBlcl9zcGVjLmpzCmluZGV4IDU4NzA1MzE4Li43M2U0NTNlNSAxMDA2NDQKLS0t IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFja3VwX2RpYWxvZ193cmFwcGVy X3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFja3VwX2Rp YWxvZ193cmFwcGVyX3NwZWMuanMKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQge1RyZWVGYWtlfSBm cm9tICcuLi90cmVlL3RyZWVfZmFrZSc7Ci1pbXBvcnQge0JhY2t1cERpYWxvZ1dyYXBwZXJ9IGZy b20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9n X3dyYXBwZXInOworaW1wb3J0IHtCYWNrdXBEaWFsb2dXcmFwcGVyfSBmcm9tICcuLi8uLi8uLi9w Z2FkbWluL3N0YXRpYy9qcy9iYWNrdXAvYmFja3VwX2RpYWxvZ193cmFwcGVyJzsKIGltcG9ydCBh eGlvcyBmcm9tICdheGlvcy9pbmRleCc7CiBpbXBvcnQgTW9ja0FkYXB0ZXIgZnJvbSAnYXhpb3Mt bW9jay1hZGFwdGVyJzsKIGltcG9ydCB7RmFrZU1vZGVsfSBmcm9tICcuLi9mYWtlX21vZGVsJzsK ZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL2dsb2JhbF9zZXJ2 ZXJfYmFja3VwX2RpYWxvZ19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNr dXAvZ2xvYmFsX3NlcnZlcl9iYWNrdXBfZGlhbG9nX3NwZWMuanMKaW5kZXggODZkZjY3MmUuLjY3 Y2NhOWRiIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9nbG9i YWxfc2VydmVyX2JhY2t1cF9kaWFsb2dfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZh c2NyaXB0L2JhY2t1cC9nbG9iYWxfc2VydmVyX2JhY2t1cF9kaWFsb2dfc3BlYy5qcwpAQCAtNiw3 ICs2LDcgQEAKIC8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQogLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi1pbXBvcnQge0JhY2t1cERpYWxvZ30gZnJvbSAnLi4vLi4v Li4vcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2cnOworaW1wb3J0 IHtCYWNrdXBEaWFsb2d9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL2JhY2t1cC9i YWNrdXBfZGlhbG9nJzsKIGltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtl JzsKIAogY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9iYWNrdXAvbWVudV91dGlsc19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9iYWNrdXAvbWVudV91dGlsc19zcGVjLmpzCmluZGV4IDk0MzVkNjk5Li5lY2Y4 YWJjZCAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvbWVudV91 dGlsc19zcGVjLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL21lbnVf dXRpbHNfc3BlYy5qcwpAQCAtOCw3ICs4LDcgQEAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIAotaW1wb3J0IHttZW51RW5h YmxlZFNlcnZlcn0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pz L21lbnVfdXRpbHMnOworaW1wb3J0IHttZW51RW5hYmxlZFNlcnZlcn0gZnJvbSAnLi4vLi4vLi4v cGdhZG1pbi9zdGF0aWMvanMvYmFja3VwL21lbnVfdXRpbHMnOwogCiBjb25zdCBjb250ZXh0ID0g ZGVzY3JpYmU7CiAKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Nob3dfYWR2 YW5jZWRfdGFiX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zaG93X2FkdmFuY2Vk X3RhYl9zcGVjLmpzCmluZGV4IGY5NTU5YTQxLi40YjM4MTFhYSAxMDA2NDQKLS0tIGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvc2hvd19hZHZhbmNlZF90YWJfc3BlYy5qcworKysgYi93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9zaG93X2FkdmFuY2VkX3RhYl9zcGVjLmpzCkBAIC03LDcgKzcsNyBA QAogLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCiAKLWltcG9ydCB7c2hvd19hZHZhbmNlZF90YWJ9IGZyb20gJy4uLy4uLy4u Ly4uLy4uLy4uLy4uLy4uL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy9zaG93X2FkdmFuY2VkX3RhYic7CitpbXBv cnQge3Nob3dfYWR2YW5jZWRfdGFifSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wZ2Fk bWluL3N0YXRpYy9qcy90YWJsZS9zaG93X2FkdmFuY2VkX3RhYic7CiAKIGRlc2NyaWJlKCcjc2hv d19hZHZhbmNlZF90YWInLCAoKSA9PiB7CiAgIGxldCB0YWJsZU1vZGVsOwpkaWZmIC0tZ2l0IGEv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9nZXRfcGFuZWxfdGl0bGVfc3BlYy5q cyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvZ2V0X3BhbmVsX3RpdGxlX3Nw ZWMuanMKaW5kZXggOGEzNDRhODQuLjI1OTRlYzk2IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L2RhdGFncmlkL2dldF9wYW5lbF90aXRsZV9zcGVjLmpzCisrKyBiL3dlYi9y ZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvZ2V0X3BhbmVsX3RpdGxlX3NwZWMuanMKQEAg LTcsNyArNyw3IEBACiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotaW1wb3J0IHtnZXRQYW5lbFRpdGxlfSBmcm9tICcu Li8uLi8uLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9nZXRfcGFuZWxfdGl0bGUn OworaW1wb3J0IHtnZXRQYW5lbFRpdGxlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9q cy9kYXRhZ3JpZC9nZXRfcGFuZWxfdGl0bGUnOwogaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4v dHJlZS90cmVlX2Zha2UnOwogaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1p bi9zdGF0aWMvanMvdHJlZS90cmVlJzsKIApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9kYXRhZ3JpZC9zaG93X2RhdGFfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvZGF0YWdyaWQvc2hvd19kYXRhX3NwZWMuanMKaW5kZXggODBkMjVlYjMuLjNlNGZlZWM5 IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3dfZGF0 YV9zcGVjLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hvd19k YXRhX3NwZWMuanMKQEAgLTcsNyArNyw3IEBACiAvLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotaW1wb3J0IHtzaG93RGF0 YUdyaWR9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3No b3dfZGF0YSc7CitpbXBvcnQge3Nob3dEYXRhR3JpZH0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9z dGF0aWMvanMvZGF0YWdyaWQvc2hvd19kYXRhJzsKIGltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4u L3RyZWUvdHJlZV9mYWtlJzsKIGltcG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRt aW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CiAKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvZGF0YWdyaWQvc2hvd19xdWVyeV90b29sX3NwZWMuanMgYi93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbF9zcGVjLmpzCmluZGV4IDY2YmQz N2NlLi5lNTgxMTJjMCAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRh Z3JpZC9zaG93X3F1ZXJ5X3Rvb2xfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbF9zcGVjLmpzCkBAIC04LDcgKzgsNyBAQAogLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KIAogaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOwotaW1wb3J0 IHtzaG93UXVlcnlUb29sfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0 YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wnOworaW1wb3J0IHtzaG93UXVlcnlUb29sfSBmcm9tICcu Li8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy9kYXRhZ3JpZC9zaG93X3F1ZXJ5X3Rvb2wnOwogaW1w b3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVl JzsKIAogY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9nX3NwZWMuanMgYi93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2dfc3BlYy5qcwppbmRleCAxNTZm NTZiYi4uYjRmYzEzNTggMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvcmVz dG9yZS9yZXN0b3JlX2RpYWxvZ19zcGVjLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZ19zcGVjLmpzCkBAIC03LDcgKzcsNyBAQAogLy8KIC8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vCiBpbXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7Ci1pbXBvcnQg e1Jlc3RvcmVEaWFsb2d9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0 aWMvanMvcmVzdG9yZV9kaWFsb2cnOworaW1wb3J0IHtSZXN0b3JlRGlhbG9nfSBmcm9tICcuLi8u Li8uLi9wZ2FkbWluL3N0YXRpYy9qcy9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9nJzsKIAogY29uc3Qg Y29udGV4dCA9IGRlc2NyaWJlOwogCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2dfd3JhcHBlcl9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXJfc3BlYy5qcwppbmRl eCBjMmEzMWQ1NS4uODRkZThlNjIgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZ193cmFwcGVyX3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXJfc3BlYy5qcwpA QCAtNyw3ICs3LDcgQEAKIC8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJl ZS90cmVlX2Zha2UnOwotaW1wb3J0IHtSZXN0b3JlRGlhbG9nV3JhcHBlcn0gZnJvbSAnLi4vLi4v Li4vcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlX2RpYWxvZ193cmFwcGVy JzsKK2ltcG9ydCB7UmVzdG9yZURpYWxvZ1dyYXBwZXJ9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4v c3RhdGljL2pzL3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2dfd3JhcHBlcic7CiBpbXBvcnQgTW9ja0Fk YXB0ZXIgZnJvbSAnYXhpb3MtbW9jay1hZGFwdGVyJzsKIGltcG9ydCBheGlvcyBmcm9tICdheGlv cy9pbmRleCc7CiBpbXBvcnQge0Zha2VNb2RlbH0gZnJvbSAnLi4vZmFrZV9tb2RlbCc7CmRpZmYg LS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NjaGVtYS9jYW5fZHJvcF9jaGlsZF9z cGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zY2hlbWEvY2FuX2Ryb3BfY2hpbGRf c3BlYy5qcwppbmRleCA0NDAzYjI3NC4uMzg4ZGZmYmMgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvc2NoZW1hL2Nhbl9kcm9wX2NoaWxkX3NwZWMuanMKKysrIGIvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zY2hlbWEvY2FuX2Ryb3BfY2hpbGRfc3BlYy5qcwpAQCAtNyw3 ICs3LDcgQEAKIC8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLwogCi1pbXBvcnQge2NhbkRyb3BDaGlsZH0gZnJvbSAnLi4vLi4v Li4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9zdGF0aWMvanMvY2FuX2Ryb3BfY2hpbGQnOworaW1wb3J0IHtjYW5Ecm9wQ2hpbGR9IGZyb20g Jy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3NjaGVtYS9jYW5fZHJvcF9jaGlsZCc7CiBpbXBv cnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7CiAKIGxldCBjb250ZXh0ID0g ZGVzY3JpYmU7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3RhYmxlL2Vu YWJsZV9kaXNhYmxlX3RyaWdnZXJzX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L3RhYmxlL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJzX3NwZWMuanMKaW5kZXggN2JkZDI4NGUuLjc2 N2M3OGE0IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3RhYmxlL2VuYWJs ZV9kaXNhYmxlX3RyaWdnZXJzX3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlw dC90YWJsZS9lbmFibGVfZGlzYWJsZV90cmlnZ2Vyc19zcGVjLmpzCkBAIC0xMiw3ICsxMiw3IEBA IGltcG9ydCBheGlvcyBmcm9tICdheGlvcy9pbmRleCc7CiBpbXBvcnQgewogICBlbmFibGVUcmln Z2VycywKICAgZGlzYWJsZVRyaWdnZXJzLAotfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMv anMvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMnOworfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0 YXRpYy9qcy90YWJsZS9lbmFibGVfZGlzYWJsZV90cmlnZ2Vycyc7CiBpbXBvcnQge1RyZWVGYWtl fSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7CiBpbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8u Li8uLi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3RyZWUnOwogCi0tIAoyLjE2LjIKCg== --000000000000fe853a056ba24cb7 Content-Type: application/octet-stream; name="0003-Extract-test-and-refactor-methods.patch" Content-Disposition: attachment; filename="0003-Extract-test-and-refactor-methods.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jgwlvb3e1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Nv bGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcwppbmRleCA5MDE1ZDhkMi4uNWEzYTRiYzAg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcworKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9jb2xsYXRpb25zL3N0YXRpYy9qcy9jb2xsYXRpb24uanMKQEAgLTEsOCArMSw5IEBACiBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291 cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3VuZGVyc2NvcmUuc3Ry aW5nJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLAorICAnc291cmNlcy9t ZW51L2Nhbl9jcmVhdGUnLAogICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAotXSwgZnVu Y3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyKSB7Citd LCBmdW5jdGlvbihnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIs IGNhbkNyZWF0ZSkgewogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLWNvbGxhdGlvbidd KSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb2xsLWNvbGxhdGlvbiddID0KQEAgLTIy MywzMiArMjI0LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuY29sbGF0aW9uJywgWwogICAgICAg ICB9LAogICAgICAgfSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVt LCBkYXRhKSB7Ci0gICAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBh bGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNl KQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRy ZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVy IHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAg ICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIGNvbGxhdGlv bgotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAg ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWNvbGxhdGlvbicg PT0gZC5fdHlwZSkgewotICAgICAgICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQg b2YgY2F0YWxvZwotICAgICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5w YXJlbnQoaSkgOiBudWxsLAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1E YXRhKHByZXZfaSkgOiBudWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0 YWxvZycpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg fQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAg ICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAg ICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdC cm93c2VyLCAnY29sbC1jb2xsYXRpb24nLCBpdGVtLCBkYXRhKTsKICAgICAgIH0sCiAgICAgfSk7 CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2pzL2RvbWFpbi5qcyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvc3RhdGljL2pzL2RvbWFpbi5qcwppbmRleCA0MDNjYTQ3MS4uMWEzOGIwODMgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvc3RhdGljL2pzL2RvbWFpbi5qcworKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRp Yy9qcy9kb21haW4uanMKQEAgLTIsOSArMiwxMSBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUuZG9t YWluJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnkn LCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1p bi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcsCisgICdz b3VyY2VzL21lbnUvY2FuX2NyZWF0ZScsCiAgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbics CiBdLCBmdW5jdGlvbigKLSAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRt aW4sIHBnQnJvd3NlciwgQmFja2Zvcm0sIEJhY2tncmlkCisgIGdldHRleHQsIHVybF9mb3IsICQs IF8sIEJhY2tib25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3JpZCwKKyAg Y2FuQ3JlYXRlCiApIHsKIAogICAvLyBEZWZpbmUgRG9tYWluIENvbGxlY3Rpb24gTm9kZQpAQCAt Mjk3LDMyICsyOTksNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5kb21haW4nLCBbCiAgICAgICAg IH0sCiAgICAgICB9KSwKICAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0s IGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxv dyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQot ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUs IGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVl IHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8g SWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZG9tYWluCi0gICAgICAg ICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZG9tYWluJyA9PSBkLl90eXBlKSB7 Ci0gICAgICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZwotICAg ICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxs LAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBu dWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGkg PSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/ IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRlZmF1bHQg d2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICAgIHJldHVybiBjYW5DcmVhdGUuY2FuQ3JlYXRlKHBnQnJvd3NlciwgJ2NvbGwtZG9t YWluJywgaXRlbSwgZGF0YSk7CiAgICAgICB9LAogICAgICAgaXNEaXNhYmxlZDogZnVuY3Rpb24o bSl7CiAgICAgICAgIGlmICghbS5pc05ldygpKSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3Rh Ymxlcy9zdGF0aWMvanMvZm9yZWlnbl90YWJsZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3N0YXRp Yy9qcy9mb3JlaWduX3RhYmxlLmpzCmluZGV4IDE2MGRiODNmLi4wZTgyMDM0MyAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvc3RhdGljL2pzL2ZvcmVpZ25fdGFibGUuanMKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv Zm9yZWlnbl90YWJsZXMvc3RhdGljL2pzL2ZvcmVpZ25fdGFibGUuanMKQEAgLTIsOSArMiwxMSBA QAogZGVmaW5lKCdwZ2FkbWluLm5vZGUuZm9yZWlnbl90YWJsZScsIFsKICAgJ3NvdXJjZXMvZ2V0 dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAnYmFja2Jv bmUnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJh Y2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUn LAogICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAogXSwgZnVuY3Rpb24oCi0gIGdldHRl eHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3Jt LCBCYWNrZ3JpZAorICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBCYWNrYm9uZSwgcGdBZG1pbiwg cGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQsCisgIGNhbkNyZWF0ZQogKSB7CiAKICAgaWYg KCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZm9yZWlnbl90YWJsZSddKSB7CkBAIC02NjAsMzIgKzY2 Miw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZvcmVpZ25fdGFibGUnLCBbCiAgICAgICAgIH0s CiAgICAgICB9KSwKICAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRh dGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBj cmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAg ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkg PSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRv IGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYg aXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZm9yZWlnbiB0YWJsZQotICAg ICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAg ICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWZvcmVpZ25fdGFibGUnID09 IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBj YXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVu dChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEo cHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9n JykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0g ICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAg ICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8g YnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdCcm93c2Vy LCAnY29sbC1mb3JlaWduX3RhYmxlJywgaXRlbSwgZGF0YSk7CiAgICAgICB9LAogICAgIH0pOwog CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvc3RhdGljL2pzL2Z0c19jb25maWd1 cmF0aW9uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3N0YXRpYy9qcy9mdHNfY29uZmlndXJh dGlvbi5qcwppbmRleCA4OTgwNjY4MS4uZjJmZTg1YmUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25m aWd1cmF0aW9ucy9zdGF0aWMvanMvZnRzX2NvbmZpZ3VyYXRpb24uanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2Nv bmZpZ3VyYXRpb25zL3N0YXRpYy9qcy9mdHNfY29uZmlndXJhdGlvbi5qcwpAQCAtMSw5ICsxLDEx IEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfY29uZmlndXJhdGlvbicsIFsKICAgJ3NvdXJj ZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAn YmFja2JvbmUnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2Fk bWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAnc291cmNlcy9tZW51L2Nhbl9j cmVhdGUnLAogICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAogXSwgZnVuY3Rpb24oCi0g IGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJh Y2tmb3JtLCBCYWNrZ3JpZAorICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBCYWNrYm9uZSwgcGdB ZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQsCisgIGNhbkNyZWF0ZQogKSB7CiAK ICAgLy8gTW9kZWwgZm9yIHRva2VucyBjb250cm9sCkBAIC01NzgsMzIgKzU4MCw3IEBAIGRlZmlu ZSgncGdhZG1pbi5ub2RlLmZ0c19jb25maWd1cmF0aW9uJywgWwogICAgICAgICB9LAogICAgICAg fSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0g ICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1l bnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwg ZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBw YXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNj aGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIGZ0cyBjb25maWd1cmF0aW9uCi0gICAgICAg ICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZnRzX2NvbmZpZ3VyYXRpb24nID09 IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBj YXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVu dChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEo cHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9n JykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0g ICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAg ICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8g YnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdCcm93c2Vy LCAnY29sbC1mdHNfY29uZmlndXJhdGlvbicsIGl0ZW0sIGRhdGEpOwogICAgICAgfSwKICAgICB9 KTsKICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2RpY3Rpb25hcmllcy9zdGF0aWMvanMvZnRzX2Rp Y3Rpb25hcnkuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mdHNfZGljdGlvbmFyaWVzL3N0YXRpYy9qcy9mdHNfZGljdGlvbmFy eS5qcwppbmRleCBlZDgzZmViMS4uZjFhMzMwZjcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0aW9u YXJpZXMvc3RhdGljL2pzL2Z0c19kaWN0aW9uYXJ5LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0aW9uYXJp ZXMvc3RhdGljL2pzL2Z0c19kaWN0aW9uYXJ5LmpzCkBAIC0xLDggKzEsMTAgQEAKIGRlZmluZSgn cGdhZG1pbi5ub2RlLmZ0c19kaWN0aW9uYXJ5JywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3Nv dXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0 cmluZycsICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFj a2Zvcm0nLAorICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUnLAogICAncGdhZG1pbi5icm93c2Vy LmNvbGxlY3Rpb24nLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdB ZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSkgeworXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2Zv ciwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwKKyAgY2FuQ3JlYXRlKSB7 CiAKICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3Mgbm9kZSBtb2RlbCBjbGFzcyB0byBjcmVhdGUg YSBvcHRpb24vdmFsdWUgcGFpcgogICB2YXIgT3B0aW9uTGFiZWxNb2RlbCA9IHBnQWRtaW4uQnJv d3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CkBAIC0xODcsMzIgKzE4OSw3IEBAIGRlZmluZSgncGdh ZG1pbi5ub2RlLmZ0c19kaWN0aW9uYXJ5JywgWwogICAgICAgICB9LAogICAgICAgfSksCiAgICAg ICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIC8v SWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAg ICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1E YXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9k ZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVu IGFsbG93IHVzZXIgdG8gY3JlYXRlIGZ0cyBkaWN0aW9uYXJ5Ci0gICAgICAgICAgaWYgKF8uaW5k ZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7 Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZnRzX2RpY3Rpb25hcnknID09IGQuX3R5cGUpIHsKLSAg ICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAg ICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0g ICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7 Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQu aGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5p dGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBk byBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC1mdHNfZGlj dGlvbmFyeScsIGl0ZW0sIGRhdGEpOwogICAgICAgfSwKICAgICB9KTsKICAgfQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnRzX3BhcnNlci9zdGF0aWMvanMvZnRzX3BhcnNlci5qcyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJzZXIv c3RhdGljL2pzL2Z0c19wYXJzZXIuanMKaW5kZXggOTJjMDc4NmUuLmRhZWEzNWRlIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdHNfcGFyc2VyL3N0YXRpYy9qcy9mdHNfcGFyc2VyLmpzCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19w YXJzZXIvc3RhdGljL2pzL2Z0c19wYXJzZXIuanMKQEAgLTEsNyArMSw5IEBACiBkZWZpbmUoJ3Bn YWRtaW4ubm9kZS5mdHNfcGFyc2VyJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMv dXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCi0gICdzb3VyY2VzL3BnYWRtaW4nLCAn cGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKLV0sIGZ1bmN0 aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlcikgeworICAnc291 cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsCisgICdzb3VyY2VzL21lbnUvY2FuX2Ny ZWF0ZScsCisgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCitdLCBmdW5jdGlvbihnZXR0 ZXh0LCB1cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGNhbkNyZWF0ZSkgewogCiAg IC8vIEV4dGVuZCB0aGUgY29sbGVjdGlvbiBjbGFzcyBmb3IgZnRzIHBhcnNlcgogICBpZiAoIXBn QnJvd3Nlci5Ob2Rlc1snY29sbC1mdHNfcGFyc2VyJ10pIHsKQEAgLTIwMCwzMiArMjAyLDcgQEAg ZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRzX3BhcnNlcicsIFsKICAgICAgICAgfSwKICAgICAgIH0p LAogICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotICAg ICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51 Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAgcmV0 dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQg PSBpdGVtRGF0YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFy ZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hl bWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSBmdHMgcGFyc2VyCi0gICAgICAgICAgaWYgKF8u aW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRy dWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZnRzX3BhcnNlcicgPT0gZC5fdHlwZSkgewotICAg ICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAg ICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAg ICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsK LSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJl dHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpID0gdC5o YXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0 ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRv IG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICByZXR1cm4gY2FuQ3JlYXRlLmNhbkNyZWF0ZShwZ0Jyb3dzZXIsICdjb2xsLWZ0c19wYXJz ZXInLCBpdGVtLCBkYXRhKTsKICAgICAgIH0sCiAgICAgfSk7CiAgIH0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z0c190ZW1wbGF0ZXMvc3RhdGljL2pzL2Z0c190ZW1wbGF0ZS5qcyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0 ZXMvc3RhdGljL2pzL2Z0c190ZW1wbGF0ZS5qcwppbmRleCA2MDZhNTdhNi4uMGMwMDhjODMgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2Z0c190ZW1wbGF0ZXMvc3RhdGljL2pzL2Z0c190ZW1wbGF0ZS5qcworKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mdHNfdGVtcGxhdGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxhdGUuanMKQEAgLTEsNyArMSw5 IEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfdGVtcGxhdGUnLCBbCiAgICdzb3VyY2VzL2dl dHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKLSAgJ3Nv dXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5icm93c2VyLmNvbGxl Y3Rpb24nLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgcGdC cm93c2VyKSB7CisgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywKKyAgJ3Nv dXJjZXMvbWVudS9jYW5fY3JlYXRlJywKKyAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywK K10sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3Nlciwg Y2FuQ3JlYXRlKSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBjb2xsZWN0aW9uIGNsYXNzIGZvciBmdHMg dGVtcGxhdGUKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZnRzX3RlbXBsYXRlJ10pIHsK QEAgLTE0MCwzMiArMTQyLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRzX3RlbXBsYXRlJywg WwogICAgICAgICB9LAogICAgICAgfSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1E YXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdl IHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9 PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJv d3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRl IG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAg ICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIGZ0cyBm dHNfdGVtcGxhdGUKLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUp ID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC1m dHNfdGVtcGxhdGUnID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJl IG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZf aSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90 eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0K LSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAg IH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUg bWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5D cmVhdGUocGdCcm93c2VyLCAnY29sbC1mdHNfdGVtcGxhdGUnLCBpdGVtLCBkYXRhKTsKICAgICAg IH0sCiAgICAgfSk7CiAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9zdGF0aWMvanMvZnVu Y3Rpb24uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3RhdGljL2pzL2Z1bmN0aW9uLmpzCmluZGV4IDZlNDA1 MTY1Li40MDYzNjQ0NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy9mdW5jdGlv bi5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3RhdGljL2pzL2Z1bmN0aW9uLmpzCkBAIC0yLDggKzIs MTAgQEAKIGRlZmluZSgncGdhZG1pbi5ub2RlLmZ1bmN0aW9uJywgWwogICAnc291cmNlcy9nZXR0 ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsICdiYWNrYm9u ZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFj a2Zvcm0nLAorICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUnLAogICAncGdhZG1pbi5icm93c2Vy LmNvbGxlY3Rpb24nLCAncGdhZG1pbi5icm93c2VyLnNlcnZlci5wcml2aWxlZ2UnLAotXSwgZnVu Y3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBnQnJvd3Nl ciwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2ti b25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLAorICAgY2FuQ3JlYXRlKSB7CiAKICAg aWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZnVuY3Rpb24nXSkgewogICAgIHBnQnJvd3Nlci5O b2Rlc1snY29sbC1mdW5jdGlvbiddID0KQEAgLTQzOSwzMiArNDQxLDcgQEAgZGVmaW5lKCdwZ2Fk bWluLm5vZGUuZnVuY3Rpb24nLCBbCiAgICAgICAgIH0sCiAgICAgICB9KSwKICAgICAgIGNhbkNy ZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVj ayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAo ZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0g ICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0g ICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAg ICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cg dXNlciB0byBjcmVhdGUgRnVuY3Rpb24KLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1h J10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAg IGlmICgnY29sbC1mdW5jdGlvbicgPT0gZC5fdHlwZSkgewotICAgICAgICAgICAgLy9DaGVjayBp ZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0 Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9k ID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBw cmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg ICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBh cmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsK LSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93 IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gY2FuQ3Jl YXRlLmNhbkNyZWF0ZShwZ0Jyb3dzZXIsICdjb2xsLWZ1bmN0aW9uJywgaXRlbSwgZGF0YSk7CiAg ICAgICB9LAogICAgIH0pOwogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3RhdGljL2pzL3Ry aWdnZXJfZnVuY3Rpb24uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3RhdGljL2pzL3RyaWdnZXJfZnVuY3Rp b24uanMKaW5kZXggYWViODI3MWIuLjExYjU4N2VkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMv c3RhdGljL2pzL3RyaWdnZXJfZnVuY3Rpb24uanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9q cy90cmlnZ2VyX2Z1bmN0aW9uLmpzCkBAIC0yLDggKzIsOSBAQAogZGVmaW5lKCdwZ2FkbWluLm5v ZGUudHJpZ2dlcl9mdW5jdGlvbicsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3Vy bF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3Bn YWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywKKyAgJ3NvdXJjZXMvbWVudS9jYW5f Y3JlYXRlJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3BnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXIucHJpdmlsZWdlJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8s IHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9uKGdldHRleHQsIHVy bF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0sIGNhbkNyZWF0ZSkgewog CiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXRyaWdnZXJfZnVuY3Rpb24nXSkgewogICAg IHBnQnJvd3Nlci5Ob2Rlc1snY29sbC10cmlnZ2VyX2Z1bmN0aW9uJ10gPQpAQCAtMzU4LDMyICsz NTksNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50cmlnZ2VyX2Z1bmN0aW9uJywgWwogICAgICAg ICB9LAogICAgICAgfSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVt LCBkYXRhKSB7Ci0gICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxs b3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkK LSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVl LCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJl ZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8v IElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIEZ1bmN0aW9uCi0gICAg ICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAg ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtdHJpZ2dlcl9mdW5jdGlvbicg PT0gZC5fdHlwZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9m IGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFy ZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0 YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFs b2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0K LSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAg ICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAv LyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAg IHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gY2FuQ3JlYXRlLmNhbkNyZWF0ZShwZ0Jyb3dz ZXIsICdjb2xsLXRyaWdnZXJfZnVuY3Rpb24nLCBpdGVtLCBkYXRhKTsKICAgICAgIH0sCiAgICAg fSk7CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy9zdGF0aWMvanMvc2VxdWVuY2UuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9zZXF1ZW5jZXMvc3RhdGljL2pzL3NlcXVlbmNlLmpzCmluZGV4IDU3Yzk1YWNkLi4wYTU5ZWZi MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2VzL3N0YXRpYy9qcy9zZXF1ZW5jZS5qcworKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9zZXF1ZW5jZXMvc3RhdGljL2pzL3NlcXVlbmNlLmpzCkBAIC0xLDggKzEsMTAgQEAKIGRlZmlu ZSgncGdhZG1pbi5ub2RlLnNlcXVlbmNlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJj ZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0cmlu ZycsICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zv cm0nLAorICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUnLAogICAncGdhZG1pbi5icm93c2VyLmNv bGxlY3Rpb24nLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1p biwgcGdCcm93c2VyLCBCYWNrZm9ybSkgeworXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2Zvciwg JCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwKKyAgIGNhbkNyZWF0ZSkgewog CiAgIC8vIEV4dGVuZCB0aGUgYnJvd3NlcidzIGNvbGxlY3Rpb24gY2xhc3MgZm9yIHNlcXVlbmNl IGNvbGxlY3Rpb24KICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtc2VxdWVuY2UnXSkgewpA QCAtNjEsMzIgKzYzLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2VxdWVuY2UnLCBbCiAgICAg ICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKICAgICAg IGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwK ICAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAg ICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51 Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAgcmV0 dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQg PSBpdGVtRGF0YTsKLSAgICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBw YXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgICAgLy8gSWYgaXQgaXMg c2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgY29sbGF0aW9uCi0gICAgICAgICAgaWYg KF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJu IHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtc2VxdWVuY2UnID09IGQuX3R5cGUpIHsKLSAg ICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAg ICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwK LSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVs bDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg IHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpID0g dC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0 Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAgIC8vIGJ5IGRlZmF1bHQg d2Ugd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC1zZXF1ZW5jZScs IGl0ZW0sIGRhdGEpOwogICAgICAgfSwKICAgICAgIC8vIERlZmluZSB0aGUgbW9kZWwgZm9yIHNl cXVlbmNlIG5vZGUuCiAgICAgICBtb2RlbDogcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9jYW5fZHJvcF9jaGlsZC5qcyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9q cy9jYW5fZHJvcF9jaGlsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4u ODRlMjViNWMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvY2FuX2Ryb3BfY2hpbGQu anMKQEAgLTAsMCArMSwxOCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitleHBvcnQgZnVuY3Rpb24gY2FuRHJvcENoaWxk KHBnQnJvd3NlciwgaXRlbURhdGEsIGl0ZW0pIHsKKyAgbGV0IG5vZGUgPSBwZ0Jyb3dzZXIudHJl ZU1lbnUuZmluZE5vZGVCeURvbUVsZW1lbnQoaXRlbSk7CisKKyAgaWYgKG5vZGUuYW55UGFyZW50 KChwYXJlbnQpID0+IHBhcmVudC5nZXREYXRhKCkuX3R5cGUgPT09ICdjYXRhbG9nJykpIHsKKyAg ICByZXR1cm4gZmFsc2U7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3N0YXRpYy9qcy9zY2hlbWEuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvc2NoZW1hLmpzCmluZGV4IGE3ZmQ0 YzdjLi5hMDk2MTBhZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVtYS5qcworKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9zdGF0aWMvanMvc2NoZW1hLmpzCkBAIC0xLDggKzEsMTAgQEAKIGRlZmluZSgncGdhZG1pbi5u b2RlLnNjaGVtYScsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAn anF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJv d3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAncGdhZG1p bi5ub2RlLnNjaGVtYS5kaXIvY2FuX2Ryb3BfY2hpbGQnLAogICAncGdhZG1pbi5icm93c2VyLmNv bGxlY3Rpb24nLCAncGdhZG1pbi5icm93c2VyLnNlcnZlci5wcml2aWxlZ2UnLAotXSwgZnVuY3Rp b24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwg QmFja2dyaWQpIHsKK10sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4s IHBnQnJvd3NlciwgQmFja2Zvcm0sIEJhY2tncmlkLAorY2FuRHJvcENoaWxkKSB7CiAKICAgLy8g VmFjdXVtU2V0dGluZ3MgQ29sbGVjdGlvbiB0byBkaXNwbGF5IGFsbCBzZXR0aW5ncyBwYXJhbWV0 ZXJzIGFzIEdyaWQKICAgQmFja2Zvcm0uVmFjdXVtQ29sbGVjdGlvbkNvbnRyb2wgPQpAQCAtNDI4 LDUxICs0MzAsMTIgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2NoZW1hJywgWwogICAgICAgLy8g VGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrcyB3aGV0aGVyIHdlIGNhbiBhbGxvdyB1c2VyIHRvCiAg ICAgICAvLyBkcm9wIG9iamVjdCBvciBub3QgYmFzZWQgb24gbG9jYXRpb24gd2l0aGluIHNjaGVt YSAmIGNhdGFsb2cKICAgICAgIGNhbkNoaWxkRHJvcDogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0p IHsKLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0 YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUK LSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBh bGxvdyB1c2VyIHRvIGNyZWF0ZSBjb2xsYXRpb24KLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsn c2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg ICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAg ICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAg ICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOwotICAg ICAgICAgIGlmKHByZXZfZCAmJiBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAg ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVu dChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEo aSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdh bnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl dHVybiBjYW5Ecm9wQ2hpbGQuY2FuRHJvcENoaWxkKHBnQnJvd3NlciwgaXRlbURhdGEsIGl0ZW0p OwogICAgICAgfSwKICAgICB9KTsKIAogICAgIHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVI aWVyYXJjaHkgPSBmdW5jdGlvbihpKSB7Ci0gICAgICB2YXIgaWR4ID0gMCwKLSAgICAgICAgcmVz ID0ge30sCi0gICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZTsKLQotICAgICAgZG8gewotICAgICAg ICB2YXIgZCA9IHQuaXRlbURhdGEoaSk7Ci0gICAgICAgIGlmICgKLSAgICAgICAgICBkLl90eXBl IGluIHBnQnJvd3Nlci5Ob2RlcyAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV0uaGFzSWQKLSAg ICAgICAgKSB7Ci0gICAgICAgICAgaWYgKGQuX3R5cGUgPT09ICdwYXJ0aXRpb24nIHx8IGQuX3R5 cGUgPT09ICd0YWJsZScpIHsKLSAgICAgICAgICAgIGlmICghKCd0YWJsZScgaW4gcmVzKSkgewot ICAgICAgICAgICAgICByZXNbJ3RhYmxlJ10gPSBfLmV4dGVuZCh7fSwgZCwgeydwcmlvcml0eSc6 IGlkeH0pOwotICAgICAgICAgICAgICBpZHggLT0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICAgcmVzW2QuX3R5cGVdID0gXy5leHRlbmQoe30sIGQsIHsn cHJpb3JpdHknOiBpZHh9KTsKLSAgICAgICAgICAgIGlkeCAtPSAxOwotICAgICAgICAgIH0KLSAg ICAgICAgfQotICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7 Ci0gICAgICB9IHdoaWxlIChpKTsKLQotICAgICAgcmV0dXJuIHJlczsKKyAgICAgIHJldHVybiB0 aGlzLmdldFRyZWVOb2RlSGllcmFyY2h5KGkpOwogICAgIH07CiAgIH0KIApkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi9z dGF0aWMvanMvY29sdW1uLmpzCmluZGV4IDcyYjZlYjBjLi4xZmRhY2Y1MiAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb2x1 bW4vc3RhdGljL2pzL2NvbHVtbi5qcwpAQCAtODgsNyArODgsNiBAQCBkZWZpbmUoJ3BnYWRtaW4u bm9kZS5jb2x1bW4nLCBbCiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbHVtbiddKSB7CiAg ICAgcGdCcm93c2VyLk5vZGVzWydjb2x1bW4nXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0g ICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhp ZXJhcmNoeSwKICAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3ZpZXcnLCAnbXZpZXcnXSwK ICAgICAgIGNvbGxlY3Rpb25fdHlwZTogWydjb2xsLXRhYmxlJywgJ2NvbGwtdmlldycsICdjb2xs LW12aWV3J10sCiAgICAgICB0eXBlOiAnY29sdW1uJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3N0YXRpYy9qcy9jaGVja19jb25zdHJhaW50Lmpz IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0cmFpbnQvc3RhdGljL2pzL2NoZWNr X2NvbnN0cmFpbnQuanMKaW5kZXggODU3Y2Y0YzQuLmFiMjhhODZiIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvY29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC9zdGF0aWMvanMvY2hlY2tfY29uc3Ry YWludC5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC9zdGF0 aWMvanMvY2hlY2tfY29uc3RyYWludC5qcwpAQCAtOCw3ICs4LDYgQEAgZGVmaW5lKCdwZ2FkbWlu Lm5vZGUuY2hlY2tfY29uc3RyYWludCcsIFsKICAgLy8gQ2hlY2sgQ29uc3RyYWludCBOb2RlCiAg IGlmICghcGdCcm93c2VyLk5vZGVzWydjaGVja19jb25zdHJhaW50J10pIHsKICAgICBwZ0FkbWlu LkJyb3dzZXIuTm9kZXNbJ2NoZWNrX2NvbnN0cmFpbnQnXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVu ZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVl Tm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6ICdjaGVja19jb25zdHJhaW50JywKICAgICAgIGxh YmVsOiBnZXR0ZXh0KCdDaGVjaycpLAogICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1jb25z dHJhaW50cycsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZXhjbHVzaW9uX2Nv bnN0cmFpbnQvc3RhdGljL2pzL2V4Y2x1c2lvbl9jb25zdHJhaW50LmpzIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2Nv bnN0cmFpbnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3N0YXRpYy9qcy9leGNsdXNpb25fY29uc3Ry YWludC5qcwppbmRleCAwYmJmNjZhMS4uYWRjY2YyZTkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC9zdGF0aWMvanMvZXhjbHVzaW9uX2NvbnN0 cmFpbnQuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50 L3N0YXRpYy9qcy9leGNsdXNpb25fY29uc3RyYWludC5qcwpAQCAtNjA1LDcgKzYwNSw2IEBAIGRl ZmluZSgncGdhZG1pbi5ub2RlLmV4Y2x1c2lvbl9jb25zdHJhaW50JywgWwogICAvLyBFeHRlbmQg dGhlIGJyb3dzZXIncyBub2RlIGNsYXNzIGZvciBleGNsdXNpb24gY29uc3RyYWludCBub2RlCiAg IGlmICghcGdCcm93c2VyLk5vZGVzWydleGNsdXNpb25fY29uc3RyYWludCddKSB7CiAgICAgcGdB ZG1pbi5Ccm93c2VyLk5vZGVzWydleGNsdXNpb25fY29uc3RyYWludCddID0gcGdCcm93c2VyLk5v ZGUuZXh0ZW5kKHsKLSAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVD aGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgdHlwZTogJ2V4Y2x1c2lvbl9jb25zdHJhaW50 JywKICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdFeGNsdXNpb24gY29uc3RyYWludCcpLAogICAgICAg Y29sbGVjdGlvbl90eXBlOiAnY29sbC1jb25zdHJhaW50cycsCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvY29uc3RyYWludHMvZm9yZWlnbl9rZXkvc3RhdGljL2pzL2ZvcmVpZ25fa2V5LmpzIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3N0YXRpYy9qcy9mb3JlaWduX2tleS5qcwpp bmRleCAzYzRiODlmMy4uOTg5OWRmOTIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy9mb3JlaWduX2tleS9zdGF0aWMvanMvZm9yZWlnbl9rZXkuanMKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2Nv bnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3N0YXRpYy9qcy9mb3JlaWduX2tleS5qcwpAQCAtNjAzLDcg KzYwMyw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZvcmVpZ25fa2V5JywgWwogICAvLyBFeHRl bmQgdGhlIGJyb3dzZXIncyBub2RlIGNsYXNzIGZvciBmb3JlaWduIGtleSBub2RlCiAgIGlmICgh cGdCcm93c2VyLk5vZGVzWydmb3JlaWduX2tleSddKSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5v ZGVzWydmb3JlaWduX2tleSddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIGdldFRy ZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAog ICAgICAgdHlwZTogJ2ZvcmVpZ25fa2V5JywKICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdGb3JlaWdu IGtleScpLAogICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1jb25zdHJhaW50cycsCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvanMv cHJpbWFyeV9rZXkuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9z dGF0aWMvanMvcHJpbWFyeV9rZXkuanMKaW5kZXggZDNhNmNmZjQuLjBhZDBmMDU0IDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvanMvcHJp bWFyeV9rZXkuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQv c3RhdGljL2pzL3ByaW1hcnlfa2V5LmpzCkBAIC0yMCw3ICsyMCw2IEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLnByaW1hcnlfa2V5JywgWwogICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCdwYXJ0 aXRpb24nXSwKICAgICAgIGNhbkRyb3A6IHRydWUsCiAgICAgICBjYW5Ecm9wQ2FzY2FkZTogdHJ1 ZSwKLSAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVO b2RlSGllcmFyY2h5LAogICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgIC8qIEF2b2lk IG11bHRpcGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cyAqLwogICAgICAgICBpZiAodGhpcy5pbml0 aWFsaXplZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJh aW50L3N0YXRpYy9qcy91bmlxdWVfY29uc3RyYWludC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50 cy9pbmRleF9jb25zdHJhaW50L3N0YXRpYy9qcy91bmlxdWVfY29uc3RyYWludC5qcwppbmRleCA3 NjkxODVkNi4uMThkM2NhMzMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRl eF9jb25zdHJhaW50L3N0YXRpYy9qcy91bmlxdWVfY29uc3RyYWludC5qcworKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvanMvdW5pcXVlX2NvbnN0cmFp bnQuanMKQEAgLTIwLDcgKzIwLDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudW5pcXVlX2NvbnN0 cmFpbnQnLCBbCiAgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsJ3BhcnRpdGlvbiddLAogICAg ICAgY2FuRHJvcDogdHJ1ZSwKICAgICAgIGNhbkRyb3BDYXNjYWRlOiB0cnVlLAotICAgICAgZ2V0 VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHks CiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgLyogQXZvaWQgbXVsdGlwbGUgcmVn aXN0cmF0aW9uIG9mIG1lbnVzICovCiAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL3N0YXRpYy9qcy9jb25zdHJhaW50cy5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9jb25zdHJhaW50cy9zdGF0aWMvanMvY29uc3RyYWludHMuanMKaW5kZXggY2Iy NDJjZDIuLjljMGUyNGZlIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvc3RhdGlj L2pzL2NvbnN0cmFpbnRzLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9zdGF0aWMvanMv Y29uc3RyYWludHMuanMKQEAgLTEyLDE0ICsxMiwxMiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5j b25zdHJhaW50cycsIFsKICAgICAgICAgbm9kZTogJ2NvbnN0cmFpbnRzJywKICAgICAgICAgbGFi ZWw6IGdldHRleHQoJ0NvbnN0cmFpbnRzJyksCiAgICAgICAgIHR5cGU6ICdjb2xsLWNvbnN0cmFp bnRzJywKLSAgICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxk VHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICAgIGNvbHVtbnM6IFsnbmFtZScsICdjb21tZW50J10s CiAgICAgICB9KTsKICAgfQogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb25zdHJhaW50cydd KSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb25zdHJhaW50cyddID0gcGdCcm93c2Vy Lk5vZGUuZXh0ZW5kKHsKLSAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFi bGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgdHlwZTogJ2NvbnN0cmFpbnRzJywKICAg ICAgIGxhYmVsOiBnZXR0ZXh0KCdDb25zdHJhaW50cycpLAogICAgICAgY29sbGVjdGlvbl90eXBl OiAnY29sbC1jb25zdHJhaW50cycsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9zdGF0 aWMvanMvaW5kZXguanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9zdGF0aWMvanMvaW5kZXguanMKaW5k ZXggZWMyYjRkYTEuLjJiNjg3YzFhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9zdGF0 aWMvanMvaW5kZXguanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvc3RhdGljL2pzL2luZGV4Lmpz CkBAIC0xMyw3ICsxMyw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmluZGV4JywgWwogICAgICAg ICBub2RlOiAnaW5kZXgnLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnSW5kZXhlcycpLAogICAg ICAgICB0eXBlOiAnY29sbC1pbmRleCcsCi0gICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBw Z0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgICBzcWxBbHRlckhl bHA6ICdzcWwtYWx0ZXJpbmRleC5odG1sJywKICAgICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1j cmVhdGVpbmRleC5odG1sJywKICAgICAgICAgZGlhbG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0 aWMnLCB7J2ZpbGVuYW1lJzogJ2luZGV4X2RpYWxvZy5odG1sJ30pLApAQCAtMjE1LDcgKzIxNCw2 IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmluZGV4JywgWwogCiAgIGlmICghcGdCcm93c2VyLk5v ZGVzWydpbmRleCddKSB7CiAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydpbmRleCddID0gcGdC cm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dz ZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgcGFyZW50X3R5cGU6IFsndGFi bGUnLCAndmlldycsICdtdmlldycsICdwYXJ0aXRpb24nXSwKICAgICAgIGNvbGxlY3Rpb25fdHlw ZTogWydjb2xsLXRhYmxlJywgJ2NvbGwtdmlldyddLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3Fs LWFsdGVyaW5kZXguaHRtbCcsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0 aWMvanMvcGFydGl0aW9uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvc3RhdGljL2pzL3BhcnRp dGlvbi5qcwppbmRleCBkODA3MzA0ZS4uYzdhNzgxOWEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9w YXJ0aXRpb25zL3N0YXRpYy9qcy9wYXJ0aXRpb24uanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlv bnMvc3RhdGljL2pzL3BhcnRpdGlvbi5qcwpAQCAtMSwxMSArMSwxNSBAQAogZGVmaW5lKFsKKyAg J3NvdXJjZXMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZScsCiAgICdzb3VyY2VzL2dldHRleHQnLCAn c291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3VuZGVyc2NvcmUu c3RyaW5nJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLAogICAncGdhZG1p bi5hbGVydGlmeWpzJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcsCisg ICdzb3VyY2VzL21lbnUvY2FuX2NyZWF0ZScsCiAgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlv bicsICdwZ2FkbWluLmJyb3dzZXIudGFibGUucGFydGl0aW9uLnV0aWxzJywKIF0sCiBmdW5jdGlv bigKLSAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBBbGVy dGlmeSwgQmFja2Zvcm0sIEJhY2tncmlkCisgIHBnYWRtaW5UcmVlTm9kZSwKKyAgZ2V0dGV4dCwg dXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBBbGVydGlmeSwgQmFja2Zvcm0s IEJhY2tncmlkLAorICBjYW5DcmVhdGUKICkgewogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydj b2xsLXBhcnRpdGlvbiddKSB7CkBAIC0xMyw3ICsxNyw2IEBAIGZ1bmN0aW9uKAogICAgICAgcGdB ZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKICAgICAgICAgbm9kZTogJ3BhcnRpdGlv bicsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdQYXJ0aXRpb25zJyksCi0gICAgICAgIGdldFRy ZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAog ICAgICAgICB0eXBlOiAnY29sbC1wYXJ0aXRpb24nLAogICAgICAgICBjb2x1bW5zOiBbCiAgICAg ICAgICAgJ25hbWUnLCAnc2NoZW1hJywgJ3BhcnRpdGlvbl92YWx1ZScsICdpc19wYXJ0aXRpb25l ZCcsICdkZXNjcmlwdGlvbicsCkBAIC04MCwzNiArODMsNiBAQCBmdW5jdGlvbigKICAgICAgICAg fSwKICAgICAgICAgXSk7CiAgICAgICB9LAotICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IGZ1 bmN0aW9uKGkpIHsKLSAgICAgICAgdmFyIGlkeCA9IDAsCi0gICAgICAgICAgcmVzID0ge30sCi0g ICAgICAgICAgdCA9IHBnQnJvd3Nlci50cmVlOwotCi0gICAgICAgIGRvIHsKLSAgICAgICAgICB2 YXIgZCA9IHQuaXRlbURhdGEoaSk7Ci0gICAgICAgICAgaWYgKAotICAgICAgICAgICAgZC5fdHlw ZSBpbiBwZ0Jyb3dzZXIuTm9kZXMgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdLmhhc0lkCi0g ICAgICAgICAgKSB7Ci0gICAgICAgICAgICBpZiAoZC5fdHlwZSA9PSAncGFydGl0aW9uJyAmJiAn cGFydGl0aW9uJyBpbiByZXMpIHsKLSAgICAgICAgICAgICAgaWYgKCEoJ3RhYmxlJyBpbiByZXMp KSB7Ci0gICAgICAgICAgICAgICAgcmVzWyd0YWJsZSddID0gXy5leHRlbmQoe30sIGQsIHsncHJp b3JpdHknOiBpZHh9KTsKLSAgICAgICAgICAgICAgICBpZHggLT0gMTsKLSAgICAgICAgICAgICAg fQotICAgICAgICAgICAgfSBlbHNlIGlmIChkLl90eXBlID09ICd0YWJsZScpIHsKLSAgICAgICAg ICAgICAgaWYgKCEoJ3RhYmxlJyBpbiByZXMpKSB7Ci0gICAgICAgICAgICAgICAgcmVzWyd0YWJs ZSddID0gXy5leHRlbmQoe30sIGQsIHsncHJpb3JpdHknOiBpZHh9KTsKLSAgICAgICAgICAgICAg ICBpZHggLT0gMTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICAgcmVzW2QuX3R5cGVdID0gXy5leHRlbmQoe30sIGQsIHsncHJpb3JpdHknOiBpZHh9 KTsKLSAgICAgICAgICAgICAgaWR4IC09IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQot ICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAg ICAgfSB3aGlsZSAoaSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgIH0sCiAgICAgICBn ZW5lcmF0ZV91cmw6IGZ1bmN0aW9uKGl0ZW0sIHR5cGUsIGQsIHdpdGhfaWQsIGluZm8pIHsKICAg ICAgICAgaWYgKF8uaW5kZXhPZihbCiAgICAgICAgICAgJ3N0YXRzJywgJ3N0YXRpc3RpY3MnLCAn ZGVwZW5kZW5jeScsICdkZXBlbmRlbnQnLCAncmVzZXQnLApAQCAtMTE5MCwzMiArMTE2Myw3IEBA IGZ1bmN0aW9uKAogICAgICAgICB9LAogICAgICAgfSksCiAgICAgICBjYW5DcmVhdGU6IGZ1bmN0 aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxz ZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBk YXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZh ciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgICAg Ly8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hp bGUgKGkpIHsKLSAgICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIg dG8gY3JlYXRlIHRhYmxlCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90 eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2Nv bGwtdGFibGUnID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUg bm90IGNoaWxkIG9mIGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVu dChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICAgIHZhciBwcmV2X2QgPSBwcmV2 X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5f dHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9 Ci0gICAgICAgICAgfQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkp IDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAg ICB9Ci0gICAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVh dGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5j YW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC10YWJsZScsIGl0ZW0sIGRhdGEpOwogICAgICAgfSwK ICAgICAgIC8vIENoZWNrIHRvIHdoZXRoZXIgdGFibGUgaGFzIGRpc2FibGUgdHJpZ2dlcihzKQog ICAgICAgY2FuQ3JlYXRlX3dpdGhfdHJpZ2dlcl9lbmFibGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBp dGVtLCBkYXRhKSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUu anMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUuanMKaW5kZXggM2FmNjE3NTQuLjM1 NDkwOWYzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUuanMKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3J1bGVzL3N0YXRpYy9qcy9ydWxlLmpzCkBAIC0xNiw3ICsxNiw2IEBAIGRl ZmluZSgncGdhZG1pbi5ub2RlLnJ1bGUnLCBbCiAgICAgICAgIG5vZGU6ICdydWxlJywKICAgICAg ICAgbGFiZWw6IGdldHRleHQoJ1J1bGVzJyksCiAgICAgICAgIHR5cGU6ICdjb2xsLXJ1bGUnLAot ICAgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9k ZUhpZXJhcmNoeSwKICAgICAgICAgY29sdW1uczogWyduYW1lJywgJ293bmVyJywgJ2NvbW1lbnQn XSwKICAgICAgIH0pOwogICB9CkBAIC0zNSw3ICszNCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2Rl LnJ1bGUnLCBbCiAgICAqLwogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sncnVsZSddKSB7CiAgICAg cGdBZG1pbi5Ccm93c2VyLk5vZGVzWydydWxlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoewot ICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVI aWVyYXJjaHksCiAgICAgICBwYXJlbnRfdHlwZTogWyd0YWJsZScsJ3ZpZXcnLCAncGFydGl0aW9u J10sCiAgICAgICB0eXBlOiAncnVsZScsCiAgICAgICBzcWxBbHRlckhlbHA6ICdzcWwtYWx0ZXJy dWxlLmh0bWwnLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy9lbmFibGVfZGlzYWJs ZV90cmlnZ2Vycy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvZW5hYmxlX2Rpc2FibGVfdHJpZ2dl cnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjJkNzkyMDQzCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy9lbmFibGVfZGlzYWJsZV90cmlnZ2Vy cy5qcwpAQCAtMCwwICsxLDUyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7 CisKK2V4cG9ydCBmdW5jdGlvbiBkaXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVy YXRlVXJsLCBhcmdzKSB7CisgIHJldHVybiBzZXRUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2Vu ZXJhdGVVcmwsIGFyZ3MsIHtlbmFibGU6ICdmYWxzZScgfSk7Cit9CitleHBvcnQgZnVuY3Rpb24g ZW5hYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsLCBhcmdzKSB7CisgIHJl dHVybiBzZXRUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmwsIGFyZ3MsIHtlbmFi bGU6ICd0cnVlJyB9KTsKK30KKworZnVuY3Rpb24gc2V0VHJpZ2dlcnModHJlZSwgYWxlcnRpZnks IGdlbmVyYXRlVXJsLCBhcmdzLCBwYXJhbXMpIHsKKyAgY29uc3QgdHJlZU5vZGUgPSByZXRyaWV2 ZVRyZWVOb2RlKGFyZ3MsIHRyZWUpOworCisgIGlmICghdHJlZU5vZGUgfHwgdHJlZU5vZGUuZ2V0 RGF0YSgpID09PSBudWxsIHx8IHRyZWVOb2RlLmdldERhdGEoKSA9PT0gdW5kZWZpbmVkKQorICAg IHJldHVybiBmYWxzZTsKKworICBheGlvcy5wdXQoCisgICAgZ2VuZXJhdGVVcmwodHJlZU5vZGUu Z2V0SHRtbElkZW50aWZpZXIoKSwgJ3NldF90cmlnZ2VyJywgdHJlZU5vZGUuZ2V0RGF0YSgpLCB0 cnVlKSwKKyAgICBwYXJhbXMKKyAgKQorICAgIC50aGVuKChyZXMpID0+IHsKKyAgICAgIGlmIChy ZXMuZGF0YS5zdWNjZXNzID09PSAxKSB7CisgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3MocmVzLmRh dGEuaW5mbyk7CisgICAgICAgIHRyZWVOb2RlLnJlbG9hZCh0cmVlKTsKKyAgICAgIH0KKyAgICB9 KQorICAgIC5jYXRjaCgoeGhyKSA9PiB7CisgICAgICB0cnkgeworICAgICAgICBjb25zdCBlcnIg PSB4aHIucmVzcG9uc2UuZGF0YTsKKyAgICAgICAgaWYgKGVyci5zdWNjZXNzID09PSAwKSB7Cisg ICAgICAgICAgYWxlcnRpZnkuZXJyb3IoZXJyLmVycm9ybXNnKTsKKyAgICAgICAgfQorICAgICAg fSBjYXRjaCAoZSkgeworICAgICAgICBjb25zb2xlLndhcm4oZS5zdGFjayB8fCBlKTsKKyAgICAg IH0KKyAgICAgIHRyZWVOb2RlLnVubG9hZCh0cmVlKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24g cmV0cmlldmVUcmVlTm9kZShhcmdzLCB0cmVlKSB7CisgIGNvbnN0IGlucHV0ID0gYXJncyB8fCB7 fTsKKyAgY29uc3QgZG9tRWxlbWVudElkZW50aWZpZXIgPSBpbnB1dC5pdGVtIHx8IHRyZWUuc2Vs ZWN0ZWQoKTsKKyAgcmV0dXJuIHRyZWUuZmluZE5vZGVCeURvbUVsZW1lbnQoZG9tRWxlbWVudElk ZW50aWZpZXIpOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy90YWJsZS5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUuanMKaW5kZXggZDQ0MGJmMDQuLjlhMDIxNzQ1IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9z dGF0aWMvanMvdGFibGUuanMKQEAgLTEsMTMgKzEsMTcgQEAKIGRlZmluZSgncGdhZG1pbi5ub2Rl LnRhYmxlJywgWworICAncGdhZG1pbi50YWJsZXMuanMvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMn LAogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5k ZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0cmluZycsICdzb3VyY2VzL3BnYWRtaW4nLCAncGdh ZG1pbi5icm93c2VyJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdwZ2FkbWluLmJhY2tmb3Jt JywgJ3BnYWRtaW4uYmFja2dyaWQnLAogICAncGdhZG1pbi50YWJsZXMuanMvc2hvd19hZHZhbmNl ZF90YWInLAorICAnc291cmNlcy9tZW51L2Nhbl9jcmVhdGUnLAorCiAgICdwZ2FkbWluLmJyb3dz ZXIuY29sbGVjdGlvbicsICdwZ2FkbWluLm5vZGUuY29sdW1uJywKICAgJ3BnYWRtaW4ubm9kZS5j b25zdHJhaW50cycsICdwZ2FkbWluLmJyb3dzZXIudGFibGUucGFydGl0aW9uLnV0aWxzJywKIF0s IGZ1bmN0aW9uKAorICB0YWJsZUZ1bmN0aW9ucywKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywg UywgcGdBZG1pbiwgcGdCcm93c2VyLCBBbGVydGlmeSwgQmFja2Zvcm0sIEJhY2tncmlkLAotICBT aG93QWR2YW5jZWRUYWIKKyAgU2hvd0FkdmFuY2VkVGFiLCBjYW5DcmVhdGUKICkgewogCiAgIGlm ICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXRhYmxlJ10pIHsKQEAgLTI2LDcgKzMwLDYgQEAgZGVm aW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3Rh YmxlJ10pIHsKICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3RhYmxlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5l eHRlbmQoewotICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxk VHJlZU5vZGVIaWVyYXJjaHksCiAgICAgICB0eXBlOiAndGFibGUnLAogICAgICAgbGFiZWw6IGdl dHRleHQoJ1RhYmxlJyksCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLXRhYmxlJywKQEAg LTExOCw0NiArMTIxLDIxIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRhYmxlJywgWwogICAgICAg Y2FsbGJhY2tzOiB7CiAgICAgICAgIC8qIEVuYWJsZSB0cmlnZ2VyKHMpIG9uIHRhYmxlICovCiAg ICAgICAgIGVuYWJsZV90cmlnZ2Vyc19vbl90YWJsZTogZnVuY3Rpb24oYXJncykgewotICAgICAg ICAgIHZhciBwYXJhbXMgPSB7J2VuYWJsZSc6IHRydWUgfTsKLSAgICAgICAgICB0aGlzLmNhbGxi YWNrcy5zZXRfdHJpZ2dlcnMuYXBwbHkodGhpcywgW2FyZ3MsIHBhcmFtc10pOworICAgICAgICAg IHRhYmxlRnVuY3Rpb25zLmVuYWJsZVRyaWdnZXJzKAorICAgICAgICAgICAgcGdCcm93c2VyLnRy ZWVNZW51LAorICAgICAgICAgICAgQWxlcnRpZnksCisgICAgICAgICAgICB0aGlzLmdlbmVyYXRl X3VybC5iaW5kKHRoaXMpLAorICAgICAgICAgICAgYXJncworICAgICAgICAgICk7CiAgICAgICAg IH0sCiAgICAgICAgIC8qIERpc2FibGUgdHJpZ2dlcihzKSBvbiB0YWJsZSAqLwogICAgICAgICBk aXNhYmxlX3RyaWdnZXJzX29uX3RhYmxlOiBmdW5jdGlvbihhcmdzKSB7Ci0gICAgICAgICAgdmFy IHBhcmFtcyA9IHsnZW5hYmxlJzogZmFsc2UgfTsKLSAgICAgICAgICB0aGlzLmNhbGxiYWNrcy5z ZXRfdHJpZ2dlcnMuYXBwbHkodGhpcywgW2FyZ3MsIHBhcmFtc10pOwotICAgICAgICB9LAotICAg ICAgICBzZXRfdHJpZ2dlcnM6IGZ1bmN0aW9uKGFyZ3MsIHBhcmFtcykgewotICAgICAgICAgIC8v IFRoaXMgZnVuY3Rpb24gd2lsbCBzZW5kIHJlcXVlc3QgdG8gZW5hYmxlIG9yCi0gICAgICAgICAg Ly8gZGlzYWJsZSB0cmlnZ2VycyBvbiB0YWJsZSBsZXZlbAotICAgICAgICAgIHZhciBpbnB1dCA9 IGFyZ3MgfHwge30sCi0gICAgICAgICAgICBvYmogPSB0aGlzLAotICAgICAgICAgICAgdCA9IHBn QnJvd3Nlci50cmVlLAotICAgICAgICAgICAgaSA9IGlucHV0Lml0ZW0gfHwgdC5zZWxlY3RlZCgp LAotICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1 bmRlZmluZWQ7Ci0gICAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot Ci0gICAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICAgIHVybDogb2JqLmdlbmVyYXRlX3VybChp LCAnc2V0X3RyaWdnZXInICwgZCwgdHJ1ZSksCi0gICAgICAgICAgICB0eXBlOidQVVQnLAotICAg ICAgICAgICAgZGF0YTogcGFyYW1zLAotICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKLSAg ICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewotICAgICAgICAgICAgICBpZiAocmVz LnN1Y2Nlc3MgPT0gMSkgewotICAgICAgICAgICAgICAgIEFsZXJ0aWZ5LnN1Y2Nlc3MocmVzLmlu Zm8pOwotICAgICAgICAgICAgICAgIHQudW5sb2FkKGkpOwotICAgICAgICAgICAgICAgIHQuc2V0 SW5vZGUoaSk7Ci0gICAgICAgICAgICAgICAgdC5kZXNlbGVjdChpKTsKLSAgICAgICAgICAgICAg ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgdC5zZWxlY3QoaSk7 Ci0gICAgICAgICAgICAgICAgfSwgMTApOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9 LAotICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgewotICAg ICAgICAgICAgICBBbGVydGlmeS5wZ1Jlc3BFcnJvck5vdGlmeSh4aHIsIGVycm9yKTsKLSAgICAg ICAgICAgICAgdC51bmxvYWQoaSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgIH0pOworICAg ICAgICAgIHRhYmxlRnVuY3Rpb25zLmRpc2FibGVUcmlnZ2VycygKKyAgICAgICAgICAgIHBnQnJv d3Nlci50cmVlTWVudSwKKyAgICAgICAgICAgIEFsZXJ0aWZ5LAorICAgICAgICAgICAgdGhpcy5n ZW5lcmF0ZV91cmwuYmluZCh0aGlzKSwKKyAgICAgICAgICAgIGFyZ3MKKyAgICAgICAgICApOwog ICAgICAgICB9LAogICAgICAgICAvKiBUcnVuY2F0ZSB0YWJsZSAqLwogICAgICAgICB0cnVuY2F0 ZV90YWJsZTogZnVuY3Rpb24oYXJncykgewpAQCAtMTMwMCwzMiArMTI3OCw3IEBAIGRlZmluZSgn cGdhZG1pbi5ub2RlLnRhYmxlJywgWwogICAgICAgICB9LAogICAgICAgfSksCiAgICAgICBjYW5D cmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIC8vSWYgY2hl Y2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYg KGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQot ICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwot ICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAg ICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93 IHVzZXIgdG8gY3JlYXRlIHRhYmxlCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSdd LCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBp ZiAoJ2NvbGwtdGFibGUnID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2Ug YXJlIG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQ YXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHBy ZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9k Ll90eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg IH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQo aSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAg ICAgIH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVh dGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5j YW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC10YWJsZScsIGl0ZW0sIGRhdGEpOwogICAgICAgfSwK ICAgICAgIC8vIENoZWNrIHRvIHdoZXRoZXIgdGFibGUgaGFzIGRpc2FibGUgdHJpZ2dlcihzKQog ICAgICAgY2FuQ3JlYXRlX3dpdGhfdHJpZ2dlcl9lbmFibGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBp dGVtLCBkYXRhKSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvc3RhdGljL2pzL3Ry aWdnZXIuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvc3RhdGljL2pzL3RyaWdnZXIuanMKaW5kZXgg YTJjMjcxODguLjRjMjVlM2VhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvc3RhdGlj L2pzL3RyaWdnZXIuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RyaWdnZXJzL3N0YXRpYy9qcy90cmlnZ2Vy LmpzCkBAIC0yOSwxNCArMjksMTIgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudHJpZ2dlcicsIFsK ICAgICAgICAgbm9kZTogJ3RyaWdnZXInLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnVHJpZ2dl cnMnKSwKICAgICAgICAgdHlwZTogJ2NvbGwtdHJpZ2dlcicsCi0gICAgICAgIGdldFRyZWVOb2Rl SGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAg ICBjb2x1bW5zOiBbJ25hbWUnLCAnZGVzY3JpcHRpb24nXSwKICAgICAgIH0pOwogICB9CiAKICAg aWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3RyaWdnZXInXSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5O b2Rlc1sndHJpZ2dlciddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIGdldFRyZWVO b2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5LAogICAg ICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCAndmlldycsICdwYXJ0aXRpb24nXSwKICAgICAgIGNv bGxlY3Rpb25fdHlwZTogWydjb2xsLXRhYmxlJywgJ2NvbGwtdmlldyddLAogICAgICAgdHlwZTog J3RyaWdnZXInLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvc3RhdGljL2pzL3R5cGUuanMgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 eXBlcy9zdGF0aWMvanMvdHlwZS5qcwppbmRleCBjMWMyNDg2MS4uOTFjZTYxNWYgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3R5cGVzL3N0YXRpYy9qcy90eXBlLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3N0YXRpYy9qcy90 eXBlLmpzCkBAIC0xLDggKzEsOSBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUudHlwZScsIFsKICAg J3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2Nv cmUnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJh Y2tmb3JtJywKLSAgJ3BnYWRtaW4uYmFja2dyaWQnLCAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rp b24nLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgcGdCcm93 c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQpIHsKKyAgJ3BnYWRtaW4uYmFja2dyaWQnLCAnc291cmNl cy9tZW51L2Nhbl9jcmVhdGUnLCAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorXSwgZnVu Y3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9y bSwgQmFja2dyaWQsCisgICBjYW5DcmVhdGUpIHsKIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sn Y29sbC10eXBlJ10pIHsKICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtdHlwZSddID0KQEAgLTkx MiwzMiArOTEzLDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudHlwZScsIFsKICAgICAgICAgfSwK ICAgICAgIH0pLAogICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0 YSkgewotICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNy ZWF0ZSBtZW51Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAg ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9 IGl0ZW0sIGQgPSBpdGVtRGF0YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8g Y2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBp dCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSB0YWJsZQotICAgICAgICAgIGlm IChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVy biB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLXR5cGUnID09IGQuX3R5cGUpIHsKLSAgICAg ICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAg ICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAg ICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0g ICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFz UGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVt RGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBu b3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVhdGUocGdCcm93c2VyLCAnY29sbC10eXBlJywgaXRl bSwgZGF0YSk7CiAgICAgICB9LAogICAgIH0pOwogICB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9z dGF0aWMvanMvbXZpZXcuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvbXZpZXcuanMKaW5kZXggMDcz ZWY1Y2IuLjU3OTFjZGNkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvbXZpZXcuanMK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3Mvc3RhdGljL2pzL212aWV3LmpzCkBAIC0xLDggKzEsMTEgQEAKIGRlZmlu ZSgncGdhZG1pbi5ub2RlLm12aWV3JywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMv dXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAn cGdhZG1pbi5hbGVydGlmeWpzJywgJ3BnYWRtaW4uYnJvd3NlcicsCi0gICdwZ2FkbWluLmJhY2tm b3JtJywgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKLV0sIGZ1bmN0aW9uKGdl dHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIEFsZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tm b3JtKSB7CisgICdwZ2FkbWluLmJhY2tmb3JtJywKKyAgJ3NvdXJjZXMvbWVudS9jYW5fY3JlYXRl JywKKyAgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKK10sIGZ1bmN0aW9uKGdl dHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIEFsZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tm b3JtLAorICBjYW5DcmVhdGUpIHsKIAogICAvKioKICAgICBDcmVhdGUgYW5kIGFkZCBhIHZpZXcg Y29sbGVjdGlvbiBpbnRvIG5vZGVzCkBAIC0yNDEsMzcgKzI0NCw3IEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLm12aWV3JywgWwogICAgICAgICBhbmQgaGlkZSBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0 YWxvZ3MuCiAgICAgICAgKi8KICAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0 ZW0sIGRhdGEpIHsKLQotICAgICAgICAvLyBJZiBjaGVjayBpcyBmYWxzZSB0aGVuLCB3ZSB3aWxs IGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT09IGZh bHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2Vy LnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0KLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBv dmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLQotICAg ICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIHZpZXcK LSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC1tdmlldycgPT0gZC5f dHlwZSkgewotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIHZp ZXcKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkp IDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2 X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7 Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAg ICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAg ZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGJ5 IGRlZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgIHJldHVybiBjYW5DcmVhdGUuY2FuQ3JlYXRlKHBnQnJvd3Nlciwg J2NvbGwtbXZpZXcnLCBpdGVtLCBkYXRhKTsKICAgICAgIH0sCiAgICAgICByZWZyZXNoX212aWV3 OiBmdW5jdGlvbihhcmdzKSB7CiAgICAgICAgIHZhciBpbnB1dCA9IGFyZ3MgfHwge30sCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvdmlldy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9qcy92 aWV3LmpzCmluZGV4IDU3NTVhNTA5Li5lNDI1ODE4OCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3Rh dGljL2pzL3ZpZXcuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3RhdGljL2pzL3ZpZXcuanMKQEAgLTEsOSAr MSwxMiBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUudmlldycsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4 dCcsCiAgICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAnc291cmNl cy9wZ2FkbWluJywKLSAgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3Bn YWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKKyAgJ3BnYWRtaW4uYnJvd3NlcicsICdw Z2FkbWluLmJhY2tmb3JtJywKKyAgJ3NvdXJjZXMvbWVudS9jYW5fY3JlYXRlJywKKyAgJ3BnYWRt aW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKICAgJ3BnYWRtaW4ubm9kZS5ydWxlJywKLV0s IGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFj a2Zvcm0pIHsKK10sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBn QnJvd3NlciwgQmFja2Zvcm0sCisgIGNhbkNyZWF0ZSkgewogCiAgIC8qKgogICAgIENyZWF0ZSBh bmQgYWRkIGEgdmlldyBjb2xsZWN0aW9uIGludG8gbm9kZXMKQEAgLTIwMywzOCArMjA2LDcgQEAg ZGVmaW5lKCdwZ2FkbWluLm5vZGUudmlldycsIFsKICAgICAgICAgYW5kIGhpZGUgZm9yIHN5c3Rl bSB2aWV3IGluIGNhdGFsb2dzLgogICAgICAgICAqLwogICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlv bihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotCi0gICAgICAgIC8vIElmIGNoZWNrIGlzIGZhbHNl IHRoZW4sIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0 YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotCi0gICAgICAgIC8v IFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxl IChpKSB7Ci0KLSAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRv IGNyZWF0ZSB2aWV3Ci0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBl KSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwt dmlldycgPT0gZC5fdHlwZSkgewotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhcmUgbm90 IGNoaWxkIG9mIHZpZXcKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/ IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5p dGVtRGF0YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0g J2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAg ICAgIH0KLSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7 Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotCi0g ICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUK LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KKyAgICAgICAgcmV0dXJuIGNhbkNyZWF0ZS5jYW5DcmVh dGUocGdCcm93c2VyLCAnY29sbC12aWV3JywgaXRlbSwgZGF0YSk7CiAgICAgICB9LAogICAgIH0p OwogICB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLmpz IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS5qcwppbmRleCBhZDU4MjQ4My4u M2JhZjU1NGEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUu anMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS5qcwpAQCAtMSw5ICsx LDEyIEBACiBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nlci5ub2RlJywgWworICAnc291cmNlcy90cmVl L3BnYWRtaW5fdHJlZV9ub2RlJywKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdqcXVlcnknLCAndW5k ZXJzY29yZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdzb3VyY2VzL3BnYWRtaW4nLAogICAncGdh ZG1pbi5icm93c2VyLm1lbnUnLCAnYmFja2JvbmUnLCAncGdhZG1pbi5hbGVydGlmeWpzJywgJ3Bn YWRtaW4uYnJvd3Nlci5kYXRhbW9kZWwnLAogICAnYmFja2Zvcm0nLCAnc291cmNlcy9icm93c2Vy L2dlbmVyYXRlX3VybCcsICdzb3VyY2VzL3V0aWxzJywgJ3BnYWRtaW4uYnJvd3Nlci51dGlscycs CiAgICdwZ2FkbWluLmJhY2tmb3JtJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsICQsIF8sIFMsIHBn QWRtaW4sIE1lbnUsIEJhY2tib25lLCBBbGVydGlmeSwgcGdCcm93c2VyLCBCYWNrZm9ybSwgZ2Vu ZXJhdGVVcmwsIGNvbW1vblV0aWxzKSB7CitdLCBmdW5jdGlvbigKKyAgcGdhZG1pblRyZWVOb2Rl LAorICBnZXR0ZXh0LCAkLCBfLCBTLCBwZ0FkbWluLCBNZW51LCBCYWNrYm9uZSwgQWxlcnRpZnks IHBnQnJvd3NlciwgQmFja2Zvcm0sIGdlbmVyYXRlVXJsLCBjb21tb25VdGlscykgewogCiAgIHZh ciB3Y0RvY2tlciA9IHdpbmRvdy53Y0RvY2tlciwKICAgICBrZXlDb2RlID0gewpAQCAtMTU2Niw3 ICsxNTY5LDYgQEAgZGVmaW5lKCdwZ2FkbWluLmJyb3dzZXIubm9kZScsIFsKICAgICAgKiBkZXBl bmRzLCBzdGF0aXN0aWNzCiAgICAgICovCiAgICAgZ2VuZXJhdGVfdXJsOiBmdW5jdGlvbihpdGVt LCB0eXBlLCBkLCB3aXRoX2lkLCBpbmZvKSB7Ci0KICAgICAgIHZhciBvcFVSTCA9IHsKICAgICAg ICAgICAnY3JlYXRlJzogJ29iaicsCiAgICAgICAgICAgJ2Ryb3AnOiAnb2JqJywKQEAgLTE2MDgs MjQgKzE2MTAsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nlci5ub2RlJywgWwogICAgIENvbGxl Y3Rpb246IHBnQnJvd3Nlci5EYXRhQ29sbGVjdGlvbiwKICAgICAvLyBCYXNlIGNsYXNzIGZvciBO b2RlIERhdGEgTW9kZWwKICAgICBNb2RlbDogcGdCcm93c2VyLkRhdGFNb2RlbCwKLSAgICBnZXRU cmVlTm9kZUhpZXJhcmNoeTogZnVuY3Rpb24oaSkgewotICAgICAgdmFyIGlkeCA9IDAsCi0gICAg ICAgIHJlcyA9IHt9LAotICAgICAgICB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgIGQ7Ci0g ICAgICBkbyB7Ci0gICAgICAgIGQgPSB0Lml0ZW1EYXRhKGkpOwotICAgICAgICBpZiAoZC5fdHlw ZSBpbiBwZ0Jyb3dzZXIuTm9kZXMgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdLmhhc0lkKSB7 Ci0gICAgICAgICAgcmVzW2QuX3R5cGVdID0gXy5leHRlbmQoe30sIGQsIHsKLSAgICAgICAgICAg ICdwcmlvcml0eSc6IGlkeCwKLSAgICAgICAgICB9KTsKLSAgICAgICAgICBpZHggLT0gMTsKLSAg ICAgICAgfQotICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7 Ci0gICAgICB9IHdoaWxlIChpKTsKLQotICAgICAgcmV0dXJuIHJlczsKLSAgICB9LAorICAgIGdl dFRyZWVOb2RlSGllcmFyY2h5OiBwZ2FkbWluVHJlZU5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHlG cm9tSWRlbnRpZmllci5iaW5kKHBnQnJvd3NlciksCiAgICAgY2FjaGU6IGZ1bmN0aW9uKHVybCwg bm9kZV9pbmZvLCBsZXZlbCwgZGF0YSkgewogICAgICAgdmFyIGNhY2hlZCA9IHRoaXMuY2FjaGVk ID0gdGhpcy5jYWNoZWQgfHwge30sCiAgICAgICAgIGhhc2ggPSB1cmwsCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvYWxlcnRpZnkvZGlhbG9nLmpzIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL2FsZXJ0aWZ5L2RpYWxvZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMC4uNWE4NjQ2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMv YWxlcnRpZnkvZGlhbG9nLmpzCkBAIC0wLDAgKzEsMTI5IEBACisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFz ZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBnZXR0 ZXh0IGZyb20gJy4uL2dldHRleHQnOworaW1wb3J0IHtzcHJpbnRmfSBmcm9tICdzcHJpbnRmLWpz JzsKK2ltcG9ydCB7RGlhbG9nRmFjdG9yeX0gZnJvbSAnLi9kaWFsb2dfZmFjdG9yeSc7CitpbXBv cnQgQmFja2Zvcm0gZnJvbSAnLi4vYmFja2Zvcm0ucGdhZG1pbic7CitpbXBvcnQge2dldFRyZWVO b2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXJ9IGZyb20gJy4uL3RyZWUvcGdhZG1pbl90cmVlX25v ZGUnOworCisvKioKKyAqIFRoaXMgY2xhc3MgY2FuIGJlIGV4dGVuZGVkIHRvIGNyZWF0ZSBuZXcg ZGlhbG9nIGJveGVzLgorICogRXhhbXBsZXMgb2YgdGhpcyBjYW4gYmUgZm91bmQgaW46CisgKiBg d2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2t1cC9iYWNrdXBfZGlhbG9nLmpzYAorICoKKyAqIERv IG5vdCBmb3JnZXQgdG8gYWRkIHRoZSBuZXcgRGlhbG9nIHR5cGUgdG8gdGhlIGBEaWFsb2dGYWN0 b3J5YAorICovCitleHBvcnQgY2xhc3MgRGlhbG9nIHsKKyAgY29uc3RydWN0b3IoZXJyb3JBbGVy dFRpdGxlLAorICAgICAgICAgICAgICBkaWFsb2dDb250YWluZXJTZWxlY3RvciwKKyAgICAgICAg ICAgICAgcGdCcm93c2VyLCAkLCBhbGVydGlmeSwgRGlhbG9nTW9kZWwsCisgICAgICAgICAgICAg IGJhY2tmb3JtID0gQmFja2Zvcm0pIHsKKyAgICB0aGlzLmVycm9yQWxlcnRUaXRsZSA9IGVycm9y QWxlcnRUaXRsZTsKKyAgICB0aGlzLmFsZXJ0aWZ5ID0gYWxlcnRpZnk7CisgICAgdGhpcy5wZ0Jy b3dzZXIgPSBwZ0Jyb3dzZXI7CisgICAgdGhpcy5qcXVlcnkgPSAkOworICAgIHRoaXMuZGlhbG9n TW9kZWwgPSBEaWFsb2dNb2RlbDsKKyAgICB0aGlzLmJhY2tmb3JtID0gYmFja2Zvcm07CisgICAg dGhpcy5kaWFsb2dDb250YWluZXJTZWxlY3RvciA9IGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yOwor ICB9CisKKyAgcmV0cmlldmVBbmNlc3Rvck9mVHlwZVNlcnZlcihpdGVtKSB7CisgICAgbGV0IHNl cnZlckluZm9ybWF0aW9uID0gbnVsbDsKKyAgICBsZXQgYWNpVHJlZUl0ZW0gPSBpdGVtIHx8IHRo aXMucGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdGVkKCk7CisgICAgbGV0IHRyZWVOb2RlID0gdGhp cy5wZ0Jyb3dzZXIudHJlZU1lbnUuZmluZE5vZGVCeURvbUVsZW1lbnQoYWNpVHJlZUl0ZW0pOwor CisgICAgd2hpbGUgKHRyZWVOb2RlKSB7CisgICAgICBjb25zdCBub2RlX2RhdGEgPSB0cmVlTm9k ZS5nZXREYXRhKCk7CisgICAgICBpZiAobm9kZV9kYXRhLl90eXBlID09PSAnc2VydmVyJykgewor ICAgICAgICBzZXJ2ZXJJbmZvcm1hdGlvbiA9IG5vZGVfZGF0YTsKKyAgICAgICAgYnJlYWs7Cisg ICAgICB9CisKKyAgICAgIGlmICh0cmVlTm9kZS5oYXNQYXJlbnQoKSkgeworICAgICAgICB0cmVl Tm9kZSA9IHRyZWVOb2RlLnBhcmVudCgpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5h bGVydGlmeS5hbGVydCgKKyAgICAgICAgICBnZXR0ZXh0KHRoaXMuZXJyb3JBbGVydFRpdGxlKSwK KyAgICAgICAgICBnZXR0ZXh0KCdQbGVhc2Ugc2VsZWN0IHNlcnZlciBvciBjaGlsZCBub2RlIGZy b20gdGhlIGJyb3dzZXIgdHJlZS4nKQorICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICAg IH0KKyAgICB9CisgICAgcmV0dXJuIHNlcnZlckluZm9ybWF0aW9uOworICB9CisKKyAgaGFzQmlu YXJpZXNDb25maWd1cmF0aW9uKHNlcnZlckluZm9ybWF0aW9uKSB7CisgICAgY29uc3QgbW9kdWxl ID0gJ3BhdGhzJzsKKyAgICBsZXQgcHJlZmVyZW5jZV9uYW1lID0gJ3BnX2Jpbl9kaXInOworICAg IGxldCBtc2cgPSBnZXR0ZXh0KCdQbGVhc2UgY29uZmlndXJlIHRoZSBQb3N0Z3JlU1FMIEJpbmFy eSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJyk7CisKKyAgICBpZiAoKHNlcnZlcklu Zm9ybWF0aW9uLnR5cGUgJiYgc2VydmVySW5mb3JtYXRpb24udHlwZSA9PT0gJ3BwYXMnKSB8fAor ICAgICAgc2VydmVySW5mb3JtYXRpb24uc2VydmVyX3R5cGUgPT09ICdwcGFzJykgeworICAgICAg cHJlZmVyZW5jZV9uYW1lID0gJ3BwYXNfYmluX2Rpcic7CisgICAgICBtc2cgPSBnZXR0ZXh0KCdQ bGVhc2UgY29uZmlndXJlIHRoZSBFREIgQWR2YW5jZWQgU2VydmVyIEJpbmFyeSBQYXRoIGluIHRo ZSBQcmVmZXJlbmNlcyBkaWFsb2cuJyk7CisgICAgfQorICAgIGNvbnN0IHByZWZlcmVuY2UgPSB0 aGlzLnBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZShtb2R1bGUsIHByZWZlcmVuY2VfbmFtZSk7CisK KyAgICBpZiAocHJlZmVyZW5jZSkgeworICAgICAgaWYgKCFwcmVmZXJlbmNlLnZhbHVlKSB7Cisg ICAgICAgIHRoaXMuYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnQ29uZmlndXJhdGlvbiByZXF1aXJl ZCcpLCBtc2cpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfSBlbHNlIHsK KyAgICAgIHRoaXMuYWxlcnRpZnkuYWxlcnQoCisgICAgICAgIGdldHRleHQodGhpcy5lcnJvckFs ZXJ0VGl0bGUpLAorICAgICAgICBzcHJpbnRmKGdldHRleHQoJ0ZhaWxlZCB0byBsb2FkIHByZWZl cmVuY2UgJXMgb2YgbW9kdWxlICVzJyksIHByZWZlcmVuY2VfbmFtZSwgbW9kdWxlKQorICAgICAg KTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH0KKwor ICBkaWFsb2dOYW1lKCkgeworICAgIHJldHVybiB1bmRlZmluZWQ7CisgIH0KKworICBjcmVhdGVP ckdldERpYWxvZyhkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nKSB7CisgICAgY29uc3QgZGlhbG9n TmFtZSA9IHRoaXMuZGlhbG9nTmFtZSh0eXBlT2ZEaWFsb2cpOworCisgICAgaWYgKCF0aGlzLmFs ZXJ0aWZ5W2RpYWxvZ05hbWVdKSB7CisgICAgICBjb25zdCBzZWxmID0gdGhpczsKKyAgICAgIHRo aXMuYWxlcnRpZnkuZGlhbG9nKGRpYWxvZ05hbWUsIGZ1bmN0aW9uIGZhY3RvcnkoKSB7CisgICAg ICAgIHJldHVybiBzZWxmLmRpYWxvZ0ZhY3RvcnkoZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZyk7 CisgICAgICB9KTsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMuYWxlcnRpZnlbZGlhbG9nTmFtZV07 CisgIH0KKworICBkaWFsb2dGYWN0b3J5KGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2cpIHsKKyAg ICBjb25zdCBmYWN0b3J5ID0gbmV3IERpYWxvZ0ZhY3RvcnkoCisgICAgICB0aGlzLnBnQnJvd3Nl ciwKKyAgICAgIHRoaXMuanF1ZXJ5LAorICAgICAgdGhpcy5hbGVydGlmeSwKKyAgICAgIHRoaXMu ZGlhbG9nTW9kZWwsCisgICAgICB0aGlzLmJhY2tmb3JtLAorICAgICAgdGhpcy5kaWFsb2dDb250 YWluZXJTZWxlY3Rvcik7CisgICAgcmV0dXJuIGZhY3RvcnkuY3JlYXRlKGRpYWxvZ1RpdGxlLCB0 eXBlT2ZEaWFsb2cpOworICB9CisKKyAgY2FuRXhlY3V0ZU9uQ3VycmVudERhdGFiYXNlKGFjaVRy ZWVJdGVtKSB7CisgICAgY29uc3QgdHJlZUluZm8gPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21J ZGVudGlmaWVyLmFwcGx5KHRoaXMucGdCcm93c2VyLCBbYWNpVHJlZUl0ZW1dKTsKKworICAgIGlm ICh0cmVlSW5mby5kYXRhYmFzZSAmJiB0cmVlSW5mby5kYXRhYmFzZS5fbGFiZWwuaW5kZXhPZign PScpID49IDApIHsKKyAgICAgIHRoaXMuYWxlcnRpZnkuYWxlcnQoCisgICAgICAgIGdldHRleHQo dGhpcy5lcnJvckFsZXJ0VGl0bGUpLAorICAgICAgICBnZXR0ZXh0KCdEYXRhYmFzZXMgd2l0aCA9 IHN5bWJvbHMgaW4gdGhlIG5hbWUgY2Fubm90IGJlIGJhY2tlZCB1cCBvciByZXN0b3JlZCB1c2lu ZyB0aGlzIHV0aWxpdHkuJykKKyAgICAgICk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor CisgICAgcmV0dXJuIHRydWU7CisgIH0KK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9hbGVydGlmeS9kaWFsb2dfZmFjdG9yeS5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9h bGVydGlmeS9kaWFsb2dfZmFjdG9yeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMC4uNTAwMTQwYjgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMv YWxlcnRpZnkvZGlhbG9nX2ZhY3RvcnkuanMKQEAgLTAsMCArMSw1MiBAQAorLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8v IHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBv cnQgKiBhcyBCYWNrdXBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vdG9vbHMvYmFja3VwL3N0YXRpYy9q cy9iYWNrdXBfZGlhbG9nX3dyYXBwZXInOworaW1wb3J0IHtSZXN0b3JlRGlhbG9nV3JhcHBlcn0g ZnJvbSAnLi4vLi4vLi4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2dfd3Jh cHBlcic7CisKK2V4cG9ydCBjbGFzcyBEaWFsb2dGYWN0b3J5IHsKKyAgY29uc3RydWN0b3IocGdC cm93c2VyLCAkLAorICAgICAgICAgICAgICBhbGVydGlmeSwgRGlhbG9nTW9kZWwsCisgICAgICAg ICAgICAgIGJhY2tmb3JtLCBkaWFsb2dDb250YWluZXJTZWxlY3RvcikgeworICAgIHRoaXMucGdC cm93c2VyID0gcGdCcm93c2VyOworICAgIHRoaXMuanF1ZXJ5ID0gJDsKKyAgICB0aGlzLmFsZXJ0 aWZ5ID0gYWxlcnRpZnk7CisgICAgdGhpcy5kaWFsb2dNb2RlbCA9IERpYWxvZ01vZGVsOworICAg IHRoaXMuYmFja2Zvcm0gPSBiYWNrZm9ybTsKKyAgICB0aGlzLmRpYWxvZ0NvbnRhaW5lclNlbGVj dG9yID0gZGlhbG9nQ29udGFpbmVyU2VsZWN0b3I7CisgIH0KKworICBjcmVhdGUoZGlhbG9nVGl0 bGUsIHR5cGVPZkRpYWxvZykgeworICAgIGlmICh0eXBlT2ZEaWFsb2cgPT09ICdyZXN0b3JlJykg eworICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzdG9yZURpYWxvZyhkaWFsb2dUaXRsZSwgdHlw ZU9mRGlhbG9nKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQmFja3Vw RGlhbG9nKGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2cpOworICAgIH0KKyAgfQorCisgIGNyZWF0 ZVJlc3RvcmVEaWFsb2coZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZykgeworICAgIHJldHVybiBu ZXcgUmVzdG9yZURpYWxvZ1dyYXBwZXIoCisgICAgICB0aGlzLmRpYWxvZ0NvbnRhaW5lclNlbGVj dG9yLCBkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nLAorICAgICAgdGhpcy5qcXVlcnksCisgICAg ICB0aGlzLnBnQnJvd3NlciwKKyAgICAgIHRoaXMuYWxlcnRpZnksCisgICAgICB0aGlzLmRpYWxv Z01vZGVsLAorICAgICAgdGhpcy5iYWNrZm9ybSk7CisgIH0KKworICBjcmVhdGVCYWNrdXBEaWFs b2coZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZykgeworICAgIHJldHVybiBuZXcgQmFja3VwRGlh bG9nLkJhY2t1cERpYWxvZ1dyYXBwZXIoCisgICAgICB0aGlzLmRpYWxvZ0NvbnRhaW5lclNlbGVj dG9yLCBkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nLAorICAgICAgdGhpcy5qcXVlcnksCisgICAg ICB0aGlzLnBnQnJvd3NlciwKKyAgICAgIHRoaXMuYWxlcnRpZnksCisgICAgICB0aGlzLmRpYWxv Z01vZGVsLAorICAgICAgdGhpcy5iYWNrZm9ybSk7CisgIH0KK30KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfd3JhcHBlci5qcyBiL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfd3JhcHBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uYjVmZjgyMDQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvYWxlcnRpZnkvZGlhbG9nX3dyYXBwZXIuanMKQEAgLTAsMCArMSw1NyBAQAor aW1wb3J0ICogYXMgY29tbW9uVXRpbHMgZnJvbSAnLi4vdXRpbHMnOworCitleHBvcnQgY2xhc3Mg RGlhbG9nV3JhcHBlciB7CisgIGNvbnN0cnVjdG9yKAorICAgIGRpYWxvZ0NvbnRhaW5lclNlbGVj dG9yLCBkaWFsb2dUaXRsZSwganF1ZXJ5LCBwZ0Jyb3dzZXIsCisgICAgYWxlcnRpZnksIGRpYWxv Z01vZGVsLCBiYWNrZm9ybSkgeworICAgIHRoaXMuaG9va3MgPSB7CisgICAgICBvbmNsb3NlOiBm dW5jdGlvbiAoKSB7CisgICAgICAgIGlmICh0aGlzLnZpZXcpIHsKKyAgICAgICAgICB0aGlzLnZp ZXcucmVtb3ZlKHsKKyAgICAgICAgICAgIGRhdGE6IHRydWUsCisgICAgICAgICAgICBpbnRlcm5h bDogdHJ1ZSwKKyAgICAgICAgICAgIHNpbGVudDogdHJ1ZSwKKyAgICAgICAgICB9KTsKKyAgICAg ICAgfQorICAgICAgfSwKKyAgICB9OworICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3Ig PSBkaWFsb2dDb250YWluZXJTZWxlY3RvcjsKKyAgICB0aGlzLmRpYWxvZ1RpdGxlID0gZGlhbG9n VGl0bGU7CisgICAgdGhpcy5qcXVlcnkgPSBqcXVlcnk7CisgICAgdGhpcy5wZ0Jyb3dzZXIgPSBw Z0Jyb3dzZXI7CisgICAgdGhpcy5hbGVydGlmeSA9IGFsZXJ0aWZ5OworICAgIHRoaXMuZGlhbG9n TW9kZWwgPSBkaWFsb2dNb2RlbDsKKyAgICB0aGlzLmJhY2tmb3JtID0gYmFja2Zvcm07CisgIH0K KworICBidWlsZCgpIHsKKyAgICB0aGlzLmFsZXJ0aWZ5LnBnRGlhbG9nQnVpbGQuYXBwbHkodGhp cyk7CisgIH0KKworICB3YXNIZWxwQnV0dG9uUHJlc3NlZChlKSB7CisgICAgcmV0dXJuIGUuYnV0 dG9uLmVsZW1lbnQubmFtZSA9PT0gJ2RpYWxvZ19oZWxwJworICAgICAgfHwgZS5idXR0b24uZWxl bWVudC5uYW1lID09PSAnb2JqZWN0X2hlbHAnOworICB9CisKKyAgZ2V0U2VsZWN0ZWROb2RlRGF0 YShzZWxlY3RlZFRyZWVOb2RlKSB7CisgICAgaWYgKCF0aGlzLmlzTm9kZVNlbGVjdGVkKHNlbGVj dGVkVHJlZU5vZGUpKSB7CisgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0KKyAgICBjb25z dCB0cmVlTm9kZURhdGEgPSBzZWxlY3RlZFRyZWVOb2RlLmdldERhdGEoKTsKKyAgICBpZiAodHJl ZU5vZGVEYXRhKSB7CisgICAgICByZXR1cm4gdHJlZU5vZGVEYXRhOworICAgIH0KKyAgICByZXR1 cm4gdW5kZWZpbmVkOworICB9CisKKyAgZm9jdXNPbkRpYWxvZyhkaWFsb2cpIHsKKyAgICBkaWFs b2cuJGVsLmF0dHIoJ3RhYmluZGV4JywgLTEpOworICAgIHRoaXMucGdCcm93c2VyLmtleWJvYXJk TmF2aWdhdGlvbi5nZXREaWFsb2dUYWJOYXZpZ2F0b3IoZGlhbG9nKTsKKyAgICBjb25zdCBjb250 YWluZXIgPSBkaWFsb2cuJGVsLmZpbmQoJy50YWItY29udGVudDpmaXJzdCA+IC50YWItcGFuZS5h Y3RpdmU6Zmlyc3QnKTsKKyAgICBjb21tb25VdGlscy5maW5kQW5kU2V0Rm9jdXMoY29udGFpbmVy KTsKKyAgfQorCisgIGlzTm9kZVNlbGVjdGVkKHNlbGVjdGVkVHJlZU5vZGUpIHsKKyAgICByZXR1 cm4gc2VsZWN0ZWRUcmVlTm9kZTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL21lbnUvY2FuX2NyZWF0ZS5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9tZW51L2Nh bl9jcmVhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjQ3NmJlNDM3 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL21lbnUvY2FuX2NyZWF0 ZS5qcwpAQCAtMCwwICsxLDM3IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworZXhwb3J0IGZ1bmN0aW9uIGNhbkNyZWF0ZShw Z0Jyb3dzZXIsIGNoaWxkT2ZDYXRhbG9nVHlwZSwgaXRlbSwgZGF0YSkgeworICAvL0lmIGNoZWNr IGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51CisgIGlmIChkYXRhICYm IGRhdGEuY2hlY2sgPT09IGZhbHNlKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICBsZXQg bm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5maW5kTm9kZUJ5RG9tRWxlbWVudChpdGVtKTsKKwor ICBpZiAobm9kZS5hbnlGYW1pbHlNZW1iZXIocGFyZW50Q2F0YWxvZ09mVGFibGVDaGlsZC5iaW5k KG51bGwsIGNoaWxkT2ZDYXRhbG9nVHlwZSkpKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisK KyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHBhcmVudENhdGFsb2dPZlRhYmxlQ2hpbGQo YXJnLCBub2RlKSB7CisgIGlmIChhcmcgPT09IG5vZGUuZ2V0RGF0YSgpLl90eXBlKSB7CisgICAg aWYgKG5vZGUuaGFzUGFyZW50KCkpIHsKKworICAgICAgbGV0IHBhcmVudCA9IG5vZGUucGFyZW50 KCk7CisgICAgICBpZiAoJ2NhdGFsb2cnID09PSBwYXJlbnQuZ2V0RGF0YSgpLl90eXBlKSB7Cisg ICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiBmYWxz ZTsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9tZW51L21lbnVfZW5hYmxl ZC5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9tZW51L21lbnVfZW5hYmxlZC5qcwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMDVmZjBmNGEKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvbWVudS9tZW51X2VuYWJsZWQuanMKQEAgLTAsMCArMSw1 MiBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisv LyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UK Ky8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLworCitmdW5jdGlvbiBpc05vZGVUeXBlU3VwcG9ydGVkKGJhY2t1cFN1cHBvcnRl ZE5vZGVzLCBub2RlRGF0YVR5cGUsIHRyZWVOb2RlKSB7CisgIHJldHVybiBfLmluZGV4T2YoYmFj a3VwU3VwcG9ydGVkTm9kZXMsIG5vZGVEYXRhVHlwZSkgIT09IC0xCisgICAgJiYgYW5jZXN0b3JX aXRoVHlwZUNhdGFsb2dEb2VzTm90RXhpc3RzKHRyZWVOb2RlKTsKK30KKworZXhwb3J0IGZ1bmN0 aW9uIGlzUHJvdmlkZWREYXRhVmFsaWQodHJlZU5vZGVEYXRhKSB7CisgIHJldHVybiAhXy5pc1Vu ZGVmaW5lZCh0cmVlTm9kZURhdGEpICYmICFfLmlzTnVsbCh0cmVlTm9kZURhdGEpOworfQorCitm dW5jdGlvbiBkb2VzTm9kZUhhdmVNZW51KHRyZWVOb2RlRGF0YSkgeworICByZXR1cm4gKHRyZWVO b2RlRGF0YS5fdHlwZSA9PT0gJ2RhdGFiYXNlJyAmJiB0cmVlTm9kZURhdGEuYWxsb3dDb25uKQor ICAgIHx8IHRyZWVOb2RlRGF0YS5fdHlwZSAhPT0gJ2RhdGFiYXNlJzsKK30KKworZnVuY3Rpb24g YW5jZXN0b3JXaXRoVHlwZUNhdGFsb2dEb2VzTm90RXhpc3RzKHRyZWVOb2RlKSB7CisgIGxldCBj dXJyZW50Tm9kZSA9IHRyZWVOb2RlOworCisgIHdoaWxlKGN1cnJlbnROb2RlLmhhc1BhcmVudCgp ICYmIHRyZWVOb2RlLnBhcmVudCgpLmdldERhdGEoKSAhPT0gbnVsbCkgeworICAgIGlmKGN1cnJl bnROb2RlLnBhcmVudCgpLmdldERhdGEoKS5fdHlwZSA9PT0gJ2NhdGFsb2cnKSB7CisgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJl bnQoKTsKKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitleHBvcnQgZnVuY3Rpb24gbWVudUVu YWJsZWQodHJlZSwgYmFja3VwU3VwcG9ydGVkTm9kZXMsIHRyZWVOb2RlRGF0YSwgZG9tVHJlZU5v ZGUpIHsKKyAgbGV0IHRyZWVOb2RlID0gdHJlZS5maW5kTm9kZUJ5RG9tRWxlbWVudChkb21UcmVl Tm9kZSk7CisgIGlmICghdHJlZU5vZGUpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBp ZiAoaXNQcm92aWRlZERhdGFWYWxpZCh0cmVlTm9kZURhdGEpKSB7CisgICAgcmV0dXJuIGlzTm9k ZVR5cGVTdXBwb3J0ZWQoYmFja3VwU3VwcG9ydGVkTm9kZXMsIHRyZWVOb2RlRGF0YS5fdHlwZSwg dHJlZU5vZGUpCisgICAgICAmJiBkb2VzTm9kZUhhdmVNZW51KHRyZWVOb2RlRGF0YSk7CisgIH0g ZWxzZSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUuanMgYi93ZWIvcGdhZG1pbi9z dGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMC4uMDBmMTBkMjQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9z dGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZS5qcwpAQCAtMCwwICsxLDcyIEBACisvLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisv LyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvKioKKyAqIFRoaXMgbWV0aG9kIHJlY2VpdmVk IHBnQnJvd3NlciBhbmQgbmV3IFRyZWVOb2RlIG9iamVjdAorICoKKyAqIFRoaXMgbWV0aG9kIHJl dHJpZXZlcyBhbGwgdGhlIGRhdGEgdGhhdCBleGlzdHMgaW4gdGhlIHRyZWUgbm9kZSBhbmQgaW4K KyAqIGBwZ0Jyb3dzZXIuTm9kZXNgIGZvciBhbGwgdGhlIHBhcmVudCBub2RlIG9mIHRoZSBwcm92 aWRlZCBub2RlLgorICoKKyAqIFRoZSAyIGNvbmRpdGlvbiB0byBnZXQgdGhlIGluZm9ybWF0aW9u IGZyb20gcGdCcm93c2VyLk5vZGVzIGFyZToKKyAqICAxIC0gdGhlIHZhcmlhYmxlIF90eXBlIG9m IHRoZSB0cmVlIG5vZGUKKyAqICAyIC0gdGhlIHByZXNlbmNlIG9mIGhhc0lkIGluIHRoZSBwZ0Jy b3dzZXIuTm9kZXMgZm9yIHRoZSBzcGVjaWZpYyBub2RlCisgKgorICogTnVtYmVyIDIgaXMgdXNl ZCB0byBpZ25vcmUgY29sbC0qIG5vZGVzIGFzIHRoZXkgZG8gbm90IGFkZCBhbnkgdXNlZnVsCisg KiBpbmZvcm1hdGlvbgorICovCitleHBvcnQgZnVuY3Rpb24gZ2V0VHJlZU5vZGVIaWVyYXJjaHlG cm9tRWxlbWVudChwZ0Jyb3dzZXIsIHRyZWVOb2RlKSB7CisgIHJldHVybiBnZXRUcmVlTm9kZUhp ZXJhcmNoeS5jYWxsKHBnQnJvd3NlciwgdHJlZU5vZGUpOworfQorCisvKioKKyAqIFRoaXMgbWV0 aG9kIHJlY2VpdmVkIGFuIEFDSSBUcmVlIEpRdWVyeSBub2RlCisgKgorICogTk9URTogdGhpcyBm dW5jdGlvbiBuZWVkIHRvIGJlIGNhbGxlZCBvbiBwZ0Jyb3dzZXIgaW5zdGFuY2UuCisgKiBnZXRU cmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLmFwcGx5KHBnQnJvd3NlciwgW2FjaVRyZWVO b2RlSWRlbnRpZmllcl0pCisgKgorICogVGhpcyBtZXRob2QgcmV0cmlldmVzIGFsbCB0aGUgZGF0 YSB0aGF0IGV4aXN0cyBpbiB0aGUgdHJlZSBub2RlIGFuZCBpbgorICogYHBnQnJvd3Nlci5Ob2Rl c2AgZm9yIGFsbCB0aGUgcGFyZW50IG5vZGUgb2YgdGhlIHByb3ZpZGVkIG5vZGUuCisgKgorICog VGhlIDIgY29uZGl0aW9uIHRvIGdldCB0aGUgaW5mb3JtYXRpb24gZnJvbSBwZ0Jyb3dzZXIuTm9k ZXMgYXJlOgorICogIDEgLSB0aGUgdmFyaWFibGUgX3R5cGUgb2YgdGhlIHRyZWUgbm9kZQorICog IDIgLSB0aGUgcHJlc2VuY2Ugb2YgaGFzSWQgaW4gdGhlIHBnQnJvd3Nlci5Ob2RlcyBmb3IgdGhl IHNwZWNpZmljIG5vZGUKKyAqCisgKiBOdW1iZXIgMiBpcyB1c2VkIHRvIGlnbm9yZSBjb2xsLSog bm9kZXMgYXMgdGhleSBkbyBub3QgYWRkIGFueSB1c2VmdWwKKyAqIGluZm9ybWF0aW9uCisgKi8K K2V4cG9ydCBmdW5jdGlvbiBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyKGFjaVRy ZWVOb2RlSWRlbnRpZmllcikgeworICBsZXQgaWRlbnRpZmllciA9IHRoaXMudHJlZU1lbnUudHJh bnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lUcmVlKGFjaVRyZWVOb2RlSWRlbnRpZmllcik7CisgIGxl dCBjdXJyZW50Tm9kZSA9IHRoaXMudHJlZU1lbnUuZmluZE5vZGUoaWRlbnRpZmllcik7CisgIHJl dHVybiBnZXRUcmVlTm9kZUhpZXJhcmNoeS5jYWxsKHRoaXMsIGN1cnJlbnROb2RlKTsKK30KKwor ZXhwb3J0IGZ1bmN0aW9uIGdldFRyZWVOb2RlSGllcmFyY2h5KGN1cnJlbnROb2RlKSB7CisgIGxl dCBpZHggPSAwOworICBsZXQgcmVzdWx0ID0ge307CisKKyAgZG8geworICAgIGNvbnN0IGN1cnJl bnROb2RlRGF0YSA9IGN1cnJlbnROb2RlLmdldERhdGEoKTsKKyAgICBpZiAoY3VycmVudE5vZGVE YXRhLl90eXBlIGluIHRoaXMuTm9kZXMgJiYgdGhpcy5Ob2Rlc1tjdXJyZW50Tm9kZURhdGEuX3R5 cGVdLmhhc0lkKSB7CisgICAgICBjb25zdCBub2RlVHlwZSA9IG1hcFR5cGUoY3VycmVudE5vZGVE YXRhLl90eXBlKTsKKyAgICAgIGlmIChyZXN1bHRbbm9kZVR5cGVdID09PSB1bmRlZmluZWQpIHsK KyAgICAgICAgcmVzdWx0W25vZGVUeXBlXSA9IF8uZXh0ZW5kKHt9LCBjdXJyZW50Tm9kZURhdGEs IHsKKyAgICAgICAgICAncHJpb3JpdHknOiBpZHgsCisgICAgICAgIH0pOworICAgICAgICBpZHgg LT0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5oYXNQ YXJlbnQoKSA/IGN1cnJlbnROb2RlLnBhcmVudCgpIDogbnVsbDsKKyAgfSB3aGlsZSAoY3VycmVu dE5vZGUpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIG1hcFR5cGUodHlwZSkg eworICByZXR1cm4gdHlwZSA9PT0gJ3BhcnRpdGlvbicgPyAndGFibGUnIDogdHlwZTsKK30KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwLmpzIGIv d2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXAuanMKaW5kZXggMWIwYjM2 MjguLmQ3NGVkNmRkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGlj L2pzL2JhY2t1cC5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2Jh Y2t1cC5qcwpAQCAtMyw5ICszLDEyIEBAIGRlZmluZShbCiAgICdzb3VyY2VzL2dldHRleHQnLCAn c291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3VuZGVyc2NvcmUu c3RyaW5nJywgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdiYWNrYm9uZScsICdwZ2FkbWluLmJhY2tn cmlkJywKICAgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5icm93c2VyJywgJ3NvdXJjZXMv dXRpbHMnLAorICAndG9vbHMvYmFja3VwL3N0YXRpYy9qcy9tZW51X3V0aWxzJywKKyAgJ3Rvb2xz L2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZycsCisgICdzb3VyY2VzL21lbnUvbWVudV9l bmFibGVkJywKIF0sIGZ1bmN0aW9uKAogICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBTLCBhbGVy dGlmeSwgQmFja2JvbmUsIEJhY2tncmlkLCBCYWNrZm9ybSwgcGdCcm93c2VyLAotY29tbW9uVXRp bHMKK2NvbW1vblV0aWxzLCBtZW51VXRpbHMsIGdsb2JhbEJhY2t1cERpYWxvZywgbWVudUVuYWJs ZWQKICkgewogCiAgIC8vIGlmIG1vZHVsZSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCByZWZlciB0 byB0aGF0LgpAQCAtMzk0LDQ4ICszOTcsNiBAQCBjb21tb25VdGlscwogCiAgICAgICB0aGlzLmlu aXRpYWxpemVkID0gdHJ1ZTsKIAotICAgICAgLy8gRGVmaW5lIGxpc3Qgb2Ygbm9kZXMgb24gd2hp Y2ggYmFja3VwIGNvbnRleHQgbWVudSBvcHRpb24gYXBwZWFycwotICAgICAgdmFyIGJhY2t1cF9z dXBwb3J0ZWRfbm9kZXMgPSBbCi0gICAgICAgICdkYXRhYmFzZScsICdzY2hlbWEnLCAndGFibGUn LCAncGFydGl0aW9uJywKLSAgICAgIF07Ci0KLSAgICAgIC8qKgotICAgICAgICBFbmFibGUvZGlz YWJsZSBiYWNrdXAgbWVudSBpbiB0b29scyBiYXNlZAotICAgICAgICBvbiBub2RlIHNlbGVjdGVk Ci0gICAgICAgIGlmIHNlbGVjdGVkIG5vZGUgaXMgcHJlc2VudCBpbiBzdXBwb3J0ZWRfbm9kZXMs Ci0gICAgICAgIG1lbnUgd2lsbCBiZSBlbmFibGVkIG90aGVyd2lzZSBkaXNhYmxlZC4KLSAgICAg ICAgQWxzbywgaGlkZSBpdCBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0YWxvZ3MKLSAgICAgICovCi0g ICAgICB2YXIgbWVudV9lbmFibGVkID0gZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0pIHsKLSAgICAg ICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICBpID0gaXRlbSwKLSAgICAgICAg ICBkID0gaXRlbURhdGEsCi0gICAgICAgICAgcGFyZW50X2l0ZW0gPSB0Lmhhc1BhcmVudChpKSA/ IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVt ID8gdC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOwotCi0gICAgICAgIGlmICghXy5pc1Vu ZGVmaW5lZChkKSAmJiAhXy5pc051bGwoZCkgJiYgIV8uaXNOdWxsKHBhcmVudF9kYXRhKSkgewot ICAgICAgICAgIGlmIChfLmluZGV4T2YoYmFja3VwX3N1cHBvcnRlZF9ub2RlcywgZC5fdHlwZSkg IT09IC0xICYmCi0gICAgICAgICAgICBwYXJlbnRfZGF0YS5fdHlwZSAhPSAnY2F0YWxvZycpIHsK LSAgICAgICAgICAgIGlmIChkLl90eXBlID09ICdkYXRhYmFzZScgJiYgZC5hbGxvd0Nvbm4pCi0g ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgZWxzZSBpZiAoZC5fdHlwZSAh PSAnZGF0YWJhc2UnKQotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGVs c2UKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0gZWxzZQotICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICByZXR1cm4gZmFs c2U7Ci0gICAgICB9OwotCi0gICAgICB2YXIgbWVudV9lbmFibGVkX3NlcnZlciA9IGZ1bmN0aW9u KGl0ZW1EYXRhKSB7Ci0gICAgICAgIC8vIElmIHNlcnZlciBub2RlIHNlbGVjdGVkICYmIGNvbm5l Y3RlZAotICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoaXRlbURhdGEpICYmICFfLmlzTnVsbChp dGVtRGF0YSkpCi0gICAgICAgICAgcmV0dXJuICgoJ3NlcnZlcicgPT09IGl0ZW1EYXRhLl90eXBl KSAmJiBpdGVtRGF0YS5jb25uZWN0ZWQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcmV0dXJu IGZhbHNlOwotICAgICAgfTsKLQogICAgICAgLy8gRGVmaW5lIHRoZSBub2RlcyBvbiB3aGljaCB0 aGUgbWVudXMgdG8gYmUgYXBwZWFyCiAgICAgICB2YXIgbWVudXMgPSBbewogICAgICAgICBuYW1l OiAnYmFja3VwX2dsb2JhbCcsCkBAIC00NDUsNyArNDA2LDcgQEAgY29tbW9uVXRpbHMKICAgICAg ICAgcHJpb3JpdHk6IDEyLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFja3VwIEdsb2JhbHMu Li4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAgICAgZW5hYmxlOiBt ZW51X2VuYWJsZWRfc2VydmVyLAorICAgICAgICBlbmFibGU6IG1lbnVVdGlscy5tZW51RW5hYmxl ZFNlcnZlciwKICAgICAgIH0sIHsKICAgICAgICAgbmFtZTogJ2JhY2t1cF9zZXJ2ZXInLAogICAg ICAgICBtb2R1bGU6IHRoaXMsCkBAIC00NTQsNyArNDE1LDcgQEAgY29tbW9uVXRpbHMKICAgICAg ICAgcHJpb3JpdHk6IDEyLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFja3VwIFNlcnZlci4u LicpLAogICAgICAgICBpY29uOiAnZmEgZmEtZmxvcHB5LW8nLAotICAgICAgICBlbmFibGU6IG1l bnVfZW5hYmxlZF9zZXJ2ZXIsCisgICAgICAgIGVuYWJsZTogbWVudVV0aWxzLm1lbnVFbmFibGVk U2VydmVyLAogICAgICAgfSwgewogICAgICAgICBuYW1lOiAnYmFja3VwX2dsb2JhbF9jdHgnLAog ICAgICAgICBtb2R1bGU6IHRoaXMsCkBAIC00NjQsNyArNDI1LDcgQEAgY29tbW9uVXRpbHMKICAg ICAgICAgcHJpb3JpdHk6IDEyLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFja3VwIEdsb2Jh bHMuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAgICAgZW5hYmxl OiBtZW51X2VuYWJsZWRfc2VydmVyLAorICAgICAgICBlbmFibGU6IG1lbnVVdGlscy5tZW51RW5h YmxlZFNlcnZlciwKICAgICAgIH0sIHsKICAgICAgICAgbmFtZTogJ2JhY2t1cF9zZXJ2ZXJfY3R4 JywKICAgICAgICAgbW9kdWxlOiB0aGlzLApAQCAtNDc0LDcgKzQzNSw3IEBAIGNvbW1vblV0aWxz CiAgICAgICAgIHByaW9yaXR5OiAxMiwKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cCBT ZXJ2ZXIuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAgICAgZW5h YmxlOiBtZW51X2VuYWJsZWRfc2VydmVyLAorICAgICAgICBlbmFibGU6IG1lbnVVdGlscy5tZW51 RW5hYmxlZFNlcnZlciwKICAgICAgIH0sIHsKICAgICAgICAgbmFtZTogJ2JhY2t1cF9vYmplY3Qn LAogICAgICAgICBtb2R1bGU6IHRoaXMsCkBAIC00ODMsMjAgKzQ0NCwyMiBAQCBjb21tb25VdGls cwogICAgICAgICBwcmlvcml0eTogMTEsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAu Li4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAgICAgZW5hYmxlOiBt ZW51X2VuYWJsZWQsCisgICAgICAgIGVuYWJsZTogbWVudUVuYWJsZWQubWVudUVuYWJsZWQuYmlu ZChudWxsLAorICAgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudSwgbWVudVV0aWxzLmJhY2t1cFN1 cHBvcnRlZE5vZGVzKSwKICAgICAgIH1dOwogCi0gICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHgg PCBiYWNrdXBfc3VwcG9ydGVkX25vZGVzLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgIGZvciAodmFy IGlkeCA9IDA7IGlkeCA8IG1lbnVVdGlscy5iYWNrdXBTdXBwb3J0ZWROb2Rlcy5sZW5ndGg7IGlk eCsrKSB7CiAgICAgICAgIG1lbnVzLnB1c2goewotICAgICAgICAgIG5hbWU6ICdiYWNrdXBfJyAr IGJhY2t1cF9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKLSAgICAgICAgICBub2RlOiBiYWNrdXBfc3Vw cG9ydGVkX25vZGVzW2lkeF0sCisgICAgICAgICAgbmFtZTogJ2JhY2t1cF8nICsgbWVudVV0aWxz LmJhY2t1cFN1cHBvcnRlZE5vZGVzW2lkeF0sCisgICAgICAgICAgbm9kZTogbWVudVV0aWxzLmJh Y2t1cFN1cHBvcnRlZE5vZGVzW2lkeF0sCiAgICAgICAgICAgbW9kdWxlOiB0aGlzLAogICAgICAg ICAgIGFwcGxpZXM6IFsnY29udGV4dCddLAogICAgICAgICAgIGNhbGxiYWNrOiAnYmFja3VwX29i amVjdHMnLAogICAgICAgICAgIHByaW9yaXR5OiAxMSwKICAgICAgICAgICBsYWJlbDogZ2V0dGV4 dCgnQmFja3VwLi4uJyksCiAgICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAg ICAgICBlbmFibGU6IG1lbnVfZW5hYmxlZCwKKyAgICAgICAgICBlbmFibGU6IG1lbnVFbmFibGVk Lm1lbnVFbmFibGVkLmJpbmQobnVsbCwKKyAgICAgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudSwg bWVudVV0aWxzLmJhY2t1cFN1cHBvcnRlZE5vZGVzKSwKICAgICAgICAgfSk7CiAgICAgICB9CiAK QEAgLTUyMSw1NDIgKzQ4NCwyNSBAQCBjb21tb25VdGlscwogICAgIH0sCiAKICAgICAvLyBDYWxs YmFjayB0byBkcmF3IEJhY2t1cCBEaWFsb2cgZm9yIGdsb2JhbHMvc2VydmVyCi0gICAgc3RhcnRf YmFja3VwX2dsb2JhbF9zZXJ2ZXI6IGZ1bmN0aW9uKGFjdGlvbiwgaXRlbSwgcGFyYW1zKSB7Ci0g ICAgICB2YXIgaSA9IGl0ZW0gfHwgcGdCcm93c2VyLnRyZWUuc2VsZWN0ZWQoKSwKLSAgICAgICAg c2VydmVyX2RhdGEgPSBudWxsOwotCi0gICAgICB3aGlsZSAoaSkgewotICAgICAgICB2YXIgbm9k ZV9kYXRhID0gcGdCcm93c2VyLnRyZWUuaXRlbURhdGEoaSk7Ci0gICAgICAgIGlmIChub2RlX2Rh dGEuX3R5cGUgPT0gJ3NlcnZlcicpIHsKLSAgICAgICAgICBzZXJ2ZXJfZGF0YSA9IG5vZGVfZGF0 YTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwZ0Jyb3dzZXIu dHJlZS5oYXNQYXJlbnQoaSkpIHsKLSAgICAgICAgICBpID0gJChwZ0Jyb3dzZXIudHJlZS5wYXJl bnQoaSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAg ICAgICAgICAgZ2V0dGV4dCgnQmFja3VwIEVycm9yJyksCi0gICAgICAgICAgICBnZXR0ZXh0KCdQ bGVhc2Ugc2VsZWN0IHNlcnZlciBvciBjaGlsZCBub2RlIGZyb20gdGhlIGJyb3dzZXIgdHJlZS4n KQotICAgICAgICAgICk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLQot ICAgICAgaWYgKCFzZXJ2ZXJfZGF0YSkgewotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0KLSAg ICAgIHZhciBtb2R1bGUgPSAncGF0aHMnLAotICAgICAgICBwcmVmZXJlbmNlX25hbWUgPSAncGdf YmluX2RpcicsCi0gICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBjb25maWd1cmUgdGhlIFBv c3RncmVTUUwgQmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nKTsKLQotICAg ICAgaWYgKChzZXJ2ZXJfZGF0YS50eXBlICYmIHNlcnZlcl9kYXRhLnR5cGUgPT0gJ3BwYXMnKSB8 fAotICAgICAgICBzZXJ2ZXJfZGF0YS5zZXJ2ZXJfdHlwZSA9PSAncHBhcycpIHsKLSAgICAgICAg cHJlZmVyZW5jZV9uYW1lID0gJ3BwYXNfYmluX2Rpcic7Ci0gICAgICAgIG1zZyA9IGdldHRleHQo J1BsZWFzZSBjb25maWd1cmUgdGhlIEVEQiBBZHZhbmNlZCBTZXJ2ZXIgQmluYXJ5IFBhdGggaW4g dGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nKTsKLSAgICAgIH0KLQotICAgICAgdmFyIHByZWZlcmVu Y2UgPSBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UobW9kdWxlLCBwcmVmZXJlbmNlX25hbWUpOwot Ci0gICAgICBpZiAocHJlZmVyZW5jZSkgewotICAgICAgICBpZiAoIXByZWZlcmVuY2UudmFsdWUp IHsKLSAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdDb25maWd1cmF0aW9uIHJlcXVp cmVkJyksIG1zZyk7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICB9IGVsc2Ug ewotICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgRXJy b3InKSwKLSAgICAgICAgICBTKGdldHRleHQoJ0ZhaWxlZCB0byBsb2FkIHByZWZlcmVuY2UgJXMg b2YgbW9kdWxlICVzJykpLnNwcmludGYocHJlZmVyZW5jZV9uYW1lLCBtb2R1bGUpLnZhbHVlKCkK LSAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0gICAgICB2YXIgb2ZfdHlw ZSA9IHVuZGVmaW5lZDsKLQotICAgICAgLy8gU2V0IE5vdGVzIGFjY29yZGluZyB0byB0eXBlIG9m IGJhY2t1cAotICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhcmFtc1snZ2xvYmFscyddKSAmJiBw YXJhbXNbJ2dsb2JhbHMnXSkgewotICAgICAgICBvZl90eXBlID0gJ2dsb2JhbHMnOwotICAgICAg fSBlbHNlIHsKLSAgICAgICAgb2ZfdHlwZSA9ICdzZXJ2ZXInOwotICAgICAgfQotCi0gICAgICB2 YXIgRGlhbG9nTmFtZSA9ICdCYWNrdXBEaWFsb2dfJyArIG9mX3R5cGUsCi0gICAgICAgIERpYWxv Z1RpdGxlID0gKChvZl90eXBlID09ICdnbG9iYWxzJykgPwotICAgICAgICAgIGdldHRleHQoJ0Jh Y2t1cCBHbG9iYWxzLi4uJykgOgotICAgICAgICAgIGdldHRleHQoJ0JhY2t1cCBTZXJ2ZXIuLi4n KSk7Ci0KLSAgICAgIGlmICghYWxlcnRpZnlbRGlhbG9nTmFtZV0pIHsKLSAgICAgICAgYWxlcnRp ZnkuZGlhbG9nKERpYWxvZ05hbWUsIGZ1bmN0aW9uIGZhY3RvcnkoKSB7Ci0gICAgICAgICAgcmV0 dXJuIHsKLSAgICAgICAgICAgIG1haW46IGZ1bmN0aW9uKHRpdGxlKSB7Ci0gICAgICAgICAgICAg IHRoaXMuc2V0KCd0aXRsZScsIHRpdGxlKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBi dWlsZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIGFsZXJ0aWZ5LnBnRGlhbG9nQnVpbGQu YXBwbHkodGhpcyk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9u KCkgewotICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFt7 Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiAnJywKLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFt ZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtaW5mbycsCi0gICAgICAg ICAgICAgICAgICBhdHRyczogewotICAgICAgICAgICAgICAgICAgICBuYW1lOiAnb2JqZWN0X2hl bHAnLAotICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKLSAgICAgICAgICAgICAg ICAgICAgdXJsOiAnYmFja3VwLmh0bWwnLAotICAgICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0 dGV4dCgnQmFja3VwJyksCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0s IHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6ICcnLAotICAgICAgICAgICAgICAgICAga2V5OiAx MTIsCi0gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRlZmF1bHQgcHVsbC1s ZWZ0IGZhIGZhLWxnIGZhLXF1ZXN0aW9uJywKLSAgICAgICAgICAgICAgICAgIGF0dHJzOiB7Ci0g ICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcsCi0gICAgICAgICAgICAgICAg ICAgIHR5cGU6ICdidXR0b24nLAotICAgICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgn QmFja3VwJyksCi0gICAgICAgICAgICAgICAgICAgIHVybDogdXJsX2ZvcignaGVscC5zdGF0aWMn LCB7Ci0gICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVuYW1lJzogJ2JhY2t1cF9kaWFsb2cuaHRt bCcsCi0gICAgICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAg ICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdCYWNrdXAn KSwKLSAgICAgICAgICAgICAgICAgIGtleTogMTMsCi0gICAgICAgICAgICAgICAgICBjbGFzc05h bWU6ICdidG4gYnRuLXByaW1hcnkgZmEgZmEtbGcgZmEtc2F2ZSBwZy1hbGVydGlmeS1idXR0b24n LAotICAgICAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnYmFja3VwJywKLSAgICAgICAg ICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdDYW5jZWwnKSwK LSAgICAgICAgICAgICAgICAgIGtleTogMjcsCi0gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6 ICdidG4gYnRuLWRhbmdlciBmYSBmYS1sZyBmYS10aW1lcyBwZy1hbGVydGlmeS1idXR0b24nLAot ICAgICAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnY2FuY2VsJywKLSAgICAgICAgICAg ICAgICB9XSwKLSAgICAgICAgICAgICAgICAvLyBTZXQgb3B0aW9ucyBmb3IgZGlhbG9nCi0gICAg ICAgICAgICAgICAgb3B0aW9uczogewotICAgICAgICAgICAgICAgICAgdGl0bGU6IERpYWxvZ1Rp dGxlLAotICAgICAgICAgICAgICAgICAgLy9kaXNhYmxlIGJvdGggcGFkZGluZyBhbmQgb3ZlcmZs b3cgY29udHJvbC4KLSAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICExLAotICAgICAgICAgICAg ICAgICAgb3ZlcmZsb3c6ICExLAotICAgICAgICAgICAgICAgICAgbW9kZWw6IDAsCi0gICAgICAg ICAgICAgICAgICByZXNpemFibGU6IHRydWUsCi0gICAgICAgICAgICAgICAgICBtYXhpbWl6YWJs ZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgIHBpbm5hYmxlOiBmYWxzZSwKLSAgICAgICAgICAg ICAgICAgIGNsb3NhYmxlQnlEaW1tZXI6IGZhbHNlLAotICAgICAgICAgICAgICAgICAgbW9kYWw6 IGZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgIH07Ci0gICAgICAgICAg ICB9LAotICAgICAgICAgICAgaG9va3M6IHsKLSAgICAgICAgICAgICAgLy8gVHJpZ2dlcmVkIHdo ZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWQKLSAgICAgICAgICAgICAgb25jbG9zZTogZnVuY3Rpb24o KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlldykgewotICAgICAgICAgICAgICAgICAg Ly8gY2xlYXIgb3VyIGJhY2tmb3JtIG1vZGVsL3ZpZXcKLSAgICAgICAgICAgICAgICAgIHRoaXMu dmlldy5yZW1vdmUoewotICAgICAgICAgICAgICAgICAgICBkYXRhOiB0cnVlLAotICAgICAgICAg ICAgICAgICAgICBpbnRlcm5hbDogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgc2lsZW50OiB0 cnVlLAotICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgICB9LAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uKCkg ewotICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICAgIC8vIERpc2Fi bGUgQmFja3VwIGJ1dHRvbiB1bnRpbCB1c2VyIHByb3ZpZGVzIEZpbGVuYW1lCi0gICAgICAgICAg ICAgIHRoaXMuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwot Ci0gICAgICAgICAgICAgIHZhciAkY29udGFpbmVyID0gJCgnPGRpdiBjbGFzcz1cJ2JhY2t1cF9k aWFsb2dcJz48L2Rpdj4nKTsKLSAgICAgICAgICAgICAgLy8gRmluZCBjdXJyZW50L3NlbGVjdGVk IG5vZGUKLSAgICAgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICAg ICAgICBpID0gdC5zZWxlY3RlZCgpLAotICAgICAgICAgICAgICAgIGQgPSBpICYmIGkubGVuZ3Ro ID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkLAotICAgICAgICAgICAgICAgIG5vZGUg PSBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsKLQotICAgICAgICAgICAgICBpZiAoIWQp Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAvLyBDcmVhdGUgdHJlZUlu Zm8KLSAgICAgICAgICAgICAgdmFyIHRyZWVJbmZvID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNo eS5hcHBseShub2RlLCBbaV0pOwotICAgICAgICAgICAgICAvLyBJbnN0YW5jZSBvZiBiYWNrYm9u ZSBtb2RlbAotICAgICAgICAgICAgICB2YXIgbmV3TW9kZWwgPSBuZXcgQmFja3VwTW9kZWwoewot ICAgICAgICAgICAgICAgICAgdHlwZTogb2ZfdHlwZSwKLSAgICAgICAgICAgICAgICB9LCB7Ci0g ICAgICAgICAgICAgICAgICBub2RlX2luZm86IHRyZWVJbmZvLAotICAgICAgICAgICAgICAgIH0p LAotICAgICAgICAgICAgICAgIGZpZWxkcyA9IEJhY2tmb3JtLmdlbmVyYXRlVmlld1NjaGVtYSgK LSAgICAgICAgICAgICAgICAgIHRyZWVJbmZvLCBuZXdNb2RlbCwgJ2NyZWF0ZScsIG5vZGUsIHRy ZWVJbmZvLnNlcnZlciwgdHJ1ZQotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAg dmFyIHZpZXcgPSB0aGlzLnZpZXcgPSBuZXcgQmFja2Zvcm0uRGlhbG9nKHsKLSAgICAgICAgICAg ICAgICBlbDogJGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICBtb2RlbDogbmV3TW9kZWwsCi0g ICAgICAgICAgICAgICAgc2NoZW1hOiBmaWVsZHMsCi0gICAgICAgICAgICAgIH0pOwotICAgICAg ICAgICAgICAvLyBBZGQgb3VyIGNsYXNzIHRvIGFsZXJ0aWZ5Ci0gICAgICAgICAgICAgICQodGhp cy5lbGVtZW50cy5ib2R5LmNoaWxkTm9kZXNbMF0pLmFkZENsYXNzKAotICAgICAgICAgICAgICAg ICdhbGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVydGllcyBvYmpfcHJvcGVydGllcycKLSAgICAg ICAgICAgICAgKTsKLSAgICAgICAgICAgICAgLy8gUmVuZGVyIGRpYWxvZwotICAgICAgICAgICAg ICB2aWV3LnJlbmRlcigpOwotCi0gICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29udGVudC5h cHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7Ci0KLSAgICAgICAgICAgICAgdmFyIGNvbnRh aW5lciA9IHZpZXcuJGVsLmZpbmQoJy50YWItY29udGVudDpmaXJzdCA+IC50YWItcGFuZS5hY3Rp dmU6Zmlyc3QnKTsKLSAgICAgICAgICAgICAgY29tbW9uVXRpbHMuZmluZEFuZFNldEZvY3VzKGNv bnRhaW5lcik7Ci0KLSAgICAgICAgICAgICAgLy8gTGlzdGVuIHRvIG1vZGVsICYgaWYgZmlsZW5h bWUgaXMgcHJvdmlkZWQgdGhlbiBlbmFibGUgQmFja3VwIGJ1dHRvbgotICAgICAgICAgICAgICB0 aGlzLnZpZXcubW9kZWwub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg IGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZmlsZScpKSAmJiB0aGlzLmdldCgnZmlsZScp ICE9PSAnJykgewotICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7Ci0g ICAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2Fi bGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg IHNlbGYuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwotICAg ICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZmlsZScsIGdldHRleHQoJ1BsZWFz ZSBwcm92aWRlIGEgZmlsZW5hbWUnKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg ICB9KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbnMg d2hlbiBjbGljayBvbiB0aGUgYnV0dG9ucyBvZiB0aGUgQWxlcnRpZnkgZGlhbG9ncwotICAgICAg ICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgLy8gRmV0Y2ggY3Vy cmVudCBzZXJ2ZXIgaWQKLSAgICAgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAg ICAgICAgICAgICAgICBpID0gdC5zZWxlY3RlZCgpLAotICAgICAgICAgICAgICAgIGQgPSBpICYm IGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkLAotICAgICAgICAgICAg ICAgIG5vZGUgPSBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsKLQotICAgICAgICAgICAg ICBpZiAoZS5idXR0b24uZWxlbWVudC5uYW1lID09ICdkaWFsb2dfaGVscCcgfHwgZS5idXR0b24u ZWxlbWVudC5uYW1lID09ICdvYmplY3RfaGVscCcpIHsKLSAgICAgICAgICAgICAgICBlLmNhbmNl bCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcGdCcm93c2VyLnNob3dIZWxwKGUuYnV0dG9uLmVs ZW1lbnQubmFtZSwgZS5idXR0b24uZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3VybCcpLAotICAgICAg ICAgICAgICAgICAgbm9kZSwgaSwgZS5idXR0b24uZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2xhYmVs JykpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgfQotCi0gICAgICAg ICAgICAgIGlmIChlLmJ1dHRvblsnZGF0YS1idG4tbmFtZSddID09PSAnYmFja3VwJykgewotCi0g ICAgICAgICAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg ICAgICAgICAgICAgdmFyIHRyZWVJbmZvID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hcHBs eShub2RlLCBbaV0pOwotCi0gICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAotICAgICAg ICAgICAgICAgICAgYmFzZVVybCA9IHVybF9mb3IoJ2JhY2t1cC5jcmVhdGVfc2VydmVyX2pvYics IHsKLSAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHRyZWVJbmZvLnNlcnZlci5faWQsCi0gICAg ICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICAgIGFyZ3MgPSB0aGlzLnZpZXcubW9k ZWwudG9KU09OKCk7Ci0KLSAgICAgICAgICAgICAgICAkLmFqYXgoewotICAgICAgICAgICAgICAg ICAgdXJsOiBiYXNlVXJsLAotICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCi0gICAg ICAgICAgICAgICAgICBkYXRhOiB7Ci0gICAgICAgICAgICAgICAgICAgICdkYXRhJzogSlNPTi5z dHJpbmdpZnkoYXJncyksCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg c3VjY2VzczogZnVuY3Rpb24ocmVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3Vj Y2VzcykgewotICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3MoZ2V0dGV4dCgn QmFja3VwIGpvYiBjcmVhdGVkLicpLCA1KTsKLSAgICAgICAgICAgICAgICAgICAgICBwZ0Jyb3dz ZXIuRXZlbnRzLnRyaWdnZXIoJ3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLCBzZWxmKTsKLSAg ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICBjb25zb2xl Lndhcm4ocmVzKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfSwK LSAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgICAgICAg ICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyID0gJC5wYXJzZUpTT04o eGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQo Ci0gICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgam9iIGZhaWxlZC4nKSwK LSAgICAgICAgICAgICAgICAgICAgICAgIGVyci5lcnJvcm1zZwotICAgICAgICAgICAgICAgICAg ICAgICk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAg ICAgICAgICBjb25zb2xlLndhcm4oZS5zdGFjayB8fCBlKTsKLSAgICAgICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgIH0K LSAgICAgIGFsZXJ0aWZ5W0RpYWxvZ05hbWVdKHRydWUpLnJlc2l6ZVRvKCc2MCUnLCAnNTAlJyk7 CisgICAgc3RhcnRfYmFja3VwX2dsb2JhbF9zZXJ2ZXI6IGZ1bmN0aW9uKGFjdGlvbiwgdHJlZUl0 ZW0sIHBhcmFtcykgeworICAgICAgbGV0IGRpYWxvZyA9IG5ldyBnbG9iYWxCYWNrdXBEaWFsb2cu QmFja3VwRGlhbG9nKAorICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgICQsCisgICAgICAgIGFs ZXJ0aWZ5LAorICAgICAgICBCYWNrdXBNb2RlbAorICAgICAgKTsKKyAgICAgIGRpYWxvZy5kcmF3 KGFjdGlvbiwgdHJlZUl0ZW0sIHBhcmFtcyk7CiAgICAgfSwKIAogICAgIC8vIENhbGxiYWNrIHRv IGRyYXcgQmFja3VwIERpYWxvZyBmb3Igb2JqZWN0cwogICAgIGJhY2t1cF9vYmplY3RzOiBmdW5j dGlvbihhY3Rpb24sIHRyZWVJdGVtKSB7Ci0KLSAgICAgIHZhciBpID0gdHJlZUl0ZW0gfHwgcGdC cm93c2VyLnRyZWUuc2VsZWN0ZWQoKSwKLSAgICAgICAgc2VydmVyX2RhdGEgPSBudWxsOwotCi0g ICAgICB3aGlsZSAoaSkgewotICAgICAgICB2YXIgbm9kZV9kYXRhID0gcGdCcm93c2VyLnRyZWUu aXRlbURhdGEoaSk7Ci0gICAgICAgIGlmIChub2RlX2RhdGEuX3R5cGUgPT0gJ3NlcnZlcicpIHsK LSAgICAgICAgICBzZXJ2ZXJfZGF0YSA9IG5vZGVfZGF0YTsKLSAgICAgICAgICBicmVhazsKLSAg ICAgICAgfQotCi0gICAgICAgIGlmIChwZ0Jyb3dzZXIudHJlZS5oYXNQYXJlbnQoaSkpIHsKLSAg ICAgICAgICBpID0gJChwZ0Jyb3dzZXIudHJlZS5wYXJlbnQoaSkpOwotICAgICAgICB9IGVsc2Ug ewotICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAgICAgICAgICAgZ2V0dGV4dCgnQmFja3Vw IEVycm9yJyksCi0gICAgICAgICAgICBnZXR0ZXh0KCdQbGVhc2Ugc2VsZWN0IHNlcnZlciBvciBj aGlsZCBub2RlIGZyb20gdHJlZS4nKQotICAgICAgICAgICk7Ci0gICAgICAgICAgYnJlYWs7Ci0g ICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKCFzZXJ2ZXJfZGF0YSkgewotICAgICAgICBy ZXR1cm47Ci0gICAgICB9Ci0KLSAgICAgIHZhciBtb2R1bGUgPSAncGF0aHMnLAotICAgICAgICBw cmVmZXJlbmNlX25hbWUgPSAncGdfYmluX2RpcicsCi0gICAgICAgIG1zZyA9IGdldHRleHQoJ1Bs ZWFzZSBzZXQgYmluYXJ5IHBhdGggZm9yIFBvc3RncmVTUUwgU2VydmVyIGZyb20gcHJlZmVyZW5j ZXMuJyk7Ci0KLSAgICAgIGlmICgoc2VydmVyX2RhdGEudHlwZSAmJiBzZXJ2ZXJfZGF0YS50eXBl ID09ICdwcGFzJykgfHwKLSAgICAgICAgc2VydmVyX2RhdGEuc2VydmVyX3R5cGUgPT0gJ3BwYXMn KSB7Ci0gICAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdwcGFzX2Jpbl9kaXInOwotICAgICAgICBt c2cgPSBnZXR0ZXh0KCdQbGVhc2Ugc2V0IGJpbmFyeSBwYXRoIGZvciBFREIgUG9zdGdyZXMgQWR2 YW5jZWQgU2VydmVyIGZyb20gcHJlZmVyZW5jZXMuJyk7Ci0gICAgICB9Ci0KLSAgICAgIHZhciBw cmVmZXJlbmNlID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlKG1vZHVsZSwgcHJlZmVyZW5jZV9u YW1lKTsKLQotICAgICAgaWYgKHByZWZlcmVuY2UpIHsKLSAgICAgICAgaWYgKCFwcmVmZXJlbmNl LnZhbHVlKSB7Ci0gICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnQ29uZmlndXJhdGlv biByZXF1aXJlZCcpLCBtc2cpOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg fSBlbHNlIHsKLSAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgZ2V0dGV4dCgnQmFj a3VwIEVycm9yJyksCi0gICAgICAgICAgUyhnZXR0ZXh0KCdGYWlsZWQgdG8gbG9hZCBwcmVmZXJl bmNlICVzIG9mIG1vZHVsZSAlcycpKS5zcHJpbnRmKHByZWZlcmVuY2VfbmFtZSwgbW9kdWxlKS52 YWx1ZSgpCi0gICAgICAgICk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgdmFy IHRpdGxlID0gUyhnZXR0ZXh0KCdCYWNrdXAgKCVzOiAlcyknKSksCi0gICAgICAgIHRyZWUgPSBw Z0Jyb3dzZXIudHJlZSwKLSAgICAgICAgaXRlbSA9IHRyZWVJdGVtIHx8IHRyZWUuc2VsZWN0ZWQo KSwKLSAgICAgICAgZGF0YSA9IGl0ZW0gJiYgaXRlbS5sZW5ndGggPT0gMSAmJiB0cmVlLml0ZW1E YXRhKGl0ZW0pLAotICAgICAgICBub2RlID0gZGF0YSAmJiBkYXRhLl90eXBlICYmIHBnQnJvd3Nl ci5Ob2Rlc1tkYXRhLl90eXBlXTsKLQotICAgICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47 Ci0KLSAgICAgIHZhciB0cmVlSW5mbyA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHko bm9kZSwgW2l0ZW1dKTsKLQotICAgICAgaWYgKHRyZWVJbmZvLmRhdGFiYXNlLl9sYWJlbC5pbmRl eE9mKCc9JykgPj0gMCkgewotICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICBnZXR0 ZXh0KCdCYWNrdXAgZXJyb3InKSwKLSAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgam9iIGNyZWF0 aW9uIGZhaWxlZC4gJysKLSAgICAgICAgICAnRGF0YWJhc2VzIHdpdGggPSBzeW1ib2xzIGluIHRo ZSBuYW1lIGNhbm5vdCBiZSBiYWNrZWQgdXAgdXNpbmcgdGhpcyB1dGlsaXR5LicpCi0gICAgICAg ICk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgdGl0bGUgPSB0aXRsZS5zcHJp bnRmKG5vZGUubGFiZWwsIGRhdGEubGFiZWwpLnZhbHVlKCk7Ci0KLSAgICAgIGlmICghYWxlcnRp ZnkuYmFja3VwX29iamVjdHMpIHsKLSAgICAgICAgLy8gQ3JlYXRlIERpYWxvZyB0aXRsZSBvbiB0 aGUgZmx5IHdpdGggbm9kZSBkZXRhaWxzCi0gICAgICAgIGFsZXJ0aWZ5LmRpYWxvZygnYmFja3Vw X29iamVjdHMnLCBmdW5jdGlvbiBmYWN0b3J5KCkgewotICAgICAgICAgIHJldHVybiB7Ci0gICAg ICAgICAgICBtYWluOiBmdW5jdGlvbih0aXRsZSkgewotICAgICAgICAgICAgICB0aGlzLnNldCgn dGl0bGUnLCB0aXRsZSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgYnVpbGQ6IGZ1bmN0 aW9uKCkgewotICAgICAgICAgICAgICBhbGVydGlmeS5wZ0RpYWxvZ0J1aWxkLmFwcGx5KHRoaXMp OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAgICAg ICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBidXR0b25zOiBbewotICAgICAgICAg ICAgICAgICAgdGV4dDogJycsCi0gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRu LWRlZmF1bHQgcHVsbC1sZWZ0IGZhIGZhLWxnIGZhLWluZm8nLAotICAgICAgICAgICAgICAgICAg YXR0cnM6IHsKLSAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29iamVjdF9oZWxwJywKLSAgICAg ICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCi0gICAgICAgICAgICAgICAgICAgIHVybDog J2JhY2t1cC5odG1sJywKLSAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1 cCcpLAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9LCB7Ci0gICAgICAg ICAgICAgICAgICB0ZXh0OiAnJywKLSAgICAgICAgICAgICAgICAgIGtleTogMTEyLAotICAgICAg ICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1s ZyBmYS1xdWVzdGlvbicsCi0gICAgICAgICAgICAgICAgICBhdHRyczogewotICAgICAgICAgICAg ICAgICAgICBuYW1lOiAnZGlhbG9nX2hlbHAnLAotICAgICAgICAgICAgICAgICAgICB0eXBlOiAn YnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cCcpLAot ICAgICAgICAgICAgICAgICAgICB1cmw6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywgewotICAgICAg ICAgICAgICAgICAgICAgICdmaWxlbmFtZSc6ICdiYWNrdXBfZGlhbG9nLmh0bWwnLAotICAgICAg ICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg fSwgewotICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQmFja3VwJyksCi0gICAgICAg ICAgICAgICAgICBrZXk6IDEzLAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0 bi1wcmltYXJ5IGZhIGZhLWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAg ICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2JhY2t1cCcsCi0gICAgICAgICAgICAgICAgfSwg ewotICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCi0gICAgICAgICAg ICAgICAgICBrZXk6IDI3LAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1k YW5nZXIgZmEgZmEtbGcgZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAg ICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2NhbmNlbCcsCi0gICAgICAgICAgICAgICAgfV0sCi0g ICAgICAgICAgICAgICAgLy8gU2V0IG9wdGlvbnMgZm9yIGRpYWxvZwotICAgICAgICAgICAgICAg IG9wdGlvbnM6IHsKLSAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSwKLSAgICAgICAgICAg ICAgICAgIC8vZGlzYWJsZSBib3RoIHBhZGRpbmcgYW5kIG92ZXJmbG93IGNvbnRyb2wuCi0gICAg ICAgICAgICAgICAgICBwYWRkaW5nOiAhMSwKLSAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAh MSwKLSAgICAgICAgICAgICAgICAgIG1vZGVsOiAwLAotICAgICAgICAgICAgICAgICAgcmVzaXph YmxlOiB0cnVlLAotICAgICAgICAgICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsCi0gICAgICAg ICAgICAgICAgICBwaW5uYWJsZTogZmFsc2UsCi0gICAgICAgICAgICAgICAgICBjbG9zYWJsZUJ5 RGltbWVyOiBmYWxzZSwKLSAgICAgICAgICAgICAgICAgIG1vZGFsOiBmYWxzZSwKLSAgICAgICAg ICAgICAgICB9LAotICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg IGhvb2tzOiB7Ci0gICAgICAgICAgICAgIC8vIHRyaWdnZXJlZCB3aGVuIHRoZSBkaWFsb2cgaXMg Y2xvc2VkCi0gICAgICAgICAgICAgIG9uY2xvc2U6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg ICAgIGlmICh0aGlzLnZpZXcpIHsKLSAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5yZW1vdmUo ewotICAgICAgICAgICAgICAgICAgICBkYXRhOiB0cnVlLAotICAgICAgICAgICAgICAgICAgICBp bnRlcm5hbDogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgc2lsZW50OiB0cnVlLAotICAgICAg ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9LAotICAg ICAgICAgICAgfSwKLSAgICAgICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uKCkgewotICAgICAgICAg ICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICAgIC8vIERpc2FibGUgQmFja3VwIGJ1 dHRvbiB1bnRpbCB1c2VyIHByb3ZpZGVzIEZpbGVuYW1lCi0gICAgICAgICAgICAgIHRoaXMuX19p bnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAg ICB2YXIgJGNvbnRhaW5lciA9ICQoJzxkaXYgY2xhc3M9XCdiYWNrdXBfZGlhbG9nXCc+PC9kaXY+ Jyk7Ci0gICAgICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgICAg ICAgaSA9IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9 PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICBub2RlID0g ZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07Ci0KLSAgICAgICAgICAgICAgaWYgKCFkKQot ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBu b2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7Ci0KLSAgICAgICAgICAg ICAgdmFyIG5ld01vZGVsID0gbmV3IEJhY2t1cE9iamVjdE1vZGVsKHt9LCB7Ci0gICAgICAgICAg ICAgICAgICBub2RlX2luZm86IHRyZWVJbmZvLAotICAgICAgICAgICAgICAgIH0pLAotICAgICAg ICAgICAgICAgIGZpZWxkcyA9IEJhY2tmb3JtLmdlbmVyYXRlVmlld1NjaGVtYSgKLSAgICAgICAg ICAgICAgICAgIHRyZWVJbmZvLCBuZXdNb2RlbCwgJ2NyZWF0ZScsIG5vZGUsIHRyZWVJbmZvLnNl cnZlciwgdHJ1ZQotICAgICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgdmFyIHZpZXcg PSB0aGlzLnZpZXcgPSBuZXcgQmFja2Zvcm0uRGlhbG9nKHsKLSAgICAgICAgICAgICAgICBlbDog JGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICBtb2RlbDogbmV3TW9kZWwsCi0gICAgICAgICAg ICAgICAgc2NoZW1hOiBmaWVsZHMsCi0gICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAg ICQodGhpcy5lbGVtZW50cy5ib2R5LmNoaWxkTm9kZXNbMF0pLmFkZENsYXNzKAotICAgICAgICAg ICAgICAgICdhbGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVydGllcyBvYmpfcHJvcGVydGllcycK LSAgICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgICB2aWV3LnJlbmRlcigpOwotCi0gICAg ICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29udGVudC5hcHBlbmRDaGlsZCgkY29udGFpbmVyLmdl dCgwKSk7Ci0KLSAgICAgICAgICAgICAgaWYodmlldykgewotICAgICAgICAgICAgICAgIHZpZXcu JGVsLmF0dHIoJ3RhYmluZGV4JywgLTEpOwotICAgICAgICAgICAgICAgIC8vIHZhciBkaWFsb2dU YWJOYXZpZ2F0b3IgPSBwZ0Jyb3dzZXIua2V5Ym9hcmROYXZpZ2F0aW9uLmdldERpYWxvZ1RhYk5h dmlnYXRvcih2aWV3KTsKLSAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIua2V5Ym9hcmROYXZpZ2F0 aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcih2aWV3KTsKLSAgICAgICAgICAgICAgICB2YXIgY29u dGFpbmVyID0gdmlldy4kZWwuZmluZCgnLnRhYi1jb250ZW50OmZpcnN0ID4gLnRhYi1wYW5lLmFj dGl2ZTpmaXJzdCcpOwotICAgICAgICAgICAgICAgIGNvbW1vblV0aWxzLmZpbmRBbmRTZXRGb2N1 cyhjb250YWluZXIpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIC8vIExpc3RlbiB0 byBtb2RlbCAmIGlmIGZpbGVuYW1lIGlzIHByb3ZpZGVkIHRoZW4gZW5hYmxlIEJhY2t1cCBidXR0 b24KLSAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbigp IHsKLSAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2ZpbGUnKSkg JiYgdGhpcy5nZXQoJ2ZpbGUnKSAhPT0gJycpIHsKLSAgICAgICAgICAgICAgICAgIHRoaXMuZXJy b3JNb2RlbC5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1dHRv bnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRp c2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2Zp bGUnLCBnZXR0ZXh0KCdQbGVhc2UgcHJvdmlkZSBmaWxlbmFtZScpKTsKLSAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgLy8g Q2FsbGJhY2sgZnVuY3Rpb25zIHdoZW4gY2xpY2sgb24gdGhlIGJ1dHRvbnMgb2YgdGhlIEFsZXJ0 aWZ5IGRpYWxvZ3MKLSAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbihlKSB7Ci0gICAgICAg ICAgICAgIC8vIEZldGNoIGN1cnJlbnQgc2VydmVyIGlkCi0gICAgICAgICAgICAgIHZhciB0ID0g cGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwKLSAgICAg ICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVm aW5lZCwKLSAgICAgICAgICAgICAgICBub2RlID0gZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlw ZV07Ci0KLSAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAnZGlhbG9n X2hlbHAnIHx8IGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAnb2JqZWN0X2hlbHAnKSB7Ci0gICAg ICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlOwotICAgICAgICAgICAgICAgIHBnQnJvd3Nlci5z aG93SGVscChlLmJ1dHRvbi5lbGVtZW50Lm5hbWUsIGUuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0cmli dXRlKCd1cmwnKSwKLSAgICAgICAgICAgICAgICAgIG5vZGUsIGksIGUuYnV0dG9uLmVsZW1lbnQu Z2V0QXR0cmlidXRlKCdsYWJlbCcpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg ICAgICAgIH0KLQotICAgICAgICAgICAgICBpZiAoZS5idXR0b25bJ2RhdGEtYnRuLW5hbWUnXSA9 PT0gJ2JhY2t1cCcpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWQpCi0gICAgICAgICAgICAgICAg ICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBub2RlLmdldFRyZWVO b2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBTZXQg Y3VycmVudCBkYXRhYmFzZSBpbnRvIG1vZGVsCi0gICAgICAgICAgICAgICAgdGhpcy52aWV3Lm1v ZGVsLnNldCgnZGF0YWJhc2UnLCB0cmVlSW5mby5kYXRhYmFzZS5fbGFiZWwpOwotCi0gICAgICAg ICAgICAgICAgLy8gV2Ugd2lsbCByZW1vdmUgb25jZSBvYmplY3QgdHJlZSBpcyBpbXBsZW1lbnRl ZAotICAgICAgICAgICAgICAgIC8vIElmIHNlbGVjdGVkIG5vZGUgaXMgU2NoZW1hIHRoZW4gYWRk IGl0IGluIG1vZGVsCi0gICAgICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ3NjaGVtYScpIHsK LSAgICAgICAgICAgICAgICAgIHZhciBzY2hlbWFzID0gW107Ci0gICAgICAgICAgICAgICAgICBz Y2hlbWFzLnB1c2goZC5fbGFiZWwpOwotICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVs LnNldCgnc2NoZW1hcycsIHNjaGVtYXMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICAvLyBJZiBzZWxlY3RlZCBub2RlIGlzIFRhYmxlIHRoZW4gYWRkIGl0IGluIG1vZGVsIGFs b25nIHdpdGgKLSAgICAgICAgICAgICAgICAvLyBpdHMgc2NoZW1hCi0gICAgICAgICAgICAgICAg aWYgKGQuX3R5cGUgPT0gJ3RhYmxlJykgewotICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Lm1v ZGVsLnNldCgKLSAgICAgICAgICAgICAgICAgICAgJ3RhYmxlcycsIFsKLSAgICAgICAgICAgICAg ICAgICAgICBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbCwgZC5fbGFiZWxdLAotICAgICAgICAgICAg ICAgICAgICBdCi0gICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgIH0KLQotICAg ICAgICAgICAgICAgIC8vIFJlbW92ZSByYXRpbyBhdHRyaWJ1dGUgZnJvbSBtb2RlbCBpZiBpdCBo YXMgZW1wdHkgc3RyaW5nLgotICAgICAgICAgICAgICAgIC8vIFRoZSB2YWxpZCB2YWx1ZSBjYW4g YmUgYmV0d2VlbiAwIHRvIDkuCi0gICAgICAgICAgICAgICAgaWYgKF8uaXNFbXB0eSh0aGlzLnZp ZXcubW9kZWwuZ2V0KCdyYXRpbycpKSkgewotICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Lm1v ZGVsLnVuc2V0KCdyYXRpbycpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg IHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKCdi YWNrdXAuY3JlYXRlX29iamVjdF9qb2InLCB7Ci0gICAgICAgICAgICAgICAgICAgICdzaWQnOiB0 cmVlSW5mby5zZXJ2ZXIuX2lkLAotICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAg ICAgICBhcmdzID0gdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpOwotCi0gICAgICAgICAgICAgICAg JC5hamF4KHsKLSAgICAgICAgICAgICAgICAgIHVybDogYmFzZVVybCwKLSAgICAgICAgICAgICAg ICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgICAgICAgICAgZGF0YTogewotICAgICAgICAg ICAgICAgICAgICAnZGF0YSc6IEpTT04uc3RyaW5naWZ5KGFyZ3MpLAotICAgICAgICAgICAgICAg ICAgfSwKLSAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewotICAgICAg ICAgICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICBh bGVydGlmeS5zdWNjZXNzKGdldHRleHQoJ0JhY2t1cCBqb2IgY3JlYXRlZC4nKSwgNSk7Ci0gICAg ICAgICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdwZ2FkbWluLWJncHJv Y2VzczpjcmVhdGVkJywgc2VsZik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oeGhyKSB7Ci0gICAg ICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgdmFyIGVyciA9ICQu cGFyc2VKU09OKHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0 aWZ5LmFsZXJ0KAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgnQmFja3VwIGpvYiBm YWlsZWQuJyksCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnIuZXJyb3Jtc2cKLSAgICAgICAg ICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAg ICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGUuc3RhY2sgfHwgZSk7Ci0gICAgICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSk7Ci0g ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgfTsKLSAgICAgICAgfSk7 Ci0gICAgICB9Ci0gICAgICBhbGVydGlmeS5iYWNrdXBfb2JqZWN0cyh0aXRsZSkucmVzaXplVG8o JzY1JScsICc2MCUnKTsKKyAgICAgIGxldCBkaWFsb2cgPSBuZXcgZ2xvYmFsQmFja3VwRGlhbG9n LkJhY2t1cERpYWxvZygKKyAgICAgICAgcGdCcm93c2VyLAorICAgICAgICAkLAorICAgICAgICBh bGVydGlmeSwKKyAgICAgICAgQmFja3VwT2JqZWN0TW9kZWwKKyAgICAgICk7CisgICAgICBkaWFs b2cuZHJhdyhhY3Rpb24sIHRyZWVJdGVtLCBudWxsKTsKICAgICB9LAogICB9OwogICByZXR1cm4g cGdCcm93c2VyLkJhY2t1cDsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9z dGF0aWMvanMvYmFja3VwX2RpYWxvZy5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0 aWMvanMvYmFja3VwX2RpYWxvZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MC4uYzc0YzM3NmMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAv c3RhdGljL2pzL2JhY2t1cF9kaWFsb2cuanMKQEAgLTAsMCArMSw2OSBAQAorLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8v IHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBv cnQgZ2V0dGV4dCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvZ2V0dGV4dCc7CitpbXBvcnQg QmFja2Zvcm0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4nOwor aW1wb3J0IHtEaWFsb2d9IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFs b2cnOworCitleHBvcnQgY2xhc3MgQmFja3VwRGlhbG9nIGV4dGVuZHMgRGlhbG9nIHsKKyAgY29u c3RydWN0b3IocGdCcm93c2VyLCAkLCBhbGVydGlmeSwgQmFja3VwTW9kZWwsIGJhY2tmb3JtID0g QmFja2Zvcm0pIHsKKyAgICBzdXBlcignQmFja3VwIEVycm9yJywKKyAgICAgICc8ZGl2IGNsYXNz PVwnYmFja3VwX2RpYWxvZ1wnPjwvZGl2PicsCisgICAgICBwZ0Jyb3dzZXIsICQsIGFsZXJ0aWZ5 LCBCYWNrdXBNb2RlbCwgYmFja2Zvcm0pOworICB9CisKKyAgZHJhdyhhY3Rpb24sIGFjaVRyZWVJ dGVtLCBwYXJhbXMpIHsKKyAgICBjb25zdCBzZXJ2ZXJJbmZvcm1hdGlvbiA9IHRoaXMucmV0cmll dmVBbmNlc3Rvck9mVHlwZVNlcnZlcihhY2lUcmVlSXRlbSk7CisKKyAgICBpZiAoIXNlcnZlcklu Zm9ybWF0aW9uKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF0aGlzLmhhc0Jp bmFyaWVzQ29uZmlndXJhdGlvbihzZXJ2ZXJJbmZvcm1hdGlvbikpIHsKKyAgICAgIHJldHVybjsK KyAgICB9CisKKyAgICBjb25zdCB0eXBlT2ZEaWFsb2cgPSBCYWNrdXBEaWFsb2cudHlwZU9mRGlh bG9nKHBhcmFtcyk7CisKKyAgICBpZiAoIXRoaXMuY2FuRXhlY3V0ZU9uQ3VycmVudERhdGFiYXNl KGFjaVRyZWVJdGVtKSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IGRpYWxv ZyA9IHRoaXMuY3JlYXRlT3JHZXREaWFsb2coQmFja3VwRGlhbG9nLmRpYWxvZ1RpdGxlKHR5cGVP ZkRpYWxvZyksCisgICAgICB0eXBlT2ZEaWFsb2cpOworICAgIGRpYWxvZyh0cnVlKS5yZXNpemVU bygnNjAlJywgJzUwJScpOworICB9CisKKyAgc3RhdGljIHR5cGVPZkRpYWxvZyhwYXJhbXMpIHsK KyAgICBpZiAocGFyYW1zID09PSBudWxsKSB7CisgICAgICByZXR1cm4gJ2JhY2t1cF9vYmplY3Rz JzsKKyAgICB9CisgICAgbGV0IHR5cGVPZkRpYWxvZyA9ICdzZXJ2ZXInOworICAgIGlmICghXy5p c1VuZGVmaW5lZChwYXJhbXNbJ2dsb2JhbHMnXSkgJiYgcGFyYW1zWydnbG9iYWxzJ10pIHsKKyAg ICAgIHR5cGVPZkRpYWxvZyA9ICdnbG9iYWxzJzsKKyAgICB9CisgICAgcmV0dXJuIHR5cGVPZkRp YWxvZzsKKyAgfQorCisgIHN0YXRpYyBkaWFsb2dUaXRsZSh0eXBlT2ZEaWFsb2cpIHsKKyAgICBp ZiAodHlwZU9mRGlhbG9nID09PSAnYmFja3VwX29iamVjdHMnKSB7CisgICAgICByZXR1cm4gbnVs bDsKKyAgICB9CisgICAgcmV0dXJuICgodHlwZU9mRGlhbG9nID09PSAnZ2xvYmFscycpID8KKyAg ICAgIGdldHRleHQoJ0JhY2t1cCBHbG9iYWxzLi4uJykgOgorICAgICAgZ2V0dGV4dCgnQmFja3Vw IFNlcnZlci4uLicpKTsKKyAgfQorCisgIGRpYWxvZ05hbWUodHlwZU9mRGlhbG9nKSB7CisgICAg aWYgKHR5cGVPZkRpYWxvZyA9PT0gJ2JhY2t1cF9vYmplY3RzJykgeworICAgICAgcmV0dXJuIHR5 cGVPZkRpYWxvZzsKKyAgICB9CisgICAgcmV0dXJuICdCYWNrdXBEaWFsb2dfJyArIHR5cGVPZkRp YWxvZzsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRp Yy9qcy9iYWNrdXBfZGlhbG9nX3dyYXBwZXIuanMgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAv c3RhdGljL2pzL2JhY2t1cF9kaWFsb2dfd3JhcHBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMC4uMmNlYmUzZDEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90 b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2dfd3JhcHBlci5qcwpAQCAtMCwwICsx LDI1OCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisv LyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLworCitpbXBvcnQge2dldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnR9 IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKK2lt cG9ydCBheGlvcyBmcm9tICdheGlvcy9pbmRleCc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICcuLi8u Li8uLi8uLi9zdGF0aWMvanMvZ2V0dGV4dCc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICcuLi8uLi8u Li8uLi9zdGF0aWMvanMvdXJsX2Zvcic7CitpbXBvcnQgXyBmcm9tICd1bmRlcnNjb3JlJzsKK2lt cG9ydCB7RGlhbG9nV3JhcHBlcn0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2FsZXJ0aWZ5 L2RpYWxvZ193cmFwcGVyJzsKKworZXhwb3J0IGNsYXNzIEJhY2t1cERpYWxvZ1dyYXBwZXIgZXh0 ZW5kcyBEaWFsb2dXcmFwcGVyIHsKKyAgY29uc3RydWN0b3IoZGlhbG9nQ29udGFpbmVyU2VsZWN0 b3IsIGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2csCisgICAgICAgICAgICAgIGpxdWVyeSwgcGdC cm93c2VyLCBhbGVydGlmeSwgZGlhbG9nTW9kZWwsIGJhY2tmb3JtKSB7CisgICAgc3VwZXIoZGlh bG9nQ29udGFpbmVyU2VsZWN0b3IsIGRpYWxvZ1RpdGxlLCBqcXVlcnksCisgICAgICBwZ0Jyb3dz ZXIsIGFsZXJ0aWZ5LCBkaWFsb2dNb2RlbCwgYmFja2Zvcm0pOworICAgIHRoaXMudHlwZU9mRGlh bG9nID0gdHlwZU9mRGlhbG9nOworICB9CisKKyAgbWFpbih0aXRsZSkgeworICAgIHRoaXMuc2V0 KCd0aXRsZScsIHRpdGxlKTsKKyAgfQorCisgIHNldHVwKCkgeworICAgIHJldHVybiB7CisgICAg ICBidXR0b25zOiBbeworICAgICAgICB0ZXh0OiAnJywKKyAgICAgICAgY2xhc3NOYW1lOiAnYnRu IGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1sZyBmYS1pbmZvJywKKyAgICAgICAgYXR0cnM6 IHsKKyAgICAgICAgICBuYW1lOiAnb2JqZWN0X2hlbHAnLAorICAgICAgICAgIHR5cGU6ICdidXR0 b24nLAorICAgICAgICAgIHVybDogJ2JhY2t1cC5odG1sJywKKyAgICAgICAgICBsYWJlbDogZ2V0 dGV4dCgnQmFja3VwJyksCisgICAgICAgIH0sCisgICAgICB9LCB7CisgICAgICAgIHRleHQ6ICcn LAorICAgICAgICBrZXk6IDExMiwKKyAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0 IHB1bGwtbGVmdCBmYSBmYS1sZyBmYS1xdWVzdGlvbicsCisgICAgICAgIGF0dHJzOiB7CisgICAg ICAgICAgbmFtZTogJ2RpYWxvZ19oZWxwJywKKyAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKKyAg ICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFja3VwJyksCisgICAgICAgICAgdXJsOiB1cmxfZm9y KCdoZWxwLnN0YXRpYycsIHsKKyAgICAgICAgICAgICdmaWxlbmFtZSc6ICdiYWNrdXBfZGlhbG9n Lmh0bWwnLAorICAgICAgICAgIH0pLAorICAgICAgICB9LAorICAgICAgfSwgeworICAgICAgICB0 ZXh0OiBnZXR0ZXh0KCdCYWNrdXAnKSwKKyAgICAgICAga2V5OiAxMywKKyAgICAgICAgY2xhc3NO YW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9u JywKKyAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnYmFja3VwJywKKyAgICAgIH0sIHsKKyAgICAg ICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCisgICAgICAgIGtleTogMjcsCisgICAgICAgIGNs YXNzTmFtZTogJ2J0biBidG4tZGFuZ2VyIGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1 dHRvbicsCisgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2NhbmNlbCcsCisgICAgICB9XSwKKyAg ICAgIC8vIFNldCBvcHRpb25zIGZvciBkaWFsb2cKKyAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAg dGl0bGU6IHRoaXMuZGlhbG9nVGl0bGUsCisgICAgICAgIC8vZGlzYWJsZSBib3RoIHBhZGRpbmcg YW5kIG92ZXJmbG93IGNvbnRyb2wuCisgICAgICAgIHBhZGRpbmc6ICExLAorICAgICAgICBvdmVy ZmxvdzogITEsCisgICAgICAgIG1vZGVsOiAwLAorICAgICAgICByZXNpemFibGU6IHRydWUsCisg ICAgICAgIG1heGltaXphYmxlOiB0cnVlLAorICAgICAgICBwaW5uYWJsZTogZmFsc2UsCisgICAg ICAgIGNsb3NhYmxlQnlEaW1tZXI6IGZhbHNlLAorICAgICAgICBtb2RhbDogZmFsc2UsCisgICAg ICB9LAorICAgIH07CisgIH0KKworICBwcmVwYXJlKCkgeworICAgIHRoaXMuZGlzYWJsZUJhY2t1 cEJ1dHRvbigpOworCisgICAgY29uc3QgJGNvbnRhaW5lciA9IHRoaXMuanF1ZXJ5KHRoaXMuZGlh bG9nQ29udGFpbmVyU2VsZWN0b3IpOworICAgIGNvbnN0IHNlbGVjdGVkVHJlZU5vZGUgPSB0aGlz LmdldFNlbGVjdGVkTm9kZSgpOworICAgIGNvbnN0IHNlbGVjdGVkVHJlZU5vZGVEYXRhID0gdGhp cy5nZXRTZWxlY3RlZE5vZGVEYXRhKHNlbGVjdGVkVHJlZU5vZGUpOworICAgIGlmICghc2VsZWN0 ZWRUcmVlTm9kZURhdGEpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBub2Rl ID0gdGhpcy5wZ0Jyb3dzZXIuTm9kZXNbc2VsZWN0ZWRUcmVlTm9kZURhdGEuX3R5cGVdOworICAg IGlmICh0aGlzLmRpYWxvZ1RpdGxlID09PSBudWxsKSB7CisgICAgICBjb25zdCB0aXRsZSA9IGBC YWNrdXAgKCR7bm9kZS5sYWJlbH06ICR7c2VsZWN0ZWRUcmVlTm9kZURhdGEubGFiZWx9KWA7Cisg ICAgICB0aGlzLm1haW4odGl0bGUpOworICAgIH0KKworICAgIGNvbnN0IHRyZWVJbmZvID0gZ2V0 VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudCh0aGlzLnBnQnJvd3Nlciwgc2VsZWN0ZWRUcmVl Tm9kZSk7CisgICAgY29uc3QgZGlhbG9nID0gdGhpcy5jcmVhdGVEaWFsb2cobm9kZSwgdHJlZUlu Zm8sIHRoaXMudHlwZU9mRGlhbG9nLCAkY29udGFpbmVyKTsKKyAgICB0aGlzLmFkZEFsZXJ0aWZ5 Q2xhc3NUb0JhY2t1cE5vZGVDaGlsZE5vZGVzKCk7CisgICAgZGlhbG9nLnJlbmRlcigpOworCisg ICAgdGhpcy5lbGVtZW50cy5jb250ZW50LmFwcGVuZENoaWxkKCRjb250YWluZXIuZ2V0KDApKTsK KworICAgIHRoaXMuZm9jdXNPbkRpYWxvZyhkaWFsb2cpOworICAgIHRoaXMuc2V0TGlzdGVuZXJz Rm9yRmlsZW5hbWVDaGFuZ2VzKCk7CisgIH0KKworICBjYWxsYmFjayhldmVudCkgeworICAgIGNv bnN0IHNlbGVjdGVkVHJlZU5vZGUgPSB0aGlzLmdldFNlbGVjdGVkTm9kZSgpOworICAgIGNvbnN0 IHNlbGVjdGVkVHJlZU5vZGVEYXRhID0gdGhpcy5nZXRTZWxlY3RlZE5vZGVEYXRhKHNlbGVjdGVk VHJlZU5vZGUpOworICAgIGNvbnN0IG5vZGUgPSBzZWxlY3RlZFRyZWVOb2RlRGF0YSAmJiB0aGlz LnBnQnJvd3Nlci5Ob2Rlc1tzZWxlY3RlZFRyZWVOb2RlRGF0YS5fdHlwZV07CisKKyAgICBpZiAo dGhpcy53YXNIZWxwQnV0dG9uUHJlc3NlZChldmVudCkpIHsKKyAgICAgIGV2ZW50LmNhbmNlbCA9 IHRydWU7CisgICAgICB0aGlzLnBnQnJvd3Nlci5zaG93SGVscCgKKyAgICAgICAgZXZlbnQuYnV0 dG9uLmVsZW1lbnQubmFtZSwKKyAgICAgICAgZXZlbnQuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0cmli dXRlKCd1cmwnKSwKKyAgICAgICAgbm9kZSwKKyAgICAgICAgc2VsZWN0ZWRUcmVlTm9kZSwKKyAg ICAgICAgZXZlbnQuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYWJlbCcpCisgICAgICAp OworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh0aGlzLndhc0JhY2t1cEJ1dHRvblBy ZXNzZWQoZXZlbnQpKSB7CisKKyAgICAgIGlmICghc2VsZWN0ZWRUcmVlTm9kZURhdGEpCisgICAg ICAgIHJldHVybjsKKworICAgICAgY29uc3Qgc2VydmVySWRlbnRpZmllciA9IHRoaXMucmV0cmll dmVTZXJ2ZXJJZGVudGlmaWVyKG5vZGUsIHNlbGVjdGVkVHJlZU5vZGUpOworCisgICAgICBjb25z dCBkaWFsb2cgPSB0aGlzOworICAgICAgbGV0IHVybFNob3J0Y3V0ID0gJ2JhY2t1cC5jcmVhdGVf c2VydmVyX2pvYic7CisgICAgICBpZiAodGhpcy50eXBlT2ZEaWFsb2cgPT09ICdiYWNrdXBfb2Jq ZWN0cycpIHsKKyAgICAgICAgdXJsU2hvcnRjdXQgPSAnYmFja3VwLmNyZWF0ZV9vYmplY3Rfam9i JzsKKyAgICAgIH0KKyAgICAgIGNvbnN0IGJhc2VVcmwgPSB1cmxfZm9yKHVybFNob3J0Y3V0LCB7 CisgICAgICAgICdzaWQnOiBzZXJ2ZXJJZGVudGlmaWVyLAorICAgICAgfSk7CisKKyAgICAgIGNv bnN0IHRyZWVJbmZvID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudCgKKyAgICAgICAg dGhpcy5wZ0Jyb3dzZXIsCisgICAgICAgIHNlbGVjdGVkVHJlZU5vZGUKKyAgICAgICk7CisKKyAg ICAgIHRoaXMuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkVHJlZU5vZGUsIHRyZWVJbmZvKTsK KworICAgICAgbGV0IHNlcnZpY2UgPSBheGlvcy5jcmVhdGUoe30pOworICAgICAgc2VydmljZS5w b3N0KAorICAgICAgICBiYXNlVXJsLAorICAgICAgICB0aGlzLnZpZXcubW9kZWwudG9KU09OKCkK KyAgICAgICkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIGRpYWxvZy5hbGVydGlmeS5zdWNj ZXNzKGdldHRleHQoJ0JhY2t1cCBqb2IgY3JlYXRlZC4nKSwgNSk7CisgICAgICAgIGRpYWxvZy5w Z0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIoJ3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLCBkaWFs b2cpOworICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7CisgICAgICAgIHRyeSB7Cisg ICAgICAgICAgY29uc3QgZXJyID0gZXJyb3IucmVzcG9uc2UuZGF0YTsKKyAgICAgICAgICBkaWFs b2cuYWxlcnRpZnkuYWxlcnQoCisgICAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgam9iIGZhaWxl ZC4nKSwKKyAgICAgICAgICAgIGVyci5lcnJvcm1zZworICAgICAgICAgICk7CisgICAgICAgIH0g Y2F0Y2ggKGUpIHsKKyAgICAgICAgICBjb25zb2xlLndhcm4oZS5zdGFjayB8fCBlKTsKKyAgICAg ICAgfQorICAgICAgfSk7CisgICAgfQorICB9CisKKyAgYWRkQWxlcnRpZnlDbGFzc1RvQmFja3Vw Tm9kZUNoaWxkTm9kZXMoKSB7CisgICAgdGhpcy5qcXVlcnkodGhpcy5lbGVtZW50cy5ib2R5LmNo aWxkTm9kZXNbMF0pLmFkZENsYXNzKAorICAgICAgJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19wcm9w ZXJ0aWVzIG9ial9wcm9wZXJ0aWVzJworICAgICk7CisgIH0KKworICBnZXRTZWxlY3RlZE5vZGUo KSB7CisgICAgY29uc3QgdHJlZSA9IHRoaXMucGdCcm93c2VyLnRyZWVNZW51OworICAgIGNvbnN0 IHNlbGVjdGVkTm9kZSA9IHRyZWUuc2VsZWN0ZWQoKTsKKyAgICBpZiAoc2VsZWN0ZWROb2RlKSB7 CisgICAgICByZXR1cm4gdHJlZS5maW5kTm9kZUJ5RG9tRWxlbWVudChzZWxlY3RlZE5vZGUpOwor ICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0KKyAgfQorCisgIGRp c2FibGVCYWNrdXBCdXR0b24oKSB7CisgICAgdGhpcy5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxl bWVudC5kaXNhYmxlZCA9IHRydWU7CisgIH0KKworICBlbmFibGVCYWNrdXBCdXR0b24oKSB7Cisg ICAgdGhpcy5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwor ICB9CisKKyAgY3JlYXRlRGlhbG9nKG5vZGUsIHRyZWVJbmZvLCB0eXBlT2ZEaWFsb2csICRjb250 YWluZXIpIHsKKyAgICBsZXQgYXR0cmlidXRlcyA9IHt9OworICAgIGlmICh0eXBlT2ZEaWFsb2cg IT09ICdiYWNrdXBfb2JqZWN0cycpIHsKKyAgICAgIGF0dHJpYnV0ZXNbJ3R5cGUnXSA9IHR5cGVP ZkRpYWxvZzsKKyAgICB9CisgICAgLy8gSW5zdGFuY2Ugb2YgYmFja2JvbmUgbW9kZWwKKyAgICBj b25zdCBuZXdNb2RlbCA9IG5ldyB0aGlzLmRpYWxvZ01vZGVsKGF0dHJpYnV0ZXMsIHsKKyAgICAg IG5vZGVfaW5mbzogdHJlZUluZm8sCisgICAgfSk7CisgICAgY29uc3QgZmllbGRzID0gdGhpcy5i YWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEoCisgICAgICB0cmVlSW5mbywgbmV3TW9kZWwsICdj cmVhdGUnLCBub2RlLCB0cmVlSW5mby5zZXJ2ZXIsIHRydWUKKyAgICApOworCisgICAgcmV0dXJu IHRoaXMudmlldyA9IG5ldyB0aGlzLmJhY2tmb3JtLkRpYWxvZyh7CisgICAgICBlbDogJGNvbnRh aW5lciwKKyAgICAgIG1vZGVsOiBuZXdNb2RlbCwKKyAgICAgIHNjaGVtYTogZmllbGRzLAorICAg IH0pOworICB9CisKKyAgcmV0cmlldmVTZXJ2ZXJJZGVudGlmaWVyKG5vZGUsIHNlbGVjdGVkVHJl ZU5vZGUpIHsKKyAgICBjb25zdCB0cmVlSW5mbyA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVs ZW1lbnQoCisgICAgICB0aGlzLnBnQnJvd3NlciwKKyAgICAgIHNlbGVjdGVkVHJlZU5vZGUKKyAg ICApOworICAgIHJldHVybiB0cmVlSW5mby5zZXJ2ZXIuX2lkOworICB9CisKKyAgc2V0TGlzdGVu ZXJzRm9yRmlsZW5hbWVDaGFuZ2VzKCkgeworICAgIGNvbnN0IHNlbGYgPSB0aGlzOworCisgICAg dGhpcy52aWV3Lm1vZGVsLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CisgICAgICBpZiAoIV8u aXNVbmRlZmluZWQodGhpcy5nZXQoJ2ZpbGUnKSkgJiYgdGhpcy5nZXQoJ2ZpbGUnKSAhPT0gJycp IHsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7CisgICAgICAgIHNlbGYuZW5hYmxl QmFja3VwQnV0dG9uKCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBzZWxmLmRpc2FibGVCYWNr dXBCdXR0b24oKTsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZmlsZScsIGdldHRleHQo J1BsZWFzZSBwcm92aWRlIGEgZmlsZW5hbWUnKSk7CisgICAgICB9CisgICAgfSk7CisgIH0KKwor ICBzZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWRUcmVlTm9kZSwgdHJlZUluZm8pIHsKKyAgICBp ZiAodGhpcy50eXBlT2ZEaWFsb2cgPT09ICdiYWNrdXBfb2JqZWN0cycpIHsKKworICAgICAgdGhp cy52aWV3Lm1vZGVsLnNldCgnZGF0YWJhc2UnLCB0cmVlSW5mby5kYXRhYmFzZS5fbGFiZWwpOwor CisgICAgICBjb25zdCBub2RlRGF0YSA9IHNlbGVjdGVkVHJlZU5vZGUuZ2V0RGF0YSgpOworICAg ICAgaWYgKG5vZGVEYXRhLl90eXBlID09PSAnc2NoZW1hJykgeworICAgICAgICB0aGlzLnZpZXcu bW9kZWwuc2V0KCdzY2hlbWFzJywgW25vZGVEYXRhLl9sYWJlbF0pOworICAgICAgfQorCisgICAg ICBpZiAobm9kZURhdGEuX3R5cGUgPT09ICd0YWJsZScpIHsKKyAgICAgICAgdGhpcy52aWV3Lm1v ZGVsLnNldCgndGFibGVzJywgWworICAgICAgICAgIFt0cmVlSW5mby5zY2hlbWEuX2xhYmVsLCBu b2RlRGF0YS5fbGFiZWxdLAorICAgICAgICBdKTsKKyAgICAgIH0KKworICAgICAgaWYgKF8uaXNF bXB0eSh0aGlzLnZpZXcubW9kZWwuZ2V0KCdyYXRpbycpKSkgeworICAgICAgICB0aGlzLnZpZXcu bW9kZWwudW5zZXQoJ3JhdGlvJyk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgd2FzQmFja3Vw QnV0dG9uUHJlc3NlZChldmVudCkgeworICAgIHJldHVybiBldmVudC5idXR0b25bJ2RhdGEtYnRu LW5hbWUnXSA9PT0gJ2JhY2t1cCc7CisgIH0KK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL2JhY2t1cC9zdGF0aWMvanMvbWVudV91dGlscy5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2Jh Y2t1cC9zdGF0aWMvanMvbWVudV91dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMC4uZmRmNDAwYWYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9i YWNrdXAvc3RhdGljL2pzL21lbnVfdXRpbHMuanMKQEAgLTAsMCArMSwyMyBAQAorLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8K Ky8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitp bXBvcnQge2lzUHJvdmlkZWREYXRhVmFsaWR9IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9t ZW51L21lbnVfZW5hYmxlZCc7CisKK2V4cG9ydCBjb25zdCBiYWNrdXBTdXBwb3J0ZWROb2RlcyA9 IFsKKyAgJ2RhdGFiYXNlJywgJ3NjaGVtYScsICd0YWJsZScsICdwYXJ0aXRpb24nLAorXTsKKwor ZnVuY3Rpb24gaXNOb2RlQVNlcnZlckFuZENvbm5lY3RlZCh0cmVlTm9kZURhdGEpIHsKKyAgcmV0 dXJuICgoJ3NlcnZlcicgPT09IHRyZWVOb2RlRGF0YS5fdHlwZSkgJiYgdHJlZU5vZGVEYXRhLmNv bm5lY3RlZCk7Cit9CisKK2V4cG9ydCBmdW5jdGlvbiBtZW51RW5hYmxlZFNlcnZlcih0cmVlTm9k ZURhdGEpIHsKKyAgcmV0dXJuIGlzUHJvdmlkZWREYXRhVmFsaWQodHJlZU5vZGVEYXRhKQorICAg ICYmIGlzTm9kZUFTZXJ2ZXJBbmRDb25uZWN0ZWQodHJlZU5vZGVEYXRhKTsKK30KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3JpZC5qcyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3JpZC5qcwppbmRleCBiMGVk NjBmNi4uNTIwYTljZTUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0 YXRpYy9qcy9kYXRhZ3JpZC5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0 aWMvanMvZGF0YWdyaWQuanMKQEAgLTEsMTAgKzEsMTQgQEAKIGRlZmluZSgncGdhZG1pbi5kYXRh Z3JpZCcsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5 JywgJ3VuZGVyc2NvcmUnLAogICAncGdhZG1pbi5hbGVydGlmeWpzJywgJ3NvdXJjZXMvcGdhZG1p bicsICdidW5kbGVkX2NvZGVtaXJyb3InLAotICAnc291cmNlcy9zcWxlZGl0b3JfdXRpbHMnLCAn YmFja2JvbmUnLCAnd2Nkb2NrZXInLAorICAnc291cmNlcy9zcWxlZGl0b3JfdXRpbHMnLCAnYmFj a2JvbmUnLAorICAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfZGF0YScsCisgICd0b29s cy9kYXRhZ3JpZC9zdGF0aWMvanMvZ2V0X3BhbmVsX3RpdGxlJywKKyAgJ3Rvb2xzL2RhdGFncmlk L3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wnLAorICAnd2Nkb2NrZXInLAogXSwgZnVuY3Rpb24o CiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIGFsZXJ0aWZ5LCBwZ0FkbWluLCBjb2RlbWlycm9y LCBzcWxFZGl0b3JVdGlscywKLSAgQmFja2JvbmUKKyAgQmFja2JvbmUsIHNob3dEYXRhLCBwYW5l bFRpdGxlLCBzaG93UXVlcnlUb29sCiApIHsKICAgLy8gU29tZSBzY3JpcHRzIGRvIGV4cG9ydCB0 aGVpciBvYmplY3QgaW4gdGhlIHdpbmRvdyBvbmx5LgogICAvLyBHZW5lcmFsbHkgdGhlIG9uZSwg d2hpY2ggZG8gbm8gaGF2ZSBBTUQgc3VwcG9ydC4KQEAgLTE2MSw1NSArMTY1LDcgQEAgZGVmaW5l KCdwZ2FkbWluLmRhdGFncmlkJywgWwogCiAgICAgICAvLyBUaGlzIGlzIGEgY2FsbGJhY2sgZnVu Y3Rpb24gdG8gc2hvdyBkYXRhIHdoZW4gdXNlciBjbGljayBvbiBtZW51IGl0ZW0uCiAgICAgICBz aG93X2RhdGFfZ3JpZDogZnVuY3Rpb24oZGF0YSwgaSkgewotICAgICAgICB2YXIgc2VsZiA9IHRo aXMsCi0gICAgICAgICAgZCA9IHBnQWRtaW4uQnJvd3Nlci50cmVlLml0ZW1EYXRhKGkpOwotICAg ICAgICBpZiAoZCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCi0g ICAgICAgICAgICBnZXR0ZXh0KCdEYXRhIEdyaWQgRXJyb3InKSwKLSAgICAgICAgICAgIGdldHRl eHQoJ05vIG9iamVjdCBzZWxlY3RlZC4nKQotICAgICAgICAgICk7Ci0gICAgICAgICAgcmV0dXJu OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gR2V0IHRoZSBwYXJlbnQgZGF0YSBmcm9tIHRoZSB0 cmVlIG5vZGUgaGllcmFyY2h5LgotICAgICAgICB2YXIgbm9kZSA9IHBnQnJvd3Nlci5Ob2Rlc1tk Ll90eXBlXSwKLSAgICAgICAgICBwYXJlbnREYXRhID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNo eShpKTsKLQotICAgICAgICAvLyBJZiBzZXJ2ZXIsIGRhdGFiYXNlIG9yIHNjaGVtYSBpcyB1bmRl ZmluZWQgdGhlbiByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24uCi0gICAgICAgIGlmIChwYXJlbnRE YXRhLnNlcnZlciA9PT0gdW5kZWZpbmVkIHx8IHBhcmVudERhdGEuZGF0YWJhc2UgPT09IHVuZGVm aW5lZCkgewotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBJZiBzY2hl bWEsIHZpZXcsIGNhdGFsb2cgb2JqZWN0IGFsbCBhcmUgdW5kZWZpbmVkIHRoZW4gcmV0dXJuIGZy b20gdGhlIGZ1bmN0aW9uLgotICAgICAgICBpZiAocGFyZW50RGF0YS5zY2hlbWEgPT09IHVuZGVm aW5lZCAmJiBwYXJlbnREYXRhLnZpZXcgPT09IHVuZGVmaW5lZCAmJgotICAgICAgICAgICAgIHBh cmVudERhdGEuY2F0YWxvZyA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgcmV0dXJuOwotICAg ICAgICB9Ci0KLSAgICAgICAgdmFyIG5zcF9uYW1lID0gJyc7Ci0KLSAgICAgICAgaWYgKHBhcmVu dERhdGEuc2NoZW1hICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgIG5zcF9uYW1lID0gcGFyZW50 RGF0YS5zY2hlbWEubGFiZWw7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocGFyZW50RGF0 YS52aWV3ICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgIG5zcF9uYW1lID0gcGFyZW50RGF0YS52 aWV3LmxhYmVsOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHBhcmVudERhdGEuY2F0YWxv ZyAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICBuc3BfbmFtZSA9IHBhcmVudERhdGEuY2F0YWxv Zy5sYWJlbDsKLSAgICAgICAgfQotICAgICAgICB2YXIgdXJsX3BhcmFtcyA9IHsKLSAgICAgICAg ICAnY21kX3R5cGUnOiBkYXRhLm1udWlkLAotICAgICAgICAgICdvYmpfdHlwZSc6IGQuX3R5cGUs Ci0gICAgICAgICAgJ3NnaWQnOiBwYXJlbnREYXRhLnNlcnZlcl9ncm91cC5faWQsCi0gICAgICAg ICAgJ3NpZCc6IHBhcmVudERhdGEuc2VydmVyLl9pZCwKLSAgICAgICAgICAnZGlkJzogcGFyZW50 RGF0YS5kYXRhYmFzZS5faWQsCi0gICAgICAgICAgJ29ial9pZCc6IGQuX2lkLAotICAgICAgICB9 OwotCi0gICAgICAgIHZhciBiYXNlVXJsID0gdXJsX2ZvcignZGF0YWdyaWQuaW5pdGlhbGl6ZV9k YXRhZ3JpZCcsIHVybF9wYXJhbXMpOwotICAgICAgICB2YXIgZ3JpZF90aXRsZSA9IHBhcmVudERh dGEuc2VydmVyLmxhYmVsICsgJyAtICcgKyBwYXJlbnREYXRhLmRhdGFiYXNlLmxhYmVsICsgJyAt ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICsgbnNwX25hbWUgKyAnLicgKyBkLmxhYmVsOwot Ci0gICAgICAgIHNlbGYuY3JlYXRlX3RyYW5zYWN0aW9uKGJhc2VVcmwsIG51bGwsICdmYWxzZScs IHBhcmVudERhdGEuc2VydmVyLnNlcnZlcl90eXBlLCAnJywgZ3JpZF90aXRsZSwgJycpOworICAg ICAgICBzaG93RGF0YS5zaG93RGF0YUdyaWQodGhpcywgcGdCcm93c2VyLCBhbGVydGlmeSwgZGF0 YSwgaSk7CiAgICAgICB9LAogCiAgICAgICAvLyBUaGlzIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24g dG8gc2hvdyBmaWx0ZXJlZCBkYXRhIHdoZW4gdXNlciBjbGljayBvbiBtZW51IGl0ZW0uCkBAIC0z ODQsNjMgKzM0MCwxMiBAQCBkZWZpbmUoJ3BnYWRtaW4uZGF0YWdyaWQnLCBbCiAgICAgICB9LAog CiAgICAgICBnZXRfcGFuZWxfdGl0bGU6IGZ1bmN0aW9uKCkgewotICAgICAgICAvLyBHZXQgdGhl IHBhcmVudCBkYXRhIGZyb20gdGhlIHRyZWUgbm9kZSBoaWVyYXJjaHkuCi0gICAgICAgIHZhciB0 cmVlID0gcGdBZG1pbi5Ccm93c2VyLnRyZWUsCi0gICAgICAgICAgc2VsZWN0ZWRfaXRlbSA9IHRy ZWUuc2VsZWN0ZWQoKSwKLSAgICAgICAgICBpdGVtX2RhdGEgPSB0cmVlLml0ZW1EYXRhKHNlbGVj dGVkX2l0ZW0pOwotCi0gICAgICAgIHZhciBub2RlID0gcGdCcm93c2VyLk5vZGVzW2l0ZW1fZGF0 YS5fdHlwZV0sCi0gICAgICAgICAgcGFyZW50RGF0YSA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJj aHkoc2VsZWN0ZWRfaXRlbSk7Ci0KLSAgICAgICAgLy8gSWYgc2VydmVyLCBkYXRhYmFzZSBpcyB1 bmRlZmluZWQgdGhlbiByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24uCi0gICAgICAgIGlmIChwYXJl bnREYXRhLnNlcnZlciA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAg ICB9Ci0gICAgICAgIC8vIElmIERhdGFiYXNlIGlzIG5vdCBhdmFpbGFibGUgdGhlbiB1c2UgZGVm YXVsdCBkYgotICAgICAgICB2YXIgZGJfbGFiZWwgPSBwYXJlbnREYXRhLmRhdGFiYXNlID8gcGFy ZW50RGF0YS5kYXRhYmFzZS5sYWJlbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDogcGFyZW50RGF0YS5zZXJ2ZXIuZGI7Ci0KLSAgICAgICAgdmFyIGdyaWRfdGl0 bGUgPSBkYl9sYWJlbCArICcgb24gJyArIHBhcmVudERhdGEuc2VydmVyLnVzZXIubmFtZSArICdA JyArCi0gICAgICAgICAgICAgICAgcGFyZW50RGF0YS5zZXJ2ZXIubGFiZWw7Ci0gICAgICAgIHJl dHVybiBncmlkX3RpdGxlOworICAgICAgICByZXR1cm4gcGFuZWxUaXRsZS5nZXRQYW5lbFRpdGxl KHBnQnJvd3Nlcik7CiAgICAgICB9LAogICAgICAgLy8gVGhpcyBpcyBhIGNhbGxiYWNrIGZ1bmN0 aW9uIHRvIHNob3cgcXVlcnkgdG9vbCB3aGVuIHVzZXIgY2xpY2sgb24gbWVudSBpdGVtLgotICAg ICAgc2hvd19xdWVyeV90b29sOiBmdW5jdGlvbih1cmwsIGksIHBhbmVsX3RpdGxlKSB7Ci0gICAg ICAgIHZhciBzVVJMID0gdXJsIHx8ICcnLAotICAgICAgICAgIGQgPSBwZ0FkbWluLkJyb3dzZXIu dHJlZS5pdGVtRGF0YShpKTsKLQotICAgICAgICBwYW5lbF90aXRsZSA9IHBhbmVsX3RpdGxlIHx8 ICcnOwotICAgICAgICBpZiAoZCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgYWxlcnRpZnku YWxlcnQoCi0gICAgICAgICAgICBnZXR0ZXh0KCdRdWVyeSBUb29sIEVycm9yJyksCi0gICAgICAg ICAgICBnZXR0ZXh0KCdObyBvYmplY3Qgc2VsZWN0ZWQuJykKLSAgICAgICAgICApOwotICAgICAg ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEdldCB0aGUgcGFyZW50IGRhdGEg ZnJvbSB0aGUgdHJlZSBub2RlIGhpZXJhcmNoeS4KLSAgICAgICAgdmFyIG5vZGUgPSBwZ0Jyb3dz ZXIuTm9kZXNbZC5fdHlwZV0sCi0gICAgICAgICAgcGFyZW50RGF0YSA9IG5vZGUuZ2V0VHJlZU5v ZGVIaWVyYXJjaHkoaSk7Ci0KLSAgICAgICAgLy8gSWYgc2VydmVyLCBkYXRhYmFzZSBpcyB1bmRl ZmluZWQgdGhlbiByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24uCi0gICAgICAgIGlmIChwYXJlbnRE YXRhLnNlcnZlciA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9 Ci0KLSAgICAgICAgdmFyIHVybF9wYXJhbXMgPSB7Ci0gICAgICAgICAgICAnc2dpZCc6IHBhcmVu dERhdGEuc2VydmVyX2dyb3VwLl9pZCwKLSAgICAgICAgICAgICdzaWQnOiBwYXJlbnREYXRhLnNl cnZlci5faWQsCi0gICAgICAgICAgfSwKLSAgICAgICAgICB1cmxfZW5kcG9pbnQgPSAnZGF0YWdy aWQuaW5pdGlhbGl6ZV9xdWVyeV90b29sJzsKLSAgICAgICAgLy8gSWYgZGF0YWJhc2Ugbm90IHBy ZXNlbnQgdGhlbiB1c2UgTWFpbnRlbmFuY2UgZGF0YWJhc2UKLSAgICAgICAgLy8gV2Ugd2lsbCBo YW5kbGUgdGhpcyBhdCBzZXJ2ZXIgc2lkZQotICAgICAgICBpZiAocGFyZW50RGF0YS5kYXRhYmFz ZSkgewotICAgICAgICAgIHVybF9wYXJhbXNbJ2RpZCddID0gcGFyZW50RGF0YS5kYXRhYmFzZS5f aWQ7Ci0gICAgICAgICAgdXJsX2VuZHBvaW50ID0gJ2RhdGFncmlkLmluaXRpYWxpemVfcXVlcnlf dG9vbF93aXRoX2RpZCc7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIGJhc2VVcmwgPSB1cmxfZm9y KHVybF9lbmRwb2ludCwgdXJsX3BhcmFtcyk7Ci0KLSAgICAgICAgdGhpcy5jcmVhdGVfdHJhbnNh Y3Rpb24oYmFzZVVybCwgbnVsbCwgJ3RydWUnLCBwYXJlbnREYXRhLnNlcnZlci5zZXJ2ZXJfdHlw ZSwgc1VSTCwgcGFuZWxfdGl0bGUsICcnLCBmYWxzZSk7CisgICAgICBzaG93X3F1ZXJ5X3Rvb2w6 IGZ1bmN0aW9uKHVybCwgYWNpVHJlZUlkZW50aWZpZXIsIHBhbmVsVGl0bGUpIHsKKyAgICAgICAg c2hvd1F1ZXJ5VG9vbC5zaG93UXVlcnlUb29sKHRoaXMsIHBnQnJvd3NlciwgYWxlcnRpZnksIHVy bCwKKyAgICAgICAgICBhY2lUcmVlSWRlbnRpZmllciwgcGFuZWxUaXRsZSk7CiAgICAgICB9LAog ICAgICAgY3JlYXRlX3RyYW5zYWN0aW9uOiBmdW5jdGlvbihiYXNlVXJsLCB0YXJnZXQsIGlzX3F1 ZXJ5X3Rvb2wsIHNlcnZlcl90eXBlLCBzVVJMLCBwYW5lbF90aXRsZSwgc3FsX2ZpbHRlciwgcmVj cmVhdGUpIHsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2dldF9wYW5lbF90aXRsZS5qcyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9nZXRfcGFuZWxfdGl0bGUuanMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjY0YjNhM2QyCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2dldF9wYW5lbF90aXRsZS5qcwpA QCAtMCwwICsxLDMzIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9t SWRlbnRpZmllcn0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVl X25vZGUnOworCitmdW5jdGlvbiBnZXREYXRhYmFzZUxhYmVsKHBhcmVudERhdGEpIHsKKyAgcmV0 dXJuIHBhcmVudERhdGEuZGF0YWJhc2UgPyBwYXJlbnREYXRhLmRhdGFiYXNlLmxhYmVsCisgICAg OiBwYXJlbnREYXRhLnNlcnZlci5kYjsKK30KKworZnVuY3Rpb24gaXNTZXJ2ZXJJbmZvcm1hdGlv bkF2YWlsYWJsZShwYXJlbnREYXRhKSB7CisgIHJldHVybiBwYXJlbnREYXRhLnNlcnZlciA9PT0g dW5kZWZpbmVkOworfQorCitleHBvcnQgZnVuY3Rpb24gZ2V0UGFuZWxUaXRsZShwZ0Jyb3dzZXIp IHsKKyAgY29uc3Qgc2VsZWN0ZWRfaXRlbSA9IHBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3RlZCgp OworCisgIGNvbnN0IHBhcmVudERhdGEgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlm aWVyCisgICAgLmNhbGwocGdCcm93c2VyLCBzZWxlY3RlZF9pdGVtKTsKKyAgaWYgKGlzU2VydmVy SW5mb3JtYXRpb25BdmFpbGFibGUocGFyZW50RGF0YSkpIHsKKyAgICByZXR1cm47CisgIH0KKwor ICBjb25zdCBkYl9sYWJlbCA9IGdldERhdGFiYXNlTGFiZWwocGFyZW50RGF0YSk7CisKKyAgcmV0 dXJuIGAke2RiX2xhYmVsfSBvbiAke3BhcmVudERhdGEuc2VydmVyLnVzZXIubmFtZX1AJHtwYXJl bnREYXRhLnNlcnZlci5sYWJlbH1gOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMv ZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfZGF0YS5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFn cmlkL3N0YXRpYy9qcy9zaG93X2RhdGEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAuLjM3M2M5N2NkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0 YWdyaWQvc3RhdGljL2pzL3Nob3dfZGF0YS5qcwpAQCAtMCwwICsxLDkyIEBACisvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLwor Ly8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAx MyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbXBv cnQgZ2V0dGV4dCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvZ2V0dGV4dCc7CitpbXBvcnQg dXJsX2ZvciBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvdXJsX2Zvcic7CitpbXBvcnQge2dl dFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXJ9IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRp Yy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKKworZXhwb3J0IGZ1bmN0aW9uIHNob3dEYXRh R3JpZCgKKyAgZGF0YWdyaWQsCisgIHBnQnJvd3NlciwKKyAgYWxlcnRpZnksCisgIGNvbm5lY3Rp b25EYXRhLAorICBhY2lUcmVlSWRlbnRpZmllcgorKSB7CisgIGNvbnN0IG5vZGUgPSBwZ0Jyb3dz ZXIudHJlZU1lbnUuZmluZE5vZGVCeURvbUVsZW1lbnQoYWNpVHJlZUlkZW50aWZpZXIpOworICBp ZiAobm9kZSA9PT0gdW5kZWZpbmVkIHx8ICFub2RlLmdldERhdGEoKSkgeworICAgIGFsZXJ0aWZ5 LmFsZXJ0KAorICAgICAgZ2V0dGV4dCgnRGF0YSBHcmlkIEVycm9yJyksCisgICAgICBnZXR0ZXh0 KCdObyBvYmplY3Qgc2VsZWN0ZWQuJykKKyAgICApOworICAgIHJldHVybjsKKyAgfQorCisgIGNv bnN0IHBhcmVudERhdGEgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLmNhbGwo CisgICAgcGdCcm93c2VyLAorICAgIGFjaVRyZWVJZGVudGlmaWVyCisgICk7CisKKyAgaWYgKGhh c1NlcnZlck9yRGF0YWJhc2VDb25maWd1cmF0aW9uKHBhcmVudERhdGEpCisgICAgfHwgIWhhc1Nj aGVtYU9yQ2F0YWxvZ09yVmlld0luZm9ybWF0aW9uKHBhcmVudERhdGEpKSB7CisgICAgcmV0dXJu OworICB9CisKKyAgbGV0IG5hbWVzcGFjZU5hbWUgPSByZXRyaWV2ZU5hbWVTcGFjZU5hbWUocGFy ZW50RGF0YSk7CisgIGNvbnN0IGJhc2VVcmwgPSBnZW5lcmF0ZVVybChjb25uZWN0aW9uRGF0YSwg bm9kZS5nZXREYXRhKCksIHBhcmVudERhdGEpOworICBjb25zdCBncmlkX3RpdGxlID0gZ2VuZXJh dGVEYXRhZ3JpZFRpdGxlKHBhcmVudERhdGEsIG5hbWVzcGFjZU5hbWUsIG5vZGUuZ2V0RGF0YSgp KTsKKworICBkYXRhZ3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24oCisgICAgYmFzZVVybCwKKyAgICBu dWxsLAorICAgICdmYWxzZScsCisgICAgcGFyZW50RGF0YS5zZXJ2ZXIuc2VydmVyX3R5cGUsCisg ICAgJycsCisgICAgZ3JpZF90aXRsZSwKKyAgICAnJworICApOworfQorCisKK2Z1bmN0aW9uIHJl dHJpZXZlTmFtZVNwYWNlTmFtZShwYXJlbnREYXRhKSB7CisgIGlmIChwYXJlbnREYXRhLnNjaGVt YSAhPT0gdW5kZWZpbmVkKSB7CisgICAgcmV0dXJuIHBhcmVudERhdGEuc2NoZW1hLmxhYmVsOwor ICB9CisgIGVsc2UgaWYgKHBhcmVudERhdGEudmlldyAhPT0gdW5kZWZpbmVkKSB7CisgICAgcmV0 dXJuIHBhcmVudERhdGEudmlldy5sYWJlbDsKKyAgfQorICBlbHNlIGlmIChwYXJlbnREYXRhLmNh dGFsb2cgIT09IHVuZGVmaW5lZCkgeworICAgIHJldHVybiBwYXJlbnREYXRhLmNhdGFsb2cubGFi ZWw7CisgIH0KKyAgcmV0dXJuICcnOworfQorCitmdW5jdGlvbiBnZW5lcmF0ZVVybChjb25uZWN0 aW9uRGF0YSwgbm9kZURhdGEsIHBhcmVudERhdGEpIHsKKyAgY29uc3QgdXJsX3BhcmFtcyA9IHsK KyAgICAnY21kX3R5cGUnOiBjb25uZWN0aW9uRGF0YS5tbnVpZCwKKyAgICAnb2JqX3R5cGUnOiBu b2RlRGF0YS5fdHlwZSwKKyAgICAnc2dpZCc6IHBhcmVudERhdGEuc2VydmVyX2dyb3VwLl9pZCwK KyAgICAnc2lkJzogcGFyZW50RGF0YS5zZXJ2ZXIuX2lkLAorICAgICdkaWQnOiBwYXJlbnREYXRh LmRhdGFiYXNlLl9pZCwKKyAgICAnb2JqX2lkJzogbm9kZURhdGEuX2lkLAorICB9OworCisgIHJl dHVybiB1cmxfZm9yKCdkYXRhZ3JpZC5pbml0aWFsaXplX2RhdGFncmlkJywgdXJsX3BhcmFtcyk7 Cit9CisKK2Z1bmN0aW9uIGhhc1NlcnZlck9yRGF0YWJhc2VDb25maWd1cmF0aW9uKHBhcmVudERh dGEpIHsKKyAgcmV0dXJuIHBhcmVudERhdGEuc2VydmVyID09PSB1bmRlZmluZWQgfHwgcGFyZW50 RGF0YS5kYXRhYmFzZSA9PT0gdW5kZWZpbmVkOworfQorCitmdW5jdGlvbiBoYXNTY2hlbWFPckNh dGFsb2dPclZpZXdJbmZvcm1hdGlvbihwYXJlbnREYXRhKSB7CisgIHJldHVybiBwYXJlbnREYXRh LnNjaGVtYSAhPT0gdW5kZWZpbmVkIHx8IHBhcmVudERhdGEudmlldyAhPT0gdW5kZWZpbmVkIHx8 CisgICAgcGFyZW50RGF0YS5jYXRhbG9nICE9PSB1bmRlZmluZWQ7Cit9CisKK2Z1bmN0aW9uIGdl bmVyYXRlRGF0YWdyaWRUaXRsZShwYXJlbnREYXRhLCBuYW1lc3BhY2VOYW1lLCBub2RlRGF0YSkg eworICByZXR1cm4gYCR7cGFyZW50RGF0YS5zZXJ2ZXIubGFiZWx9IC0gJHtwYXJlbnREYXRhLmRh dGFiYXNlLmxhYmVsfSAtICR7bmFtZXNwYWNlTmFtZX0uJHtub2RlRGF0YS5sYWJlbH1gOworfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVl cnlfdG9vbC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1 ZXJ5X3Rvb2wuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjBlYjEyYjhi Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pz L3Nob3dfcXVlcnlfdG9vbC5qcwpAQCAtMCwwICsxLDYzIEBACisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFz ZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBnZXR0 ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsKK2ltcG9ydCB1cmxfZm9y IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy91cmxfZm9yJzsKK2ltcG9ydCB7Z2V0VHJlZU5v ZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllcn0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3Ry ZWUvcGdhZG1pbl90cmVlX25vZGUnOworCitmdW5jdGlvbiBoYXNEYXRhYmFzZUluZm9ybWF0aW9u KHBhcmVudERhdGEpIHsKKyAgcmV0dXJuIHBhcmVudERhdGEuZGF0YWJhc2U7Cit9CisKK2Z1bmN0 aW9uIGdlbmVyYXRlVXJsKHBhcmVudERhdGEpIHsKKyAgbGV0IHVybF9lbmRwb2ludCA9ICdkYXRh Z3JpZC5pbml0aWFsaXplX3F1ZXJ5X3Rvb2wnOworICBsZXQgdXJsX3BhcmFtcyA9IHsKKyAgICAn c2dpZCc6IHBhcmVudERhdGEuc2VydmVyX2dyb3VwLl9pZCwKKyAgICAnc2lkJzogcGFyZW50RGF0 YS5zZXJ2ZXIuX2lkLAorICB9OworCisgIGlmIChoYXNEYXRhYmFzZUluZm9ybWF0aW9uKHBhcmVu dERhdGEpKSB7CisgICAgdXJsX3BhcmFtc1snZGlkJ10gPSBwYXJlbnREYXRhLmRhdGFiYXNlLl9p ZDsKKyAgICB1cmxfZW5kcG9pbnQgPSAnZGF0YWdyaWQuaW5pdGlhbGl6ZV9xdWVyeV90b29sX3dp dGhfZGlkJzsKKyAgfQorCisgIHJldHVybiB1cmxfZm9yKHVybF9lbmRwb2ludCwgdXJsX3BhcmFt cyk7Cit9CisKK2Z1bmN0aW9uIGhhc1NlcnZlckluZm9ybWF0aW9ucyhwYXJlbnREYXRhKSB7Cisg IHJldHVybiBwYXJlbnREYXRhLnNlcnZlciA9PT0gdW5kZWZpbmVkOworfQorCitleHBvcnQgZnVu Y3Rpb24gc2hvd1F1ZXJ5VG9vbChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwgdXJsLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNpVHJlZUlkZW50aWZpZXIsIHBhbmVsVGl0 bGUpIHsKKyAgY29uc3Qgc1VSTCA9IHVybCB8fCAnJzsKKyAgY29uc3QgcXVlcnlUb29sVGl0bGUg PSBwYW5lbFRpdGxlIHx8ICcnOworCisgIGNvbnN0IGN1cnJlbnROb2RlID0gcGdCcm93c2VyLnRy ZWVNZW51LmZpbmROb2RlQnlEb21FbGVtZW50KGFjaVRyZWVJZGVudGlmaWVyKTsKKyAgaWYgKGN1 cnJlbnROb2RlID09PSB1bmRlZmluZWQpIHsKKyAgICBhbGVydGlmeS5hbGVydCgKKyAgICAgIGdl dHRleHQoJ1F1ZXJ5IFRvb2wgRXJyb3InKSwKKyAgICAgIGdldHRleHQoJ05vIG9iamVjdCBzZWxl Y3RlZC4nKQorICAgICk7CisgICAgcmV0dXJuOworICB9CisKKyAgY29uc3QgcGFyZW50RGF0YSA9 IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIuY2FsbCgKKyAgICBwZ0Jyb3dzZXIs IGFjaVRyZWVJZGVudGlmaWVyKTsKKworICBpZiAoaGFzU2VydmVySW5mb3JtYXRpb25zKHBhcmVu dERhdGEpKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgY29uc3QgYmFzZVVybCA9IGdlbmVyYXRl VXJsKHBhcmVudERhdGEpOworCisgIGRhdGFncmlkLmNyZWF0ZV90cmFuc2FjdGlvbigKKyAgICBi YXNlVXJsLCBudWxsLCAndHJ1ZScsCisgICAgcGFyZW50RGF0YS5zZXJ2ZXIuc2VydmVyX3R5cGUs IHNVUkwsIHF1ZXJ5VG9vbFRpdGxlLCAnJywgZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9ncmFudF93aXphcmQuanMgYi93ZWIv cGdhZG1pbi90b29scy9ncmFudF93aXphcmQvc3RhdGljL2pzL2dyYW50X3dpemFyZC5qcwppbmRl eCA3NTA4ODdlYy4uY2YyMzRmMWQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50 X3dpemFyZC9zdGF0aWMvanMvZ3JhbnRfd2l6YXJkLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L2dyYW50X3dpemFyZC9zdGF0aWMvanMvZ3JhbnRfd2l6YXJkLmpzCkBAIC0yLDEyICsyLDE2IEBA CiBkZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVl cnknLCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAn cGdhZG1pbi5iYWNrZ3JpZCcsICdwZ2FkbWluLmJhY2tmb3JtJywKLSAgJ3BnYWRtaW4uYnJvd3Nl cicsICdwZ2FkbWluLmJyb3dzZXIubm9kZScsICdiYWNrZ3JpZC5zZWxlY3QuYWxsJywKKyAgJ3Bn YWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJyb3dzZXIubm9kZScsCisgICd0b29scy9ncmFudF93 aXphcmQvc3RhdGljL2pzL21lbnVfdXRpbHMnLAorICAnc291cmNlcy9tZW51L21lbnVfZW5hYmxl ZCcsCisKKyAgJ2JhY2tncmlkLnNlbGVjdC5hbGwnLAogICAnYmFja2dyaWQuZmlsdGVyJywgJ3Bn YWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKICAgJ3BnYWRtaW4uYnJvd3Nlci53aXph cmQnLAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBB bGVydGlmeSwgQmFja2dyaWQsIEJhY2tmb3JtLCBwZ0Jyb3dzZXIsCi0gIHBnTm9kZQorICBwZ05v ZGUsIG1lbnVVdGlscywgbWVudUVuYWJsZWQKICkgewogCiAgIC8vIGlmIG1vZHVsZSBpcyBhbHJl YWR5IGluaXRpYWxpemVkLCByZWZlciB0byB0aGF0LgpAQCAtMTQzLDQxICsxNDcsNiBAQCBkZWZp bmUoWwogCiAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKIAotICAgICAgLy8gRGVmaW5l IGxpc3Qgb2Ygbm9kZXMgb24gd2hpY2ggZ3JhbnQgd2l6YXJkIGNvbnRleHQgbWVudSBvcHRpb24g YXBwZWFycwotICAgICAgdmFyIHN1cHBvcnRlZF9ub2RlcyA9IFsKLSAgICAgICAgICAnc2NoZW1h JywgJ2NvbGwtZnVuY3Rpb24nLCAnY29sbC1zZXF1ZW5jZScsCi0gICAgICAgICAgJ2NvbGwtdGFi bGUnLCAnY29sbC12aWV3JywgJ2NvbGwtcHJvY2VkdXJlJywKLSAgICAgICAgICAnY29sbC1tdmll dycsICdkYXRhYmFzZScsICdjb2xsLXRyaWdnZXJfZnVuY3Rpb24nLAotICAgICAgICBdLAotCi0g ICAgICAgIC8qKgotICAgICAgICAgIEVuYWJsZS9kaXNhYmxlIGdyYW50d2l6YXJkIG1lbnUgaW4g dG9vbHMgYmFzZWQKLSAgICAgICAgICBvbiBub2RlIHNlbGVjdGVkCi0gICAgICAgICAgaWYgc2Vs ZWN0ZWQgbm9kZSBpcyBwcmVzZW50IGluIHN1cHBvcnRlZF9ub2RlcywKLSAgICAgICAgICBtZW51 IHdpbGwgYmUgZW5hYmxlZCBvdGhlcndpc2UgZGlzYWJsZWQuCi0gICAgICAgICAgQWxzbywgaGlk ZSBpdCBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0YWxvZ3MKLSAgICAgICAgKi8KLSAgICAgICAgbWVu dV9lbmFibGVkID0gZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0pIHsKLSAgICAgICAgICB2YXIgdCA9 IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAgICBkID0g aXRlbURhdGE7Ci0gICAgICAgICAgdmFyIHBhcmVudF9pdGVtID0gdC5oYXNQYXJlbnQoaSkgPyB0 LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVt ID8gdC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOwotICAgICAgICAgIGlmICghXy5pc1Vu ZGVmaW5lZChkKSAmJiAhXy5pc051bGwoZCkgJiYgIV8uaXNOdWxsKHBhcmVudF9kYXRhKSkgewot ICAgICAgICAgICAgaWYgKF8uaW5kZXhPZihzdXBwb3J0ZWRfbm9kZXMsIGQuX3R5cGUpICE9PSAt MSAmJgotICAgICAgICAgICAgICBwYXJlbnRfZGF0YS5fdHlwZSAhPSAnY2F0YWxvZycpIHsKLSAg ICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ2RhdGFiYXNlJyAmJiBkLmFsbG93Q29ubikKLSAg ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgZWxzZSBpZiAoZC5fdHlw ZSAhPSAnZGF0YWJhc2UnKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBl bHNlCi0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9IGVsc2UKLSAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfTsKLQogICAgICAgLy8gRGVmaW5lIHRoZSBu b2RlcyBvbiB3aGljaCB0aGUgbWVudXMgdG8gYmUgYXBwZWFyCiAgICAgICB2YXIgbWVudXMgPSBb ewogICAgICAgICBuYW1lOiAnZ3JhbnRfd2l6YXJkX3NjaGVtYScsCkBAIC0xODcsMjEgKzE1Niwy MyBAQCBkZWZpbmUoWwogICAgICAgICBwcmlvcml0eTogMTQsCiAgICAgICAgIGxhYmVsOiBnZXR0 ZXh0KCdHcmFudCBXaXphcmQuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLXVubG9jay1hbHQn LAotICAgICAgICBlbmFibGU6IG1lbnVfZW5hYmxlZCwKKyAgICAgICAgZW5hYmxlOiBtZW51RW5h YmxlZC5tZW51RW5hYmxlZC5iaW5kKG51bGwsCisgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51 LCBtZW51VXRpbHMuc3VwcG9ydGVkTm9kZXMpLAogICAgICAgfV07CiAKICAgICAgIC8vIEFkZCBz dXBwb3J0ZWQgbWVudXMgaW50byB0aGUgbWVudXMgbGlzdAotICAgICAgZm9yICh2YXIgaWR4ID0g MDsgaWR4IDwgc3VwcG9ydGVkX25vZGVzLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgIGZvciAodmFy IGlkeCA9IDA7IGlkeCA8IG1lbnVVdGlscy5zdXBwb3J0ZWROb2Rlcy5sZW5ndGg7IGlkeCsrKSB7 CiAgICAgICAgIG1lbnVzLnB1c2goewotICAgICAgICAgIG5hbWU6ICdncmFudF93aXphcmRfc2No ZW1hX2NvbnRleHRfJyArIHN1cHBvcnRlZF9ub2Rlc1tpZHhdLAotICAgICAgICAgIG5vZGU6IHN1 cHBvcnRlZF9ub2Rlc1tpZHhdLAorICAgICAgICAgIG5hbWU6ICdncmFudF93aXphcmRfc2NoZW1h X2NvbnRleHRfJyArIG1lbnVVdGlscy5zdXBwb3J0ZWROb2Rlc1tpZHhdLAorICAgICAgICAgIG5v ZGU6IG1lbnVVdGlscy5zdXBwb3J0ZWROb2Rlc1tpZHhdLAogICAgICAgICAgIG1vZHVsZTogdGhp cywKICAgICAgICAgICBhcHBsaWVzOiBbJ2NvbnRleHQnXSwKICAgICAgICAgICBjYWxsYmFjazog J3N0YXJ0X2dyYW50X3dpemFyZCcsCiAgICAgICAgICAgcHJpb3JpdHk6IDE0LAogICAgICAgICAg IGxhYmVsOiBnZXR0ZXh0KCdHcmFudCBXaXphcmQuLi4nKSwKICAgICAgICAgICBpY29uOiAnZmEg ZmEtdW5sb2NrLWFsdCcsCi0gICAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAg ICAgZW5hYmxlOiBtZW51RW5hYmxlZC5tZW51RW5hYmxlZC5iaW5kKG51bGwsCisgICAgICAgICAg ICBwZ0Jyb3dzZXIudHJlZU1lbnUsIG1lbnVVdGlscy5zdXBwb3J0ZWROb2RlcyksCiAgICAgICAg IH0pOwogICAgICAgfQogICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhtZW51cyk7CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9ncmFudF93aXphcmQvc3RhdGljL2pzL21lbnVfdXRpbHMu anMgYi93ZWIvcGdhZG1pbi90b29scy9ncmFudF93aXphcmQvc3RhdGljL2pzL21lbnVfdXRpbHMu anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmI1NmNlM2NkCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9tZW51 X3V0aWxzLmpzCkBAIC0wLDAgKzEsMTYgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRt aW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworZXhwb3J0IGNvbnN0IHN1cHBvcnRl ZE5vZGVzID0gWworICAnc2NoZW1hJywgJ2NvbGwtZnVuY3Rpb24nLCAnY29sbC1zZXF1ZW5jZScs CisgICdjb2xsLXRhYmxlJywgJ2NvbGwtdmlldycsICdjb2xsLXByb2NlZHVyZScsCisgICdjb2xs LW12aWV3JywgJ2RhdGFiYXNlJywgJ2NvbGwtdHJpZ2dlcl9mdW5jdGlvbicsCitdOworCisKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2ltcG9ydF9leHBvcnQvc3RhdGljL2pzL2ltcG9y dF9leHBvcnQuanMgYi93ZWIvcGdhZG1pbi90b29scy9pbXBvcnRfZXhwb3J0L3N0YXRpYy9qcy9p bXBvcnRfZXhwb3J0LmpzCmluZGV4IDMwNThmMTIyLi5iYmIwNDVjZCAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vdG9vbHMvaW1wb3J0X2V4cG9ydC9zdGF0aWMvanMvaW1wb3J0X2V4cG9ydC5qcwor KysgYi93ZWIvcGdhZG1pbi90b29scy9pbXBvcnRfZXhwb3J0L3N0YXRpYy9qcy9pbXBvcnRfZXhw b3J0LmpzCkBAIC0xLDEwICsxLDEzIEBACiBkZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0Jywg J3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsICd1bmRlcnNjb3JlLnN0 cmluZycsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRt aW4uYnJvd3NlcicsICdiYWNrYm9uZScsICdiYWNrZ3JpZCcsICdiYWNrZm9ybScsCi0gICdzb3Vy Y2VzL3V0aWxzJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcsICdwZ2Fk bWluLmJyb3dzZXIubm9kZS51aScsCisgICdzb3VyY2VzL3V0aWxzJywKKyAgJ3NvdXJjZXMvbWVu dS9tZW51X2VuYWJsZWQnLAorCisgICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dy aWQnLCAncGdhZG1pbi5icm93c2VyLm5vZGUudWknLAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQs IHVybF9mb3IsICQsIF8sIFMsIEFsZXJ0aWZ5LCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tib25l LCBCYWNrZ3JpZCwKLUJhY2tmb3JtLCBjb21tb25VdGlscworQmFja2Zvcm0sIGNvbW1vblV0aWxz LCBtZW51RW5hYmxlZAogKSB7CiAKICAgcGdBZG1pbiA9IHBnQWRtaW4gfHwgd2luZG93LnBnQWRt aW4gfHwge307CkBAIC0zODMsMjUgKzM4Niw2IEBAIEJhY2tmb3JtLCBjb21tb25VdGlscwogCiAg ICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKIAotICAgICAgLyoKLSAgICAgICAqIEVuYWJs ZS9kaXNhYmxlIGltcG9ydCBtZW51IGluIHRvb2xzIGJhc2VkIG9uIG5vZGUgc2VsZWN0ZWQuIElt cG9ydAotICAgICAgICogbWVudSB3aWxsIGJlIGVuYWJsZWQgb25seSB3aGVuIHVzZXIgc2VsZWN0 IHRhYmxlIG5vZGUuCi0gICAgICAgKi8KLSAgICAgIHZhciBtZW51X2VuYWJsZWQgPSBmdW5jdGlv bihpdGVtRGF0YSwgaXRlbSkgewotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAotICAg ICAgICAgIGkgPSBpdGVtLAotICAgICAgICAgIGQgPSBpdGVtRGF0YTsKLSAgICAgICAgdmFyIHBh cmVudF9pdGVtID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAg ICAgcGFyZW50X2RhdGEgPSBwYXJlbnRfaXRlbSA/IHQuaXRlbURhdGEocGFyZW50X2l0ZW0pIDog bnVsbDsKLSAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGQpICYmICFfLmlzTnVsbChkKSAmJiAh Xy5pc051bGwocGFyZW50X2RhdGEpKQotICAgICAgICAgIHJldHVybiAoCi0gICAgICAgICAgICAo Xy5pbmRleE9mKFsndGFibGUnXSwgZC5fdHlwZSkgIT09IC0xICYmCi0gICAgICAgICAgICAgIHBh cmVudF9kYXRhLl90eXBlICE9ICdjYXRhbG9nJykgPyB0cnVlIDogZmFsc2UKLSAgICAgICAgICAp OwotICAgICAgICBlbHNlCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfTsKLQogICAg ICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29udGV4dCBtZW51IHRvIGRpc3BsYXkgdGhlIGltcG9ydCBv cHRpb25zIHdoZW4gdXNlciBvcGVuIHRoZSBjb250ZXh0IG1lbnUgZm9yIHRhYmxlCiAgICAgICBw Z0Jyb3dzZXIuYWRkX21lbnVzKFt7CiAgICAgICAgIG5hbWU6ICdpbXBvcnQnLApAQCAtNDEzLDcg KzM5Nyw3IEBAIEJhY2tmb3JtLCBjb21tb25VdGlscwogICAgICAgICBwcmlvcml0eTogMTAsCiAg ICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdJbXBvcnQvRXhwb3J0Li4uJyksCiAgICAgICAgIGljb246 ICdmYSBmYS1zaG9wcGluZy1jYXJ0JywKLSAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisg ICAgICAgIGVuYWJsZTogbWVudUVuYWJsZWQubWVudUVuYWJsZWQuYmluZChudWxsLCBwZ0Jyb3dz ZXIudHJlZU1lbnUsIFsndGFibGUnXSksCiAgICAgICB9XSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21haW50ZW5hbmNlLmpz IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21haW50ZW5hbmNlLmpz CmluZGV4IGYyMTAyNjAyLi45MDkyZWI3MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMv bWFpbnRlbmFuY2Uvc3RhdGljL2pzL21haW50ZW5hbmNlLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rv b2xzL21haW50ZW5hbmNlL3N0YXRpYy9qcy9tYWludGVuYW5jZS5qcwpAQCAtMiwxMSArMiwxNCBA QCBkZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVl cnknLCAndW5kZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluLmFsZXJ0 aWZ5anMnLCAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdiYWNrYm9uZScs CiAgICdiYWNrZ3JpZCcsICdiYWNrZm9ybScsICdzb3VyY2VzL3V0aWxzJywKKyAgJ3Rvb2xzL21h aW50ZW5hbmNlL3N0YXRpYy9qcy9tZW51X3V0aWxzJywKKyAgJ3NvdXJjZXMvbWVudS9tZW51X2Vu YWJsZWQnLAogICAncGdhZG1pbi5iYWNrZm9ybScsICdwZ2FkbWluLmJhY2tncmlkJywKICAgJ3Bn YWRtaW4uYnJvd3Nlci5ub2RlLnVpJywKIF0sIGZ1bmN0aW9uKAogICBnZXR0ZXh0LCB1cmxfZm9y LCAkLCBfLCBTLCBBbGVydGlmeSwgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrYm9uZSwgQmFja2dy aWQsCi0gIEJhY2tmb3JtLCBjb21tb25VdGlscworICBCYWNrZm9ybSwgY29tbW9uVXRpbHMsCisg IG1lbnVVdGlscywgbWVudUVuYWJsZWQKICkgewogCiAgIHBnQWRtaW4gPSBwZ0FkbWluIHx8IHdp bmRvdy5wZ0FkbWluIHx8IHt9OwpAQCAtMTY4LDM2ICsxNzEsNiBAQCBkZWZpbmUoWwogCiAgICAg ICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKIAotICAgICAgdmFyIG1haW50ZW5hbmNlX3N1cHBv cnRlZF9ub2RlcyA9IFsKLSAgICAgICAgJ2RhdGFiYXNlJywgJ3RhYmxlJywgJ3ByaW1hcnlfa2V5 JywKLSAgICAgICAgJ3VuaXF1ZV9jb25zdHJhaW50JywgJ2luZGV4JywgJ3BhcnRpdGlvbicsCi0g ICAgICBdOwotCi0gICAgICAvKioKLSAgICAgICBFbmFibGUvZGlzYWJsZSBNYWludGVuYW5jZSBt ZW51IGluIHRvb2xzIGJhc2VkIG9uIG5vZGUgc2VsZWN0ZWQuCi0gICAgICAgTWFpbnRlbmFuY2Ug bWVudSB3aWxsIGJlIGVuYWJsZWQgb25seSB3aGVuIHVzZXIgc2VsZWN0IHRhYmxlIGFuZCBkYXRh YmFzZSBub2RlLgotICAgICAgKi8KLSAgICAgIHZhciBtZW51X2VuYWJsZWQgPSBmdW5jdGlvbihp dGVtRGF0YSwgaXRlbSkgewotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAg ICAgIGkgPSBpdGVtLAotICAgICAgICAgIGQgPSBpdGVtRGF0YTsKLSAgICAgICAgdmFyIHBhcmVu dF9pdGVtID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAg cGFyZW50X2RhdGEgPSBwYXJlbnRfaXRlbSA/IHQuaXRlbURhdGEocGFyZW50X2l0ZW0pIDogbnVs bDsKLSAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGQpICYmICFfLmlzTnVsbChkKSAmJiAhXy5p c051bGwocGFyZW50X2RhdGEpKSB7Ci0gICAgICAgICAgaWYgKF8uaW5kZXhPZihtYWludGVuYW5j ZV9zdXBwb3J0ZWRfbm9kZXMsIGQuX3R5cGUpICE9PSAtMSAmJgotICAgICAgICAgICAgcGFyZW50 X2RhdGEuX3R5cGUgIT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICBpZiAoZC5fdHlwZSA9PSAn ZGF0YWJhc2UnICYmIGQuYWxsb3dDb25uKQotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg ICAgICAgICAgIGVsc2UgaWYgKGQuX3R5cGUgIT0gJ2RhdGFiYXNlJykKLSAgICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKLSAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg fSBlbHNlCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfTsKLQogICAgICAgdmFyIG1l bnVzID0gW3sKICAgICAgICAgbmFtZTogJ21haW50ZW5hbmNlJywKICAgICAgICAgbW9kdWxlOiB0 aGlzLApAQCAtMjA2LDIxICsxNzksMjMgQEAgZGVmaW5lKFsKICAgICAgICAgcHJpb3JpdHk6IDEw LAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTWFpbnRlbmFuY2UuLi4nKSwKICAgICAgICAgaWNv bjogJ2ZhIGZhLXdyZW5jaCcsCi0gICAgICAgIGVuYWJsZTogbWVudV9lbmFibGVkLAorICAgICAg ICBlbmFibGU6IG1lbnVFbmFibGVkLm1lbnVFbmFibGVkLmJpbmQobnVsbCwKKyAgICAgICAgICBw Z0Jyb3dzZXIudHJlZU1lbnUsIG1lbnVVdGlscy5tYWludGVuYW5jZVN1cHBvcnRlZE5vZGVzKSwK ICAgICAgIH1dOwogCiAgICAgICAvLyBBZGQgc3VwcG9ydGVkIG1lbnVzIGludG8gdGhlIG1lbnVz IGxpc3QKLSAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IG1haW50ZW5hbmNlX3N1cHBvcnRl ZF9ub2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBt ZW51VXRpbHMubWFpbnRlbmFuY2VTdXBwb3J0ZWROb2Rlcy5sZW5ndGg7IGlkeCsrKSB7CiAgICAg ICAgIG1lbnVzLnB1c2goewotICAgICAgICAgIG5hbWU6ICdtYWludGVuYW5jZV9jb250ZXh0Xycg KyBtYWludGVuYW5jZV9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKLSAgICAgICAgICBub2RlOiBtYWlu dGVuYW5jZV9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKKyAgICAgICAgICBuYW1lOiAnbWFpbnRlbmFu Y2VfY29udGV4dF8nICsgbWVudVV0aWxzLm1haW50ZW5hbmNlU3VwcG9ydGVkTm9kZXNbaWR4XSwK KyAgICAgICAgICBub2RlOiBtZW51VXRpbHMubWFpbnRlbmFuY2VTdXBwb3J0ZWROb2Rlc1tpZHhd LAogICAgICAgICAgIG1vZHVsZTogdGhpcywKICAgICAgICAgICBhcHBsaWVzOiBbJ2NvbnRleHQn XSwKICAgICAgICAgICBjYWxsYmFjazogJ2NhbGxiYWNrX21haW50ZW5hbmNlJywKICAgICAgICAg ICBwcmlvcml0eTogMTAsCiAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ01haW50ZW5hbmNlLi4u JyksCiAgICAgICAgICAgaWNvbjogJ2ZhIGZhLXdyZW5jaCcsCi0gICAgICAgICAgZW5hYmxlOiBt ZW51X2VuYWJsZWQsCisgICAgICAgICAgZW5hYmxlOiAgbWVudUVuYWJsZWQubWVudUVuYWJsZWQu YmluZChudWxsLAorICAgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudSwgbWVudVV0aWxzLm1haW50 ZW5hbmNlU3VwcG9ydGVkTm9kZXMpLAogICAgICAgICB9KTsKICAgICAgIH0KICAgICAgIHBnQnJv d3Nlci5hZGRfbWVudXMobWVudXMpOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFp bnRlbmFuY2Uvc3RhdGljL2pzL21lbnVfdXRpbHMuanMgYi93ZWIvcGdhZG1pbi90b29scy9tYWlu dGVuYW5jZS9zdGF0aWMvanMvbWVudV91dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMC4uOGNkZTFiYWEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29s cy9tYWludGVuYW5jZS9zdGF0aWMvanMvbWVudV91dGlscy5qcwpAQCAtMCwwICsxLDEzIEBACisv Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdo dCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vCisKK2V4cG9ydCBjb25zdCBtYWludGVuYW5jZVN1cHBvcnRlZE5vZGVzID0gWworICAnZGF0 YWJhc2UnLCAndGFibGUnLCAncHJpbWFyeV9rZXknLAorICAndW5pcXVlX2NvbnN0cmFpbnQnLCAn aW5kZXgnLCAncGFydGl0aW9uJywKK107CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9y ZXN0b3JlL3N0YXRpYy9qcy9tZW51X3V0aWxzLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9y ZS9zdGF0aWMvanMvbWVudV91dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMC4uMmQzNWM5NTEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0 b3JlL3N0YXRpYy9qcy9tZW51X3V0aWxzLmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisv LyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEz IC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworZXhw b3J0IGNvbnN0IHJlc3RvcmVTdXBwb3J0ZWROb2RlcyA9IFsKKyAgJ2RhdGFiYXNlJywKKyAgJ3Nj aGVtYScsCisgICd0YWJsZScsCisgICdmdW5jdGlvbicsCisgICd0cmlnZ2VyJywKKyAgJ2luZGV4 JywKKyAgJ3BhcnRpdGlvbicsCitdOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVz dG9yZS9zdGF0aWMvanMvcmVzdG9yZS5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3Rh dGljL2pzL3Jlc3RvcmUuanMKaW5kZXggNTg1Yjk3MjkuLmVhYTdhMTVlIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlLmpzCisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmUuanMKQEAgLTEsMTEgKzEsMTMg QEAKLS8vIFJlc3RvcmUgZGlhbG9nCiBkZWZpbmUoJ3Rvb2xzLnJlc3RvcmUnLCBbCiAgICdzb3Vy Y2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywg J2JhY2tib25lJywKICAgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4uYWxlcnRpZnlqcycs ICdwZ2FkbWluLmJyb3dzZXInLAogICAncGdhZG1pbi5iYWNrZ3JpZCcsICdwZ2FkbWluLmJhY2tm b3JtJywgJ3NvdXJjZXMvdXRpbHMnLAorICAndG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvbWVudV91 dGlscycsCisgICdzb3VyY2VzL21lbnUvbWVudV9lbmFibGVkJywKKyAgJ3Rvb2xzL3Jlc3RvcmUv c3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nJywKIF0sIGZ1bmN0aW9uKAogICBnZXR0ZXh0LCB1cmxf Zm9yLCAkLCBfLCBCYWNrYm9uZSwgUywgYWxlcnRpZnksIHBnQnJvd3NlciwgQmFja2dyaWQsIEJh Y2tmb3JtLAotY29tbW9uVXRpbHMKK2NvbW1vblV0aWxzLCBtZW51VXRpbHMsIG1lbnVFbmFibGVk LCByZXN0b3JlRGlhbG9nCiApIHsKIAogICAvLyBpZiBtb2R1bGUgaXMgYWxyZWFkeSBpbml0aWFs aXplZCwgcmVmZXIgdG8gdGhhdC4KQEAgLTMwNyw1OSArMzA5LDYgQEAgY29tbW9uVXRpbHMKIAog ICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CiAKLSAgICAgIC8vIERlZmluZSBsaXN0IG9m IG5vZGVzIG9uIHdoaWNoIHJlc3RvcmUgY29udGV4dCBtZW51IG9wdGlvbiBhcHBlYXJzCi0gICAg ICB2YXIgcmVzdG9yZV9zdXBwb3J0ZWRfbm9kZXMgPSBbCi0gICAgICAgICdkYXRhYmFzZScsICdz Y2hlbWEnLAotICAgICAgICAndGFibGUnLCAnZnVuY3Rpb24nLAotICAgICAgICAndHJpZ2dlcics ICdpbmRleCcsCi0gICAgICAgICdwYXJ0aXRpb24nLAotICAgICAgXTsKLQotICAgICAgLyoqCi0g ICAgICAgIEVuYWJsZS9kaXNhYmxlIHJlc3RvcmUgbWVudSBpbiB0b29scyBiYXNlZAotICAgICAg ICBvbiBub2RlIHNlbGVjdGVkCi0gICAgICAgIGlmIHNlbGVjdGVkIG5vZGUgaXMgcHJlc2VudCBp biBzdXBwb3J0ZWRfbm9kZXMsCi0gICAgICAgIG1lbnUgd2lsbCBiZSBlbmFibGVkIG90aGVyd2lz ZSBkaXNhYmxlZC4KLSAgICAgICAgQWxzbywgaGlkZSBpdCBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0 YWxvZ3MKLSAgICAgICovCi0gICAgICB2YXIgbWVudV9lbmFibGVkID0gZnVuY3Rpb24oaXRlbURh dGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAg ICAgICBpID0gaXRlbSwKLSAgICAgICAgICBkID0gaXRlbURhdGE7Ci0gICAgICAgIHZhciBwYXJl bnRfaXRlbSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsLAotICAgICAgICAg IHBhcmVudF9kYXRhID0gcGFyZW50X2l0ZW0gPyB0Lml0ZW1EYXRhKHBhcmVudF9pdGVtKSA6IG51 bGw7Ci0gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChkKSAmJiAhXy5pc051bGwoZCkgJiYgIV8u aXNOdWxsKHBhcmVudF9kYXRhKSkgewotICAgICAgICAgIGlmIChfLmluZGV4T2YocmVzdG9yZV9z dXBwb3J0ZWRfbm9kZXMsIGQuX3R5cGUpICE9PSAtMSAmJgotICAgICAgICAgICAgaXNfcGFyZW50 X2NhdGFsb2coaXRlbURhdGEsIGl0ZW0sIGRhdGEpKSB7Ci0gICAgICAgICAgICBpZiAoZC5fdHlw ZSA9PSAnZGF0YWJhc2UnICYmIGQuYWxsb3dDb25uKQotICAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGQuX3R5cGUgIT0gJ2RhdGFiYXNlJykKLSAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKLSAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg ICAgICAgfSBlbHNlCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfTsKLQotICAgICAg dmFyIGlzX3BhcmVudF9jYXRhbG9nID0gZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0pIHsKLSAgICAg ICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICBpID0gaXRlbSwKLSAgICAgICAg ICBkID0gaXRlbURhdGE7Ci0KLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hl Y2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBpdCBp cyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIHJlc3RvcmUKLSAgICAgICAgICBpZiAoXy5pbmRl eE9mKFsnY2F0YWxvZyddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl OwotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAg ICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAg IC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAg ICAgcmV0dXJuIHRydWU7Ci0gICAgICB9OwotCiAgICAgICAvLyBEZWZpbmUgdGhlIG5vZGVzIG9u IHdoaWNoIHRoZSBtZW51cyB0byBiZSBhcHBlYXIKICAgICAgIHZhciBtZW51cyA9IFt7CiAgICAg ICAgIG5hbWU6ICdyZXN0b3JlX29iamVjdCcsCkBAIC0zNjksMjAgKzMxOCwyMiBAQCBjb21tb25V dGlscwogICAgICAgICBwcmlvcml0eTogMTMsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdSZXN0 b3JlLi4uJyksCiAgICAgICAgIGljb246ICdmYSBmYS11cGxvYWQnLAotICAgICAgICBlbmFibGU6 IG1lbnVfZW5hYmxlZCwKKyAgICAgICAgZW5hYmxlOiBtZW51RW5hYmxlZC5tZW51RW5hYmxlZC5i aW5kKG51bGwsCisgICAgICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUsIG1lbnVVdGlscy5yZXN0 b3JlU3VwcG9ydGVkTm9kZXMpLAogICAgICAgfV07CiAKLSAgICAgIGZvciAodmFyIGlkeCA9IDA7 IGlkeCA8IHJlc3RvcmVfc3VwcG9ydGVkX25vZGVzLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgIGZv ciAodmFyIGlkeCA9IDA7IGlkeCA8IG1lbnVVdGlscy5yZXN0b3JlU3VwcG9ydGVkTm9kZXMubGVu Z3RoOyBpZHgrKykgewogICAgICAgICBtZW51cy5wdXNoKHsKLSAgICAgICAgICBuYW1lOiAncmVz dG9yZV8nICsgcmVzdG9yZV9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKLSAgICAgICAgICBub2RlOiBy ZXN0b3JlX3N1cHBvcnRlZF9ub2Rlc1tpZHhdLAorICAgICAgICAgIG5hbWU6ICdyZXN0b3JlXycg KyBtZW51VXRpbHMucmVzdG9yZVN1cHBvcnRlZE5vZGVzW2lkeF0sCisgICAgICAgICAgbm9kZTog bWVudVV0aWxzLnJlc3RvcmVTdXBwb3J0ZWROb2Rlc1tpZHhdLAogICAgICAgICAgIG1vZHVsZTog dGhpcywKICAgICAgICAgICBhcHBsaWVzOiBbJ2NvbnRleHQnXSwKICAgICAgICAgICBjYWxsYmFj azogJ3Jlc3RvcmVfb2JqZWN0cycsCiAgICAgICAgICAgcHJpb3JpdHk6IDEzLAogICAgICAgICAg IGxhYmVsOiBnZXR0ZXh0KCdSZXN0b3JlLi4uJyksCiAgICAgICAgICAgaWNvbjogJ2ZhIGZhLXVw bG9hZCcsCi0gICAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgICAgZW5hYmxl OiBtZW51RW5hYmxlZC5tZW51RW5hYmxlZC5iaW5kKG51bGwsCisgICAgICAgICAgICBwZ0Jyb3dz ZXIudHJlZU1lbnUsIG1lbnVVdGlscy5yZXN0b3JlU3VwcG9ydGVkTm9kZXMpLAogICAgICAgICB9 KTsKICAgICAgIH0KIApAQCAtMzkxLDMxOCArMzQyLDggQEAgY29tbW9uVXRpbHMKICAgICB9LAog ICAgIC8vIENhbGxiYWNrIHRvIGRyYXcgQmFja3VwIERpYWxvZyBmb3Igb2JqZWN0cwogICAgIHJl c3RvcmVfb2JqZWN0czogZnVuY3Rpb24oYWN0aW9uLCB0cmVlSXRlbSkgewotCi0gICAgICB2YXIg aSA9IHRyZWVJdGVtIHx8IHBnQnJvd3Nlci50cmVlLnNlbGVjdGVkKCksCi0gICAgICAgIHNlcnZl cl9kYXRhID0gbnVsbDsKLQotICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgdmFyIG5vZGVfZGF0 YSA9IHBnQnJvd3Nlci50cmVlLml0ZW1EYXRhKGkpOwotICAgICAgICBpZiAobm9kZV9kYXRhLl90 eXBlID09ICdzZXJ2ZXInKSB7Ci0gICAgICAgICAgc2VydmVyX2RhdGEgPSBub2RlX2RhdGE7Ci0g ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocGdCcm93c2VyLnRyZWUu aGFzUGFyZW50KGkpKSB7Ci0gICAgICAgICAgaSA9ICQocGdCcm93c2VyLnRyZWUucGFyZW50KGkp KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAg ICAgIGdldHRleHQoJ1Jlc3RvcmUgRXJyb3InKSwKLSAgICAgICAgICAgIGdldHRleHQoJ1BsZWFz ZSBzZWxlY3Qgc2VydmVyIG9yIGNoaWxkIG5vZGUgZnJvbSB0cmVlLicpCi0gICAgICAgICAgKTsK LSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoIXNlcnZl cl9kYXRhKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgdmFyIG1vZHVsZSA9 ICdwYXRocycsCi0gICAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdwZ19iaW5fZGlyJywKLSAgICAg ICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgUG9zdGdyZVNRTCBCaW5hcnkg UGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicpOwotCi0gICAgICBpZiAoKHNlcnZlcl9k YXRhLnR5cGUgJiYgc2VydmVyX2RhdGEudHlwZSA9PSAncHBhcycpIHx8Ci0gICAgICAgIHNlcnZl cl9kYXRhLnNlcnZlcl90eXBlID09ICdwcGFzJykgewotICAgICAgICBwcmVmZXJlbmNlX25hbWUg PSAncHBhc19iaW5fZGlyJzsKLSAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3Vy ZSB0aGUgRURCIEFkdmFuY2VkIFNlcnZlciBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMg ZGlhbG9nLicpOwotICAgICAgfQotCi0gICAgICB2YXIgcHJlZmVyZW5jZSA9IHBnQnJvd3Nlci5n ZXRfcHJlZmVyZW5jZShtb2R1bGUsIHByZWZlcmVuY2VfbmFtZSk7Ci0KLSAgICAgIGlmIChwcmVm ZXJlbmNlKSB7Ci0gICAgICAgIGlmICghcHJlZmVyZW5jZS52YWx1ZSkgewotICAgICAgICAgIGFs ZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0NvbmZpZ3VyYXRpb24gcmVxdWlyZWQnKSwgbXNnKTsKLSAg ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGFsZXJ0 aWZ5LmFsZXJ0KAotICAgICAgICAgIGdldHRleHQoJ1Jlc3RvcmUgRXJyb3InKSwKLSAgICAgICAg ICBTKGdldHRleHQoJ0ZhaWxlZCB0byBsb2FkIHByZWZlcmVuY2UgJXMgb2YgbW9kdWxlICVzJykp LnNwcmludGYocHJlZmVyZW5jZV9uYW1lLCBtb2R1bGUpLnZhbHVlKCkKLSAgICAgICAgKTsKLSAg ICAgICAgcmV0dXJuOwotICAgICAgfQotCi0gICAgICB2YXIgdGl0bGUgPSBTKGdldHRleHQoJ1Jl c3RvcmUgKCVzOiAlcyknKSksCi0gICAgICAgIHRyZWUgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAg ICAgaXRlbSA9IHRyZWVJdGVtIHx8IHRyZWUuc2VsZWN0ZWQoKSwKLSAgICAgICAgZGF0YSA9IGl0 ZW0gJiYgaXRlbS5sZW5ndGggPT0gMSAmJiB0cmVlLml0ZW1EYXRhKGl0ZW0pLAotICAgICAgICBu b2RlID0gZGF0YSAmJiBkYXRhLl90eXBlICYmIHBnQnJvd3Nlci5Ob2Rlc1tkYXRhLl90eXBlXTsK LQotICAgICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAgIHZhciB0cmVlSW5m byA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2l0ZW1dKTsKLQotICAg ICAgaWYgKHRyZWVJbmZvLmRhdGFiYXNlLl9sYWJlbC5pbmRleE9mKCc9JykgPj0gMCkgewotICAg ICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICBnZXR0ZXh0KCdSZXN0b3JlIGVycm9yJyks Ci0gICAgICAgICAgZ2V0dGV4dCgnUmVzdG9yZSBqb2IgY3JlYXRpb24gZmFpbGVkLiAnKwotICAg ICAgICAgICdEYXRhYmFzZXMgd2l0aCA9IHN5bWJvbHMgaW4gdGhlIG5hbWUgY2Fubm90IGJlIHJl c3RvcmVkIHVzaW5nIHRoaXMgdXRpbGl0eS4nKQotICAgICAgICApOwotICAgICAgICByZXR1cm47 Ci0gICAgICB9Ci0KLSAgICAgIHRpdGxlID0gdGl0bGUuc3ByaW50Zihub2RlLmxhYmVsLCBkYXRh LmxhYmVsKS52YWx1ZSgpOwotCi0gICAgICBpZiAoIWFsZXJ0aWZ5LnBnX3Jlc3RvcmUpIHsKLSAg ICAgICAgLy8gQ3JlYXRlIERpYWxvZyB0aXRsZSBvbiB0aGUgZmx5IHdpdGggbm9kZSBkZXRhaWxz Ci0gICAgICAgIGFsZXJ0aWZ5LmRpYWxvZygncGdfcmVzdG9yZScsIGZ1bmN0aW9uIGZhY3Rvcnko KSB7Ci0gICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIG1haW46IGZ1bmN0aW9uKHRpdGxl LCBpdGVtLCBkYXRhLCBub2RlKSB7Ci0gICAgICAgICAgICAgIHRoaXMuc2V0KCd0aXRsZScsIHRp dGxlKTsKLSAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nKCdwZ19ub2RlJywgbm9kZSk7Ci0gICAg ICAgICAgICAgIHRoaXMuc2V0dGluZygncGdfaXRlbScsIGl0ZW0pOwotICAgICAgICAgICAgICB0 aGlzLnNldHRpbmcoJ3BnX2l0ZW1fZGF0YScsIGRhdGEpOwotICAgICAgICAgICAgfSwKLSAgICAg ICAgICAgIGJ1aWxkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgYWxlcnRpZnkucGdEaWFs b2dCdWlsZC5hcHBseSh0aGlzKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBzZXR1cDog ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgYnV0 dG9uczogW3sKLSAgICAgICAgICAgICAgICAgIHRleHQ6ICcnLAotICAgICAgICAgICAgICAgICAg Y2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1sZyBmYS1pbmZvJywK LSAgICAgICAgICAgICAgICAgIGF0dHJzOiB7Ci0gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdv YmplY3RfaGVscCcsCi0gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLAotICAgICAg ICAgICAgICAgICAgICB1cmw6ICdiYWNrdXAuaHRtbCcsCi0gICAgICAgICAgICAgICAgICAgIGxh YmVsOiBnZXR0ZXh0KCdSZXN0b3JlJyksCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg ICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6ICcnLAotICAgICAgICAgICAgICAg ICAga2V5OiAxMTIsCi0gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRlZmF1 bHQgcHVsbC1sZWZ0IGZhIGZhLWxnIGZhLXF1ZXN0aW9uJywKLSAgICAgICAgICAgICAgICAgIGF0 dHJzOiB7Ci0gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcsCi0gICAgICAg ICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLAotICAgICAgICAgICAgICAgICAgICBsYWJlbDog Z2V0dGV4dCgnUmVzdG9yZScpLAotICAgICAgICAgICAgICAgICAgICB1cmw6IHVybF9mb3IoJ2hl bHAuc3RhdGljJywgewotICAgICAgICAgICAgICAgICAgICAgICdmaWxlbmFtZSc6ICdyZXN0b3Jl X2RpYWxvZy5odG1sJywKLSAgICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAg ICB9LAotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6IGdldHRl eHQoJ1Jlc3RvcmUnKSwKLSAgICAgICAgICAgICAgICAgIGtleTogMTMsCi0gICAgICAgICAgICAg ICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXByaW1hcnkgZmEgZmEtdXBsb2FkIHBnLWFsZXJ0aWZ5 LWJ1dHRvbicsCi0gICAgICAgICAgICAgICAgICByZXN0b3JlOiB0cnVlLAotICAgICAgICAgICAg ICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAncmVzdG9yZScsCi0gICAgICAgICAgICAgICAgfSwgewot ICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCi0gICAgICAgICAgICAg ICAgICBrZXk6IDI3LAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kYW5n ZXIgZmEgZmEtbGcgZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAg ICAgIHJlc3RvcmU6IGZhbHNlLAotICAgICAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAn Y2FuY2VsJywKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAvLyBTZXQgb3B0 aW9ucyBmb3IgZGlhbG9nCi0gICAgICAgICAgICAgICAgb3B0aW9uczogewotICAgICAgICAgICAg ICAgICAgdGl0bGU6IHRpdGxlLAotICAgICAgICAgICAgICAgICAgLy9kaXNhYmxlIGJvdGggcGFk ZGluZyBhbmQgb3ZlcmZsb3cgY29udHJvbC4KLSAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEx LAotICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICExLAotICAgICAgICAgICAgICAgICAgbW9k ZWw6IDAsCi0gICAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsCi0gICAgICAgICAgICAg ICAgICBtYXhpbWl6YWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgIHBpbm5hYmxlOiBmYWxz ZSwKLSAgICAgICAgICAgICAgICAgIGNsb3NhYmxlQnlEaW1tZXI6IGZhbHNlLAotICAgICAgICAg ICAgICAgICAgbW9kYWw6IGZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg IH07Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgaG9va3M6IHsKLSAgICAgICAgICAgICAg Ly8gdHJpZ2dlcmVkIHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWQKLSAgICAgICAgICAgICAgb25j bG9zZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlldykgewotICAg ICAgICAgICAgICAgICAgdGhpcy52aWV3LnJlbW92ZSh7Ci0gICAgICAgICAgICAgICAgICAgIGRh dGE6IHRydWUsCi0gICAgICAgICAgICAgICAgICAgIGludGVybmFsOiB0cnVlLAotICAgICAgICAg ICAgICAgICAgICBzaWxlbnQ6IHRydWUsCi0gICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAg c2V0dGluZ3M6IHsKLSAgICAgICAgICAgICAgcGdfbm9kZTogbnVsbCwKLSAgICAgICAgICAgICAg cGdfaXRlbTogbnVsbCwKLSAgICAgICAgICAgICAgcGdfaXRlbV9kYXRhOiBudWxsLAotICAgICAg ICAgICAgfSwKLSAgICAgICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uKCkgewotCi0gICAgICAgICAg ICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgICAgICAgLy8gRGlzYWJsZSBCYWNrdXAgYnV0 dG9uIHVudGlsIHVzZXIgcHJvdmlkZXMgRmlsZW5hbWUKLSAgICAgICAgICAgICAgdGhpcy5fX2lu dGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAg IHZhciAkY29udGFpbmVyID0gJCgnPGRpdiBjbGFzcz1cJ3Jlc3RvcmVfZGlhbG9nXCc+PC9kaXY+ Jyk7Ci0gICAgICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgICAg ICAgaSA9IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9 PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICBub2RlID0g ZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07Ci0KLSAgICAgICAgICAgICAgaWYgKCFkKQot ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBu b2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7Ci0KLSAgICAgICAgICAg ICAgdmFyIG5ld01vZGVsID0gbmV3IFJlc3RvcmVPYmplY3RNb2RlbCh7Ci0gICAgICAgICAgICAg ICAgICBub2RlX2RhdGE6IG5vZGUsCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAg ICAgICAgbm9kZV9pbmZvOiB0cmVlSW5mbywKLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAg ICAgICAgICBmaWVsZHMgPSBCYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEoCi0gICAgICAgICAg ICAgICAgICB0cmVlSW5mbywgbmV3TW9kZWwsICdjcmVhdGUnLCBub2RlLCB0cmVlSW5mby5zZXJ2 ZXIsIHRydWUKLSAgICAgICAgICAgICAgICApOwotCi0gICAgICAgICAgICAgIHZhciB2aWV3ID0g dGhpcy52aWV3ID0gbmV3IEJhY2tmb3JtLkRpYWxvZyh7Ci0gICAgICAgICAgICAgICAgZWw6ICRj b250YWluZXIsCi0gICAgICAgICAgICAgICAgbW9kZWw6IG5ld01vZGVsLAotICAgICAgICAgICAg ICAgIHNjaGVtYTogZmllbGRzLAotICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAk KHRoaXMuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKS5hZGRDbGFzcygKLSAgICAgICAgICAg ICAgICAnYWxlcnRpZnlfdG9vbHNfZGlhbG9nX3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnCi0g ICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgdmlldy5yZW5kZXIoKTsKLQotICAgICAg ICAgICAgICB0aGlzLmVsZW1lbnRzLmNvbnRlbnQuYXBwZW5kQ2hpbGQoJGNvbnRhaW5lci5nZXQo MCkpOwotCi0gICAgICAgICAgICAgIHZpZXcuJGVsLmF0dHIoJ3RhYmluZGV4JywgLTEpOwotICAg ICAgICAgICAgICAvLyB2YXIgZGlhbG9nVGFiTmF2aWdhdG9yID0gcGdCcm93c2VyLmtleWJvYXJk TmF2aWdhdGlvbi5nZXREaWFsb2dUYWJOYXZpZ2F0b3Iodmlldyk7Ci0gICAgICAgICAgICAgIHBn QnJvd3Nlci5rZXlib2FyZE5hdmlnYXRpb24uZ2V0RGlhbG9nVGFiTmF2aWdhdG9yKHZpZXcpOwot ICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gdmlldy4kZWwuZmluZCgnLnRhYi1jb250ZW50 OmZpcnN0ID4gLnRhYi1wYW5lLmFjdGl2ZTpmaXJzdCcpOwotICAgICAgICAgICAgICBjb21tb25V dGlscy5maW5kQW5kU2V0Rm9jdXMoY29udGFpbmVyKTsKLQotICAgICAgICAgICAgICAvLyBMaXN0 ZW4gdG8gbW9kZWwgJiBpZiBmaWxlbmFtZSBpcyBwcm92aWRlZCB0aGVuIGVuYWJsZSBCYWNrdXAg YnV0dG9uCi0gICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5vbignY2hhbmdlJywgZnVuY3Rp b24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdmaWxl JykpICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09ICcnKSB7Ci0gICAgICAgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICAgIHNlbGYuX19pbnRlcm5hbC5i dXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVu dC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0 KCdmaWxlJywgZ2V0dGV4dCgnUGxlYXNlIHByb3ZpZGUgZmlsZW5hbWUnKSk7Ci0gICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg IC8vIENhbGxiYWNrIGZ1bmN0aW9ucyB3aGVuIGNsaWNrIG9uIHRoZSBidXR0b25zIG9mIHRoZSBB bGVydGlmeSBkaWFsb2dzCi0gICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oZSkgewotICAg ICAgICAgICAgICAvLyBGZXRjaCBjdXJyZW50IHNlcnZlciBpZAotICAgICAgICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAgICAgICAgIGkgPSB0aGlzLnNldHRpbmdzWydw Z19pdGVtJ10gfHwgdC5zZWxlY3RlZCgpLAotICAgICAgICAgICAgICAgIGQgPSB0aGlzLnNldHRp bmdzWydwZ19pdGVtX2RhdGEnXSB8fCAoCi0gICAgICAgICAgICAgICAgICBpICYmIGkubGVuZ3Ro ID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkCi0gICAgICAgICAgICAgICAgKSwKLSAg ICAgICAgICAgICAgICBub2RlID0gdGhpcy5zZXR0aW5nc1sncGdfbm9kZSddIHx8ICgKLSAgICAg ICAgICAgICAgICAgIGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdCi0gICAgICAgICAgICAg ICAgKTsKLQotICAgICAgICAgICAgICBpZiAoZS5idXR0b24uZWxlbWVudC5uYW1lID09ICdkaWFs b2dfaGVscCcgfHwgZS5idXR0b24uZWxlbWVudC5uYW1lID09ICdvYmplY3RfaGVscCcpIHsKLSAg ICAgICAgICAgICAgICBlLmNhbmNlbCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcGdCcm93c2Vy LnNob3dIZWxwKGUuYnV0dG9uLmVsZW1lbnQubmFtZSwgZS5idXR0b24uZWxlbWVudC5nZXRBdHRy aWJ1dGUoJ3VybCcpLAotICAgICAgICAgICAgICAgICAgbm9kZSwgaSwgZS5idXR0b24uZWxlbWVu dC5nZXRBdHRyaWJ1dGUoJ2xhYmVsJykpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg ICAgICAgICAgfQotCi0gICAgICAgICAgICAgIGlmIChlLmJ1dHRvblsnZGF0YS1idG4tbmFtZSdd ID09PSAncmVzdG9yZScpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWQpCi0gICAgICAgICAgICAg ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IG5vZGUuZ2V0VHJlZU5v ZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKSwKLSAgICAgICAgICAgICAgICAgIG0gPSB0aGlz LnZpZXcubW9kZWw7Ci0gICAgICAgICAgICAgICAgLy8gU2V0IGN1cnJlbnQgbm9kZSBpbmZvIGlu dG8gbW9kZWwKLSAgICAgICAgICAgICAgICBtLnNldCgnZGF0YWJhc2UnLCBpbmZvLmRhdGFiYXNl Ll9sYWJlbCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtLmdldCgnY3VzdG9tJykpIHsKLSAgICAg ICAgICAgICAgICAgIHN3aXRjaCAoZC5fdHlwZSkgewotICAgICAgICAgICAgICAgICAgY2FzZSAn c2NoZW1hJzoKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3NjaGVtYXMnLCBbZC5fbGFiZWxd KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlICd0 YWJsZSc6Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hlbWFzJywgW2luZm8uc2NoZW1h Ll9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBtLnNldCgndGFibGVzJywgW2QuX2xhYmVs XSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSAn ZnVuY3Rpb24nOgotICAgICAgICAgICAgICAgICAgICBtLnNldCgnc2NoZW1hcycsIFtpbmZvLnNj aGVtYS5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ2Z1bmN0aW9ucycsIFtk Ll9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg IGNhc2UgJ2luZGV4JzoKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3NjaGVtYXMnLCBbaW5m by5zY2hlbWEuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdpbmRleGVzJywg W2QuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg ICAgY2FzZSAndHJpZ2dlcic6Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hlbWFzJywg W2luZm8uc2NoZW1hLl9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBtLnNldCgndHJpZ2dl cnMnLCBbZC5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg ICAgICAgICBjYXNlICd0cmlnZ2VyX2Z1bmMnOgotICAgICAgICAgICAgICAgICAgICBtLnNldCgn c2NoZW1hcycsIFtpbmZvLnNjaGVtYS5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgbS5z ZXQoJ3RyaWdnZXJfZnVuY3MnLCBbZC5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl YWs7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICAgICAgIC8vIFRPRE86OgotICAgICAgICAgICAgICAgICAgLy8gV2hlbiB3ZSB3aWxs IGltcGxlbWVudCB0aGUgb2JqZWN0IHNlbGVjdGlvbiBpbiB0aGUKLSAgICAgICAgICAgICAgICAg IC8vIGltcG9ydCBkaWFsb2csIHdlIHdpbGwgbmVlZCB0byBzZWxlY3QgdGhlIG9iamVjdHMgZnJv bQotICAgICAgICAgICAgICAgICAgLy8gdGhlIHRyZWUgc2VsZWN0aW9uIHRhYi4KLSAgICAgICAg ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAg ICAgICAgICBiYXNlVXJsID0gdXJsX2ZvcigncmVzdG9yZS5jcmVhdGVfam9iJywgewotICAgICAg ICAgICAgICAgICAgICAnc2lkJzogaW5mby5zZXJ2ZXIuX2lkLAotICAgICAgICAgICAgICAgICAg fSksCi0gICAgICAgICAgICAgICAgICBhcmdzID0gdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpOwot Ci0gICAgICAgICAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICAgICAgICAgIHVybDogYmFzZVVy bCwKLSAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgICAgICAgICAg ZGF0YTogewotICAgICAgICAgICAgICAgICAgICAnZGF0YSc6IEpTT04uc3RyaW5naWZ5KGFyZ3Mp LAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0 aW9uKHJlcykgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHsKLSAgICAg ICAgICAgICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNzKAotICAgICAgICAgICAgICAgICAgICAg ICAgZ2V0dGV4dCgnUmVzdG9yZSBqb2IgY3JlYXRlZC4nKSwgNQotICAgICAgICAgICAgICAgICAg ICAgICk7Ci0gICAgICAgICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdw Z2FkbWluLWJncHJvY2VzczpjcmVhdGVkJywgc2VsZik7Ci0gICAgICAgICAgICAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKHJlcyk7Ci0gICAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBl cnJvcjogZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAg ICAgICAgICAgICAgICAgdmFyIGVyciA9ICQucGFyc2VKU09OKHhoci5yZXNwb25zZVRleHQpOwot ICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAgICAgICAgICAgICAgICAg ICAgICAgZ2V0dGV4dCgnUmVzdG9yZSBmYWlsZWQuJyksCi0gICAgICAgICAgICAgICAgICAgICAg ICBlcnIuZXJyb3Jtc2cKLSAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAg ICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGUu c3RhY2sgfHwgZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0s Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0g ICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0KLSAgICAgIGFsZXJ0aWZ5LnBnX3Jl c3RvcmUodGl0bGUsIGl0ZW0sIGRhdGEsIG5vZGUpLnJlc2l6ZVRvKCc2NSUnLCAnNjAlJyk7Cisg ICAgICBsZXQgZGlhbG9nID0gbmV3IHJlc3RvcmVEaWFsb2cuUmVzdG9yZURpYWxvZyhwZ0Jyb3dz ZXIsICQsIGFsZXJ0aWZ5LCBSZXN0b3JlT2JqZWN0TW9kZWwpOworICAgICAgZGlhbG9nLmRyYXco YWN0aW9uLCB0cmVlSXRlbSk7CiAgICAgfSwKICAgfTsKICAgcmV0dXJuIHBnQnJvd3Nlci5SZXN0 b3JlOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVz dG9yZV9kaWFsb2cuanMgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0 b3JlX2RpYWxvZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNDg4NGQ5 MDEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9q cy9yZXN0b3JlX2RpYWxvZy5qcwpAQCAtMCwwICsxLDU3IEBACisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFz ZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBnZXR0 ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsKK2ltcG9ydCB7c3ByaW50 Zn0gZnJvbSAnc3ByaW50Zi1qcyc7CitpbXBvcnQgQmFja2Zvcm0gZnJvbSAnLi4vLi4vLi4vLi4v c3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4nOworaW1wb3J0IHtEaWFsb2d9IGZyb20gJy4uLy4u Ly4uLy4uL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2cnOworCitleHBvcnQgY2xhc3MgUmVzdG9y ZURpYWxvZyBleHRlbmRzIERpYWxvZyB7CisgIGNvbnN0cnVjdG9yKHBnQnJvd3NlciwgJCwgYWxl cnRpZnksIFJlc3RvcmVNb2RlbCwgYmFja2Zvcm0gPSBCYWNrZm9ybSkgeworICAgIHN1cGVyKCdS ZXN0b3JlIEVycm9yJywKKyAgICAgICc8ZGl2IGNsYXNzPVwncmVzdG9yZV9kaWFsb2dcJz48L2Rp dj4nLAorICAgICAgcGdCcm93c2VyLCAkLCBhbGVydGlmeSwgUmVzdG9yZU1vZGVsLCBiYWNrZm9y bSk7CisgIH0KKworICBkcmF3KGFjdGlvbiwgYWNpVHJlZUl0ZW0pIHsKKworICAgIGNvbnN0IHNl cnZlckluZm9ybWF0aW9uID0gdGhpcy5yZXRyaWV2ZUFuY2VzdG9yT2ZUeXBlU2VydmVyKGFjaVRy ZWVJdGVtKTsKKworICAgIGlmICghc2VydmVySW5mb3JtYXRpb24pIHsKKyAgICAgIHJldHVybjsK KyAgICB9CisKKyAgICBpZiAoIXRoaXMuaGFzQmluYXJpZXNDb25maWd1cmF0aW9uKHNlcnZlcklu Zm9ybWF0aW9uKSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdGhpcy5jYW5F eGVjdXRlT25DdXJyZW50RGF0YWJhc2UoYWNpVHJlZUl0ZW0pKSB7CisgICAgICByZXR1cm47Cisg ICAgfQorCisgICAgbGV0IGFjaVRyZWVJdGVtMSA9IGFjaVRyZWVJdGVtIHx8IHRoaXMucGdCcm93 c2VyLnRyZWVNZW51LnNlbGVjdGVkKCk7CisgICAgbGV0IGl0ZW0gPSB0aGlzLnBnQnJvd3Nlci50 cmVlTWVudS5maW5kTm9kZUJ5RG9tRWxlbWVudChhY2lUcmVlSXRlbTEpOworICAgIGNvbnN0IGRh dGEgPSBpdGVtLmdldERhdGEoKTsKKyAgICBjb25zdCBub2RlID0gdGhpcy5wZ0Jyb3dzZXIuTm9k ZXNbZGF0YS5fdHlwZV07CisKKyAgICBpZiAoIW5vZGUpCisgICAgICByZXR1cm47CisKKyAgICBs ZXQgdGl0bGUgPSBzcHJpbnRmKGdldHRleHQoJ1Jlc3RvcmUgKCVzOiAlcyknKSwgbm9kZS5sYWJl bCwgZGF0YS5sYWJlbCk7CisKKyAgICB0aGlzLmNyZWF0ZU9yR2V0RGlhbG9nKHRpdGxlLCAncmVz dG9yZScpOworCisgICAgdGhpcy5hbGVydGlmeS5wZ19yZXN0b3JlKHRpdGxlLCBhY2lUcmVlSXRl bTEsIGRhdGEsIG5vZGUpLnJlc2l6ZVRvKCc2NSUnLCAnNjAlJyk7CisgIH0KKworICBkaWFsb2dO YW1lKCkgeworICAgIHJldHVybiAncGdfcmVzdG9yZSc7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2dfd3JhcHBl ci5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9n X3dyYXBwZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjg0NWRhN2Ez Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMv cmVzdG9yZV9kaWFsb2dfd3JhcHBlci5qcwpAQCAtMCwwICsxLDI1NSBAQAoraW1wb3J0IHtnZXRU cmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50fSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMv dHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MvaW5kZXgn OworaW1wb3J0IF8gZnJvbSAndW5kZXJzY29yZSc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICcuLi8u Li8uLi8uLi9zdGF0aWMvanMvZ2V0dGV4dCc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICcuLi8uLi8u Li8uLi9zdGF0aWMvanMvdXJsX2Zvcic7CitpbXBvcnQge0RpYWxvZ1dyYXBwZXJ9IGZyb20gJy4u Ly4uLy4uLy4uL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfd3JhcHBlcic7CisKK2V4cG9ydCBj bGFzcyBSZXN0b3JlRGlhbG9nV3JhcHBlciBleHRlbmRzIERpYWxvZ1dyYXBwZXIgeworICBjb25z dHJ1Y3RvcihkaWFsb2dDb250YWluZXJTZWxlY3RvciwgZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxv ZywKKyAgICAgICAgICAgICAganF1ZXJ5LCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCBkaWFsb2dNb2Rl bCwgYmFja2Zvcm0pIHsKKyAgICBzdXBlcihkaWFsb2dDb250YWluZXJTZWxlY3RvciwgZGlhbG9n VGl0bGUsIGpxdWVyeSwKKyAgICAgIHBnQnJvd3NlciwgYWxlcnRpZnksIGRpYWxvZ01vZGVsLCBi YWNrZm9ybSk7CisgIH0KKworICBtYWluKHRpdGxlLCBpdGVtLCBkYXRhLCBub2RlKSB7CisgICAg dGhpcy5zZXQoJ3RpdGxlJywgdGl0bGUpOworICAgIHRoaXMuc2V0dGluZygncGdfbm9kZScsIG5v ZGUpOworICAgIHRoaXMuc2V0dGluZygncGdfaXRlbScsIGl0ZW0pOworICAgIHRoaXMuc2V0dGlu ZygncGdfaXRlbV9kYXRhJywgZGF0YSk7CisgIH0KKworICBzZXR1cCgpIHsKKyAgICByZXR1cm4g eworICAgICAgYnV0dG9uczogW3sKKyAgICAgICAgdGV4dDogJycsCisgICAgICAgIGNsYXNzTmFt ZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtaW5mbycsCisgICAgICAg IGF0dHJzOiB7CisgICAgICAgICAgbmFtZTogJ29iamVjdF9oZWxwJywKKyAgICAgICAgICB0eXBl OiAnYnV0dG9uJywKKyAgICAgICAgICB1cmw6ICdiYWNrdXAuaHRtbCcsCisgICAgICAgICAgbGFi ZWw6IGdldHRleHQoJ1Jlc3RvcmUnKSwKKyAgICAgICAgfSwKKyAgICAgIH0sIHsKKyAgICAgICAg dGV4dDogJycsCisgICAgICAgIGtleTogMTEyLAorICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRu LWRlZmF1bHQgcHVsbC1sZWZ0IGZhIGZhLWxnIGZhLXF1ZXN0aW9uJywKKyAgICAgICAgYXR0cnM6 IHsKKyAgICAgICAgICBuYW1lOiAnZGlhbG9nX2hlbHAnLAorICAgICAgICAgIHR5cGU6ICdidXR0 b24nLAorICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdSZXN0b3JlJyksCisgICAgICAgICAgdXJs OiB1cmxfZm9yKCdoZWxwLnN0YXRpYycsIHsKKyAgICAgICAgICAgICdmaWxlbmFtZSc6ICdyZXN0 b3JlX2RpYWxvZy5odG1sJywKKyAgICAgICAgICB9KSwKKyAgICAgICAgfSwKKyAgICAgIH0sIHsK KyAgICAgICAgdGV4dDogZ2V0dGV4dCgnUmVzdG9yZScpLAorICAgICAgICBrZXk6IDEzLAorICAg ICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXByaW1hcnkgZmEgZmEtdXBsb2FkIHBnLWFsZXJ0aWZ5 LWJ1dHRvbicsCisgICAgICAgIHJlc3RvcmU6IHRydWUsCisgICAgICAgICdkYXRhLWJ0bi1uYW1l JzogJ3Jlc3RvcmUnLAorICAgICAgfSwgeworICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdDYW5jZWwn KSwKKyAgICAgICAga2V5OiAyNywKKyAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kYW5nZXIg ZmEgZmEtbGcgZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywKKyAgICAgICAgcmVzdG9yZTog ZmFsc2UsCisgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2NhbmNlbCcsCisgICAgICB9XSwKKyAg ICAgIC8vIFNldCBvcHRpb25zIGZvciBkaWFsb2cKKyAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAg dGl0bGU6IHRoaXMuZGlhbG9nVGl0bGUsCisgICAgICAgIC8vZGlzYWJsZSBib3RoIHBhZGRpbmcg YW5kIG92ZXJmbG93IGNvbnRyb2wuCisgICAgICAgIHBhZGRpbmc6ICExLAorICAgICAgICBvdmVy ZmxvdzogITEsCisgICAgICAgIG1vZGVsOiAwLAorICAgICAgICByZXNpemFibGU6IHRydWUsCisg ICAgICAgIG1heGltaXphYmxlOiB0cnVlLAorICAgICAgICBwaW5uYWJsZTogZmFsc2UsCisgICAg ICAgIGNsb3NhYmxlQnlEaW1tZXI6IGZhbHNlLAorICAgICAgICBtb2RhbDogZmFsc2UsCisgICAg ICB9LAorICAgIH07CisgIH0KKworICBwcmVwYXJlKCkgeworICAgIHRoaXMuZGlzYWJsZVJlc3Rv cmVCdXR0b24oKTsKKworICAgIGNvbnN0ICRjb250YWluZXIgPSB0aGlzLmpxdWVyeSh0aGlzLmRp YWxvZ0NvbnRhaW5lclNlbGVjdG9yKTsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlID0gdGhp cy5nZXRTZWxlY3RlZE5vZGUoKTsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlRGF0YSA9IHRo aXMuZ2V0U2VsZWN0ZWROb2RlRGF0YShzZWxlY3RlZFRyZWVOb2RlKTsKKyAgICBpZiAoIXNlbGVj dGVkVHJlZU5vZGVEYXRhKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgbm9k ZSA9IHRoaXMucGdCcm93c2VyLk5vZGVzW3NlbGVjdGVkVHJlZU5vZGVEYXRhLl90eXBlXTsKKwor ICAgIGNvbnN0IHRyZWVJbmZvID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudCh0aGlz LnBnQnJvd3Nlciwgc2VsZWN0ZWRUcmVlTm9kZSk7CisgICAgY29uc3QgZGlhbG9nID0gdGhpcy5j cmVhdGVEaWFsb2cobm9kZSwgdHJlZUluZm8sICRjb250YWluZXIpOworICAgIHRoaXMuYWRkQWxl cnRpZnlDbGFzc1RvUmVzdG9yZU5vZGVDaGlsZE5vZGVzKCk7CisgICAgZGlhbG9nLnJlbmRlcigp OworCisgICAgdGhpcy5lbGVtZW50cy5jb250ZW50LmFwcGVuZENoaWxkKCRjb250YWluZXIuZ2V0 KDApKTsKKworICAgIHRoaXMuZm9jdXNPbkRpYWxvZyhkaWFsb2cpOworICAgIHRoaXMuc2V0TGlz dGVuZXJzRm9yRmlsZW5hbWVDaGFuZ2VzKCk7CisgIH0KKworICBjYWxsYmFjayhldmVudCkgewor ICAgIGNvbnN0IHNlbGVjdGVkVHJlZU5vZGUgPSB0aGlzLmdldFNlbGVjdGVkTm9kZSgpOworICAg IGNvbnN0IHNlbGVjdGVkVHJlZU5vZGVEYXRhID0gdGhpcy5nZXRTZWxlY3RlZE5vZGVEYXRhKHNl bGVjdGVkVHJlZU5vZGUpOworICAgIGNvbnN0IG5vZGUgPSBzZWxlY3RlZFRyZWVOb2RlRGF0YSAm JiB0aGlzLnBnQnJvd3Nlci5Ob2Rlc1tzZWxlY3RlZFRyZWVOb2RlRGF0YS5fdHlwZV07CisKKyAg ICBpZiAodGhpcy53YXNIZWxwQnV0dG9uUHJlc3NlZChldmVudCkpIHsKKyAgICAgIGV2ZW50LmNh bmNlbCA9IHRydWU7CisgICAgICB0aGlzLnBnQnJvd3Nlci5zaG93SGVscCgKKyAgICAgICAgZXZl bnQuYnV0dG9uLmVsZW1lbnQubmFtZSwKKyAgICAgICAgZXZlbnQuYnV0dG9uLmVsZW1lbnQuZ2V0 QXR0cmlidXRlKCd1cmwnKSwKKyAgICAgICAgbm9kZSwKKyAgICAgICAgc2VsZWN0ZWRUcmVlTm9k ZSwKKyAgICAgICAgZXZlbnQuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYWJlbCcpCisg ICAgICApOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh0aGlzLndhc1Jlc3RvcmVC dXR0b25QcmVzc2VkKGV2ZW50KSkgeworCisgICAgICBpZiAoIXNlbGVjdGVkVHJlZU5vZGVEYXRh KQorICAgICAgICByZXR1cm47CisKKyAgICAgIGNvbnN0IHNlcnZlcklkZW50aWZpZXIgPSB0aGlz LnJldHJpZXZlU2VydmVySWRlbnRpZmllcihub2RlLCBzZWxlY3RlZFRyZWVOb2RlKTsKKworICAg ICAgY29uc3QgZGlhbG9nV3JhcHBlciA9IHRoaXM7CisgICAgICBsZXQgdXJsU2hvcnRjdXQgPSAn cmVzdG9yZS5jcmVhdGVfam9iJzsKKworICAgICAgY29uc3QgYmFzZVVybCA9IHVybF9mb3IodXJs U2hvcnRjdXQsIHsKKyAgICAgICAgJ3NpZCc6IHNlcnZlcklkZW50aWZpZXIsCisgICAgICB9KTsK KworICAgICAgY29uc3QgdHJlZUluZm8gPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50 KAorICAgICAgICB0aGlzLnBnQnJvd3NlciwKKyAgICAgICAgc2VsZWN0ZWRUcmVlTm9kZQorICAg ICAgKTsKKworICAgICAgdGhpcy5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWRUcmVlTm9kZSwg dHJlZUluZm8pOworCisgICAgICBsZXQgc2VydmljZSA9IGF4aW9zLmNyZWF0ZSh7fSk7CisgICAg ICBzZXJ2aWNlLnBvc3QoCisgICAgICAgIGJhc2VVcmwsCisgICAgICAgIHRoaXMudmlldy5tb2Rl bC50b0pTT04oKQorICAgICAgKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZGlhbG9nV3Jh cHBlci5hbGVydGlmeS5zdWNjZXNzKGdldHRleHQoJ1Jlc3RvcmUgam9iIGNyZWF0ZWQuJyksIDUp OworICAgICAgICBkaWFsb2dXcmFwcGVyLnBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigncGdhZG1p bi1iZ3Byb2Nlc3M6Y3JlYXRlZCcsIGRpYWxvZ1dyYXBwZXIpOworICAgICAgfSkuY2F0Y2goZnVu Y3Rpb24gKGVycm9yKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgY29uc3QgZXJyID0gZXJy b3IucmVzcG9uc2UuZGF0YTsKKyAgICAgICAgICBkaWFsb2dXcmFwcGVyLmFsZXJ0aWZ5LmFsZXJ0 KAorICAgICAgICAgICAgZ2V0dGV4dCgnUmVzdG9yZSBqb2IgZmFpbGVkLicpLAorICAgICAgICAg ICAgZXJyLmVycm9ybXNnCisgICAgICAgICAgKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAg ICAgICAgIGNvbnNvbGUud2FybihlLnN0YWNrIHx8IGUpOworICAgICAgICB9CisgICAgICB9KTsK KyAgICB9CisgIH0KKworICBhZGRBbGVydGlmeUNsYXNzVG9SZXN0b3JlTm9kZUNoaWxkTm9kZXMo KSB7CisgICAgdGhpcy5qcXVlcnkodGhpcy5lbGVtZW50cy5ib2R5LmNoaWxkTm9kZXNbMF0pLmFk ZENsYXNzKAorICAgICAgJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19wcm9wZXJ0aWVzIG9ial9wcm9w ZXJ0aWVzJworICAgICk7CisgIH0KKworICBnZXRTZWxlY3RlZE5vZGUoKSB7CisgICAgY29uc3Qg dHJlZSA9IHRoaXMucGdCcm93c2VyLnRyZWVNZW51OworICAgIGNvbnN0IHNlbGVjdGVkTm9kZSA9 IHRyZWUuc2VsZWN0ZWQoKTsKKyAgICBpZiAoc2VsZWN0ZWROb2RlKSB7CisgICAgICByZXR1cm4g dHJlZS5maW5kTm9kZUJ5RG9tRWxlbWVudChzZWxlY3RlZE5vZGUpOworICAgIH0gZWxzZSB7Cisg ICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0KKyAgfQorCisgIGRpc2FibGVSZXN0b3JlQnV0 dG9uKCkgeworICAgIHRoaXMuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQg PSB0cnVlOworICB9CisKKyAgZW5hYmxlUmVzdG9yZUJ1dHRvbigpIHsKKyAgICB0aGlzLl9faW50 ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CisgIH0KKworICBjcmVh dGVEaWFsb2cobm9kZSwgdHJlZUluZm8sICRjb250YWluZXIpIHsKKyAgICBjb25zdCBuZXdNb2Rl bCA9IG5ldyB0aGlzLmRpYWxvZ01vZGVsKHsKKyAgICAgIG5vZGVfZGF0YTogbm9kZSwKKyAgICB9 LCB7CisgICAgICBub2RlX2luZm86IHRyZWVJbmZvLAorICAgIH0pOworICAgIGNvbnN0IGZpZWxk cyA9IHRoaXMuYmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1hKAorICAgICAgdHJlZUluZm8sIG5l d01vZGVsLCAnY3JlYXRlJywgbm9kZSwgdHJlZUluZm8uc2VydmVyLCB0cnVlCisgICAgKTsKKwor ICAgIHJldHVybiB0aGlzLnZpZXcgPSBuZXcgdGhpcy5iYWNrZm9ybS5EaWFsb2coeworICAgICAg ZWw6ICRjb250YWluZXIsCisgICAgICBtb2RlbDogbmV3TW9kZWwsCisgICAgICBzY2hlbWE6IGZp ZWxkcywKKyAgICB9KTsKKyAgfQorCisgIHJldHJpZXZlU2VydmVySWRlbnRpZmllcihub2RlLCBz ZWxlY3RlZFRyZWVOb2RlKSB7CisgICAgY29uc3QgdHJlZUluZm8gPSBnZXRUcmVlTm9kZUhpZXJh cmNoeUZyb21FbGVtZW50KAorICAgICAgdGhpcy5wZ0Jyb3dzZXIsCisgICAgICBzZWxlY3RlZFRy ZWVOb2RlCisgICAgKTsKKyAgICByZXR1cm4gdHJlZUluZm8uc2VydmVyLl9pZDsKKyAgfQorCisg IHNldExpc3RlbmVyc0ZvckZpbGVuYW1lQ2hhbmdlcygpIHsKKyAgICBjb25zdCBzZWxmID0gdGhp czsKKworICAgIHRoaXMudmlldy5tb2RlbC5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgeworICAg ICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdmaWxlJykpICYmIHRoaXMuZ2V0KCdmaWxl JykgIT09ICcnKSB7CisgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOworICAgICAgICBz ZWxmLmVuYWJsZVJlc3RvcmVCdXR0b24oKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYu ZGlzYWJsZVJlc3RvcmVCdXR0b24oKTsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZmls ZScsIGdldHRleHQoJ1BsZWFzZSBwcm92aWRlIGEgZmlsZW5hbWUnKSk7CisgICAgICB9CisgICAg fSk7CisgIH0KKworICBzZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWRUcmVlTm9kZSwgdHJlZUlu Zm8pIHsKKyAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdkYXRhYmFzZScsIHRyZWVJbmZvLmRhdGFi YXNlLl9sYWJlbCk7CisgICAgaWYgKCF0aGlzLnZpZXcubW9kZWwuZ2V0KCdjdXN0b20nKSkgewor ICAgICAgY29uc3Qgbm9kZURhdGEgPSBzZWxlY3RlZFRyZWVOb2RlLmdldERhdGEoKTsKKworICAg ICAgc3dpdGNoIChub2RlRGF0YS5fdHlwZSkgeworICAgICAgY2FzZSAnc2NoZW1hJzoKKyAgICAg ICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnc2NoZW1hcycsIFtub2RlRGF0YS5fbGFiZWxdKTsKKyAg ICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0YWJsZSc6CisgICAgICAgIHRoaXMudmlldy5tb2Rl bC5zZXQoJ3NjaGVtYXMnLCBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbF0pOworICAgICAgICB0aGlz LnZpZXcubW9kZWwuc2V0KCd0YWJsZXMnLCBbbm9kZURhdGEuX2xhYmVsXSk7CisgICAgICAgIGJy ZWFrOworICAgICAgY2FzZSAnZnVuY3Rpb24nOgorICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0 KCdzY2hlbWFzJywgW3RyZWVJbmZvLnNjaGVtYS5fbGFiZWxdKTsKKyAgICAgICAgdGhpcy52aWV3 Lm1vZGVsLnNldCgnZnVuY3Rpb25zJywgW25vZGVEYXRhLl9sYWJlbF0pOworICAgICAgICBicmVh azsKKyAgICAgIGNhc2UgJ2luZGV4JzoKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnc2No ZW1hcycsIFt0cmVlSW5mby5zY2hlbWEuX2xhYmVsXSk7CisgICAgICAgIHRoaXMudmlldy5tb2Rl bC5zZXQoJ2luZGV4ZXMnLCBbbm9kZURhdGEuX2xhYmVsXSk7CisgICAgICAgIGJyZWFrOworICAg ICAgY2FzZSAndHJpZ2dlcic6CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3NjaGVtYXMn LCBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbF0pOworICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0 KCd0cmlnZ2VycycsIFtub2RlRGF0YS5fbGFiZWxdKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBj YXNlICd0cmlnZ2VyX2Z1bmMnOgorICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdzY2hlbWFz JywgW3RyZWVJbmZvLnNjaGVtYS5fbGFiZWxdKTsKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNl dCgndHJpZ2dlcl9mdW5jcycsIFtub2RlRGF0YS5fbGFiZWxdKTsKKyAgICAgICAgYnJlYWs7Cisg ICAgICB9CisgICAgfQorICB9CisKKyAgd2FzUmVzdG9yZUJ1dHRvblByZXNzZWQoZXZlbnQpIHsK KyAgICByZXR1cm4gZXZlbnQuYnV0dG9uWydkYXRhLWJ0bi1uYW1lJ10gPT09ICdyZXN0b3JlJzsK KyAgfQorfQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFj a3VwX2RpYWxvZ19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFj a3VwX2RpYWxvZ19zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4y NjU1MDU5ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFj a3VwL2JhY2t1cF9kaWFsb2dfc3BlYy5qcwpAQCAtMCwwICsxLDIwNSBAQAorLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8v IHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlz IHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0 IHtCYWNrdXBEaWFsb2d9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRp Yy9qcy9iYWNrdXBfZGlhbG9nJzsKK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJl ZV9mYWtlJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgnQmFja3Vw RGlhbG9nJywgKCkgPT4geworICBsZXQgYmFja3VwRGlhbG9nOworICBsZXQgcGdCcm93c2VyOwor ICBsZXQganF1ZXJ5U3B5OworICBsZXQgYWxlcnRpZnlTcHk7CisgIGxldCBiYWNrdXBNb2RlbFNw eTsKKworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBwZ0Jyb3dzZXIgPSB7CisgICAgICB0cmVl TWVudTogbmV3IFRyZWVGYWtlKCksCisgICAgICBOb2RlczogeworICAgICAgICBzZXJ2ZXI6IHsK KyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgICBsYWJlbDogJ3NlcnZlcicsCisgICAg ICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IGphc21pbmUuY3JlYXRlU3B5KCdzZXJ2ZXIuZ2V0 VHJlZU5vZGVIaWVyYXJjaHknKSwKKyAgICAgICAgfSwKKyAgICAgICAgZGF0YWJhc2U6IHsKKyAg ICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgICBsYWJlbDogJ2RhdGFiYXNlJywKKyAgICAg ICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogamFzbWluZS5jcmVhdGVTcHkoJ2RiLmdldFRyZWVO b2RlSGllcmFyY2h5JyksCisgICAgICAgIH0sCisgICAgICAgIHNjaGVtYTogeworICAgICAgICAg IGhhc0lkOiB0cnVlLAorICAgICAgICAgIGxhYmVsOiAnc2NoZW1hJywKKyAgICAgICAgICBnZXRU cmVlTm9kZUhpZXJhcmNoeTogamFzbWluZS5jcmVhdGVTcHkoJ2RiLmdldFRyZWVOb2RlSGllcmFy Y2h5JyksCisgICAgICAgIH0sCisgICAgICB9LAorICAgIH07CisgICAgcGdCcm93c2VyLk5vZGVz LnNlcnZlci5oYXNJZCA9IHRydWU7CisgICAgcGdCcm93c2VyLk5vZGVzLmRhdGFiYXNlLmhhc0lk ID0gdHJ1ZTsKKyAgICBqcXVlcnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnanF1ZXJ5U3B5Jyk7 CisgICAgYmFja3VwTW9kZWxTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnYmFja3VwTW9kZWxTcHkn KTsKKworICAgIGNvbnN0IGhpZXJhcmNoeSA9IHsKKyAgICAgIGNoaWxkcmVuOiBbCisgICAgICAg IHsKKyAgICAgICAgICBpZDogJ3Jvb3QnLAorICAgICAgICAgIGNoaWxkcmVuOiBbCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIGlkOiAnc2VydmVyVHJlZU5vZGUnLAorICAgICAgICAgICAg ICBkYXRhOiB7CisgICAgICAgICAgICAgICAgX2lkOiAxMCwKKyAgICAgICAgICAgICAgICBfdHlw ZTogJ3NlcnZlcicsCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIGNoaWxkcmVuOiBb CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgaWQ6ICdzb21lX2RhdGFiYXNl JywKKyAgICAgICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICAgICAgICAgICAgX3R5cGU6 ICdkYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgIF9pZDogMTEsCisgICAgICAgICAgICAg ICAgICAgIGxhYmVsOiAnc29tZV9kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgIF9sYWJl bDogJ3NvbWVfZGF0YWJhc2VfbGFiZWwnLAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgICBpZDogJ2RhdGFiYXNlX3dpdGhfZXF1YWxf aW5fbmFtZScsCisgICAgICAgICAgICAgICAgICBkYXRhOiB7CisgICAgICAgICAgICAgICAgICAg IF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NvbWVfZGF0 YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICBfbGFiZWw6ICc9c29tZV9kYXRhYmFzZV9sYWJl bCcsCisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICAgIF0sCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZDog J3BwYXNTZXJ2ZXInLAorICAgICAgICAgICAgICBkYXRhOiB7CisgICAgICAgICAgICAgICAgX3R5 cGU6ICdzZXJ2ZXInLAorICAgICAgICAgICAgICAgIHNlcnZlcl90eXBlOiAncHBhcycsCisgICAg ICAgICAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAgICAgICAgIHtpZDogJ3NvbWVOb2Rl VW5kZXJuZWF0aFBQQVNTZXJ2ZXInfSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgXSwK KyAgICB9OworCisgICAgcGdCcm93c2VyLnRyZWVNZW51ID0gVHJlZUZha2UuYnVpbGQoaGllcmFy Y2h5KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJyNkcmF3JywgKCkgPT4geworICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgYWxlcnRpZnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxl cnRpZnknLCBbJ2FsZXJ0JywgJ2RpYWxvZyddKTsKKyAgICAgIGFsZXJ0aWZ5U3B5WydiYWNrdXBf b2JqZWN0cyddID0gamFzbWluZS5jcmVhdGVTcHkoJ2JhY2t1cF9vYmplY3RzJyk7CisgICAgICBi YWNrdXBEaWFsb2cgPSBuZXcgQmFja3VwRGlhbG9nKAorICAgICAgICBwZ0Jyb3dzZXIsCisgICAg ICAgIGpxdWVyeVNweSwKKyAgICAgICAgYWxlcnRpZnlTcHksCisgICAgICAgIGJhY2t1cE1vZGVs U3B5CisgICAgICApOworCisgICAgICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UgPSBqYXNtaW5l LmNyZWF0ZVNweSgnZ2V0X3ByZWZlcmVuY2VzJyk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0 aGVyZSBhcmUgbm8gYW5jZXN0b3JzIG9mIHRoZSB0eXBlIHNlcnZlcicsICgpID0+IHsKKyAgICAg IGl0KCdkb2VzIG5vdCBjcmVhdGUgYSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgIHBnQnJvd3Nl ci50cmVlTWVudS5zZWxlY3ROb2RlKFt7aWQ6ICdyb290J31dKTsKKyAgICAgICAgYmFja3VwRGlh bG9nLmRyYXcobnVsbCwgbnVsbCwgbnVsbCk7CisgICAgICAgIGV4cGVjdChhbGVydGlmeVNweVsn YmFja3VwX29iamVjdHMnXSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCisg ICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoIGEgQmFja3VwIEVycm9yJywgKCkgPT4gewor ICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbe2lkOiAncm9vdCd9XSwgbnVsbCk7Cisg ICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisg ICAgICAgICAgJ0JhY2t1cCBFcnJvcicsCisgICAgICAgICAgJ1BsZWFzZSBzZWxlY3Qgc2VydmVy IG9yIGNoaWxkIG5vZGUgZnJvbSB0aGUgYnJvd3NlciB0cmVlLicKKyAgICAgICAgKTsKKyAgICAg IH0pOworICAgIH0pOworCisgICAgY29udGV4dCgndGhlcmUgaXMgYW4gYW5jZXN0b3Igb2YgdGhl IHR5cGUgc2VydmVyJywgKCkgPT4geworICAgICAgY29udGV4dCgnbm8gcHJlZmVyZW5jZSBjYW4g YmUgZm91bmQnLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAg IHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUodW5kZWZpbmVkKTsKKyAg ICAgICAgfSk7CisKKyAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXInLCAo KSA9PiB7CisgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQmFja3VwIEVycm9y IicsICgpID0+IHsKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdz b21lX2RhdGFiYXNlJ31dLCBudWxsKTsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5h bGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICdCYWNrdXAgRXJyb3In LAorICAgICAgICAgICAgICAnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSBwZ19iaW5fZGlyIG9m IG1vZHVsZSBwYXRocycKKyAgICAgICAgICAgICk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0p OworCisgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBub3QgYSBwcGFzIHNlcnZlcicsICgpID0+ IHsKKyAgICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJCYWNrdXAgRXJyb3IiJywg KCkgPT4geworICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ3BwYXNT ZXJ2ZXInfV0sIG51bGwpOworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50 b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgJ0JhY2t1cCBFcnJvcicsCisgICAg ICAgICAgICAgICdGYWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlIHBwYXNfYmluX2RpciBvZiBtb2R1 bGUgcGF0aHMnCisgICAgICAgICAgICApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg ICAgIH0pOworCisgICAgICBjb250ZXh0KCdwcmVmZXJlbmNlIGNhbiBiZSBmb3VuZCcsICgpID0+ IHsKKyAgICAgICAgY29udGV4dCgnYmluYXJ5IGZvbGRlciBpcyBub3QgY29uZmlndXJlZCcsICgp ID0+IHsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIHBnQnJvd3Nl ci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUoe30pOworICAgICAgICAgIH0pOworCisg ICAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7CisgICAg ICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJDb25maWd1cmF0aW9uIHJlcXVpcmVk IicsICgpID0+IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3tpZDog J3NlcnZlclRyZWVOb2RlJ31dLCBudWxsKTsKKyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5 U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAnQ29uZmln dXJhdGlvbiByZXF1aXJlZCcsCisgICAgICAgICAgICAgICAgJ1BsZWFzZSBjb25maWd1cmUgdGhl IFBvc3RncmVTUUwgQmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nCisgICAg ICAgICAgICAgICk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAg IGNvbnRleHQoJ3NlcnZlciBpcyBub3QgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAg ICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggIkNvbmZpZ3VyYXRpb24gcmVxdWlyZWQiJywg KCkgPT4geworICAgICAgICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbe2lkOiAncHBh c1NlcnZlcid9XSwgbnVsbCk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVy dCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICAgJ0NvbmZpZ3VyYXRpb24g cmVxdWlyZWQnLAorICAgICAgICAgICAgICAgICdQbGVhc2UgY29uZmlndXJlIHRoZSBFREIgQWR2 YW5jZWQgU2VydmVyIEJpbmFyeSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJworICAg ICAgICAgICAgICApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0p OworCisgICAgICAgIGNvbnRleHQoJ2JpbmFyeSBmb2xkZXIgaXMgY29uZmlndXJlZCcsICgpID0+ IHsKKyAgICAgICAgICBsZXQgYmFja3VwRGlhbG9nUmVzaXplVG9TcHk7CisgICAgICAgICAgYmVm b3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBiYWNrdXBEaWFsb2dSZXNpemVUb1NweSA9IGph c21pbmUuY3JlYXRlU3B5T2JqKCdiYWNrdXBEaWFsb2dSZXNpemVUb1NweScsIFsncmVzaXplVG8n XSk7CisgICAgICAgICAgICBhbGVydGlmeVNweVsnYmFja3VwX29iamVjdHMnXS5hbmQKKyAgICAg ICAgICAgICAgLnJldHVyblZhbHVlKGJhY2t1cERpYWxvZ1Jlc2l6ZVRvU3B5KTsKKyAgICAgICAg ICAgIHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUoe3ZhbHVlOiAnL3Nv bWUvcGF0aCd9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdkaXNwbGF5cyB0aGUg ZGlhbG9nJywgKCkgPT4geworICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3tp ZDogJ3NlcnZlclRyZWVOb2RlJ31dLCBudWxsKTsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlm eVNweVsnYmFja3VwX29iamVjdHMnXSkudG9IYXZlQmVlbkNhbGxlZFdpdGgodHJ1ZSk7CisgICAg ICAgICAgICBleHBlY3QoYmFja3VwRGlhbG9nUmVzaXplVG9TcHkucmVzaXplVG8pLnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKCc2MCUnLCAnNTAlJyk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBj b250ZXh0KCdkYXRhYmFzZSBsYWJlbCBjb250YWluICI9IicsICgpID0+IHsKKyAgICAgICAgICAg IGl0KCdzaG91bGQgY3JlYXRlIGFsZXJ0IGRpYWxvZyB3aXRoIGJhY2t1cCBlcnJvcicsICgpID0+ IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ2RhdGFiYXNl X3dpdGhfZXF1YWxfaW5fbmFtZSd9XSwgbnVsbCk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVy dGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ0JhY2t1cCBFcnJvcicsCisgICAg ICAgICAgICAgICAgJ0RhdGFiYXNlcyB3aXRoID0gc3ltYm9scyBpbiB0aGUgbmFtZSBjYW5ub3Qg YmUgYmFja2VkIHVwIG9yIHJlc3RvcmVkIHVzaW5nIHRoaXMgdXRpbGl0eS4nKTsKKyAgICAgICAg ICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOwor ICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAv YmFja3VwX2RpYWxvZ193cmFwcGVyX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3dyYXBwZXJfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uNTg3MDUzMTgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3dyYXBwZXJfc3BlYy5qcwpAQCAt MCwwICsxLDY3NSBAQAoraW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2Un OworaW1wb3J0IHtCYWNrdXBEaWFsb2dXcmFwcGVyfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rv b2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZ193cmFwcGVyJzsKK2ltcG9ydCBheGlv cyBmcm9tICdheGlvcy9pbmRleCc7CitpbXBvcnQgTW9ja0FkYXB0ZXIgZnJvbSAnYXhpb3MtbW9j ay1hZGFwdGVyJzsKK2ltcG9ydCB7RmFrZU1vZGVsfSBmcm9tICcuLi9mYWtlX21vZGVsJzsKK2lt cG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJl ZSc7CisKK2xldCBjb250ZXh0ID0gZGVzY3JpYmU7CisKK2Rlc2NyaWJlKCdCYWNrdXBEaWFsb2dX cmFwcGVyJywgKCkgPT4geworICBsZXQganF1ZXJ5U3B5OworICBsZXQgcGdCcm93c2VyOworICBs ZXQgYWxlcnRpZnlTcHk7CisgIGxldCBkaWFsb2dNb2RlbEtsYXNzU3B5OworICBsZXQgYmFja2Zv cm07CisgIGxldCBnZW5lcmF0ZWRCYWNrdXBNb2RlbDsKKyAgbGV0IGJhY2t1cERpYWxvZ1dyYXBw ZXI7CisgIGxldCBub0RhdGFOb2RlOworICBsZXQgc2VydmVyVHJlZU5vZGU7CisgIGxldCBkYXRh YmFzZVRyZWVOb2RlOworICBsZXQgdmlld1NjaGVtYTsKKyAgbGV0IGJhY2t1cEpRdWVyeUNvbnRh aW5lclNweTsKKyAgbGV0IGJhY2t1cE5vZGVDaGlsZE5vZGVTcHk7CisgIGxldCBiYWNrdXBOb2Rl OworCisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVN ZW51OiBuZXcgVHJlZUZha2UoKSwKKyAgICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZlcjogewor ICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBq YXNtaW5lLmNyZWF0ZVNweSgnZ2V0VHJlZU5vZGVIaWVyYXJjaHknKSwKKyAgICAgICAgfSwKKyAg ICAgICAgZGF0YWJhc2U6IHsKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgfSwKKyAg ICAgIH0sCisgICAgICBrZXlib2FyZE5hdmlnYXRpb246IGphc21pbmUuY3JlYXRlU3B5T2JqKCdr ZXlib2FyZE5hdmlnYXRpb24nLCBbJ2dldERpYWxvZ1RhYk5hdmlnYXRvciddKSwKKyAgICB9Owor ICAgIG5vRGF0YU5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjEn LCB1bmRlZmluZWQsIFt7aWQ6ICdsZXZlbDEnfV0pOworICAgIHNlcnZlclRyZWVOb2RlID0gcGdC cm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUoJ2xldmVsMi4xJywgeworICAgICAgX3R5cGU6ICdz ZXJ2ZXInLAorICAgICAgX2lkOiAxMCwKKyAgICAgIGxhYmVsOiAnc29tZS10cmVlLWxhYmVsJywK KyAgICB9LCBbe2lkOiAnbGV2ZWwyLjEnfV0pOworICAgIGRhdGFiYXNlVHJlZU5vZGUgPSBuZXcg VHJlZU5vZGUoJ2RhdGFiYXNlLXRyZWUtbm9kZScsIHsKKyAgICAgIF90eXBlOiAnZGF0YWJhc2Un LAorICAgICAgX2xhYmVsOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgfSwgW3tpZDogJ2Rh dGFiYXNlLXRyZWUtbm9kZSd9XSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHNl cnZlclRyZWVOb2RlLCBkYXRhYmFzZVRyZWVOb2RlKTsKKworICAgIGpxdWVyeVNweSA9IGphc21p bmUuY3JlYXRlU3B5KCdqcXVlcnlTcHknKTsKKyAgICBiYWNrdXBOb2RlID0geworICAgICAgX19p bnRlcm5hbDogeworICAgICAgICBidXR0b25zOiBbe30sIHt9LCB7CisgICAgICAgICAgZWxlbWVu dDogeworICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLAorICAgICAgICAgIH0sCisgICAgICAg IH1dLAorICAgICAgfSwKKyAgICAgIGVsZW1lbnRzOiB7CisgICAgICAgIGJvZHk6IHsKKyAgICAg ICAgICBjaGlsZE5vZGVzOiBbCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICBdLAorICAgICAg ICB9LAorICAgICAgICBjb250ZW50OiBqYXNtaW5lLmNyZWF0ZVNweU9iaignY29udGVudCcsIFsn YXBwZW5kQ2hpbGQnLCAnYXR0ciddKSwKKyAgICAgIH0sCisgICAgfTsKKworICAgIGJhY2t1cEpR dWVyeUNvbnRhaW5lclNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdiYWNrdXBKUXVlcnlDb250 YWluZXInLCBbJ2dldCcsICdhdHRyJ10pOworICAgIGJhY2t1cEpRdWVyeUNvbnRhaW5lclNweS5n ZXQuYW5kLnJldHVyblZhbHVlKGJhY2t1cEpRdWVyeUNvbnRhaW5lclNweSk7CisKKyAgICBnZW5l cmF0ZWRCYWNrdXBNb2RlbCA9IHt9OworICAgIGRpYWxvZ01vZGVsS2xhc3NTcHkgPSBqYXNtaW5l LmNyZWF0ZVNweSgnZGlhbG9nTW9kZWxLbGFzcycpOworICAgIGRpYWxvZ01vZGVsS2xhc3NTcHku YW5kLnJldHVyblZhbHVlKGdlbmVyYXRlZEJhY2t1cE1vZGVsKTsKKworICAgIHZpZXdTY2hlbWEg PSB7fTsKKyAgICBiYWNrZm9ybSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdiYWNrZm9ybScsIFsn Z2VuZXJhdGVWaWV3U2NoZW1hJywgJ0RpYWxvZyddKTsKKyAgICBiYWNrZm9ybS5nZW5lcmF0ZVZp ZXdTY2hlbWEuYW5kLnJldHVyblZhbHVlKHZpZXdTY2hlbWEpOworCisgICAgYmFja3VwTm9kZUNo aWxkTm9kZVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdzb21ldGhpbmcnLCBbJ2FkZENsYXNz J10pOworICAgIGpxdWVyeVNweS5hbmQuY2FsbEZha2UoKHNlbGVjdG9yKSA9PiB7CisgICAgICBp ZiAoc2VsZWN0b3IgPT09ICc8ZGl2IGNsYXNzPVwnYmFja3VwX2RpYWxvZ1wnPjwvZGl2PicpIHsK KyAgICAgICAgcmV0dXJuIGJhY2t1cEpRdWVyeUNvbnRhaW5lclNweTsKKyAgICAgIH0gZWxzZSBp ZiAoc2VsZWN0b3IgPT09IGJhY2t1cE5vZGUuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKSB7 CisgICAgICAgIHJldHVybiBiYWNrdXBOb2RlQ2hpbGROb2RlU3B5OworICAgICAgfQorICAgIH0p OworCisgIH0pOworCisgIGRlc2NyaWJlKCcjcHJlcGFyZScsICgpID0+IHsKKyAgICBiZWZvcmVF YWNoKCgpID0+IHsKKyAgICAgIGFsZXJ0aWZ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2Fs ZXJ0aWZ5JywgWydhbGVydCcsICdkaWFsb2cnXSk7CisgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVy ID0gbmV3IEJhY2t1cERpYWxvZ1dyYXBwZXIoCisgICAgICAgICc8ZGl2IGNsYXNzPVwnYmFja3Vw X2RpYWxvZ1wnPjwvZGl2PicsCisgICAgICAgICdiYWNrdXBEaWFsb2dUaXRsZScsCisgICAgICAg ICdiYWNrdXAnLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIHBnQnJvd3NlciwKKyAgICAg ICAgYWxlcnRpZnlTcHksCisgICAgICAgIGRpYWxvZ01vZGVsS2xhc3NTcHksCisgICAgICAgIGJh Y2tmb3JtCisgICAgICApOworICAgICAgYmFja3VwRGlhbG9nV3JhcHBlciA9IE9iamVjdC5hc3Np Z24oYmFja3VwRGlhbG9nV3JhcHBlciwgYmFja3VwTm9kZSk7CisgICAgfSk7CisKKyAgICBjb250 ZXh0KCdubyB0cmVlIGVsZW1lbnQgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICBpdCgnZG9l cyBub3QgY3JlYXRlIGEgYmFja2Zvcm0gZGlhbG9nJywgKCkgPT4geworICAgICAgICBiYWNrdXBE aWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2tmb3JtLkRpYWxvZyku bm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzYWJsZXMg dGhlIGJ1dHRvbiAic3VibWl0IGJ1dHRvbiIgdW50aWwgYSBmaWxlbmFtZSBpcyBzZWxlY3RlZCcs ICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAg IGV4cGVjdChiYWNrdXBEaWFsb2dXcmFwcGVyLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50 LmRpc2FibGVkKS50b0JlKHRydWUpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0 KCdzZWxlY3RlZCB0cmVlIG5vZGUgaGFzIG5vIGRhdGEnLCAoKSA9PiB7CisgICAgICBiZWZvcmVF YWNoKCgpID0+IHsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUobm9EYXRh Tm9kZS5kb21Ob2RlKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEg YmFja2Zvcm0gZGlhbG9nJywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnBy ZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2tmb3JtLkRpYWxvZykubm90LnRvSGF2ZUJlZW5D YWxsZWQoKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzYWJsZXMgdGhlIGJ1dHRvbiAic3Vi bWl0IGJ1dHRvbiIgdW50aWwgYSBmaWxlbmFtZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAg ICAgYmFja3VwRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChiYWNrdXBE aWFsb2dXcmFwcGVyLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkKS50b0Jl KHRydWUpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0cmVlIGVsZW1lbnQg aXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICBsZXQgdHJlZUhpZXJhcmNoeUluZm9ybWF0aW9u OworICAgICAgbGV0IGRpYWxvZ1NweTsKKworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAg ICAgIHRyZWVIaWVyYXJjaHlJbmZvcm1hdGlvbiA9IHsKKyAgICAgICAgICBzZXJ2ZXI6IHsKKyAg ICAgICAgICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgICAgICAgIF9pZDogMTAsCisgICAgICAg ICAgICBwcmlvcml0eTogMCwKKyAgICAgICAgICAgIGxhYmVsOiAnc29tZS10cmVlLWxhYmVsJywK KyAgICAgICAgICB9LAorICAgICAgICB9OworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2Vs ZWN0Tm9kZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgcGdCcm93c2VyLk5vZGVz WydzZXJ2ZXInXS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hbmQKKyAgICAgICAgICAucmV0dXJuVmFs dWUodHJlZUhpZXJhcmNoeUluZm9ybWF0aW9uKTsKKyAgICAgICAgZGlhbG9nU3B5ID0gamFzbWlu ZS5jcmVhdGVTcHlPYmooJ25ld1ZpZXcnLCBbJ3JlbmRlciddKTsKKyAgICAgICAgZGlhbG9nU3B5 LiRlbCA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCckZWwnLCBbJ2ZpbmQnLCAnYXR0ciddKTsKKyAg ICAgICAgZGlhbG9nU3B5Lm1vZGVsID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ21vZGVsJywgWydv biddKTsKKyAgICAgICAgZGlhbG9nU3B5LiRlbC5maW5kLmFuZC5yZXR1cm5WYWx1ZShbXSk7CisK KyAgICAgICAgYmFja2Zvcm0uRGlhbG9nLmFuZC5yZXR1cm5WYWx1ZShkaWFsb2dTcHkpOworICAg ICAgfSk7CisKKyAgICAgIGl0KCdjcmVhdGVzIGEgYmFja2Zvcm0gZGlhbG9nIGFuZCBkaXNwbGF5 cyBpdCcsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7Cisg ICAgICAgIGV4cGVjdChiYWNrZm9ybS5EaWFsb2cpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHsKKyAg ICAgICAgICBlbDogYmFja3VwSlF1ZXJ5Q29udGFpbmVyU3B5LAorICAgICAgICAgIG1vZGVsOiBn ZW5lcmF0ZWRCYWNrdXBNb2RlbCwKKyAgICAgICAgICBzY2hlbWE6IHZpZXdTY2hlbWEsCisgICAg ICAgIH0pOworCisgICAgICAgIGV4cGVjdChkaWFsb2dTcHkucmVuZGVyKS50b0hhdmVCZWVuQ2Fs bGVkKCk7CisgICAgICB9KTsKKworCisgICAgICBpdCgnYWRkIGFsZXJ0aWZ5IGNsYXNzZXMgdG8g cmVzdG9yZSBub2RlIGNoaWxkbm9kZScsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3Jh cHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChiYWNrdXBOb2RlQ2hpbGROb2RlU3B5LmFk ZENsYXNzKQorICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnYWxlcnRpZnlfdG9vbHNf ZGlhbG9nX3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnKTsKKyAgICAgIH0pOworCisgICAgICBp dCgnZGlzYWJsZXMgdGhlIGJ1dHRvbiBzdWJtaXQgYnV0dG9uIHVudGlsIGEgZmlsZW5hbWUgaXMg c2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIucHJlcGFyZSgp OworICAgICAgICBleHBlY3QoYmFja3VwTm9kZS5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVu dC5kaXNhYmxlZCkudG9CZSh0cnVlKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZ2VuZXJhdGVz IGEgbmV3IGJhY2t1cCBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBl ci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChkaWFsb2dNb2RlbEtsYXNzU3B5KS50b0hhdmVC ZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICB7dHlwZTogJ2JhY2t1cCd9LAorICAgICAgICAgIHtu b2RlX2luZm86IHRyZWVIaWVyYXJjaHlJbmZvcm1hdGlvbn0KKyAgICAgICAgKTsKKyAgICAgIH0p OworCisgICAgICBpdCgnYWRkIHRoZSBuZXcgZGlhbG9nIHRvIHRoZSBiYWNrdXAgbm9kZSBIVE1M JywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAg ICAgZXhwZWN0KGJhY2t1cE5vZGUuZWxlbWVudHMuY29udGVudC5hcHBlbmRDaGlsZCkudG9IYXZl QmVlbkNhbGxlZFdpdGgoYmFja3VwSlF1ZXJ5Q29udGFpbmVyU3B5KTsKKyAgICAgIH0pOworICAg IH0pOworICB9KTsKKworICBkZXNjcmliZSgnb25CdXR0b25DbGlja2VkJywgKCkgPT4geworICAg IGxldCBuZXR3b3JrTW9jazsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIG5ldHdvcmtN b2NrID0gbmV3IE1vY2tBZGFwdGVyKGF4aW9zKTsKKyAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIg PSBuZXcgQmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgICAgJzxkaXYgY2xhc3M9XCdiYWNrdXBf ZGlhbG9nXCc+PC9kaXY+JywKKyAgICAgICAgJ2JhY2t1cERpYWxvZ1RpdGxlJywKKyAgICAgICAg J2JhY2t1cCcsCisgICAgICAgIGpxdWVyeVNweSwKKyAgICAgICAgcGdCcm93c2VyLAorICAgICAg ICBhbGVydGlmeVNweSwKKyAgICAgICAgZGlhbG9nTW9kZWxLbGFzc1NweSwKKyAgICAgICAgYmFj a2Zvcm0KKyAgICAgICk7CisKKyAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIgPSBPYmplY3QuYXNz aWduKGJhY2t1cERpYWxvZ1dyYXBwZXIsIGJhY2t1cE5vZGUpOworICAgIH0pOworCisgICAgYWZ0 ZXJFYWNoKCgpID0+IHsKKyAgICAgIG5ldHdvcmtNb2NrLnJlc3RvcmUoKTsKKyAgICB9KTsKKwor ICAgIGNvbnRleHQoJ2RpYWxvZyBoZWxwIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgpID0+IHsKKyAg ICAgIGxldCBuZXR3b3JrQ2FsbGVkOworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAg IG5ldHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgbmV0d29ya01vY2sub25BbnkoLy4qLyku cmVwbHkoKCkgPT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSB0cnVlOworICAgICAgICAg IHJldHVybiBbMjAwLCB7fV07CisgICAgICAgIH0pOworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1l bnUuc2VsZWN0Tm9kZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgcGdCcm93c2Vy LnNob3dIZWxwID0gamFzbWluZS5jcmVhdGVTcHkoJ3Nob3dIZWxwJyk7CisKKyAgICAgICAgY29u c3QgZXZlbnQgPSB7CisgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICBlbGVtZW50OiB7 CisgICAgICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcsCisgICAgICAgICAgICAgIGdldEF0 dHJpYnV0ZTogKGF0dHJpYnV0ZU5hbWUpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmli dXRlTmFtZSA9PT0gJ3VybCcpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3Nv bWV1cmwnOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PT0gJ2xh YmVsJykgeworICAgICAgICAgICAgICAgICAgcmV0dXJuICdzb21lIGxhYmVsJzsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH0s CisgICAgICAgIH07CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQp OworICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5cyBoZWxwIGZvciBkaWFsb2cnLCAoKSA9 PiB7CisgICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuc2hvd0hlbHApLnRvSGF2ZUJlZW5DYWxsZWRX aXRoKAorICAgICAgICAgICdkaWFsb2dfaGVscCcsCisgICAgICAgICAgJ2h0dHA6Ly9zb21ldXJs JywKKyAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddLAorICAgICAgICAgIHNlcnZl clRyZWVOb2RlLAorICAgICAgICAgICdzb21lIGxhYmVsJworICAgICAgICApOworICAgICAgfSk7 CisKKyAgICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgYmFja3VwJywgKCkgPT4geworICAgICAg ICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICB9KTsKKyAgICB9KTsK KworICAgIGNvbnRleHQoJ29iamVjdCBoZWxwIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgpID0+IHsK KyAgICAgIGxldCBuZXR3b3JrQ2FsbGVkOworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAg ICAgIG5ldHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgbmV0d29ya01vY2sub25BbnkoLy4q LykucmVwbHkoKCkgPT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSB0cnVlOworICAgICAg ICAgIHJldHVybiBbMjAwLCB7fV07CisgICAgICAgIH0pOworICAgICAgICBwZ0Jyb3dzZXIudHJl ZU1lbnUuc2VsZWN0Tm9kZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgcGdCcm93 c2VyLnNob3dIZWxwID0gamFzbWluZS5jcmVhdGVTcHkoJ3Nob3dIZWxwJyk7CisKKyAgICAgICAg Y29uc3QgZXZlbnQgPSB7CisgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICBlbGVtZW50 OiB7CisgICAgICAgICAgICAgIG5hbWU6ICdvYmplY3RfaGVscCcsCisgICAgICAgICAgICAgIGdl dEF0dHJpYnV0ZTogKGF0dHJpYnV0ZU5hbWUpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoYXR0 cmlidXRlTmFtZSA9PT0gJ3VybCcpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDov L3NvbWV1cmwnOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PT0g J2xhYmVsJykgeworICAgICAgICAgICAgICAgICAgcmV0dXJuICdzb21lIGxhYmVsJzsKKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAg IH0sCisgICAgICAgIH07CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZl bnQpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5cyBoZWxwIGZvciBkaWFsb2cnLCAo KSA9PiB7CisgICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuc2hvd0hlbHApLnRvSGF2ZUJlZW5DYWxs ZWRXaXRoKAorICAgICAgICAgICdvYmplY3RfaGVscCcsCisgICAgICAgICAgJ2h0dHA6Ly9zb21l dXJsJywKKyAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddLAorICAgICAgICAgIHNl cnZlclRyZWVOb2RlLAorICAgICAgICAgICdzb21lIGxhYmVsJworICAgICAgICApOworICAgICAg fSk7CisKKyAgICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgYmFja3VwJywgKCkgPT4geworICAg ICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICB9KTsKKyAgICB9 KTsKKworICAgIGNvbnRleHQoJ2JhY2t1cCBidXR0b24gd2FzIHByZXNzZWQnLCAoKSA9PiB7Cisg ICAgICBjb250ZXh0KCdubyB0cmVlIG5vZGUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAg IGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgYmFja3VwJywgKCkgPT4geworICAgICAgICAgIGxldCBu ZXR3b3JrQ2FsbGVkID0gZmFsc2U7CisgICAgICAgICAgbmV0d29ya01vY2sub25BbnkoLy4qLyku cmVwbHkoKCkgPT4geworICAgICAgICAgICAgbmV0d29ya0NhbGxlZCA9IHRydWU7CisgICAgICAg ICAgICByZXR1cm4gWzIwMCwge31dOworICAgICAgICAgIH0pOworCisgICAgICAgICAgbGV0IGV2 ZW50ID0geworICAgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICAgICdkYXRhLWJ0bi1u YW1lJzogJ2JhY2t1cCcsCisgICAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAgICAg ICBnZXRBdHRyaWJ1dGU6ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDov L3NvbWV1cmwnOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICB9LAorICAgICAgICAgIH07CisKKyAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNh bGxiYWNrKGV2ZW50KTsKKyAgICAgICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxz ZSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3RyZWUgbm9kZSBo YXMgbm8gZGF0YScsICgpID0+IHsKKyAgICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRoZSBiYWNr dXAnLCAoKSA9PiB7CisgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUobm9E YXRhTm9kZS5kb21Ob2RlKTsKKworICAgICAgICAgIGxldCBuZXR3b3JrQ2FsbGVkID0gZmFsc2U7 CisgICAgICAgICAgbmV0d29ya01vY2sub25BbnkoLy4qLykucmVwbHkoKCkgPT4geworICAgICAg ICAgICAgbmV0d29ya0NhbGxlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gWzIwMCwge31d OworICAgICAgICAgIH0pOworCisgICAgICAgICAgbGV0IGV2ZW50ID0geworICAgICAgICAgICAg YnV0dG9uOiB7CisgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2JhY2t1cCcsCisgICAg ICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAgICAgICBnZXRBdHRyaWJ1dGU6ICgpID0+ IHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwnOworICAgICAgICAg ICAgICAgIH0sCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH07 CisKKyAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAg ICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICAgIH0pOworICAg ICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3RyZWUgbm9kZSBoYXMgZGF0YScsICgpID0+IHsKKyAg ICAgICAgY29udGV4dCgnd2hlbiBkaWFsb2cgdHlwZSBpcyBnbG9iYWwnLCAoKSA9PiB7CisgICAg ICAgICAgbGV0IGV2ZW50OworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAg ICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUoc2VydmVyVHJlZU5vZGUuZG9tTm9kZSk7 CisKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIudmlldyA9IHsKKyAgICAgICAgICAg ICAgbW9kZWw6IG5ldyBGYWtlTW9kZWwoKSwKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAg IGV2ZW50ID0geworICAgICAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAgICAgICAnZGF0 YS1idG4tbmFtZSc6ICdiYWNrdXAnLAorICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAg ICAgICAgICAgICAgIGdldEF0dHJpYnV0ZTogKCkgPT4geworICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH07CisgICAgICAgICAgfSk7 CisKKyAgICAgICAgICBjb250ZXh0KCd3aGVuIHRoZSBiYWNrdXAgam9iIGlzIGNyZWF0ZWQgc3Vj Y2Vzc2Z1bGx5JywgKCkgPT4geworICAgICAgICAgICAgbGV0IGRhdGFTZW50VG9TZXJ2ZXI7Cisg ICAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgICAgcGdCcm93c2VyLkV2 ZW50cyA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdFdmVudHMnLCBbJ3RyaWdnZXInXSk7CisgICAg ICAgICAgICAgIGFsZXJ0aWZ5U3B5LnN1Y2Nlc3MgPSBqYXNtaW5lLmNyZWF0ZVNweSgnc3VjY2Vz cycpOworCisgICAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUG9zdCgnL2JhY2t1cC9qb2IvMTAn KS5yZXBseSgocmVxdWVzdCkgPT4geworICAgICAgICAgICAgICAgIGRhdGFTZW50VG9TZXJ2ZXIg PSByZXF1ZXN0LmRhdGE7CisgICAgICAgICAgICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAg ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ2NyZWF0ZXMg YSBzdWNjZXNzIGFsZXJ0IGJveCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERp YWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgp ID0+IHsKKyAgICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuc3VjY2VzcykudG9IYXZl QmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICAgICAnQmFja3VwIGpvYiBjcmVhdGVkLics CisgICAgICAgICAgICAgICAgICA1CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg ICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisKKyAgICAg ICAgICAgIGl0KCd0cmlnZ2VyIGFuIGV2ZW50IHRvIGJhY2tncm91bmQgcHJvY2VzcycsIChkb25l KSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQp OworCisgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4 cGVjdChwZ0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAg ICAgICAgICAgICAgICAgJ3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLAorICAgICAgICAgICAg ICAgICAgYmFja3VwRGlhbG9nV3JhcHBlcgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg ICAgICAgZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworCisg ICAgICAgICAgICBpdCgnc2VuZCB0aGUgY29ycmVjdCBwYXJhbWVudGVycyB0byB0aGUgYmFja2Vu ZCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJh Y2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAg ICAgICBleHBlY3QoSlNPTi5wYXJzZShkYXRhU2VudFRvU2VydmVyKSkudG9FcXVhbCgKKyAgICAg ICAgICAgICAgICAgIHt9CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBkb25l KCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7 CisKKyAgICAgICAgICBjb250ZXh0KCd3aGVuIGNyZWF0aW5nIGJhY2t1cCBqb2IgZmFpbHMnLCAo KSA9PiB7CisgICAgICAgICAgICBpdCgnY3JlYXRlcyBhbiBhbGVydCBib3gnLCAoZG9uZSkgPT4g eworICAgICAgICAgICAgICBhbGVydGlmeVNweS5hbGVydCA9IGphc21pbmUuY3JlYXRlU3B5KCdh bGVydCcpOworICAgICAgICAgICAgICBuZXR3b3JrTW9jay5vblBvc3QoJy9iYWNrdXAvam9iLzEw JykucmVwbHkoKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBbNDAwLCB7CisgICAgICAg ICAgICAgICAgICBlcnJvcm1zZzogJ3NvbWUtZXJyb3ItbWVzc2FnZScsCisgICAgICAgICAgICAg ICAgfV07CisgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dy YXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsK KyAgICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxs ZWRXaXRoKAorICAgICAgICAgICAgICAgICAgJ0JhY2t1cCBqb2IgZmFpbGVkLicsCisgICAgICAg ICAgICAgICAgICAnc29tZS1lcnJvci1tZXNzYWdlJworICAgICAgICAgICAgICAgICk7CisgICAg ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKworICAgICAgICAgICAg fSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnRleHQoJ3doZW4g ZGlhbG9nIHR5cGUgaXMgb2JqZWN0JywgKCkgPT4geworICAgICAgICAgIGxldCBldmVudDsKKyAg ICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBw ZXIgPSBuZXcgQmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9 XCdiYWNrdXBfZGlhbG9nXCc+PC9kaXY+JywKKyAgICAgICAgICAgICAgJ2JhY2t1cERpYWxvZ1Rp dGxlJywKKyAgICAgICAgICAgICAgJ2JhY2t1cF9vYmplY3RzJywKKyAgICAgICAgICAgICAganF1 ZXJ5U3B5LAorICAgICAgICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgICAgICAgIGFsZXJ0aWZ5 U3B5LAorICAgICAgICAgICAgICBkaWFsb2dNb2RlbEtsYXNzU3B5LAorICAgICAgICAgICAgICBi YWNrZm9ybQorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51 LnNlbGVjdE5vZGUoZGF0YWJhc2VUcmVlTm9kZS5kb21Ob2RlKTsKKworICAgICAgICAgICAgYmFj a3VwRGlhbG9nV3JhcHBlci52aWV3ID0geworICAgICAgICAgICAgICBtb2RlbDogbmV3IEZha2VN b2RlbCgpLAorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgZXZlbnQgPSB7CisgICAgICAg ICAgICAgIGJ1dHRvbjogeworICAgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2JhY2t1 cCcsCisgICAgICAgICAgICAgICAgZWxlbWVudDogeworICAgICAgICAgICAgICAgICAgZ2V0QXR0 cmlidXRlOiAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1 cmwnOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg ICAgICB9LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRl eHQoJ3doZW4gdGhlIGJhY2t1cCBqb2IgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHknLCAoKSA9PiB7 CisgICAgICAgICAgICBsZXQgZGF0YVNlbnRUb1NlcnZlcjsKKyAgICAgICAgICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzID0gamFzbWluZS5jcmVh dGVTcHlPYmooJ0V2ZW50cycsIFsndHJpZ2dlciddKTsKKyAgICAgICAgICAgICAgYWxlcnRpZnlT cHkuc3VjY2VzcyA9IGphc21pbmUuY3JlYXRlU3B5KCdzdWNjZXNzJyk7CisKKyAgICAgICAgICAg ICAgbmV0d29ya01vY2sub25Qb3N0KCcvYmFja3VwL2pvYi8xMC9vYmplY3QnKS5yZXBseSgocmVx dWVzdCkgPT4geworICAgICAgICAgICAgICAgIGRhdGFTZW50VG9TZXJ2ZXIgPSByZXF1ZXN0LmRh dGE7CisgICAgICAgICAgICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAgICAgICAgfSk7 CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ2NyZWF0ZXMgYSBzdWNjZXNzIGFs ZXJ0IGJveCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIu Y2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAg ICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuc3VjY2VzcykudG9IYXZlQmVlbkNhbGxlZFdp dGgoCisgICAgICAgICAgICAgICAgICAnQmFja3VwIGpvYiBjcmVhdGVkLicsCisgICAgICAgICAg ICAgICAgICA1CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7Cisg ICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGl0KCd0 cmlnZ2VyIGFuIGV2ZW50IHRvIGJhY2tncm91bmQgcHJvY2VzcycsIChkb25lKSA9PiB7CisgICAg ICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworCisgICAgICAg ICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChwZ0Jyb3dz ZXIuRXZlbnRzLnRyaWdnZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAg ICAgJ3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLAorICAgICAgICAgICAgICAgICAgYmFja3Vw RGlhbG9nV3JhcHBlcgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgZG9uZSgp OworICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBp dCgnc2VuZCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzIHRvIHRoZSBiYWNrZW5kJywgKGRvbmUpID0+ IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7Cisg ICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChK U09OLnBhcnNlKGRhdGFTZW50VG9TZXJ2ZXIpKS50b0VxdWFsKAorICAgICAgICAgICAgICAgICAg e2RhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCd9CisgICAgICAgICAgICAgICAgKTsKKyAg ICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAg fSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCd3aGVuIGNyZWF0aW5nIGJh Y2t1cCBqb2IgZmFpbHMnLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnY3JlYXRlcyBhbiBhbGVy dCBib3gnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBhbGVydGlmeVNweS5hbGVydCA9IGph c21pbmUuY3JlYXRlU3B5KCdhbGVydCcpOworICAgICAgICAgICAgICBuZXR3b3JrTW9jay5vblBv c3QoJy9iYWNrdXAvam9iLzEwL29iamVjdCcpLnJlcGx5KCgpID0+IHsKKyAgICAgICAgICAgICAg ICByZXR1cm4gWzQwMCwgeworICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c6ICdzb21lLWVycm9y LW1lc3NhZ2UnLAorICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgICB9KTsKKworICAg ICAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAg ICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5 U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAgICdCYWNr dXAgam9iIGZhaWxlZC4nLAorICAgICAgICAgICAgICAgICAgJ3NvbWUtZXJyb3ItbWVzc2FnZScK KyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAg ICAgfSwgMCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg ICAgICB9KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJyNzZXRFeHRyYVBhcmFtZXRl cnMnLCAoKSA9PiB7CisgICAgbGV0IHNlbGVjdGVkVHJlZU5vZGU7CisgICAgbGV0IHRyZWVJbmZv OworICAgIGxldCBtb2RlbDsKKworICAgIGNvbnRleHQoJ3doZW4gZGlhbG9nIHR5cGUgaXMgZ2xv YmFsJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIGJhY2t1cERp YWxvZ1dyYXBwZXIgPSBuZXcgQmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgICAgICAnPGRpdiBj bGFzcz1cJ2JhY2t1cF9kaWFsb2dcJz48L2Rpdj4nLAorICAgICAgICAgICdiYWNrdXBEaWFsb2dU aXRsZScsCisgICAgICAgICAgJ2JhY2t1cCcsCisgICAgICAgICAganF1ZXJ5U3B5LAorICAgICAg ICAgIHBnQnJvd3NlciwKKyAgICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAgICBkaWFsb2dN b2RlbEtsYXNzU3B5LAorICAgICAgICAgIGJhY2tmb3JtCisgICAgICAgICk7CisKKyAgICAgICAg dHJlZUluZm8gPSB7fTsKKyAgICAgICAgbW9kZWwgPSBuZXcgRmFrZU1vZGVsKCk7CisgICAgICAg IGJhY2t1cERpYWxvZ1dyYXBwZXIudmlldyA9IHsKKyAgICAgICAgICBtb2RlbDogbW9kZWwsCisg ICAgICAgIH07CisgICAgICB9KTsKKworCisgICAgICBpdCgnc2V0cyBub3RoaW5nIG9uIHRoZSB2 aWV3IG1vZGVsJywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnNldEV4dHJh UGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7CisgICAgICAgIGV4cGVjdCht b2RlbC50b0pTT04oKSkudG9FcXVhbCh7fSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNv bnRleHQoJ3doZW4gZGlhbG9nIHR5cGUgaXMgb2JqZWN0JywgKCkgPT4geworICAgICAgYmVmb3Jl RWFjaCgoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIgPSBuZXcgQmFja3VwRGlh bG9nV3JhcHBlcigKKyAgICAgICAgICAnPGRpdiBjbGFzcz1cJ2JhY2t1cF9kaWFsb2dcJz48L2Rp dj4nLAorICAgICAgICAgICdiYWNrdXBEaWFsb2dUaXRsZScsCisgICAgICAgICAgJ2JhY2t1cF9v YmplY3RzJywKKyAgICAgICAgICBqcXVlcnlTcHksCisgICAgICAgICAgcGdCcm93c2VyLAorICAg ICAgICAgIGFsZXJ0aWZ5U3B5LAorICAgICAgICAgIGRpYWxvZ01vZGVsS2xhc3NTcHksCisgICAg ICAgICAgYmFja2Zvcm0KKyAgICAgICAgKTsKKworICAgICAgICB0cmVlSW5mbyA9IHsKKyAgICAg ICAgICBkYXRhYmFzZTogeworICAgICAgICAgICAgX2xhYmVsOiAnc29tZS1kYXRhYmFzZS1sYWJl bCcsCisgICAgICAgICAgfSwKKyAgICAgICAgICBzY2hlbWE6IHsKKyAgICAgICAgICAgIF9sYWJl bDogJ3NvbWUtdHJlZWluZm8tbGFiZWwnLAorICAgICAgICAgIH0sCisgICAgICAgIH07CisKKyAg ICAgICAgbW9kZWwgPSBuZXcgRmFrZU1vZGVsKCk7CisgICAgICAgIHNlbGVjdGVkVHJlZU5vZGUg PSBuZXcgVHJlZU5vZGUoJ3NvbWUtc2VsZWN0ZWQtbm9kZScsCisgICAgICAgICAge190eXBlOiAn c29tZS10eXBlJywgX2xhYmVsOiAnc29tZS1zZWxlY3RlZC1sYWJlbCd9LAorICAgICAgICAgIFtd KTsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci52aWV3ID0geworICAgICAgICAgIG1vZGVs OiBtb2RlbCwKKyAgICAgICAgfTsKKyAgICAgIH0pOworCisgICAgICBpdCgnc2V0cyB0aGUgZGF0 YWJhc2UgbGFiZWwgb24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dX cmFwcGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7Cisg ICAgICAgIGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7CisgICAgICAgICAgJ2RhdGFi YXNlJzogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICB9KTsKKyAgICAgIH0pOworCisg ICAgICBjb250ZXh0KCd3aGVuIHRoZSBzZWxlY3RlZCBpcyBhIHNjaGVtYSB0eXBlJywgKCkgPT4g eworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZFRyZWVOb2Rl ID0gbmV3IFRyZWVOb2RlKCdzb21lLXNlbGVjdGVkLW5vZGUnLAorICAgICAgICAgICAge190eXBl OiAnc2NoZW1hJywgX2xhYmVsOiAnc29tZS1zY2hlbWEtbGFiZWwnfSwKKyAgICAgICAgICAgIFtd KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3NldHMgdGhlIHNjaGVtYSBsYWJlbCBvbiB0 aGUgbW9kZWwnLCAoKSA9PiB7CisgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5zZXRFeHRy YVBhcmFtZXRlcnMoc2VsZWN0ZWRUcmVlTm9kZSwgdHJlZUluZm8pOworICAgICAgICAgIGV4cGVj dChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7CisgICAgICAgICAgICAnZGF0YWJhc2UnOiAnc29t ZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAgICAnc2NoZW1hcyc6IFsnc29tZS1zY2hlbWEt bGFiZWwnXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAg Y29udGV4dCgnd2hlbiB0aGUgc2VsZWN0ZWQgaXMgYSB0YWJsZSB0eXBlJywgKCkgPT4geworICAg ICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZFRyZWVOb2RlID0gbmV3 IFRyZWVOb2RlKCdzb21lLXNlbGVjdGVkLW5vZGUnLAorICAgICAgICAgICAge190eXBlOiAndGFi bGUnLCBfbGFiZWw6ICdzb21lLXRhYmxlLWxhYmVsJ30sCisgICAgICAgICAgICBbXSk7CisgICAg ICAgIH0pOworCisgICAgICAgIGl0KCdzZXRzIHRoZSBzY2hlbWEgbGFiZWwgb24gdGhlIG1vZGVs JywgKCkgPT4geworICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0 ZXJzKHNlbGVjdGVkVHJlZU5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgICBleHBlY3QobW9kZWwu dG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3NvbWUtZGF0YWJh c2UtbGFiZWwnLAorICAgICAgICAgICAgJ3RhYmxlcyc6IFtbJ3NvbWUtdHJlZWluZm8tbGFiZWwn LCAnc29tZS10YWJsZS1sYWJlbCddXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg ICB9KTsKKworICAgICAgY29udGV4dCgnd2hlbiB0aGUgbW9kZWwgaGFzIG5vIHJhdGlvIHZhbHVl JywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBtb2RlbC5z ZXQoJ3JhdGlvJywgJycpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2V0cyBjbGVhcnMg dGhlIHJhdGlvIHZhbHVlJywgKCkgPT4geworICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIu c2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkVHJlZU5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAg ICBleHBlY3QobW9kZWwuZ2V0KCdyYXRpbycpKS50b0JlVW5kZWZpbmVkKCk7CisgICAgICAgIH0p OworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gdGhlIG1vZGVsIGhhcyBhIHZhbGlk IHJhdGlvIHZhbHVlJywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAg ICAgICBtb2RlbC5zZXQoJ3JhdGlvJywgJzAuMjUnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg aXQoJ3NldHMgY2xlYXJzIHRoZSByYXRpbyB2YWx1ZScsICgpID0+IHsKKyAgICAgICAgICBiYWNr dXBEaWFsb2dXcmFwcGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVl SW5mbyk7CisgICAgICAgICAgZXhwZWN0KG1vZGVsLmdldCgncmF0aW8nKSkudG9FcXVhbCgnMC4y NScpOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0t Z2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvZ2xvYmFsX3NlcnZlcl9iYWNr dXBfZGlhbG9nX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9nbG9i YWxfc2VydmVyX2JhY2t1cF9kaWFsb2dfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMC4uODZkZjY3MmUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L2JhY2t1cC9nbG9iYWxfc2VydmVyX2JhY2t1cF9kaWFsb2dfc3BlYy5qcwpAQCAt MCwwICsxLDE2OCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK Ky8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVu dCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0IHtCYWNrdXBEaWFsb2d9IGZyb20gJy4uLy4uLy4u L3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nJzsKK2ltcG9ydCB7 VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKKworY29uc3QgY29udGV4dCA9IGRl c2NyaWJlOworCitkZXNjcmliZSgnR2xvYmFsU2VydmVyQmFja3VwRGlhbG9nJywgKCkgPT4gewor ICBsZXQgYmFja3VwRGlhbG9nOworICBsZXQgcGdCcm93c2VyOworICBsZXQganF1ZXJ5U3B5Owor ICBsZXQgYWxlcnRpZnlTcHk7CisgIGxldCBiYWNrdXBNb2RlbFNweTsKKworCisgIGxldCByb290 Tm9kZTsKKyAgbGV0IHNlcnZlclRyZWVOb2RlOworICBsZXQgcHBhc1NlcnZlclRyZWVOb2RlOwor CisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51 OiBuZXcgVHJlZUZha2UoKSwKKyAgICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZlcjogamFzbWlu ZS5jcmVhdGVTcHlPYmooJ05vZGVbc2VydmVyXScsIFsnZ2V0VHJlZU5vZGVIaWVyYXJjaHknXSks CisgICAgICB9LAorICAgIH07CisgICAgcGdCcm93c2VyLk5vZGVzLnNlcnZlci5oYXNJZCA9IHRy dWU7CisgICAganF1ZXJ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2pxdWVyeVNweScpOworICAg IGJhY2t1cE1vZGVsU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2JhY2t1cE1vZGVsU3B5Jyk7CisK KyAgICByb290Tm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdsZXZlbDEnLCB7 fSwgdW5kZWZpbmVkLCBbXSk7CisgICAgc2VydmVyVHJlZU5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1l bnUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjEnLCB7CisgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAg ICBfaWQ6IDEwLAorICAgIH0sIHVuZGVmaW5lZCwgWydsZXZlbDEnXSk7CisgICAgcHBhc1NlcnZl clRyZWVOb2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUoJ2xldmVsMS4yJywgewor ICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgc2VydmVyX3R5cGU6ICdwcGFzJywKKyAgICB9 LCB1bmRlZmluZWQsIFsnbGV2ZWwxJ10pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdO b2RlKCdsZXZlbDMnLCB7fSwgdW5kZWZpbmVkLCBbJ2xldmVsMScsICdsZXZlbDEuMiddKTsKKyAg ICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwzLjEnLCB1bmRlZmluZWQsIHVu ZGVmaW5lZCwgWydsZXZlbDEnLCAnbGV2ZWwxLjInLCAnbGV2ZWwzJ10pOworICB9KTsKKworICBk ZXNjcmliZSgnI2RyYXcnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBh bGVydGlmeVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdhbGVydGlmeScsIFsnYWxlcnQnLCAn ZGlhbG9nJ10pOworICAgICAgYWxlcnRpZnlTcHlbJ0JhY2t1cERpYWxvZ19nbG9iYWxzJ10gPSBq YXNtaW5lLmNyZWF0ZVNweSgnQmFja3VwRGlhbG9nX2dsb2JhbHMnKTsKKyAgICAgIGFsZXJ0aWZ5 U3B5WydCYWNrdXBEaWFsb2dfc2VydmVyJ10gPSBqYXNtaW5lLmNyZWF0ZVNweSgnQmFja3VwRGlh bG9nX3NlcnZlcicpOworICAgICAgYmFja3VwRGlhbG9nID0gbmV3IEJhY2t1cERpYWxvZygKKyAg ICAgICAgcGdCcm93c2VyLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIGFsZXJ0aWZ5U3B5 LAorICAgICAgICBiYWNrdXBNb2RlbFNweQorICAgICAgKTsKKworICAgICAgcGdCcm93c2VyLmdl dF9wcmVmZXJlbmNlID0gamFzbWluZS5jcmVhdGVTcHkoJ2dldF9wcmVmZXJlbmNlcycpOworICAg IH0pOworCisgICAgY29udGV4dCgndGhlcmUgYXJlIG5vIGFuY2VzdG9ycyBvZiB0aGUgdHlwZSBz ZXJ2ZXInLCAoKSA9PiB7CisgICAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgZGlhbG9nJywgKCkg PT4geworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShbe2lkOiAnbGV2ZWwx J31dKTsKKyAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgbnVsbCwgbnVsbCk7CisgICAg ICAgIGV4cGVjdChhbGVydGlmeVNweVsnQmFja3VwRGlhbG9nX2dsb2JhbHMnXSkubm90LnRvSGF2 ZUJlZW5DYWxsZWQoKTsKKyAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5WydCYWNrdXBEaWFsb2df c2VydmVyJ10pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICB9KTsKKworICAgICAgaXQo J2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCBhIEJhY2t1cCBFcnJvcicsICgpID0+IHsKKyAgICAgICAg YmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3Jvb3ROb2RlXSwgbnVsbCk7CisgICAgICAgIGV4cGVj dChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgJ0Jh Y2t1cCBFcnJvcicsCisgICAgICAgICAgJ1BsZWFzZSBzZWxlY3Qgc2VydmVyIG9yIGNoaWxkIG5v ZGUgZnJvbSB0aGUgYnJvd3NlciB0cmVlLicKKyAgICAgICAgKTsKKyAgICAgIH0pOworICAgIH0p OworCisgICAgY29udGV4dCgndGhlcmUgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIHR5cGUgc2VydmVy JywgKCkgPT4geworICAgICAgY29udGV4dCgnbm8gcHJlZmVyZW5jZSBjYW4gYmUgZm91bmQnLCAo KSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIHBnQnJvd3Nlci5n ZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUodW5kZWZpbmVkKTsKKyAgICAgICAgfSk7CisK KyAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7CisgICAg ICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQmFja3VwIEVycm9yIicsICgpID0+IHsK KyAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVlTm9kZV0sIG51 bGwpOworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2Fs bGVkV2l0aCgKKyAgICAgICAgICAgICAgJ0JhY2t1cCBFcnJvcicsCisgICAgICAgICAgICAgICdG YWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlIHBnX2Jpbl9kaXIgb2YgbW9kdWxlIHBhdGhzJworICAg ICAgICAgICAgKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY29udGV4 dCgnc2VydmVyIGlzIG5vdCBhIHBwYXMgc2VydmVyJywgKCkgPT4geworICAgICAgICAgIGl0KCdk aXNwbGF5IGFuIGFsZXJ0IHdpdGggIkJhY2t1cCBFcnJvciInLCAoKSA9PiB7CisgICAgICAgICAg ICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbcHBhc1NlcnZlclRyZWVOb2RlXSwgbnVsbCk7Cisg ICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KAorICAgICAgICAgICAgICAnQmFja3VwIEVycm9yJywKKyAgICAgICAgICAgICAgJ0ZhaWxlZCB0 byBsb2FkIHByZWZlcmVuY2UgcHBhc19iaW5fZGlyIG9mIG1vZHVsZSBwYXRocycKKyAgICAgICAg ICAgICk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNv bnRleHQoJ3ByZWZlcmVuY2UgY2FuIGJlIGZvdW5kJywgKCkgPT4geworICAgICAgICBjb250ZXh0 KCdiaW5hcnkgZm9sZGVyIGlzIG5vdCBjb25maWd1cmVkJywgKCkgPT4geworICAgICAgICAgIGJl Zm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlLmFu ZC5yZXR1cm5WYWx1ZSh7fSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCdz ZXJ2ZXIgaXMgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdkaXNwbGF5 IGFuIGFsZXJ0IHdpdGggIkNvbmZpZ3VyYXRpb24gcmVxdWlyZWQiJywgKCkgPT4geworICAgICAg ICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbc2VydmVyVHJlZU5vZGVdLCBudWxsKTsK KyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVk V2l0aCgKKyAgICAgICAgICAgICAgICAnQ29uZmlndXJhdGlvbiByZXF1aXJlZCcsCisgICAgICAg ICAgICAgICAgJ1BsZWFzZSBjb25maWd1cmUgdGhlIFBvc3RncmVTUUwgQmluYXJ5IFBhdGggaW4g dGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9 KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBub3QgYSBw cGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdp dGggIkNvbmZpZ3VyYXRpb24gcmVxdWlyZWQiJywgKCkgPT4geworICAgICAgICAgICAgICBiYWNr dXBEaWFsb2cuZHJhdyhudWxsLCBbcHBhc1NlcnZlclRyZWVOb2RlXSwgbnVsbCk7CisgICAgICAg ICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisg ICAgICAgICAgICAgICAgJ0NvbmZpZ3VyYXRpb24gcmVxdWlyZWQnLAorICAgICAgICAgICAgICAg ICdQbGVhc2UgY29uZmlndXJlIHRoZSBFREIgQWR2YW5jZWQgU2VydmVyIEJpbmFyeSBQYXRoIGlu IHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJworICAgICAgICAgICAgICApOworICAgICAgICAgICAg fSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnRleHQoJ2JpbmFy eSBmb2xkZXIgaXMgY29uZmlndXJlZCcsICgpID0+IHsKKyAgICAgICAgICBsZXQgZ2xvYmFsUmVz aXplVG9TcHk7CisgICAgICAgICAgbGV0IHNlcnZlclJlc2l6ZVRvU3B5OworICAgICAgICAgIGJl Zm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgZ2xvYmFsUmVzaXplVG9TcHkgPSBqYXNtaW5l LmNyZWF0ZVNweU9iaignZ2xvYmFscycsIFsncmVzaXplVG8nXSk7CisgICAgICAgICAgICBhbGVy dGlmeVNweVsnQmFja3VwRGlhbG9nX2dsb2JhbHMnXS5hbmQKKyAgICAgICAgICAgICAgLnJldHVy blZhbHVlKGdsb2JhbFJlc2l6ZVRvU3B5KTsKKyAgICAgICAgICAgIHNlcnZlclJlc2l6ZVRvU3B5 ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ3NlcnZlcicsIFsncmVzaXplVG8nXSk7CisgICAgICAg ICAgICBhbGVydGlmeVNweVsnQmFja3VwRGlhbG9nX3NlcnZlciddLmFuZAorICAgICAgICAgICAg ICAucmV0dXJuVmFsdWUoc2VydmVyUmVzaXplVG9TcHkpOworICAgICAgICAgICAgcGdCcm93c2Vy LmdldF9wcmVmZXJlbmNlLmFuZC5yZXR1cm5WYWx1ZSh7dmFsdWU6ICcvc29tZS9wYXRoJ30pOwor ICAgICAgICAgIH0pOworCisgICAgICAgICAgY29udGV4dCgnZGlhbG9nIGZvciBnbG9iYWwgYmFj a3VwJywgKCkgPT4geworICAgICAgICAgICAgaXQoJ2Rpc3BsYXlzIHRoZSBkaWFsb2cnLCAoKSA9 PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVlTm9k ZV0sIHtnbG9iYWxzOiB0cnVlfSk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweVsn QmFja3VwRGlhbG9nX2dsb2JhbHMnXSkudG9IYXZlQmVlbkNhbGxlZFdpdGgodHJ1ZSk7CisgICAg ICAgICAgICAgIGV4cGVjdChnbG9iYWxSZXNpemVUb1NweS5yZXNpemVUbykudG9IYXZlQmVlbkNh bGxlZFdpdGgoJzYwJScsICc1MCUnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOwor CisgICAgICAgICAgY29udGV4dCgnZGlhbG9nIGZvciBzZXJ2ZXIgYmFja3VwJywgKCkgPT4gewor ICAgICAgICAgICAgaXQoJ2Rpc3BsYXlzIHRoZSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgICAg ICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVlTm9kZV0sIHtzZXJ2ZXI6IHRy dWV9KTsKKyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5WydCYWNrdXBEaWFsb2dfc2Vy dmVyJ10pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRydWUpOworICAgICAgICAgICAgICBleHBlY3Qo c2VydmVyUmVzaXplVG9TcHkucmVzaXplVG8pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCc2MCUnLCAn NTAlJyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg ICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvYmFja3VwL21lbnVfdXRpbHNfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvYmFja3VwL21lbnVfdXRpbHNfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMC4uOTQzNWQ2OTkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L2JhY2t1cC9tZW51X3V0aWxzX3NwZWMuanMKQEAgLTAsMCArMSw1NSBAQAorLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v LworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v LworCisKK2ltcG9ydCB7bWVudUVuYWJsZWRTZXJ2ZXJ9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4v dG9vbHMvYmFja3VwL3N0YXRpYy9qcy9tZW51X3V0aWxzJzsKKworY29uc3QgY29udGV4dCA9IGRl c2NyaWJlOworCitkZXNjcmliZSgnYmFja3VwLm1lbnVVdGlscycsICgpID0+IHsKKyAgZGVzY3Jp YmUoJyNtZW51RW5hYmxlZFNlcnZlcicsICgpID0+IHsKKyAgICBjb250ZXh0KCdwcm92aWRlZCBu b2RlIGRhdGEgaXMgdW5kZWZpbmVkJywgKCkgPT4geworICAgICAgaXQoJ3JldHVybnMgZmFsc2Un LCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChtZW51RW5hYmxlZFNlcnZlcih1bmRlZmluZWQpKS50 b0JlKGZhbHNlKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgncHJvdmlkZWQg bm9kZSBkYXRhIGlzIG51bGwnLCAoKSA9PiB7CisgICAgICBpdCgncmV0dXJucyBmYWxzZScsICgp ID0+IHsKKyAgICAgICAgZXhwZWN0KG1lbnVFbmFibGVkU2VydmVyKG51bGwpKS50b0JlKGZhbHNl KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnY3VycmVudCBub2RlIHR5cGUg aXMgbm90IG9mIHRoZSB0eXBlIHNlcnZlcicsICgpID0+IHsKKyAgICAgIGl0KCdyZXR1cm5zIGZh bHNlJywgKCkgPT4geworICAgICAgICBleHBlY3QobWVudUVuYWJsZWRTZXJ2ZXIoe190eXBlOiAn c2NoZW1hJ30pKS50b0JlKGZhbHNlKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4 dCgnY3VycmVudCBub2RlIHR5cGUgaXMgb2YgdGhlIHR5cGUgc2VydmVyJywgKCkgPT4geworICAg ICAgY29udGV4dCgnaXMgY29ubmVjdGVkJywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJucyB0 cnVlJywgKCkgPT4geworICAgICAgICAgIGV4cGVjdChtZW51RW5hYmxlZFNlcnZlcih7CisgICAg ICAgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICAgICAgICBjb25uZWN0ZWQ6IHRydWUsCisg ICAgICAgICAgfSkpLnRvQmUodHJ1ZSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgICBj b250ZXh0KCdpcyBub3QgY29ubmVjdGVkJywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJucyBm YWxzZScsICgpID0+IHsKKyAgICAgICAgICBleHBlY3QobWVudUVuYWJsZWRTZXJ2ZXIoeworICAg ICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgICAgY29ubmVjdGVkOiBmYWxzZSwK KyAgICAgICAgICB9KSkudG9CZShmYWxzZSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAg fSk7CisgIH0pOworfSk7CisKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv Y29tbW9uX2tleWJvYXJkX3Nob3J0Y3V0c19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC9jb21tb25fa2V5Ym9hcmRfc2hvcnRjdXRzX3NwZWMuanMKaW5kZXggOWVhMzFlZmQuLmUy NzkyOWJmIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2NvbW1vbl9rZXli b2FyZF9zaG9ydGN1dHNfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Nv bW1vbl9rZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcwpAQCAtMTEsMTAgKzExLDYgQEAgaW1wb3J0 IGtleWJvYXJkU2hvcnRjdXRzIGZyb20gJ3NvdXJjZXMva2V5Ym9hcmRfc2hvcnRjdXRzJzsKIAog ZGVzY3JpYmUoJ3RoZSBrZXlib2FyZCBzaG9ydGN1dHMnLCAoKSA9PiB7CiAgIGNvbnN0IEYxX0tF WSA9IDExMjsKLSAgLy8gY29uc3QgRURJVF9LRVkgPSA3MTsgIC8vIEtleTogRyAtPiBHcmlkIHZh bHVlcwotICAvLyBjb25zdCBMRUZUX0FSUk9XX0tFWSA9IDM3OwotICAvLyBjb25zdCBSSUdIVF9B UlJPV19LRVkgPSAzOTsKLSAgLy8gY29uc3QgTU9WRV9ORVhUID0gJ3JpZ2h0JzsKIAogICBsZXQg ZGVidWdnZXJFbGVtZW50U3B5LCBldmVudCwgZGVidWdnZXJVc2VyU2hvcnRjdXRTcHk7CiAgIGRl YnVnZ2VyVXNlclNob3J0Y3V0U3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooCmRpZmYgLS1naXQg YS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL2dldF9wYW5lbF90aXRsZV9zcGVj LmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9nZXRfcGFuZWxfdGl0bGVf c3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uOGEzNDRhODQKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL2dldF9w YW5lbF90aXRsZV9zcGVjLmpzCkBAIC0wLDAgKzEsODIgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWlu IDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwg VGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHtnZXRQ YW5lbFRpdGxlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9q cy9nZXRfcGFuZWxfdGl0bGUnOworaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVl X2Zha2UnOworaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMv anMvdHJlZS90cmVlJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgn I2dldFBhbmVsVGl0bGUnLCAoKSA9PiB7CisgIGxldCBwZ0Jyb3dzZXI7CisgIGxldCB0cmVlOwor ICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICB0cmVlID0gbmV3IFRyZWVGYWtlKCk7CisgICAgcGdC cm93c2VyID0geworICAgICAgdHJlZU1lbnU6IHRyZWUsCisgICAgICBOb2RlczogeworICAgICAg ICBzZXJ2ZXI6IHsKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgICBfdHlwZTogJ3Nl cnZlcicsCisgICAgICAgIH0sCisgICAgICAgIGRhdGFiYXNlOiB7CisgICAgICAgICAgaGFzSWQ6 IHRydWUsCisgICAgICAgICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgIH0sCisgICAgICB9 LAorICAgIH07CisgIH0pOworCisgIGNvbnRleHQoJ3NlbGVjdGVkIG5vZGUgZG9lcyBub3QgYmVs b25nIHRvIGEgc2VydmVyJywgKCkgPT4geworICAgIGl0KCdyZXR1cm5zIHVuZGVmaW5lZCcsICgp ID0+IHsKKyAgICAgIGNvbnN0IHJvb3QgPSB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMScsIHtfdHlw ZTogJ3NlcnZlcl9ncm91cHMnfSk7CisgICAgICB0cmVlLmFkZENoaWxkKHJvb3QsIG5ldyBUcmVl Tm9kZSgnbGV2ZWwxLjEnLCB7X3R5cGU6ICdvdGhlcid9KSk7CisgICAgICB0cmVlLnNlbGVjdE5v ZGUoW3tpZDogJ2xldmVsMSd9XSk7CisgICAgICBleHBlY3QoZ2V0UGFuZWxUaXRsZShwZ0Jyb3dz ZXIpKS50b0JlVW5kZWZpbmVkKCk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQoJ3NlbGVj dGVkIG5vZGUgYmVsb25nIHRvIGEgc2VydmVyJywgKCkgPT4geworICAgIGNvbnRleHQoJ3NlbGVj dGVkIG5vZGUgZG9lcyBub3QgYmVsb25nIHRvIGEgZGF0YWJhc2UnLCAoKSA9PiB7CisgICAgICBp dCgncmV0dXJucyB0aGUgc2VydmVyIGxhYmVsIGFuZCB0aGUgdXNlcm5hbWUnLCAoKSA9PiB7Cisg ICAgICAgIHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywgeworICAgICAgICAgIF90eXBlOiAnc2Vy dmVyJywKKyAgICAgICAgICBkYjogJ290aGVyIGRiIGxhYmVsJywKKyAgICAgICAgICB1c2VyOiB7 bmFtZTogJ3NvbWUgdXNlciBuYW1lJ30sCisgICAgICAgICAgbGFiZWw6ICdzZXJ2ZXIgbGFiZWwn LAorICAgICAgICB9LCBbXSk7CisKKyAgICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6ICdsZXZl bDEnfV0pOworICAgICAgICBleHBlY3QoZ2V0UGFuZWxUaXRsZShwZ0Jyb3dzZXIpKQorICAgICAg ICAgIC50b0JlKCdvdGhlciBkYiBsYWJlbCBvbiBzb21lIHVzZXIgbmFtZUBzZXJ2ZXIgbGFiZWwn KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnc2VsZWN0ZWQgbm9kZSBiZWxv bmdzIHRvIGEgZGF0YWJhc2UnLCAoKSA9PiB7CisgICAgICBpdCgncmV0dXJucyB0aGUgZGF0YWJh c2UgbGFiZWwgYW5kIHRoZSB1c2VybmFtZScsICgpID0+IHsKKyAgICAgICAgY29uc3Qgcm9vdCA9 IHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywgeworICAgICAgICAgIF90eXBlOiAnc2VydmVyJywK KyAgICAgICAgICBkYjogJ290aGVyIGRiIGxhYmVsJywKKyAgICAgICAgICB1c2VyOiB7bmFtZTog J3NvbWUgdXNlciBuYW1lJ30sCisgICAgICAgICAgbGFiZWw6ICdzZXJ2ZXIgbGFiZWwnLAorICAg ICAgICB9KTsKKyAgICAgICAgY29uc3QgbGV2ZWwxID0gbmV3IFRyZWVOb2RlKCdsZXZlbDEuMScs IHsKKyAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgICAgICBsYWJlbDogJ2RiIGxh YmVsJywKKyAgICAgICAgfSk7CisgICAgICAgIHRyZWUuYWRkQ2hpbGQocm9vdCwgbGV2ZWwxKTsK KyAgICAgICAgdHJlZS5hZGRDaGlsZChsZXZlbDEsCisgICAgICAgICAgbmV3IFRyZWVOb2RlKCds ZXZlbDEuMS4xJywge190eXBlOiAndGFibGUnfSkpOworICAgICAgICB0cmVlLnNlbGVjdE5vZGUo W3tpZDogJ2xldmVsMS4xLjEnfV0pOworICAgICAgICBleHBlY3QoZ2V0UGFuZWxUaXRsZShwZ0Jy b3dzZXIpKQorICAgICAgICAgIC50b0JlKCdkYiBsYWJlbCBvbiBzb21lIHVzZXIgbmFtZUBzZXJ2 ZXIgbGFiZWwnKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X2RhdGFfc3BlYy5qcyBiL3dl Yi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hvd19kYXRhX3NwZWMuanMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjgwZDI1ZWIzCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X2RhdGFfc3BlYy5qcwpA QCAtMCwwICsxLDE3MSBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9v bHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3Jl U1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQge3Nob3dEYXRhR3JpZH0gZnJvbSAnLi4v Li4vLi4vcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19kYXRhJzsKK2ltcG9y dCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7VHJlZU5vZGV9 IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CisKK2NvbnN0IGNv bnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUoJyNzaG93X2RhdGEnLCAoKSA9PiB7CisgIGxl dCBkYXRhZ3JpZDsKKyAgbGV0IHBnQnJvd3NlcjsKKyAgbGV0IGFsZXJ0aWZ5OworICBiZWZvcmVF YWNoKCgpID0+IHsKKyAgICBhbGVydGlmeSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdhbGVydGlm eScsIFsnYWxlcnQnXSk7CisgICAgZGF0YWdyaWQgPSB7CisgICAgICBjcmVhdGVfdHJhbnNhY3Rp b246IGphc21pbmUuY3JlYXRlU3B5KCdjcmVhdGVfdHJhbnNhY3Rpb24nKSwKKyAgICB9OworICAg IHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiBuZXcgVHJlZUZha2UoKSwKKyAgICAgIE5v ZGVzOiB7CisgICAgICAgIHNlcnZlcl9ncm91cDogeworICAgICAgICAgIF90eXBlOiAnc2VydmVy X2dyb3VwJywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAgICAgc2Vy dmVyOiB7CisgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgIGhhc0lkOiB0cnVl LAorICAgICAgICB9LAorICAgICAgICBkYXRhYmFzZTogeworICAgICAgICAgIF90eXBlOiAnZGF0 YWJhc2UnLAorICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICBzY2hl bWE6IHsKKyAgICAgICAgICBfdHlwZTogJ3NjaGVtYScsCisgICAgICAgICAgaGFzSWQ6IHRydWUs CisgICAgICAgIH0sCisgICAgICAgIHZpZXc6IHsKKyAgICAgICAgICBfdHlwZTogJ3ZpZXcnLAor ICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICBjYXRhbG9nOiB7Cisg ICAgICAgICAgX3R5cGU6ICdjYXRhbG9nJywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAg ICAgfSwKKyAgICAgIH0sCisgICAgfTsKKyAgICBjb25zdCBwYXJlbnQgPSBwZ0Jyb3dzZXIudHJl ZU1lbnUuYWRkTmV3Tm9kZSgncGFyZW50Jywge190eXBlOiAncGFyZW50J30sIFtdKTsKKyAgICBj b25zdCBzZXJ2ZXJHcm91cDEgPSBuZXcgVHJlZU5vZGUoJ3NlcnZlcl9ncm91cDEnLCB7CisgICAg ICBfdHlwZTogJ3NlcnZlcl9ncm91cCcsCisgICAgICBfaWQ6IDEsCisgICAgfSk7CisgICAgcGdC cm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHBhcmVudCwgc2VydmVyR3JvdXAxKTsKKworICAgIGNv bnN0IHNlcnZlcjEgPSBuZXcgVHJlZU5vZGUoJ3NlcnZlcjEnLCB7CisgICAgICBfdHlwZTogJ3Nl cnZlcicsCisgICAgICBsYWJlbDogJ3NlcnZlcjEnLAorICAgICAgc2VydmVyX3R5cGU6ICdwZycs CisgICAgICBfaWQ6IDIsCisgICAgfSwgWydwYXJlbnQnLCAnc2VydmVyX2dyb3VwMSddKTsKKyAg ICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoc2VydmVyR3JvdXAxLCBzZXJ2ZXIxKTsKKwor ICAgIGNvbnN0IGRhdGFiYXNlMSA9IG5ldyBUcmVlTm9kZSgnZGF0YWJhc2UxJywgeworICAgICAg X3R5cGU6ICdkYXRhYmFzZScsCisgICAgICBsYWJlbDogJ2RhdGFiYXNlMScsCisgICAgICBfaWQ6 IDMsCisgICAgfSwgWydwYXJlbnQnLCAnc2VydmVyX2dyb3VwMScsICdzZXJ2ZXIxJ10pOworICAg IHBnQnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXIxLCBkYXRhYmFzZTEpOworCisgICAg Y29uc3Qgc2NoZW1hMSA9IG5ldyBUcmVlTm9kZSgnc2NoZW1hMScsIHsKKyAgICAgIF90eXBlOiAn c2NoZW1hJywKKyAgICAgIGxhYmVsOiAnc2NoZW1hMScsCisgICAgICBfaWQ6IDQsCisgICAgfSk7 CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKGRhdGFiYXNlMSwgc2NoZW1hMSk7CisK KyAgICBjb25zdCB2aWV3MSA9IG5ldyBUcmVlTm9kZSgndmlldzEnLCB7CisgICAgICBfdHlwZTog J3ZpZXcnLAorICAgICAgbGFiZWw6ICd2aWV3MScsCisgICAgICBfaWQ6IDUsCisgICAgfSwgWydw YXJlbnQnLCAnc2VydmVyX2dyb3VwMScsICdzZXJ2ZXIxJywgJ2RhdGFiYXNlMSddKTsKKyAgICBw Z0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoZGF0YWJhc2UxLCB2aWV3MSk7CisKKyAgICBjb25z dCBjYXRhbG9nMSA9IG5ldyBUcmVlTm9kZSgnY2F0YWxvZzEnLCB7CisgICAgICBfdHlwZTogJ2Nh dGFsb2cnLAorICAgICAgbGFiZWw6ICdjYXRhbG9nMScsCisgICAgICBfaWQ6IDYsCisgICAgfSwg WydwYXJlbnQnLCAnc2VydmVyX2dyb3VwMScsICdzZXJ2ZXIxJywgJ2RhdGFiYXNlMSddKTsKKyAg ICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoZGF0YWJhc2UxLCBjYXRhbG9nMSk7CisgIH0p OworCisgIGNvbnRleHQoJ2Nhbm5vdCBmaW5kIHRoZSB0cmVlIG5vZGUnLCAoKSA9PiB7CisgICAg aXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAgICAgc2hvd0Rh dGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7fSwgW3tpZDogJzEwJ31dKTsK KyAgICAgIGV4cGVjdChkYXRhZ3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24pLm5vdC50b0hhdmVCZWVu Q2FsbGVkKCk7CisgICAgfSk7CisKKyAgICBpdCgnZGlzcGxheSBhbGVydCcsICgpID0+IHsKKyAg ICAgIHNob3dEYXRhR3JpZChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwge30sIFt7aWQ6 ICcxMCd9XSk7CisgICAgICBleHBlY3QoYWxlcnRpZnkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRX aXRoKAorICAgICAgICAnRGF0YSBHcmlkIEVycm9yJywKKyAgICAgICAgJ05vIG9iamVjdCBzZWxl Y3RlZC4nCisgICAgICApOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJyZW50IG5v ZGUgaXMgbm90IHVuZGVybmVhdGggYSBzZXJ2ZXInLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90 IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlkKGRhdGFn cmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7fSwgW3tpZDogJ3BhcmVudCd9XSk7CisgICAgICBl eHBlY3QoZGF0YWdyaWQuY3JlYXRlX3RyYW5zYWN0aW9uKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgp OworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMgbm90IHVuZGVy bmVhdGggYSBzY2hlbWEgb3IgdmlldyBvciBjYXRhbG9nJywgKCkgPT4geworICAgIGl0KCdkb2Vz IG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgIHNob3dEYXRhR3JpZChk YXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwge30sIFt7aWQ6ICdkYXRhYmFzZTEnfV0pOwor ICAgICAgZXhwZWN0KGRhdGFncmlkLmNyZWF0ZV90cmFuc2FjdGlvbikubm90LnRvSGF2ZUJlZW5D YWxsZWQoKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIHVu ZGVybmVhdGggYSBzY2hlbWEnLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRy YW5zYWN0aW9uJywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dz ZXIsIGFsZXJ0aWZ5LCB7bW51aWQ6IDExfSwgW3tpZDogJ3NjaGVtYTEnfV0pOworICAgICAgZXhw ZWN0KGRhdGFncmlkLmNyZWF0ZV90cmFuc2FjdGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisg ICAgICAgICcvaW5pdGlhbGl6ZS9kYXRhZ3JpZC8xMS9zY2hlbWEvMS8yLzMvNCcsCisgICAgICAg IG51bGwsCisgICAgICAgICdmYWxzZScsCisgICAgICAgICdwZycsCisgICAgICAgICcnLAorICAg ICAgICAnc2VydmVyMSAtIGRhdGFiYXNlMSAtIHNjaGVtYTEuc2NoZW1hMScsCisgICAgICAgICcn CisgICAgICApOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMg dW5kZXJuZWF0aCBhIHZpZXcnLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRy YW5zYWN0aW9uJywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dz ZXIsIGFsZXJ0aWZ5LCB7bW51aWQ6IDExfSwgW3tpZDogJ3ZpZXcxJ31dKTsKKyAgICAgIGV4cGVj dChkYXRhZ3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAg ICAgICAnL2luaXRpYWxpemUvZGF0YWdyaWQvMTEvdmlldy8xLzIvMy81JywKKyAgICAgICAgbnVs bCwKKyAgICAgICAgJ2ZhbHNlJywKKyAgICAgICAgJ3BnJywKKyAgICAgICAgJycsCisgICAgICAg ICdzZXJ2ZXIxIC0gZGF0YWJhc2UxIC0gdmlldzEudmlldzEnLAorICAgICAgICAnJworICAgICAg KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIHVuZGVybmVh dGggYSBjYXRhbG9nJywgKCkgPT4geworICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2Fj dGlvbicsICgpID0+IHsKKyAgICAgIHNob3dEYXRhR3JpZChkYXRhZ3JpZCwgcGdCcm93c2VyLCBh bGVydGlmeSwge21udWlkOiAxMX0sIFt7aWQ6ICdjYXRhbG9nMSd9XSk7CisgICAgICBleHBlY3Qo ZGF0YWdyaWQuY3JlYXRlX3RyYW5zYWN0aW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAg ICAgJy9pbml0aWFsaXplL2RhdGFncmlkLzExL2NhdGFsb2cvMS8yLzMvNicsCisgICAgICAgIG51 bGwsCisgICAgICAgICdmYWxzZScsCisgICAgICAgICdwZycsCisgICAgICAgICcnLAorICAgICAg ICAnc2VydmVyMSAtIGRhdGFiYXNlMSAtIGNhdGFsb2cxLmNhdGFsb2cxJywKKyAgICAgICAgJycK KyAgICAgICk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbF9zcGVjLmpzIGIvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X3F1ZXJ5X3Rvb2xfc3BlYy5qcwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNjZiZDM3Y2UKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbF9zcGVj LmpzCkBAIC0wLDAgKzEsMTI1IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4u L3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7c2hvd1F1ZXJ5VG9vbH0gZnJvbSAnLi4vLi4vLi4v cGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sJzsKK2ltcG9y dCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7 CisKK2NvbnN0IGNvbnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUoJyNzaG93UXVlcnlUb29s JywgKCkgPT4geworICBsZXQgcXVlcnlUb29sOworICBsZXQgcGdCcm93c2VyOworICBsZXQgYWxl cnRpZnk7CisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIGFsZXJ0aWZ5ID0gamFzbWluZS5jcmVh dGVTcHlPYmooJ2FsZXJ0aWZ5JywgWydhbGVydCddKTsKKyAgICBxdWVyeVRvb2wgPSB7CisgICAg ICBjcmVhdGVfdHJhbnNhY3Rpb246IGphc21pbmUuY3JlYXRlU3B5KCdjcmVhdGVfdHJhbnNhY3Rp b24nKSwKKyAgICB9OworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiBuZXcgVHJl ZUZha2UoKSwKKyAgICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZlcl9ncm91cDogeworICAgICAg ICAgIF90eXBlOiAnc2VydmVyX2dyb3VwJywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAg ICAgfSwKKyAgICAgICAgc2VydmVyOiB7CisgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAg ICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICBkYXRhYmFzZTogeworICAg ICAgICAgIF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAg ICB9LAorICAgICAgfSwKKyAgICB9OworICAgIGNvbnN0IHBhcmVudCA9IHBnQnJvd3Nlci50cmVl TWVudS5hZGROZXdOb2RlKCdwYXJlbnQnLCB7X3R5cGU6ICdwYXJlbnQnfSk7CisgICAgY29uc3Qg c2VydmVyR3JvdXAxID0gIG5ldyBUcmVlTm9kZSgnc2VydmVyX2dyb3VwMScsIHsKKyAgICAgIF90 eXBlOiAnc2VydmVyX2dyb3VwJywKKyAgICAgIF9pZDogMSwKKyAgICB9LCBbJ3BhcmVudCddKTsK KyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQocGFyZW50LCBzZXJ2ZXJHcm91cDEpOwor CisgICAgY29uc3Qgc2VydmVyMSA9IG5ldyBUcmVlTm9kZSgnc2VydmVyMScsIHsKKyAgICAgIF90 eXBlOiAnc2VydmVyJywKKyAgICAgIGxhYmVsOiAnc2VydmVyMScsCisgICAgICBzZXJ2ZXJfdHlw ZTogJ3BnJywKKyAgICAgIF9pZDogMiwKKyAgICB9KTsKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUu YWRkQ2hpbGQoc2VydmVyR3JvdXAxLCBzZXJ2ZXIxKTsKKworICAgIGNvbnN0IGRhdGFiYXNlMSA9 IG5ldyAgVHJlZU5vZGUoJ2RhdGFiYXNlMScsIHsKKyAgICAgIF90eXBlOiAnZGF0YWJhc2UnLAor ICAgICAgbGFiZWw6ICdkYXRhYmFzZTEnLAorICAgICAgX2lkOiAzLAorICAgIH0pOworICAgIHBn QnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXIxLCBkYXRhYmFzZTEpOworICB9KTsKKwor ICBjb250ZXh0KCdjYW5ub3QgZmluZCB0aGUgdHJlZSBub2RlJywgKCkgPT4geworICAgIGJlZm9y ZUVhY2goKCkgPT4geworICAgICAgc2hvd1F1ZXJ5VG9vbChxdWVyeVRvb2wsIHBnQnJvd3Nlciwg YWxlcnRpZnksICcnLCBbe2lkOiAnMTAnfV0sICd0aXRsZScpOworICAgIH0pOworICAgIGl0KCdk b2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgIGV4cGVjdChxdWVy eVRvb2wuY3JlYXRlX3RyYW5zYWN0aW9uKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAgIH0p OworCisgICAgaXQoJ2Rpc3BsYXkgYWxlcnQnLCAoKSA9PiB7CisgICAgICBleHBlY3QoYWxlcnRp ZnkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAnUXVlcnkgVG9vbCBFcnJv cicsCisgICAgICAgICdObyBvYmplY3Qgc2VsZWN0ZWQuJworICAgICAgKTsKKyAgICB9KTsKKyAg fSk7CisKKyAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIG5vdCB1bmRlcm5lYXRoIGEgc2VydmVy JywgKCkgPT4geworICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+ IHsKKyAgICAgIHNob3dRdWVyeVRvb2wocXVlcnlUb29sLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCAn JywgW3tpZDogJ3BhcmVudCd9XSwgJ3RpdGxlJyk7CisgICAgICBleHBlY3QocXVlcnlUb29sLmNy ZWF0ZV90cmFuc2FjdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICB9KTsKKworICAg IGl0KCdubyBhbGVydCBpcyBkaXNwbGF5ZWQnLCAoKSA9PiB7CisgICAgICBleHBlY3QoYWxlcnRp ZnkuYWxlcnQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgfSk7CisgIH0pOworCisgIGNv bnRleHQoJ2N1cnJlbnQgbm9kZSBpcyB1bmRlcm5lYXRoIGEgc2VydmVyJywgKCkgPT4geworICAg IGNvbnRleHQoJ2N1cnJlbnQgbm9kZSBpcyBub3QgdW5kZXJuZWF0aCBhIGRhdGFiYXNlJywgKCkg PT4geworICAgICAgaXQoJ2NyZWF0ZXMgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgICAg c2hvd1F1ZXJ5VG9vbChxdWVyeVRvb2wsIHBnQnJvd3NlciwgYWxlcnRpZnksICdodHRwOi8vc29t ZXVybCcsIFt7aWQ6ICdzZXJ2ZXIxJ31dLCAndGl0bGUnKTsKKyAgICAgICAgZXhwZWN0KHF1ZXJ5 VG9vbC5jcmVhdGVfdHJhbnNhY3Rpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAg ICcvaW5pdGlhbGl6ZS9xdWVyeV90b29sLzEvMicsCisgICAgICAgICAgbnVsbCwKKyAgICAgICAg ICAndHJ1ZScsCisgICAgICAgICAgJ3BnJywKKyAgICAgICAgICAnaHR0cDovL3NvbWV1cmwnLAor ICAgICAgICAgICd0aXRsZScsCisgICAgICAgICAgJycsCisgICAgICAgICAgZmFsc2UKKyAgICAg ICAgKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnY3VycmVudCBub2RlIGlz IHVuZGVybmVhdGggYSBkYXRhYmFzZScsICgpID0+IHsKKyAgICAgIGl0KCdjcmVhdGVzIGEgdHJh bnNhY3Rpb24nLCAoKSA9PiB7CisgICAgICAgIHNob3dRdWVyeVRvb2wocXVlcnlUb29sLCBwZ0Jy b3dzZXIsIGFsZXJ0aWZ5LCAnaHR0cDovL3NvbWV1cmwnLCBbe2lkOiAnZGF0YWJhc2UxJ31dLCAn dGl0bGUnKTsKKyAgICAgICAgZXhwZWN0KHF1ZXJ5VG9vbC5jcmVhdGVfdHJhbnNhY3Rpb24pLnRv SGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICcvaW5pdGlhbGl6ZS9xdWVyeV90b29sLzEv Mi8zJywKKyAgICAgICAgICBudWxsLAorICAgICAgICAgICd0cnVlJywKKyAgICAgICAgICAncGcn LAorICAgICAgICAgICdodHRwOi8vc29tZXVybCcsCisgICAgICAgICAgJ3RpdGxlJywKKyAgICAg ICAgICAnJywKKyAgICAgICAgICBmYWxzZQorICAgICAgICApOworICAgICAgfSk7CisgICAgfSk7 CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Zha2Vf ZW5kcG9pbnRzLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9mYWtlX2VuZHBvaW50cy5q cwppbmRleCA1NGI4NmE5NC4uYzA2MGJhNzggMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvZmFrZV9lbmRwb2ludHMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlw dC9mYWtlX2VuZHBvaW50cy5qcwpAQCAtMTIsNSArMTIsMTEgQEAgZGVmaW5lKGZ1bmN0aW9uICgp IHsKICAgICAnc3RhdGljJzogJy9iYXNlL3BnYWRtaW4vc3RhdGljLzxwYXRoOmZpbGVuYW1lPics CiAgICAgJ3NxbGVkaXRvci5wb2xsJzogJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9wb2xsLzxwYXRo OnRyYW5zX2lkPicsCiAgICAgJ3NxbGVkaXRvci5xdWVyeV90b29sX3N0YXJ0JzogJy9zcWxlZGl0 b3IvcXVlcnlfdG9vbC9zdGFydC88cGF0aDp0cmFuc19pZD4nLAorICAgICdiYWNrdXAuY3JlYXRl X3NlcnZlcl9qb2InOiAgJy9iYWNrdXAvam9iLzxpbnQ6c2lkPicsCisgICAgJ2JhY2t1cC5jcmVh dGVfb2JqZWN0X2pvYic6ICAnL2JhY2t1cC9qb2IvPGludDpzaWQ+L29iamVjdCcsCisgICAgJ2Rh dGFncmlkLmluaXRpYWxpemVfZGF0YWdyaWQnOiAnL2luaXRpYWxpemUvZGF0YWdyaWQvPGludDpj bWRfdHlwZT4vPG9ial90eXBlPi88aW50OnNnaWQ+LzxpbnQ6c2lkPi88aW50OmRpZD4vPGludDpv YmpfaWQ+JywKKyAgICAnZGF0YWdyaWQuaW5pdGlhbGl6ZV9xdWVyeV90b29sJzogJy9pbml0aWFs aXplL3F1ZXJ5X3Rvb2wvPGludDpzZ2lkPi88aW50OnNpZD4nLAorICAgICdkYXRhZ3JpZC5pbml0 aWFsaXplX3F1ZXJ5X3Rvb2xfd2l0aF9kaWQnOiAnL2luaXRpYWxpemUvcXVlcnlfdG9vbC88aW50 OnNnaWQ+LzxpbnQ6c2lkPi88aW50OmRpZD4nLAorICAgICdyZXN0b3JlLmNyZWF0ZV9qb2InOiAn L3Jlc3RvcmUvam9iLzxpbnQ6c2lkPicsCiAgIH07CiB9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdy ZXNzaW9uL2phdmFzY3JpcHQvZmFrZV9tb2RlbC5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvZmFrZV9tb2RlbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYWNm YWE1MzIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Zha2Vf bW9kZWwuanMKQEAgLTAsMCArMSwyMSBAQAorZXhwb3J0IGNsYXNzIEZha2VNb2RlbCB7CisgIGNv bnN0cnVjdG9yKCkgeworICAgIHRoaXMudmFsdWVzID0ge307CisgIH0KKworICBzZXQoa2V5LCB2 YWx1ZSkgeworICAgIHRoaXMudmFsdWVzW2tleV0gPSB2YWx1ZTsKKyAgfQorCisgIGdldChrZXkp IHsKKyAgICByZXR1cm4gdGhpcy52YWx1ZXNba2V5XTsKKyAgfQorCisgIHVuc2V0KGtleSkgewor ICAgIGRlbGV0ZSB0aGlzLnZhbHVlc1trZXldOworICB9CisKKyAgdG9KU09OKCkgeworICAgIHJl dHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnZhbHVlcyk7CisgIH0KK30KZGlmZiAtLWdpdCBh L3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvbWVudS9jYW5fY3JlYXRlX3NwZWMuanMgYi93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L21lbnUvY2FuX2NyZWF0ZV9zcGVjLmpzCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi42NDIzOTYwZgotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvbWVudS9jYW5fY3JlYXRlX3NwZWMuanMKQEAgLTAsMCAr MSwxNjAgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLwor Ly8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLworCitpbXBvcnQge2NhbkNyZWF0ZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1p bi9zdGF0aWMvanMvbWVudS9jYW5fY3JlYXRlJzsKK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4u L3RyZWUvdHJlZV9mYWtlJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmli ZSgnI2NhbkNyZWF0ZScsICgpID0+IHsKKyAgbGV0IG91ckJyb3dzZXI7CisgIGxldCBkYXRhOwor ICBsZXQgdHJlZTsKKworICBjb250ZXh0KCdkYXRhIGlzIG5vdCBudWxsIGFuZCBjaGVjayBpcyBm YWxzZSAnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBkYXRhID0ge2Fj dGlvbjogJ2NyZWF0ZScsIGNoZWNrOiBmYWxzZX07CisgICAgfSk7CisgICAgaXQoJ3JldHVybnMg dHJ1ZScsICgpID0+IHsKKyAgICAgIGV4cGVjdChjYW5DcmVhdGUoe30sIHt9LCB7fSwgZGF0YSkp LnRvQmUodHJ1ZSk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQoJ2RhdGEgaXMgbm90IG51 bGwgYW5kIGNoZWNrIGlzIHRydWUnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7Cisg ICAgICBkYXRhID0ge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfTsKKyAgICB9KTsKKwor ICAgIGNvbnRleHQoJ2lzIG5vZGUgd2l0aCB0eXBlIHNjaGVtYScsICgpID0+IHsKKyAgICAgIGJl Zm9yZUVhY2goKCkgPT4geworICAgICAgICBsZXQgaGllcmFyY2h5ID0geworICAgICAgICAgIGlk OiAncm9vdCcsCisgICAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdzY2hlbWEn fSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgXSwKKyAgICAgICAgfTsKKworICAgICAgICB0 cmVlID0gVHJlZUZha2UuYnVpbGQoaGllcmFyY2h5KTsKKyAgICAgICAgb3VyQnJvd3NlciA9IHt0 cmVlTWVudTogdHJlZX07CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybnMgdHJ1ZScsICgp ID0+IHsKKyAgICAgICAgZXhwZWN0KGNhbkNyZWF0ZShvdXJCcm93c2VyLCAnY29sbC10YWJsZScs IFt7aWQ6ICdsZXZlbDInfV0sIGRhdGEpKS50b0JlKHRydWUpOworICAgICAgfSk7CisgICAgfSk7 CisKKyAgICBjb250ZXh0KCdoYXMgYW5jZXN0b3Igd2l0aCB0eXBlIHNjaGVtYScsICgpID0+IHsK KyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworCisgICAgICAgIGxldCBoaWVyYXJjaHkgPSB7Cisg ICAgICAgICAgaWQ6ICdyb290JywKKyAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAg eworICAgICAgICAgICAgICBpZDogJ2xldmVsMicsCisgICAgICAgICAgICAgIGRhdGE6IHtfdHlw ZTogJ3NjaGVtYSd9LAorICAgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgIGlkOiAnbGV2ZWwzJywKKyAgICAgICAgICAgICAgICAgIGRh dGE6IHtfdHlwZTogJ2RhdGFiYXNlJ30sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgXSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgXSwKKyAgICAgICAgfTsKKworICAgICAg ICB0cmVlID0gVHJlZUZha2UuYnVpbGQoaGllcmFyY2h5KTsKKyAgICAgICAgb3VyQnJvd3NlciA9 IHt0cmVlTWVudTogdHJlZX07CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybnMgdHJ1ZScs ICgpID0+IHsKKyAgICAgICAgZXhwZWN0KGNhbkNyZWF0ZShvdXJCcm93c2VyLCAnY29sbC10YWJs ZScsIFt7aWQ6ICdsZXZlbDMnfV0sIGRhdGEpKS50b0JlKHRydWUpOworICAgICAgfSk7CisgICAg fSk7CisKKyAgICBjb250ZXh0KCd3aGVuIHR5cGUgaXMgbm90ICJjb2xsLXRhYmxlIicsICgpID0+ IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBsZXQgaGllcmFyY2h5ID0gewor ICAgICAgICAgIGlkOiAncm9vdCcsCisgICAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAgICAgICAgICBkYXRhOiB7X3R5 cGU6ICdkYXRhYmFzZSd9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICBdLAorICAgICAgICB9 OworCisgICAgICAgIHRyZWUgPSBUcmVlRmFrZS5idWlsZChoaWVyYXJjaHkpOworICAgICAgICBv dXJCcm93c2VyID0ge3RyZWVNZW51OiB0cmVlfTsKKyAgICAgIH0pOworCisgICAgICBpdCgncmV0 dXJucyB0cnVlJywgKCkgPT4geworICAgICAgICBleHBlY3QoY2FuQ3JlYXRlKG91ckJyb3dzZXIs ICdjb2xsLXRhYmxlJywgW3tpZDogJ2xldmVsMid9XSwgZGF0YSkpLnRvQmUodHJ1ZSk7CisgICAg ICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3doZW4gdHlwZSBpcyAiY29sbC10YWJsZSIn LCAoKSA9PiB7CisgICAgICBjb250ZXh0KCd3aGVuIHBhcmVudCB0eXBlIGlzICJjYXRhbG9nIics ICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgbGV0IGhpZXJh cmNoeSA9IHsKKyAgICAgICAgICAgIGlkOiAncm9vdCcsCisgICAgICAgICAgICBjaGlsZHJlbjog WworICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAg ICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2NhdGFsb2cnfSwKKyAgICAgICAgICAgICAgICBjaGls ZHJlbjogWworICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZDogJ2xl dmVsMycsCisgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2NvbGwtdGFibGUnfSwK KyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg fSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgfTsKKworICAgICAgICAgIHRyZWUgPSBUcmVl RmFrZS5idWlsZChoaWVyYXJjaHkpOworICAgICAgICAgIG91ckJyb3dzZXIgPSB7dHJlZU1lbnU6 IHRyZWV9OworICAgICAgICB9KTsKKworICAgICAgICBpdCgncmV0dXJucyBmYWxzZScsICgpID0+ IHsKKyAgICAgICAgICBleHBlY3QoY2FuQ3JlYXRlKG91ckJyb3dzZXIsICdjb2xsLXRhYmxlJywg W3tpZDogJ2xldmVsMyd9XSwgZGF0YSkpLnRvQmUoZmFsc2UpOworICAgICAgICB9KTsKKyAgICAg IH0pOworCisgICAgICBjb250ZXh0KCd3aGVuIHBhcmVudCB0eXBlIGlzIG5vdCAiY2F0YWxvZyIn LCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIGxldCBoaWVy YXJjaHkgPSB7CisgICAgICAgICAgICBpZDogJ3Jvb3QnLAorICAgICAgICAgICAgY2hpbGRyZW46 IFsKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlkOiAnbGV2ZWwyJywKKyAgICAg ICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdkYXRhYmFzZSd9LAorICAgICAgICAgICAgICAgIGNo aWxkcmVuOiBbCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlkOiAn bGV2ZWwzJywKKyAgICAgICAgICAgICAgICAgICAgZGF0YToge190eXBlOiAnY29sbC10YWJsZSd9 LAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgXSwKKyAgICAgICAgICB9OworCisgICAgICAgICAgdHJlZSA9IFRy ZWVGYWtlLmJ1aWxkKGhpZXJhcmNoeSk7CisgICAgICAgICAgb3VyQnJvd3NlciA9IHt0cmVlTWVu dTogdHJlZX07CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdyZXR1cm5zIGZhbHNlJywgKCkg PT4geworICAgICAgICAgIGV4cGVjdChjYW5DcmVhdGUob3VyQnJvd3NlciwgJ2NvbGwtdGFibGUn LCBbe2lkOiAnbGV2ZWwzJ31dLCBkYXRhKSkudG9CZSh0cnVlKTsKKyAgICAgICAgfSk7CisgICAg ICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvbWVudS9tZW51X2VuYWJsZWRfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvbWVudS9tZW51X2VuYWJsZWRfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMC4uMDY5NjdkNzcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L21lbnUvbWVudV9lbmFibGVkX3NwZWMuanMKQEAgLTAsMCArMSwxMzEgQEAKKy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7 bWVudUVuYWJsZWR9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL21lbnUvbWVudV9l bmFibGVkJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworZGVzY3JpYmUoJyNtZW51RW5h YmxlZCcsICgpID0+IHsKKyAgbGV0IG91ckJyb3dzZXI7CisgIGJlZm9yZUVhY2goKCkgPT4gewor ICAgIGNvbnN0IHRyZWUgPSBuZXcgVHJlZUZha2UoKTsKKyAgICBvdXJCcm93c2VyID0geworICAg ICAgdHJlZU1lbnU6IHRyZWUsCisgICAgfTsKKyAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMScs IHt9LCB1bmRlZmluZWQsIFtdKTsKKyAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMS4xJywge190 eXBlOiAnY2F0YWxvZyd9LCB1bmRlZmluZWQsIFsnbGV2ZWwxJ10pOworICAgIHRyZWUuYWRkTmV3 Tm9kZSgnbGV2ZWwxLjEuMScsIHtfdHlwZTogJ2RhdGFiYXNlJ30sIHVuZGVmaW5lZCwgWydsZXZl bDEnLCAnbGV2ZWwxLjEnXSk7CisgICAgdHJlZS5hZGROZXdOb2RlKCdsZXZlbDEuMicsIHtfdHlw ZTogJ2JhbW0nfSwgdW5kZWZpbmVkLCBbJ2xldmVsMSddKTsKKyAgICB0cmVlLmFkZE5ld05vZGUo J2xldmVsMS4yLjEnLCB7CisgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgIGFsbG93Q29u bjogdHJ1ZSwKKyAgICB9LCB1bmRlZmluZWQsIFsnbGV2ZWwxJywgJ2xldmVsMS4yJ10pOworICAg IHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjIuMicsIHsKKyAgICAgIF90eXBlOiAnZGF0YWJhc2Un LAorICAgICAgYWxsb3dDb25uOiBmYWxzZSwKKyAgICB9LCB1bmRlZmluZWQsIFsnbGV2ZWwxJywg J2xldmVsMS4yJ10pOworICAgIHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjIuMycsIHsKKyAgICAg IF90eXBlOiAndGFibGUnLAorICAgIH0sIHVuZGVmaW5lZCwgWydsZXZlbDEnLCAnbGV2ZWwxLjIn XSk7CisKKyAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMicsIHt9LCB1bmRlZmluZWQsIFtdKTsK KyAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMi4xJywgbnVsbCwgdW5kZWZpbmVkLCBbJ2xldmVs MiddKTsKKyAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMi4xLjEnLCB7fSwgdW5kZWZpbmVkLCBb J2xldmVsMicsICdsZXZlbDIuMSddKTsKKyAgfSk7CisKKyAgY29udGV4dCgnV2hlbiB0aGUgY3Vy cmVudCBub2RlIGlzIGEgcm9vdCBub2RlJywgKCkgPT4geworICAgIGl0KCdyZXR1cm4gZmFsc2Un LCAoKSA9PiB7CisgICAgICBleHBlY3QobWVudUVuYWJsZWQob3VyQnJvd3Nlci50cmVlTWVudSwg W10sIHt9LCBbe2lkOiAnbGV2ZWwxJ31dKSkudG9CZShmYWxzZSk7CisgICAgfSk7CisgIH0pOwor CisgIGNvbnRleHQoJ3doZW4gY3VycmVudCBub2RlIGRvZXMgbm90IGV4aXN0JywgKCkgPT4gewor ICAgIGl0KCdyZXR1cm4gZmFsc2UnLCAoKSA9PiB7CisgICAgICBleHBlY3QobWVudUVuYWJsZWQo b3VyQnJvd3Nlci50cmVlTWVudSwgW10sIHt9LCBbe2lkOiAnYmFtbSd9XSkpLnRvQmUoZmFsc2Up OworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdwcm92aWRlZCBub2RlIGRhdGEgaXMgdW5k ZWZpbmVkJywgKCkgPT4geworICAgIGl0KCdyZXR1cm5zIGZhbHNlJywgKCkgPT4geworICAgICAg ZXhwZWN0KG1lbnVFbmFibGVkKG91ckJyb3dzZXIudHJlZU1lbnUsIFtdLCB1bmRlZmluZWQsIFt7 aWQ6ICdsZXZlbDEnfV0pKS50b0JlKGZhbHNlKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgY29udGV4 dCgncHJvdmlkZWQgbm9kZSBkYXRhIGlzIG51bGwnLCAoKSA9PiB7CisgICAgaXQoJ3JldHVybnMg ZmFsc2UnLCAoKSA9PiB7CisgICAgICBleHBlY3QobWVudUVuYWJsZWQob3VyQnJvd3Nlci50cmVl TWVudSwgW10sIG51bGwsIFt7aWQ6ICdsZXZlbDEnfV0pKS50b0JlKGZhbHNlKTsKKyAgICB9KTsK KyAgfSk7CisKKyAgY29udGV4dCgnV2hlbiB0aGUgY3VycmVudCBub2RlIGlzIG5vdCBhIHJvb3Qg bm9kZScsICgpID0+IHsKKyAgICBjb250ZXh0KCdwYXJlbnQgZGF0YSBkb2VzIG5vdCBleGlzdCcs ICgpID0+IHsKKyAgICAgIGl0KCdyZXR1cm5zIGZhbHNlJywgKCkgPT4geworICAgICAgICBleHBl Y3QobWVudUVuYWJsZWQob3VyQnJvd3Nlci50cmVlTWVudSwgW10sIHt9LCBbe2lkOiAnbGV2ZWwy LjEuMSd9XSkpLnRvQmUoZmFsc2UpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0 KCdwYXJlbnQgYXMgZGF0YScsICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ3RoZSBjdXJyZW50IG5v ZGUgdHlwZSBpcyBpbiB0aGUgc3VwcG9ydGVkIG5vZGUgdHlwZXMnLCAoKSA9PiB7CisgICAgICAg IGNvbnRleHQoJ3RoZSBwYXJlbnQgaXMgb2YgdGhlIHR5cGUgY2F0YWxvZycsICgpID0+IHsKKyAg ICAgICAgICBpdCgncmV0dXJucyBmYWxzZScsICgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdCht ZW51RW5hYmxlZChvdXJCcm93c2VyLnRyZWVNZW51LAorICAgICAgICAgICAgICBbJ3NjaGVtYSdd LAorICAgICAgICAgICAgICB7X3R5cGU6ICdzY2hlbWEnfSwKKyAgICAgICAgICAgICAgW3tpZDog J2xldmVsMS4xLjEnfV0KKyAgICAgICAgICAgICkpLnRvQmUoZmFsc2UpOworICAgICAgICAgIH0p OworICAgICAgICB9KTsKKyAgICAgICAgY29udGV4dCgnYW4gYW5jZXN0b3Igd2l0aCB0eXBlIGNh dGFsb2cgZXhpc3RzJywgKCkgPT4geworICAgICAgICAgIGl0KCdyZXR1cm5zIGZhbHNlJywgKCkg PT4geworICAgICAgICAgICAgZXhwZWN0KG1lbnVFbmFibGVkKG91ckJyb3dzZXIudHJlZU1lbnUs CisgICAgICAgICAgICAgIFsndGFibGUnXSwKKyAgICAgICAgICAgICAge190eXBlOiAndGFibGUn fSwKKyAgICAgICAgICAgICAgW3tpZDogJ2xldmVsMS4xLjEuMSd9XQorICAgICAgICAgICAgKSku dG9CZShmYWxzZSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgICBjb250ZXh0 KCd0aGUgcGFyZW50IGlzIG5vdCBvZiB0aGUgdHlwZSBjYXRhbG9nJywgKCkgPT4geworICAgICAg ICAgIGNvbnRleHQoJ2N1cnJlbnQgbm9kZSBpcyBvZiB0aGUgdHlwZSBkYXRhYmFzZScsICgpID0+ IHsKKyAgICAgICAgICAgIGNvbnRleHQoJ2N1cnJlbnQgbm9kZSBhbGxvd3MgY29ubmVjdGlvbics ICgpID0+IHsKKyAgICAgICAgICAgICAgaXQoJ3JldHVybnMgdHJ1ZScsICgpID0+IHsKKyAgICAg ICAgICAgICAgICBleHBlY3QobWVudUVuYWJsZWQob3VyQnJvd3Nlci50cmVlTWVudSwKKyAgICAg ICAgICAgICAgICAgICAgWydkYXRhYmFzZSddLAorICAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgYWxs b3dDb25uOiB0cnVlLAorICAgICAgICAgICAgICAgICAgfSwgW3tpZDogJ2xldmVsMS4yLjEnfV0p KS50b0JlKHRydWUpOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAg ICAgICAgY29udGV4dCgnY3VycmVudCBub2RlIGRvIG5vdCBhbGxvdyBjb25uZWN0aW9uJywgKCkg PT4geworICAgICAgICAgICAgICBpdCgncmV0dXJucyBmYWxzZScsICgpID0+IHsKKyAgICAgICAg ICAgICAgICBleHBlY3QobWVudUVuYWJsZWQob3VyQnJvd3Nlci50cmVlTWVudSwKKyAgICAgICAg ICAgICAgICAgICAgWydkYXRhYmFzZSddLCB7CisgICAgICAgICAgICAgICAgICAgICAgX3R5cGU6 ICdkYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAgYWxsb3dDb25uOiBmYWxzZSwKKyAg ICAgICAgICAgICAgICAgICAgfSwgW3tpZDogJ2xldmVsMS4yLjInfV0pKS50b0JlKGZhbHNlKTsK KyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAg ICAgICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMgbm90IG9mIHRoZSB0eXBlIGRhdGFiYXNlJywg KCkgPT4geworICAgICAgICAgICAgaXQoJ3JldHVybnMgdHJ1ZScsICgpID0+IHsKKyAgICAgICAg ICAgICAgZXhwZWN0KG1lbnVFbmFibGVkKG91ckJyb3dzZXIudHJlZU1lbnUsCisgICAgICAgICAg ICAgICAgICBbJ3NjaGVtYSddLCB7CisgICAgICAgICAgICAgICAgICAgIF90eXBlOiAnc2NoZW1h JywKKyAgICAgICAgICAgICAgICAgIH0sIFt7aWQ6ICdsZXZlbDEuMi4zJ31dKSkudG9CZSh0cnVl KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0p OworICAgICAgY29udGV4dCgndGhlIGN1cnJlbnQgbm9kZSB0eXBlIGlzIG5vdCBpbiB0aGUgc3Vw cG9ydGVkIG5vZGUgdHlwZXMnLCAoKSA9PiB7CisgICAgICAgIGl0KCdyZXR1cm5zIGZhbHNlJywg KCkgPT4geworICAgICAgICAgIGV4cGVjdChtZW51RW5hYmxlZChvdXJCcm93c2VyLnRyZWVNZW51 LCBbXSwge190eXBlOiAnY2F0YWxvZyd9LCBbe2lkOiAnbGV2ZWwxLjEnfV0pKS50b0JlKGZhbHNl KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdp dCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZ19zcGVj LmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9nX3Nw ZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjE1NmY1NmJiCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3RvcmVf ZGlhbG9nX3NwZWMuanMKQEAgLTAsMCArMSwyMDMgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCB7VHJlZUZha2V9 IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7UmVzdG9yZURpYWxvZ30gZnJvbSAn Li4vLi4vLi4vcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlX2RpYWxvZyc7 CisKK2NvbnN0IGNvbnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUoJ1Jlc3RvcmVEaWFsb2cn LCAoKSA9PiB7CisgIGxldCByZXN0b3JlRGlhbG9nOworICBsZXQgcGdCcm93c2VyOworICBsZXQg anF1ZXJ5U3B5OworICBsZXQgYWxlcnRpZnlTcHk7CisgIGxldCByZXN0b3JlTW9kZWxTcHk7CisK KyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgcGdCcm93c2VyID0geworICAgICAgdHJlZU1lbnU6 IG5ldyBUcmVlRmFrZSgpLAorICAgICAgTm9kZXM6IHsKKyAgICAgICAgc2VydmVyOiBqYXNtaW5l LmNyZWF0ZVNweU9iaignTm9kZVtzZXJ2ZXJdJywgWydnZXRUcmVlTm9kZUhpZXJhcmNoeSddKSwK KyAgICAgICAgZGF0YWJhc2U6IGphc21pbmUuY3JlYXRlU3B5T2JqKCdOb2RlW2RhdGFiYXNlXScs IFsnZ2V0VHJlZU5vZGVIaWVyYXJjaHknXSksCisgICAgICB9LAorICAgIH07CisgICAgcGdCcm93 c2VyLk5vZGVzLnNlcnZlci5oYXNJZCA9IHRydWU7CisgICAgcGdCcm93c2VyLk5vZGVzLmRhdGFi YXNlLmhhc0lkID0gdHJ1ZTsKKyAgICBqcXVlcnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnanF1 ZXJ5U3B5Jyk7CisgICAgcmVzdG9yZU1vZGVsU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ3Jlc3Rv cmVNb2RlbFNweScpOworCisgICAgY29uc3QgaGllcmFyY2h5ID0geworICAgICAgY2hpbGRyZW46 IFsKKyAgICAgICAgeworICAgICAgICAgIGlkOiAncm9vdCcsCisgICAgICAgICAgY2hpbGRyZW46 IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaWQ6ICdzZXJ2ZXJUcmVlTm9kZScsCisg ICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICAgICAgICBfaWQ6IDEwLAorICAgICAgICAg ICAgICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgICAgICAgICAgICBsYWJlbDogJ3NvbWUtdHJl ZS1sYWJlbCcsCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIGNoaWxkcmVuOiBbCisg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgaWQ6ICdzb21lX2RhdGFiYXNlJywK KyAgICAgICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICAgICAgICAgICAgX3R5cGU6ICdk YXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgIF9pZDogMTEsCisgICAgICAgICAgICAgICAg ICAgIGxhYmVsOiAnc29tZV9kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgIF9sYWJlbDog J3NvbWVfZGF0YWJhc2VfbGFiZWwnLAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgICB9LCB7CisgICAgICAgICAgICAgICAgICBpZDogJ2RhdGFiYXNlX3dpdGhfZXF1YWxfaW5f bmFtZScsCisgICAgICAgICAgICAgICAgICBkYXRhOiB7CisgICAgICAgICAgICAgICAgICAgIF90 eXBlOiAnZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NvbWVfZGF0YWJh c2UnLAorICAgICAgICAgICAgICAgICAgICBfbGFiZWw6ICc9c29tZV9kYXRhYmFzZV9sYWJlbCcs CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg IF0sCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZDogJ3Bw YXNTZXJ2ZXInLAorICAgICAgICAgICAgICBkYXRhOiB7CisgICAgICAgICAgICAgICAgX3R5cGU6 ICdzZXJ2ZXInLAorICAgICAgICAgICAgICAgIHNlcnZlcl90eXBlOiAncHBhcycsCisgICAgICAg ICAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAgICAgICAgIHtpZDogJ3NvbWVOb2RlVW5k ZXJuZWF0aFBQQVNTZXJ2ZXInfSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgXSwKKyAg ICB9OworCisgICAgcGdCcm93c2VyLnRyZWVNZW51ID0gVHJlZUZha2UuYnVpbGQoaGllcmFyY2h5 KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJyNkcmF3JywgKCkgPT4geworICAgIGJlZm9yZUVhY2go KCkgPT4geworICAgICAgYWxlcnRpZnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxlcnRp ZnknLCBbJ2FsZXJ0JywgJ2RpYWxvZyddKTsKKyAgICAgIGFsZXJ0aWZ5U3B5WydwZ19yZXN0b3Jl J10gPSBqYXNtaW5lLmNyZWF0ZVNweSgncGdfcmVzdG9yZScpOworICAgICAgcmVzdG9yZURpYWxv ZyA9IG5ldyBSZXN0b3JlRGlhbG9nKAorICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgIGpxdWVy eVNweSwKKyAgICAgICAgYWxlcnRpZnlTcHksCisgICAgICAgIHJlc3RvcmVNb2RlbFNweQorICAg ICAgKTsKKworICAgICAgcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlID0gamFzbWluZS5jcmVhdGVT cHkoJ2dldF9wcmVmZXJlbmNlcycpOworICAgIH0pOworCisgICAgY29udGV4dCgndGhlcmUgYXJl IG5vIGFuY2VzdG9ycyBvZiB0aGUgdHlwZSBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICBpdCgnZG9l cyBub3QgY3JlYXRlIGEgZGlhbG9nJywgKCkgPT4geworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1l bnUuc2VsZWN0Tm9kZShbe2lkOiAncm9vdCd9XSk7CisgICAgICAgIHJlc3RvcmVEaWFsb2cuZHJh dyhudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5WydwZ19yZXN0 b3JlJ10pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rp c3BsYXkgYW4gYWxlcnQgd2l0aCBhIFJlc3RvcmUgRXJyb3InLCAoKSA9PiB7CisgICAgICAgIHJl c3RvcmVEaWFsb2cuZHJhdyhudWxsLCBbe2lkOiAncm9vdCd9XSwgbnVsbCk7CisgICAgICAgIGV4 cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAg J1Jlc3RvcmUgRXJyb3InLAorICAgICAgICAgICdQbGVhc2Ugc2VsZWN0IHNlcnZlciBvciBjaGls ZCBub2RlIGZyb20gdGhlIGJyb3dzZXIgdHJlZS4nCisgICAgICAgICk7CisgICAgICB9KTsKKyAg ICB9KTsKKworICAgIGNvbnRleHQoJ3RoZXJlIGlzIGFuIGFuY2VzdG9yIG9mIHRoZSB0eXBlIHNl cnZlcicsICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ25vIHByZWZlcmVuY2UgY2FuIGJlIGZvdW5k JywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBwZ0Jyb3dz ZXIuZ2V0X3ByZWZlcmVuY2UuYW5kLnJldHVyblZhbHVlKHVuZGVmaW5lZCk7CisgICAgICAgIH0p OworCisgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBhIHBwYXMgc2VydmVyJywgKCkgPT4gewor ICAgICAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggIlJlc3RvcmUgRXJyb3IiJywgKCkg PT4geworICAgICAgICAgICAgcmVzdG9yZURpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdzZXJ2ZXJU cmVlTm9kZSd9XSwgbnVsbCk7CisgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQp LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAnUmVzdG9yZSBFcnJvcicsCisg ICAgICAgICAgICAgICdGYWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlIHBnX2Jpbl9kaXIgb2YgbW9k dWxlIHBhdGhzJworICAgICAgICAgICAgKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisK KyAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIG5vdCBhIHBwYXMgc2VydmVyJywgKCkgPT4gewor ICAgICAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggIlJlc3RvcmUgRXJyb3IiJywgKCkg PT4geworICAgICAgICAgICAgcmVzdG9yZURpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdwcGFzU2Vy dmVyJ31dLCBudWxsKTsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9I YXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICdSZXN0b3JlIEVycm9yJywKKyAgICAg ICAgICAgICAgJ0ZhaWxlZCB0byBsb2FkIHByZWZlcmVuY2UgcHBhc19iaW5fZGlyIG9mIG1vZHVs ZSBwYXRocycKKyAgICAgICAgICAgICk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg ICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3ByZWZlcmVuY2UgY2FuIGJlIGZvdW5kJywgKCkgPT4g eworICAgICAgICBjb250ZXh0KCdiaW5hcnkgZm9sZGVyIGlzIG5vdCBjb25maWd1cmVkJywgKCkg PT4geworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgcGdCcm93c2Vy LmdldF9wcmVmZXJlbmNlLmFuZC5yZXR1cm5WYWx1ZSh7fSk7CisgICAgICAgICAgfSk7CisKKyAg ICAgICAgICBjb250ZXh0KCdzZXJ2ZXIgaXMgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAg ICAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggIkNvbmZpZ3VyYXRpb24gcmVxdWlyZWQi JywgKCkgPT4geworICAgICAgICAgICAgICByZXN0b3JlRGlhbG9nLmRyYXcobnVsbCwgW3tpZDog J3NlcnZlclRyZWVOb2RlJ31dLCBudWxsKTsKKyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5 U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAnQ29uZmln dXJhdGlvbiByZXF1aXJlZCcsCisgICAgICAgICAgICAgICAgJ1BsZWFzZSBjb25maWd1cmUgdGhl IFBvc3RncmVTUUwgQmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nCisgICAg ICAgICAgICAgICk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAg IGNvbnRleHQoJ3NlcnZlciBpcyBub3QgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAg ICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggIkNvbmZpZ3VyYXRpb24gcmVxdWlyZWQiJywg KCkgPT4geworICAgICAgICAgICAgICByZXN0b3JlRGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ3Bw YXNTZXJ2ZXInfV0sIG51bGwpOworICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxl cnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICdDb25maWd1cmF0aW9u IHJlcXVpcmVkJywKKyAgICAgICAgICAgICAgICAnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgRURCIEFk dmFuY2VkIFNlcnZlciBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicKKyAg ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9 KTsKKworICAgICAgICBjb250ZXh0KCdiaW5hcnkgZm9sZGVyIGlzIGNvbmZpZ3VyZWQnLCAoKSA9 PiB7CisgICAgICAgICAgbGV0IHNweTsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAg ICAgICAgICAgIHNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdnbG9iYWxzJywgWydyZXNpemVU byddKTsKKyAgICAgICAgICAgIGFsZXJ0aWZ5U3B5WydwZ19yZXN0b3JlJ10uYW5kCisgICAgICAg ICAgICAgIC5yZXR1cm5WYWx1ZShzcHkpOworICAgICAgICAgICAgcGdCcm93c2VyLmdldF9wcmVm ZXJlbmNlLmFuZC5yZXR1cm5WYWx1ZSh7dmFsdWU6ICcvc29tZS9wYXRoJ30pOworICAgICAgICAg ICAgcGdCcm93c2VyLk5vZGVzLnNlcnZlci5sYWJlbCA9ICdzb21lLXNlcnZlci1sYWJlbCc7Cisg ICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnZGlzcGxheXMgdGhlIGRpYWxvZycsICgpID0+ IHsKKyAgICAgICAgICAgIHJlc3RvcmVEaWFsb2cuZHJhdyhudWxsLCBbe2lkOiAnc2VydmVyVHJl ZU5vZGUnfV0sIHtzZXJ2ZXI6IHRydWV9KTsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNw eVsncGdfcmVzdG9yZSddKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgJ1Jl c3RvcmUgKHNvbWUtc2VydmVyLWxhYmVsOiBzb21lLXRyZWUtbGFiZWwpJywKKyAgICAgICAgICAg ICAgW3tpZDogJ3NlcnZlclRyZWVOb2RlJ31dLAorICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgX2lkOiAxMCwKKyAgICAgICAgICAgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICAg ICAgICAgICAgbGFiZWw6ICdzb21lLXRyZWUtbGFiZWwnLAorICAgICAgICAgICAgICB9LAorICAg ICAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXMuc2VydmVyCisgICAgICAgICAgICApOworICAgICAg ICAgICAgZXhwZWN0KHNweS5yZXNpemVUbykudG9IYXZlQmVlbkNhbGxlZFdpdGgoJzY1JScsICc2 MCUnKTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRleHQoJ2RhdGFiYXNlIGxhYmVs IGNvbnRhaW4gIj0iJywgKCkgPT4geworICAgICAgICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgYWxl cnQgZGlhbG9nIHdpdGggcmVzdG9yZSBlcnJvcicsICgpID0+IHsKKyAgICAgICAgICAgICAgcmVz dG9yZURpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdkYXRhYmFzZV93aXRoX2VxdWFsX2luX25hbWUn fV0sIG51bGwpOworICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2 ZUJlZW5DYWxsZWRXaXRoKCdSZXN0b3JlIEVycm9yJywKKyAgICAgICAgICAgICAgICAnRGF0YWJh c2VzIHdpdGggPSBzeW1ib2xzIGluIHRoZSBuYW1lIGNhbm5vdCBiZSBiYWNrZWQgdXAgb3IgcmVz dG9yZWQgdXNpbmcgdGhpcyB1dGlsaXR5LicpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg fSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1n aXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2dfd3Jh cHBlcl9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3RvcmVf ZGlhbG9nX3dyYXBwZXJfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MC4uYzJhMzFkNTUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2dfd3JhcHBlcl9zcGVjLmpzCkBAIC0wLDAgKzEsNTkzIEBA CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHly aWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8K Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCitpbXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7CitpbXBv cnQge1Jlc3RvcmVEaWFsb2dXcmFwcGVyfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL3Jl c3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXInOworaW1wb3J0IE1vY2tBZGFw dGVyIGZyb20gJ2F4aW9zLW1vY2stYWRhcHRlcic7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3Mv aW5kZXgnOworaW1wb3J0IHtGYWtlTW9kZWx9IGZyb20gJy4uL2Zha2VfbW9kZWwnOworaW1wb3J0 IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlJzsK KworbGV0IGNvbnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUoJ1Jlc3RvcmVEaWFsb2dXcmFw cGVyJywgKCkgPT4geworICBsZXQganF1ZXJ5U3B5OworICBsZXQgcGdCcm93c2VyOworICBsZXQg YWxlcnRpZnlTcHk7CisgIGxldCBkaWFsb2dNb2RlbEtsYXNzU3B5OworICBsZXQgYmFja2Zvcm07 CisgIGxldCBnZW5lcmF0ZWRSZXN0b3JlTW9kZWw7CisgIGxldCByZXN0b3JlRGlhbG9nV3JhcHBl cjsKKyAgbGV0IG5vRGF0YU5vZGU7CisgIGxldCBzZXJ2ZXJUcmVlTm9kZTsKKyAgbGV0IHZpZXdT Y2hlbWE7CisgIGxldCByZXN0b3JlSlF1ZXJ5Q29udGFpbmVyU3B5OworICBsZXQgcmVzdG9yZU5v ZGVDaGlsZE5vZGVTcHk7CisgIGxldCByZXN0b3JlTm9kZTsKKworICBiZWZvcmVFYWNoKCgpID0+ IHsKKyAgICBwZ0Jyb3dzZXIgPSB7CisgICAgICB0cmVlTWVudTogbmV3IFRyZWVGYWtlKCksCisg ICAgICBOb2RlczogeworICAgICAgICBzZXJ2ZXI6IHsKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwK KyAgICAgICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogamFzbWluZS5jcmVhdGVTcHkoJ2dldFRy ZWVOb2RlSGllcmFyY2h5JyksCisgICAgICAgIH0sCisgICAgICB9LAorICAgICAga2V5Ym9hcmRO YXZpZ2F0aW9uOiBqYXNtaW5lLmNyZWF0ZVNweU9iaigna2V5Ym9hcmROYXZpZ2F0aW9uJywgWydn ZXREaWFsb2dUYWJOYXZpZ2F0b3InXSksCisgICAgfTsKKworICAgIG5vRGF0YU5vZGUgPSBwZ0Jy b3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjEnLCB1bmRlZmluZWQsIFt7aWQ6ICds ZXZlbDEnfV0pOworICAgIHNlcnZlclRyZWVOb2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmFkZE5l d05vZGUoJ2xldmVsMi4xJywgeworICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgX2lkOiAx MCwKKyAgICAgIGxhYmVsOiAnc29tZS10cmVlLWxhYmVsJywKKyAgICB9LCBbe2lkOiAnbGV2ZWwy LjEnfV0pOworICAgIGpxdWVyeVNweSA9IGphc21pbmUuY3JlYXRlU3B5KCdqcXVlcnlTcHknKTsK KyAgICBkaWFsb2dNb2RlbEtsYXNzU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2RpYWxvZ01vZGVs S2xhc3MnKTsKKyAgICBnZW5lcmF0ZWRSZXN0b3JlTW9kZWwgPSB7fTsKKyAgICB2aWV3U2NoZW1h ID0ge307CisgICAgYmFja2Zvcm0gPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYmFja2Zvcm0nLCBb J2dlbmVyYXRlVmlld1NjaGVtYScsICdEaWFsb2cnXSk7CisgICAgYmFja2Zvcm0uZ2VuZXJhdGVW aWV3U2NoZW1hLmFuZC5yZXR1cm5WYWx1ZSh2aWV3U2NoZW1hKTsKKyAgICBkaWFsb2dNb2RlbEts YXNzU3B5LmFuZC5yZXR1cm5WYWx1ZShnZW5lcmF0ZWRSZXN0b3JlTW9kZWwpOworICAgIHJlc3Rv cmVKUXVlcnlDb250YWluZXJTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaigncmVzdG9yZUpRdWVy eUNvbnRhaW5lcicsIFsnZ2V0JywgJ2F0dHInXSk7CisgICAgcmVzdG9yZUpRdWVyeUNvbnRhaW5l clNweS5nZXQuYW5kLnJldHVyblZhbHVlKHJlc3RvcmVKUXVlcnlDb250YWluZXJTcHkpOworCisg ICAgcmVzdG9yZU5vZGUgPSB7CisgICAgICBfX2ludGVybmFsOiB7CisgICAgICAgIGJ1dHRvbnM6 IFsKKyAgICAgICAgICB7fSwge30sCisgICAgICAgICAgeworICAgICAgICAgICAgZWxlbWVudDog eworICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsCisgICAgICAgICAgICB9LAorICAgICAg ICAgIH0sCisgICAgICAgIF0sCisgICAgICB9LAorICAgICAgZWxlbWVudHM6IHsKKyAgICAgICAg Ym9keTogeworICAgICAgICAgIGNoaWxkTm9kZXM6IFsKKyAgICAgICAgICAgIHt9LAorICAgICAg ICAgIF0sCisgICAgICAgIH0sCisgICAgICAgIGNvbnRlbnQ6IGphc21pbmUuY3JlYXRlU3B5T2Jq KCdjb250ZW50JywgWydhcHBlbmRDaGlsZCcsICdhdHRyJ10pLAorICAgICAgfSwKKyAgICB9Owor CisKKyAgICByZXN0b3JlTm9kZUNoaWxkTm9kZVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdz b21ldGhpbmcnLCBbJ2FkZENsYXNzJ10pOworCisgICAganF1ZXJ5U3B5LmFuZC5jYWxsRmFrZSgo c2VsZWN0b3IpID0+IHsKKyAgICAgIGlmIChzZWxlY3RvciA9PT0gJzxkaXYgY2xhc3M9XCdyZXN0 b3JlX2RpYWxvZ1wnPjwvZGl2PicpIHsKKyAgICAgICAgcmV0dXJuIHJlc3RvcmVKUXVlcnlDb250 YWluZXJTcHk7CisgICAgICB9IGVsc2UgaWYgKHNlbGVjdG9yID09PSByZXN0b3JlTm9kZS5lbGVt ZW50cy5ib2R5LmNoaWxkTm9kZXNbMF0pIHsKKyAgICAgICAgcmV0dXJuIHJlc3RvcmVOb2RlQ2hp bGROb2RlU3B5OworICAgICAgfQorICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgnI3ByZXBh cmUnLCAoKSA9PiB7CisKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGFsZXJ0aWZ5U3B5 ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5JywgWydhbGVydCcsICdkaWFsb2cnXSk7 CisgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlciA9IG5ldyBSZXN0b3JlRGlhbG9nV3JhcHBlcigK KyAgICAgICAgJzxkaXYgY2xhc3M9XCdyZXN0b3JlX2RpYWxvZ1wnPjwvZGl2PicsCisgICAgICAg ICdyZXN0b3JlRGlhbG9nVGl0bGUnLAorICAgICAgICAncmVzdG9yZScsCisgICAgICAgIGpxdWVy eVNweSwKKyAgICAgICAgcGdCcm93c2VyLAorICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAg ZGlhbG9nTW9kZWxLbGFzc1NweSwKKyAgICAgICAgYmFja2Zvcm0KKyAgICAgICk7CisgICAgICBy ZXN0b3JlRGlhbG9nV3JhcHBlciA9IE9iamVjdC5hc3NpZ24ocmVzdG9yZURpYWxvZ1dyYXBwZXIs IHJlc3RvcmVOb2RlKTsKKyAgICB9KTsKKyAgICBjb250ZXh0KCdubyB0cmVlIGVsZW1lbnQgaXMg c2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgYmFja2Zvcm0g ZGlhbG9nJywgKCkgPT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7 CisgICAgICAgIGV4cGVjdChiYWNrZm9ybS5EaWFsb2cpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7 CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc2FibGVzIHRoZSBidXR0b24gInN1Ym1pdCBidXR0 b24iIHVudGlsIGEgZmlsZW5hbWUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgIHJlc3Rv cmVEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KHJlc3RvcmVEaWFsb2dX cmFwcGVyLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkKS50b0JlKHRydWUp OworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdzZWxlY3RlZCB0cmVlIG5vZGUg aGFzIG5vIGRhdGEnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAg cGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUobm9EYXRhTm9kZS5kb21Ob2RlKTsKKyAgICAg IH0pOworCisgICAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgYmFja2Zvcm0gZGlhbG9nJywgKCkg PT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4 cGVjdChiYWNrZm9ybS5EaWFsb2cpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICB9KTsK KworICAgICAgaXQoJ2Rpc2FibGVzIHRoZSBidXR0b24gInN1Ym1pdCBidXR0b24iIHVudGlsIGEg ZmlsZW5hbWUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFw cGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KHJlc3RvcmVEaWFsb2dXcmFwcGVyLl9faW50 ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkKS50b0JlKHRydWUpOworICAgICAgfSk7 CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0cmVlIGVsZW1lbnQgaXMgc2VsZWN0ZWQnLCAoKSA9 PiB7CisgICAgICBsZXQgdHJlZUhpZXJhcmNoeUluZm9ybWF0aW9uOworICAgICAgbGV0IGRpYWxv Z1NweTsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICB0cmVlSGllcmFyY2h5SW5m b3JtYXRpb24gPSB7CisgICAgICAgICAgc2VydmVyOiB7CisgICAgICAgICAgICBfdHlwZTogJ3Nl cnZlcicsCisgICAgICAgICAgICBfaWQ6IDEwLAorICAgICAgICAgICAgcHJpb3JpdHk6IDAsCisg ICAgICAgICAgICBsYWJlbDogJ3NvbWUtdHJlZS1sYWJlbCcsCisgICAgICAgICAgfSwKKyAgICAg ICAgfTsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUoc2VydmVyVHJlZU5v ZGUuZG9tTm9kZSk7CisgICAgICAgIHBnQnJvd3Nlci5Ob2Rlc1snc2VydmVyJ10uZ2V0VHJlZU5v ZGVIaWVyYXJjaHkuYW5kCisgICAgICAgICAgLnJldHVyblZhbHVlKHRyZWVIaWVyYXJjaHlJbmZv cm1hdGlvbik7CisgICAgICAgIGRpYWxvZ1NweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCduZXdW aWV3JywgWydyZW5kZXInXSk7CisgICAgICAgIGRpYWxvZ1NweS4kZWwgPSBqYXNtaW5lLmNyZWF0 ZVNweU9iaignJGVsJywgWydmaW5kJywgJ2F0dHInXSk7CisgICAgICAgIGRpYWxvZ1NweS5tb2Rl bCA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdtb2RlbCcsIFsnb24nXSk7CisgICAgICAgIGRpYWxv Z1NweS4kZWwuZmluZC5hbmQucmV0dXJuVmFsdWUoW10pOworCisgICAgICAgIGJhY2tmb3JtLkRp YWxvZy5hbmQucmV0dXJuVmFsdWUoZGlhbG9nU3B5KTsKKyAgICAgIH0pOworCisgICAgICBpdCgn Y3JlYXRlcyBhIGJhY2tmb3JtIGRpYWxvZyBhbmQgZGlzcGxheXMgaXQnLCAoKSA9PiB7CisgICAg ICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2tm b3JtLkRpYWxvZykudG9IYXZlQmVlbkNhbGxlZFdpdGgoeworICAgICAgICAgIGVsOiByZXN0b3Jl SlF1ZXJ5Q29udGFpbmVyU3B5LAorICAgICAgICAgIG1vZGVsOiBnZW5lcmF0ZWRSZXN0b3JlTW9k ZWwsCisgICAgICAgICAgc2NoZW1hOiB2aWV3U2NoZW1hLAorICAgICAgICB9KTsKKworICAgICAg ICBleHBlY3QoZGlhbG9nU3B5LnJlbmRlcikudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgfSk7 CisKKyAgICAgIGl0KCdhZGQgYWxlcnRpZnkgY2xhc3NlcyB0byByZXN0b3JlIG5vZGUgY2hpbGRu b2RlJywgKCkgPT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7Cisg ICAgICAgIGV4cGVjdChyZXN0b3JlTm9kZUNoaWxkTm9kZVNweS5hZGRDbGFzcykKKyAgICAgICAg ICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19wcm9wZXJ0aWVz IG9ial9wcm9wZXJ0aWVzJyk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc2FibGVzIHRoZSBi dXR0b24gc3VibWl0IGJ1dHRvbiB1bnRpbCBhIGZpbGVuYW1lIGlzIHNlbGVjdGVkJywgKCkgPT4g eworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVj dChyZXN0b3JlTm9kZS5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCkudG9C ZSh0cnVlKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZ2VuZXJhdGVzIGEgbmV3IHJlc3RvcmUg bW9kZWwnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsK KyAgICAgICAgZXhwZWN0KGRpYWxvZ01vZGVsS2xhc3NTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KAorICAgICAgICAgIHtub2RlX2RhdGE6IHBnQnJvd3Nlci5Ob2Rlc1snc2VydmVyJ119LAorICAg ICAgICAgIHtub2RlX2luZm86IHRyZWVIaWVyYXJjaHlJbmZvcm1hdGlvbn0KKyAgICAgICAgKTsK KyAgICAgIH0pOworCisgICAgICBpdCgnYWRkIHRoZSBuZXcgZGlhbG9nIHRvIHRoZSByZXN0b3Jl IG5vZGUgSFRNTCcsICgpID0+IHsKKyAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIucHJlcGFy ZSgpOworICAgICAgICBleHBlY3QocmVzdG9yZU5vZGUuZWxlbWVudHMuY29udGVudC5hcHBlbmRD aGlsZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgocmVzdG9yZUpRdWVyeUNvbnRhaW5lclNweSk7Cisg ICAgICB9KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ29uQnV0dG9uQ2xpY2tlZCcs ICgpID0+IHsKKyAgICBsZXQgbmV0d29ya01vY2s7CisKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsK KyAgICAgIHBnQnJvd3Nlci5zaG93SGVscCA9IGphc21pbmUuY3JlYXRlU3B5KCdzaG93SGVscCcp OworICAgICAgbmV0d29ya01vY2sgPSBuZXcgTW9ja0FkYXB0ZXIoYXhpb3MpOworICAgICAgYWxl cnRpZnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxlcnRpZnknLCBbJ3N1Y2Nlc3MnLCAn YWxlcnQnXSk7CisgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlciA9IG5ldyBSZXN0b3JlRGlhbG9n V3JhcHBlcigKKyAgICAgICAgJzxkaXYgY2xhc3M9XCdyZXN0b3JlX2RpYWxvZ1wnPjwvZGl2Pics CisgICAgICAgICdyZXN0b3JlRGlhbG9nVGl0bGUnLAorICAgICAgICAncmVzdG9yZScsCisgICAg ICAgIGpxdWVyeVNweSwKKyAgICAgICAgcGdCcm93c2VyLAorICAgICAgICBhbGVydGlmeVNweSwK KyAgICAgICAgZGlhbG9nTW9kZWxLbGFzc1NweSwKKyAgICAgICAgYmFja2Zvcm0KKyAgICAgICk7 CisgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlciA9IE9iamVjdC5hc3NpZ24ocmVzdG9yZURpYWxv Z1dyYXBwZXIsIHJlc3RvcmVOb2RlKTsKKworICAgIH0pOworCisgICAgYWZ0ZXJFYWNoKGZ1bmN0 aW9uICgpIHsKKyAgICAgIG5ldHdvcmtNb2NrLnJlc3RvcmUoKTsKKyAgICB9KTsKKworICAgIGNv bnRleHQoJ2RpYWxvZyBoZWxwIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgpID0+IHsKKyAgICAgIGxl dCBuZXR3b3JrQ2FsbGVkOworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIG5ldHdv cmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUo c2VydmVyVHJlZU5vZGUuZG9tTm9kZSk7CisgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55KC8uKy8p LnJlcGx5KCgpID0+IHsKKyAgICAgICAgICBuZXR3b3JrQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAg ICByZXR1cm4gWzIwMCwge31dOworICAgICAgICB9KTsKKworICAgICAgICBjb25zdCBldmVudCA9 IHsKKyAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAg ICAgICAgbmFtZTogJ2RpYWxvZ19oZWxwJywKKyAgICAgICAgICAgICAgZ2V0QXR0cmlidXRlOiAo YXR0cmlidXRlTmFtZSkgPT4geworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09 PSAndXJsJykgeworICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vc29tZXVybCc7Cisg ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09PSAnbGFiZWwnKSB7Cisg ICAgICAgICAgICAgICAgICByZXR1cm4gJ3NvbWUgbGFiZWwnOworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgfSwKKyAgICAgICAg fTsKKyAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAg fSk7CisKKyAgICAgIGl0KCdkaXNwbGF5cyBoZWxwIGZvciBkaWFsb2cnLCAoKSA9PiB7CisgICAg ICAgIGV4cGVjdChwZ0Jyb3dzZXIuc2hvd0hlbHApLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAg ICAgICAgICdkaWFsb2dfaGVscCcsCisgICAgICAgICAgJ2h0dHA6Ly9zb21ldXJsJywKKyAgICAg ICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddLAorICAgICAgICAgIHNlcnZlclRyZWVOb2Rl LAorICAgICAgICAgICdzb21lIGxhYmVsJworICAgICAgICApOworICAgICAgfSk7CisKKyAgICAg IGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgcmVzdG9yZScsICgpID0+IHsKKyAgICAgICAgZXhwZWN0 KG5ldHdvcmtDYWxsZWQpLnRvQmUoZmFsc2UpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBj b250ZXh0KCdvYmplY3QgaGVscCBidXR0b24gd2FzIHByZXNzZWQnLCAoKSA9PiB7CisgICAgICBs ZXQgbmV0d29ya0NhbGxlZDsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBuZXR3 b3JrQ2FsbGVkID0gZmFsc2U7CisgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3ROb2Rl KHNlcnZlclRyZWVOb2RlLmRvbU5vZGUpOworICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgvLisv KS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgbmV0d29ya0NhbGxlZCA9IHRydWU7CisgICAgICAg ICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY29uc3QgZXZlbnQg PSB7CisgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICBlbGVtZW50OiB7CisgICAgICAg ICAgICAgIG5hbWU6ICdvYmplY3RfaGVscCcsCisgICAgICAgICAgICAgIGdldEF0dHJpYnV0ZTog KGF0dHJpYnV0ZU5hbWUpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9 PT0gJ3VybCcpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwnOwor ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PT0gJ2xhYmVsJykgewor ICAgICAgICAgICAgICAgICAgcmV0dXJuICdzb21lIGxhYmVsJzsKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH0sCisgICAgICAg IH07CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAg IH0pOworCisgICAgICBpdCgnZGlzcGxheXMgaGVscCBmb3IgZGlhbG9nJywgKCkgPT4geworICAg ICAgICBleHBlY3QocGdCcm93c2VyLnNob3dIZWxwKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAg ICAgICAgICAnb2JqZWN0X2hlbHAnLAorICAgICAgICAgICdodHRwOi8vc29tZXVybCcsCisgICAg ICAgICAgcGdCcm93c2VyLk5vZGVzWydzZXJ2ZXInXSwKKyAgICAgICAgICBzZXJ2ZXJUcmVlTm9k ZSwKKyAgICAgICAgICAnc29tZSBsYWJlbCcKKyAgICAgICAgKTsKKyAgICAgIH0pOworCisgICAg ICBpdCgnZG9lcyBub3Qgc3RhcnQgdGhlIHJlc3RvcmUnLCAoKSA9PiB7CisgICAgICAgIGV4cGVj dChuZXR3b3JrQ2FsbGVkKS50b0JlKGZhbHNlKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAg Y29udGV4dCgncmVzdG9yZSBidXR0b24gd2FzIHByZXNzZWQnLCAoKSA9PiB7CisgICAgICBsZXQg bmV0d29ya0NhbGxlZDsKKyAgICAgIGxldCBldmVudDsKKworICAgICAgY29udGV4dCgnbm8gdHJl ZSBub2RlIGlzIHNlbGVjdGVkJywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsK KyAgICAgICAgICBuZXR3b3JrQ2FsbGVkID0gZmFsc2U7CisgICAgICAgICAgbmV0d29ya01vY2su b25BbnkoLy4rLykucmVwbHkoKCkgPT4geworICAgICAgICAgICAgbmV0d29ya0NhbGxlZCA9IHRy dWU7CisgICAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAgICAgICAgIH0pOworICAgICAg ICAgIGV2ZW50ID0geworICAgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICAgICdkYXRh LWJ0bi1uYW1lJzogJ3Jlc3RvcmUnLAorICAgICAgICAgICAgICBlbGVtZW50OiB7CisgICAgICAg ICAgICAgICAgZ2V0QXR0cmlidXRlOiAoKSA9PiB7CisgICAgICAgICAgICAgICAgICByZXR1cm4g J2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgfSwKKyAgICAgICAgICB9OworICAgICAgICB9KTsKKworICAgICAgICBpdCgn ZG9lcyBub3Qgc3RhcnQgdGhlIHJlc3RvcmUnLCAoKSA9PiB7CisgICAgICAgICAgcmVzdG9yZURp YWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgIGV4cGVjdChuZXR3b3JrQ2Fs bGVkKS50b0JlKGZhbHNlKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4 dCgndHJlZSBub2RlIHNlbGVjdGVkIGhhcyBubyBkYXRhJywgKCkgPT4geworICAgICAgICBiZWZv cmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBuZXR3b3JrQ2FsbGVkID0gZmFsc2U7CisgICAgICAg ICAgbmV0d29ya01vY2sub25BbnkoLy4rLykucmVwbHkoKCkgPT4geworICAgICAgICAgICAgbmV0 d29ya0NhbGxlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAgICAg ICAgIH0pOworICAgICAgICAgIGV2ZW50ID0geworICAgICAgICAgICAgYnV0dG9uOiB7CisgICAg ICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ3Jlc3RvcmUnLAorICAgICAgICAgICAgICBlbGVt ZW50OiB7CisgICAgICAgICAgICAgICAgZ2V0QXR0cmlidXRlOiAoKSA9PiB7CisgICAgICAgICAg ICAgICAgICByZXR1cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICB9LAorICAg ICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgICB9OworICAgICAgICAgIHBn QnJvd3Nlci50cmVlTWVudS5zZWxlY3ROb2RlKG5vRGF0YU5vZGUuZG9tTm9kZSk7CisgICAgICAg IH0pOworCisgICAgICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgcmVzdG9yZScsICgpID0+IHsK KyAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAg ICAgZXhwZWN0KG5ldHdvcmtDYWxsZWQpLnRvQmUoZmFsc2UpOworICAgICAgICB9KTsKKyAgICAg IH0pOworCisgICAgICBjb250ZXh0KCd0cmVlIG5vZGUgc2VsZWN0IGhhcyBkYXRhJywgKCkgPT4g eworCisgICAgICAgIGxldCBkYXRhYmFzZVRyZWVOb2RlOworCisgICAgICAgIGJlZm9yZUVhY2go KCkgPT4geworICAgICAgICAgIGRhdGFiYXNlVHJlZU5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUu YWRkTmV3Tm9kZSgnbGV2ZWwzLjEnLCB7CisgICAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywK KyAgICAgICAgICAgIF9pZDogMTAsCisgICAgICAgICAgICBfbGFiZWw6ICdzb21lLWRhdGFiYXNl LWxhYmVsJywKKyAgICAgICAgICB9LCBbe2lkOiAnbGV2ZWwzLjEnfV0pOworICAgICAgICAgIHBn QnJvd3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXJUcmVlTm9kZSwgZGF0YWJhc2VUcmVlTm9k ZSk7CisgICAgICAgICAgcGdCcm93c2VyLk5vZGVzLmRhdGFiYXNlID0geworICAgICAgICAgICAg aGFzSWQ6IHRydWUsCisgICAgICAgICAgICBfbGFiZWw6ICdzb21lLWRhdGFiYXNlLWxhYmVsJywK KyAgICAgICAgICB9OworICAgICAgICAgIGxldCBmYWtlTW9kZWwgPSBuZXcgRmFrZU1vZGVsKCk7 CisgICAgICAgICAgZmFrZU1vZGVsLnNldCgnc29tZS1rZXknLCAnc29tZS12YWx1ZScpOworICAg ICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnZpZXcgPSB7CisgICAgICAgICAgICBtb2RlbDog ZmFrZU1vZGVsLAorICAgICAgICAgIH07CisgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNl bGVjdE5vZGUoZGF0YWJhc2VUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgICBwZ0Jyb3dzZXIu RXZlbnRzID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ3BnQnJvd3NlckV2ZW50c1NweScsIFsndHJp Z2dlciddKTsKKyAgICAgICAgICBldmVudCA9IHsKKyAgICAgICAgICAgIGJ1dHRvbjogeworICAg ICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6ICdyZXN0b3JlJywKKyAgICAgICAgICAgICAgZWxl bWVudDogeworICAgICAgICAgICAgICAgIGdldEF0dHJpYnV0ZTogKCkgPT4geworICAgICAgICAg ICAgICAgICAgcmV0dXJuICdodHRwOi8vc29tZXVybCc7CisgICAgICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgfTsKKyAgICAgICAgfSk7 CisgICAgICAgIGNvbnRleHQoJ3Jlc3RvcmUgam9iIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5JywgKCkg PT4geworICAgICAgICAgIGxldCBkYXRhU2VudFRvU2VydmVyOworICAgICAgICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgICAgICAgbmV0d29ya01vY2sub25Qb3N0KCcvcmVzdG9yZS9qb2Iv MTAnKS5yZXBseSgocmVxdWVzdCkgPT4geworICAgICAgICAgICAgICBkYXRhU2VudFRvU2VydmVy ID0gcmVxdWVzdC5kYXRhOworICAgICAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAgICAg ICAgICAgfSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnY3JlYXRlIGFuIHN1Y2Nl c3MgYWxlcnQgYm94JywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFw cGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAg ICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuc3VjY2VzcykudG9IYXZlQmVlbkNhbGxlZFdp dGgoCisgICAgICAgICAgICAgICAgJ1Jlc3RvcmUgam9iIGNyZWF0ZWQuJywKKyAgICAgICAgICAg ICAgICA1CisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg ICAgIH0sIDApOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQoJ3RyaWdnZXIgYmFja2dy b3VuZCBwcm9jZXNzJywgKGRvbmUpID0+IHsKKyAgICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFw cGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAg ICAgICAgICAgICBleHBlY3QocGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKS50b0hhdmVCZWVuQ2Fs bGVkV2l0aCgKKyAgICAgICAgICAgICAgICAncGdhZG1pbi1iZ3Byb2Nlc3M6Y3JlYXRlZCcsCisg ICAgICAgICAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIKKyAgICAgICAgICAgICAgKTsKKyAg ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgfSk7CisK KyAgICAgICAgICBpdCgnc2VuZCBjb3JyZWN0IGRhdGEgdG8gc2VydmVyJywgKGRvbmUpID0+IHsK KyAgICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAg ICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICBleHBlY3QoSlNPTi5wYXJz ZShkYXRhU2VudFRvU2VydmVyKSkudG9FcXVhbCh7CisgICAgICAgICAgICAgICAgJ3NvbWUta2V5 JzogJ3NvbWUtdmFsdWUnLAorICAgICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdzb21lLWRhdGFi YXNlLWxhYmVsJywKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIGRvbmUoKTsKKyAg ICAgICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBj b250ZXh0KCdlcnJvciBjcmVhdGluZyByZXN0b3JlIGpvYicsICgpID0+IHsKKyAgICAgICAgICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUG9zdCgnL3Jlc3Rv cmUvam9iLzEwJykucmVwbHkoKCkgPT4geworICAgICAgICAgICAgICByZXR1cm4gWzQwMCwge31d OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnY3JlYXRl cyBhbiBhbGVydCBib3gnLCAoZG9uZSkgPT4geworICAgICAgICAgICAgcmVzdG9yZURpYWxvZ1dy YXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Cisg ICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdp dGgoCisgICAgICAgICAgICAgICAgJ1Jlc3RvcmUgam9iIGZhaWxlZC4nLAorICAgICAgICAgICAg ICAgIHVuZGVmaW5lZAorICAgICAgICAgICAgICApOworICAgICAgICAgICAgICBkb25lKCk7Cisg ICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsK KyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ3NldEV4dHJhUGFyYW1ldGVycycsICgpID0+ IHsKKyAgICBsZXQgc2VsZWN0ZWROb2RlOworICAgIGxldCB0cmVlSW5mbzsKKyAgICBsZXQgbW9k ZWw7CisKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVy ID0gbmV3IFJlc3RvcmVEaWFsb2dXcmFwcGVyKAorICAgICAgICAnPGRpdiBjbGFzcz1cJ3Jlc3Rv cmVfZGlhbG9nXCc+PC9kaXY+JywKKyAgICAgICAgJ3Jlc3RvcmVEaWFsb2dUaXRsZScsCisgICAg ICAgICdyZXN0b3JlJywKKyAgICAgICAganF1ZXJ5U3B5LAorICAgICAgICBwZ0Jyb3dzZXIsCisg ICAgICAgIGFsZXJ0aWZ5U3B5LAorICAgICAgICBkaWFsb2dNb2RlbEtsYXNzU3B5LAorICAgICAg ICBiYWNrZm9ybQorICAgICAgKTsKKworICAgICAgbW9kZWwgPSBuZXcgRmFrZU1vZGVsKCk7Cisg ICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci52aWV3ID0geworICAgICAgICBtb2RlbDogbW9kZWws CisgICAgICB9OworICAgIH0pOworCisgICAgY29udGV4dCgnd2hlbiBpdCBpcyBhIGN1c3RvbSBt b2RlbCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBtb2RlbC5z ZXQoJ2N1c3RvbScsIHRydWUpOworICAgICAgICB0cmVlSW5mbyA9IHsKKyAgICAgICAgICAnZGF0 YWJhc2UnOiB7CisgICAgICAgICAgICAnX2xhYmVsJzogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAor ICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgICB9KTsKKworICAgICAgaXQoJ29ubHkgc2V0 cyB0aGUgZGF0YWJhc2UnLCAoKSA9PiB7CisgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnNl dEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgZXhwZWN0 KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAgICAgICAgICAnY3VzdG9tJzogdHJ1ZSwKKyAg ICAgICAgICAnZGF0YWJhc2UnOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgIH0pOwor ICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd3aGVuIGl0IGlzIG5vdCBhIGN1c3Rv bSBtb2RlbCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBtb2Rl bC5zZXQoJ2N1c3RvbScsIGZhbHNlKTsKKyAgICAgICAgdHJlZUluZm8gPSB7CisgICAgICAgICAg J2RhdGFiYXNlJzogeworICAgICAgICAgICAgJ19sYWJlbCc6ICdzb21lLWRhdGFiYXNlLWxhYmVs JywKKyAgICAgICAgICB9LAorICAgICAgICAgICdzY2hlbWEnOiB7CisgICAgICAgICAgICAnX2xh YmVsJzogJ3NvbWUtc2NoZW1hLWxhYmVsJywKKyAgICAgICAgICB9LAorICAgICAgICB9OworICAg ICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gc2VsZWN0ZWQgbm9kZSBpcyBhIHNjaGVtYScs ICgpID0+IHsKKyAgICAgICAgaXQoJ3NldHMgc2NoZW1hcyBvbiB0aGUgbW9kZWwnLCAoKSA9PiB7 CisgICAgICAgICAgc2VsZWN0ZWROb2RlID0gbmV3IFRyZWVOb2RlKCdzY2hlbWEnLCB7X3R5cGU6 ICdzY2hlbWEnLCBfbGFiZWw6ICdzb21lLXNjaGVtYS1sYWJlbCd9LCAnJyk7CisgICAgICAgICAg cmVzdG9yZURpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkTm9kZSwgdHJl ZUluZm8pOworICAgICAgICAgIGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7CisgICAg ICAgICAgICBjdXN0b206IGZhbHNlLAorICAgICAgICAgICAgZGF0YWJhc2U6ICdzb21lLWRhdGFi YXNlLWxhYmVsJywKKyAgICAgICAgICAgIHNjaGVtYXM6IFsnc29tZS1zY2hlbWEtbGFiZWwnXSwK KyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgn d2hlbiBzZWxlY3RlZCBub2RlIGlzIGEgdGFibGUnLCAoKSA9PiB7CisgICAgICAgIGl0KCdzZXRz IHNjaGVtYXMgYW5kIHRhYmxlIG9uIHRoZSBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgICBzZWxl Y3RlZE5vZGUgPSBuZXcgVHJlZU5vZGUoJ3RhYmxlJywge190eXBlOiAndGFibGUnLCBfbGFiZWw6 ICdzb21lLXRhYmxlLWxhYmVsJ30sICcnKTsKKyAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBl ci5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWROb2RlLCB0cmVlSW5mbyk7CisgICAgICAgICAg ZXhwZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAgICAgICAgICAgIGN1c3RvbTogZmFs c2UsCisgICAgICAgICAgICBkYXRhYmFzZTogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAg ICAgICAgc2NoZW1hczogWydzb21lLXNjaGVtYS1sYWJlbCddLAorICAgICAgICAgICAgdGFibGVz OiBbJ3NvbWUtdGFibGUtbGFiZWwnXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg ICB9KTsKKworICAgICAgY29udGV4dCgnd2hlbiBzZWxlY3RlZCBub2RlIGlzIGEgZnVuY3Rpb24n LCAoKSA9PiB7CisgICAgICAgIGl0KCdzZXRzIHNjaGVtYXMgYW5kIGZ1bmN0aW9uIG9uIHRoZSBt b2RlbCcsICgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZE5vZGUgPSBuZXcgVHJlZU5vZGUoJ2Z1 bmN0aW9uJywge190eXBlOiAnZnVuY3Rpb24nLCBfbGFiZWw6ICdzb21lLWZ1bmN0aW9uLWxhYmVs J30sICcnKTsKKyAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFtZXRl cnMoc2VsZWN0ZWROb2RlLCB0cmVlSW5mbyk7CisgICAgICAgICAgZXhwZWN0KG1vZGVsLnRvSlNP TigpKS50b0VxdWFsKHsKKyAgICAgICAgICAgIGN1c3RvbTogZmFsc2UsCisgICAgICAgICAgICBk YXRhYmFzZTogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgICAgc2NoZW1hczogWydz b21lLXNjaGVtYS1sYWJlbCddLAorICAgICAgICAgICAgZnVuY3Rpb25zOiBbJ3NvbWUtZnVuY3Rp b24tbGFiZWwnXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAg ICAgY29udGV4dCgnd2hlbiBzZWxlY3RlZCBub2RlIGlzIGFuIGluZGV4JywgKCkgPT4geworICAg ICAgICBpdCgnc2V0cyBzY2hlbWFzIGFuZCBpbmRleCBvbiB0aGUgbW9kZWwnLCAoKSA9PiB7Cisg ICAgICAgICAgc2VsZWN0ZWROb2RlID0gbmV3IFRyZWVOb2RlKCdpbmRleCcsIHtfdHlwZTogJ2lu ZGV4JywgX2xhYmVsOiAnc29tZS1pbmRleC1sYWJlbCd9LCAnJyk7CisgICAgICAgICAgcmVzdG9y ZURpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkTm9kZSwgdHJlZUluZm8p OworICAgICAgICAgIGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7CisgICAgICAgICAg ICBjdXN0b206IGZhbHNlLAorICAgICAgICAgICAgZGF0YWJhc2U6ICdzb21lLWRhdGFiYXNlLWxh YmVsJywKKyAgICAgICAgICAgIHNjaGVtYXM6IFsnc29tZS1zY2hlbWEtbGFiZWwnXSwKKyAgICAg ICAgICAgIGluZGV4ZXM6IFsnc29tZS1pbmRleC1sYWJlbCddLAorICAgICAgICAgIH0pOworICAg ICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCd3aGVuIHNlbGVjdGVkIG5vZGUg aXMgYSB0cmlnZ2VyJywgKCkgPT4geworICAgICAgICBpdCgnc2V0cyBzY2hlbWFzIGFuZCB0cmln Z2VyIG9uIHRoZSBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZE5vZGUgPSBuZXcg VHJlZU5vZGUoJ3RyaWdnZXInLCB7X3R5cGU6ICd0cmlnZ2VyJywgX2xhYmVsOiAnc29tZS10cmln Z2VyLWxhYmVsJ30sICcnKTsKKyAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5zZXRFeHRy YVBhcmFtZXRlcnMoc2VsZWN0ZWROb2RlLCB0cmVlSW5mbyk7CisgICAgICAgICAgZXhwZWN0KG1v ZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAgICAgICAgICAgIGN1c3RvbTogZmFsc2UsCisgICAg ICAgICAgICBkYXRhYmFzZTogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAgICAgc2No ZW1hczogWydzb21lLXNjaGVtYS1sYWJlbCddLAorICAgICAgICAgICAgdHJpZ2dlcnM6IFsnc29t ZS10cmlnZ2VyLWxhYmVsJ10sCisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7 CisKKyAgICAgIGNvbnRleHQoJ3doZW4gc2VsZWN0ZWQgbm9kZSBpcyBhIHRyaWdnZXJfZnVuYycs ICgpID0+IHsKKyAgICAgICAgaXQoJ3NldHMgc2NoZW1hcyBhbmQgdHJpZ2dlcl9mdW5jIG9uIHRo ZSBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZE5vZGUgPSBuZXcgVHJlZU5vZGUo J3RyaWdnZXJfZnVuYycsIHtfdHlwZTogJ3RyaWdnZXJfZnVuYycsIF9sYWJlbDogJ3NvbWUtdHJp Z2dlcl9mdW5jLWxhYmVsJ30sICcnKTsKKyAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5z ZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWROb2RlLCB0cmVlSW5mbyk7CisgICAgICAgICAgZXhw ZWN0KG1vZGVsLnRvSlNPTigpKS50b0VxdWFsKHsKKyAgICAgICAgICAgIGN1c3RvbTogZmFsc2Us CisgICAgICAgICAgICBkYXRhYmFzZTogJ3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICAg ICAgc2NoZW1hczogWydzb21lLXNjaGVtYS1sYWJlbCddLAorICAgICAgICAgICAgdHJpZ2dlcl9m dW5jczogWydzb21lLXRyaWdnZXJfZnVuYy1sYWJlbCddLAorICAgICAgICAgIH0pOworICAgICAg ICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zY2hlbWEvY2FuX2Ryb3BfY2hpbGRfc3BlYy5qcyBiL3dlYi9y ZWdyZXNzaW9uL2phdmFzY3JpcHQvc2NoZW1hL2Nhbl9kcm9wX2NoaWxkX3NwZWMuanMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjQ0MDNiMjc0Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zY2hlbWEvY2FuX2Ryb3BfY2hpbGRfc3BlYy5q cwpAQCAtMCwwICsxLDgyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7Y2FuRHJvcENoaWxkfSBmcm9tICcu Li8uLi8uLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3N0YXRpYy9qcy9jYW5fZHJvcF9jaGlsZCc7CitpbXBvcnQge1RyZWVGYWtlfSBmcm9t ICcuLi90cmVlL3RyZWVfZmFrZSc7CisKK2xldCBjb250ZXh0ID0gZGVzY3JpYmU7CisKK2Rlc2Ny aWJlKCdjYW5fZHJvcF9jaGlsZCcsICgpID0+IHsKKworICBsZXQgYnJvd3NlcjsKKyAgbGV0IGl0 ZW1EYXRhOworICBsZXQgaXRlbTsKKworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBicm93c2Vy ID0geworICAgICAgdHJlZU1lbnU6IG5ldyBUcmVlRmFrZSgpLAorICAgIH07CisgICAgaXRlbSA9 IFtdOworICAgIGJyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbm9kZTEnLCB7X3R5cGU6ICdz Y2hlbWEnfSwgW3tpZDogJ25vZGUxJ31dLCBbXSk7CisgICAgYnJvd3Nlci50cmVlTWVudS5hZGRO ZXdOb2RlKCdub2RlMS4xJywge190eXBlOiAnZGF0YWJhc2UnfSwgW3tpZDogJ25vZGUxLjEnfV0s IFsnbm9kZTEnXSk7CisgICAgYnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdub2RlMicsIHtf dHlwZTogJ2NhdGFsb2cnfSwgW3tpZDogJ25vZGUyJ31dLCBbXSk7CisgICAgYnJvd3Nlci50cmVl TWVudS5hZGROZXdOb2RlKCdub2RlMi4xJywge190eXBlOiAndGFibGUnfSwgW3tpZDogJ25vZGUy LjEnfV0sIFsnbm9kZTInXSk7CisgICAgYnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdub2Rl MycsIHtfdHlwZTogJ2Z1bmN0aW9uJ30sIFt7aWQ6ICdub2RlMyd9XSwgW10pOworICAgIGJyb3dz ZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbm9kZTMuMScsIHtfdHlwZTogJ3Byb2NlZHVyZSd9LCBb e2lkOiAnbm9kZTMuMSd9XSwgWydub2RlMyddKTsKKyAgfSk7CisKKyAgY29udGV4dCgnd2hlbiBj dXJyZW50IG5vZGUgaXMgb2YgdGhlIHR5cGUgc2NoZW1hJywgKCkgPT4geworICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgaXRlbURhdGEgPSB7CisgICAgICAgIF90eXBlOiAnc2NoZW1hJywK KyAgICAgIH07CisgICAgICBpdGVtID0gW3tpZDogJ25vZGUxJ31dOworICAgIH0pOworCisgICAg aXQoJ3JldHVybnMgdHJ1ZScsICgpID0+IHsKKyAgICAgIGxldCBib29sID0gY2FuRHJvcENoaWxk KGJyb3dzZXIsIGl0ZW1EYXRhLCBpdGVtKTsKKyAgICAgIGV4cGVjdChib29sKS50b0JlKHRydWUp OworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCd3aGVuIGEgcGFyZW50IG9mIHRoZSBjdXJy ZW50IG5vZGUgaXMgYSBzY2hlbWEnLCAoKSA9PiB7CisgICAgaXQoJ3JldHVybnMgdHJ1ZScsICgp ID0+IHsKKyAgICAgIGl0ZW1EYXRhID0geworICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAg ICAgIH07CisgICAgICBpdGVtID0gW3tpZDogJ25vZGUxLjEnfV07CisgICAgICBsZXQgYm9vbCA9 IGNhbkRyb3BDaGlsZChicm93c2VyLCBpdGVtRGF0YSwgaXRlbSk7CisgICAgICBleHBlY3QoYm9v bCkudG9CZSh0cnVlKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgY29udGV4dCgnd2hlbiBhIHBhcmVu dCBvZiB0aGUgY3VycmVudCBub2RlIGlzIGEgY2F0YWxvZycsICgpID0+IHsKKyAgICBpdCgncmV0 dXJucyBmYWxzZScsICgpID0+IHsKKyAgICAgIGl0ZW1EYXRhPSB7CisgICAgICAgIF90eXBlOiAn dGFibGUnLAorICAgICAgfTsKKyAgICAgIGl0ZW0gPSBbe2lkOiAnbm9kZTIuMSd9XTsKKworICAg ICAgbGV0IGJvb2wgPSBjYW5Ecm9wQ2hpbGQoYnJvd3NlciwgaXRlbURhdGEsIGl0ZW0pOworICAg ICAgZXhwZWN0KGJvb2wpLnRvQmUoZmFsc2UpOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0 KCd3aGVuIGEgcGFyZW50IG9mIHRoZSBjdXJyZW50IG5vZGUgaXMgbm90IGNhdGFsb2cgbm9yIHNj aGVtYScsICgpID0+IHsKKyAgICBpdCgncmV0dXJucyB0cnVlJywgKCkgPT4geworICAgICAgaXRl bURhdGEgPSB7CisgICAgICAgIF90eXBlOiAncHJvY2VkdXJlJywKKyAgICAgIH07CisgICAgICBp dGVtID0gW3tpZDogJ25vZGUzLjEnfV07CisKKyAgICAgIGxldCBib29sID0gY2FuRHJvcENoaWxk KGJyb3dzZXIsIGl0ZW1EYXRhLCBpdGVtKTsKKyAgICAgIGV4cGVjdChib29sKS50b0JlKHRydWUp OworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC9zcWxlZGl0b3IvZmlsdGVyX2RpYWxvZ19zcGVjcy5qcyBiL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvc3FsZWRpdG9yL2ZpbHRlcl9kaWFsb2dfc3BlY3MuanMKaW5kZXggZWQ3N2RmZjUu LmNlYTc1ZTZiIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRv ci9maWx0ZXJfZGlhbG9nX3NwZWNzLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv c3FsZWRpdG9yL2ZpbHRlcl9kaWFsb2dfc3BlY3MuanMKQEAgLTcsMTAgKzcsOCBAQAogLy8KIC8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCiBpbXBvcnQgZmlsdGVyRGlhbG9nIGZyb20gJ3NvdXJjZXMvc3FsZWRp dG9yL2ZpbHRlcl9kaWFsb2cnOwotLy8gaW1wb3J0IGZpbHRlckRpYWxvZ01vZGVsIGZyb20gJ3Nv dXJjZXMvc3FsZWRpdG9yL2ZpbHRlcl9kaWFsb2dfbW9kZWwnOwogCiBkZXNjcmliZSgnZmlsdGVy RGlhbG9nJywgKCkgPT4gewotICBqYXNtaW5lLmNyZWF0ZVNweSgnc3FsRWRpdG9yQ29udHJvbGxl cicpOwogICBkZXNjcmliZSgnZmlsdGVyRGlhbG9nJywgKCkgPT4gewogICAgIGRlc2NyaWJlKCd3 aGVuIHVzaW5nIGZpbHRlciBkaWFsb2cnLCAoKSA9PiB7CiAgICAgICBiZWZvcmVFYWNoKCgpID0+ IHsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdGFibGUvZW5hYmxlX2Rp c2FibGVfdHJpZ2dlcnNfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdGFibGUv ZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnNfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMC4uN2JkZDI4NGUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L3RhYmxlL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJzX3NwZWMuanMKQEAgLTAsMCAr MSwyNzEgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLwor Ly8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KKworaW1wb3J0IE1vY2tBZGFwdGVyIGZyb20gJ2F4aW9zLW1vY2stYWRh cHRlcic7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MvaW5kZXgnOworaW1wb3J0IHsKKyAgZW5h YmxlVHJpZ2dlcnMsCisgIGRpc2FibGVUcmlnZ2VycywKK30gZnJvbSAnLi4vLi4vLi4vcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv c3RhdGljL2pzL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJzJzsKK2ltcG9ydCB7VHJlZUZha2V9IGZy b20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uLy4u L3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CisKK2Rlc2NyaWJlKCcjZW5hYmxlVHJpZ2dl cnMnLCAoKSA9PiB7CisgIGxldCBuZXR3b3JrTW9jazsKKyAgbGV0IHRyZWU7CisgIGxldCBhbGVy dGlmeTsKKyAgbGV0IGdlbmVyYXRlVXJsU3B5OworICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBu ZXR3b3JrTW9jayA9IG5ldyBNb2NrQWRhcHRlcihheGlvcyk7CisgICAgdHJlZSA9IG5ldyBUcmVl RmFrZSgpOworICAgIGNvbnN0IHNlcnZlcjEgPSB0cmVlLmFkZE5ld05vZGUoJ3NlcnZlcjEnLCB7 X2lkOiAxfSwgWyc8bGk+c2VydmVyMTwvbGk+J10pOworICAgIGNvbnN0IGRhdGFiYXNlMSA9IHRy ZWUuYWRkTmV3Tm9kZSgnZGF0YWJhc2UxJywge190eXBlOiAnZGF0YWJhc2UnfSwgWyc8bGk+ZGF0 YWJhc2UxPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZChzZXJ2ZXIxLCBkYXRhYmFzZTEpOwor CisgICAgY29uc3Qgc2NoZW1hMSA9IHRyZWUuYWRkTmV3Tm9kZSgnc2NoZW1hMScsIHtfdHlwZTog J3NjaGVtYSd9LCBbJzxsaT5zY2hlbWExPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZChkYXRh YmFzZTEsIHNjaGVtYTEpOworCisgICAgY29uc3QgdGFibGUxID0gdHJlZS5hZGROZXdOb2RlKCd0 YWJsZTEnLCB7X3R5cGU6ICd0YWJsZSd9LCBbJzxsaT50YWJsZTE8L2xpPiddKTsKKyAgICB0cmVl LmFkZENoaWxkKHNjaGVtYTEsIHRhYmxlMSk7CisKKyAgICBjb25zdCBjb2x1bW4xID0gdHJlZS5h ZGROZXdOb2RlKCdjb2x1bW4xJywge190eXBlOiAnY29sdW1uJ30sIFsnPGxpPmNvbHVtbjE8L2xp PiddKTsKKyAgICB0cmVlLmFkZENoaWxkKHRhYmxlMSwgY29sdW1uMSk7CisKKyAgICBjb25zdCB0 YWJsZU5vRGF0YSA9IHRyZWUuYWRkTmV3Tm9kZSgndGFibGUtbm8tZGF0YScsIHVuZGVmaW5lZCwg Wyc8bGk+dGFibGUtbm8tZGF0YTwvbGk+J10pOworICAgIHRyZWUuYWRkQ2hpbGQoc2NoZW1hMSwg dGFibGVOb0RhdGEpOworCisgICAgYWxlcnRpZnkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxl cnRpZnknLCBbJ3N1Y2Nlc3MnLCAnZXJyb3InXSk7CisgICAgZ2VuZXJhdGVVcmxTcHkgPSBqYXNt aW5lLmNyZWF0ZVNweSgnZ2VuZXJhdGVVcmwnKTsKKyAgICBnZW5lcmF0ZVVybFNweS5hbmQucmV0 dXJuVmFsdWUoJy9zb21lL3BsYWNlJyk7CisgIH0pOworCisgIGRlc2NyaWJlKCdubyBub2RlIGlz IHNlbGVjdGVkJywgKCkgPT4geworICAgIGl0KCdkb2VzIG5vdCBzZW5kIHRoZSByZXF1ZXN0IHRv IHRoZSBiYWNrZW5kJywgKGRvbmUpID0+IHsKKyAgICAgIG5ldHdvcmtNb2NrLm9uQW55KCcuKicp LnJlcGx5KDIwMCwgKCkgPT4geworICAgICAgfSk7CisKKyAgICAgIHNldFRpbWVvdXQoKCkgPT4g eworICAgICAgICBleHBlY3QoZW5hYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRl VXJsU3B5LCB7fSkpLnRvQmUoZmFsc2UpOworICAgICAgICBkb25lKCk7CisgICAgICB9LCAwKTsK KyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ2Egbm9kZSBpcyBzZWxlY3RlZCcsICgpID0+ IHsKKyAgICBkZXNjcmliZSgnbm9kZSBhcyBubyBkYXRhJywgKCkgPT4geworICAgICAgaXQoJ2Rv ZXMgbm90IHNlbmQgdGhlIHJlcXVlc3QgdG8gdGhlIGJhY2tlbmQnLCAoKSA9PiB7CisgICAgICAg IHRyZWUuc2VsZWN0Tm9kZShbe2lkOiAndGFibGUtbm8tZGF0YSd9XSk7CisKKyAgICAgICAgbmV0 d29ya01vY2sub25BbnkoJy4qJykucmVwbHkoMjAwLCAoKSA9PiB7CisgICAgICAgIH0pOworCisg ICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgIGV4cGVjdChlbmFibGVUcmlnZ2Vy cyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KSkudG9CZShmYWxzZSk7CisgICAg ICAgIH0sIDApOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgnbm9kZSBhcyAg ZGF0YScsICgpID0+IHsKKyAgICAgIGRlc2NyaWJlKCdiYWNrZW5kIHJlc3BvbmRzIHdpdGggc3Vj Y2VzcycsICgpID0+IHsKKyAgICAgICAgbGV0IG5ldHdvcmtNb2NrQ2FsbGVkV2l0aDsKKyAgICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgbmV0d29ya01vY2tDYWxsZWRXaXRoID0g ZmFsc2U7CisgICAgICAgICAgbmV0d29ya01vY2sub25QdXQoLy4qLykucmVwbHkoKGNvbmZpZ3Vy YXRpb24pID0+IHsKKyAgICAgICAgICAgIG5ldHdvcmtNb2NrQ2FsbGVkV2l0aCA9IGNvbmZpZ3Vy YXRpb247CisgICAgICAgICAgICByZXR1cm4gWzIwMCwgeworICAgICAgICAgICAgICBzdWNjZXNz OiAxLAorICAgICAgICAgICAgICBpbmZvOiAnc29tZSBpbmZvcm1hdGlvbicsCisgICAgICAgICAg ICB9XTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2Rpc3BsYXlz IGFuIGFsZXJ0IGJveCB3aXRoIHN1Y2Nlc3MnLCAoZG9uZSkgPT4geworICAgICAgICAgIHRyZWUu c2VsZWN0Tm9kZShbe2lkOiAndGFibGUxJ31dKTsKKyAgICAgICAgICBlbmFibGVUcmlnZ2Vycyh0 cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KTsKKyAgICAgICAgICBzZXRUaW1lb3V0 KCgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeS5zdWNjZXNzKS50b0hhdmVCZWVu Q2FsbGVkV2l0aCgnc29tZSBpbmZvcm1hdGlvbicpOworICAgICAgICAgICAgZG9uZSgpOworICAg ICAgICAgIH0sIDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgncmVsb2FkcyB0aGUgbm9k ZScsIChkb25lKSA9PiB7CisgICAgICAgICAgZW5hYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnks IGdlbmVyYXRlVXJsU3B5LCB7aXRlbTogW3tpZDogJ3RhYmxlMSd9XX0pOworICAgICAgICAgIHNl dFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KHRyZWUuc2VsZWN0ZWQoKSkudG9F cXVhbChbJzxsaT50YWJsZTE8L2xpPiddKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg ICB9LCAyMCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdjYWxsIGJhY2tlbmQgd2l0aCB0 aGUgY29ycmVjdCBwYXJhbWV0ZXJzJywgKGRvbmUpID0+IHsKKyAgICAgICAgICBlbmFibGVUcmln Z2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHtpdGVtOiBbe2lkOiAndGFibGUx J31dfSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBleHBlY3Qo bmV0d29ya01vY2tDYWxsZWRXaXRoLmRhdGEpLnRvRXF1YWwoSlNPTi5zdHJpbmdpZnkoe2VuYWJs ZTogJ3RydWUnfSkpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgIH0sIDApOworICAg ICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBkZXNjcmliZSgnYmFja2VuZCByZXNwb25kcyB3 aXRoIGVycm9yJywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAg ICBuZXR3b3JrTW9jay5vblB1dCgvLiovKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgICByZXR1 cm4gWzUwMCwgeworICAgICAgICAgICAgICBzdWNjZXNzOiAwLAorICAgICAgICAgICAgICBlcnJv cm1zZzogJ3NvbWUgZXJyb3IgbWVzc2FnZScsCisgICAgICAgICAgICB9XTsKKyAgICAgICAgICB9 KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2Rpc3BsYXlzIGFuIGVycm9yIGFsZXJ0Jywg KGRvbmUpID0+IHsKKyAgICAgICAgICB0cmVlLnNlbGVjdE5vZGUoW3tpZDogJ3RhYmxlMSd9XSk7 CisgICAgICAgICAgZW5hYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5 LCB7fSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBleHBlY3Qo YWxlcnRpZnkuZXJyb3IpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdzb21lIGVycm9yIG1lc3NhZ2Un KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSk7CisK KyAgICAgICAgaXQoJ3VubG9hZCB0aGUgbm9kZScsIChkb25lKSA9PiB7CisgICAgICAgICAgZW5h YmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5LCB7aXRlbTogW3tpZDog J3RhYmxlMSd9XX0pOworCisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAg ICBleHBlY3QodHJlZS5maW5kTm9kZUJ5RG9tRWxlbWVudChbe2lkOiAndGFibGUxJ31dKS5jaGls ZHJlbi5sZW5ndGgpLnRvQmUoMCk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgfSwg MjApOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOworCitkZXNj cmliZSgnI2Rpc2FibGVUcmlnZ2VycycsICgpID0+IHsKKyAgbGV0IG5ldHdvcmtNb2NrOworICBs ZXQgdHJlZTsKKyAgbGV0IGFsZXJ0aWZ5OworICBsZXQgZ2VuZXJhdGVVcmxTcHk7CisgIGJlZm9y ZUVhY2goKCkgPT4geworICAgIG5ldHdvcmtNb2NrID0gbmV3IE1vY2tBZGFwdGVyKGF4aW9zKTsK KyAgICB0cmVlID0gbmV3IFRyZWVGYWtlKCk7CisgICAgY29uc3Qgc2VydmVyMSA9IHRyZWUuYWRk TmV3Tm9kZSgnc2VydmVyMScsIHtfaWQ6IDF9LCBbJzxsaT5zZXJ2ZXIxPC9saT4nXSk7CisgICAg Y29uc3QgZGF0YWJhc2UxID0gbmV3IFRyZWVOb2RlKCdkYXRhYmFzZTEnLCB7X3R5cGU6ICdkYXRh YmFzZSd9LCBbJzxsaT5kYXRhYmFzZTE8L2xpPiddKTsKKyAgICB0cmVlLmFkZENoaWxkKHNlcnZl cjEsIGRhdGFiYXNlMSk7CisKKyAgICBjb25zdCBzY2hlbWExID0gbmV3IFRyZWVOb2RlKCdzY2hl bWExJywge190eXBlOiAnc2NoZW1hJ30sIFsnPGxpPnNjaGVtYTE8L2xpPiddKTsKKyAgICB0cmVl LmFkZENoaWxkKGRhdGFiYXNlMSwgc2NoZW1hMSk7CisKKyAgICBjb25zdCB0YWJsZTEgPSBuZXcg VHJlZU5vZGUoJ3RhYmxlMScsIHtfdHlwZTogJ3RhYmxlJ30sIFsnPGxpPnRhYmxlMTwvbGk+J10p OworICAgIHRyZWUuYWRkQ2hpbGQoc2NoZW1hMSwgdGFibGUxKTsKKworICAgIGNvbnN0IGNvbHVt bjEgPSBuZXcgVHJlZU5vZGUoJ2NvbHVtbjEnLCB7X3R5cGU6ICdjb2x1bW4nfSwgWyc8bGk+Y29s dW1uMTwvbGk+J10pOworICAgIHRyZWUuYWRkQ2hpbGQodGFibGUxLCBjb2x1bW4xKTsKKworICAg IGNvbnN0IHRhYmxlTm9EYXRhID0gbmV3IFRyZWVOb2RlKCd0YWJsZS1uby1kYXRhJywgdW5kZWZp bmVkLCBbJzxsaT50YWJsZS1uby1kYXRhPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZChzY2hl bWExLCB0YWJsZU5vRGF0YSk7CisKKyAgICBhbGVydGlmeSA9IGphc21pbmUuY3JlYXRlU3B5T2Jq KCdhbGVydGlmeScsIFsnc3VjY2VzcycsICdlcnJvciddKTsKKyAgICBnZW5lcmF0ZVVybFNweSA9 IGphc21pbmUuY3JlYXRlU3B5KCdnZW5lcmF0ZVVybCcpOworICAgIGdlbmVyYXRlVXJsU3B5LmFu ZC5yZXR1cm5WYWx1ZSgnL3NvbWUvcGxhY2UnKTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ25vIG5v ZGUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IHNlbmQgdGhlIHJlcXVl c3QgdG8gdGhlIGJhY2tlbmQnLCAoZG9uZSkgPT4geworICAgICAgbmV0d29ya01vY2sub25Bbnko Jy4qJykucmVwbHkoMjAwLCAoKSA9PiB7CisgICAgICB9KTsKKworICAgICAgc2V0VGltZW91dCgo KSA9PiB7CisgICAgICAgIGV4cGVjdChkaXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdl bmVyYXRlVXJsU3B5LCB7fSkpLnRvQmUoZmFsc2UpOworICAgICAgICBkb25lKCk7CisgICAgICB9 LCAwKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ2Egbm9kZSBpcyBzZWxlY3RlZCcs ICgpID0+IHsKKyAgICBkZXNjcmliZSgnbm9kZSBhcyBubyBkYXRhJywgKCkgPT4geworICAgICAg aXQoJ2RvZXMgbm90IHNlbmQgdGhlIHJlcXVlc3QgdG8gdGhlIGJhY2tlbmQnLCAoKSA9PiB7Cisg ICAgICAgIHRyZWUuc2VsZWN0Tm9kZShbe2lkOiAndGFibGUtbm8tZGF0YSd9XSk7CisKKyAgICAg ICAgbmV0d29ya01vY2sub25BbnkoJy4qJykucmVwbHkoMjAwLCAoKSA9PiB7CisgICAgICAgIH0p OworCisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgIGV4cGVjdChkaXNhYmxl VHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5LCB7fSkpLnRvQmUoZmFsc2Up OworICAgICAgICB9LCAwKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ25v ZGUgYXMgIGRhdGEnLCAoKSA9PiB7CisgICAgICBkZXNjcmliZSgnYmFja2VuZCByZXNwb25kcyB3 aXRoIHN1Y2Nlc3MnLCAoKSA9PiB7CisgICAgICAgIGxldCBuZXR3b3JrTW9ja0NhbGxlZFdpdGg7 CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIG5ldHdvcmtNb2NrQ2FsbGVk V2l0aCA9IGZhbHNlOworICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUHV0KC8uKi8pLnJlcGx5KChj b25maWd1cmF0aW9uKSA9PiB7CisgICAgICAgICAgICBuZXR3b3JrTW9ja0NhbGxlZFdpdGggPSBj b25maWd1cmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIFsyMDAsIHsKKyAgICAgICAgICAgICAg c3VjY2VzczogMSwKKyAgICAgICAgICAgICAgaW5mbzogJ3NvbWUgaW5mb3JtYXRpb24nLAorICAg ICAgICAgICAgfV07CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdk aXNwbGF5cyBhbiBhbGVydCBib3ggd2l0aCBzdWNjZXNzJywgKGRvbmUpID0+IHsKKyAgICAgICAg ICB0cmVlLnNlbGVjdE5vZGUoW3tpZDogJ3RhYmxlMSd9XSk7CisgICAgICAgICAgZGlzYWJsZVRy aWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge30pOworICAgICAgICAgIHNl dFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5LnN1Y2Nlc3MpLnRv SGF2ZUJlZW5DYWxsZWRXaXRoKCdzb21lIGluZm9ybWF0aW9uJyk7CisgICAgICAgICAgICBkb25l KCk7CisgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdyZWxvYWRz IHRoZSBub2RlJywgKGRvbmUpID0+IHsKKyAgICAgICAgICBkaXNhYmxlVHJpZ2dlcnModHJlZSwg YWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5LCB7aXRlbTogW3tpZDogJ3RhYmxlMSd9XX0pOworICAg ICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KHRyZWUuc2VsZWN0 ZWQoKSkudG9FcXVhbChbJzxsaT50YWJsZTE8L2xpPiddKTsKKyAgICAgICAgICAgIGRvbmUoKTsK KyAgICAgICAgICB9LCAyMCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdjYWxsIGJhY2tl bmQgd2l0aCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzJywgKGRvbmUpID0+IHsKKyAgICAgICAgICBk aXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5LCB7aXRlbTogW3tp ZDogJ3RhYmxlMSd9XX0pOworICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAg ICAgZXhwZWN0KG5ldHdvcmtNb2NrQ2FsbGVkV2l0aC5kYXRhKS50b0VxdWFsKEpTT04uc3RyaW5n aWZ5KHtlbmFibGU6ICdmYWxzZSd9KSk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg fSwgMCk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGRlc2NyaWJlKCdiYWNrZW5k IHJlc3BvbmRzIHdpdGggZXJyb3InLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4g eworICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUHV0KC8uKi8pLnJlcGx5KCgpID0+IHsKKyAgICAg ICAgICAgIHJldHVybiBbNTAwLCB7CisgICAgICAgICAgICAgIHN1Y2Nlc3M6IDAsCisgICAgICAg ICAgICAgIGVycm9ybXNnOiAnc29tZSBlcnJvciBtZXNzYWdlJywKKyAgICAgICAgICAgIH1dOwor ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnZGlzcGxheXMgYW4gZXJy b3IgYWxlcnQnLCAoZG9uZSkgPT4geworICAgICAgICAgIHRyZWUuc2VsZWN0Tm9kZShbe2lkOiAn dGFibGUxJ31dKTsKKyAgICAgICAgICBkaXNhYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdl bmVyYXRlVXJsU3B5LCB7fSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAg ICAgICBleHBlY3QoYWxlcnRpZnkuZXJyb3IpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdzb21lIGVy cm9yIG1lc3NhZ2UnKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICB9LCAwKTsKKyAg ICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3VubG9hZCB0aGUgbm9kZScsIChkb25lKSA9PiB7Cisg ICAgICAgICAgZGlzYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwg e2l0ZW06IFt7aWQ6ICd0YWJsZTEnfV19KTsKKworICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4g eworICAgICAgICAgICAgZXhwZWN0KHRyZWUuZmluZE5vZGVCeURvbUVsZW1lbnQoW3tpZDogJ3Rh YmxlMSd9XSkuY2hpbGRyZW4ubGVuZ3RoKS50b0JlKDApOworICAgICAgICAgICAgZG9uZSgpOwor ICAgICAgICAgIH0sIDIwKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7 Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdHJlZS9wZ2FkbWlu X3RyZWVfbm9kZV9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90cmVlL3BnYWRt aW5fdHJlZV9ub2RlX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAu LjQ3OWU1MTVjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90 cmVlL3BnYWRtaW5fdHJlZV9ub2RlX3NwZWMuanMKQEAgLTAsMCArMSwzNTMgQEAKKy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8v IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor Ly8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7CisgIGdldFRyZWVOb2RlSGllcmFyY2h5 RnJvbUVsZW1lbnQsCisgIGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIsCit9IGZy b20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUnOwor aW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90 cmVlJzsKK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4vdHJlZV9mYWtlJzsKKworY29uc3QgY29u dGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgndHJlZSNub2RlI2dldFRyZWVOb2RlSGllcmFy Y2h5JywgKCkgPT4geworICBsZXQgYnJvd3NlcjsKKyAgbGV0IG5ld1RyZWU7CisgIGJlZm9yZUVh Y2goKCkgPT4geworICAgIG5ld1RyZWUgPSBuZXcgVHJlZUZha2UoKTsKKyAgICBicm93c2VyID0g eworICAgICAgTm9kZXM6IHsKKyAgICAgICAgJ3NwZWNpYWwgb25lJzoge2hhc0lkOiB0cnVlfSwK KyAgICAgICAgJ2NoaWxkIHNwZWNpYWwnOiB7aGFzSWQ6IHRydWV9LAorICAgICAgICAnb3RoZXIg dHlwZSc6IHtoYXNJZDogdHJ1ZX0sCisgICAgICAgICd0YWJsZSc6IHtoYXNJZDogdHJ1ZX0sCisg ICAgICAgICdwYXJ0aXRpb24nOiB7aGFzSWQ6IHRydWV9LAorICAgICAgICAnbm8gaWQnOiB7aGFz SWQ6IGZhbHNlfSwKKyAgICAgIH0sCisgICAgfTsKKyAgICBicm93c2VyLnRyZWVNZW51ID0gbmV3 VHJlZTsKKyAgfSk7CisKKyAgY29udGV4dCgnZ2V0VHJlZU5vZGVIaWVyYXJjaHkgaXMgY2FsbGVk IHdpdGggYWNpVHJlZU5vZGUgb2JqZWN0JywgKCkgPT4geworICAgIGRlc2NyaWJlKCdXaGVuIHRo ZSBjdXJyZW50IG5vZGUgaXMgcm9vdCBlbGVtZW50JywgKCkgPT4geworICAgICAgYmVmb3JlRWFj aCgoKSA9PiB7CisgICAgICAgIG5ld1RyZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHsKKyAgICAgICAg ICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwg b25lJywKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybnMgYSBvYmpl Y3Qgd2l0aCB0aGUgZWxlbWVudCB0eXBlIHBhc3NlZCBkYXRhIGFuZCBwcmlvcml0eSA9PSAwJywg KCkgPT4geworICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21J ZGVudGlmaWVyLmJpbmQoYnJvd3NlcikoW3tpZDogJ3Jvb3QnfV0pOworICAgICAgICBleHBlY3Qo cmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAnc3BlY2lhbCBvbmUnOiB7CisgICAgICAgICAg ICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lh bCBvbmUnLAorICAgICAgICAgICAgJ3ByaW9yaXR5JzogMCwKKyAgICAgICAgICB9LAorICAgICAg ICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJl bnQgbm9kZSBpcyBub3Qgb2YgYSBrbm93biB0eXBlJywgKCkgPT4geworICAgICAgYmVmb3JlRWFj aCgoKSA9PiB7CisgICAgICAgIG5ld1RyZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHsKKyAgICAgICAg ICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgJ190eXBlJzogJ2RvIG5vdCBl eGlzdCcsCisgICAgICAgIH0sIFtdKTsKKyAgICAgIH0pOworCisgICAgICBpdCgncmV0dXJucyBh IGVtcHR5IG9iamVjdCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5v ZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllci5iaW5kKGJyb3dzZXIpKCdyb290Jyk7CisgICAgICAg IGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe30pOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBk ZXNjcmliZSgnV2hlbiB0aGUgY3VycmVudCBub2RlIHR5cGUgaGFzIG5vIGlkJywgKCkgPT4gewor ICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIG5ld1RyZWUuYWRkTmV3Tm9kZSgncm9v dCcsIHsKKyAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgJ190 eXBlJzogJ25vIGlkJywKKyAgICAgICAgfSwgW10pOworICAgICAgfSk7CisKKyAgICAgIGl0KCdy ZXR1cm5zIGEgZW1wdHkgb2JqZWN0JywgKCkgPT4geworICAgICAgICBjb25zdCByZXN1bHQgPSBn ZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLmJpbmQoYnJvd3NlcikoJ3Jvb3QnKTsK KyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7fSk7CisgICAgICB9KTsKKyAgICB9KTsK KworICAgIGRlc2NyaWJlKCdXaGVuIHRoZSBjdXJyZW50IG5vZGUgaXMgYXQgdGhlIHNlY29uZCBs ZXZlbCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBjb25zdCBy b290ID0gbmV3VHJlZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICdzb21lIGtleSc6 ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAg ICB9KTsKKyAgICAgICAgY29uc3QgZmlyc3RDaGlsZCA9IG5ldyBUcmVlTm9kZSgnZmlyc3QgY2hp bGQnLCB7CisgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAorICAgICAg ICAgICdfdHlwZSc6ICdjaGlsZCBzcGVjaWFsJywKKyAgICAgICAgfSwgWydyb290J10pOworICAg ICAgICBuZXdUcmVlLmFkZENoaWxkKHJvb3QsIGZpcnN0Q2hpbGQpOworICAgICAgfSk7CisKKyAg ICAgIGl0KCdyZXR1cm5zIGEgZW1wdHkgb2JqZWN0JywgKCkgPT4geworICAgICAgICBjb25zdCBy ZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLmJpbmQoYnJvd3Nlciko W3tpZDogJ2ZpcnN0IGNoaWxkJ31dKTsKKyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7 CisgICAgICAgICAgJ2NoaWxkIHNwZWNpYWwnOiB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAn c29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAnY2hpbGQgc3BlY2lhbCcs CisgICAgICAgICAgICAncHJpb3JpdHknOiAwLAorICAgICAgICAgIH0sCisgICAgICAgICAgJ3Nw ZWNpYWwgb25lJzogeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAg ICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICdwcmlvcml0eSc6 IC0xLAorICAgICAgICAgIH0sCisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisKKyAg ICBjb250ZXh0KCdXaGVuIHRyZWUgYXMgInNwZWNpYWwgdHlwZSInLCAoKSA9PiB7CisgICAgICBj b250ZXh0KCdXaGVuICJzcGVjaWFsIHR5cGUiIGhhdmUgIm90aGVyIHR5cGUiJywgKCkgPT4gewor ICAgICAgICBjb250ZXh0KCdXaGVuICJvdGhlciB0eXBlIiBoYXZlICJzcGVjaWFsIHR5cGUiJywg KCkgPT4geworICAgICAgICAgIGRlc2NyaWJlKCdXaGVuIHJldHJpZXZpbmcgbGVhZCBub2RlJywg KCkgPT4geworICAgICAgICAgICAgaXQoJ2RvZXMgbm90IG92ZXJyaWRlIHByZXZpb3VzIG5vZGUg dHlwZSBkYXRhJywgKCkgPT4geworICAgICAgICAgICAgICBjb25zdCByb290Tm9kZSA9IG5ld1Ry ZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHsKKyAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29t ZSB2YWx1ZScsCisgICAgICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAg ICAgICAgICAgfSwgW10pOworCisgICAgICAgICAgICAgIGNvbnN0IGxldmVsMSA9IG5ldyBUcmVl Tm9kZSgnbGV2ZWwgMScsIHsKKyAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1 ZScsCisgICAgICAgICAgICAgICAgJ190eXBlJzogJ290aGVyIHR5cGUnLAorICAgICAgICAgICAg ICB9KTsKKyAgICAgICAgICAgICAgbmV3VHJlZS5hZGRDaGlsZChyb290Tm9kZSwgbGV2ZWwxKTsK KworICAgICAgICAgICAgICBuZXdUcmVlLmFkZENoaWxkKGxldmVsMSwgbmV3IFRyZWVOb2RlKCds ZXZlbCAyJywgeworICAgICAgICAgICAgICAgICdzb21lIGtleSc6ICdleHBlY3RlZCB2YWx1ZScs CisgICAgICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICAg ICAnc29tZSBvdGhlciBrZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgICAgIH0p KTsKKworICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZy b21JZGVudGlmaWVyLmJpbmQoYnJvd3NlcikoW3tpZDogJ2xldmVsIDInfV0pOworICAgICAgICAg ICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAgICAgICAnc3BlY2lhbCBv bmUnOiB7CisgICAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnZXhwZWN0ZWQgdmFsdWUnLAor ICAgICAgICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICAg ICAgICdzb21lIG90aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAgICAgICAgICAgICAg ICAgICdwcmlvcml0eSc6IDAsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAn b3RoZXIgdHlwZSc6IHsKKyAgICAgICAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVl JywKKyAgICAgICAgICAgICAgICAgICdfdHlwZSc6ICdvdGhlciB0eXBlJywKKyAgICAgICAgICAg ICAgICAgICdwcmlvcml0eSc6IC0xLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAg fSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdXaGVuIHRyZWUgaGFzIHRhYmxlJywgKCkgPT4g eworICAgICAgY29udGV4dCgnd2hlbiB0YWJsZSBoYXMgcGFydGl0aW9uJywgKCkgPT4geworICAg ICAgICBpdCgncmV0dXJucyB0YWJsZSB3aXRoIHBhcnRpdGlvbiBwYXJhbWV0ZXJzJywgKCkgPT4g eworICAgICAgICAgIGNvbnN0IHJvb3QgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7Cisg ICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUn OiAnc3BlY2lhbCBvbmUnLAorICAgICAgICAgIH0sIFtdKTsKKyAgICAgICAgICBjb25zdCBsZXZl bDEgPSBuZXcgVHJlZU5vZGUoJ2xldmVsIDEnLCB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAn c29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAndGFibGUnLAorICAgICAgICAgIH0p OworICAgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQocm9vdCwgbGV2ZWwxKTsKKyAgICAgICAgICBu ZXdUcmVlLmFkZENoaWxkKGxldmVsMSwgbmV3IFRyZWVOb2RlKCdsZXZlbCAyJywgeworICAgICAg ICAgICAgJ3NvbWUga2V5JzogJ2V4cGVjdGVkIHZhbHVlJywKKyAgICAgICAgICAgICdfdHlwZSc6 ICdwYXJ0aXRpb24nLAorICAgICAgICAgICAgJ3NvbWUgb3RoZXIga2V5JzogJ3NvbWUgb3RoZXIg dmFsdWUnLAorICAgICAgICAgIH0pKTsKKworICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFRy ZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIuYmluZChicm93c2VyKShbe2lkOidsZXZlbCAy J31dKTsKKyAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAgICdz cGVjaWFsIG9uZSc6IHsKKyAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAor ICAgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICAgICAgICAncHJp b3JpdHknOiAtMSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAndGFibGUnOiB7CisgICAg ICAgICAgICAgICdzb21lIGtleSc6ICdleHBlY3RlZCB2YWx1ZScsCisgICAgICAgICAgICAgICdz b21lIG90aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAgICAgICAgICAgICAgJ190eXBl JzogJ3BhcnRpdGlvbicsCisgICAgICAgICAgICAgICdwcmlvcml0eSc6IDAsCisgICAgICAgICAg ICB9LAorICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9 KTsKKworICBjb250ZXh0KCdnZXRUcmVlTm9kZUhpZXJhcmNoeSBpcyBjYWxsZWQgd2l0aCBUcmVl Tm9kZSBvYmplY3QnLCAoKSA9PiB7CisgICAgbGV0IHRyZWVOb2RlOworICAgIGRlc2NyaWJlKCdX aGVuIHRoZSBjdXJyZW50IG5vZGUgaXMgcm9vdCBlbGVtZW50JywgKCkgPT4geworICAgICAgYmVm b3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHRyZWVOb2RlID0gbmV3VHJlZS5hZGROZXdOb2RlKCdy b290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAn X3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICB9LCBbXSk7CisgICAgICB9KTsKKworICAg ICAgaXQoJ3JldHVybnMgYSBvYmplY3Qgd2l0aCB0aGUgZWxlbWVudCB0eXBlIHBhc3NlZCBkYXRh IGFuZCBwcmlvcml0eSA9PSAwJywgKCkgPT4geworICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRU cmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KGJyb3dzZXIsIHRyZWVOb2RlKTsKKyAgICAgICAg ZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7CisgICAgICAgICAgJ3NwZWNpYWwgb25lJzogeworICAg ICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICAgJ190eXBlJzog J3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICdwcmlvcml0eSc6IDAsCisgICAgICAgICAgfSwK KyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdXaGVuIHRo ZSBjdXJyZW50IG5vZGUgaXMgbm90IG9mIGEga25vd24gdHlwZScsICgpID0+IHsKKyAgICAgIGJl Zm9yZUVhY2goKCkgPT4geworICAgICAgICB0cmVlTm9kZSA9IG5ld1RyZWUuYWRkTmV3Tm9kZSgn cm9vdCcsIHsKKyAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAg J190eXBlJzogJ2RvIG5vdCBleGlzdCcsCisgICAgICAgIH0sIFtdKTsKKyAgICAgIH0pOworCisg ICAgICBpdCgncmV0dXJucyBhIGVtcHR5IG9iamVjdCcsICgpID0+IHsKKyAgICAgICAgY29uc3Qg cmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudChicm93c2VyLCB0cmVlTm9k ZSk7CisgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe30pOworICAgICAgfSk7CisgICAg fSk7CisKKyAgICBkZXNjcmliZSgnV2hlbiB0aGUgY3VycmVudCBub2RlIHR5cGUgaGFzIG5vIGlk JywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHRyZWVOb2RlID0g bmV3VHJlZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21l IHZhbHVlJywKKyAgICAgICAgICAnX3R5cGUnOiAnbm8gaWQnLAorICAgICAgICB9LCBbXSk7Cisg ICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybnMgYSBlbXB0eSBvYmplY3QnLCAoKSA9PiB7Cisg ICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQoYnJv d3NlciwgdHJlZU5vZGUpOworICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHt9KTsKKyAg ICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJlbnQgbm9kZSBp cyBhdCB0aGUgc2Vjb25kIGxldmVsJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7 CisgICAgICAgIGNvbnN0IHJvb3QgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7CisgICAg ICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdzcGVj aWFsIG9uZScsCisgICAgICAgIH0sIFtdKTsKKyAgICAgICAgdHJlZU5vZGUgPSBuZXcgVHJlZU5v ZGUoJ2ZpcnN0IGNoaWxkJywgeworICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIG90aGVyIHZh bHVlJywKKyAgICAgICAgICAnX3R5cGUnOiAnY2hpbGQgc3BlY2lhbCcsCisgICAgICAgIH0pOwor ICAgICAgICBuZXdUcmVlLmFkZENoaWxkKHJvb3QsIHRyZWVOb2RlKTsKKyAgICAgIH0pOworCisg ICAgICBpdCgncmV0dXJucyBhIGVtcHR5IG9iamVjdCcsICgpID0+IHsKKyAgICAgICAgY29uc3Qg cmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudChicm93c2VyLCB0cmVlTm9k ZSk7CisgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeworICAgICAgICAgICdjaGlsZCBz cGVjaWFsJzogeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAor ICAgICAgICAgICAgJ190eXBlJzogJ2NoaWxkIHNwZWNpYWwnLAorICAgICAgICAgICAgJ3ByaW9y aXR5JzogMCwKKyAgICAgICAgICB9LAorICAgICAgICAgICdzcGVjaWFsIG9uZSc6IHsKKyAgICAg ICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICdfdHlwZSc6ICdz cGVjaWFsIG9uZScsCisgICAgICAgICAgICAncHJpb3JpdHknOiAtMSwKKyAgICAgICAgICB9LAor ICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnV2hlbiB0cmVl IGFzICJzcGVjaWFsIHR5cGUiJywgKCkgPT4geworICAgICAgY29udGV4dCgnV2hlbiAic3BlY2lh bCB0eXBlIiBoYXZlICJvdGhlciB0eXBlIicsICgpID0+IHsKKyAgICAgICAgY29udGV4dCgnV2hl biAib3RoZXIgdHlwZSIgaGF2ZSAic3BlY2lhbCB0eXBlIicsICgpID0+IHsKKyAgICAgICAgICBk ZXNjcmliZSgnV2hlbiByZXRyaWV2aW5nIGxlYWQgbm9kZScsICgpID0+IHsKKyAgICAgICAgICAg IGl0KCdkb2VzIG5vdCBvdmVycmlkZSBwcmV2aW91cyBub2RlIHR5cGUgZGF0YScsICgpID0+IHsK KyAgICAgICAgICAgICAgY29uc3Qgcm9vdCA9IG5ld1RyZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHsK KyAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAg ICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICAgfSwgW10pOworICAgICAg ICAgICAgICBjb25zdCBsZXZlbDEgPSBuZXcgVHJlZU5vZGUoJ2xldmVsIDEnLCB7CisgICAgICAg ICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICAgICAgICdfdHlw ZSc6ICdvdGhlciB0eXBlJywKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIG5ld1Ry ZWUuYWRkQ2hpbGQocm9vdCwgbGV2ZWwxKTsKKyAgICAgICAgICAgICAgdHJlZU5vZGUgPSBuZXcg VHJlZU5vZGUoJ2xldmVsIDInLCB7CisgICAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ2V4cGVj dGVkIHZhbHVlJywKKyAgICAgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAg ICAgICAgICAgICAgICdzb21lIG90aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAgICAg ICAgICAgICAgfSk7CisgICAgICAgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQobGV2ZWwxLCB0cmVl Tm9kZSk7CisKKyAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJj aHlGcm9tRWxlbWVudChicm93c2VyLCB0cmVlTm9kZSk7CisgICAgICAgICAgICAgIGV4cGVjdChy ZXN1bHQpLnRvRXF1YWwoeworICAgICAgICAgICAgICAgICdzcGVjaWFsIG9uZSc6IHsKKyAgICAg ICAgICAgICAgICAgICdzb21lIGtleSc6ICdleHBlY3RlZCB2YWx1ZScsCisgICAgICAgICAgICAg ICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICAgICAgICAgICAgJ3NvbWUgb3Ro ZXIga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAorICAgICAgICAgICAgICAgICAgJ3ByaW9yaXR5 JzogMCwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICdvdGhlciB0eXBlJzog eworICAgICAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAg ICAgICAgICAgJ190eXBlJzogJ290aGVyIHR5cGUnLAorICAgICAgICAgICAgICAgICAgJ3ByaW9y aXR5JzogLTEsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgfSk7CisgICAgICAg ICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsK KworICAgIGNvbnRleHQoJ1doZW4gdHJlZSBoYXMgdGFibGUnLCAoKSA9PiB7CisgICAgICBjb250 ZXh0KCd3aGVuIHRhYmxlIGhhcyBwYXJ0aXRpb24nLCAoKSA9PiB7CisgICAgICAgIGl0KCdyZXR1 cm5zIHRhYmxlIHdpdGggcGFydGl0aW9uIHBhcmFtZXRlcnMnLCAoKSA9PiB7CisgICAgICAgICAg Y29uc3Qgcm9vdCA9IG5ld1RyZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHsKKyAgICAgICAgICAgICdz b21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9u ZScsCisgICAgICAgICAgfSk7CisgICAgICAgICAgY29uc3QgbGV2ZWwxID0gbmV3VHJlZS5hZGRO ZXdOb2RlKCdsZXZlbCAxJywgeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUn LAorICAgICAgICAgICAgJ190eXBlJzogJ3RhYmxlJywKKyAgICAgICAgICB9KTsKKyAgICAgICAg ICBuZXdUcmVlLmFkZENoaWxkKHJvb3QsIGxldmVsMSk7CisgICAgICAgICAgdHJlZU5vZGUgPSBu ZXcgVHJlZU5vZGUoJ2xldmVsIDInLCB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAnZXhwZWN0 ZWQgdmFsdWUnLAorICAgICAgICAgICAgJ190eXBlJzogJ3BhcnRpdGlvbicsCisgICAgICAgICAg ICAnc29tZSBvdGhlciBrZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgfSk7Cisg ICAgICAgICAgbmV3VHJlZS5hZGRDaGlsZChsZXZlbDEsIHRyZWVOb2RlKTsKKworICAgICAgICAg IGNvbnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQoYnJvd3Nlciwg dHJlZU5vZGUpOworICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeworICAgICAgICAg ICAgJ3NwZWNpYWwgb25lJzogeworICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1 ZScsCisgICAgICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgICAg ICdwcmlvcml0eSc6IC0xLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICd0YWJsZSc6IHsK KyAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ2V4cGVjdGVkIHZhbHVlJywKKyAgICAgICAgICAg ICAgJ3NvbWUgb3RoZXIga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAorICAgICAgICAgICAgICAn X3R5cGUnOiAncGFydGl0aW9uJywKKyAgICAgICAgICAgICAgJ3ByaW9yaXR5JzogMCwKKyAgICAg ICAgICAgIH0sCisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7 CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3RyZWUv dHJlZV9mYWtlLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90cmVlL3RyZWVfZmFrZS5q cwppbmRleCBiMjg1YTQ1Zi4uZTAzZDcxZmIgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvdHJlZS90cmVlX2Zha2UuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlw dC90cmVlL3RyZWVfZmFrZS5qcwpAQCAtMTAsNiArMTAsMzIgQEAKIGltcG9ydCB7VHJlZX0gZnJv bSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlJzsKIAogZXhwb3J0IGNsYXNz IFRyZWVGYWtlIGV4dGVuZHMgVHJlZSB7CisgIHN0YXRpYyBidWlsZChzdHJ1Y3R1cmUpIHsKKyAg ICBsZXQgdHJlZSA9IG5ldyBUcmVlRmFrZSgpOworICAgIGxldCByb290Tm9kZSA9IHRyZWUucm9v dE5vZGU7CisKKyAgICBpZiAoc3RydWN0dXJlLmNoaWxkcmVuICE9PSB1bmRlZmluZWQpIHsKKyAg ICAgIHN0cnVjdHVyZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4geworICAgICAgICBUcmVl RmFrZS5yZWN1cnNpdmVseUFkZE5vZGVzKHRyZWUsIGNoaWxkLCByb290Tm9kZSk7CisgICAgICB9 KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJlZTsKKyAgfQorCisgIHN0YXRpYyByZWN1cnNpdmVs eUFkZE5vZGVzKHRyZWUsIG5ld05vZGUsIHBhcmVudCkgeworICAgIGxldCBpZCA9IG5ld05vZGUu aWQ7CisgICAgbGV0IGRhdGEgPSBuZXdOb2RlLmRhdGEgPyBuZXdOb2RlLmRhdGEgOiB7fTsKKyAg ICBsZXQgZG9tTm9kZSA9IG5ld05vZGUuZG9tTm9kZSA/IG5ld05vZGUuZG9tTm9kZSA6IFt7aWQ6 IGlkfV07CisgICAgdHJlZS5hZGROZXdOb2RlKGlkLCBkYXRhLCBkb21Ob2RlLCB0cmVlLnRyYW5z bGF0ZVRyZWVOb2RlSWRGcm9tQUNJVHJlZShbcGFyZW50XSkpOworCisgICAgaWYgKG5ld05vZGUu Y2hpbGRyZW4gIT09IHVuZGVmaW5lZCkgeworICAgICAgbmV3Tm9kZS5jaGlsZHJlbi5mb3JFYWNo KChjaGlsZCkgPT4geworICAgICAgICBUcmVlRmFrZS5yZWN1cnNpdmVseUFkZE5vZGVzKHRyZWUs IGNoaWxkLCBuZXdOb2RlKTsKKyAgICAgIH0pOworICAgIH0KKyAgfQorCiAgIGNvbnN0cnVjdG9y KCkgewogICAgIHN1cGVyKCk7CiAgICAgdGhpcy5hY2lUcmVlVG9PdXJUcmVlVHJhbnNsYXRvciA9 IHt9OwpAQCAtNDUsNyArNzEsNyBAQCBleHBvcnQgY2xhc3MgVHJlZUZha2UgZXh0ZW5kcyBUcmVl IHsKICAgfQogCiAgIHRyYW5zbGF0ZVRyZWVOb2RlSWRGcm9tQUNJVHJlZShhY2lUcmVlTm9kZSkg ewotICAgIGlmKGFjaVRyZWVOb2RlID09PSB1bmRlZmluZWQgfHwgYWNpVHJlZU5vZGVbMF0gPT09 IHVuZGVmaW5lZCkgeworICAgIGlmIChhY2lUcmVlTm9kZSA9PT0gdW5kZWZpbmVkIHx8IGFjaVRy ZWVOb2RlWzBdID09PSB1bmRlZmluZWQpIHsKICAgICAgIHJldHVybiBudWxsOwogICAgIH0KICAg ICByZXR1cm4gdGhpcy5hY2lUcmVlVG9PdXJUcmVlVHJhbnNsYXRvclthY2lUcmVlTm9kZVswXS5p ZF07Ci0tIAoyLjE2LjIKCg== --000000000000fe853a056ba24cb7 Content-Type: application/octet-stream; name="0002-New-tree-implementation.patch" Content-Disposition: attachment; filename="0002-New-tree-implementation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jgwlvb3g2 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Jyb3dzZXIuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9icm93c2VyLmpzCmluZGV4IDE0NjQwYWU4Li5k OTY5MzQ4NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvYnJvd3Nl ci5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9icm93c2VyLmpzCkBAIC0x LDQgKzEsNSBAQAogZGVmaW5lKCdwZ2FkbWluLmJyb3dzZXInLCBbCisgICdzb3VyY2VzL3RyZWUv dHJlZScsCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ3JlcXVpcmUn LCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLAogICAnYm9vdHN0 cmFwJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAnYnVuZGxlZF9j b2RlbWlycm9yJywKICAgJ3NvdXJjZXMvY2hlY2tfbm9kZV92aXNpYmlsaXR5JywgJ3NvdXJjZXMv bW9kaWZ5X2FuaW1hdGlvbicsICdwZ2FkbWluLmJyb3dzZXIudXRpbHMnLCAnd2Nkb2NrZXInLApA QCAtMTAsNiArMTEsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3NlcicsIFsKICAgJ3NvdXJjZXMv Y29kZW1pcnJvci9hZGRvbi9mb2xkL3BnYWRtaW4tc3FsZm9sZGNvZGUnLAogICAncGdhZG1pbi5i cm93c2VyLmtleWJvYXJkJywKIF0sIGZ1bmN0aW9uKAorICB0cmVlLAogICBnZXR0ZXh0LCB1cmxf Zm9yLCByZXF1aXJlLCAkLCBfLCBTLCBCb290c3RyYXAsIHBnQWRtaW4sIEFsZXJ0aWZ5LAogICBj b2RlbWlycm9yLCBjaGVja05vZGVWaXNpYmlsaXR5LCBtb2RpZnlBbmltYXRpb24KICkgewpAQCAt ODYsNiArODgsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3NlcicsIFsKICAgICAgIH0pOwogCiAg ICAgICBiLnRyZWUgPSAkKCcjdHJlZScpLmFjaVRyZWUoJ2FwaScpOworICAgICAgYi50cmVlTWVu dS5yZWdpc3RlcigkKCcjdHJlZScpKTsKICAgICB9OwogCiAgIC8vIEV4dGVuZCB0aGUgYnJvd3Nl ciBjbGFzcyBhdHRyaWJ1dGVzCkBAIC0xMDAsNiArMTAzLDcgQEAgZGVmaW5lKCdwZ2FkbWluLmJy b3dzZXInLCBbCiAgICAgZWRpdG9yOm51bGwsCiAgICAgLy8gTGVmdCBoYW5kIGJyb3dzZXIgdHJl ZQogICAgIHRyZWU6bnVsbCwKKyAgICB0cmVlTWVudTogbmV3IHRyZWUuVHJlZSgpLAogICAgIC8v IGxpc3Qgb2Ygc2NyaXB0IHRvIGJlIGxvYWRlZCwgd2hlbiBhIGNlcnRhaW4gdHlwZSBvZiBub2Rl IGlzIGxvYWRlZAogICAgIC8vIEl0IHdpbGwgYmUgdXNlZCB0byByZWdpc3RlciBleHRlbnNpb25z LCB0b29scywgY2hpbGQgbm9kZSBzY3JpcHRzLAogICAgIC8vIGV0Yy4KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3RyZWUuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMv dHJlZS90cmVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi45NzRlZThk ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3RyZWUuanMK QEAgLTAsMCArMSwyMTQgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2V4cG9y dCBjbGFzcyBUcmVlTm9kZSB7CisgIGNvbnN0cnVjdG9yKGlkLCBkYXRhLCBkb21Ob2RlLCBwYXJl bnQpIHsKKyAgICB0aGlzLmlkID0gaWQ7CisgICAgdGhpcy5kYXRhID0gZGF0YTsKKyAgICB0aGlz LnNldFBhcmVudChwYXJlbnQpOworICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKKyAgICB0aGlzLmRv bU5vZGUgPSBkb21Ob2RlOworICB9CisKKyAgaGFzUGFyZW50KCkgeworICAgIHJldHVybiB0aGlz LnBhcmVudE5vZGUgIT09IG51bGwgJiYgdGhpcy5wYXJlbnROb2RlICE9PSB1bmRlZmluZWQ7Cisg IH0KKworICBwYXJlbnQoKSB7CisgICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTsKKyAgfQorCisg IHNldFBhcmVudChwYXJlbnQpIHsKKyAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnQ7CisgICAg dGhpcy5wYXRoID0gdGhpcy5pZDsKKyAgICBpZiAocGFyZW50ICE9PSBudWxsICYmIHBhcmVudCAh PT0gdW5kZWZpbmVkICYmIHBhcmVudC5wYXRoICE9PSB1bmRlZmluZWQpIHsKKyAgICAgIHRoaXMu cGF0aCA9IHBhcmVudC5wYXRoICsgJy4nICsgdGhpcy5pZDsKKyAgICB9CisgIH0KKworICBnZXRE YXRhKCkgeworICAgIGlmICh0aGlzLmRhdGEgPT09IHVuZGVmaW5lZCkgeworICAgICAgcmV0dXJu IHVuZGVmaW5lZDsKKyAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YSA9PT0gbnVsbCkgeworICAgICAg cmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRh dGEpOworICB9CisKKyAgZ2V0SHRtbElkZW50aWZpZXIoKSB7CisgICAgcmV0dXJuIHRoaXMuZG9t Tm9kZTsKKyAgfQorCisgIHJlbG9hZCh0cmVlKSB7CisgICAgdGhpcy51bmxvYWQodHJlZSk7Cisg ICAgdHJlZS5hY2lUcmVlQXBpLnNldElub2RlKHRoaXMuZG9tTm9kZSk7CisgICAgdHJlZS5hY2lU cmVlQXBpLmRlc2VsZWN0KHRoaXMuZG9tTm9kZSk7CisgICAgc2V0VGltZW91dCgoKSA9PiB7Cisg ICAgICB0cmVlLnNlbGVjdE5vZGUodGhpcy5kb21Ob2RlKTsKKyAgICB9LCAwKTsKKyAgfQorCisg IHVubG9hZCh0cmVlKSB7CisgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworICAgIHRyZWUuYWNpVHJl ZUFwaS51bmxvYWQodGhpcy5kb21Ob2RlKTsKKyAgfQorCisgIGFueVBhcmVudChjb25kaXRpb24p IHsKKyAgICBsZXQgbm9kZSA9IHRoaXM7CisKKyAgICB3aGlsZSAobm9kZS5oYXNQYXJlbnQoKSkg eworICAgICAgbm9kZSA9IG5vZGUucGFyZW50KCk7CisgICAgICBpZiAoY29uZGl0aW9uKG5vZGUp KSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBm YWxzZTsKKyAgfQorCisgIC8qKgorICAgKiBHaXZlbiBhIGNvbmRpdGlvbiByZXR1cm5zIHRydWUg aWYgdGhlIGN1cnJlbnQgbm9kZQorICAgKiBvciBhbnkgb2YgdGhlIHBhcmVudCBub2RlcyBjb25k aXRpb24gcmVzdWx0IGlzIHRydWUKKyAgICovCisgIGFueUZhbWlseU1lbWJlcihjb25kaXRpb24p IHsKKyAgICBpZihjb25kaXRpb24odGhpcykpIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0K KworICAgIHJldHVybiB0aGlzLmFueVBhcmVudChjb25kaXRpb24pOworICB9Cit9CisKK2V4cG9y dCBjbGFzcyBUcmVlIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgdGhpcy5yb290Tm9kZSA9IG5l dyBUcmVlTm9kZSh1bmRlZmluZWQsIHt9KTsKKyAgICB0aGlzLmFjaVRyZWVBcGkgPSB1bmRlZmlu ZWQ7CisgIH0KKworICBhZGROZXdOb2RlKGlkLCBkYXRhLCBkb21Ob2RlLCBwYXJlbnRQYXRoKSB7 CisgICAgY29uc3QgcGFyZW50ID0gdGhpcy5maW5kTm9kZShwYXJlbnRQYXRoKTsKKyAgICByZXR1 cm4gdGhpcy5jcmVhdGVPclVwZGF0ZU5vZGUoaWQsIGRhdGEsIHBhcmVudCwgZG9tTm9kZSk7Cisg IH0KKworICBmaW5kTm9kZShwYXRoKSB7CisgICAgaWYgKHBhdGggPT09IG51bGwgfHwgcGF0aCA9 PT0gdW5kZWZpbmVkIHx8IHBhdGgubGVuZ3RoID09PSAwKSB7CisgICAgICByZXR1cm4gdGhpcy5y b290Tm9kZTsKKyAgICB9CisgICAgcmV0dXJuIGZpbmRJblRyZWUodGhpcy5yb290Tm9kZSwgcGF0 aC5qb2luKCcuJykpOworICB9CisKKyAgZmluZE5vZGVCeURvbUVsZW1lbnQoZG9tRWxlbWVudCkg eworICAgIGNvbnN0IHBhdGggPSB0aGlzLnRyYW5zbGF0ZVRyZWVOb2RlSWRGcm9tQUNJVHJlZShk b21FbGVtZW50KTsKKyAgICBpZighcGF0aCB8fCAhcGF0aFswXSkgeworICAgICAgcmV0dXJuIHVu ZGVmaW5lZDsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpcy5maW5kTm9kZShwYXRoKTsKKyAgfQor CisgIHNlbGVjdGVkKCkgeworICAgIHJldHVybiB0aGlzLmFjaVRyZWVBcGkuc2VsZWN0ZWQoKTsK KyAgfQorCisgIHNlbGVjdE5vZGUoYWNpVHJlZUlkZW50aWZpZXIpIHsKKyAgICB0aGlzLmFjaVRy ZWVBcGkuc2VsZWN0KGFjaVRyZWVJZGVudGlmaWVyKTsKKyAgfQorCisgIGNyZWF0ZU9yVXBkYXRl Tm9kZShpZCwgZGF0YSwgcGFyZW50LCBkb21Ob2RlKSB7CisgICAgbGV0IG9sZE5vZGVQYXRoID0g W2lkXTsKKyAgICBpZihwYXJlbnQgIT09IG51bGwgJiYgcGFyZW50ICE9PSB1bmRlZmluZWQpIHsK KyAgICAgIG9sZE5vZGVQYXRoID0gW3BhcmVudC5wYXRoLCBpZF07CisgICAgfQorICAgIGNvbnN0 IG9sZE5vZGUgPSB0aGlzLmZpbmROb2RlKG9sZE5vZGVQYXRoKTsKKyAgICBpZiAob2xkTm9kZSAh PT0gbnVsbCkgeworICAgICAgb2xkTm9kZS5kYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgZGF0YSk7 CisgICAgICByZXR1cm4gb2xkTm9kZTsKKyAgICB9CisKKyAgICBjb25zdCBub2RlID0gbmV3IFRy ZWVOb2RlKGlkLCBkYXRhLCBkb21Ob2RlLCBwYXJlbnQpOworICAgIGlmIChwYXJlbnQgPT09IHRo aXMucm9vdE5vZGUpIHsKKyAgICAgIG5vZGUucGFyZW50Tm9kZSA9IG51bGw7CisgICAgfQorICAg IHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpOworICAgIHJldHVybiBub2RlOworICB9CisKKyAg LyoqCisgICAqIEdpdmVuIHRoZSBKUXVlcnkgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIEFDSSBU cmVlCisgICAqIHRoaXMgbWV0aG9kIGlzIHJlc3BvbnNpYmxlIGZvciByZWdpc3RlcmluZyB0aGlz IHRyZWUgY2xhc3MKKyAgICogdG8gbGlzdGVuIHRvIGFsbCB0aGUgZXZlbnRzIHRoYXQgaGFwcGVu IGluIHRoZSBBQ0kgVHJlZS4KKyAgICoKKyAgICogQXQgdGhpcyBwb2ludCBpbiB0aW1lIHRoZSBv bmx5IGV2ZW50IHRoYXQgd2UgY2FyZSBhYm91dCBpcworICAgKiB0aGUgYWRkaXRpb24gb2YgYSBu ZXcgbm9kZS4KKyAgICogVGhlIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIGEgbmV3IHRyZWUgbm9kZSB0 byBzdG9yZSB0aGUgaW5mb3JtYXRpb24KKyAgICogdGhhdCBleGlzdCBpbiB0aGUgQUNJIGZvciBp dC4KKyAgICovCisgIHJlZ2lzdGVyKCR0cmVlSlF1ZXJ5KSB7CisgICAgJHRyZWVKUXVlcnkub24o J2FjaXRyZWUnLCBmdW5jdGlvbiAoZXZlbnQsIGFwaSwgaXRlbSwgZXZlbnROYW1lKSB7CisgICAg ICBpZiAoYXBpLmlzSXRlbShpdGVtKSkgeworICAgICAgICBpZiAoZXZlbnROYW1lID09PSAnYWRk ZWQnKSB7CisgICAgICAgICAgY29uc3QgaWQgPSBhcGkuZ2V0SWQoaXRlbSk7CisgICAgICAgICAg Y29uc3QgZGF0YSA9IGFwaS5pdGVtRGF0YShpdGVtKTsKKyAgICAgICAgICBjb25zdCBwYXJlbnRJ ZCA9IHRoaXMudHJhbnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lUcmVlKGFwaS5wYXJlbnQoaXRlbSkp OworICAgICAgICAgIHRoaXMuYWRkTmV3Tm9kZShpZCwgZGF0YSwgaXRlbSwgcGFyZW50SWQpOwor ICAgICAgICB9CisgICAgICB9CisgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLmFjaVRyZWVB cGkgPSAkdHJlZUpRdWVyeS5hY2lUcmVlKCdhcGknKTsKKyAgfQorCisgIC8qKgorICAgKiBBcyB0 aGUgbmFtZSBoaW50cyB0aGlzIGZ1bmN0aW9ucyB3b3JrcyBhcyBhIGxheWVyIGluIGJldHdlZW4g QUNJIGFuZAorICAgKiB0aGUgYWRhcHRvci4gR2l2ZW4gYSBBQ0lUcmVlIEpRdWVyeSBub2RlIGZp bmQgdGhlIGxvY2F0aW9uIG9mIGl0IGluIHRoZQorICAgKiBUcmVlIGFuZCB0aGVuIHJldHVybnMg YW5kIGFycmF5IHdpdGggdGhlIHBhdGggdG8gdG8gdGhlIFRyZWUgTm9kZSBpbgorICAgKiBxdWVz dGlvbgorICAgKgorICAgKiBUaGlzIGlzIG5vdCBvcHRpbWl6ZWQgYW5kIHdpbGwgYWx3YXlzIGdv IHRocm91Z2ggdGhlIGZ1bGwgdHJlZQorICAgKi8KKyAgdHJhbnNsYXRlVHJlZU5vZGVJZEZyb21B Q0lUcmVlKGFjaVRyZWVOb2RlKSB7CisgICAgbGV0IGN1cnJlbnRUcmVlTm9kZSA9IGFjaVRyZWVO b2RlOworICAgIGxldCBwYXRoID0gW107CisgICAgd2hpbGUgKGN1cnJlbnRUcmVlTm9kZSAhPT0g bnVsbCAmJiBjdXJyZW50VHJlZU5vZGUgIT09IHVuZGVmaW5lZCAmJiBjdXJyZW50VHJlZU5vZGUu bGVuZ3RoID4gMCkgeworICAgICAgcGF0aC51bnNoaWZ0KHRoaXMuYWNpVHJlZUFwaS5nZXRJZChj dXJyZW50VHJlZU5vZGUpKTsKKyAgICAgIGlmICh0aGlzLmFjaVRyZWVBcGkuaGFzUGFyZW50KGN1 cnJlbnRUcmVlTm9kZSkpIHsKKyAgICAgICAgY3VycmVudFRyZWVOb2RlID0gdGhpcy5hY2lUcmVl QXBpLnBhcmVudChjdXJyZW50VHJlZU5vZGUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgYnJl YWs7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBwYXRoOworICB9Cit9CisKK2V4cG9ydCBs ZXQgdHJlZSA9IG5ldyBUcmVlKCk7CisKKy8qKgorICogR2l2ZW4gYW4gaW5pdGlhbCBub2RlIGFu ZCBhIHBhdGgsIGl0IHdpbGwgbmF2aWdhdGUgdGhyb3VnaAorICogdGhlIG5ldyB0cmVlIHRvIGZp bmQgdGhlIG5vZGUgdGhhdCBtYXRjaGVzIHRoZSBwYXRoCisgKi8KK2Z1bmN0aW9uIGZpbmRJblRy ZWUocm9vdE5vZGUsIHBhdGgpIHsKKyAgaWYgKHBhdGggPT09IG51bGwpIHsKKyAgICByZXR1cm4g cm9vdE5vZGU7CisgIH0KKworICByZXR1cm4gKGZ1bmN0aW9uIGZpbmRJbk5vZGUoY3VycmVudE5v ZGUpIHsKKyAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gY3VycmVudE5vZGUuY2hpbGRyZW4u bGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgIGNvbnN0IGNhbGN1bGF0ZWROb2RlID0g ZmluZEluTm9kZShjdXJyZW50Tm9kZS5jaGlsZHJlbltpXSk7CisgICAgICBpZiAoY2FsY3VsYXRl ZE5vZGUgIT09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZWROb2RlOworICAgICAg fQorICAgIH0KKworICAgIGlmIChjdXJyZW50Tm9kZS5wYXRoID09PSBwYXRoKSB7CisgICAgICBy ZXR1cm4gY3VycmVudE5vZGU7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBudWxsOworICAg IH0KKyAgfSkocm9vdE5vZGUpOworfQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC90cmVlL3RyZWVfZmFrZS5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdHJlZS90 cmVlX2Zha2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmIyODVhNDVm Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90cmVlL3RyZWVf ZmFrZS5qcwpAQCAtMCwwICsxLDY5IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhl IFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7VHJlZX0gZnJvbSAnLi4v Li4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlJzsKKworZXhwb3J0IGNsYXNzIFRyZWVG YWtlIGV4dGVuZHMgVHJlZSB7CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHN1cGVyKCk7CisgICAg dGhpcy5hY2lUcmVlVG9PdXJUcmVlVHJhbnNsYXRvciA9IHt9OworICAgIHRoaXMuYWNpVHJlZUFw aSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKAorICAgICAgWydBQ0lUcmVlQXBpJ10sIFsnc2V0SW5v ZGUnLCAndW5sb2FkJywgJ2Rlc2VsZWN0JywgJ3NlbGVjdCddKTsKKyAgfQorCisgIGFkZE5ld05v ZGUoaWQsIGRhdGEsIGRvbU5vZGUsIHBhdGgpIHsKKyAgICB0aGlzLmFjaVRyZWVUb091clRyZWVU cmFuc2xhdG9yW2lkXSA9IFtpZF07CisgICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aCAhPT0g dW5kZWZpbmVkKSB7CisgICAgICB0aGlzLmFjaVRyZWVUb091clRyZWVUcmFuc2xhdG9yW2lkXSA9 IHBhdGguY29uY2F0KGlkKTsKKyAgICB9CisgICAgcmV0dXJuIHN1cGVyLmFkZE5ld05vZGUoaWQs IGRhdGEsIGRvbU5vZGUsIHBhdGgpOworICB9CisKKyAgYWRkQ2hpbGQocGFyZW50LCBjaGlsZCkg eworICAgIGNoaWxkLnNldFBhcmVudChwYXJlbnQpOworICAgIHRoaXMuYWNpVHJlZVRvT3VyVHJl ZVRyYW5zbGF0b3JbY2hpbGQuaWRdID0gdGhpcy5hY2lUcmVlVG9PdXJUcmVlVHJhbnNsYXRvcltw YXJlbnQuaWRdLmNvbmNhdChjaGlsZC5pZCk7CisgICAgcGFyZW50LmNoaWxkcmVuLnB1c2goY2hp bGQpOworICB9CisKKyAgaGFzUGFyZW50KGFjaVRyZWVOb2RlKSB7CisgICAgcmV0dXJuIHRoaXMu dHJhbnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lUcmVlKGFjaVRyZWVOb2RlKS5sZW5ndGggPiAxOwor ICB9CisKKyAgcGFyZW50KGFjaVRyZWVOb2RlKSB7CisgICAgaWYgKHRoaXMuaGFzUGFyZW50KGFj aVRyZWVOb2RlKSkgeworICAgICAgbGV0IHBhdGggPSB0aGlzLnRyYW5zbGF0ZVRyZWVOb2RlSWRG cm9tQUNJVHJlZShhY2lUcmVlTm9kZSk7CisgICAgICByZXR1cm4gW3tpZDogdGhpcy5maW5kTm9k ZShwYXRoKS5wYXJlbnQoKS5pZH1dOworICAgIH0KKworICAgIHJldHVybiBudWxsOworICB9CisK KyAgdHJhbnNsYXRlVHJlZU5vZGVJZEZyb21BQ0lUcmVlKGFjaVRyZWVOb2RlKSB7CisgICAgaWYo YWNpVHJlZU5vZGUgPT09IHVuZGVmaW5lZCB8fCBhY2lUcmVlTm9kZVswXSA9PT0gdW5kZWZpbmVk KSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMuYWNpVHJlZVRv T3VyVHJlZVRyYW5zbGF0b3JbYWNpVHJlZU5vZGVbMF0uaWRdOworICB9CisKKyAgaXRlbURhdGEo YWNpVHJlZU5vZGUpIHsKKyAgICBsZXQgbm9kZSA9IHRoaXMuZmluZE5vZGVCeURvbUVsZW1lbnQo YWNpVHJlZU5vZGUpOworICAgIGlmIChub2RlID09PSB1bmRlZmluZWQgfHwgbm9kZSA9PT0gbnVs bCkgeworICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICB9CisgICAgcmV0dXJuIG5vZGUuZ2V0 RGF0YSgpOworICB9CisKKyAgc2VsZWN0ZWQoKSB7CisgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRO b2RlOworICB9CisKKyAgc2VsZWN0Tm9kZShzZWxlY3RlZE5vZGUpIHsKKyAgICB0aGlzLnNlbGVj dGVkTm9kZSA9IHNlbGVjdGVkTm9kZTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC90cmVlL3RyZWVfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvdHJlZS90cmVlX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAu LjE2NGNlYjViCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90 cmVlL3RyZWVfc3BlYy5qcwpAQCAtMCwwICsxLDQyMSBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v CisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KKworaW1wb3J0IHtUcmVlLCBUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1p bi9zdGF0aWMvanMvdHJlZS90cmVlJzsKK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4vdHJlZV9m YWtlJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitjb25zdCB0cmVlVGVzdHMgPSAo dHJlZUNsYXNzLCBzZXREZWZhdWx0Q2FsbEJhY2spID0+IHsKKyAgbGV0IHRyZWU7CisgIGJlZm9y ZUVhY2goKCkgPT4geworICAgIHRyZWUgPSBuZXcgdHJlZUNsYXNzKCk7CisgIH0pOworCisgIGRl c2NyaWJlKCcjYWRkTmV3Tm9kZScsICgpID0+IHsKKyAgICBkZXNjcmliZSgnd2hlbiBhZGQgYSBu ZXcgcm9vdCBlbGVtZW50JywgKCkgPT4geworICAgICAgY29udGV4dCgndXNpbmcgW10gYXMgdGhl IHBhcmVudCcsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAg dHJlZS5hZGROZXdOb2RlKCdzb21lIG5ldyBub2RlJywge2RhdGE6ICdpbnRlcmVzdGluZyd9LCB1 bmRlZmluZWQsIFtdKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2NhbiBiZSByZXRyaWV2 ZWQnLCAoKSA9PiB7CisgICAgICAgICAgY29uc3Qgbm9kZSA9IHRyZWUuZmluZE5vZGUoWydzb21l IG5ldyBub2RlJ10pOworICAgICAgICAgIGV4cGVjdChub2RlLmRhdGEpLnRvRXF1YWwoe2RhdGE6 ICdpbnRlcmVzdGluZyd9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3JldHVybiBmYWxz ZSBmb3IgI2hhc1BhcmVudCgpJywgKCkgPT4geworICAgICAgICAgIGNvbnN0IG5vZGUgPSB0cmVl LmZpbmROb2RlKFsnc29tZSBuZXcgbm9kZSddKTsKKyAgICAgICAgICBleHBlY3Qobm9kZS5oYXNQ YXJlbnQoKSkudG9CZShmYWxzZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdyZXR1cm4g bnVsbCBmb3IgI3BhcmVudCgpJywgKCkgPT4geworICAgICAgICAgIGNvbnN0IG5vZGUgPSB0cmVl LmZpbmROb2RlKFsnc29tZSBuZXcgbm9kZSddKTsKKyAgICAgICAgICBleHBlY3Qobm9kZS5wYXJl bnQoKSkudG9CZU51bGwoKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4 dCgndXNpbmcgbnVsbCBhcyB0aGUgcGFyZW50JywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNo KCgpID0+IHsKKyAgICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ3NvbWUgbmV3IG5vZGUnLCB7ZGF0 YTogJ2ludGVyZXN0aW5nJ30sIHVuZGVmaW5lZCwgbnVsbCk7CisgICAgICAgIH0pOworCisgICAg ICAgIGl0KCdjYW4gYmUgcmV0cmlldmVkJywgKCkgPT4geworICAgICAgICAgIGNvbnN0IG5vZGUg PSB0cmVlLmZpbmROb2RlKFsnc29tZSBuZXcgbm9kZSddKTsKKyAgICAgICAgICBleHBlY3Qobm9k ZS5kYXRhKS50b0VxdWFsKHtkYXRhOiAnaW50ZXJlc3RpbmcnfSk7CisgICAgICAgIH0pOworCisg ICAgICAgIGl0KCdyZXR1cm4gZmFsc2UgZm9yICNoYXNQYXJlbnQoKScsICgpID0+IHsKKyAgICAg ICAgICBjb25zdCBub2RlID0gdHJlZS5maW5kTm9kZShbJ3NvbWUgbmV3IG5vZGUnXSk7CisgICAg ICAgICAgZXhwZWN0KG5vZGUuaGFzUGFyZW50KCkpLnRvQmUoZmFsc2UpOworICAgICAgICB9KTsK KworICAgICAgICBpdCgncmV0dXJuIG51bGwgZm9yICNwYXJlbnQoKScsICgpID0+IHsKKyAgICAg ICAgICBjb25zdCBub2RlID0gdHJlZS5maW5kTm9kZShbJ3NvbWUgbmV3IG5vZGUnXSk7CisgICAg ICAgICAgZXhwZWN0KG5vZGUucGFyZW50KCkpLnRvQmVOdWxsKCk7CisgICAgICAgIH0pOworICAg ICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3VzaW5nIHVuZGVmaW5lZCBhcyB0aGUgcGFyZW50Jywg KCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICB0cmVlLmFkZE5l d05vZGUoJ3NvbWUgbmV3IG5vZGUnLCB7ZGF0YTogJ2ludGVyZXN0aW5nJ30pOworICAgICAgICB9 KTsKKworICAgICAgICBpdCgnY2FuIGJlIHJldHJpZXZlZCcsICgpID0+IHsKKyAgICAgICAgICBj b25zdCBub2RlID0gdHJlZS5maW5kTm9kZShbJ3NvbWUgbmV3IG5vZGUnXSk7CisgICAgICAgICAg ZXhwZWN0KG5vZGUuZGF0YSkudG9FcXVhbCh7ZGF0YTogJ2ludGVyZXN0aW5nJ30pOworICAgICAg ICB9KTsKKworICAgICAgICBpdCgncmV0dXJuIGZhbHNlIGZvciAjaGFzUGFyZW50KCknLCAoKSA9 PiB7CisgICAgICAgICAgY29uc3Qgbm9kZSA9IHRyZWUuZmluZE5vZGUoWydzb21lIG5ldyBub2Rl J10pOworICAgICAgICAgIGV4cGVjdChub2RlLmhhc1BhcmVudCgpKS50b0JlKGZhbHNlKTsKKyAg ICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3JldHVybiBudWxsIGZvciAjcGFyZW50KCknLCAoKSA9 PiB7CisgICAgICAgICAgY29uc3Qgbm9kZSA9IHRyZWUuZmluZE5vZGUoWydzb21lIG5ldyBub2Rl J10pOworICAgICAgICAgIGV4cGVjdChub2RlLnBhcmVudCgpKS50b0JlTnVsbCgpOworICAgICAg ICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ3doZW4gYWRkIGEgbmV3 IGVsZW1lbnQgYXMgYSBjaGlsZCcsICgpID0+IHsKKyAgICAgIGxldCBwYXJlbnROb2RlOworICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHBhcmVudE5vZGUgPSB0cmVlLmFkZE5ld05v ZGUoJ3BhcmVudCBub2RlJywge2RhdGE6ICdwYXJlbnQgZGF0YSd9LCB1bmRlZmluZWQsIFtdKTsK KyAgICAgICAgdHJlZS5hZGROZXdOb2RlKCdzb21lIG5ldyBub2RlJywge2RhdGE6ICdpbnRlcmVz dGluZyd9LCB1bmRlZmluZWQsIFsncGFyZW50JyArCisgICAgICAgICcgbm9kZSddKTsKKyAgICAg IH0pOworCisgICAgICBpdCgnY2FuIGJlIHJldHJpZXZlZCcsICgpID0+IHsKKyAgICAgICAgY29u c3Qgbm9kZSA9IHRyZWUuZmluZE5vZGUoWydwYXJlbnQgbm9kZScsICdzb21lIG5ldyBub2RlJ10p OworICAgICAgICBleHBlY3Qobm9kZS5kYXRhKS50b0VxdWFsKHtkYXRhOiAnaW50ZXJlc3Rpbmcn fSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybiB0cnVlIGZvciAjaGFzUGFyZW50KCkn LCAoKSA9PiB7CisgICAgICAgIGNvbnN0IG5vZGUgPSB0cmVlLmZpbmROb2RlKFsncGFyZW50IG5v ZGUnLCAnc29tZSBuZXcgbm9kZSddKTsKKyAgICAgICAgZXhwZWN0KG5vZGUuaGFzUGFyZW50KCkp LnRvQmUodHJ1ZSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybiAicGFyZW50IG5vZGUi IG9iamVjdCBmb3IgI3BhcmVudCgpJywgKCkgPT4geworICAgICAgICBjb25zdCBub2RlID0gdHJl ZS5maW5kTm9kZShbJ3BhcmVudCBub2RlJywgJ3NvbWUgbmV3IG5vZGUnXSk7CisgICAgICAgIGV4 cGVjdChub2RlLnBhcmVudCgpKS50b0VxdWFsKHBhcmVudE5vZGUpOworICAgICAgfSk7CisgICAg fSk7CisKKyAgICBkZXNjcmliZSgnd2hlbiBhZGQgYW4gZWxlbWVudCB0aGF0IGFscmVhZHkgZXhp c3RzIHVuZGVyIGEgcGFyZW50JywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Cisg ICAgICAgIHRyZWUuYWRkTmV3Tm9kZSgncGFyZW50IG5vZGUnLCB7ZGF0YTogJ3BhcmVudCBkYXRh J30sIHVuZGVmaW5lZCwgW10pOworICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ3NvbWUgbmV3IG5v ZGUnLCB7ZGF0YTogJ2ludGVyZXN0aW5nJ30sIHVuZGVmaW5lZCwgWydwYXJlbnQnICsKKyAgICAg ICAgJyBub2RlJ10pOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkb2VzIG5vdCBhZGQgYSBuZXcg Y2hpbGQnLCAoKSA9PiB7CisgICAgICAgIHRyZWUuYWRkTmV3Tm9kZSgnc29tZSBuZXcgbm9kZScs IHtkYXRhOiAnaW50ZXJlc3RpbmcgMSd9LCB1bmRlZmluZWQsIFsncGFyZW50JyArCisgICAgICAg ICcgbm9kZSddKTsKKyAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRyZWUuZmluZE5vZGUoWydw YXJlbnQgbm9kZSddKTsKKyAgICAgICAgZXhwZWN0KHBhcmVudE5vZGUuY2hpbGRyZW4ubGVuZ3Ro KS50b0JlKDEpOworICAgICAgfSk7CisKKyAgICAgIGl0KCd1cGRhdGVzIHRoZSBleGlzdGluZyBu b2RlIGRhdGEnLCAoKSA9PiB7CisgICAgICAgIHRyZWUuYWRkTmV3Tm9kZSgnc29tZSBuZXcgbm9k ZScsIHtkYXRhOiAnaW50ZXJlc3RpbmcgMSd9LCB1bmRlZmluZWQsIFsncGFyZW50JyArCisgICAg ICAgICcgbm9kZSddKTsKKyAgICAgICAgY29uc3Qgbm9kZSA9IHRyZWUuZmluZE5vZGUoWydwYXJl bnQgbm9kZScsICdzb21lIG5ldyBub2RlJ10pOworICAgICAgICBleHBlY3Qobm9kZS5kYXRhKS50 b0VxdWFsKHtkYXRhOiAnaW50ZXJlc3RpbmcgMSd9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9 KTsKKworICBkZXNjcmliZSgnI3RyYW5zbGF0ZVRyZWVOb2RlSWRGcm9tQUNJVHJlZScsICgpID0+ IHsKKyAgICBsZXQgYWNpVHJlZUFwaTsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGFj aVRyZWVBcGkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignQUNJVHJlZUFwaScsIFsKKyAgICAgICAg J2hhc1BhcmVudCcsCisgICAgICAgICdwYXJlbnQnLAorICAgICAgICAnZ2V0SWQnLAorICAgICAg XSk7CisKKyAgICAgIGFjaVRyZWVBcGkuZ2V0SWQuYW5kLmNhbGxGYWtlKChub2RlKSA9PiB7Cisg ICAgICAgIHJldHVybiBub2RlWzBdLmlkOworICAgICAgfSk7CisgICAgICB0cmVlLmFjaVRyZWVB cGkgPSBhY2lUcmVlQXBpOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ1doZW4gdHJlZSBhcyBh IHNpbmdsZSBsZXZlbCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAg ICBhY2lUcmVlQXBpLmhhc1BhcmVudC5hbmQucmV0dXJuVmFsdWUoZmFsc2UpOworICAgICAgfSk7 CisKKyAgICAgIGl0KCdyZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIElEIG9mIHRoZSBmaXJzdCBs ZXZlbCcsICgpID0+IHsKKyAgICAgICAgbGV0IG5vZGUgPSBbeworICAgICAgICAgIGlkOiAnc29t ZSBpZCcsCisgICAgICAgIH1dOworICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ3NvbWUgaWQnLCB7 fSwgdW5kZWZpbmVkLCBbXSk7CisKKyAgICAgICAgZXhwZWN0KHRyZWUudHJhbnNsYXRlVHJlZU5v ZGVJZEZyb21BQ0lUcmVlKG5vZGUpKS50b0VxdWFsKFsnc29tZSBpZCddKTsKKyAgICAgIH0pOwor ICAgIH0pOworCisgICAgZGVzY3JpYmUoJ1doZW4gdHJlZSBhcyBhIDIgbGV2ZWxzJywgKCkgPT4g eworICAgICAgZGVzY3JpYmUoJ1doZW4gd2UgdHJ5IHRvIHJldHJpZXZlIHRoZSBub2RlIGluIHRo ZSBzZWNvbmQgbGV2ZWwnLCAoKSA9PiB7CisgICAgICAgIGl0KCdyZXR1cm5zIGFuIGFycmF5IHdp dGggdGhlIElEIG9mIHRoZSBmaXJzdCBsZXZlbCBhbmQgc2Vjb25kIGxldmVsJywgKCkgPT4gewor ICAgICAgICAgIGFjaVRyZWVBcGkuaGFzUGFyZW50LmFuZC5yZXR1cm5WYWx1ZXModHJ1ZSwgZmFs c2UpOworICAgICAgICAgIGFjaVRyZWVBcGkucGFyZW50LmFuZC5yZXR1cm5WYWx1ZShbeworICAg ICAgICAgICAgaWQ6ICdwYXJlbnQgaWQnLAorICAgICAgICAgIH1dKTsKKyAgICAgICAgICBsZXQg bm9kZSA9IFt7CisgICAgICAgICAgICBpZDogJ3NvbWUgaWQnLAorICAgICAgICAgIH1dOworCisg ICAgICAgICAgdHJlZS5hZGROZXdOb2RlKCdwYXJlbnQgaWQnLCB7fSwgdW5kZWZpbmVkLCBbXSk7 CisgICAgICAgICAgdHJlZS5hZGROZXdOb2RlKCdzb21lIGlkJywge30sIHVuZGVmaW5lZCwgWydw YXJlbnQgaWQnXSk7CisKKyAgICAgICAgICBleHBlY3QodHJlZS50cmFuc2xhdGVUcmVlTm9kZUlk RnJvbUFDSVRyZWUobm9kZSkpCisgICAgICAgICAgICAudG9FcXVhbChbJ3BhcmVudCBpZCcsICdz b21lIGlkJ10pOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKworICBk ZXNjcmliZSgnI3NlbGVjdGVkJywgKCkgPT4geworICAgIGNvbnRleHQoJ2Egbm9kZSBpbiB0aGUg dHJlZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAgIGl0KCdyZXR1cm5zIHRoYXQgbm9kZSBv YmplY3QnLCAoKSA9PiB7CisgICAgICAgIGxldCBzZWxlY3RlZE5vZGUgPSBuZXcgVHJlZU5vZGUo J2JhbW0nLCB7fSwgW10pOworICAgICAgICBzZXREZWZhdWx0Q2FsbEJhY2sodHJlZSwgc2VsZWN0 ZWROb2RlKTsKKyAgICAgICAgZXhwZWN0KHRyZWUuc2VsZWN0ZWQoKSkudG9FcXVhbChzZWxlY3Rl ZE5vZGUpOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworCisgIGRlc2NyaWJlKCcjZmluZE5v ZGVCeVRyZWVFbGVtZW50JywgKCkgPT4geworICAgIGNvbnRleHQoJ3JldHJpZXZlIGRhdGEgZnJv bSBub2RlIG5vdCBmb3VuZCcsICgpID0+IHsKKyAgICAgIGl0KCdyZXR1cm4gdW5kZWZpbmVkJywg KCkgPT4geworICAgICAgICBsZXQgYWNpVHJlZUFwaSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdB Q0lUcmVlQXBpJywgWworICAgICAgICAgICdoYXNQYXJlbnQnLAorICAgICAgICAgICdwYXJlbnQn LAorICAgICAgICAgICdnZXRJZCcsCisgICAgICAgIF0pOworCisgICAgICAgIGFjaVRyZWVBcGku Z2V0SWQuYW5kLmNhbGxGYWtlKChub2RlKSA9PiB7CisgICAgICAgICAgcmV0dXJuIG5vZGVbMF0u aWQ7CisgICAgICAgIH0pOworICAgICAgICB0cmVlLmFjaVRyZWVBcGkgPSBhY2lUcmVlQXBpOwor ICAgICAgICBleHBlY3QodHJlZS5maW5kTm9kZUJ5RG9tRWxlbWVudChbJzxsaT5zb21ldGhpbmc8 L2xpPiddKSkudG9CZVVuZGVmaW5lZCgpOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfTsK KworZGVzY3JpYmUoJ3RyZWUgdGVzdHMnLCAoKSA9PiB7CisgIGRlc2NyaWJlKCdUcmVlTm9kZScs ICgpID0+IHsKKyAgICBkZXNjcmliZSgnI2hhc1BhcmVudCcsICgpID0+IHsKKyAgICAgIGNvbnRl eHQoJ3BhcmVudCBpcyBudWxsJywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJucyBmYWxzZScs ICgpID0+IHsKKyAgICAgICAgICBsZXQgdHJlZU5vZGUgPSBuZXcgVHJlZU5vZGUoJzEyMycsIHt9 LCBbXSwgbnVsbCk7CisgICAgICAgICAgZXhwZWN0KHRyZWVOb2RlLmhhc1BhcmVudCgpKS50b0Jl KGZhbHNlKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICAgIGNvbnRleHQoJ3BhcmVudCBp cyB1bmRlZmluZWQnLCAoKSA9PiB7CisgICAgICAgIGl0KCdyZXR1cm5zIGZhbHNlJywgKCkgPT4g eworICAgICAgICAgIGxldCB0cmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnMTIzJywge30sIFtdLCB1 bmRlZmluZWQpOworICAgICAgICAgIGV4cGVjdCh0cmVlTm9kZS5oYXNQYXJlbnQoKSkudG9CZShm YWxzZSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgICBjb250ZXh0KCdwYXJlbnQgZXhp c3RzJywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJucyB0cnVlJywgKCkgPT4geworICAgICAg ICAgIGxldCBwYXJlbnROb2RlID0gbmV3IFRyZWVOb2RlKCc0NTYnLCB7fSwgW10pOworICAgICAg ICAgIGxldCB0cmVlTm9kZSA9IG5ldyBUcmVlTm9kZSgnMTIzJywge30sIFtdLCBwYXJlbnROb2Rl KTsKKyAgICAgICAgICBleHBlY3QodHJlZU5vZGUuaGFzUGFyZW50KCkpLnRvQmUodHJ1ZSk7Cisg ICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgnI3JlbG9hZCcs ICgpID0+IHsKKyAgICAgIGxldCB0cmVlOworICAgICAgbGV0IGxldmVsMjsKKyAgICAgIGJlZm9y ZUVhY2goKCkgPT4geworICAgICAgICB0cmVlID0gbmV3IFRyZWVGYWtlKCk7CisgICAgICAgIHRy ZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywge2RhdGE6ICdpbnRlcmVzdGluZyd9LCBbe2lkOiAnbGV2 ZWwxJ31dLCBbXSk7CisgICAgICAgIGxldmVsMiA9IHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwyJywg e2RhdGE6ICdkYXRhJ30sIFt7aWQ6ICdsZXZlbDInfV0sIFsnbGV2ZWwxJ10pOworICAgICAgICB0 cmVlLmFkZE5ld05vZGUoJ2xldmVsMycsIHtkYXRhOiAnbW9yZSBkYXRhJ30sIFt7aWQ6ICdsZXZl bDMnfV0sIFsnbGV2ZWwxJywgJ2xldmVsMiddKTsKKworICAgICAgICB0cmVlLmFjaVRyZWVBcGkg PSBqYXNtaW5lLmNyZWF0ZVNweU9iaigKKyAgICAgICAgICAnQUNJVHJlZUFwaScsIFsnc2V0SW5v ZGUnLCAndW5sb2FkJywgJ2Rlc2VsZWN0JywgJ3NlbGVjdCddKTsKKyAgICAgIH0pOworCisgICAg ICBpdCgncmVsb2FkcyB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuJywgKCkgPT4geworICAgICAg ICBsZXZlbDIucmVsb2FkKHRyZWUpOworICAgICAgICBleHBlY3QodHJlZS5maW5kTm9kZUJ5RG9t RWxlbWVudChbe2lkOiAnbGV2ZWwyJ31dKSkudG9FcXVhbChsZXZlbDIpOworICAgICAgfSk7CisK KyAgICAgIGl0KCdkb2VzIG5vdCByZWxvYWQgdGhlIGNoaWxkcmVuIG9mIG5vZGUnLCAoKSA9PiB7 CisgICAgICAgIGxldmVsMi5yZWxvYWQodHJlZSk7CisgICAgICAgIGV4cGVjdCh0cmVlLmZpbmRO b2RlQnlEb21FbGVtZW50KFt7aWQ6ICdsZXZlbDMnfV0pKS50b0JlTnVsbCgpOworICAgICAgfSk7 CisKKyAgICAgIGl0KCdzZWxlY3QgdGhlIG5vZGUnLCAoZG9uZSkgPT4geworICAgICAgICBsZXZl bDIucmVsb2FkKHRyZWUpOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICBl eHBlY3QodHJlZS5zZWxlY3RlZCgpKS50b0VxdWFsKFt7aWQ6ICdsZXZlbDInfV0pOworICAgICAg ICAgIGRvbmUoKTsKKyAgICAgICAgfSwgMjApOworICAgICAgfSk7CisKKyAgICAgIGRlc2NyaWJl KCdBQ0lUcmVlIHNwZWNpZmljJywgKCkgPT4geworICAgICAgICBpdCgnc2V0cyB0aGUgY3VycmVu dCBub2RlIGFzIGEgSW5vZGUsIGNoYW5naW5nIHRoZSBJY29uIGJhY2sgdG8gKycsICgpID0+IHsK KyAgICAgICAgICBsZXZlbDIucmVsb2FkKHRyZWUpOworICAgICAgICAgIGV4cGVjdCh0cmVlLmFj aVRyZWVBcGkuc2V0SW5vZGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFt7aWQ6ICdsZXZlbDInfV0p OworICAgICAgICB9KTsKKworICAgICAgICBpdCgnZGVzZWxlY3QgdGhlIG5vZGUgYW5kIHNlbGVj dHMgaXQgYWdhaW4gdG8gdHJpZ2dlciBBQ0kgdHJlZScgKworICAgICAgICAgICcgZXZlbnRzJywg KGRvbmUpID0+IHsKKyAgICAgICAgICBsZXZlbDIucmVsb2FkKHRyZWUpOworICAgICAgICAgIHNl dFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KHRyZWUuYWNpVHJlZUFwaS5kZXNl bGVjdCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoW3tpZDogJ2xldmVsMid9XSk7CisgICAgICAgICAg ICBkb25lKCk7CisgICAgICAgICAgfSwgMjApOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAg IH0pOworCisgICAgZGVzY3JpYmUoJyN1bmxvYWQnLCAoKSA9PiB7CisgICAgICBsZXQgdHJlZTsK KyAgICAgIGxldCBsZXZlbDI7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgdHJl ZSA9IG5ldyBUcmVlRmFrZSgpOworICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMScsIHtk YXRhOiAnaW50ZXJlc3RpbmcnfSwgWyc8bGk+bGV2ZWwxPC9saT4nXSwgW10pOworICAgICAgICBs ZXZlbDIgPSB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMicsIHtkYXRhOiAnZGF0YSd9LCBbJzxsaT5s ZXZlbDI8L2xpPiddLCBbJ2xldmVsMSddKTsKKyAgICAgICAgdHJlZS5hZGROZXdOb2RlKCdsZXZl bDMnLCB7ZGF0YTogJ21vcmUgZGF0YSd9LCBbJzxsaT5sZXZlbDM8L2xpPiddLCBbJ2xldmVsMScs ICdsZXZlbDInXSk7CisgICAgICAgIHRyZWUuYWNpVHJlZUFwaSA9IGphc21pbmUuY3JlYXRlU3B5 T2JqKCdBQ0lUcmVlQXBpJywgWyd1bmxvYWQnXSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3Vu bG9hZHMgdGhlIGNoaWxkcmVuIG9mIHRoZSBjdXJyZW50IG5vZGUnLCAoKSA9PiB7CisgICAgICAg IGxldmVsMi51bmxvYWQodHJlZSk7CisgICAgICAgIGV4cGVjdCh0cmVlLmZpbmROb2RlQnlEb21F bGVtZW50KFt7aWQ6ICdsZXZlbDInfV0pKS50b0VxdWFsKGxldmVsMik7CisgICAgICAgIGV4cGVj dCh0cmVlLmZpbmROb2RlQnlEb21FbGVtZW50KFt7aWQ6ICdsZXZlbDMnfV0pKS50b0JlTnVsbCgp OworICAgICAgfSk7CisKKyAgICAgIGl0KCdjYWxscyB1bmxvYWQgb24gdGhlIEFDSSBUcmVlJywg KCkgPT4geworICAgICAgICBsZXZlbDIudW5sb2FkKHRyZWUpOworICAgICAgICBleHBlY3QodHJl ZS5hY2lUcmVlQXBpLnVubG9hZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoWyc8bGk+bGV2ZWwyPC9s aT4nXSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ1RyZWUnLCAo KSA9PiB7CisgICAgZnVuY3Rpb24gcmVhbFRyZWVTZWxlY3ROb2RlKHRyZWUsIHNlbGVjdGVkTm9k ZSkgeworICAgICAgbGV0IGFjaVRyZWVBcGkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignQUNJVHJl ZUFwaScsIFsKKyAgICAgICAgJ3NlbGVjdGVkJywKKyAgICAgIF0pOworICAgICAgdHJlZS5hY2lU cmVlQXBpID0gYWNpVHJlZUFwaTsKKyAgICAgIGFjaVRyZWVBcGkuc2VsZWN0ZWQuYW5kLnJldHVy blZhbHVlKHNlbGVjdGVkTm9kZSk7CisgICAgfQorCisgICAgdHJlZVRlc3RzKFRyZWUsIHJlYWxU cmVlU2VsZWN0Tm9kZSk7CisgIH0pOworCisgIGRlc2NyaWJlKCdUcmVlRmFrZScsICgpID0+IHsK KyAgICBmdW5jdGlvbiBmYWtlVHJlZVNlbGVjdE5vZGUodHJlZSwgc2VsZWN0ZWROb2RlKSB7Cisg ICAgICB0cmVlLnNlbGVjdE5vZGUoc2VsZWN0ZWROb2RlKTsKKyAgICB9CisKKyAgICB0cmVlVGVz dHMoVHJlZUZha2UsIGZha2VUcmVlU2VsZWN0Tm9kZSk7CisKKyAgICBkZXNjcmliZSgnI2hhc1Bh cmVudCcsICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ3RyZWUgY29udGFpbnMgbXVsdGlwbGUgbGV2 ZWxzJywgKCkgPT4geworICAgICAgICBsZXQgdHJlZTsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9 PiB7CisgICAgICAgICAgdHJlZSA9IG5ldyBUcmVlRmFrZSgpOworICAgICAgICAgIHRyZWUuYWRk TmV3Tm9kZSgnbGV2ZWwxJywge2RhdGE6ICdpbnRlcmVzdGluZyd9LCB1bmRlZmluZWQsIFtdKTsK KyAgICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMicsIHtkYXRhOiAnaW50ZXJlc3Rpbmcn fSwgdW5kZWZpbmVkLCBbJ2xldmVsMSddKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY29udGV4 dCgnbm9kZSBpcyBhdCB0aGUgZmlyc3QgbGV2ZWwnLCAoKSA9PiB7CisgICAgICAgICAgaXQoJ3Jl dHVybnMgZmFsc2UnLCAoKSA9PiB7CisgICAgICAgICAgICBleHBlY3QodHJlZS5oYXNQYXJlbnQo W3tpZDogJ2xldmVsMSd9XSkpLnRvQmUoZmFsc2UpOworICAgICAgICAgIH0pOworICAgICAgICB9 KTsKKworICAgICAgICBjb250ZXh0KCdub2RlIGlzIGF0IHRoZSBzZWNvbmQgbGV2ZWwnLCAoKSA9 PiB7CisgICAgICAgICAgaXQoJ3JldHVybnMgdHJ1ZScsICgpID0+IHsKKyAgICAgICAgICAgIGV4 cGVjdCh0cmVlLmhhc1BhcmVudChbe2lkOiAnbGV2ZWwyJ31dKSkudG9CZSh0cnVlKTsKKyAgICAg ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJl KCcjcGFyZW50JywgKCkgPT4geworICAgICAgbGV0IHRyZWU7CisgICAgICBiZWZvcmVFYWNoKCgp ID0+IHsKKyAgICAgICAgdHJlZSA9IG5ldyBUcmVlRmFrZSgpOworICAgICAgICB0cmVlLmFkZE5l d05vZGUoJ2xldmVsMScsIHtkYXRhOiAnaW50ZXJlc3RpbmcnfSwgdW5kZWZpbmVkLCBbXSk7Cisg ICAgICAgIHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwyJywge2RhdGE6ICdpbnRlcmVzdGluZyd9LCB1 bmRlZmluZWQsIFsnbGV2ZWwxJ10pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ25vZGUg aXMgdGhlIHJvb3QnLCAoKSA9PiB7CisgICAgICAgIGl0KCdyZXR1cm5zIG51bGwnLCAoKSA9PiB7 CisgICAgICAgICAgZXhwZWN0KHRyZWUucGFyZW50KFt7aWQ6ICdsZXZlbDEnfV0pKS50b0JlTnVs bCgpOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCdub2RlIGlzIG5v dCByb290JywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJucyByb290IGVsZW1lbnQnLCAoKSA9 PiB7CisgICAgICAgICAgZXhwZWN0KHRyZWUucGFyZW50KFt7aWQ6ICdsZXZlbDInfV0pKS50b0Vx dWFsKFt7aWQ6ICdsZXZlbDEnfV0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOwor CisgICAgZGVzY3JpYmUoJyNpdGVtRGF0YScsICgpID0+IHsKKyAgICAgIGxldCB0cmVlOworICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHRyZWUgPSBuZXcgVHJlZUZha2UoKTsKKyAg ICAgICAgdHJlZS5hZGROZXdOb2RlKCdsZXZlbDEnLCB7ZGF0YTogJ2ludGVyZXN0aW5nJ30sIHVu ZGVmaW5lZCwgW10pOworICAgICAgICB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMicsIHtkYXRhOiAn ZXhwZWN0ZWQgZGF0YSd9LCB1bmRlZmluZWQsIFsnbGV2ZWwxJ10pOworICAgICAgfSk7CisKKyAg ICAgIGNvbnRleHQoJ3JldHJpZXZlIGRhdGEgZnJvbSB0aGUgbm9kZScsICgpID0+IHsKKyAgICAg ICAgaXQoJ3JldHVybiB0aGUgbm9kZSBkYXRhJywgKCkgPT4geworICAgICAgICAgIGV4cGVjdCh0 cmVlLml0ZW1EYXRhKFt7aWQ6ICdsZXZlbDInfV0pKS50b0VxdWFsKHsKKyAgICAgICAgICAgIGRh dGE6ICdleHBlY3RlZCcgKworICAgICAgICAgICAgJyBkYXRhJywKKyAgICAgICAgICB9KTsKKyAg ICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgncmV0cmlldmUgZGF0YSBmcm9t IG5vZGUgbm90IGZvdW5kJywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJuIHVuZGVmaW5lZCcs ICgpID0+IHsKKyAgICAgICAgICBleHBlY3QodHJlZS5pdGVtRGF0YShbe2lkOiAnYmFtbSd9XSkp LnRvQmVVbmRlZmluZWQoKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAg IGRlc2NyaWJlKCcjYWRkQ2hpbGQnLCAoKSA9PiB7CisgICAgICBsZXQgcm9vdCwgY2hpbGQ7Cisg ICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgbGV0IHRyZWUgPSBuZXcgVHJlZUZha2Uo KTsKKyAgICAgICAgcm9vdCA9IHRyZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHt9LCBbe2lkOiAncm9v dCd9XSk7CisgICAgICAgIGNoaWxkID0gbmV3IFRyZWVOb2RlKCdub2RlLjEnLCB7fSwgW3tpZDog J25vZGUuMSd9XSk7CisgICAgICAgIHRyZWUuYWRkQ2hpbGQocm9vdCwgY2hpbGQpOworICAgICAg fSk7CisKKyAgICAgIGl0KCdhZGRzIGEgbmV3IGNoaWxkIHRvIGEgbm9kZScsICgpID0+IHsKKyAg ICAgICAgZXhwZWN0KHJvb3QuY2hpbGRyZW4pLnRvRXF1YWwoW2NoaWxkXSk7CisgICAgICB9KTsK KworICAgICAgaXQoJ2NoYW5nZXMgdGhlIHBhcmVudCBvZiB0aGUgY2hpbGQgbm9kZScsICgpID0+ IHsKKyAgICAgICAgZXhwZWN0KHJvb3QuY2hpbGRyZW5bMF0ucGFyZW50Tm9kZSkudG9FcXVhbChy b290KTsKKyAgICAgICAgZXhwZWN0KGNoaWxkLnBhcmVudE5vZGUpLnRvRXF1YWwocm9vdCk7Cisg ICAgICB9KTsKKworICAgICAgaXQoJ2NoYW5nZXMgdGhlIHBhdGggb2YgdGhlIGNoaWxkJywgKCkg PT4geworICAgICAgICBleHBlY3QoY2hpbGQucGF0aCkudG9FcXVhbCgncm9vdC5ub2RlLjEnKTsK KyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOworCi0tIAoyLjE2LjIKCg== --000000000000fe853a056ba24cb7 Content-Type: application/octet-stream; name="0001-Change-the-order-of-the-shims-on-the-shim-file.patch" Content-Disposition: attachment; filename="0001-Change-the-order-of-the-shims-on-the-shim-file.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jgwlvb3j3 ZGlmZiAtLWdpdCBhL3dlYi93ZWJwYWNrLnNoaW0uanMgYi93ZWIvd2VicGFjay5zaGltLmpzCmlu ZGV4IDFiNjQ0MmE2Li40ODdkNzNjYiAxMDA2NDQKLS0tIGEvd2ViL3dlYnBhY2suc2hpbS5qcwor KysgYi93ZWIvd2VicGFjay5zaGltLmpzCkBAIC0xMjksNiArMTI5LDcgQEAgdmFyIHdlYnBhY2tT aGltQ29uZmlnID0gewogICAgICdzb3VyY2VzL2dldHRleHQnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL3N0YXRpYy9qcy9nZXR0ZXh0JyksCiAgICAgJ3NvdXJjZXMvdXRpbHMnOiBw YXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3N0YXRpYy9qcy91dGlscycpLAogICAgICdi YWJlbC1wb2x5ZmlsbCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL25vZGVfbW9kdWxlcy9iYWJl bC1wb2x5ZmlsbC9kaXN0L3BvbHlmaWxsJyksCisgICAgJ3Rvb2xzJzogcGF0aC5qb2luKF9fZGly bmFtZSwgJy4vcGdhZG1pbi90b29scy8nKSwKIAogICAgIC8vIFZlbmRvciBKUwogICAgICdqcXVl cnknOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1 ZXJ5JyksCkBAIC0xNjgsMTA1ICsxNjksMTA1IEBAIHZhciB3ZWJwYWNrU2hpbUNvbmZpZyA9IHsK ICAgICAncGdhZG1pbi5iYWNrZm9ybSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4v c3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4nKSwKICAgICAncGdhZG1pbi5iYWNrZ3JpZCc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tncmlkLnBnYWRtaW4n KSwKIAotICAgICdwZ2FkbWluLmJyb3dzZXIucGFuZWwnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAn Li9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL3BhbmVsJyksCi0gICAgJ3BnYWRtaW4ubm9kZS5s YW5ndWFnZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2xhbmd1YWdlcy9zdGF0aWMvanMvbGFuZ3VhZ2UnKSwK LSAgICAncGdhZG1pbi5ub2RlLm12aWV3JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9z dGF0aWMvanMvbXZpZXcnKSwKLSAgICAncGdhZG1pbi50b29scy5tYWludGVuYW5jZSc6IHBhdGgu am9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21h aW50ZW5hbmNlJyksCi0gICAgJ3BnYWRtaW4ubm9kZS5wZ2Ffam9ic3RlcCc6IHBhdGguam9pbihf X2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdhZ2Vu dC9zdGVwcy9zdGF0aWMvanMvcGdhX2pvYnN0ZXAnKSwKLSAgICAncGdhZG1pbi5zcWxlZGl0b3In OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMv anMvc3FsZWRpdG9yJyksCi0gICAgJ3BnYWRtaW4ubm9kZS5mb3JlaWduX3NlcnZlcic6IHBhdGgu am9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL2ZvcmVpZ25fZGF0YV93cmFwcGVycy9mb3JlaWduX3NlcnZlcnMvc3RhdGljL2pz L2ZvcmVpZ25fc2VydmVyJyksCi0gICAgJ3BnYWRtaW4ubm9kZS5kb21haW4nOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2pzL2RvbWFpbicpLAotICAgICdwZ2FkbWluLnRv b2xzLnVzZXJfbWFuYWdlbWVudCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9v bHMvdXNlcl9tYW5hZ2VtZW50L3N0YXRpYy9qcy91c2VyX21hbmFnZW1lbnQnKSwKKyAgICAncGdh ZG1pbi5hYm91dCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYWJvdXQvc3RhdGlj L2pzL2Fib3V0JyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nlcic6IHBhdGguam9pbihfX2Rpcm5hbWUs ICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvYnJvd3NlcicpLAorICAgICdwZ2FkbWluLmJy b3dzZXIuYmdwcm9jZXNzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9taXNjL2Jn cHJvY2Vzcy9zdGF0aWMvanMvYmdwcm9jZXNzJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xs ZWN0aW9uJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9q cy9jb2xsZWN0aW9uJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5kYXRhbW9kZWwnOiBwYXRoLmpv aW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2RhdGFtb2RlbCcpLAor ICAgICdwZ2FkbWluLmJyb3dzZXIuZW5kcG9pbnRzJzogJy9icm93c2VyL2pzL2VuZHBvaW50cycs CisgICAgJ3BnYWRtaW4uYnJvd3Nlci5lcnJvcic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3Bn YWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZXJyb3InKSwKKyAgICAncGdhZG1pbi5icm93c2VyLmZy YW1lJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9m cmFtZScpLAorICAgICdwZ2FkbWluLmJyb3dzZXIua2V5Ym9hcmQnOiBwYXRoLmpvaW4oX19kaXJu YW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2tleWJvYXJkJyksCisgICAgJ3BnYWRt aW4uYnJvd3Nlci5tZW51JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2Vy L3N0YXRpYy9qcy9tZW51JyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5tZXNzYWdlcyc6ICcvYnJv d3Nlci9qcy9tZXNzYWdlcycsCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5ub2RlJzogcGF0aC5qb2lu KF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlJyksCisgICAgJ3Bn YWRtaW4uYnJvd3Nlci5ub2RlLnVpJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9i cm93c2VyL3N0YXRpYy9qcy9ub2RlLnVpJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5vYmplY3Rf ZGVwZW5kcyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vbWlzYy9kZXBlbmRzL3N0 YXRpYy9qcy9kZXBlbmRzJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5vYmplY3Rfc3FsJzogcGF0 aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9taXNjL3NxbC9zdGF0aWMvanMvc3FsJyksCiAg ICAgJ3BnYWRtaW4uYnJvd3Nlci5vYmplY3Rfc3RhdGlzdGljcyc6IHBhdGguam9pbihfX2Rpcm5h bWUsICcuL3BnYWRtaW4vbWlzYy9zdGF0aXN0aWNzL3N0YXRpYy9qcy9zdGF0aXN0aWNzJyksCi0g ICAgJ3BnYWRtaW4ubm9kZS5jb25zdHJhaW50cyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL3N0YXRpYy9qcy9jb25zdHJhaW50cycpLAorICAgICdwZ2FkbWluLmJy b3dzZXIucGFuZWwnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3Rh dGljL2pzL3BhbmVsJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJzog cGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9zdGF0aWMvanMvcHJpdmlsZWdlJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIu dmFyaWFibGUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3N0YXRpYy9qcy92YXJpYWJsZScpLAogICAgICdwZ2FkbWluLmJyb3dz ZXIudGFibGUucGFydGl0aW9uLnV0aWxzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv c3RhdGljL2pzL3BhcnRpdGlvbi51dGlscycpLAorICAgICdwZ2FkbWluLmJyb3dzZXIudXRpbHMn OiAnL2Jyb3dzZXIvanMvdXRpbHMnLAorICAgICdwZ2FkbWluLmJyb3dzZXIud2l6YXJkJzogcGF0 aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy93aXphcmQnKSwK KyAgICAncGdhZG1pbi5kYXNoYm9hcmQnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWlu L2Rhc2hib2FyZC9zdGF0aWMvanMvZGFzaGJvYXJkJyksCisgICAgJ3BnYWRtaW4uZGF0YWdyaWQn OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9q cy9kYXRhZ3JpZCcpLAorICAgICdwZ2FkbWluLmZpbGVfbWFuYWdlcic6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vbWlzYy9maWxlX21hbmFnZXIvc3RhdGljL2pzL2ZpbGVfbWFuYWdl cicpLAorICAgICdwZ2FkbWluLmZpbGVfdXRpbGl0eSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcu L3BnYWRtaW4vbWlzYy9maWxlX21hbmFnZXIvc3RhdGljL2pzL3V0aWxpdHknKSwKKyAgICAncGdh ZG1pbi5taXNjLmV4cGxhaW4nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL21pc2Mv c3RhdGljL2V4cGxhaW4vanMvZXhwbGFpbicpLAorICAgICdwZ2FkbWluLm5vZGUuY2FzdCc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2Nhc3RzL3N0YXRpYy9qcy9jYXN0JyksCiAgICAgJ3BnYWRtaW4ubm9kZS5j YXRhbG9nJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvY2F0YWxvZycpLAotICAg ICdwZ2FkbWluLm5vZGUucm9sZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvc3RhdGljL2pzL3JvbGUnKSwKKyAgICAn cGdhZG1pbi5ub2RlLmNhdGFsb2dfb2JqZWN0JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9jYXRh bG9nX29iamVjdHMvc3RhdGljL2pzL2NhdGFsb2dfb2JqZWN0JyksCisgICAgJ3BnYWRtaW4ubm9k ZS5jYXRhbG9nX29iamVjdF9jb2x1bW4nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2NhdGFsb2df b2JqZWN0cy9jb2x1bW5zL3N0YXRpYy9qcy9jYXRhbG9nX29iamVjdF9jb2x1bW4nKSwKICAgICAn cGdhZG1pbi5ub2RlLmNoZWNrX2NvbnN0cmFpbnQnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3N0YXRpYy9qcy9jaGVja19jb25zdHJh aW50JyksCi0gICAgJ3BnYWRtaW4ubm9kZS51c2VyX21hcHBpbmcnOiBwYXRoLmpvaW4oX19kaXJu YW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9m b3JlaWduX2RhdGFfd3JhcHBlcnMvZm9yZWlnbl9zZXJ2ZXJzL3VzZXJfbWFwcGluZy9zdGF0aWMv anMvdXNlcl9tYXBwaW5nJyksCi0gICAgJ3BnYWRtaW4uYnJvd3Nlci5tZXNzYWdlcyc6ICcvYnJv d3Nlci9qcy9tZXNzYWdlcycsCiAgICAgJ3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nOiBwYXRoLmpv aW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbicpLAotICAgICdw Z2FkbWluLmJyb3dzZXIuZW5kcG9pbnRzJzogJy9icm93c2VyL2pzL2VuZHBvaW50cycsCi0gICAg J3BnYWRtaW4ubm9kZS50YWJsZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRp Yy9qcy90YWJsZScpLAotICAgICdwZ2FkbWluLm5vZGUudGFibGVzcGFjZSc6IHBhdGguam9pbihf X2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGFibGVz cGFjZXMvc3RhdGljL2pzL3RhYmxlc3BhY2UnKSwKLSAgICAncGdhZG1pbi5ub2RlLnNlcnZlcic6 IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvc3RhdGljL2pzL3NlcnZlcicpLAotICAgICdwZ2FkbWluLm5vZGUucGFja2FnZSc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMvc3RhdGljL2pzL3BhY2thZ2UnKSwKLSAgICAn cGdhZG1pbi5icm93c2VyLm1lbnUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jy b3dzZXIvc3RhdGljL2pzL21lbnUnKSwKLSAgICAncGdhZG1pbi5icm93c2VyLm5vZGUudWknOiBw YXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUudWkn KSwKLSAgICAncGdhZG1pbi5ub2RlLnJ1bGUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9ydWxlcy9zdGF0aWMvanMvcnVsZScpLAotICAgICdwZ2FkbWluLm5vZGUuc2VydmVyX2dyb3Vw JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c3RhdGljL2pzL3NlcnZlcl9ncm91cCcpLAotICAgICdwZ2FkbWluLnRvb2xzLmJhY2t1cCc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNr dXAnKSwKLSAgICAncGdhZG1pbi5ub2RlLmZ0c19jb25maWd1cmF0aW9uJzogcGF0aC5qb2luKF9f ZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvc3RhdGljL2pzL2Z0c19jb25maWd1cmF0aW9u JyksCisgICAgJ3BnYWRtaW4ubm9kZS5jb2x1bW4nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy9jb2x1bW4vc3RhdGljL2pzL2NvbHVtbicpLAorICAgICdwZ2FkbWluLm5vZGUuY29uc3Ry YWludHMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9zdGF0aWMv anMvY29uc3RyYWludHMnKSwKKyAgICAncGdhZG1pbi5ub2RlLmRhdGFiYXNlJzogcGF0aC5qb2lu KF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc3RhdGljL2pzL2RhdGFiYXNlJyksCisgICAgJ3BnYWRtaW4ubm9kZS5kb21haW4nOiBw YXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGljL2pzL2RvbWFpbicpLAorICAgICdw Z2FkbWluLm5vZGUuZG9tYWluX2NvbnN0cmFpbnRzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4v cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL2RvbWFpbl9jb25zdHJhaW50cy9zdGF0aWMvanMvZG9tYWluX2NvbnN0cmFpbnRzJyks CiAgICAgJ3BnYWRtaW4ubm9kZS5ldmVudF90cmlnZ2VyJzogcGF0aC5qb2luKF9fZGlybmFtZSwg Jy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXZlbnRf dHJpZ2dlcnMvc3RhdGljL2pzL2V2ZW50X3RyaWdnZXInKSwKLSAgICAncGdhZG1pbi5icm93c2Vy LmJncHJvY2Vzcyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vbWlzYy9iZ3Byb2Nl c3Mvc3RhdGljL2pzL2JncHJvY2VzcycpLAotICAgICdwZ2FkbWluLm5vZGUucGdhX2pvYic6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdhZ2VudC9zdGF0aWMvanMvcGdhX2pvYicpLAotICAgICdwZ2FkbWluLm5vZGUuZnVuY3Rp b24nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9zdGF0aWMvanMvZnVuY3Rpb24n KSwKLSAgICAncGdhZG1pbi5maWxlX3V0aWxpdHknOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9w Z2FkbWluL21pc2MvZmlsZV9tYW5hZ2VyL3N0YXRpYy9qcy91dGlsaXR5JyksCi0gICAgJ3BnYWRt aW4uYnJvd3Nlci5vYmplY3RfZGVwZW5kcyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vbWlzYy9kZXBlbmRzL3N0YXRpYy9qcy9kZXBlbmRzJyksCiAgICAgJ3BnYWRtaW4ubm9kZS5l ZGJmdW5jJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9wYWNrYWdlcy9lZGJmdW5jcy9zdGF0aWMv anMvZWRiZnVuYycpLAotICAgICdwZ2FkbWluLm5vZGUuc2VxdWVuY2UnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3NlcXVlbmNlcy9zdGF0aWMvanMvc2VxdWVuY2UnKSwKICAgICAncGdhZG1pbi5u b2RlLmVkYnByb2MnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3BhY2thZ2VzL2VkYmZ1bmNzL3N0 YXRpYy9qcy9lZGJwcm9jJyksCi0gICAgJ3BnYWRtaW4uYnJvd3Nlci5vYmplY3Rfc3FsJzogcGF0 aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9taXNjL3NxbC9zdGF0aWMvanMvc3FsJyksCi0g ICAgJ3BnYWRtaW4ucHJlZmVyZW5jZXMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWlu L3ByZWZlcmVuY2VzL3N0YXRpYy9qcy9wcmVmZXJlbmNlcycpLAotICAgICdwZ2FkbWluLm5vZGUu ZG9tYWluX2NvbnN0cmFpbnRzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFp bl9jb25zdHJhaW50cy9zdGF0aWMvanMvZG9tYWluX2NvbnN0cmFpbnRzJyksCi0gICAgJ3NsaWNr LnBnYWRtaW4uZm9ybWF0dGVycyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9v bHMvLi4vc3RhdGljL2pzL3NsaWNrZ3JpZC9mb3JtYXR0ZXJzJyksCi0gICAgJ3BnYWRtaW4ubm9k ZS5jYXRhbG9nX29iamVjdCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvY2F0YWxvZ19vYmplY3Rz L3N0YXRpYy9qcy9jYXRhbG9nX29iamVjdCcpLAotICAgICdwZ2FkbWluLmRhc2hib2FyZCc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9kYXNoYm9h cmQnKSwKLSAgICAncGdhZG1pbi5ub2RlLmZvcmVpZ25fZGF0YV93cmFwcGVyJzogcGF0aC5qb2lu KF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvZm9yZWlnbl9kYXRhX3dyYXBwZXJzL3N0YXRpYy9qcy9mb3JlaWduX2RhdGFfd3JhcHBl cicpLAorICAgICdwZ2FkbWluLm5vZGUuZWRidmFyJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4v cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9w YWNrYWdlcy9lZGJ2YXJzL3N0YXRpYy9qcy9lZGJ2YXInKSwKKyAgICAncGdhZG1pbi5ub2RlLmV4 Y2x1c2lvbl9jb25zdHJhaW50JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3Ry YWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3RhdGljL2pzL2V4Y2x1c2lvbl9jb25zdHJhaW50 JyksCisgICAgJ3BnYWRtaW4ubm9kZS5leHRlbnNpb24nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAn Li9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNp b25zL3N0YXRpYy9qcy9leHRlbnNpb24nKSwKICAgICAncGdhZG1pbi5ub2RlLmV4dGVybmFsX3Rh YmxlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9zdGF0aWMvanMvYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVybmFsX3RhYmxlcy9pbmRleCcpLAot ICAgICdwZ2FkbWluLm5vZGUuZXh0ZXJuYWxfdGFibGVzJzogcGF0aC5qb2luKF9fZGlybmFtZSwg Jy4vcGdhZG1pbi9zdGF0aWMvanMvYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2V4dGVybmFsX3RhYmxlcy9pbmRleCcpLAorICAgICdwZ2FkbWluLm5vZGUuZm9yZWlnbl9k YXRhX3dyYXBwZXInOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9mb3JlaWduX2RhdGFfd3JhcHBlcnMvc3RhdGlj L2pzL2ZvcmVpZ25fZGF0YV93cmFwcGVyJyksCiAgICAgJ3BnYWRtaW4ubm9kZS5mb3JlaWduX2tl eSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5 L3N0YXRpYy9qcy9mb3JlaWduX2tleScpLAotICAgICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyLnZh cmlhYmxlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9zdGF0aWMvanMvdmFyaWFibGUnKSwKLSAgICAncGdhZG1pbi50b29scy5n cmFudF93aXphcmQnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2dyYW50 X3dpemFyZC9zdGF0aWMvanMvZ3JhbnRfd2l6YXJkJyksCi0gICAgJ3BnYWRtaW4uYnJvd3Nlci5k YXRhbW9kZWwnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGlj L2pzL2RhdGFtb2RlbCcpLAotICAgICdwZ2FkbWluLnRvb2xzLnJlc3RvcmUnOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmUnKSwK KyAgICAncGdhZG1pbi5ub2RlLmZvcmVpZ25fc2VydmVyJzogcGF0aC5qb2luKF9fZGlybmFtZSwg Jy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZm9yZWln bl9kYXRhX3dyYXBwZXJzL2ZvcmVpZ25fc2VydmVycy9zdGF0aWMvanMvZm9yZWlnbl9zZXJ2ZXIn KSwKKyAgICAncGdhZG1pbi5ub2RlLmZvcmVpZ25fdGFibGUnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2ZvcmVpZ25fdGFibGVzL3N0YXRpYy9qcy9mb3JlaWduX3RhYmxlJyksCisgICAgJ3BnYWRt aW4ubm9kZS5mdHNfY29uZmlndXJhdGlvbic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2Nv bmZpZ3VyYXRpb25zL3N0YXRpYy9qcy9mdHNfY29uZmlndXJhdGlvbicpLAorICAgICdwZ2FkbWlu Lm5vZGUuZnRzX2RpY3Rpb25hcnknOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0aW9u YXJpZXMvc3RhdGljL2pzL2Z0c19kaWN0aW9uYXJ5JyksCisgICAgJ3BnYWRtaW4ubm9kZS5mdHNf cGFyc2VyJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2VyL3N0YXRpYy9qcy9mdHNf cGFyc2VyJyksCisgICAgJ3BnYWRtaW4ubm9kZS5mdHNfdGVtcGxhdGUnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2Z0c190ZW1wbGF0ZXMvc3RhdGljL2pzL2Z0c190ZW1wbGF0ZScpLAorICAgICdw Z2FkbWluLm5vZGUuZnVuY3Rpb24nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9z dGF0aWMvanMvZnVuY3Rpb24nKSwKKyAgICAncGdhZG1pbi5ub2RlLmluZGV4JzogcGF0aC5qb2lu KF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvaW5kZXhlcy9zdGF0aWMvanMvaW5kZXgnKSwKKyAgICAncGdh ZG1pbi5ub2RlLmxhbmd1YWdlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvbGFuZ3VhZ2VzL3N0YXRpYy9qcy9s YW5ndWFnZScpLAorICAgICdwZ2FkbWluLm5vZGUubXZpZXcnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3N0YXRpYy9qcy9tdmlldycpLAorICAgICdwZ2FkbWluLm5vZGUucGFja2FnZSc6 IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMvc3RhdGljL2pzL3BhY2thZ2UnKSwKKyAg ICAncGdhZG1pbi5ub2RlLnBhcnRpdGlvbic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3BhcnRpdGlvbnMvc3RhdGljL2pzL3BhcnRpdGlvbicpLAorICAgICdwZ2FkbWluLm5vZGUucGdh X2pvYic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcGdhZ2VudC9zdGF0aWMvanMvcGdhX2pvYicpLAorICAgICdwZ2FkbWluLm5v ZGUucGdhX2pvYnN0ZXAnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnYWdlbnQvc3RlcHMvc3RhdGljL2pzL3BnYV9qb2JzdGVw JyksCisgICAgJ3BnYWRtaW4ubm9kZS5wZ2Ffc2NoZWR1bGUnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnYWdlbnQvc2NoZWR1 bGVzL3N0YXRpYy9qcy9wZ2Ffc2NoZWR1bGUnKSwKKyAgICAncGdhZG1pbi5ub2RlLnByaW1hcnlf a2V5JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29u c3RyYWludC9zdGF0aWMvanMvcHJpbWFyeV9rZXknKSwKICAgICAncGdhZG1pbi5ub2RlLnByb2Nl ZHVyZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy9wcm9jZWR1 cmUnKSwKLSAgICAncGdhZG1pbi5icm93c2VyLnNlcnZlci5wcml2aWxlZ2UnOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3N0YXRp Yy9qcy9wcml2aWxlZ2UnKSwKICAgICAncGdhZG1pbi5ub2RlLnJlc291cmNlX2dyb3VwJzogcGF0 aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9yZXNvdXJjZV9ncm91cHMvc3RhdGljL2pzL3Jlc291cmNlX2dyb3VwJyksCi0gICAgJ3BnYWRt aW4ubm9kZS5leGNsdXNpb25fY29uc3RyYWludCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9jb25zdHJhaW50L3N0YXRpYy9qcy9leGNsdXNpb25f Y29uc3RyYWludCcpLAotICAgICdwZ2FkbWluLm5vZGUucHJpbWFyeV9rZXknOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3N0YXRpYy9q cy9wcmltYXJ5X2tleScpLAotICAgICdwZ2FkbWluLnRvb2xzLmRlYnVnZ2VyLmRpcmVjdCc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2pzL2Rp cmVjdCcpLAotICAgICdwZ2FkbWluLnNldHRpbmdzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4v cGdhZG1pbi9zZXR0aW5ncy9zdGF0aWMvanMvc2V0dGluZ3MnKSwKKyAgICAncGdhZG1pbi5ub2Rl LnJvbGUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3JvbGVzL3N0YXRpYy9qcy9yb2xlJyksCisgICAgJ3BnYWRtaW4ubm9kZS5y dWxlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvcnVsZXMvc3RhdGljL2pzL3J1bGUn KSwKICAgICAncGdhZG1pbi5ub2RlLnNjaGVtYSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3Rh dGljL2pzL3NjaGVtYScpLAotICAgICdwZ2FkbWluLmJyb3dzZXIuZXJyb3InOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Vycm9yJyksCi0gICAgJ3Bn YWRtaW4udG9vbHMuaW1wb3J0X2V4cG9ydCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vdG9vbHMvaW1wb3J0X2V4cG9ydC9zdGF0aWMvanMvaW1wb3J0X2V4cG9ydCcpLAotICAgICdw Z2FkbWluLm5vZGUudmlldyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3RhdGljL2pz L3ZpZXcnKSwKLSAgICAncGdhZG1pbi50b29scy5kZWJ1Z2dlci51aSc6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2pzL2RlYnVnZ2VyX3VpJyks Ci0gICAgJ3BnYWRtaW4udG9vbHMuZGVidWdnZXIudXRpbHMnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcl91dGlscycpLAot ICAgICdwZ2FkbWluLm5vZGUucGdhX3NjaGVkdWxlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4v cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ2FnZW50L3NjaGVkdWxlcy9z dGF0aWMvanMvcGdhX3NjaGVkdWxlJyksCi0gICAgJ3BnYWRtaW4ubm9kZS5jYXRhbG9nX29iamVj dF9jb2x1bW4nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2NhdGFsb2dfb2JqZWN0cy9jb2x1bW5z L3N0YXRpYy9qcy9jYXRhbG9nX29iamVjdF9jb2x1bW4nKSwKLSAgICAncGdhZG1pbi5icm93c2Vy LmNvbGxlY3Rpb24nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3Rh dGljL2pzL2NvbGxlY3Rpb24nKSwKLSAgICAncGdhZG1pbi5icm93c2VyLm5vZGUnOiBwYXRoLmpv aW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUnKSwKLSAgICAn cGdhZG1pbi5taXNjLmV4cGxhaW4nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL21p c2Mvc3RhdGljL2V4cGxhaW4vanMvZXhwbGFpbicpLAorICAgICdwZ2FkbWluLm5vZGUuc2NoZW1h LmRpcic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzLycpLAorICAgICdwZ2FkbWlu Lm5vZGUuc2VxdWVuY2UnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy9zdGF0aWMv anMvc2VxdWVuY2UnKSwKKyAgICAncGdhZG1pbi5ub2RlLnNlcnZlcic6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvc3RhdGljL2pz L3NlcnZlcicpLAorICAgICdwZ2FkbWluLm5vZGUuc2VydmVyX2dyb3VwJzogcGF0aC5qb2luKF9f ZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc3RhdGljL2pzL3NlcnZl cl9ncm91cCcpLAogICAgICdwZ2FkbWluLm5vZGUuc3lub255bSc6IHBhdGguam9pbihfX2Rpcm5h bWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvc3lub255bXMvc3RhdGljL2pzL3N5bm9ueW0nKSwKLSAgICAncGdhZG1pbi5ub2RlLmV4 dGVuc2lvbic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvc3RhdGljL2pzL2V4dGVuc2lvbicp LAotICAgICdwZ2FkbWluLm5vZGUudW5pcXVlX2NvbnN0cmFpbnQnOiBwYXRoLmpvaW4oX19kaXJu YW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50L3N0YXRpYy9qcy91bmlx dWVfY29uc3RyYWludCcpLAotICAgICdwZ2FkbWluLm5vZGUuZGF0YWJhc2UnOiBwYXRoLmpvaW4o X19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zdGF0aWMvanMvZGF0YWJhc2UnKSwKLSAgICAncGdhZG1pbi5ub2RlLmVkYnZhcic6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvcGFja2FnZXMvZWRidmFycy9zdGF0aWMvanMvZWRidmFyJyks CisgICAgJ3BnYWRtaW4ubm9kZS50YWJsZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3N0YXRpYy9qcy90YWJsZScpLAorICAgICdwZ2FkbWluLm5vZGUudGFibGVzcGFjZSc6IHBhdGgu am9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv dGFibGVzcGFjZXMvc3RhdGljL2pzL3RhYmxlc3BhY2UnKSwKICAgICAncGdhZG1pbi5ub2RlLnRy aWdnZXInOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvanMv dHJpZ2dlcicpLAotICAgICdwZ2FkbWluLmJyb3dzZXIud2l6YXJkJzogcGF0aC5qb2luKF9fZGly bmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy93aXphcmQnKSwKLSAgICAncGdhZG1p bi5zZXJ2ZXIuc3VwcG9ydGVkX3NlcnZlcnMnOiAnL2Jyb3dzZXIvc2VydmVyL3N1cHBvcnRlZF9z ZXJ2ZXJzJywKLSAgICAncGdhZG1pbi5ub2RlLnBhcnRpdGlvbic6IHBhdGguam9pbihfX2Rpcm5h bWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvc3RhdGljL2pzL3BhcnRpdGlvbicpLAotICAgICdwZ2Fk bWluLm5vZGUuZnRzX3RlbXBsYXRlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxh dGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxhdGUnKSwKLSAgICAncGdhZG1pbi5ub2RlLmNhc3QnOiBw YXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9jYXN0cy9zdGF0aWMvanMvY2FzdCcpLAotICAgICdwZ2FkbWluLnRvb2xz LmRlYnVnZ2VyLmNvbnRyb2xsZXInOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rv b2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcicpLAotICAgICdwZ2FkbWluLm5vZGUuZnRz X3BhcnNlcic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3BhcnNlci9zdGF0aWMvanMvZnRz X3BhcnNlcicpLAotICAgICdwZ2FkbWluLmJyb3dzZXIudXRpbHMnOiAnL2Jyb3dzZXIvanMvdXRp bHMnLAotICAgICdwZ2FkbWluLmFib3V0JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1p bi9hYm91dC9zdGF0aWMvanMvYWJvdXQnKSwKLSAgICAnc2xpY2sucGdhZG1pbi5lZGl0b3JzJzog cGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29scy8uLi9zdGF0aWMvanMvc2xpY2tn cmlkL2VkaXRvcnMnKSwKLSAgICAncGdhZG1pbi5ub2RlLmNvbHVtbic6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uJyksCi0gICAgJ3BnYWRtaW4u bm9kZS5mb3JlaWduX3RhYmxlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxl cy9zdGF0aWMvanMvZm9yZWlnbl90YWJsZScpLAotICAgICdwZ2FkbWluLm5vZGUuZnRzX2RpY3Rp b25hcnknOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0aW9uYXJpZXMvc3RhdGljL2pz L2Z0c19kaWN0aW9uYXJ5JyksCi0gICAgJ3BnYWRtaW4uZGF0YWdyaWQnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3JpZCcpLAog ICAgICdwZ2FkbWluLm5vZGUudHJpZ2dlcl9mdW5jdGlvbic6IHBhdGguam9pbihfX2Rpcm5hbWUs ICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnVuY3Rpb25zL3N0YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9uJyksCi0gICAgJ3BnYWRtaW4u dXNlcl9tYW5hZ2VtZW50LmN1cnJlbnRfdXNlcic6ICcvdXNlcl9tYW5hZ2VtZW50L2N1cnJlbnRf dXNlcicsCi0gICAgJ3BnYWRtaW4ubm9kZS5pbmRleCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcu L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2luZGV4ZXMvc3RhdGljL2pzL2luZGV4JyksCi0gICAgJ3BnYWRtaW4uYnJvd3Nlci5m cmFtZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMv ZnJhbWUnKSwKICAgICAncGdhZG1pbi5ub2RlLnR5cGUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAn Li9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3R5cGVzL3N0YXRpYy9qcy90eXBlJyksCi0gICAgJ3BnYWRtaW4uZmlsZV9tYW5hZ2VyJzogcGF0 aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9taXNjL2ZpbGVfbWFuYWdlci9zdGF0aWMvanMv ZmlsZV9tYW5hZ2VyJyksCi0gICAgJ3BnYWRtaW4uYnJvd3Nlci5rZXlib2FyZCc6IHBhdGguam9p bihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMva2V5Ym9hcmQnKSwKKyAg ICAncGdhZG1pbi5ub2RlLnVuaXF1ZV9jb25zdHJhaW50JzogcGF0aC5qb2luKF9fZGlybmFtZSwg Jy4vcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvanMvdW5pcXVlX2Nv bnN0cmFpbnQnKSwKKyAgICAncGdhZG1pbi5ub2RlLnVzZXJfbWFwcGluZyc6IHBhdGguam9pbihf X2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2ZvcmVpZ25fZGF0YV93cmFwcGVycy9mb3JlaWduX3NlcnZlcnMvdXNlcl9tYXBwaW5nL3N0 YXRpYy9qcy91c2VyX21hcHBpbmcnKSwKKyAgICAncGdhZG1pbi5ub2RlLnZpZXcnOiBwYXRoLmpv aW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9qcy92aWV3JyksCisgICAgJ3BnYWRtaW4ucHJl ZmVyZW5jZXMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3ByZWZlcmVuY2VzL3N0 YXRpYy9qcy9wcmVmZXJlbmNlcycpLAorICAgICdwZ2FkbWluLnNldHRpbmdzJzogcGF0aC5qb2lu KF9fZGlybmFtZSwgJy4vcGdhZG1pbi9zZXR0aW5ncy9zdGF0aWMvanMvc2V0dGluZ3MnKSwKKyAg ICAncGdhZG1pbi5zZXJ2ZXIuc3VwcG9ydGVkX3NlcnZlcnMnOiAnL2Jyb3dzZXIvc2VydmVyL3N1 cHBvcnRlZF9zZXJ2ZXJzJywKKyAgICAncGdhZG1pbi5zcWxlZGl0b3InOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yJyks CiAgICAgJ3BnYWRtaW4udGFibGVzLmpzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv c3RhdGljL2pzLycpLAorICAgICdwZ2FkbWluLnRvb2xzLmJhY2t1cCc6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXAnKSwKKyAgICAn cGdhZG1pbi50b29scy5kZWJ1Z2dlci5jb250cm9sbGVyJzogcGF0aC5qb2luKF9fZGlybmFtZSwg Jy4vcGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdnZXInKSwKKyAgICAncGdh ZG1pbi50b29scy5kZWJ1Z2dlci5kaXJlY3QnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2Fk bWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kaXJlY3QnKSwKKyAgICAncGdhZG1pbi50b29s cy5kZWJ1Z2dlci51aSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvZGVi dWdnZXIvc3RhdGljL2pzL2RlYnVnZ2VyX3VpJyksCisgICAgJ3BnYWRtaW4udG9vbHMuZGVidWdn ZXIudXRpbHMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2Vy L3N0YXRpYy9qcy9kZWJ1Z2dlcl91dGlscycpLAorICAgICdwZ2FkbWluLnRvb2xzLmdyYW50X3dp emFyZCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJk L3N0YXRpYy9qcy9ncmFudF93aXphcmQnKSwKKyAgICAncGdhZG1pbi50b29scy5pbXBvcnRfZXhw b3J0JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29scy9pbXBvcnRfZXhwb3J0 L3N0YXRpYy9qcy9pbXBvcnRfZXhwb3J0JyksCisgICAgJ3BnYWRtaW4udG9vbHMubWFpbnRlbmFu Y2UnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3N0 YXRpYy9qcy9tYWludGVuYW5jZScpLAorICAgICdwZ2FkbWluLnRvb2xzLnJlc3RvcmUnOiBwYXRo LmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3Rv cmUnKSwKKyAgICAncGdhZG1pbi50b29scy51c2VyX21hbmFnZW1lbnQnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9zdGF0aWMvanMvdXNlcl9t YW5hZ2VtZW50JyksCisgICAgJ3BnYWRtaW4udXNlcl9tYW5hZ2VtZW50LmN1cnJlbnRfdXNlcic6 ICcvdXNlcl9tYW5hZ2VtZW50L2N1cnJlbnRfdXNlcicsCisgICAgJ3NsaWNrLnBnYWRtaW4uZWRp dG9ycyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvLi4vc3RhdGljL2pz L3NsaWNrZ3JpZC9lZGl0b3JzJyksCisgICAgJ3NsaWNrLnBnYWRtaW4uZm9ybWF0dGVycyc6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvLi4vc3RhdGljL2pzL3NsaWNrZ3Jp ZC9mb3JtYXR0ZXJzJyksCiAgIH0sCiAgIGV4dGVybmFsczogWwogICAgICdwZ2FkbWluLnVzZXJf bWFuYWdlbWVudC5jdXJyZW50X3VzZXInLAotLSAKMi4xNi4yCgo= --000000000000fe853a056ba24cb7--