<?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>59736</bug_id>
          
          <creation_ts>2011-04-28 14:07:34 -0700</creation_ts>
          <short_desc>Use a hierarchical data structure to store results JSON</short_desc>
          <delta_ts>2011-04-28 16:14:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>394723</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-28 14:07:34 -0700</bug_when>
    <thetext>use a heirarchical data structure to store results json</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394733</commentid>
    <comment_count>1</comment_count>
      <attachid>91553</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-28 14:13:58 -0700</bug_when>
    <thetext>Created attachment 91553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394752</commentid>
    <comment_count>2</comment_count>
      <attachid>91553</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-28 14:31:53 -0700</bug_when>
    <thetext>Comment on attachment 91553
Patch

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

Are you going to bump the version number?

&gt; Tools/Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:58
&gt;      &quot;skipped&quot;: 450,

Do we need to update the version number for these results?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/printing.py:448
&gt; +    def _print_unexpected_results_subtree(self, tree, passes, flaky, regressions, prefix=&quot;&quot;):

Seems we should share code with LayoutTestResults/JSONTestResult, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394766</commentid>
    <comment_count>3</comment_count>
      <attachid>91553</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-04-28 14:40:51 -0700</bug_when>
    <thetext>Comment on attachment 91553
Patch

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

&gt; LayoutTests/ChangeLog:5
&gt; +        use a heirarchical data structure to store results json

Should probably fix the typo everywhere :)

&gt; LayoutTests/fast/harness/resources/results-test.js:116
&gt; +    var subtree = {}

Seems cleaner to say var subtree = results.tests[&apos;foo&apos;] = {};

(below too)

&gt; LayoutTests/fast/harness/results.html:311
&gt; +        globalState().testsWithStderr.push(test);

Seems like the initial part of tableRow is about initializing the global state from the tests, and doesn&apos;t actually have anything to do with table rows. You may want to move that to a separate function (can be in a different patch).

&gt; Tools/Scripts/webkitpy/tool/commands/rebaselineserver.py:400
&gt; +    def _gather_current_baselines(self, tree, test_config, new_tests_subtree, prefix=&quot;&quot;):

Use single quotes, to be consistent with the rest of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394803</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-28 15:17:56 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 91553 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91553&amp;action=review
&gt; 
&gt; Are you going to bump the version number?

Sure. In practice, this is just here so we have the option of writing code that understands both version as we transition. I&apos;m changing all the places where we read in the JSON, so it doesn&apos;t really matter.

&gt; &gt; Tools/Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:58
&gt; &gt;      &quot;skipped&quot;: 450,
&gt; 
&gt; Do we need to update the version number for these results?

May as well.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/printing.py:448
&gt; &gt; +    def _print_unexpected_results_subtree(self, tree, passes, flaky, regressions, prefix=&quot;&quot;):
&gt; 
&gt; Seems we should share code with LayoutTestResults/JSONTestResult, no?

Yeah. I couldn&apos;t think of a great place to put it and it&apos;s only 5 lines of code. But it is in 4 places! I&apos;m moving it to being a free function in resultsjsonparser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394831</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-28 15:42:38 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 91553 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=91553&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:5
&gt; &gt; +        use a heirarchical data structure to store results json
&gt; 
&gt; Should probably fix the typo everywhere :)

Sigh. English is hard. :(

&gt; &gt; LayoutTests/fast/harness/resources/results-test.js:116
&gt; &gt; +    var subtree = {}
&gt; 
&gt; Seems cleaner to say var subtree = results.tests[&apos;foo&apos;] = {};
&gt; 
&gt; (below too)

Will do.

&gt; &gt; LayoutTests/fast/harness/results.html:311
&gt; &gt; +        globalState().testsWithStderr.push(test);
&gt; 
&gt; Seems like the initial part of tableRow is about initializing the global state from the tests, and doesn&apos;t actually have anything to do with table rows. You may want to move that to a separate function (can be in a different patch).

May as well do it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394832</commentid>
    <comment_count>6</comment_count>
      <attachid>91571</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-28 15:48:35 -0700</bug_when>
    <thetext>Created attachment 91571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394871</commentid>
    <comment_count>7</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-28 16:12:38 -0700</bug_when>
    <thetext>Committed r85254: &lt;http://trac.webkit.org/changeset/85254&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394872</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-28 16:14:22 -0700</bug_when>
    <thetext>Committed r85255: &lt;http://trac.webkit.org/changeset/85255&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91553</attachid>
            <date>2011-04-28 14:13:58 -0700</date>
            <delta_ts>2011-04-28 15:48:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59736-20110428141357.patch</filename>
            <type>text/plain</type>
            <size>37144</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUyMzUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NTQ5N2M5Njk1MTRhMTg0NjFmY2E5
YWI4NjgyMmZlMTliNzdjYWZmLi5jMzAxYmUwNzY2M2JiZTQ1MmYxNDE1ZmQ4YzMxNzRkODM1MDk2
ODBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMjggIE9qYW4gVmFmYWkgIDxvamFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICB1c2UgYSBoZWlyYXJjaGljYWwgZGF0YSBzdHJ1Y3R1cmUgdG8gc3RvcmUgcmVzdWx0
cyBqc29uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTczNgorCisgICAgICAgICogZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9yZXN1bHRzLXRlc3QuanM6
CisgICAgICAgICogZmFzdC9oYXJuZXNzL3Jlc3VsdHMuaHRtbDoKKwogMjAxMS0wNC0yOCAgTWFy
ayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
VG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJj
ZXMvcmVzdWx0cy10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9y
ZXN1bHRzLXRlc3QuanMKaW5kZXggYTI3YjlhNjI0ZGZjZGJhOGY0YmIzN2FkMjg4YWRkN2E3ZWE5
Yzk4Ny4uZjgxMGExNjM2ZmQ3OGJiZGU1OTdlZTNkZWQyY2ZmNGEwMjUyZmM1ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9yZXN1bHRzLXRlc3QuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9yZXN1bHRzLXRlc3QuanMKQEAg
LTExMywxNyArMTEzLDIxIEBAIGZ1bmN0aW9uIHJ1blNpbmdsZVJvd1Rlc3QocmVzdWx0cywgaXNF
eHBlY3RlZCwgdGV4dFJlc3VsdHMsIGltYWdlUmVzdWx0cykKIGZ1bmN0aW9uIHJ1blRlc3RzKCkK
IHsKICAgICB2YXIgcmVzdWx0cyA9IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1sn
Zm9vL2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MnLCAnVEVYVCcpOworICAgIHZh
ciBzdWJ0cmVlID0ge30KKyAgICByZXN1bHRzLnRlc3RzWydmb28nXSA9IHN1YnRyZWU7CisgICAg
c3VidHJlZVsnYmFyLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUycsICdURVhUJyk7CiAg
ICAgcnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0VHJ1ZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UtcmVzdWx0cy1oZWFkZXInKS50ZXh0Q29udGVudCA9
PSAnJyk7CiAgICAgICAgIGFzc2VydFRydWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQt
cmVzdWx0cy1oZWFkZXInKS50ZXh0Q29udGVudCAhPSAnJyk7CiAgICAgfSk7CiAgICAgCiAgICAg
cmVzdWx0cyA9IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci5odG1s
J10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnTUlTU0lORycpOwotICAgIHJlc3VsdHMudGVz
dHNbJ2Zvby9iYXIuaHRtbCddLmlzX21pc3NpbmdfdGV4dCA9IHRydWU7Ci0gICAgcmVzdWx0cy50
ZXN0c1snZm9vL2Jhci5odG1sJ10uaXNfbWlzc2luZ19hdWRpbyA9IHRydWU7Ci0gICAgcmVzdWx0
cy50ZXN0c1snZm9vL2Jhci5odG1sJ10uaXNfbWlzc2luZ19pbWFnZSA9IHRydWU7CisgICAgdmFy
IHN1YnRyZWUgPSB7fQorICAgIHJlc3VsdHMudGVzdHNbJ2ZvbyddID0gc3VidHJlZTsKKyAgICBz
dWJ0cmVlWydiYXIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ01JU1NJTkcnKTsK
KyAgICBzdWJ0cmVlWydiYXIuaHRtbCddLmlzX21pc3NpbmdfdGV4dCA9IHRydWU7CisgICAgc3Vi
dHJlZVsnYmFyLmh0bWwnXS5pc19taXNzaW5nX2F1ZGlvID0gdHJ1ZTsKKyAgICBzdWJ0cmVlWydi
YXIuaHRtbCddLmlzX21pc3NpbmdfaW1hZ2UgPSB0cnVlOwogICAgIHJ1blRlc3QocmVzdWx0cywg
ZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydFRydWUoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZXN1bHRzLXRhYmxlJykpOwogICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJyNuZXctdGVzdHMtdGFibGUgLnRlc3QtbGluaycpLnRleHRDb250ZW50ID09ICdmb28v
YmFyLmh0bWwnKTsKQEAgLTEzMywxNyArMTM3LDIxIEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAg
ICB9KTsKIAogICAgIHJlc3VsdHMgPSBtb2NrUmVzdWx0cygpOwotICAgIHJlc3VsdHMudGVzdHNb
J2Zvby9iYXIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTJywgJ1RFWFQnKTsKLSAgICBy
ZXN1bHRzLnRlc3RzWydmb28vYmFyLmh0bWwnXS5oYXNfc3RkZXJyID0gdHJ1ZTsKKyAgICB2YXIg
c3VidHJlZSA9IHt9CisgICAgcmVzdWx0cy50ZXN0c1snZm9vJ10gPSBzdWJ0cmVlOworICAgIHN1
YnRyZWVbJ2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MnLCAnVEVYVCcpOworICAg
IHN1YnRyZWVbJ2Jhci5odG1sJ10uaGFzX3N0ZGVyciA9IHRydWU7CiAgICAgcnVuVGVzdChyZXN1
bHRzLCBmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0VHJ1ZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmVzdWx0cy10YWJsZScpKTsKICAgICAgICAgYXNzZXJ0VHJ1ZShkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCcjc3RkZXJyLXRhYmxlIC5yZXN1bHQtbGluaycpLnRleHRDb250ZW50ID09ICdz
dGRlcnInKTsKICAgICB9KTsKIAogICAgIHJlc3VsdHMgPSBtb2NrUmVzdWx0cygpOwotICAgIHJl
c3VsdHMudGVzdHNbJ2Zvby9iYXIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ1BB
U1MnKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyMS5odG1sJ10gPSBtb2NrRXhwZWN0YXRp
b24oJ0NSQVNIJywgJ1BBU1MnKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyMi5odG1sJ10g
PSBtb2NrRXhwZWN0YXRpb24oJ0lNQUdFJywgJ1BBU1MnKTsKKyAgICB2YXIgc3VidHJlZSA9IHt9
CisgICAgcmVzdWx0cy50ZXN0c1snZm9vJ10gPSBzdWJ0cmVlOworICAgIHN1YnRyZWVbJ2Jhci5o
dG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnUEFTUycpOworICAgIHN1YnRyZWVbJ2Jh
cjEuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdDUkFTSCcsICdQQVNTJyk7CisgICAgc3VidHJl
ZVsnYmFyMi5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ0lNQUdFJywgJ1BBU1MnKTsKICAgICBy
dW5UZXN0KHJlc3VsdHMsIGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRUcnVlKCFkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cy10YWJsZScpKTsKIApAQCAtMTU5LDEyICsxNjcsMTQg
QEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIH0pOwogCiAgICAgcmVzdWx0cyA9IG1vY2tSZXN1
bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0YXRp
b24oJ1RFWFQnLCAnUEFTUycpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXItbWlzc2luZy5o
dG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnTUlTU0lORycpOwotICAgIHJlc3VsdHMu
dGVzdHNbJ2Zvby9iYXItbWlzc2luZy5odG1sJ10uaXNfbWlzc2luZ190ZXh0ID0gdHJ1ZTsKLSAg
ICByZXN1bHRzLnRlc3RzWydmb28vYmFyLXN0ZGVyci5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24o
J1BBU1MnLCAnVEVYVCcpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXItc3RkZXJyLmh0bWwn
XS5oYXNfc3RkZXJyID0gdHJ1ZTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyLXVuZXhwZWN0
ZWQtcGFzcy5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnUEFTUycpOworICAgIHZh
ciBzdWJ0cmVlID0ge30KKyAgICByZXN1bHRzLnRlc3RzWydmb28nXSA9IHN1YnRyZWU7CisgICAg
c3VidHJlZVsnYmFyLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignVEVYVCcsICdQQVNTJyk7Cisg
ICAgc3VidHJlZVsnYmFyLW1pc3NpbmcuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywg
J01JU1NJTkcnKTsKKyAgICBzdWJ0cmVlWydiYXItbWlzc2luZy5odG1sJ10uaXNfbWlzc2luZ190
ZXh0ID0gdHJ1ZTsKKyAgICBzdWJ0cmVlWydiYXItc3RkZXJyLmh0bWwnXSA9IG1vY2tFeHBlY3Rh
dGlvbignUEFTUycsICdURVhUJyk7CisgICAgc3VidHJlZVsnYmFyLXN0ZGVyci5odG1sJ10uaGFz
X3N0ZGVyciA9IHRydWU7CisgICAgc3VidHJlZVsnYmFyLXVuZXhwZWN0ZWQtcGFzcy5odG1sJ10g
PSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnUEFTUycpOwogICAgIHJ1blRlc3QocmVzdWx0cywg
ZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydFRydWUoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgndGJvZHkgdHInKS5sZW5ndGggPT0gNSk7CiAgICAgICAgIGV4cGFuZEFsbEV4cGVjdGF0aW9u
cygpOwpAQCAtMTkxLDggKzIwMSwxMCBAQCBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgfSk7CiAK
ICAgICByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFy
Lmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUycsICdURVhUJyk7Ci0gICAgcmVzdWx0cy50
ZXN0c1snZm9vL2Jhci1leHBlY3RlZC1mYWlsLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignVEVY
VCcsICdURVhUJyk7CisgICAgdmFyIHN1YnRyZWUgPSB7fQorICAgIHJlc3VsdHMudGVzdHNbJ2Zv
byddID0gc3VidHJlZTsKKyAgICBzdWJ0cmVlWydiYXIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9u
KCdQQVNTJywgJ1RFWFQnKTsKKyAgICBzdWJ0cmVlWydiYXItZXhwZWN0ZWQtZmFpbC5odG1sJ10g
PSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnVEVYVCcpOwogICAgIHJ1blRlc3QocmVzdWx0cywg
ZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydFRydWUoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgnLmV4cGVjdGVkJykubGVuZ3RoID09IDEpOwogICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJy5leHBlY3RlZCAudGVzdC1saW5rJykudGV4dENvbnRlbnQgPT0gJ2Zv
by9iYXItZXhwZWN0ZWQtZmFpbC5odG1sJyk7CkBAIC0yMTAsMzQgKzIyMiwzOCBAQCBmdW5jdGlv
biBydW5UZXN0cygpCiAgICAgICAgIGFzc2VydFRydWUoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgnLnJlc3VsdHMtcm93JykubGVuZ3RoID09IDIpOwogICAgIH0pOwogICAKLSAgICBydW5EZWZh
dWx0U2luZ2xlUm93VGVzdCgnZm9vL2Jhci1za2lwLmh0bWwnLCAnVEVYVCcsICdTS0lQJywgdHJ1
ZSwgJycsICcnKTsKLSAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnZm9vL2Jhci1mbGFreS1m
YWlsLmh0bWwnLCAnUEFTUyBGQUlMJywgJ1RFWFQnLCB0cnVlLCAnZXhwZWN0ZWQgYWN0dWFsIGRp
ZmYgJywgJycpOwotICAgIHJ1bkRlZmF1bHRTaW5nbGVSb3dUZXN0KCdmb28vYmFyLWZsYWt5LWZh
aWwtdW5leHBlY3RlZC5odG1sJywgJ1BBU1MgVEVYVCcsICdJTUFHRScsIGZhbHNlLCAnJywgJ2V4
cGVjdGVkIGFjdHVhbCBkaWZmICcpOwotICAgIHJ1bkRlZmF1bHRTaW5nbGVSb3dUZXN0KCdmb28v
YmFyLWNyYXNoLmh0bWwnLCAnVEVYVCcsICdDUkFTSCcsIGZhbHNlLCAnc3RhY2sgJywgJycpOwot
ICAgIHJ1bkRlZmF1bHRTaW5nbGVSb3dUZXN0KCdmb28vYmFyLWF1ZGlvLmh0bWwnLCAnVEVYVCcs
ICdBVURJTycsIGZhbHNlLCAnZXhwZWN0ZWQgYWN0dWFsICcsICcnKTsKLSAgICBydW5EZWZhdWx0
U2luZ2xlUm93VGVzdCgnZm9vL2Jhci10aW1lb3V0Lmh0bWwnLCAnVEVYVCcsICdUSU1FT1VUJywg
ZmFsc2UsICdleHBlY3RlZCBhY3R1YWwgZGlmZiAnLCAnJyk7Ci0gICAgcnVuRGVmYXVsdFNpbmds
ZVJvd1Rlc3QoJ2Zvby9iYXItaW1hZ2UuaHRtbCcsICdURVhUJywgJ0lNQUdFJywgZmFsc2UsICcn
LCAnZXhwZWN0ZWQgYWN0dWFsIGRpZmYgJyk7Ci0gICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3Qo
J2Zvby9iYXItaW1hZ2UtcGx1cy10ZXh0Lmh0bWwnLCAnVEVYVCcsICdJTUFHRStURVhUJywgZmFs
c2UsICdleHBlY3RlZCBhY3R1YWwgZGlmZiAnLCAnZXhwZWN0ZWQgYWN0dWFsIGRpZmYgJyk7Cisg
ICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci1za2lwLmh0bWwnLCAnVEVYVCcsICdTS0lQ
JywgdHJ1ZSwgJycsICcnKTsKKyAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnYmFyLWZsYWt5
LWZhaWwuaHRtbCcsICdQQVNTIEZBSUwnLCAnVEVYVCcsIHRydWUsICdleHBlY3RlZCBhY3R1YWwg
ZGlmZiAnLCAnJyk7CisgICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci1mbGFreS1mYWls
LXVuZXhwZWN0ZWQuaHRtbCcsICdQQVNTIFRFWFQnLCAnSU1BR0UnLCBmYWxzZSwgJycsICdleHBl
Y3RlZCBhY3R1YWwgZGlmZiAnKTsKKyAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnYmFyLWNy
YXNoLmh0bWwnLCAnVEVYVCcsICdDUkFTSCcsIGZhbHNlLCAnc3RhY2sgJywgJycpOworICAgIHJ1
bkRlZmF1bHRTaW5nbGVSb3dUZXN0KCdiYXItYXVkaW8uaHRtbCcsICdURVhUJywgJ0FVRElPJywg
ZmFsc2UsICdleHBlY3RlZCBhY3R1YWwgJywgJycpOworICAgIHJ1bkRlZmF1bHRTaW5nbGVSb3dU
ZXN0KCdiYXItdGltZW91dC5odG1sJywgJ1RFWFQnLCAnVElNRU9VVCcsIGZhbHNlLCAnZXhwZWN0
ZWQgYWN0dWFsIGRpZmYgJywgJycpOworICAgIHJ1bkRlZmF1bHRTaW5nbGVSb3dUZXN0KCdiYXIt
aW1hZ2UuaHRtbCcsICdURVhUJywgJ0lNQUdFJywgZmFsc2UsICcnLCAnZXhwZWN0ZWQgYWN0dWFs
IGRpZmYgJyk7CisgICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci1pbWFnZS1wbHVzLXRl
eHQuaHRtbCcsICdURVhUJywgJ0lNQUdFK1RFWFQnLCBmYWxzZSwgJ2V4cGVjdGVkIGFjdHVhbCBk
aWZmICcsICdleHBlY3RlZCBhY3R1YWwgZGlmZiAnKTsKIAogICAgIHJlc3VsdHMgPSBtb2NrUmVz
dWx0cygpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXItcmVmdGVzdC5odG1sJ10gPSBtb2Nr
RXhwZWN0YXRpb24oJ1BBU1MnLCAnSU1BR0UnKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFy
LXJlZnRlc3QuaHRtbCddLmlzX3JlZnRlc3QgPSB0cnVlOworICAgIHJlc3VsdHMudGVzdHNbJ2Jh
ci1yZWZ0ZXN0Lmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUycsICdJTUFHRScpOworICAg
IHJlc3VsdHMudGVzdHNbJ2Jhci1yZWZ0ZXN0Lmh0bWwnXS5pc19yZWZ0ZXN0ID0gdHJ1ZTsKICAg
ICBydW5TaW5nbGVSb3dUZXN0KHJlc3VsdHMsIGZhbHNlLCAnJywgJ3JlZiBodG1sIGV4cGVjdGVk
IGFjdHVhbCBkaWZmICcpOwogCiAgICAgcmVzdWx0cyA9IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVz
dWx0cy50ZXN0c1snZm9vL2Jhci1yZWZ0ZXN0LW1pc21hdGNoLmh0bWwnXSA9IG1vY2tFeHBlY3Rh
dGlvbignUEFTUycsICdJTUFHRScpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXItcmVmdGVz
dC1taXNtYXRjaC5odG1sJ10uaXNfbWlzbWF0Y2hfcmVmdGVzdCA9IHRydWU7CisgICAgcmVzdWx0
cy50ZXN0c1snYmFyLXJlZnRlc3QtbWlzbWF0Y2guaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQ
QVNTJywgJ0lNQUdFJyk7CisgICAgcmVzdWx0cy50ZXN0c1snYmFyLXJlZnRlc3QtbWlzbWF0Y2gu
aHRtbCddLmlzX21pc21hdGNoX3JlZnRlc3QgPSB0cnVlOwogICAgIHJ1blNpbmdsZVJvd1Rlc3Qo
cmVzdWx0cywgZmFsc2UsICcnLCAncmVmIG1pc21hdGNoIGh0bWwgYWN0dWFsICcpOwogCiAgICAg
cmVzdWx0cyA9IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci1mbGFr
eS1wYXNzLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUyBGQUlMJywgJ1BBU1MnKTsKKyAg
ICB2YXIgc3VidHJlZSA9IHt9CisgICAgcmVzdWx0cy50ZXN0c1snZm9vJ10gPSBzdWJ0cmVlOwor
ICAgIHN1YnRyZWVbJ2Jhci1mbGFreS1wYXNzLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFT
UyBGQUlMJywgJ1BBU1MnKTsKICAgICBydW5UZXN0KHJlc3VsdHMsIGZ1bmN0aW9uKCkgewogICAg
ICAgICAvLyBGSVhNRTogc2hvdWxkIGEgUEFTUyBGQUlMIHRlc3QgdGhhdCBwYXNzZXMgZ28gaW4g
dGhlIHVuZXhwZWN0ZWQgcGFzc2VzIHRhYmxlPwogICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50
LmJvZHkudGV4dENvbnRlbnQuaW5kZXhPZignZm9vL2Jhci1mbGFreS1wYXNzLmh0bWwnKSA9PSAt
MSk7CiAgICAgfSk7CiAKICAgICByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKLSAgICByZXN1bHRz
LnRlc3RzWydmb28vYmFyLXJlYWxseS1sb25nLXBhdGgtdGhhdC1zaG91bGQtcHJvYmFibHktd3Jh
cC1iZWNhdXNlLW90aGVyd2lzZS10aGUtdGFibGUtd2lsbC1iZS10b28td2lkZS5odG1sJ10gPSBt
b2NrRXhwZWN0YXRpb24oJ1BBU1MnLCAnVEVYVCcpOworICAgIHZhciBzdWJ0cmVlID0ge30KKyAg
ICByZXN1bHRzLnRlc3RzWydmb28nXSA9IHN1YnRyZWU7CisgICAgc3VidHJlZVsnYmFyLXJlYWxs
eS1sb25nLXBhdGgtdGhhdC1zaG91bGQtcHJvYmFibHktd3JhcC1iZWNhdXNlLW90aGVyd2lzZS10
aGUtdGFibGUtd2lsbC1iZS10b28td2lkZS5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1Mn
LCAnVEVYVCcpOwogICAgIHJ1blRlc3QocmVzdWx0cywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGRv
Y3VtZW50LmJvZHkuc3R5bGUud2lkdGggPSAnODAwcHgnOwogICAgICAgICB2YXIgbGlua3MgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0Ym9keSBhJyk7CkBAIC0yNDcsNyArMjYzLDkgQEAg
ZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIH0pOwogCiAgICAgcmVzdWx0cyA9IG1vY2tSZXN1bHRz
KCk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24o
J1RFWFQnLCAnVEVYVCcpOworICAgIHZhciBzdWJ0cmVlID0ge30KKyAgICByZXN1bHRzLnRlc3Rz
Wydmb28nXSA9IHN1YnRyZWU7CisgICAgc3VidHJlZVsnYmFyLmh0bWwnXSA9IG1vY2tFeHBlY3Rh
dGlvbignVEVYVCcsICdURVhUJyk7CiAgICAgcmVzdWx0cy51c2VzX2V4cGVjdGF0aW9uc19maWxl
ID0gZmFsc2U7CiAgICAgcnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigpIHsKICAgICAgICAgYXNz
ZXJ0VHJ1ZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0Ym9keSB0ZCcpLmxlbmd0aCA9PSA0
KTsKQEAgLTI1NSw3ICsyNzMsOSBAQCBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgfSk7CiAKICAg
ICByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyLmh0
bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignVEVYVCcsICdURVhUJyk7CisgICAgdmFyIHN1YnRyZWUg
PSB7fQorICAgIHJlc3VsdHMudGVzdHNbJ2ZvbyddID0gc3VidHJlZTsKKyAgICBzdWJ0cmVlWydi
YXIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ1RFWFQnKTsKICAgICByZXN1bHRz
Lmhhc19wcmV0dHlfcGF0Y2ggPSB0cnVlOwogICAgIHJ1blRlc3QocmVzdWx0cywgZnVuY3Rpb24o
KSB7CiAgICAgICAgIGFzc2VydFRydWUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGJvZHkgdGQ6
bnRoLWNoaWxkKDIpJykudGV4dENvbnRlbnQuaW5kZXhPZigncHJldHR5IGRpZmYnKSAhPSAtMSk7
CkBAIC0yNjMsNyArMjgzLDkgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIH0pOwogCiAgICAg
cmVzdWx0cyA9IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci5odG1s
J10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnVEVYVCcpOworICAgIHZhciBzdWJ0cmVlID0g
e30KKyAgICByZXN1bHRzLnRlc3RzWydmb28nXSA9IHN1YnRyZWU7CisgICAgc3VidHJlZVsnYmFy
Lmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignVEVYVCcsICdURVhUJyk7CiAgICAgcmVzdWx0cy5o
YXNfd2RpZmYgPSB0cnVlOwogICAgIHJ1blRlc3QocmVzdWx0cywgZnVuY3Rpb24oKSB7CiAgICAg
ICAgIGFzc2VydFRydWUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGJvZHkgdGQ6bnRoLWNoaWxk
KDIpJykudGV4dENvbnRlbnQuaW5kZXhPZignd2RpZmYnKSAhPSAtMSk7CkBAIC0yNzEsMTEgKzI5
MywxMyBAQCBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgfSk7CiAgICAgCiAgICAgcmVzdWx0cyA9
IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci5odG1sJ10gPSBtb2Nr
RXhwZWN0YXRpb24oJ1RFWFQnLCAnUEFTUycpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXIt
MS5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnQ1JBU0gnKTsKLSAgICByZXN1bHRz
LnRlc3RzWydmb28vYmFyLTUuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ0lNQUdF
K1RFWFQnKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyLTMuaHRtbCddID0gbW9ja0V4cGVj
dGF0aW9uKCdQQVNTJywgJ1RFWFQnKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyLTIuaHRt
bCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTJywgJ0lNQUdFJyk7CisgICAgdmFyIHN1YnRyZWUg
PSB7fQorICAgIHJlc3VsdHMudGVzdHNbJ2ZvbyddID0gc3VidHJlZTsKKyAgICBzdWJ0cmVlWydi
YXIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ1BBU1MnKTsKKyAgICBzdWJ0cmVl
WydiYXItMS5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnQ1JBU0gnKTsKKyAgICBz
dWJ0cmVlWydiYXItNS5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnSU1BR0UrVEVY
VCcpOworICAgIHN1YnRyZWVbJ2Jhci0zLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUycs
ICdURVhUJyk7CisgICAgc3VidHJlZVsnYmFyLTIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQ
QVNTJywgJ0lNQUdFJyk7CiAgICAgcnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMganVzdCBlbnN1cmVzIHdlIGRvbid0IGdldCBhIEpTIGVycm9yLgog
ICAgICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgc29ydCBpcyBjb3JyZWN0IGFuZCB0aGF0IGlubGlu
ZSBleHBhbmRlZCBleHBlY3RhdGlvbnMKQEAgLTI5NSw3ICszMTksOSBAQCBmdW5jdGlvbiBydW5U
ZXN0cygpCiAgICAgfSk7CiAKICAgICByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKLSAgICByZXN1
bHRzLnRlc3RzWydmb28vYmFyLTUuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ0lN
QUdFK1RFWFQnKTsKKyAgICB2YXIgc3VidHJlZSA9IHt9CisgICAgcmVzdWx0cy50ZXN0c1snZm9v
J10gPSBzdWJ0cmVlOworICAgIHN1YnRyZWVbJ2Jhci01Lmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlv
bignVEVYVCcsICdJTUFHRStURVhUJyk7CiAgICAgcnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigp
IHsKICAgICAgICAgZXhwYW5kQWxsRXhwZWN0YXRpb25zKCk7CiAgICAgICAgIHZhciBwbmcgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbc3JjKj0iYmFyLTUtZXhwZWN0ZWQucG5nIl0nKTsKQEAg
LTMxMyw3ICszMzksOSBAQCBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgfSk7CiAgICAgCiAgICAg
cmVzdWx0cyA9IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi1hcGkuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ0lNQUdFK1RF
WFQnKTsKKyAgICB2YXIgc3VidHJlZSA9IHt9CisgICAgcmVzdWx0cy50ZXN0c1snZnVsbHNjcmVl
biddID0gc3VidHJlZTsKKyAgICBzdWJ0cmVlWydmdWxsLXNjcmVlbi1hcGkuaHRtbCddID0gbW9j
a0V4cGVjdGF0aW9uKCdURVhUJywgJ0lNQUdFK1RFWFQnKTsKICAgICBydW5UZXN0KHJlc3VsdHMs
IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgZXhwZWN0ZWRIcmVmID0gJ2ZpbGU6Ly8nICsgcmVz
dWx0cy5sYXlvdXRfdGVzdHNfZGlyICsgJy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1s
JzsKICAgICAgICAgYXNzZXJ0VHJ1ZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0Ym9keSB0ZDpm
aXJzdC1jaGlsZCBhJykuaHJlZiA9PSBleHBlY3RlZEhyZWYpOwpAQCAtMzIzLDE0ICszNTEsMTgg
QEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIHNob3VsZFVzZVRyYWNMaW5rcyA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gdHJ1ZTsgfTsKICAgICAKICAgICByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsK
LSAgICByZXN1bHRzLnRlc3RzWydmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sJ10gPSBt
b2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnSU1BR0UrVEVYVCcpOworICAgIHZhciBzdWJ0cmVlID0g
e30KKyAgICByZXN1bHRzLnRlc3RzWydmdWxsc2NyZWVuJ10gPSBzdWJ0cmVlOworICAgIHN1YnRy
ZWVbJ2Z1bGwtc2NyZWVuLWFwaS5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnSU1B
R0UrVEVYVCcpOwogICAgIHJ1blRlc3QocmVzdWx0cywgZnVuY3Rpb24oKSB7CiAgICAgICAgIHZh
ciBleHBlY3RlZEhyZWYgPSAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9leHBvcnQvJyArIHJlc3Vs
dHMucmV2aXNpb24gKyAnL3RydW5rL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
YXBpLmh0bWwnOwogICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3Ri
b2R5IHRkOmZpcnN0LWNoaWxkIGEnKS5ocmVmID09IGV4cGVjdGVkSHJlZik7CiAgICAgfSk7CiAK
ICAgICByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKLSAgICByZXN1bHRzLnRlc3RzWydmdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnSU1B
R0UrVEVYVCcpOworICAgIHZhciBzdWJ0cmVlID0ge30KKyAgICByZXN1bHRzLnRlc3RzWydmdWxs
c2NyZWVuJ10gPSBzdWJ0cmVlOworICAgIHN1YnRyZWVbJ2Z1bGwtc2NyZWVuLWFwaS5odG1sJ10g
PSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnSU1BR0UrVEVYVCcpOwogICAgIHJlc3VsdHMucmV2
aXNpb24gPSAnJzsKICAgICBydW5UZXN0KHJlc3VsdHMsIGZ1bmN0aW9uKCkgewogICAgICAgICB2
YXIgZXhwZWN0ZWRIcmVmID0gJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9M
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sJzsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXN1bHRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2hhcm5lc3MvcmVzdWx0cy5odG1sCmluZGV4IDVmNmRhOGQwODFlZmNmNmVmZGEwYWNlOWUxYTAw
MDhjMjJkYTk5YTcuLjU1Y2ZjMTNjNDI4ZGVjNmIxNjlmNGE4YzU4ZTA2MzVhMTZjNTk4MzUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXN1bHRzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc3VsdHMuaHRtbApAQCAtMjg5LDg4ICsyODksMTI3IEBA
IGZ1bmN0aW9uIHJlc3VsdExpbmsodGVzdFByZWZpeCwgc3VmZml4LCBjb250ZW50cykKICAgICBy
ZXR1cm4gJzxhIGNsYXNzPXJlc3VsdC1saW5rIGhyZWY9IicgKyB0ZXN0UHJlZml4ICsgc3VmZml4
ICsgJyI+JyArIGNvbnRlbnRzICsgJzwvYT4gJzsKIH0KIAotZnVuY3Rpb24gdGFibGVSb3dzKCkK
K2Z1bmN0aW9uIHRlc3RPYmplY3RGb3IodGVzdCkKIHsKLSAgICB2YXIgaHRtbCA9ICcnOwotICAg
IGZvciAodmFyIHRlc3QgaW4gZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnRlc3RzKSB7Ci0gICAgICAg
IGlmIChnbG9iYWxTdGF0ZSgpLnJlc3VsdHMudGVzdHNbdGVzdF0uaGFzX3N0ZGVycikKLSAgICAg
ICAgICAgIGdsb2JhbFN0YXRlKCkudGVzdHNXaXRoU3RkZXJyLnB1c2godGVzdCk7Ci0KLSAgICAg
ICAgZ2xvYmFsU3RhdGUoKS5oYXNIdHRwVGVzdHMgPSBnbG9iYWxTdGF0ZSgpLmhhc0h0dHBUZXN0
cyB8fCB0ZXN0LmluZGV4T2YoJ2h0dHAvJykgPT0gMDsKLQotICAgICAgICB2YXIgYWN0dWFsID0g
Z2xvYmFsU3RhdGUoKS5yZXN1bHRzLnRlc3RzW3Rlc3RdLmFjdHVhbDsKLSAgICAgICAgaWYgKGFj
dHVhbCA9PSAnTUlTU0lORycpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgdGhh
dCBuZXctcnVuLXdlYmtpdC10ZXN0cyBzcGl0cyBvdXQgYW4gLWFjdHVhbC50eHQgZmlsZSBmb3IK
LSAgICAgICAgICAgIC8vIHRlc3RzIHdpdGggTUlTU0lORyByZXN1bHRzLgotICAgICAgICAgICAg
Z2xvYmFsU3RhdGUoKS5uZXdUZXN0cy5wdXNoKHRlc3QpOwotICAgICAgICAgICAgY29udGludWU7
CisgICAgdmFyIHBhcnRzID0gdGVzdC5zcGxpdCgnLycpOworICAgIHZhciB0cmVlID0gZ2xvYmFs
U3RhdGUoKS5yZXN1bHRzLnRlc3RzOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFydHMubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgaWYgKHBhcnRzW2ldIGluIHRyZWUpCisgICAgICAgICAgICB0
cmVlID0gdHJlZVtwYXJ0c1tpXV07CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc29s
ZS5lcnJvcignVGVzdCBub3QgaW4gdGhlIHJlc3VsdHMgdHJlZTogJyArIHRlc3QpOworICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRyZWU7Cit9
CiAKLSAgICAgICAgdmFyIGV4cGVjdGVkID0gZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnRlc3RzW3Rl
c3RdLmV4cGVjdGVkIHx8ICdQQVNTJzsKLSAgICAgICAgdmFyIGlzRXhwZWN0ZWQgPSBhY3R1YWwg
PT0gJ1NLSVAnOwotICAgICAgICBpZiAoIWlzRXhwZWN0ZWQgJiYgZ2xvYmFsU3RhdGUoKS5yZXN1
bHRzLnVzZXNfZXhwZWN0YXRpb25zX2ZpbGUpIHsKLSAgICAgICAgICAgIHZhciBleHBlY3RlZEFy
cmF5ID0gZXhwZWN0ZWQuc3BsaXQoJyAnKTsKLSAgICAgICAgICAgIGlmIChleHBlY3RlZEFycmF5
LmluZGV4T2YoYWN0dWFsKSAhPSAtMSkKLSAgICAgICAgICAgICAgICBpc0V4cGVjdGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGV4cGVjdGVkQXJyYXkuaW5kZXhPZignRkFJTCcpICE9
IC0xKQotICAgICAgICAgICAgICAgIGlzRXhwZWN0ZWQgPSBhY3R1YWwgPT0gJ0lNQUdFJyB8fCBh
Y3R1YWwgPT0gJ1RFWFQnIHx8IGFjdHVhbCA9PSAnSU1BR0UrVEVYVCc7Ci0gICAgICAgIH0KK2Z1
bmN0aW9uIHRhYmxlUm93KHRlc3RPYmplY3QpCit7CisgICAgdmFyIHRlc3QgPSB0ZXN0T2JqZWN0
Lm5hbWU7CisgICAgaWYgKHRlc3RPYmplY3QuaGFzX3N0ZGVycikKKyAgICAgICAgZ2xvYmFsU3Rh
dGUoKS50ZXN0c1dpdGhTdGRlcnIucHVzaCh0ZXN0KTsKIAotICAgICAgICBpZiAoYWN0dWFsID09
ICdQQVNTJykgewotICAgICAgICAgICAgaWYgKCFpc0V4cGVjdGVkICYmIGV4cGVjdGVkICE9ICdQ
QVNTJykKLSAgICAgICAgICAgICAgICBnbG9iYWxTdGF0ZSgpLnVuZXhwZWN0ZWRQYXNzVGVzdHMu
cHVzaCh0ZXN0KTsgICAgICAgICAgICAKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
CisgICAgZ2xvYmFsU3RhdGUoKS5oYXNIdHRwVGVzdHMgPSBnbG9iYWxTdGF0ZSgpLmhhc0h0dHBU
ZXN0cyB8fCB0ZXN0LmluZGV4T2YoJ2h0dHAvJykgPT0gMDsKIAotICAgICAgICB2YXIgcm93ID0g
Jzx0ZD4nICsgdGVzdExpbmsodGVzdCkgKyAnPC90ZD4nOwotICAgICAgICB2YXIgdGVzdF9wcmVm
aXggPSBzdHJpcEV4dGVuc2lvbih0ZXN0KTsKLQotICAgICAgICByb3cgKz0gJzx0ZD4nOwotICAg
ICAgICBpZiAoYWN0dWFsID09ICdDUkFTSCcpCi0gICAgICAgICAgICByb3cgKz0gcmVzdWx0TGlu
ayh0ZXN0X3ByZWZpeCwgJy1zdGFjay50eHQnLCAnc3RhY2snKTsKLSAgICAgICAgZWxzZSBpZiAo
YWN0dWFsID09ICdBVURJTycpIHsKLSAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3Rf
cHJlZml4LCAnLWV4cGVjdGVkLndhdicsICdleHBlY3RlZCcpOwotICAgICAgICAgICAgcm93ICs9
IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctYWN0dWFsLndhdicsICdhY3R1YWwnKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChhY3R1YWwuaW5kZXhPZignVEVYVCcpICE9IC0xIHx8IGFjdHVhbCA9PSAn
VElNRU9VVCcpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBvbmx5IGluY2x1ZGUgdGltZW91dCBh
Y3R1YWwvZXhwZWN0ZWQgcmVzdWx0cyBoZXJlIGlmIHdlIGFjdHVhbGx5IHNwaXQgb3V0IHJlc3Vs
dHMgZm9yIHRpbWVvdXQgdGVzdHMuCi0gICAgICAgICAgICBnbG9iYWxTdGF0ZSgpLmhhc1RleHRG
YWlsdXJlcyA9IHRydWU7Ci0gICAgICAgICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3ByZWZp
eCwgJy1leHBlY3RlZC50eHQnLCAnZXhwZWN0ZWQnKSArCi0gICAgICAgICAgICAgICAgcmVzdWx0
TGluayh0ZXN0X3ByZWZpeCwgJy1hY3R1YWwudHh0JywgJ2FjdHVhbCcpICsKLSAgICAgICAgICAg
ICAgICByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWRpZmYudHh0JywgJ2RpZmYnKTsKLSAgICAg
IAotICAgICAgICAgICAgaWYgKGdsb2JhbFN0YXRlKCkucmVzdWx0cy5oYXNfcHJldHR5X3BhdGNo
KQotICAgICAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLXByZXR0
eS1kaWZmLmh0bWwnLCAncHJldHR5IGRpZmYnKTsKLQotICAgICAgICAgICAgaWYgKGdsb2JhbFN0
YXRlKCkucmVzdWx0cy5oYXNfd2RpZmYpCi0gICAgICAgICAgICAgICAgcm93ICs9IHJlc3VsdExp
bmsodGVzdF9wcmVmaXgsICctd2RpZmYuaHRtbCcsICd3ZGlmZicpOwotICAgICAgICB9CisgICAg
dmFyIGFjdHVhbCA9IHRlc3RPYmplY3QuYWN0dWFsOworICAgIGlmIChhY3R1YWwgPT0gJ01JU1NJ
TkcnKSB7CisgICAgICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgdGhhdCBuZXctcnVuLXdlYmtpdC10
ZXN0cyBzcGl0cyBvdXQgYW4gLWFjdHVhbC50eHQgZmlsZSBmb3IKKyAgICAgICAgLy8gdGVzdHMg
d2l0aCBNSVNTSU5HIHJlc3VsdHMuCisgICAgICAgIGdsb2JhbFN0YXRlKCkubmV3VGVzdHMucHVz
aCh0ZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBleHBlY3RlZCA9IHRl
c3RPYmplY3QuZXhwZWN0ZWQgfHwgJ1BBU1MnOworICAgIHZhciBpc0V4cGVjdGVkID0gYWN0dWFs
ID09ICdTS0lQJzsKKyAgICBpZiAoIWlzRXhwZWN0ZWQgJiYgZ2xvYmFsU3RhdGUoKS5yZXN1bHRz
LnVzZXNfZXhwZWN0YXRpb25zX2ZpbGUpIHsKKyAgICAgICAgdmFyIGV4cGVjdGVkQXJyYXkgPSBl
eHBlY3RlZC5zcGxpdCgnICcpOworICAgICAgICBpZiAoZXhwZWN0ZWRBcnJheS5pbmRleE9mKGFj
dHVhbCkgIT0gLTEpCisgICAgICAgICAgICBpc0V4cGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgZWxz
ZSBpZiAoZXhwZWN0ZWRBcnJheS5pbmRleE9mKCdGQUlMJykgIT0gLTEpCisgICAgICAgICAgICBp
c0V4cGVjdGVkID0gYWN0dWFsID09ICdJTUFHRScgfHwgYWN0dWFsID09ICdURVhUJyB8fCBhY3R1
YWwgPT0gJ0lNQUdFK1RFWFQnOworICAgIH0KKworICAgIGlmIChhY3R1YWwgPT0gJ1BBU1MnKSB7
CisgICAgICAgIGlmICghaXNFeHBlY3RlZCAmJiBleHBlY3RlZCAhPSAnUEFTUycpCisgICAgICAg
ICAgICBnbG9iYWxTdGF0ZSgpLnVuZXhwZWN0ZWRQYXNzVGVzdHMucHVzaCh0ZXN0KTsgICAgICAg
ICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICByb3cgKz0gJzwvdGQ+PHRk
Pic7CisgICAgdmFyIHJvdyA9ICc8dGQ+JyArIHRlc3RMaW5rKHRlc3QpICsgJzwvdGQ+JzsKKyAg
ICB2YXIgdGVzdF9wcmVmaXggPSBzdHJpcEV4dGVuc2lvbih0ZXN0KTsKKworICAgIHJvdyArPSAn
PHRkPic7CisgICAgaWYgKGFjdHVhbCA9PSAnQ1JBU0gnKQorICAgICAgICByb3cgKz0gcmVzdWx0
TGluayh0ZXN0X3ByZWZpeCwgJy1zdGFjay50eHQnLCAnc3RhY2snKTsKKyAgICBlbHNlIGlmIChh
Y3R1YWwgPT0gJ0FVRElPJykgeworICAgICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3ByZWZp
eCwgJy1leHBlY3RlZC53YXYnLCAnZXhwZWN0ZWQnKTsKKyAgICAgICAgcm93ICs9IHJlc3VsdExp
bmsodGVzdF9wcmVmaXgsICctYWN0dWFsLndhdicsICdhY3R1YWwnKTsKKyAgICB9IGVsc2UgaWYg
KGFjdHVhbC5pbmRleE9mKCdURVhUJykgIT0gLTEgfHwgYWN0dWFsID09ICdUSU1FT1VUJykgewor
ICAgICAgICAvLyBGSVhNRTogb25seSBpbmNsdWRlIHRpbWVvdXQgYWN0dWFsL2V4cGVjdGVkIHJl
c3VsdHMgaGVyZSBpZiB3ZSBhY3R1YWxseSBzcGl0IG91dCByZXN1bHRzIGZvciB0aW1lb3V0IHRl
c3RzLgorICAgICAgICBnbG9iYWxTdGF0ZSgpLmhhc1RleHRGYWlsdXJlcyA9IHRydWU7CisgICAg
ICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWV4cGVjdGVkLnR4dCcsICdleHBl
Y3RlZCcpICsKKyAgICAgICAgICAgIHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctYWN0dWFsLnR4
dCcsICdhY3R1YWwnKSArCisgICAgICAgICAgICByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWRp
ZmYudHh0JywgJ2RpZmYnKTsKKyAgCisgICAgICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3VsdHMu
aGFzX3ByZXR0eV9wYXRjaCkKKyAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJl
Zml4LCAnLXByZXR0eS1kaWZmLmh0bWwnLCAncHJldHR5IGRpZmYnKTsKKworICAgICAgICBpZiAo
Z2xvYmFsU3RhdGUoKS5yZXN1bHRzLmhhc193ZGlmZikKKyAgICAgICAgICAgIHJvdyArPSByZXN1
bHRMaW5rKHRlc3RfcHJlZml4LCAnLXdkaWZmLmh0bWwnLCAnd2RpZmYnKTsKKyAgICB9CisKKyAg
ICByb3cgKz0gJzwvdGQ+PHRkPic7CiAKLSAgICAgICAgaWYgKGFjdHVhbC5pbmRleE9mKCdJTUFH
RScpICE9IC0xKSB7Ci0gICAgICAgICAgICBnbG9iYWxTdGF0ZSgpLmhhc0ltYWdlRmFpbHVyZXMg
PSB0cnVlOworICAgIGlmIChhY3R1YWwuaW5kZXhPZignSU1BR0UnKSAhPSAtMSkgeworICAgICAg
ICBnbG9iYWxTdGF0ZSgpLmhhc0ltYWdlRmFpbHVyZXMgPSB0cnVlOwogCi0gICAgICAgICAgICBp
ZiAoZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnRlc3RzW3Rlc3RdLmlzX21pc21hdGNoX3JlZnRlc3Qp
IHsKLSAgICAgICAgICAgICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1leHBl
Y3RlZC1taXNtYXRjaC5odG1sJywgJ3JlZiBtaXNtYXRjaCBodG1sJykgKwotICAgICAgICAgICAg
ICAgICAgICByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWFjdHVhbC5wbmcnLCAnYWN0dWFsJyk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChnbG9iYWxTdGF0ZSgp
LnJlc3VsdHMudGVzdHNbdGVzdF0uaXNfcmVmdGVzdCkKLSAgICAgICAgICAgICAgICAgICAgcm93
ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctZXhwZWN0ZWQuaHRtbCcsICdyZWYgaHRtbCcp
OworICAgICAgICBpZiAodGVzdE9iamVjdC5pc19taXNtYXRjaF9yZWZ0ZXN0KSB7CisgICAgICAg
ICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1leHBlY3RlZC1taXNtYXRjaC5o
dG1sJywgJ3JlZiBtaXNtYXRjaCBodG1sJykgKworICAgICAgICAgICAgICAgIHJlc3VsdExpbmso
dGVzdF9wcmVmaXgsICctYWN0dWFsLnBuZycsICdhY3R1YWwnKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGlmICh0ZXN0T2JqZWN0LmlzX3JlZnRlc3QpCisgICAgICAgICAgICAgICAg
cm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctZXhwZWN0ZWQuaHRtbCcsICdyZWYgaHRt
bCcpOwogCi0gICAgICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICct
ZXhwZWN0ZWQucG5nJywgJ2V4cGVjdGVkJykgKwotICAgICAgICAgICAgICAgICAgICByZXN1bHRM
aW5rKHRlc3RfcHJlZml4LCAnLWFjdHVhbC5wbmcnLCAnYWN0dWFsJykgKwotICAgICAgICAgICAg
ICAgICAgICByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWRpZmYucG5nJywgJ2RpZmYnKTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAn
LWV4cGVjdGVkLnBuZycsICdleHBlY3RlZCcpICsKKyAgICAgICAgICAgICAgICByZXN1bHRMaW5r
KHRlc3RfcHJlZml4LCAnLWFjdHVhbC5wbmcnLCAnYWN0dWFsJykgKworICAgICAgICAgICAgICAg
IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctZGlmZi5wbmcnLCAnZGlmZicpOwogICAgICAgICB9
CisgICAgfQogCi0gICAgICAgIHJvdyArPSAnPC90ZD4nOwotICAgICAgICByb3cgKz0gJzx0ZD4n
ICsgYWN0dWFsICsgJzwvdGQ+JzsKKyAgICByb3cgKz0gJzwvdGQ+JzsKKyAgICByb3cgKz0gJzx0
ZD4nICsgYWN0dWFsICsgJzwvdGQ+JzsKIAotICAgICAgICBpZiAoZ2xvYmFsU3RhdGUoKS5yZXN1
bHRzLnVzZXNfZXhwZWN0YXRpb25zX2ZpbGUpCi0gICAgICAgICAgcm93ICs9ICc8dGQ+JyArIGV4
cGVjdGVkICsgJzwvdGQ+JzsKKyAgICBpZiAoZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnVzZXNfZXhw
ZWN0YXRpb25zX2ZpbGUpCisgICAgICByb3cgKz0gJzx0ZD4nICsgZXhwZWN0ZWQgKyAnPC90ZD4n
OworCisgICAgcmV0dXJuICc8dGJvZHkgY2xhc3M9IicgKyAoaXNFeHBlY3RlZCA/ICdleHBlY3Rl
ZCcgOiAnJykgKyAnIj48dHI+JyArIHJvdyArICc8L3RyPjwvdGJvZHk+JzsKK30KIAotICAgICAg
ICBodG1sICs9ICc8dGJvZHkgY2xhc3M9IicgKyAoaXNFeHBlY3RlZCA/ICdleHBlY3RlZCcgOiAn
JykgKyAnIj48dHI+JyArIHJvdyArICc8L3RyPjwvdGJvZHk+JzsKK2Z1bmN0aW9uIGZvckVhY2hU
ZXN0KGhhbmRsZXIsIG9wdF90cmVlLCBvcHRfcHJlZml4KQoreworICAgIHZhciB0cmVlID0gb3B0
X3RyZWUgfHwgZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnRlc3RzOworICAgIHZhciBwcmVmaXggPSBv
cHRfcHJlZml4IHx8ICcnOworCisgICAgZm9yICh2YXIga2V5IGluIHRyZWUpIHsKKyAgICAgICAg
dmFyIG5ld1ByZWZpeCA9IHByZWZpeCA/IChwcmVmaXggKyAnLycgKyBrZXkpIDoga2V5OworICAg
ICAgICBpZiAoJ2FjdHVhbCcgaW4gdHJlZVtrZXldKSB7CisgICAgICAgICAgICB2YXIgdGVzdE9i
amVjdCA9IHRyZWVba2V5XTsKKyAgICAgICAgICAgIHRlc3RPYmplY3QubmFtZSA9IG5ld1ByZWZp
eDsKKyAgICAgICAgICAgIGhhbmRsZXIodGVzdE9iamVjdCk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgZm9yRWFjaFRlc3QoaGFuZGxlciwgdHJlZVtrZXldLCBuZXdQcmVmaXgpOwogICAg
IH0KK30KKworZnVuY3Rpb24gdGFibGVSb3dzKCkKK3sKKyAgICB2YXIgaHRtbCA9ICcnOworICAg
IGZvckVhY2hUZXN0KGZ1bmN0aW9uKHRlc3RPYmplY3QpIHsKKyAgICAgICAgdmFyIHJvdyA9IHRh
YmxlUm93KHRlc3RPYmplY3QpOworICAgICAgICBpZiAocm93KQorICAgICAgICAgICAgaHRtbCAr
PSByb3c7CisgICAgfSk7CiAgICAgcmV0dXJuIGh0bWw7CiB9CiAKQEAgLTM5MCw5ICs0MjksOSBA
QCBmdW5jdGlvbiB0ZXN0TGlzdCh0ZXN0cywgaGVhZGVyLCB0YWJsZUlkKQogICAgICAgICBpZiAo
dGFibGVJZCA9PSAnc3RkZXJyLXRhYmxlJykKICAgICAgICAgICAgIGh0bWwgKz0gcmVzdWx0TGlu
ayhzdHJpcEV4dGVuc2lvbih0ZXN0KSwgJy1zdGRlcnIudHh0JywgJ3N0ZGVycicpOwogICAgICAg
ICBlbHNlIGlmICh0YWJsZUlkID09ICdwYXNzZXMtdGFibGUnKQotICAgICAgICAgICAgaHRtbCAr
PSBnbG9iYWxTdGF0ZSgpLnJlc3VsdHMudGVzdHNbdGVzdF0uZXhwZWN0ZWQ7CisgICAgICAgICAg
ICBodG1sICs9IHRlc3RPYmplY3RGb3IodGVzdCkuZXhwZWN0ZWQ7CiAgICAgICAgIGVsc2UgaWYg
KHRhYmxlSWQgPT0gJ25ldy10ZXN0cy10YWJsZScpIHsKLSAgICAgICAgICAgIHZhciB0ZXN0T2Jq
ZWN0ID0gZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnRlc3RzW3Rlc3RdOworICAgICAgICAgICAgdmFy
IHRlc3RPYmplY3QgPSB0ZXN0T2JqZWN0Rm9yKHRlc3QpOwogICAgICAgICAgICAgaWYgKHRlc3RP
YmplY3QuaXNfbWlzc2luZ19hdWRpbykKICAgICAgICAgICAgICAgICBodG1sICs9IHJlc3VsdExp
bmsoc3RyaXBFeHRlbnNpb24odGVzdCksICctYWN0dWFsLndhdicsICdhdWRpbyByZXN1bHQnKTsK
ICAgICAgICAgICAgIGlmICh0ZXN0T2JqZWN0LmlzX21pc3NpbmdfdGV4dCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5OTM3OTBhZmJhOTE0Y2Q3
NjBjNjhmOGVjNjNiMDRlYTRmM2NmM2E1Li5iMTcyYTRiYmIzMzk5MGJkNDk1YTU4MzA5ZTI3ZmU1
NmEwMmQxZjIxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDQtMjggIE9qYW4gVmFmYWkgIDxvamFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICB1c2UgYSBoZWlyYXJjaGljYWwgZGF0YSBzdHJ1Y3R1cmUgdG8gc3RvcmUgcmVzdWx0cyBqc29u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTczNgor
CisgICAgICAgIEluc3RlYWQgb2YgYSBtYXAgZnJvbSB0ZXN0IG5hbWUgdG8gcmVzdWx0cyBkaWN0
LCB3ZSBub3cgc3RvcmUgYSBoZWlyYXJjaGljYWwKKyAgICAgICAgZGF0YSBzdHJ1Y3R1cmUuCisK
KyAgICAgICAgT2xkOiB7IGZvby9iYXIvYmF6Lmh0bWw6IHJlc3VsdHNfZGljdCwgZm9vL2Jhci9i
YXoyLmh0bWw6IHJlc3VsdHNfZGljdCB9CisgICAgICAgIE5ldzoKKyAgICAgICAgeyBmb286IHsK
KyAgICAgICAgICAgIGJhcjogeworICAgICAgICAgICAgICBiYXouaHRtbDogcmVzdWx0c19kaWN0
LAorICAgICAgICAgICAgICBiYXoyLmh0bWw6IHJlc3VsdHNfZGljdCB9IH0gfQorCisgICAgICAg
IFRoaXMgY3V0IH41MiUgb2YgdGhlIHNpemUgb2YgdGltZXNfbXMuanNvbi4gSSBleHBlY3QgaXQg
d2lsbCBjdXQKKyAgICAgICAgMzAtNDAlIG9mIGZ1bGxfcmVzdWx0cy5qc29uIGFuZCB1bmV4cGVj
dGVkX3Jlc3VsdHMuanNvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9yZXN1bHRzanNvbnBhcnNlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvcmVzdWx0c2pzb25wYXJzZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRv
ci5weToKKyAgICAgICAgVXNpbmcgb3Muc2VwIHdhcyBqdXN0IHdyb25nIHNpbmNlIHJlbGF0aXZl
X3Rlc3RfZmlsZW5hbWUgY2Fub25pY2FsaXplcyBzZXBhcmF0b3JzLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRp
bmcucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmVi
YXNlbGluZXNlcnZlci5weToKKyAgICAgICAgSW5zdGVhZCBvZiBwbHVtYmluZyB0aHJvdWdoIHRo
ZSBjaGFuZ2UgdG8gYWxsIG9mIHRoZSByZWJhc2VsaW5lc2VydmVyCisgICAgICAgIHB5dGhvbiBh
bmQgSlMsIGp1c3QgY29udmVydCB0byB0aGUgb2xkIGZvcm1hdCBhZnRlciByZWFkaW5nIGluIHRo
ZSBqc29uLgorCiAyMDExLTA0LTI4ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weQppbmRleCBkOGMwODU4Y2Mx
MGQyMzA4MTgzY2EzOWJkMDY4NzgwMjZiNGZlMjYzLi5iNmZjNGQ4MTY5NTZkM2RkMTQ1MTY0MjQw
ZTU4Y2NmM2U4MGUzYTQ4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvcmVzdWx0c2pzb25wYXJzZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyLnB5CkBAIC04OSw2ICs4OSwxNSBAQCBjbGFzcyBS
ZXN1bHRzSlNPTlBhcnNlcihvYmplY3QpOgogICAgIFRoaXMgd2lsbCBub3QgcGFyc2UgdGhlIG9s
ZCByZXN1bHRzLmpzb24gZm9ybWF0LiIiIgogCiAgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9w
YXJzZV90ZXN0c19zdWJ0cmVlKGNscywgdHJlZSwgcmVzdWx0c19saXN0LCBwcmVmaXg9IiIpOgor
ICAgICAgICBmb3Iga2V5IGluIHRyZWU6CisgICAgICAgICAgICBuZXdfcHJlZml4ID0gKHByZWZp
eCArICcvJyArIGtleSkgaWYgcHJlZml4IGVsc2Uga2V5CisgICAgICAgICAgICBpZiAnYWN0dWFs
JyBub3QgaW4gdHJlZVtrZXldOgorICAgICAgICAgICAgICAgIGNscy5fcGFyc2VfdGVzdHNfc3Vi
dHJlZSh0cmVlW2tleV0sIHJlc3VsdHNfbGlzdCwgbmV3X3ByZWZpeCkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgcmVzdWx0c19saXN0LmFwcGVuZChKU09OVGVzdFJlc3VsdChu
ZXdfcHJlZml4LCB0cmVlW2tleV0pKQorCisgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHBhcnNl
X3Jlc3VsdHNfanNvbihjbHMsIGpzb25fc3RyaW5nKToKICAgICAgICAgaWYgbm90IGpzb25fcmVz
dWx0c19nZW5lcmF0b3IuaGFzX2pzb25fd3JhcHBlcihqc29uX3N0cmluZyk6CiAgICAgICAgICAg
ICByZXR1cm4gTm9uZQpAQCAtOTYsNyArMTA1LDkgQEAgY2xhc3MgUmVzdWx0c0pTT05QYXJzZXIo
b2JqZWN0KToKICAgICAgICAgY29udGVudF9zdHJpbmcgPSBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9y
LnN0cmlwX2pzb25fd3JhcHBlcihqc29uX3N0cmluZykKICAgICAgICAganNvbl9kaWN0ID0ganNv
bi5sb2Fkcyhjb250ZW50X3N0cmluZykKIAotICAgICAgICBqc29uX3Jlc3VsdHMgPSBbSlNPTlRl
c3RSZXN1bHQodGVzdF9uYW1lLCByZXN1bHRzX2RpY3QpIGZvciB0ZXN0X25hbWUsIHJlc3VsdHNf
ZGljdCBpbiBqc29uX2RpY3RbJ3Rlc3RzJ10uaXRlbXMoKV0KKyAgICAgICAganNvbl9yZXN1bHRz
ID0gW10KKyAgICAgICAgY2xzLl9wYXJzZV90ZXN0c19zdWJ0cmVlKGpzb25fZGljdFsndGVzdHMn
XSwganNvbl9yZXN1bHRzKQorCiAgICAgICAgICMgRklYTUU6IFdoYXQncyB0aGUgc2hvcnQgc2V4
eSBweXRob24gd2F5IHRvIGZpbHRlciBOb25lPwogICAgICAgICAjIEkgd291bGQgdXNlIFtmb28u
YmFyKCkgZm9yIGZvbyBpbiBmb29zIGlmIGZvby5iYXIoKV0gYnV0IGJhcigpIGlzIGV4cGVuc2l2
ZS4KICAgICAgICAgbm9uX3Bhc3NpbmdfcmVzdWx0cyA9IFtyZXN1bHQudGVzdF9yZXN1bHQoKSBm
b3IgcmVzdWx0IGluIGpzb25fcmVzdWx0cyBpZiBub3QgcmVzdWx0LmRpZF9wYXNzKCldCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmVzdWx0c2pzb25wYXJz
ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmVzdWx0
c2pzb25wYXJzZXJfdW5pdHRlc3QucHkKaW5kZXggNzVkMmNhNjAzNjc3MDZmYjgxMzE3Zjk3ZmVm
MmIwZWNlM2E1N2YxZC4uYzFjY2QzYzIyNjJlZTg5ZTkzNWFkZjU4Y2M1YjYwZjEyZjg0NWVhNyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29u
cGFyc2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9yZXN1bHRzanNvbnBhcnNlcl91bml0dGVzdC5weQpAQCAtMzcsMTQgKzM3LDIyIEBAIGNsYXNz
IFJlc3VsdHNKU09OUGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUaGUgcmVh
bCBmaWxlcyBoYXZlIG5vIHdoaXRlc3BhY2UsIGJ1dCBuZXdsaW5lcyBtYWtlIHRoaXMgbXVjaCBt
b3JlIHJlYWRhYmxlLgogICAgIF9leGFtcGxlX3VuZXhwZWN0ZWRfcmVzdWx0c19qc29uID0gIiIi
QUREX1JFU1VMVFMoewogICAgICJ0ZXN0cyI6IHsKLSAgICAgICAgImZhc3RcL2RvbVwvcHJvdG90
eXBlLWluaGVyaXRhbmNlLmh0bWwiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIs
Ci0gICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCisgICAgICAgICJmYXN0IjogeworICAgICAg
ICAgICAgImRvbSI6IHsKKyAgICAgICAgICAgICAgICAicHJvdG90eXBlLWluaGVyaXRhbmNlLmh0
bWwiOiB7CisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAg
ICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgInN2Z1wvZHluYW1pYy11cGRhdGVzXC9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LWRvbS1zdGREZXZpYXRpb24tYXR0ci5odG1sIjogewotICAgICAgICAg
ICAgImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgImFjdHVhbCI6ICJJTUFHRSIsCi0g
ICAgICAgICAgICAiaGFzX3N0ZGVyciI6IHRydWUKKyAgICAgICAgInN2ZyI6IHsKKyAgICAgICAg
ICAgICJkeW5hbWljLXVwZGF0ZXMiOiB7CisgICAgICAgICAgICAgICAgIlNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQtZG9tLXN0ZERldmlhdGlvbi1hdHRyLmh0bWwiOiB7CisgICAgICAgICAgICAgICAg
ICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAgICAgICAgICAgICAgImFjdHVhbCI6ICJJ
TUFHRSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNfc3RkZXJyIjogdHJ1ZQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCiAgICAgInNraXBwZWQi
OiA0NTAsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRv
ci5weQppbmRleCBkN2VkMmJmNzUxOWQ0YWI0MzRmMjg1ZjUyYjgyMjQyZWJiNjA0YTI5Li4yMzQ2
MTNhNTViZDQ2ZGRkODI1OGE0MTMwZTdlMzg5ZTg0YTQ0NTAyIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNf
Z2VuZXJhdG9yLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3IucHkKQEAgLTg4LDcgKzg4LDcgQEAg
ZGVmIHRlc3RfdGltaW5nc190cmllKHBvcnQsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKToKICAg
ICAgICAgICAgICMgRklYTUU6IEhhbmRsZSB0aGlzIGJldHRlci4gTm9uLWxheW91dCB0ZXN0cyBz
aG91bGRuJ3QgYmUgcmVsYXRpdml6ZWQuCiAgICAgICAgICAgICB0ZXN0ID0gdGVzdF9yZXN1bHQu
ZmlsZW5hbWUKIAotICAgICAgICBwYXJ0cyA9IHRlc3Quc3BsaXQob3Muc2VwKQorICAgICAgICBw
YXJ0cyA9IHRlc3Quc3BsaXQoJy8nKQogICAgICAgICBjdXJyZW50X21hcCA9IHRyaWUKICAgICAg
ICAgZm9yIGksIHBhcnQgaW4gZW51bWVyYXRlKHBhcnRzKToKICAgICAgICAgICAgIGlmIGkgPT0g
KGxlbihwYXJ0cykgLSAxKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5CmluZGV4IGIzMzAyZWMw
M2RlNDNkNjM4NGRiNTVkMzg1Y2U5N2ViNDc0NzJjNDUuLmM0MmUzMjVlODI2YWQ2ZDg3NDk2NjI0
YmQwM2FjZGVhMjEwZjVjNGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weQpAQCAtMTc3LDcg
KzE3NywyNiBAQCBkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywg
cmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnksIHRlcwogICAgICAgICBpZiB0ZXN0X2ZhaWx1
cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2UgaW4gZmFpbHVyZV90eXBlcyBvciB0ZXN0X2ZhaWx1cmVz
LkZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoIGluIGZhaWx1cmVfdHlwZXM6CiAgICAgICAgICAgICB0
ZXN0X2RpY3RbJ2lzX21pc3NpbmdfaW1hZ2UnXSA9IFRydWUKIAotICAgICAgICB0ZXN0c1t0ZXN0
XSA9IHRlc3RfZGljdAorICAgICAgICAjIFN0b3JlIHRlc3QgaGVpcmFyY2hpY2FsbHkgYnkgZGly
ZWN0b3J5LiBlLmcuCisgICAgICAgICMgZm9vL2Jhci9iYXouaHRtbDogdGVzdF9kaWN0CisgICAg
ICAgICMgZm9vL2Jhci9iYXoxLmh0bWw6IHRlc3RfZGljdAorICAgICAgICAjCisgICAgICAgICMg
YmVjb21lcworICAgICAgICAjIGZvbzogeworICAgICAgICAjICAgICBiYXI6IHsKKyAgICAgICAg
IyAgICAgICAgIGJhei5odG1sOiB0ZXN0X2RpY3QsCisgICAgICAgICMgICAgICAgICBiYXoxLmh0
bWw6IHRlc3RfZGljdAorICAgICAgICAjICAgICB9CisgICAgICAgICMgfQorICAgICAgICBwYXJ0
cyA9IHRlc3Quc3BsaXQoJy8nKQorICAgICAgICBjdXJyZW50X21hcCA9IHRlc3RzCisgICAgICAg
IGZvciBpLCBwYXJ0IGluIGVudW1lcmF0ZShwYXJ0cyk6CisgICAgICAgICAgICBpZiBpID09IChs
ZW4ocGFydHMpIC0gMSk6CisgICAgICAgICAgICAgICAgY3VycmVudF9tYXBbcGFydF0gPSB0ZXN0
X2RpY3QKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgcGFydCBub3QgaW4g
Y3VycmVudF9tYXA6CisgICAgICAgICAgICAgICAgY3VycmVudF9tYXBbcGFydF0gPSB7fQorICAg
ICAgICAgICAgY3VycmVudF9tYXAgPSBjdXJyZW50X21hcFtwYXJ0XQogCiAgICAgcmVzdWx0c1sn
dGVzdHMnXSA9IHRlc3RzCiAgICAgcmVzdWx0c1snbnVtX3Bhc3NlcyddID0gbnVtX3Bhc3Nlcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvcHJpbnRpbmcucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9wcmludGluZy5weQppbmRleCBlMTBhZDk5MDdlYjJhYzEzNGM1MTlhNDU5
YTI5ZWRjNjE5YjAzODAxLi44MGU1MTU1ZjkwZGVjNDk3NTJjMjNlZDFhMTg5MzllMTJlMTc5ZDI2
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9wcmludGluZy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZy5weQpAQCAtNDQ1LDYgKzQ0NSw0MSBAQCBjbGFz
cyBQcmludGVyKG9iamVjdCk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9tZXRl
ci5wcm9ncmVzcygiJXMiICUgKHNlbGYuX2N1cnJlbnRfcHJvZ3Jlc3Nfc3RyKSkKIAorICAgIGRl
ZiBfcHJpbnRfdW5leHBlY3RlZF9yZXN1bHRzX3N1YnRyZWUoc2VsZiwgdHJlZSwgcGFzc2VzLCBm
bGFreSwgcmVncmVzc2lvbnMsIHByZWZpeD0iIik6CisgICAgICAgIGZvciBrZXkgaW4gdHJlZToK
KyAgICAgICAgICAgIG5ld19wcmVmaXggPSAocHJlZml4ICsgJy8nICsga2V5KSBpZiBwcmVmaXgg
ZWxzZSBrZXkKKyAgICAgICAgICAgIGlmICdhY3R1YWwnIG5vdCBpbiB0cmVlW2tleV06CisgICAg
ICAgICAgICAgICAgc2VsZi5fcHJpbnRfdW5leHBlY3RlZF9yZXN1bHRzX3N1YnRyZWUodHJlZVtr
ZXldLCBwYXNzZXMsIGZsYWt5LCByZWdyZXNzaW9ucywgbmV3X3ByZWZpeCkKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRyZWVba2V5XQorICAgICAgICAgICAg
ICAgIGFjdHVhbCA9IHJlc3VsdHNbJ2FjdHVhbCddLnNwbGl0KCIgIikKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZCA9IHJlc3VsdHNbJ2V4cGVjdGVkJ10uc3BsaXQoIiAiKQorICAgICAgICAgICAg
ICAgIHRlc3QgPSBuZXdfcHJlZml4CisgICAgICAgICAgICAgICAgaWYgYWN0dWFsID09IFsnUEFT
UyddOgorICAgICAgICAgICAgICAgICAgICBpZiAnQ1JBU0gnIGluIGV4cGVjdGVkOgorICAgICAg
ICAgICAgICAgICAgICAgICAgX2FkZF90b19kaWN0X29mX2xpc3RzKHBhc3NlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgdG8gY3Jhc2gs
IGJ1dCBwYXNzZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3QpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgJ1RJTUVPVVQnIGluIGV4cGVjdGVk
OgorICAgICAgICAgICAgICAgICAgICAgICAgX2FkZF90b19kaWN0X29mX2xpc3RzKHBhc3NlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhwZWN0ZWQg
dG8gdGltZW91dCwgYnV0IHBhc3NlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3QpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgICAgICBfYWRkX3RvX2RpY3Rfb2ZfbGlzdHMocGFzc2VzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeHBlY3RlZCB0byBmYWlsLCBi
dXQgcGFzc2VkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0KQorICAgICAgICAgICAgICAgIGVsaWYgbGVuKGFjdHVhbCkgPiAxOgorICAgICAgICAg
ICAgICAgICAgICAjIFdlIGdyb3VwIGZsYWt5IHRlc3RzIGJ5IHRoZSBmaXJzdCBhY3R1YWwgcmVz
dWx0IHdlIGdvdC4KKyAgICAgICAgICAgICAgICAgICAgX2FkZF90b19kaWN0X29mX2xpc3RzKGZs
YWt5LCBhY3R1YWxbMF0sIHRlc3QpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgX2FkZF90b19kaWN0X29mX2xpc3RzKHJlZ3Jlc3Npb25zLCByZXN1bHRzWydhY3R1
YWwnXSwgdGVzdCkKKworICAgIGRlZiBfcmVzdWx0X2Zvcl90ZXN0KHNlbGYsIHRlc3RzX3RyZWUs
IHRlc3QpOgorICAgICAgICBwYXJ0cyA9IHRlc3Quc3BsaXQoJy8nKQorICAgICAgICBmb3IgcGFy
dCBpbiBwYXJ0czoKKyAgICAgICAgICAgIHRlc3RzX3RyZWUgPSB0ZXN0c190cmVlW3BhcnRdCisg
ICAgICAgIHJldHVybiB0ZXN0c190cmVlCisKICAgICBkZWYgcHJpbnRfdW5leHBlY3RlZF9yZXN1
bHRzKHNlbGYsIHVuZXhwZWN0ZWRfcmVzdWx0cyk6CiAgICAgICAgICIiIlByaW50cyBhIGxpc3Qg
b2YgdGhlIHVuZXhwZWN0ZWQgcmVzdWx0cyB0byB0aGUgYnVpbGRib3Qgc3RyZWFtLiIiIgogICAg
ICAgICBpZiBzZWxmLmRpc2FibGVkKCd1bmV4cGVjdGVkLXJlc3VsdHMnKToKQEAgLTQ1MywyOCAr
NDg4LDcgQEAgY2xhc3MgUHJpbnRlcihvYmplY3QpOgogICAgICAgICBwYXNzZXMgPSB7fQogICAg
ICAgICBmbGFreSA9IHt9CiAgICAgICAgIHJlZ3Jlc3Npb25zID0ge30KLQotICAgICAgICBmb3Ig
dGVzdCwgcmVzdWx0cyBpbiB1bmV4cGVjdGVkX3Jlc3VsdHNbJ3Rlc3RzJ10uaXRlcml0ZW1zKCk6
Ci0gICAgICAgICAgICBhY3R1YWwgPSByZXN1bHRzWydhY3R1YWwnXS5zcGxpdCgiICIpCi0gICAg
ICAgICAgICBleHBlY3RlZCA9IHJlc3VsdHNbJ2V4cGVjdGVkJ10uc3BsaXQoIiAiKQotICAgICAg
ICAgICAgaWYgYWN0dWFsID09IFsnUEFTUyddOgotICAgICAgICAgICAgICAgIGlmICdDUkFTSCcg
aW4gZXhwZWN0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIF9hZGRfdG9fZGljdF9vZl9saXN0cyhw
YXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhwZWN0
ZWQgdG8gY3Jhc2gsIGJ1dCBwYXNzZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdCkKLSAgICAgICAgICAgICAgICBlbGlmICdUSU1FT1VUJyBpbiBleHBl
Y3RlZDoKLSAgICAgICAgICAgICAgICAgICAgX2FkZF90b19kaWN0X29mX2xpc3RzKHBhc3NlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeHBlY3RlZCB0byB0
aW1lb3V0LCBidXQgcGFzc2VkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
IF9hZGRfdG9fZGljdF9vZl9saXN0cyhwYXNzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHBhc3NlZCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0KQotICAgICAgICAgICAgZWxp
ZiBsZW4oYWN0dWFsKSA+IDE6Ci0gICAgICAgICAgICAgICAgIyBXZSBncm91cCBmbGFreSB0ZXN0
cyBieSB0aGUgZmlyc3QgYWN0dWFsIHJlc3VsdCB3ZSBnb3QuCi0gICAgICAgICAgICAgICAgX2Fk
ZF90b19kaWN0X29mX2xpc3RzKGZsYWt5LCBhY3R1YWxbMF0sIHRlc3QpCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIF9hZGRfdG9fZGljdF9vZl9saXN0cyhyZWdyZXNzaW9ucywg
cmVzdWx0c1snYWN0dWFsJ10sIHRlc3QpCisgICAgICAgIHNlbGYuX3ByaW50X3VuZXhwZWN0ZWRf
cmVzdWx0c19zdWJ0cmVlKHVuZXhwZWN0ZWRfcmVzdWx0c1sndGVzdHMnXSwgcGFzc2VzLCBmbGFr
eSwgcmVncmVzc2lvbnMpCiAKICAgICAgICAgaWYgbGVuKHBhc3Nlcykgb3IgbGVuKGZsYWt5KSBv
ciBsZW4ocmVncmVzc2lvbnMpOgogICAgICAgICAgICAgc2VsZi5fYnVpbGRib3Rfc3RyZWFtLndy
aXRlKCJcbiIpCkBAIC00OTcsNyArNTExLDcgQEAgY2xhc3MgUHJpbnRlcihvYmplY3QpOgogICAg
ICAgICAgICAgICAgIHRlc3RzLnNvcnQoKQogCiAgICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4g
dGVzdHM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVuZXhwZWN0ZWRfcmVzdWx0c1sn
dGVzdHMnXVt0ZXN0XQorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9yZXN1bHRf
Zm9yX3Rlc3QodW5leHBlY3RlZF9yZXN1bHRzWyd0ZXN0cyddLCB0ZXN0KQogICAgICAgICAgICAg
ICAgICAgICBhY3R1YWwgPSByZXN1bHRbJ2FjdHVhbCddLnNwbGl0KCIgIikKICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWQgPSByZXN1bHRbJ2V4cGVjdGVkJ10uc3BsaXQoIiAiKQogICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTlNb
a2V5Lmxvd2VyKCldCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCA0NWM1ZmNhZjQ4ZWEwNDMxNzBmMzU0MTg5
NzQwNjRjNWZkODA5OWRjLi5mZWY4NDExMDhjNTA0NzNkYjBlNmNkMmE5ZWU1NmI3NTVjZDNjMjhh
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHMucHkKQEAgLTE2OSw2ICsxNjksMTUgQEAgZGVmIF9zZXRfdXBfZGVyaXZl
ZF9vcHRpb25zKHBvcnRfb2JqLCBvcHRpb25zKToKICAgICByZXR1cm4gd2FybmluZ3MKIAogCitk
ZWYgX3VuZXhwZWN0ZWRfcmVzdWx0c190ZXN0X25hbWVzX2Zyb21fdHJlZSh0cmVlLCBuYW1lcywg
cHJlZml4PSIiKToKKyAgICBmb3Iga2V5IGluIHRyZWU6CisgICAgICAgIG5ld19wcmVmaXggPSAo
cHJlZml4ICsgJy8nICsga2V5KSBpZiBwcmVmaXggZWxzZSBrZXkKKyAgICAgICAgaWYgJ2FjdHVh
bCcgbm90IGluIHRyZWVba2V5XToKKyAgICAgICAgICAgIF91bmV4cGVjdGVkX3Jlc3VsdHNfdGVz
dF9uYW1lc19mcm9tX3RyZWUodHJlZVtrZXldLCBuYW1lcywgbmV3X3ByZWZpeCkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIG5hbWVzLmFwcGVuZChuZXdfcHJlZml4KQorCisKIGRlZiBfZ2F0
aGVyX3VuZXhwZWN0ZWRfcmVzdWx0cyhwb3J0KToKICAgICAiIiJSZXR1cm5zIHRoZSB1bmV4cGVj
dGVkIHJlc3VsdHMgZnJvbSB0aGUgcHJldmlvdXMgcnVuLCBpZiBhbnkuIiIiCiAgICAgZmlsZXN5
c3RlbSA9IHBvcnQuX2ZpbGVzeXN0ZW0KQEAgLTE3OSw3ICsxODgsNyBAQCBkZWYgX2dhdGhlcl91
bmV4cGVjdGVkX3Jlc3VsdHMocG9ydCk6CiAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0c19maWxl
bmFtZSA9IGZpbGVzeXN0ZW0uam9pbihyZXN1bHRzX2RpcmVjdG9yeSwgInVuZXhwZWN0ZWRfcmVz
dWx0cy5qc29uIikKICAgICAgICAgaWYgZmlsZXN5c3RlbS5leGlzdHModW5leHBlY3RlZF9yZXN1
bHRzX2ZpbGVuYW1lKToKICAgICAgICAgICAgIHJlc3VsdHMgPSBqc29uX3Jlc3VsdHNfZ2VuZXJh
dG9yLmxvYWRfanNvbihmaWxlc3lzdGVtLCB1bmV4cGVjdGVkX3Jlc3VsdHNfZmlsZW5hbWUpCi0g
ICAgICAgICAgICBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0cyA9IHJlc3VsdHNbJ3Rlc3RzJ10ua2V5
cygpCisgICAgICAgICAgICBfdW5leHBlY3RlZF9yZXN1bHRzX3Rlc3RfbmFtZXNfZnJvbV90cmVl
KHJlc3VsdHNbJ3Rlc3RzJ10sIGxhc3RfdW5leHBlY3RlZF9yZXN1bHRzKQogICAgIHJldHVybiBs
YXN0X3VuZXhwZWN0ZWRfcmVzdWx0cwogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVzZXJ2ZXIucHkKaW5kZXggYzc5ZDc5MDAy
ZjdmMDllOGFhMmI0OWRhZGRjMTQ3ZjM4Y2Y2MjY5MC4uNDI3MTZkZmRiMTRjYmE5OTk1ZTNlYmRi
YmQ4NmY2ZDk2YzhmOGUyNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL3JlYmFzZWxpbmVzZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVzZXJ2ZXIucHkKQEAgLTM5Nyw2ICszOTcsMTcgQEAg
Y2xhc3MgUmViYXNlbGluZVNlcnZlcihBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAg
ICAgIF0KICAgICAgICAgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQuX19pbml0X18oc2VsZiwg
b3B0aW9ucz1vcHRpb25zKQogCisgICAgZGVmIF9nYXRoZXJfY3VycmVudF9iYXNlbGluZXMoc2Vs
ZiwgdHJlZSwgdGVzdF9jb25maWcsIG5ld190ZXN0c19zdWJ0cmVlLCBwcmVmaXg9IiIpOgorICAg
ICAgICBmb3Iga2V5IGluIHRyZWU6CisgICAgICAgICAgICBuZXdfcHJlZml4ID0gKHByZWZpeCAr
ICcvJyArIGtleSkgaWYgcHJlZml4IGVsc2Uga2V5CisgICAgICAgICAgICBpZiAnYWN0dWFsJyBu
b3QgaW4gdHJlZVtrZXldOgorICAgICAgICAgICAgICAgIHNlbGYuX2dhdGhlcl9jdXJyZW50X2Jh
c2VsaW5lcyh0cmVlW2tleV0sIHRlc3RfY29uZmlnLCBuZXdfdGVzdHNfc3VidHJlZSwgbmV3X3By
ZWZpeCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGVzdF9kaWN0ID0gdHJl
ZVtrZXldCisgICAgICAgICAgICAgICAgdGVzdF9kaWN0WydzdGF0ZSddID0gU1RBVEVfTkVFRFNf
UkVCQVNFTElORQorICAgICAgICAgICAgICAgIHRlc3RfZGljdFsnYmFzZWxpbmVzJ10gPSBfZ2V0
X3Rlc3RfYmFzZWxpbmVzKG5ld19wcmVmaXgsIHRlc3RfY29uZmlnKQorICAgICAgICAgICAgICAg
IG5ld190ZXN0c19zdWJ0cmVlW25ld19wcmVmaXhdID0gdGVzdF9kaWN0CisKICAgICBkZWYgZXhl
Y3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAgcmVzdWx0c19kaXJlY3Rv
cnkgPSBhcmdzWzBdCiAgICAgICAgIGZpbGVzeXN0ZW0gPSBzeXN0ZW0uZmlsZXN5c3RlbS5GaWxl
U3lzdGVtKCkKQEAgLTQzMSwxMCArNDQyLDEyIEBAIGNsYXNzIFJlYmFzZWxpbmVTZXJ2ZXIoQWJz
dHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgICAgICAgICAgc2NtKQogCiAgICAgICAgIHBy
aW50ICdHYXRoZXJpbmcgY3VycmVudCBiYXNlbGluZXMuLi4nCi0gICAgICAgIGZvciB0ZXN0X2Zp
bGUsIHRlc3RfanNvbiBpbiByZXN1bHRzX2pzb25bJ3Rlc3RzJ10uaXRlbXMoKToKLSAgICAgICAg
ICAgIHRlc3RfanNvblsnc3RhdGUnXSA9IFNUQVRFX05FRURTX1JFQkFTRUxJTkUKLSAgICAgICAg
ICAgIHRlc3RfcGF0aCA9IGZpbGVzeXN0ZW0uam9pbihsYXlvdXRfdGVzdHNfZGlyZWN0b3J5LCB0
ZXN0X2ZpbGUpCi0gICAgICAgICAgICB0ZXN0X2pzb25bJ2Jhc2VsaW5lcyddID0gX2dldF90ZXN0
X2Jhc2VsaW5lcyh0ZXN0X2ZpbGUsIHRlc3RfY29uZmlnKQorICAgICAgICAjIFJlYmFzZWxpbmUg
c2VydmVyIGFuZCBpdCdzIGFzc29jaWF0ZWQgSmF2YVNjcmlwdCBleHBlY3RlZCB0aGUgdGVzdHMg
c3VidHJlZSB0bworICAgICAgICAjIGJlIGtleS12YWx1ZSBwYWlycyBpbnN0ZWFkIG9mIGhlaXJh
cmNoaWNhbC4KKyAgICAgICAgIyBGSVhNRTogbWFrZSB0aGUgcmViYXNlbGluZSBzZXJ2ZXIgdXNl
IHRoZSBoZWlyYXJjaGljYWwgdHJlZS4KKyAgICAgICAgbmV3X3Rlc3RzX3N1YnRyZWUgPSB7fQor
ICAgICAgICBzZWxmLl9nYXRoZXJfY3VycmVudF9iYXNlbGluZXMocmVzdWx0c19qc29uWyd0ZXN0
cyddLCB0ZXN0X2NvbmZpZywgbmV3X3Rlc3RzX3N1YnRyZWUpCisgICAgICAgIHJlc3VsdHNfanNv
blsndGVzdHMnXSA9IG5ld190ZXN0c19zdWJ0cmVlCiAKICAgICAgICAgc2VydmVyX3VybCA9ICJo
dHRwOi8vbG9jYWxob3N0OiVkLyIgJSBvcHRpb25zLmh0dHBkX3BvcnQKICAgICAgICAgcHJpbnQg
IlN0YXJ0aW5nIHNlcnZlciBhdCAlcyIgJSBzZXJ2ZXJfdXJsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91571</attachid>
            <date>2011-04-28 15:48:35 -0700</date>
            <delta_ts>2011-04-28 16:07:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59736-20110428154834.patch</filename>
            <type>text/plain</type>
            <size>34966</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUyNTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMzZiZjY3YTg3ODE1MDM4ZDUwZjBj
OGM3ZTdjZDAwNjBhNTlhMjljLi41N2I2YWMxYWNlNDBiNjZiYjZmMzBjOTQ2MGRmNjYyYjkwYzQ3
ZGYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDQtMjggIE9qYW4gVmFmYWkgIDxvamFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICB1c2UgYSBoaWVyYXJjaGljYWwgZGF0YSBzdHJ1Y3R1cmUgdG8gc3RvcmUgcmVzdWx0
cyBqc29uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTczNgorCisgICAgICAgICogZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9yZXN1bHRzLXRlc3QuanM6
CisgICAgICAgICogZmFzdC9oYXJuZXNzL3Jlc3VsdHMuaHRtbDoKKwogMjAxMS0wNC0yOCAgTWFy
ayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
VG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJj
ZXMvcmVzdWx0cy10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9y
ZXN1bHRzLXRlc3QuanMKaW5kZXggYTI3YjlhNjI0ZGZjZGJhOGY0YmIzN2FkMjg4YWRkN2E3ZWE5
Yzk4Ny4uNTg3MzViMGM3M2ZhYTVlY2E1YzA0YWMwMjYwNjkzZDZjMGVhNmNjNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9yZXN1bHRzLXRlc3QuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9yZXN1bHRzLXRlc3QuanMKQEAg
LTExMywxNyArMTEzLDE5IEBAIGZ1bmN0aW9uIHJ1blNpbmdsZVJvd1Rlc3QocmVzdWx0cywgaXNF
eHBlY3RlZCwgdGV4dFJlc3VsdHMsIGltYWdlUmVzdWx0cykKIGZ1bmN0aW9uIHJ1blRlc3RzKCkK
IHsKICAgICB2YXIgcmVzdWx0cyA9IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1sn
Zm9vL2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MnLCAnVEVYVCcpOworICAgIHZh
ciBzdWJ0cmVlID0gcmVzdWx0cy50ZXN0c1snZm9vJ10gPSB7fQorICAgIHN1YnRyZWVbJ2Jhci5o
dG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MnLCAnVEVYVCcpOwogICAgIHJ1blRlc3QocmVz
dWx0cywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydFRydWUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2ltYWdlLXJlc3VsdHMtaGVhZGVyJykudGV4dENvbnRlbnQgPT0gJycpOwogICAgICAg
ICBhc3NlcnRUcnVlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0LXJlc3VsdHMtaGVhZGVy
JykudGV4dENvbnRlbnQgIT0gJycpOwogICAgIH0pOwogICAgIAogICAgIHJlc3VsdHMgPSBtb2Nr
UmVzdWx0cygpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXIuaHRtbCddID0gbW9ja0V4cGVj
dGF0aW9uKCdURVhUJywgJ01JU1NJTkcnKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyLmh0
bWwnXS5pc19taXNzaW5nX3RleHQgPSB0cnVlOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXIu
aHRtbCddLmlzX21pc3NpbmdfYXVkaW8gPSB0cnVlOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9i
YXIuaHRtbCddLmlzX21pc3NpbmdfaW1hZ2UgPSB0cnVlOworICAgIHZhciBzdWJ0cmVlID0gcmVz
dWx0cy50ZXN0c1snZm9vJ10gPSB7fQorICAgIHN1YnRyZWVbJ2Jhci5odG1sJ10gPSBtb2NrRXhw
ZWN0YXRpb24oJ1RFWFQnLCAnTUlTU0lORycpOworICAgIHN1YnRyZWVbJ2Jhci5odG1sJ10uaXNf
bWlzc2luZ190ZXh0ID0gdHJ1ZTsKKyAgICBzdWJ0cmVlWydiYXIuaHRtbCddLmlzX21pc3Npbmdf
YXVkaW8gPSB0cnVlOworICAgIHN1YnRyZWVbJ2Jhci5odG1sJ10uaXNfbWlzc2luZ19pbWFnZSA9
IHRydWU7CiAgICAgcnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0
VHJ1ZSghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMtdGFibGUnKSk7CiAgICAgICAg
IGFzc2VydFRydWUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI25ldy10ZXN0cy10YWJsZSAudGVz
dC1saW5rJykudGV4dENvbnRlbnQgPT0gJ2Zvby9iYXIuaHRtbCcpOwpAQCAtMTMzLDE3ICsxMzUs
MTkgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIH0pOwogCiAgICAgcmVzdWx0cyA9IG1vY2tS
ZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0
YXRpb24oJ1BBU1MnLCAnVEVYVCcpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXIuaHRtbCdd
Lmhhc19zdGRlcnIgPSB0cnVlOworICAgIHZhciBzdWJ0cmVlID0gcmVzdWx0cy50ZXN0c1snZm9v
J10gPSB7fQorICAgIHN1YnRyZWVbJ2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1Mn
LCAnVEVYVCcpOworICAgIHN1YnRyZWVbJ2Jhci5odG1sJ10uaGFzX3N0ZGVyciA9IHRydWU7CiAg
ICAgcnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0VHJ1ZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cy10YWJsZScpKTsKICAgICAgICAgYXNzZXJ0VHJ1
ZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc3RkZXJyLXRhYmxlIC5yZXN1bHQtbGluaycpLnRl
eHRDb250ZW50ID09ICdzdGRlcnInKTsKICAgICB9KTsKIAogICAgIHJlc3VsdHMgPSBtb2NrUmVz
dWx0cygpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXIuaHRtbCddID0gbW9ja0V4cGVjdGF0
aW9uKCdURVhUJywgJ1BBU1MnKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyMS5odG1sJ10g
PSBtb2NrRXhwZWN0YXRpb24oJ0NSQVNIJywgJ1BBU1MnKTsKLSAgICByZXN1bHRzLnRlc3RzWydm
b28vYmFyMi5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ0lNQUdFJywgJ1BBU1MnKTsKKyAgICB2
YXIgc3VidHJlZSA9IHJlc3VsdHMudGVzdHNbJ2ZvbyddID0ge30KKyAgICBzdWJ0cmVlWydiYXIu
aHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ1BBU1MnKTsKKyAgICBzdWJ0cmVlWydi
YXIxLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignQ1JBU0gnLCAnUEFTUycpOworICAgIHN1YnRy
ZWVbJ2JhcjIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdJTUFHRScsICdQQVNTJyk7CiAgICAg
cnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0VHJ1ZSghZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMtdGFibGUnKSk7CiAKQEAgLTE1OSwxMiArMTYzLDEz
IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB9KTsKIAogICAgIHJlc3VsdHMgPSBtb2NrUmVz
dWx0cygpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXIuaHRtbCddID0gbW9ja0V4cGVjdGF0
aW9uKCdURVhUJywgJ1BBU1MnKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyLW1pc3Npbmcu
aHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ01JU1NJTkcnKTsKLSAgICByZXN1bHRz
LnRlc3RzWydmb28vYmFyLW1pc3NpbmcuaHRtbCddLmlzX21pc3NpbmdfdGV4dCA9IHRydWU7Ci0g
ICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci1zdGRlcnIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9u
KCdQQVNTJywgJ1RFWFQnKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyLXN0ZGVyci5odG1s
J10uaGFzX3N0ZGVyciA9IHRydWU7Ci0gICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci11bmV4cGVj
dGVkLXBhc3MuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ1BBU1MnKTsKKyAgICB2
YXIgc3VidHJlZSA9IHJlc3VsdHMudGVzdHNbJ2ZvbyddID0ge30KKyAgICBzdWJ0cmVlWydiYXIu
aHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ1BBU1MnKTsKKyAgICBzdWJ0cmVlWydi
YXItbWlzc2luZy5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnTUlTU0lORycpOwor
ICAgIHN1YnRyZWVbJ2Jhci1taXNzaW5nLmh0bWwnXS5pc19taXNzaW5nX3RleHQgPSB0cnVlOwor
ICAgIHN1YnRyZWVbJ2Jhci1zdGRlcnIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTJywg
J1RFWFQnKTsKKyAgICBzdWJ0cmVlWydiYXItc3RkZXJyLmh0bWwnXS5oYXNfc3RkZXJyID0gdHJ1
ZTsKKyAgICBzdWJ0cmVlWydiYXItdW5leHBlY3RlZC1wYXNzLmh0bWwnXSA9IG1vY2tFeHBlY3Rh
dGlvbignVEVYVCcsICdQQVNTJyk7CiAgICAgcnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigpIHsK
ICAgICAgICAgYXNzZXJ0VHJ1ZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0Ym9keSB0cicp
Lmxlbmd0aCA9PSA1KTsKICAgICAgICAgZXhwYW5kQWxsRXhwZWN0YXRpb25zKCk7CkBAIC0xOTEs
OCArMTk2LDkgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIH0pOwogCiAgICAgcmVzdWx0cyA9
IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci5odG1sJ10gPSBtb2Nr
RXhwZWN0YXRpb24oJ1BBU1MnLCAnVEVYVCcpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXIt
ZXhwZWN0ZWQtZmFpbC5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnVEVYVCcpOwor
ICAgIHZhciBzdWJ0cmVlID0gcmVzdWx0cy50ZXN0c1snZm9vJ10gPSB7fQorICAgIHN1YnRyZWVb
J2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MnLCAnVEVYVCcpOworICAgIHN1YnRy
ZWVbJ2Jhci1leHBlY3RlZC1mYWlsLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignVEVYVCcsICdU
RVhUJyk7CiAgICAgcnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigpIHsKICAgICAgICAgYXNzZXJ0
VHJ1ZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZXhwZWN0ZWQnKS5sZW5ndGggPT0gMSk7
CiAgICAgICAgIGFzc2VydFRydWUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmV4cGVjdGVkIC50
ZXN0LWxpbmsnKS50ZXh0Q29udGVudCA9PSAnZm9vL2Jhci1leHBlY3RlZC1mYWlsLmh0bWwnKTsK
QEAgLTIxMCwzNCArMjE2LDM2IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICAgICAgYXNzZXJ0
VHJ1ZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucmVzdWx0cy1yb3cnKS5sZW5ndGggPT0g
Mik7CiAgICAgfSk7CiAgIAotICAgIHJ1bkRlZmF1bHRTaW5nbGVSb3dUZXN0KCdmb28vYmFyLXNr
aXAuaHRtbCcsICdURVhUJywgJ1NLSVAnLCB0cnVlLCAnJywgJycpOwotICAgIHJ1bkRlZmF1bHRT
aW5nbGVSb3dUZXN0KCdmb28vYmFyLWZsYWt5LWZhaWwuaHRtbCcsICdQQVNTIEZBSUwnLCAnVEVY
VCcsIHRydWUsICdleHBlY3RlZCBhY3R1YWwgZGlmZiAnLCAnJyk7Ci0gICAgcnVuRGVmYXVsdFNp
bmdsZVJvd1Rlc3QoJ2Zvby9iYXItZmxha3ktZmFpbC11bmV4cGVjdGVkLmh0bWwnLCAnUEFTUyBU
RVhUJywgJ0lNQUdFJywgZmFsc2UsICcnLCAnZXhwZWN0ZWQgYWN0dWFsIGRpZmYgJyk7Ci0gICAg
cnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Zvby9iYXItY3Jhc2guaHRtbCcsICdURVhUJywgJ0NS
QVNIJywgZmFsc2UsICdzdGFjayAnLCAnJyk7Ci0gICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3Qo
J2Zvby9iYXItYXVkaW8uaHRtbCcsICdURVhUJywgJ0FVRElPJywgZmFsc2UsICdleHBlY3RlZCBh
Y3R1YWwgJywgJycpOwotICAgIHJ1bkRlZmF1bHRTaW5nbGVSb3dUZXN0KCdmb28vYmFyLXRpbWVv
dXQuaHRtbCcsICdURVhUJywgJ1RJTUVPVVQnLCBmYWxzZSwgJ2V4cGVjdGVkIGFjdHVhbCBkaWZm
ICcsICcnKTsKLSAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnZm9vL2Jhci1pbWFnZS5odG1s
JywgJ1RFWFQnLCAnSU1BR0UnLCBmYWxzZSwgJycsICdleHBlY3RlZCBhY3R1YWwgZGlmZiAnKTsK
LSAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnZm9vL2Jhci1pbWFnZS1wbHVzLXRleHQuaHRt
bCcsICdURVhUJywgJ0lNQUdFK1RFWFQnLCBmYWxzZSwgJ2V4cGVjdGVkIGFjdHVhbCBkaWZmICcs
ICdleHBlY3RlZCBhY3R1YWwgZGlmZiAnKTsKKyAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgn
YmFyLXNraXAuaHRtbCcsICdURVhUJywgJ1NLSVAnLCB0cnVlLCAnJywgJycpOworICAgIHJ1bkRl
ZmF1bHRTaW5nbGVSb3dUZXN0KCdiYXItZmxha3ktZmFpbC5odG1sJywgJ1BBU1MgRkFJTCcsICdU
RVhUJywgdHJ1ZSwgJ2V4cGVjdGVkIGFjdHVhbCBkaWZmICcsICcnKTsKKyAgICBydW5EZWZhdWx0
U2luZ2xlUm93VGVzdCgnYmFyLWZsYWt5LWZhaWwtdW5leHBlY3RlZC5odG1sJywgJ1BBU1MgVEVY
VCcsICdJTUFHRScsIGZhbHNlLCAnJywgJ2V4cGVjdGVkIGFjdHVhbCBkaWZmICcpOworICAgIHJ1
bkRlZmF1bHRTaW5nbGVSb3dUZXN0KCdiYXItY3Jhc2guaHRtbCcsICdURVhUJywgJ0NSQVNIJywg
ZmFsc2UsICdzdGFjayAnLCAnJyk7CisgICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci1h
dWRpby5odG1sJywgJ1RFWFQnLCAnQVVESU8nLCBmYWxzZSwgJ2V4cGVjdGVkIGFjdHVhbCAnLCAn
Jyk7CisgICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci10aW1lb3V0Lmh0bWwnLCAnVEVY
VCcsICdUSU1FT1VUJywgZmFsc2UsICdleHBlY3RlZCBhY3R1YWwgZGlmZiAnLCAnJyk7CisgICAg
cnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci1pbWFnZS5odG1sJywgJ1RFWFQnLCAnSU1BR0Un
LCBmYWxzZSwgJycsICdleHBlY3RlZCBhY3R1YWwgZGlmZiAnKTsKKyAgICBydW5EZWZhdWx0U2lu
Z2xlUm93VGVzdCgnYmFyLWltYWdlLXBsdXMtdGV4dC5odG1sJywgJ1RFWFQnLCAnSU1BR0UrVEVY
VCcsIGZhbHNlLCAnZXhwZWN0ZWQgYWN0dWFsIGRpZmYgJywgJ2V4cGVjdGVkIGFjdHVhbCBkaWZm
ICcpOwogCiAgICAgcmVzdWx0cyA9IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1sn
Zm9vL2Jhci1yZWZ0ZXN0Lmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUycsICdJTUFHRScp
OwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXItcmVmdGVzdC5odG1sJ10uaXNfcmVmdGVzdCA9
IHRydWU7CisgICAgcmVzdWx0cy50ZXN0c1snYmFyLXJlZnRlc3QuaHRtbCddID0gbW9ja0V4cGVj
dGF0aW9uKCdQQVNTJywgJ0lNQUdFJyk7CisgICAgcmVzdWx0cy50ZXN0c1snYmFyLXJlZnRlc3Qu
aHRtbCddLmlzX3JlZnRlc3QgPSB0cnVlOwogICAgIHJ1blNpbmdsZVJvd1Rlc3QocmVzdWx0cywg
ZmFsc2UsICcnLCAncmVmIGh0bWwgZXhwZWN0ZWQgYWN0dWFsIGRpZmYgJyk7CiAKICAgICByZXN1
bHRzID0gbW9ja1Jlc3VsdHMoKTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyLXJlZnRlc3Qt
bWlzbWF0Y2guaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTJywgJ0lNQUdFJyk7Ci0gICAg
cmVzdWx0cy50ZXN0c1snZm9vL2Jhci1yZWZ0ZXN0LW1pc21hdGNoLmh0bWwnXS5pc19taXNtYXRj
aF9yZWZ0ZXN0ID0gdHJ1ZTsKKyAgICByZXN1bHRzLnRlc3RzWydiYXItcmVmdGVzdC1taXNtYXRj
aC5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MnLCAnSU1BR0UnKTsKKyAgICByZXN1bHRz
LnRlc3RzWydiYXItcmVmdGVzdC1taXNtYXRjaC5odG1sJ10uaXNfbWlzbWF0Y2hfcmVmdGVzdCA9
IHRydWU7CiAgICAgcnVuU2luZ2xlUm93VGVzdChyZXN1bHRzLCBmYWxzZSwgJycsICdyZWYgbWlz
bWF0Y2ggaHRtbCBhY3R1YWwgJyk7CiAKICAgICByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKLSAg
ICByZXN1bHRzLnRlc3RzWydmb28vYmFyLWZsYWt5LXBhc3MuaHRtbCddID0gbW9ja0V4cGVjdGF0
aW9uKCdQQVNTIEZBSUwnLCAnUEFTUycpOworICAgIHZhciBzdWJ0cmVlID0gcmVzdWx0cy50ZXN0
c1snZm9vJ10gPSB7fQorICAgIHN1YnRyZWVbJ2Jhci1mbGFreS1wYXNzLmh0bWwnXSA9IG1vY2tF
eHBlY3RhdGlvbignUEFTUyBGQUlMJywgJ1BBU1MnKTsKICAgICBydW5UZXN0KHJlc3VsdHMsIGZ1
bmN0aW9uKCkgewogICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGEgUEFTUyBGQUlMIHRlc3QgdGhh
dCBwYXNzZXMgZ28gaW4gdGhlIHVuZXhwZWN0ZWQgcGFzc2VzIHRhYmxlPwogICAgICAgICBhc3Nl
cnRUcnVlKGRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQuaW5kZXhPZignZm9vL2Jhci1mbGFreS1w
YXNzLmh0bWwnKSA9PSAtMSk7CiAgICAgfSk7CiAKICAgICByZXN1bHRzID0gbW9ja1Jlc3VsdHMo
KTsKLSAgICByZXN1bHRzLnRlc3RzWydmb28vYmFyLXJlYWxseS1sb25nLXBhdGgtdGhhdC1zaG91
bGQtcHJvYmFibHktd3JhcC1iZWNhdXNlLW90aGVyd2lzZS10aGUtdGFibGUtd2lsbC1iZS10b28t
d2lkZS5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MnLCAnVEVYVCcpOworICAgIHZhciBz
dWJ0cmVlID0gcmVzdWx0cy50ZXN0c1snZm9vJ10gPSB7fQorICAgIHN1YnRyZWVbJ2Jhci1yZWFs
bHktbG9uZy1wYXRoLXRoYXQtc2hvdWxkLXByb2JhYmx5LXdyYXAtYmVjYXVzZS1vdGhlcndpc2Ut
dGhlLXRhYmxlLXdpbGwtYmUtdG9vLXdpZGUuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNT
JywgJ1RFWFQnKTsKICAgICBydW5UZXN0KHJlc3VsdHMsIGZ1bmN0aW9uKCkgewogICAgICAgICBk
b2N1bWVudC5ib2R5LnN0eWxlLndpZHRoID0gJzgwMHB4JzsKICAgICAgICAgdmFyIGxpbmtzID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGJvZHkgYScpOwpAQCAtMjQ3LDcgKzI1NSw4IEBA
IGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB9KTsKIAogICAgIHJlc3VsdHMgPSBtb2NrUmVzdWx0
cygpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9u
KCdURVhUJywgJ1RFWFQnKTsKKyAgICB2YXIgc3VidHJlZSA9IHJlc3VsdHMudGVzdHNbJ2Zvbydd
ID0ge30KKyAgICBzdWJ0cmVlWydiYXIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywg
J1RFWFQnKTsKICAgICByZXN1bHRzLnVzZXNfZXhwZWN0YXRpb25zX2ZpbGUgPSBmYWxzZTsKICAg
ICBydW5UZXN0KHJlc3VsdHMsIGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRUcnVlKGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3Rib2R5IHRkJykubGVuZ3RoID09IDQpOwpAQCAtMjU1LDcg
KzI2NCw4IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB9KTsKIAogICAgIHJlc3VsdHMgPSBt
b2NrUmVzdWx0cygpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9iYXIuaHRtbCddID0gbW9ja0V4
cGVjdGF0aW9uKCdURVhUJywgJ1RFWFQnKTsKKyAgICB2YXIgc3VidHJlZSA9IHJlc3VsdHMudGVz
dHNbJ2ZvbyddID0ge30KKyAgICBzdWJ0cmVlWydiYXIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9u
KCdURVhUJywgJ1RFWFQnKTsKICAgICByZXN1bHRzLmhhc19wcmV0dHlfcGF0Y2ggPSB0cnVlOwog
ICAgIHJ1blRlc3QocmVzdWx0cywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydFRydWUoZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigndGJvZHkgdGQ6bnRoLWNoaWxkKDIpJykudGV4dENvbnRlbnQu
aW5kZXhPZigncHJldHR5IGRpZmYnKSAhPSAtMSk7CkBAIC0yNjMsNyArMjczLDggQEAgZnVuY3Rp
b24gcnVuVGVzdHMoKQogICAgIH0pOwogCiAgICAgcmVzdWx0cyA9IG1vY2tSZXN1bHRzKCk7Ci0g
ICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQn
LCAnVEVYVCcpOworICAgIHZhciBzdWJ0cmVlID0gcmVzdWx0cy50ZXN0c1snZm9vJ10gPSB7fQor
ICAgIHN1YnRyZWVbJ2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnVEVYVCcp
OwogICAgIHJlc3VsdHMuaGFzX3dkaWZmID0gdHJ1ZTsKICAgICBydW5UZXN0KHJlc3VsdHMsIGZ1
bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3Ri
b2R5IHRkOm50aC1jaGlsZCgyKScpLnRleHRDb250ZW50LmluZGV4T2YoJ3dkaWZmJykgIT0gLTEp
OwpAQCAtMjcxLDExICsyODIsMTIgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIH0pOwogICAg
IAogICAgIHJlc3VsdHMgPSBtb2NrUmVzdWx0cygpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Zvby9i
YXIuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ1BBU1MnKTsKLSAgICByZXN1bHRz
LnRlc3RzWydmb28vYmFyLTEuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ0NSQVNI
Jyk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci01Lmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlv
bignVEVYVCcsICdJTUFHRStURVhUJyk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZm9vL2Jhci0zLmh0
bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUycsICdURVhUJyk7Ci0gICAgcmVzdWx0cy50ZXN0
c1snZm9vL2Jhci0yLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUycsICdJTUFHRScpOwor
ICAgIHZhciBzdWJ0cmVlID0gcmVzdWx0cy50ZXN0c1snZm9vJ10gPSB7fQorICAgIHN1YnRyZWVb
J2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnUEFTUycpOworICAgIHN1YnRy
ZWVbJ2Jhci0xLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignVEVYVCcsICdDUkFTSCcpOworICAg
IHN1YnRyZWVbJ2Jhci01Lmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignVEVYVCcsICdJTUFHRStU
RVhUJyk7CisgICAgc3VidHJlZVsnYmFyLTMuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNT
JywgJ1RFWFQnKTsKKyAgICBzdWJ0cmVlWydiYXItMi5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24o
J1BBU1MnLCAnSU1BR0UnKTsKICAgICBydW5UZXN0KHJlc3VsdHMsIGZ1bmN0aW9uKCkgewogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBqdXN0IGVuc3VyZXMgd2UgZG9uJ3QgZ2V0IGEgSlMgZXJyb3Iu
CiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBzb3J0IGlzIGNvcnJlY3QgYW5kIHRoYXQgaW5s
aW5lIGV4cGFuZGVkIGV4cGVjdGF0aW9ucwpAQCAtMjk1LDcgKzMwNyw4IEBAIGZ1bmN0aW9uIHJ1
blRlc3RzKCkKICAgICB9KTsKIAogICAgIHJlc3VsdHMgPSBtb2NrUmVzdWx0cygpOwotICAgIHJl
c3VsdHMudGVzdHNbJ2Zvby9iYXItNS5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAn
SU1BR0UrVEVYVCcpOworICAgIHZhciBzdWJ0cmVlID0gcmVzdWx0cy50ZXN0c1snZm9vJ10gPSB7
fQorICAgIHN1YnRyZWVbJ2Jhci01Lmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignVEVYVCcsICdJ
TUFHRStURVhUJyk7CiAgICAgcnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigpIHsKICAgICAgICAg
ZXhwYW5kQWxsRXhwZWN0YXRpb25zKCk7CiAgICAgICAgIHZhciBwbmcgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdbc3JjKj0iYmFyLTUtZXhwZWN0ZWQucG5nIl0nKTsKQEAgLTMxMywyNCArMzI2
LDI3IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkKICAgICB9KTsKICAgICAKICAgICByZXN1bHRzID0g
bW9ja1Jlc3VsdHMoKTsKLSAgICByZXN1bHRzLnRlc3RzWydmdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LWFwaS5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQnLCAnSU1BR0UrVEVYVCcpOworICAg
IHZhciBzdWJ0cmVlID0gcmVzdWx0cy50ZXN0c1snZnVsbHNjcmVlbiddID0ge30KKyAgICBzdWJ0
cmVlWydmdWxsLXNjcmVlbi1hcGkuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ0lN
QUdFK1RFWFQnKTsKICAgICBydW5UZXN0KHJlc3VsdHMsIGZ1bmN0aW9uKCkgewogICAgICAgICB2
YXIgZXhwZWN0ZWRIcmVmID0gJ2ZpbGU6Ly8nICsgcmVzdWx0cy5sYXlvdXRfdGVzdHNfZGlyICsg
Jy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sJzsKICAgICAgICAgYXNzZXJ0VHJ1ZShk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0Ym9keSB0ZDpmaXJzdC1jaGlsZCBhJykuaHJlZiA9PSBl
eHBlY3RlZEhyZWYpOwogICAgIH0pOwotICAgIAorCiAgICAgdmFyIG9sZFNob3VsZFVzZVRyYWNM
aW5rcyA9IHNob3VsZFVzZVRyYWNMaW5rczsKICAgICBzaG91bGRVc2VUcmFjTGlua3MgPSBmdW5j
dGlvbigpIHsgcmV0dXJuIHRydWU7IH07CiAgICAgCiAgICAgcmVzdWx0cyA9IG1vY2tSZXN1bHRz
KCk7Ci0gICAgcmVzdWx0cy50ZXN0c1snZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGkuaHRtbCdd
ID0gbW9ja0V4cGVjdGF0aW9uKCdURVhUJywgJ0lNQUdFK1RFWFQnKTsKKyAgICB2YXIgc3VidHJl
ZSA9IHJlc3VsdHMudGVzdHNbJ2Z1bGxzY3JlZW4nXSA9IHt9CisgICAgc3VidHJlZVsnZnVsbC1z
Y3JlZW4tYXBpLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignVEVYVCcsICdJTUFHRStURVhUJyk7
CiAgICAgcnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIGV4cGVjdGVk
SHJlZiA9ICdodHRwOi8vdHJhYy53ZWJraXQub3JnL2V4cG9ydC8nICsgcmVzdWx0cy5yZXZpc2lv
biArICcvdHJ1bmsvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGkuaHRtbCc7
CiAgICAgICAgIGFzc2VydFRydWUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGJvZHkgdGQ6Zmly
c3QtY2hpbGQgYScpLmhyZWYgPT0gZXhwZWN0ZWRIcmVmKTsKICAgICB9KTsKIAogICAgIHJlc3Vs
dHMgPSBtb2NrUmVzdWx0cygpOwotICAgIHJlc3VsdHMudGVzdHNbJ2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tYXBpLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignVEVYVCcsICdJTUFHRStURVhUJyk7
CisgICAgdmFyIHN1YnRyZWUgPSByZXN1bHRzLnRlc3RzWydmdWxsc2NyZWVuJ10gPSB7fQorICAg
IHN1YnRyZWVbJ2Z1bGwtc2NyZWVuLWFwaS5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1RFWFQn
LCAnSU1BR0UrVEVYVCcpOwogICAgIHJlc3VsdHMucmV2aXNpb24gPSAnJzsKICAgICBydW5UZXN0
KHJlc3VsdHMsIGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgZXhwZWN0ZWRIcmVmID0gJ2h0dHA6
Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLWFwaS5odG1sJzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGFybmVz
cy9yZXN1bHRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzdWx0cy5odG1sCmlu
ZGV4IDVmNmRhOGQwODFlZmNmNmVmZGEwYWNlOWUxYTAwMDhjMjJkYTk5YTcuLmNiNDc4ZmJkOGNl
MmMzZGY5NGI1Y2VmZjQzMGUyYTgxOWFmMDU2MDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvaGFybmVzcy9yZXN1bHRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jl
c3VsdHMuaHRtbApAQCAtMjg5LDg4ICsyODksMTM0IEBAIGZ1bmN0aW9uIHJlc3VsdExpbmsodGVz
dFByZWZpeCwgc3VmZml4LCBjb250ZW50cykKICAgICByZXR1cm4gJzxhIGNsYXNzPXJlc3VsdC1s
aW5rIGhyZWY9IicgKyB0ZXN0UHJlZml4ICsgc3VmZml4ICsgJyI+JyArIGNvbnRlbnRzICsgJzwv
YT4gJzsKIH0KIAotZnVuY3Rpb24gdGFibGVSb3dzKCkKK2Z1bmN0aW9uIHRlc3RPYmplY3RGb3Io
dGVzdCkKIHsKLSAgICB2YXIgaHRtbCA9ICcnOwotICAgIGZvciAodmFyIHRlc3QgaW4gZ2xvYmFs
U3RhdGUoKS5yZXN1bHRzLnRlc3RzKSB7Ci0gICAgICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3Vs
dHMudGVzdHNbdGVzdF0uaGFzX3N0ZGVycikKLSAgICAgICAgICAgIGdsb2JhbFN0YXRlKCkudGVz
dHNXaXRoU3RkZXJyLnB1c2godGVzdCk7Ci0KLSAgICAgICAgZ2xvYmFsU3RhdGUoKS5oYXNIdHRw
VGVzdHMgPSBnbG9iYWxTdGF0ZSgpLmhhc0h0dHBUZXN0cyB8fCB0ZXN0LmluZGV4T2YoJ2h0dHAv
JykgPT0gMDsKLQotICAgICAgICB2YXIgYWN0dWFsID0gZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnRl
c3RzW3Rlc3RdLmFjdHVhbDsKLSAgICAgICAgaWYgKGFjdHVhbCA9PSAnTUlTU0lORycpIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgdGhhdCBuZXctcnVuLXdlYmtpdC10ZXN0cyBz
cGl0cyBvdXQgYW4gLWFjdHVhbC50eHQgZmlsZSBmb3IKLSAgICAgICAgICAgIC8vIHRlc3RzIHdp
dGggTUlTU0lORyByZXN1bHRzLgotICAgICAgICAgICAgZ2xvYmFsU3RhdGUoKS5uZXdUZXN0cy5w
dXNoKHRlc3QpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgdmFyIHBhcnRzID0gdGVzdC5z
cGxpdCgnLycpOworICAgIHZhciB0cmVlID0gZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnRlc3RzOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYg
KHBhcnRzW2ldIGluIHRyZWUpCisgICAgICAgICAgICB0cmVlID0gdHJlZVtwYXJ0c1tpXV07Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGVzdCBub3QgaW4gdGhl
IHJlc3VsdHMgdHJlZTogJyArIHRlc3QpOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRyZWU7Cit9CiAKLSAgICAgICAgdmFyIGV4cGVjdGVk
ID0gZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnRlc3RzW3Rlc3RdLmV4cGVjdGVkIHx8ICdQQVNTJzsK
LSAgICAgICAgdmFyIGlzRXhwZWN0ZWQgPSBhY3R1YWwgPT0gJ1NLSVAnOwotICAgICAgICBpZiAo
IWlzRXhwZWN0ZWQgJiYgZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnVzZXNfZXhwZWN0YXRpb25zX2Zp
bGUpIHsKLSAgICAgICAgICAgIHZhciBleHBlY3RlZEFycmF5ID0gZXhwZWN0ZWQuc3BsaXQoJyAn
KTsKLSAgICAgICAgICAgIGlmIChleHBlY3RlZEFycmF5LmluZGV4T2YoYWN0dWFsKSAhPSAtMSkK
LSAgICAgICAgICAgICAgICBpc0V4cGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGV4cGVjdGVkQXJyYXkuaW5kZXhPZignRkFJTCcpICE9IC0xKQotICAgICAgICAgICAgICAgIGlz
RXhwZWN0ZWQgPSBhY3R1YWwgPT0gJ0lNQUdFJyB8fCBhY3R1YWwgPT0gJ1RFWFQnIHx8IGFjdHVh
bCA9PSAnSU1BR0UrVEVYVCc7Ci0gICAgICAgIH0KK2Z1bmN0aW9uIHByb2Nlc3NHbG9iYWxTdGF0
ZUZvcih0ZXN0T2JqZWN0KQoreworICAgIHZhciB0ZXN0ID0gdGVzdE9iamVjdC5uYW1lOworICAg
IGlmICh0ZXN0T2JqZWN0Lmhhc19zdGRlcnIpCisgICAgICAgIGdsb2JhbFN0YXRlKCkudGVzdHNX
aXRoU3RkZXJyLnB1c2godGVzdCk7CiAKLSAgICAgICAgaWYgKGFjdHVhbCA9PSAnUEFTUycpIHsK
LSAgICAgICAgICAgIGlmICghaXNFeHBlY3RlZCAmJiBleHBlY3RlZCAhPSAnUEFTUycpCi0gICAg
ICAgICAgICAgICAgZ2xvYmFsU3RhdGUoKS51bmV4cGVjdGVkUGFzc1Rlc3RzLnB1c2godGVzdCk7
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgIGdsb2Jh
bFN0YXRlKCkuaGFzSHR0cFRlc3RzID0gZ2xvYmFsU3RhdGUoKS5oYXNIdHRwVGVzdHMgfHwgdGVz
dC5pbmRleE9mKCdodHRwLycpID09IDA7CiAKLSAgICAgICAgdmFyIHJvdyA9ICc8dGQ+JyArIHRl
c3RMaW5rKHRlc3QpICsgJzwvdGQ+JzsKLSAgICAgICAgdmFyIHRlc3RfcHJlZml4ID0gc3RyaXBF
eHRlbnNpb24odGVzdCk7Ci0KLSAgICAgICAgcm93ICs9ICc8dGQ+JzsKLSAgICAgICAgaWYgKGFj
dHVhbCA9PSAnQ1JBU0gnKQotICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVm
aXgsICctc3RhY2sudHh0JywgJ3N0YWNrJyk7Ci0gICAgICAgIGVsc2UgaWYgKGFjdHVhbCA9PSAn
QVVESU8nKSB7Ci0gICAgICAgICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1l
eHBlY3RlZC53YXYnLCAnZXhwZWN0ZWQnKTsKLSAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5r
KHRlc3RfcHJlZml4LCAnLWFjdHVhbC53YXYnLCAnYWN0dWFsJyk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoYWN0dWFsLmluZGV4T2YoJ1RFWFQnKSAhPSAtMSB8fCBhY3R1YWwgPT0gJ1RJTUVPVVQnKSB7
Ci0gICAgICAgICAgICAvLyBGSVhNRTogb25seSBpbmNsdWRlIHRpbWVvdXQgYWN0dWFsL2V4cGVj
dGVkIHJlc3VsdHMgaGVyZSBpZiB3ZSBhY3R1YWxseSBzcGl0IG91dCByZXN1bHRzIGZvciB0aW1l
b3V0IHRlc3RzLgotICAgICAgICAgICAgZ2xvYmFsU3RhdGUoKS5oYXNUZXh0RmFpbHVyZXMgPSB0
cnVlOwotICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctZXhwZWN0
ZWQudHh0JywgJ2V4cGVjdGVkJykgKwotICAgICAgICAgICAgICAgIHJlc3VsdExpbmsodGVzdF9w
cmVmaXgsICctYWN0dWFsLnR4dCcsICdhY3R1YWwnKSArCi0gICAgICAgICAgICAgICAgcmVzdWx0
TGluayh0ZXN0X3ByZWZpeCwgJy1kaWZmLnR4dCcsICdkaWZmJyk7Ci0gICAgICAKLSAgICAgICAg
ICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3VsdHMuaGFzX3ByZXR0eV9wYXRjaCkKLSAgICAgICAg
ICAgICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1wcmV0dHktZGlmZi5odG1s
JywgJ3ByZXR0eSBkaWZmJyk7Ci0KLSAgICAgICAgICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3Vs
dHMuaGFzX3dkaWZmKQotICAgICAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJl
Zml4LCAnLXdkaWZmLmh0bWwnLCAnd2RpZmYnKTsKLSAgICAgICAgfQorICAgIHZhciBhY3R1YWwg
PSB0ZXN0T2JqZWN0LmFjdHVhbDsKKyAgICBpZiAoYWN0dWFsID09ICdNSVNTSU5HJykgeworICAg
ICAgICAvLyBGSVhNRTogbWFrZSBzdXJlIHRoYXQgbmV3LXJ1bi13ZWJraXQtdGVzdHMgc3BpdHMg
b3V0IGFuIC1hY3R1YWwudHh0IGZpbGUgZm9yCisgICAgICAgIC8vIHRlc3RzIHdpdGggTUlTU0lO
RyByZXN1bHRzLgorICAgICAgICBnbG9iYWxTdGF0ZSgpLm5ld1Rlc3RzLnB1c2godGVzdCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICAgICAgcm93ICs9ICc8L3RkPjx0ZD4nOworICAg
IHZhciBleHBlY3RlZCA9IHRlc3RPYmplY3QuZXhwZWN0ZWQgfHwgJ1BBU1MnOworICAgIHRlc3RP
YmplY3QuaXNFeHBlY3RlZCA9IGFjdHVhbCA9PSAnU0tJUCc7CisgICAgaWYgKCF0ZXN0T2JqZWN0
LmlzRXhwZWN0ZWQgJiYgZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnVzZXNfZXhwZWN0YXRpb25zX2Zp
bGUpIHsKKyAgICAgICAgdmFyIGV4cGVjdGVkQXJyYXkgPSBleHBlY3RlZC5zcGxpdCgnICcpOwor
ICAgICAgICBpZiAoZXhwZWN0ZWRBcnJheS5pbmRleE9mKGFjdHVhbCkgIT0gLTEpCisgICAgICAg
ICAgICB0ZXN0T2JqZWN0LmlzRXhwZWN0ZWQgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChleHBl
Y3RlZEFycmF5LmluZGV4T2YoJ0ZBSUwnKSAhPSAtMSkKKyAgICAgICAgICAgIHRlc3RPYmplY3Qu
aXNFeHBlY3RlZCA9IGFjdHVhbCA9PSAnSU1BR0UnIHx8IGFjdHVhbCA9PSAnVEVYVCcgfHwgYWN0
dWFsID09ICdJTUFHRStURVhUJzsKKyAgICB9CiAKLSAgICAgICAgaWYgKGFjdHVhbC5pbmRleE9m
KCdJTUFHRScpICE9IC0xKSB7Ci0gICAgICAgICAgICBnbG9iYWxTdGF0ZSgpLmhhc0ltYWdlRmFp
bHVyZXMgPSB0cnVlOworICAgIGlmIChhY3R1YWwgPT0gJ1BBU1MnICYmIGV4cGVjdGVkICE9ICdQ
QVNTJyAmJiAhdGVzdE9iamVjdC5pc0V4cGVjdGVkKQorICAgICAgICBnbG9iYWxTdGF0ZSgpLnVu
ZXhwZWN0ZWRQYXNzVGVzdHMucHVzaCh0ZXN0KTsgICAgICAgICAgICAKK30KKworZnVuY3Rpb24g
dGFibGVSb3codGVzdE9iamVjdCkKK3sgICAgCisgICAgdmFyIGFjdHVhbCA9IHRlc3RPYmplY3Qu
YWN0dWFsOworICAgIGlmIChhY3R1YWwgPT0gJ1BBU1MnKQorICAgICAgICByZXR1cm4gJyc7CisK
KyAgICB2YXIgcm93ID0gJzx0ZD4nICsgdGVzdExpbmsodGVzdE9iamVjdC5uYW1lKSArICc8L3Rk
Pic7CisgICAgdmFyIHRlc3RfcHJlZml4ID0gc3RyaXBFeHRlbnNpb24odGVzdE9iamVjdC5uYW1l
KTsKKworICAgIHJvdyArPSAnPHRkPic7CisKKyAgICBpZiAoYWN0dWFsID09ICdDUkFTSCcpCisg
ICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLXN0YWNrLnR4dCcsICdzdGFj
aycpOworICAgIGVsc2UgaWYgKGFjdHVhbCA9PSAnQVVESU8nKSB7CisgICAgICAgIHJvdyArPSBy
ZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWV4cGVjdGVkLndhdicsICdleHBlY3RlZCcpOworICAg
ICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1hY3R1YWwud2F2JywgJ2FjdHVh
bCcpOworICAgIH0gZWxzZSBpZiAoYWN0dWFsLmluZGV4T2YoJ1RFWFQnKSAhPSAtMSB8fCBhY3R1
YWwgPT0gJ1RJTUVPVVQnKSB7CisgICAgICAgIC8vIEZJWE1FOiBvbmx5IGluY2x1ZGUgdGltZW91
dCBhY3R1YWwvZXhwZWN0ZWQgcmVzdWx0cyBoZXJlIGlmIHdlIGFjdHVhbGx5IHNwaXQgb3V0IHJl
c3VsdHMgZm9yIHRpbWVvdXQgdGVzdHMuCisgICAgICAgIGdsb2JhbFN0YXRlKCkuaGFzVGV4dEZh
aWx1cmVzID0gdHJ1ZTsKKyAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICct
ZXhwZWN0ZWQudHh0JywgJ2V4cGVjdGVkJykgKworICAgICAgICAgICAgcmVzdWx0TGluayh0ZXN0
X3ByZWZpeCwgJy1hY3R1YWwudHh0JywgJ2FjdHVhbCcpICsKKyAgICAgICAgICAgIHJlc3VsdExp
bmsodGVzdF9wcmVmaXgsICctZGlmZi50eHQnLCAnZGlmZicpOworICAKKyAgICAgICAgaWYgKGds
b2JhbFN0YXRlKCkucmVzdWx0cy5oYXNfcHJldHR5X3BhdGNoKQorICAgICAgICAgICAgcm93ICs9
IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctcHJldHR5LWRpZmYuaHRtbCcsICdwcmV0dHkgZGlm
ZicpOworCisgICAgICAgIGlmIChnbG9iYWxTdGF0ZSgpLnJlc3VsdHMuaGFzX3dkaWZmKQorICAg
ICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctd2RpZmYuaHRtbCcsICd3
ZGlmZicpOworICAgIH0KKworICAgIHJvdyArPSAnPC90ZD48dGQ+JzsKIAotICAgICAgICAgICAg
aWYgKGdsb2JhbFN0YXRlKCkucmVzdWx0cy50ZXN0c1t0ZXN0XS5pc19taXNtYXRjaF9yZWZ0ZXN0
KSB7Ci0gICAgICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctZXhw
ZWN0ZWQtbWlzbWF0Y2guaHRtbCcsICdyZWYgbWlzbWF0Y2ggaHRtbCcpICsKLSAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1hY3R1YWwucG5nJywgJ2FjdHVhbCcp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsU3RhdGUo
KS5yZXN1bHRzLnRlc3RzW3Rlc3RdLmlzX3JlZnRlc3QpCi0gICAgICAgICAgICAgICAgICAgIHJv
dyArPSByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWV4cGVjdGVkLmh0bWwnLCAncmVmIGh0bWwn
KTsKKyAgICBpZiAoYWN0dWFsLmluZGV4T2YoJ0lNQUdFJykgIT0gLTEpIHsKKyAgICAgICAgZ2xv
YmFsU3RhdGUoKS5oYXNJbWFnZUZhaWx1cmVzID0gdHJ1ZTsKIAotICAgICAgICAgICAgICAgIHJv
dyArPSByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWV4cGVjdGVkLnBuZycsICdleHBlY3RlZCcp
ICsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1hY3R1YWwu
cG5nJywgJ2FjdHVhbCcpICsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0TGluayh0ZXN0X3By
ZWZpeCwgJy1kaWZmLnBuZycsICdkaWZmJyk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmICh0
ZXN0T2JqZWN0LmlzX21pc21hdGNoX3JlZnRlc3QpIHsKKyAgICAgICAgICAgIHJvdyArPSByZXN1
bHRMaW5rKHRlc3RfcHJlZml4LCAnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLCAncmVmIG1pc21h
dGNoIGh0bWwnKSArCisgICAgICAgICAgICAgICAgcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1h
Y3R1YWwucG5nJywgJ2FjdHVhbCcpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYg
KHRlc3RPYmplY3QuaXNfcmVmdGVzdCkKKyAgICAgICAgICAgICAgICByb3cgKz0gcmVzdWx0TGlu
ayh0ZXN0X3ByZWZpeCwgJy1leHBlY3RlZC5odG1sJywgJ3JlZiBodG1sJyk7CisKKyAgICAgICAg
ICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWV4cGVjdGVkLnBuZycsICdleHBl
Y3RlZCcpICsKKyAgICAgICAgICAgICAgICByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWFjdHVh
bC5wbmcnLCAnYWN0dWFsJykgKworICAgICAgICAgICAgICAgIHJlc3VsdExpbmsodGVzdF9wcmVm
aXgsICctZGlmZi5wbmcnLCAnZGlmZicpOwogICAgICAgICB9CisgICAgfQogCi0gICAgICAgIHJv
dyArPSAnPC90ZD4nOwotICAgICAgICByb3cgKz0gJzx0ZD4nICsgYWN0dWFsICsgJzwvdGQ+JzsK
KyAgICByb3cgKz0gJzwvdGQ+JzsKKyAgICByb3cgKz0gJzx0ZD4nICsgYWN0dWFsICsgJzwvdGQ+
JzsKIAotICAgICAgICBpZiAoZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnVzZXNfZXhwZWN0YXRpb25z
X2ZpbGUpCi0gICAgICAgICAgcm93ICs9ICc8dGQ+JyArIGV4cGVjdGVkICsgJzwvdGQ+JzsKKyAg
ICBpZiAoZ2xvYmFsU3RhdGUoKS5yZXN1bHRzLnVzZXNfZXhwZWN0YXRpb25zX2ZpbGUpCisgICAg
ICByb3cgKz0gJzx0ZD4nICsgdGVzdE9iamVjdC5leHBlY3RlZCArICc8L3RkPic7CiAKLSAgICAg
ICAgaHRtbCArPSAnPHRib2R5IGNsYXNzPSInICsgKGlzRXhwZWN0ZWQgPyAnZXhwZWN0ZWQnIDog
JycpICsgJyI+PHRyPicgKyByb3cgKyAnPC90cj48L3Rib2R5Pic7CisgICAgcmV0dXJuICc8dGJv
ZHkgY2xhc3M9IicgKyAodGVzdE9iamVjdC5pc0V4cGVjdGVkID8gJ2V4cGVjdGVkJyA6ICcnKSAr
ICciPjx0cj4nICsgcm93ICsgJzwvdHI+PC90Ym9keT4nOworfQorCitmdW5jdGlvbiBmb3JFYWNo
VGVzdChoYW5kbGVyLCBvcHRfdHJlZSwgb3B0X3ByZWZpeCkKK3sKKyAgICB2YXIgdHJlZSA9IG9w
dF90cmVlIHx8IGdsb2JhbFN0YXRlKCkucmVzdWx0cy50ZXN0czsKKyAgICB2YXIgcHJlZml4ID0g
b3B0X3ByZWZpeCB8fCAnJzsKKworICAgIGZvciAodmFyIGtleSBpbiB0cmVlKSB7CisgICAgICAg
IHZhciBuZXdQcmVmaXggPSBwcmVmaXggPyAocHJlZml4ICsgJy8nICsga2V5KSA6IGtleTsKKyAg
ICAgICAgaWYgKCdhY3R1YWwnIGluIHRyZWVba2V5XSkgeworICAgICAgICAgICAgdmFyIHRlc3RP
YmplY3QgPSB0cmVlW2tleV07CisgICAgICAgICAgICB0ZXN0T2JqZWN0Lm5hbWUgPSBuZXdQcmVm
aXg7CisgICAgICAgICAgICBoYW5kbGVyKHRlc3RPYmplY3QpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGZvckVhY2hUZXN0KGhhbmRsZXIsIHRyZWVba2V5XSwgbmV3UHJlZml4KTsKICAg
ICB9Cit9CisKK2Z1bmN0aW9uIHRhYmxlUm93cygpCit7CisgICAgdmFyIGh0bWwgPSAnJzsKKyAg
ICBmb3JFYWNoVGVzdChmdW5jdGlvbih0ZXN0T2JqZWN0KSB7CisgICAgICAgIHByb2Nlc3NHbG9i
YWxTdGF0ZUZvcih0ZXN0T2JqZWN0KQorICAgICAgICB2YXIgdGVzdCA9IHRlc3RPYmplY3QubmFt
ZTsKKyAgICAgICAgaWYgKGdsb2JhbFN0YXRlKCkudW5leHBlY3RlZFBhc3NUZXN0cy5pbmRleE9m
KHRlc3QpID09IC0xICYmCisgICAgICAgICAgICBnbG9iYWxTdGF0ZSgpLm5ld1Rlc3RzLmluZGV4
T2YodGVzdCkgPT0gLTEpCisgICAgICAgICAgICBodG1sICs9IHRhYmxlUm93KHRlc3RPYmplY3Qp
OworICAgIH0pOwogICAgIHJldHVybiBodG1sOwogfQogCkBAIC0zOTAsOSArNDM2LDkgQEAgZnVu
Y3Rpb24gdGVzdExpc3QodGVzdHMsIGhlYWRlciwgdGFibGVJZCkKICAgICAgICAgaWYgKHRhYmxl
SWQgPT0gJ3N0ZGVyci10YWJsZScpCiAgICAgICAgICAgICBodG1sICs9IHJlc3VsdExpbmsoc3Ry
aXBFeHRlbnNpb24odGVzdCksICctc3RkZXJyLnR4dCcsICdzdGRlcnInKTsKICAgICAgICAgZWxz
ZSBpZiAodGFibGVJZCA9PSAncGFzc2VzLXRhYmxlJykKLSAgICAgICAgICAgIGh0bWwgKz0gZ2xv
YmFsU3RhdGUoKS5yZXN1bHRzLnRlc3RzW3Rlc3RdLmV4cGVjdGVkOworICAgICAgICAgICAgaHRt
bCArPSB0ZXN0T2JqZWN0Rm9yKHRlc3QpLmV4cGVjdGVkOwogICAgICAgICBlbHNlIGlmICh0YWJs
ZUlkID09ICduZXctdGVzdHMtdGFibGUnKSB7Ci0gICAgICAgICAgICB2YXIgdGVzdE9iamVjdCA9
IGdsb2JhbFN0YXRlKCkucmVzdWx0cy50ZXN0c1t0ZXN0XTsKKyAgICAgICAgICAgIHZhciB0ZXN0
T2JqZWN0ID0gdGVzdE9iamVjdEZvcih0ZXN0KTsKICAgICAgICAgICAgIGlmICh0ZXN0T2JqZWN0
LmlzX21pc3NpbmdfYXVkaW8pCiAgICAgICAgICAgICAgICAgaHRtbCArPSByZXN1bHRMaW5rKHN0
cmlwRXh0ZW5zaW9uKHRlc3QpLCAnLWFjdHVhbC53YXYnLCAnYXVkaW8gcmVzdWx0Jyk7CiAgICAg
ICAgICAgICBpZiAodGVzdE9iamVjdC5pc19taXNzaW5nX3RleHQpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjAzZjc1NjRmM2ZhMGQ2NTUyMWUx
ZDg1MzY4NWY4Yjk3MWVmYWM4Zi4uYzlhZTNmYjQzZWZjOWVjNjU0MmI2NzQwZjlmZDIwMzQ1ZWZi
M2E2NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM0IEBACisyMDExLTA0LTI4ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgdXNl
IGEgaGllcmFyY2hpY2FsIGRhdGEgc3RydWN0dXJlIHRvIHN0b3JlIHJlc3VsdHMganNvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTk3MzYKKworICAg
ICAgICBJbnN0ZWFkIG9mIGEgbWFwIGZyb20gdGVzdCBuYW1lIHRvIHJlc3VsdHMgZGljdCwgd2Ug
bm93IHN0b3JlIGEgaGllcmFyY2hpY2FsCisgICAgICAgIGRhdGEgc3RydWN0dXJlLgorCisgICAg
ICAgIE9sZDogeyBmb28vYmFyL2Jhei5odG1sOiByZXN1bHRzX2RpY3QsIGZvby9iYXIvYmF6Mi5o
dG1sOiByZXN1bHRzX2RpY3QgfQorICAgICAgICBOZXc6CisgICAgICAgIHsgZm9vOiB7CisgICAg
ICAgICAgICBiYXI6IHsKKyAgICAgICAgICAgICAgYmF6Lmh0bWw6IHJlc3VsdHNfZGljdCwKKyAg
ICAgICAgICAgICAgYmF6Mi5odG1sOiByZXN1bHRzX2RpY3QgfSB9IH0KKworICAgICAgICBUaGlz
IGN1dCB+NTIlIG9mIHRoZSBzaXplIG9mIHRpbWVzX21zLmpzb24uIEkgZXhwZWN0IGl0IHdpbGwg
Y3V0CisgICAgICAgIDMwLTQwJSBvZiBmdWxsX3Jlc3VsdHMuanNvbiBhbmQgdW5leHBlY3RlZF9y
ZXN1bHRzLmpzb24uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmVz
dWx0c2pzb25wYXJzZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L3Jlc3VsdHNqc29ucGFyc2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3IucHk6
CisgICAgICAgIFVzaW5nIG9zLnNlcCB3YXMganVzdCB3cm9uZyBzaW5jZSByZWxhdGl2ZV90ZXN0
X2ZpbGVuYW1lIGNhbm9uaWNhbGl6ZXMgc2VwYXJhdG9ycy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxp
bmVzZXJ2ZXIucHk6CisgICAgICAgIEluc3RlYWQgb2YgcGx1bWJpbmcgdGhyb3VnaCB0aGUgY2hh
bmdlIHRvIGFsbCBvZiB0aGUgcmViYXNlbGluZXNlcnZlcgorICAgICAgICBweXRob24gYW5kIEpT
LCBqdXN0IGNvbnZlcnQgdG8gdGhlIG9sZCBmb3JtYXQgYWZ0ZXIgcmVhZGluZyBpbiB0aGUganNv
bi4KKwogMjAxMS0wNC0yOCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weQppbmRleCBkOGMwODU4Y2MxMGQy
MzA4MTgzY2EzOWJkMDY4NzgwMjZiNGZlMjYzLi42MTAzMTgyOTMyNzY1MDU2NWZmYzFlZWVmYWQ5
YjZhYzNhNTU4NzVhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvcmVzdWx0c2pzb25wYXJzZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyLnB5CkBAIC0zNyw2ICszNywyMyBAQCBleGNlcHQgSW1w
b3J0RXJyb3I6CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBv
cnQganNvbl9yZXN1bHRzX2dlbmVyYXRvciwgdGVzdF9leHBlY3RhdGlvbnMsIHRlc3RfcmVzdWx0
cywgdGVzdF9mYWlsdXJlcwogCiAKKyMgVGhlc2UgYXJlIGhlbHBlciBmdW5jdGlvbnMgZm9yIG5h
dmlnYXRpbmcgdGhlIHJlc3VsdHMganNvbiBzdHJ1Y3R1cmUuCitkZWYgZm9yX2VhY2hfdGVzdCh0
cmVlLCBoYW5kbGVyLCBwcmVmaXg9JycpOgorICAgIGZvciBrZXkgaW4gdHJlZToKKyAgICAgICAg
bmV3X3ByZWZpeCA9IChwcmVmaXggKyAnLycgKyBrZXkpIGlmIHByZWZpeCBlbHNlIGtleQorICAg
ICAgICBpZiAnYWN0dWFsJyBub3QgaW4gdHJlZVtrZXldOgorICAgICAgICAgICAgZm9yX2VhY2hf
dGVzdCh0cmVlW2tleV0sIGhhbmRsZXIsIG5ld19wcmVmaXgpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBoYW5kbGVyKG5ld19wcmVmaXgsIHRyZWVba2V5XSkKKworCitkZWYgcmVzdWx0X2Zv
cl90ZXN0KHRyZWUsIHRlc3QpOgorICAgIHBhcnRzID0gdGVzdC5zcGxpdCgnLycpCisgICAgZm9y
IHBhcnQgaW4gcGFydHM6CisgICAgICAgIHRyZWUgPSB0cmVlW3BhcnRdCisgICAgcmV0dXJuIHRy
ZWUKKworCiAjIFdyYXBwZXIgYXJvdW5kIHRoZSBkaWN0aW9uYXJpZXMgcmV0dXJuZWQgZnJvbSB0
aGUganNvbi4KICMgRXZlbnR1YWxseSB0aGUgLmpzb24gc2hvdWxkIGp1c3Qgc2VyaWFsaXplIHRo
ZSBUZXN0RmFpbHVyZSBvYmplY3RzCiAjIGRpcmVjdGx5IGFuZCB3ZSB3b24ndCBuZWVkIHRoaXMu
CkBAIC05Niw3ICsxMTMsOSBAQCBjbGFzcyBSZXN1bHRzSlNPTlBhcnNlcihvYmplY3QpOgogICAg
ICAgICBjb250ZW50X3N0cmluZyA9IGpzb25fcmVzdWx0c19nZW5lcmF0b3Iuc3RyaXBfanNvbl93
cmFwcGVyKGpzb25fc3RyaW5nKQogICAgICAgICBqc29uX2RpY3QgPSBqc29uLmxvYWRzKGNvbnRl
bnRfc3RyaW5nKQogCi0gICAgICAgIGpzb25fcmVzdWx0cyA9IFtKU09OVGVzdFJlc3VsdCh0ZXN0
X25hbWUsIHJlc3VsdHNfZGljdCkgZm9yIHRlc3RfbmFtZSwgcmVzdWx0c19kaWN0IGluIGpzb25f
ZGljdFsndGVzdHMnXS5pdGVtcygpXQorICAgICAgICBqc29uX3Jlc3VsdHMgPSBbXQorICAgICAg
ICBmb3JfZWFjaF90ZXN0KGpzb25fZGljdFsndGVzdHMnXSwgbGFtYmRhIHRlc3QsIHJlc3VsdDog
anNvbl9yZXN1bHRzLmFwcGVuZChKU09OVGVzdFJlc3VsdCh0ZXN0LCByZXN1bHQpKSkKKwogICAg
ICAgICAjIEZJWE1FOiBXaGF0J3MgdGhlIHNob3J0IHNleHkgcHl0aG9uIHdheSB0byBmaWx0ZXIg
Tm9uZT8KICAgICAgICAgIyBJIHdvdWxkIHVzZSBbZm9vLmJhcigpIGZvciBmb28gaW4gZm9vcyBp
ZiBmb28uYmFyKCldIGJ1dCBiYXIoKSBpcyBleHBlbnNpdmUuCiAgICAgICAgIG5vbl9wYXNzaW5n
X3Jlc3VsdHMgPSBbcmVzdWx0LnRlc3RfcmVzdWx0KCkgZm9yIHJlc3VsdCBpbiBqc29uX3Jlc3Vs
dHMgaWYgbm90IHJlc3VsdC5kaWRfcGFzcygpXQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyX3VuaXR0ZXN0LnB5
CmluZGV4IDc1ZDJjYTYwMzY3NzA2ZmI4MTMxN2Y5N2ZlZjJiMGVjZTNhNTdmMWQuLmRjYzI2MThi
Nzg1N2FiOWRiMjVhZmFhNTAxNmIzNjc0MGM5MjUxMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlcl91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmVzdWx0c2pzb25wYXJzZXJfdW5p
dHRlc3QucHkKQEAgLTM3LDIwICszNywyOCBAQCBjbGFzcyBSZXN1bHRzSlNPTlBhcnNlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgVGhlIHJlYWwgZmlsZXMgaGF2ZSBubyB3aGl0ZXNw
YWNlLCBidXQgbmV3bGluZXMgbWFrZSB0aGlzIG11Y2ggbW9yZSByZWFkYWJsZS4KICAgICBfZXhh
bXBsZV91bmV4cGVjdGVkX3Jlc3VsdHNfanNvbiA9ICIiIkFERF9SRVNVTFRTKHsKICAgICAidGVz
dHMiOiB7Ci0gICAgICAgICJmYXN0XC9kb21cL3Byb3RvdHlwZS1pbmhlcml0YW5jZS5odG1sIjog
ewotICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgImFjdHVhbCI6
ICJURVhUIgorICAgICAgICAiZmFzdCI6IHsKKyAgICAgICAgICAgICJkb20iOiB7CisgICAgICAg
ICAgICAgICAgInByb3RvdHlwZS1pbmhlcml0YW5jZS5odG1sIjogeworICAgICAgICAgICAgICAg
ICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICJhY3R1YWwiOiAi
VEVYVCIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAg
ICAgICJzdmdcL2R5bmFtaWMtdXBkYXRlc1wvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC1kb20tc3Rk
RGV2aWF0aW9uLWF0dHIuaHRtbCI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwK
LSAgICAgICAgICAgICJhY3R1YWwiOiAiSU1BR0UiLAotICAgICAgICAgICAgImhhc19zdGRlcnIi
OiB0cnVlCisgICAgICAgICJzdmciOiB7CisgICAgICAgICAgICAiZHluYW1pYy11cGRhdGVzIjog
eworICAgICAgICAgICAgICAgICJTVkdGRURyb3BTaGFkb3dFbGVtZW50LWRvbS1zdGREZXZpYXRp
b24tYXR0ci5odG1sIjogeworICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIs
CisgICAgICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiSU1BR0UiLAorICAgICAgICAgICAgICAg
ICAgICAiaGFzX3N0ZGVyciI6IHRydWUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9LAogICAgICJza2lwcGVkIjogNDUwLAogICAgICJudW1fcmVncmVz
c2lvbnMiOiAxNSwKICAgICAibGF5b3V0X3Rlc3RzX2RpciI6ICJcL2JcL2J1aWxkXC9zbGF2ZVwv
V2Via2l0X01hYzEwXzVcL2J1aWxkXC9zcmNcL3RoaXJkX3BhcnR5XC9XZWJLaXRcL0xheW91dFRl
c3RzIiwKLSAgICAidmVyc2lvbiI6IDEsCisgICAgInZlcnNpb24iOiAzLAogICAgICJudW1fcGFz
c2VzIjogNzcsCiAgICAgImhhc19wcmV0dHlfcGF0Y2giOiBmYWxzZSwKICAgICAiZml4YWJsZSI6
IDEyMjAsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRv
ci5weQppbmRleCBkN2VkMmJmNzUxOWQ0YWI0MzRmMjg1ZjUyYjgyMjQyZWJiNjA0YTI5Li4yMzQ2
MTNhNTViZDQ2ZGRkODI1OGE0MTMwZTdlMzg5ZTg0YTQ0NTAyIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNf
Z2VuZXJhdG9yLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3IucHkKQEAgLTg4LDcgKzg4LDcgQEAg
ZGVmIHRlc3RfdGltaW5nc190cmllKHBvcnQsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKToKICAg
ICAgICAgICAgICMgRklYTUU6IEhhbmRsZSB0aGlzIGJldHRlci4gTm9uLWxheW91dCB0ZXN0cyBz
aG91bGRuJ3QgYmUgcmVsYXRpdml6ZWQuCiAgICAgICAgICAgICB0ZXN0ID0gdGVzdF9yZXN1bHQu
ZmlsZW5hbWUKIAotICAgICAgICBwYXJ0cyA9IHRlc3Quc3BsaXQob3Muc2VwKQorICAgICAgICBw
YXJ0cyA9IHRlc3Quc3BsaXQoJy8nKQogICAgICAgICBjdXJyZW50X21hcCA9IHRyaWUKICAgICAg
ICAgZm9yIGksIHBhcnQgaW4gZW51bWVyYXRlKHBhcnRzKToKICAgICAgICAgICAgIGlmIGkgPT0g
KGxlbihwYXJ0cykgLSAxKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5CmluZGV4IGM1MzJkOGY1
Njg1ODJlZTJhMGNkYWU5MmJhMzEzM2NlOWYzNDQ0ZWUuLjllOGNhN2U1OWMyYTlkNDE1MTkxMWYy
NWVmYjA5NDJiNmI4ZWNmNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weQpAQCAtOTYsNyAr
OTYsNyBAQCBkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgcmVz
dWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnksIHRlcwogICAgICAgICAndGVzdHMnOiBhIGRpY3Qg
b2YgdGVzdHMgLT4geydleHBlY3RlZCc6ICcuLi4nLCAnYWN0dWFsJzogJy4uLid9CiAgICAgIiIi
CiAgICAgcmVzdWx0cyA9IHt9Ci0gICAgcmVzdWx0c1sndmVyc2lvbiddID0gMgorICAgIHJlc3Vs
dHNbJ3ZlcnNpb24nXSA9IDMKIAogICAgIHRiZSA9IHJlc3VsdF9zdW1tYXJ5LnRlc3RzX2J5X2V4
cGVjdGF0aW9uCiAgICAgdGJ0ID0gcmVzdWx0X3N1bW1hcnkudGVzdHNfYnlfdGltZWxpbmUKQEAg
LTE3Nyw3ICsxNzcsMjYgQEAgZGVmIHN1bW1hcml6ZV9yZXN1bHRzKHBvcnRfb2JqLCBleHBlY3Rh
dGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1tYXJ5LCB0ZXMKICAgICAgICAgaWYgdGVz
dF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlIGluIGZhaWx1cmVfdHlwZXMgb3IgdGVzdF9m
YWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlSGFzaCBpbiBmYWlsdXJlX3R5cGVzOgogICAgICAg
ICAgICAgdGVzdF9kaWN0Wydpc19taXNzaW5nX2ltYWdlJ10gPSBUcnVlCiAKLSAgICAgICAgdGVz
dHNbdGVzdF0gPSB0ZXN0X2RpY3QKKyAgICAgICAgIyBTdG9yZSB0ZXN0IGhpZXJhcmNoaWNhbGx5
IGJ5IGRpcmVjdG9yeS4gZS5nLgorICAgICAgICAjIGZvby9iYXIvYmF6Lmh0bWw6IHRlc3RfZGlj
dAorICAgICAgICAjIGZvby9iYXIvYmF6MS5odG1sOiB0ZXN0X2RpY3QKKyAgICAgICAgIworICAg
ICAgICAjIGJlY29tZXMKKyAgICAgICAgIyBmb286IHsKKyAgICAgICAgIyAgICAgYmFyOiB7Cisg
ICAgICAgICMgICAgICAgICBiYXouaHRtbDogdGVzdF9kaWN0LAorICAgICAgICAjICAgICAgICAg
YmF6MS5odG1sOiB0ZXN0X2RpY3QKKyAgICAgICAgIyAgICAgfQorICAgICAgICAjIH0KKyAgICAg
ICAgcGFydHMgPSB0ZXN0LnNwbGl0KCcvJykKKyAgICAgICAgY3VycmVudF9tYXAgPSB0ZXN0cwor
ICAgICAgICBmb3IgaSwgcGFydCBpbiBlbnVtZXJhdGUocGFydHMpOgorICAgICAgICAgICAgaWYg
aSA9PSAobGVuKHBhcnRzKSAtIDEpOgorICAgICAgICAgICAgICAgIGN1cnJlbnRfbWFwW3BhcnRd
ID0gdGVzdF9kaWN0CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIHBhcnQg
bm90IGluIGN1cnJlbnRfbWFwOgorICAgICAgICAgICAgICAgIGN1cnJlbnRfbWFwW3BhcnRdID0g
e30KKyAgICAgICAgICAgIGN1cnJlbnRfbWFwID0gY3VycmVudF9tYXBbcGFydF0KIAogICAgIHJl
c3VsdHNbJ3Rlc3RzJ10gPSB0ZXN0cwogICAgIHJlc3VsdHNbJ251bV9wYXNzZXMnXSA9IG51bV9w
YXNzZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3ByaW50aW5nLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmcucHkKaW5kZXggZTEwYWQ5OTA3ZWIyYWMxMzRj
NTE5YTQ1OWEyOWVkYzYxOWIwMzgwMS4uMGRkMmQ4ZWQ5M2NiZWM1YzkzMDNlMzJjZTNmMzI2NzZi
MDI2OTliMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvcHJpbnRpbmcucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmcucHkKQEAgLTMyLDYgKzMyLDcgQEAK
IGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3B0cGFyc2UKIAorZnJvbSB3ZWJraXRweS5jb21tb24u
bmV0IGltcG9ydCByZXN1bHRzanNvbnBhcnNlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1ldGVyZWRfc3RyZWFtCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIApAQCAtNDU0
LDcgKzQ1NSw3IEBAIGNsYXNzIFByaW50ZXIob2JqZWN0KToKICAgICAgICAgZmxha3kgPSB7fQog
ICAgICAgICByZWdyZXNzaW9ucyA9IHt9CiAKLSAgICAgICAgZm9yIHRlc3QsIHJlc3VsdHMgaW4g
dW5leHBlY3RlZF9yZXN1bHRzWyd0ZXN0cyddLml0ZXJpdGVtcygpOgorICAgICAgICBkZWYgYWRk
X3Jlc3VsdCh0ZXN0LCByZXN1bHRzKToKICAgICAgICAgICAgIGFjdHVhbCA9IHJlc3VsdHNbJ2Fj
dHVhbCddLnNwbGl0KCIgIikKICAgICAgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0c1snZXhwZWN0
ZWQnXS5zcGxpdCgiICIpCiAgICAgICAgICAgICBpZiBhY3R1YWwgPT0gWydQQVNTJ106CkBAIC00
NzYsNiArNDc3LDggQEAgY2xhc3MgUHJpbnRlcihvYmplY3QpOgogICAgICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgICAgICBfYWRkX3RvX2RpY3Rfb2ZfbGlzdHMocmVncmVzc2lvbnMsIHJlc3Vs
dHNbJ2FjdHVhbCddLCB0ZXN0KQogCisgICAgICAgIHJlc3VsdHNqc29ucGFyc2VyLmZvcl9lYWNo
X3Rlc3QodW5leHBlY3RlZF9yZXN1bHRzWyd0ZXN0cyddLCBhZGRfcmVzdWx0KQorCiAgICAgICAg
IGlmIGxlbihwYXNzZXMpIG9yIGxlbihmbGFreSkgb3IgbGVuKHJlZ3Jlc3Npb25zKToKICAgICAg
ICAgICAgIHNlbGYuX2J1aWxkYm90X3N0cmVhbS53cml0ZSgiXG4iKQogCkBAIC00OTcsNyArNTAw
LDcgQEAgY2xhc3MgUHJpbnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHRlc3RzLnNvcnQo
KQogCiAgICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHVuZXhwZWN0ZWRfcmVzdWx0c1sndGVzdHMnXVt0ZXN0XQorICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSByZXN1bHRzanNvbnBhcnNlci5yZXN1bHRfZm9yX3Rlc3QodW5l
eHBlY3RlZF9yZXN1bHRzWyd0ZXN0cyddLCB0ZXN0KQogICAgICAgICAgICAgICAgICAgICBhY3R1
YWwgPSByZXN1bHRbJ2FjdHVhbCddLnNwbGl0KCIgIikKICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWQgPSByZXN1bHRbJ2V4cGVjdGVkJ10uc3BsaXQoIiAiKQogICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTlNba2V5Lmxvd2VyKCld
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0cy5weQppbmRleCA0NWM1ZmNhZjQ4ZWEwNDMxNzBmMzU0MTg5NzQwNjRjNWZkODA5
OWRjLi4wMDI4MDkxNWM5ZWJlMDQyZjk4MjEzNjIyZjNlYjkzMzI3YmUzMDkzIDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkKQEAgLTM4LDYgKzM4LDcgQEAgaW1wb3J0IG9zCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQg
c3lzCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldCBpbXBvcnQgcmVzdWx0c2pzb25wYXJzZXIK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBsYXlvdXRfcGFja2FnZQogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19n
ZW5lcmF0b3IKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9y
dCBwcmludGluZwpAQCAtMTc5LDcgKzE4MCw3IEBAIGRlZiBfZ2F0aGVyX3VuZXhwZWN0ZWRfcmVz
dWx0cyhwb3J0KToKICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzX2ZpbGVuYW1lID0gZmlsZXN5
c3RlbS5qb2luKHJlc3VsdHNfZGlyZWN0b3J5LCAidW5leHBlY3RlZF9yZXN1bHRzLmpzb24iKQog
ICAgICAgICBpZiBmaWxlc3lzdGVtLmV4aXN0cyh1bmV4cGVjdGVkX3Jlc3VsdHNfZmlsZW5hbWUp
OgogICAgICAgICAgICAgcmVzdWx0cyA9IGpzb25fcmVzdWx0c19nZW5lcmF0b3IubG9hZF9qc29u
KGZpbGVzeXN0ZW0sIHVuZXhwZWN0ZWRfcmVzdWx0c19maWxlbmFtZSkKLSAgICAgICAgICAgIGxh
c3RfdW5leHBlY3RlZF9yZXN1bHRzID0gcmVzdWx0c1sndGVzdHMnXS5rZXlzKCkKKyAgICAgICAg
ICAgIHJlc3VsdHNqc29ucGFyc2VyLmZvcl9lYWNoX3Rlc3QocmVzdWx0c1sndGVzdHMnXSwgbGFt
YmRhIHRlc3QsIHJlc3VsdDogbGFzdF91bmV4cGVjdGVkX3Jlc3VsdHMuYXBwZW5kKHRlc3QpKQog
ICAgIHJldHVybiBsYXN0X3VuZXhwZWN0ZWRfcmVzdWx0cwogCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lc2VydmVyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVzZXJ2ZXIucHkKaW5k
ZXggYzc5ZDc5MDAyZjdmMDllOGFhMmI0OWRhZGRjMTQ3ZjM4Y2Y2MjY5MC4uMjIwOTc3YjYzZjAy
NzdhYjc5Nzc3ZjVjYTRkMzA4ZjI5MzYwODRiNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVzZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVzZXJ2ZXIucHkKQEAgLTQ3LDYg
KzQ3LDcgQEAgZnJvbSBvcHRwYXJzZSBpbXBvcnQgbWFrZV9vcHRpb24KIGZyb20gd3NnaXJlZi5o
YW5kbGVycyBpbXBvcnQgZm9ybWF0X2RhdGVfdGltZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBp
bXBvcnQgc3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQgaW1wb3J0IHJlc3VsdHNqc29u
cGFyc2VyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQg
anNvbl9yZXN1bHRzX2dlbmVyYXRvcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBp
bXBvcnQgZmFjdG9yeQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJraXQgaW1w
b3J0IFdlYktpdFBvcnQKQEAgLTQzMSwxMCArNDMyLDE4IEBAIGNsYXNzIFJlYmFzZWxpbmVTZXJ2
ZXIoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgICAgICAgICAgc2NtKQogCiAgICAg
ICAgIHByaW50ICdHYXRoZXJpbmcgY3VycmVudCBiYXNlbGluZXMuLi4nCi0gICAgICAgIGZvciB0
ZXN0X2ZpbGUsIHRlc3RfanNvbiBpbiByZXN1bHRzX2pzb25bJ3Rlc3RzJ10uaXRlbXMoKToKLSAg
ICAgICAgICAgIHRlc3RfanNvblsnc3RhdGUnXSA9IFNUQVRFX05FRURTX1JFQkFTRUxJTkUKLSAg
ICAgICAgICAgIHRlc3RfcGF0aCA9IGZpbGVzeXN0ZW0uam9pbihsYXlvdXRfdGVzdHNfZGlyZWN0
b3J5LCB0ZXN0X2ZpbGUpCi0gICAgICAgICAgICB0ZXN0X2pzb25bJ2Jhc2VsaW5lcyddID0gX2dl
dF90ZXN0X2Jhc2VsaW5lcyh0ZXN0X2ZpbGUsIHRlc3RfY29uZmlnKQorICAgICAgICAjIFJlYmFz
ZWxpbmUgc2VydmVyIGFuZCBpdCdzIGFzc29jaWF0ZWQgSmF2YVNjcmlwdCBleHBlY3RlZCB0aGUg
dGVzdHMgc3VidHJlZSB0bworICAgICAgICAjIGJlIGtleS12YWx1ZSBwYWlycyBpbnN0ZWFkIG9m
IGhpZXJhcmNoaWNhbC4KKyAgICAgICAgIyBGSVhNRTogbWFrZSB0aGUgcmViYXNlbGluZSBzZXJ2
ZXIgdXNlIHRoZSBoaWVyYXJjaGljYWwgdHJlZS4KKyAgICAgICAgbmV3X3Rlc3RzX3N1YnRyZWUg
PSB7fQorCisgICAgICAgIGRlZiBnYXRoZXJfYmFzZWxpbmVzKHRlc3QsIHJlc3VsdCk6CisgICAg
ICAgICAgICByZXN1bHRbJ3N0YXRlJ10gPSBTVEFURV9ORUVEU19SRUJBU0VMSU5FCisgICAgICAg
ICAgICByZXN1bHRbJ2Jhc2VsaW5lcyddID0gX2dldF90ZXN0X2Jhc2VsaW5lcyh0ZXN0LCB0ZXN0
X2NvbmZpZykKKyAgICAgICAgICAgIG5ld190ZXN0c19zdWJ0cmVlW3Rlc3RdID0gcmVzdWx0CisK
KyAgICAgICAgcmVzdWx0c2pzb25wYXJzZXIuZm9yX2VhY2hfdGVzdChyZXN1bHRzX2pzb25bJ3Rl
c3RzJ10sIGdhdGhlcl9iYXNlbGluZXMpCisgICAgICAgIHJlc3VsdHNfanNvblsndGVzdHMnXSA9
IG5ld190ZXN0c19zdWJ0cmVlCiAKICAgICAgICAgc2VydmVyX3VybCA9ICJodHRwOi8vbG9jYWxo
b3N0OiVkLyIgJSBvcHRpb25zLmh0dHBkX3BvcnQKICAgICAgICAgcHJpbnQgIlN0YXJ0aW5nIHNl
cnZlciBhdCAlcyIgJSBzZXJ2ZXJfdXJsCg==
</data>
<flag name="review"
          id="84424"
          type_id="1"
          status="+"
          setter="mihaip"
    />
          </attachment>
      

    </bug>

</bugzilla>