<?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>53838</bug_id>
          
          <creation_ts>2011-02-04 20:04:24 -0800</creation_ts>
          <short_desc>nrwt multiprocessing: move code from dump_render_tree_thread to single_test_runner</short_desc>
          <delta_ts>2011-02-08 16:40:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>53839</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>eric</cc>
    
    <cc>hayato</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>346030</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-04 20:04:24 -0800</bug_when>
    <thetext>nrwt multiprocessing: move code from dump_render_tree_thread to single_test_runner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346031</commentid>
    <comment_count>1</comment_count>
      <attachid>81340</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-04 20:06:05 -0800</bug_when>
    <thetext>Created attachment 81340
split out most of the code from drt into str</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346968</commentid>
    <comment_count>2</comment_count>
      <attachid>81340</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-07 17:22:18 -0800</bug_when>
    <thetext>Comment on attachment 81340
split out most of the code from drt into str

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:31
&gt; +&quot;&quot;&quot;This module implements a shared-memory, thread-based version of the worker.&quot;&quot;&quot;

Can you be more specific than &quot;the worker&quot;?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:202
&gt; -        tests_run_file = self._port._filesystem.open_text_file_for_writing(tests_run_filename, append=False)
&gt; +                                                         &quot;tests_run.txt&quot;)
&gt; +        tests_run_file = self._port._filesystem.open_text_file_for_writing(tests_run_filename, append=True)

Why did this change to append?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347003</commentid>
    <comment_count>3</comment_count>
      <attachid>81340</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-07 18:26:45 -0800</bug_when>
    <thetext>Comment on attachment 81340
split out most of the code from drt into str

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:31
&gt;&gt; +&quot;&quot;&quot;This module implements a shared-memory, thread-based version of the worker.&quot;&quot;&quot;
&gt; 
&gt; Can you be more specific than &quot;the worker&quot;?

Sure. I don&apos;t have a great descriptive name for &quot;thing that actually talks to DRT&quot;, but I&apos;ll put in something, even if it&apos;s &quot;thing that actually talks to DRT&quot;.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:202
&gt;&gt; +        tests_run_file = self._port._filesystem.open_text_file_for_writing(tests_run_filename, append=True)
&gt; 
&gt; Why did this change to append?

Good catch. Previously, each thread was opening the same file and hence stepping on each other. Now they should at least be writing to the same file. However, the whole idea of multiple threads writing to the same file unsettles me, especially with the switch to separate processes coming up, so I&apos;ll change this to append the worker number to the filename.

I&apos;m not sure that anyone actually looks at these files normally, so it may be best to just remove it, but I&apos;ll post that as a separate change. Generally speaking, I think NRWT logs more stuff in more places than it should and I&apos;d like to remove some things and rationalize others. But that&apos;s a thought for a different thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347129</commentid>
    <comment_count>4</comment_count>
      <attachid>81589</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-07 22:54:31 -0800</bug_when>
    <thetext>Created attachment 81589
update w/ tony&apos;s review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347462</commentid>
    <comment_count>5</comment_count>
      <attachid>81589</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-08 09:42:32 -0800</bug_when>
    <thetext>Comment on attachment 81589
update w/ tony&apos;s review feedback

(In reply to comment #3)
&gt; I&apos;m not sure that anyone actually looks at these files normally, so it may be best to just remove it, but I&apos;ll post that as a separate change. Generally speaking, I think NRWT logs more stuff in more places than it should and I&apos;d like to remove some things and rationalize others. But that&apos;s a thought for a different thread.

Is the file used for anything?  If not, I agree that we should remove it in a follow up patch.  Seems like it could be reconstructed from the output as the script is run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347803</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-08 16:40:57 -0800</bug_when>
    <thetext>Committed r77992: &lt;http://trac.webkit.org/changeset/77992&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81340</attachid>
            <date>2011-02-04 20:06:05 -0800</date>
            <delta_ts>2011-02-07 22:54:28 -0800</delta_ts>
            <desc>split out most of the code from drt into str</desc>
            <filename>bug-53838-20110204200604.patch</filename>
            <type>text/plain</type>
            <size>21947</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZjM5
NzNlZDZhZWQ3NzFlNTAzZjNkYzMxYTc0NDU5OTczMTBjNTZmLi5jNTI2NzdhM2Q5NmYxYzI1ZDZk
MWZmZDdjNmJkNDY5Y2M5ZGFkN2Y1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDItMDQgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IG1vdmUgYSBidW5jaCBvZiB0
ZXN0aW5nIGxvZ2ljIG91dCBvZgorICAgICAgICBkdW1wX3JlbmRlcl90cmVlX3RocmVhZCBhbmQg
aW50byBzaW5nbGVfdGVzdF9ydW5uZXIgc28gdGhhdCB3ZQorICAgICAgICB3aWxsIGJlIGFibGUg
dG8gcmV1c2UgaXQgaW4gdGhlIG5ldyBtdWx0aXByb2Nlc3Npbmcgd29ya2VyIGNsYXNzIGFzIHdl
bGwuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUz
ODM4CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHk6CisK
KyAgICAgICAgCiAyMDExLTAyLTAyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5k
ZXJfdHJlZV90aHJlYWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCBhNzgwZGFhNGVj
MTk3NWZmMzFkYjZlMGExMTNjMTNhODFiZTE2MTMzLi40MDY2ODcxOTI2MWRjMjYwMDRhMTBlOTZh
MjRmZjNlOGQxNWE5OTEzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3Jl
bmRlcl90cmVlX3RocmVhZC5weQpAQCAtMjgsMTcgKzI4LDkgQEAKICMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSIiIkEgVGhyZWFkIG9iamVjdCBmb3IgcnVubmluZyBEdW1wUmVuZGVy
VHJlZSBhbmQgcHJvY2Vzc2luZyBVUkxzIGZyb20gYQotc2hhcmVkIHF1ZXVlLgorIiIiVGhpcyBt
b2R1bGUgaW1wbGVtZW50cyBhIHNoYXJlZC1tZW1vcnksIHRocmVhZC1iYXNlZCB2ZXJzaW9uIG9m
IHRoZSB3b3JrZXIuIiIiCiAKLUVhY2ggdGhyZWFkIHJ1bnMgYSBzZXBhcmF0ZSBpbnN0YW5jZSBv
ZiB0aGUgRHVtcFJlbmRlclRyZWUgYmluYXJ5IGFuZCB2YWxpZGF0ZXMKLXRoZSBvdXRwdXQuICBX
aGVuIHRoZXJlIGFyZSBubyBtb3JlIFVSTHMgdG8gcHJvY2VzcyBpbiB0aGUgc2hhcmVkIHF1ZXVl
LCB0aGUKLXRocmVhZCBleGl0cy4KLSIiIgotCi1pbXBvcnQgY29weQogaW1wb3J0IGxvZ2dpbmcK
LWltcG9ydCBvcwogaW1wb3J0IFF1ZXVlCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCkBAIC00
Niw4MCArMzgsMTIgQEAgaW1wb3J0IHRocmVhZAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRp
bWUKIAotCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5cGVzIGltcG9ydCBpbWFn
ZV9kaWZmCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5cGVzIGltcG9ydCB0ZXN0
X3R5cGVfYmFzZQotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudGVzdF90eXBlcyBpbXBvcnQg
dGV4dF9kaWZmCi0KLWltcG9ydCBzaW5nbGVfdGVzdF9ydW5uZXIKLWltcG9ydCB0ZXN0X2ZhaWx1
cmVzCi1pbXBvcnQgdGVzdF9yZXN1bHRzCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlv
dXRfcGFja2FnZS5zaW5nbGVfdGVzdF9ydW5uZXIgaW1wb3J0IFNpbmdsZVRlc3RSdW5uZXIKIAog
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3Bh
Y2thZ2UuIgogICAgICAgICAgICAgICAgICAgICAgICAgICJkdW1wX3JlbmRlcl90cmVlX3RocmVh
ZCIpCiAKIAotZGVmIF9wYWRfdGltZW91dCh0aW1lb3V0KToKLSAgICAiIiJSZXR1cm5zIGEgc2Fm
ZSBtdWx0aXBsZSBvZiB0aGUgcGVyLXRlc3QgdGltZW91dCB2YWx1ZSB0byB1c2UKLSAgICB0byBk
ZXRlY3QgaHVuZyB0ZXN0IHRocmVhZHMuCi0KLSAgICAiIiIKLSAgICAjIFdoZW4gd2UncmUgcnVu
bmluZyBvbmUgdGVzdCBwZXIgRHVtcFJlbmRlclRyZWUgcHJvY2Vzcywgd2UgY2FuCi0gICAgIyBl
bmZvcmNlIGEgaGFyZCB0aW1lb3V0LiAgVGhlIER1bXBSZW5kZXJUcmVlIHdhdGNoZG9nIHVzZXMg
Mi41eAotICAgICMgdGhlIHRpbWVvdXQ7IHdlIHdhbnQgdG8gYmUgbGFyZ2VyIHRoYW4gdGhhdC4K
LSAgICByZXR1cm4gdGltZW91dCAqIDMKLQotCi1kZWYgX21pbGxpc2Vjb25kc190b19zZWNvbmRz
KG1zZWNzKToKLSAgICByZXR1cm4gZmxvYXQobXNlY3MpIC8gMTAwMC4wCi0KLQotZGVmIF9zaG91
bGRfZmV0Y2hfZXhwZWN0ZWRfY2hlY2tzdW0ob3B0aW9ucyk6Ci0gICAgcmV0dXJuIG9wdGlvbnMu
cGl4ZWxfdGVzdHMgYW5kIG5vdCAob3B0aW9ucy5uZXdfYmFzZWxpbmUgb3Igb3B0aW9ucy5yZXNl
dF9yZXN1bHRzKQotCi0KLWNsYXNzIFNpbmdsZVRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6
Ci0gICAgIiIiVGhyZWFkIHdyYXBwZXIgZm9yIHJ1bm5pbmcgYSBzaW5nbGUgdGVzdCBmaWxlLiIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMsIHdvcmtlcl9udW1iZXIs
IHdvcmtlcl9uYW1lLAotICAgICAgICAgICAgICAgICB0ZXN0X2lucHV0LCB0ZXN0X3R5cGVzKToK
LSAgICAgICAgIiIiCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcG9ydDogb2JqZWN0IGltcGxl
bWVudGluZyBwb3J0LXNwZWNpZmljIGhvb2tzCi0gICAgICAgICAgb3B0aW9uczogY29tbWFuZCBs
aW5lIGFyZ3VtZW50IG9iamVjdCBmcm9tIG9wdHBhcnNlCi0gICAgICAgICAgd29ya2VyX251bWJl
cjogd29ya2VyIG51bWJlciBmb3IgdGVzdHMKLSAgICAgICAgICB3b3JrZXJfbmFtZTogZm9yIGxv
Z2dpbmcKLSAgICAgICAgICB0ZXN0X2lucHV0OiBPYmplY3QgY29udGFpbmluZyB0aGUgdGVzdCBm
aWxlbmFtZSBhbmQgdGltZW91dAotICAgICAgICAgIHRlc3RfdHlwZXM6IEEgbGlzdCBvZiBUZXN0
VHlwZSBvYmplY3RzIHRvIHJ1biB0aGUgdGVzdCBvdXRwdXQKLSAgICAgICAgICAgICAgYWdhaW5z
dC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxm
KQotICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0
aW9ucwotICAgICAgICBzZWxmLl90ZXN0X2lucHV0ID0gdGVzdF9pbnB1dAotICAgICAgICBzZWxm
Ll90ZXN0X3R5cGVzID0gdGVzdF90eXBlcwotICAgICAgICBzZWxmLl9kcml2ZXIgPSBOb25lCi0g
ICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVtYmVyCi0gICAgICAgIHNlbGYu
X25hbWUgPSB3b3JrZXJfbmFtZQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgc2VsZi5f
Y292ZXJlZF9ydW4oKQotCi0gICAgZGVmIF9jb3ZlcmVkX3J1bihzZWxmKToKLSAgICAgICAgIyBG
SVhNRTogdGhpcyBpcyBhIHNlcGFyYXRlIHJvdXRpbmUgdG8gd29yayBhcm91bmQgYSBidWcKLSAg
ICAgICAgIyBpbiBjb3ZlcmFnZTogc2VlIGh0dHA6Ly9iaXRidWNrZXQub3JnL25lZC9jb3ZlcmFn
ZXB5L2lzc3VlLzg1LgotICAgICAgICBzZWxmLl9kcml2ZXIgPSBzZWxmLl9wb3J0LmNyZWF0ZV9k
cml2ZXIoc2VsZi5fd29ya2VyX251bWJlcikKLSAgICAgICAgc2VsZi5fZHJpdmVyLnN0YXJ0KCkK
LSAgICAgICAgc2VsZi5fdGVzdF9yZXN1bHQgPSBzaW5nbGVfdGVzdF9ydW5uZXIucnVuX3Npbmds
ZV90ZXN0KAotICAgICAgICAgICAgc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywgc2VsZi5fdGVz
dF9pbnB1dCwgc2VsZi5fZHJpdmVyLAotICAgICAgICAgICAgc2VsZi5fbmFtZSwgc2VsZi5fdGVz
dF90eXBlKQotICAgICAgICBzZWxmLl9kcml2ZXIuc3RvcCgpCi0KLSAgICBkZWYgZ2V0X3Rlc3Rf
cmVzdWx0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF9yZXN1bHQKLQotCiBjbGFz
cyBUZXN0U2hlbGxUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBvcnQsIG9wdGlvbnMsIHdvcmtlcl9udW1iZXIsIHdvcmtlcl9uYW1lLAogICAgICAgICAg
ICAgICAgICBmaWxlbmFtZV9saXN0X3F1ZXVlLCByZXN1bHRfcXVldWUpOgpAQCAtMTQ2LDggKzcw
LDkgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICBz
ZWxmLl9uYW1lID0gd29ya2VyX25hbWUKICAgICAgICAgc2VsZi5fZmlsZW5hbWVfbGlzdF9xdWV1
ZSA9IGZpbGVuYW1lX2xpc3RfcXVldWUKICAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gcmVz
dWx0X3F1ZXVlCisgICAgICAgIHNlbGYuX2N1cnJlbnRfZ3JvdXAgPSBOb25lCiAgICAgICAgIHNl
bGYuX2ZpbGVuYW1lX2xpc3QgPSBbXQotICAgICAgICBzZWxmLl9kcml2ZXIgPSBOb25lCisgICAg
ICAgIHNlbGYuX3NpbmdsZV90ZXN0X3J1bm5lciA9IE5vbmUKICAgICAgICAgc2VsZi5fdGVzdF9n
cm91cF90aW1pbmdfc3RhdHMgPSB7fQogICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdHMgPSBbXQog
ICAgICAgICBzZWxmLl9udW1fdGVzdHMgPSAwCkBAIC0xNTcsMTAgKzgyLDExIEBAIGNsYXNzIFRl
c3RTaGVsbFRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgc2VsZi5faHR0cF9sb2Nr
X3dhaXRfYmVnaW4gPSAwCiAgICAgICAgIHNlbGYuX2h0dHBfbG9ja193YWl0X2VuZCA9IDAKIAot
ICAgICAgICBzZWxmLl90ZXN0X3R5cGVzID0gW10KLSAgICAgICAgZm9yIGNscyBpbiBzZWxmLl9n
ZXRfdGVzdF90eXBlX2NsYXNzZXMoKToKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMuYXBw
ZW5kKGNscyhzZWxmLl9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpKQorICAgIGRlZiBjbGVhbnVwKHNl
bGYpOgorICAgICAgICBpZiBzZWxmLl9zaW5nbGVfdGVzdF9ydW5uZXI6CisgICAgICAgICAgICBz
ZWxmLl9zaW5nbGVfdGVzdF9ydW5uZXIuY2xlYW51cCgpCisgICAgICAgIGlmIHNlbGYuX2hhdmVf
aHR0cF9sb2NrOgorICAgICAgICAgICAgc2VsZi5fc3RvcF9zZXJ2ZXJzX3dpdGhfbG9jaygpCiAK
ICAgICAgICAgIyBDdXJyZW50IGdyb3VwIG9mIHRlc3RzIHdlJ3JlIHJ1bm5pbmcuCiAgICAgICAg
IHNlbGYuX2N1cnJlbnRfZ3JvdXAgPSBOb25lCkBAIC0xNjksMTUgKzk1LDkgQEAgY2xhc3MgVGVz
dFNoZWxsVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAjIFRpbWUgYXQgd2hpY2gg
d2Ugc3RhcnRlZCBydW5uaW5nIHRlc3RzIGZyb20gc2VsZi5fY3VycmVudF9ncm91cC4KICAgICAg
ICAgc2VsZi5fY3VycmVudF9ncm91cF9zdGFydF90aW1lID0gTm9uZQogCi0gICAgZGVmIF9nZXRf
dGVzdF90eXBlX2NsYXNzZXMoc2VsZik6Ci0gICAgICAgIGNsYXNzZXMgPSBbdGV4dF9kaWZmLlRl
c3RUZXh0RGlmZl0KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0czoKLSAgICAg
ICAgICAgIGNsYXNzZXMuYXBwZW5kKGltYWdlX2RpZmYuSW1hZ2VEaWZmKQotICAgICAgICByZXR1
cm4gY2xhc3NlcwotCiAgICAgZGVmIGNhbmNlbChzZWxmKToKICAgICAgICAgIiIiU2V0IGEgZmxh
ZyB0ZWxsaW5nIHRoaXMgdGhyZWFkIHRvIHF1aXQuIiIiCi0gICAgICAgIHNlbGYuX3N0b3Bfc2Vy
dmVyc193aXRoX2xvY2soKQorICAgICAgICBzZWxmLmNsZWFudXAoKQogICAgICAgICBzZWxmLl9j
YW5jZWxlZCA9IFRydWUKIAogICAgIGRlZiBjbGVhcl9uZXh0X3RpbWVvdXQoc2VsZik6CkBAIC0y
NjksMTggKzE4OSwyMyBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6
CiAKICAgICAgICAgSWYgdGVzdF9ydW5uZXIgaXMgbm90IE5vbmUsIHRoZW4gd2UgY2FsbCB0ZXN0
X3J1bm5lci5VcGRhdGVTdW1tYXJ5KCkKICAgICAgICAgd2l0aCB0aGUgcmVzdWx0cyBvZiBlYWNo
IHRlc3QuIiIiCisgICAgICAgIHNlbGYuX3NpbmdsZV90ZXN0X3J1bm5lciA9IFNpbmdsZVRlc3RS
dW5uZXIoc2VsZi5fb3B0aW9ucywgc2VsZi5fcG9ydCwKKyAgICAgICAgICAgIHNlbGYuX25hbWUs
IHNlbGYuX3dvcmtlcl9udW1iZXIpCisKICAgICAgICAgYmF0Y2hfc2l6ZSA9IHNlbGYuX29wdGlv
bnMuYmF0Y2hfc2l6ZQogICAgICAgICBiYXRjaF9jb3VudCA9IDAKIAogICAgICAgICAjIEFwcGVu
ZCB0ZXN0cyB3ZSdyZSBydW5uaW5nIHRvIHRoZSBleGlzdGluZyB0ZXN0c19ydW4udHh0IGZpbGUu
CiAgICAgICAgICMgVGhpcyBpcyBjcmVhdGVkIGluIHJ1bl93ZWJraXRfdGVzdHMucHk6X1ByZXBh
cmVMaXN0c0FuZFByaW50T3V0cHV0LgogICAgICAgICB0ZXN0c19ydW5fZmlsZW5hbWUgPSBzZWxm
Ll9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0c19ydW4udHh0
IikKLSAgICAgICAgdGVzdHNfcnVuX2ZpbGUgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLm9wZW5f
dGV4dF9maWxlX2Zvcl93cml0aW5nKHRlc3RzX3J1bl9maWxlbmFtZSwgYXBwZW5kPUZhbHNlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRlc3RzX3J1bi50eHQiKQorICAgICAgICB0ZXN0c19ydW5fZmlsZSA9IHNlbGYuX3BvcnQuX2Zp
bGVzeXN0ZW0ub3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcodGVzdHNfcnVuX2ZpbGVuYW1lLCBh
cHBlbmQ9VHJ1ZSkKKwogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgaWYgc2VsZi5f
Y2FuY2VsZWQ6CiAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnVGVzdGluZyBjYW5jZWxsZWQn
KQogICAgICAgICAgICAgICAgIHRlc3RzX3J1bl9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgICAg
ICBzZWxmLmNsZWFudXAoKQogICAgICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICAgICBp
ZiBsZW4oc2VsZi5fZmlsZW5hbWVfbGlzdCkgaXMgMDoKQEAgLTI5Myw4ICsyMTgsNyBAQCBjbGFz
cyBUZXN0U2hlbGxUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2N1cnJlbnRfZ3JvdXAsIHNlbGYuX2ZpbGVuYW1lX2xpc3QgPSBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9maWxlbmFtZV9saXN0X3F1ZXVlLmdldF9ub3dhaXQoKQogICAg
ICAgICAgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKLSAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fc3RvcF9zZXJ2ZXJzX3dpdGhfbG9jaygpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2tp
bGxfZHVtcF9yZW5kZXJfdHJlZSgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xlYW51cCgp
CiAgICAgICAgICAgICAgICAgICAgIHRlc3RzX3J1bl9maWxlLmNsb3NlKCkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuCiAKQEAgLTMxMSwxMTkgKzIzNSwzNSBAQCBjbGFzcyBUZXN0U2hlbGxU
aHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgICAgICAjIFdlIGhhdmUgYSB1cmwsIHJ1
biB0ZXN0cy4KICAgICAgICAgICAgIGJhdGNoX2NvdW50ICs9IDEKICAgICAgICAgICAgIHNlbGYu
X251bV90ZXN0cyArPSAxCi0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJ1bl9zaW5nbHk6
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fcnVuX3Rlc3RfaW5fYW5vdGhlcl90aHJl
YWQodGVzdF9pbnB1dCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVzdWx0
ID0gc2VsZi5fcnVuX3Rlc3RfaW5fdGhpc190aHJlYWQodGVzdF9pbnB1dCkKIAotICAgICAgICAg
ICAgZmlsZW5hbWUgPSB0ZXN0X2lucHV0LmZpbGVuYW1lCi0gICAgICAgICAgICB0ZXN0c19ydW5f
ZmlsZS53cml0ZShmaWxlbmFtZSArICJcbiIpCisgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5f
c2luZ2xlX3Rlc3RfcnVubmVyLnRpbWVvdXQodGVzdF9pbnB1dCkKKyAgICAgICAgICAgIHJlc3Vs
dCA9IHNlbGYuX3NpbmdsZV90ZXN0X3J1bm5lci5ydW5fdGVzdCh0ZXN0X2lucHV0LCB0aW1lb3V0
KQorCisgICAgICAgICAgICB0ZXN0c19ydW5fZmlsZS53cml0ZSh0ZXN0X2lucHV0LmZpbGVuYW1l
ICsgIlxuIikKKyAgICAgICAgICAgIHRlc3RfbmFtZSA9IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVz
dF9maWxlbmFtZSh0ZXN0X2lucHV0LmZpbGVuYW1lKQogICAgICAgICAgICAgaWYgcmVzdWx0LmZh
aWx1cmVzOgogICAgICAgICAgICAgICAgICMgQ2hlY2sgYW5kIGtpbGwgRHVtcFJlbmRlclRyZWUg
aWYgd2UgbmVlZCB0by4KLSAgICAgICAgICAgICAgICBpZiBsZW4oWzEgZm9yIGYgaW4gcmVzdWx0
LmZhaWx1cmVzCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBmLnNob3VsZF9raWxsX2R1bXBf
cmVuZGVyX3RyZWUoKV0pOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9raWxsX2R1bXBfcmVu
ZGVyX3RyZWUoKQorICAgICAgICAgICAgICAgIGlmIGFueShbZi5zaG91bGRfa2lsbF9kdW1wX3Jl
bmRlcl90cmVlKCkgZm9yIGYgaW4gcmVzdWx0LmZhaWx1cmVzXSk6CisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3NpbmdsZV90ZXN0X3J1bm5lci5raWxsX2R1bXBfcmVuZGVyX3RyZWUoKQogICAg
ICAgICAgICAgICAgICAgICAjIFJlc2V0IHRoZSBiYXRjaCBjb3VudCBzaW5jZSB0aGUgc2hlbGwg
anVzdCBib3VuY2VkLgogICAgICAgICAgICAgICAgICAgICBiYXRjaF9jb3VudCA9IDAKKwogICAg
ICAgICAgICAgICAgICMgUHJpbnQgdGhlIGVycm9yIG1lc3NhZ2UocykuCi0gICAgICAgICAgICAg
ICAgZXJyb3Jfc3RyID0gJ1xuJy5qb2luKFsnICAnICsgZi5tZXNzYWdlKCkgZm9yCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIGluIHJlc3VsdC5mYWlsdXJlc10pCi0g
ICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgZmFpbGVkOlxuJXMiICUgKHNlbGYuZ2V0
TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90
ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9y
X3N0cikpCisgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgZmFpbGVkOiIgJSAoc2Vs
Zi5fbmFtZSwgdGVzdF9uYW1lKSkKKyAgICAgICAgICAgICAgICBmb3IgZiBpbiByZXN1bHQuZmFp
bHVyZXM6CisgICAgICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzICAlcyIgJSAoc2VsZi5f
bmFtZSwgZi5tZXNzYWdlKCkpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBf
bG9nLmRlYnVnKCIlcyAlcyBwYXNzZWQiICUgKHNlbGYuZ2V0TmFtZSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1l
KSkpCisgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgcGFzc2VkIiAlIChzZWxmLl9u
YW1lLCB0ZXN0X25hbWUpKQogICAgICAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlLnB1dChyZXN1
bHQuZHVtcHMoKSkKIAogICAgICAgICAgICAgaWYgYmF0Y2hfc2l6ZSA+IDAgYW5kIGJhdGNoX2Nv
dW50ID49IGJhdGNoX3NpemU6CiAgICAgICAgICAgICAgICAgIyBCb3VuY2UgdGhlIHNoZWxsIGFu
ZCByZXNldCBjb3VudC4KLSAgICAgICAgICAgICAgICBzZWxmLl9raWxsX2R1bXBfcmVuZGVyX3Ry
ZWUoKQorICAgICAgICAgICAgICAgIHNlbGYuX3NpbmdsZV90ZXN0X3J1bm5lci5raWxsX2R1bXBf
cmVuZGVyX3RyZWUoKQogICAgICAgICAgICAgICAgIGJhdGNoX2NvdW50ID0gMAogCiAgICAgICAg
ICAgICBpZiB0ZXN0X3J1bm5lcjoKICAgICAgICAgICAgICAgICB0ZXN0X3J1bm5lci51cGRhdGVf
c3VtbWFyeShyZXN1bHRfc3VtbWFyeSkKIAotICAgIGRlZiBfcnVuX3Rlc3RfaW5fYW5vdGhlcl90
aHJlYWQoc2VsZiwgdGVzdF9pbnB1dCk6Ci0gICAgICAgICIiIlJ1biBhIHRlc3QgaW4gYSBzZXBh
cmF0ZSB0aHJlYWQsIGVuZm9yY2luZyBhIGhhcmQgdGltZSBsaW1pdC4KLQotICAgICAgICBTaW5j
ZSB3ZSBjYW4gb25seSBkZXRlY3QgdGhlIHRlcm1pbmF0aW9uIG9mIGEgdGhyZWFkLCBub3QgYW55
IGludGVybmFsCi0gICAgICAgIHN0YXRlIG9yIHByb2dyZXNzLCB3ZSBjYW4gb25seSBydW4gcGVy
LXRlc3QgdGltZW91dHMgd2hlbiBydW5uaW5nIHRlc3QKLSAgICAgICAgZmlsZXMgc2luZ2x5Lgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGVzdF9pbnB1dDogT2JqZWN0IGNvbnRhaW5pbmcg
dGhlIHRlc3QgZmlsZW5hbWUgYW5kIHRpbWVvdXQKLQotICAgICAgICBSZXR1cm5zOgotICAgICAg
ICAgIEEgVGVzdFJlc3VsdAotICAgICAgICAiIiIKLSAgICAgICAgd29ya2VyID0gU2luZ2xlVGVz
dFRocmVhZChzZWxmLl9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd29y
a2VyX251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9uYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5wdXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF90eXBlcykKLQotICAgICAgICB3
b3JrZXIuc3RhcnQoKQotCi0gICAgICAgIHRocmVhZF90aW1lb3V0ID0gX21pbGxpc2Vjb25kc190
b19zZWNvbmRzKAotICAgICAgICAgICAgX3BhZF90aW1lb3V0KGludCh0ZXN0X2lucHV0LnRpbWVv
dXQpKSkKLSAgICAgICAgdGhyZWFkLl9uZXh0X3RpbWVvdXQgPSB0aW1lLnRpbWUoKSArIHRocmVh
ZF90aW1lb3V0Ci0gICAgICAgIHdvcmtlci5qb2luKHRocmVhZF90aW1lb3V0KQotICAgICAgICBp
ZiB3b3JrZXIuaXNBbGl2ZSgpOgotICAgICAgICAgICAgIyBJZiBqb2luKCkgcmV0dXJuZWQgd2l0
aCB0aGUgdGhyZWFkIHN0aWxsIHJ1bm5pbmcsIHRoZQotICAgICAgICAgICAgIyBEdW1wUmVuZGVy
VHJlZSBpcyBjb21wbGV0ZWx5IGh1bmcgYW5kIHRoZXJlJ3Mgbm90aGluZwotICAgICAgICAgICAg
IyBtb3JlIHdlIGNhbiBkbyB3aXRoIGl0LiAgV2UgaGF2ZSB0byBraWxsIGFsbCB0aGUKLSAgICAg
ICAgICAgICMgRHVtcFJlbmRlclRyZWVzIHRvIGZyZWUgaXQgdXAuIElmIHdlJ3JlIHJ1bm5pbmcg
bW9yZSB0aGFuCi0gICAgICAgICAgICAjIG9uZSBEdW1wUmVuZGVyVHJlZSB0aHJlYWQsIHdlJ2xs
IGVuZCB1cCBraWxsaW5nIHRoZSBvdGhlcgotICAgICAgICAgICAgIyBEdW1wUmVuZGVyVHJlZXMg
dG9vLCBpbnRyb2R1Y2luZyBzcHVyaW91cyBjcmFzaGVzLiBXZSBhY2NlcHQKLSAgICAgICAgICAg
ICMgdGhhdCB0cmFkZW9mZiBpbiBvcmRlciB0byBhdm9pZCBsb3NpbmcgdGhlIHJlc3Qgb2YgdGhp
cwotICAgICAgICAgICAgIyB0aHJlYWQncyByZXN1bHRzLgotICAgICAgICAgICAgX2xvZy5lcnJv
cignVGVzdCB0aHJlYWQgaHVuZzoga2lsbGluZyBhbGwgRHVtcFJlbmRlclRyZWVzJykKLSAgICAg
ICAgICAgIGlmIHdvcmtlci5fZHJpdmVyOgotICAgICAgICAgICAgICAgIHdvcmtlci5fZHJpdmVy
LnN0b3AoKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdCA9IHdvcmtlci5nZXRf
dGVzdF9yZXN1bHQoKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IsIGU6Ci0gICAgICAg
ICAgICAjIFRoaXMgZ2V0cyByYWlzZWQgaWYgdGhlIHdvcmtlciB0aHJlYWQgaGFzIGFscmVhZHkg
ZXhpdGVkLgotICAgICAgICAgICAgX2xvZy5lcnJvcignQ2Fubm90IGdldCByZXN1bHRzIG9mIHRl
c3Q6ICVzJyAlIHRlc3RfaW5wdXQuZmlsZW5hbWUpCi0gICAgICAgICAgICAjIEZJWE1FOiBTZWVt
cyB3ZSB3YW50IGEgdW5pcXVlIGZhaWx1cmUgdHlwZSBoZXJlLgotICAgICAgICAgICAgcmVzdWx0
ID0gdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQodGVzdF9pbnB1dC5maWxlbmFtZSkKLQotICAgICAg
ICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgX3J1bl90ZXN0X2luX3RoaXNfdGhyZWFkKHNlbGYs
IHRlc3RfaW5wdXQpOgotICAgICAgICAiIiJSdW4gYSBzaW5nbGUgdGVzdCBmaWxlIHVzaW5nIGEg
c2hhcmVkIER1bXBSZW5kZXJUcmVlIHByb2Nlc3MuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAg
ICB0ZXN0X2lucHV0OiBPYmplY3QgY29udGFpbmluZyB0aGUgdGVzdCBmaWxlbmFtZSwgdXJpIGFu
ZCB0aW1lb3V0Ci0KLSAgICAgICAgUmV0dXJuczogYSBUZXN0UmVzdWx0IG9iamVjdC4KLSAgICAg
ICAgIiIiCi0gICAgICAgIHNlbGYuX2Vuc3VyZV9kdW1wX3JlbmRlcl90cmVlX2lzX3J1bm5pbmco
KQotICAgICAgICB0aHJlYWRfdGltZW91dCA9IF9taWxsaXNlY29uZHNfdG9fc2Vjb25kcygKLSAg
ICAgICAgICAgICBfcGFkX3RpbWVvdXQoaW50KHRlc3RfaW5wdXQudGltZW91dCkpKQotICAgICAg
ICBzZWxmLl9uZXh0X3RpbWVvdXQgPSB0aW1lLnRpbWUoKSArIHRocmVhZF90aW1lb3V0Ci0gICAg
ICAgIHRlc3RfcmVzdWx0ID0gc2luZ2xlX3Rlc3RfcnVubmVyLnJ1bl9zaW5nbGVfdGVzdCgKLSAg
ICAgICAgICAgIHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsIHRlc3RfaW5wdXQsIHNlbGYuX2Ry
aXZlciwgc2VsZi5fbmFtZSwKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMpCi0gICAgICAg
IHNlbGYuX3Rlc3RfcmVzdWx0cy5hcHBlbmQodGVzdF9yZXN1bHQpCi0gICAgICAgIHJldHVybiB0
ZXN0X3Jlc3VsdAotCi0gICAgZGVmIF9lbnN1cmVfZHVtcF9yZW5kZXJfdHJlZV9pc19ydW5uaW5n
KHNlbGYpOgotICAgICAgICAiIiJTdGFydCB0aGUgc2hhcmVkIER1bXBSZW5kZXJUcmVlLCBpZiBp
dCdzIG5vdCBydW5uaW5nLgotCi0gICAgICAgIFRoaXMgaXMgbm90IGZvciB1c2Ugd2hlbiBydW5u
aW5nIHRlc3RzIHNpbmdseSwgc2luY2UgdGhvc2UgZWFjaCBzdGFydAotICAgICAgICBhIHNlcGFy
YXRlIER1bXBSZW5kZXJUcmVlIGluIHRoZWlyIG93biB0aHJlYWQuCi0KLSAgICAgICAgIiIiCi0g
ICAgICAgICMgcG9sbCgpIGlzIG5vdCB0aHJlYWRzYWZlIGFuZCBjYW4gdGhyb3cgT1NFcnJvciBk
dWUgdG86Ci0gICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE3MzE3MTcKLSAg
ICAgICAgaWYgbm90IHNlbGYuX2RyaXZlciBvciBzZWxmLl9kcml2ZXIucG9sbCgpIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVy
KHNlbGYuX3dvcmtlcl9udW1iZXIpCi0gICAgICAgICAgICBzZWxmLl9kcml2ZXIuc3RhcnQoKQot
CiAgICAgZGVmIF9zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jayhzZWxmKToKICAgICAgICAgIiIiQWNx
dWlyZSBodHRwIGxvY2sgYW5kIHN0YXJ0IHRoZSBzZXJ2ZXJzLiIiIgogICAgICAgICBzZWxmLl9o
dHRwX2xvY2tfd2FpdF9iZWdpbiA9IHRpbWUudGltZSgpCkBAIC00NDYsOSArMjg2LDMgQEAgY2xh
c3MgVGVzdFNoZWxsVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAgICAgX2xvZy5k
ZWJ1ZygnUmVsZWFzZSBodHRwIGxvY2sgLi4uJykKICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVs
ZWFzZV9odHRwX2xvY2soKQogICAgICAgICAgICAgc2VsZi5faGF2ZV9odHRwX2xvY2sgPSBGYWxz
ZQotCi0gICAgZGVmIF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoc2VsZik6Ci0gICAgICAgICIiIktp
bGwgdGhlIER1bXBSZW5kZXJUcmVlIHByb2Nlc3MgaWYgaXQncyBydW5uaW5nLiIiIgotICAgICAg
ICBpZiBzZWxmLl9kcml2ZXI6Ci0gICAgICAgICAgICBzZWxmLl9kcml2ZXIuc3RvcCgpCi0gICAg
ICAgICAgICBzZWxmLl9kcml2ZXIgPSBOb25lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9zaW5n
bGVfdGVzdF9ydW5uZXIucHkKaW5kZXggZDg0NjNkOWE0ZTgzMmFkY2U5YTU3ZTIzMDA1ZDhhYWE4
NjQyYzJjZC4uZWRjZjZmZTg3M2M3MDkxZWY0ZDBiYmNiZTgxMzI3NzkyNDk2ZmVmMyAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
c2luZ2xlX3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5lci5weQpAQCAtMjgsMTAgKzI4
LDE0IEBACiAKIAogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcworaW1wb3J0IHRocmVhZGluZwog
aW1wb3J0IHRpbWUKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYmFz
ZQorCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5cGVzIGltcG9ydCB0ZXh0X2Rp
ZmYKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnRlc3RfdHlwZXMgaW1wb3J0IGltYWdlX2Rp
ZmYKKwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRl
c3RfZmFpbHVyZXMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLnRl
c3RfcmVzdWx0cyBpbXBvcnQgVGVzdFJlc3VsdAogCkBAIC0zOSwxMiArNDMsNiBAQCBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS50ZXN0X3Jlc3VsdHMgaW1wb3J0IFRl
c3RSZXN1bHQKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCi1kZWYgcnVu
X3NpbmdsZV90ZXN0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5wdXQsIGRyaXZlciwgd29ya2VyX25h
bWUsIHRlc3RfdHlwZXMpOgotICAgICMgRklYTUU6IFB1bGwgdGhpcyBpbnRvIFRlc3RTaGVsbFRo
cmVhZC5fcnVuKCkuCi0gICAgcnVubmVyID0gU2luZ2xlVGVzdFJ1bm5lcihvcHRpb25zLCBwb3J0
LCBkcml2ZXIsIHRlc3RfaW5wdXQsIHdvcmtlcl9uYW1lLCB0ZXN0X3R5cGVzKQotICAgIHJldHVy
biBydW5uZXIucnVuKCkKLQotCiBjbGFzcyBFeHBlY3RlZERyaXZlck91dHB1dDoKICAgICAiIiJH
cm91cHMgaW5mb3JtYXRpb24gYWJvdXQgYW4gZXhwZWN0ZWQgZHJpdmVyIG91dHB1dC4iIiIKICAg
ICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCwgaW1hZ2UsIGltYWdlX2hhc2gpOgpAQCAtNTUsMTUg
KzUzLDEwOCBAQCBjbGFzcyBFeHBlY3RlZERyaXZlck91dHB1dDoKIAogY2xhc3MgU2luZ2xlVGVz
dFJ1bm5lcjoKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCBwb3J0LCBkcml2ZXIs
IHRlc3RfaW5wdXQsIHdvcmtlcl9uYW1lLCB0ZXN0X3R5cGVzKToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgb3B0aW9ucywgcG9ydCwgd29ya2VyX25hbWUsIHdvcmtlcl9udW1iZXIpOgogICAgICAg
ICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAotICAg
ICAgICBzZWxmLl9kcml2ZXIgPSBkcml2ZXIKLSAgICAgICAgc2VsZi5fZmlsZW5hbWUgPSB0ZXN0
X2lucHV0LmZpbGVuYW1lCi0gICAgICAgIHNlbGYuX3RpbWVvdXQgPSB0ZXN0X2lucHV0LnRpbWVv
dXQKICAgICAgICAgc2VsZi5fd29ya2VyX25hbWUgPSB3b3JrZXJfbmFtZQotICAgICAgICBzZWxm
Ll90ZXN0X3R5cGVzID0gdGVzdF90eXBlcwotICAgICAgICBzZWxmLl90ZXN0bmFtZSA9IHBvcnQu
cmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0X2lucHV0LmZpbGVuYW1lKQorICAgICAgICBzZWxm
Ll93b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgorICAgICAgICBzZWxmLl9kcml2ZXIgPSBO
b25lCisgICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMgPSBbXQorICAgICAgICBmb3IgY2xzIGluIHNl
bGYuX2dldF90ZXN0X3R5cGVfY2xhc3NlcygpOgorICAgICAgICAgICAgc2VsZi5fdGVzdF90eXBl
cy5hcHBlbmQoY2xzKHNlbGYuX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkpCisKKyAgICBkZWYgY2xl
YW51cChzZWxmKToKKyAgICAgICAgc2VsZi5raWxsX2R1bXBfcmVuZGVyX3RyZWUoKQorCisgICAg
ZGVmIF9nZXRfdGVzdF90eXBlX2NsYXNzZXMoc2VsZik6CisgICAgICAgIGNsYXNzZXMgPSBbdGV4
dF9kaWZmLlRlc3RUZXh0RGlmZl0KKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0
czoKKyAgICAgICAgICAgIGNsYXNzZXMuYXBwZW5kKGltYWdlX2RpZmYuSW1hZ2VEaWZmKQorICAg
ICAgICByZXR1cm4gY2xhc3NlcworCisgICAgZGVmIHRpbWVvdXQoc2VsZiwgdGVzdF9pbnB1dCk6
CisgICAgICAgICMgV2UgY2FsY3VsYXRlIGhvdyBsb25nIHdlIGV4cGVjdCB0aGUgdGVzdCB0byB0
YWtlLgorICAgICAgICAjCisgICAgICAgICMgVGhlIER1bXBSZW5kZXJUcmVlIHdhdGNoZG9nIHVz
ZXMgMi41eCB0aGUgdGltZW91dDsgd2Ugd2FudCB0byBiZQorICAgICAgICAjIGxhcmdlciB0aGFu
IHRoYXQuIFdlIGFsc28gYWRkIGEgbGl0dGxlIG1vcmUgcGFkZGluZyBpZiB3ZSdyZQorICAgICAg
ICAjIHJ1bm5pbmcgdGVzdHMgaW4gYSBzZXBhcmF0ZSB0aHJlYWQuCisgICAgICAgICMKKyAgICAg
ICAgIyBOb3RlIHRoYXQgd2UgbmVlZCB0byBjb252ZXJ0IHRoZSB0ZXN0IHRpbWVvdXQgZnJvbSBh
CisgICAgICAgICMgc3RyaW5nIHZhbHVlIGluIG1pbGxpc2Vjb25kcyB0byBhIGZsb2F0IGZvciBQ
eXRob24uCisgICAgICAgIGRyaXZlcl90aW1lb3V0X3NlYyA9IDMuMCAqIGZsb2F0KHRlc3RfaW5w
dXQudGltZW91dCkgLyAxMDAwLjAKKyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMucnVuX3Np
bmdseToKKyAgICAgICAgICAgIHJldHVybiBkcml2ZXJfdGltZW91dF9zZWMKKworICAgICAgICB0
aHJlYWRfcGFkZGluZ19zZWMgPSAxLjAKKyAgICAgICAgdGhyZWFkX3RpbWVvdXRfc2VjID0gZHJp
dmVyX3RpbWVvdXRfc2VjICsgdGhyZWFkX3BhZGRpbmdfc2VjCisgICAgICAgIHJldHVybiB0aHJl
YWRfdGltZW91dF9zZWMKKworICAgIGRlZiBydW5fdGVzdChzZWxmLCB0ZXN0X2lucHV0LCB0aW1l
b3V0KToKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ydW5fc2luZ2x5OgorICAgICAgICAgICAg
cmV0dXJuIHNlbGYuX3J1bl90ZXN0X2luX2Fub3RoZXJfdGhyZWFkKHRlc3RfaW5wdXQsIHRpbWVv
dXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RfaW5f
dGhpc190aHJlYWQodGVzdF9pbnB1dCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVm
IF9ydW5fdGVzdF9pbl9hbm90aGVyX3RocmVhZChzZWxmLCB0ZXN0X2lucHV0LCB0aHJlYWRfdGlt
ZW91dF9zZWMpOgorICAgICAgICAiIiJSdW4gYSB0ZXN0IGluIGEgc2VwYXJhdGUgdGhyZWFkLCBl
bmZvcmNpbmcgYSBoYXJkIHRpbWUgbGltaXQuCisKKyAgICAgICAgU2luY2Ugd2UgY2FuIG9ubHkg
ZGV0ZWN0IHRoZSB0ZXJtaW5hdGlvbiBvZiBhIHRocmVhZCwgbm90IGFueSBpbnRlcm5hbAorICAg
ICAgICBzdGF0ZSBvciBwcm9ncmVzcywgd2UgY2FuIG9ubHkgcnVuIHBlci10ZXN0IHRpbWVvdXRz
IHdoZW4gcnVubmluZyB0ZXN0CisgICAgICAgIGZpbGVzIHNpbmdseS4KKworICAgICAgICBBcmdz
OgorICAgICAgICAgIHRlc3RfaW5wdXQ6IE9iamVjdCBjb250YWluaW5nIHRoZSB0ZXN0IGZpbGVu
YW1lIGFuZCB0aW1lb3V0CisgICAgICAgICAgdGhyZWFkX3RpbWVvdXRfc2VjOiB0aW1lIHRvIHdh
aXQgYmVmb3JlIGtpbGxpbmcgdGhlIGRyaXZlciBwcm9jZXNzLgorICAgICAgICBSZXR1cm5zOgor
ICAgICAgICAgIEEgVGVzdFJlc3VsdAorICAgICAgICAiIiIKKyAgICAgICAgd29ya2VyID0gc2Vs
ZgorICAgICAgICByZXN1bHQgPSBOb25lCisKKyAgICAgICAgZHJpdmVyID0gd29ya2VyLl9wb3J0
LmNyZWF0ZV9kcml2ZXIod29ya2VyLl93b3JrZXJfbnVtYmVyKQorICAgICAgICBkcml2ZXIuc3Rh
cnQoKQorCisgICAgICAgIGNsYXNzIFNpbmdsZVRlc3RUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6
CisgICAgICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHdv
cmtlci5ydW4odGVzdF9pbnB1dCwgZHJpdmVyKQorCisgICAgICAgIHRocmVhZCA9IFNpbmdsZVRl
c3RUaHJlYWQoKQorICAgICAgICB0aHJlYWQuc3RhcnQoKQorICAgICAgICB0aHJlYWQuam9pbih0
aHJlYWRfdGltZW91dF9zZWMpCisgICAgICAgIGlmIHRocmVhZC5pc0FsaXZlKCk6CisgICAgICAg
ICAgICAjIElmIGpvaW4oKSByZXR1cm5lZCB3aXRoIHRoZSB0aHJlYWQgc3RpbGwgcnVubmluZywg
dGhlCisgICAgICAgICAgICAjIER1bXBSZW5kZXJUcmVlIGlzIGNvbXBsZXRlbHkgaHVuZyBhbmQg
dGhlcmUncyBub3RoaW5nCisgICAgICAgICAgICAjIG1vcmUgd2UgY2FuIGRvIHdpdGggaXQuICBX
ZSBoYXZlIHRvIGtpbGwgYWxsIHRoZQorICAgICAgICAgICAgIyBEdW1wUmVuZGVyVHJlZXMgdG8g
ZnJlZSBpdCB1cC4gSWYgd2UncmUgcnVubmluZyBtb3JlIHRoYW4KKyAgICAgICAgICAgICMgb25l
IER1bXBSZW5kZXJUcmVlIHRocmVhZCwgd2UnbGwgZW5kIHVwIGtpbGxpbmcgdGhlIG90aGVyCisg
ICAgICAgICAgICAjIER1bXBSZW5kZXJUcmVlcyB0b28sIGludHJvZHVjaW5nIHNwdXJpb3VzIGNy
YXNoZXMuIFdlIGFjY2VwdAorICAgICAgICAgICAgIyB0aGF0IHRyYWRlb2ZmIGluIG9yZGVyIHRv
IGF2b2lkIGxvc2luZyB0aGUgcmVzdCBvZiB0aGlzCisgICAgICAgICAgICAjIHRocmVhZCdzIHJl
c3VsdHMuCisgICAgICAgICAgICBfbG9nLmVycm9yKCdUZXN0IHRocmVhZCBodW5nOiBraWxsaW5n
IGFsbCBEdW1wUmVuZGVyVHJlZXMnKQorCisgICAgICAgIGRyaXZlci5zdG9wKCkKKworICAgICAg
ICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdCh0ZXN0X2lu
cHV0LmZpbGVuYW1lLCBmYWlsdXJlcz1bXSwKKyAgICAgICAgICAgICAgICB0ZXN0X3J1bl90aW1l
PTAsIHRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcz0wLCB0aW1lX2Zvcl9kaWZmcz17fSkKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9ydW5fdGVzdF9pbl90aGlzX3RocmVhZChzZWxm
LCB0ZXN0X2lucHV0KToKKyAgICAgICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QgZmlsZSB1c2luZyBh
IHNoYXJlZCBEdW1wUmVuZGVyVHJlZSBwcm9jZXNzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAg
ICAgdGVzdF9pbnB1dDogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUsIHVyaSBh
bmQgdGltZW91dAorCisgICAgICAgIFJldHVybnM6IGEgVGVzdFJlc3VsdCBvYmplY3QuCisgICAg
ICAgICIiIgorICAgICAgICAjIHBvbGwoKSBpcyBub3QgdGhyZWFkc2FmZSBhbmQgY2FuIHRocm93
IE9TRXJyb3IgZHVlIHRvOgorICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUx
NzMxNzE3CisgICAgICAgIGlmIG5vdCBzZWxmLl9kcml2ZXIgb3Igc2VsZi5fZHJpdmVyLnBvbGwo
KSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2RyaXZlciA9IHNlbGYuX3BvcnQuY3Jl
YXRlX2RyaXZlcihzZWxmLl93b3JrZXJfbnVtYmVyKQorICAgICAgICAgICAgc2VsZi5fZHJpdmVy
LnN0YXJ0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bihzZWxmLl9kcml2ZXIsIHRlc3RfaW5w
dXQpCiAKICAgICBkZWYgX2V4cGVjdGVkX2RyaXZlcl9vdXRwdXQoc2VsZik6CiAgICAgICAgIHJl
dHVybiBFeHBlY3RlZERyaXZlck91dHB1dChzZWxmLl9wb3J0LmV4cGVjdGVkX3RleHQoc2VsZi5f
ZmlsZW5hbWUpLApAQCAtNzQsNyArMTY1LDExIEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAg
ICAgICAgIHJldHVybiAoc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cyBhbmQKICAgICAgICAgICAg
ICAgICBub3QgKHNlbGYuX29wdGlvbnMubmV3X2Jhc2VsaW5lIG9yIHNlbGYuX29wdGlvbnMucmVz
ZXRfcmVzdWx0cykpCiAKLSAgICBkZWYgX2RyaXZlcl9pbnB1dChzZWxmKToKKyAgICBkZWYgX2Ry
aXZlcl9pbnB1dChzZWxmLCB0ZXN0X2lucHV0KToKKyAgICAgICAgc2VsZi5fZmlsZW5hbWUgPSB0
ZXN0X2lucHV0LmZpbGVuYW1lCisgICAgICAgIHNlbGYuX3RpbWVvdXQgPSB0ZXN0X2lucHV0LnRp
bWVvdXQKKyAgICAgICAgc2VsZi5fdGVzdG5hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3Rf
ZmlsZW5hbWUodGVzdF9pbnB1dC5maWxlbmFtZSkKKwogICAgICAgICAjIFRoZSBpbWFnZSBoYXNo
IGlzIHVzZWQgdG8gYXZvaWQgZG9pbmcgYW4gaW1hZ2UgZHVtcCBpZiB0aGUKICAgICAgICAgIyBj
aGVja3N1bXMgbWF0Y2gsIHNvIGl0IHNob3VsZCBiZSBzZXQgdG8gYSBibGFuayB2YWx1ZSBpZiB3
ZQogICAgICAgICAjIGFyZSBnZW5lcmF0aW5nIGEgbmV3IGJhc2VsaW5lLiAgKE90aGVyd2lzZSwg
YW4gaW1hZ2UgZnJvbSBhCkBAIC04NCw4ICsxNzksOCBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVy
OgogICAgICAgICAgICAgaW1hZ2VfaGFzaCA9IHNlbGYuX3BvcnQuZXhwZWN0ZWRfY2hlY2tzdW0o
c2VsZi5fZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiBiYXNlLkRyaXZlcklucHV0KHNlbGYuX2Zp
bGVuYW1lLCBzZWxmLl90aW1lb3V0LCBpbWFnZV9oYXNoKQogCi0gICAgZGVmIHJ1bihzZWxmKToK
LSAgICAgICAgZHJpdmVyX291dHB1dCA9IHNlbGYuX2RyaXZlci5ydW5fdGVzdChzZWxmLl9kcml2
ZXJfaW5wdXQoKSkKKyAgICBkZWYgX3J1bihzZWxmLCBkcml2ZXIsIHRlc3RfaW5wdXQpOgorICAg
ICAgICBkcml2ZXJfb3V0cHV0ID0gc2VsZi5fZHJpdmVyLnJ1bl90ZXN0KHNlbGYuX2RyaXZlcl9p
bnB1dCh0ZXN0X2lucHV0KSkKICAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2Nlc3Nfb3V0cHV0KGRy
aXZlcl9vdXRwdXQpCiAKICAgICBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHNlbGYsIGRyaXZlcl9vdXRw
dXQpOgpAQCAtMTM2LDMgKzIzMSw5IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAg
IHRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcyA9IHRpbWUudGltZSgpIC0gc3RhcnRfZGlmZl90aW1l
CiAgICAgICAgIHJldHVybiBUZXN0UmVzdWx0KHNlbGYuX2ZpbGVuYW1lLCBmYWlsdXJlcywgZHJp
dmVyX291dHB1dC50ZXN0X3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3Rp
bWVfZm9yX2FsbF9kaWZmcywgdGltZV9mb3JfZGlmZnMpCisKKyAgICBkZWYga2lsbF9kdW1wX3Jl
bmRlcl90cmVlKHNlbGYpOgorICAgICAgICAiIiJLaWxsIHRoZSBEdW1wUmVuZGVyVHJlZSBwcm9j
ZXNzIGlmIGl0J3MgcnVubmluZy4iIiIKKyAgICAgICAgaWYgc2VsZi5fZHJpdmVyOgorICAgICAg
ICAgICAgc2VsZi5fZHJpdmVyLnN0b3AoKQorICAgICAgICAgICAgc2VsZi5fZHJpdmVyID0gTm9u
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81589</attachid>
            <date>2011-02-07 22:54:31 -0800</date>
            <delta_ts>2011-02-08 09:42:32 -0800</delta_ts>
            <desc>update w/ tony&apos;s review feedback</desc>
            <filename>bug-53838-20110207225430.patch</filename>
            <type>text/plain</type>
            <size>23416</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNDll
ZThkMDU2NzIxNWM2ODJiNTYyMWIwN2ViNzBiZTc2Y2MwMGZhLi5lNjZmZDFiYmIxZmE0ZWY2NjQ5
YTc1MTM0YzE0ZTQzYzY2NDc2NGM3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjAgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0czogbW92ZSBhIGJ1
bmNoIG9mIHRlc3RpbmcgbG9naWMgb3V0IG9mCisgICAgICAgIGR1bXBfcmVuZGVyX3RyZWVfdGhy
ZWFkIGFuZCBpbnRvIHNpbmdsZV90ZXN0X3J1bm5lciBzbyB0aGF0IHdlCisgICAgICAgIHdpbGwg
YmUgYWJsZSB0byByZXVzZSBpdCBpbiB0aGUgbmV3IG11bHRpcHJvY2Vzc2luZyB3b3JrZXIgY2xh
c3MgYXMgd2VsbC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTM4MzgKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1bm5l
ci5weToKKworICAgICAgICAKKzIwMTEtMDItMDQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAg
ICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IHJlbW92ZSBubyBsb25nZXIgbmVlZGVkIFdhdGNoYWJs
ZVRocmVhZAogICAgICAgICBjbGFzcy4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9k
dW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQppbmRleCBhNzgwZGFhNGVjMTk3NWZmMzFkYjZlMGEx
MTNjMTNhODFiZTE2MTMzLi43MDRjYzExYWY2YTQ2YjcxNTRjMzM4Y2EzYzYxOWZlZWRlOTA5ZmU2
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVh
ZC5weQpAQCAtMjgsMTcgKzI4LDExIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
Ci0iIiJBIFRocmVhZCBvYmplY3QgZm9yIHJ1bm5pbmcgRHVtcFJlbmRlclRyZWUgYW5kIHByb2Nl
c3NpbmcgVVJMcyBmcm9tIGEKLXNoYXJlZCBxdWV1ZS4KKyIiIlRoaXMgbW9kdWxlIGltcGxlbWVu
dHMgYSBzaGFyZWQtbWVtb3J5LCB0aHJlYWQtYmFzZWQgdmVyc2lvbiBvZiB0aGUgd29ya2VyCit0
YXNrIGluIG5ldy1ydW4td2Via2l0LXRlc3RzOiBpdCByZWNlaXZlcyBhIGxpc3Qgb2YgdGVzdHMg
ZnJvbSBUZXN0U2hlbGxUaHJlYWQKK2FuZCBwYXNzZXMgdGhlbSBvbmUgYXQgYSB0aW1lIHRvIFNp
bmdsZVRlc3RSdW5uZXIgdG8gZXhlY3V0ZS4iIiIKIAotRWFjaCB0aHJlYWQgcnVucyBhIHNlcGFy
YXRlIGluc3RhbmNlIG9mIHRoZSBEdW1wUmVuZGVyVHJlZSBiaW5hcnkgYW5kIHZhbGlkYXRlcwot
dGhlIG91dHB1dC4gIFdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgVVJMcyB0byBwcm9jZXNzIGluIHRo
ZSBzaGFyZWQgcXVldWUsIHRoZQotdGhyZWFkIGV4aXRzLgotIiIiCi0KLWltcG9ydCBjb3B5CiBp
bXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCiBpbXBvcnQgUXVldWUKIGltcG9ydCBzaWduYWwKIGlt
cG9ydCBzeXMKQEAgLTQ2LDgwICs0MCwxMiBAQCBpbXBvcnQgdGhyZWFkCiBpbXBvcnQgdGhyZWFk
aW5nCiBpbXBvcnQgdGltZQogCi0KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnRlc3RfdHlw
ZXMgaW1wb3J0IGltYWdlX2RpZmYKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnRlc3RfdHlw
ZXMgaW1wb3J0IHRlc3RfdHlwZV9iYXNlCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0
X3R5cGVzIGltcG9ydCB0ZXh0X2RpZmYKLQotaW1wb3J0IHNpbmdsZV90ZXN0X3J1bm5lcgotaW1w
b3J0IHRlc3RfZmFpbHVyZXMKLWltcG9ydCB0ZXN0X3Jlc3VsdHMKK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLnNpbmdsZV90ZXN0X3J1bm5lciBpbXBvcnQgU2luZ2xl
VGVzdFJ1bm5lcgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90
ZXN0cy5sYXlvdXRfcGFja2FnZS4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgImR1bXBfcmVu
ZGVyX3RyZWVfdGhyZWFkIikKIAogCi1kZWYgX3BhZF90aW1lb3V0KHRpbWVvdXQpOgotICAgICIi
IlJldHVybnMgYSBzYWZlIG11bHRpcGxlIG9mIHRoZSBwZXItdGVzdCB0aW1lb3V0IHZhbHVlIHRv
IHVzZQotICAgIHRvIGRldGVjdCBodW5nIHRlc3QgdGhyZWFkcy4KLQotICAgICIiIgotICAgICMg
V2hlbiB3ZSdyZSBydW5uaW5nIG9uZSB0ZXN0IHBlciBEdW1wUmVuZGVyVHJlZSBwcm9jZXNzLCB3
ZSBjYW4KLSAgICAjIGVuZm9yY2UgYSBoYXJkIHRpbWVvdXQuICBUaGUgRHVtcFJlbmRlclRyZWUg
d2F0Y2hkb2cgdXNlcyAyLjV4Ci0gICAgIyB0aGUgdGltZW91dDsgd2Ugd2FudCB0byBiZSBsYXJn
ZXIgdGhhbiB0aGF0LgotICAgIHJldHVybiB0aW1lb3V0ICogMwotCi0KLWRlZiBfbWlsbGlzZWNv
bmRzX3RvX3NlY29uZHMobXNlY3MpOgotICAgIHJldHVybiBmbG9hdChtc2VjcykgLyAxMDAwLjAK
LQotCi1kZWYgX3Nob3VsZF9mZXRjaF9leHBlY3RlZF9jaGVja3N1bShvcHRpb25zKToKLSAgICBy
ZXR1cm4gb3B0aW9ucy5waXhlbF90ZXN0cyBhbmQgbm90IChvcHRpb25zLm5ld19iYXNlbGluZSBv
ciBvcHRpb25zLnJlc2V0X3Jlc3VsdHMpCi0KLQotY2xhc3MgU2luZ2xlVGVzdFRocmVhZCh0aHJl
YWRpbmcuVGhyZWFkKToKLSAgICAiIiJUaHJlYWQgd3JhcHBlciBmb3IgcnVubmluZyBhIHNpbmds
ZSB0ZXN0IGZpbGUuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywg
d29ya2VyX251bWJlciwgd29ya2VyX25hbWUsCi0gICAgICAgICAgICAgICAgIHRlc3RfaW5wdXQs
IHRlc3RfdHlwZXMpOgotICAgICAgICAiIiIKLSAgICAgICAgQXJnczoKLSAgICAgICAgICBwb3J0
OiBvYmplY3QgaW1wbGVtZW50aW5nIHBvcnQtc3BlY2lmaWMgaG9va3MKLSAgICAgICAgICBvcHRp
b25zOiBjb21tYW5kIGxpbmUgYXJndW1lbnQgb2JqZWN0IGZyb20gb3B0cGFyc2UKLSAgICAgICAg
ICB3b3JrZXJfbnVtYmVyOiB3b3JrZXIgbnVtYmVyIGZvciB0ZXN0cwotICAgICAgICAgIHdvcmtl
cl9uYW1lOiBmb3IgbG9nZ2luZwotICAgICAgICAgIHRlc3RfaW5wdXQ6IE9iamVjdCBjb250YWlu
aW5nIHRoZSB0ZXN0IGZpbGVuYW1lIGFuZCB0aW1lb3V0Ci0gICAgICAgICAgdGVzdF90eXBlczog
QSBsaXN0IG9mIFRlc3RUeXBlIG9iamVjdHMgdG8gcnVuIHRoZSB0ZXN0IG91dHB1dAotICAgICAg
ICAgICAgICBhZ2FpbnN0LgotICAgICAgICAiIiIKLQotICAgICAgICB0aHJlYWRpbmcuVGhyZWFk
Ll9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0Ci0gICAgICAgIHNlbGYu
X29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3Rlc3RfaW5wdXQgPSB0ZXN0X2lucHV0
Ci0gICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMgPSB0ZXN0X3R5cGVzCi0gICAgICAgIHNlbGYuX2Ry
aXZlciA9IE5vbmUKLSAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIK
LSAgICAgICAgc2VsZi5fbmFtZSA9IHdvcmtlcl9uYW1lCi0KLSAgICBkZWYgcnVuKHNlbGYpOgot
ICAgICAgICBzZWxmLl9jb3ZlcmVkX3J1bigpCi0KLSAgICBkZWYgX2NvdmVyZWRfcnVuKHNlbGYp
OgotICAgICAgICAjIEZJWE1FOiB0aGlzIGlzIGEgc2VwYXJhdGUgcm91dGluZSB0byB3b3JrIGFy
b3VuZCBhIGJ1ZwotICAgICAgICAjIGluIGNvdmVyYWdlOiBzZWUgaHR0cDovL2JpdGJ1Y2tldC5v
cmcvbmVkL2NvdmVyYWdlcHkvaXNzdWUvODUuCi0gICAgICAgIHNlbGYuX2RyaXZlciA9IHNlbGYu
X3BvcnQuY3JlYXRlX2RyaXZlcihzZWxmLl93b3JrZXJfbnVtYmVyKQotICAgICAgICBzZWxmLl9k
cml2ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdCA9IHNpbmdsZV90ZXN0X3J1
bm5lci5ydW5fc2luZ2xlX3Rlc3QoCi0gICAgICAgICAgICBzZWxmLl9wb3J0LCBzZWxmLl9vcHRp
b25zLCBzZWxmLl90ZXN0X2lucHV0LCBzZWxmLl9kcml2ZXIsCi0gICAgICAgICAgICBzZWxmLl9u
YW1lLCBzZWxmLl90ZXN0X3R5cGUpCi0gICAgICAgIHNlbGYuX2RyaXZlci5zdG9wKCkKLQotICAg
IGRlZiBnZXRfdGVzdF9yZXN1bHQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl90ZXN0X3Jl
c3VsdAotCi0KIGNsYXNzIFRlc3RTaGVsbFRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgd29ya2VyX251bWJlciwgd29ya2VyX25h
bWUsCiAgICAgICAgICAgICAgICAgIGZpbGVuYW1lX2xpc3RfcXVldWUsIHJlc3VsdF9xdWV1ZSk6
CkBAIC0xNDYsOCArNzIsOSBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQodGhyZWFkaW5nLlRocmVh
ZCk6CiAgICAgICAgIHNlbGYuX25hbWUgPSB3b3JrZXJfbmFtZQogICAgICAgICBzZWxmLl9maWxl
bmFtZV9saXN0X3F1ZXVlID0gZmlsZW5hbWVfbGlzdF9xdWV1ZQogICAgICAgICBzZWxmLl9yZXN1
bHRfcXVldWUgPSByZXN1bHRfcXVldWUKKyAgICAgICAgc2VsZi5fY3VycmVudF9ncm91cCA9IE5v
bmUKICAgICAgICAgc2VsZi5fZmlsZW5hbWVfbGlzdCA9IFtdCi0gICAgICAgIHNlbGYuX2RyaXZl
ciA9IE5vbmUKKyAgICAgICAgc2VsZi5fc2luZ2xlX3Rlc3RfcnVubmVyID0gTm9uZQogICAgICAg
ICBzZWxmLl90ZXN0X2dyb3VwX3RpbWluZ19zdGF0cyA9IHt9CiAgICAgICAgIHNlbGYuX3Rlc3Rf
cmVzdWx0cyA9IFtdCiAgICAgICAgIHNlbGYuX251bV90ZXN0cyA9IDAKQEAgLTE1NywxMCArODQs
MTEgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICBz
ZWxmLl9odHRwX2xvY2tfd2FpdF9iZWdpbiA9IDAKICAgICAgICAgc2VsZi5faHR0cF9sb2NrX3dh
aXRfZW5kID0gMAogCi0gICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMgPSBbXQotICAgICAgICBmb3Ig
Y2xzIGluIHNlbGYuX2dldF90ZXN0X3R5cGVfY2xhc3NlcygpOgotICAgICAgICAgICAgc2VsZi5f
dGVzdF90eXBlcy5hcHBlbmQoY2xzKHNlbGYuX3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkpCisgICAg
ZGVmIGNsZWFudXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3NpbmdsZV90ZXN0X3J1bm5lcjoK
KyAgICAgICAgICAgIHNlbGYuX3NpbmdsZV90ZXN0X3J1bm5lci5jbGVhbnVwKCkKKyAgICAgICAg
aWYgc2VsZi5faGF2ZV9odHRwX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9zdG9wX3NlcnZlcnNf
d2l0aF9sb2NrKCkKIAogICAgICAgICAjIEN1cnJlbnQgZ3JvdXAgb2YgdGVzdHMgd2UncmUgcnVu
bmluZy4KICAgICAgICAgc2VsZi5fY3VycmVudF9ncm91cCA9IE5vbmUKQEAgLTE2OSwxNSArOTcs
OSBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgICMg
VGltZSBhdCB3aGljaCB3ZSBzdGFydGVkIHJ1bm5pbmcgdGVzdHMgZnJvbSBzZWxmLl9jdXJyZW50
X2dyb3VwLgogICAgICAgICBzZWxmLl9jdXJyZW50X2dyb3VwX3N0YXJ0X3RpbWUgPSBOb25lCiAK
LSAgICBkZWYgX2dldF90ZXN0X3R5cGVfY2xhc3NlcyhzZWxmKToKLSAgICAgICAgY2xhc3NlcyA9
IFt0ZXh0X2RpZmYuVGVzdFRleHREaWZmXQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVs
X3Rlc3RzOgotICAgICAgICAgICAgY2xhc3Nlcy5hcHBlbmQoaW1hZ2VfZGlmZi5JbWFnZURpZmYp
Ci0gICAgICAgIHJldHVybiBjbGFzc2VzCi0KICAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAgICAg
ICAiIiJTZXQgYSBmbGFnIHRlbGxpbmcgdGhpcyB0aHJlYWQgdG8gcXVpdC4iIiIKLSAgICAgICAg
c2VsZi5fc3RvcF9zZXJ2ZXJzX3dpdGhfbG9jaygpCisgICAgICAgIHNlbGYuY2xlYW51cCgpCiAg
ICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQogCiAgICAgZGVmIGNsZWFyX25leHRfdGltZW91
dChzZWxmKToKQEAgLTI2OSwxOCArMTkxLDIzIEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZCh0aHJl
YWRpbmcuVGhyZWFkKToKIAogICAgICAgICBJZiB0ZXN0X3J1bm5lciBpcyBub3QgTm9uZSwgdGhl
biB3ZSBjYWxsIHRlc3RfcnVubmVyLlVwZGF0ZVN1bW1hcnkoKQogICAgICAgICB3aXRoIHRoZSBy
ZXN1bHRzIG9mIGVhY2ggdGVzdC4iIiIKKyAgICAgICAgc2VsZi5fc2luZ2xlX3Rlc3RfcnVubmVy
ID0gU2luZ2xlVGVzdFJ1bm5lcihzZWxmLl9vcHRpb25zLCBzZWxmLl9wb3J0LAorICAgICAgICAg
ICAgc2VsZi5fbmFtZSwgc2VsZi5fd29ya2VyX251bWJlcikKKwogICAgICAgICBiYXRjaF9zaXpl
ID0gc2VsZi5fb3B0aW9ucy5iYXRjaF9zaXplCiAgICAgICAgIGJhdGNoX2NvdW50ID0gMAogCiAg
ICAgICAgICMgQXBwZW5kIHRlc3RzIHdlJ3JlIHJ1bm5pbmcgdG8gdGhlIGV4aXN0aW5nIHRlc3Rz
X3J1bi50eHQgZmlsZS4KICAgICAgICAgIyBUaGlzIGlzIGNyZWF0ZWQgaW4gcnVuX3dlYmtpdF90
ZXN0cy5weTpfUHJlcGFyZUxpc3RzQW5kUHJpbnRPdXRwdXQuCiAgICAgICAgIHRlc3RzX3J1bl9m
aWxlbmFtZSA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9vcHRpb25zLnJlc3Vs
dHNfZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRlc3RzX3J1bi50eHQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInRlc3RzX3J1biVkLnR4dCIgJSBzZWxmLl93b3JrZXJfbnVtYmVy
KQogICAgICAgICB0ZXN0c19ydW5fZmlsZSA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ub3Blbl90
ZXh0X2ZpbGVfZm9yX3dyaXRpbmcodGVzdHNfcnVuX2ZpbGVuYW1lLCBhcHBlbmQ9RmFsc2UpCisK
ICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIGlmIHNlbGYuX2NhbmNlbGVkOgogICAg
ICAgICAgICAgICAgIF9sb2cuZGVidWcoJ1Rlc3RpbmcgY2FuY2VsbGVkJykKICAgICAgICAgICAg
ICAgICB0ZXN0c19ydW5fZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5jbGVhbnVw
KCkKICAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAgICAgaWYgbGVuKHNlbGYuX2Zp
bGVuYW1lX2xpc3QpIGlzIDA6CkBAIC0yOTMsOCArMjIwLDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhy
ZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9jdXJyZW50
X2dyb3VwLCBzZWxmLl9maWxlbmFtZV9saXN0ID0gXAogICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fZmlsZW5hbWVfbGlzdF9xdWV1ZS5nZXRfbm93YWl0KCkKICAgICAgICAgICAgICAgICBl
eGNlcHQgUXVldWUuRW1wdHk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0b3Bfc2VydmVy
c193aXRoX2xvY2soKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9raWxsX2R1bXBfcmVuZGVy
X3RyZWUoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmNsZWFudXAoKQogICAgICAgICAgICAg
ICAgICAgICB0ZXN0c19ydW5fZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bgogCkBAIC0zMTEsMTE5ICsyMzcsMzUgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKHRocmVhZGlu
Zy5UaHJlYWQpOgogICAgICAgICAgICAgIyBXZSBoYXZlIGEgdXJsLCBydW4gdGVzdHMuCiAgICAg
ICAgICAgICBiYXRjaF9jb3VudCArPSAxCiAgICAgICAgICAgICBzZWxmLl9udW1fdGVzdHMgKz0g
MQotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ydW5fc2luZ2x5OgotICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0X2luX2Fub3RoZXJfdGhyZWFkKHRlc3RfaW5wdXQp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX3J1bl90
ZXN0X2luX3RoaXNfdGhyZWFkKHRlc3RfaW5wdXQpCiAKLSAgICAgICAgICAgIGZpbGVuYW1lID0g
dGVzdF9pbnB1dC5maWxlbmFtZQotICAgICAgICAgICAgdGVzdHNfcnVuX2ZpbGUud3JpdGUoZmls
ZW5hbWUgKyAiXG4iKQorICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuX3NpbmdsZV90ZXN0X3J1
bm5lci50aW1lb3V0KHRlc3RfaW5wdXQpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9zaW5n
bGVfdGVzdF9ydW5uZXIucnVuX3Rlc3QodGVzdF9pbnB1dCwgdGltZW91dCkKKworICAgICAgICAg
ICAgdGVzdHNfcnVuX2ZpbGUud3JpdGUodGVzdF9pbnB1dC5maWxlbmFtZSArICJcbiIpCisgICAg
ICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVz
dF9pbnB1dC5maWxlbmFtZSkKICAgICAgICAgICAgIGlmIHJlc3VsdC5mYWlsdXJlczoKICAgICAg
ICAgICAgICAgICAjIENoZWNrIGFuZCBraWxsIER1bXBSZW5kZXJUcmVlIGlmIHdlIG5lZWQgdG8u
Ci0gICAgICAgICAgICAgICAgaWYgbGVuKFsxIGZvciBmIGluIHJlc3VsdC5mYWlsdXJlcwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgZi5zaG91bGRfa2lsbF9kdW1wX3JlbmRlcl90cmVlKCld
KToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fa2lsbF9kdW1wX3JlbmRlcl90cmVlKCkKKyAg
ICAgICAgICAgICAgICBpZiBhbnkoW2Yuc2hvdWxkX2tpbGxfZHVtcF9yZW5kZXJfdHJlZSgpIGZv
ciBmIGluIHJlc3VsdC5mYWlsdXJlc10pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaW5n
bGVfdGVzdF9ydW5uZXIua2lsbF9kdW1wX3JlbmRlcl90cmVlKCkKICAgICAgICAgICAgICAgICAg
ICAgIyBSZXNldCB0aGUgYmF0Y2ggY291bnQgc2luY2UgdGhlIHNoZWxsIGp1c3QgYm91bmNlZC4K
ICAgICAgICAgICAgICAgICAgICAgYmF0Y2hfY291bnQgPSAwCisKICAgICAgICAgICAgICAgICAj
IFByaW50IHRoZSBlcnJvciBtZXNzYWdlKHMpLgotICAgICAgICAgICAgICAgIGVycm9yX3N0ciA9
ICdcbicuam9pbihbJyAgJyArIGYubWVzc2FnZSgpIGZvcgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZiBpbiByZXN1bHQuZmFpbHVyZXNdKQotICAgICAgICAgICAgICAg
IF9sb2cuZGVidWcoIiVzICVzIGZhaWxlZDpcbiVzIiAlIChzZWxmLmdldE5hbWUoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShm
aWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zdHIpKQorICAgICAg
ICAgICAgICAgIF9sb2cuZGVidWcoIiVzICVzIGZhaWxlZDoiICUgKHNlbGYuX25hbWUsIHRlc3Rf
bmFtZSkpCisgICAgICAgICAgICAgICAgZm9yIGYgaW4gcmVzdWx0LmZhaWx1cmVzOgorICAgICAg
ICAgICAgICAgICAgICBfbG9nLmRlYnVnKCIlcyAgJXMiICUgKHNlbGYuX25hbWUsIGYubWVzc2Fn
ZSgpKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMg
JXMgcGFzc2VkIiAlIChzZWxmLmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShmaWxlbmFtZSkpKQorICAgICAgICAg
ICAgICAgIF9sb2cuZGVidWcoIiVzICVzIHBhc3NlZCIgJSAoc2VsZi5fbmFtZSwgdGVzdF9uYW1l
KSkKICAgICAgICAgICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZS5wdXQocmVzdWx0LmR1bXBzKCkpCiAK
ICAgICAgICAgICAgIGlmIGJhdGNoX3NpemUgPiAwIGFuZCBiYXRjaF9jb3VudCA+PSBiYXRjaF9z
aXplOgogICAgICAgICAgICAgICAgICMgQm91bmNlIHRoZSBzaGVsbCBhbmQgcmVzZXQgY291bnQu
Ci0gICAgICAgICAgICAgICAgc2VsZi5fa2lsbF9kdW1wX3JlbmRlcl90cmVlKCkKKyAgICAgICAg
ICAgICAgICBzZWxmLl9zaW5nbGVfdGVzdF9ydW5uZXIua2lsbF9kdW1wX3JlbmRlcl90cmVlKCkK
ICAgICAgICAgICAgICAgICBiYXRjaF9jb3VudCA9IDAKIAogICAgICAgICAgICAgaWYgdGVzdF9y
dW5uZXI6CiAgICAgICAgICAgICAgICAgdGVzdF9ydW5uZXIudXBkYXRlX3N1bW1hcnkocmVzdWx0
X3N1bW1hcnkpCiAKLSAgICBkZWYgX3J1bl90ZXN0X2luX2Fub3RoZXJfdGhyZWFkKHNlbGYsIHRl
c3RfaW5wdXQpOgotICAgICAgICAiIiJSdW4gYSB0ZXN0IGluIGEgc2VwYXJhdGUgdGhyZWFkLCBl
bmZvcmNpbmcgYSBoYXJkIHRpbWUgbGltaXQuCi0KLSAgICAgICAgU2luY2Ugd2UgY2FuIG9ubHkg
ZGV0ZWN0IHRoZSB0ZXJtaW5hdGlvbiBvZiBhIHRocmVhZCwgbm90IGFueSBpbnRlcm5hbAotICAg
ICAgICBzdGF0ZSBvciBwcm9ncmVzcywgd2UgY2FuIG9ubHkgcnVuIHBlci10ZXN0IHRpbWVvdXRz
IHdoZW4gcnVubmluZyB0ZXN0Ci0gICAgICAgIGZpbGVzIHNpbmdseS4KLQotICAgICAgICBBcmdz
OgotICAgICAgICAgIHRlc3RfaW5wdXQ6IE9iamVjdCBjb250YWluaW5nIHRoZSB0ZXN0IGZpbGVu
YW1lIGFuZCB0aW1lb3V0Ci0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBBIFRlc3RSZXN1
bHQKLSAgICAgICAgIiIiCi0gICAgICAgIHdvcmtlciA9IFNpbmdsZVRlc3RUaHJlYWQoc2VsZi5f
cG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2lucHV0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMpCi0KLSAgICAgICAgd29ya2VyLnN0YXJ0KCkK
LQotICAgICAgICB0aHJlYWRfdGltZW91dCA9IF9taWxsaXNlY29uZHNfdG9fc2Vjb25kcygKLSAg
ICAgICAgICAgIF9wYWRfdGltZW91dChpbnQodGVzdF9pbnB1dC50aW1lb3V0KSkpCi0gICAgICAg
IHRocmVhZC5fbmV4dF90aW1lb3V0ID0gdGltZS50aW1lKCkgKyB0aHJlYWRfdGltZW91dAotICAg
ICAgICB3b3JrZXIuam9pbih0aHJlYWRfdGltZW91dCkKLSAgICAgICAgaWYgd29ya2VyLmlzQWxp
dmUoKToKLSAgICAgICAgICAgICMgSWYgam9pbigpIHJldHVybmVkIHdpdGggdGhlIHRocmVhZCBz
dGlsbCBydW5uaW5nLCB0aGUKLSAgICAgICAgICAgICMgRHVtcFJlbmRlclRyZWUgaXMgY29tcGxl
dGVseSBodW5nIGFuZCB0aGVyZSdzIG5vdGhpbmcKLSAgICAgICAgICAgICMgbW9yZSB3ZSBjYW4g
ZG8gd2l0aCBpdC4gIFdlIGhhdmUgdG8ga2lsbCBhbGwgdGhlCi0gICAgICAgICAgICAjIER1bXBS
ZW5kZXJUcmVlcyB0byBmcmVlIGl0IHVwLiBJZiB3ZSdyZSBydW5uaW5nIG1vcmUgdGhhbgotICAg
ICAgICAgICAgIyBvbmUgRHVtcFJlbmRlclRyZWUgdGhyZWFkLCB3ZSdsbCBlbmQgdXAga2lsbGlu
ZyB0aGUgb3RoZXIKLSAgICAgICAgICAgICMgRHVtcFJlbmRlclRyZWVzIHRvbywgaW50cm9kdWNp
bmcgc3B1cmlvdXMgY3Jhc2hlcy4gV2UgYWNjZXB0Ci0gICAgICAgICAgICAjIHRoYXQgdHJhZGVv
ZmYgaW4gb3JkZXIgdG8gYXZvaWQgbG9zaW5nIHRoZSByZXN0IG9mIHRoaXMKLSAgICAgICAgICAg
ICMgdGhyZWFkJ3MgcmVzdWx0cy4KLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1Rlc3QgdGhyZWFk
IGh1bmc6IGtpbGxpbmcgYWxsIER1bXBSZW5kZXJUcmVlcycpCi0gICAgICAgICAgICBpZiB3b3Jr
ZXIuX2RyaXZlcjoKLSAgICAgICAgICAgICAgICB3b3JrZXIuX2RyaXZlci5zdG9wKCkKLQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICByZXN1bHQgPSB3b3JrZXIuZ2V0X3Rlc3RfcmVzdWx0KCkK
LSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yLCBlOgotICAgICAgICAgICAgIyBUaGlzIGdl
dHMgcmFpc2VkIGlmIHRoZSB3b3JrZXIgdGhyZWFkIGhhcyBhbHJlYWR5IGV4aXRlZC4KLSAgICAg
ICAgICAgIF9sb2cuZXJyb3IoJ0Nhbm5vdCBnZXQgcmVzdWx0cyBvZiB0ZXN0OiAlcycgJSB0ZXN0
X2lucHV0LmZpbGVuYW1lKQotICAgICAgICAgICAgIyBGSVhNRTogU2VlbXMgd2Ugd2FudCBhIHVu
aXF1ZSBmYWlsdXJlIHR5cGUgaGVyZS4KLSAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RfcmVzdWx0
cy5UZXN0UmVzdWx0KHRlc3RfaW5wdXQuZmlsZW5hbWUpCi0KLSAgICAgICAgcmV0dXJuIHJlc3Vs
dAotCi0gICAgZGVmIF9ydW5fdGVzdF9pbl90aGlzX3RocmVhZChzZWxmLCB0ZXN0X2lucHV0KToK
LSAgICAgICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QgZmlsZSB1c2luZyBhIHNoYXJlZCBEdW1wUmVu
ZGVyVHJlZSBwcm9jZXNzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgdGVzdF9pbnB1dDog
T2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRlc3QgZmlsZW5hbWUsIHVyaSBhbmQgdGltZW91dAotCi0g
ICAgICAgIFJldHVybnM6IGEgVGVzdFJlc3VsdCBvYmplY3QuCi0gICAgICAgICIiIgotICAgICAg
ICBzZWxmLl9lbnN1cmVfZHVtcF9yZW5kZXJfdHJlZV9pc19ydW5uaW5nKCkKLSAgICAgICAgdGhy
ZWFkX3RpbWVvdXQgPSBfbWlsbGlzZWNvbmRzX3RvX3NlY29uZHMoCi0gICAgICAgICAgICAgX3Bh
ZF90aW1lb3V0KGludCh0ZXN0X2lucHV0LnRpbWVvdXQpKSkKLSAgICAgICAgc2VsZi5fbmV4dF90
aW1lb3V0ID0gdGltZS50aW1lKCkgKyB0aHJlYWRfdGltZW91dAotICAgICAgICB0ZXN0X3Jlc3Vs
dCA9IHNpbmdsZV90ZXN0X3J1bm5lci5ydW5fc2luZ2xlX3Rlc3QoCi0gICAgICAgICAgICBzZWxm
Ll9wb3J0LCBzZWxmLl9vcHRpb25zLCB0ZXN0X2lucHV0LCBzZWxmLl9kcml2ZXIsIHNlbGYuX25h
bWUsCi0gICAgICAgICAgICBzZWxmLl90ZXN0X3R5cGVzKQotICAgICAgICBzZWxmLl90ZXN0X3Jl
c3VsdHMuYXBwZW5kKHRlc3RfcmVzdWx0KQotICAgICAgICByZXR1cm4gdGVzdF9yZXN1bHQKLQot
ICAgIGRlZiBfZW5zdXJlX2R1bXBfcmVuZGVyX3RyZWVfaXNfcnVubmluZyhzZWxmKToKLSAgICAg
ICAgIiIiU3RhcnQgdGhlIHNoYXJlZCBEdW1wUmVuZGVyVHJlZSwgaWYgaXQncyBub3QgcnVubmlu
Zy4KLQotICAgICAgICBUaGlzIGlzIG5vdCBmb3IgdXNlIHdoZW4gcnVubmluZyB0ZXN0cyBzaW5n
bHksIHNpbmNlIHRob3NlIGVhY2ggc3RhcnQKLSAgICAgICAgYSBzZXBhcmF0ZSBEdW1wUmVuZGVy
VHJlZSBpbiB0aGVpciBvd24gdGhyZWFkLgotCi0gICAgICAgICIiIgotICAgICAgICAjIHBvbGwo
KSBpcyBub3QgdGhyZWFkc2FmZSBhbmQgY2FuIHRocm93IE9TRXJyb3IgZHVlIHRvOgotICAgICAg
ICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzMxNzE3Ci0gICAgICAgIGlmIG5vdCBz
ZWxmLl9kcml2ZXIgb3Igc2VsZi5fZHJpdmVyLnBvbGwoKSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIHNlbGYuX2RyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2RyaXZlcihzZWxmLl93b3JrZXJf
bnVtYmVyKQotICAgICAgICAgICAgc2VsZi5fZHJpdmVyLnN0YXJ0KCkKLQogICAgIGRlZiBfc3Rh
cnRfc2VydmVyc193aXRoX2xvY2soc2VsZik6CiAgICAgICAgICIiIkFjcXVpcmUgaHR0cCBsb2Nr
IGFuZCBzdGFydCB0aGUgc2VydmVycy4iIiIKICAgICAgICAgc2VsZi5faHR0cF9sb2NrX3dhaXRf
YmVnaW4gPSB0aW1lLnRpbWUoKQpAQCAtNDQ2LDkgKzI4OCwzIEBAIGNsYXNzIFRlc3RTaGVsbFRo
cmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgICAgIF9sb2cuZGVidWcoJ1JlbGVhc2Ug
aHR0cCBsb2NrIC4uLicpCiAgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGVhc2VfaHR0cF9sb2Nr
KCkKICAgICAgICAgICAgIHNlbGYuX2hhdmVfaHR0cF9sb2NrID0gRmFsc2UKLQotICAgIGRlZiBf
a2lsbF9kdW1wX3JlbmRlcl90cmVlKHNlbGYpOgotICAgICAgICAiIiJLaWxsIHRoZSBEdW1wUmVu
ZGVyVHJlZSBwcm9jZXNzIGlmIGl0J3MgcnVubmluZy4iIiIKLSAgICAgICAgaWYgc2VsZi5fZHJp
dmVyOgotICAgICAgICAgICAgc2VsZi5fZHJpdmVyLnN0b3AoKQotICAgICAgICAgICAgc2VsZi5f
ZHJpdmVyID0gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvc2luZ2xlX3Rlc3RfcnVubmVy
LnB5CmluZGV4IGQ4NDYzZDlhNGU4MzJhZGNlOWE1N2UyMzAwNWQ4YWFhODY0MmMyY2QuLmVkY2Y2
ZmU4NzNjNzA5MWVmNGQwYmJjYmU4MTMyNzc5MjQ5NmZlZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3NpbmdsZV90ZXN0X3J1
bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9zaW5nbGVfdGVzdF9ydW5uZXIucHkKQEAgLTI4LDEwICsyOCwxNCBAQAogCiAKIGlt
cG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKK2ltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCiAK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UKKworZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMudGVzdF90eXBlcyBpbXBvcnQgdGV4dF9kaWZmCitmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy50ZXN0X3R5cGVzIGltcG9ydCBpbWFnZV9kaWZmCisKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS50ZXN0X3Jlc3VsdHMgaW1w
b3J0IFRlc3RSZXN1bHQKIApAQCAtMzksMTIgKzQzLDYgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubGF5b3V0X3BhY2thZ2UudGVzdF9yZXN1bHRzIGltcG9ydCBUZXN0UmVzdWx0CiBfbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAotZGVmIHJ1bl9zaW5nbGVfdGVzdChw
b3J0LCBvcHRpb25zLCB0ZXN0X2lucHV0LCBkcml2ZXIsIHdvcmtlcl9uYW1lLCB0ZXN0X3R5cGVz
KToKLSAgICAjIEZJWE1FOiBQdWxsIHRoaXMgaW50byBUZXN0U2hlbGxUaHJlYWQuX3J1bigpLgot
ICAgIHJ1bm5lciA9IFNpbmdsZVRlc3RSdW5uZXIob3B0aW9ucywgcG9ydCwgZHJpdmVyLCB0ZXN0
X2lucHV0LCB3b3JrZXJfbmFtZSwgdGVzdF90eXBlcykKLSAgICByZXR1cm4gcnVubmVyLnJ1bigp
Ci0KLQogY2xhc3MgRXhwZWN0ZWREcml2ZXJPdXRwdXQ6CiAgICAgIiIiR3JvdXBzIGluZm9ybWF0
aW9uIGFib3V0IGFuIGV4cGVjdGVkIGRyaXZlciBvdXRwdXQuIiIiCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHRleHQsIGltYWdlLCBpbWFnZV9oYXNoKToKQEAgLTU1LDE1ICs1MywxMDggQEAgY2xh
c3MgRXhwZWN0ZWREcml2ZXJPdXRwdXQ6CiAKIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgcG9ydCwgZHJpdmVyLCB0ZXN0X2lucHV0LCB3
b3JrZXJfbmFtZSwgdGVzdF90eXBlcyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMs
IHBvcnQsIHdvcmtlcl9uYW1lLCB3b3JrZXJfbnVtYmVyKToKICAgICAgICAgc2VsZi5fb3B0aW9u
cyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi5fZHJp
dmVyID0gZHJpdmVyCi0gICAgICAgIHNlbGYuX2ZpbGVuYW1lID0gdGVzdF9pbnB1dC5maWxlbmFt
ZQotICAgICAgICBzZWxmLl90aW1lb3V0ID0gdGVzdF9pbnB1dC50aW1lb3V0CiAgICAgICAgIHNl
bGYuX3dvcmtlcl9uYW1lID0gd29ya2VyX25hbWUKLSAgICAgICAgc2VsZi5fdGVzdF90eXBlcyA9
IHRlc3RfdHlwZXMKLSAgICAgICAgc2VsZi5fdGVzdG5hbWUgPSBwb3J0LnJlbGF0aXZlX3Rlc3Rf
ZmlsZW5hbWUodGVzdF9pbnB1dC5maWxlbmFtZSkKKyAgICAgICAgc2VsZi5fd29ya2VyX251bWJl
ciA9IHdvcmtlcl9udW1iZXIKKyAgICAgICAgc2VsZi5fZHJpdmVyID0gTm9uZQorICAgICAgICBz
ZWxmLl90ZXN0X3R5cGVzID0gW10KKyAgICAgICAgZm9yIGNscyBpbiBzZWxmLl9nZXRfdGVzdF90
eXBlX2NsYXNzZXMoKToKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfdHlwZXMuYXBwZW5kKGNscyhz
ZWxmLl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpKQorCisgICAgZGVmIGNsZWFudXAoc2VsZik6Cisg
ICAgICAgIHNlbGYua2lsbF9kdW1wX3JlbmRlcl90cmVlKCkKKworICAgIGRlZiBfZ2V0X3Rlc3Rf
dHlwZV9jbGFzc2VzKHNlbGYpOgorICAgICAgICBjbGFzc2VzID0gW3RleHRfZGlmZi5UZXN0VGV4
dERpZmZdCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHM6CisgICAgICAgICAg
ICBjbGFzc2VzLmFwcGVuZChpbWFnZV9kaWZmLkltYWdlRGlmZikKKyAgICAgICAgcmV0dXJuIGNs
YXNzZXMKKworICAgIGRlZiB0aW1lb3V0KHNlbGYsIHRlc3RfaW5wdXQpOgorICAgICAgICAjIFdl
IGNhbGN1bGF0ZSBob3cgbG9uZyB3ZSBleHBlY3QgdGhlIHRlc3QgdG8gdGFrZS4KKyAgICAgICAg
IworICAgICAgICAjIFRoZSBEdW1wUmVuZGVyVHJlZSB3YXRjaGRvZyB1c2VzIDIuNXggdGhlIHRp
bWVvdXQ7IHdlIHdhbnQgdG8gYmUKKyAgICAgICAgIyBsYXJnZXIgdGhhbiB0aGF0LiBXZSBhbHNv
IGFkZCBhIGxpdHRsZSBtb3JlIHBhZGRpbmcgaWYgd2UncmUKKyAgICAgICAgIyBydW5uaW5nIHRl
c3RzIGluIGEgc2VwYXJhdGUgdGhyZWFkLgorICAgICAgICAjCisgICAgICAgICMgTm90ZSB0aGF0
IHdlIG5lZWQgdG8gY29udmVydCB0aGUgdGVzdCB0aW1lb3V0IGZyb20gYQorICAgICAgICAjIHN0
cmluZyB2YWx1ZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBmbG9hdCBmb3IgUHl0aG9uLgorICAgICAg
ICBkcml2ZXJfdGltZW91dF9zZWMgPSAzLjAgKiBmbG9hdCh0ZXN0X2lucHV0LnRpbWVvdXQpIC8g
MTAwMC4wCisgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLnJ1bl9zaW5nbHk6CisgICAgICAg
ICAgICByZXR1cm4gZHJpdmVyX3RpbWVvdXRfc2VjCisKKyAgICAgICAgdGhyZWFkX3BhZGRpbmdf
c2VjID0gMS4wCisgICAgICAgIHRocmVhZF90aW1lb3V0X3NlYyA9IGRyaXZlcl90aW1lb3V0X3Nl
YyArIHRocmVhZF9wYWRkaW5nX3NlYworICAgICAgICByZXR1cm4gdGhyZWFkX3RpbWVvdXRfc2Vj
CisKKyAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCwgdGltZW91dCk6CisgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMucnVuX3NpbmdseToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9y
dW5fdGVzdF9pbl9hbm90aGVyX3RocmVhZCh0ZXN0X2lucHV0LCB0aW1lb3V0KQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0X2luX3RoaXNfdGhyZWFkKHRl
c3RfaW5wdXQpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfcnVuX3Rlc3RfaW5f
YW5vdGhlcl90aHJlYWQoc2VsZiwgdGVzdF9pbnB1dCwgdGhyZWFkX3RpbWVvdXRfc2VjKToKKyAg
ICAgICAgIiIiUnVuIGEgdGVzdCBpbiBhIHNlcGFyYXRlIHRocmVhZCwgZW5mb3JjaW5nIGEgaGFy
ZCB0aW1lIGxpbWl0LgorCisgICAgICAgIFNpbmNlIHdlIGNhbiBvbmx5IGRldGVjdCB0aGUgdGVy
bWluYXRpb24gb2YgYSB0aHJlYWQsIG5vdCBhbnkgaW50ZXJuYWwKKyAgICAgICAgc3RhdGUgb3Ig
cHJvZ3Jlc3MsIHdlIGNhbiBvbmx5IHJ1biBwZXItdGVzdCB0aW1lb3V0cyB3aGVuIHJ1bm5pbmcg
dGVzdAorICAgICAgICBmaWxlcyBzaW5nbHkuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICB0
ZXN0X2lucHV0OiBPYmplY3QgY29udGFpbmluZyB0aGUgdGVzdCBmaWxlbmFtZSBhbmQgdGltZW91
dAorICAgICAgICAgIHRocmVhZF90aW1lb3V0X3NlYzogdGltZSB0byB3YWl0IGJlZm9yZSBraWxs
aW5nIHRoZSBkcml2ZXIgcHJvY2Vzcy4KKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICBBIFRl
c3RSZXN1bHQKKyAgICAgICAgIiIiCisgICAgICAgIHdvcmtlciA9IHNlbGYKKyAgICAgICAgcmVz
dWx0ID0gTm9uZQorCisgICAgICAgIGRyaXZlciA9IHdvcmtlci5fcG9ydC5jcmVhdGVfZHJpdmVy
KHdvcmtlci5fd29ya2VyX251bWJlcikKKyAgICAgICAgZHJpdmVyLnN0YXJ0KCkKKworICAgICAg
ICBjbGFzcyBTaW5nbGVUZXN0VGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAgICAgICAgICAg
ZGVmIHJ1bihzZWxmKToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB3b3JrZXIucnVuKHRlc3Rf
aW5wdXQsIGRyaXZlcikKKworICAgICAgICB0aHJlYWQgPSBTaW5nbGVUZXN0VGhyZWFkKCkKKyAg
ICAgICAgdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgdGhyZWFkLmpvaW4odGhyZWFkX3RpbWVvdXRf
c2VjKQorICAgICAgICBpZiB0aHJlYWQuaXNBbGl2ZSgpOgorICAgICAgICAgICAgIyBJZiBqb2lu
KCkgcmV0dXJuZWQgd2l0aCB0aGUgdGhyZWFkIHN0aWxsIHJ1bm5pbmcsIHRoZQorICAgICAgICAg
ICAgIyBEdW1wUmVuZGVyVHJlZSBpcyBjb21wbGV0ZWx5IGh1bmcgYW5kIHRoZXJlJ3Mgbm90aGlu
ZworICAgICAgICAgICAgIyBtb3JlIHdlIGNhbiBkbyB3aXRoIGl0LiAgV2UgaGF2ZSB0byBraWxs
IGFsbCB0aGUKKyAgICAgICAgICAgICMgRHVtcFJlbmRlclRyZWVzIHRvIGZyZWUgaXQgdXAuIElm
IHdlJ3JlIHJ1bm5pbmcgbW9yZSB0aGFuCisgICAgICAgICAgICAjIG9uZSBEdW1wUmVuZGVyVHJl
ZSB0aHJlYWQsIHdlJ2xsIGVuZCB1cCBraWxsaW5nIHRoZSBvdGhlcgorICAgICAgICAgICAgIyBE
dW1wUmVuZGVyVHJlZXMgdG9vLCBpbnRyb2R1Y2luZyBzcHVyaW91cyBjcmFzaGVzLiBXZSBhY2Nl
cHQKKyAgICAgICAgICAgICMgdGhhdCB0cmFkZW9mZiBpbiBvcmRlciB0byBhdm9pZCBsb3Npbmcg
dGhlIHJlc3Qgb2YgdGhpcworICAgICAgICAgICAgIyB0aHJlYWQncyByZXN1bHRzLgorICAgICAg
ICAgICAgX2xvZy5lcnJvcignVGVzdCB0aHJlYWQgaHVuZzoga2lsbGluZyBhbGwgRHVtcFJlbmRl
clRyZWVzJykKKworICAgICAgICBkcml2ZXIuc3RvcCgpCisKKyAgICAgICAgaWYgbm90IHJlc3Vs
dDoKKyAgICAgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQodGVzdF9pbnB1dC5maWxlbmFtZSwg
ZmFpbHVyZXM9W10sCisgICAgICAgICAgICAgICAgdGVzdF9ydW5fdGltZT0wLCB0b3RhbF90aW1l
X2Zvcl9hbGxfZGlmZnM9MCwgdGltZV9mb3JfZGlmZnM9e30pCisgICAgICAgIHJldHVybiByZXN1
bHQKKworICAgIGRlZiBfcnVuX3Rlc3RfaW5fdGhpc190aHJlYWQoc2VsZiwgdGVzdF9pbnB1dCk6
CisgICAgICAgICIiIlJ1biBhIHNpbmdsZSB0ZXN0IGZpbGUgdXNpbmcgYSBzaGFyZWQgRHVtcFJl
bmRlclRyZWUgcHJvY2Vzcy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIHRlc3RfaW5wdXQ6
IE9iamVjdCBjb250YWluaW5nIHRoZSB0ZXN0IGZpbGVuYW1lLCB1cmkgYW5kIHRpbWVvdXQKKwor
ICAgICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAg
ICAgIyBwb2xsKCkgaXMgbm90IHRocmVhZHNhZmUgYW5kIGNhbiB0aHJvdyBPU0Vycm9yIGR1ZSB0
bzoKKyAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTczMTcxNworICAgICAg
ICBpZiBub3Qgc2VsZi5fZHJpdmVyIG9yIHNlbGYuX2RyaXZlci5wb2xsKCkgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICBzZWxmLl9kcml2ZXIgPSBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIoc2Vs
Zi5fd29ya2VyX251bWJlcikKKyAgICAgICAgICAgIHNlbGYuX2RyaXZlci5zdGFydCgpCisgICAg
ICAgIHJldHVybiBzZWxmLl9ydW4oc2VsZi5fZHJpdmVyLCB0ZXN0X2lucHV0KQogCiAgICAgZGVm
IF9leHBlY3RlZF9kcml2ZXJfb3V0cHV0KHNlbGYpOgogICAgICAgICByZXR1cm4gRXhwZWN0ZWRE
cml2ZXJPdXRwdXQoc2VsZi5fcG9ydC5leHBlY3RlZF90ZXh0KHNlbGYuX2ZpbGVuYW1lKSwKQEAg
LTc0LDcgKzE2NSwxMSBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICByZXR1cm4g
KHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgYW5kCiAgICAgICAgICAgICAgICAgbm90IChzZWxm
Ll9vcHRpb25zLm5ld19iYXNlbGluZSBvciBzZWxmLl9vcHRpb25zLnJlc2V0X3Jlc3VsdHMpKQog
Ci0gICAgZGVmIF9kcml2ZXJfaW5wdXQoc2VsZik6CisgICAgZGVmIF9kcml2ZXJfaW5wdXQoc2Vs
ZiwgdGVzdF9pbnB1dCk6CisgICAgICAgIHNlbGYuX2ZpbGVuYW1lID0gdGVzdF9pbnB1dC5maWxl
bmFtZQorICAgICAgICBzZWxmLl90aW1lb3V0ID0gdGVzdF9pbnB1dC50aW1lb3V0CisgICAgICAg
IHNlbGYuX3Rlc3RuYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3Rf
aW5wdXQuZmlsZW5hbWUpCisKICAgICAgICAgIyBUaGUgaW1hZ2UgaGFzaCBpcyB1c2VkIHRvIGF2
b2lkIGRvaW5nIGFuIGltYWdlIGR1bXAgaWYgdGhlCiAgICAgICAgICMgY2hlY2tzdW1zIG1hdGNo
LCBzbyBpdCBzaG91bGQgYmUgc2V0IHRvIGEgYmxhbmsgdmFsdWUgaWYgd2UKICAgICAgICAgIyBh
cmUgZ2VuZXJhdGluZyBhIG5ldyBiYXNlbGluZS4gIChPdGhlcndpc2UsIGFuIGltYWdlIGZyb20g
YQpAQCAtODQsOCArMTc5LDggQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAgICAg
IGltYWdlX2hhc2ggPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2NoZWNrc3VtKHNlbGYuX2ZpbGVuYW1l
KQogICAgICAgICByZXR1cm4gYmFzZS5Ecml2ZXJJbnB1dChzZWxmLl9maWxlbmFtZSwgc2VsZi5f
dGltZW91dCwgaW1hZ2VfaGFzaCkKIAotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIGRyaXZl
cl9vdXRwdXQgPSBzZWxmLl9kcml2ZXIucnVuX3Rlc3Qoc2VsZi5fZHJpdmVyX2lucHV0KCkpCisg
ICAgZGVmIF9ydW4oc2VsZiwgZHJpdmVyLCB0ZXN0X2lucHV0KToKKyAgICAgICAgZHJpdmVyX291
dHB1dCA9IHNlbGYuX2RyaXZlci5ydW5fdGVzdChzZWxmLl9kcml2ZXJfaW5wdXQodGVzdF9pbnB1
dCkpCiAgICAgICAgIHJldHVybiBzZWxmLl9wcm9jZXNzX291dHB1dChkcml2ZXJfb3V0cHV0KQog
CiAgICAgZGVmIF9wcm9jZXNzX291dHB1dChzZWxmLCBkcml2ZXJfb3V0cHV0KToKQEAgLTEzNiwz
ICsyMzEsOSBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICB0b3RhbF90aW1lX2Zv
cl9hbGxfZGlmZnMgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0X2RpZmZfdGltZQogICAgICAgICByZXR1
cm4gVGVzdFJlc3VsdChzZWxmLl9maWxlbmFtZSwgZmFpbHVyZXMsIGRyaXZlcl9vdXRwdXQudGVz
dF90aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF90aW1lX2Zvcl9hbGxfZGlm
ZnMsIHRpbWVfZm9yX2RpZmZzKQorCisgICAgZGVmIGtpbGxfZHVtcF9yZW5kZXJfdHJlZShzZWxm
KToKKyAgICAgICAgIiIiS2lsbCB0aGUgRHVtcFJlbmRlclRyZWUgcHJvY2VzcyBpZiBpdCdzIHJ1
bm5pbmcuIiIiCisgICAgICAgIGlmIHNlbGYuX2RyaXZlcjoKKyAgICAgICAgICAgIHNlbGYuX2Ry
aXZlci5zdG9wKCkKKyAgICAgICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGZmZjM1NzcxNjEzMTcwZmZkMjhiY2FiNGZiZTJlNTli
MzNhYTJmNzQuLmY0ZTUzNTBlNmY4NTMzYmYzODkzYzQxNTgyOWUyOWFiZDM2OGU0NTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpAQCAtNDk5LDcgKzQ5OSw3IEBAIGNsYXNzIFJl
YmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAgICAg
ICdmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5nX2ltYWdlLmh0bWwnXSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZpbGVzeXN0ZW09ZnMpCiAgICAgICAgIGZp
bGVfbGlzdCA9IGZzLndyaXR0ZW5fZmlsZXMua2V5cygpCi0gICAgICAgIGZpbGVfbGlzdC5yZW1v
dmUoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4udHh0JykKKyAgICAgICAgZmls
ZV9saXN0LnJlbW92ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjAudHh0JykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZmlsZV9saXN0KSwgNikKICAgICAgICAgc2Vs
Zi5hc3NlcnRCYXNlbGluZXMoZmlsZV9saXN0LAogICAgICAgICAgICAgIi9wYXNzZXMvaW1hZ2Ui
KQpAQCAtNTE2LDcgKzUxNiw3IEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC9taXNzaW5n
X2ltYWdlLmh0bWwnXSwKICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwg
ZmlsZXN5c3RlbT1mcykKICAgICAgICAgZmlsZV9saXN0ID0gZnMud3JpdHRlbl9maWxlcy5rZXlz
KCkKLSAgICAgICAgZmlsZV9saXN0LnJlbW92ZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rl
c3RzX3J1bi50eHQnKQorICAgICAgICBmaWxlX2xpc3QucmVtb3ZlKCcvdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvdGVzdHNfcnVuMC50eHQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihm
aWxlX2xpc3QpLCA2KQogICAgICAgICBzZWxmLmFzc2VydEJhc2VsaW5lcyhmaWxlX2xpc3QsCiAg
ICAgICAgICAgICAiL3BsYXRmb3JtL3Rlc3QtbWFjL3Bhc3Nlcy9pbWFnZSIpCg==
</data>
<flag name="review"
          id="73199"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>