Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l40M4-0006lH-Rq for pgadmin-hackers@arkaria.postgresql.org; Mon, 25 Jan 2021 11:48:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l40M3-0004jq-Pc for pgadmin-hackers@arkaria.postgresql.org; Mon, 25 Jan 2021 11:48:23 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l40M3-0004jj-1n for pgadmin-hackers@lists.postgresql.org; Mon, 25 Jan 2021 11:48:23 +0000 Received: from mail-lf1-x131.google.com ([2a00:1450:4864:20::131]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1l40Lz-00021c-60 for pgadmin-hackers@postgresql.org; Mon, 25 Jan 2021 11:48:22 +0000 Received: by mail-lf1-x131.google.com with SMTP id q12so17234802lfo.12 for ; Mon, 25 Jan 2021 03:48:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KBMR04sZEzecLyliUNQGfRjqeOMt2lH4PEUxBRu9QJg=; b=xksgYyXfCRBbk0XyoQ6hzu8hfwwWj5viEK5fyfnfVnyusdoOW9kmLpu8S9i02NFTCz s+kwIR44f/zxbelj+KrblIaQgvMhEzNvP/3x4UxDyx+n7C5fbpenEfSHwRKBZyc5YcTJ cXNUwCQvN1NIsb39BU6moQtpOW2LA1rSkgYEfQBAAU7e+8QUVFEM0PrsbJi2HT5256yN mOszBxt5bio1Hgy0KxtRvDP9f4mRW7hDOHYm1R26Bewejeg6LOE863yQBITpGF/6Z3Wx RPG9s1HS+3j7X375t3hZ5/MW2vBHMMFo0j0fQWaqdDW5HHT73c54n23ZEV3rFTRZMk/e +arg== 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=KBMR04sZEzecLyliUNQGfRjqeOMt2lH4PEUxBRu9QJg=; b=NW0WYCSNDws9dvzOnY+kwsppaDoVzpY8SYUGydn32IrgT1x2W+AKaRIEjvkgy0PqZs t0otSzSsM555bq5Ns6XC3KmmBrRaNzET93SQFJkcjZkbaxChMlzyhMx1YkHKeFs+1Dg4 ZnziBpGnq9h7jxkgIEvYNc/LpyZN9fDQUgB+lFmmI+x5zo1CmtOmzuSbk0FuhzOmNYwR mmKWtdLwDQq5DWNh/DRg6u/imT+Plp1uTn+1sq/q5ycSxc9VKOv0FsU37FlgyBOUGnuR e0WPdcDFUCt+QMQDJfalBcbtn3foulAJhFSL+3hQDQS7axLskAsrWiDxQzN/p6RSmwAR 5wOw== X-Gm-Message-State: AOAM531/H80RtLMNz7RLTr8rbLA9dt7znVg8H4ub8FMO2zavU7MMs7yu UcjITCF9JXfU3cHqKxti/4UsFRKdyXXOyemMj3ZGD/R989GVH/8Dw70EfiGfX8E+wS6KDQSoheK D+yILKZP7gGAeKu2d2vQyFigHzl6umSf8Azpb77BWOdUNPLuNRTLwzLGfhyMaAwLUrA6Urg9szW ajJlfBvSRhnEMCUsPrHvllNg/lL5SkbmlEvJ7LDAMVNKJMCnEGxQ+u5nbGxFQCbzPfUU8X X-Google-Smtp-Source: ABdhPJwovcpwCn2UPIy428KxT7c269bYWwerNjlxy1x8hlgviQgkGTlzfiWcJN7neNAgTYb9YlNFYFNyIlypWwNdXNE= X-Received: by 2002:a05:6512:34c8:: with SMTP id w8mr69705lfr.571.1611575297107; Mon, 25 Jan 2021 03:48:17 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Aditya Toshniwal Date: Mon, 25 Jan 2021 17:17:40 +0530 Message-ID: Subject: Re: [pgAdmin][RM1802] ERD Tool (Beta) To: pgadmin-hackers Cc: Akshay Joshi , Khushboo Vashi , Dave Page Content-Type: multipart/mixed; boundary="0000000000001d161505b9b81dc7" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000001d161505b9b81dc7 Content-Type: multipart/alternative; boundary="0000000000001d161305b9b81dc5" --0000000000001d161305b9b81dc5 Content-Type: text/plain; charset="UTF-8" Hi, Please find the rebased patch from the latest pull. On Mon, Jan 25, 2021 at 5:12 PM Aditya Toshniwal < aditya.toshniwal@enterprisedb.com> wrote: > Hi Hackers, > > Attached is the patch to fix below issues in ERD: > > 1. After opening an existing project, the first table is already > selected but edit, clone, delete buttons are disable. Fixed. > 2. ERD project title gets changed when 2 ERD projects are open & > anyone of it edited. Fixed. > 3. Closing ERD tab, does not ask for confirmation pop up. Added. > 4. Shortcut for 'Show more/Fewer details' is missing. Added. > 5. Deleting primary key does not delete associated links. Fixed. > 6. Long table & schema name are getting out of box. Fixed. > 7. Long table name in notes pop-up need re-alignment. Fixed. > 8. Same table name present in ERD/canvas is allowed in Add Table > dialogue. Added validation in the dialog. > 9. Download image option is added, but it is not perfect yet. Image > icons (table, schema, etc.) are not showing up. > 10. Rename panel option should be disabled by default. It should be > enabled for the tools which implement rename functionality. > 11. The Toolbar is not visible in Safari for the ERD tool. Fixed. > > Please review. > > On Thu, Jan 21, 2021 at 4:32 PM Aditya Toshniwal < > aditya.toshniwal@enterprisedb.com> wrote: > >> Hi, >> >> >> On Thu, Jan 21, 2021 at 3:08 PM Dave Page wrote: >> >>> >>> >>> On Thu, Jan 21, 2021 at 4:48 AM Aditya Toshniwal < >>> aditya.toshniwal@enterprisedb.com> wrote: >>> >>>> Hi Dave, >>>> >>>> On Wed, Jan 20, 2021 at 9:20 PM Dave Page wrote: >>>> >>>>> Hi >>>>> >>>>> Where's the Save Image button gone? I know Aditya was removing it >>>>> whilst working on other things, but it's still required for phase 1 release. >>>>> >>>> It was not working 100% right. :( >>>> So I've removed it for the time being. I'm still working on it. >>>> >>> >>> OK, so that work will be completed in time for the build next week? >>> >> I'm trying my best to make it available before release. I'm struggling to >> make it work perfectly. >> >>> >>> >>>> >>>>> On Mon, Jan 18, 2021 at 11:45 AM Akshay Joshi < >>>>> akshay.joshi@enterprisedb.com> wrote: >>>>> >>>>>> Thanks, patch applied. >>>>>> >>>>>> On Mon, Jan 18, 2021 at 5:08 PM Aditya Toshniwal < >>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>> >>>>>>> OK, So the changes have worked. But still failing at one more place. >>>>>>> Attached the patch fixes it. >>>>>>> >>>>>>> On Mon, Jan 18, 2021 at 4:40 PM Akshay Joshi < >>>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>>> >>>>>>>> Thanks, patch applied. >>>>>>>> >>>>>>>> On Mon, Jan 18, 2021 at 2:58 PM Aditya Toshniwal < >>>>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> The jasmine test cases are working fine on my local machine. The >>>>>>>>> test cases are successful on jenkins other than on linux, not sure why. >>>>>>>>> I have made some fixes by looking at the log. Please review and >>>>>>>>> try. >>>>>>>>> >>>>>>>>> On Mon, Jan 18, 2021 at 1:10 PM Akshay Joshi < >>>>>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>>>>> >>>>>>>>>> Thanks, patch applied. >>>>>>>>>> >>>>>>>>>> On Mon, Jan 18, 2021 at 10:34 AM Aditya Toshniwal < >>>>>>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Akshay, >>>>>>>>>>> >>>>>>>>>>> I forgot to remove few of the dependencies which are not >>>>>>>>>>> required as of now (may be in future). Attached patch removes those >>>>>>>>>>> dependencies from package.json. >>>>>>>>>>> >>>>>>>>>>> On Sat, Jan 16, 2021 at 5:08 PM Akshay Joshi < >>>>>>>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Thanks, patch applied. >>>>>>>>>>>> >>>>>>>>>>>> On Fri, Jan 15, 2021 at 7:01 PM Aditya Toshniwal < >>>>>>>>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> >>>>>>>>>>>>> I've fixed the issues. You can find the comments inline. >>>>>>>>>>>>> I've also added PropTypes for the components for increased >>>>>>>>>>>>> validation. >>>>>>>>>>>>> >>>>>>>>>>>>> On Tue, Jan 12, 2021 at 12:18 PM Khushboo Vashi < >>>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Aditya, >>>>>>>>>>>>>> >>>>>>>>>>>>>> The functionalities and the code looks good to me, however some of the comments as below: >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - Correct the comments at some places (3 occurrences found in /erd/__init__.py) which mention Schema diff instead of ERD. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Some comments in the JS/JSX file regarding components/functions (For example, IconButton (forwardRef), Bodywidget etc.) would >>>>>>>>>>>>>> >>>>>>>>>>>>>> be great help as we all are new to React. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Done. Added comments to the components. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - Remove the unused imports (for ex bad_request) in /erd/__init__.py >>>>>>>>>>>>>> >>>>>>>>>>>>>> Removed. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - Remove commented code >>>>>>>>>>>>>> >>>>>>>>>>>>>> # req_args = request.args >>>>>>>>>>>>>> # if ('recreate' in req_args and >>>>>>>>>>>>>> # req_args['recreate'] == '1'): >>>>>>>>>>>>>> # connect = False >>>>>>>>>>>>>> >>>>>>>>>>>>>> Removed. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - TableNode.jsx, below two lines can be combined. >>>>>>>>>>>>>> >>>>>>>>>>>>>> import { PortModelAlignment, DefaultNodeModel } from >>>>>>>>>>>>>> '@projectstorm/react-diagrams'; >>>>>>>>>>>>>> import { PortWidget } from '@projectstorm/react-diagrams'; >>>>>>>>>>>>>> >>>>>>>>>>>>>> Done. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - onImageClick function in BodyWidget.jsx is no use I think, so it should be removed. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I wanted to keep the code as it will be used in future. >>>>>>>>>>>>> Anyway, I've removed the code. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - I got some console errors while adding/editing tables. Refer to the attached screenshot. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I tried but I didn't get any. Looking at the screenshot, the >>>>>>>>>>>>> error is from the underlying library. Can't do much in this. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - In the column Edit Mode, while deleting the primary key, it gives the error, which does not go away with any further modifications. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Fixed. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - While generating the SQL, if the server is disconnected, a proper error message should be thrown, right now some server side error is coming. >>>>>>>>>>>>>> >>>>>>>>>>>>>> It will show connection lost error now. Fixed. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - Please remove ... from the menu title (New ERD Project(Beta)...) as it is not opening a dialog. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Done. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - For large data sets, generate ERD hangs. >>>>>>>>>>>>>> >>>>>>>>>>>>>> It shows the spinner and waits for the response to come from >>>>>>>>>>>>> the back end. I've used the existing table fetching code which is used at >>>>>>>>>>>>> other places. I'll create an RM to improve the back end code for fetching >>>>>>>>>>>>> the tables data which will help the schema diff tool as well. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - Opening the ERD panel in a new window is not working, it opens in the same tab even if you have set the Preference "Open in new browser tab" to True. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Fixed. Added the setting in "Tab settings". >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - No shortcut is provided to open the ERD Tool. >>>>>>>>>>>>>> >>>>>>>>>>>>>> A shortcut is helpful if we are using it frequently. ERD tool >>>>>>>>>>>>> won't be used that frequently. We already have a limited >>>>>>>>>>>>> number of keys available for shortcuts. I think we should roll out without >>>>>>>>>>>>> shortcut for now. If there is a user demand for it then we can think of >>>>>>>>>>>>> adding it. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - SonarQube fixes required. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Fixed. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> - >>>>>>>>>>>>>> >>>>>>>>>>>>>> *Suggestion:* >>>>>>>>>>>>>> >>>>>>>>>>>>>> While removal of the FK link, If any of the table is selected, it is being deleted with FK link. >>>>>>>>>>>>>> Either we should warn the user OR make 2 different buttons for FK removal and table removal as the user may be confused if the selected table is also removed with the FK. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I've added a confirmation dialog which will show the number >>>>>>>>>>>>> of tables and links selected. This way user will know what he has selected >>>>>>>>>>>>> before deleting. >>>>>>>>>>>>> >>>>>>>>>>>>>> *Observations:* >>>>>>>>>>>>>> >>>>>>>>>>>>>> Lodash has been used in this module in place of Underscore, >>>>>>>>>>>>>> though the dependency is already introduced by another module, >>>>>>>>>>>>>> but we have mentioned it in the package.json file, which is >>>>>>>>>>>>>> somewhat not convincing to me. >>>>>>>>>>>>>> Lodash is more advanced than Underscore but we should pick >>>>>>>>>>>>>> anyone as it will be easy to manage. >>>>>>>>>>>>>> >>>>>>>>>>>>>> TL;DR; we cannot. >>>>>>>>>>>>> lodash is a peer dependency for react-diagrams (and some >>>>>>>>>>>>> existing modules in pgAdmin) so it will come to package.json without >>>>>>>>>>>>> choice. We cannot remove underscore because it is a dependency of backbone. >>>>>>>>>>>>> Underscore is outdated, and I cannot migrate the complete pgAdmin code. So, >>>>>>>>>>>>> I decided to go with 100/0 method. All the new codes will use lodash only >>>>>>>>>>>>> as we'll phase out underscore with time. Just like jQuery vs ReactJS. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Table dialog code is duplicate of the table node, as it was >>>>>>>>>>>>>> difficult to extend it because it was attached to the tree. >>>>>>>>>>>>>> So, we need to keep in mind that while implementing React in >>>>>>>>>>>>>> pgAdmin, the nodes should be properly detached from the tree itself, so we >>>>>>>>>>>>>> can reuse it. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yes. I agree. We need to separate out data source from UI >>>>>>>>>>>>> going forward with React. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> Khushboo >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Mon, Dec 28, 2020 at 10:53 AM Khushboo Vashi < >>>>>>>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Fri, Dec 25, 2020 at 4:34 PM Akshay Joshi < >>>>>>>>>>>>>>> akshay.joshi@enterprisedb.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi Khushboo, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Can you please review it? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On it. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Fri, Dec 25, 2020 at 3:31 PM Aditya Toshniwal < >>>>>>>>>>>>>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi Hackers, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Attached patch introduces ERD Tool(Beta) to pgAdmin. Below >>>>>>>>>>>>>>>>> are the details: >>>>>>>>>>>>>>>>> 1) Create a diagram from scratch or generate for an >>>>>>>>>>>>>>>>> existing DB. >>>>>>>>>>>>>>>>> 2) Generate "Create" DDL from the diagram. >>>>>>>>>>>>>>>>> 3) Save the diagram and resume it later. >>>>>>>>>>>>>>>>> 4) Supports basic table fields, one-to-many relationships, >>>>>>>>>>>>>>>>> many-to-many relationships, adding notes. >>>>>>>>>>>>>>>>> 5) Test cases added with 75-80% test coverage. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Please review. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>> Aditya Toshniwal >>>>>>>>>>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> "Don't Complain about Heat, Plant a TREE" >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> *Thanks & Regards* >>>>>>>>>>>>>>>> *Akshay Joshi* >>>>>>>>>>>>>>>> *pgAdmin Hacker | Principal Software Architect* >>>>>>>>>>>>>>>> *EDB Postgres * >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> *Mobile: +91 976-788-8246* >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> Aditya Toshniwal >>>>>>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>>>>>>>>>>> >>>>>>>>>>>>> "Don't Complain about Heat, Plant a TREE" >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> *Thanks & Regards* >>>>>>>>>>>> *Akshay Joshi* >>>>>>>>>>>> *pgAdmin Hacker | Principal Software Architect* >>>>>>>>>>>> *EDB Postgres * >>>>>>>>>>>> >>>>>>>>>>>> *Mobile: +91 976-788-8246* >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Thanks, >>>>>>>>>>> Aditya Toshniwal >>>>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>>>>>>>>> >>>>>>>>>>> "Don't Complain about Heat, Plant a TREE" >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> *Thanks & Regards* >>>>>>>>>> *Akshay Joshi* >>>>>>>>>> *pgAdmin Hacker | Principal Software Architect* >>>>>>>>>> *EDB Postgres * >>>>>>>>>> >>>>>>>>>> *Mobile: +91 976-788-8246* >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Thanks, >>>>>>>>> Aditya Toshniwal >>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>>>>>>> >>>>>>>>> "Don't Complain about Heat, Plant a TREE" >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> *Thanks & Regards* >>>>>>>> *Akshay Joshi* >>>>>>>> *pgAdmin Hacker | Principal Software Architect* >>>>>>>> *EDB Postgres * >>>>>>>> >>>>>>>> *Mobile: +91 976-788-8246* >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Thanks, >>>>>>> Aditya Toshniwal >>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>>>>> >>>>>>> "Don't Complain about Heat, Plant a TREE" >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> *Thanks & Regards* >>>>>> *Akshay Joshi* >>>>>> *pgAdmin Hacker | Principal Software Architect* >>>>>> *EDB Postgres * >>>>>> >>>>>> *Mobile: +91 976-788-8246* >>>>>> >>>>> >>>>> >>>>> -- >>>>> Dave Page >>>>> Blog: http://pgsnake.blogspot.com >>>>> Twitter: @pgsnake >>>>> >>>>> EDB: http://www.enterprisedb.com >>>>> >>>>> >>>> >>>> -- >>>> Thanks, >>>> Aditya Toshniwal >>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>>> >>>> "Don't Complain about Heat, Plant a TREE" >>>> >>> >>> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EDB: http://www.enterprisedb.com >>> >>> >> >> -- >> Thanks, >> Aditya Toshniwal >> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >> >> "Don't Complain about Heat, Plant a TREE" >> > > > -- > Thanks, > Aditya Toshniwal > pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* > > "Don't Complain about Heat, Plant a TREE" > -- Thanks, Aditya Toshniwal pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* "Don't Complain about Heat, Plant a TREE" --0000000000001d161305b9b81dc5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find the rebased patch from the latest pull= .

On Mon, Jan 25, 2021 at 5:12 PM Aditya Toshniwal <aditya.toshniwal@enterprisedb.com= > wrote:
Hi Hackers,

Attached is the patch to fix below issues in ERD:<= /div>
  1. After opening an existin= g project, the first table is already selected but edit, clone, delete b= uttons are disable. Fixed.
  2. ERD project title gets changed when 2 ERD projects are open & anyo= ne of it edited. Fixed.
  3. Added.
  4. Shortcut for 'Show more/Fewer= details' is missing. Added.
  5. Deleting primary key does not delete associated links. Fixed.=
  6. Long table & schema = name are getting out of box. Fixed.
  7. Long table name in notes pop-up need re-alignment. Fixed.=
  8. Same table name present = in ERD/canvas is allowed in Add Table dialogue. Added validation in the dialog.=
  9. Download image op= tion=C2=A0is added, but it is not perfect yet. Image icons (table, schema, etc.= ) are not showing up.
  10. Rename panel option should be disabled by default. It should be enabled = for the tools which implement rename functionality.
  11. <= font face=3D"verdana, sans-serif">The Toolbar is not visible in Safari for = the ERD tool. Fixed.
Please review.

On Thu, Jan 21, 2021 at 4:32 PM Aditya T= oshniwal <aditya.toshniwal@enterprisedb.com> wrote:
Hi,<= /div>
=

On Thu, Jan 21, 2021 at 3:08 PM Dave Page <dpage@pgadmin.org> wrote:


On Thu, Jan 21, 2021 at 4:48 AM Aditya Toshniwal <aditya.tos= hniwal@enterprisedb.com> wrote:
Hi Dave,

On Wed, Jan 20, 2021 at 9:20 PM D= ave Page <dpage@p= gadmin.org> wrote:
Hi

Where's the Save Imag= e button gone? I know Aditya was removing it whilst working on other things= , but it's still required for phase 1 release.
=
It was not working 100% right. :(
So I've removed it for = the time being. I'm still working on it.=C2=A0

OK, so that work will be completed in t= ime for the build next week?
I'm trying = my best to make it available before release. I'm struggling to make it = work perfectly.
=C2=A0

On Mon, Jan 18, 2021 at= 11:45 AM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Thanks, pa= tch applied.

On Mon, Jan 18, 2021 at 5:08 PM Aditya Toshniwal <aditya.toshniw= al@enterprisedb.com> wrote:
OK, So the changes have worked. But still failing at one more place.=
Attached the patch fixe= s it.

On Mon, Jan 18, 2021 at 4:40 PM Akshay Joshi <akshay.joshi@enterprise= db.com> wrote:
Thanks, patch applied.

On Mon, Jan 18, 2021 at 2:58 P= M Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrote:
Hi,

The jasmine test cases are working=C2=A0fine on my local machine. The test= cases are successful on jenkins other than on linux, not sure why.
I have made some fixes by looki= ng at the log. Please review and try.

On Mon, Jan 18, 2021 at 1:10 PM = Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Thanks, patch applie= d.

On Mon, Jan 18, 2021 at 10:34 AM Aditya Toshniwal <aditya.toshniwal@en= terprisedb.com> wrote:
Hi Akshay,

<= div style=3D"font-family:verdana,sans-serif">I forgot to remove few of the = dependencies which are not required as of now (may be in future). Attached = patch removes those dependencies from package.json.

On Sat, Jan 16, 20= 21 at 5:08 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Thanks= , patch applied.

On Fri, Jan 15, 2021 at 7:01 PM Aditya Toshniwal <aditya.tos= hniwal@enterprisedb.com> wrote:
Hi,

I've fixed the issues. You can find the comments inl= ine.
I've also added PropTypes for the components for inc= reased validation.

On Tue, Jan 12, 2021 at 12:18 PM Khushbo= o Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi Aditya,
T=
he functionalities and the code looks good to me, however some of the comme=
nts as below:
  • Correct the comments at some places (3 occurrences = found in /erd/__init__.py) whi= ch mention Schema diff instead of ERD.
Some c=
omments in the JS/JSX file regarding components/functions (For example, Ico=
nButton (forwardRef), Bodywidget etc.) would
be great help as we all are =
new to React. 
Done. Add= ed comments to the components.
  • Remove the unused imports= (for ex bad_request) in /erd/__init__.py
Removed.=C2=A0
  • Remove commented code
# req_args =3D request.args# if ('recreate' in req_args and
# =C2=A0 =C2=A0 req_args['= ;recreate'] =3D=3D '1'):
# =C2=A0 =C2=A0 connect =3D False
Removed.=C2=A0
=
  • TableNode.jsx, below= two lines can be combined.
import { PortModelAlignment, DefaultNodeModel } from '@projectstorm/= react-diagrams';
import { PortWidget } from '@projectstorm/react= -diagrams';
Done.= =C2=A0
  • onImageClick function in BodyWidget.jsx is no use I thin= k, so it should be removed.
=
I wanted to keep the code as it will be used in future. Anyway, I've r= emoved the code.
    <= li>I got some console errors while adding/= editing tables. Refer to the attached screenshot.
I tried but I didn't get any. Looking at the scr= eenshot, the error is from the underlying library. Can't do much in thi= s.=C2=A0
  • In the column Edit Mode, while deleting the pri= mary key, it gives the error, which does not go away with any further modif= ications.
Fixed.= =C2=A0
  • While generating the SQL, if the server is disconnected,= a proper error message should be thrown, right now some server side error = is coming.
It will show co= nnection lost error now. Fixed.=C2=A0
  • Please remove ..= . from the menu title (New ERD Project(Beta)...) as it is not opening a dia= log.
Done.=C2=A0
  • For large data sets, generate ERD hangs.
It shows the spinner and waits for the response to c= ome from the back end. I've used the existing table fetching code which= is used at other places. I'll create an RM to improve the back end cod= e for fetching the tables data which will help the schema diff tool as well= .
  • Opening the ERD panel in a new window is not working= , it opens in the same tab even if you have set the Preference "Open i= n new browser tab" to True.
Fixed. Added the setting in "Tab settings".
  • No shortcut is provided to open the ERD Tool.
A shortcut is helpful if we are using it frequently.= ERD tool won't be used that frequently.=C2=A0We already have a limi= ted number of keys available for shortcuts. I think we should roll out with= out shortcut for now. If there is a user demand for it then we can think of= adding it.
<= div dir=3D"ltr">
  • SonarQube fixes required.
Fixed.=C2=A0
  • <= /ul>
Suggestion:
While removal of the FK link, If an= y of the table is selected, it is being deleted with FK link.
<= div style=3D"color:rgb(0,0,0)">Either we s= hould warn the user OR make 2 different buttons for FK removal and table re= moval as the user may be confused if the selected table is also removed wit= h the FK.
=
I've added a confirmation= dialog which will show the number of tables and links selected. This way u= ser will know what he has selected before deleting.
=
Observations:
Lodash has been used in this module in place of Underscore, thou= gh the dependency is already introduced by another module,
but we have m= entioned it in the package.json file, which is somewhat not convincing to m= e.
Lodash is more advanced than Underscore but we should pick anyone as = it will be easy to manage.
<= span class=3D"gmail_default" style=3D"font-family:verdana,sans-serif">TL;DR= ; we cannot.
lodash is a peer dependency for react-diagrams (a= nd some existing modules in pgAdmin) so it will come to package.json withou= t choice. We cannot remove underscore because it is a dependency of backbon= e. Underscore is outdated, and I cannot migrate the complete pgAdmin code.= =C2=A0So, I decided to go with 100/0 method. All the new codes will use = lodash only as we'll phase out underscore with time. Just like jQuery v= s ReactJS.


Table dialog code is duplicate of the table node, a= s it was difficult to extend it because it was attached to the tree.
So,= we need to keep in mind that while implementing React in pgAdmin, the node= s should be properly detached from the tree itself, so we can reuse it.
=
Yes. I agree. We need to separate o= ut data source from UI going forward=C2=A0with React.

Thanks,
Khushboo


<= div class=3D"gmail_quote">
On Mon, Dec 28, 2020 at 10:53 AM Khushboo Vashi <= khushb= oo.vashi@enterprisedb.com> wrote:

=
On Fri, Dec 25, 2020 at 4:34 PM Akshay Jo= shi <= akshay.joshi@enterprisedb.com> wrote:
Hi Khushboo,

Can you please review it?

<= div>On it.=C2=A0
On Fri, Dec 25,= 2020 at 3:31 PM Aditya Toshniwal <aditya.toshniwal@enterprisedb.com>= wrote:
<= div dir=3D"ltr">
Hi Hackers,

Attached patch introduces ERD Tool(Beta) to pgAdmin.= Below are the details:
1= ) Create a diagram from scratch or generate for an existing DB.
2) Generate "Create" DDL f= rom the diagram.
3) Save = the diagram and resume it later.
4) Supports basic table fields, one-to-many relationships, many-to-= many relationships, adding notes.
5) Test cases added with 75-80% test coverage.

Please review.

--
Thanks,
Aditya Toshniw= al
=
p= gAdmin hacker=C2=A0| Sr. Software Engineer | <= font color=3D"#000000">edbpostgres.com
"Don= 9;t Complain about Heat, Plant a TREE"
=


--
Thanks & Regards
Akshay Joshi
= pgAdmin Hacker | Principal Software Ar= chitect
EDB Po= stgres
Mobile: +91 976-788-8246

<= /div>


--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Principal Softw= are Architect
EDB Po= stgres
Mobile: +91 976-788-8246



--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Principal Softw= are Architect
EDB Po= stgres
Mobile: +91 976-788-8246



--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Principal Softw= are Architect
EDB Po= stgres
Mobile: +91 976-788-8246



--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Principal Softw= are Architect
EDB Po= stgres
Mobile: +91 976-788-8246



--


--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--


--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--
Thanks,
Aditya Toshniwal
pgAdmin hacker=C2=A0| Sr. Softwa= re Engineer | edbpostgres.com<= /font>
"Don't Complain about Heat, Plant a TREE&qu= ot;
--0000000000001d161305b9b81dc5-- --0000000000001d161505b9b81dc7 Content-Type: application/octet-stream; name="RM1802.fixes_v2.patch" Content-Disposition: attachment; filename="RM1802.fixes_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kkciaq540 ZGlmZiAtLWdpdCBhL3dlYi9wYWNrYWdlLmpzb24gYi93ZWIvcGFja2FnZS5qc29uCmluZGV4IDlk NGMwNjBkYy4uOWU1NWViNjc0IDEwMDY0NAotLS0gYS93ZWIvcGFja2FnZS5qc29uCisrKyBiL3dl Yi9wYWNrYWdlLmpzb24KQEAgLTQ2LDYgKzQ2LDcgQEAKICAgICAicHJvcC10eXBlcyI6ICJeMTUu Ny4yIiwKICAgICAicmF3LWxvYWRlciI6ICJeMy4xLjAiLAogICAgICJyZXNpemUtb2JzZXJ2ZXIt cG9seWZpbGwiOiAiXjEuNS4xIiwKKyAgICAicmVzb2x2ZS11cmwtbG9hZGVyIjogIl4zLjEuMiIs CiAgICAgInNhc3MiOiAiXjEuMjQuNCIsCiAgICAgInNhc3MtbG9hZGVyIjogIl43LjEuMCIsCiAg ICAgInNhc3MtcmVzb3VyY2VzLWxvYWRlciI6ICJeMi4wLjAiLApAQCAtODcsNiArODgsNyBAQAog ICAgICJkYWdyZSI6ICJeMC44LjQiLAogICAgICJkcm9wem9uZSI6ICJeNS41LjEiLAogICAgICJl eHBvcnRzLWxvYWRlciI6ICJ+MC43LjAiLAorICAgICJodG1sMmNhbnZhcyI6ICJeMS4wLjAtcmMu NyIsCiAgICAgImltbXV0YWJpbGl0eS1oZWxwZXIiOiAiXjMuMC4wIiwKICAgICAiaW1wb3J0cy1s b2FkZXIiOiAiXjAuOC4wIiwKICAgICAiaXAtYWRkcmVzcyI6ICJeNS44LjkiLApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZnJhbWUuanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3N0YXRpYy9qcy9mcmFtZS5qcwppbmRleCBiNzJkZjdiMGYuLjBkM2I5MTI3MyAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZnJhbWUuanMKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZnJhbWUuanMKQEAgLTMwLDcgKzMwLDcgQEAgZGVm aW5lKFsKICAgICBoZWlnaHQ6IDYwMCwKICAgICBzaG93VGl0bGU6IHRydWUsCiAgICAgaXNDbG9z YWJsZTogdHJ1ZSwKLSAgICBpc1JlbmFtYWJsZTogdHJ1ZSwKKyAgICBpc1JlbmFtYWJsZTogZmFs c2UsCiAgICAgaXNQcml2YXRlOiBmYWxzZSwKICAgICB1cmw6ICcnLAogICAgIGljb246ICcnLApk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2NoYXJ0anMvaW5kZXguanN4IGIvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL2NoYXJ0anMvaW5kZXguanN4CmluZGV4IDUyNjIzYmQyNC4uMDIy ZTYzODc1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY2hhcnRqcy9pbmRleC5q c3gKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2NoYXJ0anMvaW5kZXguanN4CkBAIC00MSwx MSArNDEsMTEgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzZUNoYXJ0KHt0eXBlPSdsaW5l JywgaWQsIG9wdGlvbnMsIGRhdGEsIHJlZHJhdz1mYWxzZSwKICAgICAgIG9wdGlvbnM6IG9wdGlv bnNNZXJnZWQsCiAgICAgfSk7CiAgICAgcHJvcHMub25Jbml0ICYmIHByb3BzLm9uSW5pdChjaGFy dE9iai5jdXJyZW50KTsKLSAgfQorICB9OwogCiAgIGNvbnN0IGRlc3Ryb3lDaGFydCA9IGZ1bmN0 aW9uKCkgewogICAgIGNoYXJ0T2JqLmN1cnJlbnQgJiYgY2hhcnRPYmouY3VycmVudC5kZXN0cm95 KCk7Ci0gIH0KKyAgfTsKIAogICB1c2VFZmZlY3QoKCk9PnsKICAgICBpbml0Q2hhcnQoKTsKQEAg LTcyLDcgKzcyLDcgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzZUNoYXJ0KHt0eXBlPSds aW5lJywgaWQsIG9wdGlvbnMsIGRhdGEsIHJlZHJhdz1mYWxzZSwKICAgICAgIGRlc3Ryb3lDaGFy dCgpOwogICAgICAgaW5pdENoYXJ0KCk7CiAgICAgfQotICB9LCBbcmVkcmF3XSkKKyAgfSwgW3Jl ZHJhd10pOwogCiAgIHJldHVybiAoCiAgICAgPGNhbnZhcyBpZD17aWR9IHJlZj17Y2hhcnRSZWZ9 PjwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGlj L2pzL2RhdGFncmlkLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2Rh dGFncmlkLmpzCmluZGV4IGE3ZDA1NjY4My4uYzliOGI1YjdlIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2RhdGFncmlkLmpzCkBAIC0xODAsNyArMTgwLDcg QEAgZGVmaW5lKCdwZ2FkbWluLmRhdGFncmlkJywgWwogICAgICAgICAgIG5hbWU6ICdmcm1fZGF0 YWdyaWQnLAogICAgICAgICAgIHNob3dUaXRsZTogdHJ1ZSwKICAgICAgICAgICBpc0Nsb3NlYWJs ZTogdHJ1ZSwKLSAgICAgICAgICBpc1JlbmFtZWFibGU6IHRydWUsCisgICAgICAgICAgaXNSZW5h bWFibGU6IHRydWUsCiAgICAgICAgICAgaXNQcml2YXRlOiB0cnVlLAogICAgICAgICAgIHVybDog J2Fib3V0OmJsYW5rJywKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWRfcGFuZWxfdGl0bGUuanMgYi93ZWIvcGdhZG1p bi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWRfcGFuZWxfdGl0bGUuanMKaW5kZXgg NDZkYjZhNzBhLi5iM2JkNzkzZTAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFn cmlkL3N0YXRpYy9qcy9kYXRhZ3JpZF9wYW5lbF90aXRsZS5qcworKysgYi93ZWIvcGdhZG1pbi90 b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWRfcGFuZWxfdGl0bGUuanMKQEAgLTc4LDEx ICs3OCwxMSBAQCBleHBvcnQgZnVuY3Rpb24gc2V0UXVlcnlUb29sRG9ja2VyVGl0bGUocGFuZWws IGlzX3F1ZXJ5X3Rvb2wsIHBhbmVsX3RpdGxlLCBpc19maQogCiBleHBvcnQgZnVuY3Rpb24gc2V0 X3JlbmFtYWJsZV9vcHRpb24ocGFuZWwsIGlzX2ZpbGUpIHsKICAgaWYoaXNfZmlsZSB8fCBpc19m aWxlID09ICd0cnVlJykgewotICAgIHBhbmVsLl9pc1JlbmFtYWJsZSA9IGZhbHNlOworICAgIHBh bmVsLnJlbmFtYWJsZShmYWxzZSk7CiAgICAgJCgnLmNvbm4taW5mby1kZCcpLmhpZGUoKTsKICAg ICAkKCcuY29ubmVjdGlvbi1kYXRhJykuY3NzKHtwb2ludGVyRXZlbnRzOiAnbm9uZScsIGN1cnNv cjogJ2Fycm93J30pOwogICB9IGVsc2UgewotICAgIHBhbmVsLl9pc1JlbmFtYWJsZSA9IHRydWU7 CisgICAgcGFuZWwucmVuYW1hYmxlKHRydWUpOwogICB9CiB9CiAKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL2VyZC9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9fX2lu aXRfXy5weQppbmRleCAzMDFhY2E5YzkuLjFjZTc0MjE4NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vdG9vbHMvZXJkL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9fX2lu aXRfXy5weQpAQCAtMjg4LDYgKzI4OCwyNCBAQCBjbGFzcyBFUkRNb2R1bGUoUGdBZG1pbk1vZHVs ZSk6CiAgICAgICAgICAgICBmaWVsZHM9c2hvcnRjdXRfZmllbGRzCiAgICAgICAgICkKIAorICAg ICAgICBzZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIoCisgICAgICAgICAgICAna2V5Ym9hcmRfc2hv cnRjdXRzJywKKyAgICAgICAgICAgICdzaG93X2RldGFpbHMnLAorICAgICAgICAgICAgZ2V0dGV4 dCgnU2hvdyBtb3JlL2Zld2VyIGRldGFpbHMnKSwKKyAgICAgICAgICAgICdrZXlib2FyZHNob3J0 Y3V0JywKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAnYWx0JzogVHJ1ZSwKKyAgICAg ICAgICAgICAgICAnc2hpZnQnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAnY29udHJvbCc6IFRy dWUsCisgICAgICAgICAgICAgICAgJ2tleSc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ2tleV9j b2RlJzogODQsCisgICAgICAgICAgICAgICAgICAgICdjaGFyJzogJ3QnCisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGNhdGVnb3J5X2xhYmVsPVBSRUZfTEFC RUxfS0VZQk9BUkRfU0hPUlRDVVRTLAorICAgICAgICAgICAgZmllbGRzPXNob3J0Y3V0X2ZpZWxk cworICAgICAgICApCisKICAgICAgICAgc2VsZi5wcmVmZXJlbmNlLnJlZ2lzdGVyKAogICAgICAg ICAgICAgJ2tleWJvYXJkX3Nob3J0Y3V0cycsCiAgICAgICAgICAgICAnem9vbV90b19maXQnLApk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9FUkRD b3JlLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9FUkRDb3Jl LmpzCmluZGV4IGVhMGUyMmEyOS4uOGZhYWU0ZDAxIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90 b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL0VSRENvcmUuanMKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9FUkRDb3JlLmpzCkBAIC0yMTIsMTQgKzIxMiwx NCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBFUkRDb3JlIHsKICAgICBsZXQgc291cmNlUG9ydCA9 IHNvdXJjZU5vZGUuZ2V0UG9ydChwb3J0TmFtZSk7CiAgICAgLyogQ3JlYXRlIHRoZSBwb3J0IGlm IG5vdCB0aGVyZSAqLwogICAgIGlmKCFzb3VyY2VQb3J0KSB7Ci0gICAgICBzb3VyY2VQb3J0ID0g c291cmNlTm9kZS5hZGRQb3J0KHRoaXMuZ2V0TmV3UG9ydCh0eXBlLCBudWxsLCB7bmFtZTpwb3J0 TmFtZSwgYWxpZ25tZW50OlBvcnRNb2RlbEFsaWdubWVudC5SSUdIVH0pKTsKKyAgICAgIHNvdXJj ZVBvcnQgPSBzb3VyY2VOb2RlLmFkZFBvcnQodGhpcy5nZXROZXdQb3J0KHR5cGUsIG51bGwsIHtu YW1lOnBvcnROYW1lLCBzdWJ0eXBlOiAnb25lJywgYWxpZ25tZW50OlBvcnRNb2RlbEFsaWdubWVu dC5SSUdIVH0pKTsKICAgICB9CiAKICAgICBwb3J0TmFtZSA9IHRhcmdldE5vZGUuZ2V0UG9ydE5h bWUoZGF0YS5sb2NhbF9jb2x1bW5fYXR0bnVtKTsKICAgICBsZXQgdGFyZ2V0UG9ydCA9IHRhcmdl dE5vZGUuZ2V0UG9ydChwb3J0TmFtZSk7CiAgICAgLyogQ3JlYXRlIHRoZSBwb3J0IGlmIG5vdCB0 aGVyZSAqLwogICAgIGlmKCF0YXJnZXRQb3J0KSB7Ci0gICAgICB0YXJnZXRQb3J0ID0gdGFyZ2V0 Tm9kZS5hZGRQb3J0KHRoaXMuZ2V0TmV3UG9ydCh0eXBlLCBudWxsLCB7bmFtZTpwb3J0TmFtZSwg YWxpZ25tZW50OlBvcnRNb2RlbEFsaWdubWVudC5SSUdIVH0pKTsKKyAgICAgIHRhcmdldFBvcnQg PSB0YXJnZXROb2RlLmFkZFBvcnQodGhpcy5nZXROZXdQb3J0KHR5cGUsIG51bGwsIHtuYW1lOnBv cnROYW1lLCBzdWJ0eXBlOiAnbWFueScsIGFsaWdubWVudDpQb3J0TW9kZWxBbGlnbm1lbnQuUklH SFR9KSk7CiAgICAgfQogCiAgICAgLyogTGluayB0aGUgcG9ydHMgKi8KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9ncy9UYWJsZURpYWxv Zy5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9ncy9U YWJsZURpYWxvZy5qcwppbmRleCBlMWZlZTgxNWYuLjJiNTZlYTFjNCAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9kaWFsb2dzL1RhYmxlRGlhbG9n LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9n cy9UYWJsZURpYWxvZy5qcwpAQCAtNTAsNyArNTAsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBU YWJsZURpYWxvZyB7CiAgICAgcmV0dXJuICdlbnRpdHlfZGlhbG9nJzsKICAgfQogCi0gIGdldERh dGFNb2RlbChhdHRyaWJ1dGVzLCBjb2xUeXBlcywgc2NoZW1hcywgc1ZlcnNpb24pIHsKKyAgZ2V0 RGF0YU1vZGVsKGF0dHJpYnV0ZXMsIGV4aXN0aW5nVGFibGVzLCBjb2xUeXBlcywgc2NoZW1hcywg c1ZlcnNpb24pIHsKICAgICBsZXQgZGlhbG9nT2JqID0gdGhpczsKICAgICBsZXQgY29sdW1uc01v ZGVsID0gdGhpcy5wZ0Jyb3dzZXIuRGF0YU1vZGVsLmV4dGVuZCh7CiAgICAgICBpZEF0dHJpYnV0 ZTogJ2F0dG51bScsCkBAIC02OTQsNiArNjk0LDEwIEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFRh YmxlRGlhbG9nIHsKICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdUYWJsZSBuYW1lIGNhbm5vdCBi ZSBlbXB0eS4nKTsKICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsK ICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICB9IGVsc2UgaWYoXy5maW5kSW5kZXgoZXhp c3RpbmdUYWJsZXMsICh0YWJsZSk9PnRhYmxlWzBdPT1zY2hlbWEmJnRhYmxlWzFdPT1uYW1lKSA+ PSAwKSB7CisgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnVGFibGUgbmFtZSBhbHJlYWR5IGV4aXN0 cy4nKTsKKyAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNnKTsKKyAgICAg ICAgICByZXR1cm4gbXNnOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNl dCgnbmFtZScpOwogICAgICAgICBpZiAoCkBAIC03MDUsNiArNzA5LDggQEAgZXhwb3J0IGRlZmF1 bHQgY2xhc3MgVGFibGVEaWFsb2cgewogICAgICAgICAgIHJldHVybiBtc2c7CiAgICAgICAgIH0K ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdzY2hlbWEnKTsKKworCiAgICAgICAgIHJl dHVybiBudWxsOwogICAgICAgfSwKICAgICB9KTsKQEAgLTczMSw5ICs3MzcsOSBAQCBleHBvcnQg ZGVmYXVsdCBjbGFzcyBUYWJsZURpYWxvZyB7CiAgICAgcmV0dXJuIEFsZXJ0aWZ5W2RpYWxvZ05h bWVdOwogICB9CiAKLSAgc2hvdyh0aXRsZSwgYXR0cmlidXRlcywgY29sVHlwZXMsIHNjaGVtYXMs IHNWZXJzaW9uLCBjYWxsYmFjaykgeworICBzaG93KHRpdGxlLCBhdHRyaWJ1dGVzLCBleGlzdGlu Z1RhYmxlcywgY29sVHlwZXMsIHNjaGVtYXMsIHNWZXJzaW9uLCBjYWxsYmFjaykgewogICAgIGxl dCBkaWFsb2dUaXRsZSA9IHRpdGxlIHx8IGdldHRleHQoJ1Vua25vd24nKTsKICAgICBjb25zdCBk aWFsb2cgPSB0aGlzLmNyZWF0ZU9yR2V0RGlhbG9nKCd0YWJsZV9kaWFsb2cnKTsKLSAgICBkaWFs b2coZGlhbG9nVGl0bGUsIHRoaXMuZ2V0RGF0YU1vZGVsKGF0dHJpYnV0ZXMsIGNvbFR5cGVzLCBz Y2hlbWFzLCBzVmVyc2lvbiksIGNhbGxiYWNrKS5yZXNpemVUbyh0aGlzLnBnQnJvd3Nlci5zdGRX Lm1kLCB0aGlzLnBnQnJvd3Nlci5zdGRILm1kKTsKKyAgICBkaWFsb2coZGlhbG9nVGl0bGUsIHRo aXMuZ2V0RGF0YU1vZGVsKGF0dHJpYnV0ZXMsIGV4aXN0aW5nVGFibGVzLCBjb2xUeXBlcywgc2No ZW1hcywgc1ZlcnNpb24pLCBjYWxsYmFjaykucmVzaXplVG8odGhpcy5wZ0Jyb3dzZXIuc3RkVy5t ZCwgdGhpcy5wZ0Jyb3dzZXIuc3RkSC5tZCk7CiAgIH0KIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvaW5kZXguanMgYi93ZWIvcGdhZG1pbi90 b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL2luZGV4LmpzCmluZGV4IDUyM2ViZDE0Zi4uZTg2 NWMyOWJkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90 b29sL2luZGV4LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rv b2wvaW5kZXguanMKQEAgLTksMTAgKzksMTMgQEAKIAogaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0 JzsKIGltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nOworaW1wb3J0IF8gZnJvbSAnbG9k YXNoJzsKKwogaW1wb3J0IEJvZHlXaWRnZXQgZnJvbSAnLi91aV9jb21wb25lbnRzL0JvZHlXaWRn ZXQnOwogaW1wb3J0IGdldERpYWxvZywge3RyYW5zZm9ybVRvU3VwcG9ydGVkfSBmcm9tICcuL2Rp YWxvZ3MnOwogaW1wb3J0IEFsZXJ0aWZ5IGZyb20gJ3BnYWRtaW4uYWxlcnRpZnlqcyc7CiBpbXBv cnQgcGdXaW5kb3cgZnJvbSAnc291cmNlcy93aW5kb3cnOworaW1wb3J0IHBnQWRtaW4gZnJvbSAn c291cmNlcy9wZ2FkbWluJzsKIAogZXhwb3J0IGRlZmF1bHQgY2xhc3MgRVJEVG9vbCB7CiAgIGNv bnN0cnVjdG9yKGNvbnRhaW5lciwgcGFyYW1zKSB7CkBAIC0yMCwxMCArMjMsMjggQEAgZXhwb3J0 IGRlZmF1bHQgY2xhc3MgRVJEVG9vbCB7CiAgICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7CiAgIH0K IAorICBnZXRQcmVmZXJlbmNlc0Zvck1vZHVsZSgpIHsKKworICB9CisKICAgcmVuZGVyKCkgewog ICAgIC8qIE1vdW50IHRoZSBSZWFjdCBFUkQgdG9vbCB0byB0aGUgY29udGFpbmVyICovCisgICAg bGV0IHBhbmVsID0gbnVsbDsKKyAgICBfLmVhY2gocGdXaW5kb3cucGdBZG1pbi5Ccm93c2VyLmRv Y2tlci5maW5kUGFuZWxzKCdmcm1fZXJkdG9vbCcpLCBmdW5jdGlvbihwKSB7CisgICAgICBpZiAo cC5pc1Zpc2libGUoKSkgeworICAgICAgICBwYW5lbCA9IHA7CisgICAgICB9CisgICAgfSk7CisK ICAgICBSZWFjdERPTS5yZW5kZXIoCi0gICAgICA8Qm9keVdpZGdldCBwYXJhbXM9e3RoaXMucGFy YW1zfSBnZXREaWFsb2c9e2dldERpYWxvZ30gdHJhbnNmb3JtVG9TdXBwb3J0ZWQ9e3RyYW5zZm9y bVRvU3VwcG9ydGVkfSBwZ0FkbWluPXtwZ1dpbmRvdy5wZ0FkbWlufSBhbGVydGlmeT17QWxlcnRp Znl9IC8+LAorICAgICAgPEJvZHlXaWRnZXQKKyAgICAgICAgcGFyYW1zPXt0aGlzLnBhcmFtc30K KyAgICAgICAgZ2V0RGlhbG9nPXtnZXREaWFsb2d9CisgICAgICAgIHRyYW5zZm9ybVRvU3VwcG9y dGVkPXt0cmFuc2Zvcm1Ub1N1cHBvcnRlZH0KKyAgICAgICAgcGdXaW5kb3c9e3BnV2luZG93fQor ICAgICAgICBwZ0FkbWluPXtwZ0FkbWlufQorICAgICAgICBwYW5lbD17cGFuZWx9CisgICAgICAg IGFsZXJ0aWZ5PXtBbGVydGlmeX0gLz4sCiAgICAgICB0aGlzLmNvbnRhaW5lcgogICAgICk7CiAg IH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wv bGlua3MvT25lVG9NYW55TGluay5qc3ggYi93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pz L2VyZF90b29sL2xpbmtzL09uZVRvTWFueUxpbmsuanN4CmluZGV4IGJlOTg1YWZkZS4uMzdiNDU2 ODI1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29s L2xpbmtzL09uZVRvTWFueUxpbmsuanN4CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0 aWMvanMvZXJkX3Rvb2wvbGlua3MvT25lVG9NYW55TGluay5qc3gKQEAgLTksMTIgKzksMTIgQEAK IAogaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsKIGltcG9ydCB7Ci0gICAgUmlnaHRBbmdsZUxp bmtNb2RlbCwKLSAgICBSaWdodEFuZ2xlTGlua1dpZGdldCwKLSAgICBEZWZhdWx0TGlua0ZhY3Rv cnksCi0gICAgUG9ydE1vZGVsQWxpZ25tZW50LAotICAgIExpbmtXaWRnZXQsCi0gICAgUG9pbnRN b2RlbAorICBSaWdodEFuZ2xlTGlua01vZGVsLAorICBSaWdodEFuZ2xlTGlua1dpZGdldCwKKyAg RGVmYXVsdExpbmtGYWN0b3J5LAorICBQb3J0TW9kZWxBbGlnbm1lbnQsCisgIExpbmtXaWRnZXQs CisgIFBvaW50TW9kZWwsCiB9IGZyb20gJ0Bwcm9qZWN0c3Rvcm0vcmVhY3QtZGlhZ3JhbXMnOwog aW1wb3J0IHtQb2ludH0gZnJvbSAnQHByb2plY3RzdG9ybS9nZW9tZXRyeSc7CiBpbXBvcnQgXyBm cm9tICdsb2Rhc2gnOwpAQCAtMjQsNyArMjQsNyBAQCBleHBvcnQgY29uc3QgT25lVG9NYW55TW9k ZWwgPSB7CiAgIGxvY2FsX2NvbHVtbl9hdHRudW06IHVuZGVmaW5lZCwKICAgcmVmZXJlbmNlZF90 YWJsZV91aWQ6IHVuZGVmaW5lZCwKICAgcmVmZXJlbmNlZF9jb2x1bW5fYXR0bnVtOiB1bmRlZmlu ZWQsCi19Cit9OwogCiBleHBvcnQgY2xhc3MgT25lVG9NYW55TGlua01vZGVsIGV4dGVuZHMgUmln aHRBbmdsZUxpbmtNb2RlbCB7CiAgIGNvbnN0cnVjdG9yKHtkYXRhLCAuLi5vcHRpb25zfSkgewpA QCAtMzMsNyArMzMsNyBAQCBleHBvcnQgY2xhc3MgT25lVG9NYW55TGlua01vZGVsIGV4dGVuZHMg UmlnaHRBbmdsZUxpbmtNb2RlbCB7CiAgICAgICB3aWR0aDogMSwKICAgICAgIGNsYXNzOiAnbGlu ay1vbmV0b21hbnknLAogICAgICAgbG9ja2VkOiB0cnVlLAotICAgICAgLi4ub3B0aW9ucworICAg ICAgLi4ub3B0aW9ucywKICAgICB9KTsKIAogICAgIHRoaXMuX2RhdGEgPSB7CkBAIC02MiwxMyAr NjIsMTMgQEAgZXhwb3J0IGNsYXNzIE9uZVRvTWFueUxpbmtNb2RlbCBleHRlbmRzIFJpZ2h0QW5n bGVMaW5rTW9kZWwgewogICAgICAgICAnbG9jYWxfY29sdW1uJzogXy5maW5kKHRhcmdldC5jb2x1 bW5zLCAoY29sKT0+ZGF0YS5sb2NhbF9jb2x1bW5fYXR0bnVtID09IGNvbC5hdHRudW0pLm5hbWUs CiAgICAgICAgICdyZWZlcmVuY2VkJzogXy5maW5kKHNvdXJjZS5jb2x1bW5zLCAoY29sKT0+ZGF0 YS5yZWZlcmVuY2VkX2NvbHVtbl9hdHRudW0gPT0gY29sLmF0dG51bSkubmFtZSwKICAgICAgIH1d LAotICAgIH0KKyAgICB9OwogICB9CiAKICAgc2VyaWFsaXplKCkgewogICAgIHJldHVybiB7CiAg ICAgICAuLi5zdXBlci5zZXJpYWxpemUoKSwKLSAgICAgIGRhdGE6IHRoaXMuZ2V0RGF0YSgpCisg ICAgICBkYXRhOiB0aGlzLmdldERhdGEoKSwKICAgICB9OwogICB9CiB9CkBAIC04MywxMyArODMs MTMgQEAgY29uc3QgQ3VzdG9tTGlua0VuZFdpZGdldCA9IHByb3BzID0+IHsKICAgICAgICAgICA8 Y2lyY2xlIGNsYXNzTmFtZT0ic3ZnLWxpbmstZWxlIHN2Zy1vdG9tLWNpcmNsZSIgY3g9IjAiIGN5 PSIxNiIgcj17cHJvcHMud2lkdGgqMS43NX0gc3Ryb2tlV2lkdGg9e3Byb3BzLndpZHRofSAvPgog ICAgICAgICAgIDxwb2x5bGluZSBjbGFzc05hbWU9InN2Zy1saW5rLWVsZSIgcG9pbnRzPSItOCww IDAsMTUgMCwwIDAsMzAgMCwxNSA4LDAiIGZpbGw9Im5vbmUiIHN0cm9rZVdpZHRoPXtwcm9wcy53 aWR0aH0gLz4KICAgICAgICAgPC8+Ci0gICAgICApCisgICAgICApOwogICAgIH0gZWxzZSBpZiAo dHlwZSA9PSAnb25lJykgewogICAgICAgcmV0dXJuICgKICAgICAgICAgPHBvbHlsaW5lIGNsYXNz TmFtZT0ic3ZnLWxpbmstZWxlIiBwb2ludHM9Ii04LDE1IDAsMTUgMCwwIDAsMzAgMCwxNSA4LDE1 IiBmaWxsPSJub25lIiBzdHJva2VXaWR0aD17cHJvcHMud2lkdGh9IC8+Ci0gICAgICApCisgICAg ICApOwogICAgIH0KLSAgfQorICB9OwogCiAgIHJldHVybiAoCiAgICAgPGcgdHJhbnNmb3JtPXsn dHJhbnNsYXRlKCcgKyBwb2ludC5nZXRQb3NpdGlvbigpLnggKyAnLCAnICsgcG9pbnQuZ2V0UG9z aXRpb24oKS55ICsgJyknfT4KQEAgLTExMSwyMSArMTExLDIxIEBAIGV4cG9ydCBjbGFzcyBPbmVU b01hbnlMaW5rV2lkZ2V0IGV4dGVuZHMgUmlnaHRBbmdsZUxpbmtXaWRnZXQgewogICAgIGxldCBk ZWdyZWUgPSAwOwogICAgIGxldCB0eCA9IDAsIHR5ID0gMDsKICAgICBzd2l0Y2goYWxpZ25tZW50 KSB7Ci0gICAgICBjYXNlIFBvcnRNb2RlbEFsaWdubWVudC5CT1RUT006Ci0gICAgICAgIHR5ID0g LW9mZnNldDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFBvcnRNb2RlbEFsaWdubWVudC5M RUZUOgotICAgICAgICBkZWdyZWUgPSA5MDsKLSAgICAgICAgdHggPSBvZmZzZXQKLSAgICAgICAg YnJlYWs7Ci0gICAgICBjYXNlIFBvcnRNb2RlbEFsaWdubWVudC5UT1A6Ci0gICAgICAgIGRlZ3Jl ZSA9IDE4MDsKLSAgICAgICAgdHkgPSBvZmZzZXQ7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz ZSBQb3J0TW9kZWxBbGlnbm1lbnQuUklHSFQ6Ci0gICAgICAgIGRlZ3JlZSA9IC05MDsKLSAgICAg ICAgdHggPSAtb2Zmc2V0OwotICAgICAgICBicmVhazsKKyAgICBjYXNlIFBvcnRNb2RlbEFsaWdu bWVudC5CT1RUT006CisgICAgICB0eSA9IC1vZmZzZXQ7CisgICAgICBicmVhazsKKyAgICBjYXNl IFBvcnRNb2RlbEFsaWdubWVudC5MRUZUOgorICAgICAgZGVncmVlID0gOTA7CisgICAgICB0eCA9 IG9mZnNldDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUG9ydE1vZGVsQWxpZ25tZW50LlRPUDoK KyAgICAgIGRlZ3JlZSA9IDE4MDsKKyAgICAgIHR5ID0gb2Zmc2V0OworICAgICAgYnJlYWs7Cisg ICAgY2FzZSBQb3J0TW9kZWxBbGlnbm1lbnQuUklHSFQ6CisgICAgICBkZWdyZWUgPSAtOTA7Cisg ICAgICB0eCA9IC1vZmZzZXQ7CisgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFtkZWdy ZWUsIHR4LCB0eV07CiAgIH0KQEAgLTE0Niw4ICsxNDYsOCBAQCBleHBvcnQgY2xhc3MgT25lVG9N YW55TGlua1dpZGdldCBleHRlbmRzIFJpZ2h0QW5nbGVMaW5rV2lkZ2V0IHsKICAgICAgIHBvaW50 OiBwb2ludCwKICAgICAgIHJvdGF0aW9uOiByb3RhdGlvbiwKICAgICAgIHR4OiB0eCwKLSAgICAg IHR5OiB0eQotICAgIH0KKyAgICAgIHR5OiB0eSwKKyAgICB9OwogICB9CiAKICAgZ2VuZXJhdGVD dXN0b21FbmRXaWRnZXQoe3R5cGUsIHBvaW50LCByb3RhdGlvbiwgdHgsIHR5fSkgewpAQCAtMTgz LDcgKzE4Myw3IEBAIGV4cG9ydCBjbGFzcyBPbmVUb01hbnlMaW5rV2lkZ2V0IGV4dGVuZHMgUmln aHRBbmdsZUxpbmtXaWRnZXQgewogICB9CiAKICAgaGFuZGxlTW92ZSA9IGZ1bmN0aW9uKGV2ZW50 KSB7Ci0gICAgdGhpcy5wcm9wcy5saW5rLmdldFRhcmdldFBvcnQoKQorICAgIHRoaXMucHJvcHMu bGluay5nZXRUYXJnZXRQb3J0KCk7CiAgICAgdGhpcy5kcmFnZ2luZ0V2ZW50KGV2ZW50LCB0aGlz LmRyYWdnaW5nX2luZGV4KTsKICAgICB0aGlzLnByb3BzLmxpbmsuZmlyZUV2ZW50KHt9LCAncG9z aXRpb25DaGFuZ2VkJyk7CiAgIH0uYmluZCh0aGlzKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBleHBv cnQgY2xhc3MgT25lVG9NYW55TGlua1dpZGdldCBleHRlbmRzIFJpZ2h0QW5nbGVMaW5rV2lkZ2V0 IHsKICAgICAgIHRoaXMucHJvcHMubGluay5hZGRQb2ludCgKICAgICAgICAgbmV3IFBvaW50TW9k ZWwoewogICAgICAgICAgIGxpbms6IHRoaXMucHJvcHMubGluaywKLSAgICAgICAgICBwb3NpdGlv bjogbmV3IFBvaW50KG9uZVBvaW50LnBvaW50LmdldFgoKSwgbWFueVBvaW50LnBvaW50LmdldFko KSkKKyAgICAgICAgICBwb3NpdGlvbjogbmV3IFBvaW50KG9uZVBvaW50LnBvaW50LmdldFgoKSwg bWFueVBvaW50LnBvaW50LmdldFkoKSksCiAgICAgICAgIH0pCiAgICAgICApOwogICAgIH0KQEAg LTI0Niw3ICsyNDYsNyBAQCBleHBvcnQgY2xhc3MgT25lVG9NYW55TGlua1dpZGdldCBleHRlbmRz IFJpZ2h0QW5nbGVMaW5rV2lkZ2V0IHsKICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKGV2ZW50 KSA9PiB7CiAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzZWxlY3RlZDogdHJ1ZSB9KTsK ICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5saW5rLmxhc3RIb3ZlckluZGV4T2ZQYXRoID0gajsK LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCiAgICAgICAgICAgfSwKICAgICAgICAgICBq CiAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMv ZXJkX3Rvb2wvbm9kZXMvVGFibGVOb2RlLmpzeCBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0 aWMvanMvZXJkX3Rvb2wvbm9kZXMvVGFibGVOb2RlLmpzeAppbmRleCA1ZTc0ZDg5MGIuLjM4M2M2 MjFjZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9v bC9ub2Rlcy9UYWJsZU5vZGUuanN4CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMv anMvZXJkX3Rvb2wvbm9kZXMvVGFibGVOb2RlLmpzeApAQCAtMTksNyArMTksNyBAQCBleHBvcnQg Y2xhc3MgVGFibGVOb2RlTW9kZWwgZXh0ZW5kcyBEZWZhdWx0Tm9kZU1vZGVsIHsKICAgY29uc3Ry dWN0b3Ioe290aGVySW5mbywgLi4ub3B0aW9uc30pIHsKICAgICBzdXBlcih7CiAgICAgICAuLi5v cHRpb25zLAotICAgICAgdHlwZTogVFlQRQorICAgICAgdHlwZTogVFlQRSwKICAgICB9KTsKIAog ICAgIHRoaXMuX25vdGUgPSBvdGhlckluZm8ubm90ZSB8fCAnJzsKQEAgLTYwLDIyICs2MCwyMiBA QCBleHBvcnQgY2xhc3MgVGFibGVOb2RlTW9kZWwgZXh0ZW5kcyBEZWZhdWx0Tm9kZU1vZGVsIHsK IAogICBjbG9uZURhdGEobmFtZSkgewogICAgIGxldCBuZXdEYXRhID0gewotICAgICAgLi4udGhp cy5nZXREYXRhKCkKKyAgICAgIC4uLnRoaXMuZ2V0RGF0YSgpLAogICAgIH07CiAgICAgaWYobmFt ZSkgewotICAgICAgbmV3RGF0YVsnbmFtZSddID0gbmFtZQorICAgICAgbmV3RGF0YVsnbmFtZSdd ID0gbmFtZTsKICAgICB9CiAgICAgcmV0dXJuIG5ld0RhdGE7CiAgIH0KIAogICBzZXREYXRhKGRh dGEpIHsKICAgICBsZXQgc2VsZiA9IHRoaXM7Ci0gICAgLyogUmVtb3ZlIHRoZSBsaW5rcyBpZiBj b2x1bW4gZHJvcHBlZCAqLworICAgIC8qIFJlbW92ZSB0aGUgbGlua3MgaWYgY29sdW1uIGRyb3Bw ZWQgb3IgcHJpbWFyeSBrZXkgcmVtb3ZlZCAqLwogICAgIF8uZGlmZmVyZW5jZVdpdGgodGhpcy5f ZGF0YS5jb2x1bW5zLCBkYXRhLmNvbHVtbnMsIGZ1bmN0aW9uKGV4aXN0aW5nLCBpbmNvbWluZykg ewotICAgICAgcmV0dXJuIGV4aXN0aW5nLmF0dG51bSA9PSBpbmNvbWluZy5hdHRudW07CisgICAg ICByZXR1cm4gZXhpc3RpbmcuYXR0bnVtID09IGluY29taW5nLmF0dG51bSAmJiBpbmNvbWluZy5p c19wcmltYXJ5X2tleSA9PSB0cnVlOwogICAgIH0pLmZvckVhY2goKGNvbCk9PnsKICAgICAgIGxl dCBleGlzdFBvcnQgPSBzZWxmLmdldFBvcnQoc2VsZi5nZXRQb3J0TmFtZShjb2wuYXR0bnVtKSk7 Ci0gICAgICBpZihleGlzdFBvcnQpIHsKKyAgICAgIGlmKGV4aXN0UG9ydCAmJiBleGlzdFBvcnQu Z2V0U3VidHlwZSgpID09ICdvbmUnKSB7CiAgICAgICAgIGV4aXN0UG9ydC5yZW1vdmVBbGxMaW5r cygpOwogICAgICAgICBzZWxmLnJlbW92ZVBvcnQoZXhpc3RQb3J0KTsKICAgICAgIH0KQEAgLTEw OSw3ICsxMDksNyBAQCBleHBvcnQgY2xhc3MgVGFibGVOb2RlTW9kZWwgZXh0ZW5kcyBEZWZhdWx0 Tm9kZU1vZGVsIHsKICAgICAgIG90aGVySW5mbzogewogICAgICAgICBkYXRhOiB0aGlzLmdldERh dGEoKSwKICAgICAgICAgbm90ZTogdGhpcy5nZXROb3RlKCksCi0gICAgICB9CisgICAgICB9LAog ICAgIH07CiAgIH0KIH0KQEAgLTExOSw4ICsxMTksOCBAQCBleHBvcnQgY2xhc3MgVGFibGVOb2Rl V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICBzdXBlcihwcm9wcyk7CiAKICAg ICB0aGlzLnN0YXRlID0gewotICAgICAgc2hvd19kZXRhaWxzOiB0cnVlCi0gICAgfQorICAgICAg c2hvd19kZXRhaWxzOiB0cnVlLAorICAgIH07CiAKICAgICB0aGlzLnByb3BzLm5vZGUucmVnaXN0 ZXJMaXN0ZW5lcih7CiAgICAgICB0b2dnbGVEZXRhaWxzOiAoZXZlbnQpID0+IHsKQEAgLTE0Mywx MyArMTQzLDEzIEBAIGV4cG9ydCBjbGFzcyBUYWJsZU5vZGVXaWRnZXQgZXh0ZW5kcyBSZWFjdC5D b21wb25lbnQgewogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzc05hbWU9Im1sLWF1 dG8gY29sLXJvdy1wb3J0Ij57dGhpcy5nZW5lcmF0ZVBvcnQocG9ydCl9PC9kaXY+CiAgICAgICA8 L2Rpdj4KLSAgICApCisgICAgKTsKICAgfQogCiAgIGdlbmVyYXRlUG9ydCA9IHBvcnQgPT4gewog ICAgIGlmKHBvcnQpIHsKICAgICAgIHJldHVybiAoCi0gICAgICAgIDxQb3J0V2lkZ2V0IGVuZ2lu ZT17dGhpcy5wcm9wcy5lbmdpbmV9IHBvcnQ9e3BvcnR9IGtleT17cG9ydC5nZXRJRCgpfSBjbGFz c05hbWU9eyJwb3J0LSIgKyBwb3J0Lm9wdGlvbnMuYWxpZ25tZW50fSAvPgorICAgICAgICA8UG9y dFdpZGdldCBlbmdpbmU9e3RoaXMucHJvcHMuZW5naW5lfSBwb3J0PXtwb3J0fSBrZXk9e3BvcnQu Z2V0SUQoKX0gY2xhc3NOYW1lPXsncG9ydC0nICsgcG9ydC5vcHRpb25zLmFsaWdubWVudH0gLz4K ICAgICAgICk7CiAgICAgfQogICAgIHJldHVybiA8PjwvPjsKQEAgLTE2MywyMSArMTYzLDIxIEBA IGV4cG9ydCBjbGFzcyBUYWJsZU5vZGVXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewog ICByZW5kZXIoKSB7CiAgICAgbGV0IG5vZGVfZGF0YSA9IHRoaXMucHJvcHMubm9kZS5nZXREYXRh KCk7CiAgICAgcmV0dXJuICgKLSAgICAgIDxkaXYgY2xhc3NOYW1lPXsidGFibGUtbm9kZSAiICsg KHRoaXMucHJvcHMubm9kZS5pc1NlbGVjdGVkKCkgPyAnc2VsZWN0ZWQnOiAnJykgfSBvbkRvdWJs ZUNsaWNrPXsoKT0+e3RoaXMucHJvcHMubm9kZS5maXJlRXZlbnQoe30sICdlZGl0Tm9kZScpfX0+ CisgICAgICA8ZGl2IGNsYXNzTmFtZT17J3RhYmxlLW5vZGUgJyArICh0aGlzLnByb3BzLm5vZGUu aXNTZWxlY3RlZCgpID8gJ3NlbGVjdGVkJzogJycpIH0gb25Eb3VibGVDbGljaz17KCk9Pnt0aGlz LnByb3BzLm5vZGUuZmlyZUV2ZW50KHt9LCAnZWRpdE5vZGUnKTt9fT4KICAgICAgICAgPGRpdiBj bGFzc05hbWU9InRhYmxlLXRvb2xiYXIiPgogICAgICAgICAgIDxEZXRhaWxzVG9nZ2xlQnV0dG9u IGNsYXNzTmFtZT0nYnRuLXhzJyBzaG93RGV0YWlscz17dGhpcy5zdGF0ZS5zaG93X2RldGFpbHN9 IG9uQ2xpY2s9e3RoaXMudG9nZ2xlU2hvd0RldGFpbHN9IG9uRG91YmxlQ2xpY2s9eyhlKT0+e2Uu c3RvcFByb3BhZ2F0aW9uKCk7fX0gLz4KICAgICAgICAgICB7dGhpcy5wcm9wcy5ub2RlLmdldE5v dGUoKSAmJgogICAgICAgICAgICAgPEljb25CdXR0b24gaWNvbj0iZmFyIGZhLXN0aWNreS1ub3Rl IiBjbGFzc05hbWU9ImJ0bi14cyBidG4td2FybmluZyBtbC1hdXRvIiBvbkNsaWNrPXsoKT0+ewot ICAgICAgICAgICAgICB0aGlzLnByb3BzLm5vZGUuZmlyZUV2ZW50KHt9LCAnc2hvd05vdGUnKQor ICAgICAgICAgICAgICB0aGlzLnByb3BzLm5vZGUuZmlyZUV2ZW50KHt9LCAnc2hvd05vdGUnKTsK ICAgICAgICAgICAgIH19IHRpdGxlPSJDaGVjayBub3RlIiAvPn0KICAgICAgICAgPC9kaXY+Ci0g ICAgICAgIDxkaXYgY2xhc3NOYW1lPSJ0YWJsZS1zY2hlbWEiPgotICAgICAgICAgIDxzcGFuIGNs YXNzTmFtZT0id2NUYWJJY29uIGljb24tc2NoZW1hIj48L3NwYW4+Ci0gICAgICAgICAge25vZGVf ZGF0YS5zY2hlbWF9CisgICAgICAgIDxkaXYgY2xhc3NOYW1lPSJkLWZsZXggdGFibGUtc2NoZW1h LWRhdGEiPgorICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSJ0YWJsZS1pY29uLXNjaGVtYSI+PC9k aXY+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9InRhYmxlLXNjaGVtYSI+e25vZGVfZGF0YS5z Y2hlbWF9PC9kaXY+CiAgICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzTmFtZT0idGFi bGUtbmFtZSI+Ci0gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSJ3Y1RhYkljb24gaWNvbi10YWJs ZSI+PC9zcGFuPgotICAgICAgICAgIHtub2RlX2RhdGEubmFtZX0KKyAgICAgICAgPGRpdiBjbGFz c05hbWU9ImQtZmxleCB0YWJsZS1uYW1lLWRhdGEiPgorICAgICAgICAgIDxkaXY+PHNwYW4gY2xh c3NOYW1lPSJ3Y1RhYkljb24gaWNvbi10YWJsZSI+PC9zcGFuPjwvZGl2PgorICAgICAgICAgIDxk aXYgY2xhc3NOYW1lPSJ0YWJsZS1uYW1lIj57bm9kZV9kYXRhLm5hbWV9PC9kaXY+CiAgICAgICAg IDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzTmFtZT0idGFibGUtY29scyI+CiAgICAgICAgICAg e18ubWFwKG5vZGVfZGF0YS5jb2x1bW5zLCAoY29sKT0+dGhpcy5nZW5lcmF0ZUNvbHVtbihjb2wp KX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wv cG9ydHMvT25lVG9NYW55UG9ydC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMv ZXJkX3Rvb2wvcG9ydHMvT25lVG9NYW55UG9ydC5qcwppbmRleCBjNDEyYWNkNzcuLjliY2JkYzQx NSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9w b3J0cy9PbmVUb01hbnlQb3J0LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMv anMvZXJkX3Rvb2wvcG9ydHMvT25lVG9NYW55UG9ydC5qcwpAQCAtMTYsNiArMTYsNyBAQCBjb25z dCBUWVBFID0gJ29uZXRvbWFueSc7CiBleHBvcnQgZGVmYXVsdCBjbGFzcyBPbmVUb01hbnlQb3J0 TW9kZWwgZXh0ZW5kcyBQb3J0TW9kZWwgewogICBjb25zdHJ1Y3Rvcih7b3B0aW9uc30pIHsKICAg ICBzdXBlcih7CisgICAgICBzdWJ0eXBlOiAnbm90c2V0JywKICAgICAgIC4uLm9wdGlvbnMsCiAg ICAgICB0eXBlOiBUWVBFLAogICAgIH0pOwpAQCAtMzAsNiArMzEsMjIgQEAgZXhwb3J0IGRlZmF1 bHQgY2xhc3MgT25lVG9NYW55UG9ydE1vZGVsIGV4dGVuZHMgUG9ydE1vZGVsIHsKICAgY3JlYXRl TGlua01vZGVsKCkgewogICAgIHJldHVybiBuZXcgT25lVG9NYW55TGlua01vZGVsKHt9KTsKICAg fQorCisgIGdldFN1YnR5cGUoKSB7CisgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zdWJ0eXBlOwor ICB9CisKKyAgZGVzZXJpYWxpemUoZXZlbnQpIHsKKyAgICBzdXBlci5kZXNlcmlhbGl6ZShldmVu dCk7CisgICAgdGhpcy5vcHRpb25zLnN1YnR5cGUgPSBldmVudC5kYXRhLnN1YnR5cGUgfHwgJ25v dHNldCc7CisgIH0KKworICBzZXJpYWxpemUoKSB7CisgICAgcmV0dXJuIHsKKyAgICAgIC4uLnN1 cGVyLnNlcmlhbGl6ZSgpLAorICAgICAgc3VidHlwZTogdGhpcy5vcHRpb25zLnN1YnR5cGUsCisg ICAgfTsKKyAgfQogfQogCiBleHBvcnQgY2xhc3MgT25lVG9NYW55UG9ydEZhY3RvcnkgZXh0ZW5k cyBBYnN0cmFjdE1vZGVsRmFjdG9yeSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9l cmQvc3RhdGljL2pzL2VyZF90b29sL3VpX2NvbXBvbmVudHMvQm9keVdpZGdldC5qc3ggYi93ZWIv cGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL3VpX2NvbXBvbmVudHMvQm9keVdp ZGdldC5qc3gKaW5kZXggMjI3MDFiYWUyLi5lMzZhYWYyZjEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9Cb2R5V2lkZ2V0 LmpzeAorKysgYi93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL3VpX2Nv bXBvbmVudHMvQm9keVdpZGdldC5qc3gKQEAgLTEyLDYgKzEyLDEwIEBAIGltcG9ydCB7IENhbnZh c1dpZGdldCB9IGZyb20gJ0Bwcm9qZWN0c3Rvcm0vcmVhY3QtY2FudmFzLWNvcmUnOwogaW1wb3J0 IGF4aW9zIGZyb20gJ2F4aW9zJzsKIGltcG9ydCB7IEFjdGlvbiwgSW5wdXRUeXBlIH0gZnJvbSAn QHByb2plY3RzdG9ybS9yZWFjdC1jYW52YXMtY29yZSc7CiBpbXBvcnQgUHJvcFR5cGVzIGZyb20g J3Byb3AtdHlwZXMnOworaW1wb3J0IF8gZnJvbSAnbG9kYXNoJzsKK2ltcG9ydCBodG1sMmNhbnZh cyBmcm9tICdodG1sMmNhbnZhcyc7CitpbXBvcnQgKiBhcyBodG1sVG9JbWFnZSBmcm9tICdodG1s LXRvLWltYWdlJzsKKwogCiBpbXBvcnQgRVJEQ29yZSBmcm9tICcuLi9FUkRDb3JlJzsKIGltcG9y dCBUb29sQmFyLCB7SWNvbkJ1dHRvbiwgRGV0YWlsc1RvZ2dsZUJ1dHRvbiwgQnV0dG9uR3JvdXB9 IGZyb20gJy4vVG9vbEJhcic7CkBAIC0yMiwyMiArMjYsMjUgQEAgaW1wb3J0IHtzZXRQYW5lbFRp dGxlfSBmcm9tICcuLi8uLi9lcmRfbW9kdWxlJzsKIGltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJj ZXMvZ2V0dGV4dCc7CiBpbXBvcnQgdXJsX2ZvciBmcm9tICdzb3VyY2VzL3VybF9mb3InOwogaW1w b3J0IHtzaG93RVJEU3FsVG9vbH0gZnJvbSAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3df cXVlcnlfdG9vbCc7CitpbXBvcnQgJ3djZG9ja2VyJzsKIAogLyogQ3VzdG9tIHJlYWN0LWRpYWdy YW0gYWN0aW9uIGZvciBrZXlib2FyZCBldmVudHMgKi8KIGV4cG9ydCBjbGFzcyBLZXlib2FyZFNo b3J0Y3V0QWN0aW9uIGV4dGVuZHMgQWN0aW9uIHsKICAgY29uc3RydWN0b3Ioc2hvcnRjdXRfaGFu ZGxlcnM9W10pIHsKLSAgICAgIHN1cGVyKHsKLSAgICAgICAgICB0eXBlOiBJbnB1dFR5cGUuS0VZ X0RPV04sCi0gICAgICAgICAgZmlyZTogKHsgZXZlbnQgfSk9PnsKLSAgICAgICAgICAgIHRoaXMu Y2FsbEhhbmRsZXIoZXZlbnQpOwotICAgICAgICAgIH0KLSAgICAgIH0pOwotICAgICAgdGhpcy5z aG9ydGN1dHMgPSB7fTsKKyAgICBzdXBlcih7CisgICAgICB0eXBlOiBJbnB1dFR5cGUuS0VZX0RP V04sCisgICAgICBmaXJlOiAoeyBldmVudCB9KT0+eworICAgICAgICB0aGlzLmNhbGxIYW5kbGVy KGV2ZW50KTsKKyAgICAgIH0sCisgICAgfSk7CisgICAgdGhpcy5zaG9ydGN1dHMgPSB7fTsKIAot ICAgICAgZm9yKGxldCBpPTA7IGk8c2hvcnRjdXRfaGFuZGxlcnMubGVuZ3RoOyBpKyspewotICAg ICAgICBsZXQgW2tleSwgaGFuZGxlcl0gPSBzaG9ydGN1dF9oYW5kbGVyc1tpXTsKKyAgICBmb3Io bGV0IGk9MDsgaTxzaG9ydGN1dF9oYW5kbGVycy5sZW5ndGg7IGkrKyl7CisgICAgICBsZXQgW2tl eSwgaGFuZGxlcl0gPSBzaG9ydGN1dF9oYW5kbGVyc1tpXTsKKyAgICAgIGlmKGtleSkgewogICAg ICAgICB0aGlzLnNob3J0Y3V0c1t0aGlzLnNob3J0Y3V0S2V5KGtleS5hbHQsIGtleS5jb250cm9s LCBrZXkuc2hpZnQsIGZhbHNlLCBrZXkua2V5LmtleV9jb2RlKV0gPSBoYW5kbGVyOwogICAgICAg fQorICAgIH0KICAgfQogCiAgIHNob3J0Y3V0S2V5KGFsdEtleSwgY3RybEtleSwgc2hpZnRLZXks IG1ldGFLZXksIGtleUNvZGUpIHsKQEAgLTY5LDkgKzc2LDEyIEBAIGV4cG9ydCBkZWZhdWx0IGNs YXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAgY3VycmVudF9m aWxlOiBudWxsLAogICAgICAgZGlydHk6IGZhbHNlLAogICAgICAgc2hvd19kZXRhaWxzOiB0cnVl LAorICAgICAgaXNfbmV3X3RhYjogZmFsc2UsCiAgICAgICBwcmVmZXJlbmNlczoge30sCi0gICAg fQorICAgIH07CiAgICAgdGhpcy5kaWFncmFtID0gbmV3IEVSRENvcmUoKTsKKyAgICAvKiBGbGFn IGZvciBjaGVja2luZyBpZiB1c2VyIGhhcyBvcHRlZCBmb3Igc2F2ZSBiZWZvcmUgY2xvc2UgKi8K KyAgICB0aGlzLmNsb3NlT25TYXZlID0gUmVhY3QuY3JlYXRlUmVmKCk7CiAgICAgdGhpcy5maWxl SW5wdXRSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTsKICAgICB0aGlzLmRpYWdyYW1Db250YWluZXJS ZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTsKICAgICB0aGlzLmNhbnZhc0VsZSA9IG51bGw7CkBAIC04 Myw2ICs5Myw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFj dC5Db21wb25lbnQgewogICAgIHRoaXMub25TYXZlRGlhZ3JhbSA9IHRoaXMub25TYXZlRGlhZ3Jh bS5iaW5kKHRoaXMpOwogICAgIHRoaXMub25TYXZlQXNEaWFncmFtID0gdGhpcy5vblNhdmVBc0Rp YWdyYW0uYmluZCh0aGlzKTsKICAgICB0aGlzLm9uU1FMQ2xpY2sgPSB0aGlzLm9uU1FMQ2xpY2su YmluZCh0aGlzKTsKKyAgICB0aGlzLm9uSW1hZ2VDbGljayA9IHRoaXMub25JbWFnZUNsaWNrLmJp bmQodGhpcyk7CiAgICAgdGhpcy5vbkFkZE5ld05vZGUgPSB0aGlzLm9uQWRkTmV3Tm9kZS5iaW5k KHRoaXMpOwogICAgIHRoaXMub25FZGl0Tm9kZSA9IHRoaXMub25FZGl0Tm9kZS5iaW5kKHRoaXMp OwogICAgIHRoaXMub25DbG9uZU5vZGUgPSB0aGlzLm9uQ2xvbmVOb2RlLmJpbmQodGhpcyk7CkBA IC0xMzMsNyArMTQ0LDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRz IFJlYWN0LkNvbXBvbmVudCB7CiAgICAgICB9LAogICAgICAgJ2VkaXROb2RlJzogKGV2ZW50KSA9 PiB7CiAgICAgICAgIHRoaXMuYWRkRWRpdE5vZGUoZXZlbnQubm9kZSk7Ci0gICAgICB9CisgICAg ICB9LAogICAgIH07CiAgICAgT2JqZWN0LmtleXMoZGlhZ3JhbUV2ZW50cykuZm9yRWFjaChldmVu dE5hbWUgPT4gewogICAgICAgdGhpcy5kaWFncmFtLnJlZ2lzdGVyTW9kZWxFdmVudChldmVudE5h bWUsIGRpYWdyYW1FdmVudHNbZXZlbnROYW1lXSk7CkBAIC0xNTcsOSArMTY4LDEwIEBAIGV4cG9y dCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAg ICAgW3RoaXMuc3RhdGUucHJlZmVyZW5jZXMub25lX3RvX21hbnksIHRoaXMub25PbmVUb01hbnlD bGlja10sCiAgICAgICBbdGhpcy5zdGF0ZS5wcmVmZXJlbmNlcy5tYW55X3RvX21hbnksIHRoaXMu b25NYW55VG9NYW55Q2xpY2tdLAogICAgICAgW3RoaXMuc3RhdGUucHJlZmVyZW5jZXMuYXV0b19h bGlnbiwgdGhpcy5vbkF1dG9EaXN0cmlidXRlXSwKKyAgICAgIFt0aGlzLnN0YXRlLnByZWZlcmVu Y2VzLnNob3dfZGV0YWlscywgdGhpcy5vbkRldGFpbHNUb2dnbGVdLAogICAgICAgW3RoaXMuc3Rh dGUucHJlZmVyZW5jZXMuem9vbV90b19maXQsIHRoaXMuZGlhZ3JhbS56b29tVG9GaXRdLAogICAg ICAgW3RoaXMuc3RhdGUucHJlZmVyZW5jZXMuem9vbV9pbiwgdGhpcy5kaWFncmFtLnpvb21Jbl0s Ci0gICAgICBbdGhpcy5zdGF0ZS5wcmVmZXJlbmNlcy56b29tX291dCwgdGhpcy5kaWFncmFtLnpv b21PdXRdCisgICAgICBbdGhpcy5zdGF0ZS5wcmVmZXJlbmNlcy56b29tX291dCwgdGhpcy5kaWFn cmFtLnpvb21PdXRdLAogICAgIF0pOwogCiAgICAgdGhpcy5kaWFncmFtLnJlZ2lzdGVyS2V5QWN0 aW9uKHRoaXMua2V5Ym9hcmRBY3Rpb25PYmopOwpAQCAtMTgyLDExICsxOTQsMTYgQEAgZXhwb3J0 IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7CiAgIH0K IAogICBhc3luYyBjb21wb25lbnREaWRNb3VudCgpIHsKLSAgICB0aGlzLnNldExvYWRpbmcoJ1By ZXBhcmluZycpOwotICAgIHRoaXMuc2V0VGl0bGUodGhpcy5zdGF0ZS5jdXJyZW50X2ZpbGUpOwor ICAgIHRoaXMuc2V0TG9hZGluZyhnZXR0ZXh0KCdQcmVwYXJpbmcuLi4nKSk7CisKICAgICB0aGlz LnNldFN0YXRlKHsKLSAgICAgIHByZWZlcmVuY2VzOiB0aGlzLnByb3BzLnBnQWRtaW4uQnJvd3Nl ci5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnZXJkJykKLSAgICB9LCB0aGlzLnJlZ2lzdGVy S2V5Ym9hcmRTaG9ydGN1dHMpOworICAgICAgcHJlZmVyZW5jZXM6IHRoaXMucHJvcHMucGdXaW5k b3cucGdBZG1pbi5Ccm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9kdWxlKCdlcmQnKSwKKyAg ICAgIGlzX25ld190YWI6ICh0aGlzLnByb3BzLnBnV2luZG93LnBnQWRtaW4uQnJvd3Nlci5nZXRf cHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnYnJvd3NlcicpLm5ld19icm93c2VyX3RhYl9vcGVuIHx8 ICcnKQorICAgICAgICAuaW5jbHVkZXMoJ2VyZF90b29sJyksCisgICAgfSwgKCk9PnsKKyAgICAg IHRoaXMucmVnaXN0ZXJLZXlib2FyZFNob3J0Y3V0cygpOworICAgICAgdGhpcy5zZXRUaXRsZSh0 aGlzLnN0YXRlLmN1cnJlbnRfZmlsZSk7CisgICAgfSk7CiAgICAgdGhpcy5yZWdpc3Rlck1vZGVs RXZlbnRzKCk7CiAgICAgdGhpcy5yZWFsaWduR3JpZCh7CiAgICAgICBiYWNrZ3JvdW5kU2l6ZTog JzQ1cHggNDVweCcsCkBAIC0xOTcsMTAgKzIxNCwxOSBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBC b2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICB0aGlzLnByb3BzLnBnQWRt aW4uQnJvd3Nlci5FdmVudHMub24oJ3BnYWRtaW4tc3RvcmFnZTpmaW5pc2hfYnRuOmNyZWF0ZV9m aWxlJywgdGhpcy5zYXZlRmlsZSwgdGhpcyk7CiAgICAgdGhpcy5wcm9wcy5wZ0FkbWluLkJyb3dz ZXIub25QcmVmZXJlbmNlc0NoYW5nZSgnZXJkJywgKCkgPT4gewogICAgICAgdGhpcy5zZXRTdGF0 ZSh7Ci0gICAgICAgIHByZWZlcmVuY2VzOiB0aGlzLnByb3BzLnBnQWRtaW4uQnJvd3Nlci5nZXRf cHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnZXJkJykKKyAgICAgICAgcHJlZmVyZW5jZXM6IHRoaXMu cHJvcHMucGdXaW5kb3cucGdBZG1pbi5Ccm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9kdWxl KCdlcmQnKSwKICAgICAgIH0sICgpPT50aGlzLnJlZ2lzdGVyS2V5Ym9hcmRTaG9ydGN1dHMoKSk7 CiAgICAgfSk7CiAKKyAgICB0aGlzLnByb3BzLnBhbmVsPy5vbih3aW5kb3cud2NEb2NrZXI/LkVW RU5ULkNMT1NJTkcsICgpID0+IHsKKyAgICAgIGlmKHRoaXMuc3RhdGUuZGlydHkpIHsKKyAgICAg ICAgdGhpcy5jbG9zZU9uU2F2ZSA9IGZhbHNlOworICAgICAgICB0aGlzLmNvbmZpcm1CZWZvcmVD bG9zZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICB9KTsKKwogICAgIGxldCBkb25lID0gYXdhaXQgdGhpcy5pbml0Q29ubmVjdGlvbigp OwogICAgIGlmKCFkb25lKSByZXR1cm47CiAKQEAgLTIxOCwxOCArMjQ0LDc4IEBAIGV4cG9ydCBk ZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgIH0K ICAgfQogCisgIGNvbmZpcm1CZWZvcmVDbG9zZSgpIHsKKyAgICBsZXQgYm9keU9iaiA9IHRoaXM7 CisgICAgdGhpcy5wcm9wcy5hbGVydGlmeS5jb25maXJtU2F2ZSB8fCB0aGlzLnByb3BzLmFsZXJ0 aWZ5LmRpYWxvZygnY29uZmlybVNhdmUnLCBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiB7Cisg ICAgICAgIG1haW46IGZ1bmN0aW9uKHRpdGxlLCBtZXNzYWdlKSB7CisgICAgICAgICAgdGhpcy5z ZXRIZWFkZXIodGl0bGUpOworICAgICAgICAgIHRoaXMuc2V0Q29udGVudChtZXNzYWdlKTsKKyAg ICAgICAgfSwKKyAgICAgICAgc2V0dXA6IGZ1bmN0aW9uKCkgeworICAgICAgICAgIHJldHVybiB7 CisgICAgICAgICAgICBidXR0b25zOiBbeworICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdD YW5jZWwnKSwKKyAgICAgICAgICAgICAga2V5OiAyNywgLy8gRVNDCisgICAgICAgICAgICAgIGlu dm9rZU9uQ2xvc2U6IHRydWUsCisgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tc2Vj b25kYXJ5IGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAgICAgICAg ICB9LCB7CisgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0RvblwndCBzYXZlJyksCisgICAg ICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tc2Vjb25kYXJ5IGZhIGZhLWxnIGZhLXRyYXNo LWFsdCBwZy1hbGVydGlmeS1idXR0b24nLAorICAgICAgICAgICAgfSwgeworICAgICAgICAgICAg ICB0ZXh0OiBnZXR0ZXh0KCdTYXZlJyksCisgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBi dG4tcHJpbWFyeSBmYSBmYS1sZyBmYS1zYXZlIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAgICAg ICAgICB9XSwKKyAgICAgICAgICAgIGZvY3VzOiB7CisgICAgICAgICAgICAgIGVsZW1lbnQ6IDAs CisgICAgICAgICAgICAgIHNlbGVjdDogZmFsc2UsCisgICAgICAgICAgICB9LAorICAgICAgICAg ICAgb3B0aW9uczogeworICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsCisgICAgICAg ICAgICAgIHJlc2l6YWJsZTogZmFsc2UsCisgICAgICAgICAgICB9LAorICAgICAgICAgIH07Cisg ICAgICAgIH0sCisgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbihjbG9zZUV2ZW50KSB7CisgICAg ICAgICAgc3dpdGNoIChjbG9zZUV2ZW50LmluZGV4KSB7CisgICAgICAgICAgY2FzZSAwOiAvLyBD YW5jZWwKKyAgICAgICAgICAgIC8vRG8gbm90aGluZy4KKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgIGNhc2UgMTogLy8gRG9uJ3QgU2F2ZQorICAgICAgICAgICAgYm9keU9iai5jbG9zZVBh bmVsKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDI6IC8vU2F2ZQorICAg ICAgICAgICAgYm9keU9iai5vblNhdmVEaWFncmFtKGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgIH07CisgICAgfSk7CisgICAg dGhpcy5wcm9wcy5hbGVydGlmeS5jb25maXJtU2F2ZShnZXR0ZXh0KCdTYXZlIGNoYW5nZXM/Jyks IGdldHRleHQoJ1RoZSBkaWFncmFtIGhhcyBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIGNo YW5nZXM/JykpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGNsb3NlUGFuZWwoKSB7Cisg ICAgd2luZG93Lm9uYmVmb3JldW5sb2FkID0gbnVsbDsKKyAgICB0aGlzLnByb3BzLnBhbmVsLm9m Zih3Y0RvY2tlci5FVkVOVC5DTE9TSU5HKTsKKyAgICB0aGlzLnByb3BzLnBnV2luZG93LnBnQWRt aW4uQnJvd3Nlci5kb2NrZXIucmVtb3ZlUGFuZWwodGhpcy5wcm9wcy5wYW5lbCk7CisgIH0KKwog ICBnZXREaWFsb2coZGlhbG9nTmFtZSkgewogICAgIGlmKGRpYWxvZ05hbWUgPT09ICdlbnRpdHlf ZGlhbG9nJykgeworICAgICAgbGV0IGV4aXN0aW5nVGFibGVzID0gdGhpcy5kaWFncmFtLmdldE1v ZGVsKCkuZ2V0Tm9kZXMoKS5tYXAoKG5vZGUpPT57CisgICAgICAgIHJldHVybiBub2RlLmdldFNj aGVtYVRhYmxlTmFtZSgpOworICAgICAgfSk7CiAgICAgICByZXR1cm4gKHRpdGxlLCBhdHRyaWJ1 dGVzLCBjYWxsYmFjayk9PnsKLSAgICAgICAgICB0aGlzLnByb3BzLmdldERpYWxvZyhkaWFsb2dO YW1lKS5zaG93KAotICAgICAgICAgICAgdGl0bGUsIGF0dHJpYnV0ZXMsIHRoaXMuZGlhZ3JhbS5n ZXRDYWNoZSgnY29sVHlwZXMnKSwgdGhpcy5kaWFncmFtLmdldENhY2hlKCdzY2hlbWFzJyksIHRo aXMuc3RhdGUuc2VydmVyX3ZlcnNpb24sIGNhbGxiYWNrCi0gICAgICAgICAgKTsKKyAgICAgICAg dGhpcy5wcm9wcy5nZXREaWFsb2coZGlhbG9nTmFtZSkuc2hvdygKKyAgICAgICAgICB0aXRsZSwg YXR0cmlidXRlcywgZXhpc3RpbmdUYWJsZXMsIHRoaXMuZGlhZ3JhbS5nZXRDYWNoZSgnY29sVHlw ZXMnKSwgdGhpcy5kaWFncmFtLmdldENhY2hlKCdzY2hlbWFzJyksIHRoaXMuc3RhdGUuc2VydmVy X3ZlcnNpb24sIGNhbGxiYWNrCisgICAgICAgICk7CiAgICAgICB9OwogICAgIH0gZWxzZSBpZihk aWFsb2dOYW1lID09PSAnb25ldG9tYW55X2RpYWxvZycgfHwgZGlhbG9nTmFtZSA9PT0gJ21hbnl0 b21hbnlfZGlhbG9nJykgewogICAgICAgcmV0dXJuICh0aXRsZSwgYXR0cmlidXRlcywgY2FsbGJh Y2spPT57Ci0gICAgICAgICAgdGhpcy5wcm9wcy5nZXREaWFsb2coZGlhbG9nTmFtZSkuc2hvdygK LSAgICAgICAgICAgICAgdGl0bGUsIGF0dHJpYnV0ZXMsIHRoaXMuZGlhZ3JhbS5nZXRNb2RlbCgp LmdldE5vZGVzRGljdCgpLCB0aGlzLnN0YXRlLnNlcnZlcl92ZXJzaW9uLCBjYWxsYmFjawotICAg ICAgICAgICk7CisgICAgICAgIHRoaXMucHJvcHMuZ2V0RGlhbG9nKGRpYWxvZ05hbWUpLnNob3co CisgICAgICAgICAgdGl0bGUsIGF0dHJpYnV0ZXMsIHRoaXMuZGlhZ3JhbS5nZXRNb2RlbCgpLmdl dE5vZGVzRGljdCgpLCB0aGlzLnN0YXRlLnNlcnZlcl92ZXJzaW9uLCBjYWxsYmFjaworICAgICAg ICApOwogICAgICAgfTsKICAgICB9CiAgIH0KQEAgLTI4OSwyMCArMzc1LDIwIEBAIGV4cG9ydCBk ZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAg Z2V0dGV4dCgnRGVsZXRlID8nKSwKICAgICAgIGdldHRleHQoJ1lvdSBoYXZlIHNlbGVjdGVkICVz IHRhYmxlcyBhbmQgJXMgbGlua3MuJywgdGhpcy5kaWFncmFtLmdldFNlbGVjdGVkTm9kZXMoKS5s ZW5ndGgsIHRoaXMuZGlhZ3JhbS5nZXRTZWxlY3RlZExpbmtzKCkubGVuZ3RoKQogICAgICAgICAr ICc8YnIgLz4nICsgZ2V0dGV4dCgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSA/Jyks Ci0gICAgICAgICgpID0+IHsKLSAgICAgICAgICB0aGlzLmRpYWdyYW0uZ2V0U2VsZWN0ZWROb2Rl cygpLmZvckVhY2goKG5vZGUpPT57Ci0gICAgICAgICAgICBub2RlLnNldFNlbGVjdGVkKGZhbHNl KTsKLSAgICAgICAgICAgIG5vZGUucmVtb3ZlKCk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgICAg dGhpcy5kaWFncmFtLmdldFNlbGVjdGVkTGlua3MoKS5mb3JFYWNoKChsaW5rKT0+ewotICAgICAg ICAgICAgbGluay5nZXRUYXJnZXRQb3J0KCkucmVtb3ZlKCk7Ci0gICAgICAgICAgICBsaW5rLmdl dFNvdXJjZVBvcnQoKS5yZW1vdmUoKTsKLSAgICAgICAgICAgIGxpbmsuc2V0U2VsZWN0ZWQoZmFs c2UpOwotICAgICAgICAgICAgbGluay5yZW1vdmUoKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAg ICB0aGlzLmRpYWdyYW0ucmVwYWludCgpOwotICAgICAgICB9LAotICAgICAgICAoKSA9PiB7fQor ICAgICAgKCkgPT4geworICAgICAgICB0aGlzLmRpYWdyYW0uZ2V0U2VsZWN0ZWROb2RlcygpLmZv ckVhY2goKG5vZGUpPT57CisgICAgICAgICAgbm9kZS5zZXRTZWxlY3RlZChmYWxzZSk7CisgICAg ICAgICAgbm9kZS5yZW1vdmUoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHRoaXMuZGlhZ3JhbS5n ZXRTZWxlY3RlZExpbmtzKCkuZm9yRWFjaCgobGluayk9PnsKKyAgICAgICAgICBsaW5rLmdldFRh cmdldFBvcnQoKS5yZW1vdmUoKTsKKyAgICAgICAgICBsaW5rLmdldFNvdXJjZVBvcnQoKS5yZW1v dmUoKTsKKyAgICAgICAgICBsaW5rLnNldFNlbGVjdGVkKGZhbHNlKTsKKyAgICAgICAgICBsaW5r LnJlbW92ZSgpOworICAgICAgICB9KTsKKyAgICAgICAgdGhpcy5kaWFncmFtLnJlcGFpbnQoKTsK KyAgICAgIH0sCisgICAgICAoKSA9PiB7fQogICAgICk7CiAgIH0KIApAQCAtMzEyLDExICszOTgs MTEgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRzIFJlYWN0LkNvbXBv bmVudCB7CiAKICAgb25EZXRhaWxzVG9nZ2xlKCkgewogICAgIHRoaXMuc2V0U3RhdGUoKHByZXZT dGF0ZSk9Pih7Ci0gICAgICBzaG93X2RldGFpbHM6ICFwcmV2U3RhdGUuc2hvd19kZXRhaWxzCisg ICAgICBzaG93X2RldGFpbHM6ICFwcmV2U3RhdGUuc2hvd19kZXRhaWxzLAogICAgIH0pLCAoKT0+ ewogICAgICAgdGhpcy5kaWFncmFtLmdldE1vZGVsKCkuZ2V0Tm9kZXMoKS5mb3JFYWNoKChub2Rl KT0+ewogICAgICAgICBub2RlLmZpcmVFdmVudCh7c2hvd19kZXRhaWxzOiB0aGlzLnN0YXRlLnNo b3dfZGV0YWlsc30sICd0b2dnbGVEZXRhaWxzJyk7Ci0gICAgICB9KQorICAgICAgfSk7CiAgICAg fSk7CiAgIH0KIApAQCAtMzM1LDggKzQyMSw5IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlX aWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICB9CiAKICAgb3BlbkZpbGUoZmlsZU5h bWUpIHsKKyAgICB0aGlzLnNldExvYWRpbmcoZ2V0dGV4dCgnTG9hZGluZyBwcm9qZWN0Li4uJykp OwogICAgIGF4aW9zLnBvc3QodXJsX2Zvcignc3FsZWRpdG9yLmxvYWRfZmlsZScpLCB7Ci0gICAg ICAnZmlsZV9uYW1lJzogZGVjb2RlVVJJKGZpbGVOYW1lKQorICAgICAgJ2ZpbGVfbmFtZSc6IGRl Y29kZVVSSShmaWxlTmFtZSksCiAgICAgfSkudGhlbigocmVzKT0+ewogICAgICAgdGhpcy5zZXRT dGF0ZSh7CiAgICAgICAgIGN1cnJlbnRfZmlsZTogZmlsZU5hbWUsCkBAIC0zNDQsMTMgKzQzMSwx NyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9u ZW50IHsKICAgICAgIH0pOwogICAgICAgdGhpcy5zZXRUaXRsZShmaWxlTmFtZSk7CiAgICAgICB0 aGlzLmRpYWdyYW0uZGVzZXJpYWxpemUocmVzLmRhdGEpOworICAgICAgdGhpcy5kaWFncmFtLmNs ZWFyU2VsZWN0aW9uKCk7CiAgICAgICB0aGlzLnJlZ2lzdGVyTW9kZWxFdmVudHMoKTsKICAgICB9 KS5jYXRjaCgoZXJyKT0+ewogICAgICAgdGhpcy5oYW5kbGVBeGlvc0NhdGNoKGVycik7CisgICAg fSkudGhlbigoKT0+eworICAgICAgdGhpcy5zZXRMb2FkaW5nKG51bGwpOwogICAgIH0pOwogICB9 CiAKLSAgb25TYXZlRGlhZ3JhbShpc1NhdmVBcz1mYWxzZSkgeworICBvblNhdmVEaWFncmFtKGlz U2F2ZUFzPWZhbHNlLCBjbG9zZU9uU2F2ZT1mYWxzZSkgeworICAgIHRoaXMuY2xvc2VPblNhdmUg PSBjbG9zZU9uU2F2ZTsKICAgICBpZih0aGlzLnN0YXRlLmN1cnJlbnRfZmlsZSAmJiAhaXNTYXZl QXMpIHsKICAgICAgIHRoaXMuc2F2ZUZpbGUodGhpcy5zdGF0ZS5jdXJyZW50X2ZpbGUpOwogICAg IH0gZWxzZSB7CkBAIC0zNzAsOSArNDYxLDEwIEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlX aWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICB9CiAKICAgc2F2ZUZpbGUoZmlsZU5h bWUpIHsKKyAgICB0aGlzLnNldExvYWRpbmcoZ2V0dGV4dCgnU2F2aW5nLi4uJykpOwogICAgIGF4 aW9zLnBvc3QodXJsX2Zvcignc3FsZWRpdG9yLnNhdmVfZmlsZScpLCB7CiAgICAgICAnZmlsZV9u YW1lJzogZGVjb2RlVVJJKGZpbGVOYW1lKSwKLSAgICAgICdmaWxlX2NvbnRlbnQnOiBKU09OLnN0 cmluZ2lmeSh0aGlzLmRpYWdyYW0uc2VyaWFsaXplKHRoaXMucHJvcHMucGdBZG1pbi5Ccm93c2Vy LnV0aWxzLmFwcF92ZXJzaW9uX2ludCkpCisgICAgICAnZmlsZV9jb250ZW50JzogSlNPTi5zdHJp bmdpZnkodGhpcy5kaWFncmFtLnNlcmlhbGl6ZSh0aGlzLnByb3BzLnBnQWRtaW4uQnJvd3Nlci51 dGlscy5hcHBfdmVyc2lvbl9pbnQpKSwKICAgICB9KS50aGVuKCgpPT57CiAgICAgICB0aGlzLnBy b3BzLmFsZXJ0aWZ5LnN1Y2Nlc3MoZ2V0dGV4dCgnUHJvamVjdCBzYXZlZCBzdWNjZXNzZnVsbHku JykpOwogICAgICAgdGhpcy5zZXRTdGF0ZSh7CkBAIC0zODAsNyArNDcyLDEyIEBAIGV4cG9ydCBk ZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAg ICBkaXJ0eTogZmFsc2UsCiAgICAgICB9KTsKICAgICAgIHRoaXMuc2V0VGl0bGUoZmlsZU5hbWUp OworICAgICAgdGhpcy5zZXRMb2FkaW5nKG51bGwpOworICAgICAgaWYodGhpcy5jbG9zZU9uU2F2 ZSkgeworICAgICAgICB0aGlzLmNsb3NlUGFuZWwuY2FsbCh0aGlzKTsKKyAgICAgIH0KICAgICB9 KS5jYXRjaCgoZXJyKT0+eworICAgICAgdGhpcy5zZXRMb2FkaW5nKG51bGwpOwogICAgICAgdGhp cy5oYW5kbGVBeGlvc0NhdGNoKGVycik7CiAgICAgfSk7CiAgIH0KQEAgLTM5NSwxNCArNDkyLDEw IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25l bnQgewogICAgICAgdGl0bGUgPSAnVW50aXRsZWQnOwogICAgIH0KICAgICB0aXRsZSA9IHRoaXMu Z2V0Q3VycmVudFByb2plY3ROYW1lKHRpdGxlKSArIChkaXJ0eSA/ICcqJzogJycpOwotICAgIGlm ICh0aGlzLm5ld19icm93c2VyX3RhYikgeworICAgIGlmICh0aGlzLnN0YXRlLmlzX25ld190YWIp IHsKICAgICAgIHdpbmRvdy5kb2N1bWVudC50aXRsZSA9IHRpdGxlOwogICAgIH0gZWxzZSB7Ci0g ICAgICBfLmVhY2godGhpcy5wcm9wcy5wZ0FkbWluLkJyb3dzZXIuZG9ja2VyLmZpbmRQYW5lbHMo J2ZybV9lcmR0b29sJyksIGZ1bmN0aW9uKHApIHsKLSAgICAgICAgaWYgKHAuaXNWaXNpYmxlKCkp IHsKLSAgICAgICAgICBzZXRQYW5lbFRpdGxlKHAsIHRpdGxlKTsKLSAgICAgICAgfQotICAgICAg fSk7CisgICAgICBzZXRQYW5lbFRpdGxlKHRoaXMucHJvcHMucGFuZWwsIHRpdGxlKTsKICAgICB9 CiAgIH0KIApAQCAtNDE0LDcgKzUwNyw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRn ZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAgdHJhbnNfaWQ6IHRoaXMucHJvcHMu cGFyYW1zLnRyYW5zX2lkLAogICAgICAgc2dpZDogdGhpcy5wcm9wcy5wYXJhbXMuc2dpZCwKICAg ICAgIHNpZDogdGhpcy5wcm9wcy5wYXJhbXMuc2lkLAotICAgICAgZGlkOiB0aGlzLnByb3BzLnBh cmFtcy5kaWQKKyAgICAgIGRpZDogdGhpcy5wcm9wcy5wYXJhbXMuZGlkLAogICAgIH0pOwogCiAg ICAgdGhpcy5zZXRMb2FkaW5nKGdldHRleHQoJ1ByZXBhcmluZyB0aGUgU1FMLi4uJykpOwpAQCAt NDI4LDE4ICs1MjEsNTMgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRz IFJlYWN0LkNvbXBvbmVudCB7CiAgICAgICAgICAgc2lkOiB0aGlzLnByb3BzLnBhcmFtcy5zaWQs CiAgICAgICAgICAgZGlkOiB0aGlzLnByb3BzLnBhcmFtcy5kaWQsCiAgICAgICAgICAgc3R5cGU6 IHRoaXMucHJvcHMucGFyYW1zLnNlcnZlcl90eXBlLAotICAgICAgICB9CisgICAgICAgIH07CiAK ICAgICAgICAgbGV0IHNxbElkID0gYGVyZCR7dGhpcy5wcm9wcy5wYXJhbXMudHJhbnNfaWR9YDsK ICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oc3FsSWQsIHNxbFNjcmlwdCk7Ci0gICAgICAg IHNob3dFUkRTcWxUb29sKHBhcmVudERhdGEsIHNxbElkLCB0aGlzLnByb3BzLnBhcmFtcy50aXRs ZSwgdGhpcy5wcm9wcy5wZ0FkbWluLkRhdGFHcmlkLCB0aGlzLnByb3BzLmFsZXJ0aWZ5KTsKKyAg ICAgICAgc2hvd0VSRFNxbFRvb2wocGFyZW50RGF0YSwgc3FsSWQsIHRoaXMucHJvcHMucGFyYW1z LnRpdGxlLCB0aGlzLnByb3BzLnBnV2luZG93LnBnQWRtaW4uRGF0YUdyaWQsIHRoaXMucHJvcHMu YWxlcnRpZnkpOwogICAgICAgfSkKICAgICAgIC5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgIHRo aXMuaGFuZGxlQXhpb3NDYXRjaChlcnJvcik7CiAgICAgICB9KQogICAgICAgLnRoZW4oKCk9PnsK ICAgICAgICAgdGhpcy5zZXRMb2FkaW5nKG51bGwpOwotICAgICAgfSkKKyAgICAgIH0pOworICB9 CisKKyAgb25JbWFnZUNsaWNrKCkgeworICAgIHRoaXMuc2V0TG9hZGluZyhnZXR0ZXh0KCdQcmVw YXJpbmcgdGhlIGltYWdlLi4uJykpOworCisgICAgLyogQ2hhbmdlIHRoZSBzdHlsZXMgZm9yIHN1 aXRpbmcgaHRtbDJjYW52YXMgKi8KKyAgICB0aGlzLmNhbnZhc0VsZS5jbGFzc0xpc3QuYWRkKCdo dG1sMmNhbnZhcy1yZXNldCcpOworICAgIHRoaXMuY2FudmFzRWxlLnN0eWxlLndpZHRoID0gdGhp cy5jYW52YXNFbGUuc2Nyb2xsV2lkdGggKyAncHgnOworICAgIHRoaXMuY2FudmFzRWxlLnN0eWxl LmhlaWdodCA9IHRoaXMuY2FudmFzRWxlLnNjcm9sbEhlaWdodCArICdweCc7CisKKyAgICBodG1s MmNhbnZhcyh0aGlzLmNhbnZhc0VsZSwgeworICAgICAgd2lkdGg6IHRoaXMuY2FudmFzRWxlLnNj cm9sbFdpZHRoICsgMTAsCisgICAgICBoZWlnaHQ6IHRoaXMuY2FudmFzRWxlLnNjcm9sbEhlaWdo dCArIDEwLAorICAgICAgc2Nyb2xsWDogMCwKKyAgICAgIHNjcm9sbFk6IDAsCisgICAgICB1c2VD T1JTOiB0cnVlLAorICAgICAgYWxsb3dUYWludDogdHJ1ZSwKKyAgICAgIGJhY2tncm91bmRDb2xv cjogd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5jYW52YXNFbGUpLmJhY2tncm91bmRDb2xv ciwKKyAgICB9KS50aGVuKChjYW52YXMpPT57CisgICAgICBsZXQgbGluayA9IGRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoJ2EnKTsKKyAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgY2FudmFz LnRvRGF0YVVSTCgnaW1hZ2UvcG5nJykpOworICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25s b2FkJywgdGhpcy5nZXRDdXJyZW50UHJvamVjdE5hbWUoKSArICcucG5nJyk7CisgICAgICBsaW5r LmNsaWNrKCk7CisgICAgfSkuY2F0Y2goKGVycik9PnsKKyAgICAgIGNvbnNvbGUuZXJyb3IoZXJy KTsKKyAgICAgIHRoaXMucHJvcHMuYWxlcnRpZnkuYWxlcnQoKQorICAgICAgICAuc2V0KCd0aXRs ZScsIGdldHRleHQoJ0Vycm9yJykpCisgICAgICAgIC5zZXQoJ21lc3NhZ2UnLCBlcnIpLnNob3co KTsKKyAgICB9KS50aGVuKCgpPT57CisgICAgICAvKiBSZXZlcnQgYmFjayB0byB0aGUgb3JpZ2lu YWwgQ1NTIHN0eWxlcyAqLworICAgICAgdGhpcy5jYW52YXNFbGUuY2xhc3NMaXN0LnJlbW92ZSgn aHRtbDJjYW52YXMtcmVzZXQnKTsKKyAgICAgIHRoaXMuY2FudmFzRWxlLnN0eWxlLndpZHRoID0g Jyc7CisgICAgICB0aGlzLmNhbnZhc0VsZS5zdHlsZS5oZWlnaHQgPSAnJzsKKyAgICAgIHRoaXMu c2V0TG9hZGluZyhudWxsKTsKKyAgICB9KTsKICAgfQogCiAgIG9uT25lVG9NYW55Q2xpY2soKSB7 CkBAIC00NzMsOCArNjAxLDggQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRl bmRzIFJlYWN0LkNvbXBvbmVudCB7CiAgICAgICAgICAgJ25hbWUnOiBgJHtyaWdodF90YWJsZS5n ZXREYXRhKCkubmFtZX1fJHtyaWdodF90YWJsZS5nZXRDb2x1bW5BdChuZXdEYXRhLnJpZ2h0X3Rh YmxlX2NvbHVtbl9hdHRudW0pLm5hbWV9YCwKICAgICAgICAgICAnaXNfcHJpbWFyeV9rZXknOiBm YWxzZSwKICAgICAgICAgICAnYXR0bnVtJzogMSwKLSAgICAgICAgfV0KLSAgICAgIH0KKyAgICAg ICAgfV0sCisgICAgICB9OwogICAgICAgbGV0IG5ld05vZGUgPSB0aGlzLmRpYWdyYW0uYWRkTm9k ZSh0YWJsZURhdGEpOwogICAgICAgdGhpcy5kaWFncmFtLmNsZWFyU2VsZWN0aW9uKCk7CiAgICAg ICBuZXdOb2RlLnNldFNlbGVjdGVkKHRydWUpOwpAQCAtNDg0LDcgKzYxMiw3IEBAIGV4cG9ydCBk ZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAg ICBsb2NhbF9jb2x1bW5fYXR0bnVtOiBuZXdOb2RlLmdldENvbHVtbnMoKVswXS5hdHRudW0sCiAg ICAgICAgIHJlZmVyZW5jZWRfdGFibGVfdWlkOiBuZXdEYXRhLmxlZnRfdGFibGVfdWlkLAogICAg ICAgICByZWZlcmVuY2VkX2NvbHVtbl9hdHRudW0gOiBuZXdEYXRhLmxlZnRfdGFibGVfY29sdW1u X2F0dG51bSwKLSAgICAgIH0KKyAgICAgIH07CiAgICAgICB0aGlzLmRpYWdyYW0uYWRkTGluayhs aW5rRGF0YSwgJ29uZXRvbWFueScpOwogCiAgICAgICBsaW5rRGF0YSA9IHsKQEAgLTQ5Miw3ICs2 MjAsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29t cG9uZW50IHsKICAgICAgICAgbG9jYWxfY29sdW1uX2F0dG51bTogbmV3Tm9kZS5nZXRDb2x1bW5z KClbMV0uYXR0bnVtLAogICAgICAgICByZWZlcmVuY2VkX3RhYmxlX3VpZDogbmV3RGF0YS5yaWdo dF90YWJsZV91aWQsCiAgICAgICAgIHJlZmVyZW5jZWRfY29sdW1uX2F0dG51bSA6IG5ld0RhdGEu cmlnaHRfdGFibGVfY29sdW1uX2F0dG51bSwKLSAgICAgIH0KKyAgICAgIH07CiAKICAgICAgIHRo aXMuZGlhZ3JhbS5hZGRMaW5rKGxpbmtEYXRhLCAnb25ldG9tYW55Jyk7CiAKQEAgLTUwNSw3ICs2 MzMsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29t cG9uZW50IHsKICAgICAgIHRoaXMubm90ZVJlZkVsZSA9IHRoaXMuZGlhZ3JhbS5nZXRFbmdpbmUo KS5nZXROb2RlRWxlbWVudChub3RlTm9kZSk7CiAgICAgICB0aGlzLnNldFN0YXRlKHsKICAgICAg ICAgbm90ZV9ub2RlOiBub3RlTm9kZSwKLSAgICAgICAgbm90ZV9vcGVuOiB0cnVlCisgICAgICAg IG5vdGVfb3BlbjogdHJ1ZSwKICAgICAgIH0pOwogICAgIH0KICAgfQpAQCAtNTI4LDE0ICs2NTYs MTQgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRzIFJlYWN0LkNvbXBv bmVudCB7CiAgICAgICB0cmFuc19pZDogdGhpcy5wcm9wcy5wYXJhbXMudHJhbnNfaWQsCiAgICAg ICBzZ2lkOiB0aGlzLnByb3BzLnBhcmFtcy5zZ2lkLAogICAgICAgc2lkOiB0aGlzLnByb3BzLnBh cmFtcy5zaWQsCi0gICAgICBkaWQ6IHRoaXMucHJvcHMucGFyYW1zLmRpZAorICAgICAgZGlkOiB0 aGlzLnByb3BzLnBhcmFtcy5kaWQsCiAgICAgfSk7CiAKICAgICB0cnkgewogICAgICAgbGV0IHJl c3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdChpbml0VXJsKTsKICAgICAgIHRoaXMuc2V0U3RhdGUo ewogICAgICAgICBjb25uX3N0YXR1czogQ09OTkVDVF9TVEFUVVMuQ09OTkVDVEVELAotICAgICAg ICBzZXJ2ZXJfdmVyc2lvbjogcmVzcG9uc2UuZGF0YS5kYXRhLnNlcnZlclZlcnNpb24KKyAgICAg ICAgc2VydmVyX3ZlcnNpb246IHJlc3BvbnNlLmRhdGEuZGF0YS5zZXJ2ZXJWZXJzaW9uLAogICAg ICAgfSk7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IGNhdGNoIChlcnJvcikgewpAQCAtNTU2 LDcgKzY4NCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFj dC5Db21wb25lbnQgewogICAgICAgdHJhbnNfaWQ6IHRoaXMucHJvcHMucGFyYW1zLnRyYW5zX2lk LAogICAgICAgc2dpZDogdGhpcy5wcm9wcy5wYXJhbXMuc2dpZCwKICAgICAgIHNpZDogdGhpcy5w cm9wcy5wYXJhbXMuc2lkLAotICAgICAgZGlkOiB0aGlzLnByb3BzLnBhcmFtcy5kaWQKKyAgICAg IGRpZDogdGhpcy5wcm9wcy5wYXJhbXMuZGlkLAogICAgIH0pOwogCiAgICAgdHJ5IHsKQEAgLTU3 OSw3ICs3MDcsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVuZHMgUmVh Y3QuQ29tcG9uZW50IHsKICAgICAgIHRyYW5zX2lkOiB0aGlzLnByb3BzLnBhcmFtcy50cmFuc19p ZCwKICAgICAgIHNnaWQ6IHRoaXMucHJvcHMucGFyYW1zLnNnaWQsCiAgICAgICBzaWQ6IHRoaXMu cHJvcHMucGFyYW1zLnNpZCwKLSAgICAgIGRpZDogdGhpcy5wcm9wcy5wYXJhbXMuZGlkCisgICAg ICBkaWQ6IHRoaXMucHJvcHMucGFyYW1zLmRpZCwKICAgICB9KTsKIAogICAgIHRyeSB7CkBAIC02 MDQsNyArNzMyLDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRzIFJl YWN0LkNvbXBvbmVudCB7CiAgICAgICAgIDxCdXR0b25Hcm91cD4KICAgICAgICAgICA8SWNvbkJ1 dHRvbiBpZD0ib3Blbi1maWxlIiBpY29uPSJmYSBmYS1mb2xkZXItb3BlbiIgb25DbGljaz17dGhp cy5vbkxvYWREaWFncmFtfSB0aXRsZT17Z2V0dGV4dCgnTG9hZCBmcm9tIGZpbGUnKX0KICAgICAg ICAgICAgIHNob3J0Y3V0PXt0aGlzLnN0YXRlLnByZWZlcmVuY2VzLm9wZW5fcHJvamVjdH0vPgot ICAgICAgICAgIDxJY29uQnV0dG9uIGlkPSJzYXZlLWVyZCIgaWNvbj0iZmEgZmEtc2F2ZSIgb25D bGljaz17KCk9Pnt0aGlzLm9uU2F2ZURpYWdyYW0oKX19IHRpdGxlPXtnZXR0ZXh0KCdTYXZlIHBy b2plY3QnKX0KKyAgICAgICAgICA8SWNvbkJ1dHRvbiBpZD0ic2F2ZS1lcmQiIGljb249ImZhIGZh LXNhdmUiIG9uQ2xpY2s9eygpPT57dGhpcy5vblNhdmVEaWFncmFtKCk7fX0gdGl0bGU9e2dldHRl eHQoJ1NhdmUgcHJvamVjdCcpfQogICAgICAgICAgICAgc2hvcnRjdXQ9e3RoaXMuc3RhdGUucHJl ZmVyZW5jZXMuc2F2ZV9wcm9qZWN0fSBkaXNhYmxlZD17IXRoaXMuc3RhdGUuZGlydHl9Lz4KICAg ICAgICAgICA8SWNvbkJ1dHRvbiBpZD0ic2F2ZS1hcy1lcmQiIGljb249ImZhIGZhLXNoYXJlLXNx dWFyZSIgb25DbGljaz17dGhpcy5vblNhdmVBc0RpYWdyYW19IHRpdGxlPXtnZXR0ZXh0KCdTYXZl IGFzJyl9CiAgICAgICAgICAgICBzaG9ydGN1dD17dGhpcy5zdGF0ZS5wcmVmZXJlbmNlcy5zYXZl X3Byb2plY3RfYXN9Lz4KQEAgLTYxMiw2ICs3NDAsOCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBC b2R5V2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICAgICAgPEJ1dHRvbkdyb3Vw PgogICAgICAgICAgIDxJY29uQnV0dG9uIGlkPSJzYXZlLXNxbCIgaWNvbj0iZmEgZmEtZmlsZS1j b2RlIiBvbkNsaWNrPXt0aGlzLm9uU1FMQ2xpY2t9IHRpdGxlPXtnZXR0ZXh0KCdHZW5lcmF0ZSBT UUwnKX0KICAgICAgICAgICAgIHNob3J0Y3V0PXt0aGlzLnN0YXRlLnByZWZlcmVuY2VzLmdlbmVy YXRlX3NxbH0vPgorICAgICAgICAgIDxJY29uQnV0dG9uIGlkPSJzYXZlLWltYWdlIiBpY29uPSJm YSBmYS1maWxlLWltYWdlIiBvbkNsaWNrPXt0aGlzLm9uSW1hZ2VDbGlja30gdGl0bGU9e2dldHRl eHQoJ0dlbmVyYXRlIFNRTCcpfQorICAgICAgICAgICAgc2hvcnRjdXQ9e3RoaXMuc3RhdGUucHJl ZmVyZW5jZXMuZ2VuZXJhdGVfc3FsfS8+CiAgICAgICAgIDwvQnV0dG9uR3JvdXA+CiAgICAgICAg IDxCdXR0b25Hcm91cD4KICAgICAgICAgICA8SWNvbkJ1dHRvbiBpZD0iYWRkLW5vZGUiIGljb249 ImZhIGZhLXBsdXMtc3F1YXJlIiBvbkNsaWNrPXt0aGlzLm9uQWRkTmV3Tm9kZX0gdGl0bGU9e2dl dHRleHQoJ0FkZCB0YWJsZScpfQpAQCAtNjM0LDcgKzc2NCw4IEBAIGV4cG9ydCBkZWZhdWx0IGNs YXNzIEJvZHlXaWRnZXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewogICAgICAgICAgICAgc2hv cnRjdXQ9e3RoaXMuc3RhdGUucHJlZmVyZW5jZXMuYWRkX2VkaXRfbm90ZX0gZGlzYWJsZWQ9eyF0 aGlzLnN0YXRlLnNpbmdsZV9ub2RlX3NlbGVjdGVkIHx8IHRoaXMuc3RhdGUuc2luZ2xlX2xpbmtf c2VsZWN0ZWR9Lz4KICAgICAgICAgICA8SWNvbkJ1dHRvbiBpZD0iYXV0by1hbGlnbiIgaWNvbj0i ZmEgZmEtbWFnaWMiIG9uQ2xpY2s9e3RoaXMub25BdXRvRGlzdHJpYnV0ZX0gdGl0bGU9e2dldHRl eHQoJ0F1dG8gYWxpZ24nKX0KICAgICAgICAgICAgIHNob3J0Y3V0PXt0aGlzLnN0YXRlLnByZWZl cmVuY2VzLmF1dG9fYWxpZ259IC8+Ci0gICAgICAgICAgPERldGFpbHNUb2dnbGVCdXR0b24gaWQ9 Im1vcmUtZGV0YWlscyIgb25DbGljaz17dGhpcy5vbkRldGFpbHNUb2dnbGV9IHNob3dEZXRhaWxz PXt0aGlzLnN0YXRlLnNob3dfZGV0YWlsc30gLz4KKyAgICAgICAgICA8RGV0YWlsc1RvZ2dsZUJ1 dHRvbiBpZD0ibW9yZS1kZXRhaWxzIiBvbkNsaWNrPXt0aGlzLm9uRGV0YWlsc1RvZ2dsZX0gc2hv d0RldGFpbHM9e3RoaXMuc3RhdGUuc2hvd19kZXRhaWxzfQorICAgICAgICAgICAgc2hvcnRjdXQ9 e3RoaXMuc3RhdGUucHJlZmVyZW5jZXMuc2hvd19kZXRhaWxzfSAvPgogICAgICAgICA8L0J1dHRv bkdyb3VwPgogICAgICAgICA8QnV0dG9uR3JvdXA+CiAgICAgICAgICAgPEljb25CdXR0b24gaWQ9 Inpvb20tdG8tZml0IiBpY29uPSJmYSBmYS1jb21wcmVzcyIgb25DbGljaz17dGhpcy5kaWFncmFt Lnpvb21Ub0ZpdH0gdGl0bGU9e2dldHRleHQoJ1pvb20gdG8gZml0Jyl9CkBAIC02NTQsNyArNzg1 LDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm9keVdpZGdldCBleHRlbmRzIFJlYWN0LkNvbXBv bmVudCB7CiAgICAgICAgIHJlZmVyZW5jZT17dGhpcy5ub3RlUmVmRWxlfSBub3RlTm9kZT17dGhp cy5zdGF0ZS5ub3RlX25vZGV9IGFwcGVuZFRvPXt0aGlzLmRpYWdyYW1Db250YWluZXJSZWYuY3Vy cmVudH0gcm93cz17OH0vPgogICAgICAgPGRpdiBjbGFzc05hbWU9ImRpYWdyYW0tY29udGFpbmVy IiByZWY9e3RoaXMuZGlhZ3JhbUNvbnRhaW5lclJlZn0+CiAgICAgICAgIDxMb2FkZXIgbWVzc2Fn ZT17dGhpcy5zdGF0ZS5sb2FkaW5nX21zZ30gYXV0b0VsbGlwc2lzPXt0cnVlfS8+Ci0gICAgICAg IDxDYW52YXNXaWRnZXQgY2xhc3NOYW1lPSJkaWFncmFtLWNhbnZhcyBmbGV4LWdyb3ctMSIgcmVm PXsoZWxlKT0+e3RoaXMuY2FudmFzRWxlID0gZWxlPy5yZWY/LmN1cnJlbnR9fSBlbmdpbmU9e3Ro aXMuZGlhZ3JhbS5nZXRFbmdpbmUoKX0gLz4KKyAgICAgICAgPENhbnZhc1dpZGdldCBjbGFzc05h bWU9ImRpYWdyYW0tY2FudmFzIGZsZXgtZ3Jvdy0xIiByZWY9eyhlbGUpPT57dGhpcy5jYW52YXNF bGUgPSBlbGU/LnJlZj8uY3VycmVudDt9fSBlbmdpbmU9e3RoaXMuZGlhZ3JhbS5nZXRFbmdpbmUo KX0gLz4KICAgICAgIDwvZGl2PgogICAgICAgPC8+CiAgICAgKTsKQEAgLTY3MiwxMCArODAzLDEx IEBAIEJvZHlXaWRnZXQucHJvcFR5cGVzID0gewogICAgIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5n LmlzUmVxdWlyZWQsCiAgICAgYmdjb2xvcjogUHJvcFR5cGVzLnN0cmluZywKICAgICBmZ2NvbG9y OiBQcm9wVHlwZXMuc3RyaW5nLAotICAgIGdlbjogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZAor ICAgIGdlbjogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCwKICAgfSksCiAgIGdldERpYWxvZzog UHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCwKICAgdHJhbnNmb3JtVG9TdXBwb3J0ZWQ6IFByb3BU eXBlcy5mdW5jLmlzUmVxdWlyZWQsCisgIHBnV2luZG93OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVx dWlyZWQsCiAgIHBnQWRtaW46IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCwKLSAgYWxlcnRp Znk6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZAorICBhbGVydGlmeTogUHJvcFR5cGVzLm9i amVjdC5pc1JlcXVpcmVkLAogfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9z dGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9Db25uZWN0aW9uQmFyLmpzeCBiL3dlYi9w Z2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9Db25uZWN0 aW9uQmFyLmpzeAppbmRleCBmMTkxZGM4NWUuLjNiNzFkYmNjMCAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC91aV9jb21wb25lbnRzL0Nvbm5lY3Rp b25CYXIuanN4CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wv dWlfY29tcG9uZW50cy9Db25uZWN0aW9uQmFyLmpzeApAQCAtMTYsNyArMTYsNyBAQCBleHBvcnQg Y29uc3QgU1RBVFVTID0gewogICBESVNDT05ORUNURUQ6IDIsCiAgIENPTk5FQ1RJTkc6IDMsCiAg IEZBSUxFRDogNCwKLX0KK307CiAKIC8qIFRoZSBjb25uZWN0aW9uIGJhciBjb21wb25lbnQgKi8K IGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvbm5lY3Rpb25CYXIoe3N0YXR1c0lkLCBzdGF0dXMs IGJnY29sb3IsIGZnY29sb3IsIHRpdGxlfSkgewpAQCAtMzMsMTkgKzMzLDE5IEBAIGV4cG9ydCBk ZWZhdWx0IGZ1bmN0aW9uIENvbm5lY3Rpb25CYXIoe3N0YXR1c0lkLCBzdGF0dXMsIGJnY29sb3Is IGZnY29sb3IsIHRpdGxlCiAgICAgICAgICAgICArIChzdGF0dXMgPT0gU1RBVFVTLkNPTk5FQ1RF RCA/ICdpY29uLXF1ZXJ5LXRvb2wtY29ubmVjdGVkJyA6ICcnKQogICAgICAgICAgICAgKyAoc3Rh dHVzID09IChTVEFUVVMuRElTQ09OTkVDVEVEIHx8IFNUQVRVUy5GQUlMRUQpID8gJ2ljb24tcXVl cnktdG9vbC1kaXNjb25uZWN0ZWQgJyA6ICcnKQogICAgICAgICAgICAgKyAoc3RhdHVzID09IFNU QVRVUy5DT05ORUNUSU5HID8gJ29idGFpbmluZy1jb25uJyA6ICcnKX0KLSAgICAgICAgICBhcmlh LWhpZGRlbj0idHJ1ZSIgdGl0bGU9IiIgcm9sZT0iaW1nIj4KKyAgICAgICAgYXJpYS1oaWRkZW49 InRydWUiIHRpdGxlPSIiIHJvbGU9ImltZyI+CiAgICAgICAgIDwvc3Bhbj4KICAgICAgIDwvZGl2 PgogICAgICAgPGRpdiBjbGFzc05hbWU9ImNvbm5lY3Rpb24taW5mbyBidG4tZ3JvdXAiIHJvbGU9 Imdyb3VwIiBhcmlhLWxhYmVsPSIiPgogICAgICAgICA8ZGl2IGNsYXNzTmFtZT0iZWRpdG9yLXRp dGxlIgogICAgICAgICAgIHN0eWxlPXt7YmFja2dyb3VuZENvbG9yOiBiZ2NvbG9yLCBjb2xvcjog Zmdjb2xvcn19PgotICAgICAgICAgICAge3N0YXR1cyA9PSBTVEFUVVMuQ09OTkVDVElORyA/ICco JyArIGdldHRleHQoJ09idGFpbmluZyBjb25uZWN0aW9uLi4uJykgKyAnKSAnIDogJyd9Ci0gICAg ICAgICAgICB7c3RhdHVzID09IFNUQVRVUy5GQUlMRUQgPyAnKCcgKyBnZXR0ZXh0KCdDb25uZWN0 aW9uIGZhaWxlZCcpICsgJykgJyA6ICcnfQotICAgICAgICAgICAge3RpdGxlfQorICAgICAgICAg IHtzdGF0dXMgPT0gU1RBVFVTLkNPTk5FQ1RJTkcgPyAnKCcgKyBnZXR0ZXh0KCdPYnRhaW5pbmcg Y29ubmVjdGlvbi4uLicpICsgJykgJyA6ICcnfQorICAgICAgICAgIHtzdGF0dXMgPT0gU1RBVFVT LkZBSUxFRCA/ICcoJyArIGdldHRleHQoJ0Nvbm5lY3Rpb24gZmFpbGVkJykgKyAnKSAnIDogJyd9 CisgICAgICAgICAge3RpdGxlfQogICAgICAgICA8L2Rpdj4KICAgICAgIDwvZGl2PgogICAgIDwv ZGl2PgotICApCisgICk7CiB9CiAKIENvbm5lY3Rpb25CYXIucHJvcFR5cGVzID0gewpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC91aV9jb21wb25l bnRzL0Zsb2F0aW5nTm90ZS5qc3ggYi93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2Vy ZF90b29sL3VpX2NvbXBvbmVudHMvRmxvYXRpbmdOb3RlLmpzeAppbmRleCAxOTA1MDUxMmMuLjA1 MjgyOWY5MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRf dG9vbC91aV9jb21wb25lbnRzL0Zsb2F0aW5nTm90ZS5qc3gKKysrIGIvd2ViL3BnYWRtaW4vdG9v bHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC91aV9jb21wb25lbnRzL0Zsb2F0aW5nTm90ZS5qc3gK QEAgLTUxLDEzICs1MSwxMyBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGbG9hdGluZ05vdGUo e29wZW4sIG9uQ2xvc2UsIHJlZmVyZW5jZSwgcm93cywgbm90ZU5vZGUsCiAgICAgICAgICAgPC9k aXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgPC9kaXY+Ci0gICAgICApfQotICAgICAgdmlzaWJs ZT17b3Blbn0KLSAgICAgIGludGVyYWN0aXZlPXt0cnVlfQotICAgICAgYW5pbWF0aW9uPXtmYWxz ZX0KLSAgICAgIHJlZmVyZW5jZT17cmVmZXJlbmNlfQotICAgICAgcGxhY2VtZW50PSdhdXRvLWVu ZCcKLSAgICAgIHsuLi50aXBweVByb3BzfQorICAgICl9CisgICAgdmlzaWJsZT17b3Blbn0KKyAg ICBpbnRlcmFjdGl2ZT17dHJ1ZX0KKyAgICBhbmltYXRpb249e2ZhbHNlfQorICAgIHJlZmVyZW5j ZT17cmVmZXJlbmNlfQorICAgIHBsYWNlbWVudD0nYXV0by1lbmQnCisgICAgey4uLnRpcHB5UHJv cHN9CiAgICAgLz4KICAgKTsKIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9z dGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9Ub29sQmFyLmpzeCBiL3dlYi9wZ2FkbWlu L3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9Ub29sQmFyLmpzeApp bmRleCAyZjM3NmU0Y2IuLmZlNDI4MGFmMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMv ZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC91aV9jb21wb25lbnRzL1Rvb2xCYXIuanN4CisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9Ub29s QmFyLmpzeApAQCAtMzQsNyArMzQsNyBAQCBCYXNlSWNvbkJ1dHRvbi5wcm9wVHlwZXMgPSB7CiAg IHRleHQ6IFByb3BUeXBlcy5zdHJpbmcsCiAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZywK ICAgcmVmOiBDdXN0b21Qcm9wVHlwZXMucmVmLAotfQorfTsKIAogCiAvKiBUaGUgdG9vbHRpcCBj b250ZW50IHRvIHNob3cgc2hvcnRjdXQgZGV0YWlscyAqLwpAQCAtNDcsMTAgKzQ3LDEwIEBAIGV4 cG9ydCBmdW5jdGlvbiBTaG9ydGN1dCh7c2hvcnRjdXR9KSB7CiAgIHJldHVybiAoCiAgICAgPGRp diBzdHlsZT17e2p1c3RpZnlDb250ZW50OiAnY2VudGVyJywgbWFyZ2luVG9wOiAnMC4xMjVyZW0n fX0gY2xhc3NOYW1lPSJkLWZsZXgiPgogICAgICAge2tleXMubWFwKChrZXksIGkpPT57Ci0gICAg ICAgIHJldHVybiA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPSJzaG9ydGN1dC1rZXkiPntrZXl9PC9k aXY+CisgICAgICAgIHJldHVybiA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPSJzaG9ydGN1dC1rZXki PntrZXl9PC9kaXY+OwogICAgICAgfSl9CiAgICAgPC9kaXY+Ci0gICkKKyAgKTsKIH0KIAogY29u c3Qgc2hvcnRjdXRQcm9wVHlwZSA9IFByb3BUeXBlcy5zaGFwZSh7CkBAIC04NSw3ICs4NSw3IEBA IGV4cG9ydCBjb25zdCBJY29uQnV0dG9uID0gZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4gewog ICAgICAgPC9UaXBweT4KICAgICApOwogICB9IGVsc2UgewotICAgIHJldHVybiA8QmFzZUljb25C dXR0b24gcmVmPXtyZWZ9IGNsYXNzTmFtZT0nYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uJyB7 Li4ub3RoZXJQcm9wc30vPgorICAgIHJldHVybiA8QmFzZUljb25CdXR0b24gcmVmPXtyZWZ9IGNs YXNzTmFtZT0nYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uJyB7Li4ub3RoZXJQcm9wc30vPjsK ICAgfQogfSk7CiAKQEAgLTkzLDIxICs5MywyMSBAQCBJY29uQnV0dG9uLnByb3BUeXBlcyA9IHsK ICAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsCiAgIHNob3J0Y3V0OiBzaG9ydGN1dFByb3BUeXBl LAogICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsCi19Cit9OwogCiAvKiBUb2dnbGUgYnV0 dG9uLCBpY29uIGNoYW5nZXMgYmFzZWQgb24gdmFsdWUgKi8KIGV4cG9ydCBmdW5jdGlvbiBEZXRh aWxzVG9nZ2xlQnV0dG9uKHtzaG93RGV0YWlscywgLi4ucHJvcHN9KSB7CiAgIHJldHVybiAoCiAg ICAgPEljb25CdXR0b24KICAgICAgIGljb249e3Nob3dEZXRhaWxzID8gJ2ZhciBmYS1leWUnIDog J2ZhcyBmYS1sb3ctdmlzaW9uJ30KLSAgICAgIHRpdGxlPXtzaG93RGV0YWlscyA/IGdldHRleHQo J1Nob3cgZmV3ZXIgZGV0YWlscycpIDogZ2V0dGV4dCgiU2hvdyBtb3JlIGRldGFpbHMiKSB9Cisg ICAgICB0aXRsZT17c2hvd0RldGFpbHMgPyBnZXR0ZXh0KCdTaG93IGZld2VyIGRldGFpbHMnKSA6 IGdldHRleHQoJ1Nob3cgbW9yZSBkZXRhaWxzJykgfQogICAgICAgey4uLnByb3BzfSAvPgogICAp OwogfQogCiBEZXRhaWxzVG9nZ2xlQnV0dG9uLnByb3BUeXBlcyA9IHsKICAgc2hvd0RldGFpbHM6 IFByb3BUeXBlcy5ib29sLAotfQorfTsKIAogLyogQnV0dG9uIGdyb3VwIGNvbnRhaW5lciAqLwog ZXhwb3J0IGZ1bmN0aW9uIEJ1dHRvbkdyb3VwKHtjbGFzc05hbWUsIGNoaWxkcmVufSkgewpAQCAt MTE1LDEyICsxMTUsMTIgQEAgZXhwb3J0IGZ1bmN0aW9uIEJ1dHRvbkdyb3VwKHtjbGFzc05hbWUs IGNoaWxkcmVufSkgewogICAgIDxkaXYgY2xhc3NOYW1lPXsnYnRuLWdyb3VwIG1yLTEgJyArIChj bGFzc05hbWUgPyBjbGFzc05hbWUgOiAnJyl9IHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSJzYXZl IGdyb3VwIj4KICAgICAgIHtjaGlsZHJlbn0KICAgICA8L2Rpdj4KLSAgKQorICApOwogfQogCiBC dXR0b25Hcm91cC5wcm9wVHlwZXMgPSB7CiAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZywK LX0KK307CiAKIC8qIFRvb2xiYXIgY29udGFpbmVyICovCiBleHBvcnQgZGVmYXVsdCBmdW5jdGlv biBUb29sQmFyKHtpZCwgY2hpbGRyZW59KSB7CkBAIC0xMjgsOSArMTI4LDkgQEAgZXhwb3J0IGRl ZmF1bHQgZnVuY3Rpb24gVG9vbEJhcih7aWQsIGNoaWxkcmVufSkgewogICAgIDxkaXYgaWQ9e2lk fSBjbGFzc05hbWU9ImVkaXRvci10b29sYmFyIGQtZmxleCIgcm9sZT0idG9vbGJhciIgYXJpYS1s YWJlbD0iIj4KICAgICAgIHtjaGlsZHJlbn0KICAgICA8L2Rpdj4KLSAgKQorICApOwogfQogCiBC dXR0b25Hcm91cC5wcm9wVHlwZXMgPSB7CiAgIGlkOiBQcm9wVHlwZXMuc3RyaW5nLAotfQorfTsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvc2Nzcy9fZXJkLnNjc3Mg Yi93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL3Njc3MvX2VyZC5zY3NzCmluZGV4IDczM2Rk NTNjNi4uNGZmZmNmNGJlIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGlj L3Njc3MvX2VyZC5zY3NzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvc2Nzcy9f ZXJkLnNjc3MKQEAgLTI4LDYgKzI4LDcgQEAKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAg d2lkdGg6IDEwMCU7CiAgICAgaGVpZ2h0OiAxMDAlOworICAgIG1pbi1oZWlnaHQ6IDA7CiAgIH0K IAogICAuZmxvYXRpbmctbm90ZSB7CkBAIC01Niw2ICs1Nyw3IEBACiAgICAgfQogCiAgICAgLm5v dGUtYm9keSB7CisgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgICAmIHRleHRhcmVh IHsKICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgIGJvcmRlcjogbm9uZTsKQEAgLTY5LDEx ICs3MSwyMSBAQAogICAgIH0KICAgfQogCisgIC5odG1sMmNhbnZhcy1yZXNldCB7CisgICAgYmFj a2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50OworICAgIG92ZXJmbG93OiBhdXRvICFpbXBv cnRhbnQ7CisKKyAgICAmID4gc3ZnLCAmID4gZGl2IHsKKyAgICAgIHRyYW5zZm9ybTogbm9uZSAh aW1wb3J0YW50OworICAgIH0KKyAgfQorCiAgIC5kaWFncmFtLWNhbnZhc3sKICAgICB3aWR0aDog MTAwJTsKICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgY29sb3I6ICRjb2xvci1mZzsKICAgICBmb250 LWZhbWlseTogc2Fucy1zZXJpZjsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXJkLWNhbnZhcy1i ZzsKICAgICBiYWNrZ3JvdW5kLWltYWdlOiAkZXJkLWJnLWdyaWQ7CiAgICAgY3Vyc29yOiB1bnNl dDsKIApAQCAtODUsNiArOTcsMjIgQEAKICAgICAgIHdpZHRoOiAxNzVweDsKICAgICAgIGZvbnQt c2l6ZTogMC44ZW07CiAKKyAgICAgIC50YWJsZS1pY29uLXNjaGVtYSB7CisgICAgICAgIGJhY2tn cm91bmQtaW1hZ2U6IHVybCgnfnRvcC9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9zdGF0aWMvaW1nL3NjaGVtYS5zdmcnKSAhaW1wb3J0YW50OworICAgICAg ICAvLyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgICAgICAvLyAvLyBiYWNrZ3Jv dW5kLXNpemU6IDIwcHggIWltcG9ydGFudDsKKyAgICAgICAgLy8gYWxpZ24tY29udGVudDogY2Vu dGVyOworICAgICAgICAvLyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworICAgICAgICAvLyBoZWln aHQ6IDEwMCU7CisgICAgICAgIC8vIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9z dmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpZFhS bUxUZ2lQejRLUENFdExTQkhaVzVsY21GMGIzSTZJRUZrYjJKbElFbHNiSFZ6ZEhKaGRHOXlJREl3 TGpBdU1Dd2dVMVpISUVWNGNHOXlkQ0JRYkhWbkxVbHVJQzRnVTFaSElGWmxjbk5wYjI0NklEWXVN REFnUW5WcGJHUWdNQ2tnSUMwdFBnbzhjM1puSUhabGNuTnBiMjQ5SWpFdU1TSWdhV1E5SWt4aGVX VnlYeklpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcx c2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lJSGc5 SWpCd2VDSWdlVDBpTUhCNElnb0pJSFpwWlhkQ2IzZzlJakFnTUNBMk5DQTJOQ0lnYzNSNWJHVTlJ bVZ1WVdKc1pTMWlZV05yWjNKdmRXNWtPbTVsZHlBd0lEQWdOalFnTmpRN0lpQjRiV3c2YzNCaFky VTlJbkJ5WlhObGNuWmxJajRLUEhOMGVXeGxJSFI1Y0dVOUluUmxlSFF2WTNOeklqNEtDUzV6ZERC N1ptbHNiRHB1YjI1bE8zTjBjbTlyWlRvak9UazVPVGs1TzNOMGNtOXJaUzEzYVdSMGFEb3lPM04w Y205clpTMXNhVzVsWTJGd09uSnZkVzVrTzNOMGNtOXJaUzF0YVhSbGNteHBiV2wwT2pFd08zMEtQ Qzl6ZEhsc1pUNEtQSEJoZEdnZ1kyeGhjM005SW5OME1DSWdaRDBpVFRJeExqa3NNakl1TW1Nd0xE TXVOUzB5TGprc05pNDBMVFl1TkN3MkxqUnpMVFl1TkMweUxqa3ROaTQwTFRZdU5ITXlMamt0Tmk0 MExEWXVOQzAyTGpSVE1qRXVPU3d4T0M0M0xESXhMamtzTWpJdU1ub2dUVFF1TWl3MU1Xd3lNaTR4 TFRFNUNna2dUVFEyTGpVc05URXVNVXd5Tmk0MExETXlJRTB6Tnk0MkxEUXlMalpzTVRFdU5pMHhN Q0JOTmpJdU5DdzBOUzR4VERRNUxqSXNNekl1TnlCTk5qTXNNVWd4ZGpZeWFEWXlWakY2SUUweExE VXhMalJvTmpJaUx6NEtQQzl6ZG1jK0NnPT0nKTsKKworICAgICAgICB3aWR0aDogMjBweDsKKyAg ICAgICAgaGVpZ2h0OiAyMHB4OworICAgICAgICAvLyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1 cmwoJ350b3AvYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv c3RhdGljL2ltZy9zY2hlbWEuc3ZnJykgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7CisgICAgICAg IC8vIGhlaWdodDogMTAwJTsKKyAgICAgICAgLy8gd2lkdGg6IDIwcHg7CisgICAgICB9CisKICAg ICAgICYuc2VsZWN0ZWQgewogICAgICAgICBib3JkZXItY29sb3I6ICRpbnB1dC1mb2N1cy1ib3Jk ZXItY29sb3I7CiAgICAgICAgIGJveC1zaGFkb3c6ICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRv dzsKQEAgLTEwNSwxNiArMTMzLDI0IEBACiAgICAgICAgIH0KICAgICAgIH0KIAotICAgICAgLnRh YmxlLXNjaGVtYSB7CisgICAgICAudGFibGUtc2NoZW1hLWRhdGEgewogICAgICAgICBib3JkZXIt Ym90dG9tOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRlcmQtbm9kZS1ib3JkZXItY29sb3I7CiAgICAg ICAgIHBhZGRpbmc6ICRlcmQtcm93LXBhZGRpbmc7Ci0gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xk OworCisgICAgICAgICYgLnRhYmxlLXNjaGVtYSB7CisgICAgICAgICAgZm9udC13ZWlnaHQ6IGJv bGQ7CisgICAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOworICAgICAgICB9CiAgICAgICB9 CiAKLSAgICAgIC50YWJsZS1uYW1lIHsKKyAgICAgIC50YWJsZS1uYW1lLWRhdGEgewogICAgICAg ICBib3JkZXItYm90dG9tOiAkYm9yZGVyLXdpZHRoKjIgc29saWQgJGVyZC1ub2RlLWJvcmRlci1j b2xvcjsKICAgICAgICAgcGFkZGluZzogJGVyZC1yb3ctcGFkZGluZzsKLSAgICAgICAgZm9udC13 ZWlnaHQ6IGJvbGQ7CisKKyAgICAgICAgJiAudGFibGUtbmFtZSB7CisgICAgICAgICAgZm9udC13 ZWlnaHQ6IGJvbGQ7CisgICAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOworICAgICAgICB9 CiAgICAgICB9CiAKICAgICAgIC50YWJsZS1jb2xzIHsKQEAgLTEyMywxMCArMTU5LDcgQEAKICAg ICAgICAgICAuY29sLXJvdy1kYXRhIHsKICAgICAgICAgICAgIHBhZGRpbmc6ICRlcmQtcm93LXBh ZGRpbmc7CiAgICAgICAgICAgICB3aWR0aDogMTAwJTsKLQotICAgICAgICAgICAgLmNvbC1uYW1l IHsKLSAgICAgICAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOwotICAgICAgICAgICAgfQor ICAgICAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOwogICAgICAgICAgIH0KICAgICAgICAg ICAuY29sLXJvdy1wb3J0IHsKICAgICAgICAgICAgIHBhZGRpbmc6IDA7CmRpZmYgLS1naXQgYS93 ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2VyZC90YWJsZV9ub2RlX3NwZWMuanMgYi93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L2VyZC90YWJsZV9ub2RlX3NwZWMuanMKaW5kZXggMWM4YmY3NGVl Li40ODE4ZDJhN2EgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZXJkL3Rh YmxlX25vZGVfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2VyZC90YWJs ZV9ub2RlX3NwZWMuanMKQEAgLTczLDcgKzczLDEwIEBAIGRlc2NyaWJlKCdFUkQgVGFibGVOb2Rl TW9kZWwnLCAoKT0+ewogICB9KTsKIAogICBkZXNjcmliZSgnc2V0RGF0YScsICgpPT57Ci0gICAg bGV0IGV4aXN0UG9ydCA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdwb3J0JywgWydyZW1vdmVBbGxM aW5rcyddKTsKKyAgICBsZXQgZXhpc3RQb3J0ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ3BvcnQn LCB7CisgICAgICAncmVtb3ZlQWxsTGlua3MnOiBqYXNtaW5lLmNyZWF0ZVNweSgncmVtb3ZlQWxs TGlua3MnKSwKKyAgICAgICdnZXRTdWJ0eXBlJzogJ25vdHNldCcsCisgICAgfSk7CiAKICAgICBi ZWZvcmVFYWNoKCgpPT57CiAgICAgICBtb2RlbE9iai5fZGF0YS5jb2x1bW5zID0gWwpAQCAtOTMs NiArOTYsNyBAQCBkZXNjcmliZSgnRVJEIFRhYmxlTm9kZU1vZGVsJywgKCk9PnsKICAgICB9KTsK IAogICAgIGl0KCdhZGQgY29sdW1ucycsICgpPT57CisgICAgICBzcHlPbihleGlzdFBvcnQsICdn ZXRTdWJ0eXBlJykuYW5kLnJldHVyblZhbHVlKCdtYW55Jyk7CiAgICAgICBleGlzdFBvcnQucmVt b3ZlQWxsTGlua3MuY2FsbHMucmVzZXQoKTsKICAgICAgIG1vZGVsT2JqLnNldERhdGEoewogICAg ICAgICBuYW1lOiAnbm9uYW1lJywKQEAgLTExOCwyOSArMTIyLDMxIEBAIGRlc2NyaWJlKCdFUkQg VGFibGVOb2RlTW9kZWwnLCAoKT0+ewogICAgIH0pOwogCiAgICAgaXQoJ3VwZGF0ZSBjb2x1bW5z JywgKCk9PnsKKyAgICAgIHNweU9uKGV4aXN0UG9ydCwgJ2dldFN1YnR5cGUnKS5hbmQucmV0dXJu VmFsdWUoJ21hbnknKTsKICAgICAgIGV4aXN0UG9ydC5yZW1vdmVBbGxMaW5rcy5jYWxscy5yZXNl dCgpOwogICAgICAgbW9kZWxPYmouc2V0RGF0YSh7CiAgICAgICAgIG5hbWU6ICdub25hbWUnLAog ICAgICAgICBzY2hlbWE6ICdlcmQnLAogICAgICAgICBjb2x1bW5zOiBbCi0gICAgICAgICAge25h bWU6ICdjb2wxJywgbm90X251bGw6ZmFsc2UsIGF0dG51bTogMH0sCi0gICAgICAgICAge25hbWU6 ICdjb2wydXBkYXRlZCcsIG5vdF9udWxsOmZhbHNlLCBhdHRudW06IDF9LAotICAgICAgICAgIHtu YW1lOiAnY29sMycsIG5vdF9udWxsOnRydWUsIGF0dG51bTogMn0sCisgICAgICAgICAge25hbWU6 ICdjb2wxJywgbm90X251bGw6ZmFsc2UsIGF0dG51bTogMCwgaXNfcHJpbWFyeV9rZXk6IGZhbHNl fSwKKyAgICAgICAgICB7bmFtZTogJ2NvbDJ1cGRhdGVkJywgbm90X251bGw6ZmFsc2UsIGF0dG51 bTogMSwgaXNfcHJpbWFyeV9rZXk6IGZhbHNlfSwKKyAgICAgICAgICB7bmFtZTogJ2NvbDMnLCBu b3RfbnVsbDp0cnVlLCBhdHRudW06IDIsIGlzX3ByaW1hcnlfa2V5OiBmYWxzZX0sCiAgICAgICAg IF0sCiAgICAgICB9KTsKICAgICAgIGV4cGVjdChtb2RlbE9iai5nZXREYXRhKCkpLnRvRXF1YWwo ewogICAgICAgICBuYW1lOiAnbm9uYW1lJywKICAgICAgICAgc2NoZW1hOiAnZXJkJywKICAgICAg ICAgY29sdW1uczogWwotICAgICAgICAgIHtuYW1lOiAnY29sMScsIG5vdF9udWxsOmZhbHNlLCBh dHRudW06IDB9LAotICAgICAgICAgIHtuYW1lOiAnY29sMnVwZGF0ZWQnLCBub3RfbnVsbDpmYWxz ZSwgYXR0bnVtOiAxfSwKLSAgICAgICAgICB7bmFtZTogJ2NvbDMnLCBub3RfbnVsbDp0cnVlLCBh dHRudW06IDJ9LAorICAgICAgICAgIHtuYW1lOiAnY29sMScsIG5vdF9udWxsOmZhbHNlLCBhdHRu dW06IDAsIGlzX3ByaW1hcnlfa2V5OiBmYWxzZX0sCisgICAgICAgICAge25hbWU6ICdjb2wydXBk YXRlZCcsIG5vdF9udWxsOmZhbHNlLCBhdHRudW06IDEsIGlzX3ByaW1hcnlfa2V5OiBmYWxzZX0s CisgICAgICAgICAge25hbWU6ICdjb2wzJywgbm90X251bGw6dHJ1ZSwgYXR0bnVtOiAyLCBpc19w cmltYXJ5X2tleTogZmFsc2V9LAogICAgICAgICBdLAogICAgICAgfSk7CiAgICAgICBleHBlY3Qo ZXhpc3RQb3J0LnJlbW92ZUFsbExpbmtzKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOwogICAgIH0p OwogCiAgICAgaXQoJ3JlbW92ZSBjb2x1bW5zJywgKCk9PnsKKyAgICAgIHNweU9uKGV4aXN0UG9y dCwgJ2dldFN1YnR5cGUnKS5hbmQucmV0dXJuVmFsdWUoJ29uZScpOwogICAgICAgZXhpc3RQb3J0 LnJlbW92ZUFsbExpbmtzLmNhbGxzLnJlc2V0KCk7CiAgICAgICBtb2RlbE9iai5zZXREYXRhKHsK ICAgICAgICAgbmFtZTogJ25vbmFtZScsCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZh c2NyaXB0L2VyZC91aV9jb21wb25lbnRzL2JvZHlfd2lkZ2V0X3NwZWMuanMgYi93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L2VyZC91aV9jb21wb25lbnRzL2JvZHlfd2lkZ2V0X3NwZWMuanMKaW5k ZXggMTY5Mjg5ODBmLi4zMTE0YmE2MjcgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvZXJkL3VpX2NvbXBvbmVudHMvYm9keV93aWRnZXRfc3BlYy5qcworKysgYi93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L2VyZC91aV9jb21wb25lbnRzL2JvZHlfd2lkZ2V0X3NwZWMuanMK QEAgLTQxLDYgKzQxLDEwIEBAIGxldCBwZ0FkbWluID0gewogICB9LAogfTsKIAorbGV0IHBnV2lu ZG93ID0geworICBwZ0FkbWluOiBwZ0FkbWluLAorfTsKKwogbGV0IGFsZXJ0aWZ5ID0gamFzbWlu ZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5JywgewogICAnc3VjY2Vzcyc6IG51bGwsCiAgICdlcnJv cic6IG51bGwsCkBAIC0xMjQsNyArMTI4LDcgQEAgZGVzY3JpYmUoJ0VSRCBCb2R5V2lkZ2V0Jywg KCk9PnsKIAogICBiZWZvcmVFYWNoKCgpPT57CiAgICAgamFzbWluZUVuenltZSgpOwotICAgIGJv ZHkgPSBtb3VudCg8Qm9keVdpZGdldCBwYXJhbXM9e3BhcmFtc30gcGdBZG1pbj17cGdBZG1pbn0g Z2V0RGlhbG9nPXtnZXREaWFsb2d9IHRyYW5zZm9ybVRvU3VwcG9ydGVkPXsoKT0+e319IGFsZXJ0 aWZ5PXthbGVydGlmeX0vPik7CisgICAgYm9keSA9IG1vdW50KDxCb2R5V2lkZ2V0IHBhcmFtcz17 cGFyYW1zfSBwZ0FkbWluPXtwZ0FkbWlufSBwZ1dpbmRvdz17cGdXaW5kb3d9IGdldERpYWxvZz17 Z2V0RGlhbG9nfSB0cmFuc2Zvcm1Ub1N1cHBvcnRlZD17KCk9Pnt9fSBhbGVydGlmeT17YWxlcnRp Znl9Lz4pOwogICAgIGJvZHlJbnN0YW5jZSA9IGJvZHkuaW5zdGFuY2UoKTsKICAgfSk7CiAKQEAg LTI0OCw3ICsyNTIsNyBAQCBkZXNjcmliZSgnRVJEIEJvZHlXaWRnZXQnLCAoKT0+ewogICAgIGJv ZHlJbnN0YW5jZS5hZGRFZGl0Tm9kZSgpOwogICAgIGV4cGVjdCh0YWJsZURpYWxvZy5zaG93KS50 b0hhdmVCZWVuQ2FsbGVkKCk7CiAKLSAgICBsZXQgc2F2ZUNhbGxiYWNrID0gdGFibGVEaWFsb2cu c2hvdy5jYWxscy5tb3N0UmVjZW50KCkuYXJnc1s1XTsKKyAgICBsZXQgc2F2ZUNhbGxiYWNrID0g dGFibGVEaWFsb2cuc2hvdy5jYWxscy5tb3N0UmVjZW50KCkuYXJnc1s2XTsKICAgICBsZXQgbmV3 RGF0YSA9IHtrZXk6ICd2YWx1ZSd9OwogICAgIHNhdmVDYWxsYmFjayhuZXdEYXRhKTsKICAgICBl eHBlY3QoYm9keUluc3RhbmNlLmRpYWdyYW0uYWRkTm9kZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgo bmV3RGF0YSk7CkBAIC0yNjMsNyArMjY3LDcgQEAgZGVzY3JpYmUoJ0VSRCBCb2R5V2lkZ2V0Jywg KCk9PnsKICAgICBib2R5SW5zdGFuY2UuYWRkRWRpdE5vZGUobm9kZSk7CiAgICAgZXhwZWN0KHRh YmxlRGlhbG9nLnNob3cpLnRvSGF2ZUJlZW5DYWxsZWQoKTsKIAotICAgIHNhdmVDYWxsYmFjayA9 IHRhYmxlRGlhbG9nLnNob3cuY2FsbHMubW9zdFJlY2VudCgpLmFyZ3NbNV07CisgICAgc2F2ZUNh bGxiYWNrID0gdGFibGVEaWFsb2cuc2hvdy5jYWxscy5tb3N0UmVjZW50KCkuYXJnc1s2XTsKICAg ICBuZXdEYXRhID0ge2tleTogJ3ZhbHVlJ307CiAgICAgc2F2ZUNhbGxiYWNrKG5ld0RhdGEpOwog ICAgIGV4cGVjdChub2RlLnNldERhdGEpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKG5ld0RhdGEpOwpk aWZmIC0tZ2l0IGEvd2ViL3lhcm4ubG9jayBiL3dlYi95YXJuLmxvY2sKaW5kZXggNTUxMjEzYTI3 Li41MTA2ZTg0ZDEgMTAwNjQ0Ci0tLSBhL3dlYi95YXJuLmxvY2sKKysrIGIvd2ViL3lhcm4ubG9j awpAQCAtMTI4MSw2ICsxMjgxLDE0IEBAIGFjb3JuQF43LjAuMCwgYWNvcm5AXjcuMS4wLCBhY29y bkBeNy4xLjE6CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fjb3Ju Ly0vYWNvcm4tNy40LjEudGd6I2ZlYWVkMjU1OTczZDJlNzc1NTViODNkYmMwODg1MWE2YzYzNTIw ZmEiCiAgIGludGVncml0eSBzaGE1MTItblF5cDBvMS9tTmRiVE8xUE82a0hrd1NybWdaME1UL2pD Q3BOaXdiVWpHb1JONGRsQmhxSnRvUXVDbkVPS3pnVFZ3ZzBaV2lDb1F5NlN4TWViUVZoOEE9PQog CithZGp1c3Qtc291cmNlbWFwLWxvYWRlckAzLjAuMDoKKyAgdmVyc2lvbiAiMy4wLjAiCisgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FkanVzdC1zb3VyY2VtYXAtbG9h ZGVyLy0vYWRqdXN0LXNvdXJjZW1hcC1sb2FkZXItMy4wLjAudGd6IzVhZTEyZmI1YjdiMWM1ODVl ODBiYmI1YTYzZWMxNjNhMWE0NWU2MWUiCisgIGludGVncml0eSBzaGE1MTItWUJyR3lUMi91VlEv YzZScit0NlpKWG5pWTAzWXRIR01KUVlhbDM2OGJ1clJHWUtxaHg5cUdUV3FjQlU1czFDd1lZOUUv cmk2M1JZeUcxSWFjTVp0cXc9PQorICBkZXBlbmRlbmNpZXM6CisgICAgbG9hZGVyLXV0aWxzICJe Mi4wLjAiCisgICAgcmVnZXgtcGFyc2VyICJeMi4yLjExIgorCiBhZnRlckAwLjguMjoKICAgdmVy c2lvbiAiMC44LjIiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fm dGVyLy0vYWZ0ZXItMC44LjIudGd6I2ZlZGIzOTRmOWYwZTAyYWE5NzY4ZTcwMmJkYTIzYjUwNWZh ZTdlMWYiCkBAIC0xNDMyLDYgKzE0NDAsMTEgQEAgYXJncGFyc2VAXjEuMC42LCBhcmdwYXJzZUBe MS4wLjc6CiAgIGRlcGVuZGVuY2llczoKICAgICBzcHJpbnRmLWpzICJ+MS4wLjIiCiAKK2FyaXR5 LW5AXjEuMC40OgorICB2ZXJzaW9uICIxLjAuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vYXJpdHktbi8tL2FyaXR5LW4tMS4wLjQudGd6I2Q5ZTc2YjExNzMzZTA4 NTY5YzA4NDdhZTdiMzliMjg2MGIzMGI3NDUiCisgIGludGVncml0eSBzaGExLTJlZHJFWE0rQ0Zh Y0NFZXVlem15aGdzd3QwVT0KKwogYXJyLWRpZmZAXjQuMC4wOgogICB2ZXJzaW9uICI0LjAuMCIK ICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJyLWRpZmYvLS9hcnIt ZGlmZi00LjAuMC50Z3ojZDY0NjEwNzRmZWJmZWM3MWU3ZTE1MjM1NzYxYTMyOWE1ZGM3YzUyMCIK QEAgLTE4MTMsNiArMTgyNiwxMSBAQCBiYXNlNjQtYXJyYXlidWZmZXJAMC4xLjU6CiAgIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jhc2U2NC1hcnJheWJ1ZmZlci8tL2Jh c2U2NC1hcnJheWJ1ZmZlci0wLjEuNS50Z3ojNzM5MjY3NzE5MjNiNWExOTc0N2FkNjY2YWE1Y2Q0 YmY5YzZlOWNlOCIKICAgaW50ZWdyaXR5IHNoYTEtYzVKbmNaSTdXaGwwZXRabXFselV2NXh1bk9n PQogCitiYXNlNjQtYXJyYXlidWZmZXJAXjAuMi4wOgorICB2ZXJzaW9uICIwLjIuMCIKKyAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFzZTY0LWFycmF5YnVmZmVyLy0v YmFzZTY0LWFycmF5YnVmZmVyLTAuMi4wLnRneiM0Yjk0NGZhYzAxOTFhYTU5MDdhZmUyZDhjOTk5 Y2NjNTdjZTgwZjQ1IgorICBpbnRlZ3JpdHkgc2hhNTEyLTdlbXlDc3UxL3hpQlhnUVpyc2N3LzhL UFJUNDRJNFlxOVBlNkVHczNhUFJUc1d1Z2dNTDEvMURUdVpVdUlhSlBJbTFGVERVVlhsNHgveVc4 czBrUURRPT0KKwogYmFzZTY0LWpzQF4xLjAuMiwgYmFzZTY0LWpzQF4xLjMuMToKICAgdmVyc2lv biAiMS41LjEiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jhc2U2 NC1qcy8tL2Jhc2U2NC1qcy0xLjUuMS50Z3ojMWIxYjQ0MDE2MGE1YmY3YWQ0MGI2NTBmMDk1OTYz NDgxOTAzOTMwYSIKQEAgLTI0MzcsMTYgKzI0NTUsMTYgQEAgY2FtZWxjYXNlLWtleXNAXjIuMC4w OgogICAgIGNhbWVsY2FzZSAiXjIuMC4wIgogICAgIG1hcC1vYmogIl4xLjAuMCIKIAorY2FtZWxj YXNlQDUuMy4xLCBjYW1lbGNhc2VAXjUuMC4wOgorICB2ZXJzaW9uICI1LjMuMSIKKyAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2FtZWxjYXNlLy0vY2FtZWxjYXNlLTUu My4xLnRneiNlM2M5YjMxNTY5ZTEwNjgxMWRmMjQyZjcxNTcyNWExZjRjNDk0MzIwIgorICBpbnRl Z3JpdHkgc2hhNTEyLUwyOFNUQjE3MG53V1M2M1VqdGxFT0UzZGxkUUFwYUpYWmtPSTF1TUZmemYz clJ1UGVnSGFIZXN5ZWUrWXhRK1c2U3ZSRFFWNlVyZE9kUmlSMTUzd0pnPT0KKwogY2FtZWxjYXNl QF4yLjAuMDoKICAgdmVyc2lvbiAiMi4xLjEiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL2NhbWVsY2FzZS8tL2NhbWVsY2FzZS0yLjEuMS50Z3ojN2MxZDE2ZDY3OWEx YmJlNTljYTAyY2FjZWNmYjAxMWUyMDFmNWExZiIKICAgaW50ZWdyaXR5IHNoYTEtZkIwVzFubWh1 K1djb0N5czdQc0JIaUFmV2g4PQogCi1jYW1lbGNhc2VAXjUuMC4wOgotICB2ZXJzaW9uICI1LjMu MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2FtZWxjYXNlLy0v Y2FtZWxjYXNlLTUuMy4xLnRneiNlM2M5YjMxNTY5ZTEwNjgxMWRmMjQyZjcxNTcyNWExZjRjNDk0 MzIwIgotICBpbnRlZ3JpdHkgc2hhNTEyLUwyOFNUQjE3MG53V1M2M1VqdGxFT0UzZGxkUUFwYUpY WmtPSTF1TUZmemYzclJ1UGVnSGFIZXN5ZWUrWXhRK1c2U3ZSRFFWNlVyZE9kUmlSMTUzd0pnPT0K LQogY2FuaXVzZS1hcGlAXjMuMC4wOgogICB2ZXJzaW9uICIzLjAuMCIKICAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2FuaXVzZS1hcGkvLS9jYW5pdXNlLWFwaS0zLjAu MC50Z3ojNWU0ZDkwZTIyNzQ5NjFkNDYyOTE5OTdkZjU5OWUzZWQwMDhlZTRjMCIKQEAgLTI3OTcs NiArMjgxNSwxMyBAQCBjb21wb25lbnQtaW5oZXJpdEAwLjAuMzoKICAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29tcG9uZW50LWluaGVyaXQvLS9jb21wb25lbnQtaW5o ZXJpdC0wLjAuMy50Z3ojNjQ1ZmM0YWRmNThiNzJiNjQ5ZDVjYWU2NTEzNTYxOWRiMjZmZjE0MyIK ICAgaW50ZWdyaXR5IHNoYTEtWkYvRXJmV0xjclpKMWNybVVUVmhuYkp2OFVNPQogCitjb21wb3Nl LWZ1bmN0aW9uQDMuMC4zOgorICB2ZXJzaW9uICIzLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vY29tcG9zZS1mdW5jdGlvbi8tL2NvbXBvc2UtZnVuY3Rpb24t My4wLjMudGd6IzllZDY3NWYxM2NjNTQ1MDFkMzA5NTBhNDg2ZmY2YTdiYTNhYjE4NWYiCisgIGlu dGVncml0eSBzaGExLW50WjE4VHpGUlFIVENWQ2todjlxZTZPckdGOD0KKyAgZGVwZW5kZW5jaWVz OgorICAgIGFyaXR5LW4gIl4xLjAuNCIKKwogY29uY2F0LW1hcEAwLjAuMToKICAgdmVyc2lvbiAi MC4wLjEiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbmNhdC1t YXAvLS9jb25jYXQtbWFwLTAuMC4xLnRneiNkOGE5NmJkNzdmZDY4ZGY3NzkzYTczMDM2YTNiYTBk NTQwNWQ0NzdiIgpAQCAtMjg1NywxMyArMjg4MiwxOCBAQCBjb250ZW50LXR5cGVAfjEuMC40Ogog ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb250ZW50LXR5cGUvLS9j b250ZW50LXR5cGUtMS4wLjQudGd6I2UxMzhjYzc1ZTA0MGM3MjdiMTk2NmZlNWU1ZjhjOWFlZTI1 NmZlM2IiCiAgIGludGVncml0eSBzaGE1MTItaElQM0VFUHM4dEI5QVQxTCtOVXF0d09BcHM0bWsy Wm9iODlNV1hNSGpIV2c5bWlsRi9qNG9zbm5RTFhCQ0JGQmsvdHZJRy90VWM5bU9VSmlQQmhQWEE9 PQogCi1jb252ZXJ0LXNvdXJjZS1tYXBAXjEuMS4zLCBjb252ZXJ0LXNvdXJjZS1tYXBAXjEuNS4w LCBjb252ZXJ0LXNvdXJjZS1tYXBAXjEuNy4wOgorY29udmVydC1zb3VyY2UtbWFwQDEuNy4wLCBj b252ZXJ0LXNvdXJjZS1tYXBAXjEuMS4zLCBjb252ZXJ0LXNvdXJjZS1tYXBAXjEuNS4wLCBjb252 ZXJ0LXNvdXJjZS1tYXBAXjEuNy4wOgogICB2ZXJzaW9uICIxLjcuMCIKICAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29udmVydC1zb3VyY2UtbWFwLy0vY29udmVydC1z b3VyY2UtbWFwLTEuNy4wLnRneiMxN2EyY2I4ODJkN2Y3N2QzNDkwNTg1ZTJjZTZjNTI0NDI0YTNh NDQyIgogICBpbnRlZ3JpdHkgc2hhNTEyLTRGSmtYektYRURCMXNuQ0ZabExQNGdwQzNKSUxpY0Nw R2J6RzlmOUc3dEdxR0N6RVRRMmhXUHJjaW5BOW9VNHd0ZjJiaVVhRUg1MDY1VW5NZVIzM29BPT0K ICAgZGVwZW5kZW5jaWVzOgogICAgIHNhZmUtYnVmZmVyICJ+NS4xLjEiCiAKK2NvbnZlcnQtc291 cmNlLW1hcEBeMC4zLjM6CisgIHZlcnNpb24gIjAuMy41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9jb252ZXJ0LXNvdXJjZS1tYXAvLS9jb252ZXJ0LXNvdXJjZS1t YXAtMC4zLjUudGd6I2YxZDgwMjk1MGFmN2RkMjYzMWExZmViZTA1OTY1NTBjODZhYjMxOTAiCisg IGludGVncml0eSBzaGExLThkZ0NsUXIzM1NZeG9mNitCWlpWRElhck1aQT0KKwogY29udmVydC1z b3VyY2UtbWFwQH4xLjEuMDoKICAgdmVyc2lvbiAiMS4xLjMiCiAgIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbnZlcnQtc291cmNlLW1hcC8tL2NvbnZlcnQtc291cmNl LW1hcC0xLjEuMy50Z3ojNDgyOWM4NzdlOWZlNDliMzE2MWYzYmYzNjczODg4ZTIwNDY5OTg2MCIK QEAgLTMwNTEsNiArMzA4MSwxMyBAQCBjc3MtZGVjbGFyYXRpb24tc29ydGVyQF40LjAuMToKICAg ICBwb3N0Y3NzICJeNy4wLjEiCiAgICAgdGltc29ydCAiXjAuMy4wIgogCitjc3MtbGluZS1icmVh a0AxLjEuMToKKyAgdmVyc2lvbiAiMS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL2Nzcy1saW5lLWJyZWFrLy0vY3NzLWxpbmUtYnJlYWstMS4xLjEudGd6I2Q1 ZTliZGQyOTc4NDAwOTllYjA1MDNjNzMxMGZkMzQ5MjdhMDI2ZWYiCisgIGludGVncml0eSBzaGE1 MTItMWZlTlZhTTRGeXpkajRtS1BJUU5MMm43ME1tdVl6QVhaMWF5dGxST0ZYMUpzT28wNzBPc3Vn d0dqajdubDZqbkRKV0hETTh6Ulpzd2ttZVlWV1pKUUE9PQorICBkZXBlbmRlbmNpZXM6CisgICAg YmFzZTY0LWFycmF5YnVmZmVyICJeMC4yLjAiCisKIGNzcy1sb2FkZXJAMi4xLjA6CiAgIHZlcnNp b24gIjIuMS4wIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3Mt bG9hZGVyLy0vY3NzLWxvYWRlci0yLjEuMC50Z3ojNDI5NTJhYzIyYmNhNWQwNzY5Nzg2MzhlOTgx M2FiY2U0OWI4ZjBjYyIKQEAgLTMxMTksNiArMzE1NiwxNiBAQCBjc3Mtd2hhdEBeNC4wLjA6CiAg IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzcy13aGF0Ly0vY3NzLXdo YXQtNC4wLjAudGd6IzM1ZTczNzYxY2FiMmVlYjNkMzY2MTEyNmIyM2Q3YWEwZTg0MzIyMzMiCiAg IGludGVncml0eSBzaGE1MTItdGVpanpHN2t3WWZOVnNVaDJIL1lONjJ4VzNLSzlZaFhFZ1NsYnhN bGN5alBOdmRLSnFGeDVscndsSmdvRlAxWkhsQjg5aUdEbG8vSnlzaEtlUmh2NUE9PQogCitjc3NA XjIuMC4wOgorICB2ZXJzaW9uICIyLjIuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vY3NzLy0vY3NzLTIuMi40LnRneiNjNjQ2NzU1YzczOTcxZjJiYmE2YTYwMWUy Y2YyZmQ3MWIxMjk4OTI5IgorICBpbnRlZ3JpdHkgc2hhNTEyLW9VbmptV3B5MG5pSTN4L21QTDhk VkVJMWw3TW5HMytISHlSUEhmK1lGU2JLK3N2T2hYcG1TT2NEVVJVaDJhT0NnbDJncnpyT1B0MW5I THVDVkZVTEx3PT0KKyAgZGVwZW5kZW5jaWVzOgorICAgIGluaGVyaXRzICJeMi4wLjMiCisgICAg c291cmNlLW1hcCAiXjAuNi4xIgorICAgIHNvdXJjZS1tYXAtcmVzb2x2ZSAiXjAuNS4yIgorICAg IHVyaXggIl4wLjEuMCIKKwogY3NzZXNjQF4zLjAuMDoKICAgdmVyc2lvbiAiMy4wLjAiCiAgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzc2VzYy8tL2Nzc2VzYy0zLjAu MC50Z3ojMzc3NDE5MTk5MDNiODY4NTY1ZTFjMDllYTc0NzQ0NWNkMTg5ODNlZSIKQEAgLTMyMzUs NiArMzI4MiwxNCBAQCBjeWNsaXN0QF4xLjAuMToKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vY3ljbGlzdC8tL2N5Y2xpc3QtMS4wLjEudGd6IzU5NmU5Njk4ZmQwYzgw ZTEyMDM4YzJiODJkNmViMWIzNWI2MjI0ZDkiCiAgIGludGVncml0eSBzaGExLVdXNldtUDBNZ09F Z09NSzRMVzZ4czF0aUpOaz0KIAorZEAxLCBkQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEiCisg IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2QvLS9kLTEuMC4xLnRneiM4 Njk4MDk1MzcyZDU4ZGJlZTM0NmZmZDBjNzA5M2Y5OWY4ZjllYjVhIgorICBpbnRlZ3JpdHkgc2hh NTEyLW02MlNoRU9iUTM5Q2ZyYWxpbEVRUmpINm9BTXROQ1YxeEp5RXg1THBSWVVWTitFdmlwaERn VWMvRjNoblliQURta2lOczY3WSszeWxtbEc3TG51K0ZBPT0KKyAgZGVwZW5kZW5jaWVzOgorICAg IGVzNS1leHQgIl4wLjEwLjUwIgorICAgIHR5cGUgIl4xLjAuMSIKKwogZGFncmVAXjAuOC40Ogog ICB2ZXJzaW9uICIwLjguNSIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vZGFncmUvLS9kYWdyZS0wLjguNS50Z3ojYmEzMGIwMDU1ZGFjMTJiNmMxZmNjMjQ3ODE3NDQy Nzc3ZDA2YWZlZSIKQEAgLTM2NjQsNiArMzcxOSwxMSBAQCBlbW9qaS1yZWdleEBeNy4wLjE6CiAg IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Vtb2ppLXJlZ2V4Ly0vZW1v amktcmVnZXgtNy4wLjMudGd6IzkzM2EwNDA1Mjg2MGM4NWU4M2MxMjI0NzljNDc0OGE4ZTRjNzIx NTYiCiAgIGludGVncml0eSBzaGE1MTItQ3dCTFJFSVE3THZZRkIwV3lSdndocTVONXFQaGM2UE1q RDZiWWdnRmxJNVl5RGdsKzB2eHE1VkhiTU9GcUxnN2hmV3ptdThUNVoxUW9maG1USWhJdEE9PQog CitlbW9qaXMtbGlzdEBeMi4wLjA6CisgIHZlcnNpb24gIjIuMS4wIgorICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lbW9qaXMtbGlzdC8tL2Vtb2ppcy1saXN0LTIuMS4w LnRneiM0ZGFhNGQ5ZGIwMGY5ODE5ODgwYzc5ZmE0NTdhZTViMDlhMWZkMzg5IgorICBpbnRlZ3Jp dHkgc2hhMS1UYXBObmJBUG1CbUlESG42UlhybHNKb2YwNGs9CisKIGVtb2ppcy1saXN0QF4zLjAu MDoKICAgdmVyc2lvbiAiMy4wLjAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL2Vtb2ppcy1saXN0Ly0vZW1vamlzLWxpc3QtMy4wLjAudGd6IzU1NzA2NjIwNDZhZDI5 ZTJlOTE2ZTcxYWFlMjYwYWJkZmY0ZjZhNzgiCkBAIC0zODcwLDYgKzM5MzAsMzIgQEAgZXMtdG8t cHJpbWl0aXZlQF4xLjIuMToKICAgICBpcy1kYXRlLW9iamVjdCAiXjEuMC4xIgogICAgIGlzLXN5 bWJvbCAiXjEuMC4yIgogCitlczUtZXh0QF4wLjEwLjM1LCBlczUtZXh0QF4wLjEwLjUwOgorICB2 ZXJzaW9uICIwLjEwLjUzIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9lczUtZXh0Ly0vZXM1LWV4dC0wLjEwLjUzLnRneiM5M2M1YTNhY2ZkYmVmMjc1MjIwYWQ3MjY0 NGFkMDJlZTE4MzY4ZGUxIgorICBpbnRlZ3JpdHkgc2hhNTEyLVhzMlN0dzZOaU5IV3lwelJUWTFN dGFHL3VKbHdDazhrSDgxOTIwbWE4bXZOOFhxMWdzZmhadnBrSW1MUUFydzhBSG52OE1UMkk0NUoz YzBSOHNsRStRPT0KKyAgZGVwZW5kZW5jaWVzOgorICAgIGVzNi1pdGVyYXRvciAifjIuMC4zIgor ICAgIGVzNi1zeW1ib2wgIn4zLjEuMyIKKyAgICBuZXh0LXRpY2sgIn4xLjAuMCIKKworZXM2LWl0 ZXJhdG9yQDIuMC4zLCBlczYtaXRlcmF0b3JAfjIuMC4zOgorICB2ZXJzaW9uICIyLjAuMyIKKyAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXM2LWl0ZXJhdG9yLy0vZXM2 LWl0ZXJhdG9yLTIuMC4zLnRneiNhN2RlODg5MTQxYTA1YTk0YjA4NTQ0MDNiMmQwYTBmYmZhOThm M2I3IgorICBpbnRlZ3JpdHkgc2hhMS1wOTZJa1VHZ1dwU3doVVFEc3RDZysvcVk4N2M9CisgIGRl cGVuZGVuY2llczoKKyAgICBkICIxIgorICAgIGVzNS1leHQgIl4wLjEwLjM1IgorICAgIGVzNi1z eW1ib2wgIl4zLjEuMSIKKworZXM2LXN5bWJvbEBeMy4xLjEsIGVzNi1zeW1ib2xAfjMuMS4zOgor ICB2ZXJzaW9uICIzLjEuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vZXM2LXN5bWJvbC8tL2VzNi1zeW1ib2wtMy4xLjMudGd6I2JhZDVkM2MxYmNkYWMyODI2OWY0 Y2IzMzFlNDMxYzc4YWM3MDVkMTgiCisgIGludGVncml0eSBzaGE1MTItTko2WW4zRnVEaW5CYUJS V2wvcTVYL3M0a29SSEJyZ0tBdSt5R0k2SkNCZWl1M3FyY2JKaHdUMkdlUi9FWFZmeWxSazhkcFFW Sm9MRUZoSytNdTMxTkE9PQorICBkZXBlbmRlbmNpZXM6CisgICAgZCAiXjEuMC4xIgorICAgIGV4 dCAiXjEuMS4yIgorCiBlc2NhbGFkZUBeMy4xLjE6CiAgIHZlcnNpb24gIjMuMS4xIgogICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc2NhbGFkZS8tL2VzY2FsYWRlLTMu MS4xLnRneiNkOGNmZGM3MDAwOTY1YzVhMDE3NGI0YTgyZWFhNWMwNTUyNzQyZTQwIgpAQCAtNDE3 Niw2ICs0MjYyLDEzIEBAIGV4dC1uYW1lQF41LjAuMDoKICAgICBleHQtbGlzdCAiXjIuMC4wIgog ICAgIHNvcnQta2V5cy1sZW5ndGggIl4xLjAuMCIKIAorZXh0QF4xLjEuMjoKKyAgdmVyc2lvbiAi MS40LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2V4dC8tL2V4 dC0xLjQuMC50Z3ojODlhZTdhMDcxNThmNzlkMzU1MTc4ODI5MDQzMjQwNzdlNDM3OTI0NCIKKyAg aW50ZWdyaXR5IHNoYTUxMi1LZXk1TklzVXhkcUtnM3ZJc2R3OWRTdVhwUENRMjk3eTZ3QmpMMzBl ZHh3UGd0MkU0NFdjV0JaZXkvWnZVYzZzRVJMVHhLZHlDdTRnWkZtVWJrMVE3QT09CisgIGRlcGVu ZGVuY2llczoKKyAgICB0eXBlICJeMi4wLjAiCisKIGV4dGVuZC1zaGFsbG93QF4yLjAuMToKICAg dmVyc2lvbiAiMi4wLjEiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L2V4dGVuZC1zaGFsbG93Ly0vZXh0ZW5kLXNoYWxsb3ctMi4wLjEudGd6IzUxYWY3ZDYxNGFkOWE5 ZjYxMGVhMWJhZmJiOTg5ZDZiMWM1Njg5MGYiCkBAIC00OTgyLDYgKzUwNzUsMTMgQEAgaHRtbC1l c2NhcGVyQF4yLjAuMDoKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v aHRtbC1lc2NhcGVyLy0vaHRtbC1lc2NhcGVyLTIuMC4yLnRneiNkZmQ2MDAyN2RhMzZhMzZkZmNi ZTIzNjI2MmMwMGE1ODIyNjgxNDUzIgogICBpbnRlZ3JpdHkgc2hhNTEyLUgyaU10ZDBJNE10NWVZ aWFwUmRJRGpwK1h6ZWxYUTB0RkU0SlM3WUZ3RmV2WFhNbU9wOW15TnJVdkNnMEQ2d3M4aXFrUlBC ZktIZ2J3aWcxU21sTGZnPT0KIAoraHRtbDJjYW52YXNAXjEuMC4wLXJjLjc6CisgIHZlcnNpb24g IjEuMC4wLXJjLjciCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0 bWwyY2FudmFzLy0vaHRtbDJjYW52YXMtMS4wLjAtcmMuNy50Z3ojNzBjMTU5Y2UwZTYzOTU0YTkx MTY5NTMxODk0ZDA4YWQ1NjI3YWM5OCIKKyAgaW50ZWdyaXR5IHNoYTUxMi15dlBOWkdlakIyS095 S2xlWnNwaksvTnJ1WFZRdW93dThOblYySFlHN2dXN3l0emwrdW1mZmJ0VUk2MnYyZENIUUxEZHNL NkhJRHR5SlowVzNuZWVyQT09CisgIGRlcGVuZGVuY2llczoKKyAgICBjc3MtbGluZS1icmVhayAi MS4xLjEiCisKIGh0bWxlc2NhcGVAXjEuMS4wOgogICB2ZXJzaW9uICIxLjEuMSIKICAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaHRtbGVzY2FwZS8tL2h0bWxlc2NhcGUt MS4xLjEudGd6IzNhMDNlZGMyMjE0YmNhM2I2NjQyNGEzZTc5NTkzNDk1MDljYjAzNTEiCkBAIC02 MTY3LDYgKzYyNjcsMTUgQEAgbG9hZGVyLXJ1bm5lckBeMi40LjA6CiAgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvYWRlci1ydW5uZXIvLS9sb2FkZXItcnVubmVyLTIu NC4wLnRneiNlZDQ3MDY2YmZlNTM0ZDdlODRjNGM3Yjk5OThjMmE3NTYwN2Q5MzU3IgogICBpbnRl Z3JpdHkgc2hhNTEyLUpzbXI4OVJjWEdJd2l2RlkyMUZjUnJpc1laZnZMTVRXeDVrT0xjK0pUeHRw Qk9HNnhNTDB2emJjNlNFUUcyRk85LzRGYzN3VzRMVmNCNURtR2ZsYVJ3PT0KIAorbG9hZGVyLXV0 aWxzQDEuMi4zOgorICB2ZXJzaW9uICIxLjIuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vbG9hZGVyLXV0aWxzLy0vbG9hZGVyLXV0aWxzLTEuMi4zLnRneiMxZmY1 ZGM2OTExYzlmMGEwNjI1MzFhNGMwNGI2MDk0MDYxMDhjMmM3IgorICBpbnRlZ3JpdHkgc2hhNTEy LWZrcHo4ZWpkbkVNRzNzMzd3R0wwN2lTQkRnOTlPOUQ1eWZsRTlSR05IM2hSZHg5U093WWZuR1lk Wk9VSVppdE44RStFMnZrcTNNVU1ZTXZQWWw1WlpBPT0KKyAgZGVwZW5kZW5jaWVzOgorICAgIGJp Zy5qcyAiXjUuMi4yIgorICAgIGVtb2ppcy1saXN0ICJeMi4wLjAiCisgICAganNvbjUgIl4xLjAu MSIKKwogbG9hZGVyLXV0aWxzQDEuNC4wLCBsb2FkZXItdXRpbHNAXjEuMC4xLCBsb2FkZXItdXRp bHNAXjEuMC4yLCBsb2FkZXItdXRpbHNAXjEuMS4wLCBsb2FkZXItdXRpbHNAXjEuMi4xLCBsb2Fk ZXItdXRpbHNAXjEuMi4zLCBsb2FkZXItdXRpbHNAXjEuNC4wOgogICB2ZXJzaW9uICIxLjQuMCIK ICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9hZGVyLXV0aWxzLy0v bG9hZGVyLXV0aWxzLTEuNC4wLnRneiNjNTc5YjVlMzRjYjM0YjFhNzRlZGM2YzFmYjM2YmZhMzcx ZDVhNjEzIgpAQCAtNjgzNyw2ICs2OTQ2LDExIEBAIG5lby1hc3luY0BeMi41LjAsIG5lby1hc3lu Y0BeMi42LjE6CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25lby1h c3luYy8tL25lby1hc3luYy0yLjYuMi50Z3ojYjRhYWZiOTNlM2FlYjJkODE3NGNhNTNjZjE2M2Fi N2Q3MzA4MzA1ZiIKICAgaW50ZWdyaXR5IHNoYTUxMi1ZZDNVRVM1bVdDU3FSK3FOVDkzUzNVb1lV a3FBWjlsTGc4YTdnOXJpbXNXbVlHSzhjVlRvQTQvc0YzUnJzaGR5VjNzQUdNWFZVbXBNWU93K2RM cE91dz09CiAKK25leHQtdGlja0B+MS4wLjA6CisgIHZlcnNpb24gIjEuMC4wIgorICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9uZXh0LXRpY2svLS9uZXh0LXRpY2stMS4w LjAudGd6I2NhODZkMWZlODgyODE2OWIwMTIwMjA4ZTNkYzg0MjRiOWRiODM0MmMiCisgIGludGVn cml0eSBzaGExLXlvYlIvb2dvRnBzQklDQ09QY2hDUzUyNE5Ddz0KKwogbmljZS10cnlAXjEuMC40 OgogICB2ZXJzaW9uICIxLjAuNSIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr Zy5jb20vbmljZS10cnkvLS9uaWNlLXRyeS0xLjAuNS50Z3ojYTMzNzhhNzY5NmNlN2QyMjNlODhm YzliNzY0YmQ3ZWYxMDg5ZTM2NiIKQEAgLTc4NTQsNiArNzk2OCwxNSBAQCBwb3N0Y3NzLXZhbHVl LXBhcnNlckBeNC4wLjIsIHBvc3Rjc3MtdmFsdWUtcGFyc2VyQF40LjEuMDoKICAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy12YWx1ZS1wYXJzZXIvLS9wb3N0 Y3NzLXZhbHVlLXBhcnNlci00LjEuMC50Z3ojNDQzZjZhMjBjZWQ2NDgxYTJiZGE0ZmE4NTMyYTZl NTVkNzg5YTJjYiIKICAgaW50ZWdyaXR5IHNoYTUxMi05N0RYT0ZiUUpoazcxbmU1L010NmNPdTZ5 eHNTZk0wUUdReWwwTDI1R2NhNHlHV0VHSmFpZzdsN2diQ1g2MjNWcVRCTkdMUkxhVlVDbk5rY2Vk bFJTUT09CiAKK3Bvc3Rjc3NANy4wLjIxOgorICB2ZXJzaW9uICI3LjAuMjEiCisgIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MvLS9wb3N0Y3NzLTcuMC4yMS50 Z3ojMDZiYjA3ODI0YzE5YzIwMjFjNWQwNTZkNWIxMGMzNWI5ODlmN2UxNyIKKyAgaW50ZWdyaXR5 IHNoYTUxMi11SUZ0SkVseEpvMjlRQzc1M0p6aGlkb0FodnAvZS9FeGV6a2RoZm10OEF5bVdUNi81 QjdXMVdtcG9uWVdrSGsyZWc2c09OeVRjaDBBM25rTVB1bjNTUT09CisgIGRlcGVuZGVuY2llczoK KyAgICBjaGFsayAiXjIuNC4yIgorICAgIHNvdXJjZS1tYXAgIl4wLjYuMSIKKyAgICBzdXBwb3J0 cy1jb2xvciAiXjYuMS4wIgorCiBwb3N0Y3NzQDcuMC4yNzoKICAgdmVyc2lvbiAiNy4wLjI3Igog ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLy0vcG9zdGNz cy03LjAuMjcudGd6I2NjNjdjZGM2YjBkYWEzNzUxMDViN2M0MjRhODU1NjczNDVmYzU0ZDkiCkBA IC04MjYwLDYgKzgzODMsMTEgQEAgcmVnZXgtbm90QF4xLjAuMCwgcmVnZXgtbm90QF4xLjAuMjoK ICAgICBleHRlbmQtc2hhbGxvdyAiXjMuMC4yIgogICAgIHNhZmUtcmVnZXggIl4xLjEuMCIKIAor cmVnZXgtcGFyc2VyQF4yLjIuMTE6CisgIHZlcnNpb24gIjIuMi4xMSIKKyAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVnZXgtcGFyc2VyLy0vcmVnZXgtcGFyc2VyLTIu Mi4xMS50Z3ojM2IzN2VjOTA0OWUxOTQ3OTgwNmU4NzhjYWJlN2MxY2E4M2NjZmU1OCIKKyAgaW50 ZWdyaXR5IHNoYTUxMi1qYkQvRlQwKzlNQlUyWEFabHVJN3cyT0JzMVJCaTZwOU04M25rb1pheVFY WFU5ZThSb2J0NjlGY1pjN3dVNGVKRC9ZRlRqbjFKZENrM3JiTUphano4UT09CisKIHJlZ2V4cC5w cm90b3R5cGUuZmxhZ3NAXjEuMy4wOgogICB2ZXJzaW9uICIxLjMuMCIKICAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVnZXhwLnByb3RvdHlwZS5mbGFncy8tL3JlZ2V4 cC5wcm90b3R5cGUuZmxhZ3MtMS4zLjAudGd6IzdhYmE4OWIzYzEzYTY0NTA5ZGFiY2YzY2E4ZDlm YmI5YmRmNWNiNzUiCkBAIC04Mzc0LDYgKzg1MDIsMjIgQEAgcmVzb2x2ZS1mcm9tQF40LjAuMDoK ICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVzb2x2ZS1mcm9tLy0v cmVzb2x2ZS1mcm9tLTQuMC4wLnRneiM0YWJjZDg1MmFkMzJkZDdiYWFiZmU5YjQwZTAwYTM2ZGI1 ZjM5MmU2IgogICBpbnRlZ3JpdHkgc2hhNTEyLXBiL01ZbVhzdEFreXNSRng4cGlOSTF0R0ZOUUlG QTN2a0UzR3E0RXVBMWRGNmdIcC8rdmdacXNDR0phcHZ5OE4zUSs0bzdGd3ZxdVBKY25aN1JZeTRn PT0KIAorcmVzb2x2ZS11cmwtbG9hZGVyQF4zLjEuMjoKKyAgdmVyc2lvbiAiMy4xLjIiCisgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jlc29sdmUtdXJsLWxvYWRlci8t L3Jlc29sdmUtdXJsLWxvYWRlci0zLjEuMi50Z3ojMjM1ZTJjMjhlMjJlM2U0MzJiYTdhNWQ0ZTMw NWM1OWE1OGVkZmMwOCIKKyAgaW50ZWdyaXR5IHNoYTUxMi1RRWI0QTc2YzhNaTdJM3hOS1hsUktR U2xMQndqVVYvVUxGTVArRzduMy83dEpaOE1HNXdzWjN1Y3hQMUp6OFZldm42Zm5Kc3hEeDljSWxz K3V0R3pQUT09CisgIGRlcGVuZGVuY2llczoKKyAgICBhZGp1c3Qtc291cmNlbWFwLWxvYWRlciAi My4wLjAiCisgICAgY2FtZWxjYXNlICI1LjMuMSIKKyAgICBjb21wb3NlLWZ1bmN0aW9uICIzLjAu MyIKKyAgICBjb252ZXJ0LXNvdXJjZS1tYXAgIjEuNy4wIgorICAgIGVzNi1pdGVyYXRvciAiMi4w LjMiCisgICAgbG9hZGVyLXV0aWxzICIxLjIuMyIKKyAgICBwb3N0Y3NzICI3LjAuMjEiCisgICAg cmV3b3JrICIxLjAuMSIKKyAgICByZXdvcmstdmlzaXQgIjEuMC4wIgorICAgIHNvdXJjZS1tYXAg IjAuNi4xIgorCiByZXNvbHZlLXVybEBeMC4yLjE6CiAgIHZlcnNpb24gIjAuMi4xIgogICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZXNvbHZlLXVybC8tL3Jlc29sdmUt dXJsLTAuMi4xLnRneiMyYzYzN2ZlNzdjODkzYWZkMmE2NjNmZTIxYWE5MDgwMDY4ZTIwNTJhIgpA QCAtODQxMiw2ICs4NTU2LDE5IEBAIHJldEB+MC4xLjEwOgogICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9yZXQvLS9yZXQtMC4xLjE1LnRneiNiOGE0ODI1ZDViZGIxZmMz ZjZmNTNjMmJjMzNmODEzODg2ODFjN2JjIgogICBpbnRlZ3JpdHkgc2hhNTEyLVRUbFlwYStPTCt2 TU1ORzI0eFNsUUdFSjNCL1J6RWZVbExjdDdiNUcveXRhdit3UHJwbENwVk1GdXd6WGJrZWNKcmI2 SVlvMWlGYjBTOXYzNzc1NG1nPT0KIAorcmV3b3JrLXZpc2l0QDEuMC4wOgorICB2ZXJzaW9uICIx LjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmV3b3JrLXZp c2l0Ly0vcmV3b3JrLXZpc2l0LTEuMC4wLnRneiM5OTQ1YjI4MDNmMjE5ZTJmN2FjYTAwYWRiOGJj OWY2NDBmODQyYzlhIgorICBpbnRlZ3JpdHkgc2hhMS1tVVd5Z0Q4aG5pOTZ5Z0N0dUx5ZlpBK0VM Sm89CisKK3Jld29ya0AxLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jld29yay8tL3Jld29yay0xLjAuMS50Z3ojMzA4MDZh ODQxMzQyYjU0NTEwYWE0MTEwODUwY2Q0ODUzNDE0NGFhNyIKKyAgaW50ZWdyaXR5IHNoYTEtTUlC cWhCTkN0VVVRcWtFUWhRelVoVFFVU3FjPQorICBkZXBlbmRlbmNpZXM6CisgICAgY29udmVydC1z b3VyY2UtbWFwICJeMC4zLjMiCisgICAgY3NzICJeMi4wLjAiCisKIHJmZGNAXjEuMS40OgogICB2 ZXJzaW9uICIxLjEuNCIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v cmZkYy8tL3JmZGMtMS4xLjQudGd6I2JhNzJjYzEzNjdhMGNjZDljZjgxYTg3MGIzYjU4YmQzYWQw N2Y4YzIiCkBAIC04ODkwLDcgKzkwNDcsNyBAQCBzb3VyY2UtbGlzdC1tYXBAXjIuMC4wOgogICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zb3VyY2UtbGlzdC1tYXAvLS9z b3VyY2UtbGlzdC1tYXAtMi4wLjEudGd6IzM5OTNiZDg3M2JmYzQ4NDc5Y2NhOWVhM2E1NDc4MzVj N2MxNTRiMzQiCiAgIGludGVncml0eSBzaGE1MTItcW5RN2dWTXhHTnhzaUw0bEV1SndlL1RvOFVu SzdmQW5tYkdFRUg4UnBMb3V1S2JlRW0wbGhiUVZGSXJOU3VCK0c3dFZyQWxWc1pnRVRUNW5samYr SXc9PQogCi1zb3VyY2UtbWFwLXJlc29sdmVAXjAuNS4wOgorc291cmNlLW1hcC1yZXNvbHZlQF4w LjUuMCwgc291cmNlLW1hcC1yZXNvbHZlQF4wLjUuMjoKICAgdmVyc2lvbiAiMC41LjMiCiAgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJjZS1tYXAtcmVzb2x2ZS8t L3NvdXJjZS1tYXAtcmVzb2x2ZS0wLjUuMy50Z3ojMTkwODY2YmVjZTc1NTNlMWY4ZjI2N2EyZWU4 MmM2MDZiNTUwOWExYSIKICAgaW50ZWdyaXR5IHNoYTUxMi1IdHorUm5zWFdrNStQMnNseDVKaDNR NjZ2aFFqMUNsbG0wenZuYVk5OCtORngrRHYyQ0YvZjVPL3Q4eCtLYU5kcmRJQXNydU56b2gvS3Bp YWxicUFudz09CkBAIC04OTE5LDE2ICs5MDc2LDE2IEBAIHNvdXJjZS1tYXBAMC41LjA6CiAgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJjZS1tYXAvLS9zb3VyY2Ut bWFwLTAuNS4wLnRneiMwZmU5NjUwM2FjODZhNWFkYjVkZTYzZjRlNDEyYWU0ODcyY2RiZTg2Igog ICBpbnRlZ3JpdHkgc2hhMS1EK2xsQTZ5R3BhMjEzbVAwNUJLdVNITE52b1k9CiAKK3NvdXJjZS1t YXBAMC42LjEsIHNvdXJjZS1tYXBAXjAuNi4wLCBzb3VyY2UtbWFwQF4wLjYuMSwgc291cmNlLW1h cEB+MC42LjE6CisgIHZlcnNpb24gIjAuNi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9zb3VyY2UtbWFwLy0vc291cmNlLW1hcC0wLjYuMS50Z3ojNzQ3MjJhZjMy ZTk2MTRlOWMyODdhOGQwYmJkZTQ4YjVlMmYxYTI2MyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1Vamdh cHVtV2xiTWhrQmd6VDdZa2M1WVhVVDQ2RjBpS3U4U0dYcTBiY3dQNWR6L2gwUGxqNmVuSnFqejFa YnEybDVXYXFZbnJWYndXT1dNeUYzRjQ3Zz09CisKIHNvdXJjZS1tYXBAXjAuNS4wLCBzb3VyY2Ut bWFwQF4wLjUuNiwgc291cmNlLW1hcEBeMC41LjcsIHNvdXJjZS1tYXBAfjAuNS4zOgogICB2ZXJz aW9uICIwLjUuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc291 cmNlLW1hcC8tL3NvdXJjZS1tYXAtMC41LjcudGd6IzhhMDM5ZDJkMTAyMWQyMmQxZWExNGM4MGQ4 ZWE0NjhiYTJlZjNmY2MiCiAgIGludGVncml0eSBzaGExLWlnT2RMUkFoMGkwZW9VeUEyT3BHaTZM dlA4dz0KIAotc291cmNlLW1hcEBeMC42LjAsIHNvdXJjZS1tYXBAXjAuNi4xLCBzb3VyY2UtbWFw QH4wLjYuMToKLSAgdmVyc2lvbiAiMC42LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL3NvdXJjZS1tYXAvLS9zb3VyY2UtbWFwLTAuNi4xLnRneiM3NDcyMmFmMzJl OTYxNGU5YzI4N2E4ZDBiYmRlNDhiNWUyZjFhMjYzIgotICBpbnRlZ3JpdHkgc2hhNTEyLVVqZ2Fw dW1XbGJNaGtCZ3pUN1lrYzVZWFVUNDZGMGlLdThTR1hxMGJjd1A1ZHovaDBQbGo2ZW5KcWp6MVpi cTJsNVdhcVluclZid1dPV015RjNGNDdnPT0KLQogc291cmNlLW1hcEBeMC43LjM6CiAgIHZlcnNp b24gIjAuNy4zIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zb3Vy Y2UtbWFwLy0vc291cmNlLW1hcC0wLjcuMy50Z3ojNTMwMmY4MTY5MDMxNzM1MjI2NTQ0MDkyZTY0 OTgxZjc1MTc1MDM4MyIKQEAgLTk2NTMsNiArOTgxMCwxNiBAQCB0eXBlLWlzQH4xLjYuMTcsIHR5 cGUtaXNAfjEuNi4xODoKICAgICBtZWRpYS10eXBlciAiMC4zLjAiCiAgICAgbWltZS10eXBlcyAi fjIuMS4yNCIKIAordHlwZUBeMS4wLjE6CisgIHZlcnNpb24gIjEuMi4wIgorICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90eXBlLy0vdHlwZS0xLjIuMC50Z3ojODQ4ZGQ3 Njk4ZGFmYTNlNTRhNmM0NzllNzU5YzRiYzNmMTg4NDdhMCIKKyAgaW50ZWdyaXR5IHNoYTUxMi0r NW50NUFBbmlxc0NudTJjRVFRZHB6Q0FoMzNrVng4bjBWb0ZpZEtwQjFkVlZMQU4vRitiZ1ZPcU9K cU9uRW5yaHAyMjJjbEI1cDN2VWxEKzFRQW5mZz09CisKK3R5cGVAXjIuMC4wOgorICB2ZXJzaW9u ICIyLjEuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdHlwZS8t L3R5cGUtMi4xLjAudGd6IzliZGMyMmM2NDhjZjhjZjg2ZGQyM2QzMjMzNmE0MWNmYjY0NzVlM2Yi CisgIGludGVncml0eSBzaGE1MTItRzlhYnNEV3ZoQVdDVjJnbUYxekt1ZDNPeUM2MW5aRHdXdkJM MkRBcGFWRm9nSTA3Q3ByZ2dpUUFPT2p2cDJOUmpZV0Z6UHl1N3Z3dERyUUZxOGplU0E9PQorCiB0 eXBlZGFycmF5QF4wLjAuNjoKICAgdmVyc2lvbiAiMC4wLjYiCiAgIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3R5cGVkYXJyYXkvLS90eXBlZGFycmF5LTAuMC42LnRneiM4 NjdhYzc0ZTM4NjQxODdiMWQzZDQ3ZDk5NmE3OGVjNWM4ODMwNzc3Igo= --0000000000001d161505b9b81dc7--