<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>231999</bug_id>
          
          <creation_ts>2021-10-19 20:11:09 -0700</creation_ts>
          <short_desc>[EWS][GTK][WPE] Add a new Class for running layout tests on the EWS for the GTK and WPE ports.</short_desc>
          <delta_ts>2026-03-19 16:17:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=231790</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=231265</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=234270</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=234378</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=209104</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=236705</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=245329</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=253048</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=264837</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=310315</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Alberto Lopez Perez">clopez</reporter>
          <assigned_to name="Carlos Alberto Lopez Perez">clopez</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>clopez</cc>
    
    <cc>jbedard</cc>
    
    <cc>lmoura</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1806466</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-10-19 20:11:09 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806473</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-10-19 20:33:22 -0700</bug_when>
    <thetext>We would like to add a new class to the EWS for running layout tests on the GTK and WPE ports.

Initially this class will be used for the GTK port, and later for WPE.
Mac/iOS ports will continue to use the current default EWS, so no behaviour change for them.

This new class is specially designed to:
  A. Work with a tree that is not always green (or even that is often quite red).
  B. To not report any false positive to the patch author.
  C. To allow patch authors to use this EWS to get new expectations for patches that need lot of new re-baselines (like a WPT import)

The very simplified logic of how this works is the following:
  1. Run layout tests with patch (abort early at 500 unexpected failures)
  2. Run layout tests with patch 10 times for each test that failed consistently (non-flaky) on step 1.
  3. Run layout tests without patch 10 times for each test that failed consistently (non-flaky) on step 2.

Then report to the patch author only the new consistent failures (tests that failed always with the patch and passed always without the patch, retrying 10 times)
Any flaky test found is only reported to the bot watchers.

For an explainer about why this is needed, and more details about the flow diagram and several design considerations, please check: https://people.igalia.com/clopez/wkbug/231999/explainer.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806474</commentid>
    <comment_count>2</comment_count>
      <attachid>441841</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-10-19 20:37:55 -0700</bug_when>
    <thetext>Created attachment 441841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806476</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-10-19 20:42:48 -0700</bug_when>
    <thetext>I have tested this locally quite a lot and I&apos;m happy with the results. I think is robust and working as expected. I tested it with several patches, some of them adding failures and flakies like the one on bug 231192 and other removing expectations that still fail like the one on bug 231273

For it to work as expected a patch on run-webkit-tests fixing an existent issue is needed, see bug 231790

I will be quite happy if we can run this on the UAT server for some time to test it before going into production on the real server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806481</commentid>
    <comment_count>4</comment_count>
      <attachid>441844</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-10-19 20:59:33 -0700</bug_when>
    <thetext>Created attachment 441844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806642</commentid>
    <comment_count>5</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-10-20 08:57:01 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #3)
&gt; I will be quite happy if we can run this on the UAT server for some time to test it before going into production on the real server.
Applied attachment 441844 to the UAT server. It is running builds now with the change. e.g.: https://ews-build.webkit-uat.org/#/builders/34/builds/50455</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806998</commentid>
    <comment_count>6</comment_count>
      <attachid>441844</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-10-20 20:49:38 -0700</bug_when>
    <thetext>Comment on attachment 441844
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=441844&amp;action=review

Nice work! Just some minor inline comments.

&gt; Tools/CISupport/ews-build/steps.py:63
&gt; +        super(BufferLogHeaderObserver, self).__init__(**kwargs)

Given the buildbots are using Python3, maybe we could use just `super()`, without repeating the class name. (Ditto for the other classes added by the patch)

&gt; Tools/CISupport/ews-build/steps.py:2766
&gt; +        timed_out_line_start = &apos;command timed out: {} seconds elapsed running&apos;.format(self.MAX_SECONDS_STEP_RUN)

Should those timeouts &quot;command timed out: TIMEOUT seconds without output...&quot; be treated here too or would they follow another path?

&gt; Tools/CISupport/ews-build/steps.py:2989
&gt; +            return self.report_infrastructure_issue_and_maybe_retry_build(&apos;The layout-test run with patch generated no list of results but exited with error, and the clean_tree without patch run did the samething.&apos;)

Missing space in &quot;same thing&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807793</commentid>
    <comment_count>7</comment_count>
      <attachid>441844</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-10-22 11:30:38 -0700</bug_when>
    <thetext>Comment on attachment 441844
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=441844&amp;action=review

&gt;&gt; Tools/CISupport/ews-build/steps.py:2766
&gt;&gt; +        timed_out_line_start = &apos;command timed out: {} seconds elapsed running&apos;.format(self.MAX_SECONDS_STEP_RUN)
&gt; 
&gt; Should those timeouts &quot;command timed out: TIMEOUT seconds without output...&quot; be treated here too or would they follow another path?

There are two kinds of timeouts:
 1. Command doesn&apos;t produce any output for more than XX seconds.
 2. Command reaches the value of the timeout even when it was producing output.

This code cares about the second case. The first one is a different problem (likely RWT hanged) and it would be treated like a general unknown failure on the case of &quot;run-layout-tests returned error code and didn&apos;t returned a list of failures or flakies&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807812</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-10-22 12:02:16 -0700</bug_when>
    <thetext>(In reply to Aakash Jain from comment #5)
&gt; (In reply to Carlos Alberto Lopez Perez from comment #3)
&gt; &gt; I will be quite happy if we can run this on the UAT server for some time to test it before going into production on the real server.
&gt; Applied attachment 441844 [details] to the UAT server. It is running builds
&gt; now with the change. e.g.:
&gt; https://ews-build.webkit-uat.org/#/builders/34/builds/50455

Thanks a lot for applying it!

The start has not been great since it is aborting early due to more than 500 unexpected failures due to a combination of:
 1. we currently have on the tree more than 230 unexpected failures due to bug 230797
 2. on the EWS there are some tests timing out that don&apos;t happen on the post-commit bots that add to those 230 failures. I have to investigate this.

But even with this quite broken tree, it is still being able to do work and is is even finding real new failures on bugs, but the completeness of this new findings is (of course) limited due to the early aborts. Another important thing is that is not reporting false positives (it reported false positives at the start because I think there were some problem with the flatpak SDK version used on the build bot, but I triggered clean builds and got fixed)


On top of that there is also now a build failure with the build that is adding to the set of problems (bug 232160 ) and is causing the queue to grow more than acceptable.

I will continue to monitor how it behaves and try to fine-tune some things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807850</commentid>
    <comment_count>9</comment_count>
      <attachid>441844</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-10-22 13:27:07 -0700</bug_when>
    <thetext>Comment on attachment 441844
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=441844&amp;action=review

&gt; Tools/CISupport/ews-build/steps.py:2868
&gt; +        self.setProperty(&apos;xdebug_timeout_previous&apos;, with_patch_repeat_failures_timedout)

Note to me: remove this debug thing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814134</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-11-11 11:17:28 -0800</bug_when>
    <thetext>Ok!

Sorry for the long time in replying.. I have been on a holidays and busy with other things...

Let&apos;s recap this:

1. This has been running for several weeks on the UAT.
- On the first weeks it worked badly because we had some problems with the builds (random crashes when running layout tests due to a bug in ccache and the linker that is already solved)
- Then it didn&apos;t started to work really well until r284784 landed which is needed for the reporting on the retry steps to be reliable

So after this, it has been working as expected.

I did an analysis of the last 300 builds.

You can read the detailed analysis here: https://people.igalia.com/clopez/wkbug/231999/ews-results-analysis.txt

The conclusions are:


 * This new EWS is working as intended
 * It finds real new failues on the patches
 * It doesn&apos;t report false positives
 * It works with a tree that is red (when this analysis was done there were around 100 unexpected failures on the clean tree of the GTK port)
 * Is slow compared to the Mac EWS tester, but this performance will improve when we deploy it.
   * Having it working will help to reduce the number of unexpected failures landing. And the number of unexpected failures on the clean tree has an exponential direct impact on the time it takes to finish the testing (since it has to retry those unexpected failures from the clean tree 20 times) on the retry steps (with patch and without it).
   * We plan to add more hardware resources.



I found two cases where it reported false positives, that will be corrected on a next version the patch

 - What happened: The step &apos;layout-tests-repeat-failures-without-patch&apos; aborted due to Xvfb not starting and the EWS thought it finished clean (without producing failures)
 - Corrective action: We need to detect a general failure of the step on this cases and then repeat t


 - What happened: The step &apos;layout-tests&apos; aborted due to the WPT http server not starting, so it caused a general failure (exit error but no results). So the EWS tried to run the whole layout tests without patch (&apos;run-layout-tests-without-patch&apos;) and this time it finished  (no general error, simply a list of failures)
 - Corrective action: if we have a general failure on the step &apos;layout-tests&apos; and then the step &apos;run-layout-tests-without-patch&apos; produces unexpected results then we need to retry the whole testing (we can&apos;t conclude anything when that happens)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814138</commentid>
    <comment_count>11</comment_count>
      <attachid>443981</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-11-11 11:23:25 -0800</bug_when>
    <thetext>Created attachment 443981
Patch

v2 of the patch. diff to previous: http://sprunge.us/b79tdR?diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814412</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-11-12 06:32:00 -0800</bug_when>
    <thetext>BTW, the failures on the EWS (mac-wk1 and jsc) for this last version of the patch are totally unrelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817680</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-11-24 12:06:52 -0800</bug_when>
    <thetext>ping reviewers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819353</commentid>
    <comment_count>14</comment_count>
      <attachid>443981</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-12-01 12:05:46 -0800</bug_when>
    <thetext>Comment on attachment 443981
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=443981&amp;action=review

&gt; Tools/CISupport/ews-build/steps.py:2984
&gt; +            if clean_tree_run_failures or clean_tree_run_flakies:

A bit confused why this case triggers a retry. If the run with the patch caused an exit code that didn&apos;t generate test results, but the clean-tree run did generate test results, doesn&apos;t that mean we can blame the patch for not generating test results? Or is that already covered because the return code of such a run is either SUCCESS or WARNINGS?

&gt; Tools/CISupport/ews-build/steps.py:3026
&gt; +            self.send_email_for_flaky_failure(flaky_failure, step_names_str)

It seems wrong to warn bot watchers about flakey failures that we only detect with a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819364</commentid>
    <comment_count>15</comment_count>
      <attachid>443981</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-12-01 12:28:38 -0800</bug_when>
    <thetext>Comment on attachment 443981
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=443981&amp;action=review

&gt;&gt; Tools/CISupport/ews-build/steps.py:2984
&gt;&gt; +            if clean_tree_run_failures or clean_tree_run_flakies:
&gt; 
&gt; A bit confused why this case triggers a retry. If the run with the patch caused an exit code that didn&apos;t generate test results, but the clean-tree run did generate test results, doesn&apos;t that mean we can blame the patch for not generating test results? Or is that already covered because the return code of such a run is either SUCCESS or WARNINGS?

This is a corner case that was detected here https://bugs.webkit.org/show_bug.cgi?id=231999#c10 when reviewing the results on the UAT:

 - What happened: The step &apos;layout-tests&apos; aborted due to the WPT http server not starting, so it caused a general failure (exit error but no results). So the EWS tried to run the whole layout tests without patch (&apos;run-layout-tests-without-patch&apos; aka &apos;clean-tree&apos;) and this time it finished  (no general error, simply a list of failures)

In other words: If the clean-tree generates a list of failures, then the run with patch should also generate a list of failures unless it exists with zero status. Otherwise it means something broke during the testing with patch that caused a general failure (non-zero exit code but no list of failures/flakies) and then we can&apos;t conclude anything.

&gt;&gt; Tools/CISupport/ews-build/steps.py:3026
&gt;&gt; +            self.send_email_for_flaky_failure(flaky_failure, step_names_str)
&gt; 
&gt; It seems wrong to warn bot watchers about flakey failures that we only detect with a patch.

The idea of this is to help bot watchers to catch flakies and start marking them on the TestExpectation files.
And I agree that flakies of interest are those that happen without patch.
But the way this works, it causes that most of the flakies are filtered before reaching the run without patch.
It Does this:
 with-patch: run-layout-tests(all_tests) =&gt; failures1, flakies1
 with-patch: run-layout-tests-10times(failures1) =&gt; failures2, flakies2
 without-patch: run-layout-tests-10times(failures2) =&gt; wfailures3, wflakies3
So most of the flakies will not reach the testing without-patch, and wflakies3 will likely be empty or will miss flakies of interest that are caused without the patch as well.

The assumption here is that flakies are a general problem that will happen with patch even when the patch has not caused them so it reports everything found as flaky with the hope that it will be useful info for the bot watcher.
The function to report the flakies includes the step name where the flaky was found so the bot watcher also knows if the flaky was found with patch or without it, so he can take that into account when investigating the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819400</commentid>
    <comment_count>16</comment_count>
      <attachid>443981</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-12-01 13:48:59 -0800</bug_when>
    <thetext>Comment on attachment 443981
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=443981&amp;action=review

&gt;&gt;&gt; Tools/CISupport/ews-build/steps.py:2984
&gt;&gt;&gt; +            if clean_tree_run_failures or clean_tree_run_flakies:
&gt;&gt; 
&gt;&gt; A bit confused why this case triggers a retry. If the run with the patch caused an exit code that didn&apos;t generate test results, but the clean-tree run did generate test results, doesn&apos;t that mean we can blame the patch for not generating test results? Or is that already covered because the return code of such a run is either SUCCESS or WARNINGS?
&gt; 
&gt; This is a corner case that was detected here https://bugs.webkit.org/show_bug.cgi?id=231999#c10 when reviewing the results on the UAT:
&gt; 
&gt;  - What happened: The step &apos;layout-tests&apos; aborted due to the WPT http server not starting, so it caused a general failure (exit error but no results). So the EWS tried to run the whole layout tests without patch (&apos;run-layout-tests-without-patch&apos; aka &apos;clean-tree&apos;) and this time it finished  (no general error, simply a list of failures)
&gt; 
&gt; In other words: If the clean-tree generates a list of failures, then the run with patch should also generate a list of failures unless it exists with zero status. Otherwise it means something broke during the testing with patch that caused a general failure (non-zero exit code but no list of failures/flakies) and then we can&apos;t conclude anything.

But thinking again about this corner case maybe the patch itself broke the script run-webkit-tests.
In reality we should not treat different this corner case depending on the results of run-layout-tests-without-patch&apos; aka &apos;clean-tree&apos; (whether it passed green or generated a list of failures).
Detecting a patch breaking the script run-webkit-tests shouldn&apos;t depend on the results of the &apos;clean-tree&apos; run
However it is true that is much more likely that a random error not caused by the patch happened on the first run, than the patch itself broke the script.
So I think we can maybe do here the following:
- 1. if retry_count is less than self.MAX_RETRY and we reach the case of &quot;non-zero exist status for first-run-with-patch but no results of failure or flakies&quot; then retry the whole testing again (we assume some random infrastructure error happened)
- 2. otherwise (retry_count is self.MAX_RETRY) we report the patch as bad with &apos;Found unexpected failure with patch&apos;

That way we give it a few tries with the hope it was a random error that will not happen on a retry before reporting the patch as bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819422</commentid>
    <comment_count>17</comment_count>
      <attachid>445617</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-12-01 14:38:27 -0800</bug_when>
    <thetext>Created attachment 445617
Patch

v3 of the patch: 1. Implement the change from the comment above and 2. Add 3 more workers to speed up the queue. Diff to previous version: http://sprunge.us/TdLC6I?diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819458</commentid>
    <comment_count>18</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-12-01 16:13:27 -0800</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #15)
&gt; ....
&gt; 
&gt; The idea of this is to help bot watchers to catch flakies and start marking them on the TestExpectation files.
&gt; And I agree that flakies of interest are those that happen without patch.
&gt; But the way this works, it causes that most of the flakies are filtered before reaching the run without patch.
&gt; ....

This is the bit I wasn&apos;t thinking about.

I think the flakiness noise may be too high to be useful, but that&apos;s something we can address after we get this queue running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819472</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-12-01 16:42:51 -0800</bug_when>
    <thetext>Committed r286405 (244752@main): &lt;https://commits.webkit.org/244752@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819473</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-01 16:43:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/85945620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819474</commentid>
    <comment_count>21</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2021-12-01 16:43:48 -0800</bug_when>
    <thetext>Thanks! landed it with some edits on the comments to make them more clear: http://sprunge.us/5DOchH?diff</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441841</attachid>
            <date>2021-10-19 20:37:55 -0700</date>
            <delta_ts>2021-10-19 20:59:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231999-20211020043707.patch</filename>
            <type>text/plain</type>
            <size>65992</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTEwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2YzZTA0ZWFhZDY1NTZkZTdiMzIyNjM1ODNiZmMzYTc5
N2YwZTJhNy4uMTIzYjY2ZDk2MjIxZDJiNDA3MzdkYzc4ZGMyMzUzMGY1MTJjODNlMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgw
IEBACisyMDIxLTEwLTE5ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtFV1NdW0dUS11bV1BFXSBBZGQgYSBuZXcgQ2xhc3MgZm9yIHJ1
bm5pbmcgbGF5b3V0IHRlc3RzIG9uIHRoZSBFV1MgZm9yIHRoZSBHVEsgYW5kIFdQRSBwb3J0cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTk5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBhIG5ldyBjbGFzcyB0byB0aGUgRVdTIGZvciBydW5uaW5nIGxheW91dCB0ZXN0cyBm
b3IgdGhlIEdUSyBhbmQgV1BFIHBvcnRzLgorICAgICAgICBJdCB3aWxsIGJlIHVzZWQgaW5pdGlh
bGx5IGZvciB0aGUgR1RLIHBvcnQgYW5kIGxhdGVyIGZvciB0aGUgV1BFIG9uZS4KKyAgICAgICAg
TWFjL2lPUyBwb3J0cyB3aWxsIGNvbnRpbnVlIHRvIHVzZSB0aGUgY3VycmVudCBkZWZhdWx0IEVX
Uywgc28gbm8gYmVoYXZpb3VyIGNoYW5nZSBmb3IgdGhlbS4KKworICAgICAgICBUaGlzIG5ldyBj
bGFzcyBpcyBzcGVjaWFsbHkgZGVzaWduZWQgdG86CisgICAgICAgIEEuIFdvcmsgd2l0aCBhIHRy
ZWUgdGhhdCBpcyBub3QgYWx3YXlzIGdyZWVuIChvciBldmVuIHRoYXQgaXMgb2Z0ZW4gcXVpdGUg
cmVkKS4KKyAgICAgICAgQi4gVG8gbm90IHJlcG9ydCBhbnkgZmFsc2UgcG9zaXRpdmUgdG8gdGhl
IHBhdGNoIGF1dGhvci4KKyAgICAgICAgQy4gVG8gYWxsb3cgcGF0Y2ggYXV0aG9ycyB0byB1c2Ug
dGhpcyBFV1MgdG8gZ2V0IG5ldyBleHBlY3RhdGlvbnMgZm9yIHBhdGNoZXMgdGhhdCBuZWVkIGxv
dCBvZiBuZXcgcmUtYmFzZWxpbmVzIChsaWtlIGEgV1BUIGltcG9ydCkKKworICAgICAgICBUaGUg
dmVyeSBzaW1wbGlmaWVkIGxvZ2ljIG9mIGhvdyB0aGlzIHdvcmtzIGlzIHRoZSBmb2xsb3dpbmc6
CisgICAgICAgIDEuIFJ1biBsYXlvdXQgdGVzdHMgd2l0aCBwYXRjaCAoYWJvcnQgZWFybHkgYXQg
NTAwIHVuZXhwZWN0ZWQgZmFpbHVyZXMpCisgICAgICAgIDIuIFJ1biBsYXlvdXQgdGVzdHMgd2l0
aCBwYXRjaCAxMCB0aW1lcyBmb3IgZWFjaCB0ZXN0IHRoYXQgZmFpbGVkIGNvbnNpc3RlbnRseSAo
bm9uLWZsYWt5KSBvbiBzdGVwIDEuCisgICAgICAgIDMuIFJ1biBsYXlvdXQgdGVzdHMgd2l0aG91
dCBwYXRjaCAxMCB0aW1lcyBmb3IgZWFjaCB0ZXN0IHRoYXQgZmFpbGVkIGNvbnNpc3RlbnRseSAo
bm9uLWZsYWt5KSBvbiBzdGVwIDIuCisKKyAgICAgICAgVGhlbiByZXBvcnQgdG8gdGhlIHBhdGNo
IGF1dGhvciBvbmx5IHRoZSBuZXcgY29uc2lzdGVudCBmYWlsdXJlcyAodGVzdHMgdGhhdCBmYWls
ZWQgYWx3YXlzIHdpdGggdGhlIHBhdGNoIGFuZCBwYXNzZWQgYWx3YXlzIHdpdGhvdXQgdGhlIHBh
dGNoLCByZXRyeWluZyAxMCB0aW1lcykKKyAgICAgICAgQW55IGZsYWt5IHRlc3QgZm91bmQgaXMg
b25seSByZXBvcnRlZCB0byB0aGUgYm90IHdhdGNoZXJzLgorCisgICAgICAgIEZvciBhbiBleHBs
YWluZXIgYWJvdXQgd2h5IHRoaXMgaXMgbmVlZGVkLCBhbmQgbW9yZSBkZXRhaWxzIGFib3V0IHRo
ZSBmbG93IGRpYWdyYW0gYW5kIHNldmVyYWwgZGVzaWduIGNvbnNpZGVyYXRpb25zLCBwbGVhc2Ug
Y2hlY2s6CisgICAgICAgIGh0dHBzOi8vcGVvcGxlLmlnYWxpYS5jb20vY2xvcGV6L3drYnVnLzIz
MTk5OS9leHBsYWluZXIuaHRtbAorCisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9jb25m
aWcuanNvbjoKKyAgICAgICAgKiBDSVN1cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weToKKyAg
ICAgICAgKEdUS1Rlc3RzRmFjdG9yeSk6CisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9s
YXlvdXRfdGVzdF9mYWlsdXJlcy5weToKKyAgICAgICAgKExheW91dFRlc3RGYWlsdXJlcy5fX2lu
aXRfXyk6CisgICAgICAgIChMYXlvdXRUZXN0RmFpbHVyZXMucmVzdWx0c19mcm9tX3N0cmluZyk6
CisgICAgICAgIChMYXlvdXRUZXN0RmFpbHVyZXMucmVzdWx0c19mcm9tX3N0cmluZy5nZXRfZmFp
bGluZ190ZXN0cyk6CisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weToKKyAg
ICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyKToKKyAgICAgICAgKEJ1ZmZlckxvZ0hlYWRl
ck9ic2VydmVyLl9faW5pdF9fKToKKyAgICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyLmhl
YWRlclJlY2VpdmVkKToKKyAgICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyLmdldEhlYWRl
cnMpOgorICAgICAgICAoQnVnemlsbGFNaXhpbi5zZW5kX2VtYWlsX2Zvcl9pbmZyYXN0cnVjdHVy
ZV9pc3N1ZSk6CisgICAgICAgIChUcmlnZ2VyLnByb3BlcnRpZXNUb1Bhc3NUb1RyaWdnZXJzKToK
KyAgICAgICAgKFJ1bldlYktpdFRlc3RzLnNldExheW91dFRlc3RDb21tYW5kKToKKyAgICAgICAg
KFJ1bldlYktpdFRlc3RzLnN0YXJ0KToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzLmNvbW1hbmRD
b21wbGV0ZSk6CisgICAgICAgIChSZVJ1bldlYktpdFRlc3RzLmV2YWx1YXRlQ29tbWFuZCk6Cisg
ICAgICAgIChSZVJ1bldlYktpdFRlc3RzLmNvbW1hbmRDb21wbGV0ZSk6CisgICAgICAgIChSdW5X
ZWJLaXRUZXN0c1dpdGhvdXRQYXRjaC5jb21tYW5kQ29tcGxldGUpOgorICAgICAgICAoQW5hbHl6
ZUxheW91dFRlc3RzUmVzdWx0cy5yZXBvcnRfZmFpbHVyZSk6CisgICAgICAgIChBbmFseXplTGF5
b3V0VGVzdHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUpOgorICAgICAgICAo
QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9uZXdfdGVzdF9mYWlsdXJl
cyk6CisgICAgICAgIChBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzLnN0YXJ0KToKKyAgICAgICAg
KFJ1bldlYktpdDFUZXN0cy5zdGFydCk6CisgICAgICAgIChSdW5XZWJLaXRUZXN0c1JlZFRyZWUp
OgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZWRUcmVlLl9kaWRfY29tbWFuZF90aW1lZF9vdXQp
OgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZWRUcmVlLmV2YWx1YXRlQ29tbWFuZCk6CisgICAg
ICAgIChSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZSk6CisgICAgICAgIChSdW5X
ZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZS5fX2luaXRfXyk6CisgICAgICAgIChSdW5X
ZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZS5zZXRMYXlvdXRUZXN0Q29tbWFuZCk6Cisg
ICAgICAgIChSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZS5ldmFsdWF0ZUNvbW1h
bmQpOgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1JlZFRyZWUuY29tbWFu
ZENvbXBsZXRlKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVl
LnN0YXJ0KToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0
Y2hSZWRUcmVlKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0
UGF0Y2hSZWRUcmVlLl9faW5pdF9fKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFp
bHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlLnNldExheW91dFRlc3RDb21tYW5kKToKKyAgICAgICAg
KFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlLmV2YWx1YXRl
Q29tbWFuZCk6CisgICAgICAgIChSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzV2l0aG91dFBh
dGNoUmVkVHJlZS5jb21tYW5kQ29tcGxldGUpOgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZXBl
YXRGYWlsdXJlc1dpdGhvdXRQYXRjaFJlZFRyZWUuc3RhcnQpOgorICAgICAgICAoUnVuV2ViS2l0
VGVzdHNXaXRob3V0UGF0Y2hSZWRUcmVlKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzV2l0aG91
dFBhdGNoUmVkVHJlZS5ldmFsdWF0ZUNvbW1hbmQpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRl
c3RzUmVzdWx0c1JlZFRyZWUpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1Jl
ZFRyZWUucmVwb3J0X3N1Y2Nlc3MpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0
c1JlZFRyZWUucmVwb3J0X3dhcm5pbmcpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVz
dWx0c1JlZFRyZWUucmVwb3J0X2luZnJhc3RydWN0dXJlX2lzc3VlX2FuZF9tYXliZV9yZXRyeV9i
dWlsZCk6CisgICAgICAgIChBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzUmVkVHJlZS5zZW5kX2Vt
YWlsX2Zvcl9wcmVfZXhpc3RlbnRfZmFpbHVyZXMpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRl
c3RzUmVzdWx0c1JlZFRyZWUuc3RhcnQpOgorICAgICAgICAqIENJU3VwcG9ydC9ld3MtYnVpbGQv
c3RlcHNfdW5pdHRlc3QucHk6CisKIDIwMjEtMTAtMTkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRh
cmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gT3ZlcnJpZGUgaHR0cCB1cmwg
d2l0aCBzc2ggdXJsCmRpZmYgLS1naXQgYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2NvbmZp
Zy5qc29uIGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9jb25maWcuanNvbgppbmRleCA0OTM1
MDNiM2UwYWEyNjFkNTllYzNiNzg3ZGU4YmFmMTUwMDdhYWI4Li4wMzRiM2JlM2U4NzM4MzFlMDI3
MjA2YTVjZDg5ZmRkNTk2M2NlNmU0IDEwMDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1
aWxkL2NvbmZpZy5qc29uCisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvY29uZmlnLmpz
b24KQEAgLTExNSw2ICsxMTUsNyBAQAogICAgICAgIm5hbWUiOiAiR1RLLVdLMi1UZXN0cy1FV1Mi
LCAic2hvcnRuYW1lIjogImd0ay13azIiLCAiaWNvbiI6ICJ0ZXN0T25seSIsCiAgICAgICAiZmFj
dG9yeSI6ICJHVEtUZXN0c0ZhY3RvcnkiLCAicGxhdGZvcm0iOiAiZ3RrIiwKICAgICAgICJjb25m
aWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCisgICAg
ICAidHJpZ2dlcmVkX2J5IjogWyJndGstYnVpbGQtZXdzIl0sCiAgICAgICAid29ya2VybmFtZXMi
OiBbImlnYWxpYTUtZ3RrLXdrMi1ld3MiLCAiaWdhbGlhNi1ndGstd2syLWV3cyIsICJpZ2FsaWE3
LWd0ay13azItZXdzIiwgImlnYWxpYTgtZ3RrLXdrMi1ld3MiLCAiaWdhbGlhOS1ndGstd2syLWV3
cyJdCiAgICAgfSwKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxk
L2ZhY3Rvcmllcy5weSBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvZmFjdG9yaWVzLnB5Cmlu
ZGV4IGQ4ZTk4MGZhMDMwZGEzMzJkZWFkZTVhZmVjMTIzMjgwZWFkZGM0ODQuLmVmOWQxMmMxYjU4
OTlkYWE3OTE4YTA1NWM3OTk1YmJjMzI5YTdjZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NJU3VwcG9y
dC9ld3MtYnVpbGQvZmFjdG9yaWVzLnB5CisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQv
ZmFjdG9yaWVzLnB5CkBAIC0zMCw3ICszMCw3IEBAIGZyb20gc3RlcHMgaW1wb3J0IChBcHBseVBh
dGNoLCBBcHBseVdhdGNoTGlzdCwgQ2hlY2tPdXRTb3VyY2UsIENoZWNrT3V0U3BlY2lmaWNSCiAg
ICAgICAgICAgICAgICAgICAgSW5zdGFsbEd0a0RlcGVuZGVuY2llcywgSW5zdGFsbFdwZURlcGVu
ZGVuY2llcywgS2lsbE9sZFByb2Nlc3NlcywgUHJpbnRDb25maWd1cmF0aW9uLCBQdXNoQ29tbWl0
VG9XZWJLaXRSZXBvLAogICAgICAgICAgICAgICAgICAgIFJ1bkFQSVRlc3RzLCBSdW5CaW5kaW5n
c1Rlc3RzLCBSdW5CdWlsZFdlYktpdE9yZ1VuaXRUZXN0cywgUnVuQnVpbGRib3RDaGVja0NvbmZp
Z0ZvckJ1aWxkV2ViS2l0LCBSdW5CdWlsZGJvdENoZWNrQ29uZmlnRm9yRVdTLAogICAgICAgICAg
ICAgICAgICAgIFJ1bkVXU1VuaXRUZXN0cywgUnVuUmVzdWx0c2RicHlUZXN0cywgUnVuSmF2YVNj
cmlwdENvcmVUZXN0cywgUnVuV2ViS2l0MVRlc3RzLCBSdW5XZWJLaXRQZXJsVGVzdHMsIFJ1bldl
YktpdFB5UHl0aG9uMlRlc3RzLAotICAgICAgICAgICAgICAgICAgIFJ1bldlYktpdFB5UHl0aG9u
M1Rlc3RzLCBSdW5XZWJLaXRUZXN0cywgUnVuV2ViS2l0VGVzdHNJblN0cmVzc01vZGUsIFJ1bldl
YktpdFRlc3RzSW5TdHJlc3NHdWFyZG1hbGxvY01vZGUsCisgICAgICAgICAgICAgICAgICAgUnVu
V2ViS2l0UHlQeXRob24zVGVzdHMsIFJ1bldlYktpdFRlc3RzLCBSdW5XZWJLaXRUZXN0c1JlZFRy
ZWUsIFJ1bldlYktpdFRlc3RzSW5TdHJlc3NNb2RlLCBSdW5XZWJLaXRUZXN0c0luU3RyZXNzR3Vh
cmRtYWxsb2NNb2RlLAogICAgICAgICAgICAgICAgICAgIFNldEJ1aWxkU3VtbWFyeSwgU2hvd0lk
ZW50aWZpZXIsIFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24sIFVwZGF0ZVdvcmtpbmdEaXJlY3Rv
cnksCiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCwgVmFsaWRhdGVDaGFuZ2VMb2dB
bmRSZXZpZXdlciwgVmFsaWRhdGVDb21taXRlckFuZFJldmlld2VyLCBXYWl0Rm9yQ3Jhc2hDb2xs
ZWN0aW9uLAogICAgICAgICAgICAgICAgICAgIEluc3RhbGxCdWlsdFByb2R1Y3QsIFZlcmlmeUdp
dEh1YkludGVncml0eSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCBjbGFzcyBHVEtCdWlsZEZhY3Rvcnko
QnVpbGRGYWN0b3J5KToKIAogCiBjbGFzcyBHVEtUZXN0c0ZhY3RvcnkoVGVzdEZhY3RvcnkpOgot
ICAgIExheW91dFRlc3RDbGFzcyA9IFJ1bldlYktpdFRlc3RzCisgICAgTGF5b3V0VGVzdENsYXNz
ID0gUnVuV2ViS2l0VGVzdHNSZWRUcmVlCiAKIAogY2xhc3MgV1BFRmFjdG9yeShGYWN0b3J5KToK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvbGF5b3V0X3Rlc3RfZmFpbHVy
ZXMucHkgYi9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2xheW91dF90ZXN0X2ZhaWx1cmVzLnB5
CmluZGV4IDExN2YzOTEwOGY1NTUyNmE4OTdjOTAyMzY2Zjk3MzBhY2U1YzllOGUuLjI2OGI2NGFj
OTAyNzJiYTI5MzY5NWYzODU4MzExM2NiYTg2MGQ4ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NJU3Vw
cG9ydC9ld3MtYnVpbGQvbGF5b3V0X3Rlc3RfZmFpbHVyZXMucHkKKysrIGIvVG9vbHMvQ0lTdXBw
b3J0L2V3cy1idWlsZC9sYXlvdXRfdGVzdF9mYWlsdXJlcy5weQpAQCAtMjcsOCArMjcsOSBAQCBj
bGFzcyBMYXlvdXRUZXN0RmFpbHVyZXMob2JqZWN0KToKICAgICBfSlNPTl9QUkVGSVggPSAiQURE
X1JFU1VMVFMoIgogICAgIF9KU09OX1NVRkZJWCA9ICIpOyIKIAotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBmYWlsaW5nX3Rlc3RzLCBkaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGZhaWxpbmdfdGVzdHMsIGZsYWt5X3Rlc3RzLCBkaWRfZXhjZWVk
X3Rlc3RfZmFpbHVyZV9saW1pdCk6CiAgICAgICAgIHNlbGYuZmFpbGluZ190ZXN0cyA9IGZhaWxp
bmdfdGVzdHMKKyAgICAgICAgc2VsZi5mbGFreV90ZXN0cyA9IGZsYWt5X3Rlc3RzCiAgICAgICAg
IHNlbGYuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQgPSBkaWRfZXhjZWVkX3Rlc3RfZmFp
bHVyZV9saW1pdAogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC01NiwxMyArNTcsMTYgQEAgY2xhc3Mg
TGF5b3V0VGVzdEZhaWx1cmVzKG9iamVjdCk6CiAgICAgICAgIGpzb25fZGljdCA9IGpzb24ubG9h
ZHMoY29udGVudF9zdHJpbmcpCiAKICAgICAgICAgZmFpbGluZ190ZXN0cyA9IFtdCisgICAgICAg
IGZsYWt5X3Rlc3RzID0gW10KIAogICAgICAgICBkZWYgZ2V0X2ZhaWxpbmdfdGVzdHModGVzdCwg
cmVzdWx0KToKICAgICAgICAgICAgIGlmIHJlc3VsdC5nZXQoJ3JlcG9ydCcpIGluIFsnUkVHUkVT
U0lPTicsICdNSVNTSU5HJ106CiAgICAgICAgICAgICAgICAgZmFpbGluZ190ZXN0cy5hcHBlbmQo
dGVzdCkKKyAgICAgICAgICAgIGVsaWYgcmVzdWx0LmdldCgncmVwb3J0JykgaW4gWydGTEFLWSdd
OgorICAgICAgICAgICAgICAgIGZsYWt5X3Rlc3RzLmFwcGVuZCh0ZXN0KQogCiAgICAgICAgIGNs
cy5wYXJzZV9mdWxsX3Jlc3VsdHNfanNvbihqc29uX2RpY3RbJ3Rlc3RzJ10sIGdldF9mYWlsaW5n
X3Rlc3RzKQotICAgICAgICByZXR1cm4gY2xzKGZhaWxpbmdfdGVzdHMsIGpzb25fZGljdC5nZXQo
J2ludGVycnVwdGVkJywgRmFsc2UpKQorICAgICAgICByZXR1cm4gY2xzKGZhaWxpbmdfdGVzdHMs
IGZsYWt5X3Rlc3RzLCBqc29uX2RpY3QuZ2V0KCdpbnRlcnJ1cHRlZCcsIEZhbHNlKSkKIAogICAg
IEBjbGFzc21ldGhvZAogICAgIGRlZiBwYXJzZV9mdWxsX3Jlc3VsdHNfanNvbihjbHMsIHRyZWUs
IGhhbmRsZXIsIHByZWZpeD0nJyk6CmRpZmYgLS1naXQgYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1
aWxkL3N0ZXBzLnB5IGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weQppbmRleCBj
NWNjMjRlYTdkY2UxN2VhOTk1NWY0NzE3ZjVjZGNjNjIwZmM2OTYzLi5iNTljNDljZmYyN2ZjMmI3
Njc3NjI3MWIzNmRiNmM1YzNmMDYyMDc0IDEwMDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdz
LWJ1aWxkL3N0ZXBzLnB5CisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHkK
QEAgLTU2LDYgKzU2LDE5IEBAIFdpdGhQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5XaXRoUHJvcGVy
dGllcwogSW50ZXJwb2xhdGUgPSBwcm9wZXJ0aWVzLkludGVycG9sYXRlCiAKIAorY2xhc3MgQnVm
ZmVyTG9nSGVhZGVyT2JzZXJ2ZXIobG9nb2JzZXJ2ZXIuQnVmZmVyTG9nT2JzZXJ2ZXIpOgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5oZWFkZXJzID0g
W10KKyAgICAgICAgc3VwZXIoQnVmZmVyTG9nSGVhZGVyT2JzZXJ2ZXIsIHNlbGYpLl9faW5pdF9f
KCoqa3dhcmdzKQorCisgICAgZGVmIGhlYWRlclJlY2VpdmVkKHNlbGYsIGRhdGEpOgorICAgICAg
ICBzZWxmLmhlYWRlcnMuYXBwZW5kKGRhdGEpCisKKyAgICBkZWYgZ2V0SGVhZGVycyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2dldChzZWxmLmhlYWRlcnMpCisKKwogY2xhc3MgQ29uZmln
dXJlQnVpbGQoYnVpbGRzdGVwLkJ1aWxkU3RlcCk6CiAgICAgbmFtZSA9ICdjb25maWd1cmUtYnVp
bGQnCiAgICAgZGVzY3JpcHRpb24gPSBbJ2NvbmZpZ3VyaW5nIGJ1aWxkJ10KQEAgLTczNCw2ICs3
NDcsMjEgQEAgY2xhc3MgQnVnemlsbGFNaXhpbihvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyAgICBkZWYgc2VuZF9lbWFpbF9mb3JfaW5m
cmFzdHJ1Y3R1cmVfaXNzdWUoc2VsZiwgaW5mcmFzdHJ1Y3R1cmVfaXNzdWVfdGV4dCk6CisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1
aWxkZXJuYW1lJywgJycpCisgICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVy
dHkoJ3dvcmtlcm5hbWUnLCAnJykKKyAgICAgICAgICAgIGJ1aWxkX3VybCA9ICd7fSMvYnVpbGRl
cnMve30vYnVpbGRzL3t9Jy5mb3JtYXQoc2VsZi5tYXN0ZXIuY29uZmlnLmJ1aWxkYm90VVJMLCBz
ZWxmLmJ1aWxkLl9idWlsZGVyaWQsIHNlbGYuYnVpbGQubnVtYmVyKQorICAgICAgICAgICAgZW1h
aWxfc3ViamVjdCA9ICdJbmZyYXN0cnVjdHVyZSBpc3N1ZSBhdCB7fScuZm9ybWF0KGJ1aWxkZXJf
bmFtZSkKKyAgICAgICAgICAgIGVtYWlsX3RleHQgPSAnVGhlIGZvbGxvd2luZyBpbmZyYXN0cnVj
dHVyZSBpc3N1ZSBoYXBwZW5lZCBhdDpcblxuJworICAgICAgICAgICAgZW1haWxfdGV4dCArPSAn
ICAgIC0gQnVpbGQgOiB7fVxuJy5mb3JtYXQoYnVpbGRfdXJsKQorICAgICAgICAgICAgZW1haWxf
dGV4dCArPSAnICAgIC0gQnVpbGRlciA6IHt9XG4nLmZvcm1hdChidWlsZGVyX25hbWUpCisgICAg
ICAgICAgICBlbWFpbF90ZXh0ICs9ICcgICAgLSBXb3JrZXIgOiB7fVxuJy5mb3JtYXQod29ya2Vy
X25hbWUpCisgICAgICAgICAgICBlbWFpbF90ZXh0ICs9ICcgICAgLSBJc3N1ZToge31cbicuZm9y
bWF0KGluZnJhc3RydWN0dXJlX2lzc3VlX3RleHQpCisgICAgICAgICAgICBzZW5kX2VtYWlsX3Rv
X2JvdF93YXRjaGVycyhlbWFpbF9zdWJqZWN0LCBlbWFpbF90ZXh0LCBidWlsZGVyX25hbWUsICdp
bmZyYXN0cnVjdHVyZS17fScuZm9ybWF0KGJ1aWxkZXJfbmFtZSkpCisgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHByaW50KCdFcnJvciBpbiBzZW5kaW5nIGVtYWls
IGZvciBpbmZyYXN0cnVjdHVyZSBpc3N1ZToge30nLmZvcm1hdChlKSkKKwogICAgIGRlZiBnZXRf
YnVnemlsbGFfYXBpX2tleShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcGFzc3dv
cmRzID0ganNvbi5sb2FkKG9wZW4oJ3Bhc3N3b3Jkcy5qc29uJykpCkBAIC0xMTcwLDYgKzExOTgs
NyBAQCBjbGFzcyBUcmlnZ2VyKHRyaWdnZXIuVHJpZ2dlcik6CiAgICAgICAgICAgICBwcm9wZXJ0
aWVzX3RvX3Bhc3NbJ2V3c19yZXZpc2lvbiddID0gcHJvcGVydGllcy5Qcm9wZXJ0eSgnZ290X3Jl
dmlzaW9uJykKICAgICAgICAgaWYgc2VsZi50cmlnZ2VyczoKICAgICAgICAgICAgIHByb3BlcnRp
ZXNfdG9fcGFzc1sndHJpZ2dlcnMnXSA9IHNlbGYudHJpZ2dlcnMKKyAgICAgICAgcHJvcGVydGll
c190b19wYXNzWydyZXRyeV9jb3VudCddID0gcHJvcGVydGllcy5Qcm9wZXJ0eSgncmV0cnlfY291
bnQnLCBkZWZhdWx0PTApCiAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzX3RvX3Bhc3MKIAogCkBA
IC0yMjEwLDcgKzIyMzksOSBAQCBjbGFzcyBSdW5XZWJLaXRUZXN0cyhzaGVsbC5UZXN0KToKICAg
ICAgICAgaWYgcGF0Y2hfYXV0aG9yIGluIFsnd2Via2l0LXdwdC1pbXBvcnQtYm90QGlnYWxpYS5j
b20nXToKICAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJ2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMnXSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tZXhpdC1hZnRlci1uLWZhaWx1cmVz
Jywgc2VsZi5FWElUX0FGVEVSX0ZBSUxVUkVTLCAnLS1za2lwLWZhaWxpbmctdGVzdHMnXSkKKyAg
ICAgICAgICAgIGlmIHNlbGYuRVhJVF9BRlRFUl9GQUlMVVJFUyBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyctLWV4aXQtYWZ0ZXIt
bi1mYWlsdXJlcycsICd7fScuZm9ybWF0KHNlbGYuRVhJVF9BRlRFUl9GQUlMVVJFUyldKQorICAg
ICAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnLS1za2lwLWZhaWxpbmct
dGVzdHMnXSkKIAogICAgICAgICBpZiBhZGRpdGlvbmFsQXJndW1lbnRzOgogICAgICAgICAgICAg
c2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIGFkZGl0aW9uYWxBcmd1bWVudHMpCkBAIC0y
MjQzLDggKzIyNzQsOCBAQCBjbGFzcyBSdW5XZWJLaXRUZXN0cyhzaGVsbC5UZXN0KToKICAgICAg
ICAgICAgICAgICAgICAgbGlzdF9yZXRyeV90ZXN0cyA9IHNvcnRlZChmaXJzdF9yZXN1bHRzX2Zh
aWxpbmdfdGVzdHMudW5pb24oc2Vjb25kX3Jlc3VsdHNfZmFpbGluZ190ZXN0cykpCiAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBsaXN0X3JldHJ5X3Rl
c3RzKQogCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLmxvZ19vYnNlcnZlciA9
IGxvZ29ic2VydmVyLkJ1ZmZlckxvZ09ic2VydmVyKHdhbnRTdGRlcnI9VHJ1ZSkKKyAgICBkZWYg
c3RhcnQoc2VsZiwgQnVmZmVyTG9nT2JzZXJ2ZXJDbGFzcz1sb2dvYnNlcnZlci5CdWZmZXJMb2dP
YnNlcnZlcik6CisgICAgICAgIHNlbGYubG9nX29ic2VydmVyID0gQnVmZmVyTG9nT2JzZXJ2ZXJD
bGFzcyh3YW50U3RkZXJyPVRydWUpCiAgICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ3N0ZGlv
Jywgc2VsZi5sb2dfb2JzZXJ2ZXIpCiAgICAgICAgIHNlbGYubG9nX29ic2VydmVyX2pzb24gPSBs
b2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcigpCiAgICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2
ZXIoJ2pzb24nLCBzZWxmLmxvZ19vYnNlcnZlcl9qc29uKQpAQCAtMjMwNiw2ICsyMzM3LDcgQEAg
Y2xhc3MgUnVuV2ViS2l0VGVzdHMoc2hlbGwuVGVzdCk6CiAgICAgICAgIGlmIGZpcnN0X3Jlc3Vs
dHM6CiAgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9yZXN1bHRzX2V4Y2VlZF9m
YWlsdXJlX2xpbWl0JywgZmlyc3RfcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1p
dCkKICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIHNv
cnRlZChmaXJzdF9yZXN1bHRzLmZhaWxpbmdfdGVzdHMpKQorICAgICAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBzb3J0ZWQoZmlyc3RfcmVzdWx0cy5mbGFreV90
ZXN0cykpCiAgICAgICAgICAgICBpZiBmaXJzdF9yZXN1bHRzLmZhaWxpbmdfdGVzdHM6CiAgICAg
ICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coc2VsZi50ZXN0X2ZhaWx1cmVzX2xvZ19uYW1lLCAn
XG4nLmpvaW4oZmlyc3RfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKSkKICAgICAgICAgc2VsZi5fcGFy
c2VSdW5XZWJLaXRUZXN0c091dHB1dChsb2dUZXh0KQpAQCAtMjQxNyw2ICsyNDQ5LDcgQEAgY2xh
c3MgUmVSdW5XZWJLaXRUZXN0cyhSdW5XZWJLaXRUZXN0cyk6CiAgICAgICAgIGZpcnN0X3Jlc3Vs
dHNfZmFpbGluZ190ZXN0cyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVy
ZXMnLCBbXSkpCiAgICAgICAgIHNlY29uZF9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJl
X2xpbWl0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnc2Vjb25kX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVf
bGltaXQnKQogICAgICAgICBzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzID0gc2V0KHNlbGYu
Z2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmFpbHVyZXMnLCBbXSkpCisgICAgICAgICMgRklYTUU6
IGhlcmUgaXQgY2FuIGJlIGEgZ29vZCBpZGVhIHRvIGFsc28gdXNlIHRoZSBpbmZvIGZyb20gc2Vj
b25kX3J1bl9mbGFraWVzIGFuZCBmaXJzdF9ydW5fZmxha2llcwogICAgICAgICB0ZXN0c190aGF0
X2NvbnNpc3RlbnRseV9mYWlsZWQgPSBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMuaW50ZXJz
ZWN0aW9uKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpCiAgICAgICAgIGZsYWt5X2ZhaWx1
cmVzID0gZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzLnVuaW9uKHNlY29uZF9yZXN1bHRzX2Zh
aWxpbmdfdGVzdHMpIC0gZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzLmludGVyc2VjdGlvbihz
ZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKQogICAgICAgICBmbGFreV9mYWlsdXJlcyA9IHNv
cnRlZChsaXN0KGZsYWt5X2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVld
CkBAIC0yNDU1LDYgKzI0ODgsNyBAQCBjbGFzcyBSZVJ1bldlYktpdFRlc3RzKFJ1bldlYktpdFRl
c3RzKToKICAgICAgICAgaWYgc2Vjb25kX3Jlc3VsdHM6CiAgICAgICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdzZWNvbmRfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIHNlY29uZF9yZXN1
bHRzLmRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0KQogICAgICAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIHNvcnRlZChzZWNvbmRfcmVzdWx0cy5mYWls
aW5nX3Rlc3RzKSkKKyAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmxh
a2llcycsIHNvcnRlZChzZWNvbmRfcmVzdWx0cy5mbGFreV90ZXN0cykpCiAgICAgICAgICAgICBp
ZiBzZWNvbmRfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzOgogICAgICAgICAgICAgICAgIHNlbGYuX2Fk
ZFRvTG9nKHNlbGYudGVzdF9mYWlsdXJlc19sb2dfbmFtZSwgJ1xuJy5qb2luKHNlY29uZF9yZXN1
bHRzLmZhaWxpbmdfdGVzdHMpKQogICAgICAgICBzZWxmLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0
cHV0KGxvZ1RleHQpCkBAIC0yNDk0LDYgKzI1MjgsNyBAQCBjbGFzcyBSdW5XZWJLaXRUZXN0c1dp
dGhvdXRQYXRjaChSdW5XZWJLaXRUZXN0cyk6CiAgICAgICAgIGlmIGNsZWFuX3RyZWVfcmVzdWx0
czoKICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcmVzdWx0c19leGNl
ZWRfZmFpbHVyZV9saW1pdCcsIGNsZWFuX3RyZWVfcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFp
bHVyZV9saW1pdCkKICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVu
X2ZhaWx1cmVzJywgY2xlYW5fdHJlZV9yZXN1bHRzLmZhaWxpbmdfdGVzdHMpCisgICAgICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9mbGFraWVzJywgc29ydGVkKGNsZWFu
X3RyZWVfcmVzdWx0cy5mbGFreV90ZXN0cykpCiAgICAgICAgICAgICBpZiBjbGVhbl90cmVlX3Jl
c3VsdHMuZmFpbGluZ190ZXN0czoKICAgICAgICAgICAgICAgICBzZWxmLl9hZGRUb0xvZyhzZWxm
LnRlc3RfZmFpbHVyZXNfbG9nX25hbWUsICdcbicuam9pbihjbGVhbl90cmVlX3Jlc3VsdHMuZmFp
bGluZ190ZXN0cykpCiAgICAgICAgIHNlbGYuX3BhcnNlUnVuV2ViS2l0VGVzdHNPdXRwdXQobG9n
VGV4dCkKQEAgLTI1MDUsMTggKzI1NDAsMjIgQEAgY2xhc3MgQW5hbHl6ZUxheW91dFRlc3RzUmVz
dWx0cyhidWlsZHN0ZXAuQnVpbGRTdGVwLCBCdWd6aWxsYU1peGluKToKICAgICBkZXNjcmlwdGlv
bkRvbmUgPSBbJ2FuYWx5emUtbGF5b3V0LXRlc3RzLXJlc3VsdHMnXQogICAgIE5VTV9GQUlMVVJF
U19UT19ESVNQTEFZID0gMTAKIAotICAgIGRlZiByZXBvcnRfZmFpbHVyZShzZWxmLCBuZXdfZmFp
bHVyZXMpOgorICAgIGRlZiByZXBvcnRfZmFpbHVyZShzZWxmLCBuZXdfZmFpbHVyZXMsIGV4Y2Vl
ZF9mYWlsdXJlX2xpbWl0PUZhbHNlKToKICAgICAgICAgc2VsZi5maW5pc2hlZChGQUlMVVJFKQog
ICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBGQUlMVVJFCiAgICAgICAgIGlmIG5vdCBuZXdf
ZmFpbHVyZXM6CiAgICAgICAgICAgICBtZXNzYWdlID0gJ0ZvdW5kIHVuZXhwZWN0ZWQgZmFpbHVy
ZSB3aXRoIHBhdGNoJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGx1cmFsU3VmZml4ID0g
J3MnIGlmIGxlbihuZXdfZmFpbHVyZXMpID4gMSBlbHNlICcnCisgICAgICAgICAgICBpZiBleGNl
ZWRfZmFpbHVyZV9saW1pdDoKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ0ZhaWx1cmUgbGlt
aXQgZXhjZWVkLiBBdCBsZWFzdCBmb3VuZCcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgbWVzc2FnZSA9ICdGb3VuZCcKICAgICAgICAgICAgIG5ld19mYWlsdXJlc19zdHJpbmcg
PSAnLCAnLmpvaW4oc29ydGVkKG5ld19mYWlsdXJlcylbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJ
U1BMQVldKQotICAgICAgICAgICAgbWVzc2FnZSA9ICdGb3VuZCB7fSBuZXcgdGVzdCBmYWlsdXJl
e306IHt9Jy5mb3JtYXQobGVuKG5ld19mYWlsdXJlcyksIHBsdXJhbFN1ZmZpeCwgbmV3X2ZhaWx1
cmVzX3N0cmluZykKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0gJyB7fSBuZXcgdGVzdCBmYWlsdXJl
e306IHt9Jy5mb3JtYXQobGVuKG5ld19mYWlsdXJlcyksIHBsdXJhbFN1ZmZpeCwgbmV3X2ZhaWx1
cmVzX3N0cmluZykKICAgICAgICAgICAgIGlmIGxlbihuZXdfZmFpbHVyZXMpID4gc2VsZi5OVU1f
RkFJTFVSRVNfVE9fRElTUExBWToKICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICcgLi4uJwot
ICAgICAgICAgICAgc2VsZi5zZW5kX2VtYWlsX2Zvcl9uZXdfdGVzdF9mYWlsdXJlcyhuZXdfZmFp
bHVyZXMpCisgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX25ld190ZXN0X2ZhaWx1cmVz
KG5ld19mYWlsdXJlcywgZXhjZWVkX2ZhaWx1cmVfbGltaXQpCiAgICAgICAgIHNlbGYuZGVzY3Jp
cHRpb25Eb25lID0gbWVzc2FnZQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZF9maW5p
c2hfc3VtbWFyeScsIG1lc3NhZ2UpCiAKQEAgLTI1NzMsNyArMjYxMiw3IEBAIGNsYXNzIEFuYWx5
emVMYXlvdXRUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6
CiAgICAgZGVmIF9yZXN1bHRzX2ZhaWxlZF9kaWZmZXJlbnRfdGVzdHMoc2VsZiwgZmlyc3RfcmVz
dWx0c19mYWlsaW5nX3Rlc3RzLCBzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKToKICAgICAg
ICAgcmV0dXJuIGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cyAhPSBzZWNvbmRfcmVzdWx0c19m
YWlsaW5nX3Rlc3RzCiAKLSAgICBkZWYgc2VuZF9lbWFpbF9mb3JfZmxha3lfZmFpbHVyZShzZWxm
LCB0ZXN0X25hbWUpOgorICAgIGRlZiBzZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlKHNlbGYs
IHRlc3RfbmFtZSwgc3RlcF9zdHI9Tm9uZSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGJ1
aWxkZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJycpCiAgICAgICAg
ICAgICB3b3JrZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3dvcmtlcm5hbWUnLCAnJykKQEAg
LTI1ODIsNiArMjYyMSw4IEBAIGNsYXNzIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMoYnVpbGRz
dGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6CiAKICAgICAgICAgICAgIGVtYWlsX3N1Ympl
Y3QgPSAnRmxha3kgdGVzdDoge30nLmZvcm1hdCh0ZXN0X25hbWUpCiAgICAgICAgICAgICBlbWFp
bF90ZXh0ID0gJ0ZsYWt5IHRlc3Q6IHt9XG5cbkJ1aWxkOiB7fVxuXG5CdWlsZGVyOiB7fVxuXG5X
b3JrZXI6IHt9XG5cbkhpc3Rvcnk6IHt9Jy5mb3JtYXQodGVzdF9uYW1lLCBidWlsZF91cmwsIGJ1
aWxkZXJfbmFtZSwgd29ya2VyX25hbWUsIGhpc3RvcnlfdXJsKQorICAgICAgICAgICAgaWYgc3Rl
cF9zdHI6CisgICAgICAgICAgICAgICAgZW1haWxfdGV4dCArPSAnXG5UaGlzIHRlc3Qgd2FzIGZs
YWt5IG9uIHRoZSBzdGVwczoge30nLmZvcm1hdChzdGVwX3N0cikKICAgICAgICAgICAgIHNlbmRf
ZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJf
bmFtZSwgJ2ZsYWt5LXt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKICAgICAgICAgZXhjZXB0IEV4Y2Vw
dGlvbiBhcyBlOgogICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9y
IGZsYWt5IGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCkBAIC0yNTk5LDcgKzI2NDAsNyBAQCBjbGFz
cyBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzKGJ1aWxkc3RlcC5CdWlsZFN0ZXAsIEJ1Z3ppbGxh
TWl4aW4pOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBwcmlu
dCgnRXJyb3IgaW4gc2VuZGluZyBlbWFpbCBmb3IgcHJlLWV4aXN0aW5nIGZhaWx1cmU6IHt9Jy5m
b3JtYXQoZSkpCiAKLSAgICBkZWYgc2VuZF9lbWFpbF9mb3JfbmV3X3Rlc3RfZmFpbHVyZXMoc2Vs
ZiwgdGVzdF9uYW1lcyk6CisgICAgZGVmIHNlbmRfZW1haWxfZm9yX25ld190ZXN0X2ZhaWx1cmVz
KHNlbGYsIHRlc3RfbmFtZXMsIGV4Y2VlZF9mYWlsdXJlX2xpbWl0PUZhbHNlKToKICAgICAgICAg
dHJ5OgogICAgICAgICAgICAgcGF0Y2hfaWQgPSBzZWxmLmdldFByb3BlcnR5KCdwYXRjaF9pZCcs
ICcnKQogICAgICAgICAgICAgaWYgbm90IHNlbGYuc2hvdWxkX3NlbmRfZW1haWwocGF0Y2hfaWQp
OgpAQCAtMjYyMSw2ICsyNjYyLDggQEAgY2xhc3MgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhi
dWlsZHN0ZXAuQnVpbGRTdGVwLCBCdWd6aWxsYU1peGluKToKICAgICAgICAgICAgIGVtYWlsX3Rl
eHQgKz0gJyB3aGlsZSB0ZXN0aW5nIDxhIGhyZWY9Int9Ij5QYXRjaCB7fTwvYT4nLmZvcm1hdChC
dWd6aWxsYS5wYXRjaF91cmwocGF0Y2hfaWQpLCBwYXRjaF9pZCkKICAgICAgICAgICAgIGVtYWls
X3RleHQgKz0gJyBmb3IgPGEgaHJlZj0ie30iPkJ1ZyB7fTwvYT4uJy5mb3JtYXQoQnVnemlsbGEu
YnVnX3VybChidWdfaWQpLCBidWdfaWQpCiAgICAgICAgICAgICBlbWFpbF90ZXh0ICs9ICdcblxu
RnVsbCBkZXRhaWxzIGFyZSBhdmFpbGFibGUgYXQ6IHt9XG5cblBhdGNoIGF1dGhvcjoge30nLmZv
cm1hdChidWlsZF91cmwsIHBhdGNoX2F1dGhvcikKKyAgICAgICAgICAgIGlmIGV4Y2VlZF9mYWls
dXJlX2xpbWl0OgorICAgICAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJ1xuXG5BZGl0aW9uYWxs
eSB0aGUgZmFpbHVyZSBsaW1pdCBoYXMgYmVlbiBleGNlZWRlZCwgc28gdGhlIHRlc3Qgc3VpdGUg
aGFzIGJlZW4gdGVybWluYXRlZCBlYXJseS4gSXQgaXMgbGlrZWx5IHRoYXQgdGhlcmUgd291bGQg
YmUgbW9yZSBmYWlsdXJlcyB0aGFuIHRoZSBvbmVzIGxpc3RlZCBiZWxvdy4nCiAgICAgICAgICAg
ICBlbWFpbF90ZXh0ICs9ICdcblxuTGF5b3V0IHRlc3QgZmFpbHVyZXt9Olxue30nLmZvcm1hdChw
bHVyYWxTdWZmaXgsIHRlc3RfbmFtZXNfc3RyaW5nKQogICAgICAgICAgICAgZW1haWxfdGV4dCAr
PSAnXG5cblRvIHVuc3Vic2NyaWJsZSBmcm9tIHRoZXNlIG5vdGlmaWNhdGlvbnMgb3IgdG8gcHJv
dmlkZSBhbnkgZmVlZGJhY2sgcGxlYXNlIGVtYWlsIGFha2FzaF9qYWluQGFwcGxlLmNvbScKICAg
ICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdTZW5kaW5nIGVtYWlsIG5vdGlmaWNh
dGlvbiB0byB7fScuZm9ybWF0KHBhdGNoX2F1dGhvcikpCkBAIC0yNjQ3LDcgKzI2OTAsNyBAQCBj
bGFzcyBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzKGJ1aWxkc3RlcC5CdWlsZFN0ZXAsIEJ1Z3pp
bGxhTWl4aW4pOgogICAgICAgICAgICAgY2xlYW5fdHJlZV9ydW5fc3RhdHVzID0gc2VsZi5nZXRQ
cm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVSRSkKICAgICAgICAgICAgIGlm
IGNsZWFuX3RyZWVfcnVuX3N0YXR1cyA9PSBTVUNDRVNTOgogICAgICAgICAgICAgICAgIHJldHVy
biBzZWxmLnJlcG9ydF9mYWlsdXJlKHNldCgpKQotICAgICAgICAgICAgIyBUT0RPOiBlbWFpbCBF
V1MgYWRtaW5zCisgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2luZnJhc3RydWN0dXJl
X2lzc3VlKCdCb3RoIGZpcnN0IGFuZCBzZWNvbmQgbGF5b3V0LXRlc3QgcnVucyB3aXRoIHBhdGNo
IGdlbmVyYXRlZCBubyBsaXN0IG9mIHJlc3VsdHMgYnV0IGV4aXRlZCB3aXRoIGVycm9yLCBhbmQg
dGhlIGNsZWFuX3RyZWUgd2l0aG91dCBwYXRjaCByZXRyeSBhbHNvIGZhaWxlZC4nKQogICAgICAg
ICAgICAgcmV0dXJuIHNlbGYucmV0cnlfYnVpbGQoJ1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUg
aXNzdWUsIHJldHJ5aW5nIGJ1aWxkJykKIAogICAgICAgICBpZiBmaXJzdF9yZXN1bHRzX2RpZF9l
eGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0IGFuZCBzZWNvbmRfcmVzdWx0c19kaWRfZXhjZWVkX3Rl
c3RfZmFpbHVyZV9saW1pdDoKQEAgLTI2NzQsNiArMjcxNyw3IEBAIGNsYXNzIEFuYWx5emVMYXlv
dXRUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmFpbHVyZXNfaW50cm9kdWNl
ZF9ieV9wYXRjaCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHJ5X2J1aWxkKCkKIAorICAg
ICAgICAjIEZJWE1FOiBIZXJlIGl0IGNvdWxkIGJlIGEgZ29vZCBpZGVhIHRvIGFsc28gdXNlIHRo
ZSBpbmZvIG9mIHJlc3VsdHMuZmxha3lfdGVzdHMgZnJvbSB0aGUgcnVucwogICAgICAgICBpZiBz
ZWxmLl9yZXN1bHRzX2ZhaWxlZF9kaWZmZXJlbnRfdGVzdHMoZmlyc3RfcmVzdWx0c19mYWlsaW5n
X3Rlc3RzLCBzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKToKICAgICAgICAgICAgIHRlc3Rz
X3RoYXRfb25seV9mYWlsZWRfZmlyc3QgPSBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMuZGlm
ZmVyZW5jZShzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKQogICAgICAgICAgICAgc2VsZi5f
cmVwb3J0X2ZsYWt5X3Rlc3RzKHRlc3RzX3RoYXRfb25seV9mYWlsZWRfZmlyc3QpCkBAIC0yNzEy
LDYgKzI3NTYsMjg2IEBAIGNsYXNzIFJ1bldlYktpdDFUZXN0cyhSdW5XZWJLaXRUZXN0cyk6CiAg
ICAgICAgIHJldHVybiBSdW5XZWJLaXRUZXN0cy5zdGFydChzZWxmKQogCiAKKyMgVGhpcyBpcyBh
IHNwZWNpYWxpemVkIGNsYXNzIGRlc2lnbmVkIHRvIGNvcGUgd2l0aCBhIHRyZWUgdGhhdCBpcyBu
b3QgYWx3YXlzIGdyZWVuLgorIyBJdCB0cmllcyBoYXJkIHRvIGF2b2lkIHJlcG9ydGluZyBhbnkg
ZmFsc2UgcG9zaXRpdmUsIHNvIGl0IHdpbGwgb25seSByZXBvcnQgbmV3CisjIGNvbnNpc3RlbnQg
ZmFpbHVyZXMgKGZhaWwgYWx3YXlzIHdpdGggdGhlIHBhdGNoIGFuZCBwYXNzIGFsd2F5cyB3aXRo
b3V0IGl0KS4KK2NsYXNzIFJ1bldlYktpdFRlc3RzUmVkVHJlZShSdW5XZWJLaXRUZXN0cyk6Cisg
ICAgRVhJVF9BRlRFUl9GQUlMVVJFUyA9IDUwMAorCisgICAgZGVmIF9kaWRfY29tbWFuZF90aW1l
ZF9vdXQoc2VsZiwgbG9nSGVhZGVyc1RleHQpOgorICAgICAgICB0aW1lZF9vdXRfbGluZV9zdGFy
dCA9ICdjb21tYW5kIHRpbWVkIG91dDoge30gc2Vjb25kcyBlbGFwc2VkIHJ1bm5pbmcnLmZvcm1h
dChzZWxmLk1BWF9TRUNPTkRTX1NURVBfUlVOKQorICAgICAgICB0aW1lZF9vdXRfbGluZV9lbmQg
PSAnYXR0ZW1wdGluZyB0byBraWxsJworICAgICAgICBmb3IgbGluZSBpbiBsb2dIZWFkZXJzVGV4
dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAg
ICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgodGltZWRfb3V0X2xpbmVfc3RhcnQpIGFuZCBsaW5lLmVu
ZHN3aXRoKHRpbWVkX291dF9saW5lX2VuZCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUK
KyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNt
ZCk6CisgICAgICAgIGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cyA9IHNldChzZWxmLmdldFBy
b3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIGZpcnN0X3Jlc3VsdHNf
Zmxha3lfdGVzdHMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBb
XSkpCisgICAgICAgIHJjID0gc2VsZi5ldmFsdWF0ZVJlc3VsdChjbWQpCisgICAgICAgIG5leHRf
c3RlcHMgPSBbQXJjaGl2ZVRlc3RSZXN1bHRzKCksIFVwbG9hZFRlc3RSZXN1bHRzKCksIEV4dHJh
Y3RUZXN0UmVzdWx0cygpXQorICAgICAgICBpZiBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHM6
CisgICAgICAgICAgICBuZXh0X3N0ZXBzLmV4dGVuZChbVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdD
bG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLCBLaWxsT2xkUHJvY2Vzc2VzKCksIFJ1bldlYktp
dFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVlKCldKQorICAgICAgICBlbGlmIGZpcnN0X3Jlc3Vs
dHNfZmxha3lfdGVzdHM6CisgICAgICAgICAgICBuZXh0X3N0ZXBzLmFwcGVuZChBbmFseXplTGF5
b3V0VGVzdHNSZXN1bHRzUmVkVHJlZSgpKQorICAgICAgICBlbGlmIHJjID09IFNVQ0NFU1Mgb3Ig
cmMgPT0gV0FSTklOR1M6CisgICAgICAgICAgICBuZXh0X3N0ZXBzID0gTm9uZQorICAgICAgICAg
ICAgbWVzc2FnZSA9ICdQYXNzZWQgbGF5b3V0IHRlc3RzJworICAgICAgICAgICAgc2VsZi5kZXNj
cmlwdGlvbkRvbmUgPSBtZXNzYWdlCisgICAgICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBT
VUNDRVNTCisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZF9zdW1tYXJ5JywgbWVz
c2FnZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgV2UgaGF2ZSBhIGZhaWx1cmUgcmV0
dXJuIGNvZGUsIGJ1dCBub3QgYSBsaXN0IG9mIGZhaWxlZCBvciBmbGFreSB0ZXN0cy4KKyAgICAg
ICAgICAgICMgU28gcmV0cnkgcmUtcnVubmluZyB0aGUgX3dob2xlXyBsYXlvdXQgdGVzdHMgd2l0
aG91dC1wYXRjaCB0byBzZWUgaWYKKyAgICAgICAgICAgICMgdGhpcyB1bmV4cGVjdGVkIGZhaWx1
cmUgd2FzIHByZS1leGlzdGVudC4gSWYgdGhlIGZhaWx1cmUgd2FzIG5vdCBwcmUtZXhpc3RlbnQs
CisgICAgICAgICAgICAjIHRoZW4gd2Ugd291bGQgbm90IHJlcG9ydCBhIGxpc3Qgb2YgZmFpbGVk
IHRlc3QsIGp1c3QgYSBnZW5lcmljICJ1bmtub3duIiBmYWlsdXJlLgorICAgICAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgncGF0Y2hGYWlsZWRUZXN0cycsIFRydWUpCisgICAgICAgICAgICBuZXh0
X3N0ZXBzLmV4dGVuZChbVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpLCBDb21waWxlV2ViS2l0V2l0
aG91dFBhdGNoKHJldHJ5X2J1aWxkX29uX2ZhaWx1cmU9VHJ1ZSksIFZhbGlkYXRlUGF0Y2godmVy
aWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwgUnVuV2ViS2l0VGVzdHNXaXRob3V0
UGF0Y2hSZWRUcmVlKCldKQorICAgICAgICBpZiBuZXh0X3N0ZXBzOgorICAgICAgICAgICAgc2Vs
Zi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAobmV4dF9zdGVwcykKKyAgICAgICAgcmV0
dXJuIHJjCisKKworY2xhc3MgUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1JlZFRyZWUoUnVu
V2ViS2l0VGVzdHNSZWRUcmVlKToKKyAgICBuYW1lID0gJ2xheW91dC10ZXN0cy1yZXBlYXQtZmFp
bHVyZXMnCisgICAgTlVNX1JFUEVBVFNfUEVSX1RFU1QgPSAxMAorICAgIEVYSVRfQUZURVJfRkFJ
TFVSRVMgPSBOb25lCisgICAgTUFYX1NFQ09ORFNfU1RFUF9SVU4gPSAxODAwMCAgIyA1aAorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoUnVuV2ViS2l0
VGVzdHNSZXBlYXRGYWlsdXJlc1JlZFRyZWUsIHNlbGYpLl9faW5pdF9fKG1heFRpbWU9c2VsZi5N
QVhfU0VDT05EU19TVEVQX1JVTiwgKiprd2FyZ3MpCisKKyAgICBkZWYgc2V0TGF5b3V0VGVzdENv
bW1hbmQoc2VsZik6CisgICAgICAgIHN1cGVyKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNS
ZWRUcmVlLCBzZWxmKS5zZXRMYXlvdXRUZXN0Q29tbWFuZCgpCisgICAgICAgIGZpcnN0X3Jlc3Vs
dHNfZmFpbGluZ190ZXN0cyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVy
ZXMnLCBbXSkpCisgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tcmVw
ZWF0LWVhY2g9JXMnICUgc2VsZi5OVU1fUkVQRUFUU19QRVJfVEVTVF0gKyBzb3J0ZWQoZmlyc3Rf
cmVzdWx0c19mYWlsaW5nX3Rlc3RzKSkKKworICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwg
Y21kKToKKyAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFr
eV9mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWls
dXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgW10pKQorICAgICAgICB3aXRoX3BhdGNo
X3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgn
d2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgW10pKQorICAgICAg
ICB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCA9IHNlbGYuZ2V0UHJvcGVydHko
J3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0JywgRmFsc2UpCisgICAgICAgIGZp
cnN0X3Jlc3VsdHNfZmxha3lfdGVzdHMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnZmlyc3RfcnVu
X2ZsYWtpZXMnLCBbXSkpCisgICAgICAgIHJjID0gc2VsZi5ldmFsdWF0ZVJlc3VsdChjbWQpCisg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3JldGNv
ZGUnLCByYykKKyAgICAgICAgbmV4dF9zdGVwcyA9IFtBcmNoaXZlVGVzdFJlc3VsdHMoKSwgVXBs
b2FkVGVzdFJlc3VsdHMoaWRlbnRpZmllcj0ncmVwZWF0LWZhaWx1cmVzJyksIEV4dHJhY3RUZXN0
UmVzdWx0cyhpZGVudGlmaWVyPSdyZXBlYXQtZmFpbHVyZXMnKV0KKyAgICAgICAgaWYgd2l0aF9w
YXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcyBvciB3aXRoX3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dDoKKyAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ3BhdGNoRmFpbGVkVGVzdHMnLCBUcnVlKQorICAgICAgICAgICAgbmV4dF9zdGVwcy5leHRl
bmQoW1ZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwg
S2lsbE9sZFByb2Nlc3NlcygpLCBVbkFwcGx5UGF0Y2hJZlJlcXVpcmVkKCksIENvbXBpbGVXZWJL
aXRXaXRob3V0UGF0Y2gocmV0cnlfYnVpbGRfb25fZmFpbHVyZT1UcnVlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwg
YWRkVVJMcz1GYWxzZSksIFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hS
ZWRUcmVlKCldKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmV4dF9zdGVwcy5hcHBlbmQo
QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUoKSkKKyAgICAgICAgaWYgbmV4dF9zdGVw
czoKKyAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKG5leHRf
c3RlcHMpCisgICAgICAgIHJldHVybiByYworCisgICAgZGVmIGNvbW1hbmRDb21wbGV0ZShzZWxm
LCBjbWQpOgorICAgICAgICBzaGVsbC5UZXN0LmNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpCisg
ICAgICAgIGxvZ1RleHQgPSBzZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRvdXQoKSArIHNlbGYubG9n
X29ic2VydmVyLmdldFN0ZGVycigpCisgICAgICAgIGxvZ1RleHRKc29uID0gc2VsZi5sb2dfb2Jz
ZXJ2ZXJfanNvbi5nZXRTdGRvdXQoKQorICAgICAgICB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJl
c19yZXN1bHRzID0gTGF5b3V0VGVzdEZhaWx1cmVzLnJlc3VsdHNfZnJvbV9zdHJpbmcobG9nVGV4
dEpzb24pCisgICAgICAgIGlmIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHM6Cisg
ICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19y
ZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0Jywgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNf
cmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCkKKyAgICAgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lf
ZmFpbHVyZXMnLCBzb3J0ZWQod2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0cy5mYWls
aW5nX3Rlc3RzKSkKKyAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIHNvcnRlZCh3aXRoX3BhdGNoX3JlcGVhdF9m
YWlsdXJlc19yZXN1bHRzLmZsYWt5X3Rlc3RzKSkKKyAgICAgICAgICAgIGlmIHdpdGhfcGF0Y2hf
cmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHMuZmFpbGluZ190ZXN0czoKKyAgICAgICAgICAgICAgICBz
ZWxmLl9hZGRUb0xvZyhzZWxmLnRlc3RfZmFpbHVyZXNfbG9nX25hbWUsICdcbicuam9pbih3aXRo
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzLmZhaWxpbmdfdGVzdHMpKQorICAgICAgICBj
b21tYW5kX3RpbWVkb3V0ID0gc2VsZi5fZGlkX2NvbW1hbmRfdGltZWRfb3V0KHNlbGYubG9nX29i
c2VydmVyLmdldEhlYWRlcnMoKSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRj
aF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBjb21tYW5kX3RpbWVkb3V0KQorICAgICAgICBz
ZWxmLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ1RleHQpCisKKyAgICBkZWYgc3RhcnQo
c2VsZik6CisgICAgICAgICMgYnVpbGRib3QgbWVzc2FnZXMgYWJvdXQgdGltZW91dCByZWFjaGVk
IGFwcGVhciBvbiB0aGUgaGVhZGVyIHN0cmVhbSBvZiBCdWZmZXJMb2cKKyAgICAgICAgcmV0dXJu
IHN1cGVyKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVlLCBzZWxmKS5zdGFydChC
dWZmZXJMb2dPYnNlcnZlckNsYXNzPUJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyKQorCisKK2NsYXNz
IFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlKFJ1bldlYktp
dFRlc3RzUmVkVHJlZSk6CisgICAgbmFtZSA9ICdsYXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVz
LXdpdGhvdXQtcGF0Y2gnCisgICAgTlVNX1JFUEVBVFNfUEVSX1RFU1QgPSAxMAorICAgIEVYSVRf
QUZURVJfRkFJTFVSRVMgPSBOb25lCisgICAgTUFYX1NFQ09ORFNfU1RFUF9SVU4gPSAxMDgwMCAg
IyAzaAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIo
UnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1dpdGhvdXRQYXRjaFJlZFRyZWUsIHNlbGYpLl9f
aW5pdF9fKG1heFRpbWU9c2VsZi5NQVhfU0VDT05EU19TVEVQX1JVTiwgKiprd2FyZ3MpCisKKyAg
ICBkZWYgc2V0TGF5b3V0VGVzdENvbW1hbmQoc2VsZik6CisgICAgICAgIHN1cGVyKFJ1bldlYktp
dFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlLCBzZWxmKS5zZXRMYXlvdXRU
ZXN0Q29tbWFuZCgpCisgICAgICAgIHdpdGhfcGF0Y2hfbm9uZmxha3lfZmFpbHVyZXMgPSBzZXQo
c2VsZi5nZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25m
bGFreV9mYWlsdXJlcycsIFtdKSkKKyAgICAgICAgZmlyc3RfcnVuX2ZhaWx1cmVzID0gc2V0KHNl
bGYuZ2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFtdKSkKKyAgICAgICAgd2l0aF9w
YXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQgPSBzZWxmLmdldFByb3BlcnR5KCd3aXRoX3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcsIEZhbHNlKQorICAgICAgICBmYWlsdXJlc190
b19yZXBlYXQgPSBmaXJzdF9ydW5fZmFpbHVyZXMgaWYgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVy
ZXNfdGltZWRvdXQgZWxzZSB3aXRoX3BhdGNoX25vbmZsYWt5X2ZhaWx1cmVzCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3hkZWJ1Z190aW1lb3V0X3ByZXZpb3VzJywgd2l0aF9wYXRjaF9yZXBl
YXRfZmFpbHVyZXNfdGltZWRvdXQpCisgICAgICAgICMgUGFzcyAnLS1za2lwcGVkPWFsd2F5cycg
dG8gZW5zdXJlIHRoYXQgYW55IHRlc3QgcGFzc2VkIHZpYSBjb21tYW5kIGxpbmUgYXJndW1lbnRz
CisgICAgICAgICMgaXMgc2tpcHBlZCBhbnl3YXlzIGlmIGlzIG1hcmtlZCBhcyBzdWNoIG9uIHRo
ZSBFeHBlY3RhdGlvbiBmaWxlcyBvciBpZiBpcyBtYXJrZWQKKyAgICAgICAgIyBhcyBmYWlsdXJl
IChzaW5jZSB3ZSBhcmUgcGFzc2luZyBhbHNvICctLXNraXAtZmFpbGluZy10ZXN0cycpLiBUaGF0
IHdheSB3ZSBlbnN1cmUKKyAgICAgICAgIyB0byByZXBvcnQgdGhlIGNhc2Ugb2YgYSBwYXRjaCBy
ZW1vdmluZyBhbiBleHBlY3RhdGlvbiB0aGF0IHN0aWxsIGZhaWxzIHdpdGggaXQuCisgICAgICAg
IHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tcmVwZWF0LWVhY2g9JXMnICUgc2Vs
Zi5OVU1fUkVQRUFUU19QRVJfVEVTVCwgJy0tc2tpcHBlZD1hbHdheXMnXSArIHNvcnRlZChmYWls
dXJlc190b19yZXBlYXQpKQorCisgICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgor
ICAgICAgICByYyA9IHNoZWxsLlRlc3QuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkKKyAgICAg
ICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0FyY2hpdmVUZXN0UmVzdWx0
cygpLCBVcGxvYWRUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdyZXBlYXQtZmFpbHVyZXMtd2l0aG91
dC1wYXRjaCcpLCBFeHRyYWN0VGVzdFJlc3VsdHMoaWRlbnRpZmllcj0ncmVwZWF0LWZhaWx1cmVz
LXdpdGhvdXQtcGF0Y2gnKSwgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUoKV0pCisg
ICAgICAgIHJldHVybiByYworCisgICAgZGVmIGNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpOgor
ICAgICAgICBzaGVsbC5UZXN0LmNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpCisgICAgICAgIGxv
Z1RleHQgPSBzZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRvdXQoKSArIHNlbGYubG9nX29ic2VydmVy
LmdldFN0ZGVycigpCisgICAgICAgIGxvZ1RleHRKc29uID0gc2VsZi5sb2dfb2JzZXJ2ZXJfanNv
bi5nZXRTdGRvdXQoKQorICAgICAgICB3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1
bHRzID0gTGF5b3V0VGVzdEZhaWx1cmVzLnJlc3VsdHNfZnJvbV9zdHJpbmcobG9nVGV4dEpzb24p
CisgICAgICAgIGlmIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHM6CisgICAg
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19y
ZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0Jywgd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVy
ZXNfcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCkKKyAgICAgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9u
Zmxha3lfZmFpbHVyZXMnLCBzb3J0ZWQod2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVz
dWx0cy5mYWlsaW5nX3Rlc3RzKSkKKyAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhv
dXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIHNvcnRlZCh3aXRob3V0
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzLmZsYWt5X3Rlc3RzKSkKKyAgICAgICAgICAg
IGlmIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHMuZmFpbGluZ190ZXN0czoK
KyAgICAgICAgICAgICAgICBzZWxmLl9hZGRUb0xvZyhzZWxmLnRlc3RfZmFpbHVyZXNfbG9nX25h
bWUsICdcbicuam9pbih3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzLmZhaWxp
bmdfdGVzdHMpKQorICAgICAgICBjb21tYW5kX3RpbWVkb3V0ID0gc2VsZi5fZGlkX2NvbW1hbmRf
dGltZWRfb3V0KHNlbGYubG9nX29ic2VydmVyLmdldEhlYWRlcnMoKSkKKyAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBjb21t
YW5kX3RpbWVkb3V0KQorICAgICAgICBzZWxmLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxv
Z1RleHQpCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICMgYnVpbGRib3QgbWVzc2Fn
ZXMgYWJvdXQgdGltZW91dCByZWFjaGVkIGFwcGVhciBvbiB0aGUgaGVhZGVyIHN0cmVhbSBvZiBC
dWZmZXJMb2cKKyAgICAgICAgcmV0dXJuIHN1cGVyKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVy
ZXNXaXRob3V0UGF0Y2hSZWRUcmVlLCBzZWxmKS5zdGFydChCdWZmZXJMb2dPYnNlcnZlckNsYXNz
PUJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyKQorCisKK2NsYXNzIFJ1bldlYktpdFRlc3RzV2l0aG91
dFBhdGNoUmVkVHJlZShSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaCk6CisgICAgRVhJVF9BRlRF
Ul9GQUlMVVJFUyA9IDUwMAorCisgICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgor
ICAgICAgICByYyA9IHNoZWxsLlRlc3QuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkKKyAgICAg
ICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0FyY2hpdmVUZXN0UmVzdWx0
cygpLCBVcGxvYWRUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdjbGVhbi10cmVlJyksIEV4dHJhY3RU
ZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdjbGVhbi10cmVlJyksIEFuYWx5emVMYXlvdXRUZXN0c1Jl
c3VsdHNSZWRUcmVlKCldKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1
bl9zdGF0dXMnLCByYykKKyAgICAgICAgcmV0dXJuIHJjCisKKworY2xhc3MgQW5hbHl6ZUxheW91
dFRlc3RzUmVzdWx0c1JlZFRyZWUoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyk6CisgICAgTUFY
X1JFVFJZID0gMworCisgICAgZGVmIHJlcG9ydF9zdWNjZXNzKHNlbGYpOgorICAgICAgICBzZWxm
LmZpbmlzaGVkKFNVQ0NFU1MpCisgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MK
KyAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSAnUGFzc2VkIGxheW91dCB0ZXN0cycKKyAg
ICAgICAgbWVzc2FnZSA9ICcnCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkX3N1bW1h
cnknLCBtZXNzYWdlKQorICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25lKQorCisgICAg
ZGVmIHJlcG9ydF93YXJuaW5nKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBzZWxmLmZpbmlzaGVk
KFdBUk5JTkdTKQorICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBXQVJOSU5HUworICAgICAg
ICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnYnVpbGRfc3VtbWFyeScsIG1lc3NhZ2UpCisgICAgICAgIHJldHVybiBkZWZlci5zdWNjZWVk
KE5vbmUpCisKKyAgICBkZWYgcmVwb3J0X2luZnJhc3RydWN0dXJlX2lzc3VlX2FuZF9tYXliZV9y
ZXRyeV9idWlsZChzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgcmV0cnlfY291bnQgPSBpbnQoc2Vs
Zi5nZXRQcm9wZXJ0eSgncmV0cnlfY291bnQnLCAwKSkKKyAgICAgICAgaWYgcmV0cnlfY291bnQg
Pj0gc2VsZi5NQVhfUkVUUlk6CisgICAgICAgICAgICBtZXNzYWdlICs9ICdcblJlYWNoZWQgdGhl
IG1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgKHt9KS4gVW5hYmxlIHRvIGRldGVybWluZSBpZiBw
YXRjaCBpcyBiYWQgb3IgdGhlcmUgaXMgYSBwcmUtZXhpc3RlbnQgaW5mcmFzdHJ1Y3R1cmUgaXNz
dWUuJy5mb3JtYXQoc2VsZi5NQVhfUkVUUlkpCisgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxf
Zm9yX2luZnJhc3RydWN0dXJlX2lzc3VlKG1lc3NhZ2UpCisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5yZXBvcnRfd2FybmluZyhtZXNzYWdlKQorICAgICAgICBtZXNzYWdlICs9ICJcblJldHJ5aW5n
IGJ1aWxkIFtyZXRyeSBjb3VudCBpcyB7fSBvZiB7fV0iLmZvcm1hdChyZXRyeV9jb3VudCwgc2Vs
Zi5NQVhfUkVUUlkpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3JldHJ5X2NvdW50JywgcmV0
cnlfY291bnQgKyAxKQorICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2luZnJhc3RydWN0dXJl
X2lzc3VlKG1lc3NhZ2UpCisgICAgICAgIHJldHVybiBzZWxmLnJldHJ5X2J1aWxkKG1lc3NhZ2U9
J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWU6IHt9Jy5mb3JtYXQobWVzc2FnZSkpCisK
KyAgICBkZWYgc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0ZW50X2ZhaWx1cmVzKHNlbGYsIHRlc3Rf
bmFtZXMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBidWlsZGVyX25hbWUgPSBzZWxmLmdl
dFByb3BlcnR5KCdidWlsZGVybmFtZScsICcnKQorICAgICAgICAgICAgd29ya2VyX25hbWUgPSBz
ZWxmLmdldFByb3BlcnR5KCd3b3JrZXJuYW1lJywgJycpCisgICAgICAgICAgICBidWlsZF91cmwg
PSAne30jL2J1aWxkZXJzL3t9L2J1aWxkcy97fScuZm9ybWF0KHNlbGYubWFzdGVyLmNvbmZpZy5i
dWlsZGJvdFVSTCwgc2VsZi5idWlsZC5fYnVpbGRlcmlkLCBzZWxmLmJ1aWxkLm51bWJlcikKKyAg
ICAgICAgICAgIG51bWJlcl9mYWlsdXJlcyA9IGxlbih0ZXN0X25hbWVzKQorICAgICAgICAgICAg
cGx1cmFsU3VmZml4ID0gJ3MnIGlmIG51bWJlcl9mYWlsdXJlcyA+IDEgZWxzZSAnJworCisgICAg
ICAgICAgICBlbWFpbF9zdWJqZWN0ID0gJ0luZm8gYWJvdXQge30gcHJlLWV4aXN0ZW50IGZhaWx1
cmV7fSBhdCB7fScuZm9ybWF0KG51bWJlcl9mYWlsdXJlcywgcGx1cmFsU3VmZml4LCBidWlsZGVy
X25hbWUpCisgICAgICAgICAgICBlbWFpbF90ZXN0ID0gJ0luZm8gYWJvdXQgcHJlLWV4aXN0ZW50
IChub24tZmxha3kpIHRlc3QgZmFpbHVyZXt9IGF0IEVXUzpcbicuZm9ybWF0KHBsdXJhbFN1ZmZp
eCkKKyAgICAgICAgICAgIGVtYWlsX3RleHQgPSAnICAgIC0gQnVpbGQgOiB7fVxuJy5mb3JtYXQo
YnVpbGRfdXJsKQorICAgICAgICAgICAgZW1haWxfdGV4dCA9ICcgICAgLSBCdWlsZGVyIDoge31c
bicuZm9ybWF0KGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgICAgIGVtYWlsX3RleHQgPSAnICAgIC0g
V29ya2VyIDoge31cbicuZm9ybWF0KHdvcmtlcl9uYW1lKQorICAgICAgICAgICAgZm9yIHRlc3Rf
bmFtZSBpbiBzb3J0ZWQodGVzdF9uYW1lcyk6CisgICAgICAgICAgICAgICAgaGlzdG9yeV91cmwg
PSAne30/c3VpdGU9bGF5b3V0LXRlc3RzJnRlc3Q9e30nLmZvcm1hdChSRVNVTFRTX0RCX1VSTCwg
dGVzdF9uYW1lKQorICAgICAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJ1xuLSB7fSAoPGEgaHJl
Zj0ie30iPnRlc3QgaGlzdG9yeTwvYT4pJy5mb3JtYXQodGVzdF9uYW1lLCBoaXN0b3J5X3VybCkK
KyAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVt
YWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ3ByZWV4aXN0aW5nLXt9Jy5mb3JtYXQodGVzdF9uYW1l
KSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcHJpbnQoJ0Vy
cm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIGZsYWt5IGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCisK
KyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICMgUnVuIHdpdGggcGF0Y2gsIHJ1bm5pbmcg
dGhlIHdob2xlIGxheW91dCB0ZXN0IHN1aXRlCisgICAgICAgIGZpcnN0X3Jlc3VsdHNfZXhjZWVk
X2ZhaWx1cmVfbGltaXQgPSBzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9yZXN1bHRzX2V4Y2VlZF9m
YWlsdXJlX2xpbWl0JywgRmFsc2UpCisgICAgICAgIGZpcnN0X3J1bl9mYWlsdXJlcyA9IHNldChz
ZWxmLmdldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIGZpcnN0
X3J1bl9mbGFraWVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywg
W10pKQorCisgICAgICAgICMgUnVuIHdpdGggcGF0Y2gsIHJ1bm5pbmcgZmlyc3RfcnVuX2ZhaWx1
cmVzIDEwIHRpbWVzIGVhY2ggdGVzdAorICAgICAgICB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJl
c19yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnd2l0aF9w
YXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIEZhbHNl
KQorICAgICAgICB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2Zh
aWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVz
X3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIHdpdGhfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCd3aXRo
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbXSkpCisgICAgICAgIHdp
dGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnd2l0
aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBGYWxzZSkKKworICAgICAgICAjIFJ1
biB3aXRob3V0IHBhdGNoLCBydW5uaW5nIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfbm9uZmxha3lfZmFpbHVyZXMgMTAgdGltZXMgZWFjaCB0ZXN0CisgICAgICAgIHdpdGhvdXRf
cGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQgPSBzZWxm
LmdldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2V4Y2Vl
ZF9mYWlsdXJlX2xpbWl0JywgRmFsc2UpCisgICAgICAgIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgn
d2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycs
IFtdKSkKKyAgICAgICAgd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFr
aWVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVz
X3Jlc3VsdHNfZmxha2llcycsIFtdKSkKKyAgICAgICAgd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFp
bHVyZXNfdGltZWRvdXQgPSBzZWxmLmdldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9m
YWlsdXJlc190aW1lZG91dCcsIEZhbHNlKQorCisgICAgICAgICMgQ2hlY2sgZm9yIHVuZXhwZWN0
ZWQgc2l0dWF0aW9ucyBhbmQgd2FybiBFV1MgYm90IHdhdGNoZXJzIG9yIGF1dGhvciBwb3RlbnRp
YWxseSByZXRyeWluZyB0aGUgYnVpbGQuCisgICAgICAgIGlmIChub3QgZmlyc3RfcnVuX2ZhaWx1
cmVzKSBhbmQgKG5vdCBmaXJzdF9ydW5fZmxha2llcyk6CisgICAgICAgICAgICAjIElmIHdlJ3Zl
IG1hZGUgaXQgaGVyZSwgdGhlIGZpcnN0X3J1biBmYWlsZWQsIHdoaWNoIG1lYW5zIHRoZXJlIHNo
b3VsZCBiZSBlaXRoZXIgdGVzdCBmYWlsdXJlcyBvciBmbGFraWVzCisgICAgICAgICAgICAjIE90
aGVyd2lzZSB0aGVyZSBpcyBzb21lIHVuZXhwZWN0ZWQgaXNzdWUuCisgICAgICAgICAgICAjIFRo
ZSBjbGVhbiB0cmVlIHJ1biB0aGF0IG9ubHkgaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBydW4gZ2l2
ZXMgZXJyb3IgY29kZSB3aXRob3V0IGdlbmVyYXRpbmcgYSBsaXN0IG9mIGZhaWx1cmVzIG9yIGZs
YWtpZXMKKyAgICAgICAgICAgIGNsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0
UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgW10pKQorICAgICAgICAgICAgY2xl
YW5fdHJlZV9ydW5fZmxha2llcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1
bl9mbGFraWVzJywgW10pKQorICAgICAgICAgICAgY2xlYW5fdHJlZV9ydW5fc3RhdHVzID0gc2Vs
Zi5nZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVSRSkKKworICAgICAg
ICAgICAgIyBJZiB0aGUgY2xlYW4tdHJlZSBydW4gZ2VuZXJhdGVkIHNvbWUgcmVzdWx0cyB0aGVu
IHdlIGFzc3VtZSB0aGlzIHBhdGNoIGJyb2tlIHRoZSBzY3JpcHQgcnVuLXdlYmtpdC10ZXN0cyBv
ciBzb21ldGhpbmcgbGlrZSB0aGF0CisgICAgICAgICAgICBpZiAoY2xlYW5fdHJlZV9ydW5fc3Rh
dHVzIGluIFtTVUNDRVNTLCBXQVJOSU5HU10pIG9yIGNsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzIG9y
IGNsZWFuX3RyZWVfcnVuX2ZsYWtpZXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVw
b3J0X2ZhaWx1cmUoc2V0KCksIGZpcnN0X3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQpCisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfaW5mcmFzdHJ1Y3R1cmVfaXNzdWVfYW5kX21h
eWJlX3JldHJ5X2J1aWxkKCdUaGUgbGF5b3V0LXRlc3QgcnVuIHdpdGggcGF0Y2ggZ2VuZXJhdGVk
IG5vIGxpc3Qgb2YgcmVzdWx0cyBidXQgZXhpdGVkIHdpdGggZXJyb3IsIGFuZCB0aGUgY2xlYW5f
dHJlZSB3aXRob3V0IHBhdGNoIHJ1biBkaWQgdGhlIHNhbWV0aGluZy4nKQorCisgICAgICAgIGlm
IHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQg
b3Igd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9s
aW1pdDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9pbmZyYXN0cnVjdHVyZV9pc3N1
ZV9hbmRfbWF5YmVfcmV0cnlfYnVpbGQoJ09uZSBvZiB0aGUgc3RlcHMgZm9yIHJldHJ5aW5nIHRo
ZSBmYWlsZWQgdGVzdHMgaGFzIGV4aXRlZCBlYXJseSwgYnV0IHRoaXMgc3RlcHMgc2hvdWxkIHJ1
biB3aXRob3V0ICItLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcyIgc3dpdGNoLCBzbyB0aGV5IHNob3Vs
ZCBub3QgZXhpdCBlYXJseS4nKQorCisgICAgICAgIGlmIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3RpbWVkb3V0OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2luZnJhc3Ry
dWN0dXJlX2lzc3VlX2FuZF9tYXliZV9yZXRyeV9idWlsZCgnVGhlIHN0ZXAgImxheW91dC10ZXN0
cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1wYXRjaCIgd2FzIGludGVycnVtcGVkIGJlY2F1c2Ug
aXQgcmVhY2hlZCB0aGUgdGltZW91dC4nKQorCisgICAgICAgIGlmIHdpdGhfcGF0Y2hfcmVwZWF0
X2ZhaWx1cmVzX3RpbWVkb3V0OgorICAgICAgICAgICAgIyBUaGUgcGF0Y2ggaXMgY2F1c2luZyB0
aGUgc3RlcCAnbGF5b3V0LXRlc3RzLXJlcGVhdC1mYWlsdXJlcy13aXRoLXBhdGNoIiB0byB0aW1l
b3V0IChidXQgdGhlIHN0ZXAgJ2xheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1w
YXRjaCcgZG9lc24ndCB0aW1lb3V0KQorICAgICAgICAgICAgIyBMaWtlbHkgdGhlIHBhdGNoIGlz
IGFkZGluZyBzbyBtYW55IGZhaWx1cmVzIHRoYXQgaXMgY2F1c2luZyB0aGUgdGltZW91dCB0byBi
ZSByZWFjaGVkLiBUaGVyZSBpcyBubyBwb2ludCBpbiByZXBlYXRpbmcgdGhpcyBydW4gKGl0IHdv
dWxkIGhhcHBlbiB0aGUgc2FtZSBvbiBuZXh0IHJ1bnMgYW5kIGNvbnN1bWUgbG90IG9mIHRpbWUp
CisgICAgICAgICAgICAjIE1hcmsgdGhlIHBhdGNoIGFzIGJhZCBhbmQgcmVwb3J0IHRoZSB0ZXN0
cyB0aGF0IGZhaWx1cmVkIG9uIHRoZSBmaXJzdCBydW4gKHdpdGhvdXQgdGhlIG9uZXMgdGhhdCBw
YXNzZWQgb24gdGhlIHJlcGVhdCkuCisgICAgICAgICAgICAjIFRoaXMgbWF5IGNhdXNlIHNvbWUg
Zmxha3kgdGVzdHMgdG8gYmUgcmVwb3J0ZWQgYXMgZmFsc2UgcG9zaXRpdmVzIChzaW5jZSB0aGUg
c3RlcCB0byBkaXNjYXJkIGZsYWtpZXMgd2l0aCBwYXRjaCBjb3VsZG4ndCBmaW5pc2gpLCBidXQg
aXMgdGhlIGJlc3Qgd2UgY2FuIGRvIGhlcmUuCisgICAgICAgICAgICBsaWtlbHlfbmV3X25vbl9m
bGFreV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9mYWlsdXJlcyAtIHdpdGhvdXRfcGF0Y2hfcmVwZWF0
X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMudW5pb24od2l0aG91dF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vt
YWlsX2Zvcl9pbmZyYXN0cnVjdHVyZV9pc3N1ZSgnVGhlIHN0ZXAgImxheW91dC10ZXN0cy1yZXBl
YXQtZmFpbHVyZXMtd2l0aC1wYXRjaCIgcmVhY2hlZCB0aGUgdGltZW91dCBidXQgdGhlIHN0ZXAg
ImxheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1wYXRjaCIgZW5kZWQuIE5vdCB0
cnlpbmcgdG8gcmVwZWF0IHRoaXMuIFJlcG9ydGluZyB7fSBmYWlsdXJlcyBmcm9tIHRoZSBmaXJz
dCBydW4uJy5mb3JtYXQobGVuKGxpa2VseV9uZXdfbm9uX2ZsYWt5X2ZhaWx1cmVzKSkpCisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShsaWtlbHlfbmV3X25vbl9mbGFreV9m
YWlsdXJlcywgZmlyc3RfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCkKKworICAgICAgICAj
IFRoZSBzdGVwIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzIGdlbmVyYXRlZCBubyBsaXN0IG9m
IGZhaWx1cmVzIG9yIGZsYWtpZXMsIHdoaWNoIHNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHRoZSBy
ZXR1cm4gY29kZSBvZiB0aGUgc3RlcCBpcyBTVUNFU1Mgb3IgV0FSTklOR1MuCisgICAgICAgIGlm
IG5vdCB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVz
IGFuZCBub3Qgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzOgorICAg
ICAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29kZSA9IHNlbGYuZ2V0UHJv
cGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3JldGNvZGUnLCBGQUlMVVJFKQorICAg
ICAgICAgICAgaWYgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29kZSBub3QgaW4gW1NV
Q0NFU1MsIFdBUk5JTkdTXToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfaW5m
cmFzdHJ1Y3R1cmVfaXNzdWVfYW5kX21heWJlX3JldHJ5X2J1aWxkKCdUaGUgc3RlcCAibGF5b3V0
LXRlc3RzLXJlcGVhdC1mYWlsdXJlcyIgZmFpbGVkIHRvIGdlbmVyYXRlIGFueSBsaXN0IG9mIGZh
aWx1cmVzIG9yIGZsYWtpZXMgYW5kIHJldHVybmVkIGFuIGVycm9yIGNvZGUuJykKKworICAgICAg
ICAjIFdhcm4gRVdTIGJvdCB3YXRjaGVycyBhYm91dCBmbGFraWVzCisgICAgICAgIGFsbF9mbGFr
eV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9mbGFraWVzLnVuaW9uKHdpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfZmxha2llcykudW5pb24od2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVy
ZXNfcmVzdWx0c19mbGFraWVzKQorICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBpbiBhbGxfZmxh
a3lfZmFpbHVyZXM6CisgICAgICAgICAgICBzdGVwX25hbWVzID0gW10KKyAgICAgICAgICAgIGlm
IGZsYWt5X2ZhaWx1cmUgaW4gd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19m
bGFraWVzOgorICAgICAgICAgICAgICAgIHN0ZXBfbmFtZXMuYXBwZW5kKCdsYXlvdXQtdGVzdHMt
cmVwZWF0LWZhaWx1cmVzLXdpdGhvdXQtcGF0Y2gnKQorICAgICAgICAgICAgaWYgZmxha3lfZmFp
bHVyZSBpbiB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXM6CisgICAg
ICAgICAgICAgICAgc3RlcF9uYW1lcy5hcHBlbmQoJ2xheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVy
ZXMgKHdpdGggcGF0Y2gpJykKKyAgICAgICAgICAgIGlmIGZsYWt5X2ZhaWx1cmUgaW4gZmlyc3Rf
cnVuX2ZsYWtpZXM6CisgICAgICAgICAgICAgICAgc3RlcF9uYW1lcy5hcHBlbmQoJ2xheW91dC10
ZXN0cyAod2l0aCBwYXRjaCknKQorICAgICAgICAgICAgc3RlcF9uYW1lc19zdHIgPSAnInt9Iicu
Zm9ybWF0KCciLCAiJy5qb2luKHN0ZXBfbmFtZXMpKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vt
YWlsX2Zvcl9mbGFreV9mYWlsdXJlKGZsYWt5X2ZhaWx1cmUsIHN0ZXBfbmFtZXNfc3RyKQorCisg
ICAgICAgICMgV2FybiBFV1MgYm90IHdhdGNoZXJzIGFib3V0IHByZS1leGlzdGVudCBub24tZmxh
a3kgZmFpbHVyZXMgKGlmIGFueSksIGJ1dAorICAgICAgICAjIHNlbmQgb25seSBvbmUgZS1tYWls
IHdpdGggYWxsIHRoZSB0ZXN0cyB0byBhdm9pZCBzZW5kaW5nIHRvbyBtdWNoIGUtbWFpbHMuCisg
ICAgICAgIHByZV9leGlzdGVudF9ub25fZmxha3lfZmFpbHVyZXMgPSB3aXRob3V0X3BhdGNoX3Jl
cGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzIC0gd2l0aF9wYXRjaF9yZXBl
YXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcy51bmlvbihhbGxfZmxha3lfZmFp
bHVyZXMpCisgICAgICAgIGlmIHByZV9leGlzdGVudF9ub25fZmxha3lfZmFpbHVyZXM6CisgICAg
ICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX3ByZV9leGlzdGVudF9mYWlsdXJlcyhwcmVfZXhp
c3RlbnRfbm9uX2ZsYWt5X2ZhaWx1cmVzKQorCisgICAgICAgICMgRmluYWxseSBjaGVjayBpZiB0
aGVyZSBhcmUgbmV3IGNvbnNpdGVudCAobm9uLWZsYWt5KSBmYWlsdXJlcyBjYXVzZWQgYnkgdGhl
IHBhdGNoIGFuZCB3YXJuIHRoZSBwYXRjaCBhdXRob3Igc2V0dHRpbmcgdGhlIHN0YXR1cyBmb3Ig
dGhlIGJ1aWxkLgorICAgICAgICBuZXdfbm9uX2ZsYWt5X2ZhaWx1cmVzID0gd2l0aF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcyAtIHdpdGhvdXRfcGF0Y2hf
cmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMudW5pb24od2l0aG91dF9w
YXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzKQorICAgICAgICBpZiBuZXdfbm9u
X2ZsYWt5X2ZhaWx1cmVzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUo
bmV3X25vbl9mbGFreV9mYWlsdXJlcywgZmlyc3RfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1p
dCkKKworICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfc3VjY2VzcygpCisKKwogY2xhc3MgQXJj
aGl2ZUJ1aWx0UHJvZHVjdChzaGVsbC5TaGVsbENvbW1hbmQpOgogICAgIGNvbW1hbmQgPSBbJ3B5
dGhvbjMnLCAnVG9vbHMvQ0lTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsCiAgICAgICAg
ICAgICAgICBXaXRoUHJvcGVydGllcygnLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzJyksIFdp
dGhQcm9wZXJ0aWVzKCctLSUoY29uZmlndXJhdGlvbilzJyksICdhcmNoaXZlJ10KZGlmZiAtLWdp
dCBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkgYi9Ub29scy9D
SVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5CmluZGV4IGM4YzI2MmUxNTQxZDRi
ZjlhMWM3NTk1OWNlM2ZjY2JkODYxNTFkMGIuLmIxODkwNjU5ODllYzA4NDVjMmNlOTYzMzM1Mjhk
ZTQ3ZTcwNDBlMGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNf
dW5pdHRlc3QucHkKKysrIGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwc191bml0dGVz
dC5weQpAQCAtNTMsNyArNTMsOCBAQCBmcm9tIHN0ZXBzIGltcG9ydCAoQW5hbHl6ZUFQSVRlc3Rz
UmVzdWx0cywgQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRzLCBBbmFseXplSgogICAgICAgICAg
ICAgICAgICAgIFJ1bkJ1aWxkYm90Q2hlY2tDb25maWdGb3JCdWlsZFdlYktpdCwgUnVuQnVpbGRi
b3RDaGVja0NvbmZpZ0ZvckVXUywgUnVuRVdTVW5pdFRlc3RzLCBSdW5SZXN1bHRzZGJweVRlc3Rz
LAogICAgICAgICAgICAgICAgICAgIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMsIFJ1bkpTQ1Rlc3Rz
V2l0aG91dFBhdGNoLCBSdW5XZWJLaXQxVGVzdHMsIFJ1bldlYktpdFBlcmxUZXN0cywgUnVuV2Vi
S2l0UHlQeXRob24yVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgUnVuV2ViS2l0UHlQeXRob24z
VGVzdHMsIFJ1bldlYktpdFRlc3RzLCBSdW5XZWJLaXRUZXN0c0luU3RyZXNzTW9kZSwgUnVuV2Vi
S2l0VGVzdHNJblN0cmVzc0d1YXJkbWFsbG9jTW9kZSwKLSAgICAgICAgICAgICAgICAgICBSdW5X
ZWJLaXRUZXN0c1dpdGhvdXRQYXRjaCwgVGVzdFdpdGhGYWlsdXJlQ291bnQsIFNob3dJZGVudGlm
aWVyLAorICAgICAgICAgICAgICAgICAgIFJ1bldlYktpdFRlc3RzV2l0aG91dFBhdGNoLCBSdW5X
ZWJLaXRUZXN0c1JlZFRyZWUsIFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVlLCBS
dW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzV2l0aG91dFBhdGNoUmVkVHJlZSwKKyAgICAgICAg
ICAgICAgICAgICBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaFJlZFRyZWUsIEFuYWx5emVMYXlv
dXRUZXN0c1Jlc3VsdHNSZWRUcmVlLCBUZXN0V2l0aEZhaWx1cmVDb3VudCwgU2hvd0lkZW50aWZp
ZXIsCiAgICAgICAgICAgICAgICAgICAgVHJpZ2dlciwgVHJhbnNmZXJUb1MzLCBVbkFwcGx5UGF0
Y2hJZlJlcXVpcmVkLCBVcGRhdGVXb3JraW5nRGlyZWN0b3J5LCBVcGxvYWRCdWlsdFByb2R1Y3Qs
CiAgICAgICAgICAgICAgICAgICAgVXBsb2FkVGVzdFJlc3VsdHMsIFZhbGlkYXRlQ2hhbmdlTG9n
QW5kUmV2aWV3ZXIsIFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlciwgVmFsaWRhdGVQYXRjaCwg
VmVyaWZ5R2l0SHViSW50ZWdyaXR5KQogCkBAIC0xNjAxLDggKzE2MDIsOCBAQCBjbGFzcyBUZXN0
QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2Zh
aWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0
cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19j
bGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcycsIFtdKQotICAgICAgICBBbmFseXplSlNDVGVzdHNS
ZXN1bHRzLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUgPSBsYW1iZGEgc2VsZiwgdGVzdDog
Tm9uZQotICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX3ByZV9l
eGlzdGluZ19mYWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKKyAgICAgICAgQW5hbHl6
ZUpTQ1Rlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0gbGFtYmRhICph
cmdzOiBOb25lCisgICAgICAgIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3Jf
cHJlX2V4aXN0aW5nX2ZhaWx1cmUgPSBsYW1iZGEgKmFyZ3M6IE5vbmUKIAogICAgIGRlZiB0ZXN0
X3NpbmdsZV9uZXdfc3RyZXNzX2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJl
U3RlcCgpCkBAIC0xOTUxLDcgKzE5NTIsNyBAQCBjbGFzcyBUZXN0UmVSdW5XZWJLaXRUZXN0cyhU
ZXN0UnVuV2ViS2l0VGVzdHMpOgogICAgICAgICBzZWxmLnNldHVwU3RlcChSZVJ1bldlYktpdFRl
c3RzKCkpCiAgICAgICAgIHNlbGYucHJvcGVydHlfZXhjZWVkX2ZhaWx1cmVfbGltaXQgPSAnc2Vj
b25kX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnCiAgICAgICAgIHNlbGYucHJvcGVydHlf
ZmFpbHVyZXMgPSAnc2Vjb25kX3J1bl9mYWlsdXJlcycKLSAgICAgICAgUmVSdW5XZWJLaXRUZXN0
cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUK
KyAgICAgICAgUmVSdW5XZWJLaXRUZXN0cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0g
bGFtYmRhICphcmdzOiBOb25lCiAKICAgICBkZWYgdGVzdF9mbGFreV9mYWlsdXJlc19pbl9maXJz
dF9ydW4oc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCkBAIC0yMzUxLDggKzIz
NTIsOCBAQCBjbGFzcyBUZXN0QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhp
bkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICByZXR1cm4gc2VsZi50ZWFy
RG93bkJ1aWxkU3RlcCgpCiAKICAgICBkZWYgY29uZmlndXJlU3RlcChzZWxmKToKLSAgICAgICAg
QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0g
bGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKLSAgICAgICAgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0
cy5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVyZSA9IGxhbWJkYSBzZWxmLCB0ZXN0
OiBOb25lCisgICAgICAgIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3Jf
Zmxha3lfZmFpbHVyZSA9IGxhbWJkYSAqYXJnczogTm9uZQorICAgICAgICBBbmFseXplTGF5b3V0
VGVzdHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX3ByZV9leGlzdGluZ19mYWlsdXJlID0gbGFtYmRh
ICphcmdzOiBOb25lCiAgICAgICAgIHNlbGYuc2V0dXBTdGVwKEFuYWx5emVMYXlvdXRUZXN0c1Jl
c3VsdHMoKSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcmVzdWx0c19leGNlZWRf
ZmFpbHVyZV9saW1pdCcsIEZhbHNlKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRf
cmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIEZhbHNlKQpAQCAtMjU0Myw2ICsyNTQ0LDMz
MiBAQCBjbGFzcyBUZXN0QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFk
ZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKIAogCitjbGFzcyBUZXN0UnVuV2ViS2l0VGVzdHNSZWRUcmVlKEJ1aWxkU3RlcE1peGluQWRk
aXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg
ICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQorICAgICAgICBzZWxmLmpzb25GaWxlTmFtZSA9ICds
YXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJworICAgICAgICByZXR1cm4gc2Vs
Zi5zZXRVcEJ1aWxkU3RlcCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKKworICAgIGRlZiBjb25maWd1cmVTdGVwKHNl
bGYpOgorICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJLaXRUZXN0c1JlZFRyZWUoKSkKKwor
ICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CisgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgp
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdndGsnKQorICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQorICAgICAgICBz
ZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAorICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rp
cj0nd2tkaXInLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2Vs
Zi5qc29uRmlsZU5hbWV9LAorICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxz
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1idWlsZCcsICctLW5vLXNo
b3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1yZXN1
bHRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXJlbGVhc2UnLCAnLS1y
ZXN1bHRzLWRpcmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywgJy0tZGVidWctcnd0LWxv
Z2dpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZXhpdC1hZnRlci1u
LWZhaWx1cmVzJywgJzUwMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddCisgICAgICAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICArIDAsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQg
dGVzdHMnKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworCitjbGFzcyBUZXN0UnVu
V2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1JlZFRyZWUoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMs
IHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYu
bG9uZ01lc3NhZ2UgPSBUcnVlCisgICAgICAgIHNlbGYuanNvbkZpbGVOYW1lID0gJ2xheW91dC10
ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nCisgICAgICAgIHJldHVybiBzZWxmLnNldFVw
QnVpbGRTdGVwKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl
bGYudGVhckRvd25CdWlsZFN0ZXAoKQorCisgICAgZGVmIGNvbmZpZ3VyZVN0ZXAoc2VsZik6Cisg
ICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVl
KCkpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3Vy
ZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAg
ICAgICAgZmlyc3RfcnVuX2ZhaWx1cmVzID0gWydmYXN0L2Nzcy90ZXN0MS5odG1sJywgJ2ltcG9y
dGVkL3Rlc3QvdGVzdDIuaHRtbCcsICdmYXN0L3N2Zy90ZXN0My5zdmcnXQorICAgICAgICBmaXJz
dF9ydW5fZmxha2llcyA9IFsnZmFzdC9jc3MvZmxha3kxLmh0bWwnLCAnaW1wb3J0ZWQvdGVzdC9m
bGFreTIuaHRtbCcsICdmYXN0L3N2Zy9mbGFreTMuc3ZnJ10KKyAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgZmlyc3RfcnVuX2ZhaWx1cmVzKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIGZpcnN0X3J1bl9mbGFraWVzKQor
ICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAorICAgICAgICAgICAgRXhwZWN0U2hl
bGwod29ya2Rpcj0nd2tkaXInLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydq
c29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAorICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52
aXJvbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heFRpbWU9MTgwMDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tYnVpbGQnLCAnLS1uby1zaG93LXJlc3Vs
dHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywgJy0tY2xvYmJlci1vbGQtcmVzdWx0cycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1yZWxlYXNlJywgJy0tcmVzdWx0cy1k
aXJlY3RvcnknLCAnbGF5b3V0LXRlc3QtcmVzdWx0cycsICctLWRlYnVnLXJ3dC1sb2dnaW5nJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXNraXAtZmFpbGluZy10ZXN0cycs
ICctLXJlcGVhdC1lYWNoPTEwJ10gKyBzb3J0ZWQoZmlyc3RfcnVuX2ZhaWx1cmVzKQorICAgICAg
ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKyAwLAorICAgICAgICApCisgICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdsYXlvdXQt
dGVzdHMnKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworCitjbGFzcyBUZXN0UnVu
V2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1dpdGhvdXRQYXRjaFJlZFRyZWUoQnVpbGRTdGVwTWl4
aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6Cisg
ICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCisgICAgICAgIHNlbGYuanNvbkZpbGVOYW1l
ID0gJ2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nCisgICAgICAgIHJldHVy
biBzZWxmLnNldFVwQnVpbGRTdGVwKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQorCisgICAgZGVmIGNvbmZpZ3VyZVN0
ZXAoc2VsZik6CisgICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFp
bHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlKCkpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYp
OgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmln
dXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgZmlyc3RfcnVuX2ZhaWx1cmVzID0gWydmYXN0
L2Nzcy90ZXN0MS5odG1sJywgJ2ltcG9ydGVkL3Rlc3QvdGVzdDIuaHRtbCcsICdmYXN0L3N2Zy90
ZXN0My5zdmcnXQorICAgICAgICBmaXJzdF9ydW5fZmxha2llcyA9IFsnZmFzdC9jc3MvZmxha3kx
Lmh0bWwnLCAnaW1wb3J0ZWQvdGVzdC9mbGFreTIuaHRtbCcsICdmYXN0L3N2Zy9mbGFreTMuc3Zn
J10KKyAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9m
YWlsdXJlcyA9IFsnZmFzdC9jc3MvdGVzdDEuaHRtbCddCisgICAgICAgIHdpdGhfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcyA9IFsnaW1wb3J0ZWQvdGVzdC90ZXN0Mi5odG1s
JywgJ2Zhc3Qvc3ZnL3Rlc3QzLnN2ZyddCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0
X3J1bl9mYWlsdXJlcycsIGZpcnN0X3J1bl9mYWlsdXJlcykKKyAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBmaXJzdF9ydW5fZmxha2llcykKKyAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFr
eV9mYWlsdXJlcycsIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lf
ZmFpbHVyZXMpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfZmxha2llcykKKyAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKKyAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhUaW1l
PTEwODAwLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRl
c3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLWJ1aWxkJywgJy0t
bm8tc2hvdy1yZXN1bHRzJywgJy0tbm8tbmV3LXRlc3QtcmVzdWx0cycsICctLWNsb2JiZXItb2xk
LXJlc3VsdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcmVsZWFzZScs
ICctLXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1y
d3QtbG9nZ2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1za2lwLWZh
aWxpbmctdGVzdHMnLCAnLS1yZXBlYXQtZWFjaD0xMCcsICctLXNraXBwZWQ9YWx3YXlzJ10gKyBz
b3J0ZWQod2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJl
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICsgMCwKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmlu
Zz0nbGF5b3V0LXRlc3RzJykKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBk
ZWYgdGVzdF9zdGVwX3dpdGhfcGF0Y2hfZGlkX3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYu
Y29uZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScs
ICdndGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVh
c2UnKQorICAgICAgICBmaXJzdF9ydW5fZmFpbHVyZXMgPSBbJ2Zhc3QvY3NzL3Rlc3QxLmh0bWwn
LCAnaW1wb3J0ZWQvdGVzdC90ZXN0Mi5odG1sJywgJ2Zhc3Qvc3ZnL3Rlc3QzLnN2ZyddCisgICAg
ICAgIGZpcnN0X3J1bl9mbGFraWVzID0gWydmYXN0L2Nzcy9mbGFreTEuaHRtbCcsICdpbXBvcnRl
ZC90ZXN0L2ZsYWt5Mi5odG1sJywgJ2Zhc3Qvc3ZnL2ZsYWt5My5zdmcnXQorICAgICAgICB3aXRo
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzID0gWydmYXN0
L2Nzcy90ZXN0MS5odG1sJ10KKyAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVz
dWx0c19mbGFraWVzID0gWydpbXBvcnRlZC90ZXN0L3Rlc3QyLmh0bWwnLCAnZmFzdC9zdmcvdGVz
dDMuc3ZnJ10KKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywg
Zmlyc3RfcnVuX2ZhaWx1cmVzKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5f
Zmxha2llcycsIGZpcnN0X3J1bl9mbGFraWVzKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3
aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgd2l0
aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcykKKyAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19m
bGFraWVzJywgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzKQorICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91
dCcsIFRydWUpCisgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCisgICAgICAgICAg
ICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCisgICAgICAgICAgICAgICAgICAgICAgICBs
b2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBsb2dFbnZpcm9uPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4VGltZT0x
MDgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1idWlsZCcsICctLW5v
LXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1y
ZXN1bHRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXJlbGVhc2UnLCAn
LS1yZXN1bHRzLWRpcmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywgJy0tZGVidWctcnd0
LWxvZ2dpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tc2tpcC1mYWls
aW5nLXRlc3RzJywgJy0tcmVwZWF0LWVhY2g9MTAnLCAnLS1za2lwcGVkPWFsd2F5cyddICsgc29y
dGVkKGZpcnN0X3J1bl9mYWlsdXJlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICsgMCwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0
PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nbGF5b3V0LXRlc3RzJykKKyAgICAgICAgcmV0dXJuIHNl
bGYucnVuU3RlcCgpCisKKworY2xhc3MgVGVzdEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHNSZWRU
cmVlKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVm
IHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQorICAgICAgICBy
ZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKKworICAgIGRlZiBjb25maWd1
cmVTdGVwKHNlbGYpOgorICAgICAgICBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzLnNlbmRfZW1h
aWxfZm9yX2ZsYWt5X2ZhaWx1cmUgPSBsYW1iZGEgKmFyZ3M6IE5vbmUKKyAgICAgICAgQW5hbHl6
ZUxheW91dFRlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVyZSA9
IGxhbWJkYSAqYXJnczogTm9uZQorICAgICAgICBzZWxmLnNldHVwU3RlcChBbmFseXplTGF5b3V0
VGVzdHNSZXN1bHRzUmVkVHJlZSgpKQorCisgICAgZGVmIHRlc3RfZmFpbHVyZV9pbnRyb2R1Y2Vk
X2J5X3BhdGNoX2NsZWFuX3RyZWVfZ3JlZW4oc2VsZik6CisgICAgICAgIHNlbGYuY29uZmlndXJl
U3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdndGsnKQor
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQorICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbInRlc3QvZmFpbHVy
ZTEuaHRtbCIsICJ0ZXN0L2ZhaWx1cmUyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBbInRlc3QvZmxha3kxLmh0bWwiLCAidGVzdC9mbGFreTIu
aHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWls
dXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiXSkK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVz
dWx0c19mbGFraWVzJywgWyJ0ZXN0L2ZhaWx1cmUyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9m
YWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3Jl
cGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5
Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0
ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IHRlc3QgZmFpbHVyZTogdGVzdC9mYWlsdXJlMS5odG1sIChm
YWlsdXJlKScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVmIHRlc3Rf
ZmFpbHVyZV9pbnRyb2R1Y2VkX2J5X3BhdGNoX2NsZWFuX3RyZWVfcmVkKHNlbGYpOgorICAgICAg
ICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxh
dGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbics
ICdyZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVz
JywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9mYWlsdXJlMi5odG1sIiwgInRlc3QvcHJl
LWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0p
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2Zs
YWt5MS5odG1sIiwgInRlc3QvZmxha3kyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycs
IFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIs
ICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFsidGVzdC9m
YWlsdXJlMi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hf
cmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3QvcHJlLWV4
aXN0ZW50L2ZhaWx1cmUuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvcHJlLWV4aXN0
ZW50L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlM
VVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IHRlc3QgZmFpbHVyZTogdGVzdC9mYWlsdXJl
MS5odG1sIChmYWlsdXJlKScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAg
ZGVmIHRlc3RfcHJlX2V4aXN0ZW50X2ZhaWx1cmVzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZp
Z3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMn
LCBbInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9m
bGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVz
JywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9m
bGFreTMuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVh
dF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L3ByZS1leGlzdGVu
dC9mYWlsdXJlLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFr
eS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0
X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3QvcHJlLWV4aXN0ZW50
L2ZhaWx1cmUuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNo
X3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbXSkKKyAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVz
dHMnKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3ByZV9l
eGlzdGVudF9mbGFraWVzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbInRlc3QvcHJlLWV4
aXN0ZW50L2ZsYWt5MS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1
bl9mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreTIuaHRtbCIsICJ0ZXN0L3ByZS1l
eGlzdGVudC9mbGFreTMuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgW10pCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNf
Zmxha2llcycsIFsidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kxLmh0bWwiXSkKKyAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25m
bGFreV9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbXSkKKyAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQg
dGVzdHMnKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X2Zp
cnN0X3N0ZXBfZ2l2ZXNfdW5leHBlY3RlZF9mYWlsdXJlX2FuZF9jbGVhbl90cmVlX3Bhc3Moc2Vs
Zik6CisgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2Z1bGxQbGF0Zm9ybScsICdndGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25m
aWd1cmF0aW9uJywgJ3JlbGVhc2UnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9y
dW5fZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2Zs
YWtpZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fZmFp
bHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fZmxh
a2llcycsIFsndGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCddKQorICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9zdGF0dXMnLCBXQVJOSU5HUykKKyAgICAgICAgc2Vs
Zi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIHVuZXhw
ZWN0ZWQgZmFpbHVyZSB3aXRoIHBhdGNoIChmYWlsdXJlKScpCisgICAgICAgIHJldHVybiBzZWxm
LnJ1blN0ZXAoKQorCisgICAgZGVmIHRlc3RfZmlyc3Rfc3RlcF9naXZlc191bmV4cGVjdGVkX2Zh
aWx1cmVfYW5kX2NsZWFuX3RyZWVfdW5leHBlY3RlZF9mYWlsdXJlKHNlbGYpOgorICAgICAgICBz
ZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZv
cm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdy
ZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywg
W10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgW10pCisg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgW10pCisg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZsYWtpZXMnLCBbXSkKKyAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVSRSkK
KyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1SRVRSWSwgc3RhdGVfc3RyaW5nPSdV
bmV4cGVjdGVkIGluZnJhc3RydWN0dXJlIGlzc3VlOiBUaGUgbGF5b3V0LXRlc3QgcnVuIHdpdGgg
cGF0Y2ggZ2VuZXJhdGVkIG5vIGxpc3Qgb2YgcmVzdWx0cyBidXQgZXhpdGVkIHdpdGggZXJyb3Is
IGFuZCB0aGUgY2xlYW5fdHJlZSB3aXRob3V0IHBhdGNoIHJ1biBkaWQgdGhlIHNhbWV0aGluZy5c
blJldHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChyZXRyeSknKQorICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0ZXBfcmV0cnlfd2l0aF9w
YXRjaF9leGl0c19lYXJseV9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVw
KCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5o
dG1sIiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0
bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0L2Zs
YWt5Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0
X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRt
bCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQv
Zmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVh
dF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvZmFpbHVyZTIuaHRtbCJdKQorICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1
bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwi
XSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVy
ZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCBUcnVlKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNv
bWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUg
aXNzdWU6IE9uZSBvZiB0aGUgc3RlcHMgZm9yIHJldHJ5aW5nIHRoZSBmYWlsZWQgdGVzdHMgaGFz
IGV4aXRlZCBlYXJseSwgYnV0IHRoaXMgc3RlcHMgc2hvdWxkIHJ1biB3aXRob3V0ICItLWV4aXQt
YWZ0ZXItbi1mYWlsdXJlcyIgc3dpdGNoLCBzbyB0aGV5IHNob3VsZCBub3QgZXhpdCBlYXJseS5c
blJldHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChyZXRyeSknKQorICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0ZXBfcmV0cnlfd2l0aG91
dF9wYXRjaF9leGl0c19lYXJseV9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVT
dGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJl
MS5odG1sIiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJl
Lmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0
L2ZsYWt5Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3QvZmFpbHVyZTEu
aHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3Rl
bnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3Jl
cGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvZmFpbHVyZTIuaHRtbCJdKQor
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19y
ZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0
bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFp
bHVyZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0p
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVz
X3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCBUcnVlKQorICAgICAgICBzZWxmLmV4cGVj
dE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1
Y3R1cmUgaXNzdWU6IE9uZSBvZiB0aGUgc3RlcHMgZm9yIHJldHJ5aW5nIHRoZSBmYWlsZWQgdGVz
dHMgaGFzIGV4aXRlZCBlYXJseSwgYnV0IHRoaXMgc3RlcHMgc2hvdWxkIHJ1biB3aXRob3V0ICIt
LWV4aXQtYWZ0ZXItbi1mYWlsdXJlcyIgc3dpdGNoLCBzbyB0aGV5IHNob3VsZCBub3QgZXhpdCBl
YXJseS5cblJldHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChyZXRyeSknKQor
ICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0ZXBfcmV0cnlf
d2l0aF9wYXRjaF90aW1lb3V0cyhzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1s
IiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwi
LCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0L2ZsYWt5
Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3RpbWVkb3V0JywgVHJ1ZSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91
dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFsidGVz
dC9wcmUtZXhpc3RlbnQvZmFpbHVyZS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFsidGVzdC9w
cmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMiBuZXcgdGVzdCBmYWlsdXJlczogdGVz
dC9mYWlsdXJlMS5odG1sLCB0ZXN0L2ZhaWx1cmUyLmh0bWwgKGZhaWx1cmUpJykKKyAgICAgICAg
cmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBkZWYgdGVzdF9zdGVwX3JldHJ5X3dpdGhfcGF0
Y2hfdW5leHBlY3RlZF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1s
IiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwi
LCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0L2ZsYWt5
Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0
X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVz
JywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1
cmVzX3JldGNvZGUnLCBGQUlMVVJFKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0
PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWU6IFRo
ZSBzdGVwICJsYXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVzIiBmYWlsZWQgdG8gZ2VuZXJhdGUg
YW55IGxpc3Qgb2YgZmFpbHVyZXMgb3IgZmxha2llcyBhbmQgcmV0dXJuZWQgYW4gZXJyb3IgY29k
ZS5cblJldHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChyZXRyeSknKQorICAg
ICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0ZXBfcmV0cnlfd2l0
aG91dF9wYXRjaF90aW1lb3V0cyhzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1s
IiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwi
LCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0L2ZsYWt5
Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3RpbWVkb3V0JywgVHJ1ZSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91
dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBUcnVlKQorICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFz
dHJ1Y3R1cmUgaXNzdWU6IFRoZSBzdGVwICJsYXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVzLXdp
dGhvdXQtcGF0Y2giIHdhcyBpbnRlcnJ1bXBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIHRpbWVv
dXQuXG5SZXRyeWluZyBidWlsZCBbcmV0cnkgY291bnQgaXMgMCBvZiAzXSAocmV0cnkpJykKKyAg
ICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBkZWYgdGVzdF9zdGVwX3JldHJ5X3dp
dGhfcGF0Y2hfdGltZW91dHNfYW5kX3dpdGhvdXRfcGF0Y2hfdGltZW91dHMoc2VsZik6CisgICAg
ICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQ
bGF0Zm9ybScsICdndGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9u
JywgJ3JlbGVhc2UnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVy
ZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L2ZhaWx1cmUyLmh0bWwiLCAidGVzdC9w
cmUtZXhpc3RlbnQvZmFpbHVyZS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0bWwi
XSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBbInRlc3Qv
Zmxha3kxLmh0bWwiLCAidGVzdC9mbGFreTIuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVz
JywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmFpbHVyZS5odG1s
IiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0ZXN0
L2ZhaWx1cmUyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRj
aF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBUcnVlKQorICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1
cmUgaXNzdWU6IFRoZSBzdGVwICJsYXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVzLXdpdGhvdXQt
cGF0Y2giIHdhcyBpbnRlcnJ1bXBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIHRpbWVvdXQuXG5S
ZXRyeWluZyBidWlsZCBbcmV0cnkgY291bnQgaXMgMCBvZiAzXSAocmV0cnkpJykKKyAgICAgICAg
cmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBkZWYgdGVzdF9yZXRyeV90aGlyZF90aW1lKHNl
bGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29u
ZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3Rf
cnVuX2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9mYWlsdXJlMi5odG1s
IiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9m
bGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVz
JywgWyJ0ZXN0L2ZsYWt5MS5odG1sIiwgInRlc3QvZmxha3kyLmh0bWwiXSkKKyAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFr
eV9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2Zh
aWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2ll
cycsIFsidGVzdC9mYWlsdXJlMi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dp
dGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0JywgVHJ1ZSkKKyAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgncmV0cnlfY291bnQnLCAyKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNv
bWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUg
aXNzdWU6IFRoZSBzdGVwICJsYXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVzLXdpdGhvdXQtcGF0
Y2giIHdhcyBpbnRlcnJ1bXBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIHRpbWVvdXQuXG5SZXRy
eWluZyBidWlsZCBbcmV0cnkgY291bnQgaXMgMiBvZiAzXSAocmV0cnkpJykKKyAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBkZWYgdGVzdF9yZXRyeV9maW5pc2goc2VsZik6Cisg
ICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1
bGxQbGF0Zm9ybScsICdndGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0
aW9uJywgJ3JlbGVhc2UnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFp
bHVyZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L2ZhaWx1cmUyLmh0bWwiLCAidGVz
dC9wcmUtZXhpc3RlbnQvZmFpbHVyZS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0
bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBbInRl
c3QvZmxha3kxLmh0bWwiLCAidGVzdC9mbGFreTIuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1
cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmFpbHVyZS5o
dG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0
ZXN0L2ZhaWx1cmUyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9w
YXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBUcnVlKQorICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdyZXRyeV9jb3VudCcsIDMpCisgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9V0FSTklOR1MsIHN0YXRlX3N0cmluZz0nVGhlIHN0ZXAgImxheW91dC10ZXN0cy1yZXBlYXQt
ZmFpbHVyZXMtd2l0aG91dC1wYXRjaCIgd2FzIGludGVycnVtcGVkIGJlY2F1c2UgaXQgcmVhY2hl
ZCB0aGUgdGltZW91dC5cblJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgKDMp
LiBVbmFibGUgdG8gZGV0ZXJtaW5lIGlmIHBhdGNoIGlzIGJhZCBvciB0aGVyZSBpcyBhIHByZS1l
eGlzdGVudCBpbmZyYXN0cnVjdHVyZSBpc3N1ZS4gKHdhcm5pbmdzKScpCisgICAgICAgIHJldHVy
biBzZWxmLnJ1blN0ZXAoKQorCisKIGNsYXNzIFRlc3RDaGVja091dFNwZWNpZmljUmV2aXNpb24o
QnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0
VXAoc2VsZik6CiAgICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441844</attachid>
            <date>2021-10-19 20:59:33 -0700</date>
            <delta_ts>2021-11-11 11:23:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231999-20211020045846.patch</filename>
            <type>text/plain</type>
            <size>67315</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTEwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2YzZTA0ZWFhZDY1NTZkZTdiMzIyNjM1ODNiZmMzYTc5
N2YwZTJhNy4uMTIzYjY2ZDk2MjIxZDJiNDA3MzdkYzc4ZGMyMzUzMGY1MTJjODNlMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgw
IEBACisyMDIxLTEwLTE5ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtFV1NdW0dUS11bV1BFXSBBZGQgYSBuZXcgQ2xhc3MgZm9yIHJ1
bm5pbmcgbGF5b3V0IHRlc3RzIG9uIHRoZSBFV1MgZm9yIHRoZSBHVEsgYW5kIFdQRSBwb3J0cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTk5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBhIG5ldyBjbGFzcyB0byB0aGUgRVdTIGZvciBydW5uaW5nIGxheW91dCB0ZXN0cyBm
b3IgdGhlIEdUSyBhbmQgV1BFIHBvcnRzLgorICAgICAgICBJdCB3aWxsIGJlIHVzZWQgaW5pdGlh
bGx5IGZvciB0aGUgR1RLIHBvcnQgYW5kIGxhdGVyIGZvciB0aGUgV1BFIG9uZS4KKyAgICAgICAg
TWFjL2lPUyBwb3J0cyB3aWxsIGNvbnRpbnVlIHRvIHVzZSB0aGUgY3VycmVudCBkZWZhdWx0IEVX
Uywgc28gbm8gYmVoYXZpb3VyIGNoYW5nZSBmb3IgdGhlbS4KKworICAgICAgICBUaGlzIG5ldyBj
bGFzcyBpcyBzcGVjaWFsbHkgZGVzaWduZWQgdG86CisgICAgICAgIEEuIFdvcmsgd2l0aCBhIHRy
ZWUgdGhhdCBpcyBub3QgYWx3YXlzIGdyZWVuIChvciBldmVuIHRoYXQgaXMgb2Z0ZW4gcXVpdGUg
cmVkKS4KKyAgICAgICAgQi4gVG8gbm90IHJlcG9ydCBhbnkgZmFsc2UgcG9zaXRpdmUgdG8gdGhl
IHBhdGNoIGF1dGhvci4KKyAgICAgICAgQy4gVG8gYWxsb3cgcGF0Y2ggYXV0aG9ycyB0byB1c2Ug
dGhpcyBFV1MgdG8gZ2V0IG5ldyBleHBlY3RhdGlvbnMgZm9yIHBhdGNoZXMgdGhhdCBuZWVkIGxv
dCBvZiBuZXcgcmUtYmFzZWxpbmVzIChsaWtlIGEgV1BUIGltcG9ydCkKKworICAgICAgICBUaGUg
dmVyeSBzaW1wbGlmaWVkIGxvZ2ljIG9mIGhvdyB0aGlzIHdvcmtzIGlzIHRoZSBmb2xsb3dpbmc6
CisgICAgICAgIDEuIFJ1biBsYXlvdXQgdGVzdHMgd2l0aCBwYXRjaCAoYWJvcnQgZWFybHkgYXQg
NTAwIHVuZXhwZWN0ZWQgZmFpbHVyZXMpCisgICAgICAgIDIuIFJ1biBsYXlvdXQgdGVzdHMgd2l0
aCBwYXRjaCAxMCB0aW1lcyBmb3IgZWFjaCB0ZXN0IHRoYXQgZmFpbGVkIGNvbnNpc3RlbnRseSAo
bm9uLWZsYWt5KSBvbiBzdGVwIDEuCisgICAgICAgIDMuIFJ1biBsYXlvdXQgdGVzdHMgd2l0aG91
dCBwYXRjaCAxMCB0aW1lcyBmb3IgZWFjaCB0ZXN0IHRoYXQgZmFpbGVkIGNvbnNpc3RlbnRseSAo
bm9uLWZsYWt5KSBvbiBzdGVwIDIuCisKKyAgICAgICAgVGhlbiByZXBvcnQgdG8gdGhlIHBhdGNo
IGF1dGhvciBvbmx5IHRoZSBuZXcgY29uc2lzdGVudCBmYWlsdXJlcyAodGVzdHMgdGhhdCBmYWls
ZWQgYWx3YXlzIHdpdGggdGhlIHBhdGNoIGFuZCBwYXNzZWQgYWx3YXlzIHdpdGhvdXQgdGhlIHBh
dGNoLCByZXRyeWluZyAxMCB0aW1lcykKKyAgICAgICAgQW55IGZsYWt5IHRlc3QgZm91bmQgaXMg
b25seSByZXBvcnRlZCB0byB0aGUgYm90IHdhdGNoZXJzLgorCisgICAgICAgIEZvciBhbiBleHBs
YWluZXIgYWJvdXQgd2h5IHRoaXMgaXMgbmVlZGVkLCBhbmQgbW9yZSBkZXRhaWxzIGFib3V0IHRo
ZSBmbG93IGRpYWdyYW0gYW5kIHNldmVyYWwgZGVzaWduIGNvbnNpZGVyYXRpb25zLCBwbGVhc2Ug
Y2hlY2s6CisgICAgICAgIGh0dHBzOi8vcGVvcGxlLmlnYWxpYS5jb20vY2xvcGV6L3drYnVnLzIz
MTk5OS9leHBsYWluZXIuaHRtbAorCisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9jb25m
aWcuanNvbjoKKyAgICAgICAgKiBDSVN1cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weToKKyAg
ICAgICAgKEdUS1Rlc3RzRmFjdG9yeSk6CisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9s
YXlvdXRfdGVzdF9mYWlsdXJlcy5weToKKyAgICAgICAgKExheW91dFRlc3RGYWlsdXJlcy5fX2lu
aXRfXyk6CisgICAgICAgIChMYXlvdXRUZXN0RmFpbHVyZXMucmVzdWx0c19mcm9tX3N0cmluZyk6
CisgICAgICAgIChMYXlvdXRUZXN0RmFpbHVyZXMucmVzdWx0c19mcm9tX3N0cmluZy5nZXRfZmFp
bGluZ190ZXN0cyk6CisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weToKKyAg
ICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyKToKKyAgICAgICAgKEJ1ZmZlckxvZ0hlYWRl
ck9ic2VydmVyLl9faW5pdF9fKToKKyAgICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyLmhl
YWRlclJlY2VpdmVkKToKKyAgICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyLmdldEhlYWRl
cnMpOgorICAgICAgICAoQnVnemlsbGFNaXhpbi5zZW5kX2VtYWlsX2Zvcl9pbmZyYXN0cnVjdHVy
ZV9pc3N1ZSk6CisgICAgICAgIChUcmlnZ2VyLnByb3BlcnRpZXNUb1Bhc3NUb1RyaWdnZXJzKToK
KyAgICAgICAgKFJ1bldlYktpdFRlc3RzLnNldExheW91dFRlc3RDb21tYW5kKToKKyAgICAgICAg
KFJ1bldlYktpdFRlc3RzLnN0YXJ0KToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzLmNvbW1hbmRD
b21wbGV0ZSk6CisgICAgICAgIChSZVJ1bldlYktpdFRlc3RzLmV2YWx1YXRlQ29tbWFuZCk6Cisg
ICAgICAgIChSZVJ1bldlYktpdFRlc3RzLmNvbW1hbmRDb21wbGV0ZSk6CisgICAgICAgIChSdW5X
ZWJLaXRUZXN0c1dpdGhvdXRQYXRjaC5jb21tYW5kQ29tcGxldGUpOgorICAgICAgICAoQW5hbHl6
ZUxheW91dFRlc3RzUmVzdWx0cy5yZXBvcnRfZmFpbHVyZSk6CisgICAgICAgIChBbmFseXplTGF5
b3V0VGVzdHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUpOgorICAgICAgICAo
QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9uZXdfdGVzdF9mYWlsdXJl
cyk6CisgICAgICAgIChBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzLnN0YXJ0KToKKyAgICAgICAg
KFJ1bldlYktpdDFUZXN0cy5zdGFydCk6CisgICAgICAgIChSdW5XZWJLaXRUZXN0c1JlZFRyZWUp
OgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZWRUcmVlLl9kaWRfY29tbWFuZF90aW1lZF9vdXQp
OgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZWRUcmVlLmV2YWx1YXRlQ29tbWFuZCk6CisgICAg
ICAgIChSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZSk6CisgICAgICAgIChSdW5X
ZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZS5fX2luaXRfXyk6CisgICAgICAgIChSdW5X
ZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZS5zZXRMYXlvdXRUZXN0Q29tbWFuZCk6Cisg
ICAgICAgIChSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZS5ldmFsdWF0ZUNvbW1h
bmQpOgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1JlZFRyZWUuY29tbWFu
ZENvbXBsZXRlKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVl
LnN0YXJ0KToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0
Y2hSZWRUcmVlKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0
UGF0Y2hSZWRUcmVlLl9faW5pdF9fKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFp
bHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlLnNldExheW91dFRlc3RDb21tYW5kKToKKyAgICAgICAg
KFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlLmV2YWx1YXRl
Q29tbWFuZCk6CisgICAgICAgIChSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzV2l0aG91dFBh
dGNoUmVkVHJlZS5jb21tYW5kQ29tcGxldGUpOgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZXBl
YXRGYWlsdXJlc1dpdGhvdXRQYXRjaFJlZFRyZWUuc3RhcnQpOgorICAgICAgICAoUnVuV2ViS2l0
VGVzdHNXaXRob3V0UGF0Y2hSZWRUcmVlKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzV2l0aG91
dFBhdGNoUmVkVHJlZS5ldmFsdWF0ZUNvbW1hbmQpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRl
c3RzUmVzdWx0c1JlZFRyZWUpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1Jl
ZFRyZWUucmVwb3J0X3N1Y2Nlc3MpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0
c1JlZFRyZWUucmVwb3J0X3dhcm5pbmcpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVz
dWx0c1JlZFRyZWUucmVwb3J0X2luZnJhc3RydWN0dXJlX2lzc3VlX2FuZF9tYXliZV9yZXRyeV9i
dWlsZCk6CisgICAgICAgIChBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzUmVkVHJlZS5zZW5kX2Vt
YWlsX2Zvcl9wcmVfZXhpc3RlbnRfZmFpbHVyZXMpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRl
c3RzUmVzdWx0c1JlZFRyZWUuc3RhcnQpOgorICAgICAgICAqIENJU3VwcG9ydC9ld3MtYnVpbGQv
c3RlcHNfdW5pdHRlc3QucHk6CisKIDIwMjEtMTAtMTkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRh
cmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gT3ZlcnJpZGUgaHR0cCB1cmwg
d2l0aCBzc2ggdXJsCmRpZmYgLS1naXQgYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2NvbmZp
Zy5qc29uIGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9jb25maWcuanNvbgppbmRleCA0OTM1
MDNiM2UwYWEyNjFkNTllYzNiNzg3ZGU4YmFmMTUwMDdhYWI4Li4xMWE4NDU5ZTE2YzI2NzQ2MTE4
Njg3NjU0OTBhYTdhNTcxYzc4MmQ3IDEwMDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1
aWxkL2NvbmZpZy5qc29uCisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvY29uZmlnLmpz
b24KQEAgLTEwOCwxMyArMTA4LDE0IEBACiAgICAgICAibmFtZSI6ICJHVEstQnVpbGQtRVdTIiwg
InNob3J0bmFtZSI6ICJndGsiLCAiaWNvbiI6ICJidWlsZE9ubHkiLAogICAgICAgImZhY3Rvcnki
OiAiR1RLQnVpbGRGYWN0b3J5IiwgInBsYXRmb3JtIjogImd0ayIsCiAgICAgICAiY29uZmlndXJh
dGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgInRy
aWdnZXJzIjogWyJhcGktdGVzdHMtZ3RrLWV3cyJdLAorICAgICAgInRyaWdnZXJzIjogWyJhcGkt
dGVzdHMtZ3RrLWV3cyIsICJndGstd2syLXRlc3RzLWV3cyJdLAogICAgICAgIndvcmtlcm5hbWVz
IjogWyJpZ2FsaWExLWd0ay13azItZXdzIiwgImlnYWxpYTItZ3RrLXdrMi1ld3MiLCAiYXBlcmV6
LWd0ay1ld3MiXQogICAgIH0sCiAgICAgewogICAgICAgIm5hbWUiOiAiR1RLLVdLMi1UZXN0cy1F
V1MiLCAic2hvcnRuYW1lIjogImd0ay13azIiLCAiaWNvbiI6ICJ0ZXN0T25seSIsCiAgICAgICAi
ZmFjdG9yeSI6ICJHVEtUZXN0c0ZhY3RvcnkiLCAicGxhdGZvcm0iOiAiZ3RrIiwKICAgICAgICJj
b25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCisg
ICAgICAidHJpZ2dlcmVkX2J5IjogWyJndGstYnVpbGQtZXdzIl0sCiAgICAgICAid29ya2VybmFt
ZXMiOiBbImlnYWxpYTUtZ3RrLXdrMi1ld3MiLCAiaWdhbGlhNi1ndGstd2syLWV3cyIsICJpZ2Fs
aWE3LWd0ay13azItZXdzIiwgImlnYWxpYTgtZ3RrLXdrMi1ld3MiLCAiaWdhbGlhOS1ndGstd2sy
LWV3cyJdCiAgICAgfSwKICAgICB7CkBAIC0zMDcsNiArMzA4LDcgQEAKICAgICAgICJuYW1lIjog
IkFQSS1UZXN0cy1HVEstRVdTIiwgInNob3J0bmFtZSI6ICJhcGktZ3RrIiwgImljb24iOiAidGVz
dE9ubHkiLAogICAgICAgImZhY3RvcnkiOiAiQVBJVGVzdHNGYWN0b3J5IiwgInBsYXRmb3JtIjog
Imd0ayIsCiAgICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMi
OiBbIng4Nl82NCJdLAorICAgICAgInRyaWdnZXJlZF9ieSI6IFsiZ3RrLWJ1aWxkLWV3cyJdLAog
ICAgICAgIndvcmtlcm5hbWVzIjogWyJpZ2FsaWEzLWd0ay13azItZXdzIiwgImlnYWxpYTQtZ3Rr
LXdrMi1ld3MiXQogICAgIH0sCiAgICAgewpAQCAtMzg0LDEyICszODYsMTYgQEAKICAgICAgICJ0
eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiYXBpLXRlc3RzLW1hYy1ld3MiLAogICAgICAg
ImJ1aWxkZXJOYW1lcyI6IFsiQVBJLVRlc3RzLW1hY09TLUVXUyJdCiAgICAgfSwKKyAgICB7Cisg
ICAgICAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImd0ay1idWlsZC1ld3MiLAorICAg
ICAgImJ1aWxkZXJOYW1lcyI6IFsiR1RLLUJ1aWxkLUVXUyJdCisgICAgfSwKICAgICB7CiAgICAg
ICAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImFwaS10ZXN0cy1ndGstZXdzIiwKICAg
ICAgICJidWlsZGVyTmFtZXMiOiBbIkFQSS1UZXN0cy1HVEstRVdTIl0KICAgICB9LAogICAgIHsK
LSAgICAgICJ0eXBlIjogIlRyeV9Vc2VycGFzcyIsICJuYW1lIjogImd0ay13azItdGVzdHMtZXdz
LWRpc2FibGVkIiwgInBvcnQiOiA1NTU4LAorICAgICAgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAi
bmFtZSI6ICJndGstd2syLXRlc3RzLWV3cyIsCiAgICAgICAiYnVpbGRlck5hbWVzIjogWyJHVEst
V0syLVRlc3RzLUVXUyJdCiAgICAgfSwKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9DSVN1cHBv
cnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weSBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvZmFj
dG9yaWVzLnB5CmluZGV4IGQ4ZTk4MGZhMDMwZGEzMzJkZWFkZTVhZmVjMTIzMjgwZWFkZGM0ODQu
LmVmOWQxMmMxYjU4OTlkYWE3OTE4YTA1NWM3OTk1YmJjMzI5YTdjZTYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvZmFjdG9yaWVzLnB5CisrKyBiL1Rvb2xzL0NJU3VwcG9y
dC9ld3MtYnVpbGQvZmFjdG9yaWVzLnB5CkBAIC0zMCw3ICszMCw3IEBAIGZyb20gc3RlcHMgaW1w
b3J0IChBcHBseVBhdGNoLCBBcHBseVdhdGNoTGlzdCwgQ2hlY2tPdXRTb3VyY2UsIENoZWNrT3V0
U3BlY2lmaWNSCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbEd0a0RlcGVuZGVuY2llcywgSW5z
dGFsbFdwZURlcGVuZGVuY2llcywgS2lsbE9sZFByb2Nlc3NlcywgUHJpbnRDb25maWd1cmF0aW9u
LCBQdXNoQ29tbWl0VG9XZWJLaXRSZXBvLAogICAgICAgICAgICAgICAgICAgIFJ1bkFQSVRlc3Rz
LCBSdW5CaW5kaW5nc1Rlc3RzLCBSdW5CdWlsZFdlYktpdE9yZ1VuaXRUZXN0cywgUnVuQnVpbGRi
b3RDaGVja0NvbmZpZ0ZvckJ1aWxkV2ViS2l0LCBSdW5CdWlsZGJvdENoZWNrQ29uZmlnRm9yRVdT
LAogICAgICAgICAgICAgICAgICAgIFJ1bkVXU1VuaXRUZXN0cywgUnVuUmVzdWx0c2RicHlUZXN0
cywgUnVuSmF2YVNjcmlwdENvcmVUZXN0cywgUnVuV2ViS2l0MVRlc3RzLCBSdW5XZWJLaXRQZXJs
VGVzdHMsIFJ1bldlYktpdFB5UHl0aG9uMlRlc3RzLAotICAgICAgICAgICAgICAgICAgIFJ1bldl
YktpdFB5UHl0aG9uM1Rlc3RzLCBSdW5XZWJLaXRUZXN0cywgUnVuV2ViS2l0VGVzdHNJblN0cmVz
c01vZGUsIFJ1bldlYktpdFRlc3RzSW5TdHJlc3NHdWFyZG1hbGxvY01vZGUsCisgICAgICAgICAg
ICAgICAgICAgUnVuV2ViS2l0UHlQeXRob24zVGVzdHMsIFJ1bldlYktpdFRlc3RzLCBSdW5XZWJL
aXRUZXN0c1JlZFRyZWUsIFJ1bldlYktpdFRlc3RzSW5TdHJlc3NNb2RlLCBSdW5XZWJLaXRUZXN0
c0luU3RyZXNzR3VhcmRtYWxsb2NNb2RlLAogICAgICAgICAgICAgICAgICAgIFNldEJ1aWxkU3Vt
bWFyeSwgU2hvd0lkZW50aWZpZXIsIFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24sIFVwZGF0ZVdv
cmtpbmdEaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCwgVmFsaWRh
dGVDaGFuZ2VMb2dBbmRSZXZpZXdlciwgVmFsaWRhdGVDb21taXRlckFuZFJldmlld2VyLCBXYWl0
Rm9yQ3Jhc2hDb2xsZWN0aW9uLAogICAgICAgICAgICAgICAgICAgIEluc3RhbGxCdWlsdFByb2R1
Y3QsIFZlcmlmeUdpdEh1YkludGVncml0eSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCBjbGFzcyBHVEtC
dWlsZEZhY3RvcnkoQnVpbGRGYWN0b3J5KToKIAogCiBjbGFzcyBHVEtUZXN0c0ZhY3RvcnkoVGVz
dEZhY3RvcnkpOgotICAgIExheW91dFRlc3RDbGFzcyA9IFJ1bldlYktpdFRlc3RzCisgICAgTGF5
b3V0VGVzdENsYXNzID0gUnVuV2ViS2l0VGVzdHNSZWRUcmVlCiAKIAogY2xhc3MgV1BFRmFjdG9y
eShGYWN0b3J5KToKZGlmZiAtLWdpdCBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvbGF5b3V0
X3Rlc3RfZmFpbHVyZXMucHkgYi9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2xheW91dF90ZXN0
X2ZhaWx1cmVzLnB5CmluZGV4IDExN2YzOTEwOGY1NTUyNmE4OTdjOTAyMzY2Zjk3MzBhY2U1Yzll
OGUuLjI2OGI2NGFjOTAyNzJiYTI5MzY5NWYzODU4MzExM2NiYTg2MGQ4ZjIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvbGF5b3V0X3Rlc3RfZmFpbHVyZXMucHkKKysrIGIv
VG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9sYXlvdXRfdGVzdF9mYWlsdXJlcy5weQpAQCAtMjcs
OCArMjcsOSBAQCBjbGFzcyBMYXlvdXRUZXN0RmFpbHVyZXMob2JqZWN0KToKICAgICBfSlNPTl9Q
UkVGSVggPSAiQUREX1JFU1VMVFMoIgogICAgIF9KU09OX1NVRkZJWCA9ICIpOyIKIAotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBmYWlsaW5nX3Rlc3RzLCBkaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9s
aW1pdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhaWxpbmdfdGVzdHMsIGZsYWt5X3Rlc3Rz
LCBkaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCk6CiAgICAgICAgIHNlbGYuZmFpbGluZ190
ZXN0cyA9IGZhaWxpbmdfdGVzdHMKKyAgICAgICAgc2VsZi5mbGFreV90ZXN0cyA9IGZsYWt5X3Rl
c3RzCiAgICAgICAgIHNlbGYuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQgPSBkaWRfZXhj
ZWVkX3Rlc3RfZmFpbHVyZV9saW1pdAogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC01NiwxMyArNTcs
MTYgQEAgY2xhc3MgTGF5b3V0VGVzdEZhaWx1cmVzKG9iamVjdCk6CiAgICAgICAgIGpzb25fZGlj
dCA9IGpzb24ubG9hZHMoY29udGVudF9zdHJpbmcpCiAKICAgICAgICAgZmFpbGluZ190ZXN0cyA9
IFtdCisgICAgICAgIGZsYWt5X3Rlc3RzID0gW10KIAogICAgICAgICBkZWYgZ2V0X2ZhaWxpbmdf
dGVzdHModGVzdCwgcmVzdWx0KToKICAgICAgICAgICAgIGlmIHJlc3VsdC5nZXQoJ3JlcG9ydCcp
IGluIFsnUkVHUkVTU0lPTicsICdNSVNTSU5HJ106CiAgICAgICAgICAgICAgICAgZmFpbGluZ190
ZXN0cy5hcHBlbmQodGVzdCkKKyAgICAgICAgICAgIGVsaWYgcmVzdWx0LmdldCgncmVwb3J0Jykg
aW4gWydGTEFLWSddOgorICAgICAgICAgICAgICAgIGZsYWt5X3Rlc3RzLmFwcGVuZCh0ZXN0KQog
CiAgICAgICAgIGNscy5wYXJzZV9mdWxsX3Jlc3VsdHNfanNvbihqc29uX2RpY3RbJ3Rlc3RzJ10s
IGdldF9mYWlsaW5nX3Rlc3RzKQotICAgICAgICByZXR1cm4gY2xzKGZhaWxpbmdfdGVzdHMsIGpz
b25fZGljdC5nZXQoJ2ludGVycnVwdGVkJywgRmFsc2UpKQorICAgICAgICByZXR1cm4gY2xzKGZh
aWxpbmdfdGVzdHMsIGZsYWt5X3Rlc3RzLCBqc29uX2RpY3QuZ2V0KCdpbnRlcnJ1cHRlZCcsIEZh
bHNlKSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBwYXJzZV9mdWxsX3Jlc3VsdHNfanNv
bihjbHMsIHRyZWUsIGhhbmRsZXIsIHByZWZpeD0nJyk6CmRpZmYgLS1naXQgYS9Ub29scy9DSVN1
cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5IGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVw
cy5weQppbmRleCBjNWNjMjRlYTdkY2UxN2VhOTk1NWY0NzE3ZjVjZGNjNjIwZmM2OTYzLi5iNTlj
NDljZmYyN2ZjMmI3Njc3NjI3MWIzNmRiNmM1YzNmMDYyMDc0IDEwMDY0NAotLS0gYS9Ub29scy9D
SVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5CisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVp
bGQvc3RlcHMucHkKQEAgLTU2LDYgKzU2LDE5IEBAIFdpdGhQcm9wZXJ0aWVzID0gcHJvcGVydGll
cy5XaXRoUHJvcGVydGllcwogSW50ZXJwb2xhdGUgPSBwcm9wZXJ0aWVzLkludGVycG9sYXRlCiAK
IAorY2xhc3MgQnVmZmVyTG9nSGVhZGVyT2JzZXJ2ZXIobG9nb2JzZXJ2ZXIuQnVmZmVyTG9nT2Jz
ZXJ2ZXIpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgc2Vs
Zi5oZWFkZXJzID0gW10KKyAgICAgICAgc3VwZXIoQnVmZmVyTG9nSGVhZGVyT2JzZXJ2ZXIsIHNl
bGYpLl9faW5pdF9fKCoqa3dhcmdzKQorCisgICAgZGVmIGhlYWRlclJlY2VpdmVkKHNlbGYsIGRh
dGEpOgorICAgICAgICBzZWxmLmhlYWRlcnMuYXBwZW5kKGRhdGEpCisKKyAgICBkZWYgZ2V0SGVh
ZGVycyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dldChzZWxmLmhlYWRlcnMpCisKKwog
Y2xhc3MgQ29uZmlndXJlQnVpbGQoYnVpbGRzdGVwLkJ1aWxkU3RlcCk6CiAgICAgbmFtZSA9ICdj
b25maWd1cmUtYnVpbGQnCiAgICAgZGVzY3JpcHRpb24gPSBbJ2NvbmZpZ3VyaW5nIGJ1aWxkJ10K
QEAgLTczNCw2ICs3NDcsMjEgQEAgY2xhc3MgQnVnemlsbGFNaXhpbihvYmplY3QpOgogICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyAgICBkZWYgc2VuZF9l
bWFpbF9mb3JfaW5mcmFzdHJ1Y3R1cmVfaXNzdWUoc2VsZiwgaW5mcmFzdHJ1Y3R1cmVfaXNzdWVf
dGV4dCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IHNlbGYuZ2V0
UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJycpCisgICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNl
bGYuZ2V0UHJvcGVydHkoJ3dvcmtlcm5hbWUnLCAnJykKKyAgICAgICAgICAgIGJ1aWxkX3VybCA9
ICd7fSMvYnVpbGRlcnMve30vYnVpbGRzL3t9Jy5mb3JtYXQoc2VsZi5tYXN0ZXIuY29uZmlnLmJ1
aWxkYm90VVJMLCBzZWxmLmJ1aWxkLl9idWlsZGVyaWQsIHNlbGYuYnVpbGQubnVtYmVyKQorICAg
ICAgICAgICAgZW1haWxfc3ViamVjdCA9ICdJbmZyYXN0cnVjdHVyZSBpc3N1ZSBhdCB7fScuZm9y
bWF0KGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgICAgIGVtYWlsX3RleHQgPSAnVGhlIGZvbGxvd2lu
ZyBpbmZyYXN0cnVjdHVyZSBpc3N1ZSBoYXBwZW5lZCBhdDpcblxuJworICAgICAgICAgICAgZW1h
aWxfdGV4dCArPSAnICAgIC0gQnVpbGQgOiB7fVxuJy5mb3JtYXQoYnVpbGRfdXJsKQorICAgICAg
ICAgICAgZW1haWxfdGV4dCArPSAnICAgIC0gQnVpbGRlciA6IHt9XG4nLmZvcm1hdChidWlsZGVy
X25hbWUpCisgICAgICAgICAgICBlbWFpbF90ZXh0ICs9ICcgICAgLSBXb3JrZXIgOiB7fVxuJy5m
b3JtYXQod29ya2VyX25hbWUpCisgICAgICAgICAgICBlbWFpbF90ZXh0ICs9ICcgICAgLSBJc3N1
ZToge31cbicuZm9ybWF0KGluZnJhc3RydWN0dXJlX2lzc3VlX3RleHQpCisgICAgICAgICAgICBz
ZW5kX2VtYWlsX3RvX2JvdF93YXRjaGVycyhlbWFpbF9zdWJqZWN0LCBlbWFpbF90ZXh0LCBidWls
ZGVyX25hbWUsICdpbmZyYXN0cnVjdHVyZS17fScuZm9ybWF0KGJ1aWxkZXJfbmFtZSkpCisgICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHByaW50KCdFcnJvciBpbiBz
ZW5kaW5nIGVtYWlsIGZvciBpbmZyYXN0cnVjdHVyZSBpc3N1ZToge30nLmZvcm1hdChlKSkKKwog
ICAgIGRlZiBnZXRfYnVnemlsbGFfYXBpX2tleShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAg
ICAgICAgcGFzc3dvcmRzID0ganNvbi5sb2FkKG9wZW4oJ3Bhc3N3b3Jkcy5qc29uJykpCkBAIC0x
MTcwLDYgKzExOTgsNyBAQCBjbGFzcyBUcmlnZ2VyKHRyaWdnZXIuVHJpZ2dlcik6CiAgICAgICAg
ICAgICBwcm9wZXJ0aWVzX3RvX3Bhc3NbJ2V3c19yZXZpc2lvbiddID0gcHJvcGVydGllcy5Qcm9w
ZXJ0eSgnZ290X3JldmlzaW9uJykKICAgICAgICAgaWYgc2VsZi50cmlnZ2VyczoKICAgICAgICAg
ICAgIHByb3BlcnRpZXNfdG9fcGFzc1sndHJpZ2dlcnMnXSA9IHNlbGYudHJpZ2dlcnMKKyAgICAg
ICAgcHJvcGVydGllc190b19wYXNzWydyZXRyeV9jb3VudCddID0gcHJvcGVydGllcy5Qcm9wZXJ0
eSgncmV0cnlfY291bnQnLCBkZWZhdWx0PTApCiAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzX3Rv
X3Bhc3MKIAogCkBAIC0yMjEwLDcgKzIyMzksOSBAQCBjbGFzcyBSdW5XZWJLaXRUZXN0cyhzaGVs
bC5UZXN0KToKICAgICAgICAgaWYgcGF0Y2hfYXV0aG9yIGluIFsnd2Via2l0LXdwdC1pbXBvcnQt
Ym90QGlnYWxpYS5jb20nXToKICAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1h
bmQgKyBbJ2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMnXSkKICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tZXhpdC1hZnRl
ci1uLWZhaWx1cmVzJywgc2VsZi5FWElUX0FGVEVSX0ZBSUxVUkVTLCAnLS1za2lwLWZhaWxpbmct
dGVzdHMnXSkKKyAgICAgICAgICAgIGlmIHNlbGYuRVhJVF9BRlRFUl9GQUlMVVJFUyBpcyBub3Qg
Tm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyct
LWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycsICd7fScuZm9ybWF0KHNlbGYuRVhJVF9BRlRFUl9GQUlM
VVJFUyldKQorICAgICAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnLS1z
a2lwLWZhaWxpbmctdGVzdHMnXSkKIAogICAgICAgICBpZiBhZGRpdGlvbmFsQXJndW1lbnRzOgog
ICAgICAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIGFkZGl0aW9uYWxBcmd1
bWVudHMpCkBAIC0yMjQzLDggKzIyNzQsOCBAQCBjbGFzcyBSdW5XZWJLaXRUZXN0cyhzaGVsbC5U
ZXN0KToKICAgICAgICAgICAgICAgICAgICAgbGlzdF9yZXRyeV90ZXN0cyA9IHNvcnRlZChmaXJz
dF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMudW5pb24oc2Vjb25kX3Jlc3VsdHNfZmFpbGluZ190ZXN0
cykpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBs
aXN0X3JldHJ5X3Rlc3RzKQogCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLmxv
Z19vYnNlcnZlciA9IGxvZ29ic2VydmVyLkJ1ZmZlckxvZ09ic2VydmVyKHdhbnRTdGRlcnI9VHJ1
ZSkKKyAgICBkZWYgc3RhcnQoc2VsZiwgQnVmZmVyTG9nT2JzZXJ2ZXJDbGFzcz1sb2dvYnNlcnZl
ci5CdWZmZXJMb2dPYnNlcnZlcik6CisgICAgICAgIHNlbGYubG9nX29ic2VydmVyID0gQnVmZmVy
TG9nT2JzZXJ2ZXJDbGFzcyh3YW50U3RkZXJyPVRydWUpCiAgICAgICAgIHNlbGYuYWRkTG9nT2Jz
ZXJ2ZXIoJ3N0ZGlvJywgc2VsZi5sb2dfb2JzZXJ2ZXIpCiAgICAgICAgIHNlbGYubG9nX29ic2Vy
dmVyX2pzb24gPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcigpCiAgICAgICAgIHNlbGYu
YWRkTG9nT2JzZXJ2ZXIoJ2pzb24nLCBzZWxmLmxvZ19vYnNlcnZlcl9qc29uKQpAQCAtMjMwNiw2
ICsyMzM3LDcgQEAgY2xhc3MgUnVuV2ViS2l0VGVzdHMoc2hlbGwuVGVzdCk6CiAgICAgICAgIGlm
IGZpcnN0X3Jlc3VsdHM6CiAgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9yZXN1
bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgZmlyc3RfcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3Rf
ZmFpbHVyZV9saW1pdCkKICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9m
YWlsdXJlcycsIHNvcnRlZChmaXJzdF9yZXN1bHRzLmZhaWxpbmdfdGVzdHMpKQorICAgICAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBzb3J0ZWQoZmlyc3RfcmVz
dWx0cy5mbGFreV90ZXN0cykpCiAgICAgICAgICAgICBpZiBmaXJzdF9yZXN1bHRzLmZhaWxpbmdf
dGVzdHM6CiAgICAgICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coc2VsZi50ZXN0X2ZhaWx1cmVz
X2xvZ19uYW1lLCAnXG4nLmpvaW4oZmlyc3RfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKSkKICAgICAg
ICAgc2VsZi5fcGFyc2VSdW5XZWJLaXRUZXN0c091dHB1dChsb2dUZXh0KQpAQCAtMjQxNyw2ICsy
NDQ5LDcgQEAgY2xhc3MgUmVSdW5XZWJLaXRUZXN0cyhSdW5XZWJLaXRUZXN0cyk6CiAgICAgICAg
IGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdmaXJz
dF9ydW5fZmFpbHVyZXMnLCBbXSkpCiAgICAgICAgIHNlY29uZF9yZXN1bHRzX2RpZF9leGNlZWRf
dGVzdF9mYWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnc2Vjb25kX3Jlc3VsdHNfZXhj
ZWVkX2ZhaWx1cmVfbGltaXQnKQogICAgICAgICBzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3Rz
ID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmFpbHVyZXMnLCBbXSkpCisgICAg
ICAgICMgRklYTUU6IGhlcmUgaXQgY2FuIGJlIGEgZ29vZCBpZGVhIHRvIGFsc28gdXNlIHRoZSBp
bmZvIGZyb20gc2Vjb25kX3J1bl9mbGFraWVzIGFuZCBmaXJzdF9ydW5fZmxha2llcwogICAgICAg
ICB0ZXN0c190aGF0X2NvbnNpc3RlbnRseV9mYWlsZWQgPSBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdf
dGVzdHMuaW50ZXJzZWN0aW9uKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpCiAgICAgICAg
IGZsYWt5X2ZhaWx1cmVzID0gZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzLnVuaW9uKHNlY29u
ZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpIC0gZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzLmlu
dGVyc2VjdGlvbihzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKQogICAgICAgICBmbGFreV9m
YWlsdXJlcyA9IHNvcnRlZChsaXN0KGZsYWt5X2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVT
X1RPX0RJU1BMQVldCkBAIC0yNDU1LDYgKzI0ODgsNyBAQCBjbGFzcyBSZVJ1bldlYktpdFRlc3Rz
KFJ1bldlYktpdFRlc3RzKToKICAgICAgICAgaWYgc2Vjb25kX3Jlc3VsdHM6CiAgICAgICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcs
IHNlY29uZF9yZXN1bHRzLmRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0KQogICAgICAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIHNvcnRlZChzZWNvbmRf
cmVzdWx0cy5mYWlsaW5nX3Rlc3RzKSkKKyAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3Nl
Y29uZF9ydW5fZmxha2llcycsIHNvcnRlZChzZWNvbmRfcmVzdWx0cy5mbGFreV90ZXN0cykpCiAg
ICAgICAgICAgICBpZiBzZWNvbmRfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzOgogICAgICAgICAgICAg
ICAgIHNlbGYuX2FkZFRvTG9nKHNlbGYudGVzdF9mYWlsdXJlc19sb2dfbmFtZSwgJ1xuJy5qb2lu
KHNlY29uZF9yZXN1bHRzLmZhaWxpbmdfdGVzdHMpKQogICAgICAgICBzZWxmLl9wYXJzZVJ1bldl
YktpdFRlc3RzT3V0cHV0KGxvZ1RleHQpCkBAIC0yNDk0LDYgKzI1MjgsNyBAQCBjbGFzcyBSdW5X
ZWJLaXRUZXN0c1dpdGhvdXRQYXRjaChSdW5XZWJLaXRUZXN0cyk6CiAgICAgICAgIGlmIGNsZWFu
X3RyZWVfcmVzdWx0czoKICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVf
cmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIGNsZWFuX3RyZWVfcmVzdWx0cy5kaWRfZXhj
ZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCkKICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Ns
ZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgY2xlYW5fdHJlZV9yZXN1bHRzLmZhaWxpbmdfdGVzdHMp
CisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9mbGFraWVzJywg
c29ydGVkKGNsZWFuX3RyZWVfcmVzdWx0cy5mbGFreV90ZXN0cykpCiAgICAgICAgICAgICBpZiBj
bGVhbl90cmVlX3Jlc3VsdHMuZmFpbGluZ190ZXN0czoKICAgICAgICAgICAgICAgICBzZWxmLl9h
ZGRUb0xvZyhzZWxmLnRlc3RfZmFpbHVyZXNfbG9nX25hbWUsICdcbicuam9pbihjbGVhbl90cmVl
X3Jlc3VsdHMuZmFpbGluZ190ZXN0cykpCiAgICAgICAgIHNlbGYuX3BhcnNlUnVuV2ViS2l0VGVz
dHNPdXRwdXQobG9nVGV4dCkKQEAgLTI1MDUsMTggKzI1NDAsMjIgQEAgY2xhc3MgQW5hbHl6ZUxh
eW91dFRlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRTdGVwLCBCdWd6aWxsYU1peGluKToKICAg
ICBkZXNjcmlwdGlvbkRvbmUgPSBbJ2FuYWx5emUtbGF5b3V0LXRlc3RzLXJlc3VsdHMnXQogICAg
IE5VTV9GQUlMVVJFU19UT19ESVNQTEFZID0gMTAKIAotICAgIGRlZiByZXBvcnRfZmFpbHVyZShz
ZWxmLCBuZXdfZmFpbHVyZXMpOgorICAgIGRlZiByZXBvcnRfZmFpbHVyZShzZWxmLCBuZXdfZmFp
bHVyZXMsIGV4Y2VlZF9mYWlsdXJlX2xpbWl0PUZhbHNlKToKICAgICAgICAgc2VsZi5maW5pc2hl
ZChGQUlMVVJFKQogICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBGQUlMVVJFCiAgICAgICAg
IGlmIG5vdCBuZXdfZmFpbHVyZXM6CiAgICAgICAgICAgICBtZXNzYWdlID0gJ0ZvdW5kIHVuZXhw
ZWN0ZWQgZmFpbHVyZSB3aXRoIHBhdGNoJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGx1
cmFsU3VmZml4ID0gJ3MnIGlmIGxlbihuZXdfZmFpbHVyZXMpID4gMSBlbHNlICcnCisgICAgICAg
ICAgICBpZiBleGNlZWRfZmFpbHVyZV9saW1pdDoKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0g
J0ZhaWx1cmUgbGltaXQgZXhjZWVkLiBBdCBsZWFzdCBmb3VuZCcKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdGb3VuZCcKICAgICAgICAgICAgIG5ld19mYWls
dXJlc19zdHJpbmcgPSAnLCAnLmpvaW4oc29ydGVkKG5ld19mYWlsdXJlcylbOnNlbGYuTlVNX0ZB
SUxVUkVTX1RPX0RJU1BMQVldKQotICAgICAgICAgICAgbWVzc2FnZSA9ICdGb3VuZCB7fSBuZXcg
dGVzdCBmYWlsdXJle306IHt9Jy5mb3JtYXQobGVuKG5ld19mYWlsdXJlcyksIHBsdXJhbFN1ZmZp
eCwgbmV3X2ZhaWx1cmVzX3N0cmluZykKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0gJyB7fSBuZXcg
dGVzdCBmYWlsdXJle306IHt9Jy5mb3JtYXQobGVuKG5ld19mYWlsdXJlcyksIHBsdXJhbFN1ZmZp
eCwgbmV3X2ZhaWx1cmVzX3N0cmluZykKICAgICAgICAgICAgIGlmIGxlbihuZXdfZmFpbHVyZXMp
ID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWToKICAgICAgICAgICAgICAgICBtZXNzYWdl
ICs9ICcgLi4uJwotICAgICAgICAgICAgc2VsZi5zZW5kX2VtYWlsX2Zvcl9uZXdfdGVzdF9mYWls
dXJlcyhuZXdfZmFpbHVyZXMpCisgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX25ld190
ZXN0X2ZhaWx1cmVzKG5ld19mYWlsdXJlcywgZXhjZWVkX2ZhaWx1cmVfbGltaXQpCiAgICAgICAg
IHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVzc2FnZQogICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdidWlsZF9maW5pc2hfc3VtbWFyeScsIG1lc3NhZ2UpCiAKQEAgLTI1NzMsNyArMjYxMiw3IEBA
IGNsYXNzIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVn
emlsbGFNaXhpbik6CiAgICAgZGVmIF9yZXN1bHRzX2ZhaWxlZF9kaWZmZXJlbnRfdGVzdHMoc2Vs
ZiwgZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzLCBzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rl
c3RzKToKICAgICAgICAgcmV0dXJuIGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cyAhPSBzZWNv
bmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzCiAKLSAgICBkZWYgc2VuZF9lbWFpbF9mb3JfZmxha3lf
ZmFpbHVyZShzZWxmLCB0ZXN0X25hbWUpOgorICAgIGRlZiBzZW5kX2VtYWlsX2Zvcl9mbGFreV9m
YWlsdXJlKHNlbGYsIHRlc3RfbmFtZSwgc3RlcF9zdHI9Tm9uZSk6CiAgICAgICAgIHRyeToKICAg
ICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywg
JycpCiAgICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3dvcmtlcm5h
bWUnLCAnJykKQEAgLTI1ODIsNiArMjYyMSw4IEBAIGNsYXNzIEFuYWx5emVMYXlvdXRUZXN0c1Jl
c3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6CiAKICAgICAgICAgICAg
IGVtYWlsX3N1YmplY3QgPSAnRmxha3kgdGVzdDoge30nLmZvcm1hdCh0ZXN0X25hbWUpCiAgICAg
ICAgICAgICBlbWFpbF90ZXh0ID0gJ0ZsYWt5IHRlc3Q6IHt9XG5cbkJ1aWxkOiB7fVxuXG5CdWls
ZGVyOiB7fVxuXG5Xb3JrZXI6IHt9XG5cbkhpc3Rvcnk6IHt9Jy5mb3JtYXQodGVzdF9uYW1lLCBi
dWlsZF91cmwsIGJ1aWxkZXJfbmFtZSwgd29ya2VyX25hbWUsIGhpc3RvcnlfdXJsKQorICAgICAg
ICAgICAgaWYgc3RlcF9zdHI6CisgICAgICAgICAgICAgICAgZW1haWxfdGV4dCArPSAnXG5UaGlz
IHRlc3Qgd2FzIGZsYWt5IG9uIHRoZSBzdGVwczoge30nLmZvcm1hdChzdGVwX3N0cikKICAgICAg
ICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3Rl
eHQsIGJ1aWxkZXJfbmFtZSwgJ2ZsYWt5LXt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKICAgICAgICAg
ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRp
bmcgZW1haWwgZm9yIGZsYWt5IGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCkBAIC0yNTk5LDcgKzI2
NDAsNyBAQCBjbGFzcyBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzKGJ1aWxkc3RlcC5CdWlsZFN0
ZXAsIEJ1Z3ppbGxhTWl4aW4pOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAg
ICAgICAgICBwcmludCgnRXJyb3IgaW4gc2VuZGluZyBlbWFpbCBmb3IgcHJlLWV4aXN0aW5nIGZh
aWx1cmU6IHt9Jy5mb3JtYXQoZSkpCiAKLSAgICBkZWYgc2VuZF9lbWFpbF9mb3JfbmV3X3Rlc3Rf
ZmFpbHVyZXMoc2VsZiwgdGVzdF9uYW1lcyk6CisgICAgZGVmIHNlbmRfZW1haWxfZm9yX25ld190
ZXN0X2ZhaWx1cmVzKHNlbGYsIHRlc3RfbmFtZXMsIGV4Y2VlZF9mYWlsdXJlX2xpbWl0PUZhbHNl
KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcGF0Y2hfaWQgPSBzZWxmLmdldFByb3BlcnR5
KCdwYXRjaF9pZCcsICcnKQogICAgICAgICAgICAgaWYgbm90IHNlbGYuc2hvdWxkX3NlbmRfZW1h
aWwocGF0Y2hfaWQpOgpAQCAtMjYyMSw2ICsyNjYyLDggQEAgY2xhc3MgQW5hbHl6ZUxheW91dFRl
c3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRTdGVwLCBCdWd6aWxsYU1peGluKToKICAgICAgICAg
ICAgIGVtYWlsX3RleHQgKz0gJyB3aGlsZSB0ZXN0aW5nIDxhIGhyZWY9Int9Ij5QYXRjaCB7fTwv
YT4nLmZvcm1hdChCdWd6aWxsYS5wYXRjaF91cmwocGF0Y2hfaWQpLCBwYXRjaF9pZCkKICAgICAg
ICAgICAgIGVtYWlsX3RleHQgKz0gJyBmb3IgPGEgaHJlZj0ie30iPkJ1ZyB7fTwvYT4uJy5mb3Jt
YXQoQnVnemlsbGEuYnVnX3VybChidWdfaWQpLCBidWdfaWQpCiAgICAgICAgICAgICBlbWFpbF90
ZXh0ICs9ICdcblxuRnVsbCBkZXRhaWxzIGFyZSBhdmFpbGFibGUgYXQ6IHt9XG5cblBhdGNoIGF1
dGhvcjoge30nLmZvcm1hdChidWlsZF91cmwsIHBhdGNoX2F1dGhvcikKKyAgICAgICAgICAgIGlm
IGV4Y2VlZF9mYWlsdXJlX2xpbWl0OgorICAgICAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJ1xu
XG5BZGl0aW9uYWxseSB0aGUgZmFpbHVyZSBsaW1pdCBoYXMgYmVlbiBleGNlZWRlZCwgc28gdGhl
IHRlc3Qgc3VpdGUgaGFzIGJlZW4gdGVybWluYXRlZCBlYXJseS4gSXQgaXMgbGlrZWx5IHRoYXQg
dGhlcmUgd291bGQgYmUgbW9yZSBmYWlsdXJlcyB0aGFuIHRoZSBvbmVzIGxpc3RlZCBiZWxvdy4n
CiAgICAgICAgICAgICBlbWFpbF90ZXh0ICs9ICdcblxuTGF5b3V0IHRlc3QgZmFpbHVyZXt9Olxu
e30nLmZvcm1hdChwbHVyYWxTdWZmaXgsIHRlc3RfbmFtZXNfc3RyaW5nKQogICAgICAgICAgICAg
ZW1haWxfdGV4dCArPSAnXG5cblRvIHVuc3Vic2NyaWJsZSBmcm9tIHRoZXNlIG5vdGlmaWNhdGlv
bnMgb3IgdG8gcHJvdmlkZSBhbnkgZmVlZGJhY2sgcGxlYXNlIGVtYWlsIGFha2FzaF9qYWluQGFw
cGxlLmNvbScKICAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdTZW5kaW5nIGVt
YWlsIG5vdGlmaWNhdGlvbiB0byB7fScuZm9ybWF0KHBhdGNoX2F1dGhvcikpCkBAIC0yNjQ3LDcg
KzI2OTAsNyBAQCBjbGFzcyBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzKGJ1aWxkc3RlcC5CdWls
ZFN0ZXAsIEJ1Z3ppbGxhTWl4aW4pOgogICAgICAgICAgICAgY2xlYW5fdHJlZV9ydW5fc3RhdHVz
ID0gc2VsZi5nZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVSRSkKICAg
ICAgICAgICAgIGlmIGNsZWFuX3RyZWVfcnVuX3N0YXR1cyA9PSBTVUNDRVNTOgogICAgICAgICAg
ICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKHNldCgpKQotICAgICAgICAgICAgIyBU
T0RPOiBlbWFpbCBFV1MgYWRtaW5zCisgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2lu
ZnJhc3RydWN0dXJlX2lzc3VlKCdCb3RoIGZpcnN0IGFuZCBzZWNvbmQgbGF5b3V0LXRlc3QgcnVu
cyB3aXRoIHBhdGNoIGdlbmVyYXRlZCBubyBsaXN0IG9mIHJlc3VsdHMgYnV0IGV4aXRlZCB3aXRo
IGVycm9yLCBhbmQgdGhlIGNsZWFuX3RyZWUgd2l0aG91dCBwYXRjaCByZXRyeSBhbHNvIGZhaWxl
ZC4nKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfYnVpbGQoJ1VuZXhwZWN0ZWQgaW5m
cmFzdHJ1Y3R1cmUgaXNzdWUsIHJldHJ5aW5nIGJ1aWxkJykKIAogICAgICAgICBpZiBmaXJzdF9y
ZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0IGFuZCBzZWNvbmRfcmVzdWx0c19k
aWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdDoKQEAgLTI2NzQsNiArMjcxNyw3IEBAIGNsYXNz
IEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFN
aXhpbik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmFpbHVy
ZXNfaW50cm9kdWNlZF9ieV9wYXRjaCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHJ5X2J1
aWxkKCkKIAorICAgICAgICAjIEZJWE1FOiBIZXJlIGl0IGNvdWxkIGJlIGEgZ29vZCBpZGVhIHRv
IGFsc28gdXNlIHRoZSBpbmZvIG9mIHJlc3VsdHMuZmxha3lfdGVzdHMgZnJvbSB0aGUgcnVucwog
ICAgICAgICBpZiBzZWxmLl9yZXN1bHRzX2ZhaWxlZF9kaWZmZXJlbnRfdGVzdHMoZmlyc3RfcmVz
dWx0c19mYWlsaW5nX3Rlc3RzLCBzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKToKICAgICAg
ICAgICAgIHRlc3RzX3RoYXRfb25seV9mYWlsZWRfZmlyc3QgPSBmaXJzdF9yZXN1bHRzX2ZhaWxp
bmdfdGVzdHMuZGlmZmVyZW5jZShzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKQogICAgICAg
ICAgICAgc2VsZi5fcmVwb3J0X2ZsYWt5X3Rlc3RzKHRlc3RzX3RoYXRfb25seV9mYWlsZWRfZmly
c3QpCkBAIC0yNzEyLDYgKzI3NTYsMjg2IEBAIGNsYXNzIFJ1bldlYktpdDFUZXN0cyhSdW5XZWJL
aXRUZXN0cyk6CiAgICAgICAgIHJldHVybiBSdW5XZWJLaXRUZXN0cy5zdGFydChzZWxmKQogCiAK
KyMgVGhpcyBpcyBhIHNwZWNpYWxpemVkIGNsYXNzIGRlc2lnbmVkIHRvIGNvcGUgd2l0aCBhIHRy
ZWUgdGhhdCBpcyBub3QgYWx3YXlzIGdyZWVuLgorIyBJdCB0cmllcyBoYXJkIHRvIGF2b2lkIHJl
cG9ydGluZyBhbnkgZmFsc2UgcG9zaXRpdmUsIHNvIGl0IHdpbGwgb25seSByZXBvcnQgbmV3Cisj
IGNvbnNpc3RlbnQgZmFpbHVyZXMgKGZhaWwgYWx3YXlzIHdpdGggdGhlIHBhdGNoIGFuZCBwYXNz
IGFsd2F5cyB3aXRob3V0IGl0KS4KK2NsYXNzIFJ1bldlYktpdFRlc3RzUmVkVHJlZShSdW5XZWJL
aXRUZXN0cyk6CisgICAgRVhJVF9BRlRFUl9GQUlMVVJFUyA9IDUwMAorCisgICAgZGVmIF9kaWRf
Y29tbWFuZF90aW1lZF9vdXQoc2VsZiwgbG9nSGVhZGVyc1RleHQpOgorICAgICAgICB0aW1lZF9v
dXRfbGluZV9zdGFydCA9ICdjb21tYW5kIHRpbWVkIG91dDoge30gc2Vjb25kcyBlbGFwc2VkIHJ1
bm5pbmcnLmZvcm1hdChzZWxmLk1BWF9TRUNPTkRTX1NURVBfUlVOKQorICAgICAgICB0aW1lZF9v
dXRfbGluZV9lbmQgPSAnYXR0ZW1wdGluZyB0byBraWxsJworICAgICAgICBmb3IgbGluZSBpbiBs
b2dIZWFkZXJzVGV4dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJp
cCgpCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgodGltZWRfb3V0X2xpbmVfc3RhcnQp
IGFuZCBsaW5lLmVuZHN3aXRoKHRpbWVkX291dF9saW5lX2VuZCk6CisgICAgICAgICAgICAgICAg
cmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgZXZhbHVhdGVDb21t
YW5kKHNlbGYsIGNtZCk6CisgICAgICAgIGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cyA9IHNl
dChzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIGZp
cnN0X3Jlc3VsdHNfZmxha3lfdGVzdHMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnZmlyc3RfcnVu
X2ZsYWtpZXMnLCBbXSkpCisgICAgICAgIHJjID0gc2VsZi5ldmFsdWF0ZVJlc3VsdChjbWQpCisg
ICAgICAgIG5leHRfc3RlcHMgPSBbQXJjaGl2ZVRlc3RSZXN1bHRzKCksIFVwbG9hZFRlc3RSZXN1
bHRzKCksIEV4dHJhY3RUZXN0UmVzdWx0cygpXQorICAgICAgICBpZiBmaXJzdF9yZXN1bHRzX2Zh
aWxpbmdfdGVzdHM6CisgICAgICAgICAgICBuZXh0X3N0ZXBzLmV4dGVuZChbVmFsaWRhdGVQYXRj
aCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLCBLaWxsT2xkUHJvY2Vzc2Vz
KCksIFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVlKCldKQorICAgICAgICBlbGlm
IGZpcnN0X3Jlc3VsdHNfZmxha3lfdGVzdHM6CisgICAgICAgICAgICBuZXh0X3N0ZXBzLmFwcGVu
ZChBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzUmVkVHJlZSgpKQorICAgICAgICBlbGlmIHJjID09
IFNVQ0NFU1Mgb3IgcmMgPT0gV0FSTklOR1M6CisgICAgICAgICAgICBuZXh0X3N0ZXBzID0gTm9u
ZQorICAgICAgICAgICAgbWVzc2FnZSA9ICdQYXNzZWQgbGF5b3V0IHRlc3RzJworICAgICAgICAg
ICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSBtZXNzYWdlCisgICAgICAgICAgICBzZWxmLmJ1aWxk
LnJlc3VsdHMgPSBTVUNDRVNTCisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZF9z
dW1tYXJ5JywgbWVzc2FnZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgV2UgaGF2ZSBh
IGZhaWx1cmUgcmV0dXJuIGNvZGUsIGJ1dCBub3QgYSBsaXN0IG9mIGZhaWxlZCBvciBmbGFreSB0
ZXN0cy4KKyAgICAgICAgICAgICMgU28gcmV0cnkgcmUtcnVubmluZyB0aGUgX3dob2xlXyBsYXlv
dXQgdGVzdHMgd2l0aG91dC1wYXRjaCB0byBzZWUgaWYKKyAgICAgICAgICAgICMgdGhpcyB1bmV4
cGVjdGVkIGZhaWx1cmUgd2FzIHByZS1leGlzdGVudC4gSWYgdGhlIGZhaWx1cmUgd2FzIG5vdCBw
cmUtZXhpc3RlbnQsCisgICAgICAgICAgICAjIHRoZW4gd2Ugd291bGQgbm90IHJlcG9ydCBhIGxp
c3Qgb2YgZmFpbGVkIHRlc3QsIGp1c3QgYSBnZW5lcmljICJ1bmtub3duIiBmYWlsdXJlLgorICAg
ICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hGYWlsZWRUZXN0cycsIFRydWUpCisgICAg
ICAgICAgICBuZXh0X3N0ZXBzLmV4dGVuZChbVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpLCBDb21w
aWxlV2ViS2l0V2l0aG91dFBhdGNoKHJldHJ5X2J1aWxkX29uX2ZhaWx1cmU9VHJ1ZSksIFZhbGlk
YXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwgUnVuV2ViS2l0
VGVzdHNXaXRob3V0UGF0Y2hSZWRUcmVlKCldKQorICAgICAgICBpZiBuZXh0X3N0ZXBzOgorICAg
ICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAobmV4dF9zdGVwcykK
KyAgICAgICAgcmV0dXJuIHJjCisKKworY2xhc3MgUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJl
c1JlZFRyZWUoUnVuV2ViS2l0VGVzdHNSZWRUcmVlKToKKyAgICBuYW1lID0gJ2xheW91dC10ZXN0
cy1yZXBlYXQtZmFpbHVyZXMnCisgICAgTlVNX1JFUEVBVFNfUEVSX1RFU1QgPSAxMAorICAgIEVY
SVRfQUZURVJfRkFJTFVSRVMgPSBOb25lCisgICAgTUFYX1NFQ09ORFNfU1RFUF9SVU4gPSAxODAw
MCAgIyA1aAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgc3Vw
ZXIoUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1JlZFRyZWUsIHNlbGYpLl9faW5pdF9fKG1h
eFRpbWU9c2VsZi5NQVhfU0VDT05EU19TVEVQX1JVTiwgKiprd2FyZ3MpCisKKyAgICBkZWYgc2V0
TGF5b3V0VGVzdENvbW1hbmQoc2VsZik6CisgICAgICAgIHN1cGVyKFJ1bldlYktpdFRlc3RzUmVw
ZWF0RmFpbHVyZXNSZWRUcmVlLCBzZWxmKS5zZXRMYXlvdXRUZXN0Q29tbWFuZCgpCisgICAgICAg
IGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdmaXJz
dF9ydW5fZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1h
bmQgKyBbJy0tcmVwZWF0LWVhY2g9JXMnICUgc2VsZi5OVU1fUkVQRUFUU19QRVJfVEVTVF0gKyBz
b3J0ZWQoZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKSkKKworICAgIGRlZiBldmFsdWF0ZUNv
bW1hbmQoc2VsZiwgY21kKToKKyAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVz
dWx0c19ub25mbGFreV9mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCd3aXRoX3BhdGNo
X3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgW10pKQorICAgICAg
ICB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMgPSBzZXQoc2VsZi5n
ZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywg
W10pKQorICAgICAgICB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCA9IHNlbGYu
Z2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0JywgRmFsc2Up
CisgICAgICAgIGZpcnN0X3Jlc3VsdHNfZmxha3lfdGVzdHMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0
eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBbXSkpCisgICAgICAgIHJjID0gc2VsZi5ldmFsdWF0ZVJl
c3VsdChjbWQpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3JldGNvZGUnLCByYykKKyAgICAgICAgbmV4dF9zdGVwcyA9IFtBcmNoaXZlVGVzdFJl
c3VsdHMoKSwgVXBsb2FkVGVzdFJlc3VsdHMoaWRlbnRpZmllcj0ncmVwZWF0LWZhaWx1cmVzJyks
IEV4dHJhY3RUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdyZXBlYXQtZmFpbHVyZXMnKV0KKyAgICAg
ICAgaWYgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJl
cyBvciB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dDoKKyAgICAgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3BhdGNoRmFpbGVkVGVzdHMnLCBUcnVlKQorICAgICAgICAgICAgbmV4
dF9zdGVwcy5leHRlbmQoW1ZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRV
UkxzPUZhbHNlKSwgS2lsbE9sZFByb2Nlc3NlcygpLCBVbkFwcGx5UGF0Y2hJZlJlcXVpcmVkKCks
IENvbXBpbGVXZWJLaXRXaXRob3V0UGF0Y2gocmV0cnlfYnVpbGRfb25fZmFpbHVyZT1UcnVlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Ns
b3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksIFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNX
aXRob3V0UGF0Y2hSZWRUcmVlKCldKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmV4dF9z
dGVwcy5hcHBlbmQoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUoKSkKKyAgICAgICAg
aWYgbmV4dF9zdGVwczoKKyAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJl
bnRTdGVwKG5leHRfc3RlcHMpCisgICAgICAgIHJldHVybiByYworCisgICAgZGVmIGNvbW1hbmRD
b21wbGV0ZShzZWxmLCBjbWQpOgorICAgICAgICBzaGVsbC5UZXN0LmNvbW1hbmRDb21wbGV0ZShz
ZWxmLCBjbWQpCisgICAgICAgIGxvZ1RleHQgPSBzZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRvdXQo
KSArIHNlbGYubG9nX29ic2VydmVyLmdldFN0ZGVycigpCisgICAgICAgIGxvZ1RleHRKc29uID0g
c2VsZi5sb2dfb2JzZXJ2ZXJfanNvbi5nZXRTdGRvdXQoKQorICAgICAgICB3aXRoX3BhdGNoX3Jl
cGVhdF9mYWlsdXJlc19yZXN1bHRzID0gTGF5b3V0VGVzdEZhaWx1cmVzLnJlc3VsdHNfZnJvbV9z
dHJpbmcobG9nVGV4dEpzb24pCisgICAgICAgIGlmIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVz
X3Jlc3VsdHM6CisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVh
dF9mYWlsdXJlc19yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0Jywgd2l0aF9wYXRjaF9yZXBl
YXRfZmFpbHVyZXNfcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCkKKyAgICAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfbm9uZmxha3lfZmFpbHVyZXMnLCBzb3J0ZWQod2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNf
cmVzdWx0cy5mYWlsaW5nX3Rlc3RzKSkKKyAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dp
dGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIHNvcnRlZCh3aXRoX3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzLmZsYWt5X3Rlc3RzKSkKKyAgICAgICAgICAgIGlm
IHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHMuZmFpbGluZ190ZXN0czoKKyAgICAg
ICAgICAgICAgICBzZWxmLl9hZGRUb0xvZyhzZWxmLnRlc3RfZmFpbHVyZXNfbG9nX25hbWUsICdc
bicuam9pbih3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzLmZhaWxpbmdfdGVzdHMp
KQorICAgICAgICBjb21tYW5kX3RpbWVkb3V0ID0gc2VsZi5fZGlkX2NvbW1hbmRfdGltZWRfb3V0
KHNlbGYubG9nX29ic2VydmVyLmdldEhlYWRlcnMoKSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBjb21tYW5kX3RpbWVkb3V0
KQorICAgICAgICBzZWxmLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ1RleHQpCisKKyAg
ICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICMgYnVpbGRib3QgbWVzc2FnZXMgYWJvdXQgdGlt
ZW91dCByZWFjaGVkIGFwcGVhciBvbiB0aGUgaGVhZGVyIHN0cmVhbSBvZiBCdWZmZXJMb2cKKyAg
ICAgICAgcmV0dXJuIHN1cGVyKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVlLCBz
ZWxmKS5zdGFydChCdWZmZXJMb2dPYnNlcnZlckNsYXNzPUJ1ZmZlckxvZ0hlYWRlck9ic2VydmVy
KQorCisKK2NsYXNzIFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRU
cmVlKFJ1bldlYktpdFRlc3RzUmVkVHJlZSk6CisgICAgbmFtZSA9ICdsYXlvdXQtdGVzdHMtcmVw
ZWF0LWZhaWx1cmVzLXdpdGhvdXQtcGF0Y2gnCisgICAgTlVNX1JFUEVBVFNfUEVSX1RFU1QgPSAx
MAorICAgIEVYSVRfQUZURVJfRkFJTFVSRVMgPSBOb25lCisgICAgTUFYX1NFQ09ORFNfU1RFUF9S
VU4gPSAxMDgwMCAgIyAzaAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAg
ICAgICAgc3VwZXIoUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1dpdGhvdXRQYXRjaFJlZFRy
ZWUsIHNlbGYpLl9faW5pdF9fKG1heFRpbWU9c2VsZi5NQVhfU0VDT05EU19TVEVQX1JVTiwgKipr
d2FyZ3MpCisKKyAgICBkZWYgc2V0TGF5b3V0VGVzdENvbW1hbmQoc2VsZik6CisgICAgICAgIHN1
cGVyKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlLCBzZWxm
KS5zZXRMYXlvdXRUZXN0Q29tbWFuZCgpCisgICAgICAgIHdpdGhfcGF0Y2hfbm9uZmxha3lfZmFp
bHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNf
cmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFtdKSkKKyAgICAgICAgZmlyc3RfcnVuX2ZhaWx1
cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFtdKSkKKyAg
ICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQgPSBzZWxmLmdldFByb3Bl
cnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcsIEZhbHNlKQorICAgICAg
ICBmYWlsdXJlc190b19yZXBlYXQgPSBmaXJzdF9ydW5fZmFpbHVyZXMgaWYgd2l0aF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQgZWxzZSB3aXRoX3BhdGNoX25vbmZsYWt5X2ZhaWx1cmVz
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3hkZWJ1Z190aW1lb3V0X3ByZXZpb3VzJywgd2l0
aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQpCisgICAgICAgICMgUGFzcyAnLS1za2lw
cGVkPWFsd2F5cycgdG8gZW5zdXJlIHRoYXQgYW55IHRlc3QgcGFzc2VkIHZpYSBjb21tYW5kIGxp
bmUgYXJndW1lbnRzCisgICAgICAgICMgaXMgc2tpcHBlZCBhbnl3YXlzIGlmIGlzIG1hcmtlZCBh
cyBzdWNoIG9uIHRoZSBFeHBlY3RhdGlvbiBmaWxlcyBvciBpZiBpcyBtYXJrZWQKKyAgICAgICAg
IyBhcyBmYWlsdXJlIChzaW5jZSB3ZSBhcmUgcGFzc2luZyBhbHNvICctLXNraXAtZmFpbGluZy10
ZXN0cycpLiBUaGF0IHdheSB3ZSBlbnN1cmUKKyAgICAgICAgIyB0byByZXBvcnQgdGhlIGNhc2Ug
b2YgYSBwYXRjaCByZW1vdmluZyBhbiBleHBlY3RhdGlvbiB0aGF0IHN0aWxsIGZhaWxzIHdpdGgg
aXQuCisgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tcmVwZWF0LWVh
Y2g9JXMnICUgc2VsZi5OVU1fUkVQRUFUU19QRVJfVEVTVCwgJy0tc2tpcHBlZD1hbHdheXMnXSAr
IHNvcnRlZChmYWlsdXJlc190b19yZXBlYXQpKQorCisgICAgZGVmIGV2YWx1YXRlQ29tbWFuZChz
ZWxmLCBjbWQpOgorICAgICAgICByYyA9IHNoZWxsLlRlc3QuZXZhbHVhdGVDb21tYW5kKHNlbGYs
IGNtZCkKKyAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0FyY2hp
dmVUZXN0UmVzdWx0cygpLCBVcGxvYWRUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdyZXBlYXQtZmFp
bHVyZXMtd2l0aG91dC1wYXRjaCcpLCBFeHRyYWN0VGVzdFJlc3VsdHMoaWRlbnRpZmllcj0ncmVw
ZWF0LWZhaWx1cmVzLXdpdGhvdXQtcGF0Y2gnKSwgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1Jl
ZFRyZWUoKV0pCisgICAgICAgIHJldHVybiByYworCisgICAgZGVmIGNvbW1hbmRDb21wbGV0ZShz
ZWxmLCBjbWQpOgorICAgICAgICBzaGVsbC5UZXN0LmNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQp
CisgICAgICAgIGxvZ1RleHQgPSBzZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRvdXQoKSArIHNlbGYu
bG9nX29ic2VydmVyLmdldFN0ZGVycigpCisgICAgICAgIGxvZ1RleHRKc29uID0gc2VsZi5sb2df
b2JzZXJ2ZXJfanNvbi5nZXRTdGRvdXQoKQorICAgICAgICB3aXRob3V0X3BhdGNoX3JlcGVhdF9m
YWlsdXJlc19yZXN1bHRzID0gTGF5b3V0VGVzdEZhaWx1cmVzLnJlc3VsdHNfZnJvbV9zdHJpbmco
bG9nVGV4dEpzb24pCisgICAgICAgIGlmIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jl
c3VsdHM6CisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVh
dF9mYWlsdXJlc19yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0Jywgd2l0aG91dF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCkKKyAg
ICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVz
X3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBzb3J0ZWQod2l0aG91dF9wYXRjaF9yZXBlYXRf
ZmFpbHVyZXNfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKSkKKyAgICAgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIHNv
cnRlZCh3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzLmZsYWt5X3Rlc3RzKSkK
KyAgICAgICAgICAgIGlmIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHMuZmFp
bGluZ190ZXN0czoKKyAgICAgICAgICAgICAgICBzZWxmLl9hZGRUb0xvZyhzZWxmLnRlc3RfZmFp
bHVyZXNfbG9nX25hbWUsICdcbicuam9pbih3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19y
ZXN1bHRzLmZhaWxpbmdfdGVzdHMpKQorICAgICAgICBjb21tYW5kX3RpbWVkb3V0ID0gc2VsZi5f
ZGlkX2NvbW1hbmRfdGltZWRfb3V0KHNlbGYubG9nX29ic2VydmVyLmdldEhlYWRlcnMoKSkKKyAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGlt
ZWRvdXQnLCBjb21tYW5kX3RpbWVkb3V0KQorICAgICAgICBzZWxmLl9wYXJzZVJ1bldlYktpdFRl
c3RzT3V0cHV0KGxvZ1RleHQpCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICMgYnVp
bGRib3QgbWVzc2FnZXMgYWJvdXQgdGltZW91dCByZWFjaGVkIGFwcGVhciBvbiB0aGUgaGVhZGVy
IHN0cmVhbSBvZiBCdWZmZXJMb2cKKyAgICAgICAgcmV0dXJuIHN1cGVyKFJ1bldlYktpdFRlc3Rz
UmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlLCBzZWxmKS5zdGFydChCdWZmZXJMb2dP
YnNlcnZlckNsYXNzPUJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyKQorCisKK2NsYXNzIFJ1bldlYktp
dFRlc3RzV2l0aG91dFBhdGNoUmVkVHJlZShSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaCk6Cisg
ICAgRVhJVF9BRlRFUl9GQUlMVVJFUyA9IDUwMAorCisgICAgZGVmIGV2YWx1YXRlQ29tbWFuZChz
ZWxmLCBjbWQpOgorICAgICAgICByYyA9IHNoZWxsLlRlc3QuZXZhbHVhdGVDb21tYW5kKHNlbGYs
IGNtZCkKKyAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0FyY2hp
dmVUZXN0UmVzdWx0cygpLCBVcGxvYWRUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdjbGVhbi10cmVl
JyksIEV4dHJhY3RUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdjbGVhbi10cmVlJyksIEFuYWx5emVM
YXlvdXRUZXN0c1Jlc3VsdHNSZWRUcmVlKCldKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdj
bGVhbl90cmVlX3J1bl9zdGF0dXMnLCByYykKKyAgICAgICAgcmV0dXJuIHJjCisKKworY2xhc3Mg
QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0
cyk6CisgICAgTUFYX1JFVFJZID0gMworCisgICAgZGVmIHJlcG9ydF9zdWNjZXNzKHNlbGYpOgor
ICAgICAgICBzZWxmLmZpbmlzaGVkKFNVQ0NFU1MpCisgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0
cyA9IFNVQ0NFU1MKKyAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSAnUGFzc2VkIGxheW91
dCB0ZXN0cycKKyAgICAgICAgbWVzc2FnZSA9ICcnCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2J1aWxkX3N1bW1hcnknLCBtZXNzYWdlKQorICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChO
b25lKQorCisgICAgZGVmIHJlcG9ydF93YXJuaW5nKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBz
ZWxmLmZpbmlzaGVkKFdBUk5JTkdTKQorICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBXQVJO
SU5HUworICAgICAgICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UKKyAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnYnVpbGRfc3VtbWFyeScsIG1lc3NhZ2UpCisgICAgICAgIHJldHVybiBk
ZWZlci5zdWNjZWVkKE5vbmUpCisKKyAgICBkZWYgcmVwb3J0X2luZnJhc3RydWN0dXJlX2lzc3Vl
X2FuZF9tYXliZV9yZXRyeV9idWlsZChzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgcmV0cnlfY291
bnQgPSBpbnQoc2VsZi5nZXRQcm9wZXJ0eSgncmV0cnlfY291bnQnLCAwKSkKKyAgICAgICAgaWYg
cmV0cnlfY291bnQgPj0gc2VsZi5NQVhfUkVUUlk6CisgICAgICAgICAgICBtZXNzYWdlICs9ICdc
blJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgKHt9KS4gVW5hYmxlIHRvIGRl
dGVybWluZSBpZiBwYXRjaCBpcyBiYWQgb3IgdGhlcmUgaXMgYSBwcmUtZXhpc3RlbnQgaW5mcmFz
dHJ1Y3R1cmUgaXNzdWUuJy5mb3JtYXQoc2VsZi5NQVhfUkVUUlkpCisgICAgICAgICAgICBzZWxm
LnNlbmRfZW1haWxfZm9yX2luZnJhc3RydWN0dXJlX2lzc3VlKG1lc3NhZ2UpCisgICAgICAgICAg
ICByZXR1cm4gc2VsZi5yZXBvcnRfd2FybmluZyhtZXNzYWdlKQorICAgICAgICBtZXNzYWdlICs9
ICJcblJldHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyB7fSBvZiB7fV0iLmZvcm1hdChyZXRy
eV9jb3VudCwgc2VsZi5NQVhfUkVUUlkpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3JldHJ5
X2NvdW50JywgcmV0cnlfY291bnQgKyAxKQorICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2lu
ZnJhc3RydWN0dXJlX2lzc3VlKG1lc3NhZ2UpCisgICAgICAgIHJldHVybiBzZWxmLnJldHJ5X2J1
aWxkKG1lc3NhZ2U9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWU6IHt9Jy5mb3JtYXQo
bWVzc2FnZSkpCisKKyAgICBkZWYgc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0ZW50X2ZhaWx1cmVz
KHNlbGYsIHRlc3RfbmFtZXMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBidWlsZGVyX25h
bWUgPSBzZWxmLmdldFByb3BlcnR5KCdidWlsZGVybmFtZScsICcnKQorICAgICAgICAgICAgd29y
a2VyX25hbWUgPSBzZWxmLmdldFByb3BlcnR5KCd3b3JrZXJuYW1lJywgJycpCisgICAgICAgICAg
ICBidWlsZF91cmwgPSAne30jL2J1aWxkZXJzL3t9L2J1aWxkcy97fScuZm9ybWF0KHNlbGYubWFz
dGVyLmNvbmZpZy5idWlsZGJvdFVSTCwgc2VsZi5idWlsZC5fYnVpbGRlcmlkLCBzZWxmLmJ1aWxk
Lm51bWJlcikKKyAgICAgICAgICAgIG51bWJlcl9mYWlsdXJlcyA9IGxlbih0ZXN0X25hbWVzKQor
ICAgICAgICAgICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIG51bWJlcl9mYWlsdXJlcyA+IDEgZWxz
ZSAnJworCisgICAgICAgICAgICBlbWFpbF9zdWJqZWN0ID0gJ0luZm8gYWJvdXQge30gcHJlLWV4
aXN0ZW50IGZhaWx1cmV7fSBhdCB7fScuZm9ybWF0KG51bWJlcl9mYWlsdXJlcywgcGx1cmFsU3Vm
Zml4LCBidWlsZGVyX25hbWUpCisgICAgICAgICAgICBlbWFpbF90ZXN0ID0gJ0luZm8gYWJvdXQg
cHJlLWV4aXN0ZW50IChub24tZmxha3kpIHRlc3QgZmFpbHVyZXt9IGF0IEVXUzpcbicuZm9ybWF0
KHBsdXJhbFN1ZmZpeCkKKyAgICAgICAgICAgIGVtYWlsX3RleHQgPSAnICAgIC0gQnVpbGQgOiB7
fVxuJy5mb3JtYXQoYnVpbGRfdXJsKQorICAgICAgICAgICAgZW1haWxfdGV4dCA9ICcgICAgLSBC
dWlsZGVyIDoge31cbicuZm9ybWF0KGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgICAgIGVtYWlsX3Rl
eHQgPSAnICAgIC0gV29ya2VyIDoge31cbicuZm9ybWF0KHdvcmtlcl9uYW1lKQorICAgICAgICAg
ICAgZm9yIHRlc3RfbmFtZSBpbiBzb3J0ZWQodGVzdF9uYW1lcyk6CisgICAgICAgICAgICAgICAg
aGlzdG9yeV91cmwgPSAne30/c3VpdGU9bGF5b3V0LXRlc3RzJnRlc3Q9e30nLmZvcm1hdChSRVNV
TFRTX0RCX1VSTCwgdGVzdF9uYW1lKQorICAgICAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJ1xu
LSB7fSAoPGEgaHJlZj0ie30iPnRlc3QgaGlzdG9yeTwvYT4pJy5mb3JtYXQodGVzdF9uYW1lLCBo
aXN0b3J5X3VybCkKKyAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWls
X3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ3ByZWV4aXN0aW5nLXt9Jy5mb3Jt
YXQodGVzdF9uYW1lKSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg
ICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIGZsYWt5IGZhaWx1cmU6IHt9Jy5m
b3JtYXQoZSkpCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICMgUnVuIHdpdGggcGF0
Y2gsIHJ1bm5pbmcgdGhlIHdob2xlIGxheW91dCB0ZXN0IHN1aXRlCisgICAgICAgIGZpcnN0X3Jl
c3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQgPSBzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9yZXN1
bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgRmFsc2UpCisgICAgICAgIGZpcnN0X3J1bl9mYWls
dXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbXSkpCisg
ICAgICAgIGZpcnN0X3J1bl9mbGFraWVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2ZpcnN0X3J1
bl9mbGFraWVzJywgW10pKQorCisgICAgICAgICMgUnVuIHdpdGggcGF0Y2gsIHJ1bm5pbmcgZmly
c3RfcnVuX2ZhaWx1cmVzIDEwIHRpbWVzIGVhY2ggdGVzdAorICAgICAgICB3aXRoX3BhdGNoX3Jl
cGVhdF9mYWlsdXJlc19yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9w
ZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9s
aW1pdCcsIEZhbHNlKQorICAgICAgICB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRz
X25vbmZsYWt5X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIHdp
dGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcyA9IHNldChzZWxmLmdldFBy
b3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbXSkp
CisgICAgICAgIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0ID0gc2VsZi5nZXRQ
cm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBGYWxzZSkKKwor
ICAgICAgICAjIFJ1biB3aXRob3V0IHBhdGNoLCBydW5uaW5nIHdpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMgMTAgdGltZXMgZWFjaCB0ZXN0CisgICAg
ICAgIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVf
bGltaXQgPSBzZWxmLmdldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19y
ZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgRmFsc2UpCisgICAgICAgIHdpdGhvdXRfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMgPSBzZXQoc2VsZi5n
ZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFr
eV9mYWlsdXJlcycsIFtdKSkKKyAgICAgICAgd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNf
cmVzdWx0c19mbGFraWVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFtdKSkKKyAgICAgICAgd2l0aG91dF9wYXRj
aF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQgPSBzZWxmLmdldFByb3BlcnR5KCd3aXRob3V0X3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcsIEZhbHNlKQorCisgICAgICAgICMgQ2hlY2sg
Zm9yIHVuZXhwZWN0ZWQgc2l0dWF0aW9ucyBhbmQgd2FybiBFV1MgYm90IHdhdGNoZXJzIG9yIGF1
dGhvciBwb3RlbnRpYWxseSByZXRyeWluZyB0aGUgYnVpbGQuCisgICAgICAgIGlmIChub3QgZmly
c3RfcnVuX2ZhaWx1cmVzKSBhbmQgKG5vdCBmaXJzdF9ydW5fZmxha2llcyk6CisgICAgICAgICAg
ICAjIElmIHdlJ3ZlIG1hZGUgaXQgaGVyZSwgdGhlIGZpcnN0X3J1biBmYWlsZWQsIHdoaWNoIG1l
YW5zIHRoZXJlIHNob3VsZCBiZSBlaXRoZXIgdGVzdCBmYWlsdXJlcyBvciBmbGFraWVzCisgICAg
ICAgICAgICAjIE90aGVyd2lzZSB0aGVyZSBpcyBzb21lIHVuZXhwZWN0ZWQgaXNzdWUuCisgICAg
ICAgICAgICAjIFRoZSBjbGVhbiB0cmVlIHJ1biB0aGF0IG9ubHkgaGFwcGVucyB3aGVuIHRoZSBm
aXJzdCBydW4gZ2l2ZXMgZXJyb3IgY29kZSB3aXRob3V0IGdlbmVyYXRpbmcgYSBsaXN0IG9mIGZh
aWx1cmVzIG9yIGZsYWtpZXMKKyAgICAgICAgICAgIGNsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzID0g
c2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgW10pKQorICAg
ICAgICAgICAgY2xlYW5fdHJlZV9ydW5fZmxha2llcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdj
bGVhbl90cmVlX3J1bl9mbGFraWVzJywgW10pKQorICAgICAgICAgICAgY2xlYW5fdHJlZV9ydW5f
c3RhdHVzID0gc2VsZi5nZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVS
RSkKKworICAgICAgICAgICAgIyBJZiB0aGUgY2xlYW4tdHJlZSBydW4gZ2VuZXJhdGVkIHNvbWUg
cmVzdWx0cyB0aGVuIHdlIGFzc3VtZSB0aGlzIHBhdGNoIGJyb2tlIHRoZSBzY3JpcHQgcnVuLXdl
YmtpdC10ZXN0cyBvciBzb21ldGhpbmcgbGlrZSB0aGF0CisgICAgICAgICAgICBpZiAoY2xlYW5f
dHJlZV9ydW5fc3RhdHVzIGluIFtTVUNDRVNTLCBXQVJOSU5HU10pIG9yIGNsZWFuX3RyZWVfcnVu
X2ZhaWx1cmVzIG9yIGNsZWFuX3RyZWVfcnVuX2ZsYWtpZXM6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoc2V0KCksIGZpcnN0X3Jlc3VsdHNfZXhjZWVkX2ZhaWx1
cmVfbGltaXQpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfaW5mcmFzdHJ1Y3R1cmVf
aXNzdWVfYW5kX21heWJlX3JldHJ5X2J1aWxkKCdUaGUgbGF5b3V0LXRlc3QgcnVuIHdpdGggcGF0
Y2ggZ2VuZXJhdGVkIG5vIGxpc3Qgb2YgcmVzdWx0cyBidXQgZXhpdGVkIHdpdGggZXJyb3IsIGFu
ZCB0aGUgY2xlYW5fdHJlZSB3aXRob3V0IHBhdGNoIHJ1biBkaWQgdGhlIHNhbWV0aGluZy4nKQor
CisgICAgICAgIGlmIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZXhjZWVkX2Zh
aWx1cmVfbGltaXQgb3Igd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19leGNl
ZWRfZmFpbHVyZV9saW1pdDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9pbmZyYXN0
cnVjdHVyZV9pc3N1ZV9hbmRfbWF5YmVfcmV0cnlfYnVpbGQoJ09uZSBvZiB0aGUgc3RlcHMgZm9y
IHJldHJ5aW5nIHRoZSBmYWlsZWQgdGVzdHMgaGFzIGV4aXRlZCBlYXJseSwgYnV0IHRoaXMgc3Rl
cHMgc2hvdWxkIHJ1biB3aXRob3V0ICItLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcyIgc3dpdGNoLCBz
byB0aGV5IHNob3VsZCBub3QgZXhpdCBlYXJseS4nKQorCisgICAgICAgIGlmIHdpdGhvdXRfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVw
b3J0X2luZnJhc3RydWN0dXJlX2lzc3VlX2FuZF9tYXliZV9yZXRyeV9idWlsZCgnVGhlIHN0ZXAg
ImxheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1wYXRjaCIgd2FzIGludGVycnVt
cGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgdGltZW91dC4nKQorCisgICAgICAgIGlmIHdpdGhf
cGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0OgorICAgICAgICAgICAgIyBUaGUgcGF0Y2gg
aXMgY2F1c2luZyB0aGUgc3RlcCAnbGF5b3V0LXRlc3RzLXJlcGVhdC1mYWlsdXJlcy13aXRoLXBh
dGNoIiB0byB0aW1lb3V0IChidXQgdGhlIHN0ZXAgJ2xheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVy
ZXMtd2l0aG91dC1wYXRjaCcgZG9lc24ndCB0aW1lb3V0KQorICAgICAgICAgICAgIyBMaWtlbHkg
dGhlIHBhdGNoIGlzIGFkZGluZyBzbyBtYW55IGZhaWx1cmVzIHRoYXQgaXMgY2F1c2luZyB0aGUg
dGltZW91dCB0byBiZSByZWFjaGVkLiBUaGVyZSBpcyBubyBwb2ludCBpbiByZXBlYXRpbmcgdGhp
cyBydW4gKGl0IHdvdWxkIGhhcHBlbiB0aGUgc2FtZSBvbiBuZXh0IHJ1bnMgYW5kIGNvbnN1bWUg
bG90IG9mIHRpbWUpCisgICAgICAgICAgICAjIE1hcmsgdGhlIHBhdGNoIGFzIGJhZCBhbmQgcmVw
b3J0IHRoZSB0ZXN0cyB0aGF0IGZhaWx1cmVkIG9uIHRoZSBmaXJzdCBydW4gKHdpdGhvdXQgdGhl
IG9uZXMgdGhhdCBwYXNzZWQgb24gdGhlIHJlcGVhdCkuCisgICAgICAgICAgICAjIFRoaXMgbWF5
IGNhdXNlIHNvbWUgZmxha3kgdGVzdHMgdG8gYmUgcmVwb3J0ZWQgYXMgZmFsc2UgcG9zaXRpdmVz
IChzaW5jZSB0aGUgc3RlcCB0byBkaXNjYXJkIGZsYWtpZXMgd2l0aCBwYXRjaCBjb3VsZG4ndCBm
aW5pc2gpLCBidXQgaXMgdGhlIGJlc3Qgd2UgY2FuIGRvIGhlcmUuCisgICAgICAgICAgICBsaWtl
bHlfbmV3X25vbl9mbGFreV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9mYWlsdXJlcyAtIHdpdGhvdXRf
cGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMudW5pb24od2l0
aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzKQorICAgICAgICAgICAg
c2VsZi5zZW5kX2VtYWlsX2Zvcl9pbmZyYXN0cnVjdHVyZV9pc3N1ZSgnVGhlIHN0ZXAgImxheW91
dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aC1wYXRjaCIgcmVhY2hlZCB0aGUgdGltZW91dCBi
dXQgdGhlIHN0ZXAgImxheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1wYXRjaCIg
ZW5kZWQuIE5vdCB0cnlpbmcgdG8gcmVwZWF0IHRoaXMuIFJlcG9ydGluZyB7fSBmYWlsdXJlcyBm
cm9tIHRoZSBmaXJzdCBydW4uJy5mb3JtYXQobGVuKGxpa2VseV9uZXdfbm9uX2ZsYWt5X2ZhaWx1
cmVzKSkpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShsaWtlbHlfbmV3
X25vbl9mbGFreV9mYWlsdXJlcywgZmlyc3RfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCkK
KworICAgICAgICAjIFRoZSBzdGVwIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzIGdlbmVyYXRl
ZCBubyBsaXN0IG9mIGZhaWx1cmVzIG9yIGZsYWtpZXMsIHdoaWNoIHNob3VsZCBvbmx5IGhhcHBl
biB3aGVuIHRoZSByZXR1cm4gY29kZSBvZiB0aGUgc3RlcCBpcyBTVUNFU1Mgb3IgV0FSTklOR1Mu
CisgICAgICAgIGlmIG5vdCB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZs
YWt5X2ZhaWx1cmVzIGFuZCBub3Qgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19m
bGFraWVzOgorICAgICAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29kZSA9
IHNlbGYuZ2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3JldGNvZGUnLCBG
QUlMVVJFKQorICAgICAgICAgICAgaWYgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29k
ZSBub3QgaW4gW1NVQ0NFU1MsIFdBUk5JTkdTXToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5yZXBvcnRfaW5mcmFzdHJ1Y3R1cmVfaXNzdWVfYW5kX21heWJlX3JldHJ5X2J1aWxkKCdUaGUg
c3RlcCAibGF5b3V0LXRlc3RzLXJlcGVhdC1mYWlsdXJlcyIgZmFpbGVkIHRvIGdlbmVyYXRlIGFu
eSBsaXN0IG9mIGZhaWx1cmVzIG9yIGZsYWtpZXMgYW5kIHJldHVybmVkIGFuIGVycm9yIGNvZGUu
JykKKworICAgICAgICAjIFdhcm4gRVdTIGJvdCB3YXRjaGVycyBhYm91dCBmbGFraWVzCisgICAg
ICAgIGFsbF9mbGFreV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9mbGFraWVzLnVuaW9uKHdpdGhfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcykudW5pb24od2l0aG91dF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzKQorICAgICAgICBmb3IgZmxha3lfZmFpbHVy
ZSBpbiBhbGxfZmxha3lfZmFpbHVyZXM6CisgICAgICAgICAgICBzdGVwX25hbWVzID0gW10KKyAg
ICAgICAgICAgIGlmIGZsYWt5X2ZhaWx1cmUgaW4gd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVy
ZXNfcmVzdWx0c19mbGFraWVzOgorICAgICAgICAgICAgICAgIHN0ZXBfbmFtZXMuYXBwZW5kKCds
YXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVzLXdpdGhvdXQtcGF0Y2gnKQorICAgICAgICAgICAg
aWYgZmxha3lfZmFpbHVyZSBpbiB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2Zs
YWtpZXM6CisgICAgICAgICAgICAgICAgc3RlcF9uYW1lcy5hcHBlbmQoJ2xheW91dC10ZXN0cy1y
ZXBlYXQtZmFpbHVyZXMgKHdpdGggcGF0Y2gpJykKKyAgICAgICAgICAgIGlmIGZsYWt5X2ZhaWx1
cmUgaW4gZmlyc3RfcnVuX2ZsYWtpZXM6CisgICAgICAgICAgICAgICAgc3RlcF9uYW1lcy5hcHBl
bmQoJ2xheW91dC10ZXN0cyAod2l0aCBwYXRjaCknKQorICAgICAgICAgICAgc3RlcF9uYW1lc19z
dHIgPSAnInt9IicuZm9ybWF0KCciLCAiJy5qb2luKHN0ZXBfbmFtZXMpKQorICAgICAgICAgICAg
c2VsZi5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlKGZsYWt5X2ZhaWx1cmUsIHN0ZXBfbmFt
ZXNfc3RyKQorCisgICAgICAgICMgV2FybiBFV1MgYm90IHdhdGNoZXJzIGFib3V0IHByZS1leGlz
dGVudCBub24tZmxha3kgZmFpbHVyZXMgKGlmIGFueSksIGJ1dAorICAgICAgICAjIHNlbmQgb25s
eSBvbmUgZS1tYWlsIHdpdGggYWxsIHRoZSB0ZXN0cyB0byBhdm9pZCBzZW5kaW5nIHRvbyBtdWNo
IGUtbWFpbHMuCisgICAgICAgIHByZV9leGlzdGVudF9ub25fZmxha3lfZmFpbHVyZXMgPSB3aXRo
b3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzIC0gd2l0
aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcy51bmlvbihh
bGxfZmxha3lfZmFpbHVyZXMpCisgICAgICAgIGlmIHByZV9leGlzdGVudF9ub25fZmxha3lfZmFp
bHVyZXM6CisgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX3ByZV9leGlzdGVudF9mYWls
dXJlcyhwcmVfZXhpc3RlbnRfbm9uX2ZsYWt5X2ZhaWx1cmVzKQorCisgICAgICAgICMgRmluYWxs
eSBjaGVjayBpZiB0aGVyZSBhcmUgbmV3IGNvbnNpdGVudCAobm9uLWZsYWt5KSBmYWlsdXJlcyBj
YXVzZWQgYnkgdGhlIHBhdGNoIGFuZCB3YXJuIHRoZSBwYXRjaCBhdXRob3Igc2V0dHRpbmcgdGhl
IHN0YXR1cyBmb3IgdGhlIGJ1aWxkLgorICAgICAgICBuZXdfbm9uX2ZsYWt5X2ZhaWx1cmVzID0g
d2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcyAtIHdp
dGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMudW5p
b24od2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzKQorICAgICAg
ICBpZiBuZXdfbm9uX2ZsYWt5X2ZhaWx1cmVzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVw
b3J0X2ZhaWx1cmUobmV3X25vbl9mbGFreV9mYWlsdXJlcywgZmlyc3RfcmVzdWx0c19leGNlZWRf
ZmFpbHVyZV9saW1pdCkKKworICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfc3VjY2VzcygpCisK
KwogY2xhc3MgQXJjaGl2ZUJ1aWx0UHJvZHVjdChzaGVsbC5TaGVsbENvbW1hbmQpOgogICAgIGNv
bW1hbmQgPSBbJ3B5dGhvbjMnLCAnVG9vbHMvQ0lTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2
ZScsCiAgICAgICAgICAgICAgICBXaXRoUHJvcGVydGllcygnLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0
Zm9ybSlzJyksIFdpdGhQcm9wZXJ0aWVzKCctLSUoY29uZmlndXJhdGlvbilzJyksICdhcmNoaXZl
J10KZGlmZiAtLWdpdCBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3Qu
cHkgYi9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5CmluZGV4IGM4
YzI2MmUxNTQxZDRiZjlhMWM3NTk1OWNlM2ZjY2JkODYxNTFkMGIuLmIxODkwNjU5ODllYzA4NDVj
MmNlOTYzMzM1MjhkZTQ3ZTcwNDBlMGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NJU3VwcG9ydC9ld3Mt
YnVpbGQvc3RlcHNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9z
dGVwc191bml0dGVzdC5weQpAQCAtNTMsNyArNTMsOCBAQCBmcm9tIHN0ZXBzIGltcG9ydCAoQW5h
bHl6ZUFQSVRlc3RzUmVzdWx0cywgQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRzLCBBbmFseXpl
SgogICAgICAgICAgICAgICAgICAgIFJ1bkJ1aWxkYm90Q2hlY2tDb25maWdGb3JCdWlsZFdlYktp
dCwgUnVuQnVpbGRib3RDaGVja0NvbmZpZ0ZvckVXUywgUnVuRVdTVW5pdFRlc3RzLCBSdW5SZXN1
bHRzZGJweVRlc3RzLAogICAgICAgICAgICAgICAgICAgIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMs
IFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoLCBSdW5XZWJLaXQxVGVzdHMsIFJ1bldlYktpdFBlcmxU
ZXN0cywgUnVuV2ViS2l0UHlQeXRob24yVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgUnVuV2Vi
S2l0UHlQeXRob24zVGVzdHMsIFJ1bldlYktpdFRlc3RzLCBSdW5XZWJLaXRUZXN0c0luU3RyZXNz
TW9kZSwgUnVuV2ViS2l0VGVzdHNJblN0cmVzc0d1YXJkbWFsbG9jTW9kZSwKLSAgICAgICAgICAg
ICAgICAgICBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaCwgVGVzdFdpdGhGYWlsdXJlQ291bnQs
IFNob3dJZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgIFJ1bldlYktpdFRlc3RzV2l0aG91
dFBhdGNoLCBSdW5XZWJLaXRUZXN0c1JlZFRyZWUsIFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVy
ZXNSZWRUcmVlLCBSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzV2l0aG91dFBhdGNoUmVkVHJl
ZSwKKyAgICAgICAgICAgICAgICAgICBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaFJlZFRyZWUs
IEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHNSZWRUcmVlLCBUZXN0V2l0aEZhaWx1cmVDb3VudCwg
U2hvd0lkZW50aWZpZXIsCiAgICAgICAgICAgICAgICAgICAgVHJpZ2dlciwgVHJhbnNmZXJUb1Mz
LCBVbkFwcGx5UGF0Y2hJZlJlcXVpcmVkLCBVcGRhdGVXb3JraW5nRGlyZWN0b3J5LCBVcGxvYWRC
dWlsdFByb2R1Y3QsCiAgICAgICAgICAgICAgICAgICAgVXBsb2FkVGVzdFJlc3VsdHMsIFZhbGlk
YXRlQ2hhbmdlTG9nQW5kUmV2aWV3ZXIsIFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlciwgVmFs
aWRhdGVQYXRjaCwgVmVyaWZ5R2l0SHViSW50ZWdyaXR5KQogCkBAIC0xNjAxLDggKzE2MDIsOCBA
QCBjbGFzcyBUZXN0QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9u
cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVy
dW5fYmluYXJ5X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19j
bGVhbl90cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2pzY19jbGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcycsIFtdKQotICAgICAgICBBbmFs
eXplSlNDVGVzdHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUgPSBsYW1iZGEg
c2VsZiwgdGVzdDogTm9uZQotICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzLnNlbmRfZW1h
aWxfZm9yX3ByZV9leGlzdGluZ19mYWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKKyAg
ICAgICAgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJl
ID0gbGFtYmRhICphcmdzOiBOb25lCisgICAgICAgIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMuc2Vu
ZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5nX2ZhaWx1cmUgPSBsYW1iZGEgKmFyZ3M6IE5vbmUKIAog
ICAgIGRlZiB0ZXN0X3NpbmdsZV9uZXdfc3RyZXNzX2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHNl
bGYuY29uZmlndXJlU3RlcCgpCkBAIC0xOTUxLDcgKzE5NTIsNyBAQCBjbGFzcyBUZXN0UmVSdW5X
ZWJLaXRUZXN0cyhUZXN0UnVuV2ViS2l0VGVzdHMpOgogICAgICAgICBzZWxmLnNldHVwU3RlcChS
ZVJ1bldlYktpdFRlc3RzKCkpCiAgICAgICAgIHNlbGYucHJvcGVydHlfZXhjZWVkX2ZhaWx1cmVf
bGltaXQgPSAnc2Vjb25kX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnCiAgICAgICAgIHNl
bGYucHJvcGVydHlfZmFpbHVyZXMgPSAnc2Vjb25kX3J1bl9mYWlsdXJlcycKLSAgICAgICAgUmVS
dW5XZWJLaXRUZXN0cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0gbGFtYmRhIHNlbGYs
IHRlc3Q6IE5vbmUKKyAgICAgICAgUmVSdW5XZWJLaXRUZXN0cy5zZW5kX2VtYWlsX2Zvcl9mbGFr
eV9mYWlsdXJlID0gbGFtYmRhICphcmdzOiBOb25lCiAKICAgICBkZWYgdGVzdF9mbGFreV9mYWls
dXJlc19pbl9maXJzdF9ydW4oc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCkBA
IC0yMzUxLDggKzIzNTIsOCBAQCBjbGFzcyBUZXN0QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhC
dWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICByZXR1
cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCiAKICAgICBkZWYgY29uZmlndXJlU3RlcChzZWxm
KToKLSAgICAgICAgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9mbGFr
eV9mYWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKLSAgICAgICAgQW5hbHl6ZUxheW91
dFRlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVyZSA9IGxhbWJk
YSBzZWxmLCB0ZXN0OiBOb25lCisgICAgICAgIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMuc2Vu
ZF9lbWFpbF9mb3JfZmxha3lfZmFpbHVyZSA9IGxhbWJkYSAqYXJnczogTm9uZQorICAgICAgICBB
bmFseXplTGF5b3V0VGVzdHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX3ByZV9leGlzdGluZ19mYWls
dXJlID0gbGFtYmRhICphcmdzOiBOb25lCiAgICAgICAgIHNlbGYuc2V0dXBTdGVwKEFuYWx5emVM
YXlvdXRUZXN0c1Jlc3VsdHMoKSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcmVz
dWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIEZhbHNlKQogICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdzZWNvbmRfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIEZhbHNlKQpAQCAtMjU0
Myw2ICsyNTQ0LDMzMiBAQCBjbGFzcyBUZXN0QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhCdWls
ZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICByZXR1cm4g
c2VsZi5ydW5TdGVwKCkKIAogCitjbGFzcyBUZXN0UnVuV2ViS2l0VGVzdHNSZWRUcmVlKEJ1aWxk
U3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNl
bGYpOgorICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQorICAgICAgICBzZWxmLmpzb25G
aWxlTmFtZSA9ICdsYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJworICAgICAg
ICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKKworICAgIGRlZiBjb25m
aWd1cmVTdGVwKHNlbGYpOgorICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJLaXRUZXN0c1Jl
ZFRyZWUoKSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CisgICAgICAgIHNlbGYuY29u
ZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdn
dGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2Un
KQorICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAorICAgICAgICAgICAgRXhwZWN0
U2hlbGwod29ya2Rpcj0nd2tkaXInLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9
eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAorICAgICAgICAgICAgICAgICAgICAgICAgbG9n
RW52aXJvbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVuLXdl
YmtpdC10ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1idWls
ZCcsICctLW5vLXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9i
YmVyLW9sZC1yZXN1bHRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXJl
bGVhc2UnLCAnLS1yZXN1bHRzLWRpcmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywgJy0t
ZGVidWctcnd0LWxvZ2dpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0t
ZXhpdC1hZnRlci1uLWZhaWx1cmVzJywgJzUwMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddCisg
ICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICArIDAsCisgICAgICAgICkKKyAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bh
c3NlZCBsYXlvdXQgdGVzdHMnKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworCitj
bGFzcyBUZXN0UnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1JlZFRyZWUoQnVpbGRTdGVwTWl4
aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6Cisg
ICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCisgICAgICAgIHNlbGYuanNvbkZpbGVOYW1l
ID0gJ2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nCisgICAgICAgIHJldHVy
biBzZWxmLnNldFVwQnVpbGRTdGVwKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQorCisgICAgZGVmIGNvbmZpZ3VyZVN0
ZXAoc2VsZik6CisgICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFp
bHVyZXNSZWRUcmVlKCkpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgorICAgICAgICBz
ZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZv
cm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdy
ZWxlYXNlJykKKyAgICAgICAgZmlyc3RfcnVuX2ZhaWx1cmVzID0gWydmYXN0L2Nzcy90ZXN0MS5o
dG1sJywgJ2ltcG9ydGVkL3Rlc3QvdGVzdDIuaHRtbCcsICdmYXN0L3N2Zy90ZXN0My5zdmcnXQor
ICAgICAgICBmaXJzdF9ydW5fZmxha2llcyA9IFsnZmFzdC9jc3MvZmxha3kxLmh0bWwnLCAnaW1w
b3J0ZWQvdGVzdC9mbGFreTIuaHRtbCcsICdmYXN0L3N2Zy9mbGFreTMuc3ZnJ10KKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgZmlyc3RfcnVuX2ZhaWx1cmVz
KQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIGZpcnN0X3J1
bl9mbGFraWVzKQorICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAorICAgICAgICAg
ICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAorICAgICAgICAgICAgICAgICAgICAgICAg
bG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nRW52aXJvbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heFRpbWU9
MTgwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVz
dHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tYnVpbGQnLCAnLS1u
by1zaG93LXJlc3VsdHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywgJy0tY2xvYmJlci1vbGQt
cmVzdWx0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1yZWxlYXNlJywg
Jy0tcmVzdWx0cy1kaXJlY3RvcnknLCAnbGF5b3V0LXRlc3QtcmVzdWx0cycsICctLWRlYnVnLXJ3
dC1sb2dnaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXNraXAtZmFp
bGluZy10ZXN0cycsICctLXJlcGVhdC1lYWNoPTEwJ10gKyBzb3J0ZWQoZmlyc3RfcnVuX2ZhaWx1
cmVzKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKyAwLAorICAgICAg
ICApCisgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3Ry
aW5nPSdsYXlvdXQtdGVzdHMnKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworCitj
bGFzcyBUZXN0UnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1dpdGhvdXRQYXRjaFJlZFRyZWUo
QnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0
VXAoc2VsZik6CisgICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCisgICAgICAgIHNlbGYu
anNvbkZpbGVOYW1lID0gJ2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nCisg
ICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKKworICAgIGRlZiB0ZWFyRG93bihz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQorCisgICAgZGVm
IGNvbmZpZ3VyZVN0ZXAoc2VsZik6CisgICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bldlYktpdFRl
c3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlKCkpCisKKyAgICBkZWYgdGVzdF9z
dWNjZXNzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgZmlyc3RfcnVuX2ZhaWx1
cmVzID0gWydmYXN0L2Nzcy90ZXN0MS5odG1sJywgJ2ltcG9ydGVkL3Rlc3QvdGVzdDIuaHRtbCcs
ICdmYXN0L3N2Zy90ZXN0My5zdmcnXQorICAgICAgICBmaXJzdF9ydW5fZmxha2llcyA9IFsnZmFz
dC9jc3MvZmxha3kxLmh0bWwnLCAnaW1wb3J0ZWQvdGVzdC9mbGFreTIuaHRtbCcsICdmYXN0L3N2
Zy9mbGFreTMuc3ZnJ10KKyAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0
c19ub25mbGFreV9mYWlsdXJlcyA9IFsnZmFzdC9jc3MvdGVzdDEuaHRtbCddCisgICAgICAgIHdp
dGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcyA9IFsnaW1wb3J0ZWQvdGVz
dC90ZXN0Mi5odG1sJywgJ2Zhc3Qvc3ZnL3Rlc3QzLnN2ZyddCisgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIGZpcnN0X3J1bl9mYWlsdXJlcykKKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBmaXJzdF9ydW5fZmxha2llcykK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVz
dWx0c19ub25mbGFreV9mYWlsdXJlcycsIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfbm9uZmxha3lfZmFpbHVyZXMpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIHdpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfZmxha2llcykKKyAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5k
cygKKyAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICBtYXhUaW1lPTEwODAwLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5
dGhvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVG9vbHMvU2NyaXB0cy9y
dW4td2Via2l0LXRlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5v
LWJ1aWxkJywgJy0tbm8tc2hvdy1yZXN1bHRzJywgJy0tbm8tbmV3LXRlc3QtcmVzdWx0cycsICct
LWNsb2JiZXItb2xkLXJlc3VsdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jy0tcmVsZWFzZScsICctLXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10ZXN0LXJlc3VsdHMn
LCAnLS1kZWJ1Zy1yd3QtbG9nZ2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnLS1za2lwLWZhaWxpbmctdGVzdHMnLCAnLS1yZXBlYXQtZWFjaD0xMCcsICctLXNraXBwZWQ9
YWx3YXlzJ10gKyBzb3J0ZWQod2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25m
bGFreV9mYWlsdXJlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICsg
MCwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1Ms
IHN0YXRlX3N0cmluZz0nbGF5b3V0LXRlc3RzJykKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3Rl
cCgpCisKKyAgICBkZWYgdGVzdF9zdGVwX3dpdGhfcGF0Y2hfZGlkX3RpbWVvdXQoc2VsZik6Cisg
ICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1
bGxQbGF0Zm9ybScsICdndGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0
aW9uJywgJ3JlbGVhc2UnKQorICAgICAgICBmaXJzdF9ydW5fZmFpbHVyZXMgPSBbJ2Zhc3QvY3Nz
L3Rlc3QxLmh0bWwnLCAnaW1wb3J0ZWQvdGVzdC90ZXN0Mi5odG1sJywgJ2Zhc3Qvc3ZnL3Rlc3Qz
LnN2ZyddCisgICAgICAgIGZpcnN0X3J1bl9mbGFraWVzID0gWydmYXN0L2Nzcy9mbGFreTEuaHRt
bCcsICdpbXBvcnRlZC90ZXN0L2ZsYWt5Mi5odG1sJywgJ2Zhc3Qvc3ZnL2ZsYWt5My5zdmcnXQor
ICAgICAgICB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1
cmVzID0gWydmYXN0L2Nzcy90ZXN0MS5odG1sJ10KKyAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRf
ZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzID0gWydpbXBvcnRlZC90ZXN0L3Rlc3QyLmh0bWwnLCAn
ZmFzdC9zdmcvdGVzdDMuc3ZnJ10KKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVu
X2ZhaWx1cmVzJywgZmlyc3RfcnVuX2ZhaWx1cmVzKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdmaXJzdF9ydW5fZmxha2llcycsIGZpcnN0X3J1bl9mbGFraWVzKQorICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2Zh
aWx1cmVzJywgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWls
dXJlcykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVy
ZXNfcmVzdWx0c19mbGFraWVzJywgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19m
bGFraWVzKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWls
dXJlc190aW1lZG91dCcsIFRydWUpCisgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMo
CisgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCisgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWF4VGltZT0xMDgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRo
b24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVu
LXdlYmtpdC10ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1i
dWlsZCcsICctLW5vLXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1j
bG9iYmVyLW9sZC1yZXN1bHRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct
LXJlbGVhc2UnLCAnLS1yZXN1bHRzLWRpcmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywg
Jy0tZGVidWctcnd0LWxvZ2dpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jy0tc2tpcC1mYWlsaW5nLXRlc3RzJywgJy0tcmVwZWF0LWVhY2g9MTAnLCAnLS1za2lwcGVkPWFs
d2F5cyddICsgc29ydGVkKGZpcnN0X3J1bl9mYWlsdXJlcykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICsgMCwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nbGF5b3V0LXRlc3RzJykKKyAgICAg
ICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKworY2xhc3MgVGVzdEFuYWx5emVMYXlvdXRUZXN0
c1Jlc3VsdHNSZWRUcmVlKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2Fz
ZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1
ZQorICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCisKKyAgICBkZWYgdGVhckRv
d24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKKworICAg
IGRlZiBjb25maWd1cmVTdGVwKHNlbGYpOgorICAgICAgICBBbmFseXplTGF5b3V0VGVzdHNSZXN1
bHRzLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUgPSBsYW1iZGEgKmFyZ3M6IE5vbmUKKyAg
ICAgICAgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3Rp
bmdfZmFpbHVyZSA9IGxhbWJkYSAqYXJnczogTm9uZQorICAgICAgICBzZWxmLnNldHVwU3RlcChB
bmFseXplTGF5b3V0VGVzdHNSZXN1bHRzUmVkVHJlZSgpKQorCisgICAgZGVmIHRlc3RfZmFpbHVy
ZV9pbnRyb2R1Y2VkX2J5X3BhdGNoX2NsZWFuX3RyZWVfZ3JlZW4oc2VsZik6CisgICAgICAgIHNl
bGYuY29uZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9y
bScsICdndGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3Jl
bGVhc2UnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBb
InRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L2ZhaWx1cmUyLmh0bWwiXSkKKyAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBbInRlc3QvZmxha3kxLmh0bWwiLCAi
dGVzdC9mbGFreTIuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNo
X3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1
cmUxLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRf
ZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0ZXN0L2ZhaWx1cmUyLmh0bWwiXSkKKyAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0
c19ub25mbGFreV9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRo
b3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvcHJlLWV4
aXN0ZW50L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1G
QUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IHRlc3QgZmFpbHVyZTogdGVzdC9mYWls
dXJlMS5odG1sIChmYWlsdXJlKScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisg
ICAgZGVmIHRlc3RfZmFpbHVyZV9pbnRyb2R1Y2VkX2J5X3BhdGNoX2NsZWFuX3RyZWVfcmVkKHNl
bGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29u
ZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3Rf
cnVuX2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9mYWlsdXJlMi5odG1s
IiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9m
bGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVz
JywgWyJ0ZXN0L2ZsYWt5MS5odG1sIiwgInRlc3QvZmxha3kyLmh0bWwiXSkKKyAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFr
eV9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2Zh
aWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2ll
cycsIFsidGVzdC9mYWlsdXJlMi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dp
dGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBb
InRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRl
c3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21l
KHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IHRlc3QgZmFpbHVyZTog
dGVzdC9mYWlsdXJlMS5odG1sIChmYWlsdXJlKScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0
ZXAoKQorCisgICAgZGVmIHRlc3RfcHJlX2V4aXN0ZW50X2ZhaWx1cmVzKHNlbGYpOgorICAgICAg
ICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9y
dW5fZmFpbHVyZXMnLCBbInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3By
ZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0
X3J1bl9mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreTIuaHRtbCIsICJ0ZXN0L3By
ZS1leGlzdGVudC9mbGFreTMuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRo
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0
L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
d2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0ZXN0L3ByZS1l
eGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRf
cGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3Qv
cHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3
aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbXSkKKyAgICAg
ICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3Nl
ZCBsYXlvdXQgdGVzdHMnKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRl
ZiB0ZXN0X3ByZV9leGlzdGVudF9mbGFraWVzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3Vy
ZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBb
InRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5MS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreTIuaHRtbCIs
ICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreTMuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVz
JywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1
cmVzX3Jlc3VsdHNfZmxha2llcycsIFsidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kxLmh0bWwiXSkK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNf
cmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbXSkKKyAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bh
c3NlZCBsYXlvdXQgdGVzdHMnKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAg
IGRlZiB0ZXN0X2ZpcnN0X3N0ZXBfZ2l2ZXNfdW5leHBlY3RlZF9mYWlsdXJlX2FuZF9jbGVhbl90
cmVlX3Bhc3Moc2VsZik6CisgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdndGsnKQorICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
Zmlyc3RfcnVuX2ZsYWtpZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5f
dHJlZV9ydW5fZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5f
dHJlZV9ydW5fZmxha2llcycsIFsndGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCddKQorICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9zdGF0dXMnLCBXQVJOSU5HUykK
KyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9
J0ZvdW5kIHVuZXhwZWN0ZWQgZmFpbHVyZSB3aXRoIHBhdGNoIChmYWlsdXJlKScpCisgICAgICAg
IHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVmIHRlc3RfZmlyc3Rfc3RlcF9naXZlc191
bmV4cGVjdGVkX2ZhaWx1cmVfYW5kX2NsZWFuX3RyZWVfdW5leHBlY3RlZF9mYWlsdXJlKHNlbGYp
OgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmln
dXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVu
X2ZhaWx1cmVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFr
aWVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZhaWx1
cmVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZsYWtp
ZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVz
JywgRkFJTFVSRSkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1SRVRSWSwgc3Rh
dGVfc3RyaW5nPSdVbmV4cGVjdGVkIGluZnJhc3RydWN0dXJlIGlzc3VlOiBUaGUgbGF5b3V0LXRl
c3QgcnVuIHdpdGggcGF0Y2ggZ2VuZXJhdGVkIG5vIGxpc3Qgb2YgcmVzdWx0cyBidXQgZXhpdGVk
IHdpdGggZXJyb3IsIGFuZCB0aGUgY2xlYW5fdHJlZSB3aXRob3V0IHBhdGNoIHJ1biBkaWQgdGhl
IHNhbWV0aGluZy5cblJldHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChyZXRy
eSknKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0ZXBf
cmV0cnlfd2l0aF9wYXRjaF9leGl0c19lYXJseV9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5j
b25maWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywg
J2d0aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFz
ZScpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVz
dC9mYWlsdXJlMS5odG1sIiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVu
dC9mYWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRt
bCIsICJ0ZXN0L2ZsYWt5Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhf
cGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3Qv
ZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9w
cmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRo
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvZmFpbHVyZTIu
aHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9m
YWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9m
YWlsdXJlLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFr
eS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCBUcnVlKQorICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5m
cmFzdHJ1Y3R1cmUgaXNzdWU6IE9uZSBvZiB0aGUgc3RlcHMgZm9yIHJldHJ5aW5nIHRoZSBmYWls
ZWQgdGVzdHMgaGFzIGV4aXRlZCBlYXJseSwgYnV0IHRoaXMgc3RlcHMgc2hvdWxkIHJ1biB3aXRo
b3V0ICItLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcyIgc3dpdGNoLCBzbyB0aGV5IHNob3VsZCBub3Qg
ZXhpdCBlYXJseS5cblJldHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChyZXRy
eSknKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0ZXBf
cmV0cnlfd2l0aG91dF9wYXRjaF9leGl0c19lYXJseV9lcnJvcihzZWxmKToKKyAgICAgICAgc2Vs
Zi5jb25maWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3Jt
JywgJ2d0aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVs
ZWFzZScpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsi
dGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlz
dGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEu
aHRtbCIsICJ0ZXN0L2ZsYWt5Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dp
dGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRl
c3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVz
dC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3
aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvZmFpbHVy
ZTIuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVh
dF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L3ByZS1leGlzdGVu
dC9mYWlsdXJlLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRj
aF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9m
bGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCBUcnVlKQorICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0
ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWU6IE9uZSBvZiB0aGUgc3RlcHMgZm9yIHJldHJ5aW5nIHRo
ZSBmYWlsZWQgdGVzdHMgaGFzIGV4aXRlZCBlYXJseSwgYnV0IHRoaXMgc3RlcHMgc2hvdWxkIHJ1
biB3aXRob3V0ICItLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcyIgc3dpdGNoLCBzbyB0aGV5IHNob3Vs
ZCBub3QgZXhpdCBlYXJseS5cblJldHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNd
IChyZXRyeSknKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0
X3N0ZXBfcmV0cnlfd2l0aF9wYXRjaF90aW1lb3V0cyhzZWxmKToKKyAgICAgICAgc2VsZi5jb25m
aWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0
aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScp
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9m
YWlsdXJlMS5odG1sIiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9m
YWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIs
ICJ0ZXN0L2ZsYWt5Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0JywgVHJ1ZSkKKyAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWls
dXJlcycsIFsidGVzdC9wcmUtZXhpc3RlbnQvZmFpbHVyZS5odG1sIl0pCisgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2ll
cycsIFsidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLmV4cGVj
dE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMiBuZXcgdGVzdCBm
YWlsdXJlczogdGVzdC9mYWlsdXJlMS5odG1sLCB0ZXN0L2ZhaWx1cmUyLmh0bWwgKGZhaWx1cmUp
JykKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBkZWYgdGVzdF9zdGVwX3Jl
dHJ5X3dpdGhfcGF0Y2hfdW5leHBlY3RlZF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5jb25m
aWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0
aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScp
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9m
YWlsdXJlMS5odG1sIiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9m
YWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIs
ICJ0ZXN0L2ZsYWt5Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRf
cGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbXSkKKyAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVz
dWx0c19mbGFraWVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hf
cmVwZWF0X2ZhaWx1cmVzX3JldGNvZGUnLCBGQUlMVVJFKQorICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1
cmUgaXNzdWU6IFRoZSBzdGVwICJsYXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVzIiBmYWlsZWQg
dG8gZ2VuZXJhdGUgYW55IGxpc3Qgb2YgZmFpbHVyZXMgb3IgZmxha2llcyBhbmQgcmV0dXJuZWQg
YW4gZXJyb3IgY29kZS5cblJldHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChy
ZXRyeSknKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0
ZXBfcmV0cnlfd2l0aG91dF9wYXRjaF90aW1lb3V0cyhzZWxmKToKKyAgICAgICAgc2VsZi5jb25m
aWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0
aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScp
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9m
YWlsdXJlMS5odG1sIiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9m
YWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIs
ICJ0ZXN0L2ZsYWt5Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0JywgVHJ1ZSkKKyAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBUcnVlKQorICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhw
ZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWU6IFRoZSBzdGVwICJsYXlvdXQtdGVzdHMtcmVwZWF0
LWZhaWx1cmVzLXdpdGhvdXQtcGF0Y2giIHdhcyBpbnRlcnJ1bXBlZCBiZWNhdXNlIGl0IHJlYWNo
ZWQgdGhlIHRpbWVvdXQuXG5SZXRyeWluZyBidWlsZCBbcmV0cnkgY291bnQgaXMgMCBvZiAzXSAo
cmV0cnkpJykKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBkZWYgdGVzdF9z
dGVwX3JldHJ5X3dpdGhfcGF0Y2hfdGltZW91dHNfYW5kX3dpdGhvdXRfcGF0Y2hfdGltZW91dHMo
c2VsZik6CisgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdndGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdj
b25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJz
dF9ydW5fZmFpbHVyZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L2ZhaWx1cmUyLmh0
bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmFpbHVyZS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50
L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtp
ZXMnLCBbInRlc3QvZmxha3kxLmh0bWwiLCAidGVzdC9mbGFreTIuaHRtbCJdKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZs
YWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQv
ZmFpbHVyZS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFr
aWVzJywgWyJ0ZXN0L2ZhaWx1cmUyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
d2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBUcnVlKQorICAgICAgICBz
ZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQg
aW5mcmFzdHJ1Y3R1cmUgaXNzdWU6IFRoZSBzdGVwICJsYXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1
cmVzLXdpdGhvdXQtcGF0Y2giIHdhcyBpbnRlcnJ1bXBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhl
IHRpbWVvdXQuXG5SZXRyeWluZyBidWlsZCBbcmV0cnkgY291bnQgaXMgMCBvZiAzXSAocmV0cnkp
JykKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBkZWYgdGVzdF9yZXRyeV90
aGlyZF90aW1lKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9m
YWlsdXJlMi5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3By
ZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0
X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2ZsYWt5MS5odG1sIiwgInRlc3QvZmxha3kyLmh0bWwiXSkK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVz
dWx0c19ub25mbGFreV9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3QvcHJl
LWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0p
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jl
c3VsdHNfZmxha2llcycsIFsidGVzdC9mYWlsdXJlMi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0JywgVHJ1ZSkK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncmV0cnlfY291bnQnLCAyKQorICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5m
cmFzdHJ1Y3R1cmUgaXNzdWU6IFRoZSBzdGVwICJsYXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVz
LXdpdGhvdXQtcGF0Y2giIHdhcyBpbnRlcnJ1bXBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIHRp
bWVvdXQuXG5SZXRyeWluZyBidWlsZCBbcmV0cnkgY291bnQgaXMgMiBvZiAzXSAocmV0cnkpJykK
KyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBkZWYgdGVzdF9yZXRyeV9maW5p
c2goc2VsZik6CisgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdndGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdm
aXJzdF9ydW5fZmFpbHVyZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L2ZhaWx1cmUy
Lmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmFpbHVyZS5odG1sIiwgInRlc3QvcHJlLWV4aXN0
ZW50L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2Zs
YWtpZXMnLCBbInRlc3QvZmxha3kxLmh0bWwiLCAidGVzdC9mbGFreTIuaHRtbCJdKQorICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25v
bmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9wcmUtZXhpc3Rl
bnQvZmFpbHVyZS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0bWwiXSkKKyAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19m
bGFraWVzJywgWyJ0ZXN0L2ZhaWx1cmUyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBUcnVlKQorICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdyZXRyeV9jb3VudCcsIDMpCisgICAgICAgIHNlbGYuZXhwZWN0
T3V0Y29tZShyZXN1bHQ9V0FSTklOR1MsIHN0YXRlX3N0cmluZz0nVGhlIHN0ZXAgImxheW91dC10
ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1wYXRjaCIgd2FzIGludGVycnVtcGVkIGJlY2F1
c2UgaXQgcmVhY2hlZCB0aGUgdGltZW91dC5cblJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9m
IHJldHJpZXMgKDMpLiBVbmFibGUgdG8gZGV0ZXJtaW5lIGlmIHBhdGNoIGlzIGJhZCBvciB0aGVy
ZSBpcyBhIHByZS1leGlzdGVudCBpbmZyYXN0cnVjdHVyZSBpc3N1ZS4gKHdhcm5pbmdzKScpCisg
ICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisKIGNsYXNzIFRlc3RDaGVja091dFNwZWNp
ZmljUmV2aXNpb24oQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443981</attachid>
            <date>2021-11-11 11:23:25 -0800</date>
            <delta_ts>2021-12-01 14:38:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231999-20211111192324.patch</filename>
            <type>text/plain</type>
            <size>69155</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjM2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGQ0YjYyNTMyMGY5ZGVlMGQ1OWQ5MmU3NTIzODc1NTVj
ZDI2MmMyOS4uMzYwMjExYTU2OTNjMjU4ZTNmMTkzZjUwODE1OWEyOTg3MGZiZDk4ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgw
IEBACisyMDIxLTExLTExICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtFV1NdW0dUS11bV1BFXSBBZGQgYSBuZXcgQ2xhc3MgZm9yIHJ1
bm5pbmcgbGF5b3V0IHRlc3RzIG9uIHRoZSBFV1MgZm9yIHRoZSBHVEsgYW5kIFdQRSBwb3J0cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTk5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBhIG5ldyBjbGFzcyB0byB0aGUgRVdTIGZvciBydW5uaW5nIGxheW91dCB0ZXN0cyBm
b3IgdGhlIEdUSyBhbmQgV1BFIHBvcnRzLgorICAgICAgICBJdCB3aWxsIGJlIHVzZWQgaW5pdGlh
bGx5IGZvciB0aGUgR1RLIHBvcnQgYW5kIGxhdGVyIGZvciB0aGUgV1BFIG9uZS4KKyAgICAgICAg
TWFjL2lPUyBwb3J0cyB3aWxsIGNvbnRpbnVlIHRvIHVzZSB0aGUgY3VycmVudCBkZWZhdWx0IEVX
Uywgc28gbm8gYmVoYXZpb3VyIGNoYW5nZSBmb3IgdGhlbS4KKworICAgICAgICBUaGlzIG5ldyBj
bGFzcyBpcyBzcGVjaWFsbHkgZGVzaWduZWQgdG86CisgICAgICAgIEEuIFdvcmsgd2l0aCBhIHRy
ZWUgdGhhdCBpcyBub3QgYWx3YXlzIGdyZWVuIChvciBldmVuIHRoYXQgaXMgb2Z0ZW4gcXVpdGUg
cmVkKS4KKyAgICAgICAgQi4gVG8gbm90IHJlcG9ydCBhbnkgZmFsc2UgcG9zaXRpdmUgdG8gdGhl
IHBhdGNoIGF1dGhvci4KKyAgICAgICAgQy4gVG8gYWxsb3cgcGF0Y2ggYXV0aG9ycyB0byB1c2Ug
dGhpcyBFV1MgdG8gZ2V0IG5ldyBleHBlY3RhdGlvbnMgZm9yIHBhdGNoZXMgdGhhdCBuZWVkIGxv
dCBvZiBuZXcgcmUtYmFzZWxpbmVzIChsaWtlIGEgV1BUIGltcG9ydCkKKworICAgICAgICBUaGUg
dmVyeSBzaW1wbGlmaWVkIGxvZ2ljIG9mIGhvdyB0aGlzIHdvcmtzIGlzIHRoZSBmb2xsb3dpbmc6
CisgICAgICAgIDEuIFJ1biBsYXlvdXQgdGVzdHMgd2l0aCBwYXRjaCAoYWJvcnQgZWFybHkgYXQg
NTAwIHVuZXhwZWN0ZWQgZmFpbHVyZXMpCisgICAgICAgIDIuIFJ1biBsYXlvdXQgdGVzdHMgd2l0
aCBwYXRjaCAxMCB0aW1lcyBmb3IgZWFjaCB0ZXN0IHRoYXQgZmFpbGVkIGNvbnNpc3RlbnRseSAo
bm9uLWZsYWt5KSBvbiBzdGVwIDEuCisgICAgICAgIDMuIFJ1biBsYXlvdXQgdGVzdHMgd2l0aG91
dCBwYXRjaCAxMCB0aW1lcyBmb3IgZWFjaCB0ZXN0IHRoYXQgZmFpbGVkIGNvbnNpc3RlbnRseSAo
bm9uLWZsYWt5KSBvbiBzdGVwIDIuCisKKyAgICAgICAgVGhlbiByZXBvcnQgdG8gdGhlIHBhdGNo
IGF1dGhvciBvbmx5IHRoZSBuZXcgY29uc2lzdGVudCBmYWlsdXJlcyAodGVzdHMgdGhhdCBmYWls
ZWQgYWx3YXlzIHdpdGggdGhlIHBhdGNoIGFuZCBwYXNzZWQgYWx3YXlzIHdpdGhvdXQgdGhlIHBh
dGNoLCByZXRyeWluZyAxMCB0aW1lcykKKyAgICAgICAgQW55IGZsYWt5IHRlc3QgZm91bmQgaXMg
b25seSByZXBvcnRlZCB0byB0aGUgYm90IHdhdGNoZXJzLgorCisgICAgICAgIEZvciBhbiBleHBs
YWluZXIgYWJvdXQgd2h5IHRoaXMgaXMgbmVlZGVkLCBhbmQgbW9yZSBkZXRhaWxzIGFib3V0IHRo
ZSBmbG93IGRpYWdyYW0gYW5kIHNldmVyYWwgZGVzaWduIGNvbnNpZGVyYXRpb25zLCBwbGVhc2Ug
Y2hlY2s6CisgICAgICAgIGh0dHBzOi8vcGVvcGxlLmlnYWxpYS5jb20vY2xvcGV6L3drYnVnLzIz
MTk5OS9leHBsYWluZXIuaHRtbAorCisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9jb25m
aWcuanNvbjoKKyAgICAgICAgKiBDSVN1cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weToKKyAg
ICAgICAgKEdUS1Rlc3RzRmFjdG9yeSk6CisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9s
YXlvdXRfdGVzdF9mYWlsdXJlcy5weToKKyAgICAgICAgKExheW91dFRlc3RGYWlsdXJlcy5fX2lu
aXRfXyk6CisgICAgICAgIChMYXlvdXRUZXN0RmFpbHVyZXMucmVzdWx0c19mcm9tX3N0cmluZyk6
CisgICAgICAgIChMYXlvdXRUZXN0RmFpbHVyZXMucmVzdWx0c19mcm9tX3N0cmluZy5nZXRfZmFp
bGluZ190ZXN0cyk6CisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weToKKyAg
ICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyKToKKyAgICAgICAgKEJ1ZmZlckxvZ0hlYWRl
ck9ic2VydmVyLl9faW5pdF9fKToKKyAgICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyLmhl
YWRlclJlY2VpdmVkKToKKyAgICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyLmdldEhlYWRl
cnMpOgorICAgICAgICAoQnVnemlsbGFNaXhpbi5zZW5kX2VtYWlsX2Zvcl9pbmZyYXN0cnVjdHVy
ZV9pc3N1ZSk6CisgICAgICAgIChUcmlnZ2VyLnByb3BlcnRpZXNUb1Bhc3NUb1RyaWdnZXJzKToK
KyAgICAgICAgKFJ1bldlYktpdFRlc3RzLnNldExheW91dFRlc3RDb21tYW5kKToKKyAgICAgICAg
KFJ1bldlYktpdFRlc3RzLnN0YXJ0KToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzLmNvbW1hbmRD
b21wbGV0ZSk6CisgICAgICAgIChSZVJ1bldlYktpdFRlc3RzLmV2YWx1YXRlQ29tbWFuZCk6Cisg
ICAgICAgIChSZVJ1bldlYktpdFRlc3RzLmNvbW1hbmRDb21wbGV0ZSk6CisgICAgICAgIChSdW5X
ZWJLaXRUZXN0c1dpdGhvdXRQYXRjaC5jb21tYW5kQ29tcGxldGUpOgorICAgICAgICAoQW5hbHl6
ZUxheW91dFRlc3RzUmVzdWx0cy5yZXBvcnRfZmFpbHVyZSk6CisgICAgICAgIChBbmFseXplTGF5
b3V0VGVzdHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUpOgorICAgICAgICAo
QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9uZXdfdGVzdF9mYWlsdXJl
cyk6CisgICAgICAgIChBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzLnN0YXJ0KToKKyAgICAgICAg
KFJ1bldlYktpdDFUZXN0cy5zdGFydCk6CisgICAgICAgIChSdW5XZWJLaXRUZXN0c1JlZFRyZWUp
OgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZWRUcmVlLl9kaWRfY29tbWFuZF90aW1lZF9vdXQp
OgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZWRUcmVlLmV2YWx1YXRlQ29tbWFuZCk6CisgICAg
ICAgIChSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZSk6CisgICAgICAgIChSdW5X
ZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZS5fX2luaXRfXyk6CisgICAgICAgIChSdW5X
ZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZS5zZXRMYXlvdXRUZXN0Q29tbWFuZCk6Cisg
ICAgICAgIChSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZS5ldmFsdWF0ZUNvbW1h
bmQpOgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1JlZFRyZWUuY29tbWFu
ZENvbXBsZXRlKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVl
LnN0YXJ0KToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0
Y2hSZWRUcmVlKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0
UGF0Y2hSZWRUcmVlLl9faW5pdF9fKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFp
bHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlLnNldExheW91dFRlc3RDb21tYW5kKToKKyAgICAgICAg
KFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlLmV2YWx1YXRl
Q29tbWFuZCk6CisgICAgICAgIChSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzV2l0aG91dFBh
dGNoUmVkVHJlZS5jb21tYW5kQ29tcGxldGUpOgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZXBl
YXRGYWlsdXJlc1dpdGhvdXRQYXRjaFJlZFRyZWUuc3RhcnQpOgorICAgICAgICAoUnVuV2ViS2l0
VGVzdHNXaXRob3V0UGF0Y2hSZWRUcmVlKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzV2l0aG91
dFBhdGNoUmVkVHJlZS5ldmFsdWF0ZUNvbW1hbmQpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRl
c3RzUmVzdWx0c1JlZFRyZWUpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1Jl
ZFRyZWUucmVwb3J0X3N1Y2Nlc3MpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0
c1JlZFRyZWUucmVwb3J0X3dhcm5pbmcpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVz
dWx0c1JlZFRyZWUucmVwb3J0X2luZnJhc3RydWN0dXJlX2lzc3VlX2FuZF9tYXliZV9yZXRyeV9i
dWlsZCk6CisgICAgICAgIChBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzUmVkVHJlZS5zZW5kX2Vt
YWlsX2Zvcl9wcmVfZXhpc3RlbnRfZmFpbHVyZXMpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRl
c3RzUmVzdWx0c1JlZFRyZWUuc3RhcnQpOgorICAgICAgICAqIENJU3VwcG9ydC9ld3MtYnVpbGQv
c3RlcHNfdW5pdHRlc3QucHk6CisKIDIwMjEtMTEtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBUdXJuIG9mZiB2YXJpb3VzIHByZWZlcmVuY2VzIHdoZW4gaW4g
Y2FwdGl2ZSBwb3J0YWwgbW9kZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWls
ZC9jb25maWcuanNvbiBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvY29uZmlnLmpzb24KaW5k
ZXggYjYwMmFhMmFiYWIyNjFlOGRlMjc4YTE2NmM1NTIyMDdhZmNlYzY0NS4uM2FhODNkZGZkZWYw
MzA5YjE1ZWY5YWVhMThiMThjNjAzOGFlYzJhZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ0lTdXBwb3J0
L2V3cy1idWlsZC9jb25maWcuanNvbgorKysgYi9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2Nv
bmZpZy5qc29uCkBAIC0xMTEsMTMgKzExMSwxNCBAQAogICAgICAgIm5hbWUiOiAiR1RLLUJ1aWxk
LUVXUyIsICJzaG9ydG5hbWUiOiAiZ3RrIiwgImljb24iOiAiYnVpbGRPbmx5IiwKICAgICAgICJm
YWN0b3J5IjogIkdUS0J1aWxkRmFjdG9yeSIsICJwbGF0Zm9ybSI6ICJndGsiLAogICAgICAgImNv
bmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAg
ICAgICJ0cmlnZ2VycyI6IFsiYXBpLXRlc3RzLWd0ay1ld3MiXSwKKyAgICAgICJ0cmlnZ2VycyI6
IFsiYXBpLXRlc3RzLWd0ay1ld3MiLCAiZ3RrLXdrMi10ZXN0cy1ld3MiXSwKICAgICAgICJ3b3Jr
ZXJuYW1lcyI6IFsiaWdhbGlhMS1ndGstd2syLWV3cyIsICJpZ2FsaWEyLWd0ay13azItZXdzIiwg
ImFwZXJlei1ndGstZXdzIl0KICAgICB9LAogICAgIHsKICAgICAgICJuYW1lIjogIkdUSy1XSzIt
VGVzdHMtRVdTIiwgInNob3J0bmFtZSI6ICJndGstd2syIiwgImljb24iOiAidGVzdE9ubHkiLAog
ICAgICAgImZhY3RvcnkiOiAiR1RLVGVzdHNGYWN0b3J5IiwgInBsYXRmb3JtIjogImd0ayIsCiAg
ICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82
NCJdLAorICAgICAgInRyaWdnZXJlZF9ieSI6IFsiZ3RrLWJ1aWxkLWV3cyJdLAogICAgICAgIndv
cmtlcm5hbWVzIjogWyJpZ2FsaWE1LWd0ay13azItZXdzIiwgImlnYWxpYTYtZ3RrLXdrMi1ld3Mi
LCAiaWdhbGlhNy1ndGstd2syLWV3cyIsICJpZ2FsaWE4LWd0ay13azItZXdzIiwgImlnYWxpYTkt
Z3RrLXdrMi1ld3MiXQogICAgIH0sCiAgICAgewpAQCAtMzEwLDYgKzMxMSw3IEBACiAgICAgICAi
bmFtZSI6ICJBUEktVGVzdHMtR1RLLUVXUyIsICJzaG9ydG5hbWUiOiAiYXBpLWd0ayIsICJpY29u
IjogInRlc3RPbmx5IiwKICAgICAgICJmYWN0b3J5IjogIkFQSVRlc3RzRmFjdG9yeSIsICJwbGF0
Zm9ybSI6ICJndGsiLAogICAgICAgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRl
Y3R1cmVzIjogWyJ4ODZfNjQiXSwKKyAgICAgICJ0cmlnZ2VyZWRfYnkiOiBbImd0ay1idWlsZC1l
d3MiXSwKICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdhbGlhMy1ndGstd2syLWV3cyIsICJpZ2Fs
aWE0LWd0ay13azItZXdzIl0KICAgICB9LAogICAgIHsKQEAgLTM4NywxMiArMzg5LDE2IEBACiAg
ICAgICAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImFwaS10ZXN0cy1tYWMtZXdzIiwK
ICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFQSS1UZXN0cy1tYWNPUy1FV1MiXQogICAgIH0sCisg
ICAgeworICAgICAgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJndGstYnVpbGQtZXdz
IiwKKyAgICAgICJidWlsZGVyTmFtZXMiOiBbIkdUSy1CdWlsZC1FV1MiXQorICAgIH0sCiAgICAg
ewogICAgICAgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJhcGktdGVzdHMtZ3RrLWV3
cyIsCiAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBUEktVGVzdHMtR1RLLUVXUyJdCiAgICAgfSwK
ICAgICB7Ci0gICAgICAidHlwZSI6ICJUcnlfVXNlcnBhc3MiLCAibmFtZSI6ICJndGstd2syLXRl
c3RzLWV3cy1kaXNhYmxlZCIsICJwb3J0IjogNTU1OCwKKyAgICAgICJ0eXBlIjogIlRyaWdnZXJh
YmxlIiwgIm5hbWUiOiAiZ3RrLXdrMi10ZXN0cy1ld3MiLAogICAgICAgImJ1aWxkZXJOYW1lcyI6
IFsiR1RLLVdLMi1UZXN0cy1FV1MiXQogICAgIH0sCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q0lTdXBwb3J0L2V3cy1idWlsZC9mYWN0b3JpZXMucHkgYi9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1
aWxkL2ZhY3Rvcmllcy5weQppbmRleCBkOGU5ODBmYTAzMGRhMzMyZGVhZGU1YWZlYzEyMzI4MGVh
ZGRjNDg0Li5lZjlkMTJjMWI1ODk5ZGFhNzkxOGEwNTVjNzk5NWJiYzMyOWE3Y2U2IDEwMDY0NAot
LS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weQorKysgYi9Ub29scy9D
SVN1cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weQpAQCAtMzAsNyArMzAsNyBAQCBmcm9tIHN0
ZXBzIGltcG9ydCAoQXBwbHlQYXRjaCwgQXBwbHlXYXRjaExpc3QsIENoZWNrT3V0U291cmNlLCBD
aGVja091dFNwZWNpZmljUgogICAgICAgICAgICAgICAgICAgIEluc3RhbGxHdGtEZXBlbmRlbmNp
ZXMsIEluc3RhbGxXcGVEZXBlbmRlbmNpZXMsIEtpbGxPbGRQcm9jZXNzZXMsIFByaW50Q29uZmln
dXJhdGlvbiwgUHVzaENvbW1pdFRvV2ViS2l0UmVwbywKICAgICAgICAgICAgICAgICAgICBSdW5B
UElUZXN0cywgUnVuQmluZGluZ3NUZXN0cywgUnVuQnVpbGRXZWJLaXRPcmdVbml0VGVzdHMsIFJ1
bkJ1aWxkYm90Q2hlY2tDb25maWdGb3JCdWlsZFdlYktpdCwgUnVuQnVpbGRib3RDaGVja0NvbmZp
Z0ZvckVXUywKICAgICAgICAgICAgICAgICAgICBSdW5FV1NVbml0VGVzdHMsIFJ1blJlc3VsdHNk
YnB5VGVzdHMsIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMsIFJ1bldlYktpdDFUZXN0cywgUnVuV2Vi
S2l0UGVybFRlc3RzLCBSdW5XZWJLaXRQeVB5dGhvbjJUZXN0cywKLSAgICAgICAgICAgICAgICAg
ICBSdW5XZWJLaXRQeVB5dGhvbjNUZXN0cywgUnVuV2ViS2l0VGVzdHMsIFJ1bldlYktpdFRlc3Rz
SW5TdHJlc3NNb2RlLCBSdW5XZWJLaXRUZXN0c0luU3RyZXNzR3VhcmRtYWxsb2NNb2RlLAorICAg
ICAgICAgICAgICAgICAgIFJ1bldlYktpdFB5UHl0aG9uM1Rlc3RzLCBSdW5XZWJLaXRUZXN0cywg
UnVuV2ViS2l0VGVzdHNSZWRUcmVlLCBSdW5XZWJLaXRUZXN0c0luU3RyZXNzTW9kZSwgUnVuV2Vi
S2l0VGVzdHNJblN0cmVzc0d1YXJkbWFsbG9jTW9kZSwKICAgICAgICAgICAgICAgICAgICBTZXRC
dWlsZFN1bW1hcnksIFNob3dJZGVudGlmaWVyLCBUcmlnZ2VyQ3Jhc2hMb2dTdWJtaXNzaW9uLCBV
cGRhdGVXb3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUGF0Y2gs
IFZhbGlkYXRlQ2hhbmdlTG9nQW5kUmV2aWV3ZXIsIFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdl
ciwgV2FpdEZvckNyYXNoQ29sbGVjdGlvbiwKICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQnVp
bHRQcm9kdWN0LCBWZXJpZnlHaXRIdWJJbnRlZ3JpdHkpCkBAIC0yNTcsNyArMjU3LDcgQEAgY2xh
c3MgR1RLQnVpbGRGYWN0b3J5KEJ1aWxkRmFjdG9yeSk6CiAKIAogY2xhc3MgR1RLVGVzdHNGYWN0
b3J5KFRlc3RGYWN0b3J5KToKLSAgICBMYXlvdXRUZXN0Q2xhc3MgPSBSdW5XZWJLaXRUZXN0cwor
ICAgIExheW91dFRlc3RDbGFzcyA9IFJ1bldlYktpdFRlc3RzUmVkVHJlZQogCiAKIGNsYXNzIFdQ
RUZhY3RvcnkoRmFjdG9yeSk6CmRpZmYgLS1naXQgYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxk
L2xheW91dF90ZXN0X2ZhaWx1cmVzLnB5IGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9sYXlv
dXRfdGVzdF9mYWlsdXJlcy5weQppbmRleCAxMTdmMzkxMDhmNTU1MjZhODk3YzkwMjM2NmY5NzMw
YWNlNWM5ZThlLi4yNjhiNjRhYzkwMjcyYmEyOTM2OTVmMzg1ODMxMTNjYmE4NjBkOGYyIDEwMDY0
NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2xheW91dF90ZXN0X2ZhaWx1cmVzLnB5
CisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvbGF5b3V0X3Rlc3RfZmFpbHVyZXMucHkK
QEAgLTI3LDggKzI3LDkgQEAgY2xhc3MgTGF5b3V0VGVzdEZhaWx1cmVzKG9iamVjdCk6CiAgICAg
X0pTT05fUFJFRklYID0gIkFERF9SRVNVTFRTKCIKICAgICBfSlNPTl9TVUZGSVggPSAiKTsiCiAK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgZmFpbGluZ190ZXN0cywgZGlkX2V4Y2VlZF90ZXN0X2Zh
aWx1cmVfbGltaXQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYWlsaW5nX3Rlc3RzLCBmbGFr
eV90ZXN0cywgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQpOgogICAgICAgICBzZWxmLmZh
aWxpbmdfdGVzdHMgPSBmYWlsaW5nX3Rlc3RzCisgICAgICAgIHNlbGYuZmxha3lfdGVzdHMgPSBm
bGFreV90ZXN0cwogICAgICAgICBzZWxmLmRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0ID0g
ZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQKIAogICAgIEBjbGFzc21ldGhvZApAQCAtNTYs
MTMgKzU3LDE2IEBAIGNsYXNzIExheW91dFRlc3RGYWlsdXJlcyhvYmplY3QpOgogICAgICAgICBq
c29uX2RpY3QgPSBqc29uLmxvYWRzKGNvbnRlbnRfc3RyaW5nKQogCiAgICAgICAgIGZhaWxpbmdf
dGVzdHMgPSBbXQorICAgICAgICBmbGFreV90ZXN0cyA9IFtdCiAKICAgICAgICAgZGVmIGdldF9m
YWlsaW5nX3Rlc3RzKHRlc3QsIHJlc3VsdCk6CiAgICAgICAgICAgICBpZiByZXN1bHQuZ2V0KCdy
ZXBvcnQnKSBpbiBbJ1JFR1JFU1NJT04nLCAnTUlTU0lORyddOgogICAgICAgICAgICAgICAgIGZh
aWxpbmdfdGVzdHMuYXBwZW5kKHRlc3QpCisgICAgICAgICAgICBlbGlmIHJlc3VsdC5nZXQoJ3Jl
cG9ydCcpIGluIFsnRkxBS1knXToKKyAgICAgICAgICAgICAgICBmbGFreV90ZXN0cy5hcHBlbmQo
dGVzdCkKIAogICAgICAgICBjbHMucGFyc2VfZnVsbF9yZXN1bHRzX2pzb24oanNvbl9kaWN0Wyd0
ZXN0cyddLCBnZXRfZmFpbGluZ190ZXN0cykKLSAgICAgICAgcmV0dXJuIGNscyhmYWlsaW5nX3Rl
c3RzLCBqc29uX2RpY3QuZ2V0KCdpbnRlcnJ1cHRlZCcsIEZhbHNlKSkKKyAgICAgICAgcmV0dXJu
IGNscyhmYWlsaW5nX3Rlc3RzLCBmbGFreV90ZXN0cywganNvbl9kaWN0LmdldCgnaW50ZXJydXB0
ZWQnLCBGYWxzZSkpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgcGFyc2VfZnVsbF9yZXN1
bHRzX2pzb24oY2xzLCB0cmVlLCBoYW5kbGVyLCBwcmVmaXg9JycpOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weSBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVp
bGQvc3RlcHMucHkKaW5kZXggNDdjMDhhNGNlNDgyOWQzOTZkMWI3MDlhY2UxNjIwNDIxOWI1NjI4
My4uM2VhNWM3NzAxNjY3Yjk2MzllMjEwYjgxMDYzMzMwYzUxOGQwODIzNiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weQorKysgYi9Ub29scy9DSVN1cHBvcnQv
ZXdzLWJ1aWxkL3N0ZXBzLnB5CkBAIC01Niw2ICs1NiwxOSBAQCBXaXRoUHJvcGVydGllcyA9IHBy
b3BlcnRpZXMuV2l0aFByb3BlcnRpZXMKIEludGVycG9sYXRlID0gcHJvcGVydGllcy5JbnRlcnBv
bGF0ZQogCiAKK2NsYXNzIEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyKGxvZ29ic2VydmVyLkJ1ZmZl
ckxvZ09ic2VydmVyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CisgICAg
ICAgIHNlbGYuaGVhZGVycyA9IFtdCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3Mp
CisKKyAgICBkZWYgaGVhZGVyUmVjZWl2ZWQoc2VsZiwgZGF0YSk6CisgICAgICAgIHNlbGYuaGVh
ZGVycy5hcHBlbmQoZGF0YSkKKworICAgIGRlZiBnZXRIZWFkZXJzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fZ2V0KHNlbGYuaGVhZGVycykKKworCiBjbGFzcyBDb25maWd1cmVCdWlsZChi
dWlsZHN0ZXAuQnVpbGRTdGVwKToKICAgICBuYW1lID0gJ2NvbmZpZ3VyZS1idWlsZCcKICAgICBk
ZXNjcmlwdGlvbiA9IFsnY29uZmlndXJpbmcgYnVpbGQnXQpAQCAtNzM0LDYgKzc0NywyMSBAQCBj
bGFzcyBCdWd6aWxsYU1peGluKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAg
ICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRlZiBzZW5kX2VtYWlsX2Zvcl9pbmZyYXN0cnVjdHVy
ZV9pc3N1ZShzZWxmLCBpbmZyYXN0cnVjdHVyZV9pc3N1ZV90ZXh0KToKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgYnVpbGRlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUn
LCAnJykKKyAgICAgICAgICAgIHdvcmtlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnd29ya2Vy
bmFtZScsICcnKQorICAgICAgICAgICAgYnVpbGRfdXJsID0gJ3t9Iy9idWlsZGVycy97fS9idWls
ZHMve30nLmZvcm1hdChzZWxmLm1hc3Rlci5jb25maWcuYnVpbGRib3RVUkwsIHNlbGYuYnVpbGQu
X2J1aWxkZXJpZCwgc2VsZi5idWlsZC5udW1iZXIpCisgICAgICAgICAgICBlbWFpbF9zdWJqZWN0
ID0gJ0luZnJhc3RydWN0dXJlIGlzc3VlIGF0IHt9Jy5mb3JtYXQoYnVpbGRlcl9uYW1lKQorICAg
ICAgICAgICAgZW1haWxfdGV4dCA9ICdUaGUgZm9sbG93aW5nIGluZnJhc3RydWN0dXJlIGlzc3Vl
IGhhcHBlbmVkIGF0OlxuXG4nCisgICAgICAgICAgICBlbWFpbF90ZXh0ICs9ICcgICAgLSBCdWls
ZCA6IHt9XG4nLmZvcm1hdChidWlsZF91cmwpCisgICAgICAgICAgICBlbWFpbF90ZXh0ICs9ICcg
ICAgLSBCdWlsZGVyIDoge31cbicuZm9ybWF0KGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgICAgIGVt
YWlsX3RleHQgKz0gJyAgICAtIFdvcmtlciA6IHt9XG4nLmZvcm1hdCh3b3JrZXJfbmFtZSkKKyAg
ICAgICAgICAgIGVtYWlsX3RleHQgKz0gJyAgICAtIElzc3VlOiB7fVxuJy5mb3JtYXQoaW5mcmFz
dHJ1Y3R1cmVfaXNzdWVfdGV4dCkKKyAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNo
ZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ2luZnJhc3RydWN0
dXJlLXt9Jy5mb3JtYXQoYnVpbGRlcl9uYW1lKSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh
cyBlOgorICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIGluZnJh
c3RydWN0dXJlIGlzc3VlOiB7fScuZm9ybWF0KGUpKQorCiAgICAgZGVmIGdldF9idWd6aWxsYV9h
cGlfa2V5KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwYXNzd29yZHMgPSBqc29u
LmxvYWQob3BlbigncGFzc3dvcmRzLmpzb24nKSkKQEAgLTExNzAsNiArMTE5OCw3IEBAIGNsYXNz
IFRyaWdnZXIodHJpZ2dlci5UcmlnZ2VyKToKICAgICAgICAgICAgIHByb3BlcnRpZXNfdG9fcGFz
c1snZXdzX3JldmlzaW9uJ10gPSBwcm9wZXJ0aWVzLlByb3BlcnR5KCdnb3RfcmV2aXNpb24nKQog
ICAgICAgICBpZiBzZWxmLnRyaWdnZXJzOgogICAgICAgICAgICAgcHJvcGVydGllc190b19wYXNz
Wyd0cmlnZ2VycyddID0gc2VsZi50cmlnZ2VycworICAgICAgICBwcm9wZXJ0aWVzX3RvX3Bhc3Nb
J3JldHJ5X2NvdW50J10gPSBwcm9wZXJ0aWVzLlByb3BlcnR5KCdyZXRyeV9jb3VudCcsIGRlZmF1
bHQ9MCkKICAgICAgICAgcmV0dXJuIHByb3BlcnRpZXNfdG9fcGFzcwogCiAKQEAgLTIyMTAsNyAr
MjIzOSw5IEBAIGNsYXNzIFJ1bldlYktpdFRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICBpZiBw
YXRjaF9hdXRob3IgaW4gWyd3ZWJraXQtd3B0LWltcG9ydC1ib3RAaWdhbGlhLmNvbSddOgogICAg
ICAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cyddKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zZXRD
b21tYW5kKHNlbGYuY29tbWFuZCArIFsnLS1leGl0LWFmdGVyLW4tZmFpbHVyZXMnLCBzZWxmLkVY
SVRfQUZURVJfRkFJTFVSRVMsICctLXNraXAtZmFpbGluZy10ZXN0cyddKQorICAgICAgICAgICAg
aWYgc2VsZi5FWElUX0FGVEVSX0ZBSUxVUkVTIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg
IHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tZXhpdC1hZnRlci1uLWZhaWx1cmVz
JywgJ3t9Jy5mb3JtYXQoc2VsZi5FWElUX0FGVEVSX0ZBSUxVUkVTKV0pCisgICAgICAgICAgICBz
ZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyctLXNraXAtZmFpbGluZy10ZXN0cyddKQog
CiAgICAgICAgIGlmIGFkZGl0aW9uYWxBcmd1bWVudHM6CiAgICAgICAgICAgICBzZWxmLnNldENv
bW1hbmQoc2VsZi5jb21tYW5kICsgYWRkaXRpb25hbEFyZ3VtZW50cykKQEAgLTIyMTgsOCArMjI0
OSw4IEBAIGNsYXNzIFJ1bldlYktpdFRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICBpZiBzZWxm
LkVOQUJMRV9HVUFSRF9NQUxMT0M6CiAgICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5j
b21tYW5kICsgWyctLWd1YXJkLW1hbGxvYyddKQogCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAg
ICAgICBzZWxmLmxvZ19vYnNlcnZlciA9IGxvZ29ic2VydmVyLkJ1ZmZlckxvZ09ic2VydmVyKHdh
bnRTdGRlcnI9VHJ1ZSkKKyAgICBkZWYgc3RhcnQoc2VsZiwgQnVmZmVyTG9nT2JzZXJ2ZXJDbGFz
cz1sb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcik6CisgICAgICAgIHNlbGYubG9nX29ic2Vy
dmVyID0gQnVmZmVyTG9nT2JzZXJ2ZXJDbGFzcyh3YW50U3RkZXJyPVRydWUpCiAgICAgICAgIHNl
bGYuYWRkTG9nT2JzZXJ2ZXIoJ3N0ZGlvJywgc2VsZi5sb2dfb2JzZXJ2ZXIpCiAgICAgICAgIHNl
bGYubG9nX29ic2VydmVyX2pzb24gPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcigpCiAg
ICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ2pzb24nLCBzZWxmLmxvZ19vYnNlcnZlcl9qc29u
KQpAQCAtMjI4MSw2ICsyMzEyLDcgQEAgY2xhc3MgUnVuV2ViS2l0VGVzdHMoc2hlbGwuVGVzdCk6
CiAgICAgICAgIGlmIGZpcnN0X3Jlc3VsdHM6CiAgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdmaXJzdF9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgZmlyc3RfcmVzdWx0cy5kaWRf
ZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCkKICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2ZpcnN0X3J1bl9mYWlsdXJlcycsIHNvcnRlZChmaXJzdF9yZXN1bHRzLmZhaWxpbmdfdGVzdHMp
KQorICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBzb3J0
ZWQoZmlyc3RfcmVzdWx0cy5mbGFreV90ZXN0cykpCiAgICAgICAgICAgICBpZiBmaXJzdF9yZXN1
bHRzLmZhaWxpbmdfdGVzdHM6CiAgICAgICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coc2VsZi50
ZXN0X2ZhaWx1cmVzX2xvZ19uYW1lLCAnXG4nLmpvaW4oZmlyc3RfcmVzdWx0cy5mYWlsaW5nX3Rl
c3RzKSkKICAgICAgICAgc2VsZi5fcGFyc2VSdW5XZWJLaXRUZXN0c091dHB1dChsb2dUZXh0KQpA
QCAtMjM5Miw2ICsyNDI0LDcgQEAgY2xhc3MgUmVSdW5XZWJLaXRUZXN0cyhSdW5XZWJLaXRUZXN0
cyk6CiAgICAgICAgIGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cyA9IHNldChzZWxmLmdldFBy
b3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbXSkpCiAgICAgICAgIHNlY29uZF9yZXN1bHRz
X2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnc2Vjb25k
X3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnKQogICAgICAgICBzZWNvbmRfcmVzdWx0c19m
YWlsaW5nX3Rlc3RzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmFpbHVyZXMn
LCBbXSkpCisgICAgICAgICMgRklYTUU6IGhlcmUgaXQgY2FuIGJlIGEgZ29vZCBpZGVhIHRvIGFs
c28gdXNlIHRoZSBpbmZvIGZyb20gc2Vjb25kX3J1bl9mbGFraWVzIGFuZCBmaXJzdF9ydW5fZmxh
a2llcwogICAgICAgICB0ZXN0c190aGF0X2NvbnNpc3RlbnRseV9mYWlsZWQgPSBmaXJzdF9yZXN1
bHRzX2ZhaWxpbmdfdGVzdHMuaW50ZXJzZWN0aW9uKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVz
dHMpCiAgICAgICAgIGZsYWt5X2ZhaWx1cmVzID0gZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3Rz
LnVuaW9uKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpIC0gZmlyc3RfcmVzdWx0c19mYWls
aW5nX3Rlc3RzLmludGVyc2VjdGlvbihzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKQogICAg
ICAgICBmbGFreV9mYWlsdXJlcyA9IHNvcnRlZChsaXN0KGZsYWt5X2ZhaWx1cmVzKSlbOnNlbGYu
TlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldCkBAIC0yNDMwLDYgKzI0NjMsNyBAQCBjbGFzcyBSZVJ1
bldlYktpdFRlc3RzKFJ1bldlYktpdFRlc3RzKToKICAgICAgICAgaWYgc2Vjb25kX3Jlc3VsdHM6
CiAgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcmVzdWx0c19leGNlZWRfZmFp
bHVyZV9saW1pdCcsIHNlY29uZF9yZXN1bHRzLmRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0
KQogICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIHNv
cnRlZChzZWNvbmRfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKSkKKyAgICAgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ3NlY29uZF9ydW5fZmxha2llcycsIHNvcnRlZChzZWNvbmRfcmVzdWx0cy5mbGFr
eV90ZXN0cykpCiAgICAgICAgICAgICBpZiBzZWNvbmRfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzOgog
ICAgICAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKHNlbGYudGVzdF9mYWlsdXJlc19sb2dfbmFt
ZSwgJ1xuJy5qb2luKHNlY29uZF9yZXN1bHRzLmZhaWxpbmdfdGVzdHMpKQogICAgICAgICBzZWxm
Ll9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ1RleHQpCkBAIC0yNDY5LDYgKzI1MDMsNyBA
QCBjbGFzcyBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaChSdW5XZWJLaXRUZXN0cyk6CiAgICAg
ICAgIGlmIGNsZWFuX3RyZWVfcmVzdWx0czoKICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2NsZWFuX3RyZWVfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIGNsZWFuX3RyZWVfcmVz
dWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCkKICAgICAgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgY2xlYW5fdHJlZV9yZXN1bHRzLmZh
aWxpbmdfdGVzdHMpCisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1
bl9mbGFraWVzJywgc29ydGVkKGNsZWFuX3RyZWVfcmVzdWx0cy5mbGFreV90ZXN0cykpCiAgICAg
ICAgICAgICBpZiBjbGVhbl90cmVlX3Jlc3VsdHMuZmFpbGluZ190ZXN0czoKICAgICAgICAgICAg
ICAgICBzZWxmLl9hZGRUb0xvZyhzZWxmLnRlc3RfZmFpbHVyZXNfbG9nX25hbWUsICdcbicuam9p
bihjbGVhbl90cmVlX3Jlc3VsdHMuZmFpbGluZ190ZXN0cykpCiAgICAgICAgIHNlbGYuX3BhcnNl
UnVuV2ViS2l0VGVzdHNPdXRwdXQobG9nVGV4dCkKQEAgLTI0OTksMTggKzI1MzQsMjIgQEAgY2xh
c3MgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRTdGVwLCBCdWd6aWxs
YU1peGluKToKICAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ2FuYWx5emUtbGF5b3V0LXRlc3RzLXJl
c3VsdHMnXQogICAgIE5VTV9GQUlMVVJFU19UT19ESVNQTEFZID0gMTAKIAotICAgIGRlZiByZXBv
cnRfZmFpbHVyZShzZWxmLCBuZXdfZmFpbHVyZXMpOgorICAgIGRlZiByZXBvcnRfZmFpbHVyZShz
ZWxmLCBuZXdfZmFpbHVyZXMsIGV4Y2VlZF9mYWlsdXJlX2xpbWl0PUZhbHNlKToKICAgICAgICAg
c2VsZi5maW5pc2hlZChGQUlMVVJFKQogICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBGQUlM
VVJFCiAgICAgICAgIGlmIG5vdCBuZXdfZmFpbHVyZXM6CiAgICAgICAgICAgICBtZXNzYWdlID0g
J0ZvdW5kIHVuZXhwZWN0ZWQgZmFpbHVyZSB3aXRoIHBhdGNoJwogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIGxlbihuZXdfZmFpbHVyZXMpID4gMSBlbHNl
ICcnCisgICAgICAgICAgICBpZiBleGNlZWRfZmFpbHVyZV9saW1pdDoKKyAgICAgICAgICAgICAg
ICBtZXNzYWdlID0gJ0ZhaWx1cmUgbGltaXQgZXhjZWVkLiBBdCBsZWFzdCBmb3VuZCcKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdGb3VuZCcKICAgICAgICAg
ICAgIG5ld19mYWlsdXJlc19zdHJpbmcgPSAnLCAnLmpvaW4oc29ydGVkKG5ld19mYWlsdXJlcylb
OnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQotICAgICAgICAgICAgbWVzc2FnZSA9ICdG
b3VuZCB7fSBuZXcgdGVzdCBmYWlsdXJle306IHt9Jy5mb3JtYXQobGVuKG5ld19mYWlsdXJlcyks
IHBsdXJhbFN1ZmZpeCwgbmV3X2ZhaWx1cmVzX3N0cmluZykKKyAgICAgICAgICAgIG1lc3NhZ2Ug
Kz0gJyB7fSBuZXcgdGVzdCBmYWlsdXJle306IHt9Jy5mb3JtYXQobGVuKG5ld19mYWlsdXJlcyks
IHBsdXJhbFN1ZmZpeCwgbmV3X2ZhaWx1cmVzX3N0cmluZykKICAgICAgICAgICAgIGlmIGxlbihu
ZXdfZmFpbHVyZXMpID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWToKICAgICAgICAgICAg
ICAgICBtZXNzYWdlICs9ICcgLi4uJwotICAgICAgICAgICAgc2VsZi5zZW5kX2VtYWlsX2Zvcl9u
ZXdfdGVzdF9mYWlsdXJlcyhuZXdfZmFpbHVyZXMpCisgICAgICAgICAgICBzZWxmLnNlbmRfZW1h
aWxfZm9yX25ld190ZXN0X2ZhaWx1cmVzKG5ld19mYWlsdXJlcywgZXhjZWVkX2ZhaWx1cmVfbGlt
aXQpCiAgICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVzc2FnZQogICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdidWlsZF9maW5pc2hfc3VtbWFyeScsIG1lc3NhZ2UpCiAKQEAgLTI1Njcs
NyArMjYwNiw3IEBAIGNsYXNzIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1
aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6CiAgICAgZGVmIF9yZXN1bHRzX2ZhaWxlZF9kaWZmZXJl
bnRfdGVzdHMoc2VsZiwgZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzLCBzZWNvbmRfcmVzdWx0
c19mYWlsaW5nX3Rlc3RzKToKICAgICAgICAgcmV0dXJuIGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190
ZXN0cyAhPSBzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzCiAKLSAgICBkZWYgc2VuZF9lbWFp
bF9mb3JfZmxha3lfZmFpbHVyZShzZWxmLCB0ZXN0X25hbWUpOgorICAgIGRlZiBzZW5kX2VtYWls
X2Zvcl9mbGFreV9mYWlsdXJlKHNlbGYsIHRlc3RfbmFtZSwgc3RlcF9zdHI9Tm9uZSk6CiAgICAg
ICAgIHRyeToKICAgICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1
aWxkZXJuYW1lJywgJycpCiAgICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVy
dHkoJ3dvcmtlcm5hbWUnLCAnJykKQEAgLTI1NzYsNiArMjYxNSw4IEBAIGNsYXNzIEFuYWx5emVM
YXlvdXRUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6CiAK
ICAgICAgICAgICAgIGVtYWlsX3N1YmplY3QgPSAnRmxha3kgdGVzdDoge30nLmZvcm1hdCh0ZXN0
X25hbWUpCiAgICAgICAgICAgICBlbWFpbF90ZXh0ID0gJ0ZsYWt5IHRlc3Q6IHt9XG5cbkJ1aWxk
OiB7fVxuXG5CdWlsZGVyOiB7fVxuXG5Xb3JrZXI6IHt9XG5cbkhpc3Rvcnk6IHt9Jy5mb3JtYXQo
dGVzdF9uYW1lLCBidWlsZF91cmwsIGJ1aWxkZXJfbmFtZSwgd29ya2VyX25hbWUsIGhpc3Rvcnlf
dXJsKQorICAgICAgICAgICAgaWYgc3RlcF9zdHI6CisgICAgICAgICAgICAgICAgZW1haWxfdGV4
dCArPSAnXG5UaGlzIHRlc3Qgd2FzIGZsYWt5IG9uIHRoZSBzdGVwczoge30nLmZvcm1hdChzdGVw
X3N0cikKICAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWlsX3N1Ympl
Y3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ2ZsYWt5LXt9Jy5mb3JtYXQodGVzdF9uYW1l
KSkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgcHJpbnQoJ0Vy
cm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIGZsYWt5IGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCkBA
IC0yNTkzLDcgKzI2MzQsNyBAQCBjbGFzcyBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzKGJ1aWxk
c3RlcC5CdWlsZFN0ZXAsIEJ1Z3ppbGxhTWl4aW4pOgogICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGU6CiAgICAgICAgICAgICBwcmludCgnRXJyb3IgaW4gc2VuZGluZyBlbWFpbCBmb3IgcHJl
LWV4aXN0aW5nIGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCiAKLSAgICBkZWYgc2VuZF9lbWFpbF9m
b3JfbmV3X3Rlc3RfZmFpbHVyZXMoc2VsZiwgdGVzdF9uYW1lcyk6CisgICAgZGVmIHNlbmRfZW1h
aWxfZm9yX25ld190ZXN0X2ZhaWx1cmVzKHNlbGYsIHRlc3RfbmFtZXMsIGV4Y2VlZF9mYWlsdXJl
X2xpbWl0PUZhbHNlKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcGF0Y2hfaWQgPSBzZWxm
LmdldFByb3BlcnR5KCdwYXRjaF9pZCcsICcnKQogICAgICAgICAgICAgaWYgbm90IHNlbGYuc2hv
dWxkX3NlbmRfZW1haWwocGF0Y2hfaWQpOgpAQCAtMjYxNSw2ICsyNjU2LDggQEAgY2xhc3MgQW5h
bHl6ZUxheW91dFRlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRTdGVwLCBCdWd6aWxsYU1peGlu
KToKICAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJyB3aGlsZSB0ZXN0aW5nIDxhIGhyZWY9Int9
Ij5QYXRjaCB7fTwvYT4nLmZvcm1hdChCdWd6aWxsYS5wYXRjaF91cmwocGF0Y2hfaWQpLCBwYXRj
aF9pZCkKICAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJyBmb3IgPGEgaHJlZj0ie30iPkJ1ZyB7
fTwvYT4uJy5mb3JtYXQoQnVnemlsbGEuYnVnX3VybChidWdfaWQpLCBidWdfaWQpCiAgICAgICAg
ICAgICBlbWFpbF90ZXh0ICs9ICdcblxuRnVsbCBkZXRhaWxzIGFyZSBhdmFpbGFibGUgYXQ6IHt9
XG5cblBhdGNoIGF1dGhvcjoge30nLmZvcm1hdChidWlsZF91cmwsIHBhdGNoX2F1dGhvcikKKyAg
ICAgICAgICAgIGlmIGV4Y2VlZF9mYWlsdXJlX2xpbWl0OgorICAgICAgICAgICAgICAgIGVtYWls
X3RleHQgKz0gJ1xuXG5BZGl0aW9uYWxseSB0aGUgZmFpbHVyZSBsaW1pdCBoYXMgYmVlbiBleGNl
ZWRlZCwgc28gdGhlIHRlc3Qgc3VpdGUgaGFzIGJlZW4gdGVybWluYXRlZCBlYXJseS4gSXQgaXMg
bGlrZWx5IHRoYXQgdGhlcmUgd291bGQgYmUgbW9yZSBmYWlsdXJlcyB0aGFuIHRoZSBvbmVzIGxp
c3RlZCBiZWxvdy4nCiAgICAgICAgICAgICBlbWFpbF90ZXh0ICs9ICdcblxuTGF5b3V0IHRlc3Qg
ZmFpbHVyZXt9Olxue30nLmZvcm1hdChwbHVyYWxTdWZmaXgsIHRlc3RfbmFtZXNfc3RyaW5nKQog
ICAgICAgICAgICAgZW1haWxfdGV4dCArPSAnXG5cblRvIHVuc3Vic2NyaWJlIGZyb20gdGhlc2Ug
bm90aWZpY2F0aW9ucyBvciB0byBwcm92aWRlIGFueSBmZWVkYmFjayBwbGVhc2UgZW1haWwgYWFr
YXNoX2phaW5AYXBwbGUuY29tJwogICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywg
J1NlbmRpbmcgZW1haWwgbm90aWZpY2F0aW9uIHRvIHt9Jy5mb3JtYXQocGF0Y2hfYXV0aG9yKSkK
QEAgLTI2NDEsNyArMjY4NCw3IEBAIGNsYXNzIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMoYnVp
bGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6CiAgICAgICAgICAgICBjbGVhbl90cmVl
X3J1bl9zdGF0dXMgPSBzZWxmLmdldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9zdGF0dXMnLCBG
QUlMVVJFKQogICAgICAgICAgICAgaWYgY2xlYW5fdHJlZV9ydW5fc3RhdHVzID09IFNVQ0NFU1M6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoc2V0KCkpCi0gICAg
ICAgICAgICAjIFRPRE86IGVtYWlsIEVXUyBhZG1pbnMKKyAgICAgICAgICAgIHNlbGYuc2VuZF9l
bWFpbF9mb3JfaW5mcmFzdHJ1Y3R1cmVfaXNzdWUoJ0JvdGggZmlyc3QgYW5kIHNlY29uZCBsYXlv
dXQtdGVzdCBydW5zIHdpdGggcGF0Y2ggZ2VuZXJhdGVkIG5vIGxpc3Qgb2YgcmVzdWx0cyBidXQg
ZXhpdGVkIHdpdGggZXJyb3IsIGFuZCB0aGUgY2xlYW5fdHJlZSB3aXRob3V0IHBhdGNoIHJldHJ5
IGFsc28gZmFpbGVkLicpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXRyeV9idWlsZCgnVW5l
eHBlY3RlZCBpbmZyYXN0cnVjdHVyZSBpc3N1ZSwgcmV0cnlpbmcgYnVpbGQnKQogCiAgICAgICAg
IGlmIGZpcnN0X3Jlc3VsdHNfZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQgYW5kIHNlY29u
ZF9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0OgpAQCAtMjY2OCw2ICsyNzEx
LDcgQEAgY2xhc3MgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRTdGVw
LCBCdWd6aWxsYU1peGluKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfZmFp
bHVyZShmYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoKQogICAgICAgICAgICAgcmV0dXJuIHNl
bGYucmV0cnlfYnVpbGQoKQogCisgICAgICAgICMgRklYTUU6IEhlcmUgaXQgY291bGQgYmUgYSBn
b29kIGlkZWEgdG8gYWxzbyB1c2UgdGhlIGluZm8gb2YgcmVzdWx0cy5mbGFreV90ZXN0cyBmcm9t
IHRoZSBydW5zCiAgICAgICAgIGlmIHNlbGYuX3Jlc3VsdHNfZmFpbGVkX2RpZmZlcmVudF90ZXN0
cyhmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMsIHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVz
dHMpOgogICAgICAgICAgICAgdGVzdHNfdGhhdF9vbmx5X2ZhaWxlZF9maXJzdCA9IGZpcnN0X3Jl
c3VsdHNfZmFpbGluZ190ZXN0cy5kaWZmZXJlbmNlKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVz
dHMpCiAgICAgICAgICAgICBzZWxmLl9yZXBvcnRfZmxha3lfdGVzdHModGVzdHNfdGhhdF9vbmx5
X2ZhaWxlZF9maXJzdCkKQEAgLTI3MDYsNiArMjc1MCwyOTUgQEAgY2xhc3MgUnVuV2ViS2l0MVRl
c3RzKFJ1bldlYktpdFRlc3RzKToKICAgICAgICAgcmV0dXJuIFJ1bldlYktpdFRlc3RzLnN0YXJ0
KHNlbGYpCiAKIAorIyBUaGlzIGlzIGEgc3BlY2lhbGl6ZWQgY2xhc3MgZGVzaWduZWQgdG8gY29w
ZSB3aXRoIGEgdHJlZSB0aGF0IGlzIG5vdCBhbHdheXMgZ3JlZW4uCisjIEl0IHRyaWVzIGhhcmQg
dG8gYXZvaWQgcmVwb3J0aW5nIGFueSBmYWxzZSBwb3NpdGl2ZSwgc28gaXQgd2lsbCBvbmx5IHJl
cG9ydCBuZXcKKyMgY29uc2lzdGVudCBmYWlsdXJlcyAoZmFpbCBhbHdheXMgd2l0aCB0aGUgcGF0
Y2ggYW5kIHBhc3MgYWx3YXlzIHdpdGhvdXQgaXQpLgorY2xhc3MgUnVuV2ViS2l0VGVzdHNSZWRU
cmVlKFJ1bldlYktpdFRlc3RzKToKKyAgICBFWElUX0FGVEVSX0ZBSUxVUkVTID0gNTAwCisKKyAg
ICBkZWYgX2RpZF9jb21tYW5kX3RpbWVkX291dChzZWxmLCBsb2dIZWFkZXJzVGV4dCk6CisgICAg
ICAgIHRpbWVkX291dF9saW5lX3N0YXJ0ID0gJ2NvbW1hbmQgdGltZWQgb3V0OiB7fSBzZWNvbmRz
IGVsYXBzZWQgcnVubmluZycuZm9ybWF0KHNlbGYuTUFYX1NFQ09ORFNfU1RFUF9SVU4pCisgICAg
ICAgIHRpbWVkX291dF9saW5lX2VuZCA9ICdhdHRlbXB0aW5nIHRvIGtpbGwnCisgICAgICAgIGZv
ciBsaW5lIGluIGxvZ0hlYWRlcnNUZXh0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGxpbmUg
PSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCh0aW1lZF9vdXRf
bGluZV9zdGFydCkgYW5kIGxpbmUuZW5kc3dpdGgodGltZWRfb3V0X2xpbmVfZW5kKToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBl
dmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKKyAgICAgICAgZmlyc3RfcmVzdWx0c19mYWlsaW5n
X3Rlc3RzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFtdKSkK
KyAgICAgICAgZmlyc3RfcmVzdWx0c19mbGFreV90ZXN0cyA9IHNldChzZWxmLmdldFByb3BlcnR5
KCdmaXJzdF9ydW5fZmxha2llcycsIFtdKSkKKyAgICAgICAgcmMgPSBzZWxmLmV2YWx1YXRlUmVz
dWx0KGNtZCkKKyAgICAgICAgbmV4dF9zdGVwcyA9IFtBcmNoaXZlVGVzdFJlc3VsdHMoKSwgVXBs
b2FkVGVzdFJlc3VsdHMoKSwgRXh0cmFjdFRlc3RSZXN1bHRzKCldCisgICAgICAgIGlmIGZpcnN0
X3Jlc3VsdHNfZmFpbGluZ190ZXN0czoKKyAgICAgICAgICAgIG5leHRfc3RlcHMuZXh0ZW5kKFtW
YWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksIEtpbGxP
bGRQcm9jZXNzZXMoKSwgUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1JlZFRyZWUoKV0pCisg
ICAgICAgIGVsaWYgZmlyc3RfcmVzdWx0c19mbGFreV90ZXN0czoKKyAgICAgICAgICAgIG5leHRf
c3RlcHMuYXBwZW5kKEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHNSZWRUcmVlKCkpCisgICAgICAg
IGVsaWYgcmMgPT0gU1VDQ0VTUyBvciByYyA9PSBXQVJOSU5HUzoKKyAgICAgICAgICAgIG5leHRf
c3RlcHMgPSBOb25lCisgICAgICAgICAgICBtZXNzYWdlID0gJ1Bhc3NlZCBsYXlvdXQgdGVzdHMn
CisgICAgICAgICAgICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UKKyAgICAgICAgICAg
IHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKKyAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2J1aWxkX3N1bW1hcnknLCBtZXNzYWdlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
IyBXZSBoYXZlIGEgZmFpbHVyZSByZXR1cm4gY29kZSwgYnV0IG5vdCBhIGxpc3Qgb2YgZmFpbGVk
IG9yIGZsYWt5IHRlc3RzLgorICAgICAgICAgICAgIyBTbyByZXRyeSByZS1ydW5uaW5nIHRoZSBf
d2hvbGVfIGxheW91dCB0ZXN0cyB3aXRob3V0LXBhdGNoIHRvIHNlZSBpZgorICAgICAgICAgICAg
IyB0aGlzIHVuZXhwZWN0ZWQgZmFpbHVyZSB3YXMgcHJlLWV4aXN0ZW50LiBJZiB0aGUgZmFpbHVy
ZSB3YXMgbm90IHByZS1leGlzdGVudCwKKyAgICAgICAgICAgICMgdGhlbiB3ZSB3b3VsZCBub3Qg
cmVwb3J0IGEgbGlzdCBvZiBmYWlsZWQgdGVzdCwganVzdCBhIGdlbmVyaWMgInVua25vd24iIGZh
aWx1cmUuCisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaEZhaWxlZFRlc3RzJywg
VHJ1ZSkKKyAgICAgICAgICAgIG5leHRfc3RlcHMuZXh0ZW5kKFtVbkFwcGx5UGF0Y2hJZlJlcXVp
cmVkKCksIENvbXBpbGVXZWJLaXRXaXRob3V0UGF0Y2gocmV0cnlfYnVpbGRfb25fZmFpbHVyZT1U
cnVlKSwgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2Up
LCBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaFJlZFRyZWUoKV0pCisgICAgICAgIGlmIG5leHRf
c3RlcHM6CisgICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChu
ZXh0X3N0ZXBzKQorICAgICAgICByZXR1cm4gcmMKKworCitjbGFzcyBSdW5XZWJLaXRUZXN0c1Jl
cGVhdEZhaWx1cmVzUmVkVHJlZShSdW5XZWJLaXRUZXN0c1JlZFRyZWUpOgorICAgIG5hbWUgPSAn
bGF5b3V0LXRlc3RzLXJlcGVhdC1mYWlsdXJlcycKKyAgICBOVU1fUkVQRUFUU19QRVJfVEVTVCA9
IDEwCisgICAgRVhJVF9BRlRFUl9GQUlMVVJFUyA9IE5vbmUKKyAgICBNQVhfU0VDT05EU19TVEVQ
X1JVTiA9IDE4MDAwICAjIDVoCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgor
ICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1heFRpbWU9c2VsZi5NQVhfU0VDT05EU19TVEVQX1JV
TiwgKiprd2FyZ3MpCisKKyAgICBkZWYgc2V0TGF5b3V0VGVzdENvbW1hbmQoc2VsZik6CisgICAg
ICAgIHN1cGVyKCkuc2V0TGF5b3V0VGVzdENvbW1hbmQoKQorICAgICAgICBmaXJzdF9yZXN1bHRz
X2ZhaWxpbmdfdGVzdHMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVz
JywgW10pKQorICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyctLXJlcGVh
dC1lYWNoPSVzJyAlIHNlbGYuTlVNX1JFUEVBVFNfUEVSX1RFU1RdICsgc29ydGVkKGZpcnN0X3Jl
c3VsdHNfZmFpbGluZ190ZXN0cykpCisKKyAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNt
ZCk6CisgICAgICAgIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lf
ZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVy
ZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFtdKSkKKyAgICAgICAgd2l0aF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3dp
dGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFtdKSkKKyAgICAgICAg
d2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQgPSBzZWxmLmdldFByb3BlcnR5KCd3
aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcsIEZhbHNlKQorICAgICAgICBmaXJz
dF9yZXN1bHRzX2ZsYWt5X3Rlc3RzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9m
bGFraWVzJywgW10pKQorICAgICAgICByYyA9IHNlbGYuZXZhbHVhdGVSZXN1bHQoY21kKQorICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXRjb2Rl
JywgcmMpCisgICAgICAgIG5leHRfc3RlcHMgPSBbQXJjaGl2ZVRlc3RSZXN1bHRzKCksIFVwbG9h
ZFRlc3RSZXN1bHRzKGlkZW50aWZpZXI9J3JlcGVhdC1mYWlsdXJlcycpLCBFeHRyYWN0VGVzdFJl
c3VsdHMoaWRlbnRpZmllcj0ncmVwZWF0LWZhaWx1cmVzJyldCisgICAgICAgIGlmIHdpdGhfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMgb3Igd2l0aF9wYXRj
aF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQ6CisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdwYXRjaEZhaWxlZFRlc3RzJywgVHJ1ZSkKKyAgICAgICAgICAgIG5leHRfc3RlcHMuZXh0ZW5k
KFtWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksIEtp
bGxPbGRQcm9jZXNzZXMoKSwgVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpLCBDb21waWxlV2ViS2l0
V2l0aG91dFBhdGNoKHJldHJ5X2J1aWxkX29uX2ZhaWx1cmU9VHJ1ZSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFk
ZFVSTHM9RmFsc2UpLCBSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzV2l0aG91dFBhdGNoUmVk
VHJlZSgpXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5leHRfc3RlcHMuYXBwZW5kKEFu
YWx5emVMYXlvdXRUZXN0c1Jlc3VsdHNSZWRUcmVlKCkpCisgICAgICAgIGlmIG5leHRfc3RlcHM6
CisgICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChuZXh0X3N0
ZXBzKQorICAgICAgICByZXR1cm4gcmMKKworICAgIGRlZiBjb21tYW5kQ29tcGxldGUoc2VsZiwg
Y21kKToKKyAgICAgICAgc2hlbGwuVGVzdC5jb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKQorICAg
ICAgICBsb2dUZXh0ID0gc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0U3Rkb3V0KCkgKyBzZWxmLmxvZ19v
YnNlcnZlci5nZXRTdGRlcnIoKQorICAgICAgICBsb2dUZXh0SnNvbiA9IHNlbGYubG9nX29ic2Vy
dmVyX2pzb24uZ2V0U3Rkb3V0KCkKKyAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNf
cmVzdWx0cyA9IExheW91dFRlc3RGYWlsdXJlcy5yZXN1bHRzX2Zyb21fc3RyaW5nKGxvZ1RleHRK
c29uKQorICAgICAgICBpZiB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzOgorICAg
ICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVz
dWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jl
c3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQpCisgICAgICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2Zh
aWx1cmVzJywgc29ydGVkKHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHMuZmFpbGlu
Z190ZXN0cykpCisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVh
dF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBzb3J0ZWQod2l0aF9wYXRjaF9yZXBlYXRfZmFp
bHVyZXNfcmVzdWx0cy5mbGFreV90ZXN0cykpCisgICAgICAgICAgICBpZiB3aXRoX3BhdGNoX3Jl
cGVhdF9mYWlsdXJlc19yZXN1bHRzLmZhaWxpbmdfdGVzdHM6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fYWRkVG9Mb2coc2VsZi50ZXN0X2ZhaWx1cmVzX2xvZ19uYW1lLCAnXG4nLmpvaW4od2l0aF9w
YXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKSkKKyAgICAgICAgY29t
bWFuZF90aW1lZG91dCA9IHNlbGYuX2RpZF9jb21tYW5kX3RpbWVkX291dChzZWxmLmxvZ19vYnNl
cnZlci5nZXRIZWFkZXJzKCkpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hf
cmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0JywgY29tbWFuZF90aW1lZG91dCkKKyAgICAgICAgc2Vs
Zi5fcGFyc2VSdW5XZWJLaXRUZXN0c091dHB1dChsb2dUZXh0KQorCisgICAgZGVmIHN0YXJ0KHNl
bGYpOgorICAgICAgICAjIGJ1aWxkYm90IG1lc3NhZ2VzIGFib3V0IHRpbWVvdXQgcmVhY2hlZCBh
cHBlYXIgb24gdGhlIGhlYWRlciBzdHJlYW0gb2YgQnVmZmVyTG9nCisgICAgICAgIHJldHVybiBz
dXBlcigpLnN0YXJ0KEJ1ZmZlckxvZ09ic2VydmVyQ2xhc3M9QnVmZmVyTG9nSGVhZGVyT2JzZXJ2
ZXIpCisKKworY2xhc3MgUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1dpdGhvdXRQYXRjaFJl
ZFRyZWUoUnVuV2ViS2l0VGVzdHNSZWRUcmVlKToKKyAgICBuYW1lID0gJ2xheW91dC10ZXN0cy1y
ZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1wYXRjaCcKKyAgICBOVU1fUkVQRUFUU19QRVJfVEVTVCA9
IDEwCisgICAgRVhJVF9BRlRFUl9GQUlMVVJFUyA9IE5vbmUKKyAgICBNQVhfU0VDT05EU19TVEVQ
X1JVTiA9IDEwODAwICAjIDNoCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgor
ICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1heFRpbWU9c2VsZi5NQVhfU0VDT05EU19TVEVQX1JV
TiwgKiprd2FyZ3MpCisKKyAgICBkZWYgc2V0TGF5b3V0VGVzdENvbW1hbmQoc2VsZik6CisgICAg
ICAgIHN1cGVyKCkuc2V0TGF5b3V0VGVzdENvbW1hbmQoKQorICAgICAgICB3aXRoX3BhdGNoX25v
bmZsYWt5X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0
X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIGZpcnN0
X3J1bl9mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMn
LCBbXSkpCisgICAgICAgIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0ID0gc2Vs
Zi5nZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBGYWxz
ZSkKKyAgICAgICAgZmFpbHVyZXNfdG9fcmVwZWF0ID0gZmlyc3RfcnVuX2ZhaWx1cmVzIGlmIHdp
dGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0IGVsc2Ugd2l0aF9wYXRjaF9ub25mbGFr
eV9mYWlsdXJlcworICAgICAgICAjIFBhc3MgJy0tc2tpcHBlZD1hbHdheXMnIHRvIGVuc3VyZSB0
aGF0IGFueSB0ZXN0IHBhc3NlZCB2aWEgY29tbWFuZCBsaW5lIGFyZ3VtZW50cworICAgICAgICAj
IGlzIHNraXBwZWQgYW55d2F5cyBpZiBpcyBtYXJrZWQgYXMgc3VjaCBvbiB0aGUgRXhwZWN0YXRp
b24gZmlsZXMgb3IgaWYgaXMgbWFya2VkCisgICAgICAgICMgYXMgZmFpbHVyZSAoc2luY2Ugd2Ug
YXJlIHBhc3NpbmcgYWxzbyAnLS1za2lwLWZhaWxpbmctdGVzdHMnKS4gVGhhdCB3YXkgd2UgZW5z
dXJlCisgICAgICAgICMgdG8gcmVwb3J0IHRoZSBjYXNlIG9mIGEgcGF0Y2ggcmVtb3ZpbmcgYW4g
ZXhwZWN0YXRpb24gdGhhdCBzdGlsbCBmYWlscyB3aXRoIGl0LgorICAgICAgICBzZWxmLnNldENv
bW1hbmQoc2VsZi5jb21tYW5kICsgWyctLXJlcGVhdC1lYWNoPSVzJyAlIHNlbGYuTlVNX1JFUEVB
VFNfUEVSX1RFU1QsICctLXNraXBwZWQ9YWx3YXlzJ10gKyBzb3J0ZWQoZmFpbHVyZXNfdG9fcmVw
ZWF0KSkKKworICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKKyAgICAgICAgcmMg
PSBzZWxmLmV2YWx1YXRlUmVzdWx0KGNtZCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0
aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29kZScsIHJjKQorICAgICAgICBzZWxmLmJ1
aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChbQXJjaGl2ZVRlc3RSZXN1bHRzKCksIFVwbG9h
ZFRlc3RSZXN1bHRzKGlkZW50aWZpZXI9J3JlcGVhdC1mYWlsdXJlcy13aXRob3V0LXBhdGNoJyks
IEV4dHJhY3RUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdyZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1w
YXRjaCcpLCBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzUmVkVHJlZSgpXSkKKyAgICAgICAgcmV0
dXJuIHJjCisKKyAgICBkZWYgY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCk6CisgICAgICAgIHNo
ZWxsLlRlc3QuY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCkKKyAgICAgICAgbG9nVGV4dCA9IHNl
bGYubG9nX29ic2VydmVyLmdldFN0ZG91dCgpICsgc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0U3RkZXJy
KCkKKyAgICAgICAgbG9nVGV4dEpzb24gPSBzZWxmLmxvZ19vYnNlcnZlcl9qc29uLmdldFN0ZG91
dCgpCisgICAgICAgIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHMgPSBMYXlv
dXRUZXN0RmFpbHVyZXMucmVzdWx0c19mcm9tX3N0cmluZyhsb2dUZXh0SnNvbikKKyAgICAgICAg
aWYgd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0czoKKyAgICAgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZXhj
ZWVkX2ZhaWx1cmVfbGltaXQnLCB3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRz
LmRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0KQorICAgICAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWls
dXJlcycsIHNvcnRlZCh3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzLmZhaWxp
bmdfdGVzdHMpKQorICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgc29ydGVkKHdpdGhvdXRfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHMuZmxha3lfdGVzdHMpKQorICAgICAgICAgICAgaWYgd2l0aG91
dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2FkZFRvTG9nKHNlbGYudGVzdF9mYWlsdXJlc19sb2dfbmFtZSwgJ1xuJy5q
b2luKHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHMuZmFpbGluZ190ZXN0cykp
CisgICAgICAgIGNvbW1hbmRfdGltZWRvdXQgPSBzZWxmLl9kaWRfY29tbWFuZF90aW1lZF9vdXQo
c2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0SGVhZGVycygpKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcsIGNvbW1hbmRfdGltZWRv
dXQpCisgICAgICAgIHNlbGYuX3BhcnNlUnVuV2ViS2l0VGVzdHNPdXRwdXQobG9nVGV4dCkKKwor
ICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgIyBidWlsZGJvdCBtZXNzYWdlcyBhYm91dCB0
aW1lb3V0IHJlYWNoZWQgYXBwZWFyIG9uIHRoZSBoZWFkZXIgc3RyZWFtIG9mIEJ1ZmZlckxvZwor
ICAgICAgICByZXR1cm4gc3VwZXIoKS5zdGFydChCdWZmZXJMb2dPYnNlcnZlckNsYXNzPUJ1ZmZl
ckxvZ0hlYWRlck9ic2VydmVyKQorCisKK2NsYXNzIFJ1bldlYktpdFRlc3RzV2l0aG91dFBhdGNo
UmVkVHJlZShSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaCk6CisgICAgRVhJVF9BRlRFUl9GQUlM
VVJFUyA9IDUwMAorCisgICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgorICAgICAg
ICByYyA9IHNoZWxsLlRlc3QuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkKKyAgICAgICAgc2Vs
Zi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0FyY2hpdmVUZXN0UmVzdWx0cygpLCBV
cGxvYWRUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdjbGVhbi10cmVlJyksIEV4dHJhY3RUZXN0UmVz
dWx0cyhpZGVudGlmaWVyPSdjbGVhbi10cmVlJyksIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHNS
ZWRUcmVlKCldKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9zdGF0
dXMnLCByYykKKyAgICAgICAgcmV0dXJuIHJjCisKKworY2xhc3MgQW5hbHl6ZUxheW91dFRlc3Rz
UmVzdWx0c1JlZFRyZWUoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyk6CisgICAgTUFYX1JFVFJZ
ID0gMworCisgICAgZGVmIHJlcG9ydF9zdWNjZXNzKHNlbGYpOgorICAgICAgICBzZWxmLmZpbmlz
aGVkKFNVQ0NFU1MpCisgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKKyAgICAg
ICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSAnUGFzc2VkIGxheW91dCB0ZXN0cycKKyAgICAgICAg
bWVzc2FnZSA9ICcnCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkX3N1bW1hcnknLCBt
ZXNzYWdlKQorICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25lKQorCisgICAgZGVmIHJl
cG9ydF93YXJuaW5nKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBzZWxmLmZpbmlzaGVkKFdBUk5J
TkdTKQorICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBXQVJOSU5HUworICAgICAgICBzZWxm
LmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVp
bGRfc3VtbWFyeScsIG1lc3NhZ2UpCisgICAgICAgIHJldHVybiBkZWZlci5zdWNjZWVkKE5vbmUp
CisKKyAgICBkZWYgcmVwb3J0X2luZnJhc3RydWN0dXJlX2lzc3VlX2FuZF9tYXliZV9yZXRyeV9i
dWlsZChzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgcmV0cnlfY291bnQgPSBpbnQoc2VsZi5nZXRQ
cm9wZXJ0eSgncmV0cnlfY291bnQnLCAwKSkKKyAgICAgICAgaWYgcmV0cnlfY291bnQgPj0gc2Vs
Zi5NQVhfUkVUUlk6CisgICAgICAgICAgICBtZXNzYWdlICs9ICdcblJlYWNoZWQgdGhlIG1heGlt
dW0gbnVtYmVyIG9mIHJldHJpZXMgKHt9KS4gVW5hYmxlIHRvIGRldGVybWluZSBpZiBwYXRjaCBp
cyBiYWQgb3IgdGhlcmUgaXMgYSBwcmUtZXhpc3RlbnQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWUuJy5m
b3JtYXQoc2VsZi5NQVhfUkVUUlkpCisgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2lu
ZnJhc3RydWN0dXJlX2lzc3VlKG1lc3NhZ2UpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBv
cnRfd2FybmluZyhtZXNzYWdlKQorICAgICAgICBtZXNzYWdlICs9ICJcblJldHJ5aW5nIGJ1aWxk
IFtyZXRyeSBjb3VudCBpcyB7fSBvZiB7fV0iLmZvcm1hdChyZXRyeV9jb3VudCwgc2VsZi5NQVhf
UkVUUlkpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3JldHJ5X2NvdW50JywgcmV0cnlfY291
bnQgKyAxKQorICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2luZnJhc3RydWN0dXJlX2lzc3Vl
KG1lc3NhZ2UpCisgICAgICAgIHJldHVybiBzZWxmLnJldHJ5X2J1aWxkKG1lc3NhZ2U9J1VuZXhw
ZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWU6IHt9Jy5mb3JtYXQobWVzc2FnZSkpCisKKyAgICBk
ZWYgc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0ZW50X2ZhaWx1cmVzKHNlbGYsIHRlc3RfbmFtZXMp
OgorICAgICAgICB0cnk6CisgICAgICAgICAgICBidWlsZGVyX25hbWUgPSBzZWxmLmdldFByb3Bl
cnR5KCdidWlsZGVybmFtZScsICcnKQorICAgICAgICAgICAgd29ya2VyX25hbWUgPSBzZWxmLmdl
dFByb3BlcnR5KCd3b3JrZXJuYW1lJywgJycpCisgICAgICAgICAgICBidWlsZF91cmwgPSAne30j
L2J1aWxkZXJzL3t9L2J1aWxkcy97fScuZm9ybWF0KHNlbGYubWFzdGVyLmNvbmZpZy5idWlsZGJv
dFVSTCwgc2VsZi5idWlsZC5fYnVpbGRlcmlkLCBzZWxmLmJ1aWxkLm51bWJlcikKKyAgICAgICAg
ICAgIG51bWJlcl9mYWlsdXJlcyA9IGxlbih0ZXN0X25hbWVzKQorICAgICAgICAgICAgcGx1cmFs
U3VmZml4ID0gJ3MnIGlmIG51bWJlcl9mYWlsdXJlcyA+IDEgZWxzZSAnJworCisgICAgICAgICAg
ICBlbWFpbF9zdWJqZWN0ID0gJ0luZm8gYWJvdXQge30gcHJlLWV4aXN0ZW50IGZhaWx1cmV7fSBh
dCB7fScuZm9ybWF0KG51bWJlcl9mYWlsdXJlcywgcGx1cmFsU3VmZml4LCBidWlsZGVyX25hbWUp
CisgICAgICAgICAgICBlbWFpbF90ZXN0ID0gJ0luZm8gYWJvdXQgcHJlLWV4aXN0ZW50IChub24t
Zmxha3kpIHRlc3QgZmFpbHVyZXt9IGF0IEVXUzpcbicuZm9ybWF0KHBsdXJhbFN1ZmZpeCkKKyAg
ICAgICAgICAgIGVtYWlsX3RleHQgPSAnICAgIC0gQnVpbGQgOiB7fVxuJy5mb3JtYXQoYnVpbGRf
dXJsKQorICAgICAgICAgICAgZW1haWxfdGV4dCA9ICcgICAgLSBCdWlsZGVyIDoge31cbicuZm9y
bWF0KGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgICAgIGVtYWlsX3RleHQgPSAnICAgIC0gV29ya2Vy
IDoge31cbicuZm9ybWF0KHdvcmtlcl9uYW1lKQorICAgICAgICAgICAgZm9yIHRlc3RfbmFtZSBp
biBzb3J0ZWQodGVzdF9uYW1lcyk6CisgICAgICAgICAgICAgICAgaGlzdG9yeV91cmwgPSAne30/
c3VpdGU9bGF5b3V0LXRlc3RzJnRlc3Q9e30nLmZvcm1hdChSRVNVTFRTX0RCX1VSTCwgdGVzdF9u
YW1lKQorICAgICAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJ1xuLSB7fSAoPGEgaHJlZj0ie30i
PnRlc3QgaGlzdG9yeTwvYT4pJy5mb3JtYXQodGVzdF9uYW1lLCBoaXN0b3J5X3VybCkKKyAgICAg
ICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3Rl
eHQsIGJ1aWxkZXJfbmFtZSwgJ3ByZWV4aXN0aW5nLXt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKKyAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGlu
IHNlbmRpbmcgZW1haWwgZm9yIGZsYWt5IGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCisKKyAgICBk
ZWYgc3RhcnQoc2VsZik6CisgICAgICAgICMgUnVuIHdpdGggcGF0Y2gsIHJ1bm5pbmcgdGhlIHdo
b2xlIGxheW91dCB0ZXN0IHN1aXRlCisgICAgICAgIGZpcnN0X3Jlc3VsdHNfZXhjZWVkX2ZhaWx1
cmVfbGltaXQgPSBzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJl
X2xpbWl0JywgRmFsc2UpCisgICAgICAgIGZpcnN0X3J1bl9mYWlsdXJlcyA9IHNldChzZWxmLmdl
dFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIGZpcnN0X3J1bl9m
bGFraWVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgW10pKQor
CisgICAgICAgICMgUnVuIHdpdGggcGF0Y2gsIHJ1bm5pbmcgZmlyc3RfcnVuX2ZhaWx1cmVzIDEw
IHRpbWVzIGVhY2ggdGVzdAorICAgICAgICB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1
bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIEZhbHNlKQorICAg
ICAgICB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVz
ID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIHdpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfZmxha2llcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCd3aXRoX3BhdGNo
X3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbXSkpCisgICAgICAgIHdpdGhfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnd2l0aF9wYXRj
aF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBGYWxzZSkKKworICAgICAgICAjIFJ1biB3aXRo
b3V0IHBhdGNoLCBydW5uaW5nIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9u
Zmxha3lfZmFpbHVyZXMgMTAgdGltZXMgZWFjaCB0ZXN0CisgICAgICAgIHdpdGhvdXRfcGF0Y2hf
cmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQgPSBzZWxmLmdldFBy
b3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2V4Y2VlZF9mYWls
dXJlX2xpbWl0JywgRmFsc2UpCisgICAgICAgIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVz
X3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnd2l0aG91
dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFtdKSkK
KyAgICAgICAgd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzID0g
c2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfZmxha2llcycsIFtdKSkKKyAgICAgICAgd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNf
dGltZWRvdXQgPSBzZWxmLmdldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJl
c190aW1lZG91dCcsIEZhbHNlKQorCisgICAgICAgICMgQ2hlY2sgZm9yIHVuZXhwZWN0ZWQgc2l0
dWF0aW9ucyBhbmQgd2FybiBFV1MgYm90IHdhdGNoZXJzIG9yIGF1dGhvciBwb3RlbnRpYWxseSBy
ZXRyeWluZyB0aGUgYnVpbGQuCisgICAgICAgIGlmIChub3QgZmlyc3RfcnVuX2ZhaWx1cmVzKSBh
bmQgKG5vdCBmaXJzdF9ydW5fZmxha2llcyk6CisgICAgICAgICAgICAjIElmIHdlJ3ZlIG1hZGUg
aXQgaGVyZSwgdGhlIGZpcnN0X3J1biBmYWlsZWQsIHdoaWNoIG1lYW5zIHRoZXJlIHNob3VsZCBi
ZSBlaXRoZXIgdGVzdCBmYWlsdXJlcyBvciBmbGFraWVzCisgICAgICAgICAgICAjIE90aGVyd2lz
ZSB0aGVyZSBpcyBzb21lIHVuZXhwZWN0ZWQgaXNzdWUuCisgICAgICAgICAgICAjIFRoZSBjbGVh
biB0cmVlIHJ1biB0aGF0IG9ubHkgaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBydW4gZ2l2ZXMgZXJy
b3IgY29kZSB3aXRob3V0IGdlbmVyYXRpbmcgYSBsaXN0IG9mIGZhaWx1cmVzIG9yIGZsYWtpZXMK
KyAgICAgICAgICAgIGNsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVy
dHkoJ2NsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgW10pKQorICAgICAgICAgICAgY2xlYW5fdHJl
ZV9ydW5fZmxha2llcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9mbGFr
aWVzJywgW10pKQorICAgICAgICAgICAgY2xlYW5fdHJlZV9ydW5fc3RhdHVzID0gc2VsZi5nZXRQ
cm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVSRSkKKworICAgICAgICAgICAg
IyBJZiB0aGUgY2xlYW4tdHJlZSBydW4gcGFzc2VkIHRoZW4gd2UgYXNzdW1lIHRoaXMgcGF0Y2gg
YnJva2UgdGhlIHNjcmlwdCBydW4td2Via2l0LXRlc3RzIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQu
CisgICAgICAgICAgICBpZiAoY2xlYW5fdHJlZV9ydW5fc3RhdHVzIGluIFtTVUNDRVNTLCBXQVJO
SU5HU10pOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKHNldCgp
LCBmaXJzdF9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0KQorICAgICAgICAgICAgIyBPdGhl
cndpc2Ugd2UgY2FuJ3QgY29uY2x1ZGUgYW55dGhpbmcsIHdlIG5lZWQgdG8gcmV0cnkgdGhlIGJ1
aWxkCisgICAgICAgICAgICBpZiBjbGVhbl90cmVlX3J1bl9mYWlsdXJlcyBvciBjbGVhbl90cmVl
X3J1bl9mbGFraWVzOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9pbmZyYXN0
cnVjdHVyZV9pc3N1ZV9hbmRfbWF5YmVfcmV0cnlfYnVpbGQoJ1RoZSBsYXlvdXQtdGVzdCBydW4g
d2l0aCBwYXRjaCBnZW5lcmF0ZWQgbm8gbGlzdCBvZiByZXN1bHRzIGJ1dCBleGl0ZWQgd2l0aCBl
cnJvciwgYW5kIGNsZWFuX3RyZWUgZ2VuZXJhdGVkIGEgbGlzdCBvZiB1bmV4cGVjdGVkIHJlc3Vs
dHMuJykKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9pbmZyYXN0cnVjdHVyZV9pc3N1
ZV9hbmRfbWF5YmVfcmV0cnlfYnVpbGQoJ1RoZSBsYXlvdXQtdGVzdCBydW4gd2l0aCBwYXRjaCBn
ZW5lcmF0ZWQgbm8gbGlzdCBvZiByZXN1bHRzIGJ1dCBleGl0ZWQgd2l0aCBlcnJvciwgYW5kIHRo
ZSBjbGVhbl90cmVlIHdpdGhvdXQgcGF0Y2ggcnVuIGRpZCB0aGUgc2FtZSB0aGluZy4nKQorCisg
ICAgICAgIGlmIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1
cmVfbGltaXQgb3Igd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19leGNlZWRf
ZmFpbHVyZV9saW1pdDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9pbmZyYXN0cnVj
dHVyZV9pc3N1ZV9hbmRfbWF5YmVfcmV0cnlfYnVpbGQoJ09uZSBvZiB0aGUgc3RlcHMgZm9yIHJl
dHJ5aW5nIHRoZSBmYWlsZWQgdGVzdHMgaGFzIGV4aXRlZCBlYXJseSwgYnV0IHRoaXMgc3RlcHMg
c2hvdWxkIHJ1biB3aXRob3V0ICItLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcyIgc3dpdGNoLCBzbyB0
aGV5IHNob3VsZCBub3QgZXhpdCBlYXJseS4nKQorCisgICAgICAgIGlmIHdpdGhvdXRfcGF0Y2hf
cmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0
X2luZnJhc3RydWN0dXJlX2lzc3VlX2FuZF9tYXliZV9yZXRyeV9idWlsZCgnVGhlIHN0ZXAgImxh
eW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1wYXRjaCIgd2FzIGludGVycnVtcGVk
IGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgdGltZW91dC4nKQorCisgICAgICAgIGlmIHdpdGhfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0OgorICAgICAgICAgICAgIyBUaGUgcGF0Y2ggaXMg
Y2F1c2luZyB0aGUgc3RlcCAnbGF5b3V0LXRlc3RzLXJlcGVhdC1mYWlsdXJlcy13aXRoLXBhdGNo
IiB0byB0aW1lb3V0IChidXQgdGhlIHN0ZXAgJ2xheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMt
d2l0aG91dC1wYXRjaCcgZG9lc24ndCB0aW1lb3V0KQorICAgICAgICAgICAgIyBMaWtlbHkgdGhl
IHBhdGNoIGlzIGFkZGluZyBzbyBtYW55IGZhaWx1cmVzIHRoYXQgaXMgY2F1c2luZyB0aGUgdGlt
ZW91dCB0byBiZSByZWFjaGVkLiBUaGVyZSBpcyBubyBwb2ludCBpbiByZXBlYXRpbmcgdGhpcyBy
dW4gKGl0IHdvdWxkIGhhcHBlbiB0aGUgc2FtZSBvbiBuZXh0IHJ1bnMgYW5kIGNvbnN1bWUgbG90
IG9mIHRpbWUpCisgICAgICAgICAgICAjIE1hcmsgdGhlIHBhdGNoIGFzIGJhZCBhbmQgcmVwb3J0
IHRoZSB0ZXN0cyB0aGF0IGZhaWx1cmVkIG9uIHRoZSBmaXJzdCBydW4gKHdpdGhvdXQgdGhlIG9u
ZXMgdGhhdCBwYXNzZWQgb24gdGhlIHJlcGVhdCkuCisgICAgICAgICAgICAjIFRoaXMgbWF5IGNh
dXNlIHNvbWUgZmxha3kgdGVzdHMgdG8gYmUgcmVwb3J0ZWQgYXMgZmFsc2UgcG9zaXRpdmVzIChz
aW5jZSB0aGUgc3RlcCB0byBkaXNjYXJkIGZsYWtpZXMgd2l0aCBwYXRjaCBjb3VsZG4ndCBmaW5p
c2gpLCBidXQgaXMgdGhlIGJlc3Qgd2UgY2FuIGRvIGhlcmUuCisgICAgICAgICAgICBsaWtlbHlf
bmV3X25vbl9mbGFreV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9mYWlsdXJlcyAtIHdpdGhvdXRfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMudW5pb24od2l0aG91
dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzKQorICAgICAgICAgICAgc2Vs
Zi5zZW5kX2VtYWlsX2Zvcl9pbmZyYXN0cnVjdHVyZV9pc3N1ZSgnVGhlIHN0ZXAgImxheW91dC10
ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aC1wYXRjaCIgcmVhY2hlZCB0aGUgdGltZW91dCBidXQg
dGhlIHN0ZXAgImxheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1wYXRjaCIgZW5k
ZWQuIE5vdCB0cnlpbmcgdG8gcmVwZWF0IHRoaXMuIFJlcG9ydGluZyB7fSBmYWlsdXJlcyBmcm9t
IHRoZSBmaXJzdCBydW4uJy5mb3JtYXQobGVuKGxpa2VseV9uZXdfbm9uX2ZsYWt5X2ZhaWx1cmVz
KSkpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShsaWtlbHlfbmV3X25v
bl9mbGFreV9mYWlsdXJlcywgZmlyc3RfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCkKKwor
ICAgICAgICAjIFRoZSBzdGVwIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzIGdlbmVyYXRlZCBu
byBsaXN0IG9mIGZhaWx1cmVzIG9yIGZsYWtpZXMsIHdoaWNoIHNob3VsZCBvbmx5IGhhcHBlbiB3
aGVuIHRoZSByZXR1cm4gY29kZSBvZiB0aGUgc3RlcCBpcyBTVUNFU1Mgb3IgV0FSTklOR1MuCisg
ICAgICAgIGlmIG5vdCB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5
X2ZhaWx1cmVzIGFuZCBub3Qgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFr
aWVzOgorICAgICAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29kZSA9IHNl
bGYuZ2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3JldGNvZGUnLCBGQUlM
VVJFKQorICAgICAgICAgICAgaWYgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29kZSBu
b3QgaW4gW1NVQ0NFU1MsIFdBUk5JTkdTXToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5y
ZXBvcnRfaW5mcmFzdHJ1Y3R1cmVfaXNzdWVfYW5kX21heWJlX3JldHJ5X2J1aWxkKCdUaGUgc3Rl
cCAibGF5b3V0LXRlc3RzLXJlcGVhdC1mYWlsdXJlcyIgZmFpbGVkIHRvIGdlbmVyYXRlIGFueSBs
aXN0IG9mIGZhaWx1cmVzIG9yIGZsYWtpZXMgYW5kIHJldHVybmVkIGFuIGVycm9yIGNvZGUuJykK
KworICAgICAgICAjIENoZWNrIHRoZSBzYW1lIGZvciB0aGUgc3RlcCB3aXRob3V0X3BhdGNoX3Jl
cGVhdF9mYWlsdXJlcworICAgICAgICBpZiBub3Qgd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVy
ZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcyBhbmQgbm90IHdpdGhvdXRfcGF0Y2hfcmVwZWF0
X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llczoKKyAgICAgICAgICAgIHdpdGhvdXRfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3JldGNvZGUgPSBzZWxmLmdldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3Jl
cGVhdF9mYWlsdXJlc19yZXRjb2RlJywgRkFJTFVSRSkKKyAgICAgICAgICAgIGlmIHdpdGhvdXRf
cGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3JldGNvZGUgbm90IGluIFtTVUNDRVNTLCBXQVJOSU5HU106
CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2luZnJhc3RydWN0dXJlX2lzc3Vl
X2FuZF9tYXliZV9yZXRyeV9idWlsZCgnVGhlIHN0ZXAgImxheW91dC10ZXN0cy1yZXBlYXQtZmFp
bHVyZXMtd2l0aG91dC1wYXRjaCIgZmFpbGVkIHRvIGdlbmVyYXRlIGFueSBsaXN0IG9mIGZhaWx1
cmVzIG9yIGZsYWtpZXMgYW5kIHJldHVybmVkIGFuIGVycm9yIGNvZGUuJykKKworICAgICAgICAj
IFdhcm4gRVdTIGJvdCB3YXRjaGVycyBhYm91dCBmbGFraWVzCisgICAgICAgIGFsbF9mbGFreV9m
YWlsdXJlcyA9IGZpcnN0X3J1bl9mbGFraWVzLnVuaW9uKHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1
cmVzX3Jlc3VsdHNfZmxha2llcykudW5pb24od2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNf
cmVzdWx0c19mbGFraWVzKQorICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBpbiBhbGxfZmxha3lf
ZmFpbHVyZXM6CisgICAgICAgICAgICBzdGVwX25hbWVzID0gW10KKyAgICAgICAgICAgIGlmIGZs
YWt5X2ZhaWx1cmUgaW4gd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFr
aWVzOgorICAgICAgICAgICAgICAgIHN0ZXBfbmFtZXMuYXBwZW5kKCdsYXlvdXQtdGVzdHMtcmVw
ZWF0LWZhaWx1cmVzLXdpdGhvdXQtcGF0Y2gnKQorICAgICAgICAgICAgaWYgZmxha3lfZmFpbHVy
ZSBpbiB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXM6CisgICAgICAg
ICAgICAgICAgc3RlcF9uYW1lcy5hcHBlbmQoJ2xheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMg
KHdpdGggcGF0Y2gpJykKKyAgICAgICAgICAgIGlmIGZsYWt5X2ZhaWx1cmUgaW4gZmlyc3RfcnVu
X2ZsYWtpZXM6CisgICAgICAgICAgICAgICAgc3RlcF9uYW1lcy5hcHBlbmQoJ2xheW91dC10ZXN0
cyAod2l0aCBwYXRjaCknKQorICAgICAgICAgICAgc3RlcF9uYW1lc19zdHIgPSAnInt9IicuZm9y
bWF0KCciLCAiJy5qb2luKHN0ZXBfbmFtZXMpKQorICAgICAgICAgICAgc2VsZi5zZW5kX2VtYWls
X2Zvcl9mbGFreV9mYWlsdXJlKGZsYWt5X2ZhaWx1cmUsIHN0ZXBfbmFtZXNfc3RyKQorCisgICAg
ICAgICMgV2FybiBFV1MgYm90IHdhdGNoZXJzIGFib3V0IHByZS1leGlzdGVudCBub24tZmxha3kg
ZmFpbHVyZXMgKGlmIGFueSksIGJ1dAorICAgICAgICAjIHNlbmQgb25seSBvbmUgZS1tYWlsIHdp
dGggYWxsIHRoZSB0ZXN0cyB0byBhdm9pZCBzZW5kaW5nIHRvbyBtdWNoIGUtbWFpbHMuCisgICAg
ICAgIHByZV9leGlzdGVudF9ub25fZmxha3lfZmFpbHVyZXMgPSB3aXRob3V0X3BhdGNoX3JlcGVh
dF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzIC0gd2l0aF9wYXRjaF9yZXBlYXRf
ZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcy51bmlvbihhbGxfZmxha3lfZmFpbHVy
ZXMpCisgICAgICAgIGlmIHByZV9leGlzdGVudF9ub25fZmxha3lfZmFpbHVyZXM6CisgICAgICAg
ICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX3ByZV9leGlzdGVudF9mYWlsdXJlcyhwcmVfZXhpc3Rl
bnRfbm9uX2ZsYWt5X2ZhaWx1cmVzKQorCisgICAgICAgICMgRmluYWxseSBjaGVjayBpZiB0aGVy
ZSBhcmUgbmV3IGNvbnNpdGVudCAobm9uLWZsYWt5KSBmYWlsdXJlcyBjYXVzZWQgYnkgdGhlIHBh
dGNoIGFuZCB3YXJuIHRoZSBwYXRjaCBhdXRob3Igc2V0dHRpbmcgdGhlIHN0YXR1cyBmb3IgdGhl
IGJ1aWxkLgorICAgICAgICBuZXdfbm9uX2ZsYWt5X2ZhaWx1cmVzID0gd2l0aF9wYXRjaF9yZXBl
YXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcyAtIHdpdGhvdXRfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMudW5pb24od2l0aG91dF9wYXRj
aF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzKQorICAgICAgICBpZiBuZXdfbm9uX2Zs
YWt5X2ZhaWx1cmVzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUobmV3
X25vbl9mbGFreV9mYWlsdXJlcywgZmlyc3RfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCkK
KworICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfc3VjY2VzcygpCisKKwogY2xhc3MgQXJjaGl2
ZUJ1aWx0UHJvZHVjdChzaGVsbC5TaGVsbENvbW1hbmQpOgogICAgIGNvbW1hbmQgPSBbJ3B5dGhv
bjMnLCAnVG9vbHMvQ0lTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsCiAgICAgICAgICAg
ICAgICBXaXRoUHJvcGVydGllcygnLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzJyksIFdpdGhQ
cm9wZXJ0aWVzKCctLSUoY29uZmlndXJhdGlvbilzJyksICdhcmNoaXZlJ10KZGlmZiAtLWdpdCBh
L1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkgYi9Ub29scy9DSVN1
cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5CmluZGV4IDZjZmE4NTU1NjJiYzg3NmYx
OTM1NzU3NGFiMDJkY2U0ZGIyNGQ3ODYuLjEzY2M3NDJiOWE1ZWVmMDQ3ZGM2ZGRjMGVkODRlMDBm
MTAyZWI5MzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5p
dHRlc3QucHkKKysrIGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwc191bml0dGVzdC5w
eQpAQCAtNTMsNyArNTMsOCBAQCBmcm9tIHN0ZXBzIGltcG9ydCAoQW5hbHl6ZUFQSVRlc3RzUmVz
dWx0cywgQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRzLCBBbmFseXplSgogICAgICAgICAgICAg
ICAgICAgIFJ1bkJ1aWxkYm90Q2hlY2tDb25maWdGb3JCdWlsZFdlYktpdCwgUnVuQnVpbGRib3RD
aGVja0NvbmZpZ0ZvckVXUywgUnVuRVdTVW5pdFRlc3RzLCBSdW5SZXN1bHRzZGJweVRlc3RzLAog
ICAgICAgICAgICAgICAgICAgIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMsIFJ1bkpTQ1Rlc3RzV2l0
aG91dFBhdGNoLCBSdW5XZWJLaXQxVGVzdHMsIFJ1bldlYktpdFBlcmxUZXN0cywgUnVuV2ViS2l0
UHlQeXRob24yVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgUnVuV2ViS2l0UHlQeXRob24zVGVz
dHMsIFJ1bldlYktpdFRlc3RzLCBSdW5XZWJLaXRUZXN0c0luU3RyZXNzTW9kZSwgUnVuV2ViS2l0
VGVzdHNJblN0cmVzc0d1YXJkbWFsbG9jTW9kZSwKLSAgICAgICAgICAgICAgICAgICBSdW5XZWJL
aXRUZXN0c1dpdGhvdXRQYXRjaCwgVGVzdFdpdGhGYWlsdXJlQ291bnQsIFNob3dJZGVudGlmaWVy
LAorICAgICAgICAgICAgICAgICAgIFJ1bldlYktpdFRlc3RzV2l0aG91dFBhdGNoLCBSdW5XZWJL
aXRUZXN0c1JlZFRyZWUsIFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVlLCBSdW5X
ZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzV2l0aG91dFBhdGNoUmVkVHJlZSwKKyAgICAgICAgICAg
ICAgICAgICBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaFJlZFRyZWUsIEFuYWx5emVMYXlvdXRU
ZXN0c1Jlc3VsdHNSZWRUcmVlLCBUZXN0V2l0aEZhaWx1cmVDb3VudCwgU2hvd0lkZW50aWZpZXIs
CiAgICAgICAgICAgICAgICAgICAgVHJpZ2dlciwgVHJhbnNmZXJUb1MzLCBVbkFwcGx5UGF0Y2hJ
ZlJlcXVpcmVkLCBVcGRhdGVXb3JraW5nRGlyZWN0b3J5LCBVcGxvYWRCdWlsdFByb2R1Y3QsCiAg
ICAgICAgICAgICAgICAgICAgVXBsb2FkVGVzdFJlc3VsdHMsIFZhbGlkYXRlQ2hhbmdlTG9nQW5k
UmV2aWV3ZXIsIFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlciwgVmFsaWRhdGVQYXRjaCwgVmVy
aWZ5R2l0SHViSW50ZWdyaXR5KQogCkBAIC0xNjAxLDggKzE2MDIsOCBAQCBjbGFzcyBUZXN0QW5h
bHl6ZUpTQ1Rlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2ZhaWx1
cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVz
c190ZXN0X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVh
bl90cmVlX2JpbmFyeV9mYWlsdXJlcycsIFtdKQotICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1
bHRzLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUgPSBsYW1iZGEgc2VsZiwgdGVzdDogTm9u
ZQotICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX3ByZV9leGlz
dGluZ19mYWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKKyAgICAgICAgQW5hbHl6ZUpT
Q1Rlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0gbGFtYmRhICphcmdz
OiBOb25lCisgICAgICAgIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfcHJl
X2V4aXN0aW5nX2ZhaWx1cmUgPSBsYW1iZGEgKmFyZ3M6IE5vbmUKIAogICAgIGRlZiB0ZXN0X3Np
bmdsZV9uZXdfc3RyZXNzX2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3Rl
cCgpCkBAIC0xOTUxLDcgKzE5NTIsNyBAQCBjbGFzcyBUZXN0UmVSdW5XZWJLaXRUZXN0cyhUZXN0
UnVuV2ViS2l0VGVzdHMpOgogICAgICAgICBzZWxmLnNldHVwU3RlcChSZVJ1bldlYktpdFRlc3Rz
KCkpCiAgICAgICAgIHNlbGYucHJvcGVydHlfZXhjZWVkX2ZhaWx1cmVfbGltaXQgPSAnc2Vjb25k
X3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnCiAgICAgICAgIHNlbGYucHJvcGVydHlfZmFp
bHVyZXMgPSAnc2Vjb25kX3J1bl9mYWlsdXJlcycKLSAgICAgICAgUmVSdW5XZWJLaXRUZXN0cy5z
ZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKKyAg
ICAgICAgUmVSdW5XZWJLaXRUZXN0cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0gbGFt
YmRhICphcmdzOiBOb25lCiAKICAgICBkZWYgdGVzdF9mbGFreV9mYWlsdXJlc19pbl9maXJzdF9y
dW4oc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCkBAIC0yMzU0LDggKzIzNTUs
OCBAQCBjbGFzcyBUZXN0QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFk
ZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93
bkJ1aWxkU3RlcCgpCiAKICAgICBkZWYgY29uZmlndXJlU3RlcChzZWxmKToKLSAgICAgICAgQW5h
bHl6ZUxheW91dFRlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0gbGFt
YmRhIHNlbGYsIHRlc3Q6IE5vbmUKLSAgICAgICAgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cy5z
ZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVyZSA9IGxhbWJkYSBzZWxmLCB0ZXN0OiBO
b25lCisgICAgICAgIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfZmxh
a3lfZmFpbHVyZSA9IGxhbWJkYSAqYXJnczogTm9uZQorICAgICAgICBBbmFseXplTGF5b3V0VGVz
dHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX3ByZV9leGlzdGluZ19mYWlsdXJlID0gbGFtYmRhICph
cmdzOiBOb25lCiAgICAgICAgIHNlbGYuc2V0dXBTdGVwKEFuYWx5emVMYXlvdXRUZXN0c1Jlc3Vs
dHMoKSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcmVzdWx0c19leGNlZWRfZmFp
bHVyZV9saW1pdCcsIEZhbHNlKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcmVz
dWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIEZhbHNlKQpAQCAtMjU1NSw2ICsyNTU2LDM0OCBA
QCBjbGFzcyBUZXN0QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0
aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkK
IAogCitjbGFzcyBUZXN0UnVuV2ViS2l0VGVzdHNSZWRUcmVlKEJ1aWxkU3RlcE1peGluQWRkaXRp
b25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBz
ZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQorICAgICAgICBzZWxmLmpzb25GaWxlTmFtZSA9ICdsYXlv
dXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJworICAgICAgICByZXR1cm4gc2VsZi5z
ZXRVcEJ1aWxkU3RlcCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKKworICAgIGRlZiBjb25maWd1cmVTdGVwKHNlbGYp
OgorICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJLaXRUZXN0c1JlZFRyZWUoKSkKKworICAg
IGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CisgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCisg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdndGsnKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQorICAgICAgICBzZWxm
LmV4cGVjdFJlbW90ZUNvbW1hbmRzKAorICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0n
d2tkaXInLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5q
c29uRmlsZU5hbWV9LAorICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1idWlsZCcsICctLW5vLXNob3ct
cmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1yZXN1bHRz
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXJlbGVhc2UnLCAnLS1yZXN1
bHRzLWRpcmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywgJy0tZGVidWctcnd0LWxvZ2dp
bmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZXhpdC1hZnRlci1uLWZh
aWx1cmVzJywgJzUwMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddCisgICAgICAgICAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICArIDAsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVz
dHMnKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworCitjbGFzcyBUZXN0UnVuV2Vi
S2l0VGVzdHNSZXBlYXRGYWlsdXJlc1JlZFRyZWUoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVu
aXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubG9u
Z01lc3NhZ2UgPSBUcnVlCisgICAgICAgIHNlbGYuanNvbkZpbGVOYW1lID0gJ2xheW91dC10ZXN0
LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nCisgICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVp
bGRTdGVwKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
dGVhckRvd25CdWlsZFN0ZXAoKQorCisgICAgZGVmIGNvbmZpZ3VyZVN0ZXAoc2VsZik6CisgICAg
ICAgIHNlbGYuc2V0dXBTdGVwKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVlKCkp
CisKKyAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0
ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAg
ICAgZmlyc3RfcnVuX2ZhaWx1cmVzID0gWydmYXN0L2Nzcy90ZXN0MS5odG1sJywgJ2ltcG9ydGVk
L3Rlc3QvdGVzdDIuaHRtbCcsICdmYXN0L3N2Zy90ZXN0My5zdmcnXQorICAgICAgICBmaXJzdF9y
dW5fZmxha2llcyA9IFsnZmFzdC9jc3MvZmxha3kxLmh0bWwnLCAnaW1wb3J0ZWQvdGVzdC9mbGFr
eTIuaHRtbCcsICdmYXN0L3N2Zy9mbGFreTMuc3ZnJ10KKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgZmlyc3RfcnVuX2ZhaWx1cmVzKQorICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIGZpcnN0X3J1bl9mbGFraWVzKQorICAg
ICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAorICAgICAgICAgICAgRXhwZWN0U2hlbGwo
d29ya2Rpcj0nd2tkaXInLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29u
Jzogc2VsZi5qc29uRmlsZU5hbWV9LAorICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJv
bj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heFRpbWU9MTgwMDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tYnVpbGQnLCAnLS1uby1zaG93LXJlc3VsdHMn
LCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywgJy0tY2xvYmJlci1vbGQtcmVzdWx0cycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1yZWxlYXNlJywgJy0tcmVzdWx0cy1kaXJl
Y3RvcnknLCAnbGF5b3V0LXRlc3QtcmVzdWx0cycsICctLWRlYnVnLXJ3dC1sb2dnaW5nJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXNraXAtZmFpbGluZy10ZXN0cycsICct
LXJlcGVhdC1lYWNoPTEwJ10gKyBzb3J0ZWQoZmlyc3RfcnVuX2ZhaWx1cmVzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKyAwLAorICAgICAgICApCisgICAgICAgIHNl
bGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdsYXlvdXQtdGVz
dHMnKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworCitjbGFzcyBUZXN0UnVuV2Vi
S2l0VGVzdHNSZXBlYXRGYWlsdXJlc1dpdGhvdXRQYXRjaFJlZFRyZWUoQnVpbGRTdGVwTWl4aW5B
ZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAg
ICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCisgICAgICAgIHNlbGYuanNvbkZpbGVOYW1lID0g
J2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nCisgICAgICAgIHJldHVybiBz
ZWxmLnNldFVwQnVpbGRTdGVwKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQorCisgICAgZGVmIGNvbmZpZ3VyZVN0ZXAo
c2VsZik6CisgICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVy
ZXNXaXRob3V0UGF0Y2hSZWRUcmVlKCkpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgor
ICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdm
dWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJh
dGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgZmlyc3RfcnVuX2ZhaWx1cmVzID0gWydmYXN0L2Nz
cy90ZXN0MS5odG1sJywgJ2ltcG9ydGVkL3Rlc3QvdGVzdDIuaHRtbCcsICdmYXN0L3N2Zy90ZXN0
My5zdmcnXQorICAgICAgICBmaXJzdF9ydW5fZmxha2llcyA9IFsnZmFzdC9jc3MvZmxha3kxLmh0
bWwnLCAnaW1wb3J0ZWQvdGVzdC9mbGFreTIuaHRtbCcsICdmYXN0L3N2Zy9mbGFreTMuc3ZnJ10K
KyAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWls
dXJlcyA9IFsnZmFzdC9jc3MvdGVzdDEuaHRtbCddCisgICAgICAgIHdpdGhfcGF0Y2hfcmVwZWF0
X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcyA9IFsnaW1wb3J0ZWQvdGVzdC90ZXN0Mi5odG1sJywg
J2Zhc3Qvc3ZnL3Rlc3QzLnN2ZyddCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1
bl9mYWlsdXJlcycsIGZpcnN0X3J1bl9mYWlsdXJlcykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBmaXJzdF9ydW5fZmxha2llcykKKyAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9m
YWlsdXJlcycsIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFp
bHVyZXMpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1
cmVzX3Jlc3VsdHNfZmxha2llcycsIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNf
Zmxha2llcykKKyAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKKyAgICAgICAgICAg
IEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ0Vudmlyb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhUaW1lPTEw
ODAwLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3Rz
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLWJ1aWxkJywgJy0tbm8t
c2hvdy1yZXN1bHRzJywgJy0tbm8tbmV3LXRlc3QtcmVzdWx0cycsICctLWNsb2JiZXItb2xkLXJl
c3VsdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcmVsZWFzZScsICct
LXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3Qt
bG9nZ2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1za2lwLWZhaWxp
bmctdGVzdHMnLCAnLS1yZXBlYXQtZWFjaD0xMCcsICctLXNraXBwZWQ9YWx3YXlzJ10gKyBzb3J0
ZWQod2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcykK
KyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICsgMCwKKyAgICAgICAgKQor
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0n
bGF5b3V0LXRlc3RzJykKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBkZWYg
dGVzdF9zdGVwX3dpdGhfcGF0Y2hfZGlkX3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY29u
ZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdn
dGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2Un
KQorICAgICAgICBmaXJzdF9ydW5fZmFpbHVyZXMgPSBbJ2Zhc3QvY3NzL3Rlc3QxLmh0bWwnLCAn
aW1wb3J0ZWQvdGVzdC90ZXN0Mi5odG1sJywgJ2Zhc3Qvc3ZnL3Rlc3QzLnN2ZyddCisgICAgICAg
IGZpcnN0X3J1bl9mbGFraWVzID0gWydmYXN0L2Nzcy9mbGFreTEuaHRtbCcsICdpbXBvcnRlZC90
ZXN0L2ZsYWt5Mi5odG1sJywgJ2Zhc3Qvc3ZnL2ZsYWt5My5zdmcnXQorICAgICAgICB3aXRoX3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzID0gWydmYXN0L2Nz
cy90ZXN0MS5odG1sJ10KKyAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0
c19mbGFraWVzID0gWydpbXBvcnRlZC90ZXN0L3Rlc3QyLmh0bWwnLCAnZmFzdC9zdmcvdGVzdDMu
c3ZnJ10KKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgZmly
c3RfcnVuX2ZhaWx1cmVzKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxh
a2llcycsIGZpcnN0X3J1bl9mbGFraWVzKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRo
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgd2l0aF9w
YXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcykKKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFr
aWVzJywgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzKQorICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcs
IFRydWUpCisgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCisgICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCisgICAgICAgICAgICAgICAgICAgICAgICBsb2dm
aWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBsb2dFbnZpcm9uPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4VGltZT0xMDgw
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1idWlsZCcsICctLW5vLXNo
b3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1yZXN1
bHRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXJlbGVhc2UnLCAnLS1y
ZXN1bHRzLWRpcmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywgJy0tZGVidWctcnd0LWxv
Z2dpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tc2tpcC1mYWlsaW5n
LXRlc3RzJywgJy0tcmVwZWF0LWVhY2g9MTAnLCAnLS1za2lwcGVkPWFsd2F5cyddICsgc29ydGVk
KGZpcnN0X3J1bl9mYWlsdXJlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICsgMCwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNV
Q0NFU1MsIHN0YXRlX3N0cmluZz0nbGF5b3V0LXRlc3RzJykKKyAgICAgICAgcmV0dXJuIHNlbGYu
cnVuU3RlcCgpCisKKworY2xhc3MgVGVzdEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHNSZWRUcmVl
KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNl
dFVwKHNlbGYpOgorICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQorICAgICAgICByZXR1
cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKKworICAgIGRlZiBjb25maWd1cmVT
dGVwKHNlbGYpOgorICAgICAgICBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzLnNlbmRfZW1haWxf
Zm9yX2ZsYWt5X2ZhaWx1cmUgPSBsYW1iZGEgKmFyZ3M6IE5vbmUKKyAgICAgICAgQW5hbHl6ZUxh
eW91dFRlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVyZSA9IGxh
bWJkYSAqYXJnczogTm9uZQorICAgICAgICBzZWxmLnNldHVwU3RlcChBbmFseXplTGF5b3V0VGVz
dHNSZXN1bHRzUmVkVHJlZSgpKQorCisgICAgZGVmIHRlc3RfZmFpbHVyZV9pbnRyb2R1Y2VkX2J5
X3BhdGNoX2NsZWFuX3RyZWVfZ3JlZW4oc2VsZik6CisgICAgICAgIHNlbGYuY29uZmlndXJlU3Rl
cCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdndGsnKQorICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQorICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbInRlc3QvZmFpbHVyZTEu
aHRtbCIsICJ0ZXN0L2ZhaWx1cmUyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
Zmlyc3RfcnVuX2ZsYWtpZXMnLCBbInRlc3QvZmxha3kxLmh0bWwiLCAidGVzdC9mbGFreTIuaHRt
bCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJl
c19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiXSkKKyAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0
c19mbGFraWVzJywgWyJ0ZXN0L2ZhaWx1cmUyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWls
dXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVh
dF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0
bWwiXSkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9z
dHJpbmc9J0ZvdW5kIDEgbmV3IHRlc3QgZmFpbHVyZTogdGVzdC9mYWlsdXJlMS5odG1sIChmYWls
dXJlKScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVmIHRlc3RfZmFp
bHVyZV9pbnRyb2R1Y2VkX2J5X3BhdGNoX2NsZWFuX3RyZWVfcmVkKHNlbGYpOgorICAgICAgICBz
ZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZv
cm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdy
ZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywg
WyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9mYWlsdXJlMi5odG1sIiwgInRlc3QvcHJlLWV4
aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2ZsYWt5
MS5odG1sIiwgInRlc3QvZmxha3kyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
d2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFsi
dGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0
ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFsidGVzdC9mYWls
dXJlMi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3QvcHJlLWV4aXN0
ZW50L2ZhaWx1cmUuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvcHJlLWV4aXN0ZW50
L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJF
LCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IHRlc3QgZmFpbHVyZTogdGVzdC9mYWlsdXJlMS5o
dG1sIChmYWlsdXJlKScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVm
IHRlc3RfcHJlX2V4aXN0ZW50X2ZhaWx1cmVzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3Vy
ZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBb
InRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFr
eS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywg
WyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFr
eTMuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9m
YWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9m
YWlsdXJlLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBl
YXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5o
dG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3QvcHJlLWV4aXN0ZW50L2Zh
aWx1cmUuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3Jl
cGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbXSkKKyAgICAgICAgc2VsZi5leHBlY3RP
dXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVzdHMn
KQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3ByZV9leGlz
dGVudF9mbGFraWVzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbInRlc3QvcHJlLWV4aXN0
ZW50L2ZsYWt5MS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9m
bGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlz
dGVudC9mbGFreTMuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNo
X3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgW10pCisgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxh
a2llcycsIFsidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kxLmh0bWwiXSkKKyAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFr
eV9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNo
X3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29kZScsIFNVQ0NFU1Mp
CisgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5n
PSdQYXNzZWQgbGF5b3V0IHRlc3RzJykKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisK
KyAgICBkZWYgdGVzdF9maXJzdF9zdGVwX2dpdmVzX3VuZXhwZWN0ZWRfZmFpbHVyZV9hbmRfY2xl
YW5fdHJlZV9wYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Ns
ZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Ns
ZWFuX3RyZWVfcnVuX2ZsYWtpZXMnLCBbJ3Rlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0bWwnXSkK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgV0FSTklO
R1MpCisgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3Ry
aW5nPSdGb3VuZCB1bmV4cGVjdGVkIGZhaWx1cmUgd2l0aCBwYXRjaCAoZmFpbHVyZSknKQorICAg
ICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X2ZpcnN0X3N0ZXBfZ2l2
ZXNfdW5leHBlY3RlZF9mYWlsdXJlX2FuZF9jbGVhbl90cmVlX3VuZXhwZWN0ZWRfZmFpbHVyZShz
ZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Nv
bmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0
X3J1bl9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5f
Zmxha2llcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9m
YWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9m
bGFraWVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX3N0
YXR1cycsIEZBSUxVUkUpCisgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9UkVUUlks
IHN0YXRlX3N0cmluZz0nVW5leHBlY3RlZCBpbmZyYXN0cnVjdHVyZSBpc3N1ZTogVGhlIGxheW91
dC10ZXN0IHJ1biB3aXRoIHBhdGNoIGdlbmVyYXRlZCBubyBsaXN0IG9mIHJlc3VsdHMgYnV0IGV4
aXRlZCB3aXRoIGVycm9yLCBhbmQgdGhlIGNsZWFuX3RyZWUgd2l0aG91dCBwYXRjaCBydW4gZGlk
IHRoZSBzYW1lIHRoaW5nLlxuUmV0cnlpbmcgYnVpbGQgW3JldHJ5IGNvdW50IGlzIDAgb2YgM10g
KHJldHJ5KScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVmIHRlc3Rf
c3RlcF9yZXRyeV93aXRoX3BhdGNoX2V4aXRzX2Vhcmx5X2Vycm9yKHNlbGYpOgorICAgICAgICBz
ZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZv
cm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdy
ZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywg
WyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9mYWlsdXJlMi5odG1sIiwgInRlc3QvcHJlLWV4
aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2ZsYWt5
MS5odG1sIiwgInRlc3QvZmxha3kyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
d2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFsi
dGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0
ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFsidGVzdC9mYWls
dXJlMi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3QvcHJlLWV4aXN0
ZW50L2ZhaWx1cmUuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvcHJlLWV4aXN0ZW50
L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBl
YXRfZmFpbHVyZXNfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIFRydWUpCisgICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0nVW5leHBlY3Rl
ZCBpbmZyYXN0cnVjdHVyZSBpc3N1ZTogT25lIG9mIHRoZSBzdGVwcyBmb3IgcmV0cnlpbmcgdGhl
IGZhaWxlZCB0ZXN0cyBoYXMgZXhpdGVkIGVhcmx5LCBidXQgdGhpcyBzdGVwcyBzaG91bGQgcnVu
IHdpdGhvdXQgIi0tZXhpdC1hZnRlci1uLWZhaWx1cmVzIiBzd2l0Y2gsIHNvIHRoZXkgc2hvdWxk
IG5vdCBleGl0IGVhcmx5LlxuUmV0cnlpbmcgYnVpbGQgW3JldHJ5IGNvdW50IGlzIDAgb2YgM10g
KHJldHJ5KScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVmIHRlc3Rf
c3RlcF9yZXRyeV93aXRob3V0X3BhdGNoX2V4aXRzX2Vhcmx5X2Vycm9yKHNlbGYpOgorICAgICAg
ICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxh
dGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbics
ICdyZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVz
JywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9mYWlsdXJlMi5odG1sIiwgInRlc3QvcHJl
LWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0p
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2Zs
YWt5MS5odG1sIiwgInRlc3QvZmxha3kyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycs
IFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIs
ICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFsidGVzdC9m
YWlsdXJlMi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hf
cmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3QvcHJlLWV4
aXN0ZW50L2ZhaWx1cmUuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvcHJlLWV4aXN0
ZW50L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRj
aF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIFRydWUpCisg
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0nVW5l
eHBlY3RlZCBpbmZyYXN0cnVjdHVyZSBpc3N1ZTogT25lIG9mIHRoZSBzdGVwcyBmb3IgcmV0cnlp
bmcgdGhlIGZhaWxlZCB0ZXN0cyBoYXMgZXhpdGVkIGVhcmx5LCBidXQgdGhpcyBzdGVwcyBzaG91
bGQgcnVuIHdpdGhvdXQgIi0tZXhpdC1hZnRlci1uLWZhaWx1cmVzIiBzd2l0Y2gsIHNvIHRoZXkg
c2hvdWxkIG5vdCBleGl0IGVhcmx5LlxuUmV0cnlpbmcgYnVpbGQgW3JldHJ5IGNvdW50IGlzIDAg
b2YgM10gKHJldHJ5KScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVm
IHRlc3Rfc3RlcF9yZXRyeV93aXRoX3BhdGNoX3RpbWVvdXRzKHNlbGYpOgorICAgICAgICBzZWxm
LmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0n
LCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxl
YXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyJ0
ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9mYWlsdXJlMi5odG1sIiwgInRlc3QvcHJlLWV4aXN0
ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2ZsYWt5MS5o
dG1sIiwgInRlc3QvZmxha3kyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0
aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBUcnVlKQorICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5
X2ZhaWx1cmVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiXSkKKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19m
bGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYu
ZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAyIG5ldyB0
ZXN0IGZhaWx1cmVzOiB0ZXN0L2ZhaWx1cmUxLmh0bWwsIHRlc3QvZmFpbHVyZTIuaHRtbCAoZmFp
bHVyZSknKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0
ZXBfcmV0cnlfd2l0aF9wYXRjaF91bmV4cGVjdGVkX2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxm
LmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0n
LCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxl
YXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyJ0
ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9mYWlsdXJlMi5odG1sIiwgInRlc3QvcHJlLWV4aXN0
ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2ZsYWt5MS5o
dG1sIiwgInRlc3QvZmxha3kyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0
aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFtdKQor
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1
bHRzX2ZsYWtpZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmV0Y29kZScsIEZBSUxVUkUpCisgICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0nVW5leHBlY3RlZCBpbmZyYXN0cnVjdHVy
ZSBpc3N1ZTogVGhlIHN0ZXAgImxheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMiIGZhaWxlZCB0
byBnZW5lcmF0ZSBhbnkgbGlzdCBvZiBmYWlsdXJlcyBvciBmbGFraWVzIGFuZCByZXR1cm5lZCBh
biBlcnJvciBjb2RlLlxuUmV0cnlpbmcgYnVpbGQgW3JldHJ5IGNvdW50IGlzIDAgb2YgM10gKHJl
dHJ5KScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVmIHRlc3Rfc3Rl
cF9yZXRyeV93aXRob3V0X3BhdGNoX3VuZXhwZWN0ZWRfZXJyb3Ioc2VsZik6CisgICAgICAgIHNl
bGYuY29uZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9y
bScsICdndGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3Jl
bGVhc2UnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBb
InRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L2ZhaWx1cmUyLmh0bWwiLCAidGVzdC9wcmUtZXhp
c3RlbnQvZmFpbHVyZS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0bWwiXSkKKyAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBbInRlc3QvZmxha3kx
Lmh0bWwiLCAidGVzdC9mbGFreTIuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3
aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0
ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9mYWlsdXJlMi5odG1sIl0pCisgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycs
IFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJl
c19yZXRjb2RlJywgRkFJTFVSRSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9w
YXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFtdKQorICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1
bHRzX2ZsYWtpZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRj
aF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29kZScsIEZBSUxVUkUpCisgICAgICAgIHNlbGYuZXhwZWN0
T3V0Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0nVW5leHBlY3RlZCBpbmZyYXN0cnVj
dHVyZSBpc3N1ZTogVGhlIHN0ZXAgImxheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91
dC1wYXRjaCIgZmFpbGVkIHRvIGdlbmVyYXRlIGFueSBsaXN0IG9mIGZhaWx1cmVzIG9yIGZsYWtp
ZXMgYW5kIHJldHVybmVkIGFuIGVycm9yIGNvZGUuXG5SZXRyeWluZyBidWlsZCBbcmV0cnkgY291
bnQgaXMgMCBvZiAzXSAocmV0cnkpJykKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisK
KyAgICBkZWYgdGVzdF9zdGVwX3JldHJ5X3dpdGhvdXRfcGF0Y2hfdGltZW91dHMoc2VsZik6Cisg
ICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1
bGxQbGF0Zm9ybScsICdndGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0
aW9uJywgJ3JlbGVhc2UnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFp
bHVyZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L2ZhaWx1cmUyLmh0bWwiLCAidGVz
dC9wcmUtZXhpc3RlbnQvZmFpbHVyZS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0
bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBbInRl
c3QvZmxha3kxLmh0bWwiLCAidGVzdC9mbGFreTIuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcsIFRydWUpCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVk
b3V0JywgVHJ1ZSkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1SRVRSWSwgc3Rh
dGVfc3RyaW5nPSdVbmV4cGVjdGVkIGluZnJhc3RydWN0dXJlIGlzc3VlOiBUaGUgc3RlcCAibGF5
b3V0LXRlc3RzLXJlcGVhdC1mYWlsdXJlcy13aXRob3V0LXBhdGNoIiB3YXMgaW50ZXJydW1wZWQg
YmVjYXVzZSBpdCByZWFjaGVkIHRoZSB0aW1lb3V0LlxuUmV0cnlpbmcgYnVpbGQgW3JldHJ5IGNv
dW50IGlzIDAgb2YgM10gKHJldHJ5KScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQor
CisgICAgZGVmIHRlc3Rfc3RlcF9yZXRyeV93aXRoX3BhdGNoX3RpbWVvdXRzX2FuZF93aXRob3V0
X3BhdGNoX3RpbWVvdXRzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAi
dGVzdC9mYWlsdXJlMi5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0
ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2ZpcnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2ZsYWt5MS5odG1sIiwgInRlc3QvZmxha3kyLmh0
bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVy
ZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRl
c3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5o
dG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1
cmVzX3Jlc3VsdHNfZmxha2llcycsIFsidGVzdC9mYWlsdXJlMi5odG1sIl0pCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0Jywg
VHJ1ZSkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1SRVRSWSwgc3RhdGVfc3Ry
aW5nPSdVbmV4cGVjdGVkIGluZnJhc3RydWN0dXJlIGlzc3VlOiBUaGUgc3RlcCAibGF5b3V0LXRl
c3RzLXJlcGVhdC1mYWlsdXJlcy13aXRob3V0LXBhdGNoIiB3YXMgaW50ZXJydW1wZWQgYmVjYXVz
ZSBpdCByZWFjaGVkIHRoZSB0aW1lb3V0LlxuUmV0cnlpbmcgYnVpbGQgW3JldHJ5IGNvdW50IGlz
IDAgb2YgM10gKHJldHJ5KScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAg
ZGVmIHRlc3RfcmV0cnlfdGhpcmRfdGltZShzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVT
dGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJl
MS5odG1sIiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJl
Lmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0
L2ZsYWt5Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3QvZmFpbHVyZTEu
aHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3Rl
bnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3Jl
cGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvZmFpbHVyZTIuaHRtbCJdKQor
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc190
aW1lZG91dCcsIFRydWUpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3JldHJ5X2NvdW50Jywg
MikKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1SRVRSWSwgc3RhdGVfc3RyaW5n
PSdVbmV4cGVjdGVkIGluZnJhc3RydWN0dXJlIGlzc3VlOiBUaGUgc3RlcCAibGF5b3V0LXRlc3Rz
LXJlcGVhdC1mYWlsdXJlcy13aXRob3V0LXBhdGNoIiB3YXMgaW50ZXJydW1wZWQgYmVjYXVzZSBp
dCByZWFjaGVkIHRoZSB0aW1lb3V0LlxuUmV0cnlpbmcgYnVpbGQgW3JldHJ5IGNvdW50IGlzIDIg
b2YgM10gKHJldHJ5KScpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVm
IHRlc3RfcmV0cnlfZmluaXNoKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQor
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwi
LCAidGVzdC9mYWlsdXJlMi5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIs
ICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2ZsYWt5MS5odG1sIiwgInRlc3QvZmxha3ky
Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFp
bHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwg
InRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFr
eS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFsidGVzdC9mYWlsdXJlMi5odG1sIl0pCisgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0
JywgVHJ1ZSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncmV0cnlfY291bnQnLCAzKQorICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVdBUk5JTkdTLCBzdGF0ZV9zdHJpbmc9J1Ro
ZSBzdGVwICJsYXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVzLXdpdGhvdXQtcGF0Y2giIHdhcyBp
bnRlcnJ1bXBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIHRpbWVvdXQuXG5SZWFjaGVkIHRoZSBt
YXhpbXVtIG51bWJlciBvZiByZXRyaWVzICgzKS4gVW5hYmxlIHRvIGRldGVybWluZSBpZiBwYXRj
aCBpcyBiYWQgb3IgdGhlcmUgaXMgYSBwcmUtZXhpc3RlbnQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWUu
ICh3YXJuaW5ncyknKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworCiBjbGFzcyBU
ZXN0Q2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmxvbmdN
ZXNzYWdlID0gVHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445617</attachid>
            <date>2021-12-01 14:38:27 -0800</date>
            <delta_ts>2021-12-01 17:04:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231999-20211201223825.patch</filename>
            <type>text/plain</type>
            <size>71694</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzgzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjc5YWUzZWExOWRhYWVlYzFiYTg3OWU1OTZhN2JjYTY3
MzAwMzI2OC4uYzI3ZTlhOTM4MTk2NzU2OTU2N2Y2YTk3MDA3NmQ4MjkyZjJmYjhkMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgy
IEBACisyMDIxLTEyLTAxICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtFV1NdW0dUS11bV1BFXSBBZGQgYSBuZXcgQ2xhc3MgZm9yIHJ1
bm5pbmcgbGF5b3V0IHRlc3RzIG9uIHRoZSBFV1MgZm9yIHRoZSBHVEsgYW5kIFdQRSBwb3J0cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTk5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBhIG5ldyBjbGFzcyB0byB0aGUgRVdTIGZvciBydW5uaW5nIGxheW91dCB0ZXN0cyBm
b3IgdGhlIEdUSyBhbmQgV1BFIHBvcnRzLgorICAgICAgICBJdCB3aWxsIGJlIHVzZWQgaW5pdGlh
bGx5IGZvciB0aGUgR1RLIHBvcnQgYW5kIGxhdGVyIGZvciB0aGUgV1BFIG9uZS4KKyAgICAgICAg
TWFjL2lPUyBwb3J0cyB3aWxsIGNvbnRpbnVlIHRvIHVzZSB0aGUgY3VycmVudCBkZWZhdWx0IEVX
Uywgc28gbm8gYmVoYXZpb3VyIGNoYW5nZSBmb3IgdGhlbS4KKworICAgICAgICBUaGlzIG5ldyBj
bGFzcyBpcyBzcGVjaWFsbHkgZGVzaWduZWQgdG86CisgICAgICAgIEEuIFdvcmsgd2l0aCBhIHRy
ZWUgdGhhdCBpcyBub3QgYWx3YXlzIGdyZWVuIChvciBldmVuIHRoYXQgaXMgb2Z0ZW4gcXVpdGUg
cmVkKS4KKyAgICAgICAgQi4gVG8gbm90IHJlcG9ydCBhbnkgZmFsc2UgcG9zaXRpdmUgdG8gdGhl
IHBhdGNoIGF1dGhvci4KKyAgICAgICAgQy4gVG8gYWxsb3cgcGF0Y2ggYXV0aG9ycyB0byB1c2Ug
dGhpcyBFV1MgdG8gZ2V0IG5ldyBleHBlY3RhdGlvbnMgZm9yIHBhdGNoZXMgdGhhdCBuZWVkIGxv
dCBvZiBuZXcgcmUtYmFzZWxpbmVzIChsaWtlIGEgV1BUIGltcG9ydCkKKworICAgICAgICBUaGUg
dmVyeSBzaW1wbGlmaWVkIGxvZ2ljIG9mIGhvdyB0aGlzIHdvcmtzIGlzIHRoZSBmb2xsb3dpbmc6
CisgICAgICAgIDEuIFJ1biBsYXlvdXQgdGVzdHMgd2l0aCBwYXRjaCAoYWJvcnQgZWFybHkgYXQg
NTAwIHVuZXhwZWN0ZWQgZmFpbHVyZXMpCisgICAgICAgIDIuIFJ1biBsYXlvdXQgdGVzdHMgd2l0
aCBwYXRjaCAxMCB0aW1lcyBmb3IgZWFjaCB0ZXN0IHRoYXQgZmFpbGVkIGNvbnNpc3RlbnRseSAo
bm9uLWZsYWt5KSBvbiBzdGVwIDEuCisgICAgICAgIDMuIFJ1biBsYXlvdXQgdGVzdHMgd2l0aG91
dCBwYXRjaCAxMCB0aW1lcyBmb3IgZWFjaCB0ZXN0IHRoYXQgZmFpbGVkIGNvbnNpc3RlbnRseSAo
bm9uLWZsYWt5KSBvbiBzdGVwIDIuCisKKyAgICAgICAgVGhlbiByZXBvcnQgdG8gdGhlIHBhdGNo
IGF1dGhvciBvbmx5IHRoZSBuZXcgY29uc2lzdGVudCBmYWlsdXJlcyAodGVzdHMgdGhhdCBmYWls
ZWQgYWx3YXlzIHdpdGggdGhlIHBhdGNoIGFuZCBwYXNzZWQgYWx3YXlzIHdpdGhvdXQgdGhlIHBh
dGNoLCByZXRyeWluZyAxMCB0aW1lcykKKyAgICAgICAgQW55IGZsYWt5IHRlc3QgZm91bmQgaXMg
b25seSByZXBvcnRlZCB0byB0aGUgYm90IHdhdGNoZXJzLgorCisgICAgICAgIEZvciBhbiBleHBs
YWluZXIgYWJvdXQgd2h5IHRoaXMgaXMgbmVlZGVkLCBhbmQgbW9yZSBkZXRhaWxzIGFib3V0IHRo
ZSBmbG93IGRpYWdyYW0gYW5kIHNldmVyYWwgZGVzaWduIGNvbnNpZGVyYXRpb25zLCBwbGVhc2Ug
Y2hlY2s6CisgICAgICAgIGh0dHBzOi8vcGVvcGxlLmlnYWxpYS5jb20vY2xvcGV6L3drYnVnLzIz
MTk5OS9leHBsYWluZXIuaHRtbAorCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGFkZCAzIG5ldyB3
b3JrZXJzIHRvIHRoZSBxdWV1ZSAodG8gYSB0b3RhbCBvZiA4KSB0byBzcGVlZCB1cCB0ZXN0aW5n
LgorCisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9jb25maWcuanNvbjoKKyAgICAgICAg
KiBDSVN1cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weToKKyAgICAgICAgKEdUS1Rlc3RzRmFj
dG9yeSk6CisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9sYXlvdXRfdGVzdF9mYWlsdXJl
cy5weToKKyAgICAgICAgKExheW91dFRlc3RGYWlsdXJlcy5fX2luaXRfXyk6CisgICAgICAgIChM
YXlvdXRUZXN0RmFpbHVyZXMucmVzdWx0c19mcm9tX3N0cmluZyk6CisgICAgICAgIChMYXlvdXRU
ZXN0RmFpbHVyZXMucmVzdWx0c19mcm9tX3N0cmluZy5nZXRfZmFpbGluZ190ZXN0cyk6CisgICAg
ICAgICogQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weToKKyAgICAgICAgKEJ1ZmZlckxvZ0hl
YWRlck9ic2VydmVyKToKKyAgICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyLl9faW5pdF9f
KToKKyAgICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyLmhlYWRlclJlY2VpdmVkKToKKyAg
ICAgICAgKEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyLmdldEhlYWRlcnMpOgorICAgICAgICAoQnVn
emlsbGFNaXhpbi5zZW5kX2VtYWlsX2Zvcl9pbmZyYXN0cnVjdHVyZV9pc3N1ZSk6CisgICAgICAg
IChUcmlnZ2VyLnByb3BlcnRpZXNUb1Bhc3NUb1RyaWdnZXJzKToKKyAgICAgICAgKFJ1bldlYktp
dFRlc3RzLnNldExheW91dFRlc3RDb21tYW5kKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzLnN0
YXJ0KToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzLmNvbW1hbmRDb21wbGV0ZSk6CisgICAgICAg
IChSZVJ1bldlYktpdFRlc3RzLmV2YWx1YXRlQ29tbWFuZCk6CisgICAgICAgIChSZVJ1bldlYktp
dFRlc3RzLmNvbW1hbmRDb21wbGV0ZSk6CisgICAgICAgIChSdW5XZWJLaXRUZXN0c1dpdGhvdXRQ
YXRjaC5jb21tYW5kQ29tcGxldGUpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0
cy5yZXBvcnRfZmFpbHVyZSk6CisgICAgICAgIChBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzLnNl
bmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3Rz
UmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9uZXdfdGVzdF9mYWlsdXJlcyk6CisgICAgICAgIChBbmFs
eXplTGF5b3V0VGVzdHNSZXN1bHRzLnN0YXJ0KToKKyAgICAgICAgKFJ1bldlYktpdDFUZXN0cy5z
dGFydCk6CisgICAgICAgIChSdW5XZWJLaXRUZXN0c1JlZFRyZWUpOgorICAgICAgICAoUnVuV2Vi
S2l0VGVzdHNSZWRUcmVlLl9kaWRfY29tbWFuZF90aW1lZF9vdXQpOgorICAgICAgICAoUnVuV2Vi
S2l0VGVzdHNSZWRUcmVlLmV2YWx1YXRlQ29tbWFuZCk6CisgICAgICAgIChSdW5XZWJLaXRUZXN0
c1JlcGVhdEZhaWx1cmVzUmVkVHJlZSk6CisgICAgICAgIChSdW5XZWJLaXRUZXN0c1JlcGVhdEZh
aWx1cmVzUmVkVHJlZS5fX2luaXRfXyk6CisgICAgICAgIChSdW5XZWJLaXRUZXN0c1JlcGVhdEZh
aWx1cmVzUmVkVHJlZS5zZXRMYXlvdXRUZXN0Q29tbWFuZCk6CisgICAgICAgIChSdW5XZWJLaXRU
ZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZS5ldmFsdWF0ZUNvbW1hbmQpOgorICAgICAgICAoUnVu
V2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1JlZFRyZWUuY29tbWFuZENvbXBsZXRlKToKKyAgICAg
ICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVlLnN0YXJ0KToKKyAgICAgICAg
KFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlKToKKyAgICAg
ICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlLl9faW5p
dF9fKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hS
ZWRUcmVlLnNldExheW91dFRlc3RDb21tYW5kKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzUmVw
ZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlLmV2YWx1YXRlQ29tbWFuZCk6CisgICAgICAg
IChSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzV2l0aG91dFBhdGNoUmVkVHJlZS5jb21tYW5k
Q29tcGxldGUpOgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1dpdGhvdXRQ
YXRjaFJlZFRyZWUuc3RhcnQpOgorICAgICAgICAoUnVuV2ViS2l0VGVzdHNXaXRob3V0UGF0Y2hS
ZWRUcmVlKToKKyAgICAgICAgKFJ1bldlYktpdFRlc3RzV2l0aG91dFBhdGNoUmVkVHJlZS5ldmFs
dWF0ZUNvbW1hbmQpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUp
OgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUucmVwb3J0X3N1Y2Nl
c3MpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUucmVwb3J0X3dh
cm5pbmcpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUucmVwb3J0
X2luZnJhc3RydWN0dXJlX2lzc3VlX2FuZF9tYXliZV9yZXRyeV9idWlsZCk6CisgICAgICAgIChB
bmFseXplTGF5b3V0VGVzdHNSZXN1bHRzUmVkVHJlZS5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3Rl
bnRfZmFpbHVyZXMpOgorICAgICAgICAoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUu
c3RhcnQpOgorICAgICAgICAqIENJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHk6
CisKIDIwMjEtMTItMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBBZGQgY3NwLXJlcG9ydCByZXNvdXJjZSB0eXBlIHRvIFdLQ29udGVudFJ1
bGVMaXN0CmRpZmYgLS1naXQgYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2NvbmZpZy5qc29u
IGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9jb25maWcuanNvbgppbmRleCBiNjAyYWEyYWJh
YjI2MWU4ZGUyNzhhMTY2YzU1MjIwN2FmY2VjNjQ1Li5hNDZmNTk4YzVlYzI5ZTZkNGY3MzZlODUy
YmI1ZGJiYzA5MzM2NmY4IDEwMDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2Nv
bmZpZy5qc29uCisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvY29uZmlnLmpzb24KQEAg
LTE2LDYgKzE2LDkgQEAKICAgICB7ICJuYW1lIjogImlnYWxpYTctZ3RrLXdrMi1ld3MiLCAicGxh
dGZvcm0iOiAiZ3RrIiB9LAogICAgIHsgIm5hbWUiOiAiaWdhbGlhOC1ndGstd2syLWV3cyIsICJw
bGF0Zm9ybSI6ICJndGsiIH0sCiAgICAgeyAibmFtZSI6ICJpZ2FsaWE5LWd0ay13azItZXdzIiwg
InBsYXRmb3JtIjogImd0ayIgfSwKKyAgICB7ICJuYW1lIjogImlnYWxpYTEwLWd0ay13azItZXdz
IiwgInBsYXRmb3JtIjogImd0ayIgfSwKKyAgICB7ICJuYW1lIjogImlnYWxpYTExLWd0ay13azIt
ZXdzIiwgInBsYXRmb3JtIjogImd0ayIgfSwKKyAgICB7ICJuYW1lIjogImlnYWxpYTEyLWd0ay13
azItZXdzIiwgInBsYXRmb3JtIjogImd0ayIgfSwKICAgICB7ICJuYW1lIjogImFwZXJlei1ndGst
ZXdzIiwgInBsYXRmb3JtIjogImd0ayIgfSwKICAgICB7ICJuYW1lIjogImlnYWxpYS13cGUtZXdz
IiwgInBsYXRmb3JtIjogIndwZSIgfSwKICAgICB7ICJuYW1lIjogImFwZXJlei13cGUtZXdzIiwg
InBsYXRmb3JtIjogIndwZSIgfSwKQEAgLTExMSwxNCArMTE0LDE1IEBACiAgICAgICAibmFtZSI6
ICJHVEstQnVpbGQtRVdTIiwgInNob3J0bmFtZSI6ICJndGsiLCAiaWNvbiI6ICJidWlsZE9ubHki
LAogICAgICAgImZhY3RvcnkiOiAiR1RLQnVpbGRGYWN0b3J5IiwgInBsYXRmb3JtIjogImd0ayIs
CiAgICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4
Nl82NCJdLAotICAgICAgInRyaWdnZXJzIjogWyJhcGktdGVzdHMtZ3RrLWV3cyJdLAorICAgICAg
InRyaWdnZXJzIjogWyJhcGktdGVzdHMtZ3RrLWV3cyIsICJndGstd2syLXRlc3RzLWV3cyJdLAog
ICAgICAgIndvcmtlcm5hbWVzIjogWyJpZ2FsaWExLWd0ay13azItZXdzIiwgImlnYWxpYTItZ3Rr
LXdrMi1ld3MiLCAiYXBlcmV6LWd0ay1ld3MiXQogICAgIH0sCiAgICAgewogICAgICAgIm5hbWUi
OiAiR1RLLVdLMi1UZXN0cy1FV1MiLCAic2hvcnRuYW1lIjogImd0ay13azIiLCAiaWNvbiI6ICJ0
ZXN0T25seSIsCiAgICAgICAiZmFjdG9yeSI6ICJHVEtUZXN0c0ZhY3RvcnkiLCAicGxhdGZvcm0i
OiAiZ3RrIiwKICAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJl
cyI6IFsieDg2XzY0Il0sCi0gICAgICAid29ya2VybmFtZXMiOiBbImlnYWxpYTUtZ3RrLXdrMi1l
d3MiLCAiaWdhbGlhNi1ndGstd2syLWV3cyIsICJpZ2FsaWE3LWd0ay13azItZXdzIiwgImlnYWxp
YTgtZ3RrLXdrMi1ld3MiLCAiaWdhbGlhOS1ndGstd2syLWV3cyJdCisgICAgICAidHJpZ2dlcmVk
X2J5IjogWyJndGstYnVpbGQtZXdzIl0sCisgICAgICAid29ya2VybmFtZXMiOiBbImlnYWxpYTUt
Z3RrLXdrMi1ld3MiLCAiaWdhbGlhNi1ndGstd2syLWV3cyIsICJpZ2FsaWE3LWd0ay13azItZXdz
IiwgImlnYWxpYTgtZ3RrLXdrMi1ld3MiLCAiaWdhbGlhOS1ndGstd2syLWV3cyIsICJpZ2FsaWEx
MC1ndGstd2syLWV3cyIsICJpZ2FsaWExMS1ndGstd2syLWV3cyIsICJpZ2FsaWExMi1ndGstd2sy
LWV3cyJdCiAgICAgfSwKICAgICB7CiAgICAgICAibmFtZSI6ICJpT1MtMTUtQnVpbGQtRVdTIiwg
InNob3J0bmFtZSI6ICJpb3MiLCAiaWNvbiI6ICJidWlsZE9ubHkiLApAQCAtMzEwLDYgKzMxNCw3
IEBACiAgICAgICAibmFtZSI6ICJBUEktVGVzdHMtR1RLLUVXUyIsICJzaG9ydG5hbWUiOiAiYXBp
LWd0ayIsICJpY29uIjogInRlc3RPbmx5IiwKICAgICAgICJmYWN0b3J5IjogIkFQSVRlc3RzRmFj
dG9yeSIsICJwbGF0Zm9ybSI6ICJndGsiLAogICAgICAgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFz
ZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKKyAgICAgICJ0cmlnZ2VyZWRfYnkiOiBb
Imd0ay1idWlsZC1ld3MiXSwKICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdhbGlhMy1ndGstd2sy
LWV3cyIsICJpZ2FsaWE0LWd0ay13azItZXdzIl0KICAgICB9LAogICAgIHsKQEAgLTM4NywxMiAr
MzkyLDE2IEBACiAgICAgICAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImFwaS10ZXN0
cy1tYWMtZXdzIiwKICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFQSS1UZXN0cy1tYWNPUy1FV1Mi
XQogICAgIH0sCisgICAgeworICAgICAgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJn
dGstYnVpbGQtZXdzIiwKKyAgICAgICJidWlsZGVyTmFtZXMiOiBbIkdUSy1CdWlsZC1FV1MiXQor
ICAgIH0sCiAgICAgewogICAgICAgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJhcGkt
dGVzdHMtZ3RrLWV3cyIsCiAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBUEktVGVzdHMtR1RLLUVX
UyJdCiAgICAgfSwKICAgICB7Ci0gICAgICAidHlwZSI6ICJUcnlfVXNlcnBhc3MiLCAibmFtZSI6
ICJndGstd2syLXRlc3RzLWV3cy1kaXNhYmxlZCIsICJwb3J0IjogNTU1OCwKKyAgICAgICJ0eXBl
IjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiZ3RrLXdrMi10ZXN0cy1ld3MiLAogICAgICAgImJ1
aWxkZXJOYW1lcyI6IFsiR1RLLVdLMi1UZXN0cy1FV1MiXQogICAgIH0sCiAgICAgewpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9mYWN0b3JpZXMucHkgYi9Ub29scy9DSVN1
cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weQppbmRleCBkOGU5ODBmYTAzMGRhMzMyZGVhZGU1
YWZlYzEyMzI4MGVhZGRjNDg0Li5lZjlkMTJjMWI1ODk5ZGFhNzkxOGEwNTVjNzk5NWJiYzMyOWE3
Y2U2IDEwMDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weQor
KysgYi9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weQpAQCAtMzAsNyArMzAs
NyBAQCBmcm9tIHN0ZXBzIGltcG9ydCAoQXBwbHlQYXRjaCwgQXBwbHlXYXRjaExpc3QsIENoZWNr
T3V0U291cmNlLCBDaGVja091dFNwZWNpZmljUgogICAgICAgICAgICAgICAgICAgIEluc3RhbGxH
dGtEZXBlbmRlbmNpZXMsIEluc3RhbGxXcGVEZXBlbmRlbmNpZXMsIEtpbGxPbGRQcm9jZXNzZXMs
IFByaW50Q29uZmlndXJhdGlvbiwgUHVzaENvbW1pdFRvV2ViS2l0UmVwbywKICAgICAgICAgICAg
ICAgICAgICBSdW5BUElUZXN0cywgUnVuQmluZGluZ3NUZXN0cywgUnVuQnVpbGRXZWJLaXRPcmdV
bml0VGVzdHMsIFJ1bkJ1aWxkYm90Q2hlY2tDb25maWdGb3JCdWlsZFdlYktpdCwgUnVuQnVpbGRi
b3RDaGVja0NvbmZpZ0ZvckVXUywKICAgICAgICAgICAgICAgICAgICBSdW5FV1NVbml0VGVzdHMs
IFJ1blJlc3VsdHNkYnB5VGVzdHMsIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMsIFJ1bldlYktpdDFU
ZXN0cywgUnVuV2ViS2l0UGVybFRlc3RzLCBSdW5XZWJLaXRQeVB5dGhvbjJUZXN0cywKLSAgICAg
ICAgICAgICAgICAgICBSdW5XZWJLaXRQeVB5dGhvbjNUZXN0cywgUnVuV2ViS2l0VGVzdHMsIFJ1
bldlYktpdFRlc3RzSW5TdHJlc3NNb2RlLCBSdW5XZWJLaXRUZXN0c0luU3RyZXNzR3VhcmRtYWxs
b2NNb2RlLAorICAgICAgICAgICAgICAgICAgIFJ1bldlYktpdFB5UHl0aG9uM1Rlc3RzLCBSdW5X
ZWJLaXRUZXN0cywgUnVuV2ViS2l0VGVzdHNSZWRUcmVlLCBSdW5XZWJLaXRUZXN0c0luU3RyZXNz
TW9kZSwgUnVuV2ViS2l0VGVzdHNJblN0cmVzc0d1YXJkbWFsbG9jTW9kZSwKICAgICAgICAgICAg
ICAgICAgICBTZXRCdWlsZFN1bW1hcnksIFNob3dJZGVudGlmaWVyLCBUcmlnZ2VyQ3Jhc2hMb2dT
dWJtaXNzaW9uLCBVcGRhdGVXb3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlUGF0Y2gsIFZhbGlkYXRlQ2hhbmdlTG9nQW5kUmV2aWV3ZXIsIFZhbGlkYXRlQ29tbWl0
ZXJBbmRSZXZpZXdlciwgV2FpdEZvckNyYXNoQ29sbGVjdGlvbiwKICAgICAgICAgICAgICAgICAg
ICBJbnN0YWxsQnVpbHRQcm9kdWN0LCBWZXJpZnlHaXRIdWJJbnRlZ3JpdHkpCkBAIC0yNTcsNyAr
MjU3LDcgQEAgY2xhc3MgR1RLQnVpbGRGYWN0b3J5KEJ1aWxkRmFjdG9yeSk6CiAKIAogY2xhc3Mg
R1RLVGVzdHNGYWN0b3J5KFRlc3RGYWN0b3J5KToKLSAgICBMYXlvdXRUZXN0Q2xhc3MgPSBSdW5X
ZWJLaXRUZXN0cworICAgIExheW91dFRlc3RDbGFzcyA9IFJ1bldlYktpdFRlc3RzUmVkVHJlZQog
CiAKIGNsYXNzIFdQRUZhY3RvcnkoRmFjdG9yeSk6CmRpZmYgLS1naXQgYS9Ub29scy9DSVN1cHBv
cnQvZXdzLWJ1aWxkL2xheW91dF90ZXN0X2ZhaWx1cmVzLnB5IGIvVG9vbHMvQ0lTdXBwb3J0L2V3
cy1idWlsZC9sYXlvdXRfdGVzdF9mYWlsdXJlcy5weQppbmRleCAxMTdmMzkxMDhmNTU1MjZhODk3
YzkwMjM2NmY5NzMwYWNlNWM5ZThlLi4yNjhiNjRhYzkwMjcyYmEyOTM2OTVmMzg1ODMxMTNjYmE4
NjBkOGYyIDEwMDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL2xheW91dF90ZXN0
X2ZhaWx1cmVzLnB5CisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvbGF5b3V0X3Rlc3Rf
ZmFpbHVyZXMucHkKQEAgLTI3LDggKzI3LDkgQEAgY2xhc3MgTGF5b3V0VGVzdEZhaWx1cmVzKG9i
amVjdCk6CiAgICAgX0pTT05fUFJFRklYID0gIkFERF9SRVNVTFRTKCIKICAgICBfSlNPTl9TVUZG
SVggPSAiKTsiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmFpbGluZ190ZXN0cywgZGlkX2V4
Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYWlsaW5n
X3Rlc3RzLCBmbGFreV90ZXN0cywgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQpOgogICAg
ICAgICBzZWxmLmZhaWxpbmdfdGVzdHMgPSBmYWlsaW5nX3Rlc3RzCisgICAgICAgIHNlbGYuZmxh
a3lfdGVzdHMgPSBmbGFreV90ZXN0cwogICAgICAgICBzZWxmLmRpZF9leGNlZWRfdGVzdF9mYWls
dXJlX2xpbWl0ID0gZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQKIAogICAgIEBjbGFzc21l
dGhvZApAQCAtNTYsMTMgKzU3LDE2IEBAIGNsYXNzIExheW91dFRlc3RGYWlsdXJlcyhvYmplY3Qp
OgogICAgICAgICBqc29uX2RpY3QgPSBqc29uLmxvYWRzKGNvbnRlbnRfc3RyaW5nKQogCiAgICAg
ICAgIGZhaWxpbmdfdGVzdHMgPSBbXQorICAgICAgICBmbGFreV90ZXN0cyA9IFtdCiAKICAgICAg
ICAgZGVmIGdldF9mYWlsaW5nX3Rlc3RzKHRlc3QsIHJlc3VsdCk6CiAgICAgICAgICAgICBpZiBy
ZXN1bHQuZ2V0KCdyZXBvcnQnKSBpbiBbJ1JFR1JFU1NJT04nLCAnTUlTU0lORyddOgogICAgICAg
ICAgICAgICAgIGZhaWxpbmdfdGVzdHMuYXBwZW5kKHRlc3QpCisgICAgICAgICAgICBlbGlmIHJl
c3VsdC5nZXQoJ3JlcG9ydCcpIGluIFsnRkxBS1knXToKKyAgICAgICAgICAgICAgICBmbGFreV90
ZXN0cy5hcHBlbmQodGVzdCkKIAogICAgICAgICBjbHMucGFyc2VfZnVsbF9yZXN1bHRzX2pzb24o
anNvbl9kaWN0Wyd0ZXN0cyddLCBnZXRfZmFpbGluZ190ZXN0cykKLSAgICAgICAgcmV0dXJuIGNs
cyhmYWlsaW5nX3Rlc3RzLCBqc29uX2RpY3QuZ2V0KCdpbnRlcnJ1cHRlZCcsIEZhbHNlKSkKKyAg
ICAgICAgcmV0dXJuIGNscyhmYWlsaW5nX3Rlc3RzLCBmbGFreV90ZXN0cywganNvbl9kaWN0Lmdl
dCgnaW50ZXJydXB0ZWQnLCBGYWxzZSkpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgcGFy
c2VfZnVsbF9yZXN1bHRzX2pzb24oY2xzLCB0cmVlLCBoYW5kbGVyLCBwcmVmaXg9JycpOgpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weSBiL1Rvb2xzL0NJU3Vw
cG9ydC9ld3MtYnVpbGQvc3RlcHMucHkKaW5kZXggOWMwZGQyMWQ5ZDJjOGJiMTM0ZWI0ZTIxNzQ2
YWY3MGQyZTUzNjBkNi4uYmNjZTg3N2RkYjkwYzE0YjlmZTc3MDFiYTlmM2Y2MjcwNDYzMzQ1NiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weQorKysgYi9Ub29s
cy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5CkBAIC01Niw2ICs1NiwxOSBAQCBXaXRoUHJv
cGVydGllcyA9IHByb3BlcnRpZXMuV2l0aFByb3BlcnRpZXMKIEludGVycG9sYXRlID0gcHJvcGVy
dGllcy5JbnRlcnBvbGF0ZQogCiAKK2NsYXNzIEJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyKGxvZ29i
c2VydmVyLkJ1ZmZlckxvZ09ic2VydmVyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3
YXJncyk6CisgICAgICAgIHNlbGYuaGVhZGVycyA9IFtdCisgICAgICAgIHN1cGVyKCkuX19pbml0
X18oKiprd2FyZ3MpCisKKyAgICBkZWYgaGVhZGVyUmVjZWl2ZWQoc2VsZiwgZGF0YSk6CisgICAg
ICAgIHNlbGYuaGVhZGVycy5hcHBlbmQoZGF0YSkKKworICAgIGRlZiBnZXRIZWFkZXJzKHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi5fZ2V0KHNlbGYuaGVhZGVycykKKworCiBjbGFzcyBDb25m
aWd1cmVCdWlsZChidWlsZHN0ZXAuQnVpbGRTdGVwKToKICAgICBuYW1lID0gJ2NvbmZpZ3VyZS1i
dWlsZCcKICAgICBkZXNjcmlwdGlvbiA9IFsnY29uZmlndXJpbmcgYnVpbGQnXQpAQCAtNzM1LDYg
Kzc0OCwyMSBAQCBjbGFzcyBCdWd6aWxsYU1peGluKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRlZiBzZW5kX2VtYWlsX2Zvcl9p
bmZyYXN0cnVjdHVyZV9pc3N1ZShzZWxmLCBpbmZyYXN0cnVjdHVyZV9pc3N1ZV90ZXh0KToKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgYnVpbGRlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgn
YnVpbGRlcm5hbWUnLCAnJykKKyAgICAgICAgICAgIHdvcmtlcl9uYW1lID0gc2VsZi5nZXRQcm9w
ZXJ0eSgnd29ya2VybmFtZScsICcnKQorICAgICAgICAgICAgYnVpbGRfdXJsID0gJ3t9Iy9idWls
ZGVycy97fS9idWlsZHMve30nLmZvcm1hdChzZWxmLm1hc3Rlci5jb25maWcuYnVpbGRib3RVUkws
IHNlbGYuYnVpbGQuX2J1aWxkZXJpZCwgc2VsZi5idWlsZC5udW1iZXIpCisgICAgICAgICAgICBl
bWFpbF9zdWJqZWN0ID0gJ0luZnJhc3RydWN0dXJlIGlzc3VlIGF0IHt9Jy5mb3JtYXQoYnVpbGRl
cl9uYW1lKQorICAgICAgICAgICAgZW1haWxfdGV4dCA9ICdUaGUgZm9sbG93aW5nIGluZnJhc3Ry
dWN0dXJlIGlzc3VlIGhhcHBlbmVkIGF0OlxuXG4nCisgICAgICAgICAgICBlbWFpbF90ZXh0ICs9
ICcgICAgLSBCdWlsZCA6IHt9XG4nLmZvcm1hdChidWlsZF91cmwpCisgICAgICAgICAgICBlbWFp
bF90ZXh0ICs9ICcgICAgLSBCdWlsZGVyIDoge31cbicuZm9ybWF0KGJ1aWxkZXJfbmFtZSkKKyAg
ICAgICAgICAgIGVtYWlsX3RleHQgKz0gJyAgICAtIFdvcmtlciA6IHt9XG4nLmZvcm1hdCh3b3Jr
ZXJfbmFtZSkKKyAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJyAgICAtIElzc3VlOiB7fVxuJy5m
b3JtYXQoaW5mcmFzdHJ1Y3R1cmVfaXNzdWVfdGV4dCkKKyAgICAgICAgICAgIHNlbmRfZW1haWxf
dG9fYm90X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwg
J2luZnJhc3RydWN0dXJlLXt9Jy5mb3JtYXQoYnVpbGRlcl9uYW1lKSkKKyAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1h
aWwgZm9yIGluZnJhc3RydWN0dXJlIGlzc3VlOiB7fScuZm9ybWF0KGUpKQorCiAgICAgZGVmIGdl
dF9idWd6aWxsYV9hcGlfa2V5KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwYXNz
d29yZHMgPSBqc29uLmxvYWQob3BlbigncGFzc3dvcmRzLmpzb24nKSkKQEAgLTExNzEsNiArMTE5
OSw3IEBAIGNsYXNzIFRyaWdnZXIodHJpZ2dlci5UcmlnZ2VyKToKICAgICAgICAgICAgIHByb3Bl
cnRpZXNfdG9fcGFzc1snZXdzX3JldmlzaW9uJ10gPSBwcm9wZXJ0aWVzLlByb3BlcnR5KCdnb3Rf
cmV2aXNpb24nKQogICAgICAgICBpZiBzZWxmLnRyaWdnZXJzOgogICAgICAgICAgICAgcHJvcGVy
dGllc190b19wYXNzWyd0cmlnZ2VycyddID0gc2VsZi50cmlnZ2VycworICAgICAgICBwcm9wZXJ0
aWVzX3RvX3Bhc3NbJ3JldHJ5X2NvdW50J10gPSBwcm9wZXJ0aWVzLlByb3BlcnR5KCdyZXRyeV9j
b3VudCcsIGRlZmF1bHQ9MCkKICAgICAgICAgcmV0dXJuIHByb3BlcnRpZXNfdG9fcGFzcwogCiAK
QEAgLTIxOTMsNyArMjIyMiw5IEBAIGNsYXNzIFJ1bldlYktpdFRlc3RzKHNoZWxsLlRlc3QpOgog
ICAgICAgICBpZiBwYXRjaF9hdXRob3IgaW4gWyd3ZWJraXQtd3B0LWltcG9ydC1ib3RAaWdhbGlh
LmNvbSddOgogICAgICAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cyddKQogICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnLS1leGl0LWFmdGVyLW4tZmFpbHVy
ZXMnLCBzZWxmLkVYSVRfQUZURVJfRkFJTFVSRVMsICctLXNraXAtZmFpbGluZy10ZXN0cyddKQor
ICAgICAgICAgICAgaWYgc2VsZi5FWElUX0FGVEVSX0ZBSUxVUkVTIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tZXhpdC1hZnRl
ci1uLWZhaWx1cmVzJywgJ3t9Jy5mb3JtYXQoc2VsZi5FWElUX0FGVEVSX0ZBSUxVUkVTKV0pCisg
ICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyctLXNraXAtZmFpbGlu
Zy10ZXN0cyddKQogCiAgICAgICAgIGlmIGFkZGl0aW9uYWxBcmd1bWVudHM6CiAgICAgICAgICAg
ICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgYWRkaXRpb25hbEFyZ3VtZW50cykKQEAg
LTIyMDEsOCArMjIzMiw4IEBAIGNsYXNzIFJ1bldlYktpdFRlc3RzKHNoZWxsLlRlc3QpOgogICAg
ICAgICBpZiBzZWxmLkVOQUJMRV9HVUFSRF9NQUxMT0M6CiAgICAgICAgICAgICBzZWxmLnNldENv
bW1hbmQoc2VsZi5jb21tYW5kICsgWyctLWd1YXJkLW1hbGxvYyddKQogCi0gICAgZGVmIHN0YXJ0
KHNlbGYpOgotICAgICAgICBzZWxmLmxvZ19vYnNlcnZlciA9IGxvZ29ic2VydmVyLkJ1ZmZlckxv
Z09ic2VydmVyKHdhbnRTdGRlcnI9VHJ1ZSkKKyAgICBkZWYgc3RhcnQoc2VsZiwgQnVmZmVyTG9n
T2JzZXJ2ZXJDbGFzcz1sb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcik6CisgICAgICAgIHNl
bGYubG9nX29ic2VydmVyID0gQnVmZmVyTG9nT2JzZXJ2ZXJDbGFzcyh3YW50U3RkZXJyPVRydWUp
CiAgICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ3N0ZGlvJywgc2VsZi5sb2dfb2JzZXJ2ZXIp
CiAgICAgICAgIHNlbGYubG9nX29ic2VydmVyX2pzb24gPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dP
YnNlcnZlcigpCiAgICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ2pzb24nLCBzZWxmLmxvZ19v
YnNlcnZlcl9qc29uKQpAQCAtMjI2NCw2ICsyMjk1LDcgQEAgY2xhc3MgUnVuV2ViS2l0VGVzdHMo
c2hlbGwuVGVzdCk6CiAgICAgICAgIGlmIGZpcnN0X3Jlc3VsdHM6CiAgICAgICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdmaXJzdF9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgZmlyc3Rf
cmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCkKICAgICAgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIHNvcnRlZChmaXJzdF9yZXN1bHRzLmZh
aWxpbmdfdGVzdHMpKQorICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2Zs
YWtpZXMnLCBzb3J0ZWQoZmlyc3RfcmVzdWx0cy5mbGFreV90ZXN0cykpCiAgICAgICAgICAgICBp
ZiBmaXJzdF9yZXN1bHRzLmZhaWxpbmdfdGVzdHM6CiAgICAgICAgICAgICAgICAgc2VsZi5fYWRk
VG9Mb2coc2VsZi50ZXN0X2ZhaWx1cmVzX2xvZ19uYW1lLCAnXG4nLmpvaW4oZmlyc3RfcmVzdWx0
cy5mYWlsaW5nX3Rlc3RzKSkKICAgICAgICAgc2VsZi5fcGFyc2VSdW5XZWJLaXRUZXN0c091dHB1
dChsb2dUZXh0KQpAQCAtMjM3NSw2ICsyNDA3LDcgQEAgY2xhc3MgUmVSdW5XZWJLaXRUZXN0cyhS
dW5XZWJLaXRUZXN0cyk6CiAgICAgICAgIGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cyA9IHNl
dChzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbXSkpCiAgICAgICAgIHNl
Y29uZF9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9w
ZXJ0eSgnc2Vjb25kX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnKQogICAgICAgICBzZWNv
bmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3NlY29uZF9y
dW5fZmFpbHVyZXMnLCBbXSkpCisgICAgICAgICMgRklYTUU6IGhlcmUgaXQgY2FuIGJlIGEgZ29v
ZCBpZGVhIHRvIGFsc28gdXNlIHRoZSBpbmZvIGZyb20gc2Vjb25kX3J1bl9mbGFraWVzIGFuZCBm
aXJzdF9ydW5fZmxha2llcwogICAgICAgICB0ZXN0c190aGF0X2NvbnNpc3RlbnRseV9mYWlsZWQg
PSBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMuaW50ZXJzZWN0aW9uKHNlY29uZF9yZXN1bHRz
X2ZhaWxpbmdfdGVzdHMpCiAgICAgICAgIGZsYWt5X2ZhaWx1cmVzID0gZmlyc3RfcmVzdWx0c19m
YWlsaW5nX3Rlc3RzLnVuaW9uKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpIC0gZmlyc3Rf
cmVzdWx0c19mYWlsaW5nX3Rlc3RzLmludGVyc2VjdGlvbihzZWNvbmRfcmVzdWx0c19mYWlsaW5n
X3Rlc3RzKQogICAgICAgICBmbGFreV9mYWlsdXJlcyA9IHNvcnRlZChsaXN0KGZsYWt5X2ZhaWx1
cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldCkBAIC0yNDEzLDYgKzI0NDYsNyBA
QCBjbGFzcyBSZVJ1bldlYktpdFRlc3RzKFJ1bldlYktpdFRlc3RzKToKICAgICAgICAgaWYgc2Vj
b25kX3Jlc3VsdHM6CiAgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcmVzdWx0
c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIHNlY29uZF9yZXN1bHRzLmRpZF9leGNlZWRfdGVzdF9m
YWlsdXJlX2xpbWl0KQogICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9m
YWlsdXJlcycsIHNvcnRlZChzZWNvbmRfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKSkKKyAgICAgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmxha2llcycsIHNvcnRlZChzZWNvbmRf
cmVzdWx0cy5mbGFreV90ZXN0cykpCiAgICAgICAgICAgICBpZiBzZWNvbmRfcmVzdWx0cy5mYWls
aW5nX3Rlc3RzOgogICAgICAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKHNlbGYudGVzdF9mYWls
dXJlc19sb2dfbmFtZSwgJ1xuJy5qb2luKHNlY29uZF9yZXN1bHRzLmZhaWxpbmdfdGVzdHMpKQog
ICAgICAgICBzZWxmLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ1RleHQpCkBAIC0yNDUy
LDYgKzI0ODYsNyBAQCBjbGFzcyBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaChSdW5XZWJLaXRU
ZXN0cyk6CiAgICAgICAgIGlmIGNsZWFuX3RyZWVfcmVzdWx0czoKICAgICAgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIGNs
ZWFuX3RyZWVfcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCkKICAgICAgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgY2xlYW5fdHJl
ZV9yZXN1bHRzLmZhaWxpbmdfdGVzdHMpCisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdj
bGVhbl90cmVlX3J1bl9mbGFraWVzJywgc29ydGVkKGNsZWFuX3RyZWVfcmVzdWx0cy5mbGFreV90
ZXN0cykpCiAgICAgICAgICAgICBpZiBjbGVhbl90cmVlX3Jlc3VsdHMuZmFpbGluZ190ZXN0czoK
ICAgICAgICAgICAgICAgICBzZWxmLl9hZGRUb0xvZyhzZWxmLnRlc3RfZmFpbHVyZXNfbG9nX25h
bWUsICdcbicuam9pbihjbGVhbl90cmVlX3Jlc3VsdHMuZmFpbGluZ190ZXN0cykpCiAgICAgICAg
IHNlbGYuX3BhcnNlUnVuV2ViS2l0VGVzdHNPdXRwdXQobG9nVGV4dCkKQEAgLTI0ODIsMTggKzI1
MTcsMjIgQEAgY2xhc3MgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRT
dGVwLCBCdWd6aWxsYU1peGluKToKICAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ2FuYWx5emUtbGF5
b3V0LXRlc3RzLXJlc3VsdHMnXQogICAgIE5VTV9GQUlMVVJFU19UT19ESVNQTEFZID0gMTAKIAot
ICAgIGRlZiByZXBvcnRfZmFpbHVyZShzZWxmLCBuZXdfZmFpbHVyZXMpOgorICAgIGRlZiByZXBv
cnRfZmFpbHVyZShzZWxmLCBuZXdfZmFpbHVyZXMsIGV4Y2VlZF9mYWlsdXJlX2xpbWl0PUZhbHNl
KToKICAgICAgICAgc2VsZi5maW5pc2hlZChGQUlMVVJFKQogICAgICAgICBzZWxmLmJ1aWxkLnJl
c3VsdHMgPSBGQUlMVVJFCiAgICAgICAgIGlmIG5vdCBuZXdfZmFpbHVyZXM6CiAgICAgICAgICAg
ICBtZXNzYWdlID0gJ0ZvdW5kIHVuZXhwZWN0ZWQgZmFpbHVyZSB3aXRoIHBhdGNoJwogICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIGxlbihuZXdfZmFpbHVy
ZXMpID4gMSBlbHNlICcnCisgICAgICAgICAgICBpZiBleGNlZWRfZmFpbHVyZV9saW1pdDoKKyAg
ICAgICAgICAgICAgICBtZXNzYWdlID0gJ0ZhaWx1cmUgbGltaXQgZXhjZWVkLiBBdCBsZWFzdCBm
b3VuZCcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdGb3Vu
ZCcKICAgICAgICAgICAgIG5ld19mYWlsdXJlc19zdHJpbmcgPSAnLCAnLmpvaW4oc29ydGVkKG5l
d19mYWlsdXJlcylbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQotICAgICAgICAgICAg
bWVzc2FnZSA9ICdGb3VuZCB7fSBuZXcgdGVzdCBmYWlsdXJle306IHt9Jy5mb3JtYXQobGVuKG5l
d19mYWlsdXJlcyksIHBsdXJhbFN1ZmZpeCwgbmV3X2ZhaWx1cmVzX3N0cmluZykKKyAgICAgICAg
ICAgIG1lc3NhZ2UgKz0gJyB7fSBuZXcgdGVzdCBmYWlsdXJle306IHt9Jy5mb3JtYXQobGVuKG5l
d19mYWlsdXJlcyksIHBsdXJhbFN1ZmZpeCwgbmV3X2ZhaWx1cmVzX3N0cmluZykKICAgICAgICAg
ICAgIGlmIGxlbihuZXdfZmFpbHVyZXMpID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWToK
ICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICcgLi4uJwotICAgICAgICAgICAgc2VsZi5zZW5k
X2VtYWlsX2Zvcl9uZXdfdGVzdF9mYWlsdXJlcyhuZXdfZmFpbHVyZXMpCisgICAgICAgICAgICBz
ZWxmLnNlbmRfZW1haWxfZm9yX25ld190ZXN0X2ZhaWx1cmVzKG5ld19mYWlsdXJlcywgZXhjZWVk
X2ZhaWx1cmVfbGltaXQpCiAgICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVzc2FnZQog
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZF9maW5pc2hfc3VtbWFyeScsIG1lc3NhZ2Up
CiAKQEAgLTI1NTAsNyArMjU4OSw3IEBAIGNsYXNzIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMo
YnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6CiAgICAgZGVmIF9yZXN1bHRzX2Zh
aWxlZF9kaWZmZXJlbnRfdGVzdHMoc2VsZiwgZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzLCBz
ZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKToKICAgICAgICAgcmV0dXJuIGZpcnN0X3Jlc3Vs
dHNfZmFpbGluZ190ZXN0cyAhPSBzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzCiAKLSAgICBk
ZWYgc2VuZF9lbWFpbF9mb3JfZmxha3lfZmFpbHVyZShzZWxmLCB0ZXN0X25hbWUpOgorICAgIGRl
ZiBzZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlKHNlbGYsIHRlc3RfbmFtZSwgc3RlcF9zdHI9
Tm9uZSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IHNlbGYuZ2V0
UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJycpCiAgICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNl
bGYuZ2V0UHJvcGVydHkoJ3dvcmtlcm5hbWUnLCAnJykKQEAgLTI1NTksNiArMjU5OCw4IEBAIGNs
YXNzIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemls
bGFNaXhpbik6CiAKICAgICAgICAgICAgIGVtYWlsX3N1YmplY3QgPSAnRmxha3kgdGVzdDoge30n
LmZvcm1hdCh0ZXN0X25hbWUpCiAgICAgICAgICAgICBlbWFpbF90ZXh0ID0gJ0ZsYWt5IHRlc3Q6
IHt9XG5cbkJ1aWxkOiB7fVxuXG5CdWlsZGVyOiB7fVxuXG5Xb3JrZXI6IHt9XG5cbkhpc3Rvcnk6
IHt9Jy5mb3JtYXQodGVzdF9uYW1lLCBidWlsZF91cmwsIGJ1aWxkZXJfbmFtZSwgd29ya2VyX25h
bWUsIGhpc3RvcnlfdXJsKQorICAgICAgICAgICAgaWYgc3RlcF9zdHI6CisgICAgICAgICAgICAg
ICAgZW1haWxfdGV4dCArPSAnXG5UaGlzIHRlc3Qgd2FzIGZsYWt5IG9uIHRoZSBzdGVwczoge30n
LmZvcm1hdChzdGVwX3N0cikKICAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJz
KGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ2ZsYWt5LXt9Jy5mb3Jt
YXQodGVzdF9uYW1lKSkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAg
ICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIGZsYWt5IGZhaWx1cmU6IHt9Jy5m
b3JtYXQoZSkpCkBAIC0yNTc2LDcgKzI2MTcsNyBAQCBjbGFzcyBBbmFseXplTGF5b3V0VGVzdHNS
ZXN1bHRzKGJ1aWxkc3RlcC5CdWlsZFN0ZXAsIEJ1Z3ppbGxhTWl4aW4pOgogICAgICAgICBleGNl
cHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBwcmludCgnRXJyb3IgaW4gc2VuZGluZyBl
bWFpbCBmb3IgcHJlLWV4aXN0aW5nIGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCiAKLSAgICBkZWYg
c2VuZF9lbWFpbF9mb3JfbmV3X3Rlc3RfZmFpbHVyZXMoc2VsZiwgdGVzdF9uYW1lcyk6CisgICAg
ZGVmIHNlbmRfZW1haWxfZm9yX25ld190ZXN0X2ZhaWx1cmVzKHNlbGYsIHRlc3RfbmFtZXMsIGV4
Y2VlZF9mYWlsdXJlX2xpbWl0PUZhbHNlKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcGF0
Y2hfaWQgPSBzZWxmLmdldFByb3BlcnR5KCdwYXRjaF9pZCcsICcnKQogICAgICAgICAgICAgaWYg
bm90IHNlbGYuc2hvdWxkX3NlbmRfZW1haWwocGF0Y2hfaWQpOgpAQCAtMjU5OCw2ICsyNjM5LDgg
QEAgY2xhc3MgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRTdGVwLCBC
dWd6aWxsYU1peGluKToKICAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJyB3aGlsZSB0ZXN0aW5n
IDxhIGhyZWY9Int9Ij5QYXRjaCB7fTwvYT4nLmZvcm1hdChCdWd6aWxsYS5wYXRjaF91cmwocGF0
Y2hfaWQpLCBwYXRjaF9pZCkKICAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJyBmb3IgPGEgaHJl
Zj0ie30iPkJ1ZyB7fTwvYT4uJy5mb3JtYXQoQnVnemlsbGEuYnVnX3VybChidWdfaWQpLCBidWdf
aWQpCiAgICAgICAgICAgICBlbWFpbF90ZXh0ICs9ICdcblxuRnVsbCBkZXRhaWxzIGFyZSBhdmFp
bGFibGUgYXQ6IHt9XG5cblBhdGNoIGF1dGhvcjoge30nLmZvcm1hdChidWlsZF91cmwsIHBhdGNo
X2F1dGhvcikKKyAgICAgICAgICAgIGlmIGV4Y2VlZF9mYWlsdXJlX2xpbWl0OgorICAgICAgICAg
ICAgICAgIGVtYWlsX3RleHQgKz0gJ1xuXG5BZGl0aW9uYWxseSB0aGUgZmFpbHVyZSBsaW1pdCBo
YXMgYmVlbiBleGNlZWRlZCwgc28gdGhlIHRlc3Qgc3VpdGUgaGFzIGJlZW4gdGVybWluYXRlZCBl
YXJseS4gSXQgaXMgbGlrZWx5IHRoYXQgdGhlcmUgd291bGQgYmUgbW9yZSBmYWlsdXJlcyB0aGFu
IHRoZSBvbmVzIGxpc3RlZCBiZWxvdy4nCiAgICAgICAgICAgICBlbWFpbF90ZXh0ICs9ICdcblxu
TGF5b3V0IHRlc3QgZmFpbHVyZXt9Olxue30nLmZvcm1hdChwbHVyYWxTdWZmaXgsIHRlc3RfbmFt
ZXNfc3RyaW5nKQogICAgICAgICAgICAgZW1haWxfdGV4dCArPSAnXG5cblRvIHVuc3Vic2NyaWJl
IGZyb20gdGhlc2Ugbm90aWZpY2F0aW9ucyBvciB0byBwcm92aWRlIGFueSBmZWVkYmFjayBwbGVh
c2UgZW1haWwgYWFrYXNoX2phaW5AYXBwbGUuY29tJwogICAgICAgICAgICAgc2VsZi5fYWRkVG9M
b2coJ3N0ZGlvJywgJ1NlbmRpbmcgZW1haWwgbm90aWZpY2F0aW9uIHRvIHt9Jy5mb3JtYXQocGF0
Y2hfYXV0aG9yKSkKQEAgLTI2MjQsNyArMjY2Nyw3IEBAIGNsYXNzIEFuYWx5emVMYXlvdXRUZXN0
c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6CiAgICAgICAgICAg
ICBjbGVhbl90cmVlX3J1bl9zdGF0dXMgPSBzZWxmLmdldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1
bl9zdGF0dXMnLCBGQUlMVVJFKQogICAgICAgICAgICAgaWYgY2xlYW5fdHJlZV9ydW5fc3RhdHVz
ID09IFNVQ0NFU1M6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUo
c2V0KCkpCi0gICAgICAgICAgICAjIFRPRE86IGVtYWlsIEVXUyBhZG1pbnMKKyAgICAgICAgICAg
IHNlbGYuc2VuZF9lbWFpbF9mb3JfaW5mcmFzdHJ1Y3R1cmVfaXNzdWUoJ0JvdGggZmlyc3QgYW5k
IHNlY29uZCBsYXlvdXQtdGVzdCBydW5zIHdpdGggcGF0Y2ggZ2VuZXJhdGVkIG5vIGxpc3Qgb2Yg
cmVzdWx0cyBidXQgZXhpdGVkIHdpdGggZXJyb3IsIGFuZCB0aGUgY2xlYW5fdHJlZSB3aXRob3V0
IHBhdGNoIHJldHJ5IGFsc28gZmFpbGVkLicpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXRy
eV9idWlsZCgnVW5leHBlY3RlZCBpbmZyYXN0cnVjdHVyZSBpc3N1ZSwgcmV0cnlpbmcgYnVpbGQn
KQogCiAgICAgICAgIGlmIGZpcnN0X3Jlc3VsdHNfZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGlt
aXQgYW5kIHNlY29uZF9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0OgpAQCAt
MjY1MSw2ICsyNjk0LDcgQEAgY2xhc3MgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyhidWlsZHN0
ZXAuQnVpbGRTdGVwLCBCdWd6aWxsYU1peGluKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5yZXBvcnRfZmFpbHVyZShmYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoKQogICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucmV0cnlfYnVpbGQoKQogCisgICAgICAgICMgRklYTUU6IEhlcmUgaXQg
Y291bGQgYmUgYSBnb29kIGlkZWEgdG8gYWxzbyB1c2UgdGhlIGluZm8gb2YgcmVzdWx0cy5mbGFr
eV90ZXN0cyBmcm9tIHRoZSBydW5zCiAgICAgICAgIGlmIHNlbGYuX3Jlc3VsdHNfZmFpbGVkX2Rp
ZmZlcmVudF90ZXN0cyhmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMsIHNlY29uZF9yZXN1bHRz
X2ZhaWxpbmdfdGVzdHMpOgogICAgICAgICAgICAgdGVzdHNfdGhhdF9vbmx5X2ZhaWxlZF9maXJz
dCA9IGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cy5kaWZmZXJlbmNlKHNlY29uZF9yZXN1bHRz
X2ZhaWxpbmdfdGVzdHMpCiAgICAgICAgICAgICBzZWxmLl9yZXBvcnRfZmxha3lfdGVzdHModGVz
dHNfdGhhdF9vbmx5X2ZhaWxlZF9maXJzdCkKQEAgLTI2ODksNiArMjczMywyOTggQEAgY2xhc3Mg
UnVuV2ViS2l0MVRlc3RzKFJ1bldlYktpdFRlc3RzKToKICAgICAgICAgcmV0dXJuIFJ1bldlYktp
dFRlc3RzLnN0YXJ0KHNlbGYpCiAKIAorIyBUaGlzIGlzIGEgc3BlY2lhbGl6ZWQgY2xhc3MgZGVz
aWduZWQgdG8gY29wZSB3aXRoIGEgdHJlZSB0aGF0IGlzIG5vdCBhbHdheXMgZ3JlZW4uCisjIEl0
IHRyaWVzIGhhcmQgdG8gYXZvaWQgcmVwb3J0aW5nIGFueSBmYWxzZSBwb3NpdGl2ZSwgc28gaXQg
d2lsbCBvbmx5IHJlcG9ydCBuZXcKKyMgY29uc2lzdGVudCBmYWlsdXJlcyAoZmFpbCBhbHdheXMg
d2l0aCB0aGUgcGF0Y2ggYW5kIHBhc3MgYWx3YXlzIHdpdGhvdXQgaXQpLgorY2xhc3MgUnVuV2Vi
S2l0VGVzdHNSZWRUcmVlKFJ1bldlYktpdFRlc3RzKToKKyAgICBFWElUX0FGVEVSX0ZBSUxVUkVT
ID0gNTAwCisKKyAgICBkZWYgX2RpZF9jb21tYW5kX3RpbWVkX291dChzZWxmLCBsb2dIZWFkZXJz
VGV4dCk6CisgICAgICAgIHRpbWVkX291dF9saW5lX3N0YXJ0ID0gJ2NvbW1hbmQgdGltZWQgb3V0
OiB7fSBzZWNvbmRzIGVsYXBzZWQgcnVubmluZycuZm9ybWF0KHNlbGYuTUFYX1NFQ09ORFNfU1RF
UF9SVU4pCisgICAgICAgIHRpbWVkX291dF9saW5lX2VuZCA9ICdhdHRlbXB0aW5nIHRvIGtpbGwn
CisgICAgICAgIGZvciBsaW5lIGluIGxvZ0hlYWRlcnNUZXh0LnNwbGl0bGluZXMoKToKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0
aCh0aW1lZF9vdXRfbGluZV9zdGFydCkgYW5kIGxpbmUuZW5kc3dpdGgodGltZWRfb3V0X2xpbmVf
ZW5kKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKKyAgICAgICAgZmlyc3RfcmVz
dWx0c19mYWlsaW5nX3Rlc3RzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWls
dXJlcycsIFtdKSkKKyAgICAgICAgZmlyc3RfcmVzdWx0c19mbGFreV90ZXN0cyA9IHNldChzZWxm
LmdldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFtdKSkKKyAgICAgICAgcmMgPSBzZWxm
LmV2YWx1YXRlUmVzdWx0KGNtZCkKKyAgICAgICAgbmV4dF9zdGVwcyA9IFtBcmNoaXZlVGVzdFJl
c3VsdHMoKSwgVXBsb2FkVGVzdFJlc3VsdHMoKSwgRXh0cmFjdFRlc3RSZXN1bHRzKCldCisgICAg
ICAgIGlmIGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0czoKKyAgICAgICAgICAgIG5leHRfc3Rl
cHMuZXh0ZW5kKFtWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1G
YWxzZSksIEtpbGxPbGRQcm9jZXNzZXMoKSwgUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1Jl
ZFRyZWUoKV0pCisgICAgICAgIGVsaWYgZmlyc3RfcmVzdWx0c19mbGFreV90ZXN0czoKKyAgICAg
ICAgICAgIG5leHRfc3RlcHMuYXBwZW5kKEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHNSZWRUcmVl
KCkpCisgICAgICAgIGVsaWYgcmMgPT0gU1VDQ0VTUyBvciByYyA9PSBXQVJOSU5HUzoKKyAgICAg
ICAgICAgIG5leHRfc3RlcHMgPSBOb25lCisgICAgICAgICAgICBtZXNzYWdlID0gJ1Bhc3NlZCBs
YXlvdXQgdGVzdHMnCisgICAgICAgICAgICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UK
KyAgICAgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKKyAgICAgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2J1aWxkX3N1bW1hcnknLCBtZXNzYWdlKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgIyBXZSBoYXZlIGEgZmFpbHVyZSByZXR1cm4gY29kZSwgYnV0IG5vdCBhIGxp
c3Qgb2YgZmFpbGVkIG9yIGZsYWt5IHRlc3RzLgorICAgICAgICAgICAgIyBTbyByZXRyeSByZS1y
dW5uaW5nIHRoZSBfd2hvbGVfIGxheW91dCB0ZXN0cyB3aXRob3V0LXBhdGNoIHRvIHNlZSBpZgor
ICAgICAgICAgICAgIyB0aGlzIHVuZXhwZWN0ZWQgZmFpbHVyZSB3YXMgcHJlLWV4aXN0ZW50LiBJ
ZiB0aGUgZmFpbHVyZSB3YXMgbm90IHByZS1leGlzdGVudCwKKyAgICAgICAgICAgICMgdGhlbiB3
ZSB3b3VsZCBub3QgcmVwb3J0IGEgbGlzdCBvZiBmYWlsZWQgdGVzdCwganVzdCBhIGdlbmVyaWMg
InVua25vd24iIGZhaWx1cmUuCisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaEZh
aWxlZFRlc3RzJywgVHJ1ZSkKKyAgICAgICAgICAgIG5leHRfc3RlcHMuZXh0ZW5kKFtVbkFwcGx5
UGF0Y2hJZlJlcXVpcmVkKCksIENvbXBpbGVXZWJLaXRXaXRob3V0UGF0Y2gocmV0cnlfYnVpbGRf
b25fZmFpbHVyZT1UcnVlKSwgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFk
ZFVSTHM9RmFsc2UpLCBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaFJlZFRyZWUoKV0pCisgICAg
ICAgIGlmIG5leHRfc3RlcHM6CisgICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJD
dXJyZW50U3RlcChuZXh0X3N0ZXBzKQorICAgICAgICByZXR1cm4gcmMKKworCitjbGFzcyBSdW5X
ZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJlZShSdW5XZWJLaXRUZXN0c1JlZFRyZWUpOgor
ICAgIG5hbWUgPSAnbGF5b3V0LXRlc3RzLXJlcGVhdC1mYWlsdXJlcycKKyAgICBOVU1fUkVQRUFU
U19QRVJfVEVTVCA9IDEwCisgICAgRVhJVF9BRlRFUl9GQUlMVVJFUyA9IE5vbmUKKyAgICBNQVhf
U0VDT05EU19TVEVQX1JVTiA9IDE4MDAwICAjIDVoCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1heFRpbWU9c2VsZi5NQVhfU0VD
T05EU19TVEVQX1JVTiwgKiprd2FyZ3MpCisKKyAgICBkZWYgc2V0TGF5b3V0VGVzdENvbW1hbmQo
c2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0TGF5b3V0VGVzdENvbW1hbmQoKQorICAgICAgICBm
aXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnZmlyc3Rf
cnVuX2ZhaWx1cmVzJywgW10pKQorICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5k
ICsgWyctLXJlcGVhdC1lYWNoPSVzJyAlIHNlbGYuTlVNX1JFUEVBVFNfUEVSX1RFU1RdICsgc29y
dGVkKGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cykpCisKKyAgICBkZWYgZXZhbHVhdGVDb21t
YW5kKHNlbGYsIGNtZCk6CisgICAgICAgIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfbm9uZmxha3lfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFtdKSkKKyAgICAgICAg
d2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzID0gc2V0KHNlbGYuZ2V0
UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFtd
KSkKKyAgICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQgPSBzZWxmLmdl
dFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcsIEZhbHNlKQor
ICAgICAgICBmaXJzdF9yZXN1bHRzX2ZsYWt5X3Rlc3RzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHko
J2ZpcnN0X3J1bl9mbGFraWVzJywgW10pKQorICAgICAgICByYyA9IHNlbGYuZXZhbHVhdGVSZXN1
bHQoY21kKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWls
dXJlc19yZXRjb2RlJywgcmMpCisgICAgICAgIG5leHRfc3RlcHMgPSBbQXJjaGl2ZVRlc3RSZXN1
bHRzKCksIFVwbG9hZFRlc3RSZXN1bHRzKGlkZW50aWZpZXI9J3JlcGVhdC1mYWlsdXJlcycpLCBF
eHRyYWN0VGVzdFJlc3VsdHMoaWRlbnRpZmllcj0ncmVwZWF0LWZhaWx1cmVzJyldCisgICAgICAg
IGlmIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMg
b3Igd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQ6CisgICAgICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdwYXRjaEZhaWxlZFRlc3RzJywgVHJ1ZSkKKyAgICAgICAgICAgIG5leHRf
c3RlcHMuZXh0ZW5kKFtWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJM
cz1GYWxzZSksIEtpbGxPbGRQcm9jZXNzZXMoKSwgVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpLCBD
b21waWxlV2ViS2l0V2l0aG91dFBhdGNoKHJldHJ5X2J1aWxkX29uX2ZhaWx1cmU9VHJ1ZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9z
ZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLCBSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzV2l0
aG91dFBhdGNoUmVkVHJlZSgpXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5leHRfc3Rl
cHMuYXBwZW5kKEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHNSZWRUcmVlKCkpCisgICAgICAgIGlm
IG5leHRfc3RlcHM6CisgICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50
U3RlcChuZXh0X3N0ZXBzKQorICAgICAgICByZXR1cm4gcmMKKworICAgIGRlZiBjb21tYW5kQ29t
cGxldGUoc2VsZiwgY21kKToKKyAgICAgICAgc2hlbGwuVGVzdC5jb21tYW5kQ29tcGxldGUoc2Vs
ZiwgY21kKQorICAgICAgICBsb2dUZXh0ID0gc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0U3Rkb3V0KCkg
KyBzZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRlcnIoKQorICAgICAgICBsb2dUZXh0SnNvbiA9IHNl
bGYubG9nX29ic2VydmVyX2pzb24uZ2V0U3Rkb3V0KCkKKyAgICAgICAgd2l0aF9wYXRjaF9yZXBl
YXRfZmFpbHVyZXNfcmVzdWx0cyA9IExheW91dFRlc3RGYWlsdXJlcy5yZXN1bHRzX2Zyb21fc3Ry
aW5nKGxvZ1RleHRKc29uKQorICAgICAgICBpZiB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19y
ZXN1bHRzOgorICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRf
ZmFpbHVyZXNfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIHdpdGhfcGF0Y2hfcmVwZWF0
X2ZhaWx1cmVzX3Jlc3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQpCisgICAgICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRz
X25vbmZsYWt5X2ZhaWx1cmVzJywgc29ydGVkKHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jl
c3VsdHMuZmFpbGluZ190ZXN0cykpCisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRo
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBzb3J0ZWQod2l0aF9wYXRj
aF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0cy5mbGFreV90ZXN0cykpCisgICAgICAgICAgICBpZiB3
aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzLmZhaWxpbmdfdGVzdHM6CisgICAgICAg
ICAgICAgICAgc2VsZi5fYWRkVG9Mb2coc2VsZi50ZXN0X2ZhaWx1cmVzX2xvZ19uYW1lLCAnXG4n
LmpvaW4od2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKSkK
KyAgICAgICAgY29tbWFuZF90aW1lZG91dCA9IHNlbGYuX2RpZF9jb21tYW5kX3RpbWVkX291dChz
ZWxmLmxvZ19vYnNlcnZlci5nZXRIZWFkZXJzKCkpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0JywgY29tbWFuZF90aW1lZG91dCkK
KyAgICAgICAgc2VsZi5fcGFyc2VSdW5XZWJLaXRUZXN0c091dHB1dChsb2dUZXh0KQorCisgICAg
ZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICAjIGJ1aWxkYm90IG1lc3NhZ2VzIGFib3V0IHRpbWVv
dXQgcmVhY2hlZCBhcHBlYXIgb24gdGhlIGhlYWRlciBzdHJlYW0gb2YgQnVmZmVyTG9nCisgICAg
ICAgIHJldHVybiBzdXBlcigpLnN0YXJ0KEJ1ZmZlckxvZ09ic2VydmVyQ2xhc3M9QnVmZmVyTG9n
SGVhZGVyT2JzZXJ2ZXIpCisKKworY2xhc3MgUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1dp
dGhvdXRQYXRjaFJlZFRyZWUoUnVuV2ViS2l0VGVzdHNSZWRUcmVlKToKKyAgICBuYW1lID0gJ2xh
eW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1wYXRjaCcKKyAgICBOVU1fUkVQRUFU
U19QRVJfVEVTVCA9IDEwCisgICAgRVhJVF9BRlRFUl9GQUlMVVJFUyA9IE5vbmUKKyAgICBNQVhf
U0VDT05EU19TVEVQX1JVTiA9IDEwODAwICAjIDNoCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1heFRpbWU9c2VsZi5NQVhfU0VD
T05EU19TVEVQX1JVTiwgKiprd2FyZ3MpCisKKyAgICBkZWYgc2V0TGF5b3V0VGVzdENvbW1hbmQo
c2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0TGF5b3V0VGVzdENvbW1hbmQoKQorICAgICAgICB3
aXRoX3BhdGNoX25vbmZsYWt5X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3dpdGhf
cGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbXSkpCisg
ICAgICAgIGZpcnN0X3J1bl9mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9y
dW5fZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Rp
bWVkb3V0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGlt
ZWRvdXQnLCBGYWxzZSkKKyAgICAgICAgZmFpbHVyZXNfdG9fcmVwZWF0ID0gZmlyc3RfcnVuX2Zh
aWx1cmVzIGlmIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0IGVsc2Ugd2l0aF9w
YXRjaF9ub25mbGFreV9mYWlsdXJlcworICAgICAgICAjIFBhc3MgJy0tc2tpcHBlZD1hbHdheXMn
IHRvIGVuc3VyZSB0aGF0IGFueSB0ZXN0IHBhc3NlZCB2aWEgY29tbWFuZCBsaW5lIGFyZ3VtZW50
cworICAgICAgICAjIGlzIHNraXBwZWQgYW55d2F5cyBpZiBpcyBtYXJrZWQgYXMgc3VjaCBvbiB0
aGUgRXhwZWN0YXRpb24gZmlsZXMgb3IgaWYgaXMgbWFya2VkCisgICAgICAgICMgYXMgZmFpbHVy
ZSAoc2luY2Ugd2UgYXJlIHBhc3NpbmcgYWxzbyAnLS1za2lwLWZhaWxpbmctdGVzdHMnKS4gVGhh
dCB3YXkgd2UgZW5zdXJlCisgICAgICAgICMgdG8gcmVwb3J0IHRoZSBjYXNlIG9mIGEgcGF0Y2gg
cmVtb3ZpbmcgYW4gZXhwZWN0YXRpb24gdGhhdCBzdGlsbCBmYWlscyB3aXRoIGl0LgorICAgICAg
ICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyctLXJlcGVhdC1lYWNoPSVzJyAlIHNl
bGYuTlVNX1JFUEVBVFNfUEVSX1RFU1QsICctLXNraXBwZWQ9YWx3YXlzJ10gKyBzb3J0ZWQoZmFp
bHVyZXNfdG9fcmVwZWF0KSkKKworICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToK
KyAgICAgICAgcmMgPSBzZWxmLmV2YWx1YXRlUmVzdWx0KGNtZCkKKyAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29kZScsIHJjKQorICAg
ICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChbQXJjaGl2ZVRlc3RSZXN1
bHRzKCksIFVwbG9hZFRlc3RSZXN1bHRzKGlkZW50aWZpZXI9J3JlcGVhdC1mYWlsdXJlcy13aXRo
b3V0LXBhdGNoJyksIEV4dHJhY3RUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdyZXBlYXQtZmFpbHVy
ZXMtd2l0aG91dC1wYXRjaCcpLCBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzUmVkVHJlZSgpXSkK
KyAgICAgICAgcmV0dXJuIHJjCisKKyAgICBkZWYgY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCk6
CisgICAgICAgIHNoZWxsLlRlc3QuY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCkKKyAgICAgICAg
bG9nVGV4dCA9IHNlbGYubG9nX29ic2VydmVyLmdldFN0ZG91dCgpICsgc2VsZi5sb2dfb2JzZXJ2
ZXIuZ2V0U3RkZXJyKCkKKyAgICAgICAgbG9nVGV4dEpzb24gPSBzZWxmLmxvZ19vYnNlcnZlcl9q
c29uLmdldFN0ZG91dCgpCisgICAgICAgIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jl
c3VsdHMgPSBMYXlvdXRUZXN0RmFpbHVyZXMucmVzdWx0c19mcm9tX3N0cmluZyhsb2dUZXh0SnNv
bikKKyAgICAgICAgaWYgd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0czoKKyAg
ICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVz
X3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCB3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWls
dXJlc19yZXN1bHRzLmRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0KQorICAgICAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19u
b25mbGFreV9mYWlsdXJlcycsIHNvcnRlZCh3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19y
ZXN1bHRzLmZhaWxpbmdfdGVzdHMpKQorICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0
aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgc29ydGVkKHdpdGhv
dXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHMuZmxha3lfdGVzdHMpKQorICAgICAgICAg
ICAgaWYgd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0cy5mYWlsaW5nX3Rlc3Rz
OgorICAgICAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKHNlbGYudGVzdF9mYWlsdXJlc19sb2df
bmFtZSwgJ1xuJy5qb2luKHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHMuZmFp
bGluZ190ZXN0cykpCisgICAgICAgIGNvbW1hbmRfdGltZWRvdXQgPSBzZWxmLl9kaWRfY29tbWFu
ZF90aW1lZF9vdXQoc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0SGVhZGVycygpKQorICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcsIGNv
bW1hbmRfdGltZWRvdXQpCisgICAgICAgIHNlbGYuX3BhcnNlUnVuV2ViS2l0VGVzdHNPdXRwdXQo
bG9nVGV4dCkKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgIyBidWlsZGJvdCBtZXNz
YWdlcyBhYm91dCB0aW1lb3V0IHJlYWNoZWQgYXBwZWFyIG9uIHRoZSBoZWFkZXIgc3RyZWFtIG9m
IEJ1ZmZlckxvZworICAgICAgICByZXR1cm4gc3VwZXIoKS5zdGFydChCdWZmZXJMb2dPYnNlcnZl
ckNsYXNzPUJ1ZmZlckxvZ0hlYWRlck9ic2VydmVyKQorCisKK2NsYXNzIFJ1bldlYktpdFRlc3Rz
V2l0aG91dFBhdGNoUmVkVHJlZShSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaCk6CisgICAgRVhJ
VF9BRlRFUl9GQUlMVVJFUyA9IDUwMAorCisgICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBj
bWQpOgorICAgICAgICByYyA9IHNoZWxsLlRlc3QuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkK
KyAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0FyY2hpdmVUZXN0
UmVzdWx0cygpLCBVcGxvYWRUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdjbGVhbi10cmVlJyksIEV4
dHJhY3RUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdjbGVhbi10cmVlJyksIEFuYWx5emVMYXlvdXRU
ZXN0c1Jlc3VsdHNSZWRUcmVlKCldKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90
cmVlX3J1bl9zdGF0dXMnLCByYykKKyAgICAgICAgcmV0dXJuIHJjCisKKworY2xhc3MgQW5hbHl6
ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUoQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cyk6Cisg
ICAgTUFYX1JFVFJZID0gMworCisgICAgZGVmIHJlcG9ydF9zdWNjZXNzKHNlbGYpOgorICAgICAg
ICBzZWxmLmZpbmlzaGVkKFNVQ0NFU1MpCisgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNV
Q0NFU1MKKyAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSAnUGFzc2VkIGxheW91dCB0ZXN0
cycKKyAgICAgICAgbWVzc2FnZSA9ICcnCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxk
X3N1bW1hcnknLCBtZXNzYWdlKQorICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25lKQor
CisgICAgZGVmIHJlcG9ydF93YXJuaW5nKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBzZWxmLmZp
bmlzaGVkKFdBUk5JTkdTKQorICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBXQVJOSU5HUwor
ICAgICAgICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnYnVpbGRfc3VtbWFyeScsIG1lc3NhZ2UpCisgICAgICAgIHJldHVybiBkZWZlci5z
dWNjZWVkKE5vbmUpCisKKyAgICBkZWYgcmVwb3J0X2luZnJhc3RydWN0dXJlX2lzc3VlX2FuZF9t
YXliZV9yZXRyeV9idWlsZChzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgcmV0cnlfY291bnQgPSBp
bnQoc2VsZi5nZXRQcm9wZXJ0eSgncmV0cnlfY291bnQnLCAwKSkKKyAgICAgICAgaWYgcmV0cnlf
Y291bnQgPj0gc2VsZi5NQVhfUkVUUlk6CisgICAgICAgICAgICBtZXNzYWdlICs9ICdcblJlYWNo
ZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgKHt9KS4gVW5hYmxlIHRvIGRldGVybWlu
ZSBpZiBwYXRjaCBpcyBiYWQgb3IgdGhlcmUgaXMgYSBwcmUtZXhpc3RlbnQgaW5mcmFzdHJ1Y3R1
cmUgaXNzdWUuJy5mb3JtYXQoc2VsZi5NQVhfUkVUUlkpCisgICAgICAgICAgICBzZWxmLnNlbmRf
ZW1haWxfZm9yX2luZnJhc3RydWN0dXJlX2lzc3VlKG1lc3NhZ2UpCisgICAgICAgICAgICByZXR1
cm4gc2VsZi5yZXBvcnRfd2FybmluZyhtZXNzYWdlKQorICAgICAgICBtZXNzYWdlICs9ICJcblJl
dHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyB7fSBvZiB7fV0iLmZvcm1hdChyZXRyeV9jb3Vu
dCwgc2VsZi5NQVhfUkVUUlkpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3JldHJ5X2NvdW50
JywgcmV0cnlfY291bnQgKyAxKQorICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2luZnJhc3Ry
dWN0dXJlX2lzc3VlKG1lc3NhZ2UpCisgICAgICAgIHJldHVybiBzZWxmLnJldHJ5X2J1aWxkKG1l
c3NhZ2U9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWU6IHt9Jy5mb3JtYXQobWVzc2Fn
ZSkpCisKKyAgICBkZWYgc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0ZW50X2ZhaWx1cmVzKHNlbGYs
IHRlc3RfbmFtZXMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBidWlsZGVyX25hbWUgPSBz
ZWxmLmdldFByb3BlcnR5KCdidWlsZGVybmFtZScsICcnKQorICAgICAgICAgICAgd29ya2VyX25h
bWUgPSBzZWxmLmdldFByb3BlcnR5KCd3b3JrZXJuYW1lJywgJycpCisgICAgICAgICAgICBidWls
ZF91cmwgPSAne30jL2J1aWxkZXJzL3t9L2J1aWxkcy97fScuZm9ybWF0KHNlbGYubWFzdGVyLmNv
bmZpZy5idWlsZGJvdFVSTCwgc2VsZi5idWlsZC5fYnVpbGRlcmlkLCBzZWxmLmJ1aWxkLm51bWJl
cikKKyAgICAgICAgICAgIG51bWJlcl9mYWlsdXJlcyA9IGxlbih0ZXN0X25hbWVzKQorICAgICAg
ICAgICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIG51bWJlcl9mYWlsdXJlcyA+IDEgZWxzZSAnJwor
CisgICAgICAgICAgICBlbWFpbF9zdWJqZWN0ID0gJ0luZm8gYWJvdXQge30gcHJlLWV4aXN0ZW50
IGZhaWx1cmV7fSBhdCB7fScuZm9ybWF0KG51bWJlcl9mYWlsdXJlcywgcGx1cmFsU3VmZml4LCBi
dWlsZGVyX25hbWUpCisgICAgICAgICAgICBlbWFpbF90ZXN0ID0gJ0luZm8gYWJvdXQgcHJlLWV4
aXN0ZW50IChub24tZmxha3kpIHRlc3QgZmFpbHVyZXt9IGF0IEVXUzpcbicuZm9ybWF0KHBsdXJh
bFN1ZmZpeCkKKyAgICAgICAgICAgIGVtYWlsX3RleHQgPSAnICAgIC0gQnVpbGQgOiB7fVxuJy5m
b3JtYXQoYnVpbGRfdXJsKQorICAgICAgICAgICAgZW1haWxfdGV4dCA9ICcgICAgLSBCdWlsZGVy
IDoge31cbicuZm9ybWF0KGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgICAgIGVtYWlsX3RleHQgPSAn
ICAgIC0gV29ya2VyIDoge31cbicuZm9ybWF0KHdvcmtlcl9uYW1lKQorICAgICAgICAgICAgZm9y
IHRlc3RfbmFtZSBpbiBzb3J0ZWQodGVzdF9uYW1lcyk6CisgICAgICAgICAgICAgICAgaGlzdG9y
eV91cmwgPSAne30/c3VpdGU9bGF5b3V0LXRlc3RzJnRlc3Q9e30nLmZvcm1hdChSRVNVTFRTX0RC
X1VSTCwgdGVzdF9uYW1lKQorICAgICAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJ1xuLSB7fSAo
PGEgaHJlZj0ie30iPnRlc3QgaGlzdG9yeTwvYT4pJy5mb3JtYXQodGVzdF9uYW1lLCBoaXN0b3J5
X3VybCkKKyAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWlsX3N1Ympl
Y3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ3ByZWV4aXN0aW5nLXt9Jy5mb3JtYXQodGVz
dF9uYW1lKSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcHJp
bnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIGZsYWt5IGZhaWx1cmU6IHt9Jy5mb3JtYXQo
ZSkpCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICMgUnVuIHdpdGggcGF0Y2gsIHJ1
bm5pbmcgdGhlIHdob2xlIGxheW91dCB0ZXN0IHN1aXRlCisgICAgICAgIGZpcnN0X3Jlc3VsdHNf
ZXhjZWVkX2ZhaWx1cmVfbGltaXQgPSBzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9yZXN1bHRzX2V4
Y2VlZF9mYWlsdXJlX2xpbWl0JywgRmFsc2UpCisgICAgICAgIGZpcnN0X3J1bl9mYWlsdXJlcyA9
IHNldChzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbXSkpCisgICAgICAg
IGZpcnN0X3J1bl9mbGFraWVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFr
aWVzJywgW10pKQorCisgICAgICAgICMgUnVuIHdpdGggcGF0Y2gsIHJ1bm5pbmcgZmlyc3RfcnVu
X2ZhaWx1cmVzIDEwIHRpbWVzIGVhY2ggdGVzdAorICAgICAgICB3aXRoX3BhdGNoX3JlcGVhdF9m
YWlsdXJlc19yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9wZXJ0eSgn
d2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcs
IEZhbHNlKQorICAgICAgICB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZs
YWt5X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIHdpdGhfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcyA9IHNldChzZWxmLmdldFByb3BlcnR5
KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbXSkpCisgICAg
ICAgIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3RpbWVkb3V0ID0gc2VsZi5nZXRQcm9wZXJ0
eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBGYWxzZSkKKworICAgICAg
ICAjIFJ1biB3aXRob3V0IHBhdGNoLCBydW5uaW5nIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVz
X3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMgMTAgdGltZXMgZWFjaCB0ZXN0CisgICAgICAgIHdp
dGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQg
PSBzZWxmLmdldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRz
X2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgRmFsc2UpCisgICAgICAgIHdpdGhvdXRfcGF0Y2hfcmVw
ZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9w
ZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWls
dXJlcycsIFtdKSkKKyAgICAgICAgd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0
c19mbGFraWVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFtdKSkKKyAgICAgICAgd2l0aG91dF9wYXRjaF9yZXBl
YXRfZmFpbHVyZXNfdGltZWRvdXQgPSBzZWxmLmdldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3Jl
cGVhdF9mYWlsdXJlc190aW1lZG91dCcsIEZhbHNlKQorCisgICAgICAgICMgQ2hlY2sgZm9yIHVu
ZXhwZWN0ZWQgc2l0dWF0aW9ucyBhbmQgd2FybiBFV1MgYm90IHdhdGNoZXJzIG9yIGF1dGhvciBw
b3RlbnRpYWxseSByZXRyeWluZyB0aGUgYnVpbGQuCisgICAgICAgIGlmIChub3QgZmlyc3RfcnVu
X2ZhaWx1cmVzKSBhbmQgKG5vdCBmaXJzdF9ydW5fZmxha2llcyk6CisgICAgICAgICAgICAjIElm
IHdlJ3ZlIG1hZGUgaXQgaGVyZSwgdGhlIGZpcnN0X3J1biBmYWlsZWQsIHdoaWNoIG1lYW5zIHRo
ZXJlIHNob3VsZCBiZSBlaXRoZXIgdGVzdCBmYWlsdXJlcyBvciBmbGFraWVzCisgICAgICAgICAg
ICAjIE90aGVyd2lzZSB0aGVyZSBpcyBzb21lIHVuZXhwZWN0ZWQgaXNzdWUuCisgICAgICAgICAg
ICAjIFRoZSBjbGVhbiB0cmVlIHJ1biB0aGF0IG9ubHkgaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBy
dW4gZ2l2ZXMgZXJyb3IgY29kZSB3aXRob3V0IGdlbmVyYXRpbmcgYSBsaXN0IG9mIGZhaWx1cmVz
IG9yIGZsYWtpZXMKKyAgICAgICAgICAgIGNsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzID0gc2V0KHNl
bGYuZ2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgW10pKQorICAgICAgICAg
ICAgY2xlYW5fdHJlZV9ydW5fZmxha2llcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdjbGVhbl90
cmVlX3J1bl9mbGFraWVzJywgW10pKQorICAgICAgICAgICAgY2xlYW5fdHJlZV9ydW5fc3RhdHVz
ID0gc2VsZi5nZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVSRSkKKwor
ICAgICAgICAgICAgIyBJZiB3ZSBhcmUgbm90IG9uIHRoZSBsYXN0IHJldHJ5LCB0aGVuIHRyeSB0
byByZXRyeSB0aGUgd2hvbGUgdGVzdGluZyB3aXRoIHRoZSBob3BlIGl0IHdhcyBhIHJhbmRvbSBp
bmZyYXN0cnVjdHVyZSBlcnJvcgorICAgICAgICAgICAgcmV0cnlfY291bnQgPSBpbnQoc2VsZi5n
ZXRQcm9wZXJ0eSgncmV0cnlfY291bnQnLCAwKSkKKyAgICAgICAgICAgIGlmIHJldHJ5X2NvdW50
IDwgc2VsZi5NQVhfUkVUUlk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2lu
ZnJhc3RydWN0dXJlX2lzc3VlX2FuZF9tYXliZV9yZXRyeV9idWlsZCgnVGhlIGxheW91dC10ZXN0
IHJ1biB3aXRoIHBhdGNoIGdlbmVyYXRlZCBubyBsaXN0IG9mIHJlc3VsdHMgYW5kIGV4aXRlZCB3
aXRoIGVycm9yLCByZXRyeWluZyB3aXRoIHRoZSBob3BlIGl0IHdhcyBhIHJhbmRvbSBpbmZyYXN0
cnVjdHVyZSBlcnJvci4nKQorICAgICAgICAgICAgIyBPdGhlcndpc2UgcmVwb3J0IGFuZCBlcnJv
ciBvciBhIHdhcm5pbmcgKHNpbmNlIHdlIGFscmVhZHkgZ2F2ZSBpdCBlbm91Z2ggcmV0cmllcyBm
b3IgdGhlIGlzc3VlIHRvIG5vdCBiZSBjYXVzZWQgYnkgYSByYW5kb20gaW5mcmFzdHJ1Y3R1cmUg
ZXJyb3IpCisgICAgICAgICAgICAjIElmIHRoZSBjbGVhbi10cmVlIHJ1biBnZW5lcmF0ZWQgc29t
ZSByZXN1bHRzIHRoZW4gd2UgYXNzdW1lIHRoaXMgcGF0Y2ggYnJva2UgdGhlIHNjcmlwdCBydW4t
d2Via2l0LXRlc3RzIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQKKyAgICAgICAgICAgIGlmIChjbGVh
bl90cmVlX3J1bl9zdGF0dXMgaW4gW1NVQ0NFU1MsIFdBUk5JTkdTXSkgb3IgY2xlYW5fdHJlZV9y
dW5fZmFpbHVyZXMgb3IgY2xlYW5fdHJlZV9ydW5fZmxha2llczoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShzZXQoKSwgZmlyc3RfcmVzdWx0c19leGNlZWRfZmFp
bHVyZV9saW1pdCkKKyAgICAgICAgICAgICMgVGhpcyB3aWxsIGVuZCB0aGUgdGVzdGluZyBhcyBy
ZXRyeV9jb3VudCB3aWxsIGJlIG5vdyBzZWxmLk1BWF9SRVRSWSBhbmQgYSB3YXJuaW5nIHdpbGwg
YmUgcmVwb3J0ZWQuCisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfaW5mcmFzdHJ1Y3R1
cmVfaXNzdWVfYW5kX21heWJlX3JldHJ5X2J1aWxkKCdUaGUgbGF5b3V0LXRlc3QgcnVuIHdpdGgg
cGF0Y2ggZ2VuZXJhdGVkIG5vIGxpc3Qgb2YgcmVzdWx0cyBhbmQgZXhpdGVkIHdpdGggZXJyb3Is
IGFuZCB0aGUgY2xlYW5fdHJlZSB3aXRob3V0IHBhdGNoIHJ1biBkaWQgdGhlIHNhbWUgdGhpbmcu
JykKKworICAgICAgICBpZiB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2V4Y2Vl
ZF9mYWlsdXJlX2xpbWl0IG9yIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNf
ZXhjZWVkX2ZhaWx1cmVfbGltaXQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfaW5m
cmFzdHJ1Y3R1cmVfaXNzdWVfYW5kX21heWJlX3JldHJ5X2J1aWxkKCdPbmUgb2YgdGhlIHN0ZXBz
IGZvciByZXRyeWluZyB0aGUgZmFpbGVkIHRlc3RzIGhhcyBleGl0ZWQgZWFybHksIGJ1dCB0aGlz
IHN0ZXBzIHNob3VsZCBydW4gd2l0aG91dCAiLS1leGl0LWFmdGVyLW4tZmFpbHVyZXMiIHN3aXRj
aCwgc28gdGhleSBzaG91bGQgbm90IGV4aXQgZWFybHkuJykKKworICAgICAgICBpZiB3aXRob3V0
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dDoKKyAgICAgICAgICAgIHJldHVybiBzZWxm
LnJlcG9ydF9pbmZyYXN0cnVjdHVyZV9pc3N1ZV9hbmRfbWF5YmVfcmV0cnlfYnVpbGQoJ1RoZSBz
dGVwICJsYXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVzLXdpdGhvdXQtcGF0Y2giIHdhcyBpbnRl
cnJ1bXBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIHRpbWVvdXQuJykKKworICAgICAgICBpZiB3
aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dDoKKyAgICAgICAgICAgICMgVGhlIHBh
dGNoIGlzIGNhdXNpbmcgdGhlIHN0ZXAgJ2xheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0
aC1wYXRjaCIgdG8gdGltZW91dCAoYnV0IHRoZSBzdGVwICdsYXlvdXQtdGVzdHMtcmVwZWF0LWZh
aWx1cmVzLXdpdGhvdXQtcGF0Y2gnIGRvZXNuJ3QgdGltZW91dCkKKyAgICAgICAgICAgICMgTGlr
ZWx5IHRoZSBwYXRjaCBpcyBhZGRpbmcgc28gbWFueSBmYWlsdXJlcyB0aGF0IGlzIGNhdXNpbmcg
dGhlIHRpbWVvdXQgdG8gYmUgcmVhY2hlZC4gVGhlcmUgaXMgbm8gcG9pbnQgaW4gcmVwZWF0aW5n
IHRoaXMgcnVuIChpdCB3b3VsZCBoYXBwZW4gdGhlIHNhbWUgb24gbmV4dCBydW5zIGFuZCBjb25z
dW1lIGxvdCBvZiB0aW1lKQorICAgICAgICAgICAgIyBNYXJrIHRoZSBwYXRjaCBhcyBiYWQgYW5k
IHJlcG9ydCB0aGUgdGVzdHMgdGhhdCBmYWlsdXJlZCBvbiB0aGUgZmlyc3QgcnVuICh3aXRob3V0
IHRoZSBvbmVzIHRoYXQgcGFzc2VkIG9uIHRoZSByZXBlYXQpLgorICAgICAgICAgICAgIyBUaGlz
IG1heSBjYXVzZSBzb21lIGZsYWt5IHRlc3RzIHRvIGJlIHJlcG9ydGVkIGFzIGZhbHNlIHBvc2l0
aXZlcyAoc2luY2UgdGhlIHN0ZXAgdG8gZGlzY2FyZCBmbGFraWVzIHdpdGggcGF0Y2ggY291bGRu
J3QgZmluaXNoKSwgYnV0IGlzIHRoZSBiZXN0IHdlIGNhbiBkbyBoZXJlLgorICAgICAgICAgICAg
bGlrZWx5X25ld19ub25fZmxha3lfZmFpbHVyZXMgPSBmaXJzdF9ydW5fZmFpbHVyZXMgLSB3aXRo
b3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzLnVuaW9u
KHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcykKKyAgICAgICAg
ICAgIHNlbGYuc2VuZF9lbWFpbF9mb3JfaW5mcmFzdHJ1Y3R1cmVfaXNzdWUoJ1RoZSBzdGVwICJs
YXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVzLXdpdGgtcGF0Y2giIHJlYWNoZWQgdGhlIHRpbWVv
dXQgYnV0IHRoZSBzdGVwICJsYXlvdXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVzLXdpdGhvdXQtcGF0
Y2giIGVuZGVkLiBOb3QgdHJ5aW5nIHRvIHJlcGVhdCB0aGlzLiBSZXBvcnRpbmcge30gZmFpbHVy
ZXMgZnJvbSB0aGUgZmlyc3QgcnVuLicuZm9ybWF0KGxlbihsaWtlbHlfbmV3X25vbl9mbGFreV9m
YWlsdXJlcykpKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUobGlrZWx5
X25ld19ub25fZmxha3lfZmFpbHVyZXMsIGZpcnN0X3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGlt
aXQpCisKKyAgICAgICAgIyBUaGUgc3RlcCB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlcyBnZW5l
cmF0ZWQgbm8gbGlzdCBvZiBmYWlsdXJlcyBvciBmbGFraWVzLCB3aGljaCBzaG91bGQgb25seSBo
YXBwZW4gd2hlbiB0aGUgcmV0dXJuIGNvZGUgb2YgdGhlIHN0ZXAgaXMgU1VDRVNTIG9yIFdBUk5J
TkdTLgorICAgICAgICBpZiBub3Qgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19u
b25mbGFreV9mYWlsdXJlcyBhbmQgbm90IHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfZmxha2llczoKKyAgICAgICAgICAgIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3JldGNv
ZGUgPSBzZWxmLmdldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXRjb2Rl
JywgRkFJTFVSRSkKKyAgICAgICAgICAgIGlmIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jl
dGNvZGUgbm90IGluIFtTVUNDRVNTLCBXQVJOSU5HU106CisgICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYucmVwb3J0X2luZnJhc3RydWN0dXJlX2lzc3VlX2FuZF9tYXliZV9yZXRyeV9idWlsZCgn
VGhlIHN0ZXAgImxheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMiIGZhaWxlZCB0byBnZW5lcmF0
ZSBhbnkgbGlzdCBvZiBmYWlsdXJlcyBvciBmbGFraWVzIGFuZCByZXR1cm5lZCBhbiBlcnJvciBj
b2RlLicpCisKKyAgICAgICAgIyBDaGVjayB0aGUgc2FtZSBmb3IgdGhlIHN0ZXAgd2l0aG91dF9w
YXRjaF9yZXBlYXRfZmFpbHVyZXMKKyAgICAgICAgaWYgbm90IHdpdGhvdXRfcGF0Y2hfcmVwZWF0
X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMgYW5kIG5vdCB3aXRob3V0X3BhdGNo
X3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXM6CisgICAgICAgICAgICB3aXRob3V0X3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc19yZXRjb2RlID0gc2VsZi5nZXRQcm9wZXJ0eSgnd2l0aG91dF9w
YXRjaF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29kZScsIEZBSUxVUkUpCisgICAgICAgICAgICBpZiB3
aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXRjb2RlIG5vdCBpbiBbU1VDQ0VTUywgV0FS
TklOR1NdOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9pbmZyYXN0cnVjdHVy
ZV9pc3N1ZV9hbmRfbWF5YmVfcmV0cnlfYnVpbGQoJ1RoZSBzdGVwICJsYXlvdXQtdGVzdHMtcmVw
ZWF0LWZhaWx1cmVzLXdpdGhvdXQtcGF0Y2giIGZhaWxlZCB0byBnZW5lcmF0ZSBhbnkgbGlzdCBv
ZiBmYWlsdXJlcyBvciBmbGFraWVzIGFuZCByZXR1cm5lZCBhbiBlcnJvciBjb2RlLicpCisKKyAg
ICAgICAgIyBXYXJuIEVXUyBib3Qgd2F0Y2hlcnMgYWJvdXQgZmxha2llcworICAgICAgICBhbGxf
Zmxha3lfZmFpbHVyZXMgPSBmaXJzdF9ydW5fZmxha2llcy51bmlvbih3aXRoX3BhdGNoX3JlcGVh
dF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMpLnVuaW9uKHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfZmxha2llcykKKyAgICAgICAgZm9yIGZsYWt5X2ZhaWx1cmUgaW4gYWxs
X2ZsYWt5X2ZhaWx1cmVzOgorICAgICAgICAgICAgc3RlcF9uYW1lcyA9IFtdCisgICAgICAgICAg
ICBpZiBmbGFreV9mYWlsdXJlIGluIHdpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfZmxha2llczoKKyAgICAgICAgICAgICAgICBzdGVwX25hbWVzLmFwcGVuZCgnbGF5b3V0LXRl
c3RzLXJlcGVhdC1mYWlsdXJlcy13aXRob3V0LXBhdGNoJykKKyAgICAgICAgICAgIGlmIGZsYWt5
X2ZhaWx1cmUgaW4gd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzOgor
ICAgICAgICAgICAgICAgIHN0ZXBfbmFtZXMuYXBwZW5kKCdsYXlvdXQtdGVzdHMtcmVwZWF0LWZh
aWx1cmVzICh3aXRoIHBhdGNoKScpCisgICAgICAgICAgICBpZiBmbGFreV9mYWlsdXJlIGluIGZp
cnN0X3J1bl9mbGFraWVzOgorICAgICAgICAgICAgICAgIHN0ZXBfbmFtZXMuYXBwZW5kKCdsYXlv
dXQtdGVzdHMgKHdpdGggcGF0Y2gpJykKKyAgICAgICAgICAgIHN0ZXBfbmFtZXNfc3RyID0gJyJ7
fSInLmZvcm1hdCgnIiwgIicuam9pbihzdGVwX25hbWVzKSkKKyAgICAgICAgICAgIHNlbGYuc2Vu
ZF9lbWFpbF9mb3JfZmxha3lfZmFpbHVyZShmbGFreV9mYWlsdXJlLCBzdGVwX25hbWVzX3N0cikK
KworICAgICAgICAjIFdhcm4gRVdTIGJvdCB3YXRjaGVycyBhYm91dCBwcmUtZXhpc3RlbnQgbm9u
LWZsYWt5IGZhaWx1cmVzIChpZiBhbnkpLCBidXQKKyAgICAgICAgIyBzZW5kIG9ubHkgb25lIGUt
bWFpbCB3aXRoIGFsbCB0aGUgdGVzdHMgdG8gYXZvaWQgc2VuZGluZyB0b28gbXVjaCBlLW1haWxz
LgorICAgICAgICBwcmVfZXhpc3RlbnRfbm9uX2ZsYWt5X2ZhaWx1cmVzID0gd2l0aG91dF9wYXRj
aF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcyAtIHdpdGhfcGF0Y2hf
cmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMudW5pb24oYWxsX2ZsYWt5
X2ZhaWx1cmVzKQorICAgICAgICBpZiBwcmVfZXhpc3RlbnRfbm9uX2ZsYWt5X2ZhaWx1cmVzOgor
ICAgICAgICAgICAgc2VsZi5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RlbnRfZmFpbHVyZXMocHJl
X2V4aXN0ZW50X25vbl9mbGFreV9mYWlsdXJlcykKKworICAgICAgICAjIEZpbmFsbHkgY2hlY2sg
aWYgdGhlcmUgYXJlIG5ldyBjb25zaXRlbnQgKG5vbi1mbGFreSkgZmFpbHVyZXMgY2F1c2VkIGJ5
IHRoZSBwYXRjaCBhbmQgd2FybiB0aGUgcGF0Y2ggYXV0aG9yIHNldHR0aW5nIHRoZSBzdGF0dXMg
Zm9yIHRoZSBidWlsZC4KKyAgICAgICAgbmV3X25vbl9mbGFreV9mYWlsdXJlcyA9IHdpdGhfcGF0
Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMgLSB3aXRob3V0X3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzLnVuaW9uKHdpdGhv
dXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcykKKyAgICAgICAgaWYgbmV3
X25vbl9mbGFreV9mYWlsdXJlczoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWls
dXJlKG5ld19ub25fZmxha3lfZmFpbHVyZXMsIGZpcnN0X3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVf
bGltaXQpCisKKyAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X3N1Y2Nlc3MoKQorCisKIGNsYXNz
IEFyY2hpdmVCdWlsdFByb2R1Y3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKICAgICBjb21tYW5kID0g
WydweXRob24zJywgJ1Rvb2xzL0NJU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUnLAogICAg
ICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoJy0tcGxhdGZvcm09JShmdWxsUGxhdGZvcm0pcycp
LCBXaXRoUHJvcGVydGllcygnLS0lKGNvbmZpZ3VyYXRpb24pcycpLCAnYXJjaGl2ZSddCmRpZmYg
LS1naXQgYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5IGIvVG9v
bHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwc191bml0dGVzdC5weQppbmRleCAxNWMyM2FmMTM2
ZWJjODFmZjJlNmJiODE2MDk3OWQ3NTEyYjE5NDE3Li5hMTZiNGZmOTE1YmM3ZmQ3MmFkNjFmMTM2
YmZiNzViOGUxMzc4MDQxIDEwMDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0
ZXBzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5p
dHRlc3QucHkKQEAgLTUzLDcgKzUzLDggQEAgZnJvbSBzdGVwcyBpbXBvcnQgKEFuYWx5emVBUElU
ZXN0c1Jlc3VsdHMsIEFuYWx5emVDb21waWxlV2ViS2l0UmVzdWx0cywgQW5hbHl6ZUoKICAgICAg
ICAgICAgICAgICAgICBSdW5CdWlsZGJvdENoZWNrQ29uZmlnRm9yQnVpbGRXZWJLaXQsIFJ1bkJ1
aWxkYm90Q2hlY2tDb25maWdGb3JFV1MsIFJ1bkVXU1VuaXRUZXN0cywgUnVuUmVzdWx0c2RicHlU
ZXN0cywKICAgICAgICAgICAgICAgICAgICBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLCBSdW5KU0NU
ZXN0c1dpdGhvdXRQYXRjaCwgUnVuV2ViS2l0MVRlc3RzLCBSdW5XZWJLaXRQZXJsVGVzdHMsIFJ1
bldlYktpdFB5UHl0aG9uMlRlc3RzLAogICAgICAgICAgICAgICAgICAgIFJ1bldlYktpdFB5UHl0
aG9uM1Rlc3RzLCBSdW5XZWJLaXRUZXN0cywgUnVuV2ViS2l0VGVzdHNJblN0cmVzc01vZGUsIFJ1
bldlYktpdFRlc3RzSW5TdHJlc3NHdWFyZG1hbGxvY01vZGUsCi0gICAgICAgICAgICAgICAgICAg
UnVuV2ViS2l0VGVzdHNXaXRob3V0UGF0Y2gsIFRlc3RXaXRoRmFpbHVyZUNvdW50LCBTaG93SWRl
bnRpZmllciwKKyAgICAgICAgICAgICAgICAgICBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaCwg
UnVuV2ViS2l0VGVzdHNSZWRUcmVlLCBSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1cmVzUmVkVHJl
ZSwgUnVuV2ViS2l0VGVzdHNSZXBlYXRGYWlsdXJlc1dpdGhvdXRQYXRjaFJlZFRyZWUsCisgICAg
ICAgICAgICAgICAgICAgUnVuV2ViS2l0VGVzdHNXaXRob3V0UGF0Y2hSZWRUcmVlLCBBbmFseXpl
TGF5b3V0VGVzdHNSZXN1bHRzUmVkVHJlZSwgVGVzdFdpdGhGYWlsdXJlQ291bnQsIFNob3dJZGVu
dGlmaWVyLAogICAgICAgICAgICAgICAgICAgIFRyaWdnZXIsIFRyYW5zZmVyVG9TMywgVW5BcHBs
eVBhdGNoSWZSZXF1aXJlZCwgVXBkYXRlV29ya2luZ0RpcmVjdG9yeSwgVXBsb2FkQnVpbHRQcm9k
dWN0LAogICAgICAgICAgICAgICAgICAgIFVwbG9hZFRlc3RSZXN1bHRzLCBWYWxpZGF0ZUNoYW5n
ZUxvZ0FuZFJldmlld2VyLCBWYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIsIFZhbGlkYXRlUGF0
Y2gsIFZlcmlmeUdpdEh1YkludGVncml0eSkKIApAQCAtMTU4MSw4ICsxNTgyLDggQEAgY2xhc3Mg
VGVzdEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVf
c3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNj
X2NsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2pzY19jbGVhbl90cmVlX2ZsYWt5X2FuZF9wYXNzZWQnLCB7fSkKLSAgICAgICAgQW5hbHl6
ZUpTQ1Rlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0gbGFtYmRhIHNl
bGYsIHRlc3Q6IE5vbmUKLSAgICAgICAgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cy5zZW5kX2VtYWls
X2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVyZSA9IGxhbWJkYSBzZWxmLCB0ZXN0OiBOb25lCisgICAg
ICAgIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfZmxha3lfZmFpbHVyZSA9
IGxhbWJkYSAqYXJnczogTm9uZQorICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzLnNlbmRf
ZW1haWxfZm9yX3ByZV9leGlzdGluZ19mYWlsdXJlID0gbGFtYmRhICphcmdzOiBOb25lCiAKICAg
ICBkZWYgdGVzdF9zaW5nbGVfbmV3X3N0cmVzc19mYWlsdXJlKHNlbGYpOgogICAgICAgICBzZWxm
LmNvbmZpZ3VyZVN0ZXAoKQpAQCAtMTkxNSw3ICsxOTE2LDcgQEAgY2xhc3MgVGVzdFJlUnVuV2Vi
S2l0VGVzdHMoVGVzdFJ1bldlYktpdFRlc3RzKToKICAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUmVS
dW5XZWJLaXRUZXN0cygpKQogICAgICAgICBzZWxmLnByb3BlcnR5X2V4Y2VlZF9mYWlsdXJlX2xp
bWl0ID0gJ3NlY29uZF9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JwogICAgICAgICBzZWxm
LnByb3BlcnR5X2ZhaWx1cmVzID0gJ3NlY29uZF9ydW5fZmFpbHVyZXMnCi0gICAgICAgIFJlUnVu
V2ViS2l0VGVzdHMuc2VuZF9lbWFpbF9mb3JfZmxha3lfZmFpbHVyZSA9IGxhbWJkYSBzZWxmLCB0
ZXN0OiBOb25lCisgICAgICAgIFJlUnVuV2ViS2l0VGVzdHMuc2VuZF9lbWFpbF9mb3JfZmxha3lf
ZmFpbHVyZSA9IGxhbWJkYSAqYXJnczogTm9uZQogCiAgICAgZGVmIHRlc3RfZmxha3lfZmFpbHVy
ZXNfaW5fZmlyc3RfcnVuKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQpAQCAt
MjMxOCw4ICsyMzE5LDggQEAgY2xhc3MgVGVzdEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMoQnVp
bGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcmV0dXJu
IHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQogCiAgICAgZGVmIGNvbmZpZ3VyZVN0ZXAoc2VsZik6
Ci0gICAgICAgIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfZmxha3lf
ZmFpbHVyZSA9IGxhbWJkYSBzZWxmLCB0ZXN0OiBOb25lCi0gICAgICAgIEFuYWx5emVMYXlvdXRU
ZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5nX2ZhaWx1cmUgPSBsYW1iZGEg
c2VsZiwgdGVzdDogTm9uZQorICAgICAgICBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzLnNlbmRf
ZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUgPSBsYW1iZGEgKmFyZ3M6IE5vbmUKKyAgICAgICAgQW5h
bHl6ZUxheW91dFRlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVy
ZSA9IGxhbWJkYSAqYXJnczogTm9uZQogICAgICAgICBzZWxmLnNldHVwU3RlcChBbmFseXplTGF5
b3V0VGVzdHNSZXN1bHRzKCkpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3Jlc3Vs
dHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCBGYWxzZSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnc2Vjb25kX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCBGYWxzZSkKQEAgLTI1MTks
NiArMjUyMCwzNjMgQEAgY2xhc3MgVGVzdEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMoQnVpbGRT
dGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcmV0dXJuIHNl
bGYucnVuU3RlcCgpCiAKIAorY2xhc3MgVGVzdFJ1bldlYktpdFRlc3RzUmVkVHJlZShCdWlsZFN0
ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxm
KToKKyAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKKyAgICAgICAgc2VsZi5qc29uRmls
ZU5hbWUgPSAnbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicKKyAgICAgICAg
cmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgor
ICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCisKKyAgICBkZWYgY29uZmln
dXJlU3RlcChzZWxmKToKKyAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuV2ViS2l0VGVzdHNSZWRU
cmVlKCkpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZp
Z3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3Rr
JykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykK
KyAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKKyAgICAgICAgICAgIEV4cGVjdFNo
ZWxsKHdvcmtkaXI9J3drZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsn
anNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vu
dmlyb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUb29scy9TY3JpcHRzL3J1bi13ZWJr
aXQtdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tYnVpbGQn
LCAnLS1uby1zaG93LXJlc3VsdHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywgJy0tY2xvYmJl
ci1vbGQtcmVzdWx0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1yZWxl
YXNlJywgJy0tcmVzdWx0cy1kaXJlY3RvcnknLCAnbGF5b3V0LXRlc3QtcmVzdWx0cycsICctLWRl
YnVnLXJ3dC1sb2dnaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWV4
aXQtYWZ0ZXItbi1mYWlsdXJlcycsICc1MDAnLCAnLS1za2lwLWZhaWxpbmctdGVzdHMnXQorICAg
ICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKyAwLAorICAgICAgICApCisgICAg
ICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNz
ZWQgbGF5b3V0IHRlc3RzJykKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKworY2xh
c3MgVGVzdFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNSZWRUcmVlKEJ1aWxkU3RlcE1peGlu
QWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAg
ICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQorICAgICAgICBzZWxmLmpzb25GaWxlTmFtZSA9
ICdsYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJworICAgICAgICByZXR1cm4g
c2VsZi5zZXRVcEJ1aWxkU3RlcCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKKworICAgIGRlZiBjb25maWd1cmVTdGVw
KHNlbGYpOgorICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJLaXRUZXN0c1JlcGVhdEZhaWx1
cmVzUmVkVHJlZSgpKQorCisgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5jb25maWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3Jt
JywgJ2d0aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVs
ZWFzZScpCisgICAgICAgIGZpcnN0X3J1bl9mYWlsdXJlcyA9IFsnZmFzdC9jc3MvdGVzdDEuaHRt
bCcsICdpbXBvcnRlZC90ZXN0L3Rlc3QyLmh0bWwnLCAnZmFzdC9zdmcvdGVzdDMuc3ZnJ10KKyAg
ICAgICAgZmlyc3RfcnVuX2ZsYWtpZXMgPSBbJ2Zhc3QvY3NzL2ZsYWt5MS5odG1sJywgJ2ltcG9y
dGVkL3Rlc3QvZmxha3kyLmh0bWwnLCAnZmFzdC9zdmcvZmxha3kzLnN2ZyddCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIGZpcnN0X3J1bl9mYWlsdXJlcykK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtpZXMnLCBmaXJzdF9ydW5f
Zmxha2llcykKKyAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKKyAgICAgICAgICAg
IEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ0Vudmlyb249RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhUaW1lPTE4
MDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3Rz
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLWJ1aWxkJywgJy0tbm8t
c2hvdy1yZXN1bHRzJywgJy0tbm8tbmV3LXRlc3QtcmVzdWx0cycsICctLWNsb2JiZXItb2xkLXJl
c3VsdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcmVsZWFzZScsICct
LXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3Qt
bG9nZ2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1za2lwLWZhaWxp
bmctdGVzdHMnLCAnLS1yZXBlYXQtZWFjaD0xMCddICsgc29ydGVkKGZpcnN0X3J1bl9mYWlsdXJl
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICsgMCwKKyAgICAgICAg
KQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmlu
Zz0nbGF5b3V0LXRlc3RzJykKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKworY2xh
c3MgVGVzdFJ1bldlYktpdFRlc3RzUmVwZWF0RmFpbHVyZXNXaXRob3V0UGF0Y2hSZWRUcmVlKEJ1
aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVw
KHNlbGYpOgorICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQorICAgICAgICBzZWxmLmpz
b25GaWxlTmFtZSA9ICdsYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJworICAg
ICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCisKKyAgICBkZWYgdGVhckRvd24oc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKKworICAgIGRlZiBj
b25maWd1cmVTdGVwKHNlbGYpOgorICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJLaXRUZXN0
c1JlcGVhdEZhaWx1cmVzV2l0aG91dFBhdGNoUmVkVHJlZSgpKQorCisgICAgZGVmIHRlc3Rfc3Vj
Y2VzcyhzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIGZpcnN0X3J1bl9mYWlsdXJl
cyA9IFsnZmFzdC9jc3MvdGVzdDEuaHRtbCcsICdpbXBvcnRlZC90ZXN0L3Rlc3QyLmh0bWwnLCAn
ZmFzdC9zdmcvdGVzdDMuc3ZnJ10KKyAgICAgICAgZmlyc3RfcnVuX2ZsYWtpZXMgPSBbJ2Zhc3Qv
Y3NzL2ZsYWt5MS5odG1sJywgJ2ltcG9ydGVkL3Rlc3QvZmxha3kyLmh0bWwnLCAnZmFzdC9zdmcv
Zmxha3kzLnN2ZyddCisgICAgICAgIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNf
bm9uZmxha3lfZmFpbHVyZXMgPSBbJ2Zhc3QvY3NzL3Rlc3QxLmh0bWwnXQorICAgICAgICB3aXRo
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMgPSBbJ2ltcG9ydGVkL3Rlc3Qv
dGVzdDIuaHRtbCcsICdmYXN0L3N2Zy90ZXN0My5zdmcnXQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBmaXJzdF9ydW5fZmFpbHVyZXMpCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgZmlyc3RfcnVuX2ZsYWtpZXMpCisg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfbm9uZmxha3lfZmFpbHVyZXMnLCB3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRz
X25vbmZsYWt5X2ZhaWx1cmVzKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNo
X3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCB3aXRoX3BhdGNoX3JlcGVhdF9mYWls
dXJlc19yZXN1bHRzX2ZsYWtpZXMpCisgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMo
CisgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCisgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWF4VGltZT0xMDgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRo
b24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVu
LXdlYmtpdC10ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1i
dWlsZCcsICctLW5vLXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1j
bG9iYmVyLW9sZC1yZXN1bHRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct
LXJlbGVhc2UnLCAnLS1yZXN1bHRzLWRpcmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywg
Jy0tZGVidWctcnd0LWxvZ2dpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jy0tc2tpcC1mYWlsaW5nLXRlc3RzJywgJy0tcmVwZWF0LWVhY2g9MTAnLCAnLS1za2lwcGVkPWFs
d2F5cyddICsgc29ydGVkKHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxh
a3lfZmFpbHVyZXMpCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICArIDAs
CisgICAgICAgICkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBz
dGF0ZV9zdHJpbmc9J2xheW91dC10ZXN0cycpCisgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAo
KQorCisgICAgZGVmIHRlc3Rfc3RlcF93aXRoX3BhdGNoX2RpZF90aW1lb3V0KHNlbGYpOgorICAg
ICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxs
UGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlv
bicsICdyZWxlYXNlJykKKyAgICAgICAgZmlyc3RfcnVuX2ZhaWx1cmVzID0gWydmYXN0L2Nzcy90
ZXN0MS5odG1sJywgJ2ltcG9ydGVkL3Rlc3QvdGVzdDIuaHRtbCcsICdmYXN0L3N2Zy90ZXN0My5z
dmcnXQorICAgICAgICBmaXJzdF9ydW5fZmxha2llcyA9IFsnZmFzdC9jc3MvZmxha3kxLmh0bWwn
LCAnaW1wb3J0ZWQvdGVzdC9mbGFreTIuaHRtbCcsICdmYXN0L3N2Zy9mbGFreTMuc3ZnJ10KKyAg
ICAgICAgd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJl
cyA9IFsnZmFzdC9jc3MvdGVzdDEuaHRtbCddCisgICAgICAgIHdpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfZmxha2llcyA9IFsnaW1wb3J0ZWQvdGVzdC90ZXN0Mi5odG1sJywgJ2Zh
c3Qvc3ZnL3Rlc3QzLnN2ZyddCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9m
YWlsdXJlcycsIGZpcnN0X3J1bl9mYWlsdXJlcykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
Zmlyc3RfcnVuX2ZsYWtpZXMnLCBmaXJzdF9ydW5fZmxha2llcykKKyAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWls
dXJlcycsIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVy
ZXMpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVz
X3Jlc3VsdHNfZmxha2llcycsIHdpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxh
a2llcykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVy
ZXNfdGltZWRvdXQnLCBUcnVlKQorICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAor
ICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAorICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1heFRpbWU9MTA4MDAsCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9u
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUb29scy9TY3JpcHRzL3J1bi13
ZWJraXQtdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tYnVp
bGQnLCAnLS1uby1zaG93LXJlc3VsdHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywgJy0tY2xv
YmJlci1vbGQtcmVzdWx0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1y
ZWxlYXNlJywgJy0tcmVzdWx0cy1kaXJlY3RvcnknLCAnbGF5b3V0LXRlc3QtcmVzdWx0cycsICct
LWRlYnVnLXJ3dC1sb2dnaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct
LXNraXAtZmFpbGluZy10ZXN0cycsICctLXJlcGVhdC1lYWNoPTEwJywgJy0tc2tpcHBlZD1hbHdh
eXMnXSArIHNvcnRlZChmaXJzdF9ydW5fZmFpbHVyZXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICArIDAsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRj
b21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J2xheW91dC10ZXN0cycpCisgICAgICAg
IHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisKK2NsYXNzIFRlc3RBbmFseXplTGF5b3V0VGVzdHNS
ZXN1bHRzUmVkVHJlZShCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2Up
OgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUK
KyAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQorCisgICAgZGVmIHRlYXJEb3du
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCisKKyAgICBk
ZWYgY29uZmlndXJlU3RlcChzZWxmKToKKyAgICAgICAgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0
cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0gbGFtYmRhICphcmdzOiBOb25lCisgICAg
ICAgIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5n
X2ZhaWx1cmUgPSBsYW1iZGEgKmFyZ3M6IE5vbmUKKyAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQW5h
bHl6ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUoKSkKKworICAgIGRlZiB0ZXN0X2ZhaWx1cmVf
aW50cm9kdWNlZF9ieV9wYXRjaF9jbGVhbl90cmVlX2dyZWVuKHNlbGYpOgorICAgICAgICBzZWxm
LmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0n
LCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxl
YXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyJ0
ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9mYWlsdXJlMi5odG1sIl0pCisgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2ZsYWt5MS5odG1sIiwgInRl
c3QvZmxha3kyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJl
MS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2Zh
aWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFsidGVzdC9mYWlsdXJlMi5odG1sIl0pCisgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNf
bm9uZmxha3lfZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91
dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlz
dGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJ
TFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAxIG5ldyB0ZXN0IGZhaWx1cmU6IHRlc3QvZmFpbHVy
ZTEuaHRtbCAoZmFpbHVyZSknKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAg
IGRlZiB0ZXN0X2ZhaWx1cmVfaW50cm9kdWNlZF9ieV9wYXRjaF9jbGVhbl90cmVlX3JlZChzZWxm
KToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZp
Z3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1
bl9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3QvZmFpbHVyZTIuaHRtbCIs
ICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxh
a3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycs
IFsidGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0L2ZsYWt5Mi5odG1sIl0pCisgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lf
ZmFpbHVyZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWls
dXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMn
LCBbInRlc3QvZmFpbHVyZTIuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRo
b3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0
ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgWyJ0ZXN0
L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShy
ZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAxIG5ldyB0ZXN0IGZhaWx1cmU6IHRl
c3QvZmFpbHVyZTEuaHRtbCAoZmFpbHVyZSknKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKKworICAgIGRlZiB0ZXN0X3ByZV9leGlzdGVudF9mYWlsdXJlcyhzZWxmKToKKyAgICAgICAg
c2VsZi5jb25maWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVu
X2ZhaWx1cmVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9wcmUt
ZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9y
dW5fZmxha2llcycsIFsidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kyLmh0bWwiLCAidGVzdC9wcmUt
ZXhpc3RlbnQvZmxha3kzLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9w
YXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFsidGVzdC9w
cmUtZXhpc3RlbnQvZmFpbHVyZS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dp
dGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFsidGVzdC9wcmUtZXhp
c3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L3By
ZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0
aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgW10pCisgICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQg
bGF5b3V0IHRlc3RzJykKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBkZWYg
dGVzdF9wcmVfZXhpc3RlbnRfZmxha2llcyhzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVT
dGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyJ0
ZXN0L3ByZS1leGlzdGVudC9mbGFreTEuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kyLmh0bWwiLCAi
dGVzdC9wcmUtZXhpc3RlbnQvZmxha3kzLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycs
IFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJl
c19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5MS5odG1sIl0pCisg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jl
c3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
d2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgW10pCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3JldGNv
ZGUnLCBTVUNDRVNTKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1Ms
IHN0YXRlX3N0cmluZz0nUGFzc2VkIGxheW91dCB0ZXN0cycpCisgICAgICAgIHJldHVybiBzZWxm
LnJ1blN0ZXAoKQorCisgICAgZGVmIHRlc3RfZmlyc3Rfc3RlcF9naXZlc191bmV4cGVjdGVkX2Zh
aWx1cmVfYW5kX2NsZWFuX3RyZWVfcGFzc19sYXN0X3RyeShzZWxmKToKKyAgICAgICAgc2VsZi5j
b25maWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywg
J2d0aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFz
ZScpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFtdKQor
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFtdKQorICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdyZXRyeV9jb3VudCcsIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3Vs
dHNSZWRUcmVlLk1BWF9SRVRSWSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJl
ZV9ydW5fZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJl
ZV9ydW5fZmxha2llcycsIFsndGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCddKQorICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9zdGF0dXMnLCBXQVJOSU5HUykKKyAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0Zv
dW5kIHVuZXhwZWN0ZWQgZmFpbHVyZSB3aXRoIHBhdGNoIChmYWlsdXJlKScpCisgICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVmIHRlc3RfZmlyc3Rfc3RlcF9naXZlc191bmV4
cGVjdGVkX2ZhaWx1cmVfYW5kX2NsZWFuX3RyZWVfdW5leHBlY3RlZF9mYWlsdXJlX2xhc3RfdHJ5
KHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
Y29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmly
c3RfcnVuX2ZhaWx1cmVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1
bl9mbGFraWVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3JldHJ5X2NvdW50Jywg
QW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0c1JlZFRyZWUuTUFYX1JFVFJZKQorICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9mbGFraWVzJywgW10pCisgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX3N0YXR1cycsIEZBSUxVUkUpCisgICAgICAgIHNl
bGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9V0FSTklOR1MsIHN0YXRlX3N0cmluZz0nVGhlIGxheW91
dC10ZXN0IHJ1biB3aXRoIHBhdGNoIGdlbmVyYXRlZCBubyBsaXN0IG9mIHJlc3VsdHMgYW5kIGV4
aXRlZCB3aXRoIGVycm9yLCBhbmQgdGhlIGNsZWFuX3RyZWUgd2l0aG91dCBwYXRjaCBydW4gZGlk
IHRoZSBzYW1lIHRoaW5nLlxuUmVhY2hlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyAo
MykuIFVuYWJsZSB0byBkZXRlcm1pbmUgaWYgcGF0Y2ggaXMgYmFkIG9yIHRoZXJlIGlzIGEgcHJl
LWV4aXN0ZW50IGluZnJhc3RydWN0dXJlIGlzc3VlLiAod2FybmluZ3MpJykKKyAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCisKKyAgICBkZWYgdGVzdF9maXJzdF9zdGVwX2dpdmVzX3VuZXhw
ZWN0ZWRfZmFpbHVyZV9yZXRyeShzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkK
KyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdjbGVhbl90cmVlX3J1bl9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdyZXRyeV9jb3VudCcsIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHNSZWRUcmVlLk1BWF9S
RVRSWSAtIDEpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZsYWtp
ZXMnLCBbJ3Rlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0bWwnXSkKKyAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgV0FSTklOR1MpCisgICAgICAgIHNlbGYu
ZXhwZWN0T3V0Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0nVW5leHBlY3RlZCBpbmZy
YXN0cnVjdHVyZSBpc3N1ZTogVGhlIGxheW91dC10ZXN0IHJ1biB3aXRoIHBhdGNoIGdlbmVyYXRl
ZCBubyBsaXN0IG9mIHJlc3VsdHMgYW5kIGV4aXRlZCB3aXRoIGVycm9yLCByZXRyeWluZyB3aXRo
IHRoZSBob3BlIGl0IHdhcyBhIHJhbmRvbSBpbmZyYXN0cnVjdHVyZSBlcnJvci5cblJldHJ5aW5n
IGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAyIG9mIDNdIChyZXRyeSknKQorICAgICAgICByZXR1cm4g
c2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0ZXBfcmV0cnlfd2l0aF9wYXRjaF9leGl0
c19lYXJseV9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKKyAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRl
c3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVz
dC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdm
aXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0L2ZsYWt5Mi5odG1s
Il0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVz
X3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0
L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRt
bCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJl
c19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvZmFpbHVyZTIuaHRtbCJdKQorICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZs
YWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiXSkKKyAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0
c19mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZXhjZWVk
X2ZhaWx1cmVfbGltaXQnLCBUcnVlKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0
PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWU6IE9u
ZSBvZiB0aGUgc3RlcHMgZm9yIHJldHJ5aW5nIHRoZSBmYWlsZWQgdGVzdHMgaGFzIGV4aXRlZCBl
YXJseSwgYnV0IHRoaXMgc3RlcHMgc2hvdWxkIHJ1biB3aXRob3V0ICItLWV4aXQtYWZ0ZXItbi1m
YWlsdXJlcyIgc3dpdGNoLCBzbyB0aGV5IHNob3VsZCBub3QgZXhpdCBlYXJseS5cblJldHJ5aW5n
IGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChyZXRyeSknKQorICAgICAgICByZXR1cm4g
c2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0ZXBfcmV0cnlfd2l0aG91dF9wYXRjaF9l
eGl0c19lYXJseV9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKKyAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwg
InRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAi
dGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0L2ZsYWt5Mi5o
dG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1
cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0
ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3ku
aHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWls
dXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRlc3QvZmFpbHVyZTIuaHRtbCJdKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25v
bmZsYWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiXSkKKyAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVz
dWx0c19mbGFraWVzJywgWyJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNf
ZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCBUcnVlKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUo
cmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNz
dWU6IE9uZSBvZiB0aGUgc3RlcHMgZm9yIHJldHJ5aW5nIHRoZSBmYWlsZWQgdGVzdHMgaGFzIGV4
aXRlZCBlYXJseSwgYnV0IHRoaXMgc3RlcHMgc2hvdWxkIHJ1biB3aXRob3V0ICItLWV4aXQtYWZ0
ZXItbi1mYWlsdXJlcyIgc3dpdGNoLCBzbyB0aGV5IHNob3VsZCBub3QgZXhpdCBlYXJseS5cblJl
dHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChyZXRyeSknKQorICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0ZXBfcmV0cnlfd2l0aF9wYXRj
aF90aW1lb3V0cyhzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3Qv
ZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9w
cmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJz
dF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0L2ZsYWt5Mi5odG1sIl0p
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Rp
bWVkb3V0JywgVHJ1ZSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aG91dF9wYXRjaF9y
ZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFsidGVzdC9wcmUtZXhp
c3RlbnQvZmFpbHVyZS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRf
cGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfZmxha2llcycsIFsidGVzdC9wcmUtZXhpc3Rl
bnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxV
UkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMiBuZXcgdGVzdCBmYWlsdXJlczogdGVzdC9mYWlsdXJl
MS5odG1sLCB0ZXN0L2ZhaWx1cmUyLmh0bWwgKGZhaWx1cmUpJykKKyAgICAgICAgcmV0dXJuIHNl
bGYucnVuU3RlcCgpCisKKyAgICBkZWYgdGVzdF9zdGVwX3JldHJ5X3dpdGhfcGF0Y2hfdW5leHBl
Y3RlZF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3Qv
ZmFpbHVyZTIuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9w
cmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJz
dF9ydW5fZmxha2llcycsIFsidGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0L2ZsYWt5Mi5odG1sIl0p
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jl
c3VsdHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
d2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgW10pCisgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3JldGNvZGUnLCBG
QUlMVVJFKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9z
dHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWU6IFRoZSBzdGVwICJsYXlvdXQt
dGVzdHMtcmVwZWF0LWZhaWx1cmVzIiBmYWlsZWQgdG8gZ2VuZXJhdGUgYW55IGxpc3Qgb2YgZmFp
bHVyZXMgb3IgZmxha2llcyBhbmQgcmV0dXJuZWQgYW4gZXJyb3IgY29kZS5cblJldHJ5aW5nIGJ1
aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChyZXRyeSknKQorICAgICAgICByZXR1cm4gc2Vs
Zi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0ZXBfcmV0cnlfd2l0aG91dF9wYXRjaF91bmV4
cGVjdGVkX2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQorICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVz
dC9mYWlsdXJlMi5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRtbCIsICJ0ZXN0
L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Zp
cnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2ZsYWt5MS5odG1sIiwgInRlc3QvZmxha3kyLmh0bWwi
XSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNf
cmVzdWx0c19ub25mbGFreV9mYWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3Qv
ZmFpbHVyZTIuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3Jl
cGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmV0Y29kZScsIEZBSUxVUkUpCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3Vs
dHNfbm9uZmxha3lfZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0
aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFraWVzJywgW10pCisgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ3dpdGhvdXRfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3JldGNvZGUn
LCBGQUlMVVJFKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0
ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWU6IFRoZSBzdGVwICJsYXlv
dXQtdGVzdHMtcmVwZWF0LWZhaWx1cmVzLXdpdGhvdXQtcGF0Y2giIGZhaWxlZCB0byBnZW5lcmF0
ZSBhbnkgbGlzdCBvZiBmYWlsdXJlcyBvciBmbGFraWVzIGFuZCByZXR1cm5lZCBhbiBlcnJvciBj
b2RlLlxuUmV0cnlpbmcgYnVpbGQgW3JldHJ5IGNvdW50IGlzIDAgb2YgM10gKHJldHJ5KScpCisg
ICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQorCisgICAgZGVmIHRlc3Rfc3RlcF9yZXRyeV93
aXRob3V0X3BhdGNoX3RpbWVvdXRzKHNlbGYpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAo
KQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnZ3RrJykKKyAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0
bWwiLCAidGVzdC9mYWlsdXJlMi5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZhaWx1cmUuaHRt
bCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mbGFreS5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2ZpcnN0X3J1bl9mbGFraWVzJywgWyJ0ZXN0L2ZsYWt5MS5odG1sIiwgInRlc3QvZmxh
a3kyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRf
ZmFpbHVyZXNfdGltZWRvdXQnLCBUcnVlKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRo
b3V0X3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcsIFRydWUpCisgICAgICAgIHNlbGYu
ZXhwZWN0T3V0Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0nVW5leHBlY3RlZCBpbmZy
YXN0cnVjdHVyZSBpc3N1ZTogVGhlIHN0ZXAgImxheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMt
d2l0aG91dC1wYXRjaCIgd2FzIGludGVycnVtcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgdGlt
ZW91dC5cblJldHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChyZXRyeSknKQor
ICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3N0ZXBfcmV0cnlf
d2l0aF9wYXRjaF90aW1lb3V0c19hbmRfd2l0aG91dF9wYXRjaF90aW1lb3V0cyhzZWxmKToKKyAg
ICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVs
bFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRp
b24nLCAncmVsZWFzZScpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWls
dXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0ZXN0
L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRt
bCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsidGVz
dC9mbGFreTEuaHRtbCIsICJ0ZXN0L2ZsYWt5Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFpbHVy
ZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0
bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBbInRl
c3QvZmFpbHVyZTIuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0X3Bh
dGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcsIFRydWUpCisgICAgICAgIHNlbGYuZXhwZWN0
T3V0Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0nVW5leHBlY3RlZCBpbmZyYXN0cnVj
dHVyZSBpc3N1ZTogVGhlIHN0ZXAgImxheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91
dC1wYXRjaCIgd2FzIGludGVycnVtcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgdGltZW91dC5c
blJldHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAwIG9mIDNdIChyZXRyeSknKQorICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3JldHJ5X3RoaXJkX3RpbWUo
c2VsZik6CisgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCisgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdndGsnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdj
b25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJz
dF9ydW5fZmFpbHVyZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L2ZhaWx1cmUyLmh0
bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmFpbHVyZS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50
L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZsYWtp
ZXMnLCBbInRlc3QvZmxha3kxLmh0bWwiLCAidGVzdC9mbGFreTIuaHRtbCJdKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX25vbmZs
YWt5X2ZhaWx1cmVzJywgWyJ0ZXN0L2ZhaWx1cmUxLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQv
ZmFpbHVyZS5odG1sIiwgInRlc3QvcHJlLWV4aXN0ZW50L2ZsYWt5Lmh0bWwiXSkKKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnd2l0aF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfcmVzdWx0c19mbGFr
aWVzJywgWyJ0ZXN0L2ZhaWx1cmUyLmh0bWwiXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
d2l0aG91dF9wYXRjaF9yZXBlYXRfZmFpbHVyZXNfdGltZWRvdXQnLCBUcnVlKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdyZXRyeV9jb3VudCcsIDIpCisgICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0nVW5leHBlY3RlZCBpbmZyYXN0cnVjdHVy
ZSBpc3N1ZTogVGhlIHN0ZXAgImxheW91dC10ZXN0cy1yZXBlYXQtZmFpbHVyZXMtd2l0aG91dC1w
YXRjaCIgd2FzIGludGVycnVtcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgdGltZW91dC5cblJl
dHJ5aW5nIGJ1aWxkIFtyZXRyeSBjb3VudCBpcyAyIG9mIDNdIChyZXRyeSknKQorICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5TdGVwKCkKKworICAgIGRlZiB0ZXN0X3JldHJ5X2ZpbmlzaChzZWxmKToK
KyAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
ZnVsbFBsYXRmb3JtJywgJ2d0aycpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3Vy
YXRpb24nLCAncmVsZWFzZScpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9m
YWlsdXJlcycsIFsidGVzdC9mYWlsdXJlMS5odG1sIiwgInRlc3QvZmFpbHVyZTIuaHRtbCIsICJ0
ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJlLmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3ku
aHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmxha2llcycsIFsi
dGVzdC9mbGFreTEuaHRtbCIsICJ0ZXN0L2ZsYWt5Mi5odG1sIl0pCisgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ3dpdGhfcGF0Y2hfcmVwZWF0X2ZhaWx1cmVzX3Jlc3VsdHNfbm9uZmxha3lfZmFp
bHVyZXMnLCBbInRlc3QvZmFpbHVyZTEuaHRtbCIsICJ0ZXN0L3ByZS1leGlzdGVudC9mYWlsdXJl
Lmh0bWwiLCAidGVzdC9wcmUtZXhpc3RlbnQvZmxha3kuaHRtbCJdKQorICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCd3aXRoX3BhdGNoX3JlcGVhdF9mYWlsdXJlc19yZXN1bHRzX2ZsYWtpZXMnLCBb
InRlc3QvZmFpbHVyZTIuaHRtbCJdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3aXRob3V0
X3BhdGNoX3JlcGVhdF9mYWlsdXJlc190aW1lZG91dCcsIFRydWUpCisgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ3JldHJ5X2NvdW50JywgMykKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJl
c3VsdD1XQVJOSU5HUywgc3RhdGVfc3RyaW5nPSdUaGUgc3RlcCAibGF5b3V0LXRlc3RzLXJlcGVh
dC1mYWlsdXJlcy13aXRob3V0LXBhdGNoIiB3YXMgaW50ZXJydW1wZWQgYmVjYXVzZSBpdCByZWFj
aGVkIHRoZSB0aW1lb3V0LlxuUmVhY2hlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyAo
MykuIFVuYWJsZSB0byBkZXRlcm1pbmUgaWYgcGF0Y2ggaXMgYmFkIG9yIHRoZXJlIGlzIGEgcHJl
LWV4aXN0ZW50IGluZnJhc3RydWN0dXJlIGlzc3VlLiAod2FybmluZ3MpJykKKyAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCisKKwogY2xhc3MgVGVzdENoZWNrT3V0U3BlY2lmaWNSZXZpc2lv
bihCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBz
ZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUK
</data>

          </attachment>
      

    </bug>

</bugzilla>