<?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>44251</bug_id>
          
          <creation_ts>2010-08-19 05:09:51 -0700</creation_ts>
          <short_desc>Web Inspector: add DOM breakpoints test</short_desc>
          <delta_ts>2010-08-23 02:50:25 -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>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>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>266658</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-19 05:09:51 -0700</bug_when>
    <thetext>Web Inspector: add DOM breakpoints test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266659</commentid>
    <comment_count>1</comment_count>
      <attachid>64829</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-19 05:11:32 -0700</bug_when>
    <thetext>Created attachment 64829
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267241</commentid>
    <comment_count>2</comment_count>
      <attachid>64829</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-20 07:06:07 -0700</bug_when>
    <thetext>Comment on attachment 64829
Proposed patch.

LayoutTests/platform/qt/Skipped:109
 +  inspector/dom-breakpoints.html
It should be skipped on Gtk too, right?

LayoutTests/http/tests/inspector/inspector-test2.js:54
 +  InspectorTest.waitUntilPaused = function(callback)
Would be nice if we could install these methods only for tests that need them like we currently do with console/elements/debugger... tests

LayoutTests/http/tests/inspector/inspector-test2.js:209
 +  function runTestInFrontend(initializeInspectorTest, completeTestCallId, testFunction)
Please move it inside runTest to not confuse people that could try to invoke this function in the inspected page.

LayoutTests/inspector/dom-breakpoints.html:20
 +          InspectorTest.addResult(&quot;Found div element.&quot;);
This test is going to fail id debugger is not always enabled, r- for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267275</commentid>
    <comment_count>3</comment_count>
      <attachid>64962</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-20 09:47:10 -0700</bug_when>
    <thetext>Created attachment 64962
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267276</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-20 09:49:52 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 64829 [details])
&gt; LayoutTests/platform/qt/Skipped:109
&gt;  +  inspector/dom-breakpoints.html
&gt; It should be skipped on Gtk too, right?
&gt; 
&gt; LayoutTests/http/tests/inspector/inspector-test2.js:54
&gt;  +  InspectorTest.waitUntilPaused = function(callback)
&gt; Would be nice if we could install these methods only for tests that need them like we currently do with console/elements/debugger... tests
&gt; 
&gt; LayoutTests/http/tests/inspector/inspector-test2.js:209
&gt;  +  function runTestInFrontend(initializeInspectorTest, completeTestCallId, testFunction)
&gt; Please move it inside runTest to not confuse people that could try to invoke this function in the inspected page.
&gt; 
&gt; LayoutTests/inspector/dom-breakpoints.html:20
&gt;  +          InspectorTest.addResult(&quot;Found div element.&quot;);
&gt; This test is going to fail id debugger is not always enabled, r- for that.

all done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267775</commentid>
    <comment_count>5</comment_count>
      <attachid>64962</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-22 23:58:13 -0700</bug_when>
    <thetext>Comment on attachment 64962
Proposed patch.

LayoutTests/inspector/debugger-breakpoints-not-activated-on-reload.html:46
 +          WebInspector.panels.scripts.toggleBreakpointsButton.element.click();
Use InspectorTest.resumeExecution instead, we may need to merge it into  InspectorTest.completeDebuggerTest();

LayoutTests/http/tests/inspector/inspector-test2.js:127
 +      if (window.initializeDebuggerTest)
Please iterate over all functions matching a naming convention of the test initialization functions(like frontend_*) and collect them here instead of making inspector-test2.js know about all kind of tests.

LayoutTests/http/tests/inspector/inspector-test2.js:111
 +          window.InspectorTest = {};
You don&apos;t need window. prefix here and below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267796</commentid>
    <comment_count>6</comment_count>
      <attachid>65088</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-23 01:33:20 -0700</bug_when>
    <thetext>Created attachment 65088
All comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267799</commentid>
    <comment_count>7</comment_count>
      <attachid>65088</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-23 01:59:21 -0700</bug_when>
    <thetext>Comment on attachment 65088
All comments addressed.

LayoutTests/http/tests/inspector/debugger-test2.js:24
 +          scriptsPanel.toggleBreakpointsButton.element.click();
We may need to move this code into DRT which would reset inspector settings before each test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267811</commentid>
    <comment_count>8</comment_count>
      <attachid>65088</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-23 02:50:21 -0700</bug_when>
    <thetext>Comment on attachment 65088
All comments addressed.

Clearing flags on attachment: 65088

Committed r65799: &lt;http://trac.webkit.org/changeset/65799&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267812</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-23 02:50:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64829</attachid>
            <date>2010-08-19 05:11:32 -0700</date>
            <delta_ts>2010-08-20 09:47:10 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>dom_test.patch</filename>
            <type>text/plain</type>
            <size>7173</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NGQyZGJjLi5iMDM0MjNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDgt
MTkgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWRk
IERPTSBicmVha3BvaW50cyB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NDI1MQorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5z
cGVjdG9yLXRlc3QyLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZUluc3BlY3RvclRlc3QpOgorICAg
ICAgICAoaW5pdGlhbGl6ZUluc3BlY3RvclRlc3QuKToKKyAgICAgICAgKHJ1blRlc3QpOgorICAg
ICAgICAocnVuVGVzdEluRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9kb20tYnJlYWtw
b2ludHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWJyZWFr
cG9pbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAg
ICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBw
ZWQ6CisKIDIwMTAtMDgtMTkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNraXAgY3Jhc2hpbmcgdGVzdC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcwppbmRleCBk
NDU4MGFlLi43MGY5ZTYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdDIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzCkBAIC01MSw2ICs1MSwxNyBAQCBJbnNwZWN0b3JUZXN0
LmVuc3VyZURlYnVnZ2VyRGlzYWJsZWQgPSBmdW5jdGlvbihjYWxsYmFjaykKICAgICB9CiB9Owog
CitJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQorewor
ICAgIGFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1c2VkU2NyaXB0IiwgY2FsbGJhY2spOwor
fTsKKworSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24gPSBmdW5jdGlvbigpCit7CisgICAg
aWYgKFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5wYXVzZWQpCisgICAgICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbHMuc2NyaXB0cy5fdG9nZ2xlUGF1c2UoKTsKK307CisKIEluc3BlY3RvclRlc3Qu
c2hvd1NjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdE5hbWUsIGNhbGxiYWNrKQogewogICAg
IGZ1bmN0aW9uIHdhaXRGb3JBbGxTY3JpcHRzKCkKQEAgLTYzLDYgKzc0LDQyIEBAIEluc3BlY3Rv
clRlc3Quc2hvd1NjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdE5hbWUsIGNhbGxiYWNrKQog
ICAgIHdhaXRGb3JBbGxTY3JpcHRzKCk7CiB9OwogCitJbnNwZWN0b3JUZXN0LmZpbmRET01Ob2Rl
ID0gZnVuY3Rpb24ocm9vdCwgZmlsdGVyLCBjYWxsYmFjaykKK3sKKyAgICB2YXIgZm91bmQgPSBm
YWxzZTsKKworICAgIGlmIChyb290KQorICAgICAgICBmaW5kRE9NTm9kZShyb290KTsKKyAgICBl
bHNlCisgICAgICAgIHdhaXRGb3JEb2N1bWVudCgpOworCisgICAgZnVuY3Rpb24gd2FpdEZvckRv
Y3VtZW50KCkKKyAgICB7CisgICAgICAgIHJvb3QgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9j
dW1lbnQ7CisgICAgICAgIGlmIChyb290KQorICAgICAgICAgICAgZmluZERPTU5vZGUocm9vdCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCBzZXRE
b2N1bWVudCwgd2FpdEZvckRvY3VtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5kRE9N
Tm9kZShub2RlKQorICAgIHsKKyAgICAgICAgaWYgKGZpbHRlcihub2RlKSkgeworICAgICAgICAg
ICAgY2FsbGJhY2sobm9kZSk7CisgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmdldENoaWxkTm9kZXNBc3lu
Yyhub2RlLCBwcm9jZXNzQ2hpbGRyZW4pOworCisgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NDaGls
ZHJlbihjaGlsZHJlbikKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7ICFm
b3VuZCAmJiBjaGlsZHJlbiAmJiBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICAgICAgZmluZERPTU5vZGUoY2hpbGRyZW5baV0pOworICAgICAgICAgICAgaWYgKCFmb3VuZCAm
JiBub2RlID09PSByb290KQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAg
ICB9CisgICAgfQorfTsKKwogZnVuY3Rpb24gY3JlYXRlS2V5RXZlbnQoa2V5SWRlbnRpZmllcikK
IHsKICAgICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIktleWJvYXJkRXZlbnQiKTsK
QEAgLTE1NSwxNiArMjAyLDI2IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CiAKLSAgICB2YXIgdG9FdmFsdWF0ZSA9Ci0gICAgICAgICJpZiAoIXdpbmRvdy5J
bnNwZWN0b3JUZXN0KSB7IiArCi0gICAgICAgICIgICAgdmFyIEluc3BlY3RvclRlc3QgPSB7fTsi
ICsKLSAgICAgICAgIiAgICAoIiArIGluaXRpYWxpemVJbnNwZWN0b3JUZXN0ICsgIikoIiArIGNv
bXBsZXRlVGVzdENhbGxJZCArICIpOyIgKwotICAgICAgICAiICAgIFdlYkluc3BlY3Rvci5zaG93
UGFuZWwoJ2VsZW1lbnRzJyk7IiArCi0gICAgICAgICIgICAgKCIgKyB0ZXN0ICsgIikoKTsiICsK
LSAgICAgICAgIn0iOworICAgIHZhciB0b0V2YWx1YXRlID0gIigiICsgcnVuVGVzdEluRnJvbnRl
bmQgKyAiKSgiICsgaW5pdGlhbGl6ZUluc3BlY3RvclRlc3QgKyAiLCAiICsgY29tcGxldGVUZXN0
Q2FsbElkICsgIiwgIiArIHRlc3QgKyAiKTsiOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2
YWx1YXRlSW5XZWJJbnNwZWN0b3IocnVuVGVzdENhbGxJZCwgdG9FdmFsdWF0ZSk7CiB9CiAKK2Z1
bmN0aW9uIHJ1blRlc3RJbkZyb250ZW5kKGluaXRpYWxpemVJbnNwZWN0b3JUZXN0LCBjb21wbGV0
ZVRlc3RDYWxsSWQsIHRlc3RGdW5jdGlvbikKK3sKKyAgICBpZiAod2luZG93Lkluc3BlY3RvclRl
c3QpCisgICAgICAgIHJldHVybjsKKworICAgIHdpbmRvdy5JbnNwZWN0b3JUZXN0ID0ge307Cisg
ICAgaW5pdGlhbGl6ZUluc3BlY3RvclRlc3QoY29tcGxldGVUZXN0Q2FsbElkKTsKKyAgICBXZWJJ
bnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOworICAgIHRyeSB7CisgICAgICAgdGVzdEZ1
bmN0aW9uKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHdpbmRvdy5JbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChlLnRvU3RyaW5nKCkpOworICAgICAgICB3aW5kb3cuSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9CisKIGZ1bmN0aW9uIGRpZEV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmQoY2FsbElkLCByZXN1bHQpCiB7CiAgICAgaWYgKGNhbGxJZCAhPT0gY29tcGxldGVU
ZXN0Q2FsbElkKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3Bv
aW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Njk5MzE0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUZXN0cyBET00gYnJlYWtwb2ludHMuIEJ1
ZyA0Mjg4NgorCitGb3VuZCBkaXYgZWxlbWVudC4KK1NldCBET00gYnJlYWtwb2ludC4KK1BhdXNl
ZCBhdCBsaW5lIDkgaW4gYXBwZW5kRWxlbWVudAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
LWJyZWFrcG9pbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBm
NTA1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtw
b2ludHMuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorCitmdW5jdGlvbiBhcHBlbmRFbGVtZW50KCkKK3sKKyAgICB2YXIgY2hpbGQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZDAiKS5hcHBlbmRDaGlsZChjaGlsZCk7Cit9CisKK3ZhciB0ZXN0ID0gZnVuY3Rpb24oKQor
eworICAgIEluc3BlY3RvclRlc3QuZmluZERPTU5vZGUobnVsbCwgZnVuY3Rpb24obm9kZSkgewor
ICAgICAgICByZXR1cm4gbm9kZS5nZXRBdHRyaWJ1dGUoImlkIikgPT09ICJkMCI7CisgICAgfSwg
ZmluZERPTU5vZGVDYWxsYmFjayk7CisKKyAgICBmdW5jdGlvbiBmaW5kRE9NTm9kZUNhbGxiYWNr
KG5vZGUpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRm91bmQgZGl2
IGVsZW1lbnQuIik7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0RE9NQnJlYWtwb2ludChu
b2RlLmlkLCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5ET01CcmVha3BvaW50VHlw
ZVN1YnRyZWVNb2RpZmllZCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZXQg
RE9NIGJyZWFrcG9pbnQuIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNv
bGUoImFwcGVuZEVsZW1lbnQoKSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBh
dXNlZCh3YWl0VW50aWxQYXVzZWRDYWxsYmFjayk7CisgICAgfQorCisgICAgZnVuY3Rpb24gd2Fp
dFVudGlsUGF1c2VkQ2FsbGJhY2soY2FsbEZyYW1lcykKKyAgICB7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJQYXVzZWQgYXQgbGluZSAiICsgY2FsbEZyYW1lc1swXS5saW5lICsg
IiBpbiAiICsgY2FsbEZyYW1lc1swXS5mdW5jdGlvbk5hbWUpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LnJlc3VtZUV4ZWN1dGlvbigpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOworICAgIH0KK307CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD4KK1Rlc3RzIERPTSBicmVha3BvaW50cy4gPGEgaHJlZj0iaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODg2Ij5CdWcgNDI4ODY8L2E+Cis8L3A+
Cis8ZGl2IGlkPSJkMCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1NraXBwZWQKaW5kZXggZWY4MzI1NC4uMDUyNjFhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBw
ZWQKQEAgLTI4OSwzICsyODksNiBAQCBwZXJmLwogIyBNYWMtTGVvcGFyZCBhZnRlciByNjM4NjIu
ICBTa2lwcGluZyBmb3Igbm93LgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDI4MjEKIGFuaW1hdGlvbnMvcGxheS1zdGF0ZS5odG1sCisKKyMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMzMyCitpbnNwZWN0b3IvZG9tLWJyZWFrcG9p
bnRzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDY0NTFjZGYuLjBlMjk1MjAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTA1LDYgKzEwNSw5IEBAIGZhc3QvbG9hZGVyL3N1
YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQuaHRtbAogZmFzdC90ZXh0L2h5
cGhlbmF0ZS1jaGFyYWN0ZXIuaHRtbAogZmFzdC90ZXh0L2h5cGhlbnMuaHRtbAogCisjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzMzMgoraW5zcGVjdG9yL2RvbS1i
cmVha3BvaW50cy5odG1sCisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKICMgICAgICAgUGFzc2lu
ZyBIVFRQIHRlc3RzIC0gcmVxdWlyZSBjb25maXJtYXRpb24gb24gYm90LiAgICAgICAgICAgICAg
ICAgICAgICMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQK
aW5kZXggOWE1MzA3My4uNWUwMDljNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTk2
NSwzICs5NjUsNiBAQCBwZXJmLwogIyBBcHBsaWNhdGlvbiBDYWNoZSBRdW90YXMKICMgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNDU4CiBodHRwL3Rlc3RzL2FwcGNh
Y2hlL29yaWdpbi1xdW90YS5odG1sCisKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQzMzMyCitpbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwK
</data>
<flag name="review"
          id="53470"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64962</attachid>
            <date>2010-08-20 09:47:10 -0700</date>
            <delta_ts>2010-08-23 01:33:20 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>insp_tests.patch</filename>
            <type>text/plain</type>
            <size>17929</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NWEyMWE4Li45NWE2ODlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDgt
MjAgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWRk
IERPTSBicmVha3BvaW50cyB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NDI1MQorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItdGVzdDIuanM6IEFkZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZURlYnVnZ2VyVGVzdC5J
bnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0LnN0YXJ0VGVzdCk6CisgICAgICAgIChpbml0
aWFsaXplRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3QpOgorICAg
ICAgICAoaW5pdGlhbGl6ZURlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdn
ZXJUZXN0LmNvbXBsZXRlVGVzdCk6CisgICAgICAgIChpbml0aWFsaXplRGVidWdnZXJUZXN0Lklu
c3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3QpOgorICAgICAgICAoaW5pdGlhbGl6ZURl
YnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZCk6CisgICAgICAgIChpbml0
aWFsaXplRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKToKKyAgICAg
ICAgKGluaXRpYWxpemVEZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNl
KToKKyAgICAgICAgKGluaXRpYWxpemVEZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVzdC5fc2NyaXB0
c0FyZVBhcnNlZCk6CisgICAgICAgIChpbml0aWFsaXplRGVidWdnZXJUZXN0Lkluc3BlY3RvclRl
c3QuX3Nob3dTY3JpcHRTb3VyY2UpOgorICAgICAgICAoaW5pdGlhbGl6ZURlYnVnZ2VyVGVzdCk6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzOgorICAg
ICAgICAoaW5pdGlhbGl6ZUluc3BlY3RvclRlc3QpOgorICAgICAgICAoaW5pdGlhbGl6ZUluc3Bl
Y3RvclRlc3QuKToKKyAgICAgICAgKHJ1blRlc3QucnVuVGVzdEluRnJvbnRlbmQpOgorICAgICAg
ICAocnVuVGVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFrcG9pbnRzLW5v
dC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1icmVh
a3BvaW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kb20tYnJl
YWtwb2ludHMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tp
cHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0wOC0yMCAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEaXJrIFNjaHVsemUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyLXRlc3QyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjM4MDhjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcwpAQCAtMCwwICsxLDEwNCBAQAordmFyIGluaXRpYWxpemVE
ZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbigpIHsKKworSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2Vy
VGVzdCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQoreworICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxz
LnNjcmlwdHMuX2RlYnVnZ2VyRW5hYmxlZCkKKyAgICAgICAgc3RhcnRUZXN0KCk7CisgICAgZWxz
ZSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAiZGVi
dWdnZXJXYXNFbmFibGVkIiwgc3RhcnRUZXN0KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5zY3JpcHRzLl90b2dnbGVEZWJ1Z2dpbmcoZmFsc2UpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHN0YXJ0VGVzdCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRGVi
dWdnZXIgd2FzIGVuYWJsZWQuIik7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfQorfQorCitJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0ID0gZnVuY3Rpb24oKQoreworICAgIGlm
ICghV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9kZWJ1Z2dlckVuYWJsZWQpCisgICAgICAg
IGNvbXBsZXRlVGVzdCgpOworICAgIGVsc2UgeworICAgICAgICBJbnNwZWN0b3JUZXN0Ll9hZGRT
bmlmZmVyKFdlYkluc3BlY3RvciwgImRlYnVnZ2VyV2FzRGlzYWJsZWQiLCBjb21wbGV0ZVRlc3Qp
OworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX3RvZ2dsZURlYnVnZ2luZyhm
YWxzZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY29tcGxldGVUZXN0KCkKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuIik7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfTsKKworSW5zcGVj
dG9yVGVzdC53YWl0VW50aWxQYXVzZWQgPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBJbnNw
ZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIsIGNhbGxi
YWNrKTsKK307CisKK0luc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uID0gZnVuY3Rpb24oKQor
eworICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMucGF1c2VkKQorICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX3RvZ2dsZVBhdXNlKCk7Cit9OworCitJbnNwZWN0
b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihzY3JpcHROYW1lLCBjYWxsYmFjaykK
K3sKKyAgICBpZiAoSW5zcGVjdG9yVGVzdC5fc2NyaXB0c0FyZVBhcnNlZChbc2NyaXB0TmFtZV0p
KQorICAgICAgICBJbnNwZWN0b3JUZXN0Ll9zaG93U2NyaXB0U291cmNlKHNjcmlwdE5hbWUsIGNh
bGxiYWNrKTsKKyAgICBlbHNlCisgICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIoV2Vi
SW5zcGVjdG9yLCAicGFyc2VkU2NyaXB0U291cmNlIiwgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0
U291cmNlLmJpbmQoSW5zcGVjdG9yVGVzdCwgc2NyaXB0TmFtZSwgY2FsbGJhY2spKTsKK307CisK
K0luc3BlY3RvclRlc3QuX3NjcmlwdHNBcmVQYXJzZWQgPSBmdW5jdGlvbihzY3JpcHRzKQorewor
ICAgIHZhciBzY3JpcHRTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NyaXB0cy1m
aWxlcyIpOworICAgIHZhciBvcHRpb25zID0gc2NyaXB0U2VsZWN0Lm9wdGlvbnM7CisKKyAgICAv
LyBDaGVjayB0aGF0IGFsbCB0aGUgZXhwZWN0ZWQgc2NyaXB0cyBhcmUgcHJlc2VudC4KKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGZv
dW5kID0gZmFsc2U7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgb3B0aW9ucy5sZW5ndGg7
IGorKykgeworICAgICAgICAgICAgaWYgKG9wdGlvbnNbal0udGV4dCA9PT0gc2NyaXB0c1tpXSkg
eworICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK307CisKK0luc3BlY3Rv
clRlc3QuX3Nob3dTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihzY3JpcHROYW1lLCBjYWxsYmFjaykK
K3sKKyAgICB2YXIgc2NyaXB0U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcmlw
dHMtZmlsZXMiKTsKKyAgICB2YXIgb3B0aW9ucyA9IHNjcmlwdFNlbGVjdC5vcHRpb25zOworICAg
IHZhciBzY3JpcHRzUGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHM7CisKKyAgICAv
LyBTZWxlY3QgcGFnZSdzIHNjcmlwdCBpZiBpdCdzIG5vdCBjdXJyZW50IG9wdGlvbi4KKyAgICB2
YXIgc2NyaXB0UmVzb3VyY2U7CisgICAgaWYgKG9wdGlvbnNbc2NyaXB0U2VsZWN0LnNlbGVjdGVk
SW5kZXhdLnRleHQgPT09IHNjcmlwdE5hbWUpCisgICAgICAgIHNjcmlwdFJlc291cmNlID0gb3B0
aW9uc1tzY3JpcHRTZWxlY3Quc2VsZWN0ZWRJbmRleF0ucmVwcmVzZW50ZWRPYmplY3Q7CisgICAg
ZWxzZSB7CisgICAgICAgIHZhciBwYWdlU2NyaXB0SW5kZXggPSAtMTsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAob3B0
aW9uc1tpXS50ZXh0ID09PSBzY3JpcHROYW1lKSB7CisgICAgICAgICAgICAgICAgcGFnZVNjcmlw
dEluZGV4ID0gaTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBzY3JpcHRSZXNvdXJjZSA9IG9wdGlvbnNbcGFnZVNjcmlwdEluZGV4XS5y
ZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgc2NyaXB0c1BhbmVsLl9zaG93U2NyaXB0T3JSZXNv
dXJjZShzY3JpcHRSZXNvdXJjZSk7CisgICAgfQorCisgICAgdmFyIHZpZXcgPSBzY3JpcHRzUGFu
ZWwudmlzaWJsZVZpZXc7CisgICAgY2FsbGJhY2sgPSBjYWxsYmFjay5iaW5kKG51bGwsIHZpZXcp
OworICAgIGlmICghdmlldy5zb3VyY2VGcmFtZS5fbG9hZGVkKQorICAgICAgICBJbnNwZWN0b3JU
ZXN0Ll9hZGRTbmlmZmVyKHZpZXcuc291cmNlRnJhbWUsICJzZXRDb250ZW50IiwgY2FsbGJhY2sp
OworICAgIGVsc2UKKyAgICAgICAgY2FsbGJhY2soKTsKK307CisKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcwppbmRleCBkNDU4
MGFlLi5jMTNkOTJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdDIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QyLmpzCkBAIC0xLDE5ICsxLDIwIEBACi12YXIgaW5pdGlhbGl6ZUlu
c3BlY3RvclRlc3QgPSAoZnVuY3Rpb24oY29tcGxldGVUZXN0Q2FsbElkKSB7Cit2YXIgaW5pdGlh
bGl6ZUluc3BlY3RvclRlc3QgPSAoZnVuY3Rpb24oKSB7CiAKIHZhciByZXN1bHRzID0gW107CiAK
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0ID0gZnVuY3Rpb24oKQogewotICAgIEluc3BlY3Rv
ckJhY2tlbmQuZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChjb21wbGV0ZVRlc3RDYWxsSWQs
IEpTT04uc3RyaW5naWZ5KHJlc3VsdHMpKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLmRpZEV2YWx1
YXRlRm9yVGVzdEluRnJvbnRlbmQoSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3RDYWxsSWQsIEpT
T04uc3RyaW5naWZ5KHJlc3VsdHMpKTsKIH07CiAKIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNv
bnNvbGUgPSBmdW5jdGlvbihjb2RlLCBjYWxsYmFjaykKIHsKICAgICBXZWJJbnNwZWN0b3IuY29u
c29sZS52aXNpYmxlID0gdHJ1ZTsKICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5wcm9tcHQudGV4
dCA9IGNvZGU7Ci0gICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUucHJvbXB0RWxlbWVudC5kaXNwYXRj
aEV2ZW50KGNyZWF0ZUtleUV2ZW50KCJFbnRlciIpKTsKLQotICAgIGFkZFNuaWZmZXIoV2ViSW5z
cGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSwgImFkZE1lc3NhZ2UiLAorICAgIHZhciBldmVu
dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJLZXlib2FyZEV2ZW50Iik7CisgICAgZXZlbnQuaW5p
dEtleWJvYXJkRXZlbnQoImtleWRvd24iLCB0cnVlLCB0cnVlLCBudWxsLCAiRW50ZXIiLCAiIik7
CisgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUucHJvbXB0RWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2
ZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldy5wcm90b3R5cGUsICJhZGRNZXNzYWdlIiwKICAgICAgICAgZnVuY3Rpb24oY29tbWFuZFJl
c3VsdCkgewogICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICAgICAgICAgIGNhbGxi
YWNrKGNvbW1hbmRSZXN1bHQudG9NZXNzYWdlRWxlbWVudCgpLnRleHRDb250ZW50KTsKQEAgLTI4
LDQ5ICsyOSw0NiBAQCBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCA9IGZ1bmN0aW9uKHRleHQpCiBJ
bnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlvbihjYWxsYmFjaykKIHsKICAgICBJbnNw
ZWN0b3JCYWNrZW5kLnJlbG9hZFBhZ2UoKTsKLSAgICBhZGRTbmlmZmVyKFdlYkluc3BlY3Rvciwg
InJlc2V0IiwgY2FsbGJhY2spOworICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIoV2ViSW5z
cGVjdG9yLCAicmVzZXQiLCBjYWxsYmFjayk7CiB9OwogCi1JbnNwZWN0b3JUZXN0LmVuc3VyZURl
YnVnZ2VyRW5hYmxlZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQorSW5zcGVjdG9yVGVzdC5maW5kRE9N
Tm9kZSA9IGZ1bmN0aW9uKHJvb3QsIGZpbHRlciwgY2FsbGJhY2spCiB7Ci0gICAgaWYgKFdlYklu
c3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fZGVidWdnZXJFbmFibGVkKQotICAgICAgICBjYWxsYmFj
aygpOwotICAgIGVsc2UgewotICAgICAgICBhZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgImRlYnVn
Z2VyV2FzRW5hYmxlZCIsIGNhbGxiYWNrKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5z
Y3JpcHRzLl90b2dnbGVEZWJ1Z2dpbmcoZmFsc2UpOwotICAgIH0KLX07CisgICAgdmFyIGZvdW5k
ID0gZmFsc2U7CiAKLUluc3BlY3RvclRlc3QuZW5zdXJlRGVidWdnZXJEaXNhYmxlZCA9IGZ1bmN0
aW9uKGNhbGxiYWNrKQotewotICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9k
ZWJ1Z2dlckVuYWJsZWQpCi0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAiZGVidWdnZXJXYXNEaXNhYmxlZCIsIGNhbGxiYWNr
KTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl90b2dnbGVEZWJ1Z2dpbmco
ZmFsc2UpOwotICAgIH0KLX07CisgICAgaWYgKHJvb3QpCisgICAgICAgIGZpbmRET01Ob2RlKHJv
b3QpOworICAgIGVsc2UKKyAgICAgICAgd2FpdEZvckRvY3VtZW50KCk7CiAKLUluc3BlY3RvclRl
c3Quc2hvd1NjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdE5hbWUsIGNhbGxiYWNrKQotewot
ICAgIGZ1bmN0aW9uIHdhaXRGb3JBbGxTY3JpcHRzKCkKKyAgICBmdW5jdGlvbiB3YWl0Rm9yRG9j
dW1lbnQoKQogICAgIHsKLSAgICAgICAgaWYgKHNjcmlwdHNBcmVQYXJzZWQoW3NjcmlwdE5hbWVd
KSkKLSAgICAgICAgICAgIHNob3dTY3JpcHRTb3VyY2Uoc2NyaXB0TmFtZSwgY2FsbGJhY2spOwor
ICAgICAgICByb290ID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50OworICAgICAgICBp
ZiAocm9vdCkKKyAgICAgICAgICAgIGZpbmRET01Ob2RlKHJvb3QpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBhZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBhcnNlZFNjcmlwdFNvdXJjZSIs
IHdhaXRGb3JBbGxTY3JpcHRzKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZm
ZXIoV2ViSW5zcGVjdG9yLCBzZXREb2N1bWVudCwgd2FpdEZvckRvY3VtZW50KTsKICAgICB9Ci0g
ICAgd2FpdEZvckFsbFNjcmlwdHMoKTsKLX07CiAKLWZ1bmN0aW9uIGNyZWF0ZUtleUV2ZW50KGtl
eUlkZW50aWZpZXIpCi17Ci0gICAgdmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJLZXli
b2FyZEV2ZW50Iik7Ci0gICAgZXZ0LmluaXRLZXlib2FyZEV2ZW50KCJrZXlkb3duIiwgdHJ1ZSwg
dHJ1ZSwgbnVsbCwga2V5SWRlbnRpZmllciwgIiIpOwotICAgIHJldHVybiBldnQ7Ci19CisgICAg
ZnVuY3Rpb24gZmluZERPTU5vZGUobm9kZSkKKyAgICB7CisgICAgICAgIGlmIChmaWx0ZXIobm9k
ZSkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG5vZGUpOworICAgICAgICAgICAgZm91bmQgPSB0
cnVlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5n
ZXRDaGlsZE5vZGVzQXN5bmMobm9kZSwgcHJvY2Vzc0NoaWxkcmVuKTsKKworICAgICAgICBmdW5j
dGlvbiBwcm9jZXNzQ2hpbGRyZW4oY2hpbGRyZW4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyAhZm91bmQgJiYgY2hpbGRyZW4gJiYgaSA8IGNoaWxkcmVuLmxlbmd0aDsg
KytpKQorICAgICAgICAgICAgICAgIGZpbmRET01Ob2RlKGNoaWxkcmVuW2ldKTsKKyAgICAgICAg
ICAgIGlmICghZm91bmQgJiYgbm9kZSA9PT0gcm9vdCkKKyAgICAgICAgICAgICAgICBjYWxsYmFj
ayhudWxsKTsKKyAgICAgICAgfQorICAgIH0KK307CiAKLWZ1bmN0aW9uIGFkZFNuaWZmZXIocmVj
ZWl2ZXIsIG1ldGhvZE5hbWUsIG92ZXJyaWRlLCBvcHRfc3RpY2t5KQorSW5zcGVjdG9yVGVzdC5f
YWRkU25pZmZlciA9IGZ1bmN0aW9uKHJlY2VpdmVyLCBtZXRob2ROYW1lLCBvdmVycmlkZSwgb3B0
X3N0aWNreSkKIHsKICAgICB2YXIgb3JpZ2luYWwgPSByZWNlaXZlclttZXRob2ROYW1lXTsKICAg
ICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAiZnVuY3Rpb24iKQpAQCAtOTIsNTYgKzkwLDYgQEAg
ZnVuY3Rpb24gYWRkU25pZmZlcihyZWNlaXZlciwgbWV0aG9kTmFtZSwgb3ZlcnJpZGUsIG9wdF9z
dGlja3kpCiAgICAgfTsKIH0KIAotZnVuY3Rpb24gc2NyaXB0c0FyZVBhcnNlZChzY3JpcHRzKQot
ewotICAgIHZhciBzY3JpcHRTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NyaXB0
cy1maWxlcyIpOwotICAgIHZhciBvcHRpb25zID0gc2NyaXB0U2VsZWN0Lm9wdGlvbnM7Ci0KLSAg
ICAvLyBDaGVjayB0aGF0IGFsbCB0aGUgZXhwZWN0ZWQgc2NyaXB0cyBhcmUgcHJlc2VudC4KLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdmFy
IGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgb3B0aW9ucy5sZW5n
dGg7IGorKykgewotICAgICAgICAgICAgaWYgKG9wdGlvbnNbal0udGV4dCA9PT0gc2NyaXB0c1tp
XSkgewotICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWZvdW5kKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX07Ci0KLWZ1bmN0
aW9uIHNob3dTY3JpcHRTb3VyY2Uoc2NyaXB0TmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIHNj
cmlwdFNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY3JpcHRzLWZpbGVzIik7Ci0g
ICAgdmFyIG9wdGlvbnMgPSBzY3JpcHRTZWxlY3Qub3B0aW9uczsKLSAgICB2YXIgc2NyaXB0c1Bh
bmVsID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzOwotCi0gICAgLy8gU2VsZWN0IHBhZ2Un
cyBzY3JpcHQgaWYgaXQncyBub3QgY3VycmVudCBvcHRpb24uCi0gICAgdmFyIHNjcmlwdFJlc291
cmNlOwotICAgIGlmIChvcHRpb25zW3NjcmlwdFNlbGVjdC5zZWxlY3RlZEluZGV4XS50ZXh0ID09
PSBzY3JpcHROYW1lKQotICAgICAgICBzY3JpcHRSZXNvdXJjZSA9IG9wdGlvbnNbc2NyaXB0U2Vs
ZWN0LnNlbGVjdGVkSW5kZXhdLnJlcHJlc2VudGVkT2JqZWN0OwotICAgIGVsc2UgewotICAgICAg
ICB2YXIgcGFnZVNjcmlwdEluZGV4ID0gLTE7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
b3B0aW9ucy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaWYgKG9wdGlvbnNbaV0udGV4dCA9
PT0gc2NyaXB0TmFtZSkgewotICAgICAgICAgICAgICAgIHBhZ2VTY3JpcHRJbmRleCA9IGk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
c2NyaXB0UmVzb3VyY2UgPSBvcHRpb25zW3BhZ2VTY3JpcHRJbmRleF0ucmVwcmVzZW50ZWRPYmpl
Y3Q7Ci0gICAgICAgIHNjcmlwdHNQYW5lbC5fc2hvd1NjcmlwdE9yUmVzb3VyY2Uoc2NyaXB0UmVz
b3VyY2UpOwotICAgIH0KLQotICAgIHZhciB2aWV3ID0gc2NyaXB0c1BhbmVsLnZpc2libGVWaWV3
OwotICAgIGNhbGxiYWNrID0gY2FsbGJhY2suYmluZChudWxsLCB2aWV3KTsKLSAgICBpZiAoIXZp
ZXcuc291cmNlRnJhbWUuX2xvYWRlZCkKLSAgICAgICAgYWRkU25pZmZlcih2aWV3LnNvdXJjZUZy
YW1lLCAic2V0Q29udGVudCIsIGNhbGxiYWNrKTsKLSAgICBlbHNlCi0gICAgICAgIGNhbGxiYWNr
KCk7Ci19OwotCiB9KTsKIAogdmFyIHJ1blRlc3RDYWxsSWQgPSAwOwpAQCAtMTU1LDEzICsxMDMs
MzEgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIAotICAg
IHZhciB0b0V2YWx1YXRlID0KLSAgICAgICAgImlmICghd2luZG93Lkluc3BlY3RvclRlc3QpIHsi
ICsKLSAgICAgICAgIiAgICB2YXIgSW5zcGVjdG9yVGVzdCA9IHt9OyIgKwotICAgICAgICAiICAg
ICgiICsgaW5pdGlhbGl6ZUluc3BlY3RvclRlc3QgKyAiKSgiICsgY29tcGxldGVUZXN0Q2FsbElk
ICsgIik7IiArCi0gICAgICAgICIgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgnZWxlbWVudHMn
KTsiICsKLSAgICAgICAgIiAgICAoIiArIHRlc3QgKyAiKSgpOyIgKwotICAgICAgICAifSI7Cisg
ICAgZnVuY3Rpb24gcnVuVGVzdEluRnJvbnRlbmQoaW5pdGlhbGl6YXRpb25GdW5jdGlvbnMsIHRl
c3RGdW5jdGlvbiwgY29tcGxldGVUZXN0Q2FsbElkKQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRv
dy5JbnNwZWN0b3JUZXN0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHdpbmRvdy5J
bnNwZWN0b3JUZXN0ID0ge307CisgICAgICAgIHdpbmRvdy5JbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdENhbGxJZCA9IGNvbXBsZXRlVGVzdENhbGxJZDsKKworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGluaXRpYWxpemF0aW9uRnVuY3Rpb25zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAg
aW5pdGlhbGl6YXRpb25GdW5jdGlvbnNbaV0oKTsKKworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hv
d1BhbmVsKCJlbGVtZW50cyIpOworICAgICAgICB0cnkgeworICAgICAgICAgICB0ZXN0RnVuY3Rp
b24oKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB3aW5kb3cuSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHdpbmRvdy5JbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIGluaXRp
YWxpemF0aW9uRnVuY3Rpb25zID0gW3dpbmRvdy5pbml0aWFsaXplSW5zcGVjdG9yVGVzdF07Cisg
ICAgaWYgKHdpbmRvdy5pbml0aWFsaXplRGVidWdnZXJUZXN0KQorICAgICAgICBpbml0aWFsaXph
dGlvbkZ1bmN0aW9ucy5wdXNoKHdpbmRvdy5pbml0aWFsaXplRGVidWdnZXJUZXN0KTsKKyAgICB2
YXIgcGFyYW1ldGVycyA9IFsiWyIgKyBpbml0aWFsaXphdGlvbkZ1bmN0aW9ucyArICJdIiwgdGVz
dCwgY29tcGxldGVUZXN0Q2FsbElkXTsKKyAgICB2YXIgdG9FdmFsdWF0ZSA9ICIoIiArIHJ1blRl
c3RJbkZyb250ZW5kICsgIikoIiArIHBhcmFtZXRlcnMuam9pbigiLCAiKSArICIpOyI7CiAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3RvcihydW5UZXN0Q2FsbElk
LCB0b0V2YWx1YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxv
YWQuaHRtbAppbmRleCAwZjYwMmI3Li40NWI2MWM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFj
dGl2YXRlZC1vbi1yZWxvYWQuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDxodG1sPgogPGhlYWQ+CiA8
c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10
ZXN0Mi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oKQpA
QCAtMTQsMTEgKzE1LDEwIEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgIHRlc3ROYW1lID0g
dGVzdE5hbWUuc3Vic3RyaW5nKHRlc3ROYW1lLmxhc3RJbmRleE9mKCcvJykgKyAxKTsKIAogICAg
IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKLSAgICBJbnNwZWN0b3JUZXN0LmVu
c3VyZURlYnVnZ2VyRW5hYmxlZChlbnN1cmVEZWJ1Z2dlckVuYWJsZWRDYWxsYmFjayk7CisgICAg
SW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGFydERlYnVnZ2VyVGVzdENhbGxiYWNr
KTsKIAotICAgIGZ1bmN0aW9uIGVuc3VyZURlYnVnZ2VyRW5hYmxlZENhbGxiYWNrKCkKKyAgICBm
dW5jdGlvbiBzdGFydERlYnVnZ2VyVGVzdENhbGxiYWNrKCkKICAgICB7Ci0gICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlKHRlc3ROYW1lLCBzaG93U2NyaXB0U291cmNlQ2Fs
bGJhY2spOwogICAgIH0KIApAQCAtNDMsMTMgKzQzLDggQEAgdmFyIHRlc3QgPSBmdW5jdGlvbigp
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQnJlYWtwb2ludHMgYXJlIGRl
YWN0aXZhdGVkLiIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiRXJyb3I6IGJyZWFrcG9pbnRzIGFyZSBhY3RpdmF0ZWQuIik7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuZW5zdXJlRGVidWdnZXJEaXNhYmxlZChlbnN1cmVEZWJ1Z2dlckRpc2FibGVk
Q2FsbGJhY2spOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGVuc3VyZURlYnVnZ2VyRGlzYWJsZWRD
YWxsYmFjaygpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRGVidWdn
ZXIgd2FzIGRpc2FibGVkLiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgp
OworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMudG9nZ2xlQnJlYWtwb2ludHNC
dXR0b24uZWxlbWVudC5jbGljaygpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVi
dWdnZXJUZXN0KCk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wNmQ1MzNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0cyBET00g
YnJlYWtwb2ludHMuIEJ1ZyA0Mjg4NgorCitEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KK0ZvdW5kIGRp
diBlbGVtZW50LgorU2V0IERPTSBicmVha3BvaW50LgorUGF1c2VkIGF0IGxpbmUgMTAgaW4gYXBw
ZW5kRWxlbWVudAorRGVidWdnZXIgd2FzIGRpc2FibGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZjY3N2E5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
YnJlYWtwb2ludHMuaHRtbApAQCAtMCwwICsxLDUxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdDIu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gYXBwZW5kRWxlbWVudCgpCit7Cisg
ICAgdmFyIGNoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImQwIikuYXBwZW5kQ2hpbGQoY2hpbGQpOworfQorCit2YXIgdGVz
dCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0
YXJ0RGVidWdnZXJUZXN0Q2FsbGJhY2spOworCisgICAgZnVuY3Rpb24gc3RhcnREZWJ1Z2dlclRl
c3RDYWxsYmFjaygpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmZpbmRET01Ob2RlKG51
bGwsIGZ1bmN0aW9uKG5vZGUpIHsKKyAgICAgICAgICAgIHJldHVybiBub2RlLmdldEF0dHJpYnV0
ZSgiaWQiKSA9PT0gImQwIjsKKyAgICAgICAgfSwgZmluZERPTU5vZGVDYWxsYmFjayk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZmluZERPTU5vZGVDYWxsYmFjayhub2RlKQorICAgIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZvdW5kIGRpdiBlbGVtZW50LiIpOworICAgICAg
ICBJbnNwZWN0b3JCYWNrZW5kLnNldERPTUJyZWFrcG9pbnQobm9kZS5pZCwgV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZUVsZW1lbnQuRE9NQnJlYWtwb2ludFR5cGVTdWJ0cmVlTW9kaWZpZWQpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2V0IERPTSBicmVha3BvaW50LiIpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJhcHBlbmRFbGVtZW50KCki
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQod2FpdFVudGlsUGF1c2Vk
Q2FsbGJhY2spOworICAgIH0KKworICAgIGZ1bmN0aW9uIHdhaXRVbnRpbFBhdXNlZENhbGxiYWNr
KGNhbGxGcmFtZXMpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUGF1
c2VkIGF0IGxpbmUgIiArIGNhbGxGcmFtZXNbMF0ubGluZSArICIgaW4gIiArIGNhbGxGcmFtZXNb
MF0uZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24o
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOworICAgIH0K
K307CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
cD4KK1Rlc3RzIERPTSBicmVha3BvaW50cy4gPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyODg2Ij5CdWcgNDI4ODY8L2E+Cis8L3A+Cis8ZGl2IGlkPSJk
MCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5k
ZXggOWQ4YzlmNi4uM2M1MWRjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTU5MjEs
NiArNTkyMSw5IEBAIGluc3BlY3Rvci8KIGh0dHAvdGVzdHMvaW5zcGVjdG9yLwogaHR0cC90ZXN0
cy9pbnNwZWN0b3ItZW5hYmxlZC8KIAorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDMzMzIKK2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbAorCiAjIFtHVEtd
IHI2NTY4MSBicm9rZSBhIGNvdXBsZSBHVEsrIGExMXkgdGVzdHMKICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzE2CiBwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0
eS9vYmplY3QtYXR0cmlidXRlcy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IGVm
ODMyNTQuLjA1MjYxYWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0yODksMyArMjg5
LDYgQEAgcGVyZi8KICMgTWFjLUxlb3BhcmQgYWZ0ZXIgcjYzODYyLiAgU2tpcHBpbmcgZm9yIG5v
dy4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODIxCiBhbmlt
YXRpb25zL3BsYXktc3RhdGUuaHRtbAorCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MzMzMgoraW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAppbmRleCBmMzAyM2ZjLi5iOWJmMGQ3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Nr
aXBwZWQKQEAgLTEwNSw2ICsxMDUsOSBAQCBmYXN0L2xvYWRlci9zdWJmcmFtZS1uYXZpZ2F0ZS1k
dXJpbmctbWFpbi1mcmFtZS1sb2FkLmh0bWwKIGZhc3QvdGV4dC9oeXBoZW5hdGUtY2hhcmFjdGVy
Lmh0bWwKIGZhc3QvdGV4dC9oeXBoZW5zLmh0bWwKIAorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDMzMzIKK2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbAor
CiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PSAjCiAjICAgICAgIFBhc3NpbmcgSFRUUCB0ZXN0cyAtIHJl
cXVpcmUgY29uZmlybWF0aW9uIG9uIGJvdC4gICAgICAgICAgICAgICAgICAgICAjCiAjID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PSAjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IDlhNTMwNzMuLjVl
MDA5YzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC05NjUsMyArOTY1LDYgQEAgcGVy
Zi8KICMgQXBwbGljYXRpb24gQ2FjaGUgUXVvdGFzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MzQ1OAogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEu
aHRtbAorCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzMzMgor
aW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65088</attachid>
            <date>2010-08-23 01:33:20 -0700</date>
            <delta_ts>2010-08-23 02:50:21 -0700</delta_ts>
            <desc>All comments addressed.</desc>
            <filename>dom_test.patch</filename>
            <type>text/plain</type>
            <size>17877</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NWEyMWE4Li4wZGE1MTA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDgt
MjMgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWRk
IERPTSBicmVha3BvaW50cyB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NDI1MQorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXItdGVzdDIuanM6IEFkZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3Qu
SW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdC5zdGFydFRlc3QpOgorICAgICAgICAoaW5p
dGlhbGl6ZV9EZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdCk6Cisg
ICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVi
dWdnZXJUZXN0LmNvbXBsZXRlVGVzdCk6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVz
dC5JbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KToKKyAgICAgICAgKGluaXRpYWxp
emVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkKToKKyAgICAgICAg
KGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKToK
KyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lkluc3BlY3RvclRlc3Quc2hvd1Njcmlw
dFNvdXJjZSk6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0
Ll9zY3JpcHRzQXJlUGFyc2VkKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0Lklu
c3BlY3RvclRlc3QuX3Nob3dTY3JpcHRTb3VyY2UpOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1
Z2dlclRlc3QpOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
Mi5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdCk6CisgICAgICAgIChpbml0
aWFsaXplX0luc3BlY3RvclRlc3QuKToKKyAgICAgICAgKHJ1blRlc3QucnVuVGVzdEluRnJvbnRl
bmQpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLWJy
ZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAx
MC0wOC0yMCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjU1ZjUwMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcwpAQCAtMCwwICsxLDExMSBAQAordmFy
IGluaXRpYWxpemVfRGVidWdnZXJUZXN0ID0gZnVuY3Rpb24oKSB7CisKK0luc3BlY3RvclRlc3Qu
c3RhcnREZWJ1Z2dlclRlc3QgPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBpZiAoV2ViSW5z
cGVjdG9yLnBhbmVscy5zY3JpcHRzLl9kZWJ1Z2dlckVuYWJsZWQpCisgICAgICAgIHN0YXJ0VGVz
dCgpOworICAgIGVsc2UgeworICAgICAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYklu
c3BlY3RvciwgImRlYnVnZ2VyV2FzRW5hYmxlZCIsIHN0YXJ0VGVzdCk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fdG9nZ2xlRGVidWdnaW5nKGZhbHNlKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOworICAgICAgICBjYWxsYmFjaygpOwor
ICAgIH0KK30KKworSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCA9IGZ1bmN0aW9u
KCkKK3sKKyAgICB2YXIgc2NyaXB0c1BhbmVsID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRz
OworCisgICAgaWYgKCFzY3JpcHRzUGFuZWwuYnJlYWtwb2ludHNBY3RpdmF0ZWQpCisgICAgICAg
IHNjcmlwdHNQYW5lbC50b2dnbGVCcmVha3BvaW50c0J1dHRvbi5lbGVtZW50LmNsaWNrKCk7CisK
KyAgICBJbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbigpOworCisgICAgaWYgKCFzY3JpcHRz
UGFuZWwuX2RlYnVnZ2VyRW5hYmxlZCkKKyAgICAgICAgY29tcGxldGVUZXN0KCk7CisgICAgZWxz
ZSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAiZGVi
dWdnZXJXYXNEaXNhYmxlZCIsIGNvbXBsZXRlVGVzdCk7CisgICAgICAgIHNjcmlwdHNQYW5lbC5f
dG9nZ2xlRGVidWdnaW5nKGZhbHNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21wbGV0ZVRl
c3QoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkRlYnVnZ2VyIHdh
cyBkaXNhYmxlZC4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAg
ICB9Cit9OworCitJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZCA9IGZ1bmN0aW9uKGNhbGxi
YWNrKQoreworICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicGF1
c2VkU2NyaXB0IiwgY2FsbGJhY2spOworfTsKKworSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRp
b24gPSBmdW5jdGlvbigpCit7CisgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5w
YXVzZWQpCisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fdG9nZ2xlUGF1c2Uo
KTsKK307CisKK0luc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlw
dE5hbWUsIGNhbGxiYWNrKQoreworICAgIGlmIChJbnNwZWN0b3JUZXN0Ll9zY3JpcHRzQXJlUGFy
c2VkKFtzY3JpcHROYW1lXSkpCisgICAgICAgIEluc3BlY3RvclRlc3QuX3Nob3dTY3JpcHRTb3Vy
Y2Uoc2NyaXB0TmFtZSwgY2FsbGJhY2spOworICAgIGVsc2UKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5fYWRkU25pZmZlcihXZWJJbnNwZWN0b3IsICJwYXJzZWRTY3JpcHRTb3VyY2UiLCBJbnNwZWN0
b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UuYmluZChJbnNwZWN0b3JUZXN0LCBzY3JpcHROYW1lLCBj
YWxsYmFjaykpOworfTsKKworSW5zcGVjdG9yVGVzdC5fc2NyaXB0c0FyZVBhcnNlZCA9IGZ1bmN0
aW9uKHNjcmlwdHMpCit7CisgICAgdmFyIHNjcmlwdFNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzY3JpcHRzLWZpbGVzIik7CisgICAgdmFyIG9wdGlvbnMgPSBzY3JpcHRTZWxlY3Qu
b3B0aW9uczsKKworICAgIC8vIENoZWNrIHRoYXQgYWxsIHRoZSBleHBlY3RlZCBzY3JpcHRzIGFy
ZSBwcmVzZW50LgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKykg
eworICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGog
PCBvcHRpb25zLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICBpZiAob3B0aW9uc1tqXS50ZXh0
ID09PSBzY3JpcHRzW2ldKSB7CisgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICgh
Zm91bmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfTsKKworSW5zcGVjdG9yVGVzdC5fc2hvd1NjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlw
dE5hbWUsIGNhbGxiYWNrKQoreworICAgIHZhciBzY3JpcHRTZWxlY3QgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic2NyaXB0cy1maWxlcyIpOworICAgIHZhciBvcHRpb25zID0gc2NyaXB0U2Vs
ZWN0Lm9wdGlvbnM7CisgICAgdmFyIHNjcmlwdHNQYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5lbHMu
c2NyaXB0czsKKworICAgIC8vIFNlbGVjdCBwYWdlJ3Mgc2NyaXB0IGlmIGl0J3Mgbm90IGN1cnJl
bnQgb3B0aW9uLgorICAgIHZhciBzY3JpcHRSZXNvdXJjZTsKKyAgICBpZiAob3B0aW9uc1tzY3Jp
cHRTZWxlY3Quc2VsZWN0ZWRJbmRleF0udGV4dCA9PT0gc2NyaXB0TmFtZSkKKyAgICAgICAgc2Ny
aXB0UmVzb3VyY2UgPSBvcHRpb25zW3NjcmlwdFNlbGVjdC5zZWxlY3RlZEluZGV4XS5yZXByZXNl
bnRlZE9iamVjdDsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIHBhZ2VTY3JpcHRJbmRleCA9IC0x
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgIGlmIChvcHRpb25zW2ldLnRleHQgPT09IHNjcmlwdE5hbWUpIHsKKyAgICAgICAg
ICAgICAgICBwYWdlU2NyaXB0SW5kZXggPSBpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNjcmlwdFJlc291cmNlID0gb3B0aW9uc1tw
YWdlU2NyaXB0SW5kZXhdLnJlcHJlc2VudGVkT2JqZWN0OworICAgICAgICBzY3JpcHRzUGFuZWwu
X3Nob3dTY3JpcHRPclJlc291cmNlKHNjcmlwdFJlc291cmNlKTsKKyAgICB9CisKKyAgICB2YXIg
dmlldyA9IHNjcmlwdHNQYW5lbC52aXNpYmxlVmlldzsKKyAgICBjYWxsYmFjayA9IGNhbGxiYWNr
LmJpbmQobnVsbCwgdmlldyk7CisgICAgaWYgKCF2aWV3LnNvdXJjZUZyYW1lLl9sb2FkZWQpCisg
ICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIodmlldy5zb3VyY2VGcmFtZSwgInNldENv
bnRlbnQiLCBjYWxsYmFjayk7CisgICAgZWxzZQorICAgICAgICBjYWxsYmFjaygpOworfTsKKwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9y
LXRlc3QyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QyLmpzCmluZGV4IGQ0NTgwYWUuLjdmNWZmZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcworKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMKQEAgLTEsMTkgKzEsMjAgQEAK
LXZhciBpbml0aWFsaXplSW5zcGVjdG9yVGVzdCA9IChmdW5jdGlvbihjb21wbGV0ZVRlc3RDYWxs
SWQpIHsKK3ZhciBpbml0aWFsaXplX0luc3BlY3RvclRlc3QgPSAoZnVuY3Rpb24oKSB7CiAKIHZh
ciByZXN1bHRzID0gW107CiAKIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0ID0gZnVuY3Rpb24o
KQogewotICAgIEluc3BlY3RvckJhY2tlbmQuZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChj
b21wbGV0ZVRlc3RDYWxsSWQsIEpTT04uc3RyaW5naWZ5KHJlc3VsdHMpKTsKKyAgICBJbnNwZWN0
b3JCYWNrZW5kLmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3RDYWxsSWQsIEpTT04uc3RyaW5naWZ5KHJlc3VsdHMpKTsKIH07CiAKIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJbkNvbnNvbGUgPSBmdW5jdGlvbihjb2RlLCBjYWxsYmFjaykKIHsKICAg
ICBXZWJJbnNwZWN0b3IuY29uc29sZS52aXNpYmxlID0gdHJ1ZTsKICAgICBXZWJJbnNwZWN0b3Iu
Y29uc29sZS5wcm9tcHQudGV4dCA9IGNvZGU7Ci0gICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUucHJv
bXB0RWxlbWVudC5kaXNwYXRjaEV2ZW50KGNyZWF0ZUtleUV2ZW50KCJFbnRlciIpKTsKLQotICAg
IGFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSwgImFkZE1lc3Nh
Z2UiLAorICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJLZXlib2FyZEV2ZW50
Iik7CisgICAgZXZlbnQuaW5pdEtleWJvYXJkRXZlbnQoImtleWRvd24iLCB0cnVlLCB0cnVlLCBu
dWxsLCAiRW50ZXIiLCAiIik7CisgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUucHJvbXB0RWxlbWVu
dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdl
Ykluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUsICJhZGRNZXNzYWdlIiwKICAgICAgICAg
ZnVuY3Rpb24oY29tbWFuZFJlc3VsdCkgewogICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQogICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKGNvbW1hbmRSZXN1bHQudG9NZXNzYWdlRWxlbWVudCgpLnRl
eHRDb250ZW50KTsKQEAgLTI4LDQ5ICsyOSw0NiBAQCBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCA9
IGZ1bmN0aW9uKHRleHQpCiBJbnNwZWN0b3JUZXN0LnJlbG9hZFBhZ2UgPSBmdW5jdGlvbihjYWxs
YmFjaykKIHsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbG9hZFBhZ2UoKTsKLSAgICBhZGRTbmlm
ZmVyKFdlYkluc3BlY3RvciwgInJlc2V0IiwgY2FsbGJhY2spOworICAgIEluc3BlY3RvclRlc3Qu
X2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicmVzZXQiLCBjYWxsYmFjayk7CiB9OwogCi1JbnNw
ZWN0b3JUZXN0LmVuc3VyZURlYnVnZ2VyRW5hYmxlZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQorSW5z
cGVjdG9yVGVzdC5maW5kRE9NTm9kZSA9IGZ1bmN0aW9uKHJvb3QsIGZpbHRlciwgY2FsbGJhY2sp
CiB7Ci0gICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fZGVidWdnZXJFbmFibGVk
KQotICAgICAgICBjYWxsYmFjaygpOwotICAgIGVsc2UgewotICAgICAgICBhZGRTbmlmZmVyKFdl
Ykluc3BlY3RvciwgImRlYnVnZ2VyV2FzRW5hYmxlZCIsIGNhbGxiYWNrKTsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl90b2dnbGVEZWJ1Z2dpbmcoZmFsc2UpOwotICAgIH0K
LX07CisgICAgdmFyIGZvdW5kID0gZmFsc2U7CiAKLUluc3BlY3RvclRlc3QuZW5zdXJlRGVidWdn
ZXJEaXNhYmxlZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQotewotICAgIGlmICghV2ViSW5zcGVjdG9y
LnBhbmVscy5zY3JpcHRzLl9kZWJ1Z2dlckVuYWJsZWQpCi0gICAgICAgIGNhbGxiYWNrKCk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIGFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAiZGVidWdnZXJXYXNE
aXNhYmxlZCIsIGNhbGxiYWNrKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRz
Ll90b2dnbGVEZWJ1Z2dpbmcoZmFsc2UpOwotICAgIH0KLX07CisgICAgaWYgKHJvb3QpCisgICAg
ICAgIGZpbmRET01Ob2RlKHJvb3QpOworICAgIGVsc2UKKyAgICAgICAgd2FpdEZvckRvY3VtZW50
KCk7CiAKLUluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdE5h
bWUsIGNhbGxiYWNrKQotewotICAgIGZ1bmN0aW9uIHdhaXRGb3JBbGxTY3JpcHRzKCkKKyAgICBm
dW5jdGlvbiB3YWl0Rm9yRG9jdW1lbnQoKQogICAgIHsKLSAgICAgICAgaWYgKHNjcmlwdHNBcmVQ
YXJzZWQoW3NjcmlwdE5hbWVdKSkKLSAgICAgICAgICAgIHNob3dTY3JpcHRTb3VyY2Uoc2NyaXB0
TmFtZSwgY2FsbGJhY2spOworICAgICAgICByb290ID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRv
Y3VtZW50OworICAgICAgICBpZiAocm9vdCkKKyAgICAgICAgICAgIGZpbmRET01Ob2RlKHJvb3Qp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgInBh
cnNlZFNjcmlwdFNvdXJjZSIsIHdhaXRGb3JBbGxTY3JpcHRzKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCBzZXREb2N1bWVudCwgd2FpdEZvckRv
Y3VtZW50KTsKICAgICB9Ci0gICAgd2FpdEZvckFsbFNjcmlwdHMoKTsKLX07CiAKLWZ1bmN0aW9u
IGNyZWF0ZUtleUV2ZW50KGtleUlkZW50aWZpZXIpCi17Ci0gICAgdmFyIGV2dCA9IGRvY3VtZW50
LmNyZWF0ZUV2ZW50KCJLZXlib2FyZEV2ZW50Iik7Ci0gICAgZXZ0LmluaXRLZXlib2FyZEV2ZW50
KCJrZXlkb3duIiwgdHJ1ZSwgdHJ1ZSwgbnVsbCwga2V5SWRlbnRpZmllciwgIiIpOwotICAgIHJl
dHVybiBldnQ7Ci19CisgICAgZnVuY3Rpb24gZmluZERPTU5vZGUobm9kZSkKKyAgICB7CisgICAg
ICAgIGlmIChmaWx0ZXIobm9kZSkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG5vZGUpOworICAg
ICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5kb21BZ2VudC5nZXRDaGlsZE5vZGVzQXN5bmMobm9kZSwgcHJvY2Vzc0NoaWxkcmVu
KTsKKworICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQ2hpbGRyZW4oY2hpbGRyZW4pCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyAhZm91bmQgJiYgY2hpbGRyZW4gJiYgaSA8
IGNoaWxkcmVuLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGZpbmRET01Ob2RlKGNoaWxk
cmVuW2ldKTsKKyAgICAgICAgICAgIGlmICghZm91bmQgJiYgbm9kZSA9PT0gcm9vdCkKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKKyAgICAgICAgfQorICAgIH0KK307CiAKLWZ1bmN0
aW9uIGFkZFNuaWZmZXIocmVjZWl2ZXIsIG1ldGhvZE5hbWUsIG92ZXJyaWRlLCBvcHRfc3RpY2t5
KQorSW5zcGVjdG9yVGVzdC5fYWRkU25pZmZlciA9IGZ1bmN0aW9uKHJlY2VpdmVyLCBtZXRob2RO
YW1lLCBvdmVycmlkZSwgb3B0X3N0aWNreSkKIHsKICAgICB2YXIgb3JpZ2luYWwgPSByZWNlaXZl
clttZXRob2ROYW1lXTsKICAgICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAiZnVuY3Rpb24iKQpA
QCAtOTIsNTYgKzkwLDYgQEAgZnVuY3Rpb24gYWRkU25pZmZlcihyZWNlaXZlciwgbWV0aG9kTmFt
ZSwgb3ZlcnJpZGUsIG9wdF9zdGlja3kpCiAgICAgfTsKIH0KIAotZnVuY3Rpb24gc2NyaXB0c0Fy
ZVBhcnNlZChzY3JpcHRzKQotewotICAgIHZhciBzY3JpcHRTZWxlY3QgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic2NyaXB0cy1maWxlcyIpOwotICAgIHZhciBvcHRpb25zID0gc2NyaXB0U2Vs
ZWN0Lm9wdGlvbnM7Ci0KLSAgICAvLyBDaGVjayB0aGF0IGFsbCB0aGUgZXhwZWN0ZWQgc2NyaXB0
cyBhcmUgcHJlc2VudC4KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBp
KyspIHsKLSAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAodmFyIGogPSAw
OyBqIDwgb3B0aW9ucy5sZW5ndGg7IGorKykgewotICAgICAgICAgICAgaWYgKG9wdGlvbnNbal0u
dGV4dCA9PT0gc2NyaXB0c1tpXSkgewotICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBp
ZiAoIWZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKLX07Ci0KLWZ1bmN0aW9uIHNob3dTY3JpcHRTb3VyY2Uoc2NyaXB0TmFtZSwgY2FsbGJh
Y2spCi17Ci0gICAgdmFyIHNjcmlwdFNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
Y3JpcHRzLWZpbGVzIik7Ci0gICAgdmFyIG9wdGlvbnMgPSBzY3JpcHRTZWxlY3Qub3B0aW9uczsK
LSAgICB2YXIgc2NyaXB0c1BhbmVsID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzOwotCi0g
ICAgLy8gU2VsZWN0IHBhZ2UncyBzY3JpcHQgaWYgaXQncyBub3QgY3VycmVudCBvcHRpb24uCi0g
ICAgdmFyIHNjcmlwdFJlc291cmNlOwotICAgIGlmIChvcHRpb25zW3NjcmlwdFNlbGVjdC5zZWxl
Y3RlZEluZGV4XS50ZXh0ID09PSBzY3JpcHROYW1lKQotICAgICAgICBzY3JpcHRSZXNvdXJjZSA9
IG9wdGlvbnNbc2NyaXB0U2VsZWN0LnNlbGVjdGVkSW5kZXhdLnJlcHJlc2VudGVkT2JqZWN0Owot
ICAgIGVsc2UgewotICAgICAgICB2YXIgcGFnZVNjcmlwdEluZGV4ID0gLTE7Ci0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaWYg
KG9wdGlvbnNbaV0udGV4dCA9PT0gc2NyaXB0TmFtZSkgewotICAgICAgICAgICAgICAgIHBhZ2VT
Y3JpcHRJbmRleCA9IGk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgc2NyaXB0UmVzb3VyY2UgPSBvcHRpb25zW3BhZ2VTY3JpcHRJbmRl
eF0ucmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgIHNjcmlwdHNQYW5lbC5fc2hvd1NjcmlwdE9y
UmVzb3VyY2Uoc2NyaXB0UmVzb3VyY2UpOwotICAgIH0KLQotICAgIHZhciB2aWV3ID0gc2NyaXB0
c1BhbmVsLnZpc2libGVWaWV3OwotICAgIGNhbGxiYWNrID0gY2FsbGJhY2suYmluZChudWxsLCB2
aWV3KTsKLSAgICBpZiAoIXZpZXcuc291cmNlRnJhbWUuX2xvYWRlZCkKLSAgICAgICAgYWRkU25p
ZmZlcih2aWV3LnNvdXJjZUZyYW1lLCAic2V0Q29udGVudCIsIGNhbGxiYWNrKTsKLSAgICBlbHNl
Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci19OwotCiB9KTsKIAogdmFyIHJ1blRlc3RDYWxsSWQgPSAw
OwpAQCAtMTU1LDEzICsxMDMsMjggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKIAotICAgIHZhciB0b0V2YWx1YXRlID0KLSAgICAgICAgImlmICghd2luZG93
Lkluc3BlY3RvclRlc3QpIHsiICsKLSAgICAgICAgIiAgICB2YXIgSW5zcGVjdG9yVGVzdCA9IHt9
OyIgKwotICAgICAgICAiICAgICgiICsgaW5pdGlhbGl6ZUluc3BlY3RvclRlc3QgKyAiKSgiICsg
Y29tcGxldGVUZXN0Q2FsbElkICsgIik7IiArCi0gICAgICAgICIgICAgV2ViSW5zcGVjdG9yLnNo
b3dQYW5lbCgnZWxlbWVudHMnKTsiICsKLSAgICAgICAgIiAgICAoIiArIHRlc3QgKyAiKSgpOyIg
KwotICAgICAgICAifSI7CisgICAgZnVuY3Rpb24gcnVuVGVzdEluRnJvbnRlbmQoaW5pdGlhbGl6
YXRpb25GdW5jdGlvbnMsIHRlc3RGdW5jdGlvbiwgY29tcGxldGVUZXN0Q2FsbElkKQorICAgIHsK
KyAgICAgICAgaWYgKHdpbmRvdy5JbnNwZWN0b3JUZXN0KQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIEluc3BlY3RvclRlc3QgPSB7fTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3RDYWxsSWQgPSBjb21wbGV0ZVRlc3RDYWxsSWQ7CisKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBpbml0aWFsaXphdGlvbkZ1bmN0aW9ucy5sZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgIGluaXRpYWxpemF0aW9uRnVuY3Rpb25zW2ldKCk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9y
LnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKyAgICAgICAgdGVzdEZ1bmN0aW9uKCk7CisgICAgfQor
CisgICAgdmFyIGluaXRpYWxpemF0aW9uRnVuY3Rpb25zID0gW107CisgICAgZm9yICh2YXIgbmFt
ZSBpbiB3aW5kb3cpIHsKKyAgICAgICAgaWYgKG5hbWUuaW5kZXhPZigiaW5pdGlhbGl6ZV8iKSA9
PT0gMCAmJiB0eXBlb2Ygd2luZG93W25hbWVdID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAg
aW5pdGlhbGl6YXRpb25GdW5jdGlvbnMucHVzaCh3aW5kb3dbbmFtZV0udG9TdHJpbmcoKSk7Cisg
ICAgfQorICAgIHZhciBwYXJhbWV0ZXJzID0gWyJbIiArIGluaXRpYWxpemF0aW9uRnVuY3Rpb25z
ICsgIl0iLCB0ZXN0LCBjb21wbGV0ZVRlc3RDYWxsSWRdOworICAgIHZhciB0b0V2YWx1YXRlID0g
IigiICsgcnVuVGVzdEluRnJvbnRlbmQgKyAiKSgiICsgcGFyYW1ldGVycy5qb2luKCIsICIpICsg
Iik7IjsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKHJ1
blRlc3RDYWxsSWQsIHRvRXZhbHVhdGUpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZh
dGVkLW9uLXJlbG9hZC5odG1sCmluZGV4IDBmNjAyYjcuLjFjOGIwZmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1icmVha3BvaW50cy1ub3QtYWN0aXZhdGVkLW9u
LXJlbG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1icmVha3Bv
aW50cy1ub3QtYWN0aXZhdGVkLW9uLXJlbG9hZC5odG1sCkBAIC0xLDYgKzEsNyBAQAogPGh0bWw+
CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdDIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIHRlc3RG
dW5jdGlvbigpCkBAIC0xNCwxMSArMTUsMTAgQEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAgICAg
dGVzdE5hbWUgPSB0ZXN0TmFtZS5zdWJzdHJpbmcodGVzdE5hbWUubGFzdEluZGV4T2YoJy8nKSAr
IDEpOwogCiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAgIEluc3Bl
Y3RvclRlc3QuZW5zdXJlRGVidWdnZXJFbmFibGVkKGVuc3VyZURlYnVnZ2VyRW5hYmxlZENhbGxi
YWNrKTsKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0YXJ0RGVidWdnZXJU
ZXN0Q2FsbGJhY2spOwogCi0gICAgZnVuY3Rpb24gZW5zdXJlRGVidWdnZXJFbmFibGVkQ2FsbGJh
Y2soKQorICAgIGZ1bmN0aW9uIHN0YXJ0RGVidWdnZXJUZXN0Q2FsbGJhY2soKQogICAgIHsKLSAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkRlYnVnZ2VyIHdhcyBlbmFibGVkLiIpOwog
ICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UodGVzdE5hbWUsIHNob3dTY3Jp
cHRTb3VyY2VDYWxsYmFjayk7CiAgICAgfQogCkBAIC00MywxMyArNDMsNyBAQCB2YXIgdGVzdCA9
IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJCcmVha3Bv
aW50cyBhcmUgZGVhY3RpdmF0ZWQuIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJFcnJvcjogYnJlYWtwb2ludHMgYXJlIGFjdGl2YXRlZC4iKTsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5lbnN1cmVEZWJ1Z2dlckRpc2FibGVkKGVuc3VyZURlYnVn
Z2VyRGlzYWJsZWRDYWxsYmFjayk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZW5zdXJlRGVidWdn
ZXJEaXNhYmxlZENhbGxiYWNrKCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY29t
cGxldGVUZXN0KCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dlclRlc3Qo
KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJy
ZWFrcG9pbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtw
b2ludHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2
ZDUzM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFr
cG9pbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1Rlc3RzIERPTSBicmVha3BvaW50
cy4gQnVnIDQyODg2CisKK0RlYnVnZ2VyIHdhcyBlbmFibGVkLgorRm91bmQgZGl2IGVsZW1lbnQu
CitTZXQgRE9NIGJyZWFrcG9pbnQuCitQYXVzZWQgYXQgbGluZSAxMCBpbiBhcHBlbmRFbGVtZW50
CitEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJl
YWtwb2ludHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmYzNTE0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50
cy5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBhcHBlbmRFbGVtZW50KCkKK3sKKyAgICB2YXIgY2hp
bGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZDAiKS5hcHBlbmRDaGlsZChjaGlsZCk7Cit9CisKK3ZhciB0ZXN0ID0gZnVuY3Rp
b24oKQoreworICAgIEluc3BlY3RvclRlc3Quc3RhcnREZWJ1Z2dlclRlc3Qoc3RhcnREZWJ1Z2dl
clRlc3RDYWxsYmFjayk7CisKKyAgICBmdW5jdGlvbiBzdGFydERlYnVnZ2VyVGVzdENhbGxiYWNr
KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZmluZERPTU5vZGUobnVsbCwgZnVuY3Rp
b24obm9kZSkgeworICAgICAgICAgICAgcmV0dXJuIG5vZGUuZ2V0QXR0cmlidXRlKCJpZCIpID09
PSAiZDAiOworICAgICAgICB9LCBmaW5kRE9NTm9kZUNhbGxiYWNrKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBmaW5kRE9NTm9kZUNhbGxiYWNrKG5vZGUpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiRm91bmQgZGl2IGVsZW1lbnQuIik7CisgICAgICAgIEluc3BlY3Rv
ckJhY2tlbmQuc2V0RE9NQnJlYWtwb2ludChub2RlLmlkLCBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5ET01CcmVha3BvaW50VHlwZVN1YnRyZWVNb2RpZmllZCk7CisgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZXQgRE9NIGJyZWFrcG9pbnQuIik7CisgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoImFwcGVuZEVsZW1lbnQoKSIpOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZCh3YWl0VW50aWxQYXVzZWRDYWxsYmFjayk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gd2FpdFVudGlsUGF1c2VkQ2FsbGJhY2soY2FsbEZyYW1l
cykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYXVzZWQgYXQgbGlu
ZSAiICsgY2FsbEZyYW1lc1swXS5saW5lICsgIiBpbiAiICsgY2FsbEZyYW1lc1swXS5mdW5jdGlv
bk5hbWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7Cisg
ICAgfQorfTsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzxwPgorVGVzdHMgRE9NIGJyZWFrcG9pbnRzLiA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4ODYiPkJ1ZyA0Mjg4NjwvYT4KKzwvcD4KKzxkaXYg
aWQ9ImQwIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZAppbmRleCA5ZDhjOWY2Li4zYzUxZGNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAt
NTkyMSw2ICs1OTIxLDkgQEAgaW5zcGVjdG9yLwogaHR0cC90ZXN0cy9pbnNwZWN0b3IvCiBodHRw
L3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkLwogCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MzMzMgoraW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sCisKICMg
W0dUS10gcjY1NjgxIGJyb2tlIGEgY291cGxlIEdUSysgYTExeSB0ZXN0cwogIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQzMTYKIHBsYXRmb3JtL2d0ay9hY2Nlc3Np
YmlsaXR5L29iamVjdC1hdHRyaWJ1dGVzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5k
ZXggZWY4MzI1NC4uMDUyNjFhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTI4OSwz
ICsyODksNiBAQCBwZXJmLwogIyBNYWMtTGVvcGFyZCBhZnRlciByNjM4NjIuICBTa2lwcGluZyBm
b3Igbm93LgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MjEK
IGFuaW1hdGlvbnMvcGxheS1zdGF0ZS5odG1sCisKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQzMzMyCitpbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGYzMDIzZmMuLmI5YmYwZDcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZApAQCAtMTA1LDYgKzEwNSw5IEBAIGZhc3QvbG9hZGVyL3N1YmZyYW1lLW5hdmln
YXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQuaHRtbAogZmFzdC90ZXh0L2h5cGhlbmF0ZS1jaGFy
YWN0ZXIuaHRtbAogZmFzdC90ZXh0L2h5cGhlbnMuaHRtbAogCisjIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzMzMgoraW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5o
dG1sCisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKICMgICAgICAgUGFzc2luZyBIVFRQIHRlc3Rz
IC0gcmVxdWlyZSBjb25maXJtYXRpb24gb24gYm90LiAgICAgICAgICAgICAgICAgICAgICMKICMg
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ICMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggOWE1MzA3
My4uNWUwMDljNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTk2NSwzICs5NjUsNiBA
QCBwZXJmLwogIyBBcHBsaWNhdGlvbiBDYWNoZSBRdW90YXMKICMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNDU4CiBodHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1x
dW90YS5odG1sCisKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQz
MzMyCitpbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>