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 1fSgnH-0007UM-Ql for pgadmin-hackers@arkaria.postgresql.org; Tue, 12 Jun 2018 10:44:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fSgnG-0000NU-6t for pgadmin-hackers@arkaria.postgresql.org; Tue, 12 Jun 2018 10:44:54 +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 1fSgnF-0000NJ-5z for pgadmin-hackers@lists.postgresql.org; Tue, 12 Jun 2018 10:44:54 +0000 Received: from mail-ot0-x242.google.com ([2607:f8b0:4003:c0f::242]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fSgnA-0005Jd-2k for pgadmin-hackers@postgresql.org; Tue, 12 Jun 2018 10:44:51 +0000 Received: by mail-ot0-x242.google.com with SMTP id h6-v6so27478287otj.0 for ; Tue, 12 Jun 2018 03:44:47 -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=jSuDrxnFDewVVonexBSXskZWThYIGPO3mTSIcaH5wNA=; b=I8YDIBjhWW37qBNA2n68nQgur/sfK/wHgJdirh/En7g46vGf6MGmGoN8GSx5cyOOFV ENUe+p9Oaz5yJ8JTw9dBy+JJm6yt97c7EP6L8hFOadxhRn2roDevA5ZNs9uhwUqJhjXG HzTOX9bj6dS7F0QUOgngHt4B0YdeBzgTMYM9EPhTcfpvStRUKxk8ZQyaMVGJxi3iQnUu KB2I9py6T/nA62GcwspFX4g30MxN5KMBCYdKnLjBaTGdrAG9voH1V199SCSyz2FERcAH 04UHfJKv0vEAzeNF0oUM+711sDi6KfYgJcfJnPO00onXS78wBaBJ7JG3hO749uwPnkHi Wm7w== 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=jSuDrxnFDewVVonexBSXskZWThYIGPO3mTSIcaH5wNA=; b=TAgHhzYNE11V4kIUWAr6Tz9YBLSYBgCp1O0ZaitkrDgDwuHBsv4hAZEfB5mfMXZ811 bYIGrmAL7Su4fI5dqfVEskxGZosI4x8eEORX6plCpO1QgMe+rj2+vQGgD4iafkREpMKS tAHaZ/cyujL5l1DGg2m9buxmWv725yKGGb70NoPwxB5C0Ynrsu4aTInK/hUUYqoliQrv ylC4kQYB9kB8SywoLYsxSunpnQJoZ7JPcIpLJ6sowDBy8/j+b/rggcT7NiqpaHGD94K8 nlrQJGN/aDujGtZtGYPvL+Bl6s4SXsoHnjpTdECkcjxKGfGNBBfCFsPI2wovT+rytlhO JQgA== X-Gm-Message-State: APt69E0WLgsaVEyul4pMZvsGpD1s27e5yTUNYukYGk1PdCeiv9DExwRk X/5qiOXuhkJk3ejvKeaQ0BoUCf6ZvJ2qOcyYZ+MceA== X-Google-Smtp-Source: ADUXVKJL7vCn4lKVs2TOtKeTLdIlgkCrMZeI9ht+yGDPHSflukXbr8UqiaPj70OHyiax6bsoZs2N/bfqt3Ym11u+5qE= X-Received: by 2002:a9d:5302:: with SMTP id g2-v6mr1830130oth.277.1528800287128; Tue, 12 Jun 2018 03:44:47 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:4081:0:0:0:0:0 with HTTP; Tue, 12 Jun 2018 03:44:45 -0700 (PDT) In-Reply-To: References: From: Khushboo Vashi Date: Tue, 12 Jun 2018 16:14:45 +0530 Message-ID: Subject: Re: [pgadmin4][Patch]: Test cases for the backup module To: Dave Page Cc: Victoria Henry , Joao De Almeida Pereira , pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000000c345e056e6f8e29" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000000c345e056e6f8e29 Content-Type: multipart/alternative; boundary="0000000000000c345a056e6f8e27" --0000000000000c345a056e6f8e27 Content-Type: text/plain; charset="UTF-8" Please find the attached updated patch with some code cleanup. On Tue, Jun 12, 2018 at 3:54 PM, Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > Hi, > > Please find the attached patch excluding feature test cases. > Python test cases are working fine, so we can commit this patch. I am > working on fixing the feature tests which are failing on the different > window sizes. > > Thanks, > Khushboo > > On Fri, Jun 8, 2018 at 2:38 PM, Dave Page wrote: > >> Hi >> >> On Fri, Jun 8, 2018 at 6:33 AM, Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> Hi Dave, >>> >>> As per our discussion I have changed the window size to 1280X800, before >>> it was 1280X900. >>> Please find the attached updated patch >>> >> >> I'm not sure that actually made any difference on my system. The window >> continued to look taller than it is wide, so I wonder if the code to set >> the size is being ignored, or is at the wrong place? >> >> Anyway, I got 10 failures with this patch :-( >> >> ====================================================================== >> >> ERROR: runTest (pgadmin.feature_tests.pg_util >> ities_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 97, in runTest >> >> self.page.find_by_xpath("//div[contains(@class,'wcFloatingFocus')" >> >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", >> line 171, in find_by_xpath >> >> lambda driver: driver.find_element_by_xpath(xpath) >> >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", >> line 263, in wait_for_element >> >> return self._wait_for("element to exist", element_if_it_exists) >> >> 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-packa >> ges/selenium/webdriver/support/wait.py", line 80, in until >> >> raise TimeoutException(message, screen, stacktrace) >> >> TimeoutException: Message: Timed out waiting for element to exist >> >> >> >> ====================================================================== >> >> ERROR: runTest (pgadmin.feature_tests.xss_che >> cks_pgadmin_debugger_test.CheckDebuggerForXssFeatureTest) >> >> Tests to check if Debugger is vulnerable to XSS >> >> ---------------------------------------------------------------------- >> >> Traceback (most recent call last): >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py", >> line 42, in runTest >> >> self._function_node_expandable() >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py", >> line 57, in _function_node_expandable >> >> self.page.select_tree_item("a_test_function()") >> >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", >> line 135, in select_tree_item >> >> "' and @class='aciTreeItem']").click() >> >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", >> line 171, in find_by_xpath >> >> lambda driver: driver.find_element_by_xpath(xpath) >> >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", >> line 263, in wait_for_element >> >> return self._wait_for("element to exist", element_if_it_exists) >> >> 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-packa >> ges/selenium/webdriver/support/wait.py", line 80, in until >> >> raise TimeoutException(message, screen, stacktrace) >> >> TimeoutException: Message: Timed out waiting for element to exist >> >> >> >> ====================================================================== >> >> ERROR: runTest (pgadmin.tools.backup.tests.te >> st_create_backup_job.BackupJobTest) >> >> When backup the object with the default options >> >> ---------------------------------------------------------------------- >> >> Traceback (most recent call last): >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/test_create_backup_job.py", >> line 58, in runTest >> >> self.assertNotIn >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/test_backup_utils.py", >> line 33, in run_backup_job >> >> random.randint(1, 9999999))) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 830, in get >> >> return self.open(*args, **kw) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/testing.py", >> line 127, in open >> >> follow_redirects=follow_redirects) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 803, in open >> >> response = self.run_wsgi_app(environ, buffered=buffered) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 716, in run_wsgi_app >> >> rv = run_wsgi_app(self.application, environ, buffered=buffered) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 923, in run_wsgi_app >> >> app_rv = app(environ, start_response) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1997, in __call__ >> >> return self.wsgi_app(environ, start_response) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1985, in wsgi_app >> >> response = self.handle_exception(e) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1540, in handle_exception >> >> reraise(exc_type, exc_value, tb) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1982, in wsgi_app >> >> response = self.full_dispatch_request() >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1614, in full_dispatch_request >> >> rv = self.handle_user_exception(e) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1517, in handle_user_exception >> >> reraise(exc_type, exc_value, tb) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1612, in full_dispatch_request >> >> rv = self.dispatch_request() >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1598, in dispatch_request >> >> return self.view_functions[rule.endpoint](**req.view_args) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py", >> line 792, in decorated_view >> >> return func(*args, **kwargs) >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/__init__.py", >> line 62, in index >> >> return make_response(response=BatchProcess.list()) >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/processes.py", >> line 584, in list >> >> details = desc.details(p.command, args) >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", >> line 159, in details >> >> name, host, port = self.get_server_details() >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", >> line 122, in get_server_details >> >> host = manager.local_bind_host if manager.use_ssh_tunnel else s.host >> >> AttributeError: 'NoneType' object has no attribute 'use_ssh_tunnel' >> >> >> ====================================================================== >> >> ERROR: runTest (pgadmin.tools.maintenance.tes >> ts.test_create_maintenance_job.MaintenanceJobTest) >> >> When maintenance the object with the default options >> >> ---------------------------------------------------------------------- >> >> Traceback (most recent call last): >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/maintenance/tes >> ts/test_create_maintenance_job.py", line 71, in runTest >> >> random.randint(1, 9999999))) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 830, in get >> >> return self.open(*args, **kw) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/testing.py", >> line 127, in open >> >> follow_redirects=follow_redirects) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 803, in open >> >> response = self.run_wsgi_app(environ, buffered=buffered) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 716, in run_wsgi_app >> >> rv = run_wsgi_app(self.application, environ, buffered=buffered) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 923, in run_wsgi_app >> >> app_rv = app(environ, start_response) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1997, in __call__ >> >> return self.wsgi_app(environ, start_response) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1985, in wsgi_app >> >> response = self.handle_exception(e) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1540, in handle_exception >> >> reraise(exc_type, exc_value, tb) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1982, in wsgi_app >> >> response = self.full_dispatch_request() >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1614, in full_dispatch_request >> >> rv = self.handle_user_exception(e) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1517, in handle_user_exception >> >> reraise(exc_type, exc_value, tb) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1612, in full_dispatch_request >> >> rv = self.dispatch_request() >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1598, in dispatch_request >> >> return self.view_functions[rule.endpoint](**req.view_args) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py", >> line 792, in decorated_view >> >> return func(*args, **kwargs) >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/__init__.py", >> line 62, in index >> >> return make_response(response=BatchProcess.list()) >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/processes.py", >> line 584, in list >> >> details = desc.details(p.command, args) >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", >> line 159, in details >> >> name, host, port = self.get_server_details() >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", >> line 122, in get_server_details >> >> host = manager.local_bind_host if manager.use_ssh_tunnel else s.host >> >> AttributeError: 'NoneType' object has no attribute 'use_ssh_tunnel' >> >> >> ====================================================================== >> >> ERROR: runTest (pgadmin.tools.restore.tests.t >> est_create_restore_job.RestoreJobTest) >> >> When restore the object with the default options >> >> ---------------------------------------------------------------------- >> >> Traceback (most recent call last): >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/restore/tests/test_create_restore_job.py", >> line 95, in runTest >> >> self.create_backup() >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/restore/tests/test_create_restore_job.py", >> line 86, in create_backup >> >> self.assertNotIn >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/tests/test_backup_utils.py", >> line 33, in run_backup_job >> >> random.randint(1, 9999999))) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 830, in get >> >> return self.open(*args, **kw) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/testing.py", >> line 127, in open >> >> follow_redirects=follow_redirects) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 803, in open >> >> response = self.run_wsgi_app(environ, buffered=buffered) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 716, in run_wsgi_app >> >> rv = run_wsgi_app(self.application, environ, buffered=buffered) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/test.py", >> line 923, in run_wsgi_app >> >> app_rv = app(environ, start_response) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1997, in __call__ >> >> return self.wsgi_app(environ, start_response) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1985, in wsgi_app >> >> response = self.handle_exception(e) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1540, in handle_exception >> >> reraise(exc_type, exc_value, tb) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1982, in wsgi_app >> >> response = self.full_dispatch_request() >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1614, in full_dispatch_request >> >> rv = self.handle_user_exception(e) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1517, in handle_user_exception >> >> reraise(exc_type, exc_value, tb) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1612, in full_dispatch_request >> >> rv = self.dispatch_request() >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1598, in dispatch_request >> >> return self.view_functions[rule.endpoint](**req.view_args) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py", >> line 792, in decorated_view >> >> return func(*args, **kwargs) >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/__init__.py", >> line 62, in index >> >> return make_response(response=BatchProcess.list()) >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/processes.py", >> line 584, in list >> >> details = desc.details(p.command, args) >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", >> line 159, in details >> >> name, host, port = self.get_server_details() >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/backup/__init__.py", >> line 122, in get_server_details >> >> host = manager.local_bind_host if manager.use_ssh_tunnel else s.host >> >> AttributeError: 'NoneType' object has no attribute 'use_ssh_tunnel' >> >> >> ====================================================================== >> >> FAIL: runTest (pgadmin.browser.server_groups >> .servers.databases.schemas.functions.tests.test_trigger_func >> _add.TriggerFuncAddTestCase) >> >> Fetch Trigger Function Node URL >> >> ---------------------------------------------------------------------- >> >> Traceback (most recent call last): >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups >> /servers/databases/schemas/functions/tests/test_trigger_func_add.py", >> line 111, in runTest >> >> self.assertEquals(response.status_code, 200) >> >> AssertionError: 500 != 200 >> >> >> ====================================================================== >> >> FAIL: runTest (pgadmin.browser.server_groups >> .servers.databases.schemas.functions.tests.test_trigger_func >> _delete.TriggerFuncDeleteTestCase) >> >> Fetch Trigger Function Node URL >> >> ---------------------------------------------------------------------- >> >> Traceback (most recent call last): >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups >> /servers/databases/schemas/functions/tests/test_trigger_func_delete.py", >> line 72, in runTest >> >> self.assertEquals(response.status_code, 200) >> >> AssertionError: 500 != 200 >> >> >> ====================================================================== >> >> FAIL: runTest (pgadmin.browser.server_groups >> .servers.databases.schemas.functions.tests.test_trigger_func >> _get.TriggerFuncGetTestCase) >> >> Fetch Trigger Function Node URL >> >> ---------------------------------------------------------------------- >> >> Traceback (most recent call last): >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups >> /servers/databases/schemas/functions/tests/test_trigger_func_get.py", >> line 72, in runTest >> >> self.assertEquals(response.status_code, 200) >> >> AssertionError: 500 != 200 >> >> >> ====================================================================== >> >> FAIL: runTest (pgadmin.browser.server_groups >> .servers.databases.schemas.functions.tests.test_trigger_func >> _put.TriggerFuncPutTestCase) >> >> Fetch Trigger Function Node URL >> >> ---------------------------------------------------------------------- >> >> Traceback (most recent call last): >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups >> /servers/databases/schemas/functions/tests/test_trigger_func_put.py", >> line 87, in runTest >> >> self.assertEquals(put_response.status_code, 200) >> >> AssertionError: 500 != 200 >> >> >> ====================================================================== >> >> FAIL: runTest (pgadmin.feature_tests.pg_util >> ities_maintenance_test.PGUtilitiesMaintenanceFeatureTest) >> >> Test for PG maintenance: database pg_maintenance >> >> ---------------------------------------------------------------------- >> >> Traceback (most recent call last): >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py", >> line 63, in runTest >> >> self._verify_command() >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py", >> line 90, in _verify_command >> >> self.assertEquals(command, "VACUUM " >> >> AssertionError: u'Backing up an object on the server \'Regression - PG 11 >> Feature Tests (localhost:5436)\' from database >> \'pg_utility_test_db\'...\nRunning command:\n/Library/PostgreSQL/11/bin/pg_dump >> --file "/Users/dpage/test_backup" --host "localhost" --port "5436" >> --username "postgres" --no-password --verbose --format=c --blobs >> "pg_utility_test_db"' != 'VACUUM (VERBOSE)\nRunning Query:\nVACUUM VERBOSE;' >> >> >> ====================================================================== >> >> FAIL: runTest (pgadmin.feature_tests.pg_util >> ities_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 63, in runTest >> >> self._verify_command() >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py", >> line 97, in _verify_command >> >> " public." + self.table_name + ";") >> >> AssertionError: u'Backing up an object on the server \'Regression - PG 11 >> Feature Tests (localhost:5436)\' from database >> \'pg_utility_test_db\'...\nRunning command:\n/Library/PostgreSQL/11/bin/pg_dump >> --file "/Users/dpage/test_backup" --host "localhost" --port "5436" >> --username "postgres" --no-password --verbose --format=c --blobs >> "pg_utility_test_db"' != 'VACUUM (VERBOSE)\nRunning Query:\nVACUUM VERBOSE >> public.pg_maintenance_table;' >> >> >> ---------------------------------------------------------------------- >> >> Ran 369 tests in 417.660s >> >> >> FAILED (failures=6, errors=5, skipped=13) >> >> >> ====================================================================== >> >> Test Result Summary >> >> ====================================================================== >> >> >> Regression - PG 11: >> >> >> 346 tests passed >> >> 10 tests failed: >> >> TriggerFuncGetTestCase (Fetch Trigger Function Node URL) >> >> MaintenanceJobTest (When maintenance the object with the default options) >> >> TriggerFuncDeleteTestCase (Fetch Trigger Function Node URL) >> >> TriggerFuncPutTestCase (Fetch Trigger Function Node URL) >> >> RestoreJobTest (When restore the object with the default options) >> >> CheckDebuggerForXssFeatureTest (Tests to check if Debugger is vulnerable >> to XSS) >> >> TriggerFuncAddTestCase (Fetch Trigger Function Node URL) >> >> PGUtilitiesBackupFeatureTest (Test for PG utilities - Backup and Restore) >> >> PGUtilitiesMaintenanceFeatureTest (Test for PG maintenance: database, >> >> Test for PG maintenance: database pg_maintenance) >> >> BackupJobTest (When backup the object with the default options) >> >> 13 tests skipped: >> >> SynonymDeleteTestCase (Fetch synonym Node URL) >> >> SynonymGetTestCase (Fetch synonym Node URL) >> >> PackageDeleteTestCase (Fetch Package Node URL) >> >> ResourceGroupsGetTestCase (Get resource groups) >> >> TestSSLConnection (Test for SSL connection) >> >> ResourceGroupsAddTestCase (Add resource groups) >> >> PackagePutTestCase (Fetch Package Node URL) >> >> SynonymPutTestCase (Fetch synonym Node URL) >> >> ResourceGroupsPutTestCase (Put resource groups) >> >> ResourceGroupsDeleteTestCase (Delete resource groups) >> >> SynonymAddTestCase (Default Node URL) >> >> PackageAddTestCase (Fetch Package Node URL) >> >> PackageGetTestCase (Fetch Package Node URL) >> >> >> ====================================================================== >> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --0000000000000c345a056e6f8e27 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Please find the attached updated patch with some code clea= nup.

On Tue,= Jun 12, 2018 at 3:54 PM, Khushboo Vashi <khushboo.vashi@ent= erprisedb.com> wrote:
Hi,

Please find the attached patch excluding= feature test cases.
Python test cases are working fine, so we ca= n commit this patch. I am working on fixing the feature tests which are fai= ling on the different window sizes.

Thanks,
<= div>Khushboo

On Fri, Jun 8, 2018 at 2:38 PM, Dave Page <dpage@pgadmin.org>= wrote:
Hi

On Fri, Jun 8, 2018 = at 6:33 AM, Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi Dave,

As per our discussion I have changed the win= dow size to 1280X800, before it was 1280X900.
Please find the attached updated patch
= =C2=A0
I'm not sure that actually made any difference on my s= ystem. The window continued to look taller than it is wide, so I wonder if = the code to set the size is being ignored, or is at the wrong place?
<= div>
Anyway, I got 10 failures with this patch :-(
=

=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.PGUtilit= iesBackupFeatureTest)

Test for PG ut= ilities - Backup and Restore

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

Traceback (mos= t recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/feature_tests/pg_utilities_backup_restore_test.py", = line 97, in runTest

=C2=A0 =C2=A0 self.page.find_by_xpath("//di= v[contains(@class,'wcFloatingFocus')"

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/regression/feature_utils/pgadmin_page.py", line 171, in find= _by_xpath

=C2=A0 =C2=A0 lambda driver: driver.find_element= _by_xpath(xpath)

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/regression/feature_utils/pgadmin_page.py", line 263, in wait= _for_element

=C2=A0 =C2=A0 return self._wait_for("elemen= t to exist", element_if_it_exists)

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/regression/feature_utils/pgadmin_page.py", line 337, in _wai= t_for

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

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/selenium/webdriver/support/= wait.py", line 80, in until

=C2=A0 =C2=A0 raise TimeoutException(message, sc= reen, stacktrace)

TimeoutExcepti= on: Message: Timed out waiting for element to exist



=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.xss_checks_pgadmin_debugger_test.CheckDeb= uggerForXssFeatureTest)

Tests to check= if Debugger is vulnerable to XSS

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

Traceback (mos= t recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py", = line 42, in runTest

=C2=A0 =C2=A0 self._function_node_expandable()

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/feature_tests/xss_checks_pgadmin_debugger_test.py", = line 57, in _function_node_expandable

=C2=A0 =C2=A0 self.page.select_tree_item("a= _test_function()")

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/regression/feature_utils/pgadmin_page.py", line 135, in sele= ct_tree_item

=C2=A0 =C2=A0 "' and @class=3D'aciT= reeItem']").click()

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/regression/feature_utils/pgadmin_page.py", line 171, in find= _by_xpath

=C2=A0 =C2=A0 lambda driver: driver.find_element= _by_xpath(xpath)

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/regression/feature_utils/pgadmin_page.py", line 263, in wait= _for_element

=C2=A0 =C2=A0 return self._wait_for("elemen= t to exist", element_if_it_exists)

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/regression/feature_utils/pgadmin_page.py", line 337, in _wai= t_for

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

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/selenium/webdriver/support/= wait.py", line 80, in until

=C2=A0 =C2=A0 raise TimeoutException(message, sc= reen, stacktrace)

TimeoutExcepti= on: Message: Timed out waiting for element to exist



=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.tools.backup.tests.test_create_backup_job.BackupJobTest= )

When backup th= e object with the default options

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

Traceback (mos= t recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/backup/tests/test_create_backup_job.py", line = 58, in runTest

=C2=A0 =C2=A0 self.assertNotIn

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/backup/tests/test_backup_utils.py", line 33, i= n run_backup_job

=C2=A0 =C2=A0 random.randint(1, 9999999)))

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 830= , in get

=C2=A0 =C2=A0 return self.open(*args, **kw)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/testing.py", line 127= , in open

=C2=A0 =C2=A0 follow_redirects=3Dfollow_redirects)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 803= , in open

=C2=A0 =C2=A0 response =3D self.run_wsgi_app(env= iron, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 716= , in run_wsgi_app

=C2=A0 =C2=A0 rv =3D run_wsgi_app(self.applicati= on, environ, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 923= , in run_wsgi_app

=C2=A0 =C2=A0 app_rv =3D app(environ, start_resp= onse)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1997, i= n __call__

=C2=A0 =C2=A0 return self.wsgi_app(environ, star= t_response)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1985, i= n wsgi_app

=C2=A0 =C2=A0 response =3D self.handle_exception= (e)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1540, i= n handle_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_value, tb)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1982, i= n wsgi_app

=C2=A0 =C2=A0 response =3D self.full_dispatch_re= quest()

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1614, i= n full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.handle_user_exception(= e)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1517, i= n handle_user_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_value, tb)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1612, i= n full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.dispatch_request()

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1598, i= n dispatch_request

=C2=A0 =C2=A0 return self.view_functions[rule.en= dpoint](**req.view_args)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask_login.py", line 792, = in decorated_view

=C2=A0 =C2=A0 return func(*args, **kwargs)

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/misc/bgprocess/__init__.py", line 62, in index

=C2=A0 =C2=A0 return make_response(response=3DBa= tchProcess.list())

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/misc/bgprocess/processes.py", line 584, in list

=C2=A0 =C2=A0 details =3D desc.details(p.command= , args)

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/backup/__init__.py", line 159, in details

=C2=A0 =C2=A0 name, host, port =3D self.get_serv= er_details()

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/backup/__init__.py", line 122, in get_server_d= etails

=C2=A0 =C2=A0 host =3D manager.local_bind_host i= f manager.use_ssh_tunnel else s.host

AttributeError= : 'NoneType' object has no attribute 'use_ssh_tunnel'


=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.tools.maintenance.tests.test_create_maintenance_job.Mai= ntenanceJobTest)

When maintenan= ce the object with the default options

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

Traceback (mos= t recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/maintenance/tests/test_create_maintenance_job.= py", line 71, in runTest

=C2=A0 =C2=A0 random.randint(1, 9999999)))

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 830= , in get

=C2=A0 =C2=A0 return self.open(*args, **kw)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/testing.py", line 127= , in open

=C2=A0 =C2=A0 follow_redirects=3Dfollow_redirects)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 803= , in open

=C2=A0 =C2=A0 response =3D self.run_wsgi_app(env= iron, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 716= , in run_wsgi_app

=C2=A0 =C2=A0 rv =3D run_wsgi_app(self.applicati= on, environ, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 923= , in run_wsgi_app

=C2=A0 =C2=A0 app_rv =3D app(environ, start_resp= onse)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1997, i= n __call__

=C2=A0 =C2=A0 return self.wsgi_app(environ, star= t_response)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1985, i= n wsgi_app

=C2=A0 =C2=A0 response =3D self.handle_exception= (e)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1540, i= n handle_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_value, tb)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1982, i= n wsgi_app

=C2=A0 =C2=A0 response =3D self.full_dispatch_re= quest()

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1614, i= n full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.handle_user_exception(= e)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1517, i= n handle_user_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_value, tb)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1612, i= n full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.dispatch_request()

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1598, i= n dispatch_request

=C2=A0 =C2=A0 return self.view_functions[rule.en= dpoint](**req.view_args)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask_login.py", line 792, = in decorated_view

=C2=A0 =C2=A0 return func(*args, **kwargs)

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/misc/bgprocess/__init__.py", line 62, in index

=C2=A0 =C2=A0 return make_response(response=3DBa= tchProcess.list())

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/misc/bgprocess/processes.py", line 584, in list

=C2=A0 =C2=A0 details =3D desc.details(p.command= , args)

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/backup/__init__.py", line 159, in details

=C2=A0 =C2=A0 name, host, port =3D self.get_serv= er_details()

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/backup/__init__.py", line 122, in get_server_d= etails

=C2=A0 =C2=A0 host =3D manager.local_bind_host i= f manager.use_ssh_tunnel else s.host

AttributeError= : 'NoneType' object has no attribute 'use_ssh_tunnel'


=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.tools.restore.tests.test_create_restore_job.RestoreJobT= est)

When restore t= he object with the default options

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

Traceback (mos= t recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/restore/tests/test_create_restore_job.py", lin= e 95, in runTest

=C2=A0 =C2=A0 self.create_backup()

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/restore/tests/test_create_restore_job.py", lin= e 86, in create_backup

=C2=A0 =C2=A0 self.assertNotIn

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/backup/tests/test_backup_utils.py", line 33, i= n run_backup_job

=C2=A0 =C2=A0 random.randint(1, 9999999)))

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 830= , in get

=C2=A0 =C2=A0 return self.open(*args, **kw)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/testing.py", line 127= , in open

=C2=A0 =C2=A0 follow_redirects=3Dfollow_redirects)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 803= , in open

=C2=A0 =C2=A0 response =3D self.run_wsgi_app(env= iron, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 716= , in run_wsgi_app

=C2=A0 =C2=A0 rv =3D run_wsgi_app(self.applicati= on, environ, buffered=3Dbuffered)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/test.py", line 923= , in run_wsgi_app

=C2=A0 =C2=A0 app_rv =3D app(environ, start_resp= onse)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1997, i= n __call__

=C2=A0 =C2=A0 return self.wsgi_app(environ, star= t_response)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1985, i= n wsgi_app

=C2=A0 =C2=A0 response =3D self.handle_exception= (e)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1540, i= n handle_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_value, tb)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1982, i= n wsgi_app

=C2=A0 =C2=A0 response =3D self.full_dispatch_re= quest()

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1614, i= n full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.handle_user_exception(= e)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1517, i= n handle_user_exception

=C2=A0 =C2=A0 reraise(exc_type, exc_value, tb)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1612, i= n full_dispatch_request

=C2=A0 =C2=A0 rv =3D self.dispatch_request()

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask/app.py", line 1598, i= n dispatch_request

=C2=A0 =C2=A0 return self.view_functions[rule.en= dpoint](**req.view_args)

=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/flask_login.py", line 792, = in decorated_view

=C2=A0 =C2=A0 return func(*args, **kwargs)

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/misc/bgprocess/__init__.py", line 62, in index

=C2=A0 =C2=A0 return make_response(response=3DBa= tchProcess.list())

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/misc/bgprocess/processes.py", line 584, in list

=C2=A0 =C2=A0 details =3D desc.details(p.command= , args)

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/backup/__init__.py", line 159, in details

=C2=A0 =C2=A0 name, host, port =3D self.get_serv= er_details()

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/tools/backup/__init__.py", line 122, in get_server_d= etails

=C2=A0 =C2=A0 host =3D manager.local_bind_host i= f manager.use_ssh_tunnel else s.host

AttributeError= : 'NoneType' object has no attribute 'use_ssh_tunnel'


=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.browser.server_groups.servers.databases.schemas.function= s.tests.test_trigger_func_add.TriggerFuncAddTestCase)

Fetch Trigger = Function Node URL

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

Traceback (mos= t recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/browser/server_groups/servers/databases/schemas/func= tions/tests/test_trigger_func_add.py", line 111, in runTest

=C2=A0 =C2=A0 self.assertEquals(response.status_code, 200)

AssertionError= : 500 !=3D 200


=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.browser.server_groups.servers.databases.schemas.function= s.tests.test_trigger_func_delete.TriggerFuncDeleteTestCase)

Fetch Trigger = Function Node URL

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

Traceback (mos= t recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/browser/server_groups/servers/databases/schemas/func= tions/tests/test_trigger_func_delete.py", line 72, in runTest

=C2=A0 =C2=A0 self.assertEquals(response.status_code, 200)

AssertionError= : 500 !=3D 200


=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.browser.server_groups.servers.databases.schemas.function= s.tests.test_trigger_func_get.TriggerFuncGetTestCase)

Fetch Trigger = Function Node URL

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

Traceback (mos= t recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/browser/server_groups/servers/databases/schemas/func= tions/tests/test_trigger_func_get.py", line 72, in runTest=

=C2=A0 =C2=A0 self.assertEquals(response.status_code, 200)

AssertionError= : 500 !=3D 200


=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.browser.server_groups.servers.databases.schemas.function= s.tests.test_trigger_func_put.TriggerFuncPutTestCase)

Fetch Trigger = Function Node URL

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

Traceback (mos= t recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/browser/server_groups/servers/databases/schemas/func= tions/tests/test_trigger_func_put.py", line 87, in runTest=

=C2=A0 =C2=A0 self.assertEquals(put_response.status_code, 200)

AssertionError= : 500 !=3D 200


=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.feature_tests.pg_utilities_maintenance_test.PGUtilitiesM= aintenanceFeatureTest)

Test for PG ma= intenance: database pg_maintenance

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

Traceback (mos= t recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/feature_tests/pg_utilities_maintenance_test.py", lin= e 63, in runTest

=C2=A0 =C2=A0 self._verify_command()

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/feature_tests/pg_utilities_maintenance_test.py", lin= e 90, in _verify_command

=C2=A0 =C2=A0 self.assertEquals(command, "V= ACUUM "

AssertionError= : u'Backing up an object on the server \'Regression - PG 11 Feature= Tests (localhost:5436)\' from database \'pg_utility_test_db\'.= ..\nRunning command:\n/Library/PostgreSQL/11/bin/pg_dump --file &= quot;/Users/dpage/test_backup" --host "localhost" --port &qu= ot;5436" --username "postgres" --no-password --verbose --for= mat=3Dc --blobs "pg_utility_test_db"' !=3D 'VACUUM (VERBO= SE)\nRunning Query:\nVACUUM VERBOSE;'


=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.feature_tests.pg_utilities_maintenance_test.PGUtilitiesM= aintenanceFeatureTest)

Test for PG ma= intenance: database

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

Traceback (mos= t recent call last):

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/feature_tests/pg_utilities_maintenance_test.py", lin= e 63, in runTest

=C2=A0 =C2=A0 self._verify_command()

=C2=A0 File "/Users/dpage/git/pgadmin4/web<= wbr>/pgadmin/feature_tests/pg_utilities_maintenance_test.py", lin= e 97, in _verify_command

=C2=A0 =C2=A0 " public." + self.table_= name + ";")

AssertionError= : u'Backing up an object on the server \'Regression - PG 11 Feature= Tests (localhost:5436)\' from database \'pg_utility_test_db\'.= ..\nRunning command:\n/Library/PostgreSQL/11/bin/pg_dump --file &= quot;/Users/dpage/test_backup" --host "localhost" --port &qu= ot;5436" --username "postgres" --no-password --verbose --for= mat=3Dc --blobs "pg_utility_test_db"' !=3D 'VACUUM (VERBO= SE)\nRunning Query:\nVACUUM VERBOSE public.pg_maintenance_table;'


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

Ran 369 tests = in 417.660s


FAILED (failur= es=3D6, errors=3D5, skipped=3D13)


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

Test Result Su= mmary

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


Regression - P= G 11:


346 tests passed=

10 tests failed:=

TriggerFuncGetTestCase (Fetch Tr= igger Function Node URL)

MaintenanceJobTest (When mainten= ance the object with the default options)

TriggerFuncDeleteTestCase (Fetch= Trigger Function Node URL)

TriggerFuncPutTestCase (Fetch Tr= igger Function Node URL)

RestoreJobTest (When restore the= object with the default options)

CheckDebuggerForXssFeatureTest (= Tests to check if Debugger is vulnerable to XSS)

TriggerFuncAddTestCase (Fetch Tr= igger Function Node URL)

PGUtilitiesBackupFeatureTest (Te= st for PG utilities - Backup and Restore)

PGUtilitiesMaintenanceFeatureTest (Test for PG maintenance: database,

Test for PG maintenance: database pg_maintenance)

BackupJobTest (When backup the o= bject with the default options)

13 tests skipped:

SynonymDeleteTestCase (Fetch syn= onym Node URL)

SynonymGetTestCase (Fetch synony= m Node URL)

PackageDeleteTestCase (Fetch Pac= kage Node URL)

ResourceGroupsGetTestCase (Get r= esource groups)

TestSSLConnection (Test for SSL = connection)

ResourceGroupsAddTestCase (Add r= esource groups)

PackagePutTestCase (Fetch Packag= e Node URL)

SynonymPutTestCase (Fetch synony= m Node URL)

ResourceGroupsPutTestCase (Put r= esource groups)

ResourceGroupsDeleteTestCase (De= lete resource groups)

SynonymAddTestCase (Default Node= URL)

PackageAddTestCase (Fetch Packag= e Node URL)

PackageGetTestCase (Fetch Packag= e Node URL)


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


=C2=A0
--
Dave Page
Blog: http://pgsnake.blogs= pot.com
Twitter: @pgsnake

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


--0000000000000c345a056e6f8e27-- --0000000000000c345e056e6f8e29 Content-Type: application/octet-stream; name="RM_3206_exclude_feature_tests.patch" Content-Disposition: attachment; filename="RM_3206_exclude_feature_tests.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jibk7ncb1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9fX2luaXRfXy5weSBiL3dlYi9w Z2FkbWluL3Rvb2xzL2JhY2t1cC9fX2luaXRfXy5weQppbmRleCAxMjVkYjgwLi4wNTEzMzY1IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvX19pbml0X18ucHkKKysrIGIvd2Vi L3BnYWRtaW4vdG9vbHMvYmFja3VwL19faW5pdF9fLnB5CkBAIC0xMDksOCArMTA5LDcgQEAgY2xh c3MgQmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAgICAgZWxzZToKICAgICAg ICAgICAgICAgICBzZWxmLmNtZCArPSBjbWRBcmcoYXJnKQogCi0gICAgQHByb3BlcnR5Ci0gICAg ZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgZGVmIGdldF9zZXJ2ZXJfZGV0YWlscyhzZWxmKToKICAg ICAgICAgIyBGZXRjaCB0aGUgc2VydmVyIGRldGFpbHMgbGlrZSBob3N0bmFtZSwgcG9ydCwgcm9s ZXMgZXRjCiAgICAgICAgIHMgPSBTZXJ2ZXIucXVlcnkuZmlsdGVyX2J5KAogICAgICAgICAgICAg aWQ9c2VsZi5zaWQsIHVzZXJfaWQ9Y3VycmVudF91c2VyLmlkCkBAIC0xMjMsMTMgKzEyMiwxOSBA QCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAgICAgICAgIGhvc3QgPSBtYW5h Z2VyLmxvY2FsX2JpbmRfaG9zdCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5ob3N0 CiAgICAgICAgIHBvcnQgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfcG9ydCBpZiBtYW5hZ2VyLnVzZV9z c2hfdHVubmVsIGVsc2Ugcy5wb3J0CiAKKyAgICAgICAgcmV0dXJuIHMubmFtZSwgaG9zdCwgcG9y dAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG5hbWUs IGhvc3QsIHBvcnQgPSBzZWxmLmdldF9zZXJ2ZXJfZGV0YWlscygpCisKICAgICAgICAgaWYgc2Vs Zi5iYWNrdXBfdHlwZSA9PSBCQUNLVVAuT0JKRUNUOgogICAgICAgICAgICAgcmV0dXJuIF8oCiAg ICAgICAgICAgICAgICAgIkJhY2tpbmcgdXAgYW4gb2JqZWN0IG9uIHRoZSBzZXJ2ZXIgJ3swfScg IgogICAgICAgICAgICAgICAgICJmcm9tIGRhdGFiYXNlICd7MX0nLi4uIgogICAgICAgICAgICAg KS5mb3JtYXQoCiAgICAgICAgICAgICAgICAgInswfSAoezF9OnsyfSkiLmZvcm1hdCgKLSAgICAg ICAgICAgICAgICAgICAgcy5uYW1lLCBob3N0LCBwb3J0CisgICAgICAgICAgICAgICAgICAgIG5h bWUsIGhvc3QsIHBvcnQKICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIHNlbGYu ZGF0YWJhc2UKICAgICAgICAgICAgICkKQEAgLTEzNywxMyArMTQyLDEzIEBAIGNsYXNzIEJhY2t1 cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgIHJldHVybiBfKCJCYWNraW5nIHVw IHRoZSBnbG9iYWwgb2JqZWN0cyBvbiAiCiAgICAgICAgICAgICAgICAgICAgICAidGhlIHNlcnZl ciAnezB9Jy4uLiIpLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9KSIuZm9y bWF0KAotICAgICAgICAgICAgICAgICAgICBzLm5hbWUsIGhvc3QsIHBvcnQKKyAgICAgICAgICAg ICAgICAgICAgbmFtZSwgaG9zdCwgcG9ydAogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg ICkKICAgICAgICAgZWxpZiBzZWxmLmJhY2t1cF90eXBlID09IEJBQ0tVUC5TRVJWRVI6CiAgICAg ICAgICAgICByZXR1cm4gXygiQmFja2luZyB1cCB0aGUgc2VydmVyICd7MH0nLi4uIikuZm9ybWF0 KAogICAgICAgICAgICAgICAgICJ7MH0gKHsxfTp7Mn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAg ICAgICAgIHMubmFtZSwgaG9zdCwgcG9ydAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBob3N0 LCBwb3J0CiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKQogICAgICAgICBlbHNlOgpA QCAtMTUxLDE3ICsxNTYsNyBAQCBjbGFzcyBCYWNrdXBNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAg ICAgICAgICAgICByZXR1cm4gIlVua25vd24gQmFja3VwIgogCiAgICAgZGVmIGRldGFpbHMoc2Vs ZiwgY21kLCBhcmdzKToKLSAgICAgICAgIyBGZXRjaCB0aGUgc2VydmVyIGRldGFpbHMgbGlrZSBo b3N0bmFtZSwgcG9ydCwgcm9sZXMgZXRjCi0gICAgICAgIHMgPSBTZXJ2ZXIucXVlcnkuZmlsdGVy X2J5KAotICAgICAgICAgICAgaWQ9c2VsZi5zaWQsIHVzZXJfaWQ9Y3VycmVudF91c2VyLmlkCi0g ICAgICAgICkuZmlyc3QoKQotCi0gICAgICAgIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1w b3J0IGdldF9kcml2ZXIKLSAgICAgICAgZHJpdmVyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RS SVZFUikKLSAgICAgICAgbWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoc2VsZi5z aWQpCi0KLSAgICAgICAgaG9zdCA9IG1hbmFnZXIubG9jYWxfYmluZF9ob3N0IGlmIG1hbmFnZXIu dXNlX3NzaF90dW5uZWwgZWxzZSBzLmhvc3QKLSAgICAgICAgcG9ydCA9IG1hbmFnZXIubG9jYWxf YmluZF9wb3J0IGlmIG1hbmFnZXIudXNlX3NzaF90dW5uZWwgZWxzZSBzLnBvcnQKKyAgICAgICAg bmFtZSwgaG9zdCwgcG9ydCA9IHNlbGYuZ2V0X3NlcnZlcl9kZXRhaWxzKCkKIAogICAgICAgICBy ZXMgPSAnPGRpdiBjbGFzcz0iaDUiPicKIApAQCAtMTcxLDcgKzE2Niw3IEBAIGNsYXNzIEJhY2t1 cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgICAgICAiZnJvbSBkYXRhYmFzZSAn ezF9Jy4uLiIKICAgICAgICAgICAgICkuZm9ybWF0KAogICAgICAgICAgICAgICAgICJ7MH0gKHsx fTp7Mn0pIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIocy5uYW1l KSwKKyAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihuYW1lKSwKICAgICAgICAgICAg ICAgICAgICAgaHRtbC5zYWZlX3N0cihob3N0KSwKICAgICAgICAgICAgICAgICAgICAgaHRtbC5z YWZlX3N0cihwb3J0KSwKICAgICAgICAgICAgICAgICApLApAQCAtMTgxLDcgKzE3Niw3IEBAIGNs YXNzIEJhY2t1cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKICAgICAgICAgICAgIHJlcyArPSBfKCJC YWNraW5nIHVwIHRoZSBnbG9iYWwgb2JqZWN0cyBvbiAiCiAgICAgICAgICAgICAgICAgICAgICAi dGhlIHNlcnZlciAnezB9Jy4uLiIpLmZvcm1hdCgKICAgICAgICAgICAgICAgICAiezB9ICh7MX06 ezJ9KSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKHMubmFtZSks CisgICAgICAgICAgICAgICAgICAgIGh0bWwuc2FmZV9zdHIobmFtZSksCiAgICAgICAgICAgICAg ICAgICAgIGh0bWwuc2FmZV9zdHIoaG9zdCksCiAgICAgICAgICAgICAgICAgICAgIGh0bWwuc2Fm ZV9zdHIocG9ydCkKICAgICAgICAgICAgICAgICApCkBAIC0xODksNyArMTg0LDcgQEAgY2xhc3Mg QmFja3VwTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICBlbGlmIHNlbGYuYmFja3VwX3R5 cGUgPT0gQkFDS1VQLlNFUlZFUjoKICAgICAgICAgICAgIHJlcyArPSBfKCJCYWNraW5nIHVwIHRo ZSBzZXJ2ZXIgJ3swfScuLi4iKS5mb3JtYXQoCiAgICAgICAgICAgICAgICAgInswfSAoezF9Onsy fSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgaHRtbC5zYWZlX3N0cihzLm5hbWUpLAor ICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVfc3RyKG5hbWUpLAogICAgICAgICAgICAgICAg ICAgICBodG1sLnNhZmVfc3RyKGhvc3QpLAogICAgICAgICAgICAgICAgICAgICBodG1sLnNhZmVf c3RyKHBvcnQpCiAgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvYmFja3VwL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rl c3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRl MjkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1 cF9jcmVhdGVfam9iX3VuaXRfdGVzdC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0 cy90ZXN0X2JhY2t1cF9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hMzc2YTNiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5CkBA IC0wLDAgKzEsNDYzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKK2ltcG9ydCBzeXMK K2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWluLm1pc2MuYmdwcm9jZXNz LnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzCitmcm9tIHBnYWRtaW4udG9vbHMuYmFja3Vw IGltcG9ydCBCYWNrdXBNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJh c2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QK K2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1 dGlscworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0 aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2Vz LnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKKworCitpZiBzeXMu dmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2lj TW9jaworZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01v Y2sKKworCitjbGFzcyBCYWNrdXBDcmVhdGVKb2JUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAg ICAiIiJUZXN0IHRoZSBCYWNrdXBDcmVhdGVKb2IgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBb CisgICAgICAgICgnV2hlbiBiYWNrdXAgb2JqZWN0IHdpdGggZGVmYXVsdCBvcHRpb25zJywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXIn LAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAg ICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1l PSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAg ICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAg ICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisg ICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97 MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScs ICctLWZvcm1hdD1jJywgJy0tYmxvYnMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiBz ZWN0aW9ucyB0byBhbGwgZGF0YScsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNz X3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAg bmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAor ICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRh YmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAor ICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNr dXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAg ICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAg ICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGRhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgcHJlX2Rh dGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgcG9zdF9kYXRhPVRydWUKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9YycsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICctLXNlY3Rpb249cHJlLWRhdGEnLCAnLS1zZWN0aW9u PWRhdGEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1zZWN0aW9uPXBvc3Qt ZGF0YSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAg ICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAg KCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIG9ubHlfZGF0YScsCisgICAgICAg ICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAg ICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhv c3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAg ICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9z dGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZv cm1hdD0ncGxhaW4nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAg ICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAg ICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb25seV9kYXRh PVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPUZhbHNlCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PXAnLCAnLS1kYXRh LW9ubHknXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAg ICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiBvbmx5X2RhdGEnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisg ICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxo b3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBm b3JtYXQ9J3BsYWluJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAg ICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0 YT1UcnVlLAorICAgICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1UcnVlLAorICAgICAgICAgICAg ICAgICBkbnNfb3duZXI9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScv YmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1b Jy0tdmVyYm9zZScsICctLWZvcm1hdD1wJywgJy0tZGF0YS1vbmx5J10sCisgICAgICAgICAgICAg bm90X2V4cGVjdGVkX2NtZF9vcHRzPVsnLS1zY2hlbWEtb25seScsICctLW5vLW93bmVyJ10sCisg ICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisg ICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiBvbmx5X3NjaGVtYScs CisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAg ICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2Vy dmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0 PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2Vy bmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGlj dCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAg ICAgICAgIGZvcm1hdD0ncGxhaW4nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisg ICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwK KyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAg b25seV9kYXRhPUZhbHNlLAorICAgICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1UcnVlCisgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAor ICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PXAn LCAnLS1zY2hlbWEtb25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1b XSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICAp KSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIC0gZm9ybWF0 IHBsYWluIGFuZCBkbnNfb3duZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFz c19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywK KyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFj a3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J3BsYWluJywKKyAgICAgICAgICAg ICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAg ICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGRuc19vd25lcj1UcnVlCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4 cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PXAnLCAnLS1uby1vd25lcidd LAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBl eHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVu IGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggb3B0aW9uIC0gRG8gbm90IHNhdmUgcHJpdmlsZWdlLCcK KyAgICAgICAgICcgdGFibGVzcGFjZSwgdW5sb2dnZWQgdGFibGUgZGF0YScsCisgICAgICAgICBk aWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBz aWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAg ICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3Qn LAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAg ICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdy ZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1h dD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAg ICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGRuc19wcml2aWxl Z2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX3VubG9nZ2VkX3RibF9kYXRhPVRydWUsCisg ICAgICAgICAgICAgICAgIGRuc190YWJsZXNwYWNlPVRydWUKKyAgICAgICAgICAgICApLAorICAg ICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhw ZWN0ZWRfY21kX29wdHM9WyctLW5vLXByaXZpbGVnZXMnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnLS1uby10YWJsZXNwYWNlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICctLW5vLXVubG9nZ2VkLXRhYmxlLWRhdGEnXSwKKyAgICAgICAgICAgICBub3RfZXhw ZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBO b25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRo IG9wdGlvbiAtIGFsbCBxdWVyaWVzJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xh c3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQs CisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcs CisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2Jh Y2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdwbGFpbicsCisgICAgICAgICAg ICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAg ICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICB1c2VfY29sdW1uX2luc2VydHM9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgaW5jbHVkZV9jcmVhdGVfZGF0YWJhc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAg dXNlX2luc2VydF9jb21tYW5kcz1UcnVlLAorICAgICAgICAgICAgICAgICBpbmNsdWRlX2Ryb3Bf ZGF0YWJhc2U9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3Vw L2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tY3Jl YXRlJywgJy0tY2xlYW4nLCAnLS1pbnNlcnRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0tY29sdW1uLWluc2VydHMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiAt IGFsbCBxdWVyaWVzIGFuZCBmb3JtYXQgY3VzdG9tJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBw b3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0 X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxl PSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAor ICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9 W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlX2NvbHVtbl9pbnNlcnRzPVRydWUs CisgICAgICAgICAgICAgICAgIGluY2x1ZGVfY3JlYXRlX2RhdGFiYXNlPVRydWUsCisgICAgICAg ICAgICAgICAgIHVzZV9pbnNlcnRfY29tbWFuZHM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgaW5j bHVkZV9kcm9wX2RhdGFiYXNlPVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVy bD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29w dHM9WyctLWluc2VydHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1jb2x1 bW4taW5zZXJ0cyddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bJy0tY3Jl YXRlJywgJy0tY2xlYW4nXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5v bmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGgg b3B0aW9uIC0gbWlzY2VsbGFuZW91cycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNs YXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAg ICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0 LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBk YXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAn LAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9i YWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAg ICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAg ICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0 Z3JlcycsCisgICAgICAgICAgICAgICAgIGRpc2FibGVfcXVvdGluZz1UcnVlLAorICAgICAgICAg ICAgICAgICB1c2Vfc2V0X3Nlc3Npb25fYXV0aD1UcnVlLAorICAgICAgICAgICAgICAgICB3aXRo X29pZHM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZHFvdXRlPVRydWUKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1xdW90ZS1hbGwtaWRlbnRpZmll cnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLWRvbGxhci1x dW90aW5nJywgJy0tb2lkcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXVz ZS1zZXQtc2Vzc2lvbi1hdXRob3JpemF0aW9uJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVk X2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0K KyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBmb3Jt YXQgdGFyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3Qo CisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2Jh Y2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAg ICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAg ICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAg ICAgICAgICAgICAgICAgZm9ybWF0PSd0YXInLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRy dWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAgIHRhYmxl cz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmxvYnM9VHJ1ZSwKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2Jh Y2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9Wyct LXZlcmJvc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ibG9icycsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWZvcm1hdD10J10sCisgICAgICAgICAg ICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRf Y29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBz ZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFj a3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAg ICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVz JywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAg ICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX3NlcnZlcl9maWxl JywKKyAgICAgICAgICAgICAgICAgZHFvdXRlPUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJi b3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHR5cGU9J3NlcnZlcicKKyAgICAgICAgICAgICAp LAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9JywKKyAgICAgICAgICAgICBleHBl Y3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9j bWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisg ICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBnbG9iYWxzJywKKyAgICAgICAgIGRp Y3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAg ICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcs CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg IGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jl cycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9nbG9iYWxfZmlsZScsCisgICAgICAgICAgICAgICAg IGRxb3V0ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAg ICAgICAgICB0eXBlPSdnbG9iYWxzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJs PScvYmFja3VwL2pvYi97MH0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12 ZXJib3NlJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAg ICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpCisgICAgXQor CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9i aW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAg ICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZl ciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIEBwYXRjaCgncGdhZG1pbi50 b29scy5iYWNrdXAuU2VydmVyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLmN1 cnJlbnRfdXNlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLmJhY2t1cC5CYWNrdXBNZXNz YWdlJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLmZpbGVuYW1lX3dpdGhfZmls ZV9tYW5hZ2VyX3BhdGgnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuQmF0Y2hQ cm9jZXNzJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udXRpbHMuZHJpdmVyLnBzeWNvcGcyLnNlcnZl cl9tYW5hZ2VyLlNlcnZlck1hbmFnZXIuJworICAgICAgICAgICAnZXhwb3J0X3Bhc3N3b3JkX2Vu dicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgZXhwb3J0X3Bhc3N3b3JkX2Vudl9tb2NrLCBiYXRj aF9wcm9jZXNzX21vY2ssCisgICAgICAgICAgICAgICAgZmlsZW5hbWVfbW9jaywgYmFja3VwX21l c3NhZ2VfbW9jaywKKyAgICAgICAgICAgICAgICBjdXJyZW50X3VzZXJfbW9jaywgc2VydmVyX21v Y2spOgorICAgICAgICBjbGFzcyBUZXN0TW9ja1NlcnZlcigpOgorICAgICAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIG5hbWUsIGhvc3QsIHBvcnQsIGlkLCB1c2VybmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBtYWludGVuYW5jZV9kYik6CisgICAgICAgICAgICAgICAgc2VsZi5uYW1l ID0gbmFtZQorICAgICAgICAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKKyAgICAgICAgICAgICAg ICBzZWxmLnBvcnQgPSBwb3J0CisgICAgICAgICAgICAgICAgc2VsZi5pZCA9IGlkCisgICAgICAg ICAgICAgICAgc2VsZi51c2VybmFtZSA9IHVzZXJuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5t YWludGVuYW5jZV9kYiA9IG1haW50ZW5hbmNlX2RiCisKKyAgICAgICAgc2VsZi5kYl9uYW1lID0g JycKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVst MV1bInNlcnZlcl9pZCJdCisgICAgICAgIG1vY2tfb2JqID0gVGVzdE1vY2tTZXJ2ZXIoc2VsZi5j bGFzc19wYXJhbXNbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ10KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIG1vY2tfcmVzdWx0ID0gc2VydmVyX21vY2su cXVlcnkuZmlsdGVyX2J5LnJldHVybl92YWx1ZQorICAgICAgICBtb2NrX3Jlc3VsdC5maXJzdC5y ZXR1cm5fdmFsdWUgPSBtb2NrX29iagorCisgICAgICAgIGZpbGVuYW1lX21vY2sucmV0dXJuX3Zh bHVlID0gc2VsZi5wYXJhbXNbJ2ZpbGUnXQorCisgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5z ZXRfZW52X3ZhcmlhYmxlcyA9IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92YWx1ZT1U cnVlCisgICAgICAgICkKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnN0YXJ0ID0gTWFnaWNN b2NrKAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorCisgICAgICAg IGV4cG9ydF9wYXNzd29yZF9lbnZfbW9jay5yZXR1cm5fdmFsdWUgPSBUcnVlCisKKyAgICAgICAg c2VydmVyX3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYu c2VydmVyX2lkKQorICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9uc2VbImluZm8iXSA9PSAiU2VydmVy IGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgZGJfb3duZXIgPSBzZXJ2ZXJfcmVzcG9uc2VbJ2Rh dGEnXVsndXNlciddWyduYW1lJ10KKyAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGFiYXNlX3V0 aWxzLmdldF9kYl9kYXRhKGRiX293bmVyKQorICAgICAgICAgICAgc2VsZi5kYl9uYW1lID0gc2Vs Zi5kYXRhWyduYW1lJ10KKworICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2 ZXJfaWQpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIGJhY2t1cCBqb2IKKyAgICAgICAgcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxmLnBhcmFtcyksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNl X2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAg ICBqb2JfaWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgYXNz ZXJ0IGJhY2t1cF9tZXNzYWdlX21vY2suY2FsbGVkCisgICAgICAgIGFzc2VydCBiYXRjaF9wcm9j ZXNzX21vY2suY2FsbGVkCisKKyAgICAgICAgaWYgc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAg ICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAg ICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgICAgICAgICBvcHQsCisgICAgICAgICAg ICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsX2FyZ3NfbGlzdFswXVsxXVsnYXJncydd CisgICAgICAgICAgICAgICAgKQorICAgICAgICBpZiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0 czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6Cisg ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigKKyAgICAgICAgICAgICAgICAgICAgb3B0 LAorICAgICAgICAgICAgICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suY2FsbF9hcmdzX2xpc3Rb MF1bMV1bJ2FyZ3MnXQorICAgICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF9tZXNzYWdlLnB5IGIvd2ViL3BnYWRtaW4v dG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMzRlYWNjOQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF9tZXNzYWdlLnB5CkBAIC0wLDAgKzEs MTQ5IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRv b2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHN5cworCitmcm9tIGZsYXNr IGltcG9ydCBSZXNwb25zZQoraW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRt aW4udG9vbHMuYmFja3VwIGltcG9ydCBCYWNrdXBNZXNzYWdlLCBCQUNLVVAKK2Zyb20gcGdhZG1p bi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKKworaWYgc3lzLnZlcnNpb25f aW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vs c2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCisKKwor Y2xhc3MgQmFja3VwTWVzc2FnZVRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3Qg dGhlIEJhY2t1cE1lc3NhZ2UgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgn V2hlbiBCYWNrdXAgc2VydmVyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3Nf cGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9QkFDS1VQLlNFUlZFUiwKKyAgICAg ICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3Nl cnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9z dD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisgICAgICAgICAgICAgICAgIGFy Z3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAg ICAiYmFja3VwX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAg ICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQn LAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAgICAgICAgICAgICAgJy0t dXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAgICAg ICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFi YXNlJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAgICAgICAgICAgICAgICAg XSwKKyAgICAgICAgICAgICAgICAgY21kPSIvdGVzdF9wYXRoL3BnX2R1bXAiCisgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9IkJhY2tpbmcgdXAgdGhlIHNlcnZlciIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAndGVzdF9iYWNrdXBfc2VydmVyIChsb2NhbGhv c3Q6NTQ0NCknLi4uIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nL3Rlc3Rf cGF0aC9wZ19kdW1wIC0tZmlsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JyJiYWNrdXBfZmlsZSIgLS1ob3N0ICJsb2NhbGhvc3QiICcKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnLS1wb3J0ICI1NDQ0IiAtLXVzZXJuYW1lICJwb3N0Z3JlcyIgJworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkIC0tZGF0YWJhc2Ug InBvc3RncmVzIicKKworICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBCYWNrdXAgZ2xvYmFs JywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgIHR5cGU9QkFDS1VQLkdMT0JBTFMsCisgICAgICAgICAgICAgICAgIHNpZD0x LAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAg ICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisg ICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJm aWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAg ICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAnYmFja3VwX2ZpbGUnLAor ICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAnbG9j YWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAg ICAgICAgJzU0NDQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAorICAgICAg ICAgICAgICAgICAgICAgJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICctLW5vLXBh c3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlJywKKyAgICAgICAgICAg ICAgICAgICAgICdwb3N0Z3JlcycKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg ICAgY21kPSIvdGVzdF9wYXRoL3BnX2R1bXAiCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAg ICBleHRlY3RlZF9tc2c9IkJhY2tpbmcgdXAgdGhlIGdsb2JhbCBvYmplY3RzIG9uIHRoZSBzZXJ2 ZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RfYmFja3VwX3NlcnZlciAobG9j YWxob3N0OjU0NDQpJy4uLiIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9Jy90 ZXN0X3BhdGgvcGdfZHVtcCAtLWZpbGUgImJhY2t1cF9maWxlIiAnCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJy0taG9zdCAibG9jYWxob3N0IicKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnIC0tcG9ydCAiNTQ0NCIgLS11c2VybmFtZSAicG9zdGdyZXMiICcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCAtLWRhdGFi YXNlICJwb3N0Z3JlcyInCisKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIG9i amVjdCcsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICB0eXBlPUJBQ0tVUC5PQkpFQ1QsCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAg ICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcs CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg IGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAg ICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAnYmFja3VwX2ZpbGUn LAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAn bG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAg ICAgICAgICAgJzU0NDQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAorICAg ICAgICAgICAgICAgICAgICAgJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICctLW5v LXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlJywKKyAgICAgICAg ICAgICAgICAgICAgICdwb3N0Z3JlcycKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg ICAgICAgY21kPSIvdGVzdF9wYXRoL3BnX2R1bXAiCisgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICBleHRlY3RlZF9tc2c9IkJhY2tpbmcgdXAgYW4gb2JqZWN0IG9uIHRoZSBzZXJ2ZXIgIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RfYmFja3VwX3NlcnZlciAobG9jYWxob3N0 OjU0NDQpJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmcm9tIGRhdGFiYXNlICdwb3N0 Z3JlcycuLi4iLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPScvdGVzdF9wYXRo L3BnX2R1bXAgLS1maWxlICJiYWNrdXBfZmlsZSIgJworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICctLWhvc3QgImxvY2FsaG9zdCIgJworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICctLXBvcnQgIjU0NDQiIC0tdXNlcm5hbWUgInBvc3RncmVzIiAnCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQgLS1kYXRhYmFzZSAicG9z dGdyZXMiJworCisgICAgICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi50b29s cy5iYWNrdXAuQmFja3VwTWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIGRlZiBydW5U ZXN0KHNlbGYsIGdldF9zZXJ2ZXJfZGV0YWlsc19tb2NrKToKKyAgICAgICAgZ2V0X3NlcnZlcl9k ZXRhaWxzX21vY2sucmV0dXJuX3ZhbHVlID0gXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJh bXNbJ25hbWUnXSxcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLFwKKyAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10KKworICAgICAgICBiYWNrdXBfb2Jq ID0gQmFja3VwTWVzc2FnZSgKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd0eXBlJ10s CisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1snYmZpbGUnXSwKKyAgICAgICAgICAgICpzZWxmLmNsYXNzX3BhcmFtc1sn YXJncyddLAorICAgICAgICAgICAgKip7J2RhdGFiYXNlJzogc2VsZi5jbGFzc19wYXJhbXNbJ2Rh dGFiYXNlJ119CisgICAgICAgICkKKworICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBtZXNz YWdlIHJldHVybmVkCisgICAgICAgIGFzc2VydCBiYWNrdXBfb2JqLm1lc3NhZ2UgPT0gc2VsZi5l eHRlY3RlZF9tc2cKKworICAgICAgICAjIENoZWNrIHRoZSBjb21tYW5kCisgICAgICAgIG9ial9k ZXRhaWxzID0gYmFja3VwX29iai5kZXRhaWxzKHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNb J2FyZ3MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLmV4cGV0Y2VkX2RldGFpbHNfY21k LCBvYmpfZGV0YWlscykKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0 cy90ZXN0X2JhY2t1cF91dGlscy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90 ZXN0X2JhY2t1cF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45 MzEzZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3Rz L3Rlc3RfYmFja3VwX3V0aWxzLnB5CkBAIC0wLDAgKzEsMTE5IEBACisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykg MjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCitpbXBvcnQgdGltZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHNpbXBsZWpzb24g YXMganNvbgorCisKK2RlZiBjcmVhdGVfYmFja3VwX2pvYih0ZXN0ZXIsIHVybCwgcGFyYW1zKToK KyAgICAjIENyZWF0ZSB0aGUgYmFja3VwIGpvYgorICAgIHJlc3BvbnNlID0gdGVzdGVyLnBvc3Qo dXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHBhcmFtcyks CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisg ICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1c19jb2RlID09IDIwMAorICAgIHJlc3BvbnNlX2RhdGEg PSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgIGpvYl9pZCA9 IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnam9iX2lkJ10KKyAgICByZXR1cm4gam9iX2lkCisKKwor ZGVmIHJ1bl9iYWNrdXBfam9iKHRlc3Rlciwgam9iX2lkLCBleHBlY3RlZF9wYXJhbXMsIGFzc2Vy dEluLCBhc3NlcnROb3RJbik6CisgICAgY250ID0gMAorICAgIHdoaWxlIDE6CisgICAgICAgIGlm IGNudCA+IDE6CisgICAgICAgICAgICBicmVhaworICAgICAgICAjIENoZWNrIHRoZSBwcm9jZXNz IGxpc3QKKyAgICAgICAgcmVzcG9uc2UxID0gdGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzLz9f PScuZm9ybWF0KAorICAgICAgICAgICAgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpKQorICAg ICAgICBhc3NlcnQgcmVzcG9uc2UxLnN0YXR1c19jb2RlID09IDIwMAorICAgICAgICBwcm9jZXNz X2xpc3QgPSBqc29uLmxvYWRzKHJlc3BvbnNlMS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAg ICAgICBpZiBsZW4ocHJvY2Vzc19saXN0KSA+IDAgYW5kICdleGVjdXRpb25fdGltZScgaW4gcHJv Y2Vzc19saXN0WzBdOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgdGltZS5zbGVlcCgwLjUp CisgICAgICAgIGNudCArPSAxCisKKyAgICBhc3NlcnQgJ2V4ZWN1dGlvbl90aW1lJyBpbiBwcm9j ZXNzX2xpc3RbMF0KKyAgICBhc3NlcnQgJ3N0aW1lJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAgICBh c3NlcnQgJ2V4aXRfY29kZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgYXNzZXJ0IHByb2Nlc3Nf bGlzdFswXVsnZXhpdF9jb2RlJ10gaW4gZXhwZWN0ZWRfcGFyYW1zWworICAgICAgICAnZXhwZWN0 ZWRfZXhpdF9jb2RlJworICAgIF0KKworICAgIGJhY2t1cF9maWxlID0gTm9uZQorICAgIGlmICdk ZXRhaWxzJyBpbiBwcm9jZXNzX2xpc3RbMF06CisgICAgICAgIGJhY2t1cF9kZXQgPSBwcm9jZXNz X2xpc3RbMF1bJ2RldGFpbHMnXQorICAgICAgICBiYWNrdXBfZmlsZSA9IGJhY2t1cF9kZXRbaW50 KGJhY2t1cF9kZXQuZmluZCgnLS1maWxlJykpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDg6aW50KGJhY2t1cF9kZXQuZmluZCgnLS1ob3N0JykpIC0gMl0KKworICAgIGlmIGV4 cGVjdGVkX3BhcmFtc1snZXhwZWN0ZWRfY21kX29wdHMnXToKKyAgICAgICAgZm9yIG9wdCBpbiBl eHBlY3RlZF9wYXJhbXNbJ2V4cGVjdGVkX2NtZF9vcHRzJ106CisgICAgICAgICAgICBhc3NlcnRJ bihvcHQsIHByb2Nlc3NfbGlzdFswXVsnZGV0YWlscyddKQorICAgIGlmIGV4cGVjdGVkX3BhcmFt c1snbm90X2V4cGVjdGVkX2NtZF9vcHRzJ106CisgICAgICAgIGZvciBvcHQgaW4gZXhwZWN0ZWRf cGFyYW1zWydub3RfZXhwZWN0ZWRfY21kX29wdHMnXToKKyAgICAgICAgICAgIGFzc2VydE5vdElu KG9wdCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10pCisKKyAgICAjIENoZWNrIHRoZSBwcm9j ZXNzIGRldGFpbHMKKyAgICBwX2RldGFpbHMgPSB0ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nlc3Mv ezB9P189Jy5mb3JtYXQoCisgICAgICAgIGpvYl9pZCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5 OSkpCisgICAgKQorICAgIGFzc2VydCBwX2RldGFpbHMuc3RhdHVzX2NvZGUgPT0gMjAwCisgICAg cF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgn KSkKKworICAgIHBfZGV0YWlscyA9IHRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0vezF9 L3syfS8/Xz0nLmZvcm1hdCgKKyAgICAgICAgam9iX2lkLCAwLCAwLCByYW5kb20ucmFuZGludCgx LCA5OTk5OTk5KSkKKyAgICApCisgICAgYXNzZXJ0IHBfZGV0YWlscy5zdGF0dXNfY29kZSA9PSAy MDAKKyAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2Rl KCd1dGYtOCcpKQorCisgICAgY250ID0gMAorICAgICMgUmV0cmlldmUgdGhlIGJhY2t1cCBqb2Ig cHJvY2VzcyBsb2dzCisgICAgd2hpbGUgMToKKyAgICAgICAgb3V0LCBlcnIsIHN0YXR1cyA9IGdl dF9wYXJhbXMocF9kZXRhaWxzX2RhdGEpCisgICAgICAgIGlmIHN0YXR1cyBvciBjbnQgPj0gMTA6 CisgICAgICAgICAgICBicmVhaworCisgICAgICAgIHBfZGV0YWlscyA9IHRlc3Rlci5nZXQoCisg ICAgICAgICAgICAnL21pc2MvYmdwcm9jZXNzL3swfS97MX0vezJ9Lz9fPXszfScuZm9ybWF0KAor ICAgICAgICAgICAgICAgIGpvYl9pZCwgb3V0LCBlcnIsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5 OTkpKQorICAgICAgICApCisgICAgICAgIGFzc2VydCBwX2RldGFpbHMuc3RhdHVzX2NvZGUgPT0g MjAwCisgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5k ZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgY250ICs9IDEKKyAgICAgICAgdGltZS5zbGVlcCgx KQorCisgICAgIyBDaGVjayB0aGUgam9iIGlzIGNvbXBsZXRlLgorICAgIGJhY2t1cF9hY2sgPSB0 ZXN0ZXIucHV0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9Jy5mb3JtYXQoam9iX2lkKSkKKyAgICBhc3Nl cnQgYmFja3VwX2Fjay5zdGF0dXNfY29kZSA9PSAyMDAKKyAgICBiYWNrdXBfYWNrX3JlcyA9IGpz b24ubG9hZHMoYmFja3VwX2Fjay5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgIGFzc2VydCBi YWNrdXBfYWNrX3Jlc1snc3VjY2VzcyddID09IDEKKworICAgIHJldHVybiBiYWNrdXBfZmlsZQor CisKK2RlZiBnZXRfcGFyYW1zKGRhdGEpOgorICAgIG91dCA9IDAKKyAgICBvdXRfZG9uZSA9IEZh bHNlCisgICAgZXJyID0gMAorICAgIGVycl9kb25lID0gRmFsc2UKKyAgICBpZiAnb3V0JyBpbiBk YXRhOgorICAgICAgICBvdXQgPSBkYXRhWydvdXQnXSBhbmQgZGF0YVsnb3V0J11bJ3BvcyddCisK KyAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291dCddOgorICAgICAgICAgICAgb3V0X2RvbmUg PSBkYXRhWydvdXQnXVsnZG9uZSddCisKKyAgICBpZiAnZXJyJyBpbiBkYXRhOgorICAgICAgICBl cnIgPSBkYXRhWydlcnInXSBhbmQgZGF0YVsnZXJyJ11bJ3BvcyddCisKKyAgICAgICAgaWYgJ2Rv bmUnIGluIGRhdGFbJ2VyciddOgorICAgICAgICAgICAgZXJyX2RvbmUgPSBkYXRhWydlcnInXVsn ZG9uZSddCisKKyAgICByZXR1cm4gb3V0LCBlcnIsIChvdXRfZG9uZSBhbmQgZXJyX2RvbmUpCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYXRjaF9wcm9j ZXNzLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJvY2Vz cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDc0Y2E1Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJv Y2Vzcy5weQpAQCAtMCwwICsxLDIxMiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9y dCBzeXMKK2ltcG9ydCBzaW1wbGVqc29uIGFzIGpzb24KKworZnJvbSBwZ2FkbWluLm1pc2MuYmdw cm9jZXNzLnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzLCBJUHJvY2Vzc0Rlc2MKK2Zyb20g cGdhZG1pbi50b29scy5iYWNrdXAgaW1wb3J0IEJhY2t1cE1lc3NhZ2UsIEJBQ0tVUAorZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSBwaWNrbGUg aW1wb3J0IGR1bXBzLCBsb2FkcworCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAg IGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGlt cG9ydCBwYXRjaAorCisKK2NsYXNzIEJhdGNoUHJvY2Vzc1Rlc3QoQmFzZVRlc3RHZW5lcmF0b3Ip OgorICAgICIiIlRlc3QgdGhlIEJhdGNoUHJvY2VzcyBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9 IFsKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBzZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAg ICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgdHlwZT1CQUNLVVAu U0VSVkVSLAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0n dGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAg ICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0n cG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICBhcmdzPVsK KyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgImJh Y2t1cF9maWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAg ICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAg ICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJu YW1lJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIsCisgICAgICAgICAgICAgICAg ICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZScs CisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiCisgICAgICAgICAgICAgICAgIF0sCisg ICAgICAgICAgICAgICAgIGNtZD0nYmFja3VwX3NlcnZlcicKKyAgICAgICAgICAgICApCisgICAg ICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBnbG9iYWxzJywKKyAgICAgICAgIGRpY3Qo CisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9 QkFDS1VQLkdMT0JBTFMsCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQs CisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jlcycs CisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAg IGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAg ICAgICAiYmFja3VwX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAg ICAgICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXBv cnQnLAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAgICAgICAgICAgICAg Jy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAg ICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRh dGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAgICAgICAgICAgICAg ICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSdiYWNrdXAnCisgICAgICAgICAgICAgKQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgb2JqZWN0JywKKyAgICAgICAgIGRpY3Qo CisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9 QkFDS1VQLk9CSkVDVCwKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJywK KyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAg YXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAg ICAgICJiYWNrdXBfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0JywKKyAgICAg ICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAgJy0tcG9y dCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAgICAgICAgICAn LS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAg ICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tZGF0 YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAgICAgICAgICAgICAg ICBdLAorICAgICAgICAgICAgICAgICBjbWQ9J2JhY2t1cCcKKyAgICAgICAgICAgICApCisgICAg ICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuQmFja3Vw TWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJn cHJvY2Vzcy5wcm9jZXNzZXMuUG9wZW4nKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJv Y2Vzcy5wcm9jZXNzZXMuY3VycmVudF9hcHAnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJn cHJvY2Vzcy5wcm9jZXNzZXMuZGInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAu Y3VycmVudF91c2VyJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vz c2VzLmN1cnJlbnRfdXNlcicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgY3VycmVudF91c2VyX21v Y2ssIGN1cnJlbnRfdXNlciwgZGJfbW9jaywKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FwcF9t b2NrLCBwb3Blbl9tb2NrLCBnZXRfc2VydmVyX2RldGFpbHNfbW9jayk6CisgICAgICAgIGN1cnJl bnRfdXNlci5pZCA9IDEKKyAgICAgICAgY3VycmVudF91c2VyX21vY2suaWQgPSAxCisgICAgICAg IGN1cnJlbnRfYXBwX21vY2suUEdBRE1JTl9SVU5USU1FID0gRmFsc2UKKworICAgICAgICBkZWYg ZGJfc2Vzc2lvbl9hZGRfbW9jayhqKToKKyAgICAgICAgICAgIGNtZF9vYmogPSBsb2FkcyhqLmRl c2MpCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjbWRfb2JqLCBJUHJvY2Vzc0Rlc2Mp CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmJhY2t1cF90eXBlLCBzZWxm LmNsYXNzX3BhcmFtc1sndHlwZSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21k X29iai5iZmlsZSwgc2VsZi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10pCisgICAgICAgICAgICBzZWxm LmFzc2VydEVxdWFscyhjbWRfb2JqLmRhdGFiYXNlLCBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJh c2UnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouY21kLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJyAtLWZpbGUgImJhY2t1cF9maWxlIiAnCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0ICJ7MH0iICcKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICctLXBvcnQgInsxfSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJy0tdXNlcm5hbWUgInsyfSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0t bm8tcGFzc3dvcmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGF0YWJhc2Ug InszfSInLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNs YXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ10KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICkpCisKKyAgICAgICAgZGJfbW9jay5zZXNzaW9uLmFkZC5zaWRlX2Vm ZmVjdCA9IGRiX3Nlc3Npb25fYWRkX21vY2sKKworICAgICAgICBnZXRfc2VydmVyX2RldGFpbHNf bW9jay5yZXR1cm5fdmFsdWUgPSBcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snbmFt ZSddLFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sXAorICAgICAgICAg ICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXQorCisgICAgICAgIGJhY2t1cF9vYmogPSBCYWNr dXBNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3R5cGUnXSwKKyAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3Nf cGFyYW1zWydiZmlsZSddLAorICAgICAgICAgICAgKnNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10s CisgICAgICAgICAgICAqKnsnZGF0YWJhc2UnOiBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJhc2Un XX0KKyAgICAgICAgKQorCisgICAgICAgIHAgPSBCYXRjaFByb2Nlc3MoCisgICAgICAgICAgICBk ZXNjPWJhY2t1cF9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19wYXJhbXNbJ2NtZCdd LAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkK KworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBiZWVuIGNhbGxlZAor ICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKworICAgICAgICAjIENo ZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFydChwb3Blbl9tb2NrLCBw KQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2VsZi5fY2hlY2tfbGlz dChwLCBiYWNrdXBfb2JqKQorCisgICAgZGVmIF9jaGVja19zdGFydChzZWxmLCBwb3Blbl9tb2Nr LCBwKToKKyAgICAgICAgY21kX3Rlc3QgPSBzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10KKworICAg ICAgICBjbGFzcyBwb3Blbk1vY2tTaWRlRWZmZWN0KCk6CisgICAgICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgY21kLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGNtZF90ZXN0 IGluIGNtZAorICAgICAgICAgICAgICAgIGFzc2VydCAnZW52JyBpbiBrd2FyZ3MKKworICAgICAg ICAgICAgZGVmIHBvbGwoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHBv cGVuX21vY2suc2lkZV9lZmZlY3QgPSBwb3Blbk1vY2tTaWRlRWZmZWN0CisgICAgICAgIHAuc3Rh cnQoKQorCisgICAgICAgIGFzc2VydCBwb3Blbl9tb2NrLmNhbGxlZAorCisgICAgQHBhdGNoKCdw Z2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5Qcm9jZXNzJykKKyAgICBAcGF0Y2goJ3Bn YWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLkJhdGNoUHJvY2Vzcy4nCisgICAgICAgICAg ICd1cGRhdGVfcHJvY2Vzc19pbmZvJykKKyAgICBkZWYgX2NoZWNrX2xpc3Qoc2VsZiwgcCwgYmFj a3VwX29iaiwgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2NrLAorICAgICAgICAgICAgICAgICAgICBw cm9jZXNzX21vY2spOgorICAgICAgICBjbGFzcyBUZXN0TW9ja1Byb2Nlc3MoKToKKyAgICAgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNjLCBhcmdzLCBjbWQpOgorICAgICAgICAgICAgICAg IHNlbGYucGlkID0gMQorICAgICAgICAgICAgICAgIHNlbGYuZXhpdF9jb2RlID0gMQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9ICcyMDE4LTA0LTE3IDA2OjE4OjU2LjMxNTQ0NSAr MDAwMCcKKyAgICAgICAgICAgICAgICBzZWxmLmVuZF90aW1lID0gTm9uZQorICAgICAgICAgICAg ICAgIHNlbGYuZGVzYyA9IGR1bXBzKGRlc2MpCisgICAgICAgICAgICAgICAgc2VsZi5hcmd1bWVu dHMgPSAiICIuam9pbihhcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZCA9IGNtZAor ICAgICAgICAgICAgICAgIHNlbGYuYWNrbm93bGVkZ2UgPSBOb25lCisKKyAgICAgICAgcHJvY2Vz c19tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUgPSBbCisgICAgICAgICAgICBUZXN0 TW9ja1Byb2Nlc3MoYmFja3VwX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu Y2xhc3NfcGFyYW1zWydjbWQnXSldCisKKyAgICAgICAgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2Nr LnJldHVybl92YWx1ZSA9IFtUcnVlLCBUcnVlXQorCisgICAgICAgIHJldF92YWx1ZSA9IHAubGlz dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJldF92YWx1ZSkpCisgICAgICAg IGFzc2VydCAnZGV0YWlscycgaW4gcmV0X3ZhbHVlWzBdCisgICAgICAgIGFzc2VydCAnZGVzYycg aW4gcmV0X3ZhbHVlWzBdCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVz dHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90 ZXN0cy90ZXN0X2NyZWF0ZV9iYWNrdXBfam9iLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjNlM2ZlOTIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9i YWNrdXAvdGVzdHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weQpAQCAtMCwwICsxLDYzIEBACisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisj IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgb3MKK2Zyb20gcGdhZG1pbi51dGlscy5y b3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFy ZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0 ZXN0X3V0aWxzIGFzIHV0aWxzCitpbXBvcnQgcGdhZG1pbi50b29scy5iYWNrdXAudGVzdHMudGVz dF9iYWNrdXBfdXRpbHMgYXMgYmFja3VwX3V0aWxzCisKKworY2xhc3MgQmFja3VwSm9iVGVzdChC YXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiQmFja3VwIGFwaSB0ZXN0IGNhc2VzIiIiCisgICAg c2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCB0aGUg ZGVmYXVsdCBvcHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAg ICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAg ICAgICAgICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisg ICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97 MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBleHBlY3RlZF9wYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9YycsICct LWJsb2JzJ10sCisgICAgICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAg ICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgICAg ICkKKyAgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBp ZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAg ICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMg aXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkK KworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVu dF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgdXJsID0gc2Vs Zi51cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkKQorCisgICAgICAgICMgQ3JlYXRlIHRoZSBiYWNr dXAgam9iCisgICAgICAgIGpvYl9pZCA9IGJhY2t1cF91dGlscy5jcmVhdGVfYmFja3VwX2pvYihz ZWxmLnRlc3RlciwgdXJsLCBzZWxmLnBhcmFtcykKKyAgICAgICAgYmFja3VwX2ZpbGUgPSBiYWNr dXBfdXRpbHMucnVuX2JhY2t1cF9qb2Ioc2VsZi50ZXN0ZXIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvYl9pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZF9wYXJhbXMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNz ZXJ0SW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuYXNzZXJ0Tm90SW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKQorCisgICAgICAgIGlmIGJhY2t1cF9maWxlIGlzIG5vdCBOb25lOgorICAg ICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoYmFja3VwX2ZpbGUpOgorICAgICAgICAgICAgICAg IG9zLnJlbW92ZShiYWNrdXBfZmlsZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21h aW50ZW5hbmNlL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFu Y2UvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMv dGVzdF9iYXRjaF9wcm9jZXNzX21haW50ZW5hbmNlLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFp bnRlbmFuY2UvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzX21haW50ZW5hbmNlLnB5Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YzNkYjgKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3NfbWFp bnRlbmFuY2UucHkKQEAgLTAsMCArMSwxNTMgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBn QWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx OCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitp bXBvcnQgc3lzCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMgaW1wb3J0 IEJhdGNoUHJvY2VzcywgSVByb2Nlc3NEZXNjCitmcm9tIHBnYWRtaW4udG9vbHMubWFpbnRlbmFu Y2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRl c3RHZW5lcmF0b3IKK2Zyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMKKworaWYgc3lzLnZl cnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoCitlbHNlOgor ICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKworCitjbGFzcyBCYXRjaFByb2Nl c3NUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBCYXRjaFByb2Nlc3Mg Y2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiBtYWludGFpbmVkIHNl cnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0 JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICB1c2VybmFt ZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAg ICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAg ICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAg ICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICct LWRibmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAorICAgICAgICAgICAg ICAgICAgICAgJy0tY29tbWFuZCcsCisgICAgICAgICAgICAgICAgICAgICAiVkFDVVVNIFZFUkJP U0U7XG4iCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGRhdGE9eworICAg ICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgICAgICdvcCc6ICdWQUNVVU0nLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9hbmFs eXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2ZyZWV6ZSc6IEZhbHNl LAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mdWxsJzogRmFsc2UsCisgICAgICAgICAg ICAgICAgICAgICAndmVyYm9zZSc6IFRydWUKKyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICAgICAgY21kPSJWQUNVVU0gVkVSQk9TRTtcbiIKKyAgICAgICAgICAgICApLAorICAgICAg ICAgICAgIGV4cGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZhY3V1bSkiLAorICAgICAgICAgICAg IGV4cGV0Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gVkVSQk9TRTsnCisgICAgICAgICApKQorICAg IF0KKworICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUG9wZW4n KQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF9h cHAnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuZGInKQor ICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5jZS5TZXJ2ZXInKQorICAgIEBwYXRj aCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF91c2VyJykKKyAgICBk ZWYgcnVuVGVzdChzZWxmLCBjdXJyZW50X3VzZXJfbW9jaywgc2VydmVyX21vY2ssIGRiX21vY2ss CisgICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywgcG9wZW5fbW9jayk6CisgICAgICAg IGN1cnJlbnRfdXNlcl9tb2NrLmlkID0gMQorICAgICAgICBjdXJyZW50X2FwcF9tb2NrLlBHQURN SU5fUlVOVElNRSA9IEZhbHNlCisKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAg ICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBob3N0LCBwb3J0KToKKyAgICAgICAg ICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9z dAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKworICAgICAgICBkZWYgZGJfc2Vz c2lvbl9hZGRfbW9jayhqKToKKyAgICAgICAgICAgIGNtZF9vYmogPSBsb2FkcyhqLmRlc2MpCisg ICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjbWRfb2JqLCBJUHJvY2Vzc0Rlc2MpCisgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLnF1ZXJ5LCBzZWxmLmNsYXNzX3BhcmFt c1snY21kJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLm1lc3NhZ2Us IHNlbGYuZXhwZWN0ZWRfbXNnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21kX29i ai5kYXRhLCBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YSddKQorCisgICAgICAgIG1vY2tfb2JqID0g VGVzdE1vY2tTZXJ2ZXIoc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9ydCddKQor ICAgICAgICBtb2NrX3Jlc3VsdCA9IHNlcnZlcl9tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5f dmFsdWUKKyAgICAgICAgbW9ja19yZXN1bHQuZmlyc3QucmV0dXJuX3ZhbHVlID0gbW9ja19vYmoK KworICAgICAgICBkYl9tb2NrLnNlc3Npb24uYWRkLnNpZGVfZWZmZWN0ID0gZGJfc2Vzc2lvbl9h ZGRfbW9jaworCisgICAgICAgIG1haW50ZW5hbmNlX29iaiA9IE1lc3NhZ2UoCisgICAgICAgICAg ICBzZWxmLmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFt c1snZGF0YSddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddCisgICAgICAg ICkKKworICAgICAgICBwID0gQmF0Y2hQcm9jZXNzKAorICAgICAgICAgICAgZGVzYz1tYWludGVu YW5jZV9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddLAorICAg ICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkKKworICAg ICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBiZWVuIGNhbGxlZAorICAgICAg ICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKworICAgICAgICAjIENoZWNrIHN0 YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFydChwb3Blbl9tb2NrLCBwKQorCisg ICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2VsZi5fY2hlY2tfbGlzdChwLCBt YWludGVuYW5jZV9vYmopCisKKyAgICBkZWYgX2NoZWNrX3N0YXJ0KHNlbGYsIHBvcGVuX21vY2ss IHApOgorICAgICAgICBjbWRfdGVzdCA9IHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXQorCisgICAg ICAgIGNsYXNzIHBvcGVuTW9ja1NpZGVFZmZlY3QoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBjbWQsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgY21kX3Rlc3Qg aW4gY21kCisgICAgICAgICAgICAgICAgYXNzZXJ0ICdlbnYnIGluIGt3YXJncworCisgICAgICAg ICAgICBkZWYgcG9sbChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcG9w ZW5fbW9jay5zaWRlX2VmZmVjdCA9IHBvcGVuTW9ja1NpZGVFZmZlY3QKKyAgICAgICAgcC5zdGFy dCgpCisKKyAgICAgICAgYXNzZXJ0IHBvcGVuX21vY2suY2FsbGVkCisKKyAgICBAcGF0Y2goJ3Bn YWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLlByb2Nlc3MnKQorICAgIEBwYXRjaCgncGdh ZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuQmF0Y2hQcm9jZXNzLicKKyAgICAgICAgICAg J3VwZGF0ZV9wcm9jZXNzX2luZm8nKQorICAgIGRlZiBfY2hlY2tfbGlzdChzZWxmLCBwLCBtYWlu dGVuYW5jZV9vYmosIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jaywKKyAgICAgICAgICAgICAgICAg ICAgcHJvY2Vzc19tb2NrKToKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tQcm9jZXNzKCk6CisgICAg ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGVzYywgYXJncywgY21kKToKKyAgICAgICAgICAg ICAgICBzZWxmLnBpZCA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLmV4aXRfY29kZSA9IDEKKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSAnMjAxOC0wNC0xNyAwNjoxODo1Ni4zMTU0 NDUgKzAwMDAnCisgICAgICAgICAgICAgICAgc2VsZi5lbmRfdGltZSA9IE5vbmUKKyAgICAgICAg ICAgICAgICBzZWxmLmRlc2MgPSBkdW1wcyhkZXNjKQorICAgICAgICAgICAgICAgIHNlbGYuYXJn dW1lbnRzID0gIiAiLmpvaW4oYXJncykKKyAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmQgPSBj bWQKKyAgICAgICAgICAgICAgICBzZWxmLmFja25vd2xlZGdlID0gTm9uZQorCisgICAgICAgIHBy b2Nlc3NfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlID0gWworICAgICAgICAgICAg VGVzdE1vY2tQcm9jZXNzKG1haW50ZW5hbmNlX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSkKKyAgICAgICAgXQorCisgICAgICAgIHVwZGF0 ZV9wcm9jZXNzX2luZm9fbW9jay5yZXR1cm5fdmFsdWUgPSBbVHJ1ZSwgVHJ1ZV0KKworICAgICAg ICByZXRfdmFsdWUgPSBwLmxpc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihy ZXRfdmFsdWUpKQorICAgICAgICBhc3NlcnQgJ2RldGFpbHMnIGluIHJldF92YWx1ZVswXQorICAg ICAgICBhc3NlcnQgJ2Rlc2MnIGluIHJldF92YWx1ZVswXQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9jcmVhdGVfbWFpbnRlbmFuY2Vfam9iLnB5 IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9jcmVhdGVfbWFpbnRl bmFuY2Vfam9iLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMDFmMWQK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90 ZXN0X2NyZWF0ZV9tYWludGVuYW5jZV9qb2IucHkKQEAgLTAsMCArMSwxNDAgQEAKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJp Z2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlz IHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgdGltZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHNpbXBs ZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0 R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20g cmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwor ZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0aWxzCitm cm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3Rz IGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKKworCitjbGFzcyBNYWludGVu YW5jZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIk1haW50ZW5hbmNlIGFwaSB0 ZXN0IGNhc2VzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gbWFpbnRlbmFu Y2UgdGhlIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IG9wdGlvbnMnLAorICAgICAgICAgZGljdCgK KyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZGF0YT17CisgICAg ICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAgICAgICAgICAgICAg ICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2FuYWx5 emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJlZXplJzogRmFsc2Us CisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwKKyAgICAgICAgICAg ICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg ICAgICAgICBjbWQ9IlZBQ1VVTSBWRVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisgICAgICAg ICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAgICAgICAgICAgIGV4cGVj dGVkX2NtZD0nVkFDVVVNIFZFUkJPU0UnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29k ZT1bMCwgTm9uZV0KKyAgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgor ICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgor ICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5h cnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICkKKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICBzZWxmLmRiX25hbWUg PSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNl Il1bLTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBzZWxmLmRiX2lkID0gcGFyZW50X25vZGVfZGlj dFsiZGF0YWJhc2UiXVstMV1bImRiX2lkIl0KKyAgICAgICAgdXJsID0gc2VsZi51cmwuZm9ybWF0 KHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQorCisgICAgICAgICMgQ3JlYXRlIHRoZSBiYWNr dXAgam9iCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1cmwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoc2VsZi5wYXJhbXNb J2RhdGEnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5 cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1 c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNl LmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNwb25zZV9kYXRhWydk YXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgY250ID0gMAorICAgICAgICB3aGlsZSAxOgorICAg ICAgICAgICAgaWYgY250ID4gMToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAg IyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAgICAgICByZXNwb25zZTEgPSBzZWxmLnRl c3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBy YW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhyZXNwb25zZTEuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHByb2Nlc3NfbGlzdCA9 IGpzb24ubG9hZHMocmVzcG9uc2UxLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgICAg ICBpZiBsZW4ocHJvY2Vzc19saXN0KSA+IDAgYW5kICdleGVjdXRpb25fdGltZScgaW4gcHJvY2Vz c19saXN0WzBdOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB0aW1lLnNsZWVw KDAuNSkKKyAgICAgICAgICAgIGNudCArPSAxCisKKyAgICAgICAgYXNzZXJ0ICdleGVjdXRpb25f dGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgICAgIGFzc2VydCAnc3RpbWUnIGluIHByb2Nl c3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgJ2V4aXRfY29kZScgaW4gcHJvY2Vzc19saXN0WzBd CisgICAgICAgIGFzc2VydCBwcm9jZXNzX2xpc3RbMF1bJ2V4aXRfY29kZSddIGluIHNlbGYuZXhw ZWN0ZWRfZXhpdF9jb2RlCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLmV4cGVjdGVkX2Nt ZCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10pCisKKyAgICAgICAgIyBDaGVjayB0aGUgcHJv Y2VzcyBkZXRhaWxzCisgICAgICAgIHBfZGV0YWlscyA9IHNlbGYudGVzdGVyLmdldCgnL21pc2Mv Ymdwcm9jZXNzL3swfT9fPScuZm9ybWF0KAorICAgICAgICAgICAgam9iX2lkLCByYW5kb20ucmFu ZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhw X2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcF9kZXRhaWxzX2RhdGEgPSBqc29u LmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICBwX2RldGFp bHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz0nLmZv cm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5 OSkpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1 c19jb2RlLCAyMDApCisgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFp bHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgIyBSZXRyaWV2ZSB0aGUgYmFja3Vw IGpvYiBwcm9jZXNzIGxvZ3MKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIG91dCwgZXJy LCBzdGF0dXMgPSBNYWludGVuYW5jZUpvYlRlc3QuZ2V0X3BhcmFtcyhwX2RldGFpbHNfZGF0YSkK KyAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAg ICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoCisgICAgICAgICAgICAgICAgJy9taXNj L2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz17M30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAg ICAgam9iX2lkLCBvdXQsIGVyciwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAg ICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2Nv ZGUsIDIwMCkKKyAgICAgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFp bHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKwor ICAgICAgICAjIENoZWNrIHRoZSBqb2IgaXMgY29tcGxldGUuCisgICAgICAgIGJhY2t1cF9hY2sg PSBzZWxmLnRlc3Rlci5wdXQoJy9taXNjL2JncHJvY2Vzcy97MH0nLmZvcm1hdChqb2JfaWQpKQor ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhiYWNrdXBfYWNrLnN0YXR1c19jb2RlLCAyMDApCisg ICAgICAgIGJhY2t1cF9hY2tfcmVzID0ganNvbi5sb2FkcyhiYWNrdXBfYWNrLmRhdGEuZGVjb2Rl KCd1dGYtOCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJhY2t1cF9hY2tfcmVzWydz dWNjZXNzJ10sIDEpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF9wYXJhbXMoZGF0 YSk6CisgICAgICAgIG91dCA9IDAKKyAgICAgICAgb3V0X2RvbmUgPSBGYWxzZQorICAgICAgICBl cnIgPSAwCisgICAgICAgIGVycl9kb25lID0gRmFsc2UKKyAgICAgICAgaWYgJ291dCcgaW4gZGF0 YToKKyAgICAgICAgICAgIG91dCA9IGRhdGFbJ291dCddIGFuZCBkYXRhWydvdXQnXVsncG9zJ10K KworICAgICAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291dCddOgorICAgICAgICAgICAgICAg IG91dF9kb25lID0gZGF0YVsnb3V0J11bJ2RvbmUnXQorCisgICAgICAgIGlmICdlcnInIGluIGRh dGE6CisgICAgICAgICAgICBlcnIgPSBkYXRhWydlcnInXSBhbmQgZGF0YVsnZXJyJ11bJ3Bvcydd CisKKyAgICAgICAgICAgIGlmICdkb25lJyBpbiBkYXRhWydlcnInXToKKyAgICAgICAgICAgICAg ICBlcnJfZG9uZSA9IGRhdGFbJ2VyciddWydkb25lJ10KKworICAgICAgICByZXR1cm4gb3V0LCBl cnIsIChvdXRfZG9uZSBhbmQgZXJyX2RvbmUpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX2NyZWF0ZV9qb2JfdW5pdF90ZXN0 LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9tYWludGVuYW5j ZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi41OGFlZjVjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRl bmFuY2UvdGVzdHMvdGVzdF9tYWludGVuYW5jZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpAQCAt MCwwICsxLDE5OCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBE ZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCitpbXBvcnQgc3lzCitp bXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKKworZnJvbSBwZ2FkbWluLm1pc2MuYmdwcm9jZXNz LnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzCitmcm9tIHBnYWRtaW4udG9vbHMubWFpbnRl bmFuY2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFz ZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAor ZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0 aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBzZXJ2ZXJfdXRp bHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu dGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFzZV91dGlscworCisKK2lmIHN5cy52 ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNN b2NrCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9j aworCisKK2NsYXNzIE1haW50ZW5hbmNlQ3JlYXRlSm9iVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6 CisgICAgIiIiVGVzdCB0aGUgQmFja3VwQ3JlYXRlSm9iIGNsYXNzIiIiCisgICAgc2NlbmFyaW9z ID0gWworICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdpdGggZGVmYXVsdCBvcHRp b25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50 ZW5hbmNlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAg ICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3Rn cmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9wPSdWQUNV VU0nLAorICAgICAgICAgICAgICAgICB2YWN1dW1fYW5hbHl6ZT1GYWxzZSwKKyAgICAgICAgICAg ICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmFjdXVtX2Z1bGw9 RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZQorICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAgICAgICAgICAg IGV4cGVjdGVkX2NtZF9vcHRzPVsnVkFDVVVNIFZFUkJPU0U7XG4nXSwKKyAgICAgICAgICkpLAor ICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdpdGggVkFDVVVNIEZVTEwnLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfbWFpbnRlbmFuY2Vfc2Vy dmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0 PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg ZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb3A9J1ZBQ1VVTScsCisgICAg ICAgICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1 dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnVsbD1UcnVlLAorICAg ICAgICAgICAgICAgICB2ZXJib3NlPVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAg IHVybD0nL21haW50ZW5hbmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9j bWRfb3B0cz1bJ1ZBQ1VVTSBGVUxMIFZFUkJPU0U7XG4nXSwKKyAgICAgICAgICkpLAorICAgICAg ICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdpdGggdGhlIEFOQUxZWkUnLAorICAgICAgICAg ZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg c2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfbWFpbnRlbmFuY2Vfc2VydmVyJywK KyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2Nh bGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb3A9J0FOQUxZWkUnLAorICAgICAgICAg ICAgICAgICB2YWN1dW1fYW5hbHl6ZT1UcnVlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnJl ZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnVsbD1GYWxzZSwKKyAgICAgICAg ICAgICAgICAgdmVyYm9zZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9 Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29w dHM9WydBTkFMWVpFIFZFUkJPU0U7XG4nXSwKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4g bWFpbnRlbmFuY2UgdGhlIG9iamVjdCB3aXRoIHRoZSBSRUlOREVYJywKKyAgICAgICAgIGRpY3Qo CisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0x LAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50ZW5hbmNlX3NlcnZlcicsCisgICAg ICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0 JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICks CisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdw b3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9wPSdSRUlOREVYJywKKyAgICAgICAgICAgICAg ICAgdmFjdXVtX2FuYWx5emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mcmVlemU9 RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxsPUZhbHNlLAorICAgICAgICAgICAg ICAgICB2ZXJib3NlPUZhbHNlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9t YWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9 WydSRUlOREVYIERBVEFCQVNFIHBvc3RncmVzO1xuJ10sCisgICAgICAgICApKSwKKyAgICAgICAg KCdXaGVuIG1haW50ZW5hbmNlIHRoZSBvYmplY3Qgd2l0aCB0aGUgQ0xVU1RFUicsCisgICAgICAg ICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAg ICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9tYWludGVuYW5jZV9zZXJ2ZXIn LAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xv Y2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBkYXRh YmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvcD0nQ0xVU1RFUicsCisgICAgICAg ICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1f ZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnVsbD1GYWxzZSwKKyAgICAg ICAgICAgICAgICAgdmVyYm9zZT1GYWxzZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAg dXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2Nt ZF9vcHRzPVsnQ0xVU1RFUjtcbiddLAorICAgICAgICAgKSkKKyAgICBdCisKKyAgICBkZWYgc2V0 VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydkZWZhdWx0X2JpbmFyeV9wYXRocydd IGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAorICAgICAgICAgICAgICAgICJk ZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0aGUgc2VydmVyIHswfSIuZm9ybWF0 KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnbmFtZSddCisgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgKQorCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLm1haW50ZW5h bmNlLlNlcnZlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLm1haW50ZW5hbmNlLk1lc3Nh Z2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5jZS5CYXRjaFByb2Nlc3Mn KQorICAgIEBwYXRjaCgncGdhZG1pbi51dGlscy5kcml2ZXIucHN5Y29wZzIuc2VydmVyX21hbmFn ZXIuU2VydmVyTWFuYWdlci4nCisgICAgICAgICAgICdleHBvcnRfcGFzc3dvcmRfZW52JykKKyAg ICBkZWYgcnVuVGVzdChzZWxmLCBleHBvcnRfcGFzc3dvcmRfZW52X21vY2ssCisgICAgICAgICAg ICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLCBtZXNzYWdlX21vY2ssIHNlcnZlcl9tb2NrKToKKyAg ICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsi c2VydmVyX2lkIl0KKyAgICAgICAgc2VsZi5kYl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFi YXNlIl1bLTFdWyJkYl9pZCJdCisgICAgICAgIHVybCA9IHNlbGYudXJsLmZvcm1hdChzZWxmLnNl cnZlcl9pZCwgc2VsZi5kYl9pZCkKKworICAgICAgICBjbGFzcyBUZXN0TW9ja1NlcnZlcigpOgor ICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGlkLCB1c2VybmFtZSk6 CisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAgICAgICAgICAgIHNlbGYu cG9ydCA9IHBvcnQKKyAgICAgICAgICAgICAgICBzZWxmLmlkID0gaWQKKyAgICAgICAgICAgICAg ICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUKKworICAgICAgICBtb2NrX29iaiA9IFRlc3RNb2Nr U2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndXNlcm5hbWUnXQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgbW9ja19yZXN1bHQgPSBzZXJ2ZXJfbW9jay5x dWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAgIG1vY2tfcmVzdWx0LmZpcnN0LnJl dHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnNldF9l bnZfdmFyaWFibGVzID0gTWFnaWNNb2NrKAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVRydWUK KyAgICAgICAgKQorICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suc3RhcnQgPSBNYWdpY01vY2so CisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICApCisgICAgICAgIGV4cG9y dF9wYXNzd29yZF9lbnZfbW9jay5yZXR1cm5fdmFsdWUgPSBUcnVlCisKKyAgICAgICAgc2VydmVy X3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYuc2VydmVy X2lkKQorICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9uc2VbImluZm8iXSA9PSAiU2VydmVyIGNvbm5l Y3RlZC4iOgorICAgICAgICAgICAgZGJfb3duZXIgPSBzZXJ2ZXJfcmVzcG9uc2VbJ2RhdGEnXVsn dXNlciddWyduYW1lJ10KKyAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGFiYXNlX3V0aWxzLmdl dF9kYl9kYXRhKGRiX293bmVyKQorICAgICAgICAgICAgc2VsZi5kYl9uYW1lID0gc2VsZi5kYXRh WyduYW1lJ10KKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFja3VwIGpvYgorICAgICAgICByZXNw b25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYucGFyYW1zKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcmVzcG9u c2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAg ICAgIGpvYl9pZCA9IHJlc3BvbnNlX2RhdGFbJ2RhdGEnXVsnam9iX2lkJ10KKworICAgICAgICBh c3NlcnQgbWVzc2FnZV9tb2NrLmNhbGxlZAorICAgICAgICBhc3NlcnQgYmF0Y2hfcHJvY2Vzc19t b2NrLmNhbGxlZAorCisgICAgICAgIGlmIHNlbGYuZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAg ICAgICBmb3Igb3B0IGluIHNlbGYuZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAgICAg c2VsZi5hc3NlcnRJbihvcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaF9w cm9jZXNzX21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXSkKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFuY2VfbWVzc2Fn ZS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL3Rlc3RfbWFpbnRlbmFu Y2VfbWVzc2FnZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2I4OWVk Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMv dGVzdF9tYWludGVuYW5jZV9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsMTI0IEBACisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdo dCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCitmcm9tIGZsYXNrIGltcG9ydCBSZXNwb25zZQoraW1wb3J0IHNpbXBs ZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udG9vbHMubWFpbnRlbmFuY2UgaW1wb3J0IE1l c3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IK KworCitjbGFzcyBNYWludGVuYW5jZU1lc3NhZ2VUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAg ICAiIiJUZXN0IHRoZSBNYWludGVuYW5jZSBNZXNzYWdlIGNsYXNzIiIiCisgICAgc2NlbmFyaW9z ID0gWworICAgICAgICAoJ1doZW4gbWFpbnRhaW5lZCB0aGUgc2VydmVyJywKKyAgICAgICAgIGRp Y3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNp ZD0xLAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRh YmFzZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnVkFDVVVNJywK KyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAgICAgICAg ICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg ICd2YWN1dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UnOiBU cnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0iVkFDVVVNIFZF UkJPU0U7XG4iCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9Ik1h aW50ZW5hbmNlIChWYWN1dW0pIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0n VkFDVVVNIFZFUkJPU0U7JworCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1haW50YWlu ZWQgdGhlIHNlcnZlciB3aXRoIEZVTEwgVkVSQk9TRSBvcHRpb25zJywKKyAgICAgICAgIGRpY3Qo CisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0x LAorICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFz ZSc6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnVkFDVVVNJywKKyAg ICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAgICAgICAgICAg ICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2 YWN1dW1fZnVsbCc6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZSc6IFRydWUK KyAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21kPSJWQUNVVU0gRlVMTCBW RVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJN YWludGVuYW5jZSAoVmFjdXVtKSIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9 J1ZBQ1VVTSBGVUxMIFZFUkJPU0U7JworCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1h aW50YWluZWQgdGhlIHNlcnZlciB3aXRoIEFOQUxZWkUnLAorICAgICAgICAgZGljdCgKKyAgICAg ICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAg ICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdBTkFMWVpFJywKKyAgICAgICAg ICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAg ICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1f ZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UnOiBUcnVlCisgICAg ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0iQU5BTFlaRSBWRVJCT1NFO1xu IgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0ZWRfbXNnPSJNYWludGVuYW5j ZSAoQW5hbHl6ZSkiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdBTkFMWVpF IFZFUkJPU0U7JworCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIG1haW50YWluZWQgdGhl IHNlcnZlciB3aXRoIFJFSU5ERVgnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFz c19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgICAgICdvcCc6ICdSRUlOREVYJywKKyAgICAgICAgICAgICAgICAgICAg ICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9m cmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnVsbCc6IEZhbHNl LAorICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2UnOiBGYWxzZQorICAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IlJFSU5ERVg7XG4iCisgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9Ik1haW50ZW5hbmNlIChSZWluZGV4KSIsCisgICAg ICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9J1JFSU5ERVg7JworCisgICAgICAgICApKSwK KyAgICAgICAgKCdXaGVuIG1haW50YWluZWQgdGhlIHNlcnZlciB3aXRoIENMVVNURVInLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAg ICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdD TFVTVEVSJywKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fYW5hbHl6ZSc6IEZhbHNlLAor ICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mcmVlemUnOiBGYWxzZSwKKyAgICAgICAgICAg ICAgICAgICAgICd2YWN1dW1fZnVsbCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3Zl cmJvc2UnOiBUcnVlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIGNtZD0i Q0xVU1RFUiBWRVJCT1NFO1xuIgorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgZXh0ZWN0 ZWRfbXNnPSJNYWludGVuYW5jZSAoQ2x1c3RlcikiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2Rl dGFpbHNfY21kPSdDTFVTVEVSIFZFUkJPU0U7JworCisgICAgICAgICApKSwKKyAgICBdCisKKyAg ICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgbWFpbnRlbmFuY2Vfb2JqID0gTWVzc2FnZSgK KyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwKKyAgICAgICAgICAgIHNlbGYu Y2xhc3NfcGFyYW1zWydkYXRhJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snY21k J10KKyAgICAgICAgKQorCisgICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVkIG1lc3NhZ2UgcmV0 dXJuZWQKKyAgICAgICAgYXNzZXJ0IG1haW50ZW5hbmNlX29iai5tZXNzYWdlID09IHNlbGYuZXh0 ZWN0ZWRfbXNnCisKKyAgICAgICAgIyBDaGVjayB0aGUgY29tbWFuZAorICAgICAgICBvYmpfZGV0 YWlscyA9IG1haW50ZW5hbmNlX29iai5kZXRhaWxzKHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSwg Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLmV4cGV0Y2VkX2RldGFpbHNfY21kLCBv YmpfZGV0YWlscykKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvX19pbml0 X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5CmluZGV4IDQ1ZDM4 MTYuLjU4YmMyNTEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvX19pbml0 X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9fX2luaXRfXy5weQpAQCAtODYs OCArODYsNyBAQCBjbGFzcyBSZXN0b3JlTWVzc2FnZShJUHJvY2Vzc0Rlc2MpOgogICAgICAgICAg ICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmNtZCArPSBjbWRBcmcoYXJnKQogCi0gICAg QHByb3BlcnR5Ci0gICAgZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgZGVmIGdldF9zZXJ2ZXJfZGV0 YWlscyhzZWxmKToKICAgICAgICAgIyBGZXRjaCB0aGUgc2VydmVyIGRldGFpbHMgbGlrZSBob3N0 bmFtZSwgcG9ydCwgcm9sZXMgZXRjCiAgICAgICAgIHMgPSBTZXJ2ZXIucXVlcnkuZmlsdGVyX2J5 KAogICAgICAgICAgICAgaWQ9c2VsZi5zaWQsIHVzZXJfaWQ9Y3VycmVudF91c2VyLmlkCkBAIC0x MDAsMzAgKzk5LDI1IEBAIGNsYXNzIFJlc3RvcmVNZXNzYWdlKElQcm9jZXNzRGVzYyk6CiAgICAg ICAgIGhvc3QgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfaG9zdCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVu bmVsIGVsc2Ugcy5ob3N0CiAgICAgICAgIHBvcnQgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfcG9ydCBp ZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5wb3J0CiAKKyAgICAgICAgcmV0dXJuIHMu bmFtZSwgaG9zdCwgcG9ydAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1lc3NhZ2Uoc2VsZik6 CisgICAgICAgIG5hbWUsIGhvc3QsIHBvcnQgPSBzZWxmLmdldF9zZXJ2ZXJfZGV0YWlscygpCisK ICAgICAgICAgcmV0dXJuIF8oIlJlc3RvcmluZyBiYWNrdXAgb24gdGhlIHNlcnZlciAnezB9Jy4u LiIpLmZvcm1hdCgKLSAgICAgICAgICAgICJ7MH0gKHsxfTp7Mn0pIi5mb3JtYXQocy5uYW1lLCBo b3N0LCBwb3J0KSwKKyAgICAgICAgICAgICJ7MH0gKHsxfTp7Mn0pIi5mb3JtYXQobmFtZSwgaG9z dCwgcG9ydCksCiAgICAgICAgICkKIAogICAgIGRlZiBkZXRhaWxzKHNlbGYsIGNtZCwgYXJncyk6 Ci0gICAgICAgICMgRmV0Y2ggdGhlIHNlcnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQs IHJvbGVzIGV0YwotICAgICAgICBzID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKLSAgICAgICAg ICAgIGlkPXNlbGYuc2lkLCB1c2VyX2lkPWN1cnJlbnRfdXNlci5pZAotICAgICAgICApLmZpcnN0 KCkKLQotICAgICAgICBmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVy Ci0gICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCi0gICAgICAg IG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNlbGYuc2lkKQotCi0gICAgICAg IGhvc3QgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfaG9zdCBpZiBtYW5hZ2VyLnVzZV9zc2hfdHVubmVs IGVsc2Ugcy5ob3N0Ci0gICAgICAgIHBvcnQgPSBtYW5hZ2VyLmxvY2FsX2JpbmRfcG9ydCBpZiBt YW5hZ2VyLnVzZV9zc2hfdHVubmVsIGVsc2Ugcy5wb3J0Ci0KKyAgICAgICAgbmFtZSwgaG9zdCwg cG9ydCA9IHNlbGYuZ2V0X3NlcnZlcl9kZXRhaWxzKCkKICAgICAgICAgcmVzID0gJzxkaXYgY2xh c3M9Img1Ij4nCiAKICAgICAgICAgcmVzICs9IGh0bWwuc2FmZV9zdHIoCiAgICAgICAgICAgICBf KAogICAgICAgICAgICAgICAgICJSZXN0b3JpbmcgYmFja3VwIG9uIHRoZSBzZXJ2ZXIgJ3swfScu Li4iCiAgICAgICAgICAgICApLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9 KSIuZm9ybWF0KHMubmFtZSwgaG9zdCwgcG9ydCkKKyAgICAgICAgICAgICAgICAiezB9ICh7MX06 ezJ9KSIuZm9ybWF0KG5hbWUsIGhvc3QsIHBvcnQpCiAgICAgICAgICAgICApCiAgICAgICAgICkK IApAQCAtMjA2LDYgKzIwMCw3IEBAIGRlZiBjcmVhdGVfcmVzdG9yZV9qb2Ioc2lkKToKIAogICAg IGlmIF9maWxlIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisg ICAgICAgICAgICBzdGF0dXM9NDEwLAogICAgICAgICAgICAgc3VjY2Vzcz0wLAogICAgICAgICAg ICAgZXJyb3Jtc2c9XygiRmlsZSBjb3VsZCBub3QgYmUgZm91bmQuIikKICAgICAgICAgKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy9fX2luaXRfXy5weSBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3MucHkgYi93ZWIvcGdhZG1pbi90b29s cy9yZXN0b3JlL3Rlc3RzL3Rlc3RfYmF0Y2hfcHJvY2Vzcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4yOGQ2OTJhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2JhdGNoX3Byb2Nlc3MucHkKQEAgLTAsMCArMSwxNTQg QEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK KyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgc3lzCisKK2Zyb20gcGdhZG1pbi5t aXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMgaW1wb3J0IEJhdGNoUHJvY2VzcywgSVByb2Nlc3NEZXNj Citmcm9tIHBnYWRtaW4udG9vbHMucmVzdG9yZSBpbXBvcnQgUmVzdG9yZU1lc3NhZ2UKK2Zyb20g cGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcGlja2xl IGltcG9ydCBkdW1wcywgbG9hZHMKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAg ICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBp bXBvcnQgcGF0Y2gKKworCitjbGFzcyBCYXRjaFByb2Nlc3NUZXN0KEJhc2VUZXN0R2VuZXJhdG9y KToKKyAgICAiIiJUZXN0IHRoZSBCYXRjaFByb2Nlc3MgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3Mg PSBbCisgICAgICAgICgnV2hlbiByZXN0b3JlIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAg ICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAg ICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAg ICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAg ICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlcm5h bWU9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScsCisg ICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisg ICAgICAgICAgICAgICAgICAgICAicmVzdG9yZV9maWxlIiwKKyAgICAgICAgICAgICAgICAgICAg ICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAgICAg ICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAgICAg ICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0 Z3JlcyIsCisgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAg ICAgICAgICAgICAnLS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMi CisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0ncmVzdG9yZV9zZXJ2 ZXInCisgICAgICAgICAgICAgKQorICAgICAgICAgKSkKKyAgICBdCisKKyAgICBAcGF0Y2goJ3Bn YWRtaW4udG9vbHMucmVzdG9yZS5SZXN0b3JlTWVzc2FnZS5nZXRfc2VydmVyX2RldGFpbHMnKQor ICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuUG9wZW4nKQorICAg IEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF9hcHAnKQor ICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuZGInKQorICAgIEBw YXRjaCgncGdhZG1pbi50b29scy5yZXN0b3JlLmN1cnJlbnRfdXNlcicpCisgICAgQHBhdGNoKCdw Z2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5jdXJyZW50X3VzZXInKQorICAgIGRlZiBy dW5UZXN0KHNlbGYsIGN1cnJlbnRfdXNlcl9tb2NrLCBjdXJyZW50X3VzZXIsIGRiX21vY2ssCisg ICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywgcG9wZW5fbW9jaywgZ2V0X3NlcnZlcl9k ZXRhaWxzX21vY2spOgorICAgICAgICBjdXJyZW50X3VzZXIuaWQgPSAxCisgICAgICAgIGN1cnJl bnRfdXNlcl9tb2NrLmlkID0gMQorICAgICAgICBjdXJyZW50X2FwcF9tb2NrLlBHQURNSU5fUlVO VElNRSA9IEZhbHNlCisKKyAgICAgICAgZGVmIGRiX3Nlc3Npb25fYWRkX21vY2soaik6CisgICAg ICAgICAgICBjbWRfb2JqID0gbG9hZHMoai5kZXNjKQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5z dGFuY2UoY21kX29iaiwgSVByb2Nlc3NEZXNjKQorICAgICAgICAgICAgcHJpbnQoY21kX29iaikK KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouYmZpbGUsIHNlbGYuY2xhc3Nf cGFyYW1zWydiZmlsZSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21kX29iai5j bWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC0tZmlsZSAicmVzdG9yZV9maWxl IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0ICJ7MH0iICcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICctLXBvcnQgInsxfSIgJworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUgInsyfSIgJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJy0tbm8tcGFzc3dvcmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jy0tZGF0YWJhc2UgInszfSInLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2RhdGFiYXNlJ10KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisKKyAgICAgICAgZ2V0X3NlcnZlcl9kZXRh aWxzX21vY2sucmV0dXJuX3ZhbHVlID0gXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNb J25hbWUnXSxcCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLFwKKyAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10KKworICAgICAgICBkYl9tb2NrLnNlc3Np b24uYWRkLnNpZGVfZWZmZWN0ID0gZGJfc2Vzc2lvbl9hZGRfbW9jaworCisgICAgICAgIHJlc3Rv cmVfb2JqID0gUmVzdG9yZU1lc3NhZ2UoCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sn c2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYmZpbGUnXSwKKyAgICAgICAg ICAgICpzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkKKworICAgICAgICBwID0g QmF0Y2hQcm9jZXNzKAorICAgICAgICAgICAgZGVzYz1yZXN0b3JlX29iaiwKKyAgICAgICAgICAg IGNtZD1zZWxmLmNsYXNzX3BhcmFtc1snY21kJ10sCisgICAgICAgICAgICBhcmdzPXNlbGYuY2xh c3NfcGFyYW1zWydhcmdzJ10KKyAgICAgICAgKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBfY3Jl YXRlX3Byb2Nlc3MgaGFzIGJlZW4gY2FsbGVkCisgICAgICAgIGFzc2VydCBkYl9tb2NrLnNlc3Np b24uYWRkLmNhbGxlZAorCisgICAgICAgICMgQ2hlY2sgc3RhcnQgbWV0aG9kCisgICAgICAgIHNl bGYuX2NoZWNrX3N0YXJ0KHBvcGVuX21vY2ssIHApCisKKyAgICAgICAgIyBDaGVjayBsaXN0IG1l dGhvZAorICAgICAgICBzZWxmLl9jaGVja19saXN0KHAsIHJlc3RvcmVfb2JqKQorCisgICAgZGVm IF9jaGVja19zdGFydChzZWxmLCBwb3Blbl9tb2NrLCBwKToKKyAgICAgICAgY21kX3Rlc3QgPSBz ZWxmLmNsYXNzX3BhcmFtc1snY21kJ10KKworICAgICAgICBjbGFzcyBwb3Blbk1vY2tTaWRlRWZm ZWN0KCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY21kLCAqKmt3YXJncyk6Cisg ICAgICAgICAgICAgICAgYXNzZXJ0IGNtZF90ZXN0IGluIGNtZAorICAgICAgICAgICAgICAgIGFz c2VydCAnZW52JyBpbiBrd2FyZ3MKKworICAgICAgICAgICAgZGVmIHBvbGwoc2VsZik6CisgICAg ICAgICAgICAgICAgcGFzcworCisgICAgICAgIHBvcGVuX21vY2suc2lkZV9lZmZlY3QgPSBwb3Bl bk1vY2tTaWRlRWZmZWN0CisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIGFzc2VydCBwb3Bl bl9tb2NrLmNhbGxlZAorCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nl c3Nlcy5Qcm9jZXNzJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vz c2VzLkJhdGNoUHJvY2Vzcy4nCisgICAgICAgICAgICd1cGRhdGVfcHJvY2Vzc19pbmZvJykKKyAg ICBkZWYgX2NoZWNrX2xpc3Qoc2VsZiwgcCwgcmVzdG9yZV9vYmosIHVwZGF0ZV9wcm9jZXNzX2lu Zm9fbW9jaywKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19tb2NrKToKKyAgICAgICAgY2xh c3MgVGVzdE1vY2tQcm9jZXNzKCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGVz YywgYXJncywgY21kKToKKyAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IDEKKyAgICAgICAgICAg ICAgICBzZWxmLmV4aXRfY29kZSA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUg PSAnMjAxOC0wNC0xNyAwNjoxODo1Ni4zMTU0NDUgKzAwMDAnCisgICAgICAgICAgICAgICAgc2Vs Zi5lbmRfdGltZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLmRlc2MgPSBkdW1wcyhkZXNj KQorICAgICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRzID0gIiAiLmpvaW4oYXJncykKKyAgICAg ICAgICAgICAgICBzZWxmLmNvbW1hbmQgPSBjbWQKKyAgICAgICAgICAgICAgICBzZWxmLmFja25v d2xlZGdlID0gTm9uZQorCisgICAgICAgIHByb2Nlc3NfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0 dXJuX3ZhbHVlID0gWworICAgICAgICAgICAgVGVzdE1vY2tQcm9jZXNzKHJlc3RvcmVfb2JqLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddKQorICAg ICAgICBdCisKKyAgICAgICAgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2NrLnJldHVybl92YWx1ZSA9 IFtUcnVlLCBUcnVlXQorCisgICAgICAgIHJldF92YWx1ZSA9IHAubGlzdCgpCisgICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJldF92YWx1ZSkpCisgICAgICAgIGFzc2VydCAnZGV0YWls cycgaW4gcmV0X3ZhbHVlWzBdCisgICAgICAgIGFzc2VydCAnZGVzYycgaW4gcmV0X3ZhbHVlWzBd CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfY3JlYXRl X3Jlc3RvcmVfam9iLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X2Ny ZWF0ZV9yZXN0b3JlX2pvYi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j YTFhYjJjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0 cy90ZXN0X2NyZWF0ZV9yZXN0b3JlX2pvYi5weQpAQCAtMCwwICsxLDIwMyBAQAorIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmln aHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgcmFuZG9tCitp bXBvcnQgb3MKKworaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udXRp bHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0 IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBv cnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJf dXRpbHMgYXMgc2VydmVyX3V0aWxzCitpbXBvcnQgcGdhZG1pbi50b29scy5iYWNrdXAudGVzdHMu dGVzdF9iYWNrdXBfdXRpbHMgYXMgYmFja3VwX3V0aWxzCisKKworaWYgc3lzLnZlcnNpb25faW5m byA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKK2Vsc2U6 CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCisKKworY2xh c3MgUmVzdG9yZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIkJhY2t1cCBhcGkg dGVzdCBjYXNlcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUg dGhlIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IG9wdGlvbnMnLAorICAgICAgICAgZGljdCgKKyAg ICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9yZXN0 b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAg ICAgICAgIGN1c3RvbT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAg ICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAor ICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSd0 ZXN0X3Jlc3RvcmVfZGF0YWJhc2UnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9 Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12 ZXJib3NlJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAg ICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0sCisgICAgICAgICAgICAgYmFja3Vw X29wdGlvbnM9ZGljdCgKKyAgICAgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgICAgICBmaWxlPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgICAg ICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisg ICAgICAgICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgc2No ZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSd0ZXN0X3Jlc3RvcmVfZGF0YWJhc2UnCisgICAgICAgICAgICAgICAg ICksCisgICAgICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAg ICAgICAgICAgICAgIGV4cGVjdGVkX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICAgICAg ZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9YycsICctLWJsb2JzJ10s CisgICAgICAgICAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICAgICAg ICAgICkKKworICAgICAgICAgICAgICkKKyAgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNl dFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMn XSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAi ZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1h dCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBjcmVhdGVfYmFja3VwKHNlbGYpOgorICAg ICAgICB1cmwgPSBzZWxmLmJhY2t1cF9vcHRpb25zWyd1cmwnXS5mb3JtYXQoc2VsZi5zZXJ2ZXJf aWQpCisgICAgICAgIGpvYl9pZCA9IGJhY2t1cF91dGlscy5jcmVhdGVfYmFja3VwX2pvYihzZWxm LnRlc3RlciwgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5iYWNrdXBfb3B0aW9uc1sncGFyYW1zJ10pCisgICAgICAgIHNlbGYuYmFja3Vw X2ZpbGUgPSBiYWNrdXBfdXRpbHMucnVuX2JhY2t1cF9qb2IoCisgICAgICAgICAgICBzZWxmLnRl c3RlciwKKyAgICAgICAgICAgIGpvYl9pZCwKKyAgICAgICAgICAgIHNlbGYuYmFja3VwX29wdGlv bnNbJ2V4cGVjdGVkX3BhcmFtcyddLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbiwKKyAgICAg ICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4KKyAgICAgICAgKQorCisgICAgZGVmIHJ1blRlc3Qoc2Vs Zik6CisgICAgICAgIHNlbGYuZGJfbmFtZSA9ICcnCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0g cGFyZW50X25vZGVfZGljdFsic2VydmVyIl1bLTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBzZXJ2 ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwgc2VsZi5zZXJ2 ZXJfaWQpCisgICAgICAgIGRiX2lkID0gdXRpbHMuY3JlYXRlX2RhdGFiYXNlKHNlbGYuc2VydmVy LCBzZWxmLnBhcmFtc1snZGF0YWJhc2UnXSkKKworICAgICAgICBzZWxmLmNyZWF0ZV9iYWNrdXAo KQorICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQpCisKKyAgICAg ICAgIyBDcmVhdGUgdGhlIHJlc3RvcmUgam9iCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucG9zdCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpz b24uZHVtcHMoc2VsZi5wYXJhbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhy ZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5s b2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgam9iX2lkID0gcmVz cG9uc2VfZGF0YVsnZGF0YSddWydqb2JfaWQnXQorCisgICAgICAgIGNudCA9IDAKKyAgICAgICAg d2hpbGUgMToKKyAgICAgICAgICAgIGlmIGNudCA+IDE6CisgICAgICAgICAgICAgICAgYnJlYWsK KyAgICAgICAgICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgbGlzdAorICAgICAgICAgICAgcmVzcG9u c2UxID0gc2VsZi50ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nlc3MvP189Jy5mb3JtYXQoCisgICAg ICAgICAgICAgICAgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpKQorICAgICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMocmVzcG9uc2UxLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgICAgICBw cm9jZXNzX2xpc3QgPSBqc29uLmxvYWRzKHJlc3BvbnNlMS5kYXRhLmRlY29kZSgndXRmLTgnKSkK KworICAgICAgICAgICAgaWYgbGVuKHByb2Nlc3NfbGlzdCkgPiAwIGFuZCAnZXhlY3V0aW9uX3Rp bWUnIGluIHByb2Nlc3NfbGlzdFswXToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAg ICAgdGltZS5zbGVlcCgwLjUpCisgICAgICAgICAgICBjbnQgKz0gMQorCisgICAgICAgIGFzc2Vy dCAnZXhlY3V0aW9uX3RpbWUnIGluIHByb2Nlc3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgJ3N0 aW1lJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAgICAgICAgYXNzZXJ0ICdleGl0X2NvZGUnIGluIHBy b2Nlc3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgcHJvY2Vzc19saXN0WzBdWydleGl0X2NvZGUn XSBpbiBzZWxmLmV4cGVjdGVkX2V4aXRfY29kZQorCisgICAgICAgIGlmIHNlbGYuZXhwZWN0ZWRf Y21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGluIHNlbGYuZXhwZWN0ZWRfY21kX29wdHM6 CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcHQsIHByb2Nlc3NfbGlzdFswXVsnZGV0 YWlscyddKQorICAgICAgICBpZiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAg ICAgIGZvciBvcHQgaW4gc2VsZi5ub3RfZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAg ICAgc2VsZi5hc3NlcnROb3RJbihvcHQsIHByb2Nlc3NfbGlzdFswXVsnZGV0YWlscyddKQorCisg ICAgICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgZGV0YWlscworICAgICAgICBwX2RldGFpbHMgPSBz ZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0/Xz0nLmZvcm1hdCgKKyAgICAgICAg ICAgIGpvYl9pZCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgICkKKyAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAg IHBfZGV0YWlsc19kYXRhID0ganNvbi5sb2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04 JykpCisKKyAgICAgICAgcF9kZXRhaWxzID0gc2VsZi50ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nl c3MvezB9L3sxfS97Mn0vP189Jy5mb3JtYXQoCisgICAgICAgICAgICBqb2JfaWQsIDAsIDAsIHJh bmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWxzKHBfZGV0YWlscy5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBwX2RldGFpbHNfZGF0 YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAg ICMgUmV0cmlldmUgdGhlIHJlc3RvcmUgam9iIHByb2Nlc3MgbG9ncworICAgICAgICBjbnQgPSAw CisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICBvdXQsIGVyciwgc3RhdHVzID0gUmVzdG9y ZUpvYlRlc3QuZ2V0X3BhcmFtcyhwX2RldGFpbHNfZGF0YSkKKyAgICAgICAgICAgIGlmIHN0YXR1 cyBvciBjbnQgPj0gMTA6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgcF9k ZXRhaWxzID0gc2VsZi50ZXN0ZXIuZ2V0KAorICAgICAgICAgICAgICAgICcvbWlzYy9iZ3Byb2Nl c3MvezB9L3sxfS97Mn0vP189ezN9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIGpvYl9p ZCwgb3V0LCBlcnIsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICAgICAgKQor ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocF9kZXRhaWxzLnN0YXR1c19jb2RlLCAyMDAp CisgICAgICAgICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEu ZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgICAgICBjbnQgKz0gMQorICAgICAgICAgICAgdGlt ZS5zbGVlcCgxKQorCisgICAgICAgICMgQ2hlY2sgdGhlIGpvYiBpcyBjb21wbGV0ZS4KKyAgICAg ICAgcmVzdG9yZV9hY2sgPSBzZWxmLnRlc3Rlci5wdXQoJy9taXNjL2JncHJvY2Vzcy97MH0nLmZv cm1hdChqb2JfaWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN0b3JlX2Fjay5zdGF0 dXNfY29kZSwgMjAwKQorICAgICAgICByZXN0b3JlX2Fja19yZXMgPSBqc29uLmxvYWRzKHJlc3Rv cmVfYWNrLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KHJlc3RvcmVfYWNrX3Jlc1snc3VjY2VzcyddLCAxKQorCisgICAgICAgIGlmIHNlbGYuYmFja3Vw X2ZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmJh Y2t1cF9maWxlKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi5iYWNrdXBfZmlsZSkK KworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X3BhcmFtcyhkYXRhKToKKyAgICAgICAg b3V0ID0gMAorICAgICAgICBvdXRfZG9uZSA9IEZhbHNlCisgICAgICAgIGVyciA9IDAKKyAgICAg ICAgZXJyX2RvbmUgPSBGYWxzZQorICAgICAgICBpZiAnb3V0JyBpbiBkYXRhOgorICAgICAgICAg ICAgb3V0ID0gZGF0YVsnb3V0J10gYW5kIGRhdGFbJ291dCddWydwb3MnXQorCisgICAgICAgICAg ICBpZiAnZG9uZScgaW4gZGF0YVsnb3V0J106CisgICAgICAgICAgICAgICAgb3V0X2RvbmUgPSBk YXRhWydvdXQnXVsnZG9uZSddCisKKyAgICAgICAgaWYgJ2VycicgaW4gZGF0YToKKyAgICAgICAg ICAgIGVyciA9IGRhdGFbJ2VyciddIGFuZCBkYXRhWydlcnInXVsncG9zJ10KKworICAgICAgICAg ICAgaWYgJ2RvbmUnIGluIGRhdGFbJ2VyciddOgorICAgICAgICAgICAgICAgIGVycl9kb25lID0g ZGF0YVsnZXJyJ11bJ2RvbmUnXQorCisgICAgICAgIHJldHVybiBvdXQsIGVyciwgKG91dF9kb25l IGFuZCBlcnJfZG9uZSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgY29ubmVj dGlvbiA9IHV0aWxzLmdldF9kYl9jb25uZWN0aW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJb J2RiJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAg IHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2hv c3QnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10sCisgICAgICAgICAgICBzZWxm LnNlcnZlclsnc3NsbW9kZSddCisgICAgICAgICkKKyAgICAgICAgdXRpbHMuZHJvcF9kYXRhYmFz ZShjb25uZWN0aW9uLCBzZWxmLnBhcmFtc1snZGF0YWJhc2UnXSkKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX2NyZWF0ZV9qb2JfdW5pdF90 ZXN0LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X3Jlc3RvcmVfY3Jl YXRlX2pvYl91bml0X3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MjgyOWNkOAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVz dHMvdGVzdF9yZXN0b3JlX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5CkBAIC0wLDAgKzEsMzE4IEBA CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgc3lzCitpbXBvcnQgc2ltcGxlanNv biBhcyBqc29uCisKK2Zyb20gcGdhZG1pbi50b29scy5yZXN0b3JlIGltcG9ydCBSZXN0b3JlTWVz c2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgor ZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jlc3Npb24u cHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcGdhZG1p bi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRp bHMgYXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywg Myk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCitlbHNlOgorICAgIGZy b20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworCisKK2NsYXNzIFJlc3Rv cmVDcmVhdGVKb2JUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBSZXN0 b3JlQ3JlYXRlSm9iIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4g cmVzdG9yZSBvYmplY3Qgd2l0aCBkZWZhdWx0IG9wdGlvbnMnLAorICAgICAgICAgZGljdCgKKyAg ICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisg ICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAg ICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAg ICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxl PSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisg ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgZmlsZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1 c3RvbScsCisgICAgICAgICAgICAgICAgIGN1c3RvbT1GYWxzZSwKKyAgICAgICAgICAgICAgICAg dmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAg ICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAg IHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9 WyctLXZlcmJvc2UnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisg ICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisg ICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIHRoZSBzZWN0aW9ucyBvcHRpb25zJywK KyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfc2Vy dmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0 PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgdXNl cm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAgICAgICAg ICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICBub19vZl9qb2JzPScy JywKKyAgICAgICAgICAgICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJi b3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAg IHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAg ICAgICAgICAgICAgZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBwcmVfZGF0YT1UcnVlLAor ICAgICAgICAgICAgICAgICBwb3N0X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9k YXRhPVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPVRydWUKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAg IyBQbGVhc2UgaW5jbHVkZSBzZWN0aW9ucyBkYXRhIGhlcmUsIHJpZ2h0IG5vdyB0aGlzIGlzIGEg YnVnCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1qb2Jz JywgJzInXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgIyBCZWxvdyBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIG9uY2Ugd2UgZml4IHRoZSBp c3N1ZSAjMzM2OAorICAgICAgICAgICAgICMgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVsnLS1kYXRh LW9ubHknLCAnLS1zY2hlbWEtb25seSddLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29k ZT1bMCwgTm9uZV0sCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgdGhlIG9i amVjdCB3aXRoIFR5cGUgb2Ygb2JqZWN0cycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9 NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAg ICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVz dG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0 ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAg ICAgICAgICAgICAgICAgbm9fb2Zfam9icz0nMicsCisgICAgICAgICAgICAgICAgIGN1c3RvbT1G YWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBz Y2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAg IGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1UcnVlLAor ICAgICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNf b3duZXI9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvcmVzdG9yZS9q b2IvezB9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICct LWRhdGEtb25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAg ICAgICAgICAgICAjIEJlbG93IG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgb25jZSB3ZSBmaXgg dGhlIGlzc3VlICMzMzY4CisgICAgICAgICAgICAgIyBub3RfZXhwZWN0ZWRfY21kX29wdHM9Wyct LXNjaGVtYS1vbmx5JywgJy0tbm8tb3duZXInXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0 X2NvZGU9WzAsIE5vbmVdLAorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9i amVjdCB3aXRoIG9wdGlvbiAtIERvIG5vdCBzYXZlJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfc2VydmVyJywKKyAgICAgICAgICAgICAgICAg cG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAg ICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVz dF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAg ICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZp bGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20n LAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIGN1c3Rv bT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAg dGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBkbnNfb3duZXI9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX3ByaXZpbGVn ZT1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNfdGFibGVzcGFjZT1UcnVlLAorICAgICAgICAg ICAgICAgICBvbmx5X2RhdGE9RmFsc2UKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVy bD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgIyBBZGQgJy0tbm8tcHJpdmlsZWdl cycgdG8gdGhlIGV4cGVjdGVkX2NtZCBvbmNlICMzMzYzIGZpeGVkCisgICAgICAgICAgICAgZXhw ZWN0ZWRfY21kX29wdHM9WyctLW5vLW93bmVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0tbm8tdGFibGVzcGFjZXMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIG9wdGlvbiAtIFF1 ZXJpZXMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVz dG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAg ICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAg ICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAg ICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9 VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFi bGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICBjbGVhbj1UcnVlLAorICAgICAgICAgICAgICAgICBpbmNsdWRlX2NyZWF0ZV9kYXRh YmFzZT1UcnVlLAorICAgICAgICAgICAgICAgICBzaW5nbGVfdHJhbnNhY3Rpb249VHJ1ZSwKKyAg ICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAg ICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWNyZWF0ZScsICctLWNsZWFuJywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tc2luZ2xlLXRyYW5zYWN0aW9uJ10sCisgICAg ICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVk X2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9y ZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBEaXNiYWxlJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIHBv cnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3Rf cmVzdG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxl PSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAor ICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9 W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgZGlzYWJsZV90cmlnZ2VyPVRydWUsCisg ICAgICAgICAgICAgICAgIG5vX2RhdGFfZmFpbF90YWJsZT1UcnVlLAorICAgICAgICAgICAgICAg ICBvbmx5X3NjaGVtYT1GYWxzZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScv cmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAgICAjIEFkZCAnLS1uby1kYXRhLWZvci1mYWls ZWQtdGFibGVzJyBpbnRvCisgICAgICAgICAgICAgIyBleHBlY3RlZF9jbWRfb3B0cyBvbmNlICMz MzYzIGZpeGVkCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWRpc2FibGUtdHJp Z2dlcnMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAg ICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIG9wdGlvbiAtIE1pc2NlbGxhbmVvdXMnLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9maWxlJywK KyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2Nh bGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9 J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAg ICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAg ICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2Vf c2V0X3Nlc3Npb25fYXV0aD1UcnVlLAorICAgICAgICAgICAgICAgICBleGl0X29uX2Vycm9yPVRy dWUsCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0n LAorICAgICAgICAgICAgICMgQWRkICctLXVzZV9zZXRfc2Vzc2lvbl9hdXRoJyBpbnRvCisgICAg ICAgICAgICAgIyBleHBlY3RlZF9jbWRfb3B0cyBvbmNlICMzMzYzIGZpeGVkCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWV4aXQtb24tZXJyb3InXSwKKyAgICAgICAgICAgICBu b3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2Rl PVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgor ICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgor ICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5h cnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICkKKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0b3JlLlNlcnZlcicpCisg ICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuY3VycmVudF91c2VyJykKKyAgICBAcGF0 Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5SZXN0b3JlTWVzc2FnZScpCisgICAgQHBhdGNoKCdw Z2FkbWluLnRvb2xzLnJlc3RvcmUuZmlsZW5hbWVfd2l0aF9maWxlX21hbmFnZXJfcGF0aCcpCisg ICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuQmF0Y2hQcm9jZXNzJykKKyAgICBAcGF0 Y2goJ3BnYWRtaW4udXRpbHMuZHJpdmVyLnBzeWNvcGcyLnNlcnZlcl9tYW5hZ2VyLlNlcnZlck1h bmFnZXIuJworICAgICAgICAgICAnZXhwb3J0X3Bhc3N3b3JkX2VudicpCisgICAgZGVmIHJ1blRl c3Qoc2VsZiwgZXhwb3J0X3Bhc3N3b3JkX2Vudl9tb2NrLCBiYXRjaF9wcm9jZXNzX21vY2ssCisg ICAgICAgICAgICAgICAgZmlsZW5hbWVfbW9jaywgcmVzdG9yZV9tZXNzYWdlX21vY2ssCisgICAg ICAgICAgICAgICAgY3VycmVudF91c2VyX21vY2ssIHNlcnZlcl9tb2NrKToKKyAgICAgICAgY2xh c3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1l LCBob3N0LCBwb3J0LCBpZCwgdXNlcm5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9 IG5hbWUKKyAgICAgICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgICAgICAgICAg c2VsZi5wb3J0ID0gcG9ydAorICAgICAgICAgICAgICAgIHNlbGYuaWQgPSBpZAorICAgICAgICAg ICAgICAgIHNlbGYudXNlcm5hbWUgPSB1c2VybmFtZQorCisgICAgICAgIHNlbGYuZGJfbmFtZSA9 ICcnCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFyZW50X25vZGVfZGljdFsic2VydmVyIl1b LTFdWyJzZXJ2ZXJfaWQiXQorCisgICAgICAgIG1vY2tfb2JqID0gVGVzdE1vY2tTZXJ2ZXIoc2Vs Zi5jbGFzc19wYXJhbXNbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApCisgICAgICAgIG1vY2tfcmVzdWx0ID0gc2VydmVyX21vY2sucXVlcnku ZmlsdGVyX2J5LnJldHVybl92YWx1ZQorICAgICAgICBtb2NrX3Jlc3VsdC5maXJzdC5yZXR1cm5f dmFsdWUgPSBtb2NrX29iagorCisgICAgICAgIGZpbGVuYW1lX21vY2sucmV0dXJuX3ZhbHVlID0g c2VsZi5wYXJhbXNbJ2ZpbGUnXQorCisgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5zZXRfZW52 X3ZhcmlhYmxlcyA9IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVlCisg ICAgICAgICkKKyAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLnN0YXJ0ID0gTWFnaWNNb2NrKAor ICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorCisgICAgICAgIGV4cG9y dF9wYXNzd29yZF9lbnZfbW9jay5yZXR1cm5fdmFsdWUgPSBUcnVlCisKKyAgICAgICAgc2VydmVy X3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYuc2VydmVy X2lkKQorICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9uc2VbImluZm8iXSA9PSAiU2VydmVyIGNvbm5l Y3RlZC4iOgorICAgICAgICAgICAgZGJfb3duZXIgPSBzZXJ2ZXJfcmVzcG9uc2VbJ2RhdGEnXVsn dXNlciddWyduYW1lJ10KKyAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGFiYXNlX3V0aWxzLmdl dF9kYl9kYXRhKGRiX293bmVyKQorICAgICAgICAgICAgc2VsZi5kYl9uYW1lID0gc2VsZi5kYXRh WyduYW1lJ10KKworICAgICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQp CisKKyAgICAgICAgIyBDcmVhdGUgdGhlIHJlc3RvcmUgam9iCisgICAgICAgIHJlc3BvbnNlID0g c2VsZi50ZXN0ZXIucG9zdCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhPWpzb24uZHVtcHMoc2VsZi5wYXJhbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICBzZWxmLmFzc2Vy dEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICByZXNwb25zZV9kYXRh ID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgam9i X2lkID0gcmVzcG9uc2VfZGF0YVsnZGF0YSddWydqb2JfaWQnXQorCisgICAgICAgIGFzc2VydCBy ZXN0b3JlX21lc3NhZ2VfbW9jay5jYWxsZWQKKyAgICAgICAgYXNzZXJ0IGJhdGNoX3Byb2Nlc3Nf bW9jay5jYWxsZWQKKworICAgICAgICBpZiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAg ICAgICAgZm9yIG9wdCBpbiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAg IHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICAgICAgICAgIG9wdCwKKyAgICAgICAgICAgICAg ICAgICAgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxfYXJnc19saXN0WzBdWzFdWydhcmdzJ10KKyAg ICAgICAgICAgICAgICApCisgICAgICAgIGlmIHNlbGYubm90X2V4cGVjdGVkX2NtZF9vcHRzOgor ICAgICAgICAgICAgZm9yIG9wdCBpbiBzZWxmLm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAg ICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKAorICAgICAgICAgICAgICAgICAgICBvcHQsCisg ICAgICAgICAgICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsX2FyZ3NfbGlzdFswXVsx XVsnYXJncyddCisgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS90ZXN0cy90ZXN0X3Jlc3RvcmVfbWVzc2FnZS5weSBiL3dlYi9wZ2FkbWluL3Rv b2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYmI0NTI4NgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX21lc3NhZ2UucHkKQEAgLTAsMCAr MSw3NiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2ltcG9ydCBzeXMKKworZnJvbSBwZ2Fk bWluLnRvb2xzLnJlc3RvcmUgaW1wb3J0IFJlc3RvcmVNZXNzYWdlCitmcm9tIHBnYWRtaW4udXRp bHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCisKK2lmIHN5cy52ZXJzaW9uX2luZm8g PCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZWxzZToKKyAgICBmcm9tIHVu aXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKKworY2xhc3MgUmVzdG9yZU1lc3NhZ2VUZXN0KEJh c2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBSZXN0b3JlTWVzc2FnZSBjbGFzcyIi IgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgb2JqZWN0JywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfc2VydmVy JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSds b2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgYXJncz1b CisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICdy ZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAg ICAgICAgICAgICAnbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAor ICAgICAgICAgICAgICAgICAgICAgJzU0NDQnLAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNl cm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNl JywKKyAgICAgICAgICAgICAgICAgICAgICdwb3N0Z3JlcycKKyAgICAgICAgICAgICAgICAgXSwK KyAgICAgICAgICAgICAgICAgY21kPSIvdGVzdF9wYXRoL3BnX3Jlc3RvcmUiCisgICAgICAgICAg ICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9IlJlc3RvcmluZyBiYWNrdXAgb24gdGhl IHNlcnZlciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdF9yZXN0b3JlX3NlcnZl ciAobG9jYWxob3N0OjU0NDQpJy4uLiIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19j bWQ9Jy90ZXN0X3BhdGgvcGdfcmVzdG9yZSAtLWZpbGUgJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcicmVzdG9yZV9maWxlIiAtLWhvc3QgImxvY2FsaG9zdCInCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtLXBvcnQgIjU0NDQiIC0tdXNlcm5hbWUgInBv c3RncmVzIiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dv cmQgLS1kYXRhYmFzZSAicG9zdGdyZXMiJworCisgICAgICAgICApKQorICAgIF0KKworICAgIEBw YXRjaCgncGdhZG1pbi50b29scy5yZXN0b3JlLlJlc3RvcmVNZXNzYWdlLmdldF9zZXJ2ZXJfZGV0 YWlscycpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgZ2V0X3NlcnZlcl9kZXRhaWxzX21vY2spOgor ICAgICAgICBnZXRfc2VydmVyX2RldGFpbHNfbW9jay5yZXR1cm5fdmFsdWUgPSBcCisgICAgICAg ICAgICBzZWxmLmNsYXNzX3BhcmFtc1snbmFtZSddLFwKKyAgICAgICAgICAgIHNlbGYuY2xhc3Nf cGFyYW1zWydob3N0J10sXAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXQor CisgICAgICAgIHJlc3RvcmVfb2JqID0gUmVzdG9yZU1lc3NhZ2UoCisgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYmZp bGUnXSwKKyAgICAgICAgICAgICpzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkK KworICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBtZXNzYWdlIHJldHVybmVkCisgICAgICAg IGFzc2VydCByZXN0b3JlX29iai5tZXNzYWdlID09IHNlbGYuZXh0ZWN0ZWRfbXNnCisKKyAgICAg ICAgIyBDaGVjayB0aGUgY29tbWFuZAorICAgICAgICBvYmpfZGV0YWlscyA9IHJlc3RvcmVfb2Jq LmRldGFpbHMoc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXSkKKyAgICAgICAg c2VsZi5hc3NlcnRJbihzZWxmLmV4cGV0Y2VkX2RldGFpbHNfY21kLCBvYmpfZGV0YWlscykKZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkg Yi93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5CmluZGV4IDNl NTE3YjYuLjZmNTdjNjcgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0 aWxzL3Rlc3RfdXRpbHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMv dGVzdF91dGlscy5weQpAQCAtMjEsNiArMjEsOCBAQCBpbXBvcnQgY29uZmlnCiBpbXBvcnQgcmVn cmVzc2lvbgogZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3NldHVwCiAKK2Zyb20gcGdhZG1p bi51dGlscy5wcmVmZXJlbmNlcyBpbXBvcnQgUHJlZmVyZW5jZXMKKwogU0VSVkVSX0dST1VQID0g dGVzdF9zZXR1cC5jb25maWdfZGF0YVsnc2VydmVyX2dyb3VwJ10KIGZpbGVfbmFtZSA9IG9zLnBh dGgucmVhbHBhdGgoX19maWxlX18pCiAKQEAgLTg2LDcgKzg4LDggQEAgZGVmIGdldF9jb25maWdf ZGF0YSgpOgogICAgICAgICAgICAgICAgICJkYl9wYXNzd29yZCI6IHNydlsnZGJfcGFzc3dvcmQn XSwKICAgICAgICAgICAgICAgICAicm9sZSI6ICIiLAogICAgICAgICAgICAgICAgICJzc2xtb2Rl Ijogc3J2Wydzc2xtb2RlJ10sCi0gICAgICAgICAgICAgICAgInRhYmxlc3BhY2VfcGF0aCI6IHNy di5nZXQoJ3RhYmxlc3BhY2VfcGF0aCcsIE5vbmUpCisgICAgICAgICAgICAgICAgInRhYmxlc3Bh Y2VfcGF0aCI6IHNydi5nZXQoJ3RhYmxlc3BhY2VfcGF0aCcsIE5vbmUpLAorICAgICAgICAgICAg ICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyI6IHNydi5nZXQoJ2RlZmF1bHRfYmluYXJ5X3BhdGhz JywgTm9uZSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICdkYl90eXBlJyBpbiBzcnY6 CiAgICAgICAgICAgICAgICAgZGF0YVsnZGJfdHlwZSddID0gc3J2WydkYl90eXBlJ10KQEAgLTQ0 NSw2ICs0NDgsMTMgQEAgZGVmIGRlbGV0ZV9zZXJ2ZXJfd2l0aF9hcGkodGVzdGVyLCBzaWQpOgog ICAgICAgICB1cmwgPSAnL2Jyb3dzZXIvc2VydmVyL29iai8nICsgc3RyKFNFUlZFUl9HUk9VUCkg KyAiLyIKICAgICAgICAgIyBDYWxsIEFQSSB0byBkZWxldGUgdGhlIHNlcnZlcgogICAgICAgICBy ZXNwb25zZSA9IHRlc3Rlci5kZWxldGUodXJsICsgc3RyKHNpZCkpCisKKyAgICAgICAgY250ID0g MAorICAgICAgICBmb3IgcyBpbiByZWdyZXNzaW9uLnBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJd OgorICAgICAgICAgICAgaWYgc1snc2VydmVyX2lkJ10gPT0gaW50KHNpZCk6CisgICAgICAgICAg ICAgICAgZGVsIHJlZ3Jlc3Npb24ucGFyZW50X25vZGVfZGljdFsic2VydmVyIl1bY250XQorICAg ICAgICAgICAgY250ICs9IDEKKwogICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgIHRyYWNl YmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQogCkBAIC01OTYsNiArNjA2LDY0IEBAIGRl ZiBnZXRfZGJfc2VydmVyKHNpZCk6CiAgICAgcmV0dXJuIGNvbm5lY3Rpb24KIAogCitkZWYgc2V0 X3ByZWZlcmVuY2UoZGVmYXVsdF9iaW5hcnlfcGF0aCk6CisgICAgY29ubiA9IHNxbGl0ZTMuY29u bmVjdChjb25maWcuVEVTVF9TUUxJVEVfUEFUSCkKKyAgICBjdXIgPSBjb25uLmN1cnNvcigpCisK KyAgICBwZXJmID0gUHJlZmVyZW5jZXMubW9kdWxlKCdwYXRocycpCisgICAgcGdfcGF0aF9wcmVm ID0gcGVyZi5wcmVmZXJlbmNlKCdwZ19iaW5fZGlyJykKKworICAgIHVzZXJfcHJlZiA9IGN1ci5l eGVjdXRlKAorICAgICAgICAnU0VMRUNUIHBpZCwgdWlkIEZST00gdXNlcl9wcmVmZXJlbmNlcyB3 aGVyZSBwaWQ9JXMnICUgcGdfcGF0aF9wcmVmLnBpZAorICAgICkKKyAgICB1c2VyX3ByZWYgPSB1 c2VyX3ByZWYuZmV0Y2hvbmUoKQorCisgICAgaWYgdXNlcl9wcmVmOgorICAgICAgICBjdXIuZXhl Y3V0ZSgnVVBEQVRFIHVzZXJfcHJlZmVyZW5jZXMgU0VUIHZhbHVlID0gPyBXSEVSRSBwaWQgPSA/ JywKKyAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BnJ10sIHBnX3Bh dGhfcHJlZi5waWQpKQorICAgIGVsc2U6CisgICAgICAgIHBnX3ByZWZfZGV0YWlscyA9IChwZ19w YXRoX3ByZWYucGlkLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9iaW5h cnlfcGF0aFsncGcnXSkKKyAgICAgICAgY3VyLmV4ZWN1dGUoJ0lOU0VSVCBJTlRPIHVzZXJfcHJl ZmVyZW5jZXMocGlkLCB1aWQsIHZhbHVlKScKKyAgICAgICAgICAgICAgICAgICAgJyBWQUxVRVMg KD8sPyw/KScsIHBnX3ByZWZfZGV0YWlscykKKworICAgIHBwYXNfcGF0aF9wcmVmID0gcGVyZi5w cmVmZXJlbmNlKCdwcGFzX2Jpbl9kaXInKQorCisgICAgdXNlcl9wcmVmID0gY3VyLmV4ZWN1dGUo CisgICAgICAgICdTRUxFQ1QgcGlkLCB1aWQgRlJPTSB1c2VyX3ByZWZlcmVuY2VzIHdoZXJlIHBp ZD0lcycgJQorICAgICAgICBwcGFzX3BhdGhfcHJlZi5waWQKKyAgICApCisgICAgdXNlcl9wcmVm ID0gdXNlcl9wcmVmLmZldGNob25lKCkKKworICAgIGlmIHVzZXJfcHJlZjoKKyAgICAgICAgY3Vy LmV4ZWN1dGUoJ1VQREFURSB1c2VyX3ByZWZlcmVuY2VzIFNFVCB2YWx1ZSA9ID8gV0hFUkUgcGlk ID0gPyAnLAorICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdF9iaW5hcnlfcGF0aFsncHBhcydd LCBwcGFzX3BhdGhfcHJlZi5waWQpKQorICAgIGVsc2U6CisgICAgICAgIHBwYXNfcHJlZl9kZXRh aWxzID0gKHBwYXNfcGF0aF9wcmVmLnBpZCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVmYXVsdF9iaW5hcnlfcGF0aFsncHBhcyddKQorICAgICAgICBjdXIuZXhlY3V0ZSgnSU5T RVJUIElOVE8gdXNlcl9wcmVmZXJlbmNlcyhwaWQsIHVpZCwgdmFsdWUpJworICAgICAgICAgICAg ICAgICAgICAnIFZBTFVFUyAoPyw/LD8pJywgcHBhc19wcmVmX2RldGFpbHMpCisKKyAgICBncGRi X3BhdGhfcHJlZiA9IHBlcmYucHJlZmVyZW5jZSgnZ3BkYl9iaW5fZGlyJykKKworICAgIHVzZXJf cHJlZiA9IGN1ci5leGVjdXRlKAorICAgICAgICAnU0VMRUNUIHBpZCwgdWlkIEZST00gdXNlcl9w cmVmZXJlbmNlcyB3aGVyZSBwaWQ9JXMnICUKKyAgICAgICAgZ3BkYl9wYXRoX3ByZWYucGlkCisg ICAgKQorICAgIHVzZXJfcHJlZiA9IHVzZXJfcHJlZi5mZXRjaG9uZSgpCisKKyAgICBpZiB1c2Vy X3ByZWY6CisgICAgICAgIGN1ci5leGVjdXRlKCdVUERBVEUgdXNlcl9wcmVmZXJlbmNlcyBTRVQg dmFsdWUgPSA/IFdIRVJFIHBpZCA9ID8gJywKKyAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHRf YmluYXJ5X3BhdGhbJ2dwZGInXSwgZ3BkYl9wYXRoX3ByZWYucGlkKSkKKyAgICBlbHNlOgorICAg ICAgICBncGRiX3ByZWZfZGV0YWlscyA9IChncGRiX3BhdGhfcHJlZi5waWQsIDEsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfYmluYXJ5X3BhdGhbJ2dwZGInXSkKKyAgICAg ICAgY3VyLmV4ZWN1dGUoJ0lOU0VSVCBJTlRPIHVzZXJfcHJlZmVyZW5jZXMocGlkLCB1aWQsIHZh bHVlKScKKyAgICAgICAgICAgICAgICAgICAgJyBWQUxVRVMgKD8sPyw/KScsIGdwZGJfcHJlZl9k ZXRhaWxzKQorCisgICAgY29ubi5jb21taXQoKQorCisKIGRlZiByZW1vdmVfZGJfZmlsZSgpOgog ICAgICIiIlRoaXMgZnVuY3Rpb24gdXNlIHRvIHJlbW92ZSBTUUxpdGUgREIgZmlsZSIiIgogICAg IGlmIG9zLnBhdGguaXNmaWxlKGNvbmZpZy5URVNUX1NRTElURV9QQVRIKToKZGlmZiAtLWdpdCBh L3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5IGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkK aW5kZXggZDc4NjY5Mi4uMjZiMjVjNyAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vcnVudGVz dHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKQEAgLTExNCw2ICsxMTQsOSBA QCB0ZXN0X2NsaWVudCA9IGFwcC50ZXN0X2NsaWVudCgpCiBkcml2ZXIgPSBOb25lCiBhcHBfc3Rh cnRlciA9IE5vbmUKIGhhbmRsZV9jbGVhbnVwID0gTm9uZQorYXBwLlBHQURNSU5fUlVOVElNRSA9 IFRydWUKK2lmIGNvbmZpZy5TRVJWRVJfTU9ERSBpcyBUcnVlOgorICAgIGFwcC5QR0FETUlOX1JV TlRJTUUgPSBGYWxzZQogCiBzZXRhdHRyKHVuaXRfdGVzdC5yZXN1bHQuVGVzdFJlc3VsdCwgInBh c3NlZCIsIFtdKQogCkBAIC0yMzQsNyArMjM3LDYgQEAgZGVmIGdldF90ZXN0X21vZHVsZXMoYXJn dW1lbnRzKToKICAgICAjIFNvcnQgbW9kdWxlIGxpc3Qgc28gdGhhdCB0ZXN0IHN1aXRlIGV4ZWN1 dGVzIHRoZSB0ZXN0IGNhc2VzIHNlcXVlbnRpYWxseQogICAgIG1vZHVsZV9saXN0ID0gVGVzdHNH ZW5lcmF0b3JSZWdpc3RyeS5yZWdpc3RyeS5pdGVtcygpCiAgICAgbW9kdWxlX2xpc3QgPSBzb3J0 ZWQobW9kdWxlX2xpc3QsIGtleT1sYW1iZGEgbW9kdWxlX3R1cGxlOiBtb2R1bGVfdHVwbGVbMF0p Ci0KICAgICByZXR1cm4gbW9kdWxlX2xpc3QKIAogCkBAIC0zOTMsNiArMzk1LDkgQEAgaWYgX19u YW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICAgICAgICMgQ3JlYXRlIHRlc3Qgc2VydmVyCiAg ICAgICAgICAgICBzZXJ2ZXJfaW5mb3JtYXRpb24gPSB0ZXN0X3V0aWxzLmNyZWF0ZV9wYXJlbnRf c2VydmVyX25vZGUoc2VydmVyKQogCisgICAgICAgICAgICBpZiBzZXJ2ZXJbJ2RlZmF1bHRfYmlu YXJ5X3BhdGhzJ10gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGVzdF91dGlscy5zZXRf cHJlZmVyZW5jZShzZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10pCisKICAgICAgICAgICAg IHN1aXRlID0gZ2V0X3N1aXRlKHRlc3RfbW9kdWxlX2xpc3QsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Ns aWVudCwKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4gYi93 ZWIvcmVncmVzc2lvbi90ZXN0X2NvbmZpZy5qc29uLmluCmluZGV4IGViYzE0NjYuLjE1YjEzM2Eg MTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4KKysrIGIvd2Vi L3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5pbgpAQCAtMjMsNyArMjMsMTIgQEAKICAgICAg ICJtYWludGVuYW5jZV9kYiI6ICJwb3N0Z3JlcyIsCiAgICAgICAic3NsbW9kZSI6ICJwcmVmZXIi LAogICAgICAgInRhYmxlc3BhY2VfcGF0aCI6ICIiLAotICAgICAgImVuYWJsZWQiOiB0cnVlCisg ICAgICAiZW5hYmxlZCI6IHRydWUsCisgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMiOiB7Cisg ICAgICAgICJwZyI6ICIvb3B0L1Bvc3RncmVTUUwvOS40L2Jpbi8iLAorICAgICAgICAicHBhcyI6 ICIvb3B0L2VkYi9hczEwL2Jpbi8iLAorICAgICAgICAiZ3BkYiI6ICIiCisgICAgICB9CiAgICAg fQogICBdLAogICAic2VydmVyX3VwZGF0ZV9kYXRhIjogWwo= --0000000000000c345e056e6f8e29--