Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fOhtS-0005kA-5L for pgadmin-hackers@arkaria.postgresql.org; Fri, 01 Jun 2018 11:06:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fOhtO-0002eO-10 for pgadmin-hackers@arkaria.postgresql.org; Fri, 01 Jun 2018 11:06:46 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fOhtN-0002e1-08 for pgadmin-hackers@lists.postgresql.org; Fri, 01 Jun 2018 11:06:45 +0000 Received: from mail-ot0-x22f.google.com ([2607:f8b0:4003:c0f::22f]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fOhtG-00016I-1U for pgadmin-hackers@postgresql.org; Fri, 01 Jun 2018 11:06:43 +0000 Received: by mail-ot0-x22f.google.com with SMTP id m11-v6so28799469otf.3 for ; Fri, 01 Jun 2018 04:06:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=xGq1Cd/SYHBYNP0eiYaf6klGAoL8eKIKlfnlT7vU0FA=; b=mSb9nuoIP30nawBgqggm+9DP18+HaKdlnjTVUDYw+RgyiFhQHpCNvrtGZo4v+Svqwu Ra9BC5st+fOrmavEbBb0UkmWPNh2Neokx9citRIK4ZwfTiGkh9jEL1UQqXfQ428bZI4/ dPpd1qKCrbFoTDrd2C3pmPL7XmXU+0FDgOJ6CKZ3tIW0XJ1Pcz8OzfAeMLptrVjHTyeN vUrEX4JAVns8Wv6uslRSWvNYmqD5p+yGzBHGYAapVLSpDVaSFOvuK9+ovi3VGWGiYZKf Lh9dlk/NNSho7YzvG5byStJCRY3B4Guj/WSQpoaPU7/tXsmMbWVO30X7Effy8vl0J+NR Q1Qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=xGq1Cd/SYHBYNP0eiYaf6klGAoL8eKIKlfnlT7vU0FA=; b=ony1OEZrgZ3NyU1sqMqY0ciDliq10984d8lRg0Hnl/w03SoashMo3r6CYzDJlVGnY2 Lk9VMmtTVbHzaNObKeTK7j/8gGNt+3iQDJZzm6I3svQL4NYtRqqew9eWmCZJrDXGXDmG /4NJYl2keRCz49BPt2Ak0fu7XDQb3K26YyNj5j0eU6zHH4U7hDJP7NYBF8N9tXCPjDO1 9IISOLRaHQPvuRvrX+X7ztChgl9NTWwA7ElPtUqlSOdBS+a3JDnQPD5SOkUWR55s4hhF q+Rha5RNCx5v08UMX9W7BeBxRup+V0hRukgz4dLL7kJ+4LULI4JlGAn6qVcUbCyiIT5a 2mJA== X-Gm-Message-State: ALKqPwcVyhqHD2JM1T/rD8C+S1AOyDEIdt6kg8DwD73eD0XwKlREaQ8l mHS9Iic3ixlu/5vFpQOyxXr8nOHhBgkeFXs2MrEj4Q== X-Google-Smtp-Source: ADUXVKLE53+pyFzjf2lbbqNsj3sDJNU7Lw1LA4e15w6PK9YFo82bNpzLYPe9EwxZNdGQegydC42Yo89iTZQVOhKi+Ys= X-Received: by 2002:a9d:428c:: with SMTP id r12-v6mr6606622ote.296.1527851196588; Fri, 01 Jun 2018 04:06:36 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:5301:0:0:0:0:0 with HTTP; Fri, 1 Jun 2018 04:06:35 -0700 (PDT) In-Reply-To: References: From: Khushboo Vashi Date: Fri, 1 Jun 2018 16:36:35 +0530 Message-ID: Subject: Re: [pgadmin4][Patch]: Test cases for the backup module To: Victoria Henry Cc: Dave Page , pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000d87135056d92933d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000d87135056d92933d Content-Type: multipart/alternative; boundary="000000000000d87132056d92933b" --000000000000d87132056d92933b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Victoria, Thanks for reviewing the patch. The tests were failing due to the latest commit #2b4605a9d390cb44e5dfe9967c3adf2b28d04f1f - Ensure backup/restore/maintenance work via SSH tunnels. Fixes #3355 I have fixed the issues and attached the updated patch. Thanks, Khushboo On Thu, May 31, 2018 at 10:00 PM, Victoria Henry wrote: > Hi there, > > We've been noticing some issues with the tests on both our CI and local > Mac workstations. > > 1. When the following code blocks are invoked - we get plenty of > app.context() issues. It must not be valid when running tests. > > =E2=80=8B > > from pgadmin.utils.driver import get_driver > driver =3D get_driver(PG_DEFAULT_DRIVER) > manager =3D driver.connection_manager(self.sid) > > host =3D manager.local_bind_host if manager.use_ssh_tunnel else s.host > port =3D manager.local_bind_port if manager.use_ssh_tunnel else s.port > > 2. When we finally enable > > "default_binary_paths": { > > in our test_config, we get more failing tests that look like: > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > FAIL: runTest (pgadmin.tools.restore.tests.test_restore_create_job_unit_t= est.RestoreCreateJobTest) > When restore object with option - Miscellaneous > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/unittest/mock.= py", line 1179, in patched > return func(*args, **keywargs) > File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/restore/tests= /test_restore_create_job_unit_test.py", line 295, in runTest > self.assertEquals(response.status_code, 200) > AssertionError: 410 !=3D 200 > > And > > When restore object with the sections options ... 2018-05-31 12:24:42,988= : ERROR pgadmin: illegal environment variable name > Traceback (most recent call last): > File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/restore/__ini= t__.py", line 352, in create_restore_job > manager.export_password_env(p.id) > File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/utils/driver/psycop= g2/server_manager.py", line 365, in export_password_env > os.environ[str(env)] =3D password > File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/os.py", line 6= 75, in __setitem__ > self.putenv(key, value) > ValueError: illegal environment variable name > FAIL > > =E2=80=8B > > Sincerely, > > Victoria && Anthony > > On Thu, May 31, 2018 at 1:16 AM Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Please find the attached updated patch with the fixes. >> The test cases were only failing on MAC not on Linux. >> >> Thanks, >> Khushboo >> >> On Wed, May 30, 2018 at 10:13 AM, Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> >>> >>> On Wed, May 30, 2018 at 1:05 AM, Dave Page wrote: >>> >>>> Hi >>>> >>>> On Mon, May 28, 2018 at 8:09 AM, Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> please find the attached updated patch for the test cases of Backup, >>>>> Restore and Maintenance modules which includes: >>>>> >>>>> 1. Unit test cases >>>>> 2. End to end regression test cases >>>>> 3. Feature test cases >>>>> >>>> >>>> Thanks. I've yet to be able to run the feature tests successfully. >>>> Here's what I've found so far: >>>> >>>> 1) DEFAULT_BINARY_PATHS should be default_binary_paths in the JSON >>>> config file. >>>> >>>> Will do. >>> >>>> 2) I've hit screensize related issues: >>>> >>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>> >>>> ERROR: runTest (pgadmin.feature_tests.pg_utilities_maintenance_test. >>>> PGUtilitiesMaintenanceFeatureTest) >>>> >>>> Test for PG maintenance: database >>>> >>>> ---------------------------------------------------------------------- >>>> >>>> Traceback (most recent call last): >>>> >>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_ >>>> utilities_maintenance_test.py", line 56, in runTest >>>> >>>> self._open_maintenance_dialogue() >>>> >>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_ >>>> utilities_maintenance_test.py", line 75, in _open_maintenance_dialogue >>>> >>>> "*[.=3D'" + self.table_name + "']/../*[@class=3D'aciTreeItem'" >>>> >>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- >>>> packages/selenium/webdriver/remote/webelement.py", line 80, in click >>>> >>>> self._execute(Command.CLICK_ELEMENT) >>>> >>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- >>>> packages/selenium/webdriver/remote/webelement.py", line 628, in >>>> _execute >>>> >>>> return self._parent.execute(command, params) >>>> >>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- >>>> packages/selenium/webdriver/remote/webdriver.py", line 312, in execute >>>> >>>> self.error_handler.check_response(response) >>>> >>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- >>>> packages/selenium/webdriver/remote/errorhandler.py", line 242, in >>>> check_response >>>> >>>> raise exception_class(message, screen, stacktrace) >>>> >>>> WebDriverException: Message: unknown error: Element >>> class=3D"aciTreeItem">... is not clickable at point (223, 604).= Other >>>> element would receive the click:
>>> wcPanelBackground wcScrollableX wcScrollableY" style=3D"left: 0px; rig= ht: >>>> 0px; bottom: 0px;">...
>>>> >>>> (Session info: chrome=3D66.0.3359.181) >>>> >>>> (Driver info: chromedriver=3D2.38.552518 ( >>>> 183d19265345f54ce39cbb94cf81ba5f15905011),platform=3DMac OS X 10.12.6 >>>> x86_64) >>>> >>>> 3) One time the test did start, but then I saw this failure: >>>> >>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>> >>>> ERROR: runTest (pgadmin.feature_tests.pg_utilities_backup_restore_test= . >>>> PGUtilitiesBackupFeatureTest) >>>> >>>> Test for PG utilities - Backup and Restore >>>> >>>> ---------------------------------------------------------------------- >>>> >>>> Traceback (most recent call last): >>>> >>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_ >>>> utilities_backup_restore_test.py", line 93, in runTest >>>> >>>> self.page.fill_input_by_field_name("file", "test_backup_file") >>>> >>>> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin= _page.py", >>>> line 211, in fill_input_by_field_name >>>> >>>> self.wait_for_input_field_content(field_name, field_content) >>>> >>>> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin= _page.py", >>>> line 251, in wait_for_input_field_content >>>> >>>> "field to contain '" + str(content) + "'", input_field_has_content >>>> >>>> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin= _page.py", >>>> line 337, in _wait_for >>>> >>>> "Timed out waiting for " + waiting_for_message >>>> >>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site- >>>> packages/selenium/webdriver/support/wait.py", line 80, in until >>>> >>>> raise TimeoutException(message, screen, stacktrace) >>>> >>>> TimeoutException: Message: Timed out waiting for field to contain >>>> 'test_backup_file' >>>> >>>> >>>> >>>> (with screenshot attached) >>>> >>>> Thanks. >>>> >>>> I have ran the feature tests with multiple servers many times but >>> didn't get a single failure. >>> I have asked Akshay to run on his machine, let see what he gets. >>> >>>> >>>> >>>> >>>> >>>>> >>>>> Thanks, >>>>> Khushboo >>>>> >>>>> >>>>> >>>>> >>>>> On Wed, Apr 25, 2018 at 9:40 PM, Joao De Almeida Pereira < >>>>> jdealmeidapereira@pivotal.io> wrote: >>>>> >>>>>> Hi Khushboo, >>>>>> >>>>>> We reviewed the patch and it is very nice to see some more coverage >>>>>> in this area. Good job :D >>>>>> >>>>>> We passed the tests through our CI the feature tests are not passing= , >>>>>> but the linter fails: >>>>>> >>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:37: [E501] line = too long (91 > 79 characters) >>>>>> >>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:53: [E501] line = too long (104 > 79 characters) >>>>>> >>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:59: [E501] line = too long (85 > 79 characters) >>>>>> >>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:62: [E501] line = too long (96 > 79 characters) >>>>>> >>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:63: [E501] line = too long (91 > 79 characters) >>>>>> >>>>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:70: [E501] line = too long (118 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:37: [E121] conti= nuation line under-indented for hanging indent >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:48: [E122] conti= nuation line missing indentation or outdented >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:49: [E251] unexp= ected spaces around keyword / parameter equals >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:49: [E251] unexp= ected spaces around keyword / parameter equals >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:51: [E501] line = too long (91 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:52: [E501] line = too long (94 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:53: [E501] line = too long (108 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:81: [E501] line = too long (113 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:82: [E501] line = too long (94 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:83: [E501] line = too long (108 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:111: [E501] line= too long (100 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:113: [E501] line= too long (94 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:114: [E501] line= too long (108 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_backup_message.py:147: [E501] line= too long (93 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:40: [E121] contin= uation line under-indented for hanging indent >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:51: [E122] contin= uation line missing indentation or outdented >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:135: [E501] line = too long (80 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:137: [E501] line = too long (83 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:138: [E122] conti= nuation line missing indentation or outdented >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:139: [E122] conti= nuation line missing indentation or outdented >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:140: [E122] conti= nuation line missing indentation or outdented >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:191: [E501] line = too long (81 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:203: [E501] line = too long (80 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:204: [E128] conti= nuation line under-indented for visual indent >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:204: [E501] line = too long (94 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:205: [E128] conti= nuation line under-indented for visual indent >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:205: [E501] line = too long (94 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_batch_process.py:216: [W391] blank= line at end of file >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:296: [E501] l= ine too long (97 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:317: [E303] t= oo many blank lines (2) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:336: [E501] l= ine too long (84 > 79 characters) >>>>>> >>>>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:371: [W391] b= lank line at end of file >>>>>> >>>>>> 2 E121 continuation line under-indented for hanging indent >>>>>> >>>>>> 5 E122 continuation line missing indentation or outdented >>>>>> >>>>>> 2 E128 continuation line under-indented for visual indent >>>>>> >>>>>> 2 E251 unexpected spaces around keyword / parameter equals >>>>>> >>>>>> 1 E303 too many blank lines (2) >>>>>> >>>>>> 24 E501 line too long (91 > 79 characters) >>>>>> >>>>>> 2 W391 blank line at end of file >>>>>> >>>>>> 38 >>>>>> >>>>>> >>>>>> For the feature tests, we realized we had to update the >>>>>> configuration, and we did that, but we get the following error attac= hed. We >>>>>> spent some time trying to understand the problem but we were not suc= cessful. >>>>>> >>>>>> >>>>>> Codewise: >>>>>> - We just found some One Letter Variables in the code... >>>>>> - Looks like there is a bug report in this area of the code and we d= o >>>>>> not have coverage for it: https://redmine.postgresql.org/issues/3232 >>>>>> Looks like in some of the unit tests we only have happy path tests= , >>>>>> maybe we should see if there are any sad paths that also need covera= ge. >>>>>> >>>>>> The configuration change, maybe need to be updated. When we install >>>>>> multiple versions of postgres the binaries live in >>>>>> `/usr/lib/postgresql/{{db_version}}/bin`, which makes us think that >>>>>> this configuration should live near the server configuration, maybe?= Also >>>>>> to maintain coherency on the naming maybe we should make it all lowe= r case. >>>>>> Just as an aside, you can add the gpdb configuration as well in you >>>>>> patch. >>>>>> >>>>>> Thanks >>>>>> Victoria & Joao >>>>>> >>>>>> On Wed, Apr 25, 2018 at 5:20 AM Khushboo Vashi < >>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> Please find the attached patch which covers test cases for the >>>>>>> backup module (RM #3206). >>>>>>> >>>>>>> 1. Unit test cases >>>>>>> 2. End to end regression test cases >>>>>>> 3. Feature test cases >>>>>>> >>>>>>> Thanks, >>>>>>> Khushboo >>>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> Dave Page >>>> Blog: http://pgsnake.blogspot.com >>>> Twitter: @pgsnake >>>> >>>> EnterpriseDB UK: http://www.enterprisedb.com >>>> The Enterprise PostgreSQL Company >>>> >>> >>> >> --000000000000d87132056d92933b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Victoria,

Thanks for reviewing the p= atch.
The tests were failing due to the latest commit #2b4605a9d3= 90cb44e5dfe9967c3adf2b28d04f1f=C2=A0 - Ensure backup/restore/maintenance wo= rk via SSH tunnels. Fixes #3355

I have fixed the i= ssues and attached the updated patch.

Thanks,
Khushboo=C2=A0

On Thu, May 31, 2018 at 10:00 PM, Victoria Henry <vhenry@= pivotal.io> wrote:
Hi there,

We've been noticing some issues w= ith the tests on both our CI and local Mac workstations.
  1. When the following code blocks are invoked -= we get plenty of app.context() issues. It must not= be valid when running tests.
=E2=80=8B
=
from pgadmin.utils.driver import get_driver
driver =3D get_driver(PG_DEFAULT_DR= IVER)
manager =3D driver.connection_manager(self.sid)

host =3D manager.local_bind_host if manager.use_ssh_tunnel else s.host
port =3D manager.local= _bind_port if manager.use_ssh_= tunnel else s.port=C2=A0
=
2. When we finally enable=C2=A0
"default_binary_=
paths": {
in our test_config, we get more failing tests that look like:
=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
FAIL: runTest (pgadmin.tools.restore.tests.test_restore_create_job_uni=
t_test.RestoreCreateJobTest)
When restore object with option - Miscellaneous
-----------------------------------------------------------------=
-----
Traceback (most recent call last):
  File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/u=
nittest/mock.py", line 1179, in patched
    return func(*args, **keywargs)
  File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/=
restore/tests/test_restore_create_job_unit_test.py", line 295, in=
 runTest
    self.assertEquals(response.status_code, 200)
AssertionError: 410 !=3D 200

And

When restore object =
with the sections options ... 2018-05-31 12:24:42,988: ERROR    pgadmin:   =
 illegal environment variable name
Traceback (most recent call last):
  File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/tools/=
restore/__init__.py", line 352, in create_restore_job
    manager.export_password_env(p=
.id)
  File "/Users/pivotal/workspace/pgadmin4/web/pgadmin/utils/=
driver/psycopg2/server_manager.py", line 365, in export_password_=
env
    os.environ[str(env)] =3D password
  File "/Users/pivotal/.pyenv/versions/3.6.5/lib/python3.6/o=
s.py", line 675, in __setitem__
    self.putenv(key, value)
ValueError: illegal environment variable name
FAIL
=E2=80=8B
=

Sincerely,

Vi= ctoria && Anthony

On Thu, May 31, 2018 at 1= :16 AM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
=
Hi,

Please find the attached updated patch with the fixes.
The test= cases were only failing on MAC not on Linux.

Than= ks,
Khushboo

On Wed, May 30, 2018 at 10:13 AM, Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:

On Wed, May 30, 2018 at 1:05 AM, Dave Pa= ge <dpage@pgadmin.org> wrote:
Hi

On Mon, May 28, 2018 at 8:09 AM, Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,

please find the attached updated patch for the test cases of Backup, Res= tore and Maintenance modules which includes:

1. Unit test cases
2. End to end regression test cases=C2=A0
3. = Feature test cases

Thanks. I've yet to be able to run the feature tests successful= ly. Here's what I've found so far:

1) DEFA= ULT_BINARY_PATHS should be default_binary_paths in the JSON config file.

Will do.=C2=A0=
2) I've hit screensize related iss= ues:

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

ERROR: runTest (pgadmin.feature_tes= ts.pg_utilities_maintenance_test.PGUtilitiesMaintenanceFeatureTest)

Test for PG maintenance: database

------------------------------= ----------------------------------------

Traceback (most recent call last):<= /span>

=C2=A0 File "/Users/dpage/git/pgadmin4/w= eb/pgadmin/feature_tests/pg_utilities_maintenance_test.py", = line 56, in runTest

=C2=A0 =C2=A0 self._open_maintenance_dialogue= ()

=C2=A0 File "/Users/dpage/git/pgadmin4/w= eb/pgadmin/feature_tests/pg_utilities_maintenance_test.py", = line 75, in _open_maintenance_dialogue

=C2=A0 =C2=A0 "*[.=3D'" + self.table= _name + "']/../*[@class=3D'aciTreeItem'"

=C2=A0 File "/Users/dpage/.virtualenvs/p= gadmin4/lib/python2.7/site-packages/selenium/webdriver/remote/web= element.py", line 80, in click

=C2=A0 =C2=A0 self._execute(Command.CLICK_ELE= MENT)

=C2=A0 File "/Users/dpage/.virtualenvs/p= gadmin4/lib/python2.7/site-packages/selenium/webdriver/remote/web= element.py", line 628, in _execute

=C2=A0 =C2=A0 return self._parent.execute(command,= params)

=C2=A0 File "/Users/dpage/.virtualenvs/p= gadmin4/lib/python2.7/site-packages/selenium/webdriver/remote/web= driver.py", line 312, in execute

=C2=A0 =C2=A0 self.error_handler.check_respon= se(response)

=C2=A0 File "/Users/dpage/.virtualenvs/p= gadmin4/lib/python2.7/site-packages/selenium/webdriver/remote/err= orhandler.py", line 242, in check_response

=C2=A0 =C2=A0 raise exception_class(message, scree= n, stacktrace)

WebDriverException: Message: unknow= n error: Element <span class=3D"aciTreeItem">...</span&g= t; is not clickable at point (223, 604). Other element would receive the cl= ick: <div class=3D"wcFrameCenter wcPanelBackground wcScrollableX wc= ScrollableY" style=3D"left: 0px; right: 0px; bottom: 0px;"&g= t;...</div>

=C2=A0 (Session info: chrome=3D66.0.3359.181)

=C2=A0 (Driver info: chromedriver=3D2.38.552518 (<= wbr>183d19265345f54ce39cbb94cf81ba5f15905011),platform=3DMac OS X 10.1= 2.6 x86_64)


3) One time the test did start, but then I saw this failure:=

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

ERROR: runTest (pgadmin.feature_tes= ts.pg_utilities_backup_restore_test.PGUtilitiesBackupFeatureTest)=

Test for PG utilities - Backup and = Restore

------------------------------= ----------------------------------------

Traceback (most recent call last):<= /span>

=C2=A0 File "/Users/dpage/git/pgadmin4/w= eb/pgadmin/feature_tests/pg_utilities_backup_restore_test.py"= ;, line 93, in runTest

=C2=A0 =C2=A0 self.page.fill_input_by_field_n= ame("file", "test_backup_file")

=C2=A0 File "/Users/dpage/git/pgadmin4/w= eb/regression/feature_utils/pgadmin_page.py", line 211, in fill_i= nput_by_field_name

=C2=A0 =C2=A0 self.wait_for_input_field_conte= nt(field_name, field_content)

=C2=A0 File "/Users/dpage/git/pgadmin4/w= eb/regression/feature_utils/pgadmin_page.py", line 251, in wait_f= or_input_field_content

=C2=A0 =C2=A0 "field to contain '" += str(content) + "'", input_field_has_content

=C2=A0 File "/Users/dpage/git/pgadmin4/w= eb/regression/feature_utils/pgadmin_page.py", line 337, in _wait_= for

=C2=A0 =C2=A0 "Timed out waiting for " += waiting_for_message

=C2=A0 File "/Users/dpage/.virtualenvs/p= gadmin4/lib/python2.7/site-packages/selenium/webdriver/support/wa= it.py", line 80, in until

=C2=A0 =C2=A0 raise TimeoutException(message, scre= en, stacktrace)

TimeoutException: Message: Timed ou= t waiting for field to contain 'test_backup_file'



(with screenshot attached)

Thanks.<= /div>

I have ran the feature tests with multiple servers many time= s but didn't get a single failure.
I have asked Akshay to run= on his machine, let see what he gets.
=


=C2=A0

Thanks,
Khushboo
<= br>



On Wed, Apr 25, 2018 at 9:40 PM, Joao De Almeida Pereira = <jdealmeidapereira@pivotal.io> wrote:
Hi Khushboo,

We = reviewed the patch and it is very nice to see some more coverage in this ar= ea. Good job :D

We passed the tests through our CI= the feature tests are not passing, but the linter fails:
./pgadmin/feature_tests/pg_utilities_ba= ckup_test.py:37: [E501] line too long (91 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup_test.py:53: [E501] line t= oo long (104 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup_test.py:59: [E501] line t= oo long (85 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup_test.py:62: [E501] line t= oo long (96 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup_test.py:63: [E501] line t= oo long (91 > 79 characters)
./pgadmin/feature_tests/pg_utilities_backup_test.py:70: [E501] line t= oo long (118 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:37: [E121] contin= uation line under-indented for hanging indent
./pgadmin/tools/backup/tests/test_backup_message.py:48: [E122] contin= uation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_backup_message.py:49: [E251] unexpe= cted spaces around keyword / parameter equals
./pgadmin/tools/backup/tests/test_backup_message.py:49: [E251] unexpe= cted spaces around keyword / parameter equals
./pgadmin/tools/backup/tests/test_backup_message.py:51: [E501] line t= oo long (91 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:52: [E501] line t= oo long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:53: [E501] line t= oo long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:81: [E501] line t= oo long (113 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:82: [E501] line t= oo long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:83: [E501] line t= oo long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:111: [E501] line = too long (100 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:113: [E501] line = too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:114: [E501] line = too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_backup_message.py:147: [E501] line = too long (93 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:40: [E121] continu= ation line under-indented for hanging indent
./pgadmin/tools/backup/tests/test_batch_process.py:51: [E122] continu= ation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_process.py:135: [E501] line t= oo long (80 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:137: [E501] line t= oo long (83 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:138: [E122] contin= uation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_process.py:139: [E122] contin= uation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_process.py:140: [E122] contin= uation line missing indentation or outdented
./pgadmin/tools/backup/tests/test_batch_process.py:191: [E501] line t= oo long (81 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:203: [E501] line t= oo long (80 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:204: [E128] contin= uation line under-indented for visual indent
./pgadmin/tools/backup/tests/test_batch_process.py:204: [E501] line t= oo long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:205: [E128] contin= uation line under-indented for visual indent
./pgadmin/tools/backup/tests/test_batch_process.py:205: [E501] line t= oo long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_batch_process.py:216: [W391] blank = line at end of file
./pgadmin/tools/backup/tests/test_create_backup_job.py:296: [E501] li= ne too long (97 > 79 characters)
./pgadmin/tools/backup/tests/test_create_backup_job.py:317: [E303] to= o many blank lines (2)
./pgadmin/tools/backup/tests/test_create_backup_job.py:336: [E501] li= ne too long (84 > 79 characters)
./pgadmin/tools/backup/tests/test_create_backup_job.py:371: [W391] bl= ank line at end of file
2 E121 continuation line under-indented for hanging indent
5 E122 continuation line missing indentation or outdented
2 E128 continuation line under-indented for visual indent
2 E251 unexpected spaces around keyword / parameter equals
1 E303 too many blank lines (2)
24 E501 line too long (91 > 79 characters)
2 W391 blank line at end of file
38

For the feature tests,= we realized we had to update the configuration, and we did that, but we ge= t the following error attached. We spent some time trying to understand the= problem but we were not successful.


Codewise:
- We just found some One Letter Variables in the code= ...
- Looks like there is a bug report in this area of the code a= nd we do not have coverage for it:=C2=A0https://redmine.postgresql.org/i= ssues/3232
=C2=A0 Looks like in some of the unit tests we onl= y have happy path tests, maybe we should see if there are any sad paths tha= t also need coverage.

The configuration change, ma= ybe need to be updated. When we install multiple versions of postgres the b= inaries live in `/usr/lib/postgresql/{{db_version}}/bin`, which makes = us think that this configuration should live near the server configuration,= maybe? Also to maintain coherency on the naming maybe we should make it al= l lower case.
Just as an aside, you can add the gpdb configuratio= n as well in you patch.

Thanks
Victoria = & Joao

<= div class=3D"gmail_quote">
On Wed, Apr 25, 2018 at 5:20 AM = Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex">
Hi,

Pleas= e find the attached patch which covers test cases for the backup module (RM= #3206).

1. Unit test cases
2. End to en= d regression test cases=C2=A0
3. Feature test cases
Thanks,
Khushboo




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

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



--000000000000d87132056d92933b-- --000000000000d87135056d92933d Content-Type: text/x-patch; charset="US-ASCII"; name="RM_3206_ver2.patch" Content-Disposition: attachment; filename="RM_3206_ver2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jhvv5bst0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfdXRpbGl0aWVzX2JhY2t1 cF9yZXN0b3JlX3Rlc3QucHkgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGll c19iYWNrdXBfcmVzdG9yZV90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmI0YzFiYjIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3Rz L3BnX3V0aWxpdGllc19iYWNrdXBfcmVzdG9yZV90ZXN0LnB5CkBAIC0wLDAgKzEsMTQwIEBACisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisj IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgdGltZQorZnJvbSBzZWxlbml1bS53ZWJk cml2ZXIuc3VwcG9ydC51aSBpbXBvcnQgV2ViRHJpdmVyV2FpdAorZnJvbSBzZWxlbml1bS53ZWJk cml2ZXIuY29tbW9uLmJ5IGltcG9ydCBCeQorZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9y dCBpbXBvcnQgZXhwZWN0ZWRfY29uZGl0aW9ucyBhcyBFQworZnJvbSByZWdyZXNzaW9uLmZlYXR1 cmVfdXRpbHMuYmFzZV9mZWF0dXJlX3Rlc3QgaW1wb3J0IEJhc2VGZWF0dXJlVGVzdAorZnJvbSBy ZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzCisKK2ltcG9ydCBj b25maWcKKworCitjbGFzcyBQR1V0aWxpdGllc0JhY2t1cEZlYXR1cmVUZXN0KEJhc2VGZWF0dXJl VGVzdCk6CisgICAgIiIiIFRoaXMgY2xhc3MgdGVzdCBQRyB1dGlsaXRpZXMgLSBCYWNrdXAgYW5k IFJlc3RvcmUgdGVzdCBzY2VuYXJpb3MgIiIiCisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAg ICgiVGVzdCBmb3IgUEcgdXRpbGl0aWVzIC0gQmFja3VwIGFuZCBSZXN0b3JlIiwgZGljdCgpKQor ICAgIF0KKworICAgIGRlZiBiZWZvcmUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydk ZWZhdWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0 KAorICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0 aGUgc2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsn bmFtZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBjb25uZWN0 aW9uID0gdGVzdF91dGlscy5nZXRfZGJfY29ubmVjdGlvbigKKyAgICAgICAgICAgIHNlbGYuc2Vy dmVyWydkYiddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAg ICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVy Wydob3N0J10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsncG9ydCddLAorICAgICAgICAgICAg c2VsZi5zZXJ2ZXJbJ3NzbG1vZGUnXQorICAgICAgICApCisgICAgICAgIHRlc3RfdXRpbHMuZHJv cF9kYXRhYmFzZShjb25uZWN0aW9uLCAicGdfdXRpbGl0eV90ZXN0X2RiIikKKworICAgICAgICB0 ZXN0X3V0aWxzLmNyZWF0ZV9kYXRhYmFzZShzZWxmLnNlcnZlciwgInBnX3V0aWxpdHlfdGVzdF9k YiIpCisgICAgICAgIHNlbGYucGFnZS5hZGRfc2VydmVyKHNlbGYuc2VydmVyKQorCisgICAgICAg IHNlbGYud2FpdCA9IFdlYkRyaXZlcldhaXQoc2VsZi5wYWdlLmRyaXZlciwgMjApCisKKyAgICBk ZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3NlcnZlcihz ZWxmLnNlcnZlclsnbmFtZSddKQorICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9p dGVtKCdEYXRhYmFzZXMnKQorICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9pdGVt KCdwZ191dGlsaXR5X3Rlc3RfZGInKQorICAgICAgICBzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRf YnlfbGlua190ZXh0KCJUb29scyIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9i eV9wYXJ0aWFsX2xpbmtfdGV4dCgiQmFja3VwLi4uIikuY2xpY2soKQorCisgICAgICAgIHNlbGYu d2FpdC51bnRpbChFQy5wcmVzZW5jZV9vZl9lbGVtZW50X2xvY2F0ZWQoCisgICAgICAgICAgICAo CisgICAgICAgICAgICAgICAgQnkuWFBBVEgsCisgICAgICAgICAgICAgICAgIi8vbGFiZWxbY29u dGFpbnMoc3RyaW5nKCksICdGaWxlbmFtZScpXSIKKyAgICAgICAgICAgICkKKyAgICAgICAgKSkK KworICAgICAgICBzZWxmLndhaXQudW50aWwoRUMuZWxlbWVudF90b19iZV9jbGlja2FibGUoCisg ICAgICAgICAgICAoQnkuQ1NTX1NFTEVDVE9SLCAiLmJyb3dzZV9maWxlX2lucHV0IikpKS5jbGlj aygpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxfaW5wdXRfYnlfZmllbGRfbmFtZSgiZmlsZSIs ICJ0ZXN0X2JhY2t1cCIpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vYnV0 dG9uW2NvbnRhaW5zKEBjbGFzcywnZmEtc2F2ZScpICIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImFuZCBjb250YWlucyguLCdCYWNrdXAnKV0iKS5jbGljaygpCisKKyAgICAgICAg c2VsZi5wYWdlLndhaXRfZm9yX2VsZW1lbnRfdG9fZGlzYXBwZWFyKAorICAgICAgICAgICAgbGFt YmRhIGRyaXZlcjogZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3IoIi5hanMtbW9k YWwiKQorICAgICAgICApCisKKyAgICAgICAgc3RhdHVzID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBh dGgoIi8vZGl2W2NvbnRhaW5zKEBjbGFzcywiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICInYmctc3VjY2VzcycpXSIpLnRleHQKKworICAgICAgICBzZWxmLmFzc2Vy dEVxdWFscyhzdGF0dXMsICJTdWNjZXNzZnVsbHkgY29tcGxldGVkLiIpCisgICAgICAgIHNlbGYu cGFnZS5maW5kX2J5X3hwYXRoKCIvL3NwYW5bY29udGFpbnMoc3RyaW5nKCksICIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIidDbGljayBoZXJlIGZvciBkZXRhaWxzLicpXSIpLmNs aWNrKCkKKyAgICAgICAgY29tbWFuZCA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL3BbY29u dGFpbnMoQGNsYXNzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiJ2JnLWRldGFpbGVkLWRlc2MnKV0iKS50ZXh0CisKKyAgICAgICAgc2VsZi5hc3NlcnRJbihz ZWxmLnNlcnZlclsnbmFtZSddLCBzdHIoY29tbWFuZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4o ImZyb20gZGF0YWJhc2UgJ3BnX3V0aWxpdHlfdGVzdF9kYiciLCBzdHIoY29tbWFuZCkpCisgICAg ICAgIHNlbGYuYXNzZXJ0SW4oInRlc3RfYmFja3VwIiwgc3RyKGNvbW1hbmQpKQorICAgICAgICBz ZWxmLmFzc2VydEluKCJwZ19kdW1wIiwgc3RyKGNvbW1hbmQpKQorCisgICAgICAgIHNlbGYucGFn ZS5maW5kX2J5X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3MsJ3djRmxvYXRpbmdGb2N1cycp IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXS8vZGl2W2NvbnRhaW5zKEBjbGFz cywnZmEtY2xvc2UnKV0iKS5jbGljaygpCisKKyAgICAgICAgc2VsZi5kcml2ZXIuZmluZF9lbGVt ZW50X2J5X2xpbmtfdGV4dCgiVG9vbHMiKS5jbGljaygpCisgICAgICAgIHNlbGYucGFnZS5maW5k X2J5X3BhcnRpYWxfbGlua190ZXh0KCJSZXN0b3JlLi4uIikuY2xpY2soKQorCisgICAgICAgIHNl bGYud2FpdC51bnRpbChFQy5wcmVzZW5jZV9vZl9lbGVtZW50X2xvY2F0ZWQoCisgICAgICAgICAg ICAoCisgICAgICAgICAgICAgICAgQnkuWFBBVEgsCisgICAgICAgICAgICAgICAgIi8vbGFiZWxb Y29udGFpbnMoc3RyaW5nKCksICdGaWxlbmFtZScpXSIKKyAgICAgICAgICAgICkKKyAgICAgICAg KSkKKworICAgICAgICBzZWxmLndhaXQudW50aWwoRUMuZWxlbWVudF90b19iZV9jbGlja2FibGUo CisgICAgICAgICAgICAoQnkuQ1NTX1NFTEVDVE9SLCAiLmJyb3dzZV9maWxlX2lucHV0IikpKS5j bGljaygpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbGxfaW5wdXRfYnlfZmllbGRfbmFtZSgiZmls ZSIsICJ0ZXN0X2JhY2t1cCIpCisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL2J1 dHRvbltjb250YWlucyhAY2xhc3MsJ2ZhLXVwbG9hZCcpIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiIGFuZCBjb250YWlucyguLCdSZXN0b3JlJyldIikuY2xpY2soKQorCisgICAg ICAgIHNlbGYucGFnZS53YWl0X2Zvcl9lbGVtZW50X3RvX2Rpc2FwcGVhcigKKyAgICAgICAgICAg IGxhbWJkYSBkcml2ZXI6IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfY3NzX3NlbGVjdG9yKCIuYWpz LW1vZGFsIikKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cyA9IHNlbGYucGFnZS5maW5kX2J5 X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3MsIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiJ2JnLXN1Y2Nlc3MnKV0iKS50ZXh0CisKKyAgICAgICAgc2VsZi5h c3NlcnRFcXVhbHMoc3RhdHVzLCAiU3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZC4iKQorICAgICAgICBz ZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9zcGFuW2NvbnRhaW5zKHN0cmluZygpLCIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAnQ2xpY2sgaGVyZSBmb3IgZGV0YWlscy4nKV0i KS5jbGljaygpCisgICAgICAgIGNvbW1hbmQgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9w W2NvbnRhaW5zKEBjbGFzcywiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiICdiZy1kZXRhaWxlZC1kZXNjJyldIikudGV4dAorCisgICAgICAgIHNlbGYuYXNzZXJ0 SW4oc2VsZi5zZXJ2ZXJbJ25hbWUnXSwgc3RyKGNvbW1hbmQpKQorICAgICAgICBzZWxmLmFzc2Vy dEluKCJ0ZXN0X2JhY2t1cCIsIHN0cihjb21tYW5kKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigi cGdfcmVzdG9yZSIsIHN0cihjb21tYW5kKSkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94 cGF0aCgiLy9kaXZbY29udGFpbnMoQGNsYXNzLCd3Y0Zsb2F0aW5nRm9jdXMnKV0iCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIvL2Rpdltjb250YWlucyhAY2xhc3MsJ2ZhLWNsb3Nl JyldIikuY2xpY2soKQorCisgICAgZGVmIGFmdGVyKHNlbGYpOgorICAgICAgICBzZWxmLnBhZ2Uu cmVtb3ZlX3NlcnZlcihzZWxmLnNlcnZlcikKKyAgICAgICAgY29ubmVjdGlvbiA9IHRlc3RfdXRp bHMuZ2V0X2RiX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGInXSwKKyAg ICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAg ICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydz c2xtb2RlJ10KKyAgICAgICAgKQorICAgICAgICB0ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29u bmVjdGlvbiwgInBnX3V0aWxpdHlfdGVzdF9kYiIpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9m ZWF0dXJlX3Rlc3RzL3BnX3V0aWxpdGllc19tYWludGVuYW5jZV90ZXN0LnB5IGIvd2ViL3BnYWRt aW4vZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRpZXNfbWFpbnRlbmFuY2VfdGVzdC5weQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODA2MjY4Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRpZXNfbWFpbnRlbmFuY2VfdGVzdC5w eQpAQCAtMCwwICsxLDExMiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgXypfICBjb2Rp bmc6IHV0Zi04IF8qXworaW1wb3J0IHRpbWUKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBv cnQudWkgaW1wb3J0IFdlYkRyaXZlcldhaXQKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1v bi5ieSBpbXBvcnQgQnkKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQgaW1wb3J0IGV4 cGVjdGVkX2NvbmRpdGlvbnMgYXMgRUMKK2Zyb20gcmVncmVzc2lvbi5mZWF0dXJlX3V0aWxzLmJh c2VfZmVhdHVyZV90ZXN0IGltcG9ydCBCYXNlRmVhdHVyZVRlc3QKK2Zyb20gcmVncmVzc2lvbi5w eXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscworCisKK2NsYXNzIFBHVXRpbGl0aWVz TWFpbnRlbmFuY2VGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgorICAgICIiIiBUaGlzIGNs YXNzIHRlc3QgUEcgdXRpbGl0aWVzIHRlc3Qgc2NlbmFyaW9zICIiIgorCisgICAgc2NlbmFyaW9z ID0gWworICAgICAgICAoIlRlc3QgZm9yIFBHIG1haW50ZW5hbmNlOiBkYXRhYmFzZSBwZ19tYWlu dGVuYW5jZSIsIGRpY3QoCisgICAgICAgICAgICBkYXRhYmFzZV9uYW1lPSdwZ19tYWludGVuYW5j ZScsCisgICAgICAgICAgICB0YWJsZV9uYW1lPSdwZ19tYWludGVuYW5jZV90YWJsZScsCisgICAg ICAgICAgICB0ZXN0X2xldmVsPSdkYXRhYmFzZScKKyAgICAgICAgKSksCisgICAgICAgICgiVGVz dCBmb3IgUEcgbWFpbnRlbmFuY2U6IGRhdGFiYXNlIiwgZGljdCgKKyAgICAgICAgICAgIGRhdGFi YXNlX25hbWU9J3BnX21haW50ZW5hbmNlJywKKyAgICAgICAgICAgIHRhYmxlX25hbWU9J3BnX21h aW50ZW5hbmNlX3RhYmxlJywKKyAgICAgICAgICAgIHRlc3RfbGV2ZWw9J3RhYmxlJworICAgICAg ICApKSwKKyAgICBdCisKKyAgICBkZWYgYmVmb3JlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNl cnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5z a2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNl dCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z ZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAg Y29ubmVjdGlvbiA9IHRlc3RfdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICBz ZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2VybmFtZSddLAor ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICBzZWxm LnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSwKKyAgICAg ICAgICAgIHNlbGYuc2VydmVyWydzc2xtb2RlJ10KKyAgICAgICAgKQorICAgICAgICB0ZXN0X3V0 aWxzLmNyZWF0ZV9kYXRhYmFzZShzZWxmLnNlcnZlciwgc2VsZi5kYXRhYmFzZV9uYW1lKQorICAg ICAgICB0ZXN0X3V0aWxzLmNyZWF0ZV90YWJsZShzZWxmLnNlcnZlciwgc2VsZi5kYXRhYmFzZV9u YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlX25hbWUpCisg ICAgICAgIHNlbGYucGFnZS5hZGRfc2VydmVyKHNlbGYuc2VydmVyKQorICAgICAgICBzZWxmLndh aXQgPSBXZWJEcml2ZXJXYWl0KHNlbGYucGFnZS5kcml2ZXIsIDIwKQorCisgICAgZGVmIHJ1blRl c3Qoc2VsZik6CisgICAgICAgIHNlbGYuX29wZW5fbWFpbnRlbmFuY2VfZGlhbG9ndWUoKQorICAg ICAgICAjIHRpbWUuc2xlZXAKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vYnV0 dG9uW2NvbnRhaW5zKEBjbGFzcywnZmEtc2F2ZScpIGFuZCIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIiBjb250YWlucyguLCdPSycpXSIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5w YWdlLndhaXRfZm9yX2VsZW1lbnRfdG9fZGlzYXBwZWFyKAorICAgICAgICAgICAgbGFtYmRhIGRy aXZlcjogZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3IoIi5hanMtbW9kYWwiKQor ICAgICAgICApCisgICAgICAgIHNlbGYuX3ZlcmlmeV9jb21tYW5kKCkKKworICAgIGRlZiBfb3Bl bl9tYWludGVuYW5jZV9kaWFsb2d1ZShzZWxmKToKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9v cGVuX3NlcnZlcihzZWxmLnNlcnZlclsnbmFtZSddKQorICAgICAgICBzZWxmLnBhZ2UudG9nZ2xl X29wZW5fdHJlZV9pdGVtKCdEYXRhYmFzZXMnKQorICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29w ZW5fdHJlZV9pdGVtKHNlbGYuZGF0YWJhc2VfbmFtZSkKKyAgICAgICAgaWYgc2VsZi50ZXN0X2xl dmVsID09ICd0YWJsZSc6CisgICAgICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9p dGVtKCdTY2hlbWFzJykKKyAgICAgICAgICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl90cmVlX2l0 ZW0oJ3B1YmxpYycpCisgICAgICAgICAgICBzZWxmLnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9pdGVt KCdUYWJsZXMnKQorICAgICAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoCisgICAgICAg ICAgICAgICAgIi8vKltAaWQ9J3RyZWUnXS8vIgorICAgICAgICAgICAgICAgICIqWy49JyIgKyBz ZWxmLnRhYmxlX25hbWUgKyAiJ10vLi4vKltAY2xhc3M9J2FjaVRyZWVJdGVtJyIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl0iKS5jbGljaygpCisgICAgICAg IHNlbGYuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9saW5rX3RleHQoIlRvb2xzIikuY2xpY2soKQor ICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgiTWFpbnRlbmFuY2Uu Li4iKS5jbGljaygpCisgICAgICAgIHRpbWUuc2xlZXAoMC41KQorCisgICAgZGVmIF92ZXJpZnlf Y29tbWFuZChzZWxmKToKKyAgICAgICAgc3RhdHVzID0gc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgo Ii8vZGl2W2NvbnRhaW5zKEBjbGFzcywiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICInYmctc3VjY2VzcycpXSIpLnRleHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh bHMoc3RhdHVzLCAiU3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZC4iKQorICAgICAgICBzZWxmLnBhZ2Uu ZmluZF9ieV94cGF0aCgiLy9zcGFuW2NvbnRhaW5zKHN0cmluZygpLCIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIiAnQ2xpY2sgaGVyZSBmb3IgZGV0YWlscy4nKV0iKS5jbGljaygp CisgICAgICAgIGNvbW1hbmQgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9wW2NvbnRhaW5z KEBjbGFzcywiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICdi Zy1kZXRhaWxlZC1kZXNjJyldIikudGV4dAorICAgICAgICBpZiBzZWxmLnRlc3RfbGV2ZWwgPT0g J2RhdGFiYXNlJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbW1hbmQsICJWQUNV VU0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihWRVJCT1NFKVxu UnVubmluZyBRdWVyeToiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi XG5WQUNVVU0gVkVSQk9TRTsiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbHMoY29tbWFuZCwgIlZBQ1VVTSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiKFZFUkJPU0UpXG5SdW5uaW5nIFF1ZXJ5OiIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJcblZBQ1VVTSBWRVJCT1NFIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIiBwdWJsaWMuIiArIHNlbGYudGFibGVfbmFtZSArICI7 IikKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9kaXZbY29udGFpbnMoQGNs YXNzLCd3Y0Zsb2F0aW5nRm9jdXMnKV0vLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImRpdltjb250YWlucyhAY2xhc3MsJ2ZhLWNsb3NlJyldIikuY2xpY2soKQorCisgICAgZGVm IGFmdGVyKHNlbGYpOgorICAgICAgICBzZWxmLnBhZ2UucmVtb3ZlX3NlcnZlcihzZWxmLnNlcnZl cikKKyAgICAgICAgY29ubmVjdGlvbiA9IHRlc3RfdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24oCisg ICAgICAgICAgICBzZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1 c2VybmFtZSddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAg ICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3Bv cnQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydzc2xtb2RlJ10KKyAgICAgICAgKQorICAg ICAgICB0ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgc2VsZi5kYXRhYmFzZV9u YW1lKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL19faW5pdF9fLnB5IGIv d2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL19faW5pdF9fLnB5CmluZGV4IDEyNWRiODAuLjA1MTMz NjUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9fX2luaXRfXy5weQorKysg Yi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvX19pbml0X18ucHkKQEAgLTEwOSw4ICsxMDksNyBA QCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAgICAgICAgICAgICBlbHNlOgog ICAgICAgICAgICAgICAgIHNlbGYuY21kICs9IGNtZEFyZyhhcmcpCiAKLSAgICBAcHJvcGVydHkK LSAgICBkZWYgbWVzc2FnZShzZWxmKToKKyAgICBkZWYgZ2V0X3NlcnZlcl9kZXRhaWxzKHNlbGYp OgogICAgICAgICAjIEZldGNoIHRoZSBzZXJ2ZXIgZGV0YWlscyBsaWtlIGhvc3RuYW1lLCBwb3J0 LCByb2xlcyBldGMKICAgICAgICAgcyA9IFNlcnZlci5xdWVyeS5maWx0ZXJfYnkoCiAgICAgICAg ICAgICBpZD1zZWxmLnNpZCwgdXNlcl9pZD1jdXJyZW50X3VzZXIuaWQKQEAgLTEyMywxMyArMTIy LDE5IEBAIGNsYXNzIEJhY2t1cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgaG9zdCA9 IG1hbmFnZXIubG9jYWxfYmluZF9ob3N0IGlmIG1hbmFnZXIudXNlX3NzaF90dW5uZWwgZWxzZSBz Lmhvc3QKICAgICAgICAgcG9ydCA9IG1hbmFnZXIubG9jYWxfYmluZF9wb3J0IGlmIG1hbmFnZXIu dXNlX3NzaF90dW5uZWwgZWxzZSBzLnBvcnQKIAorICAgICAgICByZXR1cm4gcy5uYW1lLCBob3N0 LCBwb3J0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWVzc2FnZShzZWxmKToKKyAgICAgICAg bmFtZSwgaG9zdCwgcG9ydCA9IHNlbGYuZ2V0X3NlcnZlcl9kZXRhaWxzKCkKKwogICAgICAgICBp ZiBzZWxmLmJhY2t1cF90eXBlID09IEJBQ0tVUC5PQkpFQ1Q6CiAgICAgICAgICAgICByZXR1cm4g XygKICAgICAgICAgICAgICAgICAiQmFja2luZyB1cCBhbiBvYmplY3Qgb24gdGhlIHNlcnZlciAn ezB9JyAiCiAgICAgICAgICAgICAgICAgImZyb20gZGF0YWJhc2UgJ3sxfScuLi4iCiAgICAgICAg ICAgICApLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9ybWF0KAot ICAgICAgICAgICAgICAgICAgICBzLm5hbWUsIGhvc3QsIHBvcnQKKyAgICAgICAgICAgICAgICAg ICAgbmFtZSwgaG9zdCwgcG9ydAogICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAg c2VsZi5kYXRhYmFzZQogICAgICAgICAgICAgKQpAQCAtMTM3LDEzICsxNDIsMTMgQEAgY2xhc3Mg QmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgcmV0dXJuIF8oIkJhY2tp bmcgdXAgdGhlIGdsb2JhbCBvYmplY3RzIG9uICIKICAgICAgICAgICAgICAgICAgICAgICJ0aGUg c2VydmVyICd7MH0nLi4uIikuZm9ybWF0KAogICAgICAgICAgICAgICAgICJ7MH0gKHsxfTp7Mn0p Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHMubmFtZSwgaG9zdCwgcG9ydAorICAgICAg ICAgICAgICAgICAgICBuYW1lLCBob3N0LCBwb3J0CiAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgKQogICAgICAgICBlbGlmIHNlbGYuYmFja3VwX3R5cGUgPT0gQkFDS1VQLlNFUlZFUjoK ICAgICAgICAgICAgIHJldHVybiBfKCJCYWNraW5nIHVwIHRoZSBzZXJ2ZXIgJ3swfScuLi4iKS5m b3JtYXQoCiAgICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdCgKLSAgICAgICAg ICAgICAgICAgICAgcy5uYW1lLCBob3N0LCBwb3J0CisgICAgICAgICAgICAgICAgICAgIG5hbWUs IGhvc3QsIHBvcnQKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICApCiAgICAgICAgIGVs c2U6CkBAIC0xNTEsMTcgKzE1Niw3IEBAIGNsYXNzIEJhY2t1cE1lc3NhZ2UoSVByb2Nlc3NEZXNj KToKICAgICAgICAgICAgIHJldHVybiAiVW5rbm93biBCYWNrdXAiCiAKICAgICBkZWYgZGV0YWls cyhzZWxmLCBjbWQsIGFyZ3MpOgotICAgICAgICAjIEZldGNoIHRoZSBzZXJ2ZXIgZGV0YWlscyBs aWtlIGhvc3RuYW1lLCBwb3J0LCByb2xlcyBldGMKLSAgICAgICAgcyA9IFNlcnZlci5xdWVyeS5m aWx0ZXJfYnkoCi0gICAgICAgICAgICBpZD1zZWxmLnNpZCwgdXNlcl9pZD1jdXJyZW50X3VzZXIu aWQKLSAgICAgICAgKS5maXJzdCgpCi0KLSAgICAgICAgZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZl ciBpbXBvcnQgZ2V0X2RyaXZlcgotICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFV TFRfRFJJVkVSKQotICAgICAgICBtYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihz ZWxmLnNpZCkKLQotICAgICAgICBob3N0ID0gbWFuYWdlci5sb2NhbF9iaW5kX2hvc3QgaWYgbWFu YWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMuaG9zdAotICAgICAgICBwb3J0ID0gbWFuYWdlci5s b2NhbF9iaW5kX3BvcnQgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMucG9ydAorICAg ICAgICBuYW1lLCBob3N0LCBwb3J0ID0gc2VsZi5nZXRfc2VydmVyX2RldGFpbHMoKQogCiAgICAg ICAgIHJlcyA9ICc8ZGl2IGNsYXNzPSJoNSI+JwogCkBAIC0xNzEsNyArMTY2LDcgQEAgY2xhc3Mg QmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgICAgICJmcm9tIGRhdGFi YXNlICd7MX0nLi4uIgogICAgICAgICAgICAgKS5mb3JtYXQoCiAgICAgICAgICAgICAgICAgInsw fSAoezF9OnsyfSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihz Lm5hbWUpLAorICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKG5hbWUpLAogICAgICAg ICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKGhvc3QpLAogICAgICAgICAgICAgICAgICAgICBo dG1sLnNhZmVfc3RyKHBvcnQpLAogICAgICAgICAgICAgICAgICksCkBAIC0xODEsNyArMTc2LDcg QEAgY2xhc3MgQmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgcmVzICs9 IF8oIkJhY2tpbmcgdXAgdGhlIGdsb2JhbCBvYmplY3RzIG9uICIKICAgICAgICAgICAgICAgICAg ICAgICJ0aGUgc2VydmVyICd7MH0nLi4uIikuZm9ybWF0KAogICAgICAgICAgICAgICAgICJ7MH0g KHsxfTp7Mn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIocy5u YW1lKSwKKyAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihuYW1lKSwKICAgICAgICAg ICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihob3N0KSwKICAgICAgICAgICAgICAgICAgICAgaHRt bC5zYWZlX3N0cihwb3J0KQogICAgICAgICAgICAgICAgICkKQEAgLTE4OSw3ICsxODQsNyBAQCBj bGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAgICAgICAgIGVsaWYgc2VsZi5iYWNr dXBfdHlwZSA9PSBCQUNLVVAuU0VSVkVSOgogICAgICAgICAgICAgcmVzICs9IF8oIkJhY2tpbmcg dXAgdGhlIHNlcnZlciAnezB9Jy4uLiIpLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7 MX06ezJ9KSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKHMubmFt ZSksCisgICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIobmFtZSksCiAgICAgICAgICAg ICAgICAgICAgIGh0bWwuc2FmZV9zdHIoaG9zdCksCiAgICAgICAgICAgICAgICAgICAgIGh0bWwu c2FmZV9zdHIocG9ydCkKICAgICAgICAgICAgICAgICApCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi90b29scy9iYWNrdXAvdGVzdHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNr dXAvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3Rf YmFja3VwX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3Vw L3Rlc3RzL3Rlc3RfYmFja3VwX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNzZhM2IKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfY3JlYXRlX2pvYl91bml0X3Rlc3Qu cHkKQEAgLTAsMCArMSw0NjMgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVy IHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKworaW1wb3J0 IHN5cworaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4ubWlzYy5iZ3By b2Nlc3MucHJvY2Vzc2VzIGltcG9ydCBCYXRjaFByb2Nlc3MKK2Zyb20gcGdhZG1pbi50b29scy5i YWNrdXAgaW1wb3J0IEJhY2t1cE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBv cnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVf ZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxz IGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBzZXJ2 ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFzZV91dGlscworCisKK2lm IHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaCwg TWFnaWNNb2NrCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gsIE1h Z2ljTW9jaworCisKK2NsYXNzIEJhY2t1cENyZWF0ZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3Ip OgorICAgICIiIlRlc3QgdGhlIEJhY2t1cENyZWF0ZUpvYiBjbGFzcyIiIgorICAgIHNjZW5hcmlv cyA9IFsKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBvYmplY3Qgd2l0aCBkZWZhdWx0IG9wdGlvbnMn LAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3Nl cnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9z dD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNl cm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAg ICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwK KyAgICAgICAgICAgICAgICAgYmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1b XSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFz ZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAv am9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJi b3NlJywgJy0tZm9ybWF0PWMnLCAnLS1ibG9icyddLAorICAgICAgICAgICAgIG5vdF9leHBlY3Rl ZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVd CisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0 aW9uIHNlY3Rpb25zIHRvIGFsbCBkYXRhJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAg Y2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAg ICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0 NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAg IGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1 cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0 X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAg ICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisg ICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBw cmVfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBwb3N0X2RhdGE9VHJ1ZQorICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAg ICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZvcm1hdD1jJywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tc2VjdGlvbj1wcmUtZGF0YScsICctLXNl Y3Rpb249ZGF0YScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXNlY3Rpb249 cG9zdC1kYXRhJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAg ICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAg ICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gb25seV9kYXRhJywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXIn LAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAg ICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1l PSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAg ICAgZm9ybWF0PSdwbGFpbicsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAg ICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvbmx5 X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9zY2hlbWE9RmFsc2UKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAg ICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9cCcsICct LWRhdGEtb25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAg ICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAg ICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIG9ubHlfZGF0YScsCisg ICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVy JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSds b2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFt ZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAg ICAgIGZvcm1hdD0ncGxhaW4nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAg ICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAg ICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb25s eV9kYXRhPVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPVRydWUsCisgICAgICAg ICAgICAgICAgIGRuc19vd25lcj1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1 cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9v cHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PXAnLCAnLS1kYXRhLW9ubHknXSwKKyAgICAgICAg ICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9WyctLXNjaGVtYS1vbmx5JywgJy0tbm8tb3duZXIn XSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICAp KSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIG9ubHlfc2No ZW1hJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1 cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAg IGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jlcycs CisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAg IHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFt cz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAg ICAgICAgICAgICAgZm9ybWF0PSdwbGFpbicsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1 ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVz PVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAg ICAgICBvbmx5X2RhdGE9RmFsc2UsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPVRydWUK KyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVj dCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3Jt YXQ9cCcsICctLXNjaGVtYS1vbmx5J10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9v cHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAg ICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBm b3JtYXQgcGxhaW4gYW5kIGRuc19vd25lcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01 NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAg ICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNr dXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVz dF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0ncGxhaW4nLAorICAgICAg ICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisg ICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgZG5zX293bmVyPVRydWUKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9cCcsICctLW5vLW93 bmVyJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAo J1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBEbyBub3Qgc2F2ZSBwcml2aWxl Z2UsJworICAgICAgICAgJyB0YWJsZXNwYWNlLCB1bmxvZ2dlZCB0YWJsZSBkYXRhJywKKyAgICAg ICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAg ICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAor ICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2Fs aG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAg ICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdw b3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAg ICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAg Zm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAg ICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAg ICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgZG5zX3By aXZpbGVnZT1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNfdW5sb2dnZWRfdGJsX2RhdGE9VHJ1 ZSwKKyAgICAgICAgICAgICAgICAgZG5zX3RhYmxlc3BhY2U9VHJ1ZQorICAgICAgICAgICAgICks CisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAg ICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tbm8tcHJpdmlsZWdlcycsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICctLW5vLXRhYmxlc3BhY2VzJywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJy0tbm8tdW5sb2dnZWQtdGFibGUtZGF0YSddLAorICAgICAgICAgICAgIG5v dF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9 WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0 IHdpdGggb3B0aW9uIC0gYWxsIHF1ZXJpZXMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAg ICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAg ICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9 NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAg ICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFj a3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAg ICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rl c3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3BsYWluJywKKyAgICAg ICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAor ICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdw b3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZV9jb2x1bW5faW5zZXJ0cz1UcnVlLAorICAg ICAgICAgICAgICAgICBpbmNsdWRlX2NyZWF0ZV9kYXRhYmFzZT1UcnVlLAorICAgICAgICAgICAg ICAgICB1c2VfaW5zZXJ0X2NvbW1hbmRzPVRydWUsCisgICAgICAgICAgICAgICAgIGluY2x1ZGVf ZHJvcF9kYXRhYmFzZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9i YWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsn LS1jcmVhdGUnLCAnLS1jbGVhbicsICctLWluc2VydHMnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnLS1jb2x1bW4taW5zZXJ0cyddLAorICAgICAgICAgICAgIG5vdF9leHBlY3Rl ZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVd CisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0 aW9uIC0gYWxsIHF1ZXJpZXMgYW5kIGZvcm1hdCBjdXN0b20nLAorICAgICAgICAgZGljdCgKKyAg ICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisg ICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAg ICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAg ICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9 J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAg ICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAg IGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3Rv bScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2No ZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBk YXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2VfY29sdW1uX2luc2VydHM9 VHJ1ZSwKKyAgICAgICAgICAgICAgICAgaW5jbHVkZV9jcmVhdGVfZGF0YWJhc2U9VHJ1ZSwKKyAg ICAgICAgICAgICAgICAgdXNlX2luc2VydF9jb21tYW5kcz1UcnVlLAorICAgICAgICAgICAgICAg ICBpbmNsdWRlX2Ryb3BfZGF0YWJhc2U9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9j bWRfb3B0cz1bJy0taW5zZXJ0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct LWNvbHVtbi1pbnNlcnRzJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVsn LS1jcmVhdGUnLCAnLS1jbGVhbiddLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1b MCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qg d2l0aCBvcHRpb24gLSBtaXNjZWxsYW5lb3VzJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAg ICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAg ICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0 PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAg ICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2Jh Y2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0 ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAg ICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10s CisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9 J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgZGlzYWJsZV9xdW90aW5nPVRydWUsCisgICAg ICAgICAgICAgICAgIHVzZV9zZXRfc2Vzc2lvbl9hdXRoPVRydWUsCisgICAgICAgICAgICAgICAg IHdpdGhfb2lkcz1UcnVlLAorICAgICAgICAgICAgICAgICBkcW91dGU9VHJ1ZQorICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAg ICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLXF1b3RlLWFsbC1pZGVu dGlmaWVycycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZG9s bGFyLXF1b3RpbmcnLCAnLS1vaWRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jy0tdXNlLXNldC1zZXNzaW9uLWF1dGhvcml6YXRpb24nXSwKKyAgICAgICAgICAgICBub3RfZXhw ZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBO b25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRo IGZvcm1hdCB0YXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9 ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rl c3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAg ICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAg ICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUn LAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3RhcicsCisgICAgICAgICAgICAgICAgIHZlcmJv c2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAg dGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJs PScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0 cz1bJy0tdmVyYm9zZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWJsb2Jz JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZm9ybWF0PXQnXSwKKyAgICAg ICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRf ZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAg dGhlIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVz dF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAg ICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9z dGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAg ICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfc2VydmVy X2ZpbGUnLAorICAgICAgICAgICAgICAgICBkcW91dGU9RmFsc2UsCisgICAgICAgICAgICAgICAg IHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdHlwZT0nc2VydmVyJworICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0nLAorICAgICAgICAgICAg IGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJ10sCisgICAgICAgICAgICAgbm90X2V4cGVj dGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9u ZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIGdsb2JhbHMnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisg ICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxo b3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2dsb2JhbF9maWxlJywKKyAgICAgICAgICAg ICAgICAgZHFvdXRlPUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAg ICAgICAgICAgICAgIHR5cGU9J2dsb2JhbHMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICB1cmw9Jy9iYWNrdXAvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9 WyctLXZlcmJvc2UnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisg ICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSkKKyAg ICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydkZWZh dWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAor ICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0aGUg c2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnbmFt ZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgQHBhdGNoKCdwZ2Fk bWluLnRvb2xzLmJhY2t1cC5TZXJ2ZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNr dXAuY3VycmVudF91c2VyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLkJhY2t1 cE1lc3NhZ2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuZmlsZW5hbWVfd2l0 aF9maWxlX21hbmFnZXJfcGF0aCcpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLmJhY2t1cC5C YXRjaFByb2Nlc3MnKQorICAgIEBwYXRjaCgncGdhZG1pbi51dGlscy5kcml2ZXIucHN5Y29wZzIu c2VydmVyX21hbmFnZXIuU2VydmVyTWFuYWdlci4nCisgICAgICAgICAgICdleHBvcnRfcGFzc3dv cmRfZW52JykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBleHBvcnRfcGFzc3dvcmRfZW52X21vY2ss IGJhdGNoX3Byb2Nlc3NfbW9jaywKKyAgICAgICAgICAgICAgICBmaWxlbmFtZV9tb2NrLCBiYWNr dXBfbWVzc2FnZV9tb2NrLAorICAgICAgICAgICAgICAgIGN1cnJlbnRfdXNlcl9tb2NrLCBzZXJ2 ZXJfbW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6CisgICAgICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgbmFtZSwgaG9zdCwgcG9ydCwgaWQsIHVzZXJuYW1lLAorICAgICAg ICAgICAgICAgICAgICAgICAgIG1haW50ZW5hbmNlX2RiKToKKyAgICAgICAgICAgICAgICBzZWxm Lm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAgICAg ICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgICAgICAgICBzZWxmLmlkID0gaWQKKyAg ICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUKKyAgICAgICAgICAgICAgICBz ZWxmLm1haW50ZW5hbmNlX2RiID0gbWFpbnRlbmFuY2VfZGIKKworICAgICAgICBzZWxmLmRiX25h bWUgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZl ciJdWy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1NlcnZlcihz ZWxmLmNsYXNzX3BhcmFtc1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJhc2UnXQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgbW9ja19yZXN1bHQgPSBzZXJ2ZXJf bW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAgIG1vY2tfcmVzdWx0LmZp cnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgZmlsZW5hbWVfbW9jay5yZXR1 cm5fdmFsdWUgPSBzZWxmLnBhcmFtc1snZmlsZSddCisKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19t b2NrLnNldF9lbnZfdmFyaWFibGVzID0gTWFnaWNNb2NrKAorICAgICAgICAgICAgcmV0dXJuX3Zh bHVlPVRydWUKKyAgICAgICAgKQorICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suc3RhcnQgPSBN YWdpY01vY2soCisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICApCisKKyAg ICAgICAgZXhwb3J0X3Bhc3N3b3JkX2Vudl9tb2NrLnJldHVybl92YWx1ZSA9IFRydWUKKworICAg ICAgICBzZXJ2ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwg c2VsZi5zZXJ2ZXJfaWQpCisgICAgICAgIGlmIHNlcnZlcl9yZXNwb25zZVsiaW5mbyJdID09ICJT ZXJ2ZXIgY29ubmVjdGVkLiI6CisgICAgICAgICAgICBkYl9vd25lciA9IHNlcnZlcl9yZXNwb25z ZVsnZGF0YSddWyd1c2VyJ11bJ25hbWUnXQorICAgICAgICAgICAgc2VsZi5kYXRhID0gZGF0YWJh c2VfdXRpbHMuZ2V0X2RiX2RhdGEoZGJfb3duZXIpCisgICAgICAgICAgICBzZWxmLmRiX25hbWUg PSBzZWxmLmRhdGFbJ25hbWUnXQorCisgICAgICAgIHVybCA9IHNlbGYudXJsLmZvcm1hdChzZWxm LnNlcnZlcl9pZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFja3VwIGpvYgorICAgICAgICBy ZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1zKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAg c2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcmVz cG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisg ICAgICAgIGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnam9iX2lkJ10KKworICAgICAg ICBhc3NlcnQgYmFja3VwX21lc3NhZ2VfbW9jay5jYWxsZWQKKyAgICAgICAgYXNzZXJ0IGJhdGNo X3Byb2Nlc3NfbW9jay5jYWxsZWQKKworICAgICAgICBpZiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRz OgorICAgICAgICAgICAgZm9yIG9wdCBpbiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAg ICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICAgICAgICAgIG9wdCwKKyAgICAg ICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxfYXJnc19saXN0WzBdWzFdWydh cmdzJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgIGlmIHNlbGYubm90X2V4cGVjdGVkX2Nt ZF9vcHRzOgorICAgICAgICAgICAgZm9yIG9wdCBpbiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0 czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKAorICAgICAgICAgICAgICAgICAg ICBvcHQsCisgICAgICAgICAgICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsX2FyZ3Nf bGlzdFswXVsxXVsnYXJncyddCisgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX21lc3NhZ2UucHkgYi93ZWIvcGdh ZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNrdXBfbWVzc2FnZS5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGVhY2M5Ci0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX21lc3NhZ2UucHkKQEAgLTAs MCArMSwxNDkgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCisKK2Zyb20g Zmxhc2sgaW1wb3J0IFJlc3BvbnNlCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKK2Zyb20g cGdhZG1pbi50b29scy5iYWNrdXAgaW1wb3J0IEJhY2t1cE1lc3NhZ2UsIEJBQ0tVUAorZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorCitpZiBzeXMudmVy c2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9j aworZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sK KworCitjbGFzcyBCYWNrdXBNZXNzYWdlVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIi VGVzdCB0aGUgQmFja3VwTWVzc2FnZSBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAg ICAgKCdXaGVuIEJhY2t1cCBzZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBj bGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgdHlwZT1CQUNLVVAuU0VSVkVSLAor ICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNr dXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAg ICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAg ICAgYXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAg ICAgICAgICJiYWNrdXBfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAg ICAgICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0t cG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAg ICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAg ICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0t ZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAg ICAgICBdLAorICAgICAgICAgICAgICAgICBjbWQ9Ii90ZXN0X3BhdGgvcGdfZHVtcCIKKyAgICAg ICAgICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iQmFja2luZyB1cCB0aGUgc2Vy dmVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiICd0ZXN0X2JhY2t1cF9zZXJ2ZXIgKGxv Y2FsaG9zdDo1NDQ0KScuLi4iLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPScv dGVzdF9wYXRoL3BnX2R1bXAgLS1maWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnImJhY2t1cF9maWxlIiAtLWhvc3QgImxvY2FsaG9zdCIgJworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICctLXBvcnQgIjU0NDQiIC0tdXNlcm5hbWUgInBvc3RncmVzIiAn CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQgLS1kYXRh YmFzZSAicG9zdGdyZXMiJworCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIEJhY2t1cCBn bG9iYWwnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgdHlwZT1CQUNLVVAuR0xPQkFMUywKKyAgICAgICAgICAgICAgICAg c2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAg ICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0 JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgYXJncz1bCisgICAgICAg ICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICdiYWNrdXBfZmls ZScsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAg ICdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAgICAgICAg ICAgICAgICAgICAnNTQ0NCcsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFtZScsCisg ICAgICAgICAgICAgICAgICAgICAncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICAgICAgJy0t bm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAgICAg ICAgICAgICAgICAgICAgJ3Bvc3RncmVzJworICAgICAgICAgICAgICAgICBdLAorICAgICAgICAg ICAgICAgICBjbWQ9Ii90ZXN0X3BhdGgvcGdfZHVtcCIKKyAgICAgICAgICAgICApLAorICAgICAg ICAgICAgIGV4dGVjdGVkX21zZz0iQmFja2luZyB1cCB0aGUgZ2xvYmFsIG9iamVjdHMgb24gdGhl IHNlcnZlciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdF9iYWNrdXBfc2VydmVy IChsb2NhbGhvc3Q6NTQ0NCknLi4uIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2Nt ZD0nL3Rlc3RfcGF0aC9wZ19kdW1wIC0tZmlsZSAiYmFja3VwX2ZpbGUiICcKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0ICJsb2NhbGhvc3QiJworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICcgLS1wb3J0ICI1NDQ0IiAtLXVzZXJuYW1lICJwb3N0Z3Jl cyIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkIC0t ZGF0YWJhc2UgInBvc3RncmVzIicKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNr dXAgb2JqZWN0JywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIHR5cGU9QkFDS1VQLk9CSkVDVCwKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisg ICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxo b3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgYXJncz1bCisgICAg ICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICdiYWNrdXBf ZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAgICAg ICAgICdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAgICAg ICAgICAgICAgICAgICAnNTQ0NCcsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFtZScs CisgICAgICAgICAgICAgICAgICAgICAncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICAgICAg Jy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAg ICAgICAgICAgICAgICAgICAgJ3Bvc3RncmVzJworICAgICAgICAgICAgICAgICBdLAorICAgICAg ICAgICAgICAgICBjbWQ9Ii90ZXN0X3BhdGgvcGdfZHVtcCIKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIGV4dGVjdGVkX21zZz0iQmFja2luZyB1cCBhbiBvYmplY3Qgb24gdGhlIHNlcnZl ciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdF9iYWNrdXBfc2VydmVyIChsb2Nh bGhvc3Q6NTQ0NCknIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZyb20gZGF0YWJhc2Ug J3Bvc3RncmVzJy4uLiIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9Jy90ZXN0 X3BhdGgvcGdfZHVtcCAtLWZpbGUgImJhY2t1cF9maWxlIiAnCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0taG9zdCAibG9jYWxob3N0IiAnCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0tcG9ydCAiNTQ0NCIgLS11c2VybmFtZSAicG9zdGdyZXMiICcKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCAtLWRhdGFiYXNl ICJwb3N0Z3JlcyInCisKKyAgICAgICAgICkpCisgICAgXQorCisgICAgQHBhdGNoKCdwZ2FkbWlu LnRvb2xzLmJhY2t1cC5CYWNrdXBNZXNzYWdlLmdldF9zZXJ2ZXJfZGV0YWlscycpCisgICAgZGVm IHJ1blRlc3Qoc2VsZiwgZ2V0X3NlcnZlcl9kZXRhaWxzX21vY2spOgorICAgICAgICBnZXRfc2Vy dmVyX2RldGFpbHNfbW9jay5yZXR1cm5fdmFsdWUgPSBcCisgICAgICAgICAgICBzZWxmLmNsYXNz X3BhcmFtc1snbmFtZSddLFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10s XAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXQorCisgICAgICAgIGJhY2t1 cF9vYmogPSBCYWNrdXBNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3R5 cGUnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwKKyAgICAgICAgICAg IHNlbGYuY2xhc3NfcGFyYW1zWydiZmlsZSddLAorICAgICAgICAgICAgKnNlbGYuY2xhc3NfcGFy YW1zWydhcmdzJ10sCisgICAgICAgICAgICAqKnsnZGF0YWJhc2UnOiBzZWxmLmNsYXNzX3BhcmFt c1snZGF0YWJhc2UnXX0KKyAgICAgICAgKQorCisgICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVk IG1lc3NhZ2UgcmV0dXJuZWQKKyAgICAgICAgYXNzZXJ0IGJhY2t1cF9vYmoubWVzc2FnZSA9PSBz ZWxmLmV4dGVjdGVkX21zZworCisgICAgICAgICMgQ2hlY2sgdGhlIGNvbW1hbmQKKyAgICAgICAg b2JqX2RldGFpbHMgPSBiYWNrdXBfb2JqLmRldGFpbHMoc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCdd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3Bh cmFtc1snYXJncyddKQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuZXhwZXRjZWRfZGV0YWls c19jbWQsIG9ial9kZXRhaWxzKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3Vw L3Rlc3RzL3Rlc3RfYmFja3VwX3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rl c3RzL3Rlc3RfYmFja3VwX3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjNjMGM5OGMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAv dGVzdHMvdGVzdF9iYWNrdXBfdXRpbHMucHkKQEAgLTAsMCArMSwxMTEgQEAKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKK2ltcG9ydCB0aW1lCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc2ltcGxl anNvbiBhcyBqc29uCisKKworZGVmIGNyZWF0ZV9iYWNrdXBfam9iKHRlc3RlciwgdXJsLCBwYXJh bXMpOgorICAgICMgQ3JlYXRlIHRoZSBiYWNrdXAgam9iCisgICAgcmVzcG9uc2UgPSB0ZXN0ZXIu cG9zdCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMocGFy YW1zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29u JykKKyAgICBhc3NlcnQgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwCisgICAgcmVzcG9uc2Vf ZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgam9i X2lkID0gcmVzcG9uc2VfZGF0YVsnZGF0YSddWydqb2JfaWQnXQorICAgIHJldHVybiBqb2JfaWQK KworCitkZWYgcnVuX2JhY2t1cF9qb2IodGVzdGVyLCBqb2JfaWQsIGV4cGVjdGVkX3BhcmFtcywg YXNzZXJ0SW4sIGFzc2VydE5vdEluKToKKyAgICBjbnQgPSAwCisgICAgd2hpbGUgMToKKyAgICAg ICAgaWYgY250ID4gMToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICMgQ2hlY2sgdGhlIHBy b2Nlc3MgbGlzdAorICAgICAgICByZXNwb25zZTEgPSB0ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nl c3MvP189Jy5mb3JtYXQoCisgICAgICAgICAgICByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkp CisgICAgICAgIGFzc2VydCByZXNwb25zZTEuc3RhdHVzX2NvZGUgPT0gMjAwCisgICAgICAgIHBy b2Nlc3NfbGlzdCA9IGpzb24ubG9hZHMocmVzcG9uc2UxLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQor CisgICAgICAgIGlmIGxlbihwcm9jZXNzX2xpc3QpID4gMCBhbmQgJ2V4ZWN1dGlvbl90aW1lJyBp biBwcm9jZXNzX2xpc3RbMF06CisgICAgICAgICAgICBicmVhaworICAgICAgICB0aW1lLnNsZWVw KDAuNSkKKyAgICAgICAgY250ICs9IDEKKworICAgIGFzc2VydCAnZXhlY3V0aW9uX3RpbWUnIGlu IHByb2Nlc3NfbGlzdFswXQorICAgIGFzc2VydCAnc3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXQor ICAgIGFzc2VydCAnZXhpdF9jb2RlJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAgICBhc3NlcnQgcHJv Y2Vzc19saXN0WzBdWydleGl0X2NvZGUnXSBpbiBleHBlY3RlZF9wYXJhbXNbCisgICAgICAgICdl eHBlY3RlZF9leGl0X2NvZGUnCisgICAgXQorCisgICAgaWYgZXhwZWN0ZWRfcGFyYW1zWydleHBl Y3RlZF9jbWRfb3B0cyddOgorICAgICAgICBmb3Igb3B0IGluIGV4cGVjdGVkX3BhcmFtc1snZXhw ZWN0ZWRfY21kX29wdHMnXToKKyAgICAgICAgICAgIGFzc2VydEluKG9wdCwgcHJvY2Vzc19saXN0 WzBdWydkZXRhaWxzJ10pCisgICAgaWYgZXhwZWN0ZWRfcGFyYW1zWydub3RfZXhwZWN0ZWRfY21k X29wdHMnXToKKyAgICAgICAgZm9yIG9wdCBpbiBleHBlY3RlZF9wYXJhbXNbJ25vdF9leHBlY3Rl ZF9jbWRfb3B0cyddOgorICAgICAgICAgICAgYXNzZXJ0Tm90SW4ob3B0LCBwcm9jZXNzX2xpc3Rb MF1bJ2RldGFpbHMnXSkKKworICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgZGV0YWlscworICAgIHBf ZGV0YWlscyA9IHRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0/Xz0nLmZvcm1hdCgKKyAg ICAgICAgam9iX2lkLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICApCisgICAgYXNz ZXJ0IHBfZGV0YWlscy5zdGF0dXNfY29kZSA9PSAyMDAKKyAgICBwX2RldGFpbHNfZGF0YSA9IGpz b24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgcF9kZXRhaWxz ID0gdGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfS97MX0vezJ9Lz9fPScuZm9ybWF0KAor ICAgICAgICBqb2JfaWQsIDAsIDAsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICkK KyAgICBhc3NlcnQgcF9kZXRhaWxzLnN0YXR1c19jb2RlID09IDIwMAorICAgIHBfZGV0YWlsc19k YXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICBj bnQgPSAwCisgICAgIyBSZXRyaWV2ZSB0aGUgYmFja3VwIGpvYiBwcm9jZXNzIGxvZ3MKKyAgICB3 aGlsZSAxOgorICAgICAgICBvdXQsIGVyciwgc3RhdHVzID0gZ2V0X3BhcmFtcyhwX2RldGFpbHNf ZGF0YSkKKyAgICAgICAgaWYgc3RhdHVzIG9yIGNudCA+PSAxMDoKKyAgICAgICAgICAgIGJyZWFr CisKKyAgICAgICAgcF9kZXRhaWxzID0gdGVzdGVyLmdldCgKKyAgICAgICAgICAgICcvbWlzYy9i Z3Byb2Nlc3MvezB9L3sxfS97Mn0vP189ezN9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgam9i X2lkLCBvdXQsIGVyciwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICkKKyAg ICAgICAgYXNzZXJ0IHBfZGV0YWlscy5zdGF0dXNfY29kZSA9PSAyMDAKKyAgICAgICAgcF9kZXRh aWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKwor ICAgICAgICBjbnQgKz0gMQorICAgICAgICB0aW1lLnNsZWVwKDEpCisKKyAgICAjIENoZWNrIHRo ZSBqb2IgaXMgY29tcGxldGUuCisgICAgYmFja3VwX2FjayA9IHRlc3Rlci5wdXQoJy9taXNjL2Jn cHJvY2Vzcy97MH0nLmZvcm1hdChqb2JfaWQpKQorICAgIGFzc2VydCBiYWNrdXBfYWNrLnN0YXR1 c19jb2RlID09IDIwMAorICAgIGJhY2t1cF9hY2tfcmVzID0ganNvbi5sb2FkcyhiYWNrdXBfYWNr LmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgYXNzZXJ0IGJhY2t1cF9hY2tfcmVzWydzdWNj ZXNzJ10gPT0gMQorCisKK2RlZiBnZXRfcGFyYW1zKGRhdGEpOgorICAgIG91dCA9IDAKKyAgICBv dXRfZG9uZSA9IEZhbHNlCisgICAgZXJyID0gMAorICAgIGVycl9kb25lID0gRmFsc2UKKyAgICBp ZiAnb3V0JyBpbiBkYXRhOgorICAgICAgICBvdXQgPSBkYXRhWydvdXQnXSBhbmQgZGF0YVsnb3V0 J11bJ3BvcyddCisKKyAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291dCddOgorICAgICAgICAg ICAgb3V0X2RvbmUgPSBkYXRhWydvdXQnXVsnZG9uZSddCisKKyAgICBpZiAnZXJyJyBpbiBkYXRh OgorICAgICAgICBlcnIgPSBkYXRhWydlcnInXSBhbmQgZGF0YVsnZXJyJ11bJ3BvcyddCisKKyAg ICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ2VyciddOgorICAgICAgICAgICAgZXJyX2RvbmUgPSBk YXRhWydlcnInXVsnZG9uZSddCisKKyAgICByZXR1cm4gb3V0LCBlcnIsIChvdXRfZG9uZSBhbmQg ZXJyX2RvbmUpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVz dF9iYXRjaF9wcm9jZXNzLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3Rf YmF0Y2hfcHJvY2Vzcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDc0 Y2E1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rl c3RfYmF0Y2hfcHJvY2Vzcy5weQpAQCAtMCwwICsxLDIxMiBAQAorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKK2ltcG9ydCBzeXMKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2Fk bWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzLCBJUHJvY2Vz c0Rlc2MKK2Zyb20gcGdhZG1pbi50b29scy5iYWNrdXAgaW1wb3J0IEJhY2t1cE1lc3NhZ2UsIEJB Q0tVUAorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgor ZnJvbSBwaWNrbGUgaW1wb3J0IGR1bXBzLCBsb2FkcworCitpZiBzeXMudmVyc2lvbl9pbmZvIDwg KDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1bml0 dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCisKK2NsYXNzIEJhdGNoUHJvY2Vzc1Rlc3QoQmFzZVRl c3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3QgdGhlIEJhdGNoUHJvY2VzcyBjbGFzcyIiIgorICAg IHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBzZXJ2ZXInLAorICAgICAgICAg ZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg dHlwZT1CQUNLVVAuU0VSVkVSLAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01 NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAg ICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAg ICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAg ICAgICAgICAgImJhY2t1cF9maWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAor ICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICAn LS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAg ICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIsCisgICAg ICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAn LS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiCisgICAgICAgICAg ICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0nYmFja3VwX3NlcnZlcicKKyAgICAgICAg ICAgICApCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBnbG9iYWxzJywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHR5cGU9QkFDS1VQLkdMT0JBTFMsCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAg ICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAg ICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1l PSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAg ICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAg ICAgICAgICAgICAgICAgICAiYmFja3VwX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0t aG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAg ICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAg ICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVz IiwKKyAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAg ICAgICAgICctLWRhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAg ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSdiYWNrdXAnCisgICAgICAg ICAgICAgKQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgb2JqZWN0JywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHR5cGU9QkFDS1VQLk9CSkVDVCwKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAg ICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAg IHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAg ICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9 J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAg ICAgICAgICAgICAgYXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAg ICAgICAgICAgICAgICAgICJiYWNrdXBfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1o b3N0JywKKyAgICAgICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAg ICAgICAgJy0tcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAg ICAgICAgICAgICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMi LAorICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAg ICAgICAgJy0tZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAg ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICBjbWQ9J2JhY2t1cCcKKyAgICAgICAg ICAgICApCisgICAgICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5i YWNrdXAuQmFja3VwTWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIEBwYXRjaCgncGdh ZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUG9wZW4nKQorICAgIEBwYXRjaCgncGdhZG1p bi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF9hcHAnKQorICAgIEBwYXRjaCgncGdh ZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuZGInKQorICAgIEBwYXRjaCgncGdhZG1pbi50 b29scy5iYWNrdXAuY3VycmVudF91c2VyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3By b2Nlc3MucHJvY2Vzc2VzLmN1cnJlbnRfdXNlcicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgY3Vy cmVudF91c2VyX21vY2ssIGN1cnJlbnRfdXNlciwgZGJfbW9jaywKKyAgICAgICAgICAgICAgICBj dXJyZW50X2FwcF9tb2NrLCBwb3Blbl9tb2NrLCBnZXRfc2VydmVyX2RldGFpbHNfbW9jayk6Cisg ICAgICAgIGN1cnJlbnRfdXNlci5pZCA9IDEKKyAgICAgICAgY3VycmVudF91c2VyX21vY2suaWQg PSAxCisgICAgICAgIGN1cnJlbnRfYXBwX21vY2suUEdBRE1JTl9SVU5USU1FID0gRmFsc2UKKwor ICAgICAgICBkZWYgZGJfc2Vzc2lvbl9hZGRfbW9jayhqKToKKyAgICAgICAgICAgIGNtZF9vYmog PSBsb2FkcyhqLmRlc2MpCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjbWRfb2JqLCBJ UHJvY2Vzc0Rlc2MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmJhY2t1 cF90eXBlLCBzZWxmLmNsYXNzX3BhcmFtc1sndHlwZSddKQorICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbHMoY21kX29iai5iZmlsZSwgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10pCisgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmRhdGFiYXNlLCBzZWxmLmNsYXNzX3Bh cmFtc1snZGF0YWJhc2UnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmou Y21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtLWZpbGUgImJhY2t1cF9maWxl IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0ICJ7MH0iICcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICctLXBvcnQgInsxfSIgJworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUgInsyfSIgJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJy0tbm8tcGFzc3dvcmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jy0tZGF0YWJhc2UgInszfSInLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ10KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisKKyAgICAgICAgZGJfbW9jay5zZXNzaW9u LmFkZC5zaWRlX2VmZmVjdCA9IGRiX3Nlc3Npb25fYWRkX21vY2sKKworICAgICAgICBnZXRfc2Vy dmVyX2RldGFpbHNfbW9jay5yZXR1cm5fdmFsdWUgPSBcCisgICAgICAgICAgICBzZWxmLmNsYXNz X3BhcmFtc1snbmFtZSddLFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10s XAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXQorCisgICAgICAgIGJhY2t1 cF9vYmogPSBCYWNrdXBNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3R5 cGUnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwKKyAgICAgICAgICAg IHNlbGYuY2xhc3NfcGFyYW1zWydiZmlsZSddLAorICAgICAgICAgICAgKnNlbGYuY2xhc3NfcGFy YW1zWydhcmdzJ10sCisgICAgICAgICAgICAqKnsnZGF0YWJhc2UnOiBzZWxmLmNsYXNzX3BhcmFt c1snZGF0YWJhc2UnXX0KKyAgICAgICAgKQorCisgICAgICAgIHAgPSBCYXRjaFByb2Nlc3MoCisg ICAgICAgICAgICBkZXNjPWJhY2t1cF9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19w YXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncydd CisgICAgICAgICkKKworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBi ZWVuIGNhbGxlZAorICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKwor ICAgICAgICAjIENoZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFydChw b3Blbl9tb2NrLCBwKQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2Vs Zi5fY2hlY2tfbGlzdChwLCBiYWNrdXBfb2JqKQorCisgICAgZGVmIF9jaGVja19zdGFydChzZWxm LCBwb3Blbl9tb2NrLCBwKToKKyAgICAgICAgY21kX3Rlc3QgPSBzZWxmLmNsYXNzX3BhcmFtc1sn Y21kJ10KKworICAgICAgICBjbGFzcyBwb3Blbk1vY2tTaWRlRWZmZWN0KCk6CisgICAgICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgY21kLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgYXNz ZXJ0IGNtZF90ZXN0IGluIGNtZAorICAgICAgICAgICAgICAgIGFzc2VydCAnZW52JyBpbiBrd2Fy Z3MKKworICAgICAgICAgICAgZGVmIHBvbGwoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcwor CisgICAgICAgIHBvcGVuX21vY2suc2lkZV9lZmZlY3QgPSBwb3Blbk1vY2tTaWRlRWZmZWN0Cisg ICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIGFzc2VydCBwb3Blbl9tb2NrLmNhbGxlZAorCisg ICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5Qcm9jZXNzJykKKyAg ICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLkJhdGNoUHJvY2Vzcy4n CisgICAgICAgICAgICd1cGRhdGVfcHJvY2Vzc19pbmZvJykKKyAgICBkZWYgX2NoZWNrX2xpc3Qo c2VsZiwgcCwgYmFja3VwX29iaiwgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2NrLAorICAgICAgICAg ICAgICAgICAgICBwcm9jZXNzX21vY2spOgorICAgICAgICBjbGFzcyBUZXN0TW9ja1Byb2Nlc3Mo KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNjLCBhcmdzLCBjbWQpOgorICAg ICAgICAgICAgICAgIHNlbGYucGlkID0gMQorICAgICAgICAgICAgICAgIHNlbGYuZXhpdF9jb2Rl ID0gMQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9ICcyMDE4LTA0LTE3IDA2OjE4 OjU2LjMxNTQ0NSArMDAwMCcKKyAgICAgICAgICAgICAgICBzZWxmLmVuZF90aW1lID0gTm9uZQor ICAgICAgICAgICAgICAgIHNlbGYuZGVzYyA9IGR1bXBzKGRlc2MpCisgICAgICAgICAgICAgICAg c2VsZi5hcmd1bWVudHMgPSAiICIuam9pbihhcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuY29t bWFuZCA9IGNtZAorICAgICAgICAgICAgICAgIHNlbGYuYWNrbm93bGVkZ2UgPSBOb25lCisKKyAg ICAgICAgcHJvY2Vzc19tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUgPSBbCisgICAg ICAgICAgICBUZXN0TW9ja1Byb2Nlc3MoYmFja3VwX29iaiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSldCisKKyAgICAgICAgdXBkYXRlX3Byb2Nl c3NfaW5mb19tb2NrLnJldHVybl92YWx1ZSA9IFtUcnVlLCBUcnVlXQorCisgICAgICAgIHJldF92 YWx1ZSA9IHAubGlzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJldF92YWx1 ZSkpCisgICAgICAgIGFzc2VydCAnZGV0YWlscycgaW4gcmV0X3ZhbHVlWzBdCisgICAgICAgIGFz c2VydCAnZGVzYycgaW4gcmV0X3ZhbHVlWzBdCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9iYWNrdXAvdGVzdHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weSBiL3dlYi9wZ2FkbWluL3Rv b2xzL2JhY2t1cC90ZXN0cy90ZXN0X2NyZWF0ZV9iYWNrdXBfam9iLnB5Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NmEzYzcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weQpAQCAtMCww ICsxLDU4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitmcm9tIHBnYWRtaW4udXRpbHMu cm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBh cmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQg dGVzdF91dGlscyBhcyB1dGlscworaW1wb3J0IHBnYWRtaW4udG9vbHMuYmFja3VwLnRlc3RzLnRl c3RfYmFja3VwX3V0aWxzIGFzIGJhY2t1cF91dGlscworCisKK2NsYXNzIEJhY2t1cEpvYlRlc3Qo QmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIkJhY2t1cCBhcGkgdGVzdCBjYXNlcyIiIgorICAg IHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggdGhl IGRlZmF1bHQgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIHBhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAg ICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAg ICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAor ICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdw b3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2Iv ezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PWMnLCAn LS1ibG9icyddLAorICAgICAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisg ICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICAg ICApCisgICAgICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg aWYgc2VsZi5zZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAgICAg ICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhz IGlzIG5vdCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAp CisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJl bnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHVybCA9IHNl bGYudXJsLmZvcm1hdChzZWxmLnNlcnZlcl9pZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFj a3VwIGpvYgorICAgICAgICBqb2JfaWQgPSBiYWNrdXBfdXRpbHMuY3JlYXRlX2JhY2t1cF9qb2Io c2VsZi50ZXN0ZXIsIHVybCwgc2VsZi5wYXJhbXMpCisgICAgICAgIGJhY2t1cF91dGlscy5ydW5f YmFja3VwX2pvYihzZWxmLnRlc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGpvYl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhw ZWN0ZWRfcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5h c3NlcnRJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0 Tm90SW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3Bn YWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzX21haW50ZW5hbmNlLnB5IGIv d2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzX21h aW50ZW5hbmNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YzNkYjgK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90 ZXN0X2JhdGNoX3Byb2Nlc3NfbWFpbnRlbmFuY2UucHkKQEAgLTAsMCArMSwxNTMgQEAKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29w eXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMgaW1wb3J0IEJhdGNoUHJvY2VzcywgSVByb2Nlc3NEZXNjCitmcm9tIHBn YWRtaW4udG9vbHMubWFpbnRlbmFuY2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGls cy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcGlja2xlIGltcG9ydCBkdW1w cywgbG9hZHMKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sg aW1wb3J0IHBhdGNoCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gK KworCitjbGFzcyBCYXRjaFByb2Nlc3NUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJU ZXN0IHRoZSBCYXRjaFByb2Nlc3MgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAg ICgnV2hlbiBtYWludGFpbmVkIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAg ICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBhcmdz PVsKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAg ImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAg ICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAg ICAgICAgICAgICAgICAgICAgICctLWRibmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9z dGdyZXMiLAorICAgICAgICAgICAgICAgICAgICAgJy0tY29tbWFuZCcsCisgICAgICAgICAgICAg ICAgICAgICAiVkFDVVVNIFZFUkJPU0U7XG4iCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAg ICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bvc3Rn cmVzJywKKyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdWQUNVVU0nLAorICAgICAgICAgICAg ICAgICAgICAgJ3ZhY3V1bV9hbmFseXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAn dmFjdXVtX2ZyZWV6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mdWxs JzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZSc6IFRydWUKKyAgICAgICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21kPSJWQUNVVU0gVkVSQk9TRTtcbiIKKyAg ICAgICAgICAgICApLAorICAgICAgICAgICAgIGV4cGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZh Y3V1bSkiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gVkVSQk9T RTsnCisgICAgICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMuUG9wZW4nKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vz cy5wcm9jZXNzZXMuY3VycmVudF9hcHAnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMuZGInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5j ZS5TZXJ2ZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMu Y3VycmVudF91c2VyJykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBjdXJyZW50X3VzZXJfbW9jaywg c2VydmVyX21vY2ssIGRiX21vY2ssCisgICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywg cG9wZW5fbW9jayk6CisgICAgICAgIGN1cnJlbnRfdXNlcl9tb2NrLmlkID0gMQorICAgICAgICBj dXJyZW50X2FwcF9tb2NrLlBHQURNSU5fUlVOVElNRSA9IEZhbHNlCisKKyAgICAgICAgY2xhc3Mg VGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBo b3N0LCBwb3J0KToKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAg ICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQK KworICAgICAgICBkZWYgZGJfc2Vzc2lvbl9hZGRfbW9jayhqKToKKyAgICAgICAgICAgIGNtZF9v YmogPSBsb2FkcyhqLmRlc2MpCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjbWRfb2Jq LCBJUHJvY2Vzc0Rlc2MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLnF1 ZXJ5LCBzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx dWFscyhjbWRfb2JqLm1lc3NhZ2UsIHNlbGYuZXhwZWN0ZWRfbXNnKQorICAgICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMoY21kX29iai5kYXRhLCBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YSddKQor CisgICAgICAgIG1vY2tfb2JqID0gVGVzdE1vY2tTZXJ2ZXIoc2VsZi5jbGFzc19wYXJhbXNbJ3Vz ZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19w YXJhbXNbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNs YXNzX3BhcmFtc1sncG9ydCddKQorICAgICAgICBtb2NrX3Jlc3VsdCA9IHNlcnZlcl9tb2NrLnF1 ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUKKyAgICAgICAgbW9ja19yZXN1bHQuZmlyc3QucmV0 dXJuX3ZhbHVlID0gbW9ja19vYmoKKworICAgICAgICBkYl9tb2NrLnNlc3Npb24uYWRkLnNpZGVf ZWZmZWN0ID0gZGJfc2Vzc2lvbl9hZGRfbW9jaworCisgICAgICAgIG1haW50ZW5hbmNlX29iaiA9 IE1lc3NhZ2UoCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YSddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19w YXJhbXNbJ2NtZCddCisgICAgICAgICkKKworICAgICAgICBwID0gQmF0Y2hQcm9jZXNzKAorICAg ICAgICAgICAgZGVzYz1tYWludGVuYW5jZV9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFz c19wYXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJn cyddCisgICAgICAgICkKKworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhh cyBiZWVuIGNhbGxlZAorICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQK KworICAgICAgICAjIENoZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFy dChwb3Blbl9tb2NrLCBwKQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAg c2VsZi5fY2hlY2tfbGlzdChwLCBtYWludGVuYW5jZV9vYmopCisKKyAgICBkZWYgX2NoZWNrX3N0 YXJ0KHNlbGYsIHBvcGVuX21vY2ssIHApOgorICAgICAgICBjbWRfdGVzdCA9IHNlbGYuY2xhc3Nf cGFyYW1zWydjbWQnXQorCisgICAgICAgIGNsYXNzIHBvcGVuTW9ja1NpZGVFZmZlY3QoKToKKyAg ICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbWQsICoqa3dhcmdzKToKKyAgICAgICAgICAg ICAgICBhc3NlcnQgY21kX3Rlc3QgaW4gY21kCisgICAgICAgICAgICAgICAgYXNzZXJ0ICdlbnYn IGluIGt3YXJncworCisgICAgICAgICAgICBkZWYgcG9sbChzZWxmKToKKyAgICAgICAgICAgICAg ICBwYXNzCisKKyAgICAgICAgcG9wZW5fbW9jay5zaWRlX2VmZmVjdCA9IHBvcGVuTW9ja1NpZGVF ZmZlY3QKKyAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgYXNzZXJ0IHBvcGVuX21vY2suY2Fs bGVkCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLlByb2Nl c3MnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuQmF0Y2hQ cm9jZXNzLicKKyAgICAgICAgICAgJ3VwZGF0ZV9wcm9jZXNzX2luZm8nKQorICAgIGRlZiBfY2hl Y2tfbGlzdChzZWxmLCBwLCBtYWludGVuYW5jZV9vYmosIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9j aywKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19tb2NrKToKKyAgICAgICAgY2xhc3MgVGVz dE1vY2tQcm9jZXNzKCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGVzYywgYXJn cywgY21kKToKKyAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IDEKKyAgICAgICAgICAgICAgICBz ZWxmLmV4aXRfY29kZSA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSAnMjAx OC0wNC0xNyAwNjoxODo1Ni4zMTU0NDUgKzAwMDAnCisgICAgICAgICAgICAgICAgc2VsZi5lbmRf dGltZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLmRlc2MgPSBkdW1wcyhkZXNjKQorICAg ICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRzID0gIiAiLmpvaW4oYXJncykKKyAgICAgICAgICAg ICAgICBzZWxmLmNvbW1hbmQgPSBjbWQKKyAgICAgICAgICAgICAgICBzZWxmLmFja25vd2xlZGdl ID0gTm9uZQorCisgICAgICAgIHByb2Nlc3NfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3Zh bHVlID0gWworICAgICAgICAgICAgVGVzdE1vY2tQcm9jZXNzKG1haW50ZW5hbmNlX29iaiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSkKKyAgICAg ICAgXQorCisgICAgICAgIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jay5yZXR1cm5fdmFsdWUgPSBb VHJ1ZSwgVHJ1ZV0KKworICAgICAgICByZXRfdmFsdWUgPSBwLmxpc3QoKQorICAgICAgICBzZWxm LmFzc2VydEVxdWFsKDEsIGxlbihyZXRfdmFsdWUpKQorICAgICAgICBhc3NlcnQgJ2RldGFpbHMn IGluIHJldF92YWx1ZVswXQorICAgICAgICBhc3NlcnQgJ2Rlc2MnIGluIHJldF92YWx1ZVswXQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9jcmVh dGVfbWFpbnRlbmFuY2Vfam9iLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVz dHMvdGVzdF9jcmVhdGVfbWFpbnRlbmFuY2Vfam9iLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjFlMDFmMWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29s cy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X2NyZWF0ZV9tYWludGVuYW5jZV9qb2IucHkKQEAgLTAs MCArMSwxNDAgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgdGltZQoraW1wb3J0 IHJhbmRvbQoraW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udXRpbHMu cm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBh cmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQg dGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRp bHMgYXMgc2VydmVyX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRp bHMKKworCitjbGFzcyBNYWludGVuYW5jZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAg ICIiIk1haW50ZW5hbmNlIGFwaSB0ZXN0IGNhc2VzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAg ICAgICAoJ1doZW4gbWFpbnRlbmFuY2UgdGhlIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IG9wdGlv bnMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAg ICAgICAgICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2 YWN1dW1fZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwn OiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAg ICAgICAgICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IlZBQ1VVTSBWRVJCT1NFO1xuIgorICAg ICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0n LAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZD0nVkFDVVVNIFZFUkJPU0UnLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpCisgICAgXQorCisg ICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5h cnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAg ICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7 MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgor ICAgICAgICBzZWxmLmRiX25hbWUgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVu dF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBzZWxmLmRi X2lkID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX2lkIl0KKyAgICAgICAg dXJsID0gc2VsZi51cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQorCisgICAg ICAgICMgQ3JlYXRlIHRoZSBiYWNrdXAgam9iCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucG9zdCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpz b24uZHVtcHMoc2VsZi5wYXJhbXNbJ2RhdGEnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEg PSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2Jf aWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgY250ID0gMAor ICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgaWYgY250ID4gMToKKyAgICAgICAgICAgICAg ICBicmVhaworICAgICAgICAgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAgICAg ICByZXNwb25zZTEgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1h dCgKKyAgICAgICAgICAgICAgICByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkpCisgICAgICAg ICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZTEuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAg ICAgICAgIHByb2Nlc3NfbGlzdCA9IGpzb24ubG9hZHMocmVzcG9uc2UxLmRhdGEuZGVjb2RlKCd1 dGYtOCcpKQorCisgICAgICAgICAgICBpZiBsZW4ocHJvY2Vzc19saXN0KSA+IDAgYW5kICdleGVj dXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0WzBdOgorICAgICAgICAgICAgICAgIGJyZWFrCisg ICAgICAgICAgICB0aW1lLnNsZWVwKDAuNSkKKyAgICAgICAgICAgIGNudCArPSAxCisKKyAgICAg ICAgYXNzZXJ0ICdleGVjdXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgICAgIGFz c2VydCAnc3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgJ2V4aXRfY29k ZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgICAgIGFzc2VydCBwcm9jZXNzX2xpc3RbMF1bJ2V4 aXRfY29kZSddIGluIHNlbGYuZXhwZWN0ZWRfZXhpdF9jb2RlCisKKyAgICAgICAgc2VsZi5hc3Nl cnRJbihzZWxmLmV4cGVjdGVkX2NtZCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10pCisKKyAg ICAgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBkZXRhaWxzCisgICAgICAgIHBfZGV0YWlscyA9IHNl bGYudGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfT9fPScuZm9ybWF0KAorICAgICAgICAg ICAgam9iX2lkLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgKQorICAgICAg ICBzZWxmLmFzc2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAg cF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgn KSkKKworICAgICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vz cy97MH0vezF9L3syfS8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFu ZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRF cXVhbHMocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHBfZGV0YWlsc19kYXRh ID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAg IyBSZXRyaWV2ZSB0aGUgYmFja3VwIGpvYiBwcm9jZXNzIGxvZ3MKKyAgICAgICAgd2hpbGUgMToK KyAgICAgICAgICAgIG91dCwgZXJyLCBzdGF0dXMgPSBNYWludGVuYW5jZUpvYlRlc3QuZ2V0X3Bh cmFtcyhwX2RldGFpbHNfZGF0YSkKKyAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAg ICAgICBicmVhaworCisgICAgICAgICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoCisg ICAgICAgICAgICAgICAgJy9taXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz17M30nLmZvcm1h dCgKKyAgICAgICAgICAgICAgICAgICAgam9iX2lkLCBvdXQsIGVyciwgcmFuZG9tLnJhbmRpbnQo MSwgOTk5OTk5OSkpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHBfZGV0YWlsc19kYXRh ID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAg ICAgIHRpbWUuc2xlZXAoMSkKKworICAgICAgICAjIENoZWNrIHRoZSBqb2IgaXMgY29tcGxldGUu CisgICAgICAgIGJhY2t1cF9hY2sgPSBzZWxmLnRlc3Rlci5wdXQoJy9taXNjL2JncHJvY2Vzcy97 MH0nLmZvcm1hdChqb2JfaWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhiYWNrdXBfYWNr LnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIGJhY2t1cF9hY2tfcmVzID0ganNvbi5sb2Fkcyhi YWNrdXBfYWNrLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWxzKGJhY2t1cF9hY2tfcmVzWydzdWNjZXNzJ10sIDEpCisKKyAgICBAc3RhdGljbWV0aG9kCisg ICAgZGVmIGdldF9wYXJhbXMoZGF0YSk6CisgICAgICAgIG91dCA9IDAKKyAgICAgICAgb3V0X2Rv bmUgPSBGYWxzZQorICAgICAgICBlcnIgPSAwCisgICAgICAgIGVycl9kb25lID0gRmFsc2UKKyAg ICAgICAgaWYgJ291dCcgaW4gZGF0YToKKyAgICAgICAgICAgIG91dCA9IGRhdGFbJ291dCddIGFu ZCBkYXRhWydvdXQnXVsncG9zJ10KKworICAgICAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291 dCddOgorICAgICAgICAgICAgICAgIG91dF9kb25lID0gZGF0YVsnb3V0J11bJ2RvbmUnXQorCisg ICAgICAgIGlmICdlcnInIGluIGRhdGE6CisgICAgICAgICAgICBlcnIgPSBkYXRhWydlcnInXSBh bmQgZGF0YVsnZXJyJ11bJ3BvcyddCisKKyAgICAgICAgICAgIGlmICdkb25lJyBpbiBkYXRhWydl cnInXToKKyAgICAgICAgICAgICAgICBlcnJfZG9uZSA9IGRhdGFbJ2VyciddWydkb25lJ10KKwor ICAgICAgICByZXR1cm4gb3V0LCBlcnIsIChvdXRfZG9uZSBhbmQgZXJyX2RvbmUpCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNl X2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uv dGVzdHMvdGVzdF9tYWludGVuYW5jZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGQwZDFkCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9tYWludGVuYW5jZV9jcmVhdGVf am9iX3VuaXRfdGVzdC5weQpAQCAtMCwwICsxLDE5OSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMK KyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworCitpbXBvcnQgc3lzCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKKworZnJvbSBw Z2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzCitmcm9t IHBnYWRtaW4udG9vbHMubWFpbnRlbmFuY2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51 dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBv cnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGlt cG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZl cl91dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91 cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFz ZV91dGlscworCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2Nr IGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBp bXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworCisKK2NsYXNzIE1haW50ZW5hbmNlQ3JlYXRlSm9iVGVz dChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmFja3VwQ3JlYXRlSm9iIGNs YXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2Jq ZWN0IHdpdGggZGVmYXVsdCBvcHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAg Y2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAg ICAgICBuYW1lPSd0ZXN0X21haW50ZW5hbmNlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBv cnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAg ICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAg cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAg ICAgICAgICAgICAgIG9wPSdWQUNVVU0nLAorICAgICAgICAgICAgICAgICB2YWN1dW1fYW5hbHl6 ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxzZSwKKyAgICAgICAg ICAgICAgICAgdmFjdXVtX2Z1bGw9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1 ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3sw fS97MX0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnVkFDVVVNIFZFUkJPU0U7 XG4nXSwKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdp dGggVkFDVVVNIEZVTEwnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJh bXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9 J3Rlc3RfbWFpbnRlbmFuY2Vfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAor ICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2Vy bmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgb3A9J1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAor ICAgICAgICAgICAgICAgICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2 YWN1dW1fZnVsbD1UcnVlLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHVybD0nL21haW50ZW5hbmNlL2pvYi97MH0vezF9JywKKyAg ICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJ1ZBQ1VVTSBGVUxMIFZFUkJPU0U7XG4nXSwK KyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdpdGggdGhl IEFOQUxZWkUnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3Rf bWFpbnRlbmFuY2Vfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAg ICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0n cG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAg ICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb3A9 J0FOQUxZWkUnLAorICAgICAgICAgICAgICAgICB2YWN1dW1fYW5hbHl6ZT1UcnVlLAorICAgICAg ICAgICAgICAgICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1f ZnVsbD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICB1cmw9Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAg ICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WydBTkFMWVpFIFZFUkJPU0U7XG4nXSwKKyAgICAgICAg ICkpLAorICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2UgdGhlIG9iamVjdCB3aXRoIHRoZSBSRUlO REVYJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50 ZW5hbmNlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAg ICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3Rn cmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9wPSdSRUlO REVYJywKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2FuYWx5emU9RmFsc2UsCisgICAgICAgICAg ICAgICAgIHZhY3V1bV9mcmVlemU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxs PUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPUZhbHNlCisgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICB1cmw9Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WydSRUlOREVYIERBVEFCQVNFIHBvc3RncmVzO1xuJ10sCisg ICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1haW50ZW5hbmNlIHRoZSBvYmplY3Qgd2l0aCB0 aGUgQ0xVU1RFUicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVz dF9tYWludGVuYW5jZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAg ICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1l PSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBv cD0nQ0xVU1RFUicsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAorICAg ICAgICAgICAgICAgICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1 dW1fZnVsbD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1GYWxzZQorICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAg ICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnQ0xVU1RFUjtcbiddLAorICAgICAgICAgKSkK KyAgICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydk ZWZhdWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0 KAorICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0 aGUgc2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsn bmFtZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgQHBhdGNoKCdw Z2FkbWluLnRvb2xzLm1haW50ZW5hbmNlLlNlcnZlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRv b2xzLm1haW50ZW5hbmNlLk1lc3NhZ2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWlu dGVuYW5jZS5CYXRjaFByb2Nlc3MnKQorICAgIEBwYXRjaCgncGdhZG1pbi51dGlscy5kcml2ZXIu cHN5Y29wZzIuc2VydmVyX21hbmFnZXIuU2VydmVyTWFuYWdlci4nCisgICAgICAgICAgICdleHBv cnRfcGFzc3dvcmRfZW52JykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBleHBvcnRfcGFzc3dvcmRf ZW52X21vY2ssCisgICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLCBtZXNzYWdlX21v Y2ssIHNlcnZlcl9tb2NrKToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9k aWN0WyJkYXRhYmFzZSJdWy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHBh cmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJkYl9pZCJdCisgICAgICAgIHVybCA9IHNl bGYudXJsLmZvcm1hdChzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKKworICAgICAgICBjbGFz cyBUZXN0TW9ja1NlcnZlcigpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Qs IHBvcnQsIGlkLCB1c2VybmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAor ICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgICAgICAgICBzZWxmLmlk ID0gaWQKKyAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUKKworICAgICAg ICBtb2NrX29iaiA9IFRlc3RNb2NrU2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndXNlcm5h bWUnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgbW9ja19y ZXN1bHQgPSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAg IG1vY2tfcmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgYmF0 Y2hfcHJvY2Vzc19tb2NrLnNldF9lbnZfdmFyaWFibGVzID0gTWFnaWNNb2NrKAorICAgICAgICAg ICAgcmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorICAgICAgICBiYXRjaF9wcm9jZXNzX21v Y2suc3RhcnQgPSBNYWdpY01vY2soCisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAg ICAgICApCisgICAgICAgIGV4cG9ydF9wYXNzd29yZF9lbnZfbW9jay5yZXR1cm5fdmFsdWUgPSBU cnVlCisKKyAgICAgICAgc2VydmVyX3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2Vy dmVyKHNlbGYsIHNlbGYuc2VydmVyX2lkKQorICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9uc2VbImlu Zm8iXSA9PSAiU2VydmVyIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgZGJfb3duZXIgPSBzZXJ2 ZXJfcmVzcG9uc2VbJ2RhdGEnXVsndXNlciddWyduYW1lJ10KKyAgICAgICAgICAgIHNlbGYuZGF0 YSA9IGRhdGFiYXNlX3V0aWxzLmdldF9kYl9kYXRhKGRiX293bmVyKQorICAgICAgICAgICAgc2Vs Zi5kYl9uYW1lID0gc2VsZi5kYXRhWyduYW1lJ10KKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFj a3VwIGpvYgorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1z KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRt bC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUs IDIwMCkKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5k ZWNvZGUoJ3V0Zi04JykpCisgICAgICAgIGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsn am9iX2lkJ10KKworICAgICAgICBhc3NlcnQgbWVzc2FnZV9tb2NrLmNhbGxlZAorICAgICAgICBh c3NlcnQgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxlZAorCisgICAgICAgIHByaW50KGJhdGNoX3By b2Nlc3NfbW9jay5jYWxsX2FyZ3NfbGlzdFswXVsxXVsnYXJncyddKQorICAgICAgICBpZiBzZWxm LmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgZm9yIG9wdCBpbiBzZWxmLmV4cGVjdGVk X2NtZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3B0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxfYXJnc19saXN0WzBd WzFdWydhcmdzJ10pCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90 ZXN0cy90ZXN0X21haW50ZW5hbmNlX21lc3NhZ2UucHkgYi93ZWIvcGdhZG1pbi90b29scy9tYWlu dGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNGNiODllZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFuY2VfbWVzc2FnZS5weQpA QCAtMCwwICsxLDEyNCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1p biBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhl IFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZnJvbSBmbGFzayBp bXBvcnQgUmVzcG9uc2UKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWlu LnRvb2xzLm1haW50ZW5hbmNlIGltcG9ydCBNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91 dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCisKKworY2xhc3MgTWFpbnRlbmFuY2VNZXNzYWdl VGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgTWFpbnRlbmFuY2UgTWVz c2FnZSBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIG1haW50YWlu ZWQgdGhlIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFt cz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgZGF0YT17 CisgICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVt X2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzog RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAg ICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9LAorICAg ICAgICAgICAgICAgICBjbWQ9IlZBQ1VVTSBWRVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJNYWludGVuYW5jZSAoVmFjdXVtKSIsCisgICAgICAg ICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9J1ZBQ1VVTSBWRVJCT1NFOycKKworICAgICAgICAg KSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBGVUxMIFZFUkJP U0Ugb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgZGF0YT17Cisg ICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAgICAgICAgICAg ICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Fu YWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFs c2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBUcnVlLAorICAgICAgICAg ICAgICAgICAgICAgJ3ZlcmJvc2UnOiBUcnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICAgICAgIGNtZD0iVkFDVVVNIEZVTEwgVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZhY3V1bSkiLAorICAgICAg ICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gRlVMTCBWRVJCT1NFOycKKworICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBBTkFM WVpFJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAg ICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAg ICAnb3AnOiAnQU5BTFlaRScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5emUn OiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2UsCisg ICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAgICAg ICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg ICAgICBjbWQ9IkFOQUxZWkUgVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICApLAorICAgICAgICAg ICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKEFuYWx5emUpIiwKKyAgICAgICAgICAgICBl eHBldGNlZF9kZXRhaWxzX2NtZD0nQU5BTFlaRSBWRVJCT1NFOycKKworICAgICAgICAgKSksCisg ICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXIgd2l0aCBSRUlOREVYJywKKyAgICAg ICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAg ICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAg ICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnUkVJ TkRFWCcsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAg ICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAg ICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJi b3NlJzogRmFsc2UKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21kPSJS RUlOREVYO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJN YWludGVuYW5jZSAoUmVpbmRleCkiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21k PSdSRUlOREVYOycKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHRo ZSBzZXJ2ZXIgd2l0aCBDTFVTVEVSJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xh c3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSc6ICdwb3N0Z3JlcycsCisg ICAgICAgICAgICAgICAgICAgICAnb3AnOiAnQ0xVU1RFUicsCisgICAgICAgICAgICAgICAgICAg ICAndmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1f ZnJlZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxz ZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IkNMVVNURVIgVkVSQk9TRTtcbiIKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKENsdXN0ZXIp IiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nQ0xVU1RFUiBWRVJCT1NFOycK KworICAgICAgICAgKSksCisgICAgXQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAg IG1haW50ZW5hbmNlX29iaiA9IE1lc3NhZ2UoCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFt c1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YSddLAorICAgICAg ICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisgICAgICAgICkKKworICAgICAgICAjIENo ZWNrIHRoZSBleHBlY3RlZCBtZXNzYWdlIHJldHVybmVkCisgICAgICAgIGFzc2VydCBtYWludGVu YW5jZV9vYmoubWVzc2FnZSA9PSBzZWxmLmV4dGVjdGVkX21zZworCisgICAgICAgICMgQ2hlY2sg dGhlIGNvbW1hbmQKKyAgICAgICAgb2JqX2RldGFpbHMgPSBtYWludGVuYW5jZV9vYmouZGV0YWls cyhzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4o c2VsZi5leHBldGNlZF9kZXRhaWxzX2NtZCwgb2JqX2RldGFpbHMpCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVz dG9yZS9fX2luaXRfXy5weQppbmRleCA0NWQzODE2Li41OGJjMjUxIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L3Jlc3RvcmUvX19pbml0X18ucHkKQEAgLTg2LDggKzg2LDcgQEAgY2xhc3MgUmVzdG9yZU1lc3Nh Z2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2Vs Zi5jbWQgKz0gY21kQXJnKGFyZykKIAotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBtZXNzYWdlKHNl bGYpOgorICAgIGRlZiBnZXRfc2VydmVyX2RldGFpbHMoc2VsZik6CiAgICAgICAgICMgRmV0Y2gg dGhlIHNlcnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQsIHJvbGVzIGV0YwogICAgICAg ICBzID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKICAgICAgICAgICAgIGlkPXNlbGYuc2lkLCB1 c2VyX2lkPWN1cnJlbnRfdXNlci5pZApAQCAtMTAwLDMwICs5OSwyNSBAQCBjbGFzcyBSZXN0b3Jl TWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICBob3N0ID0gbWFuYWdlci5sb2NhbF9iaW5k X2hvc3QgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMuaG9zdAogICAgICAgICBwb3J0 ID0gbWFuYWdlci5sb2NhbF9iaW5kX3BvcnQgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNl IHMucG9ydAogCisgICAgICAgIHJldHVybiBzLm5hbWUsIGhvc3QsIHBvcnQKKworICAgIEBwcm9w ZXJ0eQorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgorICAgICAgICBuYW1lLCBob3N0LCBwb3J0ID0g c2VsZi5nZXRfc2VydmVyX2RldGFpbHMoKQorCiAgICAgICAgIHJldHVybiBfKCJSZXN0b3Jpbmcg YmFja3VwIG9uIHRoZSBzZXJ2ZXIgJ3swfScuLi4iKS5mb3JtYXQoCi0gICAgICAgICAgICAiezB9 ICh7MX06ezJ9KSIuZm9ybWF0KHMubmFtZSwgaG9zdCwgcG9ydCksCisgICAgICAgICAgICAiezB9 ICh7MX06ezJ9KSIuZm9ybWF0KG5hbWUsIGhvc3QsIHBvcnQpLAogICAgICAgICApCiAKICAgICBk ZWYgZGV0YWlscyhzZWxmLCBjbWQsIGFyZ3MpOgotICAgICAgICAjIEZldGNoIHRoZSBzZXJ2ZXIg ZGV0YWlscyBsaWtlIGhvc3RuYW1lLCBwb3J0LCByb2xlcyBldGMKLSAgICAgICAgcyA9IFNlcnZl ci5xdWVyeS5maWx0ZXJfYnkoCi0gICAgICAgICAgICBpZD1zZWxmLnNpZCwgdXNlcl9pZD1jdXJy ZW50X3VzZXIuaWQKLSAgICAgICAgKS5maXJzdCgpCi0KLSAgICAgICAgZnJvbSBwZ2FkbWluLnV0 aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgotICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVy KFBHX0RFRkFVTFRfRFJJVkVSKQotICAgICAgICBtYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rpb25f bWFuYWdlcihzZWxmLnNpZCkKLQotICAgICAgICBob3N0ID0gbWFuYWdlci5sb2NhbF9iaW5kX2hv c3QgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMuaG9zdAotICAgICAgICBwb3J0ID0g bWFuYWdlci5sb2NhbF9iaW5kX3BvcnQgaWYgbWFuYWdlci51c2Vfc3NoX3R1bm5lbCBlbHNlIHMu cG9ydAotCisgICAgICAgIG5hbWUsIGhvc3QsIHBvcnQgPSBzZWxmLmdldF9zZXJ2ZXJfZGV0YWls cygpCiAgICAgICAgIHJlcyA9ICc8ZGl2IGNsYXNzPSJoNSI+JwogCiAgICAgICAgIHJlcyArPSBo dG1sLnNhZmVfc3RyKAogICAgICAgICAgICAgXygKICAgICAgICAgICAgICAgICAiUmVzdG9yaW5n IGJhY2t1cCBvbiB0aGUgc2VydmVyICd7MH0nLi4uIgogICAgICAgICAgICAgKS5mb3JtYXQoCi0g ICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdChzLm5hbWUsIGhvc3QsIHBvcnQp CisgICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdChuYW1lLCBob3N0LCBwb3J0 KQogICAgICAgICAgICAgKQogICAgICAgICApCiAKQEAgLTIwNiw2ICsyMDAsNyBAQCBkZWYgY3Jl YXRlX3Jlc3RvcmVfam9iKHNpZCk6CiAKICAgICBpZiBfZmlsZSBpcyBOb25lOgogICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgc3RhdHVzPTQxMCwKICAgICAg ICAgICAgIHN1Y2Nlc3M9MCwKICAgICAgICAgICAgIGVycm9ybXNnPV8oIkZpbGUgY291bGQgbm90 IGJlIGZvdW5kLiIpCiAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jl c3RvcmUvdGVzdHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3Rz L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9iYXRjaF9w cm9jZXNzLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2JhdGNoX3By b2Nlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhkNjkyYQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9iYXRj aF9wcm9jZXNzLnB5CkBAIC0wLDAgKzEsMTU0IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIw MTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor aW1wb3J0IHN5cworCitmcm9tIHBnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzIGltcG9y dCBCYXRjaFByb2Nlc3MsIElQcm9jZXNzRGVzYworZnJvbSBwZ2FkbWluLnRvb2xzLnJlc3RvcmUg aW1wb3J0IFJlc3RvcmVNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJh c2VUZXN0R2VuZXJhdG9yCitmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzCisKK2lmIHN5 cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZWxz ZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKKworY2xhc3MgQmF0Y2hQ cm9jZXNzVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmF0Y2hQcm9j ZXNzIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gcmVzdG9yZSBz ZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVz dG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAg ICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAg ICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAg ICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgInJlc3RvcmVf ZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAgICAgICAgICAgICAg ICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9ydCcsCisgICAgICAg ICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFtZScs CisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAgICAgICAgICAgICAg Jy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAg ICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAgICAgICBdLAorICAgICAg ICAgICAgICAgICBjbWQ9J3Jlc3RvcmVfc2VydmVyJworICAgICAgICAgICAgICkKKyAgICAgICAg ICkpCisgICAgXQorCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuUmVzdG9yZU1l c3NhZ2UuZ2V0X3NlcnZlcl9kZXRhaWxzJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3By b2Nlc3MucHJvY2Vzc2VzLlBvcGVuJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nl c3MucHJvY2Vzc2VzLmN1cnJlbnRfYXBwJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3By b2Nlc3MucHJvY2Vzc2VzLmRiJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5j dXJyZW50X3VzZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNz ZXMuY3VycmVudF91c2VyJykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBjdXJyZW50X3VzZXJfbW9j aywgY3VycmVudF91c2VyLCBkYl9tb2NrLAorICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwX21v Y2ssIHBvcGVuX21vY2ssIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrKToKKyAgICAgICAgY3VycmVu dF91c2VyLmlkID0gMQorICAgICAgICBjdXJyZW50X3VzZXJfbW9jay5pZCA9IDEKKyAgICAgICAg Y3VycmVudF9hcHBfbW9jay5QR0FETUlOX1JVTlRJTUUgPSBGYWxzZQorCisgICAgICAgIGRlZiBk Yl9zZXNzaW9uX2FkZF9tb2NrKGopOgorICAgICAgICAgICAgY21kX29iaiA9IGxvYWRzKGouZGVz YykKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNtZF9vYmosIElQcm9jZXNzRGVzYykK KyAgICAgICAgICAgIHByaW50KGNtZF9vYmopCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhjbWRfb2JqLmJmaWxlLCBzZWxmLmNsYXNzX3BhcmFtc1snYmZpbGUnXSkKKyAgICAgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouY21kLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJyAtLWZpbGUgInJlc3RvcmVfZmlsZSIgJworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0taG9zdCAiezB9IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1w b3J0ICJ7MX0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lICJ7 Mn0iICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkICcKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlICJ7M30iJy5mb3JtYXQoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3Qn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sn cG9ydCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFy YW1zWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu Y2xhc3NfcGFyYW1zWydkYXRhYmFzZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp KQorCisgICAgICAgIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrLnJldHVybl92YWx1ZSA9IFwKKyAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyduYW1lJ10sXAorICAgICAgICAgICAgc2VsZi5j bGFzc19wYXJhbXNbJ2hvc3QnXSxcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9y dCddCisKKyAgICAgICAgZGJfbW9jay5zZXNzaW9uLmFkZC5zaWRlX2VmZmVjdCA9IGRiX3Nlc3Np b25fYWRkX21vY2sKKworICAgICAgICByZXN0b3JlX29iaiA9IFJlc3RvcmVNZXNzYWdlKAorICAg ICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3NpZCddLAorICAgICAgICAgICAgc2VsZi5jbGFz c19wYXJhbXNbJ2JmaWxlJ10sCisgICAgICAgICAgICAqc2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3Mn XQorICAgICAgICApCisKKyAgICAgICAgcCA9IEJhdGNoUHJvY2VzcygKKyAgICAgICAgICAgIGRl c2M9cmVzdG9yZV9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19wYXJhbXNbJ2NtZCdd LAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkK KworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBiZWVuIGNhbGxlZAor ICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKworICAgICAgICAjIENo ZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFydChwb3Blbl9tb2NrLCBw KQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2VsZi5fY2hlY2tfbGlz dChwLCByZXN0b3JlX29iaikKKworICAgIGRlZiBfY2hlY2tfc3RhcnQoc2VsZiwgcG9wZW5fbW9j aywgcCk6CisgICAgICAgIGNtZF90ZXN0ID0gc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisKKyAg ICAgICAgY2xhc3MgcG9wZW5Nb2NrU2lkZUVmZmVjdCgpOgorICAgICAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIGNtZCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGFzc2VydCBjbWRfdGVz dCBpbiBjbWQKKyAgICAgICAgICAgICAgICBhc3NlcnQgJ2VudicgaW4ga3dhcmdzCisKKyAgICAg ICAgICAgIGRlZiBwb2xsKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBw b3Blbl9tb2NrLnNpZGVfZWZmZWN0ID0gcG9wZW5Nb2NrU2lkZUVmZmVjdAorICAgICAgICBwLnN0 YXJ0KCkKKworICAgICAgICBhc3NlcnQgcG9wZW5fbW9jay5jYWxsZWQKKworICAgIEBwYXRjaCgn cGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUHJvY2VzcycpCisgICAgQHBhdGNoKCdw Z2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5CYXRjaFByb2Nlc3MuJworICAgICAgICAg ICAndXBkYXRlX3Byb2Nlc3NfaW5mbycpCisgICAgZGVmIF9jaGVja19saXN0KHNlbGYsIHAsIHJl c3RvcmVfb2JqLCB1cGRhdGVfcHJvY2Vzc19pbmZvX21vY2ssCisgICAgICAgICAgICAgICAgICAg IHByb2Nlc3NfbW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrUHJvY2VzcygpOgorICAgICAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlc2MsIGFyZ3MsIGNtZCk6CisgICAgICAgICAgICAg ICAgc2VsZi5waWQgPSAxCisgICAgICAgICAgICAgICAgc2VsZi5leGl0X2NvZGUgPSAxCisgICAg ICAgICAgICAgICAgc2VsZi5zdGFydF90aW1lID0gJzIwMTgtMDQtMTcgMDY6MTg6NTYuMzE1NDQ1 ICswMDAwJworICAgICAgICAgICAgICAgIHNlbGYuZW5kX3RpbWUgPSBOb25lCisgICAgICAgICAg ICAgICAgc2VsZi5kZXNjID0gZHVtcHMoZGVzYykKKyAgICAgICAgICAgICAgICBzZWxmLmFyZ3Vt ZW50cyA9ICIgIi5qb2luKGFyZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kID0gY21k CisgICAgICAgICAgICAgICAgc2VsZi5hY2tub3dsZWRnZSA9IE5vbmUKKworICAgICAgICBwcm9j ZXNzX21vY2sucXVlcnkuZmlsdGVyX2J5LnJldHVybl92YWx1ZSA9IFsKKyAgICAgICAgICAgIFRl c3RNb2NrUHJvY2VzcyhyZXN0b3JlX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWydjbWQnXSkKKyAgICAgICAgXQorCisgICAgICAgIHVwZGF0ZV9wcm9j ZXNzX2luZm9fbW9jay5yZXR1cm5fdmFsdWUgPSBbVHJ1ZSwgVHJ1ZV0KKworICAgICAgICByZXRf dmFsdWUgPSBwLmxpc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXRfdmFs dWUpKQorICAgICAgICBhc3NlcnQgJ2RldGFpbHMnIGluIHJldF92YWx1ZVswXQorICAgICAgICBh c3NlcnQgJ2Rlc2MnIGluIHJldF92YWx1ZVswXQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS90ZXN0cy90ZXN0X2NyZWF0ZV9yZXN0b3JlX2pvYi5weSBiL3dlYi9wZ2FkbWlu L3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9jcmVhdGVfcmVzdG9yZV9qb2IucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk1MzU0NAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9jcmVhdGVfcmVzdG9yZV9qb2IucHkK QEAgLTAsMCArMSwxOTQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRt aW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRo ZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCitp bXBvcnQgdGltZQoraW1wb3J0IHJhbmRvbQorCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisK K2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20g cmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhv bl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRp bHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2ltcG9ydCBwZ2FkbWluLnRv b2xzLmJhY2t1cC50ZXN0cy50ZXN0X2JhY2t1cF91dGlscyBhcyBiYWNrdXBfdXRpbHMKKworCitp ZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gs IE1hZ2ljTW9jaworZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBN YWdpY01vY2sKKworCitjbGFzcyBSZXN0b3JlSm9iVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6Cisg ICAgIiIiQmFja3VwIGFwaSB0ZXN0IGNhc2VzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAg ICAoJ1doZW4gcmVzdG9yZSB0aGUgb2JqZWN0IHdpdGggdGhlIGRlZmF1bHQgb3B0aW9ucycsCisg ICAgICAgICBkaWN0KAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBmaWxlPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3Vz dG9tJywKKyAgICAgICAgICAgICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAgICAgICAgICB2 ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAg ICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Rlc3RfcmVzdG9yZV9kYXRhYmFzZScKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0 ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXSwKKyAg ICAgICAgICAgICBiYWNrdXBfb3B0aW9ucz1kaWN0KAorICAgICAgICAgICAgICAgICBwYXJhbXM9 ZGljdCgKKyAgICAgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAg ICAgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgICAg IHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAg ICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICAgICAgdGFibGVzPVtd LAorICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Rlc3RfcmVzdG9yZV9kYXRhYmFzZScK KyAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97 MH0vb2JqZWN0JywKKyAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZvcm1h dD1jJywgJy0tYmxvYnMnXSwKKyAgICAgICAgICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRf b3B0cz1bXSwKKyAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9u ZV0KKyAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgKQorICAgICAgICAgKSkKKyAg ICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydkZWZh dWx0X2JpbmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAor ICAgICAgICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0aGUg c2VydmVyIHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnbmFt ZSddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgZGVmIGNyZWF0ZV9i YWNrdXAoc2VsZik6CisgICAgICAgIHVybCA9IHNlbGYuYmFja3VwX29wdGlvbnNbJ3VybCddLmZv cm1hdChzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgam9iX2lkID0gYmFja3VwX3V0aWxzLmNyZWF0 ZV9iYWNrdXBfam9iKHNlbGYudGVzdGVyLCB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJhY2t1cF9vcHRpb25zWydwYXJhbXMnXSkKKyAg ICAgICAgYmFja3VwX3V0aWxzLnJ1bl9iYWNrdXBfam9iKHNlbGYudGVzdGVyLCBqb2JfaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJhY2t1cF9vcHRpb25zWydl eHBlY3RlZF9wYXJhbXMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuYXNzZXJ0SW4sIHNlbGYuYXNzZXJ0Tm90SW4pCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToK KyAgICAgICAgc2VsZi5kYl9uYW1lID0gJycKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJl bnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHNlcnZlcl9y ZXNwb25zZSA9IHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9p ZCkKKyAgICAgICAgZGJfaWQgPSB1dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIsIHNl bGYucGFyYW1zWydkYXRhYmFzZSddKQorCisgICAgICAgIHNlbGYuY3JlYXRlX2JhY2t1cCgpCisg ICAgICAgIHVybCA9IHNlbGYudXJsLmZvcm1hdChzZWxmLnNlcnZlcl9pZCkKKworICAgICAgICAj IENyZWF0ZSB0aGUgcmVzdG9yZSBqb2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5w b3N0KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5k dW1wcyhzZWxmLnBhcmFtcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3Bv bnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRz KHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNwb25z ZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgY250ID0gMAorICAgICAgICB3aGls ZSAxOgorICAgICAgICAgICAgaWYgY250ID4gMToKKyAgICAgICAgICAgICAgICBicmVhaworICAg ICAgICAgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAgICAgICByZXNwb25zZTEg PSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkpCisgICAgICAgICAgICBzZWxmLmFz c2VydEVxdWFscyhyZXNwb25zZTEuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHByb2Nl c3NfbGlzdCA9IGpzb24ubG9hZHMocmVzcG9uc2UxLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisg ICAgICAgICAgICBpZiBsZW4ocHJvY2Vzc19saXN0KSA+IDAgYW5kICdleGVjdXRpb25fdGltZScg aW4gcHJvY2Vzc19saXN0WzBdOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB0 aW1lLnNsZWVwKDAuNSkKKyAgICAgICAgICAgIGNudCArPSAxCisKKyAgICAgICAgYXNzZXJ0ICdl eGVjdXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgICAgIGFzc2VydCAnc3RpbWUn IGluIHByb2Nlc3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgJ2V4aXRfY29kZScgaW4gcHJvY2Vz c19saXN0WzBdCisgICAgICAgIGFzc2VydCBwcm9jZXNzX2xpc3RbMF1bJ2V4aXRfY29kZSddIGlu IHNlbGYuZXhwZWN0ZWRfZXhpdF9jb2RlCisKKyAgICAgICAgaWYgc2VsZi5leHBlY3RlZF9jbWRf b3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAg ICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9wdCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxz J10pCisgICAgICAgIGlmIHNlbGYubm90X2V4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAg Zm9yIG9wdCBpbiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgICAgICBz ZWxmLmFzc2VydE5vdEluKG9wdCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10pCisKKyAgICAg ICAgIyBDaGVjayB0aGUgcHJvY2VzcyBkZXRhaWxzCisgICAgICAgIHBfZGV0YWlscyA9IHNlbGYu dGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfT9fPScuZm9ybWF0KAorICAgICAgICAgICAg am9iX2lkLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgKQorICAgICAgICBz ZWxmLmFzc2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcF9k ZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkK KworICAgICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97 MH0vezF9L3syfS8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFuZG9t LnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh bHMocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHBfZGV0YWlsc19kYXRhID0g anNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgIyBS ZXRyaWV2ZSB0aGUgcmVzdG9yZSBqb2IgcHJvY2VzcyBsb2dzCisgICAgICAgIGNudCA9IDAKKyAg ICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIG91dCwgZXJyLCBzdGF0dXMgPSBSZXN0b3JlSm9i VGVzdC5nZXRfcGFyYW1zKHBfZGV0YWlsc19kYXRhKQorICAgICAgICAgICAgaWYgc3RhdHVzIG9y IGNudCA+PSAxMDoKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBwX2RldGFp bHMgPSBzZWxmLnRlc3Rlci5nZXQoCisgICAgICAgICAgICAgICAgJy9taXNjL2JncHJvY2Vzcy97 MH0vezF9L3syfS8/Xz17M30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgam9iX2lkLCBv dXQsIGVyciwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICAgICApCisgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAg ICAgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNv ZGUoJ3V0Zi04JykpCisKKyAgICAgICAgICAgIGNudCArPSAxCisgICAgICAgICAgICB0aW1lLnNs ZWVwKDEpCisKKyAgICAgICAgIyBDaGVjayB0aGUgam9iIGlzIGNvbXBsZXRlLgorICAgICAgICBy ZXN0b3JlX2FjayA9IHNlbGYudGVzdGVyLnB1dCgnL21pc2MvYmdwcm9jZXNzL3swfScuZm9ybWF0 KGpvYl9pZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3RvcmVfYWNrLnN0YXR1c19j b2RlLCAyMDApCisgICAgICAgIHJlc3RvcmVfYWNrX3JlcyA9IGpzb24ubG9hZHMocmVzdG9yZV9h Y2suZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVz dG9yZV9hY2tfcmVzWydzdWNjZXNzJ10sIDEpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm IGdldF9wYXJhbXMoZGF0YSk6CisgICAgICAgIG91dCA9IDAKKyAgICAgICAgb3V0X2RvbmUgPSBG YWxzZQorICAgICAgICBlcnIgPSAwCisgICAgICAgIGVycl9kb25lID0gRmFsc2UKKyAgICAgICAg aWYgJ291dCcgaW4gZGF0YToKKyAgICAgICAgICAgIG91dCA9IGRhdGFbJ291dCddIGFuZCBkYXRh WydvdXQnXVsncG9zJ10KKworICAgICAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291dCddOgor ICAgICAgICAgICAgICAgIG91dF9kb25lID0gZGF0YVsnb3V0J11bJ2RvbmUnXQorCisgICAgICAg IGlmICdlcnInIGluIGRhdGE6CisgICAgICAgICAgICBlcnIgPSBkYXRhWydlcnInXSBhbmQgZGF0 YVsnZXJyJ11bJ3BvcyddCisKKyAgICAgICAgICAgIGlmICdkb25lJyBpbiBkYXRhWydlcnInXToK KyAgICAgICAgICAgICAgICBlcnJfZG9uZSA9IGRhdGFbJ2VyciddWydkb25lJ10KKworICAgICAg ICByZXR1cm4gb3V0LCBlcnIsIChvdXRfZG9uZSBhbmQgZXJyX2RvbmUpCisKKyAgICBkZWYgYWZ0 ZXIoc2VsZik6CisgICAgICAgIGNvbm5lY3Rpb24gPSB1dGlscy5nZXRfZGJfY29ubmVjdGlvbigK KyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYiddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJb J3VzZXJuYW1lJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAg ICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsn cG9ydCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3NzbG1vZGUnXQorICAgICAgICApCisg ICAgICAgIHV0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgc2VsZi5wYXJhbXNbJ2RhdGFi YXNlJ10pCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3Rf cmVzdG9yZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3Rv cmUvdGVzdHMvdGVzdF9yZXN0b3JlX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjljZDgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVzdG9yZV9jcmVhdGVfam9iX3VuaXRf dGVzdC5weQpAQCAtMCwwICsxLDMxOCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1w b3J0IHN5cworaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udG9vbHMu cmVzdG9yZSBpbXBvcnQgUmVzdG9yZU1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBp bXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25v ZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0 aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBz ZXJ2ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5k YXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFzZV91dGlscworCitp ZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gs IE1hZ2ljTW9jaworZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBN YWdpY01vY2sKKworCitjbGFzcyBSZXN0b3JlQ3JlYXRlSm9iVGVzdChCYXNlVGVzdEdlbmVyYXRv cik6CisgICAgIiIiVGVzdCB0aGUgUmVzdG9yZUNyZWF0ZUpvYiBjbGFzcyIiIgorICAgIHNjZW5h cmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgb2JqZWN0IHdpdGggZGVmYXVsdCBvcHRp b25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3Rv cmVfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAg ICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAg ICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAg ICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICBjdXN0b209 RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg YmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAg ICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnCisgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAg ICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJ10sCisgICAgICAgICAgICAgbm90 X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1b MCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9yZSBvYmplY3Qgd2l0 aCB0aGUgc2VjdGlvbnMgb3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNs YXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAg ICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0 NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAg ZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9y ZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0 X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAg ICAgICAgICAgICAgbm9fb2Zfam9icz0nMicsCisgICAgICAgICAgICAgICAgIGN1c3RvbT1GYWxz ZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hl bWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGRhdGE9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgcHJlX2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgcG9zdF9kYXRhPVRydWUs CisgICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBvbmx5 X3NjaGVtYT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3Jl L2pvYi97MH0nLAorICAgICAgICAgICAgICMgUGxlYXNlIGluY2x1ZGUgc2VjdGlvbnMgZGF0YSBo ZXJlLCByaWdodCBub3cgdGhpcyBpcyBhIGJ1ZworICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9v cHRzPVsnLS12ZXJib3NlJywgJy0tam9icycsICcyJ10sCisgICAgICAgICAgICAgbm90X2V4cGVj dGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgICMgQmVsb3cgb3B0aW9ucyBzaG91bGQgYmUg ZW5hYmxlZCBvbmNlIHdlIGZpeCB0aGUgaXNzdWUgIzMzNjgKKyAgICAgICAgICAgICAjIG5vdF9l eHBlY3RlZF9jbWRfb3B0cz1bJy0tZGF0YS1vbmx5JywgJy0tc2NoZW1hLW9ubHknXSwKKyAgICAg ICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdLAorICAgICAgICAgKSksCisgICAg ICAgICgnV2hlbiByZXN0b3JlIHRoZSBvYmplY3Qgd2l0aCBUeXBlIG9mIG9iamVjdHMnLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9zZXJ2ZXIn LAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAg ICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2VybmFt ZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAg ICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIG5vX29mX2pvYnM9JzInLAor ICAgICAgICAgICAgICAgICBjdXN0b209RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9 VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFi bGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICBvbmx5X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9zY2hlbWE9VHJ1 ZSwKKyAgICAgICAgICAgICAgICAgZG5zX293bmVyPVRydWUKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRf Y21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1kYXRhLW9ubHknXSwKKyAgICAgICAgICAgICBub3Rf ZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgIyBCZWxvdyBvcHRpb25zIHNob3Vs ZCBiZSBlbmFibGVkIG9uY2Ugd2UgZml4IHRoZSBpc3N1ZSAjMzM2OAorICAgICAgICAgICAgICMg bm90X2V4cGVjdGVkX2NtZF9vcHRzPVsnLS1zY2hlbWEtb25seScsICctLW5vLW93bmVyJ10sCisg ICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXSwKKyAgICAgICAgICkpLAor ICAgICAgICAoJ1doZW4gcmVzdG9yZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBEbyBub3Qgc2F2ZScs CisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAg ICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3Nl cnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9z dD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIHVz ZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1k aWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAg ICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVl LAorICAgICAgICAgICAgICAgICBjdXN0b209RmFsc2UsCisgICAgICAgICAgICAgICAgIHNjaGVt YXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgZG5zX293bmVyPVRydWUsCisgICAg ICAgICAgICAgICAgIGRuc19wcml2aWxlZ2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX3Rh Ymxlc3BhY2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9kYXRhPUZhbHNlCisgICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAgICAg ICAgICMgQWRkICctLW5vLXByaXZpbGVnZXMnIHRvIHRoZSBleHBlY3RlZF9jbWQgb25jZSAjMzM2 MyBmaXhlZAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS1uby1vd25lcicsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXRhYmxlc3BhY2VzJ10sCisgICAg ICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVk X2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9y ZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBRdWVyaWVzJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIHBv cnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3Rf cmVzdG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxl PSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAor ICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9 W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgY2xlYW49VHJ1ZSwKKyAgICAgICAgICAg ICAgICAgaW5jbHVkZV9jcmVhdGVfZGF0YWJhc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2lu Z2xlX3RyYW5zYWN0aW9uPVRydWUsCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9 Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS1j cmVhdGUnLCAnLS1jbGVhbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXNp bmdsZS10cmFuc2FjdGlvbiddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1b XSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICAp KSwKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgb2JqZWN0IHdpdGggb3B0aW9uIC0gRGlzYmFsZScs CisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAg ICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX2Zp bGUnLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9 J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAg ICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2Vy bmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAg ICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAor ICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10s CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg IGRpc2FibGVfdHJpZ2dlcj1UcnVlLAorICAgICAgICAgICAgICAgICBub19kYXRhX2ZhaWxfdGFi bGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9zY2hlbWE9RmFsc2UKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAg IyBBZGQgJy0tbm8tZGF0YS1mb3ItZmFpbGVkLXRhYmxlcycgaW50bworICAgICAgICAgICAgICMg ZXhwZWN0ZWRfY21kX29wdHMgb25jZSAjMzM2MyBmaXhlZAorICAgICAgICAgICAgIGV4cGVjdGVk X2NtZF9vcHRzPVsnLS1kaXNhYmxlLXRyaWdnZXJzJ10sCisgICAgICAgICAgICAgbm90X2V4cGVj dGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9u ZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9yZSBvYmplY3Qgd2l0aCBvcHRp b24gLSBNaXNjZWxsYW5lb3VzJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3Nf cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBu YW1lPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAg ICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisg ICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1 cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAg ICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAg ICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVz JywKKyAgICAgICAgICAgICAgICAgdXNlX3NldF9zZXNzaW9uX2F1dGg9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgZXhpdF9vbl9lcnJvcj1UcnVlLAorICAgICAgICAgICAgICksCisgICAgICAgICAg ICAgdXJsPScvcmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAgICAjIEFkZCAnLS11c2Vfc2V0 X3Nlc3Npb25fYXV0aCcgaW50bworICAgICAgICAgICAgICMgZXhwZWN0ZWRfY21kX29wdHMgb25j ZSAjMzM2MyBmaXhlZAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS1leGl0LW9u LWVycm9yJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAg ICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgIF0K KworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJbJ2RlZmF1bHRf YmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAg ICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhzIGlzIG5vdCBzZXQgZm9yIHRoZSBzZXJ2 ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyduYW1lJ10K KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4u dG9vbHMucmVzdG9yZS5TZXJ2ZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0b3Jl LmN1cnJlbnRfdXNlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuUmVzdG9y ZU1lc3NhZ2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0b3JlLmZpbGVuYW1lX3dp dGhfZmlsZV9tYW5hZ2VyX3BhdGgnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0b3Jl LkJhdGNoUHJvY2VzcycpCisgICAgQHBhdGNoKCdwZ2FkbWluLnV0aWxzLmRyaXZlci5wc3ljb3Bn Mi5zZXJ2ZXJfbWFuYWdlci5TZXJ2ZXJNYW5hZ2VyLicKKyAgICAgICAgICAgJ2V4cG9ydF9wYXNz d29yZF9lbnYnKQorICAgIGRlZiBydW5UZXN0KHNlbGYsIGV4cG9ydF9wYXNzd29yZF9lbnZfbW9j aywgYmF0Y2hfcHJvY2Vzc19tb2NrLAorICAgICAgICAgICAgICAgIGZpbGVuYW1lX21vY2ssIHJl c3RvcmVfbWVzc2FnZV9tb2NrLAorICAgICAgICAgICAgICAgIGN1cnJlbnRfdXNlcl9tb2NrLCBz ZXJ2ZXJfbW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6CisgICAgICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgaG9zdCwgcG9ydCwgaWQsIHVzZXJuYW1lKToKKyAg ICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0 ID0gaG9zdAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgICAgICAg ICBzZWxmLmlkID0gaWQKKyAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUK KworICAgICAgICBzZWxmLmRiX25hbWUgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBh cmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lkIl0KKworICAgICAgICBtb2Nr X29iaiA9IFRlc3RNb2NrU2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWyduYW1lJ10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9ydCdd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd1c2VybmFt ZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBtb2NrX3Jl c3VsdCA9IHNlcnZlcl9tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUKKyAgICAgICAg bW9ja19yZXN1bHQuZmlyc3QucmV0dXJuX3ZhbHVlID0gbW9ja19vYmoKKworICAgICAgICBmaWxl bmFtZV9tb2NrLnJldHVybl92YWx1ZSA9IHNlbGYucGFyYW1zWydmaWxlJ10KKworICAgICAgICBi YXRjaF9wcm9jZXNzX21vY2suc2V0X2Vudl92YXJpYWJsZXMgPSBNYWdpY01vY2soCisgICAgICAg ICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICApCisgICAgICAgIGJhdGNoX3Byb2Nlc3Nf bW9jay5zdGFydCA9IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVlCisg ICAgICAgICkKKworICAgICAgICBleHBvcnRfcGFzc3dvcmRfZW52X21vY2sucmV0dXJuX3ZhbHVl ID0gVHJ1ZQorCisgICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNlcnZlcl91dGlscy5jb25uZWN0 X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgaWYgc2VydmVyX3Jlc3BvbnNl WyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoKKyAgICAgICAgICAgIGRiX293bmVyID0g c2VydmVyX3Jlc3BvbnNlWydkYXRhJ11bJ3VzZXInXVsnbmFtZSddCisgICAgICAgICAgICBzZWxm LmRhdGEgPSBkYXRhYmFzZV91dGlscy5nZXRfZGJfZGF0YShkYl9vd25lcikKKyAgICAgICAgICAg IHNlbGYuZGJfbmFtZSA9IHNlbGYuZGF0YVsnbmFtZSddCisKKyAgICAgICAgdXJsID0gc2VsZi51 cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkKQorCisgICAgICAgICMgQ3JlYXRlIHRoZSByZXN0b3Jl IGpvYgorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1zKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9q c29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIw MCkKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNv ZGUoJ3V0Zi04JykpCisgICAgICAgIGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnam9i X2lkJ10KKworICAgICAgICBhc3NlcnQgcmVzdG9yZV9tZXNzYWdlX21vY2suY2FsbGVkCisgICAg ICAgIGFzc2VydCBiYXRjaF9wcm9jZXNzX21vY2suY2FsbGVkCisKKyAgICAgICAgaWYgc2VsZi5l eHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5leHBlY3RlZF9j bWRfb3B0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgICAg ICAgICBvcHQsCisgICAgICAgICAgICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsX2Fy Z3NfbGlzdFswXVsxXVsnYXJncyddCisgICAgICAgICAgICAgICAgKQorICAgICAgICBpZiBzZWxm Lm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5ub3Rf ZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigKKyAg ICAgICAgICAgICAgICAgICAgb3B0LAorICAgICAgICAgICAgICAgICAgICBiYXRjaF9wcm9jZXNz X21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXQorICAgICAgICAgICAgICAgICkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX21l c3NhZ2UucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVzdG9yZV9t ZXNzYWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNDUyODYKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVz dG9yZV9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsNzYgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisj IHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0g MjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CitpbXBvcnQgc3lzCisKK2Zyb20gcGdhZG1pbi50b29scy5yZXN0b3JlIGltcG9ydCBSZXN0b3Jl TWVzc2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRv cgorCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQg cGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCisKK2Ns YXNzIFJlc3RvcmVNZXNzYWdlVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0 aGUgUmVzdG9yZU1lc3NhZ2UgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgn V2hlbiByZXN0b3JlIG9iamVjdCcsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNz X3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAg bmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScs CisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScs CisgICAgICAgICAgICAgICAgICAgICAncmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAg ICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsaG9zdCcsCisgICAgICAg ICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICc1NDQ0JywKKyAg ICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICdw b3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAg ICAgICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAncG9zdGdy ZXMnCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0iL3Rlc3RfcGF0 aC9wZ19yZXN0b3JlIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNn PSJSZXN0b3JpbmcgYmFja3VwIG9uIHRoZSBzZXJ2ZXIgIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAiJ3Rlc3RfcmVzdG9yZV9zZXJ2ZXIgKGxvY2FsaG9zdDo1NDQ0KScuLi4iLAorICAgICAg ICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPScvdGVzdF9wYXRoL3BnX3Jlc3RvcmUgLS1maWxl ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnInJlc3RvcmVfZmlsZSIgLS1o b3N0ICJsb2NhbGhvc3QiJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLS1w b3J0ICI1NDQ0IiAtLXVzZXJuYW1lICJwb3N0Z3JlcyIgJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkIC0tZGF0YWJhc2UgInBvc3RncmVzIicKKworICAg ICAgICAgKSkKKyAgICBdCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5SZXN0 b3JlTWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIGRlZiBydW5UZXN0KHNlbGYsIGdl dF9zZXJ2ZXJfZGV0YWlsc19tb2NrKToKKyAgICAgICAgZ2V0X3NlcnZlcl9kZXRhaWxzX21vY2su cmV0dXJuX3ZhbHVlID0gXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ25hbWUnXSxc CisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLFwKKyAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWydwb3J0J10KKworICAgICAgICByZXN0b3JlX29iaiA9IFJlc3RvcmVN ZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3NpZCddLAorICAgICAgICAg ICAgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10sCisgICAgICAgICAgICAqc2VsZi5jbGFzc19w YXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisKKyAgICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQg bWVzc2FnZSByZXR1cm5lZAorICAgICAgICBhc3NlcnQgcmVzdG9yZV9vYmoubWVzc2FnZSA9PSBz ZWxmLmV4dGVjdGVkX21zZworCisgICAgICAgICMgQ2hlY2sgdGhlIGNvbW1hbmQKKyAgICAgICAg b2JqX2RldGFpbHMgPSByZXN0b3JlX29iai5kZXRhaWxzKHNlbGYuY2xhc3NfcGFyYW1zWydjbWQn XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3Nf cGFyYW1zWydhcmdzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5leHBldGNlZF9kZXRh aWxzX2NtZCwgb2JqX2RldGFpbHMpCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9weXRob25f dGVzdF91dGlscy90ZXN0X3V0aWxzLnB5IGIvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRp bHMvdGVzdF91dGlscy5weQppbmRleCAzZTUxN2I2Li5kNWQzYTBmIDEwMDY0NAotLS0gYS93ZWIv cmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5CisrKyBiL3dlYi9yZWdy ZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkKQEAgLTIxLDYgKzIxLDggQEAg aW1wb3J0IGNvbmZpZwogaW1wb3J0IHJlZ3Jlc3Npb24KIGZyb20gcmVncmVzc2lvbiBpbXBvcnQg dGVzdF9zZXR1cAogCitmcm9tIHBnYWRtaW4udXRpbHMucHJlZmVyZW5jZXMgaW1wb3J0IFByZWZl cmVuY2VzCisKIFNFUlZFUl9HUk9VUCA9IHRlc3Rfc2V0dXAuY29uZmlnX2RhdGFbJ3NlcnZlcl9n cm91cCddCiBmaWxlX25hbWUgPSBvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKQogCkBAIC04Niw3 ICs4OCw4IEBAIGRlZiBnZXRfY29uZmlnX2RhdGEoKToKICAgICAgICAgICAgICAgICAiZGJfcGFz c3dvcmQiOiBzcnZbJ2RiX3Bhc3N3b3JkJ10sCiAgICAgICAgICAgICAgICAgInJvbGUiOiAiIiwK ICAgICAgICAgICAgICAgICAic3NsbW9kZSI6IHNydlsnc3NsbW9kZSddLAotICAgICAgICAgICAg ICAgICJ0YWJsZXNwYWNlX3BhdGgiOiBzcnYuZ2V0KCd0YWJsZXNwYWNlX3BhdGgnLCBOb25lKQor ICAgICAgICAgICAgICAgICJ0YWJsZXNwYWNlX3BhdGgiOiBzcnYuZ2V0KCd0YWJsZXNwYWNlX3Bh dGgnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMiOiBzcnYu Z2V0KCdkZWZhdWx0X2JpbmFyeV9wYXRocycsIE5vbmUpCiAgICAgICAgICAgICB9CiAgICAgICAg ICAgICBpZiAnZGJfdHlwZScgaW4gc3J2OgogICAgICAgICAgICAgICAgIGRhdGFbJ2RiX3R5cGUn XSA9IHNydlsnZGJfdHlwZSddCkBAIC00NDUsNiArNDQ4LDEzIEBAIGRlZiBkZWxldGVfc2VydmVy X3dpdGhfYXBpKHRlc3Rlciwgc2lkKToKICAgICAgICAgdXJsID0gJy9icm93c2VyL3NlcnZlci9v YmovJyArIHN0cihTRVJWRVJfR1JPVVApICsgIi8iCiAgICAgICAgICMgQ2FsbCBBUEkgdG8gZGVs ZXRlIHRoZSBzZXJ2ZXIKICAgICAgICAgcmVzcG9uc2UgPSB0ZXN0ZXIuZGVsZXRlKHVybCArIHN0 cihzaWQpKQorCisgICAgICAgIGNudCA9IDAKKyAgICAgICAgZm9yIHMgaW4gcmVncmVzc2lvbi5w YXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXToKKyAgICAgICAgICAgIGlmIHNbJ3NlcnZlcl9pZCdd ID09IGludChzaWQpOgorICAgICAgICAgICAgICAgIGRlbCByZWdyZXNzaW9uLnBhcmVudF9ub2Rl X2RpY3RbInNlcnZlciJdW2NudF0KKyAgICAgICAgICAgIGNudCArPSAxCisKICAgICBleGNlcHQg RXhjZXB0aW9uOgogICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikK IApAQCAtNTk2LDYgKzYwNiw0NyBAQCBkZWYgZ2V0X2RiX3NlcnZlcihzaWQpOgogICAgIHJldHVy biBjb25uZWN0aW9uCiAKIAorZGVmIHNldF9wcmVmZXJlbmNlKGRlZmF1bHRfYmluYXJ5X3BhdGgp OgorICAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoY29uZmlnLlRFU1RfU1FMSVRFX1BBVEgpCisg ICAgY3VyID0gY29ubi5jdXJzb3IoKQorCisgICAgcGVyZiA9IFByZWZlcmVuY2VzLm1vZHVsZSgn cGF0aHMnKQorICAgIHBnX3BhdGhfcHJlZiA9IHBlcmYucHJlZmVyZW5jZSgncGdfYmluX2Rpcicp CisKKyAgICB1c2VyX3ByZWYgPSBjdXIuZXhlY3V0ZSgKKyAgICAgICAgJ1NFTEVDVCBwaWQsIHVp ZCBGUk9NIHVzZXJfcHJlZmVyZW5jZXMgd2hlcmUgcGlkPSVzJyAlIHBnX3BhdGhfcHJlZi5waWQK KyAgICApCisgICAgdXNlcl9wcmVmID0gdXNlcl9wcmVmLmZldGNob25lKCkKKworICAgIGlmIHVz ZXJfcHJlZjoKKyAgICAgICAgY3VyLmV4ZWN1dGUoJ1VQREFURSB1c2VyX3ByZWZlcmVuY2VzIFNF VCB2YWx1ZSA9ID8gV0hFUkUgcGlkID0gPycsCisgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0 X2JpbmFyeV9wYXRoWydwZyddLCBwZ19wYXRoX3ByZWYucGlkKSkKKyAgICBlbHNlOgorICAgICAg ICBwZ19wcmVmX2RldGFpbHMgPSAocGdfcGF0aF9wcmVmLnBpZCwgMSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BnJ10pCisgICAgICAgIGN1ci5leGVj dXRlKCdJTlNFUlQgSU5UTyB1c2VyX3ByZWZlcmVuY2VzKHBpZCwgdWlkLCB2YWx1ZSknCisgICAg ICAgICAgICAgICAgICAgICcgVkFMVUVTICg/LD8sPyknLCBwZ19wcmVmX2RldGFpbHMpCisKKyAg ICBwcGFzX3BhdGhfcHJlZiA9IHBlcmYucHJlZmVyZW5jZSgncHBhc19iaW5fZGlyJykKKworICAg IHVzZXJfcHJlZiA9IGN1ci5leGVjdXRlKAorICAgICAgICAnU0VMRUNUIHBpZCwgdWlkIEZST00g dXNlcl9wcmVmZXJlbmNlcyB3aGVyZSBwaWQ9JXMnICUKKyAgICAgICAgcHBhc19wYXRoX3ByZWYu cGlkCisgICAgKQorICAgIHVzZXJfcHJlZiA9IHVzZXJfcHJlZi5mZXRjaG9uZSgpCisKKyAgICBp ZiB1c2VyX3ByZWY6CisgICAgICAgIGN1ci5leGVjdXRlKCdVUERBVEUgdXNlcl9wcmVmZXJlbmNl cyBTRVQgdmFsdWUgPSA/IFdIRVJFIHBpZCA9ID8gJywKKyAgICAgICAgICAgICAgICAgICAgKGRl ZmF1bHRfYmluYXJ5X3BhdGhbJ3BwYXMnXSwgcHBhc19wYXRoX3ByZWYucGlkKSkKKyAgICBlbHNl OgorICAgICAgICBwcGFzX3ByZWZfZGV0YWlscyA9IChwcGFzX3BhdGhfcHJlZi5waWQsIDEsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BwYXMnXSkK KyAgICAgICAgY3VyLmV4ZWN1dGUoJ0lOU0VSVCBJTlRPIHVzZXJfcHJlZmVyZW5jZXMocGlkLCB1 aWQsIHZhbHVlKScKKyAgICAgICAgICAgICAgICAgICAgJyBWQUxVRVMgKD8sPyw/KScsIHBwYXNf cHJlZl9kZXRhaWxzKQorCisgICAgY29ubi5jb21taXQoKQorCisKIGRlZiByZW1vdmVfZGJfZmls ZSgpOgogICAgICIiIlRoaXMgZnVuY3Rpb24gdXNlIHRvIHJlbW92ZSBTUUxpdGUgREIgZmlsZSIi IgogICAgIGlmIG9zLnBhdGguaXNmaWxlKGNvbmZpZy5URVNUX1NRTElURV9QQVRIKToKZGlmZiAt LWdpdCBhL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5IGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVz dHMucHkKaW5kZXggZDc4NjY5Mi4uMGExZDQ4ZSAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24v cnVudGVzdHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKQEAgLTExNCw2ICsx MTQsOSBAQCB0ZXN0X2NsaWVudCA9IGFwcC50ZXN0X2NsaWVudCgpCiBkcml2ZXIgPSBOb25lCiBh cHBfc3RhcnRlciA9IE5vbmUKIGhhbmRsZV9jbGVhbnVwID0gTm9uZQorYXBwLlBHQURNSU5fUlVO VElNRSA9IFRydWUKK2lmIGNvbmZpZy5TRVJWRVJfTU9ERSBpcyBUcnVlOgorICAgIGFwcC5QR0FE TUlOX1JVTlRJTUUgPSBGYWxzZQogCiBzZXRhdHRyKHVuaXRfdGVzdC5yZXN1bHQuVGVzdFJlc3Vs dCwgInBhc3NlZCIsIFtdKQogCkBAIC0yMzQsNyArMjM3LDYgQEAgZGVmIGdldF90ZXN0X21vZHVs ZXMoYXJndW1lbnRzKToKICAgICAjIFNvcnQgbW9kdWxlIGxpc3Qgc28gdGhhdCB0ZXN0IHN1aXRl IGV4ZWN1dGVzIHRoZSB0ZXN0IGNhc2VzIHNlcXVlbnRpYWxseQogICAgIG1vZHVsZV9saXN0ID0g VGVzdHNHZW5lcmF0b3JSZWdpc3RyeS5yZWdpc3RyeS5pdGVtcygpCiAgICAgbW9kdWxlX2xpc3Qg PSBzb3J0ZWQobW9kdWxlX2xpc3QsIGtleT1sYW1iZGEgbW9kdWxlX3R1cGxlOiBtb2R1bGVfdHVw bGVbMF0pCi0KICAgICByZXR1cm4gbW9kdWxlX2xpc3QKIAogCkBAIC0zOTMsNiArMzk1LDE1IEBA IGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgICAgICAgICAjIENyZWF0ZSB0ZXN0IHNl cnZlcgogICAgICAgICAgICAgc2VydmVyX2luZm9ybWF0aW9uID0gdGVzdF91dGlscy5jcmVhdGVf cGFyZW50X3NlcnZlcl9ub2RlKHNlcnZlcikKIAorICAgICAgICAgICAgaWYgc2VydmVyWydkZWZh dWx0X2JpbmFyeV9wYXRocyddIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRlc3RfdXRp bHMuc2V0X3ByZWZlcmVuY2Uoc2VydmVyWydkZWZhdWx0X2JpbmFyeV9wYXRocyddKQorCisgICAg ICAgICAgICAgICAgY29uZmlnLkRFRkFVTFRfQklOQVJZX1BBVEhTID0geworICAgICAgICAgICAg ICAgICAgICAicGciOiBzdHIoc2VydmVyWydkZWZhdWx0X2JpbmFyeV9wYXRocyddWydwZyddKSwK KyAgICAgICAgICAgICAgICAgICAgInBwYXMiOiBzdHIoc2VydmVyWydkZWZhdWx0X2JpbmFyeV9w YXRocyddWydwcGFzJ10pLAorICAgICAgICAgICAgICAgICAgICAiZ3BkYiI6ICIiCisgICAgICAg ICAgICAgICAgfQorCiAgICAgICAgICAgICBzdWl0ZSA9IGdldF9zdWl0ZSh0ZXN0X21vZHVsZV9s aXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGVzdF9jbGllbnQsCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lv bi90ZXN0X2NvbmZpZy5qc29uLmluIGIvd2ViL3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5p bgppbmRleCBlYmMxNDY2Li4xNWIxMzNhIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi90ZXN0 X2NvbmZpZy5qc29uLmluCisrKyBiL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4K QEAgLTIzLDcgKzIzLDEyIEBACiAgICAgICAibWFpbnRlbmFuY2VfZGIiOiAicG9zdGdyZXMiLAog ICAgICAgInNzbG1vZGUiOiAicHJlZmVyIiwKICAgICAgICJ0YWJsZXNwYWNlX3BhdGgiOiAiIiwK LSAgICAgICJlbmFibGVkIjogdHJ1ZQorICAgICAgImVuYWJsZWQiOiB0cnVlLAorICAgICAgImRl ZmF1bHRfYmluYXJ5X3BhdGhzIjogeworICAgICAgICAicGciOiAiL29wdC9Qb3N0Z3JlU1FMLzku NC9iaW4vIiwKKyAgICAgICAgInBwYXMiOiAiL29wdC9lZGIvYXMxMC9iaW4vIiwKKyAgICAgICAg ImdwZGIiOiAiIgorICAgICAgfQogICAgIH0KICAgXSwKICAgInNlcnZlcl91cGRhdGVfZGF0YSI6 IFsK --000000000000d87135056d92933d--