<?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>48616</bug_id>
          
          <creation_ts>2010-10-28 20:54:39 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: change TestResults to be serializable</short_desc>
          <delta_ts>2010-10-29 15:49:12 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>301567</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-28 20:54:39 -0700</bug_when>
    <thetext>new-run-webkit-tests: change TestResults to be serializable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301568</commentid>
    <comment_count>1</comment_count>
      <attachid>72292</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-28 21:03:30 -0700</bug_when>
    <thetext>Created attachment 72292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301569</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-28 21:05:07 -0700</bug_when>
    <thetext>Hi Tony, Ojan,

Could one of you take a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301829</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-29 09:52:41 -0700</bug_when>
    <thetext>Why did you pick json?  Wouldn&apos;t pickle be a more appropriate format for passing data between python processes?

http://docs.python.org/library/pickle.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302071</commentid>
    <comment_count>4</comment_count>
      <attachid>72396</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-29 14:39:50 -0700</bug_when>
    <thetext>Created attachment 72396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302074</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-29 14:41:42 -0700</bug_when>
    <thetext>Patch updated to use cPickle instead ....

I was using JSON because I wasn&apos;t that familiar with pickling and I have a long-standing bias against language specific marshalling mechanisms for objects (instead of neutral wire formats). But that bias probably didn&apos;t make any sense in this case, and the code is certainly shorter and cleaner now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302094</commentid>
    <comment_count>6</comment_count>
      <attachid>72396</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-29 15:06:03 -0700</bug_when>
    <thetext>Comment on attachment 72396
Patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:42
&gt; +    return [FailureTimeout, FailureCrash, FailureMissingResult,
&gt; +            FailureTextMismatch, FailureMissingImageHash,
&gt; +            FailureMissingImage, FailureImageHashMismatch,
&gt; +            FailureImageHashIncorrect]

Nit: Can this be a tuple stored in just a variable?  E.g.,
_ALL_FAILURE_CLASSES = (...)

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:93
&gt; +    def __eq__(self, other):
&gt; +        return self.__class__.__name__ == other.__class__.__name__

If you&apos;re going to have an __eq__, can you add __ne__ too?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:225
&gt; +    OUT_FILENAMES = [&quot;-actual.txt&quot;, &quot;-expected.txt&quot;, &quot;-diff.txt&quot;,
&gt; +                     &quot;-wdiff.html&quot;, &quot;-pretty-diff.html&quot;]

Nit: Can this be a tuple?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results.py:55
&gt; +    def __eq__(self, other):
&gt; +        return (self.filename == other.filename and
&gt; +                self.failures == other.failures and
&gt; +                self.test_run_time == other.test_run_time and
&gt; +                self.time_for_diffs == other.time_for_diffs and
&gt; +                self.total_time_for_all_diffs == other.total_time_for_all_diffs)

Can you define __ne__ too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302149</commentid>
    <comment_count>7</comment_count>
      <attachid>72409</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-29 15:42:08 -0700</bug_when>
    <thetext>Created attachment 72409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302154</commentid>
    <comment_count>8</comment_count>
      <attachid>72409</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-29 15:47:08 -0700</bug_when>
    <thetext>Comment on attachment 72409
Patch

Clearing flags on attachment: 72409

Committed r70943: &lt;http://trac.webkit.org/changeset/70943&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302155</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-29 15:47:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302156</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-29 15:49:12 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 72396 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72396&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:42
&gt; &gt; +    return [FailureTimeout, FailureCrash, FailureMissingResult,
&gt; &gt; +            FailureTextMismatch, FailureMissingImageHash,
&gt; &gt; +            FailureMissingImage, FailureImageHashMismatch,
&gt; &gt; +            FailureImageHashIncorrect]
&gt; 
&gt; Nit: Can this be a tuple stored in just a variable?  E.g.,
&gt; _ALL_FAILURE_CLASSES = (...)
&gt; 

Done. I made the variable public (since the method was) and had to move it to the end of the file, in order for the needed symbols to be defined.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:93
&gt; &gt; +    def __eq__(self, other):
&gt; &gt; +        return self.__class__.__name__ == other.__class__.__name__
&gt; 
&gt; If you&apos;re going to have an __eq__, can you add __ne__ too?
&gt; 

Done. I was thinking Python dealt with this automatically, but apparently I needed to def __ne__(self, other); raise NotImplementedError for it to do that, at which point implementing it directly was easier. Added another test for this as well.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:225
&gt; &gt; +    OUT_FILENAMES = [&quot;-actual.txt&quot;, &quot;-expected.txt&quot;, &quot;-diff.txt&quot;,
&gt; &gt; +                     &quot;-wdiff.html&quot;, &quot;-pretty-diff.html&quot;]
&gt; 
&gt; Nit: Can this be a tuple?
&gt;

Done.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_results.py:55
&gt; &gt; +    def __eq__(self, other):
&gt; &gt; +        return (self.filename == other.filename and
&gt; &gt; +                self.failures == other.failures and
&gt; &gt; +                self.test_run_time == other.test_run_time and
&gt; &gt; +                self.time_for_diffs == other.time_for_diffs and
&gt; &gt; +                self.total_time_for_all_diffs == other.total_time_for_all_diffs)
&gt; 
&gt; Can you define __ne__ too?

Done (same as above).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72292</attachid>
            <date>2010-10-28 21:03:30 -0700</date>
            <delta_ts>2010-10-29 14:39:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48616-20101028210329.patch</filename>
            <type>text/plain</type>
            <size>21485</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlNjcyMTdhNWMzMjI5MTUwNjBiNzQ5OGNmYzYxMDcyZjY1YzA4MTQ0Li5hNWRmYjE2
ZmRhNTExNTc2NWZmODliMTBjZWM1OTI4NTJkZWQ3NTMxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTAtMTAtMjggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNoYW5nZSBUZXN0UmVzdWx0cyB0byBiZSBzZXJpYWxpemFibGUKKworICAgICAgICBJ
biBwcmVwYXJhdGlvbiBmb3IgY2hhbmdpbmcgbmV3LXJ1bi13ZWJraXQtdGVzdHMgZnJvbQorICAg
ICAgICBtdWx0aXRocmVhZGVkIHRvIG11bHRpcHJvY2Vzcywgd2UgbmVlZCB0byBtYWtlIHN1cmUg
dGhlIGRhdGEKKyAgICAgICAgZ29pbmcgYmV0d2VlbiB0aGUgdGhyZWFkcyBpcyBlYXNpbHkgc2Vy
aWFsaXplZCBvdmVyIGEgc29ja2V0LgorICAgICAgICBUaGUgb25seSBjb21wbGljYXRpb24gaXMg
dGhlIFRlc3RSZXN1bHRzIGNsYXNzLCB3aGljaCBjYXJyaWVzCisgICAgICAgIHVudXNlZCBzdGF0
ZSBhYm91dCB3aGV0aGVyIG9yIG5vdCB0aGUgdGVzdCBmYWlsdXJlcyBpbmNsdWRlZCB3ZGlmZgor
ICAgICAgICBvdXRwdXQgKHRoZSBjb2RlIGluY29ycmVjdGx5IGFsd2F5cyBhc3N1bWVzIGl0IGRv
ZXMpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBKU09OIGVuY29kaW5nIGZvciBUZXN0
UmVzdWx0cyBhbmQgc3BsaXRzCisgICAgICAgIHRoZW0gaW50byBpdHMgb3duIGZpbGUuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NjE2CisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1w
X3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVz
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfZmFpbHVyZXNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzLnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X3Jlc3VsdHNfdW5pdHRlc3QucHk6QWRkZWQuIAorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHk6CisKIDIwMTAtMTAtMjcg
IEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9q
YW4gVmFmYWkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBf
cmVuZGVyX3RyZWVfdGhyZWFkLnB5CmluZGV4IGFiMTBlMGE5NTJmYjgzMjUzNDM3ZjlkNjM4YzE3
M2NhZWIzNjljOGMuLjEzNWFlMmM4MmRmNGM0N2YyYmVkNWI1NWQwMDhkMzFiNzc3Mjg0MjIgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3Ry
ZWVfdGhyZWFkLnB5CkBAIC01MSw2ICs1MSw3IEBAIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2Vi
YWNrCiAKIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCitpbXBvcnQgdGVzdF9yZXN1bHRzCiAKIF9sb2cg
PSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdl
LiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQiKQpA
QCAtMTMzLDggKzEzNCw4IEBAIGRlZiBfcHJvY2Vzc19vdXRwdXQocG9ydCwgb3B0aW9ucywgdGVz
dF9pbmZvLCB0ZXN0X3R5cGVzLCB0ZXN0X2FyZ3MsCiAgICAgICAgICAgICB0aW1lLnRpbWUoKSAt
IHN0YXJ0X2RpZmZfdGltZSkKIAogICAgIHRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcyA9IHRpbWUu
dGltZSgpIC0gc3RhcnRfZGlmZl90aW1lCi0gICAgcmV0dXJuIFRlc3RSZXN1bHQodGVzdF9pbmZv
LmZpbGVuYW1lLCBmYWlsdXJlcywgdGVzdF9ydW5fdGltZSwKLSAgICAgICAgICAgICAgICAgICAg
ICB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMsIHRpbWVfZm9yX2RpZmZzKQorICAgIHJldHVybiB0
ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0X2luZm8uZmlsZW5hbWUsIGZhaWx1cmVzLCB0ZXN0
X3J1bl90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF90aW1l
X2Zvcl9hbGxfZGlmZnMsIHRpbWVfZm9yX2RpZmZzKQogCiAKIGRlZiBfcGFkX3RpbWVvdXQodGlt
ZW91dCk6CkBAIC0xNTksMTggKzE2MCw2IEBAIGRlZiBfaW1hZ2VfaGFzaCh0ZXN0X2luZm8sIHRl
c3RfYXJncywgb3B0aW9ucyk6CiAgICAgcmV0dXJuIHRlc3RfaW5mby5pbWFnZV9oYXNoKCkKIAog
Ci1jbGFzcyBUZXN0UmVzdWx0KG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmls
ZW5hbWUsIGZhaWx1cmVzLCB0ZXN0X3J1bl90aW1lLAotICAgICAgICAgICAgICAgICB0b3RhbF90
aW1lX2Zvcl9hbGxfZGlmZnMsIHRpbWVfZm9yX2RpZmZzKToKLSAgICAgICAgc2VsZi5mYWlsdXJl
cyA9IGZhaWx1cmVzCi0gICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQotICAgICAgICBz
ZWxmLnRlc3RfcnVuX3RpbWUgPSB0ZXN0X3J1bl90aW1lCi0gICAgICAgIHNlbGYudGltZV9mb3Jf
ZGlmZnMgPSB0aW1lX2Zvcl9kaWZmcwotICAgICAgICBzZWxmLnRvdGFsX3RpbWVfZm9yX2FsbF9k
aWZmcyA9IHRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcwotICAgICAgICBzZWxmLnR5cGUgPSB0ZXN0
X2ZhaWx1cmVzLmRldGVybWluZV9yZXN1bHRfdHlwZShmYWlsdXJlcykKLQotCiBjbGFzcyBTaW5n
bGVUZXN0VGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICIiIlRocmVhZCB3cmFwcGVyIGZv
ciBydW5uaW5nIGEgc2luZ2xlIHRlc3QgZmlsZS4iIiIKIApAQCAtMjY0LDggKzI1Myw4IEBAIGNs
YXNzIFRlc3RTaGVsbFRocmVhZChXYXRjaGFibGVUaHJlYWQpOgogICAgICAgICAgIG9wdGlvbnM6
IGNvbW1hbmQgbGluZSBvcHRpb25zIGFyZ3VtZW50IGZyb20gb3B0cGFyc2UKICAgICAgICAgICBm
aWxlbmFtZV9saXN0X3F1ZXVlOiBBIHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNzIHRoYXQgY29udGFp
bnMgbGlzdHMKICAgICAgICAgICAgICAgb2YgdHVwbGVzIG9mIChmaWxlbmFtZSwgdXJpKSBwYWly
cy4KLSAgICAgICAgICByZXN1bHRfcXVldWU6IEEgdGhyZWFkIHNhZmUgUXVldWUgY2xhc3MgdGhh
dCB3aWxsIGNvbnRhaW4gdHVwbGVzIG9mCi0gICAgICAgICAgICAgICh0ZXN0LCBmYWlsdXJlIGxp
c3RzKSBmb3IgdGhlIHRlc3QgcmVzdWx0cy4KKyAgICAgICAgICByZXN1bHRfcXVldWU6IEEgdGhy
ZWFkIHNhZmUgUXVldWUgY2xhc3MgdGhhdCB3aWxsIGNvbnRhaW4KKyAgICAgICAgICAgICAgSlNP
Ti1lbmNvZGVkIFRlc3RSZXN1bHRzLgogICAgICAgICAgIHRlc3RfdHlwZXM6IEEgbGlzdCBvZiBU
ZXN0VHlwZSBvYmplY3RzIHRvIHJ1biB0aGUgdGVzdCBvdXRwdXQKICAgICAgICAgICAgICAgYWdh
aW5zdC4KICAgICAgICAgICB0ZXN0X2FyZ3M6IEEgVGVzdEFyZ3VtZW50cyBvYmplY3QgdG8gcGFz
cyB0byBlYWNoIFRlc3RUeXBlLgpAQCAtNDQ5LDcgKzQzOCw3IEBAIGNsYXNzIFRlc3RTaGVsbFRo
cmVhZChXYXRjaGFibGVUaHJlYWQpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICBfbG9nLmRlYnVnKCIlcyAlcyBwYXNzZWQiICUgKHNlbGYuZ2V0TmFtZSgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVu
YW1lKSkpCi0gICAgICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUucHV0KHJlc3VsdCkKKyAgICAg
ICAgICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZS5wdXQocmVzdWx0LmR1bXBzKCkpCiAKICAgICAgICAg
ICAgIGlmIGJhdGNoX3NpemUgPiAwIGFuZCBiYXRjaF9jb3VudCA+IGJhdGNoX3NpemU6CiAgICAg
ICAgICAgICAgICAgIyBCb3VuY2UgdGhlIHNoZWxsIGFuZCByZXNldCBjb3VudC4KQEAgLTUwNSw5
ICs0OTQsOCBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAg
ICAgICAgIGZhaWx1cmVzID0gW10KICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0Nhbm5vdCBnZXQg
cmVzdWx0cyBvZiB0ZXN0OiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2luZm8u
ZmlsZW5hbWUpCi0gICAgICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0KHRlc3RfaW5mby5maWxl
bmFtZSwgZmFpbHVyZXM9W10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
cnVuX3RpbWU9MCwgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZzPTAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVfZm9yX2RpZmZzPTApCisgICAgICAgICAgICByZXN1bHQgPSB0
ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0X2luZm8uZmlsZW5hbWUsIGZhaWx1cmVzPVtdLAor
ICAgICAgICAgICAgICAgIHRlc3RfcnVuX3RpbWU9MCwgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZz
PTAsIHRpbWVfZm9yX2RpZmZzPTApCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC01MTcs
OSArNTA1LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAg
ICAgIEFyZ3M6CiAgICAgICAgICAgdGVzdF9pbmZvOiBPYmplY3QgY29udGFpbmluZyB0aGUgdGVz
dCBmaWxlbmFtZSwgdXJpIGFuZCB0aW1lb3V0CiAKLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAg
ICBBIGxpc3Qgb2YgVGVzdEZhaWx1cmUgb2JqZWN0cyBkZXNjcmliaW5nIHRoZSBlcnJvci4KLQor
ICAgICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2JqZWN0LgogICAgICAgICAiIiIKICAgICAg
ICAgc2VsZi5fZW5zdXJlX2R1bXBfcmVuZGVyX3RyZWVfaXNfcnVubmluZygpCiAgICAgICAgICMg
VGhlIHBpeGVsX2hhc2ggaXMgdXNlZCB0byBhdm9pZCBkb2luZyBhbiBpbWFnZSBkdW1wIGlmIHRo
ZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5w
eQppbmRleCAwMzQ0YWE3YWM0MDhhZWIwODI0MWFhM2IwZDlmNzEyMGRjNDFiYTcwLi45YTBmNGVl
YTIwOGQyMWNmODhlZjhkNWVlYWYxNDgzYTUxMTYxOGUzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191
bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQpAQCAtNDAsNyArNDAsNyBAQCBm
cm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgYXJyYXlfc3RyZWFtCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
IGltcG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBp
bXBvcnQgcHJpbnRpbmcKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdl
IGltcG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cwogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKQEAgLTE0
MSw5ICsxNDEsOSBAQCBjbGFzcyAgVGVzdHByaW50ZXIodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICBlbGlmIHJlc3VsdF90eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIOgogICAgICAg
ICAgICAgZmFpbHVyZXMgPSBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2goKV0KICAgICAgICAg
cGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgdGVzdCkK
LSAgICAgICAgcmV0dXJuIGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLlRlc3RSZXN1bHQocGF0aCwg
ZmFpbHVyZXMsIHJ1bl90aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnM9MCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV9mb3JfZGlmZnM9MCkKKyAg
ICAgICAgcmV0dXJuIHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHBhdGgsIGZhaWx1cmVzLCBydW5f
dGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3RpbWVf
Zm9yX2FsbF9kaWZmcz0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGltZV9mb3JfZGlmZnM9MCkKIAogICAgIGRlZiBnZXRfcmVzdWx0X3N1bW1hcnkoc2VsZiwgdGVz
dHMsIGV4cGVjdGF0aW9uc19zdHIpOgogICAgICAgICB0ZXN0X3BhdGhzID0gW29zLnBhdGguam9p
bihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgdGVzdCkgZm9yCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2ZhaWx1cmVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weQppbmRleCAzNDBkMDc1M2JiMTBmM2E3
OTVlYzhiODg3M2FiZjJiODFiMmYzZjM1Li45ZWFlMDMwOTRhMzMxOTYwZmQ2NzZjZTIzYjVkZTVl
Y2JjNDlkNGI3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVy
ZXMucHkKQEAgLTMzLDYgKzMzLDI2IEBAIGltcG9ydCBvcwogaW1wb3J0IHRlc3RfZXhwZWN0YXRp
b25zCiAKIAorZGVmIGFsbF9mYWlsdXJlX2NsYXNzZXMoKToKKyAgICByZXR1cm4gW0ZhaWx1cmVU
aW1lb3V0LCBGYWlsdXJlQ3Jhc2gsIEZhaWx1cmVNaXNzaW5nUmVzdWx0LAorICAgICAgICAgICAg
RmFpbHVyZVRleHRNaXNtYXRjaCwgRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2gsCisgICAgICAgICAg
ICBGYWlsdXJlTWlzc2luZ0ltYWdlLCBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2gsCisgICAgICAg
ICAgICBGYWlsdXJlSW1hZ2VIYXNoSW5jb3JyZWN0XQorCisKK19jbGFzc19mb3JfbmFtZSA9IE5v
bmUKKworCitkZWYgZnJvbV9zdHIocyk6CisgICAgIiIiQ3JlYXRlcyBhIFRlc3RGYWlsdXJlIG9i
amVjdCBmb3IgdGhlIHNwZWNpZmllZCBjbGFzcyBuYW1lLiIiIgorICAgIGdsb2JhbCBfY2xhc3Nf
Zm9yX25hbWUKKyAgICBpZiBub3QgX2NsYXNzX2Zvcl9uYW1lOgorICAgICAgICBfY2xhc3NfZm9y
X25hbWUgPSB7fQorICAgICAgICBmb3IgYyBpbiBhbGxfZmFpbHVyZV9jbGFzc2VzKCk6CisgICAg
ICAgICAgICBfY2xhc3NfZm9yX25hbWVbYy5fX25hbWVfX10gPSBjCisgICAgcmV0dXJuIF9jbGFz
c19mb3JfbmFtZVtzXSgpCisKKwogZGVmIGRldGVybWluZV9yZXN1bHRfdHlwZShmYWlsdXJlX2xp
c3QpOgogICAgICIiIlRha2VzIGEgc2V0IG9mIHRlc3RfZmFpbHVyZXMgYW5kIHJldHVybnMgd2hp
Y2ggcmVzdWx0IHR5cGUgYmVzdCBmaXRzCiAgICAgdGhlIGxpc3Qgb2YgZmFpbHVyZXMuICJCZXN0
IGZpdHMiIG1lYW5zIHdlIHVzZSB0aGUgd29yc3QgdHlwZSBvZiBmYWlsdXJlLgpAQCAtNzUsNiAr
OTUsMTAgQEAgY2xhc3MgVGVzdEZhaWx1cmUob2JqZWN0KToKICAgICAgICAgIiIiUmV0dXJucyBh
IHN0cmluZyBkZXNjcmliaW5nIHRoZSBmYWlsdXJlIGluIG1vcmUgZGV0YWlsLiIiIgogICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKKyAgICBkZWYgZHVtcHMoc2VsZik6CisgICAg
ICAgICIiIlJldHVybnMgdGhlIHN0cmluZy9KU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdEZh
aWx1cmUuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXworCiAgICAg
ZGVmIHJlc3VsdF9odG1sX291dHB1dChzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgICIiIlJldHVy
bnMgYW4gSFRNTCBzdHJpbmcgdG8gYmUgaW5jbHVkZWQgb24gdGhlIHJlc3VsdHMuaHRtbCBwYWdl
LiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCkBAIC0xMjgsNiArMTUyLDEw
IEBAIGNsYXNzIEZhaWx1cmVXaXRoVHlwZShUZXN0RmFpbHVyZSk6CiAgICAgICAgICMgRklYTUU6
IFNlZW1zIGxpa2UgYSBiYWQgaWRlYSB0byBzZXBhcmF0ZSB0aGUgZGlzcGxheSBuYW1lIGRhdGEK
ICAgICAgICAgIyBmcm9tIHRoZSBwYXRoIGRhdGEgYnkgaGFyZC1jb2RpbmcgdGhlIGRpc3BsYXkg
bmFtZSBoZXJlCiAgICAgICAgICMgYW5kIHBhc3NpbmcgaW4gdGhlIHBhdGggaW5mb3JtYXRpb24g
dmlhIG91dF9uYW1lcy4KKyAgICAgICAgIworICAgICAgICAjIEZJWE1FOiBBbHNvLCB3ZSBkb24n
dCBrbm93IGZvciBzdXJlIHRoYXQgdGhlc2UgZmlsZXMgZXhpc3QsCisgICAgICAgICMgYW5kIHdl
IHNob3VsZG4ndCBiZSBjcmVhdGluZyBsaW5rcyB0byBmaWxlcyB0aGF0IGRvbid0IGV4aXN0Cisg
ICAgICAgICMgKGZvciBleGFtcGxlLCBpZiB3ZSBkb24ndCBhY3R1YWxseSBoYXZlIHdkaWZmIG91
dHB1dCkuCiAgICAgICAgIGxpbmtzID0gWycnXQogICAgICAgICB1cmlzID0gW3NlbGYucmVsYXRp
dmVfb3V0cHV0X2ZpbGVuYW1lKGZpbGVuYW1lLCBmbikgZm9yCiAgICAgICAgICAgICAgICAgZm4g
aW4gb3V0X25hbWVzXQpAQCAtMTk2LDE0ICsyMjQsOCBAQCBjbGFzcyBGYWlsdXJlVGV4dE1pc21h
dGNoKEZhaWx1cmVXaXRoVHlwZSk6CiAgICAgIiIiVGV4dCBkaWZmIG91dHB1dCBmYWlsZWQuIiIi
CiAgICAgIyBGaWxlbmFtZSBzdWZmaXhlcyB1c2VkIGJ5IFJlc3VsdEh0bWxPdXRwdXQuCiAgICAg
IyBGSVhNRTogV2h5IGRvbid0IHdlIHVzZSB0aGUgY29uc3RhbnRzIGZyb20gVGVzdFR5cGVCYXNl
IGhlcmU/Ci0gICAgT1VUX0ZJTEVOQU1FUyA9IFsiLWFjdHVhbC50eHQiLCAiLWV4cGVjdGVkLnR4
dCIsICItZGlmZi50eHQiXQotICAgIE9VVF9GSUxFTkFNRVNfV0RJRkYgPSBbIi1hY3R1YWwudHh0
IiwgIi1leHBlY3RlZC50eHQiLCAiLWRpZmYudHh0IiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICItd2RpZmYuaHRtbCIsICItcHJldHR5LWRpZmYuaHRtbCJdCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgaGFzX3dkaWZmKToKLSAgICAgICAgRmFpbHVyZVdpdGhUeXBlLl9faW5pdF9fKHNl
bGYpCi0gICAgICAgIGlmIGhhc193ZGlmZjoKLSAgICAgICAgICAgIHNlbGYuT1VUX0ZJTEVOQU1F
UyA9IHNlbGYuT1VUX0ZJTEVOQU1FU19XRElGRgorICAgIE9VVF9GSUxFTkFNRVMgPSBbIi1hY3R1
YWwudHh0IiwgIi1leHBlY3RlZC50eHQiLCAiLWRpZmYudHh0IiwKKyAgICAgICAgICAgICAgICAg
ICAgICItd2RpZmYuaHRtbCIsICItcHJldHR5LWRpZmYuaHRtbCJdCiAKICAgICBAc3RhdGljbWV0
aG9kCiAgICAgZGVmIG1lc3NhZ2UoKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXNfdW5pdHRl
c3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2ZhaWx1cmVzX3VuaXR0ZXN0LnB5CmluZGV4IDkyZmUyNzYwYzA2YTQ1Njk0
MTdiYTgzZDEwODUzY2RmY2MyYTllYzQuLmRhYzA4Y2ZlNWI0Mjc4NmIzNmE1Mjc1Yjk4N2MzY2Fk
ZGMyYWRjZjYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXNfdW5pdHRlc3QucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9mYWlsdXJlc191bml0dGVzdC5weQpAQCAtMjgsMTMgKzI4LDE5IEBACiAKICIiIiJUZXN0cyBj
b2RlIHBhdGhzIG5vdCBjb3ZlcmVkIGJ5IHRoZSByZWd1bGFyIHVuaXQgdGVzdHMuIiIiCiAKLWZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLnRlc3RfZmFpbHVyZXMgaW1w
b3J0ICoKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlv
dXRfcGFja2FnZS50ZXN0X2ZhaWx1cmVzIGltcG9ydCAqCisKKwogY2xhc3MgVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgZGVmIGFzc2VydFJlc3VsdEh0bWwoc2VsZiwgZmFpbHVyZV9vYmop
OgogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGZhaWx1cmVfb2JqLnJlc3VsdF9odG1sX291
dHB1dCgnZm9vJyksIE5vbmUpCiAKKyAgICBkZWYgYXNzZXJ0X2Zyb21fc3RyKHNlbGYsIGNscyk6
CisgICAgICAgIG9iaiA9IGZyb21fc3RyKGNscy5fX25hbWVfXykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGlzaW5zdGFuY2Uob2JqLCBjbHMpKQorCiAgICAgZGVmIHRlc3RfY3Jhc2goc2VsZik6
CiAgICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0SHRtbChGYWlsdXJlQ3Jhc2goKSkKIApAQCAtNjMs
NiArNjksMTQgQEAgY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIGZhaWx1cmVfb2JqLnJlc3VsdF9odG1s
X291dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvby50eHQiKQogCisgICAgZGVm
IHRlc3RfZnJvbV9zdHIoc2VsZik6CisgICAgICAgIGZvciBjIGluIGFsbF9mYWlsdXJlX2NsYXNz
ZXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2Zyb21fc3RyKGMpCisKKyAgICBkZWYgdGVz
dF9kdW1wcyhzZWxmKToKKyAgICAgICAgZm9yIGMgaW4gYWxsX2ZhaWx1cmVfY2xhc3NlcygpOgor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9fbmFtZV9fLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjKCkuZHVtcHMoKSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
ICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0cy5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rf
cmVzdWx0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGViNDZkMDljZWRiNjJkOTc1ODBhMDIxMDE2YzYxMzBh
OGU0ODljCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzLnB5CkBAIC0wLDAgKzEsNzgg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0eS5zaW1wbGVq
c29uIGFzIGpzb24KKworaW1wb3J0IHRlc3RfZmFpbHVyZXMKKworCitkZWYgZnJvbV9zdHIoc3Ry
KToKKyAgICBkY3QgPSBqc29uLmxvYWRzKHN0cikKKyAgICByZXR1cm4gVGVzdFJlc3VsdChkY3Rb
J2ZpbGVuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBtYXAodGVzdF9mYWlsdXJlcy5m
cm9tX3N0ciwgZGN0WydmYWlsdXJlcyddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRjdFsn
dGVzdF9ydW5fdGltZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgZGN0Wyd0b3RhbF90aW1l
X2Zvcl9hbGxfZGlmZnMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRjdFsndGltZV9mb3Jf
ZGlmZnMnXSkKKworCitjbGFzcyBUZXN0UmVzdWx0KG9iamVjdCk6CisgICAgIiIiRGF0YSBvYmpl
Y3QgY29udGFpbmluZyB0aGUgcmVzdWx0cyBvZiBhIHNpbmdsZSB0ZXN0LiIiIgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBmYWlsdXJlcywgdGVzdF9ydW5fdGltZSwKKyAgICAg
ICAgICAgICAgICAgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZzLCB0aW1lX2Zvcl9kaWZmcyk6Cisg
ICAgICAgIHNlbGYuZmFpbHVyZXMgPSBmYWlsdXJlcworICAgICAgICBzZWxmLmZpbGVuYW1lID0g
ZmlsZW5hbWUKKyAgICAgICAgc2VsZi50ZXN0X3J1bl90aW1lID0gdGVzdF9ydW5fdGltZQorICAg
ICAgICBzZWxmLnRpbWVfZm9yX2RpZmZzID0gdGltZV9mb3JfZGlmZnMKKyAgICAgICAgc2VsZi50
b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMgPSB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMKKyAgICAg
ICAgc2VsZi50eXBlID0gdGVzdF9mYWlsdXJlcy5kZXRlcm1pbmVfcmVzdWx0X3R5cGUoZmFpbHVy
ZXMpCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIChzZWxm
LmZpbGVuYW1lID09IG90aGVyLmZpbGVuYW1lIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuZmFp
bHVyZXMgPT0gb3RoZXIuZmFpbHVyZXMgYW5kCisgICAgICAgICAgICAgICAgc2VsZi50ZXN0X3J1
bl90aW1lID09IG90aGVyLnRlc3RfcnVuX3RpbWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi50
aW1lX2Zvcl9kaWZmcyA9PSBvdGhlci50aW1lX2Zvcl9kaWZmcyBhbmQKKyAgICAgICAgICAgICAg
ICBzZWxmLnRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcyA9PSBvdGhlci50b3RhbF90aW1lX2Zvcl9h
bGxfZGlmZnMpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8VGVz
dFJlc3VsdCcgKyBzZWxmLmR1bXBzKCkgKyAnPicKKworICAgIGRlZiBkdW1wcyhzZWxmLCAqKmt3
YXJncyk6CisgICAgICAgIGNsYXNzIF9UZXN0UmVzdWx0RW5jb2Rlcihqc29uLkpTT05FbmNvZGVy
KToKKyAgICAgICAgICAgIGRlZiBkZWZhdWx0KHNlbGYsIG9iaik6CisgICAgICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZShvYmosIFRlc3RSZXN1bHQpOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVuYW1lJzogb2JqLmZpbGVuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzJzogW2YuZHVtcHMoKSBmb3IgZiBpbiBv
YmouZmFpbHVyZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RfcnVuX3RpbWUnOiBv
YmoudGVzdF9ydW5fdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aW1lX2Zvcl9kaWZm
cyc6IG9iai50aW1lX2Zvcl9kaWZmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICd0b3RhbF90
aW1lX2Zvcl9hbGxfZGlmZnMnOiBvYmoudG90YWxfdGltZV9mb3JfYWxsX2RpZmZzfQorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc29uLkpTT05FbmNv
ZGVyLmRlZmF1bHQoc2VsZikKKworICAgICAgICByZXR1cm4ganNvbi5kdW1wcyhzZWxmLCBjbHM9
X1Rlc3RSZXN1bHRFbmNvZGVyLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0c191
bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0c191bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMmU2NjY0
NjE5ZjM4NjEzYmYxMGFiMDUwMzk1NWJkZjRhZjJjYTJlCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9yZXN1bHRzX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNDUgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdF9yZXN1bHRzIGltcG9ydCAqCisKKworY2xhc3Mg
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfanNvbihzZWxmKToKKyAgICAg
ICAgcmVzdWx0ID0gVGVzdFJlc3VsdChmaWxlbmFtZT0nZm9vJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWlsdXJlcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
X3J1bl90aW1lPTEuMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF90aW1lX2Zv
cl9hbGxfZGlmZnM9MC41LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVfZm9yX2Rp
ZmZzPTAuNSkKKyAgICAgICAganNvbl9zdHIgPSAneyJmYWlsdXJlcyI6W10sImZpbGVuYW1lIjoi
Zm9vIiwidGVzdF9ydW5fdGltZSI6MS4xMDAsInRpbWVfZm9yX2RpZmZzIjowLjUwMCwidG90YWxf
dGltZV9mb3JfYWxsX2RpZmZzIjowLjUwMH0nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJv
bV9zdHIoanNvbl9zdHIpLCByZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJvbV9z
dHIocmVzdWx0LmR1bXBzKCkpLCByZXN1bHQpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCAxNGNm
OTg3NDBmMTA4MDRmOWMyZWNhODVlZWQxZWY4NjE0MDYzZmE3Li5hYzBmODBmNWY5YmUwMzg0Njk5
OTM0ZmM1ZDI1NmEzNTdiZjhkY2IyIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTY5
LDYgKzY5LDcgQEAgZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQganNvbl9sYXlvdXRfcmVzdWx0
c19nZW5lcmF0b3IKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHByaW50aW5nCiBmcm9tIGxh
eW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSBsYXlvdXRfcGFja2Fn
ZSBpbXBvcnQgdGVzdF9mYWlsdXJlcworZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9y
ZXN1bHRzCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3VsdHNfdXBsb2FkZXIK
IGZyb20gdGVzdF90eXBlcyBpbXBvcnQgaW1hZ2VfZGlmZgogZnJvbSB0ZXN0X3R5cGVzIGltcG9y
dCB0ZXh0X2RpZmYKQEAgLTQ1Nyw4ICs0NTgsOCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAg
ICAgICAgIyBzdWJ0cmFjdGVkIG91dCBvZiBzZWxmLl90ZXN0X2ZpbGVzLCBhYm92ZSksIGJ1dCB3
ZSBzdHViIG91dCB0aGUKICAgICAgICAgICAgICMgcmVzdWx0cyBoZXJlIHNvIHRoZSBzdGF0aXN0
aWNzIGNhbiByZW1haW4gYWNjdXJhdGUuCiAgICAgICAgICAgICBmb3IgdGVzdCBpbiBza2lwX2No
dW5rOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLlRl
c3RSZXN1bHQodGVzdCwKLSAgICAgICAgICAgICAgICAgICAgZmFpbHVyZXM9W10sIHRlc3RfcnVu
X3RpbWU9MCwgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZzPTAsCisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQodGVzdCwgZmFpbHVyZXM9W10sCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RfcnVuX3RpbWU9MCwgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZzPTAs
CiAgICAgICAgICAgICAgICAgICAgIHRpbWVfZm9yX2RpZmZzPTApCiAgICAgICAgICAgICAgICAg
cmVzdWx0LnR5cGUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQCiAgICAgICAgICAgICAgICAgcmVz
dWx0X3N1bW1hcnkuYWRkKHJlc3VsdCwgZXhwZWN0ZWQ9VHJ1ZSkKQEAgLTg1Miw3ICs4NTMsNyBA
QCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAiIiJVcGRhdGUgdGhlIHN1bW1hcnkgYW5kIHBy
aW50IHJlc3VsdHMgd2l0aCBhbnkgY29tcGxldGVkIHRlc3RzLiIiIgogICAgICAgICB3aGlsZSBU
cnVlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX3Jl
c3VsdF9xdWV1ZS5nZXRfbm93YWl0KCkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0X3Jl
c3VsdHMuZnJvbV9zdHIoc2VsZi5fcmVzdWx0X3F1ZXVlLmdldF9ub3dhaXQoKSkKICAgICAgICAg
ICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKICAgICAgICAgICAgICAgICByZXR1cm4KIApAQCAtMTI5
Myw3ICsxMjk0LDggQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgICAgIHBhZ2UgKz0gdSI8
cD48YSBocmVmPSclcyc+JXM8L2E+PGJyIC8+XG4iICUgKHRlc3RfdXJsLCB0ZXN0X25hbWUpCiAg
ICAgICAgICAgICB0ZXN0X2ZhaWx1cmVzID0gZmFpbHVyZXMuZ2V0KHRlc3RfZmlsZSwgW10pCiAg
ICAgICAgICAgICBmb3IgZmFpbHVyZSBpbiB0ZXN0X2ZhaWx1cmVzOgotICAgICAgICAgICAgICAg
IHBhZ2UgKz0gdSImbmJzcDsmbmJzcDslczxici8+IiAlIGZhaWx1cmUucmVzdWx0X2h0bWxfb3V0
cHV0KHRlc3RfbmFtZSkKKyAgICAgICAgICAgICAgICBwYWdlICs9ICh1IiZuYnNwOyZuYnNwOyVz
PGJyLz4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlLnJlc3VsdF9odG1sX291
dHB1dCh0ZXN0X25hbWUpKQogICAgICAgICAgICAgcGFnZSArPSAiPC9wPlxuIgogICAgICAgICBw
YWdlICs9ICI8L2JvZHk+PC9odG1sPlxuIgogICAgICAgICByZXR1cm4gcGFnZQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90
ZXh0X2RpZmYucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90
ZXN0X3R5cGVzL3RleHRfZGlmZi5weQppbmRleCBiMWY2MjFlNWI0NWU1ODI0NjYyYjAzMTM5ZmMz
N2I0YTIzN2QwMWE5Li40YzMyZjBkMDIzNDczYzYzYjhlNDc0Zjc3MDkzYTBmZGZhMGFhMzM3IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0
X3R5cGVzL3RleHRfZGlmZi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlmZi5weQpAQCAtODksNiArODksNiBAQCBjbGFz
cyBUZXN0VGV4dERpZmYodGVzdF90eXBlX2Jhc2UuVGVzdFR5cGVCYXNlKToKICAgICAgICAgICAg
IGlmIGV4cGVjdGVkID09ICcnOgogICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0
X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nUmVzdWx0KCkpCiAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUZXh0TWlz
bWF0Y2goVHJ1ZSkpCisgICAgICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVy
ZXMuRmFpbHVyZVRleHRNaXNtYXRjaCgpKQogCiAgICAgICAgIHJldHVybiBmYWlsdXJlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72396</attachid>
            <date>2010-10-29 14:39:50 -0700</date>
            <delta_ts>2010-10-29 15:42:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48616-20101029143949.patch</filename>
            <type>text/plain</type>
            <size>20319</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlNjcyMTdhNWMzMjI5MTUwNjBiNzQ5OGNmYzYxMDcyZjY1YzA4MTQ0Li5jOWYyZjU3
NjljZmU2MTgxNGMwNWI3OWE0ZThjNGYyN2I3MWQ0YjYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTAtMTAtMjggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNoYW5nZSBUZXN0UmVzdWx0cyB0byBiZSBzZXJpYWxpemFibGUKKworICAgICAgICBJ
biBwcmVwYXJhdGlvbiBmb3IgY2hhbmdpbmcgbmV3LXJ1bi13ZWJraXQtdGVzdHMgZnJvbQorICAg
ICAgICBtdWx0aXRocmVhZGVkIHRvIG11bHRpcHJvY2Vzcywgd2UgbmVlZCB0byBtYWtlIHN1cmUg
dGhlIGRhdGEKKyAgICAgICAgZ29pbmcgYmV0d2VlbiB0aGUgdGhyZWFkcyBpcyBlYXNpbHkgc2Vy
aWFsaXplZCBvdmVyIGEgc29ja2V0LgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgc2VyaWFs
aXphdGlvbi9waWNrbGluZyBmb3IgdGhlIFRlc3RSZXN1bHRzIGFuZAorICAgICAgICBUZXN0RmFp
bHVyZSBvYmplY3RzICh1c2luZyBjUGlja2xlKS4KKworICAgICAgICBUaGUgVGVzdEZhaWx1cmUg
b2JqZWN0cyBpbmNsdWRlZCBhICJoYXNfd2RpZmYiIGZsYWcgZm9yIFRleHQKKyAgICAgICAgcmVz
dWx0cywgYnV0IHRoZSBmbGFnIHdhc24ndCBiZWluZyB1c2VkLCBzbyBJJ3ZlIHJlbW92ZWQgaXQs
CisgICAgICAgIHNpbXBsaWZ5aW5nIHRoZSBzdGF0ZSB0byBiYXNpY2FsbHkgYSBzZXQgb2YgZW51
bSBvYmplY3RzIHdpdGgKKyAgICAgICAgYXNzb2NpYXRlZCBtZXRob2RzLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODYxNgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJf
dHJlZV90aHJlYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X2ZhaWx1cmVzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0cy5weTogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRz
X3VuaXR0ZXN0LnB5OkFkZGVkLiAKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGV4dF9kaWZmLnB5OgorCiAyMDEwLTEwLTI3ICBFcmljIFNl
aWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFp
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90
cmVlX3RocmVhZC5weQppbmRleCBhYjEwZTBhOTUyZmI4MzI1MzQzN2Y5ZDYzOGMxNzNjYWViMzY5
YzhjLi4zZTNiYTBiMTY3NzA0NTAwMzZmNzMxNWFjMTYxZWYxZmI5YjdkNzM1IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVh
ZC5weQpAQCAtNTEsNiArNTEsNyBAQCBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogCiBp
bXBvcnQgdGVzdF9mYWlsdXJlcworaW1wb3J0IHRlc3RfcmVzdWx0cwogCiBfbG9nID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS4iCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgImR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkIikKQEAgLTEzMyw4
ICsxMzQsOCBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5mbywg
dGVzdF90eXBlcywgdGVzdF9hcmdzLAogICAgICAgICAgICAgdGltZS50aW1lKCkgLSBzdGFydF9k
aWZmX3RpbWUpCiAKICAgICB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMgPSB0aW1lLnRpbWUoKSAt
IHN0YXJ0X2RpZmZfdGltZQotICAgIHJldHVybiBUZXN0UmVzdWx0KHRlc3RfaW5mby5maWxlbmFt
ZSwgZmFpbHVyZXMsIHRlc3RfcnVuX3RpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgdG90YWxf
dGltZV9mb3JfYWxsX2RpZmZzLCB0aW1lX2Zvcl9kaWZmcykKKyAgICByZXR1cm4gdGVzdF9yZXN1
bHRzLlRlc3RSZXN1bHQodGVzdF9pbmZvLmZpbGVuYW1lLCBmYWlsdXJlcywgdGVzdF9ydW5fdGlt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGltZV9mb3JfYWxs
X2RpZmZzLCB0aW1lX2Zvcl9kaWZmcykKIAogCiBkZWYgX3BhZF90aW1lb3V0KHRpbWVvdXQpOgpA
QCAtMTU5LDE4ICsxNjAsNiBAQCBkZWYgX2ltYWdlX2hhc2godGVzdF9pbmZvLCB0ZXN0X2FyZ3Ms
IG9wdGlvbnMpOgogICAgIHJldHVybiB0ZXN0X2luZm8uaW1hZ2VfaGFzaCgpCiAKIAotY2xhc3Mg
VGVzdFJlc3VsdChvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBm
YWlsdXJlcywgdGVzdF9ydW5fdGltZSwKLSAgICAgICAgICAgICAgICAgdG90YWxfdGltZV9mb3Jf
YWxsX2RpZmZzLCB0aW1lX2Zvcl9kaWZmcyk6Ci0gICAgICAgIHNlbGYuZmFpbHVyZXMgPSBmYWls
dXJlcwotICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKLSAgICAgICAgc2VsZi50ZXN0
X3J1bl90aW1lID0gdGVzdF9ydW5fdGltZQotICAgICAgICBzZWxmLnRpbWVfZm9yX2RpZmZzID0g
dGltZV9mb3JfZGlmZnMKLSAgICAgICAgc2VsZi50b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMgPSB0
b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMKLSAgICAgICAgc2VsZi50eXBlID0gdGVzdF9mYWlsdXJl
cy5kZXRlcm1pbmVfcmVzdWx0X3R5cGUoZmFpbHVyZXMpCi0KLQogY2xhc3MgU2luZ2xlVGVzdFRo
cmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKICAgICAiIiJUaHJlYWQgd3JhcHBlciBmb3IgcnVubmlu
ZyBhIHNpbmdsZSB0ZXN0IGZpbGUuIiIiCiAKQEAgLTI2NCw4ICsyNTMsOCBAQCBjbGFzcyBUZXN0
U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgICBvcHRpb25zOiBjb21tYW5k
IGxpbmUgb3B0aW9ucyBhcmd1bWVudCBmcm9tIG9wdHBhcnNlCiAgICAgICAgICAgZmlsZW5hbWVf
bGlzdF9xdWV1ZTogQSB0aHJlYWQgc2FmZSBRdWV1ZSBjbGFzcyB0aGF0IGNvbnRhaW5zIGxpc3Rz
CiAgICAgICAgICAgICAgIG9mIHR1cGxlcyBvZiAoZmlsZW5hbWUsIHVyaSkgcGFpcnMuCi0gICAg
ICAgICAgcmVzdWx0X3F1ZXVlOiBBIHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNzIHRoYXQgd2lsbCBj
b250YWluIHR1cGxlcyBvZgotICAgICAgICAgICAgICAodGVzdCwgZmFpbHVyZSBsaXN0cykgZm9y
IHRoZSB0ZXN0IHJlc3VsdHMuCisgICAgICAgICAgcmVzdWx0X3F1ZXVlOiBBIHRocmVhZCBzYWZl
IFF1ZXVlIGNsYXNzIHRoYXQgd2lsbCBjb250YWluCisgICAgICAgICAgICAgIHNlcmlhbGl6ZWQg
VGVzdFJlc3VsdCBvYmplY3RzLgogICAgICAgICAgIHRlc3RfdHlwZXM6IEEgbGlzdCBvZiBUZXN0
VHlwZSBvYmplY3RzIHRvIHJ1biB0aGUgdGVzdCBvdXRwdXQKICAgICAgICAgICAgICAgYWdhaW5z
dC4KICAgICAgICAgICB0ZXN0X2FyZ3M6IEEgVGVzdEFyZ3VtZW50cyBvYmplY3QgdG8gcGFzcyB0
byBlYWNoIFRlc3RUeXBlLgpAQCAtNDQ5LDcgKzQzOCw3IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVh
ZChXYXRjaGFibGVUaHJlYWQpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBf
bG9nLmRlYnVnKCIlcyAlcyBwYXNzZWQiICUgKHNlbGYuZ2V0TmFtZSgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1l
KSkpCi0gICAgICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUucHV0KHJlc3VsdCkKKyAgICAgICAg
ICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZS5wdXQocmVzdWx0LmR1bXBzKCkpCiAKICAgICAgICAgICAg
IGlmIGJhdGNoX3NpemUgPiAwIGFuZCBiYXRjaF9jb3VudCA+IGJhdGNoX3NpemU6CiAgICAgICAg
ICAgICAgICAgIyBCb3VuY2UgdGhlIHNoZWxsIGFuZCByZXNldCBjb3VudC4KQEAgLTUwNSw5ICs0
OTQsOCBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAg
ICAgIGZhaWx1cmVzID0gW10KICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0Nhbm5vdCBnZXQgcmVz
dWx0cyBvZiB0ZXN0OiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2luZm8uZmls
ZW5hbWUpCi0gICAgICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0KHRlc3RfaW5mby5maWxlbmFt
ZSwgZmFpbHVyZXM9W10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcnVu
X3RpbWU9MCwgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZzPTAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWVfZm9yX2RpZmZzPTApCisgICAgICAgICAgICByZXN1bHQgPSB0ZXN0
X3Jlc3VsdHMuVGVzdFJlc3VsdCh0ZXN0X2luZm8uZmlsZW5hbWUsIGZhaWx1cmVzPVtdLAorICAg
ICAgICAgICAgICAgIHRlc3RfcnVuX3RpbWU9MCwgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZzPTAs
IHRpbWVfZm9yX2RpZmZzPTApCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC01MTcsOSAr
NTA1LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAg
IEFyZ3M6CiAgICAgICAgICAgdGVzdF9pbmZvOiBPYmplY3QgY29udGFpbmluZyB0aGUgdGVzdCBm
aWxlbmFtZSwgdXJpIGFuZCB0aW1lb3V0CiAKLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBB
IGxpc3Qgb2YgVGVzdEZhaWx1cmUgb2JqZWN0cyBkZXNjcmliaW5nIHRoZSBlcnJvci4KLQorICAg
ICAgICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2JqZWN0LgogICAgICAgICAiIiIKICAgICAgICAg
c2VsZi5fZW5zdXJlX2R1bXBfcmVuZGVyX3RyZWVfaXNfcnVubmluZygpCiAgICAgICAgICMgVGhl
IHBpeGVsX2hhc2ggaXMgdXNlZCB0byBhdm9pZCBkb2luZyBhbiBpbWFnZSBkdW1wIGlmIHRoZQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQpp
bmRleCAwMzQ0YWE3YWM0MDhhZWIwODI0MWFhM2IwZDlmNzEyMGRjNDFiYTcwLi45YTBmNGVlYTIw
OGQyMWNmODhlZjhkNWVlYWYxNDgzYTUxMTYxOGUzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0
dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQpAQCAtNDAsNyArNDAsNyBAQCBmcm9t
IHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgYXJyYXlfc3RyZWFtCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGlt
cG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBv
cnQgcHJpbnRpbmcKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGlt
cG9ydCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
bGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKQEAgLTE0MSw5
ICsxNDEsOSBAQCBjbGFzcyAgVGVzdHByaW50ZXIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBlbGlmIHJlc3VsdF90eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIOgogICAgICAgICAg
ICAgZmFpbHVyZXMgPSBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2goKV0KICAgICAgICAgcGF0
aCA9IG9zLnBhdGguam9pbihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgdGVzdCkKLSAg
ICAgICAgcmV0dXJuIGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLlRlc3RSZXN1bHQocGF0aCwgZmFp
bHVyZXMsIHJ1bl90aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnM9MCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV9mb3JfZGlmZnM9MCkKKyAgICAg
ICAgcmV0dXJuIHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHBhdGgsIGZhaWx1cmVzLCBydW5fdGlt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3RpbWVfZm9y
X2FsbF9kaWZmcz0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlt
ZV9mb3JfZGlmZnM9MCkKIAogICAgIGRlZiBnZXRfcmVzdWx0X3N1bW1hcnkoc2VsZiwgdGVzdHMs
IGV4cGVjdGF0aW9uc19zdHIpOgogICAgICAgICB0ZXN0X3BhdGhzID0gW29zLnBhdGguam9pbihz
ZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgdGVzdCkgZm9yCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X2ZhaWx1cmVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weQppbmRleCAzNDBkMDc1M2JiMTBmM2E3OTVl
YzhiODg3M2FiZjJiODFiMmYzZjM1Li4xYmNkYTFmYjc5NzlhMjhhZjkyYmVmNzhkZWJkZjk2YmVm
ODdiYzhlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMu
cHkKQEAgLTMyLDYgKzMyLDE1IEBACiBpbXBvcnQgb3MKIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9u
cwogCitpbXBvcnQgY1BpY2tsZQorCisKK2RlZiBhbGxfZmFpbHVyZV9jbGFzc2VzKCk6CisgICAg
cmV0dXJuIFtGYWlsdXJlVGltZW91dCwgRmFpbHVyZUNyYXNoLCBGYWlsdXJlTWlzc2luZ1Jlc3Vs
dCwKKyAgICAgICAgICAgIEZhaWx1cmVUZXh0TWlzbWF0Y2gsIEZhaWx1cmVNaXNzaW5nSW1hZ2VI
YXNoLAorICAgICAgICAgICAgRmFpbHVyZU1pc3NpbmdJbWFnZSwgRmFpbHVyZUltYWdlSGFzaE1p
c21hdGNoLAorICAgICAgICAgICAgRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdF0KKwogCiBkZWYg
ZGV0ZXJtaW5lX3Jlc3VsdF90eXBlKGZhaWx1cmVfbGlzdCk6CiAgICAgIiIiVGFrZXMgYSBzZXQg
b2YgdGVzdF9mYWlsdXJlcyBhbmQgcmV0dXJucyB3aGljaCByZXN1bHQgdHlwZSBiZXN0IGZpdHMK
QEAgLTcxLDEwICs4MCwyMiBAQCBjbGFzcyBUZXN0RmFpbHVyZShvYmplY3QpOgogICAgICIiIkFi
c3RyYWN0IGJhc2UgY2xhc3MgdGhhdCBkZWZpbmVzIHRoZSBmYWlsdXJlIGludGVyZmFjZS4iIiIK
IAogICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbG9hZHMocyk6CisgICAgICAgICIiIkNyZWF0
ZXMgYSBUZXN0RmFpbHVyZSBvYmplY3QgZnJvbSB0aGUgc3BlY2lmaWVkIHN0cmluZy4iIiIKKyAg
ICAgICAgcmV0dXJuIGNQaWNrbGUubG9hZHMocykKKworICAgIEBzdGF0aWNtZXRob2QKICAgICBk
ZWYgbWVzc2FnZSgpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhl
IGZhaWx1cmUgaW4gbW9yZSBkZXRhaWwuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IKIAorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5fX2NsYXNzX18uX19uYW1lX18gPT0gb3RoZXIuX19jbGFzc19fLl9fbmFtZV9fCisKKyAgICBk
ZWYgZHVtcHMoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgdGhlIHN0cmluZy9KU09OIHJlcHJl
c2VudGF0aW9uIG9mIGEgVGVzdEZhaWx1cmUuIiIiCisgICAgICAgIHJldHVybiBjUGlja2xlLmR1
bXBzKHNlbGYpCisKICAgICBkZWYgcmVzdWx0X2h0bWxfb3V0cHV0KHNlbGYsIGZpbGVuYW1lKToK
ICAgICAgICAgIiIiUmV0dXJucyBhbiBIVE1MIHN0cmluZyB0byBiZSBpbmNsdWRlZCBvbiB0aGUg
cmVzdWx0cy5odG1sIHBhZ2UuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IK
QEAgLTEyOCw2ICsxNDksMTAgQEAgY2xhc3MgRmFpbHVyZVdpdGhUeXBlKFRlc3RGYWlsdXJlKToK
ICAgICAgICAgIyBGSVhNRTogU2VlbXMgbGlrZSBhIGJhZCBpZGVhIHRvIHNlcGFyYXRlIHRoZSBk
aXNwbGF5IG5hbWUgZGF0YQogICAgICAgICAjIGZyb20gdGhlIHBhdGggZGF0YSBieSBoYXJkLWNv
ZGluZyB0aGUgZGlzcGxheSBuYW1lIGhlcmUKICAgICAgICAgIyBhbmQgcGFzc2luZyBpbiB0aGUg
cGF0aCBpbmZvcm1hdGlvbiB2aWEgb3V0X25hbWVzLgorICAgICAgICAjCisgICAgICAgICMgRklY
TUU6IEFsc28sIHdlIGRvbid0IGtub3cgZm9yIHN1cmUgdGhhdCB0aGVzZSBmaWxlcyBleGlzdCwK
KyAgICAgICAgIyBhbmQgd2Ugc2hvdWxkbid0IGJlIGNyZWF0aW5nIGxpbmtzIHRvIGZpbGVzIHRo
YXQgZG9uJ3QgZXhpc3QKKyAgICAgICAgIyAoZm9yIGV4YW1wbGUsIGlmIHdlIGRvbid0IGFjdHVh
bGx5IGhhdmUgd2RpZmYgb3V0cHV0KS4KICAgICAgICAgbGlua3MgPSBbJyddCiAgICAgICAgIHVy
aXMgPSBbc2VsZi5yZWxhdGl2ZV9vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsIGZuKSBmb3IKICAg
ICAgICAgICAgICAgICBmbiBpbiBvdXRfbmFtZXNdCkBAIC0xOTYsMTQgKzIyMSw4IEBAIGNsYXNz
IEZhaWx1cmVUZXh0TWlzbWF0Y2goRmFpbHVyZVdpdGhUeXBlKToKICAgICAiIiJUZXh0IGRpZmYg
b3V0cHV0IGZhaWxlZC4iIiIKICAgICAjIEZpbGVuYW1lIHN1ZmZpeGVzIHVzZWQgYnkgUmVzdWx0
SHRtbE91dHB1dC4KICAgICAjIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgdXNlIHRoZSBjb25zdGFudHMg
ZnJvbSBUZXN0VHlwZUJhc2UgaGVyZT8KLSAgICBPVVRfRklMRU5BTUVTID0gWyItYWN0dWFsLnR4
dCIsICItZXhwZWN0ZWQudHh0IiwgIi1kaWZmLnR4dCJdCi0gICAgT1VUX0ZJTEVOQU1FU19XRElG
RiA9IFsiLWFjdHVhbC50eHQiLCAiLWV4cGVjdGVkLnR4dCIsICItZGlmZi50eHQiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIi13ZGlmZi5odG1sIiwgIi1wcmV0dHktZGlmZi5odG1sIl0K
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYXNfd2RpZmYpOgotICAgICAgICBGYWlsdXJlV2l0
aFR5cGUuX19pbml0X18oc2VsZikKLSAgICAgICAgaWYgaGFzX3dkaWZmOgotICAgICAgICAgICAg
c2VsZi5PVVRfRklMRU5BTUVTID0gc2VsZi5PVVRfRklMRU5BTUVTX1dESUZGCisgICAgT1VUX0ZJ
TEVOQU1FUyA9IFsiLWFjdHVhbC50eHQiLCAiLWV4cGVjdGVkLnR4dCIsICItZGlmZi50eHQiLAor
ICAgICAgICAgICAgICAgICAgICAgIi13ZGlmZi5odG1sIiwgIi1wcmV0dHktZGlmZi5odG1sIl0K
IAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgbWVzc2FnZSgpOgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9mYWlsdXJlc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXNfdW5pdHRlc3QucHkKaW5kZXgg
OTJmZTI3NjBjMDZhNDU2OTQxN2JhODNkMTA4NTNjZGZjYzJhOWVjNC4uN2IyNGEyOTgwOWNmOTEx
MDI4Y2U1MDIzM2NmMDhmODZjNmFhOGQ0MSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlc191bml0
dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzX3VuaXR0ZXN0LnB5CkBAIC0yOCwxMyArMjgsMjIg
QEAKIAogIiIiIlRlc3RzIGNvZGUgcGF0aHMgbm90IGNvdmVyZWQgYnkgdGhlIHJlZ3VsYXIgdW5p
dCB0ZXN0cy4iIiIKIAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2Uu
dGVzdF9mYWlsdXJlcyBpbXBvcnQgKgogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLnRlc3RfZmFpbHVyZXMgaW1wb3J0ICoKKworCiBj
bGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgYXNzZXJ0UmVzdWx0SHRtbChz
ZWxmLCBmYWlsdXJlX29iaik6CiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZmFpbHVyZV9v
YmoucmVzdWx0X2h0bWxfb3V0cHV0KCdmb28nKSwgTm9uZSkKIAorICAgIGRlZiBhc3NlcnRfbG9h
ZHMoc2VsZiwgY2xzKToKKyAgICAgICAgZmFpbHVyZV9vYmogPSBjbHMoKQorICAgICAgICBzID0g
ZmFpbHVyZV9vYmouZHVtcHMoKQorICAgICAgICBuZXdfZmFpbHVyZV9vYmogPSBUZXN0RmFpbHVy
ZS5sb2FkcyhzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZhaWx1cmVfb2JqLCBuZXdfZmFp
bHVyZV9vYmopCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG5ld19mYWlsdXJl
X29iaiwgY2xzKSkKKwogICAgIGRlZiB0ZXN0X2NyYXNoKHNlbGYpOgogICAgICAgICBzZWxmLmFz
c2VydFJlc3VsdEh0bWwoRmFpbHVyZUNyYXNoKCkpCiAKQEAgLTYzLDYgKzcyLDkgQEAgY2xhc3Mg
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdElt
cGxlbWVudGVkRXJyb3IsIGZhaWx1cmVfb2JqLnJlc3VsdF9odG1sX291dHB1dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZvby50eHQiKQogCisgICAgZGVmIHRlc3RfbG9hZHMoc2VsZik6
CisgICAgICAgIGZvciBjIGluIGFsbF9mYWlsdXJlX2NsYXNzZXMoKToKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0X2xvYWRzKGMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5p
dHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHMucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHMu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTRkNmFhZGIxNzIzOWY0NjA1M2RmNzlkNGZmZGY1MjZhYWMyNmEyZAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0cy5weQpAQCAtMCwwICsxLDU4IEBACisjIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworaW1wb3J0IGNQaWNrbGUKKworaW1wb3J0IHRlc3RfZmFpbHVyZXMKKwor
CitjbGFzcyBUZXN0UmVzdWx0KG9iamVjdCk6CisgICAgIiIiRGF0YSBvYmplY3QgY29udGFpbmlu
ZyB0aGUgcmVzdWx0cyBvZiBhIHNpbmdsZSB0ZXN0LiIiIgorCisgICAgQHN0YXRpY21ldGhvZAor
ICAgIGRlZiBsb2FkcyhzdHIpOgorICAgICAgICByZXR1cm4gY1BpY2tsZS5sb2FkcyhzdHIpCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIGZhaWx1cmVzLCB0ZXN0X3J1bl90aW1l
LAorICAgICAgICAgICAgICAgICB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMsIHRpbWVfZm9yX2Rp
ZmZzKToKKyAgICAgICAgc2VsZi5mYWlsdXJlcyA9IGZhaWx1cmVzCisgICAgICAgIHNlbGYuZmls
ZW5hbWUgPSBmaWxlbmFtZQorICAgICAgICBzZWxmLnRlc3RfcnVuX3RpbWUgPSB0ZXN0X3J1bl90
aW1lCisgICAgICAgIHNlbGYudGltZV9mb3JfZGlmZnMgPSB0aW1lX2Zvcl9kaWZmcworICAgICAg
ICBzZWxmLnRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcyA9IHRvdGFsX3RpbWVfZm9yX2FsbF9kaWZm
cworICAgICAgICBzZWxmLnR5cGUgPSB0ZXN0X2ZhaWx1cmVzLmRldGVybWluZV9yZXN1bHRfdHlw
ZShmYWlsdXJlcykKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1
cm4gKHNlbGYuZmlsZW5hbWUgPT0gb3RoZXIuZmlsZW5hbWUgYW5kCisgICAgICAgICAgICAgICAg
c2VsZi5mYWlsdXJlcyA9PSBvdGhlci5mYWlsdXJlcyBhbmQKKyAgICAgICAgICAgICAgICBzZWxm
LnRlc3RfcnVuX3RpbWUgPT0gb3RoZXIudGVzdF9ydW5fdGltZSBhbmQKKyAgICAgICAgICAgICAg
ICBzZWxmLnRpbWVfZm9yX2RpZmZzID09IG90aGVyLnRpbWVfZm9yX2RpZmZzIGFuZAorICAgICAg
ICAgICAgICAgIHNlbGYudG90YWxfdGltZV9mb3JfYWxsX2RpZmZzID09IG90aGVyLnRvdGFsX3Rp
bWVfZm9yX2FsbF9kaWZmcykKKworICAgIGRlZiBkdW1wcyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IGNQaWNrbGUuZHVtcHMoc2VsZikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0c191bml0dGVzdC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfcmVzdWx0c191bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTBjN2MxNWZmZDY5YzZj
NTZlZjliN2Q1OWNlNTk4YTA3YTY5OTk1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRz
X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNDcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQg
dW5pdHRlc3QKKworZnJvbSB0ZXN0X3Jlc3VsdHMgaW1wb3J0IFRlc3RSZXN1bHQKKworCitjbGFz
cyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9sb2FkcyhzZWxmKToKKyAg
ICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdChmaWxlbmFtZT0nZm9vJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmYWlsdXJlcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X3J1bl90aW1lPTEuMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF90aW1l
X2Zvcl9hbGxfZGlmZnM9MC41LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVfZm9y
X2RpZmZzPTAuNSkKKyAgICAgICAgcyA9IHJlc3VsdC5kdW1wcygpCisgICAgICAgIG5ld19yZXN1
bHQgPSBUZXN0UmVzdWx0LmxvYWRzKHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X3Jl
c3VsdCwgcmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShuZXdfcmVz
dWx0LCBUZXN0UmVzdWx0KSkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0
dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDE0Y2Y5ODc0MGYxMDgw
NGY5YzJlY2E4NWVlZDFlZjg2MTQwNjNmYTcuLjM5MmU2MDM3YzhkYmZjZTAxZTNkNWNkZWU1MTRm
MDczZjhjYTFlOTYgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtNjksNiArNjksNyBA
QCBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRv
cgogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgcHJpbnRpbmcKIGZyb20gbGF5b3V0X3BhY2th
Z2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0
ZXN0X2ZhaWx1cmVzCitmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3VsdHMKIGZy
b20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0c191cGxvYWRlcgogZnJvbSB0ZXN0
X3R5cGVzIGltcG9ydCBpbWFnZV9kaWZmCiBmcm9tIHRlc3RfdHlwZXMgaW1wb3J0IHRleHRfZGlm
ZgpAQCAtNDU3LDcgKzQ1OCw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICAjIHN1
YnRyYWN0ZWQgb3V0IG9mIHNlbGYuX3Rlc3RfZmlsZXMsIGFib3ZlKSwgYnV0IHdlIHN0dWIgb3V0
IHRoZQogICAgICAgICAgICAgIyByZXN1bHRzIGhlcmUgc28gdGhlIHN0YXRpc3RpY3MgY2FuIHJl
bWFpbiBhY2N1cmF0ZS4KICAgICAgICAgICAgIGZvciB0ZXN0IGluIHNraXBfY2h1bms6Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0ID0gZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQuVGVzdFJlc3VsdCh0
ZXN0LAorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHRl
c3QsCiAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVzPVtdLCB0ZXN0X3J1bl90aW1lPTAsIHRv
dGFsX3RpbWVfZm9yX2FsbF9kaWZmcz0wLAogICAgICAgICAgICAgICAgICAgICB0aW1lX2Zvcl9k
aWZmcz0wKQogICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gdGVzdF9leHBlY3RhdGlvbnMu
U0tJUApAQCAtODUyLDcgKzg1Myw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICIiIlVw
ZGF0ZSB0aGUgc3VtbWFyeSBhbmQgcHJpbnQgcmVzdWx0cyB3aXRoIGFueSBjb21wbGV0ZWQgdGVz
dHMuIiIiCiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0ID0gc2VsZi5fcmVzdWx0X3F1ZXVlLmdldF9ub3dhaXQoKQorICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0LmxvYWRzKHNlbGYuX3Jlc3Vs
dF9xdWV1ZS5nZXRfbm93YWl0KCkpCiAgICAgICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTEyOTMsNyArMTI5NCw4IEBAIGNsYXNzIFRlc3RS
dW5uZXI6CiAgICAgICAgICAgICBwYWdlICs9IHUiPHA+PGEgaHJlZj0nJXMnPiVzPC9hPjxiciAv
PlxuIiAlICh0ZXN0X3VybCwgdGVzdF9uYW1lKQogICAgICAgICAgICAgdGVzdF9mYWlsdXJlcyA9
IGZhaWx1cmVzLmdldCh0ZXN0X2ZpbGUsIFtdKQogICAgICAgICAgICAgZm9yIGZhaWx1cmUgaW4g
dGVzdF9mYWlsdXJlczoKLSAgICAgICAgICAgICAgICBwYWdlICs9IHUiJm5ic3A7Jm5ic3A7JXM8
YnIvPiIgJSBmYWlsdXJlLnJlc3VsdF9odG1sX291dHB1dCh0ZXN0X25hbWUpCisgICAgICAgICAg
ICAgICAgcGFnZSArPSAodSImbmJzcDsmbmJzcDslczxici8+IiAlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFpbHVyZS5yZXN1bHRfaHRtbF9vdXRwdXQodGVzdF9uYW1lKSkKICAgICAgICAg
ICAgIHBhZ2UgKz0gIjwvcD5cbiIKICAgICAgICAgcGFnZSArPSAiPC9ib2R5PjwvaHRtbD5cbiIK
ICAgICAgICAgcmV0dXJuIHBhZ2UKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGV4dF9kaWZmLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKaW5k
ZXggYjFmNjIxZTViNDVlNTgyNDY2MmIwMzEzOWZjMzdiNGEyMzdkMDFhOS4uNGMzMmYwZDAyMzQ3
M2M2M2I4ZTQ3NGY3NzA5M2EwZmRmYTBhYTMzNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXh0
X2RpZmYucHkKQEAgLTg5LDYgKzg5LDYgQEAgY2xhc3MgVGVzdFRleHREaWZmKHRlc3RfdHlwZV9i
YXNlLlRlc3RUeXBlQmFzZSk6CiAgICAgICAgICAgICBpZiBleHBlY3RlZCA9PSAnJzoKICAgICAg
ICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ1Jl
c3VsdCgpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBl
bmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21hdGNoKFRydWUpKQorICAgICAgICAgICAg
ICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUZXh0TWlzbWF0Y2goKSkK
IAogICAgICAgICByZXR1cm4gZmFpbHVyZXMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72409</attachid>
            <date>2010-10-29 15:42:08 -0700</date>
            <delta_ts>2010-10-29 15:47:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48616-20101029154207.patch</filename>
            <type>text/plain</type>
            <size>23233</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkMTk0YzM3OTJmY2ViZTM1YmM4ZmJjOWQyYzVmZDAyMDJlNDIxMzBmLi5hZmY0OWFm
ZTM2Y2RiNTIxZjg5MTQ0NTUyZjFjNDU1MDhhMDU5OWJjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTAtMTAtMjggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0
czogY2hhbmdlIFRlc3RSZXN1bHRzIHRvIGJlIHNlcmlhbGl6YWJsZQorCisgICAgICAgIEluIHBy
ZXBhcmF0aW9uIGZvciBjaGFuZ2luZyBuZXctcnVuLXdlYmtpdC10ZXN0cyBmcm9tCisgICAgICAg
IG11bHRpdGhyZWFkZWQgdG8gbXVsdGlwcm9jZXNzLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUg
ZGF0YQorICAgICAgICBnb2luZyBiZXR3ZWVuIHRoZSB0aHJlYWRzIGlzIGVhc2lseSBzZXJpYWxp
emVkIG92ZXIgYSBzb2NrZXQuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBzZXJpYWxpemF0
aW9uL3BpY2tsaW5nIGZvciB0aGUgVGVzdFJlc3VsdHMgYW5kCisgICAgICAgIFRlc3RGYWlsdXJl
IG9iamVjdHMgKHVzaW5nIGNQaWNrbGUpLgorCisgICAgICAgIFRoZSBUZXN0RmFpbHVyZSBvYmpl
Y3RzIGluY2x1ZGVkIGEgImhhc193ZGlmZiIgZmxhZyBmb3IgVGV4dAorICAgICAgICByZXN1bHRz
LCBidXQgdGhlIGZsYWcgd2Fzbid0IGJlaW5nIHVzZWQsIHNvIEkndmUgcmVtb3ZlZCBpdCwKKyAg
ICAgICAgc2ltcGxpZnlpbmcgdGhlIHN0YXRlIHRvIGJhc2ljYWxseSBhIHNldCBvZiBlbnVtIG9i
amVjdHMgd2l0aAorICAgICAgICBhc3NvY2lhdGVkIG1ldGhvZHMuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NjE2CisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVl
X3RocmVhZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFp
bHVyZXNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHNfdW5p
dHRlc3QucHk6QWRkZWQuIAorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHk6CisKIDIwMTAtMTAtMjkgIE9qYW4gVmFmYWkg
IDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVl
X3RocmVhZC5weQppbmRleCBhYjEwZTBhOTUyZmI4MzI1MzQzN2Y5ZDYzOGMxNzNjYWViMzY5Yzhj
Li4zZTNiYTBiMTY3NzA0NTAwMzZmNzMxNWFjMTYxZWYxZmI5YjdkNzM1IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9k
dW1wX3JlbmRlcl90cmVlX3RocmVhZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5w
eQpAQCAtNTEsNiArNTEsNyBAQCBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogCiBpbXBv
cnQgdGVzdF9mYWlsdXJlcworaW1wb3J0IHRlc3RfcmVzdWx0cwogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS4iCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgImR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkIikKQEAgLTEzMyw4ICsx
MzQsOCBAQCBkZWYgX3Byb2Nlc3Nfb3V0cHV0KHBvcnQsIG9wdGlvbnMsIHRlc3RfaW5mbywgdGVz
dF90eXBlcywgdGVzdF9hcmdzLAogICAgICAgICAgICAgdGltZS50aW1lKCkgLSBzdGFydF9kaWZm
X3RpbWUpCiAKICAgICB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMgPSB0aW1lLnRpbWUoKSAtIHN0
YXJ0X2RpZmZfdGltZQotICAgIHJldHVybiBUZXN0UmVzdWx0KHRlc3RfaW5mby5maWxlbmFtZSwg
ZmFpbHVyZXMsIHRlc3RfcnVuX3RpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGlt
ZV9mb3JfYWxsX2RpZmZzLCB0aW1lX2Zvcl9kaWZmcykKKyAgICByZXR1cm4gdGVzdF9yZXN1bHRz
LlRlc3RSZXN1bHQodGVzdF9pbmZvLmZpbGVuYW1lLCBmYWlsdXJlcywgdGVzdF9ydW5fdGltZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGltZV9mb3JfYWxsX2Rp
ZmZzLCB0aW1lX2Zvcl9kaWZmcykKIAogCiBkZWYgX3BhZF90aW1lb3V0KHRpbWVvdXQpOgpAQCAt
MTU5LDE4ICsxNjAsNiBAQCBkZWYgX2ltYWdlX2hhc2godGVzdF9pbmZvLCB0ZXN0X2FyZ3MsIG9w
dGlvbnMpOgogICAgIHJldHVybiB0ZXN0X2luZm8uaW1hZ2VfaGFzaCgpCiAKIAotY2xhc3MgVGVz
dFJlc3VsdChvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBmYWls
dXJlcywgdGVzdF9ydW5fdGltZSwKLSAgICAgICAgICAgICAgICAgdG90YWxfdGltZV9mb3JfYWxs
X2RpZmZzLCB0aW1lX2Zvcl9kaWZmcyk6Ci0gICAgICAgIHNlbGYuZmFpbHVyZXMgPSBmYWlsdXJl
cwotICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKLSAgICAgICAgc2VsZi50ZXN0X3J1
bl90aW1lID0gdGVzdF9ydW5fdGltZQotICAgICAgICBzZWxmLnRpbWVfZm9yX2RpZmZzID0gdGlt
ZV9mb3JfZGlmZnMKLSAgICAgICAgc2VsZi50b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMgPSB0b3Rh
bF90aW1lX2Zvcl9hbGxfZGlmZnMKLSAgICAgICAgc2VsZi50eXBlID0gdGVzdF9mYWlsdXJlcy5k
ZXRlcm1pbmVfcmVzdWx0X3R5cGUoZmFpbHVyZXMpCi0KLQogY2xhc3MgU2luZ2xlVGVzdFRocmVh
ZCh0aHJlYWRpbmcuVGhyZWFkKToKICAgICAiIiJUaHJlYWQgd3JhcHBlciBmb3IgcnVubmluZyBh
IHNpbmdsZSB0ZXN0IGZpbGUuIiIiCiAKQEAgLTI2NCw4ICsyNTMsOCBAQCBjbGFzcyBUZXN0U2hl
bGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgICBvcHRpb25zOiBjb21tYW5kIGxp
bmUgb3B0aW9ucyBhcmd1bWVudCBmcm9tIG9wdHBhcnNlCiAgICAgICAgICAgZmlsZW5hbWVfbGlz
dF9xdWV1ZTogQSB0aHJlYWQgc2FmZSBRdWV1ZSBjbGFzcyB0aGF0IGNvbnRhaW5zIGxpc3RzCiAg
ICAgICAgICAgICAgIG9mIHR1cGxlcyBvZiAoZmlsZW5hbWUsIHVyaSkgcGFpcnMuCi0gICAgICAg
ICAgcmVzdWx0X3F1ZXVlOiBBIHRocmVhZCBzYWZlIFF1ZXVlIGNsYXNzIHRoYXQgd2lsbCBjb250
YWluIHR1cGxlcyBvZgotICAgICAgICAgICAgICAodGVzdCwgZmFpbHVyZSBsaXN0cykgZm9yIHRo
ZSB0ZXN0IHJlc3VsdHMuCisgICAgICAgICAgcmVzdWx0X3F1ZXVlOiBBIHRocmVhZCBzYWZlIFF1
ZXVlIGNsYXNzIHRoYXQgd2lsbCBjb250YWluCisgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgVGVz
dFJlc3VsdCBvYmplY3RzLgogICAgICAgICAgIHRlc3RfdHlwZXM6IEEgbGlzdCBvZiBUZXN0VHlw
ZSBvYmplY3RzIHRvIHJ1biB0aGUgdGVzdCBvdXRwdXQKICAgICAgICAgICAgICAgYWdhaW5zdC4K
ICAgICAgICAgICB0ZXN0X2FyZ3M6IEEgVGVzdEFyZ3VtZW50cyBvYmplY3QgdG8gcGFzcyB0byBl
YWNoIFRlc3RUeXBlLgpAQCAtNDQ5LDcgKzQzOCw3IEBAIGNsYXNzIFRlc3RTaGVsbFRocmVhZChX
YXRjaGFibGVUaHJlYWQpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBfbG9n
LmRlYnVnKCIlcyAlcyBwYXNzZWQiICUgKHNlbGYuZ2V0TmFtZSgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKSkp
Ci0gICAgICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUucHV0KHJlc3VsdCkKKyAgICAgICAgICAg
IHNlbGYuX3Jlc3VsdF9xdWV1ZS5wdXQocmVzdWx0LmR1bXBzKCkpCiAKICAgICAgICAgICAgIGlm
IGJhdGNoX3NpemUgPiAwIGFuZCBiYXRjaF9jb3VudCA+IGJhdGNoX3NpemU6CiAgICAgICAgICAg
ICAgICAgIyBCb3VuY2UgdGhlIHNoZWxsIGFuZCByZXNldCBjb3VudC4KQEAgLTUwNSw5ICs0OTQs
OCBAQCBjbGFzcyBUZXN0U2hlbGxUaHJlYWQoV2F0Y2hhYmxlVGhyZWFkKToKICAgICAgICAgICAg
IGZhaWx1cmVzID0gW10KICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0Nhbm5vdCBnZXQgcmVzdWx0
cyBvZiB0ZXN0OiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2luZm8uZmlsZW5h
bWUpCi0gICAgICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0KHRlc3RfaW5mby5maWxlbmFtZSwg
ZmFpbHVyZXM9W10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcnVuX3Rp
bWU9MCwgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZzPTAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVfZm9yX2RpZmZzPTApCisgICAgICAgICAgICByZXN1bHQgPSB0ZXN0X3Jl
c3VsdHMuVGVzdFJlc3VsdCh0ZXN0X2luZm8uZmlsZW5hbWUsIGZhaWx1cmVzPVtdLAorICAgICAg
ICAgICAgICAgIHRlc3RfcnVuX3RpbWU9MCwgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZzPTAsIHRp
bWVfZm9yX2RpZmZzPTApCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC01MTcsOSArNTA1
LDcgQEAgY2xhc3MgVGVzdFNoZWxsVGhyZWFkKFdhdGNoYWJsZVRocmVhZCk6CiAgICAgICAgIEFy
Z3M6CiAgICAgICAgICAgdGVzdF9pbmZvOiBPYmplY3QgY29udGFpbmluZyB0aGUgdGVzdCBmaWxl
bmFtZSwgdXJpIGFuZCB0aW1lb3V0CiAKLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICBBIGxp
c3Qgb2YgVGVzdEZhaWx1cmUgb2JqZWN0cyBkZXNjcmliaW5nIHRoZSBlcnJvci4KLQorICAgICAg
ICBSZXR1cm5zOiBhIFRlc3RSZXN1bHQgb2JqZWN0LgogICAgICAgICAiIiIKICAgICAgICAgc2Vs
Zi5fZW5zdXJlX2R1bXBfcmVuZGVyX3RyZWVfaXNfcnVubmluZygpCiAgICAgICAgICMgVGhlIHBp
eGVsX2hhc2ggaXMgdXNlZCB0byBhdm9pZCBkb2luZyBhbiBpbWFnZSBkdW1wIGlmIHRoZQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQppbmRl
eCAwMzQ0YWE3YWM0MDhhZWIwODI0MWFhM2IwZDlmNzEyMGRjNDFiYTcwLi45YTBmNGVlYTIwOGQy
MWNmODhlZjhkNWVlYWYxNDgzYTUxMTYxOGUzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVz
dC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQpAQCAtNDAsNyArNDAsNyBAQCBmcm9tIHdl
YmtpdHB5LmNvbW1vbiBpbXBvcnQgYXJyYXlfc3RyZWFtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9y
dCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQg
cHJpbnRpbmcKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9y
dCBkdW1wX3JlbmRlcl90cmVlX3RocmVhZAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5
b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfcmVzdWx0cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKQEAgLTE0MSw5ICsx
NDEsOSBAQCBjbGFzcyAgVGVzdHByaW50ZXIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBl
bGlmIHJlc3VsdF90eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIOgogICAgICAgICAgICAg
ZmFpbHVyZXMgPSBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2goKV0KICAgICAgICAgcGF0aCA9
IG9zLnBhdGguam9pbihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgdGVzdCkKLSAgICAg
ICAgcmV0dXJuIGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLlRlc3RSZXN1bHQocGF0aCwgZmFpbHVy
ZXMsIHJ1bl90aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnM9MCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV9mb3JfZGlmZnM9MCkKKyAgICAgICAg
cmV0dXJuIHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KHBhdGgsIGZhaWx1cmVzLCBydW5fdGltZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3RpbWVfZm9yX2Fs
bF9kaWZmcz0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV9m
b3JfZGlmZnM9MCkKIAogICAgIGRlZiBnZXRfcmVzdWx0X3N1bW1hcnkoc2VsZiwgdGVzdHMsIGV4
cGVjdGF0aW9uc19zdHIpOgogICAgICAgICB0ZXN0X3BhdGhzID0gW29zLnBhdGguam9pbihzZWxm
Ll9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgdGVzdCkgZm9yCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2Zh
aWx1cmVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weQppbmRleCAzNDBkMDc1M2JiMTBmM2E3OTVlYzhi
ODg3M2FiZjJiODFiMmYzZjM1Li42ZDU1NzYxMGZiZjFiNjM2NGU0OGU4MjRkMDIxYjUyZmY3OWM3
MWY4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkK
QEAgLTMyLDYgKzMyLDggQEAKIGltcG9ydCBvcwogaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiAK
K2ltcG9ydCBjUGlja2xlCisKIAogZGVmIGRldGVybWluZV9yZXN1bHRfdHlwZShmYWlsdXJlX2xp
c3QpOgogICAgICIiIlRha2VzIGEgc2V0IG9mIHRlc3RfZmFpbHVyZXMgYW5kIHJldHVybnMgd2hp
Y2ggcmVzdWx0IHR5cGUgYmVzdCBmaXRzCkBAIC03MSwxMCArNzMsMjUgQEAgY2xhc3MgVGVzdEZh
aWx1cmUob2JqZWN0KToKICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIHRoYXQgZGVmaW5lcyB0
aGUgZmFpbHVyZSBpbnRlcmZhY2UuIiIiCiAKICAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGxv
YWRzKHMpOgorICAgICAgICAiIiJDcmVhdGVzIGEgVGVzdEZhaWx1cmUgb2JqZWN0IGZyb20gdGhl
IHNwZWNpZmllZCBzdHJpbmcuIiIiCisgICAgICAgIHJldHVybiBjUGlja2xlLmxvYWRzKHMpCisK
KyAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIG1lc3NhZ2UoKToKICAgICAgICAgIiIiUmV0dXJu
cyBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBmYWlsdXJlIGluIG1vcmUgZGV0YWlsLiIiIgogICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90
aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fID09IG90aGVyLl9f
Y2xhc3NfXy5fX25hbWVfXworCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAg
IHJldHVybiBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXyAhPSBvdGhlci5fX2NsYXNzX18uX19uYW1l
X18KKworICAgIGRlZiBkdW1wcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgc3RyaW5n
L0pTT04gcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0RmFpbHVyZS4iIiIKKyAgICAgICAgcmV0dXJu
IGNQaWNrbGUuZHVtcHMoc2VsZikKKwogICAgIGRlZiByZXN1bHRfaHRtbF9vdXRwdXQoc2VsZiwg
ZmlsZW5hbWUpOgogICAgICAgICAiIiJSZXR1cm5zIGFuIEhUTUwgc3RyaW5nIHRvIGJlIGluY2x1
ZGVkIG9uIHRoZSByZXN1bHRzLmh0bWwgcGFnZS4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcgpAQCAtMTEyLDcgKzEyOSw3IEBAIGNsYXNzIEZhaWx1cmVXaXRoVHlwZShUZXN0
RmFpbHVyZSk6CiAgICAgICAgIFRlc3RGYWlsdXJlLl9faW5pdF9fKHNlbGYpCiAKICAgICAjIEZp
bGVuYW1lIHN1ZmZpeGVzIHVzZWQgYnkgUmVzdWx0SHRtbE91dHB1dC4KLSAgICBPVVRfRklMRU5B
TUVTID0gW10KKyAgICBPVVRfRklMRU5BTUVTID0gKCkKIAogICAgIGRlZiBvdXRwdXRfbGlua3Mo
c2VsZiwgZmlsZW5hbWUsIG91dF9uYW1lcyk6CiAgICAgICAgICIiIlJldHVybnMgYSBzdHJpbmcg
aG9sZGluZyBhbGwgYXBwbGljYWJsZSBvdXRwdXQgZmlsZSBsaW5rcy4KQEAgLTEyOCw2ICsxNDUs
MTAgQEAgY2xhc3MgRmFpbHVyZVdpdGhUeXBlKFRlc3RGYWlsdXJlKToKICAgICAgICAgIyBGSVhN
RTogU2VlbXMgbGlrZSBhIGJhZCBpZGVhIHRvIHNlcGFyYXRlIHRoZSBkaXNwbGF5IG5hbWUgZGF0
YQogICAgICAgICAjIGZyb20gdGhlIHBhdGggZGF0YSBieSBoYXJkLWNvZGluZyB0aGUgZGlzcGxh
eSBuYW1lIGhlcmUKICAgICAgICAgIyBhbmQgcGFzc2luZyBpbiB0aGUgcGF0aCBpbmZvcm1hdGlv
biB2aWEgb3V0X25hbWVzLgorICAgICAgICAjCisgICAgICAgICMgRklYTUU6IEFsc28sIHdlIGRv
bid0IGtub3cgZm9yIHN1cmUgdGhhdCB0aGVzZSBmaWxlcyBleGlzdCwKKyAgICAgICAgIyBhbmQg
d2Ugc2hvdWxkbid0IGJlIGNyZWF0aW5nIGxpbmtzIHRvIGZpbGVzIHRoYXQgZG9uJ3QgZXhpc3QK
KyAgICAgICAgIyAoZm9yIGV4YW1wbGUsIGlmIHdlIGRvbid0IGFjdHVhbGx5IGhhdmUgd2RpZmYg
b3V0cHV0KS4KICAgICAgICAgbGlua3MgPSBbJyddCiAgICAgICAgIHVyaXMgPSBbc2VsZi5yZWxh
dGl2ZV9vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsIGZuKSBmb3IKICAgICAgICAgICAgICAgICBm
biBpbiBvdXRfbmFtZXNdCkBAIC0xNzAsNyArMTkxLDcgQEAgY2xhc3MgRmFpbHVyZUNyYXNoKFRl
c3RGYWlsdXJlKToKICAgICAgICAgcmV0dXJuICJUZXN0IHNoZWxsIGNyYXNoZWQiCiAKICAgICBk
ZWYgcmVzdWx0X2h0bWxfb3V0cHV0KHNlbGYsIGZpbGVuYW1lKToKLSAgICAgICAgIyBUT0RPKHRj
KTogY3JlYXRlIGEgbGluayB0byB0aGUgbWluaWR1bXAgZmlsZQorICAgICAgICAjIEZJWE1FOiBj
cmVhdGUgYSBsaW5rIHRvIHRoZSBtaW5pZHVtcCBmaWxlCiAgICAgICAgIHN0YWNrID0gc2VsZi5y
ZWxhdGl2ZV9vdXRwdXRfZmlsZW5hbWUoZmlsZW5hbWUsICItc3RhY2sudHh0IikKICAgICAgICAg
cmV0dXJuICI8c3Ryb25nPiVzPC9zdHJvbmc+IDxhIGhyZWY9JXM+c3RhY2s8L2E+IiAlIChzZWxm
Lm1lc3NhZ2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGFjaykKQEAgLTE4MSw3ICsyMDIsNyBAQCBjbGFzcyBGYWlsdXJl
Q3Jhc2goVGVzdEZhaWx1cmUpOgogCiBjbGFzcyBGYWlsdXJlTWlzc2luZ1Jlc3VsdChGYWlsdXJl
V2l0aFR5cGUpOgogICAgICIiIkV4cGVjdGVkIHJlc3VsdCB3YXMgbWlzc2luZy4iIiIKLSAgICBP
VVRfRklMRU5BTUVTID0gWyItYWN0dWFsLnR4dCJdCisgICAgT1VUX0ZJTEVOQU1FUyA9ICgiLWFj
dHVhbC50eHQiLCkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgbWVzc2FnZSgpOgpAQCAt
MTk2LDE0ICsyMTcsOCBAQCBjbGFzcyBGYWlsdXJlVGV4dE1pc21hdGNoKEZhaWx1cmVXaXRoVHlw
ZSk6CiAgICAgIiIiVGV4dCBkaWZmIG91dHB1dCBmYWlsZWQuIiIiCiAgICAgIyBGaWxlbmFtZSBz
dWZmaXhlcyB1c2VkIGJ5IFJlc3VsdEh0bWxPdXRwdXQuCiAgICAgIyBGSVhNRTogV2h5IGRvbid0
IHdlIHVzZSB0aGUgY29uc3RhbnRzIGZyb20gVGVzdFR5cGVCYXNlIGhlcmU/Ci0gICAgT1VUX0ZJ
TEVOQU1FUyA9IFsiLWFjdHVhbC50eHQiLCAiLWV4cGVjdGVkLnR4dCIsICItZGlmZi50eHQiXQot
ICAgIE9VVF9GSUxFTkFNRVNfV0RJRkYgPSBbIi1hY3R1YWwudHh0IiwgIi1leHBlY3RlZC50eHQi
LCAiLWRpZmYudHh0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICItd2RpZmYuaHRtbCIs
ICItcHJldHR5LWRpZmYuaHRtbCJdCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaGFzX3dkaWZm
KToKLSAgICAgICAgRmFpbHVyZVdpdGhUeXBlLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIGlmIGhh
c193ZGlmZjoKLSAgICAgICAgICAgIHNlbGYuT1VUX0ZJTEVOQU1FUyA9IHNlbGYuT1VUX0ZJTEVO
QU1FU19XRElGRgorICAgIE9VVF9GSUxFTkFNRVMgPSAoIi1hY3R1YWwudHh0IiwgIi1leHBlY3Rl
ZC50eHQiLCAiLWRpZmYudHh0IiwKKyAgICAgICAgICAgICAgICAgICAgICItd2RpZmYuaHRtbCIs
ICItcHJldHR5LWRpZmYuaHRtbCIpCiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIG1lc3Nh
Z2UoKToKQEAgLTIxNCw3ICsyMjksNiBAQCBjbGFzcyBGYWlsdXJlTWlzc2luZ0ltYWdlSGFzaChG
YWlsdXJlV2l0aFR5cGUpOgogICAgICIiIkFjdHVhbCByZXN1bHQgaGFzaCB3YXMgbWlzc2luZy4i
IiIKICAgICAjIENocm9tZSBkb2Vzbid0IGtub3cgdG8gZGlzcGxheSBhIC5jaGVja3N1bSBmaWxl
IGFzIHRleHQsIHNvIGRvbid0IGJvdGhlcgogICAgICMgcHV0dGluZyBpbiBhIGxpbmsgdG8gdGhl
IGFjdHVhbCByZXN1bHQuCi0gICAgT1VUX0ZJTEVOQU1FUyA9IFtdCiAKICAgICBAc3RhdGljbWV0
aG9kCiAgICAgZGVmIG1lc3NhZ2UoKToKQEAgLTIyNiw3ICsyNDAsNyBAQCBjbGFzcyBGYWlsdXJl
TWlzc2luZ0ltYWdlSGFzaChGYWlsdXJlV2l0aFR5cGUpOgogCiBjbGFzcyBGYWlsdXJlTWlzc2lu
Z0ltYWdlKEZhaWx1cmVXaXRoVHlwZSk6CiAgICAgIiIiQWN0dWFsIHJlc3VsdCBpbWFnZSB3YXMg
bWlzc2luZy4iIiIKLSAgICBPVVRfRklMRU5BTUVTID0gWyItYWN0dWFsLnBuZyJdCisgICAgT1VU
X0ZJTEVOQU1FUyA9ICgiLWFjdHVhbC5wbmciLCkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBk
ZWYgbWVzc2FnZSgpOgpAQCAtMjM5LDcgKzI1Myw3IEBAIGNsYXNzIEZhaWx1cmVNaXNzaW5nSW1h
Z2UoRmFpbHVyZVdpdGhUeXBlKToKIAogY2xhc3MgRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKEZh
aWx1cmVXaXRoVHlwZSk6CiAgICAgIiIiSW1hZ2UgaGFzaGVzIGRpZG4ndCBtYXRjaC4iIiIKLSAg
ICBPVVRfRklMRU5BTUVTID0gWyItYWN0dWFsLnBuZyIsICItZXhwZWN0ZWQucG5nIiwgIi1kaWZm
LnBuZyJdCisgICAgT1VUX0ZJTEVOQU1FUyA9ICgiLWFjdHVhbC5wbmciLCAiLWV4cGVjdGVkLnBu
ZyIsICItZGlmZi5wbmciKQogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBtZXNzYWdlKCk6
CkBAIC0yNTIsNyArMjY2LDYgQEAgY2xhc3MgRmFpbHVyZUltYWdlSGFzaEluY29ycmVjdChGYWls
dXJlV2l0aFR5cGUpOgogICAgICIiIkFjdHVhbCByZXN1bHQgaGFzaCBpcyBpbmNvcnJlY3QuIiIi
CiAgICAgIyBDaHJvbWUgZG9lc24ndCBrbm93IHRvIGRpc3BsYXkgYSAuY2hlY2tzdW0gZmlsZSBh
cyB0ZXh0LCBzbyBkb24ndCBib3RoZXIKICAgICAjIHB1dHRpbmcgaW4gYSBsaW5rIHRvIHRoZSBh
Y3R1YWwgcmVzdWx0LgotICAgIE9VVF9GSUxFTkFNRVMgPSBbXQogCiAgICAgQHN0YXRpY21ldGhv
ZAogICAgIGRlZiBtZXNzYWdlKCk6CkBAIC0yNjAsMyArMjczLDEwIEBAIGNsYXNzIEZhaWx1cmVJ
bWFnZUhhc2hJbmNvcnJlY3QoRmFpbHVyZVdpdGhUeXBlKToKIAogICAgIGRlZiByZXN1bHRfaHRt
bF9vdXRwdXQoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICByZXR1cm4gIjxzdHJvbmc+JXM8L3N0
cm9uZz4iICUgc2VsZi5tZXNzYWdlKCkKKworIyBDb252ZW5pZW50IGNvbGxlY3Rpb24gb2YgYWxs
IGZhaWx1cmUgY2xhc3NlcyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodAorIyBuZWVkIHRvIGVudW1l
cmF0ZSBvdmVyIHRoZW0gYWxsLgorQUxMX0ZBSUxVUkVfQ0xBU1NFUyA9IChGYWlsdXJlVGltZW91
dCwgRmFpbHVyZUNyYXNoLCBGYWlsdXJlTWlzc2luZ1Jlc3VsdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgRmFpbHVyZVRleHRNaXNtYXRjaCwgRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2gsCisgICAg
ICAgICAgICAgICAgICAgICAgIEZhaWx1cmVNaXNzaW5nSW1hZ2UsIEZhaWx1cmVJbWFnZUhhc2hN
aXNtYXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgRmFpbHVyZUltYWdlSGFzaEluY29ycmVj
dCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVz
X3VuaXR0ZXN0LnB5CmluZGV4IDkyZmUyNzYwYzA2YTQ1Njk0MTdiYTgzZDEwODUzY2RmY2MyYTll
YzQuLjNlMzUyOGRjNzgwNzQ5NGEwYTdlYWJlNDEzMjM0YTZlNjczY2UzMzAgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3Rlc3RfZmFpbHVyZXNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlc191bml0dGVzdC5w
eQpAQCAtMjgsMTMgKzI4LDI2IEBACiAKICIiIiJUZXN0cyBjb2RlIHBhdGhzIG5vdCBjb3ZlcmVk
IGJ5IHRoZSByZWd1bGFyIHVuaXQgdGVzdHMuIiIiCiAKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLmxheW91dF9wYWNrYWdlLnRlc3RfZmFpbHVyZXMgaW1wb3J0ICoKIGltcG9ydCB1bml0dGVz
dAogCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS50ZXN0X2ZhaWx1
cmVzIGltcG9ydCAqCisKKwogY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVm
IGFzc2VydFJlc3VsdEh0bWwoc2VsZiwgZmFpbHVyZV9vYmopOgogICAgICAgICBzZWxmLmFzc2Vy
dE5vdEVxdWFsKGZhaWx1cmVfb2JqLnJlc3VsdF9odG1sX291dHB1dCgnZm9vJyksIE5vbmUpCiAK
KyAgICBkZWYgYXNzZXJ0X2xvYWRzKHNlbGYsIGNscyk6CisgICAgICAgIGZhaWx1cmVfb2JqID0g
Y2xzKCkKKyAgICAgICAgcyA9IGZhaWx1cmVfb2JqLmR1bXBzKCkKKyAgICAgICAgbmV3X2ZhaWx1
cmVfb2JqID0gVGVzdEZhaWx1cmUubG9hZHMocykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlz
aW5zdGFuY2UobmV3X2ZhaWx1cmVfb2JqLCBjbHMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZmFpbHVyZV9vYmosIG5ld19mYWlsdXJlX29iaikKKworICAgICAgICAjIEFsc28gdGVzdCB0
aGF0ICE9IGlzIGltcGxlbWVudGVkLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZhaWx1cmVf
b2JqICE9IG5ld19mYWlsdXJlX29iaikKKwogICAgIGRlZiB0ZXN0X2NyYXNoKHNlbGYpOgogICAg
ICAgICBzZWxmLmFzc2VydFJlc3VsdEh0bWwoRmFpbHVyZUNyYXNoKCkpCiAKQEAgLTYzLDYgKzc2
LDkgQEAgY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIGZhaWx1cmVfb2JqLnJlc3VsdF9odG1sX291dHB1
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvby50eHQiKQogCisgICAgZGVmIHRlc3Rf
bG9hZHMoc2VsZik6CisgICAgICAgIGZvciBjIGluIEFMTF9GQUlMVVJFX0NMQVNTRVM6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydF9sb2FkcyhjKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRzLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9yZXN1bHRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MTdmYjc1NWMyMDJiNTk3NTNiZTQyMDQ2MzJhOWYw
N2U5MzRlYTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdHMucHkKQEAgLTAsMCArMSw2
MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBjUGlja2xlCisKK2ltcG9ydCB0ZXN0X2Zh
aWx1cmVzCisKKworY2xhc3MgVGVzdFJlc3VsdChvYmplY3QpOgorICAgICIiIkRhdGEgb2JqZWN0
IGNvbnRhaW5pbmcgdGhlIHJlc3VsdHMgb2YgYSBzaW5nbGUgdGVzdC4iIiIKKworICAgIEBzdGF0
aWNtZXRob2QKKyAgICBkZWYgbG9hZHMoc3RyKToKKyAgICAgICAgcmV0dXJuIGNQaWNrbGUubG9h
ZHMoc3RyKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBmYWlsdXJlcywgdGVz
dF9ydW5fdGltZSwKKyAgICAgICAgICAgICAgICAgdG90YWxfdGltZV9mb3JfYWxsX2RpZmZzLCB0
aW1lX2Zvcl9kaWZmcyk6CisgICAgICAgIHNlbGYuZmFpbHVyZXMgPSBmYWlsdXJlcworICAgICAg
ICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgc2VsZi50ZXN0X3J1bl90aW1lID0g
dGVzdF9ydW5fdGltZQorICAgICAgICBzZWxmLnRpbWVfZm9yX2RpZmZzID0gdGltZV9mb3JfZGlm
ZnMKKyAgICAgICAgc2VsZi50b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMgPSB0b3RhbF90aW1lX2Zv
cl9hbGxfZGlmZnMKKyAgICAgICAgc2VsZi50eXBlID0gdGVzdF9mYWlsdXJlcy5kZXRlcm1pbmVf
cmVzdWx0X3R5cGUoZmFpbHVyZXMpCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAg
ICAgICAgcmV0dXJuIChzZWxmLmZpbGVuYW1lID09IG90aGVyLmZpbGVuYW1lIGFuZAorICAgICAg
ICAgICAgICAgIHNlbGYuZmFpbHVyZXMgPT0gb3RoZXIuZmFpbHVyZXMgYW5kCisgICAgICAgICAg
ICAgICAgc2VsZi50ZXN0X3J1bl90aW1lID09IG90aGVyLnRlc3RfcnVuX3RpbWUgYW5kCisgICAg
ICAgICAgICAgICAgc2VsZi50aW1lX2Zvcl9kaWZmcyA9PSBvdGhlci50aW1lX2Zvcl9kaWZmcyBh
bmQKKyAgICAgICAgICAgICAgICBzZWxmLnRvdGFsX3RpbWVfZm9yX2FsbF9kaWZmcyA9PSBvdGhl
ci50b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnMpCisKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVy
KToKKyAgICAgICAgcmV0dXJuIG5vdCAoc2VsZiA9PSBvdGhlcikKKworICAgIGRlZiBkdW1wcyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIGNQaWNrbGUuZHVtcHMoc2VsZikKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rl
c3RfcmVzdWx0c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0c191bml0dGVzdC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41OTIxNjY2ZDNmNGQ4M2Q0ODQ0MDcyYjFmZDRhM2I2ODE0NTQ1ZWFiCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9yZXN1bHRzX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNTIgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0X3Jlc3VsdHMgaW1wb3J0
IFRlc3RSZXN1bHQKKworCitjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYg
dGVzdF9sb2FkcyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdChmaWxlbmFtZT0n
Zm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlcz1bXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0X3J1bl90aW1lPTEuMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnM9MC41LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWVfZm9yX2RpZmZzPTAuNSkKKyAgICAgICAgcyA9IHJlc3VsdC5kdW1w
cygpCisgICAgICAgIG5ld19yZXN1bHQgPSBUZXN0UmVzdWx0LmxvYWRzKHMpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG5ld19yZXN1bHQsIFRlc3RSZXN1bHQpKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X3Jlc3VsdCwgcmVzdWx0KQorCisgICAgICAgICMgQWxz
byBjaGVjayB0aGF0ICE9IGlzIGltcGxlbWVudGVkLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KG5ld19yZXN1bHQgIT0gcmVzdWx0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cisg
ICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCAxMzUwY2Vk
MWU2NTAxYTlhYzNkNmQ3ZDY4M2IyOWNiMTY4MjVmYTVkLi43MDQxODBjNjBiYTFjYzc5MGE2MmVl
MTVhNTc0ZjhkNmExYTA3ZmEyIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTY5LDYg
KzY5LDcgQEAgZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQganNvbl9sYXlvdXRfcmVzdWx0c19n
ZW5lcmF0b3IKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHByaW50aW5nCiBmcm9tIGxheW91
dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSBsYXlvdXRfcGFja2FnZSBp
bXBvcnQgdGVzdF9mYWlsdXJlcworZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9yZXN1
bHRzCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X3Jlc3VsdHNfdXBsb2FkZXIKIGZy
b20gdGVzdF90eXBlcyBpbXBvcnQgaW1hZ2VfZGlmZgogZnJvbSB0ZXN0X3R5cGVzIGltcG9ydCB0
ZXh0X2RpZmYKQEAgLTQ1Nyw3ICs0NTgsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAg
ICAgIyBzdWJ0cmFjdGVkIG91dCBvZiBzZWxmLl90ZXN0X2ZpbGVzLCBhYm92ZSksIGJ1dCB3ZSBz
dHViIG91dCB0aGUKICAgICAgICAgICAgICMgcmVzdWx0cyBoZXJlIHNvIHRoZSBzdGF0aXN0aWNz
IGNhbiByZW1haW4gYWNjdXJhdGUuCiAgICAgICAgICAgICBmb3IgdGVzdCBpbiBza2lwX2NodW5r
OgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLlRlc3RS
ZXN1bHQodGVzdCwKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0X3Jlc3VsdHMuVGVzdFJl
c3VsdCh0ZXN0LAogICAgICAgICAgICAgICAgICAgICBmYWlsdXJlcz1bXSwgdGVzdF9ydW5fdGlt
ZT0wLCB0b3RhbF90aW1lX2Zvcl9hbGxfZGlmZnM9MCwKICAgICAgICAgICAgICAgICAgICAgdGlt
ZV9mb3JfZGlmZnM9MCkKICAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IHRlc3RfZXhwZWN0
YXRpb25zLlNLSVAKQEAgLTg1Miw3ICs4NTMsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAg
ICAiIiJVcGRhdGUgdGhlIHN1bW1hcnkgYW5kIHByaW50IHJlc3VsdHMgd2l0aCBhbnkgY29tcGxl
dGVkIHRlc3RzLiIiIgogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX3Jlc3VsdF9xdWV1ZS5nZXRfbm93YWl0KCkKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdC5sb2FkcyhzZWxm
Ll9yZXN1bHRfcXVldWUuZ2V0X25vd2FpdCgpKQogICAgICAgICAgICAgZXhjZXB0IFF1ZXVlLkVt
cHR5OgogICAgICAgICAgICAgICAgIHJldHVybgogCkBAIC0xMzA1LDcgKzEzMDYsOCBAQCBjbGFz
cyBUZXN0UnVubmVyOgogICAgICAgICAgICAgcGFnZSArPSB1IjxwPjxhIGhyZWY9JyVzJz4lczwv
YT48YnIgLz5cbiIgJSAodGVzdF91cmwsIHRlc3RfbmFtZSkKICAgICAgICAgICAgIHRlc3RfZmFp
bHVyZXMgPSBmYWlsdXJlcy5nZXQodGVzdF9maWxlLCBbXSkKICAgICAgICAgICAgIGZvciBmYWls
dXJlIGluIHRlc3RfZmFpbHVyZXM6Ci0gICAgICAgICAgICAgICAgcGFnZSArPSB1IiZuYnNwOyZu
YnNwOyVzPGJyLz4iICUgZmFpbHVyZS5yZXN1bHRfaHRtbF9vdXRwdXQodGVzdF9uYW1lKQorICAg
ICAgICAgICAgICAgIHBhZ2UgKz0gKHUiJm5ic3A7Jm5ic3A7JXM8YnIvPiIgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgIGZhaWx1cmUucmVzdWx0X2h0bWxfb3V0cHV0KHRlc3RfbmFtZSkpCiAg
ICAgICAgICAgICBwYWdlICs9ICI8L3A+XG4iCiAgICAgICAgIHBhZ2UgKz0gIjwvYm9keT48L2h0
bWw+XG4iCiAgICAgICAgIHJldHVybiBwYWdlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlmZi5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGV4dF9kaWZm
LnB5CmluZGV4IGIxZjYyMWU1YjQ1ZTU4MjQ2NjJiMDMxMzlmYzM3YjRhMjM3ZDAxYTkuLjRjMzJm
MGQwMjM0NzNjNjNiOGU0NzRmNzcwOTNhMGZkZmEwYWEzMzcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGV4dF9kaWZmLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlw
ZXMvdGV4dF9kaWZmLnB5CkBAIC04OSw2ICs4OSw2IEBAIGNsYXNzIFRlc3RUZXh0RGlmZih0ZXN0
X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2UpOgogICAgICAgICAgICAgaWYgZXhwZWN0ZWQgPT0gJyc6
CiAgICAgICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1p
c3NpbmdSZXN1bHQoKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmFpbHVy
ZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZVRleHRNaXNtYXRjaChUcnVlKSkKKyAgICAg
ICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21h
dGNoKCkpCiAKICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>