<?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>106475</bug_id>
          
          <creation_ts>2013-01-09 11:05:24 -0800</creation_ts>
          <short_desc>Web Inspector: Correct formatting in inspector-test.js</short_desc>
          <delta_ts>2014-12-12 13:42:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>0</everconfirmed>
          <reporter name="johnjbarton">johnjbarton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>803508</commentid>
    <comment_count>0</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2013-01-09 11:05:24 -0800</bug_when>
    <thetext>The function initialize_InspectorTest in inspector-test is injected as a string into the WebInspector window. Figuring out what content is in that string is hard because the function spans many lines and its body is not indented per the standard formatting in other files.

Patch to follow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803523</commentid>
    <comment_count>1</comment_count>
      <attachid>181956</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2013-01-09 11:22:14 -0800</bug_when>
    <thetext>Created attachment 181956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803524</commentid>
    <comment_count>2</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2013-01-09 11:23:52 -0800</bug_when>
    <thetext>diff looks horrible but the change is just formatting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804298</commentid>
    <comment_count>3</comment_count>
      <attachid>181956</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-10 05:49:43 -0800</bug_when>
    <thetext>Comment on attachment 181956
Patch

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

&gt; LayoutTests/http/tests/inspector/inspector-test.js:333
&gt; +    InspectorTest.addConsoleSniffer = function(override, opt_sticky)

As I mentioned, we don&apos;t indent namespaces / closures like this. Like this like looks really weird now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804356</commentid>
    <comment_count>4</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2013-01-10 07:25:41 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 181956 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181956&amp;action=review
&gt; 
&gt; &gt; LayoutTests/http/tests/inspector/inspector-test.js:333
&gt; &gt; +    InspectorTest.addConsoleSniffer = function(override, opt_sticky)
&gt; 
&gt; As I mentioned, we don&apos;t indent namespaces / closures like this. Like this like looks really weird now.

Can you help me understand? What makes this function different from other functions? I don&apos;t know what a namespace is in JavaScript and we have many other closures which are indented. (I also think that from a practical point of view this rule is bizarre but at least I&apos;d like to know when to apply it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804502</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-10 10:17:46 -0800</bug_when>
    <thetext>&gt; Can you help me understand? What makes this function different from other functions? I don&apos;t know what a namespace is in JavaScript and we have many other closures which are indented. (I also think that from a practical point of view this rule is bizarre but at least I&apos;d like to know when to apply it).

Whenever the closure is added for the sake of the harness or framework with the sole purpose of serializing the content (such as this case and injected scripts), I think it does not make sense to indent. If JavaScript allowed us serializing and sending over entire files, we would do that instead of coming up with such closures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054970</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-12 13:40:29 -0800</bug_when>
    <thetext>Closing as invalid, as this bug pertains to the old inspector UI and/or its tests.
Please file a new bug (https://www.webkit.org/new-inspector-bug) if the bug/feature/issue is still relevant to WebKit trunk.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181956</attachid>
            <date>2013-01-09 11:22:14 -0800</date>
            <delta_ts>2013-01-10 05:49:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106475-20130109111917.patch</filename>
            <type>text/plain</type>
            <size>29127</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjEwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGMyMDRiNzRlZGVkYmFhNGFmNjJh
MDA1YmNlMjg0MjM1MTZjOTc3ZS4uNzM4NjEyMWE2MjgzYjA4MTc5MDA0NmM0NzJmYzM4MTUwNmJi
MzkyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAxLTA5ICBKb2huIEouIEJhcnRvbiAg
PGpvaG5qYmFydG9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb3Jy
ZWN0IGZvcm1hdHRpbmcgaW4gaW5zcGVjdG9yLXRlc3QuanMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGVudCB0aGUgYm9keSBvZiBpbml0aWFsaXpl
X0luc3BlY3RvclRlc3QgcGVyIHN0YW5kYXJkIGZvcm1hdHRpbmcKKyAgICAgICAgYW5kIGJyZWFr
IGEgY291cGxlIG9mIGxvbmcgbGluZXMgdG8gcmVkdWNlIGhvcml6b250YWwgbWF4aW11bSBjb2x1
bW4uCisgICAgICAgIE5vIG5ldyBmdW5jdGlvbjsgbm8gbmV3IHRlc3QuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxp
emVfSW5zcGVjdG9yVGVzdC5jb25zb2xlT3V0cHV0SG9vayk6CisgICAgICAgIChpbml0aWFsaXpl
X0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QpOgorICAgICAgICAoaW5p
dGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUpOgor
ICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lm15Y2FsbGJhY2spOgorICAgICAgICAo
aW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGVB
bmREdW1wKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlV2l0aFRpbWVvdXQpOgorICAgICAgICAoaW5pdGlhbGl6
ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QuYWRkUmVzdWx0LmNsZWFyUmVzdWx0cyk6Cisg
ICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQu
YWRkUmVzdWx0VG9QYWdlKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3Qu
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHRzKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9y
VGVzdC5vbkVycm9yKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0
b3JUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0
LmZvcm1hdHRlcnMuZm9ybWF0QXNUeXBlTmFtZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3Bl
Y3RvclRlc3QuSW5zcGVjdG9yVGVzdC5mb3JtYXR0ZXJzLmZvcm1hdEFzUmVjZW50VGltZSk6Cisg
ICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5hZGRPYmplY3Qp
OgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QuYWRkQXJy
YXkpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QuZHVt
cCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5hc3Nl
cnRHcmVhdGVyT3JFcXVhbCk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5z
cGVjdG9yVGVzdC5uYXZpZ2F0ZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3Qu
SW5zcGVjdG9yVGVzdC5oYXJkUmVsb2FkUGFnZSk6CisgICAgICAgIChpbml0aWFsaXplX0luc3Bl
Y3RvclRlc3QuSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKToKKyAgICAgICAgKGluaXRpYWxpemVf
SW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2UpOgorICAgICAgICAo
aW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QucGFnZUxvYWRlZCk6CisgICAg
ICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5ydW5XaGVuUGFnZUxv
YWRzLmNoYWluZWRDYWxsYmFjayk6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3Qu
SW5zcGVjdG9yVGVzdC5ydW5XaGVuUGFnZUxvYWRzKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5z
cGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMpOgorICAg
ICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZl
bnQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lkluc3BlY3RvclRlc3QucnVu
VGVzdFN1aXRlLnJ1bm5lcik6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5z
cGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JU
ZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC4pOgorCiAyMDEzLTAxLTA5
ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0No
cm9taXVtXSBmYXN0L2ltYWdlcy9lbWJlZC1kb2VzLW5vdC1wcm9wYWdhdGUtZGltZW5zaW9ucy10
by1vYmplY3QtYW5jZXN0b3IuaHRtbCBpcyBhIGZsYWt5IGNyYXNoLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA2OTg3Yjky
NzUzMDNkNGRlNjVkMTYzY2FkOGJmYTllZmFmY2NhOTE5Li5jNGYyOGViYmRhMGM5OTA0NjM1N2M3
YjI2M2FkOTRkNjYwYjFhZTMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAtMSwzOTcgKzEsMzk5IEBACiB2YXIgaW5pdGlh
bGl6ZV9JbnNwZWN0b3JUZXN0ID0gZnVuY3Rpb24oKSB7CiAKLXZhciByZXN1bHRzID0gW107Ci12
YXIgcmVzdWx0c1N5bmNocm9uaXplZCA9IGZhbHNlOworICAgIHZhciByZXN1bHRzID0gW107Cisg
ICAgdmFyIHJlc3VsdHNTeW5jaHJvbml6ZWQgPSBmYWxzZTsKIAotZnVuY3Rpb24gY29uc29sZU91
dHB1dEhvb2sobWVzc2FnZVR5cGUpCi17Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQobWVz
c2FnZVR5cGUgKyAiOiAiICsgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAx
KSk7Ci19CisgICAgZnVuY3Rpb24gY29uc29sZU91dHB1dEhvb2sobWVzc2FnZVR5cGUpCisgICAg
eworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChtZXNzYWdlVHlwZSArICI6ICIgKyBB
cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTsKKyAgICB9CiAKLWNvbnNv
bGUubG9nID0gY29uc29sZU91dHB1dEhvb2suYmluZChJbnNwZWN0b3JUZXN0LCAibG9nIik7Ci1j
b25zb2xlLmVycm9yID0gY29uc29sZU91dHB1dEhvb2suYmluZChJbnNwZWN0b3JUZXN0LCAiZXJy
b3IiKTsKLWNvbnNvbGUuaW5mbyA9IGNvbnNvbGVPdXRwdXRIb29rLmJpbmQoSW5zcGVjdG9yVGVz
dCwgImluZm8iKTsKKyAgICBjb25zb2xlLmxvZyA9IGNvbnNvbGVPdXRwdXRIb29rLmJpbmQoSW5z
cGVjdG9yVGVzdCwgImxvZyIpOworICAgIGNvbnNvbGUuZXJyb3IgPSBjb25zb2xlT3V0cHV0SG9v
ay5iaW5kKEluc3BlY3RvclRlc3QsICJlcnJvciIpOworICAgIGNvbnNvbGUuaW5mbyA9IGNvbnNv
bGVPdXRwdXRIb29rLmJpbmQoSW5zcGVjdG9yVGVzdCwgImluZm8iKTsKIAotSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QgPSBmdW5jdGlvbigpCi17Ci0gICAgZnVuY3Rpb24gdGVzdERpc3BhdGNo
UXVldWVJc0VtcHR5KCkgewotICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5kaXNwYXRjaFF1ZXVl
SXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBXYWl0IGZvciB1bnByb2Nlc3NlZCBtZXNzYWdl
cy4KLSAgICAgICAgICAgIHNldFRpbWVvdXQodGVzdERpc3BhdGNoUXVldWVJc0VtcHR5LCAxMCk7
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QgPSBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBmdW5jdGlvbiB0ZXN0RGlzcGF0Y2hRdWV1ZUlzRW1w
dHkoKSB7CisgICAgICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5kaXNwYXRjaFF1ZXVlSXNFbXB0
eSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgdW5wcm9jZXNzZWQgbWVzc2FnZXMu
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCh0ZXN0RGlzcGF0Y2hRdWV1ZUlzRW1wdHksIDEw
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBS
dW50aW1lQWdlbnQuZXZhbHVhdGUoImRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoIiArIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0Q2FsbElkICsgIiwgXCJcIikiLCAidGVzdCIpOwogICAg
ICAgICB9Ci0gICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZGlkRXZhbHVhdGVGb3JUZXN0
SW5Gcm9udGVuZCgiICsgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3RDYWxsSWQgKyAiLCBcIlwi
KSIsICJ0ZXN0Iik7CisgICAgICAgIHRlc3REaXNwYXRjaFF1ZXVlSXNFbXB0eSgpOwogICAgIH0K
LSAgICB0ZXN0RGlzcGF0Y2hRdWV1ZUlzRW1wdHkoKTsKLX0KLQotSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluQ29uc29sZSA9IGZ1bmN0aW9uKGNvZGUsIGNhbGxiYWNrKQotewotICAgIGNhbGxiYWNr
ID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7Ci0KLSAgICBXZWJJbnNwZWN0b3Iu
Y29uc29sZVZpZXcudmlzaWJsZSA9IHRydWU7Ci0gICAgV2ViSW5zcGVjdG9yLmNvbnNvbGVWaWV3
LnByb21wdC50ZXh0ID0gY29kZTsKLSAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVu
dCgiS2V5Ym9hcmRFdmVudCIpOwotICAgIGV2ZW50LmluaXRLZXlib2FyZEV2ZW50KCJrZXlkb3du
IiwgdHJ1ZSwgdHJ1ZSwgbnVsbCwgIkVudGVyIiwgIiIpOwotICAgIFdlYkluc3BlY3Rvci5jb25z
b2xlVmlldy5wcm9tcHQucHJveHlFbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwotICAgIElu
c3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIoCi0gICAgICAgIGZ1bmN0aW9uKGNvbW1hbmRS
ZXN1bHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKGNvbW1hbmRSZXN1bHQudG9NZXNzYWdlRWxl
bWVudCgpLnRleHRDb250ZW50KTsKLSAgICAgICAgfSk7Ci19CiAKLUluc3BlY3RvclRlc3QuZXZh
bHVhdGVJbkNvbnNvbGVBbmREdW1wID0gZnVuY3Rpb24oY29kZSwgY2FsbGJhY2spCi17Ci0gICAg
Y2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxiYWNrKTsKLQotICAgIGZ1bmN0
aW9uIG15Y2FsbGJhY2sodGV4dCkKKyAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xl
ID0gZnVuY3Rpb24oY29kZSwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChjb2RlICsgIiA9ICIgKyB0ZXh0KTsKLSAgICAgICAgY2FsbGJhY2sodGV4dCk7
CisgICAgICAgIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7CisK
KyAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGVWaWV3LnZpc2libGUgPSB0cnVlOworICAgICAg
ICBXZWJJbnNwZWN0b3IuY29uc29sZVZpZXcucHJvbXB0LnRleHQgPSBjb2RlOworICAgICAgICB2
YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiS2V5Ym9hcmRFdmVudCIpOworICAgICAg
ICBldmVudC5pbml0S2V5Ym9hcmRFdmVudCgia2V5ZG93biIsIHRydWUsIHRydWUsIG51bGwsICJF
bnRlciIsICIiKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGVWaWV3LnByb21wdC5wcm94
eUVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
Q29uc29sZVNuaWZmZXIoCisgICAgICAgICAgICBmdW5jdGlvbihjb21tYW5kUmVzdWx0KSB7Cisg
ICAgICAgICAgICAgICAgY2FsbGJhY2soY29tbWFuZFJlc3VsdC50b01lc3NhZ2VFbGVtZW50KCku
dGV4dENvbnRlbnQpOworICAgICAgICAgICAgfSk7CiAgICAgfQotICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJbkNvbnNvbGUoY29kZSwgbXljYWxsYmFjayk7Ci19CiAKLUluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UgPSBmdW5jdGlvbihjb2RlLCBjYWxsYmFjaykKLXsKLSAgICBjYWxsYmFj
ayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOwotCi0gICAgZnVuY3Rpb24gbXlj
YWxsYmFjayhlcnJvciwgcmVzdWx0LCB3YXNUaHJvd24pCisgICAgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluQ29uc29sZUFuZER1bXAgPSBmdW5jdGlvbihjb2RlLCBjYWxsYmFjaykKICAgICB7Ci0g
ICAgICAgIGlmICghZXJyb3IpCi0gICAgICAgICAgICBjYWxsYmFjayhXZWJJbnNwZWN0b3IuUmVt
b3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlc3VsdCksIHdhc1Rocm93bik7CisgICAgICAgIGNhbGxi
YWNrID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7CisKKyAgICAgICAgZnVuY3Rp
b24gbXljYWxsYmFjayh0ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChjb2RlICsgIiA9ICIgKyB0ZXh0KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRl
eHQpOworICAgICAgICB9CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUo
Y29kZSwgbXljYWxsYmFjayk7CiAgICAgfQotICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShjb2Rl
LCAiY29uc29sZSIsIGZhbHNlLCBteWNhbGxiYWNrKTsKLX0KIAotSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluUGFnZVdpdGhUaW1lb3V0ID0gZnVuY3Rpb24oY29kZSkKLXsKLSAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKCJzZXRUaW1lb3V0KHVuZXNjYXBlKCciICsgZXNjYXBlKGNvZGUp
ICsgIicpKSIpOwotfQorICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UgPSBmdW5jdGlv
bihjb2RlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVz
dC5zYWZlV3JhcChjYWxsYmFjayk7CiAKLUluc3BlY3RvclRlc3QuYWRkUmVzdWx0ID0gZnVuY3Rp
b24odGV4dCkKLXsKLSAgICByZXN1bHRzLnB1c2godGV4dCk7Ci0gICAgaWYgKHJlc3VsdHNTeW5j
aHJvbml6ZWQpCi0gICAgICAgIGFkZFJlc3VsdFRvUGFnZSh0ZXh0KTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgY2xlYXJSZXN1bHRzKCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0
cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGFkZFJlc3VsdFRvUGFnZShyZXN1bHRzW2ldKTsK
LSAgICAgICAgcmVzdWx0c1N5bmNocm9uaXplZCA9IHRydWU7CisgICAgICAgIGZ1bmN0aW9uIG15
Y2FsbGJhY2soZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIWVycm9yKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1v
dGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0KSwgd2FzVGhyb3duKTsKKyAgICAgICAgfQorICAg
ICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUoY29kZSwgImNvbnNvbGUiLCBmYWxzZSwgbXljYWxs
YmFjayk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gY2xlYXJSZXN1bHRzKCkKKyAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlV2l0aFRpbWVvdXQgPSBmdW5jdGlvbihjb2RlKQogICAgIHsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2xlYXJPdXRwdXQoKSIpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJzZXRUaW1lb3V0KHVuZXNjYXBl
KCciICsgZXNjYXBlKGNvZGUpICsgIicpKSIpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGFkZFJl
c3VsdFRvUGFnZSh0ZXh0KQorICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0ID0gZnVuY3Rpb24o
dGV4dCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIm91dHB1
dCh1bmVzY2FwZSgnIiArIGVzY2FwZSh0ZXh0KSArICInKSkiKTsKLSAgICB9Ci19CisgICAgICAg
IHJlc3VsdHMucHVzaCh0ZXh0KTsKKyAgICAgICAgaWYgKHJlc3VsdHNTeW5jaHJvbml6ZWQpCisg
ICAgICAgICAgICBhZGRSZXN1bHRUb1BhZ2UodGV4dCk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgY2xlYXJSZXN1bHRzKCk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJl
c3VsdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgYWRkUmVzdWx0VG9QYWdlKHJlc3Vs
dHNbaV0pOworICAgICAgICAgICAgcmVzdWx0c1N5bmNocm9uaXplZCA9IHRydWU7CisgICAgICAg
IH0KIAotSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHRzID0gZnVuY3Rpb24odGV4dEFycmF5KQotewot
ICAgIGlmICghdGV4dEFycmF5KQotICAgICAgICByZXR1cm47Ci0gICAgZm9yICh2YXIgaSA9IDAs
IHNpemUgPSB0ZXh0QXJyYXkubGVuZ3RoOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCh0ZXh0QXJyYXlbaV0pOwotfQorICAgICAgICBmdW5jdGlvbiBjbGVh
clJlc3VsdHMoKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKCJjbGVhck91dHB1dCgpIik7CisgICAgICAgIH0KIAotZnVuY3Rpb24gb25FcnJvcihl
dmVudCkKLXsKLSAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBvbkVycm9y
KTsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGlu
c3BlY3RvciBmcm9udC1lbmQ6ICIgKyBldmVudC5tZXNzYWdlICsgIiBbIiArIGV2ZW50LmZpbGVu
YW1lICsgIjoiICsgZXZlbnQubGluZW5vICsgIl0iKTsKLSAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlVGVzdCgpOwotfQorICAgICAgICBmdW5jdGlvbiBhZGRSZXN1bHRUb1BhZ2UodGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgib3V0cHV0
KHVuZXNjYXBlKCciICsgZXNjYXBlKHRleHQpICsgIicpKSIpOworICAgICAgICB9CisgICAgfQog
Ci13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBvbkVycm9yKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdHMgPSBmdW5jdGlvbih0ZXh0QXJyYXkpCisgICAgeworICAgICAgICBp
ZiAoIXRleHRBcnJheSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDAsIHNpemUgPSB0ZXh0QXJyYXkubGVuZ3RoOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQodGV4dEFycmF5W2ldKTsKKyAgICB9CiAKLUluc3BlY3Rv
clRlc3QuZm9ybWF0dGVycyA9IHt9OworICAgIGZ1bmN0aW9uIG9uRXJyb3IoZXZlbnQpCisgICAg
eworICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBvbkVycm9yKTsK
KyAgICAgICAgdmFyIGV4Y2VwdGlvbk1lc3NhZ2UgPSBldmVudC5tZXNzYWdlICsgIiBbIiArIGV2
ZW50LmZpbGVuYW1lICsgIjoiICsgZXZlbnQubGluZW5vICsgIl0iOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGluc3BlY3RvciBmcm9udC1l
bmQ6ICIgKyBleGNlcHRpb25NZXNzYWdlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKKyAgICB9CiAKLUluc3BlY3RvclRlc3QuZm9ybWF0dGVycy5mb3JtYXRBc1R5cGVO
YW1lID0gZnVuY3Rpb24odmFsdWUpCi17Ci0gICAgcmV0dXJuICI8IiArIHR5cGVvZiB2YWx1ZSAr
ICI+IjsKLX0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBvbkVycm9yKTsK
IAotSW5zcGVjdG9yVGVzdC5mb3JtYXR0ZXJzLmZvcm1hdEFzUmVjZW50VGltZSA9IGZ1bmN0aW9u
KHZhbHVlKQotewotICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICJvYmplY3QiIHx8ICEodmFsdWUg
aW5zdGFuY2VvZiBEYXRlKSkKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuZm9ybWF0QXNU
eXBlTmFtZSh2YWx1ZSk7Ci0gICAgdmFyIGRlbHRhID0gRGF0ZS5ub3coKSAtIHZhbHVlOwotICAg
IHJldHVybiAwIDw9IGRlbHRhICYmIGRlbHRhIDwgMzAgKiA2MCAqIDEwMDAgPyAiPHBsYXVzaWJs
ZT4iIDogdmFsdWU7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5mb3JtYXR0ZXJzID0ge307CiAKLUlu
c3BlY3RvclRlc3QuYWRkT2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0LCBjdXN0b21Gb3JtYXR0ZXJz
LCBwcmVmaXgsIGZpcnN0TGluZVByZWZpeCkKLXsKLSAgICBwcmVmaXggPSBwcmVmaXggfHwgIiI7
Ci0gICAgZmlyc3RMaW5lUHJlZml4ID0gZmlyc3RMaW5lUHJlZml4IHx8IHByZWZpeDsKLSAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdChmaXJzdExpbmVQcmVmaXggKyAieyIpOwotICAgIHZhciBw
cm9wZXJ0eU5hbWVzID0gT2JqZWN0LmtleXMob2JqZWN0KTsKLSAgICBwcm9wZXJ0eU5hbWVzLnNv
cnQoKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgdmFyIHByb3AgPSBwcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICBpZiAodHlw
ZW9mIG9iamVjdC5oYXNPd25Qcm9wZXJ0eSA9PT0gImZ1bmN0aW9uIiAmJiAhb2JqZWN0Lmhhc093
blByb3BlcnR5KHByb3ApKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHZhciBwcmVm
aXhXaXRoTmFtZSA9ICIgICAgIiArIHByZWZpeCArIHByb3AgKyAiIDogIjsKLSAgICAgICAgdmFy
IHByb3BWYWx1ZSA9IG9iamVjdFtwcm9wXTsKLSAgICAgICAgaWYgKGN1c3RvbUZvcm1hdHRlcnMg
JiYgY3VzdG9tRm9ybWF0dGVyc1twcm9wXSkgewotICAgICAgICAgICAgdmFyIGZvcm1hdHRlck5h
bWUgPSBjdXN0b21Gb3JtYXR0ZXJzW3Byb3BdOwotICAgICAgICAgICAgaWYgKGZvcm1hdHRlck5h
bWUgIT09ICJza2lwIikgewotICAgICAgICAgICAgICAgIHZhciBmb3JtYXR0ZXIgPSBJbnNwZWN0
b3JUZXN0LmZvcm1hdHRlcnNbZm9ybWF0dGVyTmFtZV07Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQocHJlZml4V2l0aE5hbWUgKyBmb3JtYXR0ZXIocHJvcFZhbHVlKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wKHByb3BWYWx1ZSwgY3VzdG9tRm9ybWF0dGVycywgIiAgICAiICsgcHJlZml4LCBwcmVm
aXhXaXRoTmFtZSk7CisgICAgSW5zcGVjdG9yVGVzdC5mb3JtYXR0ZXJzLmZvcm1hdEFzVHlwZU5h
bWUgPSBmdW5jdGlvbih2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiAiPCIgKyB0eXBlb2Yg
dmFsdWUgKyAiPiI7CiAgICAgfQotICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByZWZpeCAr
ICJ9Iik7Ci19Ci0KLUluc3BlY3RvclRlc3QuYWRkQXJyYXkgPSBmdW5jdGlvbihhcnJheSwgY3Vz
dG9tRm9ybWF0dGVycywgcHJlZml4LCBmaXJzdExpbmVQcmVmaXgpCi17Ci0gICAgcHJlZml4ID0g
cHJlZml4IHx8ICIiOwotICAgIGZpcnN0TGluZVByZWZpeCA9IGZpcnN0TGluZVByZWZpeCB8fCBw
cmVmaXg7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoZmlyc3RMaW5lUHJlZml4ICsgIlsi
KTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmR1bXAoYXJyYXlbaV0sIGN1c3RvbUZvcm1hdHRlcnMsIHByZWZpeCArICIg
ICAgIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocHJlZml4ICsgIl0iKTsKLX0KIAot
SW5zcGVjdG9yVGVzdC5kdW1wID0gZnVuY3Rpb24odmFsdWUsIGN1c3RvbUZvcm1hdHRlcnMsIHBy
ZWZpeCwgcHJlZml4V2l0aE5hbWUpCi17Ci0gICAgcHJlZml4V2l0aE5hbWUgPSBwcmVmaXhXaXRo
TmFtZSB8fCBwcmVmaXg7Ci0gICAgaWYgKHByZWZpeFdpdGhOYW1lICYmIHByZWZpeFdpdGhOYW1l
Lmxlbmd0aCA+IDgwKSB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByZWZpeFdp
dGhOYW1lICsgIndhcyBza2lwcGVkIGR1ZSB0byBwcmVmaXggbGVuZ3RoIGxpbWl0Iik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICBJbnNwZWN0b3JUZXN0LmZvcm1hdHRlcnMuZm9ybWF0QXNSZWNlbnRU
aW1lID0gZnVuY3Rpb24odmFsdWUpCisgICAgeworICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9
PSAib2JqZWN0IiB8fCAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpCisgICAgICAgICAgICByZXR1
cm4gSW5zcGVjdG9yVGVzdC5mb3JtYXRBc1R5cGVOYW1lKHZhbHVlKTsKKyAgICAgICAgdmFyIGRl
bHRhID0gRGF0ZS5ub3coKSAtIHZhbHVlOworICAgICAgICByZXR1cm4gMCA8PSBkZWx0YSAmJiBk
ZWx0YSA8IDMwICogNjAgKiAxMDAwID8gIjxwbGF1c2libGU+IiA6IHZhbHVlOwogICAgIH0KLSAg
ICBpZiAodmFsdWUgPT09IG51bGwpCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHBy
ZWZpeFdpdGhOYW1lICsgIm51bGwiKTsKLSAgICBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFy
cmF5KQotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZEFycmF5KHZhbHVlLCBjdXN0b21Gb3JtYXR0
ZXJzLCBwcmVmaXgsIHByZWZpeFdpdGhOYW1lKTsKLSAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUg
PT09ICJvYmplY3QiKQotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZE9iamVjdCh2YWx1ZSwgY3Vz
dG9tRm9ybWF0dGVycywgcHJlZml4LCBwcmVmaXhXaXRoTmFtZSk7Ci0gICAgZWxzZSBpZiAodHlw
ZW9mIHZhbHVlID09PSAic3RyaW5nIikKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
cHJlZml4V2l0aE5hbWUgKyAiXCIiICsgdmFsdWUgKyAiXCIiKTsKLSAgICBlbHNlCi0gICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByZWZpeFdpdGhOYW1lICsgdmFsdWUpOwotfQotCi1J
bnNwZWN0b3JUZXN0LmFzc2VydEdyZWF0ZXJPckVxdWFsID0gZnVuY3Rpb24oYSwgYiwgbWVzc2Fn
ZSkKLXsKLSAgICBpZiAoYSA8IGIpCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJG
QUlMRUQ6ICIgKyAobWVzc2FnZSA/IG1lc3NhZ2UgKyAiOiAiIDogIiIpICsgYSArICIgPCAiICsg
Yik7Ci19CiAKLUluc3BlY3RvclRlc3QubmF2aWdhdGUgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNr
KQotewotICAgIEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxsYmFjayA9IEluc3BlY3RvclRl
c3Quc2FmZVdyYXAoY2FsbGJhY2spOwotCi0gICAgV2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3Jr
IikuX3Jlc2V0KCk7Ci0gICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgid2luZG93
LmxvY2F0aW9uID0gJyIgKyB1cmwgKyAiJyIpOwotfQorICAgIEluc3BlY3RvclRlc3QuYWRkT2Jq
ZWN0ID0gZnVuY3Rpb24ob2JqZWN0LCBjdXN0b21Gb3JtYXR0ZXJzLCBwcmVmaXgsIGZpcnN0TGlu
ZVByZWZpeCkKKyAgICB7CisgICAgICAgIHByZWZpeCA9IHByZWZpeCB8fCAiIjsKKyAgICAgICAg
Zmlyc3RMaW5lUHJlZml4ID0gZmlyc3RMaW5lUHJlZml4IHx8IHByZWZpeDsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoZmlyc3RMaW5lUHJlZml4ICsgInsiKTsKKyAgICAgICAgdmFy
IHByb3BlcnR5TmFtZXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOworICAgICAgICBwcm9wZXJ0eU5h
bWVzLnNvcnQoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcHJvcCA9IHByb3BlcnR5TmFtZXNbaV07Cisg
ICAgICAgICAgICBpZiAodHlwZW9mIG9iamVjdC5oYXNPd25Qcm9wZXJ0eSA9PT0gImZ1bmN0aW9u
IiAmJiAhb2JqZWN0Lmhhc093blByb3BlcnR5KHByb3ApKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgdmFyIHByZWZpeFdpdGhOYW1lID0gIiAgICAiICsgcHJlZml4ICsg
cHJvcCArICIgOiAiOworICAgICAgICAgICAgdmFyIHByb3BWYWx1ZSA9IG9iamVjdFtwcm9wXTsK
KyAgICAgICAgICAgIGlmIChjdXN0b21Gb3JtYXR0ZXJzICYmIGN1c3RvbUZvcm1hdHRlcnNbcHJv
cF0pIHsKKyAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVyTmFtZSA9IGN1c3RvbUZvcm1hdHRl
cnNbcHJvcF07CisgICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlck5hbWUgIT09ICJza2lwIikg
eworICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVyID0gSW5zcGVjdG9yVGVzdC5mb3Jt
YXR0ZXJzW2Zvcm1hdHRlck5hbWVdOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChwcmVmaXhXaXRoTmFtZSArIGZvcm1hdHRlcihwcm9wVmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXAocHJvcFZhbHVlLCBjdXN0b21Gb3JtYXR0ZXJzLCAiICAgICIgKyBwcmVmaXgs
IHByZWZpeFdpdGhOYW1lKTsKKyAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChwcmVmaXggKyAifSIpOworICAgIH0KIAotSW5zcGVjdG9yVGVzdC5oYXJkUmVsb2FkUGFn
ZSA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBzY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVw
cm9jZXNzb3IpCi17Ci0gICAgSW5zcGVjdG9yVGVzdC5faW5uZXJSZWxvYWRQYWdlKHRydWUsIGNh
bGxiYWNrLCBzY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9jZXNzb3IpOwotfQor
ICAgIEluc3BlY3RvclRlc3QuYWRkQXJyYXkgPSBmdW5jdGlvbihhcnJheSwgY3VzdG9tRm9ybWF0
dGVycywgcHJlZml4LCBmaXJzdExpbmVQcmVmaXgpCisgICAgeworICAgICAgICBwcmVmaXggPSBw
cmVmaXggfHwgIiI7CisgICAgICAgIGZpcnN0TGluZVByZWZpeCA9IGZpcnN0TGluZVByZWZpeCB8
fCBwcmVmaXg7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGZpcnN0TGluZVByZWZp
eCArICJbIik7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kp
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXAoYXJyYXlbaV0sIGN1c3RvbUZvcm1hdHRl
cnMsIHByZWZpeCArICIgICAgIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHBy
ZWZpeCArICJdIik7CisgICAgfQogCi1JbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlv
bihjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vzc29yKQot
ewotICAgIEluc3BlY3RvclRlc3QuX2lubmVyUmVsb2FkUGFnZShmYWxzZSwgY2FsbGJhY2ssIHNj
cmlwdFRvRXZhbHVhdGVPbkxvYWQsIHNjcmlwdFByZXByb2Nlc3Nvcik7Ci19CisgICAgSW5zcGVj
dG9yVGVzdC5kdW1wID0gZnVuY3Rpb24odmFsdWUsIGN1c3RvbUZvcm1hdHRlcnMsIHByZWZpeCwg
cHJlZml4V2l0aE5hbWUpCisgICAgeworICAgICAgICBwcmVmaXhXaXRoTmFtZSA9IHByZWZpeFdp
dGhOYW1lIHx8IHByZWZpeDsKKyAgICAgICAgaWYgKHByZWZpeFdpdGhOYW1lICYmIHByZWZpeFdp
dGhOYW1lLmxlbmd0aCA+IDgwKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dChwcmVmaXhXaXRoTmFtZSArICJ3YXMgc2tpcHBlZCBkdWUgdG8gcHJlZml4IGxlbmd0aCBsaW1p
dCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSA9
PT0gbnVsbCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHByZWZpeFdpdGhO
YW1lICsgIm51bGwiKTsKKyAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkQXJyYXkodmFsdWUsIGN1c3RvbUZvcm1hdHRl
cnMsIHByZWZpeCwgcHJlZml4V2l0aE5hbWUpOworICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFs
dWUgPT09ICJvYmplY3QiKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRPYmplY3QodmFs
dWUsIGN1c3RvbUZvcm1hdHRlcnMsIHByZWZpeCwgcHJlZml4V2l0aE5hbWUpOworICAgICAgICBl
bHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQocHJlZml4V2l0aE5hbWUgKyAiXCIiICsgdmFsdWUgKyAiXCIiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocHJlZml4V2l0
aE5hbWUgKyB2YWx1ZSk7CisgICAgfQogCi1JbnNwZWN0b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2Ug
PSBmdW5jdGlvbihoYXJkUmVsb2FkLCBjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwg
c2NyaXB0UHJlcHJvY2Vzc29yKQotewotICAgIEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxs
YmFjayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0R3JlYXRlck9yRXF1YWwgPSBmdW5jdGlvbihhLCBiLCBtZXNzYWdlKQorICAgIHsK
KyAgICAgICAgaWYgKGEgPCBiKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IkZBSUxFRDogIiArIChtZXNzYWdlID8gbWVzc2FnZSArICI6ICIgOiAiIikgKyBhICsgIiA8ICIg
KyBiKTsKKyAgICB9CiAKLSAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrKQotICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuX3Jlc2V0KCk7Ci0gICAgUGFnZUFnZW50
LnJlbG9hZChoYXJkUmVsb2FkLCBzY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBzY3JpcHRQcmVwcm9j
ZXNzb3IpOwotfQorICAgIEluc3BlY3RvclRlc3QubmF2aWdhdGUgPSBmdW5jdGlvbih1cmwsIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5fcGFnZUxvYWRlZENhbGxiYWNr
ID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7CiAKLUluc3BlY3RvclRlc3QucGFn
ZUxvYWRlZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXN1bHRzU3luY2hyb25pemVkID0gZmFsc2U7
Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlBhZ2UgcmVsb2FkZWQuIik7Ci0gICAgaWYg
KEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxsYmFjaykgewotICAgICAgICB2YXIgY2FsbGJh
Y2sgPSBJbnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2s7Ci0gICAgICAgIGRlbGV0ZSBJ
bnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2s7Ci0gICAgICAgIGNhbGxiYWNrKCk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLl9yZXNldCgpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJ3aW5kb3cubG9jYXRpb24gPSAnIiArIHVy
bCArICInIik7CiAgICAgfQotfQogCi1JbnNwZWN0b3JUZXN0LnJ1bldoZW5QYWdlTG9hZHMgPSBm
dW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICB2YXIgb2xkQ2FsbGJhY2sgPSBJbnNwZWN0b3JUZXN0
Ll9wYWdlTG9hZGVkQ2FsbGJhY2s7Ci0gICAgZnVuY3Rpb24gY2hhaW5lZENhbGxiYWNrKCkKKyAg
ICBJbnNwZWN0b3JUZXN0LmhhcmRSZWxvYWRQYWdlID0gZnVuY3Rpb24oY2FsbGJhY2ssIHNjcmlw
dFRvRXZhbHVhdGVPbkxvYWQsIHNjcmlwdFByZXByb2Nlc3NvcikKICAgICB7Ci0gICAgICAgIGlm
IChvbGRDYWxsYmFjaykKLSAgICAgICAgICAgIG9sZENhbGxiYWNrKCk7Ci0gICAgICAgIGNhbGxi
YWNrKCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuX2lubmVyUmVsb2FkUGFnZSh0cnVlLCBjYWxs
YmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vzc29yKTsKICAgICB9
Ci0gICAgSW5zcGVjdG9yVGVzdC5fcGFnZUxvYWRlZENhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5z
YWZlV3JhcChjaGFpbmVkQ2FsbGJhY2spOwotfQogCi1JbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVu
ZGluZ0Rpc3BhdGNoZXMgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICBjYWxsYmFjayA9IElu
c3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOwotICAgIEluc3BlY3RvckJhY2tlbmQucnVu
QWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhjYWxsYmFjayk7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5y
ZWxvYWRQYWdlID0gZnVuY3Rpb24oY2FsbGJhY2ssIHNjcmlwdFRvRXZhbHVhdGVPbkxvYWQsIHNj
cmlwdFByZXByb2Nlc3NvcikKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuX2lubmVyUmVs
b2FkUGFnZShmYWxzZSwgY2FsbGJhY2ssIHNjcmlwdFRvRXZhbHVhdGVPbkxvYWQsIHNjcmlwdFBy
ZXByb2Nlc3Nvcik7CisgICAgfQogCi1JbnNwZWN0b3JUZXN0LmNyZWF0ZUtleUV2ZW50ID0gZnVu
Y3Rpb24oa2V5SWRlbnRpZmllciwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSkK
LXsKLSAgICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIktleWJvYXJkRXZlbnQiKTsK
LSAgICBldnQuaW5pdEtleWJvYXJkRXZlbnQoImtleWRvd24iLCB0cnVlIC8qIGNhbiBidWJibGUg
Ki8sIHRydWUgLyogY2FuIGNhbmNlbCAqLywgbnVsbCAvKiB2aWV3ICovLCBrZXlJZGVudGlmaWVy
LCAiIiwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7Ci0gICAgcmV0dXJuIGV2
dDsKLX0KKyAgICBJbnNwZWN0b3JUZXN0Ll9pbm5lclJlbG9hZFBhZ2UgPSBmdW5jdGlvbihoYXJk
UmVsb2FkLCBjYWxsYmFjaywgc2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCwgc2NyaXB0UHJlcHJvY2Vz
c29yKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5fcGFnZUxvYWRlZENhbGxiYWNrID0g
SW5zcGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjayk7CiAKLUluc3BlY3RvclRlc3QucnVuVGVz
dFN1aXRlID0gZnVuY3Rpb24odGVzdFN1aXRlKQotewotICAgIHZhciB0ZXN0U3VpdGVUZXN0cyA9
IHRlc3RTdWl0ZS5zbGljZSgpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3
b3JrKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9yZXNldCgpOwor
ICAgICAgICBQYWdlQWdlbnQucmVsb2FkKGhhcmRSZWxvYWQsIHNjcmlwdFRvRXZhbHVhdGVPbkxv
YWQsIHNjcmlwdFByZXByb2Nlc3Nvcik7CisgICAgfQogCi0gICAgZnVuY3Rpb24gcnVubmVyKCkK
KyAgICBJbnNwZWN0b3JUZXN0LnBhZ2VMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICBpZiAoIXRlc3RTdWl0ZVRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcmVzdWx0c1N5
bmNocm9uaXplZCA9IGZhbHNlOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUGFn
ZSByZWxvYWRlZC4iKTsKKyAgICAgICAgaWYgKEluc3BlY3RvclRlc3QuX3BhZ2VMb2FkZWRDYWxs
YmFjaykgeworICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gSW5zcGVjdG9yVGVzdC5fcGFnZUxv
YWRlZENhbGxiYWNrOworICAgICAgICAgICAgZGVsZXRlIEluc3BlY3RvclRlc3QuX3BhZ2VMb2Fk
ZWRDYWxsYmFjazsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIH0KLSAgICAgICAg
dmFyIG5leHRUZXN0ID0gdGVzdFN1aXRlVGVzdHMuc2hpZnQoKTsKLSAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUnVu
bmluZzogIiArIC9mdW5jdGlvblxzKFteKF0qKS8uZXhlYyhuZXh0VGVzdClbMV0pOwotICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKG5leHRUZXN0KShydW5uZXIsIHJ1bm5lcik7CiAgICAg
fQotICAgIHJ1bm5lcigpOwotfQogCi1JbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyA9IGZ1bmN0
aW9uKGV4cGVjdGVkLCBmb3VuZCwgbWVzc2FnZSkKLXsKLSAgICBpZiAoZXhwZWN0ZWQgPT09IGZv
dW5kKQotICAgICAgICByZXR1cm47CisgICAgSW5zcGVjdG9yVGVzdC5ydW5XaGVuUGFnZUxvYWRz
ID0gZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB2YXIgb2xkQ2FsbGJhY2sgPSBJ
bnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2s7CisgICAgICAgIGZ1bmN0aW9uIGNoYWlu
ZWRDYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChvbGRDYWxsYmFjaykKKyAg
ICAgICAgICAgICAgICBvbGRDYWxsYmFjaygpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAg
ICAgICAgfQorICAgICAgICBJbnNwZWN0b3JUZXN0Ll9wYWdlTG9hZGVkQ2FsbGJhY2sgPSBJbnNw
ZWN0b3JUZXN0LnNhZmVXcmFwKGNoYWluZWRDYWxsYmFjayk7CisgICAgfQogCi0gICAgdmFyIGVy
cm9yOwotICAgIGlmIChtZXNzYWdlKQotICAgICAgICBlcnJvciA9ICJGYWlsdXJlICgiICsgbWVz
c2FnZSArICIpOiI7Ci0gICAgZWxzZQotICAgICAgICBlcnJvciA9ICJGYWlsdXJlOiI7Ci0gICAg
dGhyb3cgbmV3IEVycm9yKGVycm9yICsgIiBleHBlY3RlZCA8IiArIGV4cGVjdGVkICsgIj4gZm91
bmQgPCIgKyBmb3VuZCArICI+Iik7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRp
bmdEaXNwYXRjaGVzID0gZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICBjYWxsYmFj
ayA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoY2FsbGJhY2spOworICAgIH0KIAotSW5z
cGVjdG9yVGVzdC5hc3NlcnRUcnVlID0gZnVuY3Rpb24oZm91bmQsIG1lc3NhZ2UpCi17Ci0gICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgISFmb3VuZCwgbWVzc2FnZSk7Ci19Cisg
ICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVLZXlFdmVudCA9IGZ1bmN0aW9uKGtleUlkZW50aWZpZXIs
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpCisgICAgeworICAgICAgICB2YXIg
ZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIktleWJvYXJkRXZlbnQiKTsKKyAgICAgICAgZXZ0
LmluaXRLZXlib2FyZEV2ZW50KCJrZXlkb3duIiwgdHJ1ZSAvKiBjYW4gYnViYmxlICovLCB0cnVl
IC8qIGNhbiBjYW5jZWwgKi8sIG51bGwgLyogdmlldyAqLywgCisgICAgICAgICAgICBrZXlJZGVu
dGlmaWVyLCAiIiwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSk7CisgICAgICAg
IHJldHVybiBldnQ7CisgICAgfQogCi1JbnNwZWN0b3JUZXN0LnNhZmVXcmFwID0gZnVuY3Rpb24o
ZnVuYywgb25leGNlcHRpb24pCi17Ci0gICAgZnVuY3Rpb24gcmVzdWx0KCkKKyAgICBJbnNwZWN0
b3JUZXN0LnJ1blRlc3RTdWl0ZSA9IGZ1bmN0aW9uKHRlc3RTdWl0ZSkKICAgICB7Ci0gICAgICAg
IGlmICghZnVuYykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIHdyYXBUaGlzID0g
dGhpczsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHdyYXBU
aGlzLCBhcmd1bWVudHMpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJFeGNlcHRpb24gd2hpbGUgcnVubmluZzogIiArIGZ1bmMgKyAi
XG4iICsgKGUuc3RhY2sgfHwgZSkpOwotICAgICAgICAgICAgaWYgKG9uZXhjZXB0aW9uKQotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2FmZVdyYXAob25leGNlcHRpb24pKCk7Ci0gICAg
ICAgICAgICBlbHNlCisgICAgICAgIHZhciB0ZXN0U3VpdGVUZXN0cyA9IHRlc3RTdWl0ZS5zbGlj
ZSgpOworCisgICAgICAgIGZ1bmN0aW9uIHJ1bm5lcigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICghdGVzdFN1aXRlVGVzdHMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB2YXIgbmV4dFRlc3QgPSB0ZXN0U3VpdGVUZXN0cy5zaGlmdCgpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJ1bm5pbmc6ICIgKyAvZnVuY3Rpb25ccyhbXihdKikvLmV4
ZWMobmV4dFRlc3QpWzFdKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2FmZVdyYXAobmV4
dFRlc3QpKHJ1bm5lciwgcnVubmVyKTsKICAgICAgICAgfQorICAgICAgICBydW5uZXIoKTsKICAg
ICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KIAotSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyID0g
ZnVuY3Rpb24ocmVjZWl2ZXIsIG1ldGhvZE5hbWUsIG92ZXJyaWRlLCBvcHRfc3RpY2t5KQotewot
ICAgIG92ZXJyaWRlID0gSW5zcGVjdG9yVGVzdC5zYWZlV3JhcChvdmVycmlkZSk7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMgPSBmdW5jdGlvbihleHBlY3RlZCwgZm91bmQsIG1lc3Nh
Z2UpCisgICAgeworICAgICAgICBpZiAoZXhwZWN0ZWQgPT09IGZvdW5kKQorICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgdmFyIG9yaWdpbmFsID0gcmVjZWl2ZXJbbWV0aG9kTmFtZV07Ci0gICAg
aWYgKHR5cGVvZiBvcmlnaW5hbCAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgdGhyb3cgKCJDYW5u
b3QgZmluZCBtZXRob2QgdG8gb3ZlcnJpZGU6ICIgKyBtZXRob2ROYW1lKTsKKyAgICAgICAgdmFy
IGVycm9yOworICAgICAgICBpZiAobWVzc2FnZSkKKyAgICAgICAgICAgIGVycm9yID0gIkZhaWx1
cmUgKCIgKyBtZXNzYWdlICsgIik6IjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJyb3Ig
PSAiRmFpbHVyZToiOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IgKyAiIGV4cGVjdGVk
IDwiICsgZXhwZWN0ZWQgKyAiPiBmb3VuZCA8IiArIGZvdW5kICsgIj4iKTsKKyAgICB9CiAKLSAg
ICByZWNlaXZlclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKHZhcl9hcmdzKSB7Ci0gICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1l
bnRzKTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIGlmICghb3B0X3N0aWNreSkK
LSAgICAgICAgICAgICAgICByZWNlaXZlclttZXRob2ROYW1lXSA9IG9yaWdpbmFsOwotICAgICAg
ICB9Ci0gICAgICAgIC8vIEluIGNhc2Ugb2YgZXhjZXB0aW9uIHRoZSBvdmVycmlkZSB3b24ndCBi
ZSBjYWxsZWQuCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBvdmVycmlkZS5hcHBseSh0aGlz
LCBhcmd1bWVudHMpOwotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICB0aHJvdyAo
IkV4Y2VwdGlvbiBpbiBvdmVycmlkZW4gbWV0aG9kICciICsgbWV0aG9kTmFtZSArICInOiAiICsg
ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlID0gZnVuY3Rpb24oZm91bmQsIG1lc3Nh
Z2UpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCAhIWZv
dW5kLCBtZXNzYWdlKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwID0gZnVu
Y3Rpb24oZnVuYywgb25leGNlcHRpb24pCisgICAgeworICAgICAgICBmdW5jdGlvbiByZXN1bHQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWZ1bmMpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgdmFyIHdyYXBUaGlzID0gdGhpczsKKyAgICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkod3JhcFRoaXMsIGFyZ3VtZW50cyk7
CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmc6ICIgKyBmdW5jICsgIlxuIiArIChl
LnN0YWNrIHx8IGUpKTsKKyAgICAgICAgICAgICAgICBpZiAob25leGNlcHRpb24pCisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2FmZVdyYXAob25leGNlcHRpb24pKCk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlVGVzdCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfTsKLX0KLQotSW5zcGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlciA9IGZ1bmN0
aW9uKG92ZXJyaWRlLCBvcHRfc3RpY2t5KQotewotICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLCAiX2FwcGVuZENvbnNvbGVNZXNz
YWdlIiwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpOwotfQorICAgIH0KIAotSW5zcGVjdG9yVGVzdC5v
dmVycmlkZSA9IGZ1bmN0aW9uKHJlY2VpdmVyLCBtZXRob2ROYW1lLCBvdmVycmlkZSwgb3B0X3N0
aWNreSkKLXsKLSAgICBvdmVycmlkZSA9IEluc3BlY3RvclRlc3Quc2FmZVdyYXAob3ZlcnJpZGUp
OworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlciA9IGZ1bmN0aW9uKHJlY2VpdmVyLCBtZXRo
b2ROYW1lLCBvdmVycmlkZSwgb3B0X3N0aWNreSkKKyAgICB7CisgICAgICAgIG92ZXJyaWRlID0g
SW5zcGVjdG9yVGVzdC5zYWZlV3JhcChvdmVycmlkZSk7CiAKLSAgICB2YXIgb3JpZ2luYWwgPSBy
ZWNlaXZlclttZXRob2ROYW1lXTsKLSAgICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAiZnVuY3Rp
b24iKQotICAgICAgICB0aHJvdyAoIkNhbm5vdCBmaW5kIG1ldGhvZCB0byBvdmVycmlkZTogIiAr
IG1ldGhvZE5hbWUpOworICAgICAgICB2YXIgb3JpZ2luYWwgPSByZWNlaXZlclttZXRob2ROYW1l
XTsKKyAgICAgICAgaWYgKHR5cGVvZiBvcmlnaW5hbCAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAg
ICAgIHRocm93ICgiQ2Fubm90IGZpbmQgbWV0aG9kIHRvIG92ZXJyaWRlOiAiICsgbWV0aG9kTmFt
ZSk7CiAKLSAgICByZWNlaXZlclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKHZhcl9hcmdzKSB7Ci0g
ICAgICAgIHRyeSB7CisgICAgICAgIHJlY2VpdmVyW21ldGhvZE5hbWVdID0gZnVuY3Rpb24odmFy
X2FyZ3MpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9
IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICB9IGZpbmFsbHkg
eworICAgICAgICAgICAgICAgIGlmICghb3B0X3N0aWNreSkKKyAgICAgICAgICAgICAgICAgICAg
cmVjZWl2ZXJbbWV0aG9kTmFtZV0gPSBvcmlnaW5hbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC8vIEluIGNhc2Ugb2YgZXhjZXB0aW9uIHRoZSBvdmVycmlkZSB3b24ndCBiZSBjYWxsZWQu
CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvdmVycmlk
ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgICAgIG92ZXJyaWRlLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAg
ICAgICAgdGhyb3cgKCJFeGNlcHRpb24gaW4gb3ZlcnJpZGVuIG1ldGhvZCAnIiArIG1ldGhvZE5h
bWUgKyAiJzogIiArIGUpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGZpbmFsbHkgewotICAg
ICAgICAgICAgaWYgKCFvcHRfc3RpY2t5KQotICAgICAgICAgICAgICAgIHJlY2VpdmVyW21ldGhv
ZE5hbWVdID0gb3JpZ2luYWw7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKyAgICB9CiAKLSAg
ICByZXR1cm4gb3JpZ2luYWw7Ci19CisgICAgSW5zcGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZl
ciA9IGZ1bmN0aW9uKG92ZXJyaWRlLCBvcHRfc3RpY2t5KQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJf
YXBwZW5kQ29uc29sZU1lc3NhZ2UiLCBvdmVycmlkZSwgb3B0X3N0aWNreSk7CisgICAgfQogCi1J
bnNwZWN0b3JUZXN0LnRleHRDb250ZW50V2l0aExpbmVCcmVha3MgPSBmdW5jdGlvbihub2RlKQot
ewotICAgIHZhciBidWZmZXIgPSAiIjsKLSAgICB2YXIgY3VycmVudE5vZGUgPSBub2RlOwotICAg
IHdoaWxlIChjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnRyYXZlcnNlTmV4dE5vZGUobm9kZSkp
IHsKLSAgICAgICAgaWYgKGN1cnJlbnROb2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkK
LSAgICAgICAgICAgIGJ1ZmZlciArPSBjdXJyZW50Tm9kZS5ub2RlVmFsdWU7Ci0gICAgICAgIGVs
c2UgaWYgKGN1cnJlbnROb2RlLm5vZGVOYW1lID09PSAiTEkiKQotICAgICAgICAgICAgYnVmZmVy
ICs9ICJcbiAgICAiOwotICAgICAgICBlbHNlIGlmIChjdXJyZW50Tm9kZS5jbGFzc0xpc3QuY29u
dGFpbnMoImNvbnNvbGUtbWVzc2FnZSIpKQotICAgICAgICAgICAgYnVmZmVyICs9ICJcblxuIjsK
LSAgICB9Ci0gICAgcmV0dXJuIGJ1ZmZlcjsKLX0KKyAgICBJbnNwZWN0b3JUZXN0Lm92ZXJyaWRl
ID0gZnVuY3Rpb24ocmVjZWl2ZXIsIG1ldGhvZE5hbWUsIG92ZXJyaWRlLCBvcHRfc3RpY2t5KQor
ICAgIHsKKyAgICAgICAgb3ZlcnJpZGUgPSBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKG92ZXJyaWRl
KTsKIAotSW5zcGVjdG9yVGVzdC5TdHJpbmdPdXRwdXRTdHJlYW0gPSBmdW5jdGlvbihjYWxsYmFj
aykKLXsKLSAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOwotICAgIHRoaXMuX2J1ZmZlciA9
ICIiOwotfTsKKyAgICAgICAgdmFyIG9yaWdpbmFsID0gcmVjZWl2ZXJbbWV0aG9kTmFtZV07Cisg
ICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWwgIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0
aHJvdyAoIkNhbm5vdCBmaW5kIG1ldGhvZCB0byBvdmVycmlkZTogIiArIG1ldGhvZE5hbWUpOwog
Ci1JbnNwZWN0b3JUZXN0LlN0cmluZ091dHB1dFN0cmVhbS5wcm90b3R5cGUgPSB7Ci0gICAgd3Jp
dGU6IGZ1bmN0aW9uKGNodW5rLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHRoaXMuX2J1ZmZl
ciArPSBjaHVuazsKLSAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2so
dGhpcyk7Ci0gICAgfSwKKyAgICAgICAgcmVjZWl2ZXJbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbih2
YXJfYXJncykgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb3ZlcnJpZGUuYXBwbHkodGhpcywgYXJndW1l
bnRzKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAg
IHRocm93ICgiRXhjZXB0aW9uIGluIG92ZXJyaWRlbiBtZXRob2QgJyIgKyBtZXRob2ROYW1lICsg
Iic6ICIgKyBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGZpbmFsbHkgewor
ICAgICAgICAgICAgICAgIGlmICghb3B0X3N0aWNreSkKKyAgICAgICAgICAgICAgICAgICAgcmVj
ZWl2ZXJbbWV0aG9kTmFtZV0gPSBvcmlnaW5hbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsOwor
ICAgIH0KIAotICAgIGNsb3NlOiBmdW5jdGlvbigpCisgICAgSW5zcGVjdG9yVGVzdC50ZXh0Q29u
dGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKICAgICB7Ci0gICAgICAgIHRoaXMu
X2NhbGxiYWNrKHRoaXMuX2J1ZmZlcik7CisgICAgICAgIHZhciBidWZmZXIgPSAiIjsKKyAgICAg
ICAgdmFyIGN1cnJlbnROb2RlID0gbm9kZTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnROb2RlID0g
Y3VycmVudE5vZGUudHJhdmVyc2VOZXh0Tm9kZShub2RlKSkgeworICAgICAgICAgICAgaWYgKGN1
cnJlbnROb2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkKKyAgICAgICAgICAgICAgICBi
dWZmZXIgKz0gY3VycmVudE5vZGUubm9kZVZhbHVlOworICAgICAgICAgICAgZWxzZSBpZiAoY3Vy
cmVudE5vZGUubm9kZU5hbWUgPT09ICJMSSIpCisgICAgICAgICAgICAgICAgYnVmZmVyICs9ICJc
biAgICAiOworICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudE5vZGUuY2xhc3NMaXN0LmNvbnRh
aW5zKCJjb25zb2xlLW1lc3NhZ2UiKSkKKyAgICAgICAgICAgICAgICBidWZmZXIgKz0gIlxuXG4i
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgfQotfTsKKworICAgIElu
c3BlY3RvclRlc3QuU3RyaW5nT3V0cHV0U3RyZWFtID0gZnVuY3Rpb24oY2FsbGJhY2spCisgICAg
eworICAgICAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICB0aGlzLl9idWZm
ZXIgPSAiIjsKKyAgICB9OworCisgICAgSW5zcGVjdG9yVGVzdC5TdHJpbmdPdXRwdXRTdHJlYW0u
cHJvdG90eXBlID0geworICAgICAgICB3cml0ZTogZnVuY3Rpb24oY2h1bmssIGNhbGxiYWNrKQor
ICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9idWZmZXIgKz0gY2h1bms7CisgICAgICAgICAg
ICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpcyk7CisgICAgICAg
IH0sCisKKyAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAg
dGhpcy5fY2FsbGJhY2sodGhpcy5fYnVmZmVyKTsKKyAgICAgICAgfQorICAgIH07CiAKIH07CiAK
</data>
<flag name="review"
          id="199777"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>