<?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>28342</bug_id>
          
          <creation_ts>2009-08-15 13:22:48 -0700</creation_ts>
          <short_desc>SharedWorkers need to support loading</short_desc>
          <delta_ts>2009-08-18 17:22:15 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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="Andrew Wilson">atwilson</reporter>
          <assigned_to name="Andrew Wilson">atwilson</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>140478</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-15 13:22:48 -0700</bug_when>
    <thetext>We need to proxy network requests (XHR, importScripts) to an active document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140479</commentid>
    <comment_count>1</comment_count>
      <attachid>34904</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-15 13:37:24 -0700</bug_when>
    <thetext>Created attachment 34904
proposed patch

I moved lots of test code around so it could be shared between dedicated and shared workers. The code itself didn&apos;t really change other than indentation/location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140900</commentid>
    <comment_count>2</comment_count>
      <attachid>34904</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 17:18:12 -0700</bug_when>
    <thetext>Comment on attachment 34904
proposed patch

This is pretty big for a single change.  Maybe we could re-factor the layout tests first in a separate change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140909</commentid>
    <comment_count>3</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-17 17:25:02 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 34904 [details])
&gt; This is pretty big for a single change.  Maybe we could re-factor the layout
&gt; tests first in a separate change?

I could do this, but given that this entire patch consists of only 24 lines of code (two small functions) in a single file, is it really improving reviewability to break that out?

The patch looks big, but 90% of the change is just moving test code from a .html file into a .js file so it can be shared, with no code changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141266</commentid>
    <comment_count>4</comment_count>
      <attachid>34904</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-18 15:01:13 -0700</bug_when>
    <thetext>Comment on attachment 34904
proposed patch


&gt; diff --git a/LayoutTests/http/tests/workers/resources/worker-importScripts.js b/LayoutTests/http/tests/workers/resources/worker-importScripts.js
&gt; +if (self.postMessage)
&gt; +    runTests();
&gt; + else
&gt; +     onconnect = handleConnect;

Indented too far.


&gt; diff --git a/LayoutTests/http/tests/xmlhttprequest/workers/resources/close-test.js b/LayoutTests/http/tests/xmlhttprequest/workers/resources/close-test.js
&gt; +   function done()

I realize this is just a copy but it would be nice to fix the indent here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141333</commentid>
    <comment_count>5</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-18 17:22:15 -0700</bug_when>
    <thetext>Committed as r47467.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34904</attachid>
            <date>2009-08-15 13:37:24 -0700</date>
            <delta_ts>2009-08-18 15:01:13 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>62094</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkN2I0MDJlLi4yMjlkYThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMDktMDgt
MTUgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRXb3JrZXJzIG5lZWQgdG8gc3Vw
cG9ydCBsb2FkaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yODM0MgorCisgICAgICAgIFJlZmFjdG9yZWQgd29ya2VyIG5ldHdvcmsgdGVzdHMgdG8g
YWxzbyB0ZXN0IFNoYXJlZFdvcmtlcnMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMv
cmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLmpzOgorICAgICAgICBSZWZhY3RvcmVkIHRv
IHJ1biBpbiBlaXRoZXIgYSBkZWRpY2F0ZWQgb3Igc2hhcmVkIHdvcmtlci4KKyAgICAgICAgKGhh
bmRsZUNvbm5lY3Quc2VsZi5wb3N0TWVzc2FnZSk6CisgICAgICAgIChoYW5kbGVDb25uZWN0KToK
KyAgICAgICAgKHJ1blRlc3RzLnRyeS5yZXNldExvYWRGbGFncyk6CisgICAgICAgIChydW5UZXN0
cyk6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVkaXJl
Y3QtdGFyZ2V0LmpzOgorICAgICAgICBSZWZhY3RvcmVkIHRvIHJ1biBpbiBlaXRoZXIgYSBkZWRp
Y2F0ZWQgb3Igc2hhcmVkIHdvcmtlci4KKyAgICAgICAgKGVsc2Uuc2VsZi5vbmNvbm5lY3QpOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlZGlyZWN0Lmpz
OiBBZGRlZC4KKyAgICAgICAgTW92ZWQgdGVzdCBjb2RlIG91dCBvZiB3b3JrZXItcmVkaXJlY3Qu
aHRtbCBzbyBpdCBjYW4gYmUgc2hhcmVkIHdpdGggc2hhcmVkIHdvcmtlciB0ZXN0cy4KKyAgICAg
ICAgKGxvZyk6CisgICAgICAgIChydW5OZXh0VGVzdCk6CisgICAgICAgICh0ZXN0Q3Jvc3NPcmln
aW5Mb2FkLnRyeS53b3JrZXIub25lcnJvcik6CisgICAgICAgICh0ZXN0Q3Jvc3NPcmlnaW5Mb2Fk
LnRyeS53b3JrZXIub25tZXNzYWdlKToKKyAgICAgICAgKHRlc3RDcm9zc09yaWdpbkxvYWQpOgor
ICAgICAgICAodGVzdENyb3NzT3JpZ2luUmVkaXJlY3RlZExvYWQudHJ5Lndvcmtlci5vbmVycm9y
KToKKyAgICAgICAgKHRlc3RDcm9zc09yaWdpblJlZGlyZWN0ZWRMb2FkLnRyeS53b3JrZXIub25t
ZXNzYWdlKToKKyAgICAgICAgKHRlc3RDcm9zc09yaWdpblJlZGlyZWN0ZWRMb2FkKToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1pbXBvcnRTY3JpcHRzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItaW1wb3J0U2NyaXB0cy5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1yZWRpcmVjdC1leHBlY3RlZC50eHQ6IEFkZGVkCisg
ICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVkaXJlY3QuaHRtbC1k
aXNhYmxlZDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1yZWRp
cmVjdC5odG1sOgorICAgICAgICBNb3ZlZCB0ZXN0IGNvZGUgaW50byB3b3JrZXItcmVkaXJlY3Qu
anMuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL2Nsb3NlLmh0
bWw6CisgICAgICAgIE1vdmVkIHRlc3QgY29kZSBpbnRvIGNsb3NlLXRlc3QuanMuCisgICAgICAg
ICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL21ldGhvZHMtYXN5bmMuaHRtbDoK
KyAgICAgICAgTW92ZWQgdGVzdCBjb2RlIGludG8gbWV0aG9kcy1hc3luYy10ZXN0LmpzLgorICAg
ICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9tZXRob2RzLmh0bWw6Cisg
ICAgICAgIE1vdmVkIHRlc3QgY29kZSBpbnRvIG1ldGhvZHMuanMuCisgICAgICAgICogaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS10ZXN0LmpzOiBBZGRl
ZC4KKyAgICAgICAgQ29udGFpbnMgdGVzdCBjb2RlIG1vdmVkIGZyb20gY2xvc2UuaHRtbCwgc28g
dGVzdHMgY2FuIGJlIHNoYXJlZCB3aXRoIFNoYXJlZFdvcmtlcnMuCisgICAgICAgIChsb2cpOgor
ICAgICAgICAodGVzdEFzeW5jLndvcmtlci5vbm1lc3NhZ2UuZWxzZSk6CisgICAgICAgICh0ZXN0
QXN5bmMud29ya2VyLm9ubWVzc2FnZSk6CisgICAgICAgICh0ZXN0QXN5bmMpOgorICAgICAgICAo
dGVzdFN5bmMud29ya2VyLm9ubWVzc2FnZS5lbHNlKToKKyAgICAgICAgKHRlc3RTeW5jLndvcmtl
ci5vbm1lc3NhZ2UpOgorICAgICAgICAodGVzdFN5bmMpOgorICAgICAgICAoZG9uZSk6CisgICAg
ICAgIChoYW5kbGVFeGNlcHRpb24pOgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3Qvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanM6CisgICAgICAgIE1vZGlmaWVkIHdvcmtlciBj
b2RlIHNvIGl0IHJ1bnMgaW4gc2hhcmVkIHdvcmtlcnMgYWxzby4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL2ZpbGUtbm90LWZvdW5kLmpzOiBB
ZGRlZC4KKyAgICAgICAgQ29udGFpbnMgdGVzdCBjb2RlIG1vdmVkIGZyb20geG1saHR0cHJlcXVl
c3QtZmlsZS1ub3QtZm91bmQuaHRtbCAobm93IHNoYXJlZCB3aXRoIHNoYXJlZCB3b3JrZXIgdGVz
dHMpLgorICAgICAgICAobG9nKToKKyAgICAgICAgKHdvcmtlci5vbm1lc3NhZ2UpOgorICAgICAg
ICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvbWV0aG9kcy1h
c3luYy10ZXN0LmpzOiBBZGRlZC4KKyAgICAgICAgQ29udGFpbnMgdGVzdCBjb2RlIG1vdmVkIGZy
b20gbWV0aG9kcy1hc3luYy5odG1sIChub3cgc2hhcmVkIHdpdGggc2hhcmVkIHdvcmtlciB0ZXN0
cykuCisgICAgICAgIChsb2cpOgorICAgICAgICAod29ya2VyLm9ubWVzc2FnZSk6CisgICAgICAg
ICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy9tZXRob2RzLWFz
eW5jLmpzOgorICAgICAgICBDaGFuZ2VkIGNvZGUgdG8gcnVuIGluIHNoYXJlZCB3b3JrZXJzIGFs
c28uCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNl
cy9tZXRob2RzLXRlc3QuanM6IEFkZGVkLgorICAgICAgICBDb250YWlucyB0ZXN0IGNvZGUgbW92
ZWQgZnJvbSBtZXRob2RzLmh0bWwgKG5vdyBzaGFyZWQgd2l0aCBzaGFyZWQgd29ya2VyIHRlc3Rz
KS4KKyAgICAgICAgKGxvZyk6CisgICAgICAgICh3b3JrZXIub25tZXNzYWdlKToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL21ldGhvZHMuanM6
CisgICAgICAgIE5vdyBjYW4gcnVuIGluIGVpdGhlciBkZWRpY2F0ZWQgb3Igc2hhcmVkIHdvcmtl
cnMuCisgICAgICAgIChpbml0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY3JlYXRlLmpzOiBBZGRlZC4KKyAgICAg
ICAgVXRpbGl0eSBjb2RlIHRvIGFsbG93IHNoYXJlZCB3b3JrZXJzIHRvIGxvb2sgbGlrZSBkZWRp
Y2F0ZWQgd29ya2VycyB0byBlbmFibGUgc2hhcmluZyB0ZXN0IGNvZGUuCisgICAgICAgIChjcmVh
dGVXb3JrZXIud29ya2VyLnBvcnQub25tZXNzYWdlKToKKyAgICAgICAgKGNyZWF0ZVdvcmtlci53
b3JrZXIucG9zdE1lc3NhZ2UpOgorICAgICAgICAoY3JlYXRlV29ya2VyKToKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1jcmVhdGUu
anM6IEFkZGVkLgorICAgICAgICAoY3JlYXRlV29ya2VyKToKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1wcmUuanM6IEFkZGVkLgor
ICAgICAgICBVdGlsaXR5IGNvZGUgdG8gbWFrZSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSBsb29r
IGxpa2UgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUsIHRvIGVuYWJsZSB0ZXN0IGNvZGUgc2hh
cmluZy4KKyAgICAgICAgKGVsc2Uuc2VsZi5vbmNvbm5lY3Quc2VsZi5wb3N0TWVzc2FnZSk6Cisg
ICAgICAgIChlbHNlLnNlbGYub25jb25uZWN0LmV2ZW50Lm1lc3NhZ2VQb3J0Lm9ubWVzc2FnZSk6
CisgICAgICAgIChlbHNlLnNlbGYub25jb25uZWN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LWZpbGUtbm90LWZv
dW5kLmpzOgorICAgICAgICAoaW5pdCk6CisgICAgICAgIFVwZGF0ZWQgY29kZSBzbyBpdCBydW5z
IGluIHNoYXJlZCB3b3JrZXJzIGFsc28uCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1j
bG9zZS5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1tZXRob2RzLWFzeW5jLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3NoYXJl
ZC13b3JrZXItbWV0aG9kcy1hc3luYy5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1tZXRob2RzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93
b3JrZXJzL3NoYXJlZC13b3JrZXItbWV0aG9kcy5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci14aHIt
ZmlsZS1ub3QtZm91bmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci14aHItZmlsZS1ub3QtZm91bmQu
aHRtbC1kaXNhYmxlZDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC93b3JrZXJzL3htbGh0dHByZXF1ZXN0LWZpbGUtbm90LWZvdW5kLmh0bWw6CisgICAgICAgIE1v
dmVkIHRlc3QgY29kZSBpbnRvIGZpbGUtbm90LWZvdW5kLmpzLgorCiAyMDA5LTA4LTE0ICBEcmV3
IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
cmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy5qcwppbmRleCAzZmJlNDQz
Li5hMWI4N2ExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVz
b3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMuanMKQEAgLTEsMTQ2ICsx
LDE2MiBAQAotdHJ5IHsKLXBvc3RNZXNzYWdlKCJUZXN0IHN0YXJ0ZWQuIik7Ci0KLWltcG9ydFNj
cmlwdHMoKTsKLXBvc3RNZXNzYWdlKCJQQVNTOiBpbXBvcnRTY3JpcHRzKCksIGV4aXN0cywgaXMg
YSBmdW5jdGlvbiwgYW5kIGRvZXNuJ3QgdGhyb3cgd2hlbiBub3QgZ2l2ZW4gYW55IGFyZ3VtZW50
cyIpOwotCi12YXIgc291cmNlMSA9ICJ3b3JrZXItaW1wb3J0U2NyaXB0cy1zb3VyY2UxLmpzIjsK
LXZhciBzb3VyY2UyID0gIndvcmtlci1pbXBvcnRTY3JpcHRzLXNvdXJjZTIuanMiOwotdmFyIGRp
ZmZlcmVudE9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLWltcG9ydFNjcmlwdHMtZGlmZmVyZW50T3JpZ2luLmpzIjsKLXZhciBkaWZmZXJlbnRS
ZWRpcmVjdE9yaWdpbiA9ICIvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDovL2xvY2Fs
aG9zdDo4MDAwL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLWRpZmZlcmVu
dE9yaWdpbi5qcyI7Ci12YXIgc3ludGF4RXJyb3JTb3VyY2UgPSAid29ya2VyLWltcG9ydFNjcmlw
dHMtc3ludGF4RXJyb3IuanMiOwotdmFyIGZha2VTb3VyY2UgPSAibm9uZXhpc3RhbnQiOwotdmFy
IGxvYWRlZFNvdXJjZTEgPSBmYWxzZTsKLXZhciBsb2FkZWRTb3VyY2UyID0gZmFsc2U7Ci12YXIg
ZGlmZmVyZW50T3JpZ2luTG9hZGVkID0gZmFsc2U7Ci0KLWZ1bmN0aW9uIHJlc2V0TG9hZEZsYWdz
KCkgewotICAgIGxvYWRlZFNvdXJjZTEgPSBmYWxzZTsKLSAgICBsb2FkZWRTb3VyY2UyID0gZmFs
c2U7Ci0gICAgZGlmZmVyZW50T3JpZ2luTG9hZGVkID0gZmFsc2U7CitpZiAoc2VsZi5wb3N0TWVz
c2FnZSkKKyAgICBydW5UZXN0cygpOworIGVsc2UKKyAgICAgb25jb25uZWN0ID0gaGFuZGxlQ29u
bmVjdDsKKworZnVuY3Rpb24gaGFuZGxlQ29ubmVjdChldmVudCkKK3sKKyAgICAvLyBGb3Igc2hh
cmVkIHdvcmtlcnMsIGNyZWF0ZSBhIGZhdXggcG9zdE1lc3NhZ2UoKSBBUEkgdG8gc2VuZCBtZXNz
YWdlcyBiYWNrIHRvIHRoZSBwYXJlbnQgcGFnZS4KKyAgICBzZWxmLnBvc3RNZXNzYWdlID0gZnVu
Y3Rpb24obWVzc2FnZSkgeyBldmVudC5tZXNzYWdlUG9ydC5wb3N0TWVzc2FnZShtZXNzYWdlKTsg
fQorICAgIHJ1blRlc3RzKCk7CiB9CiAKLXRyeSB7Ci0gICAgaW1wb3J0U2NyaXB0cyhkaWZmZXJl
bnRPcmlnaW4pCi19IGNhdGNoKGUpIHsKLSAgICBwb3N0TWVzc2FnZSgiRkFJTDogVGhyZXcgIiAr
IGUgKyAiIHdoZW4gYXR0ZW1wdGluZyBjcm9zcyBvcmlnaW4gbG9hZCIpOworZnVuY3Rpb24gcnVu
VGVzdHMoKQoreworICAgIHRyeSB7CisgICAgICAgIHBvc3RNZXNzYWdlKCJUZXN0IHN0YXJ0ZWQu
Iik7CisKKyAgICAgICAgaW1wb3J0U2NyaXB0cygpOworICAgICAgICBwb3N0TWVzc2FnZSgiUEFT
UzogaW1wb3J0U2NyaXB0cygpLCBleGlzdHMsIGlzIGEgZnVuY3Rpb24sIGFuZCBkb2Vzbid0IHRo
cm93IHdoZW4gbm90IGdpdmVuIGFueSBhcmd1bWVudHMiKTsKKworICAgICAgICB2YXIgc291cmNl
MSA9ICJ3b3JrZXItaW1wb3J0U2NyaXB0cy1zb3VyY2UxLmpzIjsKKyAgICAgICAgdmFyIHNvdXJj
ZTIgPSAid29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMi5qcyI7CisgICAgICAgIHZhciBkaWZm
ZXJlbnRPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3dvcmtlcnMvcmVzb3VyY2VzL3dv
cmtlci1pbXBvcnRTY3JpcHRzLWRpZmZlcmVudE9yaWdpbi5qcyI7CisgICAgICAgIHZhciBkaWZm
ZXJlbnRSZWRpcmVjdE9yaWdpbiA9ICIvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9aHR0cDov
L2xvY2FsaG9zdDo4MDAwL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLWRp
ZmZlcmVudE9yaWdpbi5qcyI7CisgICAgICAgIHZhciBzeW50YXhFcnJvclNvdXJjZSA9ICJ3b3Jr
ZXItaW1wb3J0U2NyaXB0cy1zeW50YXhFcnJvci5qcyI7CisgICAgICAgIHZhciBmYWtlU291cmNl
ID0gIm5vbmV4aXN0YW50IjsKKyAgICAgICAgbG9hZGVkU291cmNlMSA9IGZhbHNlOworICAgICAg
ICBsb2FkZWRTb3VyY2UyID0gZmFsc2U7CisgICAgICAgIGRpZmZlcmVudE9yaWdpbkxvYWRlZCA9
IGZhbHNlOworCisgICAgICAgIGZ1bmN0aW9uIHJlc2V0TG9hZEZsYWdzKCkgeworICAgICAgICAg
ICAgbG9hZGVkU291cmNlMSA9IGZhbHNlOworICAgICAgICAgICAgbG9hZGVkU291cmNlMiA9IGZh
bHNlOworICAgICAgICAgICAgZGlmZmVyZW50T3JpZ2luTG9hZGVkID0gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW1wb3J0U2NyaXB0cyhkaWZmZXJlbnRP
cmlnaW4pCisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkZB
SUw6IFRocmV3ICIgKyBlICsgIiB3aGVuIGF0dGVtcHRpbmcgY3Jvc3Mgb3JpZ2luIGxvYWQiKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoZGlmZmVyZW50T3JpZ2luTG9hZGVkKQorICAgICAgICAg
ICAgcG9zdE1lc3NhZ2UoIlBBU1M6IGV4ZWN1dGVkIHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmln
aW4iKTsKKworICAgICAgICByZXNldExvYWRGbGFncygpOworCisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBpbXBvcnRTY3JpcHRzKGRpZmZlcmVudFJlZGlyZWN0T3JpZ2luKQorICAgICAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBUaHJldyAiICsgZSAr
ICIgd2hlbiBhdHRlbXB0aW5nIGxvYWQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luIHRocm91Z2ggYSBy
ZWRpcmVjdCIpOworICAgICAgICB9CisgICAgICAgIGlmIChkaWZmZXJlbnRPcmlnaW5Mb2FkZWQp
CisgICAgICAgICAgICBwb3N0TWVzc2FnZSgiUEFTUzogZXhlY3V0ZWQgc2NyaXB0IGZyb20gZGlm
ZmVyZW50IG9yaWdpbiB0aHJvdWdoIGEgcmVkaXJlY3QiKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IGRpZCBub3QgbG9hZCBzY3JpcHQgZnJvbSBkaWZmZXJl
bnQgb3JpZ2luIHRocm91Z2ggYSByZWRpcmVjdCIpOworCisgICAgICAgIHJlc2V0TG9hZEZsYWdz
KCk7CisKKyAgICAgICAgcG9zdE1lc3NhZ2UoIlRlc3Rpbmcgc2luZ2xlIGFyZ3VtZW50OiIpOwor
ICAgICAgICBpbXBvcnRTY3JpcHRzKHNvdXJjZTEpCisgICAgICAgIGlmIChsb2FkZWRTb3VyY2Ux
KQorICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IGxvYWRlZCBmaXJzdCBzb3VyY2UiKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IGRpZCBub3QgbG9h
ZCBmaXJzdCBzb3VyY2UiKTsKKworICAgICAgICByZXNldExvYWRGbGFncygpOworCisgICAgICAg
IHBvc3RNZXNzYWdlKCJUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50czoiKTsKKyAgICAgICAgaW1w
b3J0U2NyaXB0cyhzb3VyY2UxLCBzb3VyY2UyKTsKKyAgICAgICAgaWYgKGxvYWRlZFNvdXJjZTEg
JiYgbG9hZGVkU291cmNlMikKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBCb3RoIHNv
dXJjZXMgbG9hZGVkIGFuZCBleGVjdXRlZC4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cG9zdE1lc3NhZ2UoIkZBSUw6IG5vdCBhbGwgc291cmNlcyB3ZXJlIGxvYWRlZCIpOworCisgICAg
ICAgIHJlc2V0TG9hZEZsYWdzKCk7CisKKyAgICAgICAgcG9zdE1lc3NhZ2UoIlRlc3RpbmcgbXVs
dGlwbGUgYXJndW1lbnRzIChkaWZmZXJlbnQgb3JkZXIpOiIpOworICAgICAgICBpbXBvcnRTY3Jp
cHRzKHNvdXJjZTIsIHNvdXJjZTEpOworICAgICAgICBpZiAobG9hZGVkU291cmNlMSAmJiBsb2Fk
ZWRTb3VyY2UyKQorICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IEJvdGggc291cmNlcyBs
b2FkZWQgYW5kIGV4ZWN1dGVkLiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3N0TWVz
c2FnZSgiRkFJTDogbm90IGFsbCBzb3VyY2VzIHdlcmUgbG9hZGVkIik7CisKKyAgICAgICAgcmVz
ZXRMb2FkRmxhZ3MoKTsKKyAgICAgICAgZmlyc3RTaG91bGRUaHJvdyA9IGZhbHNlOworICAgICAg
ICBzZWNvbmRTaG91bGRUaHJvdyA9IGZhbHNlOworICAgICAgICBwb3N0TWVzc2FnZSgiVGVzdGlu
ZyBtdWx0aXBsZSBhcmd1bWVudHMsIHdpdGggZGlmZmVyZW50IG9yaWdpbiBmb3Igb25lIGFyZ3Vt
ZW50OiIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW1wb3J0U2NyaXB0cyhzb3VyY2Ux
LCBkaWZmZXJlbnRPcmlnaW4sIHNvdXJjZTIpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBUaHJldyAiICsgZSArICIgd2hlbiBhdHRlbXB0IGNy
b3NzIG9yaWdpbiBsb2FkIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxvYWRlZFNvdXJjZTEg
JiYgbG9hZGVkU291cmNlMiAmJiBkaWZmZXJlbnRPcmlnaW5Mb2FkZWQpCisgICAgICAgICAgICBw
b3N0TWVzc2FnZSgiUEFTUzogYWxsIHJlc291cmNlcyBleGVjdXRlZC4iKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IE5vdCAgb2YgdGhlIG9yaWdpbiBmYWls
dXJlIik7CisKKyAgICAgICAgcmVzZXRMb2FkRmxhZ3MoKTsKKworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgaW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBmYWtlU291cmNlLCBzb3VyY2UyKTsKKyAg
ICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBwb3N0TWVzc2FnZSgiUEFTUzogVGhyZXcg
IiArIGUgKyAiIHdoZW4gbG9hZCBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWxv
YWRlZFNvdXJjZTEgJiYgIWxvYWRlZFNvdXJjZTIpCisgICAgICAgICAgICBwb3N0TWVzc2FnZSgi
RkFJTDogTm90aGluZyB3YXMgZXhlY3V0ZWQgd2hlbiBuZXR3b3JrIGVycm9yIG9jY3VycmVkLiIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3N0TWVzc2FnZSgiUEFTUzogc29tZSByZXNv
dXJjZXMgd2VyZSBsb2FkZWQgZGVzcGl0ZSB0aGUgbmV0d29yayBlcnJvciIpOworCisgICAgICAg
IHJlc2V0TG9hZEZsYWdzKCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGltcG9ydFNj
cmlwdHMoc291cmNlMSwgc3ludGF4RXJyb3JTb3VyY2UsIHNvdXJjZTIpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBUaHJldyAiICsgZSArICIg
d2hlbiBlbmNvdW50ZXJpbmcgYSBzeW50YXggZXJyb3IgaW4gaW1wb3J0ZWQgc2NyaXB0Iik7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFsb2FkZWRTb3VyY2UxICYmICFsb2FkZWRTb3VyY2UyKQor
ICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IE5vdGhpbmcgd2FzIGV4ZWN1dGVkIHdoZW4g
c3ludGF4IGVycm9yIHdhcyBwcmVzZW50IGluIGFueSBzb3VyY2UuIik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBzb21lIHJlc291cmNlcyB3ZXJlIGxvYWRl
ZCBkZXNwaXRlIHRoZSBwcmVzZW5jZSBvZiBhIHN5bnRheCBlcnJvciIpOworCisgICAgICAgIHJl
c2V0TG9hZEZsYWdzKCk7CisKKyAgICAgICAgcG9zdE1lc3NhZ2UoIlRlc3RpbmcgbXVsdGlwbGUg
YXJndW1lbnRzLCB3aXRoIGZpcnN0IHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbjoiKTsK
KyAgICAgICAgZmlyc3RTaG91bGRUaHJvdyA9IHRydWU7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICBpbXBvcnRTY3JpcHRzKHNvdXJjZTEsIHNvdXJjZTIpOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBQcm9wYWdhdGVkICciICsgZSArICIn
IGZyb20gc2NyaXB0Iik7CisgICAgICAgIH0KKyAgICAgICAgZmlyc3RTaG91bGRUaHJvdyA9IGZh
bHNlOworICAgICAgICBpZiAobG9hZGVkU291cmNlMSAmJiAhbG9hZGVkU291cmNlMikKKyAgICAg
ICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBGaXJzdCByZXNvdXJjZSB3YXMgZXhlY3V0ZWQsIGFu
ZCBzZWNvbmQgcmVzb3VyY2Ugd2FzIG5vdCIpOworICAgICAgICBlbHNlIGlmIChsb2FkZWRTb3Vy
Y2UyKQorICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFNlY29uZCByZXNvdXJjZSB3YXMg
ZXhlY3V0ZWQiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6
IGZpcnN0IHJlc291cmNlIGRpZCBub3QgZXhlY3V0ZSBjb3JyZWN0bHkiKTsKKworICAgICAgICBy
ZXNldExvYWRGbGFncygpOworCisgICAgICAgIHBvc3RNZXNzYWdlKCJUZXN0aW5nIG11bHRpcGxl
IGFyZ3VtZW50cywgd2l0aCBzZWNvbmQgcmVzb3VyY2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9uOiIp
OworICAgICAgICBzZWNvbmRTaG91bGRUaHJvdyA9IHRydWU7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBpbXBvcnRTY3JpcHRzKHNvdXJjZTEsIHNvdXJjZTIpOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBQcm9wYWdhdGVkICciICsgZSAr
ICInIGZyb20gc2NyaXB0Iik7CisgICAgICAgIH0KKyAgICAgICAgc2Vjb25kU2hvdWxkVGhyb3cg
PSBmYWxzZTsKKyAgICAgICAgaWYgKGxvYWRlZFNvdXJjZTEgJiYgbG9hZGVkU291cmNlMikKKyAg
ICAgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBCb3RoIHNjcmlwdHMgd2VyZSBleGVjdXRlZCIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3N0TWVzc2FnZSgiRkFJTDogc2NyaXB0cyBk
aWQgbm90IGV4ZWN1dGUgY29ycmVjdGx5Iik7CisKKyAgICAgICAgcmVzZXRMb2FkRmxhZ3MoKTsK
KworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBwb3N0TWVzc2FnZSgiRkFJTDogVW5leHBlY3Rl
ZCBleGNlcHRpb246ICIgKyBlKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBwb3N0TWVzc2Fn
ZSgiRE9ORSIpOworICAgIH0KIH0KLWlmIChkaWZmZXJlbnRPcmlnaW5Mb2FkZWQpCi0gICAgcG9z
dE1lc3NhZ2UoIlBBU1M6IGV4ZWN1dGVkIHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmlnaW4iKTsK
IAotcmVzZXRMb2FkRmxhZ3MoKTsKLQotdHJ5IHsKLSAgICBpbXBvcnRTY3JpcHRzKGRpZmZlcmVu
dFJlZGlyZWN0T3JpZ2luKQotfSBjYXRjaChlKSB7Ci0gICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFRo
cmV3ICIgKyBlICsgIiB3aGVuIGF0dGVtcHRpbmcgbG9hZCBmcm9tIGRpZmZlcmVudCBvcmlnaW4g
dGhyb3VnaCBhIHJlZGlyZWN0Iik7Ci19Ci1pZiAoZGlmZmVyZW50T3JpZ2luTG9hZGVkKQotICAg
IHBvc3RNZXNzYWdlKCJQQVNTOiBleGVjdXRlZCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2lu
IHRocm91Z2ggYSByZWRpcmVjdCIpOwotZWxzZQotICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBkaWQg
bm90IGxvYWQgc2NyaXB0IGZyb20gZGlmZmVyZW50IG9yaWdpbiB0aHJvdWdoIGEgcmVkaXJlY3Qi
KTsKLQotcmVzZXRMb2FkRmxhZ3MoKTsKLQotcG9zdE1lc3NhZ2UoIlRlc3Rpbmcgc2luZ2xlIGFy
Z3VtZW50OiIpOwotaW1wb3J0U2NyaXB0cyhzb3VyY2UxKQotaWYgKGxvYWRlZFNvdXJjZTEpCi0g
ICAgcG9zdE1lc3NhZ2UoIlBBU1M6IGxvYWRlZCBmaXJzdCBzb3VyY2UiKTsKLWVsc2UKLSAgICBw
b3N0TWVzc2FnZSgiRkFJTDogZGlkIG5vdCBsb2FkIGZpcnN0IHNvdXJjZSIpOwotCi1yZXNldExv
YWRGbGFncygpOwotCi1wb3N0TWVzc2FnZSgiVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVudHM6Iik7
Ci1pbXBvcnRTY3JpcHRzKHNvdXJjZTEsIHNvdXJjZTIpOwotaWYgKGxvYWRlZFNvdXJjZTEgJiYg
bG9hZGVkU291cmNlMikKLSAgICBwb3N0TWVzc2FnZSgiUEFTUzogQm90aCBzb3VyY2VzIGxvYWRl
ZCBhbmQgZXhlY3V0ZWQuIik7Ci1lbHNlCi0gICAgcG9zdE1lc3NhZ2UoIkZBSUw6IG5vdCBhbGwg
c291cmNlcyB3ZXJlIGxvYWRlZCIpOwotCi1yZXNldExvYWRGbGFncygpOwotCi1wb3N0TWVzc2Fn
ZSgiVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVudHMgKGRpZmZlcmVudCBvcmRlcik6Iik7Ci1pbXBv
cnRTY3JpcHRzKHNvdXJjZTIsIHNvdXJjZTEpOwotaWYgKGxvYWRlZFNvdXJjZTEgJiYgbG9hZGVk
U291cmNlMikKLSAgICBwb3N0TWVzc2FnZSgiUEFTUzogQm90aCBzb3VyY2VzIGxvYWRlZCBhbmQg
ZXhlY3V0ZWQuIik7Ci1lbHNlCi0gICAgcG9zdE1lc3NhZ2UoIkZBSUw6IG5vdCBhbGwgc291cmNl
cyB3ZXJlIGxvYWRlZCIpOwotCi1yZXNldExvYWRGbGFncygpOwotZmlyc3RTaG91bGRUaHJvdyA9
IGZhbHNlOwotc2Vjb25kU2hvdWxkVGhyb3cgPSBmYWxzZTsKLXBvc3RNZXNzYWdlKCJUZXN0aW5n
IG11bHRpcGxlIGFyZ3VtZW50cywgd2l0aCBkaWZmZXJlbnQgb3JpZ2luIGZvciBvbmUgYXJndW1l
bnQ6Iik7Ci10cnkgewotICAgIGltcG9ydFNjcmlwdHMoc291cmNlMSwgZGlmZmVyZW50T3JpZ2lu
LCBzb3VyY2UyKTsKLX0gY2F0Y2goZSkgewotICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBUaHJldyAi
ICsgZSArICIgd2hlbiBhdHRlbXB0IGNyb3NzIG9yaWdpbiBsb2FkIik7Ci19Ci1pZiAobG9hZGVk
U291cmNlMSAmJiBsb2FkZWRTb3VyY2UyICYmIGRpZmZlcmVudE9yaWdpbkxvYWRlZCkKLSAgICBw
b3N0TWVzc2FnZSgiUEFTUzogYWxsIHJlc291cmNlcyBleGVjdXRlZC4iKTsKLWVsc2UKLSAgICBw
b3N0TWVzc2FnZSgiRkFJTDogTm90ICBvZiB0aGUgb3JpZ2luIGZhaWx1cmUiKTsKLQotcmVzZXRM
b2FkRmxhZ3MoKTsKLQotdHJ5IHsKLSAgICBpbXBvcnRTY3JpcHRzKHNvdXJjZTEsIGZha2VTb3Vy
Y2UsIHNvdXJjZTIpOwotfSBjYXRjaChlKSB7Ci0gICAgcG9zdE1lc3NhZ2UoIlBBU1M6IFRocmV3
ICIgKyBlICsgIiB3aGVuIGxvYWQgZmFpbGVkIik7Ci19Ci1pZiAoIWxvYWRlZFNvdXJjZTEgJiYg
IWxvYWRlZFNvdXJjZTIpCi0gICAgcG9zdE1lc3NhZ2UoIkZBSUw6IE5vdGhpbmcgd2FzIGV4ZWN1
dGVkIHdoZW4gbmV0d29yayBlcnJvciBvY2N1cnJlZC4iKTsKLWVsc2UKLSAgICBwb3N0TWVzc2Fn
ZSgiUEFTUzogc29tZSByZXNvdXJjZXMgd2VyZSBsb2FkZWQgZGVzcGl0ZSB0aGUgbmV0d29yayBl
cnJvciIpOwotCi1yZXNldExvYWRGbGFncygpOwotCi10cnkgewotICAgIGltcG9ydFNjcmlwdHMo
c291cmNlMSwgc3ludGF4RXJyb3JTb3VyY2UsIHNvdXJjZTIpOwotfSBjYXRjaChlKSB7Ci0gICAg
cG9zdE1lc3NhZ2UoIlBBU1M6IFRocmV3ICIgKyBlICsgIiB3aGVuIGVuY291bnRlcmluZyBhIHN5
bnRheCBlcnJvciBpbiBpbXBvcnRlZCBzY3JpcHQiKTsKLX0KLWlmICghbG9hZGVkU291cmNlMSAm
JiAhbG9hZGVkU291cmNlMikKLSAgICBwb3N0TWVzc2FnZSgiRkFJTDogTm90aGluZyB3YXMgZXhl
Y3V0ZWQgd2hlbiBzeW50YXggZXJyb3Igd2FzIHByZXNlbnQgaW4gYW55IHNvdXJjZS4iKTsKLWVs
c2UKLSAgICBwb3N0TWVzc2FnZSgiUEFTUzogc29tZSByZXNvdXJjZXMgd2VyZSBsb2FkZWQgZGVz
cGl0ZSB0aGUgcHJlc2VuY2Ugb2YgYSBzeW50YXggZXJyb3IiKTsKLQotcmVzZXRMb2FkRmxhZ3Mo
KTsKLQotcG9zdE1lc3NhZ2UoIlRlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRzLCB3aXRoIGZpcnN0
IHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbjoiKTsKLWZpcnN0U2hvdWxkVGhyb3cgPSB0
cnVlOwotdHJ5IHsKLSAgICBpbXBvcnRTY3JpcHRzKHNvdXJjZTEsIHNvdXJjZTIpOwotfSBjYXRj
aChlKSB7Ci0gICAgcG9zdE1lc3NhZ2UoIlBBU1M6IFByb3BhZ2F0ZWQgJyIgKyBlICsgIicgZnJv
bSBzY3JpcHQiKTsKLX0KLWZpcnN0U2hvdWxkVGhyb3cgPSBmYWxzZTsKLWlmIChsb2FkZWRTb3Vy
Y2UxICYmICFsb2FkZWRTb3VyY2UyKQotICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBGaXJzdCByZXNv
dXJjZSB3YXMgZXhlY3V0ZWQsIGFuZCBzZWNvbmQgcmVzb3VyY2Ugd2FzIG5vdCIpOwotZWxzZSBp
ZiAobG9hZGVkU291cmNlMikKLSAgICBwb3N0TWVzc2FnZSgiRkFJTDogU2Vjb25kIHJlc291cmNl
IHdhcyBleGVjdXRlZCIpOwotZWxzZQotICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBmaXJzdCByZXNv
dXJjZSBkaWQgbm90IGV4ZWN1dGUgY29ycmVjdGx5Iik7Ci0KLXJlc2V0TG9hZEZsYWdzKCk7Ci0K
LXBvc3RNZXNzYWdlKCJUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50cywgd2l0aCBzZWNvbmQgcmVz
b3VyY2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9uOiIpOwotc2Vjb25kU2hvdWxkVGhyb3cgPSB0cnVl
OwotdHJ5IHsKLSAgICBpbXBvcnRTY3JpcHRzKHNvdXJjZTEsIHNvdXJjZTIpOwotfSBjYXRjaChl
KSB7Ci0gICAgcG9zdE1lc3NhZ2UoIlBBU1M6IFByb3BhZ2F0ZWQgJyIgKyBlICsgIicgZnJvbSBz
Y3JpcHQiKTsKLX0KLXNlY29uZFNob3VsZFRocm93ID0gZmFsc2U7Ci1pZiAobG9hZGVkU291cmNl
MSAmJiBsb2FkZWRTb3VyY2UyKQotICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBCb3RoIHNjcmlwdHMg
d2VyZSBleGVjdXRlZCIpOwotZWxzZQotICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBzY3JpcHRzIGRp
ZCBub3QgZXhlY3V0ZSBjb3JyZWN0bHkiKTsKLQotcmVzZXRMb2FkRmxhZ3MoKTsKLQotfSBjYXRj
aChlKSB7Ci0gICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFVuZXhwZWN0ZWQgZXhjZXB0aW9uOiAiICsg
ZSk7Ci19IGZpbmFsbHkgewotICAgIHBvc3RNZXNzYWdlKCJET05FIik7Ci19CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWRpcmVj
dC10YXJnZXQuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL3dv
cmtlci1yZWRpcmVjdC10YXJnZXQuanMKaW5kZXggZjRkYjEwMC4uYzE2NzZkZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVkaXJl
Y3QtdGFyZ2V0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9yZXNvdXJj
ZXMvd29ya2VyLXJlZGlyZWN0LXRhcmdldC5qcwpAQCAtMSArMSw2IEBACi1wb3N0TWVzc2FnZSgi
Rm9vIik7CisvLyBTZW5kICJGb28iIGJhY2sgdG8gdGhlIHBhcmVudCBwYWdlIC0gc2NyaXB0IHdv
cmtzIGZvciBib3RoIHNoYXJlZCBhbmQgZGVkaWNhdGVkIHdvcmtlcnMKK2lmIChzZWxmLnBvc3RN
ZXNzYWdlKQorICAgIHBvc3RNZXNzYWdlKCJGb28iKTsKK2Vsc2UKKyAgICBzZWxmLm9uY29ubmVj
dCA9IGZ1bmN0aW9uKGV2ZW50KSB7IGV2ZW50Lm1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlKCJGb28i
KTsgfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3Vy
Y2VzL3dvcmtlci1yZWRpcmVjdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9y
ZXNvdXJjZXMvd29ya2VyLXJlZGlyZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmFlMGE0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWRpcmVjdC5qcwpAQCAtMCwwICsxLDY2IEBACisK
K2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKwordmFyIHRlc3RDYXNl
cyA9IFsKKyAgICAidGVzdENyb3NzT3JpZ2luTG9hZCIsCisgICAgInRlc3RDcm9zc09yaWdpblJl
ZGlyZWN0ZWRMb2FkIiwKK107Cit2YXIgdGVzdEluZGV4ID0gMDsKKworZnVuY3Rpb24gcnVuTmV4
dFRlc3QoKQoreworICAgIGlmICh0ZXN0SW5kZXggPCB0ZXN0Q2FzZXMubGVuZ3RoKSB7CisgICAg
ICAgIHRlc3RJbmRleCsrOworICAgICAgICB3aW5kb3dbdGVzdENhc2VzW3Rlc3RJbmRleCAtIDFd
XSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxvZygiRE9ORSIpOworICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdENyb3NzT3JpZ2luTG9h
ZCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHdvcmtlciA9IGNyZWF0ZVdvcmtlcignaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZWRpcmVjdC10YXJn
ZXQuanMnKTsKKyAgICAgICAgd29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbihldnQpIHsKKyAgICAg
ICAgICAgIGxvZygiRkFJTDogdGhyZXcgZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGNyb3NzIG9y
aWdpbiB3aGlsZSBsb2FkaW5nIHRoZSB3b3JrZXIgc2NyaXB0LiIpOworICAgICAgICAgICAgcnVu
TmV4dFRlc3QoKTsKKyAgICAgICAgfQorICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rp
b24oZXZ0KSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IGV4ZWN1dGVkIHNjcmlwdCB3aGVuIHJl
ZGlyZWN0IGNyb3NzIG9yaWdpbi4iKTsKKyAgICAgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAg
ICAgIH0KKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBsb2coIlNVQ0NFU1M6IHRocmV3IGV4
Y2VwdGlvbiAoIiArIGV4ICsgIikgd2hlbiBhdHRlbXB0aW5nIHRvIGNyb3NzIG9yaWdpbiB3aGls
ZSBsb2FkaW5nIHRoZSB3b3JrZXIgc2NyaXB0LiIpOworICAgICAgICBydW5OZXh0VGVzdCgpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gdGVzdENyb3NzT3JpZ2luUmVkaXJlY3RlZExvYWQoKQorewor
ICAgIHRyeSB7CisgICAgICAgIHZhciB3b3JrZXIgPSBjcmVhdGVXb3JrZXIoJy9yZXNvdXJjZXMv
cmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLXJlZGlyZWN0LXRhcmdldC5qcycpOworICAgICAgICB3b3JrZXIub25lcnJvciA9IGZ1
bmN0aW9uKGV2dCkgeworICAgICAgICAgICAgbG9nKCJTVUNDRVNTOiB0aHJldyBlcnJvciB3aGVu
IGF0dGVtcHRpbmcgdG8gcmVkaXJlY3RlZCBjcm9zcyBvcmlnaW4gd2hpbGUgbG9hZGluZyB0aGUg
d29ya2VyIHNjcmlwdC4iKTsKKyAgICAgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgICAgIH0K
KyAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAgICAg
bG9nKCJGQUlMOiBleGVjdXRlZCBzY3JpcHQgd2hlbiByZWRpcmVjdCBjcm9zcyBvcmlnaW4uIik7
CisgICAgICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAgICB9CisgICAgfSBjYXRjaCAoZXgp
IHsKKyAgICAgICAgbG9nKCJGQUlMOiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZXgpOworICAg
ICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3J1bk5leHRUZXN0KCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1pbXBvcnRTY3JpcHRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zaGFyZWQtd29ya2VyLWltcG9ydFNjcmlwdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNWI4NzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1pbXBvcnRTY3JpcHRzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ0IEBACitUZXN0IGltcG9ydFNjcmlwdHMgZm9yIFNoYXJl
ZFdvcmtlcnMuCisKK1Rlc3Qgc3RhcnRlZC4KK1BBU1M6IGltcG9ydFNjcmlwdHMoKSwgZXhpc3Rz
LCBpcyBhIGZ1bmN0aW9uLCBhbmQgZG9lc24ndCB0aHJvdyB3aGVuIG5vdCBnaXZlbiBhbnkgYXJn
dW1lbnRzCitMb2FkZWQgbWVzc2FnZSBmcm9tIGRpZmZlcmVudCBvcmlnaW4KK1BBU1M6IGV4ZWN1
dGVkIHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmlnaW4KK0xvYWRlZCBtZXNzYWdlIGZyb20gZGlm
ZmVyZW50IG9yaWdpbgorUEFTUzogZXhlY3V0ZWQgc2NyaXB0IGZyb20gZGlmZmVyZW50IG9yaWdp
biB0aHJvdWdoIGEgcmVkaXJlY3QKK1Rlc3Rpbmcgc2luZ2xlIGFyZ3VtZW50OgorTG9hZGVkIHJl
c291cmNlIDEKK1BBU1M6IGxvYWRlZCBmaXJzdCBzb3VyY2UKK1Rlc3RpbmcgbXVsdGlwbGUgYXJn
dW1lbnRzOgorTG9hZGVkIHJlc291cmNlIDEKK0xvYWRlZCByZXNvdXJjZSAyCitQQVNTOiBCb3Ro
IHNvdXJjZXMgbG9hZGVkIGFuZCBleGVjdXRlZC4KK1Rlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRz
IChkaWZmZXJlbnQgb3JkZXIpOgorUmVzb3VyY2UgMiBsb2FkZWQgYmVmb3JlIHJlc291cmNlIDEK
K0xvYWRlZCByZXNvdXJjZSAyCitMb2FkZWQgcmVzb3VyY2UgMQorUEFTUzogQm90aCBzb3VyY2Vz
IGxvYWRlZCBhbmQgZXhlY3V0ZWQuCitUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50cywgd2l0aCBk
aWZmZXJlbnQgb3JpZ2luIGZvciBvbmUgYXJndW1lbnQ6CitMb2FkZWQgcmVzb3VyY2UgMQorTG9h
ZGVkIG1lc3NhZ2UgZnJvbSBkaWZmZXJlbnQgb3JpZ2luCitMb2FkZWQgcmVzb3VyY2UgMgorUEFT
UzogYWxsIHJlc291cmNlcyBleGVjdXRlZC4KK0xvYWRlZCByZXNvdXJjZSAxCitQQVNTOiBUaHJl
dyBFcnJvcjogTkVUV09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2VwdGlvbiAxMDEgd2hlbiBs
b2FkIGZhaWxlZAorUEFTUzogc29tZSByZXNvdXJjZXMgd2VyZSBsb2FkZWQgZGVzcGl0ZSB0aGUg
bmV0d29yayBlcnJvcgorTG9hZGVkIHJlc291cmNlIDEKK1BBU1M6IFRocmV3IFN5bnRheEVycm9y
OiBQYXJzZSBlcnJvciB3aGVuIGVuY291bnRlcmluZyBhIHN5bnRheCBlcnJvciBpbiBpbXBvcnRl
ZCBzY3JpcHQKK1BBU1M6IHNvbWUgcmVzb3VyY2VzIHdlcmUgbG9hZGVkIGRlc3BpdGUgdGhlIHBy
ZXNlbmNlIG9mIGEgc3ludGF4IGVycm9yCitUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50cywgd2l0
aCBmaXJzdCByZXNvdXJjZSB0aHJvd2luZyBhbiBleGNlcHRpb246CitMb2FkZWQgcmVzb3VyY2Ug
MQorRmlyc3QgcmVzb3VyY2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9uCitQQVNTOiBQcm9wYWdhdGVk
ICdUaHJvd24gYnkgZmlyc3QgcmVzb3VyY2UnIGZyb20gc2NyaXB0CitQQVNTOiBGaXJzdCByZXNv
dXJjZSB3YXMgZXhlY3V0ZWQsIGFuZCBzZWNvbmQgcmVzb3VyY2Ugd2FzIG5vdAorVGVzdGluZyBt
dWx0aXBsZSBhcmd1bWVudHMsIHdpdGggc2Vjb25kIHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2Vw
dGlvbjoKK0xvYWRlZCByZXNvdXJjZSAxCitMb2FkZWQgcmVzb3VyY2UgMgorU2Vjb25kIHJlc291
cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbgorUEFTUzogUHJvcGFnYXRlZCAnVGhyb3duIGJ5IHNl
Y29uZCByZXNvdXJjZScgZnJvbSBzY3JpcHQKK1BBU1M6IEJvdGggc2NyaXB0cyB3ZXJlIGV4ZWN1
dGVkCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
aGFyZWQtd29ya2VyLWltcG9ydFNjcmlwdHMuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWltcG9ydFNjcmlwdHMuaHRtbC1kaXNhYmxl
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWQ3YmNhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItaW1w
b3J0U2NyaXB0cy5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsMjMgQEAKKzxib2R5PgorPHA+VGVz
dCBpbXBvcnRTY3JpcHRzIGZvciBTaGFyZWRXb3JrZXJzLjwvcD4KKzxkaXYgaWQ9cmVzdWx0Pjwv
ZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30K
KworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCdyZXNvdXJjZXMvd29y
a2VyLWltcG9ydFNjcmlwdHMuanMnLCAnaW1wb3J0U2NyaXB0cycpOworCit3b3JrZXIucG9ydC5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICBsb2coZXZ0LmRhdGEpOworICAgIGlmIChl
dnQuZGF0YSA9PSAiRE9ORSIgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zaGFyZWQtd29y
a2VyLXJlZGlyZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zaGFyZWQtd29ya2VyLXJlZGlyZWN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40OWYwZTgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVkaXJlY3QtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNiBAQAorVGVzdCB0aGF0IGxvYWRpbmcgdGhlIHNoYXJlZCB3b3JrZXIncyBzY3Jp
cHQgZG9lcyBub3QgYWxsb3cgYSBjcm9zcyBvcmlnaW4gcmVkaXJlY3QgKGJ1ZyAyNjE0NikKKwor
U1VDQ0VTUzogdGhyZXcgZXhjZXB0aW9uIChFcnJvcjogU0VDVVJJVFlfRVJSOiBET00gRXhjZXB0
aW9uIDE4KSB3aGVuIGF0dGVtcHRpbmcgdG8gY3Jvc3Mgb3JpZ2luIHdoaWxlIGxvYWRpbmcgdGhl
IHdvcmtlciBzY3JpcHQuCitTVUNDRVNTOiB0aHJldyBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8g
cmVkaXJlY3RlZCBjcm9zcyBvcmlnaW4gd2hpbGUgbG9hZGluZyB0aGUgd29ya2VyIHNjcmlwdC4K
K0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItcmVkaXJlY3QuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zaGFyZWQtd29ya2VyLXJlZGlyZWN0Lmh0bWwtZGlzYWJsZWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRjYTU1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLXJlZGlyZWN0Lmh0bWwtZGlz
YWJsZWQKQEAgLTAsMCArMSwxNCBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQgbG9hZGluZyB0aGUg
c2hhcmVkIHdvcmtlcidzIHNjcmlwdCBkb2VzIG5vdCBhbGxvdyBhIGNyb3NzIG9yaWdpbiByZWRp
cmVjdCAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2
MTQ2Ij5idWcgMjYxNDY8L2E+KTwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIGNyZWF0ZVdvcmtlcih1cmwpCit7CisgICAgdmFyIHdvcmtlciA9IG5ldyBTaGFy
ZWRXb3JrZXIodXJsLCB1cmwpOworICAgIHdvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2dCkgeyB3b3JrZXIub25tZXNzYWdlKGV2dCk7IH07CisgICAgd29ya2VyLnBvc3RNZXNzYWdl
ID0gZnVuY3Rpb24obXNnLCBwb3J0KSB7IHdvcmtlci5wb3J0LnBvc3RNZXNzYWdlKG1zZywgcG9y
dCk7IH07CisgICAgcmV0dXJuIHdvcmtlcjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy93b3JrZXItcmVkaXJlY3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1yZWRpcmVjdC5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1yZWRpcmVjdC5odG1sCmluZGV4
IDk3Mjc0NGYuLjk4NmE2OGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy93b3JrZXItcmVkaXJlY3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvd29ya2VyLXJlZGlyZWN0Lmh0bWwKQEAgLTIsNzIgKzIsMTAgQEAKIDxwPlRlc3QgdGhh
dCBsb2FkaW5nIHRoZSB3b3JrZXIncyBzY3JpcHQgZG9lcyBub3QgYWxsb3cgYSBjcm9zcyBvcmln
aW4gcmVkaXJlY3QgKDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNjE0NiI+YnVnIDI2MTQ2PC9hPik8L3A+CiA8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KIDxz
Y3JpcHQ+Ci1mdW5jdGlvbiBsb2cobWVzc2FnZSkKK2Z1bmN0aW9uIGNyZWF0ZVdvcmtlcih1cmwp
CiB7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBt
ZXNzYWdlICsgIjxicj4iOworICAgIHJldHVybiBuZXcgV29ya2VyKHVybCk7CiB9Ci0KLXZhciB0
ZXN0Q2FzZXMgPSBbCi0gICAgInRlc3RDcm9zc09yaWdpbkxvYWQiLAotICAgICJ0ZXN0Q3Jvc3NP
cmlnaW5SZWRpcmVjdGVkTG9hZCIsCi1dOwotdmFyIHRlc3RJbmRleCA9IDA7Ci0KLWZ1bmN0aW9u
IHJ1bk5leHRUZXN0KCkKLXsKLSAgICBpZiAodGVzdEluZGV4IDwgdGVzdENhc2VzLmxlbmd0aCkg
ewotICAgICAgICB0ZXN0SW5kZXgrKzsKLSAgICAgICAgd2luZG93W3Rlc3RDYXNlc1t0ZXN0SW5k
ZXggLSAxXV0oKTsKLSAgICB9IGVsc2UgewotICAgICAgICBsb2coIkRPTkUiKTsKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RDcm9zc09y
aWdpbkxvYWQoKQotewotICAgIHRyeSB7Ci0gICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2Vy
KCdodHRwOi8vbG9jYWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlZGlyZWN0
LXRhcmdldC5qcycpOwotICAgICAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgewot
ICAgICAgICAgICAgbG9nKCJGQUlMOiB0aHJldyBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gY3Jv
c3Mgb3JpZ2luIHdoaWxlIGxvYWRpbmcgdGhlIHdvcmtlciBzY3JpcHQuIik7Ci0gICAgICAgICAg
ICBydW5OZXh0VGVzdCgpOwotICAgICAgICB9Ci0gICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldnQpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTDogZXhlY3V0ZWQgc2NyaXB0IHdo
ZW4gcmVkaXJlY3QgY3Jvc3Mgb3JpZ2luLiIpOwotICAgICAgICAgICAgcnVuTmV4dFRlc3QoKTsK
LSAgICAgICAgfQotICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgIGxvZygiU1VDQ0VTUzogdGhy
ZXcgZXhjZXB0aW9uICgiICsgZXggKyAiKSB3aGVuIGF0dGVtcHRpbmcgdG8gY3Jvc3Mgb3JpZ2lu
IHdoaWxlIGxvYWRpbmcgdGhlIHdvcmtlciBzY3JpcHQuIik7Ci0gICAgICAgIHJ1bk5leHRUZXN0
KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0Q3Jvc3NPcmlnaW5SZWRpcmVjdGVkTG9hZCgp
Ci17Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJy9yZXNvdXJj
ZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJj
ZXMvd29ya2VyLXJlZGlyZWN0LXRhcmdldC5qcycpOwotICAgICAgICB3b3JrZXIub25lcnJvciA9
IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICAgICAgbG9nKCJTVUNDRVNTOiB0aHJldyBlcnJvciB3
aGVuIGF0dGVtcHRpbmcgdG8gcmVkaXJlY3RlZCBjcm9zcyBvcmlnaW4gd2hpbGUgbG9hZGluZyB0
aGUgd29ya2VyIHNjcmlwdC4iKTsKLSAgICAgICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgICAg
IH0KLSAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICAg
ICAgbG9nKCJGQUlMOiBleGVjdXRlZCBzY3JpcHQgd2hlbiByZWRpcmVjdCBjcm9zcyBvcmlnaW4u
Iik7Ci0gICAgICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgICAgICB9Ci0gICAgfSBjYXRjaCAo
ZXgpIHsKLSAgICAgICAgbG9nKCJGQUlMOiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsgZXgpOwot
ICAgICAgICBydW5OZXh0VGVzdCgpOwotICAgIH0KLX0KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXJ1bk5leHRUZXN0
KCk7Ci0KIDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93b3JrZXItcmVkaXJlY3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL2Nsb3NlLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvY2xvc2UuaHRtbAppbmRleCA5NjRm
ZmM1Li44YzBiM2ZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3dvcmtlcnMvY2xvc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3dvcmtlcnMvY2xvc2UuaHRtbApAQCAtMSw3MiArMSw2IEBACiA8Ym9keT4K
IDxwPlRlc3RzIGludm9raW5nIGNsb3NlKCkgaW4gdGhlIG1pZGRsZSBvZiBhbiBYTUxIdHRwUmVx
dWVzdC48L3A+CiA8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KLTxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8
YnI+IjsKLSAgICB9Ci0KLSAgICB2YXIgdGltZW91dCA9IDA7Ci0gICAgLy8gU3RhcnQgd2l0aCBh
c3luYyB0ZXN0cwotICAgIHRlc3RBc3luYygpOwotCi0gICAgZnVuY3Rpb24gdGVzdEFzeW5jKCkg
ewotICAgICAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigncmVzb3VyY2VzL2Nsb3NlLmpzJyk7
Ci0gICAgICAgIHdvcmtlci5vbmVycm9yID0gaGFuZGxlRXhjZXB0aW9uOwotICAgICAgICB3b3Jr
ZXIucG9zdE1lc3NhZ2UoImFzeW5jIik7Ci0gICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihldnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgvRE9ORS8udGVzdChldnQuZGF0
YSkpIHsKLSAgICAgICAgICAgICAgICAvLyBHaXZlIHdvcmtlciBhIGNoYW5jZSB0byBjb21wbGV0
ZSB0aGUgc2h1dGRvd24KLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICBsb2coIlBBU1M6IEFzeW5jIHRlc3QiKTsKLSAgICAgICAgICAg
ICAgICAgICAgdGVzdFN5bmMoKTsKLSAgICAgICAgICAgICAgICB9LCAxMDAwKTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbG9nKCJFUlJPUiIpOwotICAgICAgICAgICAg
ICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0
aW9uIHRlc3RTeW5jKCkgewotICAgICAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigncmVzb3Vy
Y2VzL2Nsb3NlLmpzJyk7Ci0gICAgICAgIHdvcmtlci5vbmVycm9yID0gaGFuZGxlRXhjZXB0aW9u
OwotICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoInN5bmMiKTsKLSAgICAgICAgd29ya2VyLm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKC9ET05F
Ly50ZXN0KGV2dC5kYXRhKSkgewotICAgICAgICAgICAgICAgIC8vIEdpdmUgd29ya2VyIGEgY2hh
bmNlIHRvIGNvbXBsZXRlIHRoZSBzaHV0ZG93bgotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvZygiUEFTUzogc3luYyB0ZXN0Iik7
Ci0gICAgICAgICAgICAgICAgICAgIGxvZygiRE9ORSIpOwotICAgICAgICAgICAgICAgICAgICBk
b25lKCk7Ci0gICAgICAgICAgICAgICAgfSwgMTAwMCk7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIGxvZygiRVJST1IiKTsKLSAgICAgICAgICAgICAgICBkb25lKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgIGZ1bmN0aW9uIGRvbmUoKQotICAg
IHsKLSAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpOwotICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGhhbmRsZUV4Y2VwdGlvbihldnQpCi0g
ICAgewotICAgICAgICBsb2coIkVSUk9SIC0gZXhjZXB0aW9uIHRocm93bjogIiArIGV2dC5tZXNz
YWdlKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLTwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy93b3JrZXItY3JlYXRlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvY2xvc2UtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvbWV0aG9kcy1h
c3luYy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJz
L21ldGhvZHMtYXN5bmMuaHRtbAppbmRleCAxMGY0MDFlLi4zZjE1MDExIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvbWV0aG9kcy1hc3lu
Yy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vy
cy9tZXRob2RzLWFzeW5jLmh0bWwKQEAgLTEsMzkgKzEsNiBAQAogPGJvZHk+CiA8cD5HRVQgYW5k
IFBPU1Qgc2hvdWxkIG5vdCBiZSB0aGUgb25seSBIVFRQIG1ldGhvZHMgaW1wbGVtZW50ZWQgaW4g
WE1MSHR0cFJlcXVlc3QgZm9yIFdvcmtlcnMuPC9wPgogPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Ci08
c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgfQotICAgIAotICAgIHZhciBjb25zb2xlX21l
c3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKLSAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOwotICAgIAotICAgIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKQotICAgIHsKLSAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJsaSIpOwotICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KG1lc3NhZ2UpKTsKLSAgICAgICAgY29uc29sZV9tZXNzYWdlcy5hcHBlbmRDaGlsZChpdGVtKTsK
LSAgICB9Ci0KLSAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigncmVzb3VyY2VzL21ldGhvZHMt
YXN5bmMuanMnKTsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2UoIlNUQVJUIik7Ci0KLSAgICB3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KQotICAgIHsKLSAgICAgICAgaWYgKC9sb2cgLisv
LnRlc3QoZXZ0LmRhdGEpKQotICAgICAgICAgICAgbG9nKGV2dC5kYXRhLnN1YnN0cig0KSk7Ci0g
ICAgICAgIGVsc2UgaWYgKC9ET05FLy50ZXN0KGV2dC5kYXRhKSkgewotICAgICAgICAgICAgbG9n
KCJET05FIik7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRVJST1IiKTsKLSAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0gICAgfQotPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3dvcmtlci1jcmVhdGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9tZXRob2RzLWFzeW5jLXRlc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC93b3JrZXJzL21ldGhvZHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvd29ya2Vycy9tZXRob2RzLmh0bWwKaW5kZXggYTkyNWQ5Ny4uOGIyYTE4MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL21ldGhv
ZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtl
cnMvbWV0aG9kcy5odG1sCkBAIC0xLDMzICsxLDcgQEAKIDxodG1sPgogPGJvZHk+CiA8cD5HRVQg
YW5kIFBPU1Qgc2hvdWxkIG5vdCBiZSB0aGUgb25seSBIVFRQIG1ldGhvZHMgaW1wbGVtZW50ZWQg
aW4gWE1MSHR0cFJlcXVlc3QgZm9yIFdvcmtlcnMuPC9wPgotPHNjcmlwdD4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgIH0KLSAgICAKLSAgICB2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoIm9sIik7Ci0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xl
X21lc3NhZ2VzKTsKLSAgICAKLSAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKLSAgICB7Ci0gICAg
ICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKLSAgICAgICAgaXRl
bS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7Ci0gICAgICAg
IGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hpbGQoaXRlbSk7Ci0gICAgfQotCi0gICAgdmFyIHdv
cmtlciA9IG5ldyBXb3JrZXIoJ3Jlc291cmNlcy9tZXRob2RzLmpzJyk7Ci0gICAgd29ya2VyLm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkKLSAgICB7Ci0gICAgICAgIGlmICgvbG9nIC4rLy50ZXN0
KGV2dC5kYXRhKSkKLSAgICAgICAgICAgIGxvZyhldnQuZGF0YS5zdWJzdHIoNCkpOwotICAgICAg
ICBlbHNlIGlmICgvRE9ORS8udGVzdChldnQuZGF0YSkpIHsKLSAgICAgICAgICAgIGxvZygiRE9O
RSIpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd29ya2VyLWNyZWF0ZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21ldGhvZHMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3Nl
LXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjczNWY0YgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29y
a2Vycy9yZXNvdXJjZXMvY2xvc2UtdGVzdC5qcwpAQCAtMCwwICsxLDY1IEBACitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCit2YXIgdGltZW91dCA9
IDA7CisvLyBTdGFydCB3aXRoIGFzeW5jIHRlc3RzCit0ZXN0QXN5bmMoKTsKKworZnVuY3Rpb24g
dGVzdEFzeW5jKCkgeworICAgIHZhciB3b3JrZXIgPSBjcmVhdGVXb3JrZXIoJ3Jlc291cmNlcy9j
bG9zZS5qcycpOworICAgIHdvcmtlci5vbmVycm9yID0gaGFuZGxlRXhjZXB0aW9uOworICAgIHdv
cmtlci5wb3N0TWVzc2FnZSgiYXN5bmMiKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rp
b24oZXZ0KQorICAgIHsKKyAgICAgICAgaWYgKC9ET05FLy50ZXN0KGV2dC5kYXRhKSkgeworICAg
ICAgICAgICAgLy8gR2l2ZSB3b3JrZXIgYSBjaGFuY2UgdG8gY29tcGxldGUgdGhlIHNodXRkb3du
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGxv
ZygiUEFTUzogQXN5bmMgdGVzdCIpOworICAgICAgICAgICAgICAgIHRlc3RTeW5jKCk7CisgICAg
ICAgICAgICB9LCAxMDAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZygiRVJS
T1IiKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rp
b24gdGVzdFN5bmMoKSB7CisgICAgdmFyIHdvcmtlciA9IGNyZWF0ZVdvcmtlcigncmVzb3VyY2Vz
L2Nsb3NlLmpzJyk7CisgICAgd29ya2VyLm9uZXJyb3IgPSBoYW5kbGVFeGNlcHRpb247CisgICAg
d29ya2VyLnBvc3RNZXNzYWdlKCJzeW5jIik7CisgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0
aW9uKGV2dCkKKyAgICB7CisgICAgICAgIGlmICgvRE9ORS8udGVzdChldnQuZGF0YSkpIHsKKyAg
ICAgICAgICAgIC8vIEdpdmUgd29ya2VyIGEgY2hhbmNlIHRvIGNvbXBsZXRlIHRoZSBzaHV0ZG93
bgorICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBs
b2coIlBBU1M6IHN5bmMgdGVzdCIpOworICAgICAgICAgICAgICAgIGxvZygiRE9ORSIpOworICAg
ICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDEwMDApOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbG9nKCJFUlJPUiIpOworICAgICAgICAgICAgZG9uZSgpOworICAg
ICAgICB9CisgICAgfQorfQorCisgICBmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBjbGVhclRpbWVv
dXQodGltZW91dCk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBoYW5k
bGVFeGNlcHRpb24oZXZ0KQoreworICAgIGxvZygiRVJST1IgLSBleGNlcHRpb24gdGhyb3duOiAi
ICsgZXZ0Lm1lc3NhZ2UpOworICAgIGRvbmUoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL2Ns
b3NlLmpzCmluZGV4IDcyNmQzOTMuLmUxZjEwYTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanMKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy9j
bG9zZS5qcwpAQCAtMSwzICsxLDUgQEAKK2ltcG9ydFNjcmlwdHMoIndvcmtlci1wcmUuanMiKTsK
KwogZnVuY3Rpb24gZG9uZSgpCiB7CiAgICAgcG9zdE1lc3NhZ2UoIkRPTkUiKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJj
ZXMvZmlsZS1ub3QtZm91bmQuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL2ZpbGUtbm90LWZvdW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjBiMjhhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL2ZpbGUtbm90LWZv
dW5kLmpzCkBAIC0wLDAgKzEsMjYgQEAKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworIH0KKwordmFyIGNvbnNvbGVfbWVzc2FnZXMg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ1bCIpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChjb25zb2xlX21lc3NhZ2VzKTsKKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgdmFy
IGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGl0ZW0uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGNvbnNvbGVfbWVzc2Fn
ZXMuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9CisKK3ZhciB3b3JrZXIgPSBjcmVhdGVXb3JrZXIoJ3Jl
c291cmNlcy94bWxodHRwcmVxdWVzdC1maWxlLW5vdC1mb3VuZC5qcycpOword29ya2VyLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2dCkKK3sKKyAgICBpZiAoL2xvZyAuKy8udGVzdChldnQuZGF0YSkp
CisgICAgICAgIGxvZyhldnQuZGF0YS5zdWJzdHIoNCkpOworICAgIGVsc2UgaWYgKC9ET05FLy50
ZXN0KGV2dC5kYXRhKSkgeworICAgICAgICBsb2coIlBBU1MiKTsKKyAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL21ldGhvZHMtYXN5bmMtdGVzdC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJj
ZXMvbWV0aG9kcy1hc3luYy10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjc1ZDYzYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL21ldGhvZHMtYXN5bmMtdGVzdC5qcwpAQCAt
MCwwICsxLDMyIEBACitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJvbCIpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlX21l
c3NhZ2VzKTsKKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgdmFyIGl0ZW0gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hp
bGQoaXRlbSk7Cit9CisKK3ZhciB3b3JrZXIgPSBjcmVhdGVXb3JrZXIoJ3Jlc291cmNlcy9tZXRo
b2RzLWFzeW5jLmpzJyk7Cit3b3JrZXIucG9zdE1lc3NhZ2UoIlNUQVJUIik7CisKK3dvcmtlci5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpCit7CisgICAgaWYgKC9sb2cgLisvLnRlc3QoZXZ0LmRh
dGEpKQorICAgICAgICBsb2coZXZ0LmRhdGEuc3Vic3RyKDQpKTsKKyAgICBlbHNlIGlmICgvRE9O
RS8udGVzdChldnQuZGF0YSkpIHsKKyAgICAgICAgbG9nKCJET05FIik7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9nKCJFUlJPUiIpOwor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvbWV0
aG9kcy1hc3luYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29y
a2Vycy9yZXNvdXJjZXMvbWV0aG9kcy1hc3luYy5qcwppbmRleCAyNmVmNTM4Li41ODMzYmUxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMv
cmVzb3VyY2VzL21ldGhvZHMtYXN5bmMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy9tZXRob2RzLWFzeW5jLmpzCkBAIC0xLDMg
KzEsNSBAQAoraW1wb3J0U2NyaXB0cygid29ya2VyLXByZS5qcyIpOworCiBvbm1lc3NhZ2UgPSBm
dW5jdGlvbihldnQpCiB7CiAgICAgaWYgKGV2dC5kYXRhID09ICJTVEFSVCIpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2Vz
L21ldGhvZHMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
d29ya2Vycy9yZXNvdXJjZXMvbWV0aG9kcy10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjhkM2RkYmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL21ldGhvZHMtdGVzdC5qcwpA
QCAtMCwwICsxLDI2IEBACitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvbCIpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xl
X21lc3NhZ2VzKTsKKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgdmFyIGl0ZW0gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5k
Q2hpbGQoaXRlbSk7Cit9CisKK3ZhciB3b3JrZXIgPSBjcmVhdGVXb3JrZXIoJ3Jlc291cmNlcy9t
ZXRob2RzLmpzJyk7Cit3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KQoreworICAgIGlm
ICgvbG9nIC4rLy50ZXN0KGV2dC5kYXRhKSkKKyAgICAgICAgbG9nKGV2dC5kYXRhLnN1YnN0cig0
KSk7CisgICAgZWxzZSBpZiAoL0RPTkUvLnRlc3QoZXZ0LmRhdGEpKSB7CisgICAgICAgIGxvZygi
RE9ORSIpOworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNv
dXJjZXMvbWV0aG9kcy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
d29ya2Vycy9yZXNvdXJjZXMvbWV0aG9kcy5qcwppbmRleCBmZWI5NmI3Li41OWUzNTU4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVz
b3VyY2VzL21ldGhvZHMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC93b3JrZXJzL3Jlc291cmNlcy9tZXRob2RzLmpzCkBAIC0xLDMgKzEsNSBAQAoraW1wb3J0
U2NyaXB0cygid29ya2VyLXByZS5qcyIpOworCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIHsKICAg
ICBwb3N0TWVzc2FnZSgibG9nICIgKyBtZXNzYWdlKTsKQEAgLTgsODkgKzEwLDkyIEBAIGZ1bmN0
aW9uIGRvbmUoKQogICAgIHBvc3RNZXNzYWdlKCJET05FIik7CiB9CiAKLS8vIHN5bmMKLXJlcSA9
IG5ldyBYTUxIdHRwUmVxdWVzdDsKLXJlcS5vcGVuKCJHRVQiLCAibWV0aG9kcy5jZ2kiLCBmYWxz
ZSk7Ci1yZXEuc2VuZCgiIik7Ci1sb2coJ0dFVCgiIik6ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFk
ZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgi
KSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJF
UVRZUEUiKSk7Ci0KLXJlcS5vcGVuKCJHRVQiLCAibWV0aG9kcy5jZ2kiLCBmYWxzZSk7Ci1yZXEu
c2VuZChudWxsKTsKLWxvZygnR0VUKG51bGwpOiAnICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJS
RVFNRVRIT0QiKSArICIoIiArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRTEVOR1RIIikgKyAi
IGJ5dGVzKSwgQ29udGVudC1UeXBlOiAiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFUWVBF
IikpOwotCi1yZXEub3BlbigiR0VUIiwgIm1ldGhvZHMuY2dpIiwgZmFsc2UpOwotcmVxLnNlbmQo
IjEyMyIpOwotbG9nKCdHRVQoIjEyMyIpOiAnICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFN
RVRIT0QiKSArICIoIiArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRTEVOR1RIIikgKyAiIGJ5
dGVzKSwgQ29udGVudC1UeXBlOiAiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFUWVBFIikp
OwotCi1yZXEub3BlbigiUE9TVCIsICJtZXRob2RzLmNnaSIsIGZhbHNlKTsKLXJlcS5zZW5kKCIi
KTsKLWxvZygnUE9TVCgiIik6ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIp
ICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBD
b250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7Ci0KLXJl
cS5vcGVuKCJQT1NUIiwgIm1ldGhvZHMuY2dpIiwgZmFsc2UpOwotcmVxLnNlbmQobnVsbCk7Ci1s
b2coJ1BPU1QobnVsbCk6ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsg
IigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250
ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7Ci0KLXJlcS5v
cGVuKCJQT1NUIiwgIm1ldGhvZHMuY2dpIiwgZmFsc2UpOwotcmVxLnNlbmQoIjEyMyIpOwotbG9n
KCdQT1NUKCIxMjMiKTogJyArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRTUVUSE9EIikgKyAi
KCIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUUxFTkdUSCIpICsgIiBieXRlcyksIENvbnRl
bnQtVHlwZTogIiArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRVFlQRSIpKTsKLQotcmVxLm9w
ZW4oIlBVVCIsICJtZXRob2RzLmNnaSIsIGZhbHNlKTsKLXJlcS5zZW5kKCIiKTsKLWxvZygnUFVU
KCIiKTogJyArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRTUVUSE9EIikgKyAiKCIgKyByZXEu
Z2V0UmVzcG9uc2VIZWFkZXIoIlJFUUxFTkdUSCIpICsgIiBieXRlcyksIENvbnRlbnQtVHlwZTog
IiArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRVFlQRSIpKTsKLQotcmVxLm9wZW4oIlBVVCIs
ICJtZXRob2RzLmNnaSIsIGZhbHNlKTsKLXJlcS5zZW5kKG51bGwpOwotbG9nKCdQVVQobnVsbCk6
ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJl
c3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyBy
ZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7Ci0KLXJlcS5vcGVuKCJQVVQiLCAibWV0
aG9kcy5jZ2kiLCBmYWxzZSk7Ci1yZXEuc2VuZCgiMTIzIik7Ci1sb2coJ1BVVCgiMTIzIik6ICcg
KyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3Bv
bnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEu
Z2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7Ci0KLXJlcS5vcGVuKCJERUxFVEUiLCAibWV0
aG9kcy5jZ2kiLCBmYWxzZSk7Ci1yZXEuc2VuZCgiIik7Ci1sb2coJ0RFTEVURSgiIik6ICcgKyBy
ZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3BvbnNl
SGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEuZ2V0
UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7Ci0KLXJlcS5vcGVuKCJERUxFVEUiLCAibWV0aG9k
cy5jZ2kiLCBmYWxzZSk7Ci1yZXEuc2VuZChudWxsKTsKLWxvZygnREVMRVRFKG51bGwpOiAnICsg
cmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFNRVRIT0QiKSArICIoIiArIHJlcS5nZXRSZXNwb25z
ZUhlYWRlcigiUkVRTEVOR1RIIikgKyAiIGJ5dGVzKSwgQ29udGVudC1UeXBlOiAiICsgcmVxLmdl
dFJlc3BvbnNlSGVhZGVyKCJSRVFUWVBFIikpOwotCi1yZXEub3BlbigiREVMRVRFIiwgIm1ldGhv
ZHMuY2dpIiwgZmFsc2UpOwotcmVxLnNlbmQoIjEyMyIpOwotbG9nKCdERUxFVEUoIjEyMyIpOiAn
ICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFNRVRIT0QiKSArICIoIiArIHJlcS5nZXRSZXNw
b25zZUhlYWRlcigiUkVRTEVOR1RIIikgKyAiIGJ5dGVzKSwgQ29udGVudC1UeXBlOiAiICsgcmVx
LmdldFJlc3BvbnNlSGVhZGVyKCJSRVFUWVBFIikpOwotCi1yZXEub3BlbigiSEVBRCIsICJtZXRo
b2RzLmNnaSIsIGZhbHNlKTsKLXJlcS5zZW5kKCIiKTsKLWxvZygnSEVBRCgiIik6ICcgKyByZXEu
Z2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVh
ZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVz
cG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7Ci0KLXJlcS5vcGVuKCJIRUFEIiwgIm1ldGhvZHMuY2dp
IiwgZmFsc2UpOwotcmVxLnNlbmQobnVsbCk7Ci1sb2coJ0hFQUQobnVsbCk6ICcgKyByZXEuZ2V0
UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVy
KCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9u
c2VIZWFkZXIoIlJFUVRZUEUiKSk7Ci0KLXJlcS5vcGVuKCJIRUFEIiwgIm1ldGhvZHMuY2dpIiwg
ZmFsc2UpOwotcmVxLnNlbmQoIjEyMyIpOwotbG9nKCdIRUFEKCIxMjMiKTogJyArIHJlcS5nZXRS
ZXNwb25zZUhlYWRlcigiUkVRTUVUSE9EIikgKyAiKCIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIo
IlJFUUxFTkdUSCIpICsgIiBieXRlcyksIENvbnRlbnQtVHlwZTogIiArIHJlcS5nZXRSZXNwb25z
ZUhlYWRlcigiUkVRVFlQRSIpKTsKLQotcmVxLm9wZW4oIldLRk9PQkFSIiwgIm1ldGhvZHMuY2dp
IiwgZmFsc2UpOwotcmVxLnNlbmQoIiIpOwotbG9nKCdXS0ZPT0JBUigiIik6ICcgKyByZXEuZ2V0
UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVy
KCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9u
c2VIZWFkZXIoIlJFUVRZUEUiKSk7Ci0KLXJlcS5vcGVuKCJXS0ZPT0JBUiIsICJtZXRob2RzLmNn
aSIsIGZhbHNlKTsKLXJlcS5zZW5kKG51bGwpOwotbG9nKCdXS0ZPT0JBUihudWxsKTogJyArIHJl
cS5nZXRSZXNwb25zZUhlYWRlcigiUkVRTUVUSE9EIikgKyAiKCIgKyByZXEuZ2V0UmVzcG9uc2VI
ZWFkZXIoIlJFUUxFTkdUSCIpICsgIiBieXRlcyksIENvbnRlbnQtVHlwZTogIiArIHJlcS5nZXRS
ZXNwb25zZUhlYWRlcigiUkVRVFlQRSIpKTsKLQotcmVxLm9wZW4oIldLRk9PQkFSIiwgIm1ldGhv
ZHMuY2dpIiwgZmFsc2UpOwotcmVxLnNlbmQoIjEyMyIpOwotbG9nKCdXS0ZPT0JBUigiMTIzIik6
ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJl
c3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyBy
ZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7Ci0KLXJlcS5vcGVuKCJTRUFSQ0giLCAi
bWV0aG9kcy5jZ2kiLCBmYWxzZSk7Ci1yZXEuc2VuZCgiIik7Ci1sb2coJ1NFQVJDSCgiIik6ICcg
KyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3Bv
bnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEu
Z2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7Ci0KLXJlcS5vcGVuKCJTRUFSQ0giLCAibWV0
aG9kcy5jZ2kiLCBmYWxzZSk7Ci1yZXEuc2VuZChudWxsKTsKLWxvZygnU0VBUkNIKG51bGwpOiAn
ICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFNRVRIT0QiKSArICIoIiArIHJlcS5nZXRSZXNw
b25zZUhlYWRlcigiUkVRTEVOR1RIIikgKyAiIGJ5dGVzKSwgQ29udGVudC1UeXBlOiAiICsgcmVx
LmdldFJlc3BvbnNlSGVhZGVyKCJSRVFUWVBFIikpOwotCi1yZXEub3BlbigiU0VBUkNIIiwgIm1l
dGhvZHMuY2dpIiwgZmFsc2UpOwotcmVxLnNlbmQoIjEyMyIpOwotbG9nKCdTRUFSQ0goIjEyMyIp
OiAnICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFNRVRIT0QiKSArICIoIiArIHJlcS5nZXRS
ZXNwb25zZUhlYWRlcigiUkVRTEVOR1RIIikgKyAiIGJ5dGVzKSwgQ29udGVudC1UeXBlOiAiICsg
cmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFUWVBFIikpOwotZG9uZSgpOworZnVuY3Rpb24gaW5p
dCgpCit7CisgICAgLy8gc3luYworICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICBy
ZXEub3BlbigiR0VUIiwgIm1ldGhvZHMuY2dpIiwgZmFsc2UpOworICAgIHJlcS5zZW5kKCIiKTsK
KyAgICBsb2coJ0dFVCgiIik6ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIp
ICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBD
b250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7CisKKyAg
ICByZXEub3BlbigiR0VUIiwgIm1ldGhvZHMuY2dpIiwgZmFsc2UpOworICAgIHJlcS5zZW5kKG51
bGwpOworICAgIGxvZygnR0VUKG51bGwpOiAnICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFN
RVRIT0QiKSArICIoIiArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRTEVOR1RIIikgKyAiIGJ5
dGVzKSwgQ29udGVudC1UeXBlOiAiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFUWVBFIikp
OworCisgICAgcmVxLm9wZW4oIkdFVCIsICJtZXRob2RzLmNnaSIsIGZhbHNlKTsKKyAgICByZXEu
c2VuZCgiMTIzIik7CisgICAgbG9nKCdHRVQoIjEyMyIpOiAnICsgcmVxLmdldFJlc3BvbnNlSGVh
ZGVyKCJSRVFNRVRIT0QiKSArICIoIiArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRTEVOR1RI
IikgKyAiIGJ5dGVzKSwgQ29udGVudC1UeXBlOiAiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJS
RVFUWVBFIikpOworCisgICAgcmVxLm9wZW4oIlBPU1QiLCAibWV0aG9kcy5jZ2kiLCBmYWxzZSk7
CisgICAgcmVxLnNlbmQoIiIpOworICAgIGxvZygnUE9TVCgiIik6ICcgKyByZXEuZ2V0UmVzcG9u
c2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFM
RU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFk
ZXIoIlJFUVRZUEUiKSk7CisKKyAgICByZXEub3BlbigiUE9TVCIsICJtZXRob2RzLmNnaSIsIGZh
bHNlKTsKKyAgICByZXEuc2VuZChudWxsKTsKKyAgICBsb2coJ1BPU1QobnVsbCk6ICcgKyByZXEu
Z2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVh
ZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVz
cG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7CisKKyAgICByZXEub3BlbigiUE9TVCIsICJtZXRob2Rz
LmNnaSIsIGZhbHNlKTsKKyAgICByZXEuc2VuZCgiMTIzIik7CisgICAgbG9nKCdQT1NUKCIxMjMi
KTogJyArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRTUVUSE9EIikgKyAiKCIgKyByZXEuZ2V0
UmVzcG9uc2VIZWFkZXIoIlJFUUxFTkdUSCIpICsgIiBieXRlcyksIENvbnRlbnQtVHlwZTogIiAr
IHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRVFlQRSIpKTsKKworICAgIHJlcS5vcGVuKCJQVVQi
LCAibWV0aG9kcy5jZ2kiLCBmYWxzZSk7CisgICAgcmVxLnNlbmQoIiIpOworICAgIGxvZygnUFVU
KCIiKTogJyArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRTUVUSE9EIikgKyAiKCIgKyByZXEu
Z2V0UmVzcG9uc2VIZWFkZXIoIlJFUUxFTkdUSCIpICsgIiBieXRlcyksIENvbnRlbnQtVHlwZTog
IiArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRVFlQRSIpKTsKKworICAgIHJlcS5vcGVuKCJQ
VVQiLCAibWV0aG9kcy5jZ2kiLCBmYWxzZSk7CisgICAgcmVxLnNlbmQobnVsbCk7CisgICAgbG9n
KCdQVVQobnVsbCk6ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigi
ICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50
LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7CisKKyAgICByZXEu
b3BlbigiUFVUIiwgIm1ldGhvZHMuY2dpIiwgZmFsc2UpOworICAgIHJlcS5zZW5kKCIxMjMiKTsK
KyAgICBsb2coJ1BVVCgiMTIzIik6ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhP
RCIpICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMp
LCBDb250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7CisK
KyAgICByZXEub3BlbigiREVMRVRFIiwgIm1ldGhvZHMuY2dpIiwgZmFsc2UpOworICAgIHJlcS5z
ZW5kKCIiKTsKKyAgICBsb2coJ0RFTEVURSgiIik6ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIo
IlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSAr
ICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZ
UEUiKSk7CisKKyAgICByZXEub3BlbigiREVMRVRFIiwgIm1ldGhvZHMuY2dpIiwgZmFsc2UpOwor
ICAgIHJlcS5zZW5kKG51bGwpOworICAgIGxvZygnREVMRVRFKG51bGwpOiAnICsgcmVxLmdldFJl
c3BvbnNlSGVhZGVyKCJSRVFNRVRIT0QiKSArICIoIiArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigi
UkVRTEVOR1RIIikgKyAiIGJ5dGVzKSwgQ29udGVudC1UeXBlOiAiICsgcmVxLmdldFJlc3BvbnNl
SGVhZGVyKCJSRVFUWVBFIikpOworCisgICAgcmVxLm9wZW4oIkRFTEVURSIsICJtZXRob2RzLmNn
aSIsIGZhbHNlKTsKKyAgICByZXEuc2VuZCgiMTIzIik7CisgICAgbG9nKCdERUxFVEUoIjEyMyIp
OiAnICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFNRVRIT0QiKSArICIoIiArIHJlcS5nZXRS
ZXNwb25zZUhlYWRlcigiUkVRTEVOR1RIIikgKyAiIGJ5dGVzKSwgQ29udGVudC1UeXBlOiAiICsg
cmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFUWVBFIikpOworCisgICAgcmVxLm9wZW4oIkhFQUQi
LCAibWV0aG9kcy5jZ2kiLCBmYWxzZSk7CisgICAgcmVxLnNlbmQoIiIpOworICAgIGxvZygnSEVB
RCgiIik6ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVx
LmdldFJlc3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6
ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7CisKKyAgICByZXEub3Blbigi
SEVBRCIsICJtZXRob2RzLmNnaSIsIGZhbHNlKTsKKyAgICByZXEuc2VuZChudWxsKTsKKyAgICBs
b2coJ0hFQUQobnVsbCk6ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIpICsg
IigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBDb250
ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7CisKKyAgICBy
ZXEub3BlbigiSEVBRCIsICJtZXRob2RzLmNnaSIsIGZhbHNlKTsKKyAgICByZXEuc2VuZCgiMTIz
Iik7CisgICAgbG9nKCdIRUFEKCIxMjMiKTogJyArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVR
TUVUSE9EIikgKyAiKCIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUUxFTkdUSCIpICsgIiBi
eXRlcyksIENvbnRlbnQtVHlwZTogIiArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRVFlQRSIp
KTsKKworICAgIHJlcS5vcGVuKCJXS0ZPT0JBUiIsICJtZXRob2RzLmNnaSIsIGZhbHNlKTsKKyAg
ICByZXEuc2VuZCgiIik7CisgICAgbG9nKCdXS0ZPT0JBUigiIik6ICcgKyByZXEuZ2V0UmVzcG9u
c2VIZWFkZXIoIlJFUU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFM
RU5HVEgiKSArICIgYnl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFk
ZXIoIlJFUVRZUEUiKSk7CisKKyAgICByZXEub3BlbigiV0tGT09CQVIiLCAibWV0aG9kcy5jZ2ki
LCBmYWxzZSk7CisgICAgcmVxLnNlbmQobnVsbCk7CisgICAgbG9nKCdXS0ZPT0JBUihudWxsKTog
JyArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRTUVUSE9EIikgKyAiKCIgKyByZXEuZ2V0UmVz
cG9uc2VIZWFkZXIoIlJFUUxFTkdUSCIpICsgIiBieXRlcyksIENvbnRlbnQtVHlwZTogIiArIHJl
cS5nZXRSZXNwb25zZUhlYWRlcigiUkVRVFlQRSIpKTsKKworICAgIHJlcS5vcGVuKCJXS0ZPT0JB
UiIsICJtZXRob2RzLmNnaSIsIGZhbHNlKTsKKyAgICByZXEuc2VuZCgiMTIzIik7CisgICAgbG9n
KCdXS0ZPT0JBUigiMTIzIik6ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUU1FVEhPRCIp
ICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIgYnl0ZXMpLCBD
b250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUiKSk7CisKKyAg
ICByZXEub3BlbigiU0VBUkNIIiwgIm1ldGhvZHMuY2dpIiwgZmFsc2UpOworICAgIHJlcS5zZW5k
KCIiKTsKKyAgICBsb2coJ1NFQVJDSCgiIik6ICcgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJF
UU1FVEhPRCIpICsgIigiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFMRU5HVEgiKSArICIg
Ynl0ZXMpLCBDb250ZW50LVR5cGU6ICIgKyByZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlJFUVRZUEUi
KSk7CisKKyAgICByZXEub3BlbigiU0VBUkNIIiwgIm1ldGhvZHMuY2dpIiwgZmFsc2UpOworICAg
IHJlcS5zZW5kKG51bGwpOworICAgIGxvZygnU0VBUkNIKG51bGwpOiAnICsgcmVxLmdldFJlc3Bv
bnNlSGVhZGVyKCJSRVFNRVRIT0QiKSArICIoIiArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVR
TEVOR1RIIikgKyAiIGJ5dGVzKSwgQ29udGVudC1UeXBlOiAiICsgcmVxLmdldFJlc3BvbnNlSGVh
ZGVyKCJSRVFUWVBFIikpOworCisgICAgcmVxLm9wZW4oIlNFQVJDSCIsICJtZXRob2RzLmNnaSIs
IGZhbHNlKTsKKyAgICByZXEuc2VuZCgiMTIzIik7CisgICAgbG9nKCdTRUFSQ0goIjEyMyIpOiAn
ICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFNRVRIT0QiKSArICIoIiArIHJlcS5nZXRSZXNw
b25zZUhlYWRlcigiUkVRTEVOR1RIIikgKyAiIGJ5dGVzKSwgQ29udGVudC1UeXBlOiAiICsgcmVx
LmdldFJlc3BvbnNlSGVhZGVyKCJSRVFUWVBFIikpOworICAgIGRvbmUoKTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJj
ZXMvc2hhcmVkLXdvcmtlci1jcmVhdGUuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY3JlYXRlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NmMwMWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2Vz
L3NoYXJlZC13b3JrZXItY3JlYXRlLmpzCkBAIC0wLDAgKzEsOCBAQAorLy8gTWFrZSBhIFNoYXJl
ZFdvcmtlciB0aGF0IGhhcyB0aGUgc2FtZSBleHRlcm5hbCBpbnRlcmZhY2UgYXMgYSBEZWRpY2F0
ZWRXb3JrZXIsIHRvIHVzZSBpbiBzaGFyZWQgdGVzdCBjb2RlLgorZnVuY3Rpb24gY3JlYXRlV29y
a2VyKHVybCkKK3sKKyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcih1cmwsIHVybCk7
CisgICAgd29ya2VyLnBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsgd29ya2VyLm9u
bWVzc2FnZShldmVudCk7IH07CisgICAgd29ya2VyLnBvc3RNZXNzYWdlID0gZnVuY3Rpb24obWVz
c2FnZSwgcG9ydCkgeyB3b3JrZXIucG9ydC5wb3N0TWVzc2FnZShtZXNzYWdlLCBwb3J0KTsgfTsK
KyAgICByZXR1cm4gd29ya2VyOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItY3JlYXRlLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItY3JlYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNTJjNjYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1jcmVhdGUuanMKQEAgLTAsMCArMSw0IEBACitmdW5j
dGlvbiBjcmVhdGVXb3JrZXIodXJsKQoreworICAgIHJldHVybiBuZXcgV29ya2VyKHVybCk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtl
cnMvcmVzb3VyY2VzL3dvcmtlci1wcmUuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1wcmUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uM2IyOGYyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXBy
ZS5qcwpAQCAtMCwwICsxLDE1IEBACisvLyBDb2RlIHRvIHByb3ZpZGUgYSBjb25zaXN0ZW50IHRl
c3QgaW50ZXJmYWNlIGZvciB3b3JrZXJzIGFuZCBzaGFyZWQgd29ya2Vycy4KK2lmIChzZWxmLnBv
c3RNZXNzYWdlKSB7CisgICAgaWYgKHNlbGYuaW5pdCkKKyAgICAgICAgaW5pdCgpOworIH0gZWxz
ZSB7CisgICAgc2VsZi5vbmNvbm5lY3QgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBzZWxm
LnBvc3RNZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZSkgeyBldmVudC5tZXNzYWdlUG9ydC5wb3N0
TWVzc2FnZShtZXNzYWdlKTsgfTsKKyAgICAgICAgZXZlbnQubWVzc2FnZVBvcnQub25tZXNzYWdl
ID0gZnVuY3Rpb24gKGV2dCkgeworICAgICAgICAgICAgaWYgKHNlbGYub25tZXNzYWdlKQorICAg
ICAgICAgICAgICAgIHNlbGYub25tZXNzYWdlKGV2dCk7CisgICAgICAgIH07CisgICAgICAgIGlm
IChzZWxmLmluaXQpCisgICAgICAgICAgICBpbml0KCk7CisgICAgfTsKKyB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2Vz
L3htbGh0dHByZXF1ZXN0LWZpbGUtbm90LWZvdW5kLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1maWxlLW5v
dC1mb3VuZC5qcwppbmRleCAwN2ZlYTY2Li42ZGZlMjUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL3htbGh0dHByZXF1
ZXN0LWZpbGUtbm90LWZvdW5kLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMveG1saHR0cHJlcXVlc3QtZmlsZS1ub3QtZm91bmQu
anMKQEAgLTEsMyArMSw1IEBACitpbXBvcnRTY3JpcHRzKCJ3b3JrZXItcHJlLmpzIik7CisKIGZ1
bmN0aW9uIGxvZyhtZXNzYWdlKQogewogICAgIHBvc3RNZXNzYWdlKCJsb2cgIiArIG1lc3NhZ2Up
OwpAQCAtOCwxMSArMTAsMTQgQEAgZnVuY3Rpb24gZG9uZSgpCiAgICAgcG9zdE1lc3NhZ2UoIkRP
TkUiKTsKIH0KIAotcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwotdHJ5IHsKLSAgICByZXEub3Bl
bigiR0VUIiwgIm1pc3NpbmctZmlsZSIsIGZhbHNlKTsKLSAgICByZXEuc2VuZCgpOwotfSBjYXRj
aCAoZSkgewotICAgIGxvZygiRXhjZXB0aW9uIHJlY2VpdmVkLiIpOwotfQotZG9uZSgpOworZnVu
Y3Rpb24gaW5pdCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1
ZXN0OworICAgICAgICByZXEub3BlbigiR0VUIiwgIm1pc3NpbmctZmlsZSIsIGZhbHNlKTsKKyAg
ICAgICAgcmVxLnNlbmQoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZygiRXhjZXB0
aW9uIHJlY2VpdmVkLiIpOworICAgIH0KKyAgICBkb25lKCk7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIt
Y2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC93b3JrZXJzL3NoYXJlZC13b3JrZXItY2xvc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMjMzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jbG9z
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUZXN0cyBpbnZva2luZyBjbG9zZSgpIGlu
IHRoZSBtaWRkbGUgb2YgYW4gWE1MSHR0cFJlcXVlc3QgaW4gYSBzaGFyZWQgd29ya2VyLgorCitQ
QVNTOiBBc3luYyB0ZXN0CitQQVNTOiBzeW5jIHRlc3QKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIt
Y2xvc2UuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNsb3NlLmh0bWwtZGlzYWJsZWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQxNzkzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNs
b3NlLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw2IEBACis8Ym9keT4KKzxwPlRlc3RzIGludm9r
aW5nIGNsb3NlKCkgaW4gdGhlIG1pZGRsZSBvZiBhbiBYTUxIdHRwUmVxdWVzdCBpbiBhIHNoYXJl
ZCB3b3JrZXIuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC13b3JrZXItY3JlYXRlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvY2xvc2UtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1t
ZXRob2RzLWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLW1ldGhvZHMtYXN5bmMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNGMwZTIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1tZXRob2RzLWFzeW5jLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitH
RVQgYW5kIFBPU1Qgc2hvdWxkIG5vdCBiZSB0aGUgb25seSBIVFRQIG1ldGhvZHMgaW1wbGVtZW50
ZWQgaW4gWE1MSHR0cFJlcXVlc3QgZm9yIFNoYXJlZFdvcmtlcnMuCisKK0dFVCgiIik6IEdFVChu
dWxsIGJ5dGVzKSwgQ29udGVudC1UeXBlOiBudWxsCitHRVQobnVsbCk6IEdFVChudWxsIGJ5dGVz
KSwgQ29udGVudC1UeXBlOiBudWxsCitHRVQoIjEyMyIpOiBHRVQobnVsbCBieXRlcyksIENvbnRl
bnQtVHlwZTogbnVsbAorUE9TVCgiIik6IFBPU1QoMCBieXRlcyksIENvbnRlbnQtVHlwZTogYXBw
bGljYXRpb24veG1sCitQT1NUKG51bGwpOiBQT1NUKDAgYnl0ZXMpLCBDb250ZW50LVR5cGU6IG51
bGwKK1BPU1QoIjEyMyIpOiBQT1NUKDMgYnl0ZXMpLCBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9u
L3htbAorUFVUKCIiKTogUFVUKDAgYnl0ZXMpLCBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3ht
bAorUFVUKG51bGwpOiBQVVQoMCBieXRlcyksIENvbnRlbnQtVHlwZTogbnVsbAorUFVUKCIxMjMi
KTogUFVUKDMgYnl0ZXMpLCBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3htbAorREVMRVRFKCIi
KTogREVMRVRFKDAgYnl0ZXMpLCBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3htbAorREVMRVRF
KG51bGwpOiBERUxFVEUoMCBieXRlcyksIENvbnRlbnQtVHlwZTogbnVsbAorREVMRVRFKCIxMjMi
KTogREVMRVRFKDMgYnl0ZXMpLCBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3htbAorSEVBRCgi
Iik6IEhFQUQoMCBieXRlcyksIENvbnRlbnQtVHlwZTogbnVsbAorSEVBRChudWxsKTogSEVBRCgw
IGJ5dGVzKSwgQ29udGVudC1UeXBlOiBudWxsCitIRUFEKCIxMjMiKTogSEVBRCgwIGJ5dGVzKSwg
Q29udGVudC1UeXBlOiBudWxsCitXS0ZPT0JBUigiIik6IFdLRk9PQkFSKDAgYnl0ZXMpLCBDb250
ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3htbAorV0tGT09CQVIobnVsbCk6IFdLRk9PQkFSKDAgYnl0
ZXMpLCBDb250ZW50LVR5cGU6IG51bGwKK1dLRk9PQkFSKCIxMjMiKTogV0tGT09CQVIoMyBieXRl
cyksIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veG1sCitTRUFSQ0goIiIpOiBTRUFSQ0goMCBi
eXRlcyksIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veG1sCitTRUFSQ0gobnVsbCk6IFNFQVJD
SCgwIGJ5dGVzKSwgQ29udGVudC1UeXBlOiBudWxsCitTRUFSQ0goIjEyMyIpOiBTRUFSQ0goMyBi
eXRlcyksIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veG1sCitET05FCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1tZXRob2RzLWFzeW5jLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1tZXRob2RzLWFzeW5jLmh0bWwtZGlz
YWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhNjQyZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vy
cy9zaGFyZWQtd29ya2VyLW1ldGhvZHMtYXN5bmMuaHRtbC1kaXNhYmxlZApAQCAtMCwwICsxLDYg
QEAKKzxib2R5PgorPHA+R0VUIGFuZCBQT1NUIHNob3VsZCBub3QgYmUgdGhlIG9ubHkgSFRUUCBt
ZXRob2RzIGltcGxlbWVudGVkIGluIFhNTEh0dHBSZXF1ZXN0IGZvciBTaGFyZWRXb3JrZXJzLjwv
cD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQt
d29ya2VyLWNyZWF0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21ldGhv
ZHMtYXN5bmMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1tZXRo
b2RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
d29ya2Vycy9zaGFyZWQtd29ya2VyLW1ldGhvZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNGMwZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1tZXRo
b2RzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitHRVQgYW5kIFBPU1Qgc2hvdWxkIG5v
dCBiZSB0aGUgb25seSBIVFRQIG1ldGhvZHMgaW1wbGVtZW50ZWQgaW4gWE1MSHR0cFJlcXVlc3Qg
Zm9yIFNoYXJlZFdvcmtlcnMuCisKK0dFVCgiIik6IEdFVChudWxsIGJ5dGVzKSwgQ29udGVudC1U
eXBlOiBudWxsCitHRVQobnVsbCk6IEdFVChudWxsIGJ5dGVzKSwgQ29udGVudC1UeXBlOiBudWxs
CitHRVQoIjEyMyIpOiBHRVQobnVsbCBieXRlcyksIENvbnRlbnQtVHlwZTogbnVsbAorUE9TVCgi
Iik6IFBPU1QoMCBieXRlcyksIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veG1sCitQT1NUKG51
bGwpOiBQT1NUKDAgYnl0ZXMpLCBDb250ZW50LVR5cGU6IG51bGwKK1BPU1QoIjEyMyIpOiBQT1NU
KDMgYnl0ZXMpLCBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3htbAorUFVUKCIiKTogUFVUKDAg
Ynl0ZXMpLCBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3htbAorUFVUKG51bGwpOiBQVVQoMCBi
eXRlcyksIENvbnRlbnQtVHlwZTogbnVsbAorUFVUKCIxMjMiKTogUFVUKDMgYnl0ZXMpLCBDb250
ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3htbAorREVMRVRFKCIiKTogREVMRVRFKDAgYnl0ZXMpLCBD
b250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3htbAorREVMRVRFKG51bGwpOiBERUxFVEUoMCBieXRl
cyksIENvbnRlbnQtVHlwZTogbnVsbAorREVMRVRFKCIxMjMiKTogREVMRVRFKDMgYnl0ZXMpLCBD
b250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3htbAorSEVBRCgiIik6IEhFQUQoMCBieXRlcyksIENv
bnRlbnQtVHlwZTogbnVsbAorSEVBRChudWxsKTogSEVBRCgwIGJ5dGVzKSwgQ29udGVudC1UeXBl
OiBudWxsCitIRUFEKCIxMjMiKTogSEVBRCgwIGJ5dGVzKSwgQ29udGVudC1UeXBlOiBudWxsCitX
S0ZPT0JBUigiIik6IFdLRk9PQkFSKDAgYnl0ZXMpLCBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9u
L3htbAorV0tGT09CQVIobnVsbCk6IFdLRk9PQkFSKDAgYnl0ZXMpLCBDb250ZW50LVR5cGU6IG51
bGwKK1dLRk9PQkFSKCIxMjMiKTogV0tGT09CQVIoMyBieXRlcyksIENvbnRlbnQtVHlwZTogYXBw
bGljYXRpb24veG1sCitTRUFSQ0goIiIpOiBTRUFSQ0goMCBieXRlcyksIENvbnRlbnQtVHlwZTog
YXBwbGljYXRpb24veG1sCitTRUFSQ0gobnVsbCk6IFNFQVJDSCgwIGJ5dGVzKSwgQ29udGVudC1U
eXBlOiBudWxsCitTRUFSQ0goIjEyMyIpOiBTRUFSQ0goMyBieXRlcyksIENvbnRlbnQtVHlwZTog
YXBwbGljYXRpb24veG1sCitET05FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1tZXRob2RzLmh0bWwtZGlzYWJs
ZWQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1tZXRob2RzLmh0bWwtZGlzYWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNmFhN2IzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLW1ldGhvZHMuaHRtbC1kaXNh
YmxlZApAQCAtMCwwICsxLDcgQEAKKzxodG1sPgorPGJvZHk+Cis8cD5HRVQgYW5kIFBPU1Qgc2hv
dWxkIG5vdCBiZSB0aGUgb25seSBIVFRQIG1ldGhvZHMgaW1wbGVtZW50ZWQgaW4gWE1MSHR0cFJl
cXVlc3QgZm9yIFNoYXJlZFdvcmtlcnMuPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFy
ZWQtd29ya2VyLWNyZWF0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21l
dGhvZHMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci14aHItZmlsZS1ub3QtZm91bmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIteGhyLWZpbGUtbm90LWZvdW5k
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWUxNDMx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC93b3JrZXJzL3NoYXJlZC13b3JrZXIteGhyLWZpbGUtbm90LWZvdW5kLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKK1JlcXVlc3QgYSBmaWxlIHRoYXQgaXNuJ3QgcHJlc2VudCBvbiB0aGUg
c2VydmVyIGluIFhNTEh0dHBSZXF1ZXN0IGluIGEgc2hhcmVkIHdvcmtlci4gSWYgdGhpcyB0ZXN0
IHBhc3NlcywgdGhlcmUgc2hvdWxkIGJlIGEgc2luZ2xlIFBBU1MgYmVsb3cuCisKK1BBU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLXhoci1maWxlLW5vdC1mb3VuZC5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIteGhyLWZp
bGUtbm90LWZvdW5kLmh0bWwtZGlzYWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNDM3MDM2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXhoci1maWxlLW5vdC1mb3VuZC5o
dG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+Cis8Ym9keT4KKzxwPlJlcXVlc3Qg
YSBmaWxlIHRoYXQgaXNuJ3QgcHJlc2VudCBvbiB0aGUgc2VydmVyIGluIFhNTEh0dHBSZXF1ZXN0
IGluIGEgc2hhcmVkIHdvcmtlci4gIElmIHRoaXMgdGVzdCBwYXNzZXMsIHRoZXJlIHNob3VsZCBi
ZSBhIHNpbmdsZSBQQVNTIGJlbG93LjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LXdvcmtlci1jcmVhdGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxl
LW5vdC1mb3VuZC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMveG1saHR0cHJlcXVl
c3QtZmlsZS1ub3QtZm91bmQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvd29ya2Vycy94bWxodHRwcmVxdWVzdC1maWxlLW5vdC1mb3VuZC5odG1sCmluZGV4IDYw
MzdkNjUuLmNhMTg4MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3Qvd29ya2Vycy94bWxodHRwcmVxdWVzdC1maWxlLW5vdC1mb3VuZC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy94bWxodHRwcmVx
dWVzdC1maWxlLW5vdC1mb3VuZC5odG1sCkBAIC0xLDMzICsxLDcgQEAKIDxodG1sPgogPGJvZHk+
CiA8cD5SZXF1ZXN0IGEgZmlsZSB0aGF0IGlzbid0IHByZXNlbnQgb24gdGhlIHNlcnZlciBpbiBY
TUxIdHRwUmVxdWVzdCBpbiBhIHdvcmtlci4gIElmIHRoaXMgdGVzdCBwYXNzZXMsIHRoZXJlIHNo
b3VsZCBiZSBhIHNpbmdsZSBQQVNTIGJlbG93LjwvcD4KLTxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKLSAgICB9Ci0KLSAgICB2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInVsIik7Ci0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3Nh
Z2VzKTsKLQotICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotICAgIHsKLSAgICAgICAgdmFyIGl0
ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwotICAgICAgICBpdGVtLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKLSAgICAgICAgY29uc29sZV9t
ZXNzYWdlcy5hcHBlbmRDaGlsZChpdGVtKTsKLSAgICB9Ci0KLSAgICB2YXIgd29ya2VyID0gbmV3
IFdvcmtlcigncmVzb3VyY2VzL3htbGh0dHByZXF1ZXN0LWZpbGUtbm90LWZvdW5kLmpzJyk7Ci0g
ICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkKLSAgICB7Ci0gICAgICAgIGlmICgv
bG9nIC4rLy50ZXN0KGV2dC5kYXRhKSkKLSAgICAgICAgICAgIGxvZyhldnQuZGF0YS5zdWJzdHIo
NCkpOwotICAgICAgICBlbHNlIGlmICgvRE9ORS8udGVzdChldnQuZGF0YSkpIHsKLSAgICAgICAg
ICAgIGxvZygiUEFTUyIpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Ci0gICAgICAgIH0KLSAgICB9Ci08L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd29y
a2VyLWNyZWF0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtbm90
LWZvdW5kLmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU0MjUxNS4uNjEyOWE2ZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAwOS0wOC0xNSAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlZFdvcmtlcnMgbmVlZCB0byBzdXBwb3J0IGxvYWRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODM0MgorCisgICAgICAgIEFkZGVkIGxvYWRl
ciBzdXBwb3J0IHRvIHNoYXJlZCB3b3JrZXJzLCBhbmQgcmVmYWN0b3JlZCB3b3JrZXIgdGVzdHMg
dG8gYWxzbyB0ZXN0IFNoYXJlZFdvcmtlcnMKKworICAgICAgICAqIHdvcmtlcnMvRGVmYXVsdFNo
YXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
UHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIpOgorICAgICAgICBGb3J3YXJkcyBsb2FkIHJlcXVlc3Rz
IHRvIGFuIGFyYml0cmFyeSBkb2N1bWVudCBmcm9tIHRoZSBsaXN0IG9mIHdvcmtlcidzIGRvY3Vt
ZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckNvbnRleHQpOgorICAgICAgICBQb3N0cyByZXNwb25zZXMgYmFjayB0byB0aGUg
c2hhcmVkIHdvcmtlciB0aHJlYWQuCisKIDIwMDktMDgtMTQgIERyZXcgV2lsc29uICA8YXR3aWxz
b25AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5j
cHAgYi9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCmlu
ZGV4IDdlNTY3YWQuLjAxZGUwMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtNjgsOSArNjgsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gb3JpZ2luKSBjb25zdCB7IHJldHVybiBuYW1lID09IG1fbmFtZSAmJiBvcmlnaW4tPmVxdWFs
KG1fb3JpZ2luLmdldCgpKTsgfQogCiAgICAgLy8gV29ya2VyTG9hZGVyUHJveHkKLSAgICAvLyBG
SVhNRTogSW1wbGVtZW50IFdvcmtlckxvYWRlclByb3h5IEFQSXMgYnkgcHJveHlpbmcgdG8gYW4g
YWN0aXZlIGRvY3VtZW50LgotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NS
ZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoUGFzc1Jl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJikgeyBub3RJ
bXBsZW1lbnRlZCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFzc1Jl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CisgICAgdmlydHVhbCB2b2lkIHBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdvcmtlclJlcG9ydGluZ1By
b3h5CiAgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKTsKQEAgLTEwOSw2ICsxMDgsMzAgQEAgU2hhcmVkV29ya2VyUHJveHk6OlNoYXJlZFdvcmtl
clByb3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmUKICAgICBB
U1NFUlQobV9vcmlnaW4tPmhhc09uZVJlZigpKTsKIH0KIAordm9pZCBTaGFyZWRXb3JrZXJQcm94
eTo6cG9zdFRhc2tUb0xvYWRlcihQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IHRhc2spCit7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3dvcmtlckRvY3VtZW50c0xvY2sp
OworCisgICAgaWYgKGlzQ2xvc2luZygpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiB3
ZSBhcmVuJ3QgY2xvc2luZywgdGhlbiB3ZSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGRvY3VtZW50
LgorICAgIEFTU0VSVChtX3dvcmtlckRvY3VtZW50cy5zaXplKCkpOworCisgICAgLy8gSnVzdCBw
aWNrIGFuIGFyYml0cmFyeSBhY3RpdmUgZG9jdW1lbnQgZnJvbSB0aGUgSGFzaFNldCBhbmQgcGFz
cyBsb2FkIHJlcXVlc3RzIHRvIGl0LgorICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRlYWwg
d2l0aCB0aGUgY2FzZSB3aGVyZSB0aGUgdXNlciBjbG9zZXMgdGhlIGRvY3VtZW50IG1pZC1sb2Fk
LCB2aWEgYSBzaGFkb3cgZG9jdW1lbnQgb3Igc29tZSBvdGhlciBzb2x1dGlvbj8KKyAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSAqKG1fd29ya2VyRG9jdW1lbnRzLmJlZ2luKCkpOworICAgIGRvY3Vt
ZW50LT5wb3N0VGFzayh0YXNrKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQoreworICAgIGlmIChpc0Nsb3Npbmco
KSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtX3RocmVhZCk7CisgICAgbV90aHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUodGFzaywgbW9kZSk7Cit9CisKIHN0YXRpYyB2b2lk
IHBvc3RFeGNlcHRpb25UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCiB7CiAgICAgY29udGV4dC0+cmVwb3J0RXhjZXB0aW9uKGVycm9yTWVzc2FnZSwgbGlu
ZU51bWJlciwgc291cmNlVVJMKTsK
</data>
<flag name="review"
          id="19096"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="19259"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>