<?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>120957</bug_id>
          
          <creation_ts>2013-09-07 10:03:38 -0700</creation_ts>
          <short_desc>Copy js-test-pre.js, js-test-post.js, and js-test-post-async.js to LayoutTests/resources</short_desc>
          <delta_ts>2013-09-07 10:52:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>120899</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>926213</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-09-07 10:03:38 -0700</bug_when>
    <thetext>Patch coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926214</commentid>
    <comment_count>1</comment_count>
      <attachid>210911</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-09-07 10:06:23 -0700</bug_when>
    <thetext>Created attachment 210911
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926215</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-09-07 10:08:07 -0700</bug_when>
    <thetext>This is the first of many steps to move the js-test-pre/post js files to LayoutTests/resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926216</commentid>
    <comment_count>3</comment_count>
      <attachid>210911</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-09-07 10:16:42 -0700</bug_when>
    <thetext>Comment on attachment 210911
the patch.

You&apos;re using svn mv, right?

We don&apos;t want to lose the svn hitory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926217</commentid>
    <comment_count>4</comment_count>
      <attachid>210911</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-07 10:17:56 -0700</bug_when>
    <thetext>Comment on attachment 210911
the patch.

Might as well move standalone-pre.js and standalone-post.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926220</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-09-07 10:25:18 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 210911 [details])
&gt; You&apos;re using svn mv, right?
&gt; 
&gt; We don&apos;t want to lose the svn hitory.

Yes, I&apos;m using svn cp.  The history is preserved.

(In reply to comment #4)
&gt; (From update of attachment 210911 [details])
&gt; Might as well move standalone-pre.js and standalone-post.js.

OK, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926222</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-09-07 10:52:10 -0700</bug_when>
    <thetext>Landed in r155250: &lt;http://trac.webkit.org/r155250&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210911</attachid>
            <date>2013-09-07 10:06:23 -0700</date>
            <delta_ts>2013-09-07 10:17:56 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-120957.patch</filename>
            <type>text/plain</type>
            <size>24944</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtYXN5bmMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1hc3luYy5qcwkocmV2
aXNpb24gMTU1MjMzKQkoZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QtYXN5bmMuanM6MTU1MjMzKQorKysgTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC1hc3luYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKK2lmICghZXJyb3JN
ZXNzYWdlKQorICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CitzaG91bGRCZVRydWUoInN1
Y2Nlc3NmdWxseVBhcnNlZCIpOworZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNU
IENPTVBMRVRFPC9zcGFuPicpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMJKHJldmlzaW9uIDE1NTIzMykJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzOjE1NTIzMykKKysrIExheW91dFRlc3RzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACit3YXNQb3N0VGVzdFNjcmlw
dFBhcnNlZCA9IHRydWU7CisKK2lmICh3aW5kb3cuanNUZXN0SXNBc3luYykgeworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgaWYgKHdpbmRvdy53YXNGaW5pc2hKU1Rlc3RDYWxsZWQpCisgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworfSBlbHNlCisgICAgZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzCShyZXZpc2lvbiAxNTUyMzMpCShmcm9tIExheW91dFRlc3RzL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzOjE1NTIzMykKKysrIExheW91dFRlc3RzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5MiBAQAorLy8g
c3ZnL2R5bmFtaWMtdXBkYXRlcyB0ZXN0cyBzZXQgZW5hYmxlUGl4ZWxUZXN0aW5nPXRydWUsIGFz
IHdlIHdhbnQgdG8gZHVtcCB0ZXh0ICsgcGl4ZWwgcmVzdWx0cworaWYgKHNlbGYudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoc2VsZi5lbmFibGVQaXhlbFRlc3RpbmcpOwor
Cit2YXIgZGVzY3JpcHRpb24sIGRlYnVnLCBzdWNjZXNzZnVsbHlQYXJzZWQsIGVycm9yTWVzc2Fn
ZSwgc2lsZW50VGVzdFBhc3MsIGRpZFBhc3NTb21lVGVzdHNTaWxlbnRseSwgZGlkRmFpbFNvbWVU
ZXN0czsKKworc2lsZW50VGVzdFBhc3MgPSBmYWxzZTsKK2RpZFBhc3NTb21lVGVzdHNTaWxlbnRs
eSA9IGZhbHNlOworZGlkRmFpbFNvbWVUZXN0cyA9IGZhbHNlOworCisoZnVuY3Rpb24oKSB7CisK
KyAgICBmdW5jdGlvbiBnZXRPckNyZWF0ZShpZCwgdGFnTmFtZSkKKyAgICB7CisgICAgICAgIHZh
ciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgICAgICBpZiAoZWxl
bWVudCkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworCisgICAgICAgIGVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpOworICAgICAgICBlbGVtZW50LmlkID0gaWQ7
CisgICAgICAgIHZhciByZWZOb2RlOworICAgICAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuYm9k
eSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CisgICAgICAgIGlmIChpZCA9PSAiZGVzY3Jp
cHRpb24iKQorICAgICAgICAgICAgcmVmTm9kZSA9IGdldE9yQ3JlYXRlKCJjb25zb2xlIiwgImRp
diIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZWZOb2RlID0gcGFyZW50LmZpcnN0Q2hp
bGQ7CisKKyAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCByZWZOb2RlKTsKKyAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorCisgICAgZGVzY3JpcHRpb24gPSBmdW5jdGlv
biBkZXNjcmlwdGlvbihtc2csIHF1aWV0KQorICAgIHsKKyAgICAgICAgLy8gRm9yIE1TSUUgNiBj
b21wYXRpYmlsaXR5CisgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOworICAgICAgICBpZiAocXVpZXQpCisgICAgICAgICAgICBzcGFuLmlubmVySFRNTCA9
ICc8cD4nICsgbXNnICsgJzwvcD48cD5PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgbm8gIjxzcGFu
IGNsYXNzPSJmYWlsIj5GQUlMPC9zcGFuPiIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICI8c3BhbiBj
bGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4iLjwvcD4nOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzcGFuLmlubmVySFRNTCA9ICc8cD4nICsgbXNnICsgJzwvcD48cD5PbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIjxzcGFuIGNsYXNzPSJwYXNzIj5QQVNTPC9z
cGFuPiIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICI8c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01Q
TEVURTwvc3Bhbj4iLjwvcD4nOworCisgICAgICAgIHZhciBkZXNjcmlwdGlvbiA9IGdldE9yQ3Jl
YXRlKCJkZXNjcmlwdGlvbiIsICJwIik7CisgICAgICAgIGlmIChkZXNjcmlwdGlvbi5maXJzdENo
aWxkKQorICAgICAgICAgICAgZGVzY3JpcHRpb24ucmVwbGFjZUNoaWxkKHNwYW4sIGRlc2NyaXB0
aW9uLmZpcnN0Q2hpbGQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkZXNjcmlwdGlvbi5h
cHBlbmRDaGlsZChzcGFuKTsKKyAgICB9OworCisgICAgZGVidWcgPSBmdW5jdGlvbiBkZWJ1Zyht
c2cpCisgICAgeworICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKKyAgICAgICAgZ2V0T3JDcmVhdGUoImNvbnNvbGUiLCAiZGl2IikuYXBwZW5kQ2hpbGQo
c3Bhbik7IC8vIGluc2VydCBpdCBmaXJzdCBzbyBYSFRNTCBrbm93cyB0aGUgbmFtZXNwYWNlCisg
ICAgICAgIHNwYW4uaW5uZXJIVE1MID0gbXNnICsgJzxiciAvPic7CisgICAgfTsKKworICAgIHZh
ciBjc3MgPQorICAgICAgICAiLnBhc3MgeyIgKworICAgICAgICAgICAgImZvbnQtd2VpZ2h0OiBi
b2xkOyIgKworICAgICAgICAgICAgImNvbG9yOiBncmVlbjsiICsKKyAgICAgICAgIn0iICsKKyAg
ICAgICAgIi5mYWlsIHsiICsKKyAgICAgICAgICAgICJmb250LXdlaWdodDogYm9sZDsiICsKKyAg
ICAgICAgICAgICJjb2xvcjogcmVkOyIgKworICAgICAgICAifSIgKworICAgICAgICAiI2NvbnNv
bGUgeyIgKworICAgICAgICAgICAgIndoaXRlLXNwYWNlOiBwcmUtd3JhcDsiICsKKyAgICAgICAg
ICAgICJmb250LWZhbWlseTogbW9ub3NwYWNlOyIgKworICAgICAgICAifSI7CisKKyAgICBmdW5j
dGlvbiBpbnNlcnRTdHlsZVNoZWV0KCkKKyAgICB7CisgICAgICAgIHZhciBzdHlsZUVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOworICAgICAgICBzdHlsZUVsZW1lbnQu
dGV4dENvbnRlbnQgPSBjc3M7CisgICAgICAgIChkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCkuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTsKKyAgICB9CisKKyAgICBp
ZiAoIWlzV29ya2VyKCkpCisgICAgICAgIGluc2VydFN0eWxlU2hlZXQoKTsKKworICAgIHNlbGYu
b25lcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgeworICAgICAgICBlcnJvck1lc3NhZ2Ug
PSBtZXNzYWdlOworICAgIH07CisKK30pKCk7CisKK2Z1bmN0aW9uIGlzV29ya2VyKCkKK3sKKyAg
ICAvLyBJdCdzIGNvbmNlaXZhYmxlIHRoYXQgc29tZW9uZSB3b3VsZCBzdHViIG91dCAnZG9jdW1l
bnQnIGluIGEgd29ya2VyIHNvCisgICAgLy8gYWxzbyBjaGVjayBmb3IgY2hpbGROb2RlcywgYW4g
YXJiaXRyYXJ5IERPTS1yZWxhdGVkIG9iamVjdCB0aGF0IGlzCisgICAgLy8gbWVhbmluZ2xlc3Mg
aW4gYSBXb3JrZXJDb250ZXh0LgorICAgIHJldHVybiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5k
ZWZpbmVkJyB8fCB0eXBlb2YgZG9jdW1lbnQuY2hpbGROb2RlcyA9PT0gJ3VuZGVmaW5lZCcpICYm
ICEhc2VsZi5pbXBvcnRTY3JpcHRzOworfQorCitmdW5jdGlvbiBkZXNjcmlwdGlvblF1aWV0KG1z
ZykgeyBkZXNjcmlwdGlvbihtc2csIHRydWUpOyB9CisKK2Z1bmN0aW9uIGVzY2FwZUhUTUwodGV4
dCkKK3sKKyAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC8mL2csICImYW1wOyIpLnJlcGxhY2UoLzwv
ZywgIiZsdDsiKS5yZXBsYWNlKC9cMC9nLCAiXFwwIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYXNz
ZWQobXNnKQoreworICAgIGlmIChzaWxlbnRUZXN0UGFzcykKKyAgICAgICAgZGlkUGFzc1NvbWVU
ZXN0c1NpbGVudGx5ID0gdHJ1ZTsKKyAgICBlbHNlCisgICAgICAgIGRlYnVnKCc8c3Bhbj48c3Bh
biBjbGFzcz0icGFzcyI+UEFTUzwvc3Bhbj4gJyArIGVzY2FwZUhUTUwobXNnKSArICc8L3NwYW4+
Jyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGYWlsZWQobXNnKQoreworICAgIGRpZEZhaWxTb21lVGVz
dHMgPSB0cnVlOworICAgIGRlYnVnKCc8c3Bhbj48c3BhbiBjbGFzcz0iZmFpbCI+RkFJTDwvc3Bh
bj4gJyArIGVzY2FwZUhUTUwobXNnKSArICc8L3NwYW4+Jyk7Cit9CisKK2Z1bmN0aW9uIGFyZU51
bWJlcnNFcXVhbChfYWN0dWFsLCBfZXhwZWN0ZWQpCit7CisgICAgaWYgKF9leHBlY3RlZCA9PT0g
MCkKKyAgICAgICAgcmV0dXJuIF9hY3R1YWwgPT09IF9leHBlY3RlZCAmJiAoMS9fYWN0dWFsKSA9
PT0gKDEvX2V4cGVjdGVkKTsKKyAgICBpZiAoX2FjdHVhbCA9PT0gX2V4cGVjdGVkKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodHlwZW9mKF9leHBlY3RlZCkgPT0gIm51bWJlciIgJiYg
aXNOYU4oX2V4cGVjdGVkKSkKKyAgICAgICAgcmV0dXJuIHR5cGVvZihfYWN0dWFsKSA9PSAibnVt
YmVyIiAmJiBpc05hTihfYWN0dWFsKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Z1bmN0aW9u
IGFyZUFycmF5c0VxdWFsKF9hLCBfYikKK3sKKyAgICB0cnkgeworICAgICAgICBpZiAoX2EubGVu
Z3RoICE9PSBfYi5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgX2EubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBpZiAoIWFyZU51
bWJlcnNFcXVhbChfYVtpXSwgX2JbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9IGNhdGNoIChleCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitmdW5jdGlvbiBpc01pbnVzWmVybyhuKQoreworICAgIC8vIHRoZSBv
bmx5IHdheSB0byB0ZWxsIDAgZnJvbSAtMCBpbiBKUyBpcyB0aGUgZmFjdCB0aGF0IDEvLTAgaXMK
KyAgICAvLyAtSW5maW5pdHkgaW5zdGVhZCBvZiBJbmZpbml0eQorICAgIHJldHVybiBuID09PSAw
ICYmIDEvbiA8IDA7Cit9CisKK2Z1bmN0aW9uIGlzVHlwZWRBcnJheShhcnJheSkKK3sKKyAgICBy
ZXR1cm4gYXJyYXkgaW5zdGFuY2VvZiBJbnQ4QXJyYXkKKyAgICAgICAgfHwgYXJyYXkgaW5zdGFu
Y2VvZiBJbnQxNkFycmF5CisgICAgICAgIHx8IGFycmF5IGluc3RhbmNlb2YgSW50MzJBcnJheQor
ICAgICAgICB8fCBhcnJheSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkKKyAgICAgICAgfHwgYXJyYXkg
aW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheQorICAgICAgICB8fCBhcnJheSBpbnN0YW5jZW9m
IFVpbnQxNkFycmF5CisgICAgICAgIHx8IGFycmF5IGluc3RhbmNlb2YgVWludDMyQXJyYXkKKyAg
ICAgICAgfHwgYXJyYXkgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkKKyAgICAgICAgfHwgYXJyYXkg
aW5zdGFuY2VvZiBGbG9hdDY0QXJyYXk7Cit9CisKK2Z1bmN0aW9uIGlzUmVzdWx0Q29ycmVjdChf
YWN0dWFsLCBfZXhwZWN0ZWQpCit7CisgICAgaWYgKGFyZU51bWJlcnNFcXVhbChfYWN0dWFsLCBf
ZXhwZWN0ZWQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoX2V4cGVjdGVkCisgICAg
ICAgICYmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoX2V4cGVjdGVkKSA9PQorICAg
ICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFtdKQorICAgICAgICAgICAg
fHwgaXNUeXBlZEFycmF5KF9leHBlY3RlZCkpKQorICAgICAgICByZXR1cm4gYXJlQXJyYXlzRXF1
YWwoX2FjdHVhbCwgX2V4cGVjdGVkKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Z1bmN0aW9u
IHN0cmluZ2lmeSh2KQoreworICAgIGlmICh2ID09PSAwICYmIDEvdiA8IDApCisgICAgICAgIHJl
dHVybiAiLTAiOworICAgIGVsc2UgaWYgKGlzVHlwZWRBcnJheSh2KSkKKyAgICAgICAgcmV0dXJu
IHYuX19wcm90b19fLmNvbnN0cnVjdG9yLm5hbWUgKyAiOlsiICsgQXJyYXkucHJvdG90eXBlLmpv
aW4uY2FsbCh2LCAiLCIpICsgIl0iOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuICIiICsgdjsK
K30KKworZnVuY3Rpb24gZXZhbEFuZExvZyhfYSwgX3F1aWV0KQoreworICBpZiAodHlwZW9mIF9h
ICE9ICJzdHJpbmciKQorICAgIGRlYnVnKCJXQVJOOiB0cnlBbmRMb2coKSBleHBlY3RzIGEgc3Ry
aW5nIGFyZ3VtZW50Iik7CisKKyAgLy8gTG9nIGZpcnN0IGluIGNhc2UgdGhpbmdzIGdvIGhvcnJp
Ymx5IHdyb25nIG9yIHRoaXMgY2F1c2VzIGEgc3luYyBldmVudC4KKyAgaWYgKCFfcXVpZXQpCisg
ICAgZGVidWcoX2EpOworCisgIHZhciBfYXY7CisgIHRyeSB7CisgICAgIF9hdiA9IGV2YWwoX2Ep
OworICB9IGNhdGNoIChlKSB7CisgICAgdGVzdEZhaWxlZChfYSArICIgdGhyZXcgZXhjZXB0aW9u
ICIgKyBlKTsKKyAgfQorICByZXR1cm4gX2F2OworfQorCitmdW5jdGlvbiBzaG91bGRCZShfYSwg
X2IsIHF1aWV0KQoreworICBpZiAodHlwZW9mIF9hICE9ICJzdHJpbmciIHx8IHR5cGVvZiBfYiAh
PSAic3RyaW5nIikKKyAgICBkZWJ1ZygiV0FSTjogc2hvdWxkQmUoKSBleHBlY3RzIHN0cmluZyBh
cmd1bWVudHMiKTsKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsKKyAgICAg
X2F2ID0gZXZhbChfYSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgZXhjZXB0aW9uID0gZTsKKyAg
fQorICB2YXIgX2J2ID0gZXZhbChfYik7CisKKyAgaWYgKGV4Y2VwdGlvbikKKyAgICB0ZXN0RmFp
bGVkKF9hICsgIiBzaG91bGQgYmUgIiArIHN0cmluZ2lmeShfYnYpICsgIi4gVGhyZXcgZXhjZXB0
aW9uICIgKyBleGNlcHRpb24pOworICBlbHNlIGlmIChpc1Jlc3VsdENvcnJlY3QoX2F2LCBfYnYp
KSB7CisgICAgaWYgKCFxdWlldCkgeworICAgICAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyAiICsg
X2IpOworICAgIH0KKyAgfSBlbHNlIGlmICh0eXBlb2YoX2F2KSA9PSB0eXBlb2YoX2J2KSkKKyAg
ICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgIiArIHN0cmluZ2lmeShfYnYpICsgIi4gV2Fz
ICIgKyBzdHJpbmdpZnkoX2F2KSArICIuIik7CisgIGVsc2UKKyAgICB0ZXN0RmFpbGVkKF9hICsg
IiBzaG91bGQgYmUgIiArIHN0cmluZ2lmeShfYnYpICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9i
diArICIpLiBXYXMgIiArIF9hdiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsK
K30KKworZnVuY3Rpb24gZGZnU2hvdWxkQmUodGhlRnVuY3Rpb24sIF9hLCBfYikKK3sKKyAgaWYg
KHR5cGVvZiB0aGVGdW5jdGlvbiAhPSAiZnVuY3Rpb24iIHx8IHR5cGVvZiBfYSAhPSAic3RyaW5n
IiB8fCB0eXBlb2YgX2IgIT0gInN0cmluZyIpCisgICAgZGVidWcoIldBUk46IGRmZ1Nob3VsZEJl
KCkgZXhwZWN0cyBhIGZ1bmN0aW9uIGFuZCB0d28gc3RyaW5ncyIpOworICBub0lubGluZSh0aGVG
dW5jdGlvbik7CisgIHZhciBleGNlcHRpb247CisgIHZhciB2YWx1ZXMgPSBbXTsKKworICAvLyBE
ZWZlbmQgYWdhaW5zdCB0ZXN0cyB0aGF0IG11Y2sgd2l0aCBudW1lcmljIHByb3BlcnRpZXMgb24g
YXJyYXkucHJvdG90eXBlLgorICB2YWx1ZXMuX19wcm90b19fID0gbnVsbDsKKyAgdmFsdWVzLnB1
c2ggPSBBcnJheS5wcm90b3R5cGUucHVzaDsKKyAgCisgIHRyeSB7CisgICAgd2hpbGUgKCFkZmdD
b21waWxlZCh7Zjp0aGVGdW5jdGlvbn0pKQorICAgICAgdmFsdWVzLnB1c2goZXZhbChfYSkpOwor
ICAgIHZhbHVlcy5wdXNoKGV2YWwoX2EpKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGV4Y2VwdGlv
biA9IGU7CisgIH0KKworICB2YXIgX2J2ID0gZXZhbChfYik7CisgIGlmIChleGNlcHRpb24pCisg
ICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlICIgKyBzdHJpbmdpZnkoX2J2KSArICIuIE9u
IGl0ZXJhdGlvbiAiICsgKHZhbHVlcy5sZW5ndGggKyAxKSArICIsIHRocmV3IGV4Y2VwdGlvbiAi
ICsgZXhjZXB0aW9uKTsKKyAgZWxzZSB7CisgICAgdmFyIGFsbFBhc3NlZCA9IHRydWU7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgIHZhciBfYXYg
PSB2YWx1ZXNbaV07CisgICAgICBpZiAoaXNSZXN1bHRDb3JyZWN0KF9hdiwgX2J2KSkKKyAgICAg
ICAgY29udGludWU7CisgICAgICBpZiAodHlwZW9mKF9hdikgPT0gdHlwZW9mKF9idikpCisgICAg
ICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgc3RyaW5naWZ5KF9idikgKyAiLiBP
biBpdGVyYXRpb24gIiArIChpICsgMSkgKyAiLCB3YXMgIiArIHN0cmluZ2lmeShfYXYpICsgIi4i
KTsKKyAgICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlICIgKyBz
dHJpbmdpZnkoX2J2KSArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYnYgKyAiKS4gT24gaXRlcmF0
aW9uICIgKyAoaSArIDEpICsgIiwgd2FzICIgKyBfYXYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2Yg
X2F2ICsgIikuIik7CisgICAgICBhbGxQYXNzZWQgPSBmYWxzZTsKKyAgICB9CisgICAgaWYgKGFs
bFBhc3NlZCkKKyAgICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzICIgKyBfYiArICIgb24gYWxsIGl0
ZXJhdGlvbnMgaW5jbHVkaW5nIGFmdGVyIERGRyB0aWVyLXVwLiIpOworICB9CisgIAorICByZXR1
cm4gdmFsdWVzLmxlbmd0aDsKK30KKworLy8gRXhlY3V0ZSBjb25kaXRpb24gZXZlcnkgNSBtaWxs
aXNlY29uZHMgdW50aWwgaXQgc3VjY2VlZCBvciBmYWlsdXJlVGltZSBpcyByZWFjaGVkLgorLy8g
Y29tcGxldGlvbkhhbmRsZXIgaXMgZXhlY3V0ZWQgb24gc3VjY2VzcywgZmFpbHVyZUhhbmRsZXIg
aXMgZXhlY3V0ZWQgb24gdGltZW91dC4KK2Z1bmN0aW9uIF93YWl0Rm9yQ29uZGl0aW9uKGNvbmRp
dGlvbiwgZmFpbHVyZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyLCBmYWlsdXJlSGFuZGxlcikKK3sK
KyAgaWYgKGNvbmRpdGlvbigpKSB7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgfSBlbHNl
IGlmIChEYXRlLm5vdygpID4gZmFpbHVyZVRpbWUpIHsKKyAgICBmYWlsdXJlSGFuZGxlcigpOwor
ICB9IGVsc2UgeworICAgIHNldFRpbWVvdXQoX3dhaXRGb3JDb25kaXRpb24sIDUsIGNvbmRpdGlv
biwgZmFpbHVyZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyLCBmYWlsdXJlSGFuZGxlcik7CisgIH0K
K30KKworZnVuY3Rpb24gc2hvdWxkQmVjb21lRXF1YWwoX2EsIF9iLCBjb21wbGV0aW9uSGFuZGxl
ciwgdGltZW91dCkKK3sKKyAgaWYgKHR5cGVvZiBfYSAhPSAic3RyaW5nIiB8fCB0eXBlb2YgX2Ig
IT0gInN0cmluZyIpCisgICAgZGVidWcoIldBUk46IHNob3VsZEJlY29tZUVxdWFsKCkgZXhwZWN0
cyBzdHJpbmcgYXJndW1lbnRzIik7CisKKyAgaWYgKHRpbWVvdXQgPT09IHVuZGVmaW5lZCkKKyAg
ICB0aW1lb3V0ID0gNTAwOworCisgIHZhciBjb25kaXRpb24gPSBmdW5jdGlvbigpIHsKKyAgICB2
YXIgZXhjZXB0aW9uOworICAgIHZhciBfYXY7CisgICAgdHJ5IHsKKyAgICAgIF9hdiA9IGV2YWwo
X2EpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGV4Y2VwdGlvbiA9IGU7CisgICAgfQorICAg
IHZhciBfYnYgPSBldmFsKF9iKTsKKyAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgdGVzdEZhaWxl
ZChfYSArICIgc2hvdWxkIGJlY29tZSAiICsgX2J2ICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBl
eGNlcHRpb24pOworICAgIGlmIChpc1Jlc3VsdENvcnJlY3QoX2F2LCBfYnYpKSB7CisgICAgICB0
ZXN0UGFzc2VkKF9hICsgIiBiZWNhbWUgIiArIF9iKTsKKyAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7CisgIH07CisgIHZhciBmYWlsdXJlVGltZSA9IERhdGUubm93
KCkgKyB0aW1lb3V0OworICB2YXIgZmFpbHVyZUhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7CisgICAg
dGVzdEZhaWxlZChfYSArICIgZmFpbGVkIHRvIGNoYW5nZSB0byAiICsgX2IgKyAiIGluICIgKyAo
dGltZW91dCAvIDEwMDApICsgIiBzZWNvbmRzLiIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgIH07CisgIF93YWl0Rm9yQ29uZGl0aW9uKGNvbmRpdGlvbiwgZmFpbHVyZVRpbWUsIGNvbXBs
ZXRpb25IYW5kbGVyLCBmYWlsdXJlSGFuZGxlcik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlY29t
ZUVxdWFsVG9TdHJpbmcodmFsdWUsIHJlZmVyZW5jZSwgY29tcGxldGlvbkhhbmRsZXIsIHRpbWVv
dXQpCit7CisgIGlmICh0eXBlb2YgdmFsdWUgIT09ICJzdHJpbmciIHx8IHR5cGVvZiByZWZlcmVu
Y2UgIT09ICJzdHJpbmciKQorICAgIGRlYnVnKCJXQVJOOiBzaG91bGRCZWNvbWVFcXVhbFRvU3Ry
aW5nKCkgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzIik7CisgIHZhciB1bmV2YWxlZFN0cmluZyA9
IEpTT04uc3RyaW5naWZ5KHJlZmVyZW5jZSk7CisgIHNob3VsZEJlY29tZUVxdWFsKHZhbHVlLCB1
bmV2YWxlZFN0cmluZywgY29tcGxldGlvbkhhbmRsZXIsIHRpbWVvdXQpOworfQorCitmdW5jdGlv
biBzaG91bGRCZVR5cGUoX2EsIF90eXBlKSB7CisgIHZhciBleGNlcHRpb247CisgIHZhciBfYXY7
CisgIHRyeSB7CisgICAgX2F2ID0gZXZhbChfYSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBleGNl
cHRpb24gPSBlOworICB9CisKKyAgdmFyIF90eXBldiA9IGV2YWwoX3R5cGUpOworICBpZiAoX2F2
IGluc3RhbmNlb2YgX3R5cGV2KSB7CisgICAgdGVzdFBhc3NlZChfYSArICIgaXMgYW4gaW5zdGFu
Y2Ugb2YgIiArIF90eXBlKTsKKyAgfSBlbHNlIHsKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBpcyBu
b3QgYW4gaW5zdGFuY2Ugb2YgIiArIF90eXBlKTsKKyAgfQorfQorCisvLyBWYXJpYW50IG9mIHNo
b3VsZEJlKCktLWNvbmZpcm1zIHRoYXQgcmVzdWx0IG9mIGV2YWwoX3RvX2V2YWwpIGlzIHdpdGhp
bgorLy8gbnVtZXJpYyBfdG9sZXJhbmNlIG9mIG51bWVyaWMgX3RhcmdldC4KK2Z1bmN0aW9uIHNo
b3VsZEJlQ2xvc2VUbyhfdG9fZXZhbCwgX3RhcmdldCwgX3RvbGVyYW5jZSwgcXVpZXQpCit7Cisg
IGlmICh0eXBlb2YgX3RvX2V2YWwgIT0gInN0cmluZyIpIHsKKyAgICB0ZXN0RmFpbGVkKCJzaG91
bGRCZUNsb3NlVG8oKSByZXF1aXJlcyBzdHJpbmcgYXJndW1lbnQgX3RvX2V2YWwuIHdhcyB0eXBl
ICIgKyB0eXBlb2YgX3RvX2V2YWwpOworICAgIHJldHVybjsKKyAgfQorICBpZiAodHlwZW9mIF90
YXJnZXQgIT0gIm51bWJlciIpIHsKKyAgICB0ZXN0RmFpbGVkKCJzaG91bGRCZUNsb3NlVG8oKSBy
ZXF1aXJlcyBudW1lcmljIGFyZ3VtZW50IF90YXJnZXQuIHdhcyB0eXBlICIgKyB0eXBlb2YgX3Rh
cmdldCk7CisgICAgcmV0dXJuOworICB9CisgIGlmICh0eXBlb2YgX3RvbGVyYW5jZSAhPSAibnVt
YmVyIikgeworICAgIHRlc3RGYWlsZWQoInNob3VsZEJlQ2xvc2VUbygpIHJlcXVpcmVzIG51bWVy
aWMgYXJndW1lbnQgX3RvbGVyYW5jZS4gd2FzIHR5cGUgIiArIHR5cGVvZiBfdG9sZXJhbmNlKTsK
KyAgICByZXR1cm47CisgIH0KKworICB2YXIgX3Jlc3VsdDsKKyAgdHJ5IHsKKyAgICAgX3Jlc3Vs
dCA9IGV2YWwoX3RvX2V2YWwpOworICB9IGNhdGNoIChlKSB7CisgICAgdGVzdEZhaWxlZChfdG9f
ZXZhbCArICIgc2hvdWxkIGJlIHdpdGhpbiAiICsgX3RvbGVyYW5jZSArICIgb2YgIgorICAgICAg
ICAgICAgICAgKyBfdGFyZ2V0ICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBlKTsKKyAgICByZXR1
cm47CisgIH0KKworICBpZiAodHlwZW9mKF9yZXN1bHQpICE9IHR5cGVvZihfdGFyZ2V0KSkgewor
ICAgIHRlc3RGYWlsZWQoX3RvX2V2YWwgKyAiIHNob3VsZCBiZSBvZiB0eXBlICIgKyB0eXBlb2Yg
X3RhcmdldAorICAgICAgICAgICAgICAgKyAiIGJ1dCB3YXMgb2YgdHlwZSAiICsgdHlwZW9mIF9y
ZXN1bHQpOworICB9IGVsc2UgaWYgKE1hdGguYWJzKF9yZXN1bHQgLSBfdGFyZ2V0KSA8PSBfdG9s
ZXJhbmNlKSB7CisgICAgaWYgKCFxdWlldCkgeworICAgICAgICB0ZXN0UGFzc2VkKF90b19ldmFs
ICsgIiBpcyB3aXRoaW4gIiArIF90b2xlcmFuY2UgKyAiIG9mICIgKyBfdGFyZ2V0KTsKKyAgICB9
CisgIH0gZWxzZSB7CisgICAgdGVzdEZhaWxlZChfdG9fZXZhbCArICIgc2hvdWxkIGJlIHdpdGhp
biAiICsgX3RvbGVyYW5jZSArICIgb2YgIiArIF90YXJnZXQKKyAgICAgICAgICAgICAgICsgIi4g
V2FzICIgKyBfcmVzdWx0ICsgIi4iKTsKKyAgfQorfQorCitmdW5jdGlvbiBzaG91bGROb3RCZShf
YSwgX2IsIHF1aWV0KQoreworICBpZiAodHlwZW9mIF9hICE9ICJzdHJpbmciIHx8IHR5cGVvZiBf
YiAhPSAic3RyaW5nIikKKyAgICBkZWJ1ZygiV0FSTjogc2hvdWxkTm90QmUoKSBleHBlY3RzIHN0
cmluZyBhcmd1bWVudHMiKTsKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsK
KyAgICAgX2F2ID0gZXZhbChfYSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgZXhjZXB0aW9uID0g
ZTsKKyAgfQorICB2YXIgX2J2ID0gZXZhbChfYik7CisKKyAgaWYgKGV4Y2VwdGlvbikKKyAgICB0
ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgbm90IGJlICIgKyBfYnYgKyAiLiBUaHJldyBleGNlcHRp
b24gIiArIGV4Y2VwdGlvbik7CisgIGVsc2UgaWYgKCFpc1Jlc3VsdENvcnJlY3QoX2F2LCBfYnYp
KSB7CisgICAgaWYgKCFxdWlldCkgeworICAgICAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBub3Qg
IiArIF9iKTsKKyAgICB9CisgIH0gZWxzZQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBu
b3QgYmUgIiArIF9idiArICIuIik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlY29tZURpZmZlcmVu
dChfYSwgX2IsIGNvbXBsZXRpb25IYW5kbGVyLCB0aW1lb3V0KQoreworICBpZiAodHlwZW9mIF9h
ICE9ICJzdHJpbmciIHx8IHR5cGVvZiBfYiAhPSAic3RyaW5nIikKKyAgICBkZWJ1ZygiV0FSTjog
c2hvdWxkQmVjb21lRGlmZmVyZW50KCkgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzIik7CisgIGlm
ICh0aW1lb3V0ID09PSB1bmRlZmluZWQpCisgICAgdGltZW91dCA9IDUwMDsKKworICB2YXIgY29u
ZGl0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGV4Y2VwdGlvbjsKKyAgICB2YXIgX2F2Owor
ICAgIHRyeSB7CisgICAgICBfYXYgPSBldmFsKF9hKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICBleGNlcHRpb24gPSBlOworICAgIH0KKyAgICB2YXIgX2J2ID0gZXZhbChfYik7CisgICAgaWYg
KGV4Y2VwdGlvbikKKyAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZWNhbWUgbm90IGVx
dWFsIHRvICIgKyBfYnYgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbik7CisgICAg
aWYgKCFpc1Jlc3VsdENvcnJlY3QoX2F2LCBfYnYpKSB7CisgICAgICB0ZXN0UGFzc2VkKF9hICsg
IiBiZWNhbWUgZGlmZmVyZW50IGZyb20gIiArIF9iKTsKKyAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7CisgIH07CisgIHZhciBmYWlsdXJlVGltZSA9IERhdGUubm93
KCkgKyB0aW1lb3V0OworICB2YXIgZmFpbHVyZUhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7CisgICAg
dGVzdEZhaWxlZChfYSArICIgZGlkIG5vdCBiZWNvbWUgZGlmZmVyZW50IGZyb20gIiArIF9iICsg
IiBpbiAiICsgKHRpbWVvdXQgLyAxMDAwKSArICIgc2Vjb25kcy4iKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICB9OworICBfd2FpdEZvckNvbmRpdGlvbihjb25kaXRpb24sIGZhaWx1cmVU
aW1lLCBjb21wbGV0aW9uSGFuZGxlciwgZmFpbHVyZUhhbmRsZXIpOworfQorCitmdW5jdGlvbiBz
aG91bGRCZVRydWUoX2EpIHsgc2hvdWxkQmUoX2EsICJ0cnVlIik7IH0KK2Z1bmN0aW9uIHNob3Vs
ZEJlVHJ1ZVF1aWV0KF9hKSB7IHNob3VsZEJlKF9hLCAidHJ1ZSIsIHRydWUpOyB9CitmdW5jdGlv
biBzaG91bGRCZUZhbHNlKF9hKSB7IHNob3VsZEJlKF9hLCAiZmFsc2UiKTsgfQorZnVuY3Rpb24g
c2hvdWxkQmVOYU4oX2EpIHsgc2hvdWxkQmUoX2EsICJOYU4iKTsgfQorZnVuY3Rpb24gc2hvdWxk
QmVOdWxsKF9hKSB7IHNob3VsZEJlKF9hLCAibnVsbCIpOyB9CitmdW5jdGlvbiBzaG91bGRCZVpl
cm8oX2EpIHsgc2hvdWxkQmUoX2EsICIwIik7IH0KKworZnVuY3Rpb24gc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKGEsIGIpCit7CisgIGlmICh0eXBlb2YgYSAhPT0gInN0cmluZyIgfHwgdHlwZW9mIGIg
IT09ICJzdHJpbmciKQorICAgIGRlYnVnKCJXQVJOOiBzaG91bGRCZUVxdWFsVG9TdHJpbmcoKSBl
eHBlY3RzIHN0cmluZyBhcmd1bWVudHMiKTsKKyAgdmFyIHVuZXZhbGVkU3RyaW5nID0gSlNPTi5z
dHJpbmdpZnkoYik7CisgIHNob3VsZEJlKGEsIHVuZXZhbGVkU3RyaW5nKTsKK30KKworZnVuY3Rp
b24gc2hvdWxkQmVFbXB0eVN0cmluZyhfYSkgeyBzaG91bGRCZUVxdWFsVG9TdHJpbmcoX2EsICIi
KTsgfQorCitmdW5jdGlvbiBzaG91bGRFdmFsdWF0ZVRvKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
Ly8gQSBnZW5lcmFsLXB1cnBvc2UgY29tcGFyYXRvci4gICdhY3R1YWwnIHNob3VsZCBiZSBhIHN0
cmluZyB0byBiZQorICAvLyBldmFsdWF0ZWQsIGFzIGZvciBzaG91bGRCZSgpLiAnZXhwZWN0ZWQn
IG1heSBiZSBhbnkgdHlwZSBhbmQgd2lsbCBiZQorICAvLyB1c2VkIHdpdGhvdXQgYmVpbmcgZXZh
bCdlZC4KKyAgaWYgKGV4cGVjdGVkID09IG51bGwpIHsKKyAgICAvLyBEbyB0aGlzIGJlZm9yZSB0
aGUgb2JqZWN0IHRlc3QsIHNpbmNlIG51bGwgaXMgb2YgdHlwZSAnb2JqZWN0Jy4KKyAgICBzaG91
bGRCZU51bGwoYWN0dWFsKTsKKyAgfSBlbHNlIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT0gInVuZGVm
aW5lZCIpIHsKKyAgICBzaG91bGRCZVVuZGVmaW5lZChhY3R1YWwpOworICB9IGVsc2UgaWYgKHR5
cGVvZiBleHBlY3RlZCA9PSAiZnVuY3Rpb24iKSB7CisgICAgLy8gQWxsIHRoaXMgZnVzcyBpcyB0
byBhdm9pZCB0aGUgc3RyaW5nLWFyZyB3YXJuaW5nIGZyb20gc2hvdWxkQmUoKS4KKyAgICB0cnkg
eworICAgICAgYWN0dWFsVmFsdWUgPSBldmFsKGFjdHVhbCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgdGVzdEZhaWxlZCgiRXZhbHVhdGluZyAiICsgYWN0dWFsICsgIjogVGhyZXcgZXhjZXB0
aW9uICIgKyBlKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2hvdWxkQmUoIiciICsgYWN0
dWFsVmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC9cbi9nLCAiIikgKyAiJyIsCisgICAgICAgICAg
ICAgIiciICsgZXhwZWN0ZWQudG9TdHJpbmcoKS5yZXBsYWNlKC9cbi9nLCAiIikgKyAiJyIpOwor
ICB9IGVsc2UgaWYgKHR5cGVvZiBleHBlY3RlZCA9PSAib2JqZWN0IikgeworICAgIHNob3VsZEJl
VHJ1ZShhY3R1YWwgKyAiID09ICciICsgZXhwZWN0ZWQgKyAiJyIpOworICB9IGVsc2UgaWYgKHR5
cGVvZiBleHBlY3RlZCA9PSAic3RyaW5nIikgeworICAgIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpOworICB9IGVsc2UgaWYgKHR5cGVvZiBleHBlY3RlZCA9PSAiYm9vbGVhbiIpIHsKKyAgICBz
aG91bGRCZSgidHlwZW9mICIgKyBhY3R1YWwsICInYm9vbGVhbiciKTsKKyAgICBpZiAoZXhwZWN0
ZWQpCisgICAgICBzaG91bGRCZVRydWUoYWN0dWFsKTsKKyAgICBlbHNlCisgICAgICBzaG91bGRC
ZUZhbHNlKGFjdHVhbCk7CisgIH0gZWxzZSBpZiAodHlwZW9mIGV4cGVjdGVkID09ICJudW1iZXIi
KSB7CisgICAgc2hvdWxkQmUoYWN0dWFsLCBzdHJpbmdpZnkoZXhwZWN0ZWQpKTsKKyAgfSBlbHNl
IHsKKyAgICBkZWJ1ZyhleHBlY3RlZCArICIgaXMgdW5rbm93biB0eXBlICIgKyB0eXBlb2YgZXhw
ZWN0ZWQpOworICAgIHNob3VsZEJlVHJ1ZShhY3R1YWwsICInIiAgK2V4cGVjdGVkLnRvU3RyaW5n
KCkgKyAiJyIpOworICB9Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlTm9uWmVybyhfYSkKK3sKKyAg
dmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsKKyAgICAgX2F2ID0gZXZhbChfYSk7
CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgZXhjZXB0aW9uID0gZTsKKyAgfQorCisgIGlmIChleGNl
cHRpb24pCisgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi16ZXJvLiBUaHJldyBl
eGNlcHRpb24gIiArIGV4Y2VwdGlvbik7CisgIGVsc2UgaWYgKF9hdiAhPSAwKQorICAgIHRlc3RQ
YXNzZWQoX2EgKyAiIGlzIG5vbi16ZXJvLiIpOworICBlbHNlCisgICAgdGVzdEZhaWxlZChfYSAr
ICIgc2hvdWxkIGJlIG5vbi16ZXJvLiBXYXMgIiArIF9hdik7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZEJlTm9uTnVsbChfYSkKK3sKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsK
KyAgICAgX2F2ID0gZXZhbChfYSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgZXhjZXB0aW9uID0g
ZTsKKyAgfQorCisgIGlmIChleGNlcHRpb24pCisgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxk
IGJlIG5vbi1udWxsLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbik7CisgIGVsc2UgaWYg
KF9hdiAhPSBudWxsKQorICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIG5vbi1udWxsLiIpOworICBl
bHNlCisgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi1udWxsLiBXYXMgIiArIF9h
dik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlVW5kZWZpbmVkKF9hKQoreworICB2YXIgZXhjZXB0
aW9uOworICB2YXIgX2F2OworICB0cnkgeworICAgICBfYXYgPSBldmFsKF9hKTsKKyAgfSBjYXRj
aCAoZSkgeworICAgICBleGNlcHRpb24gPSBlOworICB9CisKKyAgaWYgKGV4Y2VwdGlvbikKKyAg
ICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgdW5kZWZpbmVkLiBUaHJldyBleGNlcHRpb24g
IiArIGV4Y2VwdGlvbik7CisgIGVsc2UgaWYgKHR5cGVvZiBfYXYgPT0gInVuZGVmaW5lZCIpCisg
ICAgdGVzdFBhc3NlZChfYSArICIgaXMgdW5kZWZpbmVkLiIpOworICBlbHNlCisgICAgdGVzdEZh
aWxlZChfYSArICIgc2hvdWxkIGJlIHVuZGVmaW5lZC4gV2FzICIgKyBfYXYpOworfQorCitmdW5j
dGlvbiBzaG91bGRCZURlZmluZWQoX2EpCit7CisgIHZhciBleGNlcHRpb247CisgIHZhciBfYXY7
CisgIHRyeSB7CisgICAgIF9hdiA9IGV2YWwoX2EpOworICB9IGNhdGNoIChlKSB7CisgICAgIGV4
Y2VwdGlvbiA9IGU7CisgIH0KKworICBpZiAoZXhjZXB0aW9uKQorICAgIHRlc3RGYWlsZWQoX2Eg
KyAiIHNob3VsZCBiZSBkZWZpbmVkLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbik7Cisg
IGVsc2UgaWYgKF9hdiAhPT0gdW5kZWZpbmVkKQorICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIGRl
ZmluZWQuIik7CisgIGVsc2UKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgZGVmaW5l
ZC4gV2FzICIgKyBfYXYpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVh
bChfYSwgX2IpIHsKKyAgICBpZiAodHlwZW9mIF9hICE9ICJzdHJpbmciIHx8IHR5cGVvZiBfYiAh
PSAic3RyaW5nIikKKyAgICAgICAgZGVidWcoIldBUk46IHNob3VsZEJlR3JlYXRlclRoYW5PckVx
dWFsIGV4cGVjdHMgc3RyaW5nIGFyZ3VtZW50cyIpOworCisgICAgdmFyIGV4Y2VwdGlvbjsKKyAg
ICB2YXIgX2F2OworICAgIHRyeSB7CisgICAgICAgIF9hdiA9IGV2YWwoX2EpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXhjZXB0aW9uID0gZTsKKyAgICB9CisgICAgdmFyIF9idiA9IGV2
YWwoX2IpOworCisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgdGVzdEZhaWxlZChfYSArICIg
c2hvdWxkIGJlID49ICIgKyBfYiArICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsK
KyAgICBlbHNlIGlmICh0eXBlb2YgX2F2ID09ICJ1bmRlZmluZWQiIHx8IF9hdiA8IF9idikKKyAg
ICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlID49ICIgKyBfYiArICIuIFdhcyAiICsg
X2F2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9hdiArICIpLiIpOworICAgIGVsc2UKKyAgICAg
ICAgdGVzdFBhc3NlZChfYSArICIgaXMgPj0gIiArIF9iKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
Tm90VGhyb3coX2EpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKF9hKTsKKyAgICAgICAgdGVz
dFBhc3NlZChfYSArICIgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uIik7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgbm90IHRocm93IGV4Y2VwdGlv
bi4gVGhyZXcgZXhjZXB0aW9uICIgKyBlICsgIi4iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZFRocm93KF9hLCBfZSkKK3sKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5
IHsKKyAgICAgX2F2ID0gZXZhbChfYSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgZXhjZXB0aW9u
ID0gZTsKKyAgfQorCisgIHZhciBfZXY7CisgIGlmIChfZSkKKyAgICAgIF9ldiA9ICBldmFsKF9l
KTsKKworICBpZiAoZXhjZXB0aW9uKSB7CisgICAgaWYgKHR5cGVvZiBfZSA9PSAidW5kZWZpbmVk
IiB8fCBleGNlcHRpb24gPT0gX2V2KQorICAgICAgdGVzdFBhc3NlZChfYSArICIgdGhyZXcgZXhj
ZXB0aW9uICIgKyBleGNlcHRpb24gKyAiLiIpOworICAgIGVsc2UKKyAgICAgIHRlc3RGYWlsZWQo
X2EgKyAiIHNob3VsZCB0aHJvdyAiICsgKHR5cGVvZiBfZSA9PSAidW5kZWZpbmVkIiA/ICJhbiBl
eGNlcHRpb24iIDogX2V2KSArICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsgIi4i
KTsKKyAgfSBlbHNlIGlmICh0eXBlb2YgX2F2ID09ICJ1bmRlZmluZWQiKQorICAgIHRlc3RGYWls
ZWQoX2EgKyAiIHNob3VsZCB0aHJvdyAiICsgKHR5cGVvZiBfZSA9PSAidW5kZWZpbmVkIiA/ICJh
biBleGNlcHRpb24iIDogX2V2KSArICIuIFdhcyB1bmRlZmluZWQuIik7CisgIGVsc2UKKyAgICB0
ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgdGhyb3cgIiArICh0eXBlb2YgX2UgPT0gInVuZGVmaW5l
ZCIgPyAiYW4gZXhjZXB0aW9uIiA6IF9ldikgKyAiLiBXYXMgIiArIF9hdiArICIuIik7Cit9CisK
K2Z1bmN0aW9uIHNob3VsZEhhdmVIYWRFcnJvcihtZXNzYWdlKQoreworICAgIGlmIChlcnJvck1l
c3NhZ2UpIHsKKyAgICAgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgi
R290IGV4cGVjdGVkIGVycm9yIik7CisgICAgICAgIGVsc2UgaWYgKGVycm9yTWVzc2FnZS5pbmRl
eE9mKG1lc3NhZ2UpICE9PSAtMSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkdvdCBleHBlY3Rl
ZCBlcnJvcjogJyIgKyBtZXNzYWdlICsgIiciKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dGVzdEZhaWxlZCgiVW5leHBleHRlZCBlcnJvciAnIiArIG1lc3NhZ2UgKyAiJyIpOworICAgIH0g
ZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJNaXNzaW5nIGV4cGV4dGVkIGVycm9yIik7CisgICAg
ZXJyb3JNZXNzYWdlID0gdW5kZWZpbmVkOworfQorCitmdW5jdGlvbiBnYygpIHsKKyAgICBpZiAo
dHlwZW9mIEdDQ29udHJvbGxlciAhPT0gInVuZGVmaW5lZCIpCisgICAgICAgIEdDQ29udHJvbGxl
ci5jb2xsZWN0KCk7CisgICAgZWxzZSB7CisgICAgICAgIHZhciBnY1JlYyA9IGZ1bmN0aW9uIChu
KSB7CisgICAgICAgICAgICBpZiAobiA8IDEpCisgICAgICAgICAgICAgICAgcmV0dXJuIHt9Owor
ICAgICAgICAgICAgdmFyIHRlbXAgPSB7aTogImFiIiArIGkgKyAoaSAvIDEwMDAwMCl9OworICAg
ICAgICAgICAgdGVtcCArPSAiZm9vIjsKKyAgICAgICAgICAgIGdjUmVjKG4tMSk7CisgICAgICAg
IH07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKQorICAgICAgICAgICAg
Z2NSZWMoMTApCisgICAgfQorfQorCitmdW5jdGlvbiBkZmdDb21waWxlZChhcmd1bWVudCkKK3sK
KyAgICB2YXIgbnVtYmVyT2ZDb21waWxlcyA9ICJjb21waWxlcyIgaW4gYXJndW1lbnQgPyBhcmd1
bWVudC5jb21waWxlcyA6IDE7CisgICAgCisgICAgaWYgKCEoImYiIGluIGFyZ3VtZW50KSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJkZmdDb21waWxlZCBjYWxsZWQgd2l0aCBpbnZhbGlkIGFy
Z3VtZW50LiIpOworICAgIAorICAgIGlmIChhcmd1bWVudC5mIGluc3RhbmNlb2YgQXJyYXkpIHsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudC5mLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5udW1iZXJPZkRGR0NvbXBpbGVzKGFyZ3VtZW50LmZb
aV0pIDwgbnVtYmVyT2ZDb21waWxlcykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAodGVzdFJ1bm5lci5udW1iZXJPZkRG
R0NvbXBpbGVzKGFyZ3VtZW50LmYpIDwgbnVtYmVyT2ZDb21waWxlcykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9u
IGRmZ0luY3JlbWVudChhcmd1bWVudCkKK3sKKyAgICBpZiAoIXNlbGYudGVzdFJ1bm5lcikKKyAg
ICAgICAgcmV0dXJuIGFyZ3VtZW50Lmk7CisgICAgCisgICAgaWYgKGFyZ3VtZW50LmkgPCBhcmd1
bWVudC5uKQorICAgICAgICByZXR1cm4gYXJndW1lbnQuaTsKKyAgICAKKyAgICBpZiAoZGlkRmFp
bFNvbWVUZXN0cykKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50Lmk7CisgICAgCisgICAgaWYgKCFk
ZmdDb21waWxlZChhcmd1bWVudCkpCisgICAgICAgIHJldHVybiAic3RhcnQiIGluIGFyZ3VtZW50
ID8gYXJndW1lbnQuc3RhcnQgOiAwOworICAgIAorICAgIHJldHVybiBhcmd1bWVudC5pOworfQor
CitmdW5jdGlvbiBub0lubGluZSh0aGVGdW5jdGlvbikKK3sKKyAgICBpZiAoIXNlbGYudGVzdFJ1
bm5lcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHRlc3RSdW5uZXIubmV2ZXJJbmxpbmVG
dW5jdGlvbih0aGVGdW5jdGlvbik7Cit9CisKK2Z1bmN0aW9uIGlzU3VjY2Vzc2Z1bGx5UGFyc2Vk
KCkKK3sKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYW5kIG9ubHkgcmVwb3J0IHVuZXhwZWN0
ZWQgc3ludGF4IGVycm9ycy4KKyAgICBpZiAoIWVycm9yTWVzc2FnZSkKKyAgICAgICAgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICBzaG91bGRCZVRydWUoInN1Y2Nlc3NmdWxseVBhcnNl
ZCIpOworICAgIGlmIChzaWxlbnRUZXN0UGFzcyAmJiBkaWRQYXNzU29tZVRlc3RzU2lsZW50bHkp
CisgICAgICAgIGRlYnVnKCJQYXNzZWQgc29tZSB0ZXN0cyBzaWxlbnRseS4iKTsKKyAgICBpZiAo
c2lsZW50VGVzdFBhc3MgJiYgZGlkRmFpbFNvbWVUZXN0cykKKyAgICAgICAgZGVidWcoIlNvbWUg
dGVzdHMgZmFpbGVkLiIpOworICAgIGRlYnVnKCc8YnIgLz48c3BhbiBjbGFzcz0icGFzcyI+VEVT
VCBDT01QTEVURTwvc3Bhbj4nKTsKK30KKworLy8gSXQncyBwb3NzaWJsZSBmb3IgYW4gYXN5bmMg
dGVzdCB0byBjYWxsIGZpbmlzaEpTVGVzdCgpIGJlZm9yZSBqcy10ZXN0LXBvc3QuanMKKy8vIGhh
cyBiZWVuIHBhcnNlZC4KK2Z1bmN0aW9uIGZpbmlzaEpTVGVzdCgpCit7CisgICAgd2FzRmluaXNo
SlNUZXN0Q2FsbGVkID0gdHJ1ZTsKKyAgICBpZiAoIXNlbGYud2FzUG9zdFRlc3RTY3JpcHRQYXJz
ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgIGlm
IChzZWxmLmpzVGVzdElzQXN5bmMgJiYgc2VsZi50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gc3RhcnRXb3JrZXIodGVzdFNjcmlwdFVS
TCwgc2hhcmVkKQoreworICAgIHNlbGYuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgZGVidWco
J1N0YXJ0aW5nIHdvcmtlcjogJyArIHRlc3RTY3JpcHRVUkwpOworICAgIHZhciB3b3JrZXIgPSBz
aGFyZWQgPyBuZXcgU2hhcmVkV29ya2VyKHRlc3RTY3JpcHRVUkwsICJTaGFyZWQgV29ya2VyIikg
OiBuZXcgV29ya2VyKHRlc3RTY3JpcHRVUkwpOworICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciB3b3JrZXJQcmVmaXggPSAiW1dvcmtlcl0g
IjsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEubGVuZ3RoIDwgNSB8fCBldmVudC5kYXRhLmNoYXJB
dCg0KSAhPSAnOicpIHsKKyAgICAgICAgICBkZWJ1Zyh3b3JrZXJQcmVmaXggKyBldmVudC5kYXRh
KTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdmFyIGNvZGUgPSBldmVu
dC5kYXRhLnN1YnN0cmluZygwLCA0KTsKKyAgICAgICAgdmFyIHBheWxvYWQgPSB3b3JrZXJQcmVm
aXggKyBldmVudC5kYXRhLnN1YnN0cmluZyg1KTsKKyAgICAgICAgaWYgKGNvZGUgPT0gIlBBU1Mi
KQorICAgICAgICAgICAgdGVzdFBhc3NlZChwYXlsb2FkKTsKKyAgICAgICAgZWxzZSBpZiAoY29k
ZSA9PSAiRkFJTCIpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKHBheWxvYWQpOworICAgICAgICBl
bHNlIGlmIChjb2RlID09ICJERVNDIikKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKHBheWxvYWQp
OworICAgICAgICBlbHNlIGlmIChjb2RlID09ICJET05FIikKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWJ1Zyh3b3JrZXJQcmVmaXggKyBl
dmVudC5kYXRhKTsKKyAgICB9OworCisgICAgd29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIGRlYnVnKCdHb3QgZXJyb3IgZnJvbSB3b3JrZXI6ICcgKyBldmVu
dC5tZXNzYWdlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisgICAgaWYgKHNo
YXJlZCkgeworICAgICAgICB3b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkg
eyB3b3JrZXIub25tZXNzYWdlKGV2ZW50KTsgfTsKKyAgICAgICAgd29ya2VyLnBvcnQuc3RhcnQo
KTsKKyAgICB9CisgICAgcmV0dXJuIHdvcmtlcjsKK30KKworaWYgKGlzV29ya2VyKCkpIHsKKyAg
ICB2YXIgd29ya2VyUG9ydCA9IHNlbGY7CisgICAgaWYgKHNlbGYubmFtZSA9PSAiU2hhcmVkIFdv
cmtlciIpIHsKKyAgICAgICAgc2VsZi5vbmNvbm5lY3QgPSBmdW5jdGlvbihlKSB7CisgICAgICAg
ICAgICB3b3JrZXJQb3J0ID0gZS5wb3J0c1swXTsKKyAgICAgICAgICAgIHdvcmtlclBvcnQub25t
ZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dmFyIGNvbG9uID0gZXZlbnQuZGF0YS5pbmRleE9mKCI6Iik7CisgICAgICAgICAgICAgICAgaWYg
KGNvbG9uID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVucmVjb2du
aXplZCBtZXNzYWdlIHRvIHNoYXJlZCB3b3JrZXI6ICIgKyBldmVudC5kYXRhKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2
YXIgY29kZSA9IGV2ZW50LmRhdGEuc3Vic3RyaW5nKDAsIGNvbG9uKTsKKyAgICAgICAgICAgICAg
ICB2YXIgcGF5bG9hZCA9IGV2ZW50LmRhdGEuc3Vic3RyaW5nKGNvbG9uICsgMSk7CisgICAgICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gIklNUE9SVCIp
CisgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRTY3JpcHRzKHBheWxvYWQpOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJV
bnJlY29nbml6ZWQgbWVzc2FnZSB0byBzaGFyZWQgd29ya2VyOiAiICsgZXZlbnQuZGF0YSk7Cisg
ICAgICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiQ2F1Z2h0IGV4Y2VwdGlvbiBpbiBzaGFyZWQgd29ya2VyIG9ubWVzc2FnZTogIiArIGV4
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH0K
KyAgICBkZXNjcmlwdGlvbiA9IGZ1bmN0aW9uKG1zZywgcXVpZXQpIHsKKyAgICAgICAgd29ya2Vy
UG9ydC5wb3N0TWVzc2FnZSgnREVTQzonICsgbXNnKTsKKyAgICB9CisgICAgdGVzdEZhaWxlZCA9
IGZ1bmN0aW9uKG1zZykgeworICAgICAgICB3b3JrZXJQb3J0LnBvc3RNZXNzYWdlKCdGQUlMOicg
KyBtc2cpOworICAgIH0KKyAgICB0ZXN0UGFzc2VkID0gZnVuY3Rpb24obXNnKSB7CisgICAgICAg
IHdvcmtlclBvcnQucG9zdE1lc3NhZ2UoJ1BBU1M6JyArIG1zZyk7CisgICAgfQorICAgIGZpbmlz
aEpTVGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB3b3JrZXJQb3J0LnBvc3RNZXNzYWdlKCdE
T05FOicpOworICAgIH0KKyAgICBkZWJ1ZyA9IGZ1bmN0aW9uKG1zZykgeworICAgICAgICB3b3Jr
ZXJQb3J0LnBvc3RNZXNzYWdlKG1zZyk7CisgICAgfQorfQo=
</data>
<flag name="review"
          id="232940"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>