<?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>232529</bug_id>
          
          <creation_ts>2021-10-30 03:40:30 -0700</creation_ts>
          <short_desc>Move detection of flaky JSC tests to run-jsc-stress-tests</short_desc>
          <delta_ts>2021-11-22 00:46:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Angelos Oikonomopoulos">angelos</reporter>
          <assigned_to name="Angelos Oikonomopoulos">angelos</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>aperez</cc>
    
    <cc>ap</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jbedard</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1810412</commentid>
    <comment_count>0</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-10-30 03:40:30 -0700</bug_when>
    <thetext>Move detection of flaky JSC tests to run-jsc-stress-tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810414</commentid>
    <comment_count>1</comment_count>
      <attachid>442909</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-10-30 03:56:21 -0700</bug_when>
    <thetext>Created attachment 442909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811830</commentid>
    <comment_count>2</comment_count>
      <attachid>443296</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-04 05:49:50 -0700</bug_when>
    <thetext>Created attachment 443296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811837</commentid>
    <comment_count>3</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-04 06:15:19 -0700</bug_when>
    <thetext>Stephan, the changes in the playstation code are minimal but could still use some review and/or testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811900</commentid>
    <comment_count>4</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2021-11-04 10:38:32 -0700</bug_when>
    <thetext>A quick test with these changes on a subset of a couple hundred tests (with no failures) was okay on device. I&apos;m running a larger (about 8000 test) test set, but it&apos;ll likely take a few hours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811929</commentid>
    <comment_count>5</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2021-11-04 12:14:24 -0700</bug_when>
    <thetext>Okay - I ran a larger set, then ran a failing test with --filter and --treat-failing-as-flaky=0.6,10,200 but got

D:/github/WebKit/Tools/Scripts/webkitruby/jsc-stress-test/executor.rb:48:in `refreshExecution&apos;: undefined method `prepareTestRunner&apos; for #&lt;NormalTestsExecutor:0x0000000008b92ca8 @runlist=[#&lt;Plan:0x0000000006f826a8 @directory=#&lt;Pathname:.tests/ChakraCore.yaml/ChakraCore/test/es5&gt;, @arguments=[&quot;--useFTLJIT=false&quot;, &quot;--useFunctionDotArguments=true&quot;, &quot;--validateExceptionChecks=true&quot;, &quot;--useDollarVM=true&quot;, &quot;--maxPerThreadStackUsage=1572864&quot;, &quot;--thresholdForJITAfterWarmUp=10&quot;, &quot;--thresholdForJITSoon=10&quot;, &quot;--thresholdForOptimizeAfterWarmUp=20&quot;, &quot;--thresholdForOptimizeAfterLongWarmUp=20&quot;, &quot;--thresholdForOptimizeSoon=20&quot;, &quot;--thresholdForFTLOptimizeAfterWarmUp=20&quot;, &quot;--thresholdForFTLOptimizeSoon=20&quot;, &quot;--thresholdForOMGOptimizeAfterWarmUp=20&quot;, &quot;--thresholdForOMGOptimizeSoon=20&quot;, &quot;--maximumEvalCacheableSourceLength=150000&quot;, &quot;--useEagerCodeBlockJettisonTiming=true&quot;, &quot;--repatchBufferingCountdown=0&quot;, &quot;jsc-lib.js&quot;, &quot;hasItem.js&quot;], @family=&quot;ChakraCore.yaml/ChakraCore/test/es5/hasItem.js&quot;, @name=&quot;ChakraCore.yaml/ChakraCore/test/es5/hasItem.js.default&quot;, @outputHandler=#&lt;Proc:0x0000000006f82928 D:/github/WebKit/Tools/Scripts/webkitruby/jsc-stress-test/writer-playstation.rb:56&gt;, @errorHandler=#&lt;Proc:0x0000000006f82978 D:/github/WebKit/Tools/Scripts/webkitruby/jsc-stress-test/writer-playstation.rb:161&gt;, @flaky=#&lt;Flaky:0x00000000091bc4d0 @passPercentage=0.6, @maxTries=10&gt;, @additionalEnv=[], @index=47&gt;], @serialPlans=#&lt;Set: {}&gt;, @remoteHosts=nil, @treatFailingAsFlaky=#&lt;OpenStruct passPercentage=0.6, maxTries=10, maxFailing=200&gt;, @infraIterationsFloor=3, @iterationsCeiling=10, @maxIterations=10, @logStream=#&lt;IO:&lt;STDERR&gt;&gt;, @testRunner=#&lt;TestRunnerMake:0x0000000008b92d48 @testRunnerType=:make, @runnerDir=#&lt;Pathname:D:/github/WebKit/WebKitBuild/Release/bin/jsc-stress-results/.runner&gt;&gt;&gt; (NoMethodError)

It looks like the prepareTestRunner method was removed in the patch but is still referenced in BaseTestsExecutor&apos;s refreshExecution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811975</commentid>
    <comment_count>6</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-04 14:59:59 -0700</bug_when>
    <thetext>Oops, looks like my last refactor to allow keeping state between the prepare*Runner and testRunnerCommand invalidated all my testing. Will have to submit a new patch after trying all combinations with fault injection again.

Thanks for taking the time!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812370</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-06 03:41:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/85099219&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812474</commentid>
    <comment_count>8</comment_count>
      <attachid>443506</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-07 03:23:53 -0800</bug_when>
    <thetext>Created attachment 443506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812475</commentid>
    <comment_count>9</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-07 05:17:55 -0800</bug_when>
    <thetext>This should have fixed it. Stephan, if you could try out your larger test set, that&apos;d be great, still need to properly exercise the playstation paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812567</commentid>
    <comment_count>10</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2021-11-08 03:45:53 -0800</bug_when>
    <thetext>It looks like my previous change for the non-find based code path for going through the result files breaks this probably for non-cygwin windows hosts (probably just wincairo and playstation in practice) because the file is open so the unlink in prepareScripts fails.

In getStatusMap we&apos;re not properly closing the file in that path, there&apos;s probably a more idiomatic way, but I was just hacking it to see.

-                    line = File.open(name).first
+                    f = File.open(name)
+                    line = f.first
+                    f.close()

With that the test of a single failing test on playstation with a treat-failing-as-flaky did retry successfully.

I&apos;m now running the large set, but given the small ones passed, things seem likely to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812573</commentid>
    <comment_count>11</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-08 05:08:18 -0800</bug_when>
    <thetext>(In reply to Stephan Szabo from comment #10)
&gt; It looks like my previous change for the non-find based code path for going
&gt; through the result files breaks this probably for non-cygwin windows hosts
&gt; (probably just wincairo and playstation in practice) because the file is
&gt; open so the unlink in prepareScripts fails.
&gt; 
&gt; In getStatusMap we&apos;re not properly closing the file in that path, there&apos;s
&gt; probably a more idiomatic way, but I was just hacking it to see.
&gt; 
&gt; -                    line = File.open(name).first
&gt; +                    f = File.open(name)
&gt; +                    line = f.first
&gt; +                    f.close()
&gt; 
&gt; With that the test of a single failing test on playstation with a
&gt; treat-failing-as-flaky did retry successfully.

Oops. Glad we caught that. FWIW I think a more idiomatic fix would be

File.open(name, &apos;r&apos;) { |f|
  line = f.first
  processStatusLine(map, &quot;./#{name} #{line}&quot;)
}

I guess it&apos;s better if you submit something along those lines as a separate fix?

&gt; I&apos;m now running the large set, but given the small ones passed, things seem
&gt; likely to work.

Thanks, that really helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812623</commentid>
    <comment_count>12</comment_count>
      <attachid>443506</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-11-08 08:37:11 -0800</bug_when>
    <thetext>Comment on attachment 443506
Patch

Is it possible for us to separate the move parts of this patch from the code changes? Difficult to review the ruby changes since bugzilla isn&apos;t representing the move very well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812630</commentid>
    <comment_count>13</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-08 08:50:02 -0800</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #12)
&gt; Comment on attachment 443506 [details]
&gt; Patch
&gt; 
&gt; Is it possible for us to separate the move parts of this patch from the code
&gt; changes? Difficult to review the ruby changes since bugzilla isn&apos;t
&gt; representing the move very well.

Oops. Yah, I guess I can upload a new patch (though I&apos;ll need to repeat some of the testing). FWIW it should look much better if you apply-attachment and use git diff (which does rename detection).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812639</commentid>
    <comment_count>14</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-11-08 09:10:42 -0800</bug_when>
    <thetext>(In reply to Angelos Oikonomopoulos from comment #13)
&gt; (In reply to Jonathan Bedard from comment #12)
&gt; &gt; Comment on attachment 443506 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Is it possible for us to separate the move parts of this patch from the code
&gt; &gt; changes? Difficult to review the ruby changes since bugzilla isn&apos;t
&gt; &gt; representing the move very well.
&gt; 
&gt; Oops. Yah, I guess I can upload a new patch (though I&apos;ll need to repeat some
&gt; of the testing). FWIW it should look much better if you apply-attachment and
&gt; use git diff (which does rename detection).

Other possibility: although we don&apos;t have EWS hooked up yet, `git-webkit pr` will create a GitHub pull-request, and the diff might be easier to read there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812643</commentid>
    <comment_count>15</comment_count>
      <attachid>443557</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-08 09:16:29 -0800</bug_when>
    <thetext>Created attachment 443557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812646</commentid>
    <comment_count>16</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-08 09:21:20 -0800</bug_when>
    <thetext>New patch skips the file renaming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812862</commentid>
    <comment_count>17</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2021-11-08 15:04:09 -0800</bug_when>
    <thetext>As a note on earlier patch version plus changed mention, the playstation run of the about 8000 tests worked fine.

Looking to do a version of the unlink fix now. (Sorry, semi-off right now, so response time&apos;s a bit slow)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812880</commentid>
    <comment_count>18</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2021-11-08 15:18:43 -0800</bug_when>
    <thetext>Submitted https://bugs.webkit.org/show_bug.cgi?id=232851 for result file handling update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812910</commentid>
    <comment_count>19</comment_count>
      <attachid>443557</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-11-08 16:15:42 -0800</bug_when>
    <thetext>Comment on attachment 443557
Patch

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

The buildbot and run-javascriptcore-tests bits look good, I&apos;m not familiar with the architecture of our stress tests or Ruby, though

&gt; Tools/CISupport/ews-build/steps.py:1887
&gt; +                                                AnalyzeJSCTestsResults()])

We need to coordinate landing this change with an EWS restart.

&gt; Tools/Scripts/run-javascriptcore-tests:287
&gt; +  --treat-failing-as-flaky      Treat failing stress tests as flaky

This option is quite a bit more complicated than the help message indicates. I would like something like what you outline in the Changelog about passPercentage,maxTries,maxFailing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813064</commentid>
    <comment_count>20</comment_count>
      <attachid>443676</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-09 03:37:20 -0800</bug_when>
    <thetext>Created attachment 443676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813066</commentid>
    <comment_count>21</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-09 03:43:37 -0800</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #19)
&gt; Comment on attachment 443557 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=443557&amp;action=review
&gt; 
&gt; The buildbot and run-javascriptcore-tests bits look good, I&apos;m not familiar
&gt; with the architecture of our stress tests or Ruby, though

Yah, according to git blame only a few people have touched these parts of the file in the last few years.

&gt; &gt; Tools/CISupport/ews-build/steps.py:1887
&gt; &gt; +                                                AnalyzeJSCTestsResults()])
&gt; 
&gt; We need to coordinate landing this change with an EWS restart.

Possibly, though AFAIU things /should/ work fine until the EWS restart. The EWS buildbots will not be passing in `--treat-failing-as-flaky`, so the script&apos;s behavior should be exactly the same.

&gt; &gt; Tools/Scripts/run-javascriptcore-tests:287
&gt; &gt; +  --treat-failing-as-flaky      Treat failing stress tests as flaky
&gt; 
&gt; This option is quite a bit more complicated than the help message indicates.
&gt; I would like something like what you outline in the Changelog about
&gt; passPercentage,maxTries,maxFailing

A very valid point. Uploaded a new version of the patch with an extended help message for the option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813113</commentid>
    <comment_count>22</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-09 06:10:42 -0800</bug_when>
    <thetext>(In reply to Angelos Oikonomopoulos from comment #21)
&gt; (In reply to Jonathan Bedard from comment #19)
&gt; &gt; Comment on attachment 443557 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=443557&amp;action=review
&gt; &gt; 
&gt; &gt; The buildbot and run-javascriptcore-tests bits look good, I&apos;m not familiar
&gt; &gt; with the architecture of our stress tests or Ruby, though
&gt; 
&gt; Yah, according to git blame only a few people have touched these parts of
&gt; the file in the last few years.

CC&apos;ing msaboff and fpizlo for the run-jsc-stress-tests parts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815045</commentid>
    <comment_count>23</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-15 06:34:58 -0800</bug_when>
    <thetext>Ping. Would be good to improve the flaky handling for JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816899</commentid>
    <comment_count>24</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-19 09:55:35 -0800</bug_when>
    <thetext>Calling all rubyists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817054</commentid>
    <comment_count>25</comment_count>
      <attachid>443676</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-11-19 17:37:02 -0800</bug_when>
    <thetext>Comment on attachment 443676
Patch

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

I touched base with Angelos about this patch today. With most Apple folks out next week and no JSC folks commenting, I don&apos;t think it makes sense to continue blocking this patch. I&apos;m not a Ruby expert, but looking at this patch, combined with EWS and the fact that it shouldn&apos;t change behavior until builedbot is deployed, I&apos;m r+ing with the expectation that Angelos will land Monday, Nov 22nd and handle any fallout next week.

&gt; Tools/Scripts/run-jsc-stress-tests:620
&gt; +        @flaky = flaky

This name doesn&apos;t indicate well what expect &quot;flaky&quot; to be. I&apos;m assuming it&apos;s the Flaky object? Might be good to indicate that in the initializer by calling it flakyObject. I think it&apos;s fine to keep &quot;flaky&quot; as is in the actual class.

&gt; Tools/Scripts/run-jsc-stress-tests:845
&gt; +class Flaky

Flaky seems like the wrong name for this object. It looks to like it&apos;s more accurately &quot;Tolerance&quot; or &quot;RetryParameters&quot;. If we rename it, we should also rename any member variables which contain it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817180</commentid>
    <comment_count>26</comment_count>
      <attachid>444921</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-21 03:03:41 -0800</bug_when>
    <thetext>Created attachment 444921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817181</commentid>
    <comment_count>27</comment_count>
      <attachid>444922</attachid>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-21 03:04:51 -0800</bug_when>
    <thetext>Created attachment 444922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817182</commentid>
    <comment_count>28</comment_count>
    <who name="Angelos Oikonomopoulos">angelos</who>
    <bug_when>2021-11-21 03:08:49 -0800</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #25)
[...]
&gt; &gt; Tools/Scripts/run-jsc-stress-tests:620
&gt; &gt; +        @flaky = flaky
&gt; 
&gt; This name doesn&apos;t indicate well what expect &quot;flaky&quot; to be. I&apos;m assuming it&apos;s
&gt; the Flaky object? Might be good to indicate that in the initializer by
&gt; calling it flakyObject. I think it&apos;s fine to keep &quot;flaky&quot; as is in the
&gt; actual class.
&gt; 
&gt; &gt; Tools/Scripts/run-jsc-stress-tests:845
&gt; &gt; +class Flaky
&gt; 
&gt; Flaky seems like the wrong name for this object. It looks to like it&apos;s more
&gt; accurately &quot;Tolerance&quot; or &quot;RetryParameters&quot;. If we rename it, we should also
&gt; rename any member variables which contain it.

RetryParameters is much more accurate. Updated the patch and added comments to explain that Plans that have @retryParameters set are treated as flaky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817250</commentid>
    <comment_count>29</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-22 00:46:11 -0800</bug_when>
    <thetext>Committed r286109 (244496@main): &lt;https://commits.webkit.org/244496@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444922.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442909</attachid>
            <date>2021-10-30 03:56:21 -0700</date>
            <delta_ts>2021-10-30 04:22:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232529-20211030125617.patch</filename>
            <type>text/plain</type>
            <size>200445</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGZkNjUwZTg4MTY3N2JhZjFkNGYwOGI5MDczOGRlMDll
MDlmYTRkZC4uNTI0MDM5OTExYTFhY2UzM2ZjNmJhNGZlNjllY2U4ZDNlODA3YmQwNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0
IEBACisyMDIxLTEwLTMwICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIE1vdmUgZGV0ZWN0aW9uIG9mIGZsYWt5IEpTQyB0ZXN0cyB0byBydW4t
anNjLXN0cmVzcy10ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMyNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ3VycmVudGx5LCBmbGFreSBkZXRlY3Rpb24gaGFwcGVucyBieQorICAgICAgICBS
ZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgdGhhdCB3
ZSBlbmQgdXAKKyAgICAgICAgcmVydW5uaW5nIGFsbCBKU0MgdGVzdHMgd2hlbiB0aGVyZSdzIGV2
ZW4gYSBzaW5nbGUgZmFpbHVyZS4gRXZlbgorICAgICAgICB3b3JzZSwgd2hlbiB0aGUgdHJlZSBp
cyBicm9rZW4gKGFzIHNvbWV0aW1lcyBoYXBwZW5zIG9uIEFSTTMyIGFuZAorICAgICAgICBNSVBT
KSB3ZSBlbmQgdXAKKworICAgICAgICAxLiBydW5uaW5nIHRoZSB0ZXN0cyBvbmNlICh0aGV5IGZh
aWwpCisgICAgICAgIDIuIHJ1bm5pbmcgYWxsIHRlc3RzIGFnYWluCisgICAgICAgIDMuIHJ1bm5p
bmcgYWxsIHRlc3RzIGFnYWluIHdpdGhvdXQgdGhlIHBhdGNoCisKKyAgICAgICAgVGhpcyBtZWFu
cyB0aGUgcXVldWUgc2xvd3MgZG93biBhIGxvdCwgc2luY2UgaXQgcnVucyBhbGwgSlNDCisgICAg
ICAgIHN0cmVzcyB0ZXN0cyAzIHRpbWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gZWxpbWluYXRlIHN0ZXAgMiwgd2hpbGUgYWxzbyBiZWluZyBtb3JlCisgICAgICAgIHJlbGlh
YmxlIGFib3V0IGhhbmRsaW5nIGZsYWt5IHRlc3RzLiBTaW5jZSB3ZSBubyBsb25nZXIgbmVlZCB0
bworICAgICAgICByZXJ1biB0aGUgd2hvbGUgdGVzdCBzdWl0ZSwgd2UgY2FuIHNwZW5kIG1vcmUg
Q1BVIHRpbWUgb24KKyAgICAgICAgaWRlbnRpZnlpbmcgdGVzdHMgdGhhdCBtaWdodCBiZSBmbGFr
eS4gVGhlIHVzZXIgY2FuIHBhc3MgaW4KKyAgICAgICAgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5
PXBhc3NQZXJjZW50YWdlLG1heFRyaWVzLG1heEZhaWxpbmcuIElmCisgICAgICAgIGxlc3MgdGhh
biBtYXhGYWlsaW5nIHRlc3RzIGZhaWxlZCwgd2UgcnVuIHRoZW0gYWdhaW4gKHVwIHRvCisgICAg
ICAgIG1heFRyaWVzKSB1bnRpbCB3ZSBjYW4gdGVsbCB3aGV0aGVyIHRoZXkgcGFzcyBtb3JlIHRo
YW4KKyAgICAgICAgcGFzc1BlcmNlbnRhZ2Ugb2YgdGhlIHRpbWUuIFRoaXMgc2hvdWxkIHJlc3Vs
dCBpbiBsZXNzIGZhbHNlCisgICAgICAgIHBvc2l0aXZlcyBjb21wYXJlZCB0byBSZVJ1bkphdmFT
Y3JpcHRDb3JlVGVzdHMsIGFzIHdlJ2xsIG5vIGxvbmdlcgorICAgICAgICBkZWNsYXJlIGEgZmxh
a3kgdGVzdCBhIGZhaWx1cmUgaWYgaXQgaGFwcGVucyB0byBmYWlsIHR3byB0aW1lcyBpbgorICAg
ICAgICBhIHJvdy4gSW4gb3JkZXIgdG8gcmVtb3ZlIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cywg
dGhlIHBhdGNoCisgICAgICAgIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIC0tdHJlYXQtZmFpbGlu
Zy1hcy1mbGFreSBieSBkZWZhdWx0IGluIHRoZQorICAgICAgICBKU0MgRVdTIHF1ZXVlcy4KKwor
ICAgICAgICBJbXBsZW1lbnRhdGlvbi13aXNlLCB0aGUgcGF0Y2ggZ2VuZXJhbGl6ZXMgdGhlIGV4
aXN0aW5nIHJldHJ5IGxvb3AgaW4KKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgKGZvciBk
ZWFsaW5nIHdpdGggZmxha3kgcmVtb3RlIGhvc3RzKSB0byAoYSkgd29yaworICAgICAgICB3aXRo
IGFueSBydW5uZXIgYW5kIChiKSBhbHNvIHJldHJ5IGZsYWt5IHRlc3RzLiBBcyBmbGFreSBoYW5k
bGluZyBpcworICAgICAgICBpbXByYWN0aWNhbCB0byB0ZXN0IG1hbnVhbGx5LCBpdCBhbHNvIGFi
c3RyYWN0cy1vdXQgdGhlIHJldHJ5IGxvZ2ljIHNvCisgICAgICAgIHRoYXQgd2UgY2FuIHRlc3Qg
d2l0aCBwcmVkZXRlcm1pbmVkIHJlc3VsdHMuIFRoaXMgbWVhbnMgd2UgbmVlZCB0bworICAgICAg
ICBlLmcuIHBhc3MgdGhlIHJ1bmxpc3QgYXJvdW5kIGluc3RlYWQgb2YgdHJlYXRpbmcgaXQgYXMg
YSBnbG9iYWwsCisgICAgICAgIGNhcHR1cmluZyB0aGUgbWFpbiBsb2dpYyBpbiBjbGFzc2VzIGFu
ZCBoYXZpbmcgYSBzdWJjbGFzcyBwcm92aWRlCisgICAgICAgIG1ldGhvZHMgdG8gYmUgY2FsbGVk
IGJhY2sgYW5kIHNvIG9uLiBUaGUgcGF0Y2ggZG9lcyBub3Qgc2h5IGF3YXkgZnJvbQorICAgICAg
ICByZWZhY3RvcmluZyBjb2RlIHdoZW4gaXQgbWFrZXMgc2Vuc2UgYnV0IGFsc28gZG9lc24ndCBn
byBvdXQgb2YgaXRzCisgICAgICAgIHdheSB0byByZWZhY3RvciAoZS5nLiB0aGVyZSdzIHN0aWxs
IGEgbG90IG9mIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlCisgICAgICAgIGRlZmF1bHQgYW5kIHJ1
Ynkgd3JpdGVycykuCisKKyAgICAgICAgRG93bnNpZGVzOiB3ZSBjYW4gbm8gbG9uZ2VyIGRldGVj
dCBmbGFraW5lc3MgaW4gdGhlIGJpbmFyeSB0ZXN0cworICAgICAgICAodGVzdGFpciwgdGVzdGIz
LCAuLi4pLiBIb3dldmVyLCBJJ20gbm90IGF3YXJlIG9mIGFueSBpbnN0YW5jZSBvZgorICAgICAg
ICBmbGFraW5lc3MgaW4gdGhvc2UgdGVzdHMuIFRoZSByZXRyeSBsb29wIGlzIG5vdyBiZWluZyB1
c2VkIGZvciBhbGwKKyAgICAgICAgcnVubmVycywgd2hpY2ggbWVhbnMgdGhlIHJlc3VsdHMgYW5h
bHlzaXMgcGF0aCBmb3IgZS5nLiB0aGUgbWFrZQorICAgICAgICBydW5uZXIgaXMgbm93IGEgYml0
IG1vcmUgY29tcGxpY2F0ZWQuIERldGVjdGluZyBmbGFreSB0ZXN0cyBuZWVkcworICAgICAgICBj
b2RlIHNvbWV3aGVyZSwgYnV0IHRoaXMgbW92ZXMgdGhlIGRldGVjdGlvbiBjb2RlIGJlZm9yZSB0
aGUKKyAgICAgICAgcmVzdWx0IHJlcG9ydGluZywgc28gaXMgYSBiaXQgcmlza2llci4gVGhlIHNl
bGYgdGVzdHMgc2hvdWxkCisgICAgICAgIGNvdW50ZXJiYWxhbmNlIHRoaXMuCisKKyAgICAgICAg
KiBDSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5OgorICAgICAgICBLaWxsIFJlUnVuSmF2YVNj
cmlwdENvcmVUZXN0cyBhbmQgZW5hYmxlIC0tdHJlYXQtZmFpbGluZy1hcy1mbGFreS4KKyAgICAg
ICAgRGVmYXVsdHMgdG8gNjAlIHBhc3MgcGVyY2VudGFnZSwgMTAgbWF4VHJpZXMgYW5kIGEgbGlt
aXQgb2YgMjAwCisgICAgICAgIGZhaWxpbmcgdGVzdHMuCisgICAgICAgIChSdW5KYXZhU2NyaXB0
Q29yZVRlc3RzLl9faW5pdF9fKToKKyAgICAgICAgKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuc3Rh
cnQpOgorICAgICAgICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5ldmFsdWF0ZUNvbW1hbmQpOgor
ICAgICAgICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5jb21tYW5kQ29tcGxldGUpOgorICAgICAg
ICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5nZXRSZXN1bHRTdW1tYXJ5KToKKyAgICAgICAgKFJ1
bkphdmFTY3JpcHRDb3JlVGVzdHMuX2FkZFRvTG9nKToKKyAgICAgICAgKEFuYWx5emVKU0NUZXN0
c1Jlc3VsdHMuc3RhcnQpOgorICAgICAgICAoUmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5ldmFsdWF0ZUNvbW1hbmQp
OiBEZWxldGVkLgorICAgICAgICAqIENJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3Qu
cHk6CisgICAgICAgIFVwZGF0ZSB0byBtYXRjaCB0aGUgY2hhbmdlcyBpbiBzdGVwcy5weS4gU29t
ZSB0ZXN0Y2FzZXMgbm8gbG9uZ2VyCisgICAgICAgIGFwcGx5LgorICAgICAgICAqIFNjcmlwdHMv
anNjLXN0cmVzcy10ZXN0LWhlbHBlcnMvc2hlbGwtcnVubmVyLnNoOgorICAgICAgICBEb24ndCBk
ZWR1Y2UgdGhlIHRlc3QgbGlzdCBtYW51YWxseSwgZXhwZWN0IGl0IGFzIGFuIGFyZ3VtZW50IGlu
c3RlYWQuCisgICAgICAgICogU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6CisgICAg
ICAgIChydW5KU0NTdHJlc3NUZXN0cyk6CisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVz
cy10ZXN0czoKKyAgICAgICAgUmVmYWN0b3IgdGhlIGV4ZWN1dGlvbiBsb2dpYyB0byB1c2UgdGhl
IGFic3RyYWN0ZWQtb3V0IGNvZGUgaW4KKyAgICAgICAgZXhlY3V0b3IucmIuIFVzZSB0aGUgcmV0
cnkgbG9vcCBvbiBldmVyeSBydW5uZXIuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2pz
Yy1zdHJlc3MtdGVzdC9leGVjdXRvci5yYjogQWRkZWQuCisgICAgICAgIEltcGxlbWVudCBhIGdl
bmVyaWMgcmV0cnkgbG9vcCBhbmQgZGVmaW5lIGFuIGFycmF5IG9mIHZpcnR1YWwKKyAgICAgICAg
dGVzdHMgKHVzaW5nIHByZWRlZmluZWQgdGVzdCByZXN1bHRzIGZvciBlYWNoIGl0ZXJhdGlvbiku
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3Vs
dC1ldmFsdWF0b3IucmI6IEFkZGVkLgorICAgICAgICBFbmNhcHN1bGF0ZSB0aGUgbG9naWMgb24g
d2hldGhlciBhIHRlc3QgaGFzIHBhc3NlZCBvciBub3QKKyAgICAgICAgKERpZCB3ZSBnZXQgYW55
IHJlc3VsdHM/IFdlcmUgdGhvc2UgcmVzdWx0cyBlbm91Z2ggdG8gZGVjbGFyZSBhCisgICAgICAg
IGZsYWt5L25vbi1mbGFreSB0ZXN0IGEgcGFzcz8pIGFuZCBhZGQgYSBudW1iZXIgb2YgdGVzdHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC93cml0ZXItZGVm
YXVsdC5yYjogUmVuYW1lZCBmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNz
LXRlc3Qtd3JpdGVyLWRlZmF1bHQucmIuCisgICAgICAgIE1vdmUgdGhlIHRlc3Qtd3JpdGVyIGZp
bGVzIHRvIGEgc3ViZGlyZWN0b3J5IGFuZCB1cGRhdGUgdGhlbSBmb3IKKyAgICAgICAgdGhlIGNo
YW5nZXMgdG8gcnVuLWpzYy1zdHJlc3MtdGVzdHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRy
dWJ5L2pzYy1zdHJlc3MtdGVzdC93cml0ZXItcGxheXN0YXRpb24ucmI6IFJlbmFtZWQgZnJvbSBU
b29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1wbGF5c3RhdGlv
bi5yYi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3dyaXRl
ci1ydWJ5LnJiOiBSZW5hbWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJl
c3MtdGVzdC13cml0ZXItcnVieS5yYi4KKwogMjAyMS0xMC0yNSAgUnlhbiBIYWRkYWQgIDxyeWFu
aGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgZGVmYXVsdCBpT1Mgc2ltdWxhdG9y
IHRvIG9uZSB3aXRoIGEgbGFyZ2VyIHNjcmVlbiBzaXplCmRpZmYgLS1naXQgYS9Ub29scy9DSVN1
cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5IGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVw
cy5weQppbmRleCBjNWNjMjRlYTdkY2UxN2VhOTk1NWY0NzE3ZjVjZGNjNjIwZmM2OTYzLi5kOTk4
MjQyMTM5MzNkYjViMzAzZTQ1YTdkZTBhNjM0Yzc2ZjZkYmY1IDEwMDY0NAotLS0gYS9Ub29scy9D
SVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5CisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVp
bGQvc3RlcHMucHkKQEAgLTE4NDEsMTEgKzE4NDEsMTUgQEAgY2xhc3MgUnVuSmF2YVNjcmlwdENv
cmVUZXN0cyhzaGVsbC5UZXN0KToKICAgICAgICAgc2hlbGwuVGVzdC5fX2luaXRfXyhzZWxmLCBs
b2dFbnZpcm9uPUZhbHNlLCBzaWd0ZXJtVGltZT0xMCwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYu
YmluYXJ5RmFpbHVyZXMgPSBbXQogICAgICAgICBzZWxmLnN0cmVzc1Rlc3RGYWlsdXJlcyA9IFtd
CisgICAgICAgIHNlbGYuZmxha3kgPSB7fQogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAg
ICBzZWxmLmxvZ19vYnNlcnZlcl9qc29uID0gbG9nb2JzZXJ2ZXIuQnVmZmVyTG9nT2JzZXJ2ZXIo
KQogICAgICAgICBzZWxmLmFkZExvZ09ic2VydmVyKCdqc29uJywgc2VsZi5sb2dfb2JzZXJ2ZXJf
anNvbikKIAorICAgICAgICAjIFdlIHJlbHkgb24gcnVuLWpzYy1zdHJlc3MtdGVzdHMgdG8gd2Vl
ZCBvdXQgYW55IGZsYWt5IHRlc3RzCisgICAgICAgIHNlbGYuY29tbWFuZC5hcHBlbmQoJy0tdHJl
YXQtZmFpbGluZy1hcy1mbGFreT0wLjYsMTAsMjAwJykKKwogICAgICAgICAjIGFkZCByZW1vdGVz
IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIHRvIHRoZSBjb21tYW5kIGxpbmUgaWYgbmVlZGVkCiAg
ICAgICAgIHJlbW90ZXNmaWxlID0gc2VsZi5nZXRQcm9wZXJ0eSgncmVtb3RlcycsIEZhbHNlKQog
ICAgICAgICBpZiByZW1vdGVzZmlsZToKQEAgLTE4NzIsNyArMTg3NiwxNCBAQCBjbGFzcyBSdW5K
YXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAgICAgc2VsZi5idWlsZC5y
ZXN1bHRzID0gU1VDQ0VTUwogICAgICAgICAgICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVkKFtt
ZXNzYWdlXSwgU1VDQ0VTUykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYnVpbGQu
YWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1G
YWxzZSwgYWRkVVJMcz1GYWxzZSksIEtpbGxPbGRQcm9jZXNzZXMoKSwgUmVSdW5KYXZhU2NyaXB0
Q29yZVRlc3RzKCldKQorICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hGYWlsZWRU
ZXN0cycsIFRydWUpCisgICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50
U3RlcChbVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFs
c2UsIGFkZFVSTHM9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ29tcGlsZUpTQ1dpdGhvdXRQYXRjaCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9z
ZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgS2lsbE9sZFByb2Nlc3NlcygpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuSlNDVGVzdHNXaXRob3V0UGF0Y2goKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuYWx5emVK
U0NUZXN0c1Jlc3VsdHMoKV0pCiAgICAgICAgIHJldHVybiByYwogCiAgICAgZGVmIGNvbW1hbmRD
b21wbGV0ZShzZWxmLCBjbWQpOgpAQCAtMTg5NSwxMCArMTkwNiwxMiBAQCBjbGFzcyBSdW5KYXZh
U2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAgICAgc2VsZi5iaW5hcnlGYWls
dXJlcy5hcHBlbmQoJ3Rlc3RkZmcnKQogICAgICAgICBpZiBqc2NfcmVzdWx0cy5nZXQoJ2FsbEFw
aVRlc3RzUGFzc2VkJykgaXMgRmFsc2U6CiAgICAgICAgICAgICBzZWxmLmJpbmFyeUZhaWx1cmVz
LmFwcGVuZCgndGVzdGFwaScpCi0KICAgICAgICAgc2VsZi5zdHJlc3NUZXN0RmFpbHVyZXMgPSBq
c2NfcmVzdWx0cy5nZXQoJ3N0cmVzc1Rlc3RGYWlsdXJlcycpCiAgICAgICAgIGlmIHNlbGYuc3Ry
ZXNzVGVzdEZhaWx1cmVzOgogICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eShzZWxmLnByZWZp
eCArICdzdHJlc3NfdGVzdF9mYWlsdXJlcycsIHNlbGYuc3RyZXNzVGVzdEZhaWx1cmVzKQorICAg
ICAgICBzZWxmLmZsYWt5ID0ganNjX3Jlc3VsdHMuZ2V0KCdmbGFreUFuZFBhc3NlZCcpCisgICAg
ICAgIGlmIHNlbGYuZmxha3k6CisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KHNlbGYucHJl
Zml4ICsgJ2ZsYWt5X2FuZF9wYXNzZWQnLCBzZWxmLmZsYWt5KQogICAgICAgICBpZiBzZWxmLmJp
bmFyeUZhaWx1cmVzOgogICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eShzZWxmLnByZWZpeCAr
ICdiaW5hcnlfZmFpbHVyZXMnLCBzZWxmLmJpbmFyeUZhaWx1cmVzKQogCkBAIC0xOTE5LDYgKzE5
MzIsOCBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAg
ICAgICAgICAgIHN0YXR1cyArPSAnSlNDIHRlc3QgYmluYXJ5IGZhaWx1cmV7fToge30nLmZvcm1h
dChwbHVyYWxTdWZmaXgsICcsICcuam9pbihzZWxmLmJpbmFyeUZhaWx1cmVzKSkKIAogICAgICAg
ICAgICAgcmV0dXJuIHsnc3RlcCc6IHN0YXR1c30KKyAgICAgICAgZWxpZiBzZWxmLnJlc3VsdHMg
PT0gU1VDQ0VTUyBhbmQgc2VsZi5mbGFreToKKyAgICAgICAgICAgIHJldHVybiB7J3N0ZXAnOiAi
UGFzc2VkIEpTQyB0ZXN0cyAoJWQgZmxha3kpIiAlIGxlbihzZWxmLmZsYWt5KX0KIAogICAgICAg
ICByZXR1cm4gc2hlbGwuVGVzdC5nZXRSZXN1bHRTdW1tYXJ5KHNlbGYpCiAKQEAgLTE5MzEsMzUg
KzE5NDYsNiBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAg
ICAgICBsb2cuYWRkU3Rkb3V0KG1lc3NhZ2UpCiAKIAotY2xhc3MgUmVSdW5KYXZhU2NyaXB0Q29y
ZVRlc3RzKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMpOgotICAgIG5hbWUgPSAnanNjb3JlLXRlc3Qt
cmVydW4nCi0gICAgcHJlZml4ID0gJ2pzY19yZXJ1bl8nCi0KLSAgICBkZWYgZXZhbHVhdGVDb21t
YW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJjID0gc2hlbGwuVGVzdC5ldmFsdWF0ZUNvbW1hbmQo
c2VsZiwgY21kKQotICAgICAgICBmaXJzdF9ydW5fZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9w
ZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pICsgc2VsZi5nZXRQcm9wZXJ0eSgn
anNjX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgc2Vjb25kX3J1bl9mYWlsdXJlcyA9
IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBb
XSkgKyBzZWxmLmdldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2ZhaWx1cmVzJywgW10pKQot
ICAgICAgICBmbGFreV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9mYWlsdXJlcy51bmlvbihzZWNvbmRf
cnVuX2ZhaWx1cmVzKSAtIGZpcnN0X3J1bl9mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1
bl9mYWlsdXJlcykKLSAgICAgICAgZmxha3lfZmFpbHVyZXNfc3RyaW5nID0gJywgJy5qb2luKHNv
cnRlZChmbGFreV9mYWlsdXJlcykpCi0KLSAgICAgICAgaWYgcmMgPT0gU1VDQ0VTUyBvciByYyA9
PSBXQVJOSU5HUzoKLSAgICAgICAgICAgIHBsdXJhbFN1ZmZpeCA9ICdzJyBpZiBsZW4oZmxha3lf
ZmFpbHVyZXMpID4gMSBlbHNlICcnCi0gICAgICAgICAgICBtZXNzYWdlID0gJ0ZvdW5kIGZsYWt5
IHRlc3R7fToge30nLmZvcm1hdChwbHVyYWxTdWZmaXgsIGZsYWt5X2ZhaWx1cmVzX3N0cmluZykK
LSAgICAgICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVzc2FnZQotICAgICAgICAgICAg
c2VsZi5idWlsZC5yZXN1bHRzID0gU1VDQ0VTUwotICAgICAgICAgICAgc2VsZi5idWlsZC5idWls
ZEZpbmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoRmFpbGVkVGVzdHMnLCBUcnVlKQotICAgICAgICAgICAg
c2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW1VuQXBwbHlQYXRjaElmUmVxdWly
ZWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBpbGVKU0NXaXRo
b3V0UGF0Y2goKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtpbGxPbGRQ
cm9jZXNzZXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzKCldKQotICAgICAg
ICByZXR1cm4gcmMKLQotCiBjbGFzcyBSdW5KU0NUZXN0c1dpdGhvdXRQYXRjaChSdW5KYXZhU2Ny
aXB0Q29yZVRlc3RzKToKICAgICBuYW1lID0gJ2pzY29yZS10ZXN0LXdpdGhvdXQtcGF0Y2gnCiAg
ICAgcHJlZml4ID0gJ2pzY19jbGVhbl90cmVlXycKQEAgLTE5NzcsMzQgKzE5NjMsMjkgQEAgY2xh
c3MgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRTdGVwKToKICAgICBOVU1f
RkFJTFVSRVNfVE9fRElTUExBWSA9IDEwCiAKICAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAg
IGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3N0
cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pKQotICAgICAgICBmaXJzdF9ydW5fYmluYXJ5X2ZhaWx1
cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbXSkpCi0g
ICAgICAgIHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHko
J2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgc2Vjb25kX3J1
bl9iaW5hcnlfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFy
eV9mYWlsdXJlcycsIFtdKSkKKyAgICAgICAgc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2ggPSBz
ZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pKQorICAg
ICAgICBiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCA9IHNldChzZWxmLmdldFByb3BlcnR5KCdq
c2NfYmluYXJ5X2ZhaWx1cmVzJywgW10pKQogICAgICAgICBjbGVhbl90cmVlX3N0cmVzc19mYWls
dXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9m
YWlsdXJlcycsIFtdKSkKICAgICAgICAgY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVyZXMgPSBzZXQo
c2VsZi5nZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVzJywgW10pKQog
ICAgICAgICBjbGVhbl90cmVlX2ZhaWx1cmVzID0gbGlzdChjbGVhbl90cmVlX2JpbmFyeV9mYWls
dXJlcykgKyBsaXN0KGNsZWFuX3RyZWVfc3RyZXNzX2ZhaWx1cmVzKQogICAgICAgICBjbGVhbl90
cmVlX2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihjbGVhbl90cmVlX2ZhaWx1cmVzWzpzZWxm
Lk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXSkKIAotICAgICAgICBzdHJlc3NfZmFpbHVyZXNfd2l0
aF9wYXRjaCA9IGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNlY29uZF9y
dW5fc3RyZXNzX2ZhaWx1cmVzKQotICAgICAgICBiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCA9
IGZpcnN0X3J1bl9iaW5hcnlfZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNlY29uZF9ydW5fYmluYXJ5
X2ZhaWx1cmVzKQotCi0gICAgICAgIGZsYWt5X3N0cmVzc19mYWlsdXJlcyA9IGZpcnN0X3J1bl9z
dHJlc3NfZmFpbHVyZXMudW5pb24oc2Vjb25kX3J1bl9zdHJlc3NfZmFpbHVyZXMpIC0gZmlyc3Rf
cnVuX3N0cmVzc19mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1bl9zdHJlc3NfZmFpbHVy
ZXMpCi0gICAgICAgIGZsYWt5X2JpbmFyeV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9iaW5hcnlfZmFp
bHVyZXMudW5pb24oc2Vjb25kX3J1bl9iaW5hcnlfZmFpbHVyZXMpIC0gZmlyc3RfcnVuX2JpbmFy
eV9mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1bl9iaW5hcnlfZmFpbHVyZXMpCi0gICAg
ICAgIGZsYWt5X2ZhaWx1cmVzID0gc29ydGVkKGxpc3QoZmxha3lfYmluYXJ5X2ZhaWx1cmVzKSAr
IGxpc3QoZmxha3lfc3RyZXNzX2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BM
QVldCi0gICAgICAgIGZsYWt5X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihmbGFreV9mYWls
dXJlcykKKyAgICAgICAgZmxha3lfc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2ggPSBzZXQoc2Vs
Zi5nZXRQcm9wZXJ0eSgnanNjX2ZsYWt5X2FuZF9wYXNzZWQnLCB7fSkua2V5cygpKQorICAgICAg
ICBjbGVhbl90cmVlX2ZsYWt5X3N0cmVzc19mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5
KCdqc2NfY2xlYW5fdHJlZV9mbGFreV9hbmRfcGFzc2VkJywge30pLmtleXMoKSkKKyAgICAgICAg
Zmxha3lfc3RyZXNzX2ZhaWx1cmVzID0gc29ydGVkKGxpc3QoZmxha3lfc3RyZXNzX2ZhaWx1cmVz
X3dpdGhfcGF0Y2gpICsgbGlzdChjbGVhbl90cmVlX2ZsYWt5X3N0cmVzc19mYWlsdXJlcykpWzpz
ZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXQorICAgICAgICBmbGFreV9mYWlsdXJlc19zdHJp
bmcgPSAnLCAnLmpvaW4oZmxha3lfc3RyZXNzX2ZhaWx1cmVzKQogCiAgICAgICAgIG5ld19zdHJl
c3NfZmFpbHVyZXMgPSBzdHJlc3NfZmFpbHVyZXNfd2l0aF9wYXRjaCAtIGNsZWFuX3RyZWVfc3Ry
ZXNzX2ZhaWx1cmVzCiAgICAgICAgIG5ld19iaW5hcnlfZmFpbHVyZXMgPSBiaW5hcnlfZmFpbHVy
ZXNfd2l0aF9wYXRjaCAtIGNsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVzCiAgICAgICAgIHNlbGYu
bmV3X3N0cmVzc19mYWlsdXJlc190b19kaXNwbGF5ID0gJywgJy5qb2luKHNvcnRlZChsaXN0KG5l
d19zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0pCiAgICAg
ICAgIHNlbGYubmV3X2JpbmFyeV9mYWlsdXJlc190b19kaXNwbGF5ID0gJywgJy5qb2luKHNvcnRl
ZChsaXN0KG5ld19iaW5hcnlfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExB
WV0pCiAKLSAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZhaWx1cmVzIGluIGZp
cnN0IHJ1bjoge30nLmZvcm1hdCgobGlzdChmaXJzdF9ydW5fYmluYXJ5X2ZhaWx1cmVzKSArIGxp
c3QoZmlyc3RfcnVuX3N0cmVzc19mYWlsdXJlcykpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQ
TEFZXSkpCi0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GYWlsdXJlcyBpbiBz
ZWNvbmQgcnVuOiB7fScuZm9ybWF0KChsaXN0KHNlY29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzKSAr
IGxpc3Qoc2Vjb25kX3J1bl9zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9f
RElTUExBWV0pKQotICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ1xuRmxha3kgVGVz
dHM6IHt9Jy5mb3JtYXQoZmxha3lfZmFpbHVyZXNfc3RyaW5nKSkKKyAgICAgICAgc2VsZi5fYWRk
VG9Mb2coJ3N0ZGVycicsICdcbkZhaWx1cmVzIHdpdGggcGF0Y2g6IHt9Jy5mb3JtYXQobGlzdChi
aW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCkgKyBsaXN0KHN0cmVzc19mYWlsdXJlc193aXRoX3Bh
dGNoKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQorICAgICAgICBzZWxmLl9hZGRU
b0xvZygnc3RkZXJyJywgJ1xuRmxha3kgVGVzdHMgd2l0aCBwYXRjaDoge30nLmZvcm1hdCgnLCAn
LmpvaW4oZmxha3lfc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2gpKSkKICAgICAgICAgc2VsZi5f
YWRkVG9Mb2coJ3N0ZGVycicsICdcbkZhaWx1cmVzIG9uIGNsZWFuIHRyZWU6IHt9Jy5mb3JtYXQo
Y2xlYW5fdHJlZV9mYWlsdXJlc19zdHJpbmcpKQorICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3Rk
ZXJyJywgJ1xuRmxha3kgVGVzdHMgb24gY2xlYW4gdHJlZToge30nLmZvcm1hdCgnLCAnLmpvaW4o
Y2xlYW5fdHJlZV9mbGFreV9zdHJlc3NfZmFpbHVyZXMpKSkKIAotICAgICAgICBpZiAobm90IGZp
cnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMpIGFuZCAobm90IGZpcnN0X3J1bl9iaW5hcnlfZmFpbHVy
ZXMpIGFuZCAobm90IHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKSBhbmQgKG5vdCBzZWNvbmRf
cnVuX2JpbmFyeV9mYWlsdXJlcyk6CisgICAgICAgIGlmIChub3Qgc3RyZXNzX2ZhaWx1cmVzX3dp
dGhfcGF0Y2gpIGFuZCAobm90IGJpbmFyeV9mYWlsdXJlc193aXRoX3BhdGNoKToKICAgICAgICAg
ICAgICMgSWYgd2UndmUgbWFkZSBpdCBoZXJlLCB0aGVuIGpzYy10ZXN0cyBhbmQgcmUtcnVuLWpz
Yy10ZXN0cyBmYWlsZWQsIHdoaWNoIG1lYW5zCiAgICAgICAgICAgICAjIHRoZXJlIHNob3VsZCBo
YXZlIGJlZW4gc29tZSB0ZXN0IGZhaWx1cmVzLiBPdGhlcndpc2UgdGhlcmUgaXMgc29tZSB1bmV4
cGVjdGVkIGlzc3VlLgogICAgICAgICAgICAgY2xlYW5fdHJlZV9ydW5fc3RhdHVzID0gc2VsZi5n
ZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVSRSkKQEAgLTIwMjksOSAr
MjAxMCw5IEBAIGNsYXNzIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3Rl
cCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5n
X2ZhaWx1cmUoY2xlYW5fdHJlZV9mYWlsdXJlKQogICAgICAgICAgICAgaWYgbGVuKGNsZWFuX3Ry
ZWVfZmFpbHVyZXMpID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWToKICAgICAgICAgICAg
ICAgICBtZXNzYWdlICs9ICcgLi4uJwotICAgICAgICAgICAgaWYgZmxha3lfZmFpbHVyZXM6Cisg
ICAgICAgICAgICBpZiBmbGFreV9zdHJlc3NfZmFpbHVyZXM6CiAgICAgICAgICAgICAgICAgbWVz
c2FnZSArPSAnIEZvdW5kIGZsYWt5IHRlc3RzOiB7fScuZm9ybWF0KGZsYWt5X2ZhaWx1cmVzX3N0
cmluZykKLSAgICAgICAgICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBpbiBmbGFreV9mYWlsdXJl
czoKKyAgICAgICAgICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBpbiBmbGFreV9zdHJlc3NfZmFp
bHVyZXM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lbWFpbF9mb3JfZmxha3lfZmFp
bHVyZShmbGFreV9mYWlsdXJlKQogICAgICAgICAgICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVk
KFttZXNzYWdlXSwgU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIGRlZmVyLnN1Y2NlZWQoTm9uZSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkg
Yi9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5CmluZGV4IGM4YzI2
MmUxNTQxZDRiZjlhMWM3NTk1OWNlM2ZjY2JkODYxNTFkMGIuLmZmOWVkZmEyMDQ3ZTAwMWFkYjll
ZWEwNGVjOGQwMWMyMWM0NjBjOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVp
bGQvc3RlcHNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVw
c191bml0dGVzdC5weQpAQCAtNDgsNyArNDgsNyBAQCBmcm9tIHN0ZXBzIGltcG9ydCAoQW5hbHl6
ZUFQSVRlc3RzUmVzdWx0cywgQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRzLCBBbmFseXplSgog
ICAgICAgICAgICAgICAgICAgIERvd25sb2FkQnVpbHRQcm9kdWN0LCBEb3dubG9hZEJ1aWx0UHJv
ZHVjdEZyb21NYXN0ZXIsIEVXU19CVUlMRF9IT1NUTkFNRSwgRXh0cmFjdEJ1aWx0UHJvZHVjdCwg
RXh0cmFjdFRlc3RSZXN1bHRzLAogICAgICAgICAgICAgICAgICAgIEZldGNoQnJhbmNoZXMsIEZp
bmRNb2RpZmllZENoYW5nZUxvZ3MsIEZpbmRNb2RpZmllZExheW91dFRlc3RzLCBHaXRSZXNldEhh
cmQsCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbEJ1aWx0UHJvZHVjdCwgSW5zdGFsbEd0a0Rl
cGVuZGVuY2llcywgSW5zdGFsbFdwZURlcGVuZGVuY2llcywKLSAgICAgICAgICAgICAgICAgICBL
aWxsT2xkUHJvY2Vzc2VzLCBQcmludENvbmZpZ3VyYXRpb24sIFB1c2hDb21taXRUb1dlYktpdFJl
cG8sIFJlUnVuQVBJVGVzdHMsIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cywgUmVSdW5XZWJLaXRQ
ZXJsVGVzdHMsCisgICAgICAgICAgICAgICAgICAgS2lsbE9sZFByb2Nlc3NlcywgUHJpbnRDb25m
aWd1cmF0aW9uLCBQdXNoQ29tbWl0VG9XZWJLaXRSZXBvLCBSZVJ1bkFQSVRlc3RzLCBSZVJ1bldl
YktpdFBlcmxUZXN0cywKICAgICAgICAgICAgICAgICAgICBSZVJ1bldlYktpdFRlc3RzLCBSdW5B
UElUZXN0cywgUnVuQVBJVGVzdHNXaXRob3V0UGF0Y2gsIFJ1bkJpbmRpbmdzVGVzdHMsIFJ1bkJ1
aWxkV2ViS2l0T3JnVW5pdFRlc3RzLAogICAgICAgICAgICAgICAgICAgIFJ1bkJ1aWxkYm90Q2hl
Y2tDb25maWdGb3JCdWlsZFdlYktpdCwgUnVuQnVpbGRib3RDaGVja0NvbmZpZ0ZvckVXUywgUnVu
RVdTVW5pdFRlc3RzLCBSdW5SZXN1bHRzZGJweVRlc3RzLAogICAgICAgICAgICAgICAgICAgIFJ1
bkphdmFTY3JpcHRDb3JlVGVzdHMsIFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoLCBSdW5XZWJLaXQx
VGVzdHMsIFJ1bldlYktpdFBlcmxUZXN0cywgUnVuV2ViS2l0UHlQeXRob24yVGVzdHMsCkBAIC0x
MzYxLDYgKzEzNjEsNyBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhCdWlsZFN0
ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmpzY19k
ZmdfYWlyX2FuZF9zdHJlc3NfdGVzdF9mYWlsdXJlID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6
ZmFsc2UsImFsbE1hc21UZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQjNUZXN0c1Bhc3NlZCI6dHJ1ZSwi
YWxsQWlyVGVzdHNQYXNzZWQiOmZhbHNlLCJhbGxBcGlUZXN0c1Bhc3NlZCI6dHJ1ZSwic3RyZXNz
VGVzdEZhaWx1cmVzIjpbInN0cmVzcy93ZWFrc2V0LWdjLmpzIl19XG4nJycKICAgICAgICAgc2Vs
Zi5qc2Nfc2luZ2xlX3N0cmVzc190ZXN0X2ZhaWx1cmUgPSAnJyd7ImFsbERGR1Rlc3RzUGFzc2Vk
Ijp0cnVlLCJhbGxNYXNtVGVzdHNQYXNzZWQiOnRydWUsImFsbEIzVGVzdHNQYXNzZWQiOnRydWUs
ImFsbEFpclRlc3RzUGFzc2VkIjp0cnVlLCJzdHJlc3NUZXN0RmFpbHVyZXMiOlsic3RyZXNzL3N3
aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZGZnLWVhZ2VyIl0sImFsbEFwaVRlc3RzUGFzc2Vk
Ijp0cnVlfVxuJycnCiAgICAgICAgIHNlbGYuanNjX211bHRpcGxlX3N0cmVzc190ZXN0X2ZhaWx1
cmVzID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFzbVRlc3RzUGFzc2VkIjp0
cnVlLCJhbGxCM1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxBaXJUZXN0c1Bhc3NlZCI6dHJ1ZSwic3Ry
ZXNzVGVzdEZhaWx1cmVzIjpbInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRm
Zy1lYWdlciIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRmZy1lYWdlci1u
by1jaml0LXZhbGlkYXRlIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZWFn
ZXItamV0dGlzb24tbm8tY2ppdCIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpz
LmZ0bC1lYWdlciIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1lYWdl
ci1uby1jaml0Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLWVhZ2Vy
LW5vLWNqaXQtYjNvMSIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1u
by1jaml0LWIzbzAiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8t
Y2ppdC1uby1pbmxpbmUtdmFsaWRhdGUiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9w
ZS5qcy5mdGwtbm8tY2ppdC1uby1wdXQtc3RhY2stdmFsaWRhdGUiLCJzdHJlc3Mvc3dpdGNoLW9u
LWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1zbWFsbC1wb29sIiwic3RyZXNzL3N3aXRj
aC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQtdmFsaWRhdGUtc2FtcGxpbmctcHJv
ZmlsZXIiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5uby1jaml0LWNvbGxl
Y3QtY29udGludW91c2x5Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMubm8t
Y2ppdC12YWxpZGF0ZS1waGFzZXMiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5q
cy5uby1mdGwiXSwiYWxsQXBpVGVzdHNQYXNzZWQiOnRydWV9XG4nJycKKyAgICAgICAgc2VsZi5q
c2NfcGFzc2VkX3dpdGhfZmxha3kgPSAnJyd7ImFsbERGR1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxN
YXNtVGVzdHNQYXNzZWQiOnRydWUsImFsbEIzVGVzdHNQYXNzZWQiOnRydWUsImFsbEFpclRlc3Rz
UGFzc2VkIjp0cnVlLCJzdHJlc3NUZXN0RmFpbHVyZXMiOltdLCJmbGFreUFuZFBhc3NlZCI6eyJz
dHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZWZhdWx0Ijp7IlAiOiI3IiwiVCI6
IjEwIn19LCJhbGxBcGlUZXN0c1Bhc3NlZCI6dHJ1ZX1cbicnJwogICAgICAgICByZXR1cm4gc2Vs
Zi5zZXRVcEJ1aWxkU3RlcCgpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC0xNTAyLDQ2
ICsxNTAzLDIzIEBAIGNsYXNzIFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1p
eGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdiaW5hcnlfZmFpbHVyZXMnKSwgWyd0
ZXN0YWlyJywgJ3Rlc3RkZmcnXSkKICAgICAgICAgcmV0dXJuIHJjCiAKLQotY2xhc3MgVGVzdFJl
UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0cyk6Ci0gICAg
ZGVmIGNvbmZpZ3VyZVN0ZXAoc2VsZiwgcGxhdGZvcm09Tm9uZSwgZnVsbFBsYXRmb3JtPU5vbmUs
IGNvbmZpZ3VyYXRpb249Tm9uZSk6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJlUnVuSmF2YVNj
cmlwdENvcmVUZXN0cygpKQotICAgICAgICBzZWxmLnByZWZpeCA9IFJlUnVuSmF2YVNjcmlwdENv
cmVUZXN0cy5wcmVmaXgKLSAgICAgICAgaWYgcGxhdGZvcm06Ci0gICAgICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdwbGF0Zm9ybScsIHBsYXRmb3JtKQotICAgICAgICBpZiBmdWxsUGxhdGZvcm06
Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCBmdWxsUGxhdGZv
cm0pCi0gICAgICAgIGlmIGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdjb25maWd1cmF0aW9uJywgY29uZmlndXJhdGlvbikKLQotICAgIGRlZiB0ZXN0X3N1Y2Nl
c3Moc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcChwbGF0Zm9ybT0nbWFjJywgZnVs
bFBsYXRmb3JtPSdtYWMtaGlnaHNpZXJyYScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3Qx
JywgJ3Rlc3QyJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAg
ICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3Bl
cmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWls
ZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNv
bkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmls
ZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAg
KSArCi0gICAgICAgICAgICAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29t
ZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdGb3VuZCBmbGFreSB0ZXN0czogdGVzdDEs
IHRlc3QyJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9y
ZW1vdGVfc3VjY2VzcyhzZWxmKToKKyAgICBkZWYgdGVzdF9zdWNjZXNzX3dpdGhfZmxha3koc2Vs
Zik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcChwbGF0Zm9ybT0nanNjLW9ubHknLCBmdWxs
UGxhdGZvcm09J2pzYy1vbmx5JywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3JlbW90ZXMnLCAncmVtb3RlLW1hY2hpbmVzLmpzb24nKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0bWFzbSddKQog
ICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAogICAgICAgICAgICAgRXhwZWN0U2hl
bGwod29ya2Rpcj0nd2tkaXInLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1G
YWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1Nj
cmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWls
LWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICct
LXJlbGVhc2UnLCAnLS1yZW1vdGUtY29uZmlnLWZpbGU9cmVtb3RlLW1hY2hpbmVzLmpzb24nLCAn
LS1uby10ZXN0bWFzbScsICctLW5vLXRlc3RhaXInLCAnLS1uby10ZXN0YjMnLCAnLS1uby10ZXN0
ZGZnJywgJy0tbm8tdGVzdGFwaScsICctLW1lbW9yeS1saW1pdGVkJywgJy0tdmVyYm9zZScsICct
LWpzYy1vbmx5J10sCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBz
ZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICApICsKLSAgICAgICAg
ICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9T
Y3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFp
bC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAn
LS1yZWxlYXNlJywgJy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12ZXJib3NlJywgJy0tanNjLW9ubHkn
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICsgMAorICAgICAgICAg
ICAgKyBFeHBlY3RTaGVsbC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc2NfcGFzc2VkX3dpdGhf
Zmxha3kpLAogICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VD
Q0VTUywgc3RhdGVfc3RyaW5nPSdGb3VuZCBmbGFreSB0ZXN0OiB0ZXN0bWFzbScpCi0gICAgICAg
IHJldHVybiBzZWxmLnJ1blN0ZXAoKQorICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0
PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIEpTQyB0ZXN0cyAoMSBmbGFreSknKQorICAg
ICAgICByYyA9IHNlbGYucnVuU3RlcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5n
ZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdmbGFreV9hbmRfcGFzc2VkJyksIHsnc3RyZXNzL3N3
aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZGVmYXVsdCc6IHsnUCc6ICc3JywgJ1QnOiAnMTAn
fX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZp
eCArICdzdHJlc3NfdGVzdF9mYWlsdXJlcycpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnYmluYXJ5X3Rlc3RfZmFpbHVyZXMn
KSwgTm9uZSkKKyAgICAgICAgcmV0dXJuIHJjCiAKIAogY2xhc3MgVGVzdFJ1bkpTQ1Rlc3RzV2l0
aG91dFBhdGNoKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CkBA
IC0xNTk3LDM4ICsxNTc1LDM0IEBAIGNsYXNzIFRlc3RBbmFseXplSlNDVGVzdHNSZXN1bHRzKEJ1
aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYu
c2V0dXBTdGVwKEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoKSkKICAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCi0gICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnanNjX2ZsYWt5X2FuZF9wYXNzZWQnLCB7fSkKICAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKICAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVzJywgW10p
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX2ZsYWt5X2FuZF9wYXNz
ZWQnLCB7fSkKICAgICAgICAgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9m
bGFreV9mYWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKICAgICAgICAgQW5hbHl6ZUpT
Q1Rlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVyZSA9IGxhbWJk
YSBzZWxmLCB0ZXN0OiBOb25lCiAKICAgICBkZWYgdGVzdF9zaW5nbGVfbmV3X3N0cmVzc19mYWls
dXJlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJv
ci5qcy5ieXRlY29kZS1jYWNoZSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVy
dW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJvci5qcy5ieXRlY29k
ZS1jYWNoZSddKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0
YXRlX3N0cmluZz0nRm91bmQgMSBuZXcgSlNDIHN0cmVzcyB0ZXN0IGZhaWx1cmU6IHN0cmVzcy9m
b3JjZS1lcnJvci5qcy5ieXRlY29kZS1jYWNoZSAoZmFpbHVyZSknKQogICAgICAgICByZXR1cm4g
c2VsZi5ydW5TdGVwKCkKIAogICAgIGRlZiB0ZXN0X3NpbmdsZV9uZXdfYmluYXJ5X2ZhaWx1cmUo
c2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCiAg
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdG
b3VuZCAxIG5ldyBKU0MgYmluYXJ5IGZhaWx1cmU6IHRlc3RtYXNtIChmYWlsdXJlKScpCiAgICAg
ICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfbmV3X3N0
cmVzc19mYWlsdXJlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQogICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3R7fScu
Zm9ybWF0KGkpIGZvciBpIGluIHJhbmdlKDAsIDMwKV0pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdHt9Jy5mb3JtYXQoaSkg
Zm9yIGkgaW4gcmFuZ2UoMCwgMzApXSkKICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3Vs
dD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDMwIG5ldyBKU0Mgc3RyZXNzIHRlc3QgZmFp
bHVyZXM6IHRlc3QwLCB0ZXN0MSwgdGVzdDEwLCB0ZXN0MTEsIHRlc3QxMiwgdGVzdDEzLCB0ZXN0
MTQsIHRlc3QxNSwgdGVzdDE2LCB0ZXN0MTcgLi4uIChmYWlsdXJlKScpCiAgICAgICAgIHJldHVy
biBzZWxmLnJ1blN0ZXAoKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfbmV3X2JpbmFyeV9mYWls
dXJlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0bWFzbScsICd0ZXN0YWlyJywg
J3Rlc3RiMycsICd0ZXN0ZGZnJywgJ3Rlc3RhcGknXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdG1hc20nLCAndGVzdGFpcicsICd0
ZXN0YjMnLCAndGVzdGRmZycsICd0ZXN0YXBpJ10pCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29t
ZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCA1IG5ldyBKU0MgYmluYXJ5IGZh
aWx1cmVzOiB0ZXN0YWlyLCB0ZXN0YXBpLCB0ZXN0YjMsIHRlc3RkZmcsIHRlc3RtYXNtIChmYWls
dXJlKScpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQogCkBAIC0xNjM2LDE1ICsxNjEw
LDEyIEBAIGNsYXNzIFRlc3RBbmFseXplSlNDVGVzdHNSZXN1bHRzKEJ1aWxkU3RlcE1peGluQWRk
aXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgp
CiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsn
ZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKICAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdG1hc20nXSkKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywg
WydlczYueWFtbC9lczYvU2V0X2l0ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVsdCddKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0bWFz
bSddKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0
cmluZz0nRm91bmQgMSBuZXcgSlNDIGJpbmFyeSBmYWlsdXJlOiB0ZXN0bWFzbSwgRm91bmQgMSBu
ZXcgSlNDIHN0cmVzcyB0ZXN0IGZhaWx1cmU6IGVzNi55YW1sL2VzNi9TZXRfaXRlcmF0b3JfY2xv
c2luZy5qcy5kZWZhdWx0IChmYWlsdXJlKScpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAo
KQogCiAgICAgZGVmIHRlc3Rfc3RyZXNzX2ZhaWx1cmVfb25fY2xlYW5fdHJlZShzZWxmKToKICAg
ICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNj
X3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3MvZm9yY2UtZXJyb3IuanMuZGVmYXVsdCdd
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVy
ZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJvci5qcy5kZWZhdWx0J10pCiAgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3Mv
Zm9yY2UtZXJyb3IuanMuZGVmYXVsdCddKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIEpTQyB0ZXN0cycpCiAgICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQpAQCAtMTY2MSwzOSArMTYzMiwyOSBAQCBjbGFzcyBUZXN0QW5h
bHl6ZUpTQ1Rlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2VzNi55YW1sL2VzNi9TZXRfaXRl
cmF0b3JfY2xvc2luZy5qcy5kZWZhdWx0J10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pz
Y19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RhaXInXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydlczYueWFtbC9lczYvU2V0X2l0
ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVsdCddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdq
c2NfcmVydW5fYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0YWlyJ10pCiAgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydlczYueWFt
bC9lczYvU2V0X2l0ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVsdCddKQogICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RhaXInXSkK
ICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9
J1Bhc3NlZCBKU0MgdGVzdHMnKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAotICAg
IGRlZiB0ZXN0X2ZsYWt5X3N0cmVzc19hbmRfYmluYXJ5X2ZhaWx1cmVzKHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3Ry
ZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJvci5qcy5kZWZhdWx0J10pCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RhcGkn
XSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJp
bmc9J1Bhc3NlZCBKU0MgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQog
ICAgIGRlZiB0ZXN0X2ZsYWt5X2FuZF9jb25zaXN0ZW50X3N0cmVzc19mYWlsdXJlcyhzZWxmKToK
ICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
anNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3Qy
J10pCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3Ry
aW5nPSdGb3VuZCAxIG5ldyBKU0Mgc3RyZXNzIHRlc3QgZmFpbHVyZTogdGVzdDIgKGZhaWx1cmUp
JykKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywg
Wyd0ZXN0MSddKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfZmxha3lfYW5kX3Bhc3Nl
ZCcsIHsndGVzdDInOiB7J1AnOiAnNycsICdUJzogJzEwJ319KQorICAgICAgICBzZWxmLmV4cGVj
dE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMSBuZXcgSlNDIHN0
cmVzcyB0ZXN0IGZhaWx1cmU6IHRlc3QxIChmYWlsdXJlKScpCiAgICAgICAgIHJldHVybiBzZWxm
LnJ1blN0ZXAoKQogCiAgICAgZGVmIHRlc3RfZmxha3lfYW5kX2NvbnNpc3RlbnRfZmFpbHVyZXNf
d2l0aF9jbGVhbl90cmVlX2ZhaWx1cmVzKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0
ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMn
LCBbJ3Rlc3QxJywgJ3Rlc3QyJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1
bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJywgJ3Rl
c3QyJ10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJl
cycsIFsndGVzdDEnXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2ZsYWt5X2FuZF9w
YXNzZWQnLCB7J3Rlc3QyJzogeydQJzogNywgJ1QnOiAxMH19KQorICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnXSkK
ICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9
J1Bhc3NlZCBKU0MgdGVzdHMnKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAogICAg
IGRlZiB0ZXN0X3VuZXhwZWN0ZWRfaW5mcmFfaXNzdWUoc2VsZik6CiAgICAgICAgIHNlbGYuY29u
ZmlndXJlU3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9m
YWlsdXJlcycsIFtdKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNz
X3Rlc3RfZmFpbHVyZXMnLCBbXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFu
X3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVSRSkKICAgICAgICAgc2VsZi5leHBlY3RP
dXRjb21lKHJlc3VsdD1SRVRSWSwgc3RhdGVfc3RyaW5nPSdVbmV4cGVjdGVkIGluZnJhc3RydWN0
dXJlIGlzc3VlLCByZXRyeWluZyBidWlsZCAocmV0cnkpJykKQEAgLTE3MDIsOCArMTY2Myw5IEBA
IGNsYXNzIFRlc3RBbmFseXplSlNDVGVzdHNSZXN1bHRzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25z
LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcGF0Y2hfYnJlYWtpbmdfanNjX3Rl
c3Rfc3VpdGUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKKyAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2ZsYWt5X2FuZF9wYXNzZWQnLCB7fSkKICAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMn
LCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfZmxha3lfYW5k
X3Bhc3NlZCcsIHt9KQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9z
dGF0dXMnLCBTVUNDRVNTKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxV
UkUsIHN0YXRlX3N0cmluZz0nRm91bmQgdW5leHBlY3RlZCBmYWlsdXJlIHdpdGggcGF0Y2ggKGZh
aWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJzL3NoZWxsLXJ1bm5lci5zaCBiL1Rvb2xz
L1NjcmlwdHMvanNjLXN0cmVzcy10ZXN0LWhlbHBlcnMvc2hlbGwtcnVubmVyLnNoCmluZGV4IGRl
ZDQwZDUyMTk4MjMwYjgxNTAyNjJjNmJlNzFhYzJkOGNhNzEyZmUuLjNmNmU4ZTJhYTU5NmNmMTE2
MTFjODBjM2M3YmRlNDRmMDM3OTIwMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvanNjLXN0
cmVzcy10ZXN0LWhlbHBlcnMvc2hlbGwtcnVubmVyLnNoCisrKyBiL1Rvb2xzL1NjcmlwdHMvanNj
LXN0cmVzcy10ZXN0LWhlbHBlcnMvc2hlbGwtcnVubmVyLnNoCkBAIC0yMSw2ICsyMSw4IEBACiAj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgogIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitvcmlnaW5hbFRlc3RMaXN0PSIkMSIKKwog
bnVtUHJvY3M9YHN5c2N0bCAtbiBody5hY3RpdmVjcHUgMj4vZGV2L251bGxgCiBpZiBbICQ/IC1n
dCAwIF0KIHRoZW4KQEAgLTM5LDcgKzQxLDcgQEAgbG9ja0Rpcj0iLmxvY2tfZGlyIgogdHJhcCAi
a2lsbCAtOSAwIiBJTlQgSFVQIFRFUk0KIAogZWNobyAwID4gJHtpbmRleEZpbGV9Ci1maW5kIC4g
LW1heGRlcHRoIDEgLW5hbWUgJ3Rlc3Rfc2NyaXB0XyonIHwgc29ydCAtdCAnXycgLWszbnIgPiAk
e3Rlc3RMaXN0fQorY3AgIiRvcmlnaW5hbFRlc3RMaXN0IiAiJHRlc3RMaXN0IgogCiBsb2NrX3Rl
c3RfbGlzdCgpIHsKICAgICB1bnRpbCBta2RpciAke2xvY2tEaXJ9IDI+IC9kZXYvbnVsbDsgZG8g
c2xlZXAgMDsgZG9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwppbmRleCBm
YjIxYmZlNzFhNGY1YzhhZTdlMzJiZjJmMTdkZTVmNGM0ODU2NTk3Li5kYjJlYTQxZWNmOGMzNzZh
ZTNmMGMyNmFmYjU0NTk5NmQxMDcxYTFhIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1q
YXZhc2NyaXB0Y29yZS10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29y
ZS10ZXN0cwpAQCAtNjQsNiArNjQsNyBAQCBteSAkZ251UGFyYWxsZWxSdW5uZXI7CiBteSAkdGVz
dFdyaXRlcjsKIG15ICRtZW1vcnlMaW1pdGVkOwogbXkgJHJlcG9ydEV4ZWN1dGlvblRpbWU7Citt
eSAkdHJlYXRGYWlsaW5nQXNGbGFreTsKIAogbXkgJHJlcG9ydDsKIG15ICRidWlsZGJvdE1hc3Rl
cjsKQEAgLTI4Myw2ICsyODQsNyBAQCBVc2FnZTogJHByb2dyYW1OYW1lIFtvcHRpb25zXSBbb3B0
aW9ucyB0byBwYXNzIHRvIGJ1aWxkIHN5c3RlbV0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2tpcCB0ZXN0cyB0YWdnZWQgd2l0aCAvL1xAc2tpcCBpZiBcJG1lbW9yeUxpbWl0ZWQK
IAogICAtLXJlcG9ydC1leGVjdXRpb24tdGltZSAgICAgICBQcmludCBleGVjdXRpb24gdGltZSBm
b3IgZWFjaCBzdHJlc3MgdGVzdC4KKyAgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5ICAgICAgVHJl
YXQgZmFpbGluZyBzdHJlc3MgdGVzdHMgYXMgZmxha3kKIAogICAtLWZpbHRlciAgICAgICAgICAg
ICAgICAgICAgICBPbmx5IHJ1biB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhlIGdpdmVuIHJl
Z3VsYXIgZXhwcmVzc2lvbi4KICAgLS1lbnYtdmFycyAgICAgICAgICAgICAgICAgICAgUGFzcyBh
IGxpc3Qgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBiZWZvcmUgcnVubmluZyB0ZXN0
cy4KQEAgLTM1Miw2ICszNTQsNyBAQCBHZXRPcHRpb25zKAogICAgICd0ZXN0LXdyaXRlcj1zJyA9
PiBcJHRlc3RXcml0ZXIsCiAgICAgJ21lbW9yeS1saW1pdGVkJyA9PiBcJG1lbW9yeUxpbWl0ZWQs
CiAgICAgJ3JlcG9ydC1leGVjdXRpb24tdGltZScgPT4gXCRyZXBvcnRFeGVjdXRpb25UaW1lLAor
ICAgICd0cmVhdC1mYWlsaW5nLWFzLWZsYWt5PXMnID0+IFwkdHJlYXRGYWlsaW5nQXNGbGFreSwK
ICAgICAnZmlsdGVyPXMnID0+IFwkZmlsdGVyLAogICAgICdoZWxwJyA9PiBcJHNob3dIZWxwLAog
ICAgICdlbnYtdmFycz1zJyA9PiBcJGVudlZhcnMsCkBAIC04MDEsNiArODA0LDEwIEBAIHN1YiBy
dW5KU0NTdHJlc3NUZXN0cwogICAgICAgICBwdXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQsICItLWFy
dGlmYWN0LWV4ZWMtd3JhcHBlciIpOwogICAgICAgICBwdXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQs
ICRhcnRpZmFjdF9leGVjX3dyYXBwZXIpOwogICAgIH0KKyAgICBpZiAoZGVmaW5lZCgkdHJlYXRG
YWlsaW5nQXNGbGFreSkpIHsKKyAgICAgICAgcHVzaChAanNjU3RyZXNzRHJpdmVyQ21kLCAiLS10
cmVhdC1mYWlsaW5nLWFzLWZsYWt5Iik7CisgICAgICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNt
ZCwgJHRyZWF0RmFpbGluZ0FzRmxha3kpOworICAgIH0KICAgICBwdXNoKEBqc2NTdHJlc3NEcml2
ZXJDbWQsIEB0ZXN0TGlzdCk7CiAKICAgICBpZiAoaXNXaW5kb3dzKCkgJiYgIWlzQ3lnd2luKCkp
IHsKQEAgLTkyNSw2ICs5MzIsMjEgQEAgc3ViIHJ1bkpTQ1N0cmVzc1Rlc3RzCiAgICAgICAgICRy
ZXBvcnREYXRheyR0ZXN0U3VjY2VlZGVkfSA9IHthY3R1YWwgPT4gIlBBU1MifTsKICAgICB9CiAK
KyAgICBteSBAanNjU3RyZXNzRmxha3kgPSByZWFkQWxsTGluZXMoJGpzY1N0cmVzc1Jlc3VsdHNE
aXIgLiAiL2ZsYWt5Iik7CisgICAgQGpzY1N0cmVzc0ZsYWt5ID0gc29ydCBAanNjU3RyZXNzRmxh
a3k7CisgICAgbXkgJG51bUpTQ1N0cmVzc0ZsYWt5ID0gQGpzY1N0cmVzc0ZsYWt5OworCisgICAg
bXkgJWpzY1N0cmVzc0ZsYWt5SW5mbyA9ICgpOworICAgIGlmICgkbnVtSlNDU3RyZXNzRmxha3kp
IHsKKyAgICAgICAgcHJpbnQgIlxuKiogVGhlIGZvbGxvd2luZyBKU0Mgc3RyZXNzIHRlc3RzIHdl
cmUgZmxha3k6XG4iOworICAgICAgICBmb3JlYWNoIG15ICR0ZXN0Rmxha3kgKEBqc2NTdHJlc3NG
bGFreSkgeworICAgICAgICAgICAgbXkgQGZpZWxkcyA9IHNwbGl0IC8gLywgJHRlc3RGbGFreTsK
KyAgICAgICAgICAgIHByaW50ICJcdCRmaWVsZHNbMF0gJGZpZWxkc1sxXS8kZmllbGRzWzJdIHBh
c3Nlc1xuIjsKKyAgICAgICAgICAgICRqc2NTdHJlc3NGbGFreUluZm97JGZpZWxkc1swXX0gPSB7
ICdQJyA9PiAkZmllbGRzWzFdLCAnVCcgPT4gJGZpZWxkc1syXX0KKyAgICAgICAgfQorICAgICAg
ICBwcmludCAiXG4iOworICAgIH0KKwogICAgIG15IEBqc2NTdHJlc3NGYWlsTGlzdCA9IHJlYWRB
bGxMaW5lcygkanNjU3RyZXNzUmVzdWx0c0RpciAuICIvZmFpbGVkIik7CiAgICAgQGpzY1N0cmVz
c0ZhaWxMaXN0ID0gc29ydCBAanNjU3RyZXNzRmFpbExpc3Q7CiAgICAgbXkgJG51bUpTQ1N0cmVz
c0ZhaWx1cmVzID0gQGpzY1N0cmVzc0ZhaWxMaXN0OwpAQCAtOTUxLDEyICs5NzMsMTQgQEAgc3Vi
IHJ1bkpTQ1N0cmVzc1Rlc3RzCiAKICAgICBwcmludCAiUmVzdWx0cyBmb3IgSlNDIHN0cmVzcyB0
ZXN0czpcbiI7CiAgICAgcHJpbnRUaGluZ3NGb3VuZCgkbnVtSlNDU3RyZXNzRmFpbHVyZXMsICJm
YWlsdXJlIiwgImZhaWx1cmVzIiwgImZvdW5kIik7CisgICAgcHJpbnRUaGluZ3NGb3VuZCgkbnVt
SlNDU3RyZXNzRmxha3ksICJ0ZXN0IiwgInRlc3RzIiwgImZsYWt5IGJ1dCBwYXNzZWQiKTsKICAg
ICBwcmludFRoaW5nc0ZvdW5kKCRudW1KU0NTdHJlc3NOb1Jlc3VsdFRlc3RzLCAidGVzdCIsICJ0
ZXN0cyIsICJmYWlsZWQgdG8gY29tcGxldGUiKTsKICAgICBwcmludCAiICAgIE9LLlxuIiBpZiAk
bnVtSlNDU3RyZXNzRmFpbHVyZXMgPT0gMCBhbmQgJG51bUpTQ1N0cmVzc05vUmVzdWx0VGVzdHMg
PT0gMDsKIAogICAgIHByaW50ICJcbiI7CiAKICAgICBpZiAoZGVmaW5lZCgkanNvbkZpbGVOYW1l
KSkgeworICAgICAgICAkanNvbkRhdGF7J2ZsYWt5QW5kUGFzc2VkJ30gPSAgXCVqc2NTdHJlc3NG
bGFreUluZm87CiAgICAgICAgICRqc29uRGF0YXsnc3RyZXNzVGVzdEZhaWx1cmVzJ30gPSBcQGpz
Y1N0cmVzc0ZhaWxMaXN0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4t
anNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5k
ZXggY2QwNzViYTc1ZmI3ZjYyNWRiYTI2ZDRiMTI1MTQzZDk0MmMxMTg0NS4uNWY4MGI2ZDJmMWE3
M2RlYzg4NTZiYTQyMGIwY2M0NzFjY2M5MmQ0YSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRl
c3RzCkBAIC0yNSwxMiArMjUsMTcgQEAKIAogcmVxdWlyZSAnZmlsZXV0aWxzJwogcmVxdWlyZSAn
Z2V0b3B0bG9uZycKK3JlcXVpcmUgJ29zdHJ1Y3QnCiByZXF1aXJlICdwYXRobmFtZScKIHJlcXVp
cmUgJ3JiY29uZmlnJworcmVxdWlyZSAnc2V0JwogcmVxdWlyZSAndGVtcGZpbGUnCiByZXF1aXJl
ICd1cmknCiByZXF1aXJlICd5YW1sJwogCityZXF1aXJlX3JlbGF0aXZlICJ3ZWJraXRydWJ5L2pz
Yy1zdHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFsdWF0b3IiCityZXF1aXJlX3JlbGF0aXZlICJ3
ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC9leGVjdXRvciIKKwogbW9kdWxlIFVSSQogICAgIGNs
YXNzIFNTSCA8IEdlbmVyaWMKICAgICAgICAgREVGQVVMVF9QT1JUID0gMjIKQEAgLTczLDYgKzc4
LDggQEAgU1RBVFVTX0ZJTEVfRkFJTCA9ICJGIgogUEFSQUxMRUxfUkVNT1RFX1dSQVBQRVJfTUFS
S19CRUdJTiA9ICI1ZDY1MzI5YmQxYTMiCiBQQVJBTExFTF9SRU1PVEVfV1JBUFBFUl9NQVJLX0VO
RCA9ICJhOWFlYTVjM2I4NDMiCiBQQVJBTExFTF9SRU1PVEVfU1RBVEVfTE9TVF9NQVJLRVIgPSAi
NzA5ZmI3YTc3YzQ1MjMxOTE4ZWIxMThhIgorSVRFUkFUSU9OX0xJTUlUUyA9IE9wZW5TdHJ1Y3Qu
bmV3KDppbmZyYUl0ZXJhdGlvbnNGbG9vciA9PiAzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDppdGVyYXRpb25zQ2VpbGluZyA9PiAxMCkKIAogYmVnaW4KICAgICByZXF1aXJl
ICdzaGVsbHdvcmRzJwpAQCAtMTI0LDcgKzEzMSw2IEBAIGRlZiBlc2NhcGVBbGwoYXJyYXkpCiAg
ICAgfS5qb2luKCcgJykKIGVuZAogCi0KICRqc2NQYXRoID0gbmlsCiAkZG9Ob3RNZXNzV2l0aFZN
UGF0aCA9IGZhbHNlCiAkaml0VGVzdHMgPSB0cnVlCkBAIC0xNTIsNiArMTU4LDExIEBAICRsZGQg
PSBuaWwKICRhcnRpZmFjdF9leGVjX3dyYXBwZXIgPSBuaWwKICRudW1DaGlsZFByb2Nlc3Nlc1Nl
dEJ5VXNlciA9IGZhbHNlCiAkcnVuVW5pcXVlSWQgPSBSYW5kb20ubmV3LmJ5dGVzKDE2KS51bnBh
Y2soIkgqIilbMF0KKyR0ZXN0c0RlYnVnU3RyZWFtID0gbmlsICMgc2V0IHRvICRzdGRlcnIgZm9y
IGRlYnVnZ2luZworCitkZWYgcHV0ZChzKQorICAgICR0ZXN0c0RlYnVnU3RyZWFtLnB1dHMocykg
dW5sZXNzICR0ZXN0c0RlYnVnU3RyZWFtLm5pbD8KK2VuZAogCiBkZWYgdXNhZ2UKICAgICBwdXRz
ICJydW4tanNjLXN0cmVzcy10ZXN0cyAtaiA8c2hlbGwgcGF0aD4gPGNvbGxlY3Rpb25zIHBhdGg+
IFs8Y29sbGVjdGlvbnMgcGF0aD4gLi4uXSIKQEAgLTIyMiw2ICsyMzMsNyBAQCBHZXRvcHRMb25n
Lm5ldyhbJy0taGVscCcsICctaCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAg
ICAgICAgIFsnLS1ydWJ5LXJ1bm5lcicsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAg
ICAgICAgICAgIFsnLS1nbnUtcGFyYWxsZWwtcnVubmVyJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1F
TlRdLAogICAgICAgICAgICAgICAgWyctLXRlc3Qtd3JpdGVyJywgR2V0b3B0TG9uZzo6UkVRVUlS
RURfQVJHVU1FTlRdLAorICAgICAgICAgICAgICAgWyctLXRyZWF0LWZhaWxpbmctYXMtZmxha3kn
LCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tcmVt
b3RlJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyct
LXJlbW90ZS1jb25maWctZmlsZScsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKICAg
ICAgICAgICAgICAgIFsnLS1yZXBvcnQtZXhlY3V0aW9uLXRpbWUnLCBHZXRvcHRMb25nOjpOT19B
UkdVTUVOVF0sCkBAIC0yNzAsNiArMjgyLDMwIEBAIEdldG9wdExvbmcubmV3KFsnLS1oZWxwJywg
Jy1oJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAkdGVzdFJ1bm5lclR5cGUg
PSA6Z251cGFyYWxsZWwKICAgICB3aGVuICctLXRlc3Qtd3JpdGVyJwogICAgICAgICAkdGVzdFdy
aXRlciA9IGFyZworICAgIHdoZW4gJy0tdHJlYXQtZmFpbGluZy1hcy1mbGFreScKKyAgICAgICAg
bWQgPSAvXihbXixdKyksKFxkKyksKFxkKykkLy5tYXRjaChhcmcpCisgICAgICAgIGlmIG1kLm5p
bD8KKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiQ291bGQgbm90IHBhcnNlIGFyZ3VtZW50IHRv
IGAtLXRyZWF0LWZhaWxpbmctYXMtZmxha3lgOyBleHBlY3RlZCBgcGFzc1BlcmNlbnRhZ2UsbWF4
VHJpZXMsbWF4RmFpbGluZ2AiKQorICAgICAgICAgICAgZXhpdCgxKQorICAgICAgICBlbmQKKyAg
ICAgICAgcGFzc1BlcmNlbnRhZ2UgPSBtZFsxXS50b19mCisgICAgICAgIGlmIHBhc3NQZXJjZW50
YWdlLnplcm8/CisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIkludmFsaWQgcGFzc1BlcmNlbnRh
Z2UgYCN7bWRbMV19YCIpCisgICAgICAgICAgICBleGl0KDEpCisgICAgICAgIGVuZAorICAgICAg
ICBtYXhUcmllcyA9IG1kWzJdLnRvX2kKKyAgICAgICAgaWYgbWF4VHJpZXMgPT0gMAorICAgICAg
ICAgICAgJHN0ZGVyci5wdXRzKCJJbnZhbGlkIG1heFRyaWVzIGAje21kWzJdfWAiKQorICAgICAg
ICAgICAgZXhpdCgxKQorICAgICAgICBlbmQKKyAgICAgICAgbWF4RmFpbGluZyA9IG1kWzNdLnRv
X2kKKyAgICAgICAgaWYgbWF4RmFpbGluZyA9PSAwCisgICAgICAgICAgICAkc3RkZXJyLnB1dHMo
IkludmFsaWQgbWF4RmFpbGluZyBgI3ttZFszXX1gIikKKyAgICAgICAgICAgIGV4aXQoMSkKKyAg
ICAgICAgZW5kCisgICAgICAgICR0cmVhdEZhaWxpbmdBc0ZsYWt5ID0gT3BlblN0cnVjdC5uZXco
OnBhc3NQZXJjZW50YWdlID0+IHBhc3NQZXJjZW50YWdlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhUcmllcyA9PiBtYXhUcmllcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiBtYXhG
YWlsaW5nKQogICAgIHdoZW4gJy0tcmVtb3RlJwogICAgICAgICAkY29weVZNID0gdHJ1ZQogICAg
ICAgICAkdGFyYmFsbCA9IHRydWUKQEAgLTU2OSw3ICs2MDUsOTUgQEAgRlRMX09QVElPTlMgPSBb
Ii0tdXNlRlRMSklUPXRydWUiXQogRk9SQ0VfTExJTlRfRVhJVF9PUFRJT05TID0gWyItLWZvcmNl
T1NSRXhpdFRvTExJbnQ9dHJ1ZSJdCiBFWEVDVVRBQkxFX0ZVWlpFUl9PUFRJT05TID0gWyItLXVz
ZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ej10cnVlIiwgIi0tZmlyZUV4ZWN1dGFibGVBbGxvY2F0
aW9uRnV6elJhbmRvbWx5PXRydWUiXQogCi1yZXF1aXJlX3JlbGF0aXZlICJ3ZWJraXRydWJ5L2pz
Yy1zdHJlc3MtdGVzdC13cml0ZXItI3skdGVzdFdyaXRlcn0iCitjbGFzcyBCYXNlUGxhbgorICAg
IGF0dHJfcmVhZGVyIDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpmYW1pbHksIDpuYW1lLCA6b3V0
cHV0SGFuZGxlciwgOmVycm9ySGFuZGxlciwgOmFkZGl0aW9uYWxFbnYsIDppbmRleAorICAgIGF0
dHJfYWNjZXNzb3IgOmZsYWt5CisKKyAgICBAQGluZGV4ID0gMAorICAgIGRlZiBpbml0aWFsaXpl
KGRpcmVjdG9yeSwgYXJndW1lbnRzLCBmYW1pbHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9y
SGFuZGxlciwgZmxha3kpCisgICAgICAgIEBkaXJlY3RvcnkgPSBkaXJlY3RvcnkKKyAgICAgICAg
QGFyZ3VtZW50cyA9IGFyZ3VtZW50c01hcHBlcihhcmd1bWVudHMpCisgICAgICAgIEBmYW1pbHkg
PSBmYW1pbHkKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgICAgIEBvdXRwdXRIYW5kbGVyID0g
b3V0cHV0SGFuZGxlcgorICAgICAgICBAZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyCisgICAg
ICAgIEBmbGFreSA9IGZsYWt5CisgICAgICAgIEBhZGRpdGlvbmFsRW52ID0gW10KKyAgICAgICAg
QGluZGV4ID0gQEBpbmRleAorICAgICAgICBAQGluZGV4ICs9IDEKKyAgICBlbmQKKyAgICBkZWYg
c2VsZi5tb2NrKGZhbWlseSwgbmFtZSwgZmxha3k9bmlsKQorICAgICAgICBzZWxmLm5ldygiL25v
bmUiLCBbXSwgZmFtaWx5LCBuYW1lLCBuaWwsIG5pbCwgZmxha3kpCisgICAgZW5kCisgICAgZGVm
IHNlbGYuY3JlYXRlKGRpcmVjdG9yeSwgYXJndW1lbnRzLCBmYW1pbHksIG5hbWUsIG91dHB1dEhh
bmRsZXIsIGVycm9ySGFuZGxlcikKKyAgICAgICAgaWYgJHJ1bkNvbW1hbmRPcHRpb25zWzpjcmFz
aE9LXQorICAgICAgICAgICAgb3V0cHV0SGFuZGxlciA9IG5vaXN5T3V0cHV0SGFuZGxlcgorICAg
ICAgICBlbmQKKyAgICAgICAgc2VsZi5uZXcoZGlyZWN0b3J5LCBhcmd1bWVudHMsIGZhbWlseSwg
bmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyLCAkcnVuQ29tbWFuZE9wdGlvbnNbOmZs
YWt5XSkKKyAgICBlbmQKKyAgICBkZWYgYXJndW1lbnRzTWFwcGVyKGFyZ3MpCisgICAgICAgIGFy
Z3MKKyAgICBlbmQKKyAgICAjIFdlIHJlZ3VsYXJseSBwbGFjZSBQbGFucyBpbiBjb250YWluZXJz
LCBidXQgbWF5IG1vZGlmeSBAZmxha3kKKyAgICAjIGFmdGVyIHRoZSBmYWN0OyBvbmx5IGhhc2gg
b24gQGluZGV4IGluc3RlYWQuCisgICAgZGVmIGhhc2gKKyAgICAgICAgQGluZGV4CisgICAgZW5k
CisgICAgZGVmIHRvX3MKKyAgICAgICAgIiN7QGluZGV4fSIKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBUZXN0UnVubmVyCisgICAgZGVmIGluaXRpYWxpemUodGVzdFJ1bm5lclR5cGUsIHJ1bm5lckRp
cikKKyAgICAgICAgQHRlc3RSdW5uZXJUeXBlID0gdGVzdFJ1bm5lclR5cGUKKyAgICAgICAgQHJ1
bm5lckRpciA9IHJ1bm5lckRpcgorICAgIGVuZAorICAgIGRlZiBwcmVwYXJlKHJ1bmxpc3QsIHNl
cmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIHByZXBhcmVT
Y3JpcHRzKHJ1bmxpc3QpCisgICAgICAgIHByZXBhcmVSdW5uZXIocnVubGlzdCwgc2VyaWFsUGxh
bnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFy
ZVNjcmlwdHMocnVubGlzdCkKKyAgICAgICAgRGlyLm1rZGlyKEBydW5uZXJEaXIpIHVubGVzcyBA
cnVubmVyRGlyLmRpcmVjdG9yeT8KKyAgICAgICAgdG9EZWxldGUgPSBbXQorICAgICAgICBEaXIu
Zm9yZWFjaChAcnVubmVyRGlyKSB7CisgICAgICAgICAgICB8IGZpbGVuYW1lIHwKKyAgICAgICAg
ICAgIGlmIGZpbGVuYW1lID1+IC9edGVzdF8vCisgICAgICAgICAgICAgICAgdG9EZWxldGUgPDwg
ZmlsZW5hbWUKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisKKyAgICAgICAgdG9EZWxldGUu
ZWFjaCB7CisgICAgICAgICAgICB8IGZpbGVuYW1lIHwKKyAgICAgICAgICAgIEZpbGUudW5saW5r
KEBydW5uZXJEaXIgKyBmaWxlbmFtZSkKKyAgICAgICAgfQorCisgICAgICAgICMgV3JpdGUgdGVz
dCBzY3JpcHRzIGluIHBhcmFsbGVsIGFzIHRoaXMgaXMgYm90aCBhbiBleHBlbnNpdmUgYW5kIGEK
KyAgICAgICAgIyBoaWdobHkgSU8gaW50ZW5zaXZlIG9wZXJhdGlvbiwgYnV0IGVhY2ggc2NyaXB0
IGlzIGluZGVwZW5kZW50IGFuZAorICAgICAgICAjIHRoZSBvcGVyYXRpb24gaXMgcHVyZSBvdGhl
ciB0aGFuIHdyaXRpbmcgdGhlIHVuaXF1ZSBydW4gc2NyaXB0LgorICAgICAgICBwYXJhbGxlbEVh
Y2gocnVubGlzdCkgZG8gfCBwbGFuIHwKKyAgICAgICAgICAgIHBsYW4ud3JpdGVSdW5TY3JpcHQo
QHJ1bm5lckRpciArICJ0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9IikKKyAgICAgICAgZW5kCisg
ICAgZW5kCisgICAgZGVmIHNlbGYuY3JlYXRlKHRlc3RSdW5uZXJUeXBlLCBydW5uZXJEaXIpCisg
ICAgICAgIGNscyA9IG5pbAorICAgICAgICBjYXNlIHRlc3RSdW5uZXJUeXBlCisgICAgICAgIHdo
ZW4gOnNoZWxsCisgICAgICAgICAgICBjbHMgPSBUZXN0UnVubmVyU2hlbGwKKyAgICAgICAgd2hl
biA6bWFrZQorICAgICAgICAgICAgY2xzID0gVGVzdFJ1bm5lck1ha2UKKyAgICAgICAgd2hlbiA6
cnVieQorICAgICAgICAgICAgY2xzID0gVGVzdFJ1bm5lclJ1YnkKKyAgICAgICAgd2hlbiA6Z251
cGFyYWxsZWwKKyAgICAgICAgICAgIGNscyA9IFRlc3RSdW5uZXJHbnVQYXJhbGxlbAorICAgICAg
ICBlbHNlCisgICAgICAgICAgICByYWlzZSAiVW5rbm93biB0ZXN0IHJ1bm5lciB0eXBlOiAje3Rl
c3RSdW5uZXJUeXBlLnRvX3N9IgorICAgICAgICBlbmQKKyAgICAgICAgcmV0dXJuIGNscy5uZXco
dGVzdFJ1bm5lclR5cGUsIHJ1bm5lckRpcikKKyAgICBlbmQKK2VuZAorCityZXF1aXJlX3JlbGF0
aXZlICJ3ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC93cml0ZXItI3skdGVzdFdyaXRlcn0iCiAK
IGRlZiBzaG91bGRDb2xsZWN0Q29udGludW91c2x5PwogICAgICRidWlsZFR5cGUgPT0gInJlbGVh
c2UiIG9yICRmb3JjZUNvbGxlY3RDb250aW51b3VzbHkKQEAgLTU3Nyw3ICs3MDEsNyBAQCBlbmQK
IAogQ09MTEVDVF9DT05USU5VT1VTTFlfT1BUSU9OUyA9IHNob3VsZENvbGxlY3RDb250aW51b3Vz
bHk/ID8gWyItLWNvbGxlY3RDb250aW51b3VzbHk9dHJ1ZSIsICItLXVzZUdlbmVyYXRpb25hbEdD
PWZhbHNlIiwgIi0tdmVyaWZ5R0M9dHJ1ZSJdIDogW10KIAotJHNlcmlhbFJ1bmxpc3QgPSBbXQor
JHNlcmlhbFBsYW5zID0gU2V0Lm5ldwogJHJ1bmxpc3QgPSBbXQogCiBkZWYgZnJhbWV3b3JrRnJv
bUpTQ1BhdGgoanNjUGF0aCkKQEAgLTY1MCw3ICs3NzQsNyBAQCBkZWYgYWRkUnVuQ29tbWFuZChr
aW5kLCBjb21tYW5kLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIsICphZGRpdGlvbmFsRW52
KQogICAgIGlmICRmaWx0ZXIgYW5kIG5hbWUgIX4gJGZpbHRlcgogICAgICAgICByZXR1cm4KICAg
ICBlbmQKLSAgICBwbGFuID0gUGxhbi5uZXcoCisgICAgcGxhbiA9IFBsYW4uY3JlYXRlKAogICAg
ICAgICAkYmVuY2htYXJrRGlyZWN0b3J5LCBjb21tYW5kLCAiI3skY29sbGVjdGlvbk5hbWV9LyN7
JGJlbmNobWFya30iLCBuYW1lLCBvdXRwdXRIYW5kbGVyLAogICAgICAgICBlcnJvckhhbmRsZXIp
CiAgICAgcGxhbi5hZGRpdGlvbmFsRW52LnB1c2goKmFkZGl0aW9uYWxFbnYpCkBAIC02NTksNyAr
NzgzLDcgQEAgZGVmIGFkZFJ1bkNvbW1hbmQoa2luZCwgY29tbWFuZCwgb3V0cHV0SGFuZGxlciwg
ZXJyb3JIYW5kbGVyLCAqYWRkaXRpb25hbEVudikKICAgICAgICAgIyB0aGF0IHdlIGNhbiB0cmVh
dCB0aGVtIHNwZWNpYWxseSB3aGVuIHNjaGVkdWxpbmcsIGJ1dCBrZWVwCiAgICAgICAgICMgaXQg
aW4gdGhlICRydW5saXN0IGZvciBjb2RlIHRoYXQgZG9zbid0IGNhcmUgYWJvdXQKICAgICAgICAg
IyBzY2hlZHVsaW5nLgotICAgICAgICAkc2VyaWFsUnVubGlzdCA8PCBwbGFuCisgICAgICAgICRz
ZXJpYWxQbGFucy5hZGQocGxhbikKICAgICBlbmQKIAogICAgIGlmICRudW1DaGlsZFByb2Nlc3Nl
cyA+IDEgYW5kICRydW5Db21tYW5kT3B0aW9uc1s6aXNTbG93XQpAQCAtNzE3LDYgKzg0MSw0OCBA
QCBkZWYgc2VyaWFsIQogICAgICRydW5Db21tYW5kT3B0aW9uc1s6c2VyaWFsXSA9IHRydWUKIGVu
ZAogCisKK2NsYXNzIEZsYWt5CisgICAgYXR0cl9yZWFkZXIgOnBhc3NQZXJjZW50YWdlLCA6bWF4
VHJpZXMKKyAgICBkZWYgaW5pdGlhbGl6ZShwYXNzUGVyY2VudGFnZSwgbWF4VHJpZXMpCisgICAg
ICAgIEBwYXNzUGVyY2VudGFnZSA9IHBhc3NQZXJjZW50YWdlCisgICAgICAgIEBtYXhUcmllcyA9
IG1heFRyaWVzCisgICAgZW5kCisgICAgZGVmIHRvX3MKKyAgICAgICAgIkZsYWt5KCN7QHBhc3NQ
ZXJjZW50YWdlfSwgI3tAbWF4VHJpZXN9KSIKKyAgICBlbmQKKyAgICBkZWYgcmVzdWx0KHN0YXR1
c2VzKQorICAgICAgICBpZiBzdGF0dXNlcy5sZW5ndGggPiBAbWF4VHJpZXMKKyAgICAgICAgICAg
ICMgVGhpcyBjb3VsZCBoYXBwZW4gaWYgKGJlY2F1c2Ugb2YgcmVtb3RlcyBkaXNhcHBlYXJpbmcK
KyAgICAgICAgICAgICMgYW5kIHJlYXBwZWFyaW5nKSB0aGVyZSBhcmUgbXVsdGlwbGUgcnVucyBm
b3IgdGhlIGxhc3QKKyAgICAgICAgICAgICMgdHJ5IGZvciBmbGFreSB0ZXN0LiBKdXN0IGlnbm9y
ZSBhbnkgZXh0cmEgc3RhdHVzZXMuCisgICAgICAgICAgICBzdGF0dXNlcyA9IHN0YXR1c2VzLnRh
a2UoQG1heFRyaWVzKQorICAgICAgICBlbmQKKyAgICAgICAgc3VjY2Vzc2VzID0gc3VjY2Vzc2Z1
bFN0YXR1c2VzKHN0YXR1c2VzKQorICAgICAgICByZW1haW5pbmcgPSBAbWF4VHJpZXMgLSBzdGF0
dXNlcy5sZW5ndGgKKyAgICAgICAgcmVxdWlyZWRTdWNjZXNzZXMgPSAoQHBhc3NQZXJjZW50YWdl
ICogQG1heFRyaWVzKS5jZWlsCisgICAgICAgIHJldCA9IG5pbCAjICJoYXMgbm90IGNvbXBsZXRl
ZCB5ZXQiCisgICAgICAgIGlmIHN1Y2Nlc3NlcyA+PSByZXF1aXJlZFN1Y2Nlc3NlcworICAgICAg
ICAgICAgcmV0ID0gdHJ1ZQorICAgICAgICBlbHNpZiAoc3VjY2Vzc2VzICsgcmVtYWluaW5nKSA8
IHJlcXVpcmVkU3VjY2Vzc2VzCisgICAgICAgICAgICByZXQgPSBmYWxzZQorICAgICAgICBlbmQK
KyAgICAgICAgcHV0ZCgiI3tzZWxmfS5yZXN1bHQoI3tzdGF0dXNlc30pID0+ICN7cmV0fSIpCisg
ICAgICAgIHJldAorICAgIGVuZAorICAgIHByaXZhdGUKKyAgICBkZWYgc3VjY2Vzc2Z1bFN0YXR1
c2VzKHN0YXR1c2VzKQorICAgICAgICBzdGF0dXNlcy5jb3VudCB7CisgICAgICAgICAgICB8c3Rh
dHVzfAorICAgICAgICAgICAgc3RhdHVzID09IFNUQVRVU19GSUxFX1BBU1MKKyAgICAgICAgfQor
ICAgIGVuZAorZW5kCisKK2RlZiBmbGFreSEocGFzc1BlcmNlbnRhZ2UsIG1heFRyaWVzKQorICAg
ICRydW5Db21tYW5kT3B0aW9uc1s6Zmxha3ldID0gRmxha3kubmV3KHBhc3NQZXJjZW50YWdlLCBt
YXhUcmllcykKK2VuZAorCiBkZWYgcmVxdWlyZU9wdGlvbnMoKm9wdGlvbnMpCiAgICAgJHRlc3RT
cGVjaWZpY1JlcXVpcmVkT3B0aW9ucyArPSBvcHRpb25zCiBlbmQKQEAgLTE4NDgsMzQgKzIwMTQs
NiBAQCBkZWYgaGFuZGxlQ29sbGVjdGlvbihjb2xsZWN0aW9uKQogICAgIGVuZAogZW5kCiAKLWRl
ZiBhcHBlbmRGYWlsdXJlKHBsYW4pCi0gICAgRmlsZS5vcGVuKCRvdXRwdXREaXIgKyAiZmFpbGVk
IiwgImEiKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgIG91dHAucHV0cyBwbGFuLm5hbWUK
LSAgICB9Ci1lbmQKLQotZGVmIGFwcGVuZFBhc3MocGxhbikKLSAgICBGaWxlLm9wZW4oJG91dHB1
dERpciArICJwYXNzZWQiLCAiYSIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgb3V0cC5w
dXRzIHBsYW4ubmFtZQotICAgIH0KLWVuZAotCi1kZWYgYXBwZW5kTm9SZXN1bHQocGxhbikKLSAg
ICBGaWxlLm9wZW4oJG91dHB1dERpciArICJub3Jlc3VsdCIsICJhIikgewotICAgICAgICB8IG91
dHAgfAotICAgICAgICBvdXRwLnB1dHMgcGxhbi5uYW1lCi0gICAgfQotZW5kCi0KLWRlZiBhcHBl
bmRSZXN1bHQocGxhbiwgZGlkUGFzcykKLSAgICBGaWxlLm9wZW4oJG91dHB1dERpciArICJyZXN1
bHRzIiwgImEiKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgIG91dHAucHV0cyAiI3twbGFu
Lm5hbWV9OiAje2RpZFBhc3MgPyAnUEFTUycgOiAnRkFJTCd9IgotICAgIH0KLWVuZAotCiBkZWYg
cHJlcGFyZUJ1bmRsZQogICAgIHJhaXNlIGlmICRidW5kbGUKIApAQCAtMjA1OCw1NCArMjE5Niwx
MSBAQCBkZWYgcGFyYWxsZWxFYWNoKGFycmF5LCAmYmxvY2spCiAgICAgZW5kCiBlbmQKIAotZGVm
IHByZXBhcmVUZXN0UnVubmVyKHJlbW90ZUluZGV4PTApCi0gICAgcmFpc2UgaWYgJGJ1bmRsZQot
Ci0gICAgJHJ1bmxpc3QuZWFjaF93aXRoX2luZGV4IHsKLSAgICAgICAgfCBwbGFuLCBpbmRleCB8
Ci0gICAgICAgIHBsYW4uaW5kZXggPSBpbmRleAotICAgIH0KLQotICAgIERpci5ta2RpcigkcnVu
bmVyRGlyKSB1bmxlc3MgJHJ1bm5lckRpci5kaXJlY3Rvcnk/Ci0gICAgdG9EZWxldGUgPSBbXQot
ICAgIERpci5mb3JlYWNoKCRydW5uZXJEaXIpIHsKLSAgICAgICAgfCBmaWxlbmFtZSB8Ci0gICAg
ICAgIGlmIGZpbGVuYW1lID1+IC9edGVzdF8vCi0gICAgICAgICAgICB0b0RlbGV0ZSA8PCBmaWxl
bmFtZQotICAgICAgICBlbmQKLSAgICB9Ci0gICAgCi0gICAgdG9EZWxldGUuZWFjaCB7Ci0gICAg
ICAgIHwgZmlsZW5hbWUgfAotICAgICAgICBGaWxlLnVubGluaygkcnVubmVyRGlyICsgZmlsZW5h
bWUpCi0gICAgfQotCi0gICAgIyBXcml0ZSB0ZXN0IHNjcmlwdHMgaW4gcGFyYWxsZWwgYXMgdGhp
cyBpcyBib3RoIGFuIGV4cGVuc2l2ZSBhbmQgYQotICAgICMgaGlnaGx5IElPIGludGVuc2l2ZSBv
cGVyYXRpb24sIGJ1dCBlYWNoIHNjcmlwdCBpcyBpbmRlcGVuZGVudCBhbmQKLSAgICAjIHRoZSBv
cGVyYXRpb24gaXMgcHVyZSBvdGhlciB0aGFuIHdyaXRpbmcgdGhlIHVuaXF1ZSBydW4gc2NyaXB0
LgotICAgIHBhcmFsbGVsRWFjaCgkcnVubGlzdCkgZG8gfCBwbGFuIHwKLSAgICAgICAgcGxhbi53
cml0ZVJ1blNjcmlwdCgkcnVubmVyRGlyICsgInRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iKQot
ICAgIGVuZAotCi0gICAgY2FzZSAkdGVzdFJ1bm5lclR5cGUKLSAgICB3aGVuIDptYWtlCi0gICAg
ICAgIHByZXBhcmVNYWtlVGVzdFJ1bm5lcihyZW1vdGVJbmRleCkKLSAgICB3aGVuIDpzaGVsbAot
ICAgICAgICBwcmVwYXJlU2hlbGxUZXN0UnVubmVyCi0gICAgd2hlbiA6cnVieQotICAgICAgICBw
cmVwYXJlUnVieVRlc3RSdW5uZXIKLSAgICB3aGVuIDpnbnVwYXJhbGxlbAotICAgICAgICBwcmVw
YXJlR251UGFyYWxsZWxUZXN0UnVubmVyCi0gICAgZWxzZQotICAgICAgICByYWlzZSAiVW5rbm93
biB0ZXN0IHJ1bm5lciB0eXBlOiAjeyR0ZXN0UnVubmVyVHlwZS50b19zfSIKLSAgICBlbmQKLWVu
ZAotCiBkZWYgY2xlYW5SdW5uZXJEaXJlY3RvcnkKICAgICByYWlzZSB1bmxlc3MgJGJ1bmRsZQog
ICAgIERpci5mb3JlYWNoKCRydW5uZXJEaXIpIHsKICAgICAgICAgfCBmaWxlbmFtZSB8Ci0gICAg
ICAgIG5leHQgdW5sZXNzIGZpbGVuYW1lID1+IC9edGVzdF9mYWlsLworICAgICAgICBuZXh0IHVu
bGVzcyBmaWxlbmFtZSA9fiAvXiN7U1RBVFVTX0ZJTEVfUFJFRklYfS8KICAgICAgICAgRmlsZVV0
aWxzLnJtX2YgJHJ1bm5lckRpciArIGZpbGVuYW1lCiAgICAgfQogZW5kCkBAIC0yMjc0LDkgKzIz
NjksOSBAQCBkZWYgZXhwb3J0QmFzZUVudmlyb25tZW50VmFyaWFibGVzKGVzY2FwZSkKICAgICBd
LmpvaW4oIiIpCiBlbmQKIAotZGVmIHJ1blRlc3RSdW5uZXIocmVtb3RlSW5kZXg9MCkKLSAgICBp
ZiAkcmVtb3RlCi0gICAgICAgIHJlbW90ZUhvc3QgPSAkcmVtb3RlSG9zdHNbcmVtb3RlSW5kZXhd
CitkZWYgcnVuVGVzdFJ1bm5lcih0ZXN0UnVubmVyLCByZW1vdGVIb3N0cywgcmVtb3RlSW5kZXg9
MCkKKyAgICBpZiBub3QgcmVtb3RlSG9zdHMubmlsPworICAgICAgICByZW1vdGVIb3N0ID0gcmVt
b3RlSG9zdHNbcmVtb3RlSW5kZXhdCiAgICAgICAgIGdldFJlbW90ZURpcmVjdG9yeUlmTmVlZGVk
KHJlbW90ZUhvc3QpCiAgICAgICAgIGNvcHlCdW5kbGVUb1JlbW90ZShyZW1vdGVIb3N0KQogICAg
ICAgICByZW1vdGVTY3JpcHQgPSAiXCIiCkBAIC0yMjg2LDExICsyMzgxLDExIEBAIGRlZiBydW5U
ZXN0UnVubmVyKHJlbW90ZUluZGV4PTApCiAgICAgICAgIHJlbW90ZVNjcmlwdCArPSAiY2QgI3sk
b3V0cHV0RGlyLmJhc2VuYW1lfS8ucnVubmVyICYmICIKICAgICAgICAgcmVtb3RlU2NyaXB0ICs9
IGV4cG9ydEJhc2VFbnZpcm9ubWVudFZhcmlhYmxlcyh0cnVlKQogICAgICAgICAkZW52VmFycy5l
YWNoIHsgfHZhcnwgcmVtb3RlU2NyaXB0ICs9ICJleHBvcnQgIiA8PCB2YXIgPDwgIlxuIiB9Ci0g
ICAgICAgIHJlbW90ZVNjcmlwdCArPSAiI3t0ZXN0UnVubmVyQ29tbWFuZChyZW1vdGVJbmRleCl9
XCIiCisgICAgICAgIHJlbW90ZVNjcmlwdCArPSAiI3t0ZXN0UnVubmVyLmNvbW1hbmQocmVtb3Rl
SW5kZXgpfVwiIgogICAgICAgICBydW5BbmRNb25pdG9yVGVzdFJ1bm5lckNvbW1hbmQoWyJzc2gi
LCAiLW8iLCAiTm9Ib3N0QXV0aGVudGljYXRpb25Gb3JMb2NhbGhvc3Q9eWVzIiwgIi1wIiwgcmVt
b3RlSG9zdC5wb3J0LnRvX3MsICIje3JlbW90ZUhvc3QudXNlcn1AI3tyZW1vdGVIb3N0Lmhvc3R9
IiwgcmVtb3RlU2NyaXB0XSkKICAgICBlbHNlCiAgICAgICAgIERpci5jaGRpcigkcnVubmVyRGly
KSB7Ci0gICAgICAgICAgICBydW5BbmRNb25pdG9yVGVzdFJ1bm5lckNvbW1hbmQoU2hlbGx3b3Jk
cy5zaGVsbHNwbGl0KHRlc3RSdW5uZXJDb21tYW5kKSkKKyAgICAgICAgICAgIHJ1bkFuZE1vbml0
b3JUZXN0UnVubmVyQ29tbWFuZChTaGVsbHdvcmRzLnNoZWxsc3BsaXQodGVzdFJ1bm5lci5jb21t
YW5kKSkKICAgICAgICAgfQogICAgIGVuZAogZW5kCkBAIC0yMzA3LDM4ICsyNDAyLDIxIEBAIGRl
ZiBwcm9jZXNzU3RhdHVzTGluZShtYXAsIGxpbmUpCiAgICAgcnVuSWQgPSBtZFs6cnVuSWRdCiAg
ICAgcmVzdWx0ID0gbWRbOnJlc3VsdF0KICAgICBpZiBydW5JZCAhPSAkcnVuVW5pcXVlSWQKLSAg
ICAgICAgIyBUaGlzIG1heSBjb25jZWl2YWJseSBoYXBwZW4gaWYgYSByZW1vdGUgZ29lcwotICAg
ICAgICAjIGF3YXkgaW4gdGhlIG1pZGRsZSBvZiBhIHJ1biBhbmQgY29tZXMgYmFjawotICAgICAg
ICAjIG9ubGluZSBpbiB0aGUgbWlkZGxlIG9mIGEgZGlmZmVyZW50IHJ1bi4KLSAgICAgICAgJHN0
ZGVyci5wdXRzKCJJZ25vcmluZyBzdGFsZSBzdGF0dXMgZmlsZSBmb3IgI3tpbmRleH0gKElEICN7
cnVuSWR9IGJ1dCBjdXJyZW50IElEIGlzICN7JHJ1blVuaXF1ZUlkfSkiKQotICAgICAgICByZXR1
cm4KLSAgICBlbmQKLSAgICBpZiBtYXAuaGFzX2tleT8oaW5kZXgpCi0gICAgICAgICMgT25lIHNj
ZW5hcmlvIGluIHdoaWNoIHRoaXMgY291bGQgaGFwcGVuOgotICAgICAgICAjIFRlc3QgVCBydW5z
IG9uIHJlbW90ZSBob3N0IEEgYW5kCi0gICAgICAgICMgICAxLiB0aGUgc3RhdHVzIGZpbGUgcmVh
Y2hlcyBBJ3MgZGlzawotICAgICAgICAjICAgMi4gc29tZWhvdyB0aGUgZ251IHBhcmFsbGVsIHJ1
bm5lciBpcyBub3QgbWFkZSBhd2FyZSBvZiB0aGUgdGVzdCdzIGNvbXBsZXRpb24gKHBhY2tldCBs
b3NzPykKLSAgICAgICAgIyAgIDMuIG1hY2hpbmUgQSBjcmFzaGVzCi0gICAgICAgICMgICA0LiBn
bnUgcGFyYWxsZWwgcmUtc2NoZWR1bGVzIHRoZSB0ZXN0IHRvIHJ1biBvbiByZW1vdGUgaG9zdCBC
LCB3aGVyZSBpdCBydW5zIHRvIGNvbXBsZXRpb24KLSAgICAgICAgIyAgIDUuIEIgY29tZXMgYmFj
ayBvbmxpbmUgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHJ1bgotICAgICAgICAjICAgNi4gd2UgY29s
bGVjdCB0aGUgc3RhdHVzIGZpbGVzIGZyb20gYWxsIHJlbW90ZXMgYW5kIGVuZCB1cCB3aXRoIHR3
byBzdGF0dXMgZmlsZXMgZm9yIFQuCi0gICAgICAgIHByZXYgPSBtYXBbaW5kZXhdCi0gICAgICAg
ICMgbWFwW2luZGV4XSBob2xkcwotICAgICAgICAjIC0gYSBudW1iZXIsIGlmIGFsbCByZXN1bHRz
IGNvZGVzIHdlJ3ZlIG9ic2VydmVkIGZvciBhIHRlc3QgYXJlIHRoZSBzYW1lCi0gICAgICAgICMg
LSBhbiBhcnJheSwgaWYgdGhleSBkaXZlcmdlLgotICAgICAgICBpZiBwcmV2LmlzX2E/KEFycmF5
KQotICAgICAgICAgICAgcHJldi5wdXNoKHJlc3VsdCkKLSAgICAgICAgZWxzaWYgcHJldiAhPSBy
ZXN1bHQKLSAgICAgICAgICAgICMgSWYgdGhlIHR3byByZXN1bHRzIGRpZmZlciwga2VlcCB0aGVt
Ci0gICAgICAgICAgICAjIGJvdGguIFRoaXMgaXMgc2ltcGx5IGEgd2F5IHRvIG1ha2Ugbm90ZSBv
ZgotICAgICAgICAgICAgIyB0aGUgZGl2ZXJnZW5jZSAoZm9yIGxhdGVyIHJlcG9ydGluZykuCi0g
ICAgICAgICAgICBtYXBbaW5kZXhdID0gW3ByZXYsIHJlc3VsdF0KKyAgICAgICAgaWYgJGJ1bmRs
ZQorICAgICAgICAgICAgIyBUaGUgc2NyaXB0cyBpbiB0aGUgYnVuZGxlIGhhdmUgdGhlaXIgb3du
IHJ1bklkIGVtYmVkZGVkLAorICAgICAgICAgICAgIyBqdXN0IGlnbm9yZSB0aGUgdmFsdWUuCiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICMgR290IHRoZSBzYW1lIHJlc3VsdCwgbm8gbmVlZCB0
byBkbyBhbnl0aGluZy4KKyAgICAgICAgICAgICMgVGhpcyBtYXkgY29uY2VpdmFibHkgaGFwcGVu
IGlmIGEgcmVtb3RlIGdvZXMKKyAgICAgICAgICAgICMgYXdheSBpbiB0aGUgbWlkZGxlIG9mIGEg
cnVuIGFuZCBjb21lcyBiYWNrCisgICAgICAgICAgICAjIG9ubGluZSBpbiB0aGUgbWlkZGxlIG9m
IGEgZGlmZmVyZW50IHJ1bi4KKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiSWdub3Jpbmcgc3Rh
bGUgc3RhdHVzIGZpbGUgZm9yICN7aW5kZXh9IChJRCAje3J1bklkfSBidXQgY3VycmVudCBJRCBp
cyAjeyRydW5VbmlxdWVJZH0pIikKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBlbmQKLSAg
ICAgICAgJHN0ZGVyci5wdXRzKCJEdXBsaWNhdGUgc3RhdGUgZmlsZSBmb3IgI3tpbmRleH06ICN7
bWFwW2luZGV4XX0iKQorICAgIGVuZAorICAgIGlmIG1hcC5oYXNfa2V5PyhpbmRleCkKKyAgICAg
ICAgbWFwW2luZGV4XS5wdXNoKHJlc3VsdCkKICAgICBlbHNlCi0gICAgICAgIG1hcFtpbmRleF0g
PSByZXN1bHQKKyAgICAgICAgbWFwW2luZGV4XSA9IFtyZXN1bHRdCiAgICAgZW5kCiBlbmQKIApA
QCAtMjM3Miw1OCArMjQ1MCwyMyBAQCBkZWYgZ2V0U3RhdHVzTWFwKG1hcD17fSkKICAgICBtYXAK
IGVuZAogCi1kZWYgZ2V0Q29tcGxldGVkVGVzdHNGcm9tU3RhdHVzTWFwKHN0YXR1c01hcCkKLSAg
ICBjb21wbGV0ZWRUZXN0cyA9IHt9Ci0gICAgJHJ1bmxpc3QuZWFjaF93aXRoX2luZGV4IHsKLSAg
ICAgICAgfCBwbGFuLCBpbmRleCB8Ci0gICAgICAgIGlmIHN0YXR1c01hcC5oYXNfa2V5PyhpbmRl
eCkKLSAgICAgICAgICAgIGNvbXBsZXRlZFRlc3RzW3BsYW5dID0gbmlsCi0gICAgICAgIGVuZAot
ICAgIH0KLSAgICBjb21wbGV0ZWRUZXN0cwotZW5kCi0KIGRlZiBkZXRlY3RGYWlsdXJlcyhzdGF0
dXNNYXA9e30pCiAgICAgcmFpc2UgaWYgJGJ1bmRsZQotICAgIG5vcmVzdWx0ID0gMAogICAgIGlm
IHN0YXR1c01hcC5zaXplID09IDAKICAgICAgICAgc3RhdHVzTWFwID0gZ2V0U3RhdHVzTWFwCiAg
ICAgZW5kCi0gICAgZmFtaWx5TWFwID0ge30KIAotICAgICRydW5saXN0LmVhY2hfd2l0aF9pbmRl
eCB7Ci0gICAgICAgIHwgcGxhbiwgaW5kZXggfAotICAgICAgICB1bmxlc3MgZmFtaWx5TWFwW3Bs
YW4uZmFtaWx5XQotICAgICAgICAgICAgZmFtaWx5TWFwW3BsYW4uZmFtaWx5XSA9IFtdCi0gICAg
ICAgIGVuZAotICAgICAgICBpZiBub3Qgc3RhdHVzTWFwLmhhc19rZXk/KGluZGV4KQotICAgICAg
ICAgICAgYXBwZW5kTm9SZXN1bHQocGxhbikKLSAgICAgICAgICAgIG5vcmVzdWx0ICs9IDEKLSAg
ICAgICAgICAgIG5leHQKLSAgICAgICAgZW5kCi0gICAgICAgIHJlc3VsdCA9IG5pbAotICAgICAg
ICAjIElmIGFueSBvZiB0aGUgcmVzdWx0cyB3ZSBnb3Qgd2FzIGEgcGFzcywgY29uc2lkZXIgdGhl
IHRlc3QKLSAgICAgICAgIyBzdWNjZXNzZnVsLiBUaGUgYXNzdW1wdGlvbiBoZXJlIGlzIHRoYXQg
ZmFpbHVyZXMgYXJlIGJlY2F1c2UKLSAgICAgICAgIyBvZiBpbmZyYXN0cnVjdHVyZSBpc3N1ZXMg
KHdoaWNoIGlzIHdoeSB0aGUgdGVzdCB3YXMgcnVuCi0gICAgICAgICMgbXVsdGlwbGUgdGltZXMg
aW4gdGhlIGZpcnN0IHBsYWNlKS4KLSAgICAgICAgdGVzdFdhc1N1Y2Nlc3NmdWwgPSBzdGF0dXNN
YXBbaW5kZXhdLmluY2x1ZGU/KFNUQVRVU19GSUxFX1BBU1MpCi0gICAgICAgIGlmIHRlc3RXYXNT
dWNjZXNzZnVsCi0gICAgICAgICAgICBhcHBlbmRQYXNzKHBsYW4pCi0gICAgICAgICAgICByZXN1
bHQgPSAiUEFTUyIKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kRmFpbHVyZShwbGFu
KQotICAgICAgICAgICAgcmVzdWx0ID0gIkZBSUwiCi0gICAgICAgIGVuZAotICAgICAgICBhcHBl
bmRSZXN1bHQocGxhbiwgdGVzdFdhc1N1Y2Nlc3NmdWwpCi0gICAgICAgIGZhbWlseU1hcFtwbGFu
LmZhbWlseV0gPDwgeyA6cmVzdWx0ID0+IHJlc3VsdCwgOnBsYW4gPT4gcGxhbiB9Ci0gICAgfQor
ICAgIGV2YWx1YXRvciA9IFRlc3RSZXN1bHRFdmFsdWF0b3JGaW5hbC5uZXcoJHJ1bmxpc3QsIHN0
YXR1c01hcCkKKyAgICBldmFsdWF0b3IudmlzaXQhCiAKLSAgICBpZiBub3Jlc3VsdCA+IDAKLSAg
ICAgICAgJHN0ZGVyci5wdXRzKCJDb3VsZCBub3QgZ2V0IHRoZSBleGl0IHN0YXR1cyBmb3IgI3tu
b3Jlc3VsdH0gdGVzdHMiKQorICAgIGlmIGV2YWx1YXRvci5ub3Jlc3VsdCA+IDAKKyAgICAgICAg
JHN0ZGVyci5wdXRzKCJDb3VsZCBub3QgZ2V0IHRoZSBleGl0IHN0YXR1cyBmb3IgI3tldmFsdWF0
b3Iubm9yZXN1bHR9IHRlc3RzIikKICAgICAgICAgIyBXZSBjYW4ndCBjaGFuZ2Ugb3VyIGV4aXQg
Y29kZSwgYXMgcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCiAgICAgICAgICMgZXhwZWN0cyAwIGV2
ZW4gd2hlbiB0aGVyZSBhcmUgZmFpbHVyZXMuCiAgICAgZW5kCiAKKyAgICBmYW1pbHlNYXAgPSBl
dmFsdWF0b3IuZmFtaWx5TWFwCisKICAgICBGaWxlLm9wZW4oJG91dHB1dERpciArICJyZXN1bHRz
QnlGYW1pbHkiLCAidyIpIHsKICAgICAgICAgfCBvdXRwIHwKICAgICAgICAgZmlyc3QgPSB0cnVl
CkBAIC0yNDczLDYgKzI1MTYsNyBAQCBlbmQKIGNsZWFuKCRvdXRwdXREaXIgKyAiZmFpbGVkIikK
IGNsZWFuKCRvdXRwdXREaXIgKyAicGFzc2VkIikKIGNsZWFuKCRvdXRwdXREaXIgKyAibm9yZXN1
bHQiKQorY2xlYW4oJG91dHB1dERpciArICJmbGFreSIpCiBjbGVhbigkb3V0cHV0RGlyICsgInJl
c3VsdHMiKQogY2xlYW4oJG91dHB1dERpciArICJyZXN1bHRzQnlGYW1pbHkiKQogY2xlYW4oJG91
dHB1dERpciArICIudm0iKQpAQCAtMjUxNSwyNyArMjU1OSwxNyBAQCBFTlZbIlRaIl0gPSAiVVMv
UGFjaWZpYyI7CiBkZWYgcnVuQnVuZGxlCiAgICAgcmFpc2UgdW5sZXNzICRidW5kbGUKIAotICAg
IGNsZWFuUnVubmVyRGlyZWN0b3J5Ci0gICAgY2xlYW5PbGRSZXN1bHRzCi0gICAgcnVuVGVzdFJ1
bm5lcgotICAgIGNsZWFuRW1wdHlSZXN1bHRGaWxlcwotZW5kCi0KLWRlZiBydW5Ob3JtYWwKLSAg
ICByYWlzZSBpZiAkYnVuZGxlIG9yICR0YXJiYWxsCi0KLSAgICBwcmVwYXJlQnVuZGxlCi0gICAg
cHJlcGFyZVRlc3RSdW5uZXIKLSAgICBydW5UZXN0UnVubmVyCi0gICAgY2xlYW5FbXB0eVJlc3Vs
dEZpbGVzCi0gICAgZGV0ZWN0RmFpbHVyZXMKKyAgICB0ZXN0UnVubmVyID0gVGVzdFJ1bm5lci5j
cmVhdGUoJHRlc3RSdW5uZXJUeXBlLCAkcnVubmVyRGlyKQorICAgIGV2YWx1YXRvciA9IEJ1bmRs
ZVRlc3RzRXhlY3V0b3IubmV3KCRydW5saXN0LCAkc2VyaWFsUGxhbnMsIElURVJBVElPTl9MSU1J
VFMsICR0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0UnVubmVyKQorICAgIGV2YWx1YXRvci5sb29w
CiBlbmQKIAogZGVmIHJ1blRhcmJhbGwKICAgICByYWlzZSB1bmxlc3MgJHRhcmJhbGwKIAotICAg
IHByZXBhcmVCdW5kbGUgCi0gICAgcHJlcGFyZVRlc3RSdW5uZXIKKyAgICBwcmVwYXJlQnVuZGxl
CisgICAgdGVzdFJ1bm5lciA9IFRlc3RSdW5uZXIuY3JlYXRlKCR0ZXN0UnVubmVyVHlwZSwgJHJ1
bm5lckRpcikKKyAgICB0ZXN0UnVubmVyLnByZXBhcmUoJHJ1bmxpc3QsICRzZXJpYWxQbGFucywg
U2V0Lm5ldywgbmlsKQogICAgIGNvbXByZXNzQnVuZGxlCiBlbmQKIApAQCAtMjU2OSw0NCArMjYw
MywyOCBAQCBkZWYgZm9yRWFjaFJlbW90ZShyZW1vdGVIb3N0cywgb3B0aW9ucz17fSwgJmJsaykK
ICAgICBsaXZlUmVtb3RlcwogZW5kCiAKLWRlZiBydW5SZW1vdGUKLSAgICByYWlzZSB1bmxlc3Mg
JHJlbW90ZQotCi0gICAgcHJlcGFyZUJ1bmRsZQotICAgICRyZW1vdGVIb3N0cy5lYWNoX2luZGV4
IHsKLSAgICAgICAgfCBpbmRleCB8Ci0gICAgICAgIHByZXBhcmVUZXN0UnVubmVyKGluZGV4KQot
ICAgIH0KLSAgICBjb21wcmVzc0J1bmRsZQotICAgIGZvckVhY2hSZW1vdGUoJHJlbW90ZUhvc3Rz
KSB7Ci0gICAgICAgIHwgaW5kZXggfAotICAgICAgICBydW5UZXN0UnVubmVyKGluZGV4KQotICAg
IH0KLSAgICBkZXRlY3RGYWlsdXJlcwotZW5kCitjbGFzcyBUZXN0UnVubmVyR251UGFyYWxsZWwg
PCBUZXN0UnVubmVyCisgICAgZGVmIHByZXBhcmVHbnVQYXJhbGxlbFJ1bm5lckpvYnMobmFtZSwg
cnVubGlzdCwgY29tcGxldGVkUGxhbnMpCisgICAgICAgIHBhdGggPSBAcnVubmVyRGlyICsgbmFt
ZQorICAgICAgICBGaWxlVXRpbHMubWtkaXJfcChAcnVubmVyRGlyKQogCi1kZWYgcHJlcGFyZUdu
dVBhcmFsbGVsUnVubmVySm9icyhuYW1lLCBydW5saXN0LCBleGNsdWRlKQotICAgIHBhdGggPSAk
cnVubmVyRGlyICsgbmFtZQotICAgIEZpbGVVdGlscy5ta2Rpcl9wKCRydW5uZXJEaXIpCi0KLSAg
ICBGaWxlLm9wZW4ocGF0aCwgInciKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgIHJ1bmxp
c3QuZWFjaCB7Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgaWYgZXhjbHVkZS5o
YXNfa2V5PyhwbGFuKQotICAgICAgICAgICAgICAgIG5leHQKLSAgICAgICAgICAgIGVuZAotICAg
ICAgICAgICAgb3V0cC5wdXRzKCIuL3Rlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iKQorICAgICAg
ICBGaWxlLm9wZW4ocGF0aCwgInciKSB7CisgICAgICAgICAgICB8IG91dHAgfAorICAgICAgICAg
ICAgcnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAgICAgICB8IHBsYW4gfAorICAgICAgICAgICAg
ICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgICAg
IG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMoIi4v
dGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICB9CisgICAgZW5kCisgICAgZGVmIHByZXBhcmVSdW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMs
IGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykKKyAgICAgICAgcHJlcGFyZUdudVBhcmFsbGVs
UnVubmVySm9icygicGFyYWxsZWwtdGVzdHMiLCBydW5saXN0LCBjb21wbGV0ZWRQbGFucyB8IHNl
cmlhbFBsYW5zKQorICAgICAgICBwcmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKCJzZXJpYWwt
dGVzdHMiLCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMpCisgICAgZW5kCiBlbmQKIAotZGVm
IHByZXBhcmVHbnVQYXJhbGxlbFRlc3RSdW5uZXIoZXhjbHVkZT17fSkKLSAgICBzZXJpYWxUZXN0
cyA9IHt9Ci0gICAgJHNlcmlhbFJ1bmxpc3QuZWFjaCB7IHxwfCBzZXJpYWxUZXN0c1twXSA9IG5p
bCB9Ci0gICAgcHJlcGFyZUdudVBhcmFsbGVsUnVubmVySm9icygicGFyYWxsZWwtdGVzdHMiLCAk
cnVubGlzdCwgZXhjbHVkZS5tZXJnZShzZXJpYWxUZXN0cykpCi0gICAgcHJlcGFyZUdudVBhcmFs
bGVsUnVubmVySm9icygic2VyaWFsLXRlc3RzIiwgJHNlcmlhbFJ1bmxpc3QsIGV4Y2x1ZGUpCi1l
bmQKIAogZGVmIHdpdGhHbnVQYXJhbGxlbFNzaFdyYXBwZXIoJmJsaykKICAgICBUZW1wZmlsZS5v
cGVuKCdzc2gtd3JhcHBlcicsICRydW5uZXJEaXIpIHsKQEAgLTI3MjQsMjggKzI3NDIsOTAgQEAg
ZGVmIHJ1bkdudVBhcmFsbGVsUnVubmVyKHJlbW90ZUhvc3RzLCBpbnB1dHMsIG9wdGlvbnM9e30p
CiAgICAgfQogZW5kCiAKLWRlZiBydW5HbnVQYXJhbGxlbAotICAgIHJhaXNlIHVubGVzcyAkcmVt
b3RlCi0gICAgcHJlcGFyZUJ1bmRsZQotICAgIHByZXBhcmVUZXN0UnVubmVyCi0gICAgY29tcHJl
c3NCdW5kbGUKLSAgICBzdGF0dXNNYXAgPSB7fQotICAgICMgVGhpcyBpcyBhIGhpZ2gtbGV2ZWwg
cmV0cnkgbG9vcC4gSWYgYSByZW1vdGUgaG9zdCBnb2VzIGF3YXkgaW4KLSAgICAjIHRoZSBtaWRk
bGUgb2YgYSBydW4gYW5kIGVpdGhlciBkb2Vzbid0IGNvbWUgYmFjayBvbmxpbmUgb3IgY29tZXMK
LSAgICAjIGJhY2sgaGF2aW5nIHJlbW92ZWQgdGhlIHJlbW90ZSBkaXJlY3RvcnkgKCopLCBnZXRT
dGF0dXNNYXAgd2lsbCBiZQotICAgICMgbWlzc2luZyByZXN1bHRzIGZvciB0aGVzZSB0ZXN0cywg
YWxsb3dpbmcgdXMgdG8gcmV0cnkgdGhlbSBpbgotICAgICMgdGhlIG5leHQgaXRlcmF0aW9uLgot
ICAgICMKLSAgICAjICgqKSBUaGlzIG1heSB3ZWxsIGhhcHBlbiB3aGVuIHJ1bm5pbmcgdGhlIHRl
c3RzIG9uIGVtYmVkZGVkCi0gICAgIyBib2FyZHMgdGhhdCByZWd1bGFybHkgY29ycnVwdCB0aGVp
ciBTRCBjYXJkLiBEZWZpbml0ZWx5IGFuIGlzc3VlCi0gICAgIyBmb3IgdGhlIGNpMjAgYm9hcmRz
IHVzZWQgdG8gdGVzdCBNSVBTLgotICAgICMKLSAgICAjIFRoZSBudW1iZXIgb2YgdHJpZXMgc2Nh
bGVzIHdpdGggdGhlIG51bWJlciBvZiByZW1vdGVzIGluIHVzZSwKLSAgICAjIHdpdGggYSByZWFz
b25hYmxlIGZsb29yLgotICAgIHRyaWVzID0gWzMsICRyZW1vdGVIb3N0cy5zaXplIC8gMl0ubWF4
Ci0gICAgdHJpZXMudGltZXMgewotICAgICAgICB8IGl0ZXJhdGlvbiB8Ci0gICAgICAgIHJlbW90
ZUhvc3RzID0gJHJlbW90ZUhvc3RzCisjIFVuY29uZGl0aW9uYWxseSBydW4gdGhlIHNlbGZ0ZXN0
cyBvbiBldmVyeSBleGVjdXRpb24sIHRoZXkncmUgcHJldHR5IGNoZWFwLgorRXhlY3V0b3JTZWxm
VGVzdHMucnVuCitUZXN0UmVzdWx0RXZhbHVhdG9yU2VsZlRlc3RzLnJ1bgorCitjbGFzcyBOb25S
ZW1vdGVUZXN0c0V4ZWN1dG9yIDwgQmFzZVRlc3RzRXhlY3V0b3IKKyAgICBkZWYgaW5pdGlhbGl6
ZShydW5saXN0LCBzZXJpYWxQbGFucywgbWF4SXRlcmF0aW9uc0JvdW5kcywgdHJlYXRGYWlsaW5n
QXNGbGFreSwgdGVzdFJ1bm5lcikKKyAgICAgICAgc3VwZXIocnVubGlzdCwgc2VyaWFsUGxhbnMs
CisgICAgICAgICAgICAgIG5pbCwKKyAgICAgICAgICAgICAgbWF4SXRlcmF0aW9uc0JvdW5kcywK
KyAgICAgICAgICAgICAgdHJlYXRGYWlsaW5nQXNGbGFreQorICAgICAgICAgICAgICkKKyAgICAg
ICAgQHRlc3RSdW5uZXIgPSB0ZXN0UnVubmVyCisgICAgZW5kCisgICAgZGVmIHByZXBhcmVFeGVj
dXRpb24ocmVtb3RlSG9zdHMpCisgICAgICAgIHJlbW90ZUhvc3RzCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgTm9ybWFsVGVzdHNFeGVjdXRvciA8IE5vblJlbW90ZVRlc3RzRXhlY3V0b3IKKyAgICBk
ZWYgcHJlcGFyZUFydGlmYWN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAgcmFpc2UgInJlbW90ZUhv
c3RzIG5vdCBuaWwiIHVubGVzcyByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgIHByZXBhcmVCdW5k
bGUKKyAgICAgICAgQHRlc3RSdW5uZXIucHJlcGFyZShAcnVubGlzdCwgQHNlcmlhbFBsYW5zLCBT
ZXQubmV3LCBuaWwpCisgICAgZW5kCisgICAgZGVmIGV4ZWN1dGVUZXN0cyhyZW1vdGVIb3N0cykK
KyAgICAgICAgcnVuVGVzdFJ1bm5lcihAdGVzdFJ1bm5lciwgbmlsLCBuaWwpCisgICAgICAgIGNs
ZWFuRW1wdHlSZXN1bHRGaWxlcworICAgIGVuZAorICAgIGRlZiB1cGRhdGVTdGF0dXNNYXAoaXRl
cmF0aW9uLCBzdGF0dXNNYXApCisgICAgICAgIHJldHVybiBnZXRTdGF0dXNNYXAoc3RhdHVzTWFw
KQorICAgIGVuZAorZW5kCisKK2NsYXNzIEJ1bmRsZVRlc3RzRXhlY3V0b3IgPCBOb25SZW1vdGVU
ZXN0c0V4ZWN1dG9yCisgICAgZGVmIHByZXBhcmVBcnRpZmFjdHMocmVtb3RlSG9zdHMpCisgICAg
ICAgIHJhaXNlICJyZW1vdGVIb3N0cyBub3QgbmlsIiB1bmxlc3MgcmVtb3RlSG9zdHMubmlsPwor
ICAgICAgICBjbGVhblJ1bm5lckRpcmVjdG9yeQorICAgICAgICBjbGVhbk9sZFJlc3VsdHMKKyAg
ICBlbmQKKyAgICBkZWYgZXhlY3V0ZVRlc3RzKHJlbW90ZUhvc3RzKQorICAgICAgICBydW5UZXN0
UnVubmVyKEB0ZXN0UnVubmVyLCBuaWwsIG5pbCkKKyAgICAgICAgY2xlYW5FbXB0eVJlc3VsdEZp
bGVzCisgICAgZW5kCisgICAgZGVmIHVwZGF0ZVN0YXR1c01hcChpdGVyYXRpb24sIHN0YXR1c01h
cCkKKyAgICAgICAgcmV0dXJuIGdldFN0YXR1c01hcChzdGF0dXNNYXApCisgICAgZW5kCitlbmQK
KworY2xhc3MgQmFzZVJlbW90ZVRlc3RzRXhlY3V0b3IgPCBCYXNlVGVzdHNFeGVjdXRvcgorICAg
IGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCByZW1vdGVIb3N0cywgaXRlcmF0
aW9uTGltaXRzLAorICAgICAgICAgICAgICAgICAgIHRyZWF0RmFpbGluZ0FzRmxha3ksIHRlc3RS
dW5uZXIpCisgICAgICAgIHN1cGVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCByZW1vdGVIb3N0cywg
aXRlcmF0aW9uTGltaXRzLCB0cmVhdEZhaWxpbmdBc0ZsYWt5KQorICAgICAgICBAdGVzdFJ1bm5l
ciA9IHRlc3RSdW5uZXIKKyAgICBlbmQKKyAgICBkZWYgdXBkYXRlU3RhdHVzTWFwKGl0ZXJhdGlv
biwgc3RhdHVzTWFwKQorICAgICAgICByZXR1cm4gZ2V0U3RhdHVzTWFwKHN0YXR1c01hcCkKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBSZW1vdGVUZXN0c0V4ZWN1dG9yIDwgQmFzZVJlbW90ZVRlc3Rz
RXhlY3V0b3IKKyAgICBkZWYgcHJlcGFyZUFydGlmYWN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAg
cmFpc2UgInJlbW90ZUhvc3RzIG5pbCIgaWYgcmVtb3RlSG9zdHMubmlsPworICAgICAgICBwcmVw
YXJlQnVuZGxlCisgICAgICAgIEB0ZXN0UnVubmVyLnByZXBhcmUoQHJ1bmxpc3QsIEBzZXJpYWxQ
bGFucywgU2V0Lm5ldywgcmVtb3RlSG9zdHMpCisgICAgICAgIGNvbXByZXNzQnVuZGxlCisgICAg
ZW5kCisgICAgZGVmIHByZXBhcmVFeGVjdXRpb24ocmVtb3RlSG9zdHMpCisgICAgICAgIHJlbW90
ZUhvc3RzCisgICAgZW5kCisgICAgZGVmIGV4ZWN1dGVUZXN0cyhyZW1vdGVIb3N0cykKKyAgICAg
ICAgZm9yRWFjaFJlbW90ZShyZW1vdGVIb3N0cykgeworICAgICAgICAgICAgfCBpbmRleCB8Cisg
ICAgICAgICAgICBydW5UZXN0UnVubmVyKEB0ZXN0UnVubmVyLCByZW1vdGVIb3N0cywgaW5kZXgp
CisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBHbnVQYXJhbGxlbFRlc3RzRXhlY3V0
b3IgPCBCYXNlUmVtb3RlVGVzdHNFeGVjdXRvcgorICAgIGRlZiBwcmVwYXJlQXJ0aWZhY3RzKHJl
bW90ZUhvc3RzKQorICAgICAgICBwcmVwYXJlQnVuZGxlCisgICAgICAgIEB0ZXN0UnVubmVyLnBy
ZXBhcmUoQHJ1bmxpc3QsIEBzZXJpYWxQbGFucywgU2V0Lm5ldywgcmVtb3RlSG9zdHMpCisgICAg
ICAgIGNvbXByZXNzQnVuZGxlCisgICAgZW5kCisgICAgZGVmIHByZXBhcmVFeGVjdXRpb24ocmVt
b3RlSG9zdHMpCiAgICAgICAgICMgSWYgdGhlIHByZXBhcmF0b3J5IHN0ZXBzIGZhaWwsIGRyb3Ag
dGhlIHJlbW90ZSBob3N0IGZyb20gb3VyCiAgICAgICAgICMgbGlzdC4gT3RoZXJ3aXNlLCBpZiBp
dCBjb21lcyBiYWNrIG9ubGluZSBpbiB0aGUgbWlkZGxlIG9mIGFuCiAgICAgICAgICMgaXRlcmF0
aW9uLCB3ZSdsbCB0cnkgdG8gcnVuIHRlc3Qgam9icyBvbiBpdCwgcG9zc2libHkgdXNpbmcKQEAg
LTI3NTUsMzAgKzI4MzUsNDMgQEAgZGVmIHJ1bkdudVBhcmFsbGVsCiAgICAgICAgICAgICBnZXRS
ZW1vdGVEaXJlY3RvcnlJZk5lZWRlZChyZW1vdGVIb3N0KQogICAgICAgICAgICAgY29weUJ1bmRs
ZVRvUmVtb3RlKHJlbW90ZUhvc3QpCiAgICAgICAgIH0KLSAgICAgICAgcmVtb3RlSG9zdHMgPSB1
bnBhY2tCdW5kbGVHbnVQYXJhbGxlbChyZW1vdGVIb3N0cykKLSAgICAgICAgaWYgcmVtb3RlSG9z
dHMuc2l6ZSA9PSAwCi0gICAgICAgICAgICAjIEVpdGhlciBldmVyeXRoaW5nIGlzIGRvd24sIG9y
IGV2ZXJ5dGhpbmcgZ290Ci0gICAgICAgICAgICAjIHJlYm9vdGVkLiBJbiB0aGUgbGF0dGVyIGNh
c2UsIGFsbG93IGVub3VnaCB0aW1lIGZvciB0aGUKLSAgICAgICAgICAgICMgcmVtb3RlIGJvYXJk
cyB0byBib290IHVwLCB0aGVuIHJldHJ5LgotICAgICAgICAgICAgd2FpdEludGVydmFsID0gNjAK
LSAgICAgICAgICAgICRzdGRlcnIucHV0cygiQWxsIHJlbW90ZSBob3N0cyBmYWlsZWQsIHJldHJ5
aW5nIGFmdGVyICN7d2FpdEludGVydmFsfXMiKQotICAgICAgICAgICAgc2xlZXAod2FpdEludGVy
dmFsKQotICAgICAgICAgICAgbmV4dAotICAgICAgICBlbmQKLQorICAgICAgICByZXR1cm4gdW5w
YWNrQnVuZGxlR251UGFyYWxsZWwocmVtb3RlSG9zdHMpCisgICAgZW5kCisgICAgZGVmIGV4ZWN1
dGVUZXN0cyhyZW1vdGVIb3N0cykKICAgICAgICAgcnVuR251UGFyYWxsZWxSdW5uZXIocmVtb3Rl
SG9zdHMsICRydW5uZXJEaXIgKyAic2VyaWFsLXRlc3RzIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeyA6cGFyYWxsZWxKb2JzT25FYWNoSG9zdCA9PiAxfSkKICAgICAgICAgcnVuR251
UGFyYWxsZWxSdW5uZXIocmVtb3RlSG9zdHMsICRydW5uZXJEaXIgKyAicGFyYWxsZWwtdGVzdHMi
KQotICAgICAgICBzdGF0dXNNYXAgPSBnZXRTdGF0dXNNYXAoc3RhdHVzTWFwKQotICAgICAgICBj
b21wbGV0ZWRUZXN0cyA9IGdldENvbXBsZXRlZFRlc3RzRnJvbVN0YXR1c01hcChzdGF0dXNNYXAp
Ci0gICAgICAgIGJyZWFrIHVubGVzcyBjb21wbGV0ZWRUZXN0cy5zaXplICE9ICRydW5saXN0LnNp
emUKLSAgICAgICAgaWYgY29tcGxldGVkVGVzdHMuc2l6ZSA+ICRydW5saXN0LnNpemUKLSAgICAg
ICAgICAgIHJhaXNlICJUZXN0IGNvdW50IG1pc21hdGNoOiAje2NvbXBsZXRlZFRlc3RzLnNpemV9
ID4gI3skcnVubGlzdC5zaXplfSIKLSAgICAgICAgZW5kCi0gICAgICAgICMgUmVnZW5lcmF0ZSB0
aGUgbGlzdHMgb2YgdGVzdHMgdG8gcnVuCi0gICAgICAgIHByZXBhcmVHbnVQYXJhbGxlbFRlc3RS
dW5uZXIoY29tcGxldGVkVGVzdHMpCi0gICAgICAgICRzdGRlcnIucHV0cygiQWZ0ZXIgdHJ5ICN7
aXRlcmF0aW9uICsgMX0vI3t0cmllc306IGdvdCByZXN1bHRzIGZvciAje2NvbXBsZXRlZFRlc3Rz
LnNpemV9LyN7JHJ1bmxpc3Quc2l6ZX0gdGVzdHMsICN7cmVtb3RlSG9zdHMuc2l6ZX0vI3skcmVt
b3RlSG9zdHMuc2l6ZX0gaG9zdHMgbGl2ZSIpCi0gICAgfQorICAgIGVuZAorZW5kCisKK2RlZiBy
dW5Ob3JtYWwKKyAgICByYWlzZSBpZiAkYnVuZGxlIG9yICR0YXJiYWxsCisKKyAgICB0ZXN0UnVu
bmVyID0gVGVzdFJ1bm5lci5jcmVhdGUoJHRlc3RSdW5uZXJUeXBlLCAkcnVubmVyRGlyKQorICAg
IGV2YWx1YXRvciA9IE5vcm1hbFRlc3RzRXhlY3V0b3IubmV3KCRydW5saXN0LCAkc2VyaWFsUGxh
bnMsIElURVJBVElPTl9MSU1JVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHRyZWF0RmFpbGluZ0FzRmxha3ksIHRlc3RSdW5uZXIpCisgICAgc3RhdHVzTWFwID0g
ZXZhbHVhdG9yLmxvb3AKKyAgICBkZXRlY3RGYWlsdXJlcyhzdGF0dXNNYXApCisKK2VuZAorCitk
ZWYgcnVuUmVtb3RlCisgICAgcmFpc2UgdW5sZXNzICRyZW1vdGUKKworICAgIHRlc3RSdW5uZXIg
PSBUZXN0UnVubmVyLmNyZWF0ZSgkdGVzdFJ1bm5lclR5cGUsICRydW5uZXJEaXIpCisgICAgZXhl
Y3V0b3IgPSBSZW1vdGVUZXN0c0V4ZWN1dG9yLm5ldygkcnVubGlzdCwgJHNlcmlhbFBsYW5zLCAk
cmVtb3RlSG9zdHMsIElURVJBVElPTl9MSU1JVFMsICR0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0
UnVubmVyKQorICAgIHN0YXR1c01hcCA9IGV4ZWN1dG9yLmxvb3AKKyAgICBkZXRlY3RGYWlsdXJl
cyhzdGF0dXNNYXApCitlbmQKKworZGVmIHJ1bkdudVBhcmFsbGVsCisgICAgcmFpc2UgIkNhbiBv
bmx5IHVzZSAtLWdudS1wYXJhbGxlbC1ydW5uZXIgd2l0aCAtLXJlbW90ZSoiIHVubGVzcyAkcmVt
b3RlCisgICAgcmFpc2UgIkNhbiBvbmx5IHVzZSAtLWdudS1wYXJhbGxlbC1ydW5uZXIgd2l0aCB0
aGUgZGVmYXVsdCB3cml0ZXIiIHVubGVzcyAkdGVzdFdyaXRlciA9PSAiZGVmYXVsdCIKKyAgICB0
ZXN0UnVubmVyID0gVGVzdFJ1bm5lci5jcmVhdGUoJHRlc3RSdW5uZXJUeXBlLCAkcnVubmVyRGly
KQorICAgIGV4ZWN1dG9yID0gR251UGFyYWxsZWxUZXN0c0V4ZWN1dG9yLm5ldygkcnVubGlzdCwg
JHNlcmlhbFBsYW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkcmVtb3RlSG9zdHMsIElURVJBVElPTl9MSU1JVFMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICR0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0UnVubmVyKQor
ICAgIHN0YXR1c01hcCA9IGV4ZWN1dG9yLmxvb3AKICAgICBkZXRlY3RGYWlsdXJlcyhzdGF0dXNN
YXApCiBlbmQKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJl
c3MtdGVzdC13cml0ZXItZGVmYXVsdC5yYiBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mt
c3RyZXNzLXRlc3Qtd3JpdGVyLWRlZmF1bHQucmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ2MWI3MWRhMDBlMWZkYWM5ZGY5ZGQyNTllMGJlNjYwNGM3YjcxM2EuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRy
dWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVmYXVsdC5yYgorKysgL2Rldi9udWxsCkBAIC0x
LDQ1NSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0j
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1kZWYg
cHJlZml4Q29tbWFuZChwcmVmaXgpCi0gICAgImF3ayAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2Fw
ZSgieyBwcmludGYgI3socHJlZml4ICsgJzogJykuaW5zcGVjdH07IHByaW50IH0iKQotZW5kCi0K
LWRlZiByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocHJlZml4KQotICAgIHByZWZpeENvbW1hbmQo
cHJlZml4KSArICIgMj4mMSIKLWVuZAotCi1kZWYgcGlwZUFuZFByZWZpeENvbW1hbmQob3V0cHV0
RmlsZW5hbWUsIHByZWZpeCkKLSAgICAidGVlICIgKyBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKG91
dHB1dEZpbGVuYW1lLnRvX3MpICsgIiB8ICIgKyBwcmVmaXhDb21tYW5kKHByZWZpeCkKLWVuZAot
Ci0jIE91dHB1dCBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byBiZSBzaWxl
bnQuCi1kZWYgc2lsZW50T3V0cHV0SGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBu
YW1lIHwKLSAgICAgICAgcGlwZUFuZFByZWZpeENvbW1hbmQoKFBhdGhuYW1lKCIuLiIpICsgKG5h
bWUgKyAiLm91dCIpKS50b19zLCBuYW1lKQotICAgIH0KLWVuZAotCi0jIE91dHB1dCBoYW5kbGVy
IGZvciB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byBwcm9kdWNlIG1lYW5pbmdmdWwgb3V0cHV0
LgotZGVmIG5vaXN5T3V0cHV0SGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBuYW1l
IHwKLSAgICAgICAgImNhdCA+ICIgKyBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgi
Li4iKSArIChuYW1lICsgIi5vdXQiKSkudG9fcykKLSAgICB9Ci1lbmQKLQotZGVmIGdldEFuZFRl
c3RFeGl0Q29kZShwbGFuLCBjb25kaXRpb24pCi0gICAgPDwtRU9GCi0gICAgaWYgdGVzdCAiJGV4
aXRDb2RlIiAje2NvbmRpdGlvbn0KLUVPRgotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVz
dHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiBub24temVybyBleGl0IHN0YXR1
cy4KLSMgVGhpcyBpcyB1c2VmdWwgd2hlbiBhIHRlc3QgaXMgZXhwZWN0ZWQgdG8gZmFpbC4KLWRl
ZiBzaW1wbGVFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxh
biB8Ci0gICAgICAgIG91dHAucHV0cyBnZXRBbmRUZXN0RXhpdENvZGUocGxhbiwgIi1uZSAwIikK
LSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBF
UlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6ICRleGl0Q29kZSkgfCAiICsgcmVkaXJlY3RBbmRQ
cmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4u
ZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlIgotICAgICAgICBvdXRwLnB1dHMg
IiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImZpIgotICAg
IH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdo
ZW4gdGhleSByZXR1cm4gemVybyBleGl0IHN0YXR1cy4KLWRlZiBleHBlY3RlZEZhaWxFcnJvckhh
bmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91
dHAucHV0cyBnZXRBbmRUZXN0RXhpdENvZGUocGxhbiwgIi1uZSAwIikKLSAgICAgICAgb3V0cC5w
dXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFu
ZAotICAgICAgICBvdXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgIChlY2hv
IEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogMCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhD
b21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENv
bW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJmaSIKLSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5k
bGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3RseSB3aGVuIHRoZXkgcmV0dXJuIG5vbi16ZXJv
IGV4aXQgc3RhdHVzIGFuZCBwcm9kdWNlCi0jIGxvdHMgb2Ygc3Bldy4gVGhpcyB3aWxsIGVjaG8g
dGhhdCBzcGV3IHdoZW4gdGhlIHRlc3QgZmFpbHMuCi1kZWYgbm9pc3lFcnJvckhhbmRsZXIKLSAg
ICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVu
YW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1l
ICsgIi5vdXQiKSkudG9fcykKLQotICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVzdEV4aXRDb2Rl
KHBsYW4sICItbmUgMCIpCi0gICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVk
IGV4aXQgY29kZTogJGV4aXRDb2RlKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxh
bi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAg
ICAgICBvdXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1
Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZmkiCi0gICAgfQotZW5kCi0KLSMgRXJy
b3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBkaWZmIHRoZWlyIG91dHB1dCB3aXRoIHNvbWUgZXhw
ZWN0YXRpb24uCi1kZWYgZGlmZkVycm9ySGFuZGxlcihleHBlY3RlZEZpbGVuYW1lKQotICAgIFBy
b2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cHV0RmlsZW5hbWUg
PSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAi
Lm91dCIpKS50b19zKQotICAgICAgICBkaWZmRmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNj
YXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLmRpZmYiKSkudG9fcykKLQotICAg
ICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVzdEV4aXRDb2RlKHBsYW4sICItbmUgMCIpCi0gICAgICAg
IG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZp
bGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogJGV4aXRDb2RlKSB8
ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1
dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsaWYgdGVz
dCAtZSAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFtZSl9IgotICAg
ICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIGRpZmYgLS1zdHJp
cC10cmFpbGluZy1jciAtdSAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxl
bmFtZSl9ICN7b3V0cHV0RmlsZW5hbWV9ID4gI3tkaWZmRmlsZW5hbWV9IgotICAgICAgICBvdXRw
LnB1dHMgIiAgICBpZiBbICQ/IC1lcSAwIF0iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHRoZW4i
Ci0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAg
IG91dHAucHV0cyAiICAgIGVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICAoZWNobyBc
IkRJRkYgRkFJTFVSRSFcIiAmJiBjYXQgI3tkaWZmRmlsZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFu
ZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiAr
IHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZmkiCi0gICAgICAgIG91
dHAucHV0cyAiZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGVjaG8gXCJOTyBFWFBFQ1RB
VElPTiFcIiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4
Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxD
b21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZmkiCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFu
ZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIi4gVGhp
cyBpcyB1c2VkIGJ5IE1vemlsbGEKLSMgdGVzdHMuCi1kZWYgbW96aWxsYUVycm9ySGFuZGxlcgot
ICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cHV0Rmls
ZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5h
bWUgKyAiLm91dCIpKS50b19zKQotCi0gICAgICAgIG91dHAucHV0cyBnZXRBbmRUZXN0RXhpdENv
ZGUocGxhbiwgIi1uZSAwIikKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRw
LnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0
ZWQgZXhpdCBjb2RlOiAkZXhpdENvZGUpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChw
bGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0g
ICAgICAgIG91dHAucHV0cyAiZWxpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFt
ZX0iCi0gICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGVj
aG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcmVk
aXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlIgotICAgICAgICBv
dXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMg
ImZpIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0
IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIsIGFuZCBhcmUgZXhwZWN0ZWQgdG8KLSMgZmFpbC4g
VGhpcyBpcyB1c2VkIGJ5IE1vemlsbGEgdGVzdHMuCi1kZWYgbW96aWxsYUZhaWxFcnJvckhhbmRs
ZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1
dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxh
bi5uYW1lICsgIi5vdXQiKSkudG9fcykKLQotICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVzdEV4
aXRDb2RlKHBsYW4sICItbmUgMCIpCi0gICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAg
b3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRz
ICJlbGlmIGdyZXAgLWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVuYW1lfSIKLSAgICAgICAgb3V0
cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29t
bWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgIChl
Y2hvIE5PVElDRTogWW91IG1hZGUgdGhpcyB0ZXN0IHBhc3MsIGJ1dCBpdCB3YXMgZXhwZWN0ZWQg
dG8gZmFpbCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAg
ICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRz
ICJmaSIKLSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9y
dCBlcnJvciBieSBzYXlpbmcgImZhaWxlZCEiLCBhbmQgYXJlIGV4cGVjdGVkIHRvIGhhdmUKLSMg
YW4gZXhpdCBjb2RlIG9mIDMuCi1kZWYgbW96aWxsYUV4aXQzRXJyb3JIYW5kbGVyCi0gICAgUHJv
Yy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwdXRGaWxlbmFtZSA9
IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIu
b3V0IikpLnRvX3MpCi0KLSAgICAgICAgb3V0cC5wdXRzIGdldEFuZFRlc3RFeGl0Q29kZShwbGFu
LCAiLW5lIDAiKQotICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAi
ICAgIGlmIFsgXCIkZXhpdENvZGVcIiAtZXEgMyBdIgotICAgICAgICBvdXRwLnB1dHMgIiAgICB0
aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7
b3V0cHV0RmlsZW5hbWV9IgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgdGhlbiIKLSAgICAg
ICAgb3V0cC5wdXRzICIgICAgICAgICAgICAoZWNobyBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0
ICN7b3V0cHV0RmlsZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5u
YW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5k
Ci0gICAgICAgIG91dHAucHV0cyAiICAgICAgICBlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAg
ICAgICAgICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiICAg
ICAgICBmaSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZWxzZSIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjogVW5leHBlY3Rl
ZCBleGl0IGNvZGU6ICRleGl0Q29kZSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBs
YW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5k
Ci0gICAgICAgIG91dHAucHV0cyAiICAgIGZpIgotICAgICAgICBvdXRwLnB1dHMgImVsc2UiCi0g
ICAgICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJP
UjogVGVzdCBleHBlY3RlZCB0byBmYWlsLCBidXQgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5KSB8ICIg
KyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMg
IiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImZpIgotICAgIH0K
LWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IHN1Y2Nlc3MgYnkg
c2F5aW5nICJQYXNzZWQiIG9yIGVycm9yIGJ5IHNheWluZyAiRkFJTEVEIi4KLSMgVGhpcyBpcyB1
c2VkIGJ5IENoYWtyYSB0ZXN0cy4KLWRlZiBjaGFrcmFQYXNzRmFpbEVycm9ySGFuZGxlcgotICAg
IFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cHV0RmlsZW5h
bWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUg
KyAiLm91dCIpKS50b19zKQotCi0gICAgICAgIG91dHAucHV0cyBnZXRBbmRUZXN0RXhpdENvZGUo
cGxhbiwgIi1uZSAwIikKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1
dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQg
ZXhpdCBjb2RlOiAkZXhpdENvZGUpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFu
Lm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAg
ICAgIG91dHAucHV0cyAiZWxpZiBncmVwIC1pIC1xIEZBSUxFRCAje291dHB1dEZpbGVuYW1lfSIK
LSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBE
ZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0cHV0RmlsZW5hbWV9KSB8ICIgKyByZWRpcmVj
dEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsg
cGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAu
cHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZmki
Ci0gICAgfQotZW5kCi0KLWNsYXNzIFBsYW4KLSAgICBhdHRyX3JlYWRlciA6ZGlyZWN0b3J5LCA6
YXJndW1lbnRzLCA6ZmFtaWx5LCA6bmFtZSwgOm91dHB1dEhhbmRsZXIsIDplcnJvckhhbmRsZXIs
IDphZGRpdGlvbmFsRW52Ci0gICAgYXR0cl9hY2Nlc3NvciA6aW5kZXgKLSAgICAKLSAgICBkZWYg
aW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5k
bGVyLCBlcnJvckhhbmRsZXIpCi0gICAgICAgIEBkaXJlY3RvcnkgPSBkaXJlY3RvcnkKLSAgICAg
ICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50cwotICAgICAgICBAZmFtaWx5ID0gZmFtaWx5Ci0gICAg
ICAgIEBuYW1lID0gbmFtZQotICAgICAgICBAb3V0cHV0SGFuZGxlciA9IG91dHB1dEhhbmRsZXIK
LSAgICAgICAgQGVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcgotICAgICAgICBAaXNTbG93ID0g
ISEkcnVuQ29tbWFuZE9wdGlvbnNbOmlzU2xvd10KLSAgICAgICAgQGNyYXNoT0sgPSAhISRydW5D
b21tYW5kT3B0aW9uc1s6Y3Jhc2hPS10KLSAgICAgICAgaWYgQGNyYXNoT0sKLSAgICAgICAgICAg
IEBvdXRwdXRIYW5kbGVyID0gbm9pc3lPdXRwdXRIYW5kbGVyCi0gICAgICAgIGVuZAotICAgICAg
ICBAYWRkaXRpb25hbEVudiA9IFtdCi0gICAgZW5kCi0gICAgCi0gICAgZGVmIHNoZWxsQ29tbWFu
ZAotICAgICAgICAjIEl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgdGhlIHRlc3QgaXMg
YWN0dWFsbHkgcnVuIGluIGEgc3Vic2hlbGwsIHNvIGlmIHdlIGNoYW5nZSBkaXJlY3RvcnkKLSAg
ICAgICAgIyBpbiB0aGUgc3Vic2hlbGwgd2hlbiB3ZSByZXR1cm4gd2Ugd2lsbCBiZSBpbiBvdXIg
b3JpZ2luYWwgZGlyZWN0b3J5LiBUaGlzIGlzIG5pY2UgYmVjYXVzZSB3ZSBkb24ndAotICAgICAg
ICAjIGhhdmUgdG8gYmVuZCBvdmVyIGJhY2t3YXJkcyB0byBkbyB0aGluZ3MgcmVsYXRpdmUgdG8g
dGhlIHJvb3QuCi0gICAgICAgIHNjcmlwdCA9ICIoY2QgLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNj
YXBlKEBkaXJlY3RvcnkudG9fcyl9ICYmICgiCi0gICAgICAgICgkZW52VmFycyArIGFkZGl0aW9u
YWxFbnYpLmVhY2ggeyB8dmFyfCBzY3JpcHQgKz0gImV4cG9ydCAiIDw8IHZhciA8PCAiOyAiIH0K
LSAgICAgICAgc2NyaXB0ICs9ICJcIiRAXCIgIiArIGVzY2FwZUFsbChAYXJndW1lbnRzKSArICIp
KSIKLSAgICAgICAgcmV0dXJuIHNjcmlwdAotICAgIGVuZAotICAgIAotICAgIGRlZiByZXByb1Nj
cmlwdENvbW1hbmQKLSAgICAgICAgIyBXZSBoYXZlIHRvIGZpbmQgb3VyIHdheSBiYWNrIHRvIHRo
ZSAucnVubmVyIGRpcmVjdG9yeSBzaW5jZSB0aGF0J3Mgd2hlcmUgYWxsIG9mIHRoZSByZWxhdGl2
ZQotICAgICAgICAjIHBhdGhzIGFzc3VtZSB0aGV5IHN0YXJ0IG91dCBmcm9tLgotICAgICAgICBz
Y3JpcHQgPSAiQ1VSUkVOVF9ESVI9XCIkKCBjZCBcIiQoIGRpcm5hbWUgXCIke0JBU0hfU09VUkNF
WzBdfVwiIClcIiAmJiBwd2QgKVwiXG4iCi0gICAgICAgIHNjcmlwdCArPSAiY2QgJENVUlJFTlRf
RElSXG4iCi0gICAgICAgIFBhdGhuYW1lLm5ldyhAbmFtZSkuZGlybmFtZS5lYWNoX2ZpbGVuYW1l
IHsKLSAgICAgICAgICAgIHwgcGF0aENvbXBvbmVudCB8Ci0gICAgICAgICAgICBzY3JpcHQgKz0g
ImNkIC4uXG4iCi0gICAgICAgIH0KLSAgICAgICAgc2NyaXB0ICs9ICJjZCAucnVubmVyXG4iCi0K
LSAgICAgICAgc2NyaXB0ICs9ICJleHBvcnQgRFlMRF9GUkFNRVdPUktfUEFUSD0kKGNkICN7JHRl
c3RpbmdGcmFtZXdvcmtQYXRoLmRpcm5hbWV9OyBwd2QpXG4iCi0gICAgICAgIHNjcmlwdCArPSAi
ZXhwb3J0IEpTQ1RFU1RfdGltZW91dD0je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoRU5WWydKU0NU
RVNUX3RpbWVvdXQnXSl9XG4iCi0gICAgICAgIHNjcmlwdCArPSAiZXhwb3J0IEpTQ1RFU1RfaGFy
ZFRpbWVvdXQ9I3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEVOVlsnSlNDVEVTVF9oYXJkVGltZW91
dCddKX1cbiIKLSAgICAgICAgc2NyaXB0ICs9ICJleHBvcnQgSlNDVEVTVF9tZW1vcnlMaW1pdD0j
e1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoRU5WWydKU0NURVNUX21lbW9yeUxpbWl0J10pfVxuIgot
ICAgICAgICAkZW52VmFycy5lYWNoIHsgfHZhcnwgc2NyaXB0ICs9ICJleHBvcnQgIiA8PCB2YXIg
PDwgIlxuIiB9Ci0gICAgICAgIHNjcmlwdCArPSAiI3tzaGVsbENvbW1hbmR9IHx8IGV4aXQgMSIK
LSAgICAgICAgImVjaG8gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKHNjcmlwdCl9ID4gI3tTaGVs
bHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZS5uZXcoIi4uIikgKyBAbmFtZSkudG9fcyl9Igot
ICAgIGVuZAotCi0gICAgZGVmIHN0YXR1c0NvbW1hbmQoc3RhdHVzKQotICAgICAgICAiZWNobyAj
eyRydW5VbmlxdWVJZH0gJGV4aXRDb2RlICN7c3RhdHVzfSA+ICN7c3RhdHVzRmlsZX0iCi0gICAg
ZW5kCi0KLSAgICBkZWYgZmFpbENvbW1hbmQKLSAgICAgICAgIiN7c3RhdHVzQ29tbWFuZChTVEFU
VVNfRklMRV9GQUlMKX07IGVjaG8gRkFJTDogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1l
KX07ICIgKyByZXByb1NjcmlwdENvbW1hbmQKLSAgICBlbmQKLSAgICAKLSAgICBkZWYgc3VjY2Vz
c0NvbW1hbmQKLSAgICAgICAgY29tbWFuZCA9ICIiCi0gICAgICAgIGV4ZWN1dGlvblRpbWVNZXNz
YWdlID0gIiIKLSAgICAgICAgaWYgJHJlcG9ydEV4ZWN1dGlvblRpbWUKLSAgICAgICAgICAgIGV4
ZWN1dGlvblRpbWVNZXNzYWdlID0gIiAkKCgkU0VDT05EUyAtICRTVEFSVF9USU1FKSlzIgotICAg
ICAgICBlbmQKLSAgICAgICAgaWYgJHByb2dyZXNzTWV0ZXIgb3IgJHJlcG9ydEV4ZWN1dGlvblRp
bWUgb3IgJHZlcmJvc2l0eSA+PSAyCi0gICAgICAgICAgICBjb21tYW5kID0gImVjaG8gUEFTUzog
I3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX0je2V4ZWN1dGlvblRpbWVNZXNzYWdlfSIK
LSAgICAgICAgZW5kCi0gICAgICAgICIje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfUEFTUyl9
OyAje2NvbW1hbmR9IgotICAgIGVuZAotICAgIAotICAgIGRlZiBzdGF0dXNGaWxlCi0gICAgICAg
ICIje1NUQVRVU19GSUxFX1BSRUZJWH0je0BpbmRleH0iCi0gICAgZW5kCi0gICAgCi0gICAgZGVm
IHdyaXRlUnVuU2NyaXB0KGZpbGVuYW1lKQotICAgICAgICBGaWxlLm9wZW4oZmlsZW5hbWUsICJ3
IikgewotICAgICAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgICAgIGlmICRyZXBvcnRFeGVjdXRp
b25UaW1lCi0gICAgICAgICAgICAgICAgb3V0cC5wdXRzICJTVEFSVF9USU1FPSRTRUNPTkRTIgot
ICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBvdXRwLnB1dHMgImVjaG8gUnVubmluZyAje1No
ZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfSIKLSAgICAgICAgICAgICMKLSAgICAgICAgICAg
ICMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgIyB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICAg
ICAjIHwgfCArLS0tLS0tLS0tLS0tLS0rICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgfCAg
ICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICAgICMgfCB8IHwgY21kIDEgLS0tLT4gMXwtLS0+
IHwwIC0tPiBvdXRIIDEgLS0tPiA0fC0+IDR8LS0tLS0tLS0tLS0tLS0tPiAxfAotICAgICAgICAg
ICAgIyB8IHwgfCAgICAgMiAvICAgICAgfCAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgIHwg
ICArLS0tLS0tLS0tLS0rICB8Ci0gICAgICAgICAgICAjIHwgfCB8ZWNobyAkPyAwIC0+IDN8LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiAxfC0+IHwwIHJlYWQgeHMgIHwgIHwKLSAgICAgICAg
ICAgICMgfCB8ICstLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgfCAgZXhpdCAkeHMgfCAgfAotICAgICAgICAgICAgIyB8IHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICArLS0tLS0tLS0tLS0rICB8Ci0gICAgICAg
ICAgICAjIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KyAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICAgICMgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAg
ICAgICAgIyBGcm9tIHRoZSB0b3AgZG93biAoaS5lLiByZWFkaW5nIGZyb20gdGhlIG91dGVyIGV4
cHJlc3Npb24gaW53YXJkcyk6Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIC0gUmVkaXJl
Y3QgRkQgNCB0byBvdXIgc3Rkb3V0Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIC0gQnVp
bGQgYSBwaXBlIG9mIHR3byBjb21tYW5kIHNlcXVlbmNlcy4gVGhlCi0gICAgICAgICAgICAjICAg
cmlnaHQtaGFuZC1zaWRlIHNlcXVlbmNlIHJlYWRzIGEgbnVtYmVyIGZyb20gc3RkaW4gYW5kCi0g
ICAgICAgICAgICAjICAgZXhpdHMgd2l0aCBpdC4gU2luY2UgaXQncyB0aGUgbGFzdCBjb21tYW5k
IGluIHRoZQotICAgICAgICAgICAgIyAgIHBpcGVsaW5lLCB0aGlzIHdpbGwgYmUgdGhlIHZhbHVl
IG9mICQ/IGFmdGVyIHRoZQotICAgICAgICAgICAgIyAgIHBpcGVsaW5lIGNvbXBsZXRlcy4KLSAg
ICAgICAgICAgICMKLSAgICAgICAgICAgICMgLSBJbiB0aGUgbGVmdC1oYW5kLXNpZGUgc2VxdWVu
Y2UsIHJlZGlyZWN0IEZEIDMgdG8gRkQgMS4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMg
LSBCdWlsZCBhIHBpcGUgb2YgdHdvIGNvbW1hbmRzCi0gICAgICAgICAgICAjICAgLSBydW4gc2hl
bGxDb21tYW5kLCB3cml0aW5nIGl0cyBleGl0IGNvZGUgdG8gRkQgMy4KLSAgICAgICAgICAgICMg
ICAtIHJ1biB0aGUgb3V0cHV0SGFuZGxlciwgd2l0aCBpdHMgc3RkaW4gY29taW5nIGZyb20KLSAg
ICAgICAgICAgICMgICAgIHRoZSBwaXBlLCByZWRpcmVjdGluZyBpdHMgb3V0cHV0IHRvIEZEIDQu
IFRoZQotICAgICAgICAgICAgIyAgICAgb3V0cHV0SGFuZGxlciBuZWVkcyB0byBiZSBpbiBhIGNv
bW1hbmQgc2VxdWVuY2UKLSAgICAgICAgICAgICMgICAgIChpLmUuIGluIHsgY21kOyAuLi59KSBh
cyBpdCBtYXkgZG8gaXRzIG93bgotICAgICAgICAgICAgIyAgICAgcmVkaXJlY3Rpb25zLgotICAg
ICAgICAgICAgIwotICAgICAgICAgICAgIyBXZSBkbyBhbGwgdGhpcwotICAgICAgICAgICAgIyAt
IHRvIGF2b2lkIGhhdmluZyB0byB1c2UgYSB0ZW1wb3JhcnkgZmlsZSBmb3IgdGhlIGV4aXQgY29k
ZQotICAgICAgICAgICAgIyAtIHRvIGtlZXAgd2l0aGluIHRoZSBib3VuZHMgb2YgUE9TSVggc2gg
KGkuZS4gY2FuJ3QgdXNlCi0gICAgICAgICAgICAjICAgUElQRVNUQVRVUykKLSAgICAgICAgICAg
IGNtZCA9ICJ7IHsgeyB7ICN7c2hlbGxDb21tYW5kfSAyPiYxOyBlY2hvICQ/ID4mMzsgfSB8IHsg
I3tvdXRwdXRIYW5kbGVyLmNhbGwoQG5hbWUpfSA7fSA+JjQ7IH0gMz4mMTsgfSB8IHsgcmVhZCB4
czsgZXhpdCAkeHM7IH0gfSA0PiYxXG5leGl0Q29kZT0kP1xuIgotICAgICAgICAgICAgaWYgJHZl
cmJvc2l0eSA+PSAzCi0gICAgICAgICAgICAgICAgb3V0cC5wdXRzICJlY2hvICN7U2hlbGx3b3Jk
cy5zaGVsbGVzY2FwZShjbWQpfSIKLSAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgb3V0cC5w
dXRzIGNtZAotICAgICAgICAgICAgQGVycm9ySGFuZGxlci5jYWxsKG91dHAsIHNlbGYpCi0gICAg
ICAgIH0KLSAgICBlbmQKLWVuZAotCi1kZWYgcHJlcGFyZVNoZWxsVGVzdFJ1bm5lcgotICAgIEZp
bGVVdGlscy5jcCBTQ1JJUFRTX1BBVEggKyAianNjLXN0cmVzcy10ZXN0LWhlbHBlcnMiICsgInNo
ZWxsLXJ1bm5lci5zaCIsICRydW5uZXJEaXIgKyAicnVuc2NyaXB0IgotZW5kCi0KLWRlZiBvdXRw
dXRfdGFyZ2V0KG91dHAsIHBsYW4sIHByZXJlcXMpCi0gICAgaW5kZXggPSBwbGFuLmluZGV4Ci0g
ICAgdGFyZ2V0ID0gInRlc3RfZG9uZV8je2luZGV4fSIKLSAgICBvdXRwLnB1dHMgIiN7dGFyZ2V0
fTogI3twcmVyZXFzLmpvaW4oIiAiKX0iCi0gICAgb3V0cC5wdXRzICJcdHNoIHRlc3Rfc2NyaXB0
XyN7aW5kZXh9IgotICAgIHRhcmdldAotZW5kCi0KLWRlZiBwcmVwYXJlTWFrZVRlc3RSdW5uZXIo
cmVtb3RlSW5kZXgpCi0gICAgIyBUaGUgZ29hbHMgb2Ygb3VyIHBhcmFsbGVsIHRlc3QgcnVubmVy
IGFyZSBzY2FsYWJpbGl0eSBhbmQgc2ltcGxpY2l0eS4gVGhlCi0gICAgIyBzaW1wbGljaXR5IHBh
cnQgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudC4gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGhh
dmUKLSAgICAjIGEgZnVsbC10aW1lIGNvbnRyaWJ1dG9yIGp1c3QgcGhpbG9zb3BoaXNpbmcgYWJv
dXQgcGFyYWxsZWwgdGVzdGluZy4KLSAgICAjCi0gICAgIyBBcyBzdWNoLCB3ZSBqdXN0IHBhc3Mg
b2ZmIGFsbCBvZiB0aGUgaGFyZCB3b3JrIHRvICdtYWtlJy4gVGhpcwotICAgICMgY3JlYXRlcyBh
IGR1bW15IGRpcmVjdG9yeSAoIiRvdXRwdXREaXIvLnJ1bm5lciIpIGluIHdoaWNoIHdlCi0gICAg
IyBjcmVhdGUgYSBkdW1teSBNYWtlZmlsZS4gVGhlIE1ha2VmaWxlIGhhcyBhICdwYXJhbGxlbCcg
cnVsZSB0aGF0Ci0gICAgIyBkZXBlbmRzIGFsbCB0ZXN0cywgb3RoZXIgdGhhbiB0aGUgb25lcyBt
YXJrZWQgJ3NlcmlhbCcuIFRoZQotICAgICMgc2VyaWFsIHRlc3RzIGFyZSBhcnJhbmdlZCBpbiBh
IGNoYWluOyB0aGUgbGFzdCB0YXJnZXQgaW4gdGhlCi0gICAgIyBzZXJpYWwgY2hhaW4gZGVwZW5k
cyBvbiAncGFyYWxsZWwnIGFuZCAnYWxsJyBkZXBlbmRzIG9uIHRoZSBoZWFkCi0gICAgIyBvZiB0
aGUgY2hhaW4uIFJ1bm5pbmcgJ21ha2UgLWogPHdoYXRldmVyPicgb24gdGhpcyBNYWtlZmlsZQot
ICAgICMgcmVzdWx0cyBpbiAnbWFrZScgZG9pbmcgYWxsIG9mIHRoZSBoYXJkIHdvcms6Ci0gICAg
IwotICAgICMgLSBMb2FkIGJhbGFuY2luZyBqdXN0IHdvcmtzLiBNb3N0IHN5c3RlbXMgaGF2ZSBh
IGdyZWF0IGxvYWQgYmFsYW5jZXIgaW4KLSAgICAjICAgJ21ha2UnLiBJZiB5b3VyIHN5c3RlbSBk
b2Vzbid0IHRoZW4ganVzdCBpbnN0YWxsIGEgcmVhbCAnbWFrZScuCi0gICAgIwotICAgICMgLSBJ
bnRlcnJ1cHRpb25zIGp1c3Qgd29yay4gRm9yIGV4YW1wbGUgQ3RybC1DIGhhbmRsaW5nIGluICdt
YWtlJyBpcwotICAgICMgICBleGFjdGx5IHJpZ2h0LiBZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBh
Ym91dCB6b21iaWUgcHJvY2Vzc2VzLgotICAgICMKLSAgICAjIFdlIHRoZW4gZG8gc29tZSB0cmlj
a3MgdG8gbWFrZSBmYWlsdXJlIGRldGVjdGlvbiB3b3JrIGFuZCB0byBtYWtlIHRoaXMKLSAgICAj
IHRvdGFsbHkgc291bmQuIElmIGEgdGVzdCBmYWlscywgd2UgZG9uJ3Qgd2FudCB0aGUgd2hvbGUg
J21ha2UnIGpvYiB0bwotICAgICMgc3RvcC4gV2UgYWxzbyBkb24ndCBoYXZlIGFueSBmYWNpbGl0
eSBmb3IgbWFrZWZpbGUtZXNjYXBpbmcgb2YgcGF0aCBuYW1lcy4KLSAgICAjIFdlIGRvIGhhdmUg
c3VjaCBhIHRoaW5nIGZvciBzaGVsbC1lc2NhcGluZywgdGhvdWdoLiBXZSBmaXggYm90aCBwcm9i
bGVtcwotICAgICMgYnkgaGF2aW5nIHRoZSBhY3R1YWwgd29yayBmb3IgZWFjaCBvZiB0aGUgdGVz
dCBydWxlcyBiZSBkb25lIGluIGEgc2hlbGwKLSAgICAjIHNjcmlwdCBvbiB0aGUgc2lkZS4gVGhl
cmUgaXMgb25lIHN1Y2ggc2NyaXB0IHBlciB0ZXN0LiBUaGUgc2NyaXB0IHJlc3BvbmRzCi0gICAg
IyB0byBmYWlsdXJlIGJ5IHByaW50aW5nIHNvbWV0aGluZyBvbiB0aGUgY29uc29sZSBhbmQgdGhl
biB0b3VjaGluZyBhCi0gICAgIyBmYWlsdXJlIGZpbGUgZm9yIHRoYXQgdGVzdCwgYnV0IHRoZW4g
c3RpbGwgcmV0dXJucyAwLiBUaGlzIG1ha2VzICdtYWtlJwotICAgICMgY29udGludWUgcGFzdCB0
aGF0IGZhaWx1cmUgYW5kIGNvbXBsZXRlIGFsbCB0aGUgdGVzdHMgYW55d2F5LgotICAgICMKLSAg
ICAjIEluIHRoZSBlbmQsIHRoaXMgc2NyaXB0IGNvbGxlY3RzIGFsbCBvZiB0aGUgZmFpbHVyZXMg
Ynkgc2VhcmNoaW5nIGZvcgotICAgICMgZmlsZXMgaW4gdGhlIC5ydW5uZXIgZGlyZWN0b3J5IHdo
b3NlIG5hbWUgbWF0Y2hlcyAvXnRlc3RfZmFpbF8vLCB3aGVyZQotICAgICMgdGhlIHRoaW5nIGFm
dGVyIHRoZSAnZmFpbF8nIGlzIHRoZSB0ZXN0IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRo
YXQKLSAgICAjIHdvdWxkIGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0aGV5IGRl
dGVjdCBmYWlsdXJlLiBXZSdyZQotICAgICMgYmFzaWNhbGx5IHVzaW5nIHRoZSBmaWxlc3lzdGVt
IGFzIGEgY29uY3VycmVudCBkYXRhYmFzZSBvZiB0ZXN0IGZhaWx1cmVzLgotICAgICMgRXZlbiBp
ZiB0d28gdGVzdHMgZmFpbCBhdCB0aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5n
IGRpZmZlcmVudAotICAgICMgZmlsZXMgd2Ugd29uJ3QgbWlzcyBhbnkgZmFpbHVyZXMuCi0gICAg
c2VyaWFsUGxhbnMgPSB7fQotICAgICRzZXJpYWxSdW5saXN0LmVhY2ggeyB8cHwgc2VyaWFsUGxh
bnNbcF0gPSBuaWwgfQotICAgIHJ1blBsYW5zID0gW10KLSAgICBzZXJpYWxSdW5QbGFucyA9IFtd
Ci0gICAgJHJ1bmxpc3QuZWFjaCB7Ci0gICAgICAgIHwgcGxhbiB8Ci0gICAgICAgIGlmICEkcmVt
b3RlIG9yIHBsYW4uaW5kZXggJSAkcmVtb3RlSG9zdHMubGVuZ3RoID09IHJlbW90ZUluZGV4Ci0g
ICAgICAgICAgICBpZiBzZXJpYWxQbGFucy5oYXNfa2V5PyhwbGFuKQotICAgICAgICAgICAgICAg
IHNlcmlhbFJ1blBsYW5zIDw8IHBsYW4KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBydW5QbGFucyA8PCBwbGFuCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgZW5kCi0gICAgfQot
Ci0gICAgRmlsZS5vcGVuKCRydW5uZXJEaXIgKyAiTWFrZWZpbGUuI3tyZW1vdGVJbmRleH0iLCAi
dyIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgaWYgc2VyaWFsUnVuUGxhbnMuZW1wdHk/
Ci0gICAgICAgICAgICBvdXRwLnB1dHMoImFsbDogcGFyYWxsZWwiKQotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBzZXJpYWxQcmVyZXEgPSAidGVzdF9kb25lXyN7c2VyaWFsUnVuUGxhbnNbLTFd
LmluZGV4fSIKLSAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiAje3NlcmlhbFByZXJlcX0iKQot
ICAgICAgICAgICAgcHJldl90YXJnZXQgPSAicGFyYWxsZWwiCi0gICAgICAgICAgICBzZXJpYWxS
dW5QbGFucy5lYWNoIHsKLSAgICAgICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgICAg
IHByZXZfdGFyZ2V0ID0gb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbcHJldl90YXJnZXRdKQot
ICAgICAgICAgICAgfQotICAgICAgICBlbmQKLSAgICAgICAgcGFyYWxsZWxUYXJnZXRzID0gcnVu
UGxhbnMuY29sbGVjdCB7Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgb3V0cHV0
X3RhcmdldChvdXRwLCBwbGFuLCBbXSkKLSAgICAgICAgfQotICAgICAgICBvdXRwLnB1dHMoInBh
cmFsbGVsOiAiICsgcGFyYWxsZWxUYXJnZXRzLmpvaW4oIiAiKSkKLSAgICB9Ci1lbmQKLQotZGVm
IHByZXBhcmVSdWJ5VGVzdFJ1bm5lcgotICAgIEZpbGUub3BlbigkcnVubmVyRGlyICsgInJ1bnNj
cmlwdCIsICJ3IikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICAkcnVubGlzdC5lYWNoIHsK
LSAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAgICAgICAgICBvdXRwLnB1dHMgInByaW50IGBzaCB0
ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9IDI+JjFgIgotICAgICAgICB9Ci0gICAgfQotZW5kCi0K
LWRlZiB0ZXN0UnVubmVyQ29tbWFuZChyZW1vdGVJbmRleD0wKQotICAgIGNhc2UgJHRlc3RSdW5u
ZXJUeXBlCi0gICAgd2hlbiA6c2hlbGwKLSAgICAgICAgY29tbWFuZCA9ICJzaCBydW5zY3JpcHQi
Ci0gICAgd2hlbiA6bWFrZQotICAgICAgICBjb21tYW5kID0gIm1ha2UgLWogI3skbnVtQ2hpbGRQ
cm9jZXNzZXN9IC1zIC1mIE1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IgotICAgIHdoZW4gOnJ1YnkK
LSAgICAgICAgY29tbWFuZCA9ICJydWJ5IHJ1bnNjcmlwdCIKLSAgICBlbHNlCi0gICAgICAgIHJh
aXNlICJVbmtub3duIHRlc3QgcnVubmVyIHR5cGU6ICN7JHRlc3RSdW5uZXJUeXBlLnRvX3N9Igot
ICAgIGVuZAotICAgIHJldHVybiBjb21tYW5kCi1lbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlzdGF0aW9uLnJiIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItcGxheXN0YXRpb24u
cmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMmJmNDU1OGFkODUwMGE2ZTBhNzAw
NDI3OTNjMzhjNDI5OGQ0YjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXIt
cGxheXN0YXRpb24ucmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MjEgKzAsMCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4g
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1yZXF1aXJlICdvcGVuMycKLQotJGhhc0RpZmYg
PSBmYWxzZQotaWYgKCRob3N0T1MgPT0gJ3dpbmRvd3MnIHx8ICRob3N0T1MgPT0gJ3BsYXlzdGF0
aW9uJykKLSAgICBvdXQsIGVyciwgc3RhdHVzID0gT3BlbjMuY2FwdHVyZTMoIndoZXJlIiwgIi9x
IiwgImRpZmYiKQotICAgICRoYXNEaWZmID0gc3RhdHVzLnN1Y2Nlc3M/Ci1lbHNlCi0gICAgb3V0
LCBlcnIsIHN0YXR1cyA9IE9wZW4zLmNhcHR1cmUzKCJ3aGljaCIsICJkaWZmIikKLSAgICAkaGFz
RGlmZiA9IHN0YXR1cy5zdWNjZXNzPwotZW5kCi0KLSMgUHJlZml4IGVhY2ggbGluZSBvZiBzdHIg
d2l0aCB0aGUgbmFtZQotZGVmIHByZWZpeFN0cmluZyhzdHIsIG5hbWUpCi0gICAgIiN7c3RyfS5l
bXB0eT8gPyBcIlwiIDogI3tzdHJ9LmdzdWIoL14vbSwgXCIje25hbWV9OiBcIikiCi1lbmQKLQot
ZGVmIHNpbGVudE91dHB1dEhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgbmFtZSB8
Ci0gICAgICAgIDw8LUVORF9TSUxFTlRfT1VUUFVUX0hBTkRMRVIKLSAgICAgICAgb3V0ID0gb3V0
ICsgZXJyCi0gICAgICAgIGVyciA9IG5pbAotICAgICAgICBTVERPVVQucHV0cyAje3ByZWZpeFN0
cmluZygib3V0IiwgbmFtZSl9IGlmICghb3V0LmVtcHR5PykKLSAgICAgICAgRmlsZS5vcGVuKCIj
e1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIp
KS50b19zKX0iLCAidyIpIGRvIHxvdXRfZmlsZXwKLSAgICAgICAgICAgIG91dF9maWxlLnB1dHMg
b3V0Ci0gICAgICAgIGVuZAotICAgICAgICBFTkRfU0lMRU5UX09VVFBVVF9IQU5ETEVSCi0gICAg
fQotZW5kCi0KLSMgT3V0cHV0IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRv
IHByb2R1Y2UgbWVhbmluZ2Z1bCBvdXRwdXQuCi1kZWYgbm9pc3lPdXRwdXRIYW5kbGVyCi0gICAg
UHJvYy5uZXcgewotICAgICAgICB8IG5hbWUgfAotICAgICAgICA8PC1FTkRfTk9JU1lfT1VUUFVU
X0hBTkRMRVIKLSAgICAgICAgb3V0ID0gb3V0ICsgZXJyCi0gICAgICAgIGVyciA9IG5pbAotICAg
ICAgICBGaWxlLm9wZW4oIiN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikg
KyAobmFtZSArICIub3V0IikpLnRvX3MpfSIsICJ3IikgZG8gfG91dF9maWxlfAotICAgICAgICAg
ICAgb3V0X2ZpbGUucHV0cyBvdXQKLSAgICAgICAgZW5kCi0gICAgICAgIEVORF9OT0lTWV9PVVRQ
VVRfSEFORExFUgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQg
ZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMuCi0jIFRo
aXMgaXMgdXNlZnVsIHdoZW4gYSB0ZXN0IGlzIGV4cGVjdGVkIHRvIGZhaWwuCi1kZWYgc2ltcGxl
RXJyb3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAg
ICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHBy
aW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0
YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICAg
ICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKLSAgICAg
ICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5w
dXRzICJlbmRcbiIKLSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0
IGZhaWwgZXhhY3RseSB3aGVuIHRoZXkgcmV0dXJuIHplcm8gZXhpdCBzdGF0dXMuCi1kZWYgZXhw
ZWN0ZWRGYWlsRXJyb3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBs
YW4gfAotICAgICAgICBvdXRwLnB1dHMgImlmIHN1Y2Nlc3NcbiIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNv
ZGUgMFxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAg
ICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgotICAgICAg
ICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1
dHMgImVuZFxuIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQg
ZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMgYW5kIHBy
b2R1Y2UKLSMgbG90cyBvZiBzcGV3LiBUaGlzIHdpbGwgZWNobyB0aGF0IHNwZXcgd2hlbiB0aGUg
dGVzdCBmYWlscy4KLWRlZiBub2lzeUVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAg
ICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2Vzc1xuIgotICAg
ICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5h
bWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5n
KCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSBcI3tzdGF0dXN9XFxuXCIiLCBwbGFuLm5h
bWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1h
bmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIg
KyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICAgfQot
ZW5kCi0KLSBkZWYgZmFsbGJhY2tEaWZmKGV4cGVjdGVkLCBvdXRwdXQpCi0gICAgPDwtRU5EX0ZB
TExCQUNLX0RJRkYKLSAgICAgICAgICMgRmFsbGJhY2sgZGlmZiBmb3Igd2hlbiBkaWZmKDEpIGlz
bid0IGF2YWlsYWJsZQotICAgICAgICAgZGlmZnMgPSBbXQotICAgICAgICAgbGluZV9udW1iZXIg
PSAwCi0gICAgICAgICBGaWxlLm9wZW4oIiN7ZXhwZWN0ZWR9IikgZG8gfCBleHBlY3RlZCB8Ci0g
ICAgICAgICAgICAgRmlsZS5vcGVuKCIje291dHB1dH0iKSBkbyB8IGFjdHVhbCB8Ci0gICAgICAg
ICAgICAgICAgIGxvb3AgZG8KLSAgICAgICAgICAgICAgICAgICAgIGwxID0gZXhwZWN0ZWQuZ2V0
cwotICAgICAgICAgICAgICAgICAgICAgbDIgPSBhY3R1YWwuZ2V0cwotICAgICAgICAgICAgICAg
ICAgICAgaWYgKGwxICE9IGwyKQotICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZzLnB1c2go
W2xpbmVfbnVtYmVyLCBsMSwgbDJdKQotICAgICAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAg
ICAgICAgICAgICAgICBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyICsgMQotICAgICAgICAgICAg
ICAgICAgICAgYnJlYWsgaWYgKGwxID09IG5pbCAmJiBsMiA9PSBuaWwpCi0gICAgICAgICAgICAg
ICAgIGVuZAotICAgICAgICAgICAgIGVuZAotICAgICAgICAgZW5kCi0gICAgICAgICBpc0RpZmZl
cmVudCA9ICFkaWZmcy5lbXB0eT8KLSAgICAgICAgIGRpZmZPdXQgPSBkaWZmcy5tYXAgewotICAg
ICAgICAgICAgIHwgZGlmZiB8Ci0gICAgICAgICAgICAgIkBAIC1cI3tkaWZmWzBdfSwxICtcI3tk
aWZmWzBdfSwxIEBAXFxuIiArCi0gICAgICAgICAgICAgKGRpZmZbMV0gPyAiLVwje2RpZmZbMV19
IiA6ICIiKSArCi0gICAgICAgICAgICAgKGRpZmZbMl0gPyAiK1wje2RpZmZbMl19IiA6ICIiKQot
ICAgICAgICB9LmpvaW4oIiIpCi0gICAgRU5EX0ZBTExCQUNLX0RJRkYKLWVuZAotCi1kZWYgcnVu
RGlmZihleHBlY3RlZCwgb3V0cHV0KQotICAgIDw8LUVORF9SVU5fRElGRgotICAgICAgICBkaWZm
T3V0LCBkaWZmU3RhdHVzID0gT3BlbjMuY2FwdHVyZTIoImRpZmYiLAotICAgICAgICAgICAgIi0t
c3RyaXAtdHJhaWxpbmctY3IiLAotICAgICAgICAgICAgIi11IiwKLSAgICAgICAgICAgICIje2V4
cGVjdGVkfSIsCi0gICAgICAgICAgICAiI3tvdXRwdXR9Iik7Ci0gICAgICAgIGlzRGlmZmVyZW50
ID0gIWRpZmZTdGF0dXMuc3VjY2Vzcz8KLSAgICBFTkRfUlVOX0RJRkYKLWVuZAotCi0jIEdldCBh
IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZmlsZXMsIHVzaW5nIGRpZmYgd2hlcmUgYXZhaWxhYmxl
LCBmYWxsaW5nIGJhY2sKLSMgb24gYSBsaW1pdGVkIGNvbXBhcmlzb24gd2hlbiBkaWZmIGlzIG5v
dCBhdmFpbGFibGUKLWRlZiBnZXREaWZmKGV4cGVjdGVkLCBvdXRwdXQpCi0gICAgaWYgJGhhc0Rp
ZmYKLSAgICAgICAgcnVuRGlmZihleHBlY3RlZCwgb3V0cHV0KQotICAgIGVsc2UKLSAgICAgICAg
ZmFsbGJhY2tEaWZmKGV4cGVjdGVkLG91dHB1dCkKLSAgICBlbmQKLWVuZAotCi0jIEVycm9yIGhh
bmRsZXIgZm9yIHRlc3RzIHRoYXQgZGlmZiB0aGVpciBvdXRwdXQgd2l0aCBzb21lIGV4cGVjdGF0
aW9uLgotZGVmIGRpZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRGaWxlbmFtZSkKLSAgICBQcm9jLm5l
dyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hl
bGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQi
KSkudG9fcykKLQotICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzXG4iCi0gICAgICAgIG91
dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAi
XG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJS
T1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAi
XG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAg
IG91dHAucHV0cyAiZWxzaWYgRmlsZS5leGlzdHM/KFwiLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNj
YXBlKGV4cGVjdGVkRmlsZW5hbWUpfVwiKVxuIgotICAgICAgICBvdXRwLnB1dHMgZ2V0RGlmZigi
Li4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVkRmlsZW5hbWUpfSIsIG91dHB1dEZp
bGVuYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICBpZiBpc0RpZmZlcmVudFxuIgotICAgICAg
ICBvdXRwLnB1dHMgIiAgICAgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJESUZGIEZBSUxV
UkUhXFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAg
cHJpbnQgIiArIHByZWZpeFN0cmluZygiZGlmZk91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAg
ICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRw
LnB1dHMgIiAgICBlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uc3Vj
Y2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZW5kIgotICAgICAgICBvdXRwLnB1
dHMgImVsc2VcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmlu
ZygiXCJOTyBFWFBFQ1RBVElPTiFcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91
dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAi
XG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAg
IG91dHAucHV0cyAiZW5kIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3Rz
IHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIuIFRoaXMgaXMgdXNlZCBieSBN
b3ppbGxhCi0jIHRlc3RzLgotZGVmIG1vemlsbGFFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7
Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3Nc
biIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0Iiwg
cGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZp
eFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzfVxcblwiIiwg
cGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZh
aWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzaWYgL2ZhaWxlZCEvaSA9fiBvdXRcbiIK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJEZXRlY3Rl
ZCBmYWlsdXJlczpcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAi
ICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAg
ICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0
cyAiZWxzZVxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFu
ZAotICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRs
ZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIsIGFuZCBh
cmUgZXhwZWN0ZWQgdG8KLSMgZmFpbC4gVGhpcyBpcyB1c2VkIGJ5IE1vemlsbGEgdGVzdHMuCi1k
ZWYgbW96aWxsYUZhaWxFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0
cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3NcbiIKLSAgICAgICAgb3V0
cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJl
bHNpZiAvZmFpbGVkIS9pID1+IG91dFxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxh
bi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKLSAgICAgICAgb3V0
cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJOT1RJQ0U6IFlvdSBtYWRlIHRo
aXMgdGVzdCBwYXNzLCBidXQgaXQgd2FzIGV4cGVjdGVkIHRvIGZhaWxcXG5cIiIsIHBsYW4ubmFt
ZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0g
ICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBm
b3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBl
eHBlY3RlZCB0byBoYXZlCi0jIGFuIGV4aXQgY29kZSBvZiAzLgotZGVmIG1vemlsbGFFeGl0M0Vy
cm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAg
ICAgb3V0cC5wdXRzICJpZiBzdWNjZXNzXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50
ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAu
cHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFRlc3QgZXhwZWN0ZWQg
dG8gZmFpbCwgYnV0IHJldHVybmVkIHN1Y2Nlc3NmdWxseVxcblwiIiwgcGxhbi5uYW1lKSArICJc
biIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAg
ICAgIG91dHAucHV0cyAiZWxzaWYgc3RhdHVzICE9IDMiCi0gICAgICAgIG91dHAucHV0cyAiICAg
IHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAg
IG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0
ZWQgZXhpdCBjb2RlOiBcI3tzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAg
ICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5w
dXRzICJlbHNpZiAvZmFpbGVkIS9pID1+IG91dFxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBw
cmludCAiICsgcHJlZml4U3RyaW5nKCJcIkRldGVjdGVkIGZhaWx1cmVzOlxcblwiIiwgcGxhbi5u
YW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmlu
Zygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBs
YW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAu
cHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5k
XG4iCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQg
c3VjY2VzcyBieSBzYXlpbmcgIlBhc3NlZCIgb3IgZXJyb3IgYnkgc2F5aW5nICJGQUlMRUQiLgot
IyBUaGlzIGlzIHVzZWQgYnkgQ2hha3JhIHRlc3RzLgotZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JI
YW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBv
dXRwLnB1dHMgImlmICFzdWNjZXNzXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIg
KyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0
cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBj
b2RlIFwje3N0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0
cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzaWYgL0ZB
SUxFRC9pID1+IG91dFxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4
U3RyaW5nKCJcIkRldGVjdGVkIGZhaWx1cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAg
ICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5u
YW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQK
LSAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBw
bGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICB9Ci1lbmQK
LQotY2xhc3MgUGxhbgotICAgIGF0dHJfcmVhZGVyIDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpm
YW1pbHksIDpuYW1lLCA6b3V0cHV0SGFuZGxlciwgOmVycm9ySGFuZGxlciwgOmFkZGl0aW9uYWxF
bnYKLSAgICBhdHRyX2FjY2Vzc29yIDppbmRleAotCi0gICAgZGVmIGluaXRpYWxpemUoZGlyZWN0
b3J5LCBhcmd1bWVudHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVy
KQotICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5Ci0gICAgICAgIEBhcmd1bWVudHMgPSBh
cmd1bWVudHNbMS4uLTFdCi0gICAgICAgIEBmYW1pbHkgPSBmYW1pbHkKLSAgICAgICAgQG5hbWUg
PSBuYW1lCi0gICAgICAgIEBvdXRwdXRIYW5kbGVyID0gb3V0cHV0SGFuZGxlcgotICAgICAgICBA
ZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyCi0gICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21t
YW5kT3B0aW9uc1s6aXNTbG93XQotICAgICAgICBAY3Jhc2hPSyA9ICEhJHJ1bkNvbW1hbmRPcHRp
b25zWzpjcmFzaE9LXQotICAgICAgICBpZiBAY3Jhc2hPSwotICAgICAgICAgICAgQG91dHB1dEhh
bmRsZXIgPSBub2lzeU91dHB1dEhhbmRsZXIKLSAgICAgICAgZW5kCi0gICAgICAgIEBhZGRpdGlv
bmFsRW52ID0gW10KLSAgICBlbmQKLQotICAgIGRlZiBzaGVsbENvbW1hbmQKLSAgICAgICAgbiA9
IEBuYW1lLmdzdWIoLyhcXHxcLykvLCAnXycpCi0gICAgICAgIHNjcmlwdCA9ICJvdXQgPSBuaWxc
biIKLSAgICAgICAgc2NyaXB0ICs9ICJlcnIgPSBuaWxcbiIKLSAgICAgICAgc2NyaXB0ICs9ICJz
dGF0dXMgPSAtMVxuIjsKLSAgICAgICAgc2NyaXB0ICs9ICJzdWNjZXNzID0gZmFsc2VcbiIKLSAg
ICAgICAgc2NyaXB0ICs9ICJGaWxlLm9wZW4oXCIje259LWV4aXRcIiwgXCJyXCIpIGRvIHxzdGF0
fFxuIjsKLSAgICAgICAgc2NyaXB0ICs9ICIgIHN0YXR1cyA9IHN0YXQuZ2V0cy50b19pXG4iCi0g
ICAgICAgIHNjcmlwdCArPSAiZW5kXG4iCi0gICAgICAgIHNjcmlwdCArPSAiaWYgKHN0YXR1cyA9
PSAwKVxuIgotICAgICAgICBzY3JpcHQgKz0gIiAgc3VjY2VzcyA9IHRydWVcbiIKLSAgICAgICAg
c2NyaXB0ICs9ICJlbmRcbiIKLQotICAgICAgICBzY3JpcHQgKz0gIm91dCA9IEZpbGUub3Blbihc
IiN7bn0tc3Rkb3V0XCIsIFwiclwiKS5yZWFkXG4iCi0gICAgICAgIHNjcmlwdCArPSAiZXJyID0g
RmlsZS5vcGVuKFwiI3tufS1zdGRlcnJcIiwgXCJyXCIpLnJlYWRcbiIKLSAgICAgICAgcmV0dXJu
IHNjcmlwdAotICAgIGVuZAotCi0gICAgZGVmIHJlcHJvU2NyaXB0SGVscGVyCi0gICAgICAgIHJl
dHVybiAiIgotICAgIGVuZAotCi0gICAgZGVmIHJlcHJvU2NyaXB0Q29tbWFuZAotICAgICAgICBy
ZXR1cm4gIiIKLSAgICBlbmQKLQotICAgIGRlZiBzdGF0dXNDb21tYW5kKHN0YXR1c19jb2RlKQot
ICAgICAgICAjIE1heSBiZSBjYWxsZWQgaW4gdGggcmVzY3VlIGJsb2NrLCBzbyBzdGF0dXMgaXMg
bm90Ci0gICAgICAgICMgZ3VhcmFudGVlZCB0byBiZSBzZXQ7IGlmIGl0IGlzbid0LCBzZXQgdGhl
IGV4aXQgY29kZSB0bwotICAgICAgICAjIHNvbWV0aGluZyB0aGF0J3MgY2xlYXJseSBpbnZhbGlk
LgotICAgICAgICA8PC1FTkRfU1RBVFVTX0NPTU1BTkQKLSAgICAgICAgICBGaWxlLm9wZW4oIiN7
c3RhdHVzRmlsZX0iLCAidyIpIHsgfGZ8Ci0gICAgICAgICAgICAgIGYucHV0cygiI3skcnVuVW5p
cXVlSWR9IFwje3N0YXR1cy5uaWw/ID8gOTk5OTk5OTk5IDogc3RhdHVzfSAje3N0YXR1c19jb2Rl
fSIpCi0gICAgICAgICAgfQotICAgICAgICBFTkRfU1RBVFVTX0NPTU1BTkQKLSAgICBlbmQKLQot
ICAgIGRlZiBmYWlsQ29tbWFuZAotICAgICAgICA8PC1FTkRfRkFJTF9DT01NQU5ECi0gICAgICAg
ICAgICBwcmludCAiRkFJTDogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX1cbiIKLSAg
ICAgICAgICAgICN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9GQUlMKX0KLSAgICAgICAgICAg
ICN7cmVwcm9TY3JpcHRDb21tYW5kfQotICAgICAgICBFTkRfRkFJTF9DT01NQU5ECi0gICAgZW5k
Ci0KLSAgICBkZWYgc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgaWYgJHByb2dyZXNzTWV0ZXIgb3Ig
JHZlcmJvc2l0eSA+PSAyCi0gICAgICAgICAgICA8PC1FTkRfVkVSQk9TRV9TVUNDRVNTX0NPTU1B
TkQKLSAgICAgICAgICAgICAgICBwcmludCAiUEFTUzogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBl
KEBuYW1lKX1cbiIKLSAgICAgICAgICAgICAgICAje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVf
UEFTUyl9Ci0gICAgICAgICAgICBFTkRfVkVSQk9TRV9TVUNDRVNTX0NPTU1BTkQKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgIiN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9QQVNTKX1cbiIK
LSAgICAgICAgZW5kCi0gICAgZW5kCi0KLSAgICBkZWYgc3RhdHVzRmlsZQotICAgICAgICAiI3tT
VEFUVVNfRklMRV9QUkVGSVh9I3tAaW5kZXh9IgotICAgIGVuZAotCi0gICAgZGVmIHdyaXRlUnVu
U2NyaXB0KGZpbGVuYW1lKQotICAgICAgICBqc29uZmlsZXBhcnQgPSBmaWxlbmFtZS5iYXNlbmFt
ZS50b19zICsgIi5qc29uIgotICAgICAgICBqc29uZGlyID0gZmlsZW5hbWUuZGlybmFtZS5wYXJl
bnQgKyAiLmpzb24iCi0gICAgICAgIGlmICghanNvbmRpci5leGlzdD8pCi0gICAgICAgICAgICBq
c29uZGlyLm1rZGlyCi0gICAgICAgIGVuZAotICAgICAgICBGaWxlLm9wZW4oanNvbmRpciArIGpz
b25maWxlcGFydCwgInciKSB7Ci0gICAgICAgICAgICB8b3V0cHwKLQotICAgICAgICAgICAgYmFz
ZURpciA9ICgkcnVubmVyRGlyICsgIi4uIiArIEBkaXJlY3RvcnkpLnJlYWxkaXJwYXRoCi0KLSAg
ICAgICAgICAgIG91dHAucHV0cyBKU09OLmdlbmVyYXRlKHsKLSAgICAgICAgICAgICAgICBuYW1l
OiBAbmFtZSwKLSAgICAgICAgICAgICAgICBvdXRwdXREaXI6ICRydW5uZXJEaXIsCi0gICAgICAg
ICAgICAgICAgYmFzZURpcjogYmFzZURpciwKLSAgICAgICAgICAgICAgICBlbnY6ICRlbnZWYXJz
ICsgQGFkZGl0aW9uYWxFbnYsCi0gICAgICAgICAgICAgICAgb3V0cHV0TmFtZTogQG5hbWUuZ3N1
YigvKFxcfFwvKS8sICdfJyksCi0gICAgICAgICAgICAgICAgY2hlY2tTY3JpcHQ6IGZpbGVuYW1l
LAotICAgICAgICAgICAgICAgIGFyZ3M6IEBhcmd1bWVudHMsCi0gICAgICAgICAgICAgICAgc3Rh
dHVzRmlsZTogIiN7c3RhdHVzRmlsZX0iLAotICAgICAgICAgICAgfSkKLSAgICAgICAgfQotCi0g
ICAgICAgIEZpbGUub3BlbihmaWxlbmFtZSwgInciKSB7Ci0gICAgICAgICAgICB8IG91dHAgfAot
ICAgICAgICAgICAgI291dHAucHV0cyAicHJpbnQgXCJSdW5uaW5nICN7U2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZShAbmFtZSl9XFxuXCIiCi0gICAgICAgICAgICBvdXRwLnB1dHMgIiN7cmVwcm9TY3Jp
cHRIZWxwZXJ9IgotICAgICAgICAgICAgb3V0cC5wdXRzICJiZWdpbiIKLSAgICAgICAgICAgIG91
dHAucHV0cyAicmVxdWlyZSAnb3BlbjMnIgotICAgICAgICAgICAgb3V0cC5wdXRzICJyZXF1aXJl
ICdmaWxldXRpbHMnIgotCi0gICAgICAgICAgICBjbWQgPSBzaGVsbENvbW1hbmQKLQotICAgICAg
ICAgICAgY21kICs9IEBvdXRwdXRIYW5kbGVyLmNhbGwoQG5hbWUpCi0KLSAgICAgICAgICAgIGlm
ICR2ZXJib3NpdHkgPj0gMwotICAgICAgICAgICAgICAgIG91dHAucHV0cyAicHJpbnQgXCIje1No
ZWxsd29yZHMuc2hlbGxlc2NhcGUoY21kKX1cXG5cIiIKLSAgICAgICAgICAgIGVuZAotICAgICAg
ICAgICAgb3V0cC5wdXRzIGNtZAotICAgICAgICAgICAgQGVycm9ySGFuZGxlci5jYWxsKG91dHAs
IHNlbGYpCi0gICAgICAgICAgICBvdXRwLnB1dHMgInJlc2N1ZSBSdW50aW1lRXJyb3IgPT4gZSIK
LSAgICAgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50IFwiRkFJTDogI3tTaGVsbHdvcmRzLnNo
ZWxsZXNjYXBlKEBuYW1lKX1cXG5cIiIKLSAgICAgICAgICAgIG91dHAucHV0cyAiICAgICN7c3Rh
dHVzQ29tbWFuZChTVEFUVVNfRklMRV9GQUlMKX0iCi0gICAgICAgICAgICBvdXRwLnB1dHMgImVu
ZCIKLSAgICAgICAgfQotICAgIGVuZAotZW5kCi0KLWRlZiBwcmVwYXJlUGxheVN0YXRpb25UZXN0
UnVubmVyCi0gICAgRmlsZS5vcGVuKCRydW5uZXJEaXIgKyAicnVuc2NyaXB0IiwgInciKSB7Ci0g
ICAgICAgIHwgb3V0cCB8Ci0gICAgICAgICRydW5saXN0LmVhY2ggewotICAgICAgICAgICAgfCBw
bGFuIHwKLSAgICAgICAgICAgIG91dHAucHV0cyAiLi4vLmpzb24vdGVzdF9zY3JpcHRfI3twbGFu
LmluZGV4fS5qc29uIgotICAgICAgICB9Ci0gICAgfQotZW5kCi0KLWRlZiBwcmVwYXJlU2hlbGxU
ZXN0UnVubmVyCi0gICAgcHJlcGFyZVBsYXlTdGF0aW9uVGVzdFJ1bm5lcgotZW5kCi0KLWRlZiBw
cmVwYXJlTWFrZVRlc3RSdW5uZXIocmVtb3RlSW5kZXgpCi0gICAgcHJlcGFyZVBsYXlTdGF0aW9u
VGVzdFJ1bm5lcgotZW5kCi0KLWRlZiBwcmVwYXJlUnVieVRlc3RSdW5uZXIKLSAgICBwcmVwYXJl
UGxheVN0YXRpb25UZXN0UnVubmVyCi1lbmQKLQotZGVmIHRlc3RSdW5uZXJDb21tYW5kCi0gICAg
b3B0aW9ucyA9IEVOVlsiSlNDVEVTVF9vcHRpb25zIl0KLQotICAgIGZzUm9vdCA9ICRqc2NQYXRo
LmRpcm5hbWUKLSAgICBjb21tYW5kID0gIlBsYXlTdGF0aW9uVGVzdFJ1bm5lciAje29wdGlvbnN9
IC1udW1Qcm9jZXNzZXM9I3skbnVtQ2hpbGRQcm9jZXNzZXMudG9fc30gLWV4ZT0jeyRqc2NQYXRo
fSAtZnNyb290PSN7ZnNSb290fSAtLXJ1blVuaXF1ZUlkPSN7JHJ1blVuaXF1ZUlkfSBAI3skcnVu
bmVyRGlyfS9ydW5zY3JpcHQiCi0KLSAgICBwcmludCBjb21tYW5kCi0KLSAgICByZXR1cm4gY29t
bWFuZAotZW5kCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVz
cy10ZXN0LXdyaXRlci1ydWJ5LnJiIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJl
c3MtdGVzdC13cml0ZXItcnVieS5yYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg4
ODE2YWQwYzlmMTBiNzY3NTZiODcxNjU2Zjk0OGE2ZjViMmIzNi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNj
LXN0cmVzcy10ZXN0LXdyaXRlci1ydWJ5LnJiCisrKyAvZGV2L251bGwKQEAgLTEsNDc5ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uIAotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
IyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotcmVxdWlyZSAnb3BlbjMn
Ci0KLSRoYXNEaWZmID0gZmFsc2UKLWlmICgkaG9zdE9TID09ICd3aW5kb3dzJykKLSAgICBvdXQs
IGVyciwgc3RhdHVzID0gT3BlbjMuY2FwdHVyZTMoIndoZXJlIiwgIi9xIiwgImRpZmYiKQotICAg
ICRoYXNEaWZmID0gc3RhdHVzLnN1Y2Nlc3M/Ci1lbHNlCi0gICAgb3V0LCBlcnIsIHN0YXR1cyA9
IE9wZW4zLmNhcHR1cmUzKCJ3aGljaCIsICJkaWZmIikKLSAgICAkaGFzRGlmZiA9IHN0YXR1cy5z
dWNjZXNzPwotZW5kCi0KLSMgUHJlZml4IGVhY2ggbGluZSBvZiBzdHIgd2l0aCB0aGUgbmFtZQot
ZGVmIHByZWZpeFN0cmluZyhzdHIsIG5hbWUpCi0gICAgIiN7c3RyfS5lbXB0eT8gPyBcIlwiIDog
I3tzdHJ9LmdzdWIoL14vbSwgXCIje25hbWV9OiBcIikiCi1lbmQKLQotZGVmIHNpbGVudE91dHB1
dEhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgbmFtZSB8Ci0gICAgICAgIDw8LUVO
RF9TSUxFTlRfT1VUUFVUX0hBTkRMRVIKLSAgICAgICAgb3V0ID0gb3V0ICsgZXJyCi0gICAgICAg
IGVyciA9IG5pbAotICAgICAgICBTVERPVVQucHV0cyAje3ByZWZpeFN0cmluZygib3V0IiwgbmFt
ZSl9IGlmICghb3V0LmVtcHR5PykKLSAgICAgICAgRmlsZS5vcGVuKCIje1NoZWxsd29yZHMuc2hl
bGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIpKS50b19zKX0iLCAidyIp
IGRvIHxvdXRfZmlsZXwKLSAgICAgICAgICAgIG91dF9maWxlLnB1dHMgb3V0Ci0gICAgICAgIGVu
ZAotICAgICAgICBFTkRfU0lMRU5UX09VVFBVVF9IQU5ETEVSCi0gICAgfQotZW5kCi0KLSMgT3V0
cHV0IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIHByb2R1Y2UgbWVhbmlu
Z2Z1bCBvdXRwdXQuCi1kZWYgbm9pc3lPdXRwdXRIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAg
ICAgICB8IG5hbWUgfAotICAgICAgICA8PC1FTkRfTk9JU1lfT1VUUFVUX0hBTkRMRVIKLSAgICAg
ICAgb3V0ID0gb3V0ICsgZXJyCi0gICAgICAgIGVyciA9IG5pbAotICAgICAgICBGaWxlLm9wZW4o
IiN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0
IikpLnRvX3MpfSIsICJ3IikgZG8gfG91dF9maWxlfAotICAgICAgICAgICAgb3V0X2ZpbGUucHV0
cyBvdXQKLSAgICAgICAgZW5kCi0gICAgICAgIEVORF9OT0lTWV9PVVRQVVRfSEFORExFUgotICAg
IH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdo
ZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMuCi0jIFRoaXMgaXMgdXNlZnVsIHdo
ZW4gYSB0ZXN0IGlzIGV4cGVjdGVkIHRvIGZhaWwuCi1kZWYgc2ltcGxlRXJyb3JIYW5kbGVyCi0g
ICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwLnB1dHMg
ImlmICFzdWNjZXNzKHN0YXR1cylcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiAr
IHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4
aXRzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAg
ICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCi0g
ICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91
dHAucHV0cyAiZW5kXG4iCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMg
dGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiB6ZXJvIGV4aXQgc3RhdHVzLgotZGVm
IGV4cGVjdGVkRmFpbEVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRw
LCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRzICJpZiBzdWNjZXNzKHN0YXR1cylcbiIKLSAgICAg
ICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBl
Y3RlZCBleGl0IGNvZGUgMFxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxz
ZVxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAg
ICAgICBvdXRwLnB1dHMgImVuZFxuIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9y
IHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBz
dGF0dXMgYW5kIHByb2R1Y2UKLSMgbG90cyBvZiBzcGV3LiBUaGlzIHdpbGwgZWNobyB0aGF0IHNw
ZXcgd2hlbiB0aGUgdGVzdCBmYWlscy4KLWRlZiBub2lzeUVycm9ySGFuZGxlcgotICAgIFByb2Mu
bmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRzICJpZiAhc3Vj
Y2VzcyhzdGF0dXMpXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhT
dHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHBy
aW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0
YXR1cy5leGl0c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxz
ZVxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAg
ICAgICBvdXRwLnB1dHMgImVuZFxuIgotICAgIH0KLWVuZAotCi0gZGVmIGZhbGxiYWNrRGlmZihl
eHBlY3RlZCwgb3V0cHV0KQotICAgIDw8LUVORF9GQUxMQkFDS19ESUZGCi0gICAgICAgICAjIEZh
bGxiYWNrIGRpZmYgZm9yIHdoZW4gZGlmZigxKSBpc24ndCBhdmFpbGFibGUKLSAgICAgICAgIGRp
ZmZzID0gW10KLSAgICAgICAgIGxpbmVfbnVtYmVyID0gMAotICAgICAgICAgRmlsZS5vcGVuKCIj
e2V4cGVjdGVkfSIpIGRvIHwgZXhwZWN0ZWQgfAotICAgICAgICAgICAgIEZpbGUub3BlbigiI3tv
dXRwdXR9IikgZG8gfCBhY3R1YWwgfAotICAgICAgICAgICAgICAgICBsb29wIGRvCi0gICAgICAg
ICAgICAgICAgICAgICBsMSA9IGV4cGVjdGVkLmdldHMKLSAgICAgICAgICAgICAgICAgICAgIGwy
ID0gYWN0dWFsLmdldHMKLSAgICAgICAgICAgICAgICAgICAgIGlmIChsMSAhPSBsMikKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWZmcy5wdXNoKFtsaW5lX251bWJlciwgbDEsIGwyXSkKLSAg
ICAgICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIg
PSBsaW5lX251bWJlciArIDEKLSAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGlmIChsMSA9PSBu
aWwgJiYgbDIgPT0gbmlsKQotICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICBlbmQK
LSAgICAgICAgIGVuZAotICAgICAgICAgaXNEaWZmZXJlbnQgPSAhZGlmZnMuZW1wdHk/Ci0gICAg
ICAgICBkaWZmT3V0ID0gZGlmZnMubWFwIHsgCi0gICAgICAgICAgICAgfCBkaWZmIHwgCi0gICAg
ICAgICAgICAgIkBAIC1cI3tkaWZmWzBdfSwxICtcI3tkaWZmWzBdfSwxIEBAXFxuIiArCi0gICAg
ICAgICAgICAgKGRpZmZbMV0gPyAiLVwje2RpZmZbMV19IiA6ICIiKSArIAotICAgICAgICAgICAg
IChkaWZmWzJdID8gIitcI3tkaWZmWzJdfSIgOiAiIikKLSAgICAgICAgfS5qb2luKCIiKQotICAg
IEVORF9GQUxMQkFDS19ESUZGCi1lbmQKLQotZGVmIHJ1bkRpZmYoZXhwZWN0ZWQsIG91dHB1dCkK
LSAgICA8PC1FTkRfUlVOX0RJRkYKLSAgICAgICAgZGlmZk91dCwgZGlmZlN0YXR1cyA9IE9wZW4z
LmNhcHR1cmUyKCJkaWZmIiwKLSAgICAgICAgICAgICItLXN0cmlwLXRyYWlsaW5nLWNyIiwKLSAg
ICAgICAgICAgICItdSIsCi0gICAgICAgICAgICAiI3tleHBlY3RlZH0iLAotICAgICAgICAgICAg
IiN7b3V0cHV0fSIpOwotICAgICAgICBpc0RpZmZlcmVudCA9ICFkaWZmU3RhdHVzLnN1Y2Nlc3M/
Ci0gICAgRU5EX1JVTl9ESUZGCi1lbmQKLQotIyBHZXQgYSBkaWZmZXJlbmNlIGJldHdlZW4gdHdv
IGZpbGVzLCB1c2luZyBkaWZmIHdoZXJlIGF2YWlsYWJsZSwgZmFsbGluZyBiYWNrCi0jIG9uIGEg
bGltaXRlZCBjb21wYXJpc29uIHdoZW4gZGlmZiBpcyBub3QgYXZhaWxhYmxlCi1kZWYgZ2V0RGlm
ZihleHBlY3RlZCwgb3V0cHV0KQotICAgIGlmICRoYXNEaWZmCi0gICAgICAgIHJ1bkRpZmYoZXhw
ZWN0ZWQsIG91dHB1dCkKLSAgICBlbHNlCi0gICAgICAgIGZhbGxiYWNrRGlmZihleHBlY3RlZCxv
dXRwdXQpCi0gICAgZW5kCi1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGRp
ZmYgdGhlaXIgb3V0cHV0IHdpdGggc29tZSBleHBlY3RhdGlvbi4KLWRlZiBkaWZmRXJyb3JIYW5k
bGVyKGV4cGVjdGVkRmlsZW5hbWUpCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBs
YW4gfAotICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBh
dGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCi0gICAgICAgIAotICAg
ICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKLSAg
ICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5l
eHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUp
ICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAg
ICAgICBvdXRwLnB1dHMgImVsc2lmIEZpbGUuZXhpc3RzPyhcIi4uLyN7U2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX1cIilcbiIKLSAgICAgICAgb3V0cC5wdXRzIGdldERp
ZmYoIi4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0iLCBvdXRw
dXRGaWxlbmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgaWYgaXNEaWZmZXJlbnRcbiIKLSAg
ICAgICAgb3V0cC5wdXRzICIgICAgICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRElGRiBG
QUlMVVJFIVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
ICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoImRpZmZPdXQiLCBwbGFuLm5hbWUpICsgIlxuIgot
ICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICIgICAgZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFu
LnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiICAgIGVuZCIKLSAgICAgICAgb3V0
cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhT
dHJpbmcoIlwiTk8gRVhQRUNUQVRJT04hXFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAg
ICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUp
ICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAg
ICAgICBvdXRwLnB1dHMgImVuZCIKLSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0
ZXN0cyB0aGF0IHJlcG9ydCBlcnJvciBieSBzYXlpbmcgImZhaWxlZCEiLiBUaGlzIGlzIHVzZWQg
YnkgTW96aWxsYQotIyB0ZXN0cy4KLWRlZiBtb3ppbGxhRXJyb3JIYW5kbGVyCi0gICAgUHJvYy5u
ZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNj
ZXNzKHN0YXR1cylcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0
cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJp
bnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3Rh
dHVzLmV4aXRzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1
dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNp
ZiAvZmFpbGVkIS9pID1+IG91dFxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsg
cHJlZml4U3RyaW5nKCJcIkRldGVjdGVkIGZhaWx1cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJc
biIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0Iiwg
cGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENv
bW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAg
ICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICAg
fQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkg
c2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0bwotIyBmYWlsLiBUaGlzIGlzIHVz
ZWQgYnkgTW96aWxsYSB0ZXN0cy4KLWRlZiBtb3ppbGxhRmFpbEVycm9ySGFuZGxlcgotICAgIFBy
b2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRzICJpZiAh
c3VjY2VzcyhzdGF0dXMpXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nl
c3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzaWYgL2ZhaWxlZCEvaSA9fiBvdXRcbiIK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVm
aXhTdHJpbmcoIlwiTk9USUNFOiBZb3UgbWFkZSB0aGlzIHRlc3QgcGFzcywgYnV0IGl0IHdhcyBl
eHBlY3RlZCB0byBmYWlsXFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1
dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgot
ICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9y
IGJ5IHNheWluZyAiZmFpbGVkISIsIGFuZCBhcmUgZXhwZWN0ZWQgdG8gaGF2ZQotIyBhbiBleGl0
IGNvZGUgb2YgMy4KLWRlZiBtb3ppbGxhRXhpdDNFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7
Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgc3VjY2Vzcyhz
dGF0dXMpXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmco
Im91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIg
KyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFRlc3QgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHJldHVy
bmVkIHN1Y2Nlc3NmdWxseVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxz
aWYgc3RhdHVzLmV4aXRzdGF0dXMgIT0gMyIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQg
IiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0
IGNvZGU6IFwje3N0YXR1cy5leGl0c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAg
ICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91
dHAucHV0cyAiZWxzaWYgL2ZhaWxlZCEvaSA9fiBvdXRcbiIKLSAgICAgICAgb3V0cC5wdXRzICIg
ICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJEZXRlY3RlZCBmYWlsdXJlczpcXG5cIiIsIHBs
YW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhT
dHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIg
KyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgotICAgICAgICBv
dXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMg
ImVuZFxuIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVw
b3J0IHN1Y2Nlc3MgYnkgc2F5aW5nICJQYXNzZWQiIG9yIGVycm9yIGJ5IHNheWluZyAiRkFJTEVE
Ii4KLSMgVGhpcyBpcyB1c2VkIGJ5IENoYWtyYSB0ZXN0cy4KLWRlZiBjaGFrcmFQYXNzRmFpbEVy
cm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAg
ICAgb3V0cC5wdXRzICJpZiAhc3VjY2VzcyhzdGF0dXMpXG4iCi0gICAgICAgIG91dHAucHV0cyAi
ICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAg
ICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhw
ZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1cy5leGl0c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSAr
ICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAg
ICAgb3V0cC5wdXRzICJlbHNpZiAvRkFJTEVEL2kgPX4gb3V0XG4iCi0gICAgICAgIG91dHAucHV0
cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRGV0ZWN0ZWQgZmFpbHVyZXM6XFxuXCIi
LCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJl
Zml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAg
ICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKLSAgICAg
ICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5w
dXRzICJlbmRcbiIKLSAgIH0KLWVuZAotCi1jbGFzcyBQbGFuCi0gICAgYXR0cl9yZWFkZXIgOmRp
cmVjdG9yeSwgOmFyZ3VtZW50cywgOmZhbWlseSwgOm5hbWUsIDpvdXRwdXRIYW5kbGVyLCA6ZXJy
b3JIYW5kbGVyLCA6YWRkaXRpb25hbEVudgotICAgIGF0dHJfYWNjZXNzb3IgOmluZGV4Ci0gICAg
Ci0gICAgZGVmIGluaXRpYWxpemUoZGlyZWN0b3J5LCBhcmd1bWVudHMsIGZhbWlseSwgbmFtZSwg
b3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyKQotICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0
b3J5Ci0gICAgICAgIEBhcmd1bWVudHMgPSBhcmd1bWVudHMKLSAgICAgICAgQGZhbWlseSA9IGZh
bWlseQotICAgICAgICBAbmFtZSA9IG5hbWUKLSAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRw
dXRIYW5kbGVyCi0gICAgICAgIEBlcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXIKLSAgICAgICAg
QGlzU2xvdyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzppc1Nsb3ddCi0gICAgICAgIEBjcmFzaE9L
ID0gISEkcnVuQ29tbWFuZE9wdGlvbnNbOmNyYXNoT0tdCi0gICAgICAgIGlmIEBjcmFzaE9LCi0g
ICAgICAgICAgICBAb3V0cHV0SGFuZGxlciA9IG5vaXN5T3V0cHV0SGFuZGxlcgotICAgICAgICBl
bmQKLSAgICAgICAgQGFkZGl0aW9uYWxFbnYgPSBbXQotICAgIGVuZAotICAgIAotICAgIGRlZiBz
aGVsbENvbW1hbmQgCi0gICAgICAgIHNjcmlwdCA9ICJvdXQgPSBuaWxcbiIKLSAgICAgICAgc2Ny
aXB0ICs9ICJlcnIgPSBuaWxcbiIKLSAgICAgICAgc2NyaXB0ICs9ICJzdGF0dXMgPSBuaWxcbiIK
LSAgICAgICAgc2NyaXB0ICs9ICJEaXIuY2hkaXIoXCIuLi8je1NoZWxsd29yZHMuc2hlbGxlc2Nh
cGUoQGRpcmVjdG9yeS50b19zKX1cIikgZG9cbiIKLSAgICAgICAgc2NyaXB0ICs9ICIgIGVudiA9
IHt9XG4iCi0gICAgICAgICgkZW52VmFycyArIGFkZGl0aW9uYWxFbnYpLmVhY2ggewotICAgICAg
ICAgICAgfHZhcnwgCi0gICAgICAgICAgICAoa2V5LCB2YWx1ZSkgPSB2YXIuc3BsaXQoLz0vLCAy
KQotICAgICAgICAgICAgc2NyaXB0ICs9ICIgIGVudltcIiN7a2V5fVwiXSA9IFwiI3t2YWx1ZX1c
IlxuIgotICAgICAgICB9Ci0gICAgICAgIHNjcmlwdCArPSAiICAgIG91dCwgZXJyLCBzdGF0dXMg
PSBPcGVuMy5jYXB0dXJlMyhlbnYsIFxuIgotICAgICAgICBzY3JpcHQgKz0gQGFyZ3VtZW50cy5t
YXAgeyB8IGFyZ3VtZW50IHwgIiAgICAgICAgXCIje2FyZ3VtZW50fVwiIn0uam9pbigiLFxuIikK
LSAgICAgICAgc2NyaXB0ICs9ICIgICAgKVxuIgotICAgICAgICBzY3JpcHQgKz0gImVuZFxuIgot
ICAgICAgICByZXR1cm4gc2NyaXB0Ci0gICAgZW5kCi0KLSAgICBkZWYgcmVwcm9TY3JpcHRIZWxw
ZXIKLSAgICAgICAgc2NyaXB0ID0gImRlZiBlcnJvcl9zY3JpcHRfY29udGVudHNcbiIKLSAgICAg
ICAgc2NyaXB0ICs9ICIgICAgPDwtRU5EX09GX1NDUklQVFxuIgotICAgICAgICBzY3JpcHQgKz0g
IiAgICAgICAgcmVxdWlyZSAnb3BlbjMnXG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICBk
ZWYgc3VjY2VzcyhzdGF0dXMpXG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgc3Rh
dHVzLnN1Y2Nlc3M/XG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICBlbmRcbiIKLSAgICAg
ICAgc2NyaXB0ICs9ICIgICAgICAgIHNjcmlwdF9sb2NhdGlvbiA9IEZpbGUuZXhwYW5kX3BhdGgo
RmlsZS5kaXJuYW1lKF9fRklMRV9fKSlcbiIKLSAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgIERp
ci5jaGRpcihcIlxcXCN7c2NyaXB0X2xvY2F0aW9ufSIKLSAgICAgICAgUGF0aG5hbWUubmV3KEBu
YW1lKS5kaXJuYW1lLmVhY2hfZmlsZW5hbWUgewotICAgICAgICAgICAgfCBwYXRoQ29tcG9uZW50
IHwKLSAgICAgICAgICAgIHNjcmlwdCArPSAiLy4uIgotICAgICAgICB9Ci0gICAgICAgIHNjcmlw
dCArPSAiLy5ydW5uZXJcIikgZG9cbiIKLSAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICBF
TlZbXCJEWUxEX0ZSQU1FV09SS19QQVRIXCJdID0gXCIjeyR0ZXN0aW5nRnJhbWV3b3JrUGF0aC5k
aXJuYW1lfVwiXG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgRU5WW1wiSlNDVEVT
VF90aW1lb3V0XCJdID0gXCIje0VOVlsnSlNDVEVTVF90aW1lb3V0J119XCJcbiIKLSAgICAgICAg
c2NyaXB0ICs9ICIgICAgICAgICAgICBFTlZbXCJKU0NURVNUX2hhcmRUaW1lb3V0XCJdID0gXCIj
e0VOVlsnSlNDVEVTVF9oYXJkVGltZW91dCddfVwiXG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAg
ICAgICAgICAgRU5WW1wiSlNDVEVTVF9tZW1vcnlMaW1pdFwiXSA9IFwiI3tFTlZbJ0pTQ1RFU1Rf
bWVtb3J5TGltaXQnXX1cIlxuIgotCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgI3tz
aGVsbENvbW1hbmR9IgotICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIHByaW50IG91dFxu
IgotICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIGlmICghc3VjY2VzcyhzdGF0dXMpKVxu
IgotICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgICAgICBleGl0KDEpXG4iCi0gICAgICAg
IHNjcmlwdCArPSAiICAgICAgICAgICAgZW5kXG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAg
ICBlbmRcbiIKLSAgICAgICAgc2NyaXB0ICs9ICIgICAgRU5EX09GX1NDUklQVFxuIgotICAgICAg
ICBzY3JpcHQgKz0gImVuZFxuIgotICAgICAgICByZXR1cm4gc2NyaXB0Ci0gICAgZW5kCi0gICAg
Ci0gICAgZGVmIHJlcHJvU2NyaXB0Q29tbWFuZAotICAgICAgICA8PC1FTkRfUkVQUk9fU0NSSVBU
X0NPTU1BTkQKLSAgICAgICAgICAgIEZpbGUub3BlbigiI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBl
KChQYXRobmFtZS5uZXcoIi4uIikgKyBAbmFtZSkudG9fcyl9IiwgInciKSBkbyB8c2NyfAotICAg
ICAgICAgICAgICAgIHNjci5wdXRzICJcI3tlcnJvcl9zY3JpcHRfY29udGVudHN9IgotICAgICAg
ICAgICAgZW5kCi0gICAgICAgIEVORF9SRVBST19TQ1JJUFRfQ09NTUFORAotICAgIGVuZAotCi0g
ICAgZGVmIHN0YXR1c0NvbW1hbmQoc3RhdHVzX2NvZGUpCi0gICAgICAgICMgTWF5IGJlIGNhbGxl
ZCBpbiB0aCByZXNjdWUgYmxvY2ssIHNvIHN0YXR1cyBpcyBub3QKLSAgICAgICAgIyBndWFyYW50
ZWVkIHRvIGJlIHNldDsgaWYgaXQgaXNuJ3QsIHNldCB0aGUgZXhpdCBjb2RlIHRvCi0gICAgICAg
ICMgc29tZXRoaW5nIHRoYXQncyBjbGVhcmx5IGludmFsaWQuCi0gICAgICAgIDw8LUVORF9TVEFU
VVNfQ09NTUFORAotICAgICAgICAgIEZpbGUub3BlbigiI3tzdGF0dXNGaWxlfSIsICJ3IikgeyB8
ZnwKLSAgICAgICAgICAgICAgZi5wdXRzKCIjeyRydW5VbmlxdWVJZH0gXCN7c3RhdHVzLm5pbD8g
PyA5OTk5OTk5OTkgOiBzdGF0dXMuZXhpdHN0YXR1c30gI3tzdGF0dXNfY29kZX0iKQotICAgICAg
ICAgIH0KLSAgICAgICAgRU5EX1NUQVRVU19DT01NQU5ECi0gICAgZW5kCi0KLSAgICBkZWYgZmFp
bENvbW1hbmQKLSAgICAgICAgPDwtRU5EX0ZBSUxfQ09NTUFORAotICAgICAgICAgICAgcHJpbnQg
IkZBSUw6ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9XG4iCi0gICAgICAgICAgICAj
e3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfRkFJTCl9Ci0gICAgICAgICAgICAje3JlcHJvU2Ny
aXB0Q29tbWFuZH0KLSAgICAgICAgRU5EX0ZBSUxfQ09NTUFORAotICAgIGVuZAotICAgIAotICAg
IGRlZiBzdWNjZXNzQ29tbWFuZAotICAgICAgICBpZiAkcHJvZ3Jlc3NNZXRlciBvciAkdmVyYm9z
aXR5ID49IDIKLSAgICAgICAgICAgIDw8LUVORF9WRVJCT1NFX1NVQ0NFU1NfQ09NTUFORAotICAg
ICAgICAgICAgICAgIHByaW50ICJQQVNTOiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUp
fVxuIgotICAgICAgICAgICAgICAgICN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9QQVNTKX0K
LSAgICAgICAgICAgIEVORF9WRVJCT1NFX1NVQ0NFU1NfQ09NTUFORAotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAiI3tzdGF0dXNDb21tYW5kKFNUQVRVU19GSUxFX1BBU1MpfVxuIgotICAgICAg
ICBlbmQKLSAgICBlbmQKLSAgICAKLSAgICBkZWYgc3RhdHVzRmlsZQotICAgICAgICAiI3tTVEFU
VVNfRklMRV9QUkVGSVh9I3tAaW5kZXh9IgotICAgIGVuZAotCi0gICAgZGVmIHdyaXRlUnVuU2Ny
aXB0KGZpbGVuYW1lKQotICAgICAgICBGaWxlLm9wZW4oZmlsZW5hbWUsICJ3IikgewotICAgICAg
ICAgICAgfCBvdXRwIHwKLSAgICAgICAgICAgIG91dHAucHV0cyAicHJpbnQgXCJSdW5uaW5nICN7
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9XFxuXCIiCi0gICAgICAgICAgICBvdXRwLnB1
dHMgIiN7cmVwcm9TY3JpcHRIZWxwZXJ9IgotICAgICAgICAgICAgb3V0cC5wdXRzICJiZWdpbiIK
LSAgICAgICAgICAgIG91dHAucHV0cyAicmVxdWlyZSAnb3BlbjMnIgotICAgICAgICAgICAgb3V0
cC5wdXRzICJyZXF1aXJlICdmaWxldXRpbHMnIgotICAgICAgICAgICAgb3V0cC5wdXRzICJkZWYg
c3VjY2VzcyhzdGF0dXMpIgotICAgICAgICAgICAgb3V0cC5wdXRzICIgICBzdGF0dXMuc3VjY2Vz
cz8iCi0gICAgICAgICAgICBvdXRwLnB1dHMgImVuZCIKLQotICAgICAgICAgICAgY21kID0gc2hl
bGxDb21tYW5kCi0KLSAgICAgICAgICAgIGNtZCArPSBAb3V0cHV0SGFuZGxlci5jYWxsKEBuYW1l
KQotCi0gICAgICAgICAgICBpZiAkdmVyYm9zaXR5ID49IDMKLSAgICAgICAgICAgICAgICBvdXRw
LnB1dHMgInByaW50IFwiI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGNtZCl9XFxuXCIiCi0gICAg
ICAgICAgICBlbmQKLSAgICAgICAgICAgIG91dHAucHV0cyBjbWQKLSAgICAgICAgICAgIEBlcnJv
ckhhbmRsZXIuY2FsbChvdXRwLCBzZWxmKQotICAgICAgICAgICAgb3V0cC5wdXRzICJyZXNjdWUi
Ci0gICAgICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCBcIkZBSUw6ICN7U2hlbGx3b3Jkcy5z
aGVsbGVzY2FwZShAbmFtZSl9XFxuXCIiCi0gICAgICAgICAgICBvdXRwLnB1dHMgIiAgICAje3N0
YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfRkFJTCl9IgotICAgICAgICAgICAgb3V0cC5wdXRzICJl
bmQiCi0gICAgICAgIH0KLSAgICBlbmQKLWVuZAotCi1kZWYgcHJlcGFyZVNoZWxsVGVzdFJ1bm5l
cgotICAgIEZpbGUub3BlbigkcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3IikgewotICAgICAg
ICB8IG91dHAgfAotICAgICAgICAkcnVubGlzdC5lYWNoIHsKLSAgICAgICAgICAgIHwgcGxhbiB8
Ci0gICAgICAgICAgICBvdXRwLnB1dHMgInJ1YnkgdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIK
LSAgICAgICAgfQotICAgIH0KLSAgICBgZG9zMnVuaXggI3skcnVubmVyRGlyICsgInJ1bnNjcmlw
dCJ9YCAgICAKLWVuZAotCi1kZWYgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBwcmVyZXFzKQot
ICAgIGluZGV4ID0gcGxhbi5pbmRleAotICAgIHRhcmdldCA9ICJ0ZXN0X2RvbmVfI3tpbmRleH0i
Ci0gICAgb3V0cC5wdXRzICIje3RhcmdldH06ICN7cHJlcmVxcy5qb2luKCIgIil9IgotICAgIG91
dHAucHV0cyAiXHRydWJ5IHRlc3Rfc2NyaXB0XyN7aW5kZXh9IgotICAgIHRhcmdldAotZW5kCi0K
LWRlZiBwcmVwYXJlTWFrZVRlc3RSdW5uZXIocmVtb3RlSW5kZXgpCi0gICAgc2VyaWFsUGxhbnMg
PSB7fQotICAgICRzZXJpYWxSdW5saXN0LmVhY2ggeyB8cHwgc2VyaWFsUGxhbnNbcF0gPSBuaWwg
fQotICAgIHJ1blBsYW5zID0gW10KLSAgICBzZXJpYWxSdW5QbGFucyA9IFtdCi0gICAgJHJ1bmxp
c3QuZWFjaCB7Ci0gICAgICAgIHwgcGxhbiB8Ci0gICAgICAgIGlmICEkcmVtb3RlIG9yIHBsYW4u
aW5kZXggJSAkcmVtb3RlSG9zdHMubGVuZ3RoID09IHJlbW90ZUluZGV4Ci0gICAgICAgICAgICBp
ZiBzZXJpYWxQbGFucy5oYXNfa2V5PyhwbGFuKQotICAgICAgICAgICAgICAgIHNlcmlhbFJ1blBs
YW5zIDw8IHBsYW4KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBydW5QbGFucyA8
PCBwbGFuCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgZW5kCi0gICAgfQotCi0gICAgRmlsZS5v
cGVuKCRydW5uZXJEaXIgKyAiTWFrZWZpbGUuI3tyZW1vdGVJbmRleH0iLCAidyIpIHsKLSAgICAg
ICAgfCBvdXRwIHwKLSAgICAgICAgaWYgc2VyaWFsUnVuUGxhbnMuZW1wdHk/Ci0gICAgICAgICAg
ICBvdXRwLnB1dHMoImFsbDogcGFyYWxsZWwiKQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
ZXJpYWxQcmVyZXEgPSAidGVzdF9kb25lXyN7c2VyaWFsUnVuUGxhbnNbLTFdLmluZGV4fSIKLSAg
ICAgICAgICAgIG91dHAucHV0cygiYWxsOiAje3NlcmlhbFByZXJlcX0iKQotICAgICAgICAgICAg
cHJldl90YXJnZXQgPSAicGFyYWxsZWwiCi0gICAgICAgICAgICBzZXJpYWxSdW5QbGFucy5lYWNo
IHsKLSAgICAgICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgICAgIHByZXZfdGFyZ2V0
ID0gb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbcHJldl90YXJnZXRdKQotICAgICAgICAgICAg
fQotICAgICAgICBlbmQKLSAgICAgICAgcGFyYWxsZWxUYXJnZXRzID0gcnVuUGxhbnMuY29sbGVj
dCB7Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgb3V0cHV0X3RhcmdldChvdXRw
LCBwbGFuLCBbXSkKLSAgICAgICAgfQotICAgICAgICBvdXRwLnB1dHMoInBhcmFsbGVsOiAiICsg
cGFyYWxsZWxUYXJnZXRzLmpvaW4oIiAiKSkKLSAgICB9Ci1lbmQKLQotZGVmIHByZXBhcmVSdWJ5
VGVzdFJ1bm5lcgotICAgIEZpbGUub3BlbigkcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3Iikg
ewotICAgICAgICB8IG91dHAgfAotICAgICAgICAkcnVubGlzdC5lYWNoIHsKLSAgICAgICAgICAg
IHwgcGxhbiB8Ci0gICAgICAgICAgICBvdXRwLnB1dHMgInN5c3RlbSBcInJ1YnkgdGVzdF9zY3Jp
cHRfI3twbGFuLmluZGV4fVwiIgotICAgICAgICB9Ci0gICAgfQotZW5kCi0KLWRlZiB0ZXN0UnVu
bmVyQ29tbWFuZChyZW1vdGVJbmRleD0wKQotICAgIGNhc2UgJHRlc3RSdW5uZXJUeXBlCi0gICAg
d2hlbiA6c2hlbGwKLSAgICAgICAgY29tbWFuZCA9ICJzaCBydW5zY3JpcHQiCi0gICAgd2hlbiA6
bWFrZQotICAgICAgICBjb21tYW5kID0gIm1ha2UgLWogI3skbnVtQ2hpbGRQcm9jZXNzZXN9IC1z
IC1mIE1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IgotICAgIHdoZW4gOnJ1YnkKLSAgICAgICAgY29t
bWFuZCA9ICJydWJ5IHJ1bnNjcmlwdCIKLSAgICBlbHNlCi0gICAgICAgIHJhaXNlICJVbmtub3du
IHRlc3QgcnVubmVyIHR5cGU6ICN7JHRlc3RSdW5uZXJUeXBlLnRvX3N9IgotICAgIGVuZAotICAg
IHJldHVybiBjb21tYW5kCi1lbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVi
eS9qc2Mtc3RyZXNzLXRlc3QvZXhlY3V0b3IucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1Ynkv
anNjLXN0cmVzcy10ZXN0L2V4ZWN1dG9yLnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2OTgyNTA2MzZhODQ1Nzcw
Mjk5NTM4ZDQ0Njg2NGZiODc3ZWJjOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L2V4ZWN1dG9yLnJiCkBAIC0wLDAgKzEsNDMyIEBA
CisjIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
IyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjIEltcGxlbWVudHMgdGhlIG1haW4gbG9vcCBmb3IgZXhlY3V0aW5nIHRo
ZSB0ZXN0cyBhbmQgaGFuZGxpbmcKKyMgbWlzc2luZy9tdWx0aXBsZSByZXN1bHRzIChiZWNhdXNl
IG9mIGluZnJhc3RydWN0dXJlIGlzc3VlcykuIEl0IGFsc28KKyMgdGFrZXMgY2FyZSBvZiBtYXJr
aW5nIGZhaWxpbmcgdGVzdHMgYXMgZmxha3kgd2hlbgorIyAtLXRyZWF0LWZhaWxpbmctYXMtZmxh
a3kgaXMgaW4gZWZmZWN0LiBJdCdzIGEgY2xhc3Mgc28gdGhhdCB3ZSBjYW4KKyMgZWFzaWx5IGlu
c3RhbnRpYXRlIGEgc3ViY2xhc3MgZm9yIHRlc3RpbmcuCitjbGFzcyBCYXNlVGVzdHNFeGVjdXRv
cgorICAgIGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCByZW1vdGVIb3N0cywg
aXRlcmF0aW9uTGltaXRzLAorICAgICAgICAgICAgICAgICAgIHRyZWF0RmFpbGluZ0FzRmxha3ks
IGxvZ1N0cmVhbT0kc3RkZXJyKQorICAgICAgICBAcnVubGlzdCA9IHJ1bmxpc3QKKyAgICAgICAg
QHNlcmlhbFBsYW5zID0gc2VyaWFsUGxhbnMKKyAgICAgICAgQHJlbW90ZUhvc3RzID0gcmVtb3Rl
SG9zdHMKKyAgICAgICAgQHRyZWF0RmFpbGluZ0FzRmxha3kgPSB0cmVhdEZhaWxpbmdBc0ZsYWt5
CisgICAgICAgIEBpbmZyYUl0ZXJhdGlvbnNGbG9vciA9IGl0ZXJhdGlvbkxpbWl0cy5pbmZyYUl0
ZXJhdGlvbnNGbG9vcgorICAgICAgICBAaXRlcmF0aW9uc0NlaWxpbmcgPSBpdGVyYXRpb25MaW1p
dHMuaXRlcmF0aW9uc0NlaWxpbmcKKyAgICAgICAgaWYgQGl0ZXJhdGlvbnNDZWlsaW5nIDwgQGlu
ZnJhSXRlcmF0aW9uc0Zsb29yCisgICAgICAgICAgICByYWlzZSAiaXRlcmF0aW9uc0NlaWxpbmcg
KCN7QGl0ZXJhdGlvbnNDZWlsaW5nfSA8IEBpbmZyYUl0ZXJhdGlvbnNGbG9vciAoI3tAaW5mcmFJ
dGVyYXRpb25zRmxvb3J9IgorICAgICAgICBlbmQKKyAgICAgICAgQG1heEl0ZXJhdGlvbnMgPSBz
ZXRNYXhJdGVyYXRpb25zKGluaXRpYWxNYXhBbGxvd2VkSXRlcmF0aW9ucyhydW5saXN0KSkKKyAg
ICAgICAgQGxvZ1N0cmVhbSA9IGxvZ1N0cmVhbQorICAgIGVuZAorICAgIGRlZiBsb2cocykKKyAg
ICAgICAgQGxvZ1N0cmVhbS5wdXRzKHMpIHVubGVzcyBAbG9nU3RyZWFtLm5pbD8KKyAgICBlbmQK
KyAgICBkZWYgcmVmcmVzaEV4ZWN1dGlvbihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVk
VGVzdHMpCisgICAgICAgIHByZXBhcmVUZXN0UnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBj
b21wbGV0ZWRUZXN0cykKKyAgICBlbmQKKyAgICBkZWYgc2V0TWF4SXRlcmF0aW9ucyh2YWx1ZSkK
KyAgICAgICAgaWYgdmFsdWUgPiBAaXRlcmF0aW9uc0NlaWxpbmcKKyAgICAgICAgICAgIHZhbHVl
ID0gQGl0ZXJhdGlvbnNDZWlsaW5nCisgICAgICAgIGVuZAorICAgICAgICBAbWF4SXRlcmF0aW9u
cyA9IHZhbHVlCisgICAgZW5kCisgICAgZGVmIGl0ZXJhdGlvbnNGb3JJbmZyYUZhaWx1cmVzCisg
ICAgICAgICMgSWYgd2UncmUgcnVubmluZyByZW1vdGVseSwgc2NhbGUgdGhlIGV4dHJhIGl0ZXJh
dGlvbnMgdG8KKyAgICAgICAgIyBhY2NvdW50IGZvciBpbmZyYXN0cnVjdHVyZSBmYWlsdXJlcyBi
eSB0aGUgbnVtYmVyIG9mIGhvc3RzLgorICAgICAgICBudW1SZW1vdGVIb3N0cyA9IDAKKyAgICAg
ICAgaWYgbm90IEByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgICAgICBudW1SZW1vdGVIb3N0cyA9
IEByZW1vdGVIb3N0cy5zaXplIC8gMgorICAgICAgICBlbmQKKyAgICAgICAgW251bVJlbW90ZUhv
c3RzLCBAaW5mcmFJdGVyYXRpb25zRmxvb3JdLm1heAorICAgIGVuZAorICAgIGRlZiBpbml0aWFs
TWF4QWxsb3dlZEl0ZXJhdGlvbnMocnVubGlzdCkKKyAgICAgICAgbWF4VHJpZXMgPSAwCisgICAg
ICAgIHJ1bmxpc3QuZWFjaCB7IHxwbGFufAorICAgICAgICAgICAgbmV4dCBpZiBwbGFuLmZsYWt5
Lm5pbD8KKyAgICAgICAgICAgIGlmIHBsYW4uZmxha3kubWF4VHJpZXMgPiBtYXhUcmllcworICAg
ICAgICAgICAgICAgIG1heFRyaWVzID0gcGxhbi5mbGFreS5tYXhUcmllcworICAgICAgICAgICAg
ZW5kCisgICAgICAgIH0KKyAgICAgICAgIyBUaGUgbnVtYmVyIG9mIGFsbG93ZWQgaXRlcmF0aW9u
cyBpcyB0aGUgc3VtIG9mCisgICAgICAgICMgaXRlcmF0aW9uc0ZvckluZnJhRmFpbHVyZXMgYW5k
IHRoZSBtYXggdGltZXMgd2UgcnVuIGEgdGVzdAorICAgICAgICAjIHRoYXQgYXBwZWFycyB0byBi
ZSBmbGFreS4KKyAgICAgICAgaXRlcmF0aW9uc0ZvckluZnJhRmFpbHVyZXMgKyBtYXhUcmllcwor
ICAgIGVuZAorICAgIGRlZiBhZGp1c3RGbGFraW5lc3NGb3JGYWlsaW5nVGVzdHMoaXRlcmF0aW9u
LCBzdGF0dXNNYXAsIGV2YWx1YXRvcikKKyAgICAgICAgY29tcGxldGVkVGVzdHMgPSBldmFsdWF0
b3IuY29tcGxldGVkCisgICAgICAgIGlmIEB0cmVhdEZhaWxpbmdBc0ZsYWt5Lm5pbD8KKyAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0ZWRUZXN0cworICAgICAgICBlbmQKKworICAgICAgICAjIElm
IHdlIGhhdmUgYSBsb3Qgb2YgZmFpbGluZyB0ZXN0cywgaXQncyBsaWtlbHkgdGhhdCB0aGUgdHJl
ZQorICAgICAgICAjIGlzIGJhZCBhbmQgdGhlcmUncyBubyBwb2ludCBpbiB0cmVhdGluZyB0aGUg
ZmFpbHVyZXMgYXMKKyAgICAgICAgIyBwb3RlbnRpYWwgZmxha3kgdGVzdHMuCisgICAgICAgIGlm
IGV2YWx1YXRvci50ZXN0c0ZhaWxlZC5zaXplID4gQHRyZWF0RmFpbGluZ0FzRmxha3kubWF4RmFp
bGluZworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZFRlc3RzCisgICAgICAgIGVuZAorICAg
ICAgICBhZGp1c3RlZFRlc3RzID0gU2V0Lm5ldworICAgICAgICBldmFsdWF0b3IudGVzdHNGYWls
ZWQuZWFjaCB7IHxwbGFufAorICAgICAgICAgICAgaWYgcGxhbi5mbGFreS5uaWw/CisgICAgICAg
ICAgICAgICAgcGxhbi5mbGFreSA9IEZsYWt5Lm5ldyhAdHJlYXRGYWlsaW5nQXNGbGFreS5wYXNz
UGVyY2VudGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEB0cmVh
dEZhaWxpbmdBc0ZsYWt5Lm1heFRyaWVzKQorICAgICAgICAgICAgICAgIGFkanVzdGVkVGVzdHMu
YWRkKHBsYW4pCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBpZiBhZGp1c3Rl
ZFRlc3RzLnNpemUgPiAwCisgICAgICAgICAgICAjIEFkanVzdCB0aGUgbWF4aW11bSBudW1iZXIg
b2YgdHJpZXMgdXB3YXJkcyBpZiB3ZSBqdXN0CisgICAgICAgICAgICAjIG1hcmtlZCBhIGZhaWxp
bmcgdGVzdCBhcyBmbGFreS4gTm90ZSB0aGF0IGluZnJhc3RydWN0dXJlCisgICAgICAgICAgICAj
IGlzc3VlcyBtaWdodCBjYXVzZSB0ZXN0IGZhaWx1cmVzIHRvIGJlIHJlcG9ydGVkIGF0IGxhdGVy
CisgICAgICAgICAgICAjIGl0ZXJhdGlvbnMsIHNvIHdlIHVzZSAoKykgaW5zdGVhZCBvZiAobWF4
KS4gVGhpcyBpcyBzYWZlCisgICAgICAgICAgICAjIGFzIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9u
cyBpcyBjYXBwZWQgYnkKKyAgICAgICAgICAgICMgaXRlcmF0aW9uc0NlaWxpbmcuCisgICAgICAg
ICAgICBuZXdNYXhJdGVyYXRpb25zID0gQG1heEl0ZXJhdGlvbnMgKyBAdHJlYXRGYWlsaW5nQXNG
bGFreS5tYXhUcmllcworICAgICAgICAgICAgaWYgQG1heEl0ZXJhdGlvbnMgPCBuZXdNYXhJdGVy
YXRpb25zCisgICAgICAgICAgICAgICAgc2V0TWF4SXRlcmF0aW9ucyhuZXdNYXhJdGVyYXRpb25z
KQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBwdXRkKCJhZGp1c3RGbGFraW5lc3NGb3JG
YWlsaW5nVGVzdHMgI3tuZXdNYXhJdGVyYXRpb25zfSAoLT4je0BtYXhJdGVyYXRpb25zfSkgI3th
ZGp1c3RlZFRlc3RzLmNvbGxlY3QgeyB8cHwgcC50b19zIH19IikKKyAgICAgICAgZW5kCisgICAg
ICAgICMgV2UganVzdCBtYXJrZWQgdGhvc2UgYXMgZmxha3kgaW4gb3JkZXIgdG8gcmVydW4gdGhl
biwgc28KKyAgICAgICAgIyB0YWtlIHRoZW0gb2ZmIHRoZSBjb21wbGV0ZWRUZXN0cy4KKyAgICAg
ICAgcmV0ID0gY29tcGxldGVkVGVzdHMgLSBhZGp1c3RlZFRlc3RzCisgICAgICAgIHB1dGQoImNv
bXBsZXRlZFRlc3RzOiAje3JldC5jb2xsZWN0IHsgfHB8IHAudG9fcyB9fSIpCisgICAgICAgIHJl
dAorICAgIGVuZAorICAgIGRlZiBsb29wCisgICAgICAgIHByZXBhcmVBcnRpZmFjdHMoQHJlbW90
ZUhvc3RzKQorICAgICAgICBzdGF0dXNNYXAgPSB7fQorICAgICAgICAjIFRoaXMgaXMgYSBoaWdo
LWxldmVsIHJldHJ5IGxvb3AuIElmIGEgcmVtb3RlIGhvc3QgZ29lcyBhd2F5IGluCisgICAgICAg
ICMgdGhlIG1pZGRsZSBvZiBhIHJ1biBhbmQgZWl0aGVyIGRvZXNuJ3QgY29tZSBiYWNrIG9ubGlu
ZSBvciBjb21lcworICAgICAgICAjIGJhY2sgaGF2aW5nIHJlbW92ZWQgdGhlIHJlbW90ZSBkaXJl
Y3RvcnkgKCopLCBnZXRTdGF0dXNNYXAgd2lsbCBiZQorICAgICAgICAjIG1pc3NpbmcgcmVzdWx0
cyBmb3IgdGhlc2UgdGVzdHMsIGFsbG93aW5nIHVzIHRvIHJldHJ5IHRoZW0gaW4KKyAgICAgICAg
IyB0aGUgbmV4dCBpdGVyYXRpb24uCisgICAgICAgICMKKyAgICAgICAgIyAoKikgVGhpcyBtYXkg
d2VsbCBoYXBwZW4gd2hlbiBydW5uaW5nIHRoZSB0ZXN0cyBvbiBlbWJlZGRlZAorICAgICAgICAj
IGJvYXJkcyB0aGF0IHJlZ3VsYXJseSBjb3JydXB0IHRoZWlyIFNEIGNhcmQuIERlZmluaXRlbHkg
YW4gaXNzdWUKKyAgICAgICAgIyBmb3IgdGhlIGNpMjAgYm9hcmRzIHVzZWQgdG8gdGVzdCBNSVBT
LgorICAgICAgICAxMDAwMDAudGltZXMgeyB8aXRlcmF0aW9ufAorICAgICAgICAgICAgaWYgaXRl
cmF0aW9uID49IEBtYXhJdGVyYXRpb25zCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgIyBAcmVtb3RlSG9zdHMgKGFuZCB0aGVyZWZvcmUgcmVtb3Rl
SG9zdHMpIHdpbGwgYmUgbmlsCisgICAgICAgICAgICAjIHdoZW4gbm90IGV4ZWN1dGluZyBvbiBy
ZW1vdGVzLgorICAgICAgICAgICAgcmVtb3RlSG9zdHMgPSBwcmVwYXJlRXhlY3V0aW9uKEByZW1v
dGVIb3N0cykKKyAgICAgICAgICAgIGlmIHJlbW90ZUhvc3RzIGFuZCByZW1vdGVIb3N0cy5zaXpl
ID09IDAKKyAgICAgICAgICAgICAgICAjIEVpdGhlciBldmVyeXRoaW5nIGlzIGRvd24sIG9yIGV2
ZXJ5dGhpbmcgZ290CisgICAgICAgICAgICAgICAgIyByZWJvb3RlZC4gSW4gdGhlIGxhdHRlciBj
YXNlLCBhbGxvdyBlbm91Z2ggdGltZSBmb3IKKyAgICAgICAgICAgICAgICAjIHRoZSByZW1vdGUg
Ym9hcmRzIHRvIGJvb3QgdXAsIHRoZW4gcmV0cnkuCisgICAgICAgICAgICAgICAgd2FpdEludGVy
dmFsID0gNjAKKyAgICAgICAgICAgICAgICBsb2coIkFsbCByZW1vdGUgaG9zdHMgZmFpbGVkLCBy
ZXRyeWluZyBhZnRlciAje3dhaXRJbnRlcnZhbH1zIikKKyAgICAgICAgICAgICAgICBzbGVlcCh3
YWl0SW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICBleGVjdXRlVGVzdHMocmVtb3RlSG9zdHMpCisgICAgICAgICAgICBzdGF0dXNNYXAg
PSB1cGRhdGVTdGF0dXNNYXAoaXRlcmF0aW9uLCBzdGF0dXNNYXApCisgICAgICAgICAgICBldmFs
dWF0b3IgPSBUZXN0UmVzdWx0RXZhbHVhdG9yU2ltcGxlLm5ldyhAcnVubGlzdCwgc3RhdHVzTWFw
KQorICAgICAgICAgICAgZXZhbHVhdG9yLnZpc2l0IQorCisgICAgICAgICAgICBjb21wbGV0ZWRU
ZXN0cyA9IGFkanVzdEZsYWtpbmVzc0ZvckZhaWxpbmdUZXN0cyhpdGVyYXRpb24sIHN0YXR1c01h
cCwgZXZhbHVhdG9yKQorICAgICAgICAgICAgIyBOQjogZXZhbHVhdG9yLmNvbXBsZXRlZCBtYXkg
bm93IGJlIG91dCBvZiBkYXRlLCB3ZSBuZWVkCisgICAgICAgICAgICAjIHRvIHVzZSBjb21wbGV0
ZWRUZXN0cyBpbnN0ZWFkLgorCisgICAgICAgICAgICBicmVhayB1bmxlc3MgY29tcGxldGVkVGVz
dHMuc2l6ZSAhPSBAcnVubGlzdC5zaXplCisgICAgICAgICAgICBpZiBjb21wbGV0ZWRUZXN0cy5z
aXplID4gQHJ1bmxpc3Quc2l6ZQorICAgICAgICAgICAgICAgIHJhaXNlICJUZXN0IGNvdW50IG1p
c21hdGNoOiAje2NvbXBsZXRlZFRlc3RzLnNpemV9ID4gI3tAcnVubGlzdC5zaXplfSIKKyAgICAg
ICAgICAgIGVuZAorCisgICAgICAgICAgICAjIFJlZ2VuZXJhdGUgdGhlIGxpc3RzIG9mIHRlc3Rz
IHRvIHJ1bgorICAgICAgICAgICAgcmVmcmVzaEV4ZWN1dGlvbihAcnVubGlzdCwgQHNlcmlhbFBs
YW5zLCBjb21wbGV0ZWRUZXN0cykKKworICAgICAgICAgICAgbnVtRmxha3kgPSBAcnVubGlzdC5z
aXplIC0gY29tcGxldGVkVGVzdHMuc2l6ZSAtIGV2YWx1YXRvci5taXNzaW5nLnNpemUKKyAgICAg
ICAgICAgIHRlc3RzSW5mbyA9ICJjb21wbGV0ZWQgI3tjb21wbGV0ZWRUZXN0cy5zaXplfS8je0By
dW5saXN0LnNpemV9ICgje251bUZsYWt5fSBmbGFreSwgI3tldmFsdWF0b3IubWlzc2luZy5zaXpl
fSBtaXNzaW5nKSIKKyAgICAgICAgICAgIHJlbW90ZUhvc3RzSW5mbyA9ICIiCisgICAgICAgICAg
ICBpZiByZW1vdGVIb3N0cworICAgICAgICAgICAgICAgIHJlbW90ZUhvc3RzSW5mbyA9ICIsICN7
cmVtb3RlSG9zdHMuc2l6ZX0vI3tAcmVtb3RlSG9zdHMuc2l6ZX0gaG9zdHMgbGl2ZSIKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgbG9nKCJBZnRlciB0cnkgI3tpdGVyYXRpb24gKyAxfS8j
e0BtYXhJdGVyYXRpb25zfTogI3t0ZXN0c0luZm99I3tyZW1vdGVIb3N0c0luZm99IikKKyAgICAg
ICAgfQorICAgICAgICBzdGF0dXNNYXAKKyAgICBlbmQKK2VuZAorCittb2R1bGUgRXhlY3V0b3JT
ZWxmVGVzdHMKKyAgICBGaW5hbFRlc3RSZXN1bHQgPSBTdHJ1Y3QubmV3KDpyZXN1bHQpCisgICAg
VGVzdFJlc3VsdCA9IFN0cnVjdC5uZXcoOnJlc3VsdHMpCisgICAgSXRlcmF0aW9uID0gU3RydWN0
Lm5ldyg6dGVzdFJlc3VsdHMpCisgICAgVGVzdENhc2UgPSBTdHJ1Y3QubmV3KDp0ZXN0c1dpdGhG
bGFreSwgOml0ZXJhdGlvbnMsIDpleHBlY3RlZFRlc3RSZXN1bHRzLCA6dHJlYXRGYWlsaW5nQXNG
bGFreSkKKyAgICBNT0NLX1RFU1RfRkFNSUxZID0gImYiCisgICAgSVRFUkFUSU9OX0xJTUlUUyA9
IE9wZW5TdHJ1Y3QubmV3KDppbmZyYUl0ZXJhdGlvbnNGbG9vciA9PiAzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6aXRlcmF0aW9uc0NlaWxpbmcgPT4gOCkKKyAgICBj
bGFzcyBNb2NrVGVzdHNFeGVjdXRvciA8IEJhc2VUZXN0c0V4ZWN1dG9yCisgICAgICAgIGF0dHJf
cmVhZGVyIDpleGVjdXRlZEl0ZXJhdGlvbnMKKyAgICAgICAgZGVmIGluaXRpYWxpemUocnVubGlz
dCwgaXRlcmF0aW9uUmVzdWx0cywgbWF4SXRlcmF0aW9uc0JvdW5kcywgdHJlYXRGYWlsaW5nQXNG
bGFreSwgbG9nU3RyZWFtKQorICAgICAgICAgICAgc3VwZXIocnVubGlzdCwgW10sIG5pbCwgbWF4
SXRlcmF0aW9uc0JvdW5kcywgdHJlYXRGYWlsaW5nQXNGbGFreSwgbG9nU3RyZWFtKQorICAgICAg
ICAgICAgQGl0ZXJhdGlvblJlc3VsdHMgPSBpdGVyYXRpb25SZXN1bHRzCisgICAgICAgICAgICBA
ZXhlY3V0ZWRJdGVyYXRpb25zID0gMAorICAgICAgICBlbmQKKyAgICAgICAgZGVmIHByZXBhcmVB
cnRpZmFjdHMocmVtb3RlSG9zdHMpCisgICAgICAgIGVuZAorICAgICAgICBkZWYgcHJlcGFyZUV4
ZWN1dGlvbihyZW1vdGVIb3N0cykKKyAgICAgICAgICAgIHJlbW90ZUhvc3RzCisgICAgICAgIGVu
ZAorICAgICAgICBkZWYgZXhlY3V0ZVRlc3RzKHJlbW90ZUhvc3RzKQorICAgICAgICBlbmQKKyAg
ICAgICAgZGVmIHVwZGF0ZVN0YXR1c01hcChpdGVyYXRpb24sIHN0YXR1c01hcCkKKyAgICAgICAg
ICAgIGlmIGl0ZXJhdGlvbiA+PSBAaXRlcmF0aW9uUmVzdWx0cy5zaXplCisgICAgICAgICAgICAg
ICAgJHN0ZGVyci5wdXRzKCJUcnlpbmcgdG8gZXhlY3V0ZSBpdGVyYXRpb24gI3tpdGVyYXRpb259
IGJ1dCBvbmx5IGhhdmUgI3tAaXRlcmF0aW9uUmVzdWx0cy5zaXplfSBpdGVyYXRpb24gcmVzdWx0
cyBhdmFpbGFibGUiKQorICAgICAgICAgICAgICAgIHJhaXNlICJTZWxmIHRlc3QgZXJyb3I6IGlu
c3VmZmljaWVudCBpdGVyYXRpb25zIgorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBAZXhl
Y3V0ZWRJdGVyYXRpb25zICs9IDEKKyAgICAgICAgICAgIEBpdGVyYXRpb25SZXN1bHRzW2l0ZXJh
dGlvbl0uZWFjaCB7IHxpdGVyYXRpb258CisgICAgICAgICAgICAgICAgaXRlcmF0aW9uLmVhY2hf
d2l0aF9pbmRleCB7IHx0ZXN0UmVzdWx0LCB0ZXN0SW5kZXh8CisgICAgICAgICAgICAgICAgICAg
IGluZGV4ID0gQHJ1bmxpc3RbdGVzdEluZGV4XS5pbmRleAorICAgICAgICAgICAgICAgICAgICAj
IEJlY2F1c2Ugb2YgaW5mcmEgaXNzdWVzLCBhIHRlc3QgbWlnaHQgaGF2ZSBtdWx0aXBsZSByZXN1
bHRzLgorICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0LnJlc3VsdHMuZWFjaCB7IHxyZXN1
bHR8CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gIi4vI3tTVEFUVVNfRklMRV9QUkVG
SVh9I3tpbmRleH0gI3skcnVuVW5pcXVlSWR9IDAgI3tyZXN1bHR9IgorICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc1N0YXR1c0xpbmUoc3RhdHVzTWFwLCBsaW5lKQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
cHV0ZCgic3RhdHVzTWFwOiAje3N0YXR1c01hcH0iKQorICAgICAgICAgICAgc3RhdHVzTWFwCisg
ICAgICAgIGVuZAorICAgICAgICBkZWYgcmVmcmVzaEV4ZWN1dGlvbihydW5saXN0LCBzZXJpYWxQ
bGFucywgY29tcGxldGVkVGVzdHMpCisgICAgICAgIGVuZAorICAgIGVuZAorCisgICAgZGVmIEV4
ZWN1dG9yU2VsZlRlc3RzLnJ1bgorICAgICAgICB0cmYgPSBUZXN0UmVzdWx0Lm5ldyhbU1RBVFVT
X0ZJTEVfRkFJTF0pCisgICAgICAgIHRycCA9IFRlc3RSZXN1bHQubmV3KFtTVEFUVVNfRklMRV9Q
QVNTXSkKKyAgICAgICAgdHJlID0gVGVzdFJlc3VsdC5uZXcoW10pCisgICAgICAgIGZ0cnAgPSBG
aW5hbFRlc3RSZXN1bHQubmV3KFNUQVRVU19GSUxFX1BBU1MpCisgICAgICAgIGZ0cmYgPSBGaW5h
bFRlc3RSZXN1bHQubmV3KFNUQVRVU19GSUxFX0ZBSUwpCisgICAgICAgIGZ0cmUgPSBGaW5hbFRl
c3RSZXN1bHQubmV3KG5pbCkKKyAgICAgICAgWworICAgICAgICAgICAgVGVzdENhc2UubmV3KFtu
aWwsIG5pbF0sICMgMiB0ZXN0cyAodDAsIHQxKSwgbmVpdGhlciBmbGFreQorICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cnAsICMgdDAgcGFzc2VkCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHJwLCAjIHQxIHBhc3NlZAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSksCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25p
bCwgbmlsXSwgIyAyIHRlc3RzICh0MCwgdDEpLCBuZWl0aGVyIGZsYWt5CisgICAgICAgICAgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3
KFt0cnAsIHRyZl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgW2Z0cnAsIGZ0cmZdKSwKKyAgICAgICAgICAgICMgMSB0ZXN0IGdpdmVzIG5v
IHJlc3VsdCwgbmVlZCBhIHNlY29uZCBpdGVyYXRpb24sIGJvdGggZmluYWxseSBwYXNzCisgICAg
ICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RycCwgdHJl
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJw
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbZnRycCwgZnRycF0pLAorICAgICAgICAgICAgIyAxIHRlc3QgZmFpbHMsIDEgZ2l2ZXMgbm8g
cmVzdWx0LCBuZWVkIGEgc2Vjb25kIGl0ZXJhdGlvbiwgb25lIGZpbmFsbHkgcGFzc2VzCisgICAg
ICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZiwgdHJl
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJw
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbZnRyZiwgZnRycF0pLAorICAgICAgICAgICAgIyAxIHRlc3QgcGFzc2VzLCAxIGdpdmVzIG5v
IHJlc3VsdCwgbmVlZCBhIHNlY29uZCBpdGVyYXRpb24sIG9uZSBmaW5hbGx5IHBhc3NlcworICAg
ICAgICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRy
ZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRy
Zl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgW2Z0cnAsIGZ0cmZdKSwKKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IyBGaXJzdCBpdGVyYXRpb24gZG9lc24ndCBwcm9kdWNlIGFueSByZXN1bHRzLgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZV0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmYsIHRyZV0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cmYsIGZ0cmZd
KSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0LCB3aGVuIG5vIGZsYWtpZXMgYXJlIHByZXNlbnQs
IHdlIHN0b3AgYXQKKyAgICAgICAgICAgICMgaW5mcmFJdGVyYXRpb25zRmxvb3Igd2hlbiBubyBy
ZXN1bHRzIGNvbWUgaW4uCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbSXRlcmF0aW9uLm5ldyhbdHJlLCB0cmVdKV0gKiBJVEVS
QVRJT05fTElNSVRTLmluZnJhSXRlcmF0aW9uc0Zsb29yLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFtmdHJlLCBmdHJlXSksCisgICAgICAgICAgICAjIFRlc3QgdGhlIG1heEl0ZXJhdGlvbnMg
YWRqdXN0bWVudCB3b3JrcyBhcyBleHBlY3RlZCBpbgorICAgICAgICAgICAgIyB0aGUgcHJlc2Vu
Y2Ugb2YgYSBzdGF0aWMgZmxha3kuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW0ZsYWt5Lm5l
dygwLjM5LCA0KSwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMgU2luY2Ugd2UgaGF2ZSBhIGZsYWt5IHRlc3QsIHRoZSBtYXhJ
dGVyYXRpb25zIGdldHMgYWRqdXN0ZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IyBJVEVSQVRJT05fTElNSVRTLmluZnJhSXRlcmF0aW9uc0Zsb29yICArIEZsYWt5Lm1heFRyaWVz
ID0gNy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0
cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0
cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmLCB0
cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0
cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0
cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0
cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFtmdHJwLCBmdHJwXSksCisgICAgICAgICAgICAjIFRlc3QgdGhhdCBhIGZsYWt5IGNhbiBm
aW5pc2ggZWFybHkuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW0ZsYWt5Lm5ldygwLjQsIDQp
LCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSksCisgICAgICAg
ICAgICAjIFNhbWUsIHdpdGggbW9yZSB2YXJpYWJpbGl0eS4KKyAgICAgICAgICAgIFRlc3RDYXNl
Lm5ldyhbbmlsLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cmZdKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cmZdKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuU3RydWN0Lm5ldyg6cGFzc1BlcmNlbnRhZ2Ug
PT4gMC40LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhUcmll
cyA9PiA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhGYWls
aW5nID0+IDMpKSwKKyAgICAgICAgICAgICMgU2FtZSwgd2l0aCBkaWZmZXJlbnQgdmFyaWFiaWxp
dHkuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXco
W3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXco
W3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXco
W3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXco
W3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXco
W3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXco
W3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXco
W3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBbZnRycCwgZnRyZl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgT3BlblN0
cnVjdC5uZXcoOnBhc3NQZXJjZW50YWdlID0+IDAuNCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gNiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiAzKSksCisgICAgICAgICAgICAjIFRlc3Qg
dGhhdCBhIGZsYWt5IGZvciB3aGljaCBub3QgZW5vdWdoIHJlc3VsdHMgY29tZSBpbiBpcyBub3Qg
bWFya2VkIGFzIGNvbXBsZXRlZC4KKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RyZl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmVdKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlXSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZV0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cmVdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3KDpwYXNzUGVyY2VudGFnZSA9PiAw
LjQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhUcmllcyA9
PiA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhGYWlsaW5n
ID0+IDEpKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0IChzdGF0aWNhbGx5KSBmbGFreSB0ZXN0
cyBhcmVuJ3QgYWRqdXN0ZWQKKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbRmxha3kubmV3KDAu
NSwgMyksIG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmYsIHRycF0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRyZV0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmYsIHRyZV0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cmYsIGZ0cnBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3KDpwYXNzUGVyY2VudGFnZSA9PiAw
LjcsICMgPiAyLzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4
VHJpZXMgPT4gNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4
RmFpbGluZyA9PiAzKSksCisgICAgICAgICAgICAjIFRlc3QgdGhhdCB3ZSByZXNwZWN0IG1heEZh
aWxpbmcuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsLCBuaWxdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0
aW9uLm5ldyhbdHJmLCB0cmYsIHRyZl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cmYsIGZ0cmYsIGZ0cmZdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3KDpwYXNzUGVyY2VudGFnZSA9PiAwLjcsICMgPiAy
LzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4g
NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9
PiAyKSksCisgICAgICAgICAgICAjIFRlc3QgdGhhdCB3ZSBoYWx0IGF0IG1heEl0ZXJhdGlvbnMg
KDMgKyA1ID0gOCkgaWYgbm8gcmVzdWx0cyBjb21lIGluLgorICAgICAgICAgICAgVGVzdENhc2Uu
bmV3KFtGbGFreS5uZXcoMC41LCA1KSwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBb
ZnRyZSwgZnRycF0pLAorICAgICAgICBdLmVhY2hfd2l0aF9pbmRleCB7CisgICAgICAgICAgICB8
dGVzdGNhc2UsIHRlc3RjYXNlSW5kZXh8CisgICAgICAgICAgICBydW5saXN0ID0gW10KKyAgICAg
ICAgICAgIHB1dGQoIj09PT4gVGVzdGNhc2UgI3t0ZXN0Y2FzZUluZGV4fSIpCisgICAgICAgICAg
ICB0ZXN0Y2FzZS50ZXN0c1dpdGhGbGFreS5lYWNoX3dpdGhfaW5kZXggeyB8Zmxha3ksIGluZGV4
fAorICAgICAgICAgICAgICAgIHBsYW4gPSBCYXNlUGxhbi5tb2NrKE1PQ0tfVEVTVF9GQU1JTFks
ICJ0I3tpbmRleH0iLCBmbGFreSkKKyAgICAgICAgICAgICAgICBydW5saXN0IDw8IHBsYW4KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1dGQoInJ1bmxpc3Q6ICN7cnVubGlzdC5jb2xsZWN0
IHsgfHB8IHAudG9fcyB9fSwgZXhwZWN0ZWQ6ICN7dGVzdGNhc2UuZXhwZWN0ZWRUZXN0UmVzdWx0
c30iKQorICAgICAgICAgICAgZXhlY3V0b3IgPSBNb2NrVGVzdHNFeGVjdXRvci5uZXcocnVubGlz
dCwgdGVzdGNhc2UuaXRlcmF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElURVJBVElPTl9MSU1JVFMsIHRlc3RjYXNlLnRyZWF0RmFpbGluZ0FzRmxh
a3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGVzdHNE
ZWJ1Z1N0cmVhbSkKKyAgICAgICAgICAgIHN0YXR1c01hcCA9IGV4ZWN1dG9yLmxvb3AKKyAgICAg
ICAgICAgIGlmIGV4ZWN1dG9yLmV4ZWN1dGVkSXRlcmF0aW9ucyAhPSB0ZXN0Y2FzZS5pdGVyYXRp
b25zLnNpemUKKyAgICAgICAgICAgICAgICAjIFRoZSB0ZXN0Y2FzZSBzaG91bGQgcHJvdmlkZSBl
eGFjdGx5IGFzIG1hbnkKKyAgICAgICAgICAgICAgICAjIGl0ZXJhdGlvbiByZXN1bHRzIGFzIG5l
ZWRlZC4KKyAgICAgICAgICAgICAgICByYWlzZSAiRXhlY3V0ZWQgI3tleGVjdXRvci5leGVjdXRl
ZEl0ZXJhdGlvbnN9LCAje3Rlc3RjYXNlLml0ZXJhdGlvbnMuc2l6ZX0gZ2l2ZW4iCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgIGV4cGVjdENvbXBsZXRlZCA9IFNldC5uZXcocnVubGlzdC5z
ZWxlY3QgeyB8cGxhbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vdCB0ZXN0Y2FzZS5leHBlY3RlZFRlc3RSZXN1bHRzW3J1bmxpc3QuaW5kZXgocGxhbildLnJl
c3VsdC5uaWw/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCisKKyAg
ICAgICAgICAgIGV2YWx1YXRvciA9IFRlc3RSZXN1bHRFdmFsdWF0b3JTaW1wbGUubmV3KHJ1bmxp
c3QsIHN0YXR1c01hcCkKKyAgICAgICAgICAgIGV2YWx1YXRvci52aXNpdCEKKworICAgICAgICAg
ICAgdmVyaWZ5Q29tcGxldGVkVGVzdHNNYXRjaEV4cGVjdGVkKHN0YXR1c01hcCwgZXZhbHVhdG9y
LmNvbXBsZXRlZCwgZXhwZWN0Q29tcGxldGVkKQorCisgICAgICAgICAgICB0ZXN0Y2FzZUZhaWxl
ZCA9IGZhbHNlCisgICAgICAgICAgICBydW5saXN0LmVhY2hfd2l0aF9pbmRleCB7IHxwbGFuLCBp
bmRleHwKKyAgICAgICAgICAgICAgICBjYXNlIHRlc3RjYXNlLmV4cGVjdGVkVGVzdFJlc3VsdHNb
aW5kZXhdLnJlc3VsdAorICAgICAgICAgICAgICAgIHdoZW4gbmlsCisgICAgICAgICAgICAgICAg
ICAgIGlmIGV2YWx1YXRvci50ZXN0c1Bhc3NlZC5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdGNhc2VGYWlsZWQgPSB0cnVlCisgICAgICAgICAgICAgICAgICAgICAg
ICAkc3RkZXJyLnB1dHMoIlRlc3QgI3tpbmRleH0gc2hvdWxkIG5vdCBoYXZlIGNvbXBsZXRlZCBi
dXQgcGFzc2VkIikKKyAgICAgICAgICAgICAgICAgICAgZWxzaWYgZXZhbHVhdG9yLnRlc3RzRmFp
bGVkLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZUZhaWxl
ZCA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICRzdGRlcnIucHV0cygiVGVzdCAje2lu
ZGV4fSBzaG91bGQgbm90IGhhdmUgY29tcGxldGVkIGJ1dCBmYWlsZWQiKQorICAgICAgICAgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICB3aGVuIFNUQVRVU19GSUxFX1BBU1MKKyAgICAg
ICAgICAgICAgICAgICAgaWYgbm90IGV2YWx1YXRvci50ZXN0c1Bhc3NlZC5pbmNsdWRlPyhwbGFu
KQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2VGYWlsZWQgPSB0cnVlCisgICAgICAg
ICAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlRlc3QgI3tpbmRleH0gc2hvdWxkIGhhdmUg
cGFzc2VkIGJ1dCBkaWRuJ3QiKQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgICB3aGVuIFNUQVRVU19GSUxFX0ZBSUwKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGV2
YWx1YXRvci50ZXN0c0ZhaWxlZC5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdGNhc2VGYWlsZWQgPSB0cnVlCisgICAgICAgICAgICAgICAgICAgICAgICAkc3RkZXJy
LnB1dHMoIlRlc3QgI3tpbmRleH0gc2hvdWxkIGhhdmUgZmFpbGVkIGJ1dCBkaWRuJ3QiKQorICAg
ICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHJhaXNlICJDYW4ndCBnZXQgaGVyZSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIHRlc3RjYXNlRmFpbGVkCisgICAgICAgICAgICAgICAg
JHN0ZGVyci5wdXRzKCJzdGF0dXNNYXAgPSAje3N0YXR1c01hcH0iKQorICAgICAgICAgICAgICAg
IHJhaXNlICJTZWxmIHRlc3QgZmFpbHVyZSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9Cisg
ICAgZW5kCitlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3Ry
ZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9yLnJiIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRy
dWJ5L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFsdWF0b3IucmIKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmFjZGZmYmQzNWRjYTAzZGY0ZTI4YzgwMjA5NWIwMWM5M2JjNmM3NwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvdGVzdC1yZXN1bHQt
ZXZhbHVhdG9yLnJiCkBAIC0wLDAgKzEsMjkzIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBJZ2Fs
aWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFZpc2l0cyB0aGUg
dGVzdHMgaW4gdGhlIHJ1bmxpc3QgYW5kIGludm9rZXMgYSBudW1iZXIgb2YKKyMgY2FsbGJhY2tz
LiBVc2VkIHZpYSBzdWJjbGFzc2luZy4KK2NsYXNzIFRlc3RSZXN1bHRFdmFsdWF0b3IKKyAgICBk
ZWYgaW5pdGlhbGl6ZShydW5saXN0LCBzdGF0dXNNYXApCisgICAgICAgIEBydW5saXN0ID0gcnVu
bGlzdAorICAgICAgICBAc3RhdHVzTWFwID0gc3RhdHVzTWFwCisgICAgZW5kCisgICAgZGVmIG5v
UmVzdWx0KHBsYW4pCisgICAgICAgICMgWFhYOiBtYXliZSBmb2N1cyBvbiBpbmNvbXBsZXRlIGlu
IHJlcG9ydGluZz8KKyAgICBlbmQKKyAgICBkZWYgcGFzc2VkKHBsYW4pCisgICAgZW5kCisgICAg
ZGVmIGZhaWxlZChwbGFuKQorICAgIGVuZAorICAgIGRlZiB3YXNGbGFreUFuZFBhc3NlZChwbGFu
LCBzdWNjZXNzZXMsIHRyaWVzKQorICAgIGVuZAorICAgIGRlZiB2aXNpdGluZyhwbGFuKQorICAg
IGVuZAorICAgIGRlZiB2aXNpdCEKKyAgICAgICAgQHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAg
ICB8cGxhbnwKKyAgICAgICAgICAgIHZpc2l0aW5nKHBsYW4pCisgICAgICAgICAgICBpZiBub3Qg
QHN0YXR1c01hcC5oYXNfa2V5PyhwbGFuLmluZGV4KQorICAgICAgICAgICAgICAgIG5vUmVzdWx0
KHBsYW4pCisgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAgZW5kCisgICAgICAgICAg
ICBzdGF0dXNlcyA9IEBzdGF0dXNNYXBbcGxhbi5pbmRleF0KKyAgICAgICAgICAgIHRlc3RXYXNT
dWNjZXNzZnVsID0gbmlsCisgICAgICAgICAgICBpZiBwbGFuLmZsYWt5Lm5pbD8KKyAgICAgICAg
ICAgICAgICAjIElmIGFueSBvZiB0aGUgcmVzdWx0cyB3ZSBnb3Qgd2FzIGEgcGFzcywgY29uc2lk
ZXIgdGhlCisgICAgICAgICAgICAgICAgIyB0ZXN0IHN1Y2Nlc3NmdWwuIFRoZSBhc3N1bXB0aW9u
IGhlcmUgaXMgdGhhdCwgdW5sZXNzIGEKKyAgICAgICAgICAgICAgICAjIHRlc3QgaXMgbWFya2Vk
IGFzIGZsYWt5LCBmYWlsdXJlcyBhcmUgYmVjYXVzZSBvZgorICAgICAgICAgICAgICAgICMgaW5m
cmFzdHJ1Y3R1cmUgaXNzdWVzICh3aGljaCBpcyB3aHkgdGhlIHRlc3Qgd2FzIHJ1bgorICAgICAg
ICAgICAgICAgICMgbXVsdGlwbGUgdGltZXMgaW4gdGhlIGZpcnN0IHBsYWNlKS4KKyAgICAgICAg
ICAgICAgICB0ZXN0V2FzU3VjY2Vzc2Z1bCA9IHN0YXR1c2VzLmluY2x1ZGU/KFNUQVRVU19GSUxF
X1BBU1MpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFdhc1N1Y2Nlc3Nm
dWwgPSBwbGFuLmZsYWt5LnJlc3VsdChzdGF0dXNlcykKKyAgICAgICAgICAgICAgICBpZiB0ZXN0
V2FzU3VjY2Vzc2Z1bC5uaWw/CisgICAgICAgICAgICAgICAgICAgICMgTm90IGNvbXBsZXRlZCB5
ZXQKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICBpZiB0ZXN0V2FzU3VjY2Vzc2Z1bAorICAgICAgICAgICAg
ICAgIHBhc3NlZChwbGFuKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZhaWxl
ZChwbGFuKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBucmVzdWx0cyA9IHN0YXR1c2Vz
LnVuaXEuc2l6ZQorICAgICAgICAgICAgaWYgbnJlc3VsdHMgPCAxCisgICAgICAgICAgICAgICAg
JHN0ZGVyci5wdXRzKCJVbmV4cGVjdGVkIG51bWJlciBvZiByZXN1bHRzOiAje25yZXN1bHRzfSBm
b3IgcGxhbiAje3BsYW59IikKKyAgICAgICAgICAgICAgICByYWlzZSAiVW5leHBlY3RlZCBudW1i
ZXIgb2YgcmVzdWx0cyIKKyAgICAgICAgICAgIGVsc2lmIG5yZXN1bHRzICE9IDEgYW5kIHRlc3RX
YXNTdWNjZXNzZnVsCisgICAgICAgICAgICAgICAgd2FzRmxha3lBbmRQYXNzZWQocGxhbiwgc3Rh
dHVzZXMuY291bnQoU1RBVFVTX0ZJTEVfUEFTUyksIHN0YXR1c2VzLnNpemUpCisgICAgICAgICAg
ICBlbmQKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKKyMgU2ltcGxlIGJlYW4gY291bnRpbmcg
Y2xhc3Mgd2l0aCBubyBzaWRlLWVmZmVjdHMuCitjbGFzcyBUZXN0UmVzdWx0RXZhbHVhdG9yU2lt
cGxlIDwgVGVzdFJlc3VsdEV2YWx1YXRvcgorICAgIGF0dHJfcmVhZGVyIDp0ZXN0c1Bhc3NlZCwg
OnRlc3RzRmFpbGVkCisgICAgZGVmIGluaXRpYWxpemUocnVubGlzdCwgc3RhdHVzTWFwKQorICAg
ICAgICBzdXBlcihydW5saXN0LCBzdGF0dXNNYXApCisgICAgICAgIEB0ZXN0c1Bhc3NlZCA9IFNl
dC5uZXcKKyAgICAgICAgQHRlc3RzRmFpbGVkID0gU2V0Lm5ldworICAgICAgICBAbm9SZXN1bHQg
PSBTZXQubmV3CisgICAgICAgIEBhbGwgPSBTZXQubmV3CisgICAgZW5kCisgICAgZGVmIHZpc2l0
aW5nKHBsYW4pCisgICAgICAgIEBhbGwuYWRkKHBsYW4pCisgICAgZW5kCisgICAgZGVmIHBhc3Nl
ZChwbGFuKQorICAgICAgICBAdGVzdHNQYXNzZWQuYWRkKHBsYW4pCisgICAgZW5kCisgICAgZGVm
IGZhaWxlZChwbGFuKQorICAgICAgICBAdGVzdHNGYWlsZWQuYWRkKHBsYW4pCisgICAgZW5kCisg
ICAgZGVmIG5vUmVzdWx0KHBsYW4pCisgICAgICAgIEBub1Jlc3VsdC5hZGQocGxhbikKKyAgICBl
bmQKKyAgICBkZWYgY29tcGxldGVkCisgICAgICAgIEB0ZXN0c1Bhc3NlZCB8IEB0ZXN0c0ZhaWxl
ZAorICAgIGVuZAorICAgIGRlZiBtaXNzaW5nCisgICAgICAgIEBub1Jlc3VsdAorICAgIGVuZAor
ZW5kCisKK2NsYXNzIFJlc3VsdHNXcml0ZXIKKyAgICBkZWYgaW5pdGlhbGl6ZQorICAgICAgICBA
ZmlsZXMgPSB7fQorICAgIGVuZAorICAgIGRlZiBhcHBlbmQoZmlsZW5hbWUsIHMpCisgICAgICAg
IGlmIG5vdCBAZmlsZXMuaGFzX2tleT8oZmlsZW5hbWUpCisgICAgICAgICAgICBAZmlsZXNbZmls
ZW5hbWVdID0gRmlsZS5vcGVuKCRvdXRwdXREaXIgKyBmaWxlbmFtZSwgImEiKQorICAgICAgICBl
bmQKKyAgICAgICAgQGZpbGVzW2ZpbGVuYW1lXS5wdXRzKHMpCisgICAgZW5kCisgICAgZGVmIGFw
cGVuZEZhaWx1cmUocGxhbikKKyAgICAgICAgYXBwZW5kKCJmYWlsZWQiLCBwbGFuLm5hbWUpCisg
ICAgZW5kCisgICAgZGVmIGFwcGVuZFBhc3MocGxhbikKKyAgICAgICAgYXBwZW5kKCJwYXNzZWQi
LCBwbGFuLm5hbWUpCisgICAgZW5kCisgICAgZGVmIGFwcGVuZE5vUmVzdWx0KHBsYW4pCisgICAg
ICAgIGFwcGVuZCgibm9yZXN1bHQiLCBwbGFuLm5hbWUpCisgICAgZW5kCisgICAgZGVmIGFwcGVu
ZEZsYWt5KHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMpCisgICAgICAgIGFwcGVuZCgiZmxha3kiLCAi
I3twbGFuLm5hbWV9ICN7c3VjY2Vzc2VzfSAje3RyaWVzfSIpCisgICAgZW5kCisgICAgZGVmIGFw
cGVuZFJlc3VsdChwbGFuLCBkaWRQYXNzKQorICAgICAgICBhcHBlbmQoInJlc3VsdHMiLCAiI3tw
bGFuLm5hbWV9OiAje2RpZFBhc3MgPyAnUEFTUycgOiAnRkFJTCd9IikKKyAgICBlbmQKKyAgICBk
ZWYgY2xvc2UKKyAgICAgICAgQGZpbGVzLmVhY2hfdmFsdWUgeyB8ZnwKKyAgICAgICAgICAgIGYu
Y2xvc2UKKyAgICAgICAgfQorICAgICAgICBAZmlsZXMuY2xlYXIKKyAgICBlbmQKK2VuZAorCisj
IEZpbmFsIGFjY291bnRpbmcgb2YgcmVzdWx0cy4KK2NsYXNzIFRlc3RSZXN1bHRFdmFsdWF0b3JG
aW5hbCA8IFRlc3RSZXN1bHRFdmFsdWF0b3IKKyAgICBhdHRyX3JlYWRlciA6bm9yZXN1bHQsIDpm
YW1pbHlNYXAKKyAgICBkZWYgaW5pdGlhbGl6ZShydW5saXN0LCBzdGF0dXNNYXApCisgICAgICAg
IHN1cGVyKHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgQG5vcmVzdWx0ID0gMAorICAgICAg
ICBAZmFtaWx5TWFwID0ge30KKyAgICAgICAgQHdyaXRlciA9IFJlc3VsdHNXcml0ZXIubmV3Cisg
ICAgZW5kCisgICAgZGVmIG5vUmVzdWx0KHBsYW4pCisgICAgICAgIEB3cml0ZXIuYXBwZW5kTm9S
ZXN1bHQocGxhbikKKyAgICAgICAgQG5vcmVzdWx0ICs9IDEKKyAgICBlbmQKKyAgICBkZWYgcGFz
c2VkKHBsYW4pCisgICAgICAgIEB3cml0ZXIuYXBwZW5kUGFzcyhwbGFuKQorICAgICAgICBhcHBl
bmRSZXN1bHQocGxhbiwgdHJ1ZSkKKyAgICAgICAgYWRkVG9GYW1pbHlNYXAocGxhbiwgIlBBU1Mi
KQorICAgIGVuZAorICAgIGRlZiBmYWlsZWQocGxhbikKKyAgICAgICAgQHdyaXRlci5hcHBlbmRG
YWlsdXJlKHBsYW4pCisgICAgICAgIGFwcGVuZFJlc3VsdChwbGFuLCBmYWxzZSkKKyAgICAgICAg
YWRkVG9GYW1pbHlNYXAocGxhbiwgIkZBSUwiKQorICAgIGVuZAorICAgIGRlZiB3YXNGbGFreUFu
ZFBhc3NlZChwbGFuLCBzdWNjZXNzZXMsIHRyaWVzKQorICAgICAgICBAd3JpdGVyLmFwcGVuZEZs
YWt5KHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMpCisgICAgZW5kCisgICAgcHJpdmF0ZQorICAgIGRl
ZiBhcHBlbmRSZXN1bHQocGxhbiwgc3VjY2Vzc2Z1bCkKKyAgICAgICAgQHdyaXRlci5hcHBlbmRS
ZXN1bHQocGxhbiwgc3VjY2Vzc2Z1bCkKKyAgICBlbmQKKyAgICBkZWYgYWRkVG9GYW1pbHlNYXAo
cGxhbiwgcmVzdWx0KQorICAgICAgICB1bmxlc3MgZmFtaWx5TWFwW3BsYW4uZmFtaWx5XQorICAg
ICAgICAgICAgZmFtaWx5TWFwW3BsYW4uZmFtaWx5XSA9IFtdCisgICAgICAgIGVuZAorICAgICAg
ICBmYW1pbHlNYXBbcGxhbi5mYW1pbHldIDw8IHsgOnJlc3VsdCA9PiByZXN1bHQsIDpwbGFuID0+
IHBsYW59CisgICAgZW5kCitlbmQKKworZGVmIHZlcmlmeUNvbXBsZXRlZFRlc3RzTWF0Y2hFeHBl
Y3RlZChzdGF0dXNNYXAsIGNvbXBsZXRlZCwgZXhwZWN0ZWQpCisgICAgaWYgY29tcGxldGVkICE9
IGV4cGVjdGVkCisgICAgICAgIHVuZXhwZWN0ZWRseUNvbXBsZXRlZCA9IChjb21wbGV0ZWQgLSBl
eHBlY3RlZCkuY29sbGVjdCB7IHxwbGFufAorICAgICAgICAgICAgIiMje3BsYW4uaW5kZXh9OiAj
e3N0YXR1c01hcFtwbGFuLmluZGV4XX0iCisgICAgICAgIH0uam9pbigiIHwgIikKKyAgICAgICAg
JHN0ZGVyci5wdXRzKCJVbmV4cGVjdGVkbHkgY29tcGxldGVkOiAje3VuZXhwZWN0ZWRseUNvbXBs
ZXRlZH0iKQorICAgICAgICBleHBlY3RlZEJ1dE5vdENvbXBsZXRlZCA9IChleHBlY3RlZCAtIGNv
bXBsZXRlZCkuY29sbGVjdCB7IHxwbGFufAorICAgICAgICAgICAgIiMje3BsYW4uaW5kZXh9OiAj
e3N0YXR1c01hcFtwbGFuLmluZGV4XX0iCisgICAgICAgIH0uam9pbigiIHwgIikKKyAgICAgICAg
JHN0ZGVyci5wdXRzKCJFeHBlY3RlZCBidXQgbm90IGNvbXBsZXRlZDogI3tleHBlY3RlZEJ1dE5v
dENvbXBsZXRlZH0iKQorICAgICAgICByYWlzZSAibWlzbWF0Y2giCisgICAgZW5kCitlbmQKKwor
bW9kdWxlIFRlc3RSZXN1bHRFdmFsdWF0b3JTZWxmVGVzdHMKKyAgICBkZWYgVGVzdFJlc3VsdEV2
YWx1YXRvclNlbGZUZXN0cy5zZWxmVGVzdFRlc3RSZXN1bHRFdmFsdWF0b3IKKyAgICAgICAgcnVu
bGlzdCA9IFtdCisgICAgICAgIHN0YXR1c01hcCA9IHt9CisgICAgICAgIGV4cGVjdGVkUGFzcyA9
IFNldC5uZXcKKyAgICAgICAgZXhwZWN0ZWRGYWlsID0gU2V0Lm5ldworICAgICAgICB0YyA9IFN0
cnVjdC5uZXcoOnN0YXR1c2VzLCA6ZXhwZWN0ZWRQYXNzKQorICAgICAgICBbCisgICAgICAgICAg
ICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCB0cnVlKSwKKyAgICAgICAgICAgIHRjLm5ldyhb
U1RBVFVTX0ZJTEVfUEFTU10sIHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklM
RV9QQVNTLCBTVEFUVVNfRklMRV9QQVNTXSwgdHJ1ZSksCisgICAgICAgICAgICB0Yy5uZXcoW1NU
QVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX0ZBSUxdLCB0cnVlKSwKKyAgICAgICAgICAgIHRj
Lm5ldyhbU1RBVFVTX0ZJTEVfRkFJTF0sIGZhbHNlKSwKKyAgICAgICAgICAgIHRjLm5ldyhbU1RB
VFVTX0ZJTEVfRkFJTCwgU1RBVFVTX0ZJTEVfRkFJTF0sIGZhbHNlKSwKKyAgICAgICAgXS5lYWNo
X3dpdGhfaW5kZXggeworICAgICAgICAgICAgfHRlc3QsIHRlc3RJbmRleHwKKyAgICAgICAgICAg
IHBsYW4gPSBCYXNlUGxhbi5tb2NrKCJmIiwgInQje3Rlc3RJbmRleH0iKQorICAgICAgICAgICAg
cnVubGlzdCA8PCBwbGFuCisgICAgICAgICAgICBzdGF0dXNNYXBbcGxhbi5pbmRleF0gPSB0ZXN0
LnN0YXR1c2VzCisgICAgICAgICAgICBpZiB0ZXN0LmV4cGVjdGVkUGFzcworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUGFzcy5hZGQocGxhbikKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZEZhaWwuYWRkKHBsYW4pCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQor
ICAgICAgICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0RXZhbHVhdG9yU2ltcGxlLm5ldyhydW5saXN0
LCBzdGF0dXNNYXApCisgICAgICAgIGV2YWx1YXRvci52aXNpdCEKKworICAgICAgICBpZiBleHBl
Y3RlZFBhc3MgIT0gZXZhbHVhdG9yLnRlc3RzUGFzc2VkCisgICAgICAgICAgICAkc3RkZXJyLnB1
dHMoImV4cGVjdGVkUGFzczogI3tleHBlY3RlZFBhc3N9IikKKyAgICAgICAgICAgICRzdGRlcnIu
cHV0cygiUGFzc2VkOiAje2V2YWx1YXRvci50ZXN0c1Bhc3NlZH0iKQorICAgICAgICAgICAgcmFp
c2UgImV4cGVjdGVkUGFzcyBtaXNtYXRjaCIKKyAgICAgICAgZW5kCisgICAgICAgIGlmIGV4cGVj
dGVkRmFpbCAhPSBldmFsdWF0b3IudGVzdHNGYWlsZWQKKyAgICAgICAgICAgICRzdGRlcnIucHV0
cygiZXhwZWN0ZWRGYWlsOiAje2V4cGVjdGVkRmFpbH0iKQorICAgICAgICAgICAgJHN0ZGVyci5w
dXRzKCJGYWlsZWQ6ICN7ZXZhbHVhdG9yLnRlc3RzRmFpbGVkfSIpCisgICAgICAgICAgICByYWlz
ZSAiZXhwZWN0ZWRGYWlsIG1pc21hdGNoIgorICAgICAgICBlbmQKKyAgICBlbmQKKworICAgIGRl
ZiBnZXRDb21wbGV0ZWRUZXN0c0Zyb21TdGF0dXNNYXAocnVubGlzdCwgc3RhdHVzTWFwKQorICAg
ICAgICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0RXZhbHVhdG9yU2ltcGxlLm5ldyhydW5saXN0LCBz
dGF0dXNNYXApCisgICAgICAgIGV2YWx1YXRvci52aXNpdCEKKyAgICAgICAgZXZhbHVhdG9yLmNv
bXBsZXRlZAorICAgIGVuZAorCisgICAgZGVmIFRlc3RSZXN1bHRFdmFsdWF0b3JTZWxmVGVzdHMu
c2VsZlRlc3RHZXRDb21wbGV0ZWRUZXN0c0Zyb21TdGF0dXNNYXAKKyAgICAgICAgcnVubGlzdCA9
IFtdCisgICAgICAgIGV4cGVjdENvbXBsZXRlZCA9IFNldC5uZXcKKyAgICAgICAgc3RhdHVzTWFw
ID0ge30KKyAgICAgICAgdGMgPSBTdHJ1Y3QubmV3KDpzdGF0dXNlcywgOmZsYWt5LCA6c2hvdWxk
Q291bnRBc0NvbXBsZXRlZCkKKyAgICAgICAgWworICAgICAgICAgICAgIyBObyByZXN1bHRzID0+
IG5vdCBjb21wbGV0ZWQKKyAgICAgICAgICAgIHRjLm5ldyhuaWwsIG5pbCwgZmFsc2UpLAorICAg
ICAgICAgICAgdGMubmV3KG5pbCwgRmxha3kubmV3KDAuNiwgMiksIGZhbHNlKSwKKworICAgICAg
ICAgICAgIyBQYXNzZWQvZmFpbGVkIGFuZCBub3QgZmxha3kgLT4gY29tcGxldGVkCisgICAgICAg
ICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCBuaWwsIHRydWUpLAorICAgICAgICAgICAg
dGMubmV3KFtTVEFUVVNfRklMRV9GQUlMXSwgbmlsLCB0cnVlKSwKKworICAgICAgICAgICAgIyBJ
ZiBpdCBoYXMgbXVsdGlwbGUgcmVzdWx0cyBhbmQgaXMgbm90IGEgZmxha3ksIHRoYXQgbWVhbnMg
aXQKKyAgICAgICAgICAgICMgd2FzIHJlLXJ1biBiZWNhdXNlIG9mIGluZnJhc3RydWN0dXJlIGlz
c3Vlcy4gQ291bnRzIGFzCisgICAgICAgICAgICAjIGNvbXBsZXRlZCByZWdhcmRsZXNzIG9mIHRo
ZSBhY3R1YWwgcmVzdWx0cy4KKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTUywg
U1RBVFVTX0ZJTEVfUEFTU10sIG5pbCwgdHJ1ZSksCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRV
U19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX0ZBSUxdLCBuaWwsIHRydWUpLAorICAgICAgICAgICAg
dGMubmV3KFtTVEFUVVNfRklMRV9GQUlMLCBTVEFUVVNfRklMRV9GQUlMXSwgbmlsLCB0cnVlKSwK
KworICAgICAgICAgICAgIyBOb3QgY29tcGxldGVkOiB3ZSBoYXZlIG9uZSBydW4gcmVtYWluaW5n
IGFuZCB0aGlzIGNvdWxkIGZsaXAKKyAgICAgICAgICAgICMgdGhlIHBlcmNlbnRhZ2UuCisgICAg
ICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCBGbGFreS5uZXcoMC42LCAyKSwgZmFs
c2UpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMXSwgRmxha3kubmV3KDAu
NCwgMiksIGZhbHNlKSwKKworICAgICAgICAgICAgIyBFdmVuIGlmIHRoZSBsYXN0IG9uZSBmYWls
cyB3ZSdyZSBzdGlsbCBnb25uYSBiZSBhYm92ZQorICAgICAgICAgICAgIyAocmVzcGVjdGl2ZWx5
IGJlbG93KSB0aGUgcGFzcyBwZXJjZW50YWdlLgorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNf
RklMRV9QQVNTLCBTVEFUVVNfRklMRV9QQVNTXSwgRmxha3kubmV3KDAuNSwgMyksIHRydWUpLAor
ICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMLCBTVEFUVVNfRklMRV9GQUlMXSwg
Rmxha3kubmV3KDAuNSwgMyksIHRydWUpLAorICAgICAgICBdLmVhY2hfd2l0aF9pbmRleCB7Cisg
ICAgICAgICAgICB8dGVzdCwgdGVzdEluZGV4fAorICAgICAgICAgICAgcGxhbiA9IEJhc2VQbGFu
Lm1vY2soImYiLCAidCN7dGVzdEluZGV4fSIsIHRlc3QuZmxha3kpCisgICAgICAgICAgICBydW5s
aXN0IDw8IHBsYW4KKyAgICAgICAgICAgIGlmIG5vdCB0ZXN0LnN0YXR1c2VzLm5pbD8KKyAgICAg
ICAgICAgICAgICBzdGF0dXNNYXBbcGxhbi5pbmRleF0gPSB0ZXN0LnN0YXR1c2VzCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgIGlmIHRlc3Quc2hvdWxkQ291bnRBc0NvbXBsZXRlZAorICAg
ICAgICAgICAgICAgIGV4cGVjdENvbXBsZXRlZC5hZGQocGxhbikKKyAgICAgICAgICAgIGVuZAor
ICAgICAgICB9CisgICAgICAgIGV2YWx1YXRvciA9IFRlc3RSZXN1bHRFdmFsdWF0b3JTaW1wbGUu
bmV3KHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgZXZhbHVhdG9yLnZpc2l0IQorCisgICAg
ICAgIHZlcmlmeUNvbXBsZXRlZFRlc3RzTWF0Y2hFeHBlY3RlZChzdGF0dXNNYXAsIGV2YWx1YXRv
ci5jb21wbGV0ZWQsIGV4cGVjdENvbXBsZXRlZCkKKyAgICBlbmQKKyAgICBkZWYgVGVzdFJlc3Vs
dEV2YWx1YXRvclNlbGZUZXN0cy5ydW4KKyAgICAgICAgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZU
ZXN0cy5zZWxmVGVzdFRlc3RSZXN1bHRFdmFsdWF0b3IKKyAgICAgICAgVGVzdFJlc3VsdEV2YWx1
YXRvclNlbGZUZXN0cy5zZWxmVGVzdEdldENvbXBsZXRlZFRlc3RzRnJvbVN0YXR1c01hcAorICAg
IGVuZAorZW5kCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVz
cy10ZXN0L3dyaXRlci1kZWZhdWx0LnJiIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1z
dHJlc3MtdGVzdC93cml0ZXItZGVmYXVsdC5yYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWYxZGIwNzJmYTAxMGZk
NWRkNTE5ZTY0OGYzYmFiN2RhZmUxYWMxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC93cml0ZXItZGVmYXVsdC5yYgpAQCAtMCwwICsx
LDQ2MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworZGVmIHByZWZp
eENvbW1hbmQocHJlZml4KQorICAgICJhd2sgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoInsg
cHJpbnRmICN7KHByZWZpeCArICc6ICcpLmluc3BlY3R9OyBwcmludCB9IikKK2VuZAorCitkZWYg
cmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHByZWZpeCkKKyAgICBwcmVmaXhDb21tYW5kKHByZWZp
eCkgKyAiIDI+JjEiCitlbmQKKworZGVmIHBpcGVBbmRQcmVmaXhDb21tYW5kKG91dHB1dEZpbGVu
YW1lLCBwcmVmaXgpCisgICAgInRlZSAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShvdXRwdXRG
aWxlbmFtZS50b19zKSArICIgfCAiICsgcHJlZml4Q29tbWFuZChwcmVmaXgpCitlbmQKKworIyBP
dXRwdXQgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gYmUgc2lsZW50Lgor
ZGVmIHNpbGVudE91dHB1dEhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgbmFtZSB8
CisgICAgICAgIHBpcGVBbmRQcmVmaXhDb21tYW5kKChQYXRobmFtZSgiLi4iKSArIChuYW1lICsg
Ii5vdXQiKSkudG9fcywgbmFtZSkKKyAgICB9CitlbmQKKworIyBPdXRwdXQgaGFuZGxlciBmb3Ig
dGVzdHMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gcHJvZHVjZSBtZWFuaW5nZnVsIG91dHB1dC4KK2Rl
ZiBub2lzeU91dHB1dEhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgbmFtZSB8Cisg
ICAgICAgICJjYXQgPiAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikg
KyAobmFtZSArICIub3V0IikpLnRvX3MpCisgICAgfQorZW5kCisKK2RlZiBnZXRBbmRUZXN0RXhp
dENvZGUocGxhbiwgY29uZGl0aW9uKQorICAgIDw8LUVPRgorICAgIGlmIHRlc3QgIiRleGl0Q29k
ZSIgI3tjb25kaXRpb259CitFT0YKK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRo
YXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMuCisj
IFRoaXMgaXMgdXNlZnVsIHdoZW4gYSB0ZXN0IGlzIGV4cGVjdGVkIHRvIGZhaWwuCitkZWYgc2lt
cGxlRXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAor
ICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVzdEV4aXRDb2RlKHBsYW4sICItbmUgMCIpCisgICAg
ICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgKGVjaG8gRVJST1I6
IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiAkZXhpdENvZGUpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4
Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxD
b21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJmaSIKKyAgICB9Citl
bmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3RseSB3aGVuIHRo
ZXkgcmV0dXJuIHplcm8gZXhpdCBzdGF0dXMuCitkZWYgZXhwZWN0ZWRGYWlsRXJyb3JIYW5kbGVy
CisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwLnB1
dHMgZ2V0QW5kVGVzdEV4aXRDb2RlKHBsYW4sICItbmUgMCIpCisgICAgICAgIG91dHAucHV0cyAi
dGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAg
ICAgICAgb3V0cC5wdXRzICJlbHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBFUlJP
UjogVW5leHBlY3RlZCBleGl0IGNvZGU6IDApIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFu
ZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5k
CisgICAgICAgIG91dHAucHV0cyAiZmkiCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBm
b3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiBub24temVybyBleGl0
IHN0YXR1cyBhbmQgcHJvZHVjZQorIyBsb3RzIG9mIHNwZXcuIFRoaXMgd2lsbCBlY2hvIHRoYXQg
c3BldyB3aGVuIHRoZSB0ZXN0IGZhaWxzLgorZGVmIG5vaXN5RXJyb3JIYW5kbGVyCisgICAgUHJv
Yy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwdXRGaWxlbmFtZSA9
IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIu
b3V0IikpLnRvX3MpCisKKyAgICAgICAgb3V0cC5wdXRzIGdldEFuZFRlc3RFeGl0Q29kZShwbGFu
LCAiLW5lIDAiKQorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91dHAucHV0cyAi
ICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjogVW5leHBlY3RlZCBleGl0
IGNvZGU6ICRleGl0Q29kZSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFt
ZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAg
b3V0cC5wdXRzICJlbHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNz
Q29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImZpIgorICAgIH0KK2VuZAorCisjIEVycm9yIGhh
bmRsZXIgZm9yIHRlc3RzIHRoYXQgZGlmZiB0aGVpciBvdXRwdXQgd2l0aCBzb21lIGV4cGVjdGF0
aW9uLgorZGVmIGRpZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRGaWxlbmFtZSkKKyAgICBQcm9jLm5l
dyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hl
bGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQi
KSkudG9fcykKKyAgICAgICAgZGlmZkZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgo
UGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5kaWZmIikpLnRvX3MpCisKKyAgICAgICAg
b3V0cC5wdXRzIGdldEFuZFRlc3RFeGl0Q29kZShwbGFuLCAiLW5lIDAiKQorICAgICAgICBvdXRw
LnB1dHMgInRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFt
ZX0gJiYgZWNobyBFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6ICRleGl0Q29kZSkgfCAiICsg
cmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIg
ICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbGlmIHRlc3QgLWUg
Li4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVkRmlsZW5hbWUpfSIKKyAgICAgICAg
b3V0cC5wdXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBkaWZmIC0tc3RyaXAtdHJh
aWxpbmctY3IgLXUgLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVkRmlsZW5hbWUp
fSAje291dHB1dEZpbGVuYW1lfSA+ICN7ZGlmZkZpbGVuYW1lfSIKKyAgICAgICAgb3V0cC5wdXRz
ICIgICAgaWYgWyAkPyAtZXEgMCBdIgorICAgICAgICBvdXRwLnB1dHMgIiAgICB0aGVuIgorICAg
ICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRw
LnB1dHMgIiAgICBlbHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgKGVjaG8gXCJESUZG
IEZBSUxVUkUhXCIgJiYgY2F0ICN7ZGlmZkZpbGVuYW1lfSkgfCAiICsgcmVkaXJlY3RBbmRQcmVm
aXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFu
LmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiICAgIGZpIgorICAgICAgICBvdXRwLnB1
dHMgImVsc2UiCisgICAgICAgIG91dHAucHV0cyAiICAgIChlY2hvIFwiTk8gRVhQRUNUQVRJT04h
XCIgJiYgY2F0ICN7b3V0cHV0RmlsZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1h
bmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFu
ZAorICAgICAgICBvdXRwLnB1dHMgImZpIgorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIg
Zm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIuIFRoaXMgaXMg
dXNlZCBieSBNb3ppbGxhCisjIHRlc3RzLgorZGVmIG1vemlsbGFFcnJvckhhbmRsZXIKKyAgICBQ
cm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHB1dEZpbGVuYW1l
ID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsg
Ii5vdXQiKSkudG9fcykKKworICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVzdEV4aXRDb2RlKHBs
YW4sICItbmUgMCIpCisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRz
ICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4
aXQgY29kZTogJGV4aXRDb2RlKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5u
YW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAg
ICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7b3V0cHV0RmlsZW5hbWV9Igor
ICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAgIChlY2hvIERl
dGVjdGVkIGZhaWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiArIHJlZGlyZWN0
QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBw
bGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZSIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJmaSIK
KyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9ydCBlcnJv
ciBieSBzYXlpbmcgImZhaWxlZCEiLCBhbmQgYXJlIGV4cGVjdGVkIHRvCisjIGZhaWwuIFRoaXMg
aXMgdXNlZCBieSBNb3ppbGxhIHRlc3RzLgorZGVmIG1vemlsbGFGYWlsRXJyb3JIYW5kbGVyCisg
ICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwdXRGaWxl
bmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFt
ZSArICIub3V0IikpLnRvX3MpCisKKyAgICAgICAgb3V0cC5wdXRzIGdldEFuZFRlc3RFeGl0Q29k
ZShwbGFuLCAiLW5lIDAiKQorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91dHAu
cHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxp
ZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAgICAgIG91dHAucHV0
cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQK
KyAgICAgICAgb3V0cC5wdXRzICJlbHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBO
T1RJQ0U6IFlvdSBtYWRlIHRoaXMgdGVzdCBwYXNzLCBidXQgaXQgd2FzIGV4cGVjdGVkIHRvIGZh
aWwpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91
dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZmki
CisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJy
b3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0byBoYXZlCisjIGFuIGV4
aXQgY29kZSBvZiAzLgorZGVmIG1vemlsbGFFeGl0M0Vycm9ySGFuZGxlcgorICAgIFByb2MubmV3
IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVs
bHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIp
KS50b19zKQorCisgICAgICAgIG91dHAucHV0cyBnZXRBbmRUZXN0RXhpdENvZGUocGxhbiwgIi1u
ZSAwIikKKyAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBp
ZiBbIFwiJGV4aXRDb2RlXCIgLWVxIDMgXSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgdGhlbiIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIGlmIGdyZXAgLWkgLXEgZmFpbGVkISAje291dHB1
dEZpbGVuYW1lfSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIHRoZW4iCisgICAgICAgIG91
dHAucHV0cyAiICAgICAgICAgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291
dHB1dEZpbGVuYW1lfSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAg
ICAgICBvdXRwLnB1dHMgIiAgICAgICAgZWxzZSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAg
ICAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAg
ZmkiCisgICAgICAgIG91dHAucHV0cyAiICAgIGVsc2UiCisgICAgICAgIG91dHAucHV0cyAiICAg
ICAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhp
dCBjb2RlOiAkZXhpdENvZGUpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5h
bWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAg
ICAgICBvdXRwLnB1dHMgIiAgICBmaSIKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlIgorICAgICAg
ICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFRl
c3QgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHJldHVybmVkIHN1Y2Nlc3NmdWxseSkgfCAiICsgcmVk
aXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJmaSIKKyAgICB9CitlbmQK
KworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9ydCBzdWNjZXNzIGJ5IHNheWlu
ZyAiUGFzc2VkIiBvciBlcnJvciBieSBzYXlpbmcgIkZBSUxFRCIuCisjIFRoaXMgaXMgdXNlZCBi
eSBDaGFrcmEgdGVzdHMuCitkZWYgY2hha3JhUGFzc0ZhaWxFcnJvckhhbmRsZXIKKyAgICBQcm9j
Lm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHB1dEZpbGVuYW1lID0g
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5v
dXQiKSkudG9fcykKKworICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVzdEV4aXRDb2RlKHBsYW4s
ICItbmUgMCIpCisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIg
ICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQg
Y29kZTogJGV4aXRDb2RlKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1l
KQorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBv
dXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBGQUlMRUQgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAg
ICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgKGVjaG8gRGV0ZWN0
ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcmVkaXJlY3RBbmRQ
cmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4u
ZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlIgorICAgICAgICBvdXRwLnB1dHMg
IiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImZpIgorICAg
IH0KK2VuZAorCitjbGFzcyBQbGFuIDwgQmFzZVBsYW4KKyAgICBkZWYgc2hlbGxDb21tYW5kCisg
ICAgICAgICMgSXQncyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBpcyBhY3R1
YWxseSBydW4gaW4gYSBzdWJzaGVsbCwgc28gaWYgd2UgY2hhbmdlIGRpcmVjdG9yeQorICAgICAg
ICAjIGluIHRoZSBzdWJzaGVsbCB3aGVuIHdlIHJldHVybiB3ZSB3aWxsIGJlIGluIG91ciBvcmln
aW5hbCBkaXJlY3RvcnkuIFRoaXMgaXMgbmljZSBiZWNhdXNlIHdlIGRvbid0CisgICAgICAgICMg
aGF2ZSB0byBiZW5kIG92ZXIgYmFja3dhcmRzIHRvIGRvIHRoaW5ncyByZWxhdGl2ZSB0byB0aGUg
cm9vdC4KKyAgICAgICAgc2NyaXB0ID0gIihjZCAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUo
QGRpcmVjdG9yeS50b19zKX0gJiYgKCIKKyAgICAgICAgKCRlbnZWYXJzICsgYWRkaXRpb25hbEVu
dikuZWFjaCB7IHx2YXJ8IHNjcmlwdCArPSAiZXhwb3J0ICIgPDwgdmFyIDw8ICI7ICIgfQorICAg
ICAgICBzY3JpcHQgKz0gIlwiJEBcIiAiICsgZXNjYXBlQWxsKEBhcmd1bWVudHMpICsgIikpIgor
ICAgICAgICByZXR1cm4gc2NyaXB0CisgICAgZW5kCisgICAgCisgICAgZGVmIHJlcHJvU2NyaXB0
Q29tbWFuZAorICAgICAgICAjIFdlIGhhdmUgdG8gZmluZCBvdXIgd2F5IGJhY2sgdG8gdGhlIC5y
dW5uZXIgZGlyZWN0b3J5IHNpbmNlIHRoYXQncyB3aGVyZSBhbGwgb2YgdGhlIHJlbGF0aXZlCisg
ICAgICAgICMgcGF0aHMgYXNzdW1lIHRoZXkgc3RhcnQgb3V0IGZyb20uCisgICAgICAgIHNjcmlw
dCA9ICJDVVJSRU5UX0RJUj1cIiQoIGNkIFwiJCggZGlybmFtZSBcIiR7QkFTSF9TT1VSQ0VbMF19
XCIgKVwiICYmIHB3ZCApXCJcbiIKKyAgICAgICAgc2NyaXB0ICs9ICJjZCAkQ1VSUkVOVF9ESVJc
biIKKyAgICAgICAgUGF0aG5hbWUubmV3KEBuYW1lKS5kaXJuYW1lLmVhY2hfZmlsZW5hbWUgewor
ICAgICAgICAgICAgfCBwYXRoQ29tcG9uZW50IHwKKyAgICAgICAgICAgIHNjcmlwdCArPSAiY2Qg
Li5cbiIKKyAgICAgICAgfQorICAgICAgICBzY3JpcHQgKz0gImNkIC5ydW5uZXJcbiIKKworICAg
ICAgICBzY3JpcHQgKz0gImV4cG9ydCBEWUxEX0ZSQU1FV09SS19QQVRIPSQoY2QgI3skdGVzdGlu
Z0ZyYW1ld29ya1BhdGguZGlybmFtZX07IHB3ZClcbiIKKyAgICAgICAgc2NyaXB0ICs9ICJleHBv
cnQgSlNDVEVTVF90aW1lb3V0PSN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShFTlZbJ0pTQ1RFU1Rf
dGltZW91dCddKX1cbiIKKyAgICAgICAgc2NyaXB0ICs9ICJleHBvcnQgSlNDVEVTVF9oYXJkVGlt
ZW91dD0je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoRU5WWydKU0NURVNUX2hhcmRUaW1lb3V0J10p
fVxuIgorICAgICAgICBzY3JpcHQgKz0gImV4cG9ydCBKU0NURVNUX21lbW9yeUxpbWl0PSN7U2hl
bGx3b3Jkcy5zaGVsbGVzY2FwZShFTlZbJ0pTQ1RFU1RfbWVtb3J5TGltaXQnXSl9XG4iCisgICAg
ICAgICRlbnZWYXJzLmVhY2ggeyB8dmFyfCBzY3JpcHQgKz0gImV4cG9ydCAiIDw8IHZhciA8PCAi
XG4iIH0KKyAgICAgICAgc2NyaXB0ICs9ICIje3NoZWxsQ29tbWFuZH0gfHwgZXhpdCAxIgorICAg
ICAgICAiZWNobyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoc2NyaXB0KX0gPiAje1NoZWxsd29y
ZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lLm5ldygiLi4iKSArIEBuYW1lKS50b19zKX0iCisgICAg
ZW5kCisKKyAgICBkZWYgc3RhdHVzQ29tbWFuZChzdGF0dXMpCisgICAgICAgICJlY2hvICN7JHJ1
blVuaXF1ZUlkfSAkZXhpdENvZGUgI3tzdGF0dXN9ID4gI3tzdGF0dXNGaWxlfSIKKyAgICBlbmQK
KworICAgIGRlZiBmYWlsQ29tbWFuZAorICAgICAgICAiI3tzdGF0dXNDb21tYW5kKFNUQVRVU19G
SUxFX0ZBSUwpfTsgZWNobyBGQUlMOiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfTsg
IiArIHJlcHJvU2NyaXB0Q29tbWFuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBzdWNjZXNzQ29t
bWFuZAorICAgICAgICBjb21tYW5kID0gIiIKKyAgICAgICAgZXhlY3V0aW9uVGltZU1lc3NhZ2Ug
PSAiIgorICAgICAgICBpZiAkcmVwb3J0RXhlY3V0aW9uVGltZQorICAgICAgICAgICAgZXhlY3V0
aW9uVGltZU1lc3NhZ2UgPSAiICQoKCRTRUNPTkRTIC0gJFNUQVJUX1RJTUUpKXMiCisgICAgICAg
IGVuZAorICAgICAgICBpZiAkcHJvZ3Jlc3NNZXRlciBvciAkcmVwb3J0RXhlY3V0aW9uVGltZSBv
ciAkdmVyYm9zaXR5ID49IDIKKyAgICAgICAgICAgIGNvbW1hbmQgPSAiZWNobyBQQVNTOiAje1No
ZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfSN7ZXhlY3V0aW9uVGltZU1lc3NhZ2V9IgorICAg
ICAgICBlbmQKKyAgICAgICAgIiN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9QQVNTKX07ICN7
Y29tbWFuZH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIHN0YXR1c0ZpbGUKKyAgICAgICAgIiN7
U1RBVFVTX0ZJTEVfUFJFRklYfSN7QGluZGV4fSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgd3Jp
dGVSdW5TY3JpcHQoZmlsZW5hbWUpCisgICAgICAgIEZpbGUub3BlbihmaWxlbmFtZSwgInciKSB7
CisgICAgICAgICAgICB8IG91dHAgfAorICAgICAgICAgICAgaWYgJHJlcG9ydEV4ZWN1dGlvblRp
bWUKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIlNUQVJUX1RJTUU9JFNFQ09ORFMiCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIG91dHAucHV0cyAiZWNobyBSdW5uaW5nICN7U2hlbGx3
b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9IgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCisgICAgICAgICAgICAjIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICMg
fCB8ICstLS0tLS0tLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKyAgICB8ICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICAgICAgIyB8IHwgfCBjbWQgMSAtLS0tPiAxfC0tLT4gfDAg
LS0+IG91dEggMSAtLS0+IDR8LT4gNHwtLS0tLS0tLS0tLS0tLS0+IDF8CisgICAgICAgICAgICAj
IHwgfCB8ICAgICAyIC8gICAgICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgfCAgICst
LS0tLS0tLS0tLSsgIHwKKyAgICAgICAgICAgICMgfCB8IHxlY2hvICQ/IDAgLT4gM3wtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0+IDF8LT4gfDAgcmVhZCB4cyAgfCAgfAorICAgICAgICAgICAg
IyB8IHwgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8
ICBleGl0ICR4cyB8ICB8CisgICAgICAgICAgICAjIHwgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICstLS0tLS0tLS0tLSsgIHwKKyAgICAgICAgICAg
ICMgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgIyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAg
ICAjIEZyb20gdGhlIHRvcCBkb3duIChpLmUuIHJlYWRpbmcgZnJvbSB0aGUgb3V0ZXIgZXhwcmVz
c2lvbiBpbndhcmRzKToKKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgLSBSZWRpcmVjdCBG
RCA0IHRvIG91ciBzdGRvdXQKKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgLSBCdWlsZCBh
IHBpcGUgb2YgdHdvIGNvbW1hbmQgc2VxdWVuY2VzLiBUaGUKKyAgICAgICAgICAgICMgICByaWdo
dC1oYW5kLXNpZGUgc2VxdWVuY2UgcmVhZHMgYSBudW1iZXIgZnJvbSBzdGRpbiBhbmQKKyAgICAg
ICAgICAgICMgICBleGl0cyB3aXRoIGl0LiBTaW5jZSBpdCdzIHRoZSBsYXN0IGNvbW1hbmQgaW4g
dGhlCisgICAgICAgICAgICAjICAgcGlwZWxpbmUsIHRoaXMgd2lsbCBiZSB0aGUgdmFsdWUgb2Yg
JD8gYWZ0ZXIgdGhlCisgICAgICAgICAgICAjICAgcGlwZWxpbmUgY29tcGxldGVzLgorICAgICAg
ICAgICAgIworICAgICAgICAgICAgIyAtIEluIHRoZSBsZWZ0LWhhbmQtc2lkZSBzZXF1ZW5jZSwg
cmVkaXJlY3QgRkQgMyB0byBGRCAxLgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyAtIEJ1
aWxkIGEgcGlwZSBvZiB0d28gY29tbWFuZHMKKyAgICAgICAgICAgICMgICAtIHJ1biBzaGVsbENv
bW1hbmQsIHdyaXRpbmcgaXRzIGV4aXQgY29kZSB0byBGRCAzLgorICAgICAgICAgICAgIyAgIC0g
cnVuIHRoZSBvdXRwdXRIYW5kbGVyLCB3aXRoIGl0cyBzdGRpbiBjb21pbmcgZnJvbQorICAgICAg
ICAgICAgIyAgICAgdGhlIHBpcGUsIHJlZGlyZWN0aW5nIGl0cyBvdXRwdXQgdG8gRkQgNC4gVGhl
CisgICAgICAgICAgICAjICAgICBvdXRwdXRIYW5kbGVyIG5lZWRzIHRvIGJlIGluIGEgY29tbWFu
ZCBzZXF1ZW5jZQorICAgICAgICAgICAgIyAgICAgKGkuZS4gaW4geyBjbWQ7IC4uLn0pIGFzIGl0
IG1heSBkbyBpdHMgb3duCisgICAgICAgICAgICAjICAgICByZWRpcmVjdGlvbnMuCisgICAgICAg
ICAgICAjCisgICAgICAgICAgICAjIFdlIGRvIGFsbCB0aGlzCisgICAgICAgICAgICAjIC0gdG8g
YXZvaWQgaGF2aW5nIHRvIHVzZSBhIHRlbXBvcmFyeSBmaWxlIGZvciB0aGUgZXhpdCBjb2RlCisg
ICAgICAgICAgICAjIC0gdG8ga2VlcCB3aXRoaW4gdGhlIGJvdW5kcyBvZiBQT1NJWCBzaCAoaS5l
LiBjYW4ndCB1c2UKKyAgICAgICAgICAgICMgICBQSVBFU1RBVFVTKQorICAgICAgICAgICAgY21k
ID0gInsgeyB7IHsgI3tzaGVsbENvbW1hbmR9IDI+JjE7IGVjaG8gJD8gPiYzOyB9IHwgeyAje291
dHB1dEhhbmRsZXIuY2FsbChAbmFtZSl9IDt9ID4mNDsgfSAzPiYxOyB9IHwgeyByZWFkIHhzOyBl
eGl0ICR4czsgfSB9IDQ+JjFcbmV4aXRDb2RlPSQ/XG4iCisgICAgICAgICAgICBpZiAkdmVyYm9z
aXR5ID49IDMKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImVjaG8gI3tTaGVsbHdvcmRzLnNo
ZWxsZXNjYXBlKGNtZCl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBvdXRwLnB1dHMg
Y21kCisgICAgICAgICAgICBAZXJyb3JIYW5kbGVyLmNhbGwob3V0cCwgc2VsZikKKyAgICAgICAg
fQorICAgIGVuZAorZW5kCisKK2NsYXNzIFRlc3RSdW5uZXJTaGVsbCA8IFRlc3RSdW5uZXIKKyAg
ICBkZWYgaW5pdGlhbGl6ZSh0ZXN0UnVubmVyVHlwZSwgcnVubmVyRGlyKQorICAgICAgICBzdXBl
cih0ZXN0UnVubmVyVHlwZSwgcnVubmVyRGlyKQorICAgICAgICBAdGVzdExpc3RQYXRoID0gcnVu
bmVyRGlyICsgJ3Rlc3RsaXN0JworICAgIGVuZAorICAgIGRlZiBwcmVwYXJlUnVubmVyKHJ1bmxp
c3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIEZp
bGVVdGlscy5jcCBTQ1JJUFRTX1BBVEggKyAianNjLXN0cmVzcy10ZXN0LWhlbHBlcnMiICsgInNo
ZWxsLXJ1bm5lci5zaCIsIEBydW5uZXJEaXIgKyAicnVuc2NyaXB0IgorICAgICAgICBGaWxlLm9w
ZW4oQHRlc3RMaXN0UGF0aCwgInciKSB7IHxmfAorICAgICAgICAgICAgcnVubGlzdC5lYWNoIHsg
fHBsYW58CisgICAgICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikK
KyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgICAgIGYucHV0cygidGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICBlbmQKKyAgICBkZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAg
ICAgICAic2ggcnVuc2NyaXB0ICN7RmlsZS5iYXNlbmFtZShAdGVzdExpc3RQYXRoKX0iCisgICAg
ZW5kCitlbmQKKworY2xhc3MgVGVzdFJ1bm5lck1ha2UgPCBUZXN0UnVubmVyCisgICAgZGVmIG91
dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgcHJlcmVxcykKKyAgICAgICAgaW5kZXggPSBwbGFuLmlu
ZGV4CisgICAgICAgIHRhcmdldCA9ICJ0ZXN0X2RvbmVfI3tpbmRleH0iCisgICAgICAgIG91dHAu
cHV0cyAiI3t0YXJnZXR9OiAje3ByZXJlcXMuam9pbigiICIpfSIKKyAgICAgICAgb3V0cC5wdXRz
ICJcdHNoIHRlc3Rfc2NyaXB0XyN7aW5kZXh9IgorICAgICAgICB0YXJnZXQKKyAgICBlbmQKKyAg
ICBkZWYgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxl
dGVkUGxhbnMsIHJlbW90ZUluZGV4KQorICAgICAgICAjIFRoZSBnb2FscyBvZiBvdXIgcGFyYWxs
ZWwgdGVzdCBydW5uZXIgYXJlIHNjYWxhYmlsaXR5IGFuZCBzaW1wbGljaXR5LiBUaGUKKyAgICAg
ICAgIyBzaW1wbGljaXR5IHBhcnQgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudC4gV2UgZG9uJ3Qg
d2FudCB0byBoYXZlIHRvIGhhdmUKKyAgICAgICAgIyBhIGZ1bGwtdGltZSBjb250cmlidXRvciBq
dXN0IHBoaWxvc29waGlzaW5nIGFib3V0IHBhcmFsbGVsIHRlc3RpbmcuCisgICAgICAgICMKKyAg
ICAgICAgIyBBcyBzdWNoLCB3ZSBqdXN0IHBhc3Mgb2ZmIGFsbCBvZiB0aGUgaGFyZCB3b3JrIHRv
ICdtYWtlJy4gVGhpcworICAgICAgICAjIGNyZWF0ZXMgYSBkdW1teSBkaXJlY3RvcnkgKCIkb3V0
cHV0RGlyLy5ydW5uZXIiKSBpbiB3aGljaCB3ZQorICAgICAgICAjIGNyZWF0ZSBhIGR1bW15IE1h
a2VmaWxlLiBUaGUgTWFrZWZpbGUgaGFzIGEgJ3BhcmFsbGVsJyBydWxlIHRoYXQKKyAgICAgICAg
IyBkZXBlbmRzIGFsbCB0ZXN0cywgb3RoZXIgdGhhbiB0aGUgb25lcyBtYXJrZWQgJ3NlcmlhbCcu
IFRoZQorICAgICAgICAjIHNlcmlhbCB0ZXN0cyBhcmUgYXJyYW5nZWQgaW4gYSBjaGFpbjsgdGhl
IGxhc3QgdGFyZ2V0IGluIHRoZQorICAgICAgICAjIHNlcmlhbCBjaGFpbiBkZXBlbmRzIG9uICdw
YXJhbGxlbCcgYW5kICdhbGwnIGRlcGVuZHMgb24gdGhlIGhlYWQKKyAgICAgICAgIyBvZiB0aGUg
Y2hhaW4uIFJ1bm5pbmcgJ21ha2UgLWogPHdoYXRldmVyPicgb24gdGhpcyBNYWtlZmlsZQorICAg
ICAgICAjIHJlc3VsdHMgaW4gJ21ha2UnIGRvaW5nIGFsbCBvZiB0aGUgaGFyZCB3b3JrOgorICAg
ICAgICAjCisgICAgICAgICMgLSBMb2FkIGJhbGFuY2luZyBqdXN0IHdvcmtzLiBNb3N0IHN5c3Rl
bXMgaGF2ZSBhIGdyZWF0IGxvYWQgYmFsYW5jZXIgaW4KKyAgICAgICAgIyAgICdtYWtlJy4gSWYg
eW91ciBzeXN0ZW0gZG9lc24ndCB0aGVuIGp1c3QgaW5zdGFsbCBhIHJlYWwgJ21ha2UnLgorICAg
ICAgICAjCisgICAgICAgICMgLSBJbnRlcnJ1cHRpb25zIGp1c3Qgd29yay4gRm9yIGV4YW1wbGUg
Q3RybC1DIGhhbmRsaW5nIGluICdtYWtlJyBpcworICAgICAgICAjICAgZXhhY3RseSByaWdodC4g
WW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgem9tYmllIHByb2Nlc3Nlcy4KKyAgICAgICAg
IworICAgICAgICAjIFdlIHRoZW4gZG8gc29tZSB0cmlja3MgdG8gbWFrZSBmYWlsdXJlIGRldGVj
dGlvbiB3b3JrIGFuZCB0byBtYWtlIHRoaXMKKyAgICAgICAgIyB0b3RhbGx5IHNvdW5kLiBJZiBh
IHRlc3QgZmFpbHMsIHdlIGRvbid0IHdhbnQgdGhlIHdob2xlICdtYWtlJyBqb2IgdG8KKyAgICAg
ICAgIyBzdG9wLiBXZSBhbHNvIGRvbid0IGhhdmUgYW55IGZhY2lsaXR5IGZvciBtYWtlZmlsZS1l
c2NhcGluZyBvZiBwYXRoIG5hbWVzLgorICAgICAgICAjIFdlIGRvIGhhdmUgc3VjaCBhIHRoaW5n
IGZvciBzaGVsbC1lc2NhcGluZywgdGhvdWdoLiBXZSBmaXggYm90aCBwcm9ibGVtcworICAgICAg
ICAjIGJ5IGhhdmluZyB0aGUgYWN0dWFsIHdvcmsgZm9yIGVhY2ggb2YgdGhlIHRlc3QgcnVsZXMg
YmUgZG9uZSBpbiBhIHNoZWxsCisgICAgICAgICMgc2NyaXB0IG9uIHRoZSBzaWRlLiBUaGVyZSBp
cyBvbmUgc3VjaCBzY3JpcHQgcGVyIHRlc3QuIFRoZSBzY3JpcHQgcmVzcG9uZHMKKyAgICAgICAg
IyB0byBmYWlsdXJlIGJ5IHByaW50aW5nIHNvbWV0aGluZyBvbiB0aGUgY29uc29sZSBhbmQgdGhl
biB0b3VjaGluZyBhCisgICAgICAgICMgZmFpbHVyZSBmaWxlIGZvciB0aGF0IHRlc3QsIGJ1dCB0
aGVuIHN0aWxsIHJldHVybnMgMC4gVGhpcyBtYWtlcyAnbWFrZScKKyAgICAgICAgIyBjb250aW51
ZSBwYXN0IHRoYXQgZmFpbHVyZSBhbmQgY29tcGxldGUgYWxsIHRoZSB0ZXN0cyBhbnl3YXkuCisg
ICAgICAgICMKKyAgICAgICAgIyBJbiB0aGUgZW5kLCB0aGlzIHNjcmlwdCBjb2xsZWN0cyBhbGwg
b2YgdGhlIGZhaWx1cmVzIGJ5IHNlYXJjaGluZyBmb3IKKyAgICAgICAgIyBmaWxlcyBpbiB0aGUg
LnJ1bm5lciBkaXJlY3Rvcnkgd2hvc2UgbmFtZSBtYXRjaGVzIC9edGVzdF9mYWlsXy8sIHdoZXJl
CisgICAgICAgICMgdGhlIHRoaW5nIGFmdGVyIHRoZSAnZmFpbF8nIGlzIHRoZSB0ZXN0IGluZGV4
LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQKKyAgICAgICAgIyB3b3VsZCBiZSBjcmVhdGVkIGJ5
IHRoZSB0ZXN0IHNjcmlwdHMgaWYgdGhleSBkZXRlY3QgZmFpbHVyZS4gV2UncmUKKyAgICAgICAg
IyBiYXNpY2FsbHkgdXNpbmcgdGhlIGZpbGVzeXN0ZW0gYXMgYSBjb25jdXJyZW50IGRhdGFiYXNl
IG9mIHRlc3QgZmFpbHVyZXMuCisgICAgICAgICMgRXZlbiBpZiB0d28gdGVzdHMgZmFpbCBhdCB0
aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5nIGRpZmZlcmVudAorICAgICAgICAj
IGZpbGVzIHdlIHdvbid0IG1pc3MgYW55IGZhaWx1cmVzLgorICAgICAgICBydW5QbGFucyA9IFtd
CisgICAgICAgIHNlcmlhbFJ1blBsYW5zID0gW10KKyAgICAgICAgcnVubGlzdC5lYWNoIHsKKyAg
ICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICBpZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRl
PyhwbGFuKQorICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgaWYgQHJlbW90ZUhvc3RzLm5pbD8gb3IgcGxhbi5pbmRleCAlIEByZW1vdGVIb3N0cy5sZW5n
dGggPT0gcmVtb3RlSW5kZXgKKyAgICAgICAgICAgICAgICBpZiBzZXJpYWxQbGFucy5pbmNsdWRl
PyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBzZXJpYWxSdW5QbGFucyA8PCBwbGFuCisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBydW5QbGFucyA8PCBwbGFuCisg
ICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorCisgICAgICAg
IEZpbGUub3BlbihAcnVubmVyRGlyICsgIk1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IiwgInciKSB7
CisgICAgICAgICAgICB8IG91dHAgfAorICAgICAgICAgICAgaWYgc2VyaWFsUnVuUGxhbnMuZW1w
dHk/CisgICAgICAgICAgICAgICAgb3V0cC5wdXRzKCJhbGw6IHBhcmFsbGVsIikKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXJpYWxQcmVyZXEgPSAidGVzdF9kb25lXyN7c2Vy
aWFsUnVuUGxhbnNbLTFdLmluZGV4fSIKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMoImFsbDog
I3tzZXJpYWxQcmVyZXF9IikKKyAgICAgICAgICAgICAgICBwcmV2X3RhcmdldCA9ICJwYXJhbGxl
bCIKKyAgICAgICAgICAgICAgICBzZXJpYWxSdW5QbGFucy5lYWNoIHsKKyAgICAgICAgICAgICAg
ICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAgICAgICAgcHJldl90YXJnZXQgPSBvdXRwdXRf
dGFyZ2V0KG91dHAsIHBsYW4sIFtwcmV2X3RhcmdldF0pCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZW5kCisgICAgICAgICAgICBwYXJhbGxlbFRhcmdldHMgPSBydW5QbGFucy5jb2xs
ZWN0IHsKKyAgICAgICAgICAgICAgICB8IHBsYW4gfAorICAgICAgICAgICAgICAgIG91dHB1dF90
YXJnZXQob3V0cCwgcGxhbiwgW10pCisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXRwLnB1
dHMoInBhcmFsbGVsOiAiICsgcGFyYWxsZWxUYXJnZXRzLmpvaW4oIiAiKSkKKyAgICAgICAgfQor
ICAgIGVuZAorICAgIGRlZiBwcmVwYXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21w
bGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIGlmIHJlbW90ZUhvc3RzLm5pbD8KKyAg
ICAgICAgICAgIHByZXBhcmVSdW5uZXJGb3JSZW1vdGUocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNv
bXBsZXRlZFBsYW5zLCAwKQorICAgICAgICBlbHNlCisgICAgICAgICAgICByZW1vdGVIb3N0cy5l
YWNoX2luZGV4IHsKKyAgICAgICAgICAgICAgICB8cmVtb3RlSW5kZXh8CisgICAgICAgICAgICAg
ICAgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVk
UGxhbnMsIHJlbW90ZUluZGV4KQorICAgICAgICAgICAgfQorICAgICAgICBlbmQKKyAgICBlbmQK
KyAgICBkZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAgICAgICAibWFrZSAtaiAjeyRudW1D
aGlsZFByb2Nlc3Nlc30gLXMgLWYgTWFrZWZpbGUuI3tyZW1vdGVJbmRleH0iCisgICAgZW5kCitl
bmQKKworY2xhc3MgVGVzdFJ1bm5lclJ1YnkgPCBUZXN0UnVubmVyCisgICAgZGVmIHByZXBhcmVS
dW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykK
KyAgICAgICAgRmlsZS5vcGVuKEBydW5uZXJEaXIgKyAicnVuc2NyaXB0IiwgInciKSB7CisgICAg
ICAgICAgICB8IG91dHAgfAorICAgICAgICAgICAgcnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAg
ICAgICB8IHBsYW4gfAorICAgICAgICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/
KHBsYW4pCisgICAgICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgICAgICBvdXRwLnB1dHMgInByaW50IGBzaCB0ZXN0X3NjcmlwdF8je3BsYW4uaW5k
ZXh9IDI+JjFgIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgZW5kCisgICAgZGVmIGNv
bW1hbmQocmVtb3RlSW5kZXg9MCkKKyAgICAgICAgInJ1YnkgcnVuc2NyaXB0IgorICAgIGVuZAor
ZW5kCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0
L3dyaXRlci1wbGF5c3RhdGlvbi5yYiBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3Ry
ZXNzLXRlc3Qvd3JpdGVyLXBsYXlzdGF0aW9uLnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhN2FhOTdmY2UyZTVk
ZWFmM2FhMDA4MjZhMWVlYjM5ZTFkOTg5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3dyaXRlci1wbGF5c3RhdGlvbi5yYgpAQCAt
MCwwICsxLDQyMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRl
cnRhaW5tZW50IEluYy4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisj
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1
aXJlICdvcGVuMycKKworJGhhc0RpZmYgPSBmYWxzZQoraWYgKCRob3N0T1MgPT0gJ3dpbmRvd3Mn
IHx8ICRob3N0T1MgPT0gJ3BsYXlzdGF0aW9uJykKKyAgICBvdXQsIGVyciwgc3RhdHVzID0gT3Bl
bjMuY2FwdHVyZTMoIndoZXJlIiwgIi9xIiwgImRpZmYiKQorICAgICRoYXNEaWZmID0gc3RhdHVz
LnN1Y2Nlc3M/CitlbHNlCisgICAgb3V0LCBlcnIsIHN0YXR1cyA9IE9wZW4zLmNhcHR1cmUzKCJ3
aGljaCIsICJkaWZmIikKKyAgICAkaGFzRGlmZiA9IHN0YXR1cy5zdWNjZXNzPworZW5kCisKKyMg
UHJlZml4IGVhY2ggbGluZSBvZiBzdHIgd2l0aCB0aGUgbmFtZQorZGVmIHByZWZpeFN0cmluZyhz
dHIsIG5hbWUpCisgICAgIiN7c3RyfS5lbXB0eT8gPyBcIlwiIDogI3tzdHJ9LmdzdWIoL14vbSwg
XCIje25hbWV9OiBcIikiCitlbmQKKworZGVmIHNpbGVudE91dHB1dEhhbmRsZXIKKyAgICBQcm9j
Lm5ldyB7CisgICAgICAgIHwgbmFtZSB8CisgICAgICAgIDw8LUVORF9TSUxFTlRfT1VUUFVUX0hB
TkRMRVIKKyAgICAgICAgb3V0ID0gb3V0ICsgZXJyCisgICAgICAgIGVyciA9IG5pbAorICAgICAg
ICBTVERPVVQucHV0cyAje3ByZWZpeFN0cmluZygib3V0IiwgbmFtZSl9IGlmICghb3V0LmVtcHR5
PykKKyAgICAgICAgRmlsZS5vcGVuKCIje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1l
KCIuLiIpICsgKG5hbWUgKyAiLm91dCIpKS50b19zKX0iLCAidyIpIGRvIHxvdXRfZmlsZXwKKyAg
ICAgICAgICAgIG91dF9maWxlLnB1dHMgb3V0CisgICAgICAgIGVuZAorICAgICAgICBFTkRfU0lM
RU5UX09VVFBVVF9IQU5ETEVSCisgICAgfQorZW5kCisKKyMgT3V0cHV0IGhhbmRsZXIgZm9yIHRl
c3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIHByb2R1Y2UgbWVhbmluZ2Z1bCBvdXRwdXQuCitkZWYg
bm9pc3lPdXRwdXRIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG5hbWUgfAorICAg
ICAgICA8PC1FTkRfTk9JU1lfT1VUUFVUX0hBTkRMRVIKKyAgICAgICAgb3V0ID0gb3V0ICsgZXJy
CisgICAgICAgIGVyciA9IG5pbAorICAgICAgICBGaWxlLm9wZW4oIiN7U2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3MpfSIsICJ3Iikg
ZG8gfG91dF9maWxlfAorICAgICAgICAgICAgb3V0X2ZpbGUucHV0cyBvdXQKKyAgICAgICAgZW5k
CisgICAgICAgIEVORF9OT0lTWV9PVVRQVVRfSEFORExFUgorICAgIH0KK2VuZAorCisjIEVycm9y
IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9u
LXplcm8gZXhpdCBzdGF0dXMuCisjIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSB0ZXN0IGlzIGV4cGVj
dGVkIHRvIGZhaWwuCitkZWYgc2ltcGxlRXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAg
ICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzXG4iCisg
ICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVu
ZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisg
ICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBv
dXRwLnB1dHMgImVsc2VcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vz
c0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIKKyAgICB9CitlbmQKKworIyBFcnJv
ciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3RseSB3aGVuIHRoZXkgcmV0dXJuIHpl
cm8gZXhpdCBzdGF0dXMuCitkZWYgZXhwZWN0ZWRGYWlsRXJyb3JIYW5kbGVyCisgICAgUHJvYy5u
ZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwLnB1dHMgImlmIHN1Y2Nl
c3NcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJF
UlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgMFxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAg
ICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91
dHAucHV0cyAiZWxzZVxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNz
Q29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgorICAgIH0KK2VuZAorCisjIEVycm9y
IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9u
LXplcm8gZXhpdCBzdGF0dXMgYW5kIHByb2R1Y2UKKyMgbG90cyBvZiBzcGV3LiBUaGlzIHdpbGwg
ZWNobyB0aGF0IHNwZXcgd2hlbiB0aGUgdGVzdCBmYWlscy4KK2RlZiBub2lzeUVycm9ySGFuZGxl
cgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0cC5w
dXRzICJpZiAhc3VjY2Vzc1xuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJl
Zml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSBc
I3tzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisg
ICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91
dHAucHV0cyAiZW5kXG4iCisgICAgfQorZW5kCisKKyBkZWYgZmFsbGJhY2tEaWZmKGV4cGVjdGVk
LCBvdXRwdXQpCisgICAgPDwtRU5EX0ZBTExCQUNLX0RJRkYKKyAgICAgICAgICMgRmFsbGJhY2sg
ZGlmZiBmb3Igd2hlbiBkaWZmKDEpIGlzbid0IGF2YWlsYWJsZQorICAgICAgICAgZGlmZnMgPSBb
XQorICAgICAgICAgbGluZV9udW1iZXIgPSAwCisgICAgICAgICBGaWxlLm9wZW4oIiN7ZXhwZWN0
ZWR9IikgZG8gfCBleHBlY3RlZCB8CisgICAgICAgICAgICAgRmlsZS5vcGVuKCIje291dHB1dH0i
KSBkbyB8IGFjdHVhbCB8CisgICAgICAgICAgICAgICAgIGxvb3AgZG8KKyAgICAgICAgICAgICAg
ICAgICAgIGwxID0gZXhwZWN0ZWQuZ2V0cworICAgICAgICAgICAgICAgICAgICAgbDIgPSBhY3R1
YWwuZ2V0cworICAgICAgICAgICAgICAgICAgICAgaWYgKGwxICE9IGwyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZmZzLnB1c2goW2xpbmVfbnVtYmVyLCBsMSwgbDJdKQorICAgICAgICAg
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlciA9IGxpbmVf
bnVtYmVyICsgMQorICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaWYgKGwxID09IG5pbCAmJiBs
MiA9PSBuaWwpCisgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgZW5kCisgICAgICAgICBpc0RpZmZlcmVudCA9ICFkaWZmcy5lbXB0eT8KKyAgICAgICAgIGRp
ZmZPdXQgPSBkaWZmcy5tYXAgeworICAgICAgICAgICAgIHwgZGlmZiB8CisgICAgICAgICAgICAg
IkBAIC1cI3tkaWZmWzBdfSwxICtcI3tkaWZmWzBdfSwxIEBAXFxuIiArCisgICAgICAgICAgICAg
KGRpZmZbMV0gPyAiLVwje2RpZmZbMV19IiA6ICIiKSArCisgICAgICAgICAgICAgKGRpZmZbMl0g
PyAiK1wje2RpZmZbMl19IiA6ICIiKQorICAgICAgICB9LmpvaW4oIiIpCisgICAgRU5EX0ZBTExC
QUNLX0RJRkYKK2VuZAorCitkZWYgcnVuRGlmZihleHBlY3RlZCwgb3V0cHV0KQorICAgIDw8LUVO
RF9SVU5fRElGRgorICAgICAgICBkaWZmT3V0LCBkaWZmU3RhdHVzID0gT3BlbjMuY2FwdHVyZTIo
ImRpZmYiLAorICAgICAgICAgICAgIi0tc3RyaXAtdHJhaWxpbmctY3IiLAorICAgICAgICAgICAg
Ii11IiwKKyAgICAgICAgICAgICIje2V4cGVjdGVkfSIsCisgICAgICAgICAgICAiI3tvdXRwdXR9
Iik7CisgICAgICAgIGlzRGlmZmVyZW50ID0gIWRpZmZTdGF0dXMuc3VjY2Vzcz8KKyAgICBFTkRf
UlVOX0RJRkYKK2VuZAorCisjIEdldCBhIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZmlsZXMsIHVz
aW5nIGRpZmYgd2hlcmUgYXZhaWxhYmxlLCBmYWxsaW5nIGJhY2sKKyMgb24gYSBsaW1pdGVkIGNv
bXBhcmlzb24gd2hlbiBkaWZmIGlzIG5vdCBhdmFpbGFibGUKK2RlZiBnZXREaWZmKGV4cGVjdGVk
LCBvdXRwdXQpCisgICAgaWYgJGhhc0RpZmYKKyAgICAgICAgcnVuRGlmZihleHBlY3RlZCwgb3V0
cHV0KQorICAgIGVsc2UKKyAgICAgICAgZmFsbGJhY2tEaWZmKGV4cGVjdGVkLG91dHB1dCkKKyAg
ICBlbmQKK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZGlmZiB0aGVpciBv
dXRwdXQgd2l0aCBzb21lIGV4cGVjdGF0aW9uLgorZGVmIGRpZmZFcnJvckhhbmRsZXIoZXhwZWN0
ZWRGaWxlbmFtZSkKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAg
ICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4u
IikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKworICAgICAgICBvdXRwLnB1dHMgImlm
ICFzdWNjZXNzXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJp
bmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50
ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1
c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBw
bGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzaWYgRmlsZS5leGlzdHM/KFwi
Li4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVkRmlsZW5hbWUpfVwiKVxuIgorICAg
ICAgICBvdXRwLnB1dHMgZ2V0RGlmZigiLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGV4cGVj
dGVkRmlsZW5hbWUpfSIsIG91dHB1dEZpbGVuYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICBp
ZiBpc0RpZmZlcmVudFxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgcHJpbnQgIiArIHBy
ZWZpeFN0cmluZygiXCJESUZGIEZBSUxVUkUhXFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAg
ICAgICBvdXRwLnB1dHMgIiAgICAgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiZGlmZk91dCIs
IHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5m
YWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgIiAgICBlbHNlIgorICAgICAgICBvdXRwLnB1
dHMgIiAgICAgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICIg
ICAgZW5kIgorICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKKyAgICAgICAgb3V0cC5wdXRzICIg
ICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJOTyBFWFBFQ1RBVElPTiFcXG5cIiIsIHBsYW4u
bmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJp
bmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBw
bGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kIgorICAgIH0KK2VuZAorCisj
IEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFp
bGVkISIuIFRoaXMgaXMgdXNlZCBieSBNb3ppbGxhCisjIHRlc3RzLgorZGVmIG1vemlsbGFFcnJv
ckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAg
IG91dHAucHV0cyAiaWYgIXN1Y2Nlc3NcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQg
IiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0
IGNvZGUgXCN7c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxz
aWYgL2ZhaWxlZCEvaSA9fiBvdXRcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiAr
IHByZWZpeFN0cmluZygiXCJEZXRlY3RlZCBmYWlsdXJlczpcXG5cIiIsIHBsYW4ubmFtZSkgKyAi
XG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIs
IHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxD
b21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgorICAg
IH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5
IHNheWluZyAiZmFpbGVkISIsIGFuZCBhcmUgZXhwZWN0ZWQgdG8KKyMgZmFpbC4gVGhpcyBpcyB1
c2VkIGJ5IE1vemlsbGEgdGVzdHMuCitkZWYgbW96aWxsYUZhaWxFcnJvckhhbmRsZXIKKyAgICBQ
cm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHAucHV0cyAiaWYg
IXN1Y2Nlc3NcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1h
bmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvZmFpbGVkIS9pID1+IG91dFxuIgorICAgICAg
ICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1
dHMgImVsc2VcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmlu
ZygiXCJOT1RJQ0U6IFlvdSBtYWRlIHRoaXMgdGVzdCBwYXNzLCBidXQgaXQgd2FzIGV4cGVjdGVk
IHRvIGZhaWxcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAg
ICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAgfQor
ZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5
aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0byBoYXZlCisjIGFuIGV4aXQgY29kZSBv
ZiAzLgorZGVmIG1vemlsbGFFeGl0M0Vycm9ySGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAg
ICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0cC5wdXRzICJpZiBzdWNjZXNzXG4iCisgICAg
ICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFt
ZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmco
IlwiRVJST1I6IFRlc3QgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHJldHVybmVkIHN1Y2Nlc3NmdWxs
eVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIg
KyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzaWYgc3RhdHVzICE9IDMi
CisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBs
YW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhT
dHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiBcI3tzdGF0dXN9XFxuXCIiLCBw
bGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFp
bENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvZmFpbGVkIS9pID1+IG91dFxuIgor
ICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkRldGVjdGVk
IGZhaWx1cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIg
ICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAg
ICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRz
ICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5k
CisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxl
ciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgc3VjY2VzcyBieSBzYXlpbmcgIlBhc3NlZCIgb3IgZXJy
b3IgYnkgc2F5aW5nICJGQUlMRUQiLgorIyBUaGlzIGlzIHVzZWQgYnkgQ2hha3JhIHRlc3RzLgor
ZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8
IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzXG4iCisgICAgICAg
IG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkg
KyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwi
RVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkg
KyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAg
ICAgIG91dHAucHV0cyAiZWxzaWYgL0ZBSUxFRC9pID1+IG91dFxuIgorICAgICAgICBvdXRwLnB1
dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkRldGVjdGVkIGZhaWx1cmVzOlxcblwi
IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHBy
ZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIg
ICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisgICAg
ICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAu
cHV0cyAiZW5kXG4iCisgICB9CitlbmQKKworY2xhc3MgUGxhbiA8IEJhc2VQbGFuCisgICAgZGVm
IGFyZ3VtZW50c01hcHBlcihhcmd1bWVudHMpCisgICAgICAgIGFyZ3VtZW50c1sxLi4tMV0KKyAg
ICBlbmQKKyAgICBkZWYgc2hlbGxDb21tYW5kCisgICAgICAgIG4gPSBAbmFtZS5nc3ViKC8oXFx8
XC8pLywgJ18nKQorICAgICAgICBzY3JpcHQgPSAib3V0ID0gbmlsXG4iCisgICAgICAgIHNjcmlw
dCArPSAiZXJyID0gbmlsXG4iCisgICAgICAgIHNjcmlwdCArPSAic3RhdHVzID0gLTFcbiI7Cisg
ICAgICAgIHNjcmlwdCArPSAic3VjY2VzcyA9IGZhbHNlXG4iCisgICAgICAgIHNjcmlwdCArPSAi
RmlsZS5vcGVuKFwiI3tufS1leGl0XCIsIFwiclwiKSBkbyB8c3RhdHxcbiI7CisgICAgICAgIHNj
cmlwdCArPSAiICBzdGF0dXMgPSBzdGF0LmdldHMudG9faVxuIgorICAgICAgICBzY3JpcHQgKz0g
ImVuZFxuIgorICAgICAgICBzY3JpcHQgKz0gImlmIChzdGF0dXMgPT0gMClcbiIKKyAgICAgICAg
c2NyaXB0ICs9ICIgIHN1Y2Nlc3MgPSB0cnVlXG4iCisgICAgICAgIHNjcmlwdCArPSAiZW5kXG4i
CisKKyAgICAgICAgc2NyaXB0ICs9ICJvdXQgPSBGaWxlLm9wZW4oXCIje259LXN0ZG91dFwiLCBc
InJcIikucmVhZFxuIgorICAgICAgICBzY3JpcHQgKz0gImVyciA9IEZpbGUub3BlbihcIiN7bn0t
c3RkZXJyXCIsIFwiclwiKS5yZWFkXG4iCisgICAgICAgIHJldHVybiBzY3JpcHQKKyAgICBlbmQK
KworICAgIGRlZiByZXByb1NjcmlwdEhlbHBlcgorICAgICAgICByZXR1cm4gIiIKKyAgICBlbmQK
KworICAgIGRlZiByZXByb1NjcmlwdENvbW1hbmQKKyAgICAgICAgcmV0dXJuICIiCisgICAgZW5k
CisKKyAgICBkZWYgc3RhdHVzQ29tbWFuZChzdGF0dXNfY29kZSkKKyAgICAgICAgIyBNYXkgYmUg
Y2FsbGVkIGluIHRoIHJlc2N1ZSBibG9jaywgc28gc3RhdHVzIGlzIG5vdAorICAgICAgICAjIGd1
YXJhbnRlZWQgdG8gYmUgc2V0OyBpZiBpdCBpc24ndCwgc2V0IHRoZSBleGl0IGNvZGUgdG8KKyAg
ICAgICAgIyBzb21ldGhpbmcgdGhhdCdzIGNsZWFybHkgaW52YWxpZC4KKyAgICAgICAgPDwtRU5E
X1NUQVRVU19DT01NQU5ECisgICAgICAgICAgRmlsZS5vcGVuKCIje3N0YXR1c0ZpbGV9IiwgInci
KSB7IHxmfAorICAgICAgICAgICAgICBmLnB1dHMoIiN7JHJ1blVuaXF1ZUlkfSBcI3tzdGF0dXMu
bmlsPyA/IDk5OTk5OTk5OSA6IHN0YXR1c30gI3tzdGF0dXNfY29kZX0iKQorICAgICAgICAgIH0K
KyAgICAgICAgRU5EX1NUQVRVU19DT01NQU5ECisgICAgZW5kCisKKyAgICBkZWYgZmFpbENvbW1h
bmQKKyAgICAgICAgPDwtRU5EX0ZBSUxfQ09NTUFORAorICAgICAgICAgICAgcHJpbnQgIkZBSUw6
ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9XG4iCisgICAgICAgICAgICAje3N0YXR1
c0NvbW1hbmQoU1RBVFVTX0ZJTEVfRkFJTCl9CisgICAgICAgICAgICAje3JlcHJvU2NyaXB0Q29t
bWFuZH0KKyAgICAgICAgRU5EX0ZBSUxfQ09NTUFORAorICAgIGVuZAorCisgICAgZGVmIHN1Y2Nl
c3NDb21tYW5kCisgICAgICAgIGlmICRwcm9ncmVzc01ldGVyIG9yICR2ZXJib3NpdHkgPj0gMgor
ICAgICAgICAgICAgPDwtRU5EX1ZFUkJPU0VfU1VDQ0VTU19DT01NQU5ECisgICAgICAgICAgICAg
ICAgcHJpbnQgIlBBU1M6ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9XG4iCisgICAg
ICAgICAgICAgICAgI3tzdGF0dXNDb21tYW5kKFNUQVRVU19GSUxFX1BBU1MpfQorICAgICAgICAg
ICAgRU5EX1ZFUkJPU0VfU1VDQ0VTU19DT01NQU5ECisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICIje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfUEFTUyl9XG4iCisgICAgICAgIGVuZAorICAg
IGVuZAorCisgICAgZGVmIHN0YXR1c0ZpbGUKKyAgICAgICAgIiN7U1RBVFVTX0ZJTEVfUFJFRklY
fSN7QGluZGV4fSIKKyAgICBlbmQKKworICAgIGRlZiB3cml0ZVJ1blNjcmlwdChmaWxlbmFtZSkK
KyAgICAgICAganNvbmZpbGVwYXJ0ID0gZmlsZW5hbWUuYmFzZW5hbWUudG9fcyArICIuanNvbiIK
KyAgICAgICAganNvbmRpciA9IGZpbGVuYW1lLmRpcm5hbWUucGFyZW50ICsgIi5qc29uIgorICAg
ICAgICBpZiAoIWpzb25kaXIuZXhpc3Q/KQorICAgICAgICAgICAganNvbmRpci5ta2RpcgorICAg
ICAgICBlbmQKKyAgICAgICAgRmlsZS5vcGVuKGpzb25kaXIgKyBqc29uZmlsZXBhcnQsICJ3Iikg
eworICAgICAgICAgICAgfG91dHB8CisKKyAgICAgICAgICAgIGJhc2VEaXIgPSAoJHJ1bm5lckRp
ciArICIuLiIgKyBAZGlyZWN0b3J5KS5yZWFsZGlycGF0aAorCisgICAgICAgICAgICBvdXRwLnB1
dHMgSlNPTi5nZW5lcmF0ZSh7CisgICAgICAgICAgICAgICAgbmFtZTogQG5hbWUsCisgICAgICAg
ICAgICAgICAgb3V0cHV0RGlyOiAkcnVubmVyRGlyLAorICAgICAgICAgICAgICAgIGJhc2VEaXI6
IGJhc2VEaXIsCisgICAgICAgICAgICAgICAgZW52OiAkZW52VmFycyArIEBhZGRpdGlvbmFsRW52
LAorICAgICAgICAgICAgICAgIG91dHB1dE5hbWU6IEBuYW1lLmdzdWIoLyhcXHxcLykvLCAnXycp
LAorICAgICAgICAgICAgICAgIGNoZWNrU2NyaXB0OiBmaWxlbmFtZSwKKyAgICAgICAgICAgICAg
ICBhcmdzOiBAYXJndW1lbnRzLAorICAgICAgICAgICAgICAgIHN0YXR1c0ZpbGU6ICIje3N0YXR1
c0ZpbGV9IiwKKyAgICAgICAgICAgIH0pCisgICAgICAgIH0KKworICAgICAgICBGaWxlLm9wZW4o
ZmlsZW5hbWUsICJ3IikgeworICAgICAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgICAgICNvdXRw
LnB1dHMgInByaW50IFwiUnVubmluZyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfVxc
blwiIgorICAgICAgICAgICAgb3V0cC5wdXRzICIje3JlcHJvU2NyaXB0SGVscGVyfSIKKyAgICAg
ICAgICAgIG91dHAucHV0cyAiYmVnaW4iCisgICAgICAgICAgICBvdXRwLnB1dHMgInJlcXVpcmUg
J29wZW4zJyIKKyAgICAgICAgICAgIG91dHAucHV0cyAicmVxdWlyZSAnZmlsZXV0aWxzJyIKKwor
ICAgICAgICAgICAgY21kID0gc2hlbGxDb21tYW5kCisKKyAgICAgICAgICAgIGNtZCArPSBAb3V0
cHV0SGFuZGxlci5jYWxsKEBuYW1lKQorCisgICAgICAgICAgICBpZiAkdmVyYm9zaXR5ID49IDMK
KyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgInByaW50IFwiI3tTaGVsbHdvcmRzLnNoZWxsZXNj
YXBlKGNtZCl9XFxuXCIiCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIG91dHAucHV0cyBj
bWQKKyAgICAgICAgICAgIEBlcnJvckhhbmRsZXIuY2FsbChvdXRwLCBzZWxmKQorICAgICAgICAg
ICAgb3V0cC5wdXRzICJyZXNjdWUgUnVudGltZUVycm9yID0+IGUiCisgICAgICAgICAgICBvdXRw
LnB1dHMgIiAgICBwcmludCBcIkZBSUw6ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9
XFxuXCIiCisgICAgICAgICAgICBvdXRwLnB1dHMgIiAgICAje3N0YXR1c0NvbW1hbmQoU1RBVFVT
X0ZJTEVfRkFJTCl9IgorICAgICAgICAgICAgb3V0cC5wdXRzICJlbmQiCisgICAgICAgIH0KKyAg
ICBlbmQKK2VuZAorCitkZWYgcHJlcGFyZVBsYXlTdGF0aW9uVGVzdFJ1bm5lcihydW5saXN0LCBz
ZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMpCisgICAgRmlsZS5vcGVuKEBydW5uZXJEaXIgKyAi
cnVuc2NyaXB0IiwgInciKSB7CisgICAgICAgIHwgb3V0cCB8CisgICAgICAgIHJ1bmxpc3QuZWFj
aCB7CisgICAgICAgICAgICB8IHBsYW4gfAorICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMu
aW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICBlbmQKKwor
ICAgICAgICAgICAgb3V0cC5wdXRzICIuLi8uanNvbi90ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9
Lmpzb24iCisgICAgICAgIH0KKyAgICB9CitlbmQKKworY2xhc3MgUGxheXN0YXRpb25UZXN0UnVu
bmVyIDwgVGVzdFJ1bm5lcgorICAgIGRlZiBwcmVwYXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBs
YW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIEZpbGUub3BlbihAcnVu
bmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3IikgeworICAgICAgICAgICAgfCBvdXRwIHwKKyAgICAg
ICAgICAgIHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAg
ICAgICAgICBpZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAg
ICAgICBuZXh0CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICIuLi8uanNvbi90ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9Lmpzb24iCisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICBlbmQKKyAgICBkZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAg
ICAgICBvcHRpb25zID0gRU5WWyJKU0NURVNUX29wdGlvbnMiXQorCisgICAgICAgIGZzUm9vdCA9
ICRqc2NQYXRoLmRpcm5hbWUKKyAgICAgICAgY29tbWFuZCA9ICJQbGF5U3RhdGlvblRlc3RSdW5u
ZXIgI3tvcHRpb25zfSAtbnVtUHJvY2Vzc2VzPSN7JG51bUNoaWxkUHJvY2Vzc2VzLnRvX3N9IC1l
eGU9I3skanNjUGF0aH0gLWZzcm9vdD0je2ZzUm9vdH0gLS1ydW5VbmlxdWVJZD0jeyRydW5Vbmlx
dWVJZH0gQCN7QHJ1bm5lckRpcn0vcnVuc2NyaXB0IgorCisgICAgICAgIHByaW50IGNvbW1hbmQK
KworICAgICAgICByZXR1cm4gY29tbWFuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIFRlc3RSdW5u
ZXJTaGVsbCA8IFBsYXlzdGF0aW9uVGVzdFJ1bm5lcgorZW5kCisKK2NsYXNzIFRlc3RSdW5uZXJN
YWtlIDwgUGxheXN0YXRpb25UZXN0UnVubmVyCitlbmQKKworY2xhc3MgVGVzdFJ1bm5lclJ1Ynkg
PCBQbGF5c3RhdGlvblRlc3RSdW5uZXIKK2VuZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC93cml0ZXItcnVieS5yYiBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qvd3JpdGVyLXJ1YnkucmIKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ3
ZWE3NTExYjYzM2Y5ZTZhZTA5M2MyMmU2NDU0YTUwMjg3OTU4NgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qvd3JpdGVyLXJ1YnkucmIK
QEAgLTAsMCArMSw0NzYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
cmVxdWlyZSAnb3BlbjMnCisKKyRoYXNEaWZmID0gZmFsc2UKK2lmICgkaG9zdE9TID09ICd3aW5k
b3dzJykKKyAgICBvdXQsIGVyciwgc3RhdHVzID0gT3BlbjMuY2FwdHVyZTMoIndoZXJlIiwgIi9x
IiwgImRpZmYiKQorICAgICRoYXNEaWZmID0gc3RhdHVzLnN1Y2Nlc3M/CitlbHNlCisgICAgb3V0
LCBlcnIsIHN0YXR1cyA9IE9wZW4zLmNhcHR1cmUzKCJ3aGljaCIsICJkaWZmIikKKyAgICAkaGFz
RGlmZiA9IHN0YXR1cy5zdWNjZXNzPworZW5kCisKKyMgUHJlZml4IGVhY2ggbGluZSBvZiBzdHIg
d2l0aCB0aGUgbmFtZQorZGVmIHByZWZpeFN0cmluZyhzdHIsIG5hbWUpCisgICAgIiN7c3RyfS5l
bXB0eT8gPyBcIlwiIDogI3tzdHJ9LmdzdWIoL14vbSwgXCIje25hbWV9OiBcIikiCitlbmQKKwor
ZGVmIHNpbGVudE91dHB1dEhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgbmFtZSB8
CisgICAgICAgIDw8LUVORF9TSUxFTlRfT1VUUFVUX0hBTkRMRVIKKyAgICAgICAgb3V0ID0gb3V0
ICsgZXJyCisgICAgICAgIGVyciA9IG5pbAorICAgICAgICBTVERPVVQucHV0cyAje3ByZWZpeFN0
cmluZygib3V0IiwgbmFtZSl9IGlmICghb3V0LmVtcHR5PykKKyAgICAgICAgRmlsZS5vcGVuKCIj
e1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIp
KS50b19zKX0iLCAidyIpIGRvIHxvdXRfZmlsZXwKKyAgICAgICAgICAgIG91dF9maWxlLnB1dHMg
b3V0CisgICAgICAgIGVuZAorICAgICAgICBFTkRfU0lMRU5UX09VVFBVVF9IQU5ETEVSCisgICAg
fQorZW5kCisKKyMgT3V0cHV0IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRv
IHByb2R1Y2UgbWVhbmluZ2Z1bCBvdXRwdXQuCitkZWYgbm9pc3lPdXRwdXRIYW5kbGVyCisgICAg
UHJvYy5uZXcgeworICAgICAgICB8IG5hbWUgfAorICAgICAgICA8PC1FTkRfTk9JU1lfT1VUUFVU
X0hBTkRMRVIKKyAgICAgICAgb3V0ID0gb3V0ICsgZXJyCisgICAgICAgIGVyciA9IG5pbAorICAg
ICAgICBGaWxlLm9wZW4oIiN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikg
KyAobmFtZSArICIub3V0IikpLnRvX3MpfSIsICJ3IikgZG8gfG91dF9maWxlfAorICAgICAgICAg
ICAgb3V0X2ZpbGUucHV0cyBvdXQKKyAgICAgICAgZW5kCisgICAgICAgIEVORF9OT0lTWV9PVVRQ
VVRfSEFORExFUgorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQg
ZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMuCisjIFRo
aXMgaXMgdXNlZnVsIHdoZW4gYSB0ZXN0IGlzIGV4cGVjdGVkIHRvIGZhaWwuCitkZWYgc2ltcGxl
RXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAg
ICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKKyAgICAgICAgb3V0cC5wdXRz
ICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNv
ZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAg
ICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5w
dXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21t
YW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFu
ZGxlciBmb3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiB6ZXJvIGV4
aXQgc3RhdHVzLgorZGVmIGV4cGVjdGVkRmFpbEVycm9ySGFuZGxlcgorICAgIFByb2MubmV3IHsK
KyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0cC5wdXRzICJpZiBzdWNjZXNzKHN0
YXR1cylcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygi
XCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgMFxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAg
IG91dHAucHV0cyAiZWxzZVxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNj
ZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgorICAgIH0KK2VuZAorCisjIEVy
cm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4g
bm9uLXplcm8gZXhpdCBzdGF0dXMgYW5kIHByb2R1Y2UKKyMgbG90cyBvZiBzcGV3LiBUaGlzIHdp
bGwgZWNobyB0aGF0IHNwZXcgd2hlbiB0aGUgdGVzdCBmYWlscy4KK2RlZiBub2lzeUVycm9ySGFu
ZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0
cC5wdXRzICJpZiAhc3VjY2VzcyhzdGF0dXMpXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHBy
aW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91
dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQg
ZXhpdCBjb2RlIFwje3N0YXR1cy5leGl0c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAg
IG91dHAucHV0cyAiZWxzZVxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNj
ZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgorICAgIH0KK2VuZAorCisgZGVm
IGZhbGxiYWNrRGlmZihleHBlY3RlZCwgb3V0cHV0KQorICAgIDw8LUVORF9GQUxMQkFDS19ESUZG
CisgICAgICAgICAjIEZhbGxiYWNrIGRpZmYgZm9yIHdoZW4gZGlmZigxKSBpc24ndCBhdmFpbGFi
bGUKKyAgICAgICAgIGRpZmZzID0gW10KKyAgICAgICAgIGxpbmVfbnVtYmVyID0gMAorICAgICAg
ICAgRmlsZS5vcGVuKCIje2V4cGVjdGVkfSIpIGRvIHwgZXhwZWN0ZWQgfAorICAgICAgICAgICAg
IEZpbGUub3BlbigiI3tvdXRwdXR9IikgZG8gfCBhY3R1YWwgfAorICAgICAgICAgICAgICAgICBs
b29wIGRvCisgICAgICAgICAgICAgICAgICAgICBsMSA9IGV4cGVjdGVkLmdldHMKKyAgICAgICAg
ICAgICAgICAgICAgIGwyID0gYWN0dWFsLmdldHMKKyAgICAgICAgICAgICAgICAgICAgIGlmIChs
MSAhPSBsMikKKyAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmcy5wdXNoKFtsaW5lX251bWJl
ciwgbDEsIGwyXSkKKyAgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAg
ICAgbGluZV9udW1iZXIgPSBsaW5lX251bWJlciArIDEKKyAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrIGlmIChsMSA9PSBuaWwgJiYgbDIgPT0gbmlsKQorICAgICAgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgIGVuZAorICAgICAgICAgaXNEaWZmZXJlbnQgPSAhZGlm
ZnMuZW1wdHk/CisgICAgICAgICBkaWZmT3V0ID0gZGlmZnMubWFwIHsgCisgICAgICAgICAgICAg
fCBkaWZmIHwgCisgICAgICAgICAgICAgIkBAIC1cI3tkaWZmWzBdfSwxICtcI3tkaWZmWzBdfSwx
IEBAXFxuIiArCisgICAgICAgICAgICAgKGRpZmZbMV0gPyAiLVwje2RpZmZbMV19IiA6ICIiKSAr
IAorICAgICAgICAgICAgIChkaWZmWzJdID8gIitcI3tkaWZmWzJdfSIgOiAiIikKKyAgICAgICAg
fS5qb2luKCIiKQorICAgIEVORF9GQUxMQkFDS19ESUZGCitlbmQKKworZGVmIHJ1bkRpZmYoZXhw
ZWN0ZWQsIG91dHB1dCkKKyAgICA8PC1FTkRfUlVOX0RJRkYKKyAgICAgICAgZGlmZk91dCwgZGlm
ZlN0YXR1cyA9IE9wZW4zLmNhcHR1cmUyKCJkaWZmIiwKKyAgICAgICAgICAgICItLXN0cmlwLXRy
YWlsaW5nLWNyIiwKKyAgICAgICAgICAgICItdSIsCisgICAgICAgICAgICAiI3tleHBlY3RlZH0i
LAorICAgICAgICAgICAgIiN7b3V0cHV0fSIpOworICAgICAgICBpc0RpZmZlcmVudCA9ICFkaWZm
U3RhdHVzLnN1Y2Nlc3M/CisgICAgRU5EX1JVTl9ESUZGCitlbmQKKworIyBHZXQgYSBkaWZmZXJl
bmNlIGJldHdlZW4gdHdvIGZpbGVzLCB1c2luZyBkaWZmIHdoZXJlIGF2YWlsYWJsZSwgZmFsbGlu
ZyBiYWNrCisjIG9uIGEgbGltaXRlZCBjb21wYXJpc29uIHdoZW4gZGlmZiBpcyBub3QgYXZhaWxh
YmxlCitkZWYgZ2V0RGlmZihleHBlY3RlZCwgb3V0cHV0KQorICAgIGlmICRoYXNEaWZmCisgICAg
ICAgIHJ1bkRpZmYoZXhwZWN0ZWQsIG91dHB1dCkKKyAgICBlbHNlCisgICAgICAgIGZhbGxiYWNr
RGlmZihleHBlY3RlZCxvdXRwdXQpCisgICAgZW5kCitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZv
ciB0ZXN0cyB0aGF0IGRpZmYgdGhlaXIgb3V0cHV0IHdpdGggc29tZSBleHBlY3RhdGlvbi4KK2Rl
ZiBkaWZmRXJyb3JIYW5kbGVyKGV4cGVjdGVkRmlsZW5hbWUpCisgICAgUHJvYy5uZXcgeworICAg
ICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMu
c2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3Mp
CisgICAgICAgIAorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKKyAg
ICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5u
YW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmlu
ZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxu
XCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5m
YWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2lmIEZpbGUuZXhpc3RzPyhcIi4uLyN7
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX1cIilcbiIKKyAgICAgICAg
b3V0cC5wdXRzIGdldERpZmYoIi4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZp
bGVuYW1lKX0iLCBvdXRwdXRGaWxlbmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgaWYgaXNE
aWZmZXJlbnRcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIHByaW50ICIgKyBwcmVmaXhT
dHJpbmcoIlwiRElGRiBGQUlMVVJFIVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoImRpZmZPdXQiLCBwbGFu
Lm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENv
bW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICIgICAgZWxzZSIKKyAgICAgICAgb3V0cC5wdXRzICIg
ICAgICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiICAgIGVu
ZCIKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHBy
aW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiTk8gRVhQRUNUQVRJT04hXFxuXCIiLCBwbGFuLm5hbWUp
ICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJv
dXQiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5m
YWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZCIKKyAgICB9CitlbmQKKworIyBFcnJv
ciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9ydCBlcnJvciBieSBzYXlpbmcgImZhaWxlZCEi
LiBUaGlzIGlzIHVzZWQgYnkgTW96aWxsYQorIyB0ZXN0cy4KK2RlZiBtb3ppbGxhRXJyb3JIYW5k
bGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRw
LnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJp
bnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBl
eGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgor
ICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAg
b3V0cC5wdXRzICJlbHNpZiAvZmFpbGVkIS9pID1+IG91dFxuIgorICAgICAgICBvdXRwLnB1dHMg
IiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkRldGVjdGVkIGZhaWx1cmVzOlxcblwiIiwg
cGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZp
eFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisgICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0
cyAiZW5kXG4iCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBy
ZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0bworIyBm
YWlsLiBUaGlzIGlzIHVzZWQgYnkgTW96aWxsYSB0ZXN0cy4KK2RlZiBtb3ppbGxhRmFpbEVycm9y
SGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAg
b3V0cC5wdXRzICJpZiAhc3VjY2VzcyhzdGF0dXMpXG4iCisgICAgICAgIG91dHAucHV0cyAiICAg
ICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzaWYgL2ZhaWxl
ZCEvaSA9fiBvdXRcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0Nv
bW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAg
IHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiTk9USUNFOiBZb3UgbWFkZSB0aGlzIHRlc3QgcGFz
cywgYnV0IGl0IHdhcyBleHBlY3RlZCB0byBmYWlsXFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgor
ICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRw
LnB1dHMgImVuZFxuIgorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRo
YXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIsIGFuZCBhcmUgZXhwZWN0ZWQgdG8g
aGF2ZQorIyBhbiBleGl0IGNvZGUgb2YgMy4KK2RlZiBtb3ppbGxhRXhpdDNFcnJvckhhbmRsZXIK
KyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHAucHV0
cyAiaWYgc3VjY2VzcyhzdGF0dXMpXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIg
KyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0
cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFRlc3QgZXhwZWN0ZWQgdG8g
ZmFpbCwgYnV0IHJldHVybmVkIHN1Y2Nlc3NmdWxseVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAg
IG91dHAucHV0cyAiZWxzaWYgc3RhdHVzLmV4aXRzdGF0dXMgIT0gMyIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjog
VW5leHBlY3RlZCBleGl0IGNvZGU6IFwje3N0YXR1cy5leGl0c3RhdHVzfVxcblwiIiwgcGxhbi5u
YW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21t
YW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzaWYgL2ZhaWxlZCEvaSA9fiBvdXRcbiIKKyAgICAg
ICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJEZXRlY3RlZCBmYWls
dXJlczpcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHBy
aW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91
dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxz
ZVxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAg
ICAgICBvdXRwLnB1dHMgImVuZFxuIgorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9y
IHRlc3RzIHRoYXQgcmVwb3J0IHN1Y2Nlc3MgYnkgc2F5aW5nICJQYXNzZWQiIG9yIGVycm9yIGJ5
IHNheWluZyAiRkFJTEVEIi4KKyMgVGhpcyBpcyB1c2VkIGJ5IENoYWtyYSB0ZXN0cy4KK2RlZiBj
aGFrcmFQYXNzRmFpbEVycm9ySGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRw
LCBwbGFuIHwKKyAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2VzcyhzdGF0dXMpXG4iCisgICAg
ICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFt
ZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmco
IlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1cy5leGl0c3RhdHVzfVxcblwi
IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFp
bENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvRkFJTEVEL2kgPX4gb3V0XG4iCisg
ICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRGV0ZWN0ZWQg
ZmFpbHVyZXM6XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAg
ICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMg
ImVsc2VcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQK
KyAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIKKyAgIH0KK2VuZAorCitjbGFzcyBQbGFuIDwgQmFz
ZVBsYW4KKyAgICBkZWYgc2hlbGxDb21tYW5kIAorICAgICAgICBzY3JpcHQgPSAib3V0ID0gbmls
XG4iCisgICAgICAgIHNjcmlwdCArPSAiZXJyID0gbmlsXG4iCisgICAgICAgIHNjcmlwdCArPSAi
c3RhdHVzID0gbmlsXG4iCisgICAgICAgIHNjcmlwdCArPSAiRGlyLmNoZGlyKFwiLi4vI3tTaGVs
bHdvcmRzLnNoZWxsZXNjYXBlKEBkaXJlY3RvcnkudG9fcyl9XCIpIGRvXG4iCisgICAgICAgIHNj
cmlwdCArPSAiICBlbnYgPSB7fVxuIgorICAgICAgICAoJGVudlZhcnMgKyBhZGRpdGlvbmFsRW52
KS5lYWNoIHsKKyAgICAgICAgICAgIHx2YXJ8IAorICAgICAgICAgICAgKGtleSwgdmFsdWUpID0g
dmFyLnNwbGl0KC89LywgMikKKyAgICAgICAgICAgIHNjcmlwdCArPSAiICBlbnZbXCIje2tleX1c
Il0gPSBcIiN7dmFsdWV9XCJcbiIKKyAgICAgICAgfQorICAgICAgICBzY3JpcHQgKz0gIiAgICBv
dXQsIGVyciwgc3RhdHVzID0gT3BlbjMuY2FwdHVyZTMoZW52LCBcbiIKKyAgICAgICAgc2NyaXB0
ICs9IEBhcmd1bWVudHMubWFwIHsgfCBhcmd1bWVudCB8ICIgICAgICAgIFwiI3thcmd1bWVudH1c
IiJ9LmpvaW4oIixcbiIpCisgICAgICAgIHNjcmlwdCArPSAiICAgIClcbiIKKyAgICAgICAgc2Ny
aXB0ICs9ICJlbmRcbiIKKyAgICAgICAgcmV0dXJuIHNjcmlwdAorICAgIGVuZAorCisgICAgZGVm
IHJlcHJvU2NyaXB0SGVscGVyCisgICAgICAgIHNjcmlwdCA9ICJkZWYgZXJyb3Jfc2NyaXB0X2Nv
bnRlbnRzXG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgIDw8LUVORF9PRl9TQ1JJUFRcbiIKKyAg
ICAgICAgc2NyaXB0ICs9ICIgICAgICAgIHJlcXVpcmUgJ29wZW4zJ1xuIgorICAgICAgICBzY3Jp
cHQgKz0gIiAgICAgICAgZGVmIHN1Y2Nlc3Moc3RhdHVzKVxuIgorICAgICAgICBzY3JpcHQgKz0g
IiAgICAgICAgICAgIHN0YXR1cy5zdWNjZXNzP1xuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAg
ICAgZW5kXG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICBzY3JpcHRfbG9jYXRpb24gPSBG
aWxlLmV4cGFuZF9wYXRoKEZpbGUuZGlybmFtZShfX0ZJTEVfXykpXG4iCisgICAgICAgIHNjcmlw
dCArPSAiICAgICAgICBEaXIuY2hkaXIoXCJcXFwje3NjcmlwdF9sb2NhdGlvbn0iCisgICAgICAg
IFBhdGhuYW1lLm5ldyhAbmFtZSkuZGlybmFtZS5lYWNoX2ZpbGVuYW1lIHsKKyAgICAgICAgICAg
IHwgcGF0aENvbXBvbmVudCB8CisgICAgICAgICAgICBzY3JpcHQgKz0gIi8uLiIKKyAgICAgICAg
fQorICAgICAgICBzY3JpcHQgKz0gIi8ucnVubmVyXCIpIGRvXG4iCisgICAgICAgIHNjcmlwdCAr
PSAiICAgICAgICAgICAgRU5WW1wiRFlMRF9GUkFNRVdPUktfUEFUSFwiXSA9IFwiI3skdGVzdGlu
Z0ZyYW1ld29ya1BhdGguZGlybmFtZX1cIlxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAg
ICAgIEVOVltcIkpTQ1RFU1RfdGltZW91dFwiXSA9IFwiI3tFTlZbJ0pTQ1RFU1RfdGltZW91dCdd
fVwiXG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgRU5WW1wiSlNDVEVTVF9oYXJk
VGltZW91dFwiXSA9IFwiI3tFTlZbJ0pTQ1RFU1RfaGFyZFRpbWVvdXQnXX1cIlxuIgorICAgICAg
ICBzY3JpcHQgKz0gIiAgICAgICAgICAgIEVOVltcIkpTQ1RFU1RfbWVtb3J5TGltaXRcIl0gPSBc
IiN7RU5WWydKU0NURVNUX21lbW9yeUxpbWl0J119XCJcbiIKKworICAgICAgICBzY3JpcHQgKz0g
IiAgICAgICAgICAgICN7c2hlbGxDb21tYW5kfSIKKyAgICAgICAgc2NyaXB0ICs9ICIgICAgICAg
ICAgICBwcmludCBvdXRcbiIKKyAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICBpZiAoIXN1
Y2Nlc3Moc3RhdHVzKSlcbiIKKyAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICAgICAgZXhp
dCgxKVxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIGVuZFxuIgorICAgICAgICBz
Y3JpcHQgKz0gIiAgICAgICAgZW5kXG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgIEVORF9PRl9T
Q1JJUFRcbiIKKyAgICAgICAgc2NyaXB0ICs9ICJlbmRcbiIKKyAgICAgICAgcmV0dXJuIHNjcmlw
dAorICAgIGVuZAorICAgIAorICAgIGRlZiByZXByb1NjcmlwdENvbW1hbmQKKyAgICAgICAgPDwt
RU5EX1JFUFJPX1NDUklQVF9DT01NQU5ECisgICAgICAgICAgICBGaWxlLm9wZW4oIiN7U2hlbGx3
b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUubmV3KCIuLiIpICsgQG5hbWUpLnRvX3MpfSIsICJ3
IikgZG8gfHNjcnwKKyAgICAgICAgICAgICAgICBzY3IucHV0cyAiXCN7ZXJyb3Jfc2NyaXB0X2Nv
bnRlbnRzfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBFTkRfUkVQUk9fU0NSSVBUX0NPTU1B
TkQKKyAgICBlbmQKKworICAgIGRlZiBzdGF0dXNDb21tYW5kKHN0YXR1c19jb2RlKQorICAgICAg
ICAjIE1heSBiZSBjYWxsZWQgaW4gdGggcmVzY3VlIGJsb2NrLCBzbyBzdGF0dXMgaXMgbm90Cisg
ICAgICAgICMgZ3VhcmFudGVlZCB0byBiZSBzZXQ7IGlmIGl0IGlzbid0LCBzZXQgdGhlIGV4aXQg
Y29kZSB0bworICAgICAgICAjIHNvbWV0aGluZyB0aGF0J3MgY2xlYXJseSBpbnZhbGlkLgorICAg
ICAgICA8PC1FTkRfU1RBVFVTX0NPTU1BTkQKKyAgICAgICAgICBGaWxlLm9wZW4oIiN7c3RhdHVz
RmlsZX0iLCAidyIpIHsgfGZ8CisgICAgICAgICAgICAgIGYucHV0cygiI3skcnVuVW5pcXVlSWR9
IFwje3N0YXR1cy5uaWw/ID8gOTk5OTk5OTk5IDogc3RhdHVzLmV4aXRzdGF0dXN9ICN7c3RhdHVz
X2NvZGV9IikKKyAgICAgICAgICB9CisgICAgICAgIEVORF9TVEFUVVNfQ09NTUFORAorICAgIGVu
ZAorCisgICAgZGVmIGZhaWxDb21tYW5kCisgICAgICAgIDw8LUVORF9GQUlMX0NPTU1BTkQKKyAg
ICAgICAgICAgIHByaW50ICJGQUlMOiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfVxu
IgorICAgICAgICAgICAgI3tzdGF0dXNDb21tYW5kKFNUQVRVU19GSUxFX0ZBSUwpfQorICAgICAg
ICAgICAgI3tyZXByb1NjcmlwdENvbW1hbmR9CisgICAgICAgIEVORF9GQUlMX0NPTU1BTkQKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgaWYgJHByb2dyZXNz
TWV0ZXIgb3IgJHZlcmJvc2l0eSA+PSAyCisgICAgICAgICAgICA8PC1FTkRfVkVSQk9TRV9TVUND
RVNTX0NPTU1BTkQKKyAgICAgICAgICAgICAgICBwcmludCAiUEFTUzogI3tTaGVsbHdvcmRzLnNo
ZWxsZXNjYXBlKEBuYW1lKX1cbiIKKyAgICAgICAgICAgICAgICAje3N0YXR1c0NvbW1hbmQoU1RB
VFVTX0ZJTEVfUEFTUyl9CisgICAgICAgICAgICBFTkRfVkVSQk9TRV9TVUNDRVNTX0NPTU1BTkQK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgIiN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9Q
QVNTKX1cbiIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIHN0YXR1c0ZpbGUK
KyAgICAgICAgIiN7U1RBVFVTX0ZJTEVfUFJFRklYfSN7QGluZGV4fSIKKyAgICBlbmQKKworICAg
IGRlZiB3cml0ZVJ1blNjcmlwdChmaWxlbmFtZSkKKyAgICAgICAgRmlsZS5vcGVuKGZpbGVuYW1l
LCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAgICAgICAgICBvdXRwLnB1dHMgInBy
aW50IFwiUnVubmluZyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfVxcblwiIgorICAg
ICAgICAgICAgb3V0cC5wdXRzICIje3JlcHJvU2NyaXB0SGVscGVyfSIKKyAgICAgICAgICAgIG91
dHAucHV0cyAiYmVnaW4iCisgICAgICAgICAgICBvdXRwLnB1dHMgInJlcXVpcmUgJ29wZW4zJyIK
KyAgICAgICAgICAgIG91dHAucHV0cyAicmVxdWlyZSAnZmlsZXV0aWxzJyIKKyAgICAgICAgICAg
IG91dHAucHV0cyAiZGVmIHN1Y2Nlc3Moc3RhdHVzKSIKKyAgICAgICAgICAgIG91dHAucHV0cyAi
ICAgc3RhdHVzLnN1Y2Nlc3M/IgorICAgICAgICAgICAgb3V0cC5wdXRzICJlbmQiCisKKyAgICAg
ICAgICAgIGNtZCA9IHNoZWxsQ29tbWFuZAorCisgICAgICAgICAgICBjbWQgKz0gQG91dHB1dEhh
bmRsZXIuY2FsbChAbmFtZSkKKworICAgICAgICAgICAgaWYgJHZlcmJvc2l0eSA+PSAzCisgICAg
ICAgICAgICAgICAgb3V0cC5wdXRzICJwcmludCBcIiN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShj
bWQpfVxcblwiIgorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBvdXRwLnB1dHMgY21kCisg
ICAgICAgICAgICBAZXJyb3JIYW5kbGVyLmNhbGwob3V0cCwgc2VsZikKKyAgICAgICAgICAgIG91
dHAucHV0cyAicmVzY3VlIgorICAgICAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgXCJGQUlM
OiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfVxcblwiIgorICAgICAgICAgICAgb3V0
cC5wdXRzICIgICAgI3tzdGF0dXNDb21tYW5kKFNUQVRVU19GSUxFX0ZBSUwpfSIKKyAgICAgICAg
ICAgIG91dHAucHV0cyAiZW5kIgorICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3MgVGVz
dFJ1bm5lclNoZWxsIDwgVGVzdFJ1bm5lcgorICAgIGRlZiBwcmVwYXJlUnVubmVyKHJ1bmxpc3Qs
IHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIEZpbGUu
b3BlbigiI3tAcnVubmVyRGlyICsgInJ1bnNjcmlwdCJ9IiwgInciKSB7IHxmfAorICAgICAgICAg
ICAgcnVubGlzdC5lYWNoIHsgfHBsYW58CisgICAgICAgICAgICAgICAgaWYgY29tcGxldGVkUGxh
bnMuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgICAgIGYucHV0cygicnVieSB0ZXN0X3NjcmlwdF8je3BsYW4u
aW5kZXh9IikKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBgZG9zMnVuaXggI3tA
cnVubmVyRGlyICsgInJ1bnNjcmlwdCJ9YAorICAgIGVuZAorICAgIGRlZiBjb21tYW5kKHJlbW90
ZUluZGV4PTApCisgICAgICAgICJzaCBydW5zY3JpcHQiCisgICAgZW5kCitlbmQKKworY2xhc3Mg
VGVzdFJ1bm5lck1ha2UgPCBUZXN0UnVubmVyCisgICAgZGVmIG91dHB1dF90YXJnZXQob3V0cCwg
cGxhbiwgcHJlcmVxcykKKyAgICAgICAgaW5kZXggPSBwbGFuLmluZGV4CisgICAgICAgIHRhcmdl
dCA9ICJ0ZXN0X2RvbmVfI3tpbmRleH0iCisgICAgICAgIG91dHAucHV0cyAiI3t0YXJnZXR9OiAj
e3ByZXJlcXMuam9pbigiICIpfSIKKyAgICAgICAgb3V0cC5wdXRzICJcdHJ1YnkgdGVzdF9zY3Jp
cHRfI3tpbmRleH0iCisgICAgICAgIHRhcmdldAorICAgIGVuZAorICAgIGRlZiBwcmVwYXJlUnVu
bmVyRm9yUmVtb3RlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3Rl
SW5kZXgpCisgICAgICAgIHJ1blBsYW5zID0gW10KKyAgICAgICAgc2VyaWFsUnVuUGxhbnMgPSBb
XQorICAgICAgICBydW5saXN0LmVhY2ggeworICAgICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAg
ICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgbmV4
dAorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBpZiBAcmVtb3RlSG9zdHMubmlsPyBvciBw
bGFuLmluZGV4ICUgQHJlbW90ZUhvc3RzLmxlbmd0aCA9PSByZW1vdGVJbmRleAorICAgICAgICAg
ICAgICAgIGlmIHNlcmlhbFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgICAg
IHNlcmlhbFJ1blBsYW5zIDw8IHBsYW4KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHJ1blBsYW5zIDw8IHBsYW4KKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB9CisKKyAgICAgICAgRmlsZS5vcGVuKEBydW5uZXJEaXIgKyAiTWFr
ZWZpbGUuI3tyZW1vdGVJbmRleH0iLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAg
ICAgICAgICBpZiBzZXJpYWxSdW5QbGFucy5lbXB0eT8KKyAgICAgICAgICAgICAgICBvdXRwLnB1
dHMoImFsbDogcGFyYWxsZWwiKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNl
cmlhbFByZXJlcSA9ICJ0ZXN0X2RvbmVfI3tzZXJpYWxSdW5QbGFuc1stMV0uaW5kZXh9IgorICAg
ICAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiAje3NlcmlhbFByZXJlcX0iKQorICAgICAgICAg
ICAgICAgIHByZXZfdGFyZ2V0ID0gInBhcmFsbGVsIgorICAgICAgICAgICAgICAgIHNlcmlhbFJ1
blBsYW5zLmVhY2ggeworICAgICAgICAgICAgICAgICAgICB8IHBsYW4gfAorICAgICAgICAgICAg
ICAgICAgICBwcmV2X3RhcmdldCA9IG91dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgW3ByZXZfdGFy
Z2V0XSkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIHBh
cmFsbGVsVGFyZ2V0cyA9IHJ1blBsYW5zLmNvbGxlY3QgeworICAgICAgICAgICAgICAgIHwgcGxh
biB8CisgICAgICAgICAgICAgICAgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbXSkKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG91dHAucHV0cygicGFyYWxsZWw6ICIgKyBwYXJhbGxlbFRh
cmdldHMuam9pbigiICIpKQorICAgICAgICB9CisgICAgZW5kCisgICAgZGVmIHByZXBhcmVSdW5u
ZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykKKyAg
ICAgICAgaWYgcmVtb3RlSG9zdHMubmlsPworICAgICAgICAgICAgcHJlcGFyZVJ1bm5lckZvclJl
bW90ZShydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIDApCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJlbW90ZUhvc3RzLmVhY2hfaW5kZXggeworICAgICAgICAgICAgICAg
IHxyZW1vdGVJbmRleHwKKyAgICAgICAgICAgICAgICBwcmVwYXJlUnVubmVyRm9yUmVtb3RlKHJ1
bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSW5kZXgpCisgICAgICAg
ICAgICB9CisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBjb21tYW5kKHJlbW90ZUluZGV4
PTApCisgICAgICAgICJtYWtlIC1qICN7JG51bUNoaWxkUHJvY2Vzc2VzfSAtcyAtZiBNYWtlZmls
ZS4je3JlbW90ZUluZGV4fSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBUZXN0UnVubmVyUnVieSA8
IFRlc3RSdW5uZXIKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0LCBzZXJpYWxQbGFucywg
Y29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBGaWxlLm9wZW4oQHJ1bm5lckRp
ciArICJydW5zY3JpcHQiLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAgICAgICAg
ICBydW5saXN0LmVhY2ggeworICAgICAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICAg
ICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICAgICAg
bmV4dAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIG91dHAucHV0cyAic3lz
dGVtIFwicnVieSB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9XCIiCisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICBlbmQKKyAgICBkZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAgICAg
ICAicnVieSBydW5zY3JpcHQiCisgICAgZW5kCitlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443296</attachid>
            <date>2021-11-04 05:49:50 -0700</date>
            <delta_ts>2021-11-07 03:19:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232529-20211104134946.patch</filename>
            <type>text/plain</type>
            <size>208781</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGZkNjUwZTg4MTY3N2JhZjFkNGYwOGI5MDczOGRlMDll
MDlmYTRkZC4uOTNlMmM4NTM4YmJlYjdhMThiYmVlMDEzNTFiOTgzNGNlNThhODBmNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgw
IEBACisyMDIxLTExLTA0ICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIE1vdmUgZGV0ZWN0aW9uIG9mIGZsYWt5IEpTQyB0ZXN0cyB0byBydW4t
anNjLXN0cmVzcy10ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMyNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ3VycmVudGx5LCBmbGFreSBkZXRlY3Rpb24gaGFwcGVucyBieQorICAgICAgICBS
ZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgdGhhdCB3
ZSBlbmQgdXAKKyAgICAgICAgcmVydW5uaW5nIGFsbCBKU0MgdGVzdHMgd2hlbiB0aGVyZSdzIGV2
ZW4gYSBzaW5nbGUgZmFpbHVyZS4gRXZlbgorICAgICAgICB3b3JzZSwgd2hlbiB0aGUgdHJlZSBp
cyBicm9rZW4gKGFzIHNvbWV0aW1lcyBoYXBwZW5zIG9uIEFSTTMyIGFuZAorICAgICAgICBNSVBT
KSB3ZSBlbmQgdXAKKworICAgICAgICAxLiBydW5uaW5nIHRoZSB0ZXN0cyBvbmNlICh0aGV5IGZh
aWwpCisgICAgICAgIDIuIHJ1bm5pbmcgYWxsIHRlc3RzIGFnYWluCisgICAgICAgIDMuIHJ1bm5p
bmcgYWxsIHRlc3RzIGFnYWluIHdpdGhvdXQgdGhlIHBhdGNoCisKKyAgICAgICAgVGhpcyBtZWFu
cyB0aGUgcXVldWUgc2xvd3MgZG93biBhIGxvdCwgc2luY2UgaXQgcnVucyBhbGwgSlNDCisgICAg
ICAgIHN0cmVzcyB0ZXN0cyAzIHRpbWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gZWxpbWluYXRlIHN0ZXAgMiwgd2hpbGUgYWxzbyBiZWluZyBtb3JlCisgICAgICAgIHJlbGlh
YmxlIGFib3V0IGhhbmRsaW5nIGZsYWt5IHRlc3RzLiBTaW5jZSB3ZSBubyBsb25nZXIgbmVlZCB0
bworICAgICAgICByZXJ1biB0aGUgd2hvbGUgdGVzdCBzdWl0ZSwgd2UgY2FuIHNwZW5kIG1vcmUg
Q1BVIHRpbWUgb24KKyAgICAgICAgaWRlbnRpZnlpbmcgdGVzdHMgdGhhdCBtaWdodCBiZSBmbGFr
eS4gVGhlIHVzZXIgY2FuIHBhc3MgaW4KKyAgICAgICAgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5
PXBhc3NQZXJjZW50YWdlLG1heFRyaWVzLG1heEZhaWxpbmcuIElmCisgICAgICAgIGxlc3MgdGhh
biBtYXhGYWlsaW5nIHRlc3RzIGZhaWxlZCwgd2UgcnVuIHRoZW0gYWdhaW4gKHVwIHRvCisgICAg
ICAgIG1heFRyaWVzKSB1bnRpbCB3ZSBjYW4gdGVsbCB3aGV0aGVyIHRoZXkgcGFzcyBtb3JlIHRo
YW4KKyAgICAgICAgcGFzc1BlcmNlbnRhZ2Ugb2YgdGhlIHRpbWUuIFRoaXMgc2hvdWxkIHJlc3Vs
dCBpbiBsZXNzIGZhbHNlCisgICAgICAgIHBvc2l0aXZlcyBjb21wYXJlZCB0byBSZVJ1bkphdmFT
Y3JpcHRDb3JlVGVzdHMsIGFzIHdlJ2xsIG5vIGxvbmdlcgorICAgICAgICBkZWNsYXJlIGEgZmxh
a3kgdGVzdCBhIGZhaWx1cmUgaWYgaXQgaGFwcGVucyB0byBmYWlsIHR3byB0aW1lcyBpbgorICAg
ICAgICBhIHJvdy4gSW4gb3JkZXIgdG8gcmVtb3ZlIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cywg
dGhlIHBhdGNoCisgICAgICAgIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIC0tdHJlYXQtZmFpbGlu
Zy1hcy1mbGFreSBieSBkZWZhdWx0IGluIHRoZQorICAgICAgICBKU0MgRVdTIHF1ZXVlcy4KKwor
ICAgICAgICBJbXBsZW1lbnRhdGlvbi13aXNlLCB0aGUgcGF0Y2ggZ2VuZXJhbGl6ZXMgdGhlIGV4
aXN0aW5nIHJldHJ5IGxvb3AgaW4KKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgKGZvciBk
ZWFsaW5nIHdpdGggZmxha3kgcmVtb3RlIGhvc3RzKSB0byAoYSkgd29yaworICAgICAgICB3aXRo
IGFueSBydW5uZXIgYW5kIChiKSBhbHNvIHJldHJ5IGZsYWt5IHRlc3RzLiBBcyBmbGFreSBoYW5k
bGluZyBpcworICAgICAgICBpbXByYWN0aWNhbCB0byB0ZXN0IG1hbnVhbGx5LCBpdCBhbHNvIGFi
c3RyYWN0cy1vdXQgdGhlIHJldHJ5IGxvZ2ljIHNvCisgICAgICAgIHRoYXQgd2UgY2FuIHRlc3Qg
d2l0aCBwcmVkZXRlcm1pbmVkIHJlc3VsdHMuIFRoaXMgbWVhbnMgd2UgbmVlZCB0bworICAgICAg
ICBlLmcuIHBhc3MgdGhlIHJ1bmxpc3QgYXJvdW5kIGluc3RlYWQgb2YgdHJlYXRpbmcgaXQgYXMg
YSBnbG9iYWwsCisgICAgICAgIGNhcHR1cmluZyB0aGUgbWFpbiBsb2dpYyBpbiBjbGFzc2VzIGFu
ZCBoYXZpbmcgYSBzdWJjbGFzcyBwcm92aWRlCisgICAgICAgIG1ldGhvZHMgdG8gYmUgY2FsbGVk
IGJhY2sgYW5kIHNvIG9uLiBUaGUgcGF0Y2ggZG9lcyBub3Qgc2h5IGF3YXkgZnJvbQorICAgICAg
ICByZWZhY3RvcmluZyBjb2RlIHdoZW4gaXQgbWFrZXMgc2Vuc2UgYnV0IGFsc28gZG9lc24ndCBn
byBvdXQgb2YgaXRzCisgICAgICAgIHdheSB0byByZWZhY3RvciAoZS5nLiB0aGVyZSdzIHN0aWxs
IGEgbG90IG9mIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlCisgICAgICAgIGRlZmF1bHQgYW5kIHJ1
Ynkgd3JpdGVycykuCisKKyAgICAgICAgRG93bnNpZGVzOiB3ZSBjYW4gbm8gbG9uZ2VyIGRldGVj
dCBmbGFraW5lc3MgaW4gdGhlIGJpbmFyeSB0ZXN0cworICAgICAgICAodGVzdGFpciwgdGVzdGIz
LCAuLi4pLiBIb3dldmVyLCBJJ20gbm90IGF3YXJlIG9mIGFueSBpbnN0YW5jZSBvZgorICAgICAg
ICBmbGFraW5lc3MgaW4gdGhvc2UgdGVzdHMuIFRoZSByZXRyeSBsb29wIGlzIG5vdyBiZWluZyB1
c2VkIGZvciBhbGwKKyAgICAgICAgcnVubmVycywgd2hpY2ggbWVhbnMgdGhlIHJlc3VsdHMgYW5h
bHlzaXMgcGF0aCBmb3IgZS5nLiB0aGUgbWFrZQorICAgICAgICBydW5uZXIgaXMgbm93IGEgYml0
IG1vcmUgY29tcGxpY2F0ZWQuIERldGVjdGluZyBmbGFreSB0ZXN0cyBuZWVkcworICAgICAgICBj
b2RlIHNvbWV3aGVyZSwgYnV0IHRoaXMgbW92ZXMgdGhlIGRldGVjdGlvbiBjb2RlIGJlZm9yZSB0
aGUKKyAgICAgICAgcmVzdWx0IHJlcG9ydGluZywgc28gaXMgYSBiaXQgcmlza2llci4gVGhlIHNl
bGYgdGVzdHMgc2hvdWxkCisgICAgICAgIGNvdW50ZXJiYWxhbmNlIHRoaXMuCisKKyAgICAgICAg
KiBDSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5OgorICAgICAgICAoUnVuSmF2YVNjcmlwdENv
cmVUZXN0cyk6CisgICAgICAgIChSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLl9faW5pdF9fKToKKyAg
ICAgICAgKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuc3RhcnQpOgorICAgICAgICAoUnVuSmF2YVNj
cmlwdENvcmVUZXN0cy5ldmFsdWF0ZUNvbW1hbmQpOgorICAgICAgICAoUnVuSmF2YVNjcmlwdENv
cmVUZXN0cy5jb21tYW5kQ29tcGxldGUpOgorICAgICAgICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0
cy5nZXRSZXN1bHRTdW1tYXJ5KToKKyAgICAgICAgKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuX2Fk
ZFRvTG9nKToKKyAgICAgICAgKEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMuc3RhcnQpOgorICAgICAg
ICAoUmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKFJlUnVuSmF2
YVNjcmlwdENvcmVUZXN0cy5ldmFsdWF0ZUNvbW1hbmQpOiBEZWxldGVkLgorICAgICAgICAqIENJ
U3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9q
c2Mtc3RyZXNzLXRlc3QtaGVscGVycy9zaGVsbC1ydW5uZXIuc2g6CisgICAgICAgICogU2NyaXB0
cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6CisgICAgICAgIChydW5KU0NTdHJlc3NUZXN0cyk6
CisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L2V4ZWN1dG9yLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3Rlc3QtcmVzdWx0LWV2YWx1
YXRvci5yYjogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3Mt
dGVzdC93cml0ZXItZGVmYXVsdC5yYjogUmVuYW1lZCBmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLWRlZmF1bHQucmIuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC93cml0ZXItcGxheXN0YXRpb24ucmI6IFJlbmFt
ZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1w
bGF5c3RhdGlvbi5yYi4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10
ZXN0L3dyaXRlci1ydWJ5LnJiOiBSZW5hbWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5
L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItcnVieS5yYi4KKwogMjAyMS0xMC0yNSAgUnlhbiBIYWRk
YWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgZGVmYXVsdCBpT1Mg
c2ltdWxhdG9yIHRvIG9uZSB3aXRoIGEgbGFyZ2VyIHNjcmVlbiBzaXplCmRpZmYgLS1naXQgYS9U
b29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5IGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1i
dWlsZC9zdGVwcy5weQppbmRleCBjNWNjMjRlYTdkY2UxN2VhOTk1NWY0NzE3ZjVjZGNjNjIwZmM2
OTYzLi5iZjAxZjY2NzEwNGI1MmYwYmM1OWJkYjZmNWE1NGM2MTBjMDBhNmUzIDEwMDY0NAotLS0g
YS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5CisrKyBiL1Rvb2xzL0NJU3VwcG9y
dC9ld3MtYnVpbGQvc3RlcHMucHkKQEAgLTE4MzQsNiArMTgzNCw4IEBAIGNsYXNzIFJ1bkphdmFT
Y3JpcHRDb3JlVGVzdHMoc2hlbGwuVGVzdCk6CiAgICAganNvbkZpbGVOYW1lID0gJ2pzY19yZXN1
bHRzLmpzb24nCiAgICAgbG9nZmlsZXMgPSB7J2pzb24nOiBqc29uRmlsZU5hbWV9CiAgICAgY29t
bWFuZCA9IFsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycs
ICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3Jt
YXQoanNvbkZpbGVOYW1lKSwgV2l0aFByb3BlcnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKV0K
KyAgICAjIFdlIHJlbHkgb24gcnVuLWpzYy1zdHJlc3MtdGVzdHMgdG8gd2VlZCBvdXQgYW55IGZs
YWt5IHRlc3RzCisgICAgY29tbWFuZF9leHRyYSA9IFsnLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5
PTAuNiwxMCwyMDAnXQogICAgIHByZWZpeCA9ICdqc2NfJwogICAgIE5VTV9GQUlMVVJFU19UT19E
SVNQTEFZX0lOX1NUQVRVUyA9IDUKIApAQCAtMTg0MSwxMSArMTg0MywxMyBAQCBjbGFzcyBSdW5K
YXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICBzaGVsbC5UZXN0Ll9faW5p
dF9fKHNlbGYsIGxvZ0Vudmlyb249RmFsc2UsIHNpZ3Rlcm1UaW1lPTEwLCAqKmt3YXJncykKICAg
ICAgICAgc2VsZi5iaW5hcnlGYWlsdXJlcyA9IFtdCiAgICAgICAgIHNlbGYuc3RyZXNzVGVzdEZh
aWx1cmVzID0gW10KKyAgICAgICAgc2VsZi5mbGFreSA9IHt9CiAKICAgICBkZWYgc3RhcnQoc2Vs
Zik6CiAgICAgICAgIHNlbGYubG9nX29ic2VydmVyX2pzb24gPSBsb2dvYnNlcnZlci5CdWZmZXJM
b2dPYnNlcnZlcigpCiAgICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ2pzb24nLCBzZWxmLmxv
Z19vYnNlcnZlcl9qc29uKQogCisKICAgICAgICAgIyBhZGQgcmVtb3RlcyBjb25maWd1cmF0aW9u
IGZpbGUgcGF0aCB0byB0aGUgY29tbWFuZCBsaW5lIGlmIG5lZWRlZAogICAgICAgICByZW1vdGVz
ZmlsZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3JlbW90ZXMnLCBGYWxzZSkKICAgICAgICAgaWYgcmVt
b3Rlc2ZpbGU6CkBAIC0xODYyLDYgKzE4NjYsNyBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAgICAgc2VsZi5jb21tYW5kLmV4dGVuZChbJy0tbWVt
b3J5LWxpbWl0ZWQnLCAnLS12ZXJib3NlJ10pCiAKICAgICAgICAgYXBwZW5kQ3VzdG9tQnVpbGRG
bGFncyhzZWxmLCBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpLCBzZWxmLmdldFByb3BlcnR5
KCdmdWxsUGxhdGZvcm0nKSkKKyAgICAgICAgc2VsZi5jb21tYW5kLmV4dGVuZChzZWxmLmNvbW1h
bmRfZXh0cmEpCiAgICAgICAgIHJldHVybiBzaGVsbC5UZXN0LnN0YXJ0KHNlbGYpCiAKICAgICBk
ZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6CkBAIC0xODcyLDcgKzE4NzcsMTQgQEAgY2xh
c3MgUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhzaGVsbC5UZXN0KToKICAgICAgICAgICAgIHNlbGYu
YnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKICAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5p
c2hlZChbbWVzc2FnZV0sIFNVQ0NFU1MpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxm
LmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChbVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdD
bG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLCBLaWxsT2xkUHJvY2Vzc2VzKCksIFJlUnVuSmF2
YVNjcmlwdENvcmVUZXN0cygpXSkKKyAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNo
RmFpbGVkVGVzdHMnLCBUcnVlKQorICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVy
Q3VycmVudFN0ZXAoW1VuQXBwbHlQYXRjaElmUmVxdWlyZWQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xv
c2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbXBpbGVKU0NXaXRob3V0UGF0Y2goKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUGF0Y2godmVyaWZ5
QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEtpbGxPbGRQcm9jZXNzZXMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bkpTQ1Rlc3RzV2l0aG91dFBh
dGNoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bmFseXplSlNDVGVzdHNSZXN1bHRzKCldKQogICAgICAgICByZXR1cm4gcmMKIAogICAgIGRlZiBj
b21tYW5kQ29tcGxldGUoc2VsZiwgY21kKToKQEAgLTE4OTUsMTAgKzE5MDcsMTIgQEAgY2xhc3Mg
UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhzaGVsbC5UZXN0KToKICAgICAgICAgICAgIHNlbGYuYmlu
YXJ5RmFpbHVyZXMuYXBwZW5kKCd0ZXN0ZGZnJykKICAgICAgICAgaWYganNjX3Jlc3VsdHMuZ2V0
KCdhbGxBcGlUZXN0c1Bhc3NlZCcpIGlzIEZhbHNlOgogICAgICAgICAgICAgc2VsZi5iaW5hcnlG
YWlsdXJlcy5hcHBlbmQoJ3Rlc3RhcGknKQotCiAgICAgICAgIHNlbGYuc3RyZXNzVGVzdEZhaWx1
cmVzID0ganNjX3Jlc3VsdHMuZ2V0KCdzdHJlc3NUZXN0RmFpbHVyZXMnKQogICAgICAgICBpZiBz
ZWxmLnN0cmVzc1Rlc3RGYWlsdXJlczoKICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoc2Vs
Zi5wcmVmaXggKyAnc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBzZWxmLnN0cmVzc1Rlc3RGYWlsdXJl
cykKKyAgICAgICAgc2VsZi5mbGFreSA9IGpzY19yZXN1bHRzLmdldCgnZmxha3lBbmRQYXNzZWQn
KQorICAgICAgICBpZiBzZWxmLmZsYWt5OgorICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eShz
ZWxmLnByZWZpeCArICdmbGFreV9hbmRfcGFzc2VkJywgc2VsZi5mbGFreSkKICAgICAgICAgaWYg
c2VsZi5iaW5hcnlGYWlsdXJlczoKICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoc2VsZi5w
cmVmaXggKyAnYmluYXJ5X2ZhaWx1cmVzJywgc2VsZi5iaW5hcnlGYWlsdXJlcykKIApAQCAtMTkx
OSw2ICsxOTMzLDggQEAgY2xhc3MgUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhzaGVsbC5UZXN0KToK
ICAgICAgICAgICAgICAgICBzdGF0dXMgKz0gJ0pTQyB0ZXN0IGJpbmFyeSBmYWlsdXJle306IHt9
Jy5mb3JtYXQocGx1cmFsU3VmZml4LCAnLCAnLmpvaW4oc2VsZi5iaW5hcnlGYWlsdXJlcykpCiAK
ICAgICAgICAgICAgIHJldHVybiB7J3N0ZXAnOiBzdGF0dXN9CisgICAgICAgIGVsaWYgc2VsZi5y
ZXN1bHRzID09IFNVQ0NFU1MgYW5kIHNlbGYuZmxha3k6CisgICAgICAgICAgICByZXR1cm4geydz
dGVwJzogIlBhc3NlZCBKU0MgdGVzdHMgKCVkIGZsYWt5KSIgJSBsZW4oc2VsZi5mbGFreSl9CiAK
ICAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3QuZ2V0UmVzdWx0U3VtbWFyeShzZWxmKQogCkBAIC0x
OTMxLDM1ICsxOTQ3LDYgQEAgY2xhc3MgUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhzaGVsbC5UZXN0
KToKICAgICAgICAgbG9nLmFkZFN0ZG91dChtZXNzYWdlKQogCiAKLWNsYXNzIFJlUnVuSmF2YVNj
cmlwdENvcmVUZXN0cyhSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKToKLSAgICBuYW1lID0gJ2pzY29y
ZS10ZXN0LXJlcnVuJwotICAgIHByZWZpeCA9ICdqc2NfcmVydW5fJwotCi0gICAgZGVmIGV2YWx1
YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICByYyA9IHNoZWxsLlRlc3QuZXZhbHVhdGVD
b21tYW5kKHNlbGYsIGNtZCkKLSAgICAgICAgZmlyc3RfcnVuX2ZhaWx1cmVzID0gc2V0KHNlbGYu
Z2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSArIHNlbGYuZ2V0UHJv
cGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIHNlY29uZF9ydW5fZmFp
bHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1
cmVzJywgW10pICsgc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycs
IFtdKSkKLSAgICAgICAgZmxha3lfZmFpbHVyZXMgPSBmaXJzdF9ydW5fZmFpbHVyZXMudW5pb24o
c2Vjb25kX3J1bl9mYWlsdXJlcykgLSBmaXJzdF9ydW5fZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNl
Y29uZF9ydW5fZmFpbHVyZXMpCi0gICAgICAgIGZsYWt5X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcu
am9pbihzb3J0ZWQoZmxha3lfZmFpbHVyZXMpKQotCi0gICAgICAgIGlmIHJjID09IFNVQ0NFU1Mg
b3IgcmMgPT0gV0FSTklOR1M6Ci0gICAgICAgICAgICBwbHVyYWxTdWZmaXggPSAncycgaWYgbGVu
KGZsYWt5X2ZhaWx1cmVzKSA+IDEgZWxzZSAnJwotICAgICAgICAgICAgbWVzc2FnZSA9ICdGb3Vu
ZCBmbGFreSB0ZXN0e306IHt9Jy5mb3JtYXQocGx1cmFsU3VmZml4LCBmbGFreV9mYWlsdXJlc19z
dHJpbmcpCi0gICAgICAgICAgICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UKLSAgICAg
ICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKLSAgICAgICAgICAgIHNlbGYuYnVp
bGQuYnVpbGRGaW5pc2hlZChbbWVzc2FnZV0sIFNVQ0NFU1MpCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaEZhaWxlZFRlc3RzJywgVHJ1ZSkKLSAgICAg
ICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtVbkFwcGx5UGF0Y2hJ
ZlJlcXVpcmVkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21waWxl
SlNDV2l0aG91dFBhdGNoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1G
YWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBL
aWxsT2xkUHJvY2Vzc2VzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSdW5KU0NUZXN0c1dpdGhvdXRQYXRjaCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cygpXSkK
LSAgICAgICAgcmV0dXJuIHJjCi0KLQogY2xhc3MgUnVuSlNDVGVzdHNXaXRob3V0UGF0Y2goUnVu
SmF2YVNjcmlwdENvcmVUZXN0cyk6CiAgICAgbmFtZSA9ICdqc2NvcmUtdGVzdC13aXRob3V0LXBh
dGNoJwogICAgIHByZWZpeCA9ICdqc2NfY2xlYW5fdHJlZV8nCkBAIC0xOTc3LDM0ICsxOTY0LDI5
IEBAIGNsYXNzIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCk6CiAg
ICAgTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVkgPSAxMAogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgot
ICAgICAgICBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHko
J2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgZmlyc3RfcnVuX2JpbmFy
eV9mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywg
W10pKQotICAgICAgICBzZWNvbmRfcnVuX3N0cmVzc19mYWlsdXJlcyA9IHNldChzZWxmLmdldFBy
b3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIHNl
Y29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19yZXJ1
bl9iaW5hcnlfZmFpbHVyZXMnLCBbXSkpCisgICAgICAgIHN0cmVzc19mYWlsdXJlc193aXRoX3Bh
dGNoID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtd
KSkKKyAgICAgICAgYmluYXJ5X2ZhaWx1cmVzX3dpdGhfcGF0Y2ggPSBzZXQoc2VsZi5nZXRQcm9w
ZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKICAgICAgICAgY2xlYW5fdHJlZV9zdHJl
c3NfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNz
X3Rlc3RfZmFpbHVyZXMnLCBbXSkpCiAgICAgICAgIGNsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVz
ID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcycs
IFtdKSkKICAgICAgICAgY2xlYW5fdHJlZV9mYWlsdXJlcyA9IGxpc3QoY2xlYW5fdHJlZV9iaW5h
cnlfZmFpbHVyZXMpICsgbGlzdChjbGVhbl90cmVlX3N0cmVzc19mYWlsdXJlcykKICAgICAgICAg
Y2xlYW5fdHJlZV9mYWlsdXJlc19zdHJpbmcgPSAnLCAnLmpvaW4oY2xlYW5fdHJlZV9mYWlsdXJl
c1s6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0pCiAKLSAgICAgICAgc3RyZXNzX2ZhaWx1
cmVzX3dpdGhfcGF0Y2ggPSBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1cmVzLmludGVyc2VjdGlvbihz
ZWNvbmRfcnVuX3N0cmVzc19mYWlsdXJlcykKLSAgICAgICAgYmluYXJ5X2ZhaWx1cmVzX3dpdGhf
cGF0Y2ggPSBmaXJzdF9ydW5fYmluYXJ5X2ZhaWx1cmVzLmludGVyc2VjdGlvbihzZWNvbmRfcnVu
X2JpbmFyeV9mYWlsdXJlcykKLQotICAgICAgICBmbGFreV9zdHJlc3NfZmFpbHVyZXMgPSBmaXJz
dF9ydW5fc3RyZXNzX2ZhaWx1cmVzLnVuaW9uKHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKSAt
IGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNlY29uZF9ydW5fc3RyZXNz
X2ZhaWx1cmVzKQotICAgICAgICBmbGFreV9iaW5hcnlfZmFpbHVyZXMgPSBmaXJzdF9ydW5fYmlu
YXJ5X2ZhaWx1cmVzLnVuaW9uKHNlY29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzKSAtIGZpcnN0X3J1
bl9iaW5hcnlfZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNlY29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVz
KQotICAgICAgICBmbGFreV9mYWlsdXJlcyA9IHNvcnRlZChsaXN0KGZsYWt5X2JpbmFyeV9mYWls
dXJlcykgKyBsaXN0KGZsYWt5X3N0cmVzc19mYWlsdXJlcykpWzpzZWxmLk5VTV9GQUlMVVJFU19U
T19ESVNQTEFZXQotICAgICAgICBmbGFreV9mYWlsdXJlc19zdHJpbmcgPSAnLCAnLmpvaW4oZmxh
a3lfZmFpbHVyZXMpCisgICAgICAgIGZsYWt5X3N0cmVzc19mYWlsdXJlc193aXRoX3BhdGNoID0g
c2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19mbGFreV9hbmRfcGFzc2VkJywge30pLmtleXMoKSkK
KyAgICAgICAgY2xlYW5fdHJlZV9mbGFreV9zdHJlc3NfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQ
cm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfZmxha3lfYW5kX3Bhc3NlZCcsIHt9KS5rZXlzKCkpCisg
ICAgICAgIGZsYWt5X3N0cmVzc19mYWlsdXJlcyA9IHNvcnRlZChsaXN0KGZsYWt5X3N0cmVzc19m
YWlsdXJlc193aXRoX3BhdGNoKSArIGxpc3QoY2xlYW5fdHJlZV9mbGFreV9zdHJlc3NfZmFpbHVy
ZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0KKyAgICAgICAgZmxha3lfZmFpbHVy
ZXNfc3RyaW5nID0gJywgJy5qb2luKGZsYWt5X3N0cmVzc19mYWlsdXJlcykKIAogICAgICAgICBu
ZXdfc3RyZXNzX2ZhaWx1cmVzID0gc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2ggLSBjbGVhbl90
cmVlX3N0cmVzc19mYWlsdXJlcwogICAgICAgICBuZXdfYmluYXJ5X2ZhaWx1cmVzID0gYmluYXJ5
X2ZhaWx1cmVzX3dpdGhfcGF0Y2ggLSBjbGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcwogICAgICAg
ICBzZWxmLm5ld19zdHJlc3NfZmFpbHVyZXNfdG9fZGlzcGxheSA9ICcsICcuam9pbihzb3J0ZWQo
bGlzdChuZXdfc3RyZXNzX2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVld
KQogICAgICAgICBzZWxmLm5ld19iaW5hcnlfZmFpbHVyZXNfdG9fZGlzcGxheSA9ICcsICcuam9p
bihzb3J0ZWQobGlzdChuZXdfYmluYXJ5X2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RP
X0RJU1BMQVldKQogCi0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GYWlsdXJl
cyBpbiBmaXJzdCBydW46IHt9Jy5mb3JtYXQoKGxpc3QoZmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJl
cykgKyBsaXN0KGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNf
VE9fRElTUExBWV0pKQotICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ1xuRmFpbHVy
ZXMgaW4gc2Vjb25kIHJ1bjoge30nLmZvcm1hdCgobGlzdChzZWNvbmRfcnVuX2JpbmFyeV9mYWls
dXJlcykgKyBsaXN0KHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZBSUxV
UkVTX1RPX0RJU1BMQVldKSkKLSAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZs
YWt5IFRlc3RzOiB7fScuZm9ybWF0KGZsYWt5X2ZhaWx1cmVzX3N0cmluZykpCisgICAgICAgIHNl
bGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GYWlsdXJlcyB3aXRoIHBhdGNoOiB7fScuZm9ybWF0
KGxpc3QoYmluYXJ5X2ZhaWx1cmVzX3dpdGhfcGF0Y2gpICsgbGlzdChzdHJlc3NfZmFpbHVyZXNf
d2l0aF9wYXRjaCkpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXSkKKyAgICAgICAgc2Vs
Zi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZsYWt5IFRlc3RzIHdpdGggcGF0Y2g6IHt9Jy5mb3Jt
YXQoJywgJy5qb2luKGZsYWt5X3N0cmVzc19mYWlsdXJlc193aXRoX3BhdGNoKSkpCiAgICAgICAg
IHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GYWlsdXJlcyBvbiBjbGVhbiB0cmVlOiB7fScu
Zm9ybWF0KGNsZWFuX3RyZWVfZmFpbHVyZXNfc3RyaW5nKSkKKyAgICAgICAgc2VsZi5fYWRkVG9M
b2coJ3N0ZGVycicsICdcbkZsYWt5IFRlc3RzIG9uIGNsZWFuIHRyZWU6IHt9Jy5mb3JtYXQoJywg
Jy5qb2luKGNsZWFuX3RyZWVfZmxha3lfc3RyZXNzX2ZhaWx1cmVzKSkpCiAKLSAgICAgICAgaWYg
KG5vdCBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1cmVzKSBhbmQgKG5vdCBmaXJzdF9ydW5fYmluYXJ5
X2ZhaWx1cmVzKSBhbmQgKG5vdCBzZWNvbmRfcnVuX3N0cmVzc19mYWlsdXJlcykgYW5kIChub3Qg
c2Vjb25kX3J1bl9iaW5hcnlfZmFpbHVyZXMpOgorICAgICAgICBpZiAobm90IHN0cmVzc19mYWls
dXJlc193aXRoX3BhdGNoKSBhbmQgKG5vdCBiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCk6CiAg
ICAgICAgICAgICAjIElmIHdlJ3ZlIG1hZGUgaXQgaGVyZSwgdGhlbiBqc2MtdGVzdHMgYW5kIHJl
LXJ1bi1qc2MtdGVzdHMgZmFpbGVkLCB3aGljaCBtZWFucwogICAgICAgICAgICAgIyB0aGVyZSBz
aG91bGQgaGF2ZSBiZWVuIHNvbWUgdGVzdCBmYWlsdXJlcy4gT3RoZXJ3aXNlIHRoZXJlIGlzIHNv
bWUgdW5leHBlY3RlZCBpc3N1ZS4KICAgICAgICAgICAgIGNsZWFuX3RyZWVfcnVuX3N0YXR1cyA9
IHNlbGYuZ2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX3N0YXR1cycsIEZBSUxVUkUpCkBAIC0y
MDI5LDkgKzIwMTEsOSBAQCBjbGFzcyBBbmFseXplSlNDVGVzdHNSZXN1bHRzKGJ1aWxkc3RlcC5C
dWlsZFN0ZXApOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX3ByZV9l
eGlzdGluZ19mYWlsdXJlKGNsZWFuX3RyZWVfZmFpbHVyZSkKICAgICAgICAgICAgIGlmIGxlbihj
bGVhbl90cmVlX2ZhaWx1cmVzKSA+IHNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVk6CiAgICAg
ICAgICAgICAgICAgbWVzc2FnZSArPSAnIC4uLicKLSAgICAgICAgICAgIGlmIGZsYWt5X2ZhaWx1
cmVzOgorICAgICAgICAgICAgaWYgZmxha3lfc3RyZXNzX2ZhaWx1cmVzOgogICAgICAgICAgICAg
ICAgIG1lc3NhZ2UgKz0gJyBGb3VuZCBmbGFreSB0ZXN0czoge30nLmZvcm1hdChmbGFreV9mYWls
dXJlc19zdHJpbmcpCi0gICAgICAgICAgICAgICAgZm9yIGZsYWt5X2ZhaWx1cmUgaW4gZmxha3lf
ZmFpbHVyZXM6CisgICAgICAgICAgICAgICAgZm9yIGZsYWt5X2ZhaWx1cmUgaW4gZmxha3lfc3Ry
ZXNzX2ZhaWx1cmVzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2Zs
YWt5X2ZhaWx1cmUoZmxha3lfZmFpbHVyZSkKICAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRG
aW5pc2hlZChbbWVzc2FnZV0sIFNVQ0NFU1MpCiAgICAgICAgIHJldHVybiBkZWZlci5zdWNjZWVk
KE5vbmUpCmRpZmYgLS1naXQgYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwc191bml0dGVzdC5weQppbmRl
eCBjOGMyNjJlMTU0MWQ0YmY5YTFjNzU5NTljZTNmY2NiZDg2MTUxZDBiLi5hYTMzZjdiN2JmOWY2
NWU3YTU5NTBhMTk5Mzc1NTgzY2FkNmZkZTJlIDEwMDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQv
ZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVp
bGQvc3RlcHNfdW5pdHRlc3QucHkKQEAgLTQ4LDcgKzQ4LDcgQEAgZnJvbSBzdGVwcyBpbXBvcnQg
KEFuYWx5emVBUElUZXN0c1Jlc3VsdHMsIEFuYWx5emVDb21waWxlV2ViS2l0UmVzdWx0cywgQW5h
bHl6ZUoKICAgICAgICAgICAgICAgICAgICBEb3dubG9hZEJ1aWx0UHJvZHVjdCwgRG93bmxvYWRC
dWlsdFByb2R1Y3RGcm9tTWFzdGVyLCBFV1NfQlVJTERfSE9TVE5BTUUsIEV4dHJhY3RCdWlsdFBy
b2R1Y3QsIEV4dHJhY3RUZXN0UmVzdWx0cywKICAgICAgICAgICAgICAgICAgICBGZXRjaEJyYW5j
aGVzLCBGaW5kTW9kaWZpZWRDaGFuZ2VMb2dzLCBGaW5kTW9kaWZpZWRMYXlvdXRUZXN0cywgR2l0
UmVzZXRIYXJkLAogICAgICAgICAgICAgICAgICAgIEluc3RhbGxCdWlsdFByb2R1Y3QsIEluc3Rh
bGxHdGtEZXBlbmRlbmNpZXMsIEluc3RhbGxXcGVEZXBlbmRlbmNpZXMsCi0gICAgICAgICAgICAg
ICAgICAgS2lsbE9sZFByb2Nlc3NlcywgUHJpbnRDb25maWd1cmF0aW9uLCBQdXNoQ29tbWl0VG9X
ZWJLaXRSZXBvLCBSZVJ1bkFQSVRlc3RzLCBSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMsIFJlUnVu
V2ViS2l0UGVybFRlc3RzLAorICAgICAgICAgICAgICAgICAgIEtpbGxPbGRQcm9jZXNzZXMsIFBy
aW50Q29uZmlndXJhdGlvbiwgUHVzaENvbW1pdFRvV2ViS2l0UmVwbywgUmVSdW5BUElUZXN0cywg
UmVSdW5XZWJLaXRQZXJsVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgUmVSdW5XZWJLaXRUZXN0
cywgUnVuQVBJVGVzdHMsIFJ1bkFQSVRlc3RzV2l0aG91dFBhdGNoLCBSdW5CaW5kaW5nc1Rlc3Rz
LCBSdW5CdWlsZFdlYktpdE9yZ1VuaXRUZXN0cywKICAgICAgICAgICAgICAgICAgICBSdW5CdWls
ZGJvdENoZWNrQ29uZmlnRm9yQnVpbGRXZWJLaXQsIFJ1bkJ1aWxkYm90Q2hlY2tDb25maWdGb3JF
V1MsIFJ1bkVXU1VuaXRUZXN0cywgUnVuUmVzdWx0c2RicHlUZXN0cywKICAgICAgICAgICAgICAg
ICAgICBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLCBSdW5KU0NUZXN0c1dpdGhvdXRQYXRjaCwgUnVu
V2ViS2l0MVRlc3RzLCBSdW5XZWJLaXRQZXJsVGVzdHMsIFJ1bldlYktpdFB5UHl0aG9uMlRlc3Rz
LApAQCAtMTM2MSw2ICsxMzYxLDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMo
QnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5qc2NfZGZnX2Fpcl9hbmRfc3RyZXNzX3Rlc3RfZmFpbHVyZSA9ICcnJ3siYWxsREZHVGVzdHNQ
YXNzZWQiOmZhbHNlLCJhbGxNYXNtVGVzdHNQYXNzZWQiOnRydWUsImFsbEIzVGVzdHNQYXNzZWQi
OnRydWUsImFsbEFpclRlc3RzUGFzc2VkIjpmYWxzZSwiYWxsQXBpVGVzdHNQYXNzZWQiOnRydWUs
InN0cmVzc1Rlc3RGYWlsdXJlcyI6WyJzdHJlc3Mvd2Vha3NldC1nYy5qcyJdfVxuJycnCiAgICAg
ICAgIHNlbGYuanNjX3NpbmdsZV9zdHJlc3NfdGVzdF9mYWlsdXJlID0gJycneyJhbGxERkdUZXN0
c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFzbVRlc3RzUGFzc2VkIjp0cnVlLCJhbGxCM1Rlc3RzUGFzc2Vk
Ijp0cnVlLCJhbGxBaXJUZXN0c1Bhc3NlZCI6dHJ1ZSwic3RyZXNzVGVzdEZhaWx1cmVzIjpbInN0
cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRmZy1lYWdlciJdLCJhbGxBcGlUZXN0
c1Bhc3NlZCI6dHJ1ZX1cbicnJwogICAgICAgICBzZWxmLmpzY19tdWx0aXBsZV9zdHJlc3NfdGVz
dF9mYWlsdXJlcyA9ICcnJ3siYWxsREZHVGVzdHNQYXNzZWQiOnRydWUsImFsbE1hc21UZXN0c1Bh
c3NlZCI6dHJ1ZSwiYWxsQjNUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQWlyVGVzdHNQYXNzZWQiOnRy
dWUsInN0cmVzc1Rlc3RGYWlsdXJlcyI6WyJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9w
ZS5qcy5kZmctZWFnZXIiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZmct
ZWFnZXItbm8tY2ppdC12YWxpZGF0ZSIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3Bl
LmpzLmVhZ2VyLWpldHRpc29uLW5vLWNqaXQiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQt
cm9wZS5qcy5mdGwtZWFnZXIiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5m
dGwtZWFnZXItbm8tY2ppdCIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0
bC1lYWdlci1uby1jaml0LWIzbzEiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5q
cy5mdGwtbm8tY2ppdC1iM28wIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMu
ZnRsLW5vLWNqaXQtbm8taW5saW5lLXZhbGlkYXRlIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxs
aW50LXJvcGUuanMuZnRsLW5vLWNqaXQtbm8tcHV0LXN0YWNrLXZhbGlkYXRlIiwic3RyZXNzL3N3
aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQtc21hbGwtcG9vbCIsInN0cmVz
cy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1uby1jaml0LXZhbGlkYXRlLXNhbXBs
aW5nLXByb2ZpbGVyIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMubm8tY2pp
dC1jb2xsZWN0LWNvbnRpbnVvdXNseSIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3Bl
LmpzLm5vLWNqaXQtdmFsaWRhdGUtcGhhc2VzIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50
LXJvcGUuanMubm8tZnRsIl0sImFsbEFwaVRlc3RzUGFzc2VkIjp0cnVlfVxuJycnCisgICAgICAg
IHNlbGYuanNjX3Bhc3NlZF93aXRoX2ZsYWt5ID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1
ZSwiYWxsTWFzbVRlc3RzUGFzc2VkIjp0cnVlLCJhbGxCM1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxB
aXJUZXN0c1Bhc3NlZCI6dHJ1ZSwic3RyZXNzVGVzdEZhaWx1cmVzIjpbXSwiZmxha3lBbmRQYXNz
ZWQiOnsic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZGVmYXVsdCI6eyJQIjoi
NyIsIlQiOiIxMCJ9fSwiYWxsQXBpVGVzdHNQYXNzZWQiOnRydWV9XG4nJycKICAgICAgICAgcmV0
dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAt
MTM2OSw2ICsxMzcwLDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRT
dGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY29uZmlndXJl
U3RlcChzZWxmLCBwbGF0Zm9ybT1Ob25lLCBmdWxsUGxhdGZvcm09Tm9uZSwgY29uZmlndXJhdGlv
bj1Ob25lKToKICAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cygp
KQogICAgICAgICBzZWxmLnByZWZpeCA9IFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMucHJlZml4Cisg
ICAgICAgIHNlbGYuY29tbWFuZF9leHRyYSA9IFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuY29tbWFu
ZF9leHRyYQogICAgICAgICBpZiBwbGF0Zm9ybToKICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ3BsYXRmb3JtJywgcGxhdGZvcm0pCiAgICAgICAgIGlmIGZ1bGxQbGF0Zm9ybToKQEAgLTEz
ODEsNyArMTM4Myw3IEBAIGNsYXNzIFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3Rl
cE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuZXhwZWN0
UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rpcics
CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlw
dGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0
cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddLAorICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2
YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpz
b24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddICsg
c2VsZi5jb21tYW5kX2V4dHJhLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydq
c29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgKQogICAg
ICAgICAgICAgKyAwLApAQCAtMTM5NSw3ICsxMzk3LDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3Jp
cHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNo
ZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9T
Y3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFp
bC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAn
LS1yZWxlYXNlJywgJy0tcmVtb3RlLWNvbmZpZy1maWxlPXJlbW90ZS1tYWNoaW5lcy5qc29uJywg
Jy0tbm8tdGVzdG1hc20nLCAnLS1uby10ZXN0YWlyJywgJy0tbm8tdGVzdGIzJywgJy0tbm8tdGVz
dGRmZycsICctLW5vLXRlc3RhcGknLCAnLS1tZW1vcnktbGltaXRlZCcsICctLXZlcmJvc2UnLCAn
LS1qc2Mtb25seSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAn
VG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICct
LW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVO
YW1lKSwgJy0tcmVsZWFzZScsICctLXJlbW90ZS1jb25maWctZmlsZT1yZW1vdGUtbWFjaGluZXMu
anNvbicsICctLW5vLXRlc3RtYXNtJywgJy0tbm8tdGVzdGFpcicsICctLW5vLXRlc3RiMycsICct
LW5vLXRlc3RkZmcnLCAnLS1uby10ZXN0YXBpJywgJy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12ZXJi
b3NlJywgJy0tanNjLW9ubHknXSArIHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsgMCwKQEAgLTE0MDgsNyArMTQxMCw3IEBA
IGNsYXNzIFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25z
LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMo
CiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAn
LS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0
KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3Rz
JywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZv
cm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLWRlYnVnJ10gKyBzZWxmLmNvbW1hbmRfZXh0cmEs
CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxl
TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIEV4cGVjdFNo
ZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JzkgZmFpbHVyZXMgZm91bmQuJykKQEAgLTE0MjMsNyAr
MTQyNSw3IEBAIGNsYXNzIFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1peGlu
QWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3
b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmls
ZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMv
U2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZh
aWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwg
Jy0tZGVidWcnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rv
b2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1u
by1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFt
ZSksICctLWRlYnVnJ10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICApCiAgICAgICAgICAgICArIDIKICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdq
c29uJywgc3Rkb3V0PXNlbGYuanNjX3NpbmdsZV9zdHJlc3NfdGVzdF9mYWlsdXJlKSwKQEAgLTE0
NDAsNyArMTQ0Miw3IEBAIGNsYXNzIFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3Rl
cE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBFeHBlY3RT
aGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9u
PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5q
c29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAn
VG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICct
LW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVO
YW1lKSwgJy0tZGVidWcnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJs
JywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQn
LCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25G
aWxlTmFtZSksICctLWRlYnVnJ10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICApCiAgICAgICAgICAgICArIDIKICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwu
bG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNjX211bHRpcGxlX3N0cmVzc190ZXN0X2ZhaWx1cmVz
KSwKQEAgLTE0NTcsNyArMTQ1OSw3IEBAIGNsYXNzIFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3Rz
KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBs
b2dFbnZpcm9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29u
Jzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1b
J3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1i
dWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYu
anNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1h
bmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0t
bm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChz
ZWxmLmpzb25GaWxlTmFtZSksICctLWRlYnVnJ10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDIKICAgICAgICAgICAgICsgRXhw
ZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNjX21hc21fZmFpbHVyZSksCkBAIC0x
NDc0LDcgKzE0NzYsNyBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhCdWlsZFN0
ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgRXhwZWN0
U2hlbGwod29ya2Rpcj0nd2tkaXInLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJv
bj1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYu
anNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywg
J1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAn
LS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxl
TmFtZSksICctLXJlbGVhc2UnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9Wydw
ZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVp
bGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpz
b25GaWxlTmFtZSksICctLXJlbGVhc2UnXSArIHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsgMgogICAgICAgICAgICAgKyBFeHBlY3RT
aGVsbC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc2NfYjNfYW5kX3N0cmVzc190ZXN0X2ZhaWx1
cmUpLApAQCAtMTQ5MSw3ICsxNDkzLDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVz
dHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ0Vudmlyb249RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pz
b24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5v
LWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2Vs
Zi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJywgJy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12ZXJi
b3NlJywgJy0tanNjLW9ubHknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9Wydw
ZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVp
bGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpz
b25GaWxlTmFtZSksICctLXJlbGVhc2UnLCAnLS1tZW1vcnktbGltaXRlZCcsICctLXZlcmJvc2Un
LCAnLS1qc2Mtb25seSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAogICAgICAgICAgICAgICAgICAg
ICAgICAgKQogICAgICAgICAgICAgKyAyCiAgICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygn
anNvbicsIHN0ZG91dD1zZWxmLmpzY19kZmdfYWlyX2FuZF9zdHJlc3NfdGVzdF9mYWlsdXJlKSwK
QEAgLTE1MDIsNTIgKzE1MDQsMzAgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMo
QnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KHNlbGYucHJlZml4ICsgJ2JpbmFyeV9mYWls
dXJlcycpLCBbJ3Rlc3RhaXInLCAndGVzdGRmZyddKQogICAgICAgICByZXR1cm4gcmMKIAotCi1j
bGFzcyBUZXN0UmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzKToKLSAgICBkZWYgY29uZmlndXJlU3RlcChzZWxmLCBwbGF0Zm9ybT1Ob25lLCBmdWxsUGxh
dGZvcm09Tm9uZSwgY29uZmlndXJhdGlvbj1Ob25lKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAo
UmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKCkpCi0gICAgICAgIHNlbGYucHJlZml4ID0gUmVSdW5K
YXZhU2NyaXB0Q29yZVRlc3RzLnByZWZpeAotICAgICAgICBpZiBwbGF0Zm9ybToKLSAgICAgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgcGxhdGZvcm0pCi0gICAgICAgIGlmIGZ1
bGxQbGF0Zm9ybToKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScs
IGZ1bGxQbGF0Zm9ybSkKLSAgICAgICAgaWYgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCBjb25maWd1cmF0aW9uKQotCi0gICAgZGVm
IHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKHBsYXRmb3Jt
PSdtYWMnLCBmdWxsUGxhdGZvcm09J21hYy1oaWdoc2llcnJhJywgY29uZmlndXJhdGlvbj0ncmVs
ZWFzZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJl
cycsIFsndGVzdDEnLCAndGVzdDInXSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5k
cygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycs
ICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3Jt
YXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJ10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICApICsKLSAgICAgICAgICAgIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIGZsYWt5IHRl
c3RzOiB0ZXN0MSwgdGVzdDInKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAg
IGRlZiB0ZXN0X3JlbW90ZV9zdWNjZXNzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3N1Y2Nlc3Nfd2l0
aF9mbGFreShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKHBsYXRmb3JtPSdqc2Mt
b25seScsIGZ1bGxQbGF0Zm9ybT0nanNjLW9ubHknLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJykK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncmVtb3RlcycsICdyZW1vdGUtbWFjaGluZXMuanNv
bicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rl
c3RtYXNtJ10pCiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAg
ICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBs
b2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3Blcmwn
LCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcs
ICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZp
bGVOYW1lKSwgJy0tcmVsZWFzZScsICctLXJlbW90ZS1jb25maWctZmlsZT1yZW1vdGUtbWFjaGlu
ZXMuanNvbicsICctLW5vLXRlc3RtYXNtJywgJy0tbm8tdGVzdGFpcicsICctLW5vLXRlc3RiMycs
ICctLW5vLXRlc3RkZmcnLCAnLS1uby10ZXN0YXBpJywgJy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12
ZXJib3NlJywgJy0tanNjLW9ubHknXSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVz
PXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkg
KwotICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJs
JywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQn
LCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25G
aWxlTmFtZSksICctLXJlbGVhc2UnLCAnLS1tZW1vcnktbGltaXRlZCcsICctLXZlcmJvc2UnLCAn
LS1qc2Mtb25seSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgKQorICAgICAgICAgICAgKyAwCisgICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNv
bicsIHN0ZG91dD1zZWxmLmpzY19wYXNzZWRfd2l0aF9mbGFreSksCiAgICAgICAgICkKLSAgICAg
ICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0ZvdW5k
IGZsYWt5IHRlc3Q6IHRlc3RtYXNtJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisg
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQ
YXNzZWQgSlNDIHRlc3RzICgxIGZsYWt5KScpCisgICAgICAgIHJjID0gc2VsZi5ydW5TdGVwKCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KHNlbGYucHJlZml4ICsg
J2ZsYWt5X2FuZF9wYXNzZWQnKSwgeydzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5q
cy5kZWZhdWx0JzogeydQJzogJzcnLCAnVCc6ICcxMCd9fSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLmdldFByb3BlcnR5KHNlbGYucHJlZml4ICsgJ3N0cmVzc190ZXN0X2ZhaWx1cmVz
JyksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxm
LnByZWZpeCArICdiaW5hcnlfdGVzdF9mYWlsdXJlcycpLCBOb25lKQorICAgICAgICByZXR1cm4g
cmMKIAogCiBjbGFzcyBUZXN0UnVuSlNDVGVzdHNXaXRob3V0UGF0Y2goQnVpbGRTdGVwTWl4aW5B
ZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAg
ICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCiAgICAgICAgIHNlbGYuanNvbkZpbGVOYW1lID0g
J2pzY19yZXN1bHRzLmpzb24nCisgICAgICAgIHNlbGYuY29tbWFuZF9leHRyYSA9IFJ1bkpTQ1Rl
c3RzV2l0aG91dFBhdGNoLmNvbW1hbmRfZXh0cmEKICAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBC
dWlsZFN0ZXAoKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtMTU2MCw3ICsxNTQwLDcg
QEAgY2xhc3MgVGVzdFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoKEJ1aWxkU3RlcE1peGluQWRkaXRp
b25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFu
ZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMn
LCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9y
bWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUt
dGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXsw
fScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddICsgc2VsZi5jb21tYW5k
X2V4dHJhLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5q
c29uRmlsZU5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyAw
LApAQCAtMTU3NSw3ICsxNTU1LDcgQEAgY2xhc3MgVGVzdFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNo
KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNl
bGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGly
PSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4t
amF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICct
LWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMv
cnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3Qn
LCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLWRlYnVn
J10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxl
cz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAp
CiAgICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JzkgZmFpbHVy
ZXMgZm91bmQuJykKQEAgLTE1OTcsMzggKzE1NzcsMzQgQEAgY2xhc3MgVGVzdEFuYWx5emVKU0NU
ZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cygpKQogICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKICAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFtdKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFtdKQor
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfZmxha3lfYW5kX3Bhc3NlZCcsIHt9KQogICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJl
cycsIFtdKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9iaW5hcnlf
ZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVf
Zmxha3lfYW5kX3Bhc3NlZCcsIHt9KQogICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzLnNl
bmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUgPSBsYW1iZGEgc2VsZiwgdGVzdDogTm9uZQogICAg
ICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX3ByZV9leGlzdGluZ19m
YWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKIAogICAgIGRlZiB0ZXN0X3NpbmdsZV9u
ZXdfc3RyZXNzX2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3Ry
ZXNzL2ZvcmNlLWVycm9yLmpzLmJ5dGVjb2RlLWNhY2hlJ10pCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVy
cm9yLmpzLmJ5dGVjb2RlLWNhY2hlJ10pCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAxIG5ldyBKU0Mgc3RyZXNzIHRlc3QgZmFp
bHVyZTogc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmJ5dGVjb2RlLWNhY2hlIChmYWlsdXJlKScpCiAg
ICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQogCiAgICAgZGVmIHRlc3Rfc2luZ2xlX25ld19i
aW5hcnlfZmFpbHVyZShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdG1hc20nXSkK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsn
dGVzdG1hc20nXSkKICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBz
dGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IEpTQyBiaW5hcnkgZmFpbHVyZTogdGVzdG1hc20gKGZh
aWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKICAgICBkZWYgdGVzdF9t
dWx0aXBsZV9uZXdfc3RyZXNzX2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJl
U3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJl
cycsIFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMzApXSkKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0
e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAzMCldKQogICAgICAgICBzZWxmLmV4cGVj
dE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMzAgbmV3IEpTQyBz
dHJlc3MgdGVzdCBmYWlsdXJlczogdGVzdDAsIHRlc3QxLCB0ZXN0MTAsIHRlc3QxMSwgdGVzdDEy
LCB0ZXN0MTMsIHRlc3QxNCwgdGVzdDE1LCB0ZXN0MTYsIHRlc3QxNyAuLi4gKGZhaWx1cmUpJykK
ICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9u
ZXdfYmluYXJ5X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNt
JywgJ3Rlc3RhaXInLCAndGVzdGIzJywgJ3Rlc3RkZmcnLCAndGVzdGFwaSddKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0bWFzbScs
ICd0ZXN0YWlyJywgJ3Rlc3RiMycsICd0ZXN0ZGZnJywgJ3Rlc3RhcGknXSkKICAgICAgICAgc2Vs
Zi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDUgbmV3
IEpTQyBiaW5hcnkgZmFpbHVyZXM6IHRlc3RhaXIsIHRlc3RhcGksIHRlc3RiMywgdGVzdGRmZywg
dGVzdG1hc20gKGZhaWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKQEAg
LTE2MzYsMTUgKzE2MTIsMTIgQEAgY2xhc3MgVGVzdEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoQnVp
bGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5j
b25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0
X2ZhaWx1cmVzJywgWydlczYueWFtbC9lczYvU2V0X2l0ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVs
dCddKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0
ZXN0bWFzbSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rl
c3RfZmFpbHVyZXMnLCBbJ2VzNi55YW1sL2VzNi9TZXRfaXRlcmF0b3JfY2xvc2luZy5qcy5kZWZh
dWx0J10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVy
ZXMnLCBbJ3Rlc3RtYXNtJ10pCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJ
TFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAxIG5ldyBKU0MgYmluYXJ5IGZhaWx1cmU6IHRlc3Rt
YXNtLCBGb3VuZCAxIG5ldyBKU0Mgc3RyZXNzIHRlc3QgZmFpbHVyZTogZXM2LnlhbWwvZXM2L1Nl
dF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQgKGZhaWx1cmUpJykKICAgICAgICAgcmV0dXJu
IHNlbGYucnVuU3RlcCgpCiAKICAgICBkZWYgdGVzdF9zdHJlc3NfZmFpbHVyZV9vbl9jbGVhbl90
cmVlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJv
ci5qcy5kZWZhdWx0J10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJl
c3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKICAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVy
ZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJvci5qcy5kZWZhdWx0J10pCiAgICAgICAgIHNlbGYuZXhw
ZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3Rz
JykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCkBAIC0xNjYxLDM5ICsxNjM0LDI5IEBA
IGNsYXNzIFRlc3RBbmFseXplSlNDVGVzdHNSZXN1bHRzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25z
LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnZXM2Lnlh
bWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKICAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGFpciddKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2VzNi55
YW1sL2VzNi9TZXRfaXRlcmF0b3JfY2xvc2luZy5qcy5kZWZhdWx0J10pCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RhaXInXSkKICAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVy
ZXMnLCBbJ2VzNi55YW1sL2VzNi9TZXRfaXRlcmF0b3JfY2xvc2luZy5qcy5kZWZhdWx0J10pCiAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcycs
IFsndGVzdGFpciddKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1Ms
IHN0YXRlX3N0cmluZz0nUGFzc2VkIEpTQyB0ZXN0cycpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1
blN0ZXAoKQogCi0gICAgZGVmIHRlc3RfZmxha3lfc3RyZXNzX2FuZF9iaW5hcnlfZmFpbHVyZXMo
c2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpz
LmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJl
cycsIFsndGVzdGFwaSddKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NF
U1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIEpTQyB0ZXN0cycpCi0gICAgICAgIHJldHVybiBzZWxm
LnJ1blN0ZXAoKQotCiAgICAgZGVmIHRlc3RfZmxha3lfYW5kX2NvbnNpc3RlbnRfc3RyZXNzX2Zh
aWx1cmVzKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJywgJ3Rlc3Qy
J10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWls
dXJlcycsIFsndGVzdDInXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlM
VVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlOiB0
ZXN0MiAoZmFpbHVyZSknKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rl
c3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJ10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19m
bGFreV9hbmRfcGFzc2VkJywgeyd0ZXN0Mic6IHsnUCc6ICc3JywgJ1QnOiAnMTAnfX0pCisgICAg
ICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3Vu
ZCAxIG5ldyBKU0Mgc3RyZXNzIHRlc3QgZmFpbHVyZTogdGVzdDEgKGZhaWx1cmUpJykKICAgICAg
ICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKICAgICBkZWYgdGVzdF9mbGFreV9hbmRfY29uc2lz
dGVudF9mYWlsdXJlc193aXRoX2NsZWFuX3RyZWVfZmFpbHVyZXMoc2VsZik6CiAgICAgICAgIHNl
bGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3Nf
dGVzdF9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInXSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MSddKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycs
IFsndGVzdDEnLCAndGVzdDInXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVz
c190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MSddKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdq
c2NfZmxha3lfYW5kX3Bhc3NlZCcsIHsndGVzdDInOiB7J1AnOiA3LCAnVCc6IDEwfX0pCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVz
JywgWyd0ZXN0MSddKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1Ms
IHN0YXRlX3N0cmluZz0nUGFzc2VkIEpTQyB0ZXN0cycpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1
blN0ZXAoKQogCiAgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9pbmZyYV9pc3N1ZShzZWxmKToKICAg
ICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNj
X3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pz
Y19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQogICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQogICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9zdGF0dXMnLCBGQUlMVVJFKQogICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0
ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWUsIHJldHJ5aW5nIGJ1aWxkIChyZXRyeSknKQpAQCAtMTcw
Miw4ICsxNjY1LDkgQEAgY2xhc3MgVGVzdEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoQnVpbGRTdGVw
TWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9wYXRjaF9i
cmVha2luZ19qc2NfdGVzdF9zdWl0ZShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVw
KCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywg
W10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWls
dXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfZmxha3lfYW5kX3Bhc3Nl
ZCcsIHt9KQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3Nf
dGVzdF9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5f
dHJlZV9mbGFreV9hbmRfcGFzc2VkJywge30pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Ns
ZWFuX3RyZWVfcnVuX3N0YXR1cycsIFNVQ0NFU1MpCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29t
ZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCB1bmV4cGVjdGVkIGZhaWx1cmUg
d2l0aCBwYXRjaCAoZmFpbHVyZSknKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvanNjLXN0cmVzcy10ZXN0LWhlbHBlcnMvc2hlbGwtcnVu
bmVyLnNoIGIvVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9zaGVsbC1ydW5u
ZXIuc2gKaW5kZXggZGVkNDBkNTIxOTgyMzBiODE1MDI2MmM2YmU3MWFjMmQ4Y2E3MTJmZS4uM2Y2
ZThlMmFhNTk2Y2YxMTYxMWM4MGMzYzdiZGU0NGYwMzc5MjAzMyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9zaGVsbC1ydW5uZXIuc2gKKysrIGIvVG9v
bHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9zaGVsbC1ydW5uZXIuc2gKQEAgLTIx
LDYgKzIxLDggQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCiAjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK29yaWdpbmFsVGVz
dExpc3Q9IiQxIgorCiBudW1Qcm9jcz1gc3lzY3RsIC1uIGh3LmFjdGl2ZWNwdSAyPi9kZXYvbnVs
bGAKIGlmIFsgJD8gLWd0IDAgXQogdGhlbgpAQCAtMzksNyArNDEsNyBAQCBsb2NrRGlyPSIubG9j
a19kaXIiCiB0cmFwICJraWxsIC05IDAiIElOVCBIVVAgVEVSTQogCiBlY2hvIDAgPiAke2luZGV4
RmlsZX0KLWZpbmQgLiAtbWF4ZGVwdGggMSAtbmFtZSAndGVzdF9zY3JpcHRfKicgfCBzb3J0IC10
ICdfJyAtazNuciA+ICR7dGVzdExpc3R9CitjcCAiJG9yaWdpbmFsVGVzdExpc3QiICIkdGVzdExp
c3QiCiAKIGxvY2tfdGVzdF9saXN0KCkgewogICAgIHVudGlsIG1rZGlyICR7bG9ja0Rpcn0gMj4g
L2Rldi9udWxsOyBkbyBzbGVlcCAwOyBkb25lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1
bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzCmluZGV4IGZiMjFiZmU3MWE0ZjVjOGFlN2UzMmJmMmYxN2RlNWY0YzQ4NTY1OTcuLmRi
MmVhNDFlY2Y4YzM3NmFlM2YwYzI2YWZiNTQ1OTk2ZDEwNzFhMWEgMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVu
LWphdmFzY3JpcHRjb3JlLXRlc3RzCkBAIC02NCw2ICs2NCw3IEBAIG15ICRnbnVQYXJhbGxlbFJ1
bm5lcjsKIG15ICR0ZXN0V3JpdGVyOwogbXkgJG1lbW9yeUxpbWl0ZWQ7CiBteSAkcmVwb3J0RXhl
Y3V0aW9uVGltZTsKK215ICR0cmVhdEZhaWxpbmdBc0ZsYWt5OwogCiBteSAkcmVwb3J0OwogbXkg
JGJ1aWxkYm90TWFzdGVyOwpAQCAtMjgzLDYgKzI4NCw3IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUg
W29wdGlvbnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQgc3lzdGVtXQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTa2lwIHRlc3RzIHRhZ2dlZCB3aXRoIC8vXEBza2lwIGlmIFwk
bWVtb3J5TGltaXRlZAogCiAgIC0tcmVwb3J0LWV4ZWN1dGlvbi10aW1lICAgICAgIFByaW50IGV4
ZWN1dGlvbiB0aW1lIGZvciBlYWNoIHN0cmVzcyB0ZXN0LgorICAtLXRyZWF0LWZhaWxpbmctYXMt
Zmxha3kgICAgICBUcmVhdCBmYWlsaW5nIHN0cmVzcyB0ZXN0cyBhcyBmbGFreQogCiAgIC0tZmls
dGVyICAgICAgICAgICAgICAgICAgICAgIE9ubHkgcnVuIHRlc3RzIHdob3NlIG5hbWUgbWF0Y2hl
cyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLgogICAtLWVudi12YXJzICAgICAgICAgICAg
ICAgICAgICBQYXNzIGEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGJlZm9y
ZSBydW5uaW5nIHRlc3RzLgpAQCAtMzUyLDYgKzM1NCw3IEBAIEdldE9wdGlvbnMoCiAgICAgJ3Rl
c3Qtd3JpdGVyPXMnID0+IFwkdGVzdFdyaXRlciwKICAgICAnbWVtb3J5LWxpbWl0ZWQnID0+IFwk
bWVtb3J5TGltaXRlZCwKICAgICAncmVwb3J0LWV4ZWN1dGlvbi10aW1lJyA9PiBcJHJlcG9ydEV4
ZWN1dGlvblRpbWUsCisgICAgJ3RyZWF0LWZhaWxpbmctYXMtZmxha3k9cycgPT4gXCR0cmVhdEZh
aWxpbmdBc0ZsYWt5LAogICAgICdmaWx0ZXI9cycgPT4gXCRmaWx0ZXIsCiAgICAgJ2hlbHAnID0+
IFwkc2hvd0hlbHAsCiAgICAgJ2Vudi12YXJzPXMnID0+IFwkZW52VmFycywKQEAgLTgwMSw2ICs4
MDQsMTAgQEAgc3ViIHJ1bkpTQ1N0cmVzc1Rlc3RzCiAgICAgICAgIHB1c2goQGpzY1N0cmVzc0Ry
aXZlckNtZCwgIi0tYXJ0aWZhY3QtZXhlYy13cmFwcGVyIik7CiAgICAgICAgIHB1c2goQGpzY1N0
cmVzc0RyaXZlckNtZCwgJGFydGlmYWN0X2V4ZWNfd3JhcHBlcik7CiAgICAgfQorICAgIGlmIChk
ZWZpbmVkKCR0cmVhdEZhaWxpbmdBc0ZsYWt5KSkgeworICAgICAgICBwdXNoKEBqc2NTdHJlc3NE
cml2ZXJDbWQsICItLXRyZWF0LWZhaWxpbmctYXMtZmxha3kiKTsKKyAgICAgICAgcHVzaChAanNj
U3RyZXNzRHJpdmVyQ21kLCAkdHJlYXRGYWlsaW5nQXNGbGFreSk7CisgICAgfQogICAgIHB1c2go
QGpzY1N0cmVzc0RyaXZlckNtZCwgQHRlc3RMaXN0KTsKIAogICAgIGlmIChpc1dpbmRvd3MoKSAm
JiAhaXNDeWd3aW4oKSkgewpAQCAtOTI1LDYgKzkzMiwyMSBAQCBzdWIgcnVuSlNDU3RyZXNzVGVz
dHMKICAgICAgICAgJHJlcG9ydERhdGF7JHRlc3RTdWNjZWVkZWR9ID0ge2FjdHVhbCA9PiAiUEFT
UyJ9OwogICAgIH0KIAorICAgIG15IEBqc2NTdHJlc3NGbGFreSA9IHJlYWRBbGxMaW5lcygkanNj
U3RyZXNzUmVzdWx0c0RpciAuICIvZmxha3kiKTsKKyAgICBAanNjU3RyZXNzRmxha3kgPSBzb3J0
IEBqc2NTdHJlc3NGbGFreTsKKyAgICBteSAkbnVtSlNDU3RyZXNzRmxha3kgPSBAanNjU3RyZXNz
Rmxha3k7CisKKyAgICBteSAlanNjU3RyZXNzRmxha3lJbmZvID0gKCk7CisgICAgaWYgKCRudW1K
U0NTdHJlc3NGbGFreSkgeworICAgICAgICBwcmludCAiXG4qKiBUaGUgZm9sbG93aW5nIEpTQyBz
dHJlc3MgdGVzdHMgd2VyZSBmbGFreTpcbiI7CisgICAgICAgIGZvcmVhY2ggbXkgJHRlc3RGbGFr
eSAoQGpzY1N0cmVzc0ZsYWt5KSB7CisgICAgICAgICAgICBteSBAZmllbGRzID0gc3BsaXQgLyAv
LCAkdGVzdEZsYWt5OworICAgICAgICAgICAgcHJpbnQgIlx0JGZpZWxkc1swXSAkZmllbGRzWzFd
LyRmaWVsZHNbMl0gcGFzc2VzXG4iOworICAgICAgICAgICAgJGpzY1N0cmVzc0ZsYWt5SW5mb3sk
ZmllbGRzWzBdfSA9IHsgJ1AnID0+ICRmaWVsZHNbMV0sICdUJyA9PiAkZmllbGRzWzJdfQorICAg
ICAgICB9CisgICAgICAgIHByaW50ICJcbiI7CisgICAgfQorCiAgICAgbXkgQGpzY1N0cmVzc0Zh
aWxMaXN0ID0gcmVhZEFsbExpbmVzKCRqc2NTdHJlc3NSZXN1bHRzRGlyIC4gIi9mYWlsZWQiKTsK
ICAgICBAanNjU3RyZXNzRmFpbExpc3QgPSBzb3J0IEBqc2NTdHJlc3NGYWlsTGlzdDsKICAgICBt
eSAkbnVtSlNDU3RyZXNzRmFpbHVyZXMgPSBAanNjU3RyZXNzRmFpbExpc3Q7CkBAIC05NTEsMTIg
Kzk3MywxNCBAQCBzdWIgcnVuSlNDU3RyZXNzVGVzdHMKIAogICAgIHByaW50ICJSZXN1bHRzIGZv
ciBKU0Mgc3RyZXNzIHRlc3RzOlxuIjsKICAgICBwcmludFRoaW5nc0ZvdW5kKCRudW1KU0NTdHJl
c3NGYWlsdXJlcywgImZhaWx1cmUiLCAiZmFpbHVyZXMiLCAiZm91bmQiKTsKKyAgICBwcmludFRo
aW5nc0ZvdW5kKCRudW1KU0NTdHJlc3NGbGFreSwgInRlc3QiLCAidGVzdHMiLCAiZmxha3kgYnV0
IHBhc3NlZCIpOwogICAgIHByaW50VGhpbmdzRm91bmQoJG51bUpTQ1N0cmVzc05vUmVzdWx0VGVz
dHMsICJ0ZXN0IiwgInRlc3RzIiwgImZhaWxlZCB0byBjb21wbGV0ZSIpOwogICAgIHByaW50ICIg
ICAgT0suXG4iIGlmICRudW1KU0NTdHJlc3NGYWlsdXJlcyA9PSAwIGFuZCAkbnVtSlNDU3RyZXNz
Tm9SZXN1bHRUZXN0cyA9PSAwOwogCiAgICAgcHJpbnQgIlxuIjsKIAogICAgIGlmIChkZWZpbmVk
KCRqc29uRmlsZU5hbWUpKSB7CisgICAgICAgICRqc29uRGF0YXsnZmxha3lBbmRQYXNzZWQnfSA9
ICBcJWpzY1N0cmVzc0ZsYWt5SW5mbzsKICAgICAgICAgJGpzb25EYXRheydzdHJlc3NUZXN0RmFp
bHVyZXMnfSA9IFxAanNjU3RyZXNzRmFpbExpc3Q7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0cwppbmRleCBjZDA3NWJhNzVmYjdmNjI1ZGJhMjZkNGIxMjUxNDNkOTQyYzExODQ1
Li41ZjgwYjZkMmYxYTczZGVjODg1NmJhNDIwYjBjYzQ3MWNjYzkyZDRhIDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVu
LWpzYy1zdHJlc3MtdGVzdHMKQEAgLTI1LDEyICsyNSwxNyBAQAogCiByZXF1aXJlICdmaWxldXRp
bHMnCiByZXF1aXJlICdnZXRvcHRsb25nJworcmVxdWlyZSAnb3N0cnVjdCcKIHJlcXVpcmUgJ3Bh
dGhuYW1lJwogcmVxdWlyZSAncmJjb25maWcnCityZXF1aXJlICdzZXQnCiByZXF1aXJlICd0ZW1w
ZmlsZScKIHJlcXVpcmUgJ3VyaScKIHJlcXVpcmUgJ3lhbWwnCiAKK3JlcXVpcmVfcmVsYXRpdmUg
IndlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3Rlc3QtcmVzdWx0LWV2YWx1YXRvciIKK3JlcXVp
cmVfcmVsYXRpdmUgIndlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L2V4ZWN1dG9yIgorCiBtb2R1
bGUgVVJJCiAgICAgY2xhc3MgU1NIIDwgR2VuZXJpYwogICAgICAgICBERUZBVUxUX1BPUlQgPSAy
MgpAQCAtNzMsNiArNzgsOCBAQCBTVEFUVVNfRklMRV9GQUlMID0gIkYiCiBQQVJBTExFTF9SRU1P
VEVfV1JBUFBFUl9NQVJLX0JFR0lOID0gIjVkNjUzMjliZDFhMyIKIFBBUkFMTEVMX1JFTU9URV9X
UkFQUEVSX01BUktfRU5EID0gImE5YWVhNWMzYjg0MyIKIFBBUkFMTEVMX1JFTU9URV9TVEFURV9M
T1NUX01BUktFUiA9ICI3MDlmYjdhNzdjNDUyMzE5MThlYjExOGEiCitJVEVSQVRJT05fTElNSVRT
ID0gT3BlblN0cnVjdC5uZXcoOmluZnJhSXRlcmF0aW9uc0Zsb29yID0+IDMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOml0ZXJhdGlvbnNDZWlsaW5nID0+IDEwKQogCiBiZWdp
bgogICAgIHJlcXVpcmUgJ3NoZWxsd29yZHMnCkBAIC0xMjQsNyArMTMxLDYgQEAgZGVmIGVzY2Fw
ZUFsbChhcnJheSkKICAgICB9LmpvaW4oJyAnKQogZW5kCiAKLQogJGpzY1BhdGggPSBuaWwKICRk
b05vdE1lc3NXaXRoVk1QYXRoID0gZmFsc2UKICRqaXRUZXN0cyA9IHRydWUKQEAgLTE1Miw2ICsx
NTgsMTEgQEAgJGxkZCA9IG5pbAogJGFydGlmYWN0X2V4ZWNfd3JhcHBlciA9IG5pbAogJG51bUNo
aWxkUHJvY2Vzc2VzU2V0QnlVc2VyID0gZmFsc2UKICRydW5VbmlxdWVJZCA9IFJhbmRvbS5uZXcu
Ynl0ZXMoMTYpLnVucGFjaygiSCoiKVswXQorJHRlc3RzRGVidWdTdHJlYW0gPSBuaWwgIyBzZXQg
dG8gJHN0ZGVyciBmb3IgZGVidWdnaW5nCisKK2RlZiBwdXRkKHMpCisgICAgJHRlc3RzRGVidWdT
dHJlYW0ucHV0cyhzKSB1bmxlc3MgJHRlc3RzRGVidWdTdHJlYW0ubmlsPworZW5kCiAKIGRlZiB1
c2FnZQogICAgIHB1dHMgInJ1bi1qc2Mtc3RyZXNzLXRlc3RzIC1qIDxzaGVsbCBwYXRoPiA8Y29s
bGVjdGlvbnMgcGF0aD4gWzxjb2xsZWN0aW9ucyBwYXRoPiAuLi5dIgpAQCAtMjIyLDYgKzIzMyw3
IEBAIEdldG9wdExvbmcubmV3KFsnLS1oZWxwJywgJy1oJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1F
TlRdLAogICAgICAgICAgICAgICAgWyctLXJ1YnktcnVubmVyJywgR2V0b3B0TG9uZzo6Tk9fQVJH
VU1FTlRdLAogICAgICAgICAgICAgICAgWyctLWdudS1wYXJhbGxlbC1ydW5uZXInLCBHZXRvcHRM
b25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tdGVzdC13cml0ZXInLCBHZXRv
cHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCisgICAgICAgICAgICAgICBbJy0tdHJlYXQtZmFp
bGluZy1hcy1mbGFreScsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKICAgICAgICAg
ICAgICAgIFsnLS1yZW1vdGUnLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCiAgICAg
ICAgICAgICAgICBbJy0tcmVtb3RlLWNvbmZpZy1maWxlJywgR2V0b3B0TG9uZzo6UkVRVUlSRURf
QVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyctLXJlcG9ydC1leGVjdXRpb24tdGltZScsIEdl
dG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKQEAgLTI3MCw2ICsyODIsMzAgQEAgR2V0b3B0TG9uZy5u
ZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICR0
ZXN0UnVubmVyVHlwZSA9IDpnbnVwYXJhbGxlbAogICAgIHdoZW4gJy0tdGVzdC13cml0ZXInCiAg
ICAgICAgICR0ZXN0V3JpdGVyID0gYXJnCisgICAgd2hlbiAnLS10cmVhdC1mYWlsaW5nLWFzLWZs
YWt5JworICAgICAgICBtZCA9IC9eKFteLF0rKSwoXGQrKSwoXGQrKSQvLm1hdGNoKGFyZykKKyAg
ICAgICAgaWYgbWQubmlsPworICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJDb3VsZCBub3QgcGFy
c2UgYXJndW1lbnQgdG8gYC0tdHJlYXQtZmFpbGluZy1hcy1mbGFreWA7IGV4cGVjdGVkIGBwYXNz
UGVyY2VudGFnZSxtYXhUcmllcyxtYXhGYWlsaW5nYCIpCisgICAgICAgICAgICBleGl0KDEpCisg
ICAgICAgIGVuZAorICAgICAgICBwYXNzUGVyY2VudGFnZSA9IG1kWzFdLnRvX2YKKyAgICAgICAg
aWYgcGFzc1BlcmNlbnRhZ2UuemVybz8KKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiSW52YWxp
ZCBwYXNzUGVyY2VudGFnZSBgI3ttZFsxXX1gIikKKyAgICAgICAgICAgIGV4aXQoMSkKKyAgICAg
ICAgZW5kCisgICAgICAgIG1heFRyaWVzID0gbWRbMl0udG9faQorICAgICAgICBpZiBtYXhUcmll
cyA9PSAwCisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIkludmFsaWQgbWF4VHJpZXMgYCN7bWRb
Ml19YCIpCisgICAgICAgICAgICBleGl0KDEpCisgICAgICAgIGVuZAorICAgICAgICBtYXhGYWls
aW5nID0gbWRbM10udG9faQorICAgICAgICBpZiBtYXhGYWlsaW5nID09IDAKKyAgICAgICAgICAg
ICRzdGRlcnIucHV0cygiSW52YWxpZCBtYXhGYWlsaW5nIGAje21kWzNdfWAiKQorICAgICAgICAg
ICAgZXhpdCgxKQorICAgICAgICBlbmQKKyAgICAgICAgJHRyZWF0RmFpbGluZ0FzRmxha3kgPSBP
cGVuU3RydWN0Lm5ldyg6cGFzc1BlcmNlbnRhZ2UgPT4gcGFzc1BlcmNlbnRhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1heFRyaWVzID0+IG1heFRy
aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhG
YWlsaW5nID0+IG1heEZhaWxpbmcpCiAgICAgd2hlbiAnLS1yZW1vdGUnCiAgICAgICAgICRjb3B5
Vk0gPSB0cnVlCiAgICAgICAgICR0YXJiYWxsID0gdHJ1ZQpAQCAtNTY5LDcgKzYwNSw5NSBAQCBG
VExfT1BUSU9OUyA9IFsiLS11c2VGVExKSVQ9dHJ1ZSJdCiBGT1JDRV9MTElOVF9FWElUX09QVElP
TlMgPSBbIi0tZm9yY2VPU1JFeGl0VG9MTEludD10cnVlIl0KIEVYRUNVVEFCTEVfRlVaWkVSX09Q
VElPTlMgPSBbIi0tdXNlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6PXRydWUiLCAiLS1maXJlRXhl
Y3V0YWJsZUFsbG9jYXRpb25GdXp6UmFuZG9tbHk9dHJ1ZSJdCiAKLXJlcXVpcmVfcmVsYXRpdmUg
IndlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci0jeyR0ZXN0V3JpdGVyfSIKK2NsYXNz
IEJhc2VQbGFuCisgICAgYXR0cl9yZWFkZXIgOmRpcmVjdG9yeSwgOmFyZ3VtZW50cywgOmZhbWls
eSwgOm5hbWUsIDpvdXRwdXRIYW5kbGVyLCA6ZXJyb3JIYW5kbGVyLCA6YWRkaXRpb25hbEVudiwg
OmluZGV4CisgICAgYXR0cl9hY2Nlc3NvciA6Zmxha3kKKworICAgIEBAaW5kZXggPSAwCisgICAg
ZGVmIGluaXRpYWxpemUoZGlyZWN0b3J5LCBhcmd1bWVudHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0
SGFuZGxlciwgZXJyb3JIYW5kbGVyLCBmbGFreSkKKyAgICAgICAgQGRpcmVjdG9yeSA9IGRpcmVj
dG9yeQorICAgICAgICBAYXJndW1lbnRzID0gYXJndW1lbnRzTWFwcGVyKGFyZ3VtZW50cykKKyAg
ICAgICAgQGZhbWlseSA9IGZhbWlseQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICAgICAgQG91
dHB1dEhhbmRsZXIgPSBvdXRwdXRIYW5kbGVyCisgICAgICAgIEBlcnJvckhhbmRsZXIgPSBlcnJv
ckhhbmRsZXIKKyAgICAgICAgQGZsYWt5ID0gZmxha3kKKyAgICAgICAgQGFkZGl0aW9uYWxFbnYg
PSBbXQorICAgICAgICBAaW5kZXggPSBAQGluZGV4CisgICAgICAgIEBAaW5kZXggKz0gMQorICAg
IGVuZAorICAgIGRlZiBzZWxmLm1vY2soZmFtaWx5LCBuYW1lLCBmbGFreT1uaWwpCisgICAgICAg
IHNlbGYubmV3KCIvbm9uZSIsIFtdLCBmYW1pbHksIG5hbWUsIG5pbCwgbmlsLCBmbGFreSkKKyAg
ICBlbmQKKyAgICBkZWYgc2VsZi5jcmVhdGUoZGlyZWN0b3J5LCBhcmd1bWVudHMsIGZhbWlseSwg
bmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyKQorICAgICAgICBpZiAkcnVuQ29tbWFu
ZE9wdGlvbnNbOmNyYXNoT0tdCisgICAgICAgICAgICBvdXRwdXRIYW5kbGVyID0gbm9pc3lPdXRw
dXRIYW5kbGVyCisgICAgICAgIGVuZAorICAgICAgICBzZWxmLm5ldyhkaXJlY3RvcnksIGFyZ3Vt
ZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIsICRydW5Db21t
YW5kT3B0aW9uc1s6Zmxha3ldKQorICAgIGVuZAorICAgIGRlZiBhcmd1bWVudHNNYXBwZXIoYXJn
cykKKyAgICAgICAgYXJncworICAgIGVuZAorICAgICMgV2UgcmVndWxhcmx5IHBsYWNlIFBsYW5z
IGluIGNvbnRhaW5lcnMsIGJ1dCBtYXkgbW9kaWZ5IEBmbGFreQorICAgICMgYWZ0ZXIgdGhlIGZh
Y3Q7IG9ubHkgaGFzaCBvbiBAaW5kZXggaW5zdGVhZC4KKyAgICBkZWYgaGFzaAorICAgICAgICBA
aW5kZXgKKyAgICBlbmQKKyAgICBkZWYgdG9fcworICAgICAgICAiI3tAaW5kZXh9IgorICAgIGVu
ZAorZW5kCisKK2NsYXNzIFRlc3RSdW5uZXIKKyAgICBkZWYgaW5pdGlhbGl6ZSh0ZXN0UnVubmVy
VHlwZSwgcnVubmVyRGlyKQorICAgICAgICBAdGVzdFJ1bm5lclR5cGUgPSB0ZXN0UnVubmVyVHlw
ZQorICAgICAgICBAcnVubmVyRGlyID0gcnVubmVyRGlyCisgICAgZW5kCisgICAgZGVmIHByZXBh
cmUocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykKKyAg
ICAgICAgcHJlcGFyZVNjcmlwdHMocnVubGlzdCkKKyAgICAgICAgcHJlcGFyZVJ1bm5lcihydW5s
aXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgIGVuZAor
ICAgIGRlZiBwcmVwYXJlU2NyaXB0cyhydW5saXN0KQorICAgICAgICBEaXIubWtkaXIoQHJ1bm5l
ckRpcikgdW5sZXNzIEBydW5uZXJEaXIuZGlyZWN0b3J5PworICAgICAgICB0b0RlbGV0ZSA9IFtd
CisgICAgICAgIERpci5mb3JlYWNoKEBydW5uZXJEaXIpIHsKKyAgICAgICAgICAgIHwgZmlsZW5h
bWUgfAorICAgICAgICAgICAgaWYgZmlsZW5hbWUgPX4gL150ZXN0Xy8KKyAgICAgICAgICAgICAg
ICB0b0RlbGV0ZSA8PCBmaWxlbmFtZQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKworICAg
ICAgICB0b0RlbGV0ZS5lYWNoIHsKKyAgICAgICAgICAgIHwgZmlsZW5hbWUgfAorICAgICAgICAg
ICAgRmlsZS51bmxpbmsoQHJ1bm5lckRpciArIGZpbGVuYW1lKQorICAgICAgICB9CisKKyAgICAg
ICAgIyBXcml0ZSB0ZXN0IHNjcmlwdHMgaW4gcGFyYWxsZWwgYXMgdGhpcyBpcyBib3RoIGFuIGV4
cGVuc2l2ZSBhbmQgYQorICAgICAgICAjIGhpZ2hseSBJTyBpbnRlbnNpdmUgb3BlcmF0aW9uLCBi
dXQgZWFjaCBzY3JpcHQgaXMgaW5kZXBlbmRlbnQgYW5kCisgICAgICAgICMgdGhlIG9wZXJhdGlv
biBpcyBwdXJlIG90aGVyIHRoYW4gd3JpdGluZyB0aGUgdW5pcXVlIHJ1biBzY3JpcHQuCisgICAg
ICAgIHBhcmFsbGVsRWFjaChydW5saXN0KSBkbyB8IHBsYW4gfAorICAgICAgICAgICAgcGxhbi53
cml0ZVJ1blNjcmlwdChAcnVubmVyRGlyICsgInRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iKQor
ICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgc2VsZi5jcmVhdGUodGVzdFJ1bm5lclR5cGUs
IHJ1bm5lckRpcikKKyAgICAgICAgY2xzID0gbmlsCisgICAgICAgIGNhc2UgdGVzdFJ1bm5lclR5
cGUKKyAgICAgICAgd2hlbiA6c2hlbGwKKyAgICAgICAgICAgIGNscyA9IFRlc3RSdW5uZXJTaGVs
bAorICAgICAgICB3aGVuIDptYWtlCisgICAgICAgICAgICBjbHMgPSBUZXN0UnVubmVyTWFrZQor
ICAgICAgICB3aGVuIDpydWJ5CisgICAgICAgICAgICBjbHMgPSBUZXN0UnVubmVyUnVieQorICAg
ICAgICB3aGVuIDpnbnVwYXJhbGxlbAorICAgICAgICAgICAgY2xzID0gVGVzdFJ1bm5lckdudVBh
cmFsbGVsCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJVbmtub3duIHRlc3QgcnVu
bmVyIHR5cGU6ICN7dGVzdFJ1bm5lclR5cGUudG9fc30iCisgICAgICAgIGVuZAorICAgICAgICBy
ZXR1cm4gY2xzLm5ldyh0ZXN0UnVubmVyVHlwZSwgcnVubmVyRGlyKQorICAgIGVuZAorZW5kCisK
K3JlcXVpcmVfcmVsYXRpdmUgIndlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3dyaXRlci0jeyR0
ZXN0V3JpdGVyfSIKIAogZGVmIHNob3VsZENvbGxlY3RDb250aW51b3VzbHk/CiAgICAgJGJ1aWxk
VHlwZSA9PSAicmVsZWFzZSIgb3IgJGZvcmNlQ29sbGVjdENvbnRpbnVvdXNseQpAQCAtNTc3LDcg
KzcwMSw3IEBAIGVuZAogCiBDT0xMRUNUX0NPTlRJTlVPVVNMWV9PUFRJT05TID0gc2hvdWxkQ29s
bGVjdENvbnRpbnVvdXNseT8gPyBbIi0tY29sbGVjdENvbnRpbnVvdXNseT10cnVlIiwgIi0tdXNl
R2VuZXJhdGlvbmFsR0M9ZmFsc2UiLCAiLS12ZXJpZnlHQz10cnVlIl0gOiBbXQogCi0kc2VyaWFs
UnVubGlzdCA9IFtdCiskc2VyaWFsUGxhbnMgPSBTZXQubmV3CiAkcnVubGlzdCA9IFtdCiAKIGRl
ZiBmcmFtZXdvcmtGcm9tSlNDUGF0aChqc2NQYXRoKQpAQCAtNjUwLDcgKzc3NCw3IEBAIGRlZiBh
ZGRSdW5Db21tYW5kKGtpbmQsIGNvbW1hbmQsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlciwg
KmFkZGl0aW9uYWxFbnYpCiAgICAgaWYgJGZpbHRlciBhbmQgbmFtZSAhfiAkZmlsdGVyCiAgICAg
ICAgIHJldHVybgogICAgIGVuZAotICAgIHBsYW4gPSBQbGFuLm5ldygKKyAgICBwbGFuID0gUGxh
bi5jcmVhdGUoCiAgICAgICAgICRiZW5jaG1hcmtEaXJlY3RvcnksIGNvbW1hbmQsICIjeyRjb2xs
ZWN0aW9uTmFtZX0vI3skYmVuY2htYXJrfSIsIG5hbWUsIG91dHB1dEhhbmRsZXIsCiAgICAgICAg
IGVycm9ySGFuZGxlcikKICAgICBwbGFuLmFkZGl0aW9uYWxFbnYucHVzaCgqYWRkaXRpb25hbEVu
dikKQEAgLTY1OSw3ICs3ODMsNyBAQCBkZWYgYWRkUnVuQ29tbWFuZChraW5kLCBjb21tYW5kLCBv
dXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIsICphZGRpdGlvbmFsRW52KQogICAgICAgICAjIHRo
YXQgd2UgY2FuIHRyZWF0IHRoZW0gc3BlY2lhbGx5IHdoZW4gc2NoZWR1bGluZywgYnV0IGtlZXAK
ICAgICAgICAgIyBpdCBpbiB0aGUgJHJ1bmxpc3QgZm9yIGNvZGUgdGhhdCBkb3NuJ3QgY2FyZSBh
Ym91dAogICAgICAgICAjIHNjaGVkdWxpbmcuCi0gICAgICAgICRzZXJpYWxSdW5saXN0IDw8IHBs
YW4KKyAgICAgICAgJHNlcmlhbFBsYW5zLmFkZChwbGFuKQogICAgIGVuZAogCiAgICAgaWYgJG51
bUNoaWxkUHJvY2Vzc2VzID4gMSBhbmQgJHJ1bkNvbW1hbmRPcHRpb25zWzppc1Nsb3ddCkBAIC03
MTcsNiArODQxLDQ4IEBAIGRlZiBzZXJpYWwhCiAgICAgJHJ1bkNvbW1hbmRPcHRpb25zWzpzZXJp
YWxdID0gdHJ1ZQogZW5kCiAKKworY2xhc3MgRmxha3kKKyAgICBhdHRyX3JlYWRlciA6cGFzc1Bl
cmNlbnRhZ2UsIDptYXhUcmllcworICAgIGRlZiBpbml0aWFsaXplKHBhc3NQZXJjZW50YWdlLCBt
YXhUcmllcykKKyAgICAgICAgQHBhc3NQZXJjZW50YWdlID0gcGFzc1BlcmNlbnRhZ2UKKyAgICAg
ICAgQG1heFRyaWVzID0gbWF4VHJpZXMKKyAgICBlbmQKKyAgICBkZWYgdG9fcworICAgICAgICAi
Rmxha3koI3tAcGFzc1BlcmNlbnRhZ2V9LCAje0BtYXhUcmllc30pIgorICAgIGVuZAorICAgIGRl
ZiByZXN1bHQoc3RhdHVzZXMpCisgICAgICAgIGlmIHN0YXR1c2VzLmxlbmd0aCA+IEBtYXhUcmll
cworICAgICAgICAgICAgIyBUaGlzIGNvdWxkIGhhcHBlbiBpZiAoYmVjYXVzZSBvZiByZW1vdGVz
IGRpc2FwcGVhcmluZworICAgICAgICAgICAgIyBhbmQgcmVhcHBlYXJpbmcpIHRoZXJlIGFyZSBt
dWx0aXBsZSBydW5zIGZvciB0aGUgbGFzdAorICAgICAgICAgICAgIyB0cnkgZm9yIGZsYWt5IHRl
c3QuIEp1c3QgaWdub3JlIGFueSBleHRyYSBzdGF0dXNlcy4KKyAgICAgICAgICAgIHN0YXR1c2Vz
ID0gc3RhdHVzZXMudGFrZShAbWF4VHJpZXMpCisgICAgICAgIGVuZAorICAgICAgICBzdWNjZXNz
ZXMgPSBzdWNjZXNzZnVsU3RhdHVzZXMoc3RhdHVzZXMpCisgICAgICAgIHJlbWFpbmluZyA9IEBt
YXhUcmllcyAtIHN0YXR1c2VzLmxlbmd0aAorICAgICAgICByZXF1aXJlZFN1Y2Nlc3NlcyA9IChA
cGFzc1BlcmNlbnRhZ2UgKiBAbWF4VHJpZXMpLmNlaWwKKyAgICAgICAgcmV0ID0gbmlsICMgImhh
cyBub3QgY29tcGxldGVkIHlldCIKKyAgICAgICAgaWYgc3VjY2Vzc2VzID49IHJlcXVpcmVkU3Vj
Y2Vzc2VzCisgICAgICAgICAgICByZXQgPSB0cnVlCisgICAgICAgIGVsc2lmIChzdWNjZXNzZXMg
KyByZW1haW5pbmcpIDwgcmVxdWlyZWRTdWNjZXNzZXMKKyAgICAgICAgICAgIHJldCA9IGZhbHNl
CisgICAgICAgIGVuZAorICAgICAgICBwdXRkKCIje3NlbGZ9LnJlc3VsdCgje3N0YXR1c2VzfSkg
PT4gI3tyZXR9IikKKyAgICAgICAgcmV0CisgICAgZW5kCisgICAgcHJpdmF0ZQorICAgIGRlZiBz
dWNjZXNzZnVsU3RhdHVzZXMoc3RhdHVzZXMpCisgICAgICAgIHN0YXR1c2VzLmNvdW50IHsKKyAg
ICAgICAgICAgIHxzdGF0dXN8CisgICAgICAgICAgICBzdGF0dXMgPT0gU1RBVFVTX0ZJTEVfUEFT
UworICAgICAgICB9CisgICAgZW5kCitlbmQKKworZGVmIGZsYWt5IShwYXNzUGVyY2VudGFnZSwg
bWF4VHJpZXMpCisgICAgJHJ1bkNvbW1hbmRPcHRpb25zWzpmbGFreV0gPSBGbGFreS5uZXcocGFz
c1BlcmNlbnRhZ2UsIG1heFRyaWVzKQorZW5kCisKIGRlZiByZXF1aXJlT3B0aW9ucygqb3B0aW9u
cykKICAgICAkdGVzdFNwZWNpZmljUmVxdWlyZWRPcHRpb25zICs9IG9wdGlvbnMKIGVuZApAQCAt
MTg0OCwzNCArMjAxNCw2IEBAIGRlZiBoYW5kbGVDb2xsZWN0aW9uKGNvbGxlY3Rpb24pCiAgICAg
ZW5kCiBlbmQKIAotZGVmIGFwcGVuZEZhaWx1cmUocGxhbikKLSAgICBGaWxlLm9wZW4oJG91dHB1
dERpciArICJmYWlsZWQiLCAiYSIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgb3V0cC5w
dXRzIHBsYW4ubmFtZQotICAgIH0KLWVuZAotCi1kZWYgYXBwZW5kUGFzcyhwbGFuKQotICAgIEZp
bGUub3Blbigkb3V0cHV0RGlyICsgInBhc3NlZCIsICJhIikgewotICAgICAgICB8IG91dHAgfAot
ICAgICAgICBvdXRwLnB1dHMgcGxhbi5uYW1lCi0gICAgfQotZW5kCi0KLWRlZiBhcHBlbmROb1Jl
c3VsdChwbGFuKQotICAgIEZpbGUub3Blbigkb3V0cHV0RGlyICsgIm5vcmVzdWx0IiwgImEiKSB7
Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgIG91dHAucHV0cyBwbGFuLm5hbWUKLSAgICB9Ci1l
bmQKLQotZGVmIGFwcGVuZFJlc3VsdChwbGFuLCBkaWRQYXNzKQotICAgIEZpbGUub3Blbigkb3V0
cHV0RGlyICsgInJlc3VsdHMiLCAiYSIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgb3V0
cC5wdXRzICIje3BsYW4ubmFtZX06ICN7ZGlkUGFzcyA/ICdQQVNTJyA6ICdGQUlMJ30iCi0gICAg
fQotZW5kCi0KIGRlZiBwcmVwYXJlQnVuZGxlCiAgICAgcmFpc2UgaWYgJGJ1bmRsZQogCkBAIC0y
MDU4LDU0ICsyMTk2LDExIEBAIGRlZiBwYXJhbGxlbEVhY2goYXJyYXksICZibG9jaykKICAgICBl
bmQKIGVuZAogCi1kZWYgcHJlcGFyZVRlc3RSdW5uZXIocmVtb3RlSW5kZXg9MCkKLSAgICByYWlz
ZSBpZiAkYnVuZGxlCi0KLSAgICAkcnVubGlzdC5lYWNoX3dpdGhfaW5kZXggewotICAgICAgICB8
IHBsYW4sIGluZGV4IHwKLSAgICAgICAgcGxhbi5pbmRleCA9IGluZGV4Ci0gICAgfQotCi0gICAg
RGlyLm1rZGlyKCRydW5uZXJEaXIpIHVubGVzcyAkcnVubmVyRGlyLmRpcmVjdG9yeT8KLSAgICB0
b0RlbGV0ZSA9IFtdCi0gICAgRGlyLmZvcmVhY2goJHJ1bm5lckRpcikgewotICAgICAgICB8IGZp
bGVuYW1lIHwKLSAgICAgICAgaWYgZmlsZW5hbWUgPX4gL150ZXN0Xy8KLSAgICAgICAgICAgIHRv
RGVsZXRlIDw8IGZpbGVuYW1lCi0gICAgICAgIGVuZAotICAgIH0KLSAgICAKLSAgICB0b0RlbGV0
ZS5lYWNoIHsKLSAgICAgICAgfCBmaWxlbmFtZSB8Ci0gICAgICAgIEZpbGUudW5saW5rKCRydW5u
ZXJEaXIgKyBmaWxlbmFtZSkKLSAgICB9Ci0KLSAgICAjIFdyaXRlIHRlc3Qgc2NyaXB0cyBpbiBw
YXJhbGxlbCBhcyB0aGlzIGlzIGJvdGggYW4gZXhwZW5zaXZlIGFuZCBhCi0gICAgIyBoaWdobHkg
SU8gaW50ZW5zaXZlIG9wZXJhdGlvbiwgYnV0IGVhY2ggc2NyaXB0IGlzIGluZGVwZW5kZW50IGFu
ZAotICAgICMgdGhlIG9wZXJhdGlvbiBpcyBwdXJlIG90aGVyIHRoYW4gd3JpdGluZyB0aGUgdW5p
cXVlIHJ1biBzY3JpcHQuCi0gICAgcGFyYWxsZWxFYWNoKCRydW5saXN0KSBkbyB8IHBsYW4gfAot
ICAgICAgICBwbGFuLndyaXRlUnVuU2NyaXB0KCRydW5uZXJEaXIgKyAidGVzdF9zY3JpcHRfI3tw
bGFuLmluZGV4fSIpCi0gICAgZW5kCi0KLSAgICBjYXNlICR0ZXN0UnVubmVyVHlwZQotICAgIHdo
ZW4gOm1ha2UKLSAgICAgICAgcHJlcGFyZU1ha2VUZXN0UnVubmVyKHJlbW90ZUluZGV4KQotICAg
IHdoZW4gOnNoZWxsCi0gICAgICAgIHByZXBhcmVTaGVsbFRlc3RSdW5uZXIKLSAgICB3aGVuIDpy
dWJ5Ci0gICAgICAgIHByZXBhcmVSdWJ5VGVzdFJ1bm5lcgotICAgIHdoZW4gOmdudXBhcmFsbGVs
Ci0gICAgICAgIHByZXBhcmVHbnVQYXJhbGxlbFRlc3RSdW5uZXIKLSAgICBlbHNlCi0gICAgICAg
IHJhaXNlICJVbmtub3duIHRlc3QgcnVubmVyIHR5cGU6ICN7JHRlc3RSdW5uZXJUeXBlLnRvX3N9
IgotICAgIGVuZAotZW5kCi0KIGRlZiBjbGVhblJ1bm5lckRpcmVjdG9yeQogICAgIHJhaXNlIHVu
bGVzcyAkYnVuZGxlCiAgICAgRGlyLmZvcmVhY2goJHJ1bm5lckRpcikgewogICAgICAgICB8IGZp
bGVuYW1lIHwKLSAgICAgICAgbmV4dCB1bmxlc3MgZmlsZW5hbWUgPX4gL150ZXN0X2ZhaWwvCisg
ICAgICAgIG5leHQgdW5sZXNzIGZpbGVuYW1lID1+IC9eI3tTVEFUVVNfRklMRV9QUkVGSVh9Lwog
ICAgICAgICBGaWxlVXRpbHMucm1fZiAkcnVubmVyRGlyICsgZmlsZW5hbWUKICAgICB9CiBlbmQK
QEAgLTIyNzQsOSArMjM2OSw5IEBAIGRlZiBleHBvcnRCYXNlRW52aXJvbm1lbnRWYXJpYWJsZXMo
ZXNjYXBlKQogICAgIF0uam9pbigiIikKIGVuZAogCi1kZWYgcnVuVGVzdFJ1bm5lcihyZW1vdGVJ
bmRleD0wKQotICAgIGlmICRyZW1vdGUKLSAgICAgICAgcmVtb3RlSG9zdCA9ICRyZW1vdGVIb3N0
c1tyZW1vdGVJbmRleF0KK2RlZiBydW5UZXN0UnVubmVyKHRlc3RSdW5uZXIsIHJlbW90ZUhvc3Rz
LCByZW1vdGVJbmRleD0wKQorICAgIGlmIG5vdCByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgIHJl
bW90ZUhvc3QgPSByZW1vdGVIb3N0c1tyZW1vdGVJbmRleF0KICAgICAgICAgZ2V0UmVtb3RlRGly
ZWN0b3J5SWZOZWVkZWQocmVtb3RlSG9zdCkKICAgICAgICAgY29weUJ1bmRsZVRvUmVtb3RlKHJl
bW90ZUhvc3QpCiAgICAgICAgIHJlbW90ZVNjcmlwdCA9ICJcIiIKQEAgLTIyODYsMTEgKzIzODEs
MTEgQEAgZGVmIHJ1blRlc3RSdW5uZXIocmVtb3RlSW5kZXg9MCkKICAgICAgICAgcmVtb3RlU2Ny
aXB0ICs9ICJjZCAjeyRvdXRwdXREaXIuYmFzZW5hbWV9Ly5ydW5uZXIgJiYgIgogICAgICAgICBy
ZW1vdGVTY3JpcHQgKz0gZXhwb3J0QmFzZUVudmlyb25tZW50VmFyaWFibGVzKHRydWUpCiAgICAg
ICAgICRlbnZWYXJzLmVhY2ggeyB8dmFyfCByZW1vdGVTY3JpcHQgKz0gImV4cG9ydCAiIDw8IHZh
ciA8PCAiXG4iIH0KLSAgICAgICAgcmVtb3RlU2NyaXB0ICs9ICIje3Rlc3RSdW5uZXJDb21tYW5k
KHJlbW90ZUluZGV4KX1cIiIKKyAgICAgICAgcmVtb3RlU2NyaXB0ICs9ICIje3Rlc3RSdW5uZXIu
Y29tbWFuZChyZW1vdGVJbmRleCl9XCIiCiAgICAgICAgIHJ1bkFuZE1vbml0b3JUZXN0UnVubmVy
Q29tbWFuZChbInNzaCIsICItbyIsICJOb0hvc3RBdXRoZW50aWNhdGlvbkZvckxvY2FsaG9zdD15
ZXMiLCAiLXAiLCByZW1vdGVIb3N0LnBvcnQudG9fcywgIiN7cmVtb3RlSG9zdC51c2VyfUAje3Jl
bW90ZUhvc3QuaG9zdH0iLCByZW1vdGVTY3JpcHRdKQogICAgIGVsc2UKICAgICAgICAgRGlyLmNo
ZGlyKCRydW5uZXJEaXIpIHsKLSAgICAgICAgICAgIHJ1bkFuZE1vbml0b3JUZXN0UnVubmVyQ29t
bWFuZChTaGVsbHdvcmRzLnNoZWxsc3BsaXQodGVzdFJ1bm5lckNvbW1hbmQpKQorICAgICAgICAg
ICAgcnVuQW5kTW9uaXRvclRlc3RSdW5uZXJDb21tYW5kKFNoZWxsd29yZHMuc2hlbGxzcGxpdCh0
ZXN0UnVubmVyLmNvbW1hbmQpKQogICAgICAgICB9CiAgICAgZW5kCiBlbmQKQEAgLTIzMDcsMzgg
KzI0MDIsMjEgQEAgZGVmIHByb2Nlc3NTdGF0dXNMaW5lKG1hcCwgbGluZSkKICAgICBydW5JZCA9
IG1kWzpydW5JZF0KICAgICByZXN1bHQgPSBtZFs6cmVzdWx0XQogICAgIGlmIHJ1bklkICE9ICRy
dW5VbmlxdWVJZAotICAgICAgICAjIFRoaXMgbWF5IGNvbmNlaXZhYmx5IGhhcHBlbiBpZiBhIHJl
bW90ZSBnb2VzCi0gICAgICAgICMgYXdheSBpbiB0aGUgbWlkZGxlIG9mIGEgcnVuIGFuZCBjb21l
cyBiYWNrCi0gICAgICAgICMgb25saW5lIGluIHRoZSBtaWRkbGUgb2YgYSBkaWZmZXJlbnQgcnVu
LgotICAgICAgICAkc3RkZXJyLnB1dHMoIklnbm9yaW5nIHN0YWxlIHN0YXR1cyBmaWxlIGZvciAj
e2luZGV4fSAoSUQgI3tydW5JZH0gYnV0IGN1cnJlbnQgSUQgaXMgI3skcnVuVW5pcXVlSWR9KSIp
Ci0gICAgICAgIHJldHVybgotICAgIGVuZAotICAgIGlmIG1hcC5oYXNfa2V5PyhpbmRleCkKLSAg
ICAgICAgIyBPbmUgc2NlbmFyaW8gaW4gd2hpY2ggdGhpcyBjb3VsZCBoYXBwZW46Ci0gICAgICAg
ICMgVGVzdCBUIHJ1bnMgb24gcmVtb3RlIGhvc3QgQSBhbmQKLSAgICAgICAgIyAgIDEuIHRoZSBz
dGF0dXMgZmlsZSByZWFjaGVzIEEncyBkaXNrCi0gICAgICAgICMgICAyLiBzb21laG93IHRoZSBn
bnUgcGFyYWxsZWwgcnVubmVyIGlzIG5vdCBtYWRlIGF3YXJlIG9mIHRoZSB0ZXN0J3MgY29tcGxl
dGlvbiAocGFja2V0IGxvc3M/KQotICAgICAgICAjICAgMy4gbWFjaGluZSBBIGNyYXNoZXMKLSAg
ICAgICAgIyAgIDQuIGdudSBwYXJhbGxlbCByZS1zY2hlZHVsZXMgdGhlIHRlc3QgdG8gcnVuIG9u
IHJlbW90ZSBob3N0IEIsIHdoZXJlIGl0IHJ1bnMgdG8gY29tcGxldGlvbgotICAgICAgICAjICAg
NS4gQiBjb21lcyBiYWNrIG9ubGluZSBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgcnVuCi0gICAgICAg
ICMgICA2LiB3ZSBjb2xsZWN0IHRoZSBzdGF0dXMgZmlsZXMgZnJvbSBhbGwgcmVtb3RlcyBhbmQg
ZW5kIHVwIHdpdGggdHdvIHN0YXR1cyBmaWxlcyBmb3IgVC4KLSAgICAgICAgcHJldiA9IG1hcFtp
bmRleF0KLSAgICAgICAgIyBtYXBbaW5kZXhdIGhvbGRzCi0gICAgICAgICMgLSBhIG51bWJlciwg
aWYgYWxsIHJlc3VsdHMgY29kZXMgd2UndmUgb2JzZXJ2ZWQgZm9yIGEgdGVzdCBhcmUgdGhlIHNh
bWUKLSAgICAgICAgIyAtIGFuIGFycmF5LCBpZiB0aGV5IGRpdmVyZ2UuCi0gICAgICAgIGlmIHBy
ZXYuaXNfYT8oQXJyYXkpCi0gICAgICAgICAgICBwcmV2LnB1c2gocmVzdWx0KQotICAgICAgICBl
bHNpZiBwcmV2ICE9IHJlc3VsdAotICAgICAgICAgICAgIyBJZiB0aGUgdHdvIHJlc3VsdHMgZGlm
ZmVyLCBrZWVwIHRoZW0KLSAgICAgICAgICAgICMgYm90aC4gVGhpcyBpcyBzaW1wbHkgYSB3YXkg
dG8gbWFrZSBub3RlIG9mCi0gICAgICAgICAgICAjIHRoZSBkaXZlcmdlbmNlIChmb3IgbGF0ZXIg
cmVwb3J0aW5nKS4KLSAgICAgICAgICAgIG1hcFtpbmRleF0gPSBbcHJldiwgcmVzdWx0XQorICAg
ICAgICBpZiAkYnVuZGxlCisgICAgICAgICAgICAjIFRoZSBzY3JpcHRzIGluIHRoZSBidW5kbGUg
aGF2ZSB0aGVpciBvd24gcnVuSWQgZW1iZWRkZWQsCisgICAgICAgICAgICAjIGp1c3QgaWdub3Jl
IHRoZSB2YWx1ZS4KICAgICAgICAgZWxzZQotICAgICAgICAgICAgIyBHb3QgdGhlIHNhbWUgcmVz
dWx0LCBubyBuZWVkIHRvIGRvIGFueXRoaW5nLgorICAgICAgICAgICAgIyBUaGlzIG1heSBjb25j
ZWl2YWJseSBoYXBwZW4gaWYgYSByZW1vdGUgZ29lcworICAgICAgICAgICAgIyBhd2F5IGluIHRo
ZSBtaWRkbGUgb2YgYSBydW4gYW5kIGNvbWVzIGJhY2sKKyAgICAgICAgICAgICMgb25saW5lIGlu
IHRoZSBtaWRkbGUgb2YgYSBkaWZmZXJlbnQgcnVuLgorICAgICAgICAgICAgJHN0ZGVyci5wdXRz
KCJJZ25vcmluZyBzdGFsZSBzdGF0dXMgZmlsZSBmb3IgI3tpbmRleH0gKElEICN7cnVuSWR9IGJ1
dCBjdXJyZW50IElEIGlzICN7JHJ1blVuaXF1ZUlkfSkiKQorICAgICAgICAgICAgcmV0dXJuCiAg
ICAgICAgIGVuZAotICAgICAgICAkc3RkZXJyLnB1dHMoIkR1cGxpY2F0ZSBzdGF0ZSBmaWxlIGZv
ciAje2luZGV4fTogI3ttYXBbaW5kZXhdfSIpCisgICAgZW5kCisgICAgaWYgbWFwLmhhc19rZXk/
KGluZGV4KQorICAgICAgICBtYXBbaW5kZXhdLnB1c2gocmVzdWx0KQogICAgIGVsc2UKLSAgICAg
ICAgbWFwW2luZGV4XSA9IHJlc3VsdAorICAgICAgICBtYXBbaW5kZXhdID0gW3Jlc3VsdF0KICAg
ICBlbmQKIGVuZAogCkBAIC0yMzcyLDU4ICsyNDUwLDIzIEBAIGRlZiBnZXRTdGF0dXNNYXAobWFw
PXt9KQogICAgIG1hcAogZW5kCiAKLWRlZiBnZXRDb21wbGV0ZWRUZXN0c0Zyb21TdGF0dXNNYXAo
c3RhdHVzTWFwKQotICAgIGNvbXBsZXRlZFRlc3RzID0ge30KLSAgICAkcnVubGlzdC5lYWNoX3dp
dGhfaW5kZXggewotICAgICAgICB8IHBsYW4sIGluZGV4IHwKLSAgICAgICAgaWYgc3RhdHVzTWFw
Lmhhc19rZXk/KGluZGV4KQotICAgICAgICAgICAgY29tcGxldGVkVGVzdHNbcGxhbl0gPSBuaWwK
LSAgICAgICAgZW5kCi0gICAgfQotICAgIGNvbXBsZXRlZFRlc3RzCi1lbmQKLQogZGVmIGRldGVj
dEZhaWx1cmVzKHN0YXR1c01hcD17fSkKICAgICByYWlzZSBpZiAkYnVuZGxlCi0gICAgbm9yZXN1
bHQgPSAwCiAgICAgaWYgc3RhdHVzTWFwLnNpemUgPT0gMAogICAgICAgICBzdGF0dXNNYXAgPSBn
ZXRTdGF0dXNNYXAKICAgICBlbmQKLSAgICBmYW1pbHlNYXAgPSB7fQogCi0gICAgJHJ1bmxpc3Qu
ZWFjaF93aXRoX2luZGV4IHsKLSAgICAgICAgfCBwbGFuLCBpbmRleCB8Ci0gICAgICAgIHVubGVz
cyBmYW1pbHlNYXBbcGxhbi5mYW1pbHldCi0gICAgICAgICAgICBmYW1pbHlNYXBbcGxhbi5mYW1p
bHldID0gW10KLSAgICAgICAgZW5kCi0gICAgICAgIGlmIG5vdCBzdGF0dXNNYXAuaGFzX2tleT8o
aW5kZXgpCi0gICAgICAgICAgICBhcHBlbmROb1Jlc3VsdChwbGFuKQotICAgICAgICAgICAgbm9y
ZXN1bHQgKz0gMQotICAgICAgICAgICAgbmV4dAotICAgICAgICBlbmQKLSAgICAgICAgcmVzdWx0
ID0gbmlsCi0gICAgICAgICMgSWYgYW55IG9mIHRoZSByZXN1bHRzIHdlIGdvdCB3YXMgYSBwYXNz
LCBjb25zaWRlciB0aGUgdGVzdAotICAgICAgICAjIHN1Y2Nlc3NmdWwuIFRoZSBhc3N1bXB0aW9u
IGhlcmUgaXMgdGhhdCBmYWlsdXJlcyBhcmUgYmVjYXVzZQotICAgICAgICAjIG9mIGluZnJhc3Ry
dWN0dXJlIGlzc3VlcyAod2hpY2ggaXMgd2h5IHRoZSB0ZXN0IHdhcyBydW4KLSAgICAgICAgIyBt
dWx0aXBsZSB0aW1lcyBpbiB0aGUgZmlyc3QgcGxhY2UpLgotICAgICAgICB0ZXN0V2FzU3VjY2Vz
c2Z1bCA9IHN0YXR1c01hcFtpbmRleF0uaW5jbHVkZT8oU1RBVFVTX0ZJTEVfUEFTUykKLSAgICAg
ICAgaWYgdGVzdFdhc1N1Y2Nlc3NmdWwKLSAgICAgICAgICAgIGFwcGVuZFBhc3MocGxhbikKLSAg
ICAgICAgICAgIHJlc3VsdCA9ICJQQVNTIgotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBl
bmRGYWlsdXJlKHBsYW4pCi0gICAgICAgICAgICByZXN1bHQgPSAiRkFJTCIKLSAgICAgICAgZW5k
Ci0gICAgICAgIGFwcGVuZFJlc3VsdChwbGFuLCB0ZXN0V2FzU3VjY2Vzc2Z1bCkKLSAgICAgICAg
ZmFtaWx5TWFwW3BsYW4uZmFtaWx5XSA8PCB7IDpyZXN1bHQgPT4gcmVzdWx0LCA6cGxhbiA9PiBw
bGFuIH0KLSAgICB9CisgICAgZXZhbHVhdG9yID0gVGVzdFJlc3VsdEV2YWx1YXRvckZpbmFsLm5l
dygkcnVubGlzdCwgc3RhdHVzTWFwKQorICAgIGV2YWx1YXRvci52aXNpdCEKIAotICAgIGlmIG5v
cmVzdWx0ID4gMAotICAgICAgICAkc3RkZXJyLnB1dHMoIkNvdWxkIG5vdCBnZXQgdGhlIGV4aXQg
c3RhdHVzIGZvciAje25vcmVzdWx0fSB0ZXN0cyIpCisgICAgaWYgZXZhbHVhdG9yLm5vcmVzdWx0
ID4gMAorICAgICAgICAkc3RkZXJyLnB1dHMoIkNvdWxkIG5vdCBnZXQgdGhlIGV4aXQgc3RhdHVz
IGZvciAje2V2YWx1YXRvci5ub3Jlc3VsdH0gdGVzdHMiKQogICAgICAgICAjIFdlIGNhbid0IGNo
YW5nZSBvdXIgZXhpdCBjb2RlLCBhcyBydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMKICAgICAgICAg
IyBleHBlY3RzIDAgZXZlbiB3aGVuIHRoZXJlIGFyZSBmYWlsdXJlcy4KICAgICBlbmQKIAorICAg
IGZhbWlseU1hcCA9IGV2YWx1YXRvci5mYW1pbHlNYXAKKwogICAgIEZpbGUub3Blbigkb3V0cHV0
RGlyICsgInJlc3VsdHNCeUZhbWlseSIsICJ3IikgewogICAgICAgICB8IG91dHAgfAogICAgICAg
ICBmaXJzdCA9IHRydWUKQEAgLTI0NzMsNiArMjUxNiw3IEBAIGVuZAogY2xlYW4oJG91dHB1dERp
ciArICJmYWlsZWQiKQogY2xlYW4oJG91dHB1dERpciArICJwYXNzZWQiKQogY2xlYW4oJG91dHB1
dERpciArICJub3Jlc3VsdCIpCitjbGVhbigkb3V0cHV0RGlyICsgImZsYWt5IikKIGNsZWFuKCRv
dXRwdXREaXIgKyAicmVzdWx0cyIpCiBjbGVhbigkb3V0cHV0RGlyICsgInJlc3VsdHNCeUZhbWls
eSIpCiBjbGVhbigkb3V0cHV0RGlyICsgIi52bSIpCkBAIC0yNTE1LDI3ICsyNTU5LDE3IEBAIEVO
VlsiVFoiXSA9ICJVUy9QYWNpZmljIjsKIGRlZiBydW5CdW5kbGUKICAgICByYWlzZSB1bmxlc3Mg
JGJ1bmRsZQogCi0gICAgY2xlYW5SdW5uZXJEaXJlY3RvcnkKLSAgICBjbGVhbk9sZFJlc3VsdHMK
LSAgICBydW5UZXN0UnVubmVyCi0gICAgY2xlYW5FbXB0eVJlc3VsdEZpbGVzCi1lbmQKLQotZGVm
IHJ1bk5vcm1hbAotICAgIHJhaXNlIGlmICRidW5kbGUgb3IgJHRhcmJhbGwKLQotICAgIHByZXBh
cmVCdW5kbGUKLSAgICBwcmVwYXJlVGVzdFJ1bm5lcgotICAgIHJ1blRlc3RSdW5uZXIKLSAgICBj
bGVhbkVtcHR5UmVzdWx0RmlsZXMKLSAgICBkZXRlY3RGYWlsdXJlcworICAgIHRlc3RSdW5uZXIg
PSBUZXN0UnVubmVyLmNyZWF0ZSgkdGVzdFJ1bm5lclR5cGUsICRydW5uZXJEaXIpCisgICAgZXZh
bHVhdG9yID0gQnVuZGxlVGVzdHNFeGVjdXRvci5uZXcoJHJ1bmxpc3QsICRzZXJpYWxQbGFucywg
SVRFUkFUSU9OX0xJTUlUUywgJHRyZWF0RmFpbGluZ0FzRmxha3ksIHRlc3RSdW5uZXIpCisgICAg
ZXZhbHVhdG9yLmxvb3AKIGVuZAogCiBkZWYgcnVuVGFyYmFsbAogICAgIHJhaXNlIHVubGVzcyAk
dGFyYmFsbAogCi0gICAgcHJlcGFyZUJ1bmRsZSAKLSAgICBwcmVwYXJlVGVzdFJ1bm5lcgorICAg
IHByZXBhcmVCdW5kbGUKKyAgICB0ZXN0UnVubmVyID0gVGVzdFJ1bm5lci5jcmVhdGUoJHRlc3RS
dW5uZXJUeXBlLCAkcnVubmVyRGlyKQorICAgIHRlc3RSdW5uZXIucHJlcGFyZSgkcnVubGlzdCwg
JHNlcmlhbFBsYW5zLCBTZXQubmV3LCBuaWwpCiAgICAgY29tcHJlc3NCdW5kbGUKIGVuZAogCkBA
IC0yNTY5LDQ0ICsyNjAzLDI4IEBAIGRlZiBmb3JFYWNoUmVtb3RlKHJlbW90ZUhvc3RzLCBvcHRp
b25zPXt9LCAmYmxrKQogICAgIGxpdmVSZW1vdGVzCiBlbmQKIAotZGVmIHJ1blJlbW90ZQotICAg
IHJhaXNlIHVubGVzcyAkcmVtb3RlCi0KLSAgICBwcmVwYXJlQnVuZGxlCi0gICAgJHJlbW90ZUhv
c3RzLmVhY2hfaW5kZXggewotICAgICAgICB8IGluZGV4IHwKLSAgICAgICAgcHJlcGFyZVRlc3RS
dW5uZXIoaW5kZXgpCi0gICAgfQotICAgIGNvbXByZXNzQnVuZGxlCi0gICAgZm9yRWFjaFJlbW90
ZSgkcmVtb3RlSG9zdHMpIHsKLSAgICAgICAgfCBpbmRleCB8Ci0gICAgICAgIHJ1blRlc3RSdW5u
ZXIoaW5kZXgpCi0gICAgfQotICAgIGRldGVjdEZhaWx1cmVzCi1lbmQKK2NsYXNzIFRlc3RSdW5u
ZXJHbnVQYXJhbGxlbCA8IFRlc3RSdW5uZXIKKyAgICBkZWYgcHJlcGFyZUdudVBhcmFsbGVsUnVu
bmVySm9icyhuYW1lLCBydW5saXN0LCBjb21wbGV0ZWRQbGFucykKKyAgICAgICAgcGF0aCA9IEBy
dW5uZXJEaXIgKyBuYW1lCisgICAgICAgIEZpbGVVdGlscy5ta2Rpcl9wKEBydW5uZXJEaXIpCiAK
LWRlZiBwcmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKG5hbWUsIHJ1bmxpc3QsIGV4Y2x1ZGUp
Ci0gICAgcGF0aCA9ICRydW5uZXJEaXIgKyBuYW1lCi0gICAgRmlsZVV0aWxzLm1rZGlyX3AoJHJ1
bm5lckRpcikKLQotICAgIEZpbGUub3BlbihwYXRoLCAidyIpIHsKLSAgICAgICAgfCBvdXRwIHwK
LSAgICAgICAgcnVubGlzdC5lYWNoIHsKLSAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAgICAgICAg
ICBpZiBleGNsdWRlLmhhc19rZXk/KHBsYW4pCi0gICAgICAgICAgICAgICAgbmV4dAotICAgICAg
ICAgICAgZW5kCi0gICAgICAgICAgICBvdXRwLnB1dHMoIi4vdGVzdF9zY3JpcHRfI3twbGFuLmlu
ZGV4fSIpCisgICAgICAgIEZpbGUub3BlbihwYXRoLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0
cCB8CisgICAgICAgICAgICBydW5saXN0LmVhY2ggeworICAgICAgICAgICAgICAgIHwgcGxhbiB8
CisgICAgICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAg
ICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAg
IG91dHAucHV0cygiLi90ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9IikKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgIH0KKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0
LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBwcmVw
YXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKCJwYXJhbGxlbC10ZXN0cyIsIHJ1bmxpc3QsIGNvbXBs
ZXRlZFBsYW5zIHwgc2VyaWFsUGxhbnMpCisgICAgICAgIHByZXBhcmVHbnVQYXJhbGxlbFJ1bm5l
ckpvYnMoInNlcmlhbC10ZXN0cyIsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucykKKyAgICBl
bmQKIGVuZAogCi1kZWYgcHJlcGFyZUdudVBhcmFsbGVsVGVzdFJ1bm5lcihleGNsdWRlPXt9KQot
ICAgIHNlcmlhbFRlc3RzID0ge30KLSAgICAkc2VyaWFsUnVubGlzdC5lYWNoIHsgfHB8IHNlcmlh
bFRlc3RzW3BdID0gbmlsIH0KLSAgICBwcmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKCJwYXJh
bGxlbC10ZXN0cyIsICRydW5saXN0LCBleGNsdWRlLm1lcmdlKHNlcmlhbFRlc3RzKSkKLSAgICBw
cmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKCJzZXJpYWwtdGVzdHMiLCAkc2VyaWFsUnVubGlz
dCwgZXhjbHVkZSkKLWVuZAogCiBkZWYgd2l0aEdudVBhcmFsbGVsU3NoV3JhcHBlcigmYmxrKQog
ICAgIFRlbXBmaWxlLm9wZW4oJ3NzaC13cmFwcGVyJywgJHJ1bm5lckRpcikgewpAQCAtMjcyNCwy
OCArMjc0Miw5MCBAQCBkZWYgcnVuR251UGFyYWxsZWxSdW5uZXIocmVtb3RlSG9zdHMsIGlucHV0
cywgb3B0aW9ucz17fSkKICAgICB9CiBlbmQKIAotZGVmIHJ1bkdudVBhcmFsbGVsCi0gICAgcmFp
c2UgdW5sZXNzICRyZW1vdGUKLSAgICBwcmVwYXJlQnVuZGxlCi0gICAgcHJlcGFyZVRlc3RSdW5u
ZXIKLSAgICBjb21wcmVzc0J1bmRsZQotICAgIHN0YXR1c01hcCA9IHt9Ci0gICAgIyBUaGlzIGlz
IGEgaGlnaC1sZXZlbCByZXRyeSBsb29wLiBJZiBhIHJlbW90ZSBob3N0IGdvZXMgYXdheSBpbgot
ICAgICMgdGhlIG1pZGRsZSBvZiBhIHJ1biBhbmQgZWl0aGVyIGRvZXNuJ3QgY29tZSBiYWNrIG9u
bGluZSBvciBjb21lcwotICAgICMgYmFjayBoYXZpbmcgcmVtb3ZlZCB0aGUgcmVtb3RlIGRpcmVj
dG9yeSAoKiksIGdldFN0YXR1c01hcCB3aWxsIGJlCi0gICAgIyBtaXNzaW5nIHJlc3VsdHMgZm9y
IHRoZXNlIHRlc3RzLCBhbGxvd2luZyB1cyB0byByZXRyeSB0aGVtIGluCi0gICAgIyB0aGUgbmV4
dCBpdGVyYXRpb24uCi0gICAgIwotICAgICMgKCopIFRoaXMgbWF5IHdlbGwgaGFwcGVuIHdoZW4g
cnVubmluZyB0aGUgdGVzdHMgb24gZW1iZWRkZWQKLSAgICAjIGJvYXJkcyB0aGF0IHJlZ3VsYXJs
eSBjb3JydXB0IHRoZWlyIFNEIGNhcmQuIERlZmluaXRlbHkgYW4gaXNzdWUKLSAgICAjIGZvciB0
aGUgY2kyMCBib2FyZHMgdXNlZCB0byB0ZXN0IE1JUFMuCi0gICAgIwotICAgICMgVGhlIG51bWJl
ciBvZiB0cmllcyBzY2FsZXMgd2l0aCB0aGUgbnVtYmVyIG9mIHJlbW90ZXMgaW4gdXNlLAotICAg
ICMgd2l0aCBhIHJlYXNvbmFibGUgZmxvb3IuCi0gICAgdHJpZXMgPSBbMywgJHJlbW90ZUhvc3Rz
LnNpemUgLyAyXS5tYXgKLSAgICB0cmllcy50aW1lcyB7Ci0gICAgICAgIHwgaXRlcmF0aW9uIHwK
LSAgICAgICAgcmVtb3RlSG9zdHMgPSAkcmVtb3RlSG9zdHMKKyMgVW5jb25kaXRpb25hbGx5IHJ1
biB0aGUgc2VsZnRlc3RzIG9uIGV2ZXJ5IGV4ZWN1dGlvbiwgdGhleSdyZSBwcmV0dHkgY2hlYXAu
CitFeGVjdXRvclNlbGZUZXN0cy5ydW4KK1Rlc3RSZXN1bHRFdmFsdWF0b3JTZWxmVGVzdHMucnVu
CisKK2NsYXNzIE5vblJlbW90ZVRlc3RzRXhlY3V0b3IgPCBCYXNlVGVzdHNFeGVjdXRvcgorICAg
IGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBtYXhJdGVyYXRpb25zQm91bmRz
LCB0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0UnVubmVyKQorICAgICAgICBzdXBlcihydW5saXN0
LCBzZXJpYWxQbGFucywKKyAgICAgICAgICAgICAgbmlsLAorICAgICAgICAgICAgICBtYXhJdGVy
YXRpb25zQm91bmRzLAorICAgICAgICAgICAgICB0cmVhdEZhaWxpbmdBc0ZsYWt5CisgICAgICAg
ICAgICAgKQorICAgICAgICBAdGVzdFJ1bm5lciA9IHRlc3RSdW5uZXIKKyAgICBlbmQKKyAgICBk
ZWYgcHJlcGFyZUV4ZWN1dGlvbihyZW1vdGVIb3N0cykKKyAgICAgICAgcmVtb3RlSG9zdHMKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBOb3JtYWxUZXN0c0V4ZWN1dG9yIDwgTm9uUmVtb3RlVGVzdHNF
eGVjdXRvcgorICAgIGRlZiBwcmVwYXJlQXJ0aWZhY3RzKHJlbW90ZUhvc3RzKQorICAgICAgICBy
YWlzZSAicmVtb3RlSG9zdHMgbm90IG5pbCIgdW5sZXNzIHJlbW90ZUhvc3RzLm5pbD8KKyAgICAg
ICAgcHJlcGFyZUJ1bmRsZQorICAgICAgICBAdGVzdFJ1bm5lci5wcmVwYXJlKEBydW5saXN0LCBA
c2VyaWFsUGxhbnMsIFNldC5uZXcsIG5pbCkKKyAgICBlbmQKKyAgICBkZWYgZXhlY3V0ZVRlc3Rz
KHJlbW90ZUhvc3RzKQorICAgICAgICBydW5UZXN0UnVubmVyKEB0ZXN0UnVubmVyLCBuaWwsIG5p
bCkKKyAgICAgICAgY2xlYW5FbXB0eVJlc3VsdEZpbGVzCisgICAgZW5kCisgICAgZGVmIHVwZGF0
ZVN0YXR1c01hcChpdGVyYXRpb24sIHN0YXR1c01hcCkKKyAgICAgICAgcmV0dXJuIGdldFN0YXR1
c01hcChzdGF0dXNNYXApCisgICAgZW5kCitlbmQKKworY2xhc3MgQnVuZGxlVGVzdHNFeGVjdXRv
ciA8IE5vblJlbW90ZVRlc3RzRXhlY3V0b3IKKyAgICBkZWYgcHJlcGFyZUFydGlmYWN0cyhyZW1v
dGVIb3N0cykKKyAgICAgICAgcmFpc2UgInJlbW90ZUhvc3RzIG5vdCBuaWwiIHVubGVzcyByZW1v
dGVIb3N0cy5uaWw/CisgICAgICAgIGNsZWFuUnVubmVyRGlyZWN0b3J5CisgICAgICAgIGNsZWFu
T2xkUmVzdWx0cworICAgIGVuZAorICAgIGRlZiBleGVjdXRlVGVzdHMocmVtb3RlSG9zdHMpCisg
ICAgICAgIHJ1blRlc3RSdW5uZXIoQHRlc3RSdW5uZXIsIG5pbCwgbmlsKQorICAgICAgICBjbGVh
bkVtcHR5UmVzdWx0RmlsZXMKKyAgICBlbmQKKyAgICBkZWYgdXBkYXRlU3RhdHVzTWFwKGl0ZXJh
dGlvbiwgc3RhdHVzTWFwKQorICAgICAgICByZXR1cm4gZ2V0U3RhdHVzTWFwKHN0YXR1c01hcCkK
KyAgICBlbmQKK2VuZAorCitjbGFzcyBCYXNlUmVtb3RlVGVzdHNFeGVjdXRvciA8IEJhc2VUZXN0
c0V4ZWN1dG9yCisgICAgZGVmIGluaXRpYWxpemUocnVubGlzdCwgc2VyaWFsUGxhbnMsIHJlbW90
ZUhvc3RzLCBpdGVyYXRpb25MaW1pdHMsCisgICAgICAgICAgICAgICAgICAgdHJlYXRGYWlsaW5n
QXNGbGFreSwgdGVzdFJ1bm5lcikKKyAgICAgICAgc3VwZXIocnVubGlzdCwgc2VyaWFsUGxhbnMs
IHJlbW90ZUhvc3RzLCBpdGVyYXRpb25MaW1pdHMsIHRyZWF0RmFpbGluZ0FzRmxha3kpCisgICAg
ICAgIEB0ZXN0UnVubmVyID0gdGVzdFJ1bm5lcgorICAgIGVuZAorICAgIGRlZiB1cGRhdGVTdGF0
dXNNYXAoaXRlcmF0aW9uLCBzdGF0dXNNYXApCisgICAgICAgIHJldHVybiBnZXRTdGF0dXNNYXAo
c3RhdHVzTWFwKQorICAgIGVuZAorZW5kCisKK2NsYXNzIFJlbW90ZVRlc3RzRXhlY3V0b3IgPCBC
YXNlUmVtb3RlVGVzdHNFeGVjdXRvcgorICAgIGRlZiBwcmVwYXJlQXJ0aWZhY3RzKHJlbW90ZUhv
c3RzKQorICAgICAgICByYWlzZSAicmVtb3RlSG9zdHMgbmlsIiBpZiByZW1vdGVIb3N0cy5uaWw/
CisgICAgICAgIHByZXBhcmVCdW5kbGUKKyAgICAgICAgQHRlc3RSdW5uZXIucHJlcGFyZShAcnVu
bGlzdCwgQHNlcmlhbFBsYW5zLCBTZXQubmV3LCByZW1vdGVIb3N0cykKKyAgICAgICAgY29tcHJl
c3NCdW5kbGUKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZUV4ZWN1dGlvbihyZW1vdGVIb3N0cykK
KyAgICAgICAgcmVtb3RlSG9zdHMKKyAgICBlbmQKKyAgICBkZWYgZXhlY3V0ZVRlc3RzKHJlbW90
ZUhvc3RzKQorICAgICAgICBmb3JFYWNoUmVtb3RlKHJlbW90ZUhvc3RzKSB7CisgICAgICAgICAg
ICB8IGluZGV4IHwKKyAgICAgICAgICAgIHJ1blRlc3RSdW5uZXIoQHRlc3RSdW5uZXIsIHJlbW90
ZUhvc3RzLCBpbmRleCkKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIEdudVBhcmFs
bGVsVGVzdHNFeGVjdXRvciA8IEJhc2VSZW1vdGVUZXN0c0V4ZWN1dG9yCisgICAgZGVmIHByZXBh
cmVBcnRpZmFjdHMocmVtb3RlSG9zdHMpCisgICAgICAgIHByZXBhcmVCdW5kbGUKKyAgICAgICAg
QHRlc3RSdW5uZXIucHJlcGFyZShAcnVubGlzdCwgQHNlcmlhbFBsYW5zLCBTZXQubmV3LCByZW1v
dGVIb3N0cykKKyAgICAgICAgY29tcHJlc3NCdW5kbGUKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFy
ZUV4ZWN1dGlvbihyZW1vdGVIb3N0cykKICAgICAgICAgIyBJZiB0aGUgcHJlcGFyYXRvcnkgc3Rl
cHMgZmFpbCwgZHJvcCB0aGUgcmVtb3RlIGhvc3QgZnJvbSBvdXIKICAgICAgICAgIyBsaXN0LiBP
dGhlcndpc2UsIGlmIGl0IGNvbWVzIGJhY2sgb25saW5lIGluIHRoZSBtaWRkbGUgb2YgYW4KICAg
ICAgICAgIyBpdGVyYXRpb24sIHdlJ2xsIHRyeSB0byBydW4gdGVzdCBqb2JzIG9uIGl0LCBwb3Nz
aWJseSB1c2luZwpAQCAtMjc1NSwzMCArMjgzNSw0MyBAQCBkZWYgcnVuR251UGFyYWxsZWwKICAg
ICAgICAgICAgIGdldFJlbW90ZURpcmVjdG9yeUlmTmVlZGVkKHJlbW90ZUhvc3QpCiAgICAgICAg
ICAgICBjb3B5QnVuZGxlVG9SZW1vdGUocmVtb3RlSG9zdCkKICAgICAgICAgfQotICAgICAgICBy
ZW1vdGVIb3N0cyA9IHVucGFja0J1bmRsZUdudVBhcmFsbGVsKHJlbW90ZUhvc3RzKQotICAgICAg
ICBpZiByZW1vdGVIb3N0cy5zaXplID09IDAKLSAgICAgICAgICAgICMgRWl0aGVyIGV2ZXJ5dGhp
bmcgaXMgZG93biwgb3IgZXZlcnl0aGluZyBnb3QKLSAgICAgICAgICAgICMgcmVib290ZWQuIElu
IHRoZSBsYXR0ZXIgY2FzZSwgYWxsb3cgZW5vdWdoIHRpbWUgZm9yIHRoZQotICAgICAgICAgICAg
IyByZW1vdGUgYm9hcmRzIHRvIGJvb3QgdXAsIHRoZW4gcmV0cnkuCi0gICAgICAgICAgICB3YWl0
SW50ZXJ2YWwgPSA2MAotICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJBbGwgcmVtb3RlIGhvc3Rz
IGZhaWxlZCwgcmV0cnlpbmcgYWZ0ZXIgI3t3YWl0SW50ZXJ2YWx9cyIpCi0gICAgICAgICAgICBz
bGVlcCh3YWl0SW50ZXJ2YWwpCi0gICAgICAgICAgICBuZXh0Ci0gICAgICAgIGVuZAotCisgICAg
ICAgIHJldHVybiB1bnBhY2tCdW5kbGVHbnVQYXJhbGxlbChyZW1vdGVIb3N0cykKKyAgICBlbmQK
KyAgICBkZWYgZXhlY3V0ZVRlc3RzKHJlbW90ZUhvc3RzKQogICAgICAgICBydW5HbnVQYXJhbGxl
bFJ1bm5lcihyZW1vdGVIb3N0cywgJHJ1bm5lckRpciArICJzZXJpYWwtdGVzdHMiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7IDpwYXJhbGxlbEpvYnNPbkVhY2hIb3N0ID0+IDF9KQog
ICAgICAgICBydW5HbnVQYXJhbGxlbFJ1bm5lcihyZW1vdGVIb3N0cywgJHJ1bm5lckRpciArICJw
YXJhbGxlbC10ZXN0cyIpCi0gICAgICAgIHN0YXR1c01hcCA9IGdldFN0YXR1c01hcChzdGF0dXNN
YXApCi0gICAgICAgIGNvbXBsZXRlZFRlc3RzID0gZ2V0Q29tcGxldGVkVGVzdHNGcm9tU3RhdHVz
TWFwKHN0YXR1c01hcCkKLSAgICAgICAgYnJlYWsgdW5sZXNzIGNvbXBsZXRlZFRlc3RzLnNpemUg
IT0gJHJ1bmxpc3Quc2l6ZQotICAgICAgICBpZiBjb21wbGV0ZWRUZXN0cy5zaXplID4gJHJ1bmxp
c3Quc2l6ZQotICAgICAgICAgICAgcmFpc2UgIlRlc3QgY291bnQgbWlzbWF0Y2g6ICN7Y29tcGxl
dGVkVGVzdHMuc2l6ZX0gPiAjeyRydW5saXN0LnNpemV9IgotICAgICAgICBlbmQKLSAgICAgICAg
IyBSZWdlbmVyYXRlIHRoZSBsaXN0cyBvZiB0ZXN0cyB0byBydW4KLSAgICAgICAgcHJlcGFyZUdu
dVBhcmFsbGVsVGVzdFJ1bm5lcihjb21wbGV0ZWRUZXN0cykKLSAgICAgICAgJHN0ZGVyci5wdXRz
KCJBZnRlciB0cnkgI3tpdGVyYXRpb24gKyAxfS8je3RyaWVzfTogZ290IHJlc3VsdHMgZm9yICN7
Y29tcGxldGVkVGVzdHMuc2l6ZX0vI3skcnVubGlzdC5zaXplfSB0ZXN0cywgI3tyZW1vdGVIb3N0
cy5zaXplfS8jeyRyZW1vdGVIb3N0cy5zaXplfSBob3N0cyBsaXZlIikKLSAgICB9CisgICAgZW5k
CitlbmQKKworZGVmIHJ1bk5vcm1hbAorICAgIHJhaXNlIGlmICRidW5kbGUgb3IgJHRhcmJhbGwK
KworICAgIHRlc3RSdW5uZXIgPSBUZXN0UnVubmVyLmNyZWF0ZSgkdGVzdFJ1bm5lclR5cGUsICRy
dW5uZXJEaXIpCisgICAgZXZhbHVhdG9yID0gTm9ybWFsVGVzdHNFeGVjdXRvci5uZXcoJHJ1bmxp
c3QsICRzZXJpYWxQbGFucywgSVRFUkFUSU9OX0xJTUlUUywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkdHJlYXRGYWlsaW5nQXNGbGFreSwgdGVzdFJ1bm5lcikKKyAg
ICBzdGF0dXNNYXAgPSBldmFsdWF0b3IubG9vcAorICAgIGRldGVjdEZhaWx1cmVzKHN0YXR1c01h
cCkKKworZW5kCisKK2RlZiBydW5SZW1vdGUKKyAgICByYWlzZSB1bmxlc3MgJHJlbW90ZQorCisg
ICAgdGVzdFJ1bm5lciA9IFRlc3RSdW5uZXIuY3JlYXRlKCR0ZXN0UnVubmVyVHlwZSwgJHJ1bm5l
ckRpcikKKyAgICBleGVjdXRvciA9IFJlbW90ZVRlc3RzRXhlY3V0b3IubmV3KCRydW5saXN0LCAk
c2VyaWFsUGxhbnMsICRyZW1vdGVIb3N0cywgSVRFUkFUSU9OX0xJTUlUUywgJHRyZWF0RmFpbGlu
Z0FzRmxha3ksIHRlc3RSdW5uZXIpCisgICAgc3RhdHVzTWFwID0gZXhlY3V0b3IubG9vcAorICAg
IGRldGVjdEZhaWx1cmVzKHN0YXR1c01hcCkKK2VuZAorCitkZWYgcnVuR251UGFyYWxsZWwKKyAg
ICByYWlzZSAiQ2FuIG9ubHkgdXNlIC0tZ251LXBhcmFsbGVsLXJ1bm5lciB3aXRoIC0tcmVtb3Rl
KiIgdW5sZXNzICRyZW1vdGUKKyAgICByYWlzZSAiQ2FuIG9ubHkgdXNlIC0tZ251LXBhcmFsbGVs
LXJ1bm5lciB3aXRoIHRoZSBkZWZhdWx0IHdyaXRlciIgdW5sZXNzICR0ZXN0V3JpdGVyID09ICJk
ZWZhdWx0IgorICAgIHRlc3RSdW5uZXIgPSBUZXN0UnVubmVyLmNyZWF0ZSgkdGVzdFJ1bm5lclR5
cGUsICRydW5uZXJEaXIpCisgICAgZXhlY3V0b3IgPSBHbnVQYXJhbGxlbFRlc3RzRXhlY3V0b3Iu
bmV3KCRydW5saXN0LCAkc2VyaWFsUGxhbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRyZW1vdGVIb3N0cywgSVRFUkFUSU9OX0xJTUlUUywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRyZWF0RmFpbGluZ0FzRmxha3ks
IHRlc3RSdW5uZXIpCisgICAgc3RhdHVzTWFwID0gZXhlY3V0b3IubG9vcAogICAgIGRldGVjdEZh
aWx1cmVzKHN0YXR1c01hcCkKIGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1kZWZhdWx0LnJiIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVmYXVsdC5yYgpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDYxYjcxZGEwMGUxZmRhYzlkZjlkZDI1OWUwYmU2NjA0YzdiNzEz
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1kZWZhdWx0LnJiCisrKyAv
ZGV2L251bGwKQEAgLTEsNDU1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLWRlZiBwcmVmaXhDb21tYW5kKHByZWZpeCkKLSAgICAiYXdrICIgKyBTaGVsbHdv
cmRzLnNoZWxsZXNjYXBlKCJ7IHByaW50ZiAjeyhwcmVmaXggKyAnOiAnKS5pbnNwZWN0fTsgcHJp
bnQgfSIpCi1lbmQKLQotZGVmIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwcmVmaXgpCi0gICAg
cHJlZml4Q29tbWFuZChwcmVmaXgpICsgIiAyPiYxIgotZW5kCi0KLWRlZiBwaXBlQW5kUHJlZml4
Q29tbWFuZChvdXRwdXRGaWxlbmFtZSwgcHJlZml4KQotICAgICJ0ZWUgIiArIFNoZWxsd29yZHMu
c2hlbGxlc2NhcGUob3V0cHV0RmlsZW5hbWUudG9fcykgKyAiIHwgIiArIHByZWZpeENvbW1hbmQo
cHJlZml4KQotZW5kCi0KLSMgT3V0cHV0IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgYXJlIGV4cGVj
dGVkIHRvIGJlIHNpbGVudC4KLWRlZiBzaWxlbnRPdXRwdXRIYW5kbGVyCi0gICAgUHJvYy5uZXcg
ewotICAgICAgICB8IG5hbWUgfAotICAgICAgICBwaXBlQW5kUHJlZml4Q29tbWFuZCgoUGF0aG5h
bWUoIi4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3MsIG5hbWUpCi0gICAgfQotZW5kCi0KLSMg
T3V0cHV0IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIHByb2R1Y2UgbWVh
bmluZ2Z1bCBvdXRwdXQuCi1kZWYgbm9pc3lPdXRwdXRIYW5kbGVyCi0gICAgUHJvYy5uZXcgewot
ICAgICAgICB8IG5hbWUgfAotICAgICAgICAiY2F0ID4gIiArIFNoZWxsd29yZHMuc2hlbGxlc2Nh
cGUoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIpKS50b19zKQotICAgIH0KLWVuZAot
Ci1kZWYgZ2V0QW5kVGVzdEV4aXRDb2RlKHBsYW4sIGNvbmRpdGlvbikKLSAgICA8PC1FT0YKLSAg
ICBpZiB0ZXN0ICIkZXhpdENvZGUiICN7Y29uZGl0aW9ufQotRU9GCi1lbmQKLQotIyBFcnJvciBo
YW5kbGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3RseSB3aGVuIHRoZXkgcmV0dXJuIG5vbi16
ZXJvIGV4aXQgc3RhdHVzLgotIyBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgdGVzdCBpcyBleHBlY3Rl
ZCB0byBmYWlsLgotZGVmIHNpbXBsZUVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAg
ICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRzIGdldEFuZFRlc3RFeGl0Q29kZShw
bGFuLCAiLW5lIDAiKQotICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0
cyAiICAgIChlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogJGV4aXRDb2RlKSB8ICIg
KyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMg
IiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2UiCi0gICAg
ICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAu
cHV0cyAiZmkiCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBm
YWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiB6ZXJvIGV4aXQgc3RhdHVzLgotZGVmIGV4cGVj
dGVkRmFpbEVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFu
IHwKLSAgICAgICAgb3V0cC5wdXRzIGdldEFuZFRlc3RFeGl0Q29kZShwbGFuLCAiLW5lIDAiKQot
ICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFu
LnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZSIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgKGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiAwKSB8ICIgKyByZWRp
cmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAi
ICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImZpIgotICAgIH0KLWVuZAot
Ci0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSBy
ZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMgYW5kIHByb2R1Y2UKLSMgbG90cyBvZiBzcGV3LiBU
aGlzIHdpbGwgZWNobyB0aGF0IHNwZXcgd2hlbiB0aGUgdGVzdCBmYWlscy4KLWRlZiBub2lzeUVy
cm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAg
ICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4i
KSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQotCi0gICAgICAgIG91dHAucHV0cyBnZXRB
bmRUZXN0RXhpdENvZGUocGxhbiwgIi1uZSAwIikKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgot
ICAgICAgICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJS
T1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiAkZXhpdENvZGUpIHwgIiArIHJlZGlyZWN0QW5kUHJl
Zml4Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZh
aWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIg
ICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJmaSIKLSAgICB9
Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGRpZmYgdGhlaXIgb3V0cHV0
IHdpdGggc29tZSBleHBlY3RhdGlvbi4KLWRlZiBkaWZmRXJyb3JIYW5kbGVyKGV4cGVjdGVkRmls
ZW5hbWUpCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBv
dXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsg
KHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCi0gICAgICAgIGRpZmZGaWxlbmFtZSA9IFNoZWxs
d29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIuZGlmZiIp
KS50b19zKQotCi0gICAgICAgIG91dHAucHV0cyBnZXRBbmRUZXN0RXhpdENvZGUocGxhbiwgIi1u
ZSAwIikKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAo
Y2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2Rl
OiAkZXhpdENvZGUpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCi0g
ICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAu
cHV0cyAiZWxpZiB0ZXN0IC1lIC4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZp
bGVuYW1lKX0iCi0gICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIg
ICAgZGlmZiAtLXN0cmlwLXRyYWlsaW5nLWNyIC11IC4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2Fw
ZShleHBlY3RlZEZpbGVuYW1lKX0gI3tvdXRwdXRGaWxlbmFtZX0gPiAje2RpZmZGaWxlbmFtZX0i
Ci0gICAgICAgIG91dHAucHV0cyAiICAgIGlmIFsgJD8gLWVxIDAgXSIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgdGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0Nv
bW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIg
ICAgICAgIChlY2hvIFwiRElGRiBGQUlMVVJFIVwiICYmIGNhdCAje2RpZmZGaWxlbmFtZX0pIHwg
IiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0
cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgIiAgICBm
aSIKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNo
byBcIk5PIEVYUEVDVEFUSU9OIVwiICYmIGNhdCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcmVk
aXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJmaSIKLSAgICB9Ci1lbmQK
LQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9ydCBlcnJvciBieSBzYXlpbmcg
ImZhaWxlZCEiLiBUaGlzIGlzIHVzZWQgYnkgTW96aWxsYQotIyB0ZXN0cy4KLWRlZiBtb3ppbGxh
RXJyb3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAg
ICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIu
LiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCi0KLSAgICAgICAgb3V0cC5wdXRzIGdl
dEFuZFRlc3RFeGl0Q29kZShwbGFuLCAiLW5lIDAiKQotICAgICAgICBvdXRwLnB1dHMgInRoZW4i
Ci0gICAgICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBF
UlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6ICRleGl0Q29kZSkgfCAiICsgcmVkaXJlY3RBbmRQ
cmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4u
ZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbGlmIGdyZXAgLWkgLXEgZmFpbGVkISAj
e291dHB1dEZpbGVuYW1lfSIKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRw
LnB1dHMgIiAgICAoZWNobyBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0cHV0RmlsZW5h
bWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBv
dXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVs
c2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAg
ICAgIG91dHAucHV0cyAiZmkiCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVz
dHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3Rl
ZCB0bwotIyBmYWlsLiBUaGlzIGlzIHVzZWQgYnkgTW96aWxsYSB0ZXN0cy4KLWRlZiBtb3ppbGxh
RmFpbEVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwK
LSAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFt
ZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQotCi0gICAgICAgIG91dHAucHV0
cyBnZXRBbmRUZXN0RXhpdENvZGUocGxhbiwgIi1uZSAwIikKLSAgICAgICAgb3V0cC5wdXRzICJ0
aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAg
ICAgICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7b3V0cHV0RmlsZW5hbWV9
IgotICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBw
bGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZSIKLSAgICAgICAgb3V0
cC5wdXRzICIgICAgKGVjaG8gTk9USUNFOiBZb3UgbWFkZSB0aGlzIHRlc3QgcGFzcywgYnV0IGl0
IHdhcyBleHBlY3RlZCB0byBmYWlsKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxh
bi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAg
ICAgICBvdXRwLnB1dHMgImZpIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRl
c3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIsIGFuZCBhcmUgZXhwZWN0
ZWQgdG8gaGF2ZQotIyBhbiBleGl0IGNvZGUgb2YgMy4KLWRlZiBtb3ppbGxhRXhpdDNFcnJvckhh
bmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91
dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAo
cGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKLQotICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVz
dEV4aXRDb2RlKHBsYW4sICItbmUgMCIpCi0gICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAg
ICAgb3V0cC5wdXRzICIgICAgaWYgWyBcIiRleGl0Q29kZVwiIC1lcSAzIF0iCi0gICAgICAgIG91
dHAucHV0cyAiICAgIHRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICBpZiBncmVwIC1p
IC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCi0gICAgICAgIG91dHAucHV0cyAiICAgICAg
ICB0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgICAgIChlY2hvIERldGVjdGVkIGZh
aWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4
Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICAgICAgIiArIHBs
YW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIGVsc2UiCi0gICAgICAg
IG91dHAucHV0cyAiICAgICAgICAgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICIgICAgICAgIGZpIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBlbHNlIgotICAg
ICAgICBvdXRwLnB1dHMgIiAgICAgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVS
Uk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogJGV4aXRDb2RlKSB8ICIgKyByZWRpcmVjdEFuZFBy
ZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBs
YW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZmkiCi0gICAgICAgIG91dHAu
cHV0cyAiZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1l
fSAmJiBlY2hvIEVSUk9SOiBUZXN0IGV4cGVjdGVkIHRvIGZhaWwsIGJ1dCByZXR1cm5lZCBzdWNj
ZXNzZnVsbHkpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCi0gICAg
ICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0
cyAiZmkiCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBv
cnQgc3VjY2VzcyBieSBzYXlpbmcgIlBhc3NlZCIgb3IgZXJyb3IgYnkgc2F5aW5nICJGQUlMRUQi
LgotIyBUaGlzIGlzIHVzZWQgYnkgQ2hha3JhIHRlc3RzLgotZGVmIGNoYWtyYVBhc3NGYWlsRXJy
b3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAg
ICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIp
ICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCi0KLSAgICAgICAgb3V0cC5wdXRzIGdldEFu
ZFRlc3RFeGl0Q29kZShwbGFuLCAiLW5lIDAiKQotICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0g
ICAgICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJP
UjogVW5leHBlY3RlZCBleGl0IGNvZGU6ICRleGl0Q29kZSkgfCAiICsgcmVkaXJlY3RBbmRQcmVm
aXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFp
bENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbGlmIGdyZXAgLWkgLXEgRkFJTEVEICN7b3V0
cHV0RmlsZW5hbWV9IgotICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0
cyAiICAgIChlY2hvIERldGVjdGVkIGZhaWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0p
IHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCi0gICAgICAgIG91dHAu
cHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZSIK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICJmaSIKLSAgICB9Ci1lbmQKLQotY2xhc3MgUGxhbgotICAgIGF0dHJfcmVhZGVy
IDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpmYW1pbHksIDpuYW1lLCA6b3V0cHV0SGFuZGxlciwg
OmVycm9ySGFuZGxlciwgOmFkZGl0aW9uYWxFbnYKLSAgICBhdHRyX2FjY2Vzc29yIDppbmRleAot
ICAgIAotICAgIGRlZiBpbml0aWFsaXplKGRpcmVjdG9yeSwgYXJndW1lbnRzLCBmYW1pbHksIG5h
bWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlcikKLSAgICAgICAgQGRpcmVjdG9yeSA9IGRp
cmVjdG9yeQotICAgICAgICBAYXJndW1lbnRzID0gYXJndW1lbnRzCi0gICAgICAgIEBmYW1pbHkg
PSBmYW1pbHkKLSAgICAgICAgQG5hbWUgPSBuYW1lCi0gICAgICAgIEBvdXRwdXRIYW5kbGVyID0g
b3V0cHV0SGFuZGxlcgotICAgICAgICBAZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyCi0gICAg
ICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5kT3B0aW9uc1s6aXNTbG93XQotICAgICAgICBAY3Jh
c2hPSyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzpjcmFzaE9LXQotICAgICAgICBpZiBAY3Jhc2hP
SwotICAgICAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBub2lzeU91dHB1dEhhbmRsZXIKLSAgICAg
ICAgZW5kCi0gICAgICAgIEBhZGRpdGlvbmFsRW52ID0gW10KLSAgICBlbmQKLSAgICAKLSAgICBk
ZWYgc2hlbGxDb21tYW5kCi0gICAgICAgICMgSXQncyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhh
dCB0aGUgdGVzdCBpcyBhY3R1YWxseSBydW4gaW4gYSBzdWJzaGVsbCwgc28gaWYgd2UgY2hhbmdl
IGRpcmVjdG9yeQotICAgICAgICAjIGluIHRoZSBzdWJzaGVsbCB3aGVuIHdlIHJldHVybiB3ZSB3
aWxsIGJlIGluIG91ciBvcmlnaW5hbCBkaXJlY3RvcnkuIFRoaXMgaXMgbmljZSBiZWNhdXNlIHdl
IGRvbid0Ci0gICAgICAgICMgaGF2ZSB0byBiZW5kIG92ZXIgYmFja3dhcmRzIHRvIGRvIHRoaW5n
cyByZWxhdGl2ZSB0byB0aGUgcm9vdC4KLSAgICAgICAgc2NyaXB0ID0gIihjZCAuLi8je1NoZWxs
d29yZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9yeS50b19zKX0gJiYgKCIKLSAgICAgICAgKCRlbnZW
YXJzICsgYWRkaXRpb25hbEVudikuZWFjaCB7IHx2YXJ8IHNjcmlwdCArPSAiZXhwb3J0ICIgPDwg
dmFyIDw8ICI7ICIgfQotICAgICAgICBzY3JpcHQgKz0gIlwiJEBcIiAiICsgZXNjYXBlQWxsKEBh
cmd1bWVudHMpICsgIikpIgotICAgICAgICByZXR1cm4gc2NyaXB0Ci0gICAgZW5kCi0gICAgCi0g
ICAgZGVmIHJlcHJvU2NyaXB0Q29tbWFuZAotICAgICAgICAjIFdlIGhhdmUgdG8gZmluZCBvdXIg
d2F5IGJhY2sgdG8gdGhlIC5ydW5uZXIgZGlyZWN0b3J5IHNpbmNlIHRoYXQncyB3aGVyZSBhbGwg
b2YgdGhlIHJlbGF0aXZlCi0gICAgICAgICMgcGF0aHMgYXNzdW1lIHRoZXkgc3RhcnQgb3V0IGZy
b20uCi0gICAgICAgIHNjcmlwdCA9ICJDVVJSRU5UX0RJUj1cIiQoIGNkIFwiJCggZGlybmFtZSBc
IiR7QkFTSF9TT1VSQ0VbMF19XCIgKVwiICYmIHB3ZCApXCJcbiIKLSAgICAgICAgc2NyaXB0ICs9
ICJjZCAkQ1VSUkVOVF9ESVJcbiIKLSAgICAgICAgUGF0aG5hbWUubmV3KEBuYW1lKS5kaXJuYW1l
LmVhY2hfZmlsZW5hbWUgewotICAgICAgICAgICAgfCBwYXRoQ29tcG9uZW50IHwKLSAgICAgICAg
ICAgIHNjcmlwdCArPSAiY2QgLi5cbiIKLSAgICAgICAgfQotICAgICAgICBzY3JpcHQgKz0gImNk
IC5ydW5uZXJcbiIKLQotICAgICAgICBzY3JpcHQgKz0gImV4cG9ydCBEWUxEX0ZSQU1FV09SS19Q
QVRIPSQoY2QgI3skdGVzdGluZ0ZyYW1ld29ya1BhdGguZGlybmFtZX07IHB3ZClcbiIKLSAgICAg
ICAgc2NyaXB0ICs9ICJleHBvcnQgSlNDVEVTVF90aW1lb3V0PSN7U2hlbGx3b3Jkcy5zaGVsbGVz
Y2FwZShFTlZbJ0pTQ1RFU1RfdGltZW91dCddKX1cbiIKLSAgICAgICAgc2NyaXB0ICs9ICJleHBv
cnQgSlNDVEVTVF9oYXJkVGltZW91dD0je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoRU5WWydKU0NU
RVNUX2hhcmRUaW1lb3V0J10pfVxuIgotICAgICAgICBzY3JpcHQgKz0gImV4cG9ydCBKU0NURVNU
X21lbW9yeUxpbWl0PSN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShFTlZbJ0pTQ1RFU1RfbWVtb3J5
TGltaXQnXSl9XG4iCi0gICAgICAgICRlbnZWYXJzLmVhY2ggeyB8dmFyfCBzY3JpcHQgKz0gImV4
cG9ydCAiIDw8IHZhciA8PCAiXG4iIH0KLSAgICAgICAgc2NyaXB0ICs9ICIje3NoZWxsQ29tbWFu
ZH0gfHwgZXhpdCAxIgotICAgICAgICAiZWNobyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoc2Ny
aXB0KX0gPiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lLm5ldygiLi4iKSArIEBu
YW1lKS50b19zKX0iCi0gICAgZW5kCi0KLSAgICBkZWYgc3RhdHVzQ29tbWFuZChzdGF0dXMpCi0g
ICAgICAgICJlY2hvICN7JHJ1blVuaXF1ZUlkfSAkZXhpdENvZGUgI3tzdGF0dXN9ID4gI3tzdGF0
dXNGaWxlfSIKLSAgICBlbmQKLQotICAgIGRlZiBmYWlsQ29tbWFuZAotICAgICAgICAiI3tzdGF0
dXNDb21tYW5kKFNUQVRVU19GSUxFX0ZBSUwpfTsgZWNobyBGQUlMOiAje1NoZWxsd29yZHMuc2hl
bGxlc2NhcGUoQG5hbWUpfTsgIiArIHJlcHJvU2NyaXB0Q29tbWFuZAotICAgIGVuZAotICAgIAot
ICAgIGRlZiBzdWNjZXNzQ29tbWFuZAotICAgICAgICBjb21tYW5kID0gIiIKLSAgICAgICAgZXhl
Y3V0aW9uVGltZU1lc3NhZ2UgPSAiIgotICAgICAgICBpZiAkcmVwb3J0RXhlY3V0aW9uVGltZQot
ICAgICAgICAgICAgZXhlY3V0aW9uVGltZU1lc3NhZ2UgPSAiICQoKCRTRUNPTkRTIC0gJFNUQVJU
X1RJTUUpKXMiCi0gICAgICAgIGVuZAotICAgICAgICBpZiAkcHJvZ3Jlc3NNZXRlciBvciAkcmVw
b3J0RXhlY3V0aW9uVGltZSBvciAkdmVyYm9zaXR5ID49IDIKLSAgICAgICAgICAgIGNvbW1hbmQg
PSAiZWNobyBQQVNTOiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfSN7ZXhlY3V0aW9u
VGltZU1lc3NhZ2V9IgotICAgICAgICBlbmQKLSAgICAgICAgIiN7c3RhdHVzQ29tbWFuZChTVEFU
VVNfRklMRV9QQVNTKX07ICN7Y29tbWFuZH0iCi0gICAgZW5kCi0gICAgCi0gICAgZGVmIHN0YXR1
c0ZpbGUKLSAgICAgICAgIiN7U1RBVFVTX0ZJTEVfUFJFRklYfSN7QGluZGV4fSIKLSAgICBlbmQK
LSAgICAKLSAgICBkZWYgd3JpdGVSdW5TY3JpcHQoZmlsZW5hbWUpCi0gICAgICAgIEZpbGUub3Bl
bihmaWxlbmFtZSwgInciKSB7Ci0gICAgICAgICAgICB8IG91dHAgfAotICAgICAgICAgICAgaWYg
JHJlcG9ydEV4ZWN1dGlvblRpbWUKLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIlNUQVJUX1RJ
TUU9JFNFQ09ORFMiCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgICAgIG91dHAucHV0cyAiZWNo
byBSdW5uaW5nICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9IgotICAgICAgICAgICAg
IwotICAgICAgICAgICAgIyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgICAjIHwgKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAg
IHwKLSAgICAgICAgICAgICMgfCB8ICstLS0tLS0tLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0t
LS0tLS0tKyAgICB8ICAgICAgICAgICAgICAgICAgfAotICAgICAgICAgICAgIyB8IHwgfCBjbWQg
MSAtLS0tPiAxfC0tLT4gfDAgLS0+IG91dEggMSAtLS0+IDR8LT4gNHwtLS0tLS0tLS0tLS0tLS0+
IDF8Ci0gICAgICAgICAgICAjIHwgfCB8ICAgICAyIC8gICAgICB8ICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLSsgICAgfCAgICstLS0tLS0tLS0tLSsgIHwKLSAgICAgICAgICAgICMgfCB8IHxlY2hv
ICQ/IDAgLT4gM3wtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IDF8LT4gfDAgcmVhZCB4cyAg
fCAgfAotICAgICAgICAgICAgIyB8IHwgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICB8ICBleGl0ICR4cyB8ICB8Ci0gICAgICAgICAgICAjIHwgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICstLS0tLS0tLS0t
LSsgIHwKLSAgICAgICAgICAgICMgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfAotICAgICAgICAgICAgIyArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCi0gICAgICAgICAgICAjIEZyb20gdGhlIHRvcCBkb3duIChpLmUuIHJlYWRpbmcgZnJv
bSB0aGUgb3V0ZXIgZXhwcmVzc2lvbiBpbndhcmRzKToKLSAgICAgICAgICAgICMKLSAgICAgICAg
ICAgICMgLSBSZWRpcmVjdCBGRCA0IHRvIG91ciBzdGRvdXQKLSAgICAgICAgICAgICMKLSAgICAg
ICAgICAgICMgLSBCdWlsZCBhIHBpcGUgb2YgdHdvIGNvbW1hbmQgc2VxdWVuY2VzLiBUaGUKLSAg
ICAgICAgICAgICMgICByaWdodC1oYW5kLXNpZGUgc2VxdWVuY2UgcmVhZHMgYSBudW1iZXIgZnJv
bSBzdGRpbiBhbmQKLSAgICAgICAgICAgICMgICBleGl0cyB3aXRoIGl0LiBTaW5jZSBpdCdzIHRo
ZSBsYXN0IGNvbW1hbmQgaW4gdGhlCi0gICAgICAgICAgICAjICAgcGlwZWxpbmUsIHRoaXMgd2ls
bCBiZSB0aGUgdmFsdWUgb2YgJD8gYWZ0ZXIgdGhlCi0gICAgICAgICAgICAjICAgcGlwZWxpbmUg
Y29tcGxldGVzLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAtIEluIHRoZSBsZWZ0LWhh
bmQtc2lkZSBzZXF1ZW5jZSwgcmVkaXJlY3QgRkQgMyB0byBGRCAxLgotICAgICAgICAgICAgIwot
ICAgICAgICAgICAgIyAtIEJ1aWxkIGEgcGlwZSBvZiB0d28gY29tbWFuZHMKLSAgICAgICAgICAg
ICMgICAtIHJ1biBzaGVsbENvbW1hbmQsIHdyaXRpbmcgaXRzIGV4aXQgY29kZSB0byBGRCAzLgot
ICAgICAgICAgICAgIyAgIC0gcnVuIHRoZSBvdXRwdXRIYW5kbGVyLCB3aXRoIGl0cyBzdGRpbiBj
b21pbmcgZnJvbQotICAgICAgICAgICAgIyAgICAgdGhlIHBpcGUsIHJlZGlyZWN0aW5nIGl0cyBv
dXRwdXQgdG8gRkQgNC4gVGhlCi0gICAgICAgICAgICAjICAgICBvdXRwdXRIYW5kbGVyIG5lZWRz
IHRvIGJlIGluIGEgY29tbWFuZCBzZXF1ZW5jZQotICAgICAgICAgICAgIyAgICAgKGkuZS4gaW4g
eyBjbWQ7IC4uLn0pIGFzIGl0IG1heSBkbyBpdHMgb3duCi0gICAgICAgICAgICAjICAgICByZWRp
cmVjdGlvbnMuCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIFdlIGRvIGFsbCB0aGlzCi0g
ICAgICAgICAgICAjIC0gdG8gYXZvaWQgaGF2aW5nIHRvIHVzZSBhIHRlbXBvcmFyeSBmaWxlIGZv
ciB0aGUgZXhpdCBjb2RlCi0gICAgICAgICAgICAjIC0gdG8ga2VlcCB3aXRoaW4gdGhlIGJvdW5k
cyBvZiBQT1NJWCBzaCAoaS5lLiBjYW4ndCB1c2UKLSAgICAgICAgICAgICMgICBQSVBFU1RBVFVT
KQotICAgICAgICAgICAgY21kID0gInsgeyB7IHsgI3tzaGVsbENvbW1hbmR9IDI+JjE7IGVjaG8g
JD8gPiYzOyB9IHwgeyAje291dHB1dEhhbmRsZXIuY2FsbChAbmFtZSl9IDt9ID4mNDsgfSAzPiYx
OyB9IHwgeyByZWFkIHhzOyBleGl0ICR4czsgfSB9IDQ+JjFcbmV4aXRDb2RlPSQ/XG4iCi0gICAg
ICAgICAgICBpZiAkdmVyYm9zaXR5ID49IDMKLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImVj
aG8gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGNtZCl9IgotICAgICAgICAgICAgZW5kCi0gICAg
ICAgICAgICBvdXRwLnB1dHMgY21kCi0gICAgICAgICAgICBAZXJyb3JIYW5kbGVyLmNhbGwob3V0
cCwgc2VsZikKLSAgICAgICAgfQotICAgIGVuZAotZW5kCi0KLWRlZiBwcmVwYXJlU2hlbGxUZXN0
UnVubmVyCi0gICAgRmlsZVV0aWxzLmNwIFNDUklQVFNfUEFUSCArICJqc2Mtc3RyZXNzLXRlc3Qt
aGVscGVycyIgKyAic2hlbGwtcnVubmVyLnNoIiwgJHJ1bm5lckRpciArICJydW5zY3JpcHQiCi1l
bmQKLQotZGVmIG91dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgcHJlcmVxcykKLSAgICBpbmRleCA9
IHBsYW4uaW5kZXgKLSAgICB0YXJnZXQgPSAidGVzdF9kb25lXyN7aW5kZXh9IgotICAgIG91dHAu
cHV0cyAiI3t0YXJnZXR9OiAje3ByZXJlcXMuam9pbigiICIpfSIKLSAgICBvdXRwLnB1dHMgIlx0
c2ggdGVzdF9zY3JpcHRfI3tpbmRleH0iCi0gICAgdGFyZ2V0Ci1lbmQKLQotZGVmIHByZXBhcmVN
YWtlVGVzdFJ1bm5lcihyZW1vdGVJbmRleCkKLSAgICAjIFRoZSBnb2FscyBvZiBvdXIgcGFyYWxs
ZWwgdGVzdCBydW5uZXIgYXJlIHNjYWxhYmlsaXR5IGFuZCBzaW1wbGljaXR5LiBUaGUKLSAgICAj
IHNpbXBsaWNpdHkgcGFydCBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50LiBXZSBkb24ndCB3YW50
IHRvIGhhdmUgdG8gaGF2ZQotICAgICMgYSBmdWxsLXRpbWUgY29udHJpYnV0b3IganVzdCBwaGls
b3NvcGhpc2luZyBhYm91dCBwYXJhbGxlbCB0ZXN0aW5nLgotICAgICMKLSAgICAjIEFzIHN1Y2gs
IHdlIGp1c3QgcGFzcyBvZmYgYWxsIG9mIHRoZSBoYXJkIHdvcmsgdG8gJ21ha2UnLiBUaGlzCi0g
ICAgIyBjcmVhdGVzIGEgZHVtbXkgZGlyZWN0b3J5ICgiJG91dHB1dERpci8ucnVubmVyIikgaW4g
d2hpY2ggd2UKLSAgICAjIGNyZWF0ZSBhIGR1bW15IE1ha2VmaWxlLiBUaGUgTWFrZWZpbGUgaGFz
IGEgJ3BhcmFsbGVsJyBydWxlIHRoYXQKLSAgICAjIGRlcGVuZHMgYWxsIHRlc3RzLCBvdGhlciB0
aGFuIHRoZSBvbmVzIG1hcmtlZCAnc2VyaWFsJy4gVGhlCi0gICAgIyBzZXJpYWwgdGVzdHMgYXJl
IGFycmFuZ2VkIGluIGEgY2hhaW47IHRoZSBsYXN0IHRhcmdldCBpbiB0aGUKLSAgICAjIHNlcmlh
bCBjaGFpbiBkZXBlbmRzIG9uICdwYXJhbGxlbCcgYW5kICdhbGwnIGRlcGVuZHMgb24gdGhlIGhl
YWQKLSAgICAjIG9mIHRoZSBjaGFpbi4gUnVubmluZyAnbWFrZSAtaiA8d2hhdGV2ZXI+JyBvbiB0
aGlzIE1ha2VmaWxlCi0gICAgIyByZXN1bHRzIGluICdtYWtlJyBkb2luZyBhbGwgb2YgdGhlIGhh
cmQgd29yazoKLSAgICAjCi0gICAgIyAtIExvYWQgYmFsYW5jaW5nIGp1c3Qgd29ya3MuIE1vc3Qg
c3lzdGVtcyBoYXZlIGEgZ3JlYXQgbG9hZCBiYWxhbmNlciBpbgotICAgICMgICAnbWFrZScuIElm
IHlvdXIgc3lzdGVtIGRvZXNuJ3QgdGhlbiBqdXN0IGluc3RhbGwgYSByZWFsICdtYWtlJy4KLSAg
ICAjCi0gICAgIyAtIEludGVycnVwdGlvbnMganVzdCB3b3JrLiBGb3IgZXhhbXBsZSBDdHJsLUMg
aGFuZGxpbmcgaW4gJ21ha2UnIGlzCi0gICAgIyAgIGV4YWN0bHkgcmlnaHQuIFlvdSBkb24ndCBo
YXZlIHRvIHdvcnJ5IGFib3V0IHpvbWJpZSBwcm9jZXNzZXMuCi0gICAgIwotICAgICMgV2UgdGhl
biBkbyBzb21lIHRyaWNrcyB0byBtYWtlIGZhaWx1cmUgZGV0ZWN0aW9uIHdvcmsgYW5kIHRvIG1h
a2UgdGhpcwotICAgICMgdG90YWxseSBzb3VuZC4gSWYgYSB0ZXN0IGZhaWxzLCB3ZSBkb24ndCB3
YW50IHRoZSB3aG9sZSAnbWFrZScgam9iIHRvCi0gICAgIyBzdG9wLiBXZSBhbHNvIGRvbid0IGhh
dmUgYW55IGZhY2lsaXR5IGZvciBtYWtlZmlsZS1lc2NhcGluZyBvZiBwYXRoIG5hbWVzLgotICAg
ICMgV2UgZG8gaGF2ZSBzdWNoIGEgdGhpbmcgZm9yIHNoZWxsLWVzY2FwaW5nLCB0aG91Z2guIFdl
IGZpeCBib3RoIHByb2JsZW1zCi0gICAgIyBieSBoYXZpbmcgdGhlIGFjdHVhbCB3b3JrIGZvciBl
YWNoIG9mIHRoZSB0ZXN0IHJ1bGVzIGJlIGRvbmUgaW4gYSBzaGVsbAotICAgICMgc2NyaXB0IG9u
IHRoZSBzaWRlLiBUaGVyZSBpcyBvbmUgc3VjaCBzY3JpcHQgcGVyIHRlc3QuIFRoZSBzY3JpcHQg
cmVzcG9uZHMKLSAgICAjIHRvIGZhaWx1cmUgYnkgcHJpbnRpbmcgc29tZXRoaW5nIG9uIHRoZSBj
b25zb2xlIGFuZCB0aGVuIHRvdWNoaW5nIGEKLSAgICAjIGZhaWx1cmUgZmlsZSBmb3IgdGhhdCB0
ZXN0LCBidXQgdGhlbiBzdGlsbCByZXR1cm5zIDAuIFRoaXMgbWFrZXMgJ21ha2UnCi0gICAgIyBj
b250aW51ZSBwYXN0IHRoYXQgZmFpbHVyZSBhbmQgY29tcGxldGUgYWxsIHRoZSB0ZXN0cyBhbnl3
YXkuCi0gICAgIwotICAgICMgSW4gdGhlIGVuZCwgdGhpcyBzY3JpcHQgY29sbGVjdHMgYWxsIG9m
IHRoZSBmYWlsdXJlcyBieSBzZWFyY2hpbmcgZm9yCi0gICAgIyBmaWxlcyBpbiB0aGUgLnJ1bm5l
ciBkaXJlY3Rvcnkgd2hvc2UgbmFtZSBtYXRjaGVzIC9edGVzdF9mYWlsXy8sIHdoZXJlCi0gICAg
IyB0aGUgdGhpbmcgYWZ0ZXIgdGhlICdmYWlsXycgaXMgdGhlIHRlc3QgaW5kZXguIFRob3NlIGFy
ZSB0aGUgZmlsZXMgdGhhdAotICAgICMgd291bGQgYmUgY3JlYXRlZCBieSB0aGUgdGVzdCBzY3Jp
cHRzIGlmIHRoZXkgZGV0ZWN0IGZhaWx1cmUuIFdlJ3JlCi0gICAgIyBiYXNpY2FsbHkgdXNpbmcg
dGhlIGZpbGVzeXN0ZW0gYXMgYSBjb25jdXJyZW50IGRhdGFiYXNlIG9mIHRlc3QgZmFpbHVyZXMu
Ci0gICAgIyBFdmVuIGlmIHR3byB0ZXN0cyBmYWlsIGF0IHRoZSBzYW1lIHRpbWUsIHNpbmNlIHRo
ZXkncmUgdG91Y2hpbmcgZGlmZmVyZW50Ci0gICAgIyBmaWxlcyB3ZSB3b24ndCBtaXNzIGFueSBm
YWlsdXJlcy4KLSAgICBzZXJpYWxQbGFucyA9IHt9Ci0gICAgJHNlcmlhbFJ1bmxpc3QuZWFjaCB7
IHxwfCBzZXJpYWxQbGFuc1twXSA9IG5pbCB9Ci0gICAgcnVuUGxhbnMgPSBbXQotICAgIHNlcmlh
bFJ1blBsYW5zID0gW10KLSAgICAkcnVubGlzdC5lYWNoIHsKLSAgICAgICAgfCBwbGFuIHwKLSAg
ICAgICAgaWYgISRyZW1vdGUgb3IgcGxhbi5pbmRleCAlICRyZW1vdGVIb3N0cy5sZW5ndGggPT0g
cmVtb3RlSW5kZXgKLSAgICAgICAgICAgIGlmIHNlcmlhbFBsYW5zLmhhc19rZXk/KHBsYW4pCi0g
ICAgICAgICAgICAgICAgc2VyaWFsUnVuUGxhbnMgPDwgcGxhbgotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHJ1blBsYW5zIDw8IHBsYW4KLSAgICAgICAgICAgIGVuZAotICAgICAg
ICBlbmQKLSAgICB9Ci0KLSAgICBGaWxlLm9wZW4oJHJ1bm5lckRpciArICJNYWtlZmlsZS4je3Jl
bW90ZUluZGV4fSIsICJ3IikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBpZiBzZXJpYWxS
dW5QbGFucy5lbXB0eT8KLSAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiBwYXJhbGxlbCIpCi0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlcmlhbFByZXJlcSA9ICJ0ZXN0X2RvbmVfI3tzZXJp
YWxSdW5QbGFuc1stMV0uaW5kZXh9IgotICAgICAgICAgICAgb3V0cC5wdXRzKCJhbGw6ICN7c2Vy
aWFsUHJlcmVxfSIpCi0gICAgICAgICAgICBwcmV2X3RhcmdldCA9ICJwYXJhbGxlbCIKLSAgICAg
ICAgICAgIHNlcmlhbFJ1blBsYW5zLmVhY2ggewotICAgICAgICAgICAgICAgIHwgcGxhbiB8Ci0g
ICAgICAgICAgICAgICAgcHJldl90YXJnZXQgPSBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtw
cmV2X3RhcmdldF0pCi0gICAgICAgICAgICB9Ci0gICAgICAgIGVuZAotICAgICAgICBwYXJhbGxl
bFRhcmdldHMgPSBydW5QbGFucy5jb2xsZWN0IHsKLSAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAg
ICAgICAgICBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtdKQotICAgICAgICB9Ci0gICAgICAg
IG91dHAucHV0cygicGFyYWxsZWw6ICIgKyBwYXJhbGxlbFRhcmdldHMuam9pbigiICIpKQotICAg
IH0KLWVuZAotCi1kZWYgcHJlcGFyZVJ1YnlUZXN0UnVubmVyCi0gICAgRmlsZS5vcGVuKCRydW5u
ZXJEaXIgKyAicnVuc2NyaXB0IiwgInciKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgICRy
dW5saXN0LmVhY2ggewotICAgICAgICAgICAgfCBwbGFuIHwKLSAgICAgICAgICAgIG91dHAucHV0
cyAicHJpbnQgYHNoIHRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0gMj4mMWAiCi0gICAgICAgIH0K
LSAgICB9Ci1lbmQKLQotZGVmIHRlc3RSdW5uZXJDb21tYW5kKHJlbW90ZUluZGV4PTApCi0gICAg
Y2FzZSAkdGVzdFJ1bm5lclR5cGUKLSAgICB3aGVuIDpzaGVsbAotICAgICAgICBjb21tYW5kID0g
InNoIHJ1bnNjcmlwdCIKLSAgICB3aGVuIDptYWtlCi0gICAgICAgIGNvbW1hbmQgPSAibWFrZSAt
aiAjeyRudW1DaGlsZFByb2Nlc3Nlc30gLXMgLWYgTWFrZWZpbGUuI3tyZW1vdGVJbmRleH0iCi0g
ICAgd2hlbiA6cnVieQotICAgICAgICBjb21tYW5kID0gInJ1YnkgcnVuc2NyaXB0IgotICAgIGVs
c2UKLSAgICAgICAgcmFpc2UgIlVua25vd24gdGVzdCBydW5uZXIgdHlwZTogI3skdGVzdFJ1bm5l
clR5cGUudG9fc30iCi0gICAgZW5kCi0gICAgcmV0dXJuIGNvbW1hbmQKLWVuZApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItcGxheXN0
YXRpb24ucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRl
ci1wbGF5c3RhdGlvbi5yYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEyYmY0NTU4
YWQ4NTAwYTZlMGE3MDA0Mjc5M2MzOGM0Mjk4ZDRiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVz
cy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5yYgorKysgL2Rldi9udWxsCkBAIC0xLDQyMSArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLXJlcXVpcmUgJ29wZW4z
JwotCi0kaGFzRGlmZiA9IGZhbHNlCi1pZiAoJGhvc3RPUyA9PSAnd2luZG93cycgfHwgJGhvc3RP
UyA9PSAncGxheXN0YXRpb24nKQotICAgIG91dCwgZXJyLCBzdGF0dXMgPSBPcGVuMy5jYXB0dXJl
Mygid2hlcmUiLCAiL3EiLCAiZGlmZiIpCi0gICAgJGhhc0RpZmYgPSBzdGF0dXMuc3VjY2Vzcz8K
LWVsc2UKLSAgICBvdXQsIGVyciwgc3RhdHVzID0gT3BlbjMuY2FwdHVyZTMoIndoaWNoIiwgImRp
ZmYiKQotICAgICRoYXNEaWZmID0gc3RhdHVzLnN1Y2Nlc3M/Ci1lbmQKLQotIyBQcmVmaXggZWFj
aCBsaW5lIG9mIHN0ciB3aXRoIHRoZSBuYW1lCi1kZWYgcHJlZml4U3RyaW5nKHN0ciwgbmFtZSkK
LSAgICAiI3tzdHJ9LmVtcHR5PyA/IFwiXCIgOiAje3N0cn0uZ3N1YigvXi9tLCBcIiN7bmFtZX06
IFwiKSIKLWVuZAotCi1kZWYgc2lsZW50T3V0cHV0SGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAg
ICAgICAgfCBuYW1lIHwKLSAgICAgICAgPDwtRU5EX1NJTEVOVF9PVVRQVVRfSEFORExFUgotICAg
ICAgICBvdXQgPSBvdXQgKyBlcnIKLSAgICAgICAgZXJyID0gbmlsCi0gICAgICAgIFNURE9VVC5w
dXRzICN7cHJlZml4U3RyaW5nKCJvdXQiLCBuYW1lKX0gaWYgKCFvdXQuZW1wdHk/KQotICAgICAg
ICBGaWxlLm9wZW4oIiN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAo
bmFtZSArICIub3V0IikpLnRvX3MpfSIsICJ3IikgZG8gfG91dF9maWxlfAotICAgICAgICAgICAg
b3V0X2ZpbGUucHV0cyBvdXQKLSAgICAgICAgZW5kCi0gICAgICAgIEVORF9TSUxFTlRfT1VUUFVU
X0hBTkRMRVIKLSAgICB9Ci1lbmQKLQotIyBPdXRwdXQgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBh
cmUgZXhwZWN0ZWQgdG8gcHJvZHVjZSBtZWFuaW5nZnVsIG91dHB1dC4KLWRlZiBub2lzeU91dHB1
dEhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgbmFtZSB8Ci0gICAgICAgIDw8LUVO
RF9OT0lTWV9PVVRQVVRfSEFORExFUgotICAgICAgICBvdXQgPSBvdXQgKyBlcnIKLSAgICAgICAg
ZXJyID0gbmlsCi0gICAgICAgIEZpbGUub3BlbigiI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQ
YXRobmFtZSgiLi4iKSArIChuYW1lICsgIi5vdXQiKSkudG9fcyl9IiwgInciKSBkbyB8b3V0X2Zp
bGV8Ci0gICAgICAgICAgICBvdXRfZmlsZS5wdXRzIG91dAotICAgICAgICBlbmQKLSAgICAgICAg
RU5EX05PSVNZX09VVFBVVF9IQU5ETEVSCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBm
b3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiBub24temVybyBleGl0
IHN0YXR1cy4KLSMgVGhpcyBpcyB1c2VmdWwgd2hlbiBhIHRlc3QgaXMgZXhwZWN0ZWQgdG8gZmFp
bC4KLWRlZiBzaW1wbGVFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0
cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3NcbiIKLSAgICAgICAgb3V0
cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBl
eGl0IGNvZGUgXCN7c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0
cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAi
ZWxzZVxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAot
ICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIg
Zm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gemVybyBleGl0IHN0
YXR1cy4KLWRlZiBleHBlY3RlZEZhaWxFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAg
ICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgc3VjY2Vzc1xuIgotICAg
ICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkVSUk9SOiBVbmV4
cGVjdGVkIGV4aXQgY29kZSAwXFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRw
LnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJl
bHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0g
ICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBm
b3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiBub24temVybyBleGl0
IHN0YXR1cyBhbmQgcHJvZHVjZQotIyBsb3RzIG9mIHNwZXcuIFRoaXMgd2lsbCBlY2hvIHRoYXQg
c3BldyB3aGVuIHRoZSB0ZXN0IGZhaWxzLgotZGVmIG5vaXN5RXJyb3JIYW5kbGVyCi0gICAgUHJv
Yy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwLnB1dHMgImlmICFz
dWNjZXNzXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmco
Im91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIg
KyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1c31c
XG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsg
cGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKLSAgICAgICAgb3V0
cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJl
bmRcbiIKLSAgICB9Ci1lbmQKLQotIGRlZiBmYWxsYmFja0RpZmYoZXhwZWN0ZWQsIG91dHB1dCkK
LSAgICA8PC1FTkRfRkFMTEJBQ0tfRElGRgotICAgICAgICAgIyBGYWxsYmFjayBkaWZmIGZvciB3
aGVuIGRpZmYoMSkgaXNuJ3QgYXZhaWxhYmxlCi0gICAgICAgICBkaWZmcyA9IFtdCi0gICAgICAg
ICBsaW5lX251bWJlciA9IDAKLSAgICAgICAgIEZpbGUub3BlbigiI3tleHBlY3RlZH0iKSBkbyB8
IGV4cGVjdGVkIHwKLSAgICAgICAgICAgICBGaWxlLm9wZW4oIiN7b3V0cHV0fSIpIGRvIHwgYWN0
dWFsIHwKLSAgICAgICAgICAgICAgICAgbG9vcCBkbwotICAgICAgICAgICAgICAgICAgICAgbDEg
PSBleHBlY3RlZC5nZXRzCi0gICAgICAgICAgICAgICAgICAgICBsMiA9IGFjdHVhbC5nZXRzCi0g
ICAgICAgICAgICAgICAgICAgICBpZiAobDEgIT0gbDIpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgZGlmZnMucHVzaChbbGluZV9udW1iZXIsIGwxLCBsMl0pCi0gICAgICAgICAgICAgICAgICAg
ICBlbmQKLSAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyID0gbGluZV9udW1iZXIgKyAx
Ci0gICAgICAgICAgICAgICAgICAgICBicmVhayBpZiAobDEgPT0gbmlsICYmIGwyID09IG5pbCkK
LSAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgZW5kCi0gICAgICAgICBlbmQKLSAg
ICAgICAgIGlzRGlmZmVyZW50ID0gIWRpZmZzLmVtcHR5PwotICAgICAgICAgZGlmZk91dCA9IGRp
ZmZzLm1hcCB7Ci0gICAgICAgICAgICAgfCBkaWZmIHwKLSAgICAgICAgICAgICAiQEAgLVwje2Rp
ZmZbMF19LDEgK1wje2RpZmZbMF19LDEgQEBcXG4iICsKLSAgICAgICAgICAgICAoZGlmZlsxXSA/
ICItXCN7ZGlmZlsxXX0iIDogIiIpICsKLSAgICAgICAgICAgICAoZGlmZlsyXSA/ICIrXCN7ZGlm
ZlsyXX0iIDogIiIpCi0gICAgICAgIH0uam9pbigiIikKLSAgICBFTkRfRkFMTEJBQ0tfRElGRgot
ZW5kCi0KLWRlZiBydW5EaWZmKGV4cGVjdGVkLCBvdXRwdXQpCi0gICAgPDwtRU5EX1JVTl9ESUZG
Ci0gICAgICAgIGRpZmZPdXQsIGRpZmZTdGF0dXMgPSBPcGVuMy5jYXB0dXJlMigiZGlmZiIsCi0g
ICAgICAgICAgICAiLS1zdHJpcC10cmFpbGluZy1jciIsCi0gICAgICAgICAgICAiLXUiLAotICAg
ICAgICAgICAgIiN7ZXhwZWN0ZWR9IiwKLSAgICAgICAgICAgICIje291dHB1dH0iKTsKLSAgICAg
ICAgaXNEaWZmZXJlbnQgPSAhZGlmZlN0YXR1cy5zdWNjZXNzPwotICAgIEVORF9SVU5fRElGRgot
ZW5kCi0KLSMgR2V0IGEgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBmaWxlcywgdXNpbmcgZGlmZiB3
aGVyZSBhdmFpbGFibGUsIGZhbGxpbmcgYmFjawotIyBvbiBhIGxpbWl0ZWQgY29tcGFyaXNvbiB3
aGVuIGRpZmYgaXMgbm90IGF2YWlsYWJsZQotZGVmIGdldERpZmYoZXhwZWN0ZWQsIG91dHB1dCkK
LSAgICBpZiAkaGFzRGlmZgotICAgICAgICBydW5EaWZmKGV4cGVjdGVkLCBvdXRwdXQpCi0gICAg
ZWxzZQotICAgICAgICBmYWxsYmFja0RpZmYoZXhwZWN0ZWQsb3V0cHV0KQotICAgIGVuZAotZW5k
Ci0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBkaWZmIHRoZWlyIG91dHB1dCB3aXRo
IHNvbWUgZXhwZWN0YXRpb24uCi1kZWYgZGlmZkVycm9ySGFuZGxlcihleHBlY3RlZEZpbGVuYW1l
KQotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cHV0
RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFu
Lm5hbWUgKyAiLm91dCIpKS50b19zKQotCi0gICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3Nc
biIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0Iiwg
cGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZp
eFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzfVxcblwiIiwg
cGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENv
bW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNpZiBGaWxlLmV4aXN0cz8oXCIuLi8je1NoZWxs
d29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFtZSl9XCIpXG4iCi0gICAgICAgIG91dHAu
cHV0cyBnZXREaWZmKCIuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFt
ZSl9Iiwgb3V0cHV0RmlsZW5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgIGlmIGlzRGlmZmVy
ZW50XG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICBwcmludCAiICsgcHJlZml4U3RyaW5n
KCJcIkRJRkYgRkFJTFVSRSFcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAu
cHV0cyAiICAgICAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJkaWZmT3V0IiwgcGxhbi5uYW1l
KSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5k
Ci0gICAgICAgIG91dHAucHV0cyAiICAgIGVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgICAg
ICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgIiAgICBlbmQiCi0g
ICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAi
ICsgcHJlZml4U3RyaW5nKCJcIk5PIEVYUEVDVEFUSU9OIVxcblwiIiwgcGxhbi5uYW1lKSArICJc
biIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0Iiwg
cGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENv
bW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbmQiCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFu
ZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIi4gVGhp
cyBpcyB1c2VkIGJ5IE1vemlsbGEKLSMgdGVzdHMuCi1kZWYgbW96aWxsYUVycm9ySGFuZGxlcgot
ICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRz
ICJpZiAhc3VjY2Vzc1xuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4
U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBw
cmludCAiICsgcHJlZml4U3RyaW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSBcI3tz
dGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAg
ICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvZmFpbGVk
IS9pID1+IG91dFxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3Ry
aW5nKCJcIkRldGVjdGVkIGZhaWx1cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAg
ICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1l
KSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAg
ICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFu
LnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICAgfQotZW5kCi0K
LSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJm
YWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0bwotIyBmYWlsLiBUaGlzIGlzIHVzZWQgYnkgTW96
aWxsYSB0ZXN0cy4KLWRlZiBtb3ppbGxhRmFpbEVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsK
LSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2Vzc1xu
IgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAg
ICBvdXRwLnB1dHMgImVsc2lmIC9mYWlsZWQhL2kgPX4gb3V0XG4iCi0gICAgICAgIG91dHAucHV0
cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZVxu
IgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIk5PVElD
RTogWW91IG1hZGUgdGhpcyB0ZXN0IHBhc3MsIGJ1dCBpdCB3YXMgZXhwZWN0ZWQgdG8gZmFpbFxc
blwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4u
ZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIKLSAgICB9Ci1lbmQKLQotIyBF
cnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9ydCBlcnJvciBieSBzYXlpbmcgImZhaWxl
ZCEiLCBhbmQgYXJlIGV4cGVjdGVkIHRvIGhhdmUKLSMgYW4gZXhpdCBjb2RlIG9mIDMuCi1kZWYg
bW96aWxsYUV4aXQzRXJyb3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAs
IHBsYW4gfAotICAgICAgICBvdXRwLnB1dHMgImlmIHN1Y2Nlc3NcbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjog
VGVzdCBleHBlY3RlZCB0byBmYWlsLCBidXQgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5XFxuXCIiLCBw
bGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFp
bENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNpZiBzdGF0dXMgIT0gMyIKLSAgICAgICAg
b3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSAr
ICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJF
UlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6IFwje3N0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkg
KyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAot
ICAgICAgICBvdXRwLnB1dHMgImVsc2lmIC9mYWlsZWQhL2kgPX4gb3V0XG4iCi0gICAgICAgIG91
dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRGV0ZWN0ZWQgZmFpbHVyZXM6
XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAi
ICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1
dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICJlbmRcbiIKLSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0
cyB0aGF0IHJlcG9ydCBzdWNjZXNzIGJ5IHNheWluZyAiUGFzc2VkIiBvciBlcnJvciBieSBzYXlp
bmcgIkZBSUxFRCIuCi0jIFRoaXMgaXMgdXNlZCBieSBDaGFrcmEgdGVzdHMuCi1kZWYgY2hha3Jh
UGFzc0ZhaWxFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxh
biB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3NcbiIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKLSAg
ICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5l
eHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAg
ICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5w
dXRzICJlbHNpZiAvRkFJTEVEL2kgPX4gb3V0XG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHBy
aW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRGV0ZWN0ZWQgZmFpbHVyZXM6XFxuXCIiLCBwbGFuLm5h
bWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5n
KCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxh
bi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbmRc
biIKLSAgIH0KLWVuZAotCi1jbGFzcyBQbGFuCi0gICAgYXR0cl9yZWFkZXIgOmRpcmVjdG9yeSwg
OmFyZ3VtZW50cywgOmZhbWlseSwgOm5hbWUsIDpvdXRwdXRIYW5kbGVyLCA6ZXJyb3JIYW5kbGVy
LCA6YWRkaXRpb25hbEVudgotICAgIGF0dHJfYWNjZXNzb3IgOmluZGV4Ci0KLSAgICBkZWYgaW5p
dGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5kbGVy
LCBlcnJvckhhbmRsZXIpCi0gICAgICAgIEBkaXJlY3RvcnkgPSBkaXJlY3RvcnkKLSAgICAgICAg
QGFyZ3VtZW50cyA9IGFyZ3VtZW50c1sxLi4tMV0KLSAgICAgICAgQGZhbWlseSA9IGZhbWlseQot
ICAgICAgICBAbmFtZSA9IG5hbWUKLSAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRwdXRIYW5k
bGVyCi0gICAgICAgIEBlcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXIKLSAgICAgICAgQGlzU2xv
dyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzppc1Nsb3ddCi0gICAgICAgIEBjcmFzaE9LID0gISEk
cnVuQ29tbWFuZE9wdGlvbnNbOmNyYXNoT0tdCi0gICAgICAgIGlmIEBjcmFzaE9LCi0gICAgICAg
ICAgICBAb3V0cHV0SGFuZGxlciA9IG5vaXN5T3V0cHV0SGFuZGxlcgotICAgICAgICBlbmQKLSAg
ICAgICAgQGFkZGl0aW9uYWxFbnYgPSBbXQotICAgIGVuZAotCi0gICAgZGVmIHNoZWxsQ29tbWFu
ZAotICAgICAgICBuID0gQG5hbWUuZ3N1YigvKFxcfFwvKS8sICdfJykKLSAgICAgICAgc2NyaXB0
ID0gIm91dCA9IG5pbFxuIgotICAgICAgICBzY3JpcHQgKz0gImVyciA9IG5pbFxuIgotICAgICAg
ICBzY3JpcHQgKz0gInN0YXR1cyA9IC0xXG4iOwotICAgICAgICBzY3JpcHQgKz0gInN1Y2Nlc3Mg
PSBmYWxzZVxuIgotICAgICAgICBzY3JpcHQgKz0gIkZpbGUub3BlbihcIiN7bn0tZXhpdFwiLCBc
InJcIikgZG8gfHN0YXR8XG4iOwotICAgICAgICBzY3JpcHQgKz0gIiAgc3RhdHVzID0gc3RhdC5n
ZXRzLnRvX2lcbiIKLSAgICAgICAgc2NyaXB0ICs9ICJlbmRcbiIKLSAgICAgICAgc2NyaXB0ICs9
ICJpZiAoc3RhdHVzID09IDApXG4iCi0gICAgICAgIHNjcmlwdCArPSAiICBzdWNjZXNzID0gdHJ1
ZVxuIgotICAgICAgICBzY3JpcHQgKz0gImVuZFxuIgotCi0gICAgICAgIHNjcmlwdCArPSAib3V0
ID0gRmlsZS5vcGVuKFwiI3tufS1zdGRvdXRcIiwgXCJyXCIpLnJlYWRcbiIKLSAgICAgICAgc2Ny
aXB0ICs9ICJlcnIgPSBGaWxlLm9wZW4oXCIje259LXN0ZGVyclwiLCBcInJcIikucmVhZFxuIgot
ICAgICAgICByZXR1cm4gc2NyaXB0Ci0gICAgZW5kCi0KLSAgICBkZWYgcmVwcm9TY3JpcHRIZWxw
ZXIKLSAgICAgICAgcmV0dXJuICIiCi0gICAgZW5kCi0KLSAgICBkZWYgcmVwcm9TY3JpcHRDb21t
YW5kCi0gICAgICAgIHJldHVybiAiIgotICAgIGVuZAotCi0gICAgZGVmIHN0YXR1c0NvbW1hbmQo
c3RhdHVzX2NvZGUpCi0gICAgICAgICMgTWF5IGJlIGNhbGxlZCBpbiB0aCByZXNjdWUgYmxvY2ss
IHNvIHN0YXR1cyBpcyBub3QKLSAgICAgICAgIyBndWFyYW50ZWVkIHRvIGJlIHNldDsgaWYgaXQg
aXNuJ3QsIHNldCB0aGUgZXhpdCBjb2RlIHRvCi0gICAgICAgICMgc29tZXRoaW5nIHRoYXQncyBj
bGVhcmx5IGludmFsaWQuCi0gICAgICAgIDw8LUVORF9TVEFUVVNfQ09NTUFORAotICAgICAgICAg
IEZpbGUub3BlbigiI3tzdGF0dXNGaWxlfSIsICJ3IikgeyB8ZnwKLSAgICAgICAgICAgICAgZi5w
dXRzKCIjeyRydW5VbmlxdWVJZH0gXCN7c3RhdHVzLm5pbD8gPyA5OTk5OTk5OTkgOiBzdGF0dXN9
ICN7c3RhdHVzX2NvZGV9IikKLSAgICAgICAgICB9Ci0gICAgICAgIEVORF9TVEFUVVNfQ09NTUFO
RAotICAgIGVuZAotCi0gICAgZGVmIGZhaWxDb21tYW5kCi0gICAgICAgIDw8LUVORF9GQUlMX0NP
TU1BTkQKLSAgICAgICAgICAgIHByaW50ICJGQUlMOiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUo
QG5hbWUpfVxuIgotICAgICAgICAgICAgI3tzdGF0dXNDb21tYW5kKFNUQVRVU19GSUxFX0ZBSUwp
fQotICAgICAgICAgICAgI3tyZXByb1NjcmlwdENvbW1hbmR9Ci0gICAgICAgIEVORF9GQUlMX0NP
TU1BTkQKLSAgICBlbmQKLQotICAgIGRlZiBzdWNjZXNzQ29tbWFuZAotICAgICAgICBpZiAkcHJv
Z3Jlc3NNZXRlciBvciAkdmVyYm9zaXR5ID49IDIKLSAgICAgICAgICAgIDw8LUVORF9WRVJCT1NF
X1NVQ0NFU1NfQ09NTUFORAotICAgICAgICAgICAgICAgIHByaW50ICJQQVNTOiAje1NoZWxsd29y
ZHMuc2hlbGxlc2NhcGUoQG5hbWUpfVxuIgotICAgICAgICAgICAgICAgICN7c3RhdHVzQ29tbWFu
ZChTVEFUVVNfRklMRV9QQVNTKX0KLSAgICAgICAgICAgIEVORF9WRVJCT1NFX1NVQ0NFU1NfQ09N
TUFORAotICAgICAgICBlbHNlCi0gICAgICAgICAgICAiI3tzdGF0dXNDb21tYW5kKFNUQVRVU19G
SUxFX1BBU1MpfVxuIgotICAgICAgICBlbmQKLSAgICBlbmQKLQotICAgIGRlZiBzdGF0dXNGaWxl
Ci0gICAgICAgICIje1NUQVRVU19GSUxFX1BSRUZJWH0je0BpbmRleH0iCi0gICAgZW5kCi0KLSAg
ICBkZWYgd3JpdGVSdW5TY3JpcHQoZmlsZW5hbWUpCi0gICAgICAgIGpzb25maWxlcGFydCA9IGZp
bGVuYW1lLmJhc2VuYW1lLnRvX3MgKyAiLmpzb24iCi0gICAgICAgIGpzb25kaXIgPSBmaWxlbmFt
ZS5kaXJuYW1lLnBhcmVudCArICIuanNvbiIKLSAgICAgICAgaWYgKCFqc29uZGlyLmV4aXN0PykK
LSAgICAgICAgICAgIGpzb25kaXIubWtkaXIKLSAgICAgICAgZW5kCi0gICAgICAgIEZpbGUub3Bl
bihqc29uZGlyICsganNvbmZpbGVwYXJ0LCAidyIpIHsKLSAgICAgICAgICAgIHxvdXRwfAotCi0g
ICAgICAgICAgICBiYXNlRGlyID0gKCRydW5uZXJEaXIgKyAiLi4iICsgQGRpcmVjdG9yeSkucmVh
bGRpcnBhdGgKLQotICAgICAgICAgICAgb3V0cC5wdXRzIEpTT04uZ2VuZXJhdGUoewotICAgICAg
ICAgICAgICAgIG5hbWU6IEBuYW1lLAotICAgICAgICAgICAgICAgIG91dHB1dERpcjogJHJ1bm5l
ckRpciwKLSAgICAgICAgICAgICAgICBiYXNlRGlyOiBiYXNlRGlyLAotICAgICAgICAgICAgICAg
IGVudjogJGVudlZhcnMgKyBAYWRkaXRpb25hbEVudiwKLSAgICAgICAgICAgICAgICBvdXRwdXRO
YW1lOiBAbmFtZS5nc3ViKC8oXFx8XC8pLywgJ18nKSwKLSAgICAgICAgICAgICAgICBjaGVja1Nj
cmlwdDogZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgYXJnczogQGFyZ3VtZW50cywKLSAgICAg
ICAgICAgICAgICBzdGF0dXNGaWxlOiAiI3tzdGF0dXNGaWxlfSIsCi0gICAgICAgICAgICB9KQot
ICAgICAgICB9Ci0KLSAgICAgICAgRmlsZS5vcGVuKGZpbGVuYW1lLCAidyIpIHsKLSAgICAgICAg
ICAgIHwgb3V0cCB8Ci0gICAgICAgICAgICAjb3V0cC5wdXRzICJwcmludCBcIlJ1bm5pbmcgI3tT
aGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX1cXG5cIiIKLSAgICAgICAgICAgIG91dHAucHV0
cyAiI3tyZXByb1NjcmlwdEhlbHBlcn0iCi0gICAgICAgICAgICBvdXRwLnB1dHMgImJlZ2luIgot
ICAgICAgICAgICAgb3V0cC5wdXRzICJyZXF1aXJlICdvcGVuMyciCi0gICAgICAgICAgICBvdXRw
LnB1dHMgInJlcXVpcmUgJ2ZpbGV1dGlscyciCi0KLSAgICAgICAgICAgIGNtZCA9IHNoZWxsQ29t
bWFuZAotCi0gICAgICAgICAgICBjbWQgKz0gQG91dHB1dEhhbmRsZXIuY2FsbChAbmFtZSkKLQot
ICAgICAgICAgICAgaWYgJHZlcmJvc2l0eSA+PSAzCi0gICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICJwcmludCBcIiN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShjbWQpfVxcblwiIgotICAgICAgICAg
ICAgZW5kCi0gICAgICAgICAgICBvdXRwLnB1dHMgY21kCi0gICAgICAgICAgICBAZXJyb3JIYW5k
bGVyLmNhbGwob3V0cCwgc2VsZikKLSAgICAgICAgICAgIG91dHAucHV0cyAicmVzY3VlIFJ1bnRp
bWVFcnJvciA9PiBlIgotICAgICAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgXCJGQUlMOiAj
e1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfVxcblwiIgotICAgICAgICAgICAgb3V0cC5w
dXRzICIgICAgI3tzdGF0dXNDb21tYW5kKFNUQVRVU19GSUxFX0ZBSUwpfSIKLSAgICAgICAgICAg
IG91dHAucHV0cyAiZW5kIgotICAgICAgICB9Ci0gICAgZW5kCi1lbmQKLQotZGVmIHByZXBhcmVQ
bGF5U3RhdGlvblRlc3RSdW5uZXIKLSAgICBGaWxlLm9wZW4oJHJ1bm5lckRpciArICJydW5zY3Jp
cHQiLCAidyIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgJHJ1bmxpc3QuZWFjaCB7Ci0g
ICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgb3V0cC5wdXRzICIuLi8uanNvbi90ZXN0
X3NjcmlwdF8je3BsYW4uaW5kZXh9Lmpzb24iCi0gICAgICAgIH0KLSAgICB9Ci1lbmQKLQotZGVm
IHByZXBhcmVTaGVsbFRlc3RSdW5uZXIKLSAgICBwcmVwYXJlUGxheVN0YXRpb25UZXN0UnVubmVy
Ci1lbmQKLQotZGVmIHByZXBhcmVNYWtlVGVzdFJ1bm5lcihyZW1vdGVJbmRleCkKLSAgICBwcmVw
YXJlUGxheVN0YXRpb25UZXN0UnVubmVyCi1lbmQKLQotZGVmIHByZXBhcmVSdWJ5VGVzdFJ1bm5l
cgotICAgIHByZXBhcmVQbGF5U3RhdGlvblRlc3RSdW5uZXIKLWVuZAotCi1kZWYgdGVzdFJ1bm5l
ckNvbW1hbmQKLSAgICBvcHRpb25zID0gRU5WWyJKU0NURVNUX29wdGlvbnMiXQotCi0gICAgZnNS
b290ID0gJGpzY1BhdGguZGlybmFtZQotICAgIGNvbW1hbmQgPSAiUGxheVN0YXRpb25UZXN0UnVu
bmVyICN7b3B0aW9uc30gLW51bVByb2Nlc3Nlcz0jeyRudW1DaGlsZFByb2Nlc3Nlcy50b19zfSAt
ZXhlPSN7JGpzY1BhdGh9IC1mc3Jvb3Q9I3tmc1Jvb3R9IC0tcnVuVW5pcXVlSWQ9I3skcnVuVW5p
cXVlSWR9IEAjeyRydW5uZXJEaXJ9L3J1bnNjcmlwdCIKLQotICAgIHByaW50IGNvbW1hbmQKLQot
ICAgIHJldHVybiBjb21tYW5kCi1lbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXJ1YnkucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1ydWJ5LnJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3ODg4MTZhZDBjOWYxMGI3Njc1NmI4NzE2NTZmOTQ4YTZmNWIyYjM2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXJ1YnkucmIKKysrIC9kZXYvbnVsbApA
QCAtMSw0NzkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1y
ZXF1aXJlICdvcGVuMycKLQotJGhhc0RpZmYgPSBmYWxzZQotaWYgKCRob3N0T1MgPT0gJ3dpbmRv
d3MnKQotICAgIG91dCwgZXJyLCBzdGF0dXMgPSBPcGVuMy5jYXB0dXJlMygid2hlcmUiLCAiL3Ei
LCAiZGlmZiIpCi0gICAgJGhhc0RpZmYgPSBzdGF0dXMuc3VjY2Vzcz8KLWVsc2UKLSAgICBvdXQs
IGVyciwgc3RhdHVzID0gT3BlbjMuY2FwdHVyZTMoIndoaWNoIiwgImRpZmYiKQotICAgICRoYXNE
aWZmID0gc3RhdHVzLnN1Y2Nlc3M/Ci1lbmQKLQotIyBQcmVmaXggZWFjaCBsaW5lIG9mIHN0ciB3
aXRoIHRoZSBuYW1lCi1kZWYgcHJlZml4U3RyaW5nKHN0ciwgbmFtZSkKLSAgICAiI3tzdHJ9LmVt
cHR5PyA/IFwiXCIgOiAje3N0cn0uZ3N1YigvXi9tLCBcIiN7bmFtZX06IFwiKSIKLWVuZAotCi1k
ZWYgc2lsZW50T3V0cHV0SGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBuYW1lIHwK
LSAgICAgICAgPDwtRU5EX1NJTEVOVF9PVVRQVVRfSEFORExFUgotICAgICAgICBvdXQgPSBvdXQg
KyBlcnIKLSAgICAgICAgZXJyID0gbmlsCi0gICAgICAgIFNURE9VVC5wdXRzICN7cHJlZml4U3Ry
aW5nKCJvdXQiLCBuYW1lKX0gaWYgKCFvdXQuZW1wdHk/KQotICAgICAgICBGaWxlLm9wZW4oIiN7
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0Iikp
LnRvX3MpfSIsICJ3IikgZG8gfG91dF9maWxlfAotICAgICAgICAgICAgb3V0X2ZpbGUucHV0cyBv
dXQKLSAgICAgICAgZW5kCi0gICAgICAgIEVORF9TSUxFTlRfT1VUUFVUX0hBTkRMRVIKLSAgICB9
Ci1lbmQKLQotIyBPdXRwdXQgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8g
cHJvZHVjZSBtZWFuaW5nZnVsIG91dHB1dC4KLWRlZiBub2lzeU91dHB1dEhhbmRsZXIKLSAgICBQ
cm9jLm5ldyB7Ci0gICAgICAgIHwgbmFtZSB8Ci0gICAgICAgIDw8LUVORF9OT0lTWV9PVVRQVVRf
SEFORExFUgotICAgICAgICBvdXQgPSBvdXQgKyBlcnIKLSAgICAgICAgZXJyID0gbmlsCi0gICAg
ICAgIEZpbGUub3BlbigiI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSAr
IChuYW1lICsgIi5vdXQiKSkudG9fcyl9IiwgInciKSBkbyB8b3V0X2ZpbGV8Ci0gICAgICAgICAg
ICBvdXRfZmlsZS5wdXRzIG91dAotICAgICAgICBlbmQKLSAgICAgICAgRU5EX05PSVNZX09VVFBV
VF9IQU5ETEVSCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBm
YWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiBub24temVybyBleGl0IHN0YXR1cy4KLSMgVGhp
cyBpcyB1c2VmdWwgd2hlbiBhIHRlc3QgaXMgZXhwZWN0ZWQgdG8gZmFpbC4KLWRlZiBzaW1wbGVF
cnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAg
ICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3Moc3RhdHVzKVxuIgotICAgICAgICBvdXRwLnB1dHMg
IiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29k
ZSBcI3tzdGF0dXMuZXhpdHN0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAg
IG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1
dHMgImVsc2VcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1h
bmQKLSAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIKLSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5k
bGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3RseSB3aGVuIHRoZXkgcmV0dXJuIHplcm8gZXhp
dCBzdGF0dXMuCi1kZWYgZXhwZWN0ZWRGYWlsRXJyb3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewot
ICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwLnB1dHMgImlmIHN1Y2Nlc3Moc3Rh
dHVzKVxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJc
IkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSAwXFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgot
ICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nl
c3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICAgfQotZW5kCi0KLSMgRXJy
b3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiBu
b24temVybyBleGl0IHN0YXR1cyBhbmQgcHJvZHVjZQotIyBsb3RzIG9mIHNwZXcuIFRoaXMgd2ls
bCBlY2hvIHRoYXQgc3BldyB3aGVuIHRoZSB0ZXN0IGZhaWxzLgotZGVmIG5vaXN5RXJyb3JIYW5k
bGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRw
LnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJp
bnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0
cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBl
eGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgot
ICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nl
c3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICAgfQotZW5kCi0KLSBkZWYg
ZmFsbGJhY2tEaWZmKGV4cGVjdGVkLCBvdXRwdXQpCi0gICAgPDwtRU5EX0ZBTExCQUNLX0RJRkYK
LSAgICAgICAgICMgRmFsbGJhY2sgZGlmZiBmb3Igd2hlbiBkaWZmKDEpIGlzbid0IGF2YWlsYWJs
ZQotICAgICAgICAgZGlmZnMgPSBbXQotICAgICAgICAgbGluZV9udW1iZXIgPSAwCi0gICAgICAg
ICBGaWxlLm9wZW4oIiN7ZXhwZWN0ZWR9IikgZG8gfCBleHBlY3RlZCB8Ci0gICAgICAgICAgICAg
RmlsZS5vcGVuKCIje291dHB1dH0iKSBkbyB8IGFjdHVhbCB8Ci0gICAgICAgICAgICAgICAgIGxv
b3AgZG8KLSAgICAgICAgICAgICAgICAgICAgIGwxID0gZXhwZWN0ZWQuZ2V0cwotICAgICAgICAg
ICAgICAgICAgICAgbDIgPSBhY3R1YWwuZ2V0cwotICAgICAgICAgICAgICAgICAgICAgaWYgKGwx
ICE9IGwyKQotICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZzLnB1c2goW2xpbmVfbnVtYmVy
LCBsMSwgbDJdKQotICAgICAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAg
ICBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyICsgMQotICAgICAgICAgICAgICAgICAgICAgYnJl
YWsgaWYgKGwxID09IG5pbCAmJiBsMiA9PSBuaWwpCi0gICAgICAgICAgICAgICAgIGVuZAotICAg
ICAgICAgICAgIGVuZAotICAgICAgICAgZW5kCi0gICAgICAgICBpc0RpZmZlcmVudCA9ICFkaWZm
cy5lbXB0eT8KLSAgICAgICAgIGRpZmZPdXQgPSBkaWZmcy5tYXAgeyAKLSAgICAgICAgICAgICB8
IGRpZmYgfCAKLSAgICAgICAgICAgICAiQEAgLVwje2RpZmZbMF19LDEgK1wje2RpZmZbMF19LDEg
QEBcXG4iICsKLSAgICAgICAgICAgICAoZGlmZlsxXSA/ICItXCN7ZGlmZlsxXX0iIDogIiIpICsg
Ci0gICAgICAgICAgICAgKGRpZmZbMl0gPyAiK1wje2RpZmZbMl19IiA6ICIiKQotICAgICAgICB9
LmpvaW4oIiIpCi0gICAgRU5EX0ZBTExCQUNLX0RJRkYKLWVuZAotCi1kZWYgcnVuRGlmZihleHBl
Y3RlZCwgb3V0cHV0KQotICAgIDw8LUVORF9SVU5fRElGRgotICAgICAgICBkaWZmT3V0LCBkaWZm
U3RhdHVzID0gT3BlbjMuY2FwdHVyZTIoImRpZmYiLAotICAgICAgICAgICAgIi0tc3RyaXAtdHJh
aWxpbmctY3IiLAotICAgICAgICAgICAgIi11IiwKLSAgICAgICAgICAgICIje2V4cGVjdGVkfSIs
Ci0gICAgICAgICAgICAiI3tvdXRwdXR9Iik7Ci0gICAgICAgIGlzRGlmZmVyZW50ID0gIWRpZmZT
dGF0dXMuc3VjY2Vzcz8KLSAgICBFTkRfUlVOX0RJRkYKLWVuZAotCi0jIEdldCBhIGRpZmZlcmVu
Y2UgYmV0d2VlbiB0d28gZmlsZXMsIHVzaW5nIGRpZmYgd2hlcmUgYXZhaWxhYmxlLCBmYWxsaW5n
IGJhY2sKLSMgb24gYSBsaW1pdGVkIGNvbXBhcmlzb24gd2hlbiBkaWZmIGlzIG5vdCBhdmFpbGFi
bGUKLWRlZiBnZXREaWZmKGV4cGVjdGVkLCBvdXRwdXQpCi0gICAgaWYgJGhhc0RpZmYKLSAgICAg
ICAgcnVuRGlmZihleHBlY3RlZCwgb3V0cHV0KQotICAgIGVsc2UKLSAgICAgICAgZmFsbGJhY2tE
aWZmKGV4cGVjdGVkLG91dHB1dCkKLSAgICBlbmQKLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9y
IHRlc3RzIHRoYXQgZGlmZiB0aGVpciBvdXRwdXQgd2l0aCBzb21lIGV4cGVjdGF0aW9uLgotZGVm
IGRpZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRGaWxlbmFtZSkKLSAgICBQcm9jLm5ldyB7Ci0gICAg
ICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5z
aGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykK
LSAgICAgICAgCi0gICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3Moc3RhdHVzKVxuIgotICAg
ICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5h
bWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5n
KCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSBcI3tzdGF0dXMuZXhpdHN0YXR1c31cXG5c
IiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZh
aWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzaWYgRmlsZS5leGlzdHM/KFwiLi4vI3tT
aGVsbHdvcmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVkRmlsZW5hbWUpfVwiKVxuIgotICAgICAgICBv
dXRwLnB1dHMgZ2V0RGlmZigiLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVkRmls
ZW5hbWUpfSIsIG91dHB1dEZpbGVuYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICBpZiBpc0Rp
ZmZlcmVudFxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgcHJpbnQgIiArIHByZWZpeFN0
cmluZygiXCJESUZGIEZBSUxVUkUhXFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBv
dXRwLnB1dHMgIiAgICAgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiZGlmZk91dCIsIHBsYW4u
bmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29t
bWFuZAotICAgICAgICBvdXRwLnB1dHMgIiAgICBlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAg
ICAgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZW5k
IgotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJp
bnQgIiArIHByZWZpeFN0cmluZygiXCJOTyBFWFBFQ1RBVElPTiFcXG5cIiIsIHBsYW4ubmFtZSkg
KyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91
dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZh
aWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5kIgotICAgIH0KLWVuZAotCi0jIEVycm9y
IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIu
IFRoaXMgaXMgdXNlZCBieSBNb3ppbGxhCi0jIHRlc3RzLgotZGVmIG1vemlsbGFFcnJvckhhbmRs
ZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAu
cHV0cyAiaWYgIXN1Y2Nlc3Moc3RhdHVzKVxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmlu
dCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRw
LnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4
aXQgY29kZSBcI3tzdGF0dXMuZXhpdHN0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0g
ICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBv
dXRwLnB1dHMgImVsc2lmIC9mYWlsZWQhL2kgPX4gb3V0XG4iCi0gICAgICAgIG91dHAucHV0cyAi
ICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRGV0ZWN0ZWQgZmFpbHVyZXM6XFxuXCIiLCBw
bGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4
U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAi
ICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKLSAgICAgICAg
b3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRz
ICJlbmRcbiIKLSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJl
cG9ydCBlcnJvciBieSBzYXlpbmcgImZhaWxlZCEiLCBhbmQgYXJlIGV4cGVjdGVkIHRvCi0jIGZh
aWwuIFRoaXMgaXMgdXNlZCBieSBNb3ppbGxhIHRlc3RzLgotZGVmIG1vemlsbGFGYWlsRXJyb3JI
YW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBv
dXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvZmFpbGVk
IS9pID1+IG91dFxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29t
bWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
cHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJOT1RJQ0U6IFlvdSBtYWRlIHRoaXMgdGVzdCBwYXNz
LCBidXQgaXQgd2FzIGV4cGVjdGVkIHRvIGZhaWxcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0g
ICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAu
cHV0cyAiZW5kXG4iCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhh
dCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0byBo
YXZlCi0jIGFuIGV4aXQgY29kZSBvZiAzLgotZGVmIG1vemlsbGFFeGl0M0Vycm9ySGFuZGxlcgot
ICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRz
ICJpZiBzdWNjZXNzKHN0YXR1cylcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiAr
IHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVGVzdCBleHBlY3RlZCB0byBm
YWlsLCBidXQgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgot
ICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICJlbHNpZiBzdGF0dXMuZXhpdHN0YXR1cyAhPSAzIgotICAgICAgICBvdXRwLnB1
dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgot
ICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkVSUk9SOiBV
bmV4cGVjdGVkIGV4aXQgY29kZTogXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxuXCIiLCBwbGFuLm5h
bWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1h
bmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvZmFpbGVkIS9pID1+IG91dFxuIgotICAgICAg
ICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkRldGVjdGVkIGZhaWx1
cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJp
bnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0
cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNl
XG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAg
ICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3Ig
dGVzdHMgdGhhdCByZXBvcnQgc3VjY2VzcyBieSBzYXlpbmcgIlBhc3NlZCIgb3IgZXJyb3IgYnkg
c2F5aW5nICJGQUlMRUQiLgotIyBUaGlzIGlzIHVzZWQgYnkgQ2hha3JhIHRlc3RzLgotZGVmIGNo
YWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAs
IHBsYW4gfAotICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKLSAgICAg
ICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1l
KSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygi
XCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxuXCIi
LCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWls
Q29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2lmIC9GQUlMRUQvaSA9fiBvdXRcbiIKLSAg
ICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJEZXRlY3RlZCBm
YWlsdXJlczpcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAg
IHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAi
ZWxzZVxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAot
ICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgotICAgfQotZW5kCi0KLWNsYXNzIFBsYW4KLSAgICBh
dHRyX3JlYWRlciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRzLCA6ZmFtaWx5LCA6bmFtZSwgOm91dHB1
dEhhbmRsZXIsIDplcnJvckhhbmRsZXIsIDphZGRpdGlvbmFsRW52Ci0gICAgYXR0cl9hY2Nlc3Nv
ciA6aW5kZXgKLSAgICAKLSAgICBkZWYgaW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywg
ZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIpCi0gICAgICAgIEBkaXJl
Y3RvcnkgPSBkaXJlY3RvcnkKLSAgICAgICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50cwotICAgICAg
ICBAZmFtaWx5ID0gZmFtaWx5Ci0gICAgICAgIEBuYW1lID0gbmFtZQotICAgICAgICBAb3V0cHV0
SGFuZGxlciA9IG91dHB1dEhhbmRsZXIKLSAgICAgICAgQGVycm9ySGFuZGxlciA9IGVycm9ySGFu
ZGxlcgotICAgICAgICBAaXNTbG93ID0gISEkcnVuQ29tbWFuZE9wdGlvbnNbOmlzU2xvd10KLSAg
ICAgICAgQGNyYXNoT0sgPSAhISRydW5Db21tYW5kT3B0aW9uc1s6Y3Jhc2hPS10KLSAgICAgICAg
aWYgQGNyYXNoT0sKLSAgICAgICAgICAgIEBvdXRwdXRIYW5kbGVyID0gbm9pc3lPdXRwdXRIYW5k
bGVyCi0gICAgICAgIGVuZAotICAgICAgICBAYWRkaXRpb25hbEVudiA9IFtdCi0gICAgZW5kCi0g
ICAgCi0gICAgZGVmIHNoZWxsQ29tbWFuZCAKLSAgICAgICAgc2NyaXB0ID0gIm91dCA9IG5pbFxu
IgotICAgICAgICBzY3JpcHQgKz0gImVyciA9IG5pbFxuIgotICAgICAgICBzY3JpcHQgKz0gInN0
YXR1cyA9IG5pbFxuIgotICAgICAgICBzY3JpcHQgKz0gIkRpci5jaGRpcihcIi4uLyN7U2hlbGx3
b3Jkcy5zaGVsbGVzY2FwZShAZGlyZWN0b3J5LnRvX3MpfVwiKSBkb1xuIgotICAgICAgICBzY3Jp
cHQgKz0gIiAgZW52ID0ge31cbiIKLSAgICAgICAgKCRlbnZWYXJzICsgYWRkaXRpb25hbEVudiku
ZWFjaCB7Ci0gICAgICAgICAgICB8dmFyfCAKLSAgICAgICAgICAgIChrZXksIHZhbHVlKSA9IHZh
ci5zcGxpdCgvPS8sIDIpCi0gICAgICAgICAgICBzY3JpcHQgKz0gIiAgZW52W1wiI3trZXl9XCJd
ID0gXCIje3ZhbHVlfVwiXG4iCi0gICAgICAgIH0KLSAgICAgICAgc2NyaXB0ICs9ICIgICAgb3V0
LCBlcnIsIHN0YXR1cyA9IE9wZW4zLmNhcHR1cmUzKGVudiwgXG4iCi0gICAgICAgIHNjcmlwdCAr
PSBAYXJndW1lbnRzLm1hcCB7IHwgYXJndW1lbnQgfCAiICAgICAgICBcIiN7YXJndW1lbnR9XCIi
fS5qb2luKCIsXG4iKQotICAgICAgICBzY3JpcHQgKz0gIiAgICApXG4iCi0gICAgICAgIHNjcmlw
dCArPSAiZW5kXG4iCi0gICAgICAgIHJldHVybiBzY3JpcHQKLSAgICBlbmQKLQotICAgIGRlZiBy
ZXByb1NjcmlwdEhlbHBlcgotICAgICAgICBzY3JpcHQgPSAiZGVmIGVycm9yX3NjcmlwdF9jb250
ZW50c1xuIgotICAgICAgICBzY3JpcHQgKz0gIiAgICA8PC1FTkRfT0ZfU0NSSVBUXG4iCi0gICAg
ICAgIHNjcmlwdCArPSAiICAgICAgICByZXF1aXJlICdvcGVuMydcbiIKLSAgICAgICAgc2NyaXB0
ICs9ICIgICAgICAgIGRlZiBzdWNjZXNzKHN0YXR1cylcbiIKLSAgICAgICAgc2NyaXB0ICs9ICIg
ICAgICAgICAgICBzdGF0dXMuc3VjY2Vzcz9cbiIKLSAgICAgICAgc2NyaXB0ICs9ICIgICAgICAg
IGVuZFxuIgotICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgc2NyaXB0X2xvY2F0aW9uID0gRmls
ZS5leHBhbmRfcGF0aChGaWxlLmRpcm5hbWUoX19GSUxFX18pKVxuIgotICAgICAgICBzY3JpcHQg
Kz0gIiAgICAgICAgRGlyLmNoZGlyKFwiXFxcI3tzY3JpcHRfbG9jYXRpb259IgotICAgICAgICBQ
YXRobmFtZS5uZXcoQG5hbWUpLmRpcm5hbWUuZWFjaF9maWxlbmFtZSB7Ci0gICAgICAgICAgICB8
IHBhdGhDb21wb25lbnQgfAotICAgICAgICAgICAgc2NyaXB0ICs9ICIvLi4iCi0gICAgICAgIH0K
LSAgICAgICAgc2NyaXB0ICs9ICIvLnJ1bm5lclwiKSBkb1xuIgotICAgICAgICBzY3JpcHQgKz0g
IiAgICAgICAgICAgIEVOVltcIkRZTERfRlJBTUVXT1JLX1BBVEhcIl0gPSBcIiN7JHRlc3RpbmdG
cmFtZXdvcmtQYXRoLmRpcm5hbWV9XCJcbiIKLSAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAg
ICBFTlZbXCJKU0NURVNUX3RpbWVvdXRcIl0gPSBcIiN7RU5WWydKU0NURVNUX3RpbWVvdXQnXX1c
IlxuIgotICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIEVOVltcIkpTQ1RFU1RfaGFyZFRp
bWVvdXRcIl0gPSBcIiN7RU5WWydKU0NURVNUX2hhcmRUaW1lb3V0J119XCJcbiIKLSAgICAgICAg
c2NyaXB0ICs9ICIgICAgICAgICAgICBFTlZbXCJKU0NURVNUX21lbW9yeUxpbWl0XCJdID0gXCIj
e0VOVlsnSlNDVEVTVF9tZW1vcnlMaW1pdCddfVwiXG4iCi0KLSAgICAgICAgc2NyaXB0ICs9ICIg
ICAgICAgICAgICAje3NoZWxsQ29tbWFuZH0iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICAg
ICAgcHJpbnQgb3V0XG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgaWYgKCFzdWNj
ZXNzKHN0YXR1cykpXG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgICAgIGV4aXQo
MSlcbiIKLSAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICBlbmRcbiIKLSAgICAgICAgc2Ny
aXB0ICs9ICIgICAgICAgIGVuZFxuIgotICAgICAgICBzY3JpcHQgKz0gIiAgICBFTkRfT0ZfU0NS
SVBUXG4iCi0gICAgICAgIHNjcmlwdCArPSAiZW5kXG4iCi0gICAgICAgIHJldHVybiBzY3JpcHQK
LSAgICBlbmQKLSAgICAKLSAgICBkZWYgcmVwcm9TY3JpcHRDb21tYW5kCi0gICAgICAgIDw8LUVO
RF9SRVBST19TQ1JJUFRfQ09NTUFORAotICAgICAgICAgICAgRmlsZS5vcGVuKCIje1NoZWxsd29y
ZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lLm5ldygiLi4iKSArIEBuYW1lKS50b19zKX0iLCAidyIp
IGRvIHxzY3J8Ci0gICAgICAgICAgICAgICAgc2NyLnB1dHMgIlwje2Vycm9yX3NjcmlwdF9jb250
ZW50c30iCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgRU5EX1JFUFJPX1NDUklQVF9DT01NQU5E
Ci0gICAgZW5kCi0KLSAgICBkZWYgc3RhdHVzQ29tbWFuZChzdGF0dXNfY29kZSkKLSAgICAgICAg
IyBNYXkgYmUgY2FsbGVkIGluIHRoIHJlc2N1ZSBibG9jaywgc28gc3RhdHVzIGlzIG5vdAotICAg
ICAgICAjIGd1YXJhbnRlZWQgdG8gYmUgc2V0OyBpZiBpdCBpc24ndCwgc2V0IHRoZSBleGl0IGNv
ZGUgdG8KLSAgICAgICAgIyBzb21ldGhpbmcgdGhhdCdzIGNsZWFybHkgaW52YWxpZC4KLSAgICAg
ICAgPDwtRU5EX1NUQVRVU19DT01NQU5ECi0gICAgICAgICAgRmlsZS5vcGVuKCIje3N0YXR1c0Zp
bGV9IiwgInciKSB7IHxmfAotICAgICAgICAgICAgICBmLnB1dHMoIiN7JHJ1blVuaXF1ZUlkfSBc
I3tzdGF0dXMubmlsPyA/IDk5OTk5OTk5OSA6IHN0YXR1cy5leGl0c3RhdHVzfSAje3N0YXR1c19j
b2RlfSIpCi0gICAgICAgICAgfQotICAgICAgICBFTkRfU1RBVFVTX0NPTU1BTkQKLSAgICBlbmQK
LQotICAgIGRlZiBmYWlsQ29tbWFuZAotICAgICAgICA8PC1FTkRfRkFJTF9DT01NQU5ECi0gICAg
ICAgICAgICBwcmludCAiRkFJTDogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX1cbiIK
LSAgICAgICAgICAgICN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9GQUlMKX0KLSAgICAgICAg
ICAgICN7cmVwcm9TY3JpcHRDb21tYW5kfQotICAgICAgICBFTkRfRkFJTF9DT01NQU5ECi0gICAg
ZW5kCi0gICAgCi0gICAgZGVmIHN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIGlmICRwcm9ncmVzc01l
dGVyIG9yICR2ZXJib3NpdHkgPj0gMgotICAgICAgICAgICAgPDwtRU5EX1ZFUkJPU0VfU1VDQ0VT
U19DT01NQU5ECi0gICAgICAgICAgICAgICAgcHJpbnQgIlBBU1M6ICN7U2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZShAbmFtZSl9XG4iCi0gICAgICAgICAgICAgICAgI3tzdGF0dXNDb21tYW5kKFNUQVRV
U19GSUxFX1BBU1MpfQotICAgICAgICAgICAgRU5EX1ZFUkJPU0VfU1VDQ0VTU19DT01NQU5ECi0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICIje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfUEFT
Uyl9XG4iCi0gICAgICAgIGVuZAotICAgIGVuZAotICAgIAotICAgIGRlZiBzdGF0dXNGaWxlCi0g
ICAgICAgICIje1NUQVRVU19GSUxFX1BSRUZJWH0je0BpbmRleH0iCi0gICAgZW5kCi0KLSAgICBk
ZWYgd3JpdGVSdW5TY3JpcHQoZmlsZW5hbWUpCi0gICAgICAgIEZpbGUub3BlbihmaWxlbmFtZSwg
InciKSB7Ci0gICAgICAgICAgICB8IG91dHAgfAotICAgICAgICAgICAgb3V0cC5wdXRzICJwcmlu
dCBcIlJ1bm5pbmcgI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX1cXG5cIiIKLSAgICAg
ICAgICAgIG91dHAucHV0cyAiI3tyZXByb1NjcmlwdEhlbHBlcn0iCi0gICAgICAgICAgICBvdXRw
LnB1dHMgImJlZ2luIgotICAgICAgICAgICAgb3V0cC5wdXRzICJyZXF1aXJlICdvcGVuMyciCi0g
ICAgICAgICAgICBvdXRwLnB1dHMgInJlcXVpcmUgJ2ZpbGV1dGlscyciCi0gICAgICAgICAgICBv
dXRwLnB1dHMgImRlZiBzdWNjZXNzKHN0YXR1cykiCi0gICAgICAgICAgICBvdXRwLnB1dHMgIiAg
IHN0YXR1cy5zdWNjZXNzPyIKLSAgICAgICAgICAgIG91dHAucHV0cyAiZW5kIgotCi0gICAgICAg
ICAgICBjbWQgPSBzaGVsbENvbW1hbmQKLQotICAgICAgICAgICAgY21kICs9IEBvdXRwdXRIYW5k
bGVyLmNhbGwoQG5hbWUpCi0KLSAgICAgICAgICAgIGlmICR2ZXJib3NpdHkgPj0gMwotICAgICAg
ICAgICAgICAgIG91dHAucHV0cyAicHJpbnQgXCIje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoY21k
KX1cXG5cIiIKLSAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgb3V0cC5wdXRzIGNtZAotICAg
ICAgICAgICAgQGVycm9ySGFuZGxlci5jYWxsKG91dHAsIHNlbGYpCi0gICAgICAgICAgICBvdXRw
LnB1dHMgInJlc2N1ZSIKLSAgICAgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50IFwiRkFJTDog
I3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX1cXG5cIiIKLSAgICAgICAgICAgIG91dHAu
cHV0cyAiICAgICN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9GQUlMKX0iCi0gICAgICAgICAg
ICBvdXRwLnB1dHMgImVuZCIKLSAgICAgICAgfQotICAgIGVuZAotZW5kCi0KLWRlZiBwcmVwYXJl
U2hlbGxUZXN0UnVubmVyCi0gICAgRmlsZS5vcGVuKCRydW5uZXJEaXIgKyAicnVuc2NyaXB0Iiwg
InciKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgICRydW5saXN0LmVhY2ggewotICAgICAg
ICAgICAgfCBwbGFuIHwKLSAgICAgICAgICAgIG91dHAucHV0cyAicnVieSB0ZXN0X3NjcmlwdF8j
e3BsYW4uaW5kZXh9IgotICAgICAgICB9Ci0gICAgfQotICAgIGBkb3MydW5peCAjeyRydW5uZXJE
aXIgKyAicnVuc2NyaXB0In1gICAgIAotZW5kCi0KLWRlZiBvdXRwdXRfdGFyZ2V0KG91dHAsIHBs
YW4sIHByZXJlcXMpCi0gICAgaW5kZXggPSBwbGFuLmluZGV4Ci0gICAgdGFyZ2V0ID0gInRlc3Rf
ZG9uZV8je2luZGV4fSIKLSAgICBvdXRwLnB1dHMgIiN7dGFyZ2V0fTogI3twcmVyZXFzLmpvaW4o
IiAiKX0iCi0gICAgb3V0cC5wdXRzICJcdHJ1YnkgdGVzdF9zY3JpcHRfI3tpbmRleH0iCi0gICAg
dGFyZ2V0Ci1lbmQKLQotZGVmIHByZXBhcmVNYWtlVGVzdFJ1bm5lcihyZW1vdGVJbmRleCkKLSAg
ICBzZXJpYWxQbGFucyA9IHt9Ci0gICAgJHNlcmlhbFJ1bmxpc3QuZWFjaCB7IHxwfCBzZXJpYWxQ
bGFuc1twXSA9IG5pbCB9Ci0gICAgcnVuUGxhbnMgPSBbXQotICAgIHNlcmlhbFJ1blBsYW5zID0g
W10KLSAgICAkcnVubGlzdC5lYWNoIHsKLSAgICAgICAgfCBwbGFuIHwKLSAgICAgICAgaWYgISRy
ZW1vdGUgb3IgcGxhbi5pbmRleCAlICRyZW1vdGVIb3N0cy5sZW5ndGggPT0gcmVtb3RlSW5kZXgK
LSAgICAgICAgICAgIGlmIHNlcmlhbFBsYW5zLmhhc19rZXk/KHBsYW4pCi0gICAgICAgICAgICAg
ICAgc2VyaWFsUnVuUGxhbnMgPDwgcGxhbgotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHJ1blBsYW5zIDw8IHBsYW4KLSAgICAgICAgICAgIGVuZAotICAgICAgICBlbmQKLSAgICB9
Ci0KLSAgICBGaWxlLm9wZW4oJHJ1bm5lckRpciArICJNYWtlZmlsZS4je3JlbW90ZUluZGV4fSIs
ICJ3IikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBpZiBzZXJpYWxSdW5QbGFucy5lbXB0
eT8KLSAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiBwYXJhbGxlbCIpCi0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHNlcmlhbFByZXJlcSA9ICJ0ZXN0X2RvbmVfI3tzZXJpYWxSdW5QbGFuc1st
MV0uaW5kZXh9IgotICAgICAgICAgICAgb3V0cC5wdXRzKCJhbGw6ICN7c2VyaWFsUHJlcmVxfSIp
Ci0gICAgICAgICAgICBwcmV2X3RhcmdldCA9ICJwYXJhbGxlbCIKLSAgICAgICAgICAgIHNlcmlh
bFJ1blBsYW5zLmVhY2ggewotICAgICAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAgICAgICAgICAg
ICAgcHJldl90YXJnZXQgPSBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtwcmV2X3RhcmdldF0p
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGVuZAotICAgICAgICBwYXJhbGxlbFRhcmdldHMgPSBy
dW5QbGFucy5jb2xsZWN0IHsKLSAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAgICAgICAgICBvdXRw
dXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtdKQotICAgICAgICB9Ci0gICAgICAgIG91dHAucHV0cygi
cGFyYWxsZWw6ICIgKyBwYXJhbGxlbFRhcmdldHMuam9pbigiICIpKQotICAgIH0KLWVuZAotCi1k
ZWYgcHJlcGFyZVJ1YnlUZXN0UnVubmVyCi0gICAgRmlsZS5vcGVuKCRydW5uZXJEaXIgKyAicnVu
c2NyaXB0IiwgInciKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgICRydW5saXN0LmVhY2gg
ewotICAgICAgICAgICAgfCBwbGFuIHwKLSAgICAgICAgICAgIG91dHAucHV0cyAic3lzdGVtIFwi
cnVieSB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9XCIiCi0gICAgICAgIH0KLSAgICB9Ci1lbmQK
LQotZGVmIHRlc3RSdW5uZXJDb21tYW5kKHJlbW90ZUluZGV4PTApCi0gICAgY2FzZSAkdGVzdFJ1
bm5lclR5cGUKLSAgICB3aGVuIDpzaGVsbAotICAgICAgICBjb21tYW5kID0gInNoIHJ1bnNjcmlw
dCIKLSAgICB3aGVuIDptYWtlCi0gICAgICAgIGNvbW1hbmQgPSAibWFrZSAtaiAjeyRudW1DaGls
ZFByb2Nlc3Nlc30gLXMgLWYgTWFrZWZpbGUuI3tyZW1vdGVJbmRleH0iCi0gICAgd2hlbiA6cnVi
eQotICAgICAgICBjb21tYW5kID0gInJ1YnkgcnVuc2NyaXB0IgotICAgIGVsc2UKLSAgICAgICAg
cmFpc2UgIlVua25vd24gdGVzdCBydW5uZXIgdHlwZTogI3skdGVzdFJ1bm5lclR5cGUudG9fc30i
Ci0gICAgZW5kCi0gICAgcmV0dXJuIGNvbW1hbmQKLWVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC9leGVjdXRvci5yYiBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvZXhlY3V0b3IucmIKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY5
ODI1MDYzNmE4NDU3NzAyOTk1MzhkNDQ2ODY0ZmI4NzdlYmM5ZgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvZXhlY3V0b3IucmIKQEAg
LTAsMCArMSw0MzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgSW1wbGVtZW50cyB0aGUgbWFpbiBsb29wIGZv
ciBleGVjdXRpbmcgdGhlIHRlc3RzIGFuZCBoYW5kbGluZworIyBtaXNzaW5nL211bHRpcGxlIHJl
c3VsdHMgKGJlY2F1c2Ugb2YgaW5mcmFzdHJ1Y3R1cmUgaXNzdWVzKS4gSXQgYWxzbworIyB0YWtl
cyBjYXJlIG9mIG1hcmtpbmcgZmFpbGluZyB0ZXN0cyBhcyBmbGFreSB3aGVuCisjIC0tdHJlYXQt
ZmFpbGluZy1hcy1mbGFreSBpcyBpbiBlZmZlY3QuIEl0J3MgYSBjbGFzcyBzbyB0aGF0IHdlIGNh
bgorIyBlYXNpbHkgaW5zdGFudGlhdGUgYSBzdWJjbGFzcyBmb3IgdGVzdGluZy4KK2NsYXNzIEJh
c2VUZXN0c0V4ZWN1dG9yCisgICAgZGVmIGluaXRpYWxpemUocnVubGlzdCwgc2VyaWFsUGxhbnMs
IHJlbW90ZUhvc3RzLCBpdGVyYXRpb25MaW1pdHMsCisgICAgICAgICAgICAgICAgICAgdHJlYXRG
YWlsaW5nQXNGbGFreSwgbG9nU3RyZWFtPSRzdGRlcnIpCisgICAgICAgIEBydW5saXN0ID0gcnVu
bGlzdAorICAgICAgICBAc2VyaWFsUGxhbnMgPSBzZXJpYWxQbGFucworICAgICAgICBAcmVtb3Rl
SG9zdHMgPSByZW1vdGVIb3N0cworICAgICAgICBAdHJlYXRGYWlsaW5nQXNGbGFreSA9IHRyZWF0
RmFpbGluZ0FzRmxha3kKKyAgICAgICAgQGluZnJhSXRlcmF0aW9uc0Zsb29yID0gaXRlcmF0aW9u
TGltaXRzLmluZnJhSXRlcmF0aW9uc0Zsb29yCisgICAgICAgIEBpdGVyYXRpb25zQ2VpbGluZyA9
IGl0ZXJhdGlvbkxpbWl0cy5pdGVyYXRpb25zQ2VpbGluZworICAgICAgICBpZiBAaXRlcmF0aW9u
c0NlaWxpbmcgPCBAaW5mcmFJdGVyYXRpb25zRmxvb3IKKyAgICAgICAgICAgIHJhaXNlICJpdGVy
YXRpb25zQ2VpbGluZyAoI3tAaXRlcmF0aW9uc0NlaWxpbmd9IDwgQGluZnJhSXRlcmF0aW9uc0Zs
b29yICgje0BpbmZyYUl0ZXJhdGlvbnNGbG9vcn0iCisgICAgICAgIGVuZAorICAgICAgICBAbWF4
SXRlcmF0aW9ucyA9IHNldE1heEl0ZXJhdGlvbnMoaW5pdGlhbE1heEFsbG93ZWRJdGVyYXRpb25z
KHJ1bmxpc3QpKQorICAgICAgICBAbG9nU3RyZWFtID0gbG9nU3RyZWFtCisgICAgZW5kCisgICAg
ZGVmIGxvZyhzKQorICAgICAgICBAbG9nU3RyZWFtLnB1dHMocykgdW5sZXNzIEBsb2dTdHJlYW0u
bmlsPworICAgIGVuZAorICAgIGRlZiByZWZyZXNoRXhlY3V0aW9uKHJ1bmxpc3QsIHNlcmlhbFBs
YW5zLCBjb21wbGV0ZWRUZXN0cykKKyAgICAgICAgcHJlcGFyZVRlc3RSdW5uZXIocnVubGlzdCwg
c2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRlc3RzKQorICAgIGVuZAorICAgIGRlZiBzZXRNYXhJdGVy
YXRpb25zKHZhbHVlKQorICAgICAgICBpZiB2YWx1ZSA+IEBpdGVyYXRpb25zQ2VpbGluZworICAg
ICAgICAgICAgdmFsdWUgPSBAaXRlcmF0aW9uc0NlaWxpbmcKKyAgICAgICAgZW5kCisgICAgICAg
IEBtYXhJdGVyYXRpb25zID0gdmFsdWUKKyAgICBlbmQKKyAgICBkZWYgaXRlcmF0aW9uc0Zvcklu
ZnJhRmFpbHVyZXMKKyAgICAgICAgIyBJZiB3ZSdyZSBydW5uaW5nIHJlbW90ZWx5LCBzY2FsZSB0
aGUgZXh0cmEgaXRlcmF0aW9ucyB0bworICAgICAgICAjIGFjY291bnQgZm9yIGluZnJhc3RydWN0
dXJlIGZhaWx1cmVzIGJ5IHRoZSBudW1iZXIgb2YgaG9zdHMuCisgICAgICAgIG51bVJlbW90ZUhv
c3RzID0gMAorICAgICAgICBpZiBub3QgQHJlbW90ZUhvc3RzLm5pbD8KKyAgICAgICAgICAgIG51
bVJlbW90ZUhvc3RzID0gQHJlbW90ZUhvc3RzLnNpemUgLyAyCisgICAgICAgIGVuZAorICAgICAg
ICBbbnVtUmVtb3RlSG9zdHMsIEBpbmZyYUl0ZXJhdGlvbnNGbG9vcl0ubWF4CisgICAgZW5kCisg
ICAgZGVmIGluaXRpYWxNYXhBbGxvd2VkSXRlcmF0aW9ucyhydW5saXN0KQorICAgICAgICBtYXhU
cmllcyA9IDAKKyAgICAgICAgcnVubGlzdC5lYWNoIHsgfHBsYW58CisgICAgICAgICAgICBuZXh0
IGlmIHBsYW4uZmxha3kubmlsPworICAgICAgICAgICAgaWYgcGxhbi5mbGFreS5tYXhUcmllcyA+
IG1heFRyaWVzCisgICAgICAgICAgICAgICAgbWF4VHJpZXMgPSBwbGFuLmZsYWt5Lm1heFRyaWVz
CisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICAjIFRoZSBudW1iZXIgb2YgYWxs
b3dlZCBpdGVyYXRpb25zIGlzIHRoZSBzdW0gb2YKKyAgICAgICAgIyBpdGVyYXRpb25zRm9ySW5m
cmFGYWlsdXJlcyBhbmQgdGhlIG1heCB0aW1lcyB3ZSBydW4gYSB0ZXN0CisgICAgICAgICMgdGhh
dCBhcHBlYXJzIHRvIGJlIGZsYWt5LgorICAgICAgICBpdGVyYXRpb25zRm9ySW5mcmFGYWlsdXJl
cyArIG1heFRyaWVzCisgICAgZW5kCisgICAgZGVmIGFkanVzdEZsYWtpbmVzc0ZvckZhaWxpbmdU
ZXN0cyhpdGVyYXRpb24sIHN0YXR1c01hcCwgZXZhbHVhdG9yKQorICAgICAgICBjb21wbGV0ZWRU
ZXN0cyA9IGV2YWx1YXRvci5jb21wbGV0ZWQKKyAgICAgICAgaWYgQHRyZWF0RmFpbGluZ0FzRmxh
a3kubmlsPworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZFRlc3RzCisgICAgICAgIGVuZAor
CisgICAgICAgICMgSWYgd2UgaGF2ZSBhIGxvdCBvZiBmYWlsaW5nIHRlc3RzLCBpdCdzIGxpa2Vs
eSB0aGF0IHRoZSB0cmVlCisgICAgICAgICMgaXMgYmFkIGFuZCB0aGVyZSdzIG5vIHBvaW50IGlu
IHRyZWF0aW5nIHRoZSBmYWlsdXJlcyBhcworICAgICAgICAjIHBvdGVudGlhbCBmbGFreSB0ZXN0
cy4KKyAgICAgICAgaWYgZXZhbHVhdG9yLnRlc3RzRmFpbGVkLnNpemUgPiBAdHJlYXRGYWlsaW5n
QXNGbGFreS5tYXhGYWlsaW5nCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGVkVGVzdHMKKyAg
ICAgICAgZW5kCisgICAgICAgIGFkanVzdGVkVGVzdHMgPSBTZXQubmV3CisgICAgICAgIGV2YWx1
YXRvci50ZXN0c0ZhaWxlZC5lYWNoIHsgfHBsYW58CisgICAgICAgICAgICBpZiBwbGFuLmZsYWt5
Lm5pbD8KKyAgICAgICAgICAgICAgICBwbGFuLmZsYWt5ID0gRmxha3kubmV3KEB0cmVhdEZhaWxp
bmdBc0ZsYWt5LnBhc3NQZXJjZW50YWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQHRyZWF0RmFpbGluZ0FzRmxha3kubWF4VHJpZXMpCisgICAgICAgICAgICAgICAg
YWRqdXN0ZWRUZXN0cy5hZGQocGxhbikKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAg
ICAgIGlmIGFkanVzdGVkVGVzdHMuc2l6ZSA+IDAKKyAgICAgICAgICAgICMgQWRqdXN0IHRoZSBt
YXhpbXVtIG51bWJlciBvZiB0cmllcyB1cHdhcmRzIGlmIHdlIGp1c3QKKyAgICAgICAgICAgICMg
bWFya2VkIGEgZmFpbGluZyB0ZXN0IGFzIGZsYWt5LiBOb3RlIHRoYXQgaW5mcmFzdHJ1Y3R1cmUK
KyAgICAgICAgICAgICMgaXNzdWVzIG1pZ2h0IGNhdXNlIHRlc3QgZmFpbHVyZXMgdG8gYmUgcmVw
b3J0ZWQgYXQgbGF0ZXIKKyAgICAgICAgICAgICMgaXRlcmF0aW9ucywgc28gd2UgdXNlICgrKSBp
bnN0ZWFkIG9mIChtYXgpLiBUaGlzIGlzIHNhZmUKKyAgICAgICAgICAgICMgYXMgdGhlIG51bWJl
ciBvZiBpdGVyYXRpb25zIGlzIGNhcHBlZCBieQorICAgICAgICAgICAgIyBpdGVyYXRpb25zQ2Vp
bGluZy4KKyAgICAgICAgICAgIG5ld01heEl0ZXJhdGlvbnMgPSBAbWF4SXRlcmF0aW9ucyArIEB0
cmVhdEZhaWxpbmdBc0ZsYWt5Lm1heFRyaWVzCisgICAgICAgICAgICBpZiBAbWF4SXRlcmF0aW9u
cyA8IG5ld01heEl0ZXJhdGlvbnMKKyAgICAgICAgICAgICAgICBzZXRNYXhJdGVyYXRpb25zKG5l
d01heEl0ZXJhdGlvbnMpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIHB1dGQoImFkanVz
dEZsYWtpbmVzc0ZvckZhaWxpbmdUZXN0cyAje25ld01heEl0ZXJhdGlvbnN9ICgtPiN7QG1heEl0
ZXJhdGlvbnN9KSAje2FkanVzdGVkVGVzdHMuY29sbGVjdCB7IHxwfCBwLnRvX3MgfX0iKQorICAg
ICAgICBlbmQKKyAgICAgICAgIyBXZSBqdXN0IG1hcmtlZCB0aG9zZSBhcyBmbGFreSBpbiBvcmRl
ciB0byByZXJ1biB0aGVuLCBzbworICAgICAgICAjIHRha2UgdGhlbSBvZmYgdGhlIGNvbXBsZXRl
ZFRlc3RzLgorICAgICAgICByZXQgPSBjb21wbGV0ZWRUZXN0cyAtIGFkanVzdGVkVGVzdHMKKyAg
ICAgICAgcHV0ZCgiY29tcGxldGVkVGVzdHM6ICN7cmV0LmNvbGxlY3QgeyB8cHwgcC50b19zIH19
IikKKyAgICAgICAgcmV0CisgICAgZW5kCisgICAgZGVmIGxvb3AKKyAgICAgICAgcHJlcGFyZUFy
dGlmYWN0cyhAcmVtb3RlSG9zdHMpCisgICAgICAgIHN0YXR1c01hcCA9IHt9CisgICAgICAgICMg
VGhpcyBpcyBhIGhpZ2gtbGV2ZWwgcmV0cnkgbG9vcC4gSWYgYSByZW1vdGUgaG9zdCBnb2VzIGF3
YXkgaW4KKyAgICAgICAgIyB0aGUgbWlkZGxlIG9mIGEgcnVuIGFuZCBlaXRoZXIgZG9lc24ndCBj
b21lIGJhY2sgb25saW5lIG9yIGNvbWVzCisgICAgICAgICMgYmFjayBoYXZpbmcgcmVtb3ZlZCB0
aGUgcmVtb3RlIGRpcmVjdG9yeSAoKiksIGdldFN0YXR1c01hcCB3aWxsIGJlCisgICAgICAgICMg
bWlzc2luZyByZXN1bHRzIGZvciB0aGVzZSB0ZXN0cywgYWxsb3dpbmcgdXMgdG8gcmV0cnkgdGhl
bSBpbgorICAgICAgICAjIHRoZSBuZXh0IGl0ZXJhdGlvbi4KKyAgICAgICAgIworICAgICAgICAj
ICgqKSBUaGlzIG1heSB3ZWxsIGhhcHBlbiB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIG9uIGVtYmVk
ZGVkCisgICAgICAgICMgYm9hcmRzIHRoYXQgcmVndWxhcmx5IGNvcnJ1cHQgdGhlaXIgU0QgY2Fy
ZC4gRGVmaW5pdGVseSBhbiBpc3N1ZQorICAgICAgICAjIGZvciB0aGUgY2kyMCBib2FyZHMgdXNl
ZCB0byB0ZXN0IE1JUFMuCisgICAgICAgIDEwMDAwMC50aW1lcyB7IHxpdGVyYXRpb258CisgICAg
ICAgICAgICBpZiBpdGVyYXRpb24gPj0gQG1heEl0ZXJhdGlvbnMKKyAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAjIEByZW1vdGVIb3N0cyAoYW5kIHRo
ZXJlZm9yZSByZW1vdGVIb3N0cykgd2lsbCBiZSBuaWwKKyAgICAgICAgICAgICMgd2hlbiBub3Qg
ZXhlY3V0aW5nIG9uIHJlbW90ZXMuCisgICAgICAgICAgICByZW1vdGVIb3N0cyA9IHByZXBhcmVF
eGVjdXRpb24oQHJlbW90ZUhvc3RzKQorICAgICAgICAgICAgaWYgcmVtb3RlSG9zdHMgYW5kIHJl
bW90ZUhvc3RzLnNpemUgPT0gMAorICAgICAgICAgICAgICAgICMgRWl0aGVyIGV2ZXJ5dGhpbmcg
aXMgZG93biwgb3IgZXZlcnl0aGluZyBnb3QKKyAgICAgICAgICAgICAgICAjIHJlYm9vdGVkLiBJ
biB0aGUgbGF0dGVyIGNhc2UsIGFsbG93IGVub3VnaCB0aW1lIGZvcgorICAgICAgICAgICAgICAg
ICMgdGhlIHJlbW90ZSBib2FyZHMgdG8gYm9vdCB1cCwgdGhlbiByZXRyeS4KKyAgICAgICAgICAg
ICAgICB3YWl0SW50ZXJ2YWwgPSA2MAorICAgICAgICAgICAgICAgIGxvZygiQWxsIHJlbW90ZSBo
b3N0cyBmYWlsZWQsIHJldHJ5aW5nIGFmdGVyICN7d2FpdEludGVydmFsfXMiKQorICAgICAgICAg
ICAgICAgIHNsZWVwKHdhaXRJbnRlcnZhbCkKKyAgICAgICAgICAgICAgICBuZXh0CisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgIGV4ZWN1dGVUZXN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAg
ICAgIHN0YXR1c01hcCA9IHVwZGF0ZVN0YXR1c01hcChpdGVyYXRpb24sIHN0YXR1c01hcCkKKyAg
ICAgICAgICAgIGV2YWx1YXRvciA9IFRlc3RSZXN1bHRFdmFsdWF0b3JTaW1wbGUubmV3KEBydW5s
aXN0LCBzdGF0dXNNYXApCisgICAgICAgICAgICBldmFsdWF0b3IudmlzaXQhCisKKyAgICAgICAg
ICAgIGNvbXBsZXRlZFRlc3RzID0gYWRqdXN0Rmxha2luZXNzRm9yRmFpbGluZ1Rlc3RzKGl0ZXJh
dGlvbiwgc3RhdHVzTWFwLCBldmFsdWF0b3IpCisgICAgICAgICAgICAjIE5COiBldmFsdWF0b3Iu
Y29tcGxldGVkIG1heSBub3cgYmUgb3V0IG9mIGRhdGUsIHdlIG5lZWQKKyAgICAgICAgICAgICMg
dG8gdXNlIGNvbXBsZXRlZFRlc3RzIGluc3RlYWQuCisKKyAgICAgICAgICAgIGJyZWFrIHVubGVz
cyBjb21wbGV0ZWRUZXN0cy5zaXplICE9IEBydW5saXN0LnNpemUKKyAgICAgICAgICAgIGlmIGNv
bXBsZXRlZFRlc3RzLnNpemUgPiBAcnVubGlzdC5zaXplCisgICAgICAgICAgICAgICAgcmFpc2Ug
IlRlc3QgY291bnQgbWlzbWF0Y2g6ICN7Y29tcGxldGVkVGVzdHMuc2l6ZX0gPiAje0BydW5saXN0
LnNpemV9IgorICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICMgUmVnZW5lcmF0ZSB0aGUg
bGlzdHMgb2YgdGVzdHMgdG8gcnVuCisgICAgICAgICAgICByZWZyZXNoRXhlY3V0aW9uKEBydW5s
aXN0LCBAc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRlc3RzKQorCisgICAgICAgICAgICBudW1GbGFr
eSA9IEBydW5saXN0LnNpemUgLSBjb21wbGV0ZWRUZXN0cy5zaXplIC0gZXZhbHVhdG9yLm1pc3Np
bmcuc2l6ZQorICAgICAgICAgICAgdGVzdHNJbmZvID0gImNvbXBsZXRlZCAje2NvbXBsZXRlZFRl
c3RzLnNpemV9LyN7QHJ1bmxpc3Quc2l6ZX0gKCN7bnVtRmxha3l9IGZsYWt5LCAje2V2YWx1YXRv
ci5taXNzaW5nLnNpemV9IG1pc3NpbmcpIgorICAgICAgICAgICAgcmVtb3RlSG9zdHNJbmZvID0g
IiIKKyAgICAgICAgICAgIGlmIHJlbW90ZUhvc3RzCisgICAgICAgICAgICAgICAgcmVtb3RlSG9z
dHNJbmZvID0gIiwgI3tyZW1vdGVIb3N0cy5zaXplfS8je0ByZW1vdGVIb3N0cy5zaXplfSBob3N0
cyBsaXZlIgorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBsb2coIkFmdGVyIHRyeSAje2l0
ZXJhdGlvbiArIDF9LyN7QG1heEl0ZXJhdGlvbnN9OiAje3Rlc3RzSW5mb30je3JlbW90ZUhvc3Rz
SW5mb30iKQorICAgICAgICB9CisgICAgICAgIHN0YXR1c01hcAorICAgIGVuZAorZW5kCisKK21v
ZHVsZSBFeGVjdXRvclNlbGZUZXN0cworICAgIEZpbmFsVGVzdFJlc3VsdCA9IFN0cnVjdC5uZXco
OnJlc3VsdCkKKyAgICBUZXN0UmVzdWx0ID0gU3RydWN0Lm5ldyg6cmVzdWx0cykKKyAgICBJdGVy
YXRpb24gPSBTdHJ1Y3QubmV3KDp0ZXN0UmVzdWx0cykKKyAgICBUZXN0Q2FzZSA9IFN0cnVjdC5u
ZXcoOnRlc3RzV2l0aEZsYWt5LCA6aXRlcmF0aW9ucywgOmV4cGVjdGVkVGVzdFJlc3VsdHMsIDp0
cmVhdEZhaWxpbmdBc0ZsYWt5KQorICAgIE1PQ0tfVEVTVF9GQU1JTFkgPSAiZiIKKyAgICBJVEVS
QVRJT05fTElNSVRTID0gT3BlblN0cnVjdC5uZXcoOmluZnJhSXRlcmF0aW9uc0Zsb29yID0+IDMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDppdGVyYXRpb25zQ2VpbGlu
ZyA9PiA4KQorICAgIGNsYXNzIE1vY2tUZXN0c0V4ZWN1dG9yIDwgQmFzZVRlc3RzRXhlY3V0b3IK
KyAgICAgICAgYXR0cl9yZWFkZXIgOmV4ZWN1dGVkSXRlcmF0aW9ucworICAgICAgICBkZWYgaW5p
dGlhbGl6ZShydW5saXN0LCBpdGVyYXRpb25SZXN1bHRzLCBtYXhJdGVyYXRpb25zQm91bmRzLCB0
cmVhdEZhaWxpbmdBc0ZsYWt5LCBsb2dTdHJlYW0pCisgICAgICAgICAgICBzdXBlcihydW5saXN0
LCBbXSwgbmlsLCBtYXhJdGVyYXRpb25zQm91bmRzLCB0cmVhdEZhaWxpbmdBc0ZsYWt5LCBsb2dT
dHJlYW0pCisgICAgICAgICAgICBAaXRlcmF0aW9uUmVzdWx0cyA9IGl0ZXJhdGlvblJlc3VsdHMK
KyAgICAgICAgICAgIEBleGVjdXRlZEl0ZXJhdGlvbnMgPSAwCisgICAgICAgIGVuZAorICAgICAg
ICBkZWYgcHJlcGFyZUFydGlmYWN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAgZW5kCisgICAgICAg
IGRlZiBwcmVwYXJlRXhlY3V0aW9uKHJlbW90ZUhvc3RzKQorICAgICAgICAgICAgcmVtb3RlSG9z
dHMKKyAgICAgICAgZW5kCisgICAgICAgIGRlZiBleGVjdXRlVGVzdHMocmVtb3RlSG9zdHMpCisg
ICAgICAgIGVuZAorICAgICAgICBkZWYgdXBkYXRlU3RhdHVzTWFwKGl0ZXJhdGlvbiwgc3RhdHVz
TWFwKQorICAgICAgICAgICAgaWYgaXRlcmF0aW9uID49IEBpdGVyYXRpb25SZXN1bHRzLnNpemUK
KyAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlRyeWluZyB0byBleGVjdXRlIGl0ZXJhdGlv
biAje2l0ZXJhdGlvbn0gYnV0IG9ubHkgaGF2ZSAje0BpdGVyYXRpb25SZXN1bHRzLnNpemV9IGl0
ZXJhdGlvbiByZXN1bHRzIGF2YWlsYWJsZSIpCisgICAgICAgICAgICAgICAgcmFpc2UgIlNlbGYg
dGVzdCBlcnJvcjogaW5zdWZmaWNpZW50IGl0ZXJhdGlvbnMiCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgIEBleGVjdXRlZEl0ZXJhdGlvbnMgKz0gMQorICAgICAgICAgICAgQGl0ZXJhdGlv
blJlc3VsdHNbaXRlcmF0aW9uXS5lYWNoIHsgfGl0ZXJhdGlvbnwKKyAgICAgICAgICAgICAgICBp
dGVyYXRpb24uZWFjaF93aXRoX2luZGV4IHsgfHRlc3RSZXN1bHQsIHRlc3RJbmRleHwKKyAgICAg
ICAgICAgICAgICAgICAgaW5kZXggPSBAcnVubGlzdFt0ZXN0SW5kZXhdLmluZGV4CisgICAgICAg
ICAgICAgICAgICAgICMgQmVjYXVzZSBvZiBpbmZyYSBpc3N1ZXMsIGEgdGVzdCBtaWdodCBoYXZl
IG11bHRpcGxlIHJlc3VsdHMuCisgICAgICAgICAgICAgICAgICAgIHRlc3RSZXN1bHQucmVzdWx0
cy5lYWNoIHsgfHJlc3VsdHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSAiLi8je1NU
QVRVU19GSUxFX1BSRUZJWH0je2luZGV4fSAjeyRydW5VbmlxdWVJZH0gMCAje3Jlc3VsdH0iCisg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzU3RhdHVzTGluZShzdGF0dXNNYXAsIGxpbmUp
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBwdXRkKCJzdGF0dXNNYXA6ICN7c3RhdHVzTWFwfSIpCisgICAgICAgICAg
ICBzdGF0dXNNYXAKKyAgICAgICAgZW5kCisgICAgICAgIGRlZiByZWZyZXNoRXhlY3V0aW9uKHJ1
bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRUZXN0cykKKyAgICAgICAgZW5kCisgICAgZW5k
CisKKyAgICBkZWYgRXhlY3V0b3JTZWxmVGVzdHMucnVuCisgICAgICAgIHRyZiA9IFRlc3RSZXN1
bHQubmV3KFtTVEFUVVNfRklMRV9GQUlMXSkKKyAgICAgICAgdHJwID0gVGVzdFJlc3VsdC5uZXco
W1NUQVRVU19GSUxFX1BBU1NdKQorICAgICAgICB0cmUgPSBUZXN0UmVzdWx0Lm5ldyhbXSkKKyAg
ICAgICAgZnRycCA9IEZpbmFsVGVzdFJlc3VsdC5uZXcoU1RBVFVTX0ZJTEVfUEFTUykKKyAgICAg
ICAgZnRyZiA9IEZpbmFsVGVzdFJlc3VsdC5uZXcoU1RBVFVTX0ZJTEVfRkFJTCkKKyAgICAgICAg
ZnRyZSA9IEZpbmFsVGVzdFJlc3VsdC5uZXcobmlsKQorICAgICAgICBbCisgICAgICAgICAgICBU
ZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwgIyAyIHRlc3RzICh0MCwgdDEpLCBuZWl0aGVyIGZsYWt5
CisgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJdGVyYXRpb24ubmV3KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRycCwgIyB0MCBwYXNzZWQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnAsICMgdDEgcGFzc2VkCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cnAsIGZ0cnBdKSwKKyAgICAgICAgICAgIFRl
c3RDYXNlLm5ldyhbbmlsLCBuaWxdLCAjIDIgdGVzdHMgKHQwLCB0MSksIG5laXRoZXIgZmxha3kK
KyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEl0ZXJhdGlvbi5uZXcoW3RycCwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRyZl0pLAorICAgICAgICAgICAgIyAx
IHRlc3QgZ2l2ZXMgbm8gcmVzdWx0LCBuZWVkIGEgc2Vjb25kIGl0ZXJhdGlvbiwgYm90aCBmaW5h
bGx5IHBhc3MKKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9u
Lm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9u
Lm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSksCisgICAgICAgICAgICAjIDEgdGVzdCBmYWls
cywgMSBnaXZlcyBubyByZXN1bHQsIG5lZWQgYSBzZWNvbmQgaXRlcmF0aW9uLCBvbmUgZmluYWxs
eSBwYXNzZXMKKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9u
Lm5ldyhbdHJmLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9u
Lm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFtmdHJmLCBmdHJwXSksCisgICAgICAgICAgICAjIDEgdGVzdCBwYXNz
ZXMsIDEgZ2l2ZXMgbm8gcmVzdWx0LCBuZWVkIGEgc2Vjb25kIGl0ZXJhdGlvbiwgb25lIGZpbmFs
bHkgcGFzc2VzCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlv
bi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlv
bi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBbZnRycCwgZnRyZl0pLAorICAgICAgICAgICAgVGVzdENhc2UubmV3
KFtuaWwsIG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIEZpcnN0IGl0ZXJhdGlvbiBkb2Vzbid0IHByb2R1Y2UgYW55IHJlc3Vs
dHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJl
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZiwgdHJl
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJm
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbZnRyZiwgZnRyZl0pLAorICAgICAgICAgICAgIyBUZXN0IHRoYXQsIHdoZW4gbm8gZmxha2ll
cyBhcmUgcHJlc2VudCwgd2Ugc3RvcCBhdAorICAgICAgICAgICAgIyBpbmZyYUl0ZXJhdGlvbnNG
bG9vciB3aGVuIG5vIHJlc3VsdHMgY29tZSBpbi4KKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhb
bmlsLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtJdGVyYXRpb24ubmV3KFt0cmUs
IHRyZV0pXSAqIElURVJBVElPTl9MSU1JVFMuaW5mcmFJdGVyYXRpb25zRmxvb3IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW2Z0cmUsIGZ0cmVdKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGUg
bWF4SXRlcmF0aW9ucyBhZGp1c3RtZW50IHdvcmtzIGFzIGV4cGVjdGVkIGluCisgICAgICAgICAg
ICAjIHRoZSBwcmVzZW5jZSBvZiBhIHN0YXRpYyBmbGFreS4KKyAgICAgICAgICAgIFRlc3RDYXNl
Lm5ldyhbRmxha3kubmV3KDAuMzksIDQpLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSB3ZSBoYXZlIGEgZmxha3kg
dGVzdCwgdGhlIG1heEl0ZXJhdGlvbnMgZ2V0cyBhZGp1c3RlZCB0bworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIElURVJBVElPTl9MSU1JVFMuaW5mcmFJdGVyYXRpb25zRmxvb3IgICsg
Rmxha3kubWF4VHJpZXMgPSA3LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmUsIHRycF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cnAsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmYsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmUsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmUsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cnAsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW2Z0cnAsIGZ0cnBdKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0
IGEgZmxha3kgY2FuIGZpbmlzaCBlYXJseS4KKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbRmxh
a3kubmV3KDAuNCwgNCksIG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRycF0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRyZV0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRyZV0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cnAsIGZ0
cnBdKSwKKyAgICAgICAgICAgICMgU2FtZSwgd2l0aCBtb3JlIHZhcmlhYmlsaXR5LgorICAgICAg
ICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRyZV0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRycF0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRycF0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRycF0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
W2Z0cnAsIGZ0cnBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3KDpw
YXNzUGVyY2VudGFnZSA9PiAwLjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOm1heFRyaWVzID0+IDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOm1heEZhaWxpbmcgPT4gMykpLAorICAgICAgICAgICAgIyBTYW1lLCB3aXRoIGRpZmZl
cmVudCB2YXJpYWJpbGl0eS4KKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJmXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBPcGVuU3RydWN0Lm5ldyg6cGFzc1BlcmNlbnRhZ2UgPT4gMC40LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhUcmllcyA9PiA2LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhGYWlsaW5nID0+IDMpKSwKKyAgICAg
ICAgICAgICMgVGVzdCB0aGF0IGEgZmxha3kgZm9yIHdoaWNoIG5vdCBlbm91Z2ggcmVzdWx0cyBj
b21lIGluIGlzIG5vdCBtYXJrZWQgYXMgY29tcGxldGVkLgorICAgICAgICAgICAgVGVzdENhc2Uu
bmV3KFtuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RycF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJdGVyYXRpb24ubmV3KFt0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRl
cmF0aW9uLm5ldyhbdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlv
bi5uZXcoW3RyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3
KFt0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJl
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbZnRyZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQ
ZXJjZW50YWdlID0+IDAuNDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOm1heFRyaWVzID0+IDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOm1heEZhaWxpbmcgPT4gMSkpLAorICAgICAgICAgICAgIyBUZXN0IHRoYXQgKHN0YXRpY2Fs
bHkpIGZsYWt5IHRlc3RzIGFyZW4ndCBhZGp1c3RlZAorICAgICAgICAgICAgVGVzdENhc2UubmV3
KFtGbGFreS5uZXcoMC41LCAzKSwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZiwgdHJwXSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZiwgdHJlXSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRy
ZiwgZnRycF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQ
ZXJjZW50YWdlID0+IDAuNywgIyA+IDIvMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDptYXhUcmllcyA9PiA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDptYXhGYWlsaW5nID0+IDMpKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0IHdl
IHJlc3BlY3QgbWF4RmFpbGluZy4KKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWws
IG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmYsIHRyZiwgdHJmXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRyZiwgZnRyZiwgZnRyZl0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQZXJjZW50YWdl
ID0+IDAuNywgIyA+IDIvMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDptYXhUcmllcyA9PiA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDptYXhGYWlsaW5nID0+IDIpKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0IHdlIGhhbHQgYXQg
bWF4SXRlcmF0aW9ucyAoMyArIDUgPSA4KSBpZiBubyByZXN1bHRzIGNvbWUgaW4uCisgICAgICAg
ICAgICBUZXN0Q2FzZS5uZXcoW0ZsYWt5Lm5ldygwLjUsIDUpLCBuaWxdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFtmdHJlLCBmdHJwXSksCisgICAgICAgIF0uZWFjaF93aXRoX2luZGV4IHsK
KyAgICAgICAgICAgIHx0ZXN0Y2FzZSwgdGVzdGNhc2VJbmRleHwKKyAgICAgICAgICAgIHJ1bmxp
c3QgPSBbXQorICAgICAgICAgICAgcHV0ZCgiPT09PiBUZXN0Y2FzZSAje3Rlc3RjYXNlSW5kZXh9
IikKKyAgICAgICAgICAgIHRlc3RjYXNlLnRlc3RzV2l0aEZsYWt5LmVhY2hfd2l0aF9pbmRleCB7
IHxmbGFreSwgaW5kZXh8CisgICAgICAgICAgICAgICAgcGxhbiA9IEJhc2VQbGFuLm1vY2soTU9D
S19URVNUX0ZBTUlMWSwgInQje2luZGV4fSIsIGZsYWt5KQorICAgICAgICAgICAgICAgIHJ1bmxp
c3QgPDwgcGxhbgorICAgICAgICAgICAgfQorICAgICAgICAgICAgcHV0ZCgicnVubGlzdDogI3ty
dW5saXN0LmNvbGxlY3QgeyB8cHwgcC50b19zIH19LCBleHBlY3RlZDogI3t0ZXN0Y2FzZS5leHBl
Y3RlZFRlc3RSZXN1bHRzfSIpCisgICAgICAgICAgICBleGVjdXRvciA9IE1vY2tUZXN0c0V4ZWN1
dG9yLm5ldyhydW5saXN0LCB0ZXN0Y2FzZS5pdGVyYXRpb25zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSVRFUkFUSU9OX0xJTUlUUywgdGVzdGNhc2UudHJl
YXRGYWlsaW5nQXNGbGFreSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICR0ZXN0c0RlYnVnU3RyZWFtKQorICAgICAgICAgICAgc3RhdHVzTWFwID0gZXhlY3V0
b3IubG9vcAorICAgICAgICAgICAgaWYgZXhlY3V0b3IuZXhlY3V0ZWRJdGVyYXRpb25zICE9IHRl
c3RjYXNlLml0ZXJhdGlvbnMuc2l6ZQorICAgICAgICAgICAgICAgICMgVGhlIHRlc3RjYXNlIHNo
b3VsZCBwcm92aWRlIGV4YWN0bHkgYXMgbWFueQorICAgICAgICAgICAgICAgICMgaXRlcmF0aW9u
IHJlc3VsdHMgYXMgbmVlZGVkLgorICAgICAgICAgICAgICAgIHJhaXNlICJFeGVjdXRlZCAje2V4
ZWN1dG9yLmV4ZWN1dGVkSXRlcmF0aW9uc30sICN7dGVzdGNhc2UuaXRlcmF0aW9ucy5zaXplfSBn
aXZlbiIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZXhwZWN0Q29tcGxldGVkID0gU2V0
Lm5ldyhydW5saXN0LnNlbGVjdCB7IHxwbGFufAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm90IHRlc3RjYXNlLmV4cGVjdGVkVGVzdFJlc3VsdHNbcnVubGlzdC5p
bmRleChwbGFuKV0ucmVzdWx0Lm5pbD8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSkKKworICAgICAgICAgICAgZXZhbHVhdG9yID0gVGVzdFJlc3VsdEV2YWx1YXRvclNp
bXBsZS5uZXcocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICAgICAgZXZhbHVhdG9yLnZpc2l0
IQorCisgICAgICAgICAgICB2ZXJpZnlDb21wbGV0ZWRUZXN0c01hdGNoRXhwZWN0ZWQoc3RhdHVz
TWFwLCBldmFsdWF0b3IuY29tcGxldGVkLCBleHBlY3RDb21wbGV0ZWQpCisKKyAgICAgICAgICAg
IHRlc3RjYXNlRmFpbGVkID0gZmFsc2UKKyAgICAgICAgICAgIHJ1bmxpc3QuZWFjaF93aXRoX2lu
ZGV4IHsgfHBsYW4sIGluZGV4fAorICAgICAgICAgICAgICAgIGNhc2UgdGVzdGNhc2UuZXhwZWN0
ZWRUZXN0UmVzdWx0c1tpbmRleF0ucmVzdWx0CisgICAgICAgICAgICAgICAgd2hlbiBuaWwKKyAg
ICAgICAgICAgICAgICAgICAgaWYgZXZhbHVhdG9yLnRlc3RzUGFzc2VkLmluY2x1ZGU/KHBsYW4p
CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9IHRydWUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICRzdGRlcnIucHV0cygiVGVzdCAje2luZGV4fSBzaG91bGQgbm90IGhh
dmUgY29tcGxldGVkIGJ1dCBwYXNzZWQiKQorICAgICAgICAgICAgICAgICAgICBlbHNpZiBldmFs
dWF0b3IudGVzdHNGYWlsZWQuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RjYXNlRmFpbGVkID0gdHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgJHN0ZGVyci5w
dXRzKCJUZXN0ICN7aW5kZXh9IHNob3VsZCBub3QgaGF2ZSBjb21wbGV0ZWQgYnV0IGZhaWxlZCIp
CisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIHdoZW4gU1RBVFVTX0ZJ
TEVfUEFTUworICAgICAgICAgICAgICAgICAgICBpZiBub3QgZXZhbHVhdG9yLnRlc3RzUGFzc2Vk
LmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9
IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICRzdGRlcnIucHV0cygiVGVzdCAje2luZGV4
fSBzaG91bGQgaGF2ZSBwYXNzZWQgYnV0IGRpZG4ndCIpCisgICAgICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgICAgIHdoZW4gU1RBVFVTX0ZJTEVfRkFJTAorICAgICAgICAgICAgICAg
ICAgICBpZiBub3QgZXZhbHVhdG9yLnRlc3RzRmFpbGVkLmluY2x1ZGU/KHBsYW4pCisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9IHRydWUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICRzdGRlcnIucHV0cygiVGVzdCAje2luZGV4fSBzaG91bGQgaGF2ZSBmYWlsZWQgYnV0
IGRpZG4ndCIpCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2UgIkNhbid0IGdldCBoZXJlIgorICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgdGVzdGNhc2VGYWlsZWQKKyAg
ICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoInN0YXR1c01hcCA9ICN7c3RhdHVzTWFwfSIpCisg
ICAgICAgICAgICAgICAgcmFpc2UgIlNlbGYgdGVzdCBmYWlsdXJlIgorICAgICAgICAgICAgZW5k
CisgICAgICAgIH0KKyAgICBlbmQKK2VuZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRydWJ5L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFsdWF0b3IucmIgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3Rlc3QtcmVzdWx0LWV2YWx1YXRvci5y
YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YWNkZmZiZDM1ZGNhMDNkZjRlMjhjODAyMDk1YjAxYzkzYmM2Yzc3Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVz
dC90ZXN0LXJlc3VsdC1ldmFsdWF0b3IucmIKQEAgLTAsMCArMSwyOTMgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDIxIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyMgVmlzaXRzIHRoZSB0ZXN0cyBpbiB0aGUgcnVubGlzdCBhbmQgaW52b2tlcyBhIG51bWJlciBv
ZgorIyBjYWxsYmFja3MuIFVzZWQgdmlhIHN1YmNsYXNzaW5nLgorY2xhc3MgVGVzdFJlc3VsdEV2
YWx1YXRvcgorICAgIGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAg
QHJ1bmxpc3QgPSBydW5saXN0CisgICAgICAgIEBzdGF0dXNNYXAgPSBzdGF0dXNNYXAKKyAgICBl
bmQKKyAgICBkZWYgbm9SZXN1bHQocGxhbikKKyAgICAgICAgIyBYWFg6IG1heWJlIGZvY3VzIG9u
IGluY29tcGxldGUgaW4gcmVwb3J0aW5nPworICAgIGVuZAorICAgIGRlZiBwYXNzZWQocGxhbikK
KyAgICBlbmQKKyAgICBkZWYgZmFpbGVkKHBsYW4pCisgICAgZW5kCisgICAgZGVmIHdhc0ZsYWt5
QW5kUGFzc2VkKHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMpCisgICAgZW5kCisgICAgZGVmIHZpc2l0
aW5nKHBsYW4pCisgICAgZW5kCisgICAgZGVmIHZpc2l0IQorICAgICAgICBAcnVubGlzdC5lYWNo
IHsKKyAgICAgICAgICAgIHxwbGFufAorICAgICAgICAgICAgdmlzaXRpbmcocGxhbikKKyAgICAg
ICAgICAgIGlmIG5vdCBAc3RhdHVzTWFwLmhhc19rZXk/KHBsYW4uaW5kZXgpCisgICAgICAgICAg
ICAgICAgbm9SZXN1bHQocGxhbikKKyAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICBl
bmQKKyAgICAgICAgICAgIHN0YXR1c2VzID0gQHN0YXR1c01hcFtwbGFuLmluZGV4XQorICAgICAg
ICAgICAgdGVzdFdhc1N1Y2Nlc3NmdWwgPSBuaWwKKyAgICAgICAgICAgIGlmIHBsYW4uZmxha3ku
bmlsPworICAgICAgICAgICAgICAgICMgSWYgYW55IG9mIHRoZSByZXN1bHRzIHdlIGdvdCB3YXMg
YSBwYXNzLCBjb25zaWRlciB0aGUKKyAgICAgICAgICAgICAgICAjIHRlc3Qgc3VjY2Vzc2Z1bC4g
VGhlIGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0LCB1bmxlc3MgYQorICAgICAgICAgICAgICAgICMg
dGVzdCBpcyBtYXJrZWQgYXMgZmxha3ksIGZhaWx1cmVzIGFyZSBiZWNhdXNlIG9mCisgICAgICAg
ICAgICAgICAgIyBpbmZyYXN0cnVjdHVyZSBpc3N1ZXMgKHdoaWNoIGlzIHdoeSB0aGUgdGVzdCB3
YXMgcnVuCisgICAgICAgICAgICAgICAgIyBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgZmlyc3QgcGxh
Y2UpLgorICAgICAgICAgICAgICAgIHRlc3RXYXNTdWNjZXNzZnVsID0gc3RhdHVzZXMuaW5jbHVk
ZT8oU1RBVFVTX0ZJTEVfUEFTUykKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0V2FzU3VjY2Vzc2Z1bCA9IHBsYW4uZmxha3kucmVzdWx0KHN0YXR1c2VzKQorICAgICAgICAg
ICAgICAgIGlmIHRlc3RXYXNTdWNjZXNzZnVsLm5pbD8KKyAgICAgICAgICAgICAgICAgICAgIyBO
b3QgY29tcGxldGVkIHlldAorICAgICAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIHRlc3RXYXNTdWNjZXNzZnVs
CisgICAgICAgICAgICAgICAgcGFzc2VkKHBsYW4pCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgZmFpbGVkKHBsYW4pCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIG5yZXN1
bHRzID0gc3RhdHVzZXMudW5pcS5zaXplCisgICAgICAgICAgICBpZiBucmVzdWx0cyA8IDEKKyAg
ICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlVuZXhwZWN0ZWQgbnVtYmVyIG9mIHJlc3VsdHM6
ICN7bnJlc3VsdHN9IGZvciBwbGFuICN7cGxhbn0iKQorICAgICAgICAgICAgICAgIHJhaXNlICJV
bmV4cGVjdGVkIG51bWJlciBvZiByZXN1bHRzIgorICAgICAgICAgICAgZWxzaWYgbnJlc3VsdHMg
IT0gMSBhbmQgdGVzdFdhc1N1Y2Nlc3NmdWwKKyAgICAgICAgICAgICAgICB3YXNGbGFreUFuZFBh
c3NlZChwbGFuLCBzdGF0dXNlcy5jb3VudChTVEFUVVNfRklMRV9QQVNTKSwgc3RhdHVzZXMuc2l6
ZSkKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgZW5kCitlbmQKKworIyBTaW1wbGUg
YmVhbiBjb3VudGluZyBjbGFzcyB3aXRoIG5vIHNpZGUtZWZmZWN0cy4KK2NsYXNzIFRlc3RSZXN1
bHRFdmFsdWF0b3JTaW1wbGUgPCBUZXN0UmVzdWx0RXZhbHVhdG9yCisgICAgYXR0cl9yZWFkZXIg
OnRlc3RzUGFzc2VkLCA6dGVzdHNGYWlsZWQKKyAgICBkZWYgaW5pdGlhbGl6ZShydW5saXN0LCBz
dGF0dXNNYXApCisgICAgICAgIHN1cGVyKHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgQHRl
c3RzUGFzc2VkID0gU2V0Lm5ldworICAgICAgICBAdGVzdHNGYWlsZWQgPSBTZXQubmV3CisgICAg
ICAgIEBub1Jlc3VsdCA9IFNldC5uZXcKKyAgICAgICAgQGFsbCA9IFNldC5uZXcKKyAgICBlbmQK
KyAgICBkZWYgdmlzaXRpbmcocGxhbikKKyAgICAgICAgQGFsbC5hZGQocGxhbikKKyAgICBlbmQK
KyAgICBkZWYgcGFzc2VkKHBsYW4pCisgICAgICAgIEB0ZXN0c1Bhc3NlZC5hZGQocGxhbikKKyAg
ICBlbmQKKyAgICBkZWYgZmFpbGVkKHBsYW4pCisgICAgICAgIEB0ZXN0c0ZhaWxlZC5hZGQocGxh
bikKKyAgICBlbmQKKyAgICBkZWYgbm9SZXN1bHQocGxhbikKKyAgICAgICAgQG5vUmVzdWx0LmFk
ZChwbGFuKQorICAgIGVuZAorICAgIGRlZiBjb21wbGV0ZWQKKyAgICAgICAgQHRlc3RzUGFzc2Vk
IHwgQHRlc3RzRmFpbGVkCisgICAgZW5kCisgICAgZGVmIG1pc3NpbmcKKyAgICAgICAgQG5vUmVz
dWx0CisgICAgZW5kCitlbmQKKworY2xhc3MgUmVzdWx0c1dyaXRlcgorICAgIGRlZiBpbml0aWFs
aXplCisgICAgICAgIEBmaWxlcyA9IHt9CisgICAgZW5kCisgICAgZGVmIGFwcGVuZChmaWxlbmFt
ZSwgcykKKyAgICAgICAgaWYgbm90IEBmaWxlcy5oYXNfa2V5PyhmaWxlbmFtZSkKKyAgICAgICAg
ICAgIEBmaWxlc1tmaWxlbmFtZV0gPSBGaWxlLm9wZW4oJG91dHB1dERpciArIGZpbGVuYW1lLCAi
YSIpCisgICAgICAgIGVuZAorICAgICAgICBAZmlsZXNbZmlsZW5hbWVdLnB1dHMocykKKyAgICBl
bmQKKyAgICBkZWYgYXBwZW5kRmFpbHVyZShwbGFuKQorICAgICAgICBhcHBlbmQoImZhaWxlZCIs
IHBsYW4ubmFtZSkKKyAgICBlbmQKKyAgICBkZWYgYXBwZW5kUGFzcyhwbGFuKQorICAgICAgICBh
cHBlbmQoInBhc3NlZCIsIHBsYW4ubmFtZSkKKyAgICBlbmQKKyAgICBkZWYgYXBwZW5kTm9SZXN1
bHQocGxhbikKKyAgICAgICAgYXBwZW5kKCJub3Jlc3VsdCIsIHBsYW4ubmFtZSkKKyAgICBlbmQK
KyAgICBkZWYgYXBwZW5kRmxha3kocGxhbiwgc3VjY2Vzc2VzLCB0cmllcykKKyAgICAgICAgYXBw
ZW5kKCJmbGFreSIsICIje3BsYW4ubmFtZX0gI3tzdWNjZXNzZXN9ICN7dHJpZXN9IikKKyAgICBl
bmQKKyAgICBkZWYgYXBwZW5kUmVzdWx0KHBsYW4sIGRpZFBhc3MpCisgICAgICAgIGFwcGVuZCgi
cmVzdWx0cyIsICIje3BsYW4ubmFtZX06ICN7ZGlkUGFzcyA/ICdQQVNTJyA6ICdGQUlMJ30iKQor
ICAgIGVuZAorICAgIGRlZiBjbG9zZQorICAgICAgICBAZmlsZXMuZWFjaF92YWx1ZSB7IHxmfAor
ICAgICAgICAgICAgZi5jbG9zZQorICAgICAgICB9CisgICAgICAgIEBmaWxlcy5jbGVhcgorICAg
IGVuZAorZW5kCisKKyMgRmluYWwgYWNjb3VudGluZyBvZiByZXN1bHRzLgorY2xhc3MgVGVzdFJl
c3VsdEV2YWx1YXRvckZpbmFsIDwgVGVzdFJlc3VsdEV2YWx1YXRvcgorICAgIGF0dHJfcmVhZGVy
IDpub3Jlc3VsdCwgOmZhbWlseU1hcAorICAgIGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHN0YXR1
c01hcCkKKyAgICAgICAgc3VwZXIocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBAbm9yZXN1
bHQgPSAwCisgICAgICAgIEBmYW1pbHlNYXAgPSB7fQorICAgICAgICBAd3JpdGVyID0gUmVzdWx0
c1dyaXRlci5uZXcKKyAgICBlbmQKKyAgICBkZWYgbm9SZXN1bHQocGxhbikKKyAgICAgICAgQHdy
aXRlci5hcHBlbmROb1Jlc3VsdChwbGFuKQorICAgICAgICBAbm9yZXN1bHQgKz0gMQorICAgIGVu
ZAorICAgIGRlZiBwYXNzZWQocGxhbikKKyAgICAgICAgQHdyaXRlci5hcHBlbmRQYXNzKHBsYW4p
CisgICAgICAgIGFwcGVuZFJlc3VsdChwbGFuLCB0cnVlKQorICAgICAgICBhZGRUb0ZhbWlseU1h
cChwbGFuLCAiUEFTUyIpCisgICAgZW5kCisgICAgZGVmIGZhaWxlZChwbGFuKQorICAgICAgICBA
d3JpdGVyLmFwcGVuZEZhaWx1cmUocGxhbikKKyAgICAgICAgYXBwZW5kUmVzdWx0KHBsYW4sIGZh
bHNlKQorICAgICAgICBhZGRUb0ZhbWlseU1hcChwbGFuLCAiRkFJTCIpCisgICAgZW5kCisgICAg
ZGVmIHdhc0ZsYWt5QW5kUGFzc2VkKHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMpCisgICAgICAgIEB3
cml0ZXIuYXBwZW5kRmxha3kocGxhbiwgc3VjY2Vzc2VzLCB0cmllcykKKyAgICBlbmQKKyAgICBw
cml2YXRlCisgICAgZGVmIGFwcGVuZFJlc3VsdChwbGFuLCBzdWNjZXNzZnVsKQorICAgICAgICBA
d3JpdGVyLmFwcGVuZFJlc3VsdChwbGFuLCBzdWNjZXNzZnVsKQorICAgIGVuZAorICAgIGRlZiBh
ZGRUb0ZhbWlseU1hcChwbGFuLCByZXN1bHQpCisgICAgICAgIHVubGVzcyBmYW1pbHlNYXBbcGxh
bi5mYW1pbHldCisgICAgICAgICAgICBmYW1pbHlNYXBbcGxhbi5mYW1pbHldID0gW10KKyAgICAg
ICAgZW5kCisgICAgICAgIGZhbWlseU1hcFtwbGFuLmZhbWlseV0gPDwgeyA6cmVzdWx0ID0+IHJl
c3VsdCwgOnBsYW4gPT4gcGxhbn0KKyAgICBlbmQKK2VuZAorCitkZWYgdmVyaWZ5Q29tcGxldGVk
VGVzdHNNYXRjaEV4cGVjdGVkKHN0YXR1c01hcCwgY29tcGxldGVkLCBleHBlY3RlZCkKKyAgICBp
ZiBjb21wbGV0ZWQgIT0gZXhwZWN0ZWQKKyAgICAgICAgdW5leHBlY3RlZGx5Q29tcGxldGVkID0g
KGNvbXBsZXRlZCAtIGV4cGVjdGVkKS5jb2xsZWN0IHsgfHBsYW58CisgICAgICAgICAgICAiIyN7
cGxhbi5pbmRleH06ICN7c3RhdHVzTWFwW3BsYW4uaW5kZXhdfSIKKyAgICAgICAgfS5qb2luKCIg
fCAiKQorICAgICAgICAkc3RkZXJyLnB1dHMoIlVuZXhwZWN0ZWRseSBjb21wbGV0ZWQ6ICN7dW5l
eHBlY3RlZGx5Q29tcGxldGVkfSIpCisgICAgICAgIGV4cGVjdGVkQnV0Tm90Q29tcGxldGVkID0g
KGV4cGVjdGVkIC0gY29tcGxldGVkKS5jb2xsZWN0IHsgfHBsYW58CisgICAgICAgICAgICAiIyN7
cGxhbi5pbmRleH06ICN7c3RhdHVzTWFwW3BsYW4uaW5kZXhdfSIKKyAgICAgICAgfS5qb2luKCIg
fCAiKQorICAgICAgICAkc3RkZXJyLnB1dHMoIkV4cGVjdGVkIGJ1dCBub3QgY29tcGxldGVkOiAj
e2V4cGVjdGVkQnV0Tm90Q29tcGxldGVkfSIpCisgICAgICAgIHJhaXNlICJtaXNtYXRjaCIKKyAg
ICBlbmQKK2VuZAorCittb2R1bGUgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cworICAgIGRl
ZiBUZXN0UmVzdWx0RXZhbHVhdG9yU2VsZlRlc3RzLnNlbGZUZXN0VGVzdFJlc3VsdEV2YWx1YXRv
cgorICAgICAgICBydW5saXN0ID0gW10KKyAgICAgICAgc3RhdHVzTWFwID0ge30KKyAgICAgICAg
ZXhwZWN0ZWRQYXNzID0gU2V0Lm5ldworICAgICAgICBleHBlY3RlZEZhaWwgPSBTZXQubmV3Cisg
ICAgICAgIHRjID0gU3RydWN0Lm5ldyg6c3RhdHVzZXMsIDpleHBlY3RlZFBhc3MpCisgICAgICAg
IFsKKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTU10sIHRydWUpLAorICAgICAg
ICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9QQVNTXSwgdHJ1ZSksCisgICAgICAgICAgICB0Yy5u
ZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX1BBU1NdLCB0cnVlKSwKKyAgICAgICAg
ICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTUywgU1RBVFVTX0ZJTEVfRkFJTF0sIHRydWUpLAor
ICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMXSwgZmFsc2UpLAorICAgICAgICAg
ICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMLCBTVEFUVVNfRklMRV9GQUlMXSwgZmFsc2UpLAor
ICAgICAgICBdLmVhY2hfd2l0aF9pbmRleCB7CisgICAgICAgICAgICB8dGVzdCwgdGVzdEluZGV4
fAorICAgICAgICAgICAgcGxhbiA9IEJhc2VQbGFuLm1vY2soImYiLCAidCN7dGVzdEluZGV4fSIp
CisgICAgICAgICAgICBydW5saXN0IDw8IHBsYW4KKyAgICAgICAgICAgIHN0YXR1c01hcFtwbGFu
LmluZGV4XSA9IHRlc3Quc3RhdHVzZXMKKyAgICAgICAgICAgIGlmIHRlc3QuZXhwZWN0ZWRQYXNz
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQYXNzLmFkZChwbGFuKQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGV4cGVjdGVkRmFpbC5hZGQocGxhbikKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICB9CisgICAgICAgIGV2YWx1YXRvciA9IFRlc3RSZXN1bHRFdmFsdWF0b3JTaW1w
bGUubmV3KHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgZXZhbHVhdG9yLnZpc2l0IQorCisg
ICAgICAgIGlmIGV4cGVjdGVkUGFzcyAhPSBldmFsdWF0b3IudGVzdHNQYXNzZWQKKyAgICAgICAg
ICAgICRzdGRlcnIucHV0cygiZXhwZWN0ZWRQYXNzOiAje2V4cGVjdGVkUGFzc30iKQorICAgICAg
ICAgICAgJHN0ZGVyci5wdXRzKCJQYXNzZWQ6ICN7ZXZhbHVhdG9yLnRlc3RzUGFzc2VkfSIpCisg
ICAgICAgICAgICByYWlzZSAiZXhwZWN0ZWRQYXNzIG1pc21hdGNoIgorICAgICAgICBlbmQKKyAg
ICAgICAgaWYgZXhwZWN0ZWRGYWlsICE9IGV2YWx1YXRvci50ZXN0c0ZhaWxlZAorICAgICAgICAg
ICAgJHN0ZGVyci5wdXRzKCJleHBlY3RlZEZhaWw6ICN7ZXhwZWN0ZWRGYWlsfSIpCisgICAgICAg
ICAgICAkc3RkZXJyLnB1dHMoIkZhaWxlZDogI3tldmFsdWF0b3IudGVzdHNGYWlsZWR9IikKKyAg
ICAgICAgICAgIHJhaXNlICJleHBlY3RlZEZhaWwgbWlzbWF0Y2giCisgICAgICAgIGVuZAorICAg
IGVuZAorCisgICAgZGVmIGdldENvbXBsZXRlZFRlc3RzRnJvbVN0YXR1c01hcChydW5saXN0LCBz
dGF0dXNNYXApCisgICAgICAgIGV2YWx1YXRvciA9IFRlc3RSZXN1bHRFdmFsdWF0b3JTaW1wbGUu
bmV3KHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgZXZhbHVhdG9yLnZpc2l0IQorICAgICAg
ICBldmFsdWF0b3IuY29tcGxldGVkCisgICAgZW5kCisKKyAgICBkZWYgVGVzdFJlc3VsdEV2YWx1
YXRvclNlbGZUZXN0cy5zZWxmVGVzdEdldENvbXBsZXRlZFRlc3RzRnJvbVN0YXR1c01hcAorICAg
ICAgICBydW5saXN0ID0gW10KKyAgICAgICAgZXhwZWN0Q29tcGxldGVkID0gU2V0Lm5ldworICAg
ICAgICBzdGF0dXNNYXAgPSB7fQorICAgICAgICB0YyA9IFN0cnVjdC5uZXcoOnN0YXR1c2VzLCA6
Zmxha3ksIDpzaG91bGRDb3VudEFzQ29tcGxldGVkKQorICAgICAgICBbCisgICAgICAgICAgICAj
IE5vIHJlc3VsdHMgPT4gbm90IGNvbXBsZXRlZAorICAgICAgICAgICAgdGMubmV3KG5pbCwgbmls
LCBmYWxzZSksCisgICAgICAgICAgICB0Yy5uZXcobmlsLCBGbGFreS5uZXcoMC42LCAyKSwgZmFs
c2UpLAorCisgICAgICAgICAgICAjIFBhc3NlZC9mYWlsZWQgYW5kIG5vdCBmbGFreSAtPiBjb21w
bGV0ZWQKKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTU10sIG5pbCwgdHJ1ZSks
CisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX0ZBSUxdLCBuaWwsIHRydWUpLAorCisg
ICAgICAgICAgICAjIElmIGl0IGhhcyBtdWx0aXBsZSByZXN1bHRzIGFuZCBpcyBub3QgYSBmbGFr
eSwgdGhhdCBtZWFucyBpdAorICAgICAgICAgICAgIyB3YXMgcmUtcnVuIGJlY2F1c2Ugb2YgaW5m
cmFzdHJ1Y3R1cmUgaXNzdWVzLiBDb3VudHMgYXMKKyAgICAgICAgICAgICMgY29tcGxldGVkIHJl
Z2FyZGxlc3Mgb2YgdGhlIGFjdHVhbCByZXN1bHRzLgorICAgICAgICAgICAgdGMubmV3KFtTVEFU
VVNfRklMRV9QQVNTLCBTVEFUVVNfRklMRV9QQVNTXSwgbmlsLCB0cnVlKSwKKyAgICAgICAgICAg
IHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTUywgU1RBVFVTX0ZJTEVfRkFJTF0sIG5pbCwgdHJ1ZSks
CisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX0ZBSUwsIFNUQVRVU19GSUxFX0ZBSUxd
LCBuaWwsIHRydWUpLAorCisgICAgICAgICAgICAjIE5vdCBjb21wbGV0ZWQ6IHdlIGhhdmUgb25l
IHJ1biByZW1haW5pbmcgYW5kIHRoaXMgY291bGQgZmxpcAorICAgICAgICAgICAgIyB0aGUgcGVy
Y2VudGFnZS4KKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTU10sIEZsYWt5Lm5l
dygwLjYsIDIpLCBmYWxzZSksCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX0ZBSUxd
LCBGbGFreS5uZXcoMC40LCAyKSwgZmFsc2UpLAorCisgICAgICAgICAgICAjIEV2ZW4gaWYgdGhl
IGxhc3Qgb25lIGZhaWxzIHdlJ3JlIHN0aWxsIGdvbm5hIGJlIGFib3ZlCisgICAgICAgICAgICAj
IChyZXNwZWN0aXZlbHkgYmVsb3cpIHRoZSBwYXNzIHBlcmNlbnRhZ2UuCisgICAgICAgICAgICB0
Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX1BBU1NdLCBGbGFreS5uZXcoMC41
LCAzKSwgdHJ1ZSksCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX0ZBSUwsIFNUQVRV
U19GSUxFX0ZBSUxdLCBGbGFreS5uZXcoMC41LCAzKSwgdHJ1ZSksCisgICAgICAgIF0uZWFjaF93
aXRoX2luZGV4IHsKKyAgICAgICAgICAgIHx0ZXN0LCB0ZXN0SW5kZXh8CisgICAgICAgICAgICBw
bGFuID0gQmFzZVBsYW4ubW9jaygiZiIsICJ0I3t0ZXN0SW5kZXh9IiwgdGVzdC5mbGFreSkKKyAg
ICAgICAgICAgIHJ1bmxpc3QgPDwgcGxhbgorICAgICAgICAgICAgaWYgbm90IHRlc3Quc3RhdHVz
ZXMubmlsPworICAgICAgICAgICAgICAgIHN0YXR1c01hcFtwbGFuLmluZGV4XSA9IHRlc3Quc3Rh
dHVzZXMKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgaWYgdGVzdC5zaG91bGRDb3VudEFz
Q29tcGxldGVkCisgICAgICAgICAgICAgICAgZXhwZWN0Q29tcGxldGVkLmFkZChwbGFuKQorICAg
ICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgZXZhbHVhdG9yID0gVGVzdFJlc3VsdEV2
YWx1YXRvclNpbXBsZS5uZXcocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBldmFsdWF0b3Iu
dmlzaXQhCisKKyAgICAgICAgdmVyaWZ5Q29tcGxldGVkVGVzdHNNYXRjaEV4cGVjdGVkKHN0YXR1
c01hcCwgZXZhbHVhdG9yLmNvbXBsZXRlZCwgZXhwZWN0Q29tcGxldGVkKQorICAgIGVuZAorICAg
IGRlZiBUZXN0UmVzdWx0RXZhbHVhdG9yU2VsZlRlc3RzLnJ1bgorICAgICAgICBUZXN0UmVzdWx0
RXZhbHVhdG9yU2VsZlRlc3RzLnNlbGZUZXN0VGVzdFJlc3VsdEV2YWx1YXRvcgorICAgICAgICBU
ZXN0UmVzdWx0RXZhbHVhdG9yU2VsZlRlc3RzLnNlbGZUZXN0R2V0Q29tcGxldGVkVGVzdHNGcm9t
U3RhdHVzTWFwCisgICAgZW5kCitlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cnVieS9qc2Mtc3RyZXNzLXRlc3Qvd3JpdGVyLWRlZmF1bHQucmIgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3dyaXRlci1kZWZhdWx0LnJiCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5
ZjFkYjA3MmZhMDEwZmQ1ZGQ1MTllNjQ4ZjNiYWI3ZGFmZTFhYzEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3dyaXRlci1kZWZhdWx0
LnJiCkBAIC0wLDAgKzEsNDYzIEBACisjIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisj
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisj
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitkZWYgcHJlZml4Q29tbWFuZChwcmVmaXgpCisgICAgImF3ayAiICsgU2hlbGx3b3Jkcy5z
aGVsbGVzY2FwZSgieyBwcmludGYgI3socHJlZml4ICsgJzogJykuaW5zcGVjdH07IHByaW50IH0i
KQorZW5kCisKK2RlZiByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocHJlZml4KQorICAgIHByZWZp
eENvbW1hbmQocHJlZml4KSArICIgMj4mMSIKK2VuZAorCitkZWYgcGlwZUFuZFByZWZpeENvbW1h
bmQob3V0cHV0RmlsZW5hbWUsIHByZWZpeCkKKyAgICAidGVlICIgKyBTaGVsbHdvcmRzLnNoZWxs
ZXNjYXBlKG91dHB1dEZpbGVuYW1lLnRvX3MpICsgIiB8ICIgKyBwcmVmaXhDb21tYW5kKHByZWZp
eCkKK2VuZAorCisjIE91dHB1dCBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0
byBiZSBzaWxlbnQuCitkZWYgc2lsZW50T3V0cHV0SGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAg
ICAgICAgfCBuYW1lIHwKKyAgICAgICAgcGlwZUFuZFByZWZpeENvbW1hbmQoKFBhdGhuYW1lKCIu
LiIpICsgKG5hbWUgKyAiLm91dCIpKS50b19zLCBuYW1lKQorICAgIH0KK2VuZAorCisjIE91dHB1
dCBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byBwcm9kdWNlIG1lYW5pbmdm
dWwgb3V0cHV0LgorZGVmIG5vaXN5T3V0cHV0SGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAg
ICAgfCBuYW1lIHwKKyAgICAgICAgImNhdCA+ICIgKyBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQ
YXRobmFtZSgiLi4iKSArIChuYW1lICsgIi5vdXQiKSkudG9fcykKKyAgICB9CitlbmQKKworZGVm
IGdldEFuZFRlc3RFeGl0Q29kZShwbGFuLCBjb25kaXRpb24pCisgICAgPDwtRU9GCisgICAgaWYg
dGVzdCAiJGV4aXRDb2RlIiAje2NvbmRpdGlvbn0KK0VPRgorZW5kCisKKyMgRXJyb3IgaGFuZGxl
ciBmb3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiBub24temVybyBl
eGl0IHN0YXR1cy4KKyMgVGhpcyBpcyB1c2VmdWwgd2hlbiBhIHRlc3QgaXMgZXhwZWN0ZWQgdG8g
ZmFpbC4KK2RlZiBzaW1wbGVFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwg
b3V0cCwgcGxhbiB8CisgICAgICAgIG91dHAucHV0cyBnZXRBbmRUZXN0RXhpdENvZGUocGxhbiwg
Ii1uZSAwIikKKyAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAoZWNobyBFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6ICRleGl0Q29kZSkgfCAiICsgcmVk
aXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlIgorICAgICAgICBv
dXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMg
ImZpIgorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBl
eGFjdGx5IHdoZW4gdGhleSByZXR1cm4gemVybyBleGl0IHN0YXR1cy4KK2RlZiBleHBlY3RlZEZh
aWxFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8Cisg
ICAgICAgIG91dHAucHV0cyBnZXRBbmRUZXN0RXhpdENvZGUocGxhbiwgIi1uZSAwIikKKyAgICAg
ICAgb3V0cC5wdXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNj
ZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2UiCisgICAgICAgIG91dHAucHV0cyAi
ICAgIChlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogMCkgfCAiICsgcmVkaXJlY3RB
bmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBs
YW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJmaSIKKyAgICB9CitlbmQKKworIyBF
cnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3RseSB3aGVuIHRoZXkgcmV0dXJu
IG5vbi16ZXJvIGV4aXQgc3RhdHVzIGFuZCBwcm9kdWNlCisjIGxvdHMgb2Ygc3Bldy4gVGhpcyB3
aWxsIGVjaG8gdGhhdCBzcGV3IHdoZW4gdGhlIHRlc3QgZmFpbHMuCitkZWYgbm9pc3lFcnJvckhh
bmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91
dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAo
cGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKworICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVz
dEV4aXRDb2RlKHBsYW4sICItbmUgMCIpCisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAg
ICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBV
bmV4cGVjdGVkIGV4aXQgY29kZTogJGV4aXRDb2RlKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENv
bW1hbmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29t
bWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2UiCisgICAgICAgIG91dHAucHV0cyAiICAgICIg
KyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZmkiCisgICAgfQorZW5k
CisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBkaWZmIHRoZWlyIG91dHB1dCB3aXRo
IHNvbWUgZXhwZWN0YXRpb24uCitkZWYgZGlmZkVycm9ySGFuZGxlcihleHBlY3RlZEZpbGVuYW1l
KQorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0cHV0
RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFu
Lm5hbWUgKyAiLm91dCIpKS50b19zKQorICAgICAgICBkaWZmRmlsZW5hbWUgPSBTaGVsbHdvcmRz
LnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLmRpZmYiKSkudG9f
cykKKworICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVzdEV4aXRDb2RlKHBsYW4sICItbmUgMCIp
CisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAj
e291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogJGV4
aXRDb2RlKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAg
ICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMg
ImVsaWYgdGVzdCAtZSAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFt
ZSl9IgorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAgIGRp
ZmYgLS1zdHJpcC10cmFpbGluZy1jciAtdSAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhw
ZWN0ZWRGaWxlbmFtZSl9ICN7b3V0cHV0RmlsZW5hbWV9ID4gI3tkaWZmRmlsZW5hbWV9IgorICAg
ICAgICBvdXRwLnB1dHMgIiAgICBpZiBbICQ/IC1lcSAwIF0iCisgICAgICAgIG91dHAucHV0cyAi
ICAgIHRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5k
CisgICAgICAgIG91dHAucHV0cyAiICAgIGVsc2UiCisgICAgICAgIG91dHAucHV0cyAiICAgICAg
ICAoZWNobyBcIkRJRkYgRkFJTFVSRSFcIiAmJiBjYXQgI3tkaWZmRmlsZW5hbWV9KSB8ICIgKyBy
ZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICIgICAgZmkiCisg
ICAgICAgIG91dHAucHV0cyAiZWxzZSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgKGVjaG8gXCJO
TyBFWFBFQ1RBVElPTiFcIiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiArIHJlZGlyZWN0
QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBw
bGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZmkiCisgICAgfQorZW5kCisKKyMg
RXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWls
ZWQhIi4gVGhpcyBpcyB1c2VkIGJ5IE1vemlsbGEKKyMgdGVzdHMuCitkZWYgbW96aWxsYUVycm9y
SGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAg
b3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSAr
IChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQorCisgICAgICAgIG91dHAucHV0cyBnZXRBbmRU
ZXN0RXhpdENvZGUocGxhbiwgIi1uZSAwIikKKyAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAg
ICAgICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6
IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiAkZXhpdENvZGUpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4
Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxD
b21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRw
dXRGaWxlbmFtZX0iCisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRz
ICIgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVuYW1lfSkg
fCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlIgor
ICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBv
dXRwLnB1dHMgImZpIgorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRo
YXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIsIGFuZCBhcmUgZXhwZWN0ZWQgdG8K
KyMgZmFpbC4gVGhpcyBpcyB1c2VkIGJ5IE1vemlsbGEgdGVzdHMuCitkZWYgbW96aWxsYUZhaWxF
cnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAg
ICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4u
IikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKworICAgICAgICBvdXRwLnB1dHMgZ2V0
QW5kVGVzdEV4aXRDb2RlKHBsYW4sICItbmUgMCIpCisgICAgICAgIG91dHAucHV0cyAidGhlbiIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAg
b3V0cC5wdXRzICJlbGlmIGdyZXAgLWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVuYW1lfSIKKyAg
ICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5z
dWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2UiCisgICAgICAgIG91dHAucHV0
cyAiICAgIChlY2hvIE5PVElDRTogWW91IG1hZGUgdGhpcyB0ZXN0IHBhc3MsIGJ1dCBpdCB3YXMg
ZXhwZWN0ZWQgdG8gZmFpbCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFt
ZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAg
b3V0cC5wdXRzICJmaSIKKyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0
aGF0IHJlcG9ydCBlcnJvciBieSBzYXlpbmcgImZhaWxlZCEiLCBhbmQgYXJlIGV4cGVjdGVkIHRv
IGhhdmUKKyMgYW4gZXhpdCBjb2RlIG9mIDMuCitkZWYgbW96aWxsYUV4aXQzRXJyb3JIYW5kbGVy
CisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwdXRG
aWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4u
bmFtZSArICIub3V0IikpLnRvX3MpCisKKyAgICAgICAgb3V0cC5wdXRzIGdldEFuZFRlc3RFeGl0
Q29kZShwbGFuLCAiLW5lIDAiKQorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91
dHAucHV0cyAiICAgIGlmIFsgXCIkZXhpdENvZGVcIiAtZXEgMyBdIgorICAgICAgICBvdXRwLnB1
dHMgIiAgICB0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgaWYgZ3JlcCAtaSAtcSBm
YWlsZWQhICN7b3V0cHV0RmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgdGhl
biIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICAgICAoZWNobyBEZXRlY3RlZCBmYWlsdXJl
czogJiYgY2F0ICN7b3V0cHV0RmlsZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1h
bmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgICAgICIgKyBwbGFuLmZh
aWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICBlbHNlIgorICAgICAgICBvdXRw
LnB1dHMgIiAgICAgICAgICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAu
cHV0cyAiICAgICAgICBmaSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgZWxzZSIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjog
VW5leHBlY3RlZCBleGl0IGNvZGU6ICRleGl0Q29kZSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhD
b21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZh
aWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiICAgIGZpIgorICAgICAgICBvdXRwLnB1dHMg
ImVsc2UiCisgICAgICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYg
ZWNobyBFUlJPUjogVGVzdCBleHBlY3RlZCB0byBmYWlsLCBidXQgcmV0dXJuZWQgc3VjY2Vzc2Z1
bGx5KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAgICBv
dXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImZp
IgorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IHN1
Y2Nlc3MgYnkgc2F5aW5nICJQYXNzZWQiIG9yIGVycm9yIGJ5IHNheWluZyAiRkFJTEVEIi4KKyMg
VGhpcyBpcyB1c2VkIGJ5IENoYWtyYSB0ZXN0cy4KK2RlZiBjaGFrcmFQYXNzRmFpbEVycm9ySGFu
ZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0
cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChw
bGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQorCisgICAgICAgIG91dHAucHV0cyBnZXRBbmRUZXN0
RXhpdENvZGUocGxhbiwgIi1uZSAwIikKKyAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAgICAg
ICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVu
ZXhwZWN0ZWQgZXhpdCBjb2RlOiAkZXhpdENvZGUpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29t
bWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21t
YW5kCisgICAgICAgIG91dHAucHV0cyAiZWxpZiBncmVwIC1pIC1xIEZBSUxFRCAje291dHB1dEZp
bGVuYW1lfSIKKyAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAoZWNobyBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0cHV0RmlsZW5hbWV9KSB8ICIg
KyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMg
IiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2UiCisgICAg
ICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAu
cHV0cyAiZmkiCisgICAgfQorZW5kCisKK2NsYXNzIFBsYW4gPCBCYXNlUGxhbgorICAgIGRlZiBz
aGVsbENvbW1hbmQKKyAgICAgICAgIyBJdCdzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGF0IHRo
ZSB0ZXN0IGlzIGFjdHVhbGx5IHJ1biBpbiBhIHN1YnNoZWxsLCBzbyBpZiB3ZSBjaGFuZ2UgZGly
ZWN0b3J5CisgICAgICAgICMgaW4gdGhlIHN1YnNoZWxsIHdoZW4gd2UgcmV0dXJuIHdlIHdpbGwg
YmUgaW4gb3VyIG9yaWdpbmFsIGRpcmVjdG9yeS4gVGhpcyBpcyBuaWNlIGJlY2F1c2Ugd2UgZG9u
J3QKKyAgICAgICAgIyBoYXZlIHRvIGJlbmQgb3ZlciBiYWNrd2FyZHMgdG8gZG8gdGhpbmdzIHJl
bGF0aXZlIHRvIHRoZSByb290LgorICAgICAgICBzY3JpcHQgPSAiKGNkIC4uLyN7U2hlbGx3b3Jk
cy5zaGVsbGVzY2FwZShAZGlyZWN0b3J5LnRvX3MpfSAmJiAoIgorICAgICAgICAoJGVudlZhcnMg
KyBhZGRpdGlvbmFsRW52KS5lYWNoIHsgfHZhcnwgc2NyaXB0ICs9ICJleHBvcnQgIiA8PCB2YXIg
PDwgIjsgIiB9CisgICAgICAgIHNjcmlwdCArPSAiXCIkQFwiICIgKyBlc2NhcGVBbGwoQGFyZ3Vt
ZW50cykgKyAiKSkiCisgICAgICAgIHJldHVybiBzY3JpcHQKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgcmVwcm9TY3JpcHRDb21tYW5kCisgICAgICAgICMgV2UgaGF2ZSB0byBmaW5kIG91ciB3YXkg
YmFjayB0byB0aGUgLnJ1bm5lciBkaXJlY3Rvcnkgc2luY2UgdGhhdCdzIHdoZXJlIGFsbCBvZiB0
aGUgcmVsYXRpdmUKKyAgICAgICAgIyBwYXRocyBhc3N1bWUgdGhleSBzdGFydCBvdXQgZnJvbS4K
KyAgICAgICAgc2NyaXB0ID0gIkNVUlJFTlRfRElSPVwiJCggY2QgXCIkKCBkaXJuYW1lIFwiJHtC
QVNIX1NPVVJDRVswXX1cIiApXCIgJiYgcHdkIClcIlxuIgorICAgICAgICBzY3JpcHQgKz0gImNk
ICRDVVJSRU5UX0RJUlxuIgorICAgICAgICBQYXRobmFtZS5uZXcoQG5hbWUpLmRpcm5hbWUuZWFj
aF9maWxlbmFtZSB7CisgICAgICAgICAgICB8IHBhdGhDb21wb25lbnQgfAorICAgICAgICAgICAg
c2NyaXB0ICs9ICJjZCAuLlxuIgorICAgICAgICB9CisgICAgICAgIHNjcmlwdCArPSAiY2QgLnJ1
bm5lclxuIgorCisgICAgICAgIHNjcmlwdCArPSAiZXhwb3J0IERZTERfRlJBTUVXT1JLX1BBVEg9
JChjZCAjeyR0ZXN0aW5nRnJhbWV3b3JrUGF0aC5kaXJuYW1lfTsgcHdkKVxuIgorICAgICAgICBz
Y3JpcHQgKz0gImV4cG9ydCBKU0NURVNUX3RpbWVvdXQ9I3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBl
KEVOVlsnSlNDVEVTVF90aW1lb3V0J10pfVxuIgorICAgICAgICBzY3JpcHQgKz0gImV4cG9ydCBK
U0NURVNUX2hhcmRUaW1lb3V0PSN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShFTlZbJ0pTQ1RFU1Rf
aGFyZFRpbWVvdXQnXSl9XG4iCisgICAgICAgIHNjcmlwdCArPSAiZXhwb3J0IEpTQ1RFU1RfbWVt
b3J5TGltaXQ9I3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEVOVlsnSlNDVEVTVF9tZW1vcnlMaW1p
dCddKX1cbiIKKyAgICAgICAgJGVudlZhcnMuZWFjaCB7IHx2YXJ8IHNjcmlwdCArPSAiZXhwb3J0
ICIgPDwgdmFyIDw8ICJcbiIgfQorICAgICAgICBzY3JpcHQgKz0gIiN7c2hlbGxDb21tYW5kfSB8
fCBleGl0IDEiCisgICAgICAgICJlY2hvICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShzY3JpcHQp
fSA+ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUubmV3KCIuLiIpICsgQG5hbWUp
LnRvX3MpfSIKKyAgICBlbmQKKworICAgIGRlZiBzdGF0dXNDb21tYW5kKHN0YXR1cykKKyAgICAg
ICAgImVjaG8gI3skcnVuVW5pcXVlSWR9ICRleGl0Q29kZSAje3N0YXR1c30gPiAje3N0YXR1c0Zp
bGV9IgorICAgIGVuZAorCisgICAgZGVmIGZhaWxDb21tYW5kCisgICAgICAgICIje3N0YXR1c0Nv
bW1hbmQoU1RBVFVTX0ZJTEVfRkFJTCl9OyBlY2hvIEZBSUw6ICN7U2hlbGx3b3Jkcy5zaGVsbGVz
Y2FwZShAbmFtZSl9OyAiICsgcmVwcm9TY3JpcHRDb21tYW5kCisgICAgZW5kCisgICAgCisgICAg
ZGVmIHN1Y2Nlc3NDb21tYW5kCisgICAgICAgIGNvbW1hbmQgPSAiIgorICAgICAgICBleGVjdXRp
b25UaW1lTWVzc2FnZSA9ICIiCisgICAgICAgIGlmICRyZXBvcnRFeGVjdXRpb25UaW1lCisgICAg
ICAgICAgICBleGVjdXRpb25UaW1lTWVzc2FnZSA9ICIgJCgoJFNFQ09ORFMgLSAkU1RBUlRfVElN
RSkpcyIKKyAgICAgICAgZW5kCisgICAgICAgIGlmICRwcm9ncmVzc01ldGVyIG9yICRyZXBvcnRF
eGVjdXRpb25UaW1lIG9yICR2ZXJib3NpdHkgPj0gMgorICAgICAgICAgICAgY29tbWFuZCA9ICJl
Y2hvIFBBU1M6ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9I3tleGVjdXRpb25UaW1l
TWVzc2FnZX0iCisgICAgICAgIGVuZAorICAgICAgICAiI3tzdGF0dXNDb21tYW5kKFNUQVRVU19G
SUxFX1BBU1MpfTsgI3tjb21tYW5kfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc3RhdHVzRmls
ZQorICAgICAgICAiI3tTVEFUVVNfRklMRV9QUkVGSVh9I3tAaW5kZXh9IgorICAgIGVuZAorICAg
IAorICAgIGRlZiB3cml0ZVJ1blNjcmlwdChmaWxlbmFtZSkKKyAgICAgICAgRmlsZS5vcGVuKGZp
bGVuYW1lLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAgICAgICAgICBpZiAkcmVw
b3J0RXhlY3V0aW9uVGltZQorICAgICAgICAgICAgICAgIG91dHAucHV0cyAiU1RBUlRfVElNRT0k
U0VDT05EUyIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgb3V0cC5wdXRzICJlY2hvIFJ1
bm5pbmcgI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX0iCisgICAgICAgICAgICAjCisg
ICAgICAgICAgICAjICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICMgfCArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgIyB8IHwgKy0tLS0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0rICAgIHwgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAjIHwgfCB8IGNtZCAxIC0t
LS0+IDF8LS0tPiB8MCAtLT4gb3V0SCAxIC0tLT4gNHwtPiA0fC0tLS0tLS0tLS0tLS0tLT4gMXwK
KyAgICAgICAgICAgICMgfCB8IHwgICAgIDIgLyAgICAgIHwgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tKyAgICB8ICAgKy0tLS0tLS0tLS0tKyAgfAorICAgICAgICAgICAgIyB8IHwgfGVjaG8gJD8g
MCAtPiAzfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gMXwtPiB8MCByZWFkIHhzICB8ICB8
CisgICAgICAgICAgICAjIHwgfCArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIHwgIGV4aXQgJHhzIHwgIHwKKyAgICAgICAgICAgICMgfCB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgKy0tLS0tLS0tLS0tKyAg
fAorICAgICAgICAgICAgIyB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAjICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsKKyAgICAgICAgICAgICMgRnJvbSB0aGUgdG9wIGRvd24gKGkuZS4gcmVhZGluZyBmcm9tIHRo
ZSBvdXRlciBleHByZXNzaW9uIGlud2FyZHMpOgorICAgICAgICAgICAgIworICAgICAgICAgICAg
IyAtIFJlZGlyZWN0IEZEIDQgdG8gb3VyIHN0ZG91dAorICAgICAgICAgICAgIworICAgICAgICAg
ICAgIyAtIEJ1aWxkIGEgcGlwZSBvZiB0d28gY29tbWFuZCBzZXF1ZW5jZXMuIFRoZQorICAgICAg
ICAgICAgIyAgIHJpZ2h0LWhhbmQtc2lkZSBzZXF1ZW5jZSByZWFkcyBhIG51bWJlciBmcm9tIHN0
ZGluIGFuZAorICAgICAgICAgICAgIyAgIGV4aXRzIHdpdGggaXQuIFNpbmNlIGl0J3MgdGhlIGxh
c3QgY29tbWFuZCBpbiB0aGUKKyAgICAgICAgICAgICMgICBwaXBlbGluZSwgdGhpcyB3aWxsIGJl
IHRoZSB2YWx1ZSBvZiAkPyBhZnRlciB0aGUKKyAgICAgICAgICAgICMgICBwaXBlbGluZSBjb21w
bGV0ZXMuCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIC0gSW4gdGhlIGxlZnQtaGFuZC1z
aWRlIHNlcXVlbmNlLCByZWRpcmVjdCBGRCAzIHRvIEZEIDEuCisgICAgICAgICAgICAjCisgICAg
ICAgICAgICAjIC0gQnVpbGQgYSBwaXBlIG9mIHR3byBjb21tYW5kcworICAgICAgICAgICAgIyAg
IC0gcnVuIHNoZWxsQ29tbWFuZCwgd3JpdGluZyBpdHMgZXhpdCBjb2RlIHRvIEZEIDMuCisgICAg
ICAgICAgICAjICAgLSBydW4gdGhlIG91dHB1dEhhbmRsZXIsIHdpdGggaXRzIHN0ZGluIGNvbWlu
ZyBmcm9tCisgICAgICAgICAgICAjICAgICB0aGUgcGlwZSwgcmVkaXJlY3RpbmcgaXRzIG91dHB1
dCB0byBGRCA0LiBUaGUKKyAgICAgICAgICAgICMgICAgIG91dHB1dEhhbmRsZXIgbmVlZHMgdG8g
YmUgaW4gYSBjb21tYW5kIHNlcXVlbmNlCisgICAgICAgICAgICAjICAgICAoaS5lLiBpbiB7IGNt
ZDsgLi4ufSkgYXMgaXQgbWF5IGRvIGl0cyBvd24KKyAgICAgICAgICAgICMgICAgIHJlZGlyZWN0
aW9ucy4KKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgV2UgZG8gYWxsIHRoaXMKKyAgICAg
ICAgICAgICMgLSB0byBhdm9pZCBoYXZpbmcgdG8gdXNlIGEgdGVtcG9yYXJ5IGZpbGUgZm9yIHRo
ZSBleGl0IGNvZGUKKyAgICAgICAgICAgICMgLSB0byBrZWVwIHdpdGhpbiB0aGUgYm91bmRzIG9m
IFBPU0lYIHNoIChpLmUuIGNhbid0IHVzZQorICAgICAgICAgICAgIyAgIFBJUEVTVEFUVVMpCisg
ICAgICAgICAgICBjbWQgPSAieyB7IHsgeyAje3NoZWxsQ29tbWFuZH0gMj4mMTsgZWNobyAkPyA+
JjM7IH0gfCB7ICN7b3V0cHV0SGFuZGxlci5jYWxsKEBuYW1lKX0gO30gPiY0OyB9IDM+JjE7IH0g
fCB7IHJlYWQgeHM7IGV4aXQgJHhzOyB9IH0gND4mMVxuZXhpdENvZGU9JD9cbiIKKyAgICAgICAg
ICAgIGlmICR2ZXJib3NpdHkgPj0gMworICAgICAgICAgICAgICAgIG91dHAucHV0cyAiZWNobyAj
e1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoY21kKX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgIG91dHAucHV0cyBjbWQKKyAgICAgICAgICAgIEBlcnJvckhhbmRsZXIuY2FsbChvdXRwLCBz
ZWxmKQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3MgVGVzdFJ1bm5lclNoZWxsIDwg
VGVzdFJ1bm5lcgorICAgIGRlZiBpbml0aWFsaXplKHRlc3RSdW5uZXJUeXBlLCBydW5uZXJEaXIp
CisgICAgICAgIHN1cGVyKHRlc3RSdW5uZXJUeXBlLCBydW5uZXJEaXIpCisgICAgICAgIEB0ZXN0
TGlzdFBhdGggPSBydW5uZXJEaXIgKyAndGVzdGxpc3QnCisgICAgZW5kCisgICAgZGVmIHByZXBh
cmVSdW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0
cykKKyAgICAgICAgRmlsZVV0aWxzLmNwIFNDUklQVFNfUEFUSCArICJqc2Mtc3RyZXNzLXRlc3Qt
aGVscGVycyIgKyAic2hlbGwtcnVubmVyLnNoIiwgQHJ1bm5lckRpciArICJydW5zY3JpcHQiCisg
ICAgICAgIEZpbGUub3BlbihAdGVzdExpc3RQYXRoLCAidyIpIHsgfGZ8CisgICAgICAgICAgICBy
dW5saXN0LmVhY2ggeyB8cGxhbnwKKyAgICAgICAgICAgICAgICBpZiBjb21wbGV0ZWRQbGFucy5p
bmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICAgICAgZi5wdXRzKCJ0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9IikK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIGVuZAorICAgIGRlZiBjb21tYW5kKHJlbW90
ZUluZGV4PTApCisgICAgICAgICJzaCBydW5zY3JpcHQgI3tGaWxlLmJhc2VuYW1lKEB0ZXN0TGlz
dFBhdGgpfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBUZXN0UnVubmVyTWFrZSA8IFRlc3RSdW5u
ZXIKKyAgICBkZWYgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBwcmVyZXFzKQorICAgICAgICBp
bmRleCA9IHBsYW4uaW5kZXgKKyAgICAgICAgdGFyZ2V0ID0gInRlc3RfZG9uZV8je2luZGV4fSIK
KyAgICAgICAgb3V0cC5wdXRzICIje3RhcmdldH06ICN7cHJlcmVxcy5qb2luKCIgIil9IgorICAg
ICAgICBvdXRwLnB1dHMgIlx0c2ggdGVzdF9zY3JpcHRfI3tpbmRleH0iCisgICAgICAgIHRhcmdl
dAorICAgIGVuZAorICAgIGRlZiBwcmVwYXJlUnVubmVyRm9yUmVtb3RlKHJ1bmxpc3QsIHNlcmlh
bFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSW5kZXgpCisgICAgICAgICMgVGhlIGdvYWxz
IG9mIG91ciBwYXJhbGxlbCB0ZXN0IHJ1bm5lciBhcmUgc2NhbGFiaWxpdHkgYW5kIHNpbXBsaWNp
dHkuIFRoZQorICAgICAgICAjIHNpbXBsaWNpdHkgcGFydCBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0
YW50LiBXZSBkb24ndCB3YW50IHRvIGhhdmUgdG8gaGF2ZQorICAgICAgICAjIGEgZnVsbC10aW1l
IGNvbnRyaWJ1dG9yIGp1c3QgcGhpbG9zb3BoaXNpbmcgYWJvdXQgcGFyYWxsZWwgdGVzdGluZy4K
KyAgICAgICAgIworICAgICAgICAjIEFzIHN1Y2gsIHdlIGp1c3QgcGFzcyBvZmYgYWxsIG9mIHRo
ZSBoYXJkIHdvcmsgdG8gJ21ha2UnLiBUaGlzCisgICAgICAgICMgY3JlYXRlcyBhIGR1bW15IGRp
cmVjdG9yeSAoIiRvdXRwdXREaXIvLnJ1bm5lciIpIGluIHdoaWNoIHdlCisgICAgICAgICMgY3Jl
YXRlIGEgZHVtbXkgTWFrZWZpbGUuIFRoZSBNYWtlZmlsZSBoYXMgYSAncGFyYWxsZWwnIHJ1bGUg
dGhhdAorICAgICAgICAjIGRlcGVuZHMgYWxsIHRlc3RzLCBvdGhlciB0aGFuIHRoZSBvbmVzIG1h
cmtlZCAnc2VyaWFsJy4gVGhlCisgICAgICAgICMgc2VyaWFsIHRlc3RzIGFyZSBhcnJhbmdlZCBp
biBhIGNoYWluOyB0aGUgbGFzdCB0YXJnZXQgaW4gdGhlCisgICAgICAgICMgc2VyaWFsIGNoYWlu
IGRlcGVuZHMgb24gJ3BhcmFsbGVsJyBhbmQgJ2FsbCcgZGVwZW5kcyBvbiB0aGUgaGVhZAorICAg
ICAgICAjIG9mIHRoZSBjaGFpbi4gUnVubmluZyAnbWFrZSAtaiA8d2hhdGV2ZXI+JyBvbiB0aGlz
IE1ha2VmaWxlCisgICAgICAgICMgcmVzdWx0cyBpbiAnbWFrZScgZG9pbmcgYWxsIG9mIHRoZSBo
YXJkIHdvcms6CisgICAgICAgICMKKyAgICAgICAgIyAtIExvYWQgYmFsYW5jaW5nIGp1c3Qgd29y
a3MuIE1vc3Qgc3lzdGVtcyBoYXZlIGEgZ3JlYXQgbG9hZCBiYWxhbmNlciBpbgorICAgICAgICAj
ICAgJ21ha2UnLiBJZiB5b3VyIHN5c3RlbSBkb2Vzbid0IHRoZW4ganVzdCBpbnN0YWxsIGEgcmVh
bCAnbWFrZScuCisgICAgICAgICMKKyAgICAgICAgIyAtIEludGVycnVwdGlvbnMganVzdCB3b3Jr
LiBGb3IgZXhhbXBsZSBDdHJsLUMgaGFuZGxpbmcgaW4gJ21ha2UnIGlzCisgICAgICAgICMgICBl
eGFjdGx5IHJpZ2h0LiBZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB6b21iaWUgcHJvY2Vz
c2VzLgorICAgICAgICAjCisgICAgICAgICMgV2UgdGhlbiBkbyBzb21lIHRyaWNrcyB0byBtYWtl
IGZhaWx1cmUgZGV0ZWN0aW9uIHdvcmsgYW5kIHRvIG1ha2UgdGhpcworICAgICAgICAjIHRvdGFs
bHkgc291bmQuIElmIGEgdGVzdCBmYWlscywgd2UgZG9uJ3Qgd2FudCB0aGUgd2hvbGUgJ21ha2Un
IGpvYiB0bworICAgICAgICAjIHN0b3AuIFdlIGFsc28gZG9uJ3QgaGF2ZSBhbnkgZmFjaWxpdHkg
Zm9yIG1ha2VmaWxlLWVzY2FwaW5nIG9mIHBhdGggbmFtZXMuCisgICAgICAgICMgV2UgZG8gaGF2
ZSBzdWNoIGEgdGhpbmcgZm9yIHNoZWxsLWVzY2FwaW5nLCB0aG91Z2guIFdlIGZpeCBib3RoIHBy
b2JsZW1zCisgICAgICAgICMgYnkgaGF2aW5nIHRoZSBhY3R1YWwgd29yayBmb3IgZWFjaCBvZiB0
aGUgdGVzdCBydWxlcyBiZSBkb25lIGluIGEgc2hlbGwKKyAgICAgICAgIyBzY3JpcHQgb24gdGhl
IHNpZGUuIFRoZXJlIGlzIG9uZSBzdWNoIHNjcmlwdCBwZXIgdGVzdC4gVGhlIHNjcmlwdCByZXNw
b25kcworICAgICAgICAjIHRvIGZhaWx1cmUgYnkgcHJpbnRpbmcgc29tZXRoaW5nIG9uIHRoZSBj
b25zb2xlIGFuZCB0aGVuIHRvdWNoaW5nIGEKKyAgICAgICAgIyBmYWlsdXJlIGZpbGUgZm9yIHRo
YXQgdGVzdCwgYnV0IHRoZW4gc3RpbGwgcmV0dXJucyAwLiBUaGlzIG1ha2VzICdtYWtlJworICAg
ICAgICAjIGNvbnRpbnVlIHBhc3QgdGhhdCBmYWlsdXJlIGFuZCBjb21wbGV0ZSBhbGwgdGhlIHRl
c3RzIGFueXdheS4KKyAgICAgICAgIworICAgICAgICAjIEluIHRoZSBlbmQsIHRoaXMgc2NyaXB0
IGNvbGxlY3RzIGFsbCBvZiB0aGUgZmFpbHVyZXMgYnkgc2VhcmNoaW5nIGZvcgorICAgICAgICAj
IGZpbGVzIGluIHRoZSAucnVubmVyIGRpcmVjdG9yeSB3aG9zZSBuYW1lIG1hdGNoZXMgL150ZXN0
X2ZhaWxfLywgd2hlcmUKKyAgICAgICAgIyB0aGUgdGhpbmcgYWZ0ZXIgdGhlICdmYWlsXycgaXMg
dGhlIHRlc3QgaW5kZXguIFRob3NlIGFyZSB0aGUgZmlsZXMgdGhhdAorICAgICAgICAjIHdvdWxk
IGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0aGV5IGRldGVjdCBmYWlsdXJlLiBX
ZSdyZQorICAgICAgICAjIGJhc2ljYWxseSB1c2luZyB0aGUgZmlsZXN5c3RlbSBhcyBhIGNvbmN1
cnJlbnQgZGF0YWJhc2Ugb2YgdGVzdCBmYWlsdXJlcy4KKyAgICAgICAgIyBFdmVuIGlmIHR3byB0
ZXN0cyBmYWlsIGF0IHRoZSBzYW1lIHRpbWUsIHNpbmNlIHRoZXkncmUgdG91Y2hpbmcgZGlmZmVy
ZW50CisgICAgICAgICMgZmlsZXMgd2Ugd29uJ3QgbWlzcyBhbnkgZmFpbHVyZXMuCisgICAgICAg
IHJ1blBsYW5zID0gW10KKyAgICAgICAgc2VyaWFsUnVuUGxhbnMgPSBbXQorICAgICAgICBydW5s
aXN0LmVhY2ggeworICAgICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgIGlmIGNvbXBsZXRl
ZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICBpZiBAcmVtb3RlSG9zdHMubmlsPyBvciBwbGFuLmluZGV4ICUgQHJl
bW90ZUhvc3RzLmxlbmd0aCA9PSByZW1vdGVJbmRleAorICAgICAgICAgICAgICAgIGlmIHNlcmlh
bFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgICAgIHNlcmlhbFJ1blBsYW5z
IDw8IHBsYW4KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJ1blBs
YW5zIDw8IHBsYW4KKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZAorICAgICAg
ICB9CisKKyAgICAgICAgRmlsZS5vcGVuKEBydW5uZXJEaXIgKyAiTWFrZWZpbGUuI3tyZW1vdGVJ
bmRleH0iLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAgICAgICAgICBpZiBzZXJp
YWxSdW5QbGFucy5lbXB0eT8KKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMoImFsbDogcGFyYWxs
ZWwiKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNlcmlhbFByZXJlcSA9ICJ0
ZXN0X2RvbmVfI3tzZXJpYWxSdW5QbGFuc1stMV0uaW5kZXh9IgorICAgICAgICAgICAgICAgIG91
dHAucHV0cygiYWxsOiAje3NlcmlhbFByZXJlcX0iKQorICAgICAgICAgICAgICAgIHByZXZfdGFy
Z2V0ID0gInBhcmFsbGVsIgorICAgICAgICAgICAgICAgIHNlcmlhbFJ1blBsYW5zLmVhY2ggewor
ICAgICAgICAgICAgICAgICAgICB8IHBsYW4gfAorICAgICAgICAgICAgICAgICAgICBwcmV2X3Rh
cmdldCA9IG91dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgW3ByZXZfdGFyZ2V0XSkKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIHBhcmFsbGVsVGFyZ2V0cyA9
IHJ1blBsYW5zLmNvbGxlY3QgeworICAgICAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAg
ICAgICAgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbXSkKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIG91dHAucHV0cygicGFyYWxsZWw6ICIgKyBwYXJhbGxlbFRhcmdldHMuam9pbigiICIp
KQorICAgICAgICB9CisgICAgZW5kCisgICAgZGVmIHByZXBhcmVSdW5uZXIocnVubGlzdCwgc2Vy
aWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykKKyAgICAgICAgaWYgcmVtb3Rl
SG9zdHMubmlsPworICAgICAgICAgICAgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0LCBz
ZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIDApCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJlbW90ZUhvc3RzLmVhY2hfaW5kZXggeworICAgICAgICAgICAgICAgIHxyZW1vdGVJbmRleHwK
KyAgICAgICAgICAgICAgICBwcmVwYXJlUnVubmVyRm9yUmVtb3RlKHJ1bmxpc3QsIHNlcmlhbFBs
YW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSW5kZXgpCisgICAgICAgICAgICB9CisgICAgICAg
IGVuZAorICAgIGVuZAorICAgIGRlZiBjb21tYW5kKHJlbW90ZUluZGV4PTApCisgICAgICAgICJt
YWtlIC1qICN7JG51bUNoaWxkUHJvY2Vzc2VzfSAtcyAtZiBNYWtlZmlsZS4je3JlbW90ZUluZGV4
fSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBUZXN0UnVubmVyUnVieSA8IFRlc3RSdW5uZXIKKyAg
ICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMs
IHJlbW90ZUhvc3RzKQorICAgICAgICBGaWxlLm9wZW4oQHJ1bm5lckRpciArICJydW5zY3JpcHQi
LCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAgICAgICAgICBydW5saXN0LmVhY2gg
eworICAgICAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICAgICAgaWYgY29tcGxldGVk
UGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgICAgIG91dHAucHV0cyAicHJpbnQgYHNoIHRlc3Rfc2Ny
aXB0XyN7cGxhbi5pbmRleH0gMj4mMWAiCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBl
bmQKKyAgICBkZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAgICAgICAicnVieSBydW5zY3Jp
cHQiCisgICAgZW5kCitlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9q
c2Mtc3RyZXNzLXRlc3Qvd3JpdGVyLXBsYXlzdGF0aW9uLnJiIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRydWJ5L2pzYy1zdHJlc3MtdGVzdC93cml0ZXItcGxheXN0YXRpb24ucmIKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmE3YWE5N2ZjZTJlNWRlYWYzYWEwMDgyNmExZWViMzllMWQ5ODk5NAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qvd3JpdGVyLXBsYXlz
dGF0aW9uLnJiCkBAIC0wLDAgKzEsNDIxIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBTb255IElu
dGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK3JlcXVpcmUgJ29wZW4zJworCiskaGFzRGlmZiA9IGZhbHNlCitpZiAoJGhvc3RP
UyA9PSAnd2luZG93cycgfHwgJGhvc3RPUyA9PSAncGxheXN0YXRpb24nKQorICAgIG91dCwgZXJy
LCBzdGF0dXMgPSBPcGVuMy5jYXB0dXJlMygid2hlcmUiLCAiL3EiLCAiZGlmZiIpCisgICAgJGhh
c0RpZmYgPSBzdGF0dXMuc3VjY2Vzcz8KK2Vsc2UKKyAgICBvdXQsIGVyciwgc3RhdHVzID0gT3Bl
bjMuY2FwdHVyZTMoIndoaWNoIiwgImRpZmYiKQorICAgICRoYXNEaWZmID0gc3RhdHVzLnN1Y2Nl
c3M/CitlbmQKKworIyBQcmVmaXggZWFjaCBsaW5lIG9mIHN0ciB3aXRoIHRoZSBuYW1lCitkZWYg
cHJlZml4U3RyaW5nKHN0ciwgbmFtZSkKKyAgICAiI3tzdHJ9LmVtcHR5PyA/IFwiXCIgOiAje3N0
cn0uZ3N1YigvXi9tLCBcIiN7bmFtZX06IFwiKSIKK2VuZAorCitkZWYgc2lsZW50T3V0cHV0SGFu
ZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBuYW1lIHwKKyAgICAgICAgPDwtRU5EX1NJ
TEVOVF9PVVRQVVRfSEFORExFUgorICAgICAgICBvdXQgPSBvdXQgKyBlcnIKKyAgICAgICAgZXJy
ID0gbmlsCisgICAgICAgIFNURE9VVC5wdXRzICN7cHJlZml4U3RyaW5nKCJvdXQiLCBuYW1lKX0g
aWYgKCFvdXQuZW1wdHk/KQorICAgICAgICBGaWxlLm9wZW4oIiN7U2hlbGx3b3Jkcy5zaGVsbGVz
Y2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3MpfSIsICJ3IikgZG8g
fG91dF9maWxlfAorICAgICAgICAgICAgb3V0X2ZpbGUucHV0cyBvdXQKKyAgICAgICAgZW5kCisg
ICAgICAgIEVORF9TSUxFTlRfT1VUUFVUX0hBTkRMRVIKKyAgICB9CitlbmQKKworIyBPdXRwdXQg
aGFuZGxlciBmb3IgdGVzdHMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gcHJvZHVjZSBtZWFuaW5nZnVs
IG91dHB1dC4KK2RlZiBub2lzeU91dHB1dEhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAg
IHwgbmFtZSB8CisgICAgICAgIDw8LUVORF9OT0lTWV9PVVRQVVRfSEFORExFUgorICAgICAgICBv
dXQgPSBvdXQgKyBlcnIKKyAgICAgICAgZXJyID0gbmlsCisgICAgICAgIEZpbGUub3BlbigiI3tT
aGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChuYW1lICsgIi5vdXQiKSku
dG9fcyl9IiwgInciKSBkbyB8b3V0X2ZpbGV8CisgICAgICAgICAgICBvdXRfZmlsZS5wdXRzIG91
dAorICAgICAgICBlbmQKKyAgICAgICAgRU5EX05PSVNZX09VVFBVVF9IQU5ETEVSCisgICAgfQor
ZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0
aGV5IHJldHVybiBub24temVybyBleGl0IHN0YXR1cy4KKyMgVGhpcyBpcyB1c2VmdWwgd2hlbiBh
IHRlc3QgaXMgZXhwZWN0ZWQgdG8gZmFpbC4KK2RlZiBzaW1wbGVFcnJvckhhbmRsZXIKKyAgICBQ
cm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHAucHV0cyAiaWYg
IXN1Y2Nlc3NcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmlu
ZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzfVxcblwiIiwgcGxhbi5u
YW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21t
YW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAi
ICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgorICAgIH0K
K2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4g
dGhleSByZXR1cm4gemVybyBleGl0IHN0YXR1cy4KK2RlZiBleHBlY3RlZEZhaWxFcnJvckhhbmRs
ZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHAu
cHV0cyAiaWYgc3VjY2Vzc1xuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJl
Zml4U3RyaW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSAwXFxuXCIiLCBwbGFuLm5h
bWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1h
bmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIg
KyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAgfQor
ZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0
aGV5IHJldHVybiBub24temVybyBleGl0IHN0YXR1cyBhbmQgcHJvZHVjZQorIyBsb3RzIG9mIHNw
ZXcuIFRoaXMgd2lsbCBlY2hvIHRoYXQgc3BldyB3aGVuIHRoZSB0ZXN0IGZhaWxzLgorZGVmIG5v
aXN5RXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAor
ICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzXG4iCisgICAgICAgIG91dHAucHV0cyAiICAg
IHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAg
IG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0
ZWQgZXhpdCBjb2RlIFwje3N0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAg
IG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1
dHMgImVsc2VcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1h
bmQKKyAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIKKyAgICB9CitlbmQKKworIGRlZiBmYWxsYmFj
a0RpZmYoZXhwZWN0ZWQsIG91dHB1dCkKKyAgICA8PC1FTkRfRkFMTEJBQ0tfRElGRgorICAgICAg
ICAgIyBGYWxsYmFjayBkaWZmIGZvciB3aGVuIGRpZmYoMSkgaXNuJ3QgYXZhaWxhYmxlCisgICAg
ICAgICBkaWZmcyA9IFtdCisgICAgICAgICBsaW5lX251bWJlciA9IDAKKyAgICAgICAgIEZpbGUu
b3BlbigiI3tleHBlY3RlZH0iKSBkbyB8IGV4cGVjdGVkIHwKKyAgICAgICAgICAgICBGaWxlLm9w
ZW4oIiN7b3V0cHV0fSIpIGRvIHwgYWN0dWFsIHwKKyAgICAgICAgICAgICAgICAgbG9vcCBkbwor
ICAgICAgICAgICAgICAgICAgICAgbDEgPSBleHBlY3RlZC5nZXRzCisgICAgICAgICAgICAgICAg
ICAgICBsMiA9IGFjdHVhbC5nZXRzCisgICAgICAgICAgICAgICAgICAgICBpZiAobDEgIT0gbDIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZnMucHVzaChbbGluZV9udW1iZXIsIGwxLCBs
Ml0pCisgICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgIGxpbmVf
bnVtYmVyID0gbGluZV9udW1iZXIgKyAxCisgICAgICAgICAgICAgICAgICAgICBicmVhayBpZiAo
bDEgPT0gbmlsICYmIGwyID09IG5pbCkKKyAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAg
ICAgZW5kCisgICAgICAgICBlbmQKKyAgICAgICAgIGlzRGlmZmVyZW50ID0gIWRpZmZzLmVtcHR5
PworICAgICAgICAgZGlmZk91dCA9IGRpZmZzLm1hcCB7CisgICAgICAgICAgICAgfCBkaWZmIHwK
KyAgICAgICAgICAgICAiQEAgLVwje2RpZmZbMF19LDEgK1wje2RpZmZbMF19LDEgQEBcXG4iICsK
KyAgICAgICAgICAgICAoZGlmZlsxXSA/ICItXCN7ZGlmZlsxXX0iIDogIiIpICsKKyAgICAgICAg
ICAgICAoZGlmZlsyXSA/ICIrXCN7ZGlmZlsyXX0iIDogIiIpCisgICAgICAgIH0uam9pbigiIikK
KyAgICBFTkRfRkFMTEJBQ0tfRElGRgorZW5kCisKK2RlZiBydW5EaWZmKGV4cGVjdGVkLCBvdXRw
dXQpCisgICAgPDwtRU5EX1JVTl9ESUZGCisgICAgICAgIGRpZmZPdXQsIGRpZmZTdGF0dXMgPSBP
cGVuMy5jYXB0dXJlMigiZGlmZiIsCisgICAgICAgICAgICAiLS1zdHJpcC10cmFpbGluZy1jciIs
CisgICAgICAgICAgICAiLXUiLAorICAgICAgICAgICAgIiN7ZXhwZWN0ZWR9IiwKKyAgICAgICAg
ICAgICIje291dHB1dH0iKTsKKyAgICAgICAgaXNEaWZmZXJlbnQgPSAhZGlmZlN0YXR1cy5zdWNj
ZXNzPworICAgIEVORF9SVU5fRElGRgorZW5kCisKKyMgR2V0IGEgZGlmZmVyZW5jZSBiZXR3ZWVu
IHR3byBmaWxlcywgdXNpbmcgZGlmZiB3aGVyZSBhdmFpbGFibGUsIGZhbGxpbmcgYmFjaworIyBv
biBhIGxpbWl0ZWQgY29tcGFyaXNvbiB3aGVuIGRpZmYgaXMgbm90IGF2YWlsYWJsZQorZGVmIGdl
dERpZmYoZXhwZWN0ZWQsIG91dHB1dCkKKyAgICBpZiAkaGFzRGlmZgorICAgICAgICBydW5EaWZm
KGV4cGVjdGVkLCBvdXRwdXQpCisgICAgZWxzZQorICAgICAgICBmYWxsYmFja0RpZmYoZXhwZWN0
ZWQsb3V0cHV0KQorICAgIGVuZAorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhh
dCBkaWZmIHRoZWlyIG91dHB1dCB3aXRoIHNvbWUgZXhwZWN0YXRpb24uCitkZWYgZGlmZkVycm9y
SGFuZGxlcihleHBlY3RlZEZpbGVuYW1lKQorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRw
LCBwbGFuIHwKKyAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBl
KChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQorCisgICAgICAg
IG91dHAucHV0cyAiaWYgIXN1Y2Nlc3NcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQg
IiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0
IGNvZGUgXCN7c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNpZiBG
aWxlLmV4aXN0cz8oXCIuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFt
ZSl9XCIpXG4iCisgICAgICAgIG91dHAucHV0cyBnZXREaWZmKCIuLi8je1NoZWxsd29yZHMuc2hl
bGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFtZSl9Iiwgb3V0cHV0RmlsZW5hbWUpCisgICAgICAgIG91
dHAucHV0cyAiICAgIGlmIGlzRGlmZmVyZW50XG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICAg
ICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkRJRkYgRkFJTFVSRSFcXG5cIiIsIHBsYW4ubmFt
ZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICBwcmludCAiICsgcHJlZml4U3Ry
aW5nKCJkaWZmT3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
ICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiICAgIGVsc2UiCisg
ICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAg
ICBvdXRwLnB1dHMgIiAgICBlbmQiCisgICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgorICAgICAg
ICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIk5PIEVYUEVDVEFUSU9O
IVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQg
IiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbmQiCisg
ICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3Ig
Ynkgc2F5aW5nICJmYWlsZWQhIi4gVGhpcyBpcyB1c2VkIGJ5IE1vemlsbGEKKyMgdGVzdHMuCitk
ZWYgbW96aWxsYUVycm9ySGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBw
bGFuIHwKKyAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2Vzc1xuIgorICAgICAgICBvdXRwLnB1
dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgor
ICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkVSUk9SOiBV
bmV4cGVjdGVkIGV4aXQgY29kZSBcI3tzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgor
ICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAg
b3V0cC5wdXRzICJlbHNpZiAvZmFpbGVkIS9pID1+IG91dFxuIgorICAgICAgICBvdXRwLnB1dHMg
IiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkRldGVjdGVkIGZhaWx1cmVzOlxcblwiIiwg
cGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZp
eFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisgICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0
cyAiZW5kXG4iCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBy
ZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0bworIyBm
YWlsLiBUaGlzIGlzIHVzZWQgYnkgTW96aWxsYSB0ZXN0cy4KK2RlZiBtb3ppbGxhRmFpbEVycm9y
SGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAg
b3V0cC5wdXRzICJpZiAhc3VjY2Vzc1xuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxh
bi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2lmIC9mYWlsZWQhL2kgPX4g
b3V0XG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisg
ICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAi
ICsgcHJlZml4U3RyaW5nKCJcIk5PVElDRTogWW91IG1hZGUgdGhpcyB0ZXN0IHBhc3MsIGJ1dCBp
dCB3YXMgZXhwZWN0ZWQgdG8gZmFpbFxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJl
bmRcbiIKKyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9y
dCBlcnJvciBieSBzYXlpbmcgImZhaWxlZCEiLCBhbmQgYXJlIGV4cGVjdGVkIHRvIGhhdmUKKyMg
YW4gZXhpdCBjb2RlIG9mIDMuCitkZWYgbW96aWxsYUV4aXQzRXJyb3JIYW5kbGVyCisgICAgUHJv
Yy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwLnB1dHMgImlmIHN1
Y2Nlc3NcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygi
b3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiAr
IHByZWZpeFN0cmluZygiXCJFUlJPUjogVGVzdCBleHBlY3RlZCB0byBmYWlsLCBidXQgcmV0dXJu
ZWQgc3VjY2Vzc2Z1bGx5XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1
dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNp
ZiBzdGF0dXMgIT0gMyIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0
cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJp
bnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6IFwje3N0
YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICAg
ICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2lmIC9mYWlsZWQh
L2kgPX4gb3V0XG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJp
bmcoIlwiRGV0ZWN0ZWQgZmFpbHVyZXM6XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAg
ICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUp
ICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAg
ICAgICBvdXRwLnB1dHMgImVsc2VcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4u
c3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIKKyAgICB9CitlbmQKKwor
IyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9ydCBzdWNjZXNzIGJ5IHNheWluZyAi
UGFzc2VkIiBvciBlcnJvciBieSBzYXlpbmcgIkZBSUxFRCIuCisjIFRoaXMgaXMgdXNlZCBieSBD
aGFrcmEgdGVzdHMuCitkZWYgY2hha3JhUGFzc0ZhaWxFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5l
dyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nl
c3NcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0
IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHBy
ZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzfVxcblwi
IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFp
bENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvRkFJTEVEL2kgPX4gb3V0XG4iCisg
ICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRGV0ZWN0ZWQg
ZmFpbHVyZXM6XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAg
ICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMg
ImVsc2VcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQK
KyAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIKKyAgIH0KK2VuZAorCitjbGFzcyBQbGFuIDwgQmFz
ZVBsYW4KKyAgICBkZWYgYXJndW1lbnRzTWFwcGVyKGFyZ3VtZW50cykKKyAgICAgICAgYXJndW1l
bnRzWzEuLi0xXQorICAgIGVuZAorICAgIGRlZiBzaGVsbENvbW1hbmQKKyAgICAgICAgbiA9IEBu
YW1lLmdzdWIoLyhcXHxcLykvLCAnXycpCisgICAgICAgIHNjcmlwdCA9ICJvdXQgPSBuaWxcbiIK
KyAgICAgICAgc2NyaXB0ICs9ICJlcnIgPSBuaWxcbiIKKyAgICAgICAgc2NyaXB0ICs9ICJzdGF0
dXMgPSAtMVxuIjsKKyAgICAgICAgc2NyaXB0ICs9ICJzdWNjZXNzID0gZmFsc2VcbiIKKyAgICAg
ICAgc2NyaXB0ICs9ICJGaWxlLm9wZW4oXCIje259LWV4aXRcIiwgXCJyXCIpIGRvIHxzdGF0fFxu
IjsKKyAgICAgICAgc2NyaXB0ICs9ICIgIHN0YXR1cyA9IHN0YXQuZ2V0cy50b19pXG4iCisgICAg
ICAgIHNjcmlwdCArPSAiZW5kXG4iCisgICAgICAgIHNjcmlwdCArPSAiaWYgKHN0YXR1cyA9PSAw
KVxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgc3VjY2VzcyA9IHRydWVcbiIKKyAgICAgICAgc2Ny
aXB0ICs9ICJlbmRcbiIKKworICAgICAgICBzY3JpcHQgKz0gIm91dCA9IEZpbGUub3BlbihcIiN7
bn0tc3Rkb3V0XCIsIFwiclwiKS5yZWFkXG4iCisgICAgICAgIHNjcmlwdCArPSAiZXJyID0gRmls
ZS5vcGVuKFwiI3tufS1zdGRlcnJcIiwgXCJyXCIpLnJlYWRcbiIKKyAgICAgICAgcmV0dXJuIHNj
cmlwdAorICAgIGVuZAorCisgICAgZGVmIHJlcHJvU2NyaXB0SGVscGVyCisgICAgICAgIHJldHVy
biAiIgorICAgIGVuZAorCisgICAgZGVmIHJlcHJvU2NyaXB0Q29tbWFuZAorICAgICAgICByZXR1
cm4gIiIKKyAgICBlbmQKKworICAgIGRlZiBzdGF0dXNDb21tYW5kKHN0YXR1c19jb2RlKQorICAg
ICAgICAjIE1heSBiZSBjYWxsZWQgaW4gdGggcmVzY3VlIGJsb2NrLCBzbyBzdGF0dXMgaXMgbm90
CisgICAgICAgICMgZ3VhcmFudGVlZCB0byBiZSBzZXQ7IGlmIGl0IGlzbid0LCBzZXQgdGhlIGV4
aXQgY29kZSB0bworICAgICAgICAjIHNvbWV0aGluZyB0aGF0J3MgY2xlYXJseSBpbnZhbGlkLgor
ICAgICAgICA8PC1FTkRfU1RBVFVTX0NPTU1BTkQKKyAgICAgICAgICBGaWxlLm9wZW4oIiN7c3Rh
dHVzRmlsZX0iLCAidyIpIHsgfGZ8CisgICAgICAgICAgICAgIGYucHV0cygiI3skcnVuVW5pcXVl
SWR9IFwje3N0YXR1cy5uaWw/ID8gOTk5OTk5OTk5IDogc3RhdHVzfSAje3N0YXR1c19jb2RlfSIp
CisgICAgICAgICAgfQorICAgICAgICBFTkRfU1RBVFVTX0NPTU1BTkQKKyAgICBlbmQKKworICAg
IGRlZiBmYWlsQ29tbWFuZAorICAgICAgICA8PC1FTkRfRkFJTF9DT01NQU5ECisgICAgICAgICAg
ICBwcmludCAiRkFJTDogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX1cbiIKKyAgICAg
ICAgICAgICN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9GQUlMKX0KKyAgICAgICAgICAgICN7
cmVwcm9TY3JpcHRDb21tYW5kfQorICAgICAgICBFTkRfRkFJTF9DT01NQU5ECisgICAgZW5kCisK
KyAgICBkZWYgc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgaWYgJHByb2dyZXNzTWV0ZXIgb3IgJHZl
cmJvc2l0eSA+PSAyCisgICAgICAgICAgICA8PC1FTkRfVkVSQk9TRV9TVUNDRVNTX0NPTU1BTkQK
KyAgICAgICAgICAgICAgICBwcmludCAiUEFTUzogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBu
YW1lKX1cbiIKKyAgICAgICAgICAgICAgICAje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfUEFT
Uyl9CisgICAgICAgICAgICBFTkRfVkVSQk9TRV9TVUNDRVNTX0NPTU1BTkQKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgIiN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9QQVNTKX1cbiIKKyAg
ICAgICAgZW5kCisgICAgZW5kCisKKyAgICBkZWYgc3RhdHVzRmlsZQorICAgICAgICAiI3tTVEFU
VVNfRklMRV9QUkVGSVh9I3tAaW5kZXh9IgorICAgIGVuZAorCisgICAgZGVmIHdyaXRlUnVuU2Ny
aXB0KGZpbGVuYW1lKQorICAgICAgICBqc29uZmlsZXBhcnQgPSBmaWxlbmFtZS5iYXNlbmFtZS50
b19zICsgIi5qc29uIgorICAgICAgICBqc29uZGlyID0gZmlsZW5hbWUuZGlybmFtZS5wYXJlbnQg
KyAiLmpzb24iCisgICAgICAgIGlmICghanNvbmRpci5leGlzdD8pCisgICAgICAgICAgICBqc29u
ZGlyLm1rZGlyCisgICAgICAgIGVuZAorICAgICAgICBGaWxlLm9wZW4oanNvbmRpciArIGpzb25m
aWxlcGFydCwgInciKSB7CisgICAgICAgICAgICB8b3V0cHwKKworICAgICAgICAgICAgYmFzZURp
ciA9ICgkcnVubmVyRGlyICsgIi4uIiArIEBkaXJlY3RvcnkpLnJlYWxkaXJwYXRoCisKKyAgICAg
ICAgICAgIG91dHAucHV0cyBKU09OLmdlbmVyYXRlKHsKKyAgICAgICAgICAgICAgICBuYW1lOiBA
bmFtZSwKKyAgICAgICAgICAgICAgICBvdXRwdXREaXI6ICRydW5uZXJEaXIsCisgICAgICAgICAg
ICAgICAgYmFzZURpcjogYmFzZURpciwKKyAgICAgICAgICAgICAgICBlbnY6ICRlbnZWYXJzICsg
QGFkZGl0aW9uYWxFbnYsCisgICAgICAgICAgICAgICAgb3V0cHV0TmFtZTogQG5hbWUuZ3N1Yigv
KFxcfFwvKS8sICdfJyksCisgICAgICAgICAgICAgICAgY2hlY2tTY3JpcHQ6IGZpbGVuYW1lLAor
ICAgICAgICAgICAgICAgIGFyZ3M6IEBhcmd1bWVudHMsCisgICAgICAgICAgICAgICAgc3RhdHVz
RmlsZTogIiN7c3RhdHVzRmlsZX0iLAorICAgICAgICAgICAgfSkKKyAgICAgICAgfQorCisgICAg
ICAgIEZpbGUub3BlbihmaWxlbmFtZSwgInciKSB7CisgICAgICAgICAgICB8IG91dHAgfAorICAg
ICAgICAgICAgI291dHAucHV0cyAicHJpbnQgXCJSdW5uaW5nICN7U2hlbGx3b3Jkcy5zaGVsbGVz
Y2FwZShAbmFtZSl9XFxuXCIiCisgICAgICAgICAgICBvdXRwLnB1dHMgIiN7cmVwcm9TY3JpcHRI
ZWxwZXJ9IgorICAgICAgICAgICAgb3V0cC5wdXRzICJiZWdpbiIKKyAgICAgICAgICAgIG91dHAu
cHV0cyAicmVxdWlyZSAnb3BlbjMnIgorICAgICAgICAgICAgb3V0cC5wdXRzICJyZXF1aXJlICdm
aWxldXRpbHMnIgorCisgICAgICAgICAgICBjbWQgPSBzaGVsbENvbW1hbmQKKworICAgICAgICAg
ICAgY21kICs9IEBvdXRwdXRIYW5kbGVyLmNhbGwoQG5hbWUpCisKKyAgICAgICAgICAgIGlmICR2
ZXJib3NpdHkgPj0gMworICAgICAgICAgICAgICAgIG91dHAucHV0cyAicHJpbnQgXCIje1NoZWxs
d29yZHMuc2hlbGxlc2NhcGUoY21kKX1cXG5cIiIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgb3V0cC5wdXRzIGNtZAorICAgICAgICAgICAgQGVycm9ySGFuZGxlci5jYWxsKG91dHAsIHNl
bGYpCisgICAgICAgICAgICBvdXRwLnB1dHMgInJlc2N1ZSBSdW50aW1lRXJyb3IgPT4gZSIKKyAg
ICAgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50IFwiRkFJTDogI3tTaGVsbHdvcmRzLnNoZWxs
ZXNjYXBlKEBuYW1lKX1cXG5cIiIKKyAgICAgICAgICAgIG91dHAucHV0cyAiICAgICN7c3RhdHVz
Q29tbWFuZChTVEFUVVNfRklMRV9GQUlMKX0iCisgICAgICAgICAgICBvdXRwLnB1dHMgImVuZCIK
KyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2RlZiBwcmVwYXJlUGxheVN0YXRpb25UZXN0UnVu
bmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucykKKyAgICBGaWxlLm9wZW4o
QHJ1bm5lckRpciArICJydW5zY3JpcHQiLCAidyIpIHsKKyAgICAgICAgfCBvdXRwIHwKKyAgICAg
ICAgcnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICBpZiBj
b21wbGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgIG5leHQKKyAgICAg
ICAgICAgIGVuZAorCisgICAgICAgICAgICBvdXRwLnB1dHMgIi4uLy5qc29uL3Rlc3Rfc2NyaXB0
XyN7cGxhbi5pbmRleH0uanNvbiIKKyAgICAgICAgfQorICAgIH0KK2VuZAorCitjbGFzcyBQbGF5
c3RhdGlvblRlc3RSdW5uZXIgPCBUZXN0UnVubmVyCisgICAgZGVmIHByZXBhcmVSdW5uZXIocnVu
bGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykKKyAgICAgICAg
RmlsZS5vcGVuKEBydW5uZXJEaXIgKyAicnVuc2NyaXB0IiwgInciKSB7CisgICAgICAgICAgICB8
IG91dHAgfAorICAgICAgICAgICAgcnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAgICAgICB8IHBs
YW4gfAorICAgICAgICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisg
ICAgICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgICBvdXRwLnB1dHMgIi4uLy5qc29uL3Rlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0uanNvbiIK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIGVuZAorICAgIGRlZiBjb21tYW5kKHJlbW90
ZUluZGV4PTApCisgICAgICAgIG9wdGlvbnMgPSBFTlZbIkpTQ1RFU1Rfb3B0aW9ucyJdCisKKyAg
ICAgICAgZnNSb290ID0gJGpzY1BhdGguZGlybmFtZQorICAgICAgICBjb21tYW5kID0gIlBsYXlT
dGF0aW9uVGVzdFJ1bm5lciAje29wdGlvbnN9IC1udW1Qcm9jZXNzZXM9I3skbnVtQ2hpbGRQcm9j
ZXNzZXMudG9fc30gLWV4ZT0jeyRqc2NQYXRofSAtZnNyb290PSN7ZnNSb290fSAtLXJ1blVuaXF1
ZUlkPSN7JHJ1blVuaXF1ZUlkfSBAI3tAcnVubmVyRGlyfS9ydW5zY3JpcHQiCisKKyAgICAgICAg
cHJpbnQgY29tbWFuZAorCisgICAgICAgIHJldHVybiBjb21tYW5kCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgVGVzdFJ1bm5lclNoZWxsIDwgUGxheXN0YXRpb25UZXN0UnVubmVyCitlbmQKKworY2xh
c3MgVGVzdFJ1bm5lck1ha2UgPCBQbGF5c3RhdGlvblRlc3RSdW5uZXIKK2VuZAorCitjbGFzcyBU
ZXN0UnVubmVyUnVieSA8IFBsYXlzdGF0aW9uVGVzdFJ1bm5lcgorZW5kCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3dyaXRlci1ydWJ5LnJiIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC93cml0ZXItcnVieS5yYgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xZDdlYTc1MTFiNjMzZjllNmFlMDkzYzIyZTY0NTRhNTAyODc5NTg2Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC93
cml0ZXItcnVieS5yYgpAQCAtMCwwICsxLDQ3NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
IyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCityZXF1aXJlICdvcGVuMycKKworJGhhc0RpZmYgPSBmYWxzZQoraWYgKCRo
b3N0T1MgPT0gJ3dpbmRvd3MnKQorICAgIG91dCwgZXJyLCBzdGF0dXMgPSBPcGVuMy5jYXB0dXJl
Mygid2hlcmUiLCAiL3EiLCAiZGlmZiIpCisgICAgJGhhc0RpZmYgPSBzdGF0dXMuc3VjY2Vzcz8K
K2Vsc2UKKyAgICBvdXQsIGVyciwgc3RhdHVzID0gT3BlbjMuY2FwdHVyZTMoIndoaWNoIiwgImRp
ZmYiKQorICAgICRoYXNEaWZmID0gc3RhdHVzLnN1Y2Nlc3M/CitlbmQKKworIyBQcmVmaXggZWFj
aCBsaW5lIG9mIHN0ciB3aXRoIHRoZSBuYW1lCitkZWYgcHJlZml4U3RyaW5nKHN0ciwgbmFtZSkK
KyAgICAiI3tzdHJ9LmVtcHR5PyA/IFwiXCIgOiAje3N0cn0uZ3N1YigvXi9tLCBcIiN7bmFtZX06
IFwiKSIKK2VuZAorCitkZWYgc2lsZW50T3V0cHV0SGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAg
ICAgICAgfCBuYW1lIHwKKyAgICAgICAgPDwtRU5EX1NJTEVOVF9PVVRQVVRfSEFORExFUgorICAg
ICAgICBvdXQgPSBvdXQgKyBlcnIKKyAgICAgICAgZXJyID0gbmlsCisgICAgICAgIFNURE9VVC5w
dXRzICN7cHJlZml4U3RyaW5nKCJvdXQiLCBuYW1lKX0gaWYgKCFvdXQuZW1wdHk/KQorICAgICAg
ICBGaWxlLm9wZW4oIiN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAo
bmFtZSArICIub3V0IikpLnRvX3MpfSIsICJ3IikgZG8gfG91dF9maWxlfAorICAgICAgICAgICAg
b3V0X2ZpbGUucHV0cyBvdXQKKyAgICAgICAgZW5kCisgICAgICAgIEVORF9TSUxFTlRfT1VUUFVU
X0hBTkRMRVIKKyAgICB9CitlbmQKKworIyBPdXRwdXQgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBh
cmUgZXhwZWN0ZWQgdG8gcHJvZHVjZSBtZWFuaW5nZnVsIG91dHB1dC4KK2RlZiBub2lzeU91dHB1
dEhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgbmFtZSB8CisgICAgICAgIDw8LUVO
RF9OT0lTWV9PVVRQVVRfSEFORExFUgorICAgICAgICBvdXQgPSBvdXQgKyBlcnIKKyAgICAgICAg
ZXJyID0gbmlsCisgICAgICAgIEZpbGUub3BlbigiI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQ
YXRobmFtZSgiLi4iKSArIChuYW1lICsgIi5vdXQiKSkudG9fcyl9IiwgInciKSBkbyB8b3V0X2Zp
bGV8CisgICAgICAgICAgICBvdXRfZmlsZS5wdXRzIG91dAorICAgICAgICBlbmQKKyAgICAgICAg
RU5EX05PSVNZX09VVFBVVF9IQU5ETEVSCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBm
b3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiBub24temVybyBleGl0
IHN0YXR1cy4KKyMgVGhpcyBpcyB1c2VmdWwgd2hlbiBhIHRlc3QgaXMgZXhwZWN0ZWQgdG8gZmFp
bC4KK2RlZiBzaW1wbGVFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0
cCwgcGxhbiB8CisgICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3Moc3RhdHVzKVxuIgorICAg
ICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkVSUk9SOiBVbmV4
cGVjdGVkIGV4aXQgY29kZSBcI3tzdGF0dXMuZXhpdHN0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkg
KyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAor
ICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBs
YW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIKKyAgICB9CitlbmQK
KworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3RseSB3aGVuIHRoZXkg
cmV0dXJuIHplcm8gZXhpdCBzdGF0dXMuCitkZWYgZXhwZWN0ZWRGYWlsRXJyb3JIYW5kbGVyCisg
ICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwLnB1dHMg
ImlmIHN1Y2Nlc3Moc3RhdHVzKVxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsg
cHJlZml4U3RyaW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSAwXFxuXCIiLCBwbGFu
Lm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENv
bW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAg
ICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAg
fQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hl
biB0aGV5IHJldHVybiBub24temVybyBleGl0IHN0YXR1cyBhbmQgcHJvZHVjZQorIyBsb3RzIG9m
IHNwZXcuIFRoaXMgd2lsbCBlY2hvIHRoYXQgc3BldyB3aGVuIHRoZSB0ZXN0IGZhaWxzLgorZGVm
IG5vaXN5RXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4g
fAorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJc
biIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJP
UjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxuXCIiLCBwbGFu
Lm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENv
bW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAg
ICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAg
fQorZW5kCisKKyBkZWYgZmFsbGJhY2tEaWZmKGV4cGVjdGVkLCBvdXRwdXQpCisgICAgPDwtRU5E
X0ZBTExCQUNLX0RJRkYKKyAgICAgICAgICMgRmFsbGJhY2sgZGlmZiBmb3Igd2hlbiBkaWZmKDEp
IGlzbid0IGF2YWlsYWJsZQorICAgICAgICAgZGlmZnMgPSBbXQorICAgICAgICAgbGluZV9udW1i
ZXIgPSAwCisgICAgICAgICBGaWxlLm9wZW4oIiN7ZXhwZWN0ZWR9IikgZG8gfCBleHBlY3RlZCB8
CisgICAgICAgICAgICAgRmlsZS5vcGVuKCIje291dHB1dH0iKSBkbyB8IGFjdHVhbCB8CisgICAg
ICAgICAgICAgICAgIGxvb3AgZG8KKyAgICAgICAgICAgICAgICAgICAgIGwxID0gZXhwZWN0ZWQu
Z2V0cworICAgICAgICAgICAgICAgICAgICAgbDIgPSBhY3R1YWwuZ2V0cworICAgICAgICAgICAg
ICAgICAgICAgaWYgKGwxICE9IGwyKQorICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZzLnB1
c2goW2xpbmVfbnVtYmVyLCBsMSwgbDJdKQorICAgICAgICAgICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICAgICAgICAgICBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyICsgMQorICAgICAgICAg
ICAgICAgICAgICAgYnJlYWsgaWYgKGwxID09IG5pbCAmJiBsMiA9PSBuaWwpCisgICAgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgIGVuZAorICAgICAgICAgZW5kCisgICAgICAgICBpc0Rp
ZmZlcmVudCA9ICFkaWZmcy5lbXB0eT8KKyAgICAgICAgIGRpZmZPdXQgPSBkaWZmcy5tYXAgeyAK
KyAgICAgICAgICAgICB8IGRpZmYgfCAKKyAgICAgICAgICAgICAiQEAgLVwje2RpZmZbMF19LDEg
K1wje2RpZmZbMF19LDEgQEBcXG4iICsKKyAgICAgICAgICAgICAoZGlmZlsxXSA/ICItXCN7ZGlm
ZlsxXX0iIDogIiIpICsgCisgICAgICAgICAgICAgKGRpZmZbMl0gPyAiK1wje2RpZmZbMl19IiA6
ICIiKQorICAgICAgICB9LmpvaW4oIiIpCisgICAgRU5EX0ZBTExCQUNLX0RJRkYKK2VuZAorCitk
ZWYgcnVuRGlmZihleHBlY3RlZCwgb3V0cHV0KQorICAgIDw8LUVORF9SVU5fRElGRgorICAgICAg
ICBkaWZmT3V0LCBkaWZmU3RhdHVzID0gT3BlbjMuY2FwdHVyZTIoImRpZmYiLAorICAgICAgICAg
ICAgIi0tc3RyaXAtdHJhaWxpbmctY3IiLAorICAgICAgICAgICAgIi11IiwKKyAgICAgICAgICAg
ICIje2V4cGVjdGVkfSIsCisgICAgICAgICAgICAiI3tvdXRwdXR9Iik7CisgICAgICAgIGlzRGlm
ZmVyZW50ID0gIWRpZmZTdGF0dXMuc3VjY2Vzcz8KKyAgICBFTkRfUlVOX0RJRkYKK2VuZAorCisj
IEdldCBhIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZmlsZXMsIHVzaW5nIGRpZmYgd2hlcmUgYXZh
aWxhYmxlLCBmYWxsaW5nIGJhY2sKKyMgb24gYSBsaW1pdGVkIGNvbXBhcmlzb24gd2hlbiBkaWZm
IGlzIG5vdCBhdmFpbGFibGUKK2RlZiBnZXREaWZmKGV4cGVjdGVkLCBvdXRwdXQpCisgICAgaWYg
JGhhc0RpZmYKKyAgICAgICAgcnVuRGlmZihleHBlY3RlZCwgb3V0cHV0KQorICAgIGVsc2UKKyAg
ICAgICAgZmFsbGJhY2tEaWZmKGV4cGVjdGVkLG91dHB1dCkKKyAgICBlbmQKK2VuZAorCisjIEVy
cm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZGlmZiB0aGVpciBvdXRwdXQgd2l0aCBzb21lIGV4
cGVjdGF0aW9uLgorZGVmIGRpZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRGaWxlbmFtZSkKKyAgICBQ
cm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHB1dEZpbGVuYW1l
ID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsg
Ii5vdXQiKSkudG9fcykKKyAgICAgICAgCisgICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3Mo
c3RhdHVzKVxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5n
KCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAi
ICsgcHJlZml4U3RyaW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZSBcI3tzdGF0dXMu
ZXhpdHN0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAi
ICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzaWYgRmlsZS5l
eGlzdHM/KFwiLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVkRmlsZW5hbWUpfVwi
KVxuIgorICAgICAgICBvdXRwLnB1dHMgZ2V0RGlmZigiLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNj
YXBlKGV4cGVjdGVkRmlsZW5hbWUpfSIsIG91dHB1dEZpbGVuYW1lKQorICAgICAgICBvdXRwLnB1
dHMgIiAgICBpZiBpc0RpZmZlcmVudFxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgcHJp
bnQgIiArIHByZWZpeFN0cmluZygiXCJESUZGIEZBSUxVUkUhXFxuXCIiLCBwbGFuLm5hbWUpICsg
IlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygi
ZGlmZk91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICAi
ICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgIiAgICBlbHNlIgorICAgICAg
ICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgZW5kIgorICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJOTyBFWFBFQ1RBVElPTiFcXG5c
IiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBw
cmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAi
ICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kIgorICAgIH0K
K2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNh
eWluZyAiZmFpbGVkISIuIFRoaXMgaXMgdXNlZCBieSBNb3ppbGxhCisjIHRlc3RzLgorZGVmIG1v
emlsbGFFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8
CisgICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3Moc3RhdHVzKVxuIgorICAgICAgICBvdXRw
LnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxu
IgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkVSUk9S
OiBVbmV4cGVjdGVkIGV4aXQgY29kZSBcI3tzdGF0dXMuZXhpdHN0YXR1c31cXG5cIiIsIHBsYW4u
bmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29t
bWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2lmIC9mYWlsZWQhL2kgPX4gb3V0XG4iCisgICAg
ICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRGV0ZWN0ZWQgZmFp
bHVyZXM6XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBw
cmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBv
dXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVs
c2VcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAg
ICAgICAgb3V0cC5wdXRzICJlbmRcbiIKKyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZv
ciB0ZXN0cyB0aGF0IHJlcG9ydCBlcnJvciBieSBzYXlpbmcgImZhaWxlZCEiLCBhbmQgYXJlIGV4
cGVjdGVkIHRvCisjIGZhaWwuIFRoaXMgaXMgdXNlZCBieSBNb3ppbGxhIHRlc3RzLgorZGVmIG1v
emlsbGFGYWlsRXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBs
YW4gfAorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRz
ICJlbHNpZiAvZmFpbGVkIS9pID1+IG91dFxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsg
cGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJOT1RJQ0U6IFlvdSBtYWRl
IHRoaXMgdGVzdCBwYXNzLCBidXQgaXQgd2FzIGV4cGVjdGVkIHRvIGZhaWxcXG5cIiIsIHBsYW4u
bmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5k
CisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxl
ciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFy
ZSBleHBlY3RlZCB0byBoYXZlCisjIGFuIGV4aXQgY29kZSBvZiAzLgorZGVmIG1vemlsbGFFeGl0
M0Vycm9ySGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAg
ICAgICAgb3V0cC5wdXRzICJpZiBzdWNjZXNzKHN0YXR1cylcbiIKKyAgICAgICAgb3V0cC5wdXRz
ICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAg
ICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVGVz
dCBleHBlY3RlZCB0byBmYWlsLCBidXQgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5XFxuXCIiLCBwbGFu
Lm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENv
bW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNpZiBzdGF0dXMuZXhpdHN0YXR1cyAhPSAzIgor
ICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFu
Lm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3Ry
aW5nKCJcIkVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogXCN7c3RhdHVzLmV4aXRzdGF0dXN9
XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiAr
IHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvZmFpbGVkIS9pID1+
IG91dFxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJc
IkRldGVjdGVkIGZhaWx1cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJc
biIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAg
b3V0cC5wdXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nl
c3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAgfQorZW5kCisKKyMgRXJy
b3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgc3VjY2VzcyBieSBzYXlpbmcgIlBhc3Nl
ZCIgb3IgZXJyb3IgYnkgc2F5aW5nICJGQUlMRUQiLgorIyBUaGlzIGlzIHVzZWQgYnkgQ2hha3Jh
IHRlc3RzLgorZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgewor
ICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0
YXR1cylcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygi
b3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiAr
IHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4
aXRzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2lmIC9GQUlMRUQv
aSA9fiBvdXRcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmlu
ZygiXCJEZXRlY3RlZCBmYWlsdXJlczpcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAg
IG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkg
KyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAg
ICAgIG91dHAucHV0cyAiZWxzZVxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5z
dWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgorICAgfQorZW5kCisKK2Ns
YXNzIFBsYW4gPCBCYXNlUGxhbgorICAgIGRlZiBzaGVsbENvbW1hbmQgCisgICAgICAgIHNjcmlw
dCA9ICJvdXQgPSBuaWxcbiIKKyAgICAgICAgc2NyaXB0ICs9ICJlcnIgPSBuaWxcbiIKKyAgICAg
ICAgc2NyaXB0ICs9ICJzdGF0dXMgPSBuaWxcbiIKKyAgICAgICAgc2NyaXB0ICs9ICJEaXIuY2hk
aXIoXCIuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9yeS50b19zKX1cIikgZG9c
biIKKyAgICAgICAgc2NyaXB0ICs9ICIgIGVudiA9IHt9XG4iCisgICAgICAgICgkZW52VmFycyAr
IGFkZGl0aW9uYWxFbnYpLmVhY2ggeworICAgICAgICAgICAgfHZhcnwgCisgICAgICAgICAgICAo
a2V5LCB2YWx1ZSkgPSB2YXIuc3BsaXQoLz0vLCAyKQorICAgICAgICAgICAgc2NyaXB0ICs9ICIg
IGVudltcIiN7a2V5fVwiXSA9IFwiI3t2YWx1ZX1cIlxuIgorICAgICAgICB9CisgICAgICAgIHNj
cmlwdCArPSAiICAgIG91dCwgZXJyLCBzdGF0dXMgPSBPcGVuMy5jYXB0dXJlMyhlbnYsIFxuIgor
ICAgICAgICBzY3JpcHQgKz0gQGFyZ3VtZW50cy5tYXAgeyB8IGFyZ3VtZW50IHwgIiAgICAgICAg
XCIje2FyZ3VtZW50fVwiIn0uam9pbigiLFxuIikKKyAgICAgICAgc2NyaXB0ICs9ICIgICAgKVxu
IgorICAgICAgICBzY3JpcHQgKz0gImVuZFxuIgorICAgICAgICByZXR1cm4gc2NyaXB0CisgICAg
ZW5kCisKKyAgICBkZWYgcmVwcm9TY3JpcHRIZWxwZXIKKyAgICAgICAgc2NyaXB0ID0gImRlZiBl
cnJvcl9zY3JpcHRfY29udGVudHNcbiIKKyAgICAgICAgc2NyaXB0ICs9ICIgICAgPDwtRU5EX09G
X1NDUklQVFxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgcmVxdWlyZSAnb3BlbjMnXG4i
CisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICBkZWYgc3VjY2VzcyhzdGF0dXMpXG4iCisgICAg
ICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgc3RhdHVzLnN1Y2Nlc3M/XG4iCisgICAgICAgIHNj
cmlwdCArPSAiICAgICAgICBlbmRcbiIKKyAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgIHNjcmlw
dF9sb2NhdGlvbiA9IEZpbGUuZXhwYW5kX3BhdGgoRmlsZS5kaXJuYW1lKF9fRklMRV9fKSlcbiIK
KyAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgIERpci5jaGRpcihcIlxcXCN7c2NyaXB0X2xvY2F0
aW9ufSIKKyAgICAgICAgUGF0aG5hbWUubmV3KEBuYW1lKS5kaXJuYW1lLmVhY2hfZmlsZW5hbWUg
eworICAgICAgICAgICAgfCBwYXRoQ29tcG9uZW50IHwKKyAgICAgICAgICAgIHNjcmlwdCArPSAi
Ly4uIgorICAgICAgICB9CisgICAgICAgIHNjcmlwdCArPSAiLy5ydW5uZXJcIikgZG9cbiIKKyAg
ICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICBFTlZbXCJEWUxEX0ZSQU1FV09SS19QQVRIXCJd
ID0gXCIjeyR0ZXN0aW5nRnJhbWV3b3JrUGF0aC5kaXJuYW1lfVwiXG4iCisgICAgICAgIHNjcmlw
dCArPSAiICAgICAgICAgICAgRU5WW1wiSlNDVEVTVF90aW1lb3V0XCJdID0gXCIje0VOVlsnSlND
VEVTVF90aW1lb3V0J119XCJcbiIKKyAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICBFTlZb
XCJKU0NURVNUX2hhcmRUaW1lb3V0XCJdID0gXCIje0VOVlsnSlNDVEVTVF9oYXJkVGltZW91dCdd
fVwiXG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgRU5WW1wiSlNDVEVTVF9tZW1v
cnlMaW1pdFwiXSA9IFwiI3tFTlZbJ0pTQ1RFU1RfbWVtb3J5TGltaXQnXX1cIlxuIgorCisgICAg
ICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgI3tzaGVsbENvbW1hbmR9IgorICAgICAgICBzY3Jp
cHQgKz0gIiAgICAgICAgICAgIHByaW50IG91dFxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAg
ICAgICAgIGlmICghc3VjY2VzcyhzdGF0dXMpKVxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAg
ICAgICAgICAgICBleGl0KDEpXG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgZW5k
XG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICBlbmRcbiIKKyAgICAgICAgc2NyaXB0ICs9
ICIgICAgRU5EX09GX1NDUklQVFxuIgorICAgICAgICBzY3JpcHQgKz0gImVuZFxuIgorICAgICAg
ICByZXR1cm4gc2NyaXB0CisgICAgZW5kCisgICAgCisgICAgZGVmIHJlcHJvU2NyaXB0Q29tbWFu
ZAorICAgICAgICA8PC1FTkRfUkVQUk9fU0NSSVBUX0NPTU1BTkQKKyAgICAgICAgICAgIEZpbGUu
b3BlbigiI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZS5uZXcoIi4uIikgKyBAbmFt
ZSkudG9fcyl9IiwgInciKSBkbyB8c2NyfAorICAgICAgICAgICAgICAgIHNjci5wdXRzICJcI3tl
cnJvcl9zY3JpcHRfY29udGVudHN9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIEVORF9SRVBS
T19TQ1JJUFRfQ09NTUFORAorICAgIGVuZAorCisgICAgZGVmIHN0YXR1c0NvbW1hbmQoc3RhdHVz
X2NvZGUpCisgICAgICAgICMgTWF5IGJlIGNhbGxlZCBpbiB0aCByZXNjdWUgYmxvY2ssIHNvIHN0
YXR1cyBpcyBub3QKKyAgICAgICAgIyBndWFyYW50ZWVkIHRvIGJlIHNldDsgaWYgaXQgaXNuJ3Qs
IHNldCB0aGUgZXhpdCBjb2RlIHRvCisgICAgICAgICMgc29tZXRoaW5nIHRoYXQncyBjbGVhcmx5
IGludmFsaWQuCisgICAgICAgIDw8LUVORF9TVEFUVVNfQ09NTUFORAorICAgICAgICAgIEZpbGUu
b3BlbigiI3tzdGF0dXNGaWxlfSIsICJ3IikgeyB8ZnwKKyAgICAgICAgICAgICAgZi5wdXRzKCIj
eyRydW5VbmlxdWVJZH0gXCN7c3RhdHVzLm5pbD8gPyA5OTk5OTk5OTkgOiBzdGF0dXMuZXhpdHN0
YXR1c30gI3tzdGF0dXNfY29kZX0iKQorICAgICAgICAgIH0KKyAgICAgICAgRU5EX1NUQVRVU19D
T01NQU5ECisgICAgZW5kCisKKyAgICBkZWYgZmFpbENvbW1hbmQKKyAgICAgICAgPDwtRU5EX0ZB
SUxfQ09NTUFORAorICAgICAgICAgICAgcHJpbnQgIkZBSUw6ICN7U2hlbGx3b3Jkcy5zaGVsbGVz
Y2FwZShAbmFtZSl9XG4iCisgICAgICAgICAgICAje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVf
RkFJTCl9CisgICAgICAgICAgICAje3JlcHJvU2NyaXB0Q29tbWFuZH0KKyAgICAgICAgRU5EX0ZB
SUxfQ09NTUFORAorICAgIGVuZAorICAgIAorICAgIGRlZiBzdWNjZXNzQ29tbWFuZAorICAgICAg
ICBpZiAkcHJvZ3Jlc3NNZXRlciBvciAkdmVyYm9zaXR5ID49IDIKKyAgICAgICAgICAgIDw8LUVO
RF9WRVJCT1NFX1NVQ0NFU1NfQ09NTUFORAorICAgICAgICAgICAgICAgIHByaW50ICJQQVNTOiAj
e1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfVxuIgorICAgICAgICAgICAgICAgICN7c3Rh
dHVzQ29tbWFuZChTVEFUVVNfRklMRV9QQVNTKX0KKyAgICAgICAgICAgIEVORF9WRVJCT1NFX1NV
Q0NFU1NfQ09NTUFORAorICAgICAgICBlbHNlCisgICAgICAgICAgICAiI3tzdGF0dXNDb21tYW5k
KFNUQVRVU19GSUxFX1BBU1MpfVxuIgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgc3RhdHVzRmlsZQorICAgICAgICAiI3tTVEFUVVNfRklMRV9QUkVGSVh9I3tAaW5kZXh9Igor
ICAgIGVuZAorCisgICAgZGVmIHdyaXRlUnVuU2NyaXB0KGZpbGVuYW1lKQorICAgICAgICBGaWxl
Lm9wZW4oZmlsZW5hbWUsICJ3IikgeworICAgICAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgICAg
IG91dHAucHV0cyAicHJpbnQgXCJSdW5uaW5nICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFt
ZSl9XFxuXCIiCisgICAgICAgICAgICBvdXRwLnB1dHMgIiN7cmVwcm9TY3JpcHRIZWxwZXJ9Igor
ICAgICAgICAgICAgb3V0cC5wdXRzICJiZWdpbiIKKyAgICAgICAgICAgIG91dHAucHV0cyAicmVx
dWlyZSAnb3BlbjMnIgorICAgICAgICAgICAgb3V0cC5wdXRzICJyZXF1aXJlICdmaWxldXRpbHMn
IgorICAgICAgICAgICAgb3V0cC5wdXRzICJkZWYgc3VjY2VzcyhzdGF0dXMpIgorICAgICAgICAg
ICAgb3V0cC5wdXRzICIgICBzdGF0dXMuc3VjY2Vzcz8iCisgICAgICAgICAgICBvdXRwLnB1dHMg
ImVuZCIKKworICAgICAgICAgICAgY21kID0gc2hlbGxDb21tYW5kCisKKyAgICAgICAgICAgIGNt
ZCArPSBAb3V0cHV0SGFuZGxlci5jYWxsKEBuYW1lKQorCisgICAgICAgICAgICBpZiAkdmVyYm9z
aXR5ID49IDMKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgInByaW50IFwiI3tTaGVsbHdvcmRz
LnNoZWxsZXNjYXBlKGNtZCl9XFxuXCIiCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIG91
dHAucHV0cyBjbWQKKyAgICAgICAgICAgIEBlcnJvckhhbmRsZXIuY2FsbChvdXRwLCBzZWxmKQor
ICAgICAgICAgICAgb3V0cC5wdXRzICJyZXNjdWUiCisgICAgICAgICAgICBvdXRwLnB1dHMgIiAg
ICBwcmludCBcIkZBSUw6ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9XFxuXCIiCisg
ICAgICAgICAgICBvdXRwLnB1dHMgIiAgICAje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfRkFJ
TCl9IgorICAgICAgICAgICAgb3V0cC5wdXRzICJlbmQiCisgICAgICAgIH0KKyAgICBlbmQKK2Vu
ZAorCitjbGFzcyBUZXN0UnVubmVyU2hlbGwgPCBUZXN0UnVubmVyCisgICAgZGVmIHByZXBhcmVS
dW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykK
KyAgICAgICAgRmlsZS5vcGVuKCIje0BydW5uZXJEaXIgKyAicnVuc2NyaXB0In0iLCAidyIpIHsg
fGZ8CisgICAgICAgICAgICBydW5saXN0LmVhY2ggeyB8cGxhbnwKKyAgICAgICAgICAgICAgICBp
ZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBuZXh0
CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgZi5wdXRzKCJydWJ5IHRlc3Rf
c2NyaXB0XyN7cGxhbi5pbmRleH0iKQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGBkb3MydW5peCAje0BydW5uZXJEaXIgKyAicnVuc2NyaXB0In1gCisgICAgZW5kCisgICAgZGVm
IGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAgICAgICAgInNoIHJ1bnNjcmlwdCIKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBUZXN0UnVubmVyTWFrZSA8IFRlc3RSdW5uZXIKKyAgICBkZWYgb3V0cHV0
X3RhcmdldChvdXRwLCBwbGFuLCBwcmVyZXFzKQorICAgICAgICBpbmRleCA9IHBsYW4uaW5kZXgK
KyAgICAgICAgdGFyZ2V0ID0gInRlc3RfZG9uZV8je2luZGV4fSIKKyAgICAgICAgb3V0cC5wdXRz
ICIje3RhcmdldH06ICN7cHJlcmVxcy5qb2luKCIgIil9IgorICAgICAgICBvdXRwLnB1dHMgIlx0
cnVieSB0ZXN0X3NjcmlwdF8je2luZGV4fSIKKyAgICAgICAgdGFyZ2V0CisgICAgZW5kCisgICAg
ZGVmIHByZXBhcmVSdW5uZXJGb3JSZW1vdGUocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRl
ZFBsYW5zLCByZW1vdGVJbmRleCkKKyAgICAgICAgcnVuUGxhbnMgPSBbXQorICAgICAgICBzZXJp
YWxSdW5QbGFucyA9IFtdCisgICAgICAgIHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IHBs
YW4gfAorICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAg
ICAgICAgICAgICBuZXh0CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIEByZW1vdGVI
b3N0cy5uaWw/IG9yIHBsYW4uaW5kZXggJSBAcmVtb3RlSG9zdHMubGVuZ3RoID09IHJlbW90ZUlu
ZGV4CisgICAgICAgICAgICAgICAgaWYgc2VyaWFsUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAg
ICAgICAgICAgICAgICAgc2VyaWFsUnVuUGxhbnMgPDwgcGxhbgorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgcnVuUGxhbnMgPDwgcGxhbgorICAgICAgICAgICAgICAg
IGVuZAorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKworICAgICAgICBGaWxlLm9wZW4oQHJ1
bm5lckRpciArICJNYWtlZmlsZS4je3JlbW90ZUluZGV4fSIsICJ3IikgeworICAgICAgICAgICAg
fCBvdXRwIHwKKyAgICAgICAgICAgIGlmIHNlcmlhbFJ1blBsYW5zLmVtcHR5PworICAgICAgICAg
ICAgICAgIG91dHAucHV0cygiYWxsOiBwYXJhbGxlbCIpCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgc2VyaWFsUHJlcmVxID0gInRlc3RfZG9uZV8je3NlcmlhbFJ1blBsYW5zWy0x
XS5pbmRleH0iCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzKCJhbGw6ICN7c2VyaWFsUHJlcmVx
fSIpCisgICAgICAgICAgICAgICAgcHJldl90YXJnZXQgPSAicGFyYWxsZWwiCisgICAgICAgICAg
ICAgICAgc2VyaWFsUnVuUGxhbnMuZWFjaCB7CisgICAgICAgICAgICAgICAgICAgIHwgcGxhbiB8
CisgICAgICAgICAgICAgICAgICAgIHByZXZfdGFyZ2V0ID0gb3V0cHV0X3RhcmdldChvdXRwLCBw
bGFuLCBbcHJldl90YXJnZXRdKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVuZAor
ICAgICAgICAgICAgcGFyYWxsZWxUYXJnZXRzID0gcnVuUGxhbnMuY29sbGVjdCB7CisgICAgICAg
ICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAgICBvdXRwdXRfdGFyZ2V0KG91dHAsIHBs
YW4sIFtdKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0cC5wdXRzKCJwYXJhbGxlbDog
IiArIHBhcmFsbGVsVGFyZ2V0cy5qb2luKCIgIikpCisgICAgICAgIH0KKyAgICBlbmQKKyAgICBk
ZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJl
bW90ZUhvc3RzKQorICAgICAgICBpZiByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgICAgICBwcmVw
YXJlUnVubmVyRm9yUmVtb3RlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywg
MCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3RlSG9zdHMuZWFjaF9pbmRleCB7Cisg
ICAgICAgICAgICAgICAgfHJlbW90ZUluZGV4fAorICAgICAgICAgICAgICAgIHByZXBhcmVSdW5u
ZXJGb3JSZW1vdGUocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVJ
bmRleCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVmIGNvbW1h
bmQocmVtb3RlSW5kZXg9MCkKKyAgICAgICAgIm1ha2UgLWogI3skbnVtQ2hpbGRQcm9jZXNzZXN9
IC1zIC1mIE1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IgorICAgIGVuZAorZW5kCisKK2NsYXNzIFRl
c3RSdW5uZXJSdWJ5IDwgVGVzdFJ1bm5lcgorICAgIGRlZiBwcmVwYXJlUnVubmVyKHJ1bmxpc3Qs
IHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIEZpbGUu
b3BlbihAcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3IikgeworICAgICAgICAgICAgfCBvdXRw
IHwKKyAgICAgICAgICAgIHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBwbGFuIHwK
KyAgICAgICAgICAgICAgICBpZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAg
ICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAg
b3V0cC5wdXRzICJzeXN0ZW0gXCJydWJ5IHRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH1cIiIKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIGVuZAorICAgIGRlZiBjb21tYW5kKHJlbW90ZUlu
ZGV4PTApCisgICAgICAgICJydWJ5IHJ1bnNjcmlwdCIKKyAgICBlbmQKK2VuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443506</attachid>
            <date>2021-11-07 03:23:53 -0800</date>
            <delta_ts>2021-11-08 09:16:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232529-20211107122349.patch</filename>
            <type>text/plain</type>
            <size>210498</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGZkNjUwZTg4MTY3N2JhZjFkNGYwOGI5MDczOGRlMDll
MDlmYTRkZC4uNmQ4YzY3Y2VmNjJkMDU2ZDE4NzQxNTRkNGQzOWZmZmUxNTdiMmU1NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4
IEBACisyMDIxLTExLTA3ICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIE1vdmUgZGV0ZWN0aW9uIG9mIGZsYWt5IEpTQyB0ZXN0cyB0byBydW4t
anNjLXN0cmVzcy10ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMyNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ3VycmVudGx5LCBmbGFreSBkZXRlY3Rpb24gaGFwcGVucyBieQorICAgICAgICBS
ZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgdGhhdCB3
ZSBlbmQgdXAKKyAgICAgICAgcmVydW5uaW5nIGFsbCBKU0MgdGVzdHMgd2hlbiB0aGVyZSdzIGV2
ZW4gYSBzaW5nbGUgZmFpbHVyZS4gRXZlbgorICAgICAgICB3b3JzZSwgd2hlbiB0aGUgdHJlZSBp
cyBicm9rZW4gKGFzIHNvbWV0aW1lcyBoYXBwZW5zIG9uIEFSTTMyIGFuZAorICAgICAgICBNSVBT
KSB3ZSBlbmQgdXAKKworICAgICAgICAxLiBydW5uaW5nIHRoZSB0ZXN0cyBvbmNlICh0aGV5IGZh
aWwpCisgICAgICAgIDIuIHJ1bm5pbmcgYWxsIHRlc3RzIGFnYWluCisgICAgICAgIDMuIHJ1bm5p
bmcgYWxsIHRlc3RzIGFnYWluIHdpdGhvdXQgdGhlIHBhdGNoCisKKyAgICAgICAgVGhpcyBtZWFu
cyB0aGUgcXVldWUgc2xvd3MgZG93biBhIGxvdCwgc2luY2UgaXQgcnVucyBhbGwgSlNDCisgICAg
ICAgIHN0cmVzcyB0ZXN0cyAzIHRpbWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gZWxpbWluYXRlIHN0ZXAgMiwgd2hpbGUgYWxzbyBiZWluZyBtb3JlCisgICAgICAgIHJlbGlh
YmxlIGFib3V0IGhhbmRsaW5nIGZsYWt5IHRlc3RzLiBTaW5jZSB3ZSBubyBsb25nZXIgbmVlZCB0
bworICAgICAgICByZXJ1biB0aGUgd2hvbGUgdGVzdCBzdWl0ZSwgd2UgY2FuIHNwZW5kIG1vcmUg
Q1BVIHRpbWUgb24KKyAgICAgICAgaWRlbnRpZnlpbmcgdGVzdHMgdGhhdCBtaWdodCBiZSBmbGFr
eS4gVGhlIHVzZXIgY2FuIHBhc3MgaW4KKyAgICAgICAgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5
PXBhc3NQZXJjZW50YWdlLG1heFRyaWVzLG1heEZhaWxpbmcuIElmCisgICAgICAgIGxlc3MgdGhh
biBtYXhGYWlsaW5nIHRlc3RzIGZhaWxlZCwgd2UgcnVuIHRoZW0gYWdhaW4gKHVwIHRvCisgICAg
ICAgIG1heFRyaWVzKSB1bnRpbCB3ZSBjYW4gdGVsbCB3aGV0aGVyIHRoZXkgcGFzcyBtb3JlIHRo
YW4KKyAgICAgICAgcGFzc1BlcmNlbnRhZ2Ugb2YgdGhlIHRpbWUuIFRoaXMgc2hvdWxkIHJlc3Vs
dCBpbiBsZXNzIGZhbHNlCisgICAgICAgIHBvc2l0aXZlcyBjb21wYXJlZCB0byBSZVJ1bkphdmFT
Y3JpcHRDb3JlVGVzdHMsIGFzIHdlJ2xsIG5vIGxvbmdlcgorICAgICAgICBkZWNsYXJlIGEgZmxh
a3kgdGVzdCBhIGZhaWx1cmUgaWYgaXQgaGFwcGVucyB0byBmYWlsIHR3byB0aW1lcyBpbgorICAg
ICAgICBhIHJvdy4gSW4gb3JkZXIgdG8gcmVtb3ZlIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cywg
dGhlIHBhdGNoCisgICAgICAgIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIC0tdHJlYXQtZmFpbGlu
Zy1hcy1mbGFreSBieSBkZWZhdWx0IGluIHRoZQorICAgICAgICBKU0MgRVdTIHF1ZXVlcy4KKwor
ICAgICAgICBJbXBsZW1lbnRhdGlvbi13aXNlLCB0aGUgcGF0Y2ggZ2VuZXJhbGl6ZXMgdGhlIGV4
aXN0aW5nIHJldHJ5IGxvb3AgaW4KKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgKGZvciBk
ZWFsaW5nIHdpdGggZmxha3kgcmVtb3RlIGhvc3RzKSB0byAoYSkgd29yaworICAgICAgICB3aXRo
IGFueSBydW5uZXIgYW5kIChiKSBhbHNvIHJldHJ5IGZsYWt5IHRlc3RzLiBBcyBmbGFreSBoYW5k
bGluZyBpcworICAgICAgICBpbXByYWN0aWNhbCB0byB0ZXN0IG1hbnVhbGx5LCBpdCBhbHNvIGFi
c3RyYWN0cy1vdXQgdGhlIHJldHJ5IGxvZ2ljIHNvCisgICAgICAgIHRoYXQgd2UgY2FuIHRlc3Qg
d2l0aCBwcmVkZXRlcm1pbmVkIHJlc3VsdHMuIFRoaXMgbWVhbnMgd2UgbmVlZCB0bworICAgICAg
ICBlLmcuIHBhc3MgdGhlIHJ1bmxpc3QgYXJvdW5kIGluc3RlYWQgb2YgdHJlYXRpbmcgaXQgYXMg
YSBnbG9iYWwsCisgICAgICAgIGNhcHR1cmluZyB0aGUgbWFpbiBsb2dpYyBpbiBjbGFzc2VzIGFu
ZCBoYXZpbmcgYSBzdWJjbGFzcyBwcm92aWRlCisgICAgICAgIG1ldGhvZHMgdG8gYmUgY2FsbGVk
IGJhY2sgYW5kIHNvIG9uLiBUaGUgcGF0Y2ggZG9lcyBub3Qgc2h5IGF3YXkgZnJvbQorICAgICAg
ICByZWZhY3RvcmluZyBjb2RlIHdoZW4gaXQgbWFrZXMgc2Vuc2UgYnV0IGFsc28gZG9lc24ndCBn
byBvdXQgb2YgaXRzCisgICAgICAgIHdheSB0byByZWZhY3RvciAoZS5nLiB0aGVyZSdzIHN0aWxs
IGEgbG90IG9mIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlCisgICAgICAgIGRlZmF1bHQgYW5kIHJ1
Ynkgd3JpdGVycykuCisKKyAgICAgICAgRG93bnNpZGVzOiB3ZSBjYW4gbm8gbG9uZ2VyIGRldGVj
dCBmbGFraW5lc3MgaW4gdGhlIGJpbmFyeSB0ZXN0cworICAgICAgICAodGVzdGFpciwgdGVzdGIz
LCAuLi4pLiBIb3dldmVyLCBJJ20gbm90IGF3YXJlIG9mIGFueSBpbnN0YW5jZSBvZgorICAgICAg
ICBmbGFraW5lc3MgaW4gdGhvc2UgdGVzdHMuIFRoZSByZXRyeSBsb29wIGlzIG5vdyBiZWluZyB1
c2VkIGZvciBhbGwKKyAgICAgICAgcnVubmVycywgd2hpY2ggbWVhbnMgdGhlIHJlc3VsdHMgYW5h
bHlzaXMgcGF0aCBmb3IgZS5nLiB0aGUgbWFrZQorICAgICAgICBydW5uZXIgaXMgbm93IGEgYml0
IG1vcmUgY29tcGxpY2F0ZWQuIERldGVjdGluZyBmbGFreSB0ZXN0cyBuZWVkcworICAgICAgICBj
b2RlIHNvbWV3aGVyZSwgYnV0IHRoaXMgbW92ZXMgdGhlIGRldGVjdGlvbiBjb2RlIGJlZm9yZSB0
aGUKKyAgICAgICAgcmVzdWx0IHJlcG9ydGluZywgc28gaXMgYSBiaXQgcmlza2llci4gVGhlIHNl
bGYgdGVzdHMgc2hvdWxkCisgICAgICAgIGNvdW50ZXJiYWxhbmNlIHRoaXMuCisKKyAgICAgICAg
KiBDSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5OgorICAgICAgICBLaWxsIFJlUnVuSmF2YVNj
cmlwdENvcmVUZXN0cyBhbmQgZW5hYmxlIC0tdHJlYXQtZmFpbGluZy1hcy1mbGFreS4KKyAgICAg
ICAgRGVmYXVsdHMgdG8gNjAlIHBhc3MgcGVyY2VudGFnZSwgMTAgbWF4VHJpZXMgYW5kIGEgbGlt
aXQgb2YgMjAwCisgICAgICAgIGZhaWxpbmcgdGVzdHMuCisgICAgICAgIChSdW5KYXZhU2NyaXB0
Q29yZVRlc3RzKToKKyAgICAgICAgKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuX19pbml0X18pOgor
ICAgICAgICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5zdGFydCk6CisgICAgICAgIChSdW5KYXZh
U2NyaXB0Q29yZVRlc3RzLmV2YWx1YXRlQ29tbWFuZCk6CisgICAgICAgIChSdW5KYXZhU2NyaXB0
Q29yZVRlc3RzLmNvbW1hbmRDb21wbGV0ZSk6CisgICAgICAgIChSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzLmdldFJlc3VsdFN1bW1hcnkpOgorICAgICAgICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5f
YWRkVG9Mb2cpOgorICAgICAgICAoQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cy5zdGFydCk6CisgICAg
ICAgIChSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMpOiBEZWxldGVkLgorICAgICAgICAoUmVSdW5K
YXZhU2NyaXB0Q29yZVRlc3RzLmV2YWx1YXRlQ29tbWFuZCk6IERlbGV0ZWQuCisgICAgICAgICog
Q0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwc191bml0dGVzdC5weToKKyAgICAgICAgVXBkYXRlIHRv
IG1hdGNoIHRoZSBjaGFuZ2VzIGluIHN0ZXBzLnB5LiBTb21lIHRlc3RjYXNlcyBubyBsb25nZXIK
KyAgICAgICAgYXBwbHkuCisgICAgICAgICogU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVy
cy9zaGVsbC1ydW5uZXIuc2g6CisgICAgICAgIERvbid0IGRlZHVjZSB0aGUgdGVzdCBsaXN0IG1h
bnVhbGx5LCBleHBlY3QgaXQgYXMgYW4gYXJndW1lbnQgaW5zdGVhZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0czoKKyAgICAgICAgUHJvcGFnYXRlIGluZm8gb24g
dGVzdCBmbGFraW5lc3MuCisgICAgICAgIChydW5KU0NTdHJlc3NUZXN0cyk6CisgICAgICAgICog
U2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKyAgICAgICAgUmVmYWN0b3IgdGhlIGV4ZWN1
dGlvbiBsb2dpYyB0byB1c2UgdGhlIGFic3RyYWN0ZWQtb3V0IGNvZGUgaW4KKyAgICAgICAgZXhl
Y3V0b3IucmIuIFVzZSB0aGUgcmV0cnkgbG9vcCBvbiBldmVyeSBydW5uZXIuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC9leGVjdXRvci5yYjogQWRkZWQuCisg
ICAgICAgIEltcGxlbWVudCBhIGdlbmVyaWMgcmV0cnkgbG9vcCBhbmQgZGVmaW5lIGFuIGFycmF5
IG9mIHZpcnR1YWwKKyAgICAgICAgdGVzdHMgKHVzaW5nIHByZWRlZmluZWQgdGVzdCByZXN1bHRz
IGZvciBlYWNoIGl0ZXJhdGlvbikuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1z
dHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFsdWF0b3IucmI6IEFkZGVkLgorICAgICAgICBFbmNh
cHN1bGF0ZSB0aGUgbG9naWMgb24gd2hldGhlciBhIHRlc3QgaGFzIHBhc3NlZCBvciBub3QKKyAg
ICAgICAgKERpZCB3ZSBnZXQgYW55IHJlc3VsdHM/IFdlcmUgdGhvc2UgcmVzdWx0cyBlbm91Z2gg
dG8gZGVjbGFyZSBhCisgICAgICAgIGZsYWt5L25vbi1mbGFreSB0ZXN0IGEgcGFzcz8pIGFuZCBh
ZGQgYSBudW1iZXIgb2YgdGVzdHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1z
dHJlc3MtdGVzdC93cml0ZXItZGVmYXVsdC5yYjogUmVuYW1lZCBmcm9tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLWRlZmF1bHQucmIuCisgICAgICAgIE1v
dmUgdGhlIHRlc3Qtd3JpdGVyIGZpbGVzIHRvIGEgc3ViZGlyZWN0b3J5IGFuZCB1cGRhdGUgdGhl
bSBmb3IKKyAgICAgICAgdGhlIGNoYW5nZXMgdG8gcnVuLWpzYy1zdHJlc3MtdGVzdHMuIE1vdmUg
cHJlcGFyZUZvb1J1bm5lciBhbmQKKyAgICAgICAgdGVzdFJ1bm5lckNvbW1hbmQgdG8gYSBjbGFz
cyBzbyB0aGF0IHdlIGNhbiBrZWVwIHN0YXRlIChmb3IgdGhlIG5ldworICAgICAgICBhcmd1bWVu
dCB0byB0aGUgc2hlbGwgcnVubmVyKS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHJ1YnkvanNj
LXN0cmVzcy10ZXN0L3dyaXRlci1wbGF5c3RhdGlvbi5yYjogUmVuYW1lZCBmcm9tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlzdGF0aW9uLnJiLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qvd3JpdGVyLXJ1Ynku
cmI6IFJlbmFtZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0
LXdyaXRlci1ydWJ5LnJiLgorCiAyMDIxLTEwLTI1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRA
YXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBkZWZhdWx0IGlPUyBzaW11bGF0b3IgdG8gb25l
IHdpdGggYSBsYXJnZXIgc2NyZWVuIHNpemUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NJU3VwcG9ydC9l
d3MtYnVpbGQvc3RlcHMucHkgYi9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5Cmlu
ZGV4IGM1Y2MyNGVhN2RjZTE3ZWE5OTU1ZjQ3MTdmNWNkY2M2MjBmYzY5NjMuLmJmMDFmNjY3MTA0
YjUyZjBiYzU5YmRiNmY1YTU0YzYxMGMwMGE2ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NJU3VwcG9y
dC9ld3MtYnVpbGQvc3RlcHMucHkKKysrIGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVw
cy5weQpAQCAtMTgzNCw2ICsxODM0LDggQEAgY2xhc3MgUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhz
aGVsbC5UZXN0KToKICAgICBqc29uRmlsZU5hbWUgPSAnanNjX3Jlc3VsdHMuanNvbicKICAgICBs
b2dmaWxlcyA9IHsnanNvbic6IGpzb25GaWxlTmFtZX0KICAgICBjb21tYW5kID0gWydwZXJsJywg
J1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAn
LS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChqc29uRmlsZU5hbWUp
LCBXaXRoUHJvcGVydGllcygnLS0lKGNvbmZpZ3VyYXRpb24pcycpXQorICAgICMgV2UgcmVseSBv
biBydW4tanNjLXN0cmVzcy10ZXN0cyB0byB3ZWVkIG91dCBhbnkgZmxha3kgdGVzdHMKKyAgICBj
b21tYW5kX2V4dHJhID0gWyctLXRyZWF0LWZhaWxpbmctYXMtZmxha3k9MC42LDEwLDIwMCddCiAg
ICAgcHJlZml4ID0gJ2pzY18nCiAgICAgTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVlfSU5fU1RBVFVT
ID0gNQogCkBAIC0xODQxLDExICsxODQzLDEzIEBAIGNsYXNzIFJ1bkphdmFTY3JpcHRDb3JlVGVz
dHMoc2hlbGwuVGVzdCk6CiAgICAgICAgIHNoZWxsLlRlc3QuX19pbml0X18oc2VsZiwgbG9nRW52
aXJvbj1GYWxzZSwgc2lndGVybVRpbWU9MTAsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmJpbmFy
eUZhaWx1cmVzID0gW10KICAgICAgICAgc2VsZi5zdHJlc3NUZXN0RmFpbHVyZXMgPSBbXQorICAg
ICAgICBzZWxmLmZsYWt5ID0ge30KIAogICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAgc2Vs
Zi5sb2dfb2JzZXJ2ZXJfanNvbiA9IGxvZ29ic2VydmVyLkJ1ZmZlckxvZ09ic2VydmVyKCkKICAg
ICAgICAgc2VsZi5hZGRMb2dPYnNlcnZlcignanNvbicsIHNlbGYubG9nX29ic2VydmVyX2pzb24p
CiAKKwogICAgICAgICAjIGFkZCByZW1vdGVzIGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIHRvIHRo
ZSBjb21tYW5kIGxpbmUgaWYgbmVlZGVkCiAgICAgICAgIHJlbW90ZXNmaWxlID0gc2VsZi5nZXRQ
cm9wZXJ0eSgncmVtb3RlcycsIEZhbHNlKQogICAgICAgICBpZiByZW1vdGVzZmlsZToKQEAgLTE4
NjIsNiArMTg2Niw3IEBAIGNsYXNzIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoc2hlbGwuVGVzdCk6
CiAgICAgICAgICAgICBzZWxmLmNvbW1hbmQuZXh0ZW5kKFsnLS1tZW1vcnktbGltaXRlZCcsICct
LXZlcmJvc2UnXSkKIAogICAgICAgICBhcHBlbmRDdXN0b21CdWlsZEZsYWdzKHNlbGYsIHNlbGYu
Z2V0UHJvcGVydHkoJ3BsYXRmb3JtJyksIHNlbGYuZ2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScp
KQorICAgICAgICBzZWxmLmNvbW1hbmQuZXh0ZW5kKHNlbGYuY29tbWFuZF9leHRyYSkKICAgICAg
ICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikKIAogICAgIGRlZiBldmFsdWF0ZUNvbW1h
bmQoc2VsZiwgY21kKToKQEAgLTE4NzIsNyArMTg3NywxNCBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0
Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAgICAgc2VsZi5idWlsZC5yZXN1bHRzID0g
U1VDQ0VTUwogICAgICAgICAgICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVkKFttZXNzYWdlXSwg
U1VDQ0VTUykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNB
ZnRlckN1cnJlbnRTdGVwKFtWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRk
VVJMcz1GYWxzZSksIEtpbGxPbGRQcm9jZXNzZXMoKSwgUmVSdW5KYXZhU2NyaXB0Q29yZVRlc3Rz
KCldKQorICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hGYWlsZWRUZXN0cycsIFRy
dWUpCisgICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChbVW5B
cHBseVBhdGNoSWZSZXF1aXJlZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVS
THM9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29tcGlsZUpTQ1dpdGhvdXRQYXRjaCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2Us
IGFkZFVSTHM9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgS2lsbE9sZFByb2Nlc3NlcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUnVuSlNDVGVzdHNXaXRob3V0UGF0Y2goKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuYWx5emVKU0NUZXN0c1Jl
c3VsdHMoKV0pCiAgICAgICAgIHJldHVybiByYwogCiAgICAgZGVmIGNvbW1hbmRDb21wbGV0ZShz
ZWxmLCBjbWQpOgpAQCAtMTg5NSwxMCArMTkwNywxMiBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29y
ZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAgICAgc2VsZi5iaW5hcnlGYWlsdXJlcy5hcHBl
bmQoJ3Rlc3RkZmcnKQogICAgICAgICBpZiBqc2NfcmVzdWx0cy5nZXQoJ2FsbEFwaVRlc3RzUGFz
c2VkJykgaXMgRmFsc2U6CiAgICAgICAgICAgICBzZWxmLmJpbmFyeUZhaWx1cmVzLmFwcGVuZCgn
dGVzdGFwaScpCi0KICAgICAgICAgc2VsZi5zdHJlc3NUZXN0RmFpbHVyZXMgPSBqc2NfcmVzdWx0
cy5nZXQoJ3N0cmVzc1Rlc3RGYWlsdXJlcycpCiAgICAgICAgIGlmIHNlbGYuc3RyZXNzVGVzdEZh
aWx1cmVzOgogICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdzdHJl
c3NfdGVzdF9mYWlsdXJlcycsIHNlbGYuc3RyZXNzVGVzdEZhaWx1cmVzKQorICAgICAgICBzZWxm
LmZsYWt5ID0ganNjX3Jlc3VsdHMuZ2V0KCdmbGFreUFuZFBhc3NlZCcpCisgICAgICAgIGlmIHNl
bGYuZmxha3k6CisgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KHNlbGYucHJlZml4ICsgJ2Zs
YWt5X2FuZF9wYXNzZWQnLCBzZWxmLmZsYWt5KQogICAgICAgICBpZiBzZWxmLmJpbmFyeUZhaWx1
cmVzOgogICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdiaW5hcnlf
ZmFpbHVyZXMnLCBzZWxmLmJpbmFyeUZhaWx1cmVzKQogCkBAIC0xOTE5LDYgKzE5MzMsOCBAQCBj
bGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAgICAgICAg
IHN0YXR1cyArPSAnSlNDIHRlc3QgYmluYXJ5IGZhaWx1cmV7fToge30nLmZvcm1hdChwbHVyYWxT
dWZmaXgsICcsICcuam9pbihzZWxmLmJpbmFyeUZhaWx1cmVzKSkKIAogICAgICAgICAgICAgcmV0
dXJuIHsnc3RlcCc6IHN0YXR1c30KKyAgICAgICAgZWxpZiBzZWxmLnJlc3VsdHMgPT0gU1VDQ0VT
UyBhbmQgc2VsZi5mbGFreToKKyAgICAgICAgICAgIHJldHVybiB7J3N0ZXAnOiAiUGFzc2VkIEpT
QyB0ZXN0cyAoJWQgZmxha3kpIiAlIGxlbihzZWxmLmZsYWt5KX0KIAogICAgICAgICByZXR1cm4g
c2hlbGwuVGVzdC5nZXRSZXN1bHRTdW1tYXJ5KHNlbGYpCiAKQEAgLTE5MzEsMzUgKzE5NDcsNiBA
QCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICBsb2cu
YWRkU3Rkb3V0KG1lc3NhZ2UpCiAKIAotY2xhc3MgUmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKFJ1
bkphdmFTY3JpcHRDb3JlVGVzdHMpOgotICAgIG5hbWUgPSAnanNjb3JlLXRlc3QtcmVydW4nCi0g
ICAgcHJlZml4ID0gJ2pzY19yZXJ1bl8nCi0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYs
IGNtZCk6Ci0gICAgICAgIHJjID0gc2hlbGwuVGVzdC5ldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21k
KQotICAgICAgICBmaXJzdF9ydW5fZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNj
X3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pICsgc2VsZi5nZXRQcm9wZXJ0eSgnanNjX2JpbmFy
eV9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgc2Vjb25kX3J1bl9mYWlsdXJlcyA9IHNldChzZWxm
LmdldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkgKyBzZWxm
LmdldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2ZhaWx1cmVzJywgW10pKQotICAgICAgICBm
bGFreV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9mYWlsdXJlcy51bmlvbihzZWNvbmRfcnVuX2ZhaWx1
cmVzKSAtIGZpcnN0X3J1bl9mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1bl9mYWlsdXJl
cykKLSAgICAgICAgZmxha3lfZmFpbHVyZXNfc3RyaW5nID0gJywgJy5qb2luKHNvcnRlZChmbGFr
eV9mYWlsdXJlcykpCi0KLSAgICAgICAgaWYgcmMgPT0gU1VDQ0VTUyBvciByYyA9PSBXQVJOSU5H
UzoKLSAgICAgICAgICAgIHBsdXJhbFN1ZmZpeCA9ICdzJyBpZiBsZW4oZmxha3lfZmFpbHVyZXMp
ID4gMSBlbHNlICcnCi0gICAgICAgICAgICBtZXNzYWdlID0gJ0ZvdW5kIGZsYWt5IHRlc3R7fTog
e30nLmZvcm1hdChwbHVyYWxTdWZmaXgsIGZsYWt5X2ZhaWx1cmVzX3N0cmluZykKLSAgICAgICAg
ICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVzc2FnZQotICAgICAgICAgICAgc2VsZi5idWls
ZC5yZXN1bHRzID0gU1VDQ0VTUwotICAgICAgICAgICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVk
KFttZXNzYWdlXSwgU1VDQ0VTUykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ3BhdGNoRmFpbGVkVGVzdHMnLCBUcnVlKQotICAgICAgICAgICAgc2VsZi5idWls
ZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW1VuQXBwbHlQYXRjaElmUmVxdWlyZWQoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUGF0
Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBpbGVKU0NXaXRob3V0UGF0Y2go
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtpbGxPbGRQcm9jZXNzZXMo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bkpT
Q1Rlc3RzV2l0aG91dFBhdGNoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzKCldKQotICAgICAgICByZXR1cm4g
cmMKLQotCiBjbGFzcyBSdW5KU0NUZXN0c1dpdGhvdXRQYXRjaChSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzKToKICAgICBuYW1lID0gJ2pzY29yZS10ZXN0LXdpdGhvdXQtcGF0Y2gnCiAgICAgcHJlZml4
ID0gJ2pzY19jbGVhbl90cmVlXycKQEAgLTE5NzcsMzQgKzE5NjQsMjkgQEAgY2xhc3MgQW5hbHl6
ZUpTQ1Rlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRTdGVwKToKICAgICBOVU1fRkFJTFVSRVNf
VE9fRElTUExBWSA9IDEwCiAKICAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIGZpcnN0X3J1
bl9zdHJlc3NfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0
X2ZhaWx1cmVzJywgW10pKQotICAgICAgICBmaXJzdF9ydW5fYmluYXJ5X2ZhaWx1cmVzID0gc2V0
KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIHNl
Y29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19yZXJ1
bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgc2Vjb25kX3J1bl9iaW5hcnlf
ZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJl
cycsIFtdKSkKKyAgICAgICAgc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2ggPSBzZXQoc2VsZi5n
ZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pKQorICAgICAgICBiaW5h
cnlfZmFpbHVyZXNfd2l0aF9wYXRjaCA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfYmluYXJ5
X2ZhaWx1cmVzJywgW10pKQogICAgICAgICBjbGVhbl90cmVlX3N0cmVzc19mYWlsdXJlcyA9IHNl
dChzZWxmLmdldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycs
IFtdKSkKICAgICAgICAgY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQ
cm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVzJywgW10pKQogICAgICAgICBj
bGVhbl90cmVlX2ZhaWx1cmVzID0gbGlzdChjbGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcykgKyBs
aXN0KGNsZWFuX3RyZWVfc3RyZXNzX2ZhaWx1cmVzKQogICAgICAgICBjbGVhbl90cmVlX2ZhaWx1
cmVzX3N0cmluZyA9ICcsICcuam9pbihjbGVhbl90cmVlX2ZhaWx1cmVzWzpzZWxmLk5VTV9GQUlM
VVJFU19UT19ESVNQTEFZXSkKIAotICAgICAgICBzdHJlc3NfZmFpbHVyZXNfd2l0aF9wYXRjaCA9
IGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNlY29uZF9ydW5fc3RyZXNz
X2ZhaWx1cmVzKQotICAgICAgICBiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCA9IGZpcnN0X3J1
bl9iaW5hcnlfZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNlY29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVz
KQotCi0gICAgICAgIGZsYWt5X3N0cmVzc19mYWlsdXJlcyA9IGZpcnN0X3J1bl9zdHJlc3NfZmFp
bHVyZXMudW5pb24oc2Vjb25kX3J1bl9zdHJlc3NfZmFpbHVyZXMpIC0gZmlyc3RfcnVuX3N0cmVz
c19mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1bl9zdHJlc3NfZmFpbHVyZXMpCi0gICAg
ICAgIGZsYWt5X2JpbmFyeV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9iaW5hcnlfZmFpbHVyZXMudW5p
b24oc2Vjb25kX3J1bl9iaW5hcnlfZmFpbHVyZXMpIC0gZmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJl
cy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1bl9iaW5hcnlfZmFpbHVyZXMpCi0gICAgICAgIGZsYWt5
X2ZhaWx1cmVzID0gc29ydGVkKGxpc3QoZmxha3lfYmluYXJ5X2ZhaWx1cmVzKSArIGxpc3QoZmxh
a3lfc3RyZXNzX2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldCi0gICAg
ICAgIGZsYWt5X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihmbGFreV9mYWlsdXJlcykKKyAg
ICAgICAgZmxha3lfc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2ggPSBzZXQoc2VsZi5nZXRQcm9w
ZXJ0eSgnanNjX2ZsYWt5X2FuZF9wYXNzZWQnLCB7fSkua2V5cygpKQorICAgICAgICBjbGVhbl90
cmVlX2ZsYWt5X3N0cmVzc19mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfY2xl
YW5fdHJlZV9mbGFreV9hbmRfcGFzc2VkJywge30pLmtleXMoKSkKKyAgICAgICAgZmxha3lfc3Ry
ZXNzX2ZhaWx1cmVzID0gc29ydGVkKGxpc3QoZmxha3lfc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0
Y2gpICsgbGlzdChjbGVhbl90cmVlX2ZsYWt5X3N0cmVzc19mYWlsdXJlcykpWzpzZWxmLk5VTV9G
QUlMVVJFU19UT19ESVNQTEFZXQorICAgICAgICBmbGFreV9mYWlsdXJlc19zdHJpbmcgPSAnLCAn
LmpvaW4oZmxha3lfc3RyZXNzX2ZhaWx1cmVzKQogCiAgICAgICAgIG5ld19zdHJlc3NfZmFpbHVy
ZXMgPSBzdHJlc3NfZmFpbHVyZXNfd2l0aF9wYXRjaCAtIGNsZWFuX3RyZWVfc3RyZXNzX2ZhaWx1
cmVzCiAgICAgICAgIG5ld19iaW5hcnlfZmFpbHVyZXMgPSBiaW5hcnlfZmFpbHVyZXNfd2l0aF9w
YXRjaCAtIGNsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVzCiAgICAgICAgIHNlbGYubmV3X3N0cmVz
c19mYWlsdXJlc190b19kaXNwbGF5ID0gJywgJy5qb2luKHNvcnRlZChsaXN0KG5ld19zdHJlc3Nf
ZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0pCiAgICAgICAgIHNlbGYu
bmV3X2JpbmFyeV9mYWlsdXJlc190b19kaXNwbGF5ID0gJywgJy5qb2luKHNvcnRlZChsaXN0KG5l
d19iaW5hcnlfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0pCiAKLSAg
ICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZhaWx1cmVzIGluIGZpcnN0IHJ1bjog
e30nLmZvcm1hdCgobGlzdChmaXJzdF9ydW5fYmluYXJ5X2ZhaWx1cmVzKSArIGxpc3QoZmlyc3Rf
cnVuX3N0cmVzc19mYWlsdXJlcykpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXSkpCi0g
ICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GYWlsdXJlcyBpbiBzZWNvbmQgcnVu
OiB7fScuZm9ybWF0KChsaXN0KHNlY29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzKSArIGxpc3Qoc2Vj
b25kX3J1bl9zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0p
KQotICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ1xuRmxha3kgVGVzdHM6IHt9Jy5m
b3JtYXQoZmxha3lfZmFpbHVyZXNfc3RyaW5nKSkKKyAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0
ZGVycicsICdcbkZhaWx1cmVzIHdpdGggcGF0Y2g6IHt9Jy5mb3JtYXQobGlzdChiaW5hcnlfZmFp
bHVyZXNfd2l0aF9wYXRjaCkgKyBsaXN0KHN0cmVzc19mYWlsdXJlc193aXRoX3BhdGNoKSlbOnNl
bGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQorICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3Rk
ZXJyJywgJ1xuRmxha3kgVGVzdHMgd2l0aCBwYXRjaDoge30nLmZvcm1hdCgnLCAnLmpvaW4oZmxh
a3lfc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2gpKSkKICAgICAgICAgc2VsZi5fYWRkVG9Mb2co
J3N0ZGVycicsICdcbkZhaWx1cmVzIG9uIGNsZWFuIHRyZWU6IHt9Jy5mb3JtYXQoY2xlYW5fdHJl
ZV9mYWlsdXJlc19zdHJpbmcpKQorICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ1xu
Rmxha3kgVGVzdHMgb24gY2xlYW4gdHJlZToge30nLmZvcm1hdCgnLCAnLmpvaW4oY2xlYW5fdHJl
ZV9mbGFreV9zdHJlc3NfZmFpbHVyZXMpKSkKIAotICAgICAgICBpZiAobm90IGZpcnN0X3J1bl9z
dHJlc3NfZmFpbHVyZXMpIGFuZCAobm90IGZpcnN0X3J1bl9iaW5hcnlfZmFpbHVyZXMpIGFuZCAo
bm90IHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKSBhbmQgKG5vdCBzZWNvbmRfcnVuX2JpbmFy
eV9mYWlsdXJlcyk6CisgICAgICAgIGlmIChub3Qgc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2gp
IGFuZCAobm90IGJpbmFyeV9mYWlsdXJlc193aXRoX3BhdGNoKToKICAgICAgICAgICAgICMgSWYg
d2UndmUgbWFkZSBpdCBoZXJlLCB0aGVuIGpzYy10ZXN0cyBhbmQgcmUtcnVuLWpzYy10ZXN0cyBm
YWlsZWQsIHdoaWNoIG1lYW5zCiAgICAgICAgICAgICAjIHRoZXJlIHNob3VsZCBoYXZlIGJlZW4g
c29tZSB0ZXN0IGZhaWx1cmVzLiBPdGhlcndpc2UgdGhlcmUgaXMgc29tZSB1bmV4cGVjdGVkIGlz
c3VlLgogICAgICAgICAgICAgY2xlYW5fdHJlZV9ydW5fc3RhdHVzID0gc2VsZi5nZXRQcm9wZXJ0
eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVSRSkKQEAgLTIwMjksOSArMjAxMSw5IEBA
IGNsYXNzIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCk6CiAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5nX2ZhaWx1cmUo
Y2xlYW5fdHJlZV9mYWlsdXJlKQogICAgICAgICAgICAgaWYgbGVuKGNsZWFuX3RyZWVfZmFpbHVy
ZXMpID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWToKICAgICAgICAgICAgICAgICBtZXNz
YWdlICs9ICcgLi4uJwotICAgICAgICAgICAgaWYgZmxha3lfZmFpbHVyZXM6CisgICAgICAgICAg
ICBpZiBmbGFreV9zdHJlc3NfZmFpbHVyZXM6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAn
IEZvdW5kIGZsYWt5IHRlc3RzOiB7fScuZm9ybWF0KGZsYWt5X2ZhaWx1cmVzX3N0cmluZykKLSAg
ICAgICAgICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBpbiBmbGFreV9mYWlsdXJlczoKKyAgICAg
ICAgICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBpbiBmbGFreV9zdHJlc3NfZmFpbHVyZXM6CiAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lbWFpbF9mb3JfZmxha3lfZmFpbHVyZShmbGFr
eV9mYWlsdXJlKQogICAgICAgICAgICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVkKFttZXNzYWdl
XSwgU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIGRlZmVyLnN1Y2NlZWQoTm9uZSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkgYi9Ub29scy9D
SVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5CmluZGV4IGM4YzI2MmUxNTQxZDRi
ZjlhMWM3NTk1OWNlM2ZjY2JkODYxNTFkMGIuLmFhMzNmN2I3YmY5ZjY1ZTdhNTk1MGExOTkzNzU1
ODNjYWQ2ZmRlMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNf
dW5pdHRlc3QucHkKKysrIGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwc191bml0dGVz
dC5weQpAQCAtNDgsNyArNDgsNyBAQCBmcm9tIHN0ZXBzIGltcG9ydCAoQW5hbHl6ZUFQSVRlc3Rz
UmVzdWx0cywgQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRzLCBBbmFseXplSgogICAgICAgICAg
ICAgICAgICAgIERvd25sb2FkQnVpbHRQcm9kdWN0LCBEb3dubG9hZEJ1aWx0UHJvZHVjdEZyb21N
YXN0ZXIsIEVXU19CVUlMRF9IT1NUTkFNRSwgRXh0cmFjdEJ1aWx0UHJvZHVjdCwgRXh0cmFjdFRl
c3RSZXN1bHRzLAogICAgICAgICAgICAgICAgICAgIEZldGNoQnJhbmNoZXMsIEZpbmRNb2RpZmll
ZENoYW5nZUxvZ3MsIEZpbmRNb2RpZmllZExheW91dFRlc3RzLCBHaXRSZXNldEhhcmQsCiAgICAg
ICAgICAgICAgICAgICAgSW5zdGFsbEJ1aWx0UHJvZHVjdCwgSW5zdGFsbEd0a0RlcGVuZGVuY2ll
cywgSW5zdGFsbFdwZURlcGVuZGVuY2llcywKLSAgICAgICAgICAgICAgICAgICBLaWxsT2xkUHJv
Y2Vzc2VzLCBQcmludENvbmZpZ3VyYXRpb24sIFB1c2hDb21taXRUb1dlYktpdFJlcG8sIFJlUnVu
QVBJVGVzdHMsIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cywgUmVSdW5XZWJLaXRQZXJsVGVzdHMs
CisgICAgICAgICAgICAgICAgICAgS2lsbE9sZFByb2Nlc3NlcywgUHJpbnRDb25maWd1cmF0aW9u
LCBQdXNoQ29tbWl0VG9XZWJLaXRSZXBvLCBSZVJ1bkFQSVRlc3RzLCBSZVJ1bldlYktpdFBlcmxU
ZXN0cywKICAgICAgICAgICAgICAgICAgICBSZVJ1bldlYktpdFRlc3RzLCBSdW5BUElUZXN0cywg
UnVuQVBJVGVzdHNXaXRob3V0UGF0Y2gsIFJ1bkJpbmRpbmdzVGVzdHMsIFJ1bkJ1aWxkV2ViS2l0
T3JnVW5pdFRlc3RzLAogICAgICAgICAgICAgICAgICAgIFJ1bkJ1aWxkYm90Q2hlY2tDb25maWdG
b3JCdWlsZFdlYktpdCwgUnVuQnVpbGRib3RDaGVja0NvbmZpZ0ZvckVXUywgUnVuRVdTVW5pdFRl
c3RzLCBSdW5SZXN1bHRzZGJweVRlc3RzLAogICAgICAgICAgICAgICAgICAgIFJ1bkphdmFTY3Jp
cHRDb3JlVGVzdHMsIFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoLCBSdW5XZWJLaXQxVGVzdHMsIFJ1
bldlYktpdFBlcmxUZXN0cywgUnVuV2ViS2l0UHlQeXRob24yVGVzdHMsCkBAIC0xMzYxLDYgKzEz
NjEsNyBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFk
ZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmpzY19kZmdfYWlyX2Fu
ZF9zdHJlc3NfdGVzdF9mYWlsdXJlID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6ZmFsc2UsImFs
bE1hc21UZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQjNUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQWlyVGVz
dHNQYXNzZWQiOmZhbHNlLCJhbGxBcGlUZXN0c1Bhc3NlZCI6dHJ1ZSwic3RyZXNzVGVzdEZhaWx1
cmVzIjpbInN0cmVzcy93ZWFrc2V0LWdjLmpzIl19XG4nJycKICAgICAgICAgc2VsZi5qc2Nfc2lu
Z2xlX3N0cmVzc190ZXN0X2ZhaWx1cmUgPSAnJyd7ImFsbERGR1Rlc3RzUGFzc2VkIjp0cnVlLCJh
bGxNYXNtVGVzdHNQYXNzZWQiOnRydWUsImFsbEIzVGVzdHNQYXNzZWQiOnRydWUsImFsbEFpclRl
c3RzUGFzc2VkIjp0cnVlLCJzdHJlc3NUZXN0RmFpbHVyZXMiOlsic3RyZXNzL3N3aXRjaC1vbi1j
aGFyLWxsaW50LXJvcGUuanMuZGZnLWVhZ2VyIl0sImFsbEFwaVRlc3RzUGFzc2VkIjp0cnVlfVxu
JycnCiAgICAgICAgIHNlbGYuanNjX211bHRpcGxlX3N0cmVzc190ZXN0X2ZhaWx1cmVzID0gJycn
eyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFzbVRlc3RzUGFzc2VkIjp0cnVlLCJhbGxC
M1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxBaXJUZXN0c1Bhc3NlZCI6dHJ1ZSwic3RyZXNzVGVzdEZh
aWx1cmVzIjpbInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRmZy1lYWdlciIs
InN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRmZy1lYWdlci1uby1jaml0LXZh
bGlkYXRlIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZWFnZXItamV0dGlz
b24tbm8tY2ppdCIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1lYWdl
ciIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1lYWdlci1uby1jaml0
Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLWVhZ2VyLW5vLWNqaXQt
YjNvMSIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1uby1jaml0LWIz
bzAiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1uby1p
bmxpbmUtdmFsaWRhdGUiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwt
bm8tY2ppdC1uby1wdXQtc3RhY2stdmFsaWRhdGUiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxp
bnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1zbWFsbC1wb29sIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFy
LWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQtdmFsaWRhdGUtc2FtcGxpbmctcHJvZmlsZXIiLCJz
dHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5uby1jaml0LWNvbGxlY3QtY29udGlu
dW91c2x5Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMubm8tY2ppdC12YWxp
ZGF0ZS1waGFzZXMiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5uby1mdGwi
XSwiYWxsQXBpVGVzdHNQYXNzZWQiOnRydWV9XG4nJycKKyAgICAgICAgc2VsZi5qc2NfcGFzc2Vk
X3dpdGhfZmxha3kgPSAnJyd7ImFsbERGR1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxNYXNtVGVzdHNQ
YXNzZWQiOnRydWUsImFsbEIzVGVzdHNQYXNzZWQiOnRydWUsImFsbEFpclRlc3RzUGFzc2VkIjp0
cnVlLCJzdHJlc3NUZXN0RmFpbHVyZXMiOltdLCJmbGFreUFuZFBhc3NlZCI6eyJzdHJlc3Mvc3dp
dGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZWZhdWx0Ijp7IlAiOiI3IiwiVCI6IjEwIn19LCJh
bGxBcGlUZXN0c1Bhc3NlZCI6dHJ1ZX1cbicnJwogICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1
aWxkU3RlcCgpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC0xMzY5LDYgKzEzNzAsNyBA
QCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9u
cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBjb25maWd1cmVTdGVwKHNlbGYsIHBsYXRm
b3JtPU5vbmUsIGZ1bGxQbGF0Zm9ybT1Ob25lLCBjb25maWd1cmF0aW9uPU5vbmUpOgogICAgICAg
ICBzZWxmLnNldHVwU3RlcChSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKCkpCiAgICAgICAgIHNlbGYu
cHJlZml4ID0gUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5wcmVmaXgKKyAgICAgICAgc2VsZi5jb21t
YW5kX2V4dHJhID0gUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5jb21tYW5kX2V4dHJhCiAgICAgICAg
IGlmIHBsYXRmb3JtOgogICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCBw
bGF0Zm9ybSkKICAgICAgICAgaWYgZnVsbFBsYXRmb3JtOgpAQCAtMTM4MSw3ICsxMzgzLDcgQEAg
Y2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMs
IHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygK
ICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21t
YW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICct
LW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQo
c2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJ10sCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0
cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5m
b3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJ10gKyBzZWxmLmNvbW1hbmRfZXh0
cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25G
aWxlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDAsCkBA
IC0xMzk1LDcgKzEzOTcsNyBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhCdWls
ZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmV4
cGVjdFJlbW90ZUNvbW1hbmRzKAogICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tk
aXInLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFz
Y3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29u
LW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnLCAnLS1y
ZW1vdGUtY29uZmlnLWZpbGU9cmVtb3RlLW1hY2hpbmVzLmpzb24nLCAnLS1uby10ZXN0bWFzbScs
ICctLW5vLXRlc3RhaXInLCAnLS1uby10ZXN0YjMnLCAnLS1uby10ZXN0ZGZnJywgJy0tbm8tdGVz
dGFwaScsICctLW1lbW9yeS1saW1pdGVkJywgJy0tdmVyYm9zZScsICctLWpzYy1vbmx5J10sCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1
bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0Jywg
Jy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNl
JywgJy0tcmVtb3RlLWNvbmZpZy1maWxlPXJlbW90ZS1tYWNoaW5lcy5qc29uJywgJy0tbm8tdGVz
dG1hc20nLCAnLS1uby10ZXN0YWlyJywgJy0tbm8tdGVzdGIzJywgJy0tbm8tdGVzdGRmZycsICct
LW5vLXRlc3RhcGknLCAnLS1tZW1vcnktbGltaXRlZCcsICctLXZlcmJvc2UnLCAnLS1qc2Mtb25s
eSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmls
ZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAg
KQogICAgICAgICAgICAgKyAwLApAQCAtMTQwOCw3ICsxNDEwLDcgQEAgY2xhc3MgVGVzdFJ1bkph
dmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4
cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vu
dmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdU
b29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0t
bm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5h
bWUpLCAnLS1kZWJ1ZyddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3Blcmwn
LCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcs
ICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZp
bGVOYW1lKSwgJy0tZGVidWcnXSArIHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycs
IHN0ZG91dD0nOSBmYWlsdXJlcyBmb3VuZC4nKQpAQCAtMTQyMyw3ICsxNDI1LDcgQEAgY2xhc3Mg
VGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZh
c2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNv
bi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4t
amF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICct
LWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSAr
IHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAg
ICAgICsgMgogICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ2pzb24nLCBzdGRvdXQ9c2Vs
Zi5qc2Nfc2luZ2xlX3N0cmVzc190ZXN0X2ZhaWx1cmUpLApAQCAtMTQ0MCw3ICsxNDQyLDcgQEAg
Y2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMs
IHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3dr
ZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1
bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0Jywg
Jy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1kZWJ1Zydd
LAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0
cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFz
dCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVi
dWcnXSArIHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAg
ICAgICAgICAgICsgMgogICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ2pzb24nLCBzdGRv
dXQ9c2VsZi5qc2NfbXVsdGlwbGVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMpLApAQCAtMTQ1Nyw3ICsx
NDU5LDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5B
ZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdv
cmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxl
TmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9T
Y3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFp
bC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAn
LS1kZWJ1ZyddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9v
bHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5v
LWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1l
KSwgJy0tZGVidWcnXSArIHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICkKICAgICAgICAgICAgICsgMgogICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ2pz
b24nLCBzdGRvdXQ9c2VsZi5qc2NfbWFzbV9mYWlsdXJlKSwKQEAgLTE0NzQsNyArMTQ3Niw3IEBA
IGNsYXNzIFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25z
LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3
a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9y
dW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcs
ICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFz
ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2Ny
aXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwt
ZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0t
cmVsZWFzZSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAogICAgICAgICAgICAgICAgICAgICAgICAg
KQogICAgICAgICAgICAgKyAyCiAgICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNvbics
IHN0ZG91dD1zZWxmLmpzY19iM19hbmRfc3RyZXNzX3Rlc3RfZmFpbHVyZSksCkBAIC0xNDkxLDcg
KzE0OTMsNyBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhp
bkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgRXhwZWN0U2hlbGwo
d29ya2Rpcj0nd2tkaXInLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxz
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZp
bGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xz
L1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1m
YWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSks
ICctLXJlbGVhc2UnLCAnLS1tZW1vcnktbGltaXRlZCcsICctLXZlcmJvc2UnLCAnLS1qc2Mtb25s
eSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2Ny
aXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwt
ZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0t
cmVsZWFzZScsICctLW1lbW9yeS1saW1pdGVkJywgJy0tdmVyYm9zZScsICctLWpzYy1vbmx5J10g
KyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICArIDIKICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNl
bGYuanNjX2RmZ19haXJfYW5kX3N0cmVzc190ZXN0X2ZhaWx1cmUpLApAQCAtMTUwMiw1MiArMTUw
NCwzMCBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFk
ZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnYmluYXJ5X2ZhaWx1cmVzJyksIFsndGVzdGFp
cicsICd0ZXN0ZGZnJ10pCiAgICAgICAgIHJldHVybiByYwogCi0KLWNsYXNzIFRlc3RSZVJ1bkph
dmFTY3JpcHRDb3JlVGVzdHMoVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMpOgotICAgIGRlZiBj
b25maWd1cmVTdGVwKHNlbGYsIHBsYXRmb3JtPU5vbmUsIGZ1bGxQbGF0Zm9ybT1Ob25lLCBjb25m
aWd1cmF0aW9uPU5vbmUpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSZVJ1bkphdmFTY3JpcHRD
b3JlVGVzdHMoKSkKLSAgICAgICAgc2VsZi5wcmVmaXggPSBSZVJ1bkphdmFTY3JpcHRDb3JlVGVz
dHMucHJlZml4Ci0gICAgICAgIGlmIHBsYXRmb3JtOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgncGxhdGZvcm0nLCBwbGF0Zm9ybSkKLSAgICAgICAgaWYgZnVsbFBsYXRmb3JtOgotICAg
ICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgZnVsbFBsYXRmb3JtKQot
ICAgICAgICBpZiBjb25maWd1cmF0aW9uOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
Y29uZmlndXJhdGlvbicsIGNvbmZpZ3VyYXRpb24pCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNl
bGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAocGxhdGZvcm09J21hYycsIGZ1bGxQbGF0
Zm9ybT0nbWFjLWhpZ2hzaWVycmEnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJykKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0
ZXN0MiddKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAg
RXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9n
RW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywg
J1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAn
LS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxl
TmFtZSksICctLXJlbGVhc2UnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsn
anNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkgKwot
ICAgICAgICAgICAgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nRm91bmQgZmxha3kgdGVzdHM6IHRlc3QxLCB0ZXN0
MicpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfcmVtb3Rl
X3N1Y2Nlc3Moc2VsZik6CisgICAgZGVmIHRlc3Rfc3VjY2Vzc193aXRoX2ZsYWt5KHNlbGYpOgog
ICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAocGxhdGZvcm09J2pzYy1vbmx5JywgZnVsbFBsYXRm
b3JtPSdqc2Mtb25seScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdyZW1vdGVzJywgJ3JlbW90ZS1tYWNoaW5lcy5qc29uJykKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdG1hc20nXSkKICAgICAg
ICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdv
cmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRz
L3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0
JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxl
YXNlJywgJy0tcmVtb3RlLWNvbmZpZy1maWxlPXJlbW90ZS1tYWNoaW5lcy5qc29uJywgJy0tbm8t
dGVzdG1hc20nLCAnLS1uby10ZXN0YWlyJywgJy0tbm8tdGVzdGIzJywgJy0tbm8tdGVzdGRmZycs
ICctLW5vLXRlc3RhcGknLCAnLS1tZW1vcnktbGltaXRlZCcsICctLXZlcmJvc2UnLCAnLS1qc2Mt
b25seSddLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5q
c29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgKSArCi0gICAgICAgICAgICAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0
cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFz
dCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVs
ZWFzZScsICctLW1lbW9yeS1saW1pdGVkJywgJy0tdmVyYm9zZScsICctLWpzYy1vbmx5J10gKyBz
ZWxmLmNvbW1hbmRfZXh0cmEsCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICArIDAKKyAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYu
anNjX3Bhc3NlZF93aXRoX2ZsYWt5KSwKICAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nRm91bmQgZmxha3kgdGVzdDogdGVz
dG1hc20nKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKKyAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBKU0MgdGVzdHMg
KDEgZmxha3kpJykKKyAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnZmxha3lfYW5kX3Bhc3Nl
ZCcpLCB7J3N0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRlZmF1bHQnOiB7J1An
OiAnNycsICdUJzogJzEwJ319KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJv
cGVydHkoc2VsZi5wcmVmaXggKyAnc3RyZXNzX3Rlc3RfZmFpbHVyZXMnKSwgTm9uZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KHNlbGYucHJlZml4ICsgJ2JpbmFy
eV90ZXN0X2ZhaWx1cmVzJyksIE5vbmUpCisgICAgICAgIHJldHVybiByYwogCiAKIGNsYXNzIFRl
c3RSdW5KU0NUZXN0c1dpdGhvdXRQYXRjaChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRl
c3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5sb25nTWVz
c2FnZSA9IFRydWUKICAgICAgICAgc2VsZi5qc29uRmlsZU5hbWUgPSAnanNjX3Jlc3VsdHMuanNv
bicKKyAgICAgICAgc2VsZi5jb21tYW5kX2V4dHJhID0gUnVuSlNDVGVzdHNXaXRob3V0UGF0Y2gu
Y29tbWFuZF9leHRyYQogICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCiAKICAg
ICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC0xNTYwLDcgKzE1NDAsNyBAQCBjbGFzcyBUZXN0UnVu
SlNDVGVzdHNXaXRob3V0UGF0Y2goQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAg
IEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcs
ICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywg
Jy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmls
ZU5hbWUpLCAnLS1yZWxlYXNlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsn
cGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1
aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5q
c29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJ10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDAsCkBAIC0xNTc1LDcgKzE1
NTUsNyBAQCBjbGFzcyBUZXN0UnVuSlNDVGVzdHNXaXRob3V0UGF0Y2goQnVpbGRTdGVwTWl4aW5B
ZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVD
b21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10
ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9
Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0
PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSArIHNlbGYuY29tbWFu
ZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYu
anNvbkZpbGVOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsg
RXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nOSBmYWlsdXJlcyBmb3VuZC4nKQpAQCAt
MTU5NywzOCArMTU3NywzNCBAQCBjbGFzcyBUZXN0QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhCdWls
ZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLnNl
dHVwU3RlcChBbmFseXplSlNDVGVzdHNSZXN1bHRzKCkpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQogICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgW10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2ZhaWx1cmVzJywgW10pCisgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2pzY19mbGFreV9hbmRfcGFzc2VkJywge30pCiAgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCiAgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcycsIFtdKQor
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9mbGFreV9hbmRfcGFzc2Vk
Jywge30pCiAgICAgICAgIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfZmxh
a3lfZmFpbHVyZSA9IGxhbWJkYSBzZWxmLCB0ZXN0OiBOb25lCiAgICAgICAgIEFuYWx5emVKU0NU
ZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5nX2ZhaWx1cmUgPSBsYW1iZGEg
c2VsZiwgdGVzdDogTm9uZQogCiAgICAgZGVmIHRlc3Rfc2luZ2xlX25ld19zdHJlc3NfZmFpbHVy
ZShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3MvZm9yY2UtZXJyb3Iu
anMuYnl0ZWNvZGUtY2FjaGUnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVu
X3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3MvZm9yY2UtZXJyb3IuanMuYnl0ZWNvZGUt
Y2FjaGUnXSkKICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0
ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlOiBzdHJlc3MvZm9y
Y2UtZXJyb3IuanMuYnl0ZWNvZGUtY2FjaGUgKGZhaWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNl
bGYucnVuU3RlcCgpCiAKICAgICBkZWYgdGVzdF9zaW5nbGVfbmV3X2JpbmFyeV9mYWlsdXJlKHNl
bGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0bWFzbSddKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0bWFzbSddKQogICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91
bmQgMSBuZXcgSlNDIGJpbmFyeSBmYWlsdXJlOiB0ZXN0bWFzbSAoZmFpbHVyZSknKQogICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAogICAgIGRlZiB0ZXN0X211bHRpcGxlX25ld19zdHJl
c3NfZmFpbHVyZShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0e30nLmZv
cm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAzMCldKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3R7fScuZm9ybWF0KGkpIGZv
ciBpIGluIHJhbmdlKDAsIDMwKV0pCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9
RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAzMCBuZXcgSlNDIHN0cmVzcyB0ZXN0IGZhaWx1
cmVzOiB0ZXN0MCwgdGVzdDEsIHRlc3QxMCwgdGVzdDExLCB0ZXN0MTIsIHRlc3QxMywgdGVzdDE0
LCB0ZXN0MTUsIHRlc3QxNiwgdGVzdDE3IC4uLiAoZmFpbHVyZSknKQogICAgICAgICByZXR1cm4g
c2VsZi5ydW5TdGVwKCkKIAogICAgIGRlZiB0ZXN0X211bHRpcGxlX25ld19iaW5hcnlfZmFpbHVy
ZShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdG1hc20nLCAndGVzdGFpcicsICd0
ZXN0YjMnLCAndGVzdGRmZycsICd0ZXN0YXBpJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJywgJ3Rlc3RhaXInLCAndGVz
dGIzJywgJ3Rlc3RkZmcnLCAndGVzdGFwaSddKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUo
cmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgNSBuZXcgSlNDIGJpbmFyeSBmYWls
dXJlczogdGVzdGFpciwgdGVzdGFwaSwgdGVzdGIzLCB0ZXN0ZGZnLCB0ZXN0bWFzbSAoZmFpbHVy
ZSknKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIApAQCAtMTYzNiwxNSArMTYxMiwx
MiBAQCBjbGFzcyBUZXN0QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0
aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQog
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2Vz
Ni55YW1sL2VzNi9TZXRfaXRlcmF0b3JfY2xvc2luZy5qcy5kZWZhdWx0J10pCiAgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsn
ZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdG1hc20n
XSkKICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJp
bmc9J0ZvdW5kIDEgbmV3IEpTQyBiaW5hcnkgZmFpbHVyZTogdGVzdG1hc20sIEZvdW5kIDEgbmV3
IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlOiBlczYueWFtbC9lczYvU2V0X2l0ZXJhdG9yX2Nsb3Np
bmcuanMuZGVmYXVsdCAoZmFpbHVyZSknKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkK
IAogICAgIGRlZiB0ZXN0X3N0cmVzc19mYWlsdXJlX29uX2NsZWFuX3RyZWUoc2VsZik6CiAgICAg
ICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19z
dHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmRlZmF1bHQnXSkK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVz
JywgWydzdHJlc3MvZm9yY2UtZXJyb3IuanMuZGVmYXVsdCddKQogICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2Zv
cmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3Vs
dD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBKU0MgdGVzdHMnKQogICAgICAgICByZXR1
cm4gc2VsZi5ydW5TdGVwKCkKQEAgLTE2NjEsMzkgKzE2MzQsMjkgQEAgY2xhc3MgVGVzdEFuYWx5
emVKU0NUZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydlczYueWFtbC9lczYvU2V0X2l0ZXJh
dG9yX2Nsb3NpbmcuanMuZGVmYXVsdCddKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nf
YmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0YWlyJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnZXM2LnlhbWwvZXM2L1NldF9pdGVy
YXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNj
X3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGFpciddKQogICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnZXM2LnlhbWwv
ZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKICAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0YWlyJ10pCiAg
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQ
YXNzZWQgSlNDIHRlc3RzJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKLSAgICBk
ZWYgdGVzdF9mbGFreV9zdHJlc3NfYW5kX2JpbmFyeV9mYWlsdXJlcyhzZWxmKToKLSAgICAgICAg
c2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVz
c190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3MvZm9yY2UtZXJyb3IuanMuZGVmYXVsdCddKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0YXBpJ10p
Ci0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5n
PSdQYXNzZWQgSlNDIHRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KICAg
ICBkZWYgdGVzdF9mbGFreV9hbmRfY29uc2lzdGVudF9zdHJlc3NfZmFpbHVyZXMoc2VsZik6CiAg
ICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pz
Y19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInXSkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0Midd
KQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmlu
Zz0nRm91bmQgMSBuZXcgSlNDIHN0cmVzcyB0ZXN0IGZhaWx1cmU6IHRlc3QyIChmYWlsdXJlKScp
CisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsn
dGVzdDEnXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2ZsYWt5X2FuZF9wYXNzZWQn
LCB7J3Rlc3QyJzogeydQJzogJzcnLCAnVCc6ICcxMCd9fSkKKyAgICAgICAgc2VsZi5leHBlY3RP
dXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IEpTQyBzdHJl
c3MgdGVzdCBmYWlsdXJlOiB0ZXN0MSAoZmFpbHVyZSknKQogICAgICAgICByZXR1cm4gc2VsZi5y
dW5TdGVwKCkKIAogICAgIGRlZiB0ZXN0X2ZsYWt5X2FuZF9jb25zaXN0ZW50X2ZhaWx1cmVzX3dp
dGhfY2xlYW5fdHJlZV9mYWlsdXJlcyhzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVw
KCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywg
Wyd0ZXN0MScsICd0ZXN0MiddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5f
c3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0
MiddKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMn
LCBbJ3Rlc3QxJ10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19mbGFreV9hbmRfcGFz
c2VkJywgeyd0ZXN0Mic6IHsnUCc6IDcsICdUJzogMTB9fSkKKyAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJ10pCiAg
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQ
YXNzZWQgSlNDIHRlc3RzJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKICAgICBk
ZWYgdGVzdF91bmV4cGVjdGVkX2luZnJhX2lzc3VlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZp
Z3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFp
bHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190
ZXN0X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90
cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2NsZWFuX3RyZWVfcnVuX3N0YXR1cycsIEZBSUxVUkUpCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0nVW5leHBlY3RlZCBpbmZyYXN0cnVjdHVy
ZSBpc3N1ZSwgcmV0cnlpbmcgYnVpbGQgKHJldHJ5KScpCkBAIC0xNzAyLDggKzE2NjUsOSBAQCBj
bGFzcyBUZXN0QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywg
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3BhdGNoX2JyZWFraW5nX2pzY190ZXN0
X3N1aXRlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQogICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19mbGFreV9hbmRfcGFzc2VkJywge30pCiAgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywg
W10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX2ZsYWt5X2FuZF9w
YXNzZWQnLCB7fSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3Rh
dHVzJywgU1VDQ0VTUykKICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJF
LCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIHVuZXhwZWN0ZWQgZmFpbHVyZSB3aXRoIHBhdGNoIChmYWls
dXJlKScpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9zaGVsbC1ydW5uZXIuc2ggYi9Ub29scy9T
Y3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJzL3NoZWxsLXJ1bm5lci5zaAppbmRleCBkZWQ0
MGQ1MjE5ODIzMGI4MTUwMjYyYzZiZTcxYWMyZDhjYTcxMmZlLi4zZjZlOGUyYWE1OTZjZjExNjEx
YzgwYzNjN2JkZTQ0ZjAzNzkyMDMzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2pzYy1zdHJl
c3MtdGVzdC1oZWxwZXJzL3NoZWxsLXJ1bm5lci5zaAorKysgYi9Ub29scy9TY3JpcHRzL2pzYy1z
dHJlc3MtdGVzdC1oZWxwZXJzL3NoZWxsLXJ1bm5lci5zaApAQCAtMjEsNiArMjEsOCBAQAogIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKICMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAorb3JpZ2luYWxUZXN0TGlzdD0iJDEiCisKIG51
bVByb2NzPWBzeXNjdGwgLW4gaHcuYWN0aXZlY3B1IDI+L2Rldi9udWxsYAogaWYgWyAkPyAtZ3Qg
MCBdCiB0aGVuCkBAIC0zOSw3ICs0MSw3IEBAIGxvY2tEaXI9Ii5sb2NrX2RpciIKIHRyYXAgImtp
bGwgLTkgMCIgSU5UIEhVUCBURVJNCiAKIGVjaG8gMCA+ICR7aW5kZXhGaWxlfQotZmluZCAuIC1t
YXhkZXB0aCAxIC1uYW1lICd0ZXN0X3NjcmlwdF8qJyB8IHNvcnQgLXQgJ18nIC1rM25yID4gJHt0
ZXN0TGlzdH0KK2NwICIkb3JpZ2luYWxUZXN0TGlzdCIgIiR0ZXN0TGlzdCIKIAogbG9ja190ZXN0
X2xpc3QoKSB7CiAgICAgdW50aWwgbWtkaXIgJHtsb2NrRGlyfSAyPiAvZGV2L251bGw7IGRvIHNs
ZWVwIDA7IGRvbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMKaW5kZXggZmIy
MWJmZTcxYTRmNWM4YWU3ZTMyYmYyZjE3ZGU1ZjRjNDg1NjU5Ny4uZGIyZWE0MWVjZjhjMzc2YWUz
ZjBjMjZhZmI1NDU5OTZkMTA3MWExYSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tamF2
YXNjcmlwdGNvcmUtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUt
dGVzdHMKQEAgLTY0LDYgKzY0LDcgQEAgbXkgJGdudVBhcmFsbGVsUnVubmVyOwogbXkgJHRlc3RX
cml0ZXI7CiBteSAkbWVtb3J5TGltaXRlZDsKIG15ICRyZXBvcnRFeGVjdXRpb25UaW1lOworbXkg
JHRyZWF0RmFpbGluZ0FzRmxha3k7CiAKIG15ICRyZXBvcnQ7CiBteSAkYnVpbGRib3RNYXN0ZXI7
CkBAIC0yODMsNiArMjg0LDcgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10gW29wdGlv
bnMgdG8gcGFzcyB0byBidWlsZCBzeXN0ZW1dCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNraXAgdGVzdHMgdGFnZ2VkIHdpdGggLy9cQHNraXAgaWYgXCRtZW1vcnlMaW1pdGVkCiAK
ICAgLS1yZXBvcnQtZXhlY3V0aW9uLXRpbWUgICAgICAgUHJpbnQgZXhlY3V0aW9uIHRpbWUgZm9y
IGVhY2ggc3RyZXNzIHRlc3QuCisgIC0tdHJlYXQtZmFpbGluZy1hcy1mbGFreSAgICAgIFRyZWF0
IGZhaWxpbmcgc3RyZXNzIHRlc3RzIGFzIGZsYWt5CiAKICAgLS1maWx0ZXIgICAgICAgICAgICAg
ICAgICAgICAgT25seSBydW4gdGVzdHMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSBnaXZlbiByZWd1
bGFyIGV4cHJlc3Npb24uCiAgIC0tZW52LXZhcnMgICAgICAgICAgICAgICAgICAgIFBhc3MgYSBs
aXN0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgYmVmb3JlIHJ1bm5pbmcgdGVzdHMu
CkBAIC0zNTIsNiArMzU0LDcgQEAgR2V0T3B0aW9ucygKICAgICAndGVzdC13cml0ZXI9cycgPT4g
XCR0ZXN0V3JpdGVyLAogICAgICdtZW1vcnktbGltaXRlZCcgPT4gXCRtZW1vcnlMaW1pdGVkLAog
ICAgICdyZXBvcnQtZXhlY3V0aW9uLXRpbWUnID0+IFwkcmVwb3J0RXhlY3V0aW9uVGltZSwKKyAg
ICAndHJlYXQtZmFpbGluZy1hcy1mbGFreT1zJyA9PiBcJHRyZWF0RmFpbGluZ0FzRmxha3ksCiAg
ICAgJ2ZpbHRlcj1zJyA9PiBcJGZpbHRlciwKICAgICAnaGVscCcgPT4gXCRzaG93SGVscCwKICAg
ICAnZW52LXZhcnM9cycgPT4gXCRlbnZWYXJzLApAQCAtODAxLDYgKzgwNCwxMCBAQCBzdWIgcnVu
SlNDU3RyZXNzVGVzdHMKICAgICAgICAgcHVzaChAanNjU3RyZXNzRHJpdmVyQ21kLCAiLS1hcnRp
ZmFjdC1leGVjLXdyYXBwZXIiKTsKICAgICAgICAgcHVzaChAanNjU3RyZXNzRHJpdmVyQ21kLCAk
YXJ0aWZhY3RfZXhlY193cmFwcGVyKTsKICAgICB9CisgICAgaWYgKGRlZmluZWQoJHRyZWF0RmFp
bGluZ0FzRmxha3kpKSB7CisgICAgICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgIi0tdHJl
YXQtZmFpbGluZy1hcy1mbGFreSIpOworICAgICAgICBwdXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQs
ICR0cmVhdEZhaWxpbmdBc0ZsYWt5KTsKKyAgICB9CiAgICAgcHVzaChAanNjU3RyZXNzRHJpdmVy
Q21kLCBAdGVzdExpc3QpOwogCiAgICAgaWYgKGlzV2luZG93cygpICYmICFpc0N5Z3dpbigpKSB7
CkBAIC05MjUsNiArOTMyLDIxIEBAIHN1YiBydW5KU0NTdHJlc3NUZXN0cwogICAgICAgICAkcmVw
b3J0RGF0YXskdGVzdFN1Y2NlZWRlZH0gPSB7YWN0dWFsID0+ICJQQVNTIn07CiAgICAgfQogCisg
ICAgbXkgQGpzY1N0cmVzc0ZsYWt5ID0gcmVhZEFsbExpbmVzKCRqc2NTdHJlc3NSZXN1bHRzRGly
IC4gIi9mbGFreSIpOworICAgIEBqc2NTdHJlc3NGbGFreSA9IHNvcnQgQGpzY1N0cmVzc0ZsYWt5
OworICAgIG15ICRudW1KU0NTdHJlc3NGbGFreSA9IEBqc2NTdHJlc3NGbGFreTsKKworICAgIG15
ICVqc2NTdHJlc3NGbGFreUluZm8gPSAoKTsKKyAgICBpZiAoJG51bUpTQ1N0cmVzc0ZsYWt5KSB7
CisgICAgICAgIHByaW50ICJcbioqIFRoZSBmb2xsb3dpbmcgSlNDIHN0cmVzcyB0ZXN0cyB3ZXJl
IGZsYWt5OlxuIjsKKyAgICAgICAgZm9yZWFjaCBteSAkdGVzdEZsYWt5IChAanNjU3RyZXNzRmxh
a3kpIHsKKyAgICAgICAgICAgIG15IEBmaWVsZHMgPSBzcGxpdCAvIC8sICR0ZXN0Rmxha3k7Cisg
ICAgICAgICAgICBwcmludCAiXHQkZmllbGRzWzBdICRmaWVsZHNbMV0vJGZpZWxkc1syXSBwYXNz
ZXNcbiI7CisgICAgICAgICAgICAkanNjU3RyZXNzRmxha3lJbmZveyRmaWVsZHNbMF19ID0geyAn
UCcgPT4gJGZpZWxkc1sxXSwgJ1QnID0+ICRmaWVsZHNbMl19CisgICAgICAgIH0KKyAgICAgICAg
cHJpbnQgIlxuIjsKKyAgICB9CisKICAgICBteSBAanNjU3RyZXNzRmFpbExpc3QgPSByZWFkQWxs
TGluZXMoJGpzY1N0cmVzc1Jlc3VsdHNEaXIgLiAiL2ZhaWxlZCIpOwogICAgIEBqc2NTdHJlc3NG
YWlsTGlzdCA9IHNvcnQgQGpzY1N0cmVzc0ZhaWxMaXN0OwogICAgIG15ICRudW1KU0NTdHJlc3NG
YWlsdXJlcyA9IEBqc2NTdHJlc3NGYWlsTGlzdDsKQEAgLTk1MSwxMiArOTczLDE0IEBAIHN1YiBy
dW5KU0NTdHJlc3NUZXN0cwogCiAgICAgcHJpbnQgIlJlc3VsdHMgZm9yIEpTQyBzdHJlc3MgdGVz
dHM6XG4iOwogICAgIHByaW50VGhpbmdzRm91bmQoJG51bUpTQ1N0cmVzc0ZhaWx1cmVzLCAiZmFp
bHVyZSIsICJmYWlsdXJlcyIsICJmb3VuZCIpOworICAgIHByaW50VGhpbmdzRm91bmQoJG51bUpT
Q1N0cmVzc0ZsYWt5LCAidGVzdCIsICJ0ZXN0cyIsICJmbGFreSBidXQgcGFzc2VkIik7CiAgICAg
cHJpbnRUaGluZ3NGb3VuZCgkbnVtSlNDU3RyZXNzTm9SZXN1bHRUZXN0cywgInRlc3QiLCAidGVz
dHMiLCAiZmFpbGVkIHRvIGNvbXBsZXRlIik7CiAgICAgcHJpbnQgIiAgICBPSy5cbiIgaWYgJG51
bUpTQ1N0cmVzc0ZhaWx1cmVzID09IDAgYW5kICRudW1KU0NTdHJlc3NOb1Jlc3VsdFRlc3RzID09
IDA7CiAKICAgICBwcmludCAiXG4iOwogCiAgICAgaWYgKGRlZmluZWQoJGpzb25GaWxlTmFtZSkp
IHsKKyAgICAgICAgJGpzb25EYXRheydmbGFreUFuZFBhc3NlZCd9ID0gIFwlanNjU3RyZXNzRmxh
a3lJbmZvOwogICAgICAgICAkanNvbkRhdGF7J3N0cmVzc1Rlc3RGYWlsdXJlcyd9ID0gXEBqc2NT
dHJlc3NGYWlsTGlzdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpz
Yy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4
IGNkMDc1YmE3NWZiN2Y2MjVkYmEyNmQ0YjEyNTE0M2Q5NDJjMTE4NDUuLjc2NTQxNzQ4NTI4NTBk
NzIxMjY5YzIyODQ0ZDdkOTE1Y2M0NTI4MjkgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVu
LWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0
cwpAQCAtMjUsMTIgKzI1LDE3IEBACiAKIHJlcXVpcmUgJ2ZpbGV1dGlscycKIHJlcXVpcmUgJ2dl
dG9wdGxvbmcnCityZXF1aXJlICdvc3RydWN0JwogcmVxdWlyZSAncGF0aG5hbWUnCiByZXF1aXJl
ICdyYmNvbmZpZycKK3JlcXVpcmUgJ3NldCcKIHJlcXVpcmUgJ3RlbXBmaWxlJwogcmVxdWlyZSAn
dXJpJwogcmVxdWlyZSAneWFtbCcKIAorcmVxdWlyZV9yZWxhdGl2ZSAid2Via2l0cnVieS9qc2Mt
c3RyZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9yIgorcmVxdWlyZV9yZWxhdGl2ZSAid2Vi
a2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvZXhlY3V0b3IiCisKIG1vZHVsZSBVUkkKICAgICBjbGFz
cyBTU0ggPCBHZW5lcmljCiAgICAgICAgIERFRkFVTFRfUE9SVCA9IDIyCkBAIC03Myw2ICs3OCw4
IEBAIFNUQVRVU19GSUxFX0ZBSUwgPSAiRiIKIFBBUkFMTEVMX1JFTU9URV9XUkFQUEVSX01BUktf
QkVHSU4gPSAiNWQ2NTMyOWJkMWEzIgogUEFSQUxMRUxfUkVNT1RFX1dSQVBQRVJfTUFSS19FTkQg
PSAiYTlhZWE1YzNiODQzIgogUEFSQUxMRUxfUkVNT1RFX1NUQVRFX0xPU1RfTUFSS0VSID0gIjcw
OWZiN2E3N2M0NTIzMTkxOGViMTE4YSIKK0lURVJBVElPTl9MSU1JVFMgPSBPcGVuU3RydWN0Lm5l
dyg6aW5mcmFJdGVyYXRpb25zRmxvb3IgPT4gMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6aXRlcmF0aW9uc0NlaWxpbmcgPT4gMTApCiAKIGJlZ2luCiAgICAgcmVxdWlyZSAn
c2hlbGx3b3JkcycKQEAgLTEyNCw3ICsxMzEsNiBAQCBkZWYgZXNjYXBlQWxsKGFycmF5KQogICAg
IH0uam9pbignICcpCiBlbmQKIAotCiAkanNjUGF0aCA9IG5pbAogJGRvTm90TWVzc1dpdGhWTVBh
dGggPSBmYWxzZQogJGppdFRlc3RzID0gdHJ1ZQpAQCAtMTUyLDYgKzE1OCwxMSBAQCAkbGRkID0g
bmlsCiAkYXJ0aWZhY3RfZXhlY193cmFwcGVyID0gbmlsCiAkbnVtQ2hpbGRQcm9jZXNzZXNTZXRC
eVVzZXIgPSBmYWxzZQogJHJ1blVuaXF1ZUlkID0gUmFuZG9tLm5ldy5ieXRlcygxNikudW5wYWNr
KCJIKiIpWzBdCiskdGVzdHNEZWJ1Z1N0cmVhbSA9IG5pbCAjIHNldCB0byAkc3RkZXJyIGZvciBk
ZWJ1Z2dpbmcKKworZGVmIHB1dGQocykKKyAgICAkdGVzdHNEZWJ1Z1N0cmVhbS5wdXRzKHMpIHVu
bGVzcyAkdGVzdHNEZWJ1Z1N0cmVhbS5uaWw/CitlbmQKIAogZGVmIHVzYWdlCiAgICAgcHV0cyAi
cnVuLWpzYy1zdHJlc3MtdGVzdHMgLWogPHNoZWxsIHBhdGg+IDxjb2xsZWN0aW9ucyBwYXRoPiBb
PGNvbGxlY3Rpb25zIHBhdGg+IC4uLl0iCkBAIC0yMjIsNiArMjMzLDcgQEAgR2V0b3B0TG9uZy5u
ZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAg
ICAgICBbJy0tcnVieS1ydW5uZXInLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAg
ICAgICAgICBbJy0tZ251LXBhcmFsbGVsLXJ1bm5lcicsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5U
XSwKICAgICAgICAgICAgICAgIFsnLS10ZXN0LXdyaXRlcicsIEdldG9wdExvbmc6OlJFUVVJUkVE
X0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5Jywg
R2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyctLXJlbW90
ZScsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS1y
ZW1vdGUtY29uZmlnLWZpbGUnLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCiAgICAg
ICAgICAgICAgICBbJy0tcmVwb3J0LWV4ZWN1dGlvbi10aW1lJywgR2V0b3B0TG9uZzo6Tk9fQVJH
VU1FTlRdLApAQCAtMjcwLDYgKzI4MiwzMCBAQCBHZXRvcHRMb25nLm5ldyhbJy0taGVscCcsICct
aCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAgJHRlc3RSdW5uZXJUeXBlID0g
OmdudXBhcmFsbGVsCiAgICAgd2hlbiAnLS10ZXN0LXdyaXRlcicKICAgICAgICAgJHRlc3RXcml0
ZXIgPSBhcmcKKyAgICB3aGVuICctLXRyZWF0LWZhaWxpbmctYXMtZmxha3knCisgICAgICAgIG1k
ID0gL14oW14sXSspLChcZCspLChcZCspJC8ubWF0Y2goYXJnKQorICAgICAgICBpZiBtZC5uaWw/
CisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIkNvdWxkIG5vdCBwYXJzZSBhcmd1bWVudCB0byBg
LS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5YDsgZXhwZWN0ZWQgYHBhc3NQZXJjZW50YWdlLG1heFRy
aWVzLG1heEZhaWxpbmdgIikKKyAgICAgICAgICAgIGV4aXQoMSkKKyAgICAgICAgZW5kCisgICAg
ICAgIHBhc3NQZXJjZW50YWdlID0gbWRbMV0udG9fZgorICAgICAgICBpZiBwYXNzUGVyY2VudGFn
ZS56ZXJvPworICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJJbnZhbGlkIHBhc3NQZXJjZW50YWdl
IGAje21kWzFdfWAiKQorICAgICAgICAgICAgZXhpdCgxKQorICAgICAgICBlbmQKKyAgICAgICAg
bWF4VHJpZXMgPSBtZFsyXS50b19pCisgICAgICAgIGlmIG1heFRyaWVzID09IDAKKyAgICAgICAg
ICAgICRzdGRlcnIucHV0cygiSW52YWxpZCBtYXhUcmllcyBgI3ttZFsyXX1gIikKKyAgICAgICAg
ICAgIGV4aXQoMSkKKyAgICAgICAgZW5kCisgICAgICAgIG1heEZhaWxpbmcgPSBtZFszXS50b19p
CisgICAgICAgIGlmIG1heEZhaWxpbmcgPT0gMAorICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJJ
bnZhbGlkIG1heEZhaWxpbmcgYCN7bWRbM119YCIpCisgICAgICAgICAgICBleGl0KDEpCisgICAg
ICAgIGVuZAorICAgICAgICAkdHJlYXRGYWlsaW5nQXNGbGFreSA9IE9wZW5TdHJ1Y3QubmV3KDpw
YXNzUGVyY2VudGFnZSA9PiBwYXNzUGVyY2VudGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gbWF4VHJpZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1heEZhaWxpbmcgPT4gbWF4RmFp
bGluZykKICAgICB3aGVuICctLXJlbW90ZScKICAgICAgICAgJGNvcHlWTSA9IHRydWUKICAgICAg
ICAgJHRhcmJhbGwgPSB0cnVlCkBAIC01NjksNyArNjA1LDk1IEBAIEZUTF9PUFRJT05TID0gWyIt
LXVzZUZUTEpJVD10cnVlIl0KIEZPUkNFX0xMSU5UX0VYSVRfT1BUSU9OUyA9IFsiLS1mb3JjZU9T
UkV4aXRUb0xMSW50PXRydWUiXQogRVhFQ1VUQUJMRV9GVVpaRVJfT1BUSU9OUyA9IFsiLS11c2VF
eGVjdXRhYmxlQWxsb2NhdGlvbkZ1eno9dHJ1ZSIsICItLWZpcmVFeGVjdXRhYmxlQWxsb2NhdGlv
bkZ1enpSYW5kb21seT10cnVlIl0KIAotcmVxdWlyZV9yZWxhdGl2ZSAid2Via2l0cnVieS9qc2Mt
c3RyZXNzLXRlc3Qtd3JpdGVyLSN7JHRlc3RXcml0ZXJ9IgorY2xhc3MgQmFzZVBsYW4KKyAgICBh
dHRyX3JlYWRlciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRzLCA6ZmFtaWx5LCA6bmFtZSwgOm91dHB1
dEhhbmRsZXIsIDplcnJvckhhbmRsZXIsIDphZGRpdGlvbmFsRW52LCA6aW5kZXgKKyAgICBhdHRy
X2FjY2Vzc29yIDpmbGFreQorCisgICAgQEBpbmRleCA9IDAKKyAgICBkZWYgaW5pdGlhbGl6ZShk
aXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhh
bmRsZXIsIGZsYWt5KQorICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5CisgICAgICAgIEBh
cmd1bWVudHMgPSBhcmd1bWVudHNNYXBwZXIoYXJndW1lbnRzKQorICAgICAgICBAZmFtaWx5ID0g
ZmFtaWx5CisgICAgICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAb3V0cHV0SGFuZGxlciA9IG91
dHB1dEhhbmRsZXIKKyAgICAgICAgQGVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcgorICAgICAg
ICBAZmxha3kgPSBmbGFreQorICAgICAgICBAYWRkaXRpb25hbEVudiA9IFtdCisgICAgICAgIEBp
bmRleCA9IEBAaW5kZXgKKyAgICAgICAgQEBpbmRleCArPSAxCisgICAgZW5kCisgICAgZGVmIHNl
bGYubW9jayhmYW1pbHksIG5hbWUsIGZsYWt5PW5pbCkKKyAgICAgICAgc2VsZi5uZXcoIi9ub25l
IiwgW10sIGZhbWlseSwgbmFtZSwgbmlsLCBuaWwsIGZsYWt5KQorICAgIGVuZAorICAgIGRlZiBz
ZWxmLmNyZWF0ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5k
bGVyLCBlcnJvckhhbmRsZXIpCisgICAgICAgIGlmICRydW5Db21tYW5kT3B0aW9uc1s6Y3Jhc2hP
S10KKyAgICAgICAgICAgIG91dHB1dEhhbmRsZXIgPSBub2lzeU91dHB1dEhhbmRsZXIKKyAgICAg
ICAgZW5kCisgICAgICAgIHNlbGYubmV3KGRpcmVjdG9yeSwgYXJndW1lbnRzLCBmYW1pbHksIG5h
bWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlciwgJHJ1bkNvbW1hbmRPcHRpb25zWzpmbGFr
eV0pCisgICAgZW5kCisgICAgZGVmIGFyZ3VtZW50c01hcHBlcihhcmdzKQorICAgICAgICBhcmdz
CisgICAgZW5kCisgICAgIyBXZSByZWd1bGFybHkgcGxhY2UgUGxhbnMgaW4gY29udGFpbmVycywg
YnV0IG1heSBtb2RpZnkgQGZsYWt5CisgICAgIyBhZnRlciB0aGUgZmFjdDsgb25seSBoYXNoIG9u
IEBpbmRleCBpbnN0ZWFkLgorICAgIGRlZiBoYXNoCisgICAgICAgIEBpbmRleAorICAgIGVuZAor
ICAgIGRlZiB0b19zCisgICAgICAgICIje0BpbmRleH0iCisgICAgZW5kCitlbmQKKworY2xhc3Mg
VGVzdFJ1bm5lcgorICAgIGRlZiBpbml0aWFsaXplKHRlc3RSdW5uZXJUeXBlLCBydW5uZXJEaXIp
CisgICAgICAgIEB0ZXN0UnVubmVyVHlwZSA9IHRlc3RSdW5uZXJUeXBlCisgICAgICAgIEBydW5u
ZXJEaXIgPSBydW5uZXJEaXIKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZShydW5saXN0LCBzZXJp
YWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBwcmVwYXJlU2Ny
aXB0cyhydW5saXN0KQorICAgICAgICBwcmVwYXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5z
LCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgZW5kCisgICAgZGVmIHByZXBhcmVT
Y3JpcHRzKHJ1bmxpc3QpCisgICAgICAgIERpci5ta2RpcihAcnVubmVyRGlyKSB1bmxlc3MgQHJ1
bm5lckRpci5kaXJlY3Rvcnk/CisgICAgICAgIHRvRGVsZXRlID0gW10KKyAgICAgICAgRGlyLmZv
cmVhY2goQHJ1bm5lckRpcikgeworICAgICAgICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgICAg
ICBpZiBmaWxlbmFtZSA9fiAvXnRlc3RfLworICAgICAgICAgICAgICAgIHRvRGVsZXRlIDw8IGZp
bGVuYW1lCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorCisgICAgICAgIHRvRGVsZXRlLmVh
Y2ggeworICAgICAgICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgICAgICBGaWxlLnVubGluayhA
cnVubmVyRGlyICsgZmlsZW5hbWUpCisgICAgICAgIH0KKworICAgICAgICAjIFdyaXRlIHRlc3Qg
c2NyaXB0cyBpbiBwYXJhbGxlbCBhcyB0aGlzIGlzIGJvdGggYW4gZXhwZW5zaXZlIGFuZCBhCisg
ICAgICAgICMgaGlnaGx5IElPIGludGVuc2l2ZSBvcGVyYXRpb24sIGJ1dCBlYWNoIHNjcmlwdCBp
cyBpbmRlcGVuZGVudCBhbmQKKyAgICAgICAgIyB0aGUgb3BlcmF0aW9uIGlzIHB1cmUgb3RoZXIg
dGhhbiB3cml0aW5nIHRoZSB1bmlxdWUgcnVuIHNjcmlwdC4KKyAgICAgICAgcGFyYWxsZWxFYWNo
KHJ1bmxpc3QpIGRvIHwgcGxhbiB8CisgICAgICAgICAgICBwbGFuLndyaXRlUnVuU2NyaXB0KEBy
dW5uZXJEaXIgKyAidGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAgICAgIGVuZAorICAg
IGVuZAorICAgIGRlZiBzZWxmLmNyZWF0ZSh0ZXN0UnVubmVyVHlwZSwgcnVubmVyRGlyKQorICAg
ICAgICBjbHMgPSBuaWwKKyAgICAgICAgY2FzZSB0ZXN0UnVubmVyVHlwZQorICAgICAgICB3aGVu
IDpzaGVsbAorICAgICAgICAgICAgY2xzID0gVGVzdFJ1bm5lclNoZWxsCisgICAgICAgIHdoZW4g
Om1ha2UKKyAgICAgICAgICAgIGNscyA9IFRlc3RSdW5uZXJNYWtlCisgICAgICAgIHdoZW4gOnJ1
YnkKKyAgICAgICAgICAgIGNscyA9IFRlc3RSdW5uZXJSdWJ5CisgICAgICAgIHdoZW4gOmdudXBh
cmFsbGVsCisgICAgICAgICAgICBjbHMgPSBUZXN0UnVubmVyR251UGFyYWxsZWwKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVua25vd24gdGVzdCBydW5uZXIgdHlwZTogI3t0ZXN0
UnVubmVyVHlwZS50b19zfSIKKyAgICAgICAgZW5kCisgICAgICAgIHJldHVybiBjbHMubmV3KHRl
c3RSdW5uZXJUeXBlLCBydW5uZXJEaXIpCisgICAgZW5kCitlbmQKKworcmVxdWlyZV9yZWxhdGl2
ZSAid2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qvd3JpdGVyLSN7JHRlc3RXcml0ZXJ9IgogCiBk
ZWYgc2hvdWxkQ29sbGVjdENvbnRpbnVvdXNseT8KICAgICAkYnVpbGRUeXBlID09ICJyZWxlYXNl
IiBvciAkZm9yY2VDb2xsZWN0Q29udGludW91c2x5CkBAIC01NzcsNyArNzAxLDcgQEAgZW5kCiAK
IENPTExFQ1RfQ09OVElOVU9VU0xZX09QVElPTlMgPSBzaG91bGRDb2xsZWN0Q29udGludW91c2x5
PyA/IFsiLS1jb2xsZWN0Q29udGludW91c2x5PXRydWUiLCAiLS11c2VHZW5lcmF0aW9uYWxHQz1m
YWxzZSIsICItLXZlcmlmeUdDPXRydWUiXSA6IFtdCiAKLSRzZXJpYWxSdW5saXN0ID0gW10KKyRz
ZXJpYWxQbGFucyA9IFNldC5uZXcKICRydW5saXN0ID0gW10KIAogZGVmIGZyYW1ld29ya0Zyb21K
U0NQYXRoKGpzY1BhdGgpCkBAIC02NTAsNyArNzc0LDcgQEAgZGVmIGFkZFJ1bkNvbW1hbmQoa2lu
ZCwgY29tbWFuZCwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyLCAqYWRkaXRpb25hbEVudikK
ICAgICBpZiAkZmlsdGVyIGFuZCBuYW1lICF+ICRmaWx0ZXIKICAgICAgICAgcmV0dXJuCiAgICAg
ZW5kCi0gICAgcGxhbiA9IFBsYW4ubmV3KAorICAgIHBsYW4gPSBQbGFuLmNyZWF0ZSgKICAgICAg
ICAgJGJlbmNobWFya0RpcmVjdG9yeSwgY29tbWFuZCwgIiN7JGNvbGxlY3Rpb25OYW1lfS8jeyRi
ZW5jaG1hcmt9IiwgbmFtZSwgb3V0cHV0SGFuZGxlciwKICAgICAgICAgZXJyb3JIYW5kbGVyKQog
ICAgIHBsYW4uYWRkaXRpb25hbEVudi5wdXNoKCphZGRpdGlvbmFsRW52KQpAQCAtNjU5LDcgKzc4
Myw3IEBAIGRlZiBhZGRSdW5Db21tYW5kKGtpbmQsIGNvbW1hbmQsIG91dHB1dEhhbmRsZXIsIGVy
cm9ySGFuZGxlciwgKmFkZGl0aW9uYWxFbnYpCiAgICAgICAgICMgdGhhdCB3ZSBjYW4gdHJlYXQg
dGhlbSBzcGVjaWFsbHkgd2hlbiBzY2hlZHVsaW5nLCBidXQga2VlcAogICAgICAgICAjIGl0IGlu
IHRoZSAkcnVubGlzdCBmb3IgY29kZSB0aGF0IGRvc24ndCBjYXJlIGFib3V0CiAgICAgICAgICMg
c2NoZWR1bGluZy4KLSAgICAgICAgJHNlcmlhbFJ1bmxpc3QgPDwgcGxhbgorICAgICAgICAkc2Vy
aWFsUGxhbnMuYWRkKHBsYW4pCiAgICAgZW5kCiAKICAgICBpZiAkbnVtQ2hpbGRQcm9jZXNzZXMg
PiAxIGFuZCAkcnVuQ29tbWFuZE9wdGlvbnNbOmlzU2xvd10KQEAgLTcxNyw2ICs4NDEsNDggQEAg
ZGVmIHNlcmlhbCEKICAgICAkcnVuQ29tbWFuZE9wdGlvbnNbOnNlcmlhbF0gPSB0cnVlCiBlbmQK
IAorCitjbGFzcyBGbGFreQorICAgIGF0dHJfcmVhZGVyIDpwYXNzUGVyY2VudGFnZSwgOm1heFRy
aWVzCisgICAgZGVmIGluaXRpYWxpemUocGFzc1BlcmNlbnRhZ2UsIG1heFRyaWVzKQorICAgICAg
ICBAcGFzc1BlcmNlbnRhZ2UgPSBwYXNzUGVyY2VudGFnZQorICAgICAgICBAbWF4VHJpZXMgPSBt
YXhUcmllcworICAgIGVuZAorICAgIGRlZiB0b19zCisgICAgICAgICJGbGFreSgje0BwYXNzUGVy
Y2VudGFnZX0sICN7QG1heFRyaWVzfSkiCisgICAgZW5kCisgICAgZGVmIHJlc3VsdChzdGF0dXNl
cykKKyAgICAgICAgaWYgc3RhdHVzZXMubGVuZ3RoID4gQG1heFRyaWVzCisgICAgICAgICAgICAj
IFRoaXMgY291bGQgaGFwcGVuIGlmIChiZWNhdXNlIG9mIHJlbW90ZXMgZGlzYXBwZWFyaW5nCisg
ICAgICAgICAgICAjIGFuZCByZWFwcGVhcmluZykgdGhlcmUgYXJlIG11bHRpcGxlIHJ1bnMgZm9y
IHRoZSBsYXN0CisgICAgICAgICAgICAjIHRyeSBmb3IgZmxha3kgdGVzdC4gSnVzdCBpZ25vcmUg
YW55IGV4dHJhIHN0YXR1c2VzLgorICAgICAgICAgICAgc3RhdHVzZXMgPSBzdGF0dXNlcy50YWtl
KEBtYXhUcmllcykKKyAgICAgICAgZW5kCisgICAgICAgIHN1Y2Nlc3NlcyA9IHN1Y2Nlc3NmdWxT
dGF0dXNlcyhzdGF0dXNlcykKKyAgICAgICAgcmVtYWluaW5nID0gQG1heFRyaWVzIC0gc3RhdHVz
ZXMubGVuZ3RoCisgICAgICAgIHJlcXVpcmVkU3VjY2Vzc2VzID0gKEBwYXNzUGVyY2VudGFnZSAq
IEBtYXhUcmllcykuY2VpbAorICAgICAgICByZXQgPSBuaWwgIyAiaGFzIG5vdCBjb21wbGV0ZWQg
eWV0IgorICAgICAgICBpZiBzdWNjZXNzZXMgPj0gcmVxdWlyZWRTdWNjZXNzZXMKKyAgICAgICAg
ICAgIHJldCA9IHRydWUKKyAgICAgICAgZWxzaWYgKHN1Y2Nlc3NlcyArIHJlbWFpbmluZykgPCBy
ZXF1aXJlZFN1Y2Nlc3NlcworICAgICAgICAgICAgcmV0ID0gZmFsc2UKKyAgICAgICAgZW5kCisg
ICAgICAgIHB1dGQoIiN7c2VsZn0ucmVzdWx0KCN7c3RhdHVzZXN9KSA9PiAje3JldH0iKQorICAg
ICAgICByZXQKKyAgICBlbmQKKyAgICBwcml2YXRlCisgICAgZGVmIHN1Y2Nlc3NmdWxTdGF0dXNl
cyhzdGF0dXNlcykKKyAgICAgICAgc3RhdHVzZXMuY291bnQgeworICAgICAgICAgICAgfHN0YXR1
c3wKKyAgICAgICAgICAgIHN0YXR1cyA9PSBTVEFUVVNfRklMRV9QQVNTCisgICAgICAgIH0KKyAg
ICBlbmQKK2VuZAorCitkZWYgZmxha3khKHBhc3NQZXJjZW50YWdlLCBtYXhUcmllcykKKyAgICAk
cnVuQ29tbWFuZE9wdGlvbnNbOmZsYWt5XSA9IEZsYWt5Lm5ldyhwYXNzUGVyY2VudGFnZSwgbWF4
VHJpZXMpCitlbmQKKwogZGVmIHJlcXVpcmVPcHRpb25zKCpvcHRpb25zKQogICAgICR0ZXN0U3Bl
Y2lmaWNSZXF1aXJlZE9wdGlvbnMgKz0gb3B0aW9ucwogZW5kCkBAIC0xODQ4LDM0ICsyMDE0LDYg
QEAgZGVmIGhhbmRsZUNvbGxlY3Rpb24oY29sbGVjdGlvbikKICAgICBlbmQKIGVuZAogCi1kZWYg
YXBwZW5kRmFpbHVyZShwbGFuKQotICAgIEZpbGUub3Blbigkb3V0cHV0RGlyICsgImZhaWxlZCIs
ICJhIikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBvdXRwLnB1dHMgcGxhbi5uYW1lCi0g
ICAgfQotZW5kCi0KLWRlZiBhcHBlbmRQYXNzKHBsYW4pCi0gICAgRmlsZS5vcGVuKCRvdXRwdXRE
aXIgKyAicGFzc2VkIiwgImEiKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgIG91dHAucHV0
cyBwbGFuLm5hbWUKLSAgICB9Ci1lbmQKLQotZGVmIGFwcGVuZE5vUmVzdWx0KHBsYW4pCi0gICAg
RmlsZS5vcGVuKCRvdXRwdXREaXIgKyAibm9yZXN1bHQiLCAiYSIpIHsKLSAgICAgICAgfCBvdXRw
IHwKLSAgICAgICAgb3V0cC5wdXRzIHBsYW4ubmFtZQotICAgIH0KLWVuZAotCi1kZWYgYXBwZW5k
UmVzdWx0KHBsYW4sIGRpZFBhc3MpCi0gICAgRmlsZS5vcGVuKCRvdXRwdXREaXIgKyAicmVzdWx0
cyIsICJhIikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBvdXRwLnB1dHMgIiN7cGxhbi5u
YW1lfTogI3tkaWRQYXNzID8gJ1BBU1MnIDogJ0ZBSUwnfSIKLSAgICB9Ci1lbmQKLQogZGVmIHBy
ZXBhcmVCdW5kbGUKICAgICByYWlzZSBpZiAkYnVuZGxlCiAKQEAgLTIwNTgsNTQgKzIxOTYsMTEg
QEAgZGVmIHBhcmFsbGVsRWFjaChhcnJheSwgJmJsb2NrKQogICAgIGVuZAogZW5kCiAKLWRlZiBw
cmVwYXJlVGVzdFJ1bm5lcihyZW1vdGVJbmRleD0wKQotICAgIHJhaXNlIGlmICRidW5kbGUKLQot
ICAgICRydW5saXN0LmVhY2hfd2l0aF9pbmRleCB7Ci0gICAgICAgIHwgcGxhbiwgaW5kZXggfAot
ICAgICAgICBwbGFuLmluZGV4ID0gaW5kZXgKLSAgICB9Ci0KLSAgICBEaXIubWtkaXIoJHJ1bm5l
ckRpcikgdW5sZXNzICRydW5uZXJEaXIuZGlyZWN0b3J5PwotICAgIHRvRGVsZXRlID0gW10KLSAg
ICBEaXIuZm9yZWFjaCgkcnVubmVyRGlyKSB7Ci0gICAgICAgIHwgZmlsZW5hbWUgfAotICAgICAg
ICBpZiBmaWxlbmFtZSA9fiAvXnRlc3RfLwotICAgICAgICAgICAgdG9EZWxldGUgPDwgZmlsZW5h
bWUKLSAgICAgICAgZW5kCi0gICAgfQotICAgIAotICAgIHRvRGVsZXRlLmVhY2ggewotICAgICAg
ICB8IGZpbGVuYW1lIHwKLSAgICAgICAgRmlsZS51bmxpbmsoJHJ1bm5lckRpciArIGZpbGVuYW1l
KQotICAgIH0KLQotICAgICMgV3JpdGUgdGVzdCBzY3JpcHRzIGluIHBhcmFsbGVsIGFzIHRoaXMg
aXMgYm90aCBhbiBleHBlbnNpdmUgYW5kIGEKLSAgICAjIGhpZ2hseSBJTyBpbnRlbnNpdmUgb3Bl
cmF0aW9uLCBidXQgZWFjaCBzY3JpcHQgaXMgaW5kZXBlbmRlbnQgYW5kCi0gICAgIyB0aGUgb3Bl
cmF0aW9uIGlzIHB1cmUgb3RoZXIgdGhhbiB3cml0aW5nIHRoZSB1bmlxdWUgcnVuIHNjcmlwdC4K
LSAgICBwYXJhbGxlbEVhY2goJHJ1bmxpc3QpIGRvIHwgcGxhbiB8Ci0gICAgICAgIHBsYW4ud3Jp
dGVSdW5TY3JpcHQoJHJ1bm5lckRpciArICJ0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9IikKLSAg
ICBlbmQKLQotICAgIGNhc2UgJHRlc3RSdW5uZXJUeXBlCi0gICAgd2hlbiA6bWFrZQotICAgICAg
ICBwcmVwYXJlTWFrZVRlc3RSdW5uZXIocmVtb3RlSW5kZXgpCi0gICAgd2hlbiA6c2hlbGwKLSAg
ICAgICAgcHJlcGFyZVNoZWxsVGVzdFJ1bm5lcgotICAgIHdoZW4gOnJ1YnkKLSAgICAgICAgcHJl
cGFyZVJ1YnlUZXN0UnVubmVyCi0gICAgd2hlbiA6Z251cGFyYWxsZWwKLSAgICAgICAgcHJlcGFy
ZUdudVBhcmFsbGVsVGVzdFJ1bm5lcgotICAgIGVsc2UKLSAgICAgICAgcmFpc2UgIlVua25vd24g
dGVzdCBydW5uZXIgdHlwZTogI3skdGVzdFJ1bm5lclR5cGUudG9fc30iCi0gICAgZW5kCi1lbmQK
LQogZGVmIGNsZWFuUnVubmVyRGlyZWN0b3J5CiAgICAgcmFpc2UgdW5sZXNzICRidW5kbGUKICAg
ICBEaXIuZm9yZWFjaCgkcnVubmVyRGlyKSB7CiAgICAgICAgIHwgZmlsZW5hbWUgfAotICAgICAg
ICBuZXh0IHVubGVzcyBmaWxlbmFtZSA9fiAvXnRlc3RfZmFpbC8KKyAgICAgICAgbmV4dCB1bmxl
c3MgZmlsZW5hbWUgPX4gL14je1NUQVRVU19GSUxFX1BSRUZJWH0vCiAgICAgICAgIEZpbGVVdGls
cy5ybV9mICRydW5uZXJEaXIgKyBmaWxlbmFtZQogICAgIH0KIGVuZApAQCAtMjI3NCw5ICsyMzY5
LDkgQEAgZGVmIGV4cG9ydEJhc2VFbnZpcm9ubWVudFZhcmlhYmxlcyhlc2NhcGUpCiAgICAgXS5q
b2luKCIiKQogZW5kCiAKLWRlZiBydW5UZXN0UnVubmVyKHJlbW90ZUluZGV4PTApCi0gICAgaWYg
JHJlbW90ZQotICAgICAgICByZW1vdGVIb3N0ID0gJHJlbW90ZUhvc3RzW3JlbW90ZUluZGV4XQor
ZGVmIHJ1blRlc3RSdW5uZXIodGVzdFJ1bm5lciwgcmVtb3RlSG9zdHMsIHJlbW90ZUluZGV4PTAp
CisgICAgaWYgbm90IHJlbW90ZUhvc3RzLm5pbD8KKyAgICAgICAgcmVtb3RlSG9zdCA9IHJlbW90
ZUhvc3RzW3JlbW90ZUluZGV4XQogICAgICAgICBnZXRSZW1vdGVEaXJlY3RvcnlJZk5lZWRlZChy
ZW1vdGVIb3N0KQogICAgICAgICBjb3B5QnVuZGxlVG9SZW1vdGUocmVtb3RlSG9zdCkKICAgICAg
ICAgcmVtb3RlU2NyaXB0ID0gIlwiIgpAQCAtMjI4NiwxMSArMjM4MSwxMSBAQCBkZWYgcnVuVGVz
dFJ1bm5lcihyZW1vdGVJbmRleD0wKQogICAgICAgICByZW1vdGVTY3JpcHQgKz0gImNkICN7JG91
dHB1dERpci5iYXNlbmFtZX0vLnJ1bm5lciAmJiAiCiAgICAgICAgIHJlbW90ZVNjcmlwdCArPSBl
eHBvcnRCYXNlRW52aXJvbm1lbnRWYXJpYWJsZXModHJ1ZSkKICAgICAgICAgJGVudlZhcnMuZWFj
aCB7IHx2YXJ8IHJlbW90ZVNjcmlwdCArPSAiZXhwb3J0ICIgPDwgdmFyIDw8ICJcbiIgfQotICAg
ICAgICByZW1vdGVTY3JpcHQgKz0gIiN7dGVzdFJ1bm5lckNvbW1hbmQocmVtb3RlSW5kZXgpfVwi
IgorICAgICAgICByZW1vdGVTY3JpcHQgKz0gIiN7dGVzdFJ1bm5lci5jb21tYW5kKHJlbW90ZUlu
ZGV4KX1cIiIKICAgICAgICAgcnVuQW5kTW9uaXRvclRlc3RSdW5uZXJDb21tYW5kKFsic3NoIiwg
Ii1vIiwgIk5vSG9zdEF1dGhlbnRpY2F0aW9uRm9yTG9jYWxob3N0PXllcyIsICItcCIsIHJlbW90
ZUhvc3QucG9ydC50b19zLCAiI3tyZW1vdGVIb3N0LnVzZXJ9QCN7cmVtb3RlSG9zdC5ob3N0fSIs
IHJlbW90ZVNjcmlwdF0pCiAgICAgZWxzZQogICAgICAgICBEaXIuY2hkaXIoJHJ1bm5lckRpcikg
ewotICAgICAgICAgICAgcnVuQW5kTW9uaXRvclRlc3RSdW5uZXJDb21tYW5kKFNoZWxsd29yZHMu
c2hlbGxzcGxpdCh0ZXN0UnVubmVyQ29tbWFuZCkpCisgICAgICAgICAgICBydW5BbmRNb25pdG9y
VGVzdFJ1bm5lckNvbW1hbmQoU2hlbGx3b3Jkcy5zaGVsbHNwbGl0KHRlc3RSdW5uZXIuY29tbWFu
ZCkpCiAgICAgICAgIH0KICAgICBlbmQKIGVuZApAQCAtMjMwNywzOCArMjQwMiwyMSBAQCBkZWYg
cHJvY2Vzc1N0YXR1c0xpbmUobWFwLCBsaW5lKQogICAgIHJ1bklkID0gbWRbOnJ1bklkXQogICAg
IHJlc3VsdCA9IG1kWzpyZXN1bHRdCiAgICAgaWYgcnVuSWQgIT0gJHJ1blVuaXF1ZUlkCi0gICAg
ICAgICMgVGhpcyBtYXkgY29uY2VpdmFibHkgaGFwcGVuIGlmIGEgcmVtb3RlIGdvZXMKLSAgICAg
ICAgIyBhd2F5IGluIHRoZSBtaWRkbGUgb2YgYSBydW4gYW5kIGNvbWVzIGJhY2sKLSAgICAgICAg
IyBvbmxpbmUgaW4gdGhlIG1pZGRsZSBvZiBhIGRpZmZlcmVudCBydW4uCi0gICAgICAgICRzdGRl
cnIucHV0cygiSWdub3Jpbmcgc3RhbGUgc3RhdHVzIGZpbGUgZm9yICN7aW5kZXh9IChJRCAje3J1
bklkfSBidXQgY3VycmVudCBJRCBpcyAjeyRydW5VbmlxdWVJZH0pIikKLSAgICAgICAgcmV0dXJu
Ci0gICAgZW5kCi0gICAgaWYgbWFwLmhhc19rZXk/KGluZGV4KQotICAgICAgICAjIE9uZSBzY2Vu
YXJpbyBpbiB3aGljaCB0aGlzIGNvdWxkIGhhcHBlbjoKLSAgICAgICAgIyBUZXN0IFQgcnVucyBv
biByZW1vdGUgaG9zdCBBIGFuZAotICAgICAgICAjICAgMS4gdGhlIHN0YXR1cyBmaWxlIHJlYWNo
ZXMgQSdzIGRpc2sKLSAgICAgICAgIyAgIDIuIHNvbWVob3cgdGhlIGdudSBwYXJhbGxlbCBydW5u
ZXIgaXMgbm90IG1hZGUgYXdhcmUgb2YgdGhlIHRlc3QncyBjb21wbGV0aW9uIChwYWNrZXQgbG9z
cz8pCi0gICAgICAgICMgICAzLiBtYWNoaW5lIEEgY3Jhc2hlcwotICAgICAgICAjICAgNC4gZ251
IHBhcmFsbGVsIHJlLXNjaGVkdWxlcyB0aGUgdGVzdCB0byBydW4gb24gcmVtb3RlIGhvc3QgQiwg
d2hlcmUgaXQgcnVucyB0byBjb21wbGV0aW9uCi0gICAgICAgICMgICA1LiBCIGNvbWVzIGJhY2sg
b25saW5lIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBydW4KLSAgICAgICAgIyAgIDYuIHdlIGNvbGxl
Y3QgdGhlIHN0YXR1cyBmaWxlcyBmcm9tIGFsbCByZW1vdGVzIGFuZCBlbmQgdXAgd2l0aCB0d28g
c3RhdHVzIGZpbGVzIGZvciBULgotICAgICAgICBwcmV2ID0gbWFwW2luZGV4XQotICAgICAgICAj
IG1hcFtpbmRleF0gaG9sZHMKLSAgICAgICAgIyAtIGEgbnVtYmVyLCBpZiBhbGwgcmVzdWx0cyBj
b2RlcyB3ZSd2ZSBvYnNlcnZlZCBmb3IgYSB0ZXN0IGFyZSB0aGUgc2FtZQotICAgICAgICAjIC0g
YW4gYXJyYXksIGlmIHRoZXkgZGl2ZXJnZS4KLSAgICAgICAgaWYgcHJldi5pc19hPyhBcnJheSkK
LSAgICAgICAgICAgIHByZXYucHVzaChyZXN1bHQpCi0gICAgICAgIGVsc2lmIHByZXYgIT0gcmVz
dWx0Ci0gICAgICAgICAgICAjIElmIHRoZSB0d28gcmVzdWx0cyBkaWZmZXIsIGtlZXAgdGhlbQot
ICAgICAgICAgICAgIyBib3RoLiBUaGlzIGlzIHNpbXBseSBhIHdheSB0byBtYWtlIG5vdGUgb2YK
LSAgICAgICAgICAgICMgdGhlIGRpdmVyZ2VuY2UgKGZvciBsYXRlciByZXBvcnRpbmcpLgotICAg
ICAgICAgICAgbWFwW2luZGV4XSA9IFtwcmV2LCByZXN1bHRdCisgICAgICAgIGlmICRidW5kbGUK
KyAgICAgICAgICAgICMgVGhlIHNjcmlwdHMgaW4gdGhlIGJ1bmRsZSBoYXZlIHRoZWlyIG93biBy
dW5JZCBlbWJlZGRlZCwKKyAgICAgICAgICAgICMganVzdCBpZ25vcmUgdGhlIHZhbHVlLgogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAjIEdvdCB0aGUgc2FtZSByZXN1bHQsIG5vIG5lZWQgdG8g
ZG8gYW55dGhpbmcuCisgICAgICAgICAgICAjIFRoaXMgbWF5IGNvbmNlaXZhYmx5IGhhcHBlbiBp
ZiBhIHJlbW90ZSBnb2VzCisgICAgICAgICAgICAjIGF3YXkgaW4gdGhlIG1pZGRsZSBvZiBhIHJ1
biBhbmQgY29tZXMgYmFjaworICAgICAgICAgICAgIyBvbmxpbmUgaW4gdGhlIG1pZGRsZSBvZiBh
IGRpZmZlcmVudCBydW4uCisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIklnbm9yaW5nIHN0YWxl
IHN0YXR1cyBmaWxlIGZvciAje2luZGV4fSAoSUQgI3tydW5JZH0gYnV0IGN1cnJlbnQgSUQgaXMg
I3skcnVuVW5pcXVlSWR9KSIpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZW5kCi0gICAg
ICAgICRzdGRlcnIucHV0cygiRHVwbGljYXRlIHN0YXRlIGZpbGUgZm9yICN7aW5kZXh9OiAje21h
cFtpbmRleF19IikKKyAgICBlbmQKKyAgICBpZiBtYXAuaGFzX2tleT8oaW5kZXgpCisgICAgICAg
IG1hcFtpbmRleF0ucHVzaChyZXN1bHQpCiAgICAgZWxzZQotICAgICAgICBtYXBbaW5kZXhdID0g
cmVzdWx0CisgICAgICAgIG1hcFtpbmRleF0gPSBbcmVzdWx0XQogICAgIGVuZAogZW5kCiAKQEAg
LTIzNzIsNTggKzI0NTAsMjMgQEAgZGVmIGdldFN0YXR1c01hcChtYXA9e30pCiAgICAgbWFwCiBl
bmQKIAotZGVmIGdldENvbXBsZXRlZFRlc3RzRnJvbVN0YXR1c01hcChzdGF0dXNNYXApCi0gICAg
Y29tcGxldGVkVGVzdHMgPSB7fQotICAgICRydW5saXN0LmVhY2hfd2l0aF9pbmRleCB7Ci0gICAg
ICAgIHwgcGxhbiwgaW5kZXggfAotICAgICAgICBpZiBzdGF0dXNNYXAuaGFzX2tleT8oaW5kZXgp
Ci0gICAgICAgICAgICBjb21wbGV0ZWRUZXN0c1twbGFuXSA9IG5pbAotICAgICAgICBlbmQKLSAg
ICB9Ci0gICAgY29tcGxldGVkVGVzdHMKLWVuZAotCiBkZWYgZGV0ZWN0RmFpbHVyZXMoc3RhdHVz
TWFwPXt9KQogICAgIHJhaXNlIGlmICRidW5kbGUKLSAgICBub3Jlc3VsdCA9IDAKICAgICBpZiBz
dGF0dXNNYXAuc2l6ZSA9PSAwCiAgICAgICAgIHN0YXR1c01hcCA9IGdldFN0YXR1c01hcAogICAg
IGVuZAotICAgIGZhbWlseU1hcCA9IHt9CiAKLSAgICAkcnVubGlzdC5lYWNoX3dpdGhfaW5kZXgg
ewotICAgICAgICB8IHBsYW4sIGluZGV4IHwKLSAgICAgICAgdW5sZXNzIGZhbWlseU1hcFtwbGFu
LmZhbWlseV0KLSAgICAgICAgICAgIGZhbWlseU1hcFtwbGFuLmZhbWlseV0gPSBbXQotICAgICAg
ICBlbmQKLSAgICAgICAgaWYgbm90IHN0YXR1c01hcC5oYXNfa2V5PyhpbmRleCkKLSAgICAgICAg
ICAgIGFwcGVuZE5vUmVzdWx0KHBsYW4pCi0gICAgICAgICAgICBub3Jlc3VsdCArPSAxCi0gICAg
ICAgICAgICBuZXh0Ci0gICAgICAgIGVuZAotICAgICAgICByZXN1bHQgPSBuaWwKLSAgICAgICAg
IyBJZiBhbnkgb2YgdGhlIHJlc3VsdHMgd2UgZ290IHdhcyBhIHBhc3MsIGNvbnNpZGVyIHRoZSB0
ZXN0Ci0gICAgICAgICMgc3VjY2Vzc2Z1bC4gVGhlIGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0IGZh
aWx1cmVzIGFyZSBiZWNhdXNlCi0gICAgICAgICMgb2YgaW5mcmFzdHJ1Y3R1cmUgaXNzdWVzICh3
aGljaCBpcyB3aHkgdGhlIHRlc3Qgd2FzIHJ1bgotICAgICAgICAjIG11bHRpcGxlIHRpbWVzIGlu
IHRoZSBmaXJzdCBwbGFjZSkuCi0gICAgICAgIHRlc3RXYXNTdWNjZXNzZnVsID0gc3RhdHVzTWFw
W2luZGV4XS5pbmNsdWRlPyhTVEFUVVNfRklMRV9QQVNTKQotICAgICAgICBpZiB0ZXN0V2FzU3Vj
Y2Vzc2Z1bAotICAgICAgICAgICAgYXBwZW5kUGFzcyhwbGFuKQotICAgICAgICAgICAgcmVzdWx0
ID0gIlBBU1MiCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFwcGVuZEZhaWx1cmUocGxhbikK
LSAgICAgICAgICAgIHJlc3VsdCA9ICJGQUlMIgotICAgICAgICBlbmQKLSAgICAgICAgYXBwZW5k
UmVzdWx0KHBsYW4sIHRlc3RXYXNTdWNjZXNzZnVsKQotICAgICAgICBmYW1pbHlNYXBbcGxhbi5m
YW1pbHldIDw8IHsgOnJlc3VsdCA9PiByZXN1bHQsIDpwbGFuID0+IHBsYW4gfQotICAgIH0KKyAg
ICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0RXZhbHVhdG9yRmluYWwubmV3KCRydW5saXN0LCBzdGF0
dXNNYXApCisgICAgZXZhbHVhdG9yLnZpc2l0IQogCi0gICAgaWYgbm9yZXN1bHQgPiAwCi0gICAg
ICAgICRzdGRlcnIucHV0cygiQ291bGQgbm90IGdldCB0aGUgZXhpdCBzdGF0dXMgZm9yICN7bm9y
ZXN1bHR9IHRlc3RzIikKKyAgICBpZiBldmFsdWF0b3Iubm9yZXN1bHQgPiAwCisgICAgICAgICRz
dGRlcnIucHV0cygiQ291bGQgbm90IGdldCB0aGUgZXhpdCBzdGF0dXMgZm9yICN7ZXZhbHVhdG9y
Lm5vcmVzdWx0fSB0ZXN0cyIpCiAgICAgICAgICMgV2UgY2FuJ3QgY2hhbmdlIG91ciBleGl0IGNv
ZGUsIGFzIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwogICAgICAgICAjIGV4cGVjdHMgMCBldmVu
IHdoZW4gdGhlcmUgYXJlIGZhaWx1cmVzLgogICAgIGVuZAogCisgICAgZmFtaWx5TWFwID0gZXZh
bHVhdG9yLmZhbWlseU1hcAorCiAgICAgRmlsZS5vcGVuKCRvdXRwdXREaXIgKyAicmVzdWx0c0J5
RmFtaWx5IiwgInciKSB7CiAgICAgICAgIHwgb3V0cCB8CiAgICAgICAgIGZpcnN0ID0gdHJ1ZQpA
QCAtMjQ3Myw2ICsyNTE2LDcgQEAgZW5kCiBjbGVhbigkb3V0cHV0RGlyICsgImZhaWxlZCIpCiBj
bGVhbigkb3V0cHV0RGlyICsgInBhc3NlZCIpCiBjbGVhbigkb3V0cHV0RGlyICsgIm5vcmVzdWx0
IikKK2NsZWFuKCRvdXRwdXREaXIgKyAiZmxha3kiKQogY2xlYW4oJG91dHB1dERpciArICJyZXN1
bHRzIikKIGNsZWFuKCRvdXRwdXREaXIgKyAicmVzdWx0c0J5RmFtaWx5IikKIGNsZWFuKCRvdXRw
dXREaXIgKyAiLnZtIikKQEAgLTI1MTUsMjcgKzI1NTksMTcgQEAgRU5WWyJUWiJdID0gIlVTL1Bh
Y2lmaWMiOwogZGVmIHJ1bkJ1bmRsZQogICAgIHJhaXNlIHVubGVzcyAkYnVuZGxlCiAKLSAgICBj
bGVhblJ1bm5lckRpcmVjdG9yeQotICAgIGNsZWFuT2xkUmVzdWx0cwotICAgIHJ1blRlc3RSdW5u
ZXIKLSAgICBjbGVhbkVtcHR5UmVzdWx0RmlsZXMKLWVuZAotCi1kZWYgcnVuTm9ybWFsCi0gICAg
cmFpc2UgaWYgJGJ1bmRsZSBvciAkdGFyYmFsbAotCi0gICAgcHJlcGFyZUJ1bmRsZQotICAgIHBy
ZXBhcmVUZXN0UnVubmVyCi0gICAgcnVuVGVzdFJ1bm5lcgotICAgIGNsZWFuRW1wdHlSZXN1bHRG
aWxlcwotICAgIGRldGVjdEZhaWx1cmVzCisgICAgdGVzdFJ1bm5lciA9IFRlc3RSdW5uZXIuY3Jl
YXRlKCR0ZXN0UnVubmVyVHlwZSwgJHJ1bm5lckRpcikKKyAgICBldmFsdWF0b3IgPSBCdW5kbGVU
ZXN0c0V4ZWN1dG9yLm5ldygkcnVubGlzdCwgJHNlcmlhbFBsYW5zLCBJVEVSQVRJT05fTElNSVRT
LCAkdHJlYXRGYWlsaW5nQXNGbGFreSwgdGVzdFJ1bm5lcikKKyAgICBldmFsdWF0b3IubG9vcAog
ZW5kCiAKIGRlZiBydW5UYXJiYWxsCiAgICAgcmFpc2UgdW5sZXNzICR0YXJiYWxsCiAKLSAgICBw
cmVwYXJlQnVuZGxlIAotICAgIHByZXBhcmVUZXN0UnVubmVyCisgICAgcHJlcGFyZUJ1bmRsZQor
ICAgIHRlc3RSdW5uZXIgPSBUZXN0UnVubmVyLmNyZWF0ZSgkdGVzdFJ1bm5lclR5cGUsICRydW5u
ZXJEaXIpCisgICAgdGVzdFJ1bm5lci5wcmVwYXJlKCRydW5saXN0LCAkc2VyaWFsUGxhbnMsIFNl
dC5uZXcsIG5pbCkKICAgICBjb21wcmVzc0J1bmRsZQogZW5kCiAKQEAgLTI1NjksNDQgKzI2MDMs
MjggQEAgZGVmIGZvckVhY2hSZW1vdGUocmVtb3RlSG9zdHMsIG9wdGlvbnM9e30sICZibGspCiAg
ICAgbGl2ZVJlbW90ZXMKIGVuZAogCi1kZWYgcnVuUmVtb3RlCi0gICAgcmFpc2UgdW5sZXNzICRy
ZW1vdGUKLQotICAgIHByZXBhcmVCdW5kbGUKLSAgICAkcmVtb3RlSG9zdHMuZWFjaF9pbmRleCB7
Ci0gICAgICAgIHwgaW5kZXggfAotICAgICAgICBwcmVwYXJlVGVzdFJ1bm5lcihpbmRleCkKLSAg
ICB9Ci0gICAgY29tcHJlc3NCdW5kbGUKLSAgICBmb3JFYWNoUmVtb3RlKCRyZW1vdGVIb3N0cykg
ewotICAgICAgICB8IGluZGV4IHwKLSAgICAgICAgcnVuVGVzdFJ1bm5lcihpbmRleCkKLSAgICB9
Ci0gICAgZGV0ZWN0RmFpbHVyZXMKLWVuZAotCi1kZWYgcHJlcGFyZUdudVBhcmFsbGVsUnVubmVy
Sm9icyhuYW1lLCBydW5saXN0LCBleGNsdWRlKQotICAgIHBhdGggPSAkcnVubmVyRGlyICsgbmFt
ZQotICAgIEZpbGVVdGlscy5ta2Rpcl9wKCRydW5uZXJEaXIpCitjbGFzcyBUZXN0UnVubmVyR251
UGFyYWxsZWwgPCBUZXN0UnVubmVyCisgICAgZGVmIHByZXBhcmVHbnVQYXJhbGxlbFJ1bm5lckpv
YnMobmFtZSwgcnVubGlzdCwgY29tcGxldGVkUGxhbnMpCisgICAgICAgIHBhdGggPSBAcnVubmVy
RGlyICsgbmFtZQorICAgICAgICBGaWxlVXRpbHMubWtkaXJfcChAcnVubmVyRGlyKQogCi0gICAg
RmlsZS5vcGVuKHBhdGgsICJ3IikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBydW5saXN0
LmVhY2ggewotICAgICAgICAgICAgfCBwbGFuIHwKLSAgICAgICAgICAgIGlmIGV4Y2x1ZGUuaGFz
X2tleT8ocGxhbikKLSAgICAgICAgICAgICAgICBuZXh0Ci0gICAgICAgICAgICBlbmQKLSAgICAg
ICAgICAgIG91dHAucHV0cygiLi90ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9IikKKyAgICAgICAg
RmlsZS5vcGVuKHBhdGgsICJ3IikgeworICAgICAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgICAg
IHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAg
ICBpZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBu
ZXh0CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzKCIuL3Rl
c3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iKQorICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
fQorICAgIGVuZAorICAgIGRlZiBwcmVwYXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBj
b21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIHByZXBhcmVHbnVQYXJhbGxlbFJ1
bm5lckpvYnMoInBhcmFsbGVsLXRlc3RzIiwgcnVubGlzdCwgY29tcGxldGVkUGxhbnMgfCBzZXJp
YWxQbGFucykKKyAgICAgICAgcHJlcGFyZUdudVBhcmFsbGVsUnVubmVySm9icygic2VyaWFsLXRl
c3RzIiwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zKQorICAgIGVuZAogZW5kCiAKLWRlZiBw
cmVwYXJlR251UGFyYWxsZWxUZXN0UnVubmVyKGV4Y2x1ZGU9e30pCi0gICAgc2VyaWFsVGVzdHMg
PSB7fQotICAgICRzZXJpYWxSdW5saXN0LmVhY2ggeyB8cHwgc2VyaWFsVGVzdHNbcF0gPSBuaWwg
fQotICAgIHByZXBhcmVHbnVQYXJhbGxlbFJ1bm5lckpvYnMoInBhcmFsbGVsLXRlc3RzIiwgJHJ1
bmxpc3QsIGV4Y2x1ZGUubWVyZ2Uoc2VyaWFsVGVzdHMpKQotICAgIHByZXBhcmVHbnVQYXJhbGxl
bFJ1bm5lckpvYnMoInNlcmlhbC10ZXN0cyIsICRzZXJpYWxSdW5saXN0LCBleGNsdWRlKQotZW5k
CiAKIGRlZiB3aXRoR251UGFyYWxsZWxTc2hXcmFwcGVyKCZibGspCiAgICAgVGVtcGZpbGUub3Bl
bignc3NoLXdyYXBwZXInLCAkcnVubmVyRGlyKSB7CkBAIC0yNzI0LDI4ICsyNzQyLDEwNCBAQCBk
ZWYgcnVuR251UGFyYWxsZWxSdW5uZXIocmVtb3RlSG9zdHMsIGlucHV0cywgb3B0aW9ucz17fSkK
ICAgICB9CiBlbmQKIAotZGVmIHJ1bkdudVBhcmFsbGVsCi0gICAgcmFpc2UgdW5sZXNzICRyZW1v
dGUKLSAgICBwcmVwYXJlQnVuZGxlCi0gICAgcHJlcGFyZVRlc3RSdW5uZXIKLSAgICBjb21wcmVz
c0J1bmRsZQotICAgIHN0YXR1c01hcCA9IHt9Ci0gICAgIyBUaGlzIGlzIGEgaGlnaC1sZXZlbCBy
ZXRyeSBsb29wLiBJZiBhIHJlbW90ZSBob3N0IGdvZXMgYXdheSBpbgotICAgICMgdGhlIG1pZGRs
ZSBvZiBhIHJ1biBhbmQgZWl0aGVyIGRvZXNuJ3QgY29tZSBiYWNrIG9ubGluZSBvciBjb21lcwot
ICAgICMgYmFjayBoYXZpbmcgcmVtb3ZlZCB0aGUgcmVtb3RlIGRpcmVjdG9yeSAoKiksIGdldFN0
YXR1c01hcCB3aWxsIGJlCi0gICAgIyBtaXNzaW5nIHJlc3VsdHMgZm9yIHRoZXNlIHRlc3RzLCBh
bGxvd2luZyB1cyB0byByZXRyeSB0aGVtIGluCi0gICAgIyB0aGUgbmV4dCBpdGVyYXRpb24uCi0g
ICAgIwotICAgICMgKCopIFRoaXMgbWF5IHdlbGwgaGFwcGVuIHdoZW4gcnVubmluZyB0aGUgdGVz
dHMgb24gZW1iZWRkZWQKLSAgICAjIGJvYXJkcyB0aGF0IHJlZ3VsYXJseSBjb3JydXB0IHRoZWly
IFNEIGNhcmQuIERlZmluaXRlbHkgYW4gaXNzdWUKLSAgICAjIGZvciB0aGUgY2kyMCBib2FyZHMg
dXNlZCB0byB0ZXN0IE1JUFMuCi0gICAgIwotICAgICMgVGhlIG51bWJlciBvZiB0cmllcyBzY2Fs
ZXMgd2l0aCB0aGUgbnVtYmVyIG9mIHJlbW90ZXMgaW4gdXNlLAotICAgICMgd2l0aCBhIHJlYXNv
bmFibGUgZmxvb3IuCi0gICAgdHJpZXMgPSBbMywgJHJlbW90ZUhvc3RzLnNpemUgLyAyXS5tYXgK
LSAgICB0cmllcy50aW1lcyB7Ci0gICAgICAgIHwgaXRlcmF0aW9uIHwKLSAgICAgICAgcmVtb3Rl
SG9zdHMgPSAkcmVtb3RlSG9zdHMKKyMgVW5jb25kaXRpb25hbGx5IHJ1biB0aGUgc2VsZnRlc3Rz
IG9uIGV2ZXJ5IGV4ZWN1dGlvbiwgdGhleSdyZSBwcmV0dHkgY2hlYXAuCitFeGVjdXRvclNlbGZU
ZXN0cy5ydW4KK1Rlc3RSZXN1bHRFdmFsdWF0b3JTZWxmVGVzdHMucnVuCisKK2NsYXNzIE5vblJl
bW90ZVRlc3RzRXhlY3V0b3IgPCBCYXNlVGVzdHNFeGVjdXRvcgorICAgIGRlZiBpbml0aWFsaXpl
KHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBtYXhJdGVyYXRpb25zQm91bmRzLCB0cmVhdEZhaWxpbmdB
c0ZsYWt5LCB0ZXN0UnVubmVyKQorICAgICAgICBzdXBlcihydW5saXN0LCBzZXJpYWxQbGFucywK
KyAgICAgICAgICAgICAgbmlsLAorICAgICAgICAgICAgICBtYXhJdGVyYXRpb25zQm91bmRzLAor
ICAgICAgICAgICAgICB0cmVhdEZhaWxpbmdBc0ZsYWt5CisgICAgICAgICAgICAgKQorICAgICAg
ICBAdGVzdFJ1bm5lciA9IHRlc3RSdW5uZXIKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZUV4ZWN1
dGlvbihyZW1vdGVIb3N0cykKKyAgICAgICAgcmVtb3RlSG9zdHMKKyAgICBlbmQKKyAgICBkZWYg
cmVmcmVzaEV4ZWN1dGlvbihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkVGVzdHMpCisg
ICAgICAgIGlmIG5vdCBAcmVtb3RlSG9zdHMubmlsPworICAgICAgICAgICAgcmFpc2UgInJlbW90
ZUhvc3RzICN7QHJlbW90ZUhvc3RzfSwgZXhwZWN0ZWQgbmlsIgorICAgICAgICBlbmQKKyAgICAg
ICAgQHRlc3RSdW5uZXIucHJlcGFyZShydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkVGVz
dHMsIEByZW1vdGVIb3N0cykKKyAgICBlbmQKK2VuZAorCitjbGFzcyBOb3JtYWxUZXN0c0V4ZWN1
dG9yIDwgTm9uUmVtb3RlVGVzdHNFeGVjdXRvcgorICAgIGRlZiBwcmVwYXJlQXJ0aWZhY3RzKHJl
bW90ZUhvc3RzKQorICAgICAgICByYWlzZSAicmVtb3RlSG9zdHMgbm90IG5pbCIgdW5sZXNzIHJl
bW90ZUhvc3RzLm5pbD8KKyAgICAgICAgcHJlcGFyZUJ1bmRsZQorICAgICAgICBAdGVzdFJ1bm5l
ci5wcmVwYXJlKEBydW5saXN0LCBAc2VyaWFsUGxhbnMsIFNldC5uZXcsIG5pbCkKKyAgICBlbmQK
KyAgICBkZWYgZXhlY3V0ZVRlc3RzKHJlbW90ZUhvc3RzKQorICAgICAgICBydW5UZXN0UnVubmVy
KEB0ZXN0UnVubmVyLCBuaWwsIG5pbCkKKyAgICAgICAgY2xlYW5FbXB0eVJlc3VsdEZpbGVzCisg
ICAgZW5kCisgICAgZGVmIHVwZGF0ZVN0YXR1c01hcChpdGVyYXRpb24sIHN0YXR1c01hcCkKKyAg
ICAgICAgcmV0dXJuIGdldFN0YXR1c01hcChzdGF0dXNNYXApCisgICAgZW5kCitlbmQKKworY2xh
c3MgQnVuZGxlVGVzdHNFeGVjdXRvciA8IE5vblJlbW90ZVRlc3RzRXhlY3V0b3IKKyAgICBkZWYg
cHJlcGFyZUFydGlmYWN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAgcmFpc2UgInJlbW90ZUhvc3Rz
IG5vdCBuaWwiIHVubGVzcyByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgIGNsZWFuUnVubmVyRGly
ZWN0b3J5CisgICAgICAgIGNsZWFuT2xkUmVzdWx0cworICAgIGVuZAorICAgIGRlZiBleGVjdXRl
VGVzdHMocmVtb3RlSG9zdHMpCisgICAgICAgIHJ1blRlc3RSdW5uZXIoQHRlc3RSdW5uZXIsIG5p
bCwgbmlsKQorICAgICAgICBjbGVhbkVtcHR5UmVzdWx0RmlsZXMKKyAgICBlbmQKKyAgICBkZWYg
dXBkYXRlU3RhdHVzTWFwKGl0ZXJhdGlvbiwgc3RhdHVzTWFwKQorICAgICAgICByZXR1cm4gZ2V0
U3RhdHVzTWFwKHN0YXR1c01hcCkKKyAgICBlbmQKK2VuZAorCitjbGFzcyBCYXNlUmVtb3RlVGVz
dHNFeGVjdXRvciA8IEJhc2VUZXN0c0V4ZWN1dG9yCisgICAgZGVmIGluaXRpYWxpemUocnVubGlz
dCwgc2VyaWFsUGxhbnMsIHJlbW90ZUhvc3RzLCBpdGVyYXRpb25MaW1pdHMsCisgICAgICAgICAg
ICAgICAgICAgdHJlYXRGYWlsaW5nQXNGbGFreSwgdGVzdFJ1bm5lcikKKyAgICAgICAgc3VwZXIo
cnVubGlzdCwgc2VyaWFsUGxhbnMsIHJlbW90ZUhvc3RzLCBpdGVyYXRpb25MaW1pdHMsIHRyZWF0
RmFpbGluZ0FzRmxha3kpCisgICAgICAgIEB0ZXN0UnVubmVyID0gdGVzdFJ1bm5lcgorICAgIGVu
ZAorICAgIGRlZiB1cGRhdGVTdGF0dXNNYXAoaXRlcmF0aW9uLCBzdGF0dXNNYXApCisgICAgICAg
IHJldHVybiBnZXRTdGF0dXNNYXAoc3RhdHVzTWFwKQorICAgIGVuZAorICAgIGRlZiByZWZyZXNo
RXhlY3V0aW9uKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRUZXN0cykKKyAgICAgICAg
IyBOb3RlLCB3aGVuIHJ1bm5pbmcgdGVzdHMgcmVtb3RlbHksIHdlIGFsd2F5cyBwcmVwYXJlIHRl
c3RzCisgICAgICAgICMgZm9yIGFsbCB0aGUgaG9zdHMgd2hlbiByZWZyZXNoaW5nIGV4ZWN1dGlv
biwgYXMgZXZlbiBob3N0cworICAgICAgICAjIHRoYXQgd2VudCBhd2F5IGR1cmluZyB0ZXN0aW5n
IG1heSBoYXZlIGNvbWUgYmFjayBvbmxpbmUgaW4KKyAgICAgICAgIyB0aGUgbWVhbnRpbWUgLS0g
c28gd2UgZG9uJ3QgZXhwZWN0IGEgbGlzdCBvZiBsaXZlIHJlbW90ZQorICAgICAgICAjIGhvc3Rz
IHRvIGJlIHBhc3NlZCBpbi4KKyAgICAgICAgQHRlc3RSdW5uZXIucHJlcGFyZShydW5saXN0LCBz
ZXJpYWxQbGFucywgY29tcGxldGVkVGVzdHMsIEByZW1vdGVIb3N0cykKKyAgICBlbmQKK2VuZAor
CitjbGFzcyBSZW1vdGVUZXN0c0V4ZWN1dG9yIDwgQmFzZVJlbW90ZVRlc3RzRXhlY3V0b3IKKyAg
ICBkZWYgcHJlcGFyZUFydGlmYWN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAgcmFpc2UgInJlbW90
ZUhvc3RzIG5pbCIgaWYgcmVtb3RlSG9zdHMubmlsPworICAgICAgICBwcmVwYXJlQnVuZGxlCisg
ICAgICAgIEB0ZXN0UnVubmVyLnByZXBhcmUoQHJ1bmxpc3QsIEBzZXJpYWxQbGFucywgU2V0Lm5l
dywgcmVtb3RlSG9zdHMpCisgICAgICAgIGNvbXByZXNzQnVuZGxlCisgICAgZW5kCisgICAgZGVm
IHByZXBhcmVFeGVjdXRpb24ocmVtb3RlSG9zdHMpCisgICAgICAgIHJlbW90ZUhvc3RzCisgICAg
ZW5kCisgICAgZGVmIGV4ZWN1dGVUZXN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAgZm9yRWFjaFJl
bW90ZShyZW1vdGVIb3N0cykgeworICAgICAgICAgICAgfCBpbmRleCB8CisgICAgICAgICAgICBy
dW5UZXN0UnVubmVyKEB0ZXN0UnVubmVyLCByZW1vdGVIb3N0cywgaW5kZXgpCisgICAgICAgIH0K
KyAgICBlbmQKK2VuZAorCitjbGFzcyBHbnVQYXJhbGxlbFRlc3RzRXhlY3V0b3IgPCBCYXNlUmVt
b3RlVGVzdHNFeGVjdXRvcgorICAgIGRlZiBwcmVwYXJlQXJ0aWZhY3RzKHJlbW90ZUhvc3RzKQor
ICAgICAgICBwcmVwYXJlQnVuZGxlCisgICAgICAgIEB0ZXN0UnVubmVyLnByZXBhcmUoQHJ1bmxp
c3QsIEBzZXJpYWxQbGFucywgU2V0Lm5ldywgcmVtb3RlSG9zdHMpCisgICAgICAgIGNvbXByZXNz
QnVuZGxlCisgICAgZW5kCisgICAgZGVmIHByZXBhcmVFeGVjdXRpb24ocmVtb3RlSG9zdHMpCiAg
ICAgICAgICMgSWYgdGhlIHByZXBhcmF0b3J5IHN0ZXBzIGZhaWwsIGRyb3AgdGhlIHJlbW90ZSBo
b3N0IGZyb20gb3VyCiAgICAgICAgICMgbGlzdC4gT3RoZXJ3aXNlLCBpZiBpdCBjb21lcyBiYWNr
IG9ubGluZSBpbiB0aGUgbWlkZGxlIG9mIGFuCiAgICAgICAgICMgaXRlcmF0aW9uLCB3ZSdsbCB0
cnkgdG8gcnVuIHRlc3Qgam9icyBvbiBpdCwgcG9zc2libHkgdXNpbmcKQEAgLTI3NTUsMzAgKzI4
NDksNDMgQEAgZGVmIHJ1bkdudVBhcmFsbGVsCiAgICAgICAgICAgICBnZXRSZW1vdGVEaXJlY3Rv
cnlJZk5lZWRlZChyZW1vdGVIb3N0KQogICAgICAgICAgICAgY29weUJ1bmRsZVRvUmVtb3RlKHJl
bW90ZUhvc3QpCiAgICAgICAgIH0KLSAgICAgICAgcmVtb3RlSG9zdHMgPSB1bnBhY2tCdW5kbGVH
bnVQYXJhbGxlbChyZW1vdGVIb3N0cykKLSAgICAgICAgaWYgcmVtb3RlSG9zdHMuc2l6ZSA9PSAw
Ci0gICAgICAgICAgICAjIEVpdGhlciBldmVyeXRoaW5nIGlzIGRvd24sIG9yIGV2ZXJ5dGhpbmcg
Z290Ci0gICAgICAgICAgICAjIHJlYm9vdGVkLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGFsbG93IGVu
b3VnaCB0aW1lIGZvciB0aGUKLSAgICAgICAgICAgICMgcmVtb3RlIGJvYXJkcyB0byBib290IHVw
LCB0aGVuIHJldHJ5LgotICAgICAgICAgICAgd2FpdEludGVydmFsID0gNjAKLSAgICAgICAgICAg
ICRzdGRlcnIucHV0cygiQWxsIHJlbW90ZSBob3N0cyBmYWlsZWQsIHJldHJ5aW5nIGFmdGVyICN7
d2FpdEludGVydmFsfXMiKQotICAgICAgICAgICAgc2xlZXAod2FpdEludGVydmFsKQotICAgICAg
ICAgICAgbmV4dAotICAgICAgICBlbmQKLQorICAgICAgICByZXR1cm4gdW5wYWNrQnVuZGxlR251
UGFyYWxsZWwocmVtb3RlSG9zdHMpCisgICAgZW5kCisgICAgZGVmIGV4ZWN1dGVUZXN0cyhyZW1v
dGVIb3N0cykKICAgICAgICAgcnVuR251UGFyYWxsZWxSdW5uZXIocmVtb3RlSG9zdHMsICRydW5u
ZXJEaXIgKyAic2VyaWFsLXRlc3RzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyA6
cGFyYWxsZWxKb2JzT25FYWNoSG9zdCA9PiAxfSkKICAgICAgICAgcnVuR251UGFyYWxsZWxSdW5u
ZXIocmVtb3RlSG9zdHMsICRydW5uZXJEaXIgKyAicGFyYWxsZWwtdGVzdHMiKQotICAgICAgICBz
dGF0dXNNYXAgPSBnZXRTdGF0dXNNYXAoc3RhdHVzTWFwKQotICAgICAgICBjb21wbGV0ZWRUZXN0
cyA9IGdldENvbXBsZXRlZFRlc3RzRnJvbVN0YXR1c01hcChzdGF0dXNNYXApCi0gICAgICAgIGJy
ZWFrIHVubGVzcyBjb21wbGV0ZWRUZXN0cy5zaXplICE9ICRydW5saXN0LnNpemUKLSAgICAgICAg
aWYgY29tcGxldGVkVGVzdHMuc2l6ZSA+ICRydW5saXN0LnNpemUKLSAgICAgICAgICAgIHJhaXNl
ICJUZXN0IGNvdW50IG1pc21hdGNoOiAje2NvbXBsZXRlZFRlc3RzLnNpemV9ID4gI3skcnVubGlz
dC5zaXplfSIKLSAgICAgICAgZW5kCi0gICAgICAgICMgUmVnZW5lcmF0ZSB0aGUgbGlzdHMgb2Yg
dGVzdHMgdG8gcnVuCi0gICAgICAgIHByZXBhcmVHbnVQYXJhbGxlbFRlc3RSdW5uZXIoY29tcGxl
dGVkVGVzdHMpCi0gICAgICAgICRzdGRlcnIucHV0cygiQWZ0ZXIgdHJ5ICN7aXRlcmF0aW9uICsg
MX0vI3t0cmllc306IGdvdCByZXN1bHRzIGZvciAje2NvbXBsZXRlZFRlc3RzLnNpemV9LyN7JHJ1
bmxpc3Quc2l6ZX0gdGVzdHMsICN7cmVtb3RlSG9zdHMuc2l6ZX0vI3skcmVtb3RlSG9zdHMuc2l6
ZX0gaG9zdHMgbGl2ZSIpCi0gICAgfQorICAgIGVuZAorZW5kCisKK2RlZiBydW5Ob3JtYWwKKyAg
ICByYWlzZSBpZiAkYnVuZGxlIG9yICR0YXJiYWxsCisKKyAgICB0ZXN0UnVubmVyID0gVGVzdFJ1
bm5lci5jcmVhdGUoJHRlc3RSdW5uZXJUeXBlLCAkcnVubmVyRGlyKQorICAgIGV2YWx1YXRvciA9
IE5vcm1hbFRlc3RzRXhlY3V0b3IubmV3KCRydW5saXN0LCAkc2VyaWFsUGxhbnMsIElURVJBVElP
Tl9MSU1JVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRyZWF0
RmFpbGluZ0FzRmxha3ksIHRlc3RSdW5uZXIpCisgICAgc3RhdHVzTWFwID0gZXZhbHVhdG9yLmxv
b3AKKyAgICBkZXRlY3RGYWlsdXJlcyhzdGF0dXNNYXApCisKK2VuZAorCitkZWYgcnVuUmVtb3Rl
CisgICAgcmFpc2UgdW5sZXNzICRyZW1vdGUKKworICAgIHRlc3RSdW5uZXIgPSBUZXN0UnVubmVy
LmNyZWF0ZSgkdGVzdFJ1bm5lclR5cGUsICRydW5uZXJEaXIpCisgICAgZXhlY3V0b3IgPSBSZW1v
dGVUZXN0c0V4ZWN1dG9yLm5ldygkcnVubGlzdCwgJHNlcmlhbFBsYW5zLCAkcmVtb3RlSG9zdHMs
IElURVJBVElPTl9MSU1JVFMsICR0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0UnVubmVyKQorICAg
IHN0YXR1c01hcCA9IGV4ZWN1dG9yLmxvb3AKKyAgICBkZXRlY3RGYWlsdXJlcyhzdGF0dXNNYXAp
CitlbmQKKworZGVmIHJ1bkdudVBhcmFsbGVsCisgICAgcmFpc2UgIkNhbiBvbmx5IHVzZSAtLWdu
dS1wYXJhbGxlbC1ydW5uZXIgd2l0aCAtLXJlbW90ZSoiIHVubGVzcyAkcmVtb3RlCisgICAgcmFp
c2UgIkNhbiBvbmx5IHVzZSAtLWdudS1wYXJhbGxlbC1ydW5uZXIgd2l0aCB0aGUgZGVmYXVsdCB3
cml0ZXIiIHVubGVzcyAkdGVzdFdyaXRlciA9PSAiZGVmYXVsdCIKKyAgICB0ZXN0UnVubmVyID0g
VGVzdFJ1bm5lci5jcmVhdGUoJHRlc3RSdW5uZXJUeXBlLCAkcnVubmVyRGlyKQorICAgIGV4ZWN1
dG9yID0gR251UGFyYWxsZWxUZXN0c0V4ZWN1dG9yLm5ldygkcnVubGlzdCwgJHNlcmlhbFBsYW5z
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVtb3RlSG9z
dHMsIElURVJBVElPTl9MSU1JVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICR0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0UnVubmVyKQorICAgIHN0YXR1c01h
cCA9IGV4ZWN1dG9yLmxvb3AKICAgICBkZXRlY3RGYWlsdXJlcyhzdGF0dXNNYXApCiBlbmQKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0
ZXItZGVmYXVsdC5yYiBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qt
d3JpdGVyLWRlZmF1bHQucmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MWI3MWRh
MDBlMWZkYWM5ZGY5ZGQyNTllMGJlNjYwNGM3YjcxM2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJl
c3MtdGVzdC13cml0ZXItZGVmYXVsdC5yYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1NSArMCwwIEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4gCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4gCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0j
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1kZWYgcHJlZml4Q29tbWFu
ZChwcmVmaXgpCi0gICAgImF3ayAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgieyBwcmludGYg
I3socHJlZml4ICsgJzogJykuaW5zcGVjdH07IHByaW50IH0iKQotZW5kCi0KLWRlZiByZWRpcmVj
dEFuZFByZWZpeENvbW1hbmQocHJlZml4KQotICAgIHByZWZpeENvbW1hbmQocHJlZml4KSArICIg
Mj4mMSIKLWVuZAotCi1kZWYgcGlwZUFuZFByZWZpeENvbW1hbmQob3V0cHV0RmlsZW5hbWUsIHBy
ZWZpeCkKLSAgICAidGVlICIgKyBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKG91dHB1dEZpbGVuYW1l
LnRvX3MpICsgIiB8ICIgKyBwcmVmaXhDb21tYW5kKHByZWZpeCkKLWVuZAotCi0jIE91dHB1dCBo
YW5kbGVyIGZvciB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byBiZSBzaWxlbnQuCi1kZWYgc2ls
ZW50T3V0cHV0SGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBuYW1lIHwKLSAgICAg
ICAgcGlwZUFuZFByZWZpeENvbW1hbmQoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIp
KS50b19zLCBuYW1lKQotICAgIH0KLWVuZAotCi0jIE91dHB1dCBoYW5kbGVyIGZvciB0ZXN0cyB0
aGF0IGFyZSBleHBlY3RlZCB0byBwcm9kdWNlIG1lYW5pbmdmdWwgb3V0cHV0LgotZGVmIG5vaXN5
T3V0cHV0SGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBuYW1lIHwKLSAgICAgICAg
ImNhdCA+ICIgKyBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChuYW1l
ICsgIi5vdXQiKSkudG9fcykKLSAgICB9Ci1lbmQKLQotZGVmIGdldEFuZFRlc3RFeGl0Q29kZShw
bGFuLCBjb25kaXRpb24pCi0gICAgPDwtRU9GCi0gICAgaWYgdGVzdCAiJGV4aXRDb2RlIiAje2Nv
bmRpdGlvbn0KLUVPRgotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBmYWls
IGV4YWN0bHkgd2hlbiB0aGV5IHJldHVybiBub24temVybyBleGl0IHN0YXR1cy4KLSMgVGhpcyBp
cyB1c2VmdWwgd2hlbiBhIHRlc3QgaXMgZXhwZWN0ZWQgdG8gZmFpbC4KLWRlZiBzaW1wbGVFcnJv
ckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAg
IG91dHAucHV0cyBnZXRBbmRUZXN0RXhpdENvZGUocGxhbiwgIi1uZSAwIikKLSAgICAgICAgb3V0
cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBFUlJPUjogVW5leHBl
Y3RlZCBleGl0IGNvZGU6ICRleGl0Q29kZSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5k
KHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQK
LSAgICAgICAgb3V0cC5wdXRzICJlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxh
bi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImZpIgotICAgIH0KLWVuZAotCi0j
IEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1
cm4gemVybyBleGl0IHN0YXR1cy4KLWRlZiBleHBlY3RlZEZhaWxFcnJvckhhbmRsZXIKLSAgICBQ
cm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyBnZXRB
bmRUZXN0RXhpdENvZGUocGxhbiwgIi1uZSAwIikKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgot
ICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBv
dXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgIChlY2hvIEVSUk9SOiBVbmV4
cGVjdGVkIGV4aXQgY29kZTogMCkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4u
bmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAg
ICAgb3V0cC5wdXRzICJmaSIKLSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0
cyB0aGF0IGZhaWwgZXhhY3RseSB3aGVuIHRoZXkgcmV0dXJuIG5vbi16ZXJvIGV4aXQgc3RhdHVz
IGFuZCBwcm9kdWNlCi0jIGxvdHMgb2Ygc3Bldy4gVGhpcyB3aWxsIGVjaG8gdGhhdCBzcGV3IHdo
ZW4gdGhlIHRlc3QgZmFpbHMuCi1kZWYgbm9pc3lFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7
Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3
b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSku
dG9fcykKLQotICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVzdEV4aXRDb2RlKHBsYW4sICItbmUg
MCIpCi0gICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGNh
dCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTog
JGV4aXRDb2RlKSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAg
ICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1
dHMgImVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5k
Ci0gICAgICAgIG91dHAucHV0cyAiZmkiCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBm
b3IgdGVzdHMgdGhhdCBkaWZmIHRoZWlyIG91dHB1dCB3aXRoIHNvbWUgZXhwZWN0YXRpb24uCi1k
ZWYgZGlmZkVycm9ySGFuZGxlcihleHBlY3RlZEZpbGVuYW1lKQotICAgIFByb2MubmV3IHsKLSAg
ICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRz
LnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19z
KQotICAgICAgICBkaWZmRmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFt
ZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLmRpZmYiKSkudG9fcykKLQotICAgICAgICBvdXRwLnB1
dHMgZ2V0QW5kVGVzdEV4aXRDb2RlKHBsYW4sICItbmUgMCIpCi0gICAgICAgIG91dHAucHV0cyAi
dGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBl
Y2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogJGV4aXRDb2RlKSB8ICIgKyByZWRpcmVj
dEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsg
cGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsaWYgdGVzdCAtZSAuLi8je1No
ZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFtZSl9IgotICAgICAgICBvdXRwLnB1
dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIGRpZmYgLS1zdHJpcC10cmFpbGluZy1j
ciAtdSAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFtZSl9ICN7b3V0
cHV0RmlsZW5hbWV9ID4gI3tkaWZmRmlsZW5hbWV9IgotICAgICAgICBvdXRwLnB1dHMgIiAgICBp
ZiBbICQ/IC1lcSAwIF0iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHRoZW4iCi0gICAgICAgIG91
dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAi
ICAgIGVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICAoZWNobyBcIkRJRkYgRkFJTFVS
RSFcIiAmJiBjYXQgI3tkaWZmRmlsZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1h
bmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENv
bW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZmkiCi0gICAgICAgIG91dHAucHV0cyAiZWxz
ZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGVjaG8gXCJOTyBFWFBFQ1RBVElPTiFcIiAmJiBj
YXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFu
Lm5hbWUpCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAg
ICAgIG91dHAucHV0cyAiZmkiCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVz
dHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIi4gVGhpcyBpcyB1c2VkIGJ5
IE1vemlsbGEKLSMgdGVzdHMuCi1kZWYgbW96aWxsYUVycm9ySGFuZGxlcgotICAgIFByb2MubmV3
IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVs
bHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIp
KS50b19zKQotCi0gICAgICAgIG91dHAucHV0cyBnZXRBbmRUZXN0RXhpdENvZGUocGxhbiwgIi1u
ZSAwIikKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAo
Y2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2Rl
OiAkZXhpdENvZGUpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCi0g
ICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAu
cHV0cyAiZWxpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCi0gICAgICAg
IG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgKGVjaG8gRGV0ZWN0ZWQg
ZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcmVkaXJlY3RBbmRQcmVm
aXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFp
bENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAg
ICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImZpIgotICAgIH0K
LWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNh
eWluZyAiZmFpbGVkISIsIGFuZCBhcmUgZXhwZWN0ZWQgdG8KLSMgZmFpbC4gVGhpcyBpcyB1c2Vk
IGJ5IE1vemlsbGEgdGVzdHMuCi1kZWYgbW96aWxsYUZhaWxFcnJvckhhbmRsZXIKLSAgICBQcm9j
Lm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0g
U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5v
dXQiKSkudG9fcykKLQotICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVzdEV4aXRDb2RlKHBsYW4s
ICItbmUgMCIpCi0gICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIg
ICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbGlmIGdyZXAg
LWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVuYW1lfSIKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVu
IgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAg
ICBvdXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgIChlY2hvIE5PVElDRTog
WW91IG1hZGUgdGhpcyB0ZXN0IHBhc3MsIGJ1dCBpdCB3YXMgZXhwZWN0ZWQgdG8gZmFpbCkgfCAi
ICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJmaSIKLSAgICB9
Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9ydCBlcnJvciBieSBz
YXlpbmcgImZhaWxlZCEiLCBhbmQgYXJlIGV4cGVjdGVkIHRvIGhhdmUKLSMgYW4gZXhpdCBjb2Rl
IG9mIDMuCi1kZWYgbW96aWxsYUV4aXQzRXJyb3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAg
ICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMu
c2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3Mp
Ci0KLSAgICAgICAgb3V0cC5wdXRzIGdldEFuZFRlc3RFeGl0Q29kZShwbGFuLCAiLW5lIDAiKQot
ICAgICAgICBvdXRwLnB1dHMgInRoZW4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIGlmIFsgXCIk
ZXhpdENvZGVcIiAtZXEgMyBdIgotICAgICAgICBvdXRwLnB1dHMgIiAgICB0aGVuIgotICAgICAg
ICBvdXRwLnB1dHMgIiAgICAgICAgaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7b3V0cHV0RmlsZW5h
bWV9IgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgdGhlbiIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgICAgICAgICAoZWNobyBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0cHV0Rmls
ZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAg
ICBvdXRwLnB1dHMgIiAgICAgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91
dHAucHV0cyAiICAgICAgICBlbHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgICAgICIg
KyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICBmaSIKLSAg
ICAgICAgb3V0cC5wdXRzICIgICAgZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIChj
YXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6
ICRleGl0Q29kZSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKLSAg
ICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91
dHAucHV0cyAiICAgIGZpIgotICAgICAgICBvdXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAu
cHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjogVGVzdCBleHBl
Y3RlZCB0byBmYWlsLCBidXQgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5KSB8ICIgKyByZWRpcmVjdEFu
ZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxh
bi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImZpIgotICAgIH0KLWVuZAotCi0jIEVy
cm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IHN1Y2Nlc3MgYnkgc2F5aW5nICJQYXNz
ZWQiIG9yIGVycm9yIGJ5IHNheWluZyAiRkFJTEVEIi4KLSMgVGhpcyBpcyB1c2VkIGJ5IENoYWty
YSB0ZXN0cy4KLWRlZiBjaGFrcmFQYXNzRmFpbEVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsK
LSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdv
cmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50
b19zKQotCi0gICAgICAgIG91dHAucHV0cyBnZXRBbmRUZXN0RXhpdENvZGUocGxhbiwgIi1uZSAw
IikKLSAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoY2F0
ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiAk
ZXhpdENvZGUpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCi0gICAg
ICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0
cyAiZWxpZiBncmVwIC1pIC1xIEZBSUxFRCAje291dHB1dEZpbGVuYW1lfSIKLSAgICAgICAgb3V0
cC5wdXRzICJ0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBEZXRlY3RlZCBmYWls
dXJlczogJiYgY2F0ICN7b3V0cHV0RmlsZW5hbWV9KSB8ICIgKyByZWRpcmVjdEFuZFByZWZpeENv
bW1hbmQocGxhbi5uYW1lKQotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29t
bWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2UiCi0gICAgICAgIG91dHAucHV0cyAiICAgICIg
KyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZmkiCi0gICAgfQotZW5k
Ci0KLWNsYXNzIFBsYW4KLSAgICBhdHRyX3JlYWRlciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRzLCA6
ZmFtaWx5LCA6bmFtZSwgOm91dHB1dEhhbmRsZXIsIDplcnJvckhhbmRsZXIsIDphZGRpdGlvbmFs
RW52Ci0gICAgYXR0cl9hY2Nlc3NvciA6aW5kZXgKLSAgICAKLSAgICBkZWYgaW5pdGlhbGl6ZShk
aXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhh
bmRsZXIpCi0gICAgICAgIEBkaXJlY3RvcnkgPSBkaXJlY3RvcnkKLSAgICAgICAgQGFyZ3VtZW50
cyA9IGFyZ3VtZW50cwotICAgICAgICBAZmFtaWx5ID0gZmFtaWx5Ci0gICAgICAgIEBuYW1lID0g
bmFtZQotICAgICAgICBAb3V0cHV0SGFuZGxlciA9IG91dHB1dEhhbmRsZXIKLSAgICAgICAgQGVy
cm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcgotICAgICAgICBAaXNTbG93ID0gISEkcnVuQ29tbWFu
ZE9wdGlvbnNbOmlzU2xvd10KLSAgICAgICAgQGNyYXNoT0sgPSAhISRydW5Db21tYW5kT3B0aW9u
c1s6Y3Jhc2hPS10KLSAgICAgICAgaWYgQGNyYXNoT0sKLSAgICAgICAgICAgIEBvdXRwdXRIYW5k
bGVyID0gbm9pc3lPdXRwdXRIYW5kbGVyCi0gICAgICAgIGVuZAotICAgICAgICBAYWRkaXRpb25h
bEVudiA9IFtdCi0gICAgZW5kCi0gICAgCi0gICAgZGVmIHNoZWxsQ29tbWFuZAotICAgICAgICAj
IEl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgdGhlIHRlc3QgaXMgYWN0dWFsbHkgcnVu
IGluIGEgc3Vic2hlbGwsIHNvIGlmIHdlIGNoYW5nZSBkaXJlY3RvcnkKLSAgICAgICAgIyBpbiB0
aGUgc3Vic2hlbGwgd2hlbiB3ZSByZXR1cm4gd2Ugd2lsbCBiZSBpbiBvdXIgb3JpZ2luYWwgZGly
ZWN0b3J5LiBUaGlzIGlzIG5pY2UgYmVjYXVzZSB3ZSBkb24ndAotICAgICAgICAjIGhhdmUgdG8g
YmVuZCBvdmVyIGJhY2t3YXJkcyB0byBkbyB0aGluZ3MgcmVsYXRpdmUgdG8gdGhlIHJvb3QuCi0g
ICAgICAgIHNjcmlwdCA9ICIoY2QgLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBkaXJlY3Rv
cnkudG9fcyl9ICYmICgiCi0gICAgICAgICgkZW52VmFycyArIGFkZGl0aW9uYWxFbnYpLmVhY2gg
eyB8dmFyfCBzY3JpcHQgKz0gImV4cG9ydCAiIDw8IHZhciA8PCAiOyAiIH0KLSAgICAgICAgc2Ny
aXB0ICs9ICJcIiRAXCIgIiArIGVzY2FwZUFsbChAYXJndW1lbnRzKSArICIpKSIKLSAgICAgICAg
cmV0dXJuIHNjcmlwdAotICAgIGVuZAotICAgIAotICAgIGRlZiByZXByb1NjcmlwdENvbW1hbmQK
LSAgICAgICAgIyBXZSBoYXZlIHRvIGZpbmQgb3VyIHdheSBiYWNrIHRvIHRoZSAucnVubmVyIGRp
cmVjdG9yeSBzaW5jZSB0aGF0J3Mgd2hlcmUgYWxsIG9mIHRoZSByZWxhdGl2ZQotICAgICAgICAj
IHBhdGhzIGFzc3VtZSB0aGV5IHN0YXJ0IG91dCBmcm9tLgotICAgICAgICBzY3JpcHQgPSAiQ1VS
UkVOVF9ESVI9XCIkKCBjZCBcIiQoIGRpcm5hbWUgXCIke0JBU0hfU09VUkNFWzBdfVwiIClcIiAm
JiBwd2QgKVwiXG4iCi0gICAgICAgIHNjcmlwdCArPSAiY2QgJENVUlJFTlRfRElSXG4iCi0gICAg
ICAgIFBhdGhuYW1lLm5ldyhAbmFtZSkuZGlybmFtZS5lYWNoX2ZpbGVuYW1lIHsKLSAgICAgICAg
ICAgIHwgcGF0aENvbXBvbmVudCB8Ci0gICAgICAgICAgICBzY3JpcHQgKz0gImNkIC4uXG4iCi0g
ICAgICAgIH0KLSAgICAgICAgc2NyaXB0ICs9ICJjZCAucnVubmVyXG4iCi0KLSAgICAgICAgc2Ny
aXB0ICs9ICJleHBvcnQgRFlMRF9GUkFNRVdPUktfUEFUSD0kKGNkICN7JHRlc3RpbmdGcmFtZXdv
cmtQYXRoLmRpcm5hbWV9OyBwd2QpXG4iCi0gICAgICAgIHNjcmlwdCArPSAiZXhwb3J0IEpTQ1RF
U1RfdGltZW91dD0je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoRU5WWydKU0NURVNUX3RpbWVvdXQn
XSl9XG4iCi0gICAgICAgIHNjcmlwdCArPSAiZXhwb3J0IEpTQ1RFU1RfaGFyZFRpbWVvdXQ9I3tT
aGVsbHdvcmRzLnNoZWxsZXNjYXBlKEVOVlsnSlNDVEVTVF9oYXJkVGltZW91dCddKX1cbiIKLSAg
ICAgICAgc2NyaXB0ICs9ICJleHBvcnQgSlNDVEVTVF9tZW1vcnlMaW1pdD0je1NoZWxsd29yZHMu
c2hlbGxlc2NhcGUoRU5WWydKU0NURVNUX21lbW9yeUxpbWl0J10pfVxuIgotICAgICAgICAkZW52
VmFycy5lYWNoIHsgfHZhcnwgc2NyaXB0ICs9ICJleHBvcnQgIiA8PCB2YXIgPDwgIlxuIiB9Ci0g
ICAgICAgIHNjcmlwdCArPSAiI3tzaGVsbENvbW1hbmR9IHx8IGV4aXQgMSIKLSAgICAgICAgImVj
aG8gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKHNjcmlwdCl9ID4gI3tTaGVsbHdvcmRzLnNoZWxs
ZXNjYXBlKChQYXRobmFtZS5uZXcoIi4uIikgKyBAbmFtZSkudG9fcyl9IgotICAgIGVuZAotCi0g
ICAgZGVmIHN0YXR1c0NvbW1hbmQoc3RhdHVzKQotICAgICAgICAiZWNobyAjeyRydW5VbmlxdWVJ
ZH0gJGV4aXRDb2RlICN7c3RhdHVzfSA+ICN7c3RhdHVzRmlsZX0iCi0gICAgZW5kCi0KLSAgICBk
ZWYgZmFpbENvbW1hbmQKLSAgICAgICAgIiN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9GQUlM
KX07IGVjaG8gRkFJTDogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX07ICIgKyByZXBy
b1NjcmlwdENvbW1hbmQKLSAgICBlbmQKLSAgICAKLSAgICBkZWYgc3VjY2Vzc0NvbW1hbmQKLSAg
ICAgICAgY29tbWFuZCA9ICIiCi0gICAgICAgIGV4ZWN1dGlvblRpbWVNZXNzYWdlID0gIiIKLSAg
ICAgICAgaWYgJHJlcG9ydEV4ZWN1dGlvblRpbWUKLSAgICAgICAgICAgIGV4ZWN1dGlvblRpbWVN
ZXNzYWdlID0gIiAkKCgkU0VDT05EUyAtICRTVEFSVF9USU1FKSlzIgotICAgICAgICBlbmQKLSAg
ICAgICAgaWYgJHByb2dyZXNzTWV0ZXIgb3IgJHJlcG9ydEV4ZWN1dGlvblRpbWUgb3IgJHZlcmJv
c2l0eSA+PSAyCi0gICAgICAgICAgICBjb21tYW5kID0gImVjaG8gUEFTUzogI3tTaGVsbHdvcmRz
LnNoZWxsZXNjYXBlKEBuYW1lKX0je2V4ZWN1dGlvblRpbWVNZXNzYWdlfSIKLSAgICAgICAgZW5k
Ci0gICAgICAgICIje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfUEFTUyl9OyAje2NvbW1hbmR9
IgotICAgIGVuZAotICAgIAotICAgIGRlZiBzdGF0dXNGaWxlCi0gICAgICAgICIje1NUQVRVU19G
SUxFX1BSRUZJWH0je0BpbmRleH0iCi0gICAgZW5kCi0gICAgCi0gICAgZGVmIHdyaXRlUnVuU2Ny
aXB0KGZpbGVuYW1lKQotICAgICAgICBGaWxlLm9wZW4oZmlsZW5hbWUsICJ3IikgewotICAgICAg
ICAgICAgfCBvdXRwIHwKLSAgICAgICAgICAgIGlmICRyZXBvcnRFeGVjdXRpb25UaW1lCi0gICAg
ICAgICAgICAgICAgb3V0cC5wdXRzICJTVEFSVF9USU1FPSRTRUNPTkRTIgotICAgICAgICAgICAg
ZW5kCi0gICAgICAgICAgICBvdXRwLnB1dHMgImVjaG8gUnVubmluZyAje1NoZWxsd29yZHMuc2hl
bGxlc2NhcGUoQG5hbWUpfSIKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKwotICAgICAgICAgICAgIyB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICAgICAjIHwgfCArLS0t
LS0tLS0tLS0tLS0rICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgfCAgICAgICAgICAgICAg
ICAgIHwKLSAgICAgICAgICAgICMgfCB8IHwgY21kIDEgLS0tLT4gMXwtLS0+IHwwIC0tPiBvdXRI
IDEgLS0tPiA0fC0+IDR8LS0tLS0tLS0tLS0tLS0tPiAxfAotICAgICAgICAgICAgIyB8IHwgfCAg
ICAgMiAvICAgICAgfCAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgIHwgICArLS0tLS0tLS0t
LS0rICB8Ci0gICAgICAgICAgICAjIHwgfCB8ZWNobyAkPyAwIC0+IDN8LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tPiAxfC0+IHwwIHJlYWQgeHMgIHwgIHwKLSAgICAgICAgICAgICMgfCB8ICst
LS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgZXhpdCAk
eHMgfCAgfAotICAgICAgICAgICAgIyB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICArLS0tLS0tLS0tLS0rICB8Ci0gICAgICAgICAgICAjIHwgKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAg
ICAgICAgIHwKLSAgICAgICAgICAgICMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgIyBGcm9t
IHRoZSB0b3AgZG93biAoaS5lLiByZWFkaW5nIGZyb20gdGhlIG91dGVyIGV4cHJlc3Npb24gaW53
YXJkcyk6Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIC0gUmVkaXJlY3QgRkQgNCB0byBv
dXIgc3Rkb3V0Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIC0gQnVpbGQgYSBwaXBlIG9m
IHR3byBjb21tYW5kIHNlcXVlbmNlcy4gVGhlCi0gICAgICAgICAgICAjICAgcmlnaHQtaGFuZC1z
aWRlIHNlcXVlbmNlIHJlYWRzIGEgbnVtYmVyIGZyb20gc3RkaW4gYW5kCi0gICAgICAgICAgICAj
ICAgZXhpdHMgd2l0aCBpdC4gU2luY2UgaXQncyB0aGUgbGFzdCBjb21tYW5kIGluIHRoZQotICAg
ICAgICAgICAgIyAgIHBpcGVsaW5lLCB0aGlzIHdpbGwgYmUgdGhlIHZhbHVlIG9mICQ/IGFmdGVy
IHRoZQotICAgICAgICAgICAgIyAgIHBpcGVsaW5lIGNvbXBsZXRlcy4KLSAgICAgICAgICAgICMK
LSAgICAgICAgICAgICMgLSBJbiB0aGUgbGVmdC1oYW5kLXNpZGUgc2VxdWVuY2UsIHJlZGlyZWN0
IEZEIDMgdG8gRkQgMS4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgLSBCdWlsZCBhIHBp
cGUgb2YgdHdvIGNvbW1hbmRzCi0gICAgICAgICAgICAjICAgLSBydW4gc2hlbGxDb21tYW5kLCB3
cml0aW5nIGl0cyBleGl0IGNvZGUgdG8gRkQgMy4KLSAgICAgICAgICAgICMgICAtIHJ1biB0aGUg
b3V0cHV0SGFuZGxlciwgd2l0aCBpdHMgc3RkaW4gY29taW5nIGZyb20KLSAgICAgICAgICAgICMg
ICAgIHRoZSBwaXBlLCByZWRpcmVjdGluZyBpdHMgb3V0cHV0IHRvIEZEIDQuIFRoZQotICAgICAg
ICAgICAgIyAgICAgb3V0cHV0SGFuZGxlciBuZWVkcyB0byBiZSBpbiBhIGNvbW1hbmQgc2VxdWVu
Y2UKLSAgICAgICAgICAgICMgICAgIChpLmUuIGluIHsgY21kOyAuLi59KSBhcyBpdCBtYXkgZG8g
aXRzIG93bgotICAgICAgICAgICAgIyAgICAgcmVkaXJlY3Rpb25zLgotICAgICAgICAgICAgIwot
ICAgICAgICAgICAgIyBXZSBkbyBhbGwgdGhpcwotICAgICAgICAgICAgIyAtIHRvIGF2b2lkIGhh
dmluZyB0byB1c2UgYSB0ZW1wb3JhcnkgZmlsZSBmb3IgdGhlIGV4aXQgY29kZQotICAgICAgICAg
ICAgIyAtIHRvIGtlZXAgd2l0aGluIHRoZSBib3VuZHMgb2YgUE9TSVggc2ggKGkuZS4gY2FuJ3Qg
dXNlCi0gICAgICAgICAgICAjICAgUElQRVNUQVRVUykKLSAgICAgICAgICAgIGNtZCA9ICJ7IHsg
eyB7ICN7c2hlbGxDb21tYW5kfSAyPiYxOyBlY2hvICQ/ID4mMzsgfSB8IHsgI3tvdXRwdXRIYW5k
bGVyLmNhbGwoQG5hbWUpfSA7fSA+JjQ7IH0gMz4mMTsgfSB8IHsgcmVhZCB4czsgZXhpdCAkeHM7
IH0gfSA0PiYxXG5leGl0Q29kZT0kP1xuIgotICAgICAgICAgICAgaWYgJHZlcmJvc2l0eSA+PSAz
Ci0gICAgICAgICAgICAgICAgb3V0cC5wdXRzICJlY2hvICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2Fw
ZShjbWQpfSIKLSAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgb3V0cC5wdXRzIGNtZAotICAg
ICAgICAgICAgQGVycm9ySGFuZGxlci5jYWxsKG91dHAsIHNlbGYpCi0gICAgICAgIH0KLSAgICBl
bmQKLWVuZAotCi1kZWYgcHJlcGFyZVNoZWxsVGVzdFJ1bm5lcgotICAgIEZpbGVVdGlscy5jcCBT
Q1JJUFRTX1BBVEggKyAianNjLXN0cmVzcy10ZXN0LWhlbHBlcnMiICsgInNoZWxsLXJ1bm5lci5z
aCIsICRydW5uZXJEaXIgKyAicnVuc2NyaXB0IgotZW5kCi0KLWRlZiBvdXRwdXRfdGFyZ2V0KG91
dHAsIHBsYW4sIHByZXJlcXMpCi0gICAgaW5kZXggPSBwbGFuLmluZGV4Ci0gICAgdGFyZ2V0ID0g
InRlc3RfZG9uZV8je2luZGV4fSIKLSAgICBvdXRwLnB1dHMgIiN7dGFyZ2V0fTogI3twcmVyZXFz
LmpvaW4oIiAiKX0iCi0gICAgb3V0cC5wdXRzICJcdHNoIHRlc3Rfc2NyaXB0XyN7aW5kZXh9Igot
ICAgIHRhcmdldAotZW5kCi0KLWRlZiBwcmVwYXJlTWFrZVRlc3RSdW5uZXIocmVtb3RlSW5kZXgp
Ci0gICAgIyBUaGUgZ29hbHMgb2Ygb3VyIHBhcmFsbGVsIHRlc3QgcnVubmVyIGFyZSBzY2FsYWJp
bGl0eSBhbmQgc2ltcGxpY2l0eS4gVGhlCi0gICAgIyBzaW1wbGljaXR5IHBhcnQgaXMgcGFydGlj
dWxhcmx5IGltcG9ydGFudC4gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGhhdmUKLSAgICAjIGEg
ZnVsbC10aW1lIGNvbnRyaWJ1dG9yIGp1c3QgcGhpbG9zb3BoaXNpbmcgYWJvdXQgcGFyYWxsZWwg
dGVzdGluZy4KLSAgICAjCi0gICAgIyBBcyBzdWNoLCB3ZSBqdXN0IHBhc3Mgb2ZmIGFsbCBvZiB0
aGUgaGFyZCB3b3JrIHRvICdtYWtlJy4gVGhpcwotICAgICMgY3JlYXRlcyBhIGR1bW15IGRpcmVj
dG9yeSAoIiRvdXRwdXREaXIvLnJ1bm5lciIpIGluIHdoaWNoIHdlCi0gICAgIyBjcmVhdGUgYSBk
dW1teSBNYWtlZmlsZS4gVGhlIE1ha2VmaWxlIGhhcyBhICdwYXJhbGxlbCcgcnVsZSB0aGF0Ci0g
ICAgIyBkZXBlbmRzIGFsbCB0ZXN0cywgb3RoZXIgdGhhbiB0aGUgb25lcyBtYXJrZWQgJ3Nlcmlh
bCcuIFRoZQotICAgICMgc2VyaWFsIHRlc3RzIGFyZSBhcnJhbmdlZCBpbiBhIGNoYWluOyB0aGUg
bGFzdCB0YXJnZXQgaW4gdGhlCi0gICAgIyBzZXJpYWwgY2hhaW4gZGVwZW5kcyBvbiAncGFyYWxs
ZWwnIGFuZCAnYWxsJyBkZXBlbmRzIG9uIHRoZSBoZWFkCi0gICAgIyBvZiB0aGUgY2hhaW4uIFJ1
bm5pbmcgJ21ha2UgLWogPHdoYXRldmVyPicgb24gdGhpcyBNYWtlZmlsZQotICAgICMgcmVzdWx0
cyBpbiAnbWFrZScgZG9pbmcgYWxsIG9mIHRoZSBoYXJkIHdvcms6Ci0gICAgIwotICAgICMgLSBM
b2FkIGJhbGFuY2luZyBqdXN0IHdvcmtzLiBNb3N0IHN5c3RlbXMgaGF2ZSBhIGdyZWF0IGxvYWQg
YmFsYW5jZXIgaW4KLSAgICAjICAgJ21ha2UnLiBJZiB5b3VyIHN5c3RlbSBkb2Vzbid0IHRoZW4g
anVzdCBpbnN0YWxsIGEgcmVhbCAnbWFrZScuCi0gICAgIwotICAgICMgLSBJbnRlcnJ1cHRpb25z
IGp1c3Qgd29yay4gRm9yIGV4YW1wbGUgQ3RybC1DIGhhbmRsaW5nIGluICdtYWtlJyBpcwotICAg
ICMgICBleGFjdGx5IHJpZ2h0LiBZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB6b21iaWUg
cHJvY2Vzc2VzLgotICAgICMKLSAgICAjIFdlIHRoZW4gZG8gc29tZSB0cmlja3MgdG8gbWFrZSBm
YWlsdXJlIGRldGVjdGlvbiB3b3JrIGFuZCB0byBtYWtlIHRoaXMKLSAgICAjIHRvdGFsbHkgc291
bmQuIElmIGEgdGVzdCBmYWlscywgd2UgZG9uJ3Qgd2FudCB0aGUgd2hvbGUgJ21ha2UnIGpvYiB0
bwotICAgICMgc3RvcC4gV2UgYWxzbyBkb24ndCBoYXZlIGFueSBmYWNpbGl0eSBmb3IgbWFrZWZp
bGUtZXNjYXBpbmcgb2YgcGF0aCBuYW1lcy4KLSAgICAjIFdlIGRvIGhhdmUgc3VjaCBhIHRoaW5n
IGZvciBzaGVsbC1lc2NhcGluZywgdGhvdWdoLiBXZSBmaXggYm90aCBwcm9ibGVtcwotICAgICMg
YnkgaGF2aW5nIHRoZSBhY3R1YWwgd29yayBmb3IgZWFjaCBvZiB0aGUgdGVzdCBydWxlcyBiZSBk
b25lIGluIGEgc2hlbGwKLSAgICAjIHNjcmlwdCBvbiB0aGUgc2lkZS4gVGhlcmUgaXMgb25lIHN1
Y2ggc2NyaXB0IHBlciB0ZXN0LiBUaGUgc2NyaXB0IHJlc3BvbmRzCi0gICAgIyB0byBmYWlsdXJl
IGJ5IHByaW50aW5nIHNvbWV0aGluZyBvbiB0aGUgY29uc29sZSBhbmQgdGhlbiB0b3VjaGluZyBh
Ci0gICAgIyBmYWlsdXJlIGZpbGUgZm9yIHRoYXQgdGVzdCwgYnV0IHRoZW4gc3RpbGwgcmV0dXJu
cyAwLiBUaGlzIG1ha2VzICdtYWtlJwotICAgICMgY29udGludWUgcGFzdCB0aGF0IGZhaWx1cmUg
YW5kIGNvbXBsZXRlIGFsbCB0aGUgdGVzdHMgYW55d2F5LgotICAgICMKLSAgICAjIEluIHRoZSBl
bmQsIHRoaXMgc2NyaXB0IGNvbGxlY3RzIGFsbCBvZiB0aGUgZmFpbHVyZXMgYnkgc2VhcmNoaW5n
IGZvcgotICAgICMgZmlsZXMgaW4gdGhlIC5ydW5uZXIgZGlyZWN0b3J5IHdob3NlIG5hbWUgbWF0
Y2hlcyAvXnRlc3RfZmFpbF8vLCB3aGVyZQotICAgICMgdGhlIHRoaW5nIGFmdGVyIHRoZSAnZmFp
bF8nIGlzIHRoZSB0ZXN0IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQKLSAgICAjIHdv
dWxkIGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0aGV5IGRldGVjdCBmYWlsdXJl
LiBXZSdyZQotICAgICMgYmFzaWNhbGx5IHVzaW5nIHRoZSBmaWxlc3lzdGVtIGFzIGEgY29uY3Vy
cmVudCBkYXRhYmFzZSBvZiB0ZXN0IGZhaWx1cmVzLgotICAgICMgRXZlbiBpZiB0d28gdGVzdHMg
ZmFpbCBhdCB0aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5nIGRpZmZlcmVudAot
ICAgICMgZmlsZXMgd2Ugd29uJ3QgbWlzcyBhbnkgZmFpbHVyZXMuCi0gICAgc2VyaWFsUGxhbnMg
PSB7fQotICAgICRzZXJpYWxSdW5saXN0LmVhY2ggeyB8cHwgc2VyaWFsUGxhbnNbcF0gPSBuaWwg
fQotICAgIHJ1blBsYW5zID0gW10KLSAgICBzZXJpYWxSdW5QbGFucyA9IFtdCi0gICAgJHJ1bmxp
c3QuZWFjaCB7Ci0gICAgICAgIHwgcGxhbiB8Ci0gICAgICAgIGlmICEkcmVtb3RlIG9yIHBsYW4u
aW5kZXggJSAkcmVtb3RlSG9zdHMubGVuZ3RoID09IHJlbW90ZUluZGV4Ci0gICAgICAgICAgICBp
ZiBzZXJpYWxQbGFucy5oYXNfa2V5PyhwbGFuKQotICAgICAgICAgICAgICAgIHNlcmlhbFJ1blBs
YW5zIDw8IHBsYW4KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBydW5QbGFucyA8
PCBwbGFuCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgZW5kCi0gICAgfQotCi0gICAgRmlsZS5v
cGVuKCRydW5uZXJEaXIgKyAiTWFrZWZpbGUuI3tyZW1vdGVJbmRleH0iLCAidyIpIHsKLSAgICAg
ICAgfCBvdXRwIHwKLSAgICAgICAgaWYgc2VyaWFsUnVuUGxhbnMuZW1wdHk/Ci0gICAgICAgICAg
ICBvdXRwLnB1dHMoImFsbDogcGFyYWxsZWwiKQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
ZXJpYWxQcmVyZXEgPSAidGVzdF9kb25lXyN7c2VyaWFsUnVuUGxhbnNbLTFdLmluZGV4fSIKLSAg
ICAgICAgICAgIG91dHAucHV0cygiYWxsOiAje3NlcmlhbFByZXJlcX0iKQotICAgICAgICAgICAg
cHJldl90YXJnZXQgPSAicGFyYWxsZWwiCi0gICAgICAgICAgICBzZXJpYWxSdW5QbGFucy5lYWNo
IHsKLSAgICAgICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgICAgIHByZXZfdGFyZ2V0
ID0gb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbcHJldl90YXJnZXRdKQotICAgICAgICAgICAg
fQotICAgICAgICBlbmQKLSAgICAgICAgcGFyYWxsZWxUYXJnZXRzID0gcnVuUGxhbnMuY29sbGVj
dCB7Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgb3V0cHV0X3RhcmdldChvdXRw
LCBwbGFuLCBbXSkKLSAgICAgICAgfQotICAgICAgICBvdXRwLnB1dHMoInBhcmFsbGVsOiAiICsg
cGFyYWxsZWxUYXJnZXRzLmpvaW4oIiAiKSkKLSAgICB9Ci1lbmQKLQotZGVmIHByZXBhcmVSdWJ5
VGVzdFJ1bm5lcgotICAgIEZpbGUub3BlbigkcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3Iikg
ewotICAgICAgICB8IG91dHAgfAotICAgICAgICAkcnVubGlzdC5lYWNoIHsKLSAgICAgICAgICAg
IHwgcGxhbiB8Ci0gICAgICAgICAgICBvdXRwLnB1dHMgInByaW50IGBzaCB0ZXN0X3NjcmlwdF8j
e3BsYW4uaW5kZXh9IDI+JjFgIgotICAgICAgICB9Ci0gICAgfQotZW5kCi0KLWRlZiB0ZXN0UnVu
bmVyQ29tbWFuZChyZW1vdGVJbmRleD0wKQotICAgIGNhc2UgJHRlc3RSdW5uZXJUeXBlCi0gICAg
d2hlbiA6c2hlbGwKLSAgICAgICAgY29tbWFuZCA9ICJzaCBydW5zY3JpcHQiCi0gICAgd2hlbiA6
bWFrZQotICAgICAgICBjb21tYW5kID0gIm1ha2UgLWogI3skbnVtQ2hpbGRQcm9jZXNzZXN9IC1z
IC1mIE1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IgotICAgIHdoZW4gOnJ1YnkKLSAgICAgICAgY29t
bWFuZCA9ICJydWJ5IHJ1bnNjcmlwdCIKLSAgICBlbHNlCi0gICAgICAgIHJhaXNlICJVbmtub3du
IHRlc3QgcnVubmVyIHR5cGU6ICN7JHRlc3RSdW5uZXJUeXBlLnRvX3N9IgotICAgIGVuZAotICAg
IHJldHVybiBjb21tYW5kCi1lbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVi
eS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlzdGF0aW9uLnJiIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItcGxheXN0YXRpb24ucmIKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMmJmNDU1OGFkODUwMGE2ZTBhNzAwNDI3OTNjMzhjNDI5
OGQ0YjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItcGxheXN0YXRpb24u
cmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MjEgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTcg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi1yZXF1aXJlICdvcGVuMycKLQotJGhhc0RpZmYgPSBmYWxzZQotaWYg
KCRob3N0T1MgPT0gJ3dpbmRvd3MnIHx8ICRob3N0T1MgPT0gJ3BsYXlzdGF0aW9uJykKLSAgICBv
dXQsIGVyciwgc3RhdHVzID0gT3BlbjMuY2FwdHVyZTMoIndoZXJlIiwgIi9xIiwgImRpZmYiKQot
ICAgICRoYXNEaWZmID0gc3RhdHVzLnN1Y2Nlc3M/Ci1lbHNlCi0gICAgb3V0LCBlcnIsIHN0YXR1
cyA9IE9wZW4zLmNhcHR1cmUzKCJ3aGljaCIsICJkaWZmIikKLSAgICAkaGFzRGlmZiA9IHN0YXR1
cy5zdWNjZXNzPwotZW5kCi0KLSMgUHJlZml4IGVhY2ggbGluZSBvZiBzdHIgd2l0aCB0aGUgbmFt
ZQotZGVmIHByZWZpeFN0cmluZyhzdHIsIG5hbWUpCi0gICAgIiN7c3RyfS5lbXB0eT8gPyBcIlwi
IDogI3tzdHJ9LmdzdWIoL14vbSwgXCIje25hbWV9OiBcIikiCi1lbmQKLQotZGVmIHNpbGVudE91
dHB1dEhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgbmFtZSB8Ci0gICAgICAgIDw8
LUVORF9TSUxFTlRfT1VUUFVUX0hBTkRMRVIKLSAgICAgICAgb3V0ID0gb3V0ICsgZXJyCi0gICAg
ICAgIGVyciA9IG5pbAotICAgICAgICBTVERPVVQucHV0cyAje3ByZWZpeFN0cmluZygib3V0Iiwg
bmFtZSl9IGlmICghb3V0LmVtcHR5PykKLSAgICAgICAgRmlsZS5vcGVuKCIje1NoZWxsd29yZHMu
c2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIpKS50b19zKX0iLCAi
dyIpIGRvIHxvdXRfZmlsZXwKLSAgICAgICAgICAgIG91dF9maWxlLnB1dHMgb3V0Ci0gICAgICAg
IGVuZAotICAgICAgICBFTkRfU0lMRU5UX09VVFBVVF9IQU5ETEVSCi0gICAgfQotZW5kCi0KLSMg
T3V0cHV0IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIHByb2R1Y2UgbWVh
bmluZ2Z1bCBvdXRwdXQuCi1kZWYgbm9pc3lPdXRwdXRIYW5kbGVyCi0gICAgUHJvYy5uZXcgewot
ICAgICAgICB8IG5hbWUgfAotICAgICAgICA8PC1FTkRfTk9JU1lfT1VUUFVUX0hBTkRMRVIKLSAg
ICAgICAgb3V0ID0gb3V0ICsgZXJyCi0gICAgICAgIGVyciA9IG5pbAotICAgICAgICBGaWxlLm9w
ZW4oIiN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIu
b3V0IikpLnRvX3MpfSIsICJ3IikgZG8gfG91dF9maWxlfAotICAgICAgICAgICAgb3V0X2ZpbGUu
cHV0cyBvdXQKLSAgICAgICAgZW5kCi0gICAgICAgIEVORF9OT0lTWV9PVVRQVVRfSEFORExFUgot
ICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5
IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMuCi0jIFRoaXMgaXMgdXNlZnVs
IHdoZW4gYSB0ZXN0IGlzIGV4cGVjdGVkIHRvIGZhaWwuCi1kZWYgc2ltcGxlRXJyb3JIYW5kbGVy
Ci0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwLnB1
dHMgImlmICFzdWNjZXNzXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVm
aXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1c31cXG5cIiIs
IHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5m
YWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIK
LSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3Rs
eSB3aGVuIHRoZXkgcmV0dXJuIHplcm8gZXhpdCBzdGF0dXMuCi1kZWYgZXhwZWN0ZWRGYWlsRXJy
b3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAg
ICBvdXRwLnB1dHMgImlmIHN1Y2Nlc3NcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQg
IiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgMFxcblwiIiwg
cGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZh
aWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgotICAgICAgICBvdXRwLnB1dHMg
IiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgot
ICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5
IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMgYW5kIHByb2R1Y2UKLSMgbG90
cyBvZiBzcGV3LiBUaGlzIHdpbGwgZWNobyB0aGF0IHNwZXcgd2hlbiB0aGUgdGVzdCBmYWlscy4K
LWRlZiBub2lzeUVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBw
bGFuIHwKLSAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2Vzc1xuIgotICAgICAgICBvdXRwLnB1
dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgot
ICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkVSUk9SOiBV
bmV4cGVjdGVkIGV4aXQgY29kZSBcI3tzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgot
ICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nl
c3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICAgfQotZW5kCi0KLSBkZWYg
ZmFsbGJhY2tEaWZmKGV4cGVjdGVkLCBvdXRwdXQpCi0gICAgPDwtRU5EX0ZBTExCQUNLX0RJRkYK
LSAgICAgICAgICMgRmFsbGJhY2sgZGlmZiBmb3Igd2hlbiBkaWZmKDEpIGlzbid0IGF2YWlsYWJs
ZQotICAgICAgICAgZGlmZnMgPSBbXQotICAgICAgICAgbGluZV9udW1iZXIgPSAwCi0gICAgICAg
ICBGaWxlLm9wZW4oIiN7ZXhwZWN0ZWR9IikgZG8gfCBleHBlY3RlZCB8Ci0gICAgICAgICAgICAg
RmlsZS5vcGVuKCIje291dHB1dH0iKSBkbyB8IGFjdHVhbCB8Ci0gICAgICAgICAgICAgICAgIGxv
b3AgZG8KLSAgICAgICAgICAgICAgICAgICAgIGwxID0gZXhwZWN0ZWQuZ2V0cwotICAgICAgICAg
ICAgICAgICAgICAgbDIgPSBhY3R1YWwuZ2V0cwotICAgICAgICAgICAgICAgICAgICAgaWYgKGwx
ICE9IGwyKQotICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZzLnB1c2goW2xpbmVfbnVtYmVy
LCBsMSwgbDJdKQotICAgICAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAg
ICBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyICsgMQotICAgICAgICAgICAgICAgICAgICAgYnJl
YWsgaWYgKGwxID09IG5pbCAmJiBsMiA9PSBuaWwpCi0gICAgICAgICAgICAgICAgIGVuZAotICAg
ICAgICAgICAgIGVuZAotICAgICAgICAgZW5kCi0gICAgICAgICBpc0RpZmZlcmVudCA9ICFkaWZm
cy5lbXB0eT8KLSAgICAgICAgIGRpZmZPdXQgPSBkaWZmcy5tYXAgewotICAgICAgICAgICAgIHwg
ZGlmZiB8Ci0gICAgICAgICAgICAgIkBAIC1cI3tkaWZmWzBdfSwxICtcI3tkaWZmWzBdfSwxIEBA
XFxuIiArCi0gICAgICAgICAgICAgKGRpZmZbMV0gPyAiLVwje2RpZmZbMV19IiA6ICIiKSArCi0g
ICAgICAgICAgICAgKGRpZmZbMl0gPyAiK1wje2RpZmZbMl19IiA6ICIiKQotICAgICAgICB9Lmpv
aW4oIiIpCi0gICAgRU5EX0ZBTExCQUNLX0RJRkYKLWVuZAotCi1kZWYgcnVuRGlmZihleHBlY3Rl
ZCwgb3V0cHV0KQotICAgIDw8LUVORF9SVU5fRElGRgotICAgICAgICBkaWZmT3V0LCBkaWZmU3Rh
dHVzID0gT3BlbjMuY2FwdHVyZTIoImRpZmYiLAotICAgICAgICAgICAgIi0tc3RyaXAtdHJhaWxp
bmctY3IiLAotICAgICAgICAgICAgIi11IiwKLSAgICAgICAgICAgICIje2V4cGVjdGVkfSIsCi0g
ICAgICAgICAgICAiI3tvdXRwdXR9Iik7Ci0gICAgICAgIGlzRGlmZmVyZW50ID0gIWRpZmZTdGF0
dXMuc3VjY2Vzcz8KLSAgICBFTkRfUlVOX0RJRkYKLWVuZAotCi0jIEdldCBhIGRpZmZlcmVuY2Ug
YmV0d2VlbiB0d28gZmlsZXMsIHVzaW5nIGRpZmYgd2hlcmUgYXZhaWxhYmxlLCBmYWxsaW5nIGJh
Y2sKLSMgb24gYSBsaW1pdGVkIGNvbXBhcmlzb24gd2hlbiBkaWZmIGlzIG5vdCBhdmFpbGFibGUK
LWRlZiBnZXREaWZmKGV4cGVjdGVkLCBvdXRwdXQpCi0gICAgaWYgJGhhc0RpZmYKLSAgICAgICAg
cnVuRGlmZihleHBlY3RlZCwgb3V0cHV0KQotICAgIGVsc2UKLSAgICAgICAgZmFsbGJhY2tEaWZm
KGV4cGVjdGVkLG91dHB1dCkKLSAgICBlbmQKLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRl
c3RzIHRoYXQgZGlmZiB0aGVpciBvdXRwdXQgd2l0aCBzb21lIGV4cGVjdGF0aW9uLgotZGVmIGRp
ZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRGaWxlbmFtZSkKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAg
IHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKLQot
ICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAg
IHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAg
IG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0
ZWQgZXhpdCBjb2RlIFwje3N0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAi
ZWxzaWYgRmlsZS5leGlzdHM/KFwiLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVk
RmlsZW5hbWUpfVwiKVxuIgotICAgICAgICBvdXRwLnB1dHMgZ2V0RGlmZigiLi4vI3tTaGVsbHdv
cmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVkRmlsZW5hbWUpfSIsIG91dHB1dEZpbGVuYW1lKQotICAg
ICAgICBvdXRwLnB1dHMgIiAgICBpZiBpc0RpZmZlcmVudFxuIgotICAgICAgICBvdXRwLnB1dHMg
IiAgICAgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJESUZGIEZBSUxVUkUhXFxuXCIiLCBw
bGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgcHJpbnQgIiArIHBy
ZWZpeFN0cmluZygiZGlmZk91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0
cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgIiAgICBl
bHNlIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgZW5kIgotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJOTyBFWFBF
Q1RBVElPTiFcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAg
IHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAi
ZW5kIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0
IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIuIFRoaXMgaXMgdXNlZCBieSBNb3ppbGxhCi0jIHRl
c3RzLgotZGVmIG1vemlsbGFFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwg
b3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3NcbiIKLSAgICAgICAg
b3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSAr
ICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJF
UlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSAr
ICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0g
ICAgICAgIG91dHAucHV0cyAiZWxzaWYgL2ZhaWxlZCEvaSA9fiBvdXRcbiIKLSAgICAgICAgb3V0
cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJEZXRlY3RlZCBmYWlsdXJlczpc
XG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIg
KyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0
cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgot
ICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBv
dXRwLnB1dHMgImVuZFxuIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3Rz
IHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIsIGFuZCBhcmUgZXhwZWN0ZWQg
dG8KLSMgZmFpbC4gVGhpcyBpcyB1c2VkIGJ5IE1vemlsbGEgdGVzdHMuCi1kZWYgbW96aWxsYUZh
aWxFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0g
ICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3NcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvZmFpbGVk
IS9pID1+IG91dFxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29t
bWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
cHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJOT1RJQ0U6IFlvdSBtYWRlIHRoaXMgdGVzdCBwYXNz
LCBidXQgaXQgd2FzIGV4cGVjdGVkIHRvIGZhaWxcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0g
ICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAu
cHV0cyAiZW5kXG4iCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhh
dCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0byBo
YXZlCi0jIGFuIGV4aXQgY29kZSBvZiAzLgotZGVmIG1vemlsbGFFeGl0M0Vycm9ySGFuZGxlcgot
ICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRz
ICJpZiBzdWNjZXNzXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhT
dHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHBy
aW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFRlc3QgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0
IHJldHVybmVkIHN1Y2Nlc3NmdWxseVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAg
b3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0
cyAiZWxzaWYgc3RhdHVzICE9IDMiCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBw
cmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAi
ICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2Rl
OiBcI3tzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMg
IiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAv
ZmFpbGVkIS9pID1+IG91dFxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJl
Zml4U3RyaW5nKCJcIkRldGVjdGVkIGZhaWx1cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxh
bi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1h
bmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIg
KyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICAgfQot
ZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgc3VjY2VzcyBieSBz
YXlpbmcgIlBhc3NlZCIgb3IgZXJyb3IgYnkgc2F5aW5nICJGQUlMRUQiLgotIyBUaGlzIGlzIHVz
ZWQgYnkgQ2hha3JhIHRlc3RzLgotZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCi0gICAg
UHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwLnB1dHMgImlm
ICFzdWNjZXNzXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJp
bmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50
ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1
c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBw
bGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzaWYgL0ZBSUxFRC9pID1+IG91
dFxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkRl
dGVjdGVkIGZhaWx1cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0
cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3ND
b21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICB9Ci1lbmQKLQotY2xhc3MgUGxh
bgotICAgIGF0dHJfcmVhZGVyIDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpmYW1pbHksIDpuYW1l
LCA6b3V0cHV0SGFuZGxlciwgOmVycm9ySGFuZGxlciwgOmFkZGl0aW9uYWxFbnYKLSAgICBhdHRy
X2FjY2Vzc29yIDppbmRleAotCi0gICAgZGVmIGluaXRpYWxpemUoZGlyZWN0b3J5LCBhcmd1bWVu
dHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyKQotICAgICAgICBA
ZGlyZWN0b3J5ID0gZGlyZWN0b3J5Ci0gICAgICAgIEBhcmd1bWVudHMgPSBhcmd1bWVudHNbMS4u
LTFdCi0gICAgICAgIEBmYW1pbHkgPSBmYW1pbHkKLSAgICAgICAgQG5hbWUgPSBuYW1lCi0gICAg
ICAgIEBvdXRwdXRIYW5kbGVyID0gb3V0cHV0SGFuZGxlcgotICAgICAgICBAZXJyb3JIYW5kbGVy
ID0gZXJyb3JIYW5kbGVyCi0gICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5kT3B0aW9uc1s6
aXNTbG93XQotICAgICAgICBAY3Jhc2hPSyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzpjcmFzaE9L
XQotICAgICAgICBpZiBAY3Jhc2hPSwotICAgICAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBub2lz
eU91dHB1dEhhbmRsZXIKLSAgICAgICAgZW5kCi0gICAgICAgIEBhZGRpdGlvbmFsRW52ID0gW10K
LSAgICBlbmQKLQotICAgIGRlZiBzaGVsbENvbW1hbmQKLSAgICAgICAgbiA9IEBuYW1lLmdzdWIo
LyhcXHxcLykvLCAnXycpCi0gICAgICAgIHNjcmlwdCA9ICJvdXQgPSBuaWxcbiIKLSAgICAgICAg
c2NyaXB0ICs9ICJlcnIgPSBuaWxcbiIKLSAgICAgICAgc2NyaXB0ICs9ICJzdGF0dXMgPSAtMVxu
IjsKLSAgICAgICAgc2NyaXB0ICs9ICJzdWNjZXNzID0gZmFsc2VcbiIKLSAgICAgICAgc2NyaXB0
ICs9ICJGaWxlLm9wZW4oXCIje259LWV4aXRcIiwgXCJyXCIpIGRvIHxzdGF0fFxuIjsKLSAgICAg
ICAgc2NyaXB0ICs9ICIgIHN0YXR1cyA9IHN0YXQuZ2V0cy50b19pXG4iCi0gICAgICAgIHNjcmlw
dCArPSAiZW5kXG4iCi0gICAgICAgIHNjcmlwdCArPSAiaWYgKHN0YXR1cyA9PSAwKVxuIgotICAg
ICAgICBzY3JpcHQgKz0gIiAgc3VjY2VzcyA9IHRydWVcbiIKLSAgICAgICAgc2NyaXB0ICs9ICJl
bmRcbiIKLQotICAgICAgICBzY3JpcHQgKz0gIm91dCA9IEZpbGUub3BlbihcIiN7bn0tc3Rkb3V0
XCIsIFwiclwiKS5yZWFkXG4iCi0gICAgICAgIHNjcmlwdCArPSAiZXJyID0gRmlsZS5vcGVuKFwi
I3tufS1zdGRlcnJcIiwgXCJyXCIpLnJlYWRcbiIKLSAgICAgICAgcmV0dXJuIHNjcmlwdAotICAg
IGVuZAotCi0gICAgZGVmIHJlcHJvU2NyaXB0SGVscGVyCi0gICAgICAgIHJldHVybiAiIgotICAg
IGVuZAotCi0gICAgZGVmIHJlcHJvU2NyaXB0Q29tbWFuZAotICAgICAgICByZXR1cm4gIiIKLSAg
ICBlbmQKLQotICAgIGRlZiBzdGF0dXNDb21tYW5kKHN0YXR1c19jb2RlKQotICAgICAgICAjIE1h
eSBiZSBjYWxsZWQgaW4gdGggcmVzY3VlIGJsb2NrLCBzbyBzdGF0dXMgaXMgbm90Ci0gICAgICAg
ICMgZ3VhcmFudGVlZCB0byBiZSBzZXQ7IGlmIGl0IGlzbid0LCBzZXQgdGhlIGV4aXQgY29kZSB0
bwotICAgICAgICAjIHNvbWV0aGluZyB0aGF0J3MgY2xlYXJseSBpbnZhbGlkLgotICAgICAgICA8
PC1FTkRfU1RBVFVTX0NPTU1BTkQKLSAgICAgICAgICBGaWxlLm9wZW4oIiN7c3RhdHVzRmlsZX0i
LCAidyIpIHsgfGZ8Ci0gICAgICAgICAgICAgIGYucHV0cygiI3skcnVuVW5pcXVlSWR9IFwje3N0
YXR1cy5uaWw/ID8gOTk5OTk5OTk5IDogc3RhdHVzfSAje3N0YXR1c19jb2RlfSIpCi0gICAgICAg
ICAgfQotICAgICAgICBFTkRfU1RBVFVTX0NPTU1BTkQKLSAgICBlbmQKLQotICAgIGRlZiBmYWls
Q29tbWFuZAotICAgICAgICA8PC1FTkRfRkFJTF9DT01NQU5ECi0gICAgICAgICAgICBwcmludCAi
RkFJTDogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX1cbiIKLSAgICAgICAgICAgICN7
c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9GQUlMKX0KLSAgICAgICAgICAgICN7cmVwcm9TY3Jp
cHRDb21tYW5kfQotICAgICAgICBFTkRfRkFJTF9DT01NQU5ECi0gICAgZW5kCi0KLSAgICBkZWYg
c3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgaWYgJHByb2dyZXNzTWV0ZXIgb3IgJHZlcmJvc2l0eSA+
PSAyCi0gICAgICAgICAgICA8PC1FTkRfVkVSQk9TRV9TVUNDRVNTX0NPTU1BTkQKLSAgICAgICAg
ICAgICAgICBwcmludCAiUEFTUzogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX1cbiIK
LSAgICAgICAgICAgICAgICAje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfUEFTUyl9Ci0gICAg
ICAgICAgICBFTkRfVkVSQk9TRV9TVUNDRVNTX0NPTU1BTkQKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgIiN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9QQVNTKX1cbiIKLSAgICAgICAgZW5k
Ci0gICAgZW5kCi0KLSAgICBkZWYgc3RhdHVzRmlsZQotICAgICAgICAiI3tTVEFUVVNfRklMRV9Q
UkVGSVh9I3tAaW5kZXh9IgotICAgIGVuZAotCi0gICAgZGVmIHdyaXRlUnVuU2NyaXB0KGZpbGVu
YW1lKQotICAgICAgICBqc29uZmlsZXBhcnQgPSBmaWxlbmFtZS5iYXNlbmFtZS50b19zICsgIi5q
c29uIgotICAgICAgICBqc29uZGlyID0gZmlsZW5hbWUuZGlybmFtZS5wYXJlbnQgKyAiLmpzb24i
Ci0gICAgICAgIGlmICghanNvbmRpci5leGlzdD8pCi0gICAgICAgICAgICBqc29uZGlyLm1rZGly
Ci0gICAgICAgIGVuZAotICAgICAgICBGaWxlLm9wZW4oanNvbmRpciArIGpzb25maWxlcGFydCwg
InciKSB7Ci0gICAgICAgICAgICB8b3V0cHwKLQotICAgICAgICAgICAgYmFzZURpciA9ICgkcnVu
bmVyRGlyICsgIi4uIiArIEBkaXJlY3RvcnkpLnJlYWxkaXJwYXRoCi0KLSAgICAgICAgICAgIG91
dHAucHV0cyBKU09OLmdlbmVyYXRlKHsKLSAgICAgICAgICAgICAgICBuYW1lOiBAbmFtZSwKLSAg
ICAgICAgICAgICAgICBvdXRwdXREaXI6ICRydW5uZXJEaXIsCi0gICAgICAgICAgICAgICAgYmFz
ZURpcjogYmFzZURpciwKLSAgICAgICAgICAgICAgICBlbnY6ICRlbnZWYXJzICsgQGFkZGl0aW9u
YWxFbnYsCi0gICAgICAgICAgICAgICAgb3V0cHV0TmFtZTogQG5hbWUuZ3N1YigvKFxcfFwvKS8s
ICdfJyksCi0gICAgICAgICAgICAgICAgY2hlY2tTY3JpcHQ6IGZpbGVuYW1lLAotICAgICAgICAg
ICAgICAgIGFyZ3M6IEBhcmd1bWVudHMsCi0gICAgICAgICAgICAgICAgc3RhdHVzRmlsZTogIiN7
c3RhdHVzRmlsZX0iLAotICAgICAgICAgICAgfSkKLSAgICAgICAgfQotCi0gICAgICAgIEZpbGUu
b3BlbihmaWxlbmFtZSwgInciKSB7Ci0gICAgICAgICAgICB8IG91dHAgfAotICAgICAgICAgICAg
I291dHAucHV0cyAicHJpbnQgXCJSdW5uaW5nICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFt
ZSl9XFxuXCIiCi0gICAgICAgICAgICBvdXRwLnB1dHMgIiN7cmVwcm9TY3JpcHRIZWxwZXJ9Igot
ICAgICAgICAgICAgb3V0cC5wdXRzICJiZWdpbiIKLSAgICAgICAgICAgIG91dHAucHV0cyAicmVx
dWlyZSAnb3BlbjMnIgotICAgICAgICAgICAgb3V0cC5wdXRzICJyZXF1aXJlICdmaWxldXRpbHMn
IgotCi0gICAgICAgICAgICBjbWQgPSBzaGVsbENvbW1hbmQKLQotICAgICAgICAgICAgY21kICs9
IEBvdXRwdXRIYW5kbGVyLmNhbGwoQG5hbWUpCi0KLSAgICAgICAgICAgIGlmICR2ZXJib3NpdHkg
Pj0gMwotICAgICAgICAgICAgICAgIG91dHAucHV0cyAicHJpbnQgXCIje1NoZWxsd29yZHMuc2hl
bGxlc2NhcGUoY21kKX1cXG5cIiIKLSAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgb3V0cC5w
dXRzIGNtZAotICAgICAgICAgICAgQGVycm9ySGFuZGxlci5jYWxsKG91dHAsIHNlbGYpCi0gICAg
ICAgICAgICBvdXRwLnB1dHMgInJlc2N1ZSBSdW50aW1lRXJyb3IgPT4gZSIKLSAgICAgICAgICAg
IG91dHAucHV0cyAiICAgIHByaW50IFwiRkFJTDogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBu
YW1lKX1cXG5cIiIKLSAgICAgICAgICAgIG91dHAucHV0cyAiICAgICN7c3RhdHVzQ29tbWFuZChT
VEFUVVNfRklMRV9GQUlMKX0iCi0gICAgICAgICAgICBvdXRwLnB1dHMgImVuZCIKLSAgICAgICAg
fQotICAgIGVuZAotZW5kCi0KLWRlZiBwcmVwYXJlUGxheVN0YXRpb25UZXN0UnVubmVyCi0gICAg
RmlsZS5vcGVuKCRydW5uZXJEaXIgKyAicnVuc2NyaXB0IiwgInciKSB7Ci0gICAgICAgIHwgb3V0
cCB8Ci0gICAgICAgICRydW5saXN0LmVhY2ggewotICAgICAgICAgICAgfCBwbGFuIHwKLSAgICAg
ICAgICAgIG91dHAucHV0cyAiLi4vLmpzb24vdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fS5qc29u
IgotICAgICAgICB9Ci0gICAgfQotZW5kCi0KLWRlZiBwcmVwYXJlU2hlbGxUZXN0UnVubmVyCi0g
ICAgcHJlcGFyZVBsYXlTdGF0aW9uVGVzdFJ1bm5lcgotZW5kCi0KLWRlZiBwcmVwYXJlTWFrZVRl
c3RSdW5uZXIocmVtb3RlSW5kZXgpCi0gICAgcHJlcGFyZVBsYXlTdGF0aW9uVGVzdFJ1bm5lcgot
ZW5kCi0KLWRlZiBwcmVwYXJlUnVieVRlc3RSdW5uZXIKLSAgICBwcmVwYXJlUGxheVN0YXRpb25U
ZXN0UnVubmVyCi1lbmQKLQotZGVmIHRlc3RSdW5uZXJDb21tYW5kCi0gICAgb3B0aW9ucyA9IEVO
VlsiSlNDVEVTVF9vcHRpb25zIl0KLQotICAgIGZzUm9vdCA9ICRqc2NQYXRoLmRpcm5hbWUKLSAg
ICBjb21tYW5kID0gIlBsYXlTdGF0aW9uVGVzdFJ1bm5lciAje29wdGlvbnN9IC1udW1Qcm9jZXNz
ZXM9I3skbnVtQ2hpbGRQcm9jZXNzZXMudG9fc30gLWV4ZT0jeyRqc2NQYXRofSAtZnNyb290PSN7
ZnNSb290fSAtLXJ1blVuaXF1ZUlkPSN7JHJ1blVuaXF1ZUlkfSBAI3skcnVubmVyRGlyfS9ydW5z
Y3JpcHQiCi0KLSAgICBwcmludCBjb21tYW5kCi0KLSAgICByZXR1cm4gY29tbWFuZAotZW5kCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRl
ci1ydWJ5LnJiIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0
ZXItcnVieS5yYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg4ODE2YWQwYzlmMTBi
NzY3NTZiODcxNjU2Zjk0OGE2ZjViMmIzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0
LXdyaXRlci1ydWJ5LnJiCisrKyAvZGV2L251bGwKQEAgLTEsNDc5ICswLDAgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuIAotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
IAotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotcmVxdWlyZSAnb3BlbjMnCi0KLSRoYXNEaWZm
ID0gZmFsc2UKLWlmICgkaG9zdE9TID09ICd3aW5kb3dzJykKLSAgICBvdXQsIGVyciwgc3RhdHVz
ID0gT3BlbjMuY2FwdHVyZTMoIndoZXJlIiwgIi9xIiwgImRpZmYiKQotICAgICRoYXNEaWZmID0g
c3RhdHVzLnN1Y2Nlc3M/Ci1lbHNlCi0gICAgb3V0LCBlcnIsIHN0YXR1cyA9IE9wZW4zLmNhcHR1
cmUzKCJ3aGljaCIsICJkaWZmIikKLSAgICAkaGFzRGlmZiA9IHN0YXR1cy5zdWNjZXNzPwotZW5k
Ci0KLSMgUHJlZml4IGVhY2ggbGluZSBvZiBzdHIgd2l0aCB0aGUgbmFtZQotZGVmIHByZWZpeFN0
cmluZyhzdHIsIG5hbWUpCi0gICAgIiN7c3RyfS5lbXB0eT8gPyBcIlwiIDogI3tzdHJ9LmdzdWIo
L14vbSwgXCIje25hbWV9OiBcIikiCi1lbmQKLQotZGVmIHNpbGVudE91dHB1dEhhbmRsZXIKLSAg
ICBQcm9jLm5ldyB7Ci0gICAgICAgIHwgbmFtZSB8Ci0gICAgICAgIDw8LUVORF9TSUxFTlRfT1VU
UFVUX0hBTkRMRVIKLSAgICAgICAgb3V0ID0gb3V0ICsgZXJyCi0gICAgICAgIGVyciA9IG5pbAot
ICAgICAgICBTVERPVVQucHV0cyAje3ByZWZpeFN0cmluZygib3V0IiwgbmFtZSl9IGlmICghb3V0
LmVtcHR5PykKLSAgICAgICAgRmlsZS5vcGVuKCIje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBh
dGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIpKS50b19zKX0iLCAidyIpIGRvIHxvdXRfZmls
ZXwKLSAgICAgICAgICAgIG91dF9maWxlLnB1dHMgb3V0Ci0gICAgICAgIGVuZAotICAgICAgICBF
TkRfU0lMRU5UX09VVFBVVF9IQU5ETEVSCi0gICAgfQotZW5kCi0KLSMgT3V0cHV0IGhhbmRsZXIg
Zm9yIHRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIHByb2R1Y2UgbWVhbmluZ2Z1bCBvdXRwdXQu
Ci1kZWYgbm9pc3lPdXRwdXRIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG5hbWUg
fAotICAgICAgICA8PC1FTkRfTk9JU1lfT1VUUFVUX0hBTkRMRVIKLSAgICAgICAgb3V0ID0gb3V0
ICsgZXJyCi0gICAgICAgIGVyciA9IG5pbAotICAgICAgICBGaWxlLm9wZW4oIiN7U2hlbGx3b3Jk
cy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3MpfSIs
ICJ3IikgZG8gfG91dF9maWxlfAotICAgICAgICAgICAgb3V0X2ZpbGUucHV0cyBvdXQKLSAgICAg
ICAgZW5kCi0gICAgICAgIEVORF9OT0lTWV9PVVRQVVRfSEFORExFUgotICAgIH0KLWVuZAotCi0j
IEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1
cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMuCi0jIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSB0ZXN0IGlz
IGV4cGVjdGVkIHRvIGZhaWwuCi1kZWYgc2ltcGxlRXJyb3JIYW5kbGVyCi0gICAgUHJvYy5uZXcg
ewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNz
KHN0YXR1cylcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmlu
ZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxu
XCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBs
YW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAu
cHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5k
XG4iCi0gICAgfQotZW5kCi0KLSMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBmYWlsIGV4
YWN0bHkgd2hlbiB0aGV5IHJldHVybiB6ZXJvIGV4aXQgc3RhdHVzLgotZGVmIGV4cGVjdGVkRmFp
bEVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAg
ICAgICAgb3V0cC5wdXRzICJpZiBzdWNjZXNzKHN0YXR1cylcbiIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNv
ZGUgMFxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAg
ICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgotICAgICAg
ICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1
dHMgImVuZFxuIgotICAgIH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQg
ZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMgYW5kIHBy
b2R1Y2UKLSMgbG90cyBvZiBzcGV3LiBUaGlzIHdpbGwgZWNobyB0aGF0IHNwZXcgd2hlbiB0aGUg
dGVzdCBmYWlscy4KLWRlZiBub2lzeUVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAgICAg
ICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2VzcyhzdGF0dXMp
XG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIs
IHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVm
aXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1cy5leGl0c3Rh
dHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAg
ICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgotICAgICAg
ICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1
dHMgImVuZFxuIgotICAgIH0KLWVuZAotCi0gZGVmIGZhbGxiYWNrRGlmZihleHBlY3RlZCwgb3V0
cHV0KQotICAgIDw8LUVORF9GQUxMQkFDS19ESUZGCi0gICAgICAgICAjIEZhbGxiYWNrIGRpZmYg
Zm9yIHdoZW4gZGlmZigxKSBpc24ndCBhdmFpbGFibGUKLSAgICAgICAgIGRpZmZzID0gW10KLSAg
ICAgICAgIGxpbmVfbnVtYmVyID0gMAotICAgICAgICAgRmlsZS5vcGVuKCIje2V4cGVjdGVkfSIp
IGRvIHwgZXhwZWN0ZWQgfAotICAgICAgICAgICAgIEZpbGUub3BlbigiI3tvdXRwdXR9IikgZG8g
fCBhY3R1YWwgfAotICAgICAgICAgICAgICAgICBsb29wIGRvCi0gICAgICAgICAgICAgICAgICAg
ICBsMSA9IGV4cGVjdGVkLmdldHMKLSAgICAgICAgICAgICAgICAgICAgIGwyID0gYWN0dWFsLmdl
dHMKLSAgICAgICAgICAgICAgICAgICAgIGlmIChsMSAhPSBsMikKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWZmcy5wdXNoKFtsaW5lX251bWJlciwgbDEsIGwyXSkKLSAgICAgICAgICAgICAg
ICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSBsaW5lX251bWJl
ciArIDEKLSAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGlmIChsMSA9PSBuaWwgJiYgbDIgPT0g
bmlsKQotICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICBlbmQKLSAgICAgICAgIGVu
ZAotICAgICAgICAgaXNEaWZmZXJlbnQgPSAhZGlmZnMuZW1wdHk/Ci0gICAgICAgICBkaWZmT3V0
ID0gZGlmZnMubWFwIHsgCi0gICAgICAgICAgICAgfCBkaWZmIHwgCi0gICAgICAgICAgICAgIkBA
IC1cI3tkaWZmWzBdfSwxICtcI3tkaWZmWzBdfSwxIEBAXFxuIiArCi0gICAgICAgICAgICAgKGRp
ZmZbMV0gPyAiLVwje2RpZmZbMV19IiA6ICIiKSArIAotICAgICAgICAgICAgIChkaWZmWzJdID8g
IitcI3tkaWZmWzJdfSIgOiAiIikKLSAgICAgICAgfS5qb2luKCIiKQotICAgIEVORF9GQUxMQkFD
S19ESUZGCi1lbmQKLQotZGVmIHJ1bkRpZmYoZXhwZWN0ZWQsIG91dHB1dCkKLSAgICA8PC1FTkRf
UlVOX0RJRkYKLSAgICAgICAgZGlmZk91dCwgZGlmZlN0YXR1cyA9IE9wZW4zLmNhcHR1cmUyKCJk
aWZmIiwKLSAgICAgICAgICAgICItLXN0cmlwLXRyYWlsaW5nLWNyIiwKLSAgICAgICAgICAgICIt
dSIsCi0gICAgICAgICAgICAiI3tleHBlY3RlZH0iLAotICAgICAgICAgICAgIiN7b3V0cHV0fSIp
OwotICAgICAgICBpc0RpZmZlcmVudCA9ICFkaWZmU3RhdHVzLnN1Y2Nlc3M/Ci0gICAgRU5EX1JV
Tl9ESUZGCi1lbmQKLQotIyBHZXQgYSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGZpbGVzLCB1c2lu
ZyBkaWZmIHdoZXJlIGF2YWlsYWJsZSwgZmFsbGluZyBiYWNrCi0jIG9uIGEgbGltaXRlZCBjb21w
YXJpc29uIHdoZW4gZGlmZiBpcyBub3QgYXZhaWxhYmxlCi1kZWYgZ2V0RGlmZihleHBlY3RlZCwg
b3V0cHV0KQotICAgIGlmICRoYXNEaWZmCi0gICAgICAgIHJ1bkRpZmYoZXhwZWN0ZWQsIG91dHB1
dCkKLSAgICBlbHNlCi0gICAgICAgIGZhbGxiYWNrRGlmZihleHBlY3RlZCxvdXRwdXQpCi0gICAg
ZW5kCi1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGRpZmYgdGhlaXIgb3V0
cHV0IHdpdGggc29tZSBleHBlY3RhdGlvbi4KLWRlZiBkaWZmRXJyb3JIYW5kbGVyKGV4cGVjdGVk
RmlsZW5hbWUpCi0gICAgUHJvYy5uZXcgewotICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAg
ICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIp
ICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCi0gICAgICAgIAotICAgICAgICBvdXRwLnB1
dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQg
IiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0
IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAg
ICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1
dHMgImVsc2lmIEZpbGUuZXhpc3RzPyhcIi4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBl
Y3RlZEZpbGVuYW1lKX1cIilcbiIKLSAgICAgICAgb3V0cC5wdXRzIGdldERpZmYoIi4uLyN7U2hl
bGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0iLCBvdXRwdXRGaWxlbmFtZSkK
LSAgICAgICAgb3V0cC5wdXRzICIgICAgaWYgaXNEaWZmZXJlbnRcbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRElGRiBGQUlMVVJFIVxcblwi
IiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIHByaW50ICIg
KyBwcmVmaXhTdHJpbmcoImRpZmZPdXQiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRw
LnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICIg
ICAgZWxzZSIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21t
YW5kCi0gICAgICAgIG91dHAucHV0cyAiICAgIGVuZCIKLSAgICAgICAgb3V0cC5wdXRzICJlbHNl
XG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiTk8g
RVhQRUNUQVRJT04hXFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMg
IiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgotICAg
ICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1
dHMgImVuZCIKLSAgICB9Ci1lbmQKLQotIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJl
cG9ydCBlcnJvciBieSBzYXlpbmcgImZhaWxlZCEiLiBUaGlzIGlzIHVzZWQgYnkgTW96aWxsYQot
IyB0ZXN0cy4KLWRlZiBtb3ppbGxhRXJyb3JIYW5kbGVyCi0gICAgUHJvYy5uZXcgewotICAgICAg
ICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylc
biIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0Iiwg
cGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZp
eFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0
dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAg
IiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvZmFpbGVkIS9p
ID1+IG91dFxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5n
KCJcIkRldGVjdGVkIGZhaWx1cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAg
b3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSAr
ICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAg
ICAgb3V0cC5wdXRzICJlbHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1
Y2Nlc3NDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZW5kXG4iCi0gICAgfQotZW5kCi0KLSMg
RXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWls
ZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0bwotIyBmYWlsLiBUaGlzIGlzIHVzZWQgYnkgTW96aWxs
YSB0ZXN0cy4KLWRlZiBtb3ppbGxhRmFpbEVycm9ySGFuZGxlcgotICAgIFByb2MubmV3IHsKLSAg
ICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2VzcyhzdGF0
dXMpXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCi0g
ICAgICAgIG91dHAucHV0cyAiZWxzaWYgL2ZhaWxlZCEvaSA9fiBvdXRcbiIKLSAgICAgICAgb3V0
cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJl
bHNlXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwi
Tk9USUNFOiBZb3UgbWFkZSB0aGlzIHRlc3QgcGFzcywgYnV0IGl0IHdhcyBleHBlY3RlZCB0byBm
YWlsXFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsg
cGxhbi5mYWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgotICAgIH0KLWVuZAot
Ci0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAi
ZmFpbGVkISIsIGFuZCBhcmUgZXhwZWN0ZWQgdG8gaGF2ZQotIyBhbiBleGl0IGNvZGUgb2YgMy4K
LWRlZiBtb3ppbGxhRXhpdDNFcnJvckhhbmRsZXIKLSAgICBQcm9jLm5ldyB7Ci0gICAgICAgIHwg
b3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHAucHV0cyAiaWYgc3VjY2VzcyhzdGF0dXMpXG4iCi0g
ICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4u
bmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJp
bmcoIlwiRVJST1I6IFRlc3QgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHJldHVybmVkIHN1Y2Nlc3Nm
dWxseVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgICAg
ICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzaWYgc3RhdHVzLmV4
aXRzdGF0dXMgIT0gMyIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0
cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJp
bnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6IFwje3N0
YXR1cy5leGl0c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxz
aWYgL2ZhaWxlZCEvaSA9fiBvdXRcbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiAr
IHByZWZpeFN0cmluZygiXCJEZXRlY3RlZCBmYWlsdXJlczpcXG5cIiIsIHBsYW4ubmFtZSkgKyAi
XG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIs
IHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxD
b21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgotICAgICAgICBvdXRwLnB1dHMgIiAg
ICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgotICAg
IH0KLWVuZAotCi0jIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IHN1Y2Nlc3Mg
Ynkgc2F5aW5nICJQYXNzZWQiIG9yIGVycm9yIGJ5IHNheWluZyAiRkFJTEVEIi4KLSMgVGhpcyBp
cyB1c2VkIGJ5IENoYWtyYSB0ZXN0cy4KLWRlZiBjaGFrcmFQYXNzRmFpbEVycm9ySGFuZGxlcgot
ICAgIFByb2MubmV3IHsKLSAgICAgICAgfCBvdXRwLCBwbGFuIHwKLSAgICAgICAgb3V0cC5wdXRz
ICJpZiAhc3VjY2VzcyhzdGF0dXMpXG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIg
KyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCi0gICAgICAgIG91dHAucHV0
cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBj
b2RlIFwje3N0YXR1cy5leGl0c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKLSAgICAg
ICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRz
ICJlbHNpZiAvRkFJTEVEL2kgPX4gb3V0XG4iCi0gICAgICAgIG91dHAucHV0cyAiICAgIHByaW50
ICIgKyBwcmVmaXhTdHJpbmcoIlwiRGV0ZWN0ZWQgZmFpbHVyZXM6XFxuXCIiLCBwbGFuLm5hbWUp
ICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJv
dXQiLCBwbGFuLm5hbWUpICsgIlxuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5m
YWlsQ29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKLSAgICAgICAgb3V0cC5wdXRz
ICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIK
LSAgIH0KLWVuZAotCi1jbGFzcyBQbGFuCi0gICAgYXR0cl9yZWFkZXIgOmRpcmVjdG9yeSwgOmFy
Z3VtZW50cywgOmZhbWlseSwgOm5hbWUsIDpvdXRwdXRIYW5kbGVyLCA6ZXJyb3JIYW5kbGVyLCA6
YWRkaXRpb25hbEVudgotICAgIGF0dHJfYWNjZXNzb3IgOmluZGV4Ci0gICAgCi0gICAgZGVmIGlu
aXRpYWxpemUoZGlyZWN0b3J5LCBhcmd1bWVudHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0SGFuZGxl
ciwgZXJyb3JIYW5kbGVyKQotICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5Ci0gICAgICAg
IEBhcmd1bWVudHMgPSBhcmd1bWVudHMKLSAgICAgICAgQGZhbWlseSA9IGZhbWlseQotICAgICAg
ICBAbmFtZSA9IG5hbWUKLSAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRwdXRIYW5kbGVyCi0g
ICAgICAgIEBlcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXIKLSAgICAgICAgQGlzU2xvdyA9ICEh
JHJ1bkNvbW1hbmRPcHRpb25zWzppc1Nsb3ddCi0gICAgICAgIEBjcmFzaE9LID0gISEkcnVuQ29t
bWFuZE9wdGlvbnNbOmNyYXNoT0tdCi0gICAgICAgIGlmIEBjcmFzaE9LCi0gICAgICAgICAgICBA
b3V0cHV0SGFuZGxlciA9IG5vaXN5T3V0cHV0SGFuZGxlcgotICAgICAgICBlbmQKLSAgICAgICAg
QGFkZGl0aW9uYWxFbnYgPSBbXQotICAgIGVuZAotICAgIAotICAgIGRlZiBzaGVsbENvbW1hbmQg
Ci0gICAgICAgIHNjcmlwdCA9ICJvdXQgPSBuaWxcbiIKLSAgICAgICAgc2NyaXB0ICs9ICJlcnIg
PSBuaWxcbiIKLSAgICAgICAgc2NyaXB0ICs9ICJzdGF0dXMgPSBuaWxcbiIKLSAgICAgICAgc2Ny
aXB0ICs9ICJEaXIuY2hkaXIoXCIuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9y
eS50b19zKX1cIikgZG9cbiIKLSAgICAgICAgc2NyaXB0ICs9ICIgIGVudiA9IHt9XG4iCi0gICAg
ICAgICgkZW52VmFycyArIGFkZGl0aW9uYWxFbnYpLmVhY2ggewotICAgICAgICAgICAgfHZhcnwg
Ci0gICAgICAgICAgICAoa2V5LCB2YWx1ZSkgPSB2YXIuc3BsaXQoLz0vLCAyKQotICAgICAgICAg
ICAgc2NyaXB0ICs9ICIgIGVudltcIiN7a2V5fVwiXSA9IFwiI3t2YWx1ZX1cIlxuIgotICAgICAg
ICB9Ci0gICAgICAgIHNjcmlwdCArPSAiICAgIG91dCwgZXJyLCBzdGF0dXMgPSBPcGVuMy5jYXB0
dXJlMyhlbnYsIFxuIgotICAgICAgICBzY3JpcHQgKz0gQGFyZ3VtZW50cy5tYXAgeyB8IGFyZ3Vt
ZW50IHwgIiAgICAgICAgXCIje2FyZ3VtZW50fVwiIn0uam9pbigiLFxuIikKLSAgICAgICAgc2Ny
aXB0ICs9ICIgICAgKVxuIgotICAgICAgICBzY3JpcHQgKz0gImVuZFxuIgotICAgICAgICByZXR1
cm4gc2NyaXB0Ci0gICAgZW5kCi0KLSAgICBkZWYgcmVwcm9TY3JpcHRIZWxwZXIKLSAgICAgICAg
c2NyaXB0ID0gImRlZiBlcnJvcl9zY3JpcHRfY29udGVudHNcbiIKLSAgICAgICAgc2NyaXB0ICs9
ICIgICAgPDwtRU5EX09GX1NDUklQVFxuIgotICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgcmVx
dWlyZSAnb3BlbjMnXG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICBkZWYgc3VjY2Vzcyhz
dGF0dXMpXG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgc3RhdHVzLnN1Y2Nlc3M/
XG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICBlbmRcbiIKLSAgICAgICAgc2NyaXB0ICs9
ICIgICAgICAgIHNjcmlwdF9sb2NhdGlvbiA9IEZpbGUuZXhwYW5kX3BhdGgoRmlsZS5kaXJuYW1l
KF9fRklMRV9fKSlcbiIKLSAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgIERpci5jaGRpcihcIlxc
XCN7c2NyaXB0X2xvY2F0aW9ufSIKLSAgICAgICAgUGF0aG5hbWUubmV3KEBuYW1lKS5kaXJuYW1l
LmVhY2hfZmlsZW5hbWUgewotICAgICAgICAgICAgfCBwYXRoQ29tcG9uZW50IHwKLSAgICAgICAg
ICAgIHNjcmlwdCArPSAiLy4uIgotICAgICAgICB9Ci0gICAgICAgIHNjcmlwdCArPSAiLy5ydW5u
ZXJcIikgZG9cbiIKLSAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgICAgICBFTlZbXCJEWUxEX0ZS
QU1FV09SS19QQVRIXCJdID0gXCIjeyR0ZXN0aW5nRnJhbWV3b3JrUGF0aC5kaXJuYW1lfVwiXG4i
Ci0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgRU5WW1wiSlNDVEVTVF90aW1lb3V0XCJd
ID0gXCIje0VOVlsnSlNDVEVTVF90aW1lb3V0J119XCJcbiIKLSAgICAgICAgc2NyaXB0ICs9ICIg
ICAgICAgICAgICBFTlZbXCJKU0NURVNUX2hhcmRUaW1lb3V0XCJdID0gXCIje0VOVlsnSlNDVEVT
VF9oYXJkVGltZW91dCddfVwiXG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgRU5W
W1wiSlNDVEVTVF9tZW1vcnlMaW1pdFwiXSA9IFwiI3tFTlZbJ0pTQ1RFU1RfbWVtb3J5TGltaXQn
XX1cIlxuIgotCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgI3tzaGVsbENvbW1hbmR9
IgotICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIHByaW50IG91dFxuIgotICAgICAgICBz
Y3JpcHQgKz0gIiAgICAgICAgICAgIGlmICghc3VjY2VzcyhzdGF0dXMpKVxuIgotICAgICAgICBz
Y3JpcHQgKz0gIiAgICAgICAgICAgICAgICBleGl0KDEpXG4iCi0gICAgICAgIHNjcmlwdCArPSAi
ICAgICAgICAgICAgZW5kXG4iCi0gICAgICAgIHNjcmlwdCArPSAiICAgICAgICBlbmRcbiIKLSAg
ICAgICAgc2NyaXB0ICs9ICIgICAgRU5EX09GX1NDUklQVFxuIgotICAgICAgICBzY3JpcHQgKz0g
ImVuZFxuIgotICAgICAgICByZXR1cm4gc2NyaXB0Ci0gICAgZW5kCi0gICAgCi0gICAgZGVmIHJl
cHJvU2NyaXB0Q29tbWFuZAotICAgICAgICA8PC1FTkRfUkVQUk9fU0NSSVBUX0NPTU1BTkQKLSAg
ICAgICAgICAgIEZpbGUub3BlbigiI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZS5u
ZXcoIi4uIikgKyBAbmFtZSkudG9fcyl9IiwgInciKSBkbyB8c2NyfAotICAgICAgICAgICAgICAg
IHNjci5wdXRzICJcI3tlcnJvcl9zY3JpcHRfY29udGVudHN9IgotICAgICAgICAgICAgZW5kCi0g
ICAgICAgIEVORF9SRVBST19TQ1JJUFRfQ09NTUFORAotICAgIGVuZAotCi0gICAgZGVmIHN0YXR1
c0NvbW1hbmQoc3RhdHVzX2NvZGUpCi0gICAgICAgICMgTWF5IGJlIGNhbGxlZCBpbiB0aCByZXNj
dWUgYmxvY2ssIHNvIHN0YXR1cyBpcyBub3QKLSAgICAgICAgIyBndWFyYW50ZWVkIHRvIGJlIHNl
dDsgaWYgaXQgaXNuJ3QsIHNldCB0aGUgZXhpdCBjb2RlIHRvCi0gICAgICAgICMgc29tZXRoaW5n
IHRoYXQncyBjbGVhcmx5IGludmFsaWQuCi0gICAgICAgIDw8LUVORF9TVEFUVVNfQ09NTUFORAot
ICAgICAgICAgIEZpbGUub3BlbigiI3tzdGF0dXNGaWxlfSIsICJ3IikgeyB8ZnwKLSAgICAgICAg
ICAgICAgZi5wdXRzKCIjeyRydW5VbmlxdWVJZH0gXCN7c3RhdHVzLm5pbD8gPyA5OTk5OTk5OTkg
OiBzdGF0dXMuZXhpdHN0YXR1c30gI3tzdGF0dXNfY29kZX0iKQotICAgICAgICAgIH0KLSAgICAg
ICAgRU5EX1NUQVRVU19DT01NQU5ECi0gICAgZW5kCi0KLSAgICBkZWYgZmFpbENvbW1hbmQKLSAg
ICAgICAgPDwtRU5EX0ZBSUxfQ09NTUFORAotICAgICAgICAgICAgcHJpbnQgIkZBSUw6ICN7U2hl
bGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9XG4iCi0gICAgICAgICAgICAje3N0YXR1c0NvbW1h
bmQoU1RBVFVTX0ZJTEVfRkFJTCl9Ci0gICAgICAgICAgICAje3JlcHJvU2NyaXB0Q29tbWFuZH0K
LSAgICAgICAgRU5EX0ZBSUxfQ09NTUFORAotICAgIGVuZAotICAgIAotICAgIGRlZiBzdWNjZXNz
Q29tbWFuZAotICAgICAgICBpZiAkcHJvZ3Jlc3NNZXRlciBvciAkdmVyYm9zaXR5ID49IDIKLSAg
ICAgICAgICAgIDw8LUVORF9WRVJCT1NFX1NVQ0NFU1NfQ09NTUFORAotICAgICAgICAgICAgICAg
IHByaW50ICJQQVNTOiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfVxuIgotICAgICAg
ICAgICAgICAgICN7c3RhdHVzQ29tbWFuZChTVEFUVVNfRklMRV9QQVNTKX0KLSAgICAgICAgICAg
IEVORF9WRVJCT1NFX1NVQ0NFU1NfQ09NTUFORAotICAgICAgICBlbHNlCi0gICAgICAgICAgICAi
I3tzdGF0dXNDb21tYW5kKFNUQVRVU19GSUxFX1BBU1MpfVxuIgotICAgICAgICBlbmQKLSAgICBl
bmQKLSAgICAKLSAgICBkZWYgc3RhdHVzRmlsZQotICAgICAgICAiI3tTVEFUVVNfRklMRV9QUkVG
SVh9I3tAaW5kZXh9IgotICAgIGVuZAotCi0gICAgZGVmIHdyaXRlUnVuU2NyaXB0KGZpbGVuYW1l
KQotICAgICAgICBGaWxlLm9wZW4oZmlsZW5hbWUsICJ3IikgewotICAgICAgICAgICAgfCBvdXRw
IHwKLSAgICAgICAgICAgIG91dHAucHV0cyAicHJpbnQgXCJSdW5uaW5nICN7U2hlbGx3b3Jkcy5z
aGVsbGVzY2FwZShAbmFtZSl9XFxuXCIiCi0gICAgICAgICAgICBvdXRwLnB1dHMgIiN7cmVwcm9T
Y3JpcHRIZWxwZXJ9IgotICAgICAgICAgICAgb3V0cC5wdXRzICJiZWdpbiIKLSAgICAgICAgICAg
IG91dHAucHV0cyAicmVxdWlyZSAnb3BlbjMnIgotICAgICAgICAgICAgb3V0cC5wdXRzICJyZXF1
aXJlICdmaWxldXRpbHMnIgotICAgICAgICAgICAgb3V0cC5wdXRzICJkZWYgc3VjY2VzcyhzdGF0
dXMpIgotICAgICAgICAgICAgb3V0cC5wdXRzICIgICBzdGF0dXMuc3VjY2Vzcz8iCi0gICAgICAg
ICAgICBvdXRwLnB1dHMgImVuZCIKLQotICAgICAgICAgICAgY21kID0gc2hlbGxDb21tYW5kCi0K
LSAgICAgICAgICAgIGNtZCArPSBAb3V0cHV0SGFuZGxlci5jYWxsKEBuYW1lKQotCi0gICAgICAg
ICAgICBpZiAkdmVyYm9zaXR5ID49IDMKLSAgICAgICAgICAgICAgICBvdXRwLnB1dHMgInByaW50
IFwiI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGNtZCl9XFxuXCIiCi0gICAgICAgICAgICBlbmQK
LSAgICAgICAgICAgIG91dHAucHV0cyBjbWQKLSAgICAgICAgICAgIEBlcnJvckhhbmRsZXIuY2Fs
bChvdXRwLCBzZWxmKQotICAgICAgICAgICAgb3V0cC5wdXRzICJyZXNjdWUiCi0gICAgICAgICAg
ICBvdXRwLnB1dHMgIiAgICBwcmludCBcIkZBSUw6ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShA
bmFtZSl9XFxuXCIiCi0gICAgICAgICAgICBvdXRwLnB1dHMgIiAgICAje3N0YXR1c0NvbW1hbmQo
U1RBVFVTX0ZJTEVfRkFJTCl9IgotICAgICAgICAgICAgb3V0cC5wdXRzICJlbmQiCi0gICAgICAg
IH0KLSAgICBlbmQKLWVuZAotCi1kZWYgcHJlcGFyZVNoZWxsVGVzdFJ1bm5lcgotICAgIEZpbGUu
b3BlbigkcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3IikgewotICAgICAgICB8IG91dHAgfAot
ICAgICAgICAkcnVubGlzdC5lYWNoIHsKLSAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAgICAgICAg
ICBvdXRwLnB1dHMgInJ1YnkgdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIKLSAgICAgICAgfQot
ICAgIH0KLSAgICBgZG9zMnVuaXggI3skcnVubmVyRGlyICsgInJ1bnNjcmlwdCJ9YCAgICAKLWVu
ZAotCi1kZWYgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBwcmVyZXFzKQotICAgIGluZGV4ID0g
cGxhbi5pbmRleAotICAgIHRhcmdldCA9ICJ0ZXN0X2RvbmVfI3tpbmRleH0iCi0gICAgb3V0cC5w
dXRzICIje3RhcmdldH06ICN7cHJlcmVxcy5qb2luKCIgIil9IgotICAgIG91dHAucHV0cyAiXHRy
dWJ5IHRlc3Rfc2NyaXB0XyN7aW5kZXh9IgotICAgIHRhcmdldAotZW5kCi0KLWRlZiBwcmVwYXJl
TWFrZVRlc3RSdW5uZXIocmVtb3RlSW5kZXgpCi0gICAgc2VyaWFsUGxhbnMgPSB7fQotICAgICRz
ZXJpYWxSdW5saXN0LmVhY2ggeyB8cHwgc2VyaWFsUGxhbnNbcF0gPSBuaWwgfQotICAgIHJ1blBs
YW5zID0gW10KLSAgICBzZXJpYWxSdW5QbGFucyA9IFtdCi0gICAgJHJ1bmxpc3QuZWFjaCB7Ci0g
ICAgICAgIHwgcGxhbiB8Ci0gICAgICAgIGlmICEkcmVtb3RlIG9yIHBsYW4uaW5kZXggJSAkcmVt
b3RlSG9zdHMubGVuZ3RoID09IHJlbW90ZUluZGV4Ci0gICAgICAgICAgICBpZiBzZXJpYWxQbGFu
cy5oYXNfa2V5PyhwbGFuKQotICAgICAgICAgICAgICAgIHNlcmlhbFJ1blBsYW5zIDw8IHBsYW4K
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBydW5QbGFucyA8PCBwbGFuCi0gICAg
ICAgICAgICBlbmQKLSAgICAgICAgZW5kCi0gICAgfQotCi0gICAgRmlsZS5vcGVuKCRydW5uZXJE
aXIgKyAiTWFrZWZpbGUuI3tyZW1vdGVJbmRleH0iLCAidyIpIHsKLSAgICAgICAgfCBvdXRwIHwK
LSAgICAgICAgaWYgc2VyaWFsUnVuUGxhbnMuZW1wdHk/Ci0gICAgICAgICAgICBvdXRwLnB1dHMo
ImFsbDogcGFyYWxsZWwiKQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXJpYWxQcmVyZXEg
PSAidGVzdF9kb25lXyN7c2VyaWFsUnVuUGxhbnNbLTFdLmluZGV4fSIKLSAgICAgICAgICAgIG91
dHAucHV0cygiYWxsOiAje3NlcmlhbFByZXJlcX0iKQotICAgICAgICAgICAgcHJldl90YXJnZXQg
PSAicGFyYWxsZWwiCi0gICAgICAgICAgICBzZXJpYWxSdW5QbGFucy5lYWNoIHsKLSAgICAgICAg
ICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgICAgIHByZXZfdGFyZ2V0ID0gb3V0cHV0X3Rh
cmdldChvdXRwLCBwbGFuLCBbcHJldl90YXJnZXRdKQotICAgICAgICAgICAgfQotICAgICAgICBl
bmQKLSAgICAgICAgcGFyYWxsZWxUYXJnZXRzID0gcnVuUGxhbnMuY29sbGVjdCB7Ci0gICAgICAg
ICAgICB8IHBsYW4gfAotICAgICAgICAgICAgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbXSkK
LSAgICAgICAgfQotICAgICAgICBvdXRwLnB1dHMoInBhcmFsbGVsOiAiICsgcGFyYWxsZWxUYXJn
ZXRzLmpvaW4oIiAiKSkKLSAgICB9Ci1lbmQKLQotZGVmIHByZXBhcmVSdWJ5VGVzdFJ1bm5lcgot
ICAgIEZpbGUub3BlbigkcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3IikgewotICAgICAgICB8
IG91dHAgfAotICAgICAgICAkcnVubGlzdC5lYWNoIHsKLSAgICAgICAgICAgIHwgcGxhbiB8Ci0g
ICAgICAgICAgICBvdXRwLnB1dHMgInN5c3RlbSBcInJ1YnkgdGVzdF9zY3JpcHRfI3twbGFuLmlu
ZGV4fVwiIgotICAgICAgICB9Ci0gICAgfQotZW5kCi0KLWRlZiB0ZXN0UnVubmVyQ29tbWFuZChy
ZW1vdGVJbmRleD0wKQotICAgIGNhc2UgJHRlc3RSdW5uZXJUeXBlCi0gICAgd2hlbiA6c2hlbGwK
LSAgICAgICAgY29tbWFuZCA9ICJzaCBydW5zY3JpcHQiCi0gICAgd2hlbiA6bWFrZQotICAgICAg
ICBjb21tYW5kID0gIm1ha2UgLWogI3skbnVtQ2hpbGRQcm9jZXNzZXN9IC1zIC1mIE1ha2VmaWxl
LiN7cmVtb3RlSW5kZXh9IgotICAgIHdoZW4gOnJ1YnkKLSAgICAgICAgY29tbWFuZCA9ICJydWJ5
IHJ1bnNjcmlwdCIKLSAgICBlbHNlCi0gICAgICAgIHJhaXNlICJVbmtub3duIHRlc3QgcnVubmVy
IHR5cGU6ICN7JHRlc3RSdW5uZXJUeXBlLnRvX3N9IgotICAgIGVuZAotICAgIHJldHVybiBjb21t
YW5kCi1lbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNz
LXRlc3QvZXhlY3V0b3IucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10
ZXN0L2V4ZWN1dG9yLnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5OTUzZjZhMDZmZTM5YmYwNTZjNzZlZTdhMDcz
NGFjZDY3NGU4NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1Ynkv
anNjLXN0cmVzcy10ZXN0L2V4ZWN1dG9yLnJiCkBAIC0wLDAgKzEsNDI5IEBACisjIENvcHlyaWdo
dCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjIEltcGxlbWVudHMgdGhlIG1haW4gbG9vcCBmb3IgZXhlY3V0aW5nIHRoZSB0ZXN0cyBhbmQg
aGFuZGxpbmcKKyMgbWlzc2luZy9tdWx0aXBsZSByZXN1bHRzIChiZWNhdXNlIG9mIGluZnJhc3Ry
dWN0dXJlIGlzc3VlcykuIEl0IGFsc28KKyMgdGFrZXMgY2FyZSBvZiBtYXJraW5nIGZhaWxpbmcg
dGVzdHMgYXMgZmxha3kgd2hlbgorIyAtLXRyZWF0LWZhaWxpbmctYXMtZmxha3kgaXMgaW4gZWZm
ZWN0LiBJdCdzIGEgY2xhc3Mgc28gdGhhdCB3ZSBjYW4KKyMgZWFzaWx5IGluc3RhbnRpYXRlIGEg
c3ViY2xhc3MgZm9yIHRlc3RpbmcuCitjbGFzcyBCYXNlVGVzdHNFeGVjdXRvcgorICAgIGRlZiBp
bml0aWFsaXplKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCByZW1vdGVIb3N0cywgaXRlcmF0aW9uTGlt
aXRzLAorICAgICAgICAgICAgICAgICAgIHRyZWF0RmFpbGluZ0FzRmxha3ksIGxvZ1N0cmVhbT0k
c3RkZXJyKQorICAgICAgICBAcnVubGlzdCA9IHJ1bmxpc3QKKyAgICAgICAgQHNlcmlhbFBsYW5z
ID0gc2VyaWFsUGxhbnMKKyAgICAgICAgQHJlbW90ZUhvc3RzID0gcmVtb3RlSG9zdHMKKyAgICAg
ICAgQHRyZWF0RmFpbGluZ0FzRmxha3kgPSB0cmVhdEZhaWxpbmdBc0ZsYWt5CisgICAgICAgIEBp
bmZyYUl0ZXJhdGlvbnNGbG9vciA9IGl0ZXJhdGlvbkxpbWl0cy5pbmZyYUl0ZXJhdGlvbnNGbG9v
cgorICAgICAgICBAaXRlcmF0aW9uc0NlaWxpbmcgPSBpdGVyYXRpb25MaW1pdHMuaXRlcmF0aW9u
c0NlaWxpbmcKKyAgICAgICAgaWYgQGl0ZXJhdGlvbnNDZWlsaW5nIDwgQGluZnJhSXRlcmF0aW9u
c0Zsb29yCisgICAgICAgICAgICByYWlzZSAiaXRlcmF0aW9uc0NlaWxpbmcgKCN7QGl0ZXJhdGlv
bnNDZWlsaW5nfSA8IEBpbmZyYUl0ZXJhdGlvbnNGbG9vciAoI3tAaW5mcmFJdGVyYXRpb25zRmxv
b3J9IgorICAgICAgICBlbmQKKyAgICAgICAgQG1heEl0ZXJhdGlvbnMgPSBzZXRNYXhJdGVyYXRp
b25zKGluaXRpYWxNYXhBbGxvd2VkSXRlcmF0aW9ucyhydW5saXN0KSkKKyAgICAgICAgQGxvZ1N0
cmVhbSA9IGxvZ1N0cmVhbQorICAgIGVuZAorICAgIGRlZiBsb2cocykKKyAgICAgICAgQGxvZ1N0
cmVhbS5wdXRzKHMpIHVubGVzcyBAbG9nU3RyZWFtLm5pbD8KKyAgICBlbmQKKyAgICBkZWYgc2V0
TWF4SXRlcmF0aW9ucyh2YWx1ZSkKKyAgICAgICAgaWYgdmFsdWUgPiBAaXRlcmF0aW9uc0NlaWxp
bmcKKyAgICAgICAgICAgIHZhbHVlID0gQGl0ZXJhdGlvbnNDZWlsaW5nCisgICAgICAgIGVuZAor
ICAgICAgICBAbWF4SXRlcmF0aW9ucyA9IHZhbHVlCisgICAgZW5kCisgICAgZGVmIGl0ZXJhdGlv
bnNGb3JJbmZyYUZhaWx1cmVzCisgICAgICAgICMgSWYgd2UncmUgcnVubmluZyByZW1vdGVseSwg
c2NhbGUgdGhlIGV4dHJhIGl0ZXJhdGlvbnMgdG8KKyAgICAgICAgIyBhY2NvdW50IGZvciBpbmZy
YXN0cnVjdHVyZSBmYWlsdXJlcyBieSB0aGUgbnVtYmVyIG9mIGhvc3RzLgorICAgICAgICBudW1S
ZW1vdGVIb3N0cyA9IDAKKyAgICAgICAgaWYgbm90IEByZW1vdGVIb3N0cy5uaWw/CisgICAgICAg
ICAgICBudW1SZW1vdGVIb3N0cyA9IEByZW1vdGVIb3N0cy5zaXplIC8gMgorICAgICAgICBlbmQK
KyAgICAgICAgW251bVJlbW90ZUhvc3RzLCBAaW5mcmFJdGVyYXRpb25zRmxvb3JdLm1heAorICAg
IGVuZAorICAgIGRlZiBpbml0aWFsTWF4QWxsb3dlZEl0ZXJhdGlvbnMocnVubGlzdCkKKyAgICAg
ICAgbWF4VHJpZXMgPSAwCisgICAgICAgIHJ1bmxpc3QuZWFjaCB7IHxwbGFufAorICAgICAgICAg
ICAgbmV4dCBpZiBwbGFuLmZsYWt5Lm5pbD8KKyAgICAgICAgICAgIGlmIHBsYW4uZmxha3kubWF4
VHJpZXMgPiBtYXhUcmllcworICAgICAgICAgICAgICAgIG1heFRyaWVzID0gcGxhbi5mbGFreS5t
YXhUcmllcworICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgIyBUaGUgbnVtYmVy
IG9mIGFsbG93ZWQgaXRlcmF0aW9ucyBpcyB0aGUgc3VtIG9mCisgICAgICAgICMgaXRlcmF0aW9u
c0ZvckluZnJhRmFpbHVyZXMgYW5kIHRoZSBtYXggdGltZXMgd2UgcnVuIGEgdGVzdAorICAgICAg
ICAjIHRoYXQgYXBwZWFycyB0byBiZSBmbGFreS4KKyAgICAgICAgaXRlcmF0aW9uc0ZvckluZnJh
RmFpbHVyZXMgKyBtYXhUcmllcworICAgIGVuZAorICAgIGRlZiBhZGp1c3RGbGFraW5lc3NGb3JG
YWlsaW5nVGVzdHMoaXRlcmF0aW9uLCBzdGF0dXNNYXAsIGV2YWx1YXRvcikKKyAgICAgICAgY29t
cGxldGVkVGVzdHMgPSBldmFsdWF0b3IuY29tcGxldGVkCisgICAgICAgIGlmIEB0cmVhdEZhaWxp
bmdBc0ZsYWt5Lm5pbD8KKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZWRUZXN0cworICAgICAg
ICBlbmQKKworICAgICAgICAjIElmIHdlIGhhdmUgYSBsb3Qgb2YgZmFpbGluZyB0ZXN0cywgaXQn
cyBsaWtlbHkgdGhhdCB0aGUgdHJlZQorICAgICAgICAjIGlzIGJhZCBhbmQgdGhlcmUncyBubyBw
b2ludCBpbiB0cmVhdGluZyB0aGUgZmFpbHVyZXMgYXMKKyAgICAgICAgIyBwb3RlbnRpYWwgZmxh
a3kgdGVzdHMuCisgICAgICAgIGlmIGV2YWx1YXRvci50ZXN0c0ZhaWxlZC5zaXplID4gQHRyZWF0
RmFpbGluZ0FzRmxha3kubWF4RmFpbGluZworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZFRl
c3RzCisgICAgICAgIGVuZAorICAgICAgICBhZGp1c3RlZFRlc3RzID0gU2V0Lm5ldworICAgICAg
ICBldmFsdWF0b3IudGVzdHNGYWlsZWQuZWFjaCB7IHxwbGFufAorICAgICAgICAgICAgaWYgcGxh
bi5mbGFreS5uaWw/CisgICAgICAgICAgICAgICAgcGxhbi5mbGFreSA9IEZsYWt5Lm5ldyhAdHJl
YXRGYWlsaW5nQXNGbGFreS5wYXNzUGVyY2VudGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEB0cmVhdEZhaWxpbmdBc0ZsYWt5Lm1heFRyaWVzKQorICAgICAgICAg
ICAgICAgIGFkanVzdGVkVGVzdHMuYWRkKHBsYW4pCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
fQorICAgICAgICBpZiBhZGp1c3RlZFRlc3RzLnNpemUgPiAwCisgICAgICAgICAgICAjIEFkanVz
dCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJpZXMgdXB3YXJkcyBpZiB3ZSBqdXN0CisgICAgICAg
ICAgICAjIG1hcmtlZCBhIGZhaWxpbmcgdGVzdCBhcyBmbGFreS4gTm90ZSB0aGF0IGluZnJhc3Ry
dWN0dXJlCisgICAgICAgICAgICAjIGlzc3VlcyBtaWdodCBjYXVzZSB0ZXN0IGZhaWx1cmVzIHRv
IGJlIHJlcG9ydGVkIGF0IGxhdGVyCisgICAgICAgICAgICAjIGl0ZXJhdGlvbnMsIHNvIHdlIHVz
ZSAoKykgaW5zdGVhZCBvZiAobWF4KS4gVGhpcyBpcyBzYWZlCisgICAgICAgICAgICAjIGFzIHRo
ZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBpcyBjYXBwZWQgYnkKKyAgICAgICAgICAgICMgaXRlcmF0
aW9uc0NlaWxpbmcuCisgICAgICAgICAgICBuZXdNYXhJdGVyYXRpb25zID0gQG1heEl0ZXJhdGlv
bnMgKyBAdHJlYXRGYWlsaW5nQXNGbGFreS5tYXhUcmllcworICAgICAgICAgICAgaWYgQG1heEl0
ZXJhdGlvbnMgPCBuZXdNYXhJdGVyYXRpb25zCisgICAgICAgICAgICAgICAgc2V0TWF4SXRlcmF0
aW9ucyhuZXdNYXhJdGVyYXRpb25zKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBwdXRk
KCJhZGp1c3RGbGFraW5lc3NGb3JGYWlsaW5nVGVzdHMgI3tuZXdNYXhJdGVyYXRpb25zfSAoLT4j
e0BtYXhJdGVyYXRpb25zfSkgI3thZGp1c3RlZFRlc3RzLmNvbGxlY3QgeyB8cHwgcC50b19zIH19
IikKKyAgICAgICAgZW5kCisgICAgICAgICMgV2UganVzdCBtYXJrZWQgdGhvc2UgYXMgZmxha3kg
aW4gb3JkZXIgdG8gcmVydW4gdGhlbiwgc28KKyAgICAgICAgIyB0YWtlIHRoZW0gb2ZmIHRoZSBj
b21wbGV0ZWRUZXN0cy4KKyAgICAgICAgcmV0ID0gY29tcGxldGVkVGVzdHMgLSBhZGp1c3RlZFRl
c3RzCisgICAgICAgIHB1dGQoImNvbXBsZXRlZFRlc3RzOiAje3JldC5jb2xsZWN0IHsgfHB8IHAu
dG9fcyB9fSIpCisgICAgICAgIHJldAorICAgIGVuZAorICAgIGRlZiBsb29wCisgICAgICAgIHBy
ZXBhcmVBcnRpZmFjdHMoQHJlbW90ZUhvc3RzKQorICAgICAgICBzdGF0dXNNYXAgPSB7fQorICAg
ICAgICAjIFRoaXMgaXMgYSBoaWdoLWxldmVsIHJldHJ5IGxvb3AuIElmIGEgcmVtb3RlIGhvc3Qg
Z29lcyBhd2F5IGluCisgICAgICAgICMgdGhlIG1pZGRsZSBvZiBhIHJ1biBhbmQgZWl0aGVyIGRv
ZXNuJ3QgY29tZSBiYWNrIG9ubGluZSBvciBjb21lcworICAgICAgICAjIGJhY2sgaGF2aW5nIHJl
bW92ZWQgdGhlIHJlbW90ZSBkaXJlY3RvcnkgKCopLCBnZXRTdGF0dXNNYXAgd2lsbCBiZQorICAg
ICAgICAjIG1pc3NpbmcgcmVzdWx0cyBmb3IgdGhlc2UgdGVzdHMsIGFsbG93aW5nIHVzIHRvIHJl
dHJ5IHRoZW0gaW4KKyAgICAgICAgIyB0aGUgbmV4dCBpdGVyYXRpb24uCisgICAgICAgICMKKyAg
ICAgICAgIyAoKikgVGhpcyBtYXkgd2VsbCBoYXBwZW4gd2hlbiBydW5uaW5nIHRoZSB0ZXN0cyBv
biBlbWJlZGRlZAorICAgICAgICAjIGJvYXJkcyB0aGF0IHJlZ3VsYXJseSBjb3JydXB0IHRoZWly
IFNEIGNhcmQuIERlZmluaXRlbHkgYW4gaXNzdWUKKyAgICAgICAgIyBmb3IgdGhlIGNpMjAgYm9h
cmRzIHVzZWQgdG8gdGVzdCBNSVBTLgorICAgICAgICAxMDAwMDAudGltZXMgeyB8aXRlcmF0aW9u
fAorICAgICAgICAgICAgaWYgaXRlcmF0aW9uID49IEBtYXhJdGVyYXRpb25zCisgICAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgIyBAcmVtb3RlSG9zdHMg
KGFuZCB0aGVyZWZvcmUgcmVtb3RlSG9zdHMpIHdpbGwgYmUgbmlsCisgICAgICAgICAgICAjIHdo
ZW4gbm90IGV4ZWN1dGluZyBvbiByZW1vdGVzLgorICAgICAgICAgICAgcmVtb3RlSG9zdHMgPSBw
cmVwYXJlRXhlY3V0aW9uKEByZW1vdGVIb3N0cykKKyAgICAgICAgICAgIGlmIHJlbW90ZUhvc3Rz
IGFuZCByZW1vdGVIb3N0cy5zaXplID09IDAKKyAgICAgICAgICAgICAgICAjIEVpdGhlciBldmVy
eXRoaW5nIGlzIGRvd24sIG9yIGV2ZXJ5dGhpbmcgZ290CisgICAgICAgICAgICAgICAgIyByZWJv
b3RlZC4gSW4gdGhlIGxhdHRlciBjYXNlLCBhbGxvdyBlbm91Z2ggdGltZSBmb3IKKyAgICAgICAg
ICAgICAgICAjIHRoZSByZW1vdGUgYm9hcmRzIHRvIGJvb3QgdXAsIHRoZW4gcmV0cnkuCisgICAg
ICAgICAgICAgICAgd2FpdEludGVydmFsID0gNjAKKyAgICAgICAgICAgICAgICBsb2coIkFsbCBy
ZW1vdGUgaG9zdHMgZmFpbGVkLCByZXRyeWluZyBhZnRlciAje3dhaXRJbnRlcnZhbH1zIikKKyAg
ICAgICAgICAgICAgICBzbGVlcCh3YWl0SW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgbmV4dAor
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBleGVjdXRlVGVzdHMocmVtb3RlSG9zdHMpCisg
ICAgICAgICAgICBzdGF0dXNNYXAgPSB1cGRhdGVTdGF0dXNNYXAoaXRlcmF0aW9uLCBzdGF0dXNN
YXApCisgICAgICAgICAgICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0RXZhbHVhdG9yU2ltcGxlLm5l
dyhAcnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICAgICAgZXZhbHVhdG9yLnZpc2l0IQorCisg
ICAgICAgICAgICBjb21wbGV0ZWRUZXN0cyA9IGFkanVzdEZsYWtpbmVzc0ZvckZhaWxpbmdUZXN0
cyhpdGVyYXRpb24sIHN0YXR1c01hcCwgZXZhbHVhdG9yKQorICAgICAgICAgICAgIyBOQjogZXZh
bHVhdG9yLmNvbXBsZXRlZCBtYXkgbm93IGJlIG91dCBvZiBkYXRlLCB3ZSBuZWVkCisgICAgICAg
ICAgICAjIHRvIHVzZSBjb21wbGV0ZWRUZXN0cyBpbnN0ZWFkLgorCisgICAgICAgICAgICBicmVh
ayB1bmxlc3MgY29tcGxldGVkVGVzdHMuc2l6ZSAhPSBAcnVubGlzdC5zaXplCisgICAgICAgICAg
ICBpZiBjb21wbGV0ZWRUZXN0cy5zaXplID4gQHJ1bmxpc3Quc2l6ZQorICAgICAgICAgICAgICAg
IHJhaXNlICJUZXN0IGNvdW50IG1pc21hdGNoOiAje2NvbXBsZXRlZFRlc3RzLnNpemV9ID4gI3tA
cnVubGlzdC5zaXplfSIKKyAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAjIFJlZ2VuZXJh
dGUgdGhlIGxpc3RzIG9mIHRlc3RzIHRvIHJ1bgorICAgICAgICAgICAgcmVmcmVzaEV4ZWN1dGlv
bihAcnVubGlzdCwgQHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRUZXN0cykKKworICAgICAgICAgICAg
bnVtRmxha3kgPSBAcnVubGlzdC5zaXplIC0gY29tcGxldGVkVGVzdHMuc2l6ZSAtIGV2YWx1YXRv
ci5taXNzaW5nLnNpemUKKyAgICAgICAgICAgIHRlc3RzSW5mbyA9ICJjb21wbGV0ZWQgI3tjb21w
bGV0ZWRUZXN0cy5zaXplfS8je0BydW5saXN0LnNpemV9ICgje251bUZsYWt5fSBmbGFreSwgI3tl
dmFsdWF0b3IubWlzc2luZy5zaXplfSBtaXNzaW5nKSIKKyAgICAgICAgICAgIHJlbW90ZUhvc3Rz
SW5mbyA9ICIiCisgICAgICAgICAgICBpZiByZW1vdGVIb3N0cworICAgICAgICAgICAgICAgIHJl
bW90ZUhvc3RzSW5mbyA9ICIsICN7cmVtb3RlSG9zdHMuc2l6ZX0vI3tAcmVtb3RlSG9zdHMuc2l6
ZX0gaG9zdHMgbGl2ZSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgbG9nKCJBZnRlciB0
cnkgI3tpdGVyYXRpb24gKyAxfS8je0BtYXhJdGVyYXRpb25zfTogI3t0ZXN0c0luZm99I3tyZW1v
dGVIb3N0c0luZm99IikKKyAgICAgICAgfQorICAgICAgICBzdGF0dXNNYXAKKyAgICBlbmQKK2Vu
ZAorCittb2R1bGUgRXhlY3V0b3JTZWxmVGVzdHMKKyAgICBGaW5hbFRlc3RSZXN1bHQgPSBTdHJ1
Y3QubmV3KDpyZXN1bHQpCisgICAgVGVzdFJlc3VsdCA9IFN0cnVjdC5uZXcoOnJlc3VsdHMpCisg
ICAgSXRlcmF0aW9uID0gU3RydWN0Lm5ldyg6dGVzdFJlc3VsdHMpCisgICAgVGVzdENhc2UgPSBT
dHJ1Y3QubmV3KDp0ZXN0c1dpdGhGbGFreSwgOml0ZXJhdGlvbnMsIDpleHBlY3RlZFRlc3RSZXN1
bHRzLCA6dHJlYXRGYWlsaW5nQXNGbGFreSkKKyAgICBNT0NLX1RFU1RfRkFNSUxZID0gImYiCisg
ICAgSVRFUkFUSU9OX0xJTUlUUyA9IE9wZW5TdHJ1Y3QubmV3KDppbmZyYUl0ZXJhdGlvbnNGbG9v
ciA9PiAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aXRlcmF0aW9u
c0NlaWxpbmcgPT4gOCkKKyAgICBjbGFzcyBNb2NrVGVzdHNFeGVjdXRvciA8IEJhc2VUZXN0c0V4
ZWN1dG9yCisgICAgICAgIGF0dHJfcmVhZGVyIDpleGVjdXRlZEl0ZXJhdGlvbnMKKyAgICAgICAg
ZGVmIGluaXRpYWxpemUocnVubGlzdCwgaXRlcmF0aW9uUmVzdWx0cywgbWF4SXRlcmF0aW9uc0Jv
dW5kcywgdHJlYXRGYWlsaW5nQXNGbGFreSwgbG9nU3RyZWFtKQorICAgICAgICAgICAgc3VwZXIo
cnVubGlzdCwgW10sIG5pbCwgbWF4SXRlcmF0aW9uc0JvdW5kcywgdHJlYXRGYWlsaW5nQXNGbGFr
eSwgbG9nU3RyZWFtKQorICAgICAgICAgICAgQGl0ZXJhdGlvblJlc3VsdHMgPSBpdGVyYXRpb25S
ZXN1bHRzCisgICAgICAgICAgICBAZXhlY3V0ZWRJdGVyYXRpb25zID0gMAorICAgICAgICBlbmQK
KyAgICAgICAgZGVmIHByZXBhcmVBcnRpZmFjdHMocmVtb3RlSG9zdHMpCisgICAgICAgIGVuZAor
ICAgICAgICBkZWYgcHJlcGFyZUV4ZWN1dGlvbihyZW1vdGVIb3N0cykKKyAgICAgICAgICAgIHJl
bW90ZUhvc3RzCisgICAgICAgIGVuZAorICAgICAgICBkZWYgZXhlY3V0ZVRlc3RzKHJlbW90ZUhv
c3RzKQorICAgICAgICBlbmQKKyAgICAgICAgZGVmIHVwZGF0ZVN0YXR1c01hcChpdGVyYXRpb24s
IHN0YXR1c01hcCkKKyAgICAgICAgICAgIGlmIGl0ZXJhdGlvbiA+PSBAaXRlcmF0aW9uUmVzdWx0
cy5zaXplCisgICAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJUcnlpbmcgdG8gZXhlY3V0ZSBp
dGVyYXRpb24gI3tpdGVyYXRpb259IGJ1dCBvbmx5IGhhdmUgI3tAaXRlcmF0aW9uUmVzdWx0cy5z
aXplfSBpdGVyYXRpb24gcmVzdWx0cyBhdmFpbGFibGUiKQorICAgICAgICAgICAgICAgIHJhaXNl
ICJTZWxmIHRlc3QgZXJyb3I6IGluc3VmZmljaWVudCBpdGVyYXRpb25zIgorICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICBAZXhlY3V0ZWRJdGVyYXRpb25zICs9IDEKKyAgICAgICAgICAgIEBp
dGVyYXRpb25SZXN1bHRzW2l0ZXJhdGlvbl0uZWFjaCB7IHxpdGVyYXRpb258CisgICAgICAgICAg
ICAgICAgaXRlcmF0aW9uLmVhY2hfd2l0aF9pbmRleCB7IHx0ZXN0UmVzdWx0LCB0ZXN0SW5kZXh8
CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gQHJ1bmxpc3RbdGVzdEluZGV4XS5pbmRleAor
ICAgICAgICAgICAgICAgICAgICAjIEJlY2F1c2Ugb2YgaW5mcmEgaXNzdWVzLCBhIHRlc3QgbWln
aHQgaGF2ZSBtdWx0aXBsZSByZXN1bHRzLgorICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0
LnJlc3VsdHMuZWFjaCB7IHxyZXN1bHR8CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0g
Ii4vI3tTVEFUVVNfRklMRV9QUkVGSVh9I3tpbmRleH0gI3skcnVuVW5pcXVlSWR9IDAgI3tyZXN1
bHR9IgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1N0YXR1c0xpbmUoc3RhdHVzTWFw
LCBsaW5lKQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcHV0ZCgic3RhdHVzTWFwOiAje3N0YXR1c01hcH0iKQorICAg
ICAgICAgICAgc3RhdHVzTWFwCisgICAgICAgIGVuZAorICAgICAgICBkZWYgcmVmcmVzaEV4ZWN1
dGlvbihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkVGVzdHMpCisgICAgICAgIGVuZAor
ICAgIGVuZAorCisgICAgZGVmIEV4ZWN1dG9yU2VsZlRlc3RzLnJ1bgorICAgICAgICB0cmYgPSBU
ZXN0UmVzdWx0Lm5ldyhbU1RBVFVTX0ZJTEVfRkFJTF0pCisgICAgICAgIHRycCA9IFRlc3RSZXN1
bHQubmV3KFtTVEFUVVNfRklMRV9QQVNTXSkKKyAgICAgICAgdHJlID0gVGVzdFJlc3VsdC5uZXco
W10pCisgICAgICAgIGZ0cnAgPSBGaW5hbFRlc3RSZXN1bHQubmV3KFNUQVRVU19GSUxFX1BBU1Mp
CisgICAgICAgIGZ0cmYgPSBGaW5hbFRlc3RSZXN1bHQubmV3KFNUQVRVU19GSUxFX0ZBSUwpCisg
ICAgICAgIGZ0cmUgPSBGaW5hbFRlc3RSZXN1bHQubmV3KG5pbCkKKyAgICAgICAgWworICAgICAg
ICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sICMgMiB0ZXN0cyAodDAsIHQxKSwgbmVpdGhl
ciBmbGFreQorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSXRlcmF0aW9uLm5ldygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnAsICMgdDAgcGFzc2Vk
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJwLCAjIHQxIHBhc3NlZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSksCisgICAgICAg
ICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwgIyAyIHRlc3RzICh0MCwgdDEpLCBuZWl0aGVy
IGZsYWt5CisgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRyZl0pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cnAsIGZ0cmZdKSwKKyAgICAgICAg
ICAgICMgMSB0ZXN0IGdpdmVzIG5vIHJlc3VsdCwgbmVlZCBhIHNlY29uZCBpdGVyYXRpb24sIGJv
dGggZmluYWxseSBwYXNzCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRycF0pLAorICAgICAgICAgICAgIyAxIHRl
c3QgZmFpbHMsIDEgZ2l2ZXMgbm8gcmVzdWx0LCBuZWVkIGEgc2Vjb25kIGl0ZXJhdGlvbiwgb25l
IGZpbmFsbHkgcGFzc2VzCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RyZiwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbZnRyZiwgZnRycF0pLAorICAgICAgICAgICAgIyAxIHRl
c3QgcGFzc2VzLCAxIGdpdmVzIG5vIHJlc3VsdCwgbmVlZCBhIHNlY29uZCBpdGVyYXRpb24sIG9u
ZSBmaW5hbGx5IHBhc3NlcworICAgICAgICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
dGVyYXRpb24ubmV3KFt0cnAsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
dGVyYXRpb24ubmV3KFt0cmUsIHRyZl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cnAsIGZ0cmZdKSwKKyAgICAgICAgICAgIFRlc3RD
YXNlLm5ldyhbbmlsLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBGaXJzdCBpdGVyYXRpb24gZG9lc24ndCBwcm9kdWNlIGFu
eSByZXN1bHRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0
cmUsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0
cmYsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0
cmUsIHRyZl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgW2Z0cmYsIGZ0cmZdKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0LCB3aGVuIG5v
IGZsYWtpZXMgYXJlIHByZXNlbnQsIHdlIHN0b3AgYXQKKyAgICAgICAgICAgICMgaW5mcmFJdGVy
YXRpb25zRmxvb3Igd2hlbiBubyByZXN1bHRzIGNvbWUgaW4uCisgICAgICAgICAgICBUZXN0Q2Fz
ZS5uZXcoW25pbCwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cmVdKV0gKiBJVEVSQVRJT05fTElNSVRTLmluZnJhSXRlcmF0aW9uc0Zsb29yLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJlLCBmdHJlXSksCisgICAgICAgICAgICAjIFRl
c3QgdGhlIG1heEl0ZXJhdGlvbnMgYWRqdXN0bWVudCB3b3JrcyBhcyBleHBlY3RlZCBpbgorICAg
ICAgICAgICAgIyB0aGUgcHJlc2VuY2Ugb2YgYSBzdGF0aWMgZmxha3kuCisgICAgICAgICAgICBU
ZXN0Q2FzZS5uZXcoW0ZsYWt5Lm5ldygwLjM5LCA0KSwgbmlsXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2luY2Ugd2UgaGF2ZSBh
IGZsYWt5IHRlc3QsIHRoZSBtYXhJdGVyYXRpb25zIGdldHMgYWRqdXN0ZWQgdG8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBJVEVSQVRJT05fTElNSVRTLmluZnJhSXRlcmF0aW9uc0Zs
b29yICArIEZsYWt5Lm1heFRyaWVzID0gNy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJmLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSksCisgICAgICAgICAgICAjIFRl
c3QgdGhhdCBhIGZsYWt5IGNhbiBmaW5pc2ggZWFybHkuCisgICAgICAgICAgICBUZXN0Q2FzZS5u
ZXcoW0ZsYWt5Lm5ldygwLjQsIDQpLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtm
dHJwLCBmdHJwXSksCisgICAgICAgICAgICAjIFNhbWUsIHdpdGggbW9yZSB2YXJpYWJpbGl0eS4K
KyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJw
LCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJl
LCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJl
LCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJl
LCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJl
LCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJl
LCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIFtmdHJwLCBmdHJwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuU3RydWN0
Lm5ldyg6cGFzc1BlcmNlbnRhZ2UgPT4gMC40LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDptYXhUcmllcyA9PiA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDptYXhGYWlsaW5nID0+IDMpKSwKKyAgICAgICAgICAgICMgU2FtZSwgd2l0
aCBkaWZmZXJlbnQgdmFyaWFiaWxpdHkuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwg
bmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRyZl0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQZXJjZW50YWdlID0+IDAuNCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gNiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiAzKSks
CisgICAgICAgICAgICAjIFRlc3QgdGhhdCBhIGZsYWt5IGZvciB3aGljaCBub3QgZW5vdWdoIHJl
c3VsdHMgY29tZSBpbiBpcyBub3QgbWFya2VkIGFzIGNvbXBsZXRlZC4KKyAgICAgICAgICAgIFRl
c3RDYXNlLm5ldyhbbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZl0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEl0ZXJhdGlvbi5uZXcoW3RyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
dGVyYXRpb24ubmV3KFt0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0
aW9uLm5ldyhbdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5u
ZXcoW3RyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgW2Z0cmVdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3
KDpwYXNzUGVyY2VudGFnZSA9PiAwLjQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDptYXhUcmllcyA9PiA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDptYXhGYWlsaW5nID0+IDEpKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0IChz
dGF0aWNhbGx5KSBmbGFreSB0ZXN0cyBhcmVuJ3QgYWRqdXN0ZWQKKyAgICAgICAgICAgIFRlc3RD
YXNlLm5ldyhbRmxha3kubmV3KDAuNSwgMyksIG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmYsIHRy
cF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRy
ZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmYsIHRy
ZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgW2Z0cmYsIGZ0cnBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3
KDpwYXNzUGVyY2VudGFnZSA9PiAwLjcsICMgPiAyLzMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gNiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiAzKSksCisgICAgICAgICAgICAjIFRlc3Qg
dGhhdCB3ZSByZXNwZWN0IG1heEZhaWxpbmcuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25p
bCwgbmlsLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmLCB0cmYsIHRyZl0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cmYsIGZ0cmYs
IGZ0cmZdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3KDpwYXNzUGVy
Y2VudGFnZSA9PiAwLjcsICMgPiAyLzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6bWF4VHJpZXMgPT4gNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6bWF4RmFpbGluZyA9PiAyKSksCisgICAgICAgICAgICAjIFRlc3QgdGhhdCB3ZSBo
YWx0IGF0IG1heEl0ZXJhdGlvbnMgKDMgKyA1ID0gOCkgaWYgbm8gcmVzdWx0cyBjb21lIGluLgor
ICAgICAgICAgICAgVGVzdENhc2UubmV3KFtGbGFreS5uZXcoMC41LCA1KSwgbmlsXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBbZnRyZSwgZnRycF0pLAorICAgICAgICBdLmVhY2hfd2l0aF9p
bmRleCB7CisgICAgICAgICAgICB8dGVzdGNhc2UsIHRlc3RjYXNlSW5kZXh8CisgICAgICAgICAg
ICBydW5saXN0ID0gW10KKyAgICAgICAgICAgIHB1dGQoIj09PT4gVGVzdGNhc2UgI3t0ZXN0Y2Fz
ZUluZGV4fSIpCisgICAgICAgICAgICB0ZXN0Y2FzZS50ZXN0c1dpdGhGbGFreS5lYWNoX3dpdGhf
aW5kZXggeyB8Zmxha3ksIGluZGV4fAorICAgICAgICAgICAgICAgIHBsYW4gPSBCYXNlUGxhbi5t
b2NrKE1PQ0tfVEVTVF9GQU1JTFksICJ0I3tpbmRleH0iLCBmbGFreSkKKyAgICAgICAgICAgICAg
ICBydW5saXN0IDw8IHBsYW4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1dGQoInJ1bmxp
c3Q6ICN7cnVubGlzdC5jb2xsZWN0IHsgfHB8IHAudG9fcyB9fSwgZXhwZWN0ZWQ6ICN7dGVzdGNh
c2UuZXhwZWN0ZWRUZXN0UmVzdWx0c30iKQorICAgICAgICAgICAgZXhlY3V0b3IgPSBNb2NrVGVz
dHNFeGVjdXRvci5uZXcocnVubGlzdCwgdGVzdGNhc2UuaXRlcmF0aW9ucywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElURVJBVElPTl9MSU1JVFMsIHRlc3Rj
YXNlLnRyZWF0RmFpbGluZ0FzRmxha3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkdGVzdHNEZWJ1Z1N0cmVhbSkKKyAgICAgICAgICAgIHN0YXR1c01hcCA9
IGV4ZWN1dG9yLmxvb3AKKyAgICAgICAgICAgIGlmIGV4ZWN1dG9yLmV4ZWN1dGVkSXRlcmF0aW9u
cyAhPSB0ZXN0Y2FzZS5pdGVyYXRpb25zLnNpemUKKyAgICAgICAgICAgICAgICAjIFRoZSB0ZXN0
Y2FzZSBzaG91bGQgcHJvdmlkZSBleGFjdGx5IGFzIG1hbnkKKyAgICAgICAgICAgICAgICAjIGl0
ZXJhdGlvbiByZXN1bHRzIGFzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICByYWlzZSAiRXhlY3V0
ZWQgI3tleGVjdXRvci5leGVjdXRlZEl0ZXJhdGlvbnN9LCAje3Rlc3RjYXNlLml0ZXJhdGlvbnMu
c2l6ZX0gZ2l2ZW4iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGV4cGVjdENvbXBsZXRl
ZCA9IFNldC5uZXcocnVubGlzdC5zZWxlY3QgeyB8cGxhbnwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vdCB0ZXN0Y2FzZS5leHBlY3RlZFRlc3RSZXN1bHRzW3J1
bmxpc3QuaW5kZXgocGxhbildLnJlc3VsdC5uaWw/CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0pCisKKyAgICAgICAgICAgIGV2YWx1YXRvciA9IFRlc3RSZXN1bHRFdmFs
dWF0b3JTaW1wbGUubmV3KHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgICAgIGV2YWx1YXRv
ci52aXNpdCEKKworICAgICAgICAgICAgdmVyaWZ5Q29tcGxldGVkVGVzdHNNYXRjaEV4cGVjdGVk
KHN0YXR1c01hcCwgZXZhbHVhdG9yLmNvbXBsZXRlZCwgZXhwZWN0Q29tcGxldGVkKQorCisgICAg
ICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9IGZhbHNlCisgICAgICAgICAgICBydW5saXN0LmVhY2hf
d2l0aF9pbmRleCB7IHxwbGFuLCBpbmRleHwKKyAgICAgICAgICAgICAgICBjYXNlIHRlc3RjYXNl
LmV4cGVjdGVkVGVzdFJlc3VsdHNbaW5kZXhdLnJlc3VsdAorICAgICAgICAgICAgICAgIHdoZW4g
bmlsCisgICAgICAgICAgICAgICAgICAgIGlmIGV2YWx1YXRvci50ZXN0c1Bhc3NlZC5pbmNsdWRl
PyhwbGFuKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2VGYWlsZWQgPSB0cnVlCisg
ICAgICAgICAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlRlc3QgI3tpbmRleH0gc2hvdWxk
IG5vdCBoYXZlIGNvbXBsZXRlZCBidXQgcGFzc2VkIikKKyAgICAgICAgICAgICAgICAgICAgZWxz
aWYgZXZhbHVhdG9yLnRlc3RzRmFpbGVkLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICRz
dGRlcnIucHV0cygiVGVzdCAje2luZGV4fSBzaG91bGQgbm90IGhhdmUgY29tcGxldGVkIGJ1dCBm
YWlsZWQiKQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICB3aGVuIFNU
QVRVU19GSUxFX1BBU1MKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGV2YWx1YXRvci50ZXN0
c1Bhc3NlZC5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2VG
YWlsZWQgPSB0cnVlCisgICAgICAgICAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlRlc3Qg
I3tpbmRleH0gc2hvdWxkIGhhdmUgcGFzc2VkIGJ1dCBkaWRuJ3QiKQorICAgICAgICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgICAgICB3aGVuIFNUQVRVU19GSUxFX0ZBSUwKKyAgICAgICAg
ICAgICAgICAgICAgaWYgbm90IGV2YWx1YXRvci50ZXN0c0ZhaWxlZC5pbmNsdWRlPyhwbGFuKQor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2VGYWlsZWQgPSB0cnVlCisgICAgICAgICAg
ICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlRlc3QgI3tpbmRleH0gc2hvdWxkIGhhdmUgZmFp
bGVkIGJ1dCBkaWRuJ3QiKQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJhaXNlICJDYW4ndCBnZXQgaGVyZSIKKyAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIHRlc3RjYXNlRmFp
bGVkCisgICAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJzdGF0dXNNYXAgPSAje3N0YXR1c01h
cH0iKQorICAgICAgICAgICAgICAgIHJhaXNlICJTZWxmIHRlc3QgZmFpbHVyZSIKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB9CisgICAgZW5kCitlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9yLnJiIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFs
dWF0b3IucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFjZGZmYmQzNWRjYTAzZGY0ZTI4YzgwMjA5NWIwMWM5M2Jj
NmM3NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3Ry
ZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9yLnJiCkBAIC0wLDAgKzEsMjkzIEBACisjIENv
cHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjIFZpc2l0cyB0aGUgdGVzdHMgaW4gdGhlIHJ1bmxpc3QgYW5kIGludm9rZXMgYSBu
dW1iZXIgb2YKKyMgY2FsbGJhY2tzLiBVc2VkIHZpYSBzdWJjbGFzc2luZy4KK2NsYXNzIFRlc3RS
ZXN1bHRFdmFsdWF0b3IKKyAgICBkZWYgaW5pdGlhbGl6ZShydW5saXN0LCBzdGF0dXNNYXApCisg
ICAgICAgIEBydW5saXN0ID0gcnVubGlzdAorICAgICAgICBAc3RhdHVzTWFwID0gc3RhdHVzTWFw
CisgICAgZW5kCisgICAgZGVmIG5vUmVzdWx0KHBsYW4pCisgICAgICAgICMgWFhYOiBtYXliZSBm
b2N1cyBvbiBpbmNvbXBsZXRlIGluIHJlcG9ydGluZz8KKyAgICBlbmQKKyAgICBkZWYgcGFzc2Vk
KHBsYW4pCisgICAgZW5kCisgICAgZGVmIGZhaWxlZChwbGFuKQorICAgIGVuZAorICAgIGRlZiB3
YXNGbGFreUFuZFBhc3NlZChwbGFuLCBzdWNjZXNzZXMsIHRyaWVzKQorICAgIGVuZAorICAgIGRl
ZiB2aXNpdGluZyhwbGFuKQorICAgIGVuZAorICAgIGRlZiB2aXNpdCEKKyAgICAgICAgQHJ1bmxp
c3QuZWFjaCB7CisgICAgICAgICAgICB8cGxhbnwKKyAgICAgICAgICAgIHZpc2l0aW5nKHBsYW4p
CisgICAgICAgICAgICBpZiBub3QgQHN0YXR1c01hcC5oYXNfa2V5PyhwbGFuLmluZGV4KQorICAg
ICAgICAgICAgICAgIG5vUmVzdWx0KHBsYW4pCisgICAgICAgICAgICAgICAgbmV4dAorICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICBzdGF0dXNlcyA9IEBzdGF0dXNNYXBbcGxhbi5pbmRleF0K
KyAgICAgICAgICAgIHRlc3RXYXNTdWNjZXNzZnVsID0gbmlsCisgICAgICAgICAgICBpZiBwbGFu
LmZsYWt5Lm5pbD8KKyAgICAgICAgICAgICAgICAjIElmIGFueSBvZiB0aGUgcmVzdWx0cyB3ZSBn
b3Qgd2FzIGEgcGFzcywgY29uc2lkZXIgdGhlCisgICAgICAgICAgICAgICAgIyB0ZXN0IHN1Y2Nl
c3NmdWwuIFRoZSBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCwgdW5sZXNzIGEKKyAgICAgICAgICAg
ICAgICAjIHRlc3QgaXMgbWFya2VkIGFzIGZsYWt5LCBmYWlsdXJlcyBhcmUgYmVjYXVzZSBvZgor
ICAgICAgICAgICAgICAgICMgaW5mcmFzdHJ1Y3R1cmUgaXNzdWVzICh3aGljaCBpcyB3aHkgdGhl
IHRlc3Qgd2FzIHJ1bgorICAgICAgICAgICAgICAgICMgbXVsdGlwbGUgdGltZXMgaW4gdGhlIGZp
cnN0IHBsYWNlKS4KKyAgICAgICAgICAgICAgICB0ZXN0V2FzU3VjY2Vzc2Z1bCA9IHN0YXR1c2Vz
LmluY2x1ZGU/KFNUQVRVU19GSUxFX1BBU1MpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFdhc1N1Y2Nlc3NmdWwgPSBwbGFuLmZsYWt5LnJlc3VsdChzdGF0dXNlcykKKyAg
ICAgICAgICAgICAgICBpZiB0ZXN0V2FzU3VjY2Vzc2Z1bC5uaWw/CisgICAgICAgICAgICAgICAg
ICAgICMgTm90IGNvbXBsZXRlZCB5ZXQKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBpZiB0ZXN0V2FzU3Vj
Y2Vzc2Z1bAorICAgICAgICAgICAgICAgIHBhc3NlZChwbGFuKQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGZhaWxlZChwbGFuKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAg
ICBucmVzdWx0cyA9IHN0YXR1c2VzLnVuaXEuc2l6ZQorICAgICAgICAgICAgaWYgbnJlc3VsdHMg
PCAxCisgICAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJVbmV4cGVjdGVkIG51bWJlciBvZiBy
ZXN1bHRzOiAje25yZXN1bHRzfSBmb3IgcGxhbiAje3BsYW59IikKKyAgICAgICAgICAgICAgICBy
YWlzZSAiVW5leHBlY3RlZCBudW1iZXIgb2YgcmVzdWx0cyIKKyAgICAgICAgICAgIGVsc2lmIG5y
ZXN1bHRzICE9IDEgYW5kIHRlc3RXYXNTdWNjZXNzZnVsCisgICAgICAgICAgICAgICAgd2FzRmxh
a3lBbmRQYXNzZWQocGxhbiwgc3RhdHVzZXMuY291bnQoU1RBVFVTX0ZJTEVfUEFTUyksIHN0YXR1
c2VzLnNpemUpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKKyMg
U2ltcGxlIGJlYW4gY291bnRpbmcgY2xhc3Mgd2l0aCBubyBzaWRlLWVmZmVjdHMuCitjbGFzcyBU
ZXN0UmVzdWx0RXZhbHVhdG9yU2ltcGxlIDwgVGVzdFJlc3VsdEV2YWx1YXRvcgorICAgIGF0dHJf
cmVhZGVyIDp0ZXN0c1Bhc3NlZCwgOnRlc3RzRmFpbGVkCisgICAgZGVmIGluaXRpYWxpemUocnVu
bGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBzdXBlcihydW5saXN0LCBzdGF0dXNNYXApCisgICAg
ICAgIEB0ZXN0c1Bhc3NlZCA9IFNldC5uZXcKKyAgICAgICAgQHRlc3RzRmFpbGVkID0gU2V0Lm5l
dworICAgICAgICBAbm9SZXN1bHQgPSBTZXQubmV3CisgICAgICAgIEBhbGwgPSBTZXQubmV3Cisg
ICAgZW5kCisgICAgZGVmIHZpc2l0aW5nKHBsYW4pCisgICAgICAgIEBhbGwuYWRkKHBsYW4pCisg
ICAgZW5kCisgICAgZGVmIHBhc3NlZChwbGFuKQorICAgICAgICBAdGVzdHNQYXNzZWQuYWRkKHBs
YW4pCisgICAgZW5kCisgICAgZGVmIGZhaWxlZChwbGFuKQorICAgICAgICBAdGVzdHNGYWlsZWQu
YWRkKHBsYW4pCisgICAgZW5kCisgICAgZGVmIG5vUmVzdWx0KHBsYW4pCisgICAgICAgIEBub1Jl
c3VsdC5hZGQocGxhbikKKyAgICBlbmQKKyAgICBkZWYgY29tcGxldGVkCisgICAgICAgIEB0ZXN0
c1Bhc3NlZCB8IEB0ZXN0c0ZhaWxlZAorICAgIGVuZAorICAgIGRlZiBtaXNzaW5nCisgICAgICAg
IEBub1Jlc3VsdAorICAgIGVuZAorZW5kCisKK2NsYXNzIFJlc3VsdHNXcml0ZXIKKyAgICBkZWYg
aW5pdGlhbGl6ZQorICAgICAgICBAZmlsZXMgPSB7fQorICAgIGVuZAorICAgIGRlZiBhcHBlbmQo
ZmlsZW5hbWUsIHMpCisgICAgICAgIGlmIG5vdCBAZmlsZXMuaGFzX2tleT8oZmlsZW5hbWUpCisg
ICAgICAgICAgICBAZmlsZXNbZmlsZW5hbWVdID0gRmlsZS5vcGVuKCRvdXRwdXREaXIgKyBmaWxl
bmFtZSwgImEiKQorICAgICAgICBlbmQKKyAgICAgICAgQGZpbGVzW2ZpbGVuYW1lXS5wdXRzKHMp
CisgICAgZW5kCisgICAgZGVmIGFwcGVuZEZhaWx1cmUocGxhbikKKyAgICAgICAgYXBwZW5kKCJm
YWlsZWQiLCBwbGFuLm5hbWUpCisgICAgZW5kCisgICAgZGVmIGFwcGVuZFBhc3MocGxhbikKKyAg
ICAgICAgYXBwZW5kKCJwYXNzZWQiLCBwbGFuLm5hbWUpCisgICAgZW5kCisgICAgZGVmIGFwcGVu
ZE5vUmVzdWx0KHBsYW4pCisgICAgICAgIGFwcGVuZCgibm9yZXN1bHQiLCBwbGFuLm5hbWUpCisg
ICAgZW5kCisgICAgZGVmIGFwcGVuZEZsYWt5KHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMpCisgICAg
ICAgIGFwcGVuZCgiZmxha3kiLCAiI3twbGFuLm5hbWV9ICN7c3VjY2Vzc2VzfSAje3RyaWVzfSIp
CisgICAgZW5kCisgICAgZGVmIGFwcGVuZFJlc3VsdChwbGFuLCBkaWRQYXNzKQorICAgICAgICBh
cHBlbmQoInJlc3VsdHMiLCAiI3twbGFuLm5hbWV9OiAje2RpZFBhc3MgPyAnUEFTUycgOiAnRkFJ
TCd9IikKKyAgICBlbmQKKyAgICBkZWYgY2xvc2UKKyAgICAgICAgQGZpbGVzLmVhY2hfdmFsdWUg
eyB8ZnwKKyAgICAgICAgICAgIGYuY2xvc2UKKyAgICAgICAgfQorICAgICAgICBAZmlsZXMuY2xl
YXIKKyAgICBlbmQKK2VuZAorCisjIEZpbmFsIGFjY291bnRpbmcgb2YgcmVzdWx0cy4KK2NsYXNz
IFRlc3RSZXN1bHRFdmFsdWF0b3JGaW5hbCA8IFRlc3RSZXN1bHRFdmFsdWF0b3IKKyAgICBhdHRy
X3JlYWRlciA6bm9yZXN1bHQsIDpmYW1pbHlNYXAKKyAgICBkZWYgaW5pdGlhbGl6ZShydW5saXN0
LCBzdGF0dXNNYXApCisgICAgICAgIHN1cGVyKHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAg
QG5vcmVzdWx0ID0gMAorICAgICAgICBAZmFtaWx5TWFwID0ge30KKyAgICAgICAgQHdyaXRlciA9
IFJlc3VsdHNXcml0ZXIubmV3CisgICAgZW5kCisgICAgZGVmIG5vUmVzdWx0KHBsYW4pCisgICAg
ICAgIEB3cml0ZXIuYXBwZW5kTm9SZXN1bHQocGxhbikKKyAgICAgICAgQG5vcmVzdWx0ICs9IDEK
KyAgICBlbmQKKyAgICBkZWYgcGFzc2VkKHBsYW4pCisgICAgICAgIEB3cml0ZXIuYXBwZW5kUGFz
cyhwbGFuKQorICAgICAgICBhcHBlbmRSZXN1bHQocGxhbiwgdHJ1ZSkKKyAgICAgICAgYWRkVG9G
YW1pbHlNYXAocGxhbiwgIlBBU1MiKQorICAgIGVuZAorICAgIGRlZiBmYWlsZWQocGxhbikKKyAg
ICAgICAgQHdyaXRlci5hcHBlbmRGYWlsdXJlKHBsYW4pCisgICAgICAgIGFwcGVuZFJlc3VsdChw
bGFuLCBmYWxzZSkKKyAgICAgICAgYWRkVG9GYW1pbHlNYXAocGxhbiwgIkZBSUwiKQorICAgIGVu
ZAorICAgIGRlZiB3YXNGbGFreUFuZFBhc3NlZChwbGFuLCBzdWNjZXNzZXMsIHRyaWVzKQorICAg
ICAgICBAd3JpdGVyLmFwcGVuZEZsYWt5KHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMpCisgICAgZW5k
CisgICAgcHJpdmF0ZQorICAgIGRlZiBhcHBlbmRSZXN1bHQocGxhbiwgc3VjY2Vzc2Z1bCkKKyAg
ICAgICAgQHdyaXRlci5hcHBlbmRSZXN1bHQocGxhbiwgc3VjY2Vzc2Z1bCkKKyAgICBlbmQKKyAg
ICBkZWYgYWRkVG9GYW1pbHlNYXAocGxhbiwgcmVzdWx0KQorICAgICAgICB1bmxlc3MgZmFtaWx5
TWFwW3BsYW4uZmFtaWx5XQorICAgICAgICAgICAgZmFtaWx5TWFwW3BsYW4uZmFtaWx5XSA9IFtd
CisgICAgICAgIGVuZAorICAgICAgICBmYW1pbHlNYXBbcGxhbi5mYW1pbHldIDw8IHsgOnJlc3Vs
dCA9PiByZXN1bHQsIDpwbGFuID0+IHBsYW59CisgICAgZW5kCitlbmQKKworZGVmIHZlcmlmeUNv
bXBsZXRlZFRlc3RzTWF0Y2hFeHBlY3RlZChzdGF0dXNNYXAsIGNvbXBsZXRlZCwgZXhwZWN0ZWQp
CisgICAgaWYgY29tcGxldGVkICE9IGV4cGVjdGVkCisgICAgICAgIHVuZXhwZWN0ZWRseUNvbXBs
ZXRlZCA9IChjb21wbGV0ZWQgLSBleHBlY3RlZCkuY29sbGVjdCB7IHxwbGFufAorICAgICAgICAg
ICAgIiMje3BsYW4uaW5kZXh9OiAje3N0YXR1c01hcFtwbGFuLmluZGV4XX0iCisgICAgICAgIH0u
am9pbigiIHwgIikKKyAgICAgICAgJHN0ZGVyci5wdXRzKCJVbmV4cGVjdGVkbHkgY29tcGxldGVk
OiAje3VuZXhwZWN0ZWRseUNvbXBsZXRlZH0iKQorICAgICAgICBleHBlY3RlZEJ1dE5vdENvbXBs
ZXRlZCA9IChleHBlY3RlZCAtIGNvbXBsZXRlZCkuY29sbGVjdCB7IHxwbGFufAorICAgICAgICAg
ICAgIiMje3BsYW4uaW5kZXh9OiAje3N0YXR1c01hcFtwbGFuLmluZGV4XX0iCisgICAgICAgIH0u
am9pbigiIHwgIikKKyAgICAgICAgJHN0ZGVyci5wdXRzKCJFeHBlY3RlZCBidXQgbm90IGNvbXBs
ZXRlZDogI3tleHBlY3RlZEJ1dE5vdENvbXBsZXRlZH0iKQorICAgICAgICByYWlzZSAibWlzbWF0
Y2giCisgICAgZW5kCitlbmQKKworbW9kdWxlIFRlc3RSZXN1bHRFdmFsdWF0b3JTZWxmVGVzdHMK
KyAgICBkZWYgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5zZWxmVGVzdFRlc3RSZXN1bHRF
dmFsdWF0b3IKKyAgICAgICAgcnVubGlzdCA9IFtdCisgICAgICAgIHN0YXR1c01hcCA9IHt9Cisg
ICAgICAgIGV4cGVjdGVkUGFzcyA9IFNldC5uZXcKKyAgICAgICAgZXhwZWN0ZWRGYWlsID0gU2V0
Lm5ldworICAgICAgICB0YyA9IFN0cnVjdC5uZXcoOnN0YXR1c2VzLCA6ZXhwZWN0ZWRQYXNzKQor
ICAgICAgICBbCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCB0cnVlKSwK
KyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTU10sIHRydWUpLAorICAgICAgICAg
ICAgdGMubmV3KFtTVEFUVVNfRklMRV9QQVNTLCBTVEFUVVNfRklMRV9QQVNTXSwgdHJ1ZSksCisg
ICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX0ZBSUxdLCB0
cnVlKSwKKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfRkFJTF0sIGZhbHNlKSwKKyAg
ICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfRkFJTCwgU1RBVFVTX0ZJTEVfRkFJTF0sIGZh
bHNlKSwKKyAgICAgICAgXS5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICAgICAgfHRlc3QsIHRl
c3RJbmRleHwKKyAgICAgICAgICAgIHBsYW4gPSBCYXNlUGxhbi5tb2NrKCJmIiwgInQje3Rlc3RJ
bmRleH0iKQorICAgICAgICAgICAgcnVubGlzdCA8PCBwbGFuCisgICAgICAgICAgICBzdGF0dXNN
YXBbcGxhbi5pbmRleF0gPSB0ZXN0LnN0YXR1c2VzCisgICAgICAgICAgICBpZiB0ZXN0LmV4cGVj
dGVkUGFzcworICAgICAgICAgICAgICAgIGV4cGVjdGVkUGFzcy5hZGQocGxhbikKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBleHBlY3RlZEZhaWwuYWRkKHBsYW4pCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0RXZhbHVh
dG9yU2ltcGxlLm5ldyhydW5saXN0LCBzdGF0dXNNYXApCisgICAgICAgIGV2YWx1YXRvci52aXNp
dCEKKworICAgICAgICBpZiBleHBlY3RlZFBhc3MgIT0gZXZhbHVhdG9yLnRlc3RzUGFzc2VkCisg
ICAgICAgICAgICAkc3RkZXJyLnB1dHMoImV4cGVjdGVkUGFzczogI3tleHBlY3RlZFBhc3N9IikK
KyAgICAgICAgICAgICRzdGRlcnIucHV0cygiUGFzc2VkOiAje2V2YWx1YXRvci50ZXN0c1Bhc3Nl
ZH0iKQorICAgICAgICAgICAgcmFpc2UgImV4cGVjdGVkUGFzcyBtaXNtYXRjaCIKKyAgICAgICAg
ZW5kCisgICAgICAgIGlmIGV4cGVjdGVkRmFpbCAhPSBldmFsdWF0b3IudGVzdHNGYWlsZWQKKyAg
ICAgICAgICAgICRzdGRlcnIucHV0cygiZXhwZWN0ZWRGYWlsOiAje2V4cGVjdGVkRmFpbH0iKQor
ICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJGYWlsZWQ6ICN7ZXZhbHVhdG9yLnRlc3RzRmFpbGVk
fSIpCisgICAgICAgICAgICByYWlzZSAiZXhwZWN0ZWRGYWlsIG1pc21hdGNoIgorICAgICAgICBl
bmQKKyAgICBlbmQKKworICAgIGRlZiBnZXRDb21wbGV0ZWRUZXN0c0Zyb21TdGF0dXNNYXAocnVu
bGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0RXZhbHVhdG9y
U2ltcGxlLm5ldyhydW5saXN0LCBzdGF0dXNNYXApCisgICAgICAgIGV2YWx1YXRvci52aXNpdCEK
KyAgICAgICAgZXZhbHVhdG9yLmNvbXBsZXRlZAorICAgIGVuZAorCisgICAgZGVmIFRlc3RSZXN1
bHRFdmFsdWF0b3JTZWxmVGVzdHMuc2VsZlRlc3RHZXRDb21wbGV0ZWRUZXN0c0Zyb21TdGF0dXNN
YXAKKyAgICAgICAgcnVubGlzdCA9IFtdCisgICAgICAgIGV4cGVjdENvbXBsZXRlZCA9IFNldC5u
ZXcKKyAgICAgICAgc3RhdHVzTWFwID0ge30KKyAgICAgICAgdGMgPSBTdHJ1Y3QubmV3KDpzdGF0
dXNlcywgOmZsYWt5LCA6c2hvdWxkQ291bnRBc0NvbXBsZXRlZCkKKyAgICAgICAgWworICAgICAg
ICAgICAgIyBObyByZXN1bHRzID0+IG5vdCBjb21wbGV0ZWQKKyAgICAgICAgICAgIHRjLm5ldyhu
aWwsIG5pbCwgZmFsc2UpLAorICAgICAgICAgICAgdGMubmV3KG5pbCwgRmxha3kubmV3KDAuNiwg
MiksIGZhbHNlKSwKKworICAgICAgICAgICAgIyBQYXNzZWQvZmFpbGVkIGFuZCBub3QgZmxha3kg
LT4gY29tcGxldGVkCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCBuaWws
IHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMXSwgbmlsLCB0cnVl
KSwKKworICAgICAgICAgICAgIyBJZiBpdCBoYXMgbXVsdGlwbGUgcmVzdWx0cyBhbmQgaXMgbm90
IGEgZmxha3ksIHRoYXQgbWVhbnMgaXQKKyAgICAgICAgICAgICMgd2FzIHJlLXJ1biBiZWNhdXNl
IG9mIGluZnJhc3RydWN0dXJlIGlzc3Vlcy4gQ291bnRzIGFzCisgICAgICAgICAgICAjIGNvbXBs
ZXRlZCByZWdhcmRsZXNzIG9mIHRoZSBhY3R1YWwgcmVzdWx0cy4KKyAgICAgICAgICAgIHRjLm5l
dyhbU1RBVFVTX0ZJTEVfUEFTUywgU1RBVFVTX0ZJTEVfUEFTU10sIG5pbCwgdHJ1ZSksCisgICAg
ICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX0ZBSUxdLCBuaWws
IHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMLCBTVEFUVVNfRklM
RV9GQUlMXSwgbmlsLCB0cnVlKSwKKworICAgICAgICAgICAgIyBOb3QgY29tcGxldGVkOiB3ZSBo
YXZlIG9uZSBydW4gcmVtYWluaW5nIGFuZCB0aGlzIGNvdWxkIGZsaXAKKyAgICAgICAgICAgICMg
dGhlIHBlcmNlbnRhZ2UuCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCBG
bGFreS5uZXcoMC42LCAyKSwgZmFsc2UpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklM
RV9GQUlMXSwgRmxha3kubmV3KDAuNCwgMiksIGZhbHNlKSwKKworICAgICAgICAgICAgIyBFdmVu
IGlmIHRoZSBsYXN0IG9uZSBmYWlscyB3ZSdyZSBzdGlsbCBnb25uYSBiZSBhYm92ZQorICAgICAg
ICAgICAgIyAocmVzcGVjdGl2ZWx5IGJlbG93KSB0aGUgcGFzcyBwZXJjZW50YWdlLgorICAgICAg
ICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9QQVNTLCBTVEFUVVNfRklMRV9QQVNTXSwgRmxha3ku
bmV3KDAuNSwgMyksIHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlM
LCBTVEFUVVNfRklMRV9GQUlMXSwgRmxha3kubmV3KDAuNSwgMyksIHRydWUpLAorICAgICAgICBd
LmVhY2hfd2l0aF9pbmRleCB7CisgICAgICAgICAgICB8dGVzdCwgdGVzdEluZGV4fAorICAgICAg
ICAgICAgcGxhbiA9IEJhc2VQbGFuLm1vY2soImYiLCAidCN7dGVzdEluZGV4fSIsIHRlc3QuZmxh
a3kpCisgICAgICAgICAgICBydW5saXN0IDw8IHBsYW4KKyAgICAgICAgICAgIGlmIG5vdCB0ZXN0
LnN0YXR1c2VzLm5pbD8KKyAgICAgICAgICAgICAgICBzdGF0dXNNYXBbcGxhbi5pbmRleF0gPSB0
ZXN0LnN0YXR1c2VzCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIHRlc3Quc2hvdWxk
Q291bnRBc0NvbXBsZXRlZAorICAgICAgICAgICAgICAgIGV4cGVjdENvbXBsZXRlZC5hZGQocGxh
bikKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIGV2YWx1YXRvciA9IFRlc3RS
ZXN1bHRFdmFsdWF0b3JTaW1wbGUubmV3KHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgZXZh
bHVhdG9yLnZpc2l0IQorCisgICAgICAgIHZlcmlmeUNvbXBsZXRlZFRlc3RzTWF0Y2hFeHBlY3Rl
ZChzdGF0dXNNYXAsIGV2YWx1YXRvci5jb21wbGV0ZWQsIGV4cGVjdENvbXBsZXRlZCkKKyAgICBl
bmQKKyAgICBkZWYgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5ydW4KKyAgICAgICAgVGVz
dFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5zZWxmVGVzdFRlc3RSZXN1bHRFdmFsdWF0b3IKKyAg
ICAgICAgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5zZWxmVGVzdEdldENvbXBsZXRlZFRl
c3RzRnJvbVN0YXR1c01hcAorICAgIGVuZAorZW5kCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3dyaXRlci1kZWZhdWx0LnJiIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC93cml0ZXItZGVmYXVsdC5yYgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zOWYxZGIwNzJmYTAxMGZkNWRkNTE5ZTY0OGYzYmFiN2RhZmUxYWMxCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC93cml0ZXIt
ZGVmYXVsdC5yYgpAQCAtMCwwICsxLDQ2MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworZGVmIHByZWZpeENvbW1hbmQocHJlZml4KQorICAgICJhd2sgIiArIFNoZWxs
d29yZHMuc2hlbGxlc2NhcGUoInsgcHJpbnRmICN7KHByZWZpeCArICc6ICcpLmluc3BlY3R9OyBw
cmludCB9IikKK2VuZAorCitkZWYgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHByZWZpeCkKKyAg
ICBwcmVmaXhDb21tYW5kKHByZWZpeCkgKyAiIDI+JjEiCitlbmQKKworZGVmIHBpcGVBbmRQcmVm
aXhDb21tYW5kKG91dHB1dEZpbGVuYW1lLCBwcmVmaXgpCisgICAgInRlZSAiICsgU2hlbGx3b3Jk
cy5zaGVsbGVzY2FwZShvdXRwdXRGaWxlbmFtZS50b19zKSArICIgfCAiICsgcHJlZml4Q29tbWFu
ZChwcmVmaXgpCitlbmQKKworIyBPdXRwdXQgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBhcmUgZXhw
ZWN0ZWQgdG8gYmUgc2lsZW50LgorZGVmIHNpbGVudE91dHB1dEhhbmRsZXIKKyAgICBQcm9jLm5l
dyB7CisgICAgICAgIHwgbmFtZSB8CisgICAgICAgIHBpcGVBbmRQcmVmaXhDb21tYW5kKChQYXRo
bmFtZSgiLi4iKSArIChuYW1lICsgIi5vdXQiKSkudG9fcywgbmFtZSkKKyAgICB9CitlbmQKKwor
IyBPdXRwdXQgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gcHJvZHVjZSBt
ZWFuaW5nZnVsIG91dHB1dC4KK2RlZiBub2lzeU91dHB1dEhhbmRsZXIKKyAgICBQcm9jLm5ldyB7
CisgICAgICAgIHwgbmFtZSB8CisgICAgICAgICJjYXQgPiAiICsgU2hlbGx3b3Jkcy5zaGVsbGVz
Y2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3MpCisgICAgfQorZW5k
CisKK2RlZiBnZXRBbmRUZXN0RXhpdENvZGUocGxhbiwgY29uZGl0aW9uKQorICAgIDw8LUVPRgor
ICAgIGlmIHRlc3QgIiRleGl0Q29kZSIgI3tjb25kaXRpb259CitFT0YKK2VuZAorCisjIEVycm9y
IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9u
LXplcm8gZXhpdCBzdGF0dXMuCisjIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSB0ZXN0IGlzIGV4cGVj
dGVkIHRvIGZhaWwuCitkZWYgc2ltcGxlRXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAg
ICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVzdEV4aXRDb2Rl
KHBsYW4sICItbmUgMCIpCisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgKGVjaG8gRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiAkZXhpdENvZGUpIHwg
IiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0
cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZSIKKyAg
ICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0
cC5wdXRzICJmaSIKKyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0
IGZhaWwgZXhhY3RseSB3aGVuIHRoZXkgcmV0dXJuIHplcm8gZXhpdCBzdGF0dXMuCitkZWYgZXhw
ZWN0ZWRGYWlsRXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBs
YW4gfAorICAgICAgICBvdXRwLnB1dHMgZ2V0QW5kVGVzdEV4aXRDb2RlKHBsYW4sICItbmUgMCIp
CisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBs
YW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlIgorICAgICAgICBvdXRw
LnB1dHMgIiAgICAoZWNobyBFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6IDApIHwgIiArIHJl
ZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAg
ICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZmkiCisgICAgfQorZW5k
CisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hlbiB0aGV5
IHJldHVybiBub24temVybyBleGl0IHN0YXR1cyBhbmQgcHJvZHVjZQorIyBsb3RzIG9mIHNwZXcu
IFRoaXMgd2lsbCBlY2hvIHRoYXQgc3BldyB3aGVuIHRoZSB0ZXN0IGZhaWxzLgorZGVmIG5vaXN5
RXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAg
ICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIu
LiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCisKKyAgICAgICAgb3V0cC5wdXRzIGdl
dEFuZFRlc3RFeGl0Q29kZShwbGFuLCAiLW5lIDAiKQorICAgICAgICBvdXRwLnB1dHMgInRoZW4i
CisgICAgICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBF
UlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6ICRleGl0Q29kZSkgfCAiICsgcmVkaXJlY3RBbmRQ
cmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4u
ZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlIgorICAgICAgICBvdXRwLnB1dHMg
IiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImZpIgorICAg
IH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZGlmZiB0aGVpciBvdXRw
dXQgd2l0aCBzb21lIGV4cGVjdGF0aW9uLgorZGVmIGRpZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRG
aWxlbmFtZSkKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAgICAg
IG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikg
KyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKyAgICAgICAgZGlmZkZpbGVuYW1lID0gU2hl
bGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5kaWZm
IikpLnRvX3MpCisKKyAgICAgICAgb3V0cC5wdXRzIGdldEFuZFRlc3RFeGl0Q29kZShwbGFuLCAi
LW5lIDAiKQorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAg
IChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjogVW5leHBlY3RlZCBleGl0IGNv
ZGU6ICRleGl0Q29kZSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0
cC5wdXRzICJlbGlmIHRlc3QgLWUgLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVk
RmlsZW5hbWUpfSIKKyAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAgICAgICBvdXRwLnB1dHMg
IiAgICBkaWZmIC0tc3RyaXAtdHJhaWxpbmctY3IgLXUgLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNj
YXBlKGV4cGVjdGVkRmlsZW5hbWUpfSAje291dHB1dEZpbGVuYW1lfSA+ICN7ZGlmZkZpbGVuYW1l
fSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgaWYgWyAkPyAtZXEgMCBdIgorICAgICAgICBvdXRw
LnB1dHMgIiAgICB0aGVuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNz
Q29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgIiAgICBlbHNlIgorICAgICAgICBvdXRwLnB1dHMg
IiAgICAgICAgKGVjaG8gXCJESUZGIEZBSUxVUkUhXCIgJiYgY2F0ICN7ZGlmZkZpbGVuYW1lfSkg
fCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiICAg
IGZpIgorICAgICAgICBvdXRwLnB1dHMgImVsc2UiCisgICAgICAgIG91dHAucHV0cyAiICAgIChl
Y2hvIFwiTk8gRVhQRUNUQVRJT04hXCIgJiYgY2F0ICN7b3V0cHV0RmlsZW5hbWV9KSB8ICIgKyBy
ZWRpcmVjdEFuZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImZpIgorICAgIH0KK2Vu
ZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWlu
ZyAiZmFpbGVkISIuIFRoaXMgaXMgdXNlZCBieSBNb3ppbGxhCisjIHRlc3RzLgorZGVmIG1vemls
bGFFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8Cisg
ICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUo
Ii4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKworICAgICAgICBvdXRwLnB1dHMg
Z2V0QW5kVGVzdEV4aXRDb2RlKHBsYW4sICItbmUgMCIpCisgICAgICAgIG91dHAucHV0cyAidGhl
biIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hv
IEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogJGV4aXRDb2RlKSB8ICIgKyByZWRpcmVjdEFu
ZFByZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxh
bi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBmYWlsZWQh
ICN7b3V0cHV0RmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1dHMgInRoZW4iCisgICAgICAgIG91
dHAucHV0cyAiICAgIChlY2hvIERldGVjdGVkIGZhaWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRGaWxl
bmFtZX0pIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAi
ZWxzZSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAg
ICAgICAgb3V0cC5wdXRzICJmaSIKKyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0
ZXN0cyB0aGF0IHJlcG9ydCBlcnJvciBieSBzYXlpbmcgImZhaWxlZCEiLCBhbmQgYXJlIGV4cGVj
dGVkIHRvCisjIGZhaWwuIFRoaXMgaXMgdXNlZCBieSBNb3ppbGxhIHRlc3RzLgorZGVmIG1vemls
bGFGYWlsRXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4g
fAorICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhu
YW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCisKKyAgICAgICAgb3V0cC5w
dXRzIGdldEFuZFRlc3RFeGl0Q29kZShwbGFuLCAiLW5lIDAiKQorICAgICAgICBvdXRwLnB1dHMg
InRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisg
ICAgICAgIG91dHAucHV0cyAiZWxpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFt
ZX0iCisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiAr
IHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlIgorICAgICAgICBv
dXRwLnB1dHMgIiAgICAoZWNobyBOT1RJQ0U6IFlvdSBtYWRlIHRoaXMgdGVzdCBwYXNzLCBidXQg
aXQgd2FzIGV4cGVjdGVkIHRvIGZhaWwpIHwgIiArIHJlZGlyZWN0QW5kUHJlZml4Q29tbWFuZChw
bGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisg
ICAgICAgIG91dHAucHV0cyAiZmkiCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3Ig
dGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBl
Y3RlZCB0byBoYXZlCisjIGFuIGV4aXQgY29kZSBvZiAzLgorZGVmIG1vemlsbGFFeGl0M0Vycm9y
SGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAg
b3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSAr
IChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQorCisgICAgICAgIG91dHAucHV0cyBnZXRBbmRU
ZXN0RXhpdENvZGUocGxhbiwgIi1uZSAwIikKKyAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgorICAg
ICAgICBvdXRwLnB1dHMgIiAgICBpZiBbIFwiJGV4aXRDb2RlXCIgLWVxIDMgXSIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgdGhlbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIGlmIGdyZXAg
LWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVuYW1lfSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
ICAgIHRoZW4iCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICAgICAgKGVjaG8gRGV0ZWN0ZWQg
ZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcmVkaXJlY3RBbmRQcmVm
aXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICAgICAiICsg
cGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgZWxzZSIKKyAgICAg
ICAgb3V0cC5wdXRzICIgICAgICAgICAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAg
ICBvdXRwLnB1dHMgIiAgICAgICAgZmkiCisgICAgICAgIG91dHAucHV0cyAiICAgIGVsc2UiCisg
ICAgICAgIG91dHAucHV0cyAiICAgICAgICAoY2F0ICN7b3V0cHV0RmlsZW5hbWV9ICYmIGVjaG8g
RVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlOiAkZXhpdENvZGUpIHwgIiArIHJlZGlyZWN0QW5k
UHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsg
cGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgIiAgICBmaSIKKyAgICAgICAgb3V0
cC5wdXRzICJlbHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAoY2F0ICN7b3V0cHV0RmlsZW5h
bWV9ICYmIGVjaG8gRVJST1I6IFRlc3QgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHJldHVybmVkIHN1
Y2Nlc3NmdWxseSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAg
ICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5w
dXRzICJmaSIKKyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJl
cG9ydCBzdWNjZXNzIGJ5IHNheWluZyAiUGFzc2VkIiBvciBlcnJvciBieSBzYXlpbmcgIkZBSUxF
RCIuCisjIFRoaXMgaXMgdXNlZCBieSBDaGFrcmEgdGVzdHMuCitkZWYgY2hha3JhUGFzc0ZhaWxF
cnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8CisgICAg
ICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4u
IikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKworICAgICAgICBvdXRwLnB1dHMgZ2V0
QW5kVGVzdEV4aXRDb2RlKHBsYW4sICItbmUgMCIpCisgICAgICAgIG91dHAucHV0cyAidGhlbiIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVS
Uk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogJGV4aXRDb2RlKSB8ICIgKyByZWRpcmVjdEFuZFBy
ZWZpeENvbW1hbmQocGxhbi5uYW1lKQorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5m
YWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBGQUlMRUQgI3tv
dXRwdXRGaWxlbmFtZX0iCisgICAgICAgIG91dHAucHV0cyAidGhlbiIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVuYW1l
fSkgfCAiICsgcmVkaXJlY3RBbmRQcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNl
IgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAg
ICBvdXRwLnB1dHMgImZpIgorICAgIH0KK2VuZAorCitjbGFzcyBQbGFuIDwgQmFzZVBsYW4KKyAg
ICBkZWYgc2hlbGxDb21tYW5kCisgICAgICAgICMgSXQncyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIg
dGhhdCB0aGUgdGVzdCBpcyBhY3R1YWxseSBydW4gaW4gYSBzdWJzaGVsbCwgc28gaWYgd2UgY2hh
bmdlIGRpcmVjdG9yeQorICAgICAgICAjIGluIHRoZSBzdWJzaGVsbCB3aGVuIHdlIHJldHVybiB3
ZSB3aWxsIGJlIGluIG91ciBvcmlnaW5hbCBkaXJlY3RvcnkuIFRoaXMgaXMgbmljZSBiZWNhdXNl
IHdlIGRvbid0CisgICAgICAgICMgaGF2ZSB0byBiZW5kIG92ZXIgYmFja3dhcmRzIHRvIGRvIHRo
aW5ncyByZWxhdGl2ZSB0byB0aGUgcm9vdC4KKyAgICAgICAgc2NyaXB0ID0gIihjZCAuLi8je1No
ZWxsd29yZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9yeS50b19zKX0gJiYgKCIKKyAgICAgICAgKCRl
bnZWYXJzICsgYWRkaXRpb25hbEVudikuZWFjaCB7IHx2YXJ8IHNjcmlwdCArPSAiZXhwb3J0ICIg
PDwgdmFyIDw8ICI7ICIgfQorICAgICAgICBzY3JpcHQgKz0gIlwiJEBcIiAiICsgZXNjYXBlQWxs
KEBhcmd1bWVudHMpICsgIikpIgorICAgICAgICByZXR1cm4gc2NyaXB0CisgICAgZW5kCisgICAg
CisgICAgZGVmIHJlcHJvU2NyaXB0Q29tbWFuZAorICAgICAgICAjIFdlIGhhdmUgdG8gZmluZCBv
dXIgd2F5IGJhY2sgdG8gdGhlIC5ydW5uZXIgZGlyZWN0b3J5IHNpbmNlIHRoYXQncyB3aGVyZSBh
bGwgb2YgdGhlIHJlbGF0aXZlCisgICAgICAgICMgcGF0aHMgYXNzdW1lIHRoZXkgc3RhcnQgb3V0
IGZyb20uCisgICAgICAgIHNjcmlwdCA9ICJDVVJSRU5UX0RJUj1cIiQoIGNkIFwiJCggZGlybmFt
ZSBcIiR7QkFTSF9TT1VSQ0VbMF19XCIgKVwiICYmIHB3ZCApXCJcbiIKKyAgICAgICAgc2NyaXB0
ICs9ICJjZCAkQ1VSUkVOVF9ESVJcbiIKKyAgICAgICAgUGF0aG5hbWUubmV3KEBuYW1lKS5kaXJu
YW1lLmVhY2hfZmlsZW5hbWUgeworICAgICAgICAgICAgfCBwYXRoQ29tcG9uZW50IHwKKyAgICAg
ICAgICAgIHNjcmlwdCArPSAiY2QgLi5cbiIKKyAgICAgICAgfQorICAgICAgICBzY3JpcHQgKz0g
ImNkIC5ydW5uZXJcbiIKKworICAgICAgICBzY3JpcHQgKz0gImV4cG9ydCBEWUxEX0ZSQU1FV09S
S19QQVRIPSQoY2QgI3skdGVzdGluZ0ZyYW1ld29ya1BhdGguZGlybmFtZX07IHB3ZClcbiIKKyAg
ICAgICAgc2NyaXB0ICs9ICJleHBvcnQgSlNDVEVTVF90aW1lb3V0PSN7U2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZShFTlZbJ0pTQ1RFU1RfdGltZW91dCddKX1cbiIKKyAgICAgICAgc2NyaXB0ICs9ICJl
eHBvcnQgSlNDVEVTVF9oYXJkVGltZW91dD0je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoRU5WWydK
U0NURVNUX2hhcmRUaW1lb3V0J10pfVxuIgorICAgICAgICBzY3JpcHQgKz0gImV4cG9ydCBKU0NU
RVNUX21lbW9yeUxpbWl0PSN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShFTlZbJ0pTQ1RFU1RfbWVt
b3J5TGltaXQnXSl9XG4iCisgICAgICAgICRlbnZWYXJzLmVhY2ggeyB8dmFyfCBzY3JpcHQgKz0g
ImV4cG9ydCAiIDw8IHZhciA8PCAiXG4iIH0KKyAgICAgICAgc2NyaXB0ICs9ICIje3NoZWxsQ29t
bWFuZH0gfHwgZXhpdCAxIgorICAgICAgICAiZWNobyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUo
c2NyaXB0KX0gPiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lLm5ldygiLi4iKSAr
IEBuYW1lKS50b19zKX0iCisgICAgZW5kCisKKyAgICBkZWYgc3RhdHVzQ29tbWFuZChzdGF0dXMp
CisgICAgICAgICJlY2hvICN7JHJ1blVuaXF1ZUlkfSAkZXhpdENvZGUgI3tzdGF0dXN9ID4gI3tz
dGF0dXNGaWxlfSIKKyAgICBlbmQKKworICAgIGRlZiBmYWlsQ29tbWFuZAorICAgICAgICAiI3tz
dGF0dXNDb21tYW5kKFNUQVRVU19GSUxFX0ZBSUwpfTsgZWNobyBGQUlMOiAje1NoZWxsd29yZHMu
c2hlbGxlc2NhcGUoQG5hbWUpfTsgIiArIHJlcHJvU2NyaXB0Q29tbWFuZAorICAgIGVuZAorICAg
IAorICAgIGRlZiBzdWNjZXNzQ29tbWFuZAorICAgICAgICBjb21tYW5kID0gIiIKKyAgICAgICAg
ZXhlY3V0aW9uVGltZU1lc3NhZ2UgPSAiIgorICAgICAgICBpZiAkcmVwb3J0RXhlY3V0aW9uVGlt
ZQorICAgICAgICAgICAgZXhlY3V0aW9uVGltZU1lc3NhZ2UgPSAiICQoKCRTRUNPTkRTIC0gJFNU
QVJUX1RJTUUpKXMiCisgICAgICAgIGVuZAorICAgICAgICBpZiAkcHJvZ3Jlc3NNZXRlciBvciAk
cmVwb3J0RXhlY3V0aW9uVGltZSBvciAkdmVyYm9zaXR5ID49IDIKKyAgICAgICAgICAgIGNvbW1h
bmQgPSAiZWNobyBQQVNTOiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfSN7ZXhlY3V0
aW9uVGltZU1lc3NhZ2V9IgorICAgICAgICBlbmQKKyAgICAgICAgIiN7c3RhdHVzQ29tbWFuZChT
VEFUVVNfRklMRV9QQVNTKX07ICN7Y29tbWFuZH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIHN0
YXR1c0ZpbGUKKyAgICAgICAgIiN7U1RBVFVTX0ZJTEVfUFJFRklYfSN7QGluZGV4fSIKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgd3JpdGVSdW5TY3JpcHQoZmlsZW5hbWUpCisgICAgICAgIEZpbGUu
b3BlbihmaWxlbmFtZSwgInciKSB7CisgICAgICAgICAgICB8IG91dHAgfAorICAgICAgICAgICAg
aWYgJHJlcG9ydEV4ZWN1dGlvblRpbWUKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIlNUQVJU
X1RJTUU9JFNFQ09ORFMiCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIG91dHAucHV0cyAi
ZWNobyBSdW5uaW5nICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9IgorICAgICAgICAg
ICAgIworICAgICAgICAgICAgIyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAjIHwgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgICAgICMgfCB8ICstLS0tLS0tLS0tLS0tLSsgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tKyAgICB8ICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgIyB8IHwgfCBj
bWQgMSAtLS0tPiAxfC0tLT4gfDAgLS0+IG91dEggMSAtLS0+IDR8LT4gNHwtLS0tLS0tLS0tLS0t
LS0+IDF8CisgICAgICAgICAgICAjIHwgfCB8ICAgICAyIC8gICAgICB8ICAgICArLS0tLS0tLS0t
LS0tLS0tLS0tLSsgICAgfCAgICstLS0tLS0tLS0tLSsgIHwKKyAgICAgICAgICAgICMgfCB8IHxl
Y2hvICQ/IDAgLT4gM3wtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IDF8LT4gfDAgcmVhZCB4
cyAgfCAgfAorICAgICAgICAgICAgIyB8IHwgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICB8ICBleGl0ICR4cyB8ICB8CisgICAgICAgICAgICAjIHwgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICstLS0tLS0t
LS0tLSsgIHwKKyAgICAgICAgICAgICMgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgIyArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCisgICAgICAgICAgICAjIEZyb20gdGhlIHRvcCBkb3duIChpLmUuIHJlYWRpbmcg
ZnJvbSB0aGUgb3V0ZXIgZXhwcmVzc2lvbiBpbndhcmRzKToKKyAgICAgICAgICAgICMKKyAgICAg
ICAgICAgICMgLSBSZWRpcmVjdCBGRCA0IHRvIG91ciBzdGRvdXQKKyAgICAgICAgICAgICMKKyAg
ICAgICAgICAgICMgLSBCdWlsZCBhIHBpcGUgb2YgdHdvIGNvbW1hbmQgc2VxdWVuY2VzLiBUaGUK
KyAgICAgICAgICAgICMgICByaWdodC1oYW5kLXNpZGUgc2VxdWVuY2UgcmVhZHMgYSBudW1iZXIg
ZnJvbSBzdGRpbiBhbmQKKyAgICAgICAgICAgICMgICBleGl0cyB3aXRoIGl0LiBTaW5jZSBpdCdz
IHRoZSBsYXN0IGNvbW1hbmQgaW4gdGhlCisgICAgICAgICAgICAjICAgcGlwZWxpbmUsIHRoaXMg
d2lsbCBiZSB0aGUgdmFsdWUgb2YgJD8gYWZ0ZXIgdGhlCisgICAgICAgICAgICAjICAgcGlwZWxp
bmUgY29tcGxldGVzLgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyAtIEluIHRoZSBsZWZ0
LWhhbmQtc2lkZSBzZXF1ZW5jZSwgcmVkaXJlY3QgRkQgMyB0byBGRCAxLgorICAgICAgICAgICAg
IworICAgICAgICAgICAgIyAtIEJ1aWxkIGEgcGlwZSBvZiB0d28gY29tbWFuZHMKKyAgICAgICAg
ICAgICMgICAtIHJ1biBzaGVsbENvbW1hbmQsIHdyaXRpbmcgaXRzIGV4aXQgY29kZSB0byBGRCAz
LgorICAgICAgICAgICAgIyAgIC0gcnVuIHRoZSBvdXRwdXRIYW5kbGVyLCB3aXRoIGl0cyBzdGRp
biBjb21pbmcgZnJvbQorICAgICAgICAgICAgIyAgICAgdGhlIHBpcGUsIHJlZGlyZWN0aW5nIGl0
cyBvdXRwdXQgdG8gRkQgNC4gVGhlCisgICAgICAgICAgICAjICAgICBvdXRwdXRIYW5kbGVyIG5l
ZWRzIHRvIGJlIGluIGEgY29tbWFuZCBzZXF1ZW5jZQorICAgICAgICAgICAgIyAgICAgKGkuZS4g
aW4geyBjbWQ7IC4uLn0pIGFzIGl0IG1heSBkbyBpdHMgb3duCisgICAgICAgICAgICAjICAgICBy
ZWRpcmVjdGlvbnMuCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIFdlIGRvIGFsbCB0aGlz
CisgICAgICAgICAgICAjIC0gdG8gYXZvaWQgaGF2aW5nIHRvIHVzZSBhIHRlbXBvcmFyeSBmaWxl
IGZvciB0aGUgZXhpdCBjb2RlCisgICAgICAgICAgICAjIC0gdG8ga2VlcCB3aXRoaW4gdGhlIGJv
dW5kcyBvZiBQT1NJWCBzaCAoaS5lLiBjYW4ndCB1c2UKKyAgICAgICAgICAgICMgICBQSVBFU1RB
VFVTKQorICAgICAgICAgICAgY21kID0gInsgeyB7IHsgI3tzaGVsbENvbW1hbmR9IDI+JjE7IGVj
aG8gJD8gPiYzOyB9IHwgeyAje291dHB1dEhhbmRsZXIuY2FsbChAbmFtZSl9IDt9ID4mNDsgfSAz
PiYxOyB9IHwgeyByZWFkIHhzOyBleGl0ICR4czsgfSB9IDQ+JjFcbmV4aXRDb2RlPSQ/XG4iCisg
ICAgICAgICAgICBpZiAkdmVyYm9zaXR5ID49IDMKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMg
ImVjaG8gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGNtZCl9IgorICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICBvdXRwLnB1dHMgY21kCisgICAgICAgICAgICBAZXJyb3JIYW5kbGVyLmNhbGwo
b3V0cCwgc2VsZikKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIFRlc3RSdW5uZXJT
aGVsbCA8IFRlc3RSdW5uZXIKKyAgICBkZWYgaW5pdGlhbGl6ZSh0ZXN0UnVubmVyVHlwZSwgcnVu
bmVyRGlyKQorICAgICAgICBzdXBlcih0ZXN0UnVubmVyVHlwZSwgcnVubmVyRGlyKQorICAgICAg
ICBAdGVzdExpc3RQYXRoID0gcnVubmVyRGlyICsgJ3Rlc3RsaXN0JworICAgIGVuZAorICAgIGRl
ZiBwcmVwYXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVt
b3RlSG9zdHMpCisgICAgICAgIEZpbGVVdGlscy5jcCBTQ1JJUFRTX1BBVEggKyAianNjLXN0cmVz
cy10ZXN0LWhlbHBlcnMiICsgInNoZWxsLXJ1bm5lci5zaCIsIEBydW5uZXJEaXIgKyAicnVuc2Ny
aXB0IgorICAgICAgICBGaWxlLm9wZW4oQHRlc3RMaXN0UGF0aCwgInciKSB7IHxmfAorICAgICAg
ICAgICAgcnVubGlzdC5lYWNoIHsgfHBsYW58CisgICAgICAgICAgICAgICAgaWYgY29tcGxldGVk
UGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGYucHV0cygidGVzdF9zY3JpcHRfI3twbGFuLmlu
ZGV4fSIpCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBlbmQKKyAgICBkZWYgY29tbWFu
ZChyZW1vdGVJbmRleD0wKQorICAgICAgICAic2ggcnVuc2NyaXB0ICN7RmlsZS5iYXNlbmFtZShA
dGVzdExpc3RQYXRoKX0iCisgICAgZW5kCitlbmQKKworY2xhc3MgVGVzdFJ1bm5lck1ha2UgPCBU
ZXN0UnVubmVyCisgICAgZGVmIG91dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgcHJlcmVxcykKKyAg
ICAgICAgaW5kZXggPSBwbGFuLmluZGV4CisgICAgICAgIHRhcmdldCA9ICJ0ZXN0X2RvbmVfI3tp
bmRleH0iCisgICAgICAgIG91dHAucHV0cyAiI3t0YXJnZXR9OiAje3ByZXJlcXMuam9pbigiICIp
fSIKKyAgICAgICAgb3V0cC5wdXRzICJcdHNoIHRlc3Rfc2NyaXB0XyN7aW5kZXh9IgorICAgICAg
ICB0YXJnZXQKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0
LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUluZGV4KQorICAgICAgICAjIFRo
ZSBnb2FscyBvZiBvdXIgcGFyYWxsZWwgdGVzdCBydW5uZXIgYXJlIHNjYWxhYmlsaXR5IGFuZCBz
aW1wbGljaXR5LiBUaGUKKyAgICAgICAgIyBzaW1wbGljaXR5IHBhcnQgaXMgcGFydGljdWxhcmx5
IGltcG9ydGFudC4gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGhhdmUKKyAgICAgICAgIyBhIGZ1
bGwtdGltZSBjb250cmlidXRvciBqdXN0IHBoaWxvc29waGlzaW5nIGFib3V0IHBhcmFsbGVsIHRl
c3RpbmcuCisgICAgICAgICMKKyAgICAgICAgIyBBcyBzdWNoLCB3ZSBqdXN0IHBhc3Mgb2ZmIGFs
bCBvZiB0aGUgaGFyZCB3b3JrIHRvICdtYWtlJy4gVGhpcworICAgICAgICAjIGNyZWF0ZXMgYSBk
dW1teSBkaXJlY3RvcnkgKCIkb3V0cHV0RGlyLy5ydW5uZXIiKSBpbiB3aGljaCB3ZQorICAgICAg
ICAjIGNyZWF0ZSBhIGR1bW15IE1ha2VmaWxlLiBUaGUgTWFrZWZpbGUgaGFzIGEgJ3BhcmFsbGVs
JyBydWxlIHRoYXQKKyAgICAgICAgIyBkZXBlbmRzIGFsbCB0ZXN0cywgb3RoZXIgdGhhbiB0aGUg
b25lcyBtYXJrZWQgJ3NlcmlhbCcuIFRoZQorICAgICAgICAjIHNlcmlhbCB0ZXN0cyBhcmUgYXJy
YW5nZWQgaW4gYSBjaGFpbjsgdGhlIGxhc3QgdGFyZ2V0IGluIHRoZQorICAgICAgICAjIHNlcmlh
bCBjaGFpbiBkZXBlbmRzIG9uICdwYXJhbGxlbCcgYW5kICdhbGwnIGRlcGVuZHMgb24gdGhlIGhl
YWQKKyAgICAgICAgIyBvZiB0aGUgY2hhaW4uIFJ1bm5pbmcgJ21ha2UgLWogPHdoYXRldmVyPicg
b24gdGhpcyBNYWtlZmlsZQorICAgICAgICAjIHJlc3VsdHMgaW4gJ21ha2UnIGRvaW5nIGFsbCBv
ZiB0aGUgaGFyZCB3b3JrOgorICAgICAgICAjCisgICAgICAgICMgLSBMb2FkIGJhbGFuY2luZyBq
dXN0IHdvcmtzLiBNb3N0IHN5c3RlbXMgaGF2ZSBhIGdyZWF0IGxvYWQgYmFsYW5jZXIgaW4KKyAg
ICAgICAgIyAgICdtYWtlJy4gSWYgeW91ciBzeXN0ZW0gZG9lc24ndCB0aGVuIGp1c3QgaW5zdGFs
bCBhIHJlYWwgJ21ha2UnLgorICAgICAgICAjCisgICAgICAgICMgLSBJbnRlcnJ1cHRpb25zIGp1
c3Qgd29yay4gRm9yIGV4YW1wbGUgQ3RybC1DIGhhbmRsaW5nIGluICdtYWtlJyBpcworICAgICAg
ICAjICAgZXhhY3RseSByaWdodC4gWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgem9tYmll
IHByb2Nlc3Nlcy4KKyAgICAgICAgIworICAgICAgICAjIFdlIHRoZW4gZG8gc29tZSB0cmlja3Mg
dG8gbWFrZSBmYWlsdXJlIGRldGVjdGlvbiB3b3JrIGFuZCB0byBtYWtlIHRoaXMKKyAgICAgICAg
IyB0b3RhbGx5IHNvdW5kLiBJZiBhIHRlc3QgZmFpbHMsIHdlIGRvbid0IHdhbnQgdGhlIHdob2xl
ICdtYWtlJyBqb2IgdG8KKyAgICAgICAgIyBzdG9wLiBXZSBhbHNvIGRvbid0IGhhdmUgYW55IGZh
Y2lsaXR5IGZvciBtYWtlZmlsZS1lc2NhcGluZyBvZiBwYXRoIG5hbWVzLgorICAgICAgICAjIFdl
IGRvIGhhdmUgc3VjaCBhIHRoaW5nIGZvciBzaGVsbC1lc2NhcGluZywgdGhvdWdoLiBXZSBmaXgg
Ym90aCBwcm9ibGVtcworICAgICAgICAjIGJ5IGhhdmluZyB0aGUgYWN0dWFsIHdvcmsgZm9yIGVh
Y2ggb2YgdGhlIHRlc3QgcnVsZXMgYmUgZG9uZSBpbiBhIHNoZWxsCisgICAgICAgICMgc2NyaXB0
IG9uIHRoZSBzaWRlLiBUaGVyZSBpcyBvbmUgc3VjaCBzY3JpcHQgcGVyIHRlc3QuIFRoZSBzY3Jp
cHQgcmVzcG9uZHMKKyAgICAgICAgIyB0byBmYWlsdXJlIGJ5IHByaW50aW5nIHNvbWV0aGluZyBv
biB0aGUgY29uc29sZSBhbmQgdGhlbiB0b3VjaGluZyBhCisgICAgICAgICMgZmFpbHVyZSBmaWxl
IGZvciB0aGF0IHRlc3QsIGJ1dCB0aGVuIHN0aWxsIHJldHVybnMgMC4gVGhpcyBtYWtlcyAnbWFr
ZScKKyAgICAgICAgIyBjb250aW51ZSBwYXN0IHRoYXQgZmFpbHVyZSBhbmQgY29tcGxldGUgYWxs
IHRoZSB0ZXN0cyBhbnl3YXkuCisgICAgICAgICMKKyAgICAgICAgIyBJbiB0aGUgZW5kLCB0aGlz
IHNjcmlwdCBjb2xsZWN0cyBhbGwgb2YgdGhlIGZhaWx1cmVzIGJ5IHNlYXJjaGluZyBmb3IKKyAg
ICAgICAgIyBmaWxlcyBpbiB0aGUgLnJ1bm5lciBkaXJlY3Rvcnkgd2hvc2UgbmFtZSBtYXRjaGVz
IC9edGVzdF9mYWlsXy8sIHdoZXJlCisgICAgICAgICMgdGhlIHRoaW5nIGFmdGVyIHRoZSAnZmFp
bF8nIGlzIHRoZSB0ZXN0IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQKKyAgICAgICAg
IyB3b3VsZCBiZSBjcmVhdGVkIGJ5IHRoZSB0ZXN0IHNjcmlwdHMgaWYgdGhleSBkZXRlY3QgZmFp
bHVyZS4gV2UncmUKKyAgICAgICAgIyBiYXNpY2FsbHkgdXNpbmcgdGhlIGZpbGVzeXN0ZW0gYXMg
YSBjb25jdXJyZW50IGRhdGFiYXNlIG9mIHRlc3QgZmFpbHVyZXMuCisgICAgICAgICMgRXZlbiBp
ZiB0d28gdGVzdHMgZmFpbCBhdCB0aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5n
IGRpZmZlcmVudAorICAgICAgICAjIGZpbGVzIHdlIHdvbid0IG1pc3MgYW55IGZhaWx1cmVzLgor
ICAgICAgICBydW5QbGFucyA9IFtdCisgICAgICAgIHNlcmlhbFJ1blBsYW5zID0gW10KKyAgICAg
ICAgcnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICBpZiBj
b21wbGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgIG5leHQKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgaWYgQHJlbW90ZUhvc3RzLm5pbD8gb3IgcGxhbi5pbmRl
eCAlIEByZW1vdGVIb3N0cy5sZW5ndGggPT0gcmVtb3RlSW5kZXgKKyAgICAgICAgICAgICAgICBp
ZiBzZXJpYWxQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBzZXJpYWxS
dW5QbGFucyA8PCBwbGFuCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBydW5QbGFucyA8PCBwbGFuCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgfQorCisgICAgICAgIEZpbGUub3BlbihAcnVubmVyRGlyICsgIk1ha2VmaWxlLiN7
cmVtb3RlSW5kZXh9IiwgInciKSB7CisgICAgICAgICAgICB8IG91dHAgfAorICAgICAgICAgICAg
aWYgc2VyaWFsUnVuUGxhbnMuZW1wdHk/CisgICAgICAgICAgICAgICAgb3V0cC5wdXRzKCJhbGw6
IHBhcmFsbGVsIikKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXJpYWxQcmVy
ZXEgPSAidGVzdF9kb25lXyN7c2VyaWFsUnVuUGxhbnNbLTFdLmluZGV4fSIKKyAgICAgICAgICAg
ICAgICBvdXRwLnB1dHMoImFsbDogI3tzZXJpYWxQcmVyZXF9IikKKyAgICAgICAgICAgICAgICBw
cmV2X3RhcmdldCA9ICJwYXJhbGxlbCIKKyAgICAgICAgICAgICAgICBzZXJpYWxSdW5QbGFucy5l
YWNoIHsKKyAgICAgICAgICAgICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAgICAgICAg
cHJldl90YXJnZXQgPSBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtwcmV2X3RhcmdldF0pCisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBwYXJhbGxlbFRh
cmdldHMgPSBydW5QbGFucy5jb2xsZWN0IHsKKyAgICAgICAgICAgICAgICB8IHBsYW4gfAorICAg
ICAgICAgICAgICAgIG91dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgW10pCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBvdXRwLnB1dHMoInBhcmFsbGVsOiAiICsgcGFyYWxsZWxUYXJnZXRzLmpv
aW4oIiAiKSkKKyAgICAgICAgfQorICAgIGVuZAorICAgIGRlZiBwcmVwYXJlUnVubmVyKHJ1bmxp
c3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIGlm
IHJlbW90ZUhvc3RzLm5pbD8KKyAgICAgICAgICAgIHByZXBhcmVSdW5uZXJGb3JSZW1vdGUocnVu
bGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCAwKQorICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZW1vdGVIb3N0cy5lYWNoX2luZGV4IHsKKyAgICAgICAgICAgICAgICB8cmVtb3Rl
SW5kZXh8CisgICAgICAgICAgICAgICAgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0LCBz
ZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUluZGV4KQorICAgICAgICAgICAgfQor
ICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAg
ICAgICAibWFrZSAtaiAjeyRudW1DaGlsZFByb2Nlc3Nlc30gLXMgLWYgTWFrZWZpbGUuI3tyZW1v
dGVJbmRleH0iCisgICAgZW5kCitlbmQKKworY2xhc3MgVGVzdFJ1bm5lclJ1YnkgPCBUZXN0UnVu
bmVyCisgICAgZGVmIHByZXBhcmVSdW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRl
ZFBsYW5zLCByZW1vdGVIb3N0cykKKyAgICAgICAgRmlsZS5vcGVuKEBydW5uZXJEaXIgKyAicnVu
c2NyaXB0IiwgInciKSB7CisgICAgICAgICAgICB8IG91dHAgfAorICAgICAgICAgICAgcnVubGlz
dC5lYWNoIHsKKyAgICAgICAgICAgICAgICB8IHBsYW4gfAorICAgICAgICAgICAgICAgIGlmIGNv
bXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgICAgIG5leHQKKyAg
ICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgInByaW50IGBzaCB0
ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9IDI+JjFgIgorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgZW5kCisgICAgZGVmIGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAgICAgICAgInJ1Ynkg
cnVuc2NyaXB0IgorICAgIGVuZAorZW5kCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHJ1YnkvanNjLXN0cmVzcy10ZXN0L3dyaXRlci1wbGF5c3RhdGlvbi5yYiBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qvd3JpdGVyLXBsYXlzdGF0aW9uLnJiCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJhN2FhOTdmY2UyZTVkZWFmM2FhMDA4MjZhMWVlYjM5ZTFkOTg5OTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3dyaXRl
ci1wbGF5c3RhdGlvbi5yYgpAQCAtMCwwICsxLDQyMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCityZXF1aXJlICdvcGVuMycKKworJGhhc0RpZmYgPSBmYWxzZQoraWYg
KCRob3N0T1MgPT0gJ3dpbmRvd3MnIHx8ICRob3N0T1MgPT0gJ3BsYXlzdGF0aW9uJykKKyAgICBv
dXQsIGVyciwgc3RhdHVzID0gT3BlbjMuY2FwdHVyZTMoIndoZXJlIiwgIi9xIiwgImRpZmYiKQor
ICAgICRoYXNEaWZmID0gc3RhdHVzLnN1Y2Nlc3M/CitlbHNlCisgICAgb3V0LCBlcnIsIHN0YXR1
cyA9IE9wZW4zLmNhcHR1cmUzKCJ3aGljaCIsICJkaWZmIikKKyAgICAkaGFzRGlmZiA9IHN0YXR1
cy5zdWNjZXNzPworZW5kCisKKyMgUHJlZml4IGVhY2ggbGluZSBvZiBzdHIgd2l0aCB0aGUgbmFt
ZQorZGVmIHByZWZpeFN0cmluZyhzdHIsIG5hbWUpCisgICAgIiN7c3RyfS5lbXB0eT8gPyBcIlwi
IDogI3tzdHJ9LmdzdWIoL14vbSwgXCIje25hbWV9OiBcIikiCitlbmQKKworZGVmIHNpbGVudE91
dHB1dEhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgbmFtZSB8CisgICAgICAgIDw8
LUVORF9TSUxFTlRfT1VUUFVUX0hBTkRMRVIKKyAgICAgICAgb3V0ID0gb3V0ICsgZXJyCisgICAg
ICAgIGVyciA9IG5pbAorICAgICAgICBTVERPVVQucHV0cyAje3ByZWZpeFN0cmluZygib3V0Iiwg
bmFtZSl9IGlmICghb3V0LmVtcHR5PykKKyAgICAgICAgRmlsZS5vcGVuKCIje1NoZWxsd29yZHMu
c2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIpKS50b19zKX0iLCAi
dyIpIGRvIHxvdXRfZmlsZXwKKyAgICAgICAgICAgIG91dF9maWxlLnB1dHMgb3V0CisgICAgICAg
IGVuZAorICAgICAgICBFTkRfU0lMRU5UX09VVFBVVF9IQU5ETEVSCisgICAgfQorZW5kCisKKyMg
T3V0cHV0IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIHByb2R1Y2UgbWVh
bmluZ2Z1bCBvdXRwdXQuCitkZWYgbm9pc3lPdXRwdXRIYW5kbGVyCisgICAgUHJvYy5uZXcgewor
ICAgICAgICB8IG5hbWUgfAorICAgICAgICA8PC1FTkRfTk9JU1lfT1VUUFVUX0hBTkRMRVIKKyAg
ICAgICAgb3V0ID0gb3V0ICsgZXJyCisgICAgICAgIGVyciA9IG5pbAorICAgICAgICBGaWxlLm9w
ZW4oIiN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIu
b3V0IikpLnRvX3MpfSIsICJ3IikgZG8gfG91dF9maWxlfAorICAgICAgICAgICAgb3V0X2ZpbGUu
cHV0cyBvdXQKKyAgICAgICAgZW5kCisgICAgICAgIEVORF9OT0lTWV9PVVRQVVRfSEFORExFUgor
ICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5
IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMuCisjIFRoaXMgaXMgdXNlZnVs
IHdoZW4gYSB0ZXN0IGlzIGV4cGVjdGVkIHRvIGZhaWwuCitkZWYgc2ltcGxlRXJyb3JIYW5kbGVy
CisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwLnB1
dHMgImlmICFzdWNjZXNzXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVm
aXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1c31cXG5cIiIs
IHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICAgICAiICsgcGxhbi5m
YWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKKyAgICAgICAgb3V0cC5wdXRz
ICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIK
KyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGZhaWwgZXhhY3Rs
eSB3aGVuIHRoZXkgcmV0dXJuIHplcm8gZXhpdCBzdGF0dXMuCitkZWYgZXhwZWN0ZWRGYWlsRXJy
b3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAg
ICBvdXRwLnB1dHMgImlmIHN1Y2Nlc3NcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQg
IiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgMFxcblwiIiwg
cGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZh
aWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgorICAgICAgICBvdXRwLnB1dHMg
IiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgor
ICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5
IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMgYW5kIHByb2R1Y2UKKyMgbG90
cyBvZiBzcGV3LiBUaGlzIHdpbGwgZWNobyB0aGF0IHNwZXcgd2hlbiB0aGUgdGVzdCBmYWlscy4K
K2RlZiBub2lzeUVycm9ySGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBw
bGFuIHwKKyAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2Vzc1xuIgorICAgICAgICBvdXRwLnB1
dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgor
ICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkVSUk9SOiBV
bmV4cGVjdGVkIGV4aXQgY29kZSBcI3tzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgor
ICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAg
b3V0cC5wdXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nl
c3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAgfQorZW5kCisKKyBkZWYg
ZmFsbGJhY2tEaWZmKGV4cGVjdGVkLCBvdXRwdXQpCisgICAgPDwtRU5EX0ZBTExCQUNLX0RJRkYK
KyAgICAgICAgICMgRmFsbGJhY2sgZGlmZiBmb3Igd2hlbiBkaWZmKDEpIGlzbid0IGF2YWlsYWJs
ZQorICAgICAgICAgZGlmZnMgPSBbXQorICAgICAgICAgbGluZV9udW1iZXIgPSAwCisgICAgICAg
ICBGaWxlLm9wZW4oIiN7ZXhwZWN0ZWR9IikgZG8gfCBleHBlY3RlZCB8CisgICAgICAgICAgICAg
RmlsZS5vcGVuKCIje291dHB1dH0iKSBkbyB8IGFjdHVhbCB8CisgICAgICAgICAgICAgICAgIGxv
b3AgZG8KKyAgICAgICAgICAgICAgICAgICAgIGwxID0gZXhwZWN0ZWQuZ2V0cworICAgICAgICAg
ICAgICAgICAgICAgbDIgPSBhY3R1YWwuZ2V0cworICAgICAgICAgICAgICAgICAgICAgaWYgKGwx
ICE9IGwyKQorICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZzLnB1c2goW2xpbmVfbnVtYmVy
LCBsMSwgbDJdKQorICAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAg
ICBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyICsgMQorICAgICAgICAgICAgICAgICAgICAgYnJl
YWsgaWYgKGwxID09IG5pbCAmJiBsMiA9PSBuaWwpCisgICAgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgZW5kCisgICAgICAgICBpc0RpZmZlcmVudCA9ICFkaWZm
cy5lbXB0eT8KKyAgICAgICAgIGRpZmZPdXQgPSBkaWZmcy5tYXAgeworICAgICAgICAgICAgIHwg
ZGlmZiB8CisgICAgICAgICAgICAgIkBAIC1cI3tkaWZmWzBdfSwxICtcI3tkaWZmWzBdfSwxIEBA
XFxuIiArCisgICAgICAgICAgICAgKGRpZmZbMV0gPyAiLVwje2RpZmZbMV19IiA6ICIiKSArCisg
ICAgICAgICAgICAgKGRpZmZbMl0gPyAiK1wje2RpZmZbMl19IiA6ICIiKQorICAgICAgICB9Lmpv
aW4oIiIpCisgICAgRU5EX0ZBTExCQUNLX0RJRkYKK2VuZAorCitkZWYgcnVuRGlmZihleHBlY3Rl
ZCwgb3V0cHV0KQorICAgIDw8LUVORF9SVU5fRElGRgorICAgICAgICBkaWZmT3V0LCBkaWZmU3Rh
dHVzID0gT3BlbjMuY2FwdHVyZTIoImRpZmYiLAorICAgICAgICAgICAgIi0tc3RyaXAtdHJhaWxp
bmctY3IiLAorICAgICAgICAgICAgIi11IiwKKyAgICAgICAgICAgICIje2V4cGVjdGVkfSIsCisg
ICAgICAgICAgICAiI3tvdXRwdXR9Iik7CisgICAgICAgIGlzRGlmZmVyZW50ID0gIWRpZmZTdGF0
dXMuc3VjY2Vzcz8KKyAgICBFTkRfUlVOX0RJRkYKK2VuZAorCisjIEdldCBhIGRpZmZlcmVuY2Ug
YmV0d2VlbiB0d28gZmlsZXMsIHVzaW5nIGRpZmYgd2hlcmUgYXZhaWxhYmxlLCBmYWxsaW5nIGJh
Y2sKKyMgb24gYSBsaW1pdGVkIGNvbXBhcmlzb24gd2hlbiBkaWZmIGlzIG5vdCBhdmFpbGFibGUK
K2RlZiBnZXREaWZmKGV4cGVjdGVkLCBvdXRwdXQpCisgICAgaWYgJGhhc0RpZmYKKyAgICAgICAg
cnVuRGlmZihleHBlY3RlZCwgb3V0cHV0KQorICAgIGVsc2UKKyAgICAgICAgZmFsbGJhY2tEaWZm
KGV4cGVjdGVkLG91dHB1dCkKKyAgICBlbmQKK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRl
c3RzIHRoYXQgZGlmZiB0aGVpciBvdXRwdXQgd2l0aCBzb21lIGV4cGVjdGF0aW9uLgorZGVmIGRp
ZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRGaWxlbmFtZSkKKyAgICBQcm9jLm5ldyB7CisgICAgICAg
IHwgb3V0cCwgcGxhbiB8CisgICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKwor
ICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzXG4iCisgICAgICAgIG91dHAucHV0cyAiICAg
IHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAg
IG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0
ZWQgZXhpdCBjb2RlIFwje3N0YXR1c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAi
ZWxzaWYgRmlsZS5leGlzdHM/KFwiLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVk
RmlsZW5hbWUpfVwiKVxuIgorICAgICAgICBvdXRwLnB1dHMgZ2V0RGlmZigiLi4vI3tTaGVsbHdv
cmRzLnNoZWxsZXNjYXBlKGV4cGVjdGVkRmlsZW5hbWUpfSIsIG91dHB1dEZpbGVuYW1lKQorICAg
ICAgICBvdXRwLnB1dHMgIiAgICBpZiBpc0RpZmZlcmVudFxuIgorICAgICAgICBvdXRwLnB1dHMg
IiAgICAgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJESUZGIEZBSUxVUkUhXFxuXCIiLCBw
bGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgcHJpbnQgIiArIHBy
ZWZpeFN0cmluZygiZGlmZk91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0
cyAiICAgICAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgIiAgICBl
bHNlIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgZW5kIgorICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJOTyBFWFBF
Q1RBVElPTiFcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAg
IHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAi
ZW5kIgorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0
IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIuIFRoaXMgaXMgdXNlZCBieSBNb3ppbGxhCisjIHRl
c3RzLgorZGVmIG1vemlsbGFFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwg
b3V0cCwgcGxhbiB8CisgICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3NcbiIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSAr
ICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJF
UlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSAr
ICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisg
ICAgICAgIG91dHAucHV0cyAiZWxzaWYgL2ZhaWxlZCEvaSA9fiBvdXRcbiIKKyAgICAgICAgb3V0
cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJEZXRlY3RlZCBmYWlsdXJlczpc
XG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIg
KyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0
cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgor
ICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBv
dXRwLnB1dHMgImVuZFxuIgorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3Rz
IHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIsIGFuZCBhcmUgZXhwZWN0ZWQg
dG8KKyMgZmFpbC4gVGhpcyBpcyB1c2VkIGJ5IE1vemlsbGEgdGVzdHMuCitkZWYgbW96aWxsYUZh
aWxFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxhbiB8Cisg
ICAgICAgIG91dHAucHV0cyAiaWYgIXN1Y2Nlc3NcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
IiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvZmFpbGVk
IS9pID1+IG91dFxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29t
bWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
cHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJOT1RJQ0U6IFlvdSBtYWRlIHRoaXMgdGVzdCBwYXNz
LCBidXQgaXQgd2FzIGV4cGVjdGVkIHRvIGZhaWxcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisg
ICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAu
cHV0cyAiZW5kXG4iCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhh
dCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5kIGFyZSBleHBlY3RlZCB0byBo
YXZlCisjIGFuIGV4aXQgY29kZSBvZiAzLgorZGVmIG1vemlsbGFFeGl0M0Vycm9ySGFuZGxlcgor
ICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0cC5wdXRz
ICJpZiBzdWNjZXNzXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhT
dHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHBy
aW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFRlc3QgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0
IHJldHVybmVkIHN1Y2Nlc3NmdWxseVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0
cyAiZWxzaWYgc3RhdHVzICE9IDMiCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBw
cmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAi
ICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2Rl
OiBcI3tzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMg
IiAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAv
ZmFpbGVkIS9pID1+IG91dFxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJl
Zml4U3RyaW5nKCJcIkRldGVjdGVkIGZhaWx1cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxh
bi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1h
bmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIg
KyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAgfQor
ZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgc3VjY2VzcyBieSBz
YXlpbmcgIlBhc3NlZCIgb3IgZXJyb3IgYnkgc2F5aW5nICJGQUlMRUQiLgorIyBUaGlzIGlzIHVz
ZWQgYnkgQ2hha3JhIHRlc3RzLgorZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCisgICAg
UHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwLnB1dHMgImlm
ICFzdWNjZXNzXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJp
bmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50
ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1
c31cXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBw
bGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzaWYgL0ZBSUxFRC9pID1+IG91
dFxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkRl
dGVjdGVkIGZhaWx1cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0
cC5wdXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3ND
b21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICB9CitlbmQKKworY2xhc3MgUGxh
biA8IEJhc2VQbGFuCisgICAgZGVmIGFyZ3VtZW50c01hcHBlcihhcmd1bWVudHMpCisgICAgICAg
IGFyZ3VtZW50c1sxLi4tMV0KKyAgICBlbmQKKyAgICBkZWYgc2hlbGxDb21tYW5kCisgICAgICAg
IG4gPSBAbmFtZS5nc3ViKC8oXFx8XC8pLywgJ18nKQorICAgICAgICBzY3JpcHQgPSAib3V0ID0g
bmlsXG4iCisgICAgICAgIHNjcmlwdCArPSAiZXJyID0gbmlsXG4iCisgICAgICAgIHNjcmlwdCAr
PSAic3RhdHVzID0gLTFcbiI7CisgICAgICAgIHNjcmlwdCArPSAic3VjY2VzcyA9IGZhbHNlXG4i
CisgICAgICAgIHNjcmlwdCArPSAiRmlsZS5vcGVuKFwiI3tufS1leGl0XCIsIFwiclwiKSBkbyB8
c3RhdHxcbiI7CisgICAgICAgIHNjcmlwdCArPSAiICBzdGF0dXMgPSBzdGF0LmdldHMudG9faVxu
IgorICAgICAgICBzY3JpcHQgKz0gImVuZFxuIgorICAgICAgICBzY3JpcHQgKz0gImlmIChzdGF0
dXMgPT0gMClcbiIKKyAgICAgICAgc2NyaXB0ICs9ICIgIHN1Y2Nlc3MgPSB0cnVlXG4iCisgICAg
ICAgIHNjcmlwdCArPSAiZW5kXG4iCisKKyAgICAgICAgc2NyaXB0ICs9ICJvdXQgPSBGaWxlLm9w
ZW4oXCIje259LXN0ZG91dFwiLCBcInJcIikucmVhZFxuIgorICAgICAgICBzY3JpcHQgKz0gImVy
ciA9IEZpbGUub3BlbihcIiN7bn0tc3RkZXJyXCIsIFwiclwiKS5yZWFkXG4iCisgICAgICAgIHJl
dHVybiBzY3JpcHQKKyAgICBlbmQKKworICAgIGRlZiByZXByb1NjcmlwdEhlbHBlcgorICAgICAg
ICByZXR1cm4gIiIKKyAgICBlbmQKKworICAgIGRlZiByZXByb1NjcmlwdENvbW1hbmQKKyAgICAg
ICAgcmV0dXJuICIiCisgICAgZW5kCisKKyAgICBkZWYgc3RhdHVzQ29tbWFuZChzdGF0dXNfY29k
ZSkKKyAgICAgICAgIyBNYXkgYmUgY2FsbGVkIGluIHRoIHJlc2N1ZSBibG9jaywgc28gc3RhdHVz
IGlzIG5vdAorICAgICAgICAjIGd1YXJhbnRlZWQgdG8gYmUgc2V0OyBpZiBpdCBpc24ndCwgc2V0
IHRoZSBleGl0IGNvZGUgdG8KKyAgICAgICAgIyBzb21ldGhpbmcgdGhhdCdzIGNsZWFybHkgaW52
YWxpZC4KKyAgICAgICAgPDwtRU5EX1NUQVRVU19DT01NQU5ECisgICAgICAgICAgRmlsZS5vcGVu
KCIje3N0YXR1c0ZpbGV9IiwgInciKSB7IHxmfAorICAgICAgICAgICAgICBmLnB1dHMoIiN7JHJ1
blVuaXF1ZUlkfSBcI3tzdGF0dXMubmlsPyA/IDk5OTk5OTk5OSA6IHN0YXR1c30gI3tzdGF0dXNf
Y29kZX0iKQorICAgICAgICAgIH0KKyAgICAgICAgRU5EX1NUQVRVU19DT01NQU5ECisgICAgZW5k
CisKKyAgICBkZWYgZmFpbENvbW1hbmQKKyAgICAgICAgPDwtRU5EX0ZBSUxfQ09NTUFORAorICAg
ICAgICAgICAgcHJpbnQgIkZBSUw6ICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShAbmFtZSl9XG4i
CisgICAgICAgICAgICAje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfRkFJTCl9CisgICAgICAg
ICAgICAje3JlcHJvU2NyaXB0Q29tbWFuZH0KKyAgICAgICAgRU5EX0ZBSUxfQ09NTUFORAorICAg
IGVuZAorCisgICAgZGVmIHN1Y2Nlc3NDb21tYW5kCisgICAgICAgIGlmICRwcm9ncmVzc01ldGVy
IG9yICR2ZXJib3NpdHkgPj0gMgorICAgICAgICAgICAgPDwtRU5EX1ZFUkJPU0VfU1VDQ0VTU19D
T01NQU5ECisgICAgICAgICAgICAgICAgcHJpbnQgIlBBU1M6ICN7U2hlbGx3b3Jkcy5zaGVsbGVz
Y2FwZShAbmFtZSl9XG4iCisgICAgICAgICAgICAgICAgI3tzdGF0dXNDb21tYW5kKFNUQVRVU19G
SUxFX1BBU1MpfQorICAgICAgICAgICAgRU5EX1ZFUkJPU0VfU1VDQ0VTU19DT01NQU5ECisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICIje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfUEFTUyl9
XG4iCisgICAgICAgIGVuZAorICAgIGVuZAorCisgICAgZGVmIHN0YXR1c0ZpbGUKKyAgICAgICAg
IiN7U1RBVFVTX0ZJTEVfUFJFRklYfSN7QGluZGV4fSIKKyAgICBlbmQKKworICAgIGRlZiB3cml0
ZVJ1blNjcmlwdChmaWxlbmFtZSkKKyAgICAgICAganNvbmZpbGVwYXJ0ID0gZmlsZW5hbWUuYmFz
ZW5hbWUudG9fcyArICIuanNvbiIKKyAgICAgICAganNvbmRpciA9IGZpbGVuYW1lLmRpcm5hbWUu
cGFyZW50ICsgIi5qc29uIgorICAgICAgICBpZiAoIWpzb25kaXIuZXhpc3Q/KQorICAgICAgICAg
ICAganNvbmRpci5ta2RpcgorICAgICAgICBlbmQKKyAgICAgICAgRmlsZS5vcGVuKGpzb25kaXIg
KyBqc29uZmlsZXBhcnQsICJ3IikgeworICAgICAgICAgICAgfG91dHB8CisKKyAgICAgICAgICAg
IGJhc2VEaXIgPSAoJHJ1bm5lckRpciArICIuLiIgKyBAZGlyZWN0b3J5KS5yZWFsZGlycGF0aAor
CisgICAgICAgICAgICBvdXRwLnB1dHMgSlNPTi5nZW5lcmF0ZSh7CisgICAgICAgICAgICAgICAg
bmFtZTogQG5hbWUsCisgICAgICAgICAgICAgICAgb3V0cHV0RGlyOiAkcnVubmVyRGlyLAorICAg
ICAgICAgICAgICAgIGJhc2VEaXI6IGJhc2VEaXIsCisgICAgICAgICAgICAgICAgZW52OiAkZW52
VmFycyArIEBhZGRpdGlvbmFsRW52LAorICAgICAgICAgICAgICAgIG91dHB1dE5hbWU6IEBuYW1l
LmdzdWIoLyhcXHxcLykvLCAnXycpLAorICAgICAgICAgICAgICAgIGNoZWNrU2NyaXB0OiBmaWxl
bmFtZSwKKyAgICAgICAgICAgICAgICBhcmdzOiBAYXJndW1lbnRzLAorICAgICAgICAgICAgICAg
IHN0YXR1c0ZpbGU6ICIje3N0YXR1c0ZpbGV9IiwKKyAgICAgICAgICAgIH0pCisgICAgICAgIH0K
KworICAgICAgICBGaWxlLm9wZW4oZmlsZW5hbWUsICJ3IikgeworICAgICAgICAgICAgfCBvdXRw
IHwKKyAgICAgICAgICAgICNvdXRwLnB1dHMgInByaW50IFwiUnVubmluZyAje1NoZWxsd29yZHMu
c2hlbGxlc2NhcGUoQG5hbWUpfVxcblwiIgorICAgICAgICAgICAgb3V0cC5wdXRzICIje3JlcHJv
U2NyaXB0SGVscGVyfSIKKyAgICAgICAgICAgIG91dHAucHV0cyAiYmVnaW4iCisgICAgICAgICAg
ICBvdXRwLnB1dHMgInJlcXVpcmUgJ29wZW4zJyIKKyAgICAgICAgICAgIG91dHAucHV0cyAicmVx
dWlyZSAnZmlsZXV0aWxzJyIKKworICAgICAgICAgICAgY21kID0gc2hlbGxDb21tYW5kCisKKyAg
ICAgICAgICAgIGNtZCArPSBAb3V0cHV0SGFuZGxlci5jYWxsKEBuYW1lKQorCisgICAgICAgICAg
ICBpZiAkdmVyYm9zaXR5ID49IDMKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMgInByaW50IFwi
I3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKGNtZCl9XFxuXCIiCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgIG91dHAucHV0cyBjbWQKKyAgICAgICAgICAgIEBlcnJvckhhbmRsZXIuY2FsbChv
dXRwLCBzZWxmKQorICAgICAgICAgICAgb3V0cC5wdXRzICJyZXNjdWUgUnVudGltZUVycm9yID0+
IGUiCisgICAgICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCBcIkZBSUw6ICN7U2hlbGx3b3Jk
cy5zaGVsbGVzY2FwZShAbmFtZSl9XFxuXCIiCisgICAgICAgICAgICBvdXRwLnB1dHMgIiAgICAj
e3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfRkFJTCl9IgorICAgICAgICAgICAgb3V0cC5wdXRz
ICJlbmQiCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitkZWYgcHJlcGFyZVBsYXlTdGF0aW9u
VGVzdFJ1bm5lcihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMpCisgICAgRmls
ZS5vcGVuKEBydW5uZXJEaXIgKyAicnVuc2NyaXB0IiwgInciKSB7CisgICAgICAgIHwgb3V0cCB8
CisgICAgICAgIHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IHBsYW4gfAorICAgICAgICAg
ICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICBuZXh0
CisgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgb3V0cC5wdXRzICIuLi8uanNvbi90ZXN0
X3NjcmlwdF8je3BsYW4uaW5kZXh9Lmpzb24iCisgICAgICAgIH0KKyAgICB9CitlbmQKKworY2xh
c3MgUGxheXN0YXRpb25UZXN0UnVubmVyIDwgVGVzdFJ1bm5lcgorICAgIGRlZiBwcmVwYXJlUnVu
bmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisg
ICAgICAgIEZpbGUub3BlbihAcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3IikgeworICAgICAg
ICAgICAgfCBvdXRwIHwKKyAgICAgICAgICAgIHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAgICAg
ICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAgICBpZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRlPyhw
bGFuKQorICAgICAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICAgICAgb3V0cC5wdXRzICIuLi8uanNvbi90ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9
Lmpzb24iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBlbmQKKyAgICBkZWYgY29tbWFu
ZChyZW1vdGVJbmRleD0wKQorICAgICAgICBvcHRpb25zID0gRU5WWyJKU0NURVNUX29wdGlvbnMi
XQorCisgICAgICAgIGZzUm9vdCA9ICRqc2NQYXRoLmRpcm5hbWUKKyAgICAgICAgY29tbWFuZCA9
ICJQbGF5U3RhdGlvblRlc3RSdW5uZXIgI3tvcHRpb25zfSAtbnVtUHJvY2Vzc2VzPSN7JG51bUNo
aWxkUHJvY2Vzc2VzLnRvX3N9IC1leGU9I3skanNjUGF0aH0gLWZzcm9vdD0je2ZzUm9vdH0gLS1y
dW5VbmlxdWVJZD0jeyRydW5VbmlxdWVJZH0gQCN7QHJ1bm5lckRpcn0vcnVuc2NyaXB0IgorCisg
ICAgICAgIHByaW50IGNvbW1hbmQKKworICAgICAgICByZXR1cm4gY29tbWFuZAorICAgIGVuZAor
ZW5kCisKK2NsYXNzIFRlc3RSdW5uZXJTaGVsbCA8IFBsYXlzdGF0aW9uVGVzdFJ1bm5lcgorZW5k
CisKK2NsYXNzIFRlc3RSdW5uZXJNYWtlIDwgUGxheXN0YXRpb25UZXN0UnVubmVyCitlbmQKKwor
Y2xhc3MgVGVzdFJ1bm5lclJ1YnkgPCBQbGF5c3RhdGlvblRlc3RSdW5uZXIKK2VuZApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC93cml0ZXItcnVi
eS5yYiBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qvd3JpdGVyLXJ1
YnkucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWQ3ZWE3NTExYjYzM2Y5ZTZhZTA5M2MyMmU2NDU0YTUwMjg3OTU4
NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNz
LXRlc3Qvd3JpdGVyLXJ1YnkucmIKQEAgLTAsMCArMSw0NzYgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAnb3BlbjMnCisKKyRoYXNEaWZmID0gZmFsc2UK
K2lmICgkaG9zdE9TID09ICd3aW5kb3dzJykKKyAgICBvdXQsIGVyciwgc3RhdHVzID0gT3BlbjMu
Y2FwdHVyZTMoIndoZXJlIiwgIi9xIiwgImRpZmYiKQorICAgICRoYXNEaWZmID0gc3RhdHVzLnN1
Y2Nlc3M/CitlbHNlCisgICAgb3V0LCBlcnIsIHN0YXR1cyA9IE9wZW4zLmNhcHR1cmUzKCJ3aGlj
aCIsICJkaWZmIikKKyAgICAkaGFzRGlmZiA9IHN0YXR1cy5zdWNjZXNzPworZW5kCisKKyMgUHJl
Zml4IGVhY2ggbGluZSBvZiBzdHIgd2l0aCB0aGUgbmFtZQorZGVmIHByZWZpeFN0cmluZyhzdHIs
IG5hbWUpCisgICAgIiN7c3RyfS5lbXB0eT8gPyBcIlwiIDogI3tzdHJ9LmdzdWIoL14vbSwgXCIj
e25hbWV9OiBcIikiCitlbmQKKworZGVmIHNpbGVudE91dHB1dEhhbmRsZXIKKyAgICBQcm9jLm5l
dyB7CisgICAgICAgIHwgbmFtZSB8CisgICAgICAgIDw8LUVORF9TSUxFTlRfT1VUUFVUX0hBTkRM
RVIKKyAgICAgICAgb3V0ID0gb3V0ICsgZXJyCisgICAgICAgIGVyciA9IG5pbAorICAgICAgICBT
VERPVVQucHV0cyAje3ByZWZpeFN0cmluZygib3V0IiwgbmFtZSl9IGlmICghb3V0LmVtcHR5PykK
KyAgICAgICAgRmlsZS5vcGVuKCIje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIu
LiIpICsgKG5hbWUgKyAiLm91dCIpKS50b19zKX0iLCAidyIpIGRvIHxvdXRfZmlsZXwKKyAgICAg
ICAgICAgIG91dF9maWxlLnB1dHMgb3V0CisgICAgICAgIGVuZAorICAgICAgICBFTkRfU0lMRU5U
X09VVFBVVF9IQU5ETEVSCisgICAgfQorZW5kCisKKyMgT3V0cHV0IGhhbmRsZXIgZm9yIHRlc3Rz
IHRoYXQgYXJlIGV4cGVjdGVkIHRvIHByb2R1Y2UgbWVhbmluZ2Z1bCBvdXRwdXQuCitkZWYgbm9p
c3lPdXRwdXRIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG5hbWUgfAorICAgICAg
ICA8PC1FTkRfTk9JU1lfT1VUUFVUX0hBTkRMRVIKKyAgICAgICAgb3V0ID0gb3V0ICsgZXJyCisg
ICAgICAgIGVyciA9IG5pbAorICAgICAgICBGaWxlLm9wZW4oIiN7U2hlbGx3b3Jkcy5zaGVsbGVz
Y2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3MpfSIsICJ3IikgZG8g
fG91dF9maWxlfAorICAgICAgICAgICAgb3V0X2ZpbGUucHV0cyBvdXQKKyAgICAgICAgZW5kCisg
ICAgICAgIEVORF9OT0lTWV9PVVRQVVRfSEFORExFUgorICAgIH0KK2VuZAorCisjIEVycm9yIGhh
bmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFjdGx5IHdoZW4gdGhleSByZXR1cm4gbm9uLXpl
cm8gZXhpdCBzdGF0dXMuCisjIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSB0ZXN0IGlzIGV4cGVjdGVk
IHRvIGZhaWwuCitkZWYgc2ltcGxlRXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAg
ICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylc
biIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJP
UjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxuXCIiLCBwbGFu
Lm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4uZmFpbENv
bW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAg
ICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAg
fQorZW5kCisKKyMgRXJyb3IgaGFuZGxlciBmb3IgdGVzdHMgdGhhdCBmYWlsIGV4YWN0bHkgd2hl
biB0aGV5IHJldHVybiB6ZXJvIGV4aXQgc3RhdHVzLgorZGVmIGV4cGVjdGVkRmFpbEVycm9ySGFu
ZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0
cC5wdXRzICJpZiBzdWNjZXNzKHN0YXR1cylcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJp
bnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgMFxcblwi
IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFu
LmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgorICAgICAgICBvdXRwLnB1
dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZFxu
IgorICAgIH0KK2VuZAorCisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgZmFpbCBleGFj
dGx5IHdoZW4gdGhleSByZXR1cm4gbm9uLXplcm8gZXhpdCBzdGF0dXMgYW5kIHByb2R1Y2UKKyMg
bG90cyBvZiBzcGV3LiBUaGlzIHdpbGwgZWNobyB0aGF0IHNwZXcgd2hlbiB0aGUgdGVzdCBmYWls
cy4KK2RlZiBub2lzeUVycm9ySGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBvdXRw
LCBwbGFuIHwKKyAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2VzcyhzdGF0dXMpXG4iCisgICAg
ICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFt
ZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmco
IlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0YXR1cy5leGl0c3RhdHVzfVxcblwi
IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFu
LmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgorICAgICAgICBvdXRwLnB1
dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZFxu
IgorICAgIH0KK2VuZAorCisgZGVmIGZhbGxiYWNrRGlmZihleHBlY3RlZCwgb3V0cHV0KQorICAg
IDw8LUVORF9GQUxMQkFDS19ESUZGCisgICAgICAgICAjIEZhbGxiYWNrIGRpZmYgZm9yIHdoZW4g
ZGlmZigxKSBpc24ndCBhdmFpbGFibGUKKyAgICAgICAgIGRpZmZzID0gW10KKyAgICAgICAgIGxp
bmVfbnVtYmVyID0gMAorICAgICAgICAgRmlsZS5vcGVuKCIje2V4cGVjdGVkfSIpIGRvIHwgZXhw
ZWN0ZWQgfAorICAgICAgICAgICAgIEZpbGUub3BlbigiI3tvdXRwdXR9IikgZG8gfCBhY3R1YWwg
fAorICAgICAgICAgICAgICAgICBsb29wIGRvCisgICAgICAgICAgICAgICAgICAgICBsMSA9IGV4
cGVjdGVkLmdldHMKKyAgICAgICAgICAgICAgICAgICAgIGwyID0gYWN0dWFsLmdldHMKKyAgICAg
ICAgICAgICAgICAgICAgIGlmIChsMSAhPSBsMikKKyAgICAgICAgICAgICAgICAgICAgICAgICBk
aWZmcy5wdXNoKFtsaW5lX251bWJlciwgbDEsIGwyXSkKKyAgICAgICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSBsaW5lX251bWJlciArIDEKKyAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrIGlmIChsMSA9PSBuaWwgJiYgbDIgPT0gbmlsKQorICAg
ICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICBlbmQKKyAgICAgICAgIGVuZAorICAgICAg
ICAgaXNEaWZmZXJlbnQgPSAhZGlmZnMuZW1wdHk/CisgICAgICAgICBkaWZmT3V0ID0gZGlmZnMu
bWFwIHsgCisgICAgICAgICAgICAgfCBkaWZmIHwgCisgICAgICAgICAgICAgIkBAIC1cI3tkaWZm
WzBdfSwxICtcI3tkaWZmWzBdfSwxIEBAXFxuIiArCisgICAgICAgICAgICAgKGRpZmZbMV0gPyAi
LVwje2RpZmZbMV19IiA6ICIiKSArIAorICAgICAgICAgICAgIChkaWZmWzJdID8gIitcI3tkaWZm
WzJdfSIgOiAiIikKKyAgICAgICAgfS5qb2luKCIiKQorICAgIEVORF9GQUxMQkFDS19ESUZGCitl
bmQKKworZGVmIHJ1bkRpZmYoZXhwZWN0ZWQsIG91dHB1dCkKKyAgICA8PC1FTkRfUlVOX0RJRkYK
KyAgICAgICAgZGlmZk91dCwgZGlmZlN0YXR1cyA9IE9wZW4zLmNhcHR1cmUyKCJkaWZmIiwKKyAg
ICAgICAgICAgICItLXN0cmlwLXRyYWlsaW5nLWNyIiwKKyAgICAgICAgICAgICItdSIsCisgICAg
ICAgICAgICAiI3tleHBlY3RlZH0iLAorICAgICAgICAgICAgIiN7b3V0cHV0fSIpOworICAgICAg
ICBpc0RpZmZlcmVudCA9ICFkaWZmU3RhdHVzLnN1Y2Nlc3M/CisgICAgRU5EX1JVTl9ESUZGCitl
bmQKKworIyBHZXQgYSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGZpbGVzLCB1c2luZyBkaWZmIHdo
ZXJlIGF2YWlsYWJsZSwgZmFsbGluZyBiYWNrCisjIG9uIGEgbGltaXRlZCBjb21wYXJpc29uIHdo
ZW4gZGlmZiBpcyBub3QgYXZhaWxhYmxlCitkZWYgZ2V0RGlmZihleHBlY3RlZCwgb3V0cHV0KQor
ICAgIGlmICRoYXNEaWZmCisgICAgICAgIHJ1bkRpZmYoZXhwZWN0ZWQsIG91dHB1dCkKKyAgICBl
bHNlCisgICAgICAgIGZhbGxiYWNrRGlmZihleHBlY3RlZCxvdXRwdXQpCisgICAgZW5kCitlbmQK
KworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IGRpZmYgdGhlaXIgb3V0cHV0IHdpdGgg
c29tZSBleHBlY3RhdGlvbi4KK2RlZiBkaWZmRXJyb3JIYW5kbGVyKGV4cGVjdGVkRmlsZW5hbWUp
CisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAsIHBsYW4gfAorICAgICAgICBvdXRwdXRG
aWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4u
bmFtZSArICIub3V0IikpLnRvX3MpCisgICAgICAgIAorICAgICAgICBvdXRwLnB1dHMgImlmICFz
dWNjZXNzKHN0YXR1cylcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZp
eFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
cHJpbnQgIiArIHByZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7
c3RhdHVzLmV4aXRzdGF0dXN9XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRw
LnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVsc2lm
IEZpbGUuZXhpc3RzPyhcIi4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVu
YW1lKX1cIilcbiIKKyAgICAgICAgb3V0cC5wdXRzIGdldERpZmYoIi4uLyN7U2hlbGx3b3Jkcy5z
aGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0iLCBvdXRwdXRGaWxlbmFtZSkKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgaWYgaXNEaWZmZXJlbnRcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
ICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRElGRiBGQUlMVVJFIVxcblwiIiwgcGxhbi5u
YW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIHByaW50ICIgKyBwcmVmaXhT
dHJpbmcoImRpZmZPdXQiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAg
ICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICIgICAgZWxzZSIK
KyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAg
ICAgIG91dHAucHV0cyAiICAgIGVuZCIKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisgICAg
ICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiTk8gRVhQRUNUQVRJ
T04hXFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmlu
dCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRw
LnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZCIK
KyAgICB9CitlbmQKKworIyBFcnJvciBoYW5kbGVyIGZvciB0ZXN0cyB0aGF0IHJlcG9ydCBlcnJv
ciBieSBzYXlpbmcgImZhaWxlZCEiLiBUaGlzIGlzIHVzZWQgYnkgTW96aWxsYQorIyB0ZXN0cy4K
K2RlZiBtb3ppbGxhRXJyb3JIYW5kbGVyCisgICAgUHJvYy5uZXcgeworICAgICAgICB8IG91dHAs
IHBsYW4gfAorICAgICAgICBvdXRwLnB1dHMgImlmICFzdWNjZXNzKHN0YXR1cylcbiIKKyAgICAg
ICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1l
KSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygi
XCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGUgXCN7c3RhdHVzLmV4aXRzdGF0dXN9XFxuXCIi
LCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgIiArIHBsYW4u
ZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAvZmFpbGVkIS9pID1+IG91dFxu
IgorICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJcIkRldGVj
dGVkIGZhaWx1cmVzOlxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRz
ICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0IiwgcGxhbi5uYW1lKSArICJcbiIKKyAg
ICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5w
dXRzICJlbHNlXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21t
YW5kCisgICAgICAgIG91dHAucHV0cyAiZW5kXG4iCisgICAgfQorZW5kCisKKyMgRXJyb3IgaGFu
ZGxlciBmb3IgdGVzdHMgdGhhdCByZXBvcnQgZXJyb3IgYnkgc2F5aW5nICJmYWlsZWQhIiwgYW5k
IGFyZSBleHBlY3RlZCB0bworIyBmYWlsLiBUaGlzIGlzIHVzZWQgYnkgTW96aWxsYSB0ZXN0cy4K
K2RlZiBtb3ppbGxhRmFpbEVycm9ySGFuZGxlcgorICAgIFByb2MubmV3IHsKKyAgICAgICAgfCBv
dXRwLCBwbGFuIHwKKyAgICAgICAgb3V0cC5wdXRzICJpZiAhc3VjY2VzcyhzdGF0dXMpXG4iCisg
ICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLnN1Y2Nlc3NDb21tYW5kCisgICAgICAgIG91
dHAucHV0cyAiZWxzaWYgL2ZhaWxlZCEvaSA9fiBvdXRcbiIKKyAgICAgICAgb3V0cC5wdXRzICIg
ICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNlXG4iCisg
ICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiTk9USUNFOiBZ
b3UgbWFkZSB0aGlzIHRlc3QgcGFzcywgYnV0IGl0IHdhcyBleHBlY3RlZCB0byBmYWlsXFxuXCIi
LCBwbGFuLm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWls
Q29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgorICAgIH0KK2VuZAorCisjIEVycm9y
IGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IGVycm9yIGJ5IHNheWluZyAiZmFpbGVkISIs
IGFuZCBhcmUgZXhwZWN0ZWQgdG8gaGF2ZQorIyBhbiBleGl0IGNvZGUgb2YgMy4KK2RlZiBtb3pp
bGxhRXhpdDNFcnJvckhhbmRsZXIKKyAgICBQcm9jLm5ldyB7CisgICAgICAgIHwgb3V0cCwgcGxh
biB8CisgICAgICAgIG91dHAucHV0cyAiaWYgc3VjY2VzcyhzdGF0dXMpXG4iCisgICAgICAgIG91
dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAi
XG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJS
T1I6IFRlc3QgZXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHJldHVybmVkIHN1Y2Nlc3NmdWxseVxcblwi
IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgICIgKyBwbGFu
LmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzaWYgc3RhdHVzLmV4aXRzdGF0dXMg
IT0gMyIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0cmluZygib3V0
IiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHBy
ZWZpeFN0cmluZygiXCJFUlJPUjogVW5leHBlY3RlZCBleGl0IGNvZGU6IFwje3N0YXR1cy5leGl0
c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAg
ICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisgICAgICAgIG91dHAucHV0cyAiZWxzaWYgL2ZhaWxl
ZCEvaSA9fiBvdXRcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgcHJpbnQgIiArIHByZWZpeFN0
cmluZygiXCJEZXRlY3RlZCBmYWlsdXJlczpcXG5cIiIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAg
ICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhTdHJpbmcoIm91dCIsIHBsYW4ubmFt
ZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCisg
ICAgICAgIG91dHAucHV0cyAiZWxzZVxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxh
bi5zdWNjZXNzQ29tbWFuZAorICAgICAgICBvdXRwLnB1dHMgImVuZFxuIgorICAgIH0KK2VuZAor
CisjIEVycm9yIGhhbmRsZXIgZm9yIHRlc3RzIHRoYXQgcmVwb3J0IHN1Y2Nlc3MgYnkgc2F5aW5n
ICJQYXNzZWQiIG9yIGVycm9yIGJ5IHNheWluZyAiRkFJTEVEIi4KKyMgVGhpcyBpcyB1c2VkIGJ5
IENoYWtyYSB0ZXN0cy4KK2RlZiBjaGFrcmFQYXNzRmFpbEVycm9ySGFuZGxlcgorICAgIFByb2Mu
bmV3IHsKKyAgICAgICAgfCBvdXRwLCBwbGFuIHwKKyAgICAgICAgb3V0cC5wdXRzICJpZiAhc3Vj
Y2VzcyhzdGF0dXMpXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVmaXhT
dHJpbmcoIm91dCIsIHBsYW4ubmFtZSkgKyAiXG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHBy
aW50ICIgKyBwcmVmaXhTdHJpbmcoIlwiRVJST1I6IFVuZXhwZWN0ZWQgZXhpdCBjb2RlIFwje3N0
YXR1cy5leGl0c3RhdHVzfVxcblwiIiwgcGxhbi5uYW1lKSArICJcbiIKKyAgICAgICAgb3V0cC5w
dXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbHNpZiAv
RkFJTEVEL2kgPX4gb3V0XG4iCisgICAgICAgIG91dHAucHV0cyAiICAgIHByaW50ICIgKyBwcmVm
aXhTdHJpbmcoIlwiRGV0ZWN0ZWQgZmFpbHVyZXM6XFxuXCIiLCBwbGFuLm5hbWUpICsgIlxuIgor
ICAgICAgICBvdXRwLnB1dHMgIiAgICBwcmludCAiICsgcHJlZml4U3RyaW5nKCJvdXQiLCBwbGFu
Lm5hbWUpICsgIlxuIgorICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFu
ZAorICAgICAgICBvdXRwLnB1dHMgImVsc2VcbiIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgIiAr
IHBsYW4uc3VjY2Vzc0NvbW1hbmQKKyAgICAgICAgb3V0cC5wdXRzICJlbmRcbiIKKyAgIH0KK2Vu
ZAorCitjbGFzcyBQbGFuIDwgQmFzZVBsYW4KKyAgICBkZWYgc2hlbGxDb21tYW5kIAorICAgICAg
ICBzY3JpcHQgPSAib3V0ID0gbmlsXG4iCisgICAgICAgIHNjcmlwdCArPSAiZXJyID0gbmlsXG4i
CisgICAgICAgIHNjcmlwdCArPSAic3RhdHVzID0gbmlsXG4iCisgICAgICAgIHNjcmlwdCArPSAi
RGlyLmNoZGlyKFwiLi4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBkaXJlY3RvcnkudG9fcyl9
XCIpIGRvXG4iCisgICAgICAgIHNjcmlwdCArPSAiICBlbnYgPSB7fVxuIgorICAgICAgICAoJGVu
dlZhcnMgKyBhZGRpdGlvbmFsRW52KS5lYWNoIHsKKyAgICAgICAgICAgIHx2YXJ8IAorICAgICAg
ICAgICAgKGtleSwgdmFsdWUpID0gdmFyLnNwbGl0KC89LywgMikKKyAgICAgICAgICAgIHNjcmlw
dCArPSAiICBlbnZbXCIje2tleX1cIl0gPSBcIiN7dmFsdWV9XCJcbiIKKyAgICAgICAgfQorICAg
ICAgICBzY3JpcHQgKz0gIiAgICBvdXQsIGVyciwgc3RhdHVzID0gT3BlbjMuY2FwdHVyZTMoZW52
LCBcbiIKKyAgICAgICAgc2NyaXB0ICs9IEBhcmd1bWVudHMubWFwIHsgfCBhcmd1bWVudCB8ICIg
ICAgICAgIFwiI3thcmd1bWVudH1cIiJ9LmpvaW4oIixcbiIpCisgICAgICAgIHNjcmlwdCArPSAi
ICAgIClcbiIKKyAgICAgICAgc2NyaXB0ICs9ICJlbmRcbiIKKyAgICAgICAgcmV0dXJuIHNjcmlw
dAorICAgIGVuZAorCisgICAgZGVmIHJlcHJvU2NyaXB0SGVscGVyCisgICAgICAgIHNjcmlwdCA9
ICJkZWYgZXJyb3Jfc2NyaXB0X2NvbnRlbnRzXG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgIDw8
LUVORF9PRl9TQ1JJUFRcbiIKKyAgICAgICAgc2NyaXB0ICs9ICIgICAgICAgIHJlcXVpcmUgJ29w
ZW4zJ1xuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgZGVmIHN1Y2Nlc3Moc3RhdHVzKVxu
IgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIHN0YXR1cy5zdWNjZXNzP1xuIgorICAg
ICAgICBzY3JpcHQgKz0gIiAgICAgICAgZW5kXG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAg
ICBzY3JpcHRfbG9jYXRpb24gPSBGaWxlLmV4cGFuZF9wYXRoKEZpbGUuZGlybmFtZShfX0ZJTEVf
XykpXG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICBEaXIuY2hkaXIoXCJcXFwje3Njcmlw
dF9sb2NhdGlvbn0iCisgICAgICAgIFBhdGhuYW1lLm5ldyhAbmFtZSkuZGlybmFtZS5lYWNoX2Zp
bGVuYW1lIHsKKyAgICAgICAgICAgIHwgcGF0aENvbXBvbmVudCB8CisgICAgICAgICAgICBzY3Jp
cHQgKz0gIi8uLiIKKyAgICAgICAgfQorICAgICAgICBzY3JpcHQgKz0gIi8ucnVubmVyXCIpIGRv
XG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICAgICAgRU5WW1wiRFlMRF9GUkFNRVdPUktf
UEFUSFwiXSA9IFwiI3skdGVzdGluZ0ZyYW1ld29ya1BhdGguZGlybmFtZX1cIlxuIgorICAgICAg
ICBzY3JpcHQgKz0gIiAgICAgICAgICAgIEVOVltcIkpTQ1RFU1RfdGltZW91dFwiXSA9IFwiI3tF
TlZbJ0pTQ1RFU1RfdGltZW91dCddfVwiXG4iCisgICAgICAgIHNjcmlwdCArPSAiICAgICAgICAg
ICAgRU5WW1wiSlNDVEVTVF9oYXJkVGltZW91dFwiXSA9IFwiI3tFTlZbJ0pTQ1RFU1RfaGFyZFRp
bWVvdXQnXX1cIlxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgIEVOVltcIkpTQ1RF
U1RfbWVtb3J5TGltaXRcIl0gPSBcIiN7RU5WWydKU0NURVNUX21lbW9yeUxpbWl0J119XCJcbiIK
KworICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgICAgICN7c2hlbGxDb21tYW5kfSIKKyAgICAg
ICAgc2NyaXB0ICs9ICIgICAgICAgICAgICBwcmludCBvdXRcbiIKKyAgICAgICAgc2NyaXB0ICs9
ICIgICAgICAgICAgICBpZiAoIXN1Y2Nlc3Moc3RhdHVzKSlcbiIKKyAgICAgICAgc2NyaXB0ICs9
ICIgICAgICAgICAgICAgICAgZXhpdCgxKVxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAg
ICAgIGVuZFxuIgorICAgICAgICBzY3JpcHQgKz0gIiAgICAgICAgZW5kXG4iCisgICAgICAgIHNj
cmlwdCArPSAiICAgIEVORF9PRl9TQ1JJUFRcbiIKKyAgICAgICAgc2NyaXB0ICs9ICJlbmRcbiIK
KyAgICAgICAgcmV0dXJuIHNjcmlwdAorICAgIGVuZAorICAgIAorICAgIGRlZiByZXByb1Njcmlw
dENvbW1hbmQKKyAgICAgICAgPDwtRU5EX1JFUFJPX1NDUklQVF9DT01NQU5ECisgICAgICAgICAg
ICBGaWxlLm9wZW4oIiN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUubmV3KCIuLiIp
ICsgQG5hbWUpLnRvX3MpfSIsICJ3IikgZG8gfHNjcnwKKyAgICAgICAgICAgICAgICBzY3IucHV0
cyAiXCN7ZXJyb3Jfc2NyaXB0X2NvbnRlbnRzfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBF
TkRfUkVQUk9fU0NSSVBUX0NPTU1BTkQKKyAgICBlbmQKKworICAgIGRlZiBzdGF0dXNDb21tYW5k
KHN0YXR1c19jb2RlKQorICAgICAgICAjIE1heSBiZSBjYWxsZWQgaW4gdGggcmVzY3VlIGJsb2Nr
LCBzbyBzdGF0dXMgaXMgbm90CisgICAgICAgICMgZ3VhcmFudGVlZCB0byBiZSBzZXQ7IGlmIGl0
IGlzbid0LCBzZXQgdGhlIGV4aXQgY29kZSB0bworICAgICAgICAjIHNvbWV0aGluZyB0aGF0J3Mg
Y2xlYXJseSBpbnZhbGlkLgorICAgICAgICA8PC1FTkRfU1RBVFVTX0NPTU1BTkQKKyAgICAgICAg
ICBGaWxlLm9wZW4oIiN7c3RhdHVzRmlsZX0iLCAidyIpIHsgfGZ8CisgICAgICAgICAgICAgIGYu
cHV0cygiI3skcnVuVW5pcXVlSWR9IFwje3N0YXR1cy5uaWw/ID8gOTk5OTk5OTk5IDogc3RhdHVz
LmV4aXRzdGF0dXN9ICN7c3RhdHVzX2NvZGV9IikKKyAgICAgICAgICB9CisgICAgICAgIEVORF9T
VEFUVVNfQ09NTUFORAorICAgIGVuZAorCisgICAgZGVmIGZhaWxDb21tYW5kCisgICAgICAgIDw8
LUVORF9GQUlMX0NPTU1BTkQKKyAgICAgICAgICAgIHByaW50ICJGQUlMOiAje1NoZWxsd29yZHMu
c2hlbGxlc2NhcGUoQG5hbWUpfVxuIgorICAgICAgICAgICAgI3tzdGF0dXNDb21tYW5kKFNUQVRV
U19GSUxFX0ZBSUwpfQorICAgICAgICAgICAgI3tyZXByb1NjcmlwdENvbW1hbmR9CisgICAgICAg
IEVORF9GQUlMX0NPTU1BTkQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc3VjY2Vzc0NvbW1hbmQK
KyAgICAgICAgaWYgJHByb2dyZXNzTWV0ZXIgb3IgJHZlcmJvc2l0eSA+PSAyCisgICAgICAgICAg
ICA8PC1FTkRfVkVSQk9TRV9TVUNDRVNTX0NPTU1BTkQKKyAgICAgICAgICAgICAgICBwcmludCAi
UEFTUzogI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBuYW1lKX1cbiIKKyAgICAgICAgICAgICAg
ICAje3N0YXR1c0NvbW1hbmQoU1RBVFVTX0ZJTEVfUEFTUyl9CisgICAgICAgICAgICBFTkRfVkVS
Qk9TRV9TVUNDRVNTX0NPTU1BTkQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIiN7c3RhdHVz
Q29tbWFuZChTVEFUVVNfRklMRV9QQVNTKX1cbiIKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAg
CisgICAgZGVmIHN0YXR1c0ZpbGUKKyAgICAgICAgIiN7U1RBVFVTX0ZJTEVfUFJFRklYfSN7QGlu
ZGV4fSIKKyAgICBlbmQKKworICAgIGRlZiB3cml0ZVJ1blNjcmlwdChmaWxlbmFtZSkKKyAgICAg
ICAgRmlsZS5vcGVuKGZpbGVuYW1lLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAg
ICAgICAgICBvdXRwLnB1dHMgInByaW50IFwiUnVubmluZyAje1NoZWxsd29yZHMuc2hlbGxlc2Nh
cGUoQG5hbWUpfVxcblwiIgorICAgICAgICAgICAgb3V0cC5wdXRzICIje3JlcHJvU2NyaXB0SGVs
cGVyfSIKKyAgICAgICAgICAgIG91dHAucHV0cyAiYmVnaW4iCisgICAgICAgICAgICBvdXRwLnB1
dHMgInJlcXVpcmUgJ29wZW4zJyIKKyAgICAgICAgICAgIG91dHAucHV0cyAicmVxdWlyZSAnZmls
ZXV0aWxzJyIKKyAgICAgICAgICAgIG91dHAucHV0cyAiZGVmIHN1Y2Nlc3Moc3RhdHVzKSIKKyAg
ICAgICAgICAgIG91dHAucHV0cyAiICAgc3RhdHVzLnN1Y2Nlc3M/IgorICAgICAgICAgICAgb3V0
cC5wdXRzICJlbmQiCisKKyAgICAgICAgICAgIGNtZCA9IHNoZWxsQ29tbWFuZAorCisgICAgICAg
ICAgICBjbWQgKz0gQG91dHB1dEhhbmRsZXIuY2FsbChAbmFtZSkKKworICAgICAgICAgICAgaWYg
JHZlcmJvc2l0eSA+PSAzCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJwcmludCBcIiN7U2hl
bGx3b3Jkcy5zaGVsbGVzY2FwZShjbWQpfVxcblwiIgorICAgICAgICAgICAgZW5kCisgICAgICAg
ICAgICBvdXRwLnB1dHMgY21kCisgICAgICAgICAgICBAZXJyb3JIYW5kbGVyLmNhbGwob3V0cCwg
c2VsZikKKyAgICAgICAgICAgIG91dHAucHV0cyAicmVzY3VlIgorICAgICAgICAgICAgb3V0cC5w
dXRzICIgICAgcHJpbnQgXCJGQUlMOiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQG5hbWUpfVxc
blwiIgorICAgICAgICAgICAgb3V0cC5wdXRzICIgICAgI3tzdGF0dXNDb21tYW5kKFNUQVRVU19G
SUxFX0ZBSUwpfSIKKyAgICAgICAgICAgIG91dHAucHV0cyAiZW5kIgorICAgICAgICB9CisgICAg
ZW5kCitlbmQKKworY2xhc3MgVGVzdFJ1bm5lclNoZWxsIDwgVGVzdFJ1bm5lcgorICAgIGRlZiBw
cmVwYXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3Rl
SG9zdHMpCisgICAgICAgIEZpbGUub3BlbigiI3tAcnVubmVyRGlyICsgInJ1bnNjcmlwdCJ9Iiwg
InciKSB7IHxmfAorICAgICAgICAgICAgcnVubGlzdC5lYWNoIHsgfHBsYW58CisgICAgICAgICAg
ICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICAg
ICAgbmV4dAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGYucHV0cygicnVi
eSB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9IikKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBgZG9zMnVuaXggI3tAcnVubmVyRGlyICsgInJ1bnNjcmlwdCJ9YAorICAgIGVuZAor
ICAgIGRlZiBjb21tYW5kKHJlbW90ZUluZGV4PTApCisgICAgICAgICJzaCBydW5zY3JpcHQiCisg
ICAgZW5kCitlbmQKKworY2xhc3MgVGVzdFJ1bm5lck1ha2UgPCBUZXN0UnVubmVyCisgICAgZGVm
IG91dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgcHJlcmVxcykKKyAgICAgICAgaW5kZXggPSBwbGFu
LmluZGV4CisgICAgICAgIHRhcmdldCA9ICJ0ZXN0X2RvbmVfI3tpbmRleH0iCisgICAgICAgIG91
dHAucHV0cyAiI3t0YXJnZXR9OiAje3ByZXJlcXMuam9pbigiICIpfSIKKyAgICAgICAgb3V0cC5w
dXRzICJcdHJ1YnkgdGVzdF9zY3JpcHRfI3tpbmRleH0iCisgICAgICAgIHRhcmdldAorICAgIGVu
ZAorICAgIGRlZiBwcmVwYXJlUnVubmVyRm9yUmVtb3RlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBj
b21wbGV0ZWRQbGFucywgcmVtb3RlSW5kZXgpCisgICAgICAgIHJ1blBsYW5zID0gW10KKyAgICAg
ICAgc2VyaWFsUnVuUGxhbnMgPSBbXQorICAgICAgICBydW5saXN0LmVhY2ggeworICAgICAgICAg
ICAgfCBwbGFuIHwKKyAgICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4p
CisgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBpZiBA
cmVtb3RlSG9zdHMubmlsPyBvciBwbGFuLmluZGV4ICUgQHJlbW90ZUhvc3RzLmxlbmd0aCA9PSBy
ZW1vdGVJbmRleAorICAgICAgICAgICAgICAgIGlmIHNlcmlhbFBsYW5zLmluY2x1ZGU/KHBsYW4p
CisgICAgICAgICAgICAgICAgICAgIHNlcmlhbFJ1blBsYW5zIDw8IHBsYW4KKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJ1blBsYW5zIDw8IHBsYW4KKyAgICAgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisKKyAgICAgICAgRmlsZS5v
cGVuKEBydW5uZXJEaXIgKyAiTWFrZWZpbGUuI3tyZW1vdGVJbmRleH0iLCAidyIpIHsKKyAgICAg
ICAgICAgIHwgb3V0cCB8CisgICAgICAgICAgICBpZiBzZXJpYWxSdW5QbGFucy5lbXB0eT8KKyAg
ICAgICAgICAgICAgICBvdXRwLnB1dHMoImFsbDogcGFyYWxsZWwiKQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHNlcmlhbFByZXJlcSA9ICJ0ZXN0X2RvbmVfI3tzZXJpYWxSdW5Q
bGFuc1stMV0uaW5kZXh9IgorICAgICAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiAje3Nlcmlh
bFByZXJlcX0iKQorICAgICAgICAgICAgICAgIHByZXZfdGFyZ2V0ID0gInBhcmFsbGVsIgorICAg
ICAgICAgICAgICAgIHNlcmlhbFJ1blBsYW5zLmVhY2ggeworICAgICAgICAgICAgICAgICAgICB8
IHBsYW4gfAorICAgICAgICAgICAgICAgICAgICBwcmV2X3RhcmdldCA9IG91dHB1dF90YXJnZXQo
b3V0cCwgcGxhbiwgW3ByZXZfdGFyZ2V0XSkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbmQKKyAgICAgICAgICAgIHBhcmFsbGVsVGFyZ2V0cyA9IHJ1blBsYW5zLmNvbGxlY3Qgewor
ICAgICAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICAgICAgb3V0cHV0X3RhcmdldChv
dXRwLCBwbGFuLCBbXSkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dHAucHV0cygicGFy
YWxsZWw6ICIgKyBwYXJhbGxlbFRhcmdldHMuam9pbigiICIpKQorICAgICAgICB9CisgICAgZW5k
CisgICAgZGVmIHByZXBhcmVSdW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBs
YW5zLCByZW1vdGVIb3N0cykKKyAgICAgICAgaWYgcmVtb3RlSG9zdHMubmlsPworICAgICAgICAg
ICAgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVk
UGxhbnMsIDApCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW90ZUhvc3RzLmVhY2hfaW5k
ZXggeworICAgICAgICAgICAgICAgIHxyZW1vdGVJbmRleHwKKyAgICAgICAgICAgICAgICBwcmVw
YXJlUnVubmVyRm9yUmVtb3RlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywg
cmVtb3RlSW5kZXgpCisgICAgICAgICAgICB9CisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRl
ZiBjb21tYW5kKHJlbW90ZUluZGV4PTApCisgICAgICAgICJtYWtlIC1qICN7JG51bUNoaWxkUHJv
Y2Vzc2VzfSAtcyAtZiBNYWtlZmlsZS4je3JlbW90ZUluZGV4fSIKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBUZXN0UnVubmVyUnVieSA8IFRlc3RSdW5uZXIKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihy
dW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAg
ICBGaWxlLm9wZW4oQHJ1bm5lckRpciArICJydW5zY3JpcHQiLCAidyIpIHsKKyAgICAgICAgICAg
IHwgb3V0cCB8CisgICAgICAgICAgICBydW5saXN0LmVhY2ggeworICAgICAgICAgICAgICAgIHwg
cGxhbiB8CisgICAgICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikK
KyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgICAgIG91dHAucHV0cyAic3lzdGVtIFwicnVieSB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9
XCIiCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBlbmQKKyAgICBkZWYgY29tbWFuZChy
ZW1vdGVJbmRleD0wKQorICAgICAgICAicnVieSBydW5zY3JpcHQiCisgICAgZW5kCitlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443557</attachid>
            <date>2021-11-08 09:16:29 -0800</date>
            <delta_ts>2021-11-09 03:30:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232529-20211108181627.patch</filename>
            <type>text/plain</type>
            <size>122701</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGZkNjUwZTg4MTY3N2JhZjFkNGYwOGI5MDczOGRlMDll
MDlmYTRkZC4uNWVjZjg5YjQyNmU3ZTE5NTQ3M2YwYmQ5MDgzY2NmZGJjMTBjMzcwYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3
IEBACisyMDIxLTExLTA4ICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIE1vdmUgZGV0ZWN0aW9uIG9mIGZsYWt5IEpTQyB0ZXN0cyB0byBydW4t
anNjLXN0cmVzcy10ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMyNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ3VycmVudGx5LCBmbGFreSBkZXRlY3Rpb24gaGFwcGVucyBieQorICAgICAgICBS
ZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgdGhhdCB3
ZSBlbmQgdXAKKyAgICAgICAgcmVydW5uaW5nIGFsbCBKU0MgdGVzdHMgd2hlbiB0aGVyZSdzIGV2
ZW4gYSBzaW5nbGUgZmFpbHVyZS4gRXZlbgorICAgICAgICB3b3JzZSwgd2hlbiB0aGUgdHJlZSBp
cyBicm9rZW4gKGFzIHNvbWV0aW1lcyBoYXBwZW5zIG9uIEFSTTMyIGFuZAorICAgICAgICBNSVBT
KSB3ZSBlbmQgdXAKKworICAgICAgICAxLiBydW5uaW5nIHRoZSB0ZXN0cyBvbmNlICh0aGV5IGZh
aWwpCisgICAgICAgIDIuIHJ1bm5pbmcgYWxsIHRlc3RzIGFnYWluCisgICAgICAgIDMuIHJ1bm5p
bmcgYWxsIHRlc3RzIGFnYWluIHdpdGhvdXQgdGhlIHBhdGNoCisKKyAgICAgICAgVGhpcyBtZWFu
cyB0aGUgcXVldWUgc2xvd3MgZG93biBhIGxvdCwgc2luY2UgaXQgcnVucyBhbGwgSlNDCisgICAg
ICAgIHN0cmVzcyB0ZXN0cyAzIHRpbWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gZWxpbWluYXRlIHN0ZXAgMiwgd2hpbGUgYWxzbyBiZWluZyBtb3JlCisgICAgICAgIHJlbGlh
YmxlIGFib3V0IGhhbmRsaW5nIGZsYWt5IHRlc3RzLiBTaW5jZSB3ZSBubyBsb25nZXIgbmVlZCB0
bworICAgICAgICByZXJ1biB0aGUgd2hvbGUgdGVzdCBzdWl0ZSwgd2UgY2FuIHNwZW5kIG1vcmUg
Q1BVIHRpbWUgb24KKyAgICAgICAgaWRlbnRpZnlpbmcgdGVzdHMgdGhhdCBtaWdodCBiZSBmbGFr
eS4gVGhlIHVzZXIgY2FuIHBhc3MgaW4KKyAgICAgICAgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5
PXBhc3NQZXJjZW50YWdlLG1heFRyaWVzLG1heEZhaWxpbmcuIElmCisgICAgICAgIGxlc3MgdGhh
biBtYXhGYWlsaW5nIHRlc3RzIGZhaWxlZCwgd2UgcnVuIHRoZW0gYWdhaW4gKHVwIHRvCisgICAg
ICAgIG1heFRyaWVzKSB1bnRpbCB3ZSBjYW4gdGVsbCB3aGV0aGVyIHRoZXkgcGFzcyBtb3JlIHRo
YW4KKyAgICAgICAgcGFzc1BlcmNlbnRhZ2Ugb2YgdGhlIHRpbWUuIFRoaXMgc2hvdWxkIHJlc3Vs
dCBpbiBsZXNzIGZhbHNlCisgICAgICAgIHBvc2l0aXZlcyBjb21wYXJlZCB0byBSZVJ1bkphdmFT
Y3JpcHRDb3JlVGVzdHMsIGFzIHdlJ2xsIG5vIGxvbmdlcgorICAgICAgICBkZWNsYXJlIGEgZmxh
a3kgdGVzdCBhIGZhaWx1cmUgaWYgaXQgaGFwcGVucyB0byBmYWlsIHR3byB0aW1lcyBpbgorICAg
ICAgICBhIHJvdy4gSW4gb3JkZXIgdG8gcmVtb3ZlIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cywg
dGhlIHBhdGNoCisgICAgICAgIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIC0tdHJlYXQtZmFpbGlu
Zy1hcy1mbGFreSBieSBkZWZhdWx0IGluIHRoZQorICAgICAgICBKU0MgRVdTIHF1ZXVlcy4KKwor
ICAgICAgICBJbXBsZW1lbnRhdGlvbi13aXNlLCB0aGUgcGF0Y2ggZ2VuZXJhbGl6ZXMgdGhlIGV4
aXN0aW5nIHJldHJ5IGxvb3AgaW4KKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgKGZvciBk
ZWFsaW5nIHdpdGggZmxha3kgcmVtb3RlIGhvc3RzKSB0byAoYSkgd29yaworICAgICAgICB3aXRo
IGFueSBydW5uZXIgYW5kIChiKSBhbHNvIHJldHJ5IGZsYWt5IHRlc3RzLiBBcyBmbGFreSBoYW5k
bGluZyBpcworICAgICAgICBpbXByYWN0aWNhbCB0byB0ZXN0IG1hbnVhbGx5LCBpdCBhbHNvIGFi
c3RyYWN0cy1vdXQgdGhlIHJldHJ5IGxvZ2ljIHNvCisgICAgICAgIHRoYXQgd2UgY2FuIHRlc3Qg
d2l0aCBwcmVkZXRlcm1pbmVkIHJlc3VsdHMuIFRoaXMgbWVhbnMgd2UgbmVlZCB0bworICAgICAg
ICBlLmcuIHBhc3MgdGhlIHJ1bmxpc3QgYXJvdW5kIGluc3RlYWQgb2YgdHJlYXRpbmcgaXQgYXMg
YSBnbG9iYWwsCisgICAgICAgIGNhcHR1cmluZyB0aGUgbWFpbiBsb2dpYyBpbiBjbGFzc2VzIGFu
ZCBoYXZpbmcgYSBzdWJjbGFzcyBwcm92aWRlCisgICAgICAgIG1ldGhvZHMgdG8gYmUgY2FsbGVk
IGJhY2sgYW5kIHNvIG9uLiBUaGUgcGF0Y2ggZG9lcyBub3Qgc2h5IGF3YXkgZnJvbQorICAgICAg
ICByZWZhY3RvcmluZyBjb2RlIHdoZW4gaXQgbWFrZXMgc2Vuc2UgYnV0IGFsc28gZG9lc24ndCBn
byBvdXQgb2YgaXRzCisgICAgICAgIHdheSB0byByZWZhY3RvciAoZS5nLiB0aGVyZSdzIHN0aWxs
IGEgbG90IG9mIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlCisgICAgICAgIGRlZmF1bHQgYW5kIHJ1
Ynkgd3JpdGVycykuCisKKyAgICAgICAgRG93bnNpZGVzOiB3ZSBjYW4gbm8gbG9uZ2VyIGRldGVj
dCBmbGFraW5lc3MgaW4gdGhlIGJpbmFyeSB0ZXN0cworICAgICAgICAodGVzdGFpciwgdGVzdGIz
LCAuLi4pLiBIb3dldmVyLCBJJ20gbm90IGF3YXJlIG9mIGFueSBpbnN0YW5jZSBvZgorICAgICAg
ICBmbGFraW5lc3MgaW4gdGhvc2UgdGVzdHMuIFRoZSByZXRyeSBsb29wIGlzIG5vdyBiZWluZyB1
c2VkIGZvciBhbGwKKyAgICAgICAgcnVubmVycywgd2hpY2ggbWVhbnMgdGhlIHJlc3VsdHMgYW5h
bHlzaXMgcGF0aCBmb3IgZS5nLiB0aGUgbWFrZQorICAgICAgICBydW5uZXIgaXMgbm93IGEgYml0
IG1vcmUgY29tcGxpY2F0ZWQuIERldGVjdGluZyBmbGFreSB0ZXN0cyBuZWVkcworICAgICAgICBj
b2RlIHNvbWV3aGVyZSwgYnV0IHRoaXMgbW92ZXMgdGhlIGRldGVjdGlvbiBjb2RlIGJlZm9yZSB0
aGUKKyAgICAgICAgcmVzdWx0IHJlcG9ydGluZywgc28gaXMgYSBiaXQgcmlza2llci4gVGhlIHNl
bGYgdGVzdHMgc2hvdWxkCisgICAgICAgIGNvdW50ZXJiYWxhbmNlIHRoaXMuCisKKyAgICAgICAg
KiBDSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5OgorICAgICAgICBLaWxsIFJlUnVuSmF2YVNj
cmlwdENvcmVUZXN0cyBhbmQgZW5hYmxlIC0tdHJlYXQtZmFpbGluZy1hcy1mbGFreS4KKyAgICAg
ICAgRGVmYXVsdHMgdG8gNjAlIHBhc3MgcGVyY2VudGFnZSwgMTAgbWF4VHJpZXMgYW5kIGEgbGlt
aXQgb2YgMjAwCisgICAgICAgIGZhaWxpbmcgdGVzdHMuCisgICAgICAgIChSdW5KYXZhU2NyaXB0
Q29yZVRlc3RzKToKKyAgICAgICAgKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuX19pbml0X18pOgor
ICAgICAgICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5zdGFydCk6CisgICAgICAgIChSdW5KYXZh
U2NyaXB0Q29yZVRlc3RzLmV2YWx1YXRlQ29tbWFuZCk6CisgICAgICAgIChSdW5KYXZhU2NyaXB0
Q29yZVRlc3RzLmNvbW1hbmRDb21wbGV0ZSk6CisgICAgICAgIChSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzLmdldFJlc3VsdFN1bW1hcnkpOgorICAgICAgICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5f
YWRkVG9Mb2cpOgorICAgICAgICAoQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cy5zdGFydCk6CisgICAg
ICAgIChSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMpOiBEZWxldGVkLgorICAgICAgICAoUmVSdW5K
YXZhU2NyaXB0Q29yZVRlc3RzLmV2YWx1YXRlQ29tbWFuZCk6IERlbGV0ZWQuCisgICAgICAgICog
Q0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwc191bml0dGVzdC5weToKKyAgICAgICAgVXBkYXRlIHRv
IG1hdGNoIHRoZSBjaGFuZ2VzIGluIHN0ZXBzLnB5LiBTb21lIHRlc3RjYXNlcyBubyBsb25nZXIK
KyAgICAgICAgYXBwbHkuCisgICAgICAgICogU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVy
cy9zaGVsbC1ydW5uZXIuc2g6CisgICAgICAgIERvbid0IGRlZHVjZSB0aGUgdGVzdCBsaXN0IG1h
bnVhbGx5LCBleHBlY3QgaXQgYXMgYW4gYXJndW1lbnQgaW5zdGVhZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0czoKKyAgICAgICAgUHJvcGFnYXRlIGluZm8gb24g
dGVzdCBmbGFraW5lc3MuCisgICAgICAgIChydW5KU0NTdHJlc3NUZXN0cyk6CisgICAgICAgICog
U2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKyAgICAgICAgUmVmYWN0b3IgdGhlIGV4ZWN1
dGlvbiBsb2dpYyB0byB1c2UgdGhlIGFic3RyYWN0ZWQtb3V0IGNvZGUgaW4KKyAgICAgICAgZXhl
Y3V0b3IucmIuIFVzZSB0aGUgcmV0cnkgbG9vcCBvbiBldmVyeSBydW5uZXIuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVmYXVsdC5yYjoKKyAg
ICAgICAgVXBkYXRlIHRoZSB0ZXN0LXdyaXRlciBmaWxlcyBmb3IgdGhlIGNoYW5nZXMgdG8gcnVu
LWpzYy1zdHJlc3MtdGVzdHMuCisgICAgICAgIE1vdmUgcHJlcGFyZUZvb1J1bm5lciBhbmQgdGVz
dFJ1bm5lckNvbW1hbmQgdG8gYSBjbGFzcyBzbyB0aGF0IHdlIGNhbgorICAgICAgICBrZWVwIHN0
YXRlIChmb3IgdGhlIG5ldyBhcmd1bWVudCB0byB0aGUgc2hlbGwgcnVubmVyKS4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5y
YjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1y
dWJ5LnJiOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvZXhl
Y3V0b3IucmI6IEFkZGVkLgorICAgICAgICBJbXBsZW1lbnQgYSBnZW5lcmljIHJldHJ5IGxvb3Ag
YW5kIGRlZmluZSBhbiBhcnJheSBvZiB2aXJ0dWFsCisgICAgICAgIHRlc3RzICh1c2luZyBwcmVk
ZWZpbmVkIHRlc3QgcmVzdWx0cyBmb3IgZWFjaCBpdGVyYXRpb24pLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9yLnJiOiBB
ZGRlZC4KKyAgICAgICAgRW5jYXBzdWxhdGUgdGhlIGxvZ2ljIG9uIHdoZXRoZXIgYSB0ZXN0IGhh
cyBwYXNzZWQgb3Igbm90CisgICAgICAgIChEaWQgd2UgZ2V0IGFueSByZXN1bHRzPyBXZXJlIHRo
b3NlIHJlc3VsdHMgZW5vdWdoIHRvIGRlY2xhcmUgYQorICAgICAgICBmbGFreS9ub24tZmxha3kg
dGVzdCBhIHBhc3M/KSBhbmQgYWRkIGEgbnVtYmVyIG9mIHRlc3RzLgorCiAyMDIxLTEwLTI1ICBS
eWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBkZWZh
dWx0IGlPUyBzaW11bGF0b3IgdG8gb25lIHdpdGggYSBsYXJnZXIgc2NyZWVuIHNpemUKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHkgYi9Ub29scy9DSVN1cHBv
cnQvZXdzLWJ1aWxkL3N0ZXBzLnB5CmluZGV4IGM1Y2MyNGVhN2RjZTE3ZWE5OTU1ZjQ3MTdmNWNk
Y2M2MjBmYzY5NjMuLmJmMDFmNjY3MTA0YjUyZjBiYzU5YmRiNmY1YTU0YzYxMGMwMGE2ZTMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHkKKysrIGIvVG9vbHMv
Q0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weQpAQCAtMTgzNCw2ICsxODM0LDggQEAgY2xhc3Mg
UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhzaGVsbC5UZXN0KToKICAgICBqc29uRmlsZU5hbWUgPSAn
anNjX3Jlc3VsdHMuanNvbicKICAgICBsb2dmaWxlcyA9IHsnanNvbic6IGpzb25GaWxlTmFtZX0K
ICAgICBjb21tYW5kID0gWydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17
MH0nLmZvcm1hdChqc29uRmlsZU5hbWUpLCBXaXRoUHJvcGVydGllcygnLS0lKGNvbmZpZ3VyYXRp
b24pcycpXQorICAgICMgV2UgcmVseSBvbiBydW4tanNjLXN0cmVzcy10ZXN0cyB0byB3ZWVkIG91
dCBhbnkgZmxha3kgdGVzdHMKKyAgICBjb21tYW5kX2V4dHJhID0gWyctLXRyZWF0LWZhaWxpbmct
YXMtZmxha3k9MC42LDEwLDIwMCddCiAgICAgcHJlZml4ID0gJ2pzY18nCiAgICAgTlVNX0ZBSUxV
UkVTX1RPX0RJU1BMQVlfSU5fU1RBVFVTID0gNQogCkBAIC0xODQxLDExICsxODQzLDEzIEBAIGNs
YXNzIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoc2hlbGwuVGVzdCk6CiAgICAgICAgIHNoZWxsLlRl
c3QuX19pbml0X18oc2VsZiwgbG9nRW52aXJvbj1GYWxzZSwgc2lndGVybVRpbWU9MTAsICoqa3dh
cmdzKQogICAgICAgICBzZWxmLmJpbmFyeUZhaWx1cmVzID0gW10KICAgICAgICAgc2VsZi5zdHJl
c3NUZXN0RmFpbHVyZXMgPSBbXQorICAgICAgICBzZWxmLmZsYWt5ID0ge30KIAogICAgIGRlZiBz
dGFydChzZWxmKToKICAgICAgICAgc2VsZi5sb2dfb2JzZXJ2ZXJfanNvbiA9IGxvZ29ic2VydmVy
LkJ1ZmZlckxvZ09ic2VydmVyKCkKICAgICAgICAgc2VsZi5hZGRMb2dPYnNlcnZlcignanNvbics
IHNlbGYubG9nX29ic2VydmVyX2pzb24pCiAKKwogICAgICAgICAjIGFkZCByZW1vdGVzIGNvbmZp
Z3VyYXRpb24gZmlsZSBwYXRoIHRvIHRoZSBjb21tYW5kIGxpbmUgaWYgbmVlZGVkCiAgICAgICAg
IHJlbW90ZXNmaWxlID0gc2VsZi5nZXRQcm9wZXJ0eSgncmVtb3RlcycsIEZhbHNlKQogICAgICAg
ICBpZiByZW1vdGVzZmlsZToKQEAgLTE4NjIsNiArMTg2Niw3IEBAIGNsYXNzIFJ1bkphdmFTY3Jp
cHRDb3JlVGVzdHMoc2hlbGwuVGVzdCk6CiAgICAgICAgICAgICBzZWxmLmNvbW1hbmQuZXh0ZW5k
KFsnLS1tZW1vcnktbGltaXRlZCcsICctLXZlcmJvc2UnXSkKIAogICAgICAgICBhcHBlbmRDdXN0
b21CdWlsZEZsYWdzKHNlbGYsIHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJyksIHNlbGYuZ2V0
UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScpKQorICAgICAgICBzZWxmLmNvbW1hbmQuZXh0ZW5kKHNl
bGYuY29tbWFuZF9leHRyYSkKICAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikK
IAogICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKQEAgLTE4NzIsNyArMTg3Nywx
NCBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAg
ICAgc2VsZi5idWlsZC5yZXN1bHRzID0gU1VDQ0VTUwogICAgICAgICAgICAgc2VsZi5idWlsZC5i
dWlsZEZpbmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtWYWxpZGF0ZVBhdGNoKHZl
cmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksIEtpbGxPbGRQcm9jZXNzZXMoKSwg
UmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKCldKQorICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgncGF0Y2hGYWlsZWRUZXN0cycsIFRydWUpCisgICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0
ZXBzQWZ0ZXJDdXJyZW50U3RlcChbVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJp
ZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGlsZUpTQ1dpdGhvdXRQYXRjaCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRj
aCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2lsbE9sZFByb2Nlc3NlcygpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuSlNDVGVzdHNX
aXRob3V0UGF0Y2goKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoKV0pCiAgICAgICAgIHJldHVybiByYwogCiAg
ICAgZGVmIGNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpOgpAQCAtMTg5NSwxMCArMTkwNywxMiBA
QCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAgICAg
c2VsZi5iaW5hcnlGYWlsdXJlcy5hcHBlbmQoJ3Rlc3RkZmcnKQogICAgICAgICBpZiBqc2NfcmVz
dWx0cy5nZXQoJ2FsbEFwaVRlc3RzUGFzc2VkJykgaXMgRmFsc2U6CiAgICAgICAgICAgICBzZWxm
LmJpbmFyeUZhaWx1cmVzLmFwcGVuZCgndGVzdGFwaScpCi0KICAgICAgICAgc2VsZi5zdHJlc3NU
ZXN0RmFpbHVyZXMgPSBqc2NfcmVzdWx0cy5nZXQoJ3N0cmVzc1Rlc3RGYWlsdXJlcycpCiAgICAg
ICAgIGlmIHNlbGYuc3RyZXNzVGVzdEZhaWx1cmVzOgogICAgICAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eShzZWxmLnByZWZpeCArICdzdHJlc3NfdGVzdF9mYWlsdXJlcycsIHNlbGYuc3RyZXNzVGVz
dEZhaWx1cmVzKQorICAgICAgICBzZWxmLmZsYWt5ID0ganNjX3Jlc3VsdHMuZ2V0KCdmbGFreUFu
ZFBhc3NlZCcpCisgICAgICAgIGlmIHNlbGYuZmxha3k6CisgICAgICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KHNlbGYucHJlZml4ICsgJ2ZsYWt5X2FuZF9wYXNzZWQnLCBzZWxmLmZsYWt5KQogICAg
ICAgICBpZiBzZWxmLmJpbmFyeUZhaWx1cmVzOgogICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eShzZWxmLnByZWZpeCArICdiaW5hcnlfZmFpbHVyZXMnLCBzZWxmLmJpbmFyeUZhaWx1cmVzKQog
CkBAIC0xOTE5LDYgKzE5MzMsOCBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxs
LlRlc3QpOgogICAgICAgICAgICAgICAgIHN0YXR1cyArPSAnSlNDIHRlc3QgYmluYXJ5IGZhaWx1
cmV7fToge30nLmZvcm1hdChwbHVyYWxTdWZmaXgsICcsICcuam9pbihzZWxmLmJpbmFyeUZhaWx1
cmVzKSkKIAogICAgICAgICAgICAgcmV0dXJuIHsnc3RlcCc6IHN0YXR1c30KKyAgICAgICAgZWxp
ZiBzZWxmLnJlc3VsdHMgPT0gU1VDQ0VTUyBhbmQgc2VsZi5mbGFreToKKyAgICAgICAgICAgIHJl
dHVybiB7J3N0ZXAnOiAiUGFzc2VkIEpTQyB0ZXN0cyAoJWQgZmxha3kpIiAlIGxlbihzZWxmLmZs
YWt5KX0KIAogICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5nZXRSZXN1bHRTdW1tYXJ5KHNlbGYp
CiAKQEAgLTE5MzEsMzUgKzE5NDcsNiBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNo
ZWxsLlRlc3QpOgogICAgICAgICBsb2cuYWRkU3Rkb3V0KG1lc3NhZ2UpCiAKIAotY2xhc3MgUmVS
dW5KYXZhU2NyaXB0Q29yZVRlc3RzKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMpOgotICAgIG5hbWUg
PSAnanNjb3JlLXRlc3QtcmVydW4nCi0gICAgcHJlZml4ID0gJ2pzY19yZXJ1bl8nCi0KLSAgICBk
ZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJjID0gc2hlbGwuVGVzdC5l
dmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKQotICAgICAgICBmaXJzdF9ydW5fZmFpbHVyZXMgPSBz
ZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pICsgc2Vs
Zi5nZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgc2Vjb25k
X3J1bl9mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rl
c3RfZmFpbHVyZXMnLCBbXSkgKyBzZWxmLmdldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2Zh
aWx1cmVzJywgW10pKQotICAgICAgICBmbGFreV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9mYWlsdXJl
cy51bmlvbihzZWNvbmRfcnVuX2ZhaWx1cmVzKSAtIGZpcnN0X3J1bl9mYWlsdXJlcy5pbnRlcnNl
Y3Rpb24oc2Vjb25kX3J1bl9mYWlsdXJlcykKLSAgICAgICAgZmxha3lfZmFpbHVyZXNfc3RyaW5n
ID0gJywgJy5qb2luKHNvcnRlZChmbGFreV9mYWlsdXJlcykpCi0KLSAgICAgICAgaWYgcmMgPT0g
U1VDQ0VTUyBvciByYyA9PSBXQVJOSU5HUzoKLSAgICAgICAgICAgIHBsdXJhbFN1ZmZpeCA9ICdz
JyBpZiBsZW4oZmxha3lfZmFpbHVyZXMpID4gMSBlbHNlICcnCi0gICAgICAgICAgICBtZXNzYWdl
ID0gJ0ZvdW5kIGZsYWt5IHRlc3R7fToge30nLmZvcm1hdChwbHVyYWxTdWZmaXgsIGZsYWt5X2Zh
aWx1cmVzX3N0cmluZykKLSAgICAgICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVzc2Fn
ZQotICAgICAgICAgICAgc2VsZi5idWlsZC5yZXN1bHRzID0gU1VDQ0VTUwotICAgICAgICAgICAg
c2VsZi5idWlsZC5idWlsZEZpbmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoRmFpbGVkVGVzdHMnLCBUcnVl
KQotICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW1VuQXBw
bHlQYXRjaElmUmVxdWlyZWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxz
PUZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENvbXBpbGVKU0NXaXRob3V0UGF0Y2goKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBh
ZGRVUkxzPUZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEtpbGxPbGRQcm9jZXNzZXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1
bHRzKCldKQotICAgICAgICByZXR1cm4gcmMKLQotCiBjbGFzcyBSdW5KU0NUZXN0c1dpdGhvdXRQ
YXRjaChSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKToKICAgICBuYW1lID0gJ2pzY29yZS10ZXN0LXdp
dGhvdXQtcGF0Y2gnCiAgICAgcHJlZml4ID0gJ2pzY19jbGVhbl90cmVlXycKQEAgLTE5NzcsMzQg
KzE5NjQsMjkgQEAgY2xhc3MgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRT
dGVwKToKICAgICBOVU1fRkFJTFVSRVNfVE9fRElTUExBWSA9IDEwCiAKICAgICBkZWYgc3RhcnQo
c2VsZik6Ci0gICAgICAgIGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQ
cm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pKQotICAgICAgICBmaXJzdF9y
dW5fYmluYXJ5X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFp
bHVyZXMnLCBbXSkpCi0gICAgICAgIHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzID0gc2V0KHNl
bGYuZ2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSkKLSAg
ICAgICAgc2Vjb25kX3J1bl9iaW5hcnlfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgn
anNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKKyAgICAgICAgc3RyZXNzX2ZhaWx1cmVz
X3dpdGhfcGF0Y2ggPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1
cmVzJywgW10pKQorICAgICAgICBiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCA9IHNldChzZWxm
LmdldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgW10pKQogICAgICAgICBjbGVhbl90
cmVlX3N0cmVzc19mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJl
ZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSkKICAgICAgICAgY2xlYW5fdHJlZV9iaW5hcnlf
ZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfYmluYXJ5X2Zh
aWx1cmVzJywgW10pKQogICAgICAgICBjbGVhbl90cmVlX2ZhaWx1cmVzID0gbGlzdChjbGVhbl90
cmVlX2JpbmFyeV9mYWlsdXJlcykgKyBsaXN0KGNsZWFuX3RyZWVfc3RyZXNzX2ZhaWx1cmVzKQog
ICAgICAgICBjbGVhbl90cmVlX2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihjbGVhbl90cmVl
X2ZhaWx1cmVzWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXSkKIAotICAgICAgICBzdHJl
c3NfZmFpbHVyZXNfd2l0aF9wYXRjaCA9IGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMuaW50ZXJz
ZWN0aW9uKHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKQotICAgICAgICBiaW5hcnlfZmFpbHVy
ZXNfd2l0aF9wYXRjaCA9IGZpcnN0X3J1bl9iaW5hcnlfZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNl
Y29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzKQotCi0gICAgICAgIGZsYWt5X3N0cmVzc19mYWlsdXJl
cyA9IGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMudW5pb24oc2Vjb25kX3J1bl9zdHJlc3NfZmFp
bHVyZXMpIC0gZmlyc3RfcnVuX3N0cmVzc19mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1
bl9zdHJlc3NfZmFpbHVyZXMpCi0gICAgICAgIGZsYWt5X2JpbmFyeV9mYWlsdXJlcyA9IGZpcnN0
X3J1bl9iaW5hcnlfZmFpbHVyZXMudW5pb24oc2Vjb25kX3J1bl9iaW5hcnlfZmFpbHVyZXMpIC0g
Zmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1bl9iaW5hcnlf
ZmFpbHVyZXMpCi0gICAgICAgIGZsYWt5X2ZhaWx1cmVzID0gc29ydGVkKGxpc3QoZmxha3lfYmlu
YXJ5X2ZhaWx1cmVzKSArIGxpc3QoZmxha3lfc3RyZXNzX2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZB
SUxVUkVTX1RPX0RJU1BMQVldCi0gICAgICAgIGZsYWt5X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcu
am9pbihmbGFreV9mYWlsdXJlcykKKyAgICAgICAgZmxha3lfc3RyZXNzX2ZhaWx1cmVzX3dpdGhf
cGF0Y2ggPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX2ZsYWt5X2FuZF9wYXNzZWQnLCB7fSku
a2V5cygpKQorICAgICAgICBjbGVhbl90cmVlX2ZsYWt5X3N0cmVzc19mYWlsdXJlcyA9IHNldChz
ZWxmLmdldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9mbGFreV9hbmRfcGFzc2VkJywge30pLmtl
eXMoKSkKKyAgICAgICAgZmxha3lfc3RyZXNzX2ZhaWx1cmVzID0gc29ydGVkKGxpc3QoZmxha3lf
c3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2gpICsgbGlzdChjbGVhbl90cmVlX2ZsYWt5X3N0cmVz
c19mYWlsdXJlcykpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXQorICAgICAgICBmbGFr
eV9mYWlsdXJlc19zdHJpbmcgPSAnLCAnLmpvaW4oZmxha3lfc3RyZXNzX2ZhaWx1cmVzKQogCiAg
ICAgICAgIG5ld19zdHJlc3NfZmFpbHVyZXMgPSBzdHJlc3NfZmFpbHVyZXNfd2l0aF9wYXRjaCAt
IGNsZWFuX3RyZWVfc3RyZXNzX2ZhaWx1cmVzCiAgICAgICAgIG5ld19iaW5hcnlfZmFpbHVyZXMg
PSBiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCAtIGNsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVz
CiAgICAgICAgIHNlbGYubmV3X3N0cmVzc19mYWlsdXJlc190b19kaXNwbGF5ID0gJywgJy5qb2lu
KHNvcnRlZChsaXN0KG5ld19zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9f
RElTUExBWV0pCiAgICAgICAgIHNlbGYubmV3X2JpbmFyeV9mYWlsdXJlc190b19kaXNwbGF5ID0g
JywgJy5qb2luKHNvcnRlZChsaXN0KG5ld19iaW5hcnlfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJ
TFVSRVNfVE9fRElTUExBWV0pCiAKLSAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdc
bkZhaWx1cmVzIGluIGZpcnN0IHJ1bjoge30nLmZvcm1hdCgobGlzdChmaXJzdF9ydW5fYmluYXJ5
X2ZhaWx1cmVzKSArIGxpc3QoZmlyc3RfcnVuX3N0cmVzc19mYWlsdXJlcykpWzpzZWxmLk5VTV9G
QUlMVVJFU19UT19ESVNQTEFZXSkpCi0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAn
XG5GYWlsdXJlcyBpbiBzZWNvbmQgcnVuOiB7fScuZm9ybWF0KChsaXN0KHNlY29uZF9ydW5fYmlu
YXJ5X2ZhaWx1cmVzKSArIGxpc3Qoc2Vjb25kX3J1bl9zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5O
VU1fRkFJTFVSRVNfVE9fRElTUExBWV0pKQotICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJy
JywgJ1xuRmxha3kgVGVzdHM6IHt9Jy5mb3JtYXQoZmxha3lfZmFpbHVyZXNfc3RyaW5nKSkKKyAg
ICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZhaWx1cmVzIHdpdGggcGF0Y2g6IHt9
Jy5mb3JtYXQobGlzdChiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCkgKyBsaXN0KHN0cmVzc19m
YWlsdXJlc193aXRoX3BhdGNoKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQorICAg
ICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ1xuRmxha3kgVGVzdHMgd2l0aCBwYXRjaDog
e30nLmZvcm1hdCgnLCAnLmpvaW4oZmxha3lfc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2gpKSkK
ICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZhaWx1cmVzIG9uIGNsZWFuIHRy
ZWU6IHt9Jy5mb3JtYXQoY2xlYW5fdHJlZV9mYWlsdXJlc19zdHJpbmcpKQorICAgICAgICBzZWxm
Ll9hZGRUb0xvZygnc3RkZXJyJywgJ1xuRmxha3kgVGVzdHMgb24gY2xlYW4gdHJlZToge30nLmZv
cm1hdCgnLCAnLmpvaW4oY2xlYW5fdHJlZV9mbGFreV9zdHJlc3NfZmFpbHVyZXMpKSkKIAotICAg
ICAgICBpZiAobm90IGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMpIGFuZCAobm90IGZpcnN0X3J1
bl9iaW5hcnlfZmFpbHVyZXMpIGFuZCAobm90IHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKSBh
bmQgKG5vdCBzZWNvbmRfcnVuX2JpbmFyeV9mYWlsdXJlcyk6CisgICAgICAgIGlmIChub3Qgc3Ry
ZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2gpIGFuZCAobm90IGJpbmFyeV9mYWlsdXJlc193aXRoX3Bh
dGNoKToKICAgICAgICAgICAgICMgSWYgd2UndmUgbWFkZSBpdCBoZXJlLCB0aGVuIGpzYy10ZXN0
cyBhbmQgcmUtcnVuLWpzYy10ZXN0cyBmYWlsZWQsIHdoaWNoIG1lYW5zCiAgICAgICAgICAgICAj
IHRoZXJlIHNob3VsZCBoYXZlIGJlZW4gc29tZSB0ZXN0IGZhaWx1cmVzLiBPdGhlcndpc2UgdGhl
cmUgaXMgc29tZSB1bmV4cGVjdGVkIGlzc3VlLgogICAgICAgICAgICAgY2xlYW5fdHJlZV9ydW5f
c3RhdHVzID0gc2VsZi5nZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVS
RSkKQEAgLTIwMjksOSArMjAxMSw5IEBAIGNsYXNzIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoYnVp
bGRzdGVwLkJ1aWxkU3RlcCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lbWFpbF9m
b3JfcHJlX2V4aXN0aW5nX2ZhaWx1cmUoY2xlYW5fdHJlZV9mYWlsdXJlKQogICAgICAgICAgICAg
aWYgbGVuKGNsZWFuX3RyZWVfZmFpbHVyZXMpID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExB
WToKICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICcgLi4uJwotICAgICAgICAgICAgaWYgZmxh
a3lfZmFpbHVyZXM6CisgICAgICAgICAgICBpZiBmbGFreV9zdHJlc3NfZmFpbHVyZXM6CiAgICAg
ICAgICAgICAgICAgbWVzc2FnZSArPSAnIEZvdW5kIGZsYWt5IHRlc3RzOiB7fScuZm9ybWF0KGZs
YWt5X2ZhaWx1cmVzX3N0cmluZykKLSAgICAgICAgICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBp
biBmbGFreV9mYWlsdXJlczoKKyAgICAgICAgICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBpbiBm
bGFreV9zdHJlc3NfZmFpbHVyZXM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lbWFp
bF9mb3JfZmxha3lfZmFpbHVyZShmbGFreV9mYWlsdXJlKQogICAgICAgICAgICAgc2VsZi5idWls
ZC5idWlsZEZpbmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIGRlZmVy
LnN1Y2NlZWQoTm9uZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3Rl
cHNfdW5pdHRlc3QucHkgYi9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0
LnB5CmluZGV4IGM4YzI2MmUxNTQxZDRiZjlhMWM3NTk1OWNlM2ZjY2JkODYxNTFkMGIuLmFhMzNm
N2I3YmY5ZjY1ZTdhNTk1MGExOTkzNzU1ODNjYWQ2ZmRlMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NJ
U3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvQ0lTdXBwb3J0
L2V3cy1idWlsZC9zdGVwc191bml0dGVzdC5weQpAQCAtNDgsNyArNDgsNyBAQCBmcm9tIHN0ZXBz
IGltcG9ydCAoQW5hbHl6ZUFQSVRlc3RzUmVzdWx0cywgQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1
bHRzLCBBbmFseXplSgogICAgICAgICAgICAgICAgICAgIERvd25sb2FkQnVpbHRQcm9kdWN0LCBE
b3dubG9hZEJ1aWx0UHJvZHVjdEZyb21NYXN0ZXIsIEVXU19CVUlMRF9IT1NUTkFNRSwgRXh0cmFj
dEJ1aWx0UHJvZHVjdCwgRXh0cmFjdFRlc3RSZXN1bHRzLAogICAgICAgICAgICAgICAgICAgIEZl
dGNoQnJhbmNoZXMsIEZpbmRNb2RpZmllZENoYW5nZUxvZ3MsIEZpbmRNb2RpZmllZExheW91dFRl
c3RzLCBHaXRSZXNldEhhcmQsCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbEJ1aWx0UHJvZHVj
dCwgSW5zdGFsbEd0a0RlcGVuZGVuY2llcywgSW5zdGFsbFdwZURlcGVuZGVuY2llcywKLSAgICAg
ICAgICAgICAgICAgICBLaWxsT2xkUHJvY2Vzc2VzLCBQcmludENvbmZpZ3VyYXRpb24sIFB1c2hD
b21taXRUb1dlYktpdFJlcG8sIFJlUnVuQVBJVGVzdHMsIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0
cywgUmVSdW5XZWJLaXRQZXJsVGVzdHMsCisgICAgICAgICAgICAgICAgICAgS2lsbE9sZFByb2Nl
c3NlcywgUHJpbnRDb25maWd1cmF0aW9uLCBQdXNoQ29tbWl0VG9XZWJLaXRSZXBvLCBSZVJ1bkFQ
SVRlc3RzLCBSZVJ1bldlYktpdFBlcmxUZXN0cywKICAgICAgICAgICAgICAgICAgICBSZVJ1bldl
YktpdFRlc3RzLCBSdW5BUElUZXN0cywgUnVuQVBJVGVzdHNXaXRob3V0UGF0Y2gsIFJ1bkJpbmRp
bmdzVGVzdHMsIFJ1bkJ1aWxkV2ViS2l0T3JnVW5pdFRlc3RzLAogICAgICAgICAgICAgICAgICAg
IFJ1bkJ1aWxkYm90Q2hlY2tDb25maWdGb3JCdWlsZFdlYktpdCwgUnVuQnVpbGRib3RDaGVja0Nv
bmZpZ0ZvckVXUywgUnVuRVdTVW5pdFRlc3RzLCBSdW5SZXN1bHRzZGJweVRlc3RzLAogICAgICAg
ICAgICAgICAgICAgIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMsIFJ1bkpTQ1Rlc3RzV2l0aG91dFBh
dGNoLCBSdW5XZWJLaXQxVGVzdHMsIFJ1bldlYktpdFBlcmxUZXN0cywgUnVuV2ViS2l0UHlQeXRo
b24yVGVzdHMsCkBAIC0xMzYxLDYgKzEzNjEsNyBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENv
cmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICBzZWxmLmpzY19kZmdfYWlyX2FuZF9zdHJlc3NfdGVzdF9mYWlsdXJlID0gJycneyJhbGxE
RkdUZXN0c1Bhc3NlZCI6ZmFsc2UsImFsbE1hc21UZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQjNUZXN0
c1Bhc3NlZCI6dHJ1ZSwiYWxsQWlyVGVzdHNQYXNzZWQiOmZhbHNlLCJhbGxBcGlUZXN0c1Bhc3Nl
ZCI6dHJ1ZSwic3RyZXNzVGVzdEZhaWx1cmVzIjpbInN0cmVzcy93ZWFrc2V0LWdjLmpzIl19XG4n
JycKICAgICAgICAgc2VsZi5qc2Nfc2luZ2xlX3N0cmVzc190ZXN0X2ZhaWx1cmUgPSAnJyd7ImFs
bERGR1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxNYXNtVGVzdHNQYXNzZWQiOnRydWUsImFsbEIzVGVz
dHNQYXNzZWQiOnRydWUsImFsbEFpclRlc3RzUGFzc2VkIjp0cnVlLCJzdHJlc3NUZXN0RmFpbHVy
ZXMiOlsic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZGZnLWVhZ2VyIl0sImFs
bEFwaVRlc3RzUGFzc2VkIjp0cnVlfVxuJycnCiAgICAgICAgIHNlbGYuanNjX211bHRpcGxlX3N0
cmVzc190ZXN0X2ZhaWx1cmVzID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFz
bVRlc3RzUGFzc2VkIjp0cnVlLCJhbGxCM1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxBaXJUZXN0c1Bh
c3NlZCI6dHJ1ZSwic3RyZXNzVGVzdEZhaWx1cmVzIjpbInN0cmVzcy9zd2l0Y2gtb24tY2hhci1s
bGludC1yb3BlLmpzLmRmZy1lYWdlciIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3Bl
LmpzLmRmZy1lYWdlci1uby1jaml0LXZhbGlkYXRlIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxs
aW50LXJvcGUuanMuZWFnZXItamV0dGlzb24tbm8tY2ppdCIsInN0cmVzcy9zd2l0Y2gtb24tY2hh
ci1sbGludC1yb3BlLmpzLmZ0bC1lYWdlciIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1y
b3BlLmpzLmZ0bC1lYWdlci1uby1jaml0Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJv
cGUuanMuZnRsLWVhZ2VyLW5vLWNqaXQtYjNvMSIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGlu
dC1yb3BlLmpzLmZ0bC1uby1jaml0LWIzbzAiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQt
cm9wZS5qcy5mdGwtbm8tY2ppdC1uby1pbmxpbmUtdmFsaWRhdGUiLCJzdHJlc3Mvc3dpdGNoLW9u
LWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1uby1wdXQtc3RhY2stdmFsaWRhdGUiLCJz
dHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1zbWFsbC1wb29s
Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQtdmFsaWRh
dGUtc2FtcGxpbmctcHJvZmlsZXIiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5q
cy5uby1jaml0LWNvbGxlY3QtY29udGludW91c2x5Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxs
aW50LXJvcGUuanMubm8tY2ppdC12YWxpZGF0ZS1waGFzZXMiLCJzdHJlc3Mvc3dpdGNoLW9uLWNo
YXItbGxpbnQtcm9wZS5qcy5uby1mdGwiXSwiYWxsQXBpVGVzdHNQYXNzZWQiOnRydWV9XG4nJycK
KyAgICAgICAgc2VsZi5qc2NfcGFzc2VkX3dpdGhfZmxha3kgPSAnJyd7ImFsbERGR1Rlc3RzUGFz
c2VkIjp0cnVlLCJhbGxNYXNtVGVzdHNQYXNzZWQiOnRydWUsImFsbEIzVGVzdHNQYXNzZWQiOnRy
dWUsImFsbEFpclRlc3RzUGFzc2VkIjp0cnVlLCJzdHJlc3NUZXN0RmFpbHVyZXMiOltdLCJmbGFr
eUFuZFBhc3NlZCI6eyJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZWZhdWx0
Ijp7IlAiOiI3IiwiVCI6IjEwIn19LCJhbGxBcGlUZXN0c1Bhc3NlZCI6dHJ1ZX1cbicnJwogICAg
ICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCiAKICAgICBkZWYgdGVhckRvd24oc2Vs
Zik6CkBAIC0xMzY5LDYgKzEzNzAsNyBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0
cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBj
b25maWd1cmVTdGVwKHNlbGYsIHBsYXRmb3JtPU5vbmUsIGZ1bGxQbGF0Zm9ybT1Ob25lLCBjb25m
aWd1cmF0aW9uPU5vbmUpOgogICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5KYXZhU2NyaXB0Q29y
ZVRlc3RzKCkpCiAgICAgICAgIHNlbGYucHJlZml4ID0gUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5w
cmVmaXgKKyAgICAgICAgc2VsZi5jb21tYW5kX2V4dHJhID0gUnVuSmF2YVNjcmlwdENvcmVUZXN0
cy5jb21tYW5kX2V4dHJhCiAgICAgICAgIGlmIHBsYXRmb3JtOgogICAgICAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCBwbGF0Zm9ybSkKICAgICAgICAgaWYgZnVsbFBsYXRmb3Jt
OgpAQCAtMTM4MSw3ICsxMzgzLDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMo
QnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1q
YXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0t
anNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJ10s
CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRz
L3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0
JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxl
YXNlJ10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dm
aWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICApCiAgICAgICAgICAgICArIDAsCkBAIC0xMzk1LDcgKzEzOTcsNyBAQCBjbGFzcyBUZXN0UnVu
SmF2YVNjcmlwdENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAogICAgICAgICAgICAg
RXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9n
RW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywg
J1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAn
LS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxl
TmFtZSksICctLXJlbGVhc2UnLCAnLS1yZW1vdGUtY29uZmlnLWZpbGU9cmVtb3RlLW1hY2hpbmVz
Lmpzb24nLCAnLS1uby10ZXN0bWFzbScsICctLW5vLXRlc3RhaXInLCAnLS1uby10ZXN0YjMnLCAn
LS1uby10ZXN0ZGZnJywgJy0tbm8tdGVzdGFwaScsICctLW1lbW9yeS1saW1pdGVkJywgJy0tdmVy
Ym9zZScsICctLWpzYy1vbmx5J10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsn
cGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1
aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5q
c29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJywgJy0tcmVtb3RlLWNvbmZpZy1maWxlPXJlbW90ZS1t
YWNoaW5lcy5qc29uJywgJy0tbm8tdGVzdG1hc20nLCAnLS1uby10ZXN0YWlyJywgJy0tbm8tdGVz
dGIzJywgJy0tbm8tdGVzdGRmZycsICctLW5vLXRlc3RhcGknLCAnLS1tZW1vcnktbGltaXRlZCcs
ICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAog
ICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyAwLApAQCAtMTQwOCw3ICsx
NDEwLDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5B
ZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVD
b21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10
ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9
Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0
PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSArIHNlbGYuY29tbWFu
ZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYu
anNvbkZpbGVOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsg
RXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nOSBmYWlsdXJlcyBmb3VuZC4nKQpAQCAt
MTQyMyw3ICsxNDI1LDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRT
dGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIEV4cGVj
dFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmly
b249RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxm
Lmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcs
ICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywg
Jy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmls
ZU5hbWUpLCAnLS1kZWJ1ZyddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3Bl
cmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWls
ZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNv
bkZpbGVOYW1lKSwgJy0tZGVidWcnXSArIHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICkKICAgICAgICAgICAgICsgMgogICAgICAgICAgICAgKyBFeHBlY3RTaGVs
bC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc2Nfc2luZ2xlX3N0cmVzc190ZXN0X2ZhaWx1cmUp
LApAQCAtMTQ0MCw3ICsxNDQyLDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMo
QnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAg
IEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z0Vudmlyb249RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24n
OiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsn
cGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1
aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5q
c29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFu
ZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1u
by1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNl
bGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSArIHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsgMgogICAgICAgICAgICAgKyBFeHBl
Y3RTaGVsbC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc2NfbXVsdGlwbGVfc3RyZXNzX3Rlc3Rf
ZmFpbHVyZXMpLApAQCAtMTQ1Nyw3ICsxNDU5LDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRD
b3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxl
cz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycs
ICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3Jt
YXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVz
dHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScu
Zm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSArIHNlbGYuY29tbWFuZF9leHRy
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsgMgogICAgICAgICAg
ICAgKyBFeHBlY3RTaGVsbC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc2NfbWFzbV9mYWlsdXJl
KSwKQEAgLTE0NzQsNyArMTQ3Niw3IEBAIGNsYXNzIFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3Rz
KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBs
b2dFbnZpcm9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29u
Jzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1b
J3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1i
dWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYu
anNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAn
LS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0
KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyAyCiAgICAgICAgICAgICAr
IEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1zZWxmLmpzY19iM19hbmRfc3RyZXNzX3Rl
c3RfZmFpbHVyZSksCkBAIC0xNDkxLDcgKzE0OTMsNyBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlw
dENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAogICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2Zp
bGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3Rz
JywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZv
cm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnLCAnLS1tZW1vcnktbGltaXRlZCcs
ICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAn
LS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0
KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZScsICctLW1lbW9yeS1saW1pdGVkJywgJy0t
dmVyYm9zZScsICctLWpzYy1vbmx5J10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDIKICAgICAgICAgICAgICsgRXhwZWN0U2hl
bGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNjX2RmZ19haXJfYW5kX3N0cmVzc190ZXN0X2Zh
aWx1cmUpLApAQCAtMTUwMiw1MiArMTUwNCwzMCBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENv
cmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnYmlu
YXJ5X2ZhaWx1cmVzJyksIFsndGVzdGFpcicsICd0ZXN0ZGZnJ10pCiAgICAgICAgIHJldHVybiBy
YwogCi0KLWNsYXNzIFRlc3RSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoVGVzdFJ1bkphdmFTY3Jp
cHRDb3JlVGVzdHMpOgotICAgIGRlZiBjb25maWd1cmVTdGVwKHNlbGYsIHBsYXRmb3JtPU5vbmUs
IGZ1bGxQbGF0Zm9ybT1Ob25lLCBjb25maWd1cmF0aW9uPU5vbmUpOgotICAgICAgICBzZWxmLnNl
dHVwU3RlcChSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoKSkKLSAgICAgICAgc2VsZi5wcmVmaXgg
PSBSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMucHJlZml4Ci0gICAgICAgIGlmIHBsYXRmb3JtOgot
ICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCBwbGF0Zm9ybSkKLSAgICAg
ICAgaWYgZnVsbFBsYXRmb3JtOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBs
YXRmb3JtJywgZnVsbFBsYXRmb3JtKQotICAgICAgICBpZiBjb25maWd1cmF0aW9uOgotICAgICAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsIGNvbmZpZ3VyYXRpb24pCi0K
LSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAo
cGxhdGZvcm09J21hYycsIGZ1bGxQbGF0Zm9ybT0nbWFjLWhpZ2hzaWVycmEnLCBjb25maWd1cmF0
aW9uPSdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0
X2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90
ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17
MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICkgKwotICAgICAgICAgICAgMCwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nRm91bmQg
Zmxha3kgdGVzdHM6IHRlc3QxLCB0ZXN0MicpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAo
KQotCi0gICAgZGVmIHRlc3RfcmVtb3RlX3N1Y2Nlc3Moc2VsZik6CisgICAgZGVmIHRlc3Rfc3Vj
Y2Vzc193aXRoX2ZsYWt5KHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAocGxhdGZv
cm09J2pzYy1vbmx5JywgZnVsbFBsYXRmb3JtPSdqc2Mtb25seScsIGNvbmZpZ3VyYXRpb249J3Jl
bGVhc2UnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdyZW1vdGVzJywgJ3JlbW90ZS1tYWNo
aW5lcy5qc29uJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJl
cycsIFsndGVzdG1hc20nXSkKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAg
ICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5v
LWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2Vs
Zi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJywgJy0tcmVtb3RlLWNvbmZpZy1maWxlPXJlbW90
ZS1tYWNoaW5lcy5qc29uJywgJy0tbm8tdGVzdG1hc20nLCAnLS1uby10ZXN0YWlyJywgJy0tbm8t
dGVzdGIzJywgJy0tbm8tdGVzdGRmZycsICctLW5vLXRlc3RhcGknLCAnLS1tZW1vcnktbGltaXRl
ZCcsICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddLAogICAgICAgICAgICAgICAgICAgICAgICAg
bG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgKSArCi0gICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFu
ZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1u
by1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNl
bGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZScsICctLW1lbW9yeS1saW1pdGVkJywgJy0tdmVy
Ym9zZScsICctLWpzYy1vbmx5J10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCisgICAgICAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICArIDAKKyAgICAgICAgICAgICsgRXhwZWN0U2hlbGwu
bG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNjX3Bhc3NlZF93aXRoX2ZsYWt5KSwKICAgICAgICAg
KQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmlu
Zz0nRm91bmQgZmxha3kgdGVzdDogdGVzdG1hc20nKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5T
dGVwKCkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9z
dHJpbmc9J1Bhc3NlZCBKU0MgdGVzdHMgKDEgZmxha3kpJykKKyAgICAgICAgcmMgPSBzZWxmLnJ1
blN0ZXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5w
cmVmaXggKyAnZmxha3lfYW5kX3Bhc3NlZCcpLCB7J3N0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGlu
dC1yb3BlLmpzLmRlZmF1bHQnOiB7J1AnOiAnNycsICdUJzogJzEwJ319KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnc3RyZXNzX3Rlc3Rf
ZmFpbHVyZXMnKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3Bl
cnR5KHNlbGYucHJlZml4ICsgJ2JpbmFyeV90ZXN0X2ZhaWx1cmVzJyksIE5vbmUpCisgICAgICAg
IHJldHVybiByYwogCiAKIGNsYXNzIFRlc3RSdW5KU0NUZXN0c1dpdGhvdXRQYXRjaChCdWlsZFN0
ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxm
KToKICAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKICAgICAgICAgc2VsZi5qc29uRmls
ZU5hbWUgPSAnanNjX3Jlc3VsdHMuanNvbicKKyAgICAgICAgc2VsZi5jb21tYW5kX2V4dHJhID0g
UnVuSlNDVGVzdHNXaXRob3V0UGF0Y2guY29tbWFuZF9leHRyYQogICAgICAgICByZXR1cm4gc2Vs
Zi5zZXRVcEJ1aWxkU3RlcCgpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC0xNTYwLDcg
KzE1NDAsNyBAQCBjbGFzcyBUZXN0UnVuSlNDVGVzdHNXaXRob3V0UGF0Y2goQnVpbGRTdGVwTWl4
aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5leHBlY3RSZW1v
dGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29y
ZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9
ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJ10sCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2Ny
aXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1v
dXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJ10gKyBzZWxm
LmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24n
OiBzZWxmLmpzb25GaWxlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICArIDAsCkBAIC0xNTc1LDcgKzE1NTUsNyBAQCBjbGFzcyBUZXN0UnVuSlNDVGVzdHNXaXRo
b3V0UGF0Y2goQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxs
KHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3Jp
cHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1m
YXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1k
ZWJ1ZyddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMv
U2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZh
aWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwg
Jy0tZGVidWcnXSArIHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICkKICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0n
OSBmYWlsdXJlcyBmb3VuZC4nKQpAQCAtMTU5NywzOCArMTU3NywzNCBAQCBjbGFzcyBUZXN0QW5h
bHl6ZUpTQ1Rlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLnNldHVwU3RlcChBbmFseXplSlNDVGVzdHNSZXN1bHRzKCkp
CiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtd
KQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgW10pCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycs
IFtdKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2ZhaWx1cmVz
JywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19mbGFreV9hbmRfcGFzc2VkJywg
e30pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0
X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVl
X2JpbmFyeV9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xl
YW5fdHJlZV9mbGFreV9hbmRfcGFzc2VkJywge30pCiAgICAgICAgIEFuYWx5emVKU0NUZXN0c1Jl
c3VsdHMuc2VuZF9lbWFpbF9mb3JfZmxha3lfZmFpbHVyZSA9IGxhbWJkYSBzZWxmLCB0ZXN0OiBO
b25lCiAgICAgICAgIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfcHJlX2V4
aXN0aW5nX2ZhaWx1cmUgPSBsYW1iZGEgc2VsZiwgdGVzdDogTm9uZQogCiAgICAgZGVmIHRlc3Rf
c2luZ2xlX25ld19zdHJlc3NfZmFpbHVyZShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVT
dGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVz
JywgWydzdHJlc3MvZm9yY2UtZXJyb3IuanMuYnl0ZWNvZGUtY2FjaGUnXSkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3Mv
Zm9yY2UtZXJyb3IuanMuYnl0ZWNvZGUtY2FjaGUnXSkKICAgICAgICAgc2VsZi5leHBlY3RPdXRj
b21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IEpTQyBzdHJlc3Mg
dGVzdCBmYWlsdXJlOiBzdHJlc3MvZm9yY2UtZXJyb3IuanMuYnl0ZWNvZGUtY2FjaGUgKGZhaWx1
cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKICAgICBkZWYgdGVzdF9zaW5n
bGVfbmV3X2JpbmFyeV9mYWlsdXJlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAo
KQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0
bWFzbSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2ZhaWx1
cmVzJywgWyd0ZXN0bWFzbSddKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZB
SUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMSBuZXcgSlNDIGJpbmFyeSBmYWlsdXJlOiB0ZXN0
bWFzbSAoZmFpbHVyZSknKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAogICAgIGRl
ZiB0ZXN0X211bHRpcGxlX25ld19zdHJlc3NfZmFpbHVyZShzZWxmKToKICAgICAgICAgc2VsZi5j
b25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0
X2ZhaWx1cmVzJywgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAzMCldKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMn
LCBbJ3Rlc3R7fScuZm9ybWF0KGkpIGZvciBpIGluIHJhbmdlKDAsIDMwKV0pCiAgICAgICAgIHNl
bGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAzMCBu
ZXcgSlNDIHN0cmVzcyB0ZXN0IGZhaWx1cmVzOiB0ZXN0MCwgdGVzdDEsIHRlc3QxMCwgdGVzdDEx
LCB0ZXN0MTIsIHRlc3QxMywgdGVzdDE0LCB0ZXN0MTUsIHRlc3QxNiwgdGVzdDE3IC4uLiAoZmFp
bHVyZSknKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAogICAgIGRlZiB0ZXN0X211
bHRpcGxlX25ld19iaW5hcnlfZmFpbHVyZShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVT
dGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFsn
dGVzdG1hc20nLCAndGVzdGFpcicsICd0ZXN0YjMnLCAndGVzdGRmZycsICd0ZXN0YXBpJ10pCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rl
c3RtYXNtJywgJ3Rlc3RhaXInLCAndGVzdGIzJywgJ3Rlc3RkZmcnLCAndGVzdGFwaSddKQogICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91
bmQgNSBuZXcgSlNDIGJpbmFyeSBmYWlsdXJlczogdGVzdGFpciwgdGVzdGFwaSwgdGVzdGIzLCB0
ZXN0ZGZnLCB0ZXN0bWFzbSAoZmFpbHVyZSknKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKIApAQCAtMTYzNiwxNSArMTYxMiwxMiBAQCBjbGFzcyBUZXN0QW5hbHl6ZUpTQ1Rlc3RzUmVz
dWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3Ry
ZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2VzNi55YW1sL2VzNi9TZXRfaXRlcmF0b3JfY2xvc2luZy5q
cy5kZWZhdWx0J10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVy
ZXMnLCBbJ3Rlc3RtYXNtJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9z
dHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5n
LmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFy
eV9mYWlsdXJlcycsIFsndGVzdG1hc20nXSkKICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJl
c3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IEpTQyBiaW5hcnkgZmFpbHVy
ZTogdGVzdG1hc20sIEZvdW5kIDEgbmV3IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlOiBlczYueWFt
bC9lczYvU2V0X2l0ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVsdCAoZmFpbHVyZSknKQogICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAogICAgIGRlZiB0ZXN0X3N0cmVzc19mYWlsdXJlX29u
X2NsZWFuX3RyZWUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2Zv
cmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3Jl
cnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3MvZm9yY2UtZXJyb3IuanMuZGVmYXVs
dCddKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVz
dF9mYWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKICAgICAgICAg
c2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBK
U0MgdGVzdHMnKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKQEAgLTE2NjEsMzkgKzE2
MzQsMjkgQEAgY2xhc3MgVGVzdEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5B
ZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVw
KCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywg
WydlczYueWFtbC9lczYvU2V0X2l0ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVsdCddKQogICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0YWlyJ10pCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycs
IFsnZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGFp
ciddKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVz
dF9mYWlsdXJlcycsIFsnZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1
bHQnXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfYmluYXJ5X2Zh
aWx1cmVzJywgWyd0ZXN0YWlyJ10pCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9
U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzJykKICAgICAgICAgcmV0dXJu
IHNlbGYucnVuU3RlcCgpCiAKLSAgICBkZWYgdGVzdF9mbGFreV9zdHJlc3NfYW5kX2JpbmFyeV9m
YWlsdXJlcyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3MvZm9yY2Ut
ZXJyb3IuanMuZGVmYXVsdCddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5
X2ZhaWx1cmVzJywgWyd0ZXN0YXBpJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzJykKLSAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCi0KICAgICBkZWYgdGVzdF9mbGFreV9hbmRfY29uc2lzdGVudF9z
dHJlc3NfZmFpbHVyZXMoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEn
LCAndGVzdDInXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190
ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MiddKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMSBuZXcgSlNDIHN0cmVzcyB0ZXN0IGZh
aWx1cmU6IHRlc3QyIChmYWlsdXJlKScpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19z
dHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnanNjX2ZsYWt5X2FuZF9wYXNzZWQnLCB7J3Rlc3QyJzogeydQJzogJzcnLCAnVCc6ICcxMCd9
fSkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJp
bmc9J0ZvdW5kIDEgbmV3IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlOiB0ZXN0MSAoZmFpbHVyZSkn
KQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAogICAgIGRlZiB0ZXN0X2ZsYWt5X2Fu
ZF9jb25zaXN0ZW50X2ZhaWx1cmVzX3dpdGhfY2xlYW5fdHJlZV9mYWlsdXJlcyhzZWxmKToKICAg
ICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNj
X3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJ10p
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0X2Zh
aWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdq
c2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJ10pCisgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2pzY19mbGFreV9hbmRfcGFzc2VkJywgeyd0ZXN0Mic6IHsnUCc6IDcsICdUJzogMTB9
fSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNzX3Rlc3Rf
ZmFpbHVyZXMnLCBbJ3Rlc3QxJ10pCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9
U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzJykKICAgICAgICAgcmV0dXJu
IHNlbGYucnVuU3RlcCgpCiAKICAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2luZnJhX2lzc3VlKHNl
bGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCiAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX3N0YXR1cycsIEZBSUxVUkUp
CiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0n
VW5leHBlY3RlZCBpbmZyYXN0cnVjdHVyZSBpc3N1ZSwgcmV0cnlpbmcgYnVpbGQgKHJldHJ5KScp
CkBAIC0xNzAyLDggKzE2NjUsOSBAQCBjbGFzcyBUZXN0QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhC
dWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0
X3BhdGNoX2JyZWFraW5nX2pzY190ZXN0X3N1aXRlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZp
Z3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFp
bHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190
ZXN0X2ZhaWx1cmVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19mbGFreV9h
bmRfcGFzc2VkJywge30pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVl
X3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pz
Y19jbGVhbl90cmVlX2ZsYWt5X2FuZF9wYXNzZWQnLCB7fSkKICAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgU1VDQ0VTUykKICAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIHVuZXhwZWN0ZWQg
ZmFpbHVyZSB3aXRoIHBhdGNoIChmYWlsdXJlKScpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1blN0
ZXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9z
aGVsbC1ydW5uZXIuc2ggYi9Ub29scy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJzL3No
ZWxsLXJ1bm5lci5zaAppbmRleCBkZWQ0MGQ1MjE5ODIzMGI4MTUwMjYyYzZiZTcxYWMyZDhjYTcx
MmZlLi4zZjZlOGUyYWE1OTZjZjExNjExYzgwYzNjN2JkZTQ0ZjAzNzkyMDMzIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJzL3NoZWxsLXJ1bm5lci5zaAor
KysgYi9Ub29scy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJzL3NoZWxsLXJ1bm5lci5z
aApAQCAtMjEsNiArMjEsOCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICMgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAorb3Jp
Z2luYWxUZXN0TGlzdD0iJDEiCisKIG51bVByb2NzPWBzeXNjdGwgLW4gaHcuYWN0aXZlY3B1IDI+
L2Rldi9udWxsYAogaWYgWyAkPyAtZ3QgMCBdCiB0aGVuCkBAIC0zOSw3ICs0MSw3IEBAIGxvY2tE
aXI9Ii5sb2NrX2RpciIKIHRyYXAgImtpbGwgLTkgMCIgSU5UIEhVUCBURVJNCiAKIGVjaG8gMCA+
ICR7aW5kZXhGaWxlfQotZmluZCAuIC1tYXhkZXB0aCAxIC1uYW1lICd0ZXN0X3NjcmlwdF8qJyB8
IHNvcnQgLXQgJ18nIC1rM25yID4gJHt0ZXN0TGlzdH0KK2NwICIkb3JpZ2luYWxUZXN0TGlzdCIg
IiR0ZXN0TGlzdCIKIAogbG9ja190ZXN0X2xpc3QoKSB7CiAgICAgdW50aWwgbWtkaXIgJHtsb2Nr
RGlyfSAyPiAvZGV2L251bGw7IGRvIHNsZWVwIDA7IGRvbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNj
cmlwdGNvcmUtdGVzdHMKaW5kZXggZmIyMWJmZTcxYTRmNWM4YWU3ZTMyYmYyZjE3ZGU1ZjRjNDg1
NjU5Ny4uZGIyZWE0MWVjZjhjMzc2YWUzZjBjMjZhZmI1NDU5OTZkMTA3MWExYSAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMKKysrIGIvVG9vbHMvU2Ny
aXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMKQEAgLTY0LDYgKzY0LDcgQEAgbXkgJGdudVBh
cmFsbGVsUnVubmVyOwogbXkgJHRlc3RXcml0ZXI7CiBteSAkbWVtb3J5TGltaXRlZDsKIG15ICRy
ZXBvcnRFeGVjdXRpb25UaW1lOworbXkgJHRyZWF0RmFpbGluZ0FzRmxha3k7CiAKIG15ICRyZXBv
cnQ7CiBteSAkYnVpbGRib3RNYXN0ZXI7CkBAIC0yODMsNiArMjg0LDcgQEAgVXNhZ2U6ICRwcm9n
cmFtTmFtZSBbb3B0aW9uc10gW29wdGlvbnMgdG8gcGFzcyB0byBidWlsZCBzeXN0ZW1dCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNraXAgdGVzdHMgdGFnZ2VkIHdpdGggLy9cQHNr
aXAgaWYgXCRtZW1vcnlMaW1pdGVkCiAKICAgLS1yZXBvcnQtZXhlY3V0aW9uLXRpbWUgICAgICAg
UHJpbnQgZXhlY3V0aW9uIHRpbWUgZm9yIGVhY2ggc3RyZXNzIHRlc3QuCisgIC0tdHJlYXQtZmFp
bGluZy1hcy1mbGFreSAgICAgIFRyZWF0IGZhaWxpbmcgc3RyZXNzIHRlc3RzIGFzIGZsYWt5CiAK
ICAgLS1maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgT25seSBydW4gdGVzdHMgd2hvc2UgbmFt
ZSBtYXRjaGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24uCiAgIC0tZW52LXZhcnMgICAg
ICAgICAgICAgICAgICAgIFBhc3MgYSBsaXN0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBz
ZXQgYmVmb3JlIHJ1bm5pbmcgdGVzdHMuCkBAIC0zNTIsNiArMzU0LDcgQEAgR2V0T3B0aW9ucygK
ICAgICAndGVzdC13cml0ZXI9cycgPT4gXCR0ZXN0V3JpdGVyLAogICAgICdtZW1vcnktbGltaXRl
ZCcgPT4gXCRtZW1vcnlMaW1pdGVkLAogICAgICdyZXBvcnQtZXhlY3V0aW9uLXRpbWUnID0+IFwk
cmVwb3J0RXhlY3V0aW9uVGltZSwKKyAgICAndHJlYXQtZmFpbGluZy1hcy1mbGFreT1zJyA9PiBc
JHRyZWF0RmFpbGluZ0FzRmxha3ksCiAgICAgJ2ZpbHRlcj1zJyA9PiBcJGZpbHRlciwKICAgICAn
aGVscCcgPT4gXCRzaG93SGVscCwKICAgICAnZW52LXZhcnM9cycgPT4gXCRlbnZWYXJzLApAQCAt
ODAxLDYgKzgwNCwxMCBAQCBzdWIgcnVuSlNDU3RyZXNzVGVzdHMKICAgICAgICAgcHVzaChAanNj
U3RyZXNzRHJpdmVyQ21kLCAiLS1hcnRpZmFjdC1leGVjLXdyYXBwZXIiKTsKICAgICAgICAgcHVz
aChAanNjU3RyZXNzRHJpdmVyQ21kLCAkYXJ0aWZhY3RfZXhlY193cmFwcGVyKTsKICAgICB9Cisg
ICAgaWYgKGRlZmluZWQoJHRyZWF0RmFpbGluZ0FzRmxha3kpKSB7CisgICAgICAgIHB1c2goQGpz
Y1N0cmVzc0RyaXZlckNtZCwgIi0tdHJlYXQtZmFpbGluZy1hcy1mbGFreSIpOworICAgICAgICBw
dXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQsICR0cmVhdEZhaWxpbmdBc0ZsYWt5KTsKKyAgICB9CiAg
ICAgcHVzaChAanNjU3RyZXNzRHJpdmVyQ21kLCBAdGVzdExpc3QpOwogCiAgICAgaWYgKGlzV2lu
ZG93cygpICYmICFpc0N5Z3dpbigpKSB7CkBAIC05MjUsNiArOTMyLDIxIEBAIHN1YiBydW5KU0NT
dHJlc3NUZXN0cwogICAgICAgICAkcmVwb3J0RGF0YXskdGVzdFN1Y2NlZWRlZH0gPSB7YWN0dWFs
ID0+ICJQQVNTIn07CiAgICAgfQogCisgICAgbXkgQGpzY1N0cmVzc0ZsYWt5ID0gcmVhZEFsbExp
bmVzKCRqc2NTdHJlc3NSZXN1bHRzRGlyIC4gIi9mbGFreSIpOworICAgIEBqc2NTdHJlc3NGbGFr
eSA9IHNvcnQgQGpzY1N0cmVzc0ZsYWt5OworICAgIG15ICRudW1KU0NTdHJlc3NGbGFreSA9IEBq
c2NTdHJlc3NGbGFreTsKKworICAgIG15ICVqc2NTdHJlc3NGbGFreUluZm8gPSAoKTsKKyAgICBp
ZiAoJG51bUpTQ1N0cmVzc0ZsYWt5KSB7CisgICAgICAgIHByaW50ICJcbioqIFRoZSBmb2xsb3dp
bmcgSlNDIHN0cmVzcyB0ZXN0cyB3ZXJlIGZsYWt5OlxuIjsKKyAgICAgICAgZm9yZWFjaCBteSAk
dGVzdEZsYWt5IChAanNjU3RyZXNzRmxha3kpIHsKKyAgICAgICAgICAgIG15IEBmaWVsZHMgPSBz
cGxpdCAvIC8sICR0ZXN0Rmxha3k7CisgICAgICAgICAgICBwcmludCAiXHQkZmllbGRzWzBdICRm
aWVsZHNbMV0vJGZpZWxkc1syXSBwYXNzZXNcbiI7CisgICAgICAgICAgICAkanNjU3RyZXNzRmxh
a3lJbmZveyRmaWVsZHNbMF19ID0geyAnUCcgPT4gJGZpZWxkc1sxXSwgJ1QnID0+ICRmaWVsZHNb
Ml19CisgICAgICAgIH0KKyAgICAgICAgcHJpbnQgIlxuIjsKKyAgICB9CisKICAgICBteSBAanNj
U3RyZXNzRmFpbExpc3QgPSByZWFkQWxsTGluZXMoJGpzY1N0cmVzc1Jlc3VsdHNEaXIgLiAiL2Zh
aWxlZCIpOwogICAgIEBqc2NTdHJlc3NGYWlsTGlzdCA9IHNvcnQgQGpzY1N0cmVzc0ZhaWxMaXN0
OwogICAgIG15ICRudW1KU0NTdHJlc3NGYWlsdXJlcyA9IEBqc2NTdHJlc3NGYWlsTGlzdDsKQEAg
LTk1MSwxMiArOTczLDE0IEBAIHN1YiBydW5KU0NTdHJlc3NUZXN0cwogCiAgICAgcHJpbnQgIlJl
c3VsdHMgZm9yIEpTQyBzdHJlc3MgdGVzdHM6XG4iOwogICAgIHByaW50VGhpbmdzRm91bmQoJG51
bUpTQ1N0cmVzc0ZhaWx1cmVzLCAiZmFpbHVyZSIsICJmYWlsdXJlcyIsICJmb3VuZCIpOworICAg
IHByaW50VGhpbmdzRm91bmQoJG51bUpTQ1N0cmVzc0ZsYWt5LCAidGVzdCIsICJ0ZXN0cyIsICJm
bGFreSBidXQgcGFzc2VkIik7CiAgICAgcHJpbnRUaGluZ3NGb3VuZCgkbnVtSlNDU3RyZXNzTm9S
ZXN1bHRUZXN0cywgInRlc3QiLCAidGVzdHMiLCAiZmFpbGVkIHRvIGNvbXBsZXRlIik7CiAgICAg
cHJpbnQgIiAgICBPSy5cbiIgaWYgJG51bUpTQ1N0cmVzc0ZhaWx1cmVzID09IDAgYW5kICRudW1K
U0NTdHJlc3NOb1Jlc3VsdFRlc3RzID09IDA7CiAKICAgICBwcmludCAiXG4iOwogCiAgICAgaWYg
KGRlZmluZWQoJGpzb25GaWxlTmFtZSkpIHsKKyAgICAgICAgJGpzb25EYXRheydmbGFreUFuZFBh
c3NlZCd9ID0gIFwlanNjU3RyZXNzRmxha3lJbmZvOwogICAgICAgICAkanNvbkRhdGF7J3N0cmVz
c1Rlc3RGYWlsdXJlcyd9ID0gXEBqc2NTdHJlc3NGYWlsTGlzdDsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1
bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGNkMDc1YmE3NWZiN2Y2MjVkYmEyNmQ0YjEyNTE0M2Q5
NDJjMTE4NDUuLjhlMDUwZjBkMjA0YzAyN2JlYjU4ZmFlMjI1Y2VhYTA3NmVhNzRmYjkgMTAwNzU1
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2Ny
aXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtMjUsMTIgKzI1LDE3IEBACiAKIHJlcXVpcmUg
J2ZpbGV1dGlscycKIHJlcXVpcmUgJ2dldG9wdGxvbmcnCityZXF1aXJlICdvc3RydWN0JwogcmVx
dWlyZSAncGF0aG5hbWUnCiByZXF1aXJlICdyYmNvbmZpZycKK3JlcXVpcmUgJ3NldCcKIHJlcXVp
cmUgJ3RlbXBmaWxlJwogcmVxdWlyZSAndXJpJwogcmVxdWlyZSAneWFtbCcKIAorcmVxdWlyZV9y
ZWxhdGl2ZSAid2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9y
IgorcmVxdWlyZV9yZWxhdGl2ZSAid2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvZXhlY3V0b3Ii
CisKIG1vZHVsZSBVUkkKICAgICBjbGFzcyBTU0ggPCBHZW5lcmljCiAgICAgICAgIERFRkFVTFRf
UE9SVCA9IDIyCkBAIC03Myw2ICs3OCw4IEBAIFNUQVRVU19GSUxFX0ZBSUwgPSAiRiIKIFBBUkFM
TEVMX1JFTU9URV9XUkFQUEVSX01BUktfQkVHSU4gPSAiNWQ2NTMyOWJkMWEzIgogUEFSQUxMRUxf
UkVNT1RFX1dSQVBQRVJfTUFSS19FTkQgPSAiYTlhZWE1YzNiODQzIgogUEFSQUxMRUxfUkVNT1RF
X1NUQVRFX0xPU1RfTUFSS0VSID0gIjcwOWZiN2E3N2M0NTIzMTkxOGViMTE4YSIKK0lURVJBVElP
Tl9MSU1JVFMgPSBPcGVuU3RydWN0Lm5ldyg6aW5mcmFJdGVyYXRpb25zRmxvb3IgPT4gMywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aXRlcmF0aW9uc0NlaWxpbmcgPT4gMTAp
CiAKIGJlZ2luCiAgICAgcmVxdWlyZSAnc2hlbGx3b3JkcycKQEAgLTEyNCw3ICsxMzEsNiBAQCBk
ZWYgZXNjYXBlQWxsKGFycmF5KQogICAgIH0uam9pbignICcpCiBlbmQKIAotCiAkanNjUGF0aCA9
IG5pbAogJGRvTm90TWVzc1dpdGhWTVBhdGggPSBmYWxzZQogJGppdFRlc3RzID0gdHJ1ZQpAQCAt
MTUyLDYgKzE1OCwxMSBAQCAkbGRkID0gbmlsCiAkYXJ0aWZhY3RfZXhlY193cmFwcGVyID0gbmls
CiAkbnVtQ2hpbGRQcm9jZXNzZXNTZXRCeVVzZXIgPSBmYWxzZQogJHJ1blVuaXF1ZUlkID0gUmFu
ZG9tLm5ldy5ieXRlcygxNikudW5wYWNrKCJIKiIpWzBdCiskdGVzdHNEZWJ1Z1N0cmVhbSA9IG5p
bCAjIHNldCB0byAkc3RkZXJyIGZvciBkZWJ1Z2dpbmcKKworZGVmIHB1dGQocykKKyAgICAkdGVz
dHNEZWJ1Z1N0cmVhbS5wdXRzKHMpIHVubGVzcyAkdGVzdHNEZWJ1Z1N0cmVhbS5uaWw/CitlbmQK
IAogZGVmIHVzYWdlCiAgICAgcHV0cyAicnVuLWpzYy1zdHJlc3MtdGVzdHMgLWogPHNoZWxsIHBh
dGg+IDxjb2xsZWN0aW9ucyBwYXRoPiBbPGNvbGxlY3Rpb25zIHBhdGg+IC4uLl0iCkBAIC0yMjIs
NiArMjMzLDcgQEAgR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRvcHRMb25nOjpO
T19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tcnVieS1ydW5uZXInLCBHZXRvcHRMb25n
OjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tZ251LXBhcmFsbGVsLXJ1bm5lcics
IEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS10ZXN0LXdyaXRl
cicsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS10
cmVhdC1mYWlsaW5nLWFzLWZsYWt5JywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAog
ICAgICAgICAgICAgICAgWyctLXJlbW90ZScsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5U
XSwKICAgICAgICAgICAgICAgIFsnLS1yZW1vdGUtY29uZmlnLWZpbGUnLCBHZXRvcHRMb25nOjpS
RVFVSVJFRF9BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tcmVwb3J0LWV4ZWN1dGlvbi10
aW1lJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLApAQCAtMjcwLDYgKzI4MiwzMCBAQCBHZXRv
cHRMb25nLm5ldyhbJy0taGVscCcsICctaCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAg
ICAgICAgJHRlc3RSdW5uZXJUeXBlID0gOmdudXBhcmFsbGVsCiAgICAgd2hlbiAnLS10ZXN0LXdy
aXRlcicKICAgICAgICAgJHRlc3RXcml0ZXIgPSBhcmcKKyAgICB3aGVuICctLXRyZWF0LWZhaWxp
bmctYXMtZmxha3knCisgICAgICAgIG1kID0gL14oW14sXSspLChcZCspLChcZCspJC8ubWF0Y2go
YXJnKQorICAgICAgICBpZiBtZC5uaWw/CisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIkNvdWxk
IG5vdCBwYXJzZSBhcmd1bWVudCB0byBgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5YDsgZXhwZWN0
ZWQgYHBhc3NQZXJjZW50YWdlLG1heFRyaWVzLG1heEZhaWxpbmdgIikKKyAgICAgICAgICAgIGV4
aXQoMSkKKyAgICAgICAgZW5kCisgICAgICAgIHBhc3NQZXJjZW50YWdlID0gbWRbMV0udG9fZgor
ICAgICAgICBpZiBwYXNzUGVyY2VudGFnZS56ZXJvPworICAgICAgICAgICAgJHN0ZGVyci5wdXRz
KCJJbnZhbGlkIHBhc3NQZXJjZW50YWdlIGAje21kWzFdfWAiKQorICAgICAgICAgICAgZXhpdCgx
KQorICAgICAgICBlbmQKKyAgICAgICAgbWF4VHJpZXMgPSBtZFsyXS50b19pCisgICAgICAgIGlm
IG1heFRyaWVzID09IDAKKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiSW52YWxpZCBtYXhUcmll
cyBgI3ttZFsyXX1gIikKKyAgICAgICAgICAgIGV4aXQoMSkKKyAgICAgICAgZW5kCisgICAgICAg
IG1heEZhaWxpbmcgPSBtZFszXS50b19pCisgICAgICAgIGlmIG1heEZhaWxpbmcgPT0gMAorICAg
ICAgICAgICAgJHN0ZGVyci5wdXRzKCJJbnZhbGlkIG1heEZhaWxpbmcgYCN7bWRbM119YCIpCisg
ICAgICAgICAgICBleGl0KDEpCisgICAgICAgIGVuZAorICAgICAgICAkdHJlYXRGYWlsaW5nQXNG
bGFreSA9IE9wZW5TdHJ1Y3QubmV3KDpwYXNzUGVyY2VudGFnZSA9PiBwYXNzUGVyY2VudGFnZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMg
PT4gbWF4VHJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOm1heEZhaWxpbmcgPT4gbWF4RmFpbGluZykKICAgICB3aGVuICctLXJlbW90ZScKICAgICAg
ICAgJGNvcHlWTSA9IHRydWUKICAgICAgICAgJHRhcmJhbGwgPSB0cnVlCkBAIC01NjksNiArNjA1
LDk0IEBAIEZUTF9PUFRJT05TID0gWyItLXVzZUZUTEpJVD10cnVlIl0KIEZPUkNFX0xMSU5UX0VY
SVRfT1BUSU9OUyA9IFsiLS1mb3JjZU9TUkV4aXRUb0xMSW50PXRydWUiXQogRVhFQ1VUQUJMRV9G
VVpaRVJfT1BUSU9OUyA9IFsiLS11c2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1eno9dHJ1ZSIsICIt
LWZpcmVFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpSYW5kb21seT10cnVlIl0KIAorY2xhc3MgQmFz
ZVBsYW4KKyAgICBhdHRyX3JlYWRlciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRzLCA6ZmFtaWx5LCA6
bmFtZSwgOm91dHB1dEhhbmRsZXIsIDplcnJvckhhbmRsZXIsIDphZGRpdGlvbmFsRW52LCA6aW5k
ZXgKKyAgICBhdHRyX2FjY2Vzc29yIDpmbGFreQorCisgICAgQEBpbmRleCA9IDAKKyAgICBkZWYg
aW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5k
bGVyLCBlcnJvckhhbmRsZXIsIGZsYWt5KQorICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5
CisgICAgICAgIEBhcmd1bWVudHMgPSBhcmd1bWVudHNNYXBwZXIoYXJndW1lbnRzKQorICAgICAg
ICBAZmFtaWx5ID0gZmFtaWx5CisgICAgICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAb3V0cHV0
SGFuZGxlciA9IG91dHB1dEhhbmRsZXIKKyAgICAgICAgQGVycm9ySGFuZGxlciA9IGVycm9ySGFu
ZGxlcgorICAgICAgICBAZmxha3kgPSBmbGFreQorICAgICAgICBAYWRkaXRpb25hbEVudiA9IFtd
CisgICAgICAgIEBpbmRleCA9IEBAaW5kZXgKKyAgICAgICAgQEBpbmRleCArPSAxCisgICAgZW5k
CisgICAgZGVmIHNlbGYubW9jayhmYW1pbHksIG5hbWUsIGZsYWt5PW5pbCkKKyAgICAgICAgc2Vs
Zi5uZXcoIi9ub25lIiwgW10sIGZhbWlseSwgbmFtZSwgbmlsLCBuaWwsIGZsYWt5KQorICAgIGVu
ZAorICAgIGRlZiBzZWxmLmNyZWF0ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1l
LCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIpCisgICAgICAgIGlmICRydW5Db21tYW5kT3B0
aW9uc1s6Y3Jhc2hPS10KKyAgICAgICAgICAgIG91dHB1dEhhbmRsZXIgPSBub2lzeU91dHB1dEhh
bmRsZXIKKyAgICAgICAgZW5kCisgICAgICAgIHNlbGYubmV3KGRpcmVjdG9yeSwgYXJndW1lbnRz
LCBmYW1pbHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlciwgJHJ1bkNvbW1hbmRP
cHRpb25zWzpmbGFreV0pCisgICAgZW5kCisgICAgZGVmIGFyZ3VtZW50c01hcHBlcihhcmdzKQor
ICAgICAgICBhcmdzCisgICAgZW5kCisgICAgIyBXZSByZWd1bGFybHkgcGxhY2UgUGxhbnMgaW4g
Y29udGFpbmVycywgYnV0IG1heSBtb2RpZnkgQGZsYWt5CisgICAgIyBhZnRlciB0aGUgZmFjdDsg
b25seSBoYXNoIG9uIEBpbmRleCBpbnN0ZWFkLgorICAgIGRlZiBoYXNoCisgICAgICAgIEBpbmRl
eAorICAgIGVuZAorICAgIGRlZiB0b19zCisgICAgICAgICIje0BpbmRleH0iCisgICAgZW5kCitl
bmQKKworY2xhc3MgVGVzdFJ1bm5lcgorICAgIGRlZiBpbml0aWFsaXplKHRlc3RSdW5uZXJUeXBl
LCBydW5uZXJEaXIpCisgICAgICAgIEB0ZXN0UnVubmVyVHlwZSA9IHRlc3RSdW5uZXJUeXBlCisg
ICAgICAgIEBydW5uZXJEaXIgPSBydW5uZXJEaXIKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZShy
dW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAg
ICBwcmVwYXJlU2NyaXB0cyhydW5saXN0KQorICAgICAgICBwcmVwYXJlUnVubmVyKHJ1bmxpc3Qs
IHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgZW5kCisgICAg
ZGVmIHByZXBhcmVTY3JpcHRzKHJ1bmxpc3QpCisgICAgICAgIERpci5ta2RpcihAcnVubmVyRGly
KSB1bmxlc3MgQHJ1bm5lckRpci5kaXJlY3Rvcnk/CisgICAgICAgIHRvRGVsZXRlID0gW10KKyAg
ICAgICAgRGlyLmZvcmVhY2goQHJ1bm5lckRpcikgeworICAgICAgICAgICAgfCBmaWxlbmFtZSB8
CisgICAgICAgICAgICBpZiBmaWxlbmFtZSA9fiAvXnRlc3RfLworICAgICAgICAgICAgICAgIHRv
RGVsZXRlIDw8IGZpbGVuYW1lCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorCisgICAgICAg
IHRvRGVsZXRlLmVhY2ggeworICAgICAgICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgICAgICBG
aWxlLnVubGluayhAcnVubmVyRGlyICsgZmlsZW5hbWUpCisgICAgICAgIH0KKworICAgICAgICAj
IFdyaXRlIHRlc3Qgc2NyaXB0cyBpbiBwYXJhbGxlbCBhcyB0aGlzIGlzIGJvdGggYW4gZXhwZW5z
aXZlIGFuZCBhCisgICAgICAgICMgaGlnaGx5IElPIGludGVuc2l2ZSBvcGVyYXRpb24sIGJ1dCBl
YWNoIHNjcmlwdCBpcyBpbmRlcGVuZGVudCBhbmQKKyAgICAgICAgIyB0aGUgb3BlcmF0aW9uIGlz
IHB1cmUgb3RoZXIgdGhhbiB3cml0aW5nIHRoZSB1bmlxdWUgcnVuIHNjcmlwdC4KKyAgICAgICAg
cGFyYWxsZWxFYWNoKHJ1bmxpc3QpIGRvIHwgcGxhbiB8CisgICAgICAgICAgICBwbGFuLndyaXRl
UnVuU2NyaXB0KEBydW5uZXJEaXIgKyAidGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAg
ICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBzZWxmLmNyZWF0ZSh0ZXN0UnVubmVyVHlwZSwgcnVu
bmVyRGlyKQorICAgICAgICBjbHMgPSBuaWwKKyAgICAgICAgY2FzZSB0ZXN0UnVubmVyVHlwZQor
ICAgICAgICB3aGVuIDpzaGVsbAorICAgICAgICAgICAgY2xzID0gVGVzdFJ1bm5lclNoZWxsCisg
ICAgICAgIHdoZW4gOm1ha2UKKyAgICAgICAgICAgIGNscyA9IFRlc3RSdW5uZXJNYWtlCisgICAg
ICAgIHdoZW4gOnJ1YnkKKyAgICAgICAgICAgIGNscyA9IFRlc3RSdW5uZXJSdWJ5CisgICAgICAg
IHdoZW4gOmdudXBhcmFsbGVsCisgICAgICAgICAgICBjbHMgPSBUZXN0UnVubmVyR251UGFyYWxs
ZWwKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVua25vd24gdGVzdCBydW5uZXIg
dHlwZTogI3t0ZXN0UnVubmVyVHlwZS50b19zfSIKKyAgICAgICAgZW5kCisgICAgICAgIHJldHVy
biBjbHMubmV3KHRlc3RSdW5uZXJUeXBlLCBydW5uZXJEaXIpCisgICAgZW5kCitlbmQKKwogcmVx
dWlyZV9yZWxhdGl2ZSAid2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLSN7JHRlc3RX
cml0ZXJ9IgogCiBkZWYgc2hvdWxkQ29sbGVjdENvbnRpbnVvdXNseT8KQEAgLTU3Nyw3ICs3MDEs
NyBAQCBlbmQKIAogQ09MTEVDVF9DT05USU5VT1VTTFlfT1BUSU9OUyA9IHNob3VsZENvbGxlY3RD
b250aW51b3VzbHk/ID8gWyItLWNvbGxlY3RDb250aW51b3VzbHk9dHJ1ZSIsICItLXVzZUdlbmVy
YXRpb25hbEdDPWZhbHNlIiwgIi0tdmVyaWZ5R0M9dHJ1ZSJdIDogW10KIAotJHNlcmlhbFJ1bmxp
c3QgPSBbXQorJHNlcmlhbFBsYW5zID0gU2V0Lm5ldwogJHJ1bmxpc3QgPSBbXQogCiBkZWYgZnJh
bWV3b3JrRnJvbUpTQ1BhdGgoanNjUGF0aCkKQEAgLTY1MCw3ICs3NzQsNyBAQCBkZWYgYWRkUnVu
Q29tbWFuZChraW5kLCBjb21tYW5kLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIsICphZGRp
dGlvbmFsRW52KQogICAgIGlmICRmaWx0ZXIgYW5kIG5hbWUgIX4gJGZpbHRlcgogICAgICAgICBy
ZXR1cm4KICAgICBlbmQKLSAgICBwbGFuID0gUGxhbi5uZXcoCisgICAgcGxhbiA9IFBsYW4uY3Jl
YXRlKAogICAgICAgICAkYmVuY2htYXJrRGlyZWN0b3J5LCBjb21tYW5kLCAiI3skY29sbGVjdGlv
bk5hbWV9LyN7JGJlbmNobWFya30iLCBuYW1lLCBvdXRwdXRIYW5kbGVyLAogICAgICAgICBlcnJv
ckhhbmRsZXIpCiAgICAgcGxhbi5hZGRpdGlvbmFsRW52LnB1c2goKmFkZGl0aW9uYWxFbnYpCkBA
IC02NTksNyArNzgzLDcgQEAgZGVmIGFkZFJ1bkNvbW1hbmQoa2luZCwgY29tbWFuZCwgb3V0cHV0
SGFuZGxlciwgZXJyb3JIYW5kbGVyLCAqYWRkaXRpb25hbEVudikKICAgICAgICAgIyB0aGF0IHdl
IGNhbiB0cmVhdCB0aGVtIHNwZWNpYWxseSB3aGVuIHNjaGVkdWxpbmcsIGJ1dCBrZWVwCiAgICAg
ICAgICMgaXQgaW4gdGhlICRydW5saXN0IGZvciBjb2RlIHRoYXQgZG9zbid0IGNhcmUgYWJvdXQK
ICAgICAgICAgIyBzY2hlZHVsaW5nLgotICAgICAgICAkc2VyaWFsUnVubGlzdCA8PCBwbGFuCisg
ICAgICAgICRzZXJpYWxQbGFucy5hZGQocGxhbikKICAgICBlbmQKIAogICAgIGlmICRudW1DaGls
ZFByb2Nlc3NlcyA+IDEgYW5kICRydW5Db21tYW5kT3B0aW9uc1s6aXNTbG93XQpAQCAtNzE3LDYg
Kzg0MSw0OCBAQCBkZWYgc2VyaWFsIQogICAgICRydW5Db21tYW5kT3B0aW9uc1s6c2VyaWFsXSA9
IHRydWUKIGVuZAogCisKK2NsYXNzIEZsYWt5CisgICAgYXR0cl9yZWFkZXIgOnBhc3NQZXJjZW50
YWdlLCA6bWF4VHJpZXMKKyAgICBkZWYgaW5pdGlhbGl6ZShwYXNzUGVyY2VudGFnZSwgbWF4VHJp
ZXMpCisgICAgICAgIEBwYXNzUGVyY2VudGFnZSA9IHBhc3NQZXJjZW50YWdlCisgICAgICAgIEBt
YXhUcmllcyA9IG1heFRyaWVzCisgICAgZW5kCisgICAgZGVmIHRvX3MKKyAgICAgICAgIkZsYWt5
KCN7QHBhc3NQZXJjZW50YWdlfSwgI3tAbWF4VHJpZXN9KSIKKyAgICBlbmQKKyAgICBkZWYgcmVz
dWx0KHN0YXR1c2VzKQorICAgICAgICBpZiBzdGF0dXNlcy5sZW5ndGggPiBAbWF4VHJpZXMKKyAg
ICAgICAgICAgICMgVGhpcyBjb3VsZCBoYXBwZW4gaWYgKGJlY2F1c2Ugb2YgcmVtb3RlcyBkaXNh
cHBlYXJpbmcKKyAgICAgICAgICAgICMgYW5kIHJlYXBwZWFyaW5nKSB0aGVyZSBhcmUgbXVsdGlw
bGUgcnVucyBmb3IgdGhlIGxhc3QKKyAgICAgICAgICAgICMgdHJ5IGZvciBmbGFreSB0ZXN0LiBK
dXN0IGlnbm9yZSBhbnkgZXh0cmEgc3RhdHVzZXMuCisgICAgICAgICAgICBzdGF0dXNlcyA9IHN0
YXR1c2VzLnRha2UoQG1heFRyaWVzKQorICAgICAgICBlbmQKKyAgICAgICAgc3VjY2Vzc2VzID0g
c3VjY2Vzc2Z1bFN0YXR1c2VzKHN0YXR1c2VzKQorICAgICAgICByZW1haW5pbmcgPSBAbWF4VHJp
ZXMgLSBzdGF0dXNlcy5sZW5ndGgKKyAgICAgICAgcmVxdWlyZWRTdWNjZXNzZXMgPSAoQHBhc3NQ
ZXJjZW50YWdlICogQG1heFRyaWVzKS5jZWlsCisgICAgICAgIHJldCA9IG5pbCAjICJoYXMgbm90
IGNvbXBsZXRlZCB5ZXQiCisgICAgICAgIGlmIHN1Y2Nlc3NlcyA+PSByZXF1aXJlZFN1Y2Nlc3Nl
cworICAgICAgICAgICAgcmV0ID0gdHJ1ZQorICAgICAgICBlbHNpZiAoc3VjY2Vzc2VzICsgcmVt
YWluaW5nKSA8IHJlcXVpcmVkU3VjY2Vzc2VzCisgICAgICAgICAgICByZXQgPSBmYWxzZQorICAg
ICAgICBlbmQKKyAgICAgICAgcHV0ZCgiI3tzZWxmfS5yZXN1bHQoI3tzdGF0dXNlc30pID0+ICN7
cmV0fSIpCisgICAgICAgIHJldAorICAgIGVuZAorICAgIHByaXZhdGUKKyAgICBkZWYgc3VjY2Vz
c2Z1bFN0YXR1c2VzKHN0YXR1c2VzKQorICAgICAgICBzdGF0dXNlcy5jb3VudCB7CisgICAgICAg
ICAgICB8c3RhdHVzfAorICAgICAgICAgICAgc3RhdHVzID09IFNUQVRVU19GSUxFX1BBU1MKKyAg
ICAgICAgfQorICAgIGVuZAorZW5kCisKK2RlZiBmbGFreSEocGFzc1BlcmNlbnRhZ2UsIG1heFRy
aWVzKQorICAgICRydW5Db21tYW5kT3B0aW9uc1s6Zmxha3ldID0gRmxha3kubmV3KHBhc3NQZXJj
ZW50YWdlLCBtYXhUcmllcykKK2VuZAorCiBkZWYgcmVxdWlyZU9wdGlvbnMoKm9wdGlvbnMpCiAg
ICAgJHRlc3RTcGVjaWZpY1JlcXVpcmVkT3B0aW9ucyArPSBvcHRpb25zCiBlbmQKQEAgLTE4NDgs
MzQgKzIwMTQsNiBAQCBkZWYgaGFuZGxlQ29sbGVjdGlvbihjb2xsZWN0aW9uKQogICAgIGVuZAog
ZW5kCiAKLWRlZiBhcHBlbmRGYWlsdXJlKHBsYW4pCi0gICAgRmlsZS5vcGVuKCRvdXRwdXREaXIg
KyAiZmFpbGVkIiwgImEiKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgIG91dHAucHV0cyBw
bGFuLm5hbWUKLSAgICB9Ci1lbmQKLQotZGVmIGFwcGVuZFBhc3MocGxhbikKLSAgICBGaWxlLm9w
ZW4oJG91dHB1dERpciArICJwYXNzZWQiLCAiYSIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAg
ICAgb3V0cC5wdXRzIHBsYW4ubmFtZQotICAgIH0KLWVuZAotCi1kZWYgYXBwZW5kTm9SZXN1bHQo
cGxhbikKLSAgICBGaWxlLm9wZW4oJG91dHB1dERpciArICJub3Jlc3VsdCIsICJhIikgewotICAg
ICAgICB8IG91dHAgfAotICAgICAgICBvdXRwLnB1dHMgcGxhbi5uYW1lCi0gICAgfQotZW5kCi0K
LWRlZiBhcHBlbmRSZXN1bHQocGxhbiwgZGlkUGFzcykKLSAgICBGaWxlLm9wZW4oJG91dHB1dERp
ciArICJyZXN1bHRzIiwgImEiKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgIG91dHAucHV0
cyAiI3twbGFuLm5hbWV9OiAje2RpZFBhc3MgPyAnUEFTUycgOiAnRkFJTCd9IgotICAgIH0KLWVu
ZAotCiBkZWYgcHJlcGFyZUJ1bmRsZQogICAgIHJhaXNlIGlmICRidW5kbGUKIApAQCAtMjA1OCw1
NCArMjE5NiwxMSBAQCBkZWYgcGFyYWxsZWxFYWNoKGFycmF5LCAmYmxvY2spCiAgICAgZW5kCiBl
bmQKIAotZGVmIHByZXBhcmVUZXN0UnVubmVyKHJlbW90ZUluZGV4PTApCi0gICAgcmFpc2UgaWYg
JGJ1bmRsZQotCi0gICAgJHJ1bmxpc3QuZWFjaF93aXRoX2luZGV4IHsKLSAgICAgICAgfCBwbGFu
LCBpbmRleCB8Ci0gICAgICAgIHBsYW4uaW5kZXggPSBpbmRleAotICAgIH0KLQotICAgIERpci5t
a2RpcigkcnVubmVyRGlyKSB1bmxlc3MgJHJ1bm5lckRpci5kaXJlY3Rvcnk/Ci0gICAgdG9EZWxl
dGUgPSBbXQotICAgIERpci5mb3JlYWNoKCRydW5uZXJEaXIpIHsKLSAgICAgICAgfCBmaWxlbmFt
ZSB8Ci0gICAgICAgIGlmIGZpbGVuYW1lID1+IC9edGVzdF8vCi0gICAgICAgICAgICB0b0RlbGV0
ZSA8PCBmaWxlbmFtZQotICAgICAgICBlbmQKLSAgICB9Ci0gICAgCi0gICAgdG9EZWxldGUuZWFj
aCB7Ci0gICAgICAgIHwgZmlsZW5hbWUgfAotICAgICAgICBGaWxlLnVubGluaygkcnVubmVyRGly
ICsgZmlsZW5hbWUpCi0gICAgfQotCi0gICAgIyBXcml0ZSB0ZXN0IHNjcmlwdHMgaW4gcGFyYWxs
ZWwgYXMgdGhpcyBpcyBib3RoIGFuIGV4cGVuc2l2ZSBhbmQgYQotICAgICMgaGlnaGx5IElPIGlu
dGVuc2l2ZSBvcGVyYXRpb24sIGJ1dCBlYWNoIHNjcmlwdCBpcyBpbmRlcGVuZGVudCBhbmQKLSAg
ICAjIHRoZSBvcGVyYXRpb24gaXMgcHVyZSBvdGhlciB0aGFuIHdyaXRpbmcgdGhlIHVuaXF1ZSBy
dW4gc2NyaXB0LgotICAgIHBhcmFsbGVsRWFjaCgkcnVubGlzdCkgZG8gfCBwbGFuIHwKLSAgICAg
ICAgcGxhbi53cml0ZVJ1blNjcmlwdCgkcnVubmVyRGlyICsgInRlc3Rfc2NyaXB0XyN7cGxhbi5p
bmRleH0iKQotICAgIGVuZAotCi0gICAgY2FzZSAkdGVzdFJ1bm5lclR5cGUKLSAgICB3aGVuIDpt
YWtlCi0gICAgICAgIHByZXBhcmVNYWtlVGVzdFJ1bm5lcihyZW1vdGVJbmRleCkKLSAgICB3aGVu
IDpzaGVsbAotICAgICAgICBwcmVwYXJlU2hlbGxUZXN0UnVubmVyCi0gICAgd2hlbiA6cnVieQot
ICAgICAgICBwcmVwYXJlUnVieVRlc3RSdW5uZXIKLSAgICB3aGVuIDpnbnVwYXJhbGxlbAotICAg
ICAgICBwcmVwYXJlR251UGFyYWxsZWxUZXN0UnVubmVyCi0gICAgZWxzZQotICAgICAgICByYWlz
ZSAiVW5rbm93biB0ZXN0IHJ1bm5lciB0eXBlOiAjeyR0ZXN0UnVubmVyVHlwZS50b19zfSIKLSAg
ICBlbmQKLWVuZAotCiBkZWYgY2xlYW5SdW5uZXJEaXJlY3RvcnkKICAgICByYWlzZSB1bmxlc3Mg
JGJ1bmRsZQogICAgIERpci5mb3JlYWNoKCRydW5uZXJEaXIpIHsKICAgICAgICAgfCBmaWxlbmFt
ZSB8Ci0gICAgICAgIG5leHQgdW5sZXNzIGZpbGVuYW1lID1+IC9edGVzdF9mYWlsLworICAgICAg
ICBuZXh0IHVubGVzcyBmaWxlbmFtZSA9fiAvXiN7U1RBVFVTX0ZJTEVfUFJFRklYfS8KICAgICAg
ICAgRmlsZVV0aWxzLnJtX2YgJHJ1bm5lckRpciArIGZpbGVuYW1lCiAgICAgfQogZW5kCkBAIC0y
Mjc0LDkgKzIzNjksOSBAQCBkZWYgZXhwb3J0QmFzZUVudmlyb25tZW50VmFyaWFibGVzKGVzY2Fw
ZSkKICAgICBdLmpvaW4oIiIpCiBlbmQKIAotZGVmIHJ1blRlc3RSdW5uZXIocmVtb3RlSW5kZXg9
MCkKLSAgICBpZiAkcmVtb3RlCi0gICAgICAgIHJlbW90ZUhvc3QgPSAkcmVtb3RlSG9zdHNbcmVt
b3RlSW5kZXhdCitkZWYgcnVuVGVzdFJ1bm5lcih0ZXN0UnVubmVyLCByZW1vdGVIb3N0cywgcmVt
b3RlSW5kZXg9MCkKKyAgICBpZiBub3QgcmVtb3RlSG9zdHMubmlsPworICAgICAgICByZW1vdGVI
b3N0ID0gcmVtb3RlSG9zdHNbcmVtb3RlSW5kZXhdCiAgICAgICAgIGdldFJlbW90ZURpcmVjdG9y
eUlmTmVlZGVkKHJlbW90ZUhvc3QpCiAgICAgICAgIGNvcHlCdW5kbGVUb1JlbW90ZShyZW1vdGVI
b3N0KQogICAgICAgICByZW1vdGVTY3JpcHQgPSAiXCIiCkBAIC0yMjg2LDExICsyMzgxLDExIEBA
IGRlZiBydW5UZXN0UnVubmVyKHJlbW90ZUluZGV4PTApCiAgICAgICAgIHJlbW90ZVNjcmlwdCAr
PSAiY2QgI3skb3V0cHV0RGlyLmJhc2VuYW1lfS8ucnVubmVyICYmICIKICAgICAgICAgcmVtb3Rl
U2NyaXB0ICs9IGV4cG9ydEJhc2VFbnZpcm9ubWVudFZhcmlhYmxlcyh0cnVlKQogICAgICAgICAk
ZW52VmFycy5lYWNoIHsgfHZhcnwgcmVtb3RlU2NyaXB0ICs9ICJleHBvcnQgIiA8PCB2YXIgPDwg
IlxuIiB9Ci0gICAgICAgIHJlbW90ZVNjcmlwdCArPSAiI3t0ZXN0UnVubmVyQ29tbWFuZChyZW1v
dGVJbmRleCl9XCIiCisgICAgICAgIHJlbW90ZVNjcmlwdCArPSAiI3t0ZXN0UnVubmVyLmNvbW1h
bmQocmVtb3RlSW5kZXgpfVwiIgogICAgICAgICBydW5BbmRNb25pdG9yVGVzdFJ1bm5lckNvbW1h
bmQoWyJzc2giLCAiLW8iLCAiTm9Ib3N0QXV0aGVudGljYXRpb25Gb3JMb2NhbGhvc3Q9eWVzIiwg
Ii1wIiwgcmVtb3RlSG9zdC5wb3J0LnRvX3MsICIje3JlbW90ZUhvc3QudXNlcn1AI3tyZW1vdGVI
b3N0Lmhvc3R9IiwgcmVtb3RlU2NyaXB0XSkKICAgICBlbHNlCiAgICAgICAgIERpci5jaGRpcigk
cnVubmVyRGlyKSB7Ci0gICAgICAgICAgICBydW5BbmRNb25pdG9yVGVzdFJ1bm5lckNvbW1hbmQo
U2hlbGx3b3Jkcy5zaGVsbHNwbGl0KHRlc3RSdW5uZXJDb21tYW5kKSkKKyAgICAgICAgICAgIHJ1
bkFuZE1vbml0b3JUZXN0UnVubmVyQ29tbWFuZChTaGVsbHdvcmRzLnNoZWxsc3BsaXQodGVzdFJ1
bm5lci5jb21tYW5kKSkKICAgICAgICAgfQogICAgIGVuZAogZW5kCkBAIC0yMzA3LDM4ICsyNDAy
LDIxIEBAIGRlZiBwcm9jZXNzU3RhdHVzTGluZShtYXAsIGxpbmUpCiAgICAgcnVuSWQgPSBtZFs6
cnVuSWRdCiAgICAgcmVzdWx0ID0gbWRbOnJlc3VsdF0KICAgICBpZiBydW5JZCAhPSAkcnVuVW5p
cXVlSWQKLSAgICAgICAgIyBUaGlzIG1heSBjb25jZWl2YWJseSBoYXBwZW4gaWYgYSByZW1vdGUg
Z29lcwotICAgICAgICAjIGF3YXkgaW4gdGhlIG1pZGRsZSBvZiBhIHJ1biBhbmQgY29tZXMgYmFj
awotICAgICAgICAjIG9ubGluZSBpbiB0aGUgbWlkZGxlIG9mIGEgZGlmZmVyZW50IHJ1bi4KLSAg
ICAgICAgJHN0ZGVyci5wdXRzKCJJZ25vcmluZyBzdGFsZSBzdGF0dXMgZmlsZSBmb3IgI3tpbmRl
eH0gKElEICN7cnVuSWR9IGJ1dCBjdXJyZW50IElEIGlzICN7JHJ1blVuaXF1ZUlkfSkiKQotICAg
ICAgICByZXR1cm4KLSAgICBlbmQKLSAgICBpZiBtYXAuaGFzX2tleT8oaW5kZXgpCi0gICAgICAg
ICMgT25lIHNjZW5hcmlvIGluIHdoaWNoIHRoaXMgY291bGQgaGFwcGVuOgotICAgICAgICAjIFRl
c3QgVCBydW5zIG9uIHJlbW90ZSBob3N0IEEgYW5kCi0gICAgICAgICMgICAxLiB0aGUgc3RhdHVz
IGZpbGUgcmVhY2hlcyBBJ3MgZGlzawotICAgICAgICAjICAgMi4gc29tZWhvdyB0aGUgZ251IHBh
cmFsbGVsIHJ1bm5lciBpcyBub3QgbWFkZSBhd2FyZSBvZiB0aGUgdGVzdCdzIGNvbXBsZXRpb24g
KHBhY2tldCBsb3NzPykKLSAgICAgICAgIyAgIDMuIG1hY2hpbmUgQSBjcmFzaGVzCi0gICAgICAg
ICMgICA0LiBnbnUgcGFyYWxsZWwgcmUtc2NoZWR1bGVzIHRoZSB0ZXN0IHRvIHJ1biBvbiByZW1v
dGUgaG9zdCBCLCB3aGVyZSBpdCBydW5zIHRvIGNvbXBsZXRpb24KLSAgICAgICAgIyAgIDUuIEIg
Y29tZXMgYmFjayBvbmxpbmUgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHJ1bgotICAgICAgICAjICAg
Ni4gd2UgY29sbGVjdCB0aGUgc3RhdHVzIGZpbGVzIGZyb20gYWxsIHJlbW90ZXMgYW5kIGVuZCB1
cCB3aXRoIHR3byBzdGF0dXMgZmlsZXMgZm9yIFQuCi0gICAgICAgIHByZXYgPSBtYXBbaW5kZXhd
Ci0gICAgICAgICMgbWFwW2luZGV4XSBob2xkcwotICAgICAgICAjIC0gYSBudW1iZXIsIGlmIGFs
bCByZXN1bHRzIGNvZGVzIHdlJ3ZlIG9ic2VydmVkIGZvciBhIHRlc3QgYXJlIHRoZSBzYW1lCi0g
ICAgICAgICMgLSBhbiBhcnJheSwgaWYgdGhleSBkaXZlcmdlLgotICAgICAgICBpZiBwcmV2Lmlz
X2E/KEFycmF5KQotICAgICAgICAgICAgcHJldi5wdXNoKHJlc3VsdCkKLSAgICAgICAgZWxzaWYg
cHJldiAhPSByZXN1bHQKLSAgICAgICAgICAgICMgSWYgdGhlIHR3byByZXN1bHRzIGRpZmZlciwg
a2VlcCB0aGVtCi0gICAgICAgICAgICAjIGJvdGguIFRoaXMgaXMgc2ltcGx5IGEgd2F5IHRvIG1h
a2Ugbm90ZSBvZgotICAgICAgICAgICAgIyB0aGUgZGl2ZXJnZW5jZSAoZm9yIGxhdGVyIHJlcG9y
dGluZykuCi0gICAgICAgICAgICBtYXBbaW5kZXhdID0gW3ByZXYsIHJlc3VsdF0KKyAgICAgICAg
aWYgJGJ1bmRsZQorICAgICAgICAgICAgIyBUaGUgc2NyaXB0cyBpbiB0aGUgYnVuZGxlIGhhdmUg
dGhlaXIgb3duIHJ1bklkIGVtYmVkZGVkLAorICAgICAgICAgICAgIyBqdXN0IGlnbm9yZSB0aGUg
dmFsdWUuCiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICMgR290IHRoZSBzYW1lIHJlc3VsdCwg
bm8gbmVlZCB0byBkbyBhbnl0aGluZy4KKyAgICAgICAgICAgICMgVGhpcyBtYXkgY29uY2VpdmFi
bHkgaGFwcGVuIGlmIGEgcmVtb3RlIGdvZXMKKyAgICAgICAgICAgICMgYXdheSBpbiB0aGUgbWlk
ZGxlIG9mIGEgcnVuIGFuZCBjb21lcyBiYWNrCisgICAgICAgICAgICAjIG9ubGluZSBpbiB0aGUg
bWlkZGxlIG9mIGEgZGlmZmVyZW50IHJ1bi4KKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiSWdu
b3Jpbmcgc3RhbGUgc3RhdHVzIGZpbGUgZm9yICN7aW5kZXh9IChJRCAje3J1bklkfSBidXQgY3Vy
cmVudCBJRCBpcyAjeyRydW5VbmlxdWVJZH0pIikKKyAgICAgICAgICAgIHJldHVybgogICAgICAg
ICBlbmQKLSAgICAgICAgJHN0ZGVyci5wdXRzKCJEdXBsaWNhdGUgc3RhdGUgZmlsZSBmb3IgI3tp
bmRleH06ICN7bWFwW2luZGV4XX0iKQorICAgIGVuZAorICAgIGlmIG1hcC5oYXNfa2V5PyhpbmRl
eCkKKyAgICAgICAgbWFwW2luZGV4XS5wdXNoKHJlc3VsdCkKICAgICBlbHNlCi0gICAgICAgIG1h
cFtpbmRleF0gPSByZXN1bHQKKyAgICAgICAgbWFwW2luZGV4XSA9IFtyZXN1bHRdCiAgICAgZW5k
CiBlbmQKIApAQCAtMjM3Miw1OCArMjQ1MCwyMyBAQCBkZWYgZ2V0U3RhdHVzTWFwKG1hcD17fSkK
ICAgICBtYXAKIGVuZAogCi1kZWYgZ2V0Q29tcGxldGVkVGVzdHNGcm9tU3RhdHVzTWFwKHN0YXR1
c01hcCkKLSAgICBjb21wbGV0ZWRUZXN0cyA9IHt9Ci0gICAgJHJ1bmxpc3QuZWFjaF93aXRoX2lu
ZGV4IHsKLSAgICAgICAgfCBwbGFuLCBpbmRleCB8Ci0gICAgICAgIGlmIHN0YXR1c01hcC5oYXNf
a2V5PyhpbmRleCkKLSAgICAgICAgICAgIGNvbXBsZXRlZFRlc3RzW3BsYW5dID0gbmlsCi0gICAg
ICAgIGVuZAotICAgIH0KLSAgICBjb21wbGV0ZWRUZXN0cwotZW5kCi0KIGRlZiBkZXRlY3RGYWls
dXJlcyhzdGF0dXNNYXA9e30pCiAgICAgcmFpc2UgaWYgJGJ1bmRsZQotICAgIG5vcmVzdWx0ID0g
MAogICAgIGlmIHN0YXR1c01hcC5zaXplID09IDAKICAgICAgICAgc3RhdHVzTWFwID0gZ2V0U3Rh
dHVzTWFwCiAgICAgZW5kCi0gICAgZmFtaWx5TWFwID0ge30KIAotICAgICRydW5saXN0LmVhY2hf
d2l0aF9pbmRleCB7Ci0gICAgICAgIHwgcGxhbiwgaW5kZXggfAotICAgICAgICB1bmxlc3MgZmFt
aWx5TWFwW3BsYW4uZmFtaWx5XQotICAgICAgICAgICAgZmFtaWx5TWFwW3BsYW4uZmFtaWx5XSA9
IFtdCi0gICAgICAgIGVuZAotICAgICAgICBpZiBub3Qgc3RhdHVzTWFwLmhhc19rZXk/KGluZGV4
KQotICAgICAgICAgICAgYXBwZW5kTm9SZXN1bHQocGxhbikKLSAgICAgICAgICAgIG5vcmVzdWx0
ICs9IDEKLSAgICAgICAgICAgIG5leHQKLSAgICAgICAgZW5kCi0gICAgICAgIHJlc3VsdCA9IG5p
bAotICAgICAgICAjIElmIGFueSBvZiB0aGUgcmVzdWx0cyB3ZSBnb3Qgd2FzIGEgcGFzcywgY29u
c2lkZXIgdGhlIHRlc3QKLSAgICAgICAgIyBzdWNjZXNzZnVsLiBUaGUgYXNzdW1wdGlvbiBoZXJl
IGlzIHRoYXQgZmFpbHVyZXMgYXJlIGJlY2F1c2UKLSAgICAgICAgIyBvZiBpbmZyYXN0cnVjdHVy
ZSBpc3N1ZXMgKHdoaWNoIGlzIHdoeSB0aGUgdGVzdCB3YXMgcnVuCi0gICAgICAgICMgbXVsdGlw
bGUgdGltZXMgaW4gdGhlIGZpcnN0IHBsYWNlKS4KLSAgICAgICAgdGVzdFdhc1N1Y2Nlc3NmdWwg
PSBzdGF0dXNNYXBbaW5kZXhdLmluY2x1ZGU/KFNUQVRVU19GSUxFX1BBU1MpCi0gICAgICAgIGlm
IHRlc3RXYXNTdWNjZXNzZnVsCi0gICAgICAgICAgICBhcHBlbmRQYXNzKHBsYW4pCi0gICAgICAg
ICAgICByZXN1bHQgPSAiUEFTUyIKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kRmFp
bHVyZShwbGFuKQotICAgICAgICAgICAgcmVzdWx0ID0gIkZBSUwiCi0gICAgICAgIGVuZAotICAg
ICAgICBhcHBlbmRSZXN1bHQocGxhbiwgdGVzdFdhc1N1Y2Nlc3NmdWwpCi0gICAgICAgIGZhbWls
eU1hcFtwbGFuLmZhbWlseV0gPDwgeyA6cmVzdWx0ID0+IHJlc3VsdCwgOnBsYW4gPT4gcGxhbiB9
Ci0gICAgfQorICAgIGV2YWx1YXRvciA9IFRlc3RSZXN1bHRFdmFsdWF0b3JGaW5hbC5uZXcoJHJ1
bmxpc3QsIHN0YXR1c01hcCkKKyAgICBldmFsdWF0b3IudmlzaXQhCiAKLSAgICBpZiBub3Jlc3Vs
dCA+IDAKLSAgICAgICAgJHN0ZGVyci5wdXRzKCJDb3VsZCBub3QgZ2V0IHRoZSBleGl0IHN0YXR1
cyBmb3IgI3tub3Jlc3VsdH0gdGVzdHMiKQorICAgIGlmIGV2YWx1YXRvci5ub3Jlc3VsdCA+IDAK
KyAgICAgICAgJHN0ZGVyci5wdXRzKCJDb3VsZCBub3QgZ2V0IHRoZSBleGl0IHN0YXR1cyBmb3Ig
I3tldmFsdWF0b3Iubm9yZXN1bHR9IHRlc3RzIikKICAgICAgICAgIyBXZSBjYW4ndCBjaGFuZ2Ug
b3VyIGV4aXQgY29kZSwgYXMgcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCiAgICAgICAgICMgZXhw
ZWN0cyAwIGV2ZW4gd2hlbiB0aGVyZSBhcmUgZmFpbHVyZXMuCiAgICAgZW5kCiAKKyAgICBmYW1p
bHlNYXAgPSBldmFsdWF0b3IuZmFtaWx5TWFwCisKICAgICBGaWxlLm9wZW4oJG91dHB1dERpciAr
ICJyZXN1bHRzQnlGYW1pbHkiLCAidyIpIHsKICAgICAgICAgfCBvdXRwIHwKICAgICAgICAgZmly
c3QgPSB0cnVlCkBAIC0yNDczLDYgKzI1MTYsNyBAQCBlbmQKIGNsZWFuKCRvdXRwdXREaXIgKyAi
ZmFpbGVkIikKIGNsZWFuKCRvdXRwdXREaXIgKyAicGFzc2VkIikKIGNsZWFuKCRvdXRwdXREaXIg
KyAibm9yZXN1bHQiKQorY2xlYW4oJG91dHB1dERpciArICJmbGFreSIpCiBjbGVhbigkb3V0cHV0
RGlyICsgInJlc3VsdHMiKQogY2xlYW4oJG91dHB1dERpciArICJyZXN1bHRzQnlGYW1pbHkiKQog
Y2xlYW4oJG91dHB1dERpciArICIudm0iKQpAQCAtMjUxNSwyNyArMjU1OSwxNyBAQCBFTlZbIlRa
Il0gPSAiVVMvUGFjaWZpYyI7CiBkZWYgcnVuQnVuZGxlCiAgICAgcmFpc2UgdW5sZXNzICRidW5k
bGUKIAotICAgIGNsZWFuUnVubmVyRGlyZWN0b3J5Ci0gICAgY2xlYW5PbGRSZXN1bHRzCi0gICAg
cnVuVGVzdFJ1bm5lcgotICAgIGNsZWFuRW1wdHlSZXN1bHRGaWxlcwotZW5kCi0KLWRlZiBydW5O
b3JtYWwKLSAgICByYWlzZSBpZiAkYnVuZGxlIG9yICR0YXJiYWxsCi0KLSAgICBwcmVwYXJlQnVu
ZGxlCi0gICAgcHJlcGFyZVRlc3RSdW5uZXIKLSAgICBydW5UZXN0UnVubmVyCi0gICAgY2xlYW5F
bXB0eVJlc3VsdEZpbGVzCi0gICAgZGV0ZWN0RmFpbHVyZXMKKyAgICB0ZXN0UnVubmVyID0gVGVz
dFJ1bm5lci5jcmVhdGUoJHRlc3RSdW5uZXJUeXBlLCAkcnVubmVyRGlyKQorICAgIGV2YWx1YXRv
ciA9IEJ1bmRsZVRlc3RzRXhlY3V0b3IubmV3KCRydW5saXN0LCAkc2VyaWFsUGxhbnMsIElURVJB
VElPTl9MSU1JVFMsICR0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0UnVubmVyKQorICAgIGV2YWx1
YXRvci5sb29wCiBlbmQKIAogZGVmIHJ1blRhcmJhbGwKICAgICByYWlzZSB1bmxlc3MgJHRhcmJh
bGwKIAotICAgIHByZXBhcmVCdW5kbGUgCi0gICAgcHJlcGFyZVRlc3RSdW5uZXIKKyAgICBwcmVw
YXJlQnVuZGxlCisgICAgdGVzdFJ1bm5lciA9IFRlc3RSdW5uZXIuY3JlYXRlKCR0ZXN0UnVubmVy
VHlwZSwgJHJ1bm5lckRpcikKKyAgICB0ZXN0UnVubmVyLnByZXBhcmUoJHJ1bmxpc3QsICRzZXJp
YWxQbGFucywgU2V0Lm5ldywgbmlsKQogICAgIGNvbXByZXNzQnVuZGxlCiBlbmQKIApAQCAtMjU2
OSw0NCArMjYwMywyOCBAQCBkZWYgZm9yRWFjaFJlbW90ZShyZW1vdGVIb3N0cywgb3B0aW9ucz17
fSwgJmJsaykKICAgICBsaXZlUmVtb3RlcwogZW5kCiAKLWRlZiBydW5SZW1vdGUKLSAgICByYWlz
ZSB1bmxlc3MgJHJlbW90ZQotCi0gICAgcHJlcGFyZUJ1bmRsZQotICAgICRyZW1vdGVIb3N0cy5l
YWNoX2luZGV4IHsKLSAgICAgICAgfCBpbmRleCB8Ci0gICAgICAgIHByZXBhcmVUZXN0UnVubmVy
KGluZGV4KQotICAgIH0KLSAgICBjb21wcmVzc0J1bmRsZQotICAgIGZvckVhY2hSZW1vdGUoJHJl
bW90ZUhvc3RzKSB7Ci0gICAgICAgIHwgaW5kZXggfAotICAgICAgICBydW5UZXN0UnVubmVyKGlu
ZGV4KQotICAgIH0KLSAgICBkZXRlY3RGYWlsdXJlcwotZW5kCi0KLWRlZiBwcmVwYXJlR251UGFy
YWxsZWxSdW5uZXJKb2JzKG5hbWUsIHJ1bmxpc3QsIGV4Y2x1ZGUpCi0gICAgcGF0aCA9ICRydW5u
ZXJEaXIgKyBuYW1lCi0gICAgRmlsZVV0aWxzLm1rZGlyX3AoJHJ1bm5lckRpcikKK2NsYXNzIFRl
c3RSdW5uZXJHbnVQYXJhbGxlbCA8IFRlc3RSdW5uZXIKKyAgICBkZWYgcHJlcGFyZUdudVBhcmFs
bGVsUnVubmVySm9icyhuYW1lLCBydW5saXN0LCBjb21wbGV0ZWRQbGFucykKKyAgICAgICAgcGF0
aCA9IEBydW5uZXJEaXIgKyBuYW1lCisgICAgICAgIEZpbGVVdGlscy5ta2Rpcl9wKEBydW5uZXJE
aXIpCiAKLSAgICBGaWxlLm9wZW4ocGF0aCwgInciKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAg
ICAgIHJ1bmxpc3QuZWFjaCB7Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgaWYg
ZXhjbHVkZS5oYXNfa2V5PyhwbGFuKQotICAgICAgICAgICAgICAgIG5leHQKLSAgICAgICAgICAg
IGVuZAotICAgICAgICAgICAgb3V0cC5wdXRzKCIuL3Rlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0i
KQorICAgICAgICBGaWxlLm9wZW4ocGF0aCwgInciKSB7CisgICAgICAgICAgICB8IG91dHAgfAor
ICAgICAgICAgICAgcnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAgICAgICB8IHBsYW4gfAorICAg
ICAgICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAg
ICAgICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBvdXRw
LnB1dHMoIi4vdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICB9CisgICAgZW5kCisgICAgZGVmIHByZXBhcmVSdW5uZXIocnVubGlzdCwgc2Vy
aWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykKKyAgICAgICAgcHJlcGFyZUdu
dVBhcmFsbGVsUnVubmVySm9icygicGFyYWxsZWwtdGVzdHMiLCBydW5saXN0LCBjb21wbGV0ZWRQ
bGFucyB8IHNlcmlhbFBsYW5zKQorICAgICAgICBwcmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2Jz
KCJzZXJpYWwtdGVzdHMiLCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMpCisgICAgZW5kCiBl
bmQKIAotZGVmIHByZXBhcmVHbnVQYXJhbGxlbFRlc3RSdW5uZXIoZXhjbHVkZT17fSkKLSAgICBz
ZXJpYWxUZXN0cyA9IHt9Ci0gICAgJHNlcmlhbFJ1bmxpc3QuZWFjaCB7IHxwfCBzZXJpYWxUZXN0
c1twXSA9IG5pbCB9Ci0gICAgcHJlcGFyZUdudVBhcmFsbGVsUnVubmVySm9icygicGFyYWxsZWwt
dGVzdHMiLCAkcnVubGlzdCwgZXhjbHVkZS5tZXJnZShzZXJpYWxUZXN0cykpCi0gICAgcHJlcGFy
ZUdudVBhcmFsbGVsUnVubmVySm9icygic2VyaWFsLXRlc3RzIiwgJHNlcmlhbFJ1bmxpc3QsIGV4
Y2x1ZGUpCi1lbmQKIAogZGVmIHdpdGhHbnVQYXJhbGxlbFNzaFdyYXBwZXIoJmJsaykKICAgICBU
ZW1wZmlsZS5vcGVuKCdzc2gtd3JhcHBlcicsICRydW5uZXJEaXIpIHsKQEAgLTI3MjQsMjggKzI3
NDIsMTA0IEBAIGRlZiBydW5HbnVQYXJhbGxlbFJ1bm5lcihyZW1vdGVIb3N0cywgaW5wdXRzLCBv
cHRpb25zPXt9KQogICAgIH0KIGVuZAogCi1kZWYgcnVuR251UGFyYWxsZWwKLSAgICByYWlzZSB1
bmxlc3MgJHJlbW90ZQotICAgIHByZXBhcmVCdW5kbGUKLSAgICBwcmVwYXJlVGVzdFJ1bm5lcgot
ICAgIGNvbXByZXNzQnVuZGxlCi0gICAgc3RhdHVzTWFwID0ge30KLSAgICAjIFRoaXMgaXMgYSBo
aWdoLWxldmVsIHJldHJ5IGxvb3AuIElmIGEgcmVtb3RlIGhvc3QgZ29lcyBhd2F5IGluCi0gICAg
IyB0aGUgbWlkZGxlIG9mIGEgcnVuIGFuZCBlaXRoZXIgZG9lc24ndCBjb21lIGJhY2sgb25saW5l
IG9yIGNvbWVzCi0gICAgIyBiYWNrIGhhdmluZyByZW1vdmVkIHRoZSByZW1vdGUgZGlyZWN0b3J5
ICgqKSwgZ2V0U3RhdHVzTWFwIHdpbGwgYmUKLSAgICAjIG1pc3NpbmcgcmVzdWx0cyBmb3IgdGhl
c2UgdGVzdHMsIGFsbG93aW5nIHVzIHRvIHJldHJ5IHRoZW0gaW4KLSAgICAjIHRoZSBuZXh0IGl0
ZXJhdGlvbi4KLSAgICAjCi0gICAgIyAoKikgVGhpcyBtYXkgd2VsbCBoYXBwZW4gd2hlbiBydW5u
aW5nIHRoZSB0ZXN0cyBvbiBlbWJlZGRlZAotICAgICMgYm9hcmRzIHRoYXQgcmVndWxhcmx5IGNv
cnJ1cHQgdGhlaXIgU0QgY2FyZC4gRGVmaW5pdGVseSBhbiBpc3N1ZQotICAgICMgZm9yIHRoZSBj
aTIwIGJvYXJkcyB1c2VkIHRvIHRlc3QgTUlQUy4KLSAgICAjCi0gICAgIyBUaGUgbnVtYmVyIG9m
IHRyaWVzIHNjYWxlcyB3aXRoIHRoZSBudW1iZXIgb2YgcmVtb3RlcyBpbiB1c2UsCi0gICAgIyB3
aXRoIGEgcmVhc29uYWJsZSBmbG9vci4KLSAgICB0cmllcyA9IFszLCAkcmVtb3RlSG9zdHMuc2l6
ZSAvIDJdLm1heAotICAgIHRyaWVzLnRpbWVzIHsKLSAgICAgICAgfCBpdGVyYXRpb24gfAotICAg
ICAgICByZW1vdGVIb3N0cyA9ICRyZW1vdGVIb3N0cworIyBVbmNvbmRpdGlvbmFsbHkgcnVuIHRo
ZSBzZWxmdGVzdHMgb24gZXZlcnkgZXhlY3V0aW9uLCB0aGV5J3JlIHByZXR0eSBjaGVhcC4KK0V4
ZWN1dG9yU2VsZlRlc3RzLnJ1bgorVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5ydW4KKwor
Y2xhc3MgTm9uUmVtb3RlVGVzdHNFeGVjdXRvciA8IEJhc2VUZXN0c0V4ZWN1dG9yCisgICAgZGVm
IGluaXRpYWxpemUocnVubGlzdCwgc2VyaWFsUGxhbnMsIG1heEl0ZXJhdGlvbnNCb3VuZHMsIHRy
ZWF0RmFpbGluZ0FzRmxha3ksIHRlc3RSdW5uZXIpCisgICAgICAgIHN1cGVyKHJ1bmxpc3QsIHNl
cmlhbFBsYW5zLAorICAgICAgICAgICAgICBuaWwsCisgICAgICAgICAgICAgIG1heEl0ZXJhdGlv
bnNCb3VuZHMsCisgICAgICAgICAgICAgIHRyZWF0RmFpbGluZ0FzRmxha3kKKyAgICAgICAgICAg
ICApCisgICAgICAgIEB0ZXN0UnVubmVyID0gdGVzdFJ1bm5lcgorICAgIGVuZAorICAgIGRlZiBw
cmVwYXJlRXhlY3V0aW9uKHJlbW90ZUhvc3RzKQorICAgICAgICByZW1vdGVIb3N0cworICAgIGVu
ZAorICAgIGRlZiByZWZyZXNoRXhlY3V0aW9uKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0
ZWRUZXN0cykKKyAgICAgICAgaWYgbm90IEByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgICAgICBy
YWlzZSAicmVtb3RlSG9zdHMgI3tAcmVtb3RlSG9zdHN9LCBleHBlY3RlZCBuaWwiCisgICAgICAg
IGVuZAorICAgICAgICBAdGVzdFJ1bm5lci5wcmVwYXJlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBj
b21wbGV0ZWRUZXN0cywgQHJlbW90ZUhvc3RzKQorICAgIGVuZAorZW5kCisKK2NsYXNzIE5vcm1h
bFRlc3RzRXhlY3V0b3IgPCBOb25SZW1vdGVUZXN0c0V4ZWN1dG9yCisgICAgZGVmIHByZXBhcmVB
cnRpZmFjdHMocmVtb3RlSG9zdHMpCisgICAgICAgIHJhaXNlICJyZW1vdGVIb3N0cyBub3Qgbmls
IiB1bmxlc3MgcmVtb3RlSG9zdHMubmlsPworICAgICAgICBwcmVwYXJlQnVuZGxlCisgICAgICAg
IEB0ZXN0UnVubmVyLnByZXBhcmUoQHJ1bmxpc3QsIEBzZXJpYWxQbGFucywgU2V0Lm5ldywgbmls
KQorICAgIGVuZAorICAgIGRlZiBleGVjdXRlVGVzdHMocmVtb3RlSG9zdHMpCisgICAgICAgIHJ1
blRlc3RSdW5uZXIoQHRlc3RSdW5uZXIsIG5pbCwgbmlsKQorICAgICAgICBjbGVhbkVtcHR5UmVz
dWx0RmlsZXMKKyAgICBlbmQKKyAgICBkZWYgdXBkYXRlU3RhdHVzTWFwKGl0ZXJhdGlvbiwgc3Rh
dHVzTWFwKQorICAgICAgICByZXR1cm4gZ2V0U3RhdHVzTWFwKHN0YXR1c01hcCkKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBCdW5kbGVUZXN0c0V4ZWN1dG9yIDwgTm9uUmVtb3RlVGVzdHNFeGVjdXRv
cgorICAgIGRlZiBwcmVwYXJlQXJ0aWZhY3RzKHJlbW90ZUhvc3RzKQorICAgICAgICByYWlzZSAi
cmVtb3RlSG9zdHMgbm90IG5pbCIgdW5sZXNzIHJlbW90ZUhvc3RzLm5pbD8KKyAgICAgICAgY2xl
YW5SdW5uZXJEaXJlY3RvcnkKKyAgICAgICAgY2xlYW5PbGRSZXN1bHRzCisgICAgZW5kCisgICAg
ZGVmIGV4ZWN1dGVUZXN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAgcnVuVGVzdFJ1bm5lcihAdGVz
dFJ1bm5lciwgbmlsLCBuaWwpCisgICAgICAgIGNsZWFuRW1wdHlSZXN1bHRGaWxlcworICAgIGVu
ZAorICAgIGRlZiB1cGRhdGVTdGF0dXNNYXAoaXRlcmF0aW9uLCBzdGF0dXNNYXApCisgICAgICAg
IHJldHVybiBnZXRTdGF0dXNNYXAoc3RhdHVzTWFwKQorICAgIGVuZAorZW5kCisKK2NsYXNzIEJh
c2VSZW1vdGVUZXN0c0V4ZWN1dG9yIDwgQmFzZVRlc3RzRXhlY3V0b3IKKyAgICBkZWYgaW5pdGlh
bGl6ZShydW5saXN0LCBzZXJpYWxQbGFucywgcmVtb3RlSG9zdHMsIGl0ZXJhdGlvbkxpbWl0cywK
KyAgICAgICAgICAgICAgICAgICB0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0UnVubmVyKQorICAg
ICAgICBzdXBlcihydW5saXN0LCBzZXJpYWxQbGFucywgcmVtb3RlSG9zdHMsIGl0ZXJhdGlvbkxp
bWl0cywgdHJlYXRGYWlsaW5nQXNGbGFreSkKKyAgICAgICAgQHRlc3RSdW5uZXIgPSB0ZXN0UnVu
bmVyCisgICAgZW5kCisgICAgZGVmIHVwZGF0ZVN0YXR1c01hcChpdGVyYXRpb24sIHN0YXR1c01h
cCkKKyAgICAgICAgcmV0dXJuIGdldFN0YXR1c01hcChzdGF0dXNNYXApCisgICAgZW5kCisgICAg
ZGVmIHJlZnJlc2hFeGVjdXRpb24ocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRlc3Rz
KQorICAgICAgICAjIE5vdGUsIHdoZW4gcnVubmluZyB0ZXN0cyByZW1vdGVseSwgd2UgYWx3YXlz
IHByZXBhcmUgdGVzdHMKKyAgICAgICAgIyBmb3IgYWxsIHRoZSBob3N0cyB3aGVuIHJlZnJlc2hp
bmcgZXhlY3V0aW9uLCBhcyBldmVuIGhvc3RzCisgICAgICAgICMgdGhhdCB3ZW50IGF3YXkgZHVy
aW5nIHRlc3RpbmcgbWF5IGhhdmUgY29tZSBiYWNrIG9ubGluZSBpbgorICAgICAgICAjIHRoZSBt
ZWFudGltZSAtLSBzbyB3ZSBkb24ndCBleHBlY3QgYSBsaXN0IG9mIGxpdmUgcmVtb3RlCisgICAg
ICAgICMgaG9zdHMgdG8gYmUgcGFzc2VkIGluLgorICAgICAgICBAdGVzdFJ1bm5lci5wcmVwYXJl
KHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRUZXN0cywgQHJlbW90ZUhvc3RzKQorICAg
IGVuZAorZW5kCisKK2NsYXNzIFJlbW90ZVRlc3RzRXhlY3V0b3IgPCBCYXNlUmVtb3RlVGVzdHNF
eGVjdXRvcgorICAgIGRlZiBwcmVwYXJlQXJ0aWZhY3RzKHJlbW90ZUhvc3RzKQorICAgICAgICBy
YWlzZSAicmVtb3RlSG9zdHMgbmlsIiBpZiByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgIHByZXBh
cmVCdW5kbGUKKyAgICAgICAgQHRlc3RSdW5uZXIucHJlcGFyZShAcnVubGlzdCwgQHNlcmlhbFBs
YW5zLCBTZXQubmV3LCByZW1vdGVIb3N0cykKKyAgICAgICAgY29tcHJlc3NCdW5kbGUKKyAgICBl
bmQKKyAgICBkZWYgcHJlcGFyZUV4ZWN1dGlvbihyZW1vdGVIb3N0cykKKyAgICAgICAgcmVtb3Rl
SG9zdHMKKyAgICBlbmQKKyAgICBkZWYgZXhlY3V0ZVRlc3RzKHJlbW90ZUhvc3RzKQorICAgICAg
ICBmb3JFYWNoUmVtb3RlKHJlbW90ZUhvc3RzKSB7CisgICAgICAgICAgICB8IGluZGV4IHwKKyAg
ICAgICAgICAgIHJ1blRlc3RSdW5uZXIoQHRlc3RSdW5uZXIsIHJlbW90ZUhvc3RzLCBpbmRleCkK
KyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIEdudVBhcmFsbGVsVGVzdHNFeGVjdXRv
ciA8IEJhc2VSZW1vdGVUZXN0c0V4ZWN1dG9yCisgICAgZGVmIHByZXBhcmVBcnRpZmFjdHMocmVt
b3RlSG9zdHMpCisgICAgICAgIHByZXBhcmVCdW5kbGUKKyAgICAgICAgQHRlc3RSdW5uZXIucHJl
cGFyZShAcnVubGlzdCwgQHNlcmlhbFBsYW5zLCBTZXQubmV3LCByZW1vdGVIb3N0cykKKyAgICAg
ICAgY29tcHJlc3NCdW5kbGUKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZUV4ZWN1dGlvbihyZW1v
dGVIb3N0cykKICAgICAgICAgIyBJZiB0aGUgcHJlcGFyYXRvcnkgc3RlcHMgZmFpbCwgZHJvcCB0
aGUgcmVtb3RlIGhvc3QgZnJvbSBvdXIKICAgICAgICAgIyBsaXN0LiBPdGhlcndpc2UsIGlmIGl0
IGNvbWVzIGJhY2sgb25saW5lIGluIHRoZSBtaWRkbGUgb2YgYW4KICAgICAgICAgIyBpdGVyYXRp
b24sIHdlJ2xsIHRyeSB0byBydW4gdGVzdCBqb2JzIG9uIGl0LCBwb3NzaWJseSB1c2luZwpAQCAt
Mjc1NSwzMCArMjg0OSw0MyBAQCBkZWYgcnVuR251UGFyYWxsZWwKICAgICAgICAgICAgIGdldFJl
bW90ZURpcmVjdG9yeUlmTmVlZGVkKHJlbW90ZUhvc3QpCiAgICAgICAgICAgICBjb3B5QnVuZGxl
VG9SZW1vdGUocmVtb3RlSG9zdCkKICAgICAgICAgfQotICAgICAgICByZW1vdGVIb3N0cyA9IHVu
cGFja0J1bmRsZUdudVBhcmFsbGVsKHJlbW90ZUhvc3RzKQotICAgICAgICBpZiByZW1vdGVIb3N0
cy5zaXplID09IDAKLSAgICAgICAgICAgICMgRWl0aGVyIGV2ZXJ5dGhpbmcgaXMgZG93biwgb3Ig
ZXZlcnl0aGluZyBnb3QKLSAgICAgICAgICAgICMgcmVib290ZWQuIEluIHRoZSBsYXR0ZXIgY2Fz
ZSwgYWxsb3cgZW5vdWdoIHRpbWUgZm9yIHRoZQotICAgICAgICAgICAgIyByZW1vdGUgYm9hcmRz
IHRvIGJvb3QgdXAsIHRoZW4gcmV0cnkuCi0gICAgICAgICAgICB3YWl0SW50ZXJ2YWwgPSA2MAot
ICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJBbGwgcmVtb3RlIGhvc3RzIGZhaWxlZCwgcmV0cnlp
bmcgYWZ0ZXIgI3t3YWl0SW50ZXJ2YWx9cyIpCi0gICAgICAgICAgICBzbGVlcCh3YWl0SW50ZXJ2
YWwpCi0gICAgICAgICAgICBuZXh0Ci0gICAgICAgIGVuZAotCisgICAgICAgIHJldHVybiB1bnBh
Y2tCdW5kbGVHbnVQYXJhbGxlbChyZW1vdGVIb3N0cykKKyAgICBlbmQKKyAgICBkZWYgZXhlY3V0
ZVRlc3RzKHJlbW90ZUhvc3RzKQogICAgICAgICBydW5HbnVQYXJhbGxlbFJ1bm5lcihyZW1vdGVI
b3N0cywgJHJ1bm5lckRpciArICJzZXJpYWwtdGVzdHMiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7IDpwYXJhbGxlbEpvYnNPbkVhY2hIb3N0ID0+IDF9KQogICAgICAgICBydW5HbnVQ
YXJhbGxlbFJ1bm5lcihyZW1vdGVIb3N0cywgJHJ1bm5lckRpciArICJwYXJhbGxlbC10ZXN0cyIp
Ci0gICAgICAgIHN0YXR1c01hcCA9IGdldFN0YXR1c01hcChzdGF0dXNNYXApCi0gICAgICAgIGNv
bXBsZXRlZFRlc3RzID0gZ2V0Q29tcGxldGVkVGVzdHNGcm9tU3RhdHVzTWFwKHN0YXR1c01hcCkK
LSAgICAgICAgYnJlYWsgdW5sZXNzIGNvbXBsZXRlZFRlc3RzLnNpemUgIT0gJHJ1bmxpc3Quc2l6
ZQotICAgICAgICBpZiBjb21wbGV0ZWRUZXN0cy5zaXplID4gJHJ1bmxpc3Quc2l6ZQotICAgICAg
ICAgICAgcmFpc2UgIlRlc3QgY291bnQgbWlzbWF0Y2g6ICN7Y29tcGxldGVkVGVzdHMuc2l6ZX0g
PiAjeyRydW5saXN0LnNpemV9IgotICAgICAgICBlbmQKLSAgICAgICAgIyBSZWdlbmVyYXRlIHRo
ZSBsaXN0cyBvZiB0ZXN0cyB0byBydW4KLSAgICAgICAgcHJlcGFyZUdudVBhcmFsbGVsVGVzdFJ1
bm5lcihjb21wbGV0ZWRUZXN0cykKLSAgICAgICAgJHN0ZGVyci5wdXRzKCJBZnRlciB0cnkgI3tp
dGVyYXRpb24gKyAxfS8je3RyaWVzfTogZ290IHJlc3VsdHMgZm9yICN7Y29tcGxldGVkVGVzdHMu
c2l6ZX0vI3skcnVubGlzdC5zaXplfSB0ZXN0cywgI3tyZW1vdGVIb3N0cy5zaXplfS8jeyRyZW1v
dGVIb3N0cy5zaXplfSBob3N0cyBsaXZlIikKLSAgICB9CisgICAgZW5kCitlbmQKKworZGVmIHJ1
bk5vcm1hbAorICAgIHJhaXNlIGlmICRidW5kbGUgb3IgJHRhcmJhbGwKKworICAgIHRlc3RSdW5u
ZXIgPSBUZXN0UnVubmVyLmNyZWF0ZSgkdGVzdFJ1bm5lclR5cGUsICRydW5uZXJEaXIpCisgICAg
ZXZhbHVhdG9yID0gTm9ybWFsVGVzdHNFeGVjdXRvci5uZXcoJHJ1bmxpc3QsICRzZXJpYWxQbGFu
cywgSVRFUkFUSU9OX0xJTUlUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkdHJlYXRGYWlsaW5nQXNGbGFreSwgdGVzdFJ1bm5lcikKKyAgICBzdGF0dXNNYXAgPSBl
dmFsdWF0b3IubG9vcAorICAgIGRldGVjdEZhaWx1cmVzKHN0YXR1c01hcCkKKworZW5kCisKK2Rl
ZiBydW5SZW1vdGUKKyAgICByYWlzZSB1bmxlc3MgJHJlbW90ZQorCisgICAgdGVzdFJ1bm5lciA9
IFRlc3RSdW5uZXIuY3JlYXRlKCR0ZXN0UnVubmVyVHlwZSwgJHJ1bm5lckRpcikKKyAgICBleGVj
dXRvciA9IFJlbW90ZVRlc3RzRXhlY3V0b3IubmV3KCRydW5saXN0LCAkc2VyaWFsUGxhbnMsICRy
ZW1vdGVIb3N0cywgSVRFUkFUSU9OX0xJTUlUUywgJHRyZWF0RmFpbGluZ0FzRmxha3ksIHRlc3RS
dW5uZXIpCisgICAgc3RhdHVzTWFwID0gZXhlY3V0b3IubG9vcAorICAgIGRldGVjdEZhaWx1cmVz
KHN0YXR1c01hcCkKK2VuZAorCitkZWYgcnVuR251UGFyYWxsZWwKKyAgICByYWlzZSAiQ2FuIG9u
bHkgdXNlIC0tZ251LXBhcmFsbGVsLXJ1bm5lciB3aXRoIC0tcmVtb3RlKiIgdW5sZXNzICRyZW1v
dGUKKyAgICByYWlzZSAiQ2FuIG9ubHkgdXNlIC0tZ251LXBhcmFsbGVsLXJ1bm5lciB3aXRoIHRo
ZSBkZWZhdWx0IHdyaXRlciIgdW5sZXNzICR0ZXN0V3JpdGVyID09ICJkZWZhdWx0IgorICAgIHRl
c3RSdW5uZXIgPSBUZXN0UnVubmVyLmNyZWF0ZSgkdGVzdFJ1bm5lclR5cGUsICRydW5uZXJEaXIp
CisgICAgZXhlY3V0b3IgPSBHbnVQYXJhbGxlbFRlc3RzRXhlY3V0b3IubmV3KCRydW5saXN0LCAk
c2VyaWFsUGxhbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRyZW1vdGVIb3N0cywgSVRFUkFUSU9OX0xJTUlUUywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJHRyZWF0RmFpbGluZ0FzRmxha3ksIHRlc3RSdW5uZXIpCisg
ICAgc3RhdHVzTWFwID0gZXhlY3V0b3IubG9vcAogICAgIGRldGVjdEZhaWx1cmVzKHN0YXR1c01h
cCkKIGVuZAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVz
cy10ZXN0LXdyaXRlci1kZWZhdWx0LnJiIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1z
dHJlc3MtdGVzdC13cml0ZXItZGVmYXVsdC5yYgppbmRleCBkNjFiNzFkYTAwZTFmZGFjOWRmOWRk
MjU5ZTBiZTY2MDRjN2I3MTNhLi4zOWYxZGIwNzJmYTAxMGZkNWRkNTE5ZTY0OGYzYmFiN2RhZmUx
YWMxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0
LXdyaXRlci1kZWZhdWx0LnJiCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3Ry
ZXNzLXRlc3Qtd3JpdGVyLWRlZmF1bHQucmIKQEAgLTIyMCwyNSArMjIwLDcgQEAgZGVmIGNoYWty
YVBhc3NGYWlsRXJyb3JIYW5kbGVyCiAgICAgfQogZW5kCiAKLWNsYXNzIFBsYW4KLSAgICBhdHRy
X3JlYWRlciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRzLCA6ZmFtaWx5LCA6bmFtZSwgOm91dHB1dEhh
bmRsZXIsIDplcnJvckhhbmRsZXIsIDphZGRpdGlvbmFsRW52Ci0gICAgYXR0cl9hY2Nlc3NvciA6
aW5kZXgKLSAgICAKLSAgICBkZWYgaW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFt
aWx5LCBuYW1lLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIpCi0gICAgICAgIEBkaXJlY3Rv
cnkgPSBkaXJlY3RvcnkKLSAgICAgICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50cwotICAgICAgICBA
ZmFtaWx5ID0gZmFtaWx5Ci0gICAgICAgIEBuYW1lID0gbmFtZQotICAgICAgICBAb3V0cHV0SGFu
ZGxlciA9IG91dHB1dEhhbmRsZXIKLSAgICAgICAgQGVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxl
cgotICAgICAgICBAaXNTbG93ID0gISEkcnVuQ29tbWFuZE9wdGlvbnNbOmlzU2xvd10KLSAgICAg
ICAgQGNyYXNoT0sgPSAhISRydW5Db21tYW5kT3B0aW9uc1s6Y3Jhc2hPS10KLSAgICAgICAgaWYg
QGNyYXNoT0sKLSAgICAgICAgICAgIEBvdXRwdXRIYW5kbGVyID0gbm9pc3lPdXRwdXRIYW5kbGVy
Ci0gICAgICAgIGVuZAotICAgICAgICBAYWRkaXRpb25hbEVudiA9IFtdCi0gICAgZW5kCi0gICAg
CitjbGFzcyBQbGFuIDwgQmFzZVBsYW4KICAgICBkZWYgc2hlbGxDb21tYW5kCiAgICAgICAgICMg
SXQncyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBpcyBhY3R1YWxseSBydW4g
aW4gYSBzdWJzaGVsbCwgc28gaWYgd2UgY2hhbmdlIGRpcmVjdG9yeQogICAgICAgICAjIGluIHRo
ZSBzdWJzaGVsbCB3aGVuIHdlIHJldHVybiB3ZSB3aWxsIGJlIGluIG91ciBvcmlnaW5hbCBkaXJl
Y3RvcnkuIFRoaXMgaXMgbmljZSBiZWNhdXNlIHdlIGRvbid0CkBAIC0zNDUsMTExICszMjcsMTM3
IEBAIGNsYXNzIFBsYW4KICAgICBlbmQKIGVuZAogCi1kZWYgcHJlcGFyZVNoZWxsVGVzdFJ1bm5l
cgotICAgIEZpbGVVdGlscy5jcCBTQ1JJUFRTX1BBVEggKyAianNjLXN0cmVzcy10ZXN0LWhlbHBl
cnMiICsgInNoZWxsLXJ1bm5lci5zaCIsICRydW5uZXJEaXIgKyAicnVuc2NyaXB0IgorY2xhc3Mg
VGVzdFJ1bm5lclNoZWxsIDwgVGVzdFJ1bm5lcgorICAgIGRlZiBpbml0aWFsaXplKHRlc3RSdW5u
ZXJUeXBlLCBydW5uZXJEaXIpCisgICAgICAgIHN1cGVyKHRlc3RSdW5uZXJUeXBlLCBydW5uZXJE
aXIpCisgICAgICAgIEB0ZXN0TGlzdFBhdGggPSBydW5uZXJEaXIgKyAndGVzdGxpc3QnCisgICAg
ZW5kCisgICAgZGVmIHByZXBhcmVSdW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRl
ZFBsYW5zLCByZW1vdGVIb3N0cykKKyAgICAgICAgRmlsZVV0aWxzLmNwIFNDUklQVFNfUEFUSCAr
ICJqc2Mtc3RyZXNzLXRlc3QtaGVscGVycyIgKyAic2hlbGwtcnVubmVyLnNoIiwgQHJ1bm5lckRp
ciArICJydW5zY3JpcHQiCisgICAgICAgIEZpbGUub3BlbihAdGVzdExpc3RQYXRoLCAidyIpIHsg
fGZ8CisgICAgICAgICAgICBydW5saXN0LmVhY2ggeyB8cGxhbnwKKyAgICAgICAgICAgICAgICBp
ZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBuZXh0
CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgZi5wdXRzKCJ0ZXN0X3Njcmlw
dF8je3BsYW4uaW5kZXh9IikKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIGVuZAorICAg
IGRlZiBjb21tYW5kKHJlbW90ZUluZGV4PTApCisgICAgICAgICJzaCBydW5zY3JpcHQgI3tGaWxl
LmJhc2VuYW1lKEB0ZXN0TGlzdFBhdGgpfSIKKyAgICBlbmQKIGVuZAogCi1kZWYgb3V0cHV0X3Rh
cmdldChvdXRwLCBwbGFuLCBwcmVyZXFzKQotICAgIGluZGV4ID0gcGxhbi5pbmRleAotICAgIHRh
cmdldCA9ICJ0ZXN0X2RvbmVfI3tpbmRleH0iCi0gICAgb3V0cC5wdXRzICIje3RhcmdldH06ICN7
cHJlcmVxcy5qb2luKCIgIil9IgotICAgIG91dHAucHV0cyAiXHRzaCB0ZXN0X3NjcmlwdF8je2lu
ZGV4fSIKLSAgICB0YXJnZXQKLWVuZAorY2xhc3MgVGVzdFJ1bm5lck1ha2UgPCBUZXN0UnVubmVy
CisgICAgZGVmIG91dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgcHJlcmVxcykKKyAgICAgICAgaW5k
ZXggPSBwbGFuLmluZGV4CisgICAgICAgIHRhcmdldCA9ICJ0ZXN0X2RvbmVfI3tpbmRleH0iCisg
ICAgICAgIG91dHAucHV0cyAiI3t0YXJnZXR9OiAje3ByZXJlcXMuam9pbigiICIpfSIKKyAgICAg
ICAgb3V0cC5wdXRzICJcdHNoIHRlc3Rfc2NyaXB0XyN7aW5kZXh9IgorICAgICAgICB0YXJnZXQK
KyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0LCBzZXJpYWxQ
bGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUluZGV4KQorICAgICAgICAjIFRoZSBnb2FscyBv
ZiBvdXIgcGFyYWxsZWwgdGVzdCBydW5uZXIgYXJlIHNjYWxhYmlsaXR5IGFuZCBzaW1wbGljaXR5
LiBUaGUKKyAgICAgICAgIyBzaW1wbGljaXR5IHBhcnQgaXMgcGFydGljdWxhcmx5IGltcG9ydGFu
dC4gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGhhdmUKKyAgICAgICAgIyBhIGZ1bGwtdGltZSBj
b250cmlidXRvciBqdXN0IHBoaWxvc29waGlzaW5nIGFib3V0IHBhcmFsbGVsIHRlc3RpbmcuCisg
ICAgICAgICMKKyAgICAgICAgIyBBcyBzdWNoLCB3ZSBqdXN0IHBhc3Mgb2ZmIGFsbCBvZiB0aGUg
aGFyZCB3b3JrIHRvICdtYWtlJy4gVGhpcworICAgICAgICAjIGNyZWF0ZXMgYSBkdW1teSBkaXJl
Y3RvcnkgKCIkb3V0cHV0RGlyLy5ydW5uZXIiKSBpbiB3aGljaCB3ZQorICAgICAgICAjIGNyZWF0
ZSBhIGR1bW15IE1ha2VmaWxlLiBUaGUgTWFrZWZpbGUgaGFzIGEgJ3BhcmFsbGVsJyBydWxlIHRo
YXQKKyAgICAgICAgIyBkZXBlbmRzIGFsbCB0ZXN0cywgb3RoZXIgdGhhbiB0aGUgb25lcyBtYXJr
ZWQgJ3NlcmlhbCcuIFRoZQorICAgICAgICAjIHNlcmlhbCB0ZXN0cyBhcmUgYXJyYW5nZWQgaW4g
YSBjaGFpbjsgdGhlIGxhc3QgdGFyZ2V0IGluIHRoZQorICAgICAgICAjIHNlcmlhbCBjaGFpbiBk
ZXBlbmRzIG9uICdwYXJhbGxlbCcgYW5kICdhbGwnIGRlcGVuZHMgb24gdGhlIGhlYWQKKyAgICAg
ICAgIyBvZiB0aGUgY2hhaW4uIFJ1bm5pbmcgJ21ha2UgLWogPHdoYXRldmVyPicgb24gdGhpcyBN
YWtlZmlsZQorICAgICAgICAjIHJlc3VsdHMgaW4gJ21ha2UnIGRvaW5nIGFsbCBvZiB0aGUgaGFy
ZCB3b3JrOgorICAgICAgICAjCisgICAgICAgICMgLSBMb2FkIGJhbGFuY2luZyBqdXN0IHdvcmtz
LiBNb3N0IHN5c3RlbXMgaGF2ZSBhIGdyZWF0IGxvYWQgYmFsYW5jZXIgaW4KKyAgICAgICAgIyAg
ICdtYWtlJy4gSWYgeW91ciBzeXN0ZW0gZG9lc24ndCB0aGVuIGp1c3QgaW5zdGFsbCBhIHJlYWwg
J21ha2UnLgorICAgICAgICAjCisgICAgICAgICMgLSBJbnRlcnJ1cHRpb25zIGp1c3Qgd29yay4g
Rm9yIGV4YW1wbGUgQ3RybC1DIGhhbmRsaW5nIGluICdtYWtlJyBpcworICAgICAgICAjICAgZXhh
Y3RseSByaWdodC4gWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgem9tYmllIHByb2Nlc3Nl
cy4KKyAgICAgICAgIworICAgICAgICAjIFdlIHRoZW4gZG8gc29tZSB0cmlja3MgdG8gbWFrZSBm
YWlsdXJlIGRldGVjdGlvbiB3b3JrIGFuZCB0byBtYWtlIHRoaXMKKyAgICAgICAgIyB0b3RhbGx5
IHNvdW5kLiBJZiBhIHRlc3QgZmFpbHMsIHdlIGRvbid0IHdhbnQgdGhlIHdob2xlICdtYWtlJyBq
b2IgdG8KKyAgICAgICAgIyBzdG9wLiBXZSBhbHNvIGRvbid0IGhhdmUgYW55IGZhY2lsaXR5IGZv
ciBtYWtlZmlsZS1lc2NhcGluZyBvZiBwYXRoIG5hbWVzLgorICAgICAgICAjIFdlIGRvIGhhdmUg
c3VjaCBhIHRoaW5nIGZvciBzaGVsbC1lc2NhcGluZywgdGhvdWdoLiBXZSBmaXggYm90aCBwcm9i
bGVtcworICAgICAgICAjIGJ5IGhhdmluZyB0aGUgYWN0dWFsIHdvcmsgZm9yIGVhY2ggb2YgdGhl
IHRlc3QgcnVsZXMgYmUgZG9uZSBpbiBhIHNoZWxsCisgICAgICAgICMgc2NyaXB0IG9uIHRoZSBz
aWRlLiBUaGVyZSBpcyBvbmUgc3VjaCBzY3JpcHQgcGVyIHRlc3QuIFRoZSBzY3JpcHQgcmVzcG9u
ZHMKKyAgICAgICAgIyB0byBmYWlsdXJlIGJ5IHByaW50aW5nIHNvbWV0aGluZyBvbiB0aGUgY29u
c29sZSBhbmQgdGhlbiB0b3VjaGluZyBhCisgICAgICAgICMgZmFpbHVyZSBmaWxlIGZvciB0aGF0
IHRlc3QsIGJ1dCB0aGVuIHN0aWxsIHJldHVybnMgMC4gVGhpcyBtYWtlcyAnbWFrZScKKyAgICAg
ICAgIyBjb250aW51ZSBwYXN0IHRoYXQgZmFpbHVyZSBhbmQgY29tcGxldGUgYWxsIHRoZSB0ZXN0
cyBhbnl3YXkuCisgICAgICAgICMKKyAgICAgICAgIyBJbiB0aGUgZW5kLCB0aGlzIHNjcmlwdCBj
b2xsZWN0cyBhbGwgb2YgdGhlIGZhaWx1cmVzIGJ5IHNlYXJjaGluZyBmb3IKKyAgICAgICAgIyBm
aWxlcyBpbiB0aGUgLnJ1bm5lciBkaXJlY3Rvcnkgd2hvc2UgbmFtZSBtYXRjaGVzIC9edGVzdF9m
YWlsXy8sIHdoZXJlCisgICAgICAgICMgdGhlIHRoaW5nIGFmdGVyIHRoZSAnZmFpbF8nIGlzIHRo
ZSB0ZXN0IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQKKyAgICAgICAgIyB3b3VsZCBi
ZSBjcmVhdGVkIGJ5IHRoZSB0ZXN0IHNjcmlwdHMgaWYgdGhleSBkZXRlY3QgZmFpbHVyZS4gV2Un
cmUKKyAgICAgICAgIyBiYXNpY2FsbHkgdXNpbmcgdGhlIGZpbGVzeXN0ZW0gYXMgYSBjb25jdXJy
ZW50IGRhdGFiYXNlIG9mIHRlc3QgZmFpbHVyZXMuCisgICAgICAgICMgRXZlbiBpZiB0d28gdGVz
dHMgZmFpbCBhdCB0aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5nIGRpZmZlcmVu
dAorICAgICAgICAjIGZpbGVzIHdlIHdvbid0IG1pc3MgYW55IGZhaWx1cmVzLgorICAgICAgICBy
dW5QbGFucyA9IFtdCisgICAgICAgIHNlcmlhbFJ1blBsYW5zID0gW10KKyAgICAgICAgcnVubGlz
dC5lYWNoIHsKKyAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICBpZiBjb21wbGV0ZWRQ
bGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgaWYgQHJlbW90ZUhvc3RzLm5pbD8gb3IgcGxhbi5pbmRleCAlIEByZW1v
dGVIb3N0cy5sZW5ndGggPT0gcmVtb3RlSW5kZXgKKyAgICAgICAgICAgICAgICBpZiBzZXJpYWxQ
bGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBzZXJpYWxSdW5QbGFucyA8
PCBwbGFuCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBydW5QbGFu
cyA8PCBwbGFuCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
fQogCi1kZWYgcHJlcGFyZU1ha2VUZXN0UnVubmVyKHJlbW90ZUluZGV4KQotICAgICMgVGhlIGdv
YWxzIG9mIG91ciBwYXJhbGxlbCB0ZXN0IHJ1bm5lciBhcmUgc2NhbGFiaWxpdHkgYW5kIHNpbXBs
aWNpdHkuIFRoZQotICAgICMgc2ltcGxpY2l0eSBwYXJ0IGlzIHBhcnRpY3VsYXJseSBpbXBvcnRh
bnQuIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0byBoYXZlCi0gICAgIyBhIGZ1bGwtdGltZSBjb250
cmlidXRvciBqdXN0IHBoaWxvc29waGlzaW5nIGFib3V0IHBhcmFsbGVsIHRlc3RpbmcuCi0gICAg
IwotICAgICMgQXMgc3VjaCwgd2UganVzdCBwYXNzIG9mZiBhbGwgb2YgdGhlIGhhcmQgd29yayB0
byAnbWFrZScuIFRoaXMKLSAgICAjIGNyZWF0ZXMgYSBkdW1teSBkaXJlY3RvcnkgKCIkb3V0cHV0
RGlyLy5ydW5uZXIiKSBpbiB3aGljaCB3ZQotICAgICMgY3JlYXRlIGEgZHVtbXkgTWFrZWZpbGUu
IFRoZSBNYWtlZmlsZSBoYXMgYSAncGFyYWxsZWwnIHJ1bGUgdGhhdAotICAgICMgZGVwZW5kcyBh
bGwgdGVzdHMsIG90aGVyIHRoYW4gdGhlIG9uZXMgbWFya2VkICdzZXJpYWwnLiBUaGUKLSAgICAj
IHNlcmlhbCB0ZXN0cyBhcmUgYXJyYW5nZWQgaW4gYSBjaGFpbjsgdGhlIGxhc3QgdGFyZ2V0IGlu
IHRoZQotICAgICMgc2VyaWFsIGNoYWluIGRlcGVuZHMgb24gJ3BhcmFsbGVsJyBhbmQgJ2FsbCcg
ZGVwZW5kcyBvbiB0aGUgaGVhZAotICAgICMgb2YgdGhlIGNoYWluLiBSdW5uaW5nICdtYWtlIC1q
IDx3aGF0ZXZlcj4nIG9uIHRoaXMgTWFrZWZpbGUKLSAgICAjIHJlc3VsdHMgaW4gJ21ha2UnIGRv
aW5nIGFsbCBvZiB0aGUgaGFyZCB3b3JrOgotICAgICMKLSAgICAjIC0gTG9hZCBiYWxhbmNpbmcg
anVzdCB3b3Jrcy4gTW9zdCBzeXN0ZW1zIGhhdmUgYSBncmVhdCBsb2FkIGJhbGFuY2VyIGluCi0g
ICAgIyAgICdtYWtlJy4gSWYgeW91ciBzeXN0ZW0gZG9lc24ndCB0aGVuIGp1c3QgaW5zdGFsbCBh
IHJlYWwgJ21ha2UnLgotICAgICMKLSAgICAjIC0gSW50ZXJydXB0aW9ucyBqdXN0IHdvcmsuIEZv
ciBleGFtcGxlIEN0cmwtQyBoYW5kbGluZyBpbiAnbWFrZScgaXMKLSAgICAjICAgZXhhY3RseSBy
aWdodC4gWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgem9tYmllIHByb2Nlc3Nlcy4KLSAg
ICAjCi0gICAgIyBXZSB0aGVuIGRvIHNvbWUgdHJpY2tzIHRvIG1ha2UgZmFpbHVyZSBkZXRlY3Rp
b24gd29yayBhbmQgdG8gbWFrZSB0aGlzCi0gICAgIyB0b3RhbGx5IHNvdW5kLiBJZiBhIHRlc3Qg
ZmFpbHMsIHdlIGRvbid0IHdhbnQgdGhlIHdob2xlICdtYWtlJyBqb2IgdG8KLSAgICAjIHN0b3Au
IFdlIGFsc28gZG9uJ3QgaGF2ZSBhbnkgZmFjaWxpdHkgZm9yIG1ha2VmaWxlLWVzY2FwaW5nIG9m
IHBhdGggbmFtZXMuCi0gICAgIyBXZSBkbyBoYXZlIHN1Y2ggYSB0aGluZyBmb3Igc2hlbGwtZXNj
YXBpbmcsIHRob3VnaC4gV2UgZml4IGJvdGggcHJvYmxlbXMKLSAgICAjIGJ5IGhhdmluZyB0aGUg
YWN0dWFsIHdvcmsgZm9yIGVhY2ggb2YgdGhlIHRlc3QgcnVsZXMgYmUgZG9uZSBpbiBhIHNoZWxs
Ci0gICAgIyBzY3JpcHQgb24gdGhlIHNpZGUuIFRoZXJlIGlzIG9uZSBzdWNoIHNjcmlwdCBwZXIg
dGVzdC4gVGhlIHNjcmlwdCByZXNwb25kcwotICAgICMgdG8gZmFpbHVyZSBieSBwcmludGluZyBz
b21ldGhpbmcgb24gdGhlIGNvbnNvbGUgYW5kIHRoZW4gdG91Y2hpbmcgYQotICAgICMgZmFpbHVy
ZSBmaWxlIGZvciB0aGF0IHRlc3QsIGJ1dCB0aGVuIHN0aWxsIHJldHVybnMgMC4gVGhpcyBtYWtl
cyAnbWFrZScKLSAgICAjIGNvbnRpbnVlIHBhc3QgdGhhdCBmYWlsdXJlIGFuZCBjb21wbGV0ZSBh
bGwgdGhlIHRlc3RzIGFueXdheS4KLSAgICAjCi0gICAgIyBJbiB0aGUgZW5kLCB0aGlzIHNjcmlw
dCBjb2xsZWN0cyBhbGwgb2YgdGhlIGZhaWx1cmVzIGJ5IHNlYXJjaGluZyBmb3IKLSAgICAjIGZp
bGVzIGluIHRoZSAucnVubmVyIGRpcmVjdG9yeSB3aG9zZSBuYW1lIG1hdGNoZXMgL150ZXN0X2Zh
aWxfLywgd2hlcmUKLSAgICAjIHRoZSB0aGluZyBhZnRlciB0aGUgJ2ZhaWxfJyBpcyB0aGUgdGVz
dCBpbmRleC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB0aGF0Ci0gICAgIyB3b3VsZCBiZSBjcmVhdGVk
IGJ5IHRoZSB0ZXN0IHNjcmlwdHMgaWYgdGhleSBkZXRlY3QgZmFpbHVyZS4gV2UncmUKLSAgICAj
IGJhc2ljYWxseSB1c2luZyB0aGUgZmlsZXN5c3RlbSBhcyBhIGNvbmN1cnJlbnQgZGF0YWJhc2Ug
b2YgdGVzdCBmYWlsdXJlcy4KLSAgICAjIEV2ZW4gaWYgdHdvIHRlc3RzIGZhaWwgYXQgdGhlIHNh
bWUgdGltZSwgc2luY2UgdGhleSdyZSB0b3VjaGluZyBkaWZmZXJlbnQKLSAgICAjIGZpbGVzIHdl
IHdvbid0IG1pc3MgYW55IGZhaWx1cmVzLgotICAgIHNlcmlhbFBsYW5zID0ge30KLSAgICAkc2Vy
aWFsUnVubGlzdC5lYWNoIHsgfHB8IHNlcmlhbFBsYW5zW3BdID0gbmlsIH0KLSAgICBydW5QbGFu
cyA9IFtdCi0gICAgc2VyaWFsUnVuUGxhbnMgPSBbXQotICAgICRydW5saXN0LmVhY2ggewotICAg
ICAgICB8IHBsYW4gfAotICAgICAgICBpZiAhJHJlbW90ZSBvciBwbGFuLmluZGV4ICUgJHJlbW90
ZUhvc3RzLmxlbmd0aCA9PSByZW1vdGVJbmRleAotICAgICAgICAgICAgaWYgc2VyaWFsUGxhbnMu
aGFzX2tleT8ocGxhbikKLSAgICAgICAgICAgICAgICBzZXJpYWxSdW5QbGFucyA8PCBwbGFuCisg
ICAgICAgIEZpbGUub3BlbihAcnVubmVyRGlyICsgIk1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9Iiwg
InciKSB7CisgICAgICAgICAgICB8IG91dHAgfAorICAgICAgICAgICAgaWYgc2VyaWFsUnVuUGxh
bnMuZW1wdHk/CisgICAgICAgICAgICAgICAgb3V0cC5wdXRzKCJhbGw6IHBhcmFsbGVsIikKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBydW5QbGFucyA8PCBwbGFuCisgICAgICAg
ICAgICAgICAgc2VyaWFsUHJlcmVxID0gInRlc3RfZG9uZV8je3NlcmlhbFJ1blBsYW5zWy0xXS5p
bmRleH0iCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzKCJhbGw6ICN7c2VyaWFsUHJlcmVxfSIp
CisgICAgICAgICAgICAgICAgcHJldl90YXJnZXQgPSAicGFyYWxsZWwiCisgICAgICAgICAgICAg
ICAgc2VyaWFsUnVuUGxhbnMuZWFjaCB7CisgICAgICAgICAgICAgICAgICAgIHwgcGxhbiB8Cisg
ICAgICAgICAgICAgICAgICAgIHByZXZfdGFyZ2V0ID0gb3V0cHV0X3RhcmdldChvdXRwLCBwbGFu
LCBbcHJldl90YXJnZXRdKQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVuZAotICAg
ICAgICBlbmQKLSAgICB9Ci0KLSAgICBGaWxlLm9wZW4oJHJ1bm5lckRpciArICJNYWtlZmlsZS4j
e3JlbW90ZUluZGV4fSIsICJ3IikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBpZiBzZXJp
YWxSdW5QbGFucy5lbXB0eT8KLSAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiBwYXJhbGxlbCIp
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlcmlhbFByZXJlcSA9ICJ0ZXN0X2RvbmVfI3tz
ZXJpYWxSdW5QbGFuc1stMV0uaW5kZXh9IgotICAgICAgICAgICAgb3V0cC5wdXRzKCJhbGw6ICN7
c2VyaWFsUHJlcmVxfSIpCi0gICAgICAgICAgICBwcmV2X3RhcmdldCA9ICJwYXJhbGxlbCIKLSAg
ICAgICAgICAgIHNlcmlhbFJ1blBsYW5zLmVhY2ggeworICAgICAgICAgICAgcGFyYWxsZWxUYXJn
ZXRzID0gcnVuUGxhbnMuY29sbGVjdCB7CiAgICAgICAgICAgICAgICAgfCBwbGFuIHwKLSAgICAg
ICAgICAgICAgICBwcmV2X3RhcmdldCA9IG91dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgW3ByZXZf
dGFyZ2V0XSkKKyAgICAgICAgICAgICAgICBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtdKQog
ICAgICAgICAgICAgfQotICAgICAgICBlbmQKLSAgICAgICAgcGFyYWxsZWxUYXJnZXRzID0gcnVu
UGxhbnMuY29sbGVjdCB7Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgb3V0cHV0
X3RhcmdldChvdXRwLCBwbGFuLCBbXSkKKyAgICAgICAgICAgIG91dHAucHV0cygicGFyYWxsZWw6
ICIgKyBwYXJhbGxlbFRhcmdldHMuam9pbigiICIpKQogICAgICAgICB9Ci0gICAgICAgIG91dHAu
cHV0cygicGFyYWxsZWw6ICIgKyBwYXJhbGxlbFRhcmdldHMuam9pbigiICIpKQotICAgIH0KKyAg
ICBlbmQKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxl
dGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBpZiByZW1vdGVIb3N0cy5uaWw/CisgICAg
ICAgICAgICBwcmVwYXJlUnVubmVyRm9yUmVtb3RlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21w
bGV0ZWRQbGFucywgMCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3RlSG9zdHMuZWFj
aF9pbmRleCB7CisgICAgICAgICAgICAgICAgfHJlbW90ZUluZGV4fAorICAgICAgICAgICAgICAg
IHByZXBhcmVSdW5uZXJGb3JSZW1vdGUocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBs
YW5zLCByZW1vdGVJbmRleCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgZW5kCisgICAgZW5kCisg
ICAgZGVmIGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAgICAgICAgIm1ha2UgLWogI3skbnVtQ2hp
bGRQcm9jZXNzZXN9IC1zIC1mIE1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IgorICAgIGVuZAogZW5k
CiAKLWRlZiBwcmVwYXJlUnVieVRlc3RSdW5uZXIKLSAgICBGaWxlLm9wZW4oJHJ1bm5lckRpciAr
ICJydW5zY3JpcHQiLCAidyIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgJHJ1bmxpc3Qu
ZWFjaCB7Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgb3V0cC5wdXRzICJwcmlu
dCBgc2ggdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSAyPiYxYCIKK2NsYXNzIFRlc3RSdW5uZXJS
dWJ5IDwgVGVzdFJ1bm5lcgorICAgIGRlZiBwcmVwYXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBs
YW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIEZpbGUub3BlbihAcnVu
bmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3IikgeworICAgICAgICAgICAgfCBvdXRwIHwKKyAgICAg
ICAgICAgIHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAg
ICAgICAgICBpZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAg
ICAgICBuZXh0CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICJwcmludCBgc2ggdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSAyPiYxYCIKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgIH0KLWVuZAotCi1kZWYgdGVzdFJ1bm5lckNvbW1hbmQocmVtb3Rl
SW5kZXg9MCkKLSAgICBjYXNlICR0ZXN0UnVubmVyVHlwZQotICAgIHdoZW4gOnNoZWxsCi0gICAg
ICAgIGNvbW1hbmQgPSAic2ggcnVuc2NyaXB0IgotICAgIHdoZW4gOm1ha2UKLSAgICAgICAgY29t
bWFuZCA9ICJtYWtlIC1qICN7JG51bUNoaWxkUHJvY2Vzc2VzfSAtcyAtZiBNYWtlZmlsZS4je3Jl
bW90ZUluZGV4fSIKLSAgICB3aGVuIDpydWJ5Ci0gICAgICAgIGNvbW1hbmQgPSAicnVieSBydW5z
Y3JpcHQiCi0gICAgZWxzZQotICAgICAgICByYWlzZSAiVW5rbm93biB0ZXN0IHJ1bm5lciB0eXBl
OiAjeyR0ZXN0UnVubmVyVHlwZS50b19zfSIKICAgICBlbmQKLSAgICByZXR1cm4gY29tbWFuZAor
ICAgIGRlZiBjb21tYW5kKHJlbW90ZUluZGV4PTApCisgICAgICAgICJydWJ5IHJ1bnNjcmlwdCIK
KyAgICBlbmQKIGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1z
dHJlc3MtdGVzdC13cml0ZXItcGxheXN0YXRpb24ucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1
YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5yYgppbmRleCA0MTJiZjQ1NThh
ZDg1MDBhNmUwYTcwMDQyNzkzYzM4YzQyOThkNGIyLi4yYTdhYTk3ZmNlMmU1ZGVhZjNhYTAwODI2
YTFlZWIzOWUxZDk4OTk0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNj
LXN0cmVzcy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5yYgorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5yYgpAQCAtMjYwLDI1
ICsyNjAsMTAgQEAgZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCiAgICB9CiBlbmQKIAot
Y2xhc3MgUGxhbgotICAgIGF0dHJfcmVhZGVyIDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpmYW1p
bHksIDpuYW1lLCA6b3V0cHV0SGFuZGxlciwgOmVycm9ySGFuZGxlciwgOmFkZGl0aW9uYWxFbnYK
LSAgICBhdHRyX2FjY2Vzc29yIDppbmRleAotCi0gICAgZGVmIGluaXRpYWxpemUoZGlyZWN0b3J5
LCBhcmd1bWVudHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyKQot
ICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5Ci0gICAgICAgIEBhcmd1bWVudHMgPSBhcmd1
bWVudHNbMS4uLTFdCi0gICAgICAgIEBmYW1pbHkgPSBmYW1pbHkKLSAgICAgICAgQG5hbWUgPSBu
YW1lCi0gICAgICAgIEBvdXRwdXRIYW5kbGVyID0gb3V0cHV0SGFuZGxlcgotICAgICAgICBAZXJy
b3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyCi0gICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5k
T3B0aW9uc1s6aXNTbG93XQotICAgICAgICBAY3Jhc2hPSyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25z
WzpjcmFzaE9LXQotICAgICAgICBpZiBAY3Jhc2hPSwotICAgICAgICAgICAgQG91dHB1dEhhbmRs
ZXIgPSBub2lzeU91dHB1dEhhbmRsZXIKLSAgICAgICAgZW5kCi0gICAgICAgIEBhZGRpdGlvbmFs
RW52ID0gW10KK2NsYXNzIFBsYW4gPCBCYXNlUGxhbgorICAgIGRlZiBhcmd1bWVudHNNYXBwZXIo
YXJndW1lbnRzKQorICAgICAgICBhcmd1bWVudHNbMS4uLTFdCiAgICAgZW5kCi0KICAgICBkZWYg
c2hlbGxDb21tYW5kCiAgICAgICAgIG4gPSBAbmFtZS5nc3ViKC8oXFx8XC8pLywgJ18nKQogICAg
ICAgICBzY3JpcHQgPSAib3V0ID0gbmlsXG4iCkBAIC0zODcsMzUgKzM3Miw1MCBAQCBjbGFzcyBQ
bGFuCiAgICAgZW5kCiBlbmQKIAotZGVmIHByZXBhcmVQbGF5U3RhdGlvblRlc3RSdW5uZXIKLSAg
ICBGaWxlLm9wZW4oJHJ1bm5lckRpciArICJydW5zY3JpcHQiLCAidyIpIHsKK2RlZiBwcmVwYXJl
UGxheVN0YXRpb25UZXN0UnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFu
cykKKyAgICBGaWxlLm9wZW4oQHJ1bm5lckRpciArICJydW5zY3JpcHQiLCAidyIpIHsKICAgICAg
ICAgfCBvdXRwIHwKLSAgICAgICAgJHJ1bmxpc3QuZWFjaCB7CisgICAgICAgIHJ1bmxpc3QuZWFj
aCB7CiAgICAgICAgICAgICB8IHBsYW4gfAorICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMu
aW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICBlbmQKKwog
ICAgICAgICAgICAgb3V0cC5wdXRzICIuLi8uanNvbi90ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9
Lmpzb24iCiAgICAgICAgIH0KICAgICB9CiBlbmQKIAotZGVmIHByZXBhcmVTaGVsbFRlc3RSdW5u
ZXIKLSAgICBwcmVwYXJlUGxheVN0YXRpb25UZXN0UnVubmVyCi1lbmQKK2NsYXNzIFBsYXlzdGF0
aW9uVGVzdFJ1bm5lciA8IFRlc3RSdW5uZXIKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0
LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBGaWxl
Lm9wZW4oQHJ1bm5lckRpciArICJydW5zY3JpcHQiLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0
cCB8CisgICAgICAgICAgICBydW5saXN0LmVhY2ggeworICAgICAgICAgICAgICAgIHwgcGxhbiB8
CisgICAgICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAg
ICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAg
IG91dHAucHV0cyAiLi4vLmpzb24vdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fS5qc29uIgorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgZW5kCisgICAgZGVmIGNvbW1hbmQocmVtb3RlSW5k
ZXg9MCkKKyAgICAgICAgb3B0aW9ucyA9IEVOVlsiSlNDVEVTVF9vcHRpb25zIl0KIAotZGVmIHBy
ZXBhcmVNYWtlVGVzdFJ1bm5lcihyZW1vdGVJbmRleCkKLSAgICBwcmVwYXJlUGxheVN0YXRpb25U
ZXN0UnVubmVyCi1lbmQKKyAgICAgICAgZnNSb290ID0gJGpzY1BhdGguZGlybmFtZQorICAgICAg
ICBjb21tYW5kID0gIlBsYXlTdGF0aW9uVGVzdFJ1bm5lciAje29wdGlvbnN9IC1udW1Qcm9jZXNz
ZXM9I3skbnVtQ2hpbGRQcm9jZXNzZXMudG9fc30gLWV4ZT0jeyRqc2NQYXRofSAtZnNyb290PSN7
ZnNSb290fSAtLXJ1blVuaXF1ZUlkPSN7JHJ1blVuaXF1ZUlkfSBAI3tAcnVubmVyRGlyfS9ydW5z
Y3JpcHQiCiAKLWRlZiBwcmVwYXJlUnVieVRlc3RSdW5uZXIKLSAgICBwcmVwYXJlUGxheVN0YXRp
b25UZXN0UnVubmVyCi1lbmQKKyAgICAgICAgcHJpbnQgY29tbWFuZAogCi1kZWYgdGVzdFJ1bm5l
ckNvbW1hbmQKLSAgICBvcHRpb25zID0gRU5WWyJKU0NURVNUX29wdGlvbnMiXQorICAgICAgICBy
ZXR1cm4gY29tbWFuZAorICAgIGVuZAorZW5kCiAKLSAgICBmc1Jvb3QgPSAkanNjUGF0aC5kaXJu
YW1lCi0gICAgY29tbWFuZCA9ICJQbGF5U3RhdGlvblRlc3RSdW5uZXIgI3tvcHRpb25zfSAtbnVt
UHJvY2Vzc2VzPSN7JG51bUNoaWxkUHJvY2Vzc2VzLnRvX3N9IC1leGU9I3skanNjUGF0aH0gLWZz
cm9vdD0je2ZzUm9vdH0gLS1ydW5VbmlxdWVJZD0jeyRydW5VbmlxdWVJZH0gQCN7JHJ1bm5lckRp
cn0vcnVuc2NyaXB0IgorY2xhc3MgVGVzdFJ1bm5lclNoZWxsIDwgUGxheXN0YXRpb25UZXN0UnVu
bmVyCitlbmQKIAotICAgIHByaW50IGNvbW1hbmQKK2NsYXNzIFRlc3RSdW5uZXJNYWtlIDwgUGxh
eXN0YXRpb25UZXN0UnVubmVyCitlbmQKIAotICAgIHJldHVybiBjb21tYW5kCitjbGFzcyBUZXN0
UnVubmVyUnVieSA8IFBsYXlzdGF0aW9uVGVzdFJ1bm5lcgogZW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1ydWJ5LnJiIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItcnVieS5yYgppbmRl
eCA3ODg4MTZhZDBjOWYxMGI3Njc1NmI4NzE2NTZmOTQ4YTZmNWIyYjM2Li4xZDdlYTc1MTFiNjMz
ZjllNmFlMDkzYzIyZTY0NTRhNTAyODc5NTg2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1ydWJ5LnJiCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXJ1YnkucmIKQEAgLTI2MCwyNSAr
MjYwLDcgQEAgZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCiAgICB9CiBlbmQKIAotY2xh
c3MgUGxhbgotICAgIGF0dHJfcmVhZGVyIDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpmYW1pbHks
IDpuYW1lLCA6b3V0cHV0SGFuZGxlciwgOmVycm9ySGFuZGxlciwgOmFkZGl0aW9uYWxFbnYKLSAg
ICBhdHRyX2FjY2Vzc29yIDppbmRleAotICAgIAotICAgIGRlZiBpbml0aWFsaXplKGRpcmVjdG9y
eSwgYXJndW1lbnRzLCBmYW1pbHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlcikK
LSAgICAgICAgQGRpcmVjdG9yeSA9IGRpcmVjdG9yeQotICAgICAgICBAYXJndW1lbnRzID0gYXJn
dW1lbnRzCi0gICAgICAgIEBmYW1pbHkgPSBmYW1pbHkKLSAgICAgICAgQG5hbWUgPSBuYW1lCi0g
ICAgICAgIEBvdXRwdXRIYW5kbGVyID0gb3V0cHV0SGFuZGxlcgotICAgICAgICBAZXJyb3JIYW5k
bGVyID0gZXJyb3JIYW5kbGVyCi0gICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5kT3B0aW9u
c1s6aXNTbG93XQotICAgICAgICBAY3Jhc2hPSyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzpjcmFz
aE9LXQotICAgICAgICBpZiBAY3Jhc2hPSwotICAgICAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBu
b2lzeU91dHB1dEhhbmRsZXIKLSAgICAgICAgZW5kCi0gICAgICAgIEBhZGRpdGlvbmFsRW52ID0g
W10KLSAgICBlbmQKLSAgICAKK2NsYXNzIFBsYW4gPCBCYXNlUGxhbgogICAgIGRlZiBzaGVsbENv
bW1hbmQgCiAgICAgICAgIHNjcmlwdCA9ICJvdXQgPSBuaWxcbiIKICAgICAgICAgc2NyaXB0ICs9
ICJlcnIgPSBuaWxcbiIKQEAgLTM5OCw4MiArMzgwLDk3IEBAIGNsYXNzIFBsYW4KICAgICBlbmQK
IGVuZAogCi1kZWYgcHJlcGFyZVNoZWxsVGVzdFJ1bm5lcgotICAgIEZpbGUub3BlbigkcnVubmVy
RGlyICsgInJ1bnNjcmlwdCIsICJ3IikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICAkcnVu
bGlzdC5lYWNoIHsKLSAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAgICAgICAgICBvdXRwLnB1dHMg
InJ1YnkgdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIKK2NsYXNzIFRlc3RSdW5uZXJTaGVsbCA8
IFRlc3RSdW5uZXIKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0LCBzZXJpYWxQbGFucywg
Y29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBGaWxlLm9wZW4oIiN7QHJ1bm5l
ckRpciArICJydW5zY3JpcHQifSIsICJ3IikgeyB8ZnwKKyAgICAgICAgICAgIHJ1bmxpc3QuZWFj
aCB7IHxwbGFufAorICAgICAgICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBs
YW4pCisgICAgICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAg
ICAgICAgICAgICBmLnB1dHMoInJ1YnkgdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9Ci0gICAgYGRvczJ1bml4ICN7JHJ1bm5lckRpciAr
ICJydW5zY3JpcHQifWAgICAgCisgICAgICAgIGBkb3MydW5peCAje0BydW5uZXJEaXIgKyAicnVu
c2NyaXB0In1gCisgICAgZW5kCisgICAgZGVmIGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAgICAg
ICAgInNoIHJ1bnNjcmlwdCIKKyAgICBlbmQKIGVuZAogCi1kZWYgb3V0cHV0X3RhcmdldChvdXRw
LCBwbGFuLCBwcmVyZXFzKQotICAgIGluZGV4ID0gcGxhbi5pbmRleAotICAgIHRhcmdldCA9ICJ0
ZXN0X2RvbmVfI3tpbmRleH0iCi0gICAgb3V0cC5wdXRzICIje3RhcmdldH06ICN7cHJlcmVxcy5q
b2luKCIgIil9IgotICAgIG91dHAucHV0cyAiXHRydWJ5IHRlc3Rfc2NyaXB0XyN7aW5kZXh9Igot
ICAgIHRhcmdldAotZW5kCitjbGFzcyBUZXN0UnVubmVyTWFrZSA8IFRlc3RSdW5uZXIKKyAgICBk
ZWYgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBwcmVyZXFzKQorICAgICAgICBpbmRleCA9IHBs
YW4uaW5kZXgKKyAgICAgICAgdGFyZ2V0ID0gInRlc3RfZG9uZV8je2luZGV4fSIKKyAgICAgICAg
b3V0cC5wdXRzICIje3RhcmdldH06ICN7cHJlcmVxcy5qb2luKCIgIil9IgorICAgICAgICBvdXRw
LnB1dHMgIlx0cnVieSB0ZXN0X3NjcmlwdF8je2luZGV4fSIKKyAgICAgICAgdGFyZ2V0CisgICAg
ZW5kCisgICAgZGVmIHByZXBhcmVSdW5uZXJGb3JSZW1vdGUocnVubGlzdCwgc2VyaWFsUGxhbnMs
IGNvbXBsZXRlZFBsYW5zLCByZW1vdGVJbmRleCkKKyAgICAgICAgcnVuUGxhbnMgPSBbXQorICAg
ICAgICBzZXJpYWxSdW5QbGFucyA9IFtdCisgICAgICAgIHJ1bmxpc3QuZWFjaCB7CisgICAgICAg
ICAgICB8IHBsYW4gfAorICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxh
bikKKyAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlm
IEByZW1vdGVIb3N0cy5uaWw/IG9yIHBsYW4uaW5kZXggJSBAcmVtb3RlSG9zdHMubGVuZ3RoID09
IHJlbW90ZUluZGV4CisgICAgICAgICAgICAgICAgaWYgc2VyaWFsUGxhbnMuaW5jbHVkZT8ocGxh
bikKKyAgICAgICAgICAgICAgICAgICAgc2VyaWFsUnVuUGxhbnMgPDwgcGxhbgorICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcnVuUGxhbnMgPDwgcGxhbgorICAgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KIAotZGVmIHByZXBhcmVN
YWtlVGVzdFJ1bm5lcihyZW1vdGVJbmRleCkKLSAgICBzZXJpYWxQbGFucyA9IHt9Ci0gICAgJHNl
cmlhbFJ1bmxpc3QuZWFjaCB7IHxwfCBzZXJpYWxQbGFuc1twXSA9IG5pbCB9Ci0gICAgcnVuUGxh
bnMgPSBbXQotICAgIHNlcmlhbFJ1blBsYW5zID0gW10KLSAgICAkcnVubGlzdC5lYWNoIHsKLSAg
ICAgICAgfCBwbGFuIHwKLSAgICAgICAgaWYgISRyZW1vdGUgb3IgcGxhbi5pbmRleCAlICRyZW1v
dGVIb3N0cy5sZW5ndGggPT0gcmVtb3RlSW5kZXgKLSAgICAgICAgICAgIGlmIHNlcmlhbFBsYW5z
Lmhhc19rZXk/KHBsYW4pCi0gICAgICAgICAgICAgICAgc2VyaWFsUnVuUGxhbnMgPDwgcGxhbgor
ICAgICAgICBGaWxlLm9wZW4oQHJ1bm5lckRpciArICJNYWtlZmlsZS4je3JlbW90ZUluZGV4fSIs
ICJ3IikgeworICAgICAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgICAgIGlmIHNlcmlhbFJ1blBs
YW5zLmVtcHR5PworICAgICAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiBwYXJhbGxlbCIpCiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcnVuUGxhbnMgPDwgcGxhbgorICAgICAg
ICAgICAgICAgIHNlcmlhbFByZXJlcSA9ICJ0ZXN0X2RvbmVfI3tzZXJpYWxSdW5QbGFuc1stMV0u
aW5kZXh9IgorICAgICAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiAje3NlcmlhbFByZXJlcX0i
KQorICAgICAgICAgICAgICAgIHByZXZfdGFyZ2V0ID0gInBhcmFsbGVsIgorICAgICAgICAgICAg
ICAgIHNlcmlhbFJ1blBsYW5zLmVhY2ggeworICAgICAgICAgICAgICAgICAgICB8IHBsYW4gfAor
ICAgICAgICAgICAgICAgICAgICBwcmV2X3RhcmdldCA9IG91dHB1dF90YXJnZXQob3V0cCwgcGxh
biwgW3ByZXZfdGFyZ2V0XSkKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbmQKLSAg
ICAgICAgZW5kCi0gICAgfQotCi0gICAgRmlsZS5vcGVuKCRydW5uZXJEaXIgKyAiTWFrZWZpbGUu
I3tyZW1vdGVJbmRleH0iLCAidyIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgaWYgc2Vy
aWFsUnVuUGxhbnMuZW1wdHk/Ci0gICAgICAgICAgICBvdXRwLnB1dHMoImFsbDogcGFyYWxsZWwi
KQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzZXJpYWxQcmVyZXEgPSAidGVzdF9kb25lXyN7
c2VyaWFsUnVuUGxhbnNbLTFdLmluZGV4fSIKLSAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiAj
e3NlcmlhbFByZXJlcX0iKQotICAgICAgICAgICAgcHJldl90YXJnZXQgPSAicGFyYWxsZWwiCi0g
ICAgICAgICAgICBzZXJpYWxSdW5QbGFucy5lYWNoIHsKKyAgICAgICAgICAgIHBhcmFsbGVsVGFy
Z2V0cyA9IHJ1blBsYW5zLmNvbGxlY3QgewogICAgICAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAg
ICAgICAgICAgICAgcHJldl90YXJnZXQgPSBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtwcmV2
X3RhcmdldF0pCisgICAgICAgICAgICAgICAgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbXSkK
ICAgICAgICAgICAgIH0KLSAgICAgICAgZW5kCi0gICAgICAgIHBhcmFsbGVsVGFyZ2V0cyA9IHJ1
blBsYW5zLmNvbGxlY3QgewotICAgICAgICAgICAgfCBwbGFuIHwKLSAgICAgICAgICAgIG91dHB1
dF90YXJnZXQob3V0cCwgcGxhbiwgW10pCisgICAgICAgICAgICBvdXRwLnB1dHMoInBhcmFsbGVs
OiAiICsgcGFyYWxsZWxUYXJnZXRzLmpvaW4oIiAiKSkKICAgICAgICAgfQotICAgICAgICBvdXRw
LnB1dHMoInBhcmFsbGVsOiAiICsgcGFyYWxsZWxUYXJnZXRzLmpvaW4oIiAiKSkKLSAgICB9Cisg
ICAgZW5kCisgICAgZGVmIHByZXBhcmVSdW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBs
ZXRlZFBsYW5zLCByZW1vdGVIb3N0cykKKyAgICAgICAgaWYgcmVtb3RlSG9zdHMubmlsPworICAg
ICAgICAgICAgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0LCBzZXJpYWxQbGFucywgY29t
cGxldGVkUGxhbnMsIDApCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW90ZUhvc3RzLmVh
Y2hfaW5kZXggeworICAgICAgICAgICAgICAgIHxyZW1vdGVJbmRleHwKKyAgICAgICAgICAgICAg
ICBwcmVwYXJlUnVubmVyRm9yUmVtb3RlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQ
bGFucywgcmVtb3RlSW5kZXgpCisgICAgICAgICAgICB9CisgICAgICAgIGVuZAorICAgIGVuZAor
ICAgIGRlZiBjb21tYW5kKHJlbW90ZUluZGV4PTApCisgICAgICAgICJtYWtlIC1qICN7JG51bUNo
aWxkUHJvY2Vzc2VzfSAtcyAtZiBNYWtlZmlsZS4je3JlbW90ZUluZGV4fSIKKyAgICBlbmQKIGVu
ZAogCi1kZWYgcHJlcGFyZVJ1YnlUZXN0UnVubmVyCi0gICAgRmlsZS5vcGVuKCRydW5uZXJEaXIg
KyAicnVuc2NyaXB0IiwgInciKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgICRydW5saXN0
LmVhY2ggewotICAgICAgICAgICAgfCBwbGFuIHwKLSAgICAgICAgICAgIG91dHAucHV0cyAic3lz
dGVtIFwicnVieSB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9XCIiCitjbGFzcyBUZXN0UnVubmVy
UnVieSA8IFRlc3RSdW5uZXIKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0LCBzZXJpYWxQ
bGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBGaWxlLm9wZW4oQHJ1
bm5lckRpciArICJydW5zY3JpcHQiLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAg
ICAgICAgICBydW5saXN0LmVhY2ggeworICAgICAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAg
ICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAg
ICAgICAgbmV4dAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIG91dHAucHV0
cyAic3lzdGVtIFwicnVieSB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9XCIiCisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICB9Ci1lbmQKLQotZGVmIHRlc3RSdW5uZXJDb21tYW5kKHJlbW90
ZUluZGV4PTApCi0gICAgY2FzZSAkdGVzdFJ1bm5lclR5cGUKLSAgICB3aGVuIDpzaGVsbAotICAg
ICAgICBjb21tYW5kID0gInNoIHJ1bnNjcmlwdCIKLSAgICB3aGVuIDptYWtlCi0gICAgICAgIGNv
bW1hbmQgPSAibWFrZSAtaiAjeyRudW1DaGlsZFByb2Nlc3Nlc30gLXMgLWYgTWFrZWZpbGUuI3ty
ZW1vdGVJbmRleH0iCi0gICAgd2hlbiA6cnVieQotICAgICAgICBjb21tYW5kID0gInJ1YnkgcnVu
c2NyaXB0IgotICAgIGVsc2UKLSAgICAgICAgcmFpc2UgIlVua25vd24gdGVzdCBydW5uZXIgdHlw
ZTogI3skdGVzdFJ1bm5lclR5cGUudG9fc30iCiAgICAgZW5kCi0gICAgcmV0dXJuIGNvbW1hbmQK
KyAgICBkZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAgICAgICAicnVieSBydW5zY3JpcHQi
CisgICAgZW5kCiBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mt
c3RyZXNzLXRlc3QvZXhlY3V0b3IucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0
cmVzcy10ZXN0L2V4ZWN1dG9yLnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5OTUzZjZhMDZmZTM5YmYwNTZjNzZl
ZTdhMDczNGFjZDY3NGU4NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHJ1YnkvanNjLXN0cmVzcy10ZXN0L2V4ZWN1dG9yLnJiCkBAIC0wLDAgKzEsNDI5IEBACisjIENv
cHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjIEltcGxlbWVudHMgdGhlIG1haW4gbG9vcCBmb3IgZXhlY3V0aW5nIHRoZSB0ZXN0
cyBhbmQgaGFuZGxpbmcKKyMgbWlzc2luZy9tdWx0aXBsZSByZXN1bHRzIChiZWNhdXNlIG9mIGlu
ZnJhc3RydWN0dXJlIGlzc3VlcykuIEl0IGFsc28KKyMgdGFrZXMgY2FyZSBvZiBtYXJraW5nIGZh
aWxpbmcgdGVzdHMgYXMgZmxha3kgd2hlbgorIyAtLXRyZWF0LWZhaWxpbmctYXMtZmxha3kgaXMg
aW4gZWZmZWN0LiBJdCdzIGEgY2xhc3Mgc28gdGhhdCB3ZSBjYW4KKyMgZWFzaWx5IGluc3RhbnRp
YXRlIGEgc3ViY2xhc3MgZm9yIHRlc3RpbmcuCitjbGFzcyBCYXNlVGVzdHNFeGVjdXRvcgorICAg
IGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCByZW1vdGVIb3N0cywgaXRlcmF0
aW9uTGltaXRzLAorICAgICAgICAgICAgICAgICAgIHRyZWF0RmFpbGluZ0FzRmxha3ksIGxvZ1N0
cmVhbT0kc3RkZXJyKQorICAgICAgICBAcnVubGlzdCA9IHJ1bmxpc3QKKyAgICAgICAgQHNlcmlh
bFBsYW5zID0gc2VyaWFsUGxhbnMKKyAgICAgICAgQHJlbW90ZUhvc3RzID0gcmVtb3RlSG9zdHMK
KyAgICAgICAgQHRyZWF0RmFpbGluZ0FzRmxha3kgPSB0cmVhdEZhaWxpbmdBc0ZsYWt5CisgICAg
ICAgIEBpbmZyYUl0ZXJhdGlvbnNGbG9vciA9IGl0ZXJhdGlvbkxpbWl0cy5pbmZyYUl0ZXJhdGlv
bnNGbG9vcgorICAgICAgICBAaXRlcmF0aW9uc0NlaWxpbmcgPSBpdGVyYXRpb25MaW1pdHMuaXRl
cmF0aW9uc0NlaWxpbmcKKyAgICAgICAgaWYgQGl0ZXJhdGlvbnNDZWlsaW5nIDwgQGluZnJhSXRl
cmF0aW9uc0Zsb29yCisgICAgICAgICAgICByYWlzZSAiaXRlcmF0aW9uc0NlaWxpbmcgKCN7QGl0
ZXJhdGlvbnNDZWlsaW5nfSA8IEBpbmZyYUl0ZXJhdGlvbnNGbG9vciAoI3tAaW5mcmFJdGVyYXRp
b25zRmxvb3J9IgorICAgICAgICBlbmQKKyAgICAgICAgQG1heEl0ZXJhdGlvbnMgPSBzZXRNYXhJ
dGVyYXRpb25zKGluaXRpYWxNYXhBbGxvd2VkSXRlcmF0aW9ucyhydW5saXN0KSkKKyAgICAgICAg
QGxvZ1N0cmVhbSA9IGxvZ1N0cmVhbQorICAgIGVuZAorICAgIGRlZiBsb2cocykKKyAgICAgICAg
QGxvZ1N0cmVhbS5wdXRzKHMpIHVubGVzcyBAbG9nU3RyZWFtLm5pbD8KKyAgICBlbmQKKyAgICBk
ZWYgc2V0TWF4SXRlcmF0aW9ucyh2YWx1ZSkKKyAgICAgICAgaWYgdmFsdWUgPiBAaXRlcmF0aW9u
c0NlaWxpbmcKKyAgICAgICAgICAgIHZhbHVlID0gQGl0ZXJhdGlvbnNDZWlsaW5nCisgICAgICAg
IGVuZAorICAgICAgICBAbWF4SXRlcmF0aW9ucyA9IHZhbHVlCisgICAgZW5kCisgICAgZGVmIGl0
ZXJhdGlvbnNGb3JJbmZyYUZhaWx1cmVzCisgICAgICAgICMgSWYgd2UncmUgcnVubmluZyByZW1v
dGVseSwgc2NhbGUgdGhlIGV4dHJhIGl0ZXJhdGlvbnMgdG8KKyAgICAgICAgIyBhY2NvdW50IGZv
ciBpbmZyYXN0cnVjdHVyZSBmYWlsdXJlcyBieSB0aGUgbnVtYmVyIG9mIGhvc3RzLgorICAgICAg
ICBudW1SZW1vdGVIb3N0cyA9IDAKKyAgICAgICAgaWYgbm90IEByZW1vdGVIb3N0cy5uaWw/Cisg
ICAgICAgICAgICBudW1SZW1vdGVIb3N0cyA9IEByZW1vdGVIb3N0cy5zaXplIC8gMgorICAgICAg
ICBlbmQKKyAgICAgICAgW251bVJlbW90ZUhvc3RzLCBAaW5mcmFJdGVyYXRpb25zRmxvb3JdLm1h
eAorICAgIGVuZAorICAgIGRlZiBpbml0aWFsTWF4QWxsb3dlZEl0ZXJhdGlvbnMocnVubGlzdCkK
KyAgICAgICAgbWF4VHJpZXMgPSAwCisgICAgICAgIHJ1bmxpc3QuZWFjaCB7IHxwbGFufAorICAg
ICAgICAgICAgbmV4dCBpZiBwbGFuLmZsYWt5Lm5pbD8KKyAgICAgICAgICAgIGlmIHBsYW4uZmxh
a3kubWF4VHJpZXMgPiBtYXhUcmllcworICAgICAgICAgICAgICAgIG1heFRyaWVzID0gcGxhbi5m
bGFreS5tYXhUcmllcworICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgIyBUaGUg
bnVtYmVyIG9mIGFsbG93ZWQgaXRlcmF0aW9ucyBpcyB0aGUgc3VtIG9mCisgICAgICAgICMgaXRl
cmF0aW9uc0ZvckluZnJhRmFpbHVyZXMgYW5kIHRoZSBtYXggdGltZXMgd2UgcnVuIGEgdGVzdAor
ICAgICAgICAjIHRoYXQgYXBwZWFycyB0byBiZSBmbGFreS4KKyAgICAgICAgaXRlcmF0aW9uc0Zv
ckluZnJhRmFpbHVyZXMgKyBtYXhUcmllcworICAgIGVuZAorICAgIGRlZiBhZGp1c3RGbGFraW5l
c3NGb3JGYWlsaW5nVGVzdHMoaXRlcmF0aW9uLCBzdGF0dXNNYXAsIGV2YWx1YXRvcikKKyAgICAg
ICAgY29tcGxldGVkVGVzdHMgPSBldmFsdWF0b3IuY29tcGxldGVkCisgICAgICAgIGlmIEB0cmVh
dEZhaWxpbmdBc0ZsYWt5Lm5pbD8KKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZWRUZXN0cwor
ICAgICAgICBlbmQKKworICAgICAgICAjIElmIHdlIGhhdmUgYSBsb3Qgb2YgZmFpbGluZyB0ZXN0
cywgaXQncyBsaWtlbHkgdGhhdCB0aGUgdHJlZQorICAgICAgICAjIGlzIGJhZCBhbmQgdGhlcmUn
cyBubyBwb2ludCBpbiB0cmVhdGluZyB0aGUgZmFpbHVyZXMgYXMKKyAgICAgICAgIyBwb3RlbnRp
YWwgZmxha3kgdGVzdHMuCisgICAgICAgIGlmIGV2YWx1YXRvci50ZXN0c0ZhaWxlZC5zaXplID4g
QHRyZWF0RmFpbGluZ0FzRmxha3kubWF4RmFpbGluZworICAgICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRlZFRlc3RzCisgICAgICAgIGVuZAorICAgICAgICBhZGp1c3RlZFRlc3RzID0gU2V0Lm5ldwor
ICAgICAgICBldmFsdWF0b3IudGVzdHNGYWlsZWQuZWFjaCB7IHxwbGFufAorICAgICAgICAgICAg
aWYgcGxhbi5mbGFreS5uaWw/CisgICAgICAgICAgICAgICAgcGxhbi5mbGFreSA9IEZsYWt5Lm5l
dyhAdHJlYXRGYWlsaW5nQXNGbGFreS5wYXNzUGVyY2VudGFnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEB0cmVhdEZhaWxpbmdBc0ZsYWt5Lm1heFRyaWVzKQorICAg
ICAgICAgICAgICAgIGFkanVzdGVkVGVzdHMuYWRkKHBsYW4pCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgfQorICAgICAgICBpZiBhZGp1c3RlZFRlc3RzLnNpemUgPiAwCisgICAgICAgICAgICAj
IEFkanVzdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJpZXMgdXB3YXJkcyBpZiB3ZSBqdXN0Cisg
ICAgICAgICAgICAjIG1hcmtlZCBhIGZhaWxpbmcgdGVzdCBhcyBmbGFreS4gTm90ZSB0aGF0IGlu
ZnJhc3RydWN0dXJlCisgICAgICAgICAgICAjIGlzc3VlcyBtaWdodCBjYXVzZSB0ZXN0IGZhaWx1
cmVzIHRvIGJlIHJlcG9ydGVkIGF0IGxhdGVyCisgICAgICAgICAgICAjIGl0ZXJhdGlvbnMsIHNv
IHdlIHVzZSAoKykgaW5zdGVhZCBvZiAobWF4KS4gVGhpcyBpcyBzYWZlCisgICAgICAgICAgICAj
IGFzIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBpcyBjYXBwZWQgYnkKKyAgICAgICAgICAgICMg
aXRlcmF0aW9uc0NlaWxpbmcuCisgICAgICAgICAgICBuZXdNYXhJdGVyYXRpb25zID0gQG1heEl0
ZXJhdGlvbnMgKyBAdHJlYXRGYWlsaW5nQXNGbGFreS5tYXhUcmllcworICAgICAgICAgICAgaWYg
QG1heEl0ZXJhdGlvbnMgPCBuZXdNYXhJdGVyYXRpb25zCisgICAgICAgICAgICAgICAgc2V0TWF4
SXRlcmF0aW9ucyhuZXdNYXhJdGVyYXRpb25zKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAg
ICBwdXRkKCJhZGp1c3RGbGFraW5lc3NGb3JGYWlsaW5nVGVzdHMgI3tuZXdNYXhJdGVyYXRpb25z
fSAoLT4je0BtYXhJdGVyYXRpb25zfSkgI3thZGp1c3RlZFRlc3RzLmNvbGxlY3QgeyB8cHwgcC50
b19zIH19IikKKyAgICAgICAgZW5kCisgICAgICAgICMgV2UganVzdCBtYXJrZWQgdGhvc2UgYXMg
Zmxha3kgaW4gb3JkZXIgdG8gcmVydW4gdGhlbiwgc28KKyAgICAgICAgIyB0YWtlIHRoZW0gb2Zm
IHRoZSBjb21wbGV0ZWRUZXN0cy4KKyAgICAgICAgcmV0ID0gY29tcGxldGVkVGVzdHMgLSBhZGp1
c3RlZFRlc3RzCisgICAgICAgIHB1dGQoImNvbXBsZXRlZFRlc3RzOiAje3JldC5jb2xsZWN0IHsg
fHB8IHAudG9fcyB9fSIpCisgICAgICAgIHJldAorICAgIGVuZAorICAgIGRlZiBsb29wCisgICAg
ICAgIHByZXBhcmVBcnRpZmFjdHMoQHJlbW90ZUhvc3RzKQorICAgICAgICBzdGF0dXNNYXAgPSB7
fQorICAgICAgICAjIFRoaXMgaXMgYSBoaWdoLWxldmVsIHJldHJ5IGxvb3AuIElmIGEgcmVtb3Rl
IGhvc3QgZ29lcyBhd2F5IGluCisgICAgICAgICMgdGhlIG1pZGRsZSBvZiBhIHJ1biBhbmQgZWl0
aGVyIGRvZXNuJ3QgY29tZSBiYWNrIG9ubGluZSBvciBjb21lcworICAgICAgICAjIGJhY2sgaGF2
aW5nIHJlbW92ZWQgdGhlIHJlbW90ZSBkaXJlY3RvcnkgKCopLCBnZXRTdGF0dXNNYXAgd2lsbCBi
ZQorICAgICAgICAjIG1pc3NpbmcgcmVzdWx0cyBmb3IgdGhlc2UgdGVzdHMsIGFsbG93aW5nIHVz
IHRvIHJldHJ5IHRoZW0gaW4KKyAgICAgICAgIyB0aGUgbmV4dCBpdGVyYXRpb24uCisgICAgICAg
ICMKKyAgICAgICAgIyAoKikgVGhpcyBtYXkgd2VsbCBoYXBwZW4gd2hlbiBydW5uaW5nIHRoZSB0
ZXN0cyBvbiBlbWJlZGRlZAorICAgICAgICAjIGJvYXJkcyB0aGF0IHJlZ3VsYXJseSBjb3JydXB0
IHRoZWlyIFNEIGNhcmQuIERlZmluaXRlbHkgYW4gaXNzdWUKKyAgICAgICAgIyBmb3IgdGhlIGNp
MjAgYm9hcmRzIHVzZWQgdG8gdGVzdCBNSVBTLgorICAgICAgICAxMDAwMDAudGltZXMgeyB8aXRl
cmF0aW9ufAorICAgICAgICAgICAgaWYgaXRlcmF0aW9uID49IEBtYXhJdGVyYXRpb25zCisgICAg
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgIyBAcmVtb3Rl
SG9zdHMgKGFuZCB0aGVyZWZvcmUgcmVtb3RlSG9zdHMpIHdpbGwgYmUgbmlsCisgICAgICAgICAg
ICAjIHdoZW4gbm90IGV4ZWN1dGluZyBvbiByZW1vdGVzLgorICAgICAgICAgICAgcmVtb3RlSG9z
dHMgPSBwcmVwYXJlRXhlY3V0aW9uKEByZW1vdGVIb3N0cykKKyAgICAgICAgICAgIGlmIHJlbW90
ZUhvc3RzIGFuZCByZW1vdGVIb3N0cy5zaXplID09IDAKKyAgICAgICAgICAgICAgICAjIEVpdGhl
ciBldmVyeXRoaW5nIGlzIGRvd24sIG9yIGV2ZXJ5dGhpbmcgZ290CisgICAgICAgICAgICAgICAg
IyByZWJvb3RlZC4gSW4gdGhlIGxhdHRlciBjYXNlLCBhbGxvdyBlbm91Z2ggdGltZSBmb3IKKyAg
ICAgICAgICAgICAgICAjIHRoZSByZW1vdGUgYm9hcmRzIHRvIGJvb3QgdXAsIHRoZW4gcmV0cnku
CisgICAgICAgICAgICAgICAgd2FpdEludGVydmFsID0gNjAKKyAgICAgICAgICAgICAgICBsb2co
IkFsbCByZW1vdGUgaG9zdHMgZmFpbGVkLCByZXRyeWluZyBhZnRlciAje3dhaXRJbnRlcnZhbH1z
IikKKyAgICAgICAgICAgICAgICBzbGVlcCh3YWl0SW50ZXJ2YWwpCisgICAgICAgICAgICAgICAg
bmV4dAorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBleGVjdXRlVGVzdHMocmVtb3RlSG9z
dHMpCisgICAgICAgICAgICBzdGF0dXNNYXAgPSB1cGRhdGVTdGF0dXNNYXAoaXRlcmF0aW9uLCBz
dGF0dXNNYXApCisgICAgICAgICAgICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0RXZhbHVhdG9yU2lt
cGxlLm5ldyhAcnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICAgICAgZXZhbHVhdG9yLnZpc2l0
IQorCisgICAgICAgICAgICBjb21wbGV0ZWRUZXN0cyA9IGFkanVzdEZsYWtpbmVzc0ZvckZhaWxp
bmdUZXN0cyhpdGVyYXRpb24sIHN0YXR1c01hcCwgZXZhbHVhdG9yKQorICAgICAgICAgICAgIyBO
QjogZXZhbHVhdG9yLmNvbXBsZXRlZCBtYXkgbm93IGJlIG91dCBvZiBkYXRlLCB3ZSBuZWVkCisg
ICAgICAgICAgICAjIHRvIHVzZSBjb21wbGV0ZWRUZXN0cyBpbnN0ZWFkLgorCisgICAgICAgICAg
ICBicmVhayB1bmxlc3MgY29tcGxldGVkVGVzdHMuc2l6ZSAhPSBAcnVubGlzdC5zaXplCisgICAg
ICAgICAgICBpZiBjb21wbGV0ZWRUZXN0cy5zaXplID4gQHJ1bmxpc3Quc2l6ZQorICAgICAgICAg
ICAgICAgIHJhaXNlICJUZXN0IGNvdW50IG1pc21hdGNoOiAje2NvbXBsZXRlZFRlc3RzLnNpemV9
ID4gI3tAcnVubGlzdC5zaXplfSIKKyAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAjIFJl
Z2VuZXJhdGUgdGhlIGxpc3RzIG9mIHRlc3RzIHRvIHJ1bgorICAgICAgICAgICAgcmVmcmVzaEV4
ZWN1dGlvbihAcnVubGlzdCwgQHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRUZXN0cykKKworICAgICAg
ICAgICAgbnVtRmxha3kgPSBAcnVubGlzdC5zaXplIC0gY29tcGxldGVkVGVzdHMuc2l6ZSAtIGV2
YWx1YXRvci5taXNzaW5nLnNpemUKKyAgICAgICAgICAgIHRlc3RzSW5mbyA9ICJjb21wbGV0ZWQg
I3tjb21wbGV0ZWRUZXN0cy5zaXplfS8je0BydW5saXN0LnNpemV9ICgje251bUZsYWt5fSBmbGFr
eSwgI3tldmFsdWF0b3IubWlzc2luZy5zaXplfSBtaXNzaW5nKSIKKyAgICAgICAgICAgIHJlbW90
ZUhvc3RzSW5mbyA9ICIiCisgICAgICAgICAgICBpZiByZW1vdGVIb3N0cworICAgICAgICAgICAg
ICAgIHJlbW90ZUhvc3RzSW5mbyA9ICIsICN7cmVtb3RlSG9zdHMuc2l6ZX0vI3tAcmVtb3RlSG9z
dHMuc2l6ZX0gaG9zdHMgbGl2ZSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgbG9nKCJB
ZnRlciB0cnkgI3tpdGVyYXRpb24gKyAxfS8je0BtYXhJdGVyYXRpb25zfTogI3t0ZXN0c0luZm99
I3tyZW1vdGVIb3N0c0luZm99IikKKyAgICAgICAgfQorICAgICAgICBzdGF0dXNNYXAKKyAgICBl
bmQKK2VuZAorCittb2R1bGUgRXhlY3V0b3JTZWxmVGVzdHMKKyAgICBGaW5hbFRlc3RSZXN1bHQg
PSBTdHJ1Y3QubmV3KDpyZXN1bHQpCisgICAgVGVzdFJlc3VsdCA9IFN0cnVjdC5uZXcoOnJlc3Vs
dHMpCisgICAgSXRlcmF0aW9uID0gU3RydWN0Lm5ldyg6dGVzdFJlc3VsdHMpCisgICAgVGVzdENh
c2UgPSBTdHJ1Y3QubmV3KDp0ZXN0c1dpdGhGbGFreSwgOml0ZXJhdGlvbnMsIDpleHBlY3RlZFRl
c3RSZXN1bHRzLCA6dHJlYXRGYWlsaW5nQXNGbGFreSkKKyAgICBNT0NLX1RFU1RfRkFNSUxZID0g
ImYiCisgICAgSVRFUkFUSU9OX0xJTUlUUyA9IE9wZW5TdHJ1Y3QubmV3KDppbmZyYUl0ZXJhdGlv
bnNGbG9vciA9PiAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aXRl
cmF0aW9uc0NlaWxpbmcgPT4gOCkKKyAgICBjbGFzcyBNb2NrVGVzdHNFeGVjdXRvciA8IEJhc2VU
ZXN0c0V4ZWN1dG9yCisgICAgICAgIGF0dHJfcmVhZGVyIDpleGVjdXRlZEl0ZXJhdGlvbnMKKyAg
ICAgICAgZGVmIGluaXRpYWxpemUocnVubGlzdCwgaXRlcmF0aW9uUmVzdWx0cywgbWF4SXRlcmF0
aW9uc0JvdW5kcywgdHJlYXRGYWlsaW5nQXNGbGFreSwgbG9nU3RyZWFtKQorICAgICAgICAgICAg
c3VwZXIocnVubGlzdCwgW10sIG5pbCwgbWF4SXRlcmF0aW9uc0JvdW5kcywgdHJlYXRGYWlsaW5n
QXNGbGFreSwgbG9nU3RyZWFtKQorICAgICAgICAgICAgQGl0ZXJhdGlvblJlc3VsdHMgPSBpdGVy
YXRpb25SZXN1bHRzCisgICAgICAgICAgICBAZXhlY3V0ZWRJdGVyYXRpb25zID0gMAorICAgICAg
ICBlbmQKKyAgICAgICAgZGVmIHByZXBhcmVBcnRpZmFjdHMocmVtb3RlSG9zdHMpCisgICAgICAg
IGVuZAorICAgICAgICBkZWYgcHJlcGFyZUV4ZWN1dGlvbihyZW1vdGVIb3N0cykKKyAgICAgICAg
ICAgIHJlbW90ZUhvc3RzCisgICAgICAgIGVuZAorICAgICAgICBkZWYgZXhlY3V0ZVRlc3RzKHJl
bW90ZUhvc3RzKQorICAgICAgICBlbmQKKyAgICAgICAgZGVmIHVwZGF0ZVN0YXR1c01hcChpdGVy
YXRpb24sIHN0YXR1c01hcCkKKyAgICAgICAgICAgIGlmIGl0ZXJhdGlvbiA+PSBAaXRlcmF0aW9u
UmVzdWx0cy5zaXplCisgICAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJUcnlpbmcgdG8gZXhl
Y3V0ZSBpdGVyYXRpb24gI3tpdGVyYXRpb259IGJ1dCBvbmx5IGhhdmUgI3tAaXRlcmF0aW9uUmVz
dWx0cy5zaXplfSBpdGVyYXRpb24gcmVzdWx0cyBhdmFpbGFibGUiKQorICAgICAgICAgICAgICAg
IHJhaXNlICJTZWxmIHRlc3QgZXJyb3I6IGluc3VmZmljaWVudCBpdGVyYXRpb25zIgorICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICBAZXhlY3V0ZWRJdGVyYXRpb25zICs9IDEKKyAgICAgICAg
ICAgIEBpdGVyYXRpb25SZXN1bHRzW2l0ZXJhdGlvbl0uZWFjaCB7IHxpdGVyYXRpb258CisgICAg
ICAgICAgICAgICAgaXRlcmF0aW9uLmVhY2hfd2l0aF9pbmRleCB7IHx0ZXN0UmVzdWx0LCB0ZXN0
SW5kZXh8CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gQHJ1bmxpc3RbdGVzdEluZGV4XS5p
bmRleAorICAgICAgICAgICAgICAgICAgICAjIEJlY2F1c2Ugb2YgaW5mcmEgaXNzdWVzLCBhIHRl
c3QgbWlnaHQgaGF2ZSBtdWx0aXBsZSByZXN1bHRzLgorICAgICAgICAgICAgICAgICAgICB0ZXN0
UmVzdWx0LnJlc3VsdHMuZWFjaCB7IHxyZXN1bHR8CisgICAgICAgICAgICAgICAgICAgICAgICBs
aW5lID0gIi4vI3tTVEFUVVNfRklMRV9QUkVGSVh9I3tpbmRleH0gI3skcnVuVW5pcXVlSWR9IDAg
I3tyZXN1bHR9IgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1N0YXR1c0xpbmUoc3Rh
dHVzTWFwLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcHV0ZCgic3RhdHVzTWFwOiAje3N0YXR1c01hcH0i
KQorICAgICAgICAgICAgc3RhdHVzTWFwCisgICAgICAgIGVuZAorICAgICAgICBkZWYgcmVmcmVz
aEV4ZWN1dGlvbihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkVGVzdHMpCisgICAgICAg
IGVuZAorICAgIGVuZAorCisgICAgZGVmIEV4ZWN1dG9yU2VsZlRlc3RzLnJ1bgorICAgICAgICB0
cmYgPSBUZXN0UmVzdWx0Lm5ldyhbU1RBVFVTX0ZJTEVfRkFJTF0pCisgICAgICAgIHRycCA9IFRl
c3RSZXN1bHQubmV3KFtTVEFUVVNfRklMRV9QQVNTXSkKKyAgICAgICAgdHJlID0gVGVzdFJlc3Vs
dC5uZXcoW10pCisgICAgICAgIGZ0cnAgPSBGaW5hbFRlc3RSZXN1bHQubmV3KFNUQVRVU19GSUxF
X1BBU1MpCisgICAgICAgIGZ0cmYgPSBGaW5hbFRlc3RSZXN1bHQubmV3KFNUQVRVU19GSUxFX0ZB
SUwpCisgICAgICAgIGZ0cmUgPSBGaW5hbFRlc3RSZXN1bHQubmV3KG5pbCkKKyAgICAgICAgWwor
ICAgICAgICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sICMgMiB0ZXN0cyAodDAsIHQxKSwg
bmVpdGhlciBmbGFreQorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldygKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnAsICMgdDAg
cGFzc2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJwLCAjIHQxIHBh
c3NlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSksCisg
ICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwgIyAyIHRlc3RzICh0MCwgdDEpLCBu
ZWl0aGVyIGZsYWt5CisgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRyZl0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cnAsIGZ0cmZdKSwKKyAg
ICAgICAgICAgICMgMSB0ZXN0IGdpdmVzIG5vIHJlc3VsdCwgbmVlZCBhIHNlY29uZCBpdGVyYXRp
b24sIGJvdGggZmluYWxseSBwYXNzCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmls
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEl0ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRycF0pLAorICAgICAgICAgICAg
IyAxIHRlc3QgZmFpbHMsIDEgZ2l2ZXMgbm8gcmVzdWx0LCBuZWVkIGEgc2Vjb25kIGl0ZXJhdGlv
biwgb25lIGZpbmFsbHkgcGFzc2VzCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmls
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEl0ZXJhdGlvbi5uZXcoW3RyZiwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRyZiwgZnRycF0pLAorICAgICAgICAgICAg
IyAxIHRlc3QgcGFzc2VzLCAxIGdpdmVzIG5vIHJlc3VsdCwgbmVlZCBhIHNlY29uZCBpdGVyYXRp
b24sIG9uZSBmaW5hbGx5IHBhc3NlcworICAgICAgICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5p
bF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0pLAorICAgICAgICAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cnAsIGZ0cmZdKSwKKyAgICAgICAgICAg
IFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGaXJzdCBpdGVyYXRpb24gZG9lc24ndCBwcm9k
dWNlIGFueSByZXN1bHRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24u
bmV3KFt0cmUsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24u
bmV3KFt0cmYsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24u
bmV3KFt0cmUsIHRyZl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgW2Z0cmYsIGZ0cmZdKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0LCB3
aGVuIG5vIGZsYWtpZXMgYXJlIHByZXNlbnQsIHdlIHN0b3AgYXQKKyAgICAgICAgICAgICMgaW5m
cmFJdGVyYXRpb25zRmxvb3Igd2hlbiBubyByZXN1bHRzIGNvbWUgaW4uCisgICAgICAgICAgICBU
ZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbSXRlcmF0
aW9uLm5ldyhbdHJlLCB0cmVdKV0gKiBJVEVSQVRJT05fTElNSVRTLmluZnJhSXRlcmF0aW9uc0Zs
b29yLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJlLCBmdHJlXSksCisgICAgICAgICAg
ICAjIFRlc3QgdGhlIG1heEl0ZXJhdGlvbnMgYWRqdXN0bWVudCB3b3JrcyBhcyBleHBlY3RlZCBp
bgorICAgICAgICAgICAgIyB0aGUgcHJlc2VuY2Ugb2YgYSBzdGF0aWMgZmxha3kuCisgICAgICAg
ICAgICBUZXN0Q2FzZS5uZXcoW0ZsYWt5Lm5ldygwLjM5LCA0KSwgbmlsXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2luY2Ugd2Ug
aGF2ZSBhIGZsYWt5IHRlc3QsIHRoZSBtYXhJdGVyYXRpb25zIGdldHMgYWRqdXN0ZWQgdG8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJVEVSQVRJT05fTElNSVRTLmluZnJhSXRlcmF0
aW9uc0Zsb29yICArIEZsYWt5Lm1heFRyaWVzID0gNy4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSksCisgICAgICAgICAg
ICAjIFRlc3QgdGhhdCBhIGZsYWt5IGNhbiBmaW5pc2ggZWFybHkuCisgICAgICAgICAgICBUZXN0
Q2FzZS5uZXcoW0ZsYWt5Lm5ldygwLjQsIDQpLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0
cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0
cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0
cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFtmdHJwLCBmdHJwXSksCisgICAgICAgICAgICAjIFNhbWUsIHdpdGggbW9yZSB2YXJpYWJp
bGl0eS4KKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBPcGVu
U3RydWN0Lm5ldyg6cGFzc1BlcmNlbnRhZ2UgPT4gMC40LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDptYXhUcmllcyA9PiA2LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDptYXhGYWlsaW5nID0+IDMpKSwKKyAgICAgICAgICAgICMgU2Ft
ZSwgd2l0aCBkaWZmZXJlbnQgdmFyaWFiaWxpdHkuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXco
W25pbCwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRyZl0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQZXJjZW50YWdlID0+IDAu
NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4g
NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9
PiAzKSksCisgICAgICAgICAgICAjIFRlc3QgdGhhdCBhIGZsYWt5IGZvciB3aGljaCBub3QgZW5v
dWdoIHJlc3VsdHMgY29tZSBpbiBpcyBub3QgbWFya2VkIGFzIGNvbXBsZXRlZC4KKyAgICAgICAg
ICAgIFRlc3RDYXNlLm5ldyhbbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZl0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnBdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmXSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJdGVyYXRpb24ubmV3KFt0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgW2Z0cmVdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1
Y3QubmV3KDpwYXNzUGVyY2VudGFnZSA9PiAwLjQ5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDptYXhUcmllcyA9PiA0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDptYXhGYWlsaW5nID0+IDEpKSwKKyAgICAgICAgICAgICMgVGVzdCB0
aGF0IChzdGF0aWNhbGx5KSBmbGFreSB0ZXN0cyBhcmVuJ3QgYWRqdXN0ZWQKKyAgICAgICAgICAg
IFRlc3RDYXNlLm5ldyhbRmxha3kubmV3KDAuNSwgMyksIG5pbF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0
cmYsIHRycF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0
cnAsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0
cmYsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgW2Z0cmYsIGZ0cnBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1
Y3QubmV3KDpwYXNzUGVyY2VudGFnZSA9PiAwLjcsICMgPiAyLzMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gNiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiAzKSksCisgICAgICAgICAgICAj
IFRlc3QgdGhhdCB3ZSByZXNwZWN0IG1heEZhaWxpbmcuCisgICAgICAgICAgICBUZXN0Q2FzZS5u
ZXcoW25pbCwgbmlsLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmLCB0cmYsIHRyZl0pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cmYs
IGZ0cmYsIGZ0cmZdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3KDpw
YXNzUGVyY2VudGFnZSA9PiAwLjcsICMgPiAyLzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiAyKSksCisgICAgICAgICAgICAjIFRlc3QgdGhh
dCB3ZSBoYWx0IGF0IG1heEl0ZXJhdGlvbnMgKDMgKyA1ID0gOCkgaWYgbm8gcmVzdWx0cyBjb21l
IGluLgorICAgICAgICAgICAgVGVzdENhc2UubmV3KFtGbGFreS5uZXcoMC41LCA1KSwgbmlsXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRyZSwgZnRycF0pLAorICAgICAgICBdLmVhY2hf
d2l0aF9pbmRleCB7CisgICAgICAgICAgICB8dGVzdGNhc2UsIHRlc3RjYXNlSW5kZXh8CisgICAg
ICAgICAgICBydW5saXN0ID0gW10KKyAgICAgICAgICAgIHB1dGQoIj09PT4gVGVzdGNhc2UgI3t0
ZXN0Y2FzZUluZGV4fSIpCisgICAgICAgICAgICB0ZXN0Y2FzZS50ZXN0c1dpdGhGbGFreS5lYWNo
X3dpdGhfaW5kZXggeyB8Zmxha3ksIGluZGV4fAorICAgICAgICAgICAgICAgIHBsYW4gPSBCYXNl
UGxhbi5tb2NrKE1PQ0tfVEVTVF9GQU1JTFksICJ0I3tpbmRleH0iLCBmbGFreSkKKyAgICAgICAg
ICAgICAgICBydW5saXN0IDw8IHBsYW4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1dGQo
InJ1bmxpc3Q6ICN7cnVubGlzdC5jb2xsZWN0IHsgfHB8IHAudG9fcyB9fSwgZXhwZWN0ZWQ6ICN7
dGVzdGNhc2UuZXhwZWN0ZWRUZXN0UmVzdWx0c30iKQorICAgICAgICAgICAgZXhlY3V0b3IgPSBN
b2NrVGVzdHNFeGVjdXRvci5uZXcocnVubGlzdCwgdGVzdGNhc2UuaXRlcmF0aW9ucywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElURVJBVElPTl9MSU1JVFMs
IHRlc3RjYXNlLnRyZWF0RmFpbGluZ0FzRmxha3ksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkdGVzdHNEZWJ1Z1N0cmVhbSkKKyAgICAgICAgICAgIHN0YXR1
c01hcCA9IGV4ZWN1dG9yLmxvb3AKKyAgICAgICAgICAgIGlmIGV4ZWN1dG9yLmV4ZWN1dGVkSXRl
cmF0aW9ucyAhPSB0ZXN0Y2FzZS5pdGVyYXRpb25zLnNpemUKKyAgICAgICAgICAgICAgICAjIFRo
ZSB0ZXN0Y2FzZSBzaG91bGQgcHJvdmlkZSBleGFjdGx5IGFzIG1hbnkKKyAgICAgICAgICAgICAg
ICAjIGl0ZXJhdGlvbiByZXN1bHRzIGFzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICByYWlzZSAi
RXhlY3V0ZWQgI3tleGVjdXRvci5leGVjdXRlZEl0ZXJhdGlvbnN9LCAje3Rlc3RjYXNlLml0ZXJh
dGlvbnMuc2l6ZX0gZ2l2ZW4iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGV4cGVjdENv
bXBsZXRlZCA9IFNldC5uZXcocnVubGlzdC5zZWxlY3QgeyB8cGxhbnwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCB0ZXN0Y2FzZS5leHBlY3RlZFRlc3RSZXN1
bHRzW3J1bmxpc3QuaW5kZXgocGxhbildLnJlc3VsdC5uaWw/CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0pCisKKyAgICAgICAgICAgIGV2YWx1YXRvciA9IFRlc3RSZXN1
bHRFdmFsdWF0b3JTaW1wbGUubmV3KHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgICAgIGV2
YWx1YXRvci52aXNpdCEKKworICAgICAgICAgICAgdmVyaWZ5Q29tcGxldGVkVGVzdHNNYXRjaEV4
cGVjdGVkKHN0YXR1c01hcCwgZXZhbHVhdG9yLmNvbXBsZXRlZCwgZXhwZWN0Q29tcGxldGVkKQor
CisgICAgICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9IGZhbHNlCisgICAgICAgICAgICBydW5saXN0
LmVhY2hfd2l0aF9pbmRleCB7IHxwbGFuLCBpbmRleHwKKyAgICAgICAgICAgICAgICBjYXNlIHRl
c3RjYXNlLmV4cGVjdGVkVGVzdFJlc3VsdHNbaW5kZXhdLnJlc3VsdAorICAgICAgICAgICAgICAg
IHdoZW4gbmlsCisgICAgICAgICAgICAgICAgICAgIGlmIGV2YWx1YXRvci50ZXN0c1Bhc3NlZC5p
bmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2VGYWlsZWQgPSB0
cnVlCisgICAgICAgICAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlRlc3QgI3tpbmRleH0g
c2hvdWxkIG5vdCBoYXZlIGNvbXBsZXRlZCBidXQgcGFzc2VkIikKKyAgICAgICAgICAgICAgICAg
ICAgZWxzaWYgZXZhbHVhdG9yLnRlc3RzRmFpbGVkLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICRzdGRlcnIucHV0cygiVGVzdCAje2luZGV4fSBzaG91bGQgbm90IGhhdmUgY29tcGxldGVk
IGJ1dCBmYWlsZWQiKQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICB3
aGVuIFNUQVRVU19GSUxFX1BBU1MKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGV2YWx1YXRv
ci50ZXN0c1Bhc3NlZC5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dGNhc2VGYWlsZWQgPSB0cnVlCisgICAgICAgICAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMo
IlRlc3QgI3tpbmRleH0gc2hvdWxkIGhhdmUgcGFzc2VkIGJ1dCBkaWRuJ3QiKQorICAgICAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICB3aGVuIFNUQVRVU19GSUxFX0ZBSUwKKyAg
ICAgICAgICAgICAgICAgICAgaWYgbm90IGV2YWx1YXRvci50ZXN0c0ZhaWxlZC5pbmNsdWRlPyhw
bGFuKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2VGYWlsZWQgPSB0cnVlCisgICAg
ICAgICAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlRlc3QgI3tpbmRleH0gc2hvdWxkIGhh
dmUgZmFpbGVkIGJ1dCBkaWRuJ3QiKQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJhaXNlICJDYW4ndCBnZXQgaGVyZSIK
KyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIHRlc3Rj
YXNlRmFpbGVkCisgICAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJzdGF0dXNNYXAgPSAje3N0
YXR1c01hcH0iKQorICAgICAgICAgICAgICAgIHJhaXNlICJTZWxmIHRlc3QgZmFpbHVyZSIKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgZW5kCitlbmQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9y
LnJiIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3Vs
dC1ldmFsdWF0b3IucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFjZGZmYmQzNWRjYTAzZGY0ZTI4YzgwMjA5NWIw
MWM5M2JjNmM3NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9q
c2Mtc3RyZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9yLnJiCkBAIC0wLDAgKzEsMjkzIEBA
CisjIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
IyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjIFZpc2l0cyB0aGUgdGVzdHMgaW4gdGhlIHJ1bmxpc3QgYW5kIGludm9r
ZXMgYSBudW1iZXIgb2YKKyMgY2FsbGJhY2tzLiBVc2VkIHZpYSBzdWJjbGFzc2luZy4KK2NsYXNz
IFRlc3RSZXN1bHRFdmFsdWF0b3IKKyAgICBkZWYgaW5pdGlhbGl6ZShydW5saXN0LCBzdGF0dXNN
YXApCisgICAgICAgIEBydW5saXN0ID0gcnVubGlzdAorICAgICAgICBAc3RhdHVzTWFwID0gc3Rh
dHVzTWFwCisgICAgZW5kCisgICAgZGVmIG5vUmVzdWx0KHBsYW4pCisgICAgICAgICMgWFhYOiBt
YXliZSBmb2N1cyBvbiBpbmNvbXBsZXRlIGluIHJlcG9ydGluZz8KKyAgICBlbmQKKyAgICBkZWYg
cGFzc2VkKHBsYW4pCisgICAgZW5kCisgICAgZGVmIGZhaWxlZChwbGFuKQorICAgIGVuZAorICAg
IGRlZiB3YXNGbGFreUFuZFBhc3NlZChwbGFuLCBzdWNjZXNzZXMsIHRyaWVzKQorICAgIGVuZAor
ICAgIGRlZiB2aXNpdGluZyhwbGFuKQorICAgIGVuZAorICAgIGRlZiB2aXNpdCEKKyAgICAgICAg
QHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAgICB8cGxhbnwKKyAgICAgICAgICAgIHZpc2l0aW5n
KHBsYW4pCisgICAgICAgICAgICBpZiBub3QgQHN0YXR1c01hcC5oYXNfa2V5PyhwbGFuLmluZGV4
KQorICAgICAgICAgICAgICAgIG5vUmVzdWx0KHBsYW4pCisgICAgICAgICAgICAgICAgbmV4dAor
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBzdGF0dXNlcyA9IEBzdGF0dXNNYXBbcGxhbi5p
bmRleF0KKyAgICAgICAgICAgIHRlc3RXYXNTdWNjZXNzZnVsID0gbmlsCisgICAgICAgICAgICBp
ZiBwbGFuLmZsYWt5Lm5pbD8KKyAgICAgICAgICAgICAgICAjIElmIGFueSBvZiB0aGUgcmVzdWx0
cyB3ZSBnb3Qgd2FzIGEgcGFzcywgY29uc2lkZXIgdGhlCisgICAgICAgICAgICAgICAgIyB0ZXN0
IHN1Y2Nlc3NmdWwuIFRoZSBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCwgdW5sZXNzIGEKKyAgICAg
ICAgICAgICAgICAjIHRlc3QgaXMgbWFya2VkIGFzIGZsYWt5LCBmYWlsdXJlcyBhcmUgYmVjYXVz
ZSBvZgorICAgICAgICAgICAgICAgICMgaW5mcmFzdHJ1Y3R1cmUgaXNzdWVzICh3aGljaCBpcyB3
aHkgdGhlIHRlc3Qgd2FzIHJ1bgorICAgICAgICAgICAgICAgICMgbXVsdGlwbGUgdGltZXMgaW4g
dGhlIGZpcnN0IHBsYWNlKS4KKyAgICAgICAgICAgICAgICB0ZXN0V2FzU3VjY2Vzc2Z1bCA9IHN0
YXR1c2VzLmluY2x1ZGU/KFNUQVRVU19GSUxFX1BBU1MpCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFdhc1N1Y2Nlc3NmdWwgPSBwbGFuLmZsYWt5LnJlc3VsdChzdGF0dXNl
cykKKyAgICAgICAgICAgICAgICBpZiB0ZXN0V2FzU3VjY2Vzc2Z1bC5uaWw/CisgICAgICAgICAg
ICAgICAgICAgICMgTm90IGNvbXBsZXRlZCB5ZXQKKyAgICAgICAgICAgICAgICAgICAgbmV4dAor
ICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBpZiB0ZXN0
V2FzU3VjY2Vzc2Z1bAorICAgICAgICAgICAgICAgIHBhc3NlZChwbGFuKQorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGZhaWxlZChwbGFuKQorICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICBucmVzdWx0cyA9IHN0YXR1c2VzLnVuaXEuc2l6ZQorICAgICAgICAgICAgaWYgbnJl
c3VsdHMgPCAxCisgICAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJVbmV4cGVjdGVkIG51bWJl
ciBvZiByZXN1bHRzOiAje25yZXN1bHRzfSBmb3IgcGxhbiAje3BsYW59IikKKyAgICAgICAgICAg
ICAgICByYWlzZSAiVW5leHBlY3RlZCBudW1iZXIgb2YgcmVzdWx0cyIKKyAgICAgICAgICAgIGVs
c2lmIG5yZXN1bHRzICE9IDEgYW5kIHRlc3RXYXNTdWNjZXNzZnVsCisgICAgICAgICAgICAgICAg
d2FzRmxha3lBbmRQYXNzZWQocGxhbiwgc3RhdHVzZXMuY291bnQoU1RBVFVTX0ZJTEVfUEFTUyks
IHN0YXR1c2VzLnNpemUpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgIGVuZAorZW5k
CisKKyMgU2ltcGxlIGJlYW4gY291bnRpbmcgY2xhc3Mgd2l0aCBubyBzaWRlLWVmZmVjdHMuCitj
bGFzcyBUZXN0UmVzdWx0RXZhbHVhdG9yU2ltcGxlIDwgVGVzdFJlc3VsdEV2YWx1YXRvcgorICAg
IGF0dHJfcmVhZGVyIDp0ZXN0c1Bhc3NlZCwgOnRlc3RzRmFpbGVkCisgICAgZGVmIGluaXRpYWxp
emUocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBzdXBlcihydW5saXN0LCBzdGF0dXNNYXAp
CisgICAgICAgIEB0ZXN0c1Bhc3NlZCA9IFNldC5uZXcKKyAgICAgICAgQHRlc3RzRmFpbGVkID0g
U2V0Lm5ldworICAgICAgICBAbm9SZXN1bHQgPSBTZXQubmV3CisgICAgICAgIEBhbGwgPSBTZXQu
bmV3CisgICAgZW5kCisgICAgZGVmIHZpc2l0aW5nKHBsYW4pCisgICAgICAgIEBhbGwuYWRkKHBs
YW4pCisgICAgZW5kCisgICAgZGVmIHBhc3NlZChwbGFuKQorICAgICAgICBAdGVzdHNQYXNzZWQu
YWRkKHBsYW4pCisgICAgZW5kCisgICAgZGVmIGZhaWxlZChwbGFuKQorICAgICAgICBAdGVzdHNG
YWlsZWQuYWRkKHBsYW4pCisgICAgZW5kCisgICAgZGVmIG5vUmVzdWx0KHBsYW4pCisgICAgICAg
IEBub1Jlc3VsdC5hZGQocGxhbikKKyAgICBlbmQKKyAgICBkZWYgY29tcGxldGVkCisgICAgICAg
IEB0ZXN0c1Bhc3NlZCB8IEB0ZXN0c0ZhaWxlZAorICAgIGVuZAorICAgIGRlZiBtaXNzaW5nCisg
ICAgICAgIEBub1Jlc3VsdAorICAgIGVuZAorZW5kCisKK2NsYXNzIFJlc3VsdHNXcml0ZXIKKyAg
ICBkZWYgaW5pdGlhbGl6ZQorICAgICAgICBAZmlsZXMgPSB7fQorICAgIGVuZAorICAgIGRlZiBh
cHBlbmQoZmlsZW5hbWUsIHMpCisgICAgICAgIGlmIG5vdCBAZmlsZXMuaGFzX2tleT8oZmlsZW5h
bWUpCisgICAgICAgICAgICBAZmlsZXNbZmlsZW5hbWVdID0gRmlsZS5vcGVuKCRvdXRwdXREaXIg
KyBmaWxlbmFtZSwgImEiKQorICAgICAgICBlbmQKKyAgICAgICAgQGZpbGVzW2ZpbGVuYW1lXS5w
dXRzKHMpCisgICAgZW5kCisgICAgZGVmIGFwcGVuZEZhaWx1cmUocGxhbikKKyAgICAgICAgYXBw
ZW5kKCJmYWlsZWQiLCBwbGFuLm5hbWUpCisgICAgZW5kCisgICAgZGVmIGFwcGVuZFBhc3MocGxh
bikKKyAgICAgICAgYXBwZW5kKCJwYXNzZWQiLCBwbGFuLm5hbWUpCisgICAgZW5kCisgICAgZGVm
IGFwcGVuZE5vUmVzdWx0KHBsYW4pCisgICAgICAgIGFwcGVuZCgibm9yZXN1bHQiLCBwbGFuLm5h
bWUpCisgICAgZW5kCisgICAgZGVmIGFwcGVuZEZsYWt5KHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMp
CisgICAgICAgIGFwcGVuZCgiZmxha3kiLCAiI3twbGFuLm5hbWV9ICN7c3VjY2Vzc2VzfSAje3Ry
aWVzfSIpCisgICAgZW5kCisgICAgZGVmIGFwcGVuZFJlc3VsdChwbGFuLCBkaWRQYXNzKQorICAg
ICAgICBhcHBlbmQoInJlc3VsdHMiLCAiI3twbGFuLm5hbWV9OiAje2RpZFBhc3MgPyAnUEFTUycg
OiAnRkFJTCd9IikKKyAgICBlbmQKKyAgICBkZWYgY2xvc2UKKyAgICAgICAgQGZpbGVzLmVhY2hf
dmFsdWUgeyB8ZnwKKyAgICAgICAgICAgIGYuY2xvc2UKKyAgICAgICAgfQorICAgICAgICBAZmls
ZXMuY2xlYXIKKyAgICBlbmQKK2VuZAorCisjIEZpbmFsIGFjY291bnRpbmcgb2YgcmVzdWx0cy4K
K2NsYXNzIFRlc3RSZXN1bHRFdmFsdWF0b3JGaW5hbCA8IFRlc3RSZXN1bHRFdmFsdWF0b3IKKyAg
ICBhdHRyX3JlYWRlciA6bm9yZXN1bHQsIDpmYW1pbHlNYXAKKyAgICBkZWYgaW5pdGlhbGl6ZShy
dW5saXN0LCBzdGF0dXNNYXApCisgICAgICAgIHN1cGVyKHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAg
ICAgICAgQG5vcmVzdWx0ID0gMAorICAgICAgICBAZmFtaWx5TWFwID0ge30KKyAgICAgICAgQHdy
aXRlciA9IFJlc3VsdHNXcml0ZXIubmV3CisgICAgZW5kCisgICAgZGVmIG5vUmVzdWx0KHBsYW4p
CisgICAgICAgIEB3cml0ZXIuYXBwZW5kTm9SZXN1bHQocGxhbikKKyAgICAgICAgQG5vcmVzdWx0
ICs9IDEKKyAgICBlbmQKKyAgICBkZWYgcGFzc2VkKHBsYW4pCisgICAgICAgIEB3cml0ZXIuYXBw
ZW5kUGFzcyhwbGFuKQorICAgICAgICBhcHBlbmRSZXN1bHQocGxhbiwgdHJ1ZSkKKyAgICAgICAg
YWRkVG9GYW1pbHlNYXAocGxhbiwgIlBBU1MiKQorICAgIGVuZAorICAgIGRlZiBmYWlsZWQocGxh
bikKKyAgICAgICAgQHdyaXRlci5hcHBlbmRGYWlsdXJlKHBsYW4pCisgICAgICAgIGFwcGVuZFJl
c3VsdChwbGFuLCBmYWxzZSkKKyAgICAgICAgYWRkVG9GYW1pbHlNYXAocGxhbiwgIkZBSUwiKQor
ICAgIGVuZAorICAgIGRlZiB3YXNGbGFreUFuZFBhc3NlZChwbGFuLCBzdWNjZXNzZXMsIHRyaWVz
KQorICAgICAgICBAd3JpdGVyLmFwcGVuZEZsYWt5KHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMpCisg
ICAgZW5kCisgICAgcHJpdmF0ZQorICAgIGRlZiBhcHBlbmRSZXN1bHQocGxhbiwgc3VjY2Vzc2Z1
bCkKKyAgICAgICAgQHdyaXRlci5hcHBlbmRSZXN1bHQocGxhbiwgc3VjY2Vzc2Z1bCkKKyAgICBl
bmQKKyAgICBkZWYgYWRkVG9GYW1pbHlNYXAocGxhbiwgcmVzdWx0KQorICAgICAgICB1bmxlc3Mg
ZmFtaWx5TWFwW3BsYW4uZmFtaWx5XQorICAgICAgICAgICAgZmFtaWx5TWFwW3BsYW4uZmFtaWx5
XSA9IFtdCisgICAgICAgIGVuZAorICAgICAgICBmYW1pbHlNYXBbcGxhbi5mYW1pbHldIDw8IHsg
OnJlc3VsdCA9PiByZXN1bHQsIDpwbGFuID0+IHBsYW59CisgICAgZW5kCitlbmQKKworZGVmIHZl
cmlmeUNvbXBsZXRlZFRlc3RzTWF0Y2hFeHBlY3RlZChzdGF0dXNNYXAsIGNvbXBsZXRlZCwgZXhw
ZWN0ZWQpCisgICAgaWYgY29tcGxldGVkICE9IGV4cGVjdGVkCisgICAgICAgIHVuZXhwZWN0ZWRs
eUNvbXBsZXRlZCA9IChjb21wbGV0ZWQgLSBleHBlY3RlZCkuY29sbGVjdCB7IHxwbGFufAorICAg
ICAgICAgICAgIiMje3BsYW4uaW5kZXh9OiAje3N0YXR1c01hcFtwbGFuLmluZGV4XX0iCisgICAg
ICAgIH0uam9pbigiIHwgIikKKyAgICAgICAgJHN0ZGVyci5wdXRzKCJVbmV4cGVjdGVkbHkgY29t
cGxldGVkOiAje3VuZXhwZWN0ZWRseUNvbXBsZXRlZH0iKQorICAgICAgICBleHBlY3RlZEJ1dE5v
dENvbXBsZXRlZCA9IChleHBlY3RlZCAtIGNvbXBsZXRlZCkuY29sbGVjdCB7IHxwbGFufAorICAg
ICAgICAgICAgIiMje3BsYW4uaW5kZXh9OiAje3N0YXR1c01hcFtwbGFuLmluZGV4XX0iCisgICAg
ICAgIH0uam9pbigiIHwgIikKKyAgICAgICAgJHN0ZGVyci5wdXRzKCJFeHBlY3RlZCBidXQgbm90
IGNvbXBsZXRlZDogI3tleHBlY3RlZEJ1dE5vdENvbXBsZXRlZH0iKQorICAgICAgICByYWlzZSAi
bWlzbWF0Y2giCisgICAgZW5kCitlbmQKKworbW9kdWxlIFRlc3RSZXN1bHRFdmFsdWF0b3JTZWxm
VGVzdHMKKyAgICBkZWYgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5zZWxmVGVzdFRlc3RS
ZXN1bHRFdmFsdWF0b3IKKyAgICAgICAgcnVubGlzdCA9IFtdCisgICAgICAgIHN0YXR1c01hcCA9
IHt9CisgICAgICAgIGV4cGVjdGVkUGFzcyA9IFNldC5uZXcKKyAgICAgICAgZXhwZWN0ZWRGYWls
ID0gU2V0Lm5ldworICAgICAgICB0YyA9IFN0cnVjdC5uZXcoOnN0YXR1c2VzLCA6ZXhwZWN0ZWRQ
YXNzKQorICAgICAgICBbCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCB0
cnVlKSwKKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTU10sIHRydWUpLAorICAg
ICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9QQVNTLCBTVEFUVVNfRklMRV9QQVNTXSwgdHJ1
ZSksCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX0ZB
SUxdLCB0cnVlKSwKKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfRkFJTF0sIGZhbHNl
KSwKKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfRkFJTCwgU1RBVFVTX0ZJTEVfRkFJ
TF0sIGZhbHNlKSwKKyAgICAgICAgXS5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICAgICAgfHRl
c3QsIHRlc3RJbmRleHwKKyAgICAgICAgICAgIHBsYW4gPSBCYXNlUGxhbi5tb2NrKCJmIiwgInQj
e3Rlc3RJbmRleH0iKQorICAgICAgICAgICAgcnVubGlzdCA8PCBwbGFuCisgICAgICAgICAgICBz
dGF0dXNNYXBbcGxhbi5pbmRleF0gPSB0ZXN0LnN0YXR1c2VzCisgICAgICAgICAgICBpZiB0ZXN0
LmV4cGVjdGVkUGFzcworICAgICAgICAgICAgICAgIGV4cGVjdGVkUGFzcy5hZGQocGxhbikKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBleHBlY3RlZEZhaWwuYWRkKHBsYW4pCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0
RXZhbHVhdG9yU2ltcGxlLm5ldyhydW5saXN0LCBzdGF0dXNNYXApCisgICAgICAgIGV2YWx1YXRv
ci52aXNpdCEKKworICAgICAgICBpZiBleHBlY3RlZFBhc3MgIT0gZXZhbHVhdG9yLnRlc3RzUGFz
c2VkCisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoImV4cGVjdGVkUGFzczogI3tleHBlY3RlZFBh
c3N9IikKKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiUGFzc2VkOiAje2V2YWx1YXRvci50ZXN0
c1Bhc3NlZH0iKQorICAgICAgICAgICAgcmFpc2UgImV4cGVjdGVkUGFzcyBtaXNtYXRjaCIKKyAg
ICAgICAgZW5kCisgICAgICAgIGlmIGV4cGVjdGVkRmFpbCAhPSBldmFsdWF0b3IudGVzdHNGYWls
ZWQKKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiZXhwZWN0ZWRGYWlsOiAje2V4cGVjdGVkRmFp
bH0iKQorICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJGYWlsZWQ6ICN7ZXZhbHVhdG9yLnRlc3Rz
RmFpbGVkfSIpCisgICAgICAgICAgICByYWlzZSAiZXhwZWN0ZWRGYWlsIG1pc21hdGNoIgorICAg
ICAgICBlbmQKKyAgICBlbmQKKworICAgIGRlZiBnZXRDb21wbGV0ZWRUZXN0c0Zyb21TdGF0dXNN
YXAocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0RXZh
bHVhdG9yU2ltcGxlLm5ldyhydW5saXN0LCBzdGF0dXNNYXApCisgICAgICAgIGV2YWx1YXRvci52
aXNpdCEKKyAgICAgICAgZXZhbHVhdG9yLmNvbXBsZXRlZAorICAgIGVuZAorCisgICAgZGVmIFRl
c3RSZXN1bHRFdmFsdWF0b3JTZWxmVGVzdHMuc2VsZlRlc3RHZXRDb21wbGV0ZWRUZXN0c0Zyb21T
dGF0dXNNYXAKKyAgICAgICAgcnVubGlzdCA9IFtdCisgICAgICAgIGV4cGVjdENvbXBsZXRlZCA9
IFNldC5uZXcKKyAgICAgICAgc3RhdHVzTWFwID0ge30KKyAgICAgICAgdGMgPSBTdHJ1Y3QubmV3
KDpzdGF0dXNlcywgOmZsYWt5LCA6c2hvdWxkQ291bnRBc0NvbXBsZXRlZCkKKyAgICAgICAgWwor
ICAgICAgICAgICAgIyBObyByZXN1bHRzID0+IG5vdCBjb21wbGV0ZWQKKyAgICAgICAgICAgIHRj
Lm5ldyhuaWwsIG5pbCwgZmFsc2UpLAorICAgICAgICAgICAgdGMubmV3KG5pbCwgRmxha3kubmV3
KDAuNiwgMiksIGZhbHNlKSwKKworICAgICAgICAgICAgIyBQYXNzZWQvZmFpbGVkIGFuZCBub3Qg
Zmxha3kgLT4gY29tcGxldGVkCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1Nd
LCBuaWwsIHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMXSwgbmls
LCB0cnVlKSwKKworICAgICAgICAgICAgIyBJZiBpdCBoYXMgbXVsdGlwbGUgcmVzdWx0cyBhbmQg
aXMgbm90IGEgZmxha3ksIHRoYXQgbWVhbnMgaXQKKyAgICAgICAgICAgICMgd2FzIHJlLXJ1biBi
ZWNhdXNlIG9mIGluZnJhc3RydWN0dXJlIGlzc3Vlcy4gQ291bnRzIGFzCisgICAgICAgICAgICAj
IGNvbXBsZXRlZCByZWdhcmRsZXNzIG9mIHRoZSBhY3R1YWwgcmVzdWx0cy4KKyAgICAgICAgICAg
IHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTUywgU1RBVFVTX0ZJTEVfUEFTU10sIG5pbCwgdHJ1ZSks
CisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX0ZBSUxd
LCBuaWwsIHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMLCBTVEFU
VVNfRklMRV9GQUlMXSwgbmlsLCB0cnVlKSwKKworICAgICAgICAgICAgIyBOb3QgY29tcGxldGVk
OiB3ZSBoYXZlIG9uZSBydW4gcmVtYWluaW5nIGFuZCB0aGlzIGNvdWxkIGZsaXAKKyAgICAgICAg
ICAgICMgdGhlIHBlcmNlbnRhZ2UuCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BB
U1NdLCBGbGFreS5uZXcoMC42LCAyKSwgZmFsc2UpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFU
VVNfRklMRV9GQUlMXSwgRmxha3kubmV3KDAuNCwgMiksIGZhbHNlKSwKKworICAgICAgICAgICAg
IyBFdmVuIGlmIHRoZSBsYXN0IG9uZSBmYWlscyB3ZSdyZSBzdGlsbCBnb25uYSBiZSBhYm92ZQor
ICAgICAgICAgICAgIyAocmVzcGVjdGl2ZWx5IGJlbG93KSB0aGUgcGFzcyBwZXJjZW50YWdlLgor
ICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9QQVNTLCBTVEFUVVNfRklMRV9QQVNTXSwg
Rmxha3kubmV3KDAuNSwgMyksIHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklM
RV9GQUlMLCBTVEFUVVNfRklMRV9GQUlMXSwgRmxha3kubmV3KDAuNSwgMyksIHRydWUpLAorICAg
ICAgICBdLmVhY2hfd2l0aF9pbmRleCB7CisgICAgICAgICAgICB8dGVzdCwgdGVzdEluZGV4fAor
ICAgICAgICAgICAgcGxhbiA9IEJhc2VQbGFuLm1vY2soImYiLCAidCN7dGVzdEluZGV4fSIsIHRl
c3QuZmxha3kpCisgICAgICAgICAgICBydW5saXN0IDw8IHBsYW4KKyAgICAgICAgICAgIGlmIG5v
dCB0ZXN0LnN0YXR1c2VzLm5pbD8KKyAgICAgICAgICAgICAgICBzdGF0dXNNYXBbcGxhbi5pbmRl
eF0gPSB0ZXN0LnN0YXR1c2VzCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIHRlc3Qu
c2hvdWxkQ291bnRBc0NvbXBsZXRlZAorICAgICAgICAgICAgICAgIGV4cGVjdENvbXBsZXRlZC5h
ZGQocGxhbikKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIGV2YWx1YXRvciA9
IFRlc3RSZXN1bHRFdmFsdWF0b3JTaW1wbGUubmV3KHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAg
ICAgZXZhbHVhdG9yLnZpc2l0IQorCisgICAgICAgIHZlcmlmeUNvbXBsZXRlZFRlc3RzTWF0Y2hF
eHBlY3RlZChzdGF0dXNNYXAsIGV2YWx1YXRvci5jb21wbGV0ZWQsIGV4cGVjdENvbXBsZXRlZCkK
KyAgICBlbmQKKyAgICBkZWYgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5ydW4KKyAgICAg
ICAgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5zZWxmVGVzdFRlc3RSZXN1bHRFdmFsdWF0
b3IKKyAgICAgICAgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5zZWxmVGVzdEdldENvbXBs
ZXRlZFRlc3RzRnJvbVN0YXR1c01hcAorICAgIGVuZAorZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443676</attachid>
            <date>2021-11-09 03:37:20 -0800</date>
            <delta_ts>2021-11-21 03:03:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232529-20211109123717.patch</filename>
            <type>text/plain</type>
            <size>123094</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGZkNjUwZTg4MTY3N2JhZjFkNGYwOGI5MDczOGRlMDll
MDlmYTRkZC4uY2MyNjliYmEyNjRiMTA4MjUyOTc1ZjVkNTVjZWY0MjNkNzllZWIzNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3
IEBACisyMDIxLTExLTA5ICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIE1vdmUgZGV0ZWN0aW9uIG9mIGZsYWt5IEpTQyB0ZXN0cyB0byBydW4t
anNjLXN0cmVzcy10ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMyNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ3VycmVudGx5LCBmbGFreSBkZXRlY3Rpb24gaGFwcGVucyBieQorICAgICAgICBS
ZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgdGhhdCB3
ZSBlbmQgdXAKKyAgICAgICAgcmVydW5uaW5nIGFsbCBKU0MgdGVzdHMgd2hlbiB0aGVyZSdzIGV2
ZW4gYSBzaW5nbGUgZmFpbHVyZS4gRXZlbgorICAgICAgICB3b3JzZSwgd2hlbiB0aGUgdHJlZSBp
cyBicm9rZW4gKGFzIHNvbWV0aW1lcyBoYXBwZW5zIG9uIEFSTTMyIGFuZAorICAgICAgICBNSVBT
KSB3ZSBlbmQgdXAKKworICAgICAgICAxLiBydW5uaW5nIHRoZSB0ZXN0cyBvbmNlICh0aGV5IGZh
aWwpCisgICAgICAgIDIuIHJ1bm5pbmcgYWxsIHRlc3RzIGFnYWluCisgICAgICAgIDMuIHJ1bm5p
bmcgYWxsIHRlc3RzIGFnYWluIHdpdGhvdXQgdGhlIHBhdGNoCisKKyAgICAgICAgVGhpcyBtZWFu
cyB0aGUgcXVldWUgc2xvd3MgZG93biBhIGxvdCwgc2luY2UgaXQgcnVucyBhbGwgSlNDCisgICAg
ICAgIHN0cmVzcyB0ZXN0cyAzIHRpbWVzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gZWxpbWluYXRlIHN0ZXAgMiwgd2hpbGUgYWxzbyBiZWluZyBtb3JlCisgICAgICAgIHJlbGlh
YmxlIGFib3V0IGhhbmRsaW5nIGZsYWt5IHRlc3RzLiBTaW5jZSB3ZSBubyBsb25nZXIgbmVlZCB0
bworICAgICAgICByZXJ1biB0aGUgd2hvbGUgdGVzdCBzdWl0ZSwgd2UgY2FuIHNwZW5kIG1vcmUg
Q1BVIHRpbWUgb24KKyAgICAgICAgaWRlbnRpZnlpbmcgdGVzdHMgdGhhdCBtaWdodCBiZSBmbGFr
eS4gVGhlIHVzZXIgY2FuIHBhc3MgaW4KKyAgICAgICAgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5
PXBhc3NQZXJjZW50YWdlLG1heFRyaWVzLG1heEZhaWxpbmcuIElmCisgICAgICAgIGxlc3MgdGhh
biBtYXhGYWlsaW5nIHRlc3RzIGZhaWxlZCwgd2UgcnVuIHRoZW0gYWdhaW4gKHVwIHRvCisgICAg
ICAgIG1heFRyaWVzKSB1bnRpbCB3ZSBjYW4gdGVsbCB3aGV0aGVyIHRoZXkgcGFzcyBtb3JlIHRo
YW4KKyAgICAgICAgcGFzc1BlcmNlbnRhZ2Ugb2YgdGhlIHRpbWUuIFRoaXMgc2hvdWxkIHJlc3Vs
dCBpbiBsZXNzIGZhbHNlCisgICAgICAgIHBvc2l0aXZlcyBjb21wYXJlZCB0byBSZVJ1bkphdmFT
Y3JpcHRDb3JlVGVzdHMsIGFzIHdlJ2xsIG5vIGxvbmdlcgorICAgICAgICBkZWNsYXJlIGEgZmxh
a3kgdGVzdCBhIGZhaWx1cmUgaWYgaXQgaGFwcGVucyB0byBmYWlsIHR3byB0aW1lcyBpbgorICAg
ICAgICBhIHJvdy4gSW4gb3JkZXIgdG8gcmVtb3ZlIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cywg
dGhlIHBhdGNoCisgICAgICAgIHVuY29uZGl0aW9uYWxseSBlbmFibGVzIC0tdHJlYXQtZmFpbGlu
Zy1hcy1mbGFreSBieSBkZWZhdWx0IGluIHRoZQorICAgICAgICBKU0MgRVdTIHF1ZXVlcy4KKwor
ICAgICAgICBJbXBsZW1lbnRhdGlvbi13aXNlLCB0aGUgcGF0Y2ggZ2VuZXJhbGl6ZXMgdGhlIGV4
aXN0aW5nIHJldHJ5IGxvb3AgaW4KKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgKGZvciBk
ZWFsaW5nIHdpdGggZmxha3kgcmVtb3RlIGhvc3RzKSB0byAoYSkgd29yaworICAgICAgICB3aXRo
IGFueSBydW5uZXIgYW5kIChiKSBhbHNvIHJldHJ5IGZsYWt5IHRlc3RzLiBBcyBmbGFreSBoYW5k
bGluZyBpcworICAgICAgICBpbXByYWN0aWNhbCB0byB0ZXN0IG1hbnVhbGx5LCBpdCBhbHNvIGFi
c3RyYWN0cy1vdXQgdGhlIHJldHJ5IGxvZ2ljIHNvCisgICAgICAgIHRoYXQgd2UgY2FuIHRlc3Qg
d2l0aCBwcmVkZXRlcm1pbmVkIHJlc3VsdHMuIFRoaXMgbWVhbnMgd2UgbmVlZCB0bworICAgICAg
ICBlLmcuIHBhc3MgdGhlIHJ1bmxpc3QgYXJvdW5kIGluc3RlYWQgb2YgdHJlYXRpbmcgaXQgYXMg
YSBnbG9iYWwsCisgICAgICAgIGNhcHR1cmluZyB0aGUgbWFpbiBsb2dpYyBpbiBjbGFzc2VzIGFu
ZCBoYXZpbmcgYSBzdWJjbGFzcyBwcm92aWRlCisgICAgICAgIG1ldGhvZHMgdG8gYmUgY2FsbGVk
IGJhY2sgYW5kIHNvIG9uLiBUaGUgcGF0Y2ggZG9lcyBub3Qgc2h5IGF3YXkgZnJvbQorICAgICAg
ICByZWZhY3RvcmluZyBjb2RlIHdoZW4gaXQgbWFrZXMgc2Vuc2UgYnV0IGFsc28gZG9lc24ndCBn
byBvdXQgb2YgaXRzCisgICAgICAgIHdheSB0byByZWZhY3RvciAoZS5nLiB0aGVyZSdzIHN0aWxs
IGEgbG90IG9mIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlCisgICAgICAgIGRlZmF1bHQgYW5kIHJ1
Ynkgd3JpdGVycykuCisKKyAgICAgICAgRG93bnNpZGVzOiB3ZSBjYW4gbm8gbG9uZ2VyIGRldGVj
dCBmbGFraW5lc3MgaW4gdGhlIGJpbmFyeSB0ZXN0cworICAgICAgICAodGVzdGFpciwgdGVzdGIz
LCAuLi4pLiBIb3dldmVyLCBJJ20gbm90IGF3YXJlIG9mIGFueSBpbnN0YW5jZSBvZgorICAgICAg
ICBmbGFraW5lc3MgaW4gdGhvc2UgdGVzdHMuIFRoZSByZXRyeSBsb29wIGlzIG5vdyBiZWluZyB1
c2VkIGZvciBhbGwKKyAgICAgICAgcnVubmVycywgd2hpY2ggbWVhbnMgdGhlIHJlc3VsdHMgYW5h
bHlzaXMgcGF0aCBmb3IgZS5nLiB0aGUgbWFrZQorICAgICAgICBydW5uZXIgaXMgbm93IGEgYml0
IG1vcmUgY29tcGxpY2F0ZWQuIERldGVjdGluZyBmbGFreSB0ZXN0cyBuZWVkcworICAgICAgICBj
b2RlIHNvbWV3aGVyZSwgYnV0IHRoaXMgbW92ZXMgdGhlIGRldGVjdGlvbiBjb2RlIGJlZm9yZSB0
aGUKKyAgICAgICAgcmVzdWx0IHJlcG9ydGluZywgc28gaXMgYSBiaXQgcmlza2llci4gVGhlIHNl
bGYgdGVzdHMgc2hvdWxkCisgICAgICAgIGNvdW50ZXJiYWxhbmNlIHRoaXMuCisKKyAgICAgICAg
KiBDSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5OgorICAgICAgICBLaWxsIFJlUnVuSmF2YVNj
cmlwdENvcmVUZXN0cyBhbmQgZW5hYmxlIC0tdHJlYXQtZmFpbGluZy1hcy1mbGFreS4KKyAgICAg
ICAgRGVmYXVsdHMgdG8gNjAlIHBhc3MgcGVyY2VudGFnZSwgMTAgbWF4VHJpZXMgYW5kIGEgbGlt
aXQgb2YgMjAwCisgICAgICAgIGZhaWxpbmcgdGVzdHMuCisgICAgICAgIChSdW5KYXZhU2NyaXB0
Q29yZVRlc3RzKToKKyAgICAgICAgKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuX19pbml0X18pOgor
ICAgICAgICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5zdGFydCk6CisgICAgICAgIChSdW5KYXZh
U2NyaXB0Q29yZVRlc3RzLmV2YWx1YXRlQ29tbWFuZCk6CisgICAgICAgIChSdW5KYXZhU2NyaXB0
Q29yZVRlc3RzLmNvbW1hbmRDb21wbGV0ZSk6CisgICAgICAgIChSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzLmdldFJlc3VsdFN1bW1hcnkpOgorICAgICAgICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5f
YWRkVG9Mb2cpOgorICAgICAgICAoQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cy5zdGFydCk6CisgICAg
ICAgIChSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMpOiBEZWxldGVkLgorICAgICAgICAoUmVSdW5K
YXZhU2NyaXB0Q29yZVRlc3RzLmV2YWx1YXRlQ29tbWFuZCk6IERlbGV0ZWQuCisgICAgICAgICog
Q0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwc191bml0dGVzdC5weToKKyAgICAgICAgVXBkYXRlIHRv
IG1hdGNoIHRoZSBjaGFuZ2VzIGluIHN0ZXBzLnB5LiBTb21lIHRlc3RjYXNlcyBubyBsb25nZXIK
KyAgICAgICAgYXBwbHkuCisgICAgICAgICogU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVy
cy9zaGVsbC1ydW5uZXIuc2g6CisgICAgICAgIERvbid0IGRlZHVjZSB0aGUgdGVzdCBsaXN0IG1h
bnVhbGx5LCBleHBlY3QgaXQgYXMgYW4gYXJndW1lbnQgaW5zdGVhZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0czoKKyAgICAgICAgUHJvcGFnYXRlIGluZm8gb24g
dGVzdCBmbGFraW5lc3MuCisgICAgICAgIChydW5KU0NTdHJlc3NUZXN0cyk6CisgICAgICAgICog
U2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKyAgICAgICAgUmVmYWN0b3IgdGhlIGV4ZWN1
dGlvbiBsb2dpYyB0byB1c2UgdGhlIGFic3RyYWN0ZWQtb3V0IGNvZGUgaW4KKyAgICAgICAgZXhl
Y3V0b3IucmIuIFVzZSB0aGUgcmV0cnkgbG9vcCBvbiBldmVyeSBydW5uZXIuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVmYXVsdC5yYjoKKyAg
ICAgICAgVXBkYXRlIHRoZSB0ZXN0LXdyaXRlciBmaWxlcyBmb3IgdGhlIGNoYW5nZXMgdG8gcnVu
LWpzYy1zdHJlc3MtdGVzdHMuCisgICAgICAgIE1vdmUgcHJlcGFyZUZvb1J1bm5lciBhbmQgdGVz
dFJ1bm5lckNvbW1hbmQgdG8gYSBjbGFzcyBzbyB0aGF0IHdlIGNhbgorICAgICAgICBrZWVwIHN0
YXRlIChmb3IgdGhlIG5ldyBhcmd1bWVudCB0byB0aGUgc2hlbGwgcnVubmVyKS4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5y
YjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1y
dWJ5LnJiOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvZXhl
Y3V0b3IucmI6IEFkZGVkLgorICAgICAgICBJbXBsZW1lbnQgYSBnZW5lcmljIHJldHJ5IGxvb3Ag
YW5kIGRlZmluZSBhbiBhcnJheSBvZiB2aXJ0dWFsCisgICAgICAgIHRlc3RzICh1c2luZyBwcmVk
ZWZpbmVkIHRlc3QgcmVzdWx0cyBmb3IgZWFjaCBpdGVyYXRpb24pLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9yLnJiOiBB
ZGRlZC4KKyAgICAgICAgRW5jYXBzdWxhdGUgdGhlIGxvZ2ljIG9uIHdoZXRoZXIgYSB0ZXN0IGhh
cyBwYXNzZWQgb3Igbm90CisgICAgICAgIChEaWQgd2UgZ2V0IGFueSByZXN1bHRzPyBXZXJlIHRo
b3NlIHJlc3VsdHMgZW5vdWdoIHRvIGRlY2xhcmUgYQorICAgICAgICBmbGFreS9ub24tZmxha3kg
dGVzdCBhIHBhc3M/KSBhbmQgYWRkIGEgbnVtYmVyIG9mIHRlc3RzLgorCiAyMDIxLTEwLTI1ICBS
eWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBkZWZh
dWx0IGlPUyBzaW11bGF0b3IgdG8gb25lIHdpdGggYSBsYXJnZXIgc2NyZWVuIHNpemUKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHkgYi9Ub29scy9DSVN1cHBv
cnQvZXdzLWJ1aWxkL3N0ZXBzLnB5CmluZGV4IGM1Y2MyNGVhN2RjZTE3ZWE5OTU1ZjQ3MTdmNWNk
Y2M2MjBmYzY5NjMuLmJmMDFmNjY3MTA0YjUyZjBiYzU5YmRiNmY1YTU0YzYxMGMwMGE2ZTMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHkKKysrIGIvVG9vbHMv
Q0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weQpAQCAtMTgzNCw2ICsxODM0LDggQEAgY2xhc3Mg
UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhzaGVsbC5UZXN0KToKICAgICBqc29uRmlsZU5hbWUgPSAn
anNjX3Jlc3VsdHMuanNvbicKICAgICBsb2dmaWxlcyA9IHsnanNvbic6IGpzb25GaWxlTmFtZX0K
ICAgICBjb21tYW5kID0gWydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17
MH0nLmZvcm1hdChqc29uRmlsZU5hbWUpLCBXaXRoUHJvcGVydGllcygnLS0lKGNvbmZpZ3VyYXRp
b24pcycpXQorICAgICMgV2UgcmVseSBvbiBydW4tanNjLXN0cmVzcy10ZXN0cyB0byB3ZWVkIG91
dCBhbnkgZmxha3kgdGVzdHMKKyAgICBjb21tYW5kX2V4dHJhID0gWyctLXRyZWF0LWZhaWxpbmct
YXMtZmxha3k9MC42LDEwLDIwMCddCiAgICAgcHJlZml4ID0gJ2pzY18nCiAgICAgTlVNX0ZBSUxV
UkVTX1RPX0RJU1BMQVlfSU5fU1RBVFVTID0gNQogCkBAIC0xODQxLDExICsxODQzLDEzIEBAIGNs
YXNzIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoc2hlbGwuVGVzdCk6CiAgICAgICAgIHNoZWxsLlRl
c3QuX19pbml0X18oc2VsZiwgbG9nRW52aXJvbj1GYWxzZSwgc2lndGVybVRpbWU9MTAsICoqa3dh
cmdzKQogICAgICAgICBzZWxmLmJpbmFyeUZhaWx1cmVzID0gW10KICAgICAgICAgc2VsZi5zdHJl
c3NUZXN0RmFpbHVyZXMgPSBbXQorICAgICAgICBzZWxmLmZsYWt5ID0ge30KIAogICAgIGRlZiBz
dGFydChzZWxmKToKICAgICAgICAgc2VsZi5sb2dfb2JzZXJ2ZXJfanNvbiA9IGxvZ29ic2VydmVy
LkJ1ZmZlckxvZ09ic2VydmVyKCkKICAgICAgICAgc2VsZi5hZGRMb2dPYnNlcnZlcignanNvbics
IHNlbGYubG9nX29ic2VydmVyX2pzb24pCiAKKwogICAgICAgICAjIGFkZCByZW1vdGVzIGNvbmZp
Z3VyYXRpb24gZmlsZSBwYXRoIHRvIHRoZSBjb21tYW5kIGxpbmUgaWYgbmVlZGVkCiAgICAgICAg
IHJlbW90ZXNmaWxlID0gc2VsZi5nZXRQcm9wZXJ0eSgncmVtb3RlcycsIEZhbHNlKQogICAgICAg
ICBpZiByZW1vdGVzZmlsZToKQEAgLTE4NjIsNiArMTg2Niw3IEBAIGNsYXNzIFJ1bkphdmFTY3Jp
cHRDb3JlVGVzdHMoc2hlbGwuVGVzdCk6CiAgICAgICAgICAgICBzZWxmLmNvbW1hbmQuZXh0ZW5k
KFsnLS1tZW1vcnktbGltaXRlZCcsICctLXZlcmJvc2UnXSkKIAogICAgICAgICBhcHBlbmRDdXN0
b21CdWlsZEZsYWdzKHNlbGYsIHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJyksIHNlbGYuZ2V0
UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScpKQorICAgICAgICBzZWxmLmNvbW1hbmQuZXh0ZW5kKHNl
bGYuY29tbWFuZF9leHRyYSkKICAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikK
IAogICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKQEAgLTE4NzIsNyArMTg3Nywx
NCBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAg
ICAgc2VsZi5idWlsZC5yZXN1bHRzID0gU1VDQ0VTUwogICAgICAgICAgICAgc2VsZi5idWlsZC5i
dWlsZEZpbmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtWYWxpZGF0ZVBhdGNoKHZl
cmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksIEtpbGxPbGRQcm9jZXNzZXMoKSwg
UmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKCldKQorICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgncGF0Y2hGYWlsZWRUZXN0cycsIFRydWUpCisgICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0
ZXBzQWZ0ZXJDdXJyZW50U3RlcChbVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJp
ZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGlsZUpTQ1dpdGhvdXRQYXRjaCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRj
aCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2lsbE9sZFByb2Nlc3NlcygpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuSlNDVGVzdHNX
aXRob3V0UGF0Y2goKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoKV0pCiAgICAgICAgIHJldHVybiByYwogCiAg
ICAgZGVmIGNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpOgpAQCAtMTg5NSwxMCArMTkwNywxMiBA
QCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAgICAg
c2VsZi5iaW5hcnlGYWlsdXJlcy5hcHBlbmQoJ3Rlc3RkZmcnKQogICAgICAgICBpZiBqc2NfcmVz
dWx0cy5nZXQoJ2FsbEFwaVRlc3RzUGFzc2VkJykgaXMgRmFsc2U6CiAgICAgICAgICAgICBzZWxm
LmJpbmFyeUZhaWx1cmVzLmFwcGVuZCgndGVzdGFwaScpCi0KICAgICAgICAgc2VsZi5zdHJlc3NU
ZXN0RmFpbHVyZXMgPSBqc2NfcmVzdWx0cy5nZXQoJ3N0cmVzc1Rlc3RGYWlsdXJlcycpCiAgICAg
ICAgIGlmIHNlbGYuc3RyZXNzVGVzdEZhaWx1cmVzOgogICAgICAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eShzZWxmLnByZWZpeCArICdzdHJlc3NfdGVzdF9mYWlsdXJlcycsIHNlbGYuc3RyZXNzVGVz
dEZhaWx1cmVzKQorICAgICAgICBzZWxmLmZsYWt5ID0ganNjX3Jlc3VsdHMuZ2V0KCdmbGFreUFu
ZFBhc3NlZCcpCisgICAgICAgIGlmIHNlbGYuZmxha3k6CisgICAgICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KHNlbGYucHJlZml4ICsgJ2ZsYWt5X2FuZF9wYXNzZWQnLCBzZWxmLmZsYWt5KQogICAg
ICAgICBpZiBzZWxmLmJpbmFyeUZhaWx1cmVzOgogICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eShzZWxmLnByZWZpeCArICdiaW5hcnlfZmFpbHVyZXMnLCBzZWxmLmJpbmFyeUZhaWx1cmVzKQog
CkBAIC0xOTE5LDYgKzE5MzMsOCBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxs
LlRlc3QpOgogICAgICAgICAgICAgICAgIHN0YXR1cyArPSAnSlNDIHRlc3QgYmluYXJ5IGZhaWx1
cmV7fToge30nLmZvcm1hdChwbHVyYWxTdWZmaXgsICcsICcuam9pbihzZWxmLmJpbmFyeUZhaWx1
cmVzKSkKIAogICAgICAgICAgICAgcmV0dXJuIHsnc3RlcCc6IHN0YXR1c30KKyAgICAgICAgZWxp
ZiBzZWxmLnJlc3VsdHMgPT0gU1VDQ0VTUyBhbmQgc2VsZi5mbGFreToKKyAgICAgICAgICAgIHJl
dHVybiB7J3N0ZXAnOiAiUGFzc2VkIEpTQyB0ZXN0cyAoJWQgZmxha3kpIiAlIGxlbihzZWxmLmZs
YWt5KX0KIAogICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5nZXRSZXN1bHRTdW1tYXJ5KHNlbGYp
CiAKQEAgLTE5MzEsMzUgKzE5NDcsNiBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNo
ZWxsLlRlc3QpOgogICAgICAgICBsb2cuYWRkU3Rkb3V0KG1lc3NhZ2UpCiAKIAotY2xhc3MgUmVS
dW5KYXZhU2NyaXB0Q29yZVRlc3RzKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMpOgotICAgIG5hbWUg
PSAnanNjb3JlLXRlc3QtcmVydW4nCi0gICAgcHJlZml4ID0gJ2pzY19yZXJ1bl8nCi0KLSAgICBk
ZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJjID0gc2hlbGwuVGVzdC5l
dmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKQotICAgICAgICBmaXJzdF9ydW5fZmFpbHVyZXMgPSBz
ZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pICsgc2Vs
Zi5nZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgc2Vjb25k
X3J1bl9mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rl
c3RfZmFpbHVyZXMnLCBbXSkgKyBzZWxmLmdldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2Zh
aWx1cmVzJywgW10pKQotICAgICAgICBmbGFreV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9mYWlsdXJl
cy51bmlvbihzZWNvbmRfcnVuX2ZhaWx1cmVzKSAtIGZpcnN0X3J1bl9mYWlsdXJlcy5pbnRlcnNl
Y3Rpb24oc2Vjb25kX3J1bl9mYWlsdXJlcykKLSAgICAgICAgZmxha3lfZmFpbHVyZXNfc3RyaW5n
ID0gJywgJy5qb2luKHNvcnRlZChmbGFreV9mYWlsdXJlcykpCi0KLSAgICAgICAgaWYgcmMgPT0g
U1VDQ0VTUyBvciByYyA9PSBXQVJOSU5HUzoKLSAgICAgICAgICAgIHBsdXJhbFN1ZmZpeCA9ICdz
JyBpZiBsZW4oZmxha3lfZmFpbHVyZXMpID4gMSBlbHNlICcnCi0gICAgICAgICAgICBtZXNzYWdl
ID0gJ0ZvdW5kIGZsYWt5IHRlc3R7fToge30nLmZvcm1hdChwbHVyYWxTdWZmaXgsIGZsYWt5X2Zh
aWx1cmVzX3N0cmluZykKLSAgICAgICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVzc2Fn
ZQotICAgICAgICAgICAgc2VsZi5idWlsZC5yZXN1bHRzID0gU1VDQ0VTUwotICAgICAgICAgICAg
c2VsZi5idWlsZC5idWlsZEZpbmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoRmFpbGVkVGVzdHMnLCBUcnVl
KQotICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW1VuQXBw
bHlQYXRjaElmUmVxdWlyZWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxz
PUZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENvbXBpbGVKU0NXaXRob3V0UGF0Y2goKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBh
ZGRVUkxzPUZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEtpbGxPbGRQcm9jZXNzZXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1
bHRzKCldKQotICAgICAgICByZXR1cm4gcmMKLQotCiBjbGFzcyBSdW5KU0NUZXN0c1dpdGhvdXRQ
YXRjaChSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKToKICAgICBuYW1lID0gJ2pzY29yZS10ZXN0LXdp
dGhvdXQtcGF0Y2gnCiAgICAgcHJlZml4ID0gJ2pzY19jbGVhbl90cmVlXycKQEAgLTE5NzcsMzQg
KzE5NjQsMjkgQEAgY2xhc3MgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRT
dGVwKToKICAgICBOVU1fRkFJTFVSRVNfVE9fRElTUExBWSA9IDEwCiAKICAgICBkZWYgc3RhcnQo
c2VsZik6Ci0gICAgICAgIGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQ
cm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pKQotICAgICAgICBmaXJzdF9y
dW5fYmluYXJ5X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFp
bHVyZXMnLCBbXSkpCi0gICAgICAgIHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzID0gc2V0KHNl
bGYuZ2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSkKLSAg
ICAgICAgc2Vjb25kX3J1bl9iaW5hcnlfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgn
anNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKKyAgICAgICAgc3RyZXNzX2ZhaWx1cmVz
X3dpdGhfcGF0Y2ggPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1
cmVzJywgW10pKQorICAgICAgICBiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCA9IHNldChzZWxm
LmdldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgW10pKQogICAgICAgICBjbGVhbl90
cmVlX3N0cmVzc19mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJl
ZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSkKICAgICAgICAgY2xlYW5fdHJlZV9iaW5hcnlf
ZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfYmluYXJ5X2Zh
aWx1cmVzJywgW10pKQogICAgICAgICBjbGVhbl90cmVlX2ZhaWx1cmVzID0gbGlzdChjbGVhbl90
cmVlX2JpbmFyeV9mYWlsdXJlcykgKyBsaXN0KGNsZWFuX3RyZWVfc3RyZXNzX2ZhaWx1cmVzKQog
ICAgICAgICBjbGVhbl90cmVlX2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihjbGVhbl90cmVl
X2ZhaWx1cmVzWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXSkKIAotICAgICAgICBzdHJl
c3NfZmFpbHVyZXNfd2l0aF9wYXRjaCA9IGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMuaW50ZXJz
ZWN0aW9uKHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKQotICAgICAgICBiaW5hcnlfZmFpbHVy
ZXNfd2l0aF9wYXRjaCA9IGZpcnN0X3J1bl9iaW5hcnlfZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNl
Y29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzKQotCi0gICAgICAgIGZsYWt5X3N0cmVzc19mYWlsdXJl
cyA9IGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMudW5pb24oc2Vjb25kX3J1bl9zdHJlc3NfZmFp
bHVyZXMpIC0gZmlyc3RfcnVuX3N0cmVzc19mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1
bl9zdHJlc3NfZmFpbHVyZXMpCi0gICAgICAgIGZsYWt5X2JpbmFyeV9mYWlsdXJlcyA9IGZpcnN0
X3J1bl9iaW5hcnlfZmFpbHVyZXMudW5pb24oc2Vjb25kX3J1bl9iaW5hcnlfZmFpbHVyZXMpIC0g
Zmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1bl9iaW5hcnlf
ZmFpbHVyZXMpCi0gICAgICAgIGZsYWt5X2ZhaWx1cmVzID0gc29ydGVkKGxpc3QoZmxha3lfYmlu
YXJ5X2ZhaWx1cmVzKSArIGxpc3QoZmxha3lfc3RyZXNzX2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZB
SUxVUkVTX1RPX0RJU1BMQVldCi0gICAgICAgIGZsYWt5X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcu
am9pbihmbGFreV9mYWlsdXJlcykKKyAgICAgICAgZmxha3lfc3RyZXNzX2ZhaWx1cmVzX3dpdGhf
cGF0Y2ggPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX2ZsYWt5X2FuZF9wYXNzZWQnLCB7fSku
a2V5cygpKQorICAgICAgICBjbGVhbl90cmVlX2ZsYWt5X3N0cmVzc19mYWlsdXJlcyA9IHNldChz
ZWxmLmdldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9mbGFreV9hbmRfcGFzc2VkJywge30pLmtl
eXMoKSkKKyAgICAgICAgZmxha3lfc3RyZXNzX2ZhaWx1cmVzID0gc29ydGVkKGxpc3QoZmxha3lf
c3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2gpICsgbGlzdChjbGVhbl90cmVlX2ZsYWt5X3N0cmVz
c19mYWlsdXJlcykpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXQorICAgICAgICBmbGFr
eV9mYWlsdXJlc19zdHJpbmcgPSAnLCAnLmpvaW4oZmxha3lfc3RyZXNzX2ZhaWx1cmVzKQogCiAg
ICAgICAgIG5ld19zdHJlc3NfZmFpbHVyZXMgPSBzdHJlc3NfZmFpbHVyZXNfd2l0aF9wYXRjaCAt
IGNsZWFuX3RyZWVfc3RyZXNzX2ZhaWx1cmVzCiAgICAgICAgIG5ld19iaW5hcnlfZmFpbHVyZXMg
PSBiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCAtIGNsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVz
CiAgICAgICAgIHNlbGYubmV3X3N0cmVzc19mYWlsdXJlc190b19kaXNwbGF5ID0gJywgJy5qb2lu
KHNvcnRlZChsaXN0KG5ld19zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9f
RElTUExBWV0pCiAgICAgICAgIHNlbGYubmV3X2JpbmFyeV9mYWlsdXJlc190b19kaXNwbGF5ID0g
JywgJy5qb2luKHNvcnRlZChsaXN0KG5ld19iaW5hcnlfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJ
TFVSRVNfVE9fRElTUExBWV0pCiAKLSAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdc
bkZhaWx1cmVzIGluIGZpcnN0IHJ1bjoge30nLmZvcm1hdCgobGlzdChmaXJzdF9ydW5fYmluYXJ5
X2ZhaWx1cmVzKSArIGxpc3QoZmlyc3RfcnVuX3N0cmVzc19mYWlsdXJlcykpWzpzZWxmLk5VTV9G
QUlMVVJFU19UT19ESVNQTEFZXSkpCi0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAn
XG5GYWlsdXJlcyBpbiBzZWNvbmQgcnVuOiB7fScuZm9ybWF0KChsaXN0KHNlY29uZF9ydW5fYmlu
YXJ5X2ZhaWx1cmVzKSArIGxpc3Qoc2Vjb25kX3J1bl9zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5O
VU1fRkFJTFVSRVNfVE9fRElTUExBWV0pKQotICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJy
JywgJ1xuRmxha3kgVGVzdHM6IHt9Jy5mb3JtYXQoZmxha3lfZmFpbHVyZXNfc3RyaW5nKSkKKyAg
ICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZhaWx1cmVzIHdpdGggcGF0Y2g6IHt9
Jy5mb3JtYXQobGlzdChiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCkgKyBsaXN0KHN0cmVzc19m
YWlsdXJlc193aXRoX3BhdGNoKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQorICAg
ICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ1xuRmxha3kgVGVzdHMgd2l0aCBwYXRjaDog
e30nLmZvcm1hdCgnLCAnLmpvaW4oZmxha3lfc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2gpKSkK
ICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZhaWx1cmVzIG9uIGNsZWFuIHRy
ZWU6IHt9Jy5mb3JtYXQoY2xlYW5fdHJlZV9mYWlsdXJlc19zdHJpbmcpKQorICAgICAgICBzZWxm
Ll9hZGRUb0xvZygnc3RkZXJyJywgJ1xuRmxha3kgVGVzdHMgb24gY2xlYW4gdHJlZToge30nLmZv
cm1hdCgnLCAnLmpvaW4oY2xlYW5fdHJlZV9mbGFreV9zdHJlc3NfZmFpbHVyZXMpKSkKIAotICAg
ICAgICBpZiAobm90IGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMpIGFuZCAobm90IGZpcnN0X3J1
bl9iaW5hcnlfZmFpbHVyZXMpIGFuZCAobm90IHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKSBh
bmQgKG5vdCBzZWNvbmRfcnVuX2JpbmFyeV9mYWlsdXJlcyk6CisgICAgICAgIGlmIChub3Qgc3Ry
ZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2gpIGFuZCAobm90IGJpbmFyeV9mYWlsdXJlc193aXRoX3Bh
dGNoKToKICAgICAgICAgICAgICMgSWYgd2UndmUgbWFkZSBpdCBoZXJlLCB0aGVuIGpzYy10ZXN0
cyBhbmQgcmUtcnVuLWpzYy10ZXN0cyBmYWlsZWQsIHdoaWNoIG1lYW5zCiAgICAgICAgICAgICAj
IHRoZXJlIHNob3VsZCBoYXZlIGJlZW4gc29tZSB0ZXN0IGZhaWx1cmVzLiBPdGhlcndpc2UgdGhl
cmUgaXMgc29tZSB1bmV4cGVjdGVkIGlzc3VlLgogICAgICAgICAgICAgY2xlYW5fdHJlZV9ydW5f
c3RhdHVzID0gc2VsZi5nZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgRkFJTFVS
RSkKQEAgLTIwMjksOSArMjAxMSw5IEBAIGNsYXNzIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoYnVp
bGRzdGVwLkJ1aWxkU3RlcCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lbWFpbF9m
b3JfcHJlX2V4aXN0aW5nX2ZhaWx1cmUoY2xlYW5fdHJlZV9mYWlsdXJlKQogICAgICAgICAgICAg
aWYgbGVuKGNsZWFuX3RyZWVfZmFpbHVyZXMpID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExB
WToKICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICcgLi4uJwotICAgICAgICAgICAgaWYgZmxh
a3lfZmFpbHVyZXM6CisgICAgICAgICAgICBpZiBmbGFreV9zdHJlc3NfZmFpbHVyZXM6CiAgICAg
ICAgICAgICAgICAgbWVzc2FnZSArPSAnIEZvdW5kIGZsYWt5IHRlc3RzOiB7fScuZm9ybWF0KGZs
YWt5X2ZhaWx1cmVzX3N0cmluZykKLSAgICAgICAgICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBp
biBmbGFreV9mYWlsdXJlczoKKyAgICAgICAgICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBpbiBm
bGFreV9zdHJlc3NfZmFpbHVyZXM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lbWFp
bF9mb3JfZmxha3lfZmFpbHVyZShmbGFreV9mYWlsdXJlKQogICAgICAgICAgICAgc2VsZi5idWls
ZC5idWlsZEZpbmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIGRlZmVy
LnN1Y2NlZWQoTm9uZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3Rl
cHNfdW5pdHRlc3QucHkgYi9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0
LnB5CmluZGV4IGM4YzI2MmUxNTQxZDRiZjlhMWM3NTk1OWNlM2ZjY2JkODYxNTFkMGIuLmFhMzNm
N2I3YmY5ZjY1ZTdhNTk1MGExOTkzNzU1ODNjYWQ2ZmRlMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NJ
U3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvQ0lTdXBwb3J0
L2V3cy1idWlsZC9zdGVwc191bml0dGVzdC5weQpAQCAtNDgsNyArNDgsNyBAQCBmcm9tIHN0ZXBz
IGltcG9ydCAoQW5hbHl6ZUFQSVRlc3RzUmVzdWx0cywgQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1
bHRzLCBBbmFseXplSgogICAgICAgICAgICAgICAgICAgIERvd25sb2FkQnVpbHRQcm9kdWN0LCBE
b3dubG9hZEJ1aWx0UHJvZHVjdEZyb21NYXN0ZXIsIEVXU19CVUlMRF9IT1NUTkFNRSwgRXh0cmFj
dEJ1aWx0UHJvZHVjdCwgRXh0cmFjdFRlc3RSZXN1bHRzLAogICAgICAgICAgICAgICAgICAgIEZl
dGNoQnJhbmNoZXMsIEZpbmRNb2RpZmllZENoYW5nZUxvZ3MsIEZpbmRNb2RpZmllZExheW91dFRl
c3RzLCBHaXRSZXNldEhhcmQsCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbEJ1aWx0UHJvZHVj
dCwgSW5zdGFsbEd0a0RlcGVuZGVuY2llcywgSW5zdGFsbFdwZURlcGVuZGVuY2llcywKLSAgICAg
ICAgICAgICAgICAgICBLaWxsT2xkUHJvY2Vzc2VzLCBQcmludENvbmZpZ3VyYXRpb24sIFB1c2hD
b21taXRUb1dlYktpdFJlcG8sIFJlUnVuQVBJVGVzdHMsIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0
cywgUmVSdW5XZWJLaXRQZXJsVGVzdHMsCisgICAgICAgICAgICAgICAgICAgS2lsbE9sZFByb2Nl
c3NlcywgUHJpbnRDb25maWd1cmF0aW9uLCBQdXNoQ29tbWl0VG9XZWJLaXRSZXBvLCBSZVJ1bkFQ
SVRlc3RzLCBSZVJ1bldlYktpdFBlcmxUZXN0cywKICAgICAgICAgICAgICAgICAgICBSZVJ1bldl
YktpdFRlc3RzLCBSdW5BUElUZXN0cywgUnVuQVBJVGVzdHNXaXRob3V0UGF0Y2gsIFJ1bkJpbmRp
bmdzVGVzdHMsIFJ1bkJ1aWxkV2ViS2l0T3JnVW5pdFRlc3RzLAogICAgICAgICAgICAgICAgICAg
IFJ1bkJ1aWxkYm90Q2hlY2tDb25maWdGb3JCdWlsZFdlYktpdCwgUnVuQnVpbGRib3RDaGVja0Nv
bmZpZ0ZvckVXUywgUnVuRVdTVW5pdFRlc3RzLCBSdW5SZXN1bHRzZGJweVRlc3RzLAogICAgICAg
ICAgICAgICAgICAgIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMsIFJ1bkpTQ1Rlc3RzV2l0aG91dFBh
dGNoLCBSdW5XZWJLaXQxVGVzdHMsIFJ1bldlYktpdFBlcmxUZXN0cywgUnVuV2ViS2l0UHlQeXRo
b24yVGVzdHMsCkBAIC0xMzYxLDYgKzEzNjEsNyBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENv
cmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICBzZWxmLmpzY19kZmdfYWlyX2FuZF9zdHJlc3NfdGVzdF9mYWlsdXJlID0gJycneyJhbGxE
RkdUZXN0c1Bhc3NlZCI6ZmFsc2UsImFsbE1hc21UZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQjNUZXN0
c1Bhc3NlZCI6dHJ1ZSwiYWxsQWlyVGVzdHNQYXNzZWQiOmZhbHNlLCJhbGxBcGlUZXN0c1Bhc3Nl
ZCI6dHJ1ZSwic3RyZXNzVGVzdEZhaWx1cmVzIjpbInN0cmVzcy93ZWFrc2V0LWdjLmpzIl19XG4n
JycKICAgICAgICAgc2VsZi5qc2Nfc2luZ2xlX3N0cmVzc190ZXN0X2ZhaWx1cmUgPSAnJyd7ImFs
bERGR1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxNYXNtVGVzdHNQYXNzZWQiOnRydWUsImFsbEIzVGVz
dHNQYXNzZWQiOnRydWUsImFsbEFpclRlc3RzUGFzc2VkIjp0cnVlLCJzdHJlc3NUZXN0RmFpbHVy
ZXMiOlsic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZGZnLWVhZ2VyIl0sImFs
bEFwaVRlc3RzUGFzc2VkIjp0cnVlfVxuJycnCiAgICAgICAgIHNlbGYuanNjX211bHRpcGxlX3N0
cmVzc190ZXN0X2ZhaWx1cmVzID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFz
bVRlc3RzUGFzc2VkIjp0cnVlLCJhbGxCM1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxBaXJUZXN0c1Bh
c3NlZCI6dHJ1ZSwic3RyZXNzVGVzdEZhaWx1cmVzIjpbInN0cmVzcy9zd2l0Y2gtb24tY2hhci1s
bGludC1yb3BlLmpzLmRmZy1lYWdlciIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3Bl
LmpzLmRmZy1lYWdlci1uby1jaml0LXZhbGlkYXRlIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxs
aW50LXJvcGUuanMuZWFnZXItamV0dGlzb24tbm8tY2ppdCIsInN0cmVzcy9zd2l0Y2gtb24tY2hh
ci1sbGludC1yb3BlLmpzLmZ0bC1lYWdlciIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1y
b3BlLmpzLmZ0bC1lYWdlci1uby1jaml0Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJv
cGUuanMuZnRsLWVhZ2VyLW5vLWNqaXQtYjNvMSIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGlu
dC1yb3BlLmpzLmZ0bC1uby1jaml0LWIzbzAiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQt
cm9wZS5qcy5mdGwtbm8tY2ppdC1uby1pbmxpbmUtdmFsaWRhdGUiLCJzdHJlc3Mvc3dpdGNoLW9u
LWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1uby1wdXQtc3RhY2stdmFsaWRhdGUiLCJz
dHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1zbWFsbC1wb29s
Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQtdmFsaWRh
dGUtc2FtcGxpbmctcHJvZmlsZXIiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5q
cy5uby1jaml0LWNvbGxlY3QtY29udGludW91c2x5Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxs
aW50LXJvcGUuanMubm8tY2ppdC12YWxpZGF0ZS1waGFzZXMiLCJzdHJlc3Mvc3dpdGNoLW9uLWNo
YXItbGxpbnQtcm9wZS5qcy5uby1mdGwiXSwiYWxsQXBpVGVzdHNQYXNzZWQiOnRydWV9XG4nJycK
KyAgICAgICAgc2VsZi5qc2NfcGFzc2VkX3dpdGhfZmxha3kgPSAnJyd7ImFsbERGR1Rlc3RzUGFz
c2VkIjp0cnVlLCJhbGxNYXNtVGVzdHNQYXNzZWQiOnRydWUsImFsbEIzVGVzdHNQYXNzZWQiOnRy
dWUsImFsbEFpclRlc3RzUGFzc2VkIjp0cnVlLCJzdHJlc3NUZXN0RmFpbHVyZXMiOltdLCJmbGFr
eUFuZFBhc3NlZCI6eyJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZWZhdWx0
Ijp7IlAiOiI3IiwiVCI6IjEwIn19LCJhbGxBcGlUZXN0c1Bhc3NlZCI6dHJ1ZX1cbicnJwogICAg
ICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCiAKICAgICBkZWYgdGVhckRvd24oc2Vs
Zik6CkBAIC0xMzY5LDYgKzEzNzAsNyBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0
cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBj
b25maWd1cmVTdGVwKHNlbGYsIHBsYXRmb3JtPU5vbmUsIGZ1bGxQbGF0Zm9ybT1Ob25lLCBjb25m
aWd1cmF0aW9uPU5vbmUpOgogICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5KYXZhU2NyaXB0Q29y
ZVRlc3RzKCkpCiAgICAgICAgIHNlbGYucHJlZml4ID0gUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5w
cmVmaXgKKyAgICAgICAgc2VsZi5jb21tYW5kX2V4dHJhID0gUnVuSmF2YVNjcmlwdENvcmVUZXN0
cy5jb21tYW5kX2V4dHJhCiAgICAgICAgIGlmIHBsYXRmb3JtOgogICAgICAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCBwbGF0Zm9ybSkKICAgICAgICAgaWYgZnVsbFBsYXRmb3Jt
OgpAQCAtMTM4MSw3ICsxMzgzLDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMo
QnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1q
YXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0t
anNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJ10s
CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRz
L3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0
JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxl
YXNlJ10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dm
aWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICApCiAgICAgICAgICAgICArIDAsCkBAIC0xMzk1LDcgKzEzOTcsNyBAQCBjbGFzcyBUZXN0UnVu
SmF2YVNjcmlwdENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAogICAgICAgICAgICAg
RXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9n
RW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywg
J1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAn
LS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxl
TmFtZSksICctLXJlbGVhc2UnLCAnLS1yZW1vdGUtY29uZmlnLWZpbGU9cmVtb3RlLW1hY2hpbmVz
Lmpzb24nLCAnLS1uby10ZXN0bWFzbScsICctLW5vLXRlc3RhaXInLCAnLS1uby10ZXN0YjMnLCAn
LS1uby10ZXN0ZGZnJywgJy0tbm8tdGVzdGFwaScsICctLW1lbW9yeS1saW1pdGVkJywgJy0tdmVy
Ym9zZScsICctLWpzYy1vbmx5J10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsn
cGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1
aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5q
c29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJywgJy0tcmVtb3RlLWNvbmZpZy1maWxlPXJlbW90ZS1t
YWNoaW5lcy5qc29uJywgJy0tbm8tdGVzdG1hc20nLCAnLS1uby10ZXN0YWlyJywgJy0tbm8tdGVz
dGIzJywgJy0tbm8tdGVzdGRmZycsICctLW5vLXRlc3RhcGknLCAnLS1tZW1vcnktbGltaXRlZCcs
ICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAog
ICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyAwLApAQCAtMTQwOCw3ICsx
NDEwLDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5B
ZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVD
b21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10
ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9
Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0
PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSArIHNlbGYuY29tbWFu
ZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYu
anNvbkZpbGVOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsg
RXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nOSBmYWlsdXJlcyBmb3VuZC4nKQpAQCAt
MTQyMyw3ICsxNDI1LDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRT
dGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIEV4cGVj
dFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmly
b249RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxm
Lmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcs
ICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywg
Jy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmls
ZU5hbWUpLCAnLS1kZWJ1ZyddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3Bl
cmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWls
ZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNv
bkZpbGVOYW1lKSwgJy0tZGVidWcnXSArIHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICkKICAgICAgICAgICAgICsgMgogICAgICAgICAgICAgKyBFeHBlY3RTaGVs
bC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc2Nfc2luZ2xlX3N0cmVzc190ZXN0X2ZhaWx1cmUp
LApAQCAtMTQ0MCw3ICsxNDQyLDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMo
QnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAg
IEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z0Vudmlyb249RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24n
OiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsn
cGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1
aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5q
c29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFu
ZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1u
by1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNl
bGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSArIHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsgMgogICAgICAgICAgICAgKyBFeHBl
Y3RTaGVsbC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc2NfbXVsdGlwbGVfc3RyZXNzX3Rlc3Rf
ZmFpbHVyZXMpLApAQCAtMTQ1Nyw3ICsxNDU5LDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRD
b3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxl
cz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycs
ICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3Jt
YXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVz
dHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScu
Zm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSArIHNlbGYuY29tbWFuZF9leHRy
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsgMgogICAgICAgICAg
ICAgKyBFeHBlY3RTaGVsbC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc2NfbWFzbV9mYWlsdXJl
KSwKQEAgLTE0NzQsNyArMTQ3Niw3IEBAIGNsYXNzIFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3Rz
KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBs
b2dFbnZpcm9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29u
Jzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1b
J3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1i
dWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYu
anNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAn
LS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0
KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyAyCiAgICAgICAgICAgICAr
IEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1zZWxmLmpzY19iM19hbmRfc3RyZXNzX3Rl
c3RfZmFpbHVyZSksCkBAIC0xNDkxLDcgKzE0OTMsNyBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlw
dENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAogICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2Zp
bGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3Rz
JywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZv
cm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnLCAnLS1tZW1vcnktbGltaXRlZCcs
ICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAn
LS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0
KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZScsICctLW1lbW9yeS1saW1pdGVkJywgJy0t
dmVyYm9zZScsICctLWpzYy1vbmx5J10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDIKICAgICAgICAgICAgICsgRXhwZWN0U2hl
bGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNjX2RmZ19haXJfYW5kX3N0cmVzc190ZXN0X2Zh
aWx1cmUpLApAQCAtMTUwMiw1MiArMTUwNCwzMCBAQCBjbGFzcyBUZXN0UnVuSmF2YVNjcmlwdENv
cmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnYmlu
YXJ5X2ZhaWx1cmVzJyksIFsndGVzdGFpcicsICd0ZXN0ZGZnJ10pCiAgICAgICAgIHJldHVybiBy
YwogCi0KLWNsYXNzIFRlc3RSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoVGVzdFJ1bkphdmFTY3Jp
cHRDb3JlVGVzdHMpOgotICAgIGRlZiBjb25maWd1cmVTdGVwKHNlbGYsIHBsYXRmb3JtPU5vbmUs
IGZ1bGxQbGF0Zm9ybT1Ob25lLCBjb25maWd1cmF0aW9uPU5vbmUpOgotICAgICAgICBzZWxmLnNl
dHVwU3RlcChSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoKSkKLSAgICAgICAgc2VsZi5wcmVmaXgg
PSBSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMucHJlZml4Ci0gICAgICAgIGlmIHBsYXRmb3JtOgot
ICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCBwbGF0Zm9ybSkKLSAgICAg
ICAgaWYgZnVsbFBsYXRmb3JtOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBs
YXRmb3JtJywgZnVsbFBsYXRmb3JtKQotICAgICAgICBpZiBjb25maWd1cmF0aW9uOgotICAgICAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsIGNvbmZpZ3VyYXRpb24pCi0K
LSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAo
cGxhdGZvcm09J21hYycsIGZ1bGxQbGF0Zm9ybT0nbWFjLWhpZ2hzaWVycmEnLCBjb25maWd1cmF0
aW9uPSdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0
X2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90
ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17
MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICkgKwotICAgICAgICAgICAgMCwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nRm91bmQg
Zmxha3kgdGVzdHM6IHRlc3QxLCB0ZXN0MicpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAo
KQotCi0gICAgZGVmIHRlc3RfcmVtb3RlX3N1Y2Nlc3Moc2VsZik6CisgICAgZGVmIHRlc3Rfc3Vj
Y2Vzc193aXRoX2ZsYWt5KHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAocGxhdGZv
cm09J2pzYy1vbmx5JywgZnVsbFBsYXRmb3JtPSdqc2Mtb25seScsIGNvbmZpZ3VyYXRpb249J3Jl
bGVhc2UnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdyZW1vdGVzJywgJ3JlbW90ZS1tYWNo
aW5lcy5qc29uJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJl
cycsIFsndGVzdG1hc20nXSkKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAg
ICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5v
LWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2Vs
Zi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJywgJy0tcmVtb3RlLWNvbmZpZy1maWxlPXJlbW90
ZS1tYWNoaW5lcy5qc29uJywgJy0tbm8tdGVzdG1hc20nLCAnLS1uby10ZXN0YWlyJywgJy0tbm8t
dGVzdGIzJywgJy0tbm8tdGVzdGRmZycsICctLW5vLXRlc3RhcGknLCAnLS1tZW1vcnktbGltaXRl
ZCcsICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddLAogICAgICAgICAgICAgICAgICAgICAgICAg
bG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgKSArCi0gICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFu
ZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1u
by1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNl
bGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZScsICctLW1lbW9yeS1saW1pdGVkJywgJy0tdmVy
Ym9zZScsICctLWpzYy1vbmx5J10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCisgICAgICAgICAgICAg
ICAgICAgICAgICApCisgICAgICAgICAgICArIDAKKyAgICAgICAgICAgICsgRXhwZWN0U2hlbGwu
bG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNjX3Bhc3NlZF93aXRoX2ZsYWt5KSwKICAgICAgICAg
KQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmlu
Zz0nRm91bmQgZmxha3kgdGVzdDogdGVzdG1hc20nKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5T
dGVwKCkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9z
dHJpbmc9J1Bhc3NlZCBKU0MgdGVzdHMgKDEgZmxha3kpJykKKyAgICAgICAgcmMgPSBzZWxmLnJ1
blN0ZXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5w
cmVmaXggKyAnZmxha3lfYW5kX3Bhc3NlZCcpLCB7J3N0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGlu
dC1yb3BlLmpzLmRlZmF1bHQnOiB7J1AnOiAnNycsICdUJzogJzEwJ319KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnc3RyZXNzX3Rlc3Rf
ZmFpbHVyZXMnKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3Bl
cnR5KHNlbGYucHJlZml4ICsgJ2JpbmFyeV90ZXN0X2ZhaWx1cmVzJyksIE5vbmUpCisgICAgICAg
IHJldHVybiByYwogCiAKIGNsYXNzIFRlc3RSdW5KU0NUZXN0c1dpdGhvdXRQYXRjaChCdWlsZFN0
ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxm
KToKICAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKICAgICAgICAgc2VsZi5qc29uRmls
ZU5hbWUgPSAnanNjX3Jlc3VsdHMuanNvbicKKyAgICAgICAgc2VsZi5jb21tYW5kX2V4dHJhID0g
UnVuSlNDVGVzdHNXaXRob3V0UGF0Y2guY29tbWFuZF9leHRyYQogICAgICAgICByZXR1cm4gc2Vs
Zi5zZXRVcEJ1aWxkU3RlcCgpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC0xNTYwLDcg
KzE1NDAsNyBAQCBjbGFzcyBUZXN0UnVuSlNDVGVzdHNXaXRob3V0UGF0Y2goQnVpbGRTdGVwTWl4
aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5leHBlY3RSZW1v
dGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29y
ZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9
ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJ10sCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2Ny
aXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1v
dXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJ10gKyBzZWxm
LmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24n
OiBzZWxmLmpzb25GaWxlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICArIDAsCkBAIC0xNTc1LDcgKzE1NTUsNyBAQCBjbGFzcyBUZXN0UnVuSlNDVGVzdHNXaXRo
b3V0UGF0Y2goQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxs
KHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3Jp
cHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1m
YXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1k
ZWJ1ZyddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMv
U2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZh
aWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwg
Jy0tZGVidWcnXSArIHNlbGYuY29tbWFuZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICkKICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0n
OSBmYWlsdXJlcyBmb3VuZC4nKQpAQCAtMTU5NywzOCArMTU3NywzNCBAQCBjbGFzcyBUZXN0QW5h
bHl6ZUpTQ1Rlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLnNldHVwU3RlcChBbmFseXplSlNDVGVzdHNSZXN1bHRzKCkp
CiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtd
KQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgW10pCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycs
IFtdKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2ZhaWx1cmVz
JywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19mbGFreV9hbmRfcGFzc2VkJywg
e30pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0
X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVl
X2JpbmFyeV9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xl
YW5fdHJlZV9mbGFreV9hbmRfcGFzc2VkJywge30pCiAgICAgICAgIEFuYWx5emVKU0NUZXN0c1Jl
c3VsdHMuc2VuZF9lbWFpbF9mb3JfZmxha3lfZmFpbHVyZSA9IGxhbWJkYSBzZWxmLCB0ZXN0OiBO
b25lCiAgICAgICAgIEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfcHJlX2V4
aXN0aW5nX2ZhaWx1cmUgPSBsYW1iZGEgc2VsZiwgdGVzdDogTm9uZQogCiAgICAgZGVmIHRlc3Rf
c2luZ2xlX25ld19zdHJlc3NfZmFpbHVyZShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVT
dGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVz
JywgWydzdHJlc3MvZm9yY2UtZXJyb3IuanMuYnl0ZWNvZGUtY2FjaGUnXSkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3Mv
Zm9yY2UtZXJyb3IuanMuYnl0ZWNvZGUtY2FjaGUnXSkKICAgICAgICAgc2VsZi5leHBlY3RPdXRj
b21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IEpTQyBzdHJlc3Mg
dGVzdCBmYWlsdXJlOiBzdHJlc3MvZm9yY2UtZXJyb3IuanMuYnl0ZWNvZGUtY2FjaGUgKGZhaWx1
cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKICAgICBkZWYgdGVzdF9zaW5n
bGVfbmV3X2JpbmFyeV9mYWlsdXJlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAo
KQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0
bWFzbSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fYmluYXJ5X2ZhaWx1
cmVzJywgWyd0ZXN0bWFzbSddKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZB
SUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMSBuZXcgSlNDIGJpbmFyeSBmYWlsdXJlOiB0ZXN0
bWFzbSAoZmFpbHVyZSknKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAogICAgIGRl
ZiB0ZXN0X211bHRpcGxlX25ld19zdHJlc3NfZmFpbHVyZShzZWxmKToKICAgICAgICAgc2VsZi5j
b25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0
X2ZhaWx1cmVzJywgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAzMCldKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMn
LCBbJ3Rlc3R7fScuZm9ybWF0KGkpIGZvciBpIGluIHJhbmdlKDAsIDMwKV0pCiAgICAgICAgIHNl
bGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAzMCBu
ZXcgSlNDIHN0cmVzcyB0ZXN0IGZhaWx1cmVzOiB0ZXN0MCwgdGVzdDEsIHRlc3QxMCwgdGVzdDEx
LCB0ZXN0MTIsIHRlc3QxMywgdGVzdDE0LCB0ZXN0MTUsIHRlc3QxNiwgdGVzdDE3IC4uLiAoZmFp
bHVyZSknKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAogICAgIGRlZiB0ZXN0X211
bHRpcGxlX25ld19iaW5hcnlfZmFpbHVyZShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVT
dGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFsn
dGVzdG1hc20nLCAndGVzdGFpcicsICd0ZXN0YjMnLCAndGVzdGRmZycsICd0ZXN0YXBpJ10pCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rl
c3RtYXNtJywgJ3Rlc3RhaXInLCAndGVzdGIzJywgJ3Rlc3RkZmcnLCAndGVzdGFwaSddKQogICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91
bmQgNSBuZXcgSlNDIGJpbmFyeSBmYWlsdXJlczogdGVzdGFpciwgdGVzdGFwaSwgdGVzdGIzLCB0
ZXN0ZGZnLCB0ZXN0bWFzbSAoZmFpbHVyZSknKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKIApAQCAtMTYzNiwxNSArMTYxMiwxMiBAQCBjbGFzcyBUZXN0QW5hbHl6ZUpTQ1Rlc3RzUmVz
dWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3Ry
ZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2VzNi55YW1sL2VzNi9TZXRfaXRlcmF0b3JfY2xvc2luZy5q
cy5kZWZhdWx0J10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVy
ZXMnLCBbJ3Rlc3RtYXNtJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9z
dHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5n
LmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFy
eV9mYWlsdXJlcycsIFsndGVzdG1hc20nXSkKICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJl
c3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IEpTQyBiaW5hcnkgZmFpbHVy
ZTogdGVzdG1hc20sIEZvdW5kIDEgbmV3IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlOiBlczYueWFt
bC9lczYvU2V0X2l0ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVsdCAoZmFpbHVyZSknKQogICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAogICAgIGRlZiB0ZXN0X3N0cmVzc19mYWlsdXJlX29u
X2NsZWFuX3RyZWUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2Zv
cmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3Jl
cnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3MvZm9yY2UtZXJyb3IuanMuZGVmYXVs
dCddKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVz
dF9mYWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKICAgICAgICAg
c2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBK
U0MgdGVzdHMnKQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKQEAgLTE2NjEsMzkgKzE2
MzQsMjkgQEAgY2xhc3MgVGVzdEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5B
ZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVw
KCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywg
WydlczYueWFtbC9lczYvU2V0X2l0ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVsdCddKQogICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0YWlyJ10pCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycs
IFsnZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGFp
ciddKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVz
dF9mYWlsdXJlcycsIFsnZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1
bHQnXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfYmluYXJ5X2Zh
aWx1cmVzJywgWyd0ZXN0YWlyJ10pCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9
U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzJykKICAgICAgICAgcmV0dXJu
IHNlbGYucnVuU3RlcCgpCiAKLSAgICBkZWYgdGVzdF9mbGFreV9zdHJlc3NfYW5kX2JpbmFyeV9m
YWlsdXJlcyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3MvZm9yY2Ut
ZXJyb3IuanMuZGVmYXVsdCddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5
X2ZhaWx1cmVzJywgWyd0ZXN0YXBpJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzJykKLSAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCi0KICAgICBkZWYgdGVzdF9mbGFreV9hbmRfY29uc2lzdGVudF9z
dHJlc3NfZmFpbHVyZXMoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEn
LCAndGVzdDInXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190
ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MiddKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMSBuZXcgSlNDIHN0cmVzcyB0ZXN0IGZh
aWx1cmU6IHRlc3QyIChmYWlsdXJlKScpCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19z
dHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnXSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnanNjX2ZsYWt5X2FuZF9wYXNzZWQnLCB7J3Rlc3QyJzogeydQJzogJzcnLCAnVCc6ICcxMCd9
fSkKKyAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJp
bmc9J0ZvdW5kIDEgbmV3IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlOiB0ZXN0MSAoZmFpbHVyZSkn
KQogICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKIAogICAgIGRlZiB0ZXN0X2ZsYWt5X2Fu
ZF9jb25zaXN0ZW50X2ZhaWx1cmVzX3dpdGhfY2xlYW5fdHJlZV9mYWlsdXJlcyhzZWxmKToKICAg
ICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNj
X3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJ10p
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0X2Zh
aWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdq
c2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJ10pCisgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2pzY19mbGFreV9hbmRfcGFzc2VkJywgeyd0ZXN0Mic6IHsnUCc6IDcsICdUJzogMTB9
fSkKKyAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNzX3Rlc3Rf
ZmFpbHVyZXMnLCBbJ3Rlc3QxJ10pCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9
U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzJykKICAgICAgICAgcmV0dXJu
IHNlbGYucnVuU3RlcCgpCiAKICAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2luZnJhX2lzc3VlKHNl
bGYpOgogICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCiAgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCiAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX3N0YXR1cycsIEZBSUxVUkUp
CiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9UkVUUlksIHN0YXRlX3N0cmluZz0n
VW5leHBlY3RlZCBpbmZyYXN0cnVjdHVyZSBpc3N1ZSwgcmV0cnlpbmcgYnVpbGQgKHJldHJ5KScp
CkBAIC0xNzAyLDggKzE2NjUsOSBAQCBjbGFzcyBUZXN0QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhC
dWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0
X3BhdGNoX2JyZWFraW5nX2pzY190ZXN0X3N1aXRlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZp
Z3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFp
bHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190
ZXN0X2ZhaWx1cmVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19mbGFreV9h
bmRfcGFzc2VkJywge30pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVl
X3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pz
Y19jbGVhbl90cmVlX2ZsYWt5X2FuZF9wYXNzZWQnLCB7fSkKICAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnY2xlYW5fdHJlZV9ydW5fc3RhdHVzJywgU1VDQ0VTUykKICAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIHVuZXhwZWN0ZWQg
ZmFpbHVyZSB3aXRoIHBhdGNoIChmYWlsdXJlKScpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1blN0
ZXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9z
aGVsbC1ydW5uZXIuc2ggYi9Ub29scy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJzL3No
ZWxsLXJ1bm5lci5zaAppbmRleCBkZWQ0MGQ1MjE5ODIzMGI4MTUwMjYyYzZiZTcxYWMyZDhjYTcx
MmZlLi4zZjZlOGUyYWE1OTZjZjExNjExYzgwYzNjN2JkZTQ0ZjAzNzkyMDMzIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJzL3NoZWxsLXJ1bm5lci5zaAor
KysgYi9Ub29scy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJzL3NoZWxsLXJ1bm5lci5z
aApAQCAtMjEsNiArMjEsOCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICMgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAorb3Jp
Z2luYWxUZXN0TGlzdD0iJDEiCisKIG51bVByb2NzPWBzeXNjdGwgLW4gaHcuYWN0aXZlY3B1IDI+
L2Rldi9udWxsYAogaWYgWyAkPyAtZ3QgMCBdCiB0aGVuCkBAIC0zOSw3ICs0MSw3IEBAIGxvY2tE
aXI9Ii5sb2NrX2RpciIKIHRyYXAgImtpbGwgLTkgMCIgSU5UIEhVUCBURVJNCiAKIGVjaG8gMCA+
ICR7aW5kZXhGaWxlfQotZmluZCAuIC1tYXhkZXB0aCAxIC1uYW1lICd0ZXN0X3NjcmlwdF8qJyB8
IHNvcnQgLXQgJ18nIC1rM25yID4gJHt0ZXN0TGlzdH0KK2NwICIkb3JpZ2luYWxUZXN0TGlzdCIg
IiR0ZXN0TGlzdCIKIAogbG9ja190ZXN0X2xpc3QoKSB7CiAgICAgdW50aWwgbWtkaXIgJHtsb2Nr
RGlyfSAyPiAvZGV2L251bGw7IGRvIHNsZWVwIDA7IGRvbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNj
cmlwdGNvcmUtdGVzdHMKaW5kZXggZmIyMWJmZTcxYTRmNWM4YWU3ZTMyYmYyZjE3ZGU1ZjRjNDg1
NjU5Ny4uYzJhNTk5NjE5ZmU4NjIxOWU1OWRjZjkwNmJlZTMyOWNmMTM5N2JhOSAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMKKysrIGIvVG9vbHMvU2Ny
aXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMKQEAgLTY0LDYgKzY0LDcgQEAgbXkgJGdudVBh
cmFsbGVsUnVubmVyOwogbXkgJHRlc3RXcml0ZXI7CiBteSAkbWVtb3J5TGltaXRlZDsKIG15ICRy
ZXBvcnRFeGVjdXRpb25UaW1lOworbXkgJHRyZWF0RmFpbGluZ0FzRmxha3k7CiAKIG15ICRyZXBv
cnQ7CiBteSAkYnVpbGRib3RNYXN0ZXI7CkBAIC0yODMsNiArMjg0LDExIEBAIFVzYWdlOiAkcHJv
Z3JhbU5hbWUgW29wdGlvbnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQgc3lzdGVtXQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa2lwIHRlc3RzIHRhZ2dlZCB3aXRoIC8vXEBz
a2lwIGlmIFwkbWVtb3J5TGltaXRlZAogCiAgIC0tcmVwb3J0LWV4ZWN1dGlvbi10aW1lICAgICAg
IFByaW50IGV4ZWN1dGlvbiB0aW1lIGZvciBlYWNoIHN0cmVzcyB0ZXN0LgorICAtLXRyZWF0LWZh
aWxpbmctYXMtZmxha3kgICAgICBUcmVhdCBmYWlsaW5nIHN0cmVzcyB0ZXN0cyBhcyBmbGFreS4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwZWN0cyAzIGNvbW1hLXNlcGFyYXRl
ZCB2YWx1ZXM6IHBhc3NQZXJjZW50YWdlLG1heFRyaWVzLG1heEZhaWxpbmcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSWYgbGVzcyB0aGFuIG1heEZhaWxpbmcgdGVzdHMgZmFpbGVk
LCBydW4gdGhlbSBhZ2FpbiAodXAgdG8gbWF4VHJpZXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVudGlsIHdlIGNhbiB0ZWxsIHdoZXRoZXIgdGhleSBwYXNzIG1vcmUgdGhhbiBw
YXNzUGVyY2VudGFnZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlt
ZSAoaW4gd2hpY2ggY2FzZSB0aGUgdGVzdCBpcyBjb3VudGVkIGFzIGEgcGFzcykuCiAKICAgLS1m
aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgT25seSBydW4gdGVzdHMgd2hvc2UgbmFtZSBtYXRj
aGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24uCiAgIC0tZW52LXZhcnMgICAgICAgICAg
ICAgICAgICAgIFBhc3MgYSBsaXN0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgYmVm
b3JlIHJ1bm5pbmcgdGVzdHMuCkBAIC0zNTIsNiArMzU4LDcgQEAgR2V0T3B0aW9ucygKICAgICAn
dGVzdC13cml0ZXI9cycgPT4gXCR0ZXN0V3JpdGVyLAogICAgICdtZW1vcnktbGltaXRlZCcgPT4g
XCRtZW1vcnlMaW1pdGVkLAogICAgICdyZXBvcnQtZXhlY3V0aW9uLXRpbWUnID0+IFwkcmVwb3J0
RXhlY3V0aW9uVGltZSwKKyAgICAndHJlYXQtZmFpbGluZy1hcy1mbGFreT1zJyA9PiBcJHRyZWF0
RmFpbGluZ0FzRmxha3ksCiAgICAgJ2ZpbHRlcj1zJyA9PiBcJGZpbHRlciwKICAgICAnaGVscCcg
PT4gXCRzaG93SGVscCwKICAgICAnZW52LXZhcnM9cycgPT4gXCRlbnZWYXJzLApAQCAtODAxLDYg
KzgwOCwxMCBAQCBzdWIgcnVuSlNDU3RyZXNzVGVzdHMKICAgICAgICAgcHVzaChAanNjU3RyZXNz
RHJpdmVyQ21kLCAiLS1hcnRpZmFjdC1leGVjLXdyYXBwZXIiKTsKICAgICAgICAgcHVzaChAanNj
U3RyZXNzRHJpdmVyQ21kLCAkYXJ0aWZhY3RfZXhlY193cmFwcGVyKTsKICAgICB9CisgICAgaWYg
KGRlZmluZWQoJHRyZWF0RmFpbGluZ0FzRmxha3kpKSB7CisgICAgICAgIHB1c2goQGpzY1N0cmVz
c0RyaXZlckNtZCwgIi0tdHJlYXQtZmFpbGluZy1hcy1mbGFreSIpOworICAgICAgICBwdXNoKEBq
c2NTdHJlc3NEcml2ZXJDbWQsICR0cmVhdEZhaWxpbmdBc0ZsYWt5KTsKKyAgICB9CiAgICAgcHVz
aChAanNjU3RyZXNzRHJpdmVyQ21kLCBAdGVzdExpc3QpOwogCiAgICAgaWYgKGlzV2luZG93cygp
ICYmICFpc0N5Z3dpbigpKSB7CkBAIC05MjUsNiArOTM2LDIxIEBAIHN1YiBydW5KU0NTdHJlc3NU
ZXN0cwogICAgICAgICAkcmVwb3J0RGF0YXskdGVzdFN1Y2NlZWRlZH0gPSB7YWN0dWFsID0+ICJQ
QVNTIn07CiAgICAgfQogCisgICAgbXkgQGpzY1N0cmVzc0ZsYWt5ID0gcmVhZEFsbExpbmVzKCRq
c2NTdHJlc3NSZXN1bHRzRGlyIC4gIi9mbGFreSIpOworICAgIEBqc2NTdHJlc3NGbGFreSA9IHNv
cnQgQGpzY1N0cmVzc0ZsYWt5OworICAgIG15ICRudW1KU0NTdHJlc3NGbGFreSA9IEBqc2NTdHJl
c3NGbGFreTsKKworICAgIG15ICVqc2NTdHJlc3NGbGFreUluZm8gPSAoKTsKKyAgICBpZiAoJG51
bUpTQ1N0cmVzc0ZsYWt5KSB7CisgICAgICAgIHByaW50ICJcbioqIFRoZSBmb2xsb3dpbmcgSlND
IHN0cmVzcyB0ZXN0cyB3ZXJlIGZsYWt5OlxuIjsKKyAgICAgICAgZm9yZWFjaCBteSAkdGVzdEZs
YWt5IChAanNjU3RyZXNzRmxha3kpIHsKKyAgICAgICAgICAgIG15IEBmaWVsZHMgPSBzcGxpdCAv
IC8sICR0ZXN0Rmxha3k7CisgICAgICAgICAgICBwcmludCAiXHQkZmllbGRzWzBdICRmaWVsZHNb
MV0vJGZpZWxkc1syXSBwYXNzZXNcbiI7CisgICAgICAgICAgICAkanNjU3RyZXNzRmxha3lJbmZv
eyRmaWVsZHNbMF19ID0geyAnUCcgPT4gJGZpZWxkc1sxXSwgJ1QnID0+ICRmaWVsZHNbMl19Cisg
ICAgICAgIH0KKyAgICAgICAgcHJpbnQgIlxuIjsKKyAgICB9CisKICAgICBteSBAanNjU3RyZXNz
RmFpbExpc3QgPSByZWFkQWxsTGluZXMoJGpzY1N0cmVzc1Jlc3VsdHNEaXIgLiAiL2ZhaWxlZCIp
OwogICAgIEBqc2NTdHJlc3NGYWlsTGlzdCA9IHNvcnQgQGpzY1N0cmVzc0ZhaWxMaXN0OwogICAg
IG15ICRudW1KU0NTdHJlc3NGYWlsdXJlcyA9IEBqc2NTdHJlc3NGYWlsTGlzdDsKQEAgLTk1MSwx
MiArOTc3LDE0IEBAIHN1YiBydW5KU0NTdHJlc3NUZXN0cwogCiAgICAgcHJpbnQgIlJlc3VsdHMg
Zm9yIEpTQyBzdHJlc3MgdGVzdHM6XG4iOwogICAgIHByaW50VGhpbmdzRm91bmQoJG51bUpTQ1N0
cmVzc0ZhaWx1cmVzLCAiZmFpbHVyZSIsICJmYWlsdXJlcyIsICJmb3VuZCIpOworICAgIHByaW50
VGhpbmdzRm91bmQoJG51bUpTQ1N0cmVzc0ZsYWt5LCAidGVzdCIsICJ0ZXN0cyIsICJmbGFreSBi
dXQgcGFzc2VkIik7CiAgICAgcHJpbnRUaGluZ3NGb3VuZCgkbnVtSlNDU3RyZXNzTm9SZXN1bHRU
ZXN0cywgInRlc3QiLCAidGVzdHMiLCAiZmFpbGVkIHRvIGNvbXBsZXRlIik7CiAgICAgcHJpbnQg
IiAgICBPSy5cbiIgaWYgJG51bUpTQ1N0cmVzc0ZhaWx1cmVzID09IDAgYW5kICRudW1KU0NTdHJl
c3NOb1Jlc3VsdFRlc3RzID09IDA7CiAKICAgICBwcmludCAiXG4iOwogCiAgICAgaWYgKGRlZmlu
ZWQoJGpzb25GaWxlTmFtZSkpIHsKKyAgICAgICAgJGpzb25EYXRheydmbGFreUFuZFBhc3NlZCd9
ID0gIFwlanNjU3RyZXNzRmxha3lJbmZvOwogICAgICAgICAkanNvbkRhdGF7J3N0cmVzc1Rlc3RG
YWlsdXJlcyd9ID0gXEBqc2NTdHJlc3NGYWlsTGlzdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mt
c3RyZXNzLXRlc3RzCmluZGV4IGNkMDc1YmE3NWZiN2Y2MjVkYmEyNmQ0YjEyNTE0M2Q5NDJjMTE4
NDUuLjhlMDUwZjBkMjA0YzAyN2JlYjU4ZmFlMjI1Y2VhYTA3NmVhNzRmYjkgMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtMjUsMTIgKzI1LDE3IEBACiAKIHJlcXVpcmUgJ2ZpbGV1
dGlscycKIHJlcXVpcmUgJ2dldG9wdGxvbmcnCityZXF1aXJlICdvc3RydWN0JwogcmVxdWlyZSAn
cGF0aG5hbWUnCiByZXF1aXJlICdyYmNvbmZpZycKK3JlcXVpcmUgJ3NldCcKIHJlcXVpcmUgJ3Rl
bXBmaWxlJwogcmVxdWlyZSAndXJpJwogcmVxdWlyZSAneWFtbCcKIAorcmVxdWlyZV9yZWxhdGl2
ZSAid2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9yIgorcmVx
dWlyZV9yZWxhdGl2ZSAid2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvZXhlY3V0b3IiCisKIG1v
ZHVsZSBVUkkKICAgICBjbGFzcyBTU0ggPCBHZW5lcmljCiAgICAgICAgIERFRkFVTFRfUE9SVCA9
IDIyCkBAIC03Myw2ICs3OCw4IEBAIFNUQVRVU19GSUxFX0ZBSUwgPSAiRiIKIFBBUkFMTEVMX1JF
TU9URV9XUkFQUEVSX01BUktfQkVHSU4gPSAiNWQ2NTMyOWJkMWEzIgogUEFSQUxMRUxfUkVNT1RF
X1dSQVBQRVJfTUFSS19FTkQgPSAiYTlhZWE1YzNiODQzIgogUEFSQUxMRUxfUkVNT1RFX1NUQVRF
X0xPU1RfTUFSS0VSID0gIjcwOWZiN2E3N2M0NTIzMTkxOGViMTE4YSIKK0lURVJBVElPTl9MSU1J
VFMgPSBPcGVuU3RydWN0Lm5ldyg6aW5mcmFJdGVyYXRpb25zRmxvb3IgPT4gMywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6aXRlcmF0aW9uc0NlaWxpbmcgPT4gMTApCiAKIGJl
Z2luCiAgICAgcmVxdWlyZSAnc2hlbGx3b3JkcycKQEAgLTEyNCw3ICsxMzEsNiBAQCBkZWYgZXNj
YXBlQWxsKGFycmF5KQogICAgIH0uam9pbignICcpCiBlbmQKIAotCiAkanNjUGF0aCA9IG5pbAog
JGRvTm90TWVzc1dpdGhWTVBhdGggPSBmYWxzZQogJGppdFRlc3RzID0gdHJ1ZQpAQCAtMTUyLDYg
KzE1OCwxMSBAQCAkbGRkID0gbmlsCiAkYXJ0aWZhY3RfZXhlY193cmFwcGVyID0gbmlsCiAkbnVt
Q2hpbGRQcm9jZXNzZXNTZXRCeVVzZXIgPSBmYWxzZQogJHJ1blVuaXF1ZUlkID0gUmFuZG9tLm5l
dy5ieXRlcygxNikudW5wYWNrKCJIKiIpWzBdCiskdGVzdHNEZWJ1Z1N0cmVhbSA9IG5pbCAjIHNl
dCB0byAkc3RkZXJyIGZvciBkZWJ1Z2dpbmcKKworZGVmIHB1dGQocykKKyAgICAkdGVzdHNEZWJ1
Z1N0cmVhbS5wdXRzKHMpIHVubGVzcyAkdGVzdHNEZWJ1Z1N0cmVhbS5uaWw/CitlbmQKIAogZGVm
IHVzYWdlCiAgICAgcHV0cyAicnVuLWpzYy1zdHJlc3MtdGVzdHMgLWogPHNoZWxsIHBhdGg+IDxj
b2xsZWN0aW9ucyBwYXRoPiBbPGNvbGxlY3Rpb25zIHBhdGg+IC4uLl0iCkBAIC0yMjIsNiArMjMz
LDcgQEAgR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRvcHRMb25nOjpOT19BUkdV
TUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tcnVieS1ydW5uZXInLCBHZXRvcHRMb25nOjpOT19B
UkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tZ251LXBhcmFsbGVsLXJ1bm5lcicsIEdldG9w
dExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS10ZXN0LXdyaXRlcicsIEdl
dG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS10cmVhdC1m
YWlsaW5nLWFzLWZsYWt5JywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAogICAgICAg
ICAgICAgICAgWyctLXJlbW90ZScsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKICAg
ICAgICAgICAgICAgIFsnLS1yZW1vdGUtY29uZmlnLWZpbGUnLCBHZXRvcHRMb25nOjpSRVFVSVJF
RF9BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tcmVwb3J0LWV4ZWN1dGlvbi10aW1lJywg
R2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLApAQCAtMjcwLDYgKzI4MiwzMCBAQCBHZXRvcHRMb25n
Lm5ldyhbJy0taGVscCcsICctaCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAg
JHRlc3RSdW5uZXJUeXBlID0gOmdudXBhcmFsbGVsCiAgICAgd2hlbiAnLS10ZXN0LXdyaXRlcicK
ICAgICAgICAgJHRlc3RXcml0ZXIgPSBhcmcKKyAgICB3aGVuICctLXRyZWF0LWZhaWxpbmctYXMt
Zmxha3knCisgICAgICAgIG1kID0gL14oW14sXSspLChcZCspLChcZCspJC8ubWF0Y2goYXJnKQor
ICAgICAgICBpZiBtZC5uaWw/CisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIkNvdWxkIG5vdCBw
YXJzZSBhcmd1bWVudCB0byBgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5YDsgZXhwZWN0ZWQgYHBh
c3NQZXJjZW50YWdlLG1heFRyaWVzLG1heEZhaWxpbmdgIikKKyAgICAgICAgICAgIGV4aXQoMSkK
KyAgICAgICAgZW5kCisgICAgICAgIHBhc3NQZXJjZW50YWdlID0gbWRbMV0udG9fZgorICAgICAg
ICBpZiBwYXNzUGVyY2VudGFnZS56ZXJvPworICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJJbnZh
bGlkIHBhc3NQZXJjZW50YWdlIGAje21kWzFdfWAiKQorICAgICAgICAgICAgZXhpdCgxKQorICAg
ICAgICBlbmQKKyAgICAgICAgbWF4VHJpZXMgPSBtZFsyXS50b19pCisgICAgICAgIGlmIG1heFRy
aWVzID09IDAKKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiSW52YWxpZCBtYXhUcmllcyBgI3tt
ZFsyXX1gIikKKyAgICAgICAgICAgIGV4aXQoMSkKKyAgICAgICAgZW5kCisgICAgICAgIG1heEZh
aWxpbmcgPSBtZFszXS50b19pCisgICAgICAgIGlmIG1heEZhaWxpbmcgPT0gMAorICAgICAgICAg
ICAgJHN0ZGVyci5wdXRzKCJJbnZhbGlkIG1heEZhaWxpbmcgYCN7bWRbM119YCIpCisgICAgICAg
ICAgICBleGl0KDEpCisgICAgICAgIGVuZAorICAgICAgICAkdHJlYXRGYWlsaW5nQXNGbGFreSA9
IE9wZW5TdHJ1Y3QubmV3KDpwYXNzUGVyY2VudGFnZSA9PiBwYXNzUGVyY2VudGFnZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gbWF4
VHJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1h
eEZhaWxpbmcgPT4gbWF4RmFpbGluZykKICAgICB3aGVuICctLXJlbW90ZScKICAgICAgICAgJGNv
cHlWTSA9IHRydWUKICAgICAgICAgJHRhcmJhbGwgPSB0cnVlCkBAIC01NjksNiArNjA1LDk0IEBA
IEZUTF9PUFRJT05TID0gWyItLXVzZUZUTEpJVD10cnVlIl0KIEZPUkNFX0xMSU5UX0VYSVRfT1BU
SU9OUyA9IFsiLS1mb3JjZU9TUkV4aXRUb0xMSW50PXRydWUiXQogRVhFQ1VUQUJMRV9GVVpaRVJf
T1BUSU9OUyA9IFsiLS11c2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1eno9dHJ1ZSIsICItLWZpcmVF
eGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpSYW5kb21seT10cnVlIl0KIAorY2xhc3MgQmFzZVBsYW4K
KyAgICBhdHRyX3JlYWRlciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRzLCA6ZmFtaWx5LCA6bmFtZSwg
Om91dHB1dEhhbmRsZXIsIDplcnJvckhhbmRsZXIsIDphZGRpdGlvbmFsRW52LCA6aW5kZXgKKyAg
ICBhdHRyX2FjY2Vzc29yIDpmbGFreQorCisgICAgQEBpbmRleCA9IDAKKyAgICBkZWYgaW5pdGlh
bGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRIYW5kbGVyLCBl
cnJvckhhbmRsZXIsIGZsYWt5KQorICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5CisgICAg
ICAgIEBhcmd1bWVudHMgPSBhcmd1bWVudHNNYXBwZXIoYXJndW1lbnRzKQorICAgICAgICBAZmFt
aWx5ID0gZmFtaWx5CisgICAgICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAb3V0cHV0SGFuZGxl
ciA9IG91dHB1dEhhbmRsZXIKKyAgICAgICAgQGVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcgor
ICAgICAgICBAZmxha3kgPSBmbGFreQorICAgICAgICBAYWRkaXRpb25hbEVudiA9IFtdCisgICAg
ICAgIEBpbmRleCA9IEBAaW5kZXgKKyAgICAgICAgQEBpbmRleCArPSAxCisgICAgZW5kCisgICAg
ZGVmIHNlbGYubW9jayhmYW1pbHksIG5hbWUsIGZsYWt5PW5pbCkKKyAgICAgICAgc2VsZi5uZXco
Ii9ub25lIiwgW10sIGZhbWlseSwgbmFtZSwgbmlsLCBuaWwsIGZsYWt5KQorICAgIGVuZAorICAg
IGRlZiBzZWxmLmNyZWF0ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRw
dXRIYW5kbGVyLCBlcnJvckhhbmRsZXIpCisgICAgICAgIGlmICRydW5Db21tYW5kT3B0aW9uc1s6
Y3Jhc2hPS10KKyAgICAgICAgICAgIG91dHB1dEhhbmRsZXIgPSBub2lzeU91dHB1dEhhbmRsZXIK
KyAgICAgICAgZW5kCisgICAgICAgIHNlbGYubmV3KGRpcmVjdG9yeSwgYXJndW1lbnRzLCBmYW1p
bHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlciwgJHJ1bkNvbW1hbmRPcHRpb25z
WzpmbGFreV0pCisgICAgZW5kCisgICAgZGVmIGFyZ3VtZW50c01hcHBlcihhcmdzKQorICAgICAg
ICBhcmdzCisgICAgZW5kCisgICAgIyBXZSByZWd1bGFybHkgcGxhY2UgUGxhbnMgaW4gY29udGFp
bmVycywgYnV0IG1heSBtb2RpZnkgQGZsYWt5CisgICAgIyBhZnRlciB0aGUgZmFjdDsgb25seSBo
YXNoIG9uIEBpbmRleCBpbnN0ZWFkLgorICAgIGRlZiBoYXNoCisgICAgICAgIEBpbmRleAorICAg
IGVuZAorICAgIGRlZiB0b19zCisgICAgICAgICIje0BpbmRleH0iCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgVGVzdFJ1bm5lcgorICAgIGRlZiBpbml0aWFsaXplKHRlc3RSdW5uZXJUeXBlLCBydW5u
ZXJEaXIpCisgICAgICAgIEB0ZXN0UnVubmVyVHlwZSA9IHRlc3RSdW5uZXJUeXBlCisgICAgICAg
IEBydW5uZXJEaXIgPSBydW5uZXJEaXIKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZShydW5saXN0
LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBwcmVw
YXJlU2NyaXB0cyhydW5saXN0KQorICAgICAgICBwcmVwYXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlh
bFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgZW5kCisgICAgZGVmIHBy
ZXBhcmVTY3JpcHRzKHJ1bmxpc3QpCisgICAgICAgIERpci5ta2RpcihAcnVubmVyRGlyKSB1bmxl
c3MgQHJ1bm5lckRpci5kaXJlY3Rvcnk/CisgICAgICAgIHRvRGVsZXRlID0gW10KKyAgICAgICAg
RGlyLmZvcmVhY2goQHJ1bm5lckRpcikgeworICAgICAgICAgICAgfCBmaWxlbmFtZSB8CisgICAg
ICAgICAgICBpZiBmaWxlbmFtZSA9fiAvXnRlc3RfLworICAgICAgICAgICAgICAgIHRvRGVsZXRl
IDw8IGZpbGVuYW1lCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorCisgICAgICAgIHRvRGVs
ZXRlLmVhY2ggeworICAgICAgICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgICAgICBGaWxlLnVu
bGluayhAcnVubmVyRGlyICsgZmlsZW5hbWUpCisgICAgICAgIH0KKworICAgICAgICAjIFdyaXRl
IHRlc3Qgc2NyaXB0cyBpbiBwYXJhbGxlbCBhcyB0aGlzIGlzIGJvdGggYW4gZXhwZW5zaXZlIGFu
ZCBhCisgICAgICAgICMgaGlnaGx5IElPIGludGVuc2l2ZSBvcGVyYXRpb24sIGJ1dCBlYWNoIHNj
cmlwdCBpcyBpbmRlcGVuZGVudCBhbmQKKyAgICAgICAgIyB0aGUgb3BlcmF0aW9uIGlzIHB1cmUg
b3RoZXIgdGhhbiB3cml0aW5nIHRoZSB1bmlxdWUgcnVuIHNjcmlwdC4KKyAgICAgICAgcGFyYWxs
ZWxFYWNoKHJ1bmxpc3QpIGRvIHwgcGxhbiB8CisgICAgICAgICAgICBwbGFuLndyaXRlUnVuU2Ny
aXB0KEBydW5uZXJEaXIgKyAidGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAgICAgIGVu
ZAorICAgIGVuZAorICAgIGRlZiBzZWxmLmNyZWF0ZSh0ZXN0UnVubmVyVHlwZSwgcnVubmVyRGly
KQorICAgICAgICBjbHMgPSBuaWwKKyAgICAgICAgY2FzZSB0ZXN0UnVubmVyVHlwZQorICAgICAg
ICB3aGVuIDpzaGVsbAorICAgICAgICAgICAgY2xzID0gVGVzdFJ1bm5lclNoZWxsCisgICAgICAg
IHdoZW4gOm1ha2UKKyAgICAgICAgICAgIGNscyA9IFRlc3RSdW5uZXJNYWtlCisgICAgICAgIHdo
ZW4gOnJ1YnkKKyAgICAgICAgICAgIGNscyA9IFRlc3RSdW5uZXJSdWJ5CisgICAgICAgIHdoZW4g
OmdudXBhcmFsbGVsCisgICAgICAgICAgICBjbHMgPSBUZXN0UnVubmVyR251UGFyYWxsZWwKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVua25vd24gdGVzdCBydW5uZXIgdHlwZTog
I3t0ZXN0UnVubmVyVHlwZS50b19zfSIKKyAgICAgICAgZW5kCisgICAgICAgIHJldHVybiBjbHMu
bmV3KHRlc3RSdW5uZXJUeXBlLCBydW5uZXJEaXIpCisgICAgZW5kCitlbmQKKwogcmVxdWlyZV9y
ZWxhdGl2ZSAid2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLSN7JHRlc3RXcml0ZXJ9
IgogCiBkZWYgc2hvdWxkQ29sbGVjdENvbnRpbnVvdXNseT8KQEAgLTU3Nyw3ICs3MDEsNyBAQCBl
bmQKIAogQ09MTEVDVF9DT05USU5VT1VTTFlfT1BUSU9OUyA9IHNob3VsZENvbGxlY3RDb250aW51
b3VzbHk/ID8gWyItLWNvbGxlY3RDb250aW51b3VzbHk9dHJ1ZSIsICItLXVzZUdlbmVyYXRpb25h
bEdDPWZhbHNlIiwgIi0tdmVyaWZ5R0M9dHJ1ZSJdIDogW10KIAotJHNlcmlhbFJ1bmxpc3QgPSBb
XQorJHNlcmlhbFBsYW5zID0gU2V0Lm5ldwogJHJ1bmxpc3QgPSBbXQogCiBkZWYgZnJhbWV3b3Jr
RnJvbUpTQ1BhdGgoanNjUGF0aCkKQEAgLTY1MCw3ICs3NzQsNyBAQCBkZWYgYWRkUnVuQ29tbWFu
ZChraW5kLCBjb21tYW5kLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIsICphZGRpdGlvbmFs
RW52KQogICAgIGlmICRmaWx0ZXIgYW5kIG5hbWUgIX4gJGZpbHRlcgogICAgICAgICByZXR1cm4K
ICAgICBlbmQKLSAgICBwbGFuID0gUGxhbi5uZXcoCisgICAgcGxhbiA9IFBsYW4uY3JlYXRlKAog
ICAgICAgICAkYmVuY2htYXJrRGlyZWN0b3J5LCBjb21tYW5kLCAiI3skY29sbGVjdGlvbk5hbWV9
LyN7JGJlbmNobWFya30iLCBuYW1lLCBvdXRwdXRIYW5kbGVyLAogICAgICAgICBlcnJvckhhbmRs
ZXIpCiAgICAgcGxhbi5hZGRpdGlvbmFsRW52LnB1c2goKmFkZGl0aW9uYWxFbnYpCkBAIC02NTks
NyArNzgzLDcgQEAgZGVmIGFkZFJ1bkNvbW1hbmQoa2luZCwgY29tbWFuZCwgb3V0cHV0SGFuZGxl
ciwgZXJyb3JIYW5kbGVyLCAqYWRkaXRpb25hbEVudikKICAgICAgICAgIyB0aGF0IHdlIGNhbiB0
cmVhdCB0aGVtIHNwZWNpYWxseSB3aGVuIHNjaGVkdWxpbmcsIGJ1dCBrZWVwCiAgICAgICAgICMg
aXQgaW4gdGhlICRydW5saXN0IGZvciBjb2RlIHRoYXQgZG9zbid0IGNhcmUgYWJvdXQKICAgICAg
ICAgIyBzY2hlZHVsaW5nLgotICAgICAgICAkc2VyaWFsUnVubGlzdCA8PCBwbGFuCisgICAgICAg
ICRzZXJpYWxQbGFucy5hZGQocGxhbikKICAgICBlbmQKIAogICAgIGlmICRudW1DaGlsZFByb2Nl
c3NlcyA+IDEgYW5kICRydW5Db21tYW5kT3B0aW9uc1s6aXNTbG93XQpAQCAtNzE3LDYgKzg0MSw0
OCBAQCBkZWYgc2VyaWFsIQogICAgICRydW5Db21tYW5kT3B0aW9uc1s6c2VyaWFsXSA9IHRydWUK
IGVuZAogCisKK2NsYXNzIEZsYWt5CisgICAgYXR0cl9yZWFkZXIgOnBhc3NQZXJjZW50YWdlLCA6
bWF4VHJpZXMKKyAgICBkZWYgaW5pdGlhbGl6ZShwYXNzUGVyY2VudGFnZSwgbWF4VHJpZXMpCisg
ICAgICAgIEBwYXNzUGVyY2VudGFnZSA9IHBhc3NQZXJjZW50YWdlCisgICAgICAgIEBtYXhUcmll
cyA9IG1heFRyaWVzCisgICAgZW5kCisgICAgZGVmIHRvX3MKKyAgICAgICAgIkZsYWt5KCN7QHBh
c3NQZXJjZW50YWdlfSwgI3tAbWF4VHJpZXN9KSIKKyAgICBlbmQKKyAgICBkZWYgcmVzdWx0KHN0
YXR1c2VzKQorICAgICAgICBpZiBzdGF0dXNlcy5sZW5ndGggPiBAbWF4VHJpZXMKKyAgICAgICAg
ICAgICMgVGhpcyBjb3VsZCBoYXBwZW4gaWYgKGJlY2F1c2Ugb2YgcmVtb3RlcyBkaXNhcHBlYXJp
bmcKKyAgICAgICAgICAgICMgYW5kIHJlYXBwZWFyaW5nKSB0aGVyZSBhcmUgbXVsdGlwbGUgcnVu
cyBmb3IgdGhlIGxhc3QKKyAgICAgICAgICAgICMgdHJ5IGZvciBmbGFreSB0ZXN0LiBKdXN0IGln
bm9yZSBhbnkgZXh0cmEgc3RhdHVzZXMuCisgICAgICAgICAgICBzdGF0dXNlcyA9IHN0YXR1c2Vz
LnRha2UoQG1heFRyaWVzKQorICAgICAgICBlbmQKKyAgICAgICAgc3VjY2Vzc2VzID0gc3VjY2Vz
c2Z1bFN0YXR1c2VzKHN0YXR1c2VzKQorICAgICAgICByZW1haW5pbmcgPSBAbWF4VHJpZXMgLSBz
dGF0dXNlcy5sZW5ndGgKKyAgICAgICAgcmVxdWlyZWRTdWNjZXNzZXMgPSAoQHBhc3NQZXJjZW50
YWdlICogQG1heFRyaWVzKS5jZWlsCisgICAgICAgIHJldCA9IG5pbCAjICJoYXMgbm90IGNvbXBs
ZXRlZCB5ZXQiCisgICAgICAgIGlmIHN1Y2Nlc3NlcyA+PSByZXF1aXJlZFN1Y2Nlc3NlcworICAg
ICAgICAgICAgcmV0ID0gdHJ1ZQorICAgICAgICBlbHNpZiAoc3VjY2Vzc2VzICsgcmVtYWluaW5n
KSA8IHJlcXVpcmVkU3VjY2Vzc2VzCisgICAgICAgICAgICByZXQgPSBmYWxzZQorICAgICAgICBl
bmQKKyAgICAgICAgcHV0ZCgiI3tzZWxmfS5yZXN1bHQoI3tzdGF0dXNlc30pID0+ICN7cmV0fSIp
CisgICAgICAgIHJldAorICAgIGVuZAorICAgIHByaXZhdGUKKyAgICBkZWYgc3VjY2Vzc2Z1bFN0
YXR1c2VzKHN0YXR1c2VzKQorICAgICAgICBzdGF0dXNlcy5jb3VudCB7CisgICAgICAgICAgICB8
c3RhdHVzfAorICAgICAgICAgICAgc3RhdHVzID09IFNUQVRVU19GSUxFX1BBU1MKKyAgICAgICAg
fQorICAgIGVuZAorZW5kCisKK2RlZiBmbGFreSEocGFzc1BlcmNlbnRhZ2UsIG1heFRyaWVzKQor
ICAgICRydW5Db21tYW5kT3B0aW9uc1s6Zmxha3ldID0gRmxha3kubmV3KHBhc3NQZXJjZW50YWdl
LCBtYXhUcmllcykKK2VuZAorCiBkZWYgcmVxdWlyZU9wdGlvbnMoKm9wdGlvbnMpCiAgICAgJHRl
c3RTcGVjaWZpY1JlcXVpcmVkT3B0aW9ucyArPSBvcHRpb25zCiBlbmQKQEAgLTE4NDgsMzQgKzIw
MTQsNiBAQCBkZWYgaGFuZGxlQ29sbGVjdGlvbihjb2xsZWN0aW9uKQogICAgIGVuZAogZW5kCiAK
LWRlZiBhcHBlbmRGYWlsdXJlKHBsYW4pCi0gICAgRmlsZS5vcGVuKCRvdXRwdXREaXIgKyAiZmFp
bGVkIiwgImEiKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgIG91dHAucHV0cyBwbGFuLm5h
bWUKLSAgICB9Ci1lbmQKLQotZGVmIGFwcGVuZFBhc3MocGxhbikKLSAgICBGaWxlLm9wZW4oJG91
dHB1dERpciArICJwYXNzZWQiLCAiYSIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgb3V0
cC5wdXRzIHBsYW4ubmFtZQotICAgIH0KLWVuZAotCi1kZWYgYXBwZW5kTm9SZXN1bHQocGxhbikK
LSAgICBGaWxlLm9wZW4oJG91dHB1dERpciArICJub3Jlc3VsdCIsICJhIikgewotICAgICAgICB8
IG91dHAgfAotICAgICAgICBvdXRwLnB1dHMgcGxhbi5uYW1lCi0gICAgfQotZW5kCi0KLWRlZiBh
cHBlbmRSZXN1bHQocGxhbiwgZGlkUGFzcykKLSAgICBGaWxlLm9wZW4oJG91dHB1dERpciArICJy
ZXN1bHRzIiwgImEiKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgIG91dHAucHV0cyAiI3tw
bGFuLm5hbWV9OiAje2RpZFBhc3MgPyAnUEFTUycgOiAnRkFJTCd9IgotICAgIH0KLWVuZAotCiBk
ZWYgcHJlcGFyZUJ1bmRsZQogICAgIHJhaXNlIGlmICRidW5kbGUKIApAQCAtMjA1OCw1NCArMjE5
NiwxMSBAQCBkZWYgcGFyYWxsZWxFYWNoKGFycmF5LCAmYmxvY2spCiAgICAgZW5kCiBlbmQKIAot
ZGVmIHByZXBhcmVUZXN0UnVubmVyKHJlbW90ZUluZGV4PTApCi0gICAgcmFpc2UgaWYgJGJ1bmRs
ZQotCi0gICAgJHJ1bmxpc3QuZWFjaF93aXRoX2luZGV4IHsKLSAgICAgICAgfCBwbGFuLCBpbmRl
eCB8Ci0gICAgICAgIHBsYW4uaW5kZXggPSBpbmRleAotICAgIH0KLQotICAgIERpci5ta2Rpcigk
cnVubmVyRGlyKSB1bmxlc3MgJHJ1bm5lckRpci5kaXJlY3Rvcnk/Ci0gICAgdG9EZWxldGUgPSBb
XQotICAgIERpci5mb3JlYWNoKCRydW5uZXJEaXIpIHsKLSAgICAgICAgfCBmaWxlbmFtZSB8Ci0g
ICAgICAgIGlmIGZpbGVuYW1lID1+IC9edGVzdF8vCi0gICAgICAgICAgICB0b0RlbGV0ZSA8PCBm
aWxlbmFtZQotICAgICAgICBlbmQKLSAgICB9Ci0gICAgCi0gICAgdG9EZWxldGUuZWFjaCB7Ci0g
ICAgICAgIHwgZmlsZW5hbWUgfAotICAgICAgICBGaWxlLnVubGluaygkcnVubmVyRGlyICsgZmls
ZW5hbWUpCi0gICAgfQotCi0gICAgIyBXcml0ZSB0ZXN0IHNjcmlwdHMgaW4gcGFyYWxsZWwgYXMg
dGhpcyBpcyBib3RoIGFuIGV4cGVuc2l2ZSBhbmQgYQotICAgICMgaGlnaGx5IElPIGludGVuc2l2
ZSBvcGVyYXRpb24sIGJ1dCBlYWNoIHNjcmlwdCBpcyBpbmRlcGVuZGVudCBhbmQKLSAgICAjIHRo
ZSBvcGVyYXRpb24gaXMgcHVyZSBvdGhlciB0aGFuIHdyaXRpbmcgdGhlIHVuaXF1ZSBydW4gc2Ny
aXB0LgotICAgIHBhcmFsbGVsRWFjaCgkcnVubGlzdCkgZG8gfCBwbGFuIHwKLSAgICAgICAgcGxh
bi53cml0ZVJ1blNjcmlwdCgkcnVubmVyRGlyICsgInRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0i
KQotICAgIGVuZAotCi0gICAgY2FzZSAkdGVzdFJ1bm5lclR5cGUKLSAgICB3aGVuIDptYWtlCi0g
ICAgICAgIHByZXBhcmVNYWtlVGVzdFJ1bm5lcihyZW1vdGVJbmRleCkKLSAgICB3aGVuIDpzaGVs
bAotICAgICAgICBwcmVwYXJlU2hlbGxUZXN0UnVubmVyCi0gICAgd2hlbiA6cnVieQotICAgICAg
ICBwcmVwYXJlUnVieVRlc3RSdW5uZXIKLSAgICB3aGVuIDpnbnVwYXJhbGxlbAotICAgICAgICBw
cmVwYXJlR251UGFyYWxsZWxUZXN0UnVubmVyCi0gICAgZWxzZQotICAgICAgICByYWlzZSAiVW5r
bm93biB0ZXN0IHJ1bm5lciB0eXBlOiAjeyR0ZXN0UnVubmVyVHlwZS50b19zfSIKLSAgICBlbmQK
LWVuZAotCiBkZWYgY2xlYW5SdW5uZXJEaXJlY3RvcnkKICAgICByYWlzZSB1bmxlc3MgJGJ1bmRs
ZQogICAgIERpci5mb3JlYWNoKCRydW5uZXJEaXIpIHsKICAgICAgICAgfCBmaWxlbmFtZSB8Ci0g
ICAgICAgIG5leHQgdW5sZXNzIGZpbGVuYW1lID1+IC9edGVzdF9mYWlsLworICAgICAgICBuZXh0
IHVubGVzcyBmaWxlbmFtZSA9fiAvXiN7U1RBVFVTX0ZJTEVfUFJFRklYfS8KICAgICAgICAgRmls
ZVV0aWxzLnJtX2YgJHJ1bm5lckRpciArIGZpbGVuYW1lCiAgICAgfQogZW5kCkBAIC0yMjc0LDkg
KzIzNjksOSBAQCBkZWYgZXhwb3J0QmFzZUVudmlyb25tZW50VmFyaWFibGVzKGVzY2FwZSkKICAg
ICBdLmpvaW4oIiIpCiBlbmQKIAotZGVmIHJ1blRlc3RSdW5uZXIocmVtb3RlSW5kZXg9MCkKLSAg
ICBpZiAkcmVtb3RlCi0gICAgICAgIHJlbW90ZUhvc3QgPSAkcmVtb3RlSG9zdHNbcmVtb3RlSW5k
ZXhdCitkZWYgcnVuVGVzdFJ1bm5lcih0ZXN0UnVubmVyLCByZW1vdGVIb3N0cywgcmVtb3RlSW5k
ZXg9MCkKKyAgICBpZiBub3QgcmVtb3RlSG9zdHMubmlsPworICAgICAgICByZW1vdGVIb3N0ID0g
cmVtb3RlSG9zdHNbcmVtb3RlSW5kZXhdCiAgICAgICAgIGdldFJlbW90ZURpcmVjdG9yeUlmTmVl
ZGVkKHJlbW90ZUhvc3QpCiAgICAgICAgIGNvcHlCdW5kbGVUb1JlbW90ZShyZW1vdGVIb3N0KQog
ICAgICAgICByZW1vdGVTY3JpcHQgPSAiXCIiCkBAIC0yMjg2LDExICsyMzgxLDExIEBAIGRlZiBy
dW5UZXN0UnVubmVyKHJlbW90ZUluZGV4PTApCiAgICAgICAgIHJlbW90ZVNjcmlwdCArPSAiY2Qg
I3skb3V0cHV0RGlyLmJhc2VuYW1lfS8ucnVubmVyICYmICIKICAgICAgICAgcmVtb3RlU2NyaXB0
ICs9IGV4cG9ydEJhc2VFbnZpcm9ubWVudFZhcmlhYmxlcyh0cnVlKQogICAgICAgICAkZW52VmFy
cy5lYWNoIHsgfHZhcnwgcmVtb3RlU2NyaXB0ICs9ICJleHBvcnQgIiA8PCB2YXIgPDwgIlxuIiB9
Ci0gICAgICAgIHJlbW90ZVNjcmlwdCArPSAiI3t0ZXN0UnVubmVyQ29tbWFuZChyZW1vdGVJbmRl
eCl9XCIiCisgICAgICAgIHJlbW90ZVNjcmlwdCArPSAiI3t0ZXN0UnVubmVyLmNvbW1hbmQocmVt
b3RlSW5kZXgpfVwiIgogICAgICAgICBydW5BbmRNb25pdG9yVGVzdFJ1bm5lckNvbW1hbmQoWyJz
c2giLCAiLW8iLCAiTm9Ib3N0QXV0aGVudGljYXRpb25Gb3JMb2NhbGhvc3Q9eWVzIiwgIi1wIiwg
cmVtb3RlSG9zdC5wb3J0LnRvX3MsICIje3JlbW90ZUhvc3QudXNlcn1AI3tyZW1vdGVIb3N0Lmhv
c3R9IiwgcmVtb3RlU2NyaXB0XSkKICAgICBlbHNlCiAgICAgICAgIERpci5jaGRpcigkcnVubmVy
RGlyKSB7Ci0gICAgICAgICAgICBydW5BbmRNb25pdG9yVGVzdFJ1bm5lckNvbW1hbmQoU2hlbGx3
b3Jkcy5zaGVsbHNwbGl0KHRlc3RSdW5uZXJDb21tYW5kKSkKKyAgICAgICAgICAgIHJ1bkFuZE1v
bml0b3JUZXN0UnVubmVyQ29tbWFuZChTaGVsbHdvcmRzLnNoZWxsc3BsaXQodGVzdFJ1bm5lci5j
b21tYW5kKSkKICAgICAgICAgfQogICAgIGVuZAogZW5kCkBAIC0yMzA3LDM4ICsyNDAyLDIxIEBA
IGRlZiBwcm9jZXNzU3RhdHVzTGluZShtYXAsIGxpbmUpCiAgICAgcnVuSWQgPSBtZFs6cnVuSWRd
CiAgICAgcmVzdWx0ID0gbWRbOnJlc3VsdF0KICAgICBpZiBydW5JZCAhPSAkcnVuVW5pcXVlSWQK
LSAgICAgICAgIyBUaGlzIG1heSBjb25jZWl2YWJseSBoYXBwZW4gaWYgYSByZW1vdGUgZ29lcwot
ICAgICAgICAjIGF3YXkgaW4gdGhlIG1pZGRsZSBvZiBhIHJ1biBhbmQgY29tZXMgYmFjawotICAg
ICAgICAjIG9ubGluZSBpbiB0aGUgbWlkZGxlIG9mIGEgZGlmZmVyZW50IHJ1bi4KLSAgICAgICAg
JHN0ZGVyci5wdXRzKCJJZ25vcmluZyBzdGFsZSBzdGF0dXMgZmlsZSBmb3IgI3tpbmRleH0gKElE
ICN7cnVuSWR9IGJ1dCBjdXJyZW50IElEIGlzICN7JHJ1blVuaXF1ZUlkfSkiKQotICAgICAgICBy
ZXR1cm4KLSAgICBlbmQKLSAgICBpZiBtYXAuaGFzX2tleT8oaW5kZXgpCi0gICAgICAgICMgT25l
IHNjZW5hcmlvIGluIHdoaWNoIHRoaXMgY291bGQgaGFwcGVuOgotICAgICAgICAjIFRlc3QgVCBy
dW5zIG9uIHJlbW90ZSBob3N0IEEgYW5kCi0gICAgICAgICMgICAxLiB0aGUgc3RhdHVzIGZpbGUg
cmVhY2hlcyBBJ3MgZGlzawotICAgICAgICAjICAgMi4gc29tZWhvdyB0aGUgZ251IHBhcmFsbGVs
IHJ1bm5lciBpcyBub3QgbWFkZSBhd2FyZSBvZiB0aGUgdGVzdCdzIGNvbXBsZXRpb24gKHBhY2tl
dCBsb3NzPykKLSAgICAgICAgIyAgIDMuIG1hY2hpbmUgQSBjcmFzaGVzCi0gICAgICAgICMgICA0
LiBnbnUgcGFyYWxsZWwgcmUtc2NoZWR1bGVzIHRoZSB0ZXN0IHRvIHJ1biBvbiByZW1vdGUgaG9z
dCBCLCB3aGVyZSBpdCBydW5zIHRvIGNvbXBsZXRpb24KLSAgICAgICAgIyAgIDUuIEIgY29tZXMg
YmFjayBvbmxpbmUgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHJ1bgotICAgICAgICAjICAgNi4gd2Ug
Y29sbGVjdCB0aGUgc3RhdHVzIGZpbGVzIGZyb20gYWxsIHJlbW90ZXMgYW5kIGVuZCB1cCB3aXRo
IHR3byBzdGF0dXMgZmlsZXMgZm9yIFQuCi0gICAgICAgIHByZXYgPSBtYXBbaW5kZXhdCi0gICAg
ICAgICMgbWFwW2luZGV4XSBob2xkcwotICAgICAgICAjIC0gYSBudW1iZXIsIGlmIGFsbCByZXN1
bHRzIGNvZGVzIHdlJ3ZlIG9ic2VydmVkIGZvciBhIHRlc3QgYXJlIHRoZSBzYW1lCi0gICAgICAg
ICMgLSBhbiBhcnJheSwgaWYgdGhleSBkaXZlcmdlLgotICAgICAgICBpZiBwcmV2LmlzX2E/KEFy
cmF5KQotICAgICAgICAgICAgcHJldi5wdXNoKHJlc3VsdCkKLSAgICAgICAgZWxzaWYgcHJldiAh
PSByZXN1bHQKLSAgICAgICAgICAgICMgSWYgdGhlIHR3byByZXN1bHRzIGRpZmZlciwga2VlcCB0
aGVtCi0gICAgICAgICAgICAjIGJvdGguIFRoaXMgaXMgc2ltcGx5IGEgd2F5IHRvIG1ha2Ugbm90
ZSBvZgotICAgICAgICAgICAgIyB0aGUgZGl2ZXJnZW5jZSAoZm9yIGxhdGVyIHJlcG9ydGluZyku
Ci0gICAgICAgICAgICBtYXBbaW5kZXhdID0gW3ByZXYsIHJlc3VsdF0KKyAgICAgICAgaWYgJGJ1
bmRsZQorICAgICAgICAgICAgIyBUaGUgc2NyaXB0cyBpbiB0aGUgYnVuZGxlIGhhdmUgdGhlaXIg
b3duIHJ1bklkIGVtYmVkZGVkLAorICAgICAgICAgICAgIyBqdXN0IGlnbm9yZSB0aGUgdmFsdWUu
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICMgR290IHRoZSBzYW1lIHJlc3VsdCwgbm8gbmVl
ZCB0byBkbyBhbnl0aGluZy4KKyAgICAgICAgICAgICMgVGhpcyBtYXkgY29uY2VpdmFibHkgaGFw
cGVuIGlmIGEgcmVtb3RlIGdvZXMKKyAgICAgICAgICAgICMgYXdheSBpbiB0aGUgbWlkZGxlIG9m
IGEgcnVuIGFuZCBjb21lcyBiYWNrCisgICAgICAgICAgICAjIG9ubGluZSBpbiB0aGUgbWlkZGxl
IG9mIGEgZGlmZmVyZW50IHJ1bi4KKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiSWdub3Jpbmcg
c3RhbGUgc3RhdHVzIGZpbGUgZm9yICN7aW5kZXh9IChJRCAje3J1bklkfSBidXQgY3VycmVudCBJ
RCBpcyAjeyRydW5VbmlxdWVJZH0pIikKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBlbmQK
LSAgICAgICAgJHN0ZGVyci5wdXRzKCJEdXBsaWNhdGUgc3RhdGUgZmlsZSBmb3IgI3tpbmRleH06
ICN7bWFwW2luZGV4XX0iKQorICAgIGVuZAorICAgIGlmIG1hcC5oYXNfa2V5PyhpbmRleCkKKyAg
ICAgICAgbWFwW2luZGV4XS5wdXNoKHJlc3VsdCkKICAgICBlbHNlCi0gICAgICAgIG1hcFtpbmRl
eF0gPSByZXN1bHQKKyAgICAgICAgbWFwW2luZGV4XSA9IFtyZXN1bHRdCiAgICAgZW5kCiBlbmQK
IApAQCAtMjM3Miw1OCArMjQ1MCwyMyBAQCBkZWYgZ2V0U3RhdHVzTWFwKG1hcD17fSkKICAgICBt
YXAKIGVuZAogCi1kZWYgZ2V0Q29tcGxldGVkVGVzdHNGcm9tU3RhdHVzTWFwKHN0YXR1c01hcCkK
LSAgICBjb21wbGV0ZWRUZXN0cyA9IHt9Ci0gICAgJHJ1bmxpc3QuZWFjaF93aXRoX2luZGV4IHsK
LSAgICAgICAgfCBwbGFuLCBpbmRleCB8Ci0gICAgICAgIGlmIHN0YXR1c01hcC5oYXNfa2V5Pyhp
bmRleCkKLSAgICAgICAgICAgIGNvbXBsZXRlZFRlc3RzW3BsYW5dID0gbmlsCi0gICAgICAgIGVu
ZAotICAgIH0KLSAgICBjb21wbGV0ZWRUZXN0cwotZW5kCi0KIGRlZiBkZXRlY3RGYWlsdXJlcyhz
dGF0dXNNYXA9e30pCiAgICAgcmFpc2UgaWYgJGJ1bmRsZQotICAgIG5vcmVzdWx0ID0gMAogICAg
IGlmIHN0YXR1c01hcC5zaXplID09IDAKICAgICAgICAgc3RhdHVzTWFwID0gZ2V0U3RhdHVzTWFw
CiAgICAgZW5kCi0gICAgZmFtaWx5TWFwID0ge30KIAotICAgICRydW5saXN0LmVhY2hfd2l0aF9p
bmRleCB7Ci0gICAgICAgIHwgcGxhbiwgaW5kZXggfAotICAgICAgICB1bmxlc3MgZmFtaWx5TWFw
W3BsYW4uZmFtaWx5XQotICAgICAgICAgICAgZmFtaWx5TWFwW3BsYW4uZmFtaWx5XSA9IFtdCi0g
ICAgICAgIGVuZAotICAgICAgICBpZiBub3Qgc3RhdHVzTWFwLmhhc19rZXk/KGluZGV4KQotICAg
ICAgICAgICAgYXBwZW5kTm9SZXN1bHQocGxhbikKLSAgICAgICAgICAgIG5vcmVzdWx0ICs9IDEK
LSAgICAgICAgICAgIG5leHQKLSAgICAgICAgZW5kCi0gICAgICAgIHJlc3VsdCA9IG5pbAotICAg
ICAgICAjIElmIGFueSBvZiB0aGUgcmVzdWx0cyB3ZSBnb3Qgd2FzIGEgcGFzcywgY29uc2lkZXIg
dGhlIHRlc3QKLSAgICAgICAgIyBzdWNjZXNzZnVsLiBUaGUgYXNzdW1wdGlvbiBoZXJlIGlzIHRo
YXQgZmFpbHVyZXMgYXJlIGJlY2F1c2UKLSAgICAgICAgIyBvZiBpbmZyYXN0cnVjdHVyZSBpc3N1
ZXMgKHdoaWNoIGlzIHdoeSB0aGUgdGVzdCB3YXMgcnVuCi0gICAgICAgICMgbXVsdGlwbGUgdGlt
ZXMgaW4gdGhlIGZpcnN0IHBsYWNlKS4KLSAgICAgICAgdGVzdFdhc1N1Y2Nlc3NmdWwgPSBzdGF0
dXNNYXBbaW5kZXhdLmluY2x1ZGU/KFNUQVRVU19GSUxFX1BBU1MpCi0gICAgICAgIGlmIHRlc3RX
YXNTdWNjZXNzZnVsCi0gICAgICAgICAgICBhcHBlbmRQYXNzKHBsYW4pCi0gICAgICAgICAgICBy
ZXN1bHQgPSAiUEFTUyIKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kRmFpbHVyZShw
bGFuKQotICAgICAgICAgICAgcmVzdWx0ID0gIkZBSUwiCi0gICAgICAgIGVuZAotICAgICAgICBh
cHBlbmRSZXN1bHQocGxhbiwgdGVzdFdhc1N1Y2Nlc3NmdWwpCi0gICAgICAgIGZhbWlseU1hcFtw
bGFuLmZhbWlseV0gPDwgeyA6cmVzdWx0ID0+IHJlc3VsdCwgOnBsYW4gPT4gcGxhbiB9Ci0gICAg
fQorICAgIGV2YWx1YXRvciA9IFRlc3RSZXN1bHRFdmFsdWF0b3JGaW5hbC5uZXcoJHJ1bmxpc3Qs
IHN0YXR1c01hcCkKKyAgICBldmFsdWF0b3IudmlzaXQhCiAKLSAgICBpZiBub3Jlc3VsdCA+IDAK
LSAgICAgICAgJHN0ZGVyci5wdXRzKCJDb3VsZCBub3QgZ2V0IHRoZSBleGl0IHN0YXR1cyBmb3Ig
I3tub3Jlc3VsdH0gdGVzdHMiKQorICAgIGlmIGV2YWx1YXRvci5ub3Jlc3VsdCA+IDAKKyAgICAg
ICAgJHN0ZGVyci5wdXRzKCJDb3VsZCBub3QgZ2V0IHRoZSBleGl0IHN0YXR1cyBmb3IgI3tldmFs
dWF0b3Iubm9yZXN1bHR9IHRlc3RzIikKICAgICAgICAgIyBXZSBjYW4ndCBjaGFuZ2Ugb3VyIGV4
aXQgY29kZSwgYXMgcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCiAgICAgICAgICMgZXhwZWN0cyAw
IGV2ZW4gd2hlbiB0aGVyZSBhcmUgZmFpbHVyZXMuCiAgICAgZW5kCiAKKyAgICBmYW1pbHlNYXAg
PSBldmFsdWF0b3IuZmFtaWx5TWFwCisKICAgICBGaWxlLm9wZW4oJG91dHB1dERpciArICJyZXN1
bHRzQnlGYW1pbHkiLCAidyIpIHsKICAgICAgICAgfCBvdXRwIHwKICAgICAgICAgZmlyc3QgPSB0
cnVlCkBAIC0yNDczLDYgKzI1MTYsNyBAQCBlbmQKIGNsZWFuKCRvdXRwdXREaXIgKyAiZmFpbGVk
IikKIGNsZWFuKCRvdXRwdXREaXIgKyAicGFzc2VkIikKIGNsZWFuKCRvdXRwdXREaXIgKyAibm9y
ZXN1bHQiKQorY2xlYW4oJG91dHB1dERpciArICJmbGFreSIpCiBjbGVhbigkb3V0cHV0RGlyICsg
InJlc3VsdHMiKQogY2xlYW4oJG91dHB1dERpciArICJyZXN1bHRzQnlGYW1pbHkiKQogY2xlYW4o
JG91dHB1dERpciArICIudm0iKQpAQCAtMjUxNSwyNyArMjU1OSwxNyBAQCBFTlZbIlRaIl0gPSAi
VVMvUGFjaWZpYyI7CiBkZWYgcnVuQnVuZGxlCiAgICAgcmFpc2UgdW5sZXNzICRidW5kbGUKIAot
ICAgIGNsZWFuUnVubmVyRGlyZWN0b3J5Ci0gICAgY2xlYW5PbGRSZXN1bHRzCi0gICAgcnVuVGVz
dFJ1bm5lcgotICAgIGNsZWFuRW1wdHlSZXN1bHRGaWxlcwotZW5kCi0KLWRlZiBydW5Ob3JtYWwK
LSAgICByYWlzZSBpZiAkYnVuZGxlIG9yICR0YXJiYWxsCi0KLSAgICBwcmVwYXJlQnVuZGxlCi0g
ICAgcHJlcGFyZVRlc3RSdW5uZXIKLSAgICBydW5UZXN0UnVubmVyCi0gICAgY2xlYW5FbXB0eVJl
c3VsdEZpbGVzCi0gICAgZGV0ZWN0RmFpbHVyZXMKKyAgICB0ZXN0UnVubmVyID0gVGVzdFJ1bm5l
ci5jcmVhdGUoJHRlc3RSdW5uZXJUeXBlLCAkcnVubmVyRGlyKQorICAgIGV2YWx1YXRvciA9IEJ1
bmRsZVRlc3RzRXhlY3V0b3IubmV3KCRydW5saXN0LCAkc2VyaWFsUGxhbnMsIElURVJBVElPTl9M
SU1JVFMsICR0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0UnVubmVyKQorICAgIGV2YWx1YXRvci5s
b29wCiBlbmQKIAogZGVmIHJ1blRhcmJhbGwKICAgICByYWlzZSB1bmxlc3MgJHRhcmJhbGwKIAot
ICAgIHByZXBhcmVCdW5kbGUgCi0gICAgcHJlcGFyZVRlc3RSdW5uZXIKKyAgICBwcmVwYXJlQnVu
ZGxlCisgICAgdGVzdFJ1bm5lciA9IFRlc3RSdW5uZXIuY3JlYXRlKCR0ZXN0UnVubmVyVHlwZSwg
JHJ1bm5lckRpcikKKyAgICB0ZXN0UnVubmVyLnByZXBhcmUoJHJ1bmxpc3QsICRzZXJpYWxQbGFu
cywgU2V0Lm5ldywgbmlsKQogICAgIGNvbXByZXNzQnVuZGxlCiBlbmQKIApAQCAtMjU2OSw0NCAr
MjYwMywyOCBAQCBkZWYgZm9yRWFjaFJlbW90ZShyZW1vdGVIb3N0cywgb3B0aW9ucz17fSwgJmJs
aykKICAgICBsaXZlUmVtb3RlcwogZW5kCiAKLWRlZiBydW5SZW1vdGUKLSAgICByYWlzZSB1bmxl
c3MgJHJlbW90ZQotCi0gICAgcHJlcGFyZUJ1bmRsZQotICAgICRyZW1vdGVIb3N0cy5lYWNoX2lu
ZGV4IHsKLSAgICAgICAgfCBpbmRleCB8Ci0gICAgICAgIHByZXBhcmVUZXN0UnVubmVyKGluZGV4
KQotICAgIH0KLSAgICBjb21wcmVzc0J1bmRsZQotICAgIGZvckVhY2hSZW1vdGUoJHJlbW90ZUhv
c3RzKSB7Ci0gICAgICAgIHwgaW5kZXggfAotICAgICAgICBydW5UZXN0UnVubmVyKGluZGV4KQot
ICAgIH0KLSAgICBkZXRlY3RGYWlsdXJlcwotZW5kCi0KLWRlZiBwcmVwYXJlR251UGFyYWxsZWxS
dW5uZXJKb2JzKG5hbWUsIHJ1bmxpc3QsIGV4Y2x1ZGUpCi0gICAgcGF0aCA9ICRydW5uZXJEaXIg
KyBuYW1lCi0gICAgRmlsZVV0aWxzLm1rZGlyX3AoJHJ1bm5lckRpcikKK2NsYXNzIFRlc3RSdW5u
ZXJHbnVQYXJhbGxlbCA8IFRlc3RSdW5uZXIKKyAgICBkZWYgcHJlcGFyZUdudVBhcmFsbGVsUnVu
bmVySm9icyhuYW1lLCBydW5saXN0LCBjb21wbGV0ZWRQbGFucykKKyAgICAgICAgcGF0aCA9IEBy
dW5uZXJEaXIgKyBuYW1lCisgICAgICAgIEZpbGVVdGlscy5ta2Rpcl9wKEBydW5uZXJEaXIpCiAK
LSAgICBGaWxlLm9wZW4ocGF0aCwgInciKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgIHJ1
bmxpc3QuZWFjaCB7Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgaWYgZXhjbHVk
ZS5oYXNfa2V5PyhwbGFuKQotICAgICAgICAgICAgICAgIG5leHQKLSAgICAgICAgICAgIGVuZAot
ICAgICAgICAgICAgb3V0cC5wdXRzKCIuL3Rlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iKQorICAg
ICAgICBGaWxlLm9wZW4ocGF0aCwgInciKSB7CisgICAgICAgICAgICB8IG91dHAgfAorICAgICAg
ICAgICAgcnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAgICAgICB8IHBsYW4gfAorICAgICAgICAg
ICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAg
ICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMo
Ii4vdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICB9CisgICAgZW5kCisgICAgZGVmIHByZXBhcmVSdW5uZXIocnVubGlzdCwgc2VyaWFsUGxh
bnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykKKyAgICAgICAgcHJlcGFyZUdudVBhcmFs
bGVsUnVubmVySm9icygicGFyYWxsZWwtdGVzdHMiLCBydW5saXN0LCBjb21wbGV0ZWRQbGFucyB8
IHNlcmlhbFBsYW5zKQorICAgICAgICBwcmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKCJzZXJp
YWwtdGVzdHMiLCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMpCisgICAgZW5kCiBlbmQKIAot
ZGVmIHByZXBhcmVHbnVQYXJhbGxlbFRlc3RSdW5uZXIoZXhjbHVkZT17fSkKLSAgICBzZXJpYWxU
ZXN0cyA9IHt9Ci0gICAgJHNlcmlhbFJ1bmxpc3QuZWFjaCB7IHxwfCBzZXJpYWxUZXN0c1twXSA9
IG5pbCB9Ci0gICAgcHJlcGFyZUdudVBhcmFsbGVsUnVubmVySm9icygicGFyYWxsZWwtdGVzdHMi
LCAkcnVubGlzdCwgZXhjbHVkZS5tZXJnZShzZXJpYWxUZXN0cykpCi0gICAgcHJlcGFyZUdudVBh
cmFsbGVsUnVubmVySm9icygic2VyaWFsLXRlc3RzIiwgJHNlcmlhbFJ1bmxpc3QsIGV4Y2x1ZGUp
Ci1lbmQKIAogZGVmIHdpdGhHbnVQYXJhbGxlbFNzaFdyYXBwZXIoJmJsaykKICAgICBUZW1wZmls
ZS5vcGVuKCdzc2gtd3JhcHBlcicsICRydW5uZXJEaXIpIHsKQEAgLTI3MjQsMjggKzI3NDIsMTA0
IEBAIGRlZiBydW5HbnVQYXJhbGxlbFJ1bm5lcihyZW1vdGVIb3N0cywgaW5wdXRzLCBvcHRpb25z
PXt9KQogICAgIH0KIGVuZAogCi1kZWYgcnVuR251UGFyYWxsZWwKLSAgICByYWlzZSB1bmxlc3Mg
JHJlbW90ZQotICAgIHByZXBhcmVCdW5kbGUKLSAgICBwcmVwYXJlVGVzdFJ1bm5lcgotICAgIGNv
bXByZXNzQnVuZGxlCi0gICAgc3RhdHVzTWFwID0ge30KLSAgICAjIFRoaXMgaXMgYSBoaWdoLWxl
dmVsIHJldHJ5IGxvb3AuIElmIGEgcmVtb3RlIGhvc3QgZ29lcyBhd2F5IGluCi0gICAgIyB0aGUg
bWlkZGxlIG9mIGEgcnVuIGFuZCBlaXRoZXIgZG9lc24ndCBjb21lIGJhY2sgb25saW5lIG9yIGNv
bWVzCi0gICAgIyBiYWNrIGhhdmluZyByZW1vdmVkIHRoZSByZW1vdGUgZGlyZWN0b3J5ICgqKSwg
Z2V0U3RhdHVzTWFwIHdpbGwgYmUKLSAgICAjIG1pc3NpbmcgcmVzdWx0cyBmb3IgdGhlc2UgdGVz
dHMsIGFsbG93aW5nIHVzIHRvIHJldHJ5IHRoZW0gaW4KLSAgICAjIHRoZSBuZXh0IGl0ZXJhdGlv
bi4KLSAgICAjCi0gICAgIyAoKikgVGhpcyBtYXkgd2VsbCBoYXBwZW4gd2hlbiBydW5uaW5nIHRo
ZSB0ZXN0cyBvbiBlbWJlZGRlZAotICAgICMgYm9hcmRzIHRoYXQgcmVndWxhcmx5IGNvcnJ1cHQg
dGhlaXIgU0QgY2FyZC4gRGVmaW5pdGVseSBhbiBpc3N1ZQotICAgICMgZm9yIHRoZSBjaTIwIGJv
YXJkcyB1c2VkIHRvIHRlc3QgTUlQUy4KLSAgICAjCi0gICAgIyBUaGUgbnVtYmVyIG9mIHRyaWVz
IHNjYWxlcyB3aXRoIHRoZSBudW1iZXIgb2YgcmVtb3RlcyBpbiB1c2UsCi0gICAgIyB3aXRoIGEg
cmVhc29uYWJsZSBmbG9vci4KLSAgICB0cmllcyA9IFszLCAkcmVtb3RlSG9zdHMuc2l6ZSAvIDJd
Lm1heAotICAgIHRyaWVzLnRpbWVzIHsKLSAgICAgICAgfCBpdGVyYXRpb24gfAotICAgICAgICBy
ZW1vdGVIb3N0cyA9ICRyZW1vdGVIb3N0cworIyBVbmNvbmRpdGlvbmFsbHkgcnVuIHRoZSBzZWxm
dGVzdHMgb24gZXZlcnkgZXhlY3V0aW9uLCB0aGV5J3JlIHByZXR0eSBjaGVhcC4KK0V4ZWN1dG9y
U2VsZlRlc3RzLnJ1bgorVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5ydW4KKworY2xhc3Mg
Tm9uUmVtb3RlVGVzdHNFeGVjdXRvciA8IEJhc2VUZXN0c0V4ZWN1dG9yCisgICAgZGVmIGluaXRp
YWxpemUocnVubGlzdCwgc2VyaWFsUGxhbnMsIG1heEl0ZXJhdGlvbnNCb3VuZHMsIHRyZWF0RmFp
bGluZ0FzRmxha3ksIHRlc3RSdW5uZXIpCisgICAgICAgIHN1cGVyKHJ1bmxpc3QsIHNlcmlhbFBs
YW5zLAorICAgICAgICAgICAgICBuaWwsCisgICAgICAgICAgICAgIG1heEl0ZXJhdGlvbnNCb3Vu
ZHMsCisgICAgICAgICAgICAgIHRyZWF0RmFpbGluZ0FzRmxha3kKKyAgICAgICAgICAgICApCisg
ICAgICAgIEB0ZXN0UnVubmVyID0gdGVzdFJ1bm5lcgorICAgIGVuZAorICAgIGRlZiBwcmVwYXJl
RXhlY3V0aW9uKHJlbW90ZUhvc3RzKQorICAgICAgICByZW1vdGVIb3N0cworICAgIGVuZAorICAg
IGRlZiByZWZyZXNoRXhlY3V0aW9uKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRUZXN0
cykKKyAgICAgICAgaWYgbm90IEByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgICAgICByYWlzZSAi
cmVtb3RlSG9zdHMgI3tAcmVtb3RlSG9zdHN9LCBleHBlY3RlZCBuaWwiCisgICAgICAgIGVuZAor
ICAgICAgICBAdGVzdFJ1bm5lci5wcmVwYXJlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0
ZWRUZXN0cywgQHJlbW90ZUhvc3RzKQorICAgIGVuZAorZW5kCisKK2NsYXNzIE5vcm1hbFRlc3Rz
RXhlY3V0b3IgPCBOb25SZW1vdGVUZXN0c0V4ZWN1dG9yCisgICAgZGVmIHByZXBhcmVBcnRpZmFj
dHMocmVtb3RlSG9zdHMpCisgICAgICAgIHJhaXNlICJyZW1vdGVIb3N0cyBub3QgbmlsIiB1bmxl
c3MgcmVtb3RlSG9zdHMubmlsPworICAgICAgICBwcmVwYXJlQnVuZGxlCisgICAgICAgIEB0ZXN0
UnVubmVyLnByZXBhcmUoQHJ1bmxpc3QsIEBzZXJpYWxQbGFucywgU2V0Lm5ldywgbmlsKQorICAg
IGVuZAorICAgIGRlZiBleGVjdXRlVGVzdHMocmVtb3RlSG9zdHMpCisgICAgICAgIHJ1blRlc3RS
dW5uZXIoQHRlc3RSdW5uZXIsIG5pbCwgbmlsKQorICAgICAgICBjbGVhbkVtcHR5UmVzdWx0Rmls
ZXMKKyAgICBlbmQKKyAgICBkZWYgdXBkYXRlU3RhdHVzTWFwKGl0ZXJhdGlvbiwgc3RhdHVzTWFw
KQorICAgICAgICByZXR1cm4gZ2V0U3RhdHVzTWFwKHN0YXR1c01hcCkKKyAgICBlbmQKK2VuZAor
CitjbGFzcyBCdW5kbGVUZXN0c0V4ZWN1dG9yIDwgTm9uUmVtb3RlVGVzdHNFeGVjdXRvcgorICAg
IGRlZiBwcmVwYXJlQXJ0aWZhY3RzKHJlbW90ZUhvc3RzKQorICAgICAgICByYWlzZSAicmVtb3Rl
SG9zdHMgbm90IG5pbCIgdW5sZXNzIHJlbW90ZUhvc3RzLm5pbD8KKyAgICAgICAgY2xlYW5SdW5u
ZXJEaXJlY3RvcnkKKyAgICAgICAgY2xlYW5PbGRSZXN1bHRzCisgICAgZW5kCisgICAgZGVmIGV4
ZWN1dGVUZXN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAgcnVuVGVzdFJ1bm5lcihAdGVzdFJ1bm5l
ciwgbmlsLCBuaWwpCisgICAgICAgIGNsZWFuRW1wdHlSZXN1bHRGaWxlcworICAgIGVuZAorICAg
IGRlZiB1cGRhdGVTdGF0dXNNYXAoaXRlcmF0aW9uLCBzdGF0dXNNYXApCisgICAgICAgIHJldHVy
biBnZXRTdGF0dXNNYXAoc3RhdHVzTWFwKQorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VSZW1v
dGVUZXN0c0V4ZWN1dG9yIDwgQmFzZVRlc3RzRXhlY3V0b3IKKyAgICBkZWYgaW5pdGlhbGl6ZShy
dW5saXN0LCBzZXJpYWxQbGFucywgcmVtb3RlSG9zdHMsIGl0ZXJhdGlvbkxpbWl0cywKKyAgICAg
ICAgICAgICAgICAgICB0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0UnVubmVyKQorICAgICAgICBz
dXBlcihydW5saXN0LCBzZXJpYWxQbGFucywgcmVtb3RlSG9zdHMsIGl0ZXJhdGlvbkxpbWl0cywg
dHJlYXRGYWlsaW5nQXNGbGFreSkKKyAgICAgICAgQHRlc3RSdW5uZXIgPSB0ZXN0UnVubmVyCisg
ICAgZW5kCisgICAgZGVmIHVwZGF0ZVN0YXR1c01hcChpdGVyYXRpb24sIHN0YXR1c01hcCkKKyAg
ICAgICAgcmV0dXJuIGdldFN0YXR1c01hcChzdGF0dXNNYXApCisgICAgZW5kCisgICAgZGVmIHJl
ZnJlc2hFeGVjdXRpb24ocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRlc3RzKQorICAg
ICAgICAjIE5vdGUsIHdoZW4gcnVubmluZyB0ZXN0cyByZW1vdGVseSwgd2UgYWx3YXlzIHByZXBh
cmUgdGVzdHMKKyAgICAgICAgIyBmb3IgYWxsIHRoZSBob3N0cyB3aGVuIHJlZnJlc2hpbmcgZXhl
Y3V0aW9uLCBhcyBldmVuIGhvc3RzCisgICAgICAgICMgdGhhdCB3ZW50IGF3YXkgZHVyaW5nIHRl
c3RpbmcgbWF5IGhhdmUgY29tZSBiYWNrIG9ubGluZSBpbgorICAgICAgICAjIHRoZSBtZWFudGlt
ZSAtLSBzbyB3ZSBkb24ndCBleHBlY3QgYSBsaXN0IG9mIGxpdmUgcmVtb3RlCisgICAgICAgICMg
aG9zdHMgdG8gYmUgcGFzc2VkIGluLgorICAgICAgICBAdGVzdFJ1bm5lci5wcmVwYXJlKHJ1bmxp
c3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRUZXN0cywgQHJlbW90ZUhvc3RzKQorICAgIGVuZAor
ZW5kCisKK2NsYXNzIFJlbW90ZVRlc3RzRXhlY3V0b3IgPCBCYXNlUmVtb3RlVGVzdHNFeGVjdXRv
cgorICAgIGRlZiBwcmVwYXJlQXJ0aWZhY3RzKHJlbW90ZUhvc3RzKQorICAgICAgICByYWlzZSAi
cmVtb3RlSG9zdHMgbmlsIiBpZiByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgIHByZXBhcmVCdW5k
bGUKKyAgICAgICAgQHRlc3RSdW5uZXIucHJlcGFyZShAcnVubGlzdCwgQHNlcmlhbFBsYW5zLCBT
ZXQubmV3LCByZW1vdGVIb3N0cykKKyAgICAgICAgY29tcHJlc3NCdW5kbGUKKyAgICBlbmQKKyAg
ICBkZWYgcHJlcGFyZUV4ZWN1dGlvbihyZW1vdGVIb3N0cykKKyAgICAgICAgcmVtb3RlSG9zdHMK
KyAgICBlbmQKKyAgICBkZWYgZXhlY3V0ZVRlc3RzKHJlbW90ZUhvc3RzKQorICAgICAgICBmb3JF
YWNoUmVtb3RlKHJlbW90ZUhvc3RzKSB7CisgICAgICAgICAgICB8IGluZGV4IHwKKyAgICAgICAg
ICAgIHJ1blRlc3RSdW5uZXIoQHRlc3RSdW5uZXIsIHJlbW90ZUhvc3RzLCBpbmRleCkKKyAgICAg
ICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIEdudVBhcmFsbGVsVGVzdHNFeGVjdXRvciA8IEJh
c2VSZW1vdGVUZXN0c0V4ZWN1dG9yCisgICAgZGVmIHByZXBhcmVBcnRpZmFjdHMocmVtb3RlSG9z
dHMpCisgICAgICAgIHByZXBhcmVCdW5kbGUKKyAgICAgICAgQHRlc3RSdW5uZXIucHJlcGFyZShA
cnVubGlzdCwgQHNlcmlhbFBsYW5zLCBTZXQubmV3LCByZW1vdGVIb3N0cykKKyAgICAgICAgY29t
cHJlc3NCdW5kbGUKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZUV4ZWN1dGlvbihyZW1vdGVIb3N0
cykKICAgICAgICAgIyBJZiB0aGUgcHJlcGFyYXRvcnkgc3RlcHMgZmFpbCwgZHJvcCB0aGUgcmVt
b3RlIGhvc3QgZnJvbSBvdXIKICAgICAgICAgIyBsaXN0LiBPdGhlcndpc2UsIGlmIGl0IGNvbWVz
IGJhY2sgb25saW5lIGluIHRoZSBtaWRkbGUgb2YgYW4KICAgICAgICAgIyBpdGVyYXRpb24sIHdl
J2xsIHRyeSB0byBydW4gdGVzdCBqb2JzIG9uIGl0LCBwb3NzaWJseSB1c2luZwpAQCAtMjc1NSwz
MCArMjg0OSw0MyBAQCBkZWYgcnVuR251UGFyYWxsZWwKICAgICAgICAgICAgIGdldFJlbW90ZURp
cmVjdG9yeUlmTmVlZGVkKHJlbW90ZUhvc3QpCiAgICAgICAgICAgICBjb3B5QnVuZGxlVG9SZW1v
dGUocmVtb3RlSG9zdCkKICAgICAgICAgfQotICAgICAgICByZW1vdGVIb3N0cyA9IHVucGFja0J1
bmRsZUdudVBhcmFsbGVsKHJlbW90ZUhvc3RzKQotICAgICAgICBpZiByZW1vdGVIb3N0cy5zaXpl
ID09IDAKLSAgICAgICAgICAgICMgRWl0aGVyIGV2ZXJ5dGhpbmcgaXMgZG93biwgb3IgZXZlcnl0
aGluZyBnb3QKLSAgICAgICAgICAgICMgcmVib290ZWQuIEluIHRoZSBsYXR0ZXIgY2FzZSwgYWxs
b3cgZW5vdWdoIHRpbWUgZm9yIHRoZQotICAgICAgICAgICAgIyByZW1vdGUgYm9hcmRzIHRvIGJv
b3QgdXAsIHRoZW4gcmV0cnkuCi0gICAgICAgICAgICB3YWl0SW50ZXJ2YWwgPSA2MAotICAgICAg
ICAgICAgJHN0ZGVyci5wdXRzKCJBbGwgcmVtb3RlIGhvc3RzIGZhaWxlZCwgcmV0cnlpbmcgYWZ0
ZXIgI3t3YWl0SW50ZXJ2YWx9cyIpCi0gICAgICAgICAgICBzbGVlcCh3YWl0SW50ZXJ2YWwpCi0g
ICAgICAgICAgICBuZXh0Ci0gICAgICAgIGVuZAotCisgICAgICAgIHJldHVybiB1bnBhY2tCdW5k
bGVHbnVQYXJhbGxlbChyZW1vdGVIb3N0cykKKyAgICBlbmQKKyAgICBkZWYgZXhlY3V0ZVRlc3Rz
KHJlbW90ZUhvc3RzKQogICAgICAgICBydW5HbnVQYXJhbGxlbFJ1bm5lcihyZW1vdGVIb3N0cywg
JHJ1bm5lckRpciArICJzZXJpYWwtdGVzdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7IDpwYXJhbGxlbEpvYnNPbkVhY2hIb3N0ID0+IDF9KQogICAgICAgICBydW5HbnVQYXJhbGxl
bFJ1bm5lcihyZW1vdGVIb3N0cywgJHJ1bm5lckRpciArICJwYXJhbGxlbC10ZXN0cyIpCi0gICAg
ICAgIHN0YXR1c01hcCA9IGdldFN0YXR1c01hcChzdGF0dXNNYXApCi0gICAgICAgIGNvbXBsZXRl
ZFRlc3RzID0gZ2V0Q29tcGxldGVkVGVzdHNGcm9tU3RhdHVzTWFwKHN0YXR1c01hcCkKLSAgICAg
ICAgYnJlYWsgdW5sZXNzIGNvbXBsZXRlZFRlc3RzLnNpemUgIT0gJHJ1bmxpc3Quc2l6ZQotICAg
ICAgICBpZiBjb21wbGV0ZWRUZXN0cy5zaXplID4gJHJ1bmxpc3Quc2l6ZQotICAgICAgICAgICAg
cmFpc2UgIlRlc3QgY291bnQgbWlzbWF0Y2g6ICN7Y29tcGxldGVkVGVzdHMuc2l6ZX0gPiAjeyRy
dW5saXN0LnNpemV9IgotICAgICAgICBlbmQKLSAgICAgICAgIyBSZWdlbmVyYXRlIHRoZSBsaXN0
cyBvZiB0ZXN0cyB0byBydW4KLSAgICAgICAgcHJlcGFyZUdudVBhcmFsbGVsVGVzdFJ1bm5lcihj
b21wbGV0ZWRUZXN0cykKLSAgICAgICAgJHN0ZGVyci5wdXRzKCJBZnRlciB0cnkgI3tpdGVyYXRp
b24gKyAxfS8je3RyaWVzfTogZ290IHJlc3VsdHMgZm9yICN7Y29tcGxldGVkVGVzdHMuc2l6ZX0v
I3skcnVubGlzdC5zaXplfSB0ZXN0cywgI3tyZW1vdGVIb3N0cy5zaXplfS8jeyRyZW1vdGVIb3N0
cy5zaXplfSBob3N0cyBsaXZlIikKLSAgICB9CisgICAgZW5kCitlbmQKKworZGVmIHJ1bk5vcm1h
bAorICAgIHJhaXNlIGlmICRidW5kbGUgb3IgJHRhcmJhbGwKKworICAgIHRlc3RSdW5uZXIgPSBU
ZXN0UnVubmVyLmNyZWF0ZSgkdGVzdFJ1bm5lclR5cGUsICRydW5uZXJEaXIpCisgICAgZXZhbHVh
dG9yID0gTm9ybWFsVGVzdHNFeGVjdXRvci5uZXcoJHJ1bmxpc3QsICRzZXJpYWxQbGFucywgSVRF
UkFUSU9OX0xJTUlUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
dHJlYXRGYWlsaW5nQXNGbGFreSwgdGVzdFJ1bm5lcikKKyAgICBzdGF0dXNNYXAgPSBldmFsdWF0
b3IubG9vcAorICAgIGRldGVjdEZhaWx1cmVzKHN0YXR1c01hcCkKKworZW5kCisKK2RlZiBydW5S
ZW1vdGUKKyAgICByYWlzZSB1bmxlc3MgJHJlbW90ZQorCisgICAgdGVzdFJ1bm5lciA9IFRlc3RS
dW5uZXIuY3JlYXRlKCR0ZXN0UnVubmVyVHlwZSwgJHJ1bm5lckRpcikKKyAgICBleGVjdXRvciA9
IFJlbW90ZVRlc3RzRXhlY3V0b3IubmV3KCRydW5saXN0LCAkc2VyaWFsUGxhbnMsICRyZW1vdGVI
b3N0cywgSVRFUkFUSU9OX0xJTUlUUywgJHRyZWF0RmFpbGluZ0FzRmxha3ksIHRlc3RSdW5uZXIp
CisgICAgc3RhdHVzTWFwID0gZXhlY3V0b3IubG9vcAorICAgIGRldGVjdEZhaWx1cmVzKHN0YXR1
c01hcCkKK2VuZAorCitkZWYgcnVuR251UGFyYWxsZWwKKyAgICByYWlzZSAiQ2FuIG9ubHkgdXNl
IC0tZ251LXBhcmFsbGVsLXJ1bm5lciB3aXRoIC0tcmVtb3RlKiIgdW5sZXNzICRyZW1vdGUKKyAg
ICByYWlzZSAiQ2FuIG9ubHkgdXNlIC0tZ251LXBhcmFsbGVsLXJ1bm5lciB3aXRoIHRoZSBkZWZh
dWx0IHdyaXRlciIgdW5sZXNzICR0ZXN0V3JpdGVyID09ICJkZWZhdWx0IgorICAgIHRlc3RSdW5u
ZXIgPSBUZXN0UnVubmVyLmNyZWF0ZSgkdGVzdFJ1bm5lclR5cGUsICRydW5uZXJEaXIpCisgICAg
ZXhlY3V0b3IgPSBHbnVQYXJhbGxlbFRlc3RzRXhlY3V0b3IubmV3KCRydW5saXN0LCAkc2VyaWFs
UGxhbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZW1v
dGVIb3N0cywgSVRFUkFUSU9OX0xJTUlUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJHRyZWF0RmFpbGluZ0FzRmxha3ksIHRlc3RSdW5uZXIpCisgICAgc3Rh
dHVzTWFwID0gZXhlY3V0b3IubG9vcAogICAgIGRldGVjdEZhaWx1cmVzKHN0YXR1c01hcCkKIGVu
ZAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0
LXdyaXRlci1kZWZhdWx0LnJiIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3Mt
dGVzdC13cml0ZXItZGVmYXVsdC5yYgppbmRleCBkNjFiNzFkYTAwZTFmZGFjOWRmOWRkMjU5ZTBi
ZTY2MDRjN2I3MTNhLi4zOWYxZGIwNzJmYTAxMGZkNWRkNTE5ZTY0OGYzYmFiN2RhZmUxYWMxIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRl
ci1kZWZhdWx0LnJiCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRl
c3Qtd3JpdGVyLWRlZmF1bHQucmIKQEAgLTIyMCwyNSArMjIwLDcgQEAgZGVmIGNoYWtyYVBhc3NG
YWlsRXJyb3JIYW5kbGVyCiAgICAgfQogZW5kCiAKLWNsYXNzIFBsYW4KLSAgICBhdHRyX3JlYWRl
ciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRzLCA6ZmFtaWx5LCA6bmFtZSwgOm91dHB1dEhhbmRsZXIs
IDplcnJvckhhbmRsZXIsIDphZGRpdGlvbmFsRW52Ci0gICAgYXR0cl9hY2Nlc3NvciA6aW5kZXgK
LSAgICAKLSAgICBkZWYgaW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBu
YW1lLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIpCi0gICAgICAgIEBkaXJlY3RvcnkgPSBk
aXJlY3RvcnkKLSAgICAgICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50cwotICAgICAgICBAZmFtaWx5
ID0gZmFtaWx5Ci0gICAgICAgIEBuYW1lID0gbmFtZQotICAgICAgICBAb3V0cHV0SGFuZGxlciA9
IG91dHB1dEhhbmRsZXIKLSAgICAgICAgQGVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcgotICAg
ICAgICBAaXNTbG93ID0gISEkcnVuQ29tbWFuZE9wdGlvbnNbOmlzU2xvd10KLSAgICAgICAgQGNy
YXNoT0sgPSAhISRydW5Db21tYW5kT3B0aW9uc1s6Y3Jhc2hPS10KLSAgICAgICAgaWYgQGNyYXNo
T0sKLSAgICAgICAgICAgIEBvdXRwdXRIYW5kbGVyID0gbm9pc3lPdXRwdXRIYW5kbGVyCi0gICAg
ICAgIGVuZAotICAgICAgICBAYWRkaXRpb25hbEVudiA9IFtdCi0gICAgZW5kCi0gICAgCitjbGFz
cyBQbGFuIDwgQmFzZVBsYW4KICAgICBkZWYgc2hlbGxDb21tYW5kCiAgICAgICAgICMgSXQncyBp
bXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBpcyBhY3R1YWxseSBydW4gaW4gYSBz
dWJzaGVsbCwgc28gaWYgd2UgY2hhbmdlIGRpcmVjdG9yeQogICAgICAgICAjIGluIHRoZSBzdWJz
aGVsbCB3aGVuIHdlIHJldHVybiB3ZSB3aWxsIGJlIGluIG91ciBvcmlnaW5hbCBkaXJlY3Rvcnku
IFRoaXMgaXMgbmljZSBiZWNhdXNlIHdlIGRvbid0CkBAIC0zNDUsMTExICszMjcsMTM3IEBAIGNs
YXNzIFBsYW4KICAgICBlbmQKIGVuZAogCi1kZWYgcHJlcGFyZVNoZWxsVGVzdFJ1bm5lcgotICAg
IEZpbGVVdGlscy5jcCBTQ1JJUFRTX1BBVEggKyAianNjLXN0cmVzcy10ZXN0LWhlbHBlcnMiICsg
InNoZWxsLXJ1bm5lci5zaCIsICRydW5uZXJEaXIgKyAicnVuc2NyaXB0IgorY2xhc3MgVGVzdFJ1
bm5lclNoZWxsIDwgVGVzdFJ1bm5lcgorICAgIGRlZiBpbml0aWFsaXplKHRlc3RSdW5uZXJUeXBl
LCBydW5uZXJEaXIpCisgICAgICAgIHN1cGVyKHRlc3RSdW5uZXJUeXBlLCBydW5uZXJEaXIpCisg
ICAgICAgIEB0ZXN0TGlzdFBhdGggPSBydW5uZXJEaXIgKyAndGVzdGxpc3QnCisgICAgZW5kCisg
ICAgZGVmIHByZXBhcmVSdW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5z
LCByZW1vdGVIb3N0cykKKyAgICAgICAgRmlsZVV0aWxzLmNwIFNDUklQVFNfUEFUSCArICJqc2Mt
c3RyZXNzLXRlc3QtaGVscGVycyIgKyAic2hlbGwtcnVubmVyLnNoIiwgQHJ1bm5lckRpciArICJy
dW5zY3JpcHQiCisgICAgICAgIEZpbGUub3BlbihAdGVzdExpc3RQYXRoLCAidyIpIHsgfGZ8Cisg
ICAgICAgICAgICBydW5saXN0LmVhY2ggeyB8cGxhbnwKKyAgICAgICAgICAgICAgICBpZiBjb21w
bGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBuZXh0CisgICAg
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgZi5wdXRzKCJ0ZXN0X3NjcmlwdF8je3Bs
YW4uaW5kZXh9IikKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIGVuZAorICAgIGRlZiBj
b21tYW5kKHJlbW90ZUluZGV4PTApCisgICAgICAgICJzaCBydW5zY3JpcHQgI3tGaWxlLmJhc2Vu
YW1lKEB0ZXN0TGlzdFBhdGgpfSIKKyAgICBlbmQKIGVuZAogCi1kZWYgb3V0cHV0X3RhcmdldChv
dXRwLCBwbGFuLCBwcmVyZXFzKQotICAgIGluZGV4ID0gcGxhbi5pbmRleAotICAgIHRhcmdldCA9
ICJ0ZXN0X2RvbmVfI3tpbmRleH0iCi0gICAgb3V0cC5wdXRzICIje3RhcmdldH06ICN7cHJlcmVx
cy5qb2luKCIgIil9IgotICAgIG91dHAucHV0cyAiXHRzaCB0ZXN0X3NjcmlwdF8je2luZGV4fSIK
LSAgICB0YXJnZXQKLWVuZAorY2xhc3MgVGVzdFJ1bm5lck1ha2UgPCBUZXN0UnVubmVyCisgICAg
ZGVmIG91dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgcHJlcmVxcykKKyAgICAgICAgaW5kZXggPSBw
bGFuLmluZGV4CisgICAgICAgIHRhcmdldCA9ICJ0ZXN0X2RvbmVfI3tpbmRleH0iCisgICAgICAg
IG91dHAucHV0cyAiI3t0YXJnZXR9OiAje3ByZXJlcXMuam9pbigiICIpfSIKKyAgICAgICAgb3V0
cC5wdXRzICJcdHNoIHRlc3Rfc2NyaXB0XyN7aW5kZXh9IgorICAgICAgICB0YXJnZXQKKyAgICBl
bmQKKyAgICBkZWYgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0LCBzZXJpYWxQbGFucywg
Y29tcGxldGVkUGxhbnMsIHJlbW90ZUluZGV4KQorICAgICAgICAjIFRoZSBnb2FscyBvZiBvdXIg
cGFyYWxsZWwgdGVzdCBydW5uZXIgYXJlIHNjYWxhYmlsaXR5IGFuZCBzaW1wbGljaXR5LiBUaGUK
KyAgICAgICAgIyBzaW1wbGljaXR5IHBhcnQgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudC4gV2Ug
ZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGhhdmUKKyAgICAgICAgIyBhIGZ1bGwtdGltZSBjb250cmli
dXRvciBqdXN0IHBoaWxvc29waGlzaW5nIGFib3V0IHBhcmFsbGVsIHRlc3RpbmcuCisgICAgICAg
ICMKKyAgICAgICAgIyBBcyBzdWNoLCB3ZSBqdXN0IHBhc3Mgb2ZmIGFsbCBvZiB0aGUgaGFyZCB3
b3JrIHRvICdtYWtlJy4gVGhpcworICAgICAgICAjIGNyZWF0ZXMgYSBkdW1teSBkaXJlY3Rvcnkg
KCIkb3V0cHV0RGlyLy5ydW5uZXIiKSBpbiB3aGljaCB3ZQorICAgICAgICAjIGNyZWF0ZSBhIGR1
bW15IE1ha2VmaWxlLiBUaGUgTWFrZWZpbGUgaGFzIGEgJ3BhcmFsbGVsJyBydWxlIHRoYXQKKyAg
ICAgICAgIyBkZXBlbmRzIGFsbCB0ZXN0cywgb3RoZXIgdGhhbiB0aGUgb25lcyBtYXJrZWQgJ3Nl
cmlhbCcuIFRoZQorICAgICAgICAjIHNlcmlhbCB0ZXN0cyBhcmUgYXJyYW5nZWQgaW4gYSBjaGFp
bjsgdGhlIGxhc3QgdGFyZ2V0IGluIHRoZQorICAgICAgICAjIHNlcmlhbCBjaGFpbiBkZXBlbmRz
IG9uICdwYXJhbGxlbCcgYW5kICdhbGwnIGRlcGVuZHMgb24gdGhlIGhlYWQKKyAgICAgICAgIyBv
ZiB0aGUgY2hhaW4uIFJ1bm5pbmcgJ21ha2UgLWogPHdoYXRldmVyPicgb24gdGhpcyBNYWtlZmls
ZQorICAgICAgICAjIHJlc3VsdHMgaW4gJ21ha2UnIGRvaW5nIGFsbCBvZiB0aGUgaGFyZCB3b3Jr
OgorICAgICAgICAjCisgICAgICAgICMgLSBMb2FkIGJhbGFuY2luZyBqdXN0IHdvcmtzLiBNb3N0
IHN5c3RlbXMgaGF2ZSBhIGdyZWF0IGxvYWQgYmFsYW5jZXIgaW4KKyAgICAgICAgIyAgICdtYWtl
Jy4gSWYgeW91ciBzeXN0ZW0gZG9lc24ndCB0aGVuIGp1c3QgaW5zdGFsbCBhIHJlYWwgJ21ha2Un
LgorICAgICAgICAjCisgICAgICAgICMgLSBJbnRlcnJ1cHRpb25zIGp1c3Qgd29yay4gRm9yIGV4
YW1wbGUgQ3RybC1DIGhhbmRsaW5nIGluICdtYWtlJyBpcworICAgICAgICAjICAgZXhhY3RseSBy
aWdodC4gWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgem9tYmllIHByb2Nlc3Nlcy4KKyAg
ICAgICAgIworICAgICAgICAjIFdlIHRoZW4gZG8gc29tZSB0cmlja3MgdG8gbWFrZSBmYWlsdXJl
IGRldGVjdGlvbiB3b3JrIGFuZCB0byBtYWtlIHRoaXMKKyAgICAgICAgIyB0b3RhbGx5IHNvdW5k
LiBJZiBhIHRlc3QgZmFpbHMsIHdlIGRvbid0IHdhbnQgdGhlIHdob2xlICdtYWtlJyBqb2IgdG8K
KyAgICAgICAgIyBzdG9wLiBXZSBhbHNvIGRvbid0IGhhdmUgYW55IGZhY2lsaXR5IGZvciBtYWtl
ZmlsZS1lc2NhcGluZyBvZiBwYXRoIG5hbWVzLgorICAgICAgICAjIFdlIGRvIGhhdmUgc3VjaCBh
IHRoaW5nIGZvciBzaGVsbC1lc2NhcGluZywgdGhvdWdoLiBXZSBmaXggYm90aCBwcm9ibGVtcwor
ICAgICAgICAjIGJ5IGhhdmluZyB0aGUgYWN0dWFsIHdvcmsgZm9yIGVhY2ggb2YgdGhlIHRlc3Qg
cnVsZXMgYmUgZG9uZSBpbiBhIHNoZWxsCisgICAgICAgICMgc2NyaXB0IG9uIHRoZSBzaWRlLiBU
aGVyZSBpcyBvbmUgc3VjaCBzY3JpcHQgcGVyIHRlc3QuIFRoZSBzY3JpcHQgcmVzcG9uZHMKKyAg
ICAgICAgIyB0byBmYWlsdXJlIGJ5IHByaW50aW5nIHNvbWV0aGluZyBvbiB0aGUgY29uc29sZSBh
bmQgdGhlbiB0b3VjaGluZyBhCisgICAgICAgICMgZmFpbHVyZSBmaWxlIGZvciB0aGF0IHRlc3Qs
IGJ1dCB0aGVuIHN0aWxsIHJldHVybnMgMC4gVGhpcyBtYWtlcyAnbWFrZScKKyAgICAgICAgIyBj
b250aW51ZSBwYXN0IHRoYXQgZmFpbHVyZSBhbmQgY29tcGxldGUgYWxsIHRoZSB0ZXN0cyBhbnl3
YXkuCisgICAgICAgICMKKyAgICAgICAgIyBJbiB0aGUgZW5kLCB0aGlzIHNjcmlwdCBjb2xsZWN0
cyBhbGwgb2YgdGhlIGZhaWx1cmVzIGJ5IHNlYXJjaGluZyBmb3IKKyAgICAgICAgIyBmaWxlcyBp
biB0aGUgLnJ1bm5lciBkaXJlY3Rvcnkgd2hvc2UgbmFtZSBtYXRjaGVzIC9edGVzdF9mYWlsXy8s
IHdoZXJlCisgICAgICAgICMgdGhlIHRoaW5nIGFmdGVyIHRoZSAnZmFpbF8nIGlzIHRoZSB0ZXN0
IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQKKyAgICAgICAgIyB3b3VsZCBiZSBjcmVh
dGVkIGJ5IHRoZSB0ZXN0IHNjcmlwdHMgaWYgdGhleSBkZXRlY3QgZmFpbHVyZS4gV2UncmUKKyAg
ICAgICAgIyBiYXNpY2FsbHkgdXNpbmcgdGhlIGZpbGVzeXN0ZW0gYXMgYSBjb25jdXJyZW50IGRh
dGFiYXNlIG9mIHRlc3QgZmFpbHVyZXMuCisgICAgICAgICMgRXZlbiBpZiB0d28gdGVzdHMgZmFp
bCBhdCB0aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5nIGRpZmZlcmVudAorICAg
ICAgICAjIGZpbGVzIHdlIHdvbid0IG1pc3MgYW55IGZhaWx1cmVzLgorICAgICAgICBydW5QbGFu
cyA9IFtdCisgICAgICAgIHNlcmlhbFJ1blBsYW5zID0gW10KKyAgICAgICAgcnVubGlzdC5lYWNo
IHsKKyAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICBpZiBjb21wbGV0ZWRQbGFucy5p
bmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgaWYgQHJlbW90ZUhvc3RzLm5pbD8gb3IgcGxhbi5pbmRleCAlIEByZW1vdGVIb3N0
cy5sZW5ndGggPT0gcmVtb3RlSW5kZXgKKyAgICAgICAgICAgICAgICBpZiBzZXJpYWxQbGFucy5p
bmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBzZXJpYWxSdW5QbGFucyA8PCBwbGFu
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBydW5QbGFucyA8PCBw
bGFuCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQogCi1k
ZWYgcHJlcGFyZU1ha2VUZXN0UnVubmVyKHJlbW90ZUluZGV4KQotICAgICMgVGhlIGdvYWxzIG9m
IG91ciBwYXJhbGxlbCB0ZXN0IHJ1bm5lciBhcmUgc2NhbGFiaWxpdHkgYW5kIHNpbXBsaWNpdHku
IFRoZQotICAgICMgc2ltcGxpY2l0eSBwYXJ0IGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQuIFdl
IGRvbid0IHdhbnQgdG8gaGF2ZSB0byBoYXZlCi0gICAgIyBhIGZ1bGwtdGltZSBjb250cmlidXRv
ciBqdXN0IHBoaWxvc29waGlzaW5nIGFib3V0IHBhcmFsbGVsIHRlc3RpbmcuCi0gICAgIwotICAg
ICMgQXMgc3VjaCwgd2UganVzdCBwYXNzIG9mZiBhbGwgb2YgdGhlIGhhcmQgd29yayB0byAnbWFr
ZScuIFRoaXMKLSAgICAjIGNyZWF0ZXMgYSBkdW1teSBkaXJlY3RvcnkgKCIkb3V0cHV0RGlyLy5y
dW5uZXIiKSBpbiB3aGljaCB3ZQotICAgICMgY3JlYXRlIGEgZHVtbXkgTWFrZWZpbGUuIFRoZSBN
YWtlZmlsZSBoYXMgYSAncGFyYWxsZWwnIHJ1bGUgdGhhdAotICAgICMgZGVwZW5kcyBhbGwgdGVz
dHMsIG90aGVyIHRoYW4gdGhlIG9uZXMgbWFya2VkICdzZXJpYWwnLiBUaGUKLSAgICAjIHNlcmlh
bCB0ZXN0cyBhcmUgYXJyYW5nZWQgaW4gYSBjaGFpbjsgdGhlIGxhc3QgdGFyZ2V0IGluIHRoZQot
ICAgICMgc2VyaWFsIGNoYWluIGRlcGVuZHMgb24gJ3BhcmFsbGVsJyBhbmQgJ2FsbCcgZGVwZW5k
cyBvbiB0aGUgaGVhZAotICAgICMgb2YgdGhlIGNoYWluLiBSdW5uaW5nICdtYWtlIC1qIDx3aGF0
ZXZlcj4nIG9uIHRoaXMgTWFrZWZpbGUKLSAgICAjIHJlc3VsdHMgaW4gJ21ha2UnIGRvaW5nIGFs
bCBvZiB0aGUgaGFyZCB3b3JrOgotICAgICMKLSAgICAjIC0gTG9hZCBiYWxhbmNpbmcganVzdCB3
b3Jrcy4gTW9zdCBzeXN0ZW1zIGhhdmUgYSBncmVhdCBsb2FkIGJhbGFuY2VyIGluCi0gICAgIyAg
ICdtYWtlJy4gSWYgeW91ciBzeXN0ZW0gZG9lc24ndCB0aGVuIGp1c3QgaW5zdGFsbCBhIHJlYWwg
J21ha2UnLgotICAgICMKLSAgICAjIC0gSW50ZXJydXB0aW9ucyBqdXN0IHdvcmsuIEZvciBleGFt
cGxlIEN0cmwtQyBoYW5kbGluZyBpbiAnbWFrZScgaXMKLSAgICAjICAgZXhhY3RseSByaWdodC4g
WW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgem9tYmllIHByb2Nlc3Nlcy4KLSAgICAjCi0g
ICAgIyBXZSB0aGVuIGRvIHNvbWUgdHJpY2tzIHRvIG1ha2UgZmFpbHVyZSBkZXRlY3Rpb24gd29y
ayBhbmQgdG8gbWFrZSB0aGlzCi0gICAgIyB0b3RhbGx5IHNvdW5kLiBJZiBhIHRlc3QgZmFpbHMs
IHdlIGRvbid0IHdhbnQgdGhlIHdob2xlICdtYWtlJyBqb2IgdG8KLSAgICAjIHN0b3AuIFdlIGFs
c28gZG9uJ3QgaGF2ZSBhbnkgZmFjaWxpdHkgZm9yIG1ha2VmaWxlLWVzY2FwaW5nIG9mIHBhdGgg
bmFtZXMuCi0gICAgIyBXZSBkbyBoYXZlIHN1Y2ggYSB0aGluZyBmb3Igc2hlbGwtZXNjYXBpbmcs
IHRob3VnaC4gV2UgZml4IGJvdGggcHJvYmxlbXMKLSAgICAjIGJ5IGhhdmluZyB0aGUgYWN0dWFs
IHdvcmsgZm9yIGVhY2ggb2YgdGhlIHRlc3QgcnVsZXMgYmUgZG9uZSBpbiBhIHNoZWxsCi0gICAg
IyBzY3JpcHQgb24gdGhlIHNpZGUuIFRoZXJlIGlzIG9uZSBzdWNoIHNjcmlwdCBwZXIgdGVzdC4g
VGhlIHNjcmlwdCByZXNwb25kcwotICAgICMgdG8gZmFpbHVyZSBieSBwcmludGluZyBzb21ldGhp
bmcgb24gdGhlIGNvbnNvbGUgYW5kIHRoZW4gdG91Y2hpbmcgYQotICAgICMgZmFpbHVyZSBmaWxl
IGZvciB0aGF0IHRlc3QsIGJ1dCB0aGVuIHN0aWxsIHJldHVybnMgMC4gVGhpcyBtYWtlcyAnbWFr
ZScKLSAgICAjIGNvbnRpbnVlIHBhc3QgdGhhdCBmYWlsdXJlIGFuZCBjb21wbGV0ZSBhbGwgdGhl
IHRlc3RzIGFueXdheS4KLSAgICAjCi0gICAgIyBJbiB0aGUgZW5kLCB0aGlzIHNjcmlwdCBjb2xs
ZWN0cyBhbGwgb2YgdGhlIGZhaWx1cmVzIGJ5IHNlYXJjaGluZyBmb3IKLSAgICAjIGZpbGVzIGlu
IHRoZSAucnVubmVyIGRpcmVjdG9yeSB3aG9zZSBuYW1lIG1hdGNoZXMgL150ZXN0X2ZhaWxfLywg
d2hlcmUKLSAgICAjIHRoZSB0aGluZyBhZnRlciB0aGUgJ2ZhaWxfJyBpcyB0aGUgdGVzdCBpbmRl
eC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB0aGF0Ci0gICAgIyB3b3VsZCBiZSBjcmVhdGVkIGJ5IHRo
ZSB0ZXN0IHNjcmlwdHMgaWYgdGhleSBkZXRlY3QgZmFpbHVyZS4gV2UncmUKLSAgICAjIGJhc2lj
YWxseSB1c2luZyB0aGUgZmlsZXN5c3RlbSBhcyBhIGNvbmN1cnJlbnQgZGF0YWJhc2Ugb2YgdGVz
dCBmYWlsdXJlcy4KLSAgICAjIEV2ZW4gaWYgdHdvIHRlc3RzIGZhaWwgYXQgdGhlIHNhbWUgdGlt
ZSwgc2luY2UgdGhleSdyZSB0b3VjaGluZyBkaWZmZXJlbnQKLSAgICAjIGZpbGVzIHdlIHdvbid0
IG1pc3MgYW55IGZhaWx1cmVzLgotICAgIHNlcmlhbFBsYW5zID0ge30KLSAgICAkc2VyaWFsUnVu
bGlzdC5lYWNoIHsgfHB8IHNlcmlhbFBsYW5zW3BdID0gbmlsIH0KLSAgICBydW5QbGFucyA9IFtd
Ci0gICAgc2VyaWFsUnVuUGxhbnMgPSBbXQotICAgICRydW5saXN0LmVhY2ggewotICAgICAgICB8
IHBsYW4gfAotICAgICAgICBpZiAhJHJlbW90ZSBvciBwbGFuLmluZGV4ICUgJHJlbW90ZUhvc3Rz
Lmxlbmd0aCA9PSByZW1vdGVJbmRleAotICAgICAgICAgICAgaWYgc2VyaWFsUGxhbnMuaGFzX2tl
eT8ocGxhbikKLSAgICAgICAgICAgICAgICBzZXJpYWxSdW5QbGFucyA8PCBwbGFuCisgICAgICAg
IEZpbGUub3BlbihAcnVubmVyRGlyICsgIk1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IiwgInciKSB7
CisgICAgICAgICAgICB8IG91dHAgfAorICAgICAgICAgICAgaWYgc2VyaWFsUnVuUGxhbnMuZW1w
dHk/CisgICAgICAgICAgICAgICAgb3V0cC5wdXRzKCJhbGw6IHBhcmFsbGVsIikKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBydW5QbGFucyA8PCBwbGFuCisgICAgICAgICAgICAg
ICAgc2VyaWFsUHJlcmVxID0gInRlc3RfZG9uZV8je3NlcmlhbFJ1blBsYW5zWy0xXS5pbmRleH0i
CisgICAgICAgICAgICAgICAgb3V0cC5wdXRzKCJhbGw6ICN7c2VyaWFsUHJlcmVxfSIpCisgICAg
ICAgICAgICAgICAgcHJldl90YXJnZXQgPSAicGFyYWxsZWwiCisgICAgICAgICAgICAgICAgc2Vy
aWFsUnVuUGxhbnMuZWFjaCB7CisgICAgICAgICAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAg
ICAgICAgICAgICAgIHByZXZfdGFyZ2V0ID0gb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbcHJl
dl90YXJnZXRdKQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVuZAotICAgICAgICBl
bmQKLSAgICB9Ci0KLSAgICBGaWxlLm9wZW4oJHJ1bm5lckRpciArICJNYWtlZmlsZS4je3JlbW90
ZUluZGV4fSIsICJ3IikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBpZiBzZXJpYWxSdW5Q
bGFucy5lbXB0eT8KLSAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiBwYXJhbGxlbCIpCi0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHNlcmlhbFByZXJlcSA9ICJ0ZXN0X2RvbmVfI3tzZXJpYWxS
dW5QbGFuc1stMV0uaW5kZXh9IgotICAgICAgICAgICAgb3V0cC5wdXRzKCJhbGw6ICN7c2VyaWFs
UHJlcmVxfSIpCi0gICAgICAgICAgICBwcmV2X3RhcmdldCA9ICJwYXJhbGxlbCIKLSAgICAgICAg
ICAgIHNlcmlhbFJ1blBsYW5zLmVhY2ggeworICAgICAgICAgICAgcGFyYWxsZWxUYXJnZXRzID0g
cnVuUGxhbnMuY29sbGVjdCB7CiAgICAgICAgICAgICAgICAgfCBwbGFuIHwKLSAgICAgICAgICAg
ICAgICBwcmV2X3RhcmdldCA9IG91dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgW3ByZXZfdGFyZ2V0
XSkKKyAgICAgICAgICAgICAgICBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtdKQogICAgICAg
ICAgICAgfQotICAgICAgICBlbmQKLSAgICAgICAgcGFyYWxsZWxUYXJnZXRzID0gcnVuUGxhbnMu
Y29sbGVjdCB7Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgb3V0cHV0X3Rhcmdl
dChvdXRwLCBwbGFuLCBbXSkKKyAgICAgICAgICAgIG91dHAucHV0cygicGFyYWxsZWw6ICIgKyBw
YXJhbGxlbFRhcmdldHMuam9pbigiICIpKQogICAgICAgICB9Ci0gICAgICAgIG91dHAucHV0cygi
cGFyYWxsZWw6ICIgKyBwYXJhbGxlbFRhcmdldHMuam9pbigiICIpKQotICAgIH0KKyAgICBlbmQK
KyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxh
bnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBpZiByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgICAg
ICBwcmVwYXJlUnVubmVyRm9yUmVtb3RlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQ
bGFucywgMCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVtb3RlSG9zdHMuZWFjaF9pbmRl
eCB7CisgICAgICAgICAgICAgICAgfHJlbW90ZUluZGV4fAorICAgICAgICAgICAgICAgIHByZXBh
cmVSdW5uZXJGb3JSZW1vdGUocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCBy
ZW1vdGVJbmRleCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVm
IGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAgICAgICAgIm1ha2UgLWogI3skbnVtQ2hpbGRQcm9j
ZXNzZXN9IC1zIC1mIE1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IgorICAgIGVuZAogZW5kCiAKLWRl
ZiBwcmVwYXJlUnVieVRlc3RSdW5uZXIKLSAgICBGaWxlLm9wZW4oJHJ1bm5lckRpciArICJydW5z
Y3JpcHQiLCAidyIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgJHJ1bmxpc3QuZWFjaCB7
Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgb3V0cC5wdXRzICJwcmludCBgc2gg
dGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSAyPiYxYCIKK2NsYXNzIFRlc3RSdW5uZXJSdWJ5IDwg
VGVzdFJ1bm5lcgorICAgIGRlZiBwcmVwYXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBj
b21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIEZpbGUub3BlbihAcnVubmVyRGly
ICsgInJ1bnNjcmlwdCIsICJ3IikgeworICAgICAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgICAg
IHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAg
ICBpZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBu
ZXh0CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJwcmlu
dCBgc2ggdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSAyPiYxYCIKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0KLWVuZAotCi1kZWYgdGVzdFJ1bm5lckNvbW1hbmQocmVtb3RlSW5kZXg9
MCkKLSAgICBjYXNlICR0ZXN0UnVubmVyVHlwZQotICAgIHdoZW4gOnNoZWxsCi0gICAgICAgIGNv
bW1hbmQgPSAic2ggcnVuc2NyaXB0IgotICAgIHdoZW4gOm1ha2UKLSAgICAgICAgY29tbWFuZCA9
ICJtYWtlIC1qICN7JG51bUNoaWxkUHJvY2Vzc2VzfSAtcyAtZiBNYWtlZmlsZS4je3JlbW90ZUlu
ZGV4fSIKLSAgICB3aGVuIDpydWJ5Ci0gICAgICAgIGNvbW1hbmQgPSAicnVieSBydW5zY3JpcHQi
Ci0gICAgZWxzZQotICAgICAgICByYWlzZSAiVW5rbm93biB0ZXN0IHJ1bm5lciB0eXBlOiAjeyR0
ZXN0UnVubmVyVHlwZS50b19zfSIKICAgICBlbmQKLSAgICByZXR1cm4gY29tbWFuZAorICAgIGRl
ZiBjb21tYW5kKHJlbW90ZUluZGV4PTApCisgICAgICAgICJydWJ5IHJ1bnNjcmlwdCIKKyAgICBl
bmQKIGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3Mt
dGVzdC13cml0ZXItcGxheXN0YXRpb24ucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNj
LXN0cmVzcy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5yYgppbmRleCA0MTJiZjQ1NThhZDg1MDBh
NmUwYTcwMDQyNzkzYzM4YzQyOThkNGIyLi4yYTdhYTk3ZmNlMmU1ZGVhZjNhYTAwODI2YTFlZWIz
OWUxZDk4OTk0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVz
cy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5yYgorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1
YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5yYgpAQCAtMjYwLDI1ICsyNjAs
MTAgQEAgZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCiAgICB9CiBlbmQKIAotY2xhc3Mg
UGxhbgotICAgIGF0dHJfcmVhZGVyIDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpmYW1pbHksIDpu
YW1lLCA6b3V0cHV0SGFuZGxlciwgOmVycm9ySGFuZGxlciwgOmFkZGl0aW9uYWxFbnYKLSAgICBh
dHRyX2FjY2Vzc29yIDppbmRleAotCi0gICAgZGVmIGluaXRpYWxpemUoZGlyZWN0b3J5LCBhcmd1
bWVudHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyKQotICAgICAg
ICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5Ci0gICAgICAgIEBhcmd1bWVudHMgPSBhcmd1bWVudHNb
MS4uLTFdCi0gICAgICAgIEBmYW1pbHkgPSBmYW1pbHkKLSAgICAgICAgQG5hbWUgPSBuYW1lCi0g
ICAgICAgIEBvdXRwdXRIYW5kbGVyID0gb3V0cHV0SGFuZGxlcgotICAgICAgICBAZXJyb3JIYW5k
bGVyID0gZXJyb3JIYW5kbGVyCi0gICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5kT3B0aW9u
c1s6aXNTbG93XQotICAgICAgICBAY3Jhc2hPSyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzpjcmFz
aE9LXQotICAgICAgICBpZiBAY3Jhc2hPSwotICAgICAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBu
b2lzeU91dHB1dEhhbmRsZXIKLSAgICAgICAgZW5kCi0gICAgICAgIEBhZGRpdGlvbmFsRW52ID0g
W10KK2NsYXNzIFBsYW4gPCBCYXNlUGxhbgorICAgIGRlZiBhcmd1bWVudHNNYXBwZXIoYXJndW1l
bnRzKQorICAgICAgICBhcmd1bWVudHNbMS4uLTFdCiAgICAgZW5kCi0KICAgICBkZWYgc2hlbGxD
b21tYW5kCiAgICAgICAgIG4gPSBAbmFtZS5nc3ViKC8oXFx8XC8pLywgJ18nKQogICAgICAgICBz
Y3JpcHQgPSAib3V0ID0gbmlsXG4iCkBAIC0zODcsMzUgKzM3Miw1MCBAQCBjbGFzcyBQbGFuCiAg
ICAgZW5kCiBlbmQKIAotZGVmIHByZXBhcmVQbGF5U3RhdGlvblRlc3RSdW5uZXIKLSAgICBGaWxl
Lm9wZW4oJHJ1bm5lckRpciArICJydW5zY3JpcHQiLCAidyIpIHsKK2RlZiBwcmVwYXJlUGxheVN0
YXRpb25UZXN0UnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucykKKyAg
ICBGaWxlLm9wZW4oQHJ1bm5lckRpciArICJydW5zY3JpcHQiLCAidyIpIHsKICAgICAgICAgfCBv
dXRwIHwKLSAgICAgICAgJHJ1bmxpc3QuZWFjaCB7CisgICAgICAgIHJ1bmxpc3QuZWFjaCB7CiAg
ICAgICAgICAgICB8IHBsYW4gfAorICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVk
ZT8ocGxhbikKKyAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICBlbmQKKwogICAgICAg
ICAgICAgb3V0cC5wdXRzICIuLi8uanNvbi90ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9Lmpzb24i
CiAgICAgICAgIH0KICAgICB9CiBlbmQKIAotZGVmIHByZXBhcmVTaGVsbFRlc3RSdW5uZXIKLSAg
ICBwcmVwYXJlUGxheVN0YXRpb25UZXN0UnVubmVyCi1lbmQKK2NsYXNzIFBsYXlzdGF0aW9uVGVz
dFJ1bm5lciA8IFRlc3RSdW5uZXIKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0LCBzZXJp
YWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBGaWxlLm9wZW4o
QHJ1bm5lckRpciArICJydW5zY3JpcHQiLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8Cisg
ICAgICAgICAgICBydW5saXN0LmVhY2ggeworICAgICAgICAgICAgICAgIHwgcGxhbiB8CisgICAg
ICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAg
ICAgICAgICAgbmV4dAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiLi4vLmpzb24vdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fS5qc29uIgorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgZW5kCisgICAgZGVmIGNvbW1hbmQocmVtb3RlSW5kZXg9MCkK
KyAgICAgICAgb3B0aW9ucyA9IEVOVlsiSlNDVEVTVF9vcHRpb25zIl0KIAotZGVmIHByZXBhcmVN
YWtlVGVzdFJ1bm5lcihyZW1vdGVJbmRleCkKLSAgICBwcmVwYXJlUGxheVN0YXRpb25UZXN0UnVu
bmVyCi1lbmQKKyAgICAgICAgZnNSb290ID0gJGpzY1BhdGguZGlybmFtZQorICAgICAgICBjb21t
YW5kID0gIlBsYXlTdGF0aW9uVGVzdFJ1bm5lciAje29wdGlvbnN9IC1udW1Qcm9jZXNzZXM9I3sk
bnVtQ2hpbGRQcm9jZXNzZXMudG9fc30gLWV4ZT0jeyRqc2NQYXRofSAtZnNyb290PSN7ZnNSb290
fSAtLXJ1blVuaXF1ZUlkPSN7JHJ1blVuaXF1ZUlkfSBAI3tAcnVubmVyRGlyfS9ydW5zY3JpcHQi
CiAKLWRlZiBwcmVwYXJlUnVieVRlc3RSdW5uZXIKLSAgICBwcmVwYXJlUGxheVN0YXRpb25UZXN0
UnVubmVyCi1lbmQKKyAgICAgICAgcHJpbnQgY29tbWFuZAogCi1kZWYgdGVzdFJ1bm5lckNvbW1h
bmQKLSAgICBvcHRpb25zID0gRU5WWyJKU0NURVNUX29wdGlvbnMiXQorICAgICAgICByZXR1cm4g
Y29tbWFuZAorICAgIGVuZAorZW5kCiAKLSAgICBmc1Jvb3QgPSAkanNjUGF0aC5kaXJuYW1lCi0g
ICAgY29tbWFuZCA9ICJQbGF5U3RhdGlvblRlc3RSdW5uZXIgI3tvcHRpb25zfSAtbnVtUHJvY2Vz
c2VzPSN7JG51bUNoaWxkUHJvY2Vzc2VzLnRvX3N9IC1leGU9I3skanNjUGF0aH0gLWZzcm9vdD0j
e2ZzUm9vdH0gLS1ydW5VbmlxdWVJZD0jeyRydW5VbmlxdWVJZH0gQCN7JHJ1bm5lckRpcn0vcnVu
c2NyaXB0IgorY2xhc3MgVGVzdFJ1bm5lclNoZWxsIDwgUGxheXN0YXRpb25UZXN0UnVubmVyCitl
bmQKIAotICAgIHByaW50IGNvbW1hbmQKK2NsYXNzIFRlc3RSdW5uZXJNYWtlIDwgUGxheXN0YXRp
b25UZXN0UnVubmVyCitlbmQKIAotICAgIHJldHVybiBjb21tYW5kCitjbGFzcyBUZXN0UnVubmVy
UnVieSA8IFBsYXlzdGF0aW9uVGVzdFJ1bm5lcgogZW5kCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1ydWJ5LnJiIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItcnVieS5yYgppbmRleCA3ODg4
MTZhZDBjOWYxMGI3Njc1NmI4NzE2NTZmOTQ4YTZmNWIyYjM2Li4xZDdlYTc1MTFiNjMzZjllNmFl
MDkzYzIyZTY0NTRhNTAyODc5NTg2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1
YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1ydWJ5LnJiCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXJ1YnkucmIKQEAgLTI2MCwyNSArMjYwLDcg
QEAgZGVmIGNoYWtyYVBhc3NGYWlsRXJyb3JIYW5kbGVyCiAgICB9CiBlbmQKIAotY2xhc3MgUGxh
bgotICAgIGF0dHJfcmVhZGVyIDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpmYW1pbHksIDpuYW1l
LCA6b3V0cHV0SGFuZGxlciwgOmVycm9ySGFuZGxlciwgOmFkZGl0aW9uYWxFbnYKLSAgICBhdHRy
X2FjY2Vzc29yIDppbmRleAotICAgIAotICAgIGRlZiBpbml0aWFsaXplKGRpcmVjdG9yeSwgYXJn
dW1lbnRzLCBmYW1pbHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlcikKLSAgICAg
ICAgQGRpcmVjdG9yeSA9IGRpcmVjdG9yeQotICAgICAgICBAYXJndW1lbnRzID0gYXJndW1lbnRz
Ci0gICAgICAgIEBmYW1pbHkgPSBmYW1pbHkKLSAgICAgICAgQG5hbWUgPSBuYW1lCi0gICAgICAg
IEBvdXRwdXRIYW5kbGVyID0gb3V0cHV0SGFuZGxlcgotICAgICAgICBAZXJyb3JIYW5kbGVyID0g
ZXJyb3JIYW5kbGVyCi0gICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5kT3B0aW9uc1s6aXNT
bG93XQotICAgICAgICBAY3Jhc2hPSyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzpjcmFzaE9LXQot
ICAgICAgICBpZiBAY3Jhc2hPSwotICAgICAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBub2lzeU91
dHB1dEhhbmRsZXIKLSAgICAgICAgZW5kCi0gICAgICAgIEBhZGRpdGlvbmFsRW52ID0gW10KLSAg
ICBlbmQKLSAgICAKK2NsYXNzIFBsYW4gPCBCYXNlUGxhbgogICAgIGRlZiBzaGVsbENvbW1hbmQg
CiAgICAgICAgIHNjcmlwdCA9ICJvdXQgPSBuaWxcbiIKICAgICAgICAgc2NyaXB0ICs9ICJlcnIg
PSBuaWxcbiIKQEAgLTM5OCw4MiArMzgwLDk3IEBAIGNsYXNzIFBsYW4KICAgICBlbmQKIGVuZAog
Ci1kZWYgcHJlcGFyZVNoZWxsVGVzdFJ1bm5lcgotICAgIEZpbGUub3BlbigkcnVubmVyRGlyICsg
InJ1bnNjcmlwdCIsICJ3IikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICAkcnVubGlzdC5l
YWNoIHsKLSAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAgICAgICAgICBvdXRwLnB1dHMgInJ1Ynkg
dGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIKK2NsYXNzIFRlc3RSdW5uZXJTaGVsbCA8IFRlc3RS
dW5uZXIKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxl
dGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBGaWxlLm9wZW4oIiN7QHJ1bm5lckRpciAr
ICJydW5zY3JpcHQifSIsICJ3IikgeyB8ZnwKKyAgICAgICAgICAgIHJ1bmxpc3QuZWFjaCB7IHxw
bGFufAorICAgICAgICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisg
ICAgICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgICBmLnB1dHMoInJ1YnkgdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICB9Ci0gICAgYGRvczJ1bml4ICN7JHJ1bm5lckRpciArICJydW5z
Y3JpcHQifWAgICAgCisgICAgICAgIGBkb3MydW5peCAje0BydW5uZXJEaXIgKyAicnVuc2NyaXB0
In1gCisgICAgZW5kCisgICAgZGVmIGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAgICAgICAgInNo
IHJ1bnNjcmlwdCIKKyAgICBlbmQKIGVuZAogCi1kZWYgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFu
LCBwcmVyZXFzKQotICAgIGluZGV4ID0gcGxhbi5pbmRleAotICAgIHRhcmdldCA9ICJ0ZXN0X2Rv
bmVfI3tpbmRleH0iCi0gICAgb3V0cC5wdXRzICIje3RhcmdldH06ICN7cHJlcmVxcy5qb2luKCIg
Iil9IgotICAgIG91dHAucHV0cyAiXHRydWJ5IHRlc3Rfc2NyaXB0XyN7aW5kZXh9IgotICAgIHRh
cmdldAotZW5kCitjbGFzcyBUZXN0UnVubmVyTWFrZSA8IFRlc3RSdW5uZXIKKyAgICBkZWYgb3V0
cHV0X3RhcmdldChvdXRwLCBwbGFuLCBwcmVyZXFzKQorICAgICAgICBpbmRleCA9IHBsYW4uaW5k
ZXgKKyAgICAgICAgdGFyZ2V0ID0gInRlc3RfZG9uZV8je2luZGV4fSIKKyAgICAgICAgb3V0cC5w
dXRzICIje3RhcmdldH06ICN7cHJlcmVxcy5qb2luKCIgIil9IgorICAgICAgICBvdXRwLnB1dHMg
Ilx0cnVieSB0ZXN0X3NjcmlwdF8je2luZGV4fSIKKyAgICAgICAgdGFyZ2V0CisgICAgZW5kCisg
ICAgZGVmIHByZXBhcmVSdW5uZXJGb3JSZW1vdGUocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBs
ZXRlZFBsYW5zLCByZW1vdGVJbmRleCkKKyAgICAgICAgcnVuUGxhbnMgPSBbXQorICAgICAgICBz
ZXJpYWxSdW5QbGFucyA9IFtdCisgICAgICAgIHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAgICB8
IHBsYW4gfAorICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAg
ICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIEByZW1v
dGVIb3N0cy5uaWw/IG9yIHBsYW4uaW5kZXggJSBAcmVtb3RlSG9zdHMubGVuZ3RoID09IHJlbW90
ZUluZGV4CisgICAgICAgICAgICAgICAgaWYgc2VyaWFsUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAg
ICAgICAgICAgICAgICAgICAgc2VyaWFsUnVuUGxhbnMgPDwgcGxhbgorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcnVuUGxhbnMgPDwgcGxhbgorICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KIAotZGVmIHByZXBhcmVNYWtlVGVz
dFJ1bm5lcihyZW1vdGVJbmRleCkKLSAgICBzZXJpYWxQbGFucyA9IHt9Ci0gICAgJHNlcmlhbFJ1
bmxpc3QuZWFjaCB7IHxwfCBzZXJpYWxQbGFuc1twXSA9IG5pbCB9Ci0gICAgcnVuUGxhbnMgPSBb
XQotICAgIHNlcmlhbFJ1blBsYW5zID0gW10KLSAgICAkcnVubGlzdC5lYWNoIHsKLSAgICAgICAg
fCBwbGFuIHwKLSAgICAgICAgaWYgISRyZW1vdGUgb3IgcGxhbi5pbmRleCAlICRyZW1vdGVIb3N0
cy5sZW5ndGggPT0gcmVtb3RlSW5kZXgKLSAgICAgICAgICAgIGlmIHNlcmlhbFBsYW5zLmhhc19r
ZXk/KHBsYW4pCi0gICAgICAgICAgICAgICAgc2VyaWFsUnVuUGxhbnMgPDwgcGxhbgorICAgICAg
ICBGaWxlLm9wZW4oQHJ1bm5lckRpciArICJNYWtlZmlsZS4je3JlbW90ZUluZGV4fSIsICJ3Iikg
eworICAgICAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgICAgIGlmIHNlcmlhbFJ1blBsYW5zLmVt
cHR5PworICAgICAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiBwYXJhbGxlbCIpCiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcnVuUGxhbnMgPDwgcGxhbgorICAgICAgICAgICAg
ICAgIHNlcmlhbFByZXJlcSA9ICJ0ZXN0X2RvbmVfI3tzZXJpYWxSdW5QbGFuc1stMV0uaW5kZXh9
IgorICAgICAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiAje3NlcmlhbFByZXJlcX0iKQorICAg
ICAgICAgICAgICAgIHByZXZfdGFyZ2V0ID0gInBhcmFsbGVsIgorICAgICAgICAgICAgICAgIHNl
cmlhbFJ1blBsYW5zLmVhY2ggeworICAgICAgICAgICAgICAgICAgICB8IHBsYW4gfAorICAgICAg
ICAgICAgICAgICAgICBwcmV2X3RhcmdldCA9IG91dHB1dF90YXJnZXQob3V0cCwgcGxhbiwgW3By
ZXZfdGFyZ2V0XSkKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbmQKLSAgICAgICAg
ZW5kCi0gICAgfQotCi0gICAgRmlsZS5vcGVuKCRydW5uZXJEaXIgKyAiTWFrZWZpbGUuI3tyZW1v
dGVJbmRleH0iLCAidyIpIHsKLSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgaWYgc2VyaWFsUnVu
UGxhbnMuZW1wdHk/Ci0gICAgICAgICAgICBvdXRwLnB1dHMoImFsbDogcGFyYWxsZWwiKQotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBzZXJpYWxQcmVyZXEgPSAidGVzdF9kb25lXyN7c2VyaWFs
UnVuUGxhbnNbLTFdLmluZGV4fSIKLSAgICAgICAgICAgIG91dHAucHV0cygiYWxsOiAje3Nlcmlh
bFByZXJlcX0iKQotICAgICAgICAgICAgcHJldl90YXJnZXQgPSAicGFyYWxsZWwiCi0gICAgICAg
ICAgICBzZXJpYWxSdW5QbGFucy5lYWNoIHsKKyAgICAgICAgICAgIHBhcmFsbGVsVGFyZ2V0cyA9
IHJ1blBsYW5zLmNvbGxlY3QgewogICAgICAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAgICAgICAg
ICAgICAgcHJldl90YXJnZXQgPSBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtwcmV2X3Rhcmdl
dF0pCisgICAgICAgICAgICAgICAgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbXSkKICAgICAg
ICAgICAgIH0KLSAgICAgICAgZW5kCi0gICAgICAgIHBhcmFsbGVsVGFyZ2V0cyA9IHJ1blBsYW5z
LmNvbGxlY3QgewotICAgICAgICAgICAgfCBwbGFuIHwKLSAgICAgICAgICAgIG91dHB1dF90YXJn
ZXQob3V0cCwgcGxhbiwgW10pCisgICAgICAgICAgICBvdXRwLnB1dHMoInBhcmFsbGVsOiAiICsg
cGFyYWxsZWxUYXJnZXRzLmpvaW4oIiAiKSkKICAgICAgICAgfQotICAgICAgICBvdXRwLnB1dHMo
InBhcmFsbGVsOiAiICsgcGFyYWxsZWxUYXJnZXRzLmpvaW4oIiAiKSkKLSAgICB9CisgICAgZW5k
CisgICAgZGVmIHByZXBhcmVSdW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBs
YW5zLCByZW1vdGVIb3N0cykKKyAgICAgICAgaWYgcmVtb3RlSG9zdHMubmlsPworICAgICAgICAg
ICAgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVk
UGxhbnMsIDApCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlbW90ZUhvc3RzLmVhY2hfaW5k
ZXggeworICAgICAgICAgICAgICAgIHxyZW1vdGVJbmRleHwKKyAgICAgICAgICAgICAgICBwcmVw
YXJlUnVubmVyRm9yUmVtb3RlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywg
cmVtb3RlSW5kZXgpCisgICAgICAgICAgICB9CisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRl
ZiBjb21tYW5kKHJlbW90ZUluZGV4PTApCisgICAgICAgICJtYWtlIC1qICN7JG51bUNoaWxkUHJv
Y2Vzc2VzfSAtcyAtZiBNYWtlZmlsZS4je3JlbW90ZUluZGV4fSIKKyAgICBlbmQKIGVuZAogCi1k
ZWYgcHJlcGFyZVJ1YnlUZXN0UnVubmVyCi0gICAgRmlsZS5vcGVuKCRydW5uZXJEaXIgKyAicnVu
c2NyaXB0IiwgInciKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAgICRydW5saXN0LmVhY2gg
ewotICAgICAgICAgICAgfCBwbGFuIHwKLSAgICAgICAgICAgIG91dHAucHV0cyAic3lzdGVtIFwi
cnVieSB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9XCIiCitjbGFzcyBUZXN0UnVubmVyUnVieSA8
IFRlc3RSdW5uZXIKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0LCBzZXJpYWxQbGFucywg
Y29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBGaWxlLm9wZW4oQHJ1bm5lckRp
ciArICJydW5zY3JpcHQiLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAgICAgICAg
ICBydW5saXN0LmVhY2ggeworICAgICAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICAg
ICAgaWYgY29tcGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICAgICAg
bmV4dAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIG91dHAucHV0cyAic3lz
dGVtIFwicnVieSB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9XCIiCisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICB9Ci1lbmQKLQotZGVmIHRlc3RSdW5uZXJDb21tYW5kKHJlbW90ZUluZGV4
PTApCi0gICAgY2FzZSAkdGVzdFJ1bm5lclR5cGUKLSAgICB3aGVuIDpzaGVsbAotICAgICAgICBj
b21tYW5kID0gInNoIHJ1bnNjcmlwdCIKLSAgICB3aGVuIDptYWtlCi0gICAgICAgIGNvbW1hbmQg
PSAibWFrZSAtaiAjeyRudW1DaGlsZFByb2Nlc3Nlc30gLXMgLWYgTWFrZWZpbGUuI3tyZW1vdGVJ
bmRleH0iCi0gICAgd2hlbiA6cnVieQotICAgICAgICBjb21tYW5kID0gInJ1YnkgcnVuc2NyaXB0
IgotICAgIGVsc2UKLSAgICAgICAgcmFpc2UgIlVua25vd24gdGVzdCBydW5uZXIgdHlwZTogI3sk
dGVzdFJ1bm5lclR5cGUudG9fc30iCiAgICAgZW5kCi0gICAgcmV0dXJuIGNvbW1hbmQKKyAgICBk
ZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAgICAgICAicnVieSBydW5zY3JpcHQiCisgICAg
ZW5kCiBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNz
LXRlc3QvZXhlY3V0b3IucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10
ZXN0L2V4ZWN1dG9yLnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5OTUzZjZhMDZmZTM5YmYwNTZjNzZlZTdhMDcz
NGFjZDY3NGU4NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1Ynkv
anNjLXN0cmVzcy10ZXN0L2V4ZWN1dG9yLnJiCkBAIC0wLDAgKzEsNDI5IEBACisjIENvcHlyaWdo
dCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjIEltcGxlbWVudHMgdGhlIG1haW4gbG9vcCBmb3IgZXhlY3V0aW5nIHRoZSB0ZXN0cyBhbmQg
aGFuZGxpbmcKKyMgbWlzc2luZy9tdWx0aXBsZSByZXN1bHRzIChiZWNhdXNlIG9mIGluZnJhc3Ry
dWN0dXJlIGlzc3VlcykuIEl0IGFsc28KKyMgdGFrZXMgY2FyZSBvZiBtYXJraW5nIGZhaWxpbmcg
dGVzdHMgYXMgZmxha3kgd2hlbgorIyAtLXRyZWF0LWZhaWxpbmctYXMtZmxha3kgaXMgaW4gZWZm
ZWN0LiBJdCdzIGEgY2xhc3Mgc28gdGhhdCB3ZSBjYW4KKyMgZWFzaWx5IGluc3RhbnRpYXRlIGEg
c3ViY2xhc3MgZm9yIHRlc3RpbmcuCitjbGFzcyBCYXNlVGVzdHNFeGVjdXRvcgorICAgIGRlZiBp
bml0aWFsaXplKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCByZW1vdGVIb3N0cywgaXRlcmF0aW9uTGlt
aXRzLAorICAgICAgICAgICAgICAgICAgIHRyZWF0RmFpbGluZ0FzRmxha3ksIGxvZ1N0cmVhbT0k
c3RkZXJyKQorICAgICAgICBAcnVubGlzdCA9IHJ1bmxpc3QKKyAgICAgICAgQHNlcmlhbFBsYW5z
ID0gc2VyaWFsUGxhbnMKKyAgICAgICAgQHJlbW90ZUhvc3RzID0gcmVtb3RlSG9zdHMKKyAgICAg
ICAgQHRyZWF0RmFpbGluZ0FzRmxha3kgPSB0cmVhdEZhaWxpbmdBc0ZsYWt5CisgICAgICAgIEBp
bmZyYUl0ZXJhdGlvbnNGbG9vciA9IGl0ZXJhdGlvbkxpbWl0cy5pbmZyYUl0ZXJhdGlvbnNGbG9v
cgorICAgICAgICBAaXRlcmF0aW9uc0NlaWxpbmcgPSBpdGVyYXRpb25MaW1pdHMuaXRlcmF0aW9u
c0NlaWxpbmcKKyAgICAgICAgaWYgQGl0ZXJhdGlvbnNDZWlsaW5nIDwgQGluZnJhSXRlcmF0aW9u
c0Zsb29yCisgICAgICAgICAgICByYWlzZSAiaXRlcmF0aW9uc0NlaWxpbmcgKCN7QGl0ZXJhdGlv
bnNDZWlsaW5nfSA8IEBpbmZyYUl0ZXJhdGlvbnNGbG9vciAoI3tAaW5mcmFJdGVyYXRpb25zRmxv
b3J9IgorICAgICAgICBlbmQKKyAgICAgICAgQG1heEl0ZXJhdGlvbnMgPSBzZXRNYXhJdGVyYXRp
b25zKGluaXRpYWxNYXhBbGxvd2VkSXRlcmF0aW9ucyhydW5saXN0KSkKKyAgICAgICAgQGxvZ1N0
cmVhbSA9IGxvZ1N0cmVhbQorICAgIGVuZAorICAgIGRlZiBsb2cocykKKyAgICAgICAgQGxvZ1N0
cmVhbS5wdXRzKHMpIHVubGVzcyBAbG9nU3RyZWFtLm5pbD8KKyAgICBlbmQKKyAgICBkZWYgc2V0
TWF4SXRlcmF0aW9ucyh2YWx1ZSkKKyAgICAgICAgaWYgdmFsdWUgPiBAaXRlcmF0aW9uc0NlaWxp
bmcKKyAgICAgICAgICAgIHZhbHVlID0gQGl0ZXJhdGlvbnNDZWlsaW5nCisgICAgICAgIGVuZAor
ICAgICAgICBAbWF4SXRlcmF0aW9ucyA9IHZhbHVlCisgICAgZW5kCisgICAgZGVmIGl0ZXJhdGlv
bnNGb3JJbmZyYUZhaWx1cmVzCisgICAgICAgICMgSWYgd2UncmUgcnVubmluZyByZW1vdGVseSwg
c2NhbGUgdGhlIGV4dHJhIGl0ZXJhdGlvbnMgdG8KKyAgICAgICAgIyBhY2NvdW50IGZvciBpbmZy
YXN0cnVjdHVyZSBmYWlsdXJlcyBieSB0aGUgbnVtYmVyIG9mIGhvc3RzLgorICAgICAgICBudW1S
ZW1vdGVIb3N0cyA9IDAKKyAgICAgICAgaWYgbm90IEByZW1vdGVIb3N0cy5uaWw/CisgICAgICAg
ICAgICBudW1SZW1vdGVIb3N0cyA9IEByZW1vdGVIb3N0cy5zaXplIC8gMgorICAgICAgICBlbmQK
KyAgICAgICAgW251bVJlbW90ZUhvc3RzLCBAaW5mcmFJdGVyYXRpb25zRmxvb3JdLm1heAorICAg
IGVuZAorICAgIGRlZiBpbml0aWFsTWF4QWxsb3dlZEl0ZXJhdGlvbnMocnVubGlzdCkKKyAgICAg
ICAgbWF4VHJpZXMgPSAwCisgICAgICAgIHJ1bmxpc3QuZWFjaCB7IHxwbGFufAorICAgICAgICAg
ICAgbmV4dCBpZiBwbGFuLmZsYWt5Lm5pbD8KKyAgICAgICAgICAgIGlmIHBsYW4uZmxha3kubWF4
VHJpZXMgPiBtYXhUcmllcworICAgICAgICAgICAgICAgIG1heFRyaWVzID0gcGxhbi5mbGFreS5t
YXhUcmllcworICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgIyBUaGUgbnVtYmVy
IG9mIGFsbG93ZWQgaXRlcmF0aW9ucyBpcyB0aGUgc3VtIG9mCisgICAgICAgICMgaXRlcmF0aW9u
c0ZvckluZnJhRmFpbHVyZXMgYW5kIHRoZSBtYXggdGltZXMgd2UgcnVuIGEgdGVzdAorICAgICAg
ICAjIHRoYXQgYXBwZWFycyB0byBiZSBmbGFreS4KKyAgICAgICAgaXRlcmF0aW9uc0ZvckluZnJh
RmFpbHVyZXMgKyBtYXhUcmllcworICAgIGVuZAorICAgIGRlZiBhZGp1c3RGbGFraW5lc3NGb3JG
YWlsaW5nVGVzdHMoaXRlcmF0aW9uLCBzdGF0dXNNYXAsIGV2YWx1YXRvcikKKyAgICAgICAgY29t
cGxldGVkVGVzdHMgPSBldmFsdWF0b3IuY29tcGxldGVkCisgICAgICAgIGlmIEB0cmVhdEZhaWxp
bmdBc0ZsYWt5Lm5pbD8KKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZWRUZXN0cworICAgICAg
ICBlbmQKKworICAgICAgICAjIElmIHdlIGhhdmUgYSBsb3Qgb2YgZmFpbGluZyB0ZXN0cywgaXQn
cyBsaWtlbHkgdGhhdCB0aGUgdHJlZQorICAgICAgICAjIGlzIGJhZCBhbmQgdGhlcmUncyBubyBw
b2ludCBpbiB0cmVhdGluZyB0aGUgZmFpbHVyZXMgYXMKKyAgICAgICAgIyBwb3RlbnRpYWwgZmxh
a3kgdGVzdHMuCisgICAgICAgIGlmIGV2YWx1YXRvci50ZXN0c0ZhaWxlZC5zaXplID4gQHRyZWF0
RmFpbGluZ0FzRmxha3kubWF4RmFpbGluZworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZFRl
c3RzCisgICAgICAgIGVuZAorICAgICAgICBhZGp1c3RlZFRlc3RzID0gU2V0Lm5ldworICAgICAg
ICBldmFsdWF0b3IudGVzdHNGYWlsZWQuZWFjaCB7IHxwbGFufAorICAgICAgICAgICAgaWYgcGxh
bi5mbGFreS5uaWw/CisgICAgICAgICAgICAgICAgcGxhbi5mbGFreSA9IEZsYWt5Lm5ldyhAdHJl
YXRGYWlsaW5nQXNGbGFreS5wYXNzUGVyY2VudGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEB0cmVhdEZhaWxpbmdBc0ZsYWt5Lm1heFRyaWVzKQorICAgICAgICAg
ICAgICAgIGFkanVzdGVkVGVzdHMuYWRkKHBsYW4pCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
fQorICAgICAgICBpZiBhZGp1c3RlZFRlc3RzLnNpemUgPiAwCisgICAgICAgICAgICAjIEFkanVz
dCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJpZXMgdXB3YXJkcyBpZiB3ZSBqdXN0CisgICAgICAg
ICAgICAjIG1hcmtlZCBhIGZhaWxpbmcgdGVzdCBhcyBmbGFreS4gTm90ZSB0aGF0IGluZnJhc3Ry
dWN0dXJlCisgICAgICAgICAgICAjIGlzc3VlcyBtaWdodCBjYXVzZSB0ZXN0IGZhaWx1cmVzIHRv
IGJlIHJlcG9ydGVkIGF0IGxhdGVyCisgICAgICAgICAgICAjIGl0ZXJhdGlvbnMsIHNvIHdlIHVz
ZSAoKykgaW5zdGVhZCBvZiAobWF4KS4gVGhpcyBpcyBzYWZlCisgICAgICAgICAgICAjIGFzIHRo
ZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBpcyBjYXBwZWQgYnkKKyAgICAgICAgICAgICMgaXRlcmF0
aW9uc0NlaWxpbmcuCisgICAgICAgICAgICBuZXdNYXhJdGVyYXRpb25zID0gQG1heEl0ZXJhdGlv
bnMgKyBAdHJlYXRGYWlsaW5nQXNGbGFreS5tYXhUcmllcworICAgICAgICAgICAgaWYgQG1heEl0
ZXJhdGlvbnMgPCBuZXdNYXhJdGVyYXRpb25zCisgICAgICAgICAgICAgICAgc2V0TWF4SXRlcmF0
aW9ucyhuZXdNYXhJdGVyYXRpb25zKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBwdXRk
KCJhZGp1c3RGbGFraW5lc3NGb3JGYWlsaW5nVGVzdHMgI3tuZXdNYXhJdGVyYXRpb25zfSAoLT4j
e0BtYXhJdGVyYXRpb25zfSkgI3thZGp1c3RlZFRlc3RzLmNvbGxlY3QgeyB8cHwgcC50b19zIH19
IikKKyAgICAgICAgZW5kCisgICAgICAgICMgV2UganVzdCBtYXJrZWQgdGhvc2UgYXMgZmxha3kg
aW4gb3JkZXIgdG8gcmVydW4gdGhlbiwgc28KKyAgICAgICAgIyB0YWtlIHRoZW0gb2ZmIHRoZSBj
b21wbGV0ZWRUZXN0cy4KKyAgICAgICAgcmV0ID0gY29tcGxldGVkVGVzdHMgLSBhZGp1c3RlZFRl
c3RzCisgICAgICAgIHB1dGQoImNvbXBsZXRlZFRlc3RzOiAje3JldC5jb2xsZWN0IHsgfHB8IHAu
dG9fcyB9fSIpCisgICAgICAgIHJldAorICAgIGVuZAorICAgIGRlZiBsb29wCisgICAgICAgIHBy
ZXBhcmVBcnRpZmFjdHMoQHJlbW90ZUhvc3RzKQorICAgICAgICBzdGF0dXNNYXAgPSB7fQorICAg
ICAgICAjIFRoaXMgaXMgYSBoaWdoLWxldmVsIHJldHJ5IGxvb3AuIElmIGEgcmVtb3RlIGhvc3Qg
Z29lcyBhd2F5IGluCisgICAgICAgICMgdGhlIG1pZGRsZSBvZiBhIHJ1biBhbmQgZWl0aGVyIGRv
ZXNuJ3QgY29tZSBiYWNrIG9ubGluZSBvciBjb21lcworICAgICAgICAjIGJhY2sgaGF2aW5nIHJl
bW92ZWQgdGhlIHJlbW90ZSBkaXJlY3RvcnkgKCopLCBnZXRTdGF0dXNNYXAgd2lsbCBiZQorICAg
ICAgICAjIG1pc3NpbmcgcmVzdWx0cyBmb3IgdGhlc2UgdGVzdHMsIGFsbG93aW5nIHVzIHRvIHJl
dHJ5IHRoZW0gaW4KKyAgICAgICAgIyB0aGUgbmV4dCBpdGVyYXRpb24uCisgICAgICAgICMKKyAg
ICAgICAgIyAoKikgVGhpcyBtYXkgd2VsbCBoYXBwZW4gd2hlbiBydW5uaW5nIHRoZSB0ZXN0cyBv
biBlbWJlZGRlZAorICAgICAgICAjIGJvYXJkcyB0aGF0IHJlZ3VsYXJseSBjb3JydXB0IHRoZWly
IFNEIGNhcmQuIERlZmluaXRlbHkgYW4gaXNzdWUKKyAgICAgICAgIyBmb3IgdGhlIGNpMjAgYm9h
cmRzIHVzZWQgdG8gdGVzdCBNSVBTLgorICAgICAgICAxMDAwMDAudGltZXMgeyB8aXRlcmF0aW9u
fAorICAgICAgICAgICAgaWYgaXRlcmF0aW9uID49IEBtYXhJdGVyYXRpb25zCisgICAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgIyBAcmVtb3RlSG9zdHMg
KGFuZCB0aGVyZWZvcmUgcmVtb3RlSG9zdHMpIHdpbGwgYmUgbmlsCisgICAgICAgICAgICAjIHdo
ZW4gbm90IGV4ZWN1dGluZyBvbiByZW1vdGVzLgorICAgICAgICAgICAgcmVtb3RlSG9zdHMgPSBw
cmVwYXJlRXhlY3V0aW9uKEByZW1vdGVIb3N0cykKKyAgICAgICAgICAgIGlmIHJlbW90ZUhvc3Rz
IGFuZCByZW1vdGVIb3N0cy5zaXplID09IDAKKyAgICAgICAgICAgICAgICAjIEVpdGhlciBldmVy
eXRoaW5nIGlzIGRvd24sIG9yIGV2ZXJ5dGhpbmcgZ290CisgICAgICAgICAgICAgICAgIyByZWJv
b3RlZC4gSW4gdGhlIGxhdHRlciBjYXNlLCBhbGxvdyBlbm91Z2ggdGltZSBmb3IKKyAgICAgICAg
ICAgICAgICAjIHRoZSByZW1vdGUgYm9hcmRzIHRvIGJvb3QgdXAsIHRoZW4gcmV0cnkuCisgICAg
ICAgICAgICAgICAgd2FpdEludGVydmFsID0gNjAKKyAgICAgICAgICAgICAgICBsb2coIkFsbCBy
ZW1vdGUgaG9zdHMgZmFpbGVkLCByZXRyeWluZyBhZnRlciAje3dhaXRJbnRlcnZhbH1zIikKKyAg
ICAgICAgICAgICAgICBzbGVlcCh3YWl0SW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgbmV4dAor
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBleGVjdXRlVGVzdHMocmVtb3RlSG9zdHMpCisg
ICAgICAgICAgICBzdGF0dXNNYXAgPSB1cGRhdGVTdGF0dXNNYXAoaXRlcmF0aW9uLCBzdGF0dXNN
YXApCisgICAgICAgICAgICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0RXZhbHVhdG9yU2ltcGxlLm5l
dyhAcnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICAgICAgZXZhbHVhdG9yLnZpc2l0IQorCisg
ICAgICAgICAgICBjb21wbGV0ZWRUZXN0cyA9IGFkanVzdEZsYWtpbmVzc0ZvckZhaWxpbmdUZXN0
cyhpdGVyYXRpb24sIHN0YXR1c01hcCwgZXZhbHVhdG9yKQorICAgICAgICAgICAgIyBOQjogZXZh
bHVhdG9yLmNvbXBsZXRlZCBtYXkgbm93IGJlIG91dCBvZiBkYXRlLCB3ZSBuZWVkCisgICAgICAg
ICAgICAjIHRvIHVzZSBjb21wbGV0ZWRUZXN0cyBpbnN0ZWFkLgorCisgICAgICAgICAgICBicmVh
ayB1bmxlc3MgY29tcGxldGVkVGVzdHMuc2l6ZSAhPSBAcnVubGlzdC5zaXplCisgICAgICAgICAg
ICBpZiBjb21wbGV0ZWRUZXN0cy5zaXplID4gQHJ1bmxpc3Quc2l6ZQorICAgICAgICAgICAgICAg
IHJhaXNlICJUZXN0IGNvdW50IG1pc21hdGNoOiAje2NvbXBsZXRlZFRlc3RzLnNpemV9ID4gI3tA
cnVubGlzdC5zaXplfSIKKyAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAjIFJlZ2VuZXJh
dGUgdGhlIGxpc3RzIG9mIHRlc3RzIHRvIHJ1bgorICAgICAgICAgICAgcmVmcmVzaEV4ZWN1dGlv
bihAcnVubGlzdCwgQHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRUZXN0cykKKworICAgICAgICAgICAg
bnVtRmxha3kgPSBAcnVubGlzdC5zaXplIC0gY29tcGxldGVkVGVzdHMuc2l6ZSAtIGV2YWx1YXRv
ci5taXNzaW5nLnNpemUKKyAgICAgICAgICAgIHRlc3RzSW5mbyA9ICJjb21wbGV0ZWQgI3tjb21w
bGV0ZWRUZXN0cy5zaXplfS8je0BydW5saXN0LnNpemV9ICgje251bUZsYWt5fSBmbGFreSwgI3tl
dmFsdWF0b3IubWlzc2luZy5zaXplfSBtaXNzaW5nKSIKKyAgICAgICAgICAgIHJlbW90ZUhvc3Rz
SW5mbyA9ICIiCisgICAgICAgICAgICBpZiByZW1vdGVIb3N0cworICAgICAgICAgICAgICAgIHJl
bW90ZUhvc3RzSW5mbyA9ICIsICN7cmVtb3RlSG9zdHMuc2l6ZX0vI3tAcmVtb3RlSG9zdHMuc2l6
ZX0gaG9zdHMgbGl2ZSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgbG9nKCJBZnRlciB0
cnkgI3tpdGVyYXRpb24gKyAxfS8je0BtYXhJdGVyYXRpb25zfTogI3t0ZXN0c0luZm99I3tyZW1v
dGVIb3N0c0luZm99IikKKyAgICAgICAgfQorICAgICAgICBzdGF0dXNNYXAKKyAgICBlbmQKK2Vu
ZAorCittb2R1bGUgRXhlY3V0b3JTZWxmVGVzdHMKKyAgICBGaW5hbFRlc3RSZXN1bHQgPSBTdHJ1
Y3QubmV3KDpyZXN1bHQpCisgICAgVGVzdFJlc3VsdCA9IFN0cnVjdC5uZXcoOnJlc3VsdHMpCisg
ICAgSXRlcmF0aW9uID0gU3RydWN0Lm5ldyg6dGVzdFJlc3VsdHMpCisgICAgVGVzdENhc2UgPSBT
dHJ1Y3QubmV3KDp0ZXN0c1dpdGhGbGFreSwgOml0ZXJhdGlvbnMsIDpleHBlY3RlZFRlc3RSZXN1
bHRzLCA6dHJlYXRGYWlsaW5nQXNGbGFreSkKKyAgICBNT0NLX1RFU1RfRkFNSUxZID0gImYiCisg
ICAgSVRFUkFUSU9OX0xJTUlUUyA9IE9wZW5TdHJ1Y3QubmV3KDppbmZyYUl0ZXJhdGlvbnNGbG9v
ciA9PiAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aXRlcmF0aW9u
c0NlaWxpbmcgPT4gOCkKKyAgICBjbGFzcyBNb2NrVGVzdHNFeGVjdXRvciA8IEJhc2VUZXN0c0V4
ZWN1dG9yCisgICAgICAgIGF0dHJfcmVhZGVyIDpleGVjdXRlZEl0ZXJhdGlvbnMKKyAgICAgICAg
ZGVmIGluaXRpYWxpemUocnVubGlzdCwgaXRlcmF0aW9uUmVzdWx0cywgbWF4SXRlcmF0aW9uc0Jv
dW5kcywgdHJlYXRGYWlsaW5nQXNGbGFreSwgbG9nU3RyZWFtKQorICAgICAgICAgICAgc3VwZXIo
cnVubGlzdCwgW10sIG5pbCwgbWF4SXRlcmF0aW9uc0JvdW5kcywgdHJlYXRGYWlsaW5nQXNGbGFr
eSwgbG9nU3RyZWFtKQorICAgICAgICAgICAgQGl0ZXJhdGlvblJlc3VsdHMgPSBpdGVyYXRpb25S
ZXN1bHRzCisgICAgICAgICAgICBAZXhlY3V0ZWRJdGVyYXRpb25zID0gMAorICAgICAgICBlbmQK
KyAgICAgICAgZGVmIHByZXBhcmVBcnRpZmFjdHMocmVtb3RlSG9zdHMpCisgICAgICAgIGVuZAor
ICAgICAgICBkZWYgcHJlcGFyZUV4ZWN1dGlvbihyZW1vdGVIb3N0cykKKyAgICAgICAgICAgIHJl
bW90ZUhvc3RzCisgICAgICAgIGVuZAorICAgICAgICBkZWYgZXhlY3V0ZVRlc3RzKHJlbW90ZUhv
c3RzKQorICAgICAgICBlbmQKKyAgICAgICAgZGVmIHVwZGF0ZVN0YXR1c01hcChpdGVyYXRpb24s
IHN0YXR1c01hcCkKKyAgICAgICAgICAgIGlmIGl0ZXJhdGlvbiA+PSBAaXRlcmF0aW9uUmVzdWx0
cy5zaXplCisgICAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJUcnlpbmcgdG8gZXhlY3V0ZSBp
dGVyYXRpb24gI3tpdGVyYXRpb259IGJ1dCBvbmx5IGhhdmUgI3tAaXRlcmF0aW9uUmVzdWx0cy5z
aXplfSBpdGVyYXRpb24gcmVzdWx0cyBhdmFpbGFibGUiKQorICAgICAgICAgICAgICAgIHJhaXNl
ICJTZWxmIHRlc3QgZXJyb3I6IGluc3VmZmljaWVudCBpdGVyYXRpb25zIgorICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICBAZXhlY3V0ZWRJdGVyYXRpb25zICs9IDEKKyAgICAgICAgICAgIEBp
dGVyYXRpb25SZXN1bHRzW2l0ZXJhdGlvbl0uZWFjaCB7IHxpdGVyYXRpb258CisgICAgICAgICAg
ICAgICAgaXRlcmF0aW9uLmVhY2hfd2l0aF9pbmRleCB7IHx0ZXN0UmVzdWx0LCB0ZXN0SW5kZXh8
CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gQHJ1bmxpc3RbdGVzdEluZGV4XS5pbmRleAor
ICAgICAgICAgICAgICAgICAgICAjIEJlY2F1c2Ugb2YgaW5mcmEgaXNzdWVzLCBhIHRlc3QgbWln
aHQgaGF2ZSBtdWx0aXBsZSByZXN1bHRzLgorICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0
LnJlc3VsdHMuZWFjaCB7IHxyZXN1bHR8CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0g
Ii4vI3tTVEFUVVNfRklMRV9QUkVGSVh9I3tpbmRleH0gI3skcnVuVW5pcXVlSWR9IDAgI3tyZXN1
bHR9IgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1N0YXR1c0xpbmUoc3RhdHVzTWFw
LCBsaW5lKQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcHV0ZCgic3RhdHVzTWFwOiAje3N0YXR1c01hcH0iKQorICAg
ICAgICAgICAgc3RhdHVzTWFwCisgICAgICAgIGVuZAorICAgICAgICBkZWYgcmVmcmVzaEV4ZWN1
dGlvbihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkVGVzdHMpCisgICAgICAgIGVuZAor
ICAgIGVuZAorCisgICAgZGVmIEV4ZWN1dG9yU2VsZlRlc3RzLnJ1bgorICAgICAgICB0cmYgPSBU
ZXN0UmVzdWx0Lm5ldyhbU1RBVFVTX0ZJTEVfRkFJTF0pCisgICAgICAgIHRycCA9IFRlc3RSZXN1
bHQubmV3KFtTVEFUVVNfRklMRV9QQVNTXSkKKyAgICAgICAgdHJlID0gVGVzdFJlc3VsdC5uZXco
W10pCisgICAgICAgIGZ0cnAgPSBGaW5hbFRlc3RSZXN1bHQubmV3KFNUQVRVU19GSUxFX1BBU1Mp
CisgICAgICAgIGZ0cmYgPSBGaW5hbFRlc3RSZXN1bHQubmV3KFNUQVRVU19GSUxFX0ZBSUwpCisg
ICAgICAgIGZ0cmUgPSBGaW5hbFRlc3RSZXN1bHQubmV3KG5pbCkKKyAgICAgICAgWworICAgICAg
ICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sICMgMiB0ZXN0cyAodDAsIHQxKSwgbmVpdGhl
ciBmbGFreQorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSXRlcmF0aW9uLm5ldygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnAsICMgdDAgcGFzc2Vk
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJwLCAjIHQxIHBhc3NlZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSksCisgICAgICAg
ICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwgIyAyIHRlc3RzICh0MCwgdDEpLCBuZWl0aGVy
IGZsYWt5CisgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRyZl0pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cnAsIGZ0cmZdKSwKKyAgICAgICAg
ICAgICMgMSB0ZXN0IGdpdmVzIG5vIHJlc3VsdCwgbmVlZCBhIHNlY29uZCBpdGVyYXRpb24sIGJv
dGggZmluYWxseSBwYXNzCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRycF0pLAorICAgICAgICAgICAgIyAxIHRl
c3QgZmFpbHMsIDEgZ2l2ZXMgbm8gcmVzdWx0LCBuZWVkIGEgc2Vjb25kIGl0ZXJhdGlvbiwgb25l
IGZpbmFsbHkgcGFzc2VzCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwgbmlsXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RyZiwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbZnRyZiwgZnRycF0pLAorICAgICAgICAgICAgIyAxIHRl
c3QgcGFzc2VzLCAxIGdpdmVzIG5vIHJlc3VsdCwgbmVlZCBhIHNlY29uZCBpdGVyYXRpb24sIG9u
ZSBmaW5hbGx5IHBhc3NlcworICAgICAgICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
dGVyYXRpb24ubmV3KFt0cnAsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
dGVyYXRpb24ubmV3KFt0cmUsIHRyZl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cnAsIGZ0cmZdKSwKKyAgICAgICAgICAgIFRlc3RD
YXNlLm5ldyhbbmlsLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBGaXJzdCBpdGVyYXRpb24gZG9lc24ndCBwcm9kdWNlIGFu
eSByZXN1bHRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0
cmUsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0
cmYsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0
cmUsIHRyZl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgW2Z0cmYsIGZ0cmZdKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0LCB3aGVuIG5v
IGZsYWtpZXMgYXJlIHByZXNlbnQsIHdlIHN0b3AgYXQKKyAgICAgICAgICAgICMgaW5mcmFJdGVy
YXRpb25zRmxvb3Igd2hlbiBubyByZXN1bHRzIGNvbWUgaW4uCisgICAgICAgICAgICBUZXN0Q2Fz
ZS5uZXcoW25pbCwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbSXRlcmF0aW9uLm5l
dyhbdHJlLCB0cmVdKV0gKiBJVEVSQVRJT05fTElNSVRTLmluZnJhSXRlcmF0aW9uc0Zsb29yLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJlLCBmdHJlXSksCisgICAgICAgICAgICAjIFRl
c3QgdGhlIG1heEl0ZXJhdGlvbnMgYWRqdXN0bWVudCB3b3JrcyBhcyBleHBlY3RlZCBpbgorICAg
ICAgICAgICAgIyB0aGUgcHJlc2VuY2Ugb2YgYSBzdGF0aWMgZmxha3kuCisgICAgICAgICAgICBU
ZXN0Q2FzZS5uZXcoW0ZsYWt5Lm5ldygwLjM5LCA0KSwgbmlsXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2luY2Ugd2UgaGF2ZSBh
IGZsYWt5IHRlc3QsIHRoZSBtYXhJdGVyYXRpb25zIGdldHMgYWRqdXN0ZWQgdG8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyBJVEVSQVRJT05fTElNSVRTLmluZnJhSXRlcmF0aW9uc0Zs
b29yICArIEZsYWt5Lm1heFRyaWVzID0gNy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJmLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSksCisgICAgICAgICAgICAjIFRl
c3QgdGhhdCBhIGZsYWt5IGNhbiBmaW5pc2ggZWFybHkuCisgICAgICAgICAgICBUZXN0Q2FzZS5u
ZXcoW0ZsYWt5Lm5ldygwLjQsIDQpLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtm
dHJwLCBmdHJwXSksCisgICAgICAgICAgICAjIFNhbWUsIHdpdGggbW9yZSB2YXJpYWJpbGl0eS4K
KyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJw
LCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJl
LCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJl
LCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJl
LCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJl
LCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJl
LCB0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIFtmdHJwLCBmdHJwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuU3RydWN0
Lm5ldyg6cGFzc1BlcmNlbnRhZ2UgPT4gMC40LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDptYXhUcmllcyA9PiA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDptYXhGYWlsaW5nID0+IDMpKSwKKyAgICAgICAgICAgICMgU2FtZSwgd2l0
aCBkaWZmZXJlbnQgdmFyaWFiaWxpdHkuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwg
bmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRyZl0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQZXJjZW50YWdlID0+IDAuNCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gNiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiAzKSks
CisgICAgICAgICAgICAjIFRlc3QgdGhhdCBhIGZsYWt5IGZvciB3aGljaCBub3QgZW5vdWdoIHJl
c3VsdHMgY29tZSBpbiBpcyBub3QgbWFya2VkIGFzIGNvbXBsZXRlZC4KKyAgICAgICAgICAgIFRl
c3RDYXNlLm5ldyhbbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZl0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnBdKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEl0ZXJhdGlvbi5uZXcoW3RyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
dGVyYXRpb24ubmV3KFt0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0
aW9uLm5ldyhbdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5u
ZXcoW3RyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgW2Z0cmVdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3
KDpwYXNzUGVyY2VudGFnZSA9PiAwLjQ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDptYXhUcmllcyA9PiA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDptYXhGYWlsaW5nID0+IDEpKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0IChz
dGF0aWNhbGx5KSBmbGFreSB0ZXN0cyBhcmVuJ3QgYWRqdXN0ZWQKKyAgICAgICAgICAgIFRlc3RD
YXNlLm5ldyhbRmxha3kubmV3KDAuNSwgMyksIG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmYsIHRy
cF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRy
ZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmYsIHRy
ZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgW2Z0cmYsIGZ0cnBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3
KDpwYXNzUGVyY2VudGFnZSA9PiAwLjcsICMgPiAyLzMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gNiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiAzKSksCisgICAgICAgICAgICAjIFRlc3Qg
dGhhdCB3ZSByZXNwZWN0IG1heEZhaWxpbmcuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25p
bCwgbmlsLCBuaWxdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmLCB0cmYsIHRyZl0pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Z0cmYsIGZ0cmYs
IGZ0cmZdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3KDpwYXNzUGVy
Y2VudGFnZSA9PiAwLjcsICMgPiAyLzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6bWF4VHJpZXMgPT4gNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6bWF4RmFpbGluZyA9PiAyKSksCisgICAgICAgICAgICAjIFRlc3QgdGhhdCB3ZSBo
YWx0IGF0IG1heEl0ZXJhdGlvbnMgKDMgKyA1ID0gOCkgaWYgbm8gcmVzdWx0cyBjb21lIGluLgor
ICAgICAgICAgICAgVGVzdENhc2UubmV3KFtGbGFreS5uZXcoMC41LCA1KSwgbmlsXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJh
dGlvbi5uZXcoW3RyZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBbZnRyZSwgZnRycF0pLAorICAgICAgICBdLmVhY2hfd2l0aF9p
bmRleCB7CisgICAgICAgICAgICB8dGVzdGNhc2UsIHRlc3RjYXNlSW5kZXh8CisgICAgICAgICAg
ICBydW5saXN0ID0gW10KKyAgICAgICAgICAgIHB1dGQoIj09PT4gVGVzdGNhc2UgI3t0ZXN0Y2Fz
ZUluZGV4fSIpCisgICAgICAgICAgICB0ZXN0Y2FzZS50ZXN0c1dpdGhGbGFreS5lYWNoX3dpdGhf
aW5kZXggeyB8Zmxha3ksIGluZGV4fAorICAgICAgICAgICAgICAgIHBsYW4gPSBCYXNlUGxhbi5t
b2NrKE1PQ0tfVEVTVF9GQU1JTFksICJ0I3tpbmRleH0iLCBmbGFreSkKKyAgICAgICAgICAgICAg
ICBydW5saXN0IDw8IHBsYW4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1dGQoInJ1bmxp
c3Q6ICN7cnVubGlzdC5jb2xsZWN0IHsgfHB8IHAudG9fcyB9fSwgZXhwZWN0ZWQ6ICN7dGVzdGNh
c2UuZXhwZWN0ZWRUZXN0UmVzdWx0c30iKQorICAgICAgICAgICAgZXhlY3V0b3IgPSBNb2NrVGVz
dHNFeGVjdXRvci5uZXcocnVubGlzdCwgdGVzdGNhc2UuaXRlcmF0aW9ucywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElURVJBVElPTl9MSU1JVFMsIHRlc3Rj
YXNlLnRyZWF0RmFpbGluZ0FzRmxha3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkdGVzdHNEZWJ1Z1N0cmVhbSkKKyAgICAgICAgICAgIHN0YXR1c01hcCA9
IGV4ZWN1dG9yLmxvb3AKKyAgICAgICAgICAgIGlmIGV4ZWN1dG9yLmV4ZWN1dGVkSXRlcmF0aW9u
cyAhPSB0ZXN0Y2FzZS5pdGVyYXRpb25zLnNpemUKKyAgICAgICAgICAgICAgICAjIFRoZSB0ZXN0
Y2FzZSBzaG91bGQgcHJvdmlkZSBleGFjdGx5IGFzIG1hbnkKKyAgICAgICAgICAgICAgICAjIGl0
ZXJhdGlvbiByZXN1bHRzIGFzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICByYWlzZSAiRXhlY3V0
ZWQgI3tleGVjdXRvci5leGVjdXRlZEl0ZXJhdGlvbnN9LCAje3Rlc3RjYXNlLml0ZXJhdGlvbnMu
c2l6ZX0gZ2l2ZW4iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGV4cGVjdENvbXBsZXRl
ZCA9IFNldC5uZXcocnVubGlzdC5zZWxlY3QgeyB8cGxhbnwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vdCB0ZXN0Y2FzZS5leHBlY3RlZFRlc3RSZXN1bHRzW3J1
bmxpc3QuaW5kZXgocGxhbildLnJlc3VsdC5uaWw/CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0pCisKKyAgICAgICAgICAgIGV2YWx1YXRvciA9IFRlc3RSZXN1bHRFdmFs
dWF0b3JTaW1wbGUubmV3KHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgICAgIGV2YWx1YXRv
ci52aXNpdCEKKworICAgICAgICAgICAgdmVyaWZ5Q29tcGxldGVkVGVzdHNNYXRjaEV4cGVjdGVk
KHN0YXR1c01hcCwgZXZhbHVhdG9yLmNvbXBsZXRlZCwgZXhwZWN0Q29tcGxldGVkKQorCisgICAg
ICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9IGZhbHNlCisgICAgICAgICAgICBydW5saXN0LmVhY2hf
d2l0aF9pbmRleCB7IHxwbGFuLCBpbmRleHwKKyAgICAgICAgICAgICAgICBjYXNlIHRlc3RjYXNl
LmV4cGVjdGVkVGVzdFJlc3VsdHNbaW5kZXhdLnJlc3VsdAorICAgICAgICAgICAgICAgIHdoZW4g
bmlsCisgICAgICAgICAgICAgICAgICAgIGlmIGV2YWx1YXRvci50ZXN0c1Bhc3NlZC5pbmNsdWRl
PyhwbGFuKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2VGYWlsZWQgPSB0cnVlCisg
ICAgICAgICAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlRlc3QgI3tpbmRleH0gc2hvdWxk
IG5vdCBoYXZlIGNvbXBsZXRlZCBidXQgcGFzc2VkIikKKyAgICAgICAgICAgICAgICAgICAgZWxz
aWYgZXZhbHVhdG9yLnRlc3RzRmFpbGVkLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICRz
dGRlcnIucHV0cygiVGVzdCAje2luZGV4fSBzaG91bGQgbm90IGhhdmUgY29tcGxldGVkIGJ1dCBm
YWlsZWQiKQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICB3aGVuIFNU
QVRVU19GSUxFX1BBU1MKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGV2YWx1YXRvci50ZXN0
c1Bhc3NlZC5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2VG
YWlsZWQgPSB0cnVlCisgICAgICAgICAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlRlc3Qg
I3tpbmRleH0gc2hvdWxkIGhhdmUgcGFzc2VkIGJ1dCBkaWRuJ3QiKQorICAgICAgICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgICAgICB3aGVuIFNUQVRVU19GSUxFX0ZBSUwKKyAgICAgICAg
ICAgICAgICAgICAgaWYgbm90IGV2YWx1YXRvci50ZXN0c0ZhaWxlZC5pbmNsdWRlPyhwbGFuKQor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2VGYWlsZWQgPSB0cnVlCisgICAgICAgICAg
ICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlRlc3QgI3tpbmRleH0gc2hvdWxkIGhhdmUgZmFp
bGVkIGJ1dCBkaWRuJ3QiKQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJhaXNlICJDYW4ndCBnZXQgaGVyZSIKKyAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIHRlc3RjYXNlRmFp
bGVkCisgICAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJzdGF0dXNNYXAgPSAje3N0YXR1c01h
cH0iKQorICAgICAgICAgICAgICAgIHJhaXNlICJTZWxmIHRlc3QgZmFpbHVyZSIKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB9CisgICAgZW5kCitlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9yLnJiIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFs
dWF0b3IucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFjZGZmYmQzNWRjYTAzZGY0ZTI4YzgwMjA5NWIwMWM5M2Jj
NmM3NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3Ry
ZXNzLXRlc3QvdGVzdC1yZXN1bHQtZXZhbHVhdG9yLnJiCkBAIC0wLDAgKzEsMjkzIEBACisjIENv
cHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjIFZpc2l0cyB0aGUgdGVzdHMgaW4gdGhlIHJ1bmxpc3QgYW5kIGludm9rZXMgYSBu
dW1iZXIgb2YKKyMgY2FsbGJhY2tzLiBVc2VkIHZpYSBzdWJjbGFzc2luZy4KK2NsYXNzIFRlc3RS
ZXN1bHRFdmFsdWF0b3IKKyAgICBkZWYgaW5pdGlhbGl6ZShydW5saXN0LCBzdGF0dXNNYXApCisg
ICAgICAgIEBydW5saXN0ID0gcnVubGlzdAorICAgICAgICBAc3RhdHVzTWFwID0gc3RhdHVzTWFw
CisgICAgZW5kCisgICAgZGVmIG5vUmVzdWx0KHBsYW4pCisgICAgICAgICMgWFhYOiBtYXliZSBm
b2N1cyBvbiBpbmNvbXBsZXRlIGluIHJlcG9ydGluZz8KKyAgICBlbmQKKyAgICBkZWYgcGFzc2Vk
KHBsYW4pCisgICAgZW5kCisgICAgZGVmIGZhaWxlZChwbGFuKQorICAgIGVuZAorICAgIGRlZiB3
YXNGbGFreUFuZFBhc3NlZChwbGFuLCBzdWNjZXNzZXMsIHRyaWVzKQorICAgIGVuZAorICAgIGRl
ZiB2aXNpdGluZyhwbGFuKQorICAgIGVuZAorICAgIGRlZiB2aXNpdCEKKyAgICAgICAgQHJ1bmxp
c3QuZWFjaCB7CisgICAgICAgICAgICB8cGxhbnwKKyAgICAgICAgICAgIHZpc2l0aW5nKHBsYW4p
CisgICAgICAgICAgICBpZiBub3QgQHN0YXR1c01hcC5oYXNfa2V5PyhwbGFuLmluZGV4KQorICAg
ICAgICAgICAgICAgIG5vUmVzdWx0KHBsYW4pCisgICAgICAgICAgICAgICAgbmV4dAorICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICBzdGF0dXNlcyA9IEBzdGF0dXNNYXBbcGxhbi5pbmRleF0K
KyAgICAgICAgICAgIHRlc3RXYXNTdWNjZXNzZnVsID0gbmlsCisgICAgICAgICAgICBpZiBwbGFu
LmZsYWt5Lm5pbD8KKyAgICAgICAgICAgICAgICAjIElmIGFueSBvZiB0aGUgcmVzdWx0cyB3ZSBn
b3Qgd2FzIGEgcGFzcywgY29uc2lkZXIgdGhlCisgICAgICAgICAgICAgICAgIyB0ZXN0IHN1Y2Nl
c3NmdWwuIFRoZSBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCwgdW5sZXNzIGEKKyAgICAgICAgICAg
ICAgICAjIHRlc3QgaXMgbWFya2VkIGFzIGZsYWt5LCBmYWlsdXJlcyBhcmUgYmVjYXVzZSBvZgor
ICAgICAgICAgICAgICAgICMgaW5mcmFzdHJ1Y3R1cmUgaXNzdWVzICh3aGljaCBpcyB3aHkgdGhl
IHRlc3Qgd2FzIHJ1bgorICAgICAgICAgICAgICAgICMgbXVsdGlwbGUgdGltZXMgaW4gdGhlIGZp
cnN0IHBsYWNlKS4KKyAgICAgICAgICAgICAgICB0ZXN0V2FzU3VjY2Vzc2Z1bCA9IHN0YXR1c2Vz
LmluY2x1ZGU/KFNUQVRVU19GSUxFX1BBU1MpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFdhc1N1Y2Nlc3NmdWwgPSBwbGFuLmZsYWt5LnJlc3VsdChzdGF0dXNlcykKKyAg
ICAgICAgICAgICAgICBpZiB0ZXN0V2FzU3VjY2Vzc2Z1bC5uaWw/CisgICAgICAgICAgICAgICAg
ICAgICMgTm90IGNvbXBsZXRlZCB5ZXQKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBpZiB0ZXN0V2FzU3Vj
Y2Vzc2Z1bAorICAgICAgICAgICAgICAgIHBhc3NlZChwbGFuKQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGZhaWxlZChwbGFuKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAg
ICBucmVzdWx0cyA9IHN0YXR1c2VzLnVuaXEuc2l6ZQorICAgICAgICAgICAgaWYgbnJlc3VsdHMg
PCAxCisgICAgICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJVbmV4cGVjdGVkIG51bWJlciBvZiBy
ZXN1bHRzOiAje25yZXN1bHRzfSBmb3IgcGxhbiAje3BsYW59IikKKyAgICAgICAgICAgICAgICBy
YWlzZSAiVW5leHBlY3RlZCBudW1iZXIgb2YgcmVzdWx0cyIKKyAgICAgICAgICAgIGVsc2lmIG5y
ZXN1bHRzICE9IDEgYW5kIHRlc3RXYXNTdWNjZXNzZnVsCisgICAgICAgICAgICAgICAgd2FzRmxh
a3lBbmRQYXNzZWQocGxhbiwgc3RhdHVzZXMuY291bnQoU1RBVFVTX0ZJTEVfUEFTUyksIHN0YXR1
c2VzLnNpemUpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKKyMg
U2ltcGxlIGJlYW4gY291bnRpbmcgY2xhc3Mgd2l0aCBubyBzaWRlLWVmZmVjdHMuCitjbGFzcyBU
ZXN0UmVzdWx0RXZhbHVhdG9yU2ltcGxlIDwgVGVzdFJlc3VsdEV2YWx1YXRvcgorICAgIGF0dHJf
cmVhZGVyIDp0ZXN0c1Bhc3NlZCwgOnRlc3RzRmFpbGVkCisgICAgZGVmIGluaXRpYWxpemUocnVu
bGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBzdXBlcihydW5saXN0LCBzdGF0dXNNYXApCisgICAg
ICAgIEB0ZXN0c1Bhc3NlZCA9IFNldC5uZXcKKyAgICAgICAgQHRlc3RzRmFpbGVkID0gU2V0Lm5l
dworICAgICAgICBAbm9SZXN1bHQgPSBTZXQubmV3CisgICAgICAgIEBhbGwgPSBTZXQubmV3Cisg
ICAgZW5kCisgICAgZGVmIHZpc2l0aW5nKHBsYW4pCisgICAgICAgIEBhbGwuYWRkKHBsYW4pCisg
ICAgZW5kCisgICAgZGVmIHBhc3NlZChwbGFuKQorICAgICAgICBAdGVzdHNQYXNzZWQuYWRkKHBs
YW4pCisgICAgZW5kCisgICAgZGVmIGZhaWxlZChwbGFuKQorICAgICAgICBAdGVzdHNGYWlsZWQu
YWRkKHBsYW4pCisgICAgZW5kCisgICAgZGVmIG5vUmVzdWx0KHBsYW4pCisgICAgICAgIEBub1Jl
c3VsdC5hZGQocGxhbikKKyAgICBlbmQKKyAgICBkZWYgY29tcGxldGVkCisgICAgICAgIEB0ZXN0
c1Bhc3NlZCB8IEB0ZXN0c0ZhaWxlZAorICAgIGVuZAorICAgIGRlZiBtaXNzaW5nCisgICAgICAg
IEBub1Jlc3VsdAorICAgIGVuZAorZW5kCisKK2NsYXNzIFJlc3VsdHNXcml0ZXIKKyAgICBkZWYg
aW5pdGlhbGl6ZQorICAgICAgICBAZmlsZXMgPSB7fQorICAgIGVuZAorICAgIGRlZiBhcHBlbmQo
ZmlsZW5hbWUsIHMpCisgICAgICAgIGlmIG5vdCBAZmlsZXMuaGFzX2tleT8oZmlsZW5hbWUpCisg
ICAgICAgICAgICBAZmlsZXNbZmlsZW5hbWVdID0gRmlsZS5vcGVuKCRvdXRwdXREaXIgKyBmaWxl
bmFtZSwgImEiKQorICAgICAgICBlbmQKKyAgICAgICAgQGZpbGVzW2ZpbGVuYW1lXS5wdXRzKHMp
CisgICAgZW5kCisgICAgZGVmIGFwcGVuZEZhaWx1cmUocGxhbikKKyAgICAgICAgYXBwZW5kKCJm
YWlsZWQiLCBwbGFuLm5hbWUpCisgICAgZW5kCisgICAgZGVmIGFwcGVuZFBhc3MocGxhbikKKyAg
ICAgICAgYXBwZW5kKCJwYXNzZWQiLCBwbGFuLm5hbWUpCisgICAgZW5kCisgICAgZGVmIGFwcGVu
ZE5vUmVzdWx0KHBsYW4pCisgICAgICAgIGFwcGVuZCgibm9yZXN1bHQiLCBwbGFuLm5hbWUpCisg
ICAgZW5kCisgICAgZGVmIGFwcGVuZEZsYWt5KHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMpCisgICAg
ICAgIGFwcGVuZCgiZmxha3kiLCAiI3twbGFuLm5hbWV9ICN7c3VjY2Vzc2VzfSAje3RyaWVzfSIp
CisgICAgZW5kCisgICAgZGVmIGFwcGVuZFJlc3VsdChwbGFuLCBkaWRQYXNzKQorICAgICAgICBh
cHBlbmQoInJlc3VsdHMiLCAiI3twbGFuLm5hbWV9OiAje2RpZFBhc3MgPyAnUEFTUycgOiAnRkFJ
TCd9IikKKyAgICBlbmQKKyAgICBkZWYgY2xvc2UKKyAgICAgICAgQGZpbGVzLmVhY2hfdmFsdWUg
eyB8ZnwKKyAgICAgICAgICAgIGYuY2xvc2UKKyAgICAgICAgfQorICAgICAgICBAZmlsZXMuY2xl
YXIKKyAgICBlbmQKK2VuZAorCisjIEZpbmFsIGFjY291bnRpbmcgb2YgcmVzdWx0cy4KK2NsYXNz
IFRlc3RSZXN1bHRFdmFsdWF0b3JGaW5hbCA8IFRlc3RSZXN1bHRFdmFsdWF0b3IKKyAgICBhdHRy
X3JlYWRlciA6bm9yZXN1bHQsIDpmYW1pbHlNYXAKKyAgICBkZWYgaW5pdGlhbGl6ZShydW5saXN0
LCBzdGF0dXNNYXApCisgICAgICAgIHN1cGVyKHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAg
QG5vcmVzdWx0ID0gMAorICAgICAgICBAZmFtaWx5TWFwID0ge30KKyAgICAgICAgQHdyaXRlciA9
IFJlc3VsdHNXcml0ZXIubmV3CisgICAgZW5kCisgICAgZGVmIG5vUmVzdWx0KHBsYW4pCisgICAg
ICAgIEB3cml0ZXIuYXBwZW5kTm9SZXN1bHQocGxhbikKKyAgICAgICAgQG5vcmVzdWx0ICs9IDEK
KyAgICBlbmQKKyAgICBkZWYgcGFzc2VkKHBsYW4pCisgICAgICAgIEB3cml0ZXIuYXBwZW5kUGFz
cyhwbGFuKQorICAgICAgICBhcHBlbmRSZXN1bHQocGxhbiwgdHJ1ZSkKKyAgICAgICAgYWRkVG9G
YW1pbHlNYXAocGxhbiwgIlBBU1MiKQorICAgIGVuZAorICAgIGRlZiBmYWlsZWQocGxhbikKKyAg
ICAgICAgQHdyaXRlci5hcHBlbmRGYWlsdXJlKHBsYW4pCisgICAgICAgIGFwcGVuZFJlc3VsdChw
bGFuLCBmYWxzZSkKKyAgICAgICAgYWRkVG9GYW1pbHlNYXAocGxhbiwgIkZBSUwiKQorICAgIGVu
ZAorICAgIGRlZiB3YXNGbGFreUFuZFBhc3NlZChwbGFuLCBzdWNjZXNzZXMsIHRyaWVzKQorICAg
ICAgICBAd3JpdGVyLmFwcGVuZEZsYWt5KHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMpCisgICAgZW5k
CisgICAgcHJpdmF0ZQorICAgIGRlZiBhcHBlbmRSZXN1bHQocGxhbiwgc3VjY2Vzc2Z1bCkKKyAg
ICAgICAgQHdyaXRlci5hcHBlbmRSZXN1bHQocGxhbiwgc3VjY2Vzc2Z1bCkKKyAgICBlbmQKKyAg
ICBkZWYgYWRkVG9GYW1pbHlNYXAocGxhbiwgcmVzdWx0KQorICAgICAgICB1bmxlc3MgZmFtaWx5
TWFwW3BsYW4uZmFtaWx5XQorICAgICAgICAgICAgZmFtaWx5TWFwW3BsYW4uZmFtaWx5XSA9IFtd
CisgICAgICAgIGVuZAorICAgICAgICBmYW1pbHlNYXBbcGxhbi5mYW1pbHldIDw8IHsgOnJlc3Vs
dCA9PiByZXN1bHQsIDpwbGFuID0+IHBsYW59CisgICAgZW5kCitlbmQKKworZGVmIHZlcmlmeUNv
bXBsZXRlZFRlc3RzTWF0Y2hFeHBlY3RlZChzdGF0dXNNYXAsIGNvbXBsZXRlZCwgZXhwZWN0ZWQp
CisgICAgaWYgY29tcGxldGVkICE9IGV4cGVjdGVkCisgICAgICAgIHVuZXhwZWN0ZWRseUNvbXBs
ZXRlZCA9IChjb21wbGV0ZWQgLSBleHBlY3RlZCkuY29sbGVjdCB7IHxwbGFufAorICAgICAgICAg
ICAgIiMje3BsYW4uaW5kZXh9OiAje3N0YXR1c01hcFtwbGFuLmluZGV4XX0iCisgICAgICAgIH0u
am9pbigiIHwgIikKKyAgICAgICAgJHN0ZGVyci5wdXRzKCJVbmV4cGVjdGVkbHkgY29tcGxldGVk
OiAje3VuZXhwZWN0ZWRseUNvbXBsZXRlZH0iKQorICAgICAgICBleHBlY3RlZEJ1dE5vdENvbXBs
ZXRlZCA9IChleHBlY3RlZCAtIGNvbXBsZXRlZCkuY29sbGVjdCB7IHxwbGFufAorICAgICAgICAg
ICAgIiMje3BsYW4uaW5kZXh9OiAje3N0YXR1c01hcFtwbGFuLmluZGV4XX0iCisgICAgICAgIH0u
am9pbigiIHwgIikKKyAgICAgICAgJHN0ZGVyci5wdXRzKCJFeHBlY3RlZCBidXQgbm90IGNvbXBs
ZXRlZDogI3tleHBlY3RlZEJ1dE5vdENvbXBsZXRlZH0iKQorICAgICAgICByYWlzZSAibWlzbWF0
Y2giCisgICAgZW5kCitlbmQKKworbW9kdWxlIFRlc3RSZXN1bHRFdmFsdWF0b3JTZWxmVGVzdHMK
KyAgICBkZWYgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5zZWxmVGVzdFRlc3RSZXN1bHRF
dmFsdWF0b3IKKyAgICAgICAgcnVubGlzdCA9IFtdCisgICAgICAgIHN0YXR1c01hcCA9IHt9Cisg
ICAgICAgIGV4cGVjdGVkUGFzcyA9IFNldC5uZXcKKyAgICAgICAgZXhwZWN0ZWRGYWlsID0gU2V0
Lm5ldworICAgICAgICB0YyA9IFN0cnVjdC5uZXcoOnN0YXR1c2VzLCA6ZXhwZWN0ZWRQYXNzKQor
ICAgICAgICBbCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCB0cnVlKSwK
KyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTU10sIHRydWUpLAorICAgICAgICAg
ICAgdGMubmV3KFtTVEFUVVNfRklMRV9QQVNTLCBTVEFUVVNfRklMRV9QQVNTXSwgdHJ1ZSksCisg
ICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX0ZBSUxdLCB0
cnVlKSwKKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfRkFJTF0sIGZhbHNlKSwKKyAg
ICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfRkFJTCwgU1RBVFVTX0ZJTEVfRkFJTF0sIGZh
bHNlKSwKKyAgICAgICAgXS5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICAgICAgfHRlc3QsIHRl
c3RJbmRleHwKKyAgICAgICAgICAgIHBsYW4gPSBCYXNlUGxhbi5tb2NrKCJmIiwgInQje3Rlc3RJ
bmRleH0iKQorICAgICAgICAgICAgcnVubGlzdCA8PCBwbGFuCisgICAgICAgICAgICBzdGF0dXNN
YXBbcGxhbi5pbmRleF0gPSB0ZXN0LnN0YXR1c2VzCisgICAgICAgICAgICBpZiB0ZXN0LmV4cGVj
dGVkUGFzcworICAgICAgICAgICAgICAgIGV4cGVjdGVkUGFzcy5hZGQocGxhbikKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBleHBlY3RlZEZhaWwuYWRkKHBsYW4pCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0RXZhbHVh
dG9yU2ltcGxlLm5ldyhydW5saXN0LCBzdGF0dXNNYXApCisgICAgICAgIGV2YWx1YXRvci52aXNp
dCEKKworICAgICAgICBpZiBleHBlY3RlZFBhc3MgIT0gZXZhbHVhdG9yLnRlc3RzUGFzc2VkCisg
ICAgICAgICAgICAkc3RkZXJyLnB1dHMoImV4cGVjdGVkUGFzczogI3tleHBlY3RlZFBhc3N9IikK
KyAgICAgICAgICAgICRzdGRlcnIucHV0cygiUGFzc2VkOiAje2V2YWx1YXRvci50ZXN0c1Bhc3Nl
ZH0iKQorICAgICAgICAgICAgcmFpc2UgImV4cGVjdGVkUGFzcyBtaXNtYXRjaCIKKyAgICAgICAg
ZW5kCisgICAgICAgIGlmIGV4cGVjdGVkRmFpbCAhPSBldmFsdWF0b3IudGVzdHNGYWlsZWQKKyAg
ICAgICAgICAgICRzdGRlcnIucHV0cygiZXhwZWN0ZWRGYWlsOiAje2V4cGVjdGVkRmFpbH0iKQor
ICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJGYWlsZWQ6ICN7ZXZhbHVhdG9yLnRlc3RzRmFpbGVk
fSIpCisgICAgICAgICAgICByYWlzZSAiZXhwZWN0ZWRGYWlsIG1pc21hdGNoIgorICAgICAgICBl
bmQKKyAgICBlbmQKKworICAgIGRlZiBnZXRDb21wbGV0ZWRUZXN0c0Zyb21TdGF0dXNNYXAocnVu
bGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBldmFsdWF0b3IgPSBUZXN0UmVzdWx0RXZhbHVhdG9y
U2ltcGxlLm5ldyhydW5saXN0LCBzdGF0dXNNYXApCisgICAgICAgIGV2YWx1YXRvci52aXNpdCEK
KyAgICAgICAgZXZhbHVhdG9yLmNvbXBsZXRlZAorICAgIGVuZAorCisgICAgZGVmIFRlc3RSZXN1
bHRFdmFsdWF0b3JTZWxmVGVzdHMuc2VsZlRlc3RHZXRDb21wbGV0ZWRUZXN0c0Zyb21TdGF0dXNN
YXAKKyAgICAgICAgcnVubGlzdCA9IFtdCisgICAgICAgIGV4cGVjdENvbXBsZXRlZCA9IFNldC5u
ZXcKKyAgICAgICAgc3RhdHVzTWFwID0ge30KKyAgICAgICAgdGMgPSBTdHJ1Y3QubmV3KDpzdGF0
dXNlcywgOmZsYWt5LCA6c2hvdWxkQ291bnRBc0NvbXBsZXRlZCkKKyAgICAgICAgWworICAgICAg
ICAgICAgIyBObyByZXN1bHRzID0+IG5vdCBjb21wbGV0ZWQKKyAgICAgICAgICAgIHRjLm5ldyhu
aWwsIG5pbCwgZmFsc2UpLAorICAgICAgICAgICAgdGMubmV3KG5pbCwgRmxha3kubmV3KDAuNiwg
MiksIGZhbHNlKSwKKworICAgICAgICAgICAgIyBQYXNzZWQvZmFpbGVkIGFuZCBub3QgZmxha3kg
LT4gY29tcGxldGVkCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCBuaWws
IHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMXSwgbmlsLCB0cnVl
KSwKKworICAgICAgICAgICAgIyBJZiBpdCBoYXMgbXVsdGlwbGUgcmVzdWx0cyBhbmQgaXMgbm90
IGEgZmxha3ksIHRoYXQgbWVhbnMgaXQKKyAgICAgICAgICAgICMgd2FzIHJlLXJ1biBiZWNhdXNl
IG9mIGluZnJhc3RydWN0dXJlIGlzc3Vlcy4gQ291bnRzIGFzCisgICAgICAgICAgICAjIGNvbXBs
ZXRlZCByZWdhcmRsZXNzIG9mIHRoZSBhY3R1YWwgcmVzdWx0cy4KKyAgICAgICAgICAgIHRjLm5l
dyhbU1RBVFVTX0ZJTEVfUEFTUywgU1RBVFVTX0ZJTEVfUEFTU10sIG5pbCwgdHJ1ZSksCisgICAg
ICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX0ZBSUxdLCBuaWws
IHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMLCBTVEFUVVNfRklM
RV9GQUlMXSwgbmlsLCB0cnVlKSwKKworICAgICAgICAgICAgIyBOb3QgY29tcGxldGVkOiB3ZSBo
YXZlIG9uZSBydW4gcmVtYWluaW5nIGFuZCB0aGlzIGNvdWxkIGZsaXAKKyAgICAgICAgICAgICMg
dGhlIHBlcmNlbnRhZ2UuCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCBG
bGFreS5uZXcoMC42LCAyKSwgZmFsc2UpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklM
RV9GQUlMXSwgRmxha3kubmV3KDAuNCwgMiksIGZhbHNlKSwKKworICAgICAgICAgICAgIyBFdmVu
IGlmIHRoZSBsYXN0IG9uZSBmYWlscyB3ZSdyZSBzdGlsbCBnb25uYSBiZSBhYm92ZQorICAgICAg
ICAgICAgIyAocmVzcGVjdGl2ZWx5IGJlbG93KSB0aGUgcGFzcyBwZXJjZW50YWdlLgorICAgICAg
ICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9QQVNTLCBTVEFUVVNfRklMRV9QQVNTXSwgRmxha3ku
bmV3KDAuNSwgMyksIHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlM
LCBTVEFUVVNfRklMRV9GQUlMXSwgRmxha3kubmV3KDAuNSwgMyksIHRydWUpLAorICAgICAgICBd
LmVhY2hfd2l0aF9pbmRleCB7CisgICAgICAgICAgICB8dGVzdCwgdGVzdEluZGV4fAorICAgICAg
ICAgICAgcGxhbiA9IEJhc2VQbGFuLm1vY2soImYiLCAidCN7dGVzdEluZGV4fSIsIHRlc3QuZmxh
a3kpCisgICAgICAgICAgICBydW5saXN0IDw8IHBsYW4KKyAgICAgICAgICAgIGlmIG5vdCB0ZXN0
LnN0YXR1c2VzLm5pbD8KKyAgICAgICAgICAgICAgICBzdGF0dXNNYXBbcGxhbi5pbmRleF0gPSB0
ZXN0LnN0YXR1c2VzCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIHRlc3Quc2hvdWxk
Q291bnRBc0NvbXBsZXRlZAorICAgICAgICAgICAgICAgIGV4cGVjdENvbXBsZXRlZC5hZGQocGxh
bikKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIGV2YWx1YXRvciA9IFRlc3RS
ZXN1bHRFdmFsdWF0b3JTaW1wbGUubmV3KHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgZXZh
bHVhdG9yLnZpc2l0IQorCisgICAgICAgIHZlcmlmeUNvbXBsZXRlZFRlc3RzTWF0Y2hFeHBlY3Rl
ZChzdGF0dXNNYXAsIGV2YWx1YXRvci5jb21wbGV0ZWQsIGV4cGVjdENvbXBsZXRlZCkKKyAgICBl
bmQKKyAgICBkZWYgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5ydW4KKyAgICAgICAgVGVz
dFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5zZWxmVGVzdFRlc3RSZXN1bHRFdmFsdWF0b3IKKyAg
ICAgICAgVGVzdFJlc3VsdEV2YWx1YXRvclNlbGZUZXN0cy5zZWxmVGVzdEdldENvbXBsZXRlZFRl
c3RzRnJvbVN0YXR1c01hcAorICAgIGVuZAorZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444921</attachid>
            <date>2021-11-21 03:03:41 -0800</date>
            <delta_ts>2021-11-21 03:04:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232529-20211121120339.patch</filename>
            <type>text/plain</type>
            <size>123819</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDk4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDgzZWZjMjhhYWQzNTU0MzZmYWJlMTQxZDc2NTg3MDhh
MDNmNGE0My4uYTIxMTU1NmQzYWQ1ODU2ZDgxMjc4N2M4MmM1OWY4MDM0OWU0MTI3YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2
IEBACisyMDIxLTExLTIxICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIE1vdmUgZGV0ZWN0aW9uIG9mIGZsYWt5IEpTQyB0ZXN0cyB0byBydW4t
anNjLXN0cmVzcy10ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMyNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9uYXRoYW4gQmVkYXJkLgor
CisgICAgICAgIEN1cnJlbnRseSwgZmxha3kgZGV0ZWN0aW9uIGhhcHBlbnMgYnkKKyAgICAgICAg
UmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIG1lYW5zIHRoYXQg
d2UgZW5kIHVwCisgICAgICAgIHJlcnVubmluZyBhbGwgSlNDIHRlc3RzIHdoZW4gdGhlcmUncyBl
dmVuIGEgc2luZ2xlIGZhaWx1cmUuIEV2ZW4KKyAgICAgICAgd29yc2UsIHdoZW4gdGhlIHRyZWUg
aXMgYnJva2VuIChhcyBzb21ldGltZXMgaGFwcGVucyBvbiBBUk0zMiBhbmQKKyAgICAgICAgTUlQ
Uykgd2UgZW5kIHVwCisKKyAgICAgICAgMS4gcnVubmluZyB0aGUgdGVzdHMgb25jZSAodGhleSBm
YWlsKQorICAgICAgICAyLiBydW5uaW5nIGFsbCB0ZXN0cyBhZ2FpbgorICAgICAgICAzLiBydW5u
aW5nIGFsbCB0ZXN0cyBhZ2FpbiB3aXRob3V0IHRoZSBwYXRjaAorCisgICAgICAgIFRoaXMgbWVh
bnMgdGhlIHF1ZXVlIHNsb3dzIGRvd24gYSBsb3QsIHNpbmNlIGl0IHJ1bnMgYWxsIEpTQworICAg
ICAgICBzdHJlc3MgdGVzdHMgMyB0aW1lcy4KKworICAgICAgICBUaGlzIHBhdGNoIGF0dGVtcHRz
IHRvIGVsaW1pbmF0ZSBzdGVwIDIsIHdoaWxlIGFsc28gYmVpbmcgbW9yZQorICAgICAgICByZWxp
YWJsZSBhYm91dCBoYW5kbGluZyBmbGFreSB0ZXN0cy4gU2luY2Ugd2Ugbm8gbG9uZ2VyIG5lZWQg
dG8KKyAgICAgICAgcmVydW4gdGhlIHdob2xlIHRlc3Qgc3VpdGUsIHdlIGNhbiBzcGVuZCBtb3Jl
IENQVSB0aW1lIG9uCisgICAgICAgIGlkZW50aWZ5aW5nIHRlc3RzIHRoYXQgbWlnaHQgYmUgZmxh
a3kuIFRoZSB1c2VyIGNhbiBwYXNzIGluCisgICAgICAgIC0tdHJlYXQtZmFpbGluZy1hcy1mbGFr
eT1wYXNzUGVyY2VudGFnZSxtYXhUcmllcyxtYXhGYWlsaW5nLiBJZgorICAgICAgICBsZXNzIHRo
YW4gbWF4RmFpbGluZyB0ZXN0cyBmYWlsZWQsIHdlIHJ1biB0aGVtIGFnYWluICh1cCB0bworICAg
ICAgICBtYXhUcmllcykgdW50aWwgd2UgY2FuIHRlbGwgd2hldGhlciB0aGV5IHBhc3MgbW9yZSB0
aGFuCisgICAgICAgIHBhc3NQZXJjZW50YWdlIG9mIHRoZSB0aW1lLiBUaGlzIHNob3VsZCByZXN1
bHQgaW4gbGVzcyBmYWxzZQorICAgICAgICBwb3NpdGl2ZXMgY29tcGFyZWQgdG8gUmVSdW5KYXZh
U2NyaXB0Q29yZVRlc3RzLCBhcyB3ZSdsbCBubyBsb25nZXIKKyAgICAgICAgZGVjbGFyZSBhIGZs
YWt5IHRlc3QgYSBmYWlsdXJlIGlmIGl0IGhhcHBlbnMgdG8gZmFpbCB0d28gdGltZXMgaW4KKyAg
ICAgICAgYSByb3cuIEluIG9yZGVyIHRvIHJlbW92ZSBSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMs
IHRoZSBwYXRjaAorICAgICAgICB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlcyAtLXRyZWF0LWZhaWxp
bmctYXMtZmxha3kgYnkgZGVmYXVsdCBpbiB0aGUKKyAgICAgICAgSlNDIEVXUyBxdWV1ZXMuCisK
KyAgICAgICAgSW1wbGVtZW50YXRpb24td2lzZSwgdGhlIHBhdGNoIGdlbmVyYWxpemVzIHRoZSBl
eGlzdGluZyByZXRyeSBsb29wIGluCisgICAgICAgIHJ1bi1qc2Mtc3RyZXNzLXRlc3RzIChmb3Ig
ZGVhbGluZyB3aXRoIGZsYWt5IHJlbW90ZSBob3N0cykgdG8gKGEpIHdvcmsKKyAgICAgICAgd2l0
aCBhbnkgcnVubmVyIGFuZCAoYikgYWxzbyByZXRyeSBmbGFreSB0ZXN0cy4gQXMgZmxha3kgaGFu
ZGxpbmcgaXMKKyAgICAgICAgaW1wcmFjdGljYWwgdG8gdGVzdCBtYW51YWxseSwgaXQgYWxzbyBh
YnN0cmFjdHMtb3V0IHRoZSByZXRyeSBsb2dpYyBzbworICAgICAgICB0aGF0IHdlIGNhbiB0ZXN0
IHdpdGggcHJlZGV0ZXJtaW5lZCByZXN1bHRzLiBUaGlzIG1lYW5zIHdlIG5lZWQgdG8KKyAgICAg
ICAgZS5nLiBwYXNzIHRoZSBydW5saXN0IGFyb3VuZCBpbnN0ZWFkIG9mIHRyZWF0aW5nIGl0IGFz
IGEgZ2xvYmFsLAorICAgICAgICBjYXB0dXJpbmcgdGhlIG1haW4gbG9naWMgaW4gY2xhc3NlcyBh
bmQgaGF2aW5nIGEgc3ViY2xhc3MgcHJvdmlkZQorICAgICAgICBtZXRob2RzIHRvIGJlIGNhbGxl
ZCBiYWNrIGFuZCBzbyBvbi4gVGhlIHBhdGNoIGRvZXMgbm90IHNoeSBhd2F5IGZyb20KKyAgICAg
ICAgcmVmYWN0b3JpbmcgY29kZSB3aGVuIGl0IG1ha2VzIHNlbnNlIGJ1dCBhbHNvIGRvZXNuJ3Qg
Z28gb3V0IG9mIGl0cworICAgICAgICB3YXkgdG8gcmVmYWN0b3IgKGUuZy4gdGhlcmUncyBzdGls
bCBhIGxvdCBvZiBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZQorICAgICAgICBkZWZhdWx0IGFuZCBy
dWJ5IHdyaXRlcnMpLgorCisgICAgICAgIERvd25zaWRlczogd2UgY2FuIG5vIGxvbmdlciBkZXRl
Y3QgZmxha2luZXNzIGluIHRoZSBiaW5hcnkgdGVzdHMKKyAgICAgICAgKHRlc3RhaXIsIHRlc3Ri
MywgLi4uKS4gSG93ZXZlciwgSSdtIG5vdCBhd2FyZSBvZiBhbnkgaW5zdGFuY2Ugb2YKKyAgICAg
ICAgZmxha2luZXNzIGluIHRob3NlIHRlc3RzLiBUaGUgcmV0cnkgbG9vcCBpcyBub3cgYmVpbmcg
dXNlZCBmb3IgYWxsCisgICAgICAgIHJ1bm5lcnMsIHdoaWNoIG1lYW5zIHRoZSByZXN1bHRzIGFu
YWx5c2lzIHBhdGggZm9yIGUuZy4gdGhlIG1ha2UKKyAgICAgICAgcnVubmVyIGlzIG5vdyBhIGJp
dCBtb3JlIGNvbXBsaWNhdGVkLiBEZXRlY3RpbmcgZmxha3kgdGVzdHMgbmVlZHMKKyAgICAgICAg
Y29kZSBzb21ld2hlcmUsIGJ1dCB0aGlzIG1vdmVzIHRoZSBkZXRlY3Rpb24gY29kZSBiZWZvcmUg
dGhlCisgICAgICAgIHJlc3VsdCByZXBvcnRpbmcsIHNvIGlzIGEgYml0IHJpc2tpZXIuIFRoZSBz
ZWxmIHRlc3RzIHNob3VsZAorICAgICAgICBjb3VudGVyYmFsYW5jZSB0aGlzLgorICAgICAgICAq
IENJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHk6CisgICAgICAgIEtpbGwgUmVSdW5KYXZhU2Ny
aXB0Q29yZVRlc3RzIGFuZCBlbmFibGUgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5LgorICAgICAg
ICBEZWZhdWx0cyB0byA2MCUgcGFzcyBwZXJjZW50YWdlLCAxMCBtYXhUcmllcyBhbmQgYSBsaW1p
dCBvZiAyMDAKKyAgICAgICAgZmFpbGluZyB0ZXN0cy4KKyAgICAgICAgKFJ1bkphdmFTY3JpcHRD
b3JlVGVzdHMpOgorICAgICAgICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5fX2luaXRfXyk6Cisg
ICAgICAgIChSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLnN0YXJ0KToKKyAgICAgICAgKFJ1bkphdmFT
Y3JpcHRDb3JlVGVzdHMuZXZhbHVhdGVDb21tYW5kKToKKyAgICAgICAgKFJ1bkphdmFTY3JpcHRD
b3JlVGVzdHMuY29tbWFuZENvbXBsZXRlKToKKyAgICAgICAgKFJ1bkphdmFTY3JpcHRDb3JlVGVz
dHMuZ2V0UmVzdWx0U3VtbWFyeSk6CisgICAgICAgIChSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLl9h
ZGRUb0xvZyk6CisgICAgICAgIChBbmFseXplSlNDVGVzdHNSZXN1bHRzLnN0YXJ0KToKKyAgICAg
ICAgKFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cyk6IERlbGV0ZWQuCisgICAgICAgIChSZVJ1bkph
dmFTY3JpcHRDb3JlVGVzdHMuZXZhbHVhdGVDb21tYW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBD
SVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5OgorICAgICAgICBVcGRhdGUgdG8g
bWF0Y2ggdGhlIGNoYW5nZXMgaW4gc3RlcHMucHkuIFNvbWUgdGVzdGNhc2VzIG5vIGxvbmdlcgor
ICAgICAgICBhcHBseS4KKyAgICAgICAgKiBTY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJz
L3NoZWxsLXJ1bm5lci5zaDoKKyAgICAgICAgRG9uJ3QgZGVkdWNlIHRoZSB0ZXN0IGxpc3QgbWFu
dWFsbHksIGV4cGVjdCBpdCBhcyBhbiBhcmd1bWVudCBpbnN0ZWFkLgorICAgICAgICAqIFNjcmlw
dHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzOgorICAgICAgICBQcm9wYWdhdGUgaW5mbyBvbiB0
ZXN0IGZsYWtpbmVzcy4KKyAgICAgICAgKHJ1bkpTQ1N0cmVzc1Rlc3RzKToKKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorICAgICAgICBSZWZhY3RvciB0aGUgZXhlY3V0
aW9uIGxvZ2ljIHRvIHVzZSB0aGUgYWJzdHJhY3RlZC1vdXQgY29kZSBpbgorICAgICAgICBleGVj
dXRvci5yYi4gVXNlIHRoZSByZXRyeSBsb29wIG9uIGV2ZXJ5IHJ1bm5lci4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1kZWZhdWx0LnJiOgorICAg
ICAgICBVcGRhdGUgdGhlIHRlc3Qtd3JpdGVyIGZpbGVzIGZvciB0aGUgY2hhbmdlcyB0byBydW4t
anNjLXN0cmVzcy10ZXN0cy4KKyAgICAgICAgTW92ZSBwcmVwYXJlRm9vUnVubmVyIGFuZCB0ZXN0
UnVubmVyQ29tbWFuZCB0byBhIGNsYXNzIHNvIHRoYXQgd2UgY2FuCisgICAgICAgIGtlZXAgc3Rh
dGUgKGZvciB0aGUgbmV3IGFyZ3VtZW50IHRvIHRoZSBzaGVsbCBydW5uZXIpLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlzdGF0aW9uLnJi
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXJ1
YnkucmI6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC9leGVj
dXRvci5yYjogQWRkZWQuCisgICAgICAgIEltcGxlbWVudCBhIGdlbmVyaWMgcmV0cnkgbG9vcCBh
bmQgZGVmaW5lIGFuIGFycmF5IG9mIHZpcnR1YWwKKyAgICAgICAgdGVzdHMgKHVzaW5nIHByZWRl
ZmluZWQgdGVzdCByZXN1bHRzIGZvciBlYWNoIGl0ZXJhdGlvbikuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFsdWF0b3IucmI6IEFk
ZGVkLgorICAgICAgICBFbmNhcHN1bGF0ZSB0aGUgbG9naWMgb24gd2hldGhlciBhIHRlc3QgaGFz
IHBhc3NlZCBvciBub3QKKyAgICAgICAgKERpZCB3ZSBnZXQgYW55IHJlc3VsdHM/IFdlcmUgdGhv
c2UgcmVzdWx0cyBlbm91Z2ggdG8gZGVjbGFyZSBhCisgICAgICAgIGZsYWt5L25vbi1mbGFreSB0
ZXN0IGEgcGFzcz8pIGFuZCBhZGQgYSBudW1iZXIgb2YgdGVzdHMuCisKIDIwMjEtMTEtMTkgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBpbWFnZSBpbnRlcmZhY2Ugd2hlbiBidWlsZGlu
ZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBz
LnB5IGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weQppbmRleCA0N2MwOGE0Y2U0
ODI5ZDM5NmQxYjcwOWFjZTE2MjA0MjE5YjU2MjgzLi5hYTgxNjYzMTRmMDcxMzc3YjYyNGRlMzJi
Y2Q5MzVlYTIzYjE5MmU1IDEwMDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0
ZXBzLnB5CisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHkKQEAgLTE4MzQs
NiArMTgzNCw4IEBAIGNsYXNzIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoc2hlbGwuVGVzdCk6CiAg
ICAganNvbkZpbGVOYW1lID0gJ2pzY19yZXN1bHRzLmpzb24nCiAgICAgbG9nZmlsZXMgPSB7J2pz
b24nOiBqc29uRmlsZU5hbWV9CiAgICAgY29tbWFuZCA9IFsncGVybCcsICdUb29scy9TY3JpcHRz
L3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0
JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoanNvbkZpbGVOYW1lKSwgV2l0aFByb3BlcnRp
ZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKV0KKyAgICAjIFdlIHJlbHkgb24gcnVuLWpzYy1zdHJl
c3MtdGVzdHMgdG8gd2VlZCBvdXQgYW55IGZsYWt5IHRlc3RzCisgICAgY29tbWFuZF9leHRyYSA9
IFsnLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5PTAuNiwxMCwyMDAnXQogICAgIHByZWZpeCA9ICdq
c2NfJwogICAgIE5VTV9GQUlMVVJFU19UT19ESVNQTEFZX0lOX1NUQVRVUyA9IDUKIApAQCAtMTg0
MSwxMSArMTg0MywxMyBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3Qp
OgogICAgICAgICBzaGVsbC5UZXN0Ll9faW5pdF9fKHNlbGYsIGxvZ0Vudmlyb249RmFsc2UsIHNp
Z3Rlcm1UaW1lPTEwLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5iaW5hcnlGYWlsdXJlcyA9IFtd
CiAgICAgICAgIHNlbGYuc3RyZXNzVGVzdEZhaWx1cmVzID0gW10KKyAgICAgICAgc2VsZi5mbGFr
eSA9IHt9CiAKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIHNlbGYubG9nX29ic2VydmVy
X2pzb24gPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcigpCiAgICAgICAgIHNlbGYuYWRk
TG9nT2JzZXJ2ZXIoJ2pzb24nLCBzZWxmLmxvZ19vYnNlcnZlcl9qc29uKQogCisKICAgICAgICAg
IyBhZGQgcmVtb3RlcyBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCB0byB0aGUgY29tbWFuZCBsaW5l
IGlmIG5lZWRlZAogICAgICAgICByZW1vdGVzZmlsZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3JlbW90
ZXMnLCBGYWxzZSkKICAgICAgICAgaWYgcmVtb3Rlc2ZpbGU6CkBAIC0xODYyLDYgKzE4NjYsNyBA
QCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAgICAg
c2VsZi5jb21tYW5kLmV4dGVuZChbJy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12ZXJib3NlJ10pCiAK
ICAgICAgICAgYXBwZW5kQ3VzdG9tQnVpbGRGbGFncyhzZWxmLCBzZWxmLmdldFByb3BlcnR5KCdw
bGF0Zm9ybScpLCBzZWxmLmdldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nKSkKKyAgICAgICAgc2Vs
Zi5jb21tYW5kLmV4dGVuZChzZWxmLmNvbW1hbmRfZXh0cmEpCiAgICAgICAgIHJldHVybiBzaGVs
bC5UZXN0LnN0YXJ0KHNlbGYpCiAKICAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6
CkBAIC0xODcyLDcgKzE4NzcsMTQgQEAgY2xhc3MgUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhzaGVs
bC5UZXN0KToKICAgICAgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKICAgICAg
ICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbbWVzc2FnZV0sIFNVQ0NFU1MpCiAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3Rl
cChbVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLCBL
aWxsT2xkUHJvY2Vzc2VzKCksIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cygpXSkKKyAgICAgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoRmFpbGVkVGVzdHMnLCBUcnVlKQorICAgICAgICAg
ICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW1VuQXBwbHlQYXRjaElmUmVx
dWlyZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBpbGVKU0NX
aXRob3V0UGF0Y2goKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtpbGxP
bGRQcm9jZXNzZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzKCldKQogICAg
ICAgICByZXR1cm4gcmMKIAogICAgIGRlZiBjb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKToKQEAg
LTE4OTUsMTAgKzE5MDcsMTIgQEAgY2xhc3MgUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhzaGVsbC5U
ZXN0KToKICAgICAgICAgICAgIHNlbGYuYmluYXJ5RmFpbHVyZXMuYXBwZW5kKCd0ZXN0ZGZnJykK
ICAgICAgICAgaWYganNjX3Jlc3VsdHMuZ2V0KCdhbGxBcGlUZXN0c1Bhc3NlZCcpIGlzIEZhbHNl
OgogICAgICAgICAgICAgc2VsZi5iaW5hcnlGYWlsdXJlcy5hcHBlbmQoJ3Rlc3RhcGknKQotCiAg
ICAgICAgIHNlbGYuc3RyZXNzVGVzdEZhaWx1cmVzID0ganNjX3Jlc3VsdHMuZ2V0KCdzdHJlc3NU
ZXN0RmFpbHVyZXMnKQogICAgICAgICBpZiBzZWxmLnN0cmVzc1Rlc3RGYWlsdXJlczoKICAgICAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnc3RyZXNzX3Rlc3RfZmFpbHVy
ZXMnLCBzZWxmLnN0cmVzc1Rlc3RGYWlsdXJlcykKKyAgICAgICAgc2VsZi5mbGFreSA9IGpzY19y
ZXN1bHRzLmdldCgnZmxha3lBbmRQYXNzZWQnKQorICAgICAgICBpZiBzZWxmLmZsYWt5OgorICAg
ICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdmbGFreV9hbmRfcGFzc2Vk
Jywgc2VsZi5mbGFreSkKICAgICAgICAgaWYgc2VsZi5iaW5hcnlGYWlsdXJlczoKICAgICAgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnYmluYXJ5X2ZhaWx1cmVzJywgc2Vs
Zi5iaW5hcnlGYWlsdXJlcykKIApAQCAtMTkxOSw2ICsxOTMzLDggQEAgY2xhc3MgUnVuSmF2YVNj
cmlwdENvcmVUZXN0cyhzaGVsbC5UZXN0KToKICAgICAgICAgICAgICAgICBzdGF0dXMgKz0gJ0pT
QyB0ZXN0IGJpbmFyeSBmYWlsdXJle306IHt9Jy5mb3JtYXQocGx1cmFsU3VmZml4LCAnLCAnLmpv
aW4oc2VsZi5iaW5hcnlGYWlsdXJlcykpCiAKICAgICAgICAgICAgIHJldHVybiB7J3N0ZXAnOiBz
dGF0dXN9CisgICAgICAgIGVsaWYgc2VsZi5yZXN1bHRzID09IFNVQ0NFU1MgYW5kIHNlbGYuZmxh
a3k6CisgICAgICAgICAgICByZXR1cm4geydzdGVwJzogIlBhc3NlZCBKU0MgdGVzdHMgKCVkIGZs
YWt5KSIgJSBsZW4oc2VsZi5mbGFreSl9CiAKICAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3QuZ2V0
UmVzdWx0U3VtbWFyeShzZWxmKQogCkBAIC0xOTMxLDM1ICsxOTQ3LDYgQEAgY2xhc3MgUnVuSmF2
YVNjcmlwdENvcmVUZXN0cyhzaGVsbC5UZXN0KToKICAgICAgICAgbG9nLmFkZFN0ZG91dChtZXNz
YWdlKQogCiAKLWNsYXNzIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhSdW5KYXZhU2NyaXB0Q29y
ZVRlc3RzKToKLSAgICBuYW1lID0gJ2pzY29yZS10ZXN0LXJlcnVuJwotICAgIHByZWZpeCA9ICdq
c2NfcmVydW5fJwotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAg
ICByYyA9IHNoZWxsLlRlc3QuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkKLSAgICAgICAgZmly
c3RfcnVuX2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9m
YWlsdXJlcycsIFtdKSArIHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBb
XSkpCi0gICAgICAgIHNlY29uZF9ydW5fZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgn
anNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pICsgc2VsZi5nZXRQcm9wZXJ0eSgn
anNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgZmxha3lfZmFpbHVyZXMg
PSBmaXJzdF9ydW5fZmFpbHVyZXMudW5pb24oc2Vjb25kX3J1bl9mYWlsdXJlcykgLSBmaXJzdF9y
dW5fZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNlY29uZF9ydW5fZmFpbHVyZXMpCi0gICAgICAgIGZs
YWt5X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihzb3J0ZWQoZmxha3lfZmFpbHVyZXMpKQot
Ci0gICAgICAgIGlmIHJjID09IFNVQ0NFU1Mgb3IgcmMgPT0gV0FSTklOR1M6Ci0gICAgICAgICAg
ICBwbHVyYWxTdWZmaXggPSAncycgaWYgbGVuKGZsYWt5X2ZhaWx1cmVzKSA+IDEgZWxzZSAnJwot
ICAgICAgICAgICAgbWVzc2FnZSA9ICdGb3VuZCBmbGFreSB0ZXN0e306IHt9Jy5mb3JtYXQocGx1
cmFsU3VmZml4LCBmbGFreV9mYWlsdXJlc19zdHJpbmcpCi0gICAgICAgICAgICBzZWxmLmRlc2Ny
aXB0aW9uRG9uZSA9IG1lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNV
Q0NFU1MKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbbWVzc2FnZV0sIFNV
Q0NFU1MpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRj
aEZhaWxlZFRlc3RzJywgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRl
ckN1cnJlbnRTdGVwKFtVbkFwcGx5UGF0Y2hJZlJlcXVpcmVkKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Ns
b3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb21waWxlSlNDV2l0aG91dFBhdGNoKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBhdGNoKHZlcmlm
eUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBLaWxsT2xkUHJvY2Vzc2VzKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5KU0NUZXN0c1dpdGhvdXRQ
YXRjaCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cygpXSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLQogY2xhc3Mg
UnVuSlNDVGVzdHNXaXRob3V0UGF0Y2goUnVuSmF2YVNjcmlwdENvcmVUZXN0cyk6CiAgICAgbmFt
ZSA9ICdqc2NvcmUtdGVzdC13aXRob3V0LXBhdGNoJwogICAgIHByZWZpeCA9ICdqc2NfY2xlYW5f
dHJlZV8nCkBAIC0xOTc3LDM0ICsxOTY0LDI5IEBAIGNsYXNzIEFuYWx5emVKU0NUZXN0c1Jlc3Vs
dHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCk6CiAgICAgTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVkgPSAx
MAogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1
cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtd
KSkKLSAgICAgICAgZmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3Bl
cnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgW10pKQotICAgICAgICBzZWNvbmRfcnVuX3N0cmVz
c19mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3Rf
ZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIHNlY29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzID0gc2V0
KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbXSkpCisgICAg
ICAgIHN0cmVzc19mYWlsdXJlc193aXRoX3BhdGNoID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pz
Y19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSkKKyAgICAgICAgYmluYXJ5X2ZhaWx1cmVzX3dp
dGhfcGF0Y2ggPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFtd
KSkKICAgICAgICAgY2xlYW5fdHJlZV9zdHJlc3NfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9w
ZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkpCiAgICAgICAg
IGNsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19j
bGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKICAgICAgICAgY2xlYW5fdHJlZV9mYWls
dXJlcyA9IGxpc3QoY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVyZXMpICsgbGlzdChjbGVhbl90cmVl
X3N0cmVzc19mYWlsdXJlcykKICAgICAgICAgY2xlYW5fdHJlZV9mYWlsdXJlc19zdHJpbmcgPSAn
LCAnLmpvaW4oY2xlYW5fdHJlZV9mYWlsdXJlc1s6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExB
WV0pCiAKLSAgICAgICAgc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2ggPSBmaXJzdF9ydW5fc3Ry
ZXNzX2ZhaWx1cmVzLmludGVyc2VjdGlvbihzZWNvbmRfcnVuX3N0cmVzc19mYWlsdXJlcykKLSAg
ICAgICAgYmluYXJ5X2ZhaWx1cmVzX3dpdGhfcGF0Y2ggPSBmaXJzdF9ydW5fYmluYXJ5X2ZhaWx1
cmVzLmludGVyc2VjdGlvbihzZWNvbmRfcnVuX2JpbmFyeV9mYWlsdXJlcykKLQotICAgICAgICBm
bGFreV9zdHJlc3NfZmFpbHVyZXMgPSBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1cmVzLnVuaW9uKHNl
Y29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKSAtIGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMuaW50
ZXJzZWN0aW9uKHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKQotICAgICAgICBmbGFreV9iaW5h
cnlfZmFpbHVyZXMgPSBmaXJzdF9ydW5fYmluYXJ5X2ZhaWx1cmVzLnVuaW9uKHNlY29uZF9ydW5f
YmluYXJ5X2ZhaWx1cmVzKSAtIGZpcnN0X3J1bl9iaW5hcnlfZmFpbHVyZXMuaW50ZXJzZWN0aW9u
KHNlY29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzKQotICAgICAgICBmbGFreV9mYWlsdXJlcyA9IHNv
cnRlZChsaXN0KGZsYWt5X2JpbmFyeV9mYWlsdXJlcykgKyBsaXN0KGZsYWt5X3N0cmVzc19mYWls
dXJlcykpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXQotICAgICAgICBmbGFreV9mYWls
dXJlc19zdHJpbmcgPSAnLCAnLmpvaW4oZmxha3lfZmFpbHVyZXMpCisgICAgICAgIGZsYWt5X3N0
cmVzc19mYWlsdXJlc193aXRoX3BhdGNoID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19mbGFr
eV9hbmRfcGFzc2VkJywge30pLmtleXMoKSkKKyAgICAgICAgY2xlYW5fdHJlZV9mbGFreV9zdHJl
c3NfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfZmxha3lf
YW5kX3Bhc3NlZCcsIHt9KS5rZXlzKCkpCisgICAgICAgIGZsYWt5X3N0cmVzc19mYWlsdXJlcyA9
IHNvcnRlZChsaXN0KGZsYWt5X3N0cmVzc19mYWlsdXJlc193aXRoX3BhdGNoKSArIGxpc3QoY2xl
YW5fdHJlZV9mbGFreV9zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElT
UExBWV0KKyAgICAgICAgZmxha3lfZmFpbHVyZXNfc3RyaW5nID0gJywgJy5qb2luKGZsYWt5X3N0
cmVzc19mYWlsdXJlcykKIAogICAgICAgICBuZXdfc3RyZXNzX2ZhaWx1cmVzID0gc3RyZXNzX2Zh
aWx1cmVzX3dpdGhfcGF0Y2ggLSBjbGVhbl90cmVlX3N0cmVzc19mYWlsdXJlcwogICAgICAgICBu
ZXdfYmluYXJ5X2ZhaWx1cmVzID0gYmluYXJ5X2ZhaWx1cmVzX3dpdGhfcGF0Y2ggLSBjbGVhbl90
cmVlX2JpbmFyeV9mYWlsdXJlcwogICAgICAgICBzZWxmLm5ld19zdHJlc3NfZmFpbHVyZXNfdG9f
ZGlzcGxheSA9ICcsICcuam9pbihzb3J0ZWQobGlzdChuZXdfc3RyZXNzX2ZhaWx1cmVzKSlbOnNl
bGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQogICAgICAgICBzZWxmLm5ld19iaW5hcnlfZmFp
bHVyZXNfdG9fZGlzcGxheSA9ICcsICcuam9pbihzb3J0ZWQobGlzdChuZXdfYmluYXJ5X2ZhaWx1
cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQogCi0gICAgICAgIHNlbGYuX2Fk
ZFRvTG9nKCdzdGRlcnInLCAnXG5GYWlsdXJlcyBpbiBmaXJzdCBydW46IHt9Jy5mb3JtYXQoKGxp
c3QoZmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJlcykgKyBsaXN0KGZpcnN0X3J1bl9zdHJlc3NfZmFp
bHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0pKQotICAgICAgICBzZWxmLl9h
ZGRUb0xvZygnc3RkZXJyJywgJ1xuRmFpbHVyZXMgaW4gc2Vjb25kIHJ1bjoge30nLmZvcm1hdCgo
bGlzdChzZWNvbmRfcnVuX2JpbmFyeV9mYWlsdXJlcykgKyBsaXN0KHNlY29uZF9ydW5fc3RyZXNz
X2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKSkKLSAgICAgICAgc2Vs
Zi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZsYWt5IFRlc3RzOiB7fScuZm9ybWF0KGZsYWt5X2Zh
aWx1cmVzX3N0cmluZykpCisgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GYWls
dXJlcyB3aXRoIHBhdGNoOiB7fScuZm9ybWF0KGxpc3QoYmluYXJ5X2ZhaWx1cmVzX3dpdGhfcGF0
Y2gpICsgbGlzdChzdHJlc3NfZmFpbHVyZXNfd2l0aF9wYXRjaCkpWzpzZWxmLk5VTV9GQUlMVVJF
U19UT19ESVNQTEFZXSkKKyAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZsYWt5
IFRlc3RzIHdpdGggcGF0Y2g6IHt9Jy5mb3JtYXQoJywgJy5qb2luKGZsYWt5X3N0cmVzc19mYWls
dXJlc193aXRoX3BhdGNoKSkpCiAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5G
YWlsdXJlcyBvbiBjbGVhbiB0cmVlOiB7fScuZm9ybWF0KGNsZWFuX3RyZWVfZmFpbHVyZXNfc3Ry
aW5nKSkKKyAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZsYWt5IFRlc3RzIG9u
IGNsZWFuIHRyZWU6IHt9Jy5mb3JtYXQoJywgJy5qb2luKGNsZWFuX3RyZWVfZmxha3lfc3RyZXNz
X2ZhaWx1cmVzKSkpCiAKLSAgICAgICAgaWYgKG5vdCBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1cmVz
KSBhbmQgKG5vdCBmaXJzdF9ydW5fYmluYXJ5X2ZhaWx1cmVzKSBhbmQgKG5vdCBzZWNvbmRfcnVu
X3N0cmVzc19mYWlsdXJlcykgYW5kIChub3Qgc2Vjb25kX3J1bl9iaW5hcnlfZmFpbHVyZXMpOgor
ICAgICAgICBpZiAobm90IHN0cmVzc19mYWlsdXJlc193aXRoX3BhdGNoKSBhbmQgKG5vdCBiaW5h
cnlfZmFpbHVyZXNfd2l0aF9wYXRjaCk6CiAgICAgICAgICAgICAjIElmIHdlJ3ZlIG1hZGUgaXQg
aGVyZSwgdGhlbiBqc2MtdGVzdHMgYW5kIHJlLXJ1bi1qc2MtdGVzdHMgZmFpbGVkLCB3aGljaCBt
ZWFucwogICAgICAgICAgICAgIyB0aGVyZSBzaG91bGQgaGF2ZSBiZWVuIHNvbWUgdGVzdCBmYWls
dXJlcy4gT3RoZXJ3aXNlIHRoZXJlIGlzIHNvbWUgdW5leHBlY3RlZCBpc3N1ZS4KICAgICAgICAg
ICAgIGNsZWFuX3RyZWVfcnVuX3N0YXR1cyA9IHNlbGYuZ2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVf
cnVuX3N0YXR1cycsIEZBSUxVUkUpCkBAIC0yMDI5LDkgKzIwMTEsOSBAQCBjbGFzcyBBbmFseXpl
SlNDVGVzdHNSZXN1bHRzKGJ1aWxkc3RlcC5CdWlsZFN0ZXApOgogICAgICAgICAgICAgICAgICAg
ICBzZWxmLnNlbmRfZW1haWxfZm9yX3ByZV9leGlzdGluZ19mYWlsdXJlKGNsZWFuX3RyZWVfZmFp
bHVyZSkKICAgICAgICAgICAgIGlmIGxlbihjbGVhbl90cmVlX2ZhaWx1cmVzKSA+IHNlbGYuTlVN
X0ZBSUxVUkVTX1RPX0RJU1BMQVk6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAnIC4uLicK
LSAgICAgICAgICAgIGlmIGZsYWt5X2ZhaWx1cmVzOgorICAgICAgICAgICAgaWYgZmxha3lfc3Ry
ZXNzX2ZhaWx1cmVzOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gJyBGb3VuZCBmbGFreSB0
ZXN0czoge30nLmZvcm1hdChmbGFreV9mYWlsdXJlc19zdHJpbmcpCi0gICAgICAgICAgICAgICAg
Zm9yIGZsYWt5X2ZhaWx1cmUgaW4gZmxha3lfZmFpbHVyZXM6CisgICAgICAgICAgICAgICAgZm9y
IGZsYWt5X2ZhaWx1cmUgaW4gZmxha3lfc3RyZXNzX2ZhaWx1cmVzOgogICAgICAgICAgICAgICAg
ICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUoZmxha3lfZmFpbHVyZSkKICAg
ICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbbWVzc2FnZV0sIFNVQ0NFU1MpCiAg
ICAgICAgIHJldHVybiBkZWZlci5zdWNjZWVkKE5vbmUpCmRpZmYgLS1naXQgYS9Ub29scy9DSVN1
cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1i
dWlsZC9zdGVwc191bml0dGVzdC5weQppbmRleCA2Y2ZhODU1NTYyYmM4NzZmMTkzNTc1NzRhYjAy
ZGNlNGRiMjRkNzg2Li4xNWMyM2FmMTM2ZWJjODFmZjJlNmJiODE2MDk3OWQ3NTEyYjE5NDE3IDEw
MDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkKQEAgLTQ4LDcg
KzQ4LDcgQEAgZnJvbSBzdGVwcyBpbXBvcnQgKEFuYWx5emVBUElUZXN0c1Jlc3VsdHMsIEFuYWx5
emVDb21waWxlV2ViS2l0UmVzdWx0cywgQW5hbHl6ZUoKICAgICAgICAgICAgICAgICAgICBEb3du
bG9hZEJ1aWx0UHJvZHVjdCwgRG93bmxvYWRCdWlsdFByb2R1Y3RGcm9tTWFzdGVyLCBFV1NfQlVJ
TERfSE9TVE5BTUUsIEV4dHJhY3RCdWlsdFByb2R1Y3QsIEV4dHJhY3RUZXN0UmVzdWx0cywKICAg
ICAgICAgICAgICAgICAgICBGZXRjaEJyYW5jaGVzLCBGaW5kTW9kaWZpZWRDaGFuZ2VMb2dzLCBG
aW5kTW9kaWZpZWRMYXlvdXRUZXN0cywgR2l0UmVzZXRIYXJkLAogICAgICAgICAgICAgICAgICAg
IEluc3RhbGxCdWlsdFByb2R1Y3QsIEluc3RhbGxHdGtEZXBlbmRlbmNpZXMsIEluc3RhbGxXcGVE
ZXBlbmRlbmNpZXMsCi0gICAgICAgICAgICAgICAgICAgS2lsbE9sZFByb2Nlc3NlcywgUHJpbnRD
b25maWd1cmF0aW9uLCBQdXNoQ29tbWl0VG9XZWJLaXRSZXBvLCBSZVJ1bkFQSVRlc3RzLCBSZVJ1
bkphdmFTY3JpcHRDb3JlVGVzdHMsIFJlUnVuV2ViS2l0UGVybFRlc3RzLAorICAgICAgICAgICAg
ICAgICAgIEtpbGxPbGRQcm9jZXNzZXMsIFByaW50Q29uZmlndXJhdGlvbiwgUHVzaENvbW1pdFRv
V2ViS2l0UmVwbywgUmVSdW5BUElUZXN0cywgUmVSdW5XZWJLaXRQZXJsVGVzdHMsCiAgICAgICAg
ICAgICAgICAgICAgUmVSdW5XZWJLaXRUZXN0cywgUnVuQVBJVGVzdHMsIFJ1bkFQSVRlc3RzV2l0
aG91dFBhdGNoLCBSdW5CaW5kaW5nc1Rlc3RzLCBSdW5CdWlsZFdlYktpdE9yZ1VuaXRUZXN0cywK
ICAgICAgICAgICAgICAgICAgICBSdW5CdWlsZGJvdENoZWNrQ29uZmlnRm9yQnVpbGRXZWJLaXQs
IFJ1bkJ1aWxkYm90Q2hlY2tDb25maWdGb3JFV1MsIFJ1bkVXU1VuaXRUZXN0cywgUnVuUmVzdWx0
c2RicHlUZXN0cywKICAgICAgICAgICAgICAgICAgICBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLCBS
dW5KU0NUZXN0c1dpdGhvdXRQYXRjaCwgUnVuV2ViS2l0MVRlc3RzLCBSdW5XZWJLaXRQZXJsVGVz
dHMsIFJ1bldlYktpdFB5UHl0aG9uMlRlc3RzLApAQCAtMTM2MSw2ICsxMzYxLDcgQEAgY2xhc3Mg
VGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5qc2NfZGZnX2Fpcl9hbmRfc3RyZXNzX3Rlc3Rf
ZmFpbHVyZSA9ICcnJ3siYWxsREZHVGVzdHNQYXNzZWQiOmZhbHNlLCJhbGxNYXNtVGVzdHNQYXNz
ZWQiOnRydWUsImFsbEIzVGVzdHNQYXNzZWQiOnRydWUsImFsbEFpclRlc3RzUGFzc2VkIjpmYWxz
ZSwiYWxsQXBpVGVzdHNQYXNzZWQiOnRydWUsInN0cmVzc1Rlc3RGYWlsdXJlcyI6WyJzdHJlc3Mv
d2Vha3NldC1nYy5qcyJdfVxuJycnCiAgICAgICAgIHNlbGYuanNjX3NpbmdsZV9zdHJlc3NfdGVz
dF9mYWlsdXJlID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFzbVRlc3RzUGFz
c2VkIjp0cnVlLCJhbGxCM1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxBaXJUZXN0c1Bhc3NlZCI6dHJ1
ZSwic3RyZXNzVGVzdEZhaWx1cmVzIjpbInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3Bl
LmpzLmRmZy1lYWdlciJdLCJhbGxBcGlUZXN0c1Bhc3NlZCI6dHJ1ZX1cbicnJwogICAgICAgICBz
ZWxmLmpzY19tdWx0aXBsZV9zdHJlc3NfdGVzdF9mYWlsdXJlcyA9ICcnJ3siYWxsREZHVGVzdHNQ
YXNzZWQiOnRydWUsImFsbE1hc21UZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQjNUZXN0c1Bhc3NlZCI6
dHJ1ZSwiYWxsQWlyVGVzdHNQYXNzZWQiOnRydWUsInN0cmVzc1Rlc3RGYWlsdXJlcyI6WyJzdHJl
c3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZmctZWFnZXIiLCJzdHJlc3Mvc3dpdGNo
LW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZmctZWFnZXItbm8tY2ppdC12YWxpZGF0ZSIsInN0cmVz
cy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmVhZ2VyLWpldHRpc29uLW5vLWNqaXQiLCJz
dHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtZWFnZXIiLCJzdHJlc3Mvc3dp
dGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtZWFnZXItbm8tY2ppdCIsInN0cmVzcy9zd2l0
Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1lYWdlci1uby1jaml0LWIzbzEiLCJzdHJlc3Mv
c3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1iM28wIiwic3RyZXNzL3N3
aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQtbm8taW5saW5lLXZhbGlkYXRl
Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQtbm8tcHV0
LXN0YWNrLXZhbGlkYXRlIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRs
LW5vLWNqaXQtc21hbGwtcG9vbCIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpz
LmZ0bC1uby1jaml0LXZhbGlkYXRlLXNhbXBsaW5nLXByb2ZpbGVyIiwic3RyZXNzL3N3aXRjaC1v
bi1jaGFyLWxsaW50LXJvcGUuanMubm8tY2ppdC1jb2xsZWN0LWNvbnRpbnVvdXNseSIsInN0cmVz
cy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLm5vLWNqaXQtdmFsaWRhdGUtcGhhc2VzIiwi
c3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMubm8tZnRsIl0sImFsbEFwaVRlc3Rz
UGFzc2VkIjp0cnVlfVxuJycnCisgICAgICAgIHNlbGYuanNjX3Bhc3NlZF93aXRoX2ZsYWt5ID0g
JycneyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFzbVRlc3RzUGFzc2VkIjp0cnVlLCJh
bGxCM1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxBaXJUZXN0c1Bhc3NlZCI6dHJ1ZSwic3RyZXNzVGVz
dEZhaWx1cmVzIjpbXSwiZmxha3lBbmRQYXNzZWQiOnsic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxs
aW50LXJvcGUuanMuZGVmYXVsdCI6eyJQIjoiNyIsIlQiOiIxMCJ9fSwiYWxsQXBpVGVzdHNQYXNz
ZWQiOnRydWV9XG4nJycKICAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQogCiAg
ICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtMTM2OSw2ICsxMzcwLDcgQEAgY2xhc3MgVGVzdFJ1
bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICBkZWYgY29uZmlndXJlU3RlcChzZWxmLCBwbGF0Zm9ybT1Ob25lLCBmdWxs
UGxhdGZvcm09Tm9uZSwgY29uZmlndXJhdGlvbj1Ob25lKToKICAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cygpKQogICAgICAgICBzZWxmLnByZWZpeCA9IFJ1bkph
dmFTY3JpcHRDb3JlVGVzdHMucHJlZml4CisgICAgICAgIHNlbGYuY29tbWFuZF9leHRyYSA9IFJ1
bkphdmFTY3JpcHRDb3JlVGVzdHMuY29tbWFuZF9leHRyYQogICAgICAgICBpZiBwbGF0Zm9ybToK
ICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgcGxhdGZvcm0pCiAgICAg
ICAgIGlmIGZ1bGxQbGF0Zm9ybToKQEAgLTEzODEsNyArMTM4Myw3IEBAIGNsYXNzIFRlc3RSdW5K
YXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dF
bnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAn
VG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICct
LW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVO
YW1lKSwgJy0tcmVsZWFzZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3Bl
cmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWls
ZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNv
bkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAogICAg
ICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyAwLApAQCAtMTM5NSw3ICsxMzk3
LDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRp
dGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21t
YW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0
cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5m
b3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJywgJy0tcmVtb3RlLWNvbmZpZy1m
aWxlPXJlbW90ZS1tYWNoaW5lcy5qc29uJywgJy0tbm8tdGVzdG1hc20nLCAnLS1uby10ZXN0YWly
JywgJy0tbm8tdGVzdGIzJywgJy0tbm8tdGVzdGRmZycsICctLW5vLXRlc3RhcGknLCAnLS1tZW1v
cnktbGltaXRlZCcsICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0
PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZScsICctLXJlbW90ZS1j
b25maWctZmlsZT1yZW1vdGUtbWFjaGluZXMuanNvbicsICctLW5vLXRlc3RtYXNtJywgJy0tbm8t
dGVzdGFpcicsICctLW5vLXRlc3RiMycsICctLW5vLXRlc3RkZmcnLCAnLS1uby10ZXN0YXBpJywg
Jy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12ZXJib3NlJywgJy0tanNjLW9ubHknXSArIHNlbGYuY29t
bWFuZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNl
bGYuanNvbkZpbGVOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg
ICsgMCwKQEAgLTE0MDgsNyArMTQxMCw3IEBAIGNsYXNzIFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3Jr
ZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9y
dW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcs
ICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcn
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1Njcmlw
dHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZh
c3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLWRl
YnVnJ10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dm
aWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICApCiAgICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JzkgZmFp
bHVyZXMgZm91bmQuJykKQEAgLTE0MjMsNyArMTQyNSw3IEBAIGNsYXNzIFRlc3RSdW5KYXZhU2Ny
aXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9n
ZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVz
dHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScu
Zm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17
MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLWRlYnVnJ10gKyBzZWxmLmNvbW1hbmRf
ZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDIKICAgICAg
ICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNjX3NpbmdsZV9z
dHJlc3NfdGVzdF9mYWlsdXJlKSwKQEAgLTE0NDAsNyArMTQ0Miw3IEBAIGNsYXNzIFRlc3RSdW5K
YXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0
PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3Jp
cHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91
dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLWRlYnVnJ10gKyBzZWxmLmNv
bW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDIK
ICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNjX211
bHRpcGxlX3N0cmVzc190ZXN0X2ZhaWx1cmVzKSwKQEAgLTE0NTcsNyArMTQ1OSw3IEBAIGNsYXNz
IFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rpcics
CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2
YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpz
b24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVu
LWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAn
LS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLWRlYnVnJ10g
KyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICArIDIKICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNl
bGYuanNjX21hc21fZmFpbHVyZSksCkBAIC0xNDc0LDcgKzE0NzYsNyBAQCBjbGFzcyBUZXN0UnVu
SmF2YVNjcmlwdENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAogICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRj
b3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1
dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFz
Y3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29u
LW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnXSArIHNl
bGYuY29tbWFuZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg
ICsgMgogICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5q
c2NfYjNfYW5kX3N0cmVzc190ZXN0X2ZhaWx1cmUpLApAQCAtMTQ5MSw3ICsxNDkzLDcgQEAgY2xh
c3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGly
JywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1q
YXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0t
anNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJywg
Jy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12ZXJib3NlJywgJy0tanNjLW9ubHknXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFz
Y3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29u
LW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnLCAnLS1t
ZW1vcnktbGltaXRlZCcsICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddICsgc2VsZi5jb21tYW5k
X2V4dHJhLAogICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyAyCiAgICAg
ICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1zZWxmLmpzY19kZmdfYWly
X2FuZF9zdHJlc3NfdGVzdF9mYWlsdXJlKSwKQEAgLTE1MDIsNTIgKzE1MDQsMzAgQEAgY2xhc3Mg
VGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5
KHNlbGYucHJlZml4ICsgJ2JpbmFyeV9mYWlsdXJlcycpLCBbJ3Rlc3RhaXInLCAndGVzdGRmZydd
KQogICAgICAgICByZXR1cm4gcmMKIAotCi1jbGFzcyBUZXN0UmVSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzKFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKToKLSAgICBkZWYgY29uZmlndXJlU3RlcChz
ZWxmLCBwbGF0Zm9ybT1Ob25lLCBmdWxsUGxhdGZvcm09Tm9uZSwgY29uZmlndXJhdGlvbj1Ob25l
KToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKCkpCi0g
ICAgICAgIHNlbGYucHJlZml4ID0gUmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLnByZWZpeAotICAg
ICAgICBpZiBwbGF0Zm9ybToKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3Jt
JywgcGxhdGZvcm0pCi0gICAgICAgIGlmIGZ1bGxQbGF0Zm9ybToKLSAgICAgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsIGZ1bGxQbGF0Zm9ybSkKLSAgICAgICAgaWYgY29u
ZmlndXJhdGlvbjoKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24n
LCBjb25maWd1cmF0aW9uKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAg
c2VsZi5jb25maWd1cmVTdGVwKHBsYXRmb3JtPSdtYWMnLCBmdWxsUGxhdGZvcm09J21hYy1oaWdo
c2llcnJhJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInXSkKLSAgICAg
ICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdv
cmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRz
L3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0
JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxl
YXNlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpz
b25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICApICsKLSAgICAgICAgICAgIDAs
Ci0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBz
dGF0ZV9zdHJpbmc9J0ZvdW5kIGZsYWt5IHRlc3RzOiB0ZXN0MSwgdGVzdDInKQotICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3JlbW90ZV9zdWNjZXNzKHNlbGYp
OgorICAgIGRlZiB0ZXN0X3N1Y2Nlc3Nfd2l0aF9mbGFreShzZWxmKToKICAgICAgICAgc2VsZi5j
b25maWd1cmVTdGVwKHBsYXRmb3JtPSdqc2Mtb25seScsIGZ1bGxQbGF0Zm9ybT0nanNjLW9ubHkn
LCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncmVt
b3RlcycsICdyZW1vdGUtbWFjaGluZXMuanNvbicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCiAgICAgICAgIHNlbGYuZXhwZWN0
UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rpcics
CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlw
dGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0
cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZScsICctLXJlbW90
ZS1jb25maWctZmlsZT1yZW1vdGUtbWFjaGluZXMuanNvbicsICctLW5vLXRlc3RtYXNtJywgJy0t
bm8tdGVzdGFpcicsICctLW5vLXRlc3RiMycsICctLW5vLXRlc3RkZmcnLCAnLS1uby10ZXN0YXBp
JywgJy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12ZXJib3NlJywgJy0tanNjLW9ubHknXSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICkgKwotICAgICAgICAgICAgMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3Jp
cHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91
dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnLCAnLS1tZW1v
cnktbGltaXRlZCcsICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddICsgc2VsZi5jb21tYW5kX2V4
dHJhLAorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKyAwCisgICAgICAg
ICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1zZWxmLmpzY19wYXNzZWRfd2l0
aF9mbGFreSksCiAgICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1T
VUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIGZsYWt5IHRlc3Q6IHRlc3RtYXNtJykKLSAgICAg
ICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzICgxIGZsYWt5KScpCisg
ICAgICAgIHJjID0gc2VsZi5ydW5TdGVwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
LmdldFByb3BlcnR5KHNlbGYucHJlZml4ICsgJ2ZsYWt5X2FuZF9wYXNzZWQnKSwgeydzdHJlc3Mv
c3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZWZhdWx0JzogeydQJzogJzcnLCAnVCc6ICcx
MCd9fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KHNlbGYucHJl
Zml4ICsgJ3N0cmVzc190ZXN0X2ZhaWx1cmVzJyksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdiaW5hcnlfdGVzdF9mYWlsdXJl
cycpLCBOb25lKQorICAgICAgICByZXR1cm4gcmMKIAogCiBjbGFzcyBUZXN0UnVuSlNDVGVzdHNX
aXRob3V0UGF0Y2goQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCiAg
ICAgICAgIHNlbGYuanNvbkZpbGVOYW1lID0gJ2pzY19yZXN1bHRzLmpzb24nCisgICAgICAgIHNl
bGYuY29tbWFuZF9leHRyYSA9IFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoLmNvbW1hbmRfZXh0cmEK
ICAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQogCiAgICAgZGVmIHRlYXJEb3du
KHNlbGYpOgpAQCAtMTU2MCw3ICsxNTQwLDcgQEAgY2xhc3MgVGVzdFJ1bkpTQ1Rlc3RzV2l0aG91
dFBhdGNoKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3
b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0
cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFz
dCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVs
ZWFzZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMv
U2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZh
aWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwg
Jy0tcmVsZWFzZSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAogICAgICAgICAgICAgICAg
ICAgICAgICAgKQogICAgICAgICAgICAgKyAwLApAQCAtMTU3NSw3ICsxNTU1LDcgQEAgY2xhc3Mg
VGVzdFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAg
ICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1b
J3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1i
dWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYu
anNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1h
bmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0t
bm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChz
ZWxmLmpzb25GaWxlTmFtZSksICctLWRlYnVnJ10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0s
CiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxv
Zygnc3RkaW8nLCBzdGRvdXQ9JzkgZmFpbHVyZXMgZm91bmQuJykKQEAgLTE1OTcsMzggKzE1Nzcs
MzQgQEAgY2xhc3MgVGVzdEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRp
dGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQW5hbHl6
ZUpTQ1Rlc3RzUmVzdWx0cygpKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNz
X3Rlc3RfZmFpbHVyZXMnLCBbXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFy
eV9mYWlsdXJlcycsIFtdKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3Ry
ZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3Jl
cnVuX2JpbmFyeV9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nf
Zmxha3lfYW5kX3Bhc3NlZCcsIHt9KQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xl
YW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQogICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdqc2NfY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfZmxha3lfYW5kX3Bhc3NlZCcsIHt9KQogICAgICAg
ICBBbmFseXplSlNDVGVzdHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUgPSBs
YW1iZGEgc2VsZiwgdGVzdDogTm9uZQogICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzLnNl
bmRfZW1haWxfZm9yX3ByZV9leGlzdGluZ19mYWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5v
bmUKIAogICAgIGRlZiB0ZXN0X3NpbmdsZV9uZXdfc3RyZXNzX2ZhaWx1cmUoc2VsZik6CiAgICAg
ICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19z
dHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmJ5dGVjb2RlLWNh
Y2hlJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9m
YWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmJ5dGVjb2RlLWNhY2hlJ10pCiAgICAg
ICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3Vu
ZCAxIG5ldyBKU0Mgc3RyZXNzIHRlc3QgZmFpbHVyZTogc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmJ5
dGVjb2RlLWNhY2hlIChmYWlsdXJlKScpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQog
CiAgICAgZGVmIHRlc3Rfc2luZ2xlX25ld19iaW5hcnlfZmFpbHVyZShzZWxmKToKICAgICAgICAg
c2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFy
eV9mYWlsdXJlcycsIFsndGVzdG1hc20nXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNj
X3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdG1hc20nXSkKICAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IEpTQyBi
aW5hcnkgZmFpbHVyZTogdGVzdG1hc20gKGZhaWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYu
cnVuU3RlcCgpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9uZXdfc3RyZXNzX2ZhaWx1cmUoc2Vs
Zik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9yIGkg
aW4gcmFuZ2UoMCwgMzApXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0
cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgw
LCAzMCldKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRl
X3N0cmluZz0nRm91bmQgMzAgbmV3IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlczogdGVzdDAsIHRl
c3QxLCB0ZXN0MTAsIHRlc3QxMSwgdGVzdDEyLCB0ZXN0MTMsIHRlc3QxNCwgdGVzdDE1LCB0ZXN0
MTYsIHRlc3QxNyAuLi4gKGZhaWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgp
CiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9uZXdfYmluYXJ5X2ZhaWx1cmUoc2VsZik6CiAgICAg
ICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19i
aW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJywgJ3Rlc3RhaXInLCAndGVzdGIzJywgJ3Rlc3Rk
ZmcnLCAndGVzdGFwaSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fYmlu
YXJ5X2ZhaWx1cmVzJywgWyd0ZXN0bWFzbScsICd0ZXN0YWlyJywgJ3Rlc3RiMycsICd0ZXN0ZGZn
JywgJ3Rlc3RhcGknXSkKICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJF
LCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDUgbmV3IEpTQyBiaW5hcnkgZmFpbHVyZXM6IHRlc3RhaXIs
IHRlc3RhcGksIHRlc3RiMywgdGVzdGRmZywgdGVzdG1hc20gKGZhaWx1cmUpJykKICAgICAgICAg
cmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKQEAgLTE2MzYsMTUgKzE2MTIsMTIgQEAgY2xhc3MgVGVz
dEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydlczYueWFtbC9lczYvU2V0
X2l0ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVsdCddKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0bWFzbSddKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2VzNi55YW1sL2VzNi9T
ZXRfaXRlcmF0b3JfY2xvc2luZy5qcy5kZWZhdWx0J10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCiAgICAgICAgIHNl
bGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAxIG5l
dyBKU0MgYmluYXJ5IGZhaWx1cmU6IHRlc3RtYXNtLCBGb3VuZCAxIG5ldyBKU0Mgc3RyZXNzIHRl
c3QgZmFpbHVyZTogZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQg
KGZhaWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKICAgICBkZWYgdGVz
dF9zdHJlc3NfZmFpbHVyZV9vbl9jbGVhbl90cmVlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZp
Z3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFp
bHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJvci5qcy5kZWZhdWx0J10pCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2Zv
cmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2Ns
ZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJvci5qcy5k
ZWZhdWx0J10pCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3Rh
dGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3Rl
cCgpCkBAIC0xNjYxLDM5ICsxNjM0LDI5IEBAIGNsYXNzIFRlc3RBbmFseXplSlNDVGVzdHNSZXN1
bHRzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJl
c3NfdGVzdF9mYWlsdXJlcycsIFsnZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpz
LmRlZmF1bHQnXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJl
cycsIFsndGVzdGFpciddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3Ry
ZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2VzNi55YW1sL2VzNi9TZXRfaXRlcmF0b3JfY2xvc2luZy5q
cy5kZWZhdWx0J10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlf
ZmFpbHVyZXMnLCBbJ3Rlc3RhaXInXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2Ns
ZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2VzNi55YW1sL2VzNi9TZXRfaXRlcmF0
b3JfY2xvc2luZy5qcy5kZWZhdWx0J10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19j
bGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGFpciddKQogICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIEpTQyB0ZXN0
cycpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQogCi0gICAgZGVmIHRlc3RfZmxha3lf
c3RyZXNzX2FuZF9iaW5hcnlfZmFpbHVyZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJl
U3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJl
cycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGFwaSddKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIEpTQyB0
ZXN0cycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCiAgICAgZGVmIHRlc3RfZmxh
a3lfYW5kX2NvbnNpc3RlbnRfc3RyZXNzX2ZhaWx1cmVzKHNlbGYpOgogICAgICAgICBzZWxmLmNv
bmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3Rf
ZmFpbHVyZXMnLCBbJ3Rlc3QxJywgJ3Rlc3QyJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDInXSkKLSAgICAgICAgc2Vs
Zi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3
IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlOiB0ZXN0MiAoZmFpbHVyZSknKQorICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJ10pCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19mbGFreV9hbmRfcGFzc2VkJywgeyd0ZXN0Mic6IHsn
UCc6ICc3JywgJ1QnOiAnMTAnfX0pCisgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9
RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAxIG5ldyBKU0Mgc3RyZXNzIHRlc3QgZmFpbHVy
ZTogdGVzdDEgKGZhaWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKICAg
ICBkZWYgdGVzdF9mbGFreV9hbmRfY29uc2lzdGVudF9mYWlsdXJlc193aXRoX2NsZWFuX3RyZWVf
ZmFpbHVyZXMoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVz
dDInXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2Zh
aWx1cmVzJywgWyd0ZXN0MSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5f
dHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInXSkKKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MSddKQor
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfZmxha3lfYW5kX3Bhc3NlZCcsIHsndGVzdDIn
OiB7J1AnOiA3LCAnVCc6IDEwfX0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVh
bl90cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MSddKQogICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIEpTQyB0ZXN0
cycpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQogCiAgICAgZGVmIHRlc3RfdW5leHBl
Y3RlZF9pbmZyYV9pc3N1ZShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycs
IFtdKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVz
dF9mYWlsdXJlcycsIFtdKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1
bl9zdGF0dXMnLCBGQUlMVVJFKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJF
VFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWUsIHJldHJ5
aW5nIGJ1aWxkIChyZXRyeSknKQpAQCAtMTcwMiw4ICsxNjY1LDkgQEAgY2xhc3MgVGVzdEFuYWx5
emVKU0NUZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICBkZWYgdGVzdF9wYXRjaF9icmVha2luZ19qc2NfdGVzdF9zdWl0ZShzZWxmKToK
ICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
anNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2NfZmxha3lfYW5kX3Bhc3NlZCcsIHt9KQogICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9mbGFreV9hbmRfcGFzc2VkJywge30pCiAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX3N0YXR1cycsIFNVQ0NFU1Mp
CiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5n
PSdGb3VuZCB1bmV4cGVjdGVkIGZhaWx1cmUgd2l0aCBwYXRjaCAoZmFpbHVyZSknKQogICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvanNjLXN0
cmVzcy10ZXN0LWhlbHBlcnMvc2hlbGwtcnVubmVyLnNoIGIvVG9vbHMvU2NyaXB0cy9qc2Mtc3Ry
ZXNzLXRlc3QtaGVscGVycy9zaGVsbC1ydW5uZXIuc2gKaW5kZXggZGVkNDBkNTIxOTgyMzBiODE1
MDI2MmM2YmU3MWFjMmQ4Y2E3MTJmZS4uM2Y2ZThlMmFhNTk2Y2YxMTYxMWM4MGMzYzdiZGU0NGYw
Mzc5MjAzMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVy
cy9zaGVsbC1ydW5uZXIuc2gKKysrIGIvVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVs
cGVycy9zaGVsbC1ydW5uZXIuc2gKQEAgLTIxLDYgKzIxLDggQEAKICMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CiAjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKK29yaWdpbmFsVGVzdExpc3Q9IiQxIgorCiBudW1Qcm9jcz1gc3lzY3Rs
IC1uIGh3LmFjdGl2ZWNwdSAyPi9kZXYvbnVsbGAKIGlmIFsgJD8gLWd0IDAgXQogdGhlbgpAQCAt
MzksNyArNDEsNyBAQCBsb2NrRGlyPSIubG9ja19kaXIiCiB0cmFwICJraWxsIC05IDAiIElOVCBI
VVAgVEVSTQogCiBlY2hvIDAgPiAke2luZGV4RmlsZX0KLWZpbmQgLiAtbWF4ZGVwdGggMSAtbmFt
ZSAndGVzdF9zY3JpcHRfKicgfCBzb3J0IC10ICdfJyAtazNuciA+ICR7dGVzdExpc3R9CitjcCAi
JG9yaWdpbmFsVGVzdExpc3QiICIkdGVzdExpc3QiCiAKIGxvY2tfdGVzdF9saXN0KCkgewogICAg
IHVudGlsIG1rZGlyICR7bG9ja0Rpcn0gMj4gL2Rldi9udWxsOyBkbyBzbGVlcCAwOyBkb25lCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyBiL1Rvb2xz
L1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCmluZGV4IDQ1YjRjNjg3MjQ1NjFlNzE5
MTRlY2UyOTNkYjAwMmM4ZDI5MDYwYTYuLjg2ZGEyMjVkMDhmOTgxMzQ1Zjc5NTEwNzI1YjY5MDcw
OWIyOGNiMmYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRl
c3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCkBAIC02NCw2
ICs2NCw3IEBAIG15ICRnbnVQYXJhbGxlbFJ1bm5lcjsKIG15ICR0ZXN0V3JpdGVyOwogbXkgJG1l
bW9yeUxpbWl0ZWQ7CiBteSAkcmVwb3J0RXhlY3V0aW9uVGltZTsKK215ICR0cmVhdEZhaWxpbmdB
c0ZsYWt5OwogCiBteSAkcmVwb3J0OwogbXkgJGJ1aWxkYm90TWFzdGVyOwpAQCAtMjgzLDYgKzI4
NCwxMSBAQCBVc2FnZTogJHByb2dyYW1OYW1lIFtvcHRpb25zXSBbb3B0aW9ucyB0byBwYXNzIHRv
IGJ1aWxkIHN5c3RlbV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tpcCB0ZXN0
cyB0YWdnZWQgd2l0aCAvL1xAc2tpcCBpZiBcJG1lbW9yeUxpbWl0ZWQKIAogICAtLXJlcG9ydC1l
eGVjdXRpb24tdGltZSAgICAgICBQcmludCBleGVjdXRpb24gdGltZSBmb3IgZWFjaCBzdHJlc3Mg
dGVzdC4KKyAgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5ICAgICAgVHJlYXQgZmFpbGluZyBzdHJl
c3MgdGVzdHMgYXMgZmxha3kuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGVj
dHMgMyBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzOiBwYXNzUGVyY2VudGFnZSxtYXhUcmllcyxtYXhG
YWlsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGxlc3MgdGhhbiBtYXhG
YWlsaW5nIHRlc3RzIGZhaWxlZCwgcnVuIHRoZW0gYWdhaW4gKHVwIHRvIG1heFRyaWVzKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnRpbCB3ZSBjYW4gdGVsbCB3aGV0aGVyIHRo
ZXkgcGFzcyBtb3JlIHRoYW4gcGFzc1BlcmNlbnRhZ2Ugb2YgdGhlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWUgKGluIHdoaWNoIGNhc2UgdGhlIHRlc3QgaXMgY291bnRlZCBh
cyBhIHBhc3MpLgogCiAgIC0tZmlsdGVyICAgICAgICAgICAgICAgICAgICAgIE9ubHkgcnVuIHRl
c3RzIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLgogICAt
LWVudi12YXJzICAgICAgICAgICAgICAgICAgICBQYXNzIGEgbGlzdCBvZiBlbnZpcm9ubWVudCB2
YXJpYWJsZXMgdG8gc2V0IGJlZm9yZSBydW5uaW5nIHRlc3RzLgpAQCAtMzUyLDYgKzM1OCw3IEBA
IEdldE9wdGlvbnMoCiAgICAgJ3Rlc3Qtd3JpdGVyPXMnID0+IFwkdGVzdFdyaXRlciwKICAgICAn
bWVtb3J5LWxpbWl0ZWQnID0+IFwkbWVtb3J5TGltaXRlZCwKICAgICAncmVwb3J0LWV4ZWN1dGlv
bi10aW1lJyA9PiBcJHJlcG9ydEV4ZWN1dGlvblRpbWUsCisgICAgJ3RyZWF0LWZhaWxpbmctYXMt
Zmxha3k9cycgPT4gXCR0cmVhdEZhaWxpbmdBc0ZsYWt5LAogICAgICdmaWx0ZXI9cycgPT4gXCRm
aWx0ZXIsCiAgICAgJ2hlbHAnID0+IFwkc2hvd0hlbHAsCiAgICAgJ2Vudi12YXJzPXMnID0+IFwk
ZW52VmFycywKQEAgLTgwMyw2ICs4MTAsMTAgQEAgc3ViIHJ1bkpTQ1N0cmVzc1Rlc3RzCiAgICAg
ICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgIi0tYXJ0aWZhY3QtZXhlYy13cmFwcGVyIik7
CiAgICAgICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgJGFydGlmYWN0X2V4ZWNfd3JhcHBl
cik7CiAgICAgfQorICAgIGlmIChkZWZpbmVkKCR0cmVhdEZhaWxpbmdBc0ZsYWt5KSkgeworICAg
ICAgICBwdXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQsICItLXRyZWF0LWZhaWxpbmctYXMtZmxha3ki
KTsKKyAgICAgICAgcHVzaChAanNjU3RyZXNzRHJpdmVyQ21kLCAkdHJlYXRGYWlsaW5nQXNGbGFr
eSk7CisgICAgfQogICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgQHRlc3RMaXN0KTsKIAog
ICAgIGlmIChpc1dpbmRvd3MoKSAmJiAhaXNDeWd3aW4oKSkgewpAQCAtOTI3LDYgKzkzOCwyMSBA
QCBzdWIgcnVuSlNDU3RyZXNzVGVzdHMKICAgICAgICAgJHJlcG9ydERhdGF7JHRlc3RTdWNjZWVk
ZWR9ID0ge2FjdHVhbCA9PiAiUEFTUyJ9OwogICAgIH0KIAorICAgIG15IEBqc2NTdHJlc3NGbGFr
eSA9IHJlYWRBbGxMaW5lcygkanNjU3RyZXNzUmVzdWx0c0RpciAuICIvZmxha3kiKTsKKyAgICBA
anNjU3RyZXNzRmxha3kgPSBzb3J0IEBqc2NTdHJlc3NGbGFreTsKKyAgICBteSAkbnVtSlNDU3Ry
ZXNzRmxha3kgPSBAanNjU3RyZXNzRmxha3k7CisKKyAgICBteSAlanNjU3RyZXNzRmxha3lJbmZv
ID0gKCk7CisgICAgaWYgKCRudW1KU0NTdHJlc3NGbGFreSkgeworICAgICAgICBwcmludCAiXG4q
KiBUaGUgZm9sbG93aW5nIEpTQyBzdHJlc3MgdGVzdHMgd2VyZSBmbGFreTpcbiI7CisgICAgICAg
IGZvcmVhY2ggbXkgJHRlc3RGbGFreSAoQGpzY1N0cmVzc0ZsYWt5KSB7CisgICAgICAgICAgICBt
eSBAZmllbGRzID0gc3BsaXQgLyAvLCAkdGVzdEZsYWt5OworICAgICAgICAgICAgcHJpbnQgIlx0
JGZpZWxkc1swXSAkZmllbGRzWzFdLyRmaWVsZHNbMl0gcGFzc2VzXG4iOworICAgICAgICAgICAg
JGpzY1N0cmVzc0ZsYWt5SW5mb3skZmllbGRzWzBdfSA9IHsgJ1AnID0+ICRmaWVsZHNbMV0sICdU
JyA9PiAkZmllbGRzWzJdfQorICAgICAgICB9CisgICAgICAgIHByaW50ICJcbiI7CisgICAgfQor
CiAgICAgbXkgQGpzY1N0cmVzc0ZhaWxMaXN0ID0gcmVhZEFsbExpbmVzKCRqc2NTdHJlc3NSZXN1
bHRzRGlyIC4gIi9mYWlsZWQiKTsKICAgICBAanNjU3RyZXNzRmFpbExpc3QgPSBzb3J0IEBqc2NT
dHJlc3NGYWlsTGlzdDsKICAgICBteSAkbnVtSlNDU3RyZXNzRmFpbHVyZXMgPSBAanNjU3RyZXNz
RmFpbExpc3Q7CkBAIC05NTMsMTIgKzk3OSwxNCBAQCBzdWIgcnVuSlNDU3RyZXNzVGVzdHMKIAog
ICAgIHByaW50ICJSZXN1bHRzIGZvciBKU0Mgc3RyZXNzIHRlc3RzOlxuIjsKICAgICBwcmludFRo
aW5nc0ZvdW5kKCRudW1KU0NTdHJlc3NGYWlsdXJlcywgImZhaWx1cmUiLCAiZmFpbHVyZXMiLCAi
Zm91bmQiKTsKKyAgICBwcmludFRoaW5nc0ZvdW5kKCRudW1KU0NTdHJlc3NGbGFreSwgInRlc3Qi
LCAidGVzdHMiLCAiZmxha3kgYnV0IHBhc3NlZCIpOwogICAgIHByaW50VGhpbmdzRm91bmQoJG51
bUpTQ1N0cmVzc05vUmVzdWx0VGVzdHMsICJ0ZXN0IiwgInRlc3RzIiwgImZhaWxlZCB0byBjb21w
bGV0ZSIpOwogICAgIHByaW50ICIgICAgT0suXG4iIGlmICRudW1KU0NTdHJlc3NGYWlsdXJlcyA9
PSAwIGFuZCAkbnVtSlNDU3RyZXNzTm9SZXN1bHRUZXN0cyA9PSAwOwogCiAgICAgcHJpbnQgIlxu
IjsKIAogICAgIGlmIChkZWZpbmVkKCRqc29uRmlsZU5hbWUpKSB7CisgICAgICAgICRqc29uRGF0
YXsnZmxha3lBbmRQYXNzZWQnfSA9ICBcJWpzY1N0cmVzc0ZsYWt5SW5mbzsKICAgICAgICAgJGpz
b25EYXRheydzdHJlc3NUZXN0RmFpbHVyZXMnfSA9IFxAanNjU3RyZXNzRmFpbExpc3Q7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9v
bHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCA4Nzg4MmE4NDNlNzQ1ZGM4MWVl
MWQzYWE5NzJhNTk0N2EzYzJiZWNhLi5lOWFhNGEwMmMxNjI0NGJkNGVmNzNiYTk4MTQ2OTg2ZDEz
MmI3MGM5IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisr
KyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTI1LDEyICsyNSwxNyBA
QAogCiByZXF1aXJlICdmaWxldXRpbHMnCiByZXF1aXJlICdnZXRvcHRsb25nJworcmVxdWlyZSAn
b3N0cnVjdCcKIHJlcXVpcmUgJ3BhdGhuYW1lJwogcmVxdWlyZSAncmJjb25maWcnCityZXF1aXJl
ICdzZXQnCiByZXF1aXJlICd0ZW1wZmlsZScKIHJlcXVpcmUgJ3VyaScKIHJlcXVpcmUgJ3lhbWwn
CiAKK3JlcXVpcmVfcmVsYXRpdmUgIndlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3Rlc3QtcmVz
dWx0LWV2YWx1YXRvciIKK3JlcXVpcmVfcmVsYXRpdmUgIndlYmtpdHJ1YnkvanNjLXN0cmVzcy10
ZXN0L2V4ZWN1dG9yIgorCiBtb2R1bGUgVVJJCiAgICAgY2xhc3MgU1NIIDwgR2VuZXJpYwogICAg
ICAgICBERUZBVUxUX1BPUlQgPSAyMgpAQCAtNzMsNiArNzgsOCBAQCBTVEFUVVNfRklMRV9GQUlM
ID0gIkYiCiBQQVJBTExFTF9SRU1PVEVfV1JBUFBFUl9NQVJLX0JFR0lOID0gIjVkNjUzMjliZDFh
MyIKIFBBUkFMTEVMX1JFTU9URV9XUkFQUEVSX01BUktfRU5EID0gImE5YWVhNWMzYjg0MyIKIFBB
UkFMTEVMX1JFTU9URV9TVEFURV9MT1NUX01BUktFUiA9ICI3MDlmYjdhNzdjNDUyMzE5MThlYjEx
OGEiCitJVEVSQVRJT05fTElNSVRTID0gT3BlblN0cnVjdC5uZXcoOmluZnJhSXRlcmF0aW9uc0Zs
b29yID0+IDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOml0ZXJhdGlvbnND
ZWlsaW5nID0+IDEwKQogCiBiZWdpbgogICAgIHJlcXVpcmUgJ3NoZWxsd29yZHMnCkBAIC0xMjQs
NyArMTMxLDYgQEAgZGVmIGVzY2FwZUFsbChhcnJheSkKICAgICB9LmpvaW4oJyAnKQogZW5kCiAK
LQogJGpzY1BhdGggPSBuaWwKICRkb05vdE1lc3NXaXRoVk1QYXRoID0gZmFsc2UKICRqaXRUZXN0
cyA9IHRydWUKQEAgLTE1Miw2ICsxNTgsMTEgQEAgJGxkZCA9IG5pbAogJGFydGlmYWN0X2V4ZWNf
d3JhcHBlciA9IG5pbAogJG51bUNoaWxkUHJvY2Vzc2VzU2V0QnlVc2VyID0gZmFsc2UKICRydW5V
bmlxdWVJZCA9IFJhbmRvbS5uZXcuYnl0ZXMoMTYpLnVucGFjaygiSCoiKVswXQorJHRlc3RzRGVi
dWdTdHJlYW0gPSBuaWwgIyBzZXQgdG8gJHN0ZGVyciBmb3IgZGVidWdnaW5nCisKK2RlZiBwdXRk
KHMpCisgICAgJHRlc3RzRGVidWdTdHJlYW0ucHV0cyhzKSB1bmxlc3MgJHRlc3RzRGVidWdTdHJl
YW0ubmlsPworZW5kCiAKIGRlZiB1c2FnZQogICAgIHB1dHMgInJ1bi1qc2Mtc3RyZXNzLXRlc3Rz
IC1qIDxzaGVsbCBwYXRoPiA8Y29sbGVjdGlvbnMgcGF0aD4gWzxjb2xsZWN0aW9ucyBwYXRoPiAu
Li5dIgpAQCAtMjIyLDYgKzIzMyw3IEBAIEdldG9wdExvbmcubmV3KFsnLS1oZWxwJywgJy1oJywg
R2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyctLXJ1YnktcnVubmVy
JywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyctLWdudS1wYXJh
bGxlbC1ydW5uZXInLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBb
Jy0tdGVzdC13cml0ZXInLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCisgICAgICAg
ICAgICAgICBbJy0tdHJlYXQtZmFpbGluZy1hcy1mbGFreScsIEdldG9wdExvbmc6OlJFUVVJUkVE
X0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS1yZW1vdGUnLCBHZXRvcHRMb25nOjpSRVFV
SVJFRF9BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tcmVtb3RlLWNvbmZpZy1maWxlJywg
R2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyctLXJlcG9y
dC1leGVjdXRpb24tdGltZScsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKQEAgLTI3MCw2ICsy
ODIsMzAgQEAgR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRvcHRMb25nOjpOT19B
UkdVTUVOVF0sCiAgICAgICAgICR0ZXN0UnVubmVyVHlwZSA9IDpnbnVwYXJhbGxlbAogICAgIHdo
ZW4gJy0tdGVzdC13cml0ZXInCiAgICAgICAgICR0ZXN0V3JpdGVyID0gYXJnCisgICAgd2hlbiAn
LS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5JworICAgICAgICBtZCA9IC9eKFteLF0rKSwoXGQrKSwo
XGQrKSQvLm1hdGNoKGFyZykKKyAgICAgICAgaWYgbWQubmlsPworICAgICAgICAgICAgJHN0ZGVy
ci5wdXRzKCJDb3VsZCBub3QgcGFyc2UgYXJndW1lbnQgdG8gYC0tdHJlYXQtZmFpbGluZy1hcy1m
bGFreWA7IGV4cGVjdGVkIGBwYXNzUGVyY2VudGFnZSxtYXhUcmllcyxtYXhGYWlsaW5nYCIpCisg
ICAgICAgICAgICBleGl0KDEpCisgICAgICAgIGVuZAorICAgICAgICBwYXNzUGVyY2VudGFnZSA9
IG1kWzFdLnRvX2YKKyAgICAgICAgaWYgcGFzc1BlcmNlbnRhZ2UuemVybz8KKyAgICAgICAgICAg
ICRzdGRlcnIucHV0cygiSW52YWxpZCBwYXNzUGVyY2VudGFnZSBgI3ttZFsxXX1gIikKKyAgICAg
ICAgICAgIGV4aXQoMSkKKyAgICAgICAgZW5kCisgICAgICAgIG1heFRyaWVzID0gbWRbMl0udG9f
aQorICAgICAgICBpZiBtYXhUcmllcyA9PSAwCisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIklu
dmFsaWQgbWF4VHJpZXMgYCN7bWRbMl19YCIpCisgICAgICAgICAgICBleGl0KDEpCisgICAgICAg
IGVuZAorICAgICAgICBtYXhGYWlsaW5nID0gbWRbM10udG9faQorICAgICAgICBpZiBtYXhGYWls
aW5nID09IDAKKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiSW52YWxpZCBtYXhGYWlsaW5nIGAj
e21kWzNdfWAiKQorICAgICAgICAgICAgZXhpdCgxKQorICAgICAgICBlbmQKKyAgICAgICAgJHRy
ZWF0RmFpbGluZ0FzRmxha3kgPSBPcGVuU3RydWN0Lm5ldyg6cGFzc1BlcmNlbnRhZ2UgPT4gcGFz
c1BlcmNlbnRhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOm1heFRyaWVzID0+IG1heFRyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDptYXhGYWlsaW5nID0+IG1heEZhaWxpbmcpCiAgICAgd2hlbiAnLS1y
ZW1vdGUnCiAgICAgICAgICRjb3B5Vk0gPSB0cnVlCiAgICAgICAgICR0YXJiYWxsID0gdHJ1ZQpA
QCAtNTc2LDYgKzYxMiw5NiBAQCBGVExfT1BUSU9OUyA9IFsiLS11c2VGVExKSVQ9dHJ1ZSJdCiBG
T1JDRV9MTElOVF9FWElUX09QVElPTlMgPSBbIi0tZm9yY2VPU1JFeGl0VG9MTEludD10cnVlIl0K
IEVYRUNVVEFCTEVfRlVaWkVSX09QVElPTlMgPSBbIi0tdXNlRXhlY3V0YWJsZUFsbG9jYXRpb25G
dXp6PXRydWUiLCAiLS1maXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6UmFuZG9tbHk9dHJ1ZSJd
CiAKK2NsYXNzIEJhc2VQbGFuCisgICAgYXR0cl9yZWFkZXIgOmRpcmVjdG9yeSwgOmFyZ3VtZW50
cywgOmZhbWlseSwgOm5hbWUsIDpvdXRwdXRIYW5kbGVyLCA6ZXJyb3JIYW5kbGVyLCA6YWRkaXRp
b25hbEVudiwgOmluZGV4CisgICAgYXR0cl9hY2Nlc3NvciA6cmV0cnlQYXJhbWV0ZXJzCisKKyAg
ICBAQGluZGV4ID0gMAorICAgIGRlZiBpbml0aWFsaXplKGRpcmVjdG9yeSwgYXJndW1lbnRzLCBm
YW1pbHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlciwgcmV0cnlQYXJhbWV0ZXJz
KQorICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5CisgICAgICAgIEBhcmd1bWVudHMgPSBh
cmd1bWVudHNNYXBwZXIoYXJndW1lbnRzKQorICAgICAgICBAZmFtaWx5ID0gZmFtaWx5CisgICAg
ICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAb3V0cHV0SGFuZGxlciA9IG91dHB1dEhhbmRsZXIK
KyAgICAgICAgQGVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcgorICAgICAgICAjIEEgcGxhbiBm
b3Igd2hpY2ggQHJldHJ5UGFyYW1ldGVycyBpcyBub3QgbmlsIGlzIGJlaW5nCisgICAgICAgICMg
dHJlYXRlZCBhcyBwb3RlbnRpYWxseSBmbGFreS4KKyAgICAgICAgQHJldHJ5UGFyYW1ldGVycyA9
IHJldHJ5UGFyYW1ldGVycworICAgICAgICBAYWRkaXRpb25hbEVudiA9IFtdCisgICAgICAgIEBp
bmRleCA9IEBAaW5kZXgKKyAgICAgICAgQEBpbmRleCArPSAxCisgICAgZW5kCisgICAgZGVmIHNl
bGYubW9jayhmYW1pbHksIG5hbWUsIHJldHJ5UGFyYW1ldGVycz1uaWwpCisgICAgICAgIHNlbGYu
bmV3KCIvbm9uZSIsIFtdLCBmYW1pbHksIG5hbWUsIG5pbCwgbmlsLCByZXRyeVBhcmFtZXRlcnMp
CisgICAgZW5kCisgICAgZGVmIHNlbGYuY3JlYXRlKGRpcmVjdG9yeSwgYXJndW1lbnRzLCBmYW1p
bHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlcikKKyAgICAgICAgaWYgJHJ1bkNv
bW1hbmRPcHRpb25zWzpjcmFzaE9LXQorICAgICAgICAgICAgb3V0cHV0SGFuZGxlciA9IG5vaXN5
T3V0cHV0SGFuZGxlcgorICAgICAgICBlbmQKKyAgICAgICAgc2VsZi5uZXcoZGlyZWN0b3J5LCBh
cmd1bWVudHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyLCAkcnVu
Q29tbWFuZE9wdGlvbnNbOmZsYWt5XSkKKyAgICBlbmQKKyAgICBkZWYgYXJndW1lbnRzTWFwcGVy
KGFyZ3MpCisgICAgICAgIGFyZ3MKKyAgICBlbmQKKyAgICAjIFdlIHJlZ3VsYXJseSBwbGFjZSBQ
bGFucyBpbiBjb250YWluZXJzLCBidXQgbWF5IG1vZGlmeSBAcmV0cnlQYXJhbWV0ZXJzCisgICAg
IyBhZnRlciB0aGUgZmFjdDsgb25seSBoYXNoIG9uIEBpbmRleCBpbnN0ZWFkLgorICAgIGRlZiBo
YXNoCisgICAgICAgIEBpbmRleAorICAgIGVuZAorICAgIGRlZiB0b19zCisgICAgICAgICIje0Bp
bmRleH0iCisgICAgZW5kCitlbmQKKworY2xhc3MgVGVzdFJ1bm5lcgorICAgIGRlZiBpbml0aWFs
aXplKHRlc3RSdW5uZXJUeXBlLCBydW5uZXJEaXIpCisgICAgICAgIEB0ZXN0UnVubmVyVHlwZSA9
IHRlc3RSdW5uZXJUeXBlCisgICAgICAgIEBydW5uZXJEaXIgPSBydW5uZXJEaXIKKyAgICBlbmQK
KyAgICBkZWYgcHJlcGFyZShydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJl
bW90ZUhvc3RzKQorICAgICAgICBwcmVwYXJlU2NyaXB0cyhydW5saXN0KQorICAgICAgICBwcmVw
YXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9z
dHMpCisgICAgZW5kCisgICAgZGVmIHByZXBhcmVTY3JpcHRzKHJ1bmxpc3QpCisgICAgICAgIERp
ci5ta2RpcihAcnVubmVyRGlyKSB1bmxlc3MgQHJ1bm5lckRpci5kaXJlY3Rvcnk/CisgICAgICAg
IHRvRGVsZXRlID0gW10KKyAgICAgICAgRGlyLmZvcmVhY2goQHJ1bm5lckRpcikgeworICAgICAg
ICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgICAgICBpZiBmaWxlbmFtZSA9fiAvXnRlc3RfLwor
ICAgICAgICAgICAgICAgIHRvRGVsZXRlIDw8IGZpbGVuYW1lCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgfQorCisgICAgICAgIHRvRGVsZXRlLmVhY2ggeworICAgICAgICAgICAgfCBmaWxlbmFt
ZSB8CisgICAgICAgICAgICBGaWxlLnVubGluayhAcnVubmVyRGlyICsgZmlsZW5hbWUpCisgICAg
ICAgIH0KKworICAgICAgICAjIFdyaXRlIHRlc3Qgc2NyaXB0cyBpbiBwYXJhbGxlbCBhcyB0aGlz
IGlzIGJvdGggYW4gZXhwZW5zaXZlIGFuZCBhCisgICAgICAgICMgaGlnaGx5IElPIGludGVuc2l2
ZSBvcGVyYXRpb24sIGJ1dCBlYWNoIHNjcmlwdCBpcyBpbmRlcGVuZGVudCBhbmQKKyAgICAgICAg
IyB0aGUgb3BlcmF0aW9uIGlzIHB1cmUgb3RoZXIgdGhhbiB3cml0aW5nIHRoZSB1bmlxdWUgcnVu
IHNjcmlwdC4KKyAgICAgICAgcGFyYWxsZWxFYWNoKHJ1bmxpc3QpIGRvIHwgcGxhbiB8CisgICAg
ICAgICAgICBwbGFuLndyaXRlUnVuU2NyaXB0KEBydW5uZXJEaXIgKyAidGVzdF9zY3JpcHRfI3tw
bGFuLmluZGV4fSIpCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBzZWxmLmNyZWF0ZSh0
ZXN0UnVubmVyVHlwZSwgcnVubmVyRGlyKQorICAgICAgICBjbHMgPSBuaWwKKyAgICAgICAgY2Fz
ZSB0ZXN0UnVubmVyVHlwZQorICAgICAgICB3aGVuIDpzaGVsbAorICAgICAgICAgICAgY2xzID0g
VGVzdFJ1bm5lclNoZWxsCisgICAgICAgIHdoZW4gOm1ha2UKKyAgICAgICAgICAgIGNscyA9IFRl
c3RSdW5uZXJNYWtlCisgICAgICAgIHdoZW4gOnJ1YnkKKyAgICAgICAgICAgIGNscyA9IFRlc3RS
dW5uZXJSdWJ5CisgICAgICAgIHdoZW4gOmdudXBhcmFsbGVsCisgICAgICAgICAgICBjbHMgPSBU
ZXN0UnVubmVyR251UGFyYWxsZWwKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVu
a25vd24gdGVzdCBydW5uZXIgdHlwZTogI3t0ZXN0UnVubmVyVHlwZS50b19zfSIKKyAgICAgICAg
ZW5kCisgICAgICAgIHJldHVybiBjbHMubmV3KHRlc3RSdW5uZXJUeXBlLCBydW5uZXJEaXIpCisg
ICAgZW5kCitlbmQKKwogcmVxdWlyZV9yZWxhdGl2ZSAid2Via2l0cnVieS9qc2Mtc3RyZXNzLXRl
c3Qtd3JpdGVyLSN7JHRlc3RXcml0ZXJ9IgogCiBkZWYgc2hvdWxkQ29sbGVjdENvbnRpbnVvdXNs
eT8KQEAgLTU4NCw3ICs3MTAsNyBAQCBlbmQKIAogQ09MTEVDVF9DT05USU5VT1VTTFlfT1BUSU9O
UyA9IHNob3VsZENvbGxlY3RDb250aW51b3VzbHk/ID8gWyItLWNvbGxlY3RDb250aW51b3VzbHk9
dHJ1ZSIsICItLXVzZUdlbmVyYXRpb25hbEdDPWZhbHNlIiwgIi0tdmVyaWZ5R0M9dHJ1ZSJdIDog
W10KIAotJHNlcmlhbFJ1bmxpc3QgPSBbXQorJHNlcmlhbFBsYW5zID0gU2V0Lm5ldwogJHJ1bmxp
c3QgPSBbXQogCiBkZWYgZnJhbWV3b3JrRnJvbUpTQ1BhdGgoanNjUGF0aCkKQEAgLTY1Nyw3ICs3
ODMsNyBAQCBkZWYgYWRkUnVuQ29tbWFuZChraW5kLCBjb21tYW5kLCBvdXRwdXRIYW5kbGVyLCBl
cnJvckhhbmRsZXIsICphZGRpdGlvbmFsRW52KQogICAgIGlmICRmaWx0ZXIgYW5kIG5hbWUgIX4g
JGZpbHRlcgogICAgICAgICByZXR1cm4KICAgICBlbmQKLSAgICBwbGFuID0gUGxhbi5uZXcoCisg
ICAgcGxhbiA9IFBsYW4uY3JlYXRlKAogICAgICAgICAkYmVuY2htYXJrRGlyZWN0b3J5LCBjb21t
YW5kLCAiI3skY29sbGVjdGlvbk5hbWV9LyN7JGJlbmNobWFya30iLCBuYW1lLCBvdXRwdXRIYW5k
bGVyLAogICAgICAgICBlcnJvckhhbmRsZXIpCiAgICAgcGxhbi5hZGRpdGlvbmFsRW52LnB1c2go
KmFkZGl0aW9uYWxFbnYpCkBAIC02NjYsNyArNzkyLDcgQEAgZGVmIGFkZFJ1bkNvbW1hbmQoa2lu
ZCwgY29tbWFuZCwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyLCAqYWRkaXRpb25hbEVudikK
ICAgICAgICAgIyB0aGF0IHdlIGNhbiB0cmVhdCB0aGVtIHNwZWNpYWxseSB3aGVuIHNjaGVkdWxp
bmcsIGJ1dCBrZWVwCiAgICAgICAgICMgaXQgaW4gdGhlICRydW5saXN0IGZvciBjb2RlIHRoYXQg
ZG9zbid0IGNhcmUgYWJvdXQKICAgICAgICAgIyBzY2hlZHVsaW5nLgotICAgICAgICAkc2VyaWFs
UnVubGlzdCA8PCBwbGFuCisgICAgICAgICRzZXJpYWxQbGFucy5hZGQocGxhbikKICAgICBlbmQK
IAogICAgIGlmICRudW1DaGlsZFByb2Nlc3NlcyA+IDEgYW5kICRydW5Db21tYW5kT3B0aW9uc1s6
aXNTbG93XQpAQCAtNzI0LDYgKzg1MCw1MSBAQCBkZWYgc2VyaWFsIQogICAgICRydW5Db21tYW5k
T3B0aW9uc1s6c2VyaWFsXSA9IHRydWUKIGVuZAogCisKKyMgUmV0cnkgcGFyYW1ldGVycyBmb3Ig
dGVzdHMgdGhhdCB3ZSB0cmVhdCBhcyBmbGFreSwgZWl0aGVyIGJlY2F1c2UKKyMgdGhleSd2ZSBi
ZWVuIGV4cGxpY2l0bHkgbWFya2VkIHNvICh2aWEgZmxha3khKSBvciBiZWNhdXNlIHdlIHdlcmUK
KyMgYXNrZWQgdG8gLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5LgorY2xhc3MgUmV0cnlQYXJhbWV0
ZXJzCisgICAgYXR0cl9yZWFkZXIgOnBhc3NQZXJjZW50YWdlLCA6bWF4VHJpZXMKKyAgICBkZWYg
aW5pdGlhbGl6ZShwYXNzUGVyY2VudGFnZSwgbWF4VHJpZXMpCisgICAgICAgIEBwYXNzUGVyY2Vu
dGFnZSA9IHBhc3NQZXJjZW50YWdlCisgICAgICAgIEBtYXhUcmllcyA9IG1heFRyaWVzCisgICAg
ZW5kCisgICAgZGVmIHRvX3MKKyAgICAgICAgIlJldHJ5UGFyYW1ldGVycygje0BwYXNzUGVyY2Vu
dGFnZX0sICN7QG1heFRyaWVzfSkiCisgICAgZW5kCisgICAgZGVmIHJlc3VsdChzdGF0dXNlcykK
KyAgICAgICAgaWYgc3RhdHVzZXMubGVuZ3RoID4gQG1heFRyaWVzCisgICAgICAgICAgICAjIFRo
aXMgY291bGQgaGFwcGVuIGlmIChiZWNhdXNlIG9mIHJlbW90ZXMgZGlzYXBwZWFyaW5nCisgICAg
ICAgICAgICAjIGFuZCByZWFwcGVhcmluZykgdGhlcmUgYXJlIG11bHRpcGxlIHJ1bnMgZm9yIHRo
ZSBsYXN0CisgICAgICAgICAgICAjIHRyeSBmb3IgYSBmbGFreSB0ZXN0LiBKdXN0IGlnbm9yZSBh
bnkgZXh0cmEgc3RhdHVzZXMuCisgICAgICAgICAgICBzdGF0dXNlcyA9IHN0YXR1c2VzLnRha2Uo
QG1heFRyaWVzKQorICAgICAgICBlbmQKKyAgICAgICAgc3VjY2Vzc2VzID0gc3VjY2Vzc2Z1bFN0
YXR1c2VzKHN0YXR1c2VzKQorICAgICAgICByZW1haW5pbmcgPSBAbWF4VHJpZXMgLSBzdGF0dXNl
cy5sZW5ndGgKKyAgICAgICAgcmVxdWlyZWRTdWNjZXNzZXMgPSAoQHBhc3NQZXJjZW50YWdlICog
QG1heFRyaWVzKS5jZWlsCisgICAgICAgIHJldCA9IG5pbCAjICJoYXMgbm90IGNvbXBsZXRlZCB5
ZXQiCisgICAgICAgIGlmIHN1Y2Nlc3NlcyA+PSByZXF1aXJlZFN1Y2Nlc3NlcworICAgICAgICAg
ICAgcmV0ID0gdHJ1ZQorICAgICAgICBlbHNpZiAoc3VjY2Vzc2VzICsgcmVtYWluaW5nKSA8IHJl
cXVpcmVkU3VjY2Vzc2VzCisgICAgICAgICAgICByZXQgPSBmYWxzZQorICAgICAgICBlbmQKKyAg
ICAgICAgcHV0ZCgiI3tzZWxmfS5yZXN1bHQoI3tzdGF0dXNlc30pID0+ICN7cmV0fSIpCisgICAg
ICAgIHJldAorICAgIGVuZAorICAgIHByaXZhdGUKKyAgICBkZWYgc3VjY2Vzc2Z1bFN0YXR1c2Vz
KHN0YXR1c2VzKQorICAgICAgICBzdGF0dXNlcy5jb3VudCB7CisgICAgICAgICAgICB8c3RhdHVz
fAorICAgICAgICAgICAgc3RhdHVzID09IFNUQVRVU19GSUxFX1BBU1MKKyAgICAgICAgfQorICAg
IGVuZAorZW5kCisKK2RlZiBmbGFreSEocGFzc1BlcmNlbnRhZ2UsIG1heFRyaWVzKQorICAgICRy
dW5Db21tYW5kT3B0aW9uc1s6Zmxha3ldID0gUmV0cnlQYXJhbWV0ZXJzLm5ldyhwYXNzUGVyY2Vu
dGFnZSwgbWF4VHJpZXMpCitlbmQKKwogZGVmIHJlcXVpcmVPcHRpb25zKCpvcHRpb25zKQogICAg
ICR0ZXN0U3BlY2lmaWNSZXF1aXJlZE9wdGlvbnMgKz0gb3B0aW9ucwogZW5kCkBAIC0xODU5LDM0
ICsyMDMwLDYgQEAgZGVmIGhhbmRsZUNvbGxlY3Rpb24oY29sbGVjdGlvbikKICAgICBlbmQKIGVu
ZAogCi1kZWYgYXBwZW5kRmFpbHVyZShwbGFuKQotICAgIEZpbGUub3Blbigkb3V0cHV0RGlyICsg
ImZhaWxlZCIsICJhIikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBvdXRwLnB1dHMgcGxh
bi5uYW1lCi0gICAgfQotZW5kCi0KLWRlZiBhcHBlbmRQYXNzKHBsYW4pCi0gICAgRmlsZS5vcGVu
KCRvdXRwdXREaXIgKyAicGFzc2VkIiwgImEiKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAg
IG91dHAucHV0cyBwbGFuLm5hbWUKLSAgICB9Ci1lbmQKLQotZGVmIGFwcGVuZE5vUmVzdWx0KHBs
YW4pCi0gICAgRmlsZS5vcGVuKCRvdXRwdXREaXIgKyAibm9yZXN1bHQiLCAiYSIpIHsKLSAgICAg
ICAgfCBvdXRwIHwKLSAgICAgICAgb3V0cC5wdXRzIHBsYW4ubmFtZQotICAgIH0KLWVuZAotCi1k
ZWYgYXBwZW5kUmVzdWx0KHBsYW4sIGRpZFBhc3MpCi0gICAgRmlsZS5vcGVuKCRvdXRwdXREaXIg
KyAicmVzdWx0cyIsICJhIikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBvdXRwLnB1dHMg
IiN7cGxhbi5uYW1lfTogI3tkaWRQYXNzID8gJ1BBU1MnIDogJ0ZBSUwnfSIKLSAgICB9Ci1lbmQK
LQogZGVmIHByZXBhcmVCdW5kbGUKICAgICByYWlzZSBpZiAkYnVuZGxlCiAKQEAgLTIwNjksNTQg
KzIyMTIsMTEgQEAgZGVmIHBhcmFsbGVsRWFjaChhcnJheSwgJmJsb2NrKQogICAgIGVuZAogZW5k
CiAKLWRlZiBwcmVwYXJlVGVzdFJ1bm5lcihyZW1vdGVJbmRleD0wKQotICAgIHJhaXNlIGlmICRi
dW5kbGUKLQotICAgICRydW5saXN0LmVhY2hfd2l0aF9pbmRleCB7Ci0gICAgICAgIHwgcGxhbiwg
aW5kZXggfAotICAgICAgICBwbGFuLmluZGV4ID0gaW5kZXgKLSAgICB9Ci0KLSAgICBEaXIubWtk
aXIoJHJ1bm5lckRpcikgdW5sZXNzICRydW5uZXJEaXIuZGlyZWN0b3J5PwotICAgIHRvRGVsZXRl
ID0gW10KLSAgICBEaXIuZm9yZWFjaCgkcnVubmVyRGlyKSB7Ci0gICAgICAgIHwgZmlsZW5hbWUg
fAotICAgICAgICBpZiBmaWxlbmFtZSA9fiAvXnRlc3RfLwotICAgICAgICAgICAgdG9EZWxldGUg
PDwgZmlsZW5hbWUKLSAgICAgICAgZW5kCi0gICAgfQotICAgIAotICAgIHRvRGVsZXRlLmVhY2gg
ewotICAgICAgICB8IGZpbGVuYW1lIHwKLSAgICAgICAgRmlsZS51bmxpbmsoJHJ1bm5lckRpciAr
IGZpbGVuYW1lKQotICAgIH0KLQotICAgICMgV3JpdGUgdGVzdCBzY3JpcHRzIGluIHBhcmFsbGVs
IGFzIHRoaXMgaXMgYm90aCBhbiBleHBlbnNpdmUgYW5kIGEKLSAgICAjIGhpZ2hseSBJTyBpbnRl
bnNpdmUgb3BlcmF0aW9uLCBidXQgZWFjaCBzY3JpcHQgaXMgaW5kZXBlbmRlbnQgYW5kCi0gICAg
IyB0aGUgb3BlcmF0aW9uIGlzIHB1cmUgb3RoZXIgdGhhbiB3cml0aW5nIHRoZSB1bmlxdWUgcnVu
IHNjcmlwdC4KLSAgICBwYXJhbGxlbEVhY2goJHJ1bmxpc3QpIGRvIHwgcGxhbiB8Ci0gICAgICAg
IHBsYW4ud3JpdGVSdW5TY3JpcHQoJHJ1bm5lckRpciArICJ0ZXN0X3NjcmlwdF8je3BsYW4uaW5k
ZXh9IikKLSAgICBlbmQKLQotICAgIGNhc2UgJHRlc3RSdW5uZXJUeXBlCi0gICAgd2hlbiA6bWFr
ZQotICAgICAgICBwcmVwYXJlTWFrZVRlc3RSdW5uZXIocmVtb3RlSW5kZXgpCi0gICAgd2hlbiA6
c2hlbGwKLSAgICAgICAgcHJlcGFyZVNoZWxsVGVzdFJ1bm5lcgotICAgIHdoZW4gOnJ1YnkKLSAg
ICAgICAgcHJlcGFyZVJ1YnlUZXN0UnVubmVyCi0gICAgd2hlbiA6Z251cGFyYWxsZWwKLSAgICAg
ICAgcHJlcGFyZUdudVBhcmFsbGVsVGVzdFJ1bm5lcgotICAgIGVsc2UKLSAgICAgICAgcmFpc2Ug
IlVua25vd24gdGVzdCBydW5uZXIgdHlwZTogI3skdGVzdFJ1bm5lclR5cGUudG9fc30iCi0gICAg
ZW5kCi1lbmQKLQogZGVmIGNsZWFuUnVubmVyRGlyZWN0b3J5CiAgICAgcmFpc2UgdW5sZXNzICRi
dW5kbGUKICAgICBEaXIuZm9yZWFjaCgkcnVubmVyRGlyKSB7CiAgICAgICAgIHwgZmlsZW5hbWUg
fAotICAgICAgICBuZXh0IHVubGVzcyBmaWxlbmFtZSA9fiAvXnRlc3RfZmFpbC8KKyAgICAgICAg
bmV4dCB1bmxlc3MgZmlsZW5hbWUgPX4gL14je1NUQVRVU19GSUxFX1BSRUZJWH0vCiAgICAgICAg
IEZpbGVVdGlscy5ybV9mICRydW5uZXJEaXIgKyBmaWxlbmFtZQogICAgIH0KIGVuZApAQCAtMjI4
NSw5ICsyMzg1LDkgQEAgZGVmIGV4cG9ydEJhc2VFbnZpcm9ubWVudFZhcmlhYmxlcyhlc2NhcGUp
CiAgICAgXS5qb2luKCIiKQogZW5kCiAKLWRlZiBydW5UZXN0UnVubmVyKHJlbW90ZUluZGV4PTAp
Ci0gICAgaWYgJHJlbW90ZQotICAgICAgICByZW1vdGVIb3N0ID0gJHJlbW90ZUhvc3RzW3JlbW90
ZUluZGV4XQorZGVmIHJ1blRlc3RSdW5uZXIodGVzdFJ1bm5lciwgcmVtb3RlSG9zdHMsIHJlbW90
ZUluZGV4PTApCisgICAgaWYgbm90IHJlbW90ZUhvc3RzLm5pbD8KKyAgICAgICAgcmVtb3RlSG9z
dCA9IHJlbW90ZUhvc3RzW3JlbW90ZUluZGV4XQogICAgICAgICBnZXRSZW1vdGVEaXJlY3RvcnlJ
Zk5lZWRlZChyZW1vdGVIb3N0KQogICAgICAgICBjb3B5QnVuZGxlVG9SZW1vdGUocmVtb3RlSG9z
dCkKICAgICAgICAgcmVtb3RlU2NyaXB0ID0gIlwiIgpAQCAtMjI5NywxMSArMjM5NywxMSBAQCBk
ZWYgcnVuVGVzdFJ1bm5lcihyZW1vdGVJbmRleD0wKQogICAgICAgICByZW1vdGVTY3JpcHQgKz0g
ImNkICN7JG91dHB1dERpci5iYXNlbmFtZX0vLnJ1bm5lciAmJiAiCiAgICAgICAgIHJlbW90ZVNj
cmlwdCArPSBleHBvcnRCYXNlRW52aXJvbm1lbnRWYXJpYWJsZXModHJ1ZSkKICAgICAgICAgJGVu
dlZhcnMuZWFjaCB7IHx2YXJ8IHJlbW90ZVNjcmlwdCArPSAiZXhwb3J0ICIgPDwgdmFyIDw8ICJc
biIgfQotICAgICAgICByZW1vdGVTY3JpcHQgKz0gIiN7dGVzdFJ1bm5lckNvbW1hbmQocmVtb3Rl
SW5kZXgpfVwiIgorICAgICAgICByZW1vdGVTY3JpcHQgKz0gIiN7dGVzdFJ1bm5lci5jb21tYW5k
KHJlbW90ZUluZGV4KX1cIiIKICAgICAgICAgcnVuQW5kTW9uaXRvclRlc3RSdW5uZXJDb21tYW5k
KFsic3NoIiwgIi1vIiwgIk5vSG9zdEF1dGhlbnRpY2F0aW9uRm9yTG9jYWxob3N0PXllcyJdICsg
KHJlbW90ZUhvc3QuaWRlbnRpdHlfZmlsZV9wYXRoID8gWyItaSIsIHJlbW90ZUhvc3QuaWRlbnRp
dHlfZmlsZV9wYXRoXSA6IFtdKSArIFsiLXAiLCByZW1vdGVIb3N0LnBvcnQudG9fcywgIiN7cmVt
b3RlSG9zdC51c2VyfUAje3JlbW90ZUhvc3QuaG9zdH0iLCByZW1vdGVTY3JpcHRdKQogICAgIGVs
c2UKICAgICAgICAgRGlyLmNoZGlyKCRydW5uZXJEaXIpIHsKLSAgICAgICAgICAgIHJ1bkFuZE1v
bml0b3JUZXN0UnVubmVyQ29tbWFuZChTaGVsbHdvcmRzLnNoZWxsc3BsaXQodGVzdFJ1bm5lckNv
bW1hbmQpKQorICAgICAgICAgICAgcnVuQW5kTW9uaXRvclRlc3RSdW5uZXJDb21tYW5kKFNoZWxs
d29yZHMuc2hlbGxzcGxpdCh0ZXN0UnVubmVyLmNvbW1hbmQpKQogICAgICAgICB9CiAgICAgZW5k
CiBlbmQKQEAgLTIzMTgsMzggKzI0MTgsMjEgQEAgZGVmIHByb2Nlc3NTdGF0dXNMaW5lKG1hcCwg
bGluZSkKICAgICBydW5JZCA9IG1kWzpydW5JZF0KICAgICByZXN1bHQgPSBtZFs6cmVzdWx0XQog
ICAgIGlmIHJ1bklkICE9ICRydW5VbmlxdWVJZAotICAgICAgICAjIFRoaXMgbWF5IGNvbmNlaXZh
Ymx5IGhhcHBlbiBpZiBhIHJlbW90ZSBnb2VzCi0gICAgICAgICMgYXdheSBpbiB0aGUgbWlkZGxl
IG9mIGEgcnVuIGFuZCBjb21lcyBiYWNrCi0gICAgICAgICMgb25saW5lIGluIHRoZSBtaWRkbGUg
b2YgYSBkaWZmZXJlbnQgcnVuLgotICAgICAgICAkc3RkZXJyLnB1dHMoIklnbm9yaW5nIHN0YWxl
IHN0YXR1cyBmaWxlIGZvciAje2luZGV4fSAoSUQgI3tydW5JZH0gYnV0IGN1cnJlbnQgSUQgaXMg
I3skcnVuVW5pcXVlSWR9KSIpCi0gICAgICAgIHJldHVybgotICAgIGVuZAotICAgIGlmIG1hcC5o
YXNfa2V5PyhpbmRleCkKLSAgICAgICAgIyBPbmUgc2NlbmFyaW8gaW4gd2hpY2ggdGhpcyBjb3Vs
ZCBoYXBwZW46Ci0gICAgICAgICMgVGVzdCBUIHJ1bnMgb24gcmVtb3RlIGhvc3QgQSBhbmQKLSAg
ICAgICAgIyAgIDEuIHRoZSBzdGF0dXMgZmlsZSByZWFjaGVzIEEncyBkaXNrCi0gICAgICAgICMg
ICAyLiBzb21laG93IHRoZSBnbnUgcGFyYWxsZWwgcnVubmVyIGlzIG5vdCBtYWRlIGF3YXJlIG9m
IHRoZSB0ZXN0J3MgY29tcGxldGlvbiAocGFja2V0IGxvc3M/KQotICAgICAgICAjICAgMy4gbWFj
aGluZSBBIGNyYXNoZXMKLSAgICAgICAgIyAgIDQuIGdudSBwYXJhbGxlbCByZS1zY2hlZHVsZXMg
dGhlIHRlc3QgdG8gcnVuIG9uIHJlbW90ZSBob3N0IEIsIHdoZXJlIGl0IHJ1bnMgdG8gY29tcGxl
dGlvbgotICAgICAgICAjICAgNS4gQiBjb21lcyBiYWNrIG9ubGluZSBiZWZvcmUgdGhlIGVuZCBv
ZiB0aGUgcnVuCi0gICAgICAgICMgICA2LiB3ZSBjb2xsZWN0IHRoZSBzdGF0dXMgZmlsZXMgZnJv
bSBhbGwgcmVtb3RlcyBhbmQgZW5kIHVwIHdpdGggdHdvIHN0YXR1cyBmaWxlcyBmb3IgVC4KLSAg
ICAgICAgcHJldiA9IG1hcFtpbmRleF0KLSAgICAgICAgIyBtYXBbaW5kZXhdIGhvbGRzCi0gICAg
ICAgICMgLSBhIG51bWJlciwgaWYgYWxsIHJlc3VsdHMgY29kZXMgd2UndmUgb2JzZXJ2ZWQgZm9y
IGEgdGVzdCBhcmUgdGhlIHNhbWUKLSAgICAgICAgIyAtIGFuIGFycmF5LCBpZiB0aGV5IGRpdmVy
Z2UuCi0gICAgICAgIGlmIHByZXYuaXNfYT8oQXJyYXkpCi0gICAgICAgICAgICBwcmV2LnB1c2go
cmVzdWx0KQotICAgICAgICBlbHNpZiBwcmV2ICE9IHJlc3VsdAotICAgICAgICAgICAgIyBJZiB0
aGUgdHdvIHJlc3VsdHMgZGlmZmVyLCBrZWVwIHRoZW0KLSAgICAgICAgICAgICMgYm90aC4gVGhp
cyBpcyBzaW1wbHkgYSB3YXkgdG8gbWFrZSBub3RlIG9mCi0gICAgICAgICAgICAjIHRoZSBkaXZl
cmdlbmNlIChmb3IgbGF0ZXIgcmVwb3J0aW5nKS4KLSAgICAgICAgICAgIG1hcFtpbmRleF0gPSBb
cHJldiwgcmVzdWx0XQorICAgICAgICBpZiAkYnVuZGxlCisgICAgICAgICAgICAjIFRoZSBzY3Jp
cHRzIGluIHRoZSBidW5kbGUgaGF2ZSB0aGVpciBvd24gcnVuSWQgZW1iZWRkZWQsCisgICAgICAg
ICAgICAjIGp1c3QgaWdub3JlIHRoZSB2YWx1ZS4KICAgICAgICAgZWxzZQotICAgICAgICAgICAg
IyBHb3QgdGhlIHNhbWUgcmVzdWx0LCBubyBuZWVkIHRvIGRvIGFueXRoaW5nLgorICAgICAgICAg
ICAgIyBUaGlzIG1heSBjb25jZWl2YWJseSBoYXBwZW4gaWYgYSByZW1vdGUgZ29lcworICAgICAg
ICAgICAgIyBhd2F5IGluIHRoZSBtaWRkbGUgb2YgYSBydW4gYW5kIGNvbWVzIGJhY2sKKyAgICAg
ICAgICAgICMgb25saW5lIGluIHRoZSBtaWRkbGUgb2YgYSBkaWZmZXJlbnQgcnVuLgorICAgICAg
ICAgICAgJHN0ZGVyci5wdXRzKCJJZ25vcmluZyBzdGFsZSBzdGF0dXMgZmlsZSBmb3IgI3tpbmRl
eH0gKElEICN7cnVuSWR9IGJ1dCBjdXJyZW50IElEIGlzICN7JHJ1blVuaXF1ZUlkfSkiKQorICAg
ICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVuZAotICAgICAgICAkc3RkZXJyLnB1dHMoIkR1cGxp
Y2F0ZSBzdGF0ZSBmaWxlIGZvciAje2luZGV4fTogI3ttYXBbaW5kZXhdfSIpCisgICAgZW5kCisg
ICAgaWYgbWFwLmhhc19rZXk/KGluZGV4KQorICAgICAgICBtYXBbaW5kZXhdLnB1c2gocmVzdWx0
KQogICAgIGVsc2UKLSAgICAgICAgbWFwW2luZGV4XSA9IHJlc3VsdAorICAgICAgICBtYXBbaW5k
ZXhdID0gW3Jlc3VsdF0KICAgICBlbmQKIGVuZAogCkBAIC0yMzg1LDU4ICsyNDY4LDIzIEBAIGRl
ZiBnZXRTdGF0dXNNYXAobWFwPXt9KQogICAgIG1hcAogZW5kCiAKLWRlZiBnZXRDb21wbGV0ZWRU
ZXN0c0Zyb21TdGF0dXNNYXAoc3RhdHVzTWFwKQotICAgIGNvbXBsZXRlZFRlc3RzID0ge30KLSAg
ICAkcnVubGlzdC5lYWNoX3dpdGhfaW5kZXggewotICAgICAgICB8IHBsYW4sIGluZGV4IHwKLSAg
ICAgICAgaWYgc3RhdHVzTWFwLmhhc19rZXk/KGluZGV4KQotICAgICAgICAgICAgY29tcGxldGVk
VGVzdHNbcGxhbl0gPSBuaWwKLSAgICAgICAgZW5kCi0gICAgfQotICAgIGNvbXBsZXRlZFRlc3Rz
Ci1lbmQKLQogZGVmIGRldGVjdEZhaWx1cmVzKHN0YXR1c01hcD17fSkKICAgICByYWlzZSBpZiAk
YnVuZGxlCi0gICAgbm9yZXN1bHQgPSAwCiAgICAgaWYgc3RhdHVzTWFwLnNpemUgPT0gMAogICAg
ICAgICBzdGF0dXNNYXAgPSBnZXRTdGF0dXNNYXAKICAgICBlbmQKLSAgICBmYW1pbHlNYXAgPSB7
fQogCi0gICAgJHJ1bmxpc3QuZWFjaF93aXRoX2luZGV4IHsKLSAgICAgICAgfCBwbGFuLCBpbmRl
eCB8Ci0gICAgICAgIHVubGVzcyBmYW1pbHlNYXBbcGxhbi5mYW1pbHldCi0gICAgICAgICAgICBm
YW1pbHlNYXBbcGxhbi5mYW1pbHldID0gW10KLSAgICAgICAgZW5kCi0gICAgICAgIGlmIG5vdCBz
dGF0dXNNYXAuaGFzX2tleT8oaW5kZXgpCi0gICAgICAgICAgICBhcHBlbmROb1Jlc3VsdChwbGFu
KQotICAgICAgICAgICAgbm9yZXN1bHQgKz0gMQotICAgICAgICAgICAgbmV4dAotICAgICAgICBl
bmQKLSAgICAgICAgcmVzdWx0ID0gbmlsCi0gICAgICAgICMgSWYgYW55IG9mIHRoZSByZXN1bHRz
IHdlIGdvdCB3YXMgYSBwYXNzLCBjb25zaWRlciB0aGUgdGVzdAotICAgICAgICAjIHN1Y2Nlc3Nm
dWwuIFRoZSBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCBmYWlsdXJlcyBhcmUgYmVjYXVzZQotICAg
ICAgICAjIG9mIGluZnJhc3RydWN0dXJlIGlzc3VlcyAod2hpY2ggaXMgd2h5IHRoZSB0ZXN0IHdh
cyBydW4KLSAgICAgICAgIyBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgZmlyc3QgcGxhY2UpLgotICAg
ICAgICB0ZXN0V2FzU3VjY2Vzc2Z1bCA9IHN0YXR1c01hcFtpbmRleF0uaW5jbHVkZT8oU1RBVFVT
X0ZJTEVfUEFTUykKLSAgICAgICAgaWYgdGVzdFdhc1N1Y2Nlc3NmdWwKLSAgICAgICAgICAgIGFw
cGVuZFBhc3MocGxhbikKLSAgICAgICAgICAgIHJlc3VsdCA9ICJQQVNTIgotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBhcHBlbmRGYWlsdXJlKHBsYW4pCi0gICAgICAgICAgICByZXN1bHQgPSAi
RkFJTCIKLSAgICAgICAgZW5kCi0gICAgICAgIGFwcGVuZFJlc3VsdChwbGFuLCB0ZXN0V2FzU3Vj
Y2Vzc2Z1bCkKLSAgICAgICAgZmFtaWx5TWFwW3BsYW4uZmFtaWx5XSA8PCB7IDpyZXN1bHQgPT4g
cmVzdWx0LCA6cGxhbiA9PiBwbGFuIH0KLSAgICB9CisgICAgZXZhbHVhdG9yID0gVGVzdFJlc3Vs
dEV2YWx1YXRvckZpbmFsLm5ldygkcnVubGlzdCwgc3RhdHVzTWFwKQorICAgIGV2YWx1YXRvci52
aXNpdCEKIAotICAgIGlmIG5vcmVzdWx0ID4gMAotICAgICAgICAkc3RkZXJyLnB1dHMoIkNvdWxk
IG5vdCBnZXQgdGhlIGV4aXQgc3RhdHVzIGZvciAje25vcmVzdWx0fSB0ZXN0cyIpCisgICAgaWYg
ZXZhbHVhdG9yLm5vcmVzdWx0ID4gMAorICAgICAgICAkc3RkZXJyLnB1dHMoIkNvdWxkIG5vdCBn
ZXQgdGhlIGV4aXQgc3RhdHVzIGZvciAje2V2YWx1YXRvci5ub3Jlc3VsdH0gdGVzdHMiKQogICAg
ICAgICAjIFdlIGNhbid0IGNoYW5nZSBvdXIgZXhpdCBjb2RlLCBhcyBydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMKICAgICAgICAgIyBleHBlY3RzIDAgZXZlbiB3aGVuIHRoZXJlIGFyZSBmYWlsdXJl
cy4KICAgICBlbmQKIAorICAgIGZhbWlseU1hcCA9IGV2YWx1YXRvci5mYW1pbHlNYXAKKwogICAg
IEZpbGUub3Blbigkb3V0cHV0RGlyICsgInJlc3VsdHNCeUZhbWlseSIsICJ3IikgewogICAgICAg
ICB8IG91dHAgfAogICAgICAgICBmaXJzdCA9IHRydWUKQEAgLTI0ODYsNiArMjUzNCw3IEBAIGVu
ZAogY2xlYW4oJG91dHB1dERpciArICJmYWlsZWQiKQogY2xlYW4oJG91dHB1dERpciArICJwYXNz
ZWQiKQogY2xlYW4oJG91dHB1dERpciArICJub3Jlc3VsdCIpCitjbGVhbigkb3V0cHV0RGlyICsg
ImZsYWt5IikKIGNsZWFuKCRvdXRwdXREaXIgKyAicmVzdWx0cyIpCiBjbGVhbigkb3V0cHV0RGly
ICsgInJlc3VsdHNCeUZhbWlseSIpCiBjbGVhbigkb3V0cHV0RGlyICsgIi52bSIpCkBAIC0yNTI4
LDI3ICsyNTc3LDE3IEBAIEVOVlsiVFoiXSA9ICJVUy9QYWNpZmljIjsKIGRlZiBydW5CdW5kbGUK
ICAgICByYWlzZSB1bmxlc3MgJGJ1bmRsZQogCi0gICAgY2xlYW5SdW5uZXJEaXJlY3RvcnkKLSAg
ICBjbGVhbk9sZFJlc3VsdHMKLSAgICBydW5UZXN0UnVubmVyCi0gICAgY2xlYW5FbXB0eVJlc3Vs
dEZpbGVzCi1lbmQKLQotZGVmIHJ1bk5vcm1hbAotICAgIHJhaXNlIGlmICRidW5kbGUgb3IgJHRh
cmJhbGwKLQotICAgIHByZXBhcmVCdW5kbGUKLSAgICBwcmVwYXJlVGVzdFJ1bm5lcgotICAgIHJ1
blRlc3RSdW5uZXIKLSAgICBjbGVhbkVtcHR5UmVzdWx0RmlsZXMKLSAgICBkZXRlY3RGYWlsdXJl
cworICAgIHRlc3RSdW5uZXIgPSBUZXN0UnVubmVyLmNyZWF0ZSgkdGVzdFJ1bm5lclR5cGUsICRy
dW5uZXJEaXIpCisgICAgZXZhbHVhdG9yID0gQnVuZGxlVGVzdHNFeGVjdXRvci5uZXcoJHJ1bmxp
c3QsICRzZXJpYWxQbGFucywgSVRFUkFUSU9OX0xJTUlUUywgJHRyZWF0RmFpbGluZ0FzRmxha3ks
IHRlc3RSdW5uZXIpCisgICAgZXZhbHVhdG9yLmxvb3AKIGVuZAogCiBkZWYgcnVuVGFyYmFsbAog
ICAgIHJhaXNlIHVubGVzcyAkdGFyYmFsbAogCi0gICAgcHJlcGFyZUJ1bmRsZSAKLSAgICBwcmVw
YXJlVGVzdFJ1bm5lcgorICAgIHByZXBhcmVCdW5kbGUKKyAgICB0ZXN0UnVubmVyID0gVGVzdFJ1
bm5lci5jcmVhdGUoJHRlc3RSdW5uZXJUeXBlLCAkcnVubmVyRGlyKQorICAgIHRlc3RSdW5uZXIu
cHJlcGFyZSgkcnVubGlzdCwgJHNlcmlhbFBsYW5zLCBTZXQubmV3LCBuaWwpCiAgICAgY29tcHJl
c3NCdW5kbGUKIGVuZAogCkBAIC0yNTgyLDQ0ICsyNjIxLDI4IEBAIGRlZiBmb3JFYWNoUmVtb3Rl
KHJlbW90ZUhvc3RzLCBvcHRpb25zPXt9LCAmYmxrKQogICAgIGxpdmVSZW1vdGVzCiBlbmQKIAot
ZGVmIHJ1blJlbW90ZQotICAgIHJhaXNlIHVubGVzcyAkcmVtb3RlCi0KLSAgICBwcmVwYXJlQnVu
ZGxlCi0gICAgJHJlbW90ZUhvc3RzLmVhY2hfaW5kZXggewotICAgICAgICB8IGluZGV4IHwKLSAg
ICAgICAgcHJlcGFyZVRlc3RSdW5uZXIoaW5kZXgpCi0gICAgfQotICAgIGNvbXByZXNzQnVuZGxl
Ci0gICAgZm9yRWFjaFJlbW90ZSgkcmVtb3RlSG9zdHMpIHsKLSAgICAgICAgfCBpbmRleCB8Ci0g
ICAgICAgIHJ1blRlc3RSdW5uZXIoaW5kZXgpCi0gICAgfQotICAgIGRldGVjdEZhaWx1cmVzCi1l
bmQKLQotZGVmIHByZXBhcmVHbnVQYXJhbGxlbFJ1bm5lckpvYnMobmFtZSwgcnVubGlzdCwgZXhj
bHVkZSkKLSAgICBwYXRoID0gJHJ1bm5lckRpciArIG5hbWUKLSAgICBGaWxlVXRpbHMubWtkaXJf
cCgkcnVubmVyRGlyKQorY2xhc3MgVGVzdFJ1bm5lckdudVBhcmFsbGVsIDwgVGVzdFJ1bm5lcgor
ICAgIGRlZiBwcmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKG5hbWUsIHJ1bmxpc3QsIGNvbXBs
ZXRlZFBsYW5zKQorICAgICAgICBwYXRoID0gQHJ1bm5lckRpciArIG5hbWUKKyAgICAgICAgRmls
ZVV0aWxzLm1rZGlyX3AoQHJ1bm5lckRpcikKIAotICAgIEZpbGUub3BlbihwYXRoLCAidyIpIHsK
LSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgcnVubGlzdC5lYWNoIHsKLSAgICAgICAgICAgIHwg
cGxhbiB8Ci0gICAgICAgICAgICBpZiBleGNsdWRlLmhhc19rZXk/KHBsYW4pCi0gICAgICAgICAg
ICAgICAgbmV4dAotICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBvdXRwLnB1dHMoIi4vdGVz
dF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAgICAgIEZpbGUub3BlbihwYXRoLCAidyIpIHsK
KyAgICAgICAgICAgIHwgb3V0cCB8CisgICAgICAgICAgICBydW5saXN0LmVhY2ggeworICAgICAg
ICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5j
bHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgICAgIG91dHAucHV0cygiLi90ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9
IikKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KKyAgICBlbmQKKyAgICBkZWYgcHJl
cGFyZVJ1bm5lcihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhv
c3RzKQorICAgICAgICBwcmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKCJwYXJhbGxlbC10ZXN0
cyIsIHJ1bmxpc3QsIGNvbXBsZXRlZFBsYW5zIHwgc2VyaWFsUGxhbnMpCisgICAgICAgIHByZXBh
cmVHbnVQYXJhbGxlbFJ1bm5lckpvYnMoInNlcmlhbC10ZXN0cyIsIHNlcmlhbFBsYW5zLCBjb21w
bGV0ZWRQbGFucykKKyAgICBlbmQKIGVuZAogCi1kZWYgcHJlcGFyZUdudVBhcmFsbGVsVGVzdFJ1
bm5lcihleGNsdWRlPXt9KQotICAgIHNlcmlhbFRlc3RzID0ge30KLSAgICAkc2VyaWFsUnVubGlz
dC5lYWNoIHsgfHB8IHNlcmlhbFRlc3RzW3BdID0gbmlsIH0KLSAgICBwcmVwYXJlR251UGFyYWxs
ZWxSdW5uZXJKb2JzKCJwYXJhbGxlbC10ZXN0cyIsICRydW5saXN0LCBleGNsdWRlLm1lcmdlKHNl
cmlhbFRlc3RzKSkKLSAgICBwcmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKCJzZXJpYWwtdGVz
dHMiLCAkc2VyaWFsUnVubGlzdCwgZXhjbHVkZSkKLWVuZAogCiBkZWYgd2l0aEdudVBhcmFsbGVs
U3NoV3JhcHBlcigmYmxrKQogICAgIFRlbXBmaWxlLm9wZW4oJ3NzaC13cmFwcGVyJywgJHJ1bm5l
ckRpcikgewpAQCAtMjczOCwyOCArMjc2MSwxMDQgQEAgZGVmIHJ1bkdudVBhcmFsbGVsUnVubmVy
KHJlbW90ZUhvc3RzLCBpbnB1dHMsIG9wdGlvbnM9e30pCiAgICAgfQogZW5kCiAKLWRlZiBydW5H
bnVQYXJhbGxlbAotICAgIHJhaXNlIHVubGVzcyAkcmVtb3RlCi0gICAgcHJlcGFyZUJ1bmRsZQot
ICAgIHByZXBhcmVUZXN0UnVubmVyCi0gICAgY29tcHJlc3NCdW5kbGUKLSAgICBzdGF0dXNNYXAg
PSB7fQotICAgICMgVGhpcyBpcyBhIGhpZ2gtbGV2ZWwgcmV0cnkgbG9vcC4gSWYgYSByZW1vdGUg
aG9zdCBnb2VzIGF3YXkgaW4KLSAgICAjIHRoZSBtaWRkbGUgb2YgYSBydW4gYW5kIGVpdGhlciBk
b2Vzbid0IGNvbWUgYmFjayBvbmxpbmUgb3IgY29tZXMKLSAgICAjIGJhY2sgaGF2aW5nIHJlbW92
ZWQgdGhlIHJlbW90ZSBkaXJlY3RvcnkgKCopLCBnZXRTdGF0dXNNYXAgd2lsbCBiZQotICAgICMg
bWlzc2luZyByZXN1bHRzIGZvciB0aGVzZSB0ZXN0cywgYWxsb3dpbmcgdXMgdG8gcmV0cnkgdGhl
bSBpbgotICAgICMgdGhlIG5leHQgaXRlcmF0aW9uLgotICAgICMKLSAgICAjICgqKSBUaGlzIG1h
eSB3ZWxsIGhhcHBlbiB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIG9uIGVtYmVkZGVkCi0gICAgIyBi
b2FyZHMgdGhhdCByZWd1bGFybHkgY29ycnVwdCB0aGVpciBTRCBjYXJkLiBEZWZpbml0ZWx5IGFu
IGlzc3VlCi0gICAgIyBmb3IgdGhlIGNpMjAgYm9hcmRzIHVzZWQgdG8gdGVzdCBNSVBTLgotICAg
ICMKLSAgICAjIFRoZSBudW1iZXIgb2YgdHJpZXMgc2NhbGVzIHdpdGggdGhlIG51bWJlciBvZiBy
ZW1vdGVzIGluIHVzZSwKLSAgICAjIHdpdGggYSByZWFzb25hYmxlIGZsb29yLgotICAgIHRyaWVz
ID0gWzMsICRyZW1vdGVIb3N0cy5zaXplIC8gMl0ubWF4Ci0gICAgdHJpZXMudGltZXMgewotICAg
ICAgICB8IGl0ZXJhdGlvbiB8Ci0gICAgICAgIHJlbW90ZUhvc3RzID0gJHJlbW90ZUhvc3RzCisj
IFVuY29uZGl0aW9uYWxseSBydW4gdGhlIHNlbGZ0ZXN0cyBvbiBldmVyeSBleGVjdXRpb24sIHRo
ZXkncmUgcHJldHR5IGNoZWFwLgorRXhlY3V0b3JTZWxmVGVzdHMucnVuCitUZXN0UmVzdWx0RXZh
bHVhdG9yU2VsZlRlc3RzLnJ1bgorCitjbGFzcyBOb25SZW1vdGVUZXN0c0V4ZWN1dG9yIDwgQmFz
ZVRlc3RzRXhlY3V0b3IKKyAgICBkZWYgaW5pdGlhbGl6ZShydW5saXN0LCBzZXJpYWxQbGFucywg
bWF4SXRlcmF0aW9uc0JvdW5kcywgdHJlYXRGYWlsaW5nQXNGbGFreSwgdGVzdFJ1bm5lcikKKyAg
ICAgICAgc3VwZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsCisgICAgICAgICAgICAgIG5pbCwKKyAg
ICAgICAgICAgICAgbWF4SXRlcmF0aW9uc0JvdW5kcywKKyAgICAgICAgICAgICAgdHJlYXRGYWls
aW5nQXNGbGFreQorICAgICAgICAgICAgICkKKyAgICAgICAgQHRlc3RSdW5uZXIgPSB0ZXN0UnVu
bmVyCisgICAgZW5kCisgICAgZGVmIHByZXBhcmVFeGVjdXRpb24ocmVtb3RlSG9zdHMpCisgICAg
ICAgIHJlbW90ZUhvc3RzCisgICAgZW5kCisgICAgZGVmIHJlZnJlc2hFeGVjdXRpb24ocnVubGlz
dCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRlc3RzKQorICAgICAgICBpZiBub3QgQHJlbW90ZUhv
c3RzLm5pbD8KKyAgICAgICAgICAgIHJhaXNlICJyZW1vdGVIb3N0cyAje0ByZW1vdGVIb3N0c30s
IGV4cGVjdGVkIG5pbCIKKyAgICAgICAgZW5kCisgICAgICAgIEB0ZXN0UnVubmVyLnByZXBhcmUo
cnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRlc3RzLCBAcmVtb3RlSG9zdHMpCisgICAg
ZW5kCitlbmQKKworY2xhc3MgTm9ybWFsVGVzdHNFeGVjdXRvciA8IE5vblJlbW90ZVRlc3RzRXhl
Y3V0b3IKKyAgICBkZWYgcHJlcGFyZUFydGlmYWN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAgcmFp
c2UgInJlbW90ZUhvc3RzIG5vdCBuaWwiIHVubGVzcyByZW1vdGVIb3N0cy5uaWw/CisgICAgICAg
IHByZXBhcmVCdW5kbGUKKyAgICAgICAgQHRlc3RSdW5uZXIucHJlcGFyZShAcnVubGlzdCwgQHNl
cmlhbFBsYW5zLCBTZXQubmV3LCBuaWwpCisgICAgZW5kCisgICAgZGVmIGV4ZWN1dGVUZXN0cyhy
ZW1vdGVIb3N0cykKKyAgICAgICAgcnVuVGVzdFJ1bm5lcihAdGVzdFJ1bm5lciwgbmlsLCBuaWwp
CisgICAgICAgIGNsZWFuRW1wdHlSZXN1bHRGaWxlcworICAgIGVuZAorICAgIGRlZiB1cGRhdGVT
dGF0dXNNYXAoaXRlcmF0aW9uLCBzdGF0dXNNYXApCisgICAgICAgIHJldHVybiBnZXRTdGF0dXNN
YXAoc3RhdHVzTWFwKQorICAgIGVuZAorZW5kCisKK2NsYXNzIEJ1bmRsZVRlc3RzRXhlY3V0b3Ig
PCBOb25SZW1vdGVUZXN0c0V4ZWN1dG9yCisgICAgZGVmIHByZXBhcmVBcnRpZmFjdHMocmVtb3Rl
SG9zdHMpCisgICAgICAgIHJhaXNlICJyZW1vdGVIb3N0cyBub3QgbmlsIiB1bmxlc3MgcmVtb3Rl
SG9zdHMubmlsPworICAgICAgICBjbGVhblJ1bm5lckRpcmVjdG9yeQorICAgICAgICBjbGVhbk9s
ZFJlc3VsdHMKKyAgICBlbmQKKyAgICBkZWYgZXhlY3V0ZVRlc3RzKHJlbW90ZUhvc3RzKQorICAg
ICAgICBydW5UZXN0UnVubmVyKEB0ZXN0UnVubmVyLCBuaWwsIG5pbCkKKyAgICAgICAgY2xlYW5F
bXB0eVJlc3VsdEZpbGVzCisgICAgZW5kCisgICAgZGVmIHVwZGF0ZVN0YXR1c01hcChpdGVyYXRp
b24sIHN0YXR1c01hcCkKKyAgICAgICAgcmV0dXJuIGdldFN0YXR1c01hcChzdGF0dXNNYXApCisg
ICAgZW5kCitlbmQKKworY2xhc3MgQmFzZVJlbW90ZVRlc3RzRXhlY3V0b3IgPCBCYXNlVGVzdHNF
eGVjdXRvcgorICAgIGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCByZW1vdGVI
b3N0cywgaXRlcmF0aW9uTGltaXRzLAorICAgICAgICAgICAgICAgICAgIHRyZWF0RmFpbGluZ0Fz
Rmxha3ksIHRlc3RSdW5uZXIpCisgICAgICAgIHN1cGVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBy
ZW1vdGVIb3N0cywgaXRlcmF0aW9uTGltaXRzLCB0cmVhdEZhaWxpbmdBc0ZsYWt5KQorICAgICAg
ICBAdGVzdFJ1bm5lciA9IHRlc3RSdW5uZXIKKyAgICBlbmQKKyAgICBkZWYgdXBkYXRlU3RhdHVz
TWFwKGl0ZXJhdGlvbiwgc3RhdHVzTWFwKQorICAgICAgICByZXR1cm4gZ2V0U3RhdHVzTWFwKHN0
YXR1c01hcCkKKyAgICBlbmQKKyAgICBkZWYgcmVmcmVzaEV4ZWN1dGlvbihydW5saXN0LCBzZXJp
YWxQbGFucywgY29tcGxldGVkVGVzdHMpCisgICAgICAgICMgTm90ZSwgd2hlbiBydW5uaW5nIHRl
c3RzIHJlbW90ZWx5LCB3ZSBhbHdheXMgcHJlcGFyZSB0ZXN0cworICAgICAgICAjIGZvciBhbGwg
dGhlIGhvc3RzIHdoZW4gcmVmcmVzaGluZyBleGVjdXRpb24sIGFzIGV2ZW4gaG9zdHMKKyAgICAg
ICAgIyB0aGF0IHdlbnQgYXdheSBkdXJpbmcgdGVzdGluZyBtYXkgaGF2ZSBjb21lIGJhY2sgb25s
aW5lIGluCisgICAgICAgICMgdGhlIG1lYW50aW1lIC0tIHNvIHdlIGRvbid0IGV4cGVjdCBhIGxp
c3Qgb2YgbGl2ZSByZW1vdGUKKyAgICAgICAgIyBob3N0cyB0byBiZSBwYXNzZWQgaW4uCisgICAg
ICAgIEB0ZXN0UnVubmVyLnByZXBhcmUocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRl
c3RzLCBAcmVtb3RlSG9zdHMpCisgICAgZW5kCitlbmQKKworY2xhc3MgUmVtb3RlVGVzdHNFeGVj
dXRvciA8IEJhc2VSZW1vdGVUZXN0c0V4ZWN1dG9yCisgICAgZGVmIHByZXBhcmVBcnRpZmFjdHMo
cmVtb3RlSG9zdHMpCisgICAgICAgIHJhaXNlICJyZW1vdGVIb3N0cyBuaWwiIGlmIHJlbW90ZUhv
c3RzLm5pbD8KKyAgICAgICAgcHJlcGFyZUJ1bmRsZQorICAgICAgICBAdGVzdFJ1bm5lci5wcmVw
YXJlKEBydW5saXN0LCBAc2VyaWFsUGxhbnMsIFNldC5uZXcsIHJlbW90ZUhvc3RzKQorICAgICAg
ICBjb21wcmVzc0J1bmRsZQorICAgIGVuZAorICAgIGRlZiBwcmVwYXJlRXhlY3V0aW9uKHJlbW90
ZUhvc3RzKQorICAgICAgICByZW1vdGVIb3N0cworICAgIGVuZAorICAgIGRlZiBleGVjdXRlVGVz
dHMocmVtb3RlSG9zdHMpCisgICAgICAgIGZvckVhY2hSZW1vdGUocmVtb3RlSG9zdHMpIHsKKyAg
ICAgICAgICAgIHwgaW5kZXggfAorICAgICAgICAgICAgcnVuVGVzdFJ1bm5lcihAdGVzdFJ1bm5l
ciwgcmVtb3RlSG9zdHMsIGluZGV4KQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3Mg
R251UGFyYWxsZWxUZXN0c0V4ZWN1dG9yIDwgQmFzZVJlbW90ZVRlc3RzRXhlY3V0b3IKKyAgICBk
ZWYgcHJlcGFyZUFydGlmYWN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAgcHJlcGFyZUJ1bmRsZQor
ICAgICAgICBAdGVzdFJ1bm5lci5wcmVwYXJlKEBydW5saXN0LCBAc2VyaWFsUGxhbnMsIFNldC5u
ZXcsIHJlbW90ZUhvc3RzKQorICAgICAgICBjb21wcmVzc0J1bmRsZQorICAgIGVuZAorICAgIGRl
ZiBwcmVwYXJlRXhlY3V0aW9uKHJlbW90ZUhvc3RzKQogICAgICAgICAjIElmIHRoZSBwcmVwYXJh
dG9yeSBzdGVwcyBmYWlsLCBkcm9wIHRoZSByZW1vdGUgaG9zdCBmcm9tIG91cgogICAgICAgICAj
IGxpc3QuIE90aGVyd2lzZSwgaWYgaXQgY29tZXMgYmFjayBvbmxpbmUgaW4gdGhlIG1pZGRsZSBv
ZiBhbgogICAgICAgICAjIGl0ZXJhdGlvbiwgd2UnbGwgdHJ5IHRvIHJ1biB0ZXN0IGpvYnMgb24g
aXQsIHBvc3NpYmx5IHVzaW5nCkBAIC0yNzY5LDMwICsyODY4LDQzIEBAIGRlZiBydW5HbnVQYXJh
bGxlbAogICAgICAgICAgICAgZ2V0UmVtb3RlRGlyZWN0b3J5SWZOZWVkZWQocmVtb3RlSG9zdCkK
ICAgICAgICAgICAgIGNvcHlCdW5kbGVUb1JlbW90ZShyZW1vdGVIb3N0KQogICAgICAgICB9Ci0g
ICAgICAgIHJlbW90ZUhvc3RzID0gdW5wYWNrQnVuZGxlR251UGFyYWxsZWwocmVtb3RlSG9zdHMp
Ci0gICAgICAgIGlmIHJlbW90ZUhvc3RzLnNpemUgPT0gMAotICAgICAgICAgICAgIyBFaXRoZXIg
ZXZlcnl0aGluZyBpcyBkb3duLCBvciBldmVyeXRoaW5nIGdvdAotICAgICAgICAgICAgIyByZWJv
b3RlZC4gSW4gdGhlIGxhdHRlciBjYXNlLCBhbGxvdyBlbm91Z2ggdGltZSBmb3IgdGhlCi0gICAg
ICAgICAgICAjIHJlbW90ZSBib2FyZHMgdG8gYm9vdCB1cCwgdGhlbiByZXRyeS4KLSAgICAgICAg
ICAgIHdhaXRJbnRlcnZhbCA9IDYwCi0gICAgICAgICAgICAkc3RkZXJyLnB1dHMoIkFsbCByZW1v
dGUgaG9zdHMgZmFpbGVkLCByZXRyeWluZyBhZnRlciAje3dhaXRJbnRlcnZhbH1zIikKLSAgICAg
ICAgICAgIHNsZWVwKHdhaXRJbnRlcnZhbCkKLSAgICAgICAgICAgIG5leHQKLSAgICAgICAgZW5k
Ci0KKyAgICAgICAgcmV0dXJuIHVucGFja0J1bmRsZUdudVBhcmFsbGVsKHJlbW90ZUhvc3RzKQor
ICAgIGVuZAorICAgIGRlZiBleGVjdXRlVGVzdHMocmVtb3RlSG9zdHMpCiAgICAgICAgIHJ1bkdu
dVBhcmFsbGVsUnVubmVyKHJlbW90ZUhvc3RzLCAkcnVubmVyRGlyICsgInNlcmlhbC10ZXN0cyIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgOnBhcmFsbGVsSm9ic09uRWFjaEhvc3Qg
PT4gMX0pCiAgICAgICAgIHJ1bkdudVBhcmFsbGVsUnVubmVyKHJlbW90ZUhvc3RzLCAkcnVubmVy
RGlyICsgInBhcmFsbGVsLXRlc3RzIikKLSAgICAgICAgc3RhdHVzTWFwID0gZ2V0U3RhdHVzTWFw
KHN0YXR1c01hcCkKLSAgICAgICAgY29tcGxldGVkVGVzdHMgPSBnZXRDb21wbGV0ZWRUZXN0c0Zy
b21TdGF0dXNNYXAoc3RhdHVzTWFwKQotICAgICAgICBicmVhayB1bmxlc3MgY29tcGxldGVkVGVz
dHMuc2l6ZSAhPSAkcnVubGlzdC5zaXplCi0gICAgICAgIGlmIGNvbXBsZXRlZFRlc3RzLnNpemUg
PiAkcnVubGlzdC5zaXplCi0gICAgICAgICAgICByYWlzZSAiVGVzdCBjb3VudCBtaXNtYXRjaDog
I3tjb21wbGV0ZWRUZXN0cy5zaXplfSA+ICN7JHJ1bmxpc3Quc2l6ZX0iCi0gICAgICAgIGVuZAot
ICAgICAgICAjIFJlZ2VuZXJhdGUgdGhlIGxpc3RzIG9mIHRlc3RzIHRvIHJ1bgotICAgICAgICBw
cmVwYXJlR251UGFyYWxsZWxUZXN0UnVubmVyKGNvbXBsZXRlZFRlc3RzKQotICAgICAgICAkc3Rk
ZXJyLnB1dHMoIkFmdGVyIHRyeSAje2l0ZXJhdGlvbiArIDF9LyN7dHJpZXN9OiBnb3QgcmVzdWx0
cyBmb3IgI3tjb21wbGV0ZWRUZXN0cy5zaXplfS8jeyRydW5saXN0LnNpemV9IHRlc3RzLCAje3Jl
bW90ZUhvc3RzLnNpemV9LyN7JHJlbW90ZUhvc3RzLnNpemV9IGhvc3RzIGxpdmUiKQotICAgIH0K
KyAgICBlbmQKK2VuZAorCitkZWYgcnVuTm9ybWFsCisgICAgcmFpc2UgaWYgJGJ1bmRsZSBvciAk
dGFyYmFsbAorCisgICAgdGVzdFJ1bm5lciA9IFRlc3RSdW5uZXIuY3JlYXRlKCR0ZXN0UnVubmVy
VHlwZSwgJHJ1bm5lckRpcikKKyAgICBldmFsdWF0b3IgPSBOb3JtYWxUZXN0c0V4ZWN1dG9yLm5l
dygkcnVubGlzdCwgJHNlcmlhbFBsYW5zLCBJVEVSQVRJT05fTElNSVRTLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0UnVu
bmVyKQorICAgIHN0YXR1c01hcCA9IGV2YWx1YXRvci5sb29wCisgICAgZGV0ZWN0RmFpbHVyZXMo
c3RhdHVzTWFwKQorCitlbmQKKworZGVmIHJ1blJlbW90ZQorICAgIHJhaXNlIHVubGVzcyAkcmVt
b3RlCisKKyAgICB0ZXN0UnVubmVyID0gVGVzdFJ1bm5lci5jcmVhdGUoJHRlc3RSdW5uZXJUeXBl
LCAkcnVubmVyRGlyKQorICAgIGV4ZWN1dG9yID0gUmVtb3RlVGVzdHNFeGVjdXRvci5uZXcoJHJ1
bmxpc3QsICRzZXJpYWxQbGFucywgJHJlbW90ZUhvc3RzLCBJVEVSQVRJT05fTElNSVRTLCAkdHJl
YXRGYWlsaW5nQXNGbGFreSwgdGVzdFJ1bm5lcikKKyAgICBzdGF0dXNNYXAgPSBleGVjdXRvci5s
b29wCisgICAgZGV0ZWN0RmFpbHVyZXMoc3RhdHVzTWFwKQorZW5kCisKK2RlZiBydW5HbnVQYXJh
bGxlbAorICAgIHJhaXNlICJDYW4gb25seSB1c2UgLS1nbnUtcGFyYWxsZWwtcnVubmVyIHdpdGgg
LS1yZW1vdGUqIiB1bmxlc3MgJHJlbW90ZQorICAgIHJhaXNlICJDYW4gb25seSB1c2UgLS1nbnUt
cGFyYWxsZWwtcnVubmVyIHdpdGggdGhlIGRlZmF1bHQgd3JpdGVyIiB1bmxlc3MgJHRlc3RXcml0
ZXIgPT0gImRlZmF1bHQiCisgICAgdGVzdFJ1bm5lciA9IFRlc3RSdW5uZXIuY3JlYXRlKCR0ZXN0
UnVubmVyVHlwZSwgJHJ1bm5lckRpcikKKyAgICBleGVjdXRvciA9IEdudVBhcmFsbGVsVGVzdHNF
eGVjdXRvci5uZXcoJHJ1bmxpc3QsICRzZXJpYWxQbGFucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJHJlbW90ZUhvc3RzLCBJVEVSQVRJT05fTElNSVRTLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHJlYXRGYWlsaW5n
QXNGbGFreSwgdGVzdFJ1bm5lcikKKyAgICBzdGF0dXNNYXAgPSBleGVjdXRvci5sb29wCiAgICAg
ZGV0ZWN0RmFpbHVyZXMoc3RhdHVzTWFwKQogZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLWRlZmF1bHQucmIgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1kZWZhdWx0LnJiCmluZGV4
IGQ2MWI3MWRhMDBlMWZkYWM5ZGY5ZGQyNTllMGJlNjYwNGM3YjcxM2EuLjM5ZjFkYjA3MmZhMDEw
ZmQ1ZGQ1MTllNjQ4ZjNiYWI3ZGFmZTFhYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLWRlZmF1bHQucmIKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVmYXVsdC5yYgpAQCAtMjIw
LDI1ICsyMjAsNyBAQCBkZWYgY2hha3JhUGFzc0ZhaWxFcnJvckhhbmRsZXIKICAgICB9CiBlbmQK
IAotY2xhc3MgUGxhbgotICAgIGF0dHJfcmVhZGVyIDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpm
YW1pbHksIDpuYW1lLCA6b3V0cHV0SGFuZGxlciwgOmVycm9ySGFuZGxlciwgOmFkZGl0aW9uYWxF
bnYKLSAgICBhdHRyX2FjY2Vzc29yIDppbmRleAotICAgIAotICAgIGRlZiBpbml0aWFsaXplKGRp
cmVjdG9yeSwgYXJndW1lbnRzLCBmYW1pbHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFu
ZGxlcikKLSAgICAgICAgQGRpcmVjdG9yeSA9IGRpcmVjdG9yeQotICAgICAgICBAYXJndW1lbnRz
ID0gYXJndW1lbnRzCi0gICAgICAgIEBmYW1pbHkgPSBmYW1pbHkKLSAgICAgICAgQG5hbWUgPSBu
YW1lCi0gICAgICAgIEBvdXRwdXRIYW5kbGVyID0gb3V0cHV0SGFuZGxlcgotICAgICAgICBAZXJy
b3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyCi0gICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5k
T3B0aW9uc1s6aXNTbG93XQotICAgICAgICBAY3Jhc2hPSyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25z
WzpjcmFzaE9LXQotICAgICAgICBpZiBAY3Jhc2hPSwotICAgICAgICAgICAgQG91dHB1dEhhbmRs
ZXIgPSBub2lzeU91dHB1dEhhbmRsZXIKLSAgICAgICAgZW5kCi0gICAgICAgIEBhZGRpdGlvbmFs
RW52ID0gW10KLSAgICBlbmQKLSAgICAKK2NsYXNzIFBsYW4gPCBCYXNlUGxhbgogICAgIGRlZiBz
aGVsbENvbW1hbmQKICAgICAgICAgIyBJdCdzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGF0IHRo
ZSB0ZXN0IGlzIGFjdHVhbGx5IHJ1biBpbiBhIHN1YnNoZWxsLCBzbyBpZiB3ZSBjaGFuZ2UgZGly
ZWN0b3J5CiAgICAgICAgICMgaW4gdGhlIHN1YnNoZWxsIHdoZW4gd2UgcmV0dXJuIHdlIHdpbGwg
YmUgaW4gb3VyIG9yaWdpbmFsIGRpcmVjdG9yeS4gVGhpcyBpcyBuaWNlIGJlY2F1c2Ugd2UgZG9u
J3QKQEAgLTM0NSwxMTEgKzMyNywxMzcgQEAgY2xhc3MgUGxhbgogICAgIGVuZAogZW5kCiAKLWRl
ZiBwcmVwYXJlU2hlbGxUZXN0UnVubmVyCi0gICAgRmlsZVV0aWxzLmNwIFNDUklQVFNfUEFUSCAr
ICJqc2Mtc3RyZXNzLXRlc3QtaGVscGVycyIgKyAic2hlbGwtcnVubmVyLnNoIiwgJHJ1bm5lckRp
ciArICJydW5zY3JpcHQiCitjbGFzcyBUZXN0UnVubmVyU2hlbGwgPCBUZXN0UnVubmVyCisgICAg
ZGVmIGluaXRpYWxpemUodGVzdFJ1bm5lclR5cGUsIHJ1bm5lckRpcikKKyAgICAgICAgc3VwZXIo
dGVzdFJ1bm5lclR5cGUsIHJ1bm5lckRpcikKKyAgICAgICAgQHRlc3RMaXN0UGF0aCA9IHJ1bm5l
ckRpciArICd0ZXN0bGlzdCcKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0
LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBGaWxl
VXRpbHMuY3AgU0NSSVBUU19QQVRIICsgImpzYy1zdHJlc3MtdGVzdC1oZWxwZXJzIiArICJzaGVs
bC1ydW5uZXIuc2giLCBAcnVubmVyRGlyICsgInJ1bnNjcmlwdCIKKyAgICAgICAgRmlsZS5vcGVu
KEB0ZXN0TGlzdFBhdGgsICJ3IikgeyB8ZnwKKyAgICAgICAgICAgIHJ1bmxpc3QuZWFjaCB7IHxw
bGFufAorICAgICAgICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisg
ICAgICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgICBmLnB1dHMoInRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iKQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgZW5kCisgICAgZGVmIGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAgICAg
ICAgInNoIHJ1bnNjcmlwdCAje0ZpbGUuYmFzZW5hbWUoQHRlc3RMaXN0UGF0aCl9IgorICAgIGVu
ZAogZW5kCiAKLWRlZiBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIHByZXJlcXMpCi0gICAgaW5k
ZXggPSBwbGFuLmluZGV4Ci0gICAgdGFyZ2V0ID0gInRlc3RfZG9uZV8je2luZGV4fSIKLSAgICBv
dXRwLnB1dHMgIiN7dGFyZ2V0fTogI3twcmVyZXFzLmpvaW4oIiAiKX0iCi0gICAgb3V0cC5wdXRz
ICJcdHNoIHRlc3Rfc2NyaXB0XyN7aW5kZXh9IgotICAgIHRhcmdldAotZW5kCitjbGFzcyBUZXN0
UnVubmVyTWFrZSA8IFRlc3RSdW5uZXIKKyAgICBkZWYgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFu
LCBwcmVyZXFzKQorICAgICAgICBpbmRleCA9IHBsYW4uaW5kZXgKKyAgICAgICAgdGFyZ2V0ID0g
InRlc3RfZG9uZV8je2luZGV4fSIKKyAgICAgICAgb3V0cC5wdXRzICIje3RhcmdldH06ICN7cHJl
cmVxcy5qb2luKCIgIil9IgorICAgICAgICBvdXRwLnB1dHMgIlx0c2ggdGVzdF9zY3JpcHRfI3tp
bmRleH0iCisgICAgICAgIHRhcmdldAorICAgIGVuZAorICAgIGRlZiBwcmVwYXJlUnVubmVyRm9y
UmVtb3RlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSW5kZXgp
CisgICAgICAgICMgVGhlIGdvYWxzIG9mIG91ciBwYXJhbGxlbCB0ZXN0IHJ1bm5lciBhcmUgc2Nh
bGFiaWxpdHkgYW5kIHNpbXBsaWNpdHkuIFRoZQorICAgICAgICAjIHNpbXBsaWNpdHkgcGFydCBp
cyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50LiBXZSBkb24ndCB3YW50IHRvIGhhdmUgdG8gaGF2ZQor
ICAgICAgICAjIGEgZnVsbC10aW1lIGNvbnRyaWJ1dG9yIGp1c3QgcGhpbG9zb3BoaXNpbmcgYWJv
dXQgcGFyYWxsZWwgdGVzdGluZy4KKyAgICAgICAgIworICAgICAgICAjIEFzIHN1Y2gsIHdlIGp1
c3QgcGFzcyBvZmYgYWxsIG9mIHRoZSBoYXJkIHdvcmsgdG8gJ21ha2UnLiBUaGlzCisgICAgICAg
ICMgY3JlYXRlcyBhIGR1bW15IGRpcmVjdG9yeSAoIiRvdXRwdXREaXIvLnJ1bm5lciIpIGluIHdo
aWNoIHdlCisgICAgICAgICMgY3JlYXRlIGEgZHVtbXkgTWFrZWZpbGUuIFRoZSBNYWtlZmlsZSBo
YXMgYSAncGFyYWxsZWwnIHJ1bGUgdGhhdAorICAgICAgICAjIGRlcGVuZHMgYWxsIHRlc3RzLCBv
dGhlciB0aGFuIHRoZSBvbmVzIG1hcmtlZCAnc2VyaWFsJy4gVGhlCisgICAgICAgICMgc2VyaWFs
IHRlc3RzIGFyZSBhcnJhbmdlZCBpbiBhIGNoYWluOyB0aGUgbGFzdCB0YXJnZXQgaW4gdGhlCisg
ICAgICAgICMgc2VyaWFsIGNoYWluIGRlcGVuZHMgb24gJ3BhcmFsbGVsJyBhbmQgJ2FsbCcgZGVw
ZW5kcyBvbiB0aGUgaGVhZAorICAgICAgICAjIG9mIHRoZSBjaGFpbi4gUnVubmluZyAnbWFrZSAt
aiA8d2hhdGV2ZXI+JyBvbiB0aGlzIE1ha2VmaWxlCisgICAgICAgICMgcmVzdWx0cyBpbiAnbWFr
ZScgZG9pbmcgYWxsIG9mIHRoZSBoYXJkIHdvcms6CisgICAgICAgICMKKyAgICAgICAgIyAtIExv
YWQgYmFsYW5jaW5nIGp1c3Qgd29ya3MuIE1vc3Qgc3lzdGVtcyBoYXZlIGEgZ3JlYXQgbG9hZCBi
YWxhbmNlciBpbgorICAgICAgICAjICAgJ21ha2UnLiBJZiB5b3VyIHN5c3RlbSBkb2Vzbid0IHRo
ZW4ganVzdCBpbnN0YWxsIGEgcmVhbCAnbWFrZScuCisgICAgICAgICMKKyAgICAgICAgIyAtIElu
dGVycnVwdGlvbnMganVzdCB3b3JrLiBGb3IgZXhhbXBsZSBDdHJsLUMgaGFuZGxpbmcgaW4gJ21h
a2UnIGlzCisgICAgICAgICMgICBleGFjdGx5IHJpZ2h0LiBZb3UgZG9uJ3QgaGF2ZSB0byB3b3Jy
eSBhYm91dCB6b21iaWUgcHJvY2Vzc2VzLgorICAgICAgICAjCisgICAgICAgICMgV2UgdGhlbiBk
byBzb21lIHRyaWNrcyB0byBtYWtlIGZhaWx1cmUgZGV0ZWN0aW9uIHdvcmsgYW5kIHRvIG1ha2Ug
dGhpcworICAgICAgICAjIHRvdGFsbHkgc291bmQuIElmIGEgdGVzdCBmYWlscywgd2UgZG9uJ3Qg
d2FudCB0aGUgd2hvbGUgJ21ha2UnIGpvYiB0bworICAgICAgICAjIHN0b3AuIFdlIGFsc28gZG9u
J3QgaGF2ZSBhbnkgZmFjaWxpdHkgZm9yIG1ha2VmaWxlLWVzY2FwaW5nIG9mIHBhdGggbmFtZXMu
CisgICAgICAgICMgV2UgZG8gaGF2ZSBzdWNoIGEgdGhpbmcgZm9yIHNoZWxsLWVzY2FwaW5nLCB0
aG91Z2guIFdlIGZpeCBib3RoIHByb2JsZW1zCisgICAgICAgICMgYnkgaGF2aW5nIHRoZSBhY3R1
YWwgd29yayBmb3IgZWFjaCBvZiB0aGUgdGVzdCBydWxlcyBiZSBkb25lIGluIGEgc2hlbGwKKyAg
ICAgICAgIyBzY3JpcHQgb24gdGhlIHNpZGUuIFRoZXJlIGlzIG9uZSBzdWNoIHNjcmlwdCBwZXIg
dGVzdC4gVGhlIHNjcmlwdCByZXNwb25kcworICAgICAgICAjIHRvIGZhaWx1cmUgYnkgcHJpbnRp
bmcgc29tZXRoaW5nIG9uIHRoZSBjb25zb2xlIGFuZCB0aGVuIHRvdWNoaW5nIGEKKyAgICAgICAg
IyBmYWlsdXJlIGZpbGUgZm9yIHRoYXQgdGVzdCwgYnV0IHRoZW4gc3RpbGwgcmV0dXJucyAwLiBU
aGlzIG1ha2VzICdtYWtlJworICAgICAgICAjIGNvbnRpbnVlIHBhc3QgdGhhdCBmYWlsdXJlIGFu
ZCBjb21wbGV0ZSBhbGwgdGhlIHRlc3RzIGFueXdheS4KKyAgICAgICAgIworICAgICAgICAjIElu
IHRoZSBlbmQsIHRoaXMgc2NyaXB0IGNvbGxlY3RzIGFsbCBvZiB0aGUgZmFpbHVyZXMgYnkgc2Vh
cmNoaW5nIGZvcgorICAgICAgICAjIGZpbGVzIGluIHRoZSAucnVubmVyIGRpcmVjdG9yeSB3aG9z
ZSBuYW1lIG1hdGNoZXMgL150ZXN0X2ZhaWxfLywgd2hlcmUKKyAgICAgICAgIyB0aGUgdGhpbmcg
YWZ0ZXIgdGhlICdmYWlsXycgaXMgdGhlIHRlc3QgaW5kZXguIFRob3NlIGFyZSB0aGUgZmlsZXMg
dGhhdAorICAgICAgICAjIHdvdWxkIGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0
aGV5IGRldGVjdCBmYWlsdXJlLiBXZSdyZQorICAgICAgICAjIGJhc2ljYWxseSB1c2luZyB0aGUg
ZmlsZXN5c3RlbSBhcyBhIGNvbmN1cnJlbnQgZGF0YWJhc2Ugb2YgdGVzdCBmYWlsdXJlcy4KKyAg
ICAgICAgIyBFdmVuIGlmIHR3byB0ZXN0cyBmYWlsIGF0IHRoZSBzYW1lIHRpbWUsIHNpbmNlIHRo
ZXkncmUgdG91Y2hpbmcgZGlmZmVyZW50CisgICAgICAgICMgZmlsZXMgd2Ugd29uJ3QgbWlzcyBh
bnkgZmFpbHVyZXMuCisgICAgICAgIHJ1blBsYW5zID0gW10KKyAgICAgICAgc2VyaWFsUnVuUGxh
bnMgPSBbXQorICAgICAgICBydW5saXN0LmVhY2ggeworICAgICAgICAgICAgfCBwbGFuIHwKKyAg
ICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAg
ICAgbmV4dAorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBpZiBAcmVtb3RlSG9zdHMubmls
PyBvciBwbGFuLmluZGV4ICUgQHJlbW90ZUhvc3RzLmxlbmd0aCA9PSByZW1vdGVJbmRleAorICAg
ICAgICAgICAgICAgIGlmIHNlcmlhbFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAg
ICAgICAgIHNlcmlhbFJ1blBsYW5zIDw8IHBsYW4KKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHJ1blBsYW5zIDw8IHBsYW4KKyAgICAgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICB9CiAKLWRlZiBwcmVwYXJlTWFrZVRlc3RSdW5uZXIocmVt
b3RlSW5kZXgpCi0gICAgIyBUaGUgZ29hbHMgb2Ygb3VyIHBhcmFsbGVsIHRlc3QgcnVubmVyIGFy
ZSBzY2FsYWJpbGl0eSBhbmQgc2ltcGxpY2l0eS4gVGhlCi0gICAgIyBzaW1wbGljaXR5IHBhcnQg
aXMgcGFydGljdWxhcmx5IGltcG9ydGFudC4gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGhhdmUK
LSAgICAjIGEgZnVsbC10aW1lIGNvbnRyaWJ1dG9yIGp1c3QgcGhpbG9zb3BoaXNpbmcgYWJvdXQg
cGFyYWxsZWwgdGVzdGluZy4KLSAgICAjCi0gICAgIyBBcyBzdWNoLCB3ZSBqdXN0IHBhc3Mgb2Zm
IGFsbCBvZiB0aGUgaGFyZCB3b3JrIHRvICdtYWtlJy4gVGhpcwotICAgICMgY3JlYXRlcyBhIGR1
bW15IGRpcmVjdG9yeSAoIiRvdXRwdXREaXIvLnJ1bm5lciIpIGluIHdoaWNoIHdlCi0gICAgIyBj
cmVhdGUgYSBkdW1teSBNYWtlZmlsZS4gVGhlIE1ha2VmaWxlIGhhcyBhICdwYXJhbGxlbCcgcnVs
ZSB0aGF0Ci0gICAgIyBkZXBlbmRzIGFsbCB0ZXN0cywgb3RoZXIgdGhhbiB0aGUgb25lcyBtYXJr
ZWQgJ3NlcmlhbCcuIFRoZQotICAgICMgc2VyaWFsIHRlc3RzIGFyZSBhcnJhbmdlZCBpbiBhIGNo
YWluOyB0aGUgbGFzdCB0YXJnZXQgaW4gdGhlCi0gICAgIyBzZXJpYWwgY2hhaW4gZGVwZW5kcyBv
biAncGFyYWxsZWwnIGFuZCAnYWxsJyBkZXBlbmRzIG9uIHRoZSBoZWFkCi0gICAgIyBvZiB0aGUg
Y2hhaW4uIFJ1bm5pbmcgJ21ha2UgLWogPHdoYXRldmVyPicgb24gdGhpcyBNYWtlZmlsZQotICAg
ICMgcmVzdWx0cyBpbiAnbWFrZScgZG9pbmcgYWxsIG9mIHRoZSBoYXJkIHdvcms6Ci0gICAgIwot
ICAgICMgLSBMb2FkIGJhbGFuY2luZyBqdXN0IHdvcmtzLiBNb3N0IHN5c3RlbXMgaGF2ZSBhIGdy
ZWF0IGxvYWQgYmFsYW5jZXIgaW4KLSAgICAjICAgJ21ha2UnLiBJZiB5b3VyIHN5c3RlbSBkb2Vz
bid0IHRoZW4ganVzdCBpbnN0YWxsIGEgcmVhbCAnbWFrZScuCi0gICAgIwotICAgICMgLSBJbnRl
cnJ1cHRpb25zIGp1c3Qgd29yay4gRm9yIGV4YW1wbGUgQ3RybC1DIGhhbmRsaW5nIGluICdtYWtl
JyBpcwotICAgICMgICBleGFjdGx5IHJpZ2h0LiBZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91
dCB6b21iaWUgcHJvY2Vzc2VzLgotICAgICMKLSAgICAjIFdlIHRoZW4gZG8gc29tZSB0cmlja3Mg
dG8gbWFrZSBmYWlsdXJlIGRldGVjdGlvbiB3b3JrIGFuZCB0byBtYWtlIHRoaXMKLSAgICAjIHRv
dGFsbHkgc291bmQuIElmIGEgdGVzdCBmYWlscywgd2UgZG9uJ3Qgd2FudCB0aGUgd2hvbGUgJ21h
a2UnIGpvYiB0bwotICAgICMgc3RvcC4gV2UgYWxzbyBkb24ndCBoYXZlIGFueSBmYWNpbGl0eSBm
b3IgbWFrZWZpbGUtZXNjYXBpbmcgb2YgcGF0aCBuYW1lcy4KLSAgICAjIFdlIGRvIGhhdmUgc3Vj
aCBhIHRoaW5nIGZvciBzaGVsbC1lc2NhcGluZywgdGhvdWdoLiBXZSBmaXggYm90aCBwcm9ibGVt
cwotICAgICMgYnkgaGF2aW5nIHRoZSBhY3R1YWwgd29yayBmb3IgZWFjaCBvZiB0aGUgdGVzdCBy
dWxlcyBiZSBkb25lIGluIGEgc2hlbGwKLSAgICAjIHNjcmlwdCBvbiB0aGUgc2lkZS4gVGhlcmUg
aXMgb25lIHN1Y2ggc2NyaXB0IHBlciB0ZXN0LiBUaGUgc2NyaXB0IHJlc3BvbmRzCi0gICAgIyB0
byBmYWlsdXJlIGJ5IHByaW50aW5nIHNvbWV0aGluZyBvbiB0aGUgY29uc29sZSBhbmQgdGhlbiB0
b3VjaGluZyBhCi0gICAgIyBmYWlsdXJlIGZpbGUgZm9yIHRoYXQgdGVzdCwgYnV0IHRoZW4gc3Rp
bGwgcmV0dXJucyAwLiBUaGlzIG1ha2VzICdtYWtlJwotICAgICMgY29udGludWUgcGFzdCB0aGF0
IGZhaWx1cmUgYW5kIGNvbXBsZXRlIGFsbCB0aGUgdGVzdHMgYW55d2F5LgotICAgICMKLSAgICAj
IEluIHRoZSBlbmQsIHRoaXMgc2NyaXB0IGNvbGxlY3RzIGFsbCBvZiB0aGUgZmFpbHVyZXMgYnkg
c2VhcmNoaW5nIGZvcgotICAgICMgZmlsZXMgaW4gdGhlIC5ydW5uZXIgZGlyZWN0b3J5IHdob3Nl
IG5hbWUgbWF0Y2hlcyAvXnRlc3RfZmFpbF8vLCB3aGVyZQotICAgICMgdGhlIHRoaW5nIGFmdGVy
IHRoZSAnZmFpbF8nIGlzIHRoZSB0ZXN0IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQK
LSAgICAjIHdvdWxkIGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0aGV5IGRldGVj
dCBmYWlsdXJlLiBXZSdyZQotICAgICMgYmFzaWNhbGx5IHVzaW5nIHRoZSBmaWxlc3lzdGVtIGFz
IGEgY29uY3VycmVudCBkYXRhYmFzZSBvZiB0ZXN0IGZhaWx1cmVzLgotICAgICMgRXZlbiBpZiB0
d28gdGVzdHMgZmFpbCBhdCB0aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5nIGRp
ZmZlcmVudAotICAgICMgZmlsZXMgd2Ugd29uJ3QgbWlzcyBhbnkgZmFpbHVyZXMuCi0gICAgc2Vy
aWFsUGxhbnMgPSB7fQotICAgICRzZXJpYWxSdW5saXN0LmVhY2ggeyB8cHwgc2VyaWFsUGxhbnNb
cF0gPSBuaWwgfQotICAgIHJ1blBsYW5zID0gW10KLSAgICBzZXJpYWxSdW5QbGFucyA9IFtdCi0g
ICAgJHJ1bmxpc3QuZWFjaCB7Ci0gICAgICAgIHwgcGxhbiB8Ci0gICAgICAgIGlmICEkcmVtb3Rl
IG9yIHBsYW4uaW5kZXggJSAkcmVtb3RlSG9zdHMubGVuZ3RoID09IHJlbW90ZUluZGV4Ci0gICAg
ICAgICAgICBpZiBzZXJpYWxQbGFucy5oYXNfa2V5PyhwbGFuKQotICAgICAgICAgICAgICAgIHNl
cmlhbFJ1blBsYW5zIDw8IHBsYW4KKyAgICAgICAgRmlsZS5vcGVuKEBydW5uZXJEaXIgKyAiTWFr
ZWZpbGUuI3tyZW1vdGVJbmRleH0iLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAg
ICAgICAgICBpZiBzZXJpYWxSdW5QbGFucy5lbXB0eT8KKyAgICAgICAgICAgICAgICBvdXRwLnB1
dHMoImFsbDogcGFyYWxsZWwiKQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJ1
blBsYW5zIDw8IHBsYW4KKyAgICAgICAgICAgICAgICBzZXJpYWxQcmVyZXEgPSAidGVzdF9kb25l
XyN7c2VyaWFsUnVuUGxhbnNbLTFdLmluZGV4fSIKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMo
ImFsbDogI3tzZXJpYWxQcmVyZXF9IikKKyAgICAgICAgICAgICAgICBwcmV2X3RhcmdldCA9ICJw
YXJhbGxlbCIKKyAgICAgICAgICAgICAgICBzZXJpYWxSdW5QbGFucy5lYWNoIHsKKyAgICAgICAg
ICAgICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAgICAgICAgcHJldl90YXJnZXQgPSBv
dXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtwcmV2X3RhcmdldF0pCisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgZW5kCi0gICAgICAgIGVuZAotICAgIH0KLQotICAgIEZpbGUub3Blbigk
cnVubmVyRGlyICsgIk1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IiwgInciKSB7Ci0gICAgICAgIHwg
b3V0cCB8Ci0gICAgICAgIGlmIHNlcmlhbFJ1blBsYW5zLmVtcHR5PwotICAgICAgICAgICAgb3V0
cC5wdXRzKCJhbGw6IHBhcmFsbGVsIikKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2VyaWFs
UHJlcmVxID0gInRlc3RfZG9uZV8je3NlcmlhbFJ1blBsYW5zWy0xXS5pbmRleH0iCi0gICAgICAg
ICAgICBvdXRwLnB1dHMoImFsbDogI3tzZXJpYWxQcmVyZXF9IikKLSAgICAgICAgICAgIHByZXZf
dGFyZ2V0ID0gInBhcmFsbGVsIgotICAgICAgICAgICAgc2VyaWFsUnVuUGxhbnMuZWFjaCB7Cisg
ICAgICAgICAgICBwYXJhbGxlbFRhcmdldHMgPSBydW5QbGFucy5jb2xsZWN0IHsKICAgICAgICAg
ICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgICAgIHByZXZfdGFyZ2V0ID0gb3V0cHV0X3Rh
cmdldChvdXRwLCBwbGFuLCBbcHJldl90YXJnZXRdKQorICAgICAgICAgICAgICAgIG91dHB1dF90
YXJnZXQob3V0cCwgcGxhbiwgW10pCiAgICAgICAgICAgICB9Ci0gICAgICAgIGVuZAotICAgICAg
ICBwYXJhbGxlbFRhcmdldHMgPSBydW5QbGFucy5jb2xsZWN0IHsKLSAgICAgICAgICAgIHwgcGxh
biB8Ci0gICAgICAgICAgICBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtdKQorICAgICAgICAg
ICAgb3V0cC5wdXRzKCJwYXJhbGxlbDogIiArIHBhcmFsbGVsVGFyZ2V0cy5qb2luKCIgIikpCiAg
ICAgICAgIH0KLSAgICAgICAgb3V0cC5wdXRzKCJwYXJhbGxlbDogIiArIHBhcmFsbGVsVGFyZ2V0
cy5qb2luKCIgIikpCi0gICAgfQorICAgIGVuZAorICAgIGRlZiBwcmVwYXJlUnVubmVyKHJ1bmxp
c3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIGlm
IHJlbW90ZUhvc3RzLm5pbD8KKyAgICAgICAgICAgIHByZXBhcmVSdW5uZXJGb3JSZW1vdGUocnVu
bGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCAwKQorICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZW1vdGVIb3N0cy5lYWNoX2luZGV4IHsKKyAgICAgICAgICAgICAgICB8cmVtb3Rl
SW5kZXh8CisgICAgICAgICAgICAgICAgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0LCBz
ZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUluZGV4KQorICAgICAgICAgICAgfQor
ICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAg
ICAgICAibWFrZSAtaiAjeyRudW1DaGlsZFByb2Nlc3Nlc30gLXMgLWYgTWFrZWZpbGUuI3tyZW1v
dGVJbmRleH0iCisgICAgZW5kCiBlbmQKIAotZGVmIHByZXBhcmVSdWJ5VGVzdFJ1bm5lcgotICAg
IEZpbGUub3BlbigkcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3IikgewotICAgICAgICB8IG91
dHAgfAotICAgICAgICAkcnVubGlzdC5lYWNoIHsKLSAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAg
ICAgICAgICBvdXRwLnB1dHMgInByaW50IGBzaCB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9IDI+
JjFgIgorY2xhc3MgVGVzdFJ1bm5lclJ1YnkgPCBUZXN0UnVubmVyCisgICAgZGVmIHByZXBhcmVS
dW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykK
KyAgICAgICAgRmlsZS5vcGVuKEBydW5uZXJEaXIgKyAicnVuc2NyaXB0IiwgInciKSB7CisgICAg
ICAgICAgICB8IG91dHAgfAorICAgICAgICAgICAgcnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAg
ICAgICB8IHBsYW4gfAorICAgICAgICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/
KHBsYW4pCisgICAgICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgICAgICBvdXRwLnB1dHMgInByaW50IGBzaCB0ZXN0X3NjcmlwdF8je3BsYW4uaW5k
ZXh9IDI+JjFgIgorICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQotZW5kCi0KLWRlZiB0
ZXN0UnVubmVyQ29tbWFuZChyZW1vdGVJbmRleD0wKQotICAgIGNhc2UgJHRlc3RSdW5uZXJUeXBl
Ci0gICAgd2hlbiA6c2hlbGwKLSAgICAgICAgY29tbWFuZCA9ICJzaCBydW5zY3JpcHQiCi0gICAg
d2hlbiA6bWFrZQotICAgICAgICBjb21tYW5kID0gIm1ha2UgLWogI3skbnVtQ2hpbGRQcm9jZXNz
ZXN9IC1zIC1mIE1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IgotICAgIHdoZW4gOnJ1YnkKLSAgICAg
ICAgY29tbWFuZCA9ICJydWJ5IHJ1bnNjcmlwdCIKLSAgICBlbHNlCi0gICAgICAgIHJhaXNlICJV
bmtub3duIHRlc3QgcnVubmVyIHR5cGU6ICN7JHRlc3RSdW5uZXJUeXBlLnRvX3N9IgogICAgIGVu
ZAotICAgIHJldHVybiBjb21tYW5kCisgICAgZGVmIGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAg
ICAgICAgInJ1YnkgcnVuc2NyaXB0IgorICAgIGVuZAogZW5kCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5yYiBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlzdGF0
aW9uLnJiCmluZGV4IDQxMmJmNDU1OGFkODUwMGE2ZTBhNzAwNDI3OTNjMzhjNDI5OGQ0YjIuLjJh
N2FhOTdmY2UyZTVkZWFmM2FhMDA4MjZhMWVlYjM5ZTFkOTg5OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlzdGF0aW9uLnJi
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBs
YXlzdGF0aW9uLnJiCkBAIC0yNjAsMjUgKzI2MCwxMCBAQCBkZWYgY2hha3JhUGFzc0ZhaWxFcnJv
ckhhbmRsZXIKICAgIH0KIGVuZAogCi1jbGFzcyBQbGFuCi0gICAgYXR0cl9yZWFkZXIgOmRpcmVj
dG9yeSwgOmFyZ3VtZW50cywgOmZhbWlseSwgOm5hbWUsIDpvdXRwdXRIYW5kbGVyLCA6ZXJyb3JI
YW5kbGVyLCA6YWRkaXRpb25hbEVudgotICAgIGF0dHJfYWNjZXNzb3IgOmluZGV4Ci0KLSAgICBk
ZWYgaW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRI
YW5kbGVyLCBlcnJvckhhbmRsZXIpCi0gICAgICAgIEBkaXJlY3RvcnkgPSBkaXJlY3RvcnkKLSAg
ICAgICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50c1sxLi4tMV0KLSAgICAgICAgQGZhbWlseSA9IGZh
bWlseQotICAgICAgICBAbmFtZSA9IG5hbWUKLSAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRw
dXRIYW5kbGVyCi0gICAgICAgIEBlcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXIKLSAgICAgICAg
QGlzU2xvdyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzppc1Nsb3ddCi0gICAgICAgIEBjcmFzaE9L
ID0gISEkcnVuQ29tbWFuZE9wdGlvbnNbOmNyYXNoT0tdCi0gICAgICAgIGlmIEBjcmFzaE9LCi0g
ICAgICAgICAgICBAb3V0cHV0SGFuZGxlciA9IG5vaXN5T3V0cHV0SGFuZGxlcgotICAgICAgICBl
bmQKLSAgICAgICAgQGFkZGl0aW9uYWxFbnYgPSBbXQorY2xhc3MgUGxhbiA8IEJhc2VQbGFuCisg
ICAgZGVmIGFyZ3VtZW50c01hcHBlcihhcmd1bWVudHMpCisgICAgICAgIGFyZ3VtZW50c1sxLi4t
MV0KICAgICBlbmQKLQogICAgIGRlZiBzaGVsbENvbW1hbmQKICAgICAgICAgbiA9IEBuYW1lLmdz
dWIoLyhcXHxcLykvLCAnXycpCiAgICAgICAgIHNjcmlwdCA9ICJvdXQgPSBuaWxcbiIKQEAgLTM4
NywzNSArMzcyLDUwIEBAIGNsYXNzIFBsYW4KICAgICBlbmQKIGVuZAogCi1kZWYgcHJlcGFyZVBs
YXlTdGF0aW9uVGVzdFJ1bm5lcgotICAgIEZpbGUub3BlbigkcnVubmVyRGlyICsgInJ1bnNjcmlw
dCIsICJ3IikgeworZGVmIHByZXBhcmVQbGF5U3RhdGlvblRlc3RSdW5uZXIocnVubGlzdCwgc2Vy
aWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zKQorICAgIEZpbGUub3BlbihAcnVubmVyRGlyICsgInJ1
bnNjcmlwdCIsICJ3IikgewogICAgICAgICB8IG91dHAgfAotICAgICAgICAkcnVubGlzdC5lYWNo
IHsKKyAgICAgICAgcnVubGlzdC5lYWNoIHsKICAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAg
ICAgICBpZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgIG5l
eHQKKyAgICAgICAgICAgIGVuZAorCiAgICAgICAgICAgICBvdXRwLnB1dHMgIi4uLy5qc29uL3Rl
c3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0uanNvbiIKICAgICAgICAgfQogICAgIH0KIGVuZAogCi1k
ZWYgcHJlcGFyZVNoZWxsVGVzdFJ1bm5lcgotICAgIHByZXBhcmVQbGF5U3RhdGlvblRlc3RSdW5u
ZXIKLWVuZAorY2xhc3MgUGxheXN0YXRpb25UZXN0UnVubmVyIDwgVGVzdFJ1bm5lcgorICAgIGRl
ZiBwcmVwYXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVt
b3RlSG9zdHMpCisgICAgICAgIEZpbGUub3BlbihAcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3
IikgeworICAgICAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgICAgIHJ1bmxpc3QuZWFjaCB7Cisg
ICAgICAgICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAgICBpZiBjb21wbGV0ZWRQbGFu
cy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzICIuLi8uanNvbi90ZXN0X3NjcmlwdF8j
e3BsYW4uaW5kZXh9Lmpzb24iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBlbmQKKyAg
ICBkZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAgICAgICBvcHRpb25zID0gRU5WWyJKU0NU
RVNUX29wdGlvbnMiXQogCi1kZWYgcHJlcGFyZU1ha2VUZXN0UnVubmVyKHJlbW90ZUluZGV4KQot
ICAgIHByZXBhcmVQbGF5U3RhdGlvblRlc3RSdW5uZXIKLWVuZAorICAgICAgICBmc1Jvb3QgPSAk
anNjUGF0aC5kaXJuYW1lCisgICAgICAgIGNvbW1hbmQgPSAiUGxheVN0YXRpb25UZXN0UnVubmVy
ICN7b3B0aW9uc30gLW51bVByb2Nlc3Nlcz0jeyRudW1DaGlsZFByb2Nlc3Nlcy50b19zfSAtZXhl
PSN7JGpzY1BhdGh9IC1mc3Jvb3Q9I3tmc1Jvb3R9IC0tcnVuVW5pcXVlSWQ9I3skcnVuVW5pcXVl
SWR9IEAje0BydW5uZXJEaXJ9L3J1bnNjcmlwdCIKIAotZGVmIHByZXBhcmVSdWJ5VGVzdFJ1bm5l
cgotICAgIHByZXBhcmVQbGF5U3RhdGlvblRlc3RSdW5uZXIKLWVuZAorICAgICAgICBwcmludCBj
b21tYW5kCiAKLWRlZiB0ZXN0UnVubmVyQ29tbWFuZAotICAgIG9wdGlvbnMgPSBFTlZbIkpTQ1RF
U1Rfb3B0aW9ucyJdCisgICAgICAgIHJldHVybiBjb21tYW5kCisgICAgZW5kCitlbmQKIAotICAg
IGZzUm9vdCA9ICRqc2NQYXRoLmRpcm5hbWUKLSAgICBjb21tYW5kID0gIlBsYXlTdGF0aW9uVGVz
dFJ1bm5lciAje29wdGlvbnN9IC1udW1Qcm9jZXNzZXM9I3skbnVtQ2hpbGRQcm9jZXNzZXMudG9f
c30gLWV4ZT0jeyRqc2NQYXRofSAtZnNyb290PSN7ZnNSb290fSAtLXJ1blVuaXF1ZUlkPSN7JHJ1
blVuaXF1ZUlkfSBAI3skcnVubmVyRGlyfS9ydW5zY3JpcHQiCitjbGFzcyBUZXN0UnVubmVyU2hl
bGwgPCBQbGF5c3RhdGlvblRlc3RSdW5uZXIKK2VuZAogCi0gICAgcHJpbnQgY29tbWFuZAorY2xh
c3MgVGVzdFJ1bm5lck1ha2UgPCBQbGF5c3RhdGlvblRlc3RSdW5uZXIKK2VuZAogCi0gICAgcmV0
dXJuIGNvbW1hbmQKK2NsYXNzIFRlc3RSdW5uZXJSdWJ5IDwgUGxheXN0YXRpb25UZXN0UnVubmVy
CiBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRl
c3Qtd3JpdGVyLXJ1YnkucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10
ZXN0LXdyaXRlci1ydWJ5LnJiCmluZGV4IDc4ODgxNmFkMGM5ZjEwYjc2NzU2Yjg3MTY1NmY5NDhh
NmY1YjJiMzYuLjFkN2VhNzUxMWI2MzNmOWU2YWUwOTNjMjJlNjQ1NGE1MDI4Nzk1ODYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXJ1
YnkucmIKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0
ZXItcnVieS5yYgpAQCAtMjYwLDI1ICsyNjAsNyBAQCBkZWYgY2hha3JhUGFzc0ZhaWxFcnJvckhh
bmRsZXIKICAgIH0KIGVuZAogCi1jbGFzcyBQbGFuCi0gICAgYXR0cl9yZWFkZXIgOmRpcmVjdG9y
eSwgOmFyZ3VtZW50cywgOmZhbWlseSwgOm5hbWUsIDpvdXRwdXRIYW5kbGVyLCA6ZXJyb3JIYW5k
bGVyLCA6YWRkaXRpb25hbEVudgotICAgIGF0dHJfYWNjZXNzb3IgOmluZGV4Ci0gICAgCi0gICAg
ZGVmIGluaXRpYWxpemUoZGlyZWN0b3J5LCBhcmd1bWVudHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0
SGFuZGxlciwgZXJyb3JIYW5kbGVyKQotICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5Ci0g
ICAgICAgIEBhcmd1bWVudHMgPSBhcmd1bWVudHMKLSAgICAgICAgQGZhbWlseSA9IGZhbWlseQot
ICAgICAgICBAbmFtZSA9IG5hbWUKLSAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRwdXRIYW5k
bGVyCi0gICAgICAgIEBlcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXIKLSAgICAgICAgQGlzU2xv
dyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzppc1Nsb3ddCi0gICAgICAgIEBjcmFzaE9LID0gISEk
cnVuQ29tbWFuZE9wdGlvbnNbOmNyYXNoT0tdCi0gICAgICAgIGlmIEBjcmFzaE9LCi0gICAgICAg
ICAgICBAb3V0cHV0SGFuZGxlciA9IG5vaXN5T3V0cHV0SGFuZGxlcgotICAgICAgICBlbmQKLSAg
ICAgICAgQGFkZGl0aW9uYWxFbnYgPSBbXQotICAgIGVuZAotICAgIAorY2xhc3MgUGxhbiA8IEJh
c2VQbGFuCiAgICAgZGVmIHNoZWxsQ29tbWFuZCAKICAgICAgICAgc2NyaXB0ID0gIm91dCA9IG5p
bFxuIgogICAgICAgICBzY3JpcHQgKz0gImVyciA9IG5pbFxuIgpAQCAtMzk4LDgyICszODAsOTcg
QEAgY2xhc3MgUGxhbgogICAgIGVuZAogZW5kCiAKLWRlZiBwcmVwYXJlU2hlbGxUZXN0UnVubmVy
Ci0gICAgRmlsZS5vcGVuKCRydW5uZXJEaXIgKyAicnVuc2NyaXB0IiwgInciKSB7Ci0gICAgICAg
IHwgb3V0cCB8Ci0gICAgICAgICRydW5saXN0LmVhY2ggewotICAgICAgICAgICAgfCBwbGFuIHwK
LSAgICAgICAgICAgIG91dHAucHV0cyAicnVieSB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9Igor
Y2xhc3MgVGVzdFJ1bm5lclNoZWxsIDwgVGVzdFJ1bm5lcgorICAgIGRlZiBwcmVwYXJlUnVubmVy
KHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAg
ICAgIEZpbGUub3BlbigiI3tAcnVubmVyRGlyICsgInJ1bnNjcmlwdCJ9IiwgInciKSB7IHxmfAor
ICAgICAgICAgICAgcnVubGlzdC5lYWNoIHsgfHBsYW58CisgICAgICAgICAgICAgICAgaWYgY29t
cGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAg
ICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGYucHV0cygicnVieSB0ZXN0X3Njcmlw
dF8je3BsYW4uaW5kZXh9IikKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLSAgICBg
ZG9zMnVuaXggI3skcnVubmVyRGlyICsgInJ1bnNjcmlwdCJ9YCAgICAKKyAgICAgICAgYGRvczJ1
bml4ICN7QHJ1bm5lckRpciArICJydW5zY3JpcHQifWAKKyAgICBlbmQKKyAgICBkZWYgY29tbWFu
ZChyZW1vdGVJbmRleD0wKQorICAgICAgICAic2ggcnVuc2NyaXB0IgorICAgIGVuZAogZW5kCiAK
LWRlZiBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIHByZXJlcXMpCi0gICAgaW5kZXggPSBwbGFu
LmluZGV4Ci0gICAgdGFyZ2V0ID0gInRlc3RfZG9uZV8je2luZGV4fSIKLSAgICBvdXRwLnB1dHMg
IiN7dGFyZ2V0fTogI3twcmVyZXFzLmpvaW4oIiAiKX0iCi0gICAgb3V0cC5wdXRzICJcdHJ1Ynkg
dGVzdF9zY3JpcHRfI3tpbmRleH0iCi0gICAgdGFyZ2V0Ci1lbmQKK2NsYXNzIFRlc3RSdW5uZXJN
YWtlIDwgVGVzdFJ1bm5lcgorICAgIGRlZiBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIHByZXJl
cXMpCisgICAgICAgIGluZGV4ID0gcGxhbi5pbmRleAorICAgICAgICB0YXJnZXQgPSAidGVzdF9k
b25lXyN7aW5kZXh9IgorICAgICAgICBvdXRwLnB1dHMgIiN7dGFyZ2V0fTogI3twcmVyZXFzLmpv
aW4oIiAiKX0iCisgICAgICAgIG91dHAucHV0cyAiXHRydWJ5IHRlc3Rfc2NyaXB0XyN7aW5kZXh9
IgorICAgICAgICB0YXJnZXQKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZVJ1bm5lckZvclJlbW90
ZShydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUluZGV4KQorICAg
ICAgICBydW5QbGFucyA9IFtdCisgICAgICAgIHNlcmlhbFJ1blBsYW5zID0gW10KKyAgICAgICAg
cnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICBpZiBjb21w
bGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgaWYgQHJlbW90ZUhvc3RzLm5pbD8gb3IgcGxhbi5pbmRleCAl
IEByZW1vdGVIb3N0cy5sZW5ndGggPT0gcmVtb3RlSW5kZXgKKyAgICAgICAgICAgICAgICBpZiBz
ZXJpYWxQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBzZXJpYWxSdW5Q
bGFucyA8PCBwbGFuCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBy
dW5QbGFucyA8PCBwbGFuCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgfQogCi1kZWYgcHJlcGFyZU1ha2VUZXN0UnVubmVyKHJlbW90ZUluZGV4KQotICAgIHNl
cmlhbFBsYW5zID0ge30KLSAgICAkc2VyaWFsUnVubGlzdC5lYWNoIHsgfHB8IHNlcmlhbFBsYW5z
W3BdID0gbmlsIH0KLSAgICBydW5QbGFucyA9IFtdCi0gICAgc2VyaWFsUnVuUGxhbnMgPSBbXQot
ICAgICRydW5saXN0LmVhY2ggewotICAgICAgICB8IHBsYW4gfAotICAgICAgICBpZiAhJHJlbW90
ZSBvciBwbGFuLmluZGV4ICUgJHJlbW90ZUhvc3RzLmxlbmd0aCA9PSByZW1vdGVJbmRleAotICAg
ICAgICAgICAgaWYgc2VyaWFsUGxhbnMuaGFzX2tleT8ocGxhbikKLSAgICAgICAgICAgICAgICBz
ZXJpYWxSdW5QbGFucyA8PCBwbGFuCisgICAgICAgIEZpbGUub3BlbihAcnVubmVyRGlyICsgIk1h
a2VmaWxlLiN7cmVtb3RlSW5kZXh9IiwgInciKSB7CisgICAgICAgICAgICB8IG91dHAgfAorICAg
ICAgICAgICAgaWYgc2VyaWFsUnVuUGxhbnMuZW1wdHk/CisgICAgICAgICAgICAgICAgb3V0cC5w
dXRzKCJhbGw6IHBhcmFsbGVsIikKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
dW5QbGFucyA8PCBwbGFuCisgICAgICAgICAgICAgICAgc2VyaWFsUHJlcmVxID0gInRlc3RfZG9u
ZV8je3NlcmlhbFJ1blBsYW5zWy0xXS5pbmRleH0iCisgICAgICAgICAgICAgICAgb3V0cC5wdXRz
KCJhbGw6ICN7c2VyaWFsUHJlcmVxfSIpCisgICAgICAgICAgICAgICAgcHJldl90YXJnZXQgPSAi
cGFyYWxsZWwiCisgICAgICAgICAgICAgICAgc2VyaWFsUnVuUGxhbnMuZWFjaCB7CisgICAgICAg
ICAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICAgICAgICAgIHByZXZfdGFyZ2V0ID0g
b3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbcHJldl90YXJnZXRdKQorICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGVuZAotICAgICAgICBlbmQKLSAgICB9Ci0KLSAgICBGaWxlLm9wZW4o
JHJ1bm5lckRpciArICJNYWtlZmlsZS4je3JlbW90ZUluZGV4fSIsICJ3IikgewotICAgICAgICB8
IG91dHAgfAotICAgICAgICBpZiBzZXJpYWxSdW5QbGFucy5lbXB0eT8KLSAgICAgICAgICAgIG91
dHAucHV0cygiYWxsOiBwYXJhbGxlbCIpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlcmlh
bFByZXJlcSA9ICJ0ZXN0X2RvbmVfI3tzZXJpYWxSdW5QbGFuc1stMV0uaW5kZXh9IgotICAgICAg
ICAgICAgb3V0cC5wdXRzKCJhbGw6ICN7c2VyaWFsUHJlcmVxfSIpCi0gICAgICAgICAgICBwcmV2
X3RhcmdldCA9ICJwYXJhbGxlbCIKLSAgICAgICAgICAgIHNlcmlhbFJ1blBsYW5zLmVhY2ggewor
ICAgICAgICAgICAgcGFyYWxsZWxUYXJnZXRzID0gcnVuUGxhbnMuY29sbGVjdCB7CiAgICAgICAg
ICAgICAgICAgfCBwbGFuIHwKLSAgICAgICAgICAgICAgICBwcmV2X3RhcmdldCA9IG91dHB1dF90
YXJnZXQob3V0cCwgcGxhbiwgW3ByZXZfdGFyZ2V0XSkKKyAgICAgICAgICAgICAgICBvdXRwdXRf
dGFyZ2V0KG91dHAsIHBsYW4sIFtdKQogICAgICAgICAgICAgfQotICAgICAgICBlbmQKLSAgICAg
ICAgcGFyYWxsZWxUYXJnZXRzID0gcnVuUGxhbnMuY29sbGVjdCB7Ci0gICAgICAgICAgICB8IHBs
YW4gfAotICAgICAgICAgICAgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbXSkKKyAgICAgICAg
ICAgIG91dHAucHV0cygicGFyYWxsZWw6ICIgKyBwYXJhbGxlbFRhcmdldHMuam9pbigiICIpKQog
ICAgICAgICB9Ci0gICAgICAgIG91dHAucHV0cygicGFyYWxsZWw6ICIgKyBwYXJhbGxlbFRhcmdl
dHMuam9pbigiICIpKQotICAgIH0KKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5s
aXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBp
ZiByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgICAgICBwcmVwYXJlUnVubmVyRm9yUmVtb3RlKHJ1
bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgMCkKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVtb3RlSG9zdHMuZWFjaF9pbmRleCB7CisgICAgICAgICAgICAgICAgfHJlbW90
ZUluZGV4fAorICAgICAgICAgICAgICAgIHByZXBhcmVSdW5uZXJGb3JSZW1vdGUocnVubGlzdCwg
c2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVJbmRleCkKKyAgICAgICAgICAgIH0K
KyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVmIGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAg
ICAgICAgIm1ha2UgLWogI3skbnVtQ2hpbGRQcm9jZXNzZXN9IC1zIC1mIE1ha2VmaWxlLiN7cmVt
b3RlSW5kZXh9IgorICAgIGVuZAogZW5kCiAKLWRlZiBwcmVwYXJlUnVieVRlc3RSdW5uZXIKLSAg
ICBGaWxlLm9wZW4oJHJ1bm5lckRpciArICJydW5zY3JpcHQiLCAidyIpIHsKLSAgICAgICAgfCBv
dXRwIHwKLSAgICAgICAgJHJ1bmxpc3QuZWFjaCB7Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAg
ICAgICAgICAgb3V0cC5wdXRzICJzeXN0ZW0gXCJydWJ5IHRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRl
eH1cIiIKK2NsYXNzIFRlc3RSdW5uZXJSdWJ5IDwgVGVzdFJ1bm5lcgorICAgIGRlZiBwcmVwYXJl
UnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMp
CisgICAgICAgIEZpbGUub3BlbihAcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3IikgeworICAg
ICAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgICAgIHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAg
ICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAgICBpZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRl
PyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICAgICAgb3V0cC5wdXRzICJzeXN0ZW0gXCJydWJ5IHRlc3Rfc2NyaXB0XyN7cGxh
bi5pbmRleH1cIiIKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLWVuZAotCi1kZWYg
dGVzdFJ1bm5lckNvbW1hbmQocmVtb3RlSW5kZXg9MCkKLSAgICBjYXNlICR0ZXN0UnVubmVyVHlw
ZQotICAgIHdoZW4gOnNoZWxsCi0gICAgICAgIGNvbW1hbmQgPSAic2ggcnVuc2NyaXB0IgotICAg
IHdoZW4gOm1ha2UKLSAgICAgICAgY29tbWFuZCA9ICJtYWtlIC1qICN7JG51bUNoaWxkUHJvY2Vz
c2VzfSAtcyAtZiBNYWtlZmlsZS4je3JlbW90ZUluZGV4fSIKLSAgICB3aGVuIDpydWJ5Ci0gICAg
ICAgIGNvbW1hbmQgPSAicnVieSBydW5zY3JpcHQiCi0gICAgZWxzZQotICAgICAgICByYWlzZSAi
VW5rbm93biB0ZXN0IHJ1bm5lciB0eXBlOiAjeyR0ZXN0UnVubmVyVHlwZS50b19zfSIKICAgICBl
bmQKLSAgICByZXR1cm4gY29tbWFuZAorICAgIGRlZiBjb21tYW5kKHJlbW90ZUluZGV4PTApCisg
ICAgICAgICJydWJ5IHJ1bnNjcmlwdCIKKyAgICBlbmQKIGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC9leGVjdXRvci5yYiBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvZXhlY3V0b3IucmIKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDE3MWY2MGUwYTMyNzdjMWM4M2I0MzNlODRkMzU5M2Y4NGExNzlhZgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvZXhlY3V0b3IucmIK
QEAgLTAsMCArMSw0MjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgSW1wbGVtZW50cyB0aGUgbWFpbiBsb29w
IGZvciBleGVjdXRpbmcgdGhlIHRlc3RzIGFuZCBoYW5kbGluZworIyBtaXNzaW5nL211bHRpcGxl
IHJlc3VsdHMgKGJlY2F1c2Ugb2YgaW5mcmFzdHJ1Y3R1cmUgaXNzdWVzKS4gSXQgYWxzbworIyB0
YWtlcyBjYXJlIG9mIG1hcmtpbmcgZmFpbGluZyB0ZXN0cyBhcyBmbGFreSB3aGVuCisjIC0tdHJl
YXQtZmFpbGluZy1hcy1mbGFreSBpcyBpbiBlZmZlY3QuIEl0J3MgYSBjbGFzcyBzbyB0aGF0IHdl
IGNhbgorIyBlYXNpbHkgaW5zdGFudGlhdGUgYSBzdWJjbGFzcyBmb3IgdGVzdGluZy4KK2NsYXNz
IEJhc2VUZXN0c0V4ZWN1dG9yCisgICAgZGVmIGluaXRpYWxpemUocnVubGlzdCwgc2VyaWFsUGxh
bnMsIHJlbW90ZUhvc3RzLCBpdGVyYXRpb25MaW1pdHMsCisgICAgICAgICAgICAgICAgICAgdHJl
YXRGYWlsaW5nQXNGbGFreSwgbG9nU3RyZWFtPSRzdGRlcnIpCisgICAgICAgIEBydW5saXN0ID0g
cnVubGlzdAorICAgICAgICBAc2VyaWFsUGxhbnMgPSBzZXJpYWxQbGFucworICAgICAgICBAcmVt
b3RlSG9zdHMgPSByZW1vdGVIb3N0cworICAgICAgICBAdHJlYXRGYWlsaW5nQXNGbGFreSA9IHRy
ZWF0RmFpbGluZ0FzRmxha3kKKyAgICAgICAgQGluZnJhSXRlcmF0aW9uc0Zsb29yID0gaXRlcmF0
aW9uTGltaXRzLmluZnJhSXRlcmF0aW9uc0Zsb29yCisgICAgICAgIEBpdGVyYXRpb25zQ2VpbGlu
ZyA9IGl0ZXJhdGlvbkxpbWl0cy5pdGVyYXRpb25zQ2VpbGluZworICAgICAgICBpZiBAaXRlcmF0
aW9uc0NlaWxpbmcgPCBAaW5mcmFJdGVyYXRpb25zRmxvb3IKKyAgICAgICAgICAgIHJhaXNlICJp
dGVyYXRpb25zQ2VpbGluZyAoI3tAaXRlcmF0aW9uc0NlaWxpbmd9IDwgQGluZnJhSXRlcmF0aW9u
c0Zsb29yICgje0BpbmZyYUl0ZXJhdGlvbnNGbG9vcn0iCisgICAgICAgIGVuZAorICAgICAgICBA
bWF4SXRlcmF0aW9ucyA9IHNldE1heEl0ZXJhdGlvbnMoaW5pdGlhbE1heEFsbG93ZWRJdGVyYXRp
b25zKHJ1bmxpc3QpKQorICAgICAgICBAbG9nU3RyZWFtID0gbG9nU3RyZWFtCisgICAgZW5kCisg
ICAgZGVmIGxvZyhzKQorICAgICAgICBAbG9nU3RyZWFtLnB1dHMocykgdW5sZXNzIEBsb2dTdHJl
YW0ubmlsPworICAgIGVuZAorICAgIGRlZiBzZXRNYXhJdGVyYXRpb25zKHZhbHVlKQorICAgICAg
ICBpZiB2YWx1ZSA+IEBpdGVyYXRpb25zQ2VpbGluZworICAgICAgICAgICAgdmFsdWUgPSBAaXRl
cmF0aW9uc0NlaWxpbmcKKyAgICAgICAgZW5kCisgICAgICAgIEBtYXhJdGVyYXRpb25zID0gdmFs
dWUKKyAgICBlbmQKKyAgICBkZWYgaXRlcmF0aW9uc0ZvckluZnJhRmFpbHVyZXMKKyAgICAgICAg
IyBJZiB3ZSdyZSBydW5uaW5nIHJlbW90ZWx5LCBzY2FsZSB0aGUgZXh0cmEgaXRlcmF0aW9ucyB0
bworICAgICAgICAjIGFjY291bnQgZm9yIGluZnJhc3RydWN0dXJlIGZhaWx1cmVzIGJ5IHRoZSBu
dW1iZXIgb2YgaG9zdHMuCisgICAgICAgIG51bVJlbW90ZUhvc3RzID0gMAorICAgICAgICBpZiBu
b3QgQHJlbW90ZUhvc3RzLm5pbD8KKyAgICAgICAgICAgIG51bVJlbW90ZUhvc3RzID0gQHJlbW90
ZUhvc3RzLnNpemUgLyAyCisgICAgICAgIGVuZAorICAgICAgICBbbnVtUmVtb3RlSG9zdHMsIEBp
bmZyYUl0ZXJhdGlvbnNGbG9vcl0ubWF4CisgICAgZW5kCisgICAgZGVmIGluaXRpYWxNYXhBbGxv
d2VkSXRlcmF0aW9ucyhydW5saXN0KQorICAgICAgICBtYXhUcmllcyA9IDAKKyAgICAgICAgcnVu
bGlzdC5lYWNoIHsgfHBsYW58CisgICAgICAgICAgICBuZXh0IGlmIHBsYW4ucmV0cnlQYXJhbWV0
ZXJzLm5pbD8KKyAgICAgICAgICAgIGlmIHBsYW4ucmV0cnlQYXJhbWV0ZXJzLm1heFRyaWVzID4g
bWF4VHJpZXMKKyAgICAgICAgICAgICAgICBtYXhUcmllcyA9IHBsYW4ucmV0cnlQYXJhbWV0ZXJz
Lm1heFRyaWVzCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICAjIFRoZSBudW1i
ZXIgb2YgYWxsb3dlZCBpdGVyYXRpb25zIGlzIHRoZSBzdW0gb2YKKyAgICAgICAgIyBpdGVyYXRp
b25zRm9ySW5mcmFGYWlsdXJlcyBhbmQgdGhlIG1heCB0aW1lcyB3ZSBydW4gYSB0ZXN0CisgICAg
ICAgICMgdGhhdCBhcHBlYXJzIHRvIGJlIGZsYWt5LgorICAgICAgICBpdGVyYXRpb25zRm9ySW5m
cmFGYWlsdXJlcyArIG1heFRyaWVzCisgICAgZW5kCisgICAgZGVmIGFkanVzdEZsYWtpbmVzc0Zv
ckZhaWxpbmdUZXN0cyhpdGVyYXRpb24sIHN0YXR1c01hcCwgZXZhbHVhdG9yKQorICAgICAgICBj
b21wbGV0ZWRUZXN0cyA9IGV2YWx1YXRvci5jb21wbGV0ZWQKKyAgICAgICAgaWYgQHRyZWF0RmFp
bGluZ0FzRmxha3kubmlsPworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZFRlc3RzCisgICAg
ICAgIGVuZAorCisgICAgICAgICMgSWYgd2UgaGF2ZSBhIGxvdCBvZiBmYWlsaW5nIHRlc3RzLCBp
dCdzIGxpa2VseSB0aGF0IHRoZSB0cmVlCisgICAgICAgICMgaXMgYmFkIGFuZCB0aGVyZSdzIG5v
IHBvaW50IGluIHRyZWF0aW5nIHRoZSBmYWlsdXJlcyBhcworICAgICAgICAjIHBvdGVudGlhbCBm
bGFreSB0ZXN0cy4KKyAgICAgICAgaWYgZXZhbHVhdG9yLnRlc3RzRmFpbGVkLnNpemUgPiBAdHJl
YXRGYWlsaW5nQXNGbGFreS5tYXhGYWlsaW5nCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGVk
VGVzdHMKKyAgICAgICAgZW5kCisgICAgICAgIGFkanVzdGVkVGVzdHMgPSBTZXQubmV3CisgICAg
ICAgIGV2YWx1YXRvci50ZXN0c0ZhaWxlZC5lYWNoIHsgfHBsYW58CisgICAgICAgICAgICBpZiBw
bGFuLnJldHJ5UGFyYW1ldGVycy5uaWw/CisgICAgICAgICAgICAgICAgcGxhbi5yZXRyeVBhcmFt
ZXRlcnMgPSBSZXRyeVBhcmFtZXRlcnMubmV3KEB0cmVhdEZhaWxpbmdBc0ZsYWt5LnBhc3NQZXJj
ZW50YWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBAdHJlYXRGYWlsaW5nQXNGbGFreS5tYXhUcmllcykKKyAgICAgICAgICAgICAg
ICBhZGp1c3RlZFRlc3RzLmFkZChwbGFuKQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAg
ICAgICAgaWYgYWRqdXN0ZWRUZXN0cy5zaXplID4gMAorICAgICAgICAgICAgIyBBZGp1c3QgdGhl
IG1heGltdW0gbnVtYmVyIG9mIHRyaWVzIHVwd2FyZHMgaWYgd2UganVzdAorICAgICAgICAgICAg
IyBtYXJrZWQgYSBmYWlsaW5nIHRlc3QgYXMgZmxha3kuIE5vdGUgdGhhdCBpbmZyYXN0cnVjdHVy
ZQorICAgICAgICAgICAgIyBpc3N1ZXMgbWlnaHQgY2F1c2UgdGVzdCBmYWlsdXJlcyB0byBiZSBy
ZXBvcnRlZCBhdCBsYXRlcgorICAgICAgICAgICAgIyBpdGVyYXRpb25zLCBzbyB3ZSB1c2UgKCsp
IGluc3RlYWQgb2YgKG1heCkuIFRoaXMgaXMgc2FmZQorICAgICAgICAgICAgIyBhcyB0aGUgbnVt
YmVyIG9mIGl0ZXJhdGlvbnMgaXMgY2FwcGVkIGJ5CisgICAgICAgICAgICAjIGl0ZXJhdGlvbnND
ZWlsaW5nLgorICAgICAgICAgICAgbmV3TWF4SXRlcmF0aW9ucyA9IEBtYXhJdGVyYXRpb25zICsg
QHRyZWF0RmFpbGluZ0FzRmxha3kubWF4VHJpZXMKKyAgICAgICAgICAgIGlmIEBtYXhJdGVyYXRp
b25zIDwgbmV3TWF4SXRlcmF0aW9ucworICAgICAgICAgICAgICAgIHNldE1heEl0ZXJhdGlvbnMo
bmV3TWF4SXRlcmF0aW9ucykKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgcHV0ZCgiYWRq
dXN0Rmxha2luZXNzRm9yRmFpbGluZ1Rlc3RzICN7bmV3TWF4SXRlcmF0aW9uc30gKC0+I3tAbWF4
SXRlcmF0aW9uc30pICN7YWRqdXN0ZWRUZXN0cy5jb2xsZWN0IHsgfHB8IHAudG9fcyB9fSIpCisg
ICAgICAgIGVuZAorICAgICAgICAjIFdlIGp1c3QgbWFya2VkIHRob3NlIGFzIGZsYWt5IGluIG9y
ZGVyIHRvIHJlcnVuIHRoZW4sIHNvCisgICAgICAgICMgdGFrZSB0aGVtIG9mZiB0aGUgY29tcGxl
dGVkVGVzdHMuCisgICAgICAgIHJldCA9IGNvbXBsZXRlZFRlc3RzIC0gYWRqdXN0ZWRUZXN0cwor
ICAgICAgICBwdXRkKCJjb21wbGV0ZWRUZXN0czogI3tyZXQuY29sbGVjdCB7IHxwfCBwLnRvX3Mg
fX0iKQorICAgICAgICByZXQKKyAgICBlbmQKKyAgICBkZWYgbG9vcAorICAgICAgICBwcmVwYXJl
QXJ0aWZhY3RzKEByZW1vdGVIb3N0cykKKyAgICAgICAgc3RhdHVzTWFwID0ge30KKyAgICAgICAg
IyBUaGlzIGlzIGEgaGlnaC1sZXZlbCByZXRyeSBsb29wLiBJZiBhIHJlbW90ZSBob3N0IGdvZXMg
YXdheSBpbgorICAgICAgICAjIHRoZSBtaWRkbGUgb2YgYSBydW4gYW5kIGVpdGhlciBkb2Vzbid0
IGNvbWUgYmFjayBvbmxpbmUgb3IgY29tZXMKKyAgICAgICAgIyBiYWNrIGhhdmluZyByZW1vdmVk
IHRoZSByZW1vdGUgZGlyZWN0b3J5ICgqKSwgZ2V0U3RhdHVzTWFwIHdpbGwgYmUKKyAgICAgICAg
IyBtaXNzaW5nIHJlc3VsdHMgZm9yIHRoZXNlIHRlc3RzLCBhbGxvd2luZyB1cyB0byByZXRyeSB0
aGVtIGluCisgICAgICAgICMgdGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAjCisgICAgICAg
ICMgKCopIFRoaXMgbWF5IHdlbGwgaGFwcGVuIHdoZW4gcnVubmluZyB0aGUgdGVzdHMgb24gZW1i
ZWRkZWQKKyAgICAgICAgIyBib2FyZHMgdGhhdCByZWd1bGFybHkgY29ycnVwdCB0aGVpciBTRCBj
YXJkLiBEZWZpbml0ZWx5IGFuIGlzc3VlCisgICAgICAgICMgZm9yIHRoZSBjaTIwIGJvYXJkcyB1
c2VkIHRvIHRlc3QgTUlQUy4KKyAgICAgICAgMTAwMDAwLnRpbWVzIHsgfGl0ZXJhdGlvbnwKKyAg
ICAgICAgICAgIGlmIGl0ZXJhdGlvbiA+PSBAbWF4SXRlcmF0aW9ucworICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICMgQHJlbW90ZUhvc3RzIChhbmQg
dGhlcmVmb3JlIHJlbW90ZUhvc3RzKSB3aWxsIGJlIG5pbAorICAgICAgICAgICAgIyB3aGVuIG5v
dCBleGVjdXRpbmcgb24gcmVtb3Rlcy4KKyAgICAgICAgICAgIHJlbW90ZUhvc3RzID0gcHJlcGFy
ZUV4ZWN1dGlvbihAcmVtb3RlSG9zdHMpCisgICAgICAgICAgICBpZiByZW1vdGVIb3N0cyBhbmQg
cmVtb3RlSG9zdHMuc2l6ZSA9PSAwCisgICAgICAgICAgICAgICAgIyBFaXRoZXIgZXZlcnl0aGlu
ZyBpcyBkb3duLCBvciBldmVyeXRoaW5nIGdvdAorICAgICAgICAgICAgICAgICMgcmVib290ZWQu
IEluIHRoZSBsYXR0ZXIgY2FzZSwgYWxsb3cgZW5vdWdoIHRpbWUgZm9yCisgICAgICAgICAgICAg
ICAgIyB0aGUgcmVtb3RlIGJvYXJkcyB0byBib290IHVwLCB0aGVuIHJldHJ5LgorICAgICAgICAg
ICAgICAgIHdhaXRJbnRlcnZhbCA9IDYwCisgICAgICAgICAgICAgICAgbG9nKCJBbGwgcmVtb3Rl
IGhvc3RzIGZhaWxlZCwgcmV0cnlpbmcgYWZ0ZXIgI3t3YWl0SW50ZXJ2YWx9cyIpCisgICAgICAg
ICAgICAgICAgc2xlZXAod2FpdEludGVydmFsKQorICAgICAgICAgICAgICAgIG5leHQKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgZXhlY3V0ZVRlc3RzKHJlbW90ZUhvc3RzKQorICAgICAg
ICAgICAgc3RhdHVzTWFwID0gdXBkYXRlU3RhdHVzTWFwKGl0ZXJhdGlvbiwgc3RhdHVzTWFwKQor
ICAgICAgICAgICAgZXZhbHVhdG9yID0gVGVzdFJlc3VsdEV2YWx1YXRvclNpbXBsZS5uZXcoQHJ1
bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgICAgIGV2YWx1YXRvci52aXNpdCEKKworICAgICAg
ICAgICAgY29tcGxldGVkVGVzdHMgPSBhZGp1c3RGbGFraW5lc3NGb3JGYWlsaW5nVGVzdHMoaXRl
cmF0aW9uLCBzdGF0dXNNYXAsIGV2YWx1YXRvcikKKyAgICAgICAgICAgICMgTkI6IGV2YWx1YXRv
ci5jb21wbGV0ZWQgbWF5IG5vdyBiZSBvdXQgb2YgZGF0ZSwgd2UgbmVlZAorICAgICAgICAgICAg
IyB0byB1c2UgY29tcGxldGVkVGVzdHMgaW5zdGVhZC4KKworICAgICAgICAgICAgYnJlYWsgdW5s
ZXNzIGNvbXBsZXRlZFRlc3RzLnNpemUgIT0gQHJ1bmxpc3Quc2l6ZQorICAgICAgICAgICAgaWYg
Y29tcGxldGVkVGVzdHMuc2l6ZSA+IEBydW5saXN0LnNpemUKKyAgICAgICAgICAgICAgICByYWlz
ZSAiVGVzdCBjb3VudCBtaXNtYXRjaDogI3tjb21wbGV0ZWRUZXN0cy5zaXplfSA+ICN7QHJ1bmxp
c3Quc2l6ZX0iCisgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgIyBSZWdlbmVyYXRlIHRo
ZSBsaXN0cyBvZiB0ZXN0cyB0byBydW4KKyAgICAgICAgICAgIHJlZnJlc2hFeGVjdXRpb24oQHJ1
bmxpc3QsIEBzZXJpYWxQbGFucywgY29tcGxldGVkVGVzdHMpCisKKyAgICAgICAgICAgIG51bUZs
YWt5ID0gQHJ1bmxpc3Quc2l6ZSAtIGNvbXBsZXRlZFRlc3RzLnNpemUgLSBldmFsdWF0b3IubWlz
c2luZy5zaXplCisgICAgICAgICAgICB0ZXN0c0luZm8gPSAiY29tcGxldGVkICN7Y29tcGxldGVk
VGVzdHMuc2l6ZX0vI3tAcnVubGlzdC5zaXplfSAoI3tudW1GbGFreX0gZmxha3ksICN7ZXZhbHVh
dG9yLm1pc3Npbmcuc2l6ZX0gbWlzc2luZykiCisgICAgICAgICAgICByZW1vdGVIb3N0c0luZm8g
PSAiIgorICAgICAgICAgICAgaWYgcmVtb3RlSG9zdHMKKyAgICAgICAgICAgICAgICByZW1vdGVI
b3N0c0luZm8gPSAiLCAje3JlbW90ZUhvc3RzLnNpemV9LyN7QHJlbW90ZUhvc3RzLnNpemV9IGhv
c3RzIGxpdmUiCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGxvZygiQWZ0ZXIgdHJ5ICN7
aXRlcmF0aW9uICsgMX0vI3tAbWF4SXRlcmF0aW9uc306ICN7dGVzdHNJbmZvfSN7cmVtb3RlSG9z
dHNJbmZvfSIpCisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzTWFwCisgICAgZW5kCitlbmQKKwor
bW9kdWxlIEV4ZWN1dG9yU2VsZlRlc3RzCisgICAgRmluYWxUZXN0UmVzdWx0ID0gU3RydWN0Lm5l
dyg6cmVzdWx0KQorICAgIFRlc3RSZXN1bHQgPSBTdHJ1Y3QubmV3KDpyZXN1bHRzKQorICAgIEl0
ZXJhdGlvbiA9IFN0cnVjdC5uZXcoOnRlc3RSZXN1bHRzKQorICAgIFRlc3RDYXNlID0gU3RydWN0
Lm5ldyg6dGVzdHNXaXRoRmxha3ksIDppdGVyYXRpb25zLCA6ZXhwZWN0ZWRUZXN0UmVzdWx0cywg
OnRyZWF0RmFpbGluZ0FzRmxha3kpCisgICAgTU9DS19URVNUX0ZBTUlMWSA9ICJmIgorICAgIElU
RVJBVElPTl9MSU1JVFMgPSBPcGVuU3RydWN0Lm5ldyg6aW5mcmFJdGVyYXRpb25zRmxvb3IgPT4g
MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOml0ZXJhdGlvbnNDZWls
aW5nID0+IDgpCisgICAgY2xhc3MgTW9ja1Rlc3RzRXhlY3V0b3IgPCBCYXNlVGVzdHNFeGVjdXRv
cgorICAgICAgICBhdHRyX3JlYWRlciA6ZXhlY3V0ZWRJdGVyYXRpb25zCisgICAgICAgIGRlZiBp
bml0aWFsaXplKHJ1bmxpc3QsIGl0ZXJhdGlvblJlc3VsdHMsIG1heEl0ZXJhdGlvbnNCb3VuZHMs
IHRyZWF0RmFpbGluZ0FzRmxha3ksIGxvZ1N0cmVhbSkKKyAgICAgICAgICAgIHN1cGVyKHJ1bmxp
c3QsIFtdLCBuaWwsIG1heEl0ZXJhdGlvbnNCb3VuZHMsIHRyZWF0RmFpbGluZ0FzRmxha3ksIGxv
Z1N0cmVhbSkKKyAgICAgICAgICAgIEBpdGVyYXRpb25SZXN1bHRzID0gaXRlcmF0aW9uUmVzdWx0
cworICAgICAgICAgICAgQGV4ZWN1dGVkSXRlcmF0aW9ucyA9IDAKKyAgICAgICAgZW5kCisgICAg
ICAgIGRlZiBwcmVwYXJlQXJ0aWZhY3RzKHJlbW90ZUhvc3RzKQorICAgICAgICBlbmQKKyAgICAg
ICAgZGVmIHByZXBhcmVFeGVjdXRpb24ocmVtb3RlSG9zdHMpCisgICAgICAgICAgICByZW1vdGVI
b3N0cworICAgICAgICBlbmQKKyAgICAgICAgZGVmIGV4ZWN1dGVUZXN0cyhyZW1vdGVIb3N0cykK
KyAgICAgICAgZW5kCisgICAgICAgIGRlZiB1cGRhdGVTdGF0dXNNYXAoaXRlcmF0aW9uLCBzdGF0
dXNNYXApCisgICAgICAgICAgICBpZiBpdGVyYXRpb24gPj0gQGl0ZXJhdGlvblJlc3VsdHMuc2l6
ZQorICAgICAgICAgICAgICAgICRzdGRlcnIucHV0cygiVHJ5aW5nIHRvIGV4ZWN1dGUgaXRlcmF0
aW9uICN7aXRlcmF0aW9ufSBidXQgb25seSBoYXZlICN7QGl0ZXJhdGlvblJlc3VsdHMuc2l6ZX0g
aXRlcmF0aW9uIHJlc3VsdHMgYXZhaWxhYmxlIikKKyAgICAgICAgICAgICAgICByYWlzZSAiU2Vs
ZiB0ZXN0IGVycm9yOiBpbnN1ZmZpY2llbnQgaXRlcmF0aW9ucyIKKyAgICAgICAgICAgIGVuZAor
ICAgICAgICAgICAgQGV4ZWN1dGVkSXRlcmF0aW9ucyArPSAxCisgICAgICAgICAgICBAaXRlcmF0
aW9uUmVzdWx0c1tpdGVyYXRpb25dLmVhY2ggeyB8aXRlcmF0aW9ufAorICAgICAgICAgICAgICAg
IGl0ZXJhdGlvbi5lYWNoX3dpdGhfaW5kZXggeyB8dGVzdFJlc3VsdCwgdGVzdEluZGV4fAorICAg
ICAgICAgICAgICAgICAgICBpbmRleCA9IEBydW5saXN0W3Rlc3RJbmRleF0uaW5kZXgKKyAgICAg
ICAgICAgICAgICAgICAgIyBCZWNhdXNlIG9mIGluZnJhIGlzc3VlcywgYSB0ZXN0IG1pZ2h0IGhh
dmUgbXVsdGlwbGUgcmVzdWx0cy4KKyAgICAgICAgICAgICAgICAgICAgdGVzdFJlc3VsdC5yZXN1
bHRzLmVhY2ggeyB8cmVzdWx0fAorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9ICIuLyN7
U1RBVFVTX0ZJTEVfUFJFRklYfSN7aW5kZXh9ICN7JHJ1blVuaXF1ZUlkfSAwICN7cmVzdWx0fSIK
KyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NTdGF0dXNMaW5lKHN0YXR1c01hcCwgbGlu
ZSkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHB1dGQoInN0YXR1c01hcDogI3tzdGF0dXNNYXB9IikKKyAgICAgICAg
ICAgIHN0YXR1c01hcAorICAgICAgICBlbmQKKyAgICAgICAgZGVmIHJlZnJlc2hFeGVjdXRpb24o
cnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRlc3RzKQorICAgICAgICBlbmQKKyAgICBl
bmQKKworICAgIGRlZiBFeGVjdXRvclNlbGZUZXN0cy5ydW4KKyAgICAgICAgdHJmID0gVGVzdFJl
c3VsdC5uZXcoW1NUQVRVU19GSUxFX0ZBSUxdKQorICAgICAgICB0cnAgPSBUZXN0UmVzdWx0Lm5l
dyhbU1RBVFVTX0ZJTEVfUEFTU10pCisgICAgICAgIHRyZSA9IFRlc3RSZXN1bHQubmV3KFtdKQor
ICAgICAgICBmdHJwID0gRmluYWxUZXN0UmVzdWx0Lm5ldyhTVEFUVVNfRklMRV9QQVNTKQorICAg
ICAgICBmdHJmID0gRmluYWxUZXN0UmVzdWx0Lm5ldyhTVEFUVVNfRklMRV9GQUlMKQorICAgICAg
ICBmdHJlID0gRmluYWxUZXN0UmVzdWx0Lm5ldyhuaWwpCisgICAgICAgIFsKKyAgICAgICAgICAg
IFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLCAjIDIgdGVzdHMgKHQwLCB0MSksIG5laXRoZXIgZmxh
a3kKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEl0ZXJhdGlvbi5uZXcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJwLCAjIHQwIHBhc3NlZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRycCwgIyB0MSBwYXNzZWQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRycF0pLAorICAgICAgICAgICAg
VGVzdENhc2UubmV3KFtuaWwsIG5pbF0sICMgMiB0ZXN0cyAodDAsIHQxKSwgbmVpdGhlciBmbGFr
eQorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJmXSksCisgICAgICAgICAgICAj
IDEgdGVzdCBnaXZlcyBubyByZXN1bHQsIG5lZWQgYSBzZWNvbmQgaXRlcmF0aW9uLCBib3RoIGZp
bmFsbHkgcGFzcworICAgICAgICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cnAsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmUsIHRycF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW2Z0cnAsIGZ0cnBdKSwKKyAgICAgICAgICAgICMgMSB0ZXN0IGZh
aWxzLCAxIGdpdmVzIG5vIHJlc3VsdCwgbmVlZCBhIHNlY29uZCBpdGVyYXRpb24sIG9uZSBmaW5h
bGx5IHBhc3NlcworICAgICAgICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmYsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmUsIHRycF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW2Z0cmYsIGZ0cnBdKSwKKyAgICAgICAgICAgICMgMSB0ZXN0IHBh
c3NlcywgMSBnaXZlcyBubyByZXN1bHQsIG5lZWQgYSBzZWNvbmQgaXRlcmF0aW9uLCBvbmUgZmlu
YWxseSBwYXNzZXMKKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0
aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0
aW9uLm5ldyhbdHJlLCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJmXSksCisgICAgICAgICAgICBUZXN0Q2FzZS5u
ZXcoW25pbCwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMgRmlyc3QgaXRlcmF0aW9uIGRvZXNuJ3QgcHJvZHVjZSBhbnkgcmVz
dWx0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0
cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmLCB0
cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0
cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFtmdHJmLCBmdHJmXSksCisgICAgICAgICAgICAjIFRlc3QgdGhhdCwgd2hlbiBubyBmbGFr
aWVzIGFyZSBwcmVzZW50LCB3ZSBzdG9wIGF0CisgICAgICAgICAgICAjIGluZnJhSXRlcmF0aW9u
c0Zsb29yIHdoZW4gbm8gcmVzdWx0cyBjb21lIGluLgorICAgICAgICAgICAgVGVzdENhc2UubmV3
KFtuaWwsIG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW0l0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSldICogSVRFUkFUSU9OX0xJTUlUUy5pbmZyYUl0ZXJhdGlvbnNGbG9vciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBbZnRyZSwgZnRyZV0pLAorICAgICAgICAgICAgIyBUZXN0IHRo
ZSBtYXhJdGVyYXRpb25zIGFkanVzdG1lbnQgd29ya3MgYXMgZXhwZWN0ZWQgaW4KKyAgICAgICAg
ICAgICMgdGhlIHByZXNlbmNlIG9mIGEgc3RhdGljIGZsYWt5LgorICAgICAgICAgICAgVGVzdENh
c2UubmV3KFtSZXRyeVBhcmFtZXRlcnMubmV3KDAuMzksIDQpLCBuaWxdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSB3ZSBo
YXZlIGEgZmxha3kgdGVzdCwgdGhlIG1heEl0ZXJhdGlvbnMgZ2V0cyBhZGp1c3RlZCB0bworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIElURVJBVElPTl9MSU1JVFMuaW5mcmFJdGVyYXRp
b25zRmxvb3IgICsgUmV0cnlQYXJhbWV0ZXJzLm1heFRyaWVzID0gNy4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmLCB0cmVdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSksCisg
ICAgICAgICAgICAjIFRlc3QgdGhhdCBhIGZsYWt5IGNhbiBmaW5pc2ggZWFybHkuCisgICAgICAg
ICAgICBUZXN0Q2FzZS5uZXcoW1JldHJ5UGFyYW1ldGVycy5uZXcoMC40LCA0KSwgbmlsXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRycF0pLAorICAgICAgICAgICAgIyBTYW1l
LCB3aXRoIG1vcmUgdmFyaWFiaWxpdHkuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwg
bmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRycF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQZXJjZW50YWdlID0+IDAuNCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gNiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiAzKSks
CisgICAgICAgICAgICAjIFNhbWUsIHdpdGggZGlmZmVyZW50IHZhcmlhYmlsaXR5LgorICAgICAg
ICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRyZV0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRycF0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRycF0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
W2Z0cnAsIGZ0cmZdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3KDpw
YXNzUGVyY2VudGFnZSA9PiAwLjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOm1heFRyaWVzID0+IDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOm1heEZhaWxpbmcgPT4gMykpLAorICAgICAgICAgICAgIyBUZXN0IHRoYXQgYSBmbGFr
eSBmb3Igd2hpY2ggbm90IGVub3VnaCByZXN1bHRzIGNvbWUgaW4gaXMgbm90IG1hcmtlZCBhcyBj
b21wbGV0ZWQuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3
KFt0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJw
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZl0pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmVdKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlXSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZV0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJlXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBPcGVuU3RydWN0Lm5ldyg6cGFzc1BlcmNlbnRhZ2UgPT4gMC40OSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gNCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiAxKSksCisg
ICAgICAgICAgICAjIFRlc3QgdGhhdCAoc3RhdGljYWxseSkgZmxha3kgdGVzdHMgYXJlbid0IGFk
anVzdGVkCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW1JldHJ5UGFyYW1ldGVycy5uZXcoMC41
LCAzKSwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZiwgdHJwXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZiwgdHJlXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRyZiwgZnRycF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQZXJjZW50YWdlID0+IDAu
NywgIyA+IDIvMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhU
cmllcyA9PiA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhG
YWlsaW5nID0+IDMpKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0IHdlIHJlc3BlY3QgbWF4RmFp
bGluZy4KKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWwsIG5pbF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmYsIHRyZiwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbZnRyZiwgZnRyZiwgZnRyZl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQZXJjZW50YWdlID0+IDAuNywgIyA+IDIv
MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhUcmllcyA9PiA2
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhGYWlsaW5nID0+
IDIpKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0IHdlIGhhbHQgYXQgbWF4SXRlcmF0aW9ucyAo
MyArIDUgPSA4KSBpZiBubyByZXN1bHRzIGNvbWUgaW4uCisgICAgICAgICAgICBUZXN0Q2FzZS5u
ZXcoW1JldHJ5UGFyYW1ldGVycy5uZXcoMC41LCA1KSwgbmlsXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBbZnRyZSwgZnRycF0pLAorICAgICAgICBdLmVhY2hfd2l0aF9pbmRleCB7CisgICAg
ICAgICAgICB8dGVzdGNhc2UsIHRlc3RjYXNlSW5kZXh8CisgICAgICAgICAgICBydW5saXN0ID0g
W10KKyAgICAgICAgICAgIHB1dGQoIj09PT4gVGVzdGNhc2UgI3t0ZXN0Y2FzZUluZGV4fSIpCisg
ICAgICAgICAgICB0ZXN0Y2FzZS50ZXN0c1dpdGhGbGFreS5lYWNoX3dpdGhfaW5kZXggeyB8cmV0
cnlQYXJhbWV0ZXJzLCBpbmRleHwKKyAgICAgICAgICAgICAgICBwbGFuID0gQmFzZVBsYW4ubW9j
ayhNT0NLX1RFU1RfRkFNSUxZLCAidCN7aW5kZXh9IiwgcmV0cnlQYXJhbWV0ZXJzKQorICAgICAg
ICAgICAgICAgIHJ1bmxpc3QgPDwgcGxhbgorICAgICAgICAgICAgfQorICAgICAgICAgICAgcHV0
ZCgicnVubGlzdDogI3tydW5saXN0LmNvbGxlY3QgeyB8cHwgcC50b19zIH19LCBleHBlY3RlZDog
I3t0ZXN0Y2FzZS5leHBlY3RlZFRlc3RSZXN1bHRzfSIpCisgICAgICAgICAgICBleGVjdXRvciA9
IE1vY2tUZXN0c0V4ZWN1dG9yLm5ldyhydW5saXN0LCB0ZXN0Y2FzZS5pdGVyYXRpb25zLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVRFUkFUSU9OX0xJTUlU
UywgdGVzdGNhc2UudHJlYXRGYWlsaW5nQXNGbGFreSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICR0ZXN0c0RlYnVnU3RyZWFtKQorICAgICAgICAgICAgc3Rh
dHVzTWFwID0gZXhlY3V0b3IubG9vcAorICAgICAgICAgICAgaWYgZXhlY3V0b3IuZXhlY3V0ZWRJ
dGVyYXRpb25zICE9IHRlc3RjYXNlLml0ZXJhdGlvbnMuc2l6ZQorICAgICAgICAgICAgICAgICMg
VGhlIHRlc3RjYXNlIHNob3VsZCBwcm92aWRlIGV4YWN0bHkgYXMgbWFueQorICAgICAgICAgICAg
ICAgICMgaXRlcmF0aW9uIHJlc3VsdHMgYXMgbmVlZGVkLgorICAgICAgICAgICAgICAgIHJhaXNl
ICJFeGVjdXRlZCAje2V4ZWN1dG9yLmV4ZWN1dGVkSXRlcmF0aW9uc30sICN7dGVzdGNhc2UuaXRl
cmF0aW9ucy5zaXplfSBnaXZlbiIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZXhwZWN0
Q29tcGxldGVkID0gU2V0Lm5ldyhydW5saXN0LnNlbGVjdCB7IHxwbGFufAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IHRlc3RjYXNlLmV4cGVjdGVkVGVzdFJl
c3VsdHNbcnVubGlzdC5pbmRleChwbGFuKV0ucmVzdWx0Lm5pbD8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSkKKworICAgICAgICAgICAgZXZhbHVhdG9yID0gVGVzdFJl
c3VsdEV2YWx1YXRvclNpbXBsZS5uZXcocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICAgICAg
ZXZhbHVhdG9yLnZpc2l0IQorCisgICAgICAgICAgICB2ZXJpZnlDb21wbGV0ZWRUZXN0c01hdGNo
RXhwZWN0ZWQoc3RhdHVzTWFwLCBldmFsdWF0b3IuY29tcGxldGVkLCBleHBlY3RDb21wbGV0ZWQp
CisKKyAgICAgICAgICAgIHRlc3RjYXNlRmFpbGVkID0gZmFsc2UKKyAgICAgICAgICAgIHJ1bmxp
c3QuZWFjaF93aXRoX2luZGV4IHsgfHBsYW4sIGluZGV4fAorICAgICAgICAgICAgICAgIGNhc2Ug
dGVzdGNhc2UuZXhwZWN0ZWRUZXN0UmVzdWx0c1tpbmRleF0ucmVzdWx0CisgICAgICAgICAgICAg
ICAgd2hlbiBuaWwKKyAgICAgICAgICAgICAgICAgICAgaWYgZXZhbHVhdG9yLnRlc3RzUGFzc2Vk
LmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9
IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICRzdGRlcnIucHV0cygiVGVzdCAje2luZGV4
fSBzaG91bGQgbm90IGhhdmUgY29tcGxldGVkIGJ1dCBwYXNzZWQiKQorICAgICAgICAgICAgICAg
ICAgICBlbHNpZiBldmFsdWF0b3IudGVzdHNGYWlsZWQuaW5jbHVkZT8ocGxhbikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RjYXNlRmFpbGVkID0gdHJ1ZQorICAgICAgICAgICAgICAgICAg
ICAgICAgJHN0ZGVyci5wdXRzKCJUZXN0ICN7aW5kZXh9IHNob3VsZCBub3QgaGF2ZSBjb21wbGV0
ZWQgYnV0IGZhaWxlZCIpCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAg
IHdoZW4gU1RBVFVTX0ZJTEVfUEFTUworICAgICAgICAgICAgICAgICAgICBpZiBub3QgZXZhbHVh
dG9yLnRlc3RzUGFzc2VkLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0Y2FzZUZhaWxlZCA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICRzdGRlcnIucHV0
cygiVGVzdCAje2luZGV4fSBzaG91bGQgaGF2ZSBwYXNzZWQgYnV0IGRpZG4ndCIpCisgICAgICAg
ICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIHdoZW4gU1RBVFVTX0ZJTEVfRkFJTAor
ICAgICAgICAgICAgICAgICAgICBpZiBub3QgZXZhbHVhdG9yLnRlc3RzRmFpbGVkLmluY2x1ZGU/
KHBsYW4pCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9IHRydWUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICRzdGRlcnIucHV0cygiVGVzdCAje2luZGV4fSBzaG91bGQg
aGF2ZSBmYWlsZWQgYnV0IGRpZG4ndCIpCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgIkNhbid0IGdldCBoZXJl
IgorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgdGVz
dGNhc2VGYWlsZWQKKyAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoInN0YXR1c01hcCA9ICN7
c3RhdHVzTWFwfSIpCisgICAgICAgICAgICAgICAgcmFpc2UgIlNlbGYgdGVzdCBmYWlsdXJlIgor
ICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICBlbmQKK2VuZApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFsdWF0
b3IucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3Rlc3QtcmVz
dWx0LWV2YWx1YXRvci5yYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODQzYmQ2OWQxNDM0ZTQ0MDQ4NTA2MDZkMDMw
MjBhN2FhMzk5ZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5
L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFsdWF0b3IucmIKQEAgLTAsMCArMSwyOTMg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyMgVmlzaXRzIHRoZSB0ZXN0cyBpbiB0aGUgcnVubGlzdCBhbmQgaW52
b2tlcyBhIG51bWJlciBvZgorIyBjYWxsYmFja3MuIFVzZWQgdmlhIHN1YmNsYXNzaW5nLgorY2xh
c3MgVGVzdFJlc3VsdEV2YWx1YXRvcgorICAgIGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHN0YXR1
c01hcCkKKyAgICAgICAgQHJ1bmxpc3QgPSBydW5saXN0CisgICAgICAgIEBzdGF0dXNNYXAgPSBz
dGF0dXNNYXAKKyAgICBlbmQKKyAgICBkZWYgbm9SZXN1bHQocGxhbikKKyAgICAgICAgIyBYWFg6
IG1heWJlIGZvY3VzIG9uIGluY29tcGxldGUgaW4gcmVwb3J0aW5nPworICAgIGVuZAorICAgIGRl
ZiBwYXNzZWQocGxhbikKKyAgICBlbmQKKyAgICBkZWYgZmFpbGVkKHBsYW4pCisgICAgZW5kCisg
ICAgZGVmIHdhc0ZsYWt5QW5kUGFzc2VkKHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMpCisgICAgZW5k
CisgICAgZGVmIHZpc2l0aW5nKHBsYW4pCisgICAgZW5kCisgICAgZGVmIHZpc2l0IQorICAgICAg
ICBAcnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHxwbGFufAorICAgICAgICAgICAgdmlzaXRp
bmcocGxhbikKKyAgICAgICAgICAgIGlmIG5vdCBAc3RhdHVzTWFwLmhhc19rZXk/KHBsYW4uaW5k
ZXgpCisgICAgICAgICAgICAgICAgbm9SZXN1bHQocGxhbikKKyAgICAgICAgICAgICAgICBuZXh0
CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIHN0YXR1c2VzID0gQHN0YXR1c01hcFtwbGFu
LmluZGV4XQorICAgICAgICAgICAgdGVzdFdhc1N1Y2Nlc3NmdWwgPSBuaWwKKyAgICAgICAgICAg
IGlmIHBsYW4ucmV0cnlQYXJhbWV0ZXJzLm5pbD8KKyAgICAgICAgICAgICAgICAjIElmIGFueSBv
ZiB0aGUgcmVzdWx0cyB3ZSBnb3Qgd2FzIGEgcGFzcywgY29uc2lkZXIgdGhlCisgICAgICAgICAg
ICAgICAgIyB0ZXN0IHN1Y2Nlc3NmdWwuIFRoZSBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCwgdW5s
ZXNzIGEKKyAgICAgICAgICAgICAgICAjIHRlc3QgaXMgbWFya2VkIGFzIGZsYWt5LCBmYWlsdXJl
cyBhcmUgYmVjYXVzZSBvZgorICAgICAgICAgICAgICAgICMgaW5mcmFzdHJ1Y3R1cmUgaXNzdWVz
ICh3aGljaCBpcyB3aHkgdGhlIHRlc3Qgd2FzIHJ1bgorICAgICAgICAgICAgICAgICMgbXVsdGlw
bGUgdGltZXMgaW4gdGhlIGZpcnN0IHBsYWNlKS4KKyAgICAgICAgICAgICAgICB0ZXN0V2FzU3Vj
Y2Vzc2Z1bCA9IHN0YXR1c2VzLmluY2x1ZGU/KFNUQVRVU19GSUxFX1BBU1MpCisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFdhc1N1Y2Nlc3NmdWwgPSBwbGFuLnJldHJ5UGFy
YW1ldGVycy5yZXN1bHQoc3RhdHVzZXMpCisgICAgICAgICAgICAgICAgaWYgdGVzdFdhc1N1Y2Nl
c3NmdWwubmlsPworICAgICAgICAgICAgICAgICAgICAjIE5vdCBjb21wbGV0ZWQgeWV0CisgICAg
ICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgaWYgdGVzdFdhc1N1Y2Nlc3NmdWwKKyAgICAgICAgICAgICAgICBwYXNz
ZWQocGxhbikKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmYWlsZWQocGxhbikK
KyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgbnJlc3VsdHMgPSBzdGF0dXNlcy51bmlxLnNp
emUKKyAgICAgICAgICAgIGlmIG5yZXN1bHRzIDwgMQorICAgICAgICAgICAgICAgICRzdGRlcnIu
cHV0cygiVW5leHBlY3RlZCBudW1iZXIgb2YgcmVzdWx0czogI3tucmVzdWx0c30gZm9yIHBsYW4g
I3twbGFufSIpCisgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgbnVtYmVyIG9mIHJl
c3VsdHMiCisgICAgICAgICAgICBlbHNpZiBucmVzdWx0cyAhPSAxIGFuZCB0ZXN0V2FzU3VjY2Vz
c2Z1bAorICAgICAgICAgICAgICAgIHdhc0ZsYWt5QW5kUGFzc2VkKHBsYW4sIHN0YXR1c2VzLmNv
dW50KFNUQVRVU19GSUxFX1BBU1MpLCBzdGF0dXNlcy5zaXplKQorICAgICAgICAgICAgZW5kCisg
ICAgICAgIH0KKyAgICBlbmQKK2VuZAorCisjIFNpbXBsZSBiZWFuIGNvdW50aW5nIGNsYXNzIHdp
dGggbm8gc2lkZS1lZmZlY3RzLgorY2xhc3MgVGVzdFJlc3VsdEV2YWx1YXRvclNpbXBsZSA8IFRl
c3RSZXN1bHRFdmFsdWF0b3IKKyAgICBhdHRyX3JlYWRlciA6dGVzdHNQYXNzZWQsIDp0ZXN0c0Zh
aWxlZAorICAgIGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgc3Vw
ZXIocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBAdGVzdHNQYXNzZWQgPSBTZXQubmV3Cisg
ICAgICAgIEB0ZXN0c0ZhaWxlZCA9IFNldC5uZXcKKyAgICAgICAgQG5vUmVzdWx0ID0gU2V0Lm5l
dworICAgICAgICBAYWxsID0gU2V0Lm5ldworICAgIGVuZAorICAgIGRlZiB2aXNpdGluZyhwbGFu
KQorICAgICAgICBAYWxsLmFkZChwbGFuKQorICAgIGVuZAorICAgIGRlZiBwYXNzZWQocGxhbikK
KyAgICAgICAgQHRlc3RzUGFzc2VkLmFkZChwbGFuKQorICAgIGVuZAorICAgIGRlZiBmYWlsZWQo
cGxhbikKKyAgICAgICAgQHRlc3RzRmFpbGVkLmFkZChwbGFuKQorICAgIGVuZAorICAgIGRlZiBu
b1Jlc3VsdChwbGFuKQorICAgICAgICBAbm9SZXN1bHQuYWRkKHBsYW4pCisgICAgZW5kCisgICAg
ZGVmIGNvbXBsZXRlZAorICAgICAgICBAdGVzdHNQYXNzZWQgfCBAdGVzdHNGYWlsZWQKKyAgICBl
bmQKKyAgICBkZWYgbWlzc2luZworICAgICAgICBAbm9SZXN1bHQKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBSZXN1bHRzV3JpdGVyCisgICAgZGVmIGluaXRpYWxpemUKKyAgICAgICAgQGZpbGVzID0g
e30KKyAgICBlbmQKKyAgICBkZWYgYXBwZW5kKGZpbGVuYW1lLCBzKQorICAgICAgICBpZiBub3Qg
QGZpbGVzLmhhc19rZXk/KGZpbGVuYW1lKQorICAgICAgICAgICAgQGZpbGVzW2ZpbGVuYW1lXSA9
IEZpbGUub3Blbigkb3V0cHV0RGlyICsgZmlsZW5hbWUsICJhIikKKyAgICAgICAgZW5kCisgICAg
ICAgIEBmaWxlc1tmaWxlbmFtZV0ucHV0cyhzKQorICAgIGVuZAorICAgIGRlZiBhcHBlbmRGYWls
dXJlKHBsYW4pCisgICAgICAgIGFwcGVuZCgiZmFpbGVkIiwgcGxhbi5uYW1lKQorICAgIGVuZAor
ICAgIGRlZiBhcHBlbmRQYXNzKHBsYW4pCisgICAgICAgIGFwcGVuZCgicGFzc2VkIiwgcGxhbi5u
YW1lKQorICAgIGVuZAorICAgIGRlZiBhcHBlbmROb1Jlc3VsdChwbGFuKQorICAgICAgICBhcHBl
bmQoIm5vcmVzdWx0IiwgcGxhbi5uYW1lKQorICAgIGVuZAorICAgIGRlZiBhcHBlbmRGbGFreShw
bGFuLCBzdWNjZXNzZXMsIHRyaWVzKQorICAgICAgICBhcHBlbmQoImZsYWt5IiwgIiN7cGxhbi5u
YW1lfSAje3N1Y2Nlc3Nlc30gI3t0cmllc30iKQorICAgIGVuZAorICAgIGRlZiBhcHBlbmRSZXN1
bHQocGxhbiwgZGlkUGFzcykKKyAgICAgICAgYXBwZW5kKCJyZXN1bHRzIiwgIiN7cGxhbi5uYW1l
fTogI3tkaWRQYXNzID8gJ1BBU1MnIDogJ0ZBSUwnfSIpCisgICAgZW5kCisgICAgZGVmIGNsb3Nl
CisgICAgICAgIEBmaWxlcy5lYWNoX3ZhbHVlIHsgfGZ8CisgICAgICAgICAgICBmLmNsb3NlCisg
ICAgICAgIH0KKyAgICAgICAgQGZpbGVzLmNsZWFyCisgICAgZW5kCitlbmQKKworIyBGaW5hbCBh
Y2NvdW50aW5nIG9mIHJlc3VsdHMuCitjbGFzcyBUZXN0UmVzdWx0RXZhbHVhdG9yRmluYWwgPCBU
ZXN0UmVzdWx0RXZhbHVhdG9yCisgICAgYXR0cl9yZWFkZXIgOm5vcmVzdWx0LCA6ZmFtaWx5TWFw
CisgICAgZGVmIGluaXRpYWxpemUocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBzdXBlcihy
dW5saXN0LCBzdGF0dXNNYXApCisgICAgICAgIEBub3Jlc3VsdCA9IDAKKyAgICAgICAgQGZhbWls
eU1hcCA9IHt9CisgICAgICAgIEB3cml0ZXIgPSBSZXN1bHRzV3JpdGVyLm5ldworICAgIGVuZAor
ICAgIGRlZiBub1Jlc3VsdChwbGFuKQorICAgICAgICBAd3JpdGVyLmFwcGVuZE5vUmVzdWx0KHBs
YW4pCisgICAgICAgIEBub3Jlc3VsdCArPSAxCisgICAgZW5kCisgICAgZGVmIHBhc3NlZChwbGFu
KQorICAgICAgICBAd3JpdGVyLmFwcGVuZFBhc3MocGxhbikKKyAgICAgICAgYXBwZW5kUmVzdWx0
KHBsYW4sIHRydWUpCisgICAgICAgIGFkZFRvRmFtaWx5TWFwKHBsYW4sICJQQVNTIikKKyAgICBl
bmQKKyAgICBkZWYgZmFpbGVkKHBsYW4pCisgICAgICAgIEB3cml0ZXIuYXBwZW5kRmFpbHVyZShw
bGFuKQorICAgICAgICBhcHBlbmRSZXN1bHQocGxhbiwgZmFsc2UpCisgICAgICAgIGFkZFRvRmFt
aWx5TWFwKHBsYW4sICJGQUlMIikKKyAgICBlbmQKKyAgICBkZWYgd2FzRmxha3lBbmRQYXNzZWQo
cGxhbiwgc3VjY2Vzc2VzLCB0cmllcykKKyAgICAgICAgQHdyaXRlci5hcHBlbmRGbGFreShwbGFu
LCBzdWNjZXNzZXMsIHRyaWVzKQorICAgIGVuZAorICAgIHByaXZhdGUKKyAgICBkZWYgYXBwZW5k
UmVzdWx0KHBsYW4sIHN1Y2Nlc3NmdWwpCisgICAgICAgIEB3cml0ZXIuYXBwZW5kUmVzdWx0KHBs
YW4sIHN1Y2Nlc3NmdWwpCisgICAgZW5kCisgICAgZGVmIGFkZFRvRmFtaWx5TWFwKHBsYW4sIHJl
c3VsdCkKKyAgICAgICAgdW5sZXNzIGZhbWlseU1hcFtwbGFuLmZhbWlseV0KKyAgICAgICAgICAg
IGZhbWlseU1hcFtwbGFuLmZhbWlseV0gPSBbXQorICAgICAgICBlbmQKKyAgICAgICAgZmFtaWx5
TWFwW3BsYW4uZmFtaWx5XSA8PCB7IDpyZXN1bHQgPT4gcmVzdWx0LCA6cGxhbiA9PiBwbGFufQor
ICAgIGVuZAorZW5kCisKK2RlZiB2ZXJpZnlDb21wbGV0ZWRUZXN0c01hdGNoRXhwZWN0ZWQoc3Rh
dHVzTWFwLCBjb21wbGV0ZWQsIGV4cGVjdGVkKQorICAgIGlmIGNvbXBsZXRlZCAhPSBleHBlY3Rl
ZAorICAgICAgICB1bmV4cGVjdGVkbHlDb21wbGV0ZWQgPSAoY29tcGxldGVkIC0gZXhwZWN0ZWQp
LmNvbGxlY3QgeyB8cGxhbnwKKyAgICAgICAgICAgICIjI3twbGFuLmluZGV4fTogI3tzdGF0dXNN
YXBbcGxhbi5pbmRleF19IgorICAgICAgICB9LmpvaW4oIiB8ICIpCisgICAgICAgICRzdGRlcnIu
cHV0cygiVW5leHBlY3RlZGx5IGNvbXBsZXRlZDogI3t1bmV4cGVjdGVkbHlDb21wbGV0ZWR9IikK
KyAgICAgICAgZXhwZWN0ZWRCdXROb3RDb21wbGV0ZWQgPSAoZXhwZWN0ZWQgLSBjb21wbGV0ZWQp
LmNvbGxlY3QgeyB8cGxhbnwKKyAgICAgICAgICAgICIjI3twbGFuLmluZGV4fTogI3tzdGF0dXNN
YXBbcGxhbi5pbmRleF19IgorICAgICAgICB9LmpvaW4oIiB8ICIpCisgICAgICAgICRzdGRlcnIu
cHV0cygiRXhwZWN0ZWQgYnV0IG5vdCBjb21wbGV0ZWQ6ICN7ZXhwZWN0ZWRCdXROb3RDb21wbGV0
ZWR9IikKKyAgICAgICAgcmFpc2UgIm1pc21hdGNoIgorICAgIGVuZAorZW5kCisKK21vZHVsZSBU
ZXN0UmVzdWx0RXZhbHVhdG9yU2VsZlRlc3RzCisgICAgZGVmIFRlc3RSZXN1bHRFdmFsdWF0b3JT
ZWxmVGVzdHMuc2VsZlRlc3RUZXN0UmVzdWx0RXZhbHVhdG9yCisgICAgICAgIHJ1bmxpc3QgPSBb
XQorICAgICAgICBzdGF0dXNNYXAgPSB7fQorICAgICAgICBleHBlY3RlZFBhc3MgPSBTZXQubmV3
CisgICAgICAgIGV4cGVjdGVkRmFpbCA9IFNldC5uZXcKKyAgICAgICAgdGMgPSBTdHJ1Y3QubmV3
KDpzdGF0dXNlcywgOmV4cGVjdGVkUGFzcykKKyAgICAgICAgWworICAgICAgICAgICAgdGMubmV3
KFtTVEFUVVNfRklMRV9QQVNTXSwgdHJ1ZSksCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19G
SUxFX1BBU1NdLCB0cnVlKSwKKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTUywg
U1RBVFVTX0ZJTEVfUEFTU10sIHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklM
RV9QQVNTLCBTVEFUVVNfRklMRV9GQUlMXSwgdHJ1ZSksCisgICAgICAgICAgICB0Yy5uZXcoW1NU
QVRVU19GSUxFX0ZBSUxdLCBmYWxzZSksCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxF
X0ZBSUwsIFNUQVRVU19GSUxFX0ZBSUxdLCBmYWxzZSksCisgICAgICAgIF0uZWFjaF93aXRoX2lu
ZGV4IHsKKyAgICAgICAgICAgIHx0ZXN0LCB0ZXN0SW5kZXh8CisgICAgICAgICAgICBwbGFuID0g
QmFzZVBsYW4ubW9jaygiZiIsICJ0I3t0ZXN0SW5kZXh9IikKKyAgICAgICAgICAgIHJ1bmxpc3Qg
PDwgcGxhbgorICAgICAgICAgICAgc3RhdHVzTWFwW3BsYW4uaW5kZXhdID0gdGVzdC5zdGF0dXNl
cworICAgICAgICAgICAgaWYgdGVzdC5leHBlY3RlZFBhc3MKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBhc3MuYWRkKHBsYW4pCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRGYWlsLmFkZChwbGFuKQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAg
ZXZhbHVhdG9yID0gVGVzdFJlc3VsdEV2YWx1YXRvclNpbXBsZS5uZXcocnVubGlzdCwgc3RhdHVz
TWFwKQorICAgICAgICBldmFsdWF0b3IudmlzaXQhCisKKyAgICAgICAgaWYgZXhwZWN0ZWRQYXNz
ICE9IGV2YWx1YXRvci50ZXN0c1Bhc3NlZAorICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJleHBl
Y3RlZFBhc3M6ICN7ZXhwZWN0ZWRQYXNzfSIpCisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlBh
c3NlZDogI3tldmFsdWF0b3IudGVzdHNQYXNzZWR9IikKKyAgICAgICAgICAgIHJhaXNlICJleHBl
Y3RlZFBhc3MgbWlzbWF0Y2giCisgICAgICAgIGVuZAorICAgICAgICBpZiBleHBlY3RlZEZhaWwg
IT0gZXZhbHVhdG9yLnRlc3RzRmFpbGVkCisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoImV4cGVj
dGVkRmFpbDogI3tleHBlY3RlZEZhaWx9IikKKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiRmFp
bGVkOiAje2V2YWx1YXRvci50ZXN0c0ZhaWxlZH0iKQorICAgICAgICAgICAgcmFpc2UgImV4cGVj
dGVkRmFpbCBtaXNtYXRjaCIKKyAgICAgICAgZW5kCisgICAgZW5kCisKKyAgICBkZWYgZ2V0Q29t
cGxldGVkVGVzdHNGcm9tU3RhdHVzTWFwKHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgZXZh
bHVhdG9yID0gVGVzdFJlc3VsdEV2YWx1YXRvclNpbXBsZS5uZXcocnVubGlzdCwgc3RhdHVzTWFw
KQorICAgICAgICBldmFsdWF0b3IudmlzaXQhCisgICAgICAgIGV2YWx1YXRvci5jb21wbGV0ZWQK
KyAgICBlbmQKKworICAgIGRlZiBUZXN0UmVzdWx0RXZhbHVhdG9yU2VsZlRlc3RzLnNlbGZUZXN0
R2V0Q29tcGxldGVkVGVzdHNGcm9tU3RhdHVzTWFwCisgICAgICAgIHJ1bmxpc3QgPSBbXQorICAg
ICAgICBleHBlY3RDb21wbGV0ZWQgPSBTZXQubmV3CisgICAgICAgIHN0YXR1c01hcCA9IHt9Cisg
ICAgICAgIHRjID0gU3RydWN0Lm5ldyg6c3RhdHVzZXMsIDpyZXRyeVBhcmFtZXRlcnMsIDpzaG91
bGRDb3VudEFzQ29tcGxldGVkKQorICAgICAgICBbCisgICAgICAgICAgICAjIE5vIHJlc3VsdHMg
PT4gbm90IGNvbXBsZXRlZAorICAgICAgICAgICAgdGMubmV3KG5pbCwgbmlsLCBmYWxzZSksCisg
ICAgICAgICAgICB0Yy5uZXcobmlsLCBSZXRyeVBhcmFtZXRlcnMubmV3KDAuNiwgMiksIGZhbHNl
KSwKKworICAgICAgICAgICAgIyBQYXNzZWQvZmFpbGVkIGFuZCBub3QgZmxha3kgLT4gY29tcGxl
dGVkCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCBuaWwsIHRydWUpLAor
ICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMXSwgbmlsLCB0cnVlKSwKKworICAg
ICAgICAgICAgIyBJZiBpdCBoYXMgbXVsdGlwbGUgcmVzdWx0cyBhbmQgaXMgbm90IGEgZmxha3ks
IHRoYXQgbWVhbnMgaXQKKyAgICAgICAgICAgICMgd2FzIHJlLXJ1biBiZWNhdXNlIG9mIGluZnJh
c3RydWN0dXJlIGlzc3Vlcy4gQ291bnRzIGFzCisgICAgICAgICAgICAjIGNvbXBsZXRlZCByZWdh
cmRsZXNzIG9mIHRoZSBhY3R1YWwgcmVzdWx0cy4KKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVT
X0ZJTEVfUEFTUywgU1RBVFVTX0ZJTEVfUEFTU10sIG5pbCwgdHJ1ZSksCisgICAgICAgICAgICB0
Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX0ZBSUxdLCBuaWwsIHRydWUpLAor
ICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMLCBTVEFUVVNfRklMRV9GQUlMXSwg
bmlsLCB0cnVlKSwKKworICAgICAgICAgICAgIyBOb3QgY29tcGxldGVkOiB3ZSBoYXZlIG9uZSBy
dW4gcmVtYWluaW5nIGFuZCB0aGlzIGNvdWxkIGZsaXAKKyAgICAgICAgICAgICMgdGhlIHBlcmNl
bnRhZ2UuCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCBSZXRyeVBhcmFt
ZXRlcnMubmV3KDAuNiwgMiksIGZhbHNlKSwKKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJ
TEVfRkFJTF0sIFJldHJ5UGFyYW1ldGVycy5uZXcoMC40LCAyKSwgZmFsc2UpLAorCisgICAgICAg
ICAgICAjIEV2ZW4gaWYgdGhlIGxhc3Qgb25lIGZhaWxzIHdlJ3JlIHN0aWxsIGdvbm5hIGJlIGFi
b3ZlCisgICAgICAgICAgICAjIChyZXNwZWN0aXZlbHkgYmVsb3cpIHRoZSBwYXNzIHBlcmNlbnRh
Z2UuCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX1BB
U1NdLCBSZXRyeVBhcmFtZXRlcnMubmV3KDAuNSwgMyksIHRydWUpLAorICAgICAgICAgICAgdGMu
bmV3KFtTVEFUVVNfRklMRV9GQUlMLCBTVEFUVVNfRklMRV9GQUlMXSwgUmV0cnlQYXJhbWV0ZXJz
Lm5ldygwLjUsIDMpLCB0cnVlKSwKKyAgICAgICAgXS5lYWNoX3dpdGhfaW5kZXggeworICAgICAg
ICAgICAgfHRlc3QsIHRlc3RJbmRleHwKKyAgICAgICAgICAgIHBsYW4gPSBCYXNlUGxhbi5tb2Nr
KCJmIiwgInQje3Rlc3RJbmRleH0iLCB0ZXN0LnJldHJ5UGFyYW1ldGVycykKKyAgICAgICAgICAg
IHJ1bmxpc3QgPDwgcGxhbgorICAgICAgICAgICAgaWYgbm90IHRlc3Quc3RhdHVzZXMubmlsPwor
ICAgICAgICAgICAgICAgIHN0YXR1c01hcFtwbGFuLmluZGV4XSA9IHRlc3Quc3RhdHVzZXMKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgaWYgdGVzdC5zaG91bGRDb3VudEFzQ29tcGxldGVk
CisgICAgICAgICAgICAgICAgZXhwZWN0Q29tcGxldGVkLmFkZChwbGFuKQorICAgICAgICAgICAg
ZW5kCisgICAgICAgIH0KKyAgICAgICAgZXZhbHVhdG9yID0gVGVzdFJlc3VsdEV2YWx1YXRvclNp
bXBsZS5uZXcocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBldmFsdWF0b3IudmlzaXQhCisK
KyAgICAgICAgdmVyaWZ5Q29tcGxldGVkVGVzdHNNYXRjaEV4cGVjdGVkKHN0YXR1c01hcCwgZXZh
bHVhdG9yLmNvbXBsZXRlZCwgZXhwZWN0Q29tcGxldGVkKQorICAgIGVuZAorICAgIGRlZiBUZXN0
UmVzdWx0RXZhbHVhdG9yU2VsZlRlc3RzLnJ1bgorICAgICAgICBUZXN0UmVzdWx0RXZhbHVhdG9y
U2VsZlRlc3RzLnNlbGZUZXN0VGVzdFJlc3VsdEV2YWx1YXRvcgorICAgICAgICBUZXN0UmVzdWx0
RXZhbHVhdG9yU2VsZlRlc3RzLnNlbGZUZXN0R2V0Q29tcGxldGVkVGVzdHNGcm9tU3RhdHVzTWFw
CisgICAgZW5kCitlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444922</attachid>
            <date>2021-11-21 03:04:51 -0800</date>
            <delta_ts>2021-11-22 00:46:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232529-20211121120448.patch</filename>
            <type>text/plain</type>
            <size>123819</size>
            <attacher name="Angelos Oikonomopoulos">angelos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDk4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDgzZWZjMjhhYWQzNTU0MzZmYWJlMTQxZDc2NTg3MDhh
MDNmNGE0My4uYTIxMTU1NmQzYWQ1ODU2ZDgxMjc4N2M4MmM1OWY4MDM0OWU0MTI3YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2
IEBACisyMDIxLTExLTIxICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIE1vdmUgZGV0ZWN0aW9uIG9mIGZsYWt5IEpTQyB0ZXN0cyB0byBydW4t
anNjLXN0cmVzcy10ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMyNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9uYXRoYW4gQmVkYXJkLgor
CisgICAgICAgIEN1cnJlbnRseSwgZmxha3kgZGV0ZWN0aW9uIGhhcHBlbnMgYnkKKyAgICAgICAg
UmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIG1lYW5zIHRoYXQg
d2UgZW5kIHVwCisgICAgICAgIHJlcnVubmluZyBhbGwgSlNDIHRlc3RzIHdoZW4gdGhlcmUncyBl
dmVuIGEgc2luZ2xlIGZhaWx1cmUuIEV2ZW4KKyAgICAgICAgd29yc2UsIHdoZW4gdGhlIHRyZWUg
aXMgYnJva2VuIChhcyBzb21ldGltZXMgaGFwcGVucyBvbiBBUk0zMiBhbmQKKyAgICAgICAgTUlQ
Uykgd2UgZW5kIHVwCisKKyAgICAgICAgMS4gcnVubmluZyB0aGUgdGVzdHMgb25jZSAodGhleSBm
YWlsKQorICAgICAgICAyLiBydW5uaW5nIGFsbCB0ZXN0cyBhZ2FpbgorICAgICAgICAzLiBydW5u
aW5nIGFsbCB0ZXN0cyBhZ2FpbiB3aXRob3V0IHRoZSBwYXRjaAorCisgICAgICAgIFRoaXMgbWVh
bnMgdGhlIHF1ZXVlIHNsb3dzIGRvd24gYSBsb3QsIHNpbmNlIGl0IHJ1bnMgYWxsIEpTQworICAg
ICAgICBzdHJlc3MgdGVzdHMgMyB0aW1lcy4KKworICAgICAgICBUaGlzIHBhdGNoIGF0dGVtcHRz
IHRvIGVsaW1pbmF0ZSBzdGVwIDIsIHdoaWxlIGFsc28gYmVpbmcgbW9yZQorICAgICAgICByZWxp
YWJsZSBhYm91dCBoYW5kbGluZyBmbGFreSB0ZXN0cy4gU2luY2Ugd2Ugbm8gbG9uZ2VyIG5lZWQg
dG8KKyAgICAgICAgcmVydW4gdGhlIHdob2xlIHRlc3Qgc3VpdGUsIHdlIGNhbiBzcGVuZCBtb3Jl
IENQVSB0aW1lIG9uCisgICAgICAgIGlkZW50aWZ5aW5nIHRlc3RzIHRoYXQgbWlnaHQgYmUgZmxh
a3kuIFRoZSB1c2VyIGNhbiBwYXNzIGluCisgICAgICAgIC0tdHJlYXQtZmFpbGluZy1hcy1mbGFr
eT1wYXNzUGVyY2VudGFnZSxtYXhUcmllcyxtYXhGYWlsaW5nLiBJZgorICAgICAgICBsZXNzIHRo
YW4gbWF4RmFpbGluZyB0ZXN0cyBmYWlsZWQsIHdlIHJ1biB0aGVtIGFnYWluICh1cCB0bworICAg
ICAgICBtYXhUcmllcykgdW50aWwgd2UgY2FuIHRlbGwgd2hldGhlciB0aGV5IHBhc3MgbW9yZSB0
aGFuCisgICAgICAgIHBhc3NQZXJjZW50YWdlIG9mIHRoZSB0aW1lLiBUaGlzIHNob3VsZCByZXN1
bHQgaW4gbGVzcyBmYWxzZQorICAgICAgICBwb3NpdGl2ZXMgY29tcGFyZWQgdG8gUmVSdW5KYXZh
U2NyaXB0Q29yZVRlc3RzLCBhcyB3ZSdsbCBubyBsb25nZXIKKyAgICAgICAgZGVjbGFyZSBhIGZs
YWt5IHRlc3QgYSBmYWlsdXJlIGlmIGl0IGhhcHBlbnMgdG8gZmFpbCB0d28gdGltZXMgaW4KKyAg
ICAgICAgYSByb3cuIEluIG9yZGVyIHRvIHJlbW92ZSBSZVJ1bkphdmFTY3JpcHRDb3JlVGVzdHMs
IHRoZSBwYXRjaAorICAgICAgICB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlcyAtLXRyZWF0LWZhaWxp
bmctYXMtZmxha3kgYnkgZGVmYXVsdCBpbiB0aGUKKyAgICAgICAgSlNDIEVXUyBxdWV1ZXMuCisK
KyAgICAgICAgSW1wbGVtZW50YXRpb24td2lzZSwgdGhlIHBhdGNoIGdlbmVyYWxpemVzIHRoZSBl
eGlzdGluZyByZXRyeSBsb29wIGluCisgICAgICAgIHJ1bi1qc2Mtc3RyZXNzLXRlc3RzIChmb3Ig
ZGVhbGluZyB3aXRoIGZsYWt5IHJlbW90ZSBob3N0cykgdG8gKGEpIHdvcmsKKyAgICAgICAgd2l0
aCBhbnkgcnVubmVyIGFuZCAoYikgYWxzbyByZXRyeSBmbGFreSB0ZXN0cy4gQXMgZmxha3kgaGFu
ZGxpbmcgaXMKKyAgICAgICAgaW1wcmFjdGljYWwgdG8gdGVzdCBtYW51YWxseSwgaXQgYWxzbyBh
YnN0cmFjdHMtb3V0IHRoZSByZXRyeSBsb2dpYyBzbworICAgICAgICB0aGF0IHdlIGNhbiB0ZXN0
IHdpdGggcHJlZGV0ZXJtaW5lZCByZXN1bHRzLiBUaGlzIG1lYW5zIHdlIG5lZWQgdG8KKyAgICAg
ICAgZS5nLiBwYXNzIHRoZSBydW5saXN0IGFyb3VuZCBpbnN0ZWFkIG9mIHRyZWF0aW5nIGl0IGFz
IGEgZ2xvYmFsLAorICAgICAgICBjYXB0dXJpbmcgdGhlIG1haW4gbG9naWMgaW4gY2xhc3NlcyBh
bmQgaGF2aW5nIGEgc3ViY2xhc3MgcHJvdmlkZQorICAgICAgICBtZXRob2RzIHRvIGJlIGNhbGxl
ZCBiYWNrIGFuZCBzbyBvbi4gVGhlIHBhdGNoIGRvZXMgbm90IHNoeSBhd2F5IGZyb20KKyAgICAg
ICAgcmVmYWN0b3JpbmcgY29kZSB3aGVuIGl0IG1ha2VzIHNlbnNlIGJ1dCBhbHNvIGRvZXNuJ3Qg
Z28gb3V0IG9mIGl0cworICAgICAgICB3YXkgdG8gcmVmYWN0b3IgKGUuZy4gdGhlcmUncyBzdGls
bCBhIGxvdCBvZiBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZQorICAgICAgICBkZWZhdWx0IGFuZCBy
dWJ5IHdyaXRlcnMpLgorCisgICAgICAgIERvd25zaWRlczogd2UgY2FuIG5vIGxvbmdlciBkZXRl
Y3QgZmxha2luZXNzIGluIHRoZSBiaW5hcnkgdGVzdHMKKyAgICAgICAgKHRlc3RhaXIsIHRlc3Ri
MywgLi4uKS4gSG93ZXZlciwgSSdtIG5vdCBhd2FyZSBvZiBhbnkgaW5zdGFuY2Ugb2YKKyAgICAg
ICAgZmxha2luZXNzIGluIHRob3NlIHRlc3RzLiBUaGUgcmV0cnkgbG9vcCBpcyBub3cgYmVpbmcg
dXNlZCBmb3IgYWxsCisgICAgICAgIHJ1bm5lcnMsIHdoaWNoIG1lYW5zIHRoZSByZXN1bHRzIGFu
YWx5c2lzIHBhdGggZm9yIGUuZy4gdGhlIG1ha2UKKyAgICAgICAgcnVubmVyIGlzIG5vdyBhIGJp
dCBtb3JlIGNvbXBsaWNhdGVkLiBEZXRlY3RpbmcgZmxha3kgdGVzdHMgbmVlZHMKKyAgICAgICAg
Y29kZSBzb21ld2hlcmUsIGJ1dCB0aGlzIG1vdmVzIHRoZSBkZXRlY3Rpb24gY29kZSBiZWZvcmUg
dGhlCisgICAgICAgIHJlc3VsdCByZXBvcnRpbmcsIHNvIGlzIGEgYml0IHJpc2tpZXIuIFRoZSBz
ZWxmIHRlc3RzIHNob3VsZAorICAgICAgICBjb3VudGVyYmFsYW5jZSB0aGlzLgorICAgICAgICAq
IENJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHk6CisgICAgICAgIEtpbGwgUmVSdW5KYXZhU2Ny
aXB0Q29yZVRlc3RzIGFuZCBlbmFibGUgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5LgorICAgICAg
ICBEZWZhdWx0cyB0byA2MCUgcGFzcyBwZXJjZW50YWdlLCAxMCBtYXhUcmllcyBhbmQgYSBsaW1p
dCBvZiAyMDAKKyAgICAgICAgZmFpbGluZyB0ZXN0cy4KKyAgICAgICAgKFJ1bkphdmFTY3JpcHRD
b3JlVGVzdHMpOgorICAgICAgICAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cy5fX2luaXRfXyk6Cisg
ICAgICAgIChSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLnN0YXJ0KToKKyAgICAgICAgKFJ1bkphdmFT
Y3JpcHRDb3JlVGVzdHMuZXZhbHVhdGVDb21tYW5kKToKKyAgICAgICAgKFJ1bkphdmFTY3JpcHRD
b3JlVGVzdHMuY29tbWFuZENvbXBsZXRlKToKKyAgICAgICAgKFJ1bkphdmFTY3JpcHRDb3JlVGVz
dHMuZ2V0UmVzdWx0U3VtbWFyeSk6CisgICAgICAgIChSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLl9h
ZGRUb0xvZyk6CisgICAgICAgIChBbmFseXplSlNDVGVzdHNSZXN1bHRzLnN0YXJ0KToKKyAgICAg
ICAgKFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cyk6IERlbGV0ZWQuCisgICAgICAgIChSZVJ1bkph
dmFTY3JpcHRDb3JlVGVzdHMuZXZhbHVhdGVDb21tYW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBD
SVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5OgorICAgICAgICBVcGRhdGUgdG8g
bWF0Y2ggdGhlIGNoYW5nZXMgaW4gc3RlcHMucHkuIFNvbWUgdGVzdGNhc2VzIG5vIGxvbmdlcgor
ICAgICAgICBhcHBseS4KKyAgICAgICAgKiBTY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJz
L3NoZWxsLXJ1bm5lci5zaDoKKyAgICAgICAgRG9uJ3QgZGVkdWNlIHRoZSB0ZXN0IGxpc3QgbWFu
dWFsbHksIGV4cGVjdCBpdCBhcyBhbiBhcmd1bWVudCBpbnN0ZWFkLgorICAgICAgICAqIFNjcmlw
dHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzOgorICAgICAgICBQcm9wYWdhdGUgaW5mbyBvbiB0
ZXN0IGZsYWtpbmVzcy4KKyAgICAgICAgKHJ1bkpTQ1N0cmVzc1Rlc3RzKToKKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOgorICAgICAgICBSZWZhY3RvciB0aGUgZXhlY3V0
aW9uIGxvZ2ljIHRvIHVzZSB0aGUgYWJzdHJhY3RlZC1vdXQgY29kZSBpbgorICAgICAgICBleGVj
dXRvci5yYi4gVXNlIHRoZSByZXRyeSBsb29wIG9uIGV2ZXJ5IHJ1bm5lci4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1kZWZhdWx0LnJiOgorICAg
ICAgICBVcGRhdGUgdGhlIHRlc3Qtd3JpdGVyIGZpbGVzIGZvciB0aGUgY2hhbmdlcyB0byBydW4t
anNjLXN0cmVzcy10ZXN0cy4KKyAgICAgICAgTW92ZSBwcmVwYXJlRm9vUnVubmVyIGFuZCB0ZXN0
UnVubmVyQ29tbWFuZCB0byBhIGNsYXNzIHNvIHRoYXQgd2UgY2FuCisgICAgICAgIGtlZXAgc3Rh
dGUgKGZvciB0aGUgbmV3IGFyZ3VtZW50IHRvIHRoZSBzaGVsbCBydW5uZXIpLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlzdGF0aW9uLnJi
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXJ1
YnkucmI6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC9leGVj
dXRvci5yYjogQWRkZWQuCisgICAgICAgIEltcGxlbWVudCBhIGdlbmVyaWMgcmV0cnkgbG9vcCBh
bmQgZGVmaW5lIGFuIGFycmF5IG9mIHZpcnR1YWwKKyAgICAgICAgdGVzdHMgKHVzaW5nIHByZWRl
ZmluZWQgdGVzdCByZXN1bHRzIGZvciBlYWNoIGl0ZXJhdGlvbikuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFsdWF0b3IucmI6IEFk
ZGVkLgorICAgICAgICBFbmNhcHN1bGF0ZSB0aGUgbG9naWMgb24gd2hldGhlciBhIHRlc3QgaGFz
IHBhc3NlZCBvciBub3QKKyAgICAgICAgKERpZCB3ZSBnZXQgYW55IHJlc3VsdHM/IFdlcmUgdGhv
c2UgcmVzdWx0cyBlbm91Z2ggdG8gZGVjbGFyZSBhCisgICAgICAgIGZsYWt5L25vbi1mbGFreSB0
ZXN0IGEgcGFzcz8pIGFuZCBhZGQgYSBudW1iZXIgb2YgdGVzdHMuCisKIDIwMjEtMTEtMTkgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBpbWFnZSBpbnRlcmZhY2Ugd2hlbiBidWlsZGlu
ZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBz
LnB5IGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9zdGVwcy5weQppbmRleCA0N2MwOGE0Y2U0
ODI5ZDM5NmQxYjcwOWFjZTE2MjA0MjE5YjU2MjgzLi5hYTgxNjYzMTRmMDcxMzc3YjYyNGRlMzJi
Y2Q5MzVlYTIzYjE5MmU1IDEwMDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0
ZXBzLnB5CisrKyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHkKQEAgLTE4MzQs
NiArMTgzNCw4IEBAIGNsYXNzIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoc2hlbGwuVGVzdCk6CiAg
ICAganNvbkZpbGVOYW1lID0gJ2pzY19yZXN1bHRzLmpzb24nCiAgICAgbG9nZmlsZXMgPSB7J2pz
b24nOiBqc29uRmlsZU5hbWV9CiAgICAgY29tbWFuZCA9IFsncGVybCcsICdUb29scy9TY3JpcHRz
L3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0
JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoanNvbkZpbGVOYW1lKSwgV2l0aFByb3BlcnRp
ZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKV0KKyAgICAjIFdlIHJlbHkgb24gcnVuLWpzYy1zdHJl
c3MtdGVzdHMgdG8gd2VlZCBvdXQgYW55IGZsYWt5IHRlc3RzCisgICAgY29tbWFuZF9leHRyYSA9
IFsnLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5PTAuNiwxMCwyMDAnXQogICAgIHByZWZpeCA9ICdq
c2NfJwogICAgIE5VTV9GQUlMVVJFU19UT19ESVNQTEFZX0lOX1NUQVRVUyA9IDUKIApAQCAtMTg0
MSwxMSArMTg0MywxMyBAQCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3Qp
OgogICAgICAgICBzaGVsbC5UZXN0Ll9faW5pdF9fKHNlbGYsIGxvZ0Vudmlyb249RmFsc2UsIHNp
Z3Rlcm1UaW1lPTEwLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5iaW5hcnlGYWlsdXJlcyA9IFtd
CiAgICAgICAgIHNlbGYuc3RyZXNzVGVzdEZhaWx1cmVzID0gW10KKyAgICAgICAgc2VsZi5mbGFr
eSA9IHt9CiAKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIHNlbGYubG9nX29ic2VydmVy
X2pzb24gPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcigpCiAgICAgICAgIHNlbGYuYWRk
TG9nT2JzZXJ2ZXIoJ2pzb24nLCBzZWxmLmxvZ19vYnNlcnZlcl9qc29uKQogCisKICAgICAgICAg
IyBhZGQgcmVtb3RlcyBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCB0byB0aGUgY29tbWFuZCBsaW5l
IGlmIG5lZWRlZAogICAgICAgICByZW1vdGVzZmlsZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3JlbW90
ZXMnLCBGYWxzZSkKICAgICAgICAgaWYgcmVtb3Rlc2ZpbGU6CkBAIC0xODYyLDYgKzE4NjYsNyBA
QCBjbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKHNoZWxsLlRlc3QpOgogICAgICAgICAgICAg
c2VsZi5jb21tYW5kLmV4dGVuZChbJy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12ZXJib3NlJ10pCiAK
ICAgICAgICAgYXBwZW5kQ3VzdG9tQnVpbGRGbGFncyhzZWxmLCBzZWxmLmdldFByb3BlcnR5KCdw
bGF0Zm9ybScpLCBzZWxmLmdldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nKSkKKyAgICAgICAgc2Vs
Zi5jb21tYW5kLmV4dGVuZChzZWxmLmNvbW1hbmRfZXh0cmEpCiAgICAgICAgIHJldHVybiBzaGVs
bC5UZXN0LnN0YXJ0KHNlbGYpCiAKICAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6
CkBAIC0xODcyLDcgKzE4NzcsMTQgQEAgY2xhc3MgUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhzaGVs
bC5UZXN0KToKICAgICAgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKICAgICAg
ICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbbWVzc2FnZV0sIFNVQ0NFU1MpCiAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3Rl
cChbVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLCBL
aWxsT2xkUHJvY2Vzc2VzKCksIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cygpXSkKKyAgICAgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoRmFpbGVkVGVzdHMnLCBUcnVlKQorICAgICAgICAg
ICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW1VuQXBwbHlQYXRjaElmUmVx
dWlyZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBpbGVKU0NX
aXRob3V0UGF0Y2goKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtpbGxP
bGRQcm9jZXNzZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzKCldKQogICAg
ICAgICByZXR1cm4gcmMKIAogICAgIGRlZiBjb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKToKQEAg
LTE4OTUsMTAgKzE5MDcsMTIgQEAgY2xhc3MgUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhzaGVsbC5U
ZXN0KToKICAgICAgICAgICAgIHNlbGYuYmluYXJ5RmFpbHVyZXMuYXBwZW5kKCd0ZXN0ZGZnJykK
ICAgICAgICAgaWYganNjX3Jlc3VsdHMuZ2V0KCdhbGxBcGlUZXN0c1Bhc3NlZCcpIGlzIEZhbHNl
OgogICAgICAgICAgICAgc2VsZi5iaW5hcnlGYWlsdXJlcy5hcHBlbmQoJ3Rlc3RhcGknKQotCiAg
ICAgICAgIHNlbGYuc3RyZXNzVGVzdEZhaWx1cmVzID0ganNjX3Jlc3VsdHMuZ2V0KCdzdHJlc3NU
ZXN0RmFpbHVyZXMnKQogICAgICAgICBpZiBzZWxmLnN0cmVzc1Rlc3RGYWlsdXJlczoKICAgICAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnc3RyZXNzX3Rlc3RfZmFpbHVy
ZXMnLCBzZWxmLnN0cmVzc1Rlc3RGYWlsdXJlcykKKyAgICAgICAgc2VsZi5mbGFreSA9IGpzY19y
ZXN1bHRzLmdldCgnZmxha3lBbmRQYXNzZWQnKQorICAgICAgICBpZiBzZWxmLmZsYWt5OgorICAg
ICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdmbGFreV9hbmRfcGFzc2Vk
Jywgc2VsZi5mbGFreSkKICAgICAgICAgaWYgc2VsZi5iaW5hcnlGYWlsdXJlczoKICAgICAgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnYmluYXJ5X2ZhaWx1cmVzJywgc2Vs
Zi5iaW5hcnlGYWlsdXJlcykKIApAQCAtMTkxOSw2ICsxOTMzLDggQEAgY2xhc3MgUnVuSmF2YVNj
cmlwdENvcmVUZXN0cyhzaGVsbC5UZXN0KToKICAgICAgICAgICAgICAgICBzdGF0dXMgKz0gJ0pT
QyB0ZXN0IGJpbmFyeSBmYWlsdXJle306IHt9Jy5mb3JtYXQocGx1cmFsU3VmZml4LCAnLCAnLmpv
aW4oc2VsZi5iaW5hcnlGYWlsdXJlcykpCiAKICAgICAgICAgICAgIHJldHVybiB7J3N0ZXAnOiBz
dGF0dXN9CisgICAgICAgIGVsaWYgc2VsZi5yZXN1bHRzID09IFNVQ0NFU1MgYW5kIHNlbGYuZmxh
a3k6CisgICAgICAgICAgICByZXR1cm4geydzdGVwJzogIlBhc3NlZCBKU0MgdGVzdHMgKCVkIGZs
YWt5KSIgJSBsZW4oc2VsZi5mbGFreSl9CiAKICAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3QuZ2V0
UmVzdWx0U3VtbWFyeShzZWxmKQogCkBAIC0xOTMxLDM1ICsxOTQ3LDYgQEAgY2xhc3MgUnVuSmF2
YVNjcmlwdENvcmVUZXN0cyhzaGVsbC5UZXN0KToKICAgICAgICAgbG9nLmFkZFN0ZG91dChtZXNz
YWdlKQogCiAKLWNsYXNzIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhSdW5KYXZhU2NyaXB0Q29y
ZVRlc3RzKToKLSAgICBuYW1lID0gJ2pzY29yZS10ZXN0LXJlcnVuJwotICAgIHByZWZpeCA9ICdq
c2NfcmVydW5fJwotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAg
ICByYyA9IHNoZWxsLlRlc3QuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkKLSAgICAgICAgZmly
c3RfcnVuX2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9m
YWlsdXJlcycsIFtdKSArIHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBb
XSkpCi0gICAgICAgIHNlY29uZF9ydW5fZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgn
anNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pICsgc2VsZi5nZXRQcm9wZXJ0eSgn
anNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgZmxha3lfZmFpbHVyZXMg
PSBmaXJzdF9ydW5fZmFpbHVyZXMudW5pb24oc2Vjb25kX3J1bl9mYWlsdXJlcykgLSBmaXJzdF9y
dW5fZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNlY29uZF9ydW5fZmFpbHVyZXMpCi0gICAgICAgIGZs
YWt5X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihzb3J0ZWQoZmxha3lfZmFpbHVyZXMpKQot
Ci0gICAgICAgIGlmIHJjID09IFNVQ0NFU1Mgb3IgcmMgPT0gV0FSTklOR1M6Ci0gICAgICAgICAg
ICBwbHVyYWxTdWZmaXggPSAncycgaWYgbGVuKGZsYWt5X2ZhaWx1cmVzKSA+IDEgZWxzZSAnJwot
ICAgICAgICAgICAgbWVzc2FnZSA9ICdGb3VuZCBmbGFreSB0ZXN0e306IHt9Jy5mb3JtYXQocGx1
cmFsU3VmZml4LCBmbGFreV9mYWlsdXJlc19zdHJpbmcpCi0gICAgICAgICAgICBzZWxmLmRlc2Ny
aXB0aW9uRG9uZSA9IG1lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNV
Q0NFU1MKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbbWVzc2FnZV0sIFNV
Q0NFU1MpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRj
aEZhaWxlZFRlc3RzJywgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRl
ckN1cnJlbnRTdGVwKFtVbkFwcGx5UGF0Y2hJZlJlcXVpcmVkKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Ns
b3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb21waWxlSlNDV2l0aG91dFBhdGNoKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBhdGNoKHZlcmlm
eUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBLaWxsT2xkUHJvY2Vzc2VzKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5KU0NUZXN0c1dpdGhvdXRQ
YXRjaCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cygpXSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLQogY2xhc3Mg
UnVuSlNDVGVzdHNXaXRob3V0UGF0Y2goUnVuSmF2YVNjcmlwdENvcmVUZXN0cyk6CiAgICAgbmFt
ZSA9ICdqc2NvcmUtdGVzdC13aXRob3V0LXBhdGNoJwogICAgIHByZWZpeCA9ICdqc2NfY2xlYW5f
dHJlZV8nCkBAIC0xOTc3LDM0ICsxOTY0LDI5IEBAIGNsYXNzIEFuYWx5emVKU0NUZXN0c1Jlc3Vs
dHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCk6CiAgICAgTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVkgPSAx
MAogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1
cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtd
KSkKLSAgICAgICAgZmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3Bl
cnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgW10pKQotICAgICAgICBzZWNvbmRfcnVuX3N0cmVz
c19mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3Rf
ZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIHNlY29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzID0gc2V0
KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbXSkpCisgICAg
ICAgIHN0cmVzc19mYWlsdXJlc193aXRoX3BhdGNoID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pz
Y19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSkKKyAgICAgICAgYmluYXJ5X2ZhaWx1cmVzX3dp
dGhfcGF0Y2ggPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFtd
KSkKICAgICAgICAgY2xlYW5fdHJlZV9zdHJlc3NfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9w
ZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkpCiAgICAgICAg
IGNsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19j
bGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKICAgICAgICAgY2xlYW5fdHJlZV9mYWls
dXJlcyA9IGxpc3QoY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVyZXMpICsgbGlzdChjbGVhbl90cmVl
X3N0cmVzc19mYWlsdXJlcykKICAgICAgICAgY2xlYW5fdHJlZV9mYWlsdXJlc19zdHJpbmcgPSAn
LCAnLmpvaW4oY2xlYW5fdHJlZV9mYWlsdXJlc1s6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExB
WV0pCiAKLSAgICAgICAgc3RyZXNzX2ZhaWx1cmVzX3dpdGhfcGF0Y2ggPSBmaXJzdF9ydW5fc3Ry
ZXNzX2ZhaWx1cmVzLmludGVyc2VjdGlvbihzZWNvbmRfcnVuX3N0cmVzc19mYWlsdXJlcykKLSAg
ICAgICAgYmluYXJ5X2ZhaWx1cmVzX3dpdGhfcGF0Y2ggPSBmaXJzdF9ydW5fYmluYXJ5X2ZhaWx1
cmVzLmludGVyc2VjdGlvbihzZWNvbmRfcnVuX2JpbmFyeV9mYWlsdXJlcykKLQotICAgICAgICBm
bGFreV9zdHJlc3NfZmFpbHVyZXMgPSBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1cmVzLnVuaW9uKHNl
Y29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKSAtIGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMuaW50
ZXJzZWN0aW9uKHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKQotICAgICAgICBmbGFreV9iaW5h
cnlfZmFpbHVyZXMgPSBmaXJzdF9ydW5fYmluYXJ5X2ZhaWx1cmVzLnVuaW9uKHNlY29uZF9ydW5f
YmluYXJ5X2ZhaWx1cmVzKSAtIGZpcnN0X3J1bl9iaW5hcnlfZmFpbHVyZXMuaW50ZXJzZWN0aW9u
KHNlY29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzKQotICAgICAgICBmbGFreV9mYWlsdXJlcyA9IHNv
cnRlZChsaXN0KGZsYWt5X2JpbmFyeV9mYWlsdXJlcykgKyBsaXN0KGZsYWt5X3N0cmVzc19mYWls
dXJlcykpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXQotICAgICAgICBmbGFreV9mYWls
dXJlc19zdHJpbmcgPSAnLCAnLmpvaW4oZmxha3lfZmFpbHVyZXMpCisgICAgICAgIGZsYWt5X3N0
cmVzc19mYWlsdXJlc193aXRoX3BhdGNoID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19mbGFr
eV9hbmRfcGFzc2VkJywge30pLmtleXMoKSkKKyAgICAgICAgY2xlYW5fdHJlZV9mbGFreV9zdHJl
c3NfZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfZmxha3lf
YW5kX3Bhc3NlZCcsIHt9KS5rZXlzKCkpCisgICAgICAgIGZsYWt5X3N0cmVzc19mYWlsdXJlcyA9
IHNvcnRlZChsaXN0KGZsYWt5X3N0cmVzc19mYWlsdXJlc193aXRoX3BhdGNoKSArIGxpc3QoY2xl
YW5fdHJlZV9mbGFreV9zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElT
UExBWV0KKyAgICAgICAgZmxha3lfZmFpbHVyZXNfc3RyaW5nID0gJywgJy5qb2luKGZsYWt5X3N0
cmVzc19mYWlsdXJlcykKIAogICAgICAgICBuZXdfc3RyZXNzX2ZhaWx1cmVzID0gc3RyZXNzX2Zh
aWx1cmVzX3dpdGhfcGF0Y2ggLSBjbGVhbl90cmVlX3N0cmVzc19mYWlsdXJlcwogICAgICAgICBu
ZXdfYmluYXJ5X2ZhaWx1cmVzID0gYmluYXJ5X2ZhaWx1cmVzX3dpdGhfcGF0Y2ggLSBjbGVhbl90
cmVlX2JpbmFyeV9mYWlsdXJlcwogICAgICAgICBzZWxmLm5ld19zdHJlc3NfZmFpbHVyZXNfdG9f
ZGlzcGxheSA9ICcsICcuam9pbihzb3J0ZWQobGlzdChuZXdfc3RyZXNzX2ZhaWx1cmVzKSlbOnNl
bGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQogICAgICAgICBzZWxmLm5ld19iaW5hcnlfZmFp
bHVyZXNfdG9fZGlzcGxheSA9ICcsICcuam9pbihzb3J0ZWQobGlzdChuZXdfYmluYXJ5X2ZhaWx1
cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQogCi0gICAgICAgIHNlbGYuX2Fk
ZFRvTG9nKCdzdGRlcnInLCAnXG5GYWlsdXJlcyBpbiBmaXJzdCBydW46IHt9Jy5mb3JtYXQoKGxp
c3QoZmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJlcykgKyBsaXN0KGZpcnN0X3J1bl9zdHJlc3NfZmFp
bHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0pKQotICAgICAgICBzZWxmLl9h
ZGRUb0xvZygnc3RkZXJyJywgJ1xuRmFpbHVyZXMgaW4gc2Vjb25kIHJ1bjoge30nLmZvcm1hdCgo
bGlzdChzZWNvbmRfcnVuX2JpbmFyeV9mYWlsdXJlcykgKyBsaXN0KHNlY29uZF9ydW5fc3RyZXNz
X2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKSkKLSAgICAgICAgc2Vs
Zi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZsYWt5IFRlc3RzOiB7fScuZm9ybWF0KGZsYWt5X2Zh
aWx1cmVzX3N0cmluZykpCisgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GYWls
dXJlcyB3aXRoIHBhdGNoOiB7fScuZm9ybWF0KGxpc3QoYmluYXJ5X2ZhaWx1cmVzX3dpdGhfcGF0
Y2gpICsgbGlzdChzdHJlc3NfZmFpbHVyZXNfd2l0aF9wYXRjaCkpWzpzZWxmLk5VTV9GQUlMVVJF
U19UT19ESVNQTEFZXSkKKyAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZsYWt5
IFRlc3RzIHdpdGggcGF0Y2g6IHt9Jy5mb3JtYXQoJywgJy5qb2luKGZsYWt5X3N0cmVzc19mYWls
dXJlc193aXRoX3BhdGNoKSkpCiAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5G
YWlsdXJlcyBvbiBjbGVhbiB0cmVlOiB7fScuZm9ybWF0KGNsZWFuX3RyZWVfZmFpbHVyZXNfc3Ry
aW5nKSkKKyAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZsYWt5IFRlc3RzIG9u
IGNsZWFuIHRyZWU6IHt9Jy5mb3JtYXQoJywgJy5qb2luKGNsZWFuX3RyZWVfZmxha3lfc3RyZXNz
X2ZhaWx1cmVzKSkpCiAKLSAgICAgICAgaWYgKG5vdCBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1cmVz
KSBhbmQgKG5vdCBmaXJzdF9ydW5fYmluYXJ5X2ZhaWx1cmVzKSBhbmQgKG5vdCBzZWNvbmRfcnVu
X3N0cmVzc19mYWlsdXJlcykgYW5kIChub3Qgc2Vjb25kX3J1bl9iaW5hcnlfZmFpbHVyZXMpOgor
ICAgICAgICBpZiAobm90IHN0cmVzc19mYWlsdXJlc193aXRoX3BhdGNoKSBhbmQgKG5vdCBiaW5h
cnlfZmFpbHVyZXNfd2l0aF9wYXRjaCk6CiAgICAgICAgICAgICAjIElmIHdlJ3ZlIG1hZGUgaXQg
aGVyZSwgdGhlbiBqc2MtdGVzdHMgYW5kIHJlLXJ1bi1qc2MtdGVzdHMgZmFpbGVkLCB3aGljaCBt
ZWFucwogICAgICAgICAgICAgIyB0aGVyZSBzaG91bGQgaGF2ZSBiZWVuIHNvbWUgdGVzdCBmYWls
dXJlcy4gT3RoZXJ3aXNlIHRoZXJlIGlzIHNvbWUgdW5leHBlY3RlZCBpc3N1ZS4KICAgICAgICAg
ICAgIGNsZWFuX3RyZWVfcnVuX3N0YXR1cyA9IHNlbGYuZ2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVf
cnVuX3N0YXR1cycsIEZBSUxVUkUpCkBAIC0yMDI5LDkgKzIwMTEsOSBAQCBjbGFzcyBBbmFseXpl
SlNDVGVzdHNSZXN1bHRzKGJ1aWxkc3RlcC5CdWlsZFN0ZXApOgogICAgICAgICAgICAgICAgICAg
ICBzZWxmLnNlbmRfZW1haWxfZm9yX3ByZV9leGlzdGluZ19mYWlsdXJlKGNsZWFuX3RyZWVfZmFp
bHVyZSkKICAgICAgICAgICAgIGlmIGxlbihjbGVhbl90cmVlX2ZhaWx1cmVzKSA+IHNlbGYuTlVN
X0ZBSUxVUkVTX1RPX0RJU1BMQVk6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAnIC4uLicK
LSAgICAgICAgICAgIGlmIGZsYWt5X2ZhaWx1cmVzOgorICAgICAgICAgICAgaWYgZmxha3lfc3Ry
ZXNzX2ZhaWx1cmVzOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gJyBGb3VuZCBmbGFreSB0
ZXN0czoge30nLmZvcm1hdChmbGFreV9mYWlsdXJlc19zdHJpbmcpCi0gICAgICAgICAgICAgICAg
Zm9yIGZsYWt5X2ZhaWx1cmUgaW4gZmxha3lfZmFpbHVyZXM6CisgICAgICAgICAgICAgICAgZm9y
IGZsYWt5X2ZhaWx1cmUgaW4gZmxha3lfc3RyZXNzX2ZhaWx1cmVzOgogICAgICAgICAgICAgICAg
ICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUoZmxha3lfZmFpbHVyZSkKICAg
ICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbbWVzc2FnZV0sIFNVQ0NFU1MpCiAg
ICAgICAgIHJldHVybiBkZWZlci5zdWNjZWVkKE5vbmUpCmRpZmYgLS1naXQgYS9Ub29scy9DSVN1
cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvQ0lTdXBwb3J0L2V3cy1i
dWlsZC9zdGVwc191bml0dGVzdC5weQppbmRleCA2Y2ZhODU1NTYyYmM4NzZmMTkzNTc1NzRhYjAy
ZGNlNGRiMjRkNzg2Li4xNWMyM2FmMTM2ZWJjODFmZjJlNmJiODE2MDk3OWQ3NTEyYjE5NDE3IDEw
MDY0NAotLS0gYS9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkKQEAgLTQ4LDcg
KzQ4LDcgQEAgZnJvbSBzdGVwcyBpbXBvcnQgKEFuYWx5emVBUElUZXN0c1Jlc3VsdHMsIEFuYWx5
emVDb21waWxlV2ViS2l0UmVzdWx0cywgQW5hbHl6ZUoKICAgICAgICAgICAgICAgICAgICBEb3du
bG9hZEJ1aWx0UHJvZHVjdCwgRG93bmxvYWRCdWlsdFByb2R1Y3RGcm9tTWFzdGVyLCBFV1NfQlVJ
TERfSE9TVE5BTUUsIEV4dHJhY3RCdWlsdFByb2R1Y3QsIEV4dHJhY3RUZXN0UmVzdWx0cywKICAg
ICAgICAgICAgICAgICAgICBGZXRjaEJyYW5jaGVzLCBGaW5kTW9kaWZpZWRDaGFuZ2VMb2dzLCBG
aW5kTW9kaWZpZWRMYXlvdXRUZXN0cywgR2l0UmVzZXRIYXJkLAogICAgICAgICAgICAgICAgICAg
IEluc3RhbGxCdWlsdFByb2R1Y3QsIEluc3RhbGxHdGtEZXBlbmRlbmNpZXMsIEluc3RhbGxXcGVE
ZXBlbmRlbmNpZXMsCi0gICAgICAgICAgICAgICAgICAgS2lsbE9sZFByb2Nlc3NlcywgUHJpbnRD
b25maWd1cmF0aW9uLCBQdXNoQ29tbWl0VG9XZWJLaXRSZXBvLCBSZVJ1bkFQSVRlc3RzLCBSZVJ1
bkphdmFTY3JpcHRDb3JlVGVzdHMsIFJlUnVuV2ViS2l0UGVybFRlc3RzLAorICAgICAgICAgICAg
ICAgICAgIEtpbGxPbGRQcm9jZXNzZXMsIFByaW50Q29uZmlndXJhdGlvbiwgUHVzaENvbW1pdFRv
V2ViS2l0UmVwbywgUmVSdW5BUElUZXN0cywgUmVSdW5XZWJLaXRQZXJsVGVzdHMsCiAgICAgICAg
ICAgICAgICAgICAgUmVSdW5XZWJLaXRUZXN0cywgUnVuQVBJVGVzdHMsIFJ1bkFQSVRlc3RzV2l0
aG91dFBhdGNoLCBSdW5CaW5kaW5nc1Rlc3RzLCBSdW5CdWlsZFdlYktpdE9yZ1VuaXRUZXN0cywK
ICAgICAgICAgICAgICAgICAgICBSdW5CdWlsZGJvdENoZWNrQ29uZmlnRm9yQnVpbGRXZWJLaXQs
IFJ1bkJ1aWxkYm90Q2hlY2tDb25maWdGb3JFV1MsIFJ1bkVXU1VuaXRUZXN0cywgUnVuUmVzdWx0
c2RicHlUZXN0cywKICAgICAgICAgICAgICAgICAgICBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLCBS
dW5KU0NUZXN0c1dpdGhvdXRQYXRjaCwgUnVuV2ViS2l0MVRlc3RzLCBSdW5XZWJLaXRQZXJsVGVz
dHMsIFJ1bldlYktpdFB5UHl0aG9uMlRlc3RzLApAQCAtMTM2MSw2ICsxMzYxLDcgQEAgY2xhc3Mg
VGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5qc2NfZGZnX2Fpcl9hbmRfc3RyZXNzX3Rlc3Rf
ZmFpbHVyZSA9ICcnJ3siYWxsREZHVGVzdHNQYXNzZWQiOmZhbHNlLCJhbGxNYXNtVGVzdHNQYXNz
ZWQiOnRydWUsImFsbEIzVGVzdHNQYXNzZWQiOnRydWUsImFsbEFpclRlc3RzUGFzc2VkIjpmYWxz
ZSwiYWxsQXBpVGVzdHNQYXNzZWQiOnRydWUsInN0cmVzc1Rlc3RGYWlsdXJlcyI6WyJzdHJlc3Mv
d2Vha3NldC1nYy5qcyJdfVxuJycnCiAgICAgICAgIHNlbGYuanNjX3NpbmdsZV9zdHJlc3NfdGVz
dF9mYWlsdXJlID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFzbVRlc3RzUGFz
c2VkIjp0cnVlLCJhbGxCM1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxBaXJUZXN0c1Bhc3NlZCI6dHJ1
ZSwic3RyZXNzVGVzdEZhaWx1cmVzIjpbInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3Bl
LmpzLmRmZy1lYWdlciJdLCJhbGxBcGlUZXN0c1Bhc3NlZCI6dHJ1ZX1cbicnJwogICAgICAgICBz
ZWxmLmpzY19tdWx0aXBsZV9zdHJlc3NfdGVzdF9mYWlsdXJlcyA9ICcnJ3siYWxsREZHVGVzdHNQ
YXNzZWQiOnRydWUsImFsbE1hc21UZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQjNUZXN0c1Bhc3NlZCI6
dHJ1ZSwiYWxsQWlyVGVzdHNQYXNzZWQiOnRydWUsInN0cmVzc1Rlc3RGYWlsdXJlcyI6WyJzdHJl
c3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZmctZWFnZXIiLCJzdHJlc3Mvc3dpdGNo
LW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZmctZWFnZXItbm8tY2ppdC12YWxpZGF0ZSIsInN0cmVz
cy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmVhZ2VyLWpldHRpc29uLW5vLWNqaXQiLCJz
dHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtZWFnZXIiLCJzdHJlc3Mvc3dp
dGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtZWFnZXItbm8tY2ppdCIsInN0cmVzcy9zd2l0
Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1lYWdlci1uby1jaml0LWIzbzEiLCJzdHJlc3Mv
c3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1iM28wIiwic3RyZXNzL3N3
aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQtbm8taW5saW5lLXZhbGlkYXRl
Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQtbm8tcHV0
LXN0YWNrLXZhbGlkYXRlIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRs
LW5vLWNqaXQtc21hbGwtcG9vbCIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpz
LmZ0bC1uby1jaml0LXZhbGlkYXRlLXNhbXBsaW5nLXByb2ZpbGVyIiwic3RyZXNzL3N3aXRjaC1v
bi1jaGFyLWxsaW50LXJvcGUuanMubm8tY2ppdC1jb2xsZWN0LWNvbnRpbnVvdXNseSIsInN0cmVz
cy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLm5vLWNqaXQtdmFsaWRhdGUtcGhhc2VzIiwi
c3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMubm8tZnRsIl0sImFsbEFwaVRlc3Rz
UGFzc2VkIjp0cnVlfVxuJycnCisgICAgICAgIHNlbGYuanNjX3Bhc3NlZF93aXRoX2ZsYWt5ID0g
JycneyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFzbVRlc3RzUGFzc2VkIjp0cnVlLCJh
bGxCM1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxBaXJUZXN0c1Bhc3NlZCI6dHJ1ZSwic3RyZXNzVGVz
dEZhaWx1cmVzIjpbXSwiZmxha3lBbmRQYXNzZWQiOnsic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxs
aW50LXJvcGUuanMuZGVmYXVsdCI6eyJQIjoiNyIsIlQiOiIxMCJ9fSwiYWxsQXBpVGVzdHNQYXNz
ZWQiOnRydWV9XG4nJycKICAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQogCiAg
ICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtMTM2OSw2ICsxMzcwLDcgQEAgY2xhc3MgVGVzdFJ1
bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICBkZWYgY29uZmlndXJlU3RlcChzZWxmLCBwbGF0Zm9ybT1Ob25lLCBmdWxs
UGxhdGZvcm09Tm9uZSwgY29uZmlndXJhdGlvbj1Ob25lKToKICAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cygpKQogICAgICAgICBzZWxmLnByZWZpeCA9IFJ1bkph
dmFTY3JpcHRDb3JlVGVzdHMucHJlZml4CisgICAgICAgIHNlbGYuY29tbWFuZF9leHRyYSA9IFJ1
bkphdmFTY3JpcHRDb3JlVGVzdHMuY29tbWFuZF9leHRyYQogICAgICAgICBpZiBwbGF0Zm9ybToK
ICAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgcGxhdGZvcm0pCiAgICAg
ICAgIGlmIGZ1bGxQbGF0Zm9ybToKQEAgLTEzODEsNyArMTM4Myw3IEBAIGNsYXNzIFRlc3RSdW5K
YXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dF
bnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAn
VG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICct
LW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVO
YW1lKSwgJy0tcmVsZWFzZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3Bl
cmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWls
ZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNv
bkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAogICAg
ICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyAwLApAQCAtMTM5NSw3ICsxMzk3
LDcgQEAgY2xhc3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRp
dGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21t
YW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0
cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5m
b3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJywgJy0tcmVtb3RlLWNvbmZpZy1m
aWxlPXJlbW90ZS1tYWNoaW5lcy5qc29uJywgJy0tbm8tdGVzdG1hc20nLCAnLS1uby10ZXN0YWly
JywgJy0tbm8tdGVzdGIzJywgJy0tbm8tdGVzdGRmZycsICctLW5vLXRlc3RhcGknLCAnLS1tZW1v
cnktbGltaXRlZCcsICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0
PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZScsICctLXJlbW90ZS1j
b25maWctZmlsZT1yZW1vdGUtbWFjaGluZXMuanNvbicsICctLW5vLXRlc3RtYXNtJywgJy0tbm8t
dGVzdGFpcicsICctLW5vLXRlc3RiMycsICctLW5vLXRlc3RkZmcnLCAnLS1uby10ZXN0YXBpJywg
Jy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12ZXJib3NlJywgJy0tanNjLW9ubHknXSArIHNlbGYuY29t
bWFuZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNl
bGYuanNvbkZpbGVOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg
ICsgMCwKQEAgLTE0MDgsNyArMTQxMCw3IEBAIGNsYXNzIFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3Jr
ZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9y
dW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcs
ICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcn
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1Njcmlw
dHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZh
c3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLWRl
YnVnJ10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dm
aWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICApCiAgICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JzkgZmFp
bHVyZXMgZm91bmQuJykKQEAgLTE0MjMsNyArMTQyNSw3IEBAIGNsYXNzIFRlc3RSdW5KYXZhU2Ny
aXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9n
ZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVz
dHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScu
Zm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17
MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLWRlYnVnJ10gKyBzZWxmLmNvbW1hbmRf
ZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDIKICAgICAg
ICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNjX3NpbmdsZV9z
dHJlc3NfdGVzdF9mYWlsdXJlKSwKQEAgLTE0NDAsNyArMTQ0Miw3IEBAIGNsYXNzIFRlc3RSdW5K
YXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0
PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3Jp
cHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91
dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLWRlYnVnJ10gKyBzZWxmLmNv
bW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDIK
ICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNjX211
bHRpcGxlX3N0cmVzc190ZXN0X2ZhaWx1cmVzKSwKQEAgLTE0NTcsNyArMTQ1OSw3IEBAIGNsYXNz
IFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rpcics
CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2
YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpz
b24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVu
LWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAn
LS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLWRlYnVnJ10g
KyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICArIDIKICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNl
bGYuanNjX21hc21fZmFpbHVyZSksCkBAIC0xNDc0LDcgKzE0NzYsNyBAQCBjbGFzcyBUZXN0UnVu
SmF2YVNjcmlwdENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAogICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRj
b3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1
dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFz
Y3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29u
LW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnXSArIHNl
bGYuY29tbWFuZF9leHRyYSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg
ICsgMgogICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5q
c2NfYjNfYW5kX3N0cmVzc190ZXN0X2ZhaWx1cmUpLApAQCAtMTQ5MSw3ICsxNDkzLDcgQEAgY2xh
c3MgVGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGly
JywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1q
YXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0t
anNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJywg
Jy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12ZXJib3NlJywgJy0tanNjLW9ubHknXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFz
Y3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29u
LW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnLCAnLS1t
ZW1vcnktbGltaXRlZCcsICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddICsgc2VsZi5jb21tYW5k
X2V4dHJhLAogICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyAyCiAgICAg
ICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1zZWxmLmpzY19kZmdfYWly
X2FuZF9zdHJlc3NfdGVzdF9mYWlsdXJlKSwKQEAgLTE1MDIsNTIgKzE1MDQsMzAgQEAgY2xhc3Mg
VGVzdFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5
KHNlbGYucHJlZml4ICsgJ2JpbmFyeV9mYWlsdXJlcycpLCBbJ3Rlc3RhaXInLCAndGVzdGRmZydd
KQogICAgICAgICByZXR1cm4gcmMKIAotCi1jbGFzcyBUZXN0UmVSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzKFRlc3RSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKToKLSAgICBkZWYgY29uZmlndXJlU3RlcChz
ZWxmLCBwbGF0Zm9ybT1Ob25lLCBmdWxsUGxhdGZvcm09Tm9uZSwgY29uZmlndXJhdGlvbj1Ob25l
KToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKCkpCi0g
ICAgICAgIHNlbGYucHJlZml4ID0gUmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLnByZWZpeAotICAg
ICAgICBpZiBwbGF0Zm9ybToKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3Jt
JywgcGxhdGZvcm0pCi0gICAgICAgIGlmIGZ1bGxQbGF0Zm9ybToKLSAgICAgICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsIGZ1bGxQbGF0Zm9ybSkKLSAgICAgICAgaWYgY29u
ZmlndXJhdGlvbjoKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24n
LCBjb25maWd1cmF0aW9uKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAg
c2VsZi5jb25maWd1cmVTdGVwKHBsYXRmb3JtPSdtYWMnLCBmdWxsUGxhdGZvcm09J21hYy1oaWdo
c2llcnJhJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInXSkKLSAgICAg
ICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdv
cmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRz
L3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0
JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxl
YXNlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpz
b25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICApICsKLSAgICAgICAgICAgIDAs
Ci0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBz
dGF0ZV9zdHJpbmc9J0ZvdW5kIGZsYWt5IHRlc3RzOiB0ZXN0MSwgdGVzdDInKQotICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3JlbW90ZV9zdWNjZXNzKHNlbGYp
OgorICAgIGRlZiB0ZXN0X3N1Y2Nlc3Nfd2l0aF9mbGFreShzZWxmKToKICAgICAgICAgc2VsZi5j
b25maWd1cmVTdGVwKHBsYXRmb3JtPSdqc2Mtb25seScsIGZ1bGxQbGF0Zm9ybT0nanNjLW9ubHkn
LCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncmVt
b3RlcycsICdyZW1vdGUtbWFjaGluZXMuanNvbicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCiAgICAgICAgIHNlbGYuZXhwZWN0
UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rpcics
CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlw
dGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0
cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZScsICctLXJlbW90
ZS1jb25maWctZmlsZT1yZW1vdGUtbWFjaGluZXMuanNvbicsICctLW5vLXRlc3RtYXNtJywgJy0t
bm8tdGVzdGFpcicsICctLW5vLXRlc3RiMycsICctLW5vLXRlc3RkZmcnLCAnLS1uby10ZXN0YXBp
JywgJy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS12ZXJib3NlJywgJy0tanNjLW9ubHknXSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICkgKwotICAgICAgICAgICAgMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3Jp
cHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91
dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2UnLCAnLS1tZW1v
cnktbGltaXRlZCcsICctLXZlcmJvc2UnLCAnLS1qc2Mtb25seSddICsgc2VsZi5jb21tYW5kX2V4
dHJhLAorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKyAwCisgICAgICAg
ICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1zZWxmLmpzY19wYXNzZWRfd2l0
aF9mbGFreSksCiAgICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1T
VUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIGZsYWt5IHRlc3Q6IHRlc3RtYXNtJykKLSAgICAg
ICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCisgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzICgxIGZsYWt5KScpCisg
ICAgICAgIHJjID0gc2VsZi5ydW5TdGVwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
LmdldFByb3BlcnR5KHNlbGYucHJlZml4ICsgJ2ZsYWt5X2FuZF9wYXNzZWQnKSwgeydzdHJlc3Mv
c3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZWZhdWx0JzogeydQJzogJzcnLCAnVCc6ICcx
MCd9fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KHNlbGYucHJl
Zml4ICsgJ3N0cmVzc190ZXN0X2ZhaWx1cmVzJyksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdiaW5hcnlfdGVzdF9mYWlsdXJl
cycpLCBOb25lKQorICAgICAgICByZXR1cm4gcmMKIAogCiBjbGFzcyBUZXN0UnVuSlNDVGVzdHNX
aXRob3V0UGF0Y2goQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCiAg
ICAgICAgIHNlbGYuanNvbkZpbGVOYW1lID0gJ2pzY19yZXN1bHRzLmpzb24nCisgICAgICAgIHNl
bGYuY29tbWFuZF9leHRyYSA9IFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoLmNvbW1hbmRfZXh0cmEK
ICAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQogCiAgICAgZGVmIHRlYXJEb3du
KHNlbGYpOgpAQCAtMTU2MCw3ICsxNTQwLDcgQEAgY2xhc3MgVGVzdFJ1bkpTQ1Rlc3RzV2l0aG91
dFBhdGNoKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3
b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0
cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFz
dCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVs
ZWFzZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMv
U2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZh
aWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwg
Jy0tcmVsZWFzZSddICsgc2VsZi5jb21tYW5kX2V4dHJhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAogICAgICAgICAgICAgICAg
ICAgICAgICAgKQogICAgICAgICAgICAgKyAwLApAQCAtMTU3NSw3ICsxNTU1LDcgQEAgY2xhc3Mg
VGVzdFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAg
ICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1b
J3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1i
dWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYu
anNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1h
bmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0t
bm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChz
ZWxmLmpzb25GaWxlTmFtZSksICctLWRlYnVnJ10gKyBzZWxmLmNvbW1hbmRfZXh0cmEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0s
CiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxv
Zygnc3RkaW8nLCBzdGRvdXQ9JzkgZmFpbHVyZXMgZm91bmQuJykKQEAgLTE1OTcsMzggKzE1Nzcs
MzQgQEAgY2xhc3MgVGVzdEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRp
dGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQW5hbHl6
ZUpTQ1Rlc3RzUmVzdWx0cygpKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNz
X3Rlc3RfZmFpbHVyZXMnLCBbXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFy
eV9mYWlsdXJlcycsIFtdKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3Ry
ZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3Jl
cnVuX2JpbmFyeV9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nf
Zmxha3lfYW5kX3Bhc3NlZCcsIHt9KQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xl
YW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQogICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdqc2NfY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVyZXMnLCBbXSkKKyAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfZmxha3lfYW5kX3Bhc3NlZCcsIHt9KQogICAgICAg
ICBBbmFseXplSlNDVGVzdHNSZXN1bHRzLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUgPSBs
YW1iZGEgc2VsZiwgdGVzdDogTm9uZQogICAgICAgICBBbmFseXplSlNDVGVzdHNSZXN1bHRzLnNl
bmRfZW1haWxfZm9yX3ByZV9leGlzdGluZ19mYWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5v
bmUKIAogICAgIGRlZiB0ZXN0X3NpbmdsZV9uZXdfc3RyZXNzX2ZhaWx1cmUoc2VsZik6CiAgICAg
ICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19z
dHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmJ5dGVjb2RlLWNh
Y2hlJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9m
YWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmJ5dGVjb2RlLWNhY2hlJ10pCiAgICAg
ICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3Vu
ZCAxIG5ldyBKU0Mgc3RyZXNzIHRlc3QgZmFpbHVyZTogc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmJ5
dGVjb2RlLWNhY2hlIChmYWlsdXJlKScpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQog
CiAgICAgZGVmIHRlc3Rfc2luZ2xlX25ld19iaW5hcnlfZmFpbHVyZShzZWxmKToKICAgICAgICAg
c2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFy
eV9mYWlsdXJlcycsIFsndGVzdG1hc20nXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNj
X3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdG1hc20nXSkKICAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3IEpTQyBi
aW5hcnkgZmFpbHVyZTogdGVzdG1hc20gKGZhaWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYu
cnVuU3RlcCgpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9uZXdfc3RyZXNzX2ZhaWx1cmUoc2Vs
Zik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9yIGkg
aW4gcmFuZ2UoMCwgMzApXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0
cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgw
LCAzMCldKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRl
X3N0cmluZz0nRm91bmQgMzAgbmV3IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlczogdGVzdDAsIHRl
c3QxLCB0ZXN0MTAsIHRlc3QxMSwgdGVzdDEyLCB0ZXN0MTMsIHRlc3QxNCwgdGVzdDE1LCB0ZXN0
MTYsIHRlc3QxNyAuLi4gKGZhaWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgp
CiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9uZXdfYmluYXJ5X2ZhaWx1cmUoc2VsZik6CiAgICAg
ICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19i
aW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJywgJ3Rlc3RhaXInLCAndGVzdGIzJywgJ3Rlc3Rk
ZmcnLCAndGVzdGFwaSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fYmlu
YXJ5X2ZhaWx1cmVzJywgWyd0ZXN0bWFzbScsICd0ZXN0YWlyJywgJ3Rlc3RiMycsICd0ZXN0ZGZn
JywgJ3Rlc3RhcGknXSkKICAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJF
LCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDUgbmV3IEpTQyBiaW5hcnkgZmFpbHVyZXM6IHRlc3RhaXIs
IHRlc3RhcGksIHRlc3RiMywgdGVzdGRmZywgdGVzdG1hc20gKGZhaWx1cmUpJykKICAgICAgICAg
cmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKQEAgLTE2MzYsMTUgKzE2MTIsMTIgQEAgY2xhc3MgVGVz
dEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydlczYueWFtbC9lczYvU2V0
X2l0ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVsdCddKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0bWFzbSddKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2VzNi55YW1sL2VzNi9T
ZXRfaXRlcmF0b3JfY2xvc2luZy5qcy5kZWZhdWx0J10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCiAgICAgICAgIHNl
bGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAxIG5l
dyBKU0MgYmluYXJ5IGZhaWx1cmU6IHRlc3RtYXNtLCBGb3VuZCAxIG5ldyBKU0Mgc3RyZXNzIHRl
c3QgZmFpbHVyZTogZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQg
KGZhaWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKICAgICBkZWYgdGVz
dF9zdHJlc3NfZmFpbHVyZV9vbl9jbGVhbl90cmVlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbmZp
Z3VyZVN0ZXAoKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFp
bHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJvci5qcy5kZWZhdWx0J10pCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2Zv
cmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2Ns
ZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJvci5qcy5k
ZWZhdWx0J10pCiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3Rh
dGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3Rl
cCgpCkBAIC0xNjYxLDM5ICsxNjM0LDI5IEBAIGNsYXNzIFRlc3RBbmFseXplSlNDVGVzdHNSZXN1
bHRzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHNlbGYuY29uZmlndXJlU3RlcCgpCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJl
c3NfdGVzdF9mYWlsdXJlcycsIFsnZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpz
LmRlZmF1bHQnXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJl
cycsIFsndGVzdGFpciddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3Ry
ZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2VzNi55YW1sL2VzNi9TZXRfaXRlcmF0b3JfY2xvc2luZy5q
cy5kZWZhdWx0J10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlf
ZmFpbHVyZXMnLCBbJ3Rlc3RhaXInXSkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2Ns
ZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2VzNi55YW1sL2VzNi9TZXRfaXRlcmF0
b3JfY2xvc2luZy5qcy5kZWZhdWx0J10pCiAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19j
bGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGFpciddKQogICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIEpTQyB0ZXN0
cycpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQogCi0gICAgZGVmIHRlc3RfZmxha3lf
c3RyZXNzX2FuZF9iaW5hcnlfZmFpbHVyZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJl
U3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJl
cycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGFwaSddKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIEpTQyB0
ZXN0cycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCiAgICAgZGVmIHRlc3RfZmxh
a3lfYW5kX2NvbnNpc3RlbnRfc3RyZXNzX2ZhaWx1cmVzKHNlbGYpOgogICAgICAgICBzZWxmLmNv
bmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3Rf
ZmFpbHVyZXMnLCBbJ3Rlc3QxJywgJ3Rlc3QyJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDInXSkKLSAgICAgICAgc2Vs
Zi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3
IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlOiB0ZXN0MiAoZmFpbHVyZSknKQorICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJ10pCisgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19mbGFreV9hbmRfcGFzc2VkJywgeyd0ZXN0Mic6IHsn
UCc6ICc3JywgJ1QnOiAnMTAnfX0pCisgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9
RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAxIG5ldyBKU0Mgc3RyZXNzIHRlc3QgZmFpbHVy
ZTogdGVzdDEgKGZhaWx1cmUpJykKICAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCiAKICAg
ICBkZWYgdGVzdF9mbGFreV9hbmRfY29uc2lzdGVudF9mYWlsdXJlc193aXRoX2NsZWFuX3RyZWVf
ZmFpbHVyZXMoc2VsZik6CiAgICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVz
dDInXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2Zh
aWx1cmVzJywgWyd0ZXN0MSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5f
dHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInXSkKKyAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MSddKQor
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfZmxha3lfYW5kX3Bhc3NlZCcsIHsndGVzdDIn
OiB7J1AnOiA3LCAnVCc6IDEwfX0pCisgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19jbGVh
bl90cmVlX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MSddKQogICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIEpTQyB0ZXN0
cycpCiAgICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQogCiAgICAgZGVmIHRlc3RfdW5leHBl
Y3RlZF9pbmZyYV9pc3N1ZShzZWxmKToKICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycs
IFtdKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVz
dF9mYWlsdXJlcycsIFtdKQogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1
bl9zdGF0dXMnLCBGQUlMVVJFKQogICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJF
VFJZLCBzdGF0ZV9zdHJpbmc9J1VuZXhwZWN0ZWQgaW5mcmFzdHJ1Y3R1cmUgaXNzdWUsIHJldHJ5
aW5nIGJ1aWxkIChyZXRyeSknKQpAQCAtMTcwMiw4ICsxNjY1LDkgQEAgY2xhc3MgVGVzdEFuYWx5
emVKU0NUZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICBkZWYgdGVzdF9wYXRjaF9icmVha2luZ19qc2NfdGVzdF9zdWl0ZShzZWxmKToK
ICAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
anNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQorICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2NfZmxha3lfYW5kX3Bhc3NlZCcsIHt9KQogICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQorICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9mbGFreV9hbmRfcGFzc2VkJywge30pCiAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX3N0YXR1cycsIFNVQ0NFU1Mp
CiAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5n
PSdGb3VuZCB1bmV4cGVjdGVkIGZhaWx1cmUgd2l0aCBwYXRjaCAoZmFpbHVyZSknKQogICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvanNjLXN0
cmVzcy10ZXN0LWhlbHBlcnMvc2hlbGwtcnVubmVyLnNoIGIvVG9vbHMvU2NyaXB0cy9qc2Mtc3Ry
ZXNzLXRlc3QtaGVscGVycy9zaGVsbC1ydW5uZXIuc2gKaW5kZXggZGVkNDBkNTIxOTgyMzBiODE1
MDI2MmM2YmU3MWFjMmQ4Y2E3MTJmZS4uM2Y2ZThlMmFhNTk2Y2YxMTYxMWM4MGMzYzdiZGU0NGYw
Mzc5MjAzMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVy
cy9zaGVsbC1ydW5uZXIuc2gKKysrIGIvVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVs
cGVycy9zaGVsbC1ydW5uZXIuc2gKQEAgLTIxLDYgKzIxLDggQEAKICMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CiAjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKK29yaWdpbmFsVGVzdExpc3Q9IiQxIgorCiBudW1Qcm9jcz1gc3lzY3Rs
IC1uIGh3LmFjdGl2ZWNwdSAyPi9kZXYvbnVsbGAKIGlmIFsgJD8gLWd0IDAgXQogdGhlbgpAQCAt
MzksNyArNDEsNyBAQCBsb2NrRGlyPSIubG9ja19kaXIiCiB0cmFwICJraWxsIC05IDAiIElOVCBI
VVAgVEVSTQogCiBlY2hvIDAgPiAke2luZGV4RmlsZX0KLWZpbmQgLiAtbWF4ZGVwdGggMSAtbmFt
ZSAndGVzdF9zY3JpcHRfKicgfCBzb3J0IC10ICdfJyAtazNuciA+ICR7dGVzdExpc3R9CitjcCAi
JG9yaWdpbmFsVGVzdExpc3QiICIkdGVzdExpc3QiCiAKIGxvY2tfdGVzdF9saXN0KCkgewogICAg
IHVudGlsIG1rZGlyICR7bG9ja0Rpcn0gMj4gL2Rldi9udWxsOyBkbyBzbGVlcCAwOyBkb25lCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyBiL1Rvb2xz
L1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCmluZGV4IDQ1YjRjNjg3MjQ1NjFlNzE5
MTRlY2UyOTNkYjAwMmM4ZDI5MDYwYTYuLjg2ZGEyMjVkMDhmOTgxMzQ1Zjc5NTEwNzI1YjY5MDcw
OWIyOGNiMmYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRl
c3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCkBAIC02NCw2
ICs2NCw3IEBAIG15ICRnbnVQYXJhbGxlbFJ1bm5lcjsKIG15ICR0ZXN0V3JpdGVyOwogbXkgJG1l
bW9yeUxpbWl0ZWQ7CiBteSAkcmVwb3J0RXhlY3V0aW9uVGltZTsKK215ICR0cmVhdEZhaWxpbmdB
c0ZsYWt5OwogCiBteSAkcmVwb3J0OwogbXkgJGJ1aWxkYm90TWFzdGVyOwpAQCAtMjgzLDYgKzI4
NCwxMSBAQCBVc2FnZTogJHByb2dyYW1OYW1lIFtvcHRpb25zXSBbb3B0aW9ucyB0byBwYXNzIHRv
IGJ1aWxkIHN5c3RlbV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tpcCB0ZXN0
cyB0YWdnZWQgd2l0aCAvL1xAc2tpcCBpZiBcJG1lbW9yeUxpbWl0ZWQKIAogICAtLXJlcG9ydC1l
eGVjdXRpb24tdGltZSAgICAgICBQcmludCBleGVjdXRpb24gdGltZSBmb3IgZWFjaCBzdHJlc3Mg
dGVzdC4KKyAgLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5ICAgICAgVHJlYXQgZmFpbGluZyBzdHJl
c3MgdGVzdHMgYXMgZmxha3kuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGVj
dHMgMyBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzOiBwYXNzUGVyY2VudGFnZSxtYXhUcmllcyxtYXhG
YWlsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGxlc3MgdGhhbiBtYXhG
YWlsaW5nIHRlc3RzIGZhaWxlZCwgcnVuIHRoZW0gYWdhaW4gKHVwIHRvIG1heFRyaWVzKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnRpbCB3ZSBjYW4gdGVsbCB3aGV0aGVyIHRo
ZXkgcGFzcyBtb3JlIHRoYW4gcGFzc1BlcmNlbnRhZ2Ugb2YgdGhlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWUgKGluIHdoaWNoIGNhc2UgdGhlIHRlc3QgaXMgY291bnRlZCBh
cyBhIHBhc3MpLgogCiAgIC0tZmlsdGVyICAgICAgICAgICAgICAgICAgICAgIE9ubHkgcnVuIHRl
c3RzIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLgogICAt
LWVudi12YXJzICAgICAgICAgICAgICAgICAgICBQYXNzIGEgbGlzdCBvZiBlbnZpcm9ubWVudCB2
YXJpYWJsZXMgdG8gc2V0IGJlZm9yZSBydW5uaW5nIHRlc3RzLgpAQCAtMzUyLDYgKzM1OCw3IEBA
IEdldE9wdGlvbnMoCiAgICAgJ3Rlc3Qtd3JpdGVyPXMnID0+IFwkdGVzdFdyaXRlciwKICAgICAn
bWVtb3J5LWxpbWl0ZWQnID0+IFwkbWVtb3J5TGltaXRlZCwKICAgICAncmVwb3J0LWV4ZWN1dGlv
bi10aW1lJyA9PiBcJHJlcG9ydEV4ZWN1dGlvblRpbWUsCisgICAgJ3RyZWF0LWZhaWxpbmctYXMt
Zmxha3k9cycgPT4gXCR0cmVhdEZhaWxpbmdBc0ZsYWt5LAogICAgICdmaWx0ZXI9cycgPT4gXCRm
aWx0ZXIsCiAgICAgJ2hlbHAnID0+IFwkc2hvd0hlbHAsCiAgICAgJ2Vudi12YXJzPXMnID0+IFwk
ZW52VmFycywKQEAgLTgwMyw2ICs4MTAsMTAgQEAgc3ViIHJ1bkpTQ1N0cmVzc1Rlc3RzCiAgICAg
ICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgIi0tYXJ0aWZhY3QtZXhlYy13cmFwcGVyIik7
CiAgICAgICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgJGFydGlmYWN0X2V4ZWNfd3JhcHBl
cik7CiAgICAgfQorICAgIGlmIChkZWZpbmVkKCR0cmVhdEZhaWxpbmdBc0ZsYWt5KSkgeworICAg
ICAgICBwdXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQsICItLXRyZWF0LWZhaWxpbmctYXMtZmxha3ki
KTsKKyAgICAgICAgcHVzaChAanNjU3RyZXNzRHJpdmVyQ21kLCAkdHJlYXRGYWlsaW5nQXNGbGFr
eSk7CisgICAgfQogICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgQHRlc3RMaXN0KTsKIAog
ICAgIGlmIChpc1dpbmRvd3MoKSAmJiAhaXNDeWd3aW4oKSkgewpAQCAtOTI3LDYgKzkzOCwyMSBA
QCBzdWIgcnVuSlNDU3RyZXNzVGVzdHMKICAgICAgICAgJHJlcG9ydERhdGF7JHRlc3RTdWNjZWVk
ZWR9ID0ge2FjdHVhbCA9PiAiUEFTUyJ9OwogICAgIH0KIAorICAgIG15IEBqc2NTdHJlc3NGbGFr
eSA9IHJlYWRBbGxMaW5lcygkanNjU3RyZXNzUmVzdWx0c0RpciAuICIvZmxha3kiKTsKKyAgICBA
anNjU3RyZXNzRmxha3kgPSBzb3J0IEBqc2NTdHJlc3NGbGFreTsKKyAgICBteSAkbnVtSlNDU3Ry
ZXNzRmxha3kgPSBAanNjU3RyZXNzRmxha3k7CisKKyAgICBteSAlanNjU3RyZXNzRmxha3lJbmZv
ID0gKCk7CisgICAgaWYgKCRudW1KU0NTdHJlc3NGbGFreSkgeworICAgICAgICBwcmludCAiXG4q
KiBUaGUgZm9sbG93aW5nIEpTQyBzdHJlc3MgdGVzdHMgd2VyZSBmbGFreTpcbiI7CisgICAgICAg
IGZvcmVhY2ggbXkgJHRlc3RGbGFreSAoQGpzY1N0cmVzc0ZsYWt5KSB7CisgICAgICAgICAgICBt
eSBAZmllbGRzID0gc3BsaXQgLyAvLCAkdGVzdEZsYWt5OworICAgICAgICAgICAgcHJpbnQgIlx0
JGZpZWxkc1swXSAkZmllbGRzWzFdLyRmaWVsZHNbMl0gcGFzc2VzXG4iOworICAgICAgICAgICAg
JGpzY1N0cmVzc0ZsYWt5SW5mb3skZmllbGRzWzBdfSA9IHsgJ1AnID0+ICRmaWVsZHNbMV0sICdU
JyA9PiAkZmllbGRzWzJdfQorICAgICAgICB9CisgICAgICAgIHByaW50ICJcbiI7CisgICAgfQor
CiAgICAgbXkgQGpzY1N0cmVzc0ZhaWxMaXN0ID0gcmVhZEFsbExpbmVzKCRqc2NTdHJlc3NSZXN1
bHRzRGlyIC4gIi9mYWlsZWQiKTsKICAgICBAanNjU3RyZXNzRmFpbExpc3QgPSBzb3J0IEBqc2NT
dHJlc3NGYWlsTGlzdDsKICAgICBteSAkbnVtSlNDU3RyZXNzRmFpbHVyZXMgPSBAanNjU3RyZXNz
RmFpbExpc3Q7CkBAIC05NTMsMTIgKzk3OSwxNCBAQCBzdWIgcnVuSlNDU3RyZXNzVGVzdHMKIAog
ICAgIHByaW50ICJSZXN1bHRzIGZvciBKU0Mgc3RyZXNzIHRlc3RzOlxuIjsKICAgICBwcmludFRo
aW5nc0ZvdW5kKCRudW1KU0NTdHJlc3NGYWlsdXJlcywgImZhaWx1cmUiLCAiZmFpbHVyZXMiLCAi
Zm91bmQiKTsKKyAgICBwcmludFRoaW5nc0ZvdW5kKCRudW1KU0NTdHJlc3NGbGFreSwgInRlc3Qi
LCAidGVzdHMiLCAiZmxha3kgYnV0IHBhc3NlZCIpOwogICAgIHByaW50VGhpbmdzRm91bmQoJG51
bUpTQ1N0cmVzc05vUmVzdWx0VGVzdHMsICJ0ZXN0IiwgInRlc3RzIiwgImZhaWxlZCB0byBjb21w
bGV0ZSIpOwogICAgIHByaW50ICIgICAgT0suXG4iIGlmICRudW1KU0NTdHJlc3NGYWlsdXJlcyA9
PSAwIGFuZCAkbnVtSlNDU3RyZXNzTm9SZXN1bHRUZXN0cyA9PSAwOwogCiAgICAgcHJpbnQgIlxu
IjsKIAogICAgIGlmIChkZWZpbmVkKCRqc29uRmlsZU5hbWUpKSB7CisgICAgICAgICRqc29uRGF0
YXsnZmxha3lBbmRQYXNzZWQnfSA9ICBcJWpzY1N0cmVzc0ZsYWt5SW5mbzsKICAgICAgICAgJGpz
b25EYXRheydzdHJlc3NUZXN0RmFpbHVyZXMnfSA9IFxAanNjU3RyZXNzRmFpbExpc3Q7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9v
bHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCA4Nzg4MmE4NDNlNzQ1ZGM4MWVl
MWQzYWE5NzJhNTk0N2EzYzJiZWNhLi5lOWFhNGEwMmMxNjI0NGJkNGVmNzNiYTk4MTQ2OTg2ZDEz
MmI3MGM5IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisr
KyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTI1LDEyICsyNSwxNyBA
QAogCiByZXF1aXJlICdmaWxldXRpbHMnCiByZXF1aXJlICdnZXRvcHRsb25nJworcmVxdWlyZSAn
b3N0cnVjdCcKIHJlcXVpcmUgJ3BhdGhuYW1lJwogcmVxdWlyZSAncmJjb25maWcnCityZXF1aXJl
ICdzZXQnCiByZXF1aXJlICd0ZW1wZmlsZScKIHJlcXVpcmUgJ3VyaScKIHJlcXVpcmUgJ3lhbWwn
CiAKK3JlcXVpcmVfcmVsYXRpdmUgIndlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3Rlc3QtcmVz
dWx0LWV2YWx1YXRvciIKK3JlcXVpcmVfcmVsYXRpdmUgIndlYmtpdHJ1YnkvanNjLXN0cmVzcy10
ZXN0L2V4ZWN1dG9yIgorCiBtb2R1bGUgVVJJCiAgICAgY2xhc3MgU1NIIDwgR2VuZXJpYwogICAg
ICAgICBERUZBVUxUX1BPUlQgPSAyMgpAQCAtNzMsNiArNzgsOCBAQCBTVEFUVVNfRklMRV9GQUlM
ID0gIkYiCiBQQVJBTExFTF9SRU1PVEVfV1JBUFBFUl9NQVJLX0JFR0lOID0gIjVkNjUzMjliZDFh
MyIKIFBBUkFMTEVMX1JFTU9URV9XUkFQUEVSX01BUktfRU5EID0gImE5YWVhNWMzYjg0MyIKIFBB
UkFMTEVMX1JFTU9URV9TVEFURV9MT1NUX01BUktFUiA9ICI3MDlmYjdhNzdjNDUyMzE5MThlYjEx
OGEiCitJVEVSQVRJT05fTElNSVRTID0gT3BlblN0cnVjdC5uZXcoOmluZnJhSXRlcmF0aW9uc0Zs
b29yID0+IDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOml0ZXJhdGlvbnND
ZWlsaW5nID0+IDEwKQogCiBiZWdpbgogICAgIHJlcXVpcmUgJ3NoZWxsd29yZHMnCkBAIC0xMjQs
NyArMTMxLDYgQEAgZGVmIGVzY2FwZUFsbChhcnJheSkKICAgICB9LmpvaW4oJyAnKQogZW5kCiAK
LQogJGpzY1BhdGggPSBuaWwKICRkb05vdE1lc3NXaXRoVk1QYXRoID0gZmFsc2UKICRqaXRUZXN0
cyA9IHRydWUKQEAgLTE1Miw2ICsxNTgsMTEgQEAgJGxkZCA9IG5pbAogJGFydGlmYWN0X2V4ZWNf
d3JhcHBlciA9IG5pbAogJG51bUNoaWxkUHJvY2Vzc2VzU2V0QnlVc2VyID0gZmFsc2UKICRydW5V
bmlxdWVJZCA9IFJhbmRvbS5uZXcuYnl0ZXMoMTYpLnVucGFjaygiSCoiKVswXQorJHRlc3RzRGVi
dWdTdHJlYW0gPSBuaWwgIyBzZXQgdG8gJHN0ZGVyciBmb3IgZGVidWdnaW5nCisKK2RlZiBwdXRk
KHMpCisgICAgJHRlc3RzRGVidWdTdHJlYW0ucHV0cyhzKSB1bmxlc3MgJHRlc3RzRGVidWdTdHJl
YW0ubmlsPworZW5kCiAKIGRlZiB1c2FnZQogICAgIHB1dHMgInJ1bi1qc2Mtc3RyZXNzLXRlc3Rz
IC1qIDxzaGVsbCBwYXRoPiA8Y29sbGVjdGlvbnMgcGF0aD4gWzxjb2xsZWN0aW9ucyBwYXRoPiAu
Li5dIgpAQCAtMjIyLDYgKzIzMyw3IEBAIEdldG9wdExvbmcubmV3KFsnLS1oZWxwJywgJy1oJywg
R2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyctLXJ1YnktcnVubmVy
JywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyctLWdudS1wYXJh
bGxlbC1ydW5uZXInLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBb
Jy0tdGVzdC13cml0ZXInLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCisgICAgICAg
ICAgICAgICBbJy0tdHJlYXQtZmFpbGluZy1hcy1mbGFreScsIEdldG9wdExvbmc6OlJFUVVJUkVE
X0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS1yZW1vdGUnLCBHZXRvcHRMb25nOjpSRVFV
SVJFRF9BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tcmVtb3RlLWNvbmZpZy1maWxlJywg
R2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyctLXJlcG9y
dC1leGVjdXRpb24tdGltZScsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKQEAgLTI3MCw2ICsy
ODIsMzAgQEAgR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRvcHRMb25nOjpOT19B
UkdVTUVOVF0sCiAgICAgICAgICR0ZXN0UnVubmVyVHlwZSA9IDpnbnVwYXJhbGxlbAogICAgIHdo
ZW4gJy0tdGVzdC13cml0ZXInCiAgICAgICAgICR0ZXN0V3JpdGVyID0gYXJnCisgICAgd2hlbiAn
LS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5JworICAgICAgICBtZCA9IC9eKFteLF0rKSwoXGQrKSwo
XGQrKSQvLm1hdGNoKGFyZykKKyAgICAgICAgaWYgbWQubmlsPworICAgICAgICAgICAgJHN0ZGVy
ci5wdXRzKCJDb3VsZCBub3QgcGFyc2UgYXJndW1lbnQgdG8gYC0tdHJlYXQtZmFpbGluZy1hcy1m
bGFreWA7IGV4cGVjdGVkIGBwYXNzUGVyY2VudGFnZSxtYXhUcmllcyxtYXhGYWlsaW5nYCIpCisg
ICAgICAgICAgICBleGl0KDEpCisgICAgICAgIGVuZAorICAgICAgICBwYXNzUGVyY2VudGFnZSA9
IG1kWzFdLnRvX2YKKyAgICAgICAgaWYgcGFzc1BlcmNlbnRhZ2UuemVybz8KKyAgICAgICAgICAg
ICRzdGRlcnIucHV0cygiSW52YWxpZCBwYXNzUGVyY2VudGFnZSBgI3ttZFsxXX1gIikKKyAgICAg
ICAgICAgIGV4aXQoMSkKKyAgICAgICAgZW5kCisgICAgICAgIG1heFRyaWVzID0gbWRbMl0udG9f
aQorICAgICAgICBpZiBtYXhUcmllcyA9PSAwCisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIklu
dmFsaWQgbWF4VHJpZXMgYCN7bWRbMl19YCIpCisgICAgICAgICAgICBleGl0KDEpCisgICAgICAg
IGVuZAorICAgICAgICBtYXhGYWlsaW5nID0gbWRbM10udG9faQorICAgICAgICBpZiBtYXhGYWls
aW5nID09IDAKKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiSW52YWxpZCBtYXhGYWlsaW5nIGAj
e21kWzNdfWAiKQorICAgICAgICAgICAgZXhpdCgxKQorICAgICAgICBlbmQKKyAgICAgICAgJHRy
ZWF0RmFpbGluZ0FzRmxha3kgPSBPcGVuU3RydWN0Lm5ldyg6cGFzc1BlcmNlbnRhZ2UgPT4gcGFz
c1BlcmNlbnRhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOm1heFRyaWVzID0+IG1heFRyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDptYXhGYWlsaW5nID0+IG1heEZhaWxpbmcpCiAgICAgd2hlbiAnLS1y
ZW1vdGUnCiAgICAgICAgICRjb3B5Vk0gPSB0cnVlCiAgICAgICAgICR0YXJiYWxsID0gdHJ1ZQpA
QCAtNTc2LDYgKzYxMiw5NiBAQCBGVExfT1BUSU9OUyA9IFsiLS11c2VGVExKSVQ9dHJ1ZSJdCiBG
T1JDRV9MTElOVF9FWElUX09QVElPTlMgPSBbIi0tZm9yY2VPU1JFeGl0VG9MTEludD10cnVlIl0K
IEVYRUNVVEFCTEVfRlVaWkVSX09QVElPTlMgPSBbIi0tdXNlRXhlY3V0YWJsZUFsbG9jYXRpb25G
dXp6PXRydWUiLCAiLS1maXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6UmFuZG9tbHk9dHJ1ZSJd
CiAKK2NsYXNzIEJhc2VQbGFuCisgICAgYXR0cl9yZWFkZXIgOmRpcmVjdG9yeSwgOmFyZ3VtZW50
cywgOmZhbWlseSwgOm5hbWUsIDpvdXRwdXRIYW5kbGVyLCA6ZXJyb3JIYW5kbGVyLCA6YWRkaXRp
b25hbEVudiwgOmluZGV4CisgICAgYXR0cl9hY2Nlc3NvciA6cmV0cnlQYXJhbWV0ZXJzCisKKyAg
ICBAQGluZGV4ID0gMAorICAgIGRlZiBpbml0aWFsaXplKGRpcmVjdG9yeSwgYXJndW1lbnRzLCBm
YW1pbHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlciwgcmV0cnlQYXJhbWV0ZXJz
KQorICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5CisgICAgICAgIEBhcmd1bWVudHMgPSBh
cmd1bWVudHNNYXBwZXIoYXJndW1lbnRzKQorICAgICAgICBAZmFtaWx5ID0gZmFtaWx5CisgICAg
ICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAb3V0cHV0SGFuZGxlciA9IG91dHB1dEhhbmRsZXIK
KyAgICAgICAgQGVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcgorICAgICAgICAjIEEgcGxhbiBm
b3Igd2hpY2ggQHJldHJ5UGFyYW1ldGVycyBpcyBub3QgbmlsIGlzIGJlaW5nCisgICAgICAgICMg
dHJlYXRlZCBhcyBwb3RlbnRpYWxseSBmbGFreS4KKyAgICAgICAgQHJldHJ5UGFyYW1ldGVycyA9
IHJldHJ5UGFyYW1ldGVycworICAgICAgICBAYWRkaXRpb25hbEVudiA9IFtdCisgICAgICAgIEBp
bmRleCA9IEBAaW5kZXgKKyAgICAgICAgQEBpbmRleCArPSAxCisgICAgZW5kCisgICAgZGVmIHNl
bGYubW9jayhmYW1pbHksIG5hbWUsIHJldHJ5UGFyYW1ldGVycz1uaWwpCisgICAgICAgIHNlbGYu
bmV3KCIvbm9uZSIsIFtdLCBmYW1pbHksIG5hbWUsIG5pbCwgbmlsLCByZXRyeVBhcmFtZXRlcnMp
CisgICAgZW5kCisgICAgZGVmIHNlbGYuY3JlYXRlKGRpcmVjdG9yeSwgYXJndW1lbnRzLCBmYW1p
bHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlcikKKyAgICAgICAgaWYgJHJ1bkNv
bW1hbmRPcHRpb25zWzpjcmFzaE9LXQorICAgICAgICAgICAgb3V0cHV0SGFuZGxlciA9IG5vaXN5
T3V0cHV0SGFuZGxlcgorICAgICAgICBlbmQKKyAgICAgICAgc2VsZi5uZXcoZGlyZWN0b3J5LCBh
cmd1bWVudHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyLCAkcnVu
Q29tbWFuZE9wdGlvbnNbOmZsYWt5XSkKKyAgICBlbmQKKyAgICBkZWYgYXJndW1lbnRzTWFwcGVy
KGFyZ3MpCisgICAgICAgIGFyZ3MKKyAgICBlbmQKKyAgICAjIFdlIHJlZ3VsYXJseSBwbGFjZSBQ
bGFucyBpbiBjb250YWluZXJzLCBidXQgbWF5IG1vZGlmeSBAcmV0cnlQYXJhbWV0ZXJzCisgICAg
IyBhZnRlciB0aGUgZmFjdDsgb25seSBoYXNoIG9uIEBpbmRleCBpbnN0ZWFkLgorICAgIGRlZiBo
YXNoCisgICAgICAgIEBpbmRleAorICAgIGVuZAorICAgIGRlZiB0b19zCisgICAgICAgICIje0Bp
bmRleH0iCisgICAgZW5kCitlbmQKKworY2xhc3MgVGVzdFJ1bm5lcgorICAgIGRlZiBpbml0aWFs
aXplKHRlc3RSdW5uZXJUeXBlLCBydW5uZXJEaXIpCisgICAgICAgIEB0ZXN0UnVubmVyVHlwZSA9
IHRlc3RSdW5uZXJUeXBlCisgICAgICAgIEBydW5uZXJEaXIgPSBydW5uZXJEaXIKKyAgICBlbmQK
KyAgICBkZWYgcHJlcGFyZShydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJl
bW90ZUhvc3RzKQorICAgICAgICBwcmVwYXJlU2NyaXB0cyhydW5saXN0KQorICAgICAgICBwcmVw
YXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9z
dHMpCisgICAgZW5kCisgICAgZGVmIHByZXBhcmVTY3JpcHRzKHJ1bmxpc3QpCisgICAgICAgIERp
ci5ta2RpcihAcnVubmVyRGlyKSB1bmxlc3MgQHJ1bm5lckRpci5kaXJlY3Rvcnk/CisgICAgICAg
IHRvRGVsZXRlID0gW10KKyAgICAgICAgRGlyLmZvcmVhY2goQHJ1bm5lckRpcikgeworICAgICAg
ICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgICAgICBpZiBmaWxlbmFtZSA9fiAvXnRlc3RfLwor
ICAgICAgICAgICAgICAgIHRvRGVsZXRlIDw8IGZpbGVuYW1lCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgfQorCisgICAgICAgIHRvRGVsZXRlLmVhY2ggeworICAgICAgICAgICAgfCBmaWxlbmFt
ZSB8CisgICAgICAgICAgICBGaWxlLnVubGluayhAcnVubmVyRGlyICsgZmlsZW5hbWUpCisgICAg
ICAgIH0KKworICAgICAgICAjIFdyaXRlIHRlc3Qgc2NyaXB0cyBpbiBwYXJhbGxlbCBhcyB0aGlz
IGlzIGJvdGggYW4gZXhwZW5zaXZlIGFuZCBhCisgICAgICAgICMgaGlnaGx5IElPIGludGVuc2l2
ZSBvcGVyYXRpb24sIGJ1dCBlYWNoIHNjcmlwdCBpcyBpbmRlcGVuZGVudCBhbmQKKyAgICAgICAg
IyB0aGUgb3BlcmF0aW9uIGlzIHB1cmUgb3RoZXIgdGhhbiB3cml0aW5nIHRoZSB1bmlxdWUgcnVu
IHNjcmlwdC4KKyAgICAgICAgcGFyYWxsZWxFYWNoKHJ1bmxpc3QpIGRvIHwgcGxhbiB8CisgICAg
ICAgICAgICBwbGFuLndyaXRlUnVuU2NyaXB0KEBydW5uZXJEaXIgKyAidGVzdF9zY3JpcHRfI3tw
bGFuLmluZGV4fSIpCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiBzZWxmLmNyZWF0ZSh0
ZXN0UnVubmVyVHlwZSwgcnVubmVyRGlyKQorICAgICAgICBjbHMgPSBuaWwKKyAgICAgICAgY2Fz
ZSB0ZXN0UnVubmVyVHlwZQorICAgICAgICB3aGVuIDpzaGVsbAorICAgICAgICAgICAgY2xzID0g
VGVzdFJ1bm5lclNoZWxsCisgICAgICAgIHdoZW4gOm1ha2UKKyAgICAgICAgICAgIGNscyA9IFRl
c3RSdW5uZXJNYWtlCisgICAgICAgIHdoZW4gOnJ1YnkKKyAgICAgICAgICAgIGNscyA9IFRlc3RS
dW5uZXJSdWJ5CisgICAgICAgIHdoZW4gOmdudXBhcmFsbGVsCisgICAgICAgICAgICBjbHMgPSBU
ZXN0UnVubmVyR251UGFyYWxsZWwKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVu
a25vd24gdGVzdCBydW5uZXIgdHlwZTogI3t0ZXN0UnVubmVyVHlwZS50b19zfSIKKyAgICAgICAg
ZW5kCisgICAgICAgIHJldHVybiBjbHMubmV3KHRlc3RSdW5uZXJUeXBlLCBydW5uZXJEaXIpCisg
ICAgZW5kCitlbmQKKwogcmVxdWlyZV9yZWxhdGl2ZSAid2Via2l0cnVieS9qc2Mtc3RyZXNzLXRl
c3Qtd3JpdGVyLSN7JHRlc3RXcml0ZXJ9IgogCiBkZWYgc2hvdWxkQ29sbGVjdENvbnRpbnVvdXNs
eT8KQEAgLTU4NCw3ICs3MTAsNyBAQCBlbmQKIAogQ09MTEVDVF9DT05USU5VT1VTTFlfT1BUSU9O
UyA9IHNob3VsZENvbGxlY3RDb250aW51b3VzbHk/ID8gWyItLWNvbGxlY3RDb250aW51b3VzbHk9
dHJ1ZSIsICItLXVzZUdlbmVyYXRpb25hbEdDPWZhbHNlIiwgIi0tdmVyaWZ5R0M9dHJ1ZSJdIDog
W10KIAotJHNlcmlhbFJ1bmxpc3QgPSBbXQorJHNlcmlhbFBsYW5zID0gU2V0Lm5ldwogJHJ1bmxp
c3QgPSBbXQogCiBkZWYgZnJhbWV3b3JrRnJvbUpTQ1BhdGgoanNjUGF0aCkKQEAgLTY1Nyw3ICs3
ODMsNyBAQCBkZWYgYWRkUnVuQ29tbWFuZChraW5kLCBjb21tYW5kLCBvdXRwdXRIYW5kbGVyLCBl
cnJvckhhbmRsZXIsICphZGRpdGlvbmFsRW52KQogICAgIGlmICRmaWx0ZXIgYW5kIG5hbWUgIX4g
JGZpbHRlcgogICAgICAgICByZXR1cm4KICAgICBlbmQKLSAgICBwbGFuID0gUGxhbi5uZXcoCisg
ICAgcGxhbiA9IFBsYW4uY3JlYXRlKAogICAgICAgICAkYmVuY2htYXJrRGlyZWN0b3J5LCBjb21t
YW5kLCAiI3skY29sbGVjdGlvbk5hbWV9LyN7JGJlbmNobWFya30iLCBuYW1lLCBvdXRwdXRIYW5k
bGVyLAogICAgICAgICBlcnJvckhhbmRsZXIpCiAgICAgcGxhbi5hZGRpdGlvbmFsRW52LnB1c2go
KmFkZGl0aW9uYWxFbnYpCkBAIC02NjYsNyArNzkyLDcgQEAgZGVmIGFkZFJ1bkNvbW1hbmQoa2lu
ZCwgY29tbWFuZCwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyLCAqYWRkaXRpb25hbEVudikK
ICAgICAgICAgIyB0aGF0IHdlIGNhbiB0cmVhdCB0aGVtIHNwZWNpYWxseSB3aGVuIHNjaGVkdWxp
bmcsIGJ1dCBrZWVwCiAgICAgICAgICMgaXQgaW4gdGhlICRydW5saXN0IGZvciBjb2RlIHRoYXQg
ZG9zbid0IGNhcmUgYWJvdXQKICAgICAgICAgIyBzY2hlZHVsaW5nLgotICAgICAgICAkc2VyaWFs
UnVubGlzdCA8PCBwbGFuCisgICAgICAgICRzZXJpYWxQbGFucy5hZGQocGxhbikKICAgICBlbmQK
IAogICAgIGlmICRudW1DaGlsZFByb2Nlc3NlcyA+IDEgYW5kICRydW5Db21tYW5kT3B0aW9uc1s6
aXNTbG93XQpAQCAtNzI0LDYgKzg1MCw1MSBAQCBkZWYgc2VyaWFsIQogICAgICRydW5Db21tYW5k
T3B0aW9uc1s6c2VyaWFsXSA9IHRydWUKIGVuZAogCisKKyMgUmV0cnkgcGFyYW1ldGVycyBmb3Ig
dGVzdHMgdGhhdCB3ZSB0cmVhdCBhcyBmbGFreSwgZWl0aGVyIGJlY2F1c2UKKyMgdGhleSd2ZSBi
ZWVuIGV4cGxpY2l0bHkgbWFya2VkIHNvICh2aWEgZmxha3khKSBvciBiZWNhdXNlIHdlIHdlcmUK
KyMgYXNrZWQgdG8gLS10cmVhdC1mYWlsaW5nLWFzLWZsYWt5LgorY2xhc3MgUmV0cnlQYXJhbWV0
ZXJzCisgICAgYXR0cl9yZWFkZXIgOnBhc3NQZXJjZW50YWdlLCA6bWF4VHJpZXMKKyAgICBkZWYg
aW5pdGlhbGl6ZShwYXNzUGVyY2VudGFnZSwgbWF4VHJpZXMpCisgICAgICAgIEBwYXNzUGVyY2Vu
dGFnZSA9IHBhc3NQZXJjZW50YWdlCisgICAgICAgIEBtYXhUcmllcyA9IG1heFRyaWVzCisgICAg
ZW5kCisgICAgZGVmIHRvX3MKKyAgICAgICAgIlJldHJ5UGFyYW1ldGVycygje0BwYXNzUGVyY2Vu
dGFnZX0sICN7QG1heFRyaWVzfSkiCisgICAgZW5kCisgICAgZGVmIHJlc3VsdChzdGF0dXNlcykK
KyAgICAgICAgaWYgc3RhdHVzZXMubGVuZ3RoID4gQG1heFRyaWVzCisgICAgICAgICAgICAjIFRo
aXMgY291bGQgaGFwcGVuIGlmIChiZWNhdXNlIG9mIHJlbW90ZXMgZGlzYXBwZWFyaW5nCisgICAg
ICAgICAgICAjIGFuZCByZWFwcGVhcmluZykgdGhlcmUgYXJlIG11bHRpcGxlIHJ1bnMgZm9yIHRo
ZSBsYXN0CisgICAgICAgICAgICAjIHRyeSBmb3IgYSBmbGFreSB0ZXN0LiBKdXN0IGlnbm9yZSBh
bnkgZXh0cmEgc3RhdHVzZXMuCisgICAgICAgICAgICBzdGF0dXNlcyA9IHN0YXR1c2VzLnRha2Uo
QG1heFRyaWVzKQorICAgICAgICBlbmQKKyAgICAgICAgc3VjY2Vzc2VzID0gc3VjY2Vzc2Z1bFN0
YXR1c2VzKHN0YXR1c2VzKQorICAgICAgICByZW1haW5pbmcgPSBAbWF4VHJpZXMgLSBzdGF0dXNl
cy5sZW5ndGgKKyAgICAgICAgcmVxdWlyZWRTdWNjZXNzZXMgPSAoQHBhc3NQZXJjZW50YWdlICog
QG1heFRyaWVzKS5jZWlsCisgICAgICAgIHJldCA9IG5pbCAjICJoYXMgbm90IGNvbXBsZXRlZCB5
ZXQiCisgICAgICAgIGlmIHN1Y2Nlc3NlcyA+PSByZXF1aXJlZFN1Y2Nlc3NlcworICAgICAgICAg
ICAgcmV0ID0gdHJ1ZQorICAgICAgICBlbHNpZiAoc3VjY2Vzc2VzICsgcmVtYWluaW5nKSA8IHJl
cXVpcmVkU3VjY2Vzc2VzCisgICAgICAgICAgICByZXQgPSBmYWxzZQorICAgICAgICBlbmQKKyAg
ICAgICAgcHV0ZCgiI3tzZWxmfS5yZXN1bHQoI3tzdGF0dXNlc30pID0+ICN7cmV0fSIpCisgICAg
ICAgIHJldAorICAgIGVuZAorICAgIHByaXZhdGUKKyAgICBkZWYgc3VjY2Vzc2Z1bFN0YXR1c2Vz
KHN0YXR1c2VzKQorICAgICAgICBzdGF0dXNlcy5jb3VudCB7CisgICAgICAgICAgICB8c3RhdHVz
fAorICAgICAgICAgICAgc3RhdHVzID09IFNUQVRVU19GSUxFX1BBU1MKKyAgICAgICAgfQorICAg
IGVuZAorZW5kCisKK2RlZiBmbGFreSEocGFzc1BlcmNlbnRhZ2UsIG1heFRyaWVzKQorICAgICRy
dW5Db21tYW5kT3B0aW9uc1s6Zmxha3ldID0gUmV0cnlQYXJhbWV0ZXJzLm5ldyhwYXNzUGVyY2Vu
dGFnZSwgbWF4VHJpZXMpCitlbmQKKwogZGVmIHJlcXVpcmVPcHRpb25zKCpvcHRpb25zKQogICAg
ICR0ZXN0U3BlY2lmaWNSZXF1aXJlZE9wdGlvbnMgKz0gb3B0aW9ucwogZW5kCkBAIC0xODU5LDM0
ICsyMDMwLDYgQEAgZGVmIGhhbmRsZUNvbGxlY3Rpb24oY29sbGVjdGlvbikKICAgICBlbmQKIGVu
ZAogCi1kZWYgYXBwZW5kRmFpbHVyZShwbGFuKQotICAgIEZpbGUub3Blbigkb3V0cHV0RGlyICsg
ImZhaWxlZCIsICJhIikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBvdXRwLnB1dHMgcGxh
bi5uYW1lCi0gICAgfQotZW5kCi0KLWRlZiBhcHBlbmRQYXNzKHBsYW4pCi0gICAgRmlsZS5vcGVu
KCRvdXRwdXREaXIgKyAicGFzc2VkIiwgImEiKSB7Ci0gICAgICAgIHwgb3V0cCB8Ci0gICAgICAg
IG91dHAucHV0cyBwbGFuLm5hbWUKLSAgICB9Ci1lbmQKLQotZGVmIGFwcGVuZE5vUmVzdWx0KHBs
YW4pCi0gICAgRmlsZS5vcGVuKCRvdXRwdXREaXIgKyAibm9yZXN1bHQiLCAiYSIpIHsKLSAgICAg
ICAgfCBvdXRwIHwKLSAgICAgICAgb3V0cC5wdXRzIHBsYW4ubmFtZQotICAgIH0KLWVuZAotCi1k
ZWYgYXBwZW5kUmVzdWx0KHBsYW4sIGRpZFBhc3MpCi0gICAgRmlsZS5vcGVuKCRvdXRwdXREaXIg
KyAicmVzdWx0cyIsICJhIikgewotICAgICAgICB8IG91dHAgfAotICAgICAgICBvdXRwLnB1dHMg
IiN7cGxhbi5uYW1lfTogI3tkaWRQYXNzID8gJ1BBU1MnIDogJ0ZBSUwnfSIKLSAgICB9Ci1lbmQK
LQogZGVmIHByZXBhcmVCdW5kbGUKICAgICByYWlzZSBpZiAkYnVuZGxlCiAKQEAgLTIwNjksNTQg
KzIyMTIsMTEgQEAgZGVmIHBhcmFsbGVsRWFjaChhcnJheSwgJmJsb2NrKQogICAgIGVuZAogZW5k
CiAKLWRlZiBwcmVwYXJlVGVzdFJ1bm5lcihyZW1vdGVJbmRleD0wKQotICAgIHJhaXNlIGlmICRi
dW5kbGUKLQotICAgICRydW5saXN0LmVhY2hfd2l0aF9pbmRleCB7Ci0gICAgICAgIHwgcGxhbiwg
aW5kZXggfAotICAgICAgICBwbGFuLmluZGV4ID0gaW5kZXgKLSAgICB9Ci0KLSAgICBEaXIubWtk
aXIoJHJ1bm5lckRpcikgdW5sZXNzICRydW5uZXJEaXIuZGlyZWN0b3J5PwotICAgIHRvRGVsZXRl
ID0gW10KLSAgICBEaXIuZm9yZWFjaCgkcnVubmVyRGlyKSB7Ci0gICAgICAgIHwgZmlsZW5hbWUg
fAotICAgICAgICBpZiBmaWxlbmFtZSA9fiAvXnRlc3RfLwotICAgICAgICAgICAgdG9EZWxldGUg
PDwgZmlsZW5hbWUKLSAgICAgICAgZW5kCi0gICAgfQotICAgIAotICAgIHRvRGVsZXRlLmVhY2gg
ewotICAgICAgICB8IGZpbGVuYW1lIHwKLSAgICAgICAgRmlsZS51bmxpbmsoJHJ1bm5lckRpciAr
IGZpbGVuYW1lKQotICAgIH0KLQotICAgICMgV3JpdGUgdGVzdCBzY3JpcHRzIGluIHBhcmFsbGVs
IGFzIHRoaXMgaXMgYm90aCBhbiBleHBlbnNpdmUgYW5kIGEKLSAgICAjIGhpZ2hseSBJTyBpbnRl
bnNpdmUgb3BlcmF0aW9uLCBidXQgZWFjaCBzY3JpcHQgaXMgaW5kZXBlbmRlbnQgYW5kCi0gICAg
IyB0aGUgb3BlcmF0aW9uIGlzIHB1cmUgb3RoZXIgdGhhbiB3cml0aW5nIHRoZSB1bmlxdWUgcnVu
IHNjcmlwdC4KLSAgICBwYXJhbGxlbEVhY2goJHJ1bmxpc3QpIGRvIHwgcGxhbiB8Ci0gICAgICAg
IHBsYW4ud3JpdGVSdW5TY3JpcHQoJHJ1bm5lckRpciArICJ0ZXN0X3NjcmlwdF8je3BsYW4uaW5k
ZXh9IikKLSAgICBlbmQKLQotICAgIGNhc2UgJHRlc3RSdW5uZXJUeXBlCi0gICAgd2hlbiA6bWFr
ZQotICAgICAgICBwcmVwYXJlTWFrZVRlc3RSdW5uZXIocmVtb3RlSW5kZXgpCi0gICAgd2hlbiA6
c2hlbGwKLSAgICAgICAgcHJlcGFyZVNoZWxsVGVzdFJ1bm5lcgotICAgIHdoZW4gOnJ1YnkKLSAg
ICAgICAgcHJlcGFyZVJ1YnlUZXN0UnVubmVyCi0gICAgd2hlbiA6Z251cGFyYWxsZWwKLSAgICAg
ICAgcHJlcGFyZUdudVBhcmFsbGVsVGVzdFJ1bm5lcgotICAgIGVsc2UKLSAgICAgICAgcmFpc2Ug
IlVua25vd24gdGVzdCBydW5uZXIgdHlwZTogI3skdGVzdFJ1bm5lclR5cGUudG9fc30iCi0gICAg
ZW5kCi1lbmQKLQogZGVmIGNsZWFuUnVubmVyRGlyZWN0b3J5CiAgICAgcmFpc2UgdW5sZXNzICRi
dW5kbGUKICAgICBEaXIuZm9yZWFjaCgkcnVubmVyRGlyKSB7CiAgICAgICAgIHwgZmlsZW5hbWUg
fAotICAgICAgICBuZXh0IHVubGVzcyBmaWxlbmFtZSA9fiAvXnRlc3RfZmFpbC8KKyAgICAgICAg
bmV4dCB1bmxlc3MgZmlsZW5hbWUgPX4gL14je1NUQVRVU19GSUxFX1BSRUZJWH0vCiAgICAgICAg
IEZpbGVVdGlscy5ybV9mICRydW5uZXJEaXIgKyBmaWxlbmFtZQogICAgIH0KIGVuZApAQCAtMjI4
NSw5ICsyMzg1LDkgQEAgZGVmIGV4cG9ydEJhc2VFbnZpcm9ubWVudFZhcmlhYmxlcyhlc2NhcGUp
CiAgICAgXS5qb2luKCIiKQogZW5kCiAKLWRlZiBydW5UZXN0UnVubmVyKHJlbW90ZUluZGV4PTAp
Ci0gICAgaWYgJHJlbW90ZQotICAgICAgICByZW1vdGVIb3N0ID0gJHJlbW90ZUhvc3RzW3JlbW90
ZUluZGV4XQorZGVmIHJ1blRlc3RSdW5uZXIodGVzdFJ1bm5lciwgcmVtb3RlSG9zdHMsIHJlbW90
ZUluZGV4PTApCisgICAgaWYgbm90IHJlbW90ZUhvc3RzLm5pbD8KKyAgICAgICAgcmVtb3RlSG9z
dCA9IHJlbW90ZUhvc3RzW3JlbW90ZUluZGV4XQogICAgICAgICBnZXRSZW1vdGVEaXJlY3RvcnlJ
Zk5lZWRlZChyZW1vdGVIb3N0KQogICAgICAgICBjb3B5QnVuZGxlVG9SZW1vdGUocmVtb3RlSG9z
dCkKICAgICAgICAgcmVtb3RlU2NyaXB0ID0gIlwiIgpAQCAtMjI5NywxMSArMjM5NywxMSBAQCBk
ZWYgcnVuVGVzdFJ1bm5lcihyZW1vdGVJbmRleD0wKQogICAgICAgICByZW1vdGVTY3JpcHQgKz0g
ImNkICN7JG91dHB1dERpci5iYXNlbmFtZX0vLnJ1bm5lciAmJiAiCiAgICAgICAgIHJlbW90ZVNj
cmlwdCArPSBleHBvcnRCYXNlRW52aXJvbm1lbnRWYXJpYWJsZXModHJ1ZSkKICAgICAgICAgJGVu
dlZhcnMuZWFjaCB7IHx2YXJ8IHJlbW90ZVNjcmlwdCArPSAiZXhwb3J0ICIgPDwgdmFyIDw8ICJc
biIgfQotICAgICAgICByZW1vdGVTY3JpcHQgKz0gIiN7dGVzdFJ1bm5lckNvbW1hbmQocmVtb3Rl
SW5kZXgpfVwiIgorICAgICAgICByZW1vdGVTY3JpcHQgKz0gIiN7dGVzdFJ1bm5lci5jb21tYW5k
KHJlbW90ZUluZGV4KX1cIiIKICAgICAgICAgcnVuQW5kTW9uaXRvclRlc3RSdW5uZXJDb21tYW5k
KFsic3NoIiwgIi1vIiwgIk5vSG9zdEF1dGhlbnRpY2F0aW9uRm9yTG9jYWxob3N0PXllcyJdICsg
KHJlbW90ZUhvc3QuaWRlbnRpdHlfZmlsZV9wYXRoID8gWyItaSIsIHJlbW90ZUhvc3QuaWRlbnRp
dHlfZmlsZV9wYXRoXSA6IFtdKSArIFsiLXAiLCByZW1vdGVIb3N0LnBvcnQudG9fcywgIiN7cmVt
b3RlSG9zdC51c2VyfUAje3JlbW90ZUhvc3QuaG9zdH0iLCByZW1vdGVTY3JpcHRdKQogICAgIGVs
c2UKICAgICAgICAgRGlyLmNoZGlyKCRydW5uZXJEaXIpIHsKLSAgICAgICAgICAgIHJ1bkFuZE1v
bml0b3JUZXN0UnVubmVyQ29tbWFuZChTaGVsbHdvcmRzLnNoZWxsc3BsaXQodGVzdFJ1bm5lckNv
bW1hbmQpKQorICAgICAgICAgICAgcnVuQW5kTW9uaXRvclRlc3RSdW5uZXJDb21tYW5kKFNoZWxs
d29yZHMuc2hlbGxzcGxpdCh0ZXN0UnVubmVyLmNvbW1hbmQpKQogICAgICAgICB9CiAgICAgZW5k
CiBlbmQKQEAgLTIzMTgsMzggKzI0MTgsMjEgQEAgZGVmIHByb2Nlc3NTdGF0dXNMaW5lKG1hcCwg
bGluZSkKICAgICBydW5JZCA9IG1kWzpydW5JZF0KICAgICByZXN1bHQgPSBtZFs6cmVzdWx0XQog
ICAgIGlmIHJ1bklkICE9ICRydW5VbmlxdWVJZAotICAgICAgICAjIFRoaXMgbWF5IGNvbmNlaXZh
Ymx5IGhhcHBlbiBpZiBhIHJlbW90ZSBnb2VzCi0gICAgICAgICMgYXdheSBpbiB0aGUgbWlkZGxl
IG9mIGEgcnVuIGFuZCBjb21lcyBiYWNrCi0gICAgICAgICMgb25saW5lIGluIHRoZSBtaWRkbGUg
b2YgYSBkaWZmZXJlbnQgcnVuLgotICAgICAgICAkc3RkZXJyLnB1dHMoIklnbm9yaW5nIHN0YWxl
IHN0YXR1cyBmaWxlIGZvciAje2luZGV4fSAoSUQgI3tydW5JZH0gYnV0IGN1cnJlbnQgSUQgaXMg
I3skcnVuVW5pcXVlSWR9KSIpCi0gICAgICAgIHJldHVybgotICAgIGVuZAotICAgIGlmIG1hcC5o
YXNfa2V5PyhpbmRleCkKLSAgICAgICAgIyBPbmUgc2NlbmFyaW8gaW4gd2hpY2ggdGhpcyBjb3Vs
ZCBoYXBwZW46Ci0gICAgICAgICMgVGVzdCBUIHJ1bnMgb24gcmVtb3RlIGhvc3QgQSBhbmQKLSAg
ICAgICAgIyAgIDEuIHRoZSBzdGF0dXMgZmlsZSByZWFjaGVzIEEncyBkaXNrCi0gICAgICAgICMg
ICAyLiBzb21laG93IHRoZSBnbnUgcGFyYWxsZWwgcnVubmVyIGlzIG5vdCBtYWRlIGF3YXJlIG9m
IHRoZSB0ZXN0J3MgY29tcGxldGlvbiAocGFja2V0IGxvc3M/KQotICAgICAgICAjICAgMy4gbWFj
aGluZSBBIGNyYXNoZXMKLSAgICAgICAgIyAgIDQuIGdudSBwYXJhbGxlbCByZS1zY2hlZHVsZXMg
dGhlIHRlc3QgdG8gcnVuIG9uIHJlbW90ZSBob3N0IEIsIHdoZXJlIGl0IHJ1bnMgdG8gY29tcGxl
dGlvbgotICAgICAgICAjICAgNS4gQiBjb21lcyBiYWNrIG9ubGluZSBiZWZvcmUgdGhlIGVuZCBv
ZiB0aGUgcnVuCi0gICAgICAgICMgICA2LiB3ZSBjb2xsZWN0IHRoZSBzdGF0dXMgZmlsZXMgZnJv
bSBhbGwgcmVtb3RlcyBhbmQgZW5kIHVwIHdpdGggdHdvIHN0YXR1cyBmaWxlcyBmb3IgVC4KLSAg
ICAgICAgcHJldiA9IG1hcFtpbmRleF0KLSAgICAgICAgIyBtYXBbaW5kZXhdIGhvbGRzCi0gICAg
ICAgICMgLSBhIG51bWJlciwgaWYgYWxsIHJlc3VsdHMgY29kZXMgd2UndmUgb2JzZXJ2ZWQgZm9y
IGEgdGVzdCBhcmUgdGhlIHNhbWUKLSAgICAgICAgIyAtIGFuIGFycmF5LCBpZiB0aGV5IGRpdmVy
Z2UuCi0gICAgICAgIGlmIHByZXYuaXNfYT8oQXJyYXkpCi0gICAgICAgICAgICBwcmV2LnB1c2go
cmVzdWx0KQotICAgICAgICBlbHNpZiBwcmV2ICE9IHJlc3VsdAotICAgICAgICAgICAgIyBJZiB0
aGUgdHdvIHJlc3VsdHMgZGlmZmVyLCBrZWVwIHRoZW0KLSAgICAgICAgICAgICMgYm90aC4gVGhp
cyBpcyBzaW1wbHkgYSB3YXkgdG8gbWFrZSBub3RlIG9mCi0gICAgICAgICAgICAjIHRoZSBkaXZl
cmdlbmNlIChmb3IgbGF0ZXIgcmVwb3J0aW5nKS4KLSAgICAgICAgICAgIG1hcFtpbmRleF0gPSBb
cHJldiwgcmVzdWx0XQorICAgICAgICBpZiAkYnVuZGxlCisgICAgICAgICAgICAjIFRoZSBzY3Jp
cHRzIGluIHRoZSBidW5kbGUgaGF2ZSB0aGVpciBvd24gcnVuSWQgZW1iZWRkZWQsCisgICAgICAg
ICAgICAjIGp1c3QgaWdub3JlIHRoZSB2YWx1ZS4KICAgICAgICAgZWxzZQotICAgICAgICAgICAg
IyBHb3QgdGhlIHNhbWUgcmVzdWx0LCBubyBuZWVkIHRvIGRvIGFueXRoaW5nLgorICAgICAgICAg
ICAgIyBUaGlzIG1heSBjb25jZWl2YWJseSBoYXBwZW4gaWYgYSByZW1vdGUgZ29lcworICAgICAg
ICAgICAgIyBhd2F5IGluIHRoZSBtaWRkbGUgb2YgYSBydW4gYW5kIGNvbWVzIGJhY2sKKyAgICAg
ICAgICAgICMgb25saW5lIGluIHRoZSBtaWRkbGUgb2YgYSBkaWZmZXJlbnQgcnVuLgorICAgICAg
ICAgICAgJHN0ZGVyci5wdXRzKCJJZ25vcmluZyBzdGFsZSBzdGF0dXMgZmlsZSBmb3IgI3tpbmRl
eH0gKElEICN7cnVuSWR9IGJ1dCBjdXJyZW50IElEIGlzICN7JHJ1blVuaXF1ZUlkfSkiKQorICAg
ICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVuZAotICAgICAgICAkc3RkZXJyLnB1dHMoIkR1cGxp
Y2F0ZSBzdGF0ZSBmaWxlIGZvciAje2luZGV4fTogI3ttYXBbaW5kZXhdfSIpCisgICAgZW5kCisg
ICAgaWYgbWFwLmhhc19rZXk/KGluZGV4KQorICAgICAgICBtYXBbaW5kZXhdLnB1c2gocmVzdWx0
KQogICAgIGVsc2UKLSAgICAgICAgbWFwW2luZGV4XSA9IHJlc3VsdAorICAgICAgICBtYXBbaW5k
ZXhdID0gW3Jlc3VsdF0KICAgICBlbmQKIGVuZAogCkBAIC0yMzg1LDU4ICsyNDY4LDIzIEBAIGRl
ZiBnZXRTdGF0dXNNYXAobWFwPXt9KQogICAgIG1hcAogZW5kCiAKLWRlZiBnZXRDb21wbGV0ZWRU
ZXN0c0Zyb21TdGF0dXNNYXAoc3RhdHVzTWFwKQotICAgIGNvbXBsZXRlZFRlc3RzID0ge30KLSAg
ICAkcnVubGlzdC5lYWNoX3dpdGhfaW5kZXggewotICAgICAgICB8IHBsYW4sIGluZGV4IHwKLSAg
ICAgICAgaWYgc3RhdHVzTWFwLmhhc19rZXk/KGluZGV4KQotICAgICAgICAgICAgY29tcGxldGVk
VGVzdHNbcGxhbl0gPSBuaWwKLSAgICAgICAgZW5kCi0gICAgfQotICAgIGNvbXBsZXRlZFRlc3Rz
Ci1lbmQKLQogZGVmIGRldGVjdEZhaWx1cmVzKHN0YXR1c01hcD17fSkKICAgICByYWlzZSBpZiAk
YnVuZGxlCi0gICAgbm9yZXN1bHQgPSAwCiAgICAgaWYgc3RhdHVzTWFwLnNpemUgPT0gMAogICAg
ICAgICBzdGF0dXNNYXAgPSBnZXRTdGF0dXNNYXAKICAgICBlbmQKLSAgICBmYW1pbHlNYXAgPSB7
fQogCi0gICAgJHJ1bmxpc3QuZWFjaF93aXRoX2luZGV4IHsKLSAgICAgICAgfCBwbGFuLCBpbmRl
eCB8Ci0gICAgICAgIHVubGVzcyBmYW1pbHlNYXBbcGxhbi5mYW1pbHldCi0gICAgICAgICAgICBm
YW1pbHlNYXBbcGxhbi5mYW1pbHldID0gW10KLSAgICAgICAgZW5kCi0gICAgICAgIGlmIG5vdCBz
dGF0dXNNYXAuaGFzX2tleT8oaW5kZXgpCi0gICAgICAgICAgICBhcHBlbmROb1Jlc3VsdChwbGFu
KQotICAgICAgICAgICAgbm9yZXN1bHQgKz0gMQotICAgICAgICAgICAgbmV4dAotICAgICAgICBl
bmQKLSAgICAgICAgcmVzdWx0ID0gbmlsCi0gICAgICAgICMgSWYgYW55IG9mIHRoZSByZXN1bHRz
IHdlIGdvdCB3YXMgYSBwYXNzLCBjb25zaWRlciB0aGUgdGVzdAotICAgICAgICAjIHN1Y2Nlc3Nm
dWwuIFRoZSBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCBmYWlsdXJlcyBhcmUgYmVjYXVzZQotICAg
ICAgICAjIG9mIGluZnJhc3RydWN0dXJlIGlzc3VlcyAod2hpY2ggaXMgd2h5IHRoZSB0ZXN0IHdh
cyBydW4KLSAgICAgICAgIyBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgZmlyc3QgcGxhY2UpLgotICAg
ICAgICB0ZXN0V2FzU3VjY2Vzc2Z1bCA9IHN0YXR1c01hcFtpbmRleF0uaW5jbHVkZT8oU1RBVFVT
X0ZJTEVfUEFTUykKLSAgICAgICAgaWYgdGVzdFdhc1N1Y2Nlc3NmdWwKLSAgICAgICAgICAgIGFw
cGVuZFBhc3MocGxhbikKLSAgICAgICAgICAgIHJlc3VsdCA9ICJQQVNTIgotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBhcHBlbmRGYWlsdXJlKHBsYW4pCi0gICAgICAgICAgICByZXN1bHQgPSAi
RkFJTCIKLSAgICAgICAgZW5kCi0gICAgICAgIGFwcGVuZFJlc3VsdChwbGFuLCB0ZXN0V2FzU3Vj
Y2Vzc2Z1bCkKLSAgICAgICAgZmFtaWx5TWFwW3BsYW4uZmFtaWx5XSA8PCB7IDpyZXN1bHQgPT4g
cmVzdWx0LCA6cGxhbiA9PiBwbGFuIH0KLSAgICB9CisgICAgZXZhbHVhdG9yID0gVGVzdFJlc3Vs
dEV2YWx1YXRvckZpbmFsLm5ldygkcnVubGlzdCwgc3RhdHVzTWFwKQorICAgIGV2YWx1YXRvci52
aXNpdCEKIAotICAgIGlmIG5vcmVzdWx0ID4gMAotICAgICAgICAkc3RkZXJyLnB1dHMoIkNvdWxk
IG5vdCBnZXQgdGhlIGV4aXQgc3RhdHVzIGZvciAje25vcmVzdWx0fSB0ZXN0cyIpCisgICAgaWYg
ZXZhbHVhdG9yLm5vcmVzdWx0ID4gMAorICAgICAgICAkc3RkZXJyLnB1dHMoIkNvdWxkIG5vdCBn
ZXQgdGhlIGV4aXQgc3RhdHVzIGZvciAje2V2YWx1YXRvci5ub3Jlc3VsdH0gdGVzdHMiKQogICAg
ICAgICAjIFdlIGNhbid0IGNoYW5nZSBvdXIgZXhpdCBjb2RlLCBhcyBydW4tamF2YXNjcmlwdGNv
cmUtdGVzdHMKICAgICAgICAgIyBleHBlY3RzIDAgZXZlbiB3aGVuIHRoZXJlIGFyZSBmYWlsdXJl
cy4KICAgICBlbmQKIAorICAgIGZhbWlseU1hcCA9IGV2YWx1YXRvci5mYW1pbHlNYXAKKwogICAg
IEZpbGUub3Blbigkb3V0cHV0RGlyICsgInJlc3VsdHNCeUZhbWlseSIsICJ3IikgewogICAgICAg
ICB8IG91dHAgfAogICAgICAgICBmaXJzdCA9IHRydWUKQEAgLTI0ODYsNiArMjUzNCw3IEBAIGVu
ZAogY2xlYW4oJG91dHB1dERpciArICJmYWlsZWQiKQogY2xlYW4oJG91dHB1dERpciArICJwYXNz
ZWQiKQogY2xlYW4oJG91dHB1dERpciArICJub3Jlc3VsdCIpCitjbGVhbigkb3V0cHV0RGlyICsg
ImZsYWt5IikKIGNsZWFuKCRvdXRwdXREaXIgKyAicmVzdWx0cyIpCiBjbGVhbigkb3V0cHV0RGly
ICsgInJlc3VsdHNCeUZhbWlseSIpCiBjbGVhbigkb3V0cHV0RGlyICsgIi52bSIpCkBAIC0yNTI4
LDI3ICsyNTc3LDE3IEBAIEVOVlsiVFoiXSA9ICJVUy9QYWNpZmljIjsKIGRlZiBydW5CdW5kbGUK
ICAgICByYWlzZSB1bmxlc3MgJGJ1bmRsZQogCi0gICAgY2xlYW5SdW5uZXJEaXJlY3RvcnkKLSAg
ICBjbGVhbk9sZFJlc3VsdHMKLSAgICBydW5UZXN0UnVubmVyCi0gICAgY2xlYW5FbXB0eVJlc3Vs
dEZpbGVzCi1lbmQKLQotZGVmIHJ1bk5vcm1hbAotICAgIHJhaXNlIGlmICRidW5kbGUgb3IgJHRh
cmJhbGwKLQotICAgIHByZXBhcmVCdW5kbGUKLSAgICBwcmVwYXJlVGVzdFJ1bm5lcgotICAgIHJ1
blRlc3RSdW5uZXIKLSAgICBjbGVhbkVtcHR5UmVzdWx0RmlsZXMKLSAgICBkZXRlY3RGYWlsdXJl
cworICAgIHRlc3RSdW5uZXIgPSBUZXN0UnVubmVyLmNyZWF0ZSgkdGVzdFJ1bm5lclR5cGUsICRy
dW5uZXJEaXIpCisgICAgZXZhbHVhdG9yID0gQnVuZGxlVGVzdHNFeGVjdXRvci5uZXcoJHJ1bmxp
c3QsICRzZXJpYWxQbGFucywgSVRFUkFUSU9OX0xJTUlUUywgJHRyZWF0RmFpbGluZ0FzRmxha3ks
IHRlc3RSdW5uZXIpCisgICAgZXZhbHVhdG9yLmxvb3AKIGVuZAogCiBkZWYgcnVuVGFyYmFsbAog
ICAgIHJhaXNlIHVubGVzcyAkdGFyYmFsbAogCi0gICAgcHJlcGFyZUJ1bmRsZSAKLSAgICBwcmVw
YXJlVGVzdFJ1bm5lcgorICAgIHByZXBhcmVCdW5kbGUKKyAgICB0ZXN0UnVubmVyID0gVGVzdFJ1
bm5lci5jcmVhdGUoJHRlc3RSdW5uZXJUeXBlLCAkcnVubmVyRGlyKQorICAgIHRlc3RSdW5uZXIu
cHJlcGFyZSgkcnVubGlzdCwgJHNlcmlhbFBsYW5zLCBTZXQubmV3LCBuaWwpCiAgICAgY29tcHJl
c3NCdW5kbGUKIGVuZAogCkBAIC0yNTgyLDQ0ICsyNjIxLDI4IEBAIGRlZiBmb3JFYWNoUmVtb3Rl
KHJlbW90ZUhvc3RzLCBvcHRpb25zPXt9LCAmYmxrKQogICAgIGxpdmVSZW1vdGVzCiBlbmQKIAot
ZGVmIHJ1blJlbW90ZQotICAgIHJhaXNlIHVubGVzcyAkcmVtb3RlCi0KLSAgICBwcmVwYXJlQnVu
ZGxlCi0gICAgJHJlbW90ZUhvc3RzLmVhY2hfaW5kZXggewotICAgICAgICB8IGluZGV4IHwKLSAg
ICAgICAgcHJlcGFyZVRlc3RSdW5uZXIoaW5kZXgpCi0gICAgfQotICAgIGNvbXByZXNzQnVuZGxl
Ci0gICAgZm9yRWFjaFJlbW90ZSgkcmVtb3RlSG9zdHMpIHsKLSAgICAgICAgfCBpbmRleCB8Ci0g
ICAgICAgIHJ1blRlc3RSdW5uZXIoaW5kZXgpCi0gICAgfQotICAgIGRldGVjdEZhaWx1cmVzCi1l
bmQKLQotZGVmIHByZXBhcmVHbnVQYXJhbGxlbFJ1bm5lckpvYnMobmFtZSwgcnVubGlzdCwgZXhj
bHVkZSkKLSAgICBwYXRoID0gJHJ1bm5lckRpciArIG5hbWUKLSAgICBGaWxlVXRpbHMubWtkaXJf
cCgkcnVubmVyRGlyKQorY2xhc3MgVGVzdFJ1bm5lckdudVBhcmFsbGVsIDwgVGVzdFJ1bm5lcgor
ICAgIGRlZiBwcmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKG5hbWUsIHJ1bmxpc3QsIGNvbXBs
ZXRlZFBsYW5zKQorICAgICAgICBwYXRoID0gQHJ1bm5lckRpciArIG5hbWUKKyAgICAgICAgRmls
ZVV0aWxzLm1rZGlyX3AoQHJ1bm5lckRpcikKIAotICAgIEZpbGUub3BlbihwYXRoLCAidyIpIHsK
LSAgICAgICAgfCBvdXRwIHwKLSAgICAgICAgcnVubGlzdC5lYWNoIHsKLSAgICAgICAgICAgIHwg
cGxhbiB8Ci0gICAgICAgICAgICBpZiBleGNsdWRlLmhhc19rZXk/KHBsYW4pCi0gICAgICAgICAg
ICAgICAgbmV4dAotICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBvdXRwLnB1dHMoIi4vdGVz
dF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAgICAgIEZpbGUub3BlbihwYXRoLCAidyIpIHsK
KyAgICAgICAgICAgIHwgb3V0cCB8CisgICAgICAgICAgICBydW5saXN0LmVhY2ggeworICAgICAg
ICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICAgICAgaWYgY29tcGxldGVkUGxhbnMuaW5j
bHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgICAgIG91dHAucHV0cygiLi90ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9
IikKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KKyAgICBlbmQKKyAgICBkZWYgcHJl
cGFyZVJ1bm5lcihydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhv
c3RzKQorICAgICAgICBwcmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKCJwYXJhbGxlbC10ZXN0
cyIsIHJ1bmxpc3QsIGNvbXBsZXRlZFBsYW5zIHwgc2VyaWFsUGxhbnMpCisgICAgICAgIHByZXBh
cmVHbnVQYXJhbGxlbFJ1bm5lckpvYnMoInNlcmlhbC10ZXN0cyIsIHNlcmlhbFBsYW5zLCBjb21w
bGV0ZWRQbGFucykKKyAgICBlbmQKIGVuZAogCi1kZWYgcHJlcGFyZUdudVBhcmFsbGVsVGVzdFJ1
bm5lcihleGNsdWRlPXt9KQotICAgIHNlcmlhbFRlc3RzID0ge30KLSAgICAkc2VyaWFsUnVubGlz
dC5lYWNoIHsgfHB8IHNlcmlhbFRlc3RzW3BdID0gbmlsIH0KLSAgICBwcmVwYXJlR251UGFyYWxs
ZWxSdW5uZXJKb2JzKCJwYXJhbGxlbC10ZXN0cyIsICRydW5saXN0LCBleGNsdWRlLm1lcmdlKHNl
cmlhbFRlc3RzKSkKLSAgICBwcmVwYXJlR251UGFyYWxsZWxSdW5uZXJKb2JzKCJzZXJpYWwtdGVz
dHMiLCAkc2VyaWFsUnVubGlzdCwgZXhjbHVkZSkKLWVuZAogCiBkZWYgd2l0aEdudVBhcmFsbGVs
U3NoV3JhcHBlcigmYmxrKQogICAgIFRlbXBmaWxlLm9wZW4oJ3NzaC13cmFwcGVyJywgJHJ1bm5l
ckRpcikgewpAQCAtMjczOCwyOCArMjc2MSwxMDQgQEAgZGVmIHJ1bkdudVBhcmFsbGVsUnVubmVy
KHJlbW90ZUhvc3RzLCBpbnB1dHMsIG9wdGlvbnM9e30pCiAgICAgfQogZW5kCiAKLWRlZiBydW5H
bnVQYXJhbGxlbAotICAgIHJhaXNlIHVubGVzcyAkcmVtb3RlCi0gICAgcHJlcGFyZUJ1bmRsZQot
ICAgIHByZXBhcmVUZXN0UnVubmVyCi0gICAgY29tcHJlc3NCdW5kbGUKLSAgICBzdGF0dXNNYXAg
PSB7fQotICAgICMgVGhpcyBpcyBhIGhpZ2gtbGV2ZWwgcmV0cnkgbG9vcC4gSWYgYSByZW1vdGUg
aG9zdCBnb2VzIGF3YXkgaW4KLSAgICAjIHRoZSBtaWRkbGUgb2YgYSBydW4gYW5kIGVpdGhlciBk
b2Vzbid0IGNvbWUgYmFjayBvbmxpbmUgb3IgY29tZXMKLSAgICAjIGJhY2sgaGF2aW5nIHJlbW92
ZWQgdGhlIHJlbW90ZSBkaXJlY3RvcnkgKCopLCBnZXRTdGF0dXNNYXAgd2lsbCBiZQotICAgICMg
bWlzc2luZyByZXN1bHRzIGZvciB0aGVzZSB0ZXN0cywgYWxsb3dpbmcgdXMgdG8gcmV0cnkgdGhl
bSBpbgotICAgICMgdGhlIG5leHQgaXRlcmF0aW9uLgotICAgICMKLSAgICAjICgqKSBUaGlzIG1h
eSB3ZWxsIGhhcHBlbiB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIG9uIGVtYmVkZGVkCi0gICAgIyBi
b2FyZHMgdGhhdCByZWd1bGFybHkgY29ycnVwdCB0aGVpciBTRCBjYXJkLiBEZWZpbml0ZWx5IGFu
IGlzc3VlCi0gICAgIyBmb3IgdGhlIGNpMjAgYm9hcmRzIHVzZWQgdG8gdGVzdCBNSVBTLgotICAg
ICMKLSAgICAjIFRoZSBudW1iZXIgb2YgdHJpZXMgc2NhbGVzIHdpdGggdGhlIG51bWJlciBvZiBy
ZW1vdGVzIGluIHVzZSwKLSAgICAjIHdpdGggYSByZWFzb25hYmxlIGZsb29yLgotICAgIHRyaWVz
ID0gWzMsICRyZW1vdGVIb3N0cy5zaXplIC8gMl0ubWF4Ci0gICAgdHJpZXMudGltZXMgewotICAg
ICAgICB8IGl0ZXJhdGlvbiB8Ci0gICAgICAgIHJlbW90ZUhvc3RzID0gJHJlbW90ZUhvc3RzCisj
IFVuY29uZGl0aW9uYWxseSBydW4gdGhlIHNlbGZ0ZXN0cyBvbiBldmVyeSBleGVjdXRpb24sIHRo
ZXkncmUgcHJldHR5IGNoZWFwLgorRXhlY3V0b3JTZWxmVGVzdHMucnVuCitUZXN0UmVzdWx0RXZh
bHVhdG9yU2VsZlRlc3RzLnJ1bgorCitjbGFzcyBOb25SZW1vdGVUZXN0c0V4ZWN1dG9yIDwgQmFz
ZVRlc3RzRXhlY3V0b3IKKyAgICBkZWYgaW5pdGlhbGl6ZShydW5saXN0LCBzZXJpYWxQbGFucywg
bWF4SXRlcmF0aW9uc0JvdW5kcywgdHJlYXRGYWlsaW5nQXNGbGFreSwgdGVzdFJ1bm5lcikKKyAg
ICAgICAgc3VwZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsCisgICAgICAgICAgICAgIG5pbCwKKyAg
ICAgICAgICAgICAgbWF4SXRlcmF0aW9uc0JvdW5kcywKKyAgICAgICAgICAgICAgdHJlYXRGYWls
aW5nQXNGbGFreQorICAgICAgICAgICAgICkKKyAgICAgICAgQHRlc3RSdW5uZXIgPSB0ZXN0UnVu
bmVyCisgICAgZW5kCisgICAgZGVmIHByZXBhcmVFeGVjdXRpb24ocmVtb3RlSG9zdHMpCisgICAg
ICAgIHJlbW90ZUhvc3RzCisgICAgZW5kCisgICAgZGVmIHJlZnJlc2hFeGVjdXRpb24ocnVubGlz
dCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRlc3RzKQorICAgICAgICBpZiBub3QgQHJlbW90ZUhv
c3RzLm5pbD8KKyAgICAgICAgICAgIHJhaXNlICJyZW1vdGVIb3N0cyAje0ByZW1vdGVIb3N0c30s
IGV4cGVjdGVkIG5pbCIKKyAgICAgICAgZW5kCisgICAgICAgIEB0ZXN0UnVubmVyLnByZXBhcmUo
cnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRlc3RzLCBAcmVtb3RlSG9zdHMpCisgICAg
ZW5kCitlbmQKKworY2xhc3MgTm9ybWFsVGVzdHNFeGVjdXRvciA8IE5vblJlbW90ZVRlc3RzRXhl
Y3V0b3IKKyAgICBkZWYgcHJlcGFyZUFydGlmYWN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAgcmFp
c2UgInJlbW90ZUhvc3RzIG5vdCBuaWwiIHVubGVzcyByZW1vdGVIb3N0cy5uaWw/CisgICAgICAg
IHByZXBhcmVCdW5kbGUKKyAgICAgICAgQHRlc3RSdW5uZXIucHJlcGFyZShAcnVubGlzdCwgQHNl
cmlhbFBsYW5zLCBTZXQubmV3LCBuaWwpCisgICAgZW5kCisgICAgZGVmIGV4ZWN1dGVUZXN0cyhy
ZW1vdGVIb3N0cykKKyAgICAgICAgcnVuVGVzdFJ1bm5lcihAdGVzdFJ1bm5lciwgbmlsLCBuaWwp
CisgICAgICAgIGNsZWFuRW1wdHlSZXN1bHRGaWxlcworICAgIGVuZAorICAgIGRlZiB1cGRhdGVT
dGF0dXNNYXAoaXRlcmF0aW9uLCBzdGF0dXNNYXApCisgICAgICAgIHJldHVybiBnZXRTdGF0dXNN
YXAoc3RhdHVzTWFwKQorICAgIGVuZAorZW5kCisKK2NsYXNzIEJ1bmRsZVRlc3RzRXhlY3V0b3Ig
PCBOb25SZW1vdGVUZXN0c0V4ZWN1dG9yCisgICAgZGVmIHByZXBhcmVBcnRpZmFjdHMocmVtb3Rl
SG9zdHMpCisgICAgICAgIHJhaXNlICJyZW1vdGVIb3N0cyBub3QgbmlsIiB1bmxlc3MgcmVtb3Rl
SG9zdHMubmlsPworICAgICAgICBjbGVhblJ1bm5lckRpcmVjdG9yeQorICAgICAgICBjbGVhbk9s
ZFJlc3VsdHMKKyAgICBlbmQKKyAgICBkZWYgZXhlY3V0ZVRlc3RzKHJlbW90ZUhvc3RzKQorICAg
ICAgICBydW5UZXN0UnVubmVyKEB0ZXN0UnVubmVyLCBuaWwsIG5pbCkKKyAgICAgICAgY2xlYW5F
bXB0eVJlc3VsdEZpbGVzCisgICAgZW5kCisgICAgZGVmIHVwZGF0ZVN0YXR1c01hcChpdGVyYXRp
b24sIHN0YXR1c01hcCkKKyAgICAgICAgcmV0dXJuIGdldFN0YXR1c01hcChzdGF0dXNNYXApCisg
ICAgZW5kCitlbmQKKworY2xhc3MgQmFzZVJlbW90ZVRlc3RzRXhlY3V0b3IgPCBCYXNlVGVzdHNF
eGVjdXRvcgorICAgIGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCByZW1vdGVI
b3N0cywgaXRlcmF0aW9uTGltaXRzLAorICAgICAgICAgICAgICAgICAgIHRyZWF0RmFpbGluZ0Fz
Rmxha3ksIHRlc3RSdW5uZXIpCisgICAgICAgIHN1cGVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBy
ZW1vdGVIb3N0cywgaXRlcmF0aW9uTGltaXRzLCB0cmVhdEZhaWxpbmdBc0ZsYWt5KQorICAgICAg
ICBAdGVzdFJ1bm5lciA9IHRlc3RSdW5uZXIKKyAgICBlbmQKKyAgICBkZWYgdXBkYXRlU3RhdHVz
TWFwKGl0ZXJhdGlvbiwgc3RhdHVzTWFwKQorICAgICAgICByZXR1cm4gZ2V0U3RhdHVzTWFwKHN0
YXR1c01hcCkKKyAgICBlbmQKKyAgICBkZWYgcmVmcmVzaEV4ZWN1dGlvbihydW5saXN0LCBzZXJp
YWxQbGFucywgY29tcGxldGVkVGVzdHMpCisgICAgICAgICMgTm90ZSwgd2hlbiBydW5uaW5nIHRl
c3RzIHJlbW90ZWx5LCB3ZSBhbHdheXMgcHJlcGFyZSB0ZXN0cworICAgICAgICAjIGZvciBhbGwg
dGhlIGhvc3RzIHdoZW4gcmVmcmVzaGluZyBleGVjdXRpb24sIGFzIGV2ZW4gaG9zdHMKKyAgICAg
ICAgIyB0aGF0IHdlbnQgYXdheSBkdXJpbmcgdGVzdGluZyBtYXkgaGF2ZSBjb21lIGJhY2sgb25s
aW5lIGluCisgICAgICAgICMgdGhlIG1lYW50aW1lIC0tIHNvIHdlIGRvbid0IGV4cGVjdCBhIGxp
c3Qgb2YgbGl2ZSByZW1vdGUKKyAgICAgICAgIyBob3N0cyB0byBiZSBwYXNzZWQgaW4uCisgICAg
ICAgIEB0ZXN0UnVubmVyLnByZXBhcmUocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRl
c3RzLCBAcmVtb3RlSG9zdHMpCisgICAgZW5kCitlbmQKKworY2xhc3MgUmVtb3RlVGVzdHNFeGVj
dXRvciA8IEJhc2VSZW1vdGVUZXN0c0V4ZWN1dG9yCisgICAgZGVmIHByZXBhcmVBcnRpZmFjdHMo
cmVtb3RlSG9zdHMpCisgICAgICAgIHJhaXNlICJyZW1vdGVIb3N0cyBuaWwiIGlmIHJlbW90ZUhv
c3RzLm5pbD8KKyAgICAgICAgcHJlcGFyZUJ1bmRsZQorICAgICAgICBAdGVzdFJ1bm5lci5wcmVw
YXJlKEBydW5saXN0LCBAc2VyaWFsUGxhbnMsIFNldC5uZXcsIHJlbW90ZUhvc3RzKQorICAgICAg
ICBjb21wcmVzc0J1bmRsZQorICAgIGVuZAorICAgIGRlZiBwcmVwYXJlRXhlY3V0aW9uKHJlbW90
ZUhvc3RzKQorICAgICAgICByZW1vdGVIb3N0cworICAgIGVuZAorICAgIGRlZiBleGVjdXRlVGVz
dHMocmVtb3RlSG9zdHMpCisgICAgICAgIGZvckVhY2hSZW1vdGUocmVtb3RlSG9zdHMpIHsKKyAg
ICAgICAgICAgIHwgaW5kZXggfAorICAgICAgICAgICAgcnVuVGVzdFJ1bm5lcihAdGVzdFJ1bm5l
ciwgcmVtb3RlSG9zdHMsIGluZGV4KQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3Mg
R251UGFyYWxsZWxUZXN0c0V4ZWN1dG9yIDwgQmFzZVJlbW90ZVRlc3RzRXhlY3V0b3IKKyAgICBk
ZWYgcHJlcGFyZUFydGlmYWN0cyhyZW1vdGVIb3N0cykKKyAgICAgICAgcHJlcGFyZUJ1bmRsZQor
ICAgICAgICBAdGVzdFJ1bm5lci5wcmVwYXJlKEBydW5saXN0LCBAc2VyaWFsUGxhbnMsIFNldC5u
ZXcsIHJlbW90ZUhvc3RzKQorICAgICAgICBjb21wcmVzc0J1bmRsZQorICAgIGVuZAorICAgIGRl
ZiBwcmVwYXJlRXhlY3V0aW9uKHJlbW90ZUhvc3RzKQogICAgICAgICAjIElmIHRoZSBwcmVwYXJh
dG9yeSBzdGVwcyBmYWlsLCBkcm9wIHRoZSByZW1vdGUgaG9zdCBmcm9tIG91cgogICAgICAgICAj
IGxpc3QuIE90aGVyd2lzZSwgaWYgaXQgY29tZXMgYmFjayBvbmxpbmUgaW4gdGhlIG1pZGRsZSBv
ZiBhbgogICAgICAgICAjIGl0ZXJhdGlvbiwgd2UnbGwgdHJ5IHRvIHJ1biB0ZXN0IGpvYnMgb24g
aXQsIHBvc3NpYmx5IHVzaW5nCkBAIC0yNzY5LDMwICsyODY4LDQzIEBAIGRlZiBydW5HbnVQYXJh
bGxlbAogICAgICAgICAgICAgZ2V0UmVtb3RlRGlyZWN0b3J5SWZOZWVkZWQocmVtb3RlSG9zdCkK
ICAgICAgICAgICAgIGNvcHlCdW5kbGVUb1JlbW90ZShyZW1vdGVIb3N0KQogICAgICAgICB9Ci0g
ICAgICAgIHJlbW90ZUhvc3RzID0gdW5wYWNrQnVuZGxlR251UGFyYWxsZWwocmVtb3RlSG9zdHMp
Ci0gICAgICAgIGlmIHJlbW90ZUhvc3RzLnNpemUgPT0gMAotICAgICAgICAgICAgIyBFaXRoZXIg
ZXZlcnl0aGluZyBpcyBkb3duLCBvciBldmVyeXRoaW5nIGdvdAotICAgICAgICAgICAgIyByZWJv
b3RlZC4gSW4gdGhlIGxhdHRlciBjYXNlLCBhbGxvdyBlbm91Z2ggdGltZSBmb3IgdGhlCi0gICAg
ICAgICAgICAjIHJlbW90ZSBib2FyZHMgdG8gYm9vdCB1cCwgdGhlbiByZXRyeS4KLSAgICAgICAg
ICAgIHdhaXRJbnRlcnZhbCA9IDYwCi0gICAgICAgICAgICAkc3RkZXJyLnB1dHMoIkFsbCByZW1v
dGUgaG9zdHMgZmFpbGVkLCByZXRyeWluZyBhZnRlciAje3dhaXRJbnRlcnZhbH1zIikKLSAgICAg
ICAgICAgIHNsZWVwKHdhaXRJbnRlcnZhbCkKLSAgICAgICAgICAgIG5leHQKLSAgICAgICAgZW5k
Ci0KKyAgICAgICAgcmV0dXJuIHVucGFja0J1bmRsZUdudVBhcmFsbGVsKHJlbW90ZUhvc3RzKQor
ICAgIGVuZAorICAgIGRlZiBleGVjdXRlVGVzdHMocmVtb3RlSG9zdHMpCiAgICAgICAgIHJ1bkdu
dVBhcmFsbGVsUnVubmVyKHJlbW90ZUhvc3RzLCAkcnVubmVyRGlyICsgInNlcmlhbC10ZXN0cyIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgOnBhcmFsbGVsSm9ic09uRWFjaEhvc3Qg
PT4gMX0pCiAgICAgICAgIHJ1bkdudVBhcmFsbGVsUnVubmVyKHJlbW90ZUhvc3RzLCAkcnVubmVy
RGlyICsgInBhcmFsbGVsLXRlc3RzIikKLSAgICAgICAgc3RhdHVzTWFwID0gZ2V0U3RhdHVzTWFw
KHN0YXR1c01hcCkKLSAgICAgICAgY29tcGxldGVkVGVzdHMgPSBnZXRDb21wbGV0ZWRUZXN0c0Zy
b21TdGF0dXNNYXAoc3RhdHVzTWFwKQotICAgICAgICBicmVhayB1bmxlc3MgY29tcGxldGVkVGVz
dHMuc2l6ZSAhPSAkcnVubGlzdC5zaXplCi0gICAgICAgIGlmIGNvbXBsZXRlZFRlc3RzLnNpemUg
PiAkcnVubGlzdC5zaXplCi0gICAgICAgICAgICByYWlzZSAiVGVzdCBjb3VudCBtaXNtYXRjaDog
I3tjb21wbGV0ZWRUZXN0cy5zaXplfSA+ICN7JHJ1bmxpc3Quc2l6ZX0iCi0gICAgICAgIGVuZAot
ICAgICAgICAjIFJlZ2VuZXJhdGUgdGhlIGxpc3RzIG9mIHRlc3RzIHRvIHJ1bgotICAgICAgICBw
cmVwYXJlR251UGFyYWxsZWxUZXN0UnVubmVyKGNvbXBsZXRlZFRlc3RzKQotICAgICAgICAkc3Rk
ZXJyLnB1dHMoIkFmdGVyIHRyeSAje2l0ZXJhdGlvbiArIDF9LyN7dHJpZXN9OiBnb3QgcmVzdWx0
cyBmb3IgI3tjb21wbGV0ZWRUZXN0cy5zaXplfS8jeyRydW5saXN0LnNpemV9IHRlc3RzLCAje3Jl
bW90ZUhvc3RzLnNpemV9LyN7JHJlbW90ZUhvc3RzLnNpemV9IGhvc3RzIGxpdmUiKQotICAgIH0K
KyAgICBlbmQKK2VuZAorCitkZWYgcnVuTm9ybWFsCisgICAgcmFpc2UgaWYgJGJ1bmRsZSBvciAk
dGFyYmFsbAorCisgICAgdGVzdFJ1bm5lciA9IFRlc3RSdW5uZXIuY3JlYXRlKCR0ZXN0UnVubmVy
VHlwZSwgJHJ1bm5lckRpcikKKyAgICBldmFsdWF0b3IgPSBOb3JtYWxUZXN0c0V4ZWN1dG9yLm5l
dygkcnVubGlzdCwgJHNlcmlhbFBsYW5zLCBJVEVSQVRJT05fTElNSVRTLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0cmVhdEZhaWxpbmdBc0ZsYWt5LCB0ZXN0UnVu
bmVyKQorICAgIHN0YXR1c01hcCA9IGV2YWx1YXRvci5sb29wCisgICAgZGV0ZWN0RmFpbHVyZXMo
c3RhdHVzTWFwKQorCitlbmQKKworZGVmIHJ1blJlbW90ZQorICAgIHJhaXNlIHVubGVzcyAkcmVt
b3RlCisKKyAgICB0ZXN0UnVubmVyID0gVGVzdFJ1bm5lci5jcmVhdGUoJHRlc3RSdW5uZXJUeXBl
LCAkcnVubmVyRGlyKQorICAgIGV4ZWN1dG9yID0gUmVtb3RlVGVzdHNFeGVjdXRvci5uZXcoJHJ1
bmxpc3QsICRzZXJpYWxQbGFucywgJHJlbW90ZUhvc3RzLCBJVEVSQVRJT05fTElNSVRTLCAkdHJl
YXRGYWlsaW5nQXNGbGFreSwgdGVzdFJ1bm5lcikKKyAgICBzdGF0dXNNYXAgPSBleGVjdXRvci5s
b29wCisgICAgZGV0ZWN0RmFpbHVyZXMoc3RhdHVzTWFwKQorZW5kCisKK2RlZiBydW5HbnVQYXJh
bGxlbAorICAgIHJhaXNlICJDYW4gb25seSB1c2UgLS1nbnUtcGFyYWxsZWwtcnVubmVyIHdpdGgg
LS1yZW1vdGUqIiB1bmxlc3MgJHJlbW90ZQorICAgIHJhaXNlICJDYW4gb25seSB1c2UgLS1nbnUt
cGFyYWxsZWwtcnVubmVyIHdpdGggdGhlIGRlZmF1bHQgd3JpdGVyIiB1bmxlc3MgJHRlc3RXcml0
ZXIgPT0gImRlZmF1bHQiCisgICAgdGVzdFJ1bm5lciA9IFRlc3RSdW5uZXIuY3JlYXRlKCR0ZXN0
UnVubmVyVHlwZSwgJHJ1bm5lckRpcikKKyAgICBleGVjdXRvciA9IEdudVBhcmFsbGVsVGVzdHNF
eGVjdXRvci5uZXcoJHJ1bmxpc3QsICRzZXJpYWxQbGFucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJHJlbW90ZUhvc3RzLCBJVEVSQVRJT05fTElNSVRTLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHJlYXRGYWlsaW5n
QXNGbGFreSwgdGVzdFJ1bm5lcikKKyAgICBzdGF0dXNNYXAgPSBleGVjdXRvci5sb29wCiAgICAg
ZGV0ZWN0RmFpbHVyZXMoc3RhdHVzTWFwKQogZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLWRlZmF1bHQucmIgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1kZWZhdWx0LnJiCmluZGV4
IGQ2MWI3MWRhMDBlMWZkYWM5ZGY5ZGQyNTllMGJlNjYwNGM3YjcxM2EuLjM5ZjFkYjA3MmZhMDEw
ZmQ1ZGQ1MTllNjQ4ZjNiYWI3ZGFmZTFhYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLWRlZmF1bHQucmIKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVmYXVsdC5yYgpAQCAtMjIw
LDI1ICsyMjAsNyBAQCBkZWYgY2hha3JhUGFzc0ZhaWxFcnJvckhhbmRsZXIKICAgICB9CiBlbmQK
IAotY2xhc3MgUGxhbgotICAgIGF0dHJfcmVhZGVyIDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpm
YW1pbHksIDpuYW1lLCA6b3V0cHV0SGFuZGxlciwgOmVycm9ySGFuZGxlciwgOmFkZGl0aW9uYWxF
bnYKLSAgICBhdHRyX2FjY2Vzc29yIDppbmRleAotICAgIAotICAgIGRlZiBpbml0aWFsaXplKGRp
cmVjdG9yeSwgYXJndW1lbnRzLCBmYW1pbHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFu
ZGxlcikKLSAgICAgICAgQGRpcmVjdG9yeSA9IGRpcmVjdG9yeQotICAgICAgICBAYXJndW1lbnRz
ID0gYXJndW1lbnRzCi0gICAgICAgIEBmYW1pbHkgPSBmYW1pbHkKLSAgICAgICAgQG5hbWUgPSBu
YW1lCi0gICAgICAgIEBvdXRwdXRIYW5kbGVyID0gb3V0cHV0SGFuZGxlcgotICAgICAgICBAZXJy
b3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyCi0gICAgICAgIEBpc1Nsb3cgPSAhISRydW5Db21tYW5k
T3B0aW9uc1s6aXNTbG93XQotICAgICAgICBAY3Jhc2hPSyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25z
WzpjcmFzaE9LXQotICAgICAgICBpZiBAY3Jhc2hPSwotICAgICAgICAgICAgQG91dHB1dEhhbmRs
ZXIgPSBub2lzeU91dHB1dEhhbmRsZXIKLSAgICAgICAgZW5kCi0gICAgICAgIEBhZGRpdGlvbmFs
RW52ID0gW10KLSAgICBlbmQKLSAgICAKK2NsYXNzIFBsYW4gPCBCYXNlUGxhbgogICAgIGRlZiBz
aGVsbENvbW1hbmQKICAgICAgICAgIyBJdCdzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGF0IHRo
ZSB0ZXN0IGlzIGFjdHVhbGx5IHJ1biBpbiBhIHN1YnNoZWxsLCBzbyBpZiB3ZSBjaGFuZ2UgZGly
ZWN0b3J5CiAgICAgICAgICMgaW4gdGhlIHN1YnNoZWxsIHdoZW4gd2UgcmV0dXJuIHdlIHdpbGwg
YmUgaW4gb3VyIG9yaWdpbmFsIGRpcmVjdG9yeS4gVGhpcyBpcyBuaWNlIGJlY2F1c2Ugd2UgZG9u
J3QKQEAgLTM0NSwxMTEgKzMyNywxMzcgQEAgY2xhc3MgUGxhbgogICAgIGVuZAogZW5kCiAKLWRl
ZiBwcmVwYXJlU2hlbGxUZXN0UnVubmVyCi0gICAgRmlsZVV0aWxzLmNwIFNDUklQVFNfUEFUSCAr
ICJqc2Mtc3RyZXNzLXRlc3QtaGVscGVycyIgKyAic2hlbGwtcnVubmVyLnNoIiwgJHJ1bm5lckRp
ciArICJydW5zY3JpcHQiCitjbGFzcyBUZXN0UnVubmVyU2hlbGwgPCBUZXN0UnVubmVyCisgICAg
ZGVmIGluaXRpYWxpemUodGVzdFJ1bm5lclR5cGUsIHJ1bm5lckRpcikKKyAgICAgICAgc3VwZXIo
dGVzdFJ1bm5lclR5cGUsIHJ1bm5lckRpcikKKyAgICAgICAgQHRlc3RMaXN0UGF0aCA9IHJ1bm5l
ckRpciArICd0ZXN0bGlzdCcKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5saXN0
LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBGaWxl
VXRpbHMuY3AgU0NSSVBUU19QQVRIICsgImpzYy1zdHJlc3MtdGVzdC1oZWxwZXJzIiArICJzaGVs
bC1ydW5uZXIuc2giLCBAcnVubmVyRGlyICsgInJ1bnNjcmlwdCIKKyAgICAgICAgRmlsZS5vcGVu
KEB0ZXN0TGlzdFBhdGgsICJ3IikgeyB8ZnwKKyAgICAgICAgICAgIHJ1bmxpc3QuZWFjaCB7IHxw
bGFufAorICAgICAgICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisg
ICAgICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgICBmLnB1dHMoInRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iKQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgZW5kCisgICAgZGVmIGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAgICAg
ICAgInNoIHJ1bnNjcmlwdCAje0ZpbGUuYmFzZW5hbWUoQHRlc3RMaXN0UGF0aCl9IgorICAgIGVu
ZAogZW5kCiAKLWRlZiBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIHByZXJlcXMpCi0gICAgaW5k
ZXggPSBwbGFuLmluZGV4Ci0gICAgdGFyZ2V0ID0gInRlc3RfZG9uZV8je2luZGV4fSIKLSAgICBv
dXRwLnB1dHMgIiN7dGFyZ2V0fTogI3twcmVyZXFzLmpvaW4oIiAiKX0iCi0gICAgb3V0cC5wdXRz
ICJcdHNoIHRlc3Rfc2NyaXB0XyN7aW5kZXh9IgotICAgIHRhcmdldAotZW5kCitjbGFzcyBUZXN0
UnVubmVyTWFrZSA8IFRlc3RSdW5uZXIKKyAgICBkZWYgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFu
LCBwcmVyZXFzKQorICAgICAgICBpbmRleCA9IHBsYW4uaW5kZXgKKyAgICAgICAgdGFyZ2V0ID0g
InRlc3RfZG9uZV8je2luZGV4fSIKKyAgICAgICAgb3V0cC5wdXRzICIje3RhcmdldH06ICN7cHJl
cmVxcy5qb2luKCIgIil9IgorICAgICAgICBvdXRwLnB1dHMgIlx0c2ggdGVzdF9zY3JpcHRfI3tp
bmRleH0iCisgICAgICAgIHRhcmdldAorICAgIGVuZAorICAgIGRlZiBwcmVwYXJlUnVubmVyRm9y
UmVtb3RlKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSW5kZXgp
CisgICAgICAgICMgVGhlIGdvYWxzIG9mIG91ciBwYXJhbGxlbCB0ZXN0IHJ1bm5lciBhcmUgc2Nh
bGFiaWxpdHkgYW5kIHNpbXBsaWNpdHkuIFRoZQorICAgICAgICAjIHNpbXBsaWNpdHkgcGFydCBp
cyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50LiBXZSBkb24ndCB3YW50IHRvIGhhdmUgdG8gaGF2ZQor
ICAgICAgICAjIGEgZnVsbC10aW1lIGNvbnRyaWJ1dG9yIGp1c3QgcGhpbG9zb3BoaXNpbmcgYWJv
dXQgcGFyYWxsZWwgdGVzdGluZy4KKyAgICAgICAgIworICAgICAgICAjIEFzIHN1Y2gsIHdlIGp1
c3QgcGFzcyBvZmYgYWxsIG9mIHRoZSBoYXJkIHdvcmsgdG8gJ21ha2UnLiBUaGlzCisgICAgICAg
ICMgY3JlYXRlcyBhIGR1bW15IGRpcmVjdG9yeSAoIiRvdXRwdXREaXIvLnJ1bm5lciIpIGluIHdo
aWNoIHdlCisgICAgICAgICMgY3JlYXRlIGEgZHVtbXkgTWFrZWZpbGUuIFRoZSBNYWtlZmlsZSBo
YXMgYSAncGFyYWxsZWwnIHJ1bGUgdGhhdAorICAgICAgICAjIGRlcGVuZHMgYWxsIHRlc3RzLCBv
dGhlciB0aGFuIHRoZSBvbmVzIG1hcmtlZCAnc2VyaWFsJy4gVGhlCisgICAgICAgICMgc2VyaWFs
IHRlc3RzIGFyZSBhcnJhbmdlZCBpbiBhIGNoYWluOyB0aGUgbGFzdCB0YXJnZXQgaW4gdGhlCisg
ICAgICAgICMgc2VyaWFsIGNoYWluIGRlcGVuZHMgb24gJ3BhcmFsbGVsJyBhbmQgJ2FsbCcgZGVw
ZW5kcyBvbiB0aGUgaGVhZAorICAgICAgICAjIG9mIHRoZSBjaGFpbi4gUnVubmluZyAnbWFrZSAt
aiA8d2hhdGV2ZXI+JyBvbiB0aGlzIE1ha2VmaWxlCisgICAgICAgICMgcmVzdWx0cyBpbiAnbWFr
ZScgZG9pbmcgYWxsIG9mIHRoZSBoYXJkIHdvcms6CisgICAgICAgICMKKyAgICAgICAgIyAtIExv
YWQgYmFsYW5jaW5nIGp1c3Qgd29ya3MuIE1vc3Qgc3lzdGVtcyBoYXZlIGEgZ3JlYXQgbG9hZCBi
YWxhbmNlciBpbgorICAgICAgICAjICAgJ21ha2UnLiBJZiB5b3VyIHN5c3RlbSBkb2Vzbid0IHRo
ZW4ganVzdCBpbnN0YWxsIGEgcmVhbCAnbWFrZScuCisgICAgICAgICMKKyAgICAgICAgIyAtIElu
dGVycnVwdGlvbnMganVzdCB3b3JrLiBGb3IgZXhhbXBsZSBDdHJsLUMgaGFuZGxpbmcgaW4gJ21h
a2UnIGlzCisgICAgICAgICMgICBleGFjdGx5IHJpZ2h0LiBZb3UgZG9uJ3QgaGF2ZSB0byB3b3Jy
eSBhYm91dCB6b21iaWUgcHJvY2Vzc2VzLgorICAgICAgICAjCisgICAgICAgICMgV2UgdGhlbiBk
byBzb21lIHRyaWNrcyB0byBtYWtlIGZhaWx1cmUgZGV0ZWN0aW9uIHdvcmsgYW5kIHRvIG1ha2Ug
dGhpcworICAgICAgICAjIHRvdGFsbHkgc291bmQuIElmIGEgdGVzdCBmYWlscywgd2UgZG9uJ3Qg
d2FudCB0aGUgd2hvbGUgJ21ha2UnIGpvYiB0bworICAgICAgICAjIHN0b3AuIFdlIGFsc28gZG9u
J3QgaGF2ZSBhbnkgZmFjaWxpdHkgZm9yIG1ha2VmaWxlLWVzY2FwaW5nIG9mIHBhdGggbmFtZXMu
CisgICAgICAgICMgV2UgZG8gaGF2ZSBzdWNoIGEgdGhpbmcgZm9yIHNoZWxsLWVzY2FwaW5nLCB0
aG91Z2guIFdlIGZpeCBib3RoIHByb2JsZW1zCisgICAgICAgICMgYnkgaGF2aW5nIHRoZSBhY3R1
YWwgd29yayBmb3IgZWFjaCBvZiB0aGUgdGVzdCBydWxlcyBiZSBkb25lIGluIGEgc2hlbGwKKyAg
ICAgICAgIyBzY3JpcHQgb24gdGhlIHNpZGUuIFRoZXJlIGlzIG9uZSBzdWNoIHNjcmlwdCBwZXIg
dGVzdC4gVGhlIHNjcmlwdCByZXNwb25kcworICAgICAgICAjIHRvIGZhaWx1cmUgYnkgcHJpbnRp
bmcgc29tZXRoaW5nIG9uIHRoZSBjb25zb2xlIGFuZCB0aGVuIHRvdWNoaW5nIGEKKyAgICAgICAg
IyBmYWlsdXJlIGZpbGUgZm9yIHRoYXQgdGVzdCwgYnV0IHRoZW4gc3RpbGwgcmV0dXJucyAwLiBU
aGlzIG1ha2VzICdtYWtlJworICAgICAgICAjIGNvbnRpbnVlIHBhc3QgdGhhdCBmYWlsdXJlIGFu
ZCBjb21wbGV0ZSBhbGwgdGhlIHRlc3RzIGFueXdheS4KKyAgICAgICAgIworICAgICAgICAjIElu
IHRoZSBlbmQsIHRoaXMgc2NyaXB0IGNvbGxlY3RzIGFsbCBvZiB0aGUgZmFpbHVyZXMgYnkgc2Vh
cmNoaW5nIGZvcgorICAgICAgICAjIGZpbGVzIGluIHRoZSAucnVubmVyIGRpcmVjdG9yeSB3aG9z
ZSBuYW1lIG1hdGNoZXMgL150ZXN0X2ZhaWxfLywgd2hlcmUKKyAgICAgICAgIyB0aGUgdGhpbmcg
YWZ0ZXIgdGhlICdmYWlsXycgaXMgdGhlIHRlc3QgaW5kZXguIFRob3NlIGFyZSB0aGUgZmlsZXMg
dGhhdAorICAgICAgICAjIHdvdWxkIGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0
aGV5IGRldGVjdCBmYWlsdXJlLiBXZSdyZQorICAgICAgICAjIGJhc2ljYWxseSB1c2luZyB0aGUg
ZmlsZXN5c3RlbSBhcyBhIGNvbmN1cnJlbnQgZGF0YWJhc2Ugb2YgdGVzdCBmYWlsdXJlcy4KKyAg
ICAgICAgIyBFdmVuIGlmIHR3byB0ZXN0cyBmYWlsIGF0IHRoZSBzYW1lIHRpbWUsIHNpbmNlIHRo
ZXkncmUgdG91Y2hpbmcgZGlmZmVyZW50CisgICAgICAgICMgZmlsZXMgd2Ugd29uJ3QgbWlzcyBh
bnkgZmFpbHVyZXMuCisgICAgICAgIHJ1blBsYW5zID0gW10KKyAgICAgICAgc2VyaWFsUnVuUGxh
bnMgPSBbXQorICAgICAgICBydW5saXN0LmVhY2ggeworICAgICAgICAgICAgfCBwbGFuIHwKKyAg
ICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAg
ICAgbmV4dAorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBpZiBAcmVtb3RlSG9zdHMubmls
PyBvciBwbGFuLmluZGV4ICUgQHJlbW90ZUhvc3RzLmxlbmd0aCA9PSByZW1vdGVJbmRleAorICAg
ICAgICAgICAgICAgIGlmIHNlcmlhbFBsYW5zLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAg
ICAgICAgIHNlcmlhbFJ1blBsYW5zIDw8IHBsYW4KKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHJ1blBsYW5zIDw8IHBsYW4KKyAgICAgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICB9CiAKLWRlZiBwcmVwYXJlTWFrZVRlc3RSdW5uZXIocmVt
b3RlSW5kZXgpCi0gICAgIyBUaGUgZ29hbHMgb2Ygb3VyIHBhcmFsbGVsIHRlc3QgcnVubmVyIGFy
ZSBzY2FsYWJpbGl0eSBhbmQgc2ltcGxpY2l0eS4gVGhlCi0gICAgIyBzaW1wbGljaXR5IHBhcnQg
aXMgcGFydGljdWxhcmx5IGltcG9ydGFudC4gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGhhdmUK
LSAgICAjIGEgZnVsbC10aW1lIGNvbnRyaWJ1dG9yIGp1c3QgcGhpbG9zb3BoaXNpbmcgYWJvdXQg
cGFyYWxsZWwgdGVzdGluZy4KLSAgICAjCi0gICAgIyBBcyBzdWNoLCB3ZSBqdXN0IHBhc3Mgb2Zm
IGFsbCBvZiB0aGUgaGFyZCB3b3JrIHRvICdtYWtlJy4gVGhpcwotICAgICMgY3JlYXRlcyBhIGR1
bW15IGRpcmVjdG9yeSAoIiRvdXRwdXREaXIvLnJ1bm5lciIpIGluIHdoaWNoIHdlCi0gICAgIyBj
cmVhdGUgYSBkdW1teSBNYWtlZmlsZS4gVGhlIE1ha2VmaWxlIGhhcyBhICdwYXJhbGxlbCcgcnVs
ZSB0aGF0Ci0gICAgIyBkZXBlbmRzIGFsbCB0ZXN0cywgb3RoZXIgdGhhbiB0aGUgb25lcyBtYXJr
ZWQgJ3NlcmlhbCcuIFRoZQotICAgICMgc2VyaWFsIHRlc3RzIGFyZSBhcnJhbmdlZCBpbiBhIGNo
YWluOyB0aGUgbGFzdCB0YXJnZXQgaW4gdGhlCi0gICAgIyBzZXJpYWwgY2hhaW4gZGVwZW5kcyBv
biAncGFyYWxsZWwnIGFuZCAnYWxsJyBkZXBlbmRzIG9uIHRoZSBoZWFkCi0gICAgIyBvZiB0aGUg
Y2hhaW4uIFJ1bm5pbmcgJ21ha2UgLWogPHdoYXRldmVyPicgb24gdGhpcyBNYWtlZmlsZQotICAg
ICMgcmVzdWx0cyBpbiAnbWFrZScgZG9pbmcgYWxsIG9mIHRoZSBoYXJkIHdvcms6Ci0gICAgIwot
ICAgICMgLSBMb2FkIGJhbGFuY2luZyBqdXN0IHdvcmtzLiBNb3N0IHN5c3RlbXMgaGF2ZSBhIGdy
ZWF0IGxvYWQgYmFsYW5jZXIgaW4KLSAgICAjICAgJ21ha2UnLiBJZiB5b3VyIHN5c3RlbSBkb2Vz
bid0IHRoZW4ganVzdCBpbnN0YWxsIGEgcmVhbCAnbWFrZScuCi0gICAgIwotICAgICMgLSBJbnRl
cnJ1cHRpb25zIGp1c3Qgd29yay4gRm9yIGV4YW1wbGUgQ3RybC1DIGhhbmRsaW5nIGluICdtYWtl
JyBpcwotICAgICMgICBleGFjdGx5IHJpZ2h0LiBZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91
dCB6b21iaWUgcHJvY2Vzc2VzLgotICAgICMKLSAgICAjIFdlIHRoZW4gZG8gc29tZSB0cmlja3Mg
dG8gbWFrZSBmYWlsdXJlIGRldGVjdGlvbiB3b3JrIGFuZCB0byBtYWtlIHRoaXMKLSAgICAjIHRv
dGFsbHkgc291bmQuIElmIGEgdGVzdCBmYWlscywgd2UgZG9uJ3Qgd2FudCB0aGUgd2hvbGUgJ21h
a2UnIGpvYiB0bwotICAgICMgc3RvcC4gV2UgYWxzbyBkb24ndCBoYXZlIGFueSBmYWNpbGl0eSBm
b3IgbWFrZWZpbGUtZXNjYXBpbmcgb2YgcGF0aCBuYW1lcy4KLSAgICAjIFdlIGRvIGhhdmUgc3Vj
aCBhIHRoaW5nIGZvciBzaGVsbC1lc2NhcGluZywgdGhvdWdoLiBXZSBmaXggYm90aCBwcm9ibGVt
cwotICAgICMgYnkgaGF2aW5nIHRoZSBhY3R1YWwgd29yayBmb3IgZWFjaCBvZiB0aGUgdGVzdCBy
dWxlcyBiZSBkb25lIGluIGEgc2hlbGwKLSAgICAjIHNjcmlwdCBvbiB0aGUgc2lkZS4gVGhlcmUg
aXMgb25lIHN1Y2ggc2NyaXB0IHBlciB0ZXN0LiBUaGUgc2NyaXB0IHJlc3BvbmRzCi0gICAgIyB0
byBmYWlsdXJlIGJ5IHByaW50aW5nIHNvbWV0aGluZyBvbiB0aGUgY29uc29sZSBhbmQgdGhlbiB0
b3VjaGluZyBhCi0gICAgIyBmYWlsdXJlIGZpbGUgZm9yIHRoYXQgdGVzdCwgYnV0IHRoZW4gc3Rp
bGwgcmV0dXJucyAwLiBUaGlzIG1ha2VzICdtYWtlJwotICAgICMgY29udGludWUgcGFzdCB0aGF0
IGZhaWx1cmUgYW5kIGNvbXBsZXRlIGFsbCB0aGUgdGVzdHMgYW55d2F5LgotICAgICMKLSAgICAj
IEluIHRoZSBlbmQsIHRoaXMgc2NyaXB0IGNvbGxlY3RzIGFsbCBvZiB0aGUgZmFpbHVyZXMgYnkg
c2VhcmNoaW5nIGZvcgotICAgICMgZmlsZXMgaW4gdGhlIC5ydW5uZXIgZGlyZWN0b3J5IHdob3Nl
IG5hbWUgbWF0Y2hlcyAvXnRlc3RfZmFpbF8vLCB3aGVyZQotICAgICMgdGhlIHRoaW5nIGFmdGVy
IHRoZSAnZmFpbF8nIGlzIHRoZSB0ZXN0IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQK
LSAgICAjIHdvdWxkIGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0aGV5IGRldGVj
dCBmYWlsdXJlLiBXZSdyZQotICAgICMgYmFzaWNhbGx5IHVzaW5nIHRoZSBmaWxlc3lzdGVtIGFz
IGEgY29uY3VycmVudCBkYXRhYmFzZSBvZiB0ZXN0IGZhaWx1cmVzLgotICAgICMgRXZlbiBpZiB0
d28gdGVzdHMgZmFpbCBhdCB0aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5nIGRp
ZmZlcmVudAotICAgICMgZmlsZXMgd2Ugd29uJ3QgbWlzcyBhbnkgZmFpbHVyZXMuCi0gICAgc2Vy
aWFsUGxhbnMgPSB7fQotICAgICRzZXJpYWxSdW5saXN0LmVhY2ggeyB8cHwgc2VyaWFsUGxhbnNb
cF0gPSBuaWwgfQotICAgIHJ1blBsYW5zID0gW10KLSAgICBzZXJpYWxSdW5QbGFucyA9IFtdCi0g
ICAgJHJ1bmxpc3QuZWFjaCB7Ci0gICAgICAgIHwgcGxhbiB8Ci0gICAgICAgIGlmICEkcmVtb3Rl
IG9yIHBsYW4uaW5kZXggJSAkcmVtb3RlSG9zdHMubGVuZ3RoID09IHJlbW90ZUluZGV4Ci0gICAg
ICAgICAgICBpZiBzZXJpYWxQbGFucy5oYXNfa2V5PyhwbGFuKQotICAgICAgICAgICAgICAgIHNl
cmlhbFJ1blBsYW5zIDw8IHBsYW4KKyAgICAgICAgRmlsZS5vcGVuKEBydW5uZXJEaXIgKyAiTWFr
ZWZpbGUuI3tyZW1vdGVJbmRleH0iLCAidyIpIHsKKyAgICAgICAgICAgIHwgb3V0cCB8CisgICAg
ICAgICAgICBpZiBzZXJpYWxSdW5QbGFucy5lbXB0eT8KKyAgICAgICAgICAgICAgICBvdXRwLnB1
dHMoImFsbDogcGFyYWxsZWwiKQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJ1
blBsYW5zIDw8IHBsYW4KKyAgICAgICAgICAgICAgICBzZXJpYWxQcmVyZXEgPSAidGVzdF9kb25l
XyN7c2VyaWFsUnVuUGxhbnNbLTFdLmluZGV4fSIKKyAgICAgICAgICAgICAgICBvdXRwLnB1dHMo
ImFsbDogI3tzZXJpYWxQcmVyZXF9IikKKyAgICAgICAgICAgICAgICBwcmV2X3RhcmdldCA9ICJw
YXJhbGxlbCIKKyAgICAgICAgICAgICAgICBzZXJpYWxSdW5QbGFucy5lYWNoIHsKKyAgICAgICAg
ICAgICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAgICAgICAgcHJldl90YXJnZXQgPSBv
dXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtwcmV2X3RhcmdldF0pCisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgZW5kCi0gICAgICAgIGVuZAotICAgIH0KLQotICAgIEZpbGUub3Blbigk
cnVubmVyRGlyICsgIk1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IiwgInciKSB7Ci0gICAgICAgIHwg
b3V0cCB8Ci0gICAgICAgIGlmIHNlcmlhbFJ1blBsYW5zLmVtcHR5PwotICAgICAgICAgICAgb3V0
cC5wdXRzKCJhbGw6IHBhcmFsbGVsIikKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2VyaWFs
UHJlcmVxID0gInRlc3RfZG9uZV8je3NlcmlhbFJ1blBsYW5zWy0xXS5pbmRleH0iCi0gICAgICAg
ICAgICBvdXRwLnB1dHMoImFsbDogI3tzZXJpYWxQcmVyZXF9IikKLSAgICAgICAgICAgIHByZXZf
dGFyZ2V0ID0gInBhcmFsbGVsIgotICAgICAgICAgICAgc2VyaWFsUnVuUGxhbnMuZWFjaCB7Cisg
ICAgICAgICAgICBwYXJhbGxlbFRhcmdldHMgPSBydW5QbGFucy5jb2xsZWN0IHsKICAgICAgICAg
ICAgICAgICB8IHBsYW4gfAotICAgICAgICAgICAgICAgIHByZXZfdGFyZ2V0ID0gb3V0cHV0X3Rh
cmdldChvdXRwLCBwbGFuLCBbcHJldl90YXJnZXRdKQorICAgICAgICAgICAgICAgIG91dHB1dF90
YXJnZXQob3V0cCwgcGxhbiwgW10pCiAgICAgICAgICAgICB9Ci0gICAgICAgIGVuZAotICAgICAg
ICBwYXJhbGxlbFRhcmdldHMgPSBydW5QbGFucy5jb2xsZWN0IHsKLSAgICAgICAgICAgIHwgcGxh
biB8Ci0gICAgICAgICAgICBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIFtdKQorICAgICAgICAg
ICAgb3V0cC5wdXRzKCJwYXJhbGxlbDogIiArIHBhcmFsbGVsVGFyZ2V0cy5qb2luKCIgIikpCiAg
ICAgICAgIH0KLSAgICAgICAgb3V0cC5wdXRzKCJwYXJhbGxlbDogIiArIHBhcmFsbGVsVGFyZ2V0
cy5qb2luKCIgIikpCi0gICAgfQorICAgIGVuZAorICAgIGRlZiBwcmVwYXJlUnVubmVyKHJ1bmxp
c3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAgICAgIGlm
IHJlbW90ZUhvc3RzLm5pbD8KKyAgICAgICAgICAgIHByZXBhcmVSdW5uZXJGb3JSZW1vdGUocnVu
bGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCAwKQorICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZW1vdGVIb3N0cy5lYWNoX2luZGV4IHsKKyAgICAgICAgICAgICAgICB8cmVtb3Rl
SW5kZXh8CisgICAgICAgICAgICAgICAgcHJlcGFyZVJ1bm5lckZvclJlbW90ZShydW5saXN0LCBz
ZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUluZGV4KQorICAgICAgICAgICAgfQor
ICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBkZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAg
ICAgICAibWFrZSAtaiAjeyRudW1DaGlsZFByb2Nlc3Nlc30gLXMgLWYgTWFrZWZpbGUuI3tyZW1v
dGVJbmRleH0iCisgICAgZW5kCiBlbmQKIAotZGVmIHByZXBhcmVSdWJ5VGVzdFJ1bm5lcgotICAg
IEZpbGUub3BlbigkcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3IikgewotICAgICAgICB8IG91
dHAgfAotICAgICAgICAkcnVubGlzdC5lYWNoIHsKLSAgICAgICAgICAgIHwgcGxhbiB8Ci0gICAg
ICAgICAgICBvdXRwLnB1dHMgInByaW50IGBzaCB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9IDI+
JjFgIgorY2xhc3MgVGVzdFJ1bm5lclJ1YnkgPCBUZXN0UnVubmVyCisgICAgZGVmIHByZXBhcmVS
dW5uZXIocnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVIb3N0cykK
KyAgICAgICAgRmlsZS5vcGVuKEBydW5uZXJEaXIgKyAicnVuc2NyaXB0IiwgInciKSB7CisgICAg
ICAgICAgICB8IG91dHAgfAorICAgICAgICAgICAgcnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAg
ICAgICB8IHBsYW4gfAorICAgICAgICAgICAgICAgIGlmIGNvbXBsZXRlZFBsYW5zLmluY2x1ZGU/
KHBsYW4pCisgICAgICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgICAgICBvdXRwLnB1dHMgInByaW50IGBzaCB0ZXN0X3NjcmlwdF8je3BsYW4uaW5k
ZXh9IDI+JjFgIgorICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQotZW5kCi0KLWRlZiB0
ZXN0UnVubmVyQ29tbWFuZChyZW1vdGVJbmRleD0wKQotICAgIGNhc2UgJHRlc3RSdW5uZXJUeXBl
Ci0gICAgd2hlbiA6c2hlbGwKLSAgICAgICAgY29tbWFuZCA9ICJzaCBydW5zY3JpcHQiCi0gICAg
d2hlbiA6bWFrZQotICAgICAgICBjb21tYW5kID0gIm1ha2UgLWogI3skbnVtQ2hpbGRQcm9jZXNz
ZXN9IC1zIC1mIE1ha2VmaWxlLiN7cmVtb3RlSW5kZXh9IgotICAgIHdoZW4gOnJ1YnkKLSAgICAg
ICAgY29tbWFuZCA9ICJydWJ5IHJ1bnNjcmlwdCIKLSAgICBlbHNlCi0gICAgICAgIHJhaXNlICJV
bmtub3duIHRlc3QgcnVubmVyIHR5cGU6ICN7JHRlc3RSdW5uZXJUeXBlLnRvX3N9IgogICAgIGVu
ZAotICAgIHJldHVybiBjb21tYW5kCisgICAgZGVmIGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAg
ICAgICAgInJ1YnkgcnVuc2NyaXB0IgorICAgIGVuZAogZW5kCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdyaXRlci1wbGF5c3RhdGlvbi5yYiBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlzdGF0
aW9uLnJiCmluZGV4IDQxMmJmNDU1OGFkODUwMGE2ZTBhNzAwNDI3OTNjMzhjNDI5OGQ0YjIuLjJh
N2FhOTdmY2UyZTVkZWFmM2FhMDA4MjZhMWVlYjM5ZTFkOTg5OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBsYXlzdGF0aW9uLnJi
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXBs
YXlzdGF0aW9uLnJiCkBAIC0yNjAsMjUgKzI2MCwxMCBAQCBkZWYgY2hha3JhUGFzc0ZhaWxFcnJv
ckhhbmRsZXIKICAgIH0KIGVuZAogCi1jbGFzcyBQbGFuCi0gICAgYXR0cl9yZWFkZXIgOmRpcmVj
dG9yeSwgOmFyZ3VtZW50cywgOmZhbWlseSwgOm5hbWUsIDpvdXRwdXRIYW5kbGVyLCA6ZXJyb3JI
YW5kbGVyLCA6YWRkaXRpb25hbEVudgotICAgIGF0dHJfYWNjZXNzb3IgOmluZGV4Ci0KLSAgICBk
ZWYgaW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgZmFtaWx5LCBuYW1lLCBvdXRwdXRI
YW5kbGVyLCBlcnJvckhhbmRsZXIpCi0gICAgICAgIEBkaXJlY3RvcnkgPSBkaXJlY3RvcnkKLSAg
ICAgICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50c1sxLi4tMV0KLSAgICAgICAgQGZhbWlseSA9IGZh
bWlseQotICAgICAgICBAbmFtZSA9IG5hbWUKLSAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRw
dXRIYW5kbGVyCi0gICAgICAgIEBlcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXIKLSAgICAgICAg
QGlzU2xvdyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzppc1Nsb3ddCi0gICAgICAgIEBjcmFzaE9L
ID0gISEkcnVuQ29tbWFuZE9wdGlvbnNbOmNyYXNoT0tdCi0gICAgICAgIGlmIEBjcmFzaE9LCi0g
ICAgICAgICAgICBAb3V0cHV0SGFuZGxlciA9IG5vaXN5T3V0cHV0SGFuZGxlcgotICAgICAgICBl
bmQKLSAgICAgICAgQGFkZGl0aW9uYWxFbnYgPSBbXQorY2xhc3MgUGxhbiA8IEJhc2VQbGFuCisg
ICAgZGVmIGFyZ3VtZW50c01hcHBlcihhcmd1bWVudHMpCisgICAgICAgIGFyZ3VtZW50c1sxLi4t
MV0KICAgICBlbmQKLQogICAgIGRlZiBzaGVsbENvbW1hbmQKICAgICAgICAgbiA9IEBuYW1lLmdz
dWIoLyhcXHxcLykvLCAnXycpCiAgICAgICAgIHNjcmlwdCA9ICJvdXQgPSBuaWxcbiIKQEAgLTM4
NywzNSArMzcyLDUwIEBAIGNsYXNzIFBsYW4KICAgICBlbmQKIGVuZAogCi1kZWYgcHJlcGFyZVBs
YXlTdGF0aW9uVGVzdFJ1bm5lcgotICAgIEZpbGUub3BlbigkcnVubmVyRGlyICsgInJ1bnNjcmlw
dCIsICJ3IikgeworZGVmIHByZXBhcmVQbGF5U3RhdGlvblRlc3RSdW5uZXIocnVubGlzdCwgc2Vy
aWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zKQorICAgIEZpbGUub3BlbihAcnVubmVyRGlyICsgInJ1
bnNjcmlwdCIsICJ3IikgewogICAgICAgICB8IG91dHAgfAotICAgICAgICAkcnVubGlzdC5lYWNo
IHsKKyAgICAgICAgcnVubGlzdC5lYWNoIHsKICAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAg
ICAgICBpZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgIG5l
eHQKKyAgICAgICAgICAgIGVuZAorCiAgICAgICAgICAgICBvdXRwLnB1dHMgIi4uLy5qc29uL3Rl
c3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0uanNvbiIKICAgICAgICAgfQogICAgIH0KIGVuZAogCi1k
ZWYgcHJlcGFyZVNoZWxsVGVzdFJ1bm5lcgotICAgIHByZXBhcmVQbGF5U3RhdGlvblRlc3RSdW5u
ZXIKLWVuZAorY2xhc3MgUGxheXN0YXRpb25UZXN0UnVubmVyIDwgVGVzdFJ1bm5lcgorICAgIGRl
ZiBwcmVwYXJlUnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVt
b3RlSG9zdHMpCisgICAgICAgIEZpbGUub3BlbihAcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3
IikgeworICAgICAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgICAgIHJ1bmxpc3QuZWFjaCB7Cisg
ICAgICAgICAgICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAgICBpZiBjb21wbGV0ZWRQbGFu
cy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAgICAgb3V0cC5wdXRzICIuLi8uanNvbi90ZXN0X3NjcmlwdF8j
e3BsYW4uaW5kZXh9Lmpzb24iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBlbmQKKyAg
ICBkZWYgY29tbWFuZChyZW1vdGVJbmRleD0wKQorICAgICAgICBvcHRpb25zID0gRU5WWyJKU0NU
RVNUX29wdGlvbnMiXQogCi1kZWYgcHJlcGFyZU1ha2VUZXN0UnVubmVyKHJlbW90ZUluZGV4KQot
ICAgIHByZXBhcmVQbGF5U3RhdGlvblRlc3RSdW5uZXIKLWVuZAorICAgICAgICBmc1Jvb3QgPSAk
anNjUGF0aC5kaXJuYW1lCisgICAgICAgIGNvbW1hbmQgPSAiUGxheVN0YXRpb25UZXN0UnVubmVy
ICN7b3B0aW9uc30gLW51bVByb2Nlc3Nlcz0jeyRudW1DaGlsZFByb2Nlc3Nlcy50b19zfSAtZXhl
PSN7JGpzY1BhdGh9IC1mc3Jvb3Q9I3tmc1Jvb3R9IC0tcnVuVW5pcXVlSWQ9I3skcnVuVW5pcXVl
SWR9IEAje0BydW5uZXJEaXJ9L3J1bnNjcmlwdCIKIAotZGVmIHByZXBhcmVSdWJ5VGVzdFJ1bm5l
cgotICAgIHByZXBhcmVQbGF5U3RhdGlvblRlc3RSdW5uZXIKLWVuZAorICAgICAgICBwcmludCBj
b21tYW5kCiAKLWRlZiB0ZXN0UnVubmVyQ29tbWFuZAotICAgIG9wdGlvbnMgPSBFTlZbIkpTQ1RF
U1Rfb3B0aW9ucyJdCisgICAgICAgIHJldHVybiBjb21tYW5kCisgICAgZW5kCitlbmQKIAotICAg
IGZzUm9vdCA9ICRqc2NQYXRoLmRpcm5hbWUKLSAgICBjb21tYW5kID0gIlBsYXlTdGF0aW9uVGVz
dFJ1bm5lciAje29wdGlvbnN9IC1udW1Qcm9jZXNzZXM9I3skbnVtQ2hpbGRQcm9jZXNzZXMudG9f
c30gLWV4ZT0jeyRqc2NQYXRofSAtZnNyb290PSN7ZnNSb290fSAtLXJ1blVuaXF1ZUlkPSN7JHJ1
blVuaXF1ZUlkfSBAI3skcnVubmVyRGlyfS9ydW5zY3JpcHQiCitjbGFzcyBUZXN0UnVubmVyU2hl
bGwgPCBQbGF5c3RhdGlvblRlc3RSdW5uZXIKK2VuZAogCi0gICAgcHJpbnQgY29tbWFuZAorY2xh
c3MgVGVzdFJ1bm5lck1ha2UgPCBQbGF5c3RhdGlvblRlc3RSdW5uZXIKK2VuZAogCi0gICAgcmV0
dXJuIGNvbW1hbmQKK2NsYXNzIFRlc3RSdW5uZXJSdWJ5IDwgUGxheXN0YXRpb25UZXN0UnVubmVy
CiBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRl
c3Qtd3JpdGVyLXJ1YnkucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10
ZXN0LXdyaXRlci1ydWJ5LnJiCmluZGV4IDc4ODgxNmFkMGM5ZjEwYjc2NzU2Yjg3MTY1NmY5NDhh
NmY1YjJiMzYuLjFkN2VhNzUxMWI2MzNmOWU2YWUwOTNjMjJlNjQ1NGE1MDI4Nzk1ODYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qtd3JpdGVyLXJ1
YnkucmIKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0
ZXItcnVieS5yYgpAQCAtMjYwLDI1ICsyNjAsNyBAQCBkZWYgY2hha3JhUGFzc0ZhaWxFcnJvckhh
bmRsZXIKICAgIH0KIGVuZAogCi1jbGFzcyBQbGFuCi0gICAgYXR0cl9yZWFkZXIgOmRpcmVjdG9y
eSwgOmFyZ3VtZW50cywgOmZhbWlseSwgOm5hbWUsIDpvdXRwdXRIYW5kbGVyLCA6ZXJyb3JIYW5k
bGVyLCA6YWRkaXRpb25hbEVudgotICAgIGF0dHJfYWNjZXNzb3IgOmluZGV4Ci0gICAgCi0gICAg
ZGVmIGluaXRpYWxpemUoZGlyZWN0b3J5LCBhcmd1bWVudHMsIGZhbWlseSwgbmFtZSwgb3V0cHV0
SGFuZGxlciwgZXJyb3JIYW5kbGVyKQotICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5Ci0g
ICAgICAgIEBhcmd1bWVudHMgPSBhcmd1bWVudHMKLSAgICAgICAgQGZhbWlseSA9IGZhbWlseQot
ICAgICAgICBAbmFtZSA9IG5hbWUKLSAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRwdXRIYW5k
bGVyCi0gICAgICAgIEBlcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXIKLSAgICAgICAgQGlzU2xv
dyA9ICEhJHJ1bkNvbW1hbmRPcHRpb25zWzppc1Nsb3ddCi0gICAgICAgIEBjcmFzaE9LID0gISEk
cnVuQ29tbWFuZE9wdGlvbnNbOmNyYXNoT0tdCi0gICAgICAgIGlmIEBjcmFzaE9LCi0gICAgICAg
ICAgICBAb3V0cHV0SGFuZGxlciA9IG5vaXN5T3V0cHV0SGFuZGxlcgotICAgICAgICBlbmQKLSAg
ICAgICAgQGFkZGl0aW9uYWxFbnYgPSBbXQotICAgIGVuZAotICAgIAorY2xhc3MgUGxhbiA8IEJh
c2VQbGFuCiAgICAgZGVmIHNoZWxsQ29tbWFuZCAKICAgICAgICAgc2NyaXB0ID0gIm91dCA9IG5p
bFxuIgogICAgICAgICBzY3JpcHQgKz0gImVyciA9IG5pbFxuIgpAQCAtMzk4LDgyICszODAsOTcg
QEAgY2xhc3MgUGxhbgogICAgIGVuZAogZW5kCiAKLWRlZiBwcmVwYXJlU2hlbGxUZXN0UnVubmVy
Ci0gICAgRmlsZS5vcGVuKCRydW5uZXJEaXIgKyAicnVuc2NyaXB0IiwgInciKSB7Ci0gICAgICAg
IHwgb3V0cCB8Ci0gICAgICAgICRydW5saXN0LmVhY2ggewotICAgICAgICAgICAgfCBwbGFuIHwK
LSAgICAgICAgICAgIG91dHAucHV0cyAicnVieSB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9Igor
Y2xhc3MgVGVzdFJ1bm5lclNoZWxsIDwgVGVzdFJ1bm5lcgorICAgIGRlZiBwcmVwYXJlUnVubmVy
KHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMpCisgICAg
ICAgIEZpbGUub3BlbigiI3tAcnVubmVyRGlyICsgInJ1bnNjcmlwdCJ9IiwgInciKSB7IHxmfAor
ICAgICAgICAgICAgcnVubGlzdC5lYWNoIHsgfHBsYW58CisgICAgICAgICAgICAgICAgaWYgY29t
cGxldGVkUGxhbnMuaW5jbHVkZT8ocGxhbikKKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAg
ICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGYucHV0cygicnVieSB0ZXN0X3Njcmlw
dF8je3BsYW4uaW5kZXh9IikKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLSAgICBg
ZG9zMnVuaXggI3skcnVubmVyRGlyICsgInJ1bnNjcmlwdCJ9YCAgICAKKyAgICAgICAgYGRvczJ1
bml4ICN7QHJ1bm5lckRpciArICJydW5zY3JpcHQifWAKKyAgICBlbmQKKyAgICBkZWYgY29tbWFu
ZChyZW1vdGVJbmRleD0wKQorICAgICAgICAic2ggcnVuc2NyaXB0IgorICAgIGVuZAogZW5kCiAK
LWRlZiBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIHByZXJlcXMpCi0gICAgaW5kZXggPSBwbGFu
LmluZGV4Ci0gICAgdGFyZ2V0ID0gInRlc3RfZG9uZV8je2luZGV4fSIKLSAgICBvdXRwLnB1dHMg
IiN7dGFyZ2V0fTogI3twcmVyZXFzLmpvaW4oIiAiKX0iCi0gICAgb3V0cC5wdXRzICJcdHJ1Ynkg
dGVzdF9zY3JpcHRfI3tpbmRleH0iCi0gICAgdGFyZ2V0Ci1lbmQKK2NsYXNzIFRlc3RSdW5uZXJN
YWtlIDwgVGVzdFJ1bm5lcgorICAgIGRlZiBvdXRwdXRfdGFyZ2V0KG91dHAsIHBsYW4sIHByZXJl
cXMpCisgICAgICAgIGluZGV4ID0gcGxhbi5pbmRleAorICAgICAgICB0YXJnZXQgPSAidGVzdF9k
b25lXyN7aW5kZXh9IgorICAgICAgICBvdXRwLnB1dHMgIiN7dGFyZ2V0fTogI3twcmVyZXFzLmpv
aW4oIiAiKX0iCisgICAgICAgIG91dHAucHV0cyAiXHRydWJ5IHRlc3Rfc2NyaXB0XyN7aW5kZXh9
IgorICAgICAgICB0YXJnZXQKKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZVJ1bm5lckZvclJlbW90
ZShydW5saXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUluZGV4KQorICAg
ICAgICBydW5QbGFucyA9IFtdCisgICAgICAgIHNlcmlhbFJ1blBsYW5zID0gW10KKyAgICAgICAg
cnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICBpZiBjb21w
bGV0ZWRQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgaWYgQHJlbW90ZUhvc3RzLm5pbD8gb3IgcGxhbi5pbmRleCAl
IEByZW1vdGVIb3N0cy5sZW5ndGggPT0gcmVtb3RlSW5kZXgKKyAgICAgICAgICAgICAgICBpZiBz
ZXJpYWxQbGFucy5pbmNsdWRlPyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBzZXJpYWxSdW5Q
bGFucyA8PCBwbGFuCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBy
dW5QbGFucyA8PCBwbGFuCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgfQogCi1kZWYgcHJlcGFyZU1ha2VUZXN0UnVubmVyKHJlbW90ZUluZGV4KQotICAgIHNl
cmlhbFBsYW5zID0ge30KLSAgICAkc2VyaWFsUnVubGlzdC5lYWNoIHsgfHB8IHNlcmlhbFBsYW5z
W3BdID0gbmlsIH0KLSAgICBydW5QbGFucyA9IFtdCi0gICAgc2VyaWFsUnVuUGxhbnMgPSBbXQot
ICAgICRydW5saXN0LmVhY2ggewotICAgICAgICB8IHBsYW4gfAotICAgICAgICBpZiAhJHJlbW90
ZSBvciBwbGFuLmluZGV4ICUgJHJlbW90ZUhvc3RzLmxlbmd0aCA9PSByZW1vdGVJbmRleAotICAg
ICAgICAgICAgaWYgc2VyaWFsUGxhbnMuaGFzX2tleT8ocGxhbikKLSAgICAgICAgICAgICAgICBz
ZXJpYWxSdW5QbGFucyA8PCBwbGFuCisgICAgICAgIEZpbGUub3BlbihAcnVubmVyRGlyICsgIk1h
a2VmaWxlLiN7cmVtb3RlSW5kZXh9IiwgInciKSB7CisgICAgICAgICAgICB8IG91dHAgfAorICAg
ICAgICAgICAgaWYgc2VyaWFsUnVuUGxhbnMuZW1wdHk/CisgICAgICAgICAgICAgICAgb3V0cC5w
dXRzKCJhbGw6IHBhcmFsbGVsIikKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
dW5QbGFucyA8PCBwbGFuCisgICAgICAgICAgICAgICAgc2VyaWFsUHJlcmVxID0gInRlc3RfZG9u
ZV8je3NlcmlhbFJ1blBsYW5zWy0xXS5pbmRleH0iCisgICAgICAgICAgICAgICAgb3V0cC5wdXRz
KCJhbGw6ICN7c2VyaWFsUHJlcmVxfSIpCisgICAgICAgICAgICAgICAgcHJldl90YXJnZXQgPSAi
cGFyYWxsZWwiCisgICAgICAgICAgICAgICAgc2VyaWFsUnVuUGxhbnMuZWFjaCB7CisgICAgICAg
ICAgICAgICAgICAgIHwgcGxhbiB8CisgICAgICAgICAgICAgICAgICAgIHByZXZfdGFyZ2V0ID0g
b3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbcHJldl90YXJnZXRdKQorICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGVuZAotICAgICAgICBlbmQKLSAgICB9Ci0KLSAgICBGaWxlLm9wZW4o
JHJ1bm5lckRpciArICJNYWtlZmlsZS4je3JlbW90ZUluZGV4fSIsICJ3IikgewotICAgICAgICB8
IG91dHAgfAotICAgICAgICBpZiBzZXJpYWxSdW5QbGFucy5lbXB0eT8KLSAgICAgICAgICAgIG91
dHAucHV0cygiYWxsOiBwYXJhbGxlbCIpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlcmlh
bFByZXJlcSA9ICJ0ZXN0X2RvbmVfI3tzZXJpYWxSdW5QbGFuc1stMV0uaW5kZXh9IgotICAgICAg
ICAgICAgb3V0cC5wdXRzKCJhbGw6ICN7c2VyaWFsUHJlcmVxfSIpCi0gICAgICAgICAgICBwcmV2
X3RhcmdldCA9ICJwYXJhbGxlbCIKLSAgICAgICAgICAgIHNlcmlhbFJ1blBsYW5zLmVhY2ggewor
ICAgICAgICAgICAgcGFyYWxsZWxUYXJnZXRzID0gcnVuUGxhbnMuY29sbGVjdCB7CiAgICAgICAg
ICAgICAgICAgfCBwbGFuIHwKLSAgICAgICAgICAgICAgICBwcmV2X3RhcmdldCA9IG91dHB1dF90
YXJnZXQob3V0cCwgcGxhbiwgW3ByZXZfdGFyZ2V0XSkKKyAgICAgICAgICAgICAgICBvdXRwdXRf
dGFyZ2V0KG91dHAsIHBsYW4sIFtdKQogICAgICAgICAgICAgfQotICAgICAgICBlbmQKLSAgICAg
ICAgcGFyYWxsZWxUYXJnZXRzID0gcnVuUGxhbnMuY29sbGVjdCB7Ci0gICAgICAgICAgICB8IHBs
YW4gfAotICAgICAgICAgICAgb3V0cHV0X3RhcmdldChvdXRwLCBwbGFuLCBbXSkKKyAgICAgICAg
ICAgIG91dHAucHV0cygicGFyYWxsZWw6ICIgKyBwYXJhbGxlbFRhcmdldHMuam9pbigiICIpKQog
ICAgICAgICB9Ci0gICAgICAgIG91dHAucHV0cygicGFyYWxsZWw6ICIgKyBwYXJhbGxlbFRhcmdl
dHMuam9pbigiICIpKQotICAgIH0KKyAgICBlbmQKKyAgICBkZWYgcHJlcGFyZVJ1bm5lcihydW5s
aXN0LCBzZXJpYWxQbGFucywgY29tcGxldGVkUGxhbnMsIHJlbW90ZUhvc3RzKQorICAgICAgICBp
ZiByZW1vdGVIb3N0cy5uaWw/CisgICAgICAgICAgICBwcmVwYXJlUnVubmVyRm9yUmVtb3RlKHJ1
bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgMCkKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcmVtb3RlSG9zdHMuZWFjaF9pbmRleCB7CisgICAgICAgICAgICAgICAgfHJlbW90
ZUluZGV4fAorICAgICAgICAgICAgICAgIHByZXBhcmVSdW5uZXJGb3JSZW1vdGUocnVubGlzdCwg
c2VyaWFsUGxhbnMsIGNvbXBsZXRlZFBsYW5zLCByZW1vdGVJbmRleCkKKyAgICAgICAgICAgIH0K
KyAgICAgICAgZW5kCisgICAgZW5kCisgICAgZGVmIGNvbW1hbmQocmVtb3RlSW5kZXg9MCkKKyAg
ICAgICAgIm1ha2UgLWogI3skbnVtQ2hpbGRQcm9jZXNzZXN9IC1zIC1mIE1ha2VmaWxlLiN7cmVt
b3RlSW5kZXh9IgorICAgIGVuZAogZW5kCiAKLWRlZiBwcmVwYXJlUnVieVRlc3RSdW5uZXIKLSAg
ICBGaWxlLm9wZW4oJHJ1bm5lckRpciArICJydW5zY3JpcHQiLCAidyIpIHsKLSAgICAgICAgfCBv
dXRwIHwKLSAgICAgICAgJHJ1bmxpc3QuZWFjaCB7Ci0gICAgICAgICAgICB8IHBsYW4gfAotICAg
ICAgICAgICAgb3V0cC5wdXRzICJzeXN0ZW0gXCJydWJ5IHRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRl
eH1cIiIKK2NsYXNzIFRlc3RSdW5uZXJSdWJ5IDwgVGVzdFJ1bm5lcgorICAgIGRlZiBwcmVwYXJl
UnVubmVyKHJ1bmxpc3QsIHNlcmlhbFBsYW5zLCBjb21wbGV0ZWRQbGFucywgcmVtb3RlSG9zdHMp
CisgICAgICAgIEZpbGUub3BlbihAcnVubmVyRGlyICsgInJ1bnNjcmlwdCIsICJ3IikgeworICAg
ICAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgICAgIHJ1bmxpc3QuZWFjaCB7CisgICAgICAgICAg
ICAgICAgfCBwbGFuIHwKKyAgICAgICAgICAgICAgICBpZiBjb21wbGV0ZWRQbGFucy5pbmNsdWRl
PyhwbGFuKQorICAgICAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICAgICAgb3V0cC5wdXRzICJzeXN0ZW0gXCJydWJ5IHRlc3Rfc2NyaXB0XyN7cGxh
bi5pbmRleH1cIiIKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLWVuZAotCi1kZWYg
dGVzdFJ1bm5lckNvbW1hbmQocmVtb3RlSW5kZXg9MCkKLSAgICBjYXNlICR0ZXN0UnVubmVyVHlw
ZQotICAgIHdoZW4gOnNoZWxsCi0gICAgICAgIGNvbW1hbmQgPSAic2ggcnVuc2NyaXB0IgotICAg
IHdoZW4gOm1ha2UKLSAgICAgICAgY29tbWFuZCA9ICJtYWtlIC1qICN7JG51bUNoaWxkUHJvY2Vz
c2VzfSAtcyAtZiBNYWtlZmlsZS4je3JlbW90ZUluZGV4fSIKLSAgICB3aGVuIDpydWJ5Ci0gICAg
ICAgIGNvbW1hbmQgPSAicnVieSBydW5zY3JpcHQiCi0gICAgZWxzZQotICAgICAgICByYWlzZSAi
VW5rbm93biB0ZXN0IHJ1bm5lciB0eXBlOiAjeyR0ZXN0UnVubmVyVHlwZS50b19zfSIKICAgICBl
bmQKLSAgICByZXR1cm4gY29tbWFuZAorICAgIGRlZiBjb21tYW5kKHJlbW90ZUluZGV4PTApCisg
ICAgICAgICJydWJ5IHJ1bnNjcmlwdCIKKyAgICBlbmQKIGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC9leGVjdXRvci5yYiBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvZXhlY3V0b3IucmIKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDE3MWY2MGUwYTMyNzdjMWM4M2I0MzNlODRkMzU5M2Y4NGExNzlhZgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3QvZXhlY3V0b3IucmIK
QEAgLTAsMCArMSw0MjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgSW1wbGVtZW50cyB0aGUgbWFpbiBsb29w
IGZvciBleGVjdXRpbmcgdGhlIHRlc3RzIGFuZCBoYW5kbGluZworIyBtaXNzaW5nL211bHRpcGxl
IHJlc3VsdHMgKGJlY2F1c2Ugb2YgaW5mcmFzdHJ1Y3R1cmUgaXNzdWVzKS4gSXQgYWxzbworIyB0
YWtlcyBjYXJlIG9mIG1hcmtpbmcgZmFpbGluZyB0ZXN0cyBhcyBmbGFreSB3aGVuCisjIC0tdHJl
YXQtZmFpbGluZy1hcy1mbGFreSBpcyBpbiBlZmZlY3QuIEl0J3MgYSBjbGFzcyBzbyB0aGF0IHdl
IGNhbgorIyBlYXNpbHkgaW5zdGFudGlhdGUgYSBzdWJjbGFzcyBmb3IgdGVzdGluZy4KK2NsYXNz
IEJhc2VUZXN0c0V4ZWN1dG9yCisgICAgZGVmIGluaXRpYWxpemUocnVubGlzdCwgc2VyaWFsUGxh
bnMsIHJlbW90ZUhvc3RzLCBpdGVyYXRpb25MaW1pdHMsCisgICAgICAgICAgICAgICAgICAgdHJl
YXRGYWlsaW5nQXNGbGFreSwgbG9nU3RyZWFtPSRzdGRlcnIpCisgICAgICAgIEBydW5saXN0ID0g
cnVubGlzdAorICAgICAgICBAc2VyaWFsUGxhbnMgPSBzZXJpYWxQbGFucworICAgICAgICBAcmVt
b3RlSG9zdHMgPSByZW1vdGVIb3N0cworICAgICAgICBAdHJlYXRGYWlsaW5nQXNGbGFreSA9IHRy
ZWF0RmFpbGluZ0FzRmxha3kKKyAgICAgICAgQGluZnJhSXRlcmF0aW9uc0Zsb29yID0gaXRlcmF0
aW9uTGltaXRzLmluZnJhSXRlcmF0aW9uc0Zsb29yCisgICAgICAgIEBpdGVyYXRpb25zQ2VpbGlu
ZyA9IGl0ZXJhdGlvbkxpbWl0cy5pdGVyYXRpb25zQ2VpbGluZworICAgICAgICBpZiBAaXRlcmF0
aW9uc0NlaWxpbmcgPCBAaW5mcmFJdGVyYXRpb25zRmxvb3IKKyAgICAgICAgICAgIHJhaXNlICJp
dGVyYXRpb25zQ2VpbGluZyAoI3tAaXRlcmF0aW9uc0NlaWxpbmd9IDwgQGluZnJhSXRlcmF0aW9u
c0Zsb29yICgje0BpbmZyYUl0ZXJhdGlvbnNGbG9vcn0iCisgICAgICAgIGVuZAorICAgICAgICBA
bWF4SXRlcmF0aW9ucyA9IHNldE1heEl0ZXJhdGlvbnMoaW5pdGlhbE1heEFsbG93ZWRJdGVyYXRp
b25zKHJ1bmxpc3QpKQorICAgICAgICBAbG9nU3RyZWFtID0gbG9nU3RyZWFtCisgICAgZW5kCisg
ICAgZGVmIGxvZyhzKQorICAgICAgICBAbG9nU3RyZWFtLnB1dHMocykgdW5sZXNzIEBsb2dTdHJl
YW0ubmlsPworICAgIGVuZAorICAgIGRlZiBzZXRNYXhJdGVyYXRpb25zKHZhbHVlKQorICAgICAg
ICBpZiB2YWx1ZSA+IEBpdGVyYXRpb25zQ2VpbGluZworICAgICAgICAgICAgdmFsdWUgPSBAaXRl
cmF0aW9uc0NlaWxpbmcKKyAgICAgICAgZW5kCisgICAgICAgIEBtYXhJdGVyYXRpb25zID0gdmFs
dWUKKyAgICBlbmQKKyAgICBkZWYgaXRlcmF0aW9uc0ZvckluZnJhRmFpbHVyZXMKKyAgICAgICAg
IyBJZiB3ZSdyZSBydW5uaW5nIHJlbW90ZWx5LCBzY2FsZSB0aGUgZXh0cmEgaXRlcmF0aW9ucyB0
bworICAgICAgICAjIGFjY291bnQgZm9yIGluZnJhc3RydWN0dXJlIGZhaWx1cmVzIGJ5IHRoZSBu
dW1iZXIgb2YgaG9zdHMuCisgICAgICAgIG51bVJlbW90ZUhvc3RzID0gMAorICAgICAgICBpZiBu
b3QgQHJlbW90ZUhvc3RzLm5pbD8KKyAgICAgICAgICAgIG51bVJlbW90ZUhvc3RzID0gQHJlbW90
ZUhvc3RzLnNpemUgLyAyCisgICAgICAgIGVuZAorICAgICAgICBbbnVtUmVtb3RlSG9zdHMsIEBp
bmZyYUl0ZXJhdGlvbnNGbG9vcl0ubWF4CisgICAgZW5kCisgICAgZGVmIGluaXRpYWxNYXhBbGxv
d2VkSXRlcmF0aW9ucyhydW5saXN0KQorICAgICAgICBtYXhUcmllcyA9IDAKKyAgICAgICAgcnVu
bGlzdC5lYWNoIHsgfHBsYW58CisgICAgICAgICAgICBuZXh0IGlmIHBsYW4ucmV0cnlQYXJhbWV0
ZXJzLm5pbD8KKyAgICAgICAgICAgIGlmIHBsYW4ucmV0cnlQYXJhbWV0ZXJzLm1heFRyaWVzID4g
bWF4VHJpZXMKKyAgICAgICAgICAgICAgICBtYXhUcmllcyA9IHBsYW4ucmV0cnlQYXJhbWV0ZXJz
Lm1heFRyaWVzCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICAjIFRoZSBudW1i
ZXIgb2YgYWxsb3dlZCBpdGVyYXRpb25zIGlzIHRoZSBzdW0gb2YKKyAgICAgICAgIyBpdGVyYXRp
b25zRm9ySW5mcmFGYWlsdXJlcyBhbmQgdGhlIG1heCB0aW1lcyB3ZSBydW4gYSB0ZXN0CisgICAg
ICAgICMgdGhhdCBhcHBlYXJzIHRvIGJlIGZsYWt5LgorICAgICAgICBpdGVyYXRpb25zRm9ySW5m
cmFGYWlsdXJlcyArIG1heFRyaWVzCisgICAgZW5kCisgICAgZGVmIGFkanVzdEZsYWtpbmVzc0Zv
ckZhaWxpbmdUZXN0cyhpdGVyYXRpb24sIHN0YXR1c01hcCwgZXZhbHVhdG9yKQorICAgICAgICBj
b21wbGV0ZWRUZXN0cyA9IGV2YWx1YXRvci5jb21wbGV0ZWQKKyAgICAgICAgaWYgQHRyZWF0RmFp
bGluZ0FzRmxha3kubmlsPworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZFRlc3RzCisgICAg
ICAgIGVuZAorCisgICAgICAgICMgSWYgd2UgaGF2ZSBhIGxvdCBvZiBmYWlsaW5nIHRlc3RzLCBp
dCdzIGxpa2VseSB0aGF0IHRoZSB0cmVlCisgICAgICAgICMgaXMgYmFkIGFuZCB0aGVyZSdzIG5v
IHBvaW50IGluIHRyZWF0aW5nIHRoZSBmYWlsdXJlcyBhcworICAgICAgICAjIHBvdGVudGlhbCBm
bGFreSB0ZXN0cy4KKyAgICAgICAgaWYgZXZhbHVhdG9yLnRlc3RzRmFpbGVkLnNpemUgPiBAdHJl
YXRGYWlsaW5nQXNGbGFreS5tYXhGYWlsaW5nCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGVk
VGVzdHMKKyAgICAgICAgZW5kCisgICAgICAgIGFkanVzdGVkVGVzdHMgPSBTZXQubmV3CisgICAg
ICAgIGV2YWx1YXRvci50ZXN0c0ZhaWxlZC5lYWNoIHsgfHBsYW58CisgICAgICAgICAgICBpZiBw
bGFuLnJldHJ5UGFyYW1ldGVycy5uaWw/CisgICAgICAgICAgICAgICAgcGxhbi5yZXRyeVBhcmFt
ZXRlcnMgPSBSZXRyeVBhcmFtZXRlcnMubmV3KEB0cmVhdEZhaWxpbmdBc0ZsYWt5LnBhc3NQZXJj
ZW50YWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBAdHJlYXRGYWlsaW5nQXNGbGFreS5tYXhUcmllcykKKyAgICAgICAgICAgICAg
ICBhZGp1c3RlZFRlc3RzLmFkZChwbGFuKQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAg
ICAgICAgaWYgYWRqdXN0ZWRUZXN0cy5zaXplID4gMAorICAgICAgICAgICAgIyBBZGp1c3QgdGhl
IG1heGltdW0gbnVtYmVyIG9mIHRyaWVzIHVwd2FyZHMgaWYgd2UganVzdAorICAgICAgICAgICAg
IyBtYXJrZWQgYSBmYWlsaW5nIHRlc3QgYXMgZmxha3kuIE5vdGUgdGhhdCBpbmZyYXN0cnVjdHVy
ZQorICAgICAgICAgICAgIyBpc3N1ZXMgbWlnaHQgY2F1c2UgdGVzdCBmYWlsdXJlcyB0byBiZSBy
ZXBvcnRlZCBhdCBsYXRlcgorICAgICAgICAgICAgIyBpdGVyYXRpb25zLCBzbyB3ZSB1c2UgKCsp
IGluc3RlYWQgb2YgKG1heCkuIFRoaXMgaXMgc2FmZQorICAgICAgICAgICAgIyBhcyB0aGUgbnVt
YmVyIG9mIGl0ZXJhdGlvbnMgaXMgY2FwcGVkIGJ5CisgICAgICAgICAgICAjIGl0ZXJhdGlvbnND
ZWlsaW5nLgorICAgICAgICAgICAgbmV3TWF4SXRlcmF0aW9ucyA9IEBtYXhJdGVyYXRpb25zICsg
QHRyZWF0RmFpbGluZ0FzRmxha3kubWF4VHJpZXMKKyAgICAgICAgICAgIGlmIEBtYXhJdGVyYXRp
b25zIDwgbmV3TWF4SXRlcmF0aW9ucworICAgICAgICAgICAgICAgIHNldE1heEl0ZXJhdGlvbnMo
bmV3TWF4SXRlcmF0aW9ucykKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgcHV0ZCgiYWRq
dXN0Rmxha2luZXNzRm9yRmFpbGluZ1Rlc3RzICN7bmV3TWF4SXRlcmF0aW9uc30gKC0+I3tAbWF4
SXRlcmF0aW9uc30pICN7YWRqdXN0ZWRUZXN0cy5jb2xsZWN0IHsgfHB8IHAudG9fcyB9fSIpCisg
ICAgICAgIGVuZAorICAgICAgICAjIFdlIGp1c3QgbWFya2VkIHRob3NlIGFzIGZsYWt5IGluIG9y
ZGVyIHRvIHJlcnVuIHRoZW4sIHNvCisgICAgICAgICMgdGFrZSB0aGVtIG9mZiB0aGUgY29tcGxl
dGVkVGVzdHMuCisgICAgICAgIHJldCA9IGNvbXBsZXRlZFRlc3RzIC0gYWRqdXN0ZWRUZXN0cwor
ICAgICAgICBwdXRkKCJjb21wbGV0ZWRUZXN0czogI3tyZXQuY29sbGVjdCB7IHxwfCBwLnRvX3Mg
fX0iKQorICAgICAgICByZXQKKyAgICBlbmQKKyAgICBkZWYgbG9vcAorICAgICAgICBwcmVwYXJl
QXJ0aWZhY3RzKEByZW1vdGVIb3N0cykKKyAgICAgICAgc3RhdHVzTWFwID0ge30KKyAgICAgICAg
IyBUaGlzIGlzIGEgaGlnaC1sZXZlbCByZXRyeSBsb29wLiBJZiBhIHJlbW90ZSBob3N0IGdvZXMg
YXdheSBpbgorICAgICAgICAjIHRoZSBtaWRkbGUgb2YgYSBydW4gYW5kIGVpdGhlciBkb2Vzbid0
IGNvbWUgYmFjayBvbmxpbmUgb3IgY29tZXMKKyAgICAgICAgIyBiYWNrIGhhdmluZyByZW1vdmVk
IHRoZSByZW1vdGUgZGlyZWN0b3J5ICgqKSwgZ2V0U3RhdHVzTWFwIHdpbGwgYmUKKyAgICAgICAg
IyBtaXNzaW5nIHJlc3VsdHMgZm9yIHRoZXNlIHRlc3RzLCBhbGxvd2luZyB1cyB0byByZXRyeSB0
aGVtIGluCisgICAgICAgICMgdGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAjCisgICAgICAg
ICMgKCopIFRoaXMgbWF5IHdlbGwgaGFwcGVuIHdoZW4gcnVubmluZyB0aGUgdGVzdHMgb24gZW1i
ZWRkZWQKKyAgICAgICAgIyBib2FyZHMgdGhhdCByZWd1bGFybHkgY29ycnVwdCB0aGVpciBTRCBj
YXJkLiBEZWZpbml0ZWx5IGFuIGlzc3VlCisgICAgICAgICMgZm9yIHRoZSBjaTIwIGJvYXJkcyB1
c2VkIHRvIHRlc3QgTUlQUy4KKyAgICAgICAgMTAwMDAwLnRpbWVzIHsgfGl0ZXJhdGlvbnwKKyAg
ICAgICAgICAgIGlmIGl0ZXJhdGlvbiA+PSBAbWF4SXRlcmF0aW9ucworICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICMgQHJlbW90ZUhvc3RzIChhbmQg
dGhlcmVmb3JlIHJlbW90ZUhvc3RzKSB3aWxsIGJlIG5pbAorICAgICAgICAgICAgIyB3aGVuIG5v
dCBleGVjdXRpbmcgb24gcmVtb3Rlcy4KKyAgICAgICAgICAgIHJlbW90ZUhvc3RzID0gcHJlcGFy
ZUV4ZWN1dGlvbihAcmVtb3RlSG9zdHMpCisgICAgICAgICAgICBpZiByZW1vdGVIb3N0cyBhbmQg
cmVtb3RlSG9zdHMuc2l6ZSA9PSAwCisgICAgICAgICAgICAgICAgIyBFaXRoZXIgZXZlcnl0aGlu
ZyBpcyBkb3duLCBvciBldmVyeXRoaW5nIGdvdAorICAgICAgICAgICAgICAgICMgcmVib290ZWQu
IEluIHRoZSBsYXR0ZXIgY2FzZSwgYWxsb3cgZW5vdWdoIHRpbWUgZm9yCisgICAgICAgICAgICAg
ICAgIyB0aGUgcmVtb3RlIGJvYXJkcyB0byBib290IHVwLCB0aGVuIHJldHJ5LgorICAgICAgICAg
ICAgICAgIHdhaXRJbnRlcnZhbCA9IDYwCisgICAgICAgICAgICAgICAgbG9nKCJBbGwgcmVtb3Rl
IGhvc3RzIGZhaWxlZCwgcmV0cnlpbmcgYWZ0ZXIgI3t3YWl0SW50ZXJ2YWx9cyIpCisgICAgICAg
ICAgICAgICAgc2xlZXAod2FpdEludGVydmFsKQorICAgICAgICAgICAgICAgIG5leHQKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgZXhlY3V0ZVRlc3RzKHJlbW90ZUhvc3RzKQorICAgICAg
ICAgICAgc3RhdHVzTWFwID0gdXBkYXRlU3RhdHVzTWFwKGl0ZXJhdGlvbiwgc3RhdHVzTWFwKQor
ICAgICAgICAgICAgZXZhbHVhdG9yID0gVGVzdFJlc3VsdEV2YWx1YXRvclNpbXBsZS5uZXcoQHJ1
bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgICAgIGV2YWx1YXRvci52aXNpdCEKKworICAgICAg
ICAgICAgY29tcGxldGVkVGVzdHMgPSBhZGp1c3RGbGFraW5lc3NGb3JGYWlsaW5nVGVzdHMoaXRl
cmF0aW9uLCBzdGF0dXNNYXAsIGV2YWx1YXRvcikKKyAgICAgICAgICAgICMgTkI6IGV2YWx1YXRv
ci5jb21wbGV0ZWQgbWF5IG5vdyBiZSBvdXQgb2YgZGF0ZSwgd2UgbmVlZAorICAgICAgICAgICAg
IyB0byB1c2UgY29tcGxldGVkVGVzdHMgaW5zdGVhZC4KKworICAgICAgICAgICAgYnJlYWsgdW5s
ZXNzIGNvbXBsZXRlZFRlc3RzLnNpemUgIT0gQHJ1bmxpc3Quc2l6ZQorICAgICAgICAgICAgaWYg
Y29tcGxldGVkVGVzdHMuc2l6ZSA+IEBydW5saXN0LnNpemUKKyAgICAgICAgICAgICAgICByYWlz
ZSAiVGVzdCBjb3VudCBtaXNtYXRjaDogI3tjb21wbGV0ZWRUZXN0cy5zaXplfSA+ICN7QHJ1bmxp
c3Quc2l6ZX0iCisgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgIyBSZWdlbmVyYXRlIHRo
ZSBsaXN0cyBvZiB0ZXN0cyB0byBydW4KKyAgICAgICAgICAgIHJlZnJlc2hFeGVjdXRpb24oQHJ1
bmxpc3QsIEBzZXJpYWxQbGFucywgY29tcGxldGVkVGVzdHMpCisKKyAgICAgICAgICAgIG51bUZs
YWt5ID0gQHJ1bmxpc3Quc2l6ZSAtIGNvbXBsZXRlZFRlc3RzLnNpemUgLSBldmFsdWF0b3IubWlz
c2luZy5zaXplCisgICAgICAgICAgICB0ZXN0c0luZm8gPSAiY29tcGxldGVkICN7Y29tcGxldGVk
VGVzdHMuc2l6ZX0vI3tAcnVubGlzdC5zaXplfSAoI3tudW1GbGFreX0gZmxha3ksICN7ZXZhbHVh
dG9yLm1pc3Npbmcuc2l6ZX0gbWlzc2luZykiCisgICAgICAgICAgICByZW1vdGVIb3N0c0luZm8g
PSAiIgorICAgICAgICAgICAgaWYgcmVtb3RlSG9zdHMKKyAgICAgICAgICAgICAgICByZW1vdGVI
b3N0c0luZm8gPSAiLCAje3JlbW90ZUhvc3RzLnNpemV9LyN7QHJlbW90ZUhvc3RzLnNpemV9IGhv
c3RzIGxpdmUiCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGxvZygiQWZ0ZXIgdHJ5ICN7
aXRlcmF0aW9uICsgMX0vI3tAbWF4SXRlcmF0aW9uc306ICN7dGVzdHNJbmZvfSN7cmVtb3RlSG9z
dHNJbmZvfSIpCisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzTWFwCisgICAgZW5kCitlbmQKKwor
bW9kdWxlIEV4ZWN1dG9yU2VsZlRlc3RzCisgICAgRmluYWxUZXN0UmVzdWx0ID0gU3RydWN0Lm5l
dyg6cmVzdWx0KQorICAgIFRlc3RSZXN1bHQgPSBTdHJ1Y3QubmV3KDpyZXN1bHRzKQorICAgIEl0
ZXJhdGlvbiA9IFN0cnVjdC5uZXcoOnRlc3RSZXN1bHRzKQorICAgIFRlc3RDYXNlID0gU3RydWN0
Lm5ldyg6dGVzdHNXaXRoRmxha3ksIDppdGVyYXRpb25zLCA6ZXhwZWN0ZWRUZXN0UmVzdWx0cywg
OnRyZWF0RmFpbGluZ0FzRmxha3kpCisgICAgTU9DS19URVNUX0ZBTUlMWSA9ICJmIgorICAgIElU
RVJBVElPTl9MSU1JVFMgPSBPcGVuU3RydWN0Lm5ldyg6aW5mcmFJdGVyYXRpb25zRmxvb3IgPT4g
MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOml0ZXJhdGlvbnNDZWls
aW5nID0+IDgpCisgICAgY2xhc3MgTW9ja1Rlc3RzRXhlY3V0b3IgPCBCYXNlVGVzdHNFeGVjdXRv
cgorICAgICAgICBhdHRyX3JlYWRlciA6ZXhlY3V0ZWRJdGVyYXRpb25zCisgICAgICAgIGRlZiBp
bml0aWFsaXplKHJ1bmxpc3QsIGl0ZXJhdGlvblJlc3VsdHMsIG1heEl0ZXJhdGlvbnNCb3VuZHMs
IHRyZWF0RmFpbGluZ0FzRmxha3ksIGxvZ1N0cmVhbSkKKyAgICAgICAgICAgIHN1cGVyKHJ1bmxp
c3QsIFtdLCBuaWwsIG1heEl0ZXJhdGlvbnNCb3VuZHMsIHRyZWF0RmFpbGluZ0FzRmxha3ksIGxv
Z1N0cmVhbSkKKyAgICAgICAgICAgIEBpdGVyYXRpb25SZXN1bHRzID0gaXRlcmF0aW9uUmVzdWx0
cworICAgICAgICAgICAgQGV4ZWN1dGVkSXRlcmF0aW9ucyA9IDAKKyAgICAgICAgZW5kCisgICAg
ICAgIGRlZiBwcmVwYXJlQXJ0aWZhY3RzKHJlbW90ZUhvc3RzKQorICAgICAgICBlbmQKKyAgICAg
ICAgZGVmIHByZXBhcmVFeGVjdXRpb24ocmVtb3RlSG9zdHMpCisgICAgICAgICAgICByZW1vdGVI
b3N0cworICAgICAgICBlbmQKKyAgICAgICAgZGVmIGV4ZWN1dGVUZXN0cyhyZW1vdGVIb3N0cykK
KyAgICAgICAgZW5kCisgICAgICAgIGRlZiB1cGRhdGVTdGF0dXNNYXAoaXRlcmF0aW9uLCBzdGF0
dXNNYXApCisgICAgICAgICAgICBpZiBpdGVyYXRpb24gPj0gQGl0ZXJhdGlvblJlc3VsdHMuc2l6
ZQorICAgICAgICAgICAgICAgICRzdGRlcnIucHV0cygiVHJ5aW5nIHRvIGV4ZWN1dGUgaXRlcmF0
aW9uICN7aXRlcmF0aW9ufSBidXQgb25seSBoYXZlICN7QGl0ZXJhdGlvblJlc3VsdHMuc2l6ZX0g
aXRlcmF0aW9uIHJlc3VsdHMgYXZhaWxhYmxlIikKKyAgICAgICAgICAgICAgICByYWlzZSAiU2Vs
ZiB0ZXN0IGVycm9yOiBpbnN1ZmZpY2llbnQgaXRlcmF0aW9ucyIKKyAgICAgICAgICAgIGVuZAor
ICAgICAgICAgICAgQGV4ZWN1dGVkSXRlcmF0aW9ucyArPSAxCisgICAgICAgICAgICBAaXRlcmF0
aW9uUmVzdWx0c1tpdGVyYXRpb25dLmVhY2ggeyB8aXRlcmF0aW9ufAorICAgICAgICAgICAgICAg
IGl0ZXJhdGlvbi5lYWNoX3dpdGhfaW5kZXggeyB8dGVzdFJlc3VsdCwgdGVzdEluZGV4fAorICAg
ICAgICAgICAgICAgICAgICBpbmRleCA9IEBydW5saXN0W3Rlc3RJbmRleF0uaW5kZXgKKyAgICAg
ICAgICAgICAgICAgICAgIyBCZWNhdXNlIG9mIGluZnJhIGlzc3VlcywgYSB0ZXN0IG1pZ2h0IGhh
dmUgbXVsdGlwbGUgcmVzdWx0cy4KKyAgICAgICAgICAgICAgICAgICAgdGVzdFJlc3VsdC5yZXN1
bHRzLmVhY2ggeyB8cmVzdWx0fAorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9ICIuLyN7
U1RBVFVTX0ZJTEVfUFJFRklYfSN7aW5kZXh9ICN7JHJ1blVuaXF1ZUlkfSAwICN7cmVzdWx0fSIK
KyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NTdGF0dXNMaW5lKHN0YXR1c01hcCwgbGlu
ZSkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHB1dGQoInN0YXR1c01hcDogI3tzdGF0dXNNYXB9IikKKyAgICAgICAg
ICAgIHN0YXR1c01hcAorICAgICAgICBlbmQKKyAgICAgICAgZGVmIHJlZnJlc2hFeGVjdXRpb24o
cnVubGlzdCwgc2VyaWFsUGxhbnMsIGNvbXBsZXRlZFRlc3RzKQorICAgICAgICBlbmQKKyAgICBl
bmQKKworICAgIGRlZiBFeGVjdXRvclNlbGZUZXN0cy5ydW4KKyAgICAgICAgdHJmID0gVGVzdFJl
c3VsdC5uZXcoW1NUQVRVU19GSUxFX0ZBSUxdKQorICAgICAgICB0cnAgPSBUZXN0UmVzdWx0Lm5l
dyhbU1RBVFVTX0ZJTEVfUEFTU10pCisgICAgICAgIHRyZSA9IFRlc3RSZXN1bHQubmV3KFtdKQor
ICAgICAgICBmdHJwID0gRmluYWxUZXN0UmVzdWx0Lm5ldyhTVEFUVVNfRklMRV9QQVNTKQorICAg
ICAgICBmdHJmID0gRmluYWxUZXN0UmVzdWx0Lm5ldyhTVEFUVVNfRklMRV9GQUlMKQorICAgICAg
ICBmdHJlID0gRmluYWxUZXN0UmVzdWx0Lm5ldyhuaWwpCisgICAgICAgIFsKKyAgICAgICAgICAg
IFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLCAjIDIgdGVzdHMgKHQwLCB0MSksIG5laXRoZXIgZmxh
a3kKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEl0ZXJhdGlvbi5uZXcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJwLCAjIHQwIHBhc3NlZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRycCwgIyB0MSBwYXNzZWQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRycF0pLAorICAgICAgICAgICAg
VGVzdENhc2UubmV3KFtuaWwsIG5pbF0sICMgMiB0ZXN0cyAodDAsIHQxKSwgbmVpdGhlciBmbGFr
eQorICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJmXSksCisgICAgICAgICAgICAj
IDEgdGVzdCBnaXZlcyBubyByZXN1bHQsIG5lZWQgYSBzZWNvbmQgaXRlcmF0aW9uLCBib3RoIGZp
bmFsbHkgcGFzcworICAgICAgICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cnAsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmUsIHRycF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW2Z0cnAsIGZ0cnBdKSwKKyAgICAgICAgICAgICMgMSB0ZXN0IGZh
aWxzLCAxIGdpdmVzIG5vIHJlc3VsdCwgbmVlZCBhIHNlY29uZCBpdGVyYXRpb24sIG9uZSBmaW5h
bGx5IHBhc3NlcworICAgICAgICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmYsIHRyZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmUsIHRycF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW2Z0cmYsIGZ0cnBdKSwKKyAgICAgICAgICAgICMgMSB0ZXN0IHBh
c3NlcywgMSBnaXZlcyBubyByZXN1bHQsIG5lZWQgYSBzZWNvbmQgaXRlcmF0aW9uLCBvbmUgZmlu
YWxseSBwYXNzZXMKKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWxdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0
aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0
aW9uLm5ldyhbdHJlLCB0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJmXSksCisgICAgICAgICAgICBUZXN0Q2FzZS5u
ZXcoW25pbCwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMgRmlyc3QgaXRlcmF0aW9uIGRvZXNuJ3QgcHJvZHVjZSBhbnkgcmVz
dWx0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0
cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmLCB0
cmVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0
cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFtmdHJmLCBmdHJmXSksCisgICAgICAgICAgICAjIFRlc3QgdGhhdCwgd2hlbiBubyBmbGFr
aWVzIGFyZSBwcmVzZW50LCB3ZSBzdG9wIGF0CisgICAgICAgICAgICAjIGluZnJhSXRlcmF0aW9u
c0Zsb29yIHdoZW4gbm8gcmVzdWx0cyBjb21lIGluLgorICAgICAgICAgICAgVGVzdENhc2UubmV3
KFtuaWwsIG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW0l0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSldICogSVRFUkFUSU9OX0xJTUlUUy5pbmZyYUl0ZXJhdGlvbnNGbG9vciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBbZnRyZSwgZnRyZV0pLAorICAgICAgICAgICAgIyBUZXN0IHRo
ZSBtYXhJdGVyYXRpb25zIGFkanVzdG1lbnQgd29ya3MgYXMgZXhwZWN0ZWQgaW4KKyAgICAgICAg
ICAgICMgdGhlIHByZXNlbmNlIG9mIGEgc3RhdGljIGZsYWt5LgorICAgICAgICAgICAgVGVzdENh
c2UubmV3KFtSZXRyeVBhcmFtZXRlcnMubmV3KDAuMzksIDQpLCBuaWxdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSB3ZSBo
YXZlIGEgZmxha3kgdGVzdCwgdGhlIG1heEl0ZXJhdGlvbnMgZ2V0cyBhZGp1c3RlZCB0bworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIElURVJBVElPTl9MSU1JVFMuaW5mcmFJdGVyYXRp
b25zRmxvb3IgICsgUmV0cnlQYXJhbWV0ZXJzLm1heFRyaWVzID0gNy4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cnBdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJmLCB0cmVdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlLCB0cmVdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJwLCB0cmVdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJwLCBmdHJwXSksCisg
ICAgICAgICAgICAjIFRlc3QgdGhhdCBhIGZsYWt5IGNhbiBmaW5pc2ggZWFybHkuCisgICAgICAg
ICAgICBUZXN0Q2FzZS5uZXcoW1JldHJ5UGFyYW1ldGVycy5uZXcoMC40LCA0KSwgbmlsXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0
ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRycF0pLAorICAgICAgICAgICAgIyBTYW1l
LCB3aXRoIG1vcmUgdmFyaWFiaWxpdHkuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbCwg
bmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRycCwgZnRycF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQZXJjZW50YWdlID0+IDAuNCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gNiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiAzKSks
CisgICAgICAgICAgICAjIFNhbWUsIHdpdGggZGlmZmVyZW50IHZhcmlhYmlsaXR5LgorICAgICAg
ICAgICAgVGVzdENhc2UubmV3KFtuaWwsIG5pbF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cnAsIHRyZV0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRycF0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRycF0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmUsIHRyZl0p
LAorICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
W2Z0cnAsIGZ0cmZdLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5TdHJ1Y3QubmV3KDpw
YXNzUGVyY2VudGFnZSA9PiAwLjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOm1heFRyaWVzID0+IDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOm1heEZhaWxpbmcgPT4gMykpLAorICAgICAgICAgICAgIyBUZXN0IHRoYXQgYSBmbGFr
eSBmb3Igd2hpY2ggbm90IGVub3VnaCByZXN1bHRzIGNvbWUgaW4gaXMgbm90IG1hcmtlZCBhcyBj
b21wbGV0ZWQuCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW25pbF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3
KFt0cmZdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJw
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZl0pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmVdKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0aW9uLm5ldyhbdHJlXSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZV0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJdGVyYXRpb24ubmV3KFt0cmVdKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtmdHJlXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBPcGVuU3RydWN0Lm5ldyg6cGFzc1BlcmNlbnRhZ2UgPT4gMC40OSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4VHJpZXMgPT4gNCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4RmFpbGluZyA9PiAxKSksCisg
ICAgICAgICAgICAjIFRlc3QgdGhhdCAoc3RhdGljYWxseSkgZmxha3kgdGVzdHMgYXJlbid0IGFk
anVzdGVkCisgICAgICAgICAgICBUZXN0Q2FzZS5uZXcoW1JldHJ5UGFyYW1ldGVycy5uZXcoMC41
LCAzKSwgbmlsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZiwgdHJwXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RycCwgdHJlXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3RyZiwgdHJlXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZnRyZiwgZnRycF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQZXJjZW50YWdlID0+IDAu
NywgIyA+IDIvMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhU
cmllcyA9PiA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhG
YWlsaW5nID0+IDMpKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0IHdlIHJlc3BlY3QgbWF4RmFp
bGluZy4KKyAgICAgICAgICAgIFRlc3RDYXNlLm5ldyhbbmlsLCBuaWwsIG5pbF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRp
b24ubmV3KFt0cmYsIHRyZiwgdHJmXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbZnRyZiwgZnRyZiwgZnRyZl0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgT3BlblN0cnVjdC5uZXcoOnBhc3NQZXJjZW50YWdlID0+IDAuNywgIyA+IDIv
MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhUcmllcyA9PiA2
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptYXhGYWlsaW5nID0+
IDIpKSwKKyAgICAgICAgICAgICMgVGVzdCB0aGF0IHdlIGhhbHQgYXQgbWF4SXRlcmF0aW9ucyAo
MyArIDUgPSA4KSBpZiBubyByZXN1bHRzIGNvbWUgaW4uCisgICAgICAgICAgICBUZXN0Q2FzZS5u
ZXcoW1JldHJ5UGFyYW1ldGVycy5uZXcoMC41LCA1KSwgbmlsXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJwXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbi5uZXcoW3Ry
ZSwgdHJlXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBbZnRyZSwgZnRycF0pLAorICAgICAgICBdLmVhY2hfd2l0aF9pbmRleCB7CisgICAg
ICAgICAgICB8dGVzdGNhc2UsIHRlc3RjYXNlSW5kZXh8CisgICAgICAgICAgICBydW5saXN0ID0g
W10KKyAgICAgICAgICAgIHB1dGQoIj09PT4gVGVzdGNhc2UgI3t0ZXN0Y2FzZUluZGV4fSIpCisg
ICAgICAgICAgICB0ZXN0Y2FzZS50ZXN0c1dpdGhGbGFreS5lYWNoX3dpdGhfaW5kZXggeyB8cmV0
cnlQYXJhbWV0ZXJzLCBpbmRleHwKKyAgICAgICAgICAgICAgICBwbGFuID0gQmFzZVBsYW4ubW9j
ayhNT0NLX1RFU1RfRkFNSUxZLCAidCN7aW5kZXh9IiwgcmV0cnlQYXJhbWV0ZXJzKQorICAgICAg
ICAgICAgICAgIHJ1bmxpc3QgPDwgcGxhbgorICAgICAgICAgICAgfQorICAgICAgICAgICAgcHV0
ZCgicnVubGlzdDogI3tydW5saXN0LmNvbGxlY3QgeyB8cHwgcC50b19zIH19LCBleHBlY3RlZDog
I3t0ZXN0Y2FzZS5leHBlY3RlZFRlc3RSZXN1bHRzfSIpCisgICAgICAgICAgICBleGVjdXRvciA9
IE1vY2tUZXN0c0V4ZWN1dG9yLm5ldyhydW5saXN0LCB0ZXN0Y2FzZS5pdGVyYXRpb25zLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVRFUkFUSU9OX0xJTUlU
UywgdGVzdGNhc2UudHJlYXRGYWlsaW5nQXNGbGFreSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICR0ZXN0c0RlYnVnU3RyZWFtKQorICAgICAgICAgICAgc3Rh
dHVzTWFwID0gZXhlY3V0b3IubG9vcAorICAgICAgICAgICAgaWYgZXhlY3V0b3IuZXhlY3V0ZWRJ
dGVyYXRpb25zICE9IHRlc3RjYXNlLml0ZXJhdGlvbnMuc2l6ZQorICAgICAgICAgICAgICAgICMg
VGhlIHRlc3RjYXNlIHNob3VsZCBwcm92aWRlIGV4YWN0bHkgYXMgbWFueQorICAgICAgICAgICAg
ICAgICMgaXRlcmF0aW9uIHJlc3VsdHMgYXMgbmVlZGVkLgorICAgICAgICAgICAgICAgIHJhaXNl
ICJFeGVjdXRlZCAje2V4ZWN1dG9yLmV4ZWN1dGVkSXRlcmF0aW9uc30sICN7dGVzdGNhc2UuaXRl
cmF0aW9ucy5zaXplfSBnaXZlbiIKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZXhwZWN0
Q29tcGxldGVkID0gU2V0Lm5ldyhydW5saXN0LnNlbGVjdCB7IHxwbGFufAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IHRlc3RjYXNlLmV4cGVjdGVkVGVzdFJl
c3VsdHNbcnVubGlzdC5pbmRleChwbGFuKV0ucmVzdWx0Lm5pbD8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSkKKworICAgICAgICAgICAgZXZhbHVhdG9yID0gVGVzdFJl
c3VsdEV2YWx1YXRvclNpbXBsZS5uZXcocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICAgICAg
ZXZhbHVhdG9yLnZpc2l0IQorCisgICAgICAgICAgICB2ZXJpZnlDb21wbGV0ZWRUZXN0c01hdGNo
RXhwZWN0ZWQoc3RhdHVzTWFwLCBldmFsdWF0b3IuY29tcGxldGVkLCBleHBlY3RDb21wbGV0ZWQp
CisKKyAgICAgICAgICAgIHRlc3RjYXNlRmFpbGVkID0gZmFsc2UKKyAgICAgICAgICAgIHJ1bmxp
c3QuZWFjaF93aXRoX2luZGV4IHsgfHBsYW4sIGluZGV4fAorICAgICAgICAgICAgICAgIGNhc2Ug
dGVzdGNhc2UuZXhwZWN0ZWRUZXN0UmVzdWx0c1tpbmRleF0ucmVzdWx0CisgICAgICAgICAgICAg
ICAgd2hlbiBuaWwKKyAgICAgICAgICAgICAgICAgICAgaWYgZXZhbHVhdG9yLnRlc3RzUGFzc2Vk
LmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9
IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICRzdGRlcnIucHV0cygiVGVzdCAje2luZGV4
fSBzaG91bGQgbm90IGhhdmUgY29tcGxldGVkIGJ1dCBwYXNzZWQiKQorICAgICAgICAgICAgICAg
ICAgICBlbHNpZiBldmFsdWF0b3IudGVzdHNGYWlsZWQuaW5jbHVkZT8ocGxhbikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RjYXNlRmFpbGVkID0gdHJ1ZQorICAgICAgICAgICAgICAgICAg
ICAgICAgJHN0ZGVyci5wdXRzKCJUZXN0ICN7aW5kZXh9IHNob3VsZCBub3QgaGF2ZSBjb21wbGV0
ZWQgYnV0IGZhaWxlZCIpCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAg
IHdoZW4gU1RBVFVTX0ZJTEVfUEFTUworICAgICAgICAgICAgICAgICAgICBpZiBub3QgZXZhbHVh
dG9yLnRlc3RzUGFzc2VkLmluY2x1ZGU/KHBsYW4pCisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0Y2FzZUZhaWxlZCA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICRzdGRlcnIucHV0
cygiVGVzdCAje2luZGV4fSBzaG91bGQgaGF2ZSBwYXNzZWQgYnV0IGRpZG4ndCIpCisgICAgICAg
ICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIHdoZW4gU1RBVFVTX0ZJTEVfRkFJTAor
ICAgICAgICAgICAgICAgICAgICBpZiBub3QgZXZhbHVhdG9yLnRlc3RzRmFpbGVkLmluY2x1ZGU/
KHBsYW4pCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZUZhaWxlZCA9IHRydWUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICRzdGRlcnIucHV0cygiVGVzdCAje2luZGV4fSBzaG91bGQg
aGF2ZSBmYWlsZWQgYnV0IGRpZG4ndCIpCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgIkNhbid0IGdldCBoZXJl
IgorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgdGVz
dGNhc2VGYWlsZWQKKyAgICAgICAgICAgICAgICAkc3RkZXJyLnB1dHMoInN0YXR1c01hcCA9ICN7
c3RhdHVzTWFwfSIpCisgICAgICAgICAgICAgICAgcmFpc2UgIlNlbGYgdGVzdCBmYWlsdXJlIgor
ICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICBlbmQKK2VuZApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFsdWF0
b3IucmIgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0L3Rlc3QtcmVz
dWx0LWV2YWx1YXRvci5yYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODQzYmQ2OWQxNDM0ZTQ0MDQ4NTA2MDZkMDMw
MjBhN2FhMzk5ZjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5
L2pzYy1zdHJlc3MtdGVzdC90ZXN0LXJlc3VsdC1ldmFsdWF0b3IucmIKQEAgLTAsMCArMSwyOTMg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyMgVmlzaXRzIHRoZSB0ZXN0cyBpbiB0aGUgcnVubGlzdCBhbmQgaW52
b2tlcyBhIG51bWJlciBvZgorIyBjYWxsYmFja3MuIFVzZWQgdmlhIHN1YmNsYXNzaW5nLgorY2xh
c3MgVGVzdFJlc3VsdEV2YWx1YXRvcgorICAgIGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHN0YXR1
c01hcCkKKyAgICAgICAgQHJ1bmxpc3QgPSBydW5saXN0CisgICAgICAgIEBzdGF0dXNNYXAgPSBz
dGF0dXNNYXAKKyAgICBlbmQKKyAgICBkZWYgbm9SZXN1bHQocGxhbikKKyAgICAgICAgIyBYWFg6
IG1heWJlIGZvY3VzIG9uIGluY29tcGxldGUgaW4gcmVwb3J0aW5nPworICAgIGVuZAorICAgIGRl
ZiBwYXNzZWQocGxhbikKKyAgICBlbmQKKyAgICBkZWYgZmFpbGVkKHBsYW4pCisgICAgZW5kCisg
ICAgZGVmIHdhc0ZsYWt5QW5kUGFzc2VkKHBsYW4sIHN1Y2Nlc3NlcywgdHJpZXMpCisgICAgZW5k
CisgICAgZGVmIHZpc2l0aW5nKHBsYW4pCisgICAgZW5kCisgICAgZGVmIHZpc2l0IQorICAgICAg
ICBAcnVubGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHxwbGFufAorICAgICAgICAgICAgdmlzaXRp
bmcocGxhbikKKyAgICAgICAgICAgIGlmIG5vdCBAc3RhdHVzTWFwLmhhc19rZXk/KHBsYW4uaW5k
ZXgpCisgICAgICAgICAgICAgICAgbm9SZXN1bHQocGxhbikKKyAgICAgICAgICAgICAgICBuZXh0
CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIHN0YXR1c2VzID0gQHN0YXR1c01hcFtwbGFu
LmluZGV4XQorICAgICAgICAgICAgdGVzdFdhc1N1Y2Nlc3NmdWwgPSBuaWwKKyAgICAgICAgICAg
IGlmIHBsYW4ucmV0cnlQYXJhbWV0ZXJzLm5pbD8KKyAgICAgICAgICAgICAgICAjIElmIGFueSBv
ZiB0aGUgcmVzdWx0cyB3ZSBnb3Qgd2FzIGEgcGFzcywgY29uc2lkZXIgdGhlCisgICAgICAgICAg
ICAgICAgIyB0ZXN0IHN1Y2Nlc3NmdWwuIFRoZSBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCwgdW5s
ZXNzIGEKKyAgICAgICAgICAgICAgICAjIHRlc3QgaXMgbWFya2VkIGFzIGZsYWt5LCBmYWlsdXJl
cyBhcmUgYmVjYXVzZSBvZgorICAgICAgICAgICAgICAgICMgaW5mcmFzdHJ1Y3R1cmUgaXNzdWVz
ICh3aGljaCBpcyB3aHkgdGhlIHRlc3Qgd2FzIHJ1bgorICAgICAgICAgICAgICAgICMgbXVsdGlw
bGUgdGltZXMgaW4gdGhlIGZpcnN0IHBsYWNlKS4KKyAgICAgICAgICAgICAgICB0ZXN0V2FzU3Vj
Y2Vzc2Z1bCA9IHN0YXR1c2VzLmluY2x1ZGU/KFNUQVRVU19GSUxFX1BBU1MpCisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFdhc1N1Y2Nlc3NmdWwgPSBwbGFuLnJldHJ5UGFy
YW1ldGVycy5yZXN1bHQoc3RhdHVzZXMpCisgICAgICAgICAgICAgICAgaWYgdGVzdFdhc1N1Y2Nl
c3NmdWwubmlsPworICAgICAgICAgICAgICAgICAgICAjIE5vdCBjb21wbGV0ZWQgeWV0CisgICAg
ICAgICAgICAgICAgICAgIG5leHQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgaWYgdGVzdFdhc1N1Y2Nlc3NmdWwKKyAgICAgICAgICAgICAgICBwYXNz
ZWQocGxhbikKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmYWlsZWQocGxhbikK
KyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgbnJlc3VsdHMgPSBzdGF0dXNlcy51bmlxLnNp
emUKKyAgICAgICAgICAgIGlmIG5yZXN1bHRzIDwgMQorICAgICAgICAgICAgICAgICRzdGRlcnIu
cHV0cygiVW5leHBlY3RlZCBudW1iZXIgb2YgcmVzdWx0czogI3tucmVzdWx0c30gZm9yIHBsYW4g
I3twbGFufSIpCisgICAgICAgICAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgbnVtYmVyIG9mIHJl
c3VsdHMiCisgICAgICAgICAgICBlbHNpZiBucmVzdWx0cyAhPSAxIGFuZCB0ZXN0V2FzU3VjY2Vz
c2Z1bAorICAgICAgICAgICAgICAgIHdhc0ZsYWt5QW5kUGFzc2VkKHBsYW4sIHN0YXR1c2VzLmNv
dW50KFNUQVRVU19GSUxFX1BBU1MpLCBzdGF0dXNlcy5zaXplKQorICAgICAgICAgICAgZW5kCisg
ICAgICAgIH0KKyAgICBlbmQKK2VuZAorCisjIFNpbXBsZSBiZWFuIGNvdW50aW5nIGNsYXNzIHdp
dGggbm8gc2lkZS1lZmZlY3RzLgorY2xhc3MgVGVzdFJlc3VsdEV2YWx1YXRvclNpbXBsZSA8IFRl
c3RSZXN1bHRFdmFsdWF0b3IKKyAgICBhdHRyX3JlYWRlciA6dGVzdHNQYXNzZWQsIDp0ZXN0c0Zh
aWxlZAorICAgIGRlZiBpbml0aWFsaXplKHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgc3Vw
ZXIocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBAdGVzdHNQYXNzZWQgPSBTZXQubmV3Cisg
ICAgICAgIEB0ZXN0c0ZhaWxlZCA9IFNldC5uZXcKKyAgICAgICAgQG5vUmVzdWx0ID0gU2V0Lm5l
dworICAgICAgICBAYWxsID0gU2V0Lm5ldworICAgIGVuZAorICAgIGRlZiB2aXNpdGluZyhwbGFu
KQorICAgICAgICBAYWxsLmFkZChwbGFuKQorICAgIGVuZAorICAgIGRlZiBwYXNzZWQocGxhbikK
KyAgICAgICAgQHRlc3RzUGFzc2VkLmFkZChwbGFuKQorICAgIGVuZAorICAgIGRlZiBmYWlsZWQo
cGxhbikKKyAgICAgICAgQHRlc3RzRmFpbGVkLmFkZChwbGFuKQorICAgIGVuZAorICAgIGRlZiBu
b1Jlc3VsdChwbGFuKQorICAgICAgICBAbm9SZXN1bHQuYWRkKHBsYW4pCisgICAgZW5kCisgICAg
ZGVmIGNvbXBsZXRlZAorICAgICAgICBAdGVzdHNQYXNzZWQgfCBAdGVzdHNGYWlsZWQKKyAgICBl
bmQKKyAgICBkZWYgbWlzc2luZworICAgICAgICBAbm9SZXN1bHQKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBSZXN1bHRzV3JpdGVyCisgICAgZGVmIGluaXRpYWxpemUKKyAgICAgICAgQGZpbGVzID0g
e30KKyAgICBlbmQKKyAgICBkZWYgYXBwZW5kKGZpbGVuYW1lLCBzKQorICAgICAgICBpZiBub3Qg
QGZpbGVzLmhhc19rZXk/KGZpbGVuYW1lKQorICAgICAgICAgICAgQGZpbGVzW2ZpbGVuYW1lXSA9
IEZpbGUub3Blbigkb3V0cHV0RGlyICsgZmlsZW5hbWUsICJhIikKKyAgICAgICAgZW5kCisgICAg
ICAgIEBmaWxlc1tmaWxlbmFtZV0ucHV0cyhzKQorICAgIGVuZAorICAgIGRlZiBhcHBlbmRGYWls
dXJlKHBsYW4pCisgICAgICAgIGFwcGVuZCgiZmFpbGVkIiwgcGxhbi5uYW1lKQorICAgIGVuZAor
ICAgIGRlZiBhcHBlbmRQYXNzKHBsYW4pCisgICAgICAgIGFwcGVuZCgicGFzc2VkIiwgcGxhbi5u
YW1lKQorICAgIGVuZAorICAgIGRlZiBhcHBlbmROb1Jlc3VsdChwbGFuKQorICAgICAgICBhcHBl
bmQoIm5vcmVzdWx0IiwgcGxhbi5uYW1lKQorICAgIGVuZAorICAgIGRlZiBhcHBlbmRGbGFreShw
bGFuLCBzdWNjZXNzZXMsIHRyaWVzKQorICAgICAgICBhcHBlbmQoImZsYWt5IiwgIiN7cGxhbi5u
YW1lfSAje3N1Y2Nlc3Nlc30gI3t0cmllc30iKQorICAgIGVuZAorICAgIGRlZiBhcHBlbmRSZXN1
bHQocGxhbiwgZGlkUGFzcykKKyAgICAgICAgYXBwZW5kKCJyZXN1bHRzIiwgIiN7cGxhbi5uYW1l
fTogI3tkaWRQYXNzID8gJ1BBU1MnIDogJ0ZBSUwnfSIpCisgICAgZW5kCisgICAgZGVmIGNsb3Nl
CisgICAgICAgIEBmaWxlcy5lYWNoX3ZhbHVlIHsgfGZ8CisgICAgICAgICAgICBmLmNsb3NlCisg
ICAgICAgIH0KKyAgICAgICAgQGZpbGVzLmNsZWFyCisgICAgZW5kCitlbmQKKworIyBGaW5hbCBh
Y2NvdW50aW5nIG9mIHJlc3VsdHMuCitjbGFzcyBUZXN0UmVzdWx0RXZhbHVhdG9yRmluYWwgPCBU
ZXN0UmVzdWx0RXZhbHVhdG9yCisgICAgYXR0cl9yZWFkZXIgOm5vcmVzdWx0LCA6ZmFtaWx5TWFw
CisgICAgZGVmIGluaXRpYWxpemUocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBzdXBlcihy
dW5saXN0LCBzdGF0dXNNYXApCisgICAgICAgIEBub3Jlc3VsdCA9IDAKKyAgICAgICAgQGZhbWls
eU1hcCA9IHt9CisgICAgICAgIEB3cml0ZXIgPSBSZXN1bHRzV3JpdGVyLm5ldworICAgIGVuZAor
ICAgIGRlZiBub1Jlc3VsdChwbGFuKQorICAgICAgICBAd3JpdGVyLmFwcGVuZE5vUmVzdWx0KHBs
YW4pCisgICAgICAgIEBub3Jlc3VsdCArPSAxCisgICAgZW5kCisgICAgZGVmIHBhc3NlZChwbGFu
KQorICAgICAgICBAd3JpdGVyLmFwcGVuZFBhc3MocGxhbikKKyAgICAgICAgYXBwZW5kUmVzdWx0
KHBsYW4sIHRydWUpCisgICAgICAgIGFkZFRvRmFtaWx5TWFwKHBsYW4sICJQQVNTIikKKyAgICBl
bmQKKyAgICBkZWYgZmFpbGVkKHBsYW4pCisgICAgICAgIEB3cml0ZXIuYXBwZW5kRmFpbHVyZShw
bGFuKQorICAgICAgICBhcHBlbmRSZXN1bHQocGxhbiwgZmFsc2UpCisgICAgICAgIGFkZFRvRmFt
aWx5TWFwKHBsYW4sICJGQUlMIikKKyAgICBlbmQKKyAgICBkZWYgd2FzRmxha3lBbmRQYXNzZWQo
cGxhbiwgc3VjY2Vzc2VzLCB0cmllcykKKyAgICAgICAgQHdyaXRlci5hcHBlbmRGbGFreShwbGFu
LCBzdWNjZXNzZXMsIHRyaWVzKQorICAgIGVuZAorICAgIHByaXZhdGUKKyAgICBkZWYgYXBwZW5k
UmVzdWx0KHBsYW4sIHN1Y2Nlc3NmdWwpCisgICAgICAgIEB3cml0ZXIuYXBwZW5kUmVzdWx0KHBs
YW4sIHN1Y2Nlc3NmdWwpCisgICAgZW5kCisgICAgZGVmIGFkZFRvRmFtaWx5TWFwKHBsYW4sIHJl
c3VsdCkKKyAgICAgICAgdW5sZXNzIGZhbWlseU1hcFtwbGFuLmZhbWlseV0KKyAgICAgICAgICAg
IGZhbWlseU1hcFtwbGFuLmZhbWlseV0gPSBbXQorICAgICAgICBlbmQKKyAgICAgICAgZmFtaWx5
TWFwW3BsYW4uZmFtaWx5XSA8PCB7IDpyZXN1bHQgPT4gcmVzdWx0LCA6cGxhbiA9PiBwbGFufQor
ICAgIGVuZAorZW5kCisKK2RlZiB2ZXJpZnlDb21wbGV0ZWRUZXN0c01hdGNoRXhwZWN0ZWQoc3Rh
dHVzTWFwLCBjb21wbGV0ZWQsIGV4cGVjdGVkKQorICAgIGlmIGNvbXBsZXRlZCAhPSBleHBlY3Rl
ZAorICAgICAgICB1bmV4cGVjdGVkbHlDb21wbGV0ZWQgPSAoY29tcGxldGVkIC0gZXhwZWN0ZWQp
LmNvbGxlY3QgeyB8cGxhbnwKKyAgICAgICAgICAgICIjI3twbGFuLmluZGV4fTogI3tzdGF0dXNN
YXBbcGxhbi5pbmRleF19IgorICAgICAgICB9LmpvaW4oIiB8ICIpCisgICAgICAgICRzdGRlcnIu
cHV0cygiVW5leHBlY3RlZGx5IGNvbXBsZXRlZDogI3t1bmV4cGVjdGVkbHlDb21wbGV0ZWR9IikK
KyAgICAgICAgZXhwZWN0ZWRCdXROb3RDb21wbGV0ZWQgPSAoZXhwZWN0ZWQgLSBjb21wbGV0ZWQp
LmNvbGxlY3QgeyB8cGxhbnwKKyAgICAgICAgICAgICIjI3twbGFuLmluZGV4fTogI3tzdGF0dXNN
YXBbcGxhbi5pbmRleF19IgorICAgICAgICB9LmpvaW4oIiB8ICIpCisgICAgICAgICRzdGRlcnIu
cHV0cygiRXhwZWN0ZWQgYnV0IG5vdCBjb21wbGV0ZWQ6ICN7ZXhwZWN0ZWRCdXROb3RDb21wbGV0
ZWR9IikKKyAgICAgICAgcmFpc2UgIm1pc21hdGNoIgorICAgIGVuZAorZW5kCisKK21vZHVsZSBU
ZXN0UmVzdWx0RXZhbHVhdG9yU2VsZlRlc3RzCisgICAgZGVmIFRlc3RSZXN1bHRFdmFsdWF0b3JT
ZWxmVGVzdHMuc2VsZlRlc3RUZXN0UmVzdWx0RXZhbHVhdG9yCisgICAgICAgIHJ1bmxpc3QgPSBb
XQorICAgICAgICBzdGF0dXNNYXAgPSB7fQorICAgICAgICBleHBlY3RlZFBhc3MgPSBTZXQubmV3
CisgICAgICAgIGV4cGVjdGVkRmFpbCA9IFNldC5uZXcKKyAgICAgICAgdGMgPSBTdHJ1Y3QubmV3
KDpzdGF0dXNlcywgOmV4cGVjdGVkUGFzcykKKyAgICAgICAgWworICAgICAgICAgICAgdGMubmV3
KFtTVEFUVVNfRklMRV9QQVNTXSwgdHJ1ZSksCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19G
SUxFX1BBU1NdLCB0cnVlKSwKKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJTEVfUEFTUywg
U1RBVFVTX0ZJTEVfUEFTU10sIHRydWUpLAorICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklM
RV9QQVNTLCBTVEFUVVNfRklMRV9GQUlMXSwgdHJ1ZSksCisgICAgICAgICAgICB0Yy5uZXcoW1NU
QVRVU19GSUxFX0ZBSUxdLCBmYWxzZSksCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxF
X0ZBSUwsIFNUQVRVU19GSUxFX0ZBSUxdLCBmYWxzZSksCisgICAgICAgIF0uZWFjaF93aXRoX2lu
ZGV4IHsKKyAgICAgICAgICAgIHx0ZXN0LCB0ZXN0SW5kZXh8CisgICAgICAgICAgICBwbGFuID0g
QmFzZVBsYW4ubW9jaygiZiIsICJ0I3t0ZXN0SW5kZXh9IikKKyAgICAgICAgICAgIHJ1bmxpc3Qg
PDwgcGxhbgorICAgICAgICAgICAgc3RhdHVzTWFwW3BsYW4uaW5kZXhdID0gdGVzdC5zdGF0dXNl
cworICAgICAgICAgICAgaWYgdGVzdC5leHBlY3RlZFBhc3MKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBhc3MuYWRkKHBsYW4pCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRGYWlsLmFkZChwbGFuKQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAg
ZXZhbHVhdG9yID0gVGVzdFJlc3VsdEV2YWx1YXRvclNpbXBsZS5uZXcocnVubGlzdCwgc3RhdHVz
TWFwKQorICAgICAgICBldmFsdWF0b3IudmlzaXQhCisKKyAgICAgICAgaWYgZXhwZWN0ZWRQYXNz
ICE9IGV2YWx1YXRvci50ZXN0c1Bhc3NlZAorICAgICAgICAgICAgJHN0ZGVyci5wdXRzKCJleHBl
Y3RlZFBhc3M6ICN7ZXhwZWN0ZWRQYXNzfSIpCisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoIlBh
c3NlZDogI3tldmFsdWF0b3IudGVzdHNQYXNzZWR9IikKKyAgICAgICAgICAgIHJhaXNlICJleHBl
Y3RlZFBhc3MgbWlzbWF0Y2giCisgICAgICAgIGVuZAorICAgICAgICBpZiBleHBlY3RlZEZhaWwg
IT0gZXZhbHVhdG9yLnRlc3RzRmFpbGVkCisgICAgICAgICAgICAkc3RkZXJyLnB1dHMoImV4cGVj
dGVkRmFpbDogI3tleHBlY3RlZEZhaWx9IikKKyAgICAgICAgICAgICRzdGRlcnIucHV0cygiRmFp
bGVkOiAje2V2YWx1YXRvci50ZXN0c0ZhaWxlZH0iKQorICAgICAgICAgICAgcmFpc2UgImV4cGVj
dGVkRmFpbCBtaXNtYXRjaCIKKyAgICAgICAgZW5kCisgICAgZW5kCisKKyAgICBkZWYgZ2V0Q29t
cGxldGVkVGVzdHNGcm9tU3RhdHVzTWFwKHJ1bmxpc3QsIHN0YXR1c01hcCkKKyAgICAgICAgZXZh
bHVhdG9yID0gVGVzdFJlc3VsdEV2YWx1YXRvclNpbXBsZS5uZXcocnVubGlzdCwgc3RhdHVzTWFw
KQorICAgICAgICBldmFsdWF0b3IudmlzaXQhCisgICAgICAgIGV2YWx1YXRvci5jb21wbGV0ZWQK
KyAgICBlbmQKKworICAgIGRlZiBUZXN0UmVzdWx0RXZhbHVhdG9yU2VsZlRlc3RzLnNlbGZUZXN0
R2V0Q29tcGxldGVkVGVzdHNGcm9tU3RhdHVzTWFwCisgICAgICAgIHJ1bmxpc3QgPSBbXQorICAg
ICAgICBleHBlY3RDb21wbGV0ZWQgPSBTZXQubmV3CisgICAgICAgIHN0YXR1c01hcCA9IHt9Cisg
ICAgICAgIHRjID0gU3RydWN0Lm5ldyg6c3RhdHVzZXMsIDpyZXRyeVBhcmFtZXRlcnMsIDpzaG91
bGRDb3VudEFzQ29tcGxldGVkKQorICAgICAgICBbCisgICAgICAgICAgICAjIE5vIHJlc3VsdHMg
PT4gbm90IGNvbXBsZXRlZAorICAgICAgICAgICAgdGMubmV3KG5pbCwgbmlsLCBmYWxzZSksCisg
ICAgICAgICAgICB0Yy5uZXcobmlsLCBSZXRyeVBhcmFtZXRlcnMubmV3KDAuNiwgMiksIGZhbHNl
KSwKKworICAgICAgICAgICAgIyBQYXNzZWQvZmFpbGVkIGFuZCBub3QgZmxha3kgLT4gY29tcGxl
dGVkCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCBuaWwsIHRydWUpLAor
ICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMXSwgbmlsLCB0cnVlKSwKKworICAg
ICAgICAgICAgIyBJZiBpdCBoYXMgbXVsdGlwbGUgcmVzdWx0cyBhbmQgaXMgbm90IGEgZmxha3ks
IHRoYXQgbWVhbnMgaXQKKyAgICAgICAgICAgICMgd2FzIHJlLXJ1biBiZWNhdXNlIG9mIGluZnJh
c3RydWN0dXJlIGlzc3Vlcy4gQ291bnRzIGFzCisgICAgICAgICAgICAjIGNvbXBsZXRlZCByZWdh
cmRsZXNzIG9mIHRoZSBhY3R1YWwgcmVzdWx0cy4KKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVT
X0ZJTEVfUEFTUywgU1RBVFVTX0ZJTEVfUEFTU10sIG5pbCwgdHJ1ZSksCisgICAgICAgICAgICB0
Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX0ZBSUxdLCBuaWwsIHRydWUpLAor
ICAgICAgICAgICAgdGMubmV3KFtTVEFUVVNfRklMRV9GQUlMLCBTVEFUVVNfRklMRV9GQUlMXSwg
bmlsLCB0cnVlKSwKKworICAgICAgICAgICAgIyBOb3QgY29tcGxldGVkOiB3ZSBoYXZlIG9uZSBy
dW4gcmVtYWluaW5nIGFuZCB0aGlzIGNvdWxkIGZsaXAKKyAgICAgICAgICAgICMgdGhlIHBlcmNl
bnRhZ2UuCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1NdLCBSZXRyeVBhcmFt
ZXRlcnMubmV3KDAuNiwgMiksIGZhbHNlKSwKKyAgICAgICAgICAgIHRjLm5ldyhbU1RBVFVTX0ZJ
TEVfRkFJTF0sIFJldHJ5UGFyYW1ldGVycy5uZXcoMC40LCAyKSwgZmFsc2UpLAorCisgICAgICAg
ICAgICAjIEV2ZW4gaWYgdGhlIGxhc3Qgb25lIGZhaWxzIHdlJ3JlIHN0aWxsIGdvbm5hIGJlIGFi
b3ZlCisgICAgICAgICAgICAjIChyZXNwZWN0aXZlbHkgYmVsb3cpIHRoZSBwYXNzIHBlcmNlbnRh
Z2UuCisgICAgICAgICAgICB0Yy5uZXcoW1NUQVRVU19GSUxFX1BBU1MsIFNUQVRVU19GSUxFX1BB
U1NdLCBSZXRyeVBhcmFtZXRlcnMubmV3KDAuNSwgMyksIHRydWUpLAorICAgICAgICAgICAgdGMu
bmV3KFtTVEFUVVNfRklMRV9GQUlMLCBTVEFUVVNfRklMRV9GQUlMXSwgUmV0cnlQYXJhbWV0ZXJz
Lm5ldygwLjUsIDMpLCB0cnVlKSwKKyAgICAgICAgXS5lYWNoX3dpdGhfaW5kZXggeworICAgICAg
ICAgICAgfHRlc3QsIHRlc3RJbmRleHwKKyAgICAgICAgICAgIHBsYW4gPSBCYXNlUGxhbi5tb2Nr
KCJmIiwgInQje3Rlc3RJbmRleH0iLCB0ZXN0LnJldHJ5UGFyYW1ldGVycykKKyAgICAgICAgICAg
IHJ1bmxpc3QgPDwgcGxhbgorICAgICAgICAgICAgaWYgbm90IHRlc3Quc3RhdHVzZXMubmlsPwor
ICAgICAgICAgICAgICAgIHN0YXR1c01hcFtwbGFuLmluZGV4XSA9IHRlc3Quc3RhdHVzZXMKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgaWYgdGVzdC5zaG91bGRDb3VudEFzQ29tcGxldGVk
CisgICAgICAgICAgICAgICAgZXhwZWN0Q29tcGxldGVkLmFkZChwbGFuKQorICAgICAgICAgICAg
ZW5kCisgICAgICAgIH0KKyAgICAgICAgZXZhbHVhdG9yID0gVGVzdFJlc3VsdEV2YWx1YXRvclNp
bXBsZS5uZXcocnVubGlzdCwgc3RhdHVzTWFwKQorICAgICAgICBldmFsdWF0b3IudmlzaXQhCisK
KyAgICAgICAgdmVyaWZ5Q29tcGxldGVkVGVzdHNNYXRjaEV4cGVjdGVkKHN0YXR1c01hcCwgZXZh
bHVhdG9yLmNvbXBsZXRlZCwgZXhwZWN0Q29tcGxldGVkKQorICAgIGVuZAorICAgIGRlZiBUZXN0
UmVzdWx0RXZhbHVhdG9yU2VsZlRlc3RzLnJ1bgorICAgICAgICBUZXN0UmVzdWx0RXZhbHVhdG9y
U2VsZlRlc3RzLnNlbGZUZXN0VGVzdFJlc3VsdEV2YWx1YXRvcgorICAgICAgICBUZXN0UmVzdWx0
RXZhbHVhdG9yU2VsZlRlc3RzLnNlbGZUZXN0R2V0Q29tcGxldGVkVGVzdHNGcm9tU3RhdHVzTWFw
CisgICAgZW5kCitlbmQK
</data>

          </attachment>
      

    </bug>

</bugzilla>