Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hii1T-0005bs-L8 for pgadmin-hackers@arkaria.postgresql.org; Wed, 03 Jul 2019 16:22:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hii1S-00042g-Hq for pgadmin-hackers@arkaria.postgresql.org; Wed, 03 Jul 2019 16:22:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hii1R-00042N-Ji for pgadmin-hackers@lists.postgresql.org; Wed, 03 Jul 2019 16:22:18 +0000 Received: from mail-qk1-x730.google.com ([2607:f8b0:4864:20::730]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hii1K-00062y-Tb for pgadmin-hackers@postgresql.org; Wed, 03 Jul 2019 16:22:16 +0000 Received: by mail-qk1-x730.google.com with SMTP id r21so2957045qke.2 for ; Wed, 03 Jul 2019 09:22:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=Rv5Kq2T2ka4Br3ErGNbDzWv3m+cbQ8q28Av4A3q37a0=; b=Q4AegWhjZY9zhSz8WQwLeh+qNbZm5gjuJqpMZ4F3KH/Z7U8DxliSw/BC/e53nLpBVv pX5Gesrf/xTTF+IriwPDomAxygq3ofFOQEcd9Pnz2tSccRcZjjEnZPjdk4rZNnvNFYk8 1dbPyTYrZUqIqh9KI/7gqiH80FPaz/ONegPBC5i+0PKZblD9Q9VGVZAekqL3Sep4Zi/E W3iXXhyYddrfNz6txMGdNG7FiQhNPfqbqN9T7kwmEYuIIumuL+M/qZfF66d3i6VTJsIA igVwfOSpis0XPdSPssmGvBY/dHtWZvPYVPWRlZscCztgovFXPv448btLhqw0Eg5J9PAH 7CyQ== 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; bh=Rv5Kq2T2ka4Br3ErGNbDzWv3m+cbQ8q28Av4A3q37a0=; b=maSNnXSKCsnUQoknhlpsKJKLyinDusogSjMgNpJWgssLVlOjvbkp4xRU09hkabUiXP k0R3tZ0VBvXxz7t+sbKxwTwIHEPEpTEJGndVx4E8YKKSiOOHI1TVCjHrSxF+TJuIa3/f Tm1o6pUs7xGSog0bPo3QZfI7GvCiVUCjygyhWRf/ReRCP/vYivXPhDWL8aCdExvjM7e+ MWiMR4vS/Y8zZ+MXfIW620jtk8q8MitEeCcPiNddyR+r5yT7ehuUlmZY9GRdVl3bvKrm eUGNmje+ICg2QV/TijrGwh5m96W2TBg35VNTaPVxFCYnF+QzCEZbrTLsG/auhqqkpSPP Sz2A== X-Gm-Message-State: APjAAAUYJAVE9xZwsvsy6wQfZyC6xqP2UJQgyaVMMuILEAE2lsOfzhXu IaTyQoFUFxCeXS3wu17stwXj9xc87hLoOLVUBrSLIWTZ X-Google-Smtp-Source: APXvYqzAaPsCgUPgyghHGvRr5IjId4vAIFPGbkivhwAE+s/M8HB8uPazdFFfo3Pgtvk3jsmfuY0p2byUQ/HV+nmBM5M= X-Received: by 2002:a37:a80d:: with SMTP id r13mr31320596qke.209.1562170929831; Wed, 03 Jul 2019 09:22:09 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Yosry Muhammad Date: Wed, 3 Jul 2019 18:21:58 +0200 Message-ID: Subject: Re: [GSoC] Finalized First Patch To: pgadmin-hackers@postgresql.org, Dave Page Content-Type: multipart/mixed; boundary="0000000000005a0de3058cc94399" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000005a0de3058cc94399 Content-Type: multipart/alternative; boundary="0000000000005a0de0058cc94397" --0000000000005a0de0058cc94397 Content-Type: text/plain; charset="UTF-8" I updated the patch to be in sync with recent commits made (since I sent the patch) and fix merge conflicts. Please find the new patch attached. Waiting for review. Thanks. On Mon, Jul 1, 2019 at 9:19 PM Yosry Muhammad wrote: > Dear all, > > This is a final version of the patch I have been working on since the > beginning of the GSoC project with tests and documentation. > > This patch includes: > > Features: > - Implementeing the first version detecting updatable resultsets. Saving > edited data works the same way as View Data mode (with small changes). A > resultset is updatable if: > - All columns belong to the same table. > - All primary keys are selected. > - No duplicate columns. > > - Adding the new Save Data icon and its shortcut in preferences. The old > Save icon is used exclusively for Saving files now. > - Integrating saving data changes into the ongoing transaction (if any). > The user is notified that they need to commit the changes if auto-commit is > off. > - A failed save of data changes rolls back the data changes only, does not > rollback previous queries in the same transaction. > - Alerting the user when Execute/Explain is clicked with unsaved changes > in the grid. > - Modified/New cells are now highlighted. > - Alerting the user when exiting with uncommited transactions. > - Re-implementing the on tab close event of the query tool as multiple > dialogs may be required for: unsaved data changes, unsaved file changes & > uncommited transactions (they can all be enabled/disabled in preferences). > - Hiding queries generated by pgAdmin from query history (until they are > substituted by a mogrified version and have a checkbox added to > enable/disable them). > > Bug fixes: > - Fixed a bug where exit on save would exit even if the save was not > successful. > - Fixed a bug where alertify confirm dialogs had midword break wrapping. > > Tests: > - Python tests: > - test_is_query_resultset_updatable: Tests that updatable resultsets > are detected correctly. > - test_save_changed_data: Tests that additions, deletions & updates > are performed correctly on updatable resultsets. > - Feature tests: > - query_tool_journey_test (existing - extended): Test that when the > query resultset is updatable the user can modify cells and add new rows > (and vice versa). > - Updated other feature tests to match the new icon. > - JS tests: > - Updated call_render_after_poll_specs.js & > keyboard_shortcuts_specs.js to test updates in related parts of the code. > > I could not add JS tests to test that the new Save Data button is enabled > when the user edits a cell as I cannot mimic the actions of editing the > grid. However, the new button is now used in View/Edit data feature tests > and it works correctly. > I also could not add JS tests to check that when the resultset is > updatable the grid should be editable as the current code in sqleditor.js > is not testable and it will required a lot of refactoring of this file, but > again, this is covered by feature tests. > > Documentation: > - Updated editgrid.rst, query_tool.rst, query_tool_shortcuts.rst, > preferences.rst & keyboard_shortcuts.rst to match the new changes. > - Updated the following screenshots: query_output_data.png, query_tool.png > & query_toolbar.png > > The patch passes all tests performed by "make check" command. > > Please review, looking forward to any comments or feedback. > > Thanks ! > > -- > *Yosry Muhammad Yosry* > > Computer Engineering student, > The Faculty of Engineering, > Cairo University (2021). > Class representative of CMP 2021. > https://www.linkedin.com/in/yosrym93/ > -- *Yosry Muhammad Yosry* Computer Engineering student, The Faculty of Engineering, Cairo University (2021). Class representative of CMP 2021. https://www.linkedin.com/in/yosrym93/ --0000000000005a0de0058cc94397 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I updated the patch to be in sync with recent commits= made (since I sent the patch) and fix merge conflicts.

<= /div>
Please find the new patch attached. Waiting for review.

Thanks.

On Mon, Jul 1, 2019 at 9:19 PM Yosry Muham= mad <yosrym93@gmail.com> wr= ote:
Dear all,

This is a final version of th= e patch I have been working on since the beginning of the GSoC project with= tests and documentation.

This patch includes:

Features:
- Implementeing the first ver= sion detecting updatable resultsets. Saving edited data works the same way = as View Data mode (with small changes). A resultset is updatable if:
<= div>=C2=A0=C2=A0=C2=A0 - All columns belong to the same table.
= =C2=A0=C2=A0=C2=A0 - All primary keys are selected.
=C2=A0=C2=A0= =C2=A0 - No duplicate columns.

- Adding the new Sa= ve Data icon and its shortcut in preferences. The old Save icon is used exc= lusively for Saving files now.
- Integrating saving data changes = into the ongoing transaction (if any). The user is notified that they need = to commit the changes if auto-commit is off.
- A failed save = of data changes rolls back the data changes only, does not rollback previou= s queries in the same transaction.
- Alerting the user when Execu= te/Explain is clicked with unsaved changes in the grid.
- Modifie= d/New cells are now highlighted.
- Alerting the user when exiting with u= ncommited transactions.
- Re-implementing the on tab close event = of the query tool as multiple dialogs may be required for: unsaved data cha= nges, unsaved file changes & uncommited transactions (they can all be e= nabled/disabled in preferences).
- Hiding queries generated by pgAdmin f= rom query history (until they are substituted by a mogrified version and ha= ve a checkbox added to enable/disable them).

B= ug fixes:
- Fixed a bug where exit on save would exit even if= the save was not successful.
- Fixed a bug where alertify confir= m dialogs had midword break wrapping.

Tests:
- Python tests:
=C2=A0=C2=A0=C2=A0 - test_is_query_resul= tset_updatable: Tests that updatable resultsets are detected correctly.
=
=C2=A0=C2=A0=C2=A0 - test_save_changed_data: Tests that addition= s, deletions & updates are performed correctly on updatable resultsets.=
- Feature tests:
=C2=A0=C2=A0=C2=A0 - query_tool_journey_test= (existing - extended): Test that when the query resultset is updatable the= user can modify cells and add new rows (and vice versa).
=C2=A0= =C2=A0=C2=A0 - Updated other feature tests to match the new icon.
=
- JS tests:
=C2=A0=C2=A0=C2=A0 -=C2=A0 Updated call_render_a= fter_poll_specs.js & keyboard_shortcuts_specs.js to test updates in rel= ated parts of the code.
=C2=A0=C2=A0
I could not a= dd JS tests to test that the new Save Data button is enabled when the user = edits a cell as I cannot mimic the actions of editing the grid. However, th= e new button is now used in View/Edit data feature tests and it works corre= ctly.
I also could not add JS tests to check that when the r= esultset is updatable the grid should be editable as the current code in sq= leditor.js is not testable and it will required a lot of refactoring of thi= s file, but again, this is covered by feature tests.

Documentation:
- Updated editgrid.rst, query_tool.rst, query_t= ool_shortcuts.rst, preferences.rst & keyboard_shortcuts.rst to match th= e new changes.
- Updated the following screenshots: query_output_= data.png, query_tool.png & query_toolbar.png

The patch passes all tests performed by "make check" command.<= /div>

Please review, looking forward to any comments or = feedback.

Thanks !

--
Yosry Muhammad Yosry<= /div>

Computer Engineering student,
The Faculty of Engineering,
Cai= ro University (2021).
Class representat= ive of CMP 2021.


--
Yosry= Muhammad Yosry

<= /i>
Computer Engineering student,
=
The Faculty of Engineering,
Cairo University (2021).
Class representative of CMP 2021.
--0000000000005a0de0058cc94397-- --0000000000005a0de3058cc94399 Content-Type: text/x-patch; charset="US-ASCII"; name="query_tool_automatic_mode_switch_v1.6.patch" Content-Disposition: attachment; filename="query_tool_automatic_mode_switch_v1.6.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jxng86si0 ZGlmZiAtLWdpdCBhL2RvY3MvZW5fVVMvZWRpdGdyaWQucnN0IGIvZG9jcy9lbl9VUy9lZGl0Z3Jp ZC5yc3QKaW5kZXggMTg1NDI3NGQuLmI2OTc0NDlkIDEwMDY0NAotLS0gYS9kb2NzL2VuX1VTL2Vk aXRncmlkLnJzdAorKysgYi9kb2NzL2VuX1VTL2VkaXRncmlkLnJzdApAQCAtNDIsMTMgKzQyLDE1 IEBAIFRoZSB0b3Agcm93IG9mIHRoZSBkYXRhIGdyaWQgZGlzcGxheXMgdGhlIG5hbWUgb2YgZWFj aCBjb2x1bW4sIHRoZSBkYXRhIHR5cGUsCiBhbmQgaWYgYXBwbGljYWJsZSwgdGhlIG51bWJlciBv ZiBjaGFyYWN0ZXJzIGFsbG93ZWQuIEEgY29sdW1uIHRoYXQgaXMgcGFydCBvZgogdGhlIHByaW1h cnkga2V5IHdpbGwgYWRkaXRpb25hbGx5IGJlIG1hcmtlZCB3aXRoIFtQS10uCiAKKy4uIF9tb2Rp ZnlpbmctZGF0YS1ncmlkOgorCiBUbyBtb2RpZnkgdGhlIGRpc3BsYXllZCBkYXRhOgogCiAqIFRv IGNoYW5nZSBhIG51bWVyaWMgdmFsdWUgd2l0aGluIHRoZSBncmlkLCBkb3VibGUtY2xpY2sgdGhl IHZhbHVlIHRvIHNlbGVjdAogICB0aGUgZmllbGQuICBNb2RpZnkgdGhlIGNvbnRlbnQgaW4gdGhl IHNxdWFyZSBpbiB3aGljaCBpdCBpcyBkaXNwbGF5ZWQuCiAqIFRvIGNoYW5nZSBhIG5vbi1udW1l cmljIHZhbHVlIHdpdGhpbiB0aGUgZ3JpZCwgZG91YmxlLWNsaWNrIHRoZSBjb250ZW50IHRvCiAg IGFjY2VzcyB0aGUgZWRpdCBidWJibGUuICBBZnRlciBtb2RpZnlpbmcgdGhlIGNvbnRlbnRvZiB0 aGUgZWRpdCBidWJibGUsIGNsaWNrCi0gIHRoZSAqU2F2ZSogYnV0dG9uIHRvIGRpc3BsYXkgeW91 ciBjaGFuZ2VzIGluIHRoZSBkYXRhIGdyaWQsIG9yICpDYW5jZWwqIHRvCisgIHRoZSAqT2sqIGJ1 dHRvbiB0byBkaXNwbGF5IHlvdXIgY2hhbmdlcyBpbiB0aGUgZGF0YSBncmlkLCBvciAqQ2FuY2Vs KiB0bwogICBleGl0IHRoZSBlZGl0IGJ1YmJsZSB3aXRob3V0IHNhdmluZy4KIAogVG8gZW50ZXIg YSBuZXdsaW5lIGNoYXJhY3RlciwgY2xpY2sgQ3RybC1FbnRlciBvciBTaGlmdC1FbnRlci4gIE5l d2xpbmUKQEAgLTcwLDkgKzcyLDcgQEAgcXVvdGVzIHRvIHRoZSB0YWJsZSwgeW91IG5lZWQgdG8g ZXNjYXBlIHRoZXNlIHF1b3RlcywgYnkgdHlwaW5nIFwnXCcKIFRvIGRlbGV0ZSBhIHJvdywgcHJl c3MgdGhlICpEZWxldGUqIHRvb2xiYXIgYnV0dG9uLiAgQSBwb3B1cCB3aWxsIG9wZW4sIGFza2lu ZwogeW91IHRvIGNvbmZpcm0gdGhlIGRlbGV0aW9uLgogCi1UbyBjb21taXQgdGhlIGNoYW5nZXMg dG8gdGhlIHNlcnZlciwgc2VsZWN0IHRoZSAqU2F2ZSogdG9vbGJhciBidXR0b24uCi1Nb2RpZmlj YXRpb25zIHRvIGEgcm93IGFyZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIgYXV0b21hdGljYWxseSB3 aGVuIHlvdSBzZWxlY3QKLWEgZGlmZmVyZW50IHJvdy4KK1RvIGNvbW1pdCB0aGUgY2hhbmdlcyB0 byB0aGUgc2VydmVyLCBzZWxlY3QgdGhlICpTYXZlIERhdGEqIHRvb2xiYXIgYnV0dG9uLgogCiAq Kkdlb21ldHJ5IERhdGEgVmlld2VyKioKIApkaWZmIC0tZ2l0IGEvZG9jcy9lbl9VUy9pbWFnZXMv cXVlcnlfb3V0cHV0X2RhdGEucG5nIGIvZG9jcy9lbl9VUy9pbWFnZXMvcXVlcnlfb3V0cHV0X2Rh dGEucG5nCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggOGVlYzcwODcuLjZm NmYwZGMxCkJpbmFyeSBmaWxlcyBhL2RvY3MvZW5fVVMvaW1hZ2VzL3F1ZXJ5X291dHB1dF9kYXRh LnBuZyBhbmQgYi9kb2NzL2VuX1VTL2ltYWdlcy9xdWVyeV9vdXRwdXRfZGF0YS5wbmcgZGlmZmVy CmRpZmYgLS1naXQgYS9kb2NzL2VuX1VTL2ltYWdlcy9xdWVyeV90b29sLnBuZyBiL2RvY3MvZW5f VVMvaW1hZ2VzL3F1ZXJ5X3Rvb2wucG5nCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQK aW5kZXggYjlkMTY1ZWYuLjZmNmYwZGMxCkJpbmFyeSBmaWxlcyBhL2RvY3MvZW5fVVMvaW1hZ2Vz L3F1ZXJ5X3Rvb2wucG5nIGFuZCBiL2RvY3MvZW5fVVMvaW1hZ2VzL3F1ZXJ5X3Rvb2wucG5nIGRp ZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9lbl9VUy9pbWFnZXMvcXVlcnlfdG9vbGJhci5wbmcgYi9k b2NzL2VuX1VTL2ltYWdlcy9xdWVyeV90b29sYmFyLnBuZwppbmRleCA5YWU5Y2VmMS4uYjg3YzBk NzIgMTAwNjQ0CkJpbmFyeSBmaWxlcyBhL2RvY3MvZW5fVVMvaW1hZ2VzL3F1ZXJ5X3Rvb2xiYXIu cG5nIGFuZCBiL2RvY3MvZW5fVVMvaW1hZ2VzL3F1ZXJ5X3Rvb2xiYXIucG5nIGRpZmZlcgpkaWZm IC0tZ2l0IGEvZG9jcy9lbl9VUy9rZXlib2FyZF9zaG9ydGN1dHMucnN0IGIvZG9jcy9lbl9VUy9r ZXlib2FyZF9zaG9ydGN1dHMucnN0CmluZGV4IDM2MGVmYjMyLi40MmFlZTJhYSAxMDA2NDQKLS0t IGEvZG9jcy9lbl9VUy9rZXlib2FyZF9zaG9ydGN1dHMucnN0CisrKyBiL2RvY3MvZW5fVVMva2V5 Ym9hcmRfc2hvcnRjdXRzLnJzdApAQCAtMTMxLDYgKzEzMSw4IEBAIFdoZW4gdXNpbmcgdGhlIFF1 ZXJ5IFRvb2wsIHRoZSBmb2xsb3dpbmcgc2hvcnRjdXRzIGFyZSBhdmFpbGFibGU6CiAgICArPT09 PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0rCiAgICB8IEY1ICAgICAgICAgICAgICAgICAgICAgICB8 IEY1ICAgICAgICAgICAgICAgICB8IEV4ZWN1dGUgcXVlcnkgICAgICAgICAgICAgICAgICAgICB8 CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IEY2ICAgICAgICAgICAgICAg ICAgICAgICB8IEY2ICAgICAgICAgICAgICAgICB8IFNhdmUgZGF0YSBjaGFuZ2VzICAgICAgICAg ICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IEY3ICAgICAg ICAgICAgICAgICAgICAgICB8IEY3ICAgICAgICAgICAgICAgICB8IEVYUExBSU4gcXVlcnkgICAg ICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8 IFNoaWZ0ICsgRjcgICAgICAgICAgICAgICB8IFNoaWZ0ICsgRjcgICAgICAgICB8IEVYUExBSU4g QU5BTFlaRSBxdWVyeSAgICAgICAgICAgICB8CmRpZmYgLS1naXQgYS9kb2NzL2VuX1VTL3ByZWZl cmVuY2VzLnJzdCBiL2RvY3MvZW5fVVMvcHJlZmVyZW5jZXMucnN0CmluZGV4IDI4ZWNiNmFiLi4w ZTA3ZWJjNSAxMDA2NDQKLS0tIGEvZG9jcy9lbl9VUy9wcmVmZXJlbmNlcy5yc3QKKysrIGIvZG9j cy9lbl9VUy9wcmVmZXJlbmNlcy5yc3QKQEAgLTI5NCw2ICsyOTQsMTAgQEAgYSBncmFwaGljYWwg RVhQTEFJTi4KIAogVXNlIHRoZSBmaWVsZHMgb24gdGhlICpPcHRpb25zKiBwYW5lbCB0byBtYW5h Z2UgZWRpdG9yIHByZWZlcmVuY2VzLgogCisqIFdoZW4gdGhlICpBbGVydCBvbiB1bmNvbW1pdGVk IHRyYW5zYWN0aW9ucz8qIHN3aXRjaCBpcyBzZXQgdG8gKlRydWUqLCB0aGUKKyAgUXVlcnkgVG9v bCB3aWxsIGFsZXJ0IHRoZSB1c2VyIHdoZW4gZXhpdGluZyB3aGlsZSB0aGUgY3VycmVudCB0cmFu c2FjdGlvbgorICBpcyBub3QgY29tbWl0ZWQuCisKICogV2hlbiB0aGUgKkF1dG8tQ29tbWl0Pyog c3dpdGNoIGlzIHNldCB0byAqVHJ1ZSosIGVhY2ggc3VjY2Vzc2Z1bCBxdWVyeSBpcwogICBjb21t aXR0ZWQgYWZ0ZXIgZXhlY3V0aW9uLgogCmRpZmYgLS1naXQgYS9kb2NzL2VuX1VTL3F1ZXJ5X3Rv b2wucnN0IGIvZG9jcy9lbl9VUy9xdWVyeV90b29sLnJzdAppbmRleCBkOTc0NmRkYy4uYjg5ZTQ5 ZTAgMTAwNjQ0Ci0tLSBhL2RvY3MvZW5fVVMvcXVlcnlfdG9vbC5yc3QKKysrIGIvZG9jcy9lbl9V Uy9xdWVyeV90b29sLnJzdApAQCAtMTIsMTEgKzEyLDEzIEBAIGFsbG93cyB5b3UgdG86CiAKICog SXNzdWUgYWQtaG9jIFNRTCBxdWVyaWVzLgogKiBFeGVjdXRlIGFyYml0cmFyeSBTUUwgY29tbWFu ZHMuCisqIEVkaXQgdGhlIHJlc3VsdCBzZXQgb2YgYSBTRUxFQ1QgcXVlcnkgaWYgaXQgaXMgOnJl ZjpgdXBkYXRhYmxlIDx1cGRhdGFibGUtcmVzdWx0LXNldD5gLgogKiBEaXNwbGF5cyBjdXJyZW50 IGNvbm5lY3Rpb24gYW5kIHRyYW5zYWN0aW9uIHN0YXR1cyBhcyBjb25maWd1cmVkIGJ5IHRoZSB1 c2VyLgogKiBTYXZlIHRoZSBkYXRhIGRpc3BsYXllZCBpbiB0aGUgb3V0cHV0IHBhbmVsIHRvIGEg Q1NWIGZpbGUuCiAqIFJldmlldyB0aGUgZXhlY3V0aW9uIHBsYW4gb2YgYSBTUUwgc3RhdGVtZW50 IGluIGVpdGhlciBhIHRleHQgb3IgYSBncmFwaGljYWwgZm9ybWF0LgogKiBWaWV3IGFuYWx5dGlj YWwgaW5mb3JtYXRpb24gYWJvdXQgYSBTUUwgc3RhdGVtZW50LgogCisKIC4uIGltYWdlOjogaW1h Z2VzL3F1ZXJ5X3Rvb2wucG5nCiAgICAgOmFsdDogUXVlcnkgdG9vbCB3aW5kb3cKICAgICA6YWxp Z246IGNlbnRlcgpAQCAtMTIwLDYgKzEyMiwyNSBAQCBZb3UgY2FuOgogICBzZXQgcXVlcnkgZXhl Y3V0aW9uIG9wdGlvbnMuCiAqIFVzZSB0aGUgKkRvd25sb2FkIGFzIENTViogaWNvbiB0byBkb3du bG9hZCB0aGUgY29udGVudCBvZiB0aGUgKkRhdGEgT3V0cHV0KgogICB0YWIgYXMgYSBjb21tYS1k ZWxpbWl0ZWQgZmlsZS4KKyogRWRpdCB0aGUgZGF0YSBpbiB0aGUgcmVzdWx0IHNldCBvZiBhIFNF TEVDVCBxdWVyeSBpZiBpdCBpcyB1cGRhdGFibGUuCisKKy4uIF91cGRhdGFibGUtcmVzdWx0LXNl dDoKKworQSByZXN1bHQgc2V0IGlzIHVwZGF0YWJsZSBpZjoKKworKiBBbGwgdGhlIGNvbHVtbnMg YmVsb25nIHRvIHRoZSBzYW1lIHRhYmxlLgorKiBBbGwgdGhlIHByaW1hcnkga2V5cyBvZiB0aGUg dGFibGUgYXJlIHNlbGVjdGVkLgorKiBObyBjb2x1bW5zIGFyZSBkdXBsaWNhdGVkLgorCitBbiB1 cGRhdGFibGUgcmVzdWx0IHNldCBjYW4gYmUgbW9kaWZpZWQganVzdCBsaWtlIGluIDpyZWY6YFZp ZXcvRWRpdCBEYXRhIDxtb2RpZnlpbmctZGF0YS1ncmlkPmAgbW9kZS4KKworSWYgQXV0by1jb21t aXQgaXMgb2ZmLCB0aGUgZGF0YSBjaGFuZ2VzIGFyZSBtYWRlIGFzIHBhcnQgb2YgdGhlIG9uZ29p bmcgdHJhbnNhY3Rpb24sIGlmCitubyB0cmFuc2FjdGlvbiBpcyBvbmdvaW5nIGEgbmV3IG9uZSBp cyBpbml0aWF0ZWQuIFRoZSBkYXRhIGNoYW5nZXMgYXJlIG5vdCBjb21taXRlZCB0byAKK3RoZSBk YXRhYmFzZSB1bmxlc3MgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdGVkLgorSWYgYW55IGVycm9y cyBvY2N1ciBkdXJpbmcgc2F2aW5nIChmb3IgZXhhbXBsZSwgdHJ5aW5nIHRvIHNhdmUgTlVMTCBp bnRvIGEgY29sdW1uIAord2l0aCBOT1QgTlVMTCBjb25zdHJhaW50KSB0aGUgZGF0YSBjaGFuZ2Vz IGFyZSByb2xsZWQgYmFjaywgaG93ZXZlciwgYW55IHByZXZpb3VzbHkgZXhlY3V0ZWQgCitxdWVy aWVzIGluIHRoZSBvbmdvaW5nIHRyYW5zYWN0aW9uIGFyZSBub3Qgcm9sbGVkIGJhY2suCisKIAog QWxsIHJvd3NldHMgZnJvbSBwcmV2aW91cyBxdWVyaWVzIG9yIGNvbW1hbmRzIHRoYXQgYXJlIGRp c3BsYXllZCBpbiB0aGUgKkRhdGEKIE91dHB1dCogcGFuZWwgd2lsbCBiZSBkaXNjYXJkZWQgd2hl biB5b3UgaW52b2tlIGFub3RoZXIgcXVlcnk7IG9wZW4gYW5vdGhlcgpkaWZmIC0tZ2l0IGEvZG9j cy9lbl9VUy9xdWVyeV90b29sX3Rvb2xiYXIucnN0IGIvZG9jcy9lbl9VUy9xdWVyeV90b29sX3Rv b2xiYXIucnN0CmluZGV4IDNjZTlkZWViLi4yYTJiNWJlYSAxMDA2NDQKLS0tIGEvZG9jcy9lbl9V Uy9xdWVyeV90b29sX3Rvb2xiYXIucnN0CisrKyBiL2RvY3MvZW5fVVMvcXVlcnlfdG9vbF90b29s YmFyLnJzdApAQCAtMzEsNyArMzEsNyBAQCBGaWxlIE9wdGlvbnMKICAgICs9PT09PT09PT09PT09 PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09 PT09PT09PT09PT09KwogICAgfCAqT3BlbiBGaWxlKiAgICAgICAgICB8IENsaWNrIHRoZSAqT3Bl biBGaWxlKiBpY29uIHRvIGRpc3BsYXkgYSBwcmV2aW91c2x5IHNhdmVkIHF1ZXJ5IGluIHRoZSBT UUwgRWRpdG9yLiAgICAgICAgICAgICAgICAgfCBBY2Nlc3NrZXkgKyBPICB8CiAgICArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgKlNhdmUqICAgICAgICAgICAgICAgfCBDbGljayB0 aGUgKlNhdmUqIGljb24gdG8gcGVyZm9ybSBhIHF1aWNrLXNhdmUgb2YgYSBwcmV2aW91c2x5IHNh dmVkIHF1ZXJ5LCBvciB0byBhY2Nlc3MgdGhlICAgICAgIHwgQWNjZXNza2V5ICsgUyAgfAorICAg fCAqU2F2ZSBGaWxlKiAgICAgICAgICB8IENsaWNrIHRoZSAqU2F2ZSogaWNvbiB0byBwZXJmb3Jt IGEgcXVpY2stc2F2ZSBvZiBhIHByZXZpb3VzbHkgc2F2ZWQgcXVlcnksIG9yIHRvIGFjY2VzcyB0 aGUgICAgICAgfCBBY2Nlc3NrZXkgKyBTICB8CiAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwg KlNhdmUqIG1lbnU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg IHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfAogICAgfCAgICAgICAgICAgICAgICAg ICAgICB8ICAqIFNlbGVjdCAqU2F2ZSogdG8gc2F2ZSB0aGUgc2VsZWN0ZWQgY29udGVudCBvZiB0 aGUgU1FMIEVkaXRvciBwYW5lbCBpbiBhICBmaWxlLiAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICB8CkBAIC01MCw2ICs1MCw4IEBAIEVkaXRpbmcgT3B0aW9ucwogICAgKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IEljb24gICAgICAgICAgICAgICAgIHwgQmVoYXZpb3Ig ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNob3J0Y3V0ICAgICAgIHwKICAgICs9 PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSs9PT09PT09PT09PT09PT09KworICAgfCAqU2F2ZSBEYXRhKiAgICAgICAgICB8IENs aWNrIHRoZSAqU2F2ZSBEYXRhKiBpY29uIHRvIHNhdmUgZGF0YSBjaGFuZ2VzIGluIHRoZSBEYXRh IE91dHB1dCBQYW5lbCB0byB0aGUgc2VydmVyLiAgICAgICAgICAgfCBGNiAgICAgICAgICAgICB8 CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgKkZpbmQqICAgICAgICAgICAg ICAgfCBVc2UgdGhlICpGaW5kKiBtZW51IHRvIHNlYXJjaCwgcmVwbGFjZSwgb3IgbmF2aWdhdGUg dGhlIGNvZGUgZGlzcGxheWVkIGluIHRoZSBTUUwgRWRpdG9yOiAgICAgICAgIHwgICAgICAgICAg ICAgICAgfAogICAgfCAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCiAgICB8ICAgICAgICAgICAg ICAgICAgICAgIHwgU2VsZWN0ICpGaW5kKiB0byBwcm92aWRlIGEgc2VhcmNoIHRhcmdldCwgYW5k IHNlYXJjaCB0aGUgU1FMIEVkaXRvciBjb250ZW50cy4gICAgICAgICAgICAgICAgICAgICB8IENt ZCtGICAgICAgICAgIHwKQEAgLTY3LDExICs2OSwxMCBAQCBFZGl0aW5nIE9wdGlvbnMKICAgIHwg ICAgICAgICAgICAgICAgICAgICAgfCBTZWxlY3QgKkp1bXAqIHRvIG5hdmlnYXRlIHRvIHRoZSBu ZXh0IG9jY3VycmVuY2Ugb2YgdGhlIHNlYXJjaCB0YXJnZXQuICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgQWx0K0cgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CiAgICB8ICpDb3B5KiAgICAgICAgICAgICAgIHwgQ2xpY2sgdGhlICpDb3B5KiBpY29uIHRvIGNv cHkgdGhlIGNvbnRlbnQgdGhhdCBpcyBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgaW4gdGhlIERhdGEg T3V0cHV0IHBhbmVsLiB8IEFjY2Vzc2tleSArIEMgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAg ICAgfCB3aGVuIGluIFZpZXcvRWRpdCBkYXRhIG1vZGUuICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCi0gICB8ICpQYXN0ZSogICAg ICAgICAgICAgIHwgQ2xpY2sgdGhlICpQYXN0ZSogaWNvbiB0byBwYXN0ZSBhIHByZXZpb3VzbHkg cm93IGludG8gYSBuZXcgcm93IHdoZW4gaW4gVmlldy9FZGl0IGRhdGEgbW9kZS4gICAgICB8IEFj Y2Vzc2tleSArIFAgIHwKKyAgIHwgKlBhc3RlKiAgICAgICAgICAgICAgfCBDbGljayB0aGUgKlBh c3RlKiBpY29uIHRvIHBhc3RlIGEgcHJldmlvdXNseSByb3cgaW50byBhIG5ldyByb3cuICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWNjZXNza2V5ICsgUCAgfAogICAgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCi0gICB8ICpEZWxldGUqICAgICAgICAgICAgIHwgQ2xpY2sg dGhlICpEZWxldGUqIGljb24gdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCByb3dzIHdoZW4gaW4gVmll dy9FZGl0IGRhdGEgbW9kZS4gICAgICAgICAgICAgICAgICB8IEFjY2Vzc2tleSArIEQgIHwKKyAg IHwgKkRlbGV0ZSogICAgICAgICAgICAgfCBDbGljayB0aGUgKkRlbGV0ZSogaWNvbiB0byBkZWxl dGUgdGhlIHNlbGVjdGVkIHJvd3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgQWNjZXNza2V5ICsgRCAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCiAgICB8ICpFZGl0KiAgICAgICAgICAgICAgIHwgVXNlIG9wdGlvbnMgb24gdGhlICpFZGl0 KiBtZW51IHRvIGFjY2VzcyB0ZXh0IGVkaXRpbmcgdG9vbHM7IHRoZSBvcHRpb25zIG9wZXJhdGUg b24gdGhlIHRleHQgICAgICB8ICAgICAgICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAg ICAgICAgfCBkaXNwbGF5ZWQgaW4gdGhlIFNRTCBFZGl0b3IgcGFuZWwgd2hlbiBpbiBRdWVyeSBU b29sIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgfApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9maWxlX21h bmFnZXJfdGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvZmlsZV9tYW5hZ2VyX3Rl c3QucHkKaW5kZXggMWM3NGQ0MGIuLmI2YjM1YzA0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9m ZWF0dXJlX3Rlc3RzL2ZpbGVfbWFuYWdlcl90ZXN0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1 cmVfdGVzdHMvZmlsZV9tYW5hZ2VyX3Rlc3QucHkKQEAgLTY1LDcgKzY1LDggQEAgY2xhc3MgQ2hl Y2tGaWxlTWFuYWdlckZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAgICAgICAgIHNlbGYu cGFnZS5vcGVuX3F1ZXJ5X3Rvb2woKQogCiAgICAgZGVmIF9jcmVhdGVfbmV3X2ZpbGUoc2VsZik6 Ci0gICAgICAgIHNlbGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcihRdWVyeVRvb2xMb2NhdG9y c0Nzcy5idG5fc2F2ZSkuY2xpY2soKQorICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9jc3Nfc2Vs ZWN0b3IoUXVlcnlUb29sTG9jYXRvcnNDc3MuYnRuX3NhdmVfZmlsZSlcCisgICAgICAgICAgICAu Y2xpY2soKQogICAgICAgICAjIFNldCB0aGUgWFNTIHZhbHVlIGluIGlucHV0CiAgICAgICAgIHNl bGYucGFnZS5maW5kX2J5X2Nzc19zZWxlY3RvcignLmNoYW5nZV9maWxlX3R5cGVzJykKICAgICAg ICAgc2VsZi5wYWdlLmZpbGxfaW5wdXRfYnlfY3NzX3NlbGVjdG9yKCJpbnB1dCNmaWxlLWlucHV0 LXBhdGgiLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9sb2NhdG9ycy5w eSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvbG9jYXRvcnMucHkKaW5kZXggM2I1YTU0OWQu LjJiYWMzNzA4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL2xvY2F0b3Jz LnB5CisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvbG9jYXRvcnMucHkKQEAgLTEsNSAr MSw1IEBACiBjbGFzcyBRdWVyeVRvb2xMb2NhdG9yc0NzczoKLSAgICBidG5fc2F2ZSA9ICIjYnRu LXNhdmUiCisgICAgYnRuX3NhdmVfZmlsZSA9ICIjYnRuLXNhdmUtZmlsZSIKICAgICBidG5fZXhl Y3V0ZV9xdWVyeSA9ICIjYnRuLWZsYXNoIgogICAgIGJ0bl9xdWVyeV9kcm9wZG93biA9ICIjYnRu LXF1ZXJ5LWRyb3Bkb3duIgogICAgIGJ0bl9hdXRvX3JvbGxiYWNrID0gIiNidG4tYXV0by1yb2xs YmFjayIKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcXVlcnlfdG9vbF9q b3VybmV5X3Rlc3QucHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3F1ZXJ5X3Rvb2xfam91 cm5leV90ZXN0LnB5CmluZGV4IDc5ZjZiN2RiLi42ZDQxZmQxYyAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vZmVhdHVyZV90ZXN0cy9xdWVyeV90b29sX2pvdXJuZXlfdGVzdC5weQorKysgYi93ZWIv cGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3F1ZXJ5X3Rvb2xfam91cm5leV90ZXN0LnB5CkBAIC03LDYg KzcsNyBAQAogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAoraW1wb3J0IHN5cwogaW1wb3J0IHB5cGVy Y2xpcAogaW1wb3J0IHJhbmRvbQogCkBAIC0yOCwxMSArMjksMjQgQEAgY2xhc3MgUXVlcnlUb29s Sm91cm5leVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKICAgICBdCiAKICAgICB0ZXN0X3RhYmxlX25h bWUgPSAiIgorICAgIHRlc3RfZWRpdGFibGVfdGFibGVfbmFtZSA9ICIiCiAKICAgICBkZWYgYmVm b3JlKHNlbGYpOgogICAgICAgICBzZWxmLnRlc3RfdGFibGVfbmFtZSA9ICJ0ZXN0X3RhYmxlIiAr IHN0cihyYW5kb20ucmFuZGludCgxMDAwLCAzMDAwKSkKICAgICAgICAgdGVzdF91dGlscy5jcmVh dGVfdGFibGUoCiAgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi50ZXN0X2RiLCBzZWxmLnRl c3RfdGFibGVfbmFtZSkKKworICAgICAgICBzZWxmLnRlc3RfZWRpdGFibGVfdGFibGVfbmFtZSA9 ICJ0ZXN0X2VkaXRhYmxlX3RhYmxlIiArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHIocmFuZG9tLnJhbmRpbnQoMTAwMCwgMzAwMCkpCisgICAgICAgIGNyZWF0 ZV9zcWwgPSAnJycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JFQVRFIFRBQkxFICIl cyIgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtfY29sdW1uIE5VTUVSSUMg UFJJTUFSWSBLRVksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxfY29s dW1uIE5VTUVSSUMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJycnICUgc2VsZi50ZXN0X2VkaXRhYmxlX3RhYmxlX25hbWUKKyAg ICAgICAgdGVzdF91dGlscy5jcmVhdGVfdGFibGVfd2l0aF9xdWVyeSgKKyAgICAgICAgICAgIHNl bGYuc2VydmVyLCBzZWxmLnRlc3RfZGIsIGNyZWF0ZV9zcWwpCisKICAgICAgICAgc2VsZi5wYWdl LmFkZF9zZXJ2ZXIoc2VsZi5zZXJ2ZXIpCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKQEAgLTQw LDkgKzU0LDIxIEBAIGNsYXNzIFF1ZXJ5VG9vbEpvdXJuZXlUZXN0KEJhc2VGZWF0dXJlVGVzdCk6 CiAgICAgICAgIHNlbGYuX2V4ZWN1dGVfcXVlcnkoCiAgICAgICAgICAgICAiU0VMRUNUICogRlJP TSAlcyBPUkRFUiBCWSB2YWx1ZSAiICUgc2VsZi50ZXN0X3RhYmxlX25hbWUpCiAKKyAgICAgICAg cHJpbnQoIkNvcHkgcm93cy4uLiIsIGZpbGU9c3lzLnN0ZGVyciwgZW5kPSIiKQogICAgICAgICBz ZWxmLl90ZXN0X2NvcGllc19yb3dzKCkKKyAgICAgICAgcHJpbnQoIiBPSy4iLCBmaWxlPXN5cy5z dGRlcnIpCisKKyAgICAgICAgcHJpbnQoIkNvcHkgY29sdW1ucy4uLiIsIGZpbGU9c3lzLnN0ZGVy ciwgZW5kPSIiKQogICAgICAgICBzZWxmLl90ZXN0X2NvcGllc19jb2x1bW5zKCkKKyAgICAgICAg cHJpbnQoIiBPSy4iLCBmaWxlPXN5cy5zdGRlcnIpCisKKyAgICAgICAgcHJpbnQoIkhpc3Rvcnkg dGFiLi4uIiwgZmlsZT1zeXMuc3RkZXJyLCBlbmQ9IiIpCiAgICAgICAgIHNlbGYuX3Rlc3RfaGlz dG9yeV90YWIoKQorICAgICAgICBwcmludCgiIE9LLiIsIGZpbGU9c3lzLnN0ZGVycikKKworICAg ICAgICBwcmludCgiVXBkYXRhYmxlIHJlc3VsdHNldHMuLi4iLCBmaWxlPXN5cy5zdGRlcnIsIGVu ZD0iIikKKyAgICAgICAgc2VsZi5fdGVzdF91cGRhdGFibGVfcmVzdWx0c2V0KCkKKyAgICAgICAg cHJpbnQoIiBPSy4iLCBmaWxlPXN5cy5zdGRlcnIpCiAKICAgICBkZWYgX3Rlc3RfY29waWVzX3Jv d3Moc2VsZik6CiAgICAgICAgIHB5cGVyY2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJkIGNvbnRlbnRz IikKQEAgLTE2Miw2ICsxODgsMjcgQEAgY2xhc3MgUXVlcnlUb29sSm91cm5leVRlc3QoQmFzZUZl YXR1cmVUZXN0KToKICAgICAgICAgICAgICAgICAucGVyZm9ybSgpCiAgICAgICAgIHNlbGYuX2Fz c2VydF9jbGlja2FibGUocXVlcnlfd2VfbmVlZF90b19zY3JvbGxfdG8pCiAKKyAgICBkZWYgX3Rl c3RfdXBkYXRhYmxlX3Jlc3VsdHNldChzZWxmKToKKyAgICAgICAgc2VsZi5wYWdlLmNsaWNrX3Rh YigiUXVlcnkgRWRpdG9yIikKKworICAgICAgICAjIEluc2VydCBkYXRhIGludG8gdGVzdCB0YWJs ZQorICAgICAgICBzZWxmLl9fY2xlYXJfcXVlcnlfdG9vbCgpCisgICAgICAgIHNlbGYuX2V4ZWN1 dGVfcXVlcnkoCisgICAgICAgICAgICAiSU5TRVJUIElOVE8gJXMgVkFMVUVTICgxLCAxKSwgKDIs IDIpOyIKKyAgICAgICAgICAgICUgc2VsZi50ZXN0X2VkaXRhYmxlX3RhYmxlX25hbWUKKyAgICAg ICAgKQorCisgICAgICAgICMgU2VsZWN0IGFsbCBkYXRhIChjb250YWlucyB0aGUgcHJpbWFyeSBr ZXkgLT4gc2hvdWxkIGJlIGVkaXRhYmxlKQorICAgICAgICBzZWxmLl9fY2xlYXJfcXVlcnlfdG9v bCgpCisgICAgICAgIHF1ZXJ5ID0gIlNFTEVDVCBwa19jb2x1bW4sIG5vcm1hbF9jb2x1bW4gRlJP TSAlcyIgXAorICAgICAgICAgICAgICAgICUgc2VsZi50ZXN0X2VkaXRhYmxlX3RhYmxlX25hbWUK KyAgICAgICAgc2VsZi5fY2hlY2tfcXVlcnlfcmVzdWx0c19lZGl0YWJsZShxdWVyeSwgVHJ1ZSkK KworICAgICAgICAjIFNlbGVjdCBkYXRhIHdpdGhvdXQgcHJpbWFyeSBrZXlzIC0+IHNob3VsZCBu b3QgYmUgZWRpdGFibGUKKyAgICAgICAgc2VsZi5fX2NsZWFyX3F1ZXJ5X3Rvb2woKQorICAgICAg ICBxdWVyeSA9ICJTRUxFQ1Qgbm9ybWFsX2NvbHVtbiBGUk9NICVzIiAlIHNlbGYudGVzdF9lZGl0 YWJsZV90YWJsZV9uYW1lCisgICAgICAgIHNlbGYuX2NoZWNrX3F1ZXJ5X3Jlc3VsdHNfZWRpdGFi bGUocXVlcnksIEZhbHNlKQorCiAgICAgZGVmIF9fY2xlYXJfcXVlcnlfdG9vbChzZWxmKToKICAg ICAgICAgc2VsZi5wYWdlLmNsaWNrX2VsZW1lbnQoCiAgICAgICAgICAgICBzZWxmLnBhZ2UuZmlu ZF9ieV94cGF0aCgiLy8qW0BpZD0nYnRuLWNsZWFyLWRyb3Bkb3duJ10iKQpAQCAtMTc5LDYgKzIy Niw3IEBAIGNsYXNzIFF1ZXJ5VG9vbEpvdXJuZXlUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAgICAg ICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl90cmVlX2l0ZW0oJ0RhdGFiYXNlcycpCiAgICAgICAg IHNlbGYucGFnZS50b2dnbGVfb3Blbl90cmVlX2l0ZW0oc2VsZi50ZXN0X2RiKQogICAgICAgICBz ZWxmLnBhZ2Uub3Blbl9xdWVyeV90b29sKCkKKyAgICAgICAgc2VsZi5wYWdlLndhaXRfZm9yX3Nw aW5uZXJfdG9fZGlzYXBwZWFyKCkKIAogICAgIGRlZiBfZXhlY3V0ZV9xdWVyeShzZWxmLCBxdWVy eSk6CiAgICAgICAgIHNlbGYucGFnZS5maWxsX2NvZGVtaXJyb3JfYXJlYV93aXRoKHF1ZXJ5KQpA QCAtMTg4LDYgKzIzNiwzMyBAQCBjbGFzcyBRdWVyeVRvb2xKb3VybmV5VGVzdChCYXNlRmVhdHVy ZVRlc3QpOgogICAgIGRlZiBfYXNzZXJ0X2NsaWNrYWJsZShzZWxmLCBlbGVtZW50KToKICAgICAg ICAgc2VsZi5wYWdlLmNsaWNrX2VsZW1lbnQoZWxlbWVudCkKIAorICAgIGRlZiBfY2hlY2tfcXVl cnlfcmVzdWx0c19lZGl0YWJsZShzZWxmLCBxdWVyeSwgc2hvdWxkX2JlX2VkaXRhYmxlKToKKyAg ICAgICAgc2VsZi5fZXhlY3V0ZV9xdWVyeShxdWVyeSkKKyAgICAgICAgc2VsZi5wYWdlLndhaXRf Zm9yX3NwaW5uZXJfdG9fZGlzYXBwZWFyKCkKKworICAgICAgICAjIENoZWNrIGlmIHRoZSBmaXJz dCBjZWxsIGluIHRoZSBmaXJzdCByb3cgaXMgZWRpdGFibGUKKyAgICAgICAgaXNfZWRpdGFibGUg PSBzZWxmLl9jaGVja19jZWxsX2VkaXRhYmxlKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo aXNfZWRpdGFibGUsIHNob3VsZF9iZV9lZGl0YWJsZSkKKyAgICAgICAgIyBDaGVjayB0aGF0IG5l dyByb3dzIGNhbm5vdCBiZSBhZGRlZAorICAgICAgICBjYW5fYWRkX3Jvd3MgPSBzZWxmLl9jaGVj a19jYW5fYWRkX3JvdygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FuX2FkZF9yb3dzLCBz aG91bGRfYmVfZWRpdGFibGUpCisKKyAgICBkZWYgX2NoZWNrX2NlbGxfZWRpdGFibGUoc2VsZiwg Y2VsbF9pbmRleCk6CisgICAgICAgIHhwYXRoID0gJy8vZGl2W2NvbnRhaW5zKEBjbGFzcywgInNs aWNrLWNlbGwiKSBhbmQgJyBcCisgICAgICAgICAgICAgICAgJ2NvbnRhaW5zKEBjbGFzcywgInIn ICsgc3RyKGNlbGxfaW5kZXgpICsgJyIpXScKKyAgICAgICAgY2VsbF9lbCA9IHNlbGYucGFnZS5m aW5kX2J5X3hwYXRoKHhwYXRoKQorICAgICAgICBjZWxsX2NsYXNzZXMgPSBjZWxsX2VsLmdldF9h dHRyaWJ1dGUoJ2NsYXNzJykKKyAgICAgICAgY2VsbF9jbGFzc2VzID0gY2VsbF9jbGFzc2VzLnNw bGl0KCIgIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnZWRpdGFibGUnIGluIGNlbGxfY2xh c3NlcykKKyAgICAgICAgQWN0aW9uQ2hhaW5zKHNlbGYuZHJpdmVyKS5kb3VibGVfY2xpY2soY2Vs bF9lbCkucGVyZm9ybSgpCisgICAgICAgIGNlbGxfY2xhc3NlcyA9IGNlbGxfZWwuZ2V0X2F0dHJp YnV0ZSgnY2xhc3MnKQorICAgICAgICBjZWxsX2NsYXNzZXMgPSBjZWxsX2NsYXNzZXMuc3BsaXQo IiAiKQorICAgICAgICByZXR1cm4gJ2VkaXRhYmxlJyBpbiBjZWxsX2NsYXNzZXMKKworICAgIGRl ZiBfY2hlY2tfY2FuX2FkZF9yb3coc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnBhZ2UuY2hl Y2tfaWZfZWxlbWVudF9leGlzdF9ieV94cGF0aCgKKyAgICAgICAgICAgICcvL2Rpdltjb250YWlu cyhAY2xhc3MsICJuZXctcm93IildJykKKwogICAgIGRlZiBhZnRlcihzZWxmKToKICAgICAgICAg c2VsZi5wYWdlLmNsb3NlX3F1ZXJ5X3Rvb2woKQogICAgICAgICBzZWxmLnBhZ2UucmVtb3ZlX3Nl cnZlcihzZWxmLnNlcnZlcikKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMv dmlld19kYXRhX2RtbF9xdWVyaWVzLnB5IGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy92aWV3 X2RhdGFfZG1sX3F1ZXJpZXMucHkKaW5kZXggZTQ3MTQ1ZTIuLjdkZTkzNzkyIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3ZpZXdfZGF0YV9kbWxfcXVlcmllcy5weQorKysg Yi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3ZpZXdfZGF0YV9kbWxfcXVlcmllcy5weQpAQCAt MzA0LDcgKzMwNCw3IEBAIENSRUFURSBUQUJMRSBwdWJsaWMubm9uaW50cGtleQogICAgICAgICAg ICAgKQogICAgICAgICAgICAgdGltZS5zbGVlcCgwLjIpCiAgICAgICAgICAgICBzZWxmLl91cGRh dGVfY2VsbChjZWxsX3hwYXRoLCBkYXRhW3N0cihpZHgpXSkKLSAgICAgICAgc2VsZi5wYWdlLmZp bmRfYnlfaWQoImJ0bi1zYXZlIikuY2xpY2soKSAgIyBTYXZlIGRhdGEKKyAgICAgICAgc2VsZi5w YWdlLmZpbmRfYnlfaWQoImJ0bi1zYXZlLWRhdGEiKS5jbGljaygpICAjIFNhdmUgZGF0YQogICAg ICAgICAjIFRoZXJlIHNob3VsZCBiZSBzb21lIGRlbGF5IGFmdGVyIHNhdmUgYnV0dG9uIGlzIGNs aWNrZWQsIGFzIGl0CiAgICAgICAgICMgdGFrZXMgc29tZSB0aW1lIHRvIGNvbXBsZXRlIHNhdmUg YWpheCBjYWxsIG90aGVyd2lzZSBkaXNjYXJkIHVuc2F2ZWQKICAgICAgICAgIyBjaGFuZ2VzIGRp YWxvZyB3aWxsIGFwcGVhciBpZiB3ZSB0cnkgdG8gZXhlY3V0ZSBxdWVyeSBiZWZvcmUgcHJldmlv dXMKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9rZXlib2FyZF9zaG9ydGN1dHMu anMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hvcnRjdXRzLmpzCmluZGV4IDEw MWFmZjViLi5iMGM5MjYzNCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJv YXJkX3Nob3J0Y3V0cy5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hv cnRjdXRzLmpzCkBAIC0yMDUsNiArMjA1LDcgQEAgZnVuY3Rpb24ga2V5Ym9hcmRTaG9ydGN1dHNR dWVyeVRvb2woCiAgIGxldCB0b2dnbGVDYXNlS2V5cyA9IHNxbEVkaXRvckNvbnRyb2xsZXIucHJl ZmVyZW5jZXMudG9nZ2xlX2Nhc2U7CiAgIGxldCBjb21taXRLZXlzID0gc3FsRWRpdG9yQ29udHJv bGxlci5wcmVmZXJlbmNlcy5jb21taXRfdHJhbnNhY3Rpb247CiAgIGxldCByb2xsYmFja0tleXMg PSBzcWxFZGl0b3JDb250cm9sbGVyLnByZWZlcmVuY2VzLnJvbGxiYWNrX3RyYW5zYWN0aW9uOwor ICBsZXQgc2F2ZURhdGFLZXlzID0gc3FsRWRpdG9yQ29udHJvbGxlci5wcmVmZXJlbmNlcy5zYXZl X2RhdGE7CiAKICAgaWYgKHRoaXMudmFsaWRhdGVTaG9ydGN1dEtleXMoZXhlY3V0ZUtleXMsIGV2 ZW50KSkgewogICAgIHRoaXMuX3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKQEAgLTIzMyw2 ICsyMzQsOSBAQCBmdW5jdGlvbiBrZXlib2FyZFNob3J0Y3V0c1F1ZXJ5VG9vbCgKICAgICAgIHRo aXMuX3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMu ZXhlY3V0ZVJvbGxiYWNrKHNxbEVkaXRvckNvbnRyb2xsZXIpOwogICAgIH0KKyAgfSBlbHNlIGlm ICh0aGlzLnZhbGlkYXRlU2hvcnRjdXRLZXlzKHNhdmVEYXRhS2V5cywgZXZlbnQpKSB7CisgICAg dGhpcy5fc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpOworICAgIHF1ZXJ5VG9vbEFjdGlvbnMu c2F2ZURhdGFDaGFuZ2VzKHNxbEVkaXRvckNvbnRyb2xsZXIpOwogICB9IGVsc2UgaWYgKCgKICAg ICAodGhpcy5pc01hYygpICYmIGV2ZW50Lm1ldGFLZXkpIHx8CiAgICAgICghdGhpcy5pc01hYygp ICYmIGV2ZW50LmN0cmxLZXkpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3Fs ZWRpdG9yL2NhbGxfcmVuZGVyX2FmdGVyX3BvbGwuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMv c3FsZWRpdG9yL2NhbGxfcmVuZGVyX2FmdGVyX3BvbGwuanMKaW5kZXggM2YzMmQ1NzEuLjU3ZDYw NTM3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2NhbGxfcmVu ZGVyX2FmdGVyX3BvbGwuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9j YWxsX3JlbmRlcl9hZnRlcl9wb2xsLmpzCkBAIC0zNyw3ICszNyw4IEBAIGV4cG9ydCBmdW5jdGlv biBjYWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRvciwgYWxlcnRpZnksIHJlcykgewogICAgIGNv bnN0IG1zZyA9IHNwcmludGYoCiAgICAgICBnZXR0ZXh0KCdRdWVyeSByZXR1cm5lZCBzdWNjZXNz ZnVsbHkgaW4gJXMuJyksIHNxbEVkaXRvci50b3RhbF90aW1lKTsKICAgICByZXMucmVzdWx0ICs9 ICdcblxuJyArIG1zZzsKLSAgICBzcWxFZGl0b3IudXBkYXRlX21zZ19oaXN0b3J5KHRydWUsIHJl cy5yZXN1bHQsIGZhbHNlKTsKKyAgICBzcWxFZGl0b3IudXBkYXRlX21zZ19oaXN0b3J5KHRydWUs IHJlcy5yZXN1bHQsIHRydWUpOworICAgIHNxbEVkaXRvci5yZXNldF9kYXRhX3N0b3JlKCk7CiAg ICAgaWYgKGlzTm90aWZpY2F0aW9uRW5hYmxlZChzcWxFZGl0b3IpKSB7CiAgICAgICBhbGVydGlm eS5zdWNjZXNzKG1zZywgc3FsRWRpdG9yLmluZm9fbm90aWZpZXJfdGltZW91dCk7CiAgICAgfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2Fj dGlvbnMuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0 aW9ucy5qcwppbmRleCBkM2Y2ZDllMS4uMThlMTVlY2IgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zLmpzCisrKyBiL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zLmpzCkBAIC0xNTYsNiAr MTU2LDExIEBAIGxldCBxdWVyeVRvb2xBY3Rpb25zID0gewogICAgIHNxbEVkaXRvckNvbnRyb2xs ZXIuc3BlY2lhbF9zcWwgPSAnUk9MTEJBQ0s7JzsKICAgICBzZWxmLmV4ZWN1dGVRdWVyeShzcWxF ZGl0b3JDb250cm9sbGVyKTsKICAgfSwKKworICBzYXZlRGF0YUNoYW5nZXM6IGZ1bmN0aW9uIChz cWxFZGl0b3JDb250cm9sbGVyKSB7CisgICAgc3FsRWRpdG9yQ29udHJvbGxlci5jbG9zZV9vbl9z YXZlID0gZmFsc2U7CisgICAgc3FsRWRpdG9yQ29udHJvbGxlci5zYXZlX2RhdGEoKTsKKyAgfSwK IH07CiAKIG1vZHVsZS5leHBvcnRzID0gcXVlcnlUb29sQWN0aW9uczsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5qcyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5q cwppbmRleCA3ZmQxOWI0MC4uNDkxZjBjYTkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5qcworKysgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMuanMKQEAgLTI5LDcg KzI5LDcgQEAgZnVuY3Rpb24gdXBkYXRlVUlQcmVmZXJlbmNlcyhzcWxFZGl0b3IpIHsKICAgICAu YXR0cigndGl0bGUnLCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoJ09wZW4gRmlsZScscHJlZmVy ZW5jZXMuYnRuX29wZW5fZmlsZSkpCiAgICAgLmF0dHIoJ2FjY2Vzc2tleScsIHNob3J0Y3V0X2tl eShwcmVmZXJlbmNlcy5idG5fb3Blbl9maWxlKSk7CiAKLSAgJGVsLmZpbmQoJyNidG4tc2F2ZScp CisgICRlbC5maW5kKCcjYnRuLXNhdmUtZmlsZScpCiAgICAgLmF0dHIoJ3RpdGxlJywgc2hvcnRj dXRfYWNjZXNza2V5X3RpdGxlKCdTYXZlIEZpbGUnLHByZWZlcmVuY2VzLmJ0bl9zYXZlX2ZpbGUp KQogICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBzaG9ydGN1dF9rZXkocHJlZmVyZW5jZXMuYnRuX3Nh dmVfZmlsZSkpOwogCkBAIC05Nyw2ICs5NywxMCBAQCBmdW5jdGlvbiB1cGRhdGVVSVByZWZlcmVu Y2VzKHNxbEVkaXRvcikgewogICAgIC5hdHRyKCd0aXRsZScsCiAgICAgICBzaG9ydGN1dF90aXRs ZSgnRG93bmxvYWQgYXMgQ1NWJyxwcmVmZXJlbmNlcy5kb3dubG9hZF9jc3YpKTsKIAorICAkZWwu ZmluZCgnI2J0bi1zYXZlLWRhdGEnKQorICAgIC5hdHRyKCd0aXRsZScsCisgICAgICBzaG9ydGN1 dF90aXRsZSgnU2F2ZSBEYXRhIENoYW5nZXMnLHByZWZlcmVuY2VzLnNhdmVfZGF0YSkpOworCiAg ICRlbC5maW5kKCcjYnRuLWNvbW1pdCcpCiAgICAgLmF0dHIoJ3RpdGxlJywKICAgICAgIHNob3J0 Y3V0X3RpdGxlKCdDb21taXQnLHByZWZlcmVuY2VzLmNvbW1pdF90cmFuc2FjdGlvbikpOwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2FsZXJ0aWZ5Lm92ZXJyaWRlcy5zY3Nz IGIvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2FsZXJ0aWZ5Lm92ZXJyaWRlcy5zY3NzCmluZGV4 IDQxM2UwOWU3Li5kNDNiZWNkNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3Mv X2FsZXJ0aWZ5Lm92ZXJyaWRlcy5zY3NzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9zY3NzL19h bGVydGlmeS5vdmVycmlkZXMuc2NzcwpAQCAtNTYsNyArNTYsNyBAQAogICAgIGJvdHRvbTogJGZv b3Rlci1oZWlnaHQtY2FsYyAhaW1wb3J0YW50OwogICB9CiAgIC5hanMtd3JhcC10ZXh0IHsKLSAg ICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CisgICAgd29yZC1icmVhazogbm9ybWFsOwogICAgIHdv cmQtd3JhcDogYnJlYWstd29yZDsKICAgfQogICAvKiBSZW1vdmVzIHBhZGRpbmcgZnJvbSBhbGVy dGlmeSBmb290ZXIgKi8KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3Rl bXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQv dGVtcGxhdGVzL2RhdGFncmlkL2luZGV4Lmh0bWwKaW5kZXggNjViNmM0ZWMuLmIxYmU1MTRkIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZW1wbGF0ZXMvZGF0YWdyaWQv aW5kZXguaHRtbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZW1wbGF0ZXMvZGF0 YWdyaWQvaW5kZXguaHRtbApAQCAtMjEsNyArMjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAg ICAgdGFiaW5kZXg9IjAiPgogICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZm9s ZGVyLW9wZW4tbyBzcWwtaWNvbi1sZyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4KICAgICAgICAg ICAgICAgICA8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tc2F2ZSIg dHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5IgorICAgICAgICAg ICAgICAgIDxidXR0b24gaWQ9ImJ0bi1zYXZlLWZpbGUiIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0 biBidG4tc20gYnRuLXNlY29uZGFyeSIKICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPSIi CiAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NrZXk9IiIKICAgICAgICAgICAgICAgICAg ICAgICAgIGRpc2FibGVkPgpAQCAtNDQsNiArNDQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAg PC9saT4KICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgPC9kaXY+CisgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAgbXItMSIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9 IiI+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXNhdmUtZGF0YSIgdHlwZT0iYnV0 dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5IgorICAgICAgICAgICAgICAgICAg ICAgICAgdGl0bGU9IiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2tleT0iIgorICAg ICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiIGRpc2FibGVkPgorICAgICAgICAgICAg ICAgICAgICA8aSBjbGFzcz0iaWNvbi1zYXZlLWRhdGEtY2hhbmdlcyBzcWwtaWNvbi1sZyIgYXJp YS1oaWRkZW49InRydWUiPjwvaT4KKyAgICAgICAgICAgICAgICA8L2J1dHRvbj4KKyAgICAgICAg ICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIG1yLTEiIHJvbGU9 Imdyb3VwIiBhcmlhLWxhYmVsPSIiPgogICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1m aW5kIiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnkiIHRpdGxl PSJ7eyBfKCdGaW5kIChDdHJsL0NtZCtGKScpIH19Ij4KICAgICAgICAgICAgICAgICAgICAgPGkg Y2xhc3M9ImZhIGZhLXNlYXJjaCBzcWwtaWNvbi1sZyIgYXJpYS1oaWRkZW49InRydWUiIHRhYmlu ZGV4PSIwIj48L2k+CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvX19p bml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvX19pbml0X18ucHkKaW5kZXgg MWQyNzk2ZWMuLjZkNGU0NmI2IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0 b3IvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19faW5pdF9f LnB5CkBAIC0zNTIsNiArMzUyLDggQEAgZGVmIHBvbGwodHJhbnNfaWQpOgogICAgIHJzZXQgPSBO b25lCiAgICAgaGFzX29pZHMgPSBGYWxzZQogICAgIG9pZHMgPSBOb25lCisgICAgYWRkaXRpb25h bF9tZXNzYWdlcyA9IE5vbmUKKyAgICBub3RpZmllcyA9IE5vbmUKIAogICAgICMgQ2hlY2sgdGhl IHRyYW5zYWN0aW9uIGFuZCBjb25uZWN0aW9uIHN0YXR1cwogICAgIHN0YXR1cywgZXJyb3JfbXNn LCBjb25uLCB0cmFuc19vYmosIHNlc3Npb25fb2JqID0gXApAQCAtMzkwLDYgKzM5MiwyMiBAQCBk ZWYgcG9sbCh0cmFuc19pZCk6CiAKICAgICAgICAgICAgIHN0LCByZXN1bHQgPSBjb25uLmFzeW5j X2ZldGNobWFueV8yZGFycmF5KE9OX0RFTUFORF9SRUNPUkRfQ09VTlQpCiAKKyAgICAgICAgICAg ICMgVGhlcmUgbWF5IGJlIGFkZGl0aW9uYWwgbWVzc2FnZXMgZXZlbiBpZiByZXN1bHQgaXMgcHJl c2VudAorICAgICAgICAgICAgIyBlZzogRnVuY3Rpb24gY2FuIHByb3ZpZGUgcmVzdWx0IGFzIHdl bGwgYXMgUkFJU0UgbWVzc2FnZXMKKyAgICAgICAgICAgIG1lc3NhZ2VzID0gY29ubi5tZXNzYWdl cygpCisgICAgICAgICAgICBpZiBtZXNzYWdlczoKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFs X21lc3NhZ2VzID0gJycuam9pbihtZXNzYWdlcykKKyAgICAgICAgICAgIG5vdGlmaWVzID0gY29u bi5nZXRfbm90aWZpZXMoKQorCisgICAgICAgICAgICAjIFByb2NlZHVyZS9GdW5jdGlvbiBvdXRw dXQgbWF5IGNvbWVzIGluIHRoZSBmb3JtIG9mIE5vdGljZXMKKyAgICAgICAgICAgICMgZnJvbSB0 aGUgZGF0YWJhc2Ugc2VydmVyLCBzbyB3ZSBuZWVkIHRvIGFwcGVuZCB0aG9zZSBvdXRwdXRzCisg ICAgICAgICAgICAjIHdpdGggdGhlIG9yaWdpbmFsIHJlc3VsdC4KKyAgICAgICAgICAgIGlmIHJl c3VsdCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbm4uc3RhdHVzX21lc3Nh Z2UoKQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gJ1NFTEVDVCAxJyBvciByZXN1bHQg IT0gJ1NFTEVDVCAwJykgYW5kIFwKKyAgICAgICAgICAgICAgICAgICByZXN1bHQgaXMgbm90IE5v bmUgYW5kIGFkZGl0aW9uYWxfbWVzc2FnZXM6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9 IGFkZGl0aW9uYWxfbWVzc2FnZXMgKyByZXN1bHQKKwogICAgICAgICAgICAgaWYgc3Q6CiAgICAg ICAgICAgICAgICAgaWYgJ3ByaW1hcnlfa2V5cycgaW4gc2Vzc2lvbl9vYmo6CiAgICAgICAgICAg ICAgICAgICAgIHByaW1hcnlfa2V5cyA9IHNlc3Npb25fb2JqWydwcmltYXJ5X2tleXMnXQpAQCAt NDA2LDEwICs0MjQsMjIgQEAgZGVmIHBvbGwodHJhbnNfaWQpOgogICAgICAgICAgICAgICAgICkK ICAgICAgICAgICAgICAgICBzZXNzaW9uX29ialsnY2xpZW50X3ByaW1hcnlfa2V5J10gPSBjbGll bnRfcHJpbWFyeV9rZXkKIAotICAgICAgICAgICAgICAgIGlmIGNvbHVtbnNfaW5mbyBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgICAgICAjIElmIHRyYW5zX29iaiBpcyBhIFF1ZXJ5VG9vbENvbW1h bmQgdGhlbiBjaGVjayBmb3IgdXBkYXRhYmxlCisgICAgICAgICAgICAgICAgIyByZXN1bHRzZXRz IGFuZCBwcmltYXJ5IGtleXMKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHRyYW5zX29i aiwgUXVlcnlUb29sQ29tbWFuZCk6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zX29iai5jaGVj a191cGRhdGFibGVfcmVzdWx0c19wa2V5cygpCisgICAgICAgICAgICAgICAgICAgIHBrX25hbWVz LCBwcmltYXJ5X2tleXMgPSB0cmFuc19vYmouZ2V0X3ByaW1hcnlfa2V5cygpCisgICAgICAgICAg ICAgICAgICAgICMgSWYgcHJpbWFyeV9rZXlzIGV4aXN0LCBhZGQgdGhlbSB0byB0aGUgc2Vzc2lv bl9vYmogdG8KKyAgICAgICAgICAgICAgICAgICAgIyBhbGxvdyBmb3Igc2F2aW5nIGFueSBjaGFu Z2VzIHRvIHRoZSBkYXRhCisgICAgICAgICAgICAgICAgICAgIGlmIHByaW1hcnlfa2V5cyBpcyBu b3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fb2JqWydwcmltYXJ5X2tl eXMnXSA9IHByaW1hcnlfa2V5cwogCi0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfb2JqID0g cGlja2xlLmxvYWRzKHNlc3Npb25fb2JqWydjb21tYW5kX29iaiddKQotICAgICAgICAgICAgICAg ICAgICBpZiBoYXNhdHRyKGNvbW1hbmRfb2JqLCAnb2JqX2lkJyk6CisgICAgICAgICAgICAgICAg aWYgY29sdW1uc19pbmZvIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIElmIGl0 IGlzIGEgUXVlcnlUb29sQ29tbWFuZCB0aGF0IGhhcyBvYmpfaWQgYXR0cmlidXRlCisgICAgICAg ICAgICAgICAgICAgICMgdGhlbiBpdCBzaG91bGQgYWxzbyBiZSBlZGl0YWJsZQorICAgICAgICAg ICAgICAgICAgICBpZiBoYXNhdHRyKHRyYW5zX29iaiwgJ29ial9pZCcpIGFuZCBcCisgICAgICAg ICAgICAgICAgICAgICAgICAobm90IGlzaW5zdGFuY2UodHJhbnNfb2JqLCBRdWVyeVRvb2xDb21t YW5kKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zX29iai5jYW5fZWRpdCgpKToK ICAgICAgICAgICAgICAgICAgICAgICAgICMgR2V0IHRoZSB0ZW1wbGF0ZSBwYXRoIGZvciB0aGUg Y29sdW1uCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9wYXRoID0gJ2NvbHVtbnMv c3FsLyN7MH0jJy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5tYW5h Z2VyLnZlcnNpb24KQEAgLTQxNyw3ICs0NDcsNyBAQCBkZWYgcG9sbCh0cmFuc19pZCk6CiAKICAg ICAgICAgICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgJ25vZGVzLnNxbCddKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWQ9Y29tbWFuZF9vYmoub2JqX2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10cmFuc19vYmoub2JqX2lkLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhhc19vaWRzPVRydWUKICAgICAgICAgICAgICAgICAgICAgICAg ICkKICAgICAgICAgICAgICAgICAgICAgICAgICMgcm93cyB3aXRoIGF0dHJpYnV0ZSBub3RfbnVs bApAQCAtNDkyLDI2ICs1MjIsOCBAQCBkZWYgcG9sbCh0cmFuc19pZCk6CiAgICAgICAgIHN0YXR1 cyA9ICdOb3RDb25uZWN0ZWQnCiAgICAgICAgIHJlc3VsdCA9IGVycm9yX21zZwogCi0gICAgIyBU aGVyZSBtYXkgYmUgYWRkaXRpb25hbCBtZXNzYWdlcyBldmVuIGlmIHJlc3VsdCBpcyBwcmVzZW50 Ci0gICAgIyBlZzogRnVuY3Rpb24gY2FuIHByb3ZpZGUgcmVzdWx0IGFzIHdlbGwgYXMgUkFJU0Ug bWVzc2FnZXMKLSAgICBhZGRpdGlvbmFsX21lc3NhZ2VzID0gTm9uZQotICAgIG5vdGlmaWVzID0g Tm9uZQotICAgIGlmIHN0YXR1cyA9PSAnU3VjY2Vzcyc6Ci0gICAgICAgIG1lc3NhZ2VzID0gY29u bi5tZXNzYWdlcygpCi0gICAgICAgIGlmIG1lc3NhZ2VzOgotICAgICAgICAgICAgYWRkaXRpb25h bF9tZXNzYWdlcyA9ICcnLmpvaW4obWVzc2FnZXMpCi0gICAgICAgIG5vdGlmaWVzID0gY29ubi5n ZXRfbm90aWZpZXMoKQotCi0gICAgIyBQcm9jZWR1cmUvRnVuY3Rpb24gb3V0cHV0IG1heSBjb21l cyBpbiB0aGUgZm9ybSBvZiBOb3RpY2VzIGZyb20gdGhlCi0gICAgIyBkYXRhYmFzZSBzZXJ2ZXIs IHNvIHdlIG5lZWQgdG8gYXBwZW5kIHRob3NlIG91dHB1dHMgd2l0aCB0aGUKLSAgICAjIG9yaWdp bmFsIHJlc3VsdC4KLSAgICBpZiBzdGF0dXMgPT0gJ1N1Y2Nlc3MnIGFuZCByZXN1bHQgaXMgTm9u ZToKLSAgICAgICAgcmVzdWx0ID0gY29ubi5zdGF0dXNfbWVzc2FnZSgpCi0gICAgICAgIGlmIChy ZXN1bHQgIT0gJ1NFTEVDVCAxJyBvciByZXN1bHQgIT0gJ1NFTEVDVCAwJykgYW5kIFwKLSAgICAg ICAgICAgcmVzdWx0IGlzIG5vdCBOb25lIGFuZCBhZGRpdGlvbmFsX21lc3NhZ2VzOgotICAgICAg ICAgICAgcmVzdWx0ID0gYWRkaXRpb25hbF9tZXNzYWdlcyArIHJlc3VsdAotCiAgICAgdHJhbnNh Y3Rpb25fc3RhdHVzID0gY29ubi50cmFuc2FjdGlvbl9zdGF0dXMoKQorCiAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZSgKICAgICAgICAgZGF0YT17CiAgICAgICAgICAgICAnc3RhdHVzJzog c3RhdHVzLCAncmVzdWx0JzogcmVzdWx0LApAQCAtNzAwLDcgKzcxMiw4IEBAIGRlZiBzYXZlKHRy YW5zX2lkKToKICAgICAgICB0cmFuc19vYmogaXMgbm90IE5vbmUgYW5kIHNlc3Npb25fb2JqIGlz IG5vdCBOb25lOgogCiAgICAgICAgICMgSWYgdGhlcmUgaXMgbm8gcHJpbWFyeSBrZXkgZm91bmQg dGhlbiByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24uCi0gICAgICAgIGlmIChsZW4oc2Vzc2lvbl9v YmpbJ3ByaW1hcnlfa2V5cyddKSA8PSAwIG9yCisgICAgICAgIGlmICgncHJpbWFyeV9rZXlzJyBu b3QgaW4gc2Vzc2lvbl9vYmogb3IKKyAgICAgICAgICAgbGVuKHNlc3Npb25fb2JqWydwcmltYXJ5 X2tleXMnXSkgPD0gMCBvcgogICAgICAgICAgICBsZW4oY2hhbmdlZF9kYXRhKSA8PSAwKSBhbmQg XAogICAgICAgICAgICAnaGFzX29pZHMnIG5vdCBpbiBzZXNzaW9uX29iajoKICAgICAgICAgICAg IHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCkBAIC03MTMsMzIgKzcyNiwzOCBAQCBkZWYgc2F2 ZSh0cmFuc19pZCk6CiAKICAgICAgICAgbWFuYWdlciA9IGdldF9kcml2ZXIoCiAgICAgICAgICAg ICBQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKHRyYW5zX29iai5zaWQpCi0g ICAgICAgIGRlZmF1bHRfY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihkaWQ9dHJhbnNfb2JqLmRp ZCkKKyAgICAgICAgaWYgaGFzYXR0cih0cmFuc19vYmosICdjb25uX2lkJyk6CisgICAgICAgICAg ICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD10cmFuc19vYmouZGlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uX2lkPXRyYW5zX29iai5jb25uX2lkKQor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihkaWQ9 dHJhbnNfb2JqLmRpZCkgICMgZGVmYXVsdCBjb25uZWN0aW9uCiAKICAgICAgICAgIyBDb25uZWN0 IHRvIHRoZSBTZXJ2ZXIgaWYgbm90IGNvbm5lY3RlZC4KLSAgICAgICAgaWYgbm90IGRlZmF1bHRf Y29ubi5jb25uZWN0ZWQoKToKLSAgICAgICAgICAgIHN0YXR1cywgbXNnID0gZGVmYXVsdF9jb25u LmNvbm5lY3QoKQorICAgICAgICBpZiBub3QgY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAg IHN0YXR1cywgbXNnID0gY29ubi5jb25uZWN0KCkKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKICAgICAgICAgICAg ICAgICAgICAgZGF0YT17J3N0YXR1cyc6IHN0YXR1cywgJ3Jlc3VsdCc6IHUie30iLmZvcm1hdCht c2cpfQogICAgICAgICAgICAgICAgICkKLQotICAgICAgICBzdGF0dXMsIHJlcywgcXVlcnlfcmVz LCBfcm93aWQgPSB0cmFuc19vYmouc2F2ZSgKKyAgICAgICAgc3RhdHVzLCByZXMsIHF1ZXJ5X3Jl cywgX3Jvd2lkLCBpc19jb21taXRfcmVxdWlyZWQgPSB0cmFuc19vYmouc2F2ZSgKICAgICAgICAg ICAgIGNoYW5nZWRfZGF0YSwKICAgICAgICAgICAgIHNlc3Npb25fb2JqWydjb2x1bW5zX2luZm8n XSwKICAgICAgICAgICAgIHNlc3Npb25fb2JqWydjbGllbnRfcHJpbWFyeV9rZXknXSwKLSAgICAg ICAgICAgIGRlZmF1bHRfY29ubikKKyAgICAgICAgICAgIGNvbm4pCiAgICAgZWxzZToKICAgICAg ICAgc3RhdHVzID0gRmFsc2UKICAgICAgICAgcmVzID0gZXJyb3JfbXNnCiAgICAgICAgIHF1ZXJ5 X3JlcyA9IE5vbmUKKyAgICAgICAgX3Jvd2lkID0gTm9uZQorICAgICAgICBpc19jb21taXRfcmVx dWlyZWQgPSBOb25lCiAKICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAogICAgICAgICBk YXRhPXsKICAgICAgICAgICAgICdzdGF0dXMnOiBzdGF0dXMsCiAgICAgICAgICAgICAncmVzdWx0 JzogcmVzLAogICAgICAgICAgICAgJ3F1ZXJ5X3Jlc3VsdCc6IHF1ZXJ5X3JlcywKLSAgICAgICAg ICAgICdfcm93aWQnOiBfcm93aWQKKyAgICAgICAgICAgICdfcm93aWQnOiBfcm93aWQsCisgICAg ICAgICAgICAnaXNfY29tbWl0X3JlcXVpcmVkJzogaXNfY29tbWl0X3JlcXVpcmVkCiAgICAgICAg IH0KICAgICApCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9jb21t YW5kLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL2NvbW1hbmQucHkKaW5kZXggYTA2 YzJjN2YuLjA4ZjAyMzEwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv Y29tbWFuZC5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvY29tbWFuZC5weQpA QCAtMTksNiArMTksMTAgQEAgZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlCiBmcm9t IGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQKIGZyb20gcGdhZG1pbi51dGlscy5hamF4IGlt cG9ydCBmb3JiaWRkZW4KIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2 ZXIKK2Zyb20gcGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMuY29uc3RhbnRfZGVmaW5pdGlv biBpbXBvcnQgQVNZTkNfT0sKK2Zyb20gcGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMuaXNf cXVlcnlfcmVzdWx0c2V0X3VwZGF0YWJsZSBcCisgICAgaW1wb3J0IGlzX3F1ZXJ5X3Jlc3VsdHNl dF91cGRhdGFibGUKK2Zyb20gcGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMuc2F2ZV9jaGFu Z2VkX2RhdGEgaW1wb3J0IHNhdmVfY2hhbmdlZF9kYXRhCiAKIGZyb20gY29uZmlnIGltcG9ydCBQ R19ERUZBVUxUX0RSSVZFUgogCkBAIC02NjgsMjY5ICs2NzIsMTEgQEAgY2xhc3MgVGFibGVDb21t YW5kKEdyaWRDb21tYW5kKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNvbm4gPSBkZWZh dWx0X2Nvbm4KIAotICAgICAgICBzdGF0dXMgPSBGYWxzZQotICAgICAgICByZXMgPSBOb25lCi0g ICAgICAgIHF1ZXJ5X3JlcyA9IGRpY3QoKQotICAgICAgICBjb3VudCA9IDAKLSAgICAgICAgbGlz dF9vZl9yb3dpZCA9IFtdCi0gICAgICAgIG9wZXJhdGlvbnMgPSAoJ2FkZGVkJywgJ3VwZGF0ZWQn LCAnZGVsZXRlZCcpCi0gICAgICAgIGxpc3Rfb2Zfc3FsID0ge30KLSAgICAgICAgX3Jvd2lkID0g Tm9uZQotCi0gICAgICAgIHBnYWRtaW5fYWxpYXMgPSB7Ci0gICAgICAgICAgICBjb2xfbmFtZTog Y29sX2luZm9bJ3BnYWRtaW5fYWxpYXMnXQotICAgICAgICAgICAgZm9yIGNvbF9uYW1lLCBjb2xf aW5mbyBpbiBjb2x1bW5zX2luZm8KLSAgICAgICAgICAgIC5pdGVtcygpCi0gICAgICAgIH0KLSAg ICAgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKLQotICAgICAgICAgICAgIyBTdGFydCB0aGUgdHJh bnNhY3Rpb24KLSAgICAgICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCdCRUdJTjsnKQotCi0gICAg ICAgICAgICAjIEl0ZXJhdGUgdG90YWwgbnVtYmVyIG9mIHJlY29yZHMgdG8gYmUgdXBkYXRlZC9p bnNlcnRlZAotICAgICAgICAgICAgZm9yIG9mX3R5cGUgaW4gY2hhbmdlZF9kYXRhOgotICAgICAg ICAgICAgICAgICMgTm8gbmVlZCB0byBnbyBmdXJ0aGVyIGlmIGl0cyBub3QgYWRkL3VwZGF0ZS9k ZWxldGUgb3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgaWYgb2ZfdHlwZSBub3QgaW4gb3BlcmF0 aW9uczoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjIGlm IG5vIGRhdGEgdG8gYmUgc2F2ZSB0aGVuIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgbGVu KGNoYW5nZWRfZGF0YVtvZl90eXBlXSkgPCAxOgotICAgICAgICAgICAgICAgICAgICBjb250aW51 ZQotCi0gICAgICAgICAgICAgICAgY29sdW1uX3R5cGUgPSB7fQotICAgICAgICAgICAgICAgIGNv bHVtbl9kYXRhID0ge30KLSAgICAgICAgICAgICAgICBmb3IgZWFjaF9jb2wgaW4gY29sdW1uc19p bmZvOgotICAgICAgICAgICAgICAgICAgICBpZiAoCi0gICAgICAgICAgICAgICAgICAgICAgICBj b2x1bW5zX2luZm9bZWFjaF9jb2xdWydub3RfbnVsbCddIGFuZAotICAgICAgICAgICAgICAgICAg ICAgICAgbm90IGNvbHVtbnNfaW5mb1tlYWNoX2NvbF1bJ2hhc19kZWZhdWx0X3ZhbCddCi0gICAg ICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fZGF0YVtl YWNoX2NvbF0gPSBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fdHlwZVtlYWNo X2NvbF0gPVwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zX2luZm9bZWFjaF9j b2xdWyd0eXBlX25hbWUnXQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg ICAgICAgICAgICAgY29sdW1uX3R5cGVbZWFjaF9jb2xdID0gXAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbHVtbnNfaW5mb1tlYWNoX2NvbF1bJ3R5cGVfbmFtZSddCi0KLSAgICAgICAg ICAgICAgICAjIEZvciBuZXdseSBhZGRlZCByb3dzCi0gICAgICAgICAgICAgICAgaWYgb2ZfdHlw ZSA9PSAnYWRkZWQnOgotICAgICAgICAgICAgICAgICAgICAjIFB5dGhvbiBkaWN0IGRvZXMgbm90 IGhvbm91ciB0aGUgaW5zZXJ0ZWQgaXRlbSBvcmRlcgotICAgICAgICAgICAgICAgICAgICAjIFNv IHRvIGluc2VydCBkYXRhIGluIHRoZSBvcmRlciwgd2UgbmVlZCB0byBtYWtlIG9yZGVyZWQKLSAg ICAgICAgICAgICAgICAgICAgIyBsaXN0IG9mIGFkZGVkIGluZGV4IFdlIGRvbid0IG5lZWQgdGhp cyBtZWNoYW5pc20gaW4KLSAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGVkL2RlbGV0ZWQgcm93 cyBhcyBpdCBkb2VzIG5vdCBtYXR0ZXIgaW4KLSAgICAgICAgICAgICAgICAgICAgIyB0aG9zZSBv cGVyYXRpb25zCi0gICAgICAgICAgICAgICAgICAgIGFkZGVkX2luZGV4ID0gT3JkZXJlZERpY3Qo Ci0gICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2hhbmdlZF9kYXRhWydhZGRlZF9pbmRleCddLml0ZW1zKCksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAga2V5PWxhbWJkYSB4OiBpbnQoeFswXSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICBsaXN0 X29mX3NxbFtvZl90eXBlXSA9IFtdCi0KLSAgICAgICAgICAgICAgICAgICAgIyBXaGVuIG5ldyBy b3dzIGFyZSBhZGRlZCwgb25seSBjaGFuZ2VkIGNvbHVtbnMgZGF0YSBpcwotICAgICAgICAgICAg ICAgICAgICAjIHNlbnQgZnJvbSBjbGllbnQgc2lkZS4gQnV0IGlmIGNvbHVtbiBpcyBub3RfbnVs bCBhbmQgaGFzCi0gICAgICAgICAgICAgICAgICAgICMgbm9fZGVmYXVsdF92YWx1ZSwgc2V0IGNv bHVtbiB0byBibGFuaywgaW5zdGVhZAotICAgICAgICAgICAgICAgICAgICAjIG9mIG5vdCBudWxs IHdoaWNoIGlzIHNldCBieSBkZWZhdWx0LgotICAgICAgICAgICAgICAgICAgICBjb2x1bW5fZGF0 YSA9IHt9Ci0gICAgICAgICAgICAgICAgICAgIHBrX25hbWVzLCBwcmltYXJ5X2tleXMgPSBzZWxm LmdldF9wcmltYXJ5X2tleXMoKQotICAgICAgICAgICAgICAgICAgICBoYXNfb2lkcyA9ICdvaWQn IGluIGNvbHVtbl90eXBlCi0KLSAgICAgICAgICAgICAgICAgICAgZm9yIGVhY2hfcm93IGluIGFk ZGVkX2luZGV4OgotICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgdGhlIHJvdyBpbmRleCB0 byBtYXRjaCB3aXRoIHRoZSBhZGRlZCByb3dzCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGRp Y3Qga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXBfcm93X2luZGV4ID0gYWRkZWRfaW5k ZXhbZWFjaF9yb3ddCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gY2hhbmdlZF9kYXRh W29mX3R5cGVdW3RtcF9yb3dfaW5kZXhdWydkYXRhJ10KLSAgICAgICAgICAgICAgICAgICAgICAg ICMgUmVtb3ZlIG91ciB1bmlxdWUgdHJhY2tpbmcga2V5Ci0gICAgICAgICAgICAgICAgICAgICAg ICBkYXRhLnBvcChjbGllbnRfcHJpbWFyeV9rZXksIE5vbmUpCi0gICAgICAgICAgICAgICAgICAg ICAgICBkYXRhLnBvcCgnaXNfcm93X2NvcGllZCcsIE5vbmUpCi0gICAgICAgICAgICAgICAgICAg ICAgICBsaXN0X29mX3Jvd2lkLmFwcGVuZChkYXRhLmdldChjbGllbnRfcHJpbWFyeV9rZXkpKQot Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFVwZGF0ZSBjb2x1bW5zIHZhbHVlIHdpdGggY29s dW1ucyBoYXZpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbm90X251bGw9RmFsc2UgYW5k IGhhcyBubyBkZWZhdWx0IHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fZGF0 YS51cGRhdGUoZGF0YSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3Rl bXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnNxbF9w YXRoLCAnaW5zZXJ0LnNxbCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3Rv X2JlX3NhdmVkPWNvbHVtbl9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnYWRt aW5fYWxpYXM9cGdhZG1pbl9hbGlhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlt YXJ5X2tleXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RfbmFtZT1z ZWxmLm9iamVjdF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zcF9uYW1lPXNl bGYubnNwX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV90eXBlPWNvbHVt bl90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrX25hbWVzPXBrX25hbWVzLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19vaWRzPWhhc19vaWRzCi0gICAgICAgICAg ICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdF9zcWwgPSBy ZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3Nl bGYuc3FsX3BhdGgsICdzZWxlY3Quc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9iamVjdF9uYW1lPXNlbGYub2JqZWN0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgbnNwX25hbWU9c2VsZi5uc3BfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw cmltYXJ5X2tleXM9cHJpbWFyeV9rZXlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhh c19vaWRzPWhhc19vaWRzCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAg ICAgICAgICAgICAgIGxpc3Rfb2Zfc3FsW29mX3R5cGVdLmFwcGVuZCh7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ3NxbCc6IHNxbCwgJ2RhdGEnOiBkYXRhLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdjbGllbnRfcm93JzogdG1wX3Jvd19pbmRleCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnc2VsZWN0X3NxbCc6IHNlbGVjdF9zcWwKLSAgICAgICAgICAgICAgICAg ICAgICAgIH0pCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFJlc2V0IGNvbHVtbiBkYXRhCi0g ICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fZGF0YSA9IHt9Ci0KLSAgICAgICAgICAgICAg ICAjIEZvciB1cGRhdGVkIHJvd3MKLSAgICAgICAgICAgICAgICBlbGlmIG9mX3R5cGUgPT0gJ3Vw ZGF0ZWQnOgotICAgICAgICAgICAgICAgICAgICBsaXN0X29mX3NxbFtvZl90eXBlXSA9IFtdCi0g ICAgICAgICAgICAgICAgICAgIGZvciBlYWNoX3JvdyBpbiBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV06 Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gY2hhbmdlZF9kYXRhW29mX3R5cGVdW2Vh Y2hfcm93XVsnZGF0YSddCi0gICAgICAgICAgICAgICAgICAgICAgICBwa19lc2NhcGVkID0gewot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrOiBwa192YWwucmVwbGFjZSgnJScsICclJScp IGlmIGhhc2F0dHIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrX3ZhbCwgJ3Jl cGxhY2UnKSBlbHNlIHBrX3ZhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwaywg cGtfdmFsIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZF9kYXRhW29mX3R5 cGVdW2VhY2hfcm93XVsncHJpbWFyeV9rZXlzJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAuaXRlbXMoKQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnNxbF9wYXRoLCAndXBkYXRlLnNxbCddKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhX3RvX2JlX3NhdmVkPWRhdGEsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGdhZG1pbl9hbGlhcz1wZ2FkbWluX2FsaWFzLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByaW1hcnlfa2V5cz1wa19lc2NhcGVkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9iamVjdF9uYW1lPXNlbGYub2JqZWN0X25hbWUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgbnNwX25hbWU9c2VsZi5uc3BfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhX3R5cGU9Y29sdW1uX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAg ICAgICAgICAgICAgICAgICAgICAgIGxpc3Rfb2Zfc3FsW29mX3R5cGVdLmFwcGVuZCh7J3NxbCc6 IHNxbCwgJ2RhdGEnOiBkYXRhfSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Rfb2Zfcm93 aWQuYXBwZW5kKGRhdGEuZ2V0KGNsaWVudF9wcmltYXJ5X2tleSkpCi0KLSAgICAgICAgICAgICAg ICAjIEZvciBkZWxldGVkIHJvd3MKLSAgICAgICAgICAgICAgICBlbGlmIG9mX3R5cGUgPT0gJ2Rl bGV0ZWQnOgotICAgICAgICAgICAgICAgICAgICBsaXN0X29mX3NxbFtvZl90eXBlXSA9IFtdCi0g ICAgICAgICAgICAgICAgICAgIGlzX2ZpcnN0ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBy b3dzX3RvX2RlbGV0ZSA9IFtdCi0gICAgICAgICAgICAgICAgICAgIGtleXMgPSBOb25lCi0gICAg ICAgICAgICAgICAgICAgIG5vX29mX2tleXMgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGZv ciBlYWNoX3JvdyBpbiBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV06Ci0gICAgICAgICAgICAgICAgICAg ICAgICByb3dzX3RvX2RlbGV0ZS5hcHBlbmQoY2hhbmdlZF9kYXRhW29mX3R5cGVdW2VhY2hfcm93 XSkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRmV0Y2ggdGhlIGtleXMgZm9yIFNRTCBnZW5l cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19maXJzdDoKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gY292ZXJ0IGRpY3Rfa2V5cyB0byBub3JtYWwg bGlzdCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHl0aG9uMwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgSW4gUHl0aG9uMiwgaXQncyBhbHJlYWR5IGEgbGlzdCAmIFdl IHdpbGwgYWxzbwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmV0Y2ggY29sdW1uIG5h bWVzIHVzaW5nIGluZGV4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cyA9IGxpc3Qo Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRfZGF0YVtvZl90eXBlXVtl YWNoX3Jvd10ua2V5cygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5vX29mX2tleXMgPSBsZW4oa2V5cykKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpc19maXJzdCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICMgTWFw IGluZGV4IHdpdGggY29sdW1uIG5hbWUgZm9yIGVhY2ggcm93Ci0gICAgICAgICAgICAgICAgICAg IGZvciByb3cgaW4gcm93c190b19kZWxldGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3Ig aywgdiBpbiByb3cuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNldCBw cmltYXJ5IGtleSB3aXRoIGxhYmVsICYgZGVsZXRlIGluZGV4IGJhc2VkCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBtYXBwZWQga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg dHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dbY2hhbmdlZF9kYXRhWydj b2x1bW5zJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnQoayldWydu YW1lJ11dID0gdgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlbCByb3dba10KLQotICAgICAgICAgICAgICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi5z cWxfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXJv d3NfdG9fZGVsZXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeV9rZXlfbGFiZWxz PWtleXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBub19vZl9rZXlzPW5vX29mX2tleXMsCi0g ICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RfbmFtZT1zZWxmLm9iamVjdF9uYW1lLAotICAg ICAgICAgICAgICAgICAgICAgICAgbnNwX25hbWU9c2VsZi5uc3BfbmFtZQotICAgICAgICAgICAg ICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIGxpc3Rfb2Zfc3FsW29mX3R5cGVdLmFwcGVu ZCh7J3NxbCc6IHNxbCwgJ2RhdGEnOiB7fX0pCi0KLSAgICAgICAgICAgIGZvciBvcHIsIHNxbHMg aW4gbGlzdF9vZl9zcWwuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBzcWxz OgotICAgICAgICAgICAgICAgICAgICBpZiBpdGVtWydzcWwnXToKLSAgICAgICAgICAgICAgICAg ICAgICAgIGl0ZW1bJ2RhdGEnXSA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ2Fk bWluX2FsaWFzW2tdIGlmIGsgaW4gcGdhZG1pbl9hbGlhcyBlbHNlIGs6IHYKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBpdGVtWydkYXRhJ10uaXRlbXMoKQotICAgICAg ICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICByb3dfYWRkZWQg PSBOb25lCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBmYWlsdXJlX2hhbmRsZSgpOgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCdST0xMQkFDSzsn KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2Ugcm9sbCBiYWNrZWQgZXZlcnkg dGhpbmcgdGhlbiB1cGRhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtZXNz YWdlIGZvciBlYWNoIHNxbCBxdWVyeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig dmFsIGluIHF1ZXJ5X3JlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcXVl cnlfcmVzW3ZhbF1bJ3N0YXR1cyddOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcXVlcnlfcmVzW3ZhbF1bJ3Jlc3VsdCddID0gXAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdUcmFuc2FjdGlvbiBST0xMQkFDSycKLQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgSWYgbGlzdCBpcyBlbXB0eSBzZXQgcm93aWQgdG8gMQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgbGlzdF9vZl9yb3dpZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9y b3dpZCA9IGxpc3Rfb2Zfcm93aWRbY291bnRdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcm93aWQgPSAx Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lkID0gMAotCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHN0YXR1cywgcmVzLCBxdWVyeV9yZXMsIF9yb3dpZAotCi0gICAgICAg ICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGZXRj aCBvaWRzL3ByaW1hcnkga2V5cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICdzZWxl Y3Rfc3FsJyBpbiBpdGVtIGFuZCBpdGVtWydzZWxlY3Rfc3FsJ106Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3QoCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtWydzcWwnXSwgaXRlbVsnZGF0YSddKQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX3ZvaWQoCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpdGVtWydzcWwnXSwgaXRlbVsnZGF0YSddKQotICAgICAg ICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBfOgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZhaWx1cmVfaGFuZGxlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICByYWlzZQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlX2hhbmRsZSgpCi0KLSAgICAgICAg ICAgICAgICAgICAgICAgICMgU2VsZWN0IGFkZGVkIHJvdyBmcm9tIHRoZSB0YWJsZQotICAgICAg ICAgICAgICAgICAgICAgICAgaWYgJ3NlbGVjdF9zcWwnIGluIGl0ZW06Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RhdHVzLCBzZWxfcmVzID0gY29ubi5leGVjdXRlX2RpY3QoCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bJ3NlbGVjdF9zcWwnXSwgcmVzWydyb3dz J11bMF0pCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLmV4ZWN1dGVfdm9pZCgnUk9MTEJBQ0s7 JykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSByb2xsIGJhY2tlZCBl dmVyeSB0aGluZyB0aGVuIHVwZGF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHRoZSBtZXNzYWdlIGZvciBlYWNoIHNxbCBxdWVyeS4KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZm9yIHZhbCBpbiBxdWVyeV9yZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBxdWVyeV9yZXNbdmFsXVsnc3RhdHVzJ106Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfcmVzW3ZhbF1bJ3Jlc3VsdCddID0gXAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVHJhbnNhY3Rpb24gUk9M TEJBQ0snCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBsaXN0IGlzIGVt cHR5IHNldCByb3dpZCB0byAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpc3Rfb2Zfcm93aWQ6Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lkID0gbGlzdF9vZl9y b3dpZFtjb3VudF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lkID0gMQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lkID0gMAotCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBzdGF0dXMsIHNlbF9yZXMsIHF1ZXJ5X3JlcywgX3Jvd2lkCi0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAncm93cycgaW4gc2VsX3JlcyBhbmQgbGVu KHNlbF9yZXNbJ3Jvd3MnXSkgPiAwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy b3dfYWRkZWQgPSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtWydj bGllbnRfcm93J106IHNlbF9yZXNbJ3Jvd3MnXVswXX0KLQotICAgICAgICAgICAgICAgICAgICAg ICAgcm93c19hZmZlY3RlZCA9IGNvbm4ucm93c19hZmZlY3RlZCgpCi0KLSAgICAgICAgICAgICAg ICAgICAgICAgICMgc3RvcmUgdGhlIHJlc3VsdCBvZiBlYWNoIHF1ZXJ5IGluIGRpY3Rpb25hcnkK LSAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X3Jlc1tjb3VudF0gPSB7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IHN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAncmVzdWx0JzogTm9uZSBpZiByb3dfYWRkZWQgZWxzZSByZXMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3NxbCc6IHNxbCwgJ3Jvd3NfYWZmZWN0ZWQnOiByb3dzX2FmZmVj dGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb3dfYWRkZWQnOiByb3dfYWRkZWQK LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgY291 bnQgKz0gMQotCi0gICAgICAgICAgICAjIENvbW1pdCB0aGUgdHJhbnNhY3Rpb24gaWYgdGhlcmUg aXMgbm8gZXJyb3IgZm91bmQKLSAgICAgICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCdDT01NSVQ7 JykKLQotICAgICAgICByZXR1cm4gc3RhdHVzLCByZXMsIHF1ZXJ5X3JlcywgX3Jvd2lkCisgICAg ICAgIHJldHVybiBzYXZlX2NoYW5nZWRfZGF0YShjaGFuZ2VkX2RhdGE9Y2hhbmdlZF9kYXRhLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc19pbmZvPWNvbHVtbnNfaW5m bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfb2JqPXNlbGYsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfcHJpbWFyeV9rZXk9Y2xpZW50 X3ByaW1hcnlfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1jb25u KQogCiAKIGNsYXNzIFZpZXdDb21tYW5kKEdyaWRDb21tYW5kKToKQEAgLTExMTQsMTggKzg2MCw4 OCBAQCBjbGFzcyBRdWVyeVRvb2xDb21tYW5kKEJhc2VDb21tYW5kLCBGZXRjaGVkUm93VHJhY2tl cik6CiAgICAgICAgIHNlbGYuYXV0b19yb2xsYmFjayA9IEZhbHNlCiAgICAgICAgIHNlbGYuYXV0 b19jb21taXQgPSBUcnVlCiAKKyAgICAgICAgIyBBdHRyaWJ1dGVzIG5lZWRlZCB0byBiZSBhYmxl IHRvIGVkaXQgdXBkYXRhYmxlIHJlc3VsdHNlbHRzCisgICAgICAgIHNlbGYuaXNfdXBkYXRhYmxl X3Jlc3VsdHNldCA9IEZhbHNlCisgICAgICAgIHNlbGYucHJpbWFyeV9rZXlzID0gTm9uZQorICAg ICAgICBzZWxmLnBrX25hbWVzID0gTm9uZQorCiAgICAgZGVmIGdldF9zcWwoc2VsZiwgZGVmYXVs dF9jb25uPU5vbmUpOgogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIGdldF9hbGxfY29s dW1uc193aXRoX29yZGVyKHNlbGYsIGRlZmF1bHRfY29ubj1Ob25lKToKICAgICAgICAgcmV0dXJu IE5vbmUKIAorICAgIGRlZiBnZXRfcHJpbWFyeV9rZXlzKHNlbGYpOgorICAgICAgICByZXR1cm4g c2VsZi5wa19uYW1lcywgc2VsZi5wcmltYXJ5X2tleXMKKwogICAgIGRlZiBjYW5fZWRpdChzZWxm KToKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLmlzX3VwZGF0YWJs ZV9yZXN1bHRzZXQKIAogICAgIGRlZiBjYW5fZmlsdGVyKHNlbGYpOgogICAgICAgICByZXR1cm4g RmFsc2UKIAorICAgIGRlZiBjaGVja191cGRhdGFibGVfcmVzdWx0c19wa2V5cyhzZWxmKToKKyAg ICAgICAgIiIiCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hlY2sgd2hl dGhlciB0aGUgbGFzdCBzdWNjZXNzZnVsIHF1ZXJ5CisgICAgICAgICAgICBwcm9kdWNlZCB1cGRh dGFibGUgcmVzdWx0cyBhbmQgc2V0cyB0aGUgbmVjZXNzYXJ5IGZsYWdzIGFuZAorICAgICAgICAg ICAgYXR0cmlidXRlcyBhY2NvcmRpbmdseQorICAgICAgICAiIiIKKyAgICAgICAgIyBGZXRjaCB0 aGUgY29ubmVjdGlvbiBvYmplY3QKKyAgICAgICAgZHJpdmVyID0gZ2V0X2RyaXZlcihQR19ERUZB VUxUX0RSSVZFUikKKyAgICAgICAgbWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIo c2VsZi5zaWQpCisgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPXNlbGYuZGlk LCBjb25uX2lkPXNlbGYuY29ubl9pZCkKKworICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHF1ZXJ5 IHJlc3VsdHMgYXJlIHJlYWR5IGZpcnN0CisgICAgICAgIHN0YXR1cywgcmVzdWx0ID0gY29ubi5w b2xsKAorICAgICAgICAgICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c9VHJ1ZSwgbm9fcmVzdWx0 PVRydWUpCisgICAgICAgIGlmIHN0YXR1cyAhPSBBU1lOQ19PSzoKKyAgICAgICAgICAgIHJldHVy bgorCisgICAgICAgICMgR2V0IHRoZSBwYXRoIHRvIHRoZSBzcWwgdGVtcGxhdGVzCisgICAgICAg IHNxbF9wYXRoID0gJ3NxbGVkaXRvci9zcWwvI3swfSMnLmZvcm1hdChtYW5hZ2VyLnZlcnNpb24p CisKKyAgICAgICAgc2VsZi5pc191cGRhdGFibGVfcmVzdWx0c2V0LCBzZWxmLnByaW1hcnlfa2V5 cywgcGtfbmFtZXMsIHRhYmxlX29pZCA9IFwKKyAgICAgICAgICAgIGlzX3F1ZXJ5X3Jlc3VsdHNl dF91cGRhdGFibGUoY29ubiwgc3FsX3BhdGgpCisKKyAgICAgICAgIyBDcmVhdGUgcGtfbmFtZXMg YXR0cmlidXRlIGluIHRoZSByZXF1aXJlZCBmb3JtYXQKKyAgICAgICAgaWYgcGtfbmFtZXMgaXMg bm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnBrX25hbWVzID0gJycKKworICAgICAgICAgICAg Zm9yIHBrX25hbWUgaW4gcGtfbmFtZXM6CisgICAgICAgICAgICAgICAgc2VsZi5wa19uYW1lcyAr PSBkcml2ZXIucXRJZGVudChjb25uLCBwa19uYW1lKSArICcsJworCisgICAgICAgICAgICBpZiBz ZWxmLnBrX25hbWVzICE9ICcnOgorICAgICAgICAgICAgICAgICMgUmVtb3ZlIGxhc3QgY2hhcmFj dGVyIGZyb20gdGhlIHN0cmluZworICAgICAgICAgICAgICAgIHNlbGYucGtfbmFtZXMgPSBzZWxm LnBrX25hbWVzWzotMV0KKworICAgICAgICAjIEFkZCBhdHRyaWJ1dGVzIHJlcXVpcmVkIHRvIGJl IGFibGUgdG8gdXBkYXRlIHRhYmxlIGRhdGEKKyAgICAgICAgaWYgc2VsZi5pc191cGRhdGFibGVf cmVzdWx0c2V0OgorICAgICAgICAgICAgc2VsZi5fX3NldF91cGRhdGFibGVfcmVzdWx0c19hdHRy cyhzcWxfcGF0aD1zcWxfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFibGVfb2lkPXRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1jb25uKQorCisgICAgZGVmIHNhdmUoc2VsZiwK KyAgICAgICAgICAgICBjaGFuZ2VkX2RhdGEsCisgICAgICAgICAgICAgY29sdW1uc19pbmZvLAor ICAgICAgICAgICAgIGNsaWVudF9wcmltYXJ5X2tleT0nX190ZW1wX1BLJywKKyAgICAgICAgICAg ICBkZWZhdWx0X2Nvbm49Tm9uZSk6CisgICAgICAgIGlmIG5vdCBzZWxmLmlzX3VwZGF0YWJsZV9y ZXN1bHRzZXQ6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGdldHRleHQoJ1Jlc3VsdHNldCBp cyBub3QgdXBkYXRhYmxlLicpLCBOb25lLCBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAg ICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKQorICAgICAgICAgICAgaWYg ZGVmYXVsdF9jb25uIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbWFuYWdlciA9IGRyaXZlci5j b25uZWN0aW9uX21hbmFnZXIoc2VsZi5zaWQpCisgICAgICAgICAgICAgICAgY29ubiA9IG1hbmFn ZXIuY29ubmVjdGlvbihkaWQ9c2VsZi5kaWQsIGNvbm5faWQ9c2VsZi5jb25uX2lkKQorICAgICAg ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb25uID0gZGVmYXVsdF9jb25uCisKKyAgICAg ICAgICAgIHJldHVybiBzYXZlX2NoYW5nZWRfZGF0YShjaGFuZ2VkX2RhdGE9Y2hhbmdlZF9kYXRh LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNfaW5mbz1jb2x1 bW5zX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubj1jb25u LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfb2JqPXNlbGYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X3ByaW1hcnlfa2V5 PWNsaWVudF9wcmltYXJ5X2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhdXRvX2NvbW1pdD1zZWxmLmF1dG9fY29tbWl0KQorCiAgICAgZGVmIHNldF9jb25uZWN0aW9u X2lkKHNlbGYsIGNvbm5faWQpOgogICAgICAgICBzZWxmLmNvbm5faWQgPSBjb25uX2lkCiAKQEAg LTExMzQsMyArOTUwLDI4IEBAIGNsYXNzIFF1ZXJ5VG9vbENvbW1hbmQoQmFzZUNvbW1hbmQsIEZl dGNoZWRSb3dUcmFja2VyKToKIAogICAgIGRlZiBzZXRfYXV0b19jb21taXQoc2VsZiwgYXV0b19j b21taXQpOgogICAgICAgICBzZWxmLmF1dG9fY29tbWl0ID0gYXV0b19jb21taXQKKworICAgIGRl ZiBfX3NldF91cGRhdGFibGVfcmVzdWx0c19hdHRycyhzZWxmLCBzcWxfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfb2lkLCBjb25uKToKKyAgICAgICAg IyBTZXQgdGVtcGxhdGUgcGF0aCBmb3Igc3FsIHNjcmlwdHMgYW5kIHRoZSB0YWJsZSBvYmplY3Qg aWQKKyAgICAgICAgc2VsZi5zcWxfcGF0aCA9IHNxbF9wYXRoCisgICAgICAgIHNlbGYub2JqX2lk ID0gdGFibGVfb2lkCisKKyAgICAgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAg ICMgRmV0Y2ggdGhlIE5hbWVzcGFjZSBOYW1lIGFuZCBvYmplY3QgTmFtZQorICAgICAgICAgICAg cXVlcnkgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYu c3FsX3BhdGgsICdvYmplY3RuYW1lLnNxbCddKSwKKyAgICAgICAgICAgICAgICBvYmpfaWQ9c2Vs Zi5vYmpfaWQKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBj b25uLmV4ZWN1dGVfZGljdChxdWVyeSkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKHJlc3VsdCkKKworICAgICAgICAgICAgc2VsZi5u c3BfbmFtZSA9IHJlc3VsdFsncm93cyddWzBdWyduc3BuYW1lJ10KKyAgICAgICAgICAgIHNlbGYu b2JqZWN0X25hbWUgPSByZXN1bHRbJ3Jvd3MnXVswXVsncmVsbmFtZSddCisgICAgICAgIGVsc2U6 CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAn Tm90IGNvbm5lY3RlZCB0byBzZXJ2ZXIgb3IgY29ubmVjdGlvbiB3aXRoIHRoZSBzZXJ2ZXIgJwor ICAgICAgICAgICAgICAgICdoYXMgYmVlbiBjbG9zZWQuJykKKyAgICAgICAgICAgICkKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvY3NzL3NxbGVkaXRvci5j c3MgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2Nzcy9zcWxlZGl0b3IuY3Nz CmluZGV4IDg2ZDNkZWZjLi4yMTQ0ODMyNyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3N0YXRpYy9jc3Mvc3FsZWRpdG9yLmNzcworKysgYi93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3Ivc3RhdGljL2Nzcy9zcWxlZGl0b3IuY3NzCkBAIC0yOTEsNyArMjkxLDcgQEAg aW5wdXQuZWRpdG9yLWNoZWNrYm94OmZvY3VzIHsKICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcu Li9pbWcvZGlzY29ubmVjdC5zdmcnKTsKIH0KIAotLmljb24tY29tbWl0LCAuaWNvbi1yb2xsYmFj ayB7CisuaWNvbi1jb21taXQsIC5pY29uLXJvbGxiYWNrLCAuaWNvbi1zYXZlLWRhdGEtY2hhbmdl cyB7CiAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgYWxpZ24tY29udGVudDogY2VudGVyOwog ICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwpAQCAtMzExLDYgKzMxMSwxMCBAQCBpbnB1dC5lZGl0 b3ItY2hlY2tib3g6Zm9jdXMgewogICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltZy9yb2xs YmFjay5zdmcnKSAhaW1wb3J0YW50OwogfQogCisuaWNvbi1zYXZlLWRhdGEtY2hhbmdlcyB7Cisg IGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1nL3NhdmVfZGF0YV9jaGFuZ2VzLnN2ZycpICFp bXBvcnRhbnQ7Cit9CisKIC5hanMtYm9keSAud2Fybi1oZWFkZXIgewogICBmb250LXNpemU6IDEz cHg7CiAgIGZvbnQtd2VpZ2h0OiBib2xkOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3N0YXRpYy9pbWcvc2F2ZV9kYXRhX2NoYW5nZXMuc3ZnIGIvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9pbWcvc2F2ZV9kYXRhX2NoYW5nZXMuc3ZnCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4wOWVhZDkyOAotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvaW1nL3NhdmVfZGF0YV9jaGFuZ2Vz LnN2ZwpAQCAtMCwwICsxLDEyIEBACis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93 d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94 bGluayIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTc5MiAxNzkyOyIgeG1sOnNw YWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjE3OTIiIGhlaWdodD0iMTc5MiI+PHJlY3QgaWQ9ImJhY2tn cm91bmRyZWN0IiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB4PSIwIiB5PSIwIiBmaWxsPSJu b25lIiBzdHJva2U9Im5vbmUiLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJLnN0MHtmaWxs OiMyMjIyMjI7fQorCS5zdDF7ZmlsbDojRkZGRkZGO30KKzwvc3R5bGU+Cis8dGl0bGU+c2F2ZV9k YXRhX2NoYW5nZXM8L3RpdGxlPgorCisKKzxnIGNsYXNzPSJjdXJyZW50TGF5ZXIiIHN0eWxlPSIi Pjx0aXRsZT5MYXllciAxPC90aXRsZT48cGF0aCBjbGFzcz0ic3QwIHNlbGVjdGVkIiBkPSJNNjE0 LjAyMTExODE2NDA2MjUsMTM4MS4wMzk4ODIxODMwNzUgdi0xNzAuMTgxODIzNzMwNDY4NzUgYzAs LTguMjQzMTgyMTgyMzEyMDEyIC0yLjY3MDMyOTU3MDc3MDI2MzcsLTE1LjA2ODE4MTk5MTU3NzE0 OCAtOC4wMTA5ODkxODkxNDc5NSwtMjAuMzg2MzYzOTgzMTU0Mjk3IHMtMTIuMTk0NTA1NjkxNTI4 MzIsLTcuOTc3MjcyNTEwNTI4NTY0NSAtMjAuNDcyNTI4NDU3NjQxNiwtNy45NzcyNzI1MTA1Mjg1 NjQ1IEgzMDAuNzAzNDMwMTc1NzgxMjUgYy04LjI3ODAyMTgxMjQzODk2NSwwIC0xNS4xMzE4Njgz NjI0MjY3NTgsMi42NTkwOTA5OTU3ODg1NzQgLTIwLjQ3MjUyODQ1NzY0MTYsNy45NzcyNzI1MTA1 Mjg1NjQ1IHMtOC4wMTA5ODkxODkxNDc5NSwxMi4xNDMxODE4MDA4NDIyODUgLTguMDEwOTg5MTg5 MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3IHYxNzAuMTgxODIzNzMwNDY4NzUgYzAsOC4yNDMxODIx ODIzMTIwMTIgMi42NzAzMjk1NzA3NzAyNjM3LDE1LjA2ODE4MTk5MTU3NzE0OCA4LjAxMDk4OTE4 OTE0Nzk1LDIwLjM4NjM2Mzk4MzE1NDI5NyBzMTIuMTk0NTA1NjkxNTI4MzIsNy45NzcyNzI1MTA1 Mjg1NjQ1IDIwLjQ3MjUyODQ1NzY0MTYsNy45NzcyNzI1MTA1Mjg1NjQ1IGgyODQuODM1MTc0NTYw NTQ2OSBjOC4yNzgwMjE4MTI0Mzg5NjUsMCAxNS4xMzE4NjgzNjI0MjY3NTgsLTIuNjU5MDkwOTk1 Nzg4NTc0IDIwLjQ3MjUyODQ1NzY0MTYsLTcuOTc3MjcyNTEwNTI4NTY0NSBTNjE0LjAyMTExODE2 NDA2MjUsMTM4OS4yODMxNjgzMTU4ODc1IDYxNC4wMjExMTgxNjQwNjI1LDEzODEuMDM5ODgyMTgz MDc1IHpNNjE0LjAyMTExODE2NDA2MjUsMTA0MC42NzQ4OTE5NDg3IFY4NzAuNDkyNzYzMDQyNDUg YzAsLTguMjQzMTgyMTgyMzEyMDEyIC0yLjY3MDMyOTU3MDc3MDI2MzcsLTE1LjA2ODE4MTk5MTU3 NzE0OCAtOC4wMTA5ODkxODkxNDc5NSwtMjAuMzg2MzYzOTgzMTU0Mjk3IHMtMTIuMTk0NTA1Njkx NTI4MzIsLTcuOTc3MjcyNTEwNTI4NTY0NSAtMjAuNDcyNTI4NDU3NjQxNiwtNy45NzcyNzI1MTA1 Mjg1NjQ1IEgzMDAuNzAzNDMwMTc1NzgxMjUgYy04LjI3ODAyMTgxMjQzODk2NSwwIC0xNS4xMzE4 NjgzNjI0MjY3NTgsMi42NTkwOTA5OTU3ODg1NzQgLTIwLjQ3MjUyODQ1NzY0MTYsNy45NzcyNzI1 MTA1Mjg1NjQ1IHMtOC4wMTA5ODkxODkxNDc5NSwxMi4xNDMxODE4MDA4NDIyODUgLTguMDEwOTg5 MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3IHYxNzAuMTgxODIzNzMwNDY4NzUgYzAsOC4yNDMx ODIxODIzMTIwMTIgMi42NzAzMjk1NzA3NzAyNjM3LDE1LjA2ODE4MTk5MTU3NzE0OCA4LjAxMDk4 OTE4OTE0Nzk1LDIwLjM4NjM2Mzk4MzE1NDI5NyBzMTIuMTk0NTA1NjkxNTI4MzIsNy45NzcyNzI1 MTA1Mjg1NjQ1IDIwLjQ3MjUyODQ1NzY0MTYsNy45NzcyNzI1MTA1Mjg1NjQ1IGgyODQuODM1MTc0 NTYwNTQ2OSBjOC4yNzgwMjE4MTI0Mzg5NjUsMCAxNS4xMzE4NjgzNjI0MjY3NTgsLTIuNjU5MDkw OTk1Nzg4NTc0IDIwLjQ3MjUyODQ1NzY0MTYsLTcuOTc3MjcyNTEwNTI4NTY0NSBTNjE0LjAyMTEx ODE2NDA2MjUsMTA0OC45MTgzMDAxNTE4MjUgNjE0LjAyMTExODE2NDA2MjUsMTA0MC42NzQ4OTE5 NDg3IHpNMTA2OS43NTg0MjI4NTE1NjI1LDEzODEuMDM5ODgyMTgzMDc1IHYtMTcwLjE4MTgyMzcz MDQ2ODc1IGMwLC04LjI0MzE4MjE4MjMxMjAxMiAtMi42NzAzMjk1NzA3NzAyNjM3LC0xNS4wNjgx ODE5OTE1NzcxNDggLTguMDEwOTg5MTg5MTQ3OTUsLTIwLjM4NjM2Mzk4MzE1NDI5NyBzLTEyLjE5 NDUwNTY5MTUyODMyLC03Ljk3NzI3MjUxMDUyODU2NDUgLTIwLjQ3MjUyODQ1NzY0MTYsLTcuOTc3 MjcyNTEwNTI4NTY0NSBINzU2LjQzODcyMDcwMzEyNSBjLTguMjc4MDIxODEyNDM4OTY1LDAgLTE1 LjEzMTg2ODM2MjQyNjc1OCwyLjY1OTA5MDk5NTc4ODU3NCAtMjAuNDcyNTI4NDU3NjQxNiw3Ljk3 NzI3MjUxMDUyODU2NDUgcy04LjAxMDk4OTE4OTE0Nzk1LDEyLjE0MzE4MTgwMDg0MjI4NSAtOC4w MTA5ODkxODkxNDc5NSwyMC4zODYzNjM5ODMxNTQyOTcgdjE3MC4xODE4MjM3MzA0Njg3NSBjMCw4 LjI0MzE4MjE4MjMxMjAxMiAyLjY3MDMyOTU3MDc3MDI2MzcsMTUuMDY4MTgxOTkxNTc3MTQ4IDgu MDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3IHMxMi4xOTQ1MDU2OTE1MjgzMiw3Ljk3 NzI3MjUxMDUyODU2NDUgMjAuNDcyNTI4NDU3NjQxNiw3Ljk3NzI3MjUxMDUyODU2NDUgaDI4NC44 MzUxNzQ1NjA1NDY5IGM4LjI3ODAyMTgxMjQzODk2NSwwIDE1LjEzMTg2ODM2MjQyNjc1OCwtMi42 NTkwOTA5OTU3ODg1NzQgMjAuNDcyNTI4NDU3NjQxNiwtNy45NzcyNzI1MTA1Mjg1NjQ1IFMxMDY5 Ljc1ODQyMjg1MTU2MjUsMTM4OS4yODMxNjgzMTU4ODc1IDEwNjkuNzU4NDIyODUxNTYyNSwxMzgx LjAzOTg4MjE4MzA3NSB6TTYxNC4wMjExMTgxNjQwNjI1LDcwMC4zMTA5MzkzMTE5ODEyIFY1MzAu MTI5ODQ4MDAzMzg3NSBjMCwtOC4yNDMxODIxODIzMTIwMTIgLTIuNjcwMzI5NTcwNzcwMjYzNywt MTUuMDY4MTgxOTkxNTc3MTQ4IC04LjAxMDk4OTE4OTE0Nzk1LC0yMC4zODYzNjM5ODMxNTQyOTcg cy0xMi4xOTQ1MDU2OTE1MjgzMiwtNy45NzcyNzI1MTA1Mjg1NjQ1IC0yMC40NzI1Mjg0NTc2NDE2 LC03Ljk3NzI3MjUxMDUyODU2NDUgSDMwMC43MDM0MzAxNzU3ODEyNSBjLTguMjc4MDIxODEyNDM4 OTY1LDAgLTE1LjEzMTg2ODM2MjQyNjc1OCwyLjY1OTA5MDk5NTc4ODU3NCAtMjAuNDcyNTI4NDU3 NjQxNiw3Ljk3NzI3MjUxMDUyODU2NDUgcy04LjAxMDk4OTE4OTE0Nzk1LDEyLjE0MzE4MTgwMDg0 MjI4NSAtOC4wMTA5ODkxODkxNDc5NSwyMC4zODYzNjM5ODMxNTQyOTcgdjE3MC4xODE4MjM3MzA0 Njg3NSBjMCw4LjI0MzE4MjE4MjMxMjAxMiAyLjY3MDMyOTU3MDc3MDI2MzcsMTUuMDY4MTgxOTkx NTc3MTQ4IDguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3IHMxMi4xOTQ1MDU2OTE1 MjgzMiw3Ljk3NzI3MjUxMDUyODU2NDUgMjAuNDcyNTI4NDU3NjQxNiw3Ljk3NzI3MjUxMDUyODU2 NDUgaDI4NC44MzUxNzQ1NjA1NDY5IGM4LjI3ODAyMTgxMjQzODk2NSwwIDE1LjEzMTg2ODM2MjQy Njc1OCwtMi42NTkwOTA5OTU3ODg1NzQgMjAuNDcyNTI4NDU3NjQxNiwtNy45NzcyNzI1MTA1Mjg1 NjQ1IFM2MTQuMDIxMTE4MTY0MDYyNSw3MDguNTU0MTAzMzc0NDgxMiA2MTQuMDIxMTE4MTY0MDYy NSw3MDAuMzEwOTM5MzExOTgxMiB6TTEwNjkuNzU4NDIyODUxNTYyNSwxMDQwLjY3NDg5MTk0ODcg Vjg3MC40OTI3NjMwNDI0NSBjMCwtOC4yNDMxODIxODIzMTIwMTIgLTIuNjcwMzI5NTcwNzcwMjYz NywtMTUuMDY4MTgxOTkxNTc3MTQ4IC04LjAxMDk4OTE4OTE0Nzk1LC0yMC4zODYzNjM5ODMxNTQy OTcgcy0xMi4xOTQ1MDU2OTE1MjgzMiwtNy45NzcyNzI1MTA1Mjg1NjQ1IC0yMC40NzI1Mjg0NTc2 NDE2LC03Ljk3NzI3MjUxMDUyODU2NDUgSDc1Ni40Mzg3MjA3MDMxMjUgYy04LjI3ODAyMTgxMjQz ODk2NSwwIC0xNS4xMzE4NjgzNjI0MjY3NTgsMi42NTkwOTA5OTU3ODg1NzQgLTIwLjQ3MjUyODQ1 NzY0MTYsNy45NzcyNzI1MTA1Mjg1NjQ1IHMtOC4wMTA5ODkxODkxNDc5NSwxMi4xNDMxODE4MDA4 NDIyODUgLTguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3IHYxNzAuMTgxODIzNzMw NDY4NzUgYzAsOC4yNDMxODIxODIzMTIwMTIgMi42NzAzMjk1NzA3NzAyNjM3LDE1LjA2ODE4MTk5 MTU3NzE0OCA4LjAxMDk4OTE4OTE0Nzk1LDIwLjM4NjM2Mzk4MzE1NDI5NyBzMTIuMTk0NTA1Njkx NTI4MzIsNy45NzcyNzI1MTA1Mjg1NjQ1IDIwLjQ3MjUyODQ1NzY0MTYsNy45NzcyNzI1MTA1Mjg1 NjQ1IGgyODQuODM1MTc0NTYwNTQ2OSBjOC4yNzgwMjE4MTI0Mzg5NjUsMCAxNS4xMzE4NjgzNjI0 MjY3NTgsLTIuNjU5MDkwOTk1Nzg4NTc0IDIwLjQ3MjUyODQ1NzY0MTYsLTcuOTc3MjcyNTEwNTI4 NTY0NSBTMTA2OS43NTg0MjI4NTE1NjI1LDEwNDguOTE4MzAwMTUxODI1IDEwNjkuNzU4NDIyODUx NTYyNSwxMDQwLjY3NDg5MTk0ODcgek0xNTI1LjQ5NTYwNTQ2ODc1LDEzODEuMDM5ODgyMTgzMDc1 IHYtMTcwLjE4MTgyMzczMDQ2ODc1IGMwLC04LjI0MzE4MjE4MjMxMjAxMiAtMi42NzAzMjk1NzA3 NzAyNjM3LC0xNS4wNjgxODE5OTE1NzcxNDggLTguMDEwOTg5MTg5MTQ3OTUsLTIwLjM4NjM2Mzk4 MzE1NDI5NyBzLTEyLjE5NDUwNTY5MTUyODMyLC03Ljk3NzI3MjUxMDUyODU2NDUgLTIwLjQ3MjUy ODQ1NzY0MTYsLTcuOTc3MjcyNTEwNTI4NTY0NSBoLTI4NC44MzUxNzQ1NjA1NDY5IGMtOC4yNzgw MjE4MTI0Mzg5NjUsMCAtMTUuMTMxODY4MzYyNDI2NzU4LDIuNjU5MDkwOTk1Nzg4NTc0IC0yMC40 NzI1Mjg0NTc2NDE2LDcuOTc3MjcyNTEwNTI4NTY0NSBzLTguMDEwOTg5MTg5MTQ3OTUsMTIuMTQz MTgxODAwODQyMjg1IC04LjAxMDk4OTE4OTE0Nzk1LDIwLjM4NjM2Mzk4MzE1NDI5NyB2MTcwLjE4 MTgyMzczMDQ2ODc1IGMwLDguMjQzMTgyMTgyMzEyMDEyIDIuNjcwMzI5NTcwNzcwMjYzNywxNS4w NjgxODE5OTE1NzcxNDggOC4wMTA5ODkxODkxNDc5NSwyMC4zODYzNjM5ODMxNTQyOTcgczEyLjE5 NDUwNTY5MTUyODMyLDcuOTc3MjcyNTEwNTI4NTY0NSAyMC40NzI1Mjg0NTc2NDE2LDcuOTc3Mjcy NTEwNTI4NTY0NSBoMjg0LjgzNTE3NDU2MDU0NjkgYzguMjc4MDIxODEyNDM4OTY1LDAgMTUuMTMx ODY4MzYyNDI2NzU4LC0yLjY1OTA5MDk5NTc4ODU3NCAyMC40NzI1Mjg0NTc2NDE2LC03Ljk3NzI3 MjUxMDUyODU2NDUgUzE1MjUuNDk1NjA1NDY4NzUsMTM4OS4yODMxNjgzMTU4ODc1IDE1MjUuNDk1 NjA1NDY4NzUsMTM4MS4wMzk4ODIxODMwNzUgek0xMDY5Ljc1ODQyMjg1MTU2MjUsNzAwLjMxMDkz OTMxMTk4MTIgVjUzMC4xMjk4NDgwMDMzODc1IGMwLC04LjI0MzE4MjE4MjMxMjAxMiAtMi42NzAz Mjk1NzA3NzAyNjM3LC0xNS4wNjgxODE5OTE1NzcxNDggLTguMDEwOTg5MTg5MTQ3OTUsLTIwLjM4 NjM2Mzk4MzE1NDI5NyBzLTEyLjE5NDUwNTY5MTUyODMyLC03Ljk3NzI3MjUxMDUyODU2NDUgLTIw LjQ3MjUyODQ1NzY0MTYsLTcuOTc3MjcyNTEwNTI4NTY0NSBINzU2LjQzODcyMDcwMzEyNSBjLTgu Mjc4MDIxODEyNDM4OTY1LDAgLTE1LjEzMTg2ODM2MjQyNjc1OCwyLjY1OTA5MDk5NTc4ODU3NCAt MjAuNDcyNTI4NDU3NjQxNiw3Ljk3NzI3MjUxMDUyODU2NDUgcy04LjAxMDk4OTE4OTE0Nzk1LDEy LjE0MzE4MTgwMDg0MjI4NSAtOC4wMTA5ODkxODkxNDc5NSwyMC4zODYzNjM5ODMxNTQyOTcgdjE3 MC4xODE4MjM3MzA0Njg3NSBjMCw4LjI0MzE4MjE4MjMxMjAxMiAyLjY3MDMyOTU3MDc3MDI2Mzcs MTUuMDY4MTgxOTkxNTc3MTQ4IDguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3IHMx Mi4xOTQ1MDU2OTE1MjgzMiw3Ljk3NzI3MjUxMDUyODU2NDUgMjAuNDcyNTI4NDU3NjQxNiw3Ljk3 NzI3MjUxMDUyODU2NDUgaDI4NC44MzUxNzQ1NjA1NDY5IGM4LjI3ODAyMTgxMjQzODk2NSwwIDE1 LjEzMTg2ODM2MjQyNjc1OCwtMi42NTkwOTA5OTU3ODg1NzQgMjAuNDcyNTI4NDU3NjQxNiwtNy45 NzcyNzI1MTA1Mjg1NjQ1IFMxMDY5Ljc1ODQyMjg1MTU2MjUsNzA4LjU1NDEwMzM3NDQ4MTIgMTA2 OS43NTg0MjI4NTE1NjI1LDcwMC4zMTA5MzkzMTE5ODEyIHpNMTUyNS40OTU2MDU0Njg3NSwxMDQw LjY3NDg5MTk0ODcgVjg3MC40OTI3NjMwNDI0NSBjMCwtOC4yNDMxODIxODIzMTIwMTIgLTIuNjcw MzI5NTcwNzcwMjYzNywtMTUuMDY4MTgxOTkxNTc3MTQ4IC04LjAxMDk4OTE4OTE0Nzk1LC0yMC4z ODYzNjM5ODMxNTQyOTcgcy0xMi4xOTQ1MDU2OTE1MjgzMiwtNy45NzcyNzI1MTA1Mjg1NjQ1IC0y MC40NzI1Mjg0NTc2NDE2LC03Ljk3NzI3MjUxMDUyODU2NDUgaC0yODQuODM1MTc0NTYwNTQ2OSBj LTguMjc4MDIxODEyNDM4OTY1LDAgLTE1LjEzMTg2ODM2MjQyNjc1OCwyLjY1OTA5MDk5NTc4ODU3 NCAtMjAuNDcyNTI4NDU3NjQxNiw3Ljk3NzI3MjUxMDUyODU2NDUgcy04LjAxMDk4OTE4OTE0Nzk1 LDEyLjE0MzE4MTgwMDg0MjI4NSAtOC4wMTA5ODkxODkxNDc5NSwyMC4zODYzNjM5ODMxNTQyOTcg djE3MC4xODE4MjM3MzA0Njg3NSBjMCw4LjI0MzE4MjE4MjMxMjAxMiAyLjY3MDMyOTU3MDc3MDI2 MzcsMTUuMDY4MTgxOTkxNTc3MTQ4IDguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3 IHMxMi4xOTQ1MDU2OTE1MjgzMiw3Ljk3NzI3MjUxMDUyODU2NDUgMjAuNDcyNTI4NDU3NjQxNiw3 Ljk3NzI3MjUxMDUyODU2NDUgaDI4NC44MzUxNzQ1NjA1NDY5IGM4LjI3ODAyMTgxMjQzODk2NSww IDE1LjEzMTg2ODM2MjQyNjc1OCwtMi42NTkwOTA5OTU3ODg1NzQgMjAuNDcyNTI4NDU3NjQxNiwt Ny45NzcyNzI1MTA1Mjg1NjQ1IFMxNTI1LjQ5NTYwNTQ2ODc1LDEwNDguOTE4MzAwMTUxODI1IDE1 MjUuNDk1NjA1NDY4NzUsMTA0MC42NzQ4OTE5NDg3IHpNMTUyNS40OTU2MDU0Njg3NSw3MDAuMzEw OTM5MzExOTgxMiBWNTMwLjEyOTg0ODAwMzM4NzUgYzAsLTguMjQzMTgyMTgyMzEyMDEyIC0yLjY3 MDMyOTU3MDc3MDI2MzcsLTE1LjA2ODE4MTk5MTU3NzE0OCAtOC4wMTA5ODkxODkxNDc5NSwtMjAu Mzg2MzYzOTgzMTU0Mjk3IHMtMTIuMTk0NTA1NjkxNTI4MzIsLTcuOTc3MjcyNTEwNTI4NTY0NSAt MjAuNDcyNTI4NDU3NjQxNiwtNy45NzcyNzI1MTA1Mjg1NjQ1IGgtMjg0LjgzNTE3NDU2MDU0Njkg Yy04LjI3ODAyMTgxMjQzODk2NSwwIC0xNS4xMzE4NjgzNjI0MjY3NTgsMi42NTkwOTA5OTU3ODg1 NzQgLTIwLjQ3MjUyODQ1NzY0MTYsNy45NzcyNzI1MTA1Mjg1NjQ1IHMtOC4wMTA5ODkxODkxNDc5 NSwxMi4xNDMxODE4MDA4NDIyODUgLTguMDEwOTg5MTg5MTQ3OTUsMjAuMzg2MzYzOTgzMTU0Mjk3 IHYxNzAuMTgxODIzNzMwNDY4NzUgYzAsOC4yNDMxODIxODIzMTIwMTIgMi42NzAzMjk1NzA3NzAy NjM3LDE1LjA2ODE4MTk5MTU3NzE0OCA4LjAxMDk4OTE4OTE0Nzk1LDIwLjM4NjM2Mzk4MzE1NDI5 NyBzMTIuMTk0NTA1NjkxNTI4MzIsNy45NzcyNzI1MTA1Mjg1NjQ1IDIwLjQ3MjUyODQ1NzY0MTYs Ny45NzcyNzI1MTA1Mjg1NjQ1IGgyODQuODM1MTc0NTYwNTQ2OSBjOC4yNzgwMjE4MTI0Mzg5NjUs MCAxNS4xMzE4NjgzNjI0MjY3NTgsLTIuNjU5MDkwOTk1Nzg4NTc0IDIwLjQ3MjUyODQ1NzY0MTYs LTcuOTc3MjcyNTEwNTI4NTY0NSBTMTUyNS40OTU2MDU0Njg3NSw3MDguNTU0MTAzMzc0NDgxMiAx NTI1LjQ5NTYwNTQ2ODc1LDcwMC4zMTA5MzkzMTE5ODEyIHpNMTYzOS40Mjk2ODc1LDQxNi42NzU0 NDEyNjUxMDYyIHY5NjQuMzYzNjQ3NDYwOTM3NSBjMCwzOSAtMTMuOTc0NzI0NzY5NTkyMjg1LDcy LjQxNTkwODgxMzQ3NjU2IC00MS44MzUxNjY5MzExNTIzNDQsMTAwLjE1OTA4ODEzNDc2NTYyIHMt NjEuNDE3NTgzNDY1NTc2MTcsNDEuNjU5MDkxOTQ5NDYyODkgLTEwMC41ODI0MjAzNDkxMjExLDQx LjY1OTA5MTk0OTQ2Mjg5IEgzMDAuNzAzNDMwMTc1NzgxMjUgYy0zOS4xNjQ4MzY4ODM1NDQ5Miww IC03Mi43MjE5NzcyMzM4ODY3MiwtMTMuOTE1OTA4ODEzNDc2NTYyIC0xMDAuNTgyNDIwMzQ5MTIx MSwtNDEuNjU5MDkxOTQ5NDYyODkgcy00MS44MzUxNjY5MzExNTIzNDQsLTYxLjE1OTA5MTk0OTQ2 Mjg5IC00MS44MzUxNjY5MzExNTIzNDQsLTEwMC4xNTkwODgxMzQ3NjU2MiBWNDE2LjY3NTQ0MTI2 NTEwNjIgYzAsLTM5IDEzLjk3NDcyNDc2OTU5MjI4NSwtNzIuNDE1OTA4ODEzNDc2NTYgNDEuODM1 MTY2OTMxMTUyMzQ0LC0xMDAuMTU5MDg4MTM0NzY1NjIgczYxLjQxNzU4MzQ2NTU3NjE3LC00MS42 NTkwOTE5NDk0NjI4OSAxMDAuNTgyNDIwMzQ5MTIxMSwtNDEuNjU5MDkxOTQ5NDYyODkgaDExOTYu MzA3NzM5MjU3ODEyNSBjMzkuMTY0ODM2ODgzNTQ0OTIsMCA3Mi43MjE5NzcyMzM4ODY3MiwxMy45 MTU5MDg4MTM0NzY1NjIgMTAwLjU4MjQyMDM0OTEyMTEsNDEuNjU5MDkxOTQ5NDYyODkgUzE2Mzku NDI5Njg3NSwzNzcuNjc1NDQxMjY1MTA2MiAxNjM5LjQyOTY4NzUsNDE2LjY3NTQ0MTI2NTEwNjIg eiIgaWQ9InN2Z18xIi8+PGcgaWQ9InN2Z18yIiBjbGFzcz0ic2VsZWN0ZWQiPgorCTxwYXRoIGNs YXNzPSJzdDAiIGQ9Ik04OTguODU2MjYyMjA3MDMxMiwxMzQyLjc0OTExMDY5ODcgYy0yMi42OTc4 MDE1ODk5NjU4MiwwIC00My4wODEzMjE3MTYzMDg1OTQsLTguMzMxODE3NjI2OTUzMTI1IC01OC45 MjUyNzM4OTUyNjM2NywtMjQuMTk3NzI3MjAzMzY5MTQgbC0yODkuNDYzNzQ1MTE3MTg3NSwtMjg4 LjY4ODYyOTE1MDM5MDYgYy0xNi4zNzgwMjEyNDAyMzQzNzUsLTE1LjUxMTM2MzAyOTQ3OTk4IC0y NS4wMTIwODg3NzU2MzQ3NjYsLTM1Ljg5NzcyNzk2NjMwODU5NCAtMjUuMDEyMDg4Nzc1NjM0NzY2 LC01OC45NDMxODAwODQyMjg1MTYgYzAsLTIyLjg2ODE4MTIyODYzNzY5NSA4LjI3ODAyMTgxMjQz ODk2NSwtNDIuNzIyNzI4NzI5MjQ4MDUgMjQuNjU2MDQ0MDA2MzQ3NjU2LC01OS4wMzE4MTQ1NzUx OTUzMSBsMzIuODQ1MDU4NDQxMTYyMTEsLTMzLjE1MDAwMTUyNTg3ODkwNiBjMC4xNzgwMjE5ODIz MTIyMDI0NSwtMC4xNzcyNzI3MjIxMjUwNTM0IDAuNDQ1MDU0OTQ4MzI5OTI1NTQsLTAuNDQzMTgx ODEyNzYzMjE0MSAwLjYyMzA3NjkxNTc0MDk2NjgsLTAuNjIwNDU0NTQ5Nzg5NDI4NyBjMTYuNDY3 MDMzMzg2MjMwNDcsLTE1LjUxMTM2MzAyOTQ3OTk4IDM2Ljc2MTUzOTQ1OTIyODUxNiwtMjMuNjY1 OTA4ODEzNDc2NTYyIDU4LjgzNjI2MTc0OTI2NzU4LC0yMy42NjU5MDg4MTM0NzY1NjIgYzIyLjY5 NzgwMTU4OTk2NTgyLDAgNDMuMDgxMzIxNzE2MzA4NTk0LDguMzMxODE3NjI2OTUzMTI1IDU4Ljky NTI3Mzg5NTI2MzY3LDI0LjE5NzcyNzIwMzM2OTE0IGw4NS4yNzI1Mjk2MDIwNTA3OCw4NC45MTM2 MzUyNTM5MDYyNSBWNzE1LjU1NjQyMjcxMDQxODcgYzAsLTIyLjI0NzcyNjQ0MDQyOTY4OCA4LjU0 NTA1NTM4OTQwNDI5NywtNDIuNTQ1NDU1OTMyNjE3MTkgMjQuNzQ1MDU0MjQ0OTk1MTE3LC01OC42 NzcyNjg5ODE5MzM1OTQgczM2LjU4MzUxNTE2NzIzNjMzLC0yNC42NDA5MDcyODc1OTc2NTYgNTgu OTI1MjczODk1MjYzNjcsLTI0LjY0MDkwNzI4NzU5NzY1NiBoNTYuOTY3MDMzMzg2MjMwNDcgYzIy LjM0MTc1ODcyODAyNzM0NCwwIDQyLjcyNTI3MzEzMjMyNDIyLDguNTA5MDkxMzc3MjU4MyA1OC45 MjUyNzM4OTUyNjM2NywyNC42NDA5MDcyODc1OTc2NTYgczI0Ljc0NTA1NDI0NDk5NTExNywzNi40 Mjk1NDI1NDE1MDM5MDYgMjQuNzQ1MDU0MjQ0OTk1MTE3LDU4LjY3NzI2ODk4MTkzMzU5NCB2MjQ3 LjgyNzI3MDUwNzgxMjUgbDg1LjI3MjUyOTYwMjA1MDc4LC04NC45MTM2MzUyNTM5MDYyNSBjMTUu OTMyOTY3MTg1OTc0MTIxLC0xNS44NjU5MDg2MjI3NDE3IDM2LjIyNzQ3NDIxMjY0NjQ4NCwtMjQu MTk3NzI3MjAzMzY5MTQgNTguOTI1MjczODk1MjYzNjcsLTI0LjE5NzcyNzIwMzM2OTE0IGMyMi4w NzQ3MjQxOTczODc2OTUsMCA0Mi40NTgyNDQzMjM3MzA0Nyw4LjE1NDU0NDgzMDMyMjI2NiA1OC44 MzYyNjE3NDkyNjc1OCwyMy42NjU5MDg4MTM0NzY1NjIgYzAuMTc4MDIxOTgyMzEyMjAyNDUsMC4x NzcyNzI3MjIxMjUwNTM0IDAuMzU2MDQzOTY0NjI0NDA0OSwwLjM1NDU0NTQ0NDI1MDEwNjggMC41 MzQwNjU5NjE4Mzc3Njg2LDAuNTMxODE4MjExMDc4NjQzOCBsMzMuMzc5MTE5ODczMDQ2ODc1LDMz LjIzODYzNjAxNjg0NTcgYzAuMTc4MDIxOTgyMzEyMjAyNDUsMC4xNzcyNzI3MjIxMjUwNTM0IDAu MzU2MDQzOTY0NjI0NDA0OSwwLjM1NDU0NTQ0NDI1MDEwNjggMC41MzQwNjU5NjE4Mzc3Njg2LDAu NTMxODE4MjExMDc4NjQzOCBjMTUuNTc2OTIzMzcwMzYxMzI4LDE2LjM5NzcyNzk2NjMwODU5NCAy My43NjU5MzM5OTA0Nzg1MTYsMzYuNjA2ODE1MzM4MTM0NzY2IDIzLjc2NTkzMzk5MDQ3ODUxNiw1 OC41ODg2MzQ0OTA5NjY4IGMwLDIyLjYwMjI3MjAzMzY5MTQwNiAtOC4zNjcwMzMwMDQ3NjA3NDIs NDIuOTAwMDAxNTI1ODc4OTA2IC0yNC4yOTk5OTkyMzcwNjA1NDcsNTguNjc3MjY4OTgxOTMzNTk0 IGwtMjg5LjczMDc3MzkyNTc4MTI1LDI4OC45NTQ1Mjg4MDg1OTM3NSBjLTAuMTc4MDIxOTgyMzEy MjAyNDUsMC4xNzcyNzI3MjIxMjUwNTM0IC0wLjM1NjA0Mzk2NDYyNDQwNDksMC4zNTQ1NDU0NDQy NTAxMDY4IC0wLjUzNDA2NTk2MTgzNzc2ODYsMC41MzE4MTgyMTEwNzg2NDM4IEM5NDEuMzE0NTE0 MTYwMTU2MiwxMzM0LjUwNTgyNDU2NTg4NzUgOTIwLjkzMDk2OTIzODI4MTIsMTM0Mi43NDkxMTA2 OTg3IDg5OC44NTYyNjIyMDcwMzEyLDEzNDIuNzQ5MTEwNjk4NyB6IiBpZD0ic3ZnXzMiLz4KKwk8 cGF0aCBjbGFzcz0ic3QxIiBkPSJNOTI3LjMzOTc4MjcxNDg0MzgsNjU4LjgyOTEyNzc4ODU0Mzcg YzE1LjM5ODkwMDk4NTcxNzc3MywwIDI4Ljc1MDU0OTMxNjQwNjI1LDUuNTg0MDkxMTg2NTIzNDM3 NSA0MC4wNTQ5NDY4OTk0MTQwNiwxNi44NDA5MDgwNTA1MzcxMSBzMTYuOTEyMDg4Mzk0MTY1MDQs MjQuNTUyMjcyNzk2NjMwODYgMTYuOTEyMDg4Mzk0MTY1MDQsMzkuODg2MzYzOTgzMTU0MyB2MzEy IGwxMzAuODQ2MTYwODg4NjcxODgsLTEzMC4yOTU0NTU5MzI2MTcyIGMxMC45NDgzNTE4NjAwNDYz ODcsLTEwLjkwMjI3MzE3ODEwMDU4NiAyNC4yOTk5OTkyMzcwNjA1NDcsLTE2LjM5NzcyNzk2NjMw ODU5NCA0MC4wNTQ5NDY4OTk0MTQwNiwtMTYuMzk3NzI3OTY2MzA4NTk0IGMxNS4zOTg5MDA5ODU3 MTc3NzMsMCAyOC45Mjg1NzE3MDEwNDk4MDUsNS40OTU0NTQzMTEzNzA4NSA0MC41LDE2LjM5Nzcy Nzk2NjMwODU5NCBsMzMuMzc5MTE5ODczMDQ2ODc1LDMzLjIzODYzNjAxNjg0NTcgYzEwLjk0ODM1 MTg2MDA0NjM4NywxMS41MjI3MjcwMTI2MzQyNzcgMTYuNDY3MDMzMzg2MjMwNDcsMjQuOTk1NDU0 Nzg4MjA4MDA4IDE2LjQ2NzAzMzM4NjIzMDQ3LDQwLjMyOTU0NDA2NzM4MjgxIGMwLDE1LjY4ODYz Njc3OTc4NTE1NiAtNS41MTg2ODEwNDkzNDY5MjQsMjguOTg0MDkwODA1MDUzNzEgLTE2LjQ2NzAz MzM4NjIzMDQ3LDM5Ljg4NjM2Mzk4MzE1NDMgbC0yODkuNzMwNzczOTI1NzgxMjUsMjg4Ljk1NDUy ODgwODU5Mzc1IGMtMTEuNTcxNDI4Mjk4OTUwMTk1LDEwLjkwMjI3MzE3ODEwMDU4NiAtMjUuMTAx MDk5MDE0MjgyMjI3LDE2LjM5NzcyNzk2NjMwODU5NCAtNDAuNSwxNi4zOTc3Mjc5NjYzMDg1OTQg Yy0xNS43NTQ5NDU3NTUwMDQ4ODMsMCAtMjkuMTA2NTk0MDg1NjkzMzYsLTUuNDk1NDU0MzExMzcw ODUgLTQwLjA1NDk0Njg5OTQxNDA2LC0xNi4zOTc3Mjc5NjYzMDg1OTQgbC0yODkuNzMwNzczOTI1 NzgxMjUsLTI4OC45NTQ1Mjg4MDg1OTM3NSBjLTExLjMwNDM5NTY3NTY1OTE4LC0xMC42MzYzNjM5 ODMxNTQyOTcgLTE2LjkxMjA4ODM5NDE2NTA0LC0yMy45MzE4MTgwMDg0MjI4NSAtMTYuOTEyMDg4 Mzk0MTY1MDQsLTM5Ljg4NjM2Mzk4MzE1NDMgYzAsLTE1LjY4ODYzNjc3OTc4NTE1NiA1LjYwNzY5 MjcxODUwNTg1OSwtMjkuMDcyNzI1Mjk2MDIwNTA4IDE2LjkxMjA4ODM5NDE2NTA0LC00MC4zMjk1 NDQwNjczODI4MSBsMzIuOTM0MDY2NzcyNDYwOTQsLTMzLjIzODYzNjAxNjg0NTcgYzExLjU3MTQy ODI5ODk1MDE5NSwtMTAuOTAyMjczMTc4MTAwNTg2IDI1LjEwMTA5OTAxNDI4MjIyNywtMTYuMzk3 NzI3OTY2MzA4NTk0IDQwLjUsLTE2LjM5NzcyNzk2NjMwODU5NCBjMTUuNzU0OTQ1NzU1MDA0ODgz LDAgMjkuMTA2NTk0MDg1NjkzMzYsNS40OTU0NTQzMTEzNzA4NSA0MC4wNTQ5NDY4OTk0MTQwNiwx Ni4zOTc3Mjc5NjYzMDg1OTQgbDEzMC44NDYxNjA4ODg2NzE4OCwxMzAuMjk1NDU1OTMyNjE3MiB2 LTMxMiBjMCwtMTUuMzM0MDkwMjMyODQ5MTIxIDUuNjA3NjkyNzE4NTA1ODU5LC0yOC42Mjk1NDUy MTE3OTE5OTIgMTYuOTEyMDg4Mzk0MTY1MDQsLTM5Ljg4NjM2Mzk4MzE1NDMgczI0LjY1NjA0NDAw NjM0NzY1NiwtMTYuODQwOTA4MDUwNTM3MTEgNDAuMDU0OTQ2ODk5NDE0MDYsLTE2Ljg0MDkwODA1 MDUzNzExIEw5MjcuMzM5NzgyNzE0ODQzOCw2NTguODI5MTI3Nzg4NTQzNyBNOTI3LjMzOTc4Mjcx NDg0MzgsNjA1LjY0NzMwNDA1ODA3NSBoLTU2Ljk2NzAzMzM4NjIzMDQ3IGMtMjkuNjQwNjU5MzMy Mjc1MzksMCAtNTYuNTIxOTgwMjg1NjQ0NTMsMTEuMTY4MTgyMzczMDQ2ODc1IC03Ny43OTU2MDg1 MjA1MDc4MSwzMi40NDA5MDY1MjQ2NTgyIGMtMjEuMzYyNjM2NTY2MTYyMTEsMjEuMjcyNzI3OTY2 MzA4NTk0IC0zMi41NzgwMjIwMDMxNzM4Myw0OC4wNDA5MDg4MTM0NzY1NiAtMzIuNTc4MDIyMDAz MTczODMsNzcuNDY4MTg1NDI0ODA0NjkgdjE4My41NjU5MTc5Njg3NSBsLTM5LjY5ODg5ODMxNTQy OTY5LC0zOS41MzE4MTQ1NzUxOTUzMSBjLTIxLjAwNjU5MzcwNDIyMzYzMywtMjAuOTE4MTgyMzcz MDQ2ODc1IC00Ny44ODc5MTI3NTAyNDQxNCwtMzEuOTk3NzI2NDQwNDI5Njg4IC03Ny43OTU2MDg1 MjA1MDc4MSwtMzEuOTk3NzI2NDQwNDI5Njg4IGMtMjkuMDE3NTgxOTM5Njk3MjY2LDAgLTU1Ljcy MDg3ODYwMTA3NDIyLDEwLjcyNTAwMDM4MTQ2OTcyNyAtNzcuMTcyNTIzNDk4NTM1MTYsMzAuOTM0 MDkxNTY3OTkzMTY0IGMtMC40NDUwNTQ5NDgzMjk5MjU1NCwwLjQ0MzE4MTgxMjc2MzIxNDEgLTAu ODkwMTA5ODk2NjU5ODUxMSwwLjg4NjM2MzYyNTUyNjQyODIgLTEuMzM1MTY0Nzg1Mzg1MTMxOCwx LjI0MDkwOTA5OTU3ODg1NzQgbC0zMi44NDUwNTg0NDExNjIxMSwzMy4xNTAwMDE1MjU4Nzg5MDYg Yy0yMS4xODQ2MTQxODE1MTg1NTUsMjEuMTg0MDg5NjYwNjQ0NTMgLTMyLjQwMDAwMTUyNTg3ODkw Niw0OC4wNDA5MDg4MTM0NzY1NiAtMzIuNDAwMDAxNTI1ODc4OTA2LDc3LjgyMjczMTAxODA2NjQg YzAsMzAuNDAyMjcxMjcwNzUxOTUzIDExLjM5MzQwNjg2Nzk4MDk1Nyw1Ny4yNTkwOTA0MjM1ODM5 ODQgMzMuMDIzMDc1MTAzNzU5NzY2LDc3LjkxMTM2MTY5NDMzNTk0IGwyODkuMjg1NzA1NTY2NDA2 MjUsMjg4LjUxMTM1MjUzOTA2MjUgYzIxLjAwNjU5MzcwNDIyMzYzMywyMC45MTgxODIzNzMwNDY4 NzUgNDcuOTc2OTI0ODk2MjQwMjM0LDMxLjk5NzcyNjQ0MDQyOTY4OCA3Ny44ODQ2MTMwMzcxMDkz OCwzMS45OTc3MjY0NDA0Mjk2ODggYzI5LjAxNzU4MTkzOTY5NzI2NiwwIDU1LjcyMDg3ODYwMTA3 NDIyLC0xMC43MjUwMDAzODE0Njk3MjcgNzcuMTcyNTIzNDk4NTM1MTYsLTMwLjkzNDA5MTU2Nzk5 MzE2NCBjMC4zNTYwNDM5NjQ2MjQ0MDQ5LC0wLjM1NDU0NTQ0NDI1MDEwNjggMC43MTIwODc5Mjky NDg4MDk4LC0wLjcwOTA5MDg4ODUwMDIxMzYgMS4wNjgxMzE5MjM2NzU1MzcsLTEuMDYzNjM2NDIy MTU3Mjg3NiBsMjg5LjczMDc3MzkyNTc4MTI1LC0yODguOTU0NTI4ODA4NTkzNzUgYzIxLjAwNjU5 MzcwNDIyMzYzMywtMjAuOTE4MTgyMzczMDQ2ODc1IDMyLjA0Mzk1Njc1NjU5MTgsLTQ3LjY4NjM2 MzIyMDIxNDg0NCAzMi4wNDM5NTY3NTY1OTE4LC03Ny40NjgxODU0MjQ4MDQ2OSBjMCwtMjguODk1 NDUyNDk5Mzg5NjUgLTEwLjc3MDMzMDQyOTA3NzE0OCwtNTUuNDg2MzYyNDU3Mjc1MzkgLTMxLjA2 NDgzNjUwMjA3NTE5NSwtNzYuODQ3NzI0OTE0NTUwNzggYy0wLjM1NjA0Mzk2NDYyNDQwNDksLTAu MzU0NTQ1NDQ0MjUwMTA2OCAtMC43MTIwODc5MjkyNDg4MDk4LC0wLjcwOTA5MDg4ODUwMDIxMzYg LTEuMDY4MTMxOTIzNjc1NTM3LC0xLjA2MzYzNjQyMjE1NzI4NzYgbC0zMy4zNzkxMTk4NzMwNDY4 NzUsLTMzLjIzODYzNjAxNjg0NTcgYy0wLjM1NjA0Mzk2NDYyNDQwNDksLTAuMzU0NTQ1NDQ0MjUw MTA2OCAtMC43MTIwODc5MjkyNDg4MDk4LC0wLjcwOTA5MDg4ODUwMDIxMzYgLTEuMDY4MTMxOTIz Njc1NTM3LC0xLjA2MzYzNjQyMjE1NzI4NzYgYy0yMS40NTE2NDg3MTIxNTgyMDMsLTIwLjIwOTA4 OTI3OTE3NDgwNSAtNDguMTU0OTQ1MzczNTM1MTU2LC0zMC45MzQwOTE1Njc5OTMxNjQgLTc3LjE3 MjUyMzQ5ODUzNTE2LC0zMC45MzQwOTE1Njc5OTMxNjQgYy0yOS45MDc2OTE5NTU1NjY0MDYsMCAt NTYuNzg5MDA5MDk0MjM4MjgsMTEuMDc5NTQ1MDIxMDU3MTI5IC03Ny43OTU2MDg1MjA1MDc4MSwz MS45OTc3MjY0NDA0Mjk2ODggbC0zOS42OTg4OTgzMTU0Mjk2OSwzOS41MzE4MTQ1NzUxOTUzMSBW NzE1LjU1NjQyMjcxMDQxODcgYzAsLTI5LjUxNTkwNzI4NzU5NzY1NiAtMTEuMjE1Mzg1NDM3MDEx NzE5LC01Ni4yODQwOTE5NDk0NjI4OSAtMzIuNTc4MDIyMDAzMTczODMsLTc3LjQ2ODE4NTQyNDgw NDY5IEM5ODMuODYxNzU1MzcxMDkzOCw2MTYuOTA0MTM5OTk1NTc1IDk1Ni45ODA0Njg3NSw2MDUu NjQ3MzA0MDU4MDc1IDkyNy4zMzk3ODI3MTQ4NDM4LDYwNS42NDczMDQwNTgwNzUgTDkyNy4zMzk3 ODI3MTQ4NDM4LDYwNS42NDczMDQwNTgwNzUgeiIgaWQ9InN2Z180Ii8+Cis8L2c+PC9nPjwvc3Zn PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKaW5kZXggZjdmNmY4OTcuLjBjZGY4NjFh IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVk aXRvci5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVk aXRvci5qcwpAQCAtODcsOCArODcsOCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAg ICAvLyBCaW5kIGFsbCB0aGUgZXZlbnRzCiAgICAgZXZlbnRzOiB7CiAgICAgICAnY2xpY2sgLmJ0 bi1sb2FkLWZpbGUnOiAnb25fZmlsZV9sb2FkJywKLSAgICAgICdjbGljayAjYnRuLXNhdmUnOiAn b25fc2F2ZScsCi0gICAgICAnY2xpY2sgI2J0bi1maWxlLW1lbnUtc2F2ZSc6ICdvbl9zYXZlJywK KyAgICAgICdjbGljayAjYnRuLXNhdmUtZmlsZSc6ICdvbl9zYXZlX2ZpbGUnLAorICAgICAgJ2Ns aWNrICNidG4tZmlsZS1tZW51LXNhdmUnOiAnb25fc2F2ZV9maWxlJywKICAgICAgICdjbGljayAj YnRuLWZpbGUtbWVudS1zYXZlLWFzJzogJ29uX3NhdmVfYXMnLAogICAgICAgJ2NsaWNrICNidG4t ZmluZCc6ICdvbl9maW5kJywKICAgICAgICdjbGljayAjYnRuLWZpbmQtbWVudS1maW5kJzogJ29u X2ZpbmQnLApAQCAtOTksNiArOTksNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAg ICAgICdjbGljayAjYnRuLWZpbmQtbWVudS1maW5kLXBlcnNpc3RlbnQnOiAnb25fZmluZF9wZXJz aXN0ZW50JywKICAgICAgICdjbGljayAjYnRuLWZpbmQtbWVudS1qdW1wJzogJ29uX2p1bXAnLAog ICAgICAgJ2NsaWNrICNidG4tZGVsZXRlLXJvdyc6ICdvbl9kZWxldGUnLAorICAgICAgJ2NsaWNr ICNidG4tc2F2ZS1kYXRhJzogJ29uX3NhdmVfZGF0YScsCiAgICAgICAnY2xpY2sgI2J0bi1maWx0 ZXInOiAnb25fc2hvd19maWx0ZXInLAogICAgICAgJ2NsaWNrICNidG4tZmlsdGVyLW1lbnUnOiAn b25fc2hvd19maWx0ZXInLAogICAgICAgJ2NsaWNrICNidG4taW5jbHVkZS1maWx0ZXInOiAnb25f aW5jbHVkZV9maWx0ZXInLApAQCAtMzk0LDI2ICszOTUsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5 dG9vbCcsIFsKICAgICAgICAgXy5lYWNoKHdpbmRvdy50b3AucGdBZG1pbi5Ccm93c2VyLmRvY2tl ci5maW5kUGFuZWxzKCdmcm1fZGF0YWdyaWQnKSwgZnVuY3Rpb24ocCkgewogICAgICAgICAgIGlm IChwLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICBwLm9uKHdjRG9ja2VyLkVWRU5ULkNMT1NJ TkcsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAvLyBPbmx5IGlmIHdlIGNhbiBlZGl0IGRh dGEgdGhlbiBwZXJmb3JtIHRoaXMgY2hlY2sKLSAgICAgICAgICAgICAgdmFyIG5vdGlmeSA9IGZh bHNlLAotICAgICAgICAgICAgICAgIG1zZzsKLSAgICAgICAgICAgICAgaWYgKHNlbGYuaGFuZGxl ci5jYW5fZWRpdAotICAgICAgICAgICAgICAgICAgJiYgc2VsZi5wcmVmZXJlbmNlcy5wcm9tcHRf c2F2ZV9kYXRhX2NoYW5nZXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgZGF0YV9zdG9yZSA9IHNl bGYuaGFuZGxlci5kYXRhX3N0b3JlOwotICAgICAgICAgICAgICAgIGlmIChkYXRhX3N0b3JlICYm IChfLnNpemUoZGF0YV9zdG9yZS5hZGRlZCkgfHwKLSAgICAgICAgICAgICAgICAgICAgXy5zaXpl KGRhdGFfc3RvcmUudXBkYXRlZCkpKSB7Ci0gICAgICAgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0 KCdUaGUgZGF0YSBoYXMgY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSBjaGFuZ2VzPycpOwot ICAgICAgICAgICAgICAgICAgbm90aWZ5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZi5oYW5kbGVyLmlzX3F1ZXJ5X3Rvb2wgJiYgc2VsZi5o YW5kbGVyLmlzX3F1ZXJ5X2NoYW5nZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzZWxm LnByZWZlcmVuY2VzLnByb21wdF9zYXZlX3F1ZXJ5X2NoYW5nZXMpIHsKLSAgICAgICAgICAgICAg ICBtc2cgPSBnZXR0ZXh0KCdUaGUgdGV4dCBoYXMgY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2 ZSBjaGFuZ2VzPycpOwotICAgICAgICAgICAgICAgIG5vdGlmeSA9IHRydWU7Ci0gICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICAgaWYgKG5vdGlmeSkgewotICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLnVzZXJfY29uZmlybWF0aW9uKHAsIG1zZyk7Ci0gICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZXIu Y2hlY2tfbmVlZGVkX2NvbmZpcm1hdGlvbnNfYmVmb3JlX2Nsb3NpbmdfcGFuZWwodHJ1ZSk7CiAg ICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgLy8gU2V0IGZvY3VzIG9uIHF1ZXJ5IHRvb2wg b2YgYWN0aXZlIHBhbmVsCkBAIC02NTcsNjIgKzYzOSw2IEBAIGRlZmluZSgndG9vbHMucXVlcnl0 b29sJywgWwogICAgICAgfQogICAgIH0sCiAKLSAgICAvKiBUbyBwcm9tcHQgdXNlciBmb3IgdW5z YXZlZCBjaGFuZ2VzICovCi0gICAgdXNlcl9jb25maXJtYXRpb246IGZ1bmN0aW9uKHBhbmVsLCBt c2cpIHsKLSAgICAgIC8vIElmIHRoZXJlIGlzIGFueXRoaW5nIHRvIHNhdmUgdGhlbiBwcm9tcHQg dXNlcgotICAgICAgdmFyIHRoYXQgPSB0aGlzOwotCi0gICAgICBhbGVydGlmeS5jb25maXJtU2F2 ZSB8fCBhbGVydGlmeS5kaWFsb2coJ2NvbmZpcm1TYXZlJywgZnVuY3Rpb24oKSB7Ci0gICAgICAg IHJldHVybiB7Ci0gICAgICAgICAgbWFpbjogZnVuY3Rpb24odGl0bGUsIG1lc3NhZ2UpIHsKLSAg ICAgICAgICAgIHRoaXMuc2V0SGVhZGVyKHRpdGxlKTsKLSAgICAgICAgICAgIHRoaXMuc2V0Q29u dGVudChtZXNzYWdlKTsKLSAgICAgICAgICB9LAotICAgICAgICAgIHNldHVwOiBmdW5jdGlvbigp IHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgIGJ1dHRvbnM6IFt7Ci0gICAg ICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCi0gICAgICAgICAgICAgICAga2V5 OiAyNywgLy8gRVNDCi0gICAgICAgICAgICAgICAgaW52b2tlT25DbG9zZTogdHJ1ZSwKLSAgICAg ICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXNlY29uZGFyeSBmYSBmYS1sZyBmYS10aW1l cyBwZy1hbGVydGlmeS1idXR0b24nLAotICAgICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAg ICAgdGV4dDogZ2V0dGV4dCgnRG9uXCd0IHNhdmUnKSwKLSAgICAgICAgICAgICAgICBjbGFzc05h bWU6ICdidG4gYnRuLXNlY29uZGFyeSBmYSBmYS1sZyBmYS10cmFzaC1vIHBnLWFsZXJ0aWZ5LWJ1 dHRvbicsCi0gICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0 KCdTYXZlJyksCi0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZh IGZhLWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgfV0sCi0g ICAgICAgICAgICAgIGZvY3VzOiB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudDogMCwKLSAgICAg ICAgICAgICAgICBzZWxlY3Q6IGZhbHNlLAotICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg ICBvcHRpb25zOiB7Ci0gICAgICAgICAgICAgICAgbWF4aW1pemFibGU6IGZhbHNlLAotICAgICAg ICAgICAgICAgIHJlc2l6YWJsZTogZmFsc2UsCi0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAg ICB9OwotICAgICAgICAgIH0sCi0gICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGNsb3NlRXZl bnQpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoY2xvc2VFdmVudC5pbmRleCkgewotICAgICAgICAg ICAgY2FzZSAwOiAvLyBDYW5jZWwKLSAgICAgICAgICAgICAgLy9EbyBub3RoaW5nLgotICAgICAg ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgMTogLy8gRG9uJ3QgU2F2ZQotICAgICAg ICAgICAgICB0aGF0LmhhbmRsZXIuY2xvc2Vfb25fc2F2ZSA9IGZhbHNlOwotICAgICAgICAgICAg ICB0aGF0LmhhbmRsZXIuY2xvc2UoKTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg ICBjYXNlIDI6IC8vU2F2ZQotICAgICAgICAgICAgICB0aGF0LmhhbmRsZXIuY2xvc2Vfb25fc2F2 ZSA9IHRydWU7Ci0gICAgICAgICAgICAgIHRoYXQuaGFuZGxlci5fc2F2ZSh0aGF0LCB0aGF0Lmhh bmRsZXIpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9 LAotICAgICAgICB9OwotICAgICAgfSk7Ci0gICAgICBhbGVydGlmeS5jb25maXJtU2F2ZShnZXR0 ZXh0KCdTYXZlIGNoYW5nZXM/JyksIG1zZyk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwK LQogICAgIC8qIFJlZ2FyZGluZyBTbGlja0dyaWQgdXNhZ2UgaW4gcmVuZGVyX2dyaWQgZnVuY3Rp b24uCiAKICAgICAgU2xpY2tHcmlkIFBsdWdpbnM6CkBAIC03NzYsMTYgKzcwMiwxNiBAQCBkZWZp bmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICByZW5kZXJfZ3JpZDogZnVuY3Rpb24oY29sbGVj dGlvbiwgY29sdW1ucywgaXNfZWRpdGFibGUsIGNsaWVudF9wcmltYXJ5X2tleSwgcm93c19hZmZl Y3RlZCkgewogICAgICAgdmFyIHNlbGYgPSB0aGlzOwogCi0gICAgICAvLyBUaGlzIHdpbGwgd29y ayBhcyBkYXRhIHN0b3JlIGFuZCBob2xkcyBhbGwgdGhlCi0gICAgICAvLyBpbnNlcnRlZC91cGRh dGVkL2RlbGV0ZWQgZGF0YSBmcm9tIGdyaWQKLSAgICAgIHNlbGYuaGFuZGxlci5kYXRhX3N0b3Jl ID0gewotICAgICAgICB1cGRhdGVkOiB7fSwKLSAgICAgICAgYWRkZWQ6IHt9LAotICAgICAgICBz dGFnZWRfcm93czoge30sCi0gICAgICAgIGRlbGV0ZWQ6IHt9LAotICAgICAgICB1cGRhdGVkX2lu ZGV4OiB7fSwKLSAgICAgICAgYWRkZWRfaW5kZXg6IHt9LAotICAgICAgfTsKKyAgICAgIHNlbGYu aGFuZGxlci5udW1iZXJPZk1vZGlmaWVkQ2VsbHMgPSAwOworCisgICAgICBzZWxmLmhhbmRsZXIu cmVzZXRfZGF0YV9zdG9yZSgpOworCisgICAgICAvLyBrZWVwIHRyYWNrIG9mIG5ld2x5IGFkZGVk IHJvd3MKKyAgICAgIHNlbGYuaGFuZGxlci5yb3dzX3RvX2Rpc2FibGUgPSBuZXcgQXJyYXkoKTsK KyAgICAgIC8vIFRlbXBvcmFyaWx5IGhvbGQgbmV3IHJvd3MgYWRkZWQKKyAgICAgIHNlbGYuaGFu ZGxlci50ZW1wX25ld19yb3dzID0gbmV3IEFycmF5KCk7CisgICAgICBzZWxmLmhhbmRsZXIuaGFz X21vcmVfcm93cyA9IGZhbHNlOworICAgICAgc2VsZi5oYW5kbGVyLmZldGNoaW5nX3Jvd3MgPSBm YWxzZTsKIAogICAgICAgLy8gVG8gc3RvcmUgcHJpbWFyeSBrZXlzIGJlZm9yZSB0aGV5IGdldHMg Y2hhbmdlZAogICAgICAgc2VsZi5oYW5kbGVyLnByaW1hcnlfa2V5c19kYXRhID0ge307CkBAIC04 OTIsNyArODE4LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICB9CiAKICAg ICAgIHZhciBncmlkX29wdGlvbnMgPSB7Ci0gICAgICAgIGVkaXRhYmxlOiB0cnVlLAorICAgICAg ICBlZGl0YWJsZTogaXNfZWRpdGFibGUsCiAgICAgICAgIGVuYWJsZUFkZFJvdzogaXNfZWRpdGFi bGUsCiAgICAgICAgIGVuYWJsZUNlbGxOYXZpZ2F0aW9uOiB0cnVlLAogICAgICAgICBlbmFibGVD b2x1bW5SZW9yZGVyOiBmYWxzZSwKQEAgLTExMDksNiArMTAzNSwxNCBAQCBkZWZpbmUoJ3Rvb2xz LnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICBfcGsgPSBhcmdzLml0ZW1bc2VsZi5jbGllbnRfcHJp bWFyeV9rZXldIHx8IG51bGwsIC8vIFVuaXF1ZSBrZXkgdG8gaWRlbnRpZnkgcm93CiAgICAgICAg ICAgY29sdW1uX2RhdGEgPSB7fTsKIAorICAgICAgICAvLyBIaWdobGlnaHQgdGhlIGNoYW5nZWQg Y2VsbAorICAgICAgICBzZWxmLmhhbmRsZXIubnVtYmVyT2ZNb2RpZmllZENlbGxzKys7CisgICAg ICAgIGFyZ3MuZ3JpZC5hZGRDZWxsQ3NzU3R5bGVzKHNlbGYuaGFuZGxlci5udW1iZXJPZk1vZGlm aWVkQ2VsbHMsIHsKKyAgICAgICAgICBbYXJncy5yb3ddIDogeworICAgICAgICAgICAgW2NoYW5n ZWRfY29sdW1uXTogJ2hpZ2hsaWdodGVkX2dyaWRfY2VsbHMnLAorICAgICAgICAgIH0sCisgICAg ICAgIH0pOworCiAgICAgICAgIC8vIEFjY2VzcyB0byByb3cvY2VsbCB2YWx1ZSBhZnRlciBhIGNl bGwgaXMgY2hhbmdlZC4KICAgICAgICAgLy8gVGhlIHB1cnBvc2UgaXMgdG8gcmVtb3ZlIHJvd19p ZCBmcm9tIHRlbXBfbmV3X3JvdwogICAgICAgICAvLyBpZiBuZXcgcm93IGhhcyBwcmltYXJ5IGtl eSBpbnN0ZWFkIG9mIFtkZWZhdWx0X3ZhbHVlXQpAQCAtMTE2NCw3ICsxMDk4LDcgQEAgZGVmaW5l KCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8v IEVuYWJsZSBzYXZlIGJ1dHRvbgotICAgICAgICAkKCcjYnRuLXNhdmUnKS5wcm9wKCdkaXNhYmxl ZCcsIGZhbHNlKTsKKyAgICAgICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5wcm9wKCdkaXNhYmxlZCcs IGZhbHNlKTsKICAgICAgIH0uYmluZChlZGl0b3JfZGF0YSkpOwogCiAgICAgICAvLyBMaXN0ZW5l ciBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aGVuIHVzZXIgYWRkcyBuZXcgcm93cwpA QCAtMTE5Miw2ICsxMTI2LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAg ICAgJ2RhdGEnOiBpdGVtLAogICAgICAgICB9OwogICAgICAgICBzZWxmLmhhbmRsZXIuZGF0YV9z dG9yZS5hZGRlZF9pbmRleFtkYXRhX2xlbmd0aF0gPSBfa2V5OworCiAgICAgICAgIC8vIEZldGNo IGRhdGEgdHlwZSAmIGFkZCBpdCBmb3IgdGhlIGNvbHVtbgogICAgICAgICB2YXIgdGVtcCA9IHt9 OwogICAgICAgICB0ZW1wW2NvbHVtbi5uYW1lXSA9IF8ud2hlcmUodGhpcy5jb2x1bW5zLCB7CkBA IC0xMjAwLDggKzExMzUsMTcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAg IGdyaWQudXBkYXRlUm93Q291bnQoKTsKICAgICAgICAgZ3JpZC5yZW5kZXIoKTsKIAorICAgICAg ICAvLyBIaWdobGlnaHQgdGhlIGZpcnN0IGFkZGVkIGNlbGwgb2YgdGhlIG5ldyByb3cKKyAgICAg ICAgdmFyIHJvdyA9IGRhdGFWaWV3LmdldFJvd0J5SXRlbShpdGVtKTsKKyAgICAgICAgc2VsZi5o YW5kbGVyLm51bWJlck9mTW9kaWZpZWRDZWxscysrOworICAgICAgICBhcmdzLmdyaWQuYWRkQ2Vs bENzc1N0eWxlcyhzZWxmLmhhbmRsZXIubnVtYmVyT2ZNb2RpZmllZENlbGxzLCB7CisgICAgICAg ICAgW3Jvd10gOiB7CisgICAgICAgICAgICBbY29sdW1uLmZpZWxkXTogJ2hpZ2hsaWdodGVkX2dy aWRfY2VsbHMnLAorICAgICAgICAgIH0sCisgICAgICAgIH0pOworCiAgICAgICAgIC8vIEVuYWJs ZSBzYXZlIGJ1dHRvbgotICAgICAgICAkKCcjYnRuLXNhdmUnKS5wcm9wKCdkaXNhYmxlZCcsIGZh bHNlKTsKKyAgICAgICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNl KTsKICAgICAgIH0uYmluZChlZGl0b3JfZGF0YSkpOwogCiAgICAgICAvLyBMaXN0ZW4gZ3JpZCB2 aWV3cG9ydENoYW5nZWQgZXZlbnQgdG8gbG9hZCBuZXh0IGNodW5rIG9mIGRhdGEuCkBAIC0xMjUw LDkgKzExOTQsMTEgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICB9CiAgICAg ICBkYXRhVmlldy5zZXRJdGVtcyhjb2xsZWN0aW9uLCBzZWxmLmNsaWVudF9wcmltYXJ5X2tleSk7 CiAgICAgfSwKKwogICAgIGZldGNoX25leHRfYWxsOiBmdW5jdGlvbihjYikgewogICAgICAgdGhp cy5mZXRjaF9uZXh0KHRydWUsIGNiKTsKICAgICB9LAorCiAgICAgZmV0Y2hfbmV4dDogZnVuY3Rp b24oZmV0Y2hfYWxsLCBjYikgewogICAgICAgdmFyIHNlbGYgPSB0aGlzLAogICAgICAgICB1cmwg PSAnJzsKQEAgLTE0NTIsNyArMTM5OCw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwog ICAgIH0sCiAKICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgU2F2ZSBidXR0b24gY2xpY2su Ci0gICAgb25fc2F2ZTogZnVuY3Rpb24oZXYpIHsKKyAgICBvbl9zYXZlX2ZpbGU6IGZ1bmN0aW9u KGV2KSB7CiAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAKICAgICAgIHRoaXMuX3N0b3BFdmVudFBy b3BvZ2F0aW9uKGV2KTsKQEAgLTE0NjEsOSArMTQwNyw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0 b29sJywgWwogICAgICAgc2VsZi5oYW5kbGVyLmNsb3NlX29uX3NhdmUgPSBmYWxzZTsKICAgICAg IC8vIFRyaWdnZXIgdGhlIHNhdmUgc2lnbmFsIHRvIHRoZSBTcWxFZGl0b3JDb250cm9sbGVyIGNs YXNzCiAgICAgICBzZWxmLmhhbmRsZXIudHJpZ2dlcigKLSAgICAgICAgJ3BnYWRtaW4tc3FsZWRp dG9yOmJ1dHRvbjpzYXZlJywKLSAgICAgICAgc2VsZiwKLSAgICAgICAgc2VsZi5oYW5kbGVyCisg ICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246c2F2ZV9maWxlJwogICAgICAgKTsKICAg ICB9LAogCkBAIC0xNDc3LDcgKzE0MjEsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsK ICAgICAgIHNlbGYuaGFuZGxlci5jbG9zZV9vbl9zYXZlID0gZmFsc2U7CiAgICAgICAvLyBUcmln Z2VyIHRoZSBzYXZlIHNpZ25hbCB0byB0aGUgU3FsRWRpdG9yQ29udHJvbGxlciBjbGFzcwogICAg ICAgc2VsZi5oYW5kbGVyLnRyaWdnZXIoCi0gICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpidXR0 b246c2F2ZScsCisgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246c2F2ZV9maWxlJywK ICAgICAgICAgc2VsZiwKICAgICAgICAgc2VsZi5oYW5kbGVyLAogICAgICAgICB0cnVlCkBAIC0x NjUwLDYgKzE1OTQsMTEgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICApOwog ICAgIH0sCiAKKyAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgU2F2ZSBEYXRhIENoYW5nZXMg YnV0dG9uIGNsaWNrLgorICAgIG9uX3NhdmVfZGF0YTogZnVuY3Rpb24oKSB7CisgICAgICBxdWVy eVRvb2xBY3Rpb25zLnNhdmVEYXRhQ2hhbmdlcyh0aGlzLmhhbmRsZXIpOworICAgIH0sCisKICAg ICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGZsYXNoIGJ1dHRvbiBjbGljay4KICAgICBv bl9mbGFzaDogZnVuY3Rpb24oKSB7CiAgICAgICBxdWVyeVRvb2xBY3Rpb25zLmV4ZWN1dGVRdWVy eSh0aGlzLmhhbmRsZXIpOwpAQCAtMjI2Miw3ICsyMjExLDcgQEAgZGVmaW5lKCd0b29scy5xdWVy eXRvb2wnLCBbCiAKICAgICAgICAgLy8gTGlzdGVuIG9uIGV2ZW50cyBjb21lIGZyb20gU1FMRWRp dG9yVmlldyBmb3IgdGhlIGJ1dHRvbiBjbGlja2VkLgogICAgICAgICBzZWxmLm9uKCdwZ2FkbWlu LXNxbGVkaXRvcjpidXR0b246bG9hZF9maWxlJywgc2VsZi5fbG9hZF9maWxlLCBzZWxmKTsKLSAg ICAgICAgc2VsZi5vbigncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOnNhdmUnLCBzZWxmLl9zYXZl LCBzZWxmKTsKKyAgICAgICAgc2VsZi5vbigncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOnNhdmVf ZmlsZScsIHNlbGYuX3NhdmVfZmlsZSwgc2VsZik7CiAgICAgICAgIHNlbGYub24oJ3BnYWRtaW4t c3FsZWRpdG9yOmJ1dHRvbjpkZWxldGVyb3cnLCBzZWxmLl9kZWxldGUsIHNlbGYpOwogICAgICAg ICBzZWxmLm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246c2hvd19maWx0ZXInLCBzZWxmLl9z aG93X2ZpbHRlciwgc2VsZik7CiAgICAgICAgIHNlbGYub24oJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1 dHRvbjppbmNsdWRlX2ZpbHRlcicsIHNlbGYuX2luY2x1ZGVfZmlsdGVyLCBzZWxmKTsKQEAgLTIz MjUsMTIgKzIyNzQsNiBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgc2Vs Zi5xdWVyeV9zdGFydF90aW1lID0gbmV3IERhdGUoKTsKICAgICAgICAgc2VsZi5yb3dzX2FmZmVj dGVkID0gMDsKICAgICAgICAgc2VsZi5faW5pdF9wb2xsaW5nX2ZsYWdzKCk7Ci0gICAgICAgIC8v IGtlZXAgdHJhY2sgb2YgbmV3bHkgYWRkZWQgcm93cwotICAgICAgICBzZWxmLnJvd3NfdG9fZGlz YWJsZSA9IG5ldyBBcnJheSgpOwotICAgICAgICAvLyBUZW1wb3JhcmlseSBob2xkIG5ldyByb3dz IGFkZGVkCi0gICAgICAgIHNlbGYudGVtcF9uZXdfcm93cyA9IG5ldyBBcnJheSgpOwotICAgICAg ICBzZWxmLmhhc19tb3JlX3Jvd3MgPSBmYWxzZTsKLSAgICAgICAgc2VsZi5mZXRjaGluZ19yb3dz ID0gZmFsc2U7CiAKICAgICAgICAgc2VsZi50cmlnZ2VyKAogICAgICAgICAgICdwZ2FkbWluLXNx bGVkaXRvcjpsb2FkaW5nLWljb246c2hvdycsCkBAIC0yMzc5LDggKzIzMjIsNyBAQCBkZWZpbmUo J3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICAgICAgICAkKCcjYnRuLWZpbHRlcicpLmFk ZENsYXNzKCdidG4tc2Vjb25kYXJ5Jyk7CiAgICAgICAgICAgICAgICAgJCgnI2J0bi1maWx0ZXIt ZHJvcGRvd24nKS5hZGRDbGFzcygnYnRuLXNlY29uZGFyeScpOwogICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgICQoJyNidG4tc2F2ZScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAg ICAgICAgICAgICQoJyNidG4tZmlsZS1tZW51LWRyb3Bkb3duJykucHJvcCgnZGlzYWJsZWQnLCB0 cnVlKTsKKwogICAgICAgICAgICAgICAkKCcjYnRuLWNvcHktcm93JykucHJvcCgnZGlzYWJsZWQn LCB0cnVlKTsKICAgICAgICAgICAgICAgJCgnI2J0bi1wYXN0ZS1yb3cnKS5wcm9wKCdkaXNhYmxl ZCcsIHRydWUpOwogCkBAIC0yNDU2LDEzICsyMzk4LDEyIEBAIGRlZmluZSgndG9vbHMucXVlcnl0 b29sJywgWwogICAgICAgICAgICQoJyNidG4tZmlsdGVyLWRyb3Bkb3duJykucHJvcCgnZGlzYWJs ZWQnLCBmYWxzZSk7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBObyBkYXRhIHRvIHNhdmUgaW5p dGlhbGx5CisgICAgICAgICQoJyNidG4tc2F2ZS1kYXRhJykucHJvcCgnZGlzYWJsZWQnLCB0cnVl KTsKKwogICAgICAgICAvLyBJbml0aWFsIHNldHRpbmdzIGZvciBkZWxldGUgcm93LCBjb3B5IHJv dyBhbmQgcGFzdGUgcm93IGJ1dHRvbnMuCiAgICAgICAgICQoJyNidG4tZGVsZXRlLXJvdycpLnBy b3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAgICAgIC8vIERvIG5vdCBkaXNhYmxlIHNhdmUgYnV0 dG9uIGluIHF1ZXJ5IHRvb2wKLSAgICAgICAgaWYgKCFzZWxmLmlzX3F1ZXJ5X3Rvb2wgJiYgIXNl bGYuY2FuX2VkaXQpIHsKLSAgICAgICAgICAkKCcjYnRuLXNhdmUnKS5wcm9wKCdkaXNhYmxlZCcs IHRydWUpOwotICAgICAgICAgICQoJyNidG4tZmlsZS1tZW51LWRyb3Bkb3duJykucHJvcCgnZGlz YWJsZWQnLCB0cnVlKTsKLSAgICAgICAgfQorCiAgICAgICAgIGlmICghc2VsZi5jYW5fZWRpdCkg ewogICAgICAgICAgICQoJyNidG4tZGVsZXRlLXJvdycpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7 CiAgICAgICAgICAgJCgnI2J0bi1jb3B5LXJvdycpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CkBA IC0yODQ2LDkgKzI3ODcsOSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAg ICBpZiAoXy5zaXplKHNlbGYuZGF0YV9zdG9yZS5hZGRlZCkgfHwgaXNfdXBkYXRlZCkgewogICAg ICAgICAgICAgLy8gRG8gbm90IGRpc2FibGUgc2F2ZSBidXR0b24gaWYgdGhlcmUgYXJlCiAgICAg ICAgICAgICAvLyBhbnkgb3RoZXIgY2hhbmdlcyBwcmVzZW50IGluIGdyaWQgZGF0YQotICAgICAg ICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CisgICAgICAgICAg ICAkKCcjYnRuLXNhdmUtZGF0YScpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwogICAgICAgICAg IH0gZWxzZSB7Ci0gICAgICAgICAgICAkKCcjYnRuLXNhdmUnKS5wcm9wKCdkaXNhYmxlZCcsIHRy dWUpOworICAgICAgICAgICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5wcm9wKCdkaXNhYmxlZCcsIHRy dWUpOwogICAgICAgICAgIH0KICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNzKGdldHRleHQoJ1Jv dyhzKSBkZWxldGVkLicpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTI4NzcsNDEgKzI4MTgsNDIg QEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgaWYgKF8uc2l6ZShzZWxm LmRhdGFfc3RvcmUuYWRkZWQpIHx8IGlzX3VwZGF0ZWQgfHwgXy5zaXplKHNlbGYuZGF0YV9zdG9y ZS5kZWxldGVkKSkgewogICAgICAgICAgICAgLy8gRG8gbm90IGRpc2FibGUgc2F2ZSBidXR0b24g aWYgdGhlcmUgYXJlCiAgICAgICAgICAgICAvLyBhbnkgb3RoZXIgY2hhbmdlcyBwcmVzZW50IGlu IGdyaWQgZGF0YQotICAgICAgICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgnZGlzYWJsZWQnLCBm YWxzZSk7CisgICAgICAgICAgICAkKCcjYnRuLXNhdmUtZGF0YScpLnByb3AoJ2Rpc2FibGVkJywg ZmFsc2UpOwogICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkKCcjYnRuLXNhdmUnKS5w cm9wKCdkaXNhYmxlZCcsIHRydWUpOworICAgICAgICAgICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5w cm9wKCdkaXNhYmxlZCcsIHRydWUpOwogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfSwK IAorICAgICAgLy8vIFRoaXMgZnVuY3Rpb24gd2lsbCBvcGVuIHNhdmUgZmlsZSBkaWFsb2cgY29u ZGl0aW9uYWxseS4KKworICAgICAgX3NhdmVfZmlsZTogZnVuY3Rpb24oc2F2ZV9hcz1mYWxzZSkg eworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgdmFyIGN1cnJlbnRfZmlsZSA9 IHNlbGYuZ3JpZFZpZXcuY3VycmVudF9maWxlOworICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQo Y3VycmVudF9maWxlKSAmJiAhc2F2ZV9hcykgeworICAgICAgICAgIHNlbGYuX3NhdmVfZmlsZV9o YW5kbGVyKGN1cnJlbnRfZmlsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgLy8gcHJv dmlkZSBjdXN0b20gb3B0aW9uIHRvIHNhdmUgZmlsZSBkaWFsb2cKKyAgICAgICAgICB2YXIgcGFy YW1zID0geworICAgICAgICAgICAgJ3N1cHBvcnRlZF90eXBlcyc6IFsnKicsICdzcWwnXSwKKyAg ICAgICAgICAgICdkaWFsb2dfdHlwZSc6ICdjcmVhdGVfZmlsZScsCisgICAgICAgICAgICAnZGlh bG9nX3RpdGxlJzogJ1NhdmUgRmlsZScsCisgICAgICAgICAgICAnYnRuX3ByaW1hcnknOiAnU2F2 ZScsCisgICAgICAgICAgfTsKKyAgICAgICAgICBwZ0FkbWluLkZpbGVNYW5hZ2VyLmluaXQoKTsK KyAgICAgICAgICBwZ0FkbWluLkZpbGVNYW5hZ2VyLnNob3dfZGlhbG9nKHBhcmFtcyk7CisgICAg ICAgIH0KKyAgICAgIH0sCisKICAgICAgIC8qIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUg bGlzdCBvZiBjaGFuZ2VkIG1vZGVscyBhbmQgbWFrZQogICAgICAgICogdGhlIGFqYXggY2FsbCB0 byBzYXZlIHRoZSBkYXRhIGludG8gdGhlIGRhdGFiYXNlIHNlcnZlci4KLSAgICAgICAqIGFuZCB3 aWxsIG9wZW4gc2F2ZSBmaWxlIGRpYWxvZyBjb25kaXRpb25hbGx5LgogICAgICAgICovCi0gICAg ICBfc2F2ZTogZnVuY3Rpb24odmlldywgY29udHJvbGxlciwgc2F2ZV9hcykgewotICAgICAgICB2 YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgc2F2ZV9kYXRhID0gdHJ1ZTsKKyAgICAgIHNhdmVf ZGF0YTogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKIAotICAgICAgICAv LyBPcGVuIHNhdmUgZmlsZSBkaWFsb2cgaWYgcXVlcnkgdG9vbAotICAgICAgICBpZiAoc2VsZi5p c19xdWVyeV90b29sKSB7Ci0gICAgICAgICAgdmFyIGN1cnJlbnRfZmlsZSA9IHNlbGYuZ3JpZFZp ZXcuY3VycmVudF9maWxlOwotICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChjdXJyZW50X2Zp bGUpICYmICFzYXZlX2FzKSB7Ci0gICAgICAgICAgICBzZWxmLl9zYXZlX2ZpbGVfaGFuZGxlcihj dXJyZW50X2ZpbGUpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBwcm92aWRl IGN1c3RvbSBvcHRpb24gdG8gc2F2ZSBmaWxlIGRpYWxvZwotICAgICAgICAgICAgdmFyIHBhcmFt cyA9IHsKLSAgICAgICAgICAgICAgJ3N1cHBvcnRlZF90eXBlcyc6IFsnKicsICdzcWwnXSwKLSAg ICAgICAgICAgICAgJ2RpYWxvZ190eXBlJzogJ2NyZWF0ZV9maWxlJywKLSAgICAgICAgICAgICAg J2RpYWxvZ190aXRsZSc6ICdTYXZlIEZpbGUnLAotICAgICAgICAgICAgICAnYnRuX3ByaW1hcnkn OiAnU2F2ZScsCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgcGdBZG1pbi5GaWxlTWFuYWdl ci5pbml0KCk7Ci0gICAgICAgICAgICBwZ0FkbWluLkZpbGVNYW5hZ2VyLnNob3dfZGlhbG9nKHBh cmFtcyk7Ci0gICAgICAgICAgfQorICAgICAgICBpZighc2VsZi5jYW5fZWRpdCkKICAgICAgICAg ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgnZGlzYWJs ZWQnLCB0cnVlKTsKLSAgICAgICAgJCgnI2J0bi1maWxlLW1lbnUtZHJvcGRvd24nKS5wcm9wKCdk aXNhYmxlZCcsIHRydWUpOwogCiAgICAgICAgIHZhciBpc19hZGRlZCA9IF8uc2l6ZShzZWxmLmRh dGFfc3RvcmUuYWRkZWQpLAogICAgICAgICAgIGlzX3VwZGF0ZWQgPSBfLnNpemUoc2VsZi5kYXRh X3N0b3JlLnVwZGF0ZWQpLApAQCAtMjkyMSwxNTQgKzI4NjMsMTg4IEBAIGRlZmluZSgndG9vbHMu cXVlcnl0b29sJywgWwogICAgICAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBzYXZlIGhlcmUK ICAgICAgICAgfQogCi0gICAgICAgIGlmIChzYXZlX2RhdGEpIHsKKyAgICAgICAgc2VsZi50cmln Z2VyKAorICAgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246c2hvdycsCisg ICAgICAgICAgZ2V0dGV4dCgnU2F2aW5nIHRoZSB1cGRhdGVkIGRhdGEuLi4nKQorICAgICAgICAp OwogCi0gICAgICAgICAgc2VsZi50cmlnZ2VyKAotICAgICAgICAgICAgJ3BnYWRtaW4tc3FsZWRp dG9yOmxvYWRpbmctaWNvbjpzaG93JywKLSAgICAgICAgICAgIGdldHRleHQoJ1NhdmluZyB0aGUg dXBkYXRlZCBkYXRhLi4uJykKLSAgICAgICAgICApOworICAgICAgICAvLyBBZGQgdGhlIGNvbHVt bnMgdG8gdGhlIGRhdGEgc28gdGhlIHNlcnZlciBjYW4gcmVtYXAgdGhlIGRhdGEKKyAgICAgICAg dmFyIHJlcV9kYXRhID0gc2VsZi5kYXRhX3N0b3JlLCB2aWV3ID0gc2VsZi5ncmlkVmlldzsKKyAg ICAgICAgcmVxX2RhdGEuY29sdW1ucyA9IHZpZXcgPyB2aWV3LmhhbmRsZXIuY29sdW1ucyA6IHNl bGYuY29sdW1uczsKIAotICAgICAgICAgIC8vIEFkZCB0aGUgY29sdW1ucyB0byB0aGUgZGF0YSBz byB0aGUgc2VydmVyIGNhbiByZW1hcCB0aGUgZGF0YQotICAgICAgICAgIHZhciByZXFfZGF0YSA9 IHNlbGYuZGF0YV9zdG9yZTsKLSAgICAgICAgICByZXFfZGF0YS5jb2x1bW5zID0gdmlldyA/IHZp ZXcuaGFuZGxlci5jb2x1bW5zIDogc2VsZi5jb2x1bW5zOworICAgICAgICB2YXIgc2F2ZV9zdWNj ZXNzZnVsID0gZmFsc2U7CiAKLSAgICAgICAgICAvLyBNYWtlIGFqYXggY2FsbCB0byBzYXZlIHRo ZSBkYXRhCi0gICAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICAgIHVybDogdXJsX2Zvcignc3Fs ZWRpdG9yLnNhdmUnLCB7Ci0gICAgICAgICAgICAgICd0cmFuc19pZCc6IHNlbGYudHJhbnNJZCwK LSAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCi0gICAgICAgICAg ICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLAotICAgICAgICAgICAgZGF0YTogSlNP Ti5zdHJpbmdpZnkocmVxX2RhdGEpLAotICAgICAgICAgIH0pCi0gICAgICAgICAgICAuZG9uZShm dW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAgICAgdmFyIGdyaWQgPSBzZWxmLnNsaWNrZ3JpZCwK LSAgICAgICAgICAgICAgICBkYXRhVmlldyA9IGdyaWQuZ2V0RGF0YSgpLAotICAgICAgICAgICAg ICAgIGRhdGFfbGVuZ3RoID0gZGF0YVZpZXcuZ2V0TGVuZ3RoKCksCi0gICAgICAgICAgICAgICAg ZGF0YSA9IFtdOwotCi0gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMpIHsKLSAgICAg ICAgICAgICAgICBpZihpc19hZGRlZCkgewotICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUg cm93cyBpbiBhIGdyaWQgYWZ0ZXIgYWRkaXRpb24KLSAgICAgICAgICAgICAgICAgIGRhdGFWaWV3 LmJlZ2luVXBkYXRlKCk7Ci0gICAgICAgICAgICAgICAgICBfLmVhY2gocmVzLmRhdGEucXVlcnlf cmVzdWx0LCBmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghXy5pc051bGwo ci5yb3dfYWRkZWQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZldGNoIHRlbXBfaWQgcmV0 dXJuZWQgYnkgc2VydmVyIGFmdGVyIGFkZGl0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgdmFy IHJvd19pZCA9IE9iamVjdC5rZXlzKHIucm93X2FkZGVkKVswXTsKLSAgICAgICAgICAgICAgICAg ICAgICBfLmVhY2gocmVxX2RhdGEuYWRkZWRfaW5kZXgsIGZ1bmN0aW9uKHYsIGspIHsKLSAgICAg ICAgICAgICAgICAgICAgICAgIGlmICh2ID09IHJvd19pZCkgewotICAgICAgICAgICAgICAgICAg ICAgICAgLy8gRmV0Y2ggaXRlbSBkYXRhIHRocm91Z2ggcm93IGluZGV4Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgIHZhciBpdGVtID0gZ3JpZC5nZXREYXRhSXRlbShrKTsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgXy5leHRlbmQoaXRlbSwgci5yb3dfYWRkZWRbcm93X2lkXSk7Ci0gICAg ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAg ZGF0YVZpZXcuZW5kVXBkYXRlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg IC8vIFJlbW92ZSBmbGFnIGlzX3Jvd19jb3BpZWQgZnJvbSBjb3BpZWQgcm93cwotICAgICAgICAg ICAgICAgIF8uZWFjaChkYXRhLCBmdW5jdGlvbihyb3cpIHsKLSAgICAgICAgICAgICAgICAgIGlm IChyb3cuaXNfcm93X2NvcGllZCkgewotICAgICAgICAgICAgICAgICAgICBkZWxldGUgcm93Lmlz X3Jvd19jb3BpZWQ7CisgICAgICAgIC8vIE1ha2UgYWpheCBjYWxsIHRvIHNhdmUgdGhlIGRhdGEK KyAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICB1cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5zYXZl JywgeworICAgICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi50cmFuc0lkLAorICAgICAgICAgIH0p LAorICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAorICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBw bGljYXRpb24vanNvbicsCisgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocmVxX2RhdGEp LAorICAgICAgICB9KQorICAgICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgeworICAgICAgICAg ICAgdmFyIGdyaWQgPSBzZWxmLnNsaWNrZ3JpZCwKKyAgICAgICAgICAgICAgZGF0YVZpZXcgPSBn cmlkLmdldERhdGEoKSwKKyAgICAgICAgICAgICAgZGF0YV9sZW5ndGggPSBkYXRhVmlldy5nZXRM ZW5ndGgoKSwKKyAgICAgICAgICAgICAgZGF0YSA9IFtdOworCisgICAgICAgICAgICBpZiAocmVz LmRhdGEuc3RhdHVzKSB7CisgICAgICAgICAgICAgIC8vIERpc2FibGUgU2F2ZSBEYXRhIENoYW5n ZXMgYnV0dG9uCisgICAgICAgICAgICAgICQoJyNidG4tc2F2ZS1kYXRhJykucHJvcCgnZGlzYWJs ZWQnLCB0cnVlKTsKKworICAgICAgICAgICAgICBzYXZlX3N1Y2Nlc3NmdWwgPSB0cnVlOworCisg ICAgICAgICAgICAgIC8vIFJlbW92ZSBoaWdobGlnaHRlZCBjZWxscyBzdHlsaW5nCisgICAgICAg ICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHNlbGYubnVtYmVyT2ZNb2RpZmllZENlbGxzOyBp KyspCisgICAgICAgICAgICAgICAgZ3JpZC5yZW1vdmVDZWxsQ3NzU3R5bGVzKGkpOworCisgICAg ICAgICAgICAgIHNlbGYubnVtYmVyT2ZNb2RpZmllZENlbGxzID0gMDsKKworICAgICAgICAgICAg ICBpZihpc19hZGRlZCkgeworICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHJvd3MgaW4gYSBn cmlkIGFmdGVyIGFkZGl0aW9uCisgICAgICAgICAgICAgICAgZGF0YVZpZXcuYmVnaW5VcGRhdGUo KTsKKyAgICAgICAgICAgICAgICBfLmVhY2gocmVzLmRhdGEucXVlcnlfcmVzdWx0LCBmdW5jdGlv bihyKSB7CisgICAgICAgICAgICAgICAgICBpZiAoIV8uaXNOdWxsKHIucm93X2FkZGVkKSkgewor ICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggdGVtcF9pZCByZXR1cm5lZCBieSBzZXJ2ZXIgYWZ0 ZXIgYWRkaXRpb24KKyAgICAgICAgICAgICAgICAgICAgdmFyIHJvd19pZCA9IE9iamVjdC5rZXlz KHIucm93X2FkZGVkKVswXTsKKyAgICAgICAgICAgICAgICAgICAgXy5lYWNoKHJlcV9kYXRhLmFk ZGVkX2luZGV4LCBmdW5jdGlvbih2LCBrKSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYgKHYg PT0gcm93X2lkKSB7CisgICAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggaXRlbSBkYXRhIHRo cm91Z2ggcm93IGluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGdyaWQu Z2V0RGF0YUl0ZW0oayk7CisgICAgICAgICAgICAgICAgICAgICAgICBfLmV4dGVuZChpdGVtLCBy LnJvd19hZGRlZFtyb3dfaWRdKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0pOwot Ci0gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIDJkIGNvcGllZF9yb3dzIGFycmF5Ci0gICAgICAg ICAgICAgICAgaWYgKGdyaWQuY29waWVkX3Jvd3MpIHsKLSAgICAgICAgICAgICAgICAgIGRlbGV0 ZSBncmlkLmNvcGllZF9yb3dzOworICAgICAgICAgICAgICAgIGRhdGFWaWV3LmVuZFVwZGF0ZSgp OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIC8vIFJlbW92ZSBmbGFnIGlzX3Jvd19j b3BpZWQgZnJvbSBjb3BpZWQgcm93cworICAgICAgICAgICAgICBfLmVhY2goZGF0YSwgZnVuY3Rp b24ocm93KSB7CisgICAgICAgICAgICAgICAgaWYgKHJvdy5pc19yb3dfY29waWVkKSB7CisgICAg ICAgICAgICAgICAgICBkZWxldGUgcm93LmlzX3Jvd19jb3BpZWQ7CiAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAvLyBSZW1vdmUgMmQgY29waWVk X3Jvd3MgYXJyYXkKKyAgICAgICAgICAgICAgaWYgKGdyaWQuY29waWVkX3Jvd3MpIHsKKyAgICAg ICAgICAgICAgICBkZWxldGUgZ3JpZC5jb3BpZWRfcm93czsKKyAgICAgICAgICAgICAgfQogCi0g ICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGRlbGV0ZWQgcm93cyBmcm9tIGNsaWVudCBhcyB3ZWxs Ci0gICAgICAgICAgICAgICAgaWYgKGlzX2RlbGV0ZWQpIHsKLSAgICAgICAgICAgICAgICAgIHZh ciByb3dzID0gXy5rZXlzKHNlbGYuZGF0YV9zdG9yZS5kZWxldGVkKTsKLSAgICAgICAgICAgICAg ICAgIGlmIChkYXRhX2xlbmd0aCA9PSByb3dzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAg Ly8gVGhpcyBtZWFucyBhbGwgdGhlIHJvd3MgYXJlIHNlbGVjdGVkLCBjbGVhciBhbGwgZGF0YQot ICAgICAgICAgICAgICAgICAgICBkYXRhID0gW107Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFW aWV3LnNldEl0ZW1zKGRhdGEsIHNlbGYuY2xpZW50X3ByaW1hcnlfa2V5KTsKLSAgICAgICAgICAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFWaWV3LmJlZ2luVXBkYXRl KCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7 IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZ3JpZC5nZXREYXRhSXRl bShyb3dzW2ldKTsKLSAgICAgICAgICAgICAgICAgICAgICBkYXRhLnB1c2goaXRlbSk7Ci0gICAg ICAgICAgICAgICAgICAgICAgZGF0YVZpZXcuZGVsZXRlSXRlbShpdGVtW3NlbGYuY2xpZW50X3By aW1hcnlfa2V5XSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg ZGF0YVZpZXcuZW5kVXBkYXRlKCk7CisgICAgICAgICAgICAgIC8vIFJlbW92ZSBkZWxldGVkIHJv d3MgZnJvbSBjbGllbnQgYXMgd2VsbAorICAgICAgICAgICAgICBpZiAoaXNfZGVsZXRlZCkgewor ICAgICAgICAgICAgICAgIHZhciByb3dzID0gXy5rZXlzKHNlbGYuZGF0YV9zdG9yZS5kZWxldGVk KTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YV9sZW5ndGggPT0gcm93cy5sZW5ndGgpIHsKKyAg ICAgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIGFsbCB0aGUgcm93cyBhcmUgc2VsZWN0ZWQsIGNs ZWFyIGFsbCBkYXRhCisgICAgICAgICAgICAgICAgICBkYXRhID0gW107CisgICAgICAgICAgICAg ICAgICBkYXRhVmlldy5zZXRJdGVtcyhkYXRhLCBzZWxmLmNsaWVudF9wcmltYXJ5X2tleSk7Cisg ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIGRhdGFWaWV3LmJlZ2lu VXBkYXRlKCk7CisgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd3MubGVu Z3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBncmlkLmdldERhdGFJ dGVtKHJvd3NbaV0pOworICAgICAgICAgICAgICAgICAgICBkYXRhLnB1c2goaXRlbSk7CisgICAg ICAgICAgICAgICAgICAgIGRhdGFWaWV3LmRlbGV0ZUl0ZW0oaXRlbVtzZWxmLmNsaWVudF9wcmlt YXJ5X2tleV0pOwogICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgc2VsZi5y b3dzX3RvX2RlbGV0ZS5hcHBseShzZWxmLCBbZGF0YV0pOwotICAgICAgICAgICAgICAgICAgZ3Jp ZC5zZXRTZWxlY3RlZFJvd3MoW10pOworICAgICAgICAgICAgICAgICAgZGF0YVZpZXcuZW5kVXBk YXRlKCk7CiAgICAgICAgICAgICAgICAgfQotCisgICAgICAgICAgICAgICAgc2VsZi5yb3dzX3Rv X2RlbGV0ZS5hcHBseShzZWxmLCBbZGF0YV0pOwogICAgICAgICAgICAgICAgIGdyaWQuc2V0U2Vs ZWN0ZWRSb3dzKFtdKTsKKyAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLy8gUmVz ZXQgZGF0YSBzdG9yZQotICAgICAgICAgICAgICAgIHNlbGYuZGF0YV9zdG9yZSA9IHsKLSAgICAg ICAgICAgICAgICAgICdhZGRlZCc6IHt9LAotICAgICAgICAgICAgICAgICAgJ3VwZGF0ZWQnOiB7 fSwKLSAgICAgICAgICAgICAgICAgICdkZWxldGVkJzoge30sCi0gICAgICAgICAgICAgICAgICAn YWRkZWRfaW5kZXgnOiB7fSwKLSAgICAgICAgICAgICAgICAgICd1cGRhdGVkX2luZGV4Jzoge30s Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgZ3JpZC5zZXRTZWxlY3RlZFJvd3Mo W10pOwogCi0gICAgICAgICAgICAgICAgLy8gUmVzZXQgb2xkIHByaW1hcnkga2V5IGRhdGEgbm93 Ci0gICAgICAgICAgICAgICAgc2VsZi5wcmltYXJ5X2tleXNfZGF0YSA9IHt9OworICAgICAgICAg ICAgICAvLyBSZXNldCBkYXRhIHN0b3JlCisgICAgICAgICAgICAgIHNlbGYucmVzZXRfZGF0YV9z dG9yZSgpOwogCi0gICAgICAgICAgICAgICAgLy8gQ2xlYXIgbXNncyBhZnRlciBzdWNjZXNzZnVs IHNhdmUKLSAgICAgICAgICAgICAgICBzZWxmLnNldF9zcWxfbWVzc2FnZSgnJyk7CisgICAgICAg ICAgICAgIC8vIFJlc2V0IG9sZCBwcmltYXJ5IGtleSBkYXRhIG5vdworICAgICAgICAgICAgICBz ZWxmLnByaW1hcnlfa2V5c19kYXRhID0ge307CiAKLSAgICAgICAgICAgICAgICBhbGVydGlmeS5z dWNjZXNzKGdldHRleHQoJ0RhdGEgc2F2ZWQgc3VjY2Vzc2Z1bGx5LicpKTsKLSAgICAgICAgICAg ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hpbGUg c2F2aW5nIGRhdGEgb24gdGhlIGRiIHNlcnZlcgotICAgICAgICAgICAgICAgICQoJyNidG4tZmxh c2gnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAkKCcjYnRuLWRv d25sb2FkJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgc2VsZi5z ZXRfc3FsX21lc3NhZ2UocmVzLmRhdGEucmVzdWx0KTsKLSAgICAgICAgICAgICAgICB2YXIgZXJy X21zZyA9IFMoZ2V0dGV4dCgnJXMuJykpLnNwcmludGYocmVzLmRhdGEucmVzdWx0KS52YWx1ZSgp OwotICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmVycm9yKGVycl9tc2csIDIwKTsKLSAgICAgICAg ICAgICAgICBncmlkLnNldFNlbGVjdGVkUm93cyhbXSk7Ci0gICAgICAgICAgICAgICAgLy8gVG8g aGlnaGxpZ2h0IHRoZSByb3cgYXQgZmF1bHQKLSAgICAgICAgICAgICAgICBpZiAoXy5oYXMocmVz LmRhdGEsICdfcm93aWQnKSAmJgotICAgICAgICAgICAgICAgICghXy5pc1VuZGVmaW5lZChyZXMu ZGF0YS5fcm93aWQpIHx8ICFfLmlzTnVsbChyZXMuZGF0YS5fcm93aWQpKSkgewotICAgICAgICAg ICAgICAgICAgdmFyIF9yb3dfaW5kZXggPSBzZWxmLl9maW5kX3Jvd2luZGV4KHJlcy5kYXRhLl9y b3dpZCk7Ci0gICAgICAgICAgICAgICAgICBpZiAoX3Jvd19pbmRleCBpbiBzZWxmLmRhdGFfc3Rv cmUuYWRkZWRfaW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBuZXcgcm93IGlu ZGV4IGZyb20gdGVtcF9saXN0IGlmIHNhdmUgb3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgICAv LyBmYWlscwotICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzZWxmLmhhbmRsZXIudGVt cF9uZXdfcm93cy5pbmRleE9mKHJlcy5kYXRhLl9yb3dpZCk7Ci0gICAgICAgICAgICAgICAgICAg IGlmIChpbmRleCA+IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVyLnRl bXBfbmV3X3Jvd3Muc3BsaWNlKGluZGV4LCAxKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgICAgICBzZWxmLmRhdGFfc3RvcmUuYWRkZWRbc2VsZi5kYXRhX3N0b3JlLmFk ZGVkX2luZGV4W19yb3dfaW5kZXhdXS5lcnIgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgfSBl bHNlIGlmIChfcm93X2luZGV4IGluIHNlbGYuZGF0YV9zdG9yZS51cGRhdGVkX2luZGV4KSB7Ci0g ICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YV9zdG9yZS51cGRhdGVkW3NlbGYuZGF0YV9zdG9y ZS51cGRhdGVkX2luZGV4W19yb3dfaW5kZXhdXS5lcnIgPSB0cnVlOworICAgICAgICAgICAgICAv LyBDbGVhciBtc2dzIGFmdGVyIHN1Y2Nlc3NmdWwgc2F2ZQorICAgICAgICAgICAgICBzZWxmLnNl dF9zcWxfbWVzc2FnZSgnJyk7CisKKyAgICAgICAgICAgICAgdmFyIG1zZywgaXNfY29tbWl0X3Jl cXVpcmVkID0gXy5oYXMocmVzLmRhdGEsICdpc19jb21taXRfcmVxdWlyZWQnKSAmJgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhXy5pc051bGwocmVzLmRhdGEu aXNfY29tbWl0X3JlcXVpcmVkKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXMuZGF0YS5pc19jb21taXRfcmVxdWlyZWQ7CisKKyAgICAgICAgICAgICAg aWYoaXNfY29tbWl0X3JlcXVpcmVkKSB7CisgICAgICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgn RGF0YSBzYXZlZCBzdWNjZXNzZnVsbHksIHlvdSBzdGlsbCBuZWVkIHRvIGNvbW1pdCBjaGFuZ2Vz IHRvIHRoZSBkYXRhYmFzZS4nKTsKKyAgICAgICAgICAgICAgICBzZWxmLmRpc2FibGVfdHJhbnNh Y3Rpb25fYnV0dG9ucyhmYWxzZSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ0RhdGEgc2F2ZWQgc3VjY2Vzc2Z1bGx5 LicpOworCisgICAgICAgICAgICAgIGFsZXJ0aWZ5LnN1Y2Nlc3MobXNnKTsKKyAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZyB3aGlsZSBzYXZp bmcgZGF0YSBvbiB0aGUgZGIgc2VydmVyCisgICAgICAgICAgICAgIHNlbGYuc2V0X3NxbF9tZXNz YWdlKHJlcy5kYXRhLnJlc3VsdCk7CisgICAgICAgICAgICAgIHZhciBlcnJfbXNnID0gUyhnZXR0 ZXh0KCclcy4nKSkuc3ByaW50ZihyZXMuZGF0YS5yZXN1bHQpLnZhbHVlKCk7CisgICAgICAgICAg ICAgIGFsZXJ0aWZ5LmVycm9yKGVycl9tc2csIDIwKTsKKyAgICAgICAgICAgICAgZ3JpZC5zZXRT ZWxlY3RlZFJvd3MoW10pOworICAgICAgICAgICAgICAvLyBUbyBoaWdobGlnaHQgdGhlIHJvdyBh dCBmYXVsdAorICAgICAgICAgICAgICBpZiAoXy5oYXMocmVzLmRhdGEsICdfcm93aWQnKSAmJgor ICAgICAgICAgICAgICAoIV8uaXNVbmRlZmluZWQocmVzLmRhdGEuX3Jvd2lkKSB8fCAhXy5pc051 bGwocmVzLmRhdGEuX3Jvd2lkKSkpIHsKKyAgICAgICAgICAgICAgICB2YXIgX3Jvd19pbmRleCA9 IHNlbGYuX2ZpbmRfcm93aW5kZXgocmVzLmRhdGEuX3Jvd2lkKTsKKyAgICAgICAgICAgICAgICBp ZiAoX3Jvd19pbmRleCBpbiBzZWxmLmRhdGFfc3RvcmUuYWRkZWRfaW5kZXgpIHsKKyAgICAgICAg ICAgICAgICAvLyBSZW1vdmUgbmV3IHJvdyBpbmRleCBmcm9tIHRlbXBfbGlzdCBpZiBzYXZlIG9w ZXJhdGlvbgorICAgICAgICAgICAgICAgIC8vIGZhaWxzCisgICAgICAgICAgICAgICAgICB2YXIg aW5kZXggPSBzZWxmLmhhbmRsZXIudGVtcF9uZXdfcm93cy5pbmRleE9mKHJlcy5kYXRhLl9yb3dp ZCk7CisgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkgeworICAgICAgICAgICAgICAg ICAgICBzZWxmLmhhbmRsZXIudGVtcF9uZXdfcm93cy5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhX3N0b3JlLmFkZGVkW3Nl bGYuZGF0YV9zdG9yZS5hZGRlZF9pbmRleFtfcm93X2luZGV4XV0uZXJyID0gdHJ1ZTsKKyAgICAg ICAgICAgICAgICB9IGVsc2UgaWYgKF9yb3dfaW5kZXggaW4gc2VsZi5kYXRhX3N0b3JlLnVwZGF0 ZWRfaW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YV9zdG9yZS51cGRhdGVkW3Nl bGYuZGF0YV9zdG9yZS51cGRhdGVkX2luZGV4W19yb3dfaW5kZXhdXS5lcnIgPSB0cnVlOwogICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBncmlkLmdvdG9DZWxsKF9yb3dfaW5kZXgs IDEpOwogICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGdyaWQuZ290b0NlbGwoX3Jvd19p bmRleCwgMSk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBz cWwgcmVzdWx0cyBpbiBoaXN0b3J5IHRhYgotICAgICAgICAgICAgICBfLmVhY2gocmVzLmRhdGEu cXVlcnlfcmVzdWx0LCBmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5ncmlkVmll dy5oaXN0b3J5X2NvbGxlY3Rpb24uYWRkKHsKLSAgICAgICAgICAgICAgICAgICdzdGF0dXMnOiBy LnN0YXR1cywKLSAgICAgICAgICAgICAgICAgICdzdGFydF90aW1lJzogc2VsZi5xdWVyeV9zdGFy dF90aW1lLAotICAgICAgICAgICAgICAgICAgJ3F1ZXJ5Jzogci5zcWwsCi0gICAgICAgICAgICAg ICAgICAncm93X2FmZmVjdGVkJzogci5yb3dzX2FmZmVjdGVkLAotICAgICAgICAgICAgICAgICAg J3RvdGFsX3RpbWUnOiBzZWxmLnRvdGFsX3RpbWUsCi0gICAgICAgICAgICAgICAgICAnbWVzc2Fn ZSc6IHIucmVzdWx0LAotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgLy8gVXBkYXRl IHRoZSBzcWwgcmVzdWx0cyBpbiBoaXN0b3J5IHRhYgorICAgICAgICAgICAgLyoKKyAgICAgICAg ICAgIF8uZWFjaChyZXMuZGF0YS5xdWVyeV9yZXN1bHQsIGZ1bmN0aW9uKHIpIHsKKyAgICAgICAg ICAgICAgc2VsZi5ncmlkVmlldy5oaXN0b3J5X2NvbGxlY3Rpb24uYWRkKHsKKyAgICAgICAgICAg ICAgICAnc3RhdHVzJzogci5zdGF0dXMsCisgICAgICAgICAgICAgICAgJ3N0YXJ0X3RpbWUnOiBz ZWxmLnF1ZXJ5X3N0YXJ0X3RpbWUsCisgICAgICAgICAgICAgICAgJ3F1ZXJ5Jzogci5zcWwsCisg ICAgICAgICAgICAgICAgJ3Jvd19hZmZlY3RlZCc6IHIucm93c19hZmZlY3RlZCwKKyAgICAgICAg ICAgICAgICAndG90YWxfdGltZSc6IHNlbGYudG90YWxfdGltZSwKKyAgICAgICAgICAgICAgICAn bWVzc2FnZSc6IHIucmVzdWx0LAogICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgc2Vs Zi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOworICAgICAg ICAgICAgfSk7CisgICAgICAgICAgICAqLworICAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2Fk bWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwogCi0gICAgICAgICAgICAgIGdyaWQu aW52YWxpZGF0ZSgpOwotICAgICAgICAgICAgICBpZiAoc2VsZi5jbG9zZV9vbl9zYXZlKSB7Ci0g ICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpOworICAgICAgICAgICAgZ3JpZC5pbnZhbGlkYXRl KCk7CisgICAgICAgICAgICBpZiAoc2VsZi5jbG9zZV9vbl9zYXZlKSB7CisgICAgICAgICAgICAg IGlmKHNhdmVfc3VjY2Vzc2Z1bCkgeworICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBhbnkg b3RoZXIgbmVlZGVkIGNvbmZpcm1hdGlvbnMgYmVmb3JlIGNsb3NpbmcKKyAgICAgICAgICAgICAg ICBzZWxmLmNoZWNrX25lZWRlZF9jb25maXJtYXRpb25zX2JlZm9yZV9jbG9zaW5nX3BhbmVsKCk7 CiAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAuZmFpbChmdW5j dGlvbihlKSB7Ci0gICAgICAgICAgICAgIGxldCBzdGF0ZVBhcmFtcyA9IFt2aWV3LCBjb250cm9s bGVyLCBzYXZlX2FzXTsKLSAgICAgICAgICAgICAgbGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIu aGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAotICAgICAgICAgICAgICAgIHBnQWRtaW4sIHNlbGYs IGUsICdfc2F2ZScsIHN0YXRlUGFyYW1zLCB0cnVlCi0gICAgICAgICAgICAgICk7Ci0gICAgICAg ICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLCBtc2cpOwotICAgICAgICAgICAg fSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc2Vs Zi5jbG9zZV9vbl9zYXZlID0gZmFsc2U7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K KyAgICAgICAgICB9KQorICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAg IGxldCBzdGF0ZVBhcmFtcyA9IFt2aWV3XTsKKyAgICAgICAgICAgIGxldCBtc2cgPSBodHRwRXJy b3JIYW5kbGVyLmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKKyAgICAgICAgICAgICAgcGdBZG1p biwgc2VsZiwgZSwgJ3NhdmVfZGF0YScsIHN0YXRlUGFyYW1zLCB0cnVlCisgICAgICAgICAgICAp OworICAgICAgICAgICAgc2VsZi51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2UsIG1zZyk7CisgICAg ICAgICAgfSk7CisgICAgICB9LAorCisgICAgICByZXNldF9kYXRhX3N0b3JlOiBmdW5jdGlvbigp IHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICAvLyBUaGlzIGhvbGRzIGFsbCB0 aGUgaW5zZXJ0ZWQvdXBkYXRlZC9kZWxldGVkIGRhdGEgZnJvbSBncmlkCisgICAgICAgIHNlbGYu ZGF0YV9zdG9yZSA9IHsKKyAgICAgICAgICB1cGRhdGVkOiB7fSwKKyAgICAgICAgICBhZGRlZDog e30sCisgICAgICAgICAgc3RhZ2VkX3Jvd3M6IHt9LAorICAgICAgICAgIGRlbGV0ZWQ6IHt9LAor ICAgICAgICAgIHVwZGF0ZWRfaW5kZXg6IHt9LAorICAgICAgICAgIGFkZGVkX2luZGV4OiB7fSwK KyAgICAgICAgfTsKICAgICAgIH0sCiAKICAgICAgIC8vIEZpbmQgaW5kZXggb2Ygcm93IGF0IGZh dWx0IGZyb20gZ3JpZCBkYXRhCkBAIC0zMTEyLDcgKzMwODgsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1 ZXJ5dG9vbCcsIFsKIAogICAgICAgLy8gU2F2ZSBhcwogICAgICAgX3NhdmVfYXM6IGZ1bmN0aW9u KCkgewotICAgICAgICByZXR1cm4gdGhpcy5fc2F2ZSh0cnVlKTsKKyAgICAgICAgcmV0dXJuIHRo aXMuX3NhdmVfZmlsZSh0cnVlKTsKICAgICAgIH0sCiAKICAgICAgIC8vIFNldCBwYW5lbCB0aXRs ZS4KQEAgLTMxOTksNyArMzE3NSw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAg ICAgICAgICAgJGJ1c3lfaWNvbl9kaXYucmVtb3ZlQ2xhc3MoJ3Nob3dfcHJvZ3Jlc3MnKTsKIAog ICAgICAgICAgICAgLy8gZGlzYWJsZSBzYXZlIGJ1dHRvbiBvbiBmaWxlIHNhdmUKLSAgICAgICAg ICAgICQoJyNidG4tc2F2ZScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CisgICAgICAgICAgICAk KCcjYnRuLXNhdmUtZmlsZScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CiAgICAgICAgICAgICAk KCcjYnRuLWZpbGUtbWVudS1zYXZlJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKIAogICAgICAg ICAgICAgLy8gVXBkYXRlIHRoZSBmbGFnIGFzIG5ldyBjb250ZW50IGlzIGp1c3QgbG9hZGVkLgpA QCAtMzI0NCw3ICszMjIwLDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAg ICAgICAgIHNlbGYuZ3JpZFZpZXcuY3VycmVudF9maWxlID0gZTsKICAgICAgICAgICAgICAgc2Vs Zi5zZXRUaXRsZShzZWxmLmdyaWRWaWV3LmN1cnJlbnRfZmlsZS5yZXBsYWNlKC9eLipbXFxcL10v ZywgJycpLCB0cnVlKTsKICAgICAgICAgICAgICAgLy8gZGlzYWJsZSBzYXZlIGJ1dHRvbiBvbiBm aWxlIHNhdmUKLSAgICAgICAgICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgnZGlzYWJsZWQnLCB0 cnVlKTsKKyAgICAgICAgICAgICAgJCgnI2J0bi1zYXZlLWZpbGUnKS5wcm9wKCdkaXNhYmxlZCcs IHRydWUpOwogICAgICAgICAgICAgICAkKCcjYnRuLWZpbGUtbWVudS1zYXZlJykuY3NzKCdkaXNw bGF5JywgJ25vbmUnKTsKIAogICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGZsYWcgYXMgcXVl cnkgaXMgYWxyZWFkeSBzYXZlZC4KQEAgLTMyNTMsNyArMzIyOSw4IEBAIGRlZmluZSgndG9vbHMu cXVlcnl0b29sJywgWwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdw Z2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwogICAgICAgICAgICAgaWYgKHNl bGYuY2xvc2Vfb25fc2F2ZSkgewotICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7CisgICAgICAg ICAgICAgIC8vIENoZWNrIGZvciBhbnkgb3RoZXIgbmVlZGVkIGNvbmZpcm1hdGlvbnMgYmVmb3Jl IGNsb3NpbmcKKyAgICAgICAgICAgICAgc2VsZi5jaGVja19uZWVkZWRfY29uZmlybWF0aW9uc19i ZWZvcmVfY2xvc2luZ19wYW5lbCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgIH0pCiAgICAg ICAgICAgLmZhaWwoZnVuY3Rpb24oZSkgewpAQCAtMzI5Myw3ICszMjcwLDcgQEAgZGVmaW5lKCd0 b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgICBzZWxmLnNldFRpdGxlKHRpdGxlKTsKICAg ICAgICAgICB9CiAKLSAgICAgICAgICAkKCcjYnRuLXNhdmUnKS5wcm9wKCdkaXNhYmxlZCcsIGZh bHNlKTsKKyAgICAgICAgICAkKCcjYnRuLXNhdmUtZmlsZScpLnByb3AoJ2Rpc2FibGVkJywgZmFs c2UpOwogICAgICAgICAgICQoJyNidG4tZmlsZS1tZW51LXNhdmUnKS5jc3MoJ2Rpc3BsYXknLCAn YmxvY2snKTsKICAgICAgICAgICAkKCcjYnRuLWZpbGUtbWVudS1kcm9wZG93bicpLnByb3AoJ2Rp c2FibGVkJywgZmFsc2UpOwogICAgICAgICB9CkBAIC0zNTI3LDcgKzM1MDQsNyBAQCBkZWZpbmUo J3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgaWYgKGNvcGllZF9yb3dzLmxlbmd0aCA+IDAp IHsKICAgICAgICAgICAvLyBFbmFibGUgc2F2ZSBidXR0b24gc28gdGhhdCB1c2VyIGNhbgogICAg ICAgICAgIC8vIHNhdmUgbmV3bHkgcGFzdGVkIHJvd3Mgb24gc2VydmVyCi0gICAgICAgICAgJCgn I2J0bi1zYXZlJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CisgICAgICAgICAgJCgnI2J0bi1z YXZlLWRhdGEnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKIAogICAgICAgICAgIHZhciBhcnJf dG9fb2JqZWN0ID0gZnVuY3Rpb24oYXJyKSB7CiAgICAgICAgICAgICB2YXIgb2JqID0ge307CkBA IC0zNjMwLDEwICszNjA3LDExIEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAg ICAkKCcjYnRuLWV4cGxhaW4tb3B0aW9ucy1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgbW9k ZV9kaXNhYmxlZCk7CiAgICAgICAgICQoJyNidG4tZWRpdC1kcm9wZG93bicpLnByb3AoJ2Rpc2Fi bGVkJywgbW9kZV9kaXNhYmxlZCk7CiAgICAgICAgICQoJyNidG4tbG9hZC1maWxlJykucHJvcCgn ZGlzYWJsZWQnLCBtb2RlX2Rpc2FibGVkKTsKLSAgICAgICAgJCgnI2J0bi1zYXZlJykucHJvcCgn ZGlzYWJsZWQnLCBtb2RlX2Rpc2FibGVkKTsKKyAgICAgICAgJCgnI2J0bi1zYXZlLWZpbGUnKS5w cm9wKCdkaXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQpOwogICAgICAgICAkKCcjYnRuLWZpbGUtbWVu dS1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgbW9kZV9kaXNhYmxlZCk7CiAgICAgICAgICQo JyNidG4tZmluZCcpLnByb3AoJ2Rpc2FibGVkJywgbW9kZV9kaXNhYmxlZCk7CiAgICAgICAgICQo JyNidG4tZmluZC1tZW51LWRyb3Bkb3duJykucHJvcCgnZGlzYWJsZWQnLCBtb2RlX2Rpc2FibGVk KTsKKwogICAgICAgICBpZiAodGhpcy5pc19xdWVyeV90b29sKSB7CiAgICAgICAgICAgLy8gQ2Fu Y2VsIHF1ZXJ5IHRvb2wgbmVlZHMgb3Bwb3NpdGUgYmVoYXZpb3VyCiAgICAgICAgICAgJCgnI2J0 bi1jYW5jZWwtcXVlcnknKS5wcm9wKCdkaXNhYmxlZCcsICFkaXNhYmxlZCk7CkBAIC0zNjU5LDgg KzM2MzcsMzYgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAvLyBUaGlzIGZ1 bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIHNxbCBxdWVyeSBmcm9tIHRoZSB0ZXh0IGJveAogICAgICAg Ly8gYW5kIGV4ZWN1dGUgdGhlIHF1ZXJ5LgogICAgICAgZXhlY3V0ZTogZnVuY3Rpb24oZXhwbGFp bl9wcmVmaXgsIHNob3VsZFJlY29ubmVjdD1mYWxzZSkgewotICAgICAgICB2YXIgc2VsZiA9IHRo aXMsCi0gICAgICAgICAgc3FsID0gJyc7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKworICAg ICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBncmlkIGhhcyBhbnkgY2hhbmdlcyBiZWZvcmUgcnVu bmluZyBxdWVyeQorICAgICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBncmlkIGhhcyBhbnkgY2hh bmdlcyBiZWZvcmUgcnVubmluZyBxdWVyeQorICAgICAgICBpZiAoc2VsZi5jYW5fZWRpdCAmJiBf LmhhcyhzZWxmLCAnZGF0YV9zdG9yZScpICYmCisgICAgICAgICAgKF8uc2l6ZShzZWxmLmRhdGFf c3RvcmUuYWRkZWQpIHx8CisgICAgICAgICAgICBfLnNpemUoc2VsZi5kYXRhX3N0b3JlLnVwZGF0 ZWQpIHx8CisgICAgICAgICAgICBfLnNpemUoc2VsZi5kYXRhX3N0b3JlLmRlbGV0ZWQpKQorICAg ICAgICApIHsKKyAgICAgICAgICBhbGVydGlmeS5jb25maXJtKGdldHRleHQoJ1Vuc2F2ZWQgY2hh bmdlcycpLAorICAgICAgICAgICAgZ2V0dGV4dCgnVGhlIGRhdGEgaGFzIGJlZW4gbW9kaWZpZWQs IGJ1dCBub3Qgc2F2ZWQuIEFyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBkaXNjYXJkIHRoZSBjaGFu Z2VzPycpLAorICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIC8vIERvIG5v dGhpbmcgYXMgdXNlciBkbyBub3Qgd2FudCB0byBzYXZlLCBqdXN0IGNvbnRpbnVlCisgICAgICAg ICAgICAgIHNlbGYuX2V4ZWN1dGVfc3FsX3F1ZXJ5KGV4cGxhaW5fcHJlZml4LCBzaG91bGRSZWNv bm5lY3QpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAg ICAgICAgICAvLyBTdG9wLCBVc2VyIHdhbnRzIHRvIHNhdmUKKyAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgKS5zZXQoJ2xhYmVscycsIHsKKyAgICAg ICAgICAgIG9rOiBnZXR0ZXh0KCdZZXMnKSwKKyAgICAgICAgICAgIGNhbmNlbDogZ2V0dGV4dCgn Tm8nKSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBzZWxmLl9l eGVjdXRlX3NxbF9xdWVyeShleHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0KTsKKyAgICAg ICAgfQorICAgICAgfSwKKworICAgICAgX2V4ZWN1dGVfc3FsX3F1ZXJ5OiBmdW5jdGlvbihleHBs YWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0KSB7CisgICAgICAgIHZhciBzZWxmID0gdGhpcywg c3FsID0gJyc7CiAKICAgICAgICAgc2VsZi5oYXNfbW9yZV9yb3dzID0gZmFsc2U7CiAgICAgICAg IHNlbGYuZmV0Y2hpbmdfcm93cyA9IGZhbHNlOwpAQCAtMzY2OSw4ICszNjc1LDggQEAgZGVmaW5l KCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgc3FsID0gc2VsZi5zcGVjaWFsX3NxbDsK ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAvKiBJZiBjb2RlIGlzIHNlbGVjdGVkIGluIHRo ZSBjb2RlIG1pcnJvciB0aGVuIGV4ZWN1dGUKLSAgICAgICAgICAgKiB0aGUgc2VsZWN0ZWQgcGFy dCBlbHNlIGV4ZWN1dGUgdGhlIGNvbXBsZXRlIGNvZGUuCi0gICAgICAgICAgICovCisgICAgICAg ICAgKiB0aGUgc2VsZWN0ZWQgcGFydCBlbHNlIGV4ZWN1dGUgdGhlIGNvbXBsZXRlIGNvZGUuCisg ICAgICAgICAgKi8KICAgICAgICAgICB2YXIgc2VsZWN0ZWRfY29kZSA9IHNlbGYuZ3JpZFZpZXcu cXVlcnlfdG9vbF9vYmouZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgICAgaWYgKHNlbGVjdGVkX2Nv ZGUubGVuZ3RoID4gMCkKICAgICAgICAgICAgIHNxbCA9IHNlbGVjdGVkX2NvZGU7CkBAIC0zOTk0 LDYgKzQwMDAsMTQ2IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICBpc19x dWVyeV9ydW5uaW5nID0gdmFsdWU7CiAgICAgICB9LAogCisgICAgICAvKiBDaGVja3MgaWYgdGhl cmUgaXMgYW55IHVuc2F2ZWQgZGF0YSBjaGFuZ2VzLCB1bnNhdmVkIGNoYW5nZXMgaW4gdGhlIHF1 ZXJ5CisgICAgICBvciB1bmNvbW1pdGVkIHRyYW5zYWN0aW9ucyBiZWZvcmUgY2xvc2luZyBhIHBh bmVsICovCisgICAgICBjaGVja19uZWVkZWRfY29uZmlybWF0aW9uc19iZWZvcmVfY2xvc2luZ19w YW5lbDogZnVuY3Rpb24oaXNfY2xvc2VfZXZlbnRfY2FsbCA9IGZhbHNlKSB7CisgICAgICAgIHZh ciBzZWxmID0gdGhpcywgbXNnOworCisgICAgICAgIC8qCisgICAgICAgICBpc19jbG9zZV9ldmVu dF9jYWxsID0gdHJ1ZSBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZQor ICAgICAgICAgY2xvc2UgcGFuZWwgZXZlbnQgaXMgdHJpZ2dlcmVkLCBvdGhlcndpc2UgaXQgaXMg ZmFsc2UKKyAgICAgICAgKi8KKyAgICAgICAgaWYoIXNlbGYuaWdub3JlX29uX2Nsb3NlIHx8IGlz X2Nsb3NlX2V2ZW50X2NhbGwpCisgICAgICAgICAgc2VsZi5pZ25vcmVfb25fY2xvc2UgPSB7Cisg ICAgICAgICAgICB1bnNhdmVkX2RhdGE6IGZhbHNlLAorICAgICAgICAgICAgdW5zYXZlZF9xdWVy eTogZmFsc2UsCisgICAgICAgICAgICB1bmNvbW1pdGVkX3RyYW5zYWN0aW9uOiBmYWxzZSwKKyAg ICAgICAgICB9OworCisgICAgICAgIHZhciBpZ25vcmVfdW5zYXZlZF9kYXRhID0gc2VsZi5pZ25v cmVfb25fY2xvc2UudW5zYXZlZF9kYXRhLAorICAgICAgICAgIGlnbm9yZV91bnNhdmVkX3F1ZXJ5 ID0gc2VsZi5pZ25vcmVfb25fY2xvc2UudW5zYXZlZF9xdWVyeSwKKyAgICAgICAgICBpZ25vcmVf dW5jb21taXRlZF90cmFuc2FjdGlvbiA9IHNlbGYuaWdub3JlX29uX2Nsb3NlLnVuY29tbWl0ZWRf dHJhbnNhY3Rpb247CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgdW5zYXZlZCBkYXRhIGNoYW5n ZXMgaW4gdGhlIGdyaWQKKyAgICAgICAgaWYgKCFpZ25vcmVfdW5zYXZlZF9kYXRhICYmIHNlbGYu Y2FuX2VkaXQKKyAgICAgICAgICAgICYmIHNlbGYucHJlZmVyZW5jZXMucHJvbXB0X3NhdmVfZGF0 YV9jaGFuZ2VzICYmCisgICAgICAgICAgICBzZWxmLmRhdGFfc3RvcmUgJiYKKyAgICAgICAgICAg ICAoXy5zaXplKHNlbGYuZGF0YV9zdG9yZS5hZGRlZCkgfHwKKyAgICAgICAgICAgICAgXy5zaXpl KHNlbGYuZGF0YV9zdG9yZS51cGRhdGVkKSB8fAorICAgICAgICAgICAgICBfLnNpemUoc2VsZi5k YXRhX3N0b3JlLmRlbGV0ZWQpKSkgeworICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1RoZSBkYXRh IGhhcyBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIGNoYW5nZXM/Jyk7CisgICAgICAgICAg c2VsZi51bnNhdmVkX2NoYW5nZXNfdXNlcl9jb25maXJtYXRpb24obXNnLCB0cnVlKTsKKyAgICAg ICAgfSAvLyBJZiB0aGVyZSBpcyB1bnNhdmVkIHF1ZXJ5IGNoYW5nZXMgaW4gdGhlIHF1ZXJ5IGVk aXRvcgorICAgICAgICBlbHNlIGlmICghaWdub3JlX3Vuc2F2ZWRfcXVlcnkgJiYgc2VsZi5pc19x dWVyeV90b29sCisgICAgICAgICAgICAgICAgICAgJiYgc2VsZi5pc19xdWVyeV9jaGFuZ2VkCisg ICAgICAgICAgICAgICAgICAgJiYgc2VsZi5wcmVmZXJlbmNlcy5wcm9tcHRfc2F2ZV9xdWVyeV9j aGFuZ2VzKSB7CisgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnVGhlIHRleHQgaGFzIGNoYW5nZWQu IERvIHlvdSB3YW50IHRvIHNhdmUgY2hhbmdlcz8nKTsKKyAgICAgICAgICBzZWxmLnVuc2F2ZWRf Y2hhbmdlc191c2VyX2NvbmZpcm1hdGlvbihtc2csIGZhbHNlKTsKKyAgICAgICAgfSAvLyBJZiBh IHRyYW5zYWN0aW9uIGlzIGN1cnJlbnRseSBvbmdvaW5nCisgICAgICAgIGVsc2UgaWYgKCFpZ25v cmVfdW5jb21taXRlZF90cmFuc2FjdGlvbgorICAgICAgICAgICAgICAgICAmJiBzZWxmLnByZWZl cmVuY2VzLmFsZXJ0X3VuY29tbWl0ZWRfdHJhbnNhY3Rpb24KKyAgICAgICAgICAgICAgICAgJiYg U3FsRWRpdG9yVXRpbHMucHJldmlvdXNTdGF0dXMgIT0gMCkgeworICAgICAgICAgIHNlbGYudW5j b21taXRlZF90cmFuc2FjdGlvbl91c2VyX2NvbmZpcm1hdGlvbigpOworICAgICAgICB9CisgICAg ICAgIGVsc2UgeworICAgICAgICAgIC8vIE5vIG90aGVyIGZ1bmN0aW9uIHNob3VsZCBjYWxsIGNs b3NlKCkgZXhjZXB0IHRocm91Z2ggdGhpcyBmdW5jdGlvbgorICAgICAgICAgIC8vIGluIG9yZGVy IHRvIHBlcmZvcm0gbmVjZXNzYXJ5IGNoZWNrcworICAgICAgICAgIHNlbGYuaWdub3JlX29uX2Ns b3NlID0gdW5kZWZpbmVkOworICAgICAgICAgIHNlbGYuY2xvc2UoKTsKKyAgICAgICAgfQorICAg ICAgICAvLyBSZXR1cm4gZmFsc2Ugc28gdGhhdCB0aGUgcGFuZWwgZG9lcyBub3QgY2xvc2UgdW5s ZXNzIGNsb3NlKCkKKyAgICAgICAgLy8gaXMgY2FsbGVkIGV4cGxpY2l0bHkgKHdoZW4gYWxsIG5l ZWRlZCBwcm9tcHRzIGFyZSBpc3N1ZWQpLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9 LAorCisgICAgICAvKiBUbyBwcm9tcHQgdGhlIHVzZXIgZm9yIHVuY29tbWl0ZWQgdHJhbnNhY3Rp b24gKi8KKyAgICAgIHVuY29tbWl0ZWRfdHJhbnNhY3Rpb25fdXNlcl9jb25maXJtYXRpb246IGZ1 bmN0aW9uKCkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgYWxlcnRpZnku Y29uZmlybSgKKyAgICAgICAgICBnZXR0ZXh0KCdVbmNvbW1pdGVkIHRyYW5zYWN0aW9uJyksCisg ICAgICAgICAgZ2V0dGV4dChgVGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gd2FzIG5vdCBjb21taXRl ZCB0byB0aGUgZGF0YWJhc2UuCisgICAgICAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBk aXNjYXJkIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uP2ApLAorICAgICAgICAgIGZ1bmN0aW9uKCkg eworICAgICAgICAgICAgLy8gR28gYmFjayB0byBjaGVjayBmb3IgYW55IG90aGVyIG5lZWRlZCBj b25maXJtYXRpb25zIGJlZm9yZSBjbG9zaW5nCisgICAgICAgICAgICBzZWxmLmlnbm9yZV9vbl9j bG9zZS51bmNvbW1pdGVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIHNlbGYuY2hl Y2tfbmVlZGVkX2NvbmZpcm1hdGlvbnNfYmVmb3JlX2Nsb3NpbmdfcGFuZWwoKTsKKyAgICAgICAg ICB9LAorICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICAgIH0KKyAgICAgICAgKS5zZXQoJ2xhYmVscycsIHsKKyAgICAgICAgICBvazogZ2V0dGV4dCgn WWVzJyksCisgICAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdObycpLAorICAgICAgICB9KTsKKyAg ICAgIH0sCisKKyAgICAgIC8qIFRvIHByb21wdCB1c2VyIGZvciB1bnNhdmVkIGNoYW5nZXMgKi8K KyAgICAgIHVuc2F2ZWRfY2hhbmdlc191c2VyX2NvbmZpcm1hdGlvbjogZnVuY3Rpb24obXNnLCBp c191bnNhdmVkX2RhdGEpIHsKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW55dGhpbmcgdG8gc2F2 ZSB0aGVuIHByb21wdCB1c2VyCisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKworICAgICAgICBh bGVydGlmeS5jb25maXJtU2F2ZSB8fCBhbGVydGlmeS5kaWFsb2coJ2NvbmZpcm1TYXZlJywgZnVu Y3Rpb24oKSB7CisgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIG1haW46IGZ1bmN0aW9u KHRpdGxlLCBtZXNzYWdlLCBpc191bnNhdmVkX2RhdGEpIHsKKyAgICAgICAgICAgICAgdGhpcy5p c191bnNhdmVkX2RhdGEgPSBpc191bnNhdmVkX2RhdGE7CisgICAgICAgICAgICAgIHRoaXMuc2V0 SGVhZGVyKHRpdGxlKTsKKyAgICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50KG1lc3NhZ2UpOwor ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICBidXR0b25zOiBbeworICAgICAgICAgICAg ICAgICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCisgICAgICAgICAgICAgICAgICBrZXk6IDI3 LCAvLyBFU0MKKyAgICAgICAgICAgICAgICAgIGludm9rZU9uQ2xvc2U6IHRydWUsCisgICAgICAg ICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXNlY29uZGFyeSBmYSBmYS1sZyBmYS10aW1l cyBwZy1hbGVydGlmeS1idXR0b24nLAorICAgICAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAg ICAgICAgIHRleHQ6IGdldHRleHQoJ0RvblwndCBzYXZlJyksCisgICAgICAgICAgICAgICAgICBj bGFzc05hbWU6ICdidG4gYnRuLXNlY29uZGFyeSBmYSBmYS1sZyBmYS10cmFzaC1vIHBnLWFsZXJ0 aWZ5LWJ1dHRvbicsCisgICAgICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAgICAgdGV4 dDogZ2V0dGV4dCgnU2F2ZScpLAorICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0 bi1wcmltYXJ5IGZhIGZhLWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9uJywKKyAgICAgICAg ICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICBmb2N1czogeworICAgICAgICAgICAgICAgICAg ZWxlbWVudDogMCwKKyAgICAgICAgICAgICAgICAgIHNlbGVjdDogZmFsc2UsCisgICAgICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgICAgICBvcHRpb25zOiB7CisgICAgICAgICAgICAgICAgICBt YXhpbWl6YWJsZTogZmFsc2UsCisgICAgICAgICAgICAgICAgICByZXNpemFibGU6IGZhbHNlLAor ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9LAorICAg ICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGNsb3NlRXZlbnQpIHsKKyAgICAgICAgICAgICAg c3dpdGNoIChjbG9zZUV2ZW50LmluZGV4KSB7CisgICAgICAgICAgICAgIGNhc2UgMDogLy8gQ2Fu Y2VsCisgICAgICAgICAgICAgICAgLy9EbyBub3RoaW5nLgorICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICBjYXNlIDE6IC8vIERvbid0IFNhdmUKKyAgICAgICAgICAgICAgICBz ZWxmLmNsb3NlX29uX3NhdmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZih0aGlzLmlzX3Vu c2F2ZWRfZGF0YSkKKyAgICAgICAgICAgICAgICAgIHNlbGYuaWdub3JlX29uX2Nsb3NlLnVuc2F2 ZWRfZGF0YSA9IHRydWU7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg c2VsZi5pZ25vcmVfb25fY2xvc2UudW5zYXZlZF9xdWVyeSA9IHRydWU7CisgICAgICAgICAgICAg ICAgLy8gR28gYmFjayB0byBjaGVjayBmb3IgYW55IG90aGVyIG5lZWRlZCBjb25maXJtYXRpb25z IGJlZm9yZSBjbG9zaW5nCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19uZWVkZWRfY29uZmly bWF0aW9uc19iZWZvcmVfY2xvc2luZ19wYW5lbCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICBjYXNlIDI6IC8vU2F2ZQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2Vf b25fc2F2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYodGhpcy5pc191bnNhdmVkX2RhdGEp IHsKKyAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9kYXRhKCk7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgc2VsZi5fc2F2ZV9m aWxlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgIH07CisgICAgICAgIH0pOworICAg ICAgICBhbGVydGlmeS5jb25maXJtU2F2ZShnZXR0ZXh0KCdTYXZlIGNoYW5nZXM/JyksIG1zZywg aXNfdW5zYXZlZF9kYXRhKTsKKyAgICAgIH0sCisKICAgICAgIGNsb3NlOiBmdW5jdGlvbigpIHsK ICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3Ivc3RhdGljL3Njc3MvX3NxbGVkaXRvci5zY3NzIGIvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL3N0YXRpYy9zY3NzL19zcWxlZGl0b3Iuc2NzcwppbmRleCBlYmY1YjE4MC4u Mjc0MmYzMjAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMv c2Nzcy9fc3FsZWRpdG9yLnNjc3MKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0 YXRpYy9zY3NzL19zcWxlZGl0b3Iuc2NzcwpAQCAtMjA5LDYgKzIwOSwxMyBAQCBsaS5Db2RlTWly cm9yLWhpbnQtYWN0aXZlIHsKICAgY29sb3I6ICR0ZXh0LW11dGVkOwogfQogCisvKiBIaWdobGln aHRlZCAobW9kaWZpZWQgb3IgbmV3KSBjZWxsICovCisuZ3JpZC1jYW52YXMgLmhpZ2hsaWdodGVk X2dyaWRfY2VsbHMgeworICBiYWNrZ3JvdW5kOiAkY29sb3ItZ3JheS1saWdodGVyOworICBmb250 LXdlaWdodDogYm9sZDsKK30KKworCiAvKiBPdmVycmlkZSBzZWxlY3RlZCByb3cgY29sb3IgKi8K ICNkYXRhZ3JpZCAuc2xpY2stcm93IC5zbGljay1jZWxsLnNlbGVjdGVkIHsKICAgICBiYWNrZ3Jv dW5kLWNvbG9yOiAkdGFibGUtYmctc2VsZWN0ZWQ7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRvci9zcWwvMTFfcGx1cy9wcmltYXJ5X2tl eXMuc3FsIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Iv c3FsLzExX3BsdXMvcHJpbWFyeV9rZXlzLnNxbAppbmRleCAxZGZiMDk0Zi4uNDU5OTc3ZTkgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9y L3NxbC8xMV9wbHVzL3ByaW1hcnlfa2V5cy5zcWwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3Fs ZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Ivc3FsLzExX3BsdXMvcHJpbWFyeV9rZXlzLnNxbApA QCAtMSw2ICsxLDYgQEAKIHsjID09PT09PT09PT09PT0gRmV0Y2ggdGhlIHByaW1hcnkga2V5cyBm b3IgZ2l2ZW4gb2JqZWN0IGlkID09PT09PT09PT09PT0gI30KIHslIGlmIG9ial9pZCAlfQotU0VM RUNUIGF0LmF0dG5hbWUsIHR5LnR5cG5hbWUKK1NFTEVDVCBhdC5hdHRuYW1lLCBhdC5hdHRudW0s IHR5LnR5cG5hbWUKIEZST00gcGdfYXR0cmlidXRlIGF0IExFRlQgSk9JTiBwZ190eXBlIHR5IE9O ICh0eS5vaWQgPSBhdC5hdHR0eXBpZCkKIFdIRVJFIGF0dHJlbGlkPXt7b2JqX2lkfX06Om9pZCBB TkQgYXR0bnVtID0gQU5ZICgKICAgICAoU0VMRUNUIGNvbi5jb25rZXkgRlJPTSBwZ19jbGFzcyBy ZWwgTEVGVCBPVVRFUiBKT0lOIHBnX2NvbnN0cmFpbnQgY29uIE9OIGNvbi5jb25yZWxpZD1yZWwu b2lkCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3Nx bGVkaXRvci9zcWwvZGVmYXVsdC9wcmltYXJ5X2tleXMuc3FsIGIvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Ivc3FsL2RlZmF1bHQvcHJpbWFyeV9rZXlzLnNx bAppbmRleCA2MGQwZTU2Zi4uYTk2YzkyOGYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xz L3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL3NxbC9kZWZhdWx0L3ByaW1hcnlfa2V5cy5z cWwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Iv c3FsL2RlZmF1bHQvcHJpbWFyeV9rZXlzLnNxbApAQCAtMSw4ICsxLDggQEAKIHsjID09PT09PT09 PT09PT0gRmV0Y2ggdGhlIHByaW1hcnkga2V5cyBmb3IgZ2l2ZW4gb2JqZWN0IGlkID09PT09PT09 PT09PT0gI30KIHslIGlmIG9ial9pZCAlfQotU0VMRUNUIGF0LmF0dG5hbWUsIHR5LnR5cG5hbWUK K1NFTEVDVCBhdC5hdHRuYW1lLCBhdC5hdHRudW0sIHR5LnR5cG5hbWUKIEZST00gcGdfYXR0cmli dXRlIGF0IExFRlQgSk9JTiBwZ190eXBlIHR5IE9OICh0eS5vaWQgPSBhdC5hdHR0eXBpZCkKIFdI RVJFIGF0dHJlbGlkPXt7b2JqX2lkfX06Om9pZCBBTkQgYXR0bnVtID0gQU5ZICgKICAgICAoU0VM RUNUIGNvbi5jb25rZXkgRlJPTSBwZ19jbGFzcyByZWwgTEVGVCBPVVRFUiBKT0lOIHBnX2NvbnN0 cmFpbnQgY29uIE9OIGNvbi5jb25yZWxpZD1yZWwub2lkCiAgICAgQU5EIGNvbi5jb250eXBlPSdw JyBXSEVSRSByZWwucmVsa2luZCBJTiAoJ3InLCdzJywndCcpIEFORCByZWwub2lkID0ge3tvYmpf aWR9fTo6b2lkKTo6b2lkW10pCi17JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv dGVzdHMvZXhlY3V0ZV9xdWVyeV91dGlscy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci90ZXN0cy9leGVjdXRlX3F1ZXJ5X3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwLi5jM2NmODliMwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L3NxbGVkaXRvci90ZXN0cy9leGVjdXRlX3F1ZXJ5X3V0aWxzLnB5CkBAIC0wLDAgKzEsMjggQEAK K2ltcG9ydCBqc29uCisKKworZGVmIGV4ZWN1dGVfcXVlcnkodGVzdGVyLCBxdWVyeSwgc3RhcnRf cXVlcnlfdG9vbF91cmwsIHBvbGxfdXJsKToKKyAgICAjIFN0YXJ0IHF1ZXJ5IHRvb2wgYW5kIGV4 ZWN1dGUgc3FsCisgICAgcmVzcG9uc2UgPSB0ZXN0ZXIucG9zdChzdGFydF9xdWVyeV90b29sX3Vy bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyh7InNxbCI6IHF1 ZXJ5fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNv bicpCisKKyAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSAhPSAyMDA6CisgICAgICAgIHJldHVy biBGYWxzZSwgTm9uZQorCisgICAgIyBQb2xsIGZvciByZXN1bHRzCisgICAgcmV0dXJuIHBvbGxf Zm9yX3F1ZXJ5X3Jlc3VsdHModGVzdGVyPXRlc3RlciwgcG9sbF91cmw9cG9sbF91cmwpCisKKwor ZGVmIHBvbGxfZm9yX3F1ZXJ5X3Jlc3VsdHModGVzdGVyLCBwb2xsX3VybCk6CisgICAgIyBQb2xs IGZvciByZXN1bHRzIHVudGlsIHRoZXkgYXJlIHN1Y2Nlc3NmdWwKKyAgICB3aGlsZSBUcnVlOgor ICAgICAgICByZXNwb25zZSA9IHRlc3Rlci5nZXQocG9sbF91cmwpCisgICAgICAgIGlmIHJlc3Bv bnNlLnN0YXR1c19jb2RlICE9IDIwMDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgTm9uZQor ICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgn dXRmLTgnKSkKKyAgICAgICAgc3RhdHVzID0gcmVzcG9uc2VfZGF0YVsnZGF0YSddWydzdGF0dXMn XQorICAgICAgICBpZiBzdGF0dXMgPT0gJ1N1Y2Nlc3MnOgorICAgICAgICAgICAgcmV0dXJuIFRy dWUsIHJlc3BvbnNlX2RhdGEKKyAgICAgICAgZWxpZiBzdGF0dXMgPT0gJ05vdENvbm5lY3RlZCcg b3Igc3RhdHVzID09ICdDYW5jZWwnOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBOb25lCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9pc19xdWVy eV9yZXN1bHRzZXRfdXBkYXRhYmxlLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rl c3RzL3Rlc3RfaXNfcXVlcnlfcmVzdWx0c2V0X3VwZGF0YWJsZS5weQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMC4uZDdlNzVjNzgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9pc19xdWVyeV9yZXN1bHRzZXRfdXBkYXRh YmxlLnB5CkBAIC0wLDAgKzEsMTI1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWlu IDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTksIFRo ZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBv cnQganNvbgorCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0 YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKK2Zyb20g cGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVz c2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0 X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIC5leGVjdXRlX3F1ZXJ5X3V0 aWxzIGltcG9ydCBleGVjdXRlX3F1ZXJ5CisKKworY2xhc3MgVGVzdFF1ZXJ5VXBkYXRhYmxlUmVz dWx0c2V0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIHRlc3Qg dGhlIGRldGVjdGlvbiBvZiB3aGV0aGVyIHRoZSBxdWVyeQorICAgICAgICByZXN1bHQtc2V0IGlz IHVwZGF0YWJsZS4gIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gc2VsZWN0 aW5nIGFsbCBjb2x1bW5zIG9mIHRoZSB0YWJsZScsIGRpY3QoCisgICAgICAgICAgICBzcWw9J1NF TEVDVCAqIEZST00gdGVzdF9mb3JfdXBkYXRhYmxlX3Jlc3VsdHNldDsnLAorICAgICAgICAgICAg cHJpbWFyeV9rZXlzPXsKKyAgICAgICAgICAgICAgICAncGtfY29sMSc6ICdpbnQ0JywKKyAgICAg ICAgICAgICAgICAncGtfY29sMic6ICdpbnQ0JworICAgICAgICAgICAgfQorICAgICAgICApKSwK KyAgICAgICAgKCdXaGVuIHNlbGVjdGluZyBhbGwgcHJpbWFyeSBrZXlzIG9mIHRoZSB0YWJsZScs IGRpY3QoCisgICAgICAgICAgICBzcWw9J1NFTEVDVCBwa19jb2wxLCBwa19jb2wyIEZST00gdGVz dF9mb3JfdXBkYXRhYmxlX3Jlc3VsdHNldDsnLAorICAgICAgICAgICAgcHJpbWFyeV9rZXlzPXsK KyAgICAgICAgICAgICAgICAncGtfY29sMSc6ICdpbnQ0JywKKyAgICAgICAgICAgICAgICAncGtf Y29sMic6ICdpbnQ0JworICAgICAgICAgICAgfQorICAgICAgICApKSwKKyAgICAgICAgKCdXaGVu IHNlbGVjdGluZyBzb21lIG9mIHRoZSBwcmltYXJ5IGtleXMgb2YgdGhlIHRhYmxlJywgZGljdCgK KyAgICAgICAgICAgIHNxbD0nU0VMRUNUIHBrX2NvbDIgRlJPTSB0ZXN0X2Zvcl91cGRhdGFibGVf cmVzdWx0c2V0OycsCisgICAgICAgICAgICBwcmltYXJ5X2tleXM9Tm9uZQorICAgICAgICApKSwK KyAgICAgICAgKCdXaGVuIHNlbGVjdGluZyBub25lIG9mIHRoZSBwcmltYXJ5IGtleXMgb2YgdGhl IHRhYmxlJywgZGljdCgKKyAgICAgICAgICAgIHNxbD0nU0VMRUNUIG5vcm1hbF9jb2wxIEZST00g dGVzdF9mb3JfdXBkYXRhYmxlX3Jlc3VsdHNldDsnLAorICAgICAgICAgICAgcHJpbWFyeV9rZXlz PU5vbmUKKyAgICAgICAgKSksCisgICAgICAgICgnV2hlbiByZW5hbWluZyBhIHByaW1hcnkga2V5 JywgZGljdCgKKyAgICAgICAgICAgIHNxbD0nU0VMRUNUIHBrX2NvbDEgYXMgc29tZV9jb2wsICcK KyAgICAgICAgICAgICAgICAncGtfY29sMiBGUk9NIHRlc3RfZm9yX3VwZGF0YWJsZV9yZXN1bHRz ZXQ7JywKKyAgICAgICAgICAgIHByaW1hcnlfa2V5cz1Ob25lCisgICAgICAgICkpLAorICAgICAg ICAoJ1doZW4gcmVuYW1pbmcgYSBjb2x1bW4gdG8gYSBwcmltYXJ5IGtleSBuYW1lJywgZGljdCgK KyAgICAgICAgICAgIHNxbD0nU0VMRUNUIHBrX2NvbDEsIHBrX2NvbDIsIG5vcm1hbF9jb2wxIGFz IHBrX2NvbDEgJworICAgICAgICAgICAgICAgICdGUk9NIHRlc3RfZm9yX3VwZGF0YWJsZV9yZXN1 bHRzZXQ7JywKKyAgICAgICAgICAgIHByaW1hcnlfa2V5cz1Ob25lCisgICAgICAgICkpCisgICAg XQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9pbml0aWFsaXplX2RhdGFi YXNlX2Nvbm5lY3Rpb24oKQorICAgICAgICBzZWxmLl9pbml0aWFsaXplX3F1ZXJ5X3Rvb2woKQor ICAgICAgICBzZWxmLl9pbml0aWFsaXplX3VybHMoKQorICAgICAgICBzZWxmLl9jcmVhdGVfdGVz dF90YWJsZSgpCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgaXNfc3VjY2Vzcywg cmVzcG9uc2VfZGF0YSA9IFwKKyAgICAgICAgICAgIGV4ZWN1dGVfcXVlcnkodGVzdGVyPXNlbGYu dGVzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeT1zZWxmLnNxbCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgcG9sbF91cmw9c2VsZi5wb2xsX3VybCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RhcnRfcXVlcnlfdG9vbF91cmw9c2VsZi5zdGFydF9xdWVyeV90b29s X3VybCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoaXNfc3VjY2VzcywgVHJ1ZSkKKworICAg ICAgICAjIENoZWNrIHByaW1hcnkga2V5cworICAgICAgICBwcmltYXJ5X2tleXMgPSByZXNwb25z ZV9kYXRhWydkYXRhJ11bJ3ByaW1hcnlfa2V5cyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KHByaW1hcnlfa2V5cywgc2VsZi5wcmltYXJ5X2tleXMpCisKKyAgICBkZWYgdGVhckRvd24oc2Vs Zik6CisgICAgICAgICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKKyAgICAgICAgZGF0YWJhc2Vf dXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9p ZCkKKworICAgIGRlZiBfaW5pdGlhbGl6ZV9kYXRhYmFzZV9jb25uZWN0aW9uKHNlbGYpOgorICAg ICAgICBkYXRhYmFzZV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV0KKyAg ICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBkYXRhYmFzZV9pbmZvWyJzZXJ2ZXJfaWQiXQorCisgICAg ICAgIHNlbGYuZGJfaWQgPSBkYXRhYmFzZV9pbmZvWyJkYl9pZCJdCisgICAgICAgIGRiX2NvbiA9 IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJf aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5kYl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2NvblsiaW5mbyJdID09ICJEYXRhYmFzZSBjb25u ZWN0ZWQuIjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3Qg dG8gdGhlIGRhdGFiYXNlLiIpCisKKyAgICBkZWYgX2luaXRpYWxpemVfcXVlcnlfdG9vbChzZWxm KToKKyAgICAgICAgdXJsID0gJy9kYXRhZ3JpZC9pbml0aWFsaXplL3F1ZXJ5X3Rvb2wvezB9L3sx fS97Mn0nLmZvcm1hdCgKKyAgICAgICAgICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwgc2VsZi5zZXJ2 ZXJfaWQsIHNlbGYuZGJfaWQpCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1 cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDAp CisKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNv ZGUoJ3V0Zi04JykpCisgICAgICAgIHNlbGYudHJhbnNfaWQgPSByZXNwb25zZV9kYXRhWydkYXRh J11bJ2dyaWRUcmFuc0lkJ10KKworICAgIGRlZiBfaW5pdGlhbGl6ZV91cmxzKHNlbGYpOgorICAg ICAgICBzZWxmLnN0YXJ0X3F1ZXJ5X3Rvb2xfdXJsID0gXAorICAgICAgICAgICAgJy9zcWxlZGl0 b3IvcXVlcnlfdG9vbC9zdGFydC97MH0nLmZvcm1hdChzZWxmLnRyYW5zX2lkKQorCisgICAgICAg IHNlbGYucG9sbF91cmwgPSAnL3NxbGVkaXRvci9wb2xsL3swfScuZm9ybWF0KHNlbGYudHJhbnNf aWQpCisKKyAgICBkZWYgX2NyZWF0ZV90ZXN0X3RhYmxlKHNlbGYpOgorICAgICAgICBjcmVhdGVf c3FsID0gIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJPUCBUQUJMRSBJRiBFWElT VFMgdGVzdF9mb3JfdXBkYXRhYmxlX3Jlc3VsdHNldDsKKworICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENSRUFURSBUQUJMRSB0ZXN0X2Zvcl91cGRhdGFibGVfcmVzdWx0c2V0KAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwa19jb2wxCVNFUklBTCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGtfY29sMiBTRVJJQUwsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5vcm1hbF9jb2wxIFZBUkNIQVIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5vcm1hbF9jb2wyIFZBUkNIQVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBSSU1BUlkgS0VZKHBrX2NvbDEsIHBrX2NvbDIpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAiIiIKKworICAgICAgICBpc19zdWNjZXNz LCBfID0gXAorICAgICAgICAgICAgZXhlY3V0ZV9xdWVyeSh0ZXN0ZXI9c2VsZi50ZXN0ZXIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5PWNyZWF0ZV9zcWwsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0YXJ0X3F1ZXJ5X3Rvb2xfdXJsPXNlbGYuc3RhcnRfcXVlcnlfdG9vbF91 cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxfdXJsPXNlbGYucG9sbF91cmwpCisg ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGlzX3N1Y2Nlc3MsIFRydWUpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9zYXZlX2NoYW5nZWRfZGF0YS5w eSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X3NhdmVfY2hhbmdlZF9k YXRhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4wMTc5NWQyOQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X3Nh dmVfY2hhbmdlZF9kYXRhLnB5CkBAIC0wLDAgKzEsMzQ3IEBACisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAx MyAtIDIwMTksIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCitpbXBvcnQganNvbgorCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2Vf dXRpbHMKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IK K2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9u LnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIC5leGVj dXRlX3F1ZXJ5X3V0aWxzIGltcG9ydCBleGVjdXRlX3F1ZXJ5CisKKworY2xhc3MgVGVzdFNhdmVD aGFuZ2VkRGF0YShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiIFRoaXMgY2xhc3MgdGVzdHMg c2F2aW5nIGRhdGEgY2hhbmdlcyBpbiB0aGUgZ3JpZCB0byB0aGUgZGF0YWJhc2UgIiIiCisgICAg c2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gaW5zZXJ0aW5nIG5ldyB2YWxpZCByb3cnLCBk aWN0KAorICAgICAgICAgICAgc2F2ZV9wYXlsb2FkPXsKKyAgICAgICAgICAgICAgICAidXBkYXRl ZCI6IHt9LAorICAgICAgICAgICAgICAgICJhZGRlZCI6IHsKKyAgICAgICAgICAgICAgICAgICAg IjIiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXJyIjogRmFsc2UsCisgICAgICAgICAg ICAgICAgICAgICAgICAiZGF0YSI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGtf Y29sIjogIjMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX3RlbXBfUEsiOiAiMiIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vcm1hbF9jb2wiOiAidGhyZWUiCisgICAg ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICB9LAorICAgICAgICAgICAgICAgICJzdGFnZWRfcm93cyI6IHt9LAorICAgICAgICAgICAg ICAgICJkZWxldGVkIjoge30sCisgICAgICAgICAgICAgICAgInVwZGF0ZWRfaW5kZXgiOiB7fSwK KyAgICAgICAgICAgICAgICAiYWRkZWRfaW5kZXgiOiB7IjIiOiAiMiJ9LAorICAgICAgICAgICAg ICAgICJjb2x1bW5zIjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgICAgICAibmFtZSI6ICJwa19jb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRpc3Bs YXlfbmFtZSI6ICJwa19jb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbHVtbl90eXBl IjogIltQS10gaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29sdW1uX3R5cGVf aW50ZXJuYWwiOiAiaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAicG9zIjogMCwK KyAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJwa19jb2w8YnI+W1BLXSBpbnRlZ2Vy IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjZWxsIjogIm51bWJlciIsCisgICAgICAgICAg ICAgICAgICAgICAgICAiY2FuX2VkaXQiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAg InR5cGUiOiAiaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibm90X251bGwiOiBU cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgImhhc19kZWZhdWx0X3ZhbCI6IEZhbHNlLAor ICAgICAgICAgICAgICAgICAgICAgICAgImlzX2FycmF5IjogRmFsc2V9LAorICAgICAgICAgICAg ICAgICAgICB7Im5hbWUiOiAibm9ybWFsX2NvbCIsCisgICAgICAgICAgICAgICAgICAgICAiZGlz cGxheV9uYW1lIjogIm5vcm1hbF9jb2wiLAorICAgICAgICAgICAgICAgICAgICAgImNvbHVtbl90 eXBlIjogImNoYXJhY3RlciB2YXJ5aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICJjb2x1bW5f dHlwZV9pbnRlcm5hbCI6ICJjaGFyYWN0ZXIgdmFyeWluZyIsCisgICAgICAgICAgICAgICAgICAg ICAicG9zIjogMSwKKyAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJub3JtYWxfY29sPGJy PmNoYXJhY3RlciB2YXJ5aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICJjZWxsIjogInN0cmlu ZyIsCisgICAgICAgICAgICAgICAgICAgICAiY2FuX2VkaXQiOiBUcnVlLAorICAgICAgICAgICAg ICAgICAgICAgInR5cGUiOiAiY2hhcmFjdGVyIHZhcnlpbmciLAorICAgICAgICAgICAgICAgICAg ICAgIm5vdF9udWxsIjogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAiaGFzX2RlZmF1bHRf dmFsIjogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAiaXNfYXJyYXkiOiBGYWxzZX0KKyAg ICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2F2ZV9zdGF0dXM9 VHJ1ZSwKKyAgICAgICAgICAgIGNoZWNrX3NxbD0nU0VMRUNUICogRlJPTSB0ZXN0X2Zvcl9zYXZl X2RhdGEgV0hFUkUgcGtfY29sID0gMycsCisgICAgICAgICAgICBjaGVja19yZXN1bHQ9W1szLCAi dGhyZWUiXV0KKyAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBpbnNlcnRpbmcgbmV3IGludmFs aWQgcm93JywgZGljdCgKKyAgICAgICAgICAgIHNhdmVfcGF5bG9hZD17CisgICAgICAgICAgICAg ICAgInVwZGF0ZWQiOiB7fSwKKyAgICAgICAgICAgICAgICAiYWRkZWQiOiB7CisgICAgICAgICAg ICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAgICAgImVyciI6IEZhbHNlLAor ICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEiOiB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgInBrX2NvbCI6ICIxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX190ZW1w X1BLIjogIjIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3JtYWxfY29sIjogImZv dXIiCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJzdGFnZWRfcm93cyI6IHt9LAorICAg ICAgICAgICAgICAgICJkZWxldGVkIjoge30sCisgICAgICAgICAgICAgICAgInVwZGF0ZWRfaW5k ZXgiOiB7fSwKKyAgICAgICAgICAgICAgICAiYWRkZWRfaW5kZXgiOiB7IjIiOiAiMiJ9LAorICAg ICAgICAgICAgICAgICJjb2x1bW5zIjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAgICAgICAibmFtZSI6ICJwa19jb2wiLAorICAgICAgICAgICAgICAgICAgICAg ICAgImRpc3BsYXlfbmFtZSI6ICJwa19jb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgImNv bHVtbl90eXBlIjogIltQS10gaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29s dW1uX3R5cGVfaW50ZXJuYWwiOiAiaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAi cG9zIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJwa19jb2w8YnI+W1BL XSBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjZWxsIjogIm51bWJlciIsCisg ICAgICAgICAgICAgICAgICAgICAgICAiY2FuX2VkaXQiOiBUcnVlLAorICAgICAgICAgICAgICAg ICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibm90 X251bGwiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgImhhc19kZWZhdWx0X3ZhbCI6 IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgImlzX2FycmF5IjogRmFsc2V9LAorICAg ICAgICAgICAgICAgICAgICB7Im5hbWUiOiAibm9ybWFsX2NvbCIsCisgICAgICAgICAgICAgICAg ICAgICAiZGlzcGxheV9uYW1lIjogIm5vcm1hbF9jb2wiLAorICAgICAgICAgICAgICAgICAgICAg ImNvbHVtbl90eXBlIjogImNoYXJhY3RlciB2YXJ5aW5nIiwKKyAgICAgICAgICAgICAgICAgICAg ICJjb2x1bW5fdHlwZV9pbnRlcm5hbCI6ICJjaGFyYWN0ZXIgdmFyeWluZyIsCisgICAgICAgICAg ICAgICAgICAgICAicG9zIjogMSwKKyAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJub3Jt YWxfY29sPGJyPmNoYXJhY3RlciB2YXJ5aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICJjZWxs IjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICAiY2FuX2VkaXQiOiBUcnVlLAorICAg ICAgICAgICAgICAgICAgICAgInR5cGUiOiAiY2hhcmFjdGVyIHZhcnlpbmciLAorICAgICAgICAg ICAgICAgICAgICAgIm5vdF9udWxsIjogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAiaGFz X2RlZmF1bHRfdmFsIjogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAiaXNfYXJyYXkiOiBG YWxzZX0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2F2 ZV9zdGF0dXM9RmFsc2UsCisgICAgICAgICAgICBjaGVja19zcWw9Tm9uZSwKKyAgICAgICAgICAg IGNoZWNrX3Jlc3VsdD1Ob25lCisgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gdXBkYXRpbmcg YSByb3cgaW4gYSB2YWxpZCB3YXknLCBkaWN0KAorICAgICAgICAgICAgc2F2ZV9wYXlsb2FkPXsK KyAgICAgICAgICAgICAgICAidXBkYXRlZCI6IHsKKyAgICAgICAgICAgICAgICAgICAgIjEiOgor ICAgICAgICAgICAgICAgICAgICAgICAgeyJlcnIiOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAiZGF0YSI6IHsibm9ybWFsX2NvbCI6ICJPTkUifSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAicHJpbWFyeV9rZXlzIjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJw a19jb2wiOiAxfQorICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgICAgICJhZGRlZCI6IHt9LAorICAgICAgICAgICAgICAgICJzdGFnZWRf cm93cyI6IHt9LAorICAgICAgICAgICAgICAgICJkZWxldGVkIjoge30sCisgICAgICAgICAgICAg ICAgInVwZGF0ZWRfaW5kZXgiOiB7IjEiOiAiMSJ9LAorICAgICAgICAgICAgICAgICJhZGRlZF9p bmRleCI6IHt9LAorICAgICAgICAgICAgICAgICJjb2x1bW5zIjogWworICAgICAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJwa19jb2wiLAorICAgICAg ICAgICAgICAgICAgICAgICAgImRpc3BsYXlfbmFtZSI6ICJwa19jb2wiLAorICAgICAgICAgICAg ICAgICAgICAgICAgImNvbHVtbl90eXBlIjogIltQS10gaW50ZWdlciIsCisgICAgICAgICAgICAg ICAgICAgICAgICAiY29sdW1uX3R5cGVfaW50ZXJuYWwiOiAiaW50ZWdlciIsCisgICAgICAgICAg ICAgICAgICAgICAgICAicG9zIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6 ICJwa19jb2w8YnI+W1BLXSBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjZWxs IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuX2VkaXQiOiBUcnVlLAor ICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCisgICAgICAgICAgICAg ICAgICAgICAgICAibm90X251bGwiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgImhh c19kZWZhdWx0X3ZhbCI6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgImlzX2FycmF5 IjogRmFsc2V9LAorICAgICAgICAgICAgICAgICAgICB7Im5hbWUiOiAibm9ybWFsX2NvbCIsCisg ICAgICAgICAgICAgICAgICAgICAiZGlzcGxheV9uYW1lIjogIm5vcm1hbF9jb2wiLAorICAgICAg ICAgICAgICAgICAgICAgImNvbHVtbl90eXBlIjogImNoYXJhY3RlciB2YXJ5aW5nIiwKKyAgICAg ICAgICAgICAgICAgICAgICJjb2x1bW5fdHlwZV9pbnRlcm5hbCI6ICJjaGFyYWN0ZXIgdmFyeWlu ZyIsCisgICAgICAgICAgICAgICAgICAgICAicG9zIjogMSwKKyAgICAgICAgICAgICAgICAgICAg ICJsYWJlbCI6ICJub3JtYWxfY29sPGJyPmNoYXJhY3RlciB2YXJ5aW5nIiwKKyAgICAgICAgICAg ICAgICAgICAgICJjZWxsIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICAiY2FuX2Vk aXQiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiY2hhcmFjdGVyIHZhcnlp bmciLAorICAgICAgICAgICAgICAgICAgICAgIm5vdF9udWxsIjogRmFsc2UsCisgICAgICAgICAg ICAgICAgICAgICAiaGFzX2RlZmF1bHRfdmFsIjogRmFsc2UsCisgICAgICAgICAgICAgICAgICAg ICAiaXNfYXJyYXkiOiBGYWxzZX0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAor ICAgICAgICAgICAgc2F2ZV9zdGF0dXM9VHJ1ZSwKKyAgICAgICAgICAgIGNoZWNrX3NxbD0nU0VM RUNUICogRlJPTSB0ZXN0X2Zvcl9zYXZlX2RhdGEgV0hFUkUgcGtfY29sID0gMScsCisgICAgICAg ICAgICBjaGVja19yZXN1bHQ9W1sxLCAiT05FIl1dCisgICAgICAgICkpLAorICAgICAgICAoJ1do ZW4gdXBkYXRpbmcgYSByb3cgaW4gYW4gaW52YWxpZCB3YXknLCBkaWN0KAorICAgICAgICAgICAg c2F2ZV9wYXlsb2FkPXsKKyAgICAgICAgICAgICAgICAidXBkYXRlZCI6IHsKKyAgICAgICAgICAg ICAgICAgICAgIjEiOgorICAgICAgICAgICAgICAgICAgICAgICAgeyJlcnIiOiBGYWxzZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsicGtfY29sIjogIjIifSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAicHJpbWFyeV9rZXlzIjoKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyJwa19jb2wiOiAxfQorICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICB9LAorICAgICAgICAgICAgICAgICJhZGRlZCI6IHt9LAorICAgICAgICAgICAgICAg ICJzdGFnZWRfcm93cyI6IHt9LAorICAgICAgICAgICAgICAgICJkZWxldGVkIjoge30sCisgICAg ICAgICAgICAgICAgInVwZGF0ZWRfaW5kZXgiOiB7IjEiOiAiMSJ9LAorICAgICAgICAgICAgICAg ICJhZGRlZF9pbmRleCI6IHt9LAorICAgICAgICAgICAgICAgICJjb2x1bW5zIjogWworICAgICAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJwa19jb2wi LAorICAgICAgICAgICAgICAgICAgICAgICAgImRpc3BsYXlfbmFtZSI6ICJwa19jb2wiLAorICAg ICAgICAgICAgICAgICAgICAgICAgImNvbHVtbl90eXBlIjogIltQS10gaW50ZWdlciIsCisgICAg ICAgICAgICAgICAgICAgICAgICAiY29sdW1uX3R5cGVfaW50ZXJuYWwiOiAiaW50ZWdlciIsCisg ICAgICAgICAgICAgICAgICAgICAgICAicG9zIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICJsYWJlbCI6ICJwa19jb2w8YnI+W1BLXSBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICJjZWxsIjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuX2VkaXQi OiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCisgICAg ICAgICAgICAgICAgICAgICAgICAibm90X251bGwiOiBUcnVlLAorICAgICAgICAgICAgICAgICAg ICAgICAgImhhc19kZWZhdWx0X3ZhbCI6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAg ImlzX2FycmF5IjogRmFsc2V9LAorICAgICAgICAgICAgICAgICAgICB7Im5hbWUiOiAibm9ybWFs X2NvbCIsCisgICAgICAgICAgICAgICAgICAgICAiZGlzcGxheV9uYW1lIjogIm5vcm1hbF9jb2wi LAorICAgICAgICAgICAgICAgICAgICAgImNvbHVtbl90eXBlIjogImNoYXJhY3RlciB2YXJ5aW5n IiwKKyAgICAgICAgICAgICAgICAgICAgICJjb2x1bW5fdHlwZV9pbnRlcm5hbCI6ICJjaGFyYWN0 ZXIgdmFyeWluZyIsCisgICAgICAgICAgICAgICAgICAgICAicG9zIjogMSwKKyAgICAgICAgICAg ICAgICAgICAgICJsYWJlbCI6ICJub3JtYWxfY29sPGJyPmNoYXJhY3RlciB2YXJ5aW5nIiwKKyAg ICAgICAgICAgICAgICAgICAgICJjZWxsIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAg ICAiY2FuX2VkaXQiOiBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiY2hhcmFj dGVyIHZhcnlpbmciLAorICAgICAgICAgICAgICAgICAgICAgIm5vdF9udWxsIjogRmFsc2UsCisg ICAgICAgICAgICAgICAgICAgICAiaGFzX2RlZmF1bHRfdmFsIjogRmFsc2UsCisgICAgICAgICAg ICAgICAgICAgICAiaXNfYXJyYXkiOiBGYWxzZX0KKyAgICAgICAgICAgICAgICBdCisgICAgICAg ICAgICB9LAorICAgICAgICAgICAgc2F2ZV9zdGF0dXM9RmFsc2UsCisgICAgICAgICAgICBjaGVj a19zcWw9Tm9uZSwKKyAgICAgICAgICAgIGNoZWNrX3Jlc3VsdD1Ob25lCisgICAgICAgICkpLAor ICAgICAgICAoJ1doZW4gZGVsZXRpbmcgYSByb3cnLCBkaWN0KAorICAgICAgICAgICAgc2F2ZV9w YXlsb2FkPXsKKyAgICAgICAgICAgICAgICAidXBkYXRlZCI6IHt9LAorICAgICAgICAgICAgICAg ICJhZGRlZCI6IHt9LAorICAgICAgICAgICAgICAgICJzdGFnZWRfcm93cyI6IHsiMSI6IHsicGtf Y29sIjogMn19LAorICAgICAgICAgICAgICAgICJkZWxldGVkIjogeyIxIjogeyJwa19jb2wiOiAy fX0sCisgICAgICAgICAgICAgICAgInVwZGF0ZWRfaW5kZXgiOiB7fSwKKyAgICAgICAgICAgICAg ICAiYWRkZWRfaW5kZXgiOiB7fSwKKyAgICAgICAgICAgICAgICAiY29sdW1ucyI6IFsKKyAgICAg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAicGtfY29s IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkaXNwbGF5X25hbWUiOiAicGtfY29sIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICJjb2x1bW5fdHlwZSI6ICJbUEtdIGludGVnZXIiLAorICAg ICAgICAgICAgICAgICAgICAgICAgImNvbHVtbl90eXBlX2ludGVybmFsIjogImludGVnZXIiLAor ICAgICAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAsCisgICAgICAgICAgICAgICAgICAgICAg ICAibGFiZWwiOiAicGtfY29sPGJyPltQS10gaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAg ICAgICAiY2VsbCI6ICJudW1iZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbl9lZGl0 IjogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAorICAg ICAgICAgICAgICAgICAgICAgICAgIm5vdF9udWxsIjogVHJ1ZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICJoYXNfZGVmYXVsdF92YWwiOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICJpc19hcnJheSI6IEZhbHNlfSwKKyAgICAgICAgICAgICAgICAgICAgeyJuYW1lIjogIm5vcm1h bF9jb2wiLAorICAgICAgICAgICAgICAgICAgICAgImRpc3BsYXlfbmFtZSI6ICJub3JtYWxfY29s IiwKKyAgICAgICAgICAgICAgICAgICAgICJjb2x1bW5fdHlwZSI6ICJjaGFyYWN0ZXIgdmFyeWlu ZyIsCisgICAgICAgICAgICAgICAgICAgICAiY29sdW1uX3R5cGVfaW50ZXJuYWwiOiAiY2hhcmFj dGVyIHZhcnlpbmciLAorICAgICAgICAgICAgICAgICAgICAgInBvcyI6IDEsCisgICAgICAgICAg ICAgICAgICAgICAibGFiZWwiOiAibm9ybWFsX2NvbDxicj5jaGFyYWN0ZXIgdmFyeWluZyIsCisg ICAgICAgICAgICAgICAgICAgICAiY2VsbCI6ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAg ICAgImNhbl9lZGl0IjogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImNoYXJh Y3RlciB2YXJ5aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICJub3RfbnVsbCI6IEZhbHNlLAor ICAgICAgICAgICAgICAgICAgICAgImhhc19kZWZhdWx0X3ZhbCI6IEZhbHNlLAorICAgICAgICAg ICAgICAgICAgICAgImlzX2FycmF5IjogRmFsc2V9CisgICAgICAgICAgICAgICAgXQorICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgIHNhdmVfc3RhdHVzPVRydWUsCisgICAgICAgICAgICBjaGVj a19zcWw9J1NFTEVDVCAqIEZST00gdGVzdF9mb3Jfc2F2ZV9kYXRhIFdIRVJFIHBrX2NvbCA9IDIn LAorICAgICAgICAgICAgY2hlY2tfcmVzdWx0PSdTRUxFQ1QgMCcKKyAgICAgICAgKSksCisgICAg XQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9pbml0aWFsaXplX2RhdGFi YXNlX2Nvbm5lY3Rpb24oKQorICAgICAgICBzZWxmLl9pbml0aWFsaXplX3F1ZXJ5X3Rvb2woKQor ICAgICAgICBzZWxmLl9pbml0aWFsaXplX3VybHNfYW5kX3NlbGVjdF9zcWwoKQorICAgICAgICBz ZWxmLl9jcmVhdGVfdGVzdF90YWJsZSgpCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAg ICAgIyBFeGVjdXRlIHNlbGVjdCBzcWwKKyAgICAgICAgaXNfc3VjY2VzcywgXyA9IFwKKyAgICAg ICAgICAgIGV4ZWN1dGVfcXVlcnkodGVzdGVyPXNlbGYudGVzdGVyLAorICAgICAgICAgICAgICAg ICAgICAgICAgICBxdWVyeT1zZWxmLnNlbGVjdF9zcWwsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXJ0X3F1ZXJ5X3Rvb2xfdXJsPXNlbGYuc3RhcnRfcXVlcnlfdG9vbF91cmwsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHBvbGxfdXJsPXNlbGYucG9sbF91cmwpCisgICAgICAgIHNl bGYuYXNzZXJ0RXF1YWxzKGlzX3N1Y2Nlc3MsIFRydWUpCisKKyAgICAgICAgIyBTZW5kIGEgcmVx dWVzdCB0byBzYXZlIGNoYW5nZWQgZGF0YQorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVy LnBvc3Qoc2VsZi5zYXZlX3VybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9anNvbi5kdW1wcyhzZWxmLnNhdmVfcGF5bG9hZCksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisKKyAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKworICAgICAgICAjIENo ZWNrIHRoYXQgdGhlIHNhdmUgaXMgc3VjY2Vzc2Z1bAorICAgICAgICByZXNwb25zZV9kYXRhID0g anNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgc2F2ZV9z dGF0dXMgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ3N0YXR1cyddCisgICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWxzKHNhdmVfc3RhdHVzLCBzZWxmLnNhdmVfc3RhdHVzKQorCisgICAgICAgIGlmIHNl bGYuY2hlY2tfc3FsOgorICAgICAgICAgICAgIyBFeGVjdXRlIGNoZWNrIHNxbAorICAgICAgICAg ICAgaXNfc3VjY2VzcywgcmVzcG9uc2VfZGF0YSA9IFwKKyAgICAgICAgICAgICAgICBleGVjdXRl X3F1ZXJ5KHRlc3Rlcj1zZWxmLnRlc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHF1ZXJ5PXNlbGYuY2hlY2tfc3FsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh cnRfcXVlcnlfdG9vbF91cmw9c2VsZi5zdGFydF9xdWVyeV90b29sX3VybCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBvbGxfdXJsPXNlbGYucG9sbF91cmwpCisgICAgICAgICAgICBz ZWxmLmFzc2VydEVxdWFscyhpc19zdWNjZXNzLCBUcnVlKQorCisgICAgICAgICAgICAjIENoZWNr IHRhYmxlIGZvciB1cGRhdGVzCisgICAgICAgICAgICByZXN1bHQgPSByZXNwb25zZV9kYXRhWydk YXRhJ11bJ3Jlc3VsdCddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHQsIHNl bGYuY2hlY2tfcmVzdWx0KQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIERp c2Nvbm5lY3QgdGhlIGRhdGFiYXNlCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3Rf ZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCisKKyAgICBkZWYgX2lu aXRpYWxpemVfZGF0YWJhc2VfY29ubmVjdGlvbihzZWxmKToKKyAgICAgICAgZGF0YWJhc2VfaW5m byA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdCisgICAgICAgIHNlbGYuc2VydmVy X2lkID0gZGF0YWJhc2VfaW5mb1sic2VydmVyX2lkIl0KKworICAgICAgICBzZWxmLmRiX2lkID0g ZGF0YWJhc2VfaW5mb1siZGJfaWQiXQorICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5j b25uZWN0X2RhdGFiYXNlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdXRpbHMuU0VSVkVSX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfaWQpCisgICAgICAg IGlmIG5vdCBkYl9jb25bImluZm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6CisgICAgICAg ICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZS4i KQorCisgICAgZGVmIF9pbml0aWFsaXplX3F1ZXJ5X3Rvb2woc2VsZik6CisgICAgICAgIHVybCA9 ICcvZGF0YWdyaWQvaW5pdGlhbGl6ZS9xdWVyeV90b29sL3swfS97MX0vezJ9Jy5mb3JtYXQoCisg ICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lk KQorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsKQorICAgICAgICBzZWxm LmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorCisgICAgICAgIHJlc3Bv bnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAg ICAgICBzZWxmLnRyYW5zX2lkID0gcmVzcG9uc2VfZGF0YVsnZGF0YSddWydncmlkVHJhbnNJZCdd CisKKyAgICBkZWYgX2luaXRpYWxpemVfdXJsc19hbmRfc2VsZWN0X3NxbChzZWxmKToKKyAgICAg ICAgc2VsZi5zdGFydF9xdWVyeV90b29sX3VybCA9IFwKKyAgICAgICAgICAgICcvc3FsZWRpdG9y L3F1ZXJ5X3Rvb2wvc3RhcnQvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkKKyAgICAgICAgc2Vs Zi5zYXZlX3VybCA9ICcvc3FsZWRpdG9yL3NhdmUvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkK KyAgICAgICAgc2VsZi5wb2xsX3VybCA9ICcvc3FsZWRpdG9yL3BvbGwvezB9Jy5mb3JtYXQoc2Vs Zi50cmFuc19pZCkKKworICAgICAgICBzZWxmLnNlbGVjdF9zcWwgPSAnU0VMRUNUICogRlJPTSB0 ZXN0X2Zvcl9zYXZlX2RhdGE7JworCisgICAgZGVmIF9jcmVhdGVfdGVzdF90YWJsZShzZWxmKToK KyAgICAgICAgY3JlYXRlX3NxbCA9ICIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERS T1AgVEFCTEUgSUYgRVhJU1RTIHRlc3RfZm9yX3NhdmVfZGF0YTsKKworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIENSRUFURSBUQUJMRSB0ZXN0X2Zvcl9zYXZlX2RhdGEoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGtfY29sCUlOVCBQUklNQVJZIEtFWSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBub3JtYWxfY29sIFZBUkNIQVIpOworCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSU5TRVJUIElOVE8gdGVzdF9mb3Jfc2F2ZV9kYXRhIFZBTFVFUworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgxLCAnb25lJyksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKDIsICd0d28nKTsKKyAgICAgICAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgaXNfc3Vj Y2VzcywgXyA9IFwKKyAgICAgICAgICAgIGV4ZWN1dGVfcXVlcnkodGVzdGVyPXNlbGYudGVzdGVy LAorICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeT1jcmVhdGVfc3FsLAorICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGFydF9xdWVyeV90b29sX3VybD1zZWxmLnN0YXJ0X3F1ZXJ5X3Rv b2xfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xsX3VybD1zZWxmLnBvbGxfdXJs KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhpc19zdWNjZXNzLCBUcnVlKQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL2lzX3F1ZXJ5X3Jlc3VsdHNldF91 cGRhdGFibGUucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvaXNfcXVlcnlf cmVzdWx0c2V0X3VwZGF0YWJsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MC4uZjZiNDUzZWUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0 b3IvdXRpbHMvaXNfcXVlcnlfcmVzdWx0c2V0X3VwZGF0YWJsZS5weQpAQCAtMCwwICsxLDEyMCBA QAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwor IworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE5LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBU ZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiCisgICAgQ2hlY2sgaWYgdGhlIHJlc3Vs dC1zZXQgb2YgYSBxdWVyeSBpcyB1cGRhdGFibGUsIEEgcmVzdWx0c2V0IGlzCisgICAgdXBkYXRh YmxlIChhcyBvZiB0aGlzIHZlcnNpb24pIGlmOgorICAgICAgICAtIEFsbCBjb2x1bW5zIGJlbG9u ZyB0byB0aGUgc2FtZSB0YWJsZS4KKyAgICAgICAgLSBBbGwgdGhlIHByaW1hcnkga2V5IGNvbHVt bnMgb2YgdGhlIHRhYmxlIGFyZSBwcmVzZW50IGluIHRoZSByZXN1bHRzZXQKKyAgICAgICAgLSBO byBkdXBsaWNhdGUgY29sdW1ucworIiIiCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxh dGUKK3RyeToKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorZXhjZXB0 IEltcG9ydEVycm9yOgorICAgIGZyb20gb3JkZXJlZGRpY3QgaW1wb3J0IE9yZGVyZWREaWN0CisK KworZGVmIGlzX3F1ZXJ5X3Jlc3VsdHNldF91cGRhdGFibGUoY29ubiwgc3FsX3BhdGgpOgorICAg ICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hlY2sgd2hldGhlciB0aGUg bGFzdCBzdWNjZXNzZnVsIHF1ZXJ5CisgICAgICAgIHByb2R1Y2VkIHVwZGF0YWJsZSByZXN1bHRz LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBjb25uOiBDb25uZWN0aW9uIG9iamVjdC4K KyAgICAgICAgICAgIHNxbF9wYXRoOiB0aGUgcGF0aCB0byB0aGUgc3FsIHRlbXBsYXRlcy4KKyAg ICAiIiIKKyAgICBjb2x1bW5zX2luZm8gPSBjb25uLmdldF9jb2x1bW5faW5mbygpCisKKyAgICBp ZiBjb2x1bW5zX2luZm8gaXMgTm9uZSBvciBsZW4oY29sdW1uc19pbmZvKSA8IDE6CisgICAgICAg IHJldHVybiByZXR1cm5fbm90X3VwZGF0YWJsZSgpCisKKyAgICB0YWJsZV9vaWQgPSBfY2hlY2tf c2luZ2xlX3RhYmxlKGNvbHVtbnNfaW5mbykKKyAgICBpZiBub3QgdGFibGVfb2lkOgorICAgICAg ICByZXR1cm4gcmV0dXJuX25vdF91cGRhdGFibGUoKQorCisgICAgaWYgbm90IF9jaGVja19kdXBs aWNhdGVfY29sdW1ucyhjb2x1bW5zX2luZm8pOgorICAgICAgICByZXR1cm4gcmV0dXJuX25vdF91 cGRhdGFibGUoKQorCisgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgcHJpbWFyeV9r ZXlzLCBwcmltYXJ5X2tleXNfY29sdW1ucywgcGtfbmFtZXMgPSBcCisgICAgICAgICAgICBfZ2V0 X3ByaW1hcnlfa2V5cyhjb25uPWNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 YWJsZV9vaWQ9dGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsX3Bh dGg9c3FsX3BhdGgpCisKKyAgICAgICAgaWYgbm90IF9jaGVja19wcmltYXJ5X2tleXNfdW5pcXVl bHlfZXhpc3QocHJpbWFyeV9rZXlzX2NvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNfaW5mbyk6CisgICAgICAgICAgICByZXR1 cm4gcmV0dXJuX25vdF91cGRhdGFibGUoKQorCisgICAgICAgIHJldHVybiBUcnVlLCBwcmltYXJ5 X2tleXMsIHBrX25hbWVzLCB0YWJsZV9vaWQKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gcmV0 dXJuX25vdF91cGRhdGFibGUoKQorCisKK2RlZiBfY2hlY2tfc2luZ2xlX3RhYmxlKGNvbHVtbnNf aW5mbyk6CisgICAgdGFibGVfb2lkID0gY29sdW1uc19pbmZvWzBdWyd0YWJsZV9vaWQnXQorICAg IGZvciBjb2x1bW4gaW4gY29sdW1uc19pbmZvOgorICAgICAgICBpZiBjb2x1bW5bJ3RhYmxlX29p ZCddICE9IHRhYmxlX29pZDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIHRh YmxlX29pZAorCisKK2RlZiBfY2hlY2tfZHVwbGljYXRlX2NvbHVtbnMoY29sdW1uc19pbmZvKToK KyAgICBjb2x1bW5fbnVtYmVycyA9IFwKKyAgICAgICAgW2NvbFsndGFibGVfY29sdW1uJ10gZm9y IGNvbCBpbiBjb2x1bW5zX2luZm9dCisgICAgaXNfZHVwbGljYXRlX2NvbHVtbnMgPSBsZW4oY29s dW1uX251bWJlcnMpICE9IGxlbihzZXQoY29sdW1uX251bWJlcnMpKQorICAgIGlmIGlzX2R1cGxp Y2F0ZV9jb2x1bW5zOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQorCisK K2RlZiBfY2hlY2tfcHJpbWFyeV9rZXlzX3VuaXF1ZWx5X2V4aXN0KHByaW1hcnlfa2V5c19jb2x1 bW5zLCBjb2x1bW5zX2luZm8pOgorICAgIGZvciBwayBpbiBwcmltYXJ5X2tleXNfY29sdW1uczoK KyAgICAgICAgcGtfZXhpc3RzID0gRmFsc2UKKyAgICAgICAgZm9yIGNvbCBpbiBjb2x1bW5zX2lu Zm86CisgICAgICAgICAgICBpZiBjb2xbJ3RhYmxlX2NvbHVtbiddID09IHBrWydjb2x1bW5fbnVt YmVyJ106CisgICAgICAgICAgICAgICAgcGtfZXhpc3RzID0gVHJ1ZQorICAgICAgICAgICAgICAg ICMgSWYgdGhlIHByaW1hcnkga2V5IGNvbHVtbiBpcyByZW5hbWVkCisgICAgICAgICAgICAgICAg aWYgY29sWydkaXNwbGF5X25hbWUnXSAhPSBwa1snbmFtZSddOgorICAgICAgICAgICAgICAgICAg ICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICMgSWYgYSBub3JtYWwgY29sdW1uIGlzIHJlbmFt ZWQgdG8gYSBwcmltYXJ5IGtleSBjb2x1bW4gbmFtZQorICAgICAgICAgICAgZWxpZiBjb2xbJ2Rp c3BsYXlfbmFtZSddID09IHBrWyduYW1lJ106CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl CisKKyAgICAgICAgaWYgbm90IHBrX2V4aXN0czoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQor ICAgIHJldHVybiBUcnVlCisKKworZGVmIF9nZXRfcHJpbWFyeV9rZXlzKHNxbF9wYXRoLCB0YWJs ZV9vaWQsIGNvbm4pOgorICAgIHF1ZXJ5ID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAiLyIu am9pbihbc3FsX3BhdGgsICdwcmltYXJ5X2tleXMuc3FsJ10pLAorICAgICAgICBvYmpfaWQ9dGFi bGVfb2lkCisgICAgKQorICAgIHN0YXR1cywgcmVzdWx0ID0gY29ubi5leGVjdXRlX2RpY3QocXVl cnkpCisgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgcmV0dXJuIHJldHVybl9ub3RfdXBkYXRh YmxlKCkKKworICAgIHByaW1hcnlfa2V5c19jb2x1bW5zID0gW10KKyAgICBwcmltYXJ5X2tleXMg PSBPcmRlcmVkRGljdCgpCisgICAgcGtfbmFtZXMgPSBbXQorCisgICAgZm9yIHJvdyBpbiByZXN1 bHRbJ3Jvd3MnXToKKyAgICAgICAgcHJpbWFyeV9rZXlzW3Jvd1snYXR0bmFtZSddXSA9IHJvd1sn dHlwbmFtZSddCisgICAgICAgIHByaW1hcnlfa2V5c19jb2x1bW5zLmFwcGVuZCh7CisgICAgICAg ICAgICAnbmFtZSc6IHJvd1snYXR0bmFtZSddLAorICAgICAgICAgICAgJ2NvbHVtbl9udW1iZXIn OiByb3dbJ2F0dG51bSddCisgICAgICAgIH0pCisgICAgICAgIHBrX25hbWVzLmFwcGVuZChyb3db J2F0dG5hbWUnXSkKKworICAgIHJldHVybiBwcmltYXJ5X2tleXMsIHByaW1hcnlfa2V5c19jb2x1 bW5zLCBwa19uYW1lcworCisKK2RlZiByZXR1cm5fbm90X3VwZGF0YWJsZSgpOgorICAgIHJldHVy biBGYWxzZSwgTm9uZSwgTm9uZSwgTm9uZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMucHkgYi93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3IvdXRpbHMvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5weQppbmRleCA2NGM3 NTc1NC4uMjI5MGUyYmQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91 dGlscy9xdWVyeV90b29sX3ByZWZlcmVuY2VzLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci91dGlscy9xdWVyeV90b29sX3ByZWZlcmVuY2VzLnB5CkBAIC0xNzUsNiArMTc1LDE2 IEBAIGRlZiBSZWdpc3RlclF1ZXJ5VG9vbFByZWZlcmVuY2VzKHNlbGYpOgogICAgICAgICApCiAg ICAgKQogCisgICAgc2VsZi5zaG93X2FsZXJ0X3VuY29tbWl0ZWRfdHJhbnNhY3Rpb24gPSBzZWxm LnByZWZlcmVuY2UucmVnaXN0ZXIoCisgICAgICAgICdPcHRpb25zJywgJ2FsZXJ0X3VuY29tbWl0 ZWRfdHJhbnNhY3Rpb24nLAorICAgICAgICBnZXR0ZXh0KCJBbGVydCBvbiB1bmNvbW1pdGVkIHRy YW5zYWN0aW9ucz8iKSwgJ2Jvb2xlYW4nLCBUcnVlLAorICAgICAgICBjYXRlZ29yeV9sYWJlbD1n ZXR0ZXh0KCdPcHRpb25zJyksCisgICAgICAgIGhlbHBfc3RyPWdldHRleHQoCisgICAgICAgICAg ICAnU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHRvIGFsZXJ0IHRoZSB1c2VyIHdoZW4gYSBjdXJy ZW50ICcKKyAgICAgICAgICAgICd0cmFuc2FjdGlvbiBpcyB1bmNvbW1pdGVkIG9uIFF1ZXJ5IFRv b2wgZXhpdC4nCisgICAgICAgICkKKyAgICApCisKICAgICBzZWxmLmNzdl9xdW90aW5nID0gc2Vs Zi5wcmVmZXJlbmNlLnJlZ2lzdGVyKAogICAgICAgICAnQ1NWX291dHB1dCcsICdjc3ZfcXVvdGlu ZycsCiAgICAgICAgIGdldHRleHQoIkNTViBxdW90aW5nIiksICdvcHRpb25zJywgJ3N0cmluZ3Mn LApAQCAtMzAyLDYgKzMxMiwyNCBAQCBkZWYgUmVnaXN0ZXJRdWVyeVRvb2xQcmVmZXJlbmNlcyhz ZWxmKToKICAgICAgICAgZmllbGRzPXNob3J0Y3V0X2ZpZWxkcwogICAgICkKIAorICAgIHNlbGYu cHJlZmVyZW5jZS5yZWdpc3RlcigKKyAgICAgICAgJ2tleWJvYXJkX3Nob3J0Y3V0cycsCisgICAg ICAgICdzYXZlX2RhdGEnLAorICAgICAgICBnZXR0ZXh0KCdTYXZlIERhdGEgQ2hhbmdlcycpLAor ICAgICAgICAna2V5Ym9hcmRzaG9ydGN1dCcsCisgICAgICAgIHsKKyAgICAgICAgICAgICdhbHQn OiBGYWxzZSwKKyAgICAgICAgICAgICdzaGlmdCc6IEZhbHNlLAorICAgICAgICAgICAgJ2NvbnRy b2wnOiBGYWxzZSwKKyAgICAgICAgICAgICdrZXknOiB7CisgICAgICAgICAgICAgICAgJ2tleV9j b2RlJzogMTE3LAorICAgICAgICAgICAgICAgICdjaGFyJzogJ0Y2JworICAgICAgICAgICAgfQor ICAgICAgICB9LAorICAgICAgICBjYXRlZ29yeV9sYWJlbD1nZXR0ZXh0KCdLZXlib2FyZCBzaG9y dGN1dHMnKSwKKyAgICAgICAgZmllbGRzPXNob3J0Y3V0X2ZpZWxkcworICAgICkKKwogICAgIHNl bGYucHJlZmVyZW5jZS5yZWdpc3RlcigKICAgICAgICAgJ2tleWJvYXJkX3Nob3J0Y3V0cycsCiAg ICAgICAgICdleHBsYWluX3F1ZXJ5JywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci91dGlscy9zYXZlX2NoYW5nZWRfZGF0YS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci91dGlscy9zYXZlX2NoYW5nZWRfZGF0YS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMC4uNjI3NWU2NTgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3IvdXRpbHMvc2F2ZV9jaGFuZ2VkX2RhdGEucHkKQEAgLTAsMCArMSwzMTcg QEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK KyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOSwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90 ZW1wbGF0ZQorZnJvbSBwZ2FkbWluLnRvb2xzLnNxbGVkaXRvci51dGlscy5jb25zdGFudF9kZWZp bml0aW9uIGltcG9ydCBUWF9TVEFUVVNfSURMRQordHJ5OgorICAgIGZyb20gY29sbGVjdGlvbnMg aW1wb3J0IE9yZGVyZWREaWN0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBvcmRlcmVk ZGljdCBpbXBvcnQgT3JkZXJlZERpY3QKKworCitkZWYgc2F2ZV9jaGFuZ2VkX2RhdGEoY2hhbmdl ZF9kYXRhLCBjb2x1bW5zX2luZm8sIGNvbm4sIGNvbW1hbmRfb2JqLAorICAgICAgICAgICAgICAg ICAgICAgIGNsaWVudF9wcmltYXJ5X2tleSwgYXV0b19jb21taXQ9VHJ1ZSk6CisgICAgIiIiCisg ICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHNhdmUgdGhlIGRhdGEgaW50byB0aGUgZGF0YWJh c2UuCisgICAgRGVwZW5kaW5nIG9uIGNvbmRpdGlvbiBpdCB3aWxsIGVpdGhlciB1cGRhdGUgb3Ig aW5zZXJ0IHRoZQorICAgIG5ldyByb3cgaW50byB0aGUgZGF0YWJhc2UuCisKKyAgICBBcmdzOgor ICAgICAgICBjaGFuZ2VkX2RhdGE6IENvbnRhaW5zIGRhdGEgdG8gYmUgc2F2ZWQKKyAgICAgICAg Y29tbWFuZF9vYmo6IFRoZSB0cmFuc2FjdGlvbiBvYmplY3QgKGNvbW1hbmRfb2JqIG9yIHRyYW5z X29iaikKKyAgICAgICAgY29ubjogVGhlIGNvbm5lY3Rpb24gb2JqZWN0CisgICAgICAgIGNvbHVt bnNfaW5mbzogc2Vzc2lvbl9vYmpbJ2NvbHVtbnNfaW5mbyddCisgICAgICAgIGNsaWVudF9wcmlt YXJ5X2tleTogc2Vzc2lvbl9vYmpbJ2NsaWVudF9wcmltYXJ5X2tleSddCisgICAgICAgIGF1dG9f Y29tbWl0OiBJZiB0aGUgY2hhbmdlcyBzaG91bGQgYmUgY29tbWl0ZWQgYXV0b21hdGljYWxseS4K KyAgICAiIiIKKyAgICBzdGF0dXMgPSBGYWxzZQorICAgIHJlcyA9IE5vbmUKKyAgICBxdWVyeV9y ZXMgPSBkaWN0KCkKKyAgICBjb3VudCA9IDAKKyAgICBsaXN0X29mX3Jvd2lkID0gW10KKyAgICBv cGVyYXRpb25zID0gKCdhZGRlZCcsICd1cGRhdGVkJywgJ2RlbGV0ZWQnKQorICAgIGxpc3Rfb2Zf c3FsID0ge30KKyAgICBfcm93aWQgPSBOb25lCisgICAgaXNfY29tbWl0X3JlcXVpcmVkID0gRmFs c2UKKworICAgIHBnYWRtaW5fYWxpYXMgPSB7CisgICAgICAgIGNvbF9uYW1lOiBjb2xfaW5mb1sn cGdhZG1pbl9hbGlhcyddCisgICAgICAgIGZvciBjb2xfbmFtZSwgY29sX2luZm8gaW4gY29sdW1u c19pbmZvLml0ZW1zKCkKKyAgICB9CisKKyAgICBpZiBjb25uLmNvbm5lY3RlZCgpOgorICAgICAg ICBpc19zYXZlcG9pbnQgPSBGYWxzZQorICAgICAgICAjIFN0YXJ0IHRoZSB0cmFuc2FjdGlvbiBp ZiB0aGUgc2Vzc2lvbiBpcyBpZGxlCisgICAgICAgIGlmIGNvbm4udHJhbnNhY3Rpb25fc3RhdHVz KCkgPT0gVFhfU1RBVFVTX0lETEU6CisgICAgICAgICAgICBjb25uLmV4ZWN1dGVfdm9pZCgnQkVH SU47JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCdTQVZF UE9JTlQgc2F2ZV9kYXRhOycpCisgICAgICAgICAgICBpc19zYXZlcG9pbnQgPSBUcnVlCisKKyAg ICAgICAgIyBJdGVyYXRlIHRvdGFsIG51bWJlciBvZiByZWNvcmRzIHRvIGJlIHVwZGF0ZWQvaW5z ZXJ0ZWQKKyAgICAgICAgZm9yIG9mX3R5cGUgaW4gY2hhbmdlZF9kYXRhOgorICAgICAgICAgICAg IyBObyBuZWVkIHRvIGdvIGZ1cnRoZXIgaWYgaXRzIG5vdCBhZGQvdXBkYXRlL2RlbGV0ZSBvcGVy YXRpb24KKyAgICAgICAgICAgIGlmIG9mX3R5cGUgbm90IGluIG9wZXJhdGlvbnM6CisgICAgICAg ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgaWYgbm8gZGF0YSB0byBiZSBzYXZlIHRo ZW4gY29udGludWUKKyAgICAgICAgICAgIGlmIGxlbihjaGFuZ2VkX2RhdGFbb2ZfdHlwZV0pIDwg MToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBjb2x1bW5fdHlwZSA9 IHt9CisgICAgICAgICAgICBjb2x1bW5fZGF0YSA9IHt9CisgICAgICAgICAgICBmb3IgZWFjaF9j b2wgaW4gY29sdW1uc19pbmZvOgorICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAg ICAgICAgY29sdW1uc19pbmZvW2VhY2hfY29sXVsnbm90X251bGwnXSBhbmQKKyAgICAgICAgICAg ICAgICAgICAgbm90IGNvbHVtbnNfaW5mb1tlYWNoX2NvbF1bJ2hhc19kZWZhdWx0X3ZhbCddCisg ICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICAgICAgY29sdW1uX2RhdGFbZWFjaF9j b2xdID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBjb2x1bW5fdHlwZVtlYWNoX2NvbF0gPSBc CisgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zX2luZm9bZWFjaF9jb2xdWyd0eXBlX25h bWUnXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbl90 eXBlW2VhY2hfY29sXSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnNfaW5mb1tl YWNoX2NvbF1bJ3R5cGVfbmFtZSddCisKKyAgICAgICAgICAgICMgRm9yIG5ld2x5IGFkZGVkIHJv d3MKKyAgICAgICAgICAgIGlmIG9mX3R5cGUgPT0gJ2FkZGVkJzoKKyAgICAgICAgICAgICAgICAj IFB5dGhvbiBkaWN0IGRvZXMgbm90IGhvbm91ciB0aGUgaW5zZXJ0ZWQgaXRlbSBvcmRlcgorICAg ICAgICAgICAgICAgICMgU28gdG8gaW5zZXJ0IGRhdGEgaW4gdGhlIG9yZGVyLCB3ZSBuZWVkIHRv IG1ha2Ugb3JkZXJlZAorICAgICAgICAgICAgICAgICMgbGlzdCBvZiBhZGRlZCBpbmRleCBXZSBk b24ndCBuZWVkIHRoaXMgbWVjaGFuaXNtIGluCisgICAgICAgICAgICAgICAgIyB1cGRhdGVkL2Rl bGV0ZWQgcm93cyBhcyBpdCBkb2VzIG5vdCBtYXR0ZXIgaW4KKyAgICAgICAgICAgICAgICAjIHRo b3NlIG9wZXJhdGlvbnMKKyAgICAgICAgICAgICAgICBhZGRlZF9pbmRleCA9IE9yZGVyZWREaWN0 KAorICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBj aGFuZ2VkX2RhdGFbJ2FkZGVkX2luZGV4J10uaXRlbXMoKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIGtleT1sYW1iZGEgeDogaW50KHhbMF0pCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgbGlzdF9vZl9zcWxbb2ZfdHlwZV0gPSBbXQor CisgICAgICAgICAgICAgICAgIyBXaGVuIG5ldyByb3dzIGFyZSBhZGRlZCwgb25seSBjaGFuZ2Vk IGNvbHVtbnMgZGF0YSBpcworICAgICAgICAgICAgICAgICMgc2VudCBmcm9tIGNsaWVudCBzaWRl LiBCdXQgaWYgY29sdW1uIGlzIG5vdF9udWxsIGFuZCBoYXMKKyAgICAgICAgICAgICAgICAjIG5v X2RlZmF1bHRfdmFsdWUsIHNldCBjb2x1bW4gdG8gYmxhbmssIGluc3RlYWQKKyAgICAgICAgICAg ICAgICAjIG9mIG5vdCBudWxsIHdoaWNoIGlzIHNldCBieSBkZWZhdWx0LgorICAgICAgICAgICAg ICAgIGNvbHVtbl9kYXRhID0ge30KKyAgICAgICAgICAgICAgICBwa19uYW1lcywgcHJpbWFyeV9r ZXlzID0gY29tbWFuZF9vYmouZ2V0X3ByaW1hcnlfa2V5cygpCisgICAgICAgICAgICAgICAgaGFz X29pZHMgPSAnb2lkJyBpbiBjb2x1bW5fdHlwZQorCisgICAgICAgICAgICAgICAgZm9yIGVhY2hf cm93IGluIGFkZGVkX2luZGV4OgorICAgICAgICAgICAgICAgICAgICAjIEdldCB0aGUgcm93IGlu ZGV4IHRvIG1hdGNoIHdpdGggdGhlIGFkZGVkIHJvd3MKKyAgICAgICAgICAgICAgICAgICAgIyBk aWN0IGtleQorICAgICAgICAgICAgICAgICAgICB0bXBfcm93X2luZGV4ID0gYWRkZWRfaW5kZXhb ZWFjaF9yb3ddCisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBjaGFuZ2VkX2RhdGFbb2ZfdHlw ZV1bdG1wX3Jvd19pbmRleF1bJ2RhdGEnXQorICAgICAgICAgICAgICAgICAgICAjIFJlbW92ZSBv dXIgdW5pcXVlIHRyYWNraW5nIGtleQorICAgICAgICAgICAgICAgICAgICBkYXRhLnBvcChjbGll bnRfcHJpbWFyeV9rZXksIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIGRhdGEucG9wKCdpc19y b3dfY29waWVkJywgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgbGlzdF9vZl9yb3dpZC5hcHBl bmQoZGF0YS5nZXQoY2xpZW50X3ByaW1hcnlfa2V5KSkKKworICAgICAgICAgICAgICAgICAgICAj IFVwZGF0ZSBjb2x1bW5zIHZhbHVlIHdpdGggY29sdW1ucyBoYXZpbmcKKyAgICAgICAgICAgICAg ICAgICAgIyBub3RfbnVsbD1GYWxzZSBhbmQgaGFzIG5vIGRlZmF1bHQgdmFsdWUKKyAgICAgICAg ICAgICAgICAgICAgY29sdW1uX2RhdGEudXBkYXRlKGRhdGEpCisKKyAgICAgICAgICAgICAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpv aW4oW2NvbW1hbmRfb2JqLnNxbF9wYXRoLCAnaW5zZXJ0LnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGFfdG9fYmVfc2F2ZWQ9Y29sdW1uX2RhdGEsCisgICAgICAgICAgICAgICAg ICAgICAgICBwZ2FkbWluX2FsaWFzPXBnYWRtaW5fYWxpYXMsCisgICAgICAgICAgICAgICAgICAg ICAgICBwcmltYXJ5X2tleXM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF9u YW1lPWNvbW1hbmRfb2JqLm9iamVjdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgbnNw X25hbWU9Y29tbWFuZF9vYmoubnNwX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRh X3R5cGU9Y29sdW1uX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBwa19uYW1lcz1wa19u YW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc19vaWRzPWhhc19vaWRzCisgICAgICAg ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICBzZWxlY3Rfc3FsID0gcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW2NvbW1hbmRfb2Jq LnNxbF9wYXRoLCAnc2VsZWN0LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iamVj dF9uYW1lPWNvbW1hbmRfb2JqLm9iamVjdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg bnNwX25hbWU9Y29tbWFuZF9vYmoubnNwX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBw cmltYXJ5X2tleXM9cHJpbWFyeV9rZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgaGFzX29p ZHM9aGFzX29pZHMKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgICAg IGxpc3Rfb2Zfc3FsW29mX3R5cGVdLmFwcGVuZCh7CisgICAgICAgICAgICAgICAgICAgICAgICAn c3FsJzogc3FsLCAnZGF0YSc6IGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAnY2xpZW50 X3Jvdyc6IHRtcF9yb3dfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0X3Nx bCc6IHNlbGVjdF9zcWwKKyAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAg ICAgIyBSZXNldCBjb2x1bW4gZGF0YQorICAgICAgICAgICAgICAgICAgICBjb2x1bW5fZGF0YSA9 IHt9CisKKyAgICAgICAgICAgICMgRm9yIHVwZGF0ZWQgcm93cworICAgICAgICAgICAgZWxpZiBv Zl90eXBlID09ICd1cGRhdGVkJzoKKyAgICAgICAgICAgICAgICBsaXN0X29mX3NxbFtvZl90eXBl XSA9IFtdCisgICAgICAgICAgICAgICAgZm9yIGVhY2hfcm93IGluIGNoYW5nZWRfZGF0YVtvZl90 eXBlXToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGNoYW5nZWRfZGF0YVtvZl90eXBlXVtl YWNoX3Jvd11bJ2RhdGEnXQorICAgICAgICAgICAgICAgICAgICBwa19lc2NhcGVkID0geworICAg ICAgICAgICAgICAgICAgICAgICAgcGs6IHBrX3ZhbC5yZXBsYWNlKCclJywgJyUlJykgaWYgaGFz YXR0cigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa192YWwsICdyZXBsYWNlJykgZWxz ZSBwa192YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwaywgcGtfdmFsIGluCisgICAg ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV1bZWFjaF9yb3ddWydwcmlt YXJ5X2tleXMnXS5pdGVtcygpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW2NvbW1hbmRfb2JqLnNxbF9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGFfdG9fYmVfc2F2ZWQ9ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHBnYWRtaW5fYWxpYXM9cGdhZG1pbl9hbGlhcywKKyAgICAgICAgICAgICAgICAgICAgICAg IHByaW1hcnlfa2V5cz1wa19lc2NhcGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0 X25hbWU9Y29tbWFuZF9vYmoub2JqZWN0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBu c3BfbmFtZT1jb21tYW5kX29iai5uc3BfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh dGFfdHlwZT1jb2x1bW5fdHlwZQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg ICAgICAgIGxpc3Rfb2Zfc3FsW29mX3R5cGVdLmFwcGVuZCh7J3NxbCc6IHNxbCwgJ2RhdGEnOiBk YXRhfSkKKyAgICAgICAgICAgICAgICAgICAgbGlzdF9vZl9yb3dpZC5hcHBlbmQoZGF0YS5nZXQo Y2xpZW50X3ByaW1hcnlfa2V5KSkKKworICAgICAgICAgICAgIyBGb3IgZGVsZXRlZCByb3dzCisg ICAgICAgICAgICBlbGlmIG9mX3R5cGUgPT0gJ2RlbGV0ZWQnOgorICAgICAgICAgICAgICAgIGxp c3Rfb2Zfc3FsW29mX3R5cGVdID0gW10KKyAgICAgICAgICAgICAgICBpc19maXJzdCA9IFRydWUK KyAgICAgICAgICAgICAgICByb3dzX3RvX2RlbGV0ZSA9IFtdCisgICAgICAgICAgICAgICAga2V5 cyA9IE5vbmUKKyAgICAgICAgICAgICAgICBub19vZl9rZXlzID0gTm9uZQorICAgICAgICAgICAg ICAgIGZvciBlYWNoX3JvdyBpbiBjaGFuZ2VkX2RhdGFbb2ZfdHlwZV06CisgICAgICAgICAgICAg ICAgICAgIHJvd3NfdG9fZGVsZXRlLmFwcGVuZChjaGFuZ2VkX2RhdGFbb2ZfdHlwZV1bZWFjaF9y b3ddKQorICAgICAgICAgICAgICAgICAgICAjIEZldGNoIHRoZSBrZXlzIGZvciBTUUwgZ2VuZXJh dGlvbgorICAgICAgICAgICAgICAgICAgICBpZiBpc19maXJzdDoKKyAgICAgICAgICAgICAgICAg ICAgICAgICMgV2UgbmVlZCB0byBjb3ZlcnQgZGljdF9rZXlzIHRvIG5vcm1hbCBsaXN0IGluCisg ICAgICAgICAgICAgICAgICAgICAgICAjIFB5dGhvbjMKKyAgICAgICAgICAgICAgICAgICAgICAg ICMgSW4gUHl0aG9uMiwgaXQncyBhbHJlYWR5IGEgbGlzdCAmIFdlIHdpbGwgYWxzbworICAgICAg ICAgICAgICAgICAgICAgICAgIyBmZXRjaCBjb2x1bW4gbmFtZXMgdXNpbmcgaW5kZXgKKyAgICAg ICAgICAgICAgICAgICAgICAgIGtleXMgPSBsaXN0KAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNoYW5nZWRfZGF0YVtvZl90eXBlXVtlYWNoX3Jvd10ua2V5cygpCisgICAgICAgICAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBub19vZl9rZXlzID0gbGVuKGtl eXMpCisgICAgICAgICAgICAgICAgICAgICAgICBpc19maXJzdCA9IEZhbHNlCisgICAgICAgICAg ICAgICAgIyBNYXAgaW5kZXggd2l0aCBjb2x1bW4gbmFtZSBmb3IgZWFjaCByb3cKKyAgICAgICAg ICAgICAgICBmb3Igcm93IGluIHJvd3NfdG9fZGVsZXRlOgorICAgICAgICAgICAgICAgICAgICBm b3IgaywgdiBpbiByb3cuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU2V0IHBy aW1hcnkga2V5IHdpdGggbGFiZWwgJiBkZWxldGUgaW5kZXggYmFzZWQKKyAgICAgICAgICAgICAg ICAgICAgICAgICMgbWFwcGVkIGtleQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1tjaGFuZ2VkX2RhdGFbJ2NvbHVtbnMnXQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW50KGspXVsnbmFtZSdd XSA9IHYKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBk ZWwgcm93W2tdCisKKyAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAg ICAgICAgICAgICAgICAgICIvIi5qb2luKFtjb21tYW5kX29iai5zcWxfcGF0aCwgJ2RlbGV0ZS5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cm93c190b19kZWxldGUsCisgICAgICAg ICAgICAgICAgICAgIHByaW1hcnlfa2V5X2xhYmVscz1rZXlzLAorICAgICAgICAgICAgICAgICAg ICBub19vZl9rZXlzPW5vX29mX2tleXMsCisgICAgICAgICAgICAgICAgICAgIG9iamVjdF9uYW1l PWNvbW1hbmRfb2JqLm9iamVjdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICBuc3BfbmFtZT1j b21tYW5kX29iai5uc3BfbmFtZQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBs aXN0X29mX3NxbFtvZl90eXBlXS5hcHBlbmQoeydzcWwnOiBzcWwsICdkYXRhJzoge319KQorCisg ICAgICAgIGZvciBvcHIsIHNxbHMgaW4gbGlzdF9vZl9zcWwuaXRlbXMoKToKKyAgICAgICAgICAg IGZvciBpdGVtIGluIHNxbHM6CisgICAgICAgICAgICAgICAgaWYgaXRlbVsnc3FsJ106CisgICAg ICAgICAgICAgICAgICAgIGl0ZW1bJ2RhdGEnXSA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAg IHBnYWRtaW5fYWxpYXNba10gaWYgayBpbiBwZ2FkbWluX2FsaWFzIGVsc2UgazogdgorICAgICAg ICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gaXRlbVsnZGF0YSddLml0ZW1zKCkKKyAgICAg ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHJvd19hZGRlZCA9IE5vbmUK KworICAgICAgICAgICAgICAgICAgICBkZWYgZmFpbHVyZV9oYW5kbGUocmVzKToKKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmIGlzX3NhdmVwb2ludDoKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25uLmV4ZWN1dGVfdm9pZCgnUk9MTEJBQ0sgVE8gU0FWRVBPSU5UICcKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2F2ZV9kYXRhOycpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ1F1ZXJ5IFJPTExCQUNLLCBidXQgdGhlIGN1 cnJlbnQgJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zYWN0aW9u IGlzIHN0aWxsIG9uZ29pbmcuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSAn IFNhdmluZyBST0xMQkFDSywgYnV0IHRoZSBjdXJyZW50ICcgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAndHJhbnNhY3Rpb24gaXMgc3RpbGwgb25nb2luZycKKyAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5l eGVjdXRlX3ZvaWQoJ1JPTExCQUNLOycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNn ID0gJ1RyYW5zYWN0aW9uIFJPTExCQUNLJworICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3 ZSByb2xsIGJhY2tlZCBldmVyeSB0aGluZyB0aGVuIHVwZGF0ZSB0aGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICMgbWVzc2FnZSBmb3IgZWFjaCBzcWwgcXVlcnkuCisgICAgICAgICAgICAgICAg ICAgICAgICBmb3IgdmFsIGluIHF1ZXJ5X3JlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBxdWVyeV9yZXNbdmFsXVsnc3RhdHVzJ106CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHF1ZXJ5X3Jlc1t2YWxdWydyZXN1bHQnXSA9IG1zZworCisgICAgICAgICAgICAgICAg ICAgICAgICAjIElmIGxpc3QgaXMgZW1wdHkgc2V0IHJvd2lkIHRvIDEKKyAgICAgICAgICAgICAg ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaXN0X29mX3Jv d2lkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcm93aWQgPSBsaXN0X29mX3Jv d2lkW2NvdW50XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF9yb3dpZCA9IDEKKyAgICAgICAgICAgICAgICAgICAgICAg IGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Jvd2lkID0g MAorCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzLCByZXMsIHF1ZXJ5X3Jl cywgX3Jvd2lkLFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb21taXRfcmVxdWly ZWQKKworICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAj IEZldGNoIG9pZHMvcHJpbWFyeSBrZXlzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAnc2Vs ZWN0X3NxbCcgaW4gaXRlbSBhbmQgaXRlbVsnc2VsZWN0X3NxbCddOgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3QoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bJ3NxbCddLCBpdGVtWydkYXRhJ10pCisgICAgICAg ICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1 cywgcmVzID0gY29ubi5leGVjdXRlX3ZvaWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGl0ZW1bJ3NxbCddLCBpdGVtWydkYXRhJ10pCisgICAgICAgICAgICAgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgXzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVfaGFuZGxl KHJlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJl X2hhbmRsZShyZXMpCisKKyAgICAgICAgICAgICAgICAgICAgIyBTZWxlY3QgYWRkZWQgcm93IGZy b20gdGhlIHRhYmxlCisgICAgICAgICAgICAgICAgICAgIGlmICdzZWxlY3Rfc3FsJyBpbiBpdGVt OgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBzZWxfcmVzID0gY29ubi5leGVjdXRl X2RpY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVsnc2VsZWN0X3NxbCddLCBy ZXNbJ3Jvd3MnXVswXSkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc19zYXZlcG9pbnQ6CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCdST0xMQkFDSyBUTyBTQVZF UE9JTlQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICcgc2F2ZV9kYXRhOycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdR dWVyeSBST0xMQkFDSywgdGhlIGN1cnJlbnQnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJyB0cmFuc2FjdGlvbiBpcyBzdGlsbCBvbmdvaW5nLicKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25uLmV4ZWN1dGVfdm9pZCgnUk9MTEJBQ0s7JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbXNnID0gJ1RyYW5zYWN0aW9uIFJPTExCQUNLJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgSWYgd2Ugcm9sbCBiYWNrZWQgZXZlcnkgdGhpbmcgdGhlbiB1cGRhdGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBtZXNzYWdlIGZvciBlYWNoIHNxbCBxdWVyeS4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdmFsIGluIHF1ZXJ5X3JlczoKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcXVlcnlfcmVzW3ZhbF1bJ3N0YXR1cyddOgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfcmVzW3ZhbF1bJ3Jlc3Vs dCddID0gbXNnCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIGxpc3QgaXMgZW1w dHkgc2V0IHJvd2lkIHRvIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpc3Rfb2Zfcm93aWQ6CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfcm93aWQgPSBsaXN0X29mX3Jvd2lkW2NvdW50XQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgX3Jvd2lkID0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yb3dp ZCA9IDAKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXMsIHNlbF9y ZXMsIHF1ZXJ5X3JlcywgX3Jvd2lkLFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aXNfY29tbWl0X3JlcXVpcmVkCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICdyb3dzJyBp biBzZWxfcmVzIGFuZCBsZW4oc2VsX3Jlc1sncm93cyddKSA+IDA6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcm93X2FkZGVkID0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpdGVtWydjbGllbnRfcm93J106IHNlbF9yZXNbJ3Jvd3MnXVswXX0KKworICAgICAgICAgICAg ICAgICAgICByb3dzX2FmZmVjdGVkID0gY29ubi5yb3dzX2FmZmVjdGVkKCkKKyAgICAgICAgICAg ICAgICAgICAgIyBzdG9yZSB0aGUgcmVzdWx0IG9mIGVhY2ggcXVlcnkgaW4gZGljdGlvbmFyeQor ICAgICAgICAgICAgICAgICAgICBxdWVyeV9yZXNbY291bnRdID0geworICAgICAgICAgICAgICAg ICAgICAgICAgJ3N0YXR1cyc6IHN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICdyZXN1 bHQnOiBOb25lIGlmIHJvd19hZGRlZCBlbHNlIHJlcywKKyAgICAgICAgICAgICAgICAgICAgICAg ICdzcWwnOiBpdGVtWydzcWwnXSwgJ3Jvd3NfYWZmZWN0ZWQnOiByb3dzX2FmZmVjdGVkLAorICAg ICAgICAgICAgICAgICAgICAgICAgJ3Jvd19hZGRlZCc6IHJvd19hZGRlZAorICAgICAgICAgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQorCisgICAgICAgICMg Q29tbWl0IHRoZSB0cmFuc2FjdGlvbiBpZiBubyBlcnJvciBpcyBmb3VuZCAmIGF1dG9jb21taXQg aXMgYWN0aXZhdGVkCisgICAgICAgIGlmIGF1dG9fY29tbWl0OgorICAgICAgICAgICAgY29ubi5l eGVjdXRlX3ZvaWQoJ0NPTU1JVDsnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaXNfY29t bWl0X3JlcXVpcmVkID0gVHJ1ZQorCisgICAgcmV0dXJuIHN0YXR1cywgcmVzLCBxdWVyeV9yZXMs IF9yb3dpZCwgaXNfY29tbWl0X3JlcXVpcmVkCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvdXRpbHMvc3RhcnRfcnVubmluZ19xdWVyeS5weSBiL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci91dGlscy9zdGFydF9ydW5uaW5nX3F1ZXJ5LnB5CmluZGV4IGE1Mzk5Nzc0 Li5lY2UxMWY5YyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxz L3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9y L3V0aWxzL3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkKQEAgLTQ1LDYgKzQ1LDkgQEAgY2xhc3MgU3Rh cnRSdW5uaW5nUXVlcnk6CiAgICAgICAgIGlmIHR5cGUoc2Vzc2lvbl9vYmopIGlzIFJlc3BvbnNl OgogICAgICAgICAgICAgcmV0dXJuIHNlc3Npb25fb2JqCiAKKyAgICAgICAgIyBSZW1vdmUgYW55 IGV4aXN0aW5nIHByaW1hcnkga2V5cyBpbiBzZXNzaW9uX29iagorICAgICAgICBzZXNzaW9uX29i ai5wb3AoJ3ByaW1hcnlfa2V5cycsIE5vbmUpCisKICAgICAgICAgdHJhbnNhY3Rpb25fb2JqZWN0 ID0gcGlja2xlLmxvYWRzKHNlc3Npb25fb2JqWydjb21tYW5kX29iaiddKQogICAgICAgICBjYW5f ZWRpdCA9IEZhbHNlCiAgICAgICAgIGNhbl9maWx0ZXIgPSBGYWxzZQpkaWZmIC0tZ2l0IGEvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbF9z cGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvY2FsbF9yZW5kZXJf YWZ0ZXJfcG9sbF9zcGVjLmpzCmluZGV4IGQ2OGY1ZWUxLi44ZjMwYzEwYyAxMDA2NDQKLS0tIGEv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9s bF9zcGVjLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2NhbGxf cmVuZGVyX2FmdGVyX3BvbGxfc3BlYy5qcwpAQCAtMjMsNiArMjMsNyBAQCBkZXNjcmliZSgnI2Nh bGxSZW5kZXJBZnRlclBvbGwnLCAoKSA9PiB7CiAgICAgICB1cGRhdGVfbXNnX2hpc3Rvcnk6IGph c21pbmUuY3JlYXRlU3B5KCdTUUxFZGl0b3IudXBkYXRlX21zZ19oaXN0b3J5JyksCiAgICAgICBk aXNhYmxlX3Rvb2xfYnV0dG9uczogamFzbWluZS5jcmVhdGVTcHkoJ1NRTEVkaXRvci5kaXNhYmxl X3Rvb2xfYnV0dG9ucycpLAogICAgICAgZGlzYWJsZV90cmFuc2FjdGlvbl9idXR0b25zOiBqYXNt aW5lLmNyZWF0ZVNweSgnU1FMRWRpdG9yLmRpc2FibGVfdHJhbnNhY3Rpb25fYnV0dG9ucycpLAor ICAgICAgcmVzZXRfZGF0YV9zdG9yZTogamFzbWluZS5jcmVhdGVTcHkoJ1NRTEVkaXRvci5yZXNl dF9kYXRhX3N0b3JlJyksCiAgICAgICBxdWVyeV9zdGFydF90aW1lOiBuZXcgRGF0ZSgpLAogICAg IH07CiAgICAgYWxlcnRpZnkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxlcnRpZnknLCBbJ3N1 Y2Nlc3MnXSk7CkBAIC0zNyw3ICszOCw3IEBAIGRlc2NyaWJlKCcjY2FsbFJlbmRlckFmdGVyUG9s bCcsICgpID0+IHsKICAgICAgIHNxbEVkaXRvclNweS5pc19xdWVyeV90b29sID0gZmFsc2U7CiAg ICAgfSk7CiAKLSAgICBkZXNjcmliZSgncXVlcnkgd2FzIHN1Y2Nlc3NmdWwgYnV0IGhhZCBubyBy ZXN1bHQgdG8gZGlzcGxheScsICgpID0+IHsKKyAgICBkZXNjcmliZSgncXVlcnkgd2FzIHN1Y2Nl c3NmdWwgYW5kIGhhdmUgcmVzdWx0cycsICgpID0+IHsKICAgICAgIGJlZm9yZUVhY2goKCkgPT4g ewogICAgICAgICBxdWVyeVJlc3VsdCA9IHsKICAgICAgICAgICByb3dzX2FmZmVjdGVkOiAxMCwK QEAgLTY1LDcgKzY2LDcgQEAgZGVzY3JpYmUoJyNjYWxsUmVuZGVyQWZ0ZXJQb2xsJywgKCkgPT4g ewogICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgncXVlcnkgd2FzIHN1Y2Nlc3Nm dWwgYW5kIGhhdmUgcmVzdWx0cycsICgpID0+IHsKKyAgICBkZXNjcmliZSgncXVlcnkgd2FzIHN1 Y2Nlc3NmdWwgYnV0IGhhZCBubyByZXN1bHQgdG8gZGlzcGxheScsICgpID0+IHsKICAgICAgIGJl Zm9yZUVhY2goKCkgPT4gewogICAgICAgICBxdWVyeVJlc3VsdCA9IHsKICAgICAgICAgICByb3dz X2FmZmVjdGVkOiAxMCwKQEAgLTgxLDEwICs4MiwxNiBAQCBkZXNjcmliZSgnI2NhbGxSZW5kZXJB ZnRlclBvbGwnLCAoKSA9PiB7CiAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JTcHkudXBkYXRlX21z Z19oaXN0b3J5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKICAgICAgICAgICB0cnVlLAogICAgICAg ICAgICdTb21lIHJlc3VsdFxuXG5RdWVyeSByZXR1cm5lZCBzdWNjZXNzZnVsbHkgaW4gMCBtc2Vj LicsCi0gICAgICAgICAgZmFsc2UKKyAgICAgICAgICB0cnVlCiAgICAgICAgICk7CiAgICAgICB9 KTsKIAorICAgICAgaXQoJ3Jlc2V0cyB0aGUgY2hhbmdlZCBkYXRhIHN0b3JlJywgKCkgPT4gewor ICAgICAgICBjYWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRvclNweSwgYWxlcnRpZnksIHF1ZXJ5 UmVzdWx0KTsKKworICAgICAgICBleHBlY3Qoc3FsRWRpdG9yU3B5LnJlc2V0X2RhdGFfc3RvcmUp LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCiAgICAgICBpdCgnaW5mb3JtIHNxbGVk aXRvciB0aGF0IHRoZSBxdWVyeSBzdG9wcGVkIHJ1bm5pbmcnLCAoKSA9PiB7CiAgICAgICAgIGNh bGxSZW5kZXJBZnRlclBvbGwoc3FsRWRpdG9yU3B5LCBhbGVydGlmeSwgcXVlcnlSZXN1bHQpOwog CkBAIC0xMTYsNyArMTIzLDcgQEAgZGVzY3JpYmUoJyNjYWxsUmVuZGVyQWZ0ZXJQb2xsJywgKCkg PT4gewogICAgICAgc3FsRWRpdG9yU3B5LmlzX3F1ZXJ5X3Rvb2wgPSB0cnVlOwogICAgIH0pOwog Ci0gICAgZGVzY3JpYmUoJ3F1ZXJ5IHdhcyBzdWNjZXNzZnVsIGJ1dCBoYWQgbm8gcmVzdWx0IHRv IGRpc3BsYXknLCAoKSA9PiB7CisgICAgZGVzY3JpYmUoJ3F1ZXJ5IHdhcyBzdWNjZXNzZnVsIGFu ZCBoYXZlIHJlc3VsdHMnLCAoKSA9PiB7CiAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKICAgICAg ICAgcXVlcnlSZXN1bHQgPSB7CiAgICAgICAgICAgcm93c19hZmZlY3RlZDogMTAsCkBAIC0xNTAs NyArMTU3LDcgQEAgZGVzY3JpYmUoJyNjYWxsUmVuZGVyQWZ0ZXJQb2xsJywgKCkgPT4gewogICAg ICAgfSk7CiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgncXVlcnkgd2FzIHN1Y2Nlc3NmdWwgYW5k IGhhdmUgcmVzdWx0cycsICgpID0+IHsKKyAgICBkZXNjcmliZSgncXVlcnkgd2FzIHN1Y2Nlc3Nm dWwgYnV0IGhhZCBubyByZXN1bHQgdG8gZGlzcGxheScsICgpID0+IHsKICAgICAgIGJlZm9yZUVh Y2goKCkgPT4gewogICAgICAgICBxdWVyeVJlc3VsdCA9IHsKICAgICAgICAgICByb3dzX2FmZmVj dGVkOiAxMCwKQEAgLTE2NiwxMCArMTczLDE2IEBAIGRlc2NyaWJlKCcjY2FsbFJlbmRlckFmdGVy UG9sbCcsICgpID0+IHsKICAgICAgICAgZXhwZWN0KHNxbEVkaXRvclNweS51cGRhdGVfbXNnX2hp c3RvcnkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAogICAgICAgICAgIHRydWUsCiAgICAgICAgICAg J1NvbWUgcmVzdWx0XG5cblF1ZXJ5IHJldHVybmVkIHN1Y2Nlc3NmdWxseSBpbiAwIG1zZWMuJywK LSAgICAgICAgICBmYWxzZQorICAgICAgICAgIHRydWUKICAgICAgICAgKTsKICAgICAgIH0pOwog CisgICAgICBpdCgncmVzZXRzIHRoZSBjaGFuZ2VkIGRhdGEgc3RvcmUnLCAoKSA9PiB7CisgICAg ICAgIGNhbGxSZW5kZXJBZnRlclBvbGwoc3FsRWRpdG9yU3B5LCBhbGVydGlmeSwgcXVlcnlSZXN1 bHQpOworCisgICAgICAgIGV4cGVjdChzcWxFZGl0b3JTcHkucmVzZXRfZGF0YV9zdG9yZSkudG9I YXZlQmVlbkNhbGxlZCgpOworICAgICAgfSk7CisKICAgICAgIGl0KCdpbmZvcm0gc3FsZWRpdG9y IHRoYXQgdGhlIHF1ZXJ5IHN0b3BwZWQgcnVubmluZycsICgpID0+IHsKICAgICAgICAgY2FsbFJl bmRlckFmdGVyUG9sbChzcWxFZGl0b3JTcHksIGFsZXJ0aWZ5LCBxdWVyeVJlc3VsdCk7CiAKZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2tleWJvYXJkX3No b3J0Y3V0c19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3Iva2V5 Ym9hcmRfc2hvcnRjdXRzX3NwZWMuanMKaW5kZXggZDA5NzNhNzguLjc4ODYxNWYyIDEwMDY0NAot LS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9rZXlib2FyZF9zaG9ydGN1 dHNfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9rZXli b2FyZF9zaG9ydGN1dHNfc3BlYy5qcwpAQCAtMTQsNiArMTQsNyBAQCBpbXBvcnQgZ2V0dGV4dCBm cm9tICdzb3VyY2VzL2dldHRleHQnOwogZGVzY3JpYmUoJ3RoZSBrZXlib2FyZCBzaG9ydGN1dHMn LCAoKSA9PiB7CiAgIGNvbnN0IEYxX0tFWSA9IDExMiwKICAgICBGNV9LRVkgPSAxMTYsCisgICAg RjZfS0VZID0gMTE3LAogICAgIEY3X0tFWSA9IDExOCwKICAgICBGOF9LRVkgPSAxMTksCiAgICAg UEVSSU9EX0tFWSA9IDE5MCwKQEAgLTEwOSw2ICsxMTAsMTQgQEAgZGVzY3JpYmUoJ3RoZSBrZXli b2FyZCBzaG9ydGN1dHMnLCAoKSA9PiB7CiAgICAgICAgICAga2V5X2NvZGU6ICdyJywKICAgICAg ICAgfSwKICAgICAgIH0sCisgICAgICBzYXZlX2RhdGE6IHsKKyAgICAgICAgYWx0IDogZmFsc2Us CisgICAgICAgIHNoaWZ0OiBmYWxzZSwKKyAgICAgICAgY29udHJvbDogZmFsc2UsCisgICAgICAg IGtleTogeworICAgICAgICAgIGtleV9jb2RlOiBGNl9LRVksCisgICAgICAgIH0sCisgICAgICB9 LAogICAgIH07CiAKICAgICBxdWVyeVRvb2xBY3Rpb25zU3B5ID0gamFzbWluZS5jcmVhdGVTcHlP YmoocXVlcnlUb29sQWN0aW9ucywgWwpAQCAtMTIxLDYgKzEzMCw3IEBAIGRlc2NyaWJlKCd0aGUg a2V5Ym9hcmQgc2hvcnRjdXRzJywgKCkgPT4gewogICAgICAgJ2V4ZWN1dGVRdWVyeScsCiAgICAg ICAnZXhlY3V0ZUNvbW1pdCcsCiAgICAgICAnZXhlY3V0ZVJvbGxiYWNrJywKKyAgICAgICdzYXZl RGF0YUNoYW5nZXMnLAogICAgIF0pOwogICB9KTsKIApAQCAtMTc2LDYgKzE4Niw0MiBAQCBkZXNj cmliZSgndGhlIGtleWJvYXJkIHNob3J0Y3V0cycsICgpID0+IHsKICAgICB9KTsKICAgfSk7CiAK KyAgZGVzY3JpYmUoJ0Y2JywgKCkgPT4geworICAgIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGlzIG5v dCBhIHF1ZXJ5IGFscmVhZHkgcnVubmluZycsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkg PT4geworICAgICAgICBldmVudC53aGljaCA9IEY2X0tFWTsKKyAgICAgICAgZXZlbnQuYWx0S2V5 ID0gZmFsc2U7CisgICAgICAgIGV2ZW50LnNoaWZ0S2V5ID0gZmFsc2U7CisgICAgICAgIGV2ZW50 LmN0cmxLZXkgPSBmYWxzZTsKKyAgICAgICAga2V5Ym9hcmRTaG9ydGN1dHMucHJvY2Vzc0V2ZW50 UXVlcnlUb29sKAorICAgICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHksIHF1ZXJ5VG9vbEFj dGlvbnNTcHksIGV2ZW50CisgICAgICAgICk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3Nob3Vs ZCBzYXZlIHRoZSBjaGFuZ2VkIGRhdGEnLCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChxdWVyeVRv b2xBY3Rpb25zU3B5LnNhdmVEYXRhQ2hhbmdlcykudG9IYXZlQmVlbkNhbGxlZFdpdGgoc3FsRWRp dG9yQ29udHJvbGxlclNweSk7CisgICAgICB9KTsKKworICAgICAgZXhwZWN0RXZlbnRQcm9wYWdh dGlvblRvU3RvcCgpOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ3doZW4gdGhlIHF1ZXJ5IGlz IGFscmVhZHkgcnVubmluZycsICgpID0+IHsKKyAgICAgIGl0KCdkb2VzIG5vdGhpbmcnLCAoKSA9 PiB7CisgICAgICAgIGV2ZW50LmtleUNvZGUgPSBGNl9LRVk7CisgICAgICAgIGV2ZW50LmFsdEtl eSA9IGZhbHNlOworICAgICAgICBldmVudC5zaGlmdEtleSA9IGZhbHNlOworICAgICAgICBldmVu dC5jdHJsS2V5ID0gZmFsc2U7CisgICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHkuaXNRdWVy eVJ1bm5pbmcuYW5kLnJldHVyblZhbHVlKHRydWUpOworCisgICAgICAgIGtleWJvYXJkU2hvcnRj dXRzLnByb2Nlc3NFdmVudFF1ZXJ5VG9vbCgKKyAgICAgICAgICBzcWxFZGl0b3JDb250cm9sbGVy U3B5LCBxdWVyeVRvb2xBY3Rpb25zU3B5LCBldmVudAorICAgICAgICApOworCisgICAgICAgIGV4 cGVjdChxdWVyeVRvb2xBY3Rpb25zU3B5LnNhdmVEYXRhQ2hhbmdlcykubm90LnRvSGF2ZUJlZW5D YWxsZWQoKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKwogICBkZXNjcmliZSgnRjcnLCAo KSA9PiB7CiAgICAgZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgbm90IGEgcXVlcnkgYWxyZWFkeSBy dW5uaW5nJywgKCkgPT4gewogICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CmRpZmYgLS1naXQgYS93 ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weSBiL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5Cmlu ZGV4IGNmOWFiMTljLi45MDYzNTRiOCAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vcnVudGVz dHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKQEAgLTIzMyw2ICsyMzMsNyBA QCBkZWYgZ2V0X3Rlc3RfbW9kdWxlcyhhcmd1bWVudHMpOgogICAgICAgICAgICAgICAgICAgICBp ZiB0ZXN0X3NldHVwLmNvbmZpZ19kYXRhWydoZWFkbGVzc19jaHJvbWUnXToKICAgICAgICAgICAg ICAgICAgICAgICAgIG9wdGlvbnMuYWRkX2FyZ3VtZW50KCItLWhlYWRsZXNzIikKICAgICAgICAg ICAgIG9wdGlvbnMuYWRkX2FyZ3VtZW50KCItLXdpbmRvdy1zaXplPTEyODAsMTAyNCIpCisgICAg ICAgICAgICBvcHRpb25zLmFkZF9hcmd1bWVudCgiLS1kaXNhYmxlLWluZm9iYXJzIikKICAgICAg ICAgICAgIG9wdGlvbnMuYWRkX2V4cGVyaW1lbnRhbF9vcHRpb24oJ3czYycsIEZhbHNlKQogICAg ICAgICAgICAgZHJpdmVyID0gd2ViZHJpdmVyLkNocm9tZShjaHJvbWVfb3B0aW9ucz1vcHRpb25z KQogCg== --0000000000005a0de3058cc94399--