<?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>71380</bug_id>
          
          <creation_ts>2011-11-02 11:34:28 -0700</creation_ts>
          <short_desc>NRWT incorrectly associates crash logs with tests</short_desc>
          <delta_ts>2012-03-21 16:39:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>73942</dependson>
    
    <dependson>81575</dependson>
    
    <dependson>81580</dependson>
    
    <dependson>81586</dependson>
    
    <dependson>81595</dependson>
    
    <dependson>81598</dependson>
    
    <dependson>81600</dependson>
    
    <dependson>81603</dependson>
          <blocked>64491</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>jberlin</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>494764</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-11-02 11:34:28 -0700</bug_when>
    <thetext>In these results:
http://build.webkit.org/results/SnowLeopard%20Intel%20Debug%20(Tests)/r99063%20(2806)/results.html

fast/inline/inline-box-adjust-position-crash2.html is crashing, apparently with the crash log here:
http://build.webkit.org/results/SnowLeopard%20Intel%20Debug%20(Tests)/r99063%20(2806)/fast/inline/inline-box-adjust-position-crash2-crash-log.txt

However, the stderr output:
http://build.webkit.org/results/SnowLeopard%20Intel%20Debug%20(Tests)/r99063%20(2806)/fast/inline/inline-box-adjust-position-crash2-stderr.txt
shows that the actual crash log is 
http://build.webkit.org/results/SnowLeopard%20Intel%20Debug%20(Tests)/r99063%20(2806)/platform/mac/accessibility/select-element-selection-with-optgroups-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494846</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-02 13:13:45 -0700</bug_when>
    <thetext>Interesting.  Sounds bad.  Will look shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515889</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 07:12:42 -0800</bug_when>
    <thetext>It looks like we only wait for ReportCrash to finish when a test times out. We don&apos;t wait if the test crashed quickly.

The code is all in this area: http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/layout_tests/port/server_process.py?rev=98040#L181

Note that we only call self._executive.wait_newest(self._port.is_crash_reporter) from within _handle_timeout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515903</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 07:32:39 -0800</bug_when>
    <thetext>It seems that self.crashed and self._check_for_crash are about the Python subprocess crashing, not about DRT crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515906</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 07:37:35 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; It seems that self.crashed and self._check_for_crash are about the Python subprocess crashing, not about DRT crashing.

My mistake. self.crashed/self._check_for_crash are about ServerProcess&apos;s self._proc. self._proc corresponds to DRT/WTR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515918</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 08:02:34 -0800</bug_when>
    <thetext>I think we probably need something like ORWT&apos;s processIsCrashing functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515951</commentid>
    <comment_count>6</comment_count>
      <attachid>118060</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 09:08:14 -0800</bug_when>
    <thetext>Created attachment 118060
Wait for Crash Reporter to finish even when it lets the crashed process die quickly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515952</commentid>
    <comment_count>7</comment_count>
      <attachid>118060</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 09:09:22 -0800</bug_when>
    <thetext>Comment on attachment 118060
Wait for Crash Reporter to finish even when it lets the crashed process die quickly

This is only part of the story. Waiting for the newest Crash Reporter instance isn&apos;t enough, since we can have multiple Crash Reporter instances going at once. We should probably teach NRWT how to double-check that it&apos;s chosen the right crash log, perhaps by comparing PIDs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515953</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 09:10:38 -0800</bug_when>
    <thetext>BTW, this bug is very easy for me to reproduce:

1. Insert an abort() in DumpRenderTree.mm:runTest
2. run-webkit-tests --no-http --exit-after-n-crashes-or-timeouts=2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515960</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 09:23:34 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 118060 [details])
&gt; Waiting for the newest Crash Reporter instance isn&apos;t enough, since we can have multiple Crash Reporter instances going at once.

Similarly, always choosing the newest crash log for a given process name isn&apos;t enough, since we can have multiple crash logs written for DRT before we go to find the crash log itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516057</commentid>
    <comment_count>10</comment_count>
      <attachid>118075</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 11:20:10 -0800</bug_when>
    <thetext>Created attachment 118075
Wait for Crash Reporter to finish even when it lets the crashed process die quickly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516131</commentid>
    <comment_count>11</comment_count>
      <attachid>118075</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 12:05:06 -0800</bug_when>
    <thetext>Comment on attachment 118075
Wait for Crash Reporter to finish even when it lets the crashed process die quickly

Landed as r102162.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516132</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 12:06:41 -0800</bug_when>
    <thetext>My plan is to have ServerProcess collect the crash log itself (after waiting as needed), then pass it along to SingleTestWriter as part of the DriverOutput, rather than having SingleTestWriter find the crash log after the fact as it does today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516141</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 12:17:24 -0800</bug_when>
    <thetext>Unfortunately, ServerProcess doesn&apos;t (and shouldn&apos;t) know about WebProcess crashes. So maybe this needs to be handled at the WebKitDriver level?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516143</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-12-06 12:17:48 -0800</bug_when>
    <thetext>We might need to change &quot;#CRASHED - WebProcess\n&quot; to &quot;#CRASHED - WebProcess &lt;pid&gt;\n&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516150</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-06 12:27:39 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; We might need to change &quot;#CRASHED - WebProcess\n&quot; to &quot;#CRASHED - WebProcess &lt;pid&gt;\n&quot;.

That sounds like a good idea. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524006</commentid>
    <comment_count>16</comment_count>
      <attachid>118075</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-19 10:49:39 -0800</bug_when>
    <thetext>Comment on attachment 118075
Wait for Crash Reporter to finish even when it lets the crashed process die quickly

Cleared Dirk Pranke&apos;s review+ from obsolete attachment 118075 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579819</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-15 15:36:58 -0700</bug_when>
    <thetext>i will take a look ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580070</commentid>
    <comment_count>18</comment_count>
      <attachid>132184</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-15 20:28:09 -0700</bug_when>
    <thetext>Created attachment 132184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580071</commentid>
    <comment_count>19</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-15 20:33:21 -0700</bug_when>
    <thetext>Okay, I&apos;m working on this, but there&apos;s definitely some ways to go as I continue to characterize how things crash and how we look for them. I *think* (am not positive) that we were being way too conservative in waiting for ReportCrash to complete.

If anyone at Apple knew exactly how ReportCrash runs (and when it exits) and felt like telling me, that would be nice :) there&apos;s not a lot of info on the interwebs. From what I can tell, at least when we&apos;re blocked on a read from DRT, we don&apos;t even find out that a process has crashed until after  the report has been written to disk. Interestingly, though, the ReportCrash process sticks around for another 20-30 seconds, basically doing nothing (I haven&apos;t attached to it to see if it is doing anything). 

There are certainly other paths that I&apos;m going to need to investigate, in particular figuring out when to wait in a crashed subprocess (haven&apos;t tested WTR at all yet).

Any feedback on this patch would be welcome; does this fix crash log issues with DRT on SnowLeopard and/or Lion for y&apos;all if running with one DRT at a time, at least? How about multiple DRTs? (Haven&apos;t tested that yet, either).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581019</commentid>
    <comment_count>20</comment_count>
      <attachid>132394</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-16 15:21:46 -0700</bug_when>
    <thetext>Created attachment 132394
more testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581229</commentid>
    <comment_count>21</comment_count>
      <attachid>132438</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-16 20:02:56 -0700</bug_when>
    <thetext>Created attachment 132438
Roll-up patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581233</commentid>
    <comment_count>22</comment_count>
      <attachid>132438</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-16 20:11:07 -0700</bug_when>
    <thetext>Comment on attachment 132438
Roll-up patch

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

Okay, getting close. Still needs more unit tests, but this should fix the bug and be worth checking out. I haven&apos;t tested it on Lion yet, either ...

&gt; Tools/Scripts/webkitpy/common/system/crashlogs.py:69
&gt; +                errors += &quot;ERROR: Failed to read &apos;%s&apos;: %s\n&quot; % (path, str(e))

I&apos;m not sure that we really want to include this in the crash log, but it&apos;s useful for debugging race conditions in finding the right crash log and waiting long enough for now ... I&apos;ll probably also move the crashlog.py changes into a separate patch.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:43
&gt; +    writer = TestResultWriter(port._filesystem, port, root_output_dir, test_name)

I&apos;ll move the filesystem member variable cleanup into a different patch ...

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py:662
&gt; +                                CRASH: (&apos;crash&apos;, &apos;crashes&apos;),

this change just removes the DRT string since it isn&apos;t right for Webkit2. I&apos;m not sure if this whole block even needs to exist, or if we can just pull it from the TestFailures.

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_failures.py:-88
&gt; -    @staticmethod

I&apos;ll probably break this into a separate patch as well ...

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:1052
&gt; +        # FIXME: Does it make sense to push this logic into webkitpy.common.system.crashlogs ?

Looking for feedback on this in particular ...

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:610
&gt; +            crash=crash, crashed_process_name=crashed_process_name, crashed_pid=crashed_pid, crash_log=crash_log,

I&apos;m a bit waffly on whether we really need the process name and the pid *in addition to* the crash log, but it&apos;s definitely helpful for now to ensure we&apos;re correlating pid to crash log properly.

&gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:164
&gt; +        # FIXME: Should most of this be moved into CrashLogs()?

thoughts?

&gt; Tools/WebKitTestRunner/TestController.cpp:812
&gt;      if (!m_didPrintWebProcessCrashedMessage) {

Any Apple/Mac people wanna comment on this part? It looks like WKPageGetProcessIdentifier is mac-only; should we get other ports to implement something like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582434</commentid>
    <comment_count>23</comment_count>
      <attachid>132438</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-19 16:36:36 -0700</bug_when>
    <thetext>Comment on attachment 132438
Roll-up patch

clearing r? since I&apos;m breaking this into multiple patches ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582554</commentid>
    <comment_count>24</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-19 18:08:27 -0700</bug_when>
    <thetext>oookay, I think the 7 listed bugs are about the size of it :) (In fairness, a couple of them are barely-related nits that I stumbled over while working on this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584755</commentid>
    <comment_count>25</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-21 16:39:05 -0700</bug_when>
    <thetext>closing as all sub-tasks have been committed as of r111619. let me know if you see any more issues.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118060</attachid>
            <date>2011-12-06 09:08:14 -0800</date>
            <delta_ts>2011-12-06 11:20:05 -0800</delta_ts>
            <desc>Wait for Crash Reporter to finish even when it lets the crashed process die quickly</desc>
            <filename>bug-71380-20111206120813.patch</filename>
            <type>text/plain</type>
            <size>5540</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTI4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDdiNjZjMjcxOTczMDFhZDRhNWI4MTQ0NmZjMTdlOTYy
NzRkZTcxMi4uOTE5MDRjZWEzYjBlODZhY2ZhNmUyNDhmOWNiMjI4NGJjNGUwOWE5NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDExLTEyLTA2ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBXYWl0IGZvciBDcmFzaCBSZXBvcnRlciB0byBmaW5pc2ggZXZlbiB3aGVuIGl0IGxldHMgdGhl
IGNyYXNoZWQgcHJvY2VzcyBkaWUgcXVpY2tseQorCisgICAgICAgIE5SV1Qgd2FzIG9ubHkgd2Fp
dGluZyBmb3IgQ3Jhc2ggUmVwb3J0ZXIgaW4gY2FzZXMgd2hlcmUgaXQgd2FzIGtlZXBpbmcgdGhl
IGNyYXNoZWQgcHJvY2VzcworICAgICAgICBhbGl2ZSBiZXlvbmQgdGhlIG5vcm1hbCB0aW1lb3V0
IGxpbWl0LiBJbiBjYXNlcyB3aGVyZSB0aGUgY3Jhc2hlZCBwcm9jZXNzIHdhcyBhYmxlIHRvIGRp
ZQorICAgICAgICBmYXN0ZXIsIE5SV1Qgd291bGQgYXNzdW1lIHRoYXQgQ3Jhc2ggUmVwb3J0ZXIg
aGFkIGZpbmlzaGVkIGV2ZW4gdGhvdWdoIGl0IG9mdGVuIHdhcyBzdGlsbAorICAgICAgICBydW5u
aW5nLCB3aGljaCB3b3VsZCBsZWFkIHRvIGFuIGluY29ycmVjdCBjcmFzaCBsb2cgYmVpbmcgcGlj
a2VkIHVwLgorCisgICAgICAgIFBhcnQgb2YgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzEzODA+IE5S
V1QgaW5jb3JyZWN0bHkgYXNzb2NpYXRlcyBjcmFzaCBsb2dzIHdpdGggdGVzdHMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6CisgICAgICAgIChTZXJ2ZXJQ
cm9jZXNzLl9yZXNldCk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLndyaXRlKToKKyAgICAgICAg
KFNlcnZlclByb2Nlc3MuX2NoZWNrX2Zvcl9jcmFzaCk6IENoYW5nZWQgdG8gdXNlIG5ldyBzZXRf
Y3Jhc2hlZCBmdW5jdGlvbiBpbnN0ZWFkIG9mIHNldHRpbmcKKyAgICAgICAgLmNyYXNoZWQgZGly
ZWN0bHkuIEFkZGVkIHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyIHBhcmFtZXRlciwgd2hpY2ggd2Ug
cGFzcyBhbG9uZyB0bworICAgICAgICBzZXRfY3Jhc2hlZC4KKworICAgICAgICAoU2VydmVyUHJv
Y2Vzcy5faGFuZGxlX3RpbWVvdXQpOiBGaXhlZCBhIGxvZ2ljIGVycm9yIHRoYXQgd291bGQgY2F1
c2UgLmNyYXNoZWQgYW5kCisgICAgICAgIC50aW1lZF9vdXQgYm90aCB0byBiZSBzZXQgdG8gVHJ1
ZSBpbiBjYXNlcyB3aGVyZSBDcmFzaCBSZXBvcnRlciB0b29rIGEgbG9uZyB0aW1lIHRvIHJ1bi4g
Tm93CisgICAgICAgIHdlIGJhaWwgb3V0IG9mIGhhbmRsaW5nIHRoZSBmYWlsdXJlIGFzIGEgdGlt
ZW91dCBpZiB3ZSBmaW5kIG91dCB0aGF0IHRoZSBwcm9jZXNzIGluIGZhY3QKKyAgICAgICAgY3Jh
c2hlZC4gV2UgdGVsbCBfY2hlY2tfZm9yX2NyYXNoIG5vdCB0byB3YWl0IGZvciBDcmFzaCBSZXBv
cnRlciBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgZG9uZQorICAgICAgICBzby4KKyAgICAgICAgKFNl
cnZlclByb2Nlc3Muc2V0X2NyYXNoZWQpOiBBZGRlZC4gV2hlbiB0aGUgcHJvY2VzcyBjcmFzaGVz
LCB3ZSB3YWl0IGZvciBDcmFzaCBSZXBvcnRlciB0bworICAgICAgICBmaW5pc2ggcnVubmluZyAo
dW5sZXNzIGRpcmVjdGVkIG90aGVyd2lzZSkgc28gd2UgY2FuIGJlIHN1cmUgdGhlIGNyYXNoIGxv
ZyBoYXMgYmVlbiBzYXZlZCB0bworICAgICAgICBkaXNrLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgIChXZWJLaXREcml2
ZXIuX2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2gpOiBDaGFuZ2VkIHRvIHVzZSBzZXRfY3Jhc2hlZC4g
KFRoaXMgYWxzbyBmaXhlZCBhIHR5cG8KKyAgICAgICAgdGhhdCB3b3VsZCBoYXZlIHBhcnRpYWxs
eSBicm9rZW4gY3Jhc2ggZGV0ZWN0aW9uIG9uIFdpbmRvd3MsIGlmIE5SV1Qgd29ya2VkIG9uIFdp
bmRvd3MuKQorCiAyMDExLTEyLTA2ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbUmVmYWN0b3JpbmddIEluIHdlYmtpdHB5L2JpbmRpbmdzL21haW4ucHks
IHJlcGxhY2Ugc3VicHJvY2Vzcy5Qb3BlbigpIHdpdGggRXhlY3V0aXZlCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vz
cy5weQppbmRleCA1YWY2MzRkY2NjNjhkMjE2Y2IxYWMzNmI5ZjMzNTVlYjdkODA5MmQwLi44Zjlh
MTBmYWRlYzkzMzUwMDhjNDVjN2U5OTQ2NjVlNzM2ZGJlZGNhIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3Mu
cHkKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgc2VsZi5f
cHJvYyA9IE5vbmUKICAgICAgICAgc2VsZi5fb3V0cHV0ID0gc3RyKCkgICMgYnl0ZXNhcnJheSgp
IG9uY2Ugd2UgcmVxdWlyZSBQeXRob24gMi42CiAgICAgICAgIHNlbGYuX2Vycm9yID0gc3RyKCkg
ICMgYnl0ZXNhcnJheSgpIG9uY2Ugd2UgcmVxdWlyZSBQeXRob24gMi42Ci0gICAgICAgIHNlbGYu
Y3Jhc2hlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuc2V0X2NyYXNoZWQoRmFsc2UpCiAgICAgICAg
IHNlbGYudGltZWRfb3V0ID0gRmFsc2UKIAogICAgIGRlZiBwcm9jZXNzX25hbWUoc2VsZik6CkBA
IC0xMjgsNyArMTI4LDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgZXhjZXB0IElP
RXJyb3IsIGU6CiAgICAgICAgICAgICBzZWxmLnN0b3AoKQogICAgICAgICAgICAgIyBzdG9wKCkg
Y2FsbHMgX3Jlc2V0KCksIHNvIHdlIGhhdmUgdG8gc2V0IGNyYXNoZWQgdG8gVHJ1ZSBhZnRlciBj
YWxsaW5nIHN0b3AoKS4KLSAgICAgICAgICAgIHNlbGYuY3Jhc2hlZCA9IFRydWUKKyAgICAgICAg
ICAgIHNlbGYuc2V0X2NyYXNoZWQoVHJ1ZSkKIAogICAgIGRlZiBfcG9wX3N0ZG91dF9saW5lX2lm
X3JlYWR5KHNlbGYpOgogICAgICAgICBpbmRleF9hZnRlcl9uZXdsaW5lID0gc2VsZi5fb3V0cHV0
LmZpbmQoJ1xuJykgKyAxCkBAIC0xNzgsOSArMTc4LDkgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoK
IAogICAgICAgICByZXR1cm4gc2VsZi5fcmVhZChkZWFkbGluZSwgcmV0cmlldmVfYnl0ZXNfZnJv
bV9zdGRvdXRfYnVmZmVyKQogCi0gICAgZGVmIF9jaGVja19mb3JfY3Jhc2goc2VsZik6CisgICAg
ZGVmIF9jaGVja19mb3JfY3Jhc2goc2VsZiwgd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI9VHJ1ZSk6
CiAgICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpICE9IE5vbmU6Ci0gICAgICAgICAgICBzZWxm
LmNyYXNoZWQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLnNldF9jcmFzaGVkKFRydWUsIHdhaXRf
Zm9yX2NyYXNoX3JlcG9ydGVyKQogICAgICAgICAgICAgc2VsZi5oYW5kbGVfaW50ZXJydXB0KCkK
IAogICAgIGRlZiBfbG9nKHNlbGYsIG1lc3NhZ2UpOgpAQCAtMjA3LDExICsyMDcsMTEgQEAgY2xh
c3MgU2VydmVyUHJvY2VzczoKIAogICAgIGRlZiBfaGFuZGxlX3RpbWVvdXQoc2VsZik6CiAgICAg
ICAgIHNlbGYuX2V4ZWN1dGl2ZS53YWl0X25ld2VzdChzZWxmLl9wb3J0LmlzX2NyYXNoX3JlcG9y
dGVyKQotICAgICAgICBpZiBub3Qgc2VsZi5jcmFzaGVkOgotICAgICAgICAgICAgc2VsZi5fY2hl
Y2tfZm9yX2NyYXNoKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfZm9yX2NyYXNoKHdhaXRfZm9yX2Ny
YXNoX3JlcG9ydGVyPUZhbHNlKQorICAgICAgICBpZiBzZWxmLmNyYXNoZWQ6CisgICAgICAgICAg
ICByZXR1cm4KICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBUcnVlCi0gICAgICAgIGlmIG5vdCBz
ZWxmLmNyYXNoZWQ6Ci0gICAgICAgICAgICBzZWxmLl9zYW1wbGUoKQorICAgICAgICBzZWxmLl9z
YW1wbGUoKQogCiAgICAgZGVmIF9zcGxpdF9zdHJpbmdfYWZ0ZXJfaW5kZXgoc2VsZiwgc3RyaW5n
LCBpbmRleCk6CiAgICAgICAgIHJldHVybiBzdHJpbmdbOmluZGV4XSwgc3RyaW5nW2luZGV4Ol0K
QEAgLTI4OCwzICsyODgsOSBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICAgICAgICAg
IHNlbGYuX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCiAgICAgICAgICAg
ICAgICAgX2xvZy53YXJuaW5nKCdraWxsZWQnKQogICAgICAgICBzZWxmLl9yZXNldCgpCisKKyAg
ICBkZWYgc2V0X2NyYXNoZWQoc2VsZiwgY3Jhc2hlZCwgd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI9
VHJ1ZSk6CisgICAgICAgIHNlbGYuY3Jhc2hlZCA9IGNyYXNoZWQKKyAgICAgICAgaWYgbm90IHNl
bGYuY3Jhc2hlZCBvciBub3Qgd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI6CisgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlLndhaXRfbmV3ZXN0KHNlbGYuX3BvcnQuaXNf
Y3Jhc2hfcmVwb3J0ZXIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IDU4ZjU0OWFhYTc2ZDhmOTFhOTFmMWQ5OTdhZGU2YjIy
YjcyOTRjYjAuLjU0Y2ZiZmU2YzYyMmVmODUyZjUwOGMzZGIyMDQ3OTBiMDBiMjNhNjAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5
CkBAIC00OTYsNyArNDk2LDcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAg
IGlmIGVycm9yX2xpbmUgPT0gIiNDUkFTSEVEXG4iOgogICAgICAgICAgICAgIyBUaGlzIGlzIHVz
ZWQgb24gV2luZG93cyB0byByZXBvcnQgdGhhdCB0aGUgcHJvY2VzcyBoYXMgY3Jhc2hlZAogICAg
ICAgICAgICAgIyBTZWUgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjU1MzcuCi0g
ICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaCA9IFRydWUKKyAgICAgICAgICAg
IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnNldF9jcmFzaGVkKFRydWUpCiAgICAgICAgIGVsaWYgZXJy
b3JfbGluZSA9PSAiI0NSQVNIRUQgLSBXZWJQcm9jZXNzXG4iOgogICAgICAgICAgICAgIyBXZWJL
aXRUZXN0UnVubmVyIHVzZXMgdGhpcyB0byByZXBvcnQgdGhhdCB0aGUgV2ViUHJvY2VzcyBzdWJw
cm9jZXNzIGNyYXNoZWQuCiAgICAgICAgICAgICBzZWxmLl9zdWJwcm9jZXNzX2NyYXNoZWQoIldl
YlByb2Nlc3MiKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118075</attachid>
            <date>2011-12-06 11:20:10 -0800</date>
            <delta_ts>2011-12-19 10:49:39 -0800</delta_ts>
            <desc>Wait for Crash Reporter to finish even when it lets the crashed process die quickly</desc>
            <filename>bug-71380-20111206142009.patch</filename>
            <type>text/plain</type>
            <size>6328</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTI4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDdiNjZjMjcxOTczMDFhZDRhNWI4MTQ0NmZjMTdlOTYy
NzRkZTcxMi4uNTgwODY5MTQxMjFkZDgwYjRhZTk5MGNhMDliNjNiMjIwZDEzOGE5NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDExLTEyLTA2ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBXYWl0IGZvciBDcmFzaCBSZXBvcnRlciB0byBmaW5pc2ggZXZlbiB3aGVuIGl0IGxldHMgdGhl
IGNyYXNoZWQgcHJvY2VzcyBkaWUgcXVpY2tseQorCisgICAgICAgIE5SV1Qgd2FzIG9ubHkgd2Fp
dGluZyBmb3IgQ3Jhc2ggUmVwb3J0ZXIgaW4gY2FzZXMgd2hlcmUgaXQgd2FzIGtlZXBpbmcgdGhl
IGNyYXNoZWQgcHJvY2VzcworICAgICAgICBhbGl2ZSBiZXlvbmQgdGhlIG5vcm1hbCB0aW1lb3V0
IGxpbWl0LiBJbiBjYXNlcyB3aGVyZSB0aGUgY3Jhc2hlZCBwcm9jZXNzIHdhcyBhYmxlIHRvIGRp
ZQorICAgICAgICBmYXN0ZXIsIE5SV1Qgd291bGQgYXNzdW1lIHRoYXQgQ3Jhc2ggUmVwb3J0ZXIg
aGFkIGZpbmlzaGVkIGV2ZW4gdGhvdWdoIGl0IG9mdGVuIHdhcyBzdGlsbAorICAgICAgICBydW5u
aW5nLCB3aGljaCB3b3VsZCBsZWFkIHRvIGFuIGluY29ycmVjdCBjcmFzaCBsb2cgYmVpbmcgcGlj
a2VkIHVwLgorCisgICAgICAgIFBhcnQgb2YgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzEzODA+IE5S
V1QgaW5jb3JyZWN0bHkgYXNzb2NpYXRlcyBjcmFzaCBsb2dzIHdpdGggdGVzdHMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6CisgICAgICAgIChTZXJ2ZXJQ
cm9jZXNzLl9yZXNldCk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLndyaXRlKToKKyAgICAgICAg
KFNlcnZlclByb2Nlc3MuX2NoZWNrX2Zvcl9jcmFzaCk6IENoYW5nZWQgdG8gdXNlIG5ldyBzZXRf
Y3Jhc2hlZCBmdW5jdGlvbiBpbnN0ZWFkIG9mIHNldHRpbmcKKyAgICAgICAgLmNyYXNoZWQgZGly
ZWN0bHkuIEFkZGVkIHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyIHBhcmFtZXRlciwgd2hpY2ggd2Ug
cGFzcyBhbG9uZyB0bworICAgICAgICBzZXRfY3Jhc2hlZC4KKworICAgICAgICAoU2VydmVyUHJv
Y2Vzcy5faGFuZGxlX3RpbWVvdXQpOiBGaXhlZCBhIGxvZ2ljIGVycm9yIHRoYXQgd291bGQgY2F1
c2UgLmNyYXNoZWQgYW5kCisgICAgICAgIC50aW1lZF9vdXQgYm90aCB0byBiZSBzZXQgdG8gVHJ1
ZSBpbiBjYXNlcyB3aGVyZSBDcmFzaCBSZXBvcnRlciB0b29rIGEgbG9uZyB0aW1lIHRvIHJ1bi4g
Tm93CisgICAgICAgIHdlIGJhaWwgb3V0IG9mIGhhbmRsaW5nIHRoZSBmYWlsdXJlIGFzIGEgdGlt
ZW91dCBpZiB3ZSBmaW5kIG91dCB0aGF0IHRoZSBwcm9jZXNzIGluIGZhY3QKKyAgICAgICAgY3Jh
c2hlZC4gV2UgdGVsbCBfY2hlY2tfZm9yX2NyYXNoIG5vdCB0byB3YWl0IGZvciBDcmFzaCBSZXBv
cnRlciBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgZG9uZQorICAgICAgICBzby4KKyAgICAgICAgKFNl
cnZlclByb2Nlc3Muc2V0X2NyYXNoZWQpOiBBZGRlZC4gV2hlbiB0aGUgcHJvY2VzcyBjcmFzaGVz
LCB3ZSB3YWl0IGZvciBDcmFzaCBSZXBvcnRlciB0bworICAgICAgICBmaW5pc2ggcnVubmluZyAo
dW5sZXNzIGRpcmVjdGVkIG90aGVyd2lzZSkgc28gd2UgY2FuIGJlIHN1cmUgdGhlIGNyYXNoIGxv
ZyBoYXMgYmVlbiBzYXZlZCB0bworICAgICAgICBkaXNrLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5weToKKyAg
ICAgICAgKFRyaXZpYWxNb2NrUG9ydC5pc19jcmFzaF9yZXBvcnRlcik6IEFkZGVkLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAg
ICAgIChXZWJLaXREcml2ZXIuX2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2gpOiBDaGFuZ2VkIHRvIHVz
ZSBzZXRfY3Jhc2hlZC4gKFRoaXMgYWxzbyBmaXhlZCBhIHR5cG8KKyAgICAgICAgdGhhdCB3b3Vs
ZCBoYXZlIHBhcnRpYWxseSBicm9rZW4gY3Jhc2ggZGV0ZWN0aW9uIG9uIFdpbmRvd3MsIGlmIE5S
V1Qgd29ya2VkIG9uIFdpbmRvd3MuKQorCiAyMDExLTEyLTA2ICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbUmVmYWN0b3JpbmddIEluIHdlYmtpdHB5L2Jp
bmRpbmdzL21haW4ucHksIHJlcGxhY2Ugc3VicHJvY2Vzcy5Qb3BlbigpIHdpdGggRXhlY3V0aXZl
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Nl
cnZlcl9wcm9jZXNzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9zZXJ2ZXJfcHJvY2Vzcy5weQppbmRleCA1YWY2MzRkY2NjNjhkMjE2Y2IxYWMzNmI5ZjMzNTVl
YjdkODA5MmQwLi44ZjlhMTBmYWRlYzkzMzUwMDhjNDVjN2U5OTQ2NjVlNzM2ZGJlZGNhIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9w
cm9jZXNzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
c2VydmVyX3Byb2Nlc3MucHkKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoK
ICAgICAgICAgc2VsZi5fcHJvYyA9IE5vbmUKICAgICAgICAgc2VsZi5fb3V0cHV0ID0gc3RyKCkg
ICMgYnl0ZXNhcnJheSgpIG9uY2Ugd2UgcmVxdWlyZSBQeXRob24gMi42CiAgICAgICAgIHNlbGYu
X2Vycm9yID0gc3RyKCkgICMgYnl0ZXNhcnJheSgpIG9uY2Ugd2UgcmVxdWlyZSBQeXRob24gMi42
Ci0gICAgICAgIHNlbGYuY3Jhc2hlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuc2V0X2NyYXNoZWQo
RmFsc2UpCiAgICAgICAgIHNlbGYudGltZWRfb3V0ID0gRmFsc2UKIAogICAgIGRlZiBwcm9jZXNz
X25hbWUoc2VsZik6CkBAIC0xMjgsNyArMTI4LDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAg
ICAgICAgZXhjZXB0IElPRXJyb3IsIGU6CiAgICAgICAgICAgICBzZWxmLnN0b3AoKQogICAgICAg
ICAgICAgIyBzdG9wKCkgY2FsbHMgX3Jlc2V0KCksIHNvIHdlIGhhdmUgdG8gc2V0IGNyYXNoZWQg
dG8gVHJ1ZSBhZnRlciBjYWxsaW5nIHN0b3AoKS4KLSAgICAgICAgICAgIHNlbGYuY3Jhc2hlZCA9
IFRydWUKKyAgICAgICAgICAgIHNlbGYuc2V0X2NyYXNoZWQoVHJ1ZSkKIAogICAgIGRlZiBfcG9w
X3N0ZG91dF9saW5lX2lmX3JlYWR5KHNlbGYpOgogICAgICAgICBpbmRleF9hZnRlcl9uZXdsaW5l
ID0gc2VsZi5fb3V0cHV0LmZpbmQoJ1xuJykgKyAxCkBAIC0xNzgsOSArMTc4LDkgQEAgY2xhc3Mg
U2VydmVyUHJvY2VzczoKIAogICAgICAgICByZXR1cm4gc2VsZi5fcmVhZChkZWFkbGluZSwgcmV0
cmlldmVfYnl0ZXNfZnJvbV9zdGRvdXRfYnVmZmVyKQogCi0gICAgZGVmIF9jaGVja19mb3JfY3Jh
c2goc2VsZik6CisgICAgZGVmIF9jaGVja19mb3JfY3Jhc2goc2VsZiwgd2FpdF9mb3JfY3Jhc2hf
cmVwb3J0ZXI9VHJ1ZSk6CiAgICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpICE9IE5vbmU6Ci0g
ICAgICAgICAgICBzZWxmLmNyYXNoZWQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLnNldF9jcmFz
aGVkKFRydWUsIHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyKQogICAgICAgICAgICAgc2VsZi5oYW5k
bGVfaW50ZXJydXB0KCkKIAogICAgIGRlZiBfbG9nKHNlbGYsIG1lc3NhZ2UpOgpAQCAtMjA3LDEx
ICsyMDcsMTEgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKIAogICAgIGRlZiBfaGFuZGxlX3RpbWVv
dXQoc2VsZik6CiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS53YWl0X25ld2VzdChzZWxmLl9wb3J0
LmlzX2NyYXNoX3JlcG9ydGVyKQotICAgICAgICBpZiBub3Qgc2VsZi5jcmFzaGVkOgotICAgICAg
ICAgICAgc2VsZi5fY2hlY2tfZm9yX2NyYXNoKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfZm9yX2Ny
YXNoKHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyPUZhbHNlKQorICAgICAgICBpZiBzZWxmLmNyYXNo
ZWQ6CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBUcnVlCi0g
ICAgICAgIGlmIG5vdCBzZWxmLmNyYXNoZWQ6Ci0gICAgICAgICAgICBzZWxmLl9zYW1wbGUoKQor
ICAgICAgICBzZWxmLl9zYW1wbGUoKQogCiAgICAgZGVmIF9zcGxpdF9zdHJpbmdfYWZ0ZXJfaW5k
ZXgoc2VsZiwgc3RyaW5nLCBpbmRleCk6CiAgICAgICAgIHJldHVybiBzdHJpbmdbOmluZGV4XSwg
c3RyaW5nW2luZGV4Ol0KQEAgLTI4OCwzICsyODgsOSBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgog
ICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5w
aWQpCiAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdraWxsZWQnKQogICAgICAgICBzZWxm
Ll9yZXNldCgpCisKKyAgICBkZWYgc2V0X2NyYXNoZWQoc2VsZiwgY3Jhc2hlZCwgd2FpdF9mb3Jf
Y3Jhc2hfcmVwb3J0ZXI9VHJ1ZSk6CisgICAgICAgIHNlbGYuY3Jhc2hlZCA9IGNyYXNoZWQKKyAg
ICAgICAgaWYgbm90IHNlbGYuY3Jhc2hlZCBvciBub3Qgd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI6
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlLndhaXRfbmV3ZXN0
KHNlbGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191
bml0dGVzdC5weQppbmRleCAwMmIxNzAyYjI1N2QzMjkzNTUwODM0ODU5ZWQyY2MzOTRiN2U5NzRk
Li5jYWU2YjAyYzU5NDM2MWZhNDY4NDA0MDI0ZTI5NjhjMDFlOWQ1MDk0IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzX3Vu
aXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
c2VydmVyX3Byb2Nlc3NfdW5pdHRlc3QucHkKQEAgLTUwLDYgKzUwLDkgQEAgY2xhc3MgVHJpdmlh
bE1vY2tQb3J0KG9iamVjdCk6CiAgICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhzZWxmLCBwcm9jZXNz
X25hbWUsIHByb2Nlc3NfcGlkKToKICAgICAgICAgcGFzcwogCisgICAgZGVmIGlzX2NyYXNoX3Jl
cG9ydGVyKHNlbGYsIHByb2Nlc3NfbmFtZSk6CisgICAgICAgIHJldHVybiBGYWxzZQorCiAKIGNs
YXNzIE1vY2tGaWxlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcl9wcm9j
ZXNzKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKaW5kZXggNThmNTQ5YWFhNzZkOGY5MWE5MWYxZDk5N2FkZTZiMjJiNzI5NGNiMC4u
NTRjZmJmZTZjNjIyZWY4NTJmNTA4YzNkYjIwNDc5MGIwMGIyM2E2MCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKQEAgLTQ5Niw3
ICs0OTYsNyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAgICAgaWYgZXJyb3Jf
bGluZSA9PSAiI0NSQVNIRURcbiI6CiAgICAgICAgICAgICAjIFRoaXMgaXMgdXNlZCBvbiBXaW5k
b3dzIHRvIHJlcG9ydCB0aGF0IHRoZSBwcm9jZXNzIGhhcyBjcmFzaGVkCiAgICAgICAgICAgICAj
IFNlZSBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC82NTUzNy4KLSAgICAgICAgICAg
IHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fc2Vy
dmVyX3Byb2Nlc3Muc2V0X2NyYXNoZWQoVHJ1ZSkKICAgICAgICAgZWxpZiBlcnJvcl9saW5lID09
ICIjQ1JBU0hFRCAtIFdlYlByb2Nlc3NcbiI6CiAgICAgICAgICAgICAjIFdlYktpdFRlc3RSdW5u
ZXIgdXNlcyB0aGlzIHRvIHJlcG9ydCB0aGF0IHRoZSBXZWJQcm9jZXNzIHN1YnByb2Nlc3MgY3Jh
c2hlZC4KICAgICAgICAgICAgIHNlbGYuX3N1YnByb2Nlc3NfY3Jhc2hlZCgiV2ViUHJvY2VzcyIp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132184</attachid>
            <date>2012-03-15 20:28:09 -0700</date>
            <delta_ts>2012-03-16 15:21:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71380-20120315202805.patch</filename>
            <type>text/plain</type>
            <size>32473</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzUwMjlkNzZhNzhhMzcwMDNlMmM3MThhOTVlZDg5NTFh
YWQwOTAyYy4uMTEwMzRjNjg4MmIwOGZkMTgyZDc0NjAzNzE5Y2ZjMzhiMGRjNjg3YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1
IEBACisyMDEyLTAzLTE1ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIE5SV1QgaW5jb3JyZWN0bHkgYXNzb2NpYXRlcyBjcmFzaCBsb2dzIHdpdGggdGVzdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBh
IHdvcmstaW4tcHJvZ3Jlc3MgcGF0Y2ggdG8gY2xlYW4gdXAgaG93IHdlIGFyZSBoYW5kbGluZwor
ICAgICAgICBDcmFzaExvZ3MuIFNvIGZhciBpdCBoYXMgb25seSBiZWVuIHRlc3RlZCB3LyBBcHBs
ZSBNYWMgRFJUIG9uIFNub3dMZW9wYXJkCisgICAgICAgIHJ1bm5pbmcgb25lIERSVCBhdCBhIHRp
bWUuCisKKyAgICAgICAgUHJpb3IgdG8gdGhpcyBwYXRjaCBJIHdhcyBvbmx5IGdldHRpbmcgdGhl
IGZpcnN0IGxpbmUgb2YgdGhlCisgICAgICAgIGNyYXNoIGxvZywgYW5kIHRoZSBjb2RlIHdhcyBo
YXJkIHRvIGZvbGxvdy4KKworICAgICAgICBCYXNpYyBpZGVhcyBpbiB0aGlzIHBhdGNoOgorICAg
ICAgICAxKSBTaW1wbGlmeSB0aGUgY29kZSB0aGF0IGFjdHVhbGx5IGZldGNoZXMgdGhlIGNyYXNo
IGxvZy4KKyAgICAgICAgICAgV2UgaGFkIHNvbWUgb3B0aW1pemF0aW9ucyB0aGF0IGF0dGVtcHRl
ZCB0byBiZSBzbWFydCBhbmQgb25seQorICAgICAgICAgICByZWFkIHRoZSBmaXJzdCBsaW5lIG9m
IGVhY2ggbG9nIGZpbGUgd2UgZm91bmQsIGJ1dCB0aG9zZQorICAgICAgICAgICBvcHRpbWl6YXRp
b25zIHdlcmUgYWN0dWFsbHkgYnVnZ3kgYW5kIEkgZG91YnQgaXQgc2F2ZWQgdXMgYW55CisgICAg
ICAgICAgIHRpbWUgKGFuZCBJJ20gbm90IHN1cmUgd2UgcmVhbGx5IGV2ZW4gY2FyZSBnaXZlbiBo
b3cgc2xvdworICAgICAgICAgICBjcmFzaCByZXBvcnRpbmcgaXMpLgorICAgICAgICAyKSBTZXJ2
ZXJQcm9jZXNzIG5vIGxvbmdlciBoYXMgYW55dGhpbmcgdG8gZG8gd2l0aCBjcmFzaAorICAgICAg
ICByZXBvcnRpbmc7IGl0J3MgYW4gb3J0aG9nb25hbCBjb25jZXB0LCBhbmQgaXQgbWFkZSBmb2xs
b3dpbmcgdGhlCisgICAgICAgIGNvZGUgZGlmZmljdWx0LiBOb3cgYWxsIG9mIHRoZSBsb2dpYyBv
ZiB3aGljaCBwcm9jZXNzZXMgdG8gd2FpdAorICAgICAgICBmb3IgYW5kIHdoZW4gYXJlIGNvbnRh
aW5lZCBzb2xlbHkgaW4gV2ViS2l0RHJpdmVyLiBFdmVudHVhbGx5IHdlCisgICAgICAgIG1pZ2h0
IG5lZWQgcGxhdGZvcm0tc3BlY2lmaWMgc3ViY2xhc3NlcyBvZiBXZWJLaXREcml2ZXIgdG8gZ2V0
CisgICAgICAgIHRoZSBjb3JyZWN0IGJlaGF2aW9yLgorICAgICAgICAzKSBXZWJLaXREcml2ZXIo
KSBzaG91bGQgaGFuZCB0aGUgc3RhY2sgdHJhY2UgLyBjcmFzaCBsb2cgYmFjayB0bworICAgICAg
ICB0aGUgY2FsbGluZyBjb2RlLCB3aGljaCBjYW4gdGhlbiB0cmVhdCBpdCBnZW5lcmljYWxseSBh
bmQgcG9ydGFibHkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBuZWVkcyBtb3JlIHRlc3Rpbmcgb2Yg
Ym90aCBXZWJLaXRUZXN0UnVubmVyIGFuZAorICAgICAgICBkaWZmZXJlbnQgb3MvdmVyc2lvbiBj
b21iaW5hdGlvbnMsIGJ1dCBpdCdzIGEgc3RhcnQuIEFsc28sIHRoZQorICAgICAgICBjcmFzaCBs
b2ctcmVsYXRlZCB1bml0IHRlc3RzIGFyZSBmYWlsaW5nIGZvciBmYWlybHkgb2J2aW91cyByZWFz
b25zLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9n
cy5weTogQ2xlYW4gdXAgcmVhZGluZyB0aGUgbG9ncy4KKyAgICAgICAgKENyYXNoTG9ncy5maW5k
X25ld2VzdF9sb2cpOgorICAgICAgICAoQ3Jhc2hMb2dzLl9maW5kX25ld2VzdF9sb2dfZGFyd2lu
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90
ZXN0X3Jlc3VsdF93cml0ZXIucHk6IEp1c3QKKyAgICAgICAgICBnZXQgdGhlIGNyYXNoIGxvZyBm
cm9tIHRoZSBkcml2ZXIgb3V0cHV0LgorICAgICAgICAod3JpdGVfdGVzdF9yZXN1bHQpOgorICAg
ICAgICAoVGVzdFJlc3VsdFdyaXRlci53cml0ZV9jcmFzaF9sb2cpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weTogUmVtb3ZlIGlzX2NyYXNoX3Jl
cG9ydGVyKCkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9k
cml2ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9t
YWMucHk6IFJlbW92ZSBpc19jcmFzaF9yZXBvcnRlcigpLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6IExvdHMgb2YgY2xlYW4g
dXAgb2YgaG93IGNyYXNoZXMgYXJlIGhhbmRsZWQuCisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9y
ZXNldCk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9oYW5kbGVfcG9zc2libGVfaW50ZXJydXB0
KToKKyAgICAgICAgKFNlcnZlclByb2Nlc3Mud3JpdGUpOgorICAgICAgICAoU2VydmVyUHJvY2Vz
cy5yZWFkX3N0ZG91dCk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLmhhc19jcmFzaGVkKTogQWRk
IGEgbmV3IGhhc19jcmFzaGVkKCkgcm91dGluZSB0aGF0IG1heSBhY3R1YWxseSBkbyB3b3JrCisg
ICAgICAgICAgdG8gY2hlY2sgZm9yIGNyYXNoZXMgdG8gcmVwbGFjZSB0aGUgJ2NyYXNoZWQnIHBy
b3BlcnR5LgorICAgICAgICAoU2VydmVyUHJvY2Vzcy5fcmVhZCk6CisgICAgICAgIChTZXJ2ZXJQ
cm9jZXNzLnN0b3ApOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvc2VydmVyX3Byb2Nlc3NfdW5pdHRlc3QucHk6IFJlbW92ZSBpc19jcmFzaF9yZXBvcnRlcigp
LgorICAgICAgICAoVHJpdmlhbE1vY2tQb3J0LmNoZWNrX2Zvcl9sZWFrcyk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6IExvdHMgb2YgY2xl
YW4gdXAgb2YgaG93IGNyYXNoZXMgYXJlIGhhbmRsZWQuKCkKKyAgICAgICAgKFdlYktpdFBvcnQu
X3JlYWRfaW1hZ2VfZGlmZik6CisgICAgICAgIChXZWJLaXREcml2ZXIuaGFzX2NyYXNoZWQpOgor
ICAgICAgICAoV2ViS2l0RHJpdmVyLnJ1bl90ZXN0KToKKyAgICAgICAgKFdlYktpdERyaXZlci5f
cmVhZF9ibG9jayk6CisgICAgICAgIChXZWJLaXREcml2ZXIuX3dhaXRfZm9yX2NyYXNoX3JlcG9y
dGVyKToKKwogMjAxMi0wMy0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFRoZSBjb21taXQtcXVldWUgY2FuIGhhbmcgd2hlbiB0aGUgdGVzdF9leHBlY3RhdGlv
bnMudHh0IHN0eWxlIGNoZWNrIGZhaWxzIGR1cmluZyBjb21taXQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5CmluZGV4IGE2YjY1NzVmNjA0
MTMxMTNjYTYxZjFmNzk0YTMzNmVlOTI4OWE2OTAuLjExZTAwMmVlMmI3M2Y1MmUwYmJkYWFmY2Q1
Y2E2NzBmMWVlMzc5NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9jcmFzaGxvZ3MucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2NyYXNobG9ncy5weQpAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBDcmFzaExvZ3Mob2Jq
ZWN0KToKICAgICBkZWYgZmluZF9uZXdlc3RfbG9nKHNlbGYsIHByb2Nlc3NfbmFtZSwgcGlkPU5v
bmUpOgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5fZmluZF9uZXdlc3RfbG9nX2Rhcndpbihwcm9jZXNzX25hbWUsIHBpZCkKKyAg
ICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBfbG9nX2RpcmVjdG9yeV9kYXJ3aW4oc2VsZik6
CiAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lzdGVtLmV4cGFuZHVzZXIoIn4i
KQpAQCAtNTQsMjMgKzU1LDE3IEBAIGNsYXNzIENyYXNoTG9ncyhvYmplY3QpOgogCiAgICAgICAg
IGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9sb2dfZGlyZWN0b3J5X2RhcndpbigpCiAgICAgICAgIGxv
Z3MgPSBzZWxmLl9maWxlc3lzdGVtLmZpbGVzX3VuZGVyKGxvZ19kaXJlY3RvcnksIGZpbGVfZmls
dGVyPWlzX2NyYXNoX2xvZykKLSAgICAgICAgaWYgbm90IGxvZ3M6Ci0gICAgICAgICAgICByZXR1
cm4gTm9uZQogICAgICAgICBmaXJzdF9saW5lX3JlZ2V4ID0gcmUuY29tcGlsZShyJ15Qcm9jZXNz
OlxzKyg/UDxwcm9jZXNzX25hbWU+LiopIFxbKD9QPHBpZD5cZCspXF0kJykKKyAgICAgICAgZXJy
b3JzID0gJycKICAgICAgICAgZm9yIHBhdGggaW4gcmV2ZXJzZWQoc29ydGVkKGxvZ3MpKToKICAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuX2ZpbGVzeXN0ZW0ub3Bl
bl90ZXh0X2ZpbGVfZm9yX3JlYWRpbmcocGF0aCkgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAg
Zmlyc3RfbGluZSA9IGYucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGYgPSBzZWxmLl9maWxl
c3lzdGVtLnJlYWRfdGV4dF9maWxlKHBhdGgpCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBmaXJz
dF9saW5lX3JlZ2V4Lm1hdGNoKGZbMDpmLmZpbmQoJ1xuJyldKQorICAgICAgICAgICAgICAgIGlm
IG1hdGNoIGFuZCBtYXRjaC5ncm91cCgncHJvY2Vzc19uYW1lJykgPT0gcHJvY2Vzc19uYW1lIGFu
ZCAocGlkIGlzIE5vbmUgb3IgaW50KG1hdGNoLmdyb3VwKCdwaWQnKSkgPT0gcGlkKToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9ycyArIGYKKyAgICAgICAgICAgIGV4Y2VwdCBJT0Vy
cm9yLCBlOgorICAgICAgICAgICAgICAgICMgVGhlcmUncyBhIGNoYW5jZSB0aGF0IHRoZSBmaWxl
IHdlIGp1c3QgZmFpbGVkIHRvIHJlYWQgaXMgdGhlIG9uZSB3ZSB3YW50LAorICAgICAgICAgICAg
ICAgICMgc28gd2UgcmVjb3JkIHRoZSBlcnJvciBpbiB0aGUgImNyYXNoIGxvZyIgYW5kIGtlZXAg
bG9va2luZy4KKyAgICAgICAgICAgICAgICBlcnJvcnMgKz0gIkVSUk9SOiBGYWlsZWQgdG8gcmVh
ZCAnJXMnOiAlc1xuIiAlIChwYXRoLCBzdHIoZSkpCiAKLSAgICAgICAgICAgICAgICAgICAgbWF0
Y2ggPSBmaXJzdF9saW5lX3JlZ2V4Lm1hdGNoKGZpcnN0X2xpbmUpCi0gICAgICAgICAgICAgICAg
ICAgIGlmIG5vdCBtYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAg
ICAgICAgICAgICAgICAgIGlmIG1hdGNoLmdyb3VwKCdwcm9jZXNzX25hbWUnKSAhPSBwcm9jZXNz
X25hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAg
ICAgICBpZiBwaWQgaXMgbm90IE5vbmUgYW5kIGludChtYXRjaC5ncm91cCgncGlkJykpICE9IHBp
ZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAg
ICAgZi5zZWVrKDAsIG9zLlNFRUtfU0VUKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZi5y
ZWFkKCkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisgICAgICAgIHJldHVybiBlcnJvcnMgb3IgTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVy
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVz
dF9yZXN1bHRfd3JpdGVyLnB5CmluZGV4IGE0MGMwOTBiNTgwOGRhZThmNzk1ZWM1OWMzOWNkZWNk
ZDkzMjI3NmUuLjY0YjEwOWQ1NWM0ZDNmYjNhZGNkYTI4NTVlYWVjMjQzNTZlNDRjMTggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rl
c3RfcmVzdWx0X3dyaXRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkKQEAgLTI5LDcgKzI5LDYgQEAK
IAogaW1wb3J0IGxvZ2dpbmcKIAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9n
cyBpbXBvcnQgQ3Jhc2hMb2dzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1w
b3J0IHRlc3RfZmFpbHVyZXMKIAogCkBAIC00MCw3ICszOSw4IEBAIGRlZiB3cml0ZV90ZXN0X3Jl
c3VsdChwb3J0LCB0ZXN0X25hbWUsIGRyaXZlcl9vdXRwdXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfZHJpdmVyX291dHB1dCwgZmFpbHVyZXMpOgogICAgICIiIldyaXRlIHRoZSB0
ZXN0IHJlc3VsdCB0byB0aGUgcmVzdWx0IG91dHB1dCBkaXJlY3RvcnkuIiIiCiAgICAgcm9vdF9v
dXRwdXRfZGlyID0gcG9ydC5yZXN1bHRzX2RpcmVjdG9yeSgpCi0gICAgd3JpdGVyID0gVGVzdFJl
c3VsdFdyaXRlcihwb3J0LCByb290X291dHB1dF9kaXIsIHRlc3RfbmFtZSkKKyAgICAjIEZJWE1F
OiBwYXNzIGluIHRoZSBmaWxlc3lzdGVtLCBkb24ndCBnZXQgaXQgZnJvbSB0aGUgcG9ydC4KKyAg
ICB3cml0ZXIgPSBUZXN0UmVzdWx0V3JpdGVyKHBvcnQuX2ZpbGVzeXN0ZW0sIHBvcnQsIHJvb3Rf
b3V0cHV0X2RpciwgdGVzdF9uYW1lKQogICAgIGlmIGRyaXZlcl9vdXRwdXQuZXJyb3I6CiAgICAg
ICAgIHdyaXRlci53cml0ZV9zdGRlcnIoZHJpdmVyX291dHB1dC5lcnJvcikKIApAQCAtNjMsNyAr
NjMsNyBAQCBkZWYgd3JpdGVfdGVzdF9yZXN1bHQocG9ydCwgdGVzdF9uYW1lLCBkcml2ZXJfb3V0
cHV0LAogICAgICAgICAgICAgd3JpdGVyLndyaXRlX2F1ZGlvX2ZpbGVzKGRyaXZlcl9vdXRwdXQu
YXVkaW8sIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuYXVkaW8pCiAgICAgICAgIGVsaWYgaXNpbnN0
YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaCk6CiAgICAgICAgICAgICBj
cmFzaGVkX2RyaXZlcl9vdXRwdXQgPSBleHBlY3RlZF9kcml2ZXJfb3V0cHV0IGlmIGZhaWx1cmUu
aXNfcmVmdGVzdCBlbHNlIGRyaXZlcl9vdXRwdXQKLSAgICAgICAgICAgIHdyaXRlci53cml0ZV9j
cmFzaF9yZXBvcnQoY3Jhc2hlZF9kcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vzc19uYW1lLCBj
cmFzaGVkX2RyaXZlcl9vdXRwdXQuZXJyb3IpCisgICAgICAgICAgICB3cml0ZXIud3JpdGVfY3Jh
c2hfbG9nKGNyYXNoZWRfZHJpdmVyX291dHB1dC5jcmFzaF9sb2cpCiAgICAgICAgIGVsaWYgaXNp
bnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2gpOgog
ICAgICAgICAgICAgd3JpdGVyLndyaXRlX2ltYWdlX2ZpbGVzKGRyaXZlcl9vdXRwdXQuaW1hZ2Us
IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2UpCiAgICAgICAgICAgICAjIEZJWE1FOiBUaGlz
IHdvcmsgc2hvdWxkIGJlIGRvbmUgZWFybGllciBpbiB0aGUgcGlwZWxpbmUgKGUuZy4sIHdoZW4g
d2UgY29tcGFyZSBpbWFnZXMgZm9yIG5vbi1yZWYgdGVzdHMpLgpAQCAtOTYsMTQgKzk2LDE1IEBA
IGNsYXNzIFRlc3RSZXN1bHRXcml0ZXIob2JqZWN0KToKICAgICBGSUxFTkFNRV9TVUZGSVhfSU1B
R0VfRElGRiA9ICItZGlmZi5wbmciCiAgICAgRklMRU5BTUVfU1VGRklYX0lNQUdFX0RJRkZTX0hU
TUwgPSAiLWRpZmZzLmh0bWwiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgcm9vdF9v
dXRwdXRfZGlyLCB0ZXN0X25hbWUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlc3lzdGVt
LCBwb3J0LCByb290X291dHB1dF9kaXIsIHRlc3RfbmFtZSk6CisgICAgICAgIHNlbGYuX2ZpbGVz
eXN0ZW0gPSBmaWxlc3lzdGVtCiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNl
bGYuX3Jvb3Rfb3V0cHV0X2RpciA9IHJvb3Rfb3V0cHV0X2RpcgogICAgICAgICBzZWxmLl90ZXN0
X25hbWUgPSB0ZXN0X25hbWUKIAogICAgIGRlZiBfbWFrZV9vdXRwdXRfZGlyZWN0b3J5KHNlbGYp
OgogICAgICAgICAiIiJDcmVhdGVzIHRoZSBvdXRwdXQgZGlyZWN0b3J5IChpZiBuZWVkZWQpIGZv
ciBhIGdpdmVuIHRlc3QgZmlsZW5hbWUuIiIiCi0gICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmls
ZXN5c3RlbQorICAgICAgICBmcyA9IHNlbGYuX2ZpbGVzeXN0ZW0KICAgICAgICAgb3V0cHV0X2Zp
bGVuYW1lID0gZnMuam9pbihzZWxmLl9yb290X291dHB1dF9kaXIsIHNlbGYuX3Rlc3RfbmFtZSkK
ICAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMuZGlybmFtZShvdXRwdXRfZmlsZW5h
bWUpKQogCkBAIC0xMTksMTIgKzEyMCwxMiBAQCBjbGFzcyBUZXN0UmVzdWx0V3JpdGVyKG9iamVj
dCk6CiAgICAgICAgIFJldHVybjoKICAgICAgICAgICBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUg
b3V0cHV0IGZpbGVuYW1lCiAgICAgICAgICIiIgotICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2Zp
bGVzeXN0ZW0KKyAgICAgICAgZnMgPSBzZWxmLl9maWxlc3lzdGVtCiAgICAgICAgIG91dHB1dF9m
aWxlbmFtZSA9IGZzLmpvaW4oc2VsZi5fcm9vdF9vdXRwdXRfZGlyLCBzZWxmLl90ZXN0X25hbWUp
CiAgICAgICAgIHJldHVybiBmcy5zcGxpdGV4dChvdXRwdXRfZmlsZW5hbWUpWzBdICsgbW9kaWZp
ZXIKIAogICAgIGRlZiBfb3V0cHV0X3Rlc3RuYW1lKHNlbGYsIG1vZGlmaWVyKToKLSAgICAgICAg
ZnMgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIGZzID0gc2VsZi5fZmlsZXN5c3Rl
bQogICAgICAgICByZXR1cm4gZnMuc3BsaXRleHQoZnMuYmFzZW5hbWUoc2VsZi5fdGVzdF9uYW1l
KSlbMF0gKyBtb2RpZmllcgogCiAgICAgZGVmIHdyaXRlX291dHB1dF9maWxlcyhzZWxmLCBmaWxl
X3R5cGUsIG91dHB1dCwgZXhwZWN0ZWQpOgpAQCAtMTQ0LDI4ICsxNDUsMjMgQEAgY2xhc3MgVGVz
dFJlc3VsdFdyaXRlcihvYmplY3QpOgogICAgICAgICBhY3R1YWxfZmlsZW5hbWUgPSBzZWxmLm91
dHB1dF9maWxlbmFtZShzZWxmLkZJTEVOQU1FX1NVRkZJWF9BQ1RVQUwgKyBmaWxlX3R5cGUpCiAg
ICAgICAgIGV4cGVjdGVkX2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoc2VsZi5GSUxF
TkFNRV9TVUZGSVhfRVhQRUNURUQgKyBmaWxlX3R5cGUpCiAKLSAgICAgICAgZnMgPSBzZWxmLl9w
b3J0Ll9maWxlc3lzdGVtCisgICAgICAgIGZzID0gc2VsZi5fZmlsZXN5c3RlbQogICAgICAgICBp
ZiBvdXRwdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBmcy53cml0ZV9iaW5hcnlfZmlsZShh
Y3R1YWxfZmlsZW5hbWUsIG91dHB1dCkKICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6
CiAgICAgICAgICAgICBmcy53cml0ZV9iaW5hcnlfZmlsZShleHBlY3RlZF9maWxlbmFtZSwgZXhw
ZWN0ZWQpCiAKICAgICBkZWYgd3JpdGVfc3RkZXJyKHNlbGYsIGVycm9yKToKLSAgICAgICAgZnMg
PSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIGZzID0gc2VsZi5fZmlsZXN5c3RlbQog
ICAgICAgICBmaWxlbmFtZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHNlbGYuRklMRU5BTUVfU1VG
RklYX1NUREVSUiArICIudHh0IikKICAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMu
ZGlybmFtZShmaWxlbmFtZSkpCiAgICAgICAgIGZzLndyaXRlX2JpbmFyeV9maWxlKGZpbGVuYW1l
LCBlcnJvcikKIAotICAgIGRlZiB3cml0ZV9jcmFzaF9yZXBvcnQoc2VsZiwgY3Jhc2hlZF9wcm9j
ZXNzX25hbWUsIGVycm9yKToKLSAgICAgICAgZnMgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisg
ICAgZGVmIHdyaXRlX2NyYXNoX2xvZyhzZWxmLCBjcmFzaF9sb2cpOgorICAgICAgICBmcyA9IHNl
bGYuX2ZpbGVzeXN0ZW0KICAgICAgICAgZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxlbmFtZShz
ZWxmLkZJTEVOQU1FX1NVRkZJWF9DUkFTSF9MT0cgKyAiLnR4dCIpCiAgICAgICAgIGZzLm1heWJl
X21ha2VfZGlyZWN0b3J5KGZzLmRpcm5hbWUoZmlsZW5hbWUpKQotICAgICAgICAjIEZJWE1FOiBX
ZSBzaG91bGRuJ3QgYmUgZ3JhYmJpbmcgcHJpdmF0ZSBtZW1iZXJzIG9mIHBvcnQuCi0gICAgICAg
IGNyYXNoX2xvZ3MgPSBDcmFzaExvZ3MoZnMpCi0gICAgICAgIGxvZyA9IGNyYXNoX2xvZ3MuZmlu
ZF9uZXdlc3RfbG9nKGNyYXNoZWRfcHJvY2Vzc19uYW1lKQotICAgICAgICAjIENyYXNoTG9ncyBk
b2Vzbid0IHN1cHBvcnQgZXZlcnkgcGxhdGZvcm0sIHNvIHdlIGZhbGwgYmFjayB0bwotICAgICAg
ICAjIGluY2x1ZGluZyB0aGUgc3RkZXJyIG91dHB1dCwgd2hpY2ggaXMgYWRtaXR0ZWRseSBzb21l
d2hhdCByZWR1bmRhbnQuCi0gICAgICAgIGZzLndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwgbG9n
IGlmIGxvZyBlbHNlIGVycm9yKQorICAgICAgICBmcy53cml0ZV90ZXh0X2ZpbGUoZmlsZW5hbWUs
IGNyYXNoX2xvZykKIAogICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGVzKHNlbGYsIGFjdHVhbF90ZXh0
LCBleHBlY3RlZF90ZXh0KToKICAgICAgICAgc2VsZi53cml0ZV9vdXRwdXRfZmlsZXMoIi50eHQi
LCBhY3R1YWxfdGV4dCwgZXhwZWN0ZWRfdGV4dCkKQEAgLTIwNSw3ICsyMDEsNyBAQCBjbGFzcyBU
ZXN0UmVzdWx0V3JpdGVyKG9iamVjdCk6CiAKICAgICBkZWYgd3JpdGVfaW1hZ2VfZGlmZl9maWxl
cyhzZWxmLCBpbWFnZV9kaWZmKToKICAgICAgICAgZGlmZl9maWxlbmFtZSA9IHNlbGYub3V0cHV0
X2ZpbGVuYW1lKHNlbGYuRklMRU5BTUVfU1VGRklYX0lNQUdFX0RJRkYpCi0gICAgICAgIGZzID0g
c2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBmcyA9IHNlbGYuX2ZpbGVzeXN0ZW0KICAg
ICAgICAgZnMud3JpdGVfYmluYXJ5X2ZpbGUoZGlmZl9maWxlbmFtZSwgaW1hZ2VfZGlmZikKIAog
ICAgICAgICBkaWZmc19odG1sX2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoc2VsZi5G
SUxFTkFNRV9TVUZGSVhfSU1BR0VfRElGRlNfSFRNTCkKQEAgLTI2MiwxMSArMjU4LDEwIEBAIERp
ZmZlcmVuY2UgYmV0d2VlbiBpbWFnZXM6IDxhIGhyZWY9IiUoZGlmZl9maWxlbmFtZSlzIj5kaWZm
PC9hPjxicj4KICAgICAgICAgICAgICdkaWZmX2ZpbGVuYW1lJzogc2VsZi5fb3V0cHV0X3Rlc3Ru
YW1lKHNlbGYuRklMRU5BTUVfU1VGRklYX0lNQUdFX0RJRkYpLAogICAgICAgICAgICAgJ3ByZWZp
eCc6IHNlbGYuX291dHB1dF90ZXN0bmFtZSgnJyksCiAgICAgICAgIH0KLSAgICAgICAgIyBGSVhN
RTogVGhpcyBzZWVtcyBsaWtlIGEgdGV4dCBmaWxlLCBub3QgYSBiaW5hcnkgZmlsZS4KLSAgICAg
ICAgc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZShkaWZmc19odG1sX2Zp
bGVuYW1lLCBodG1sKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShk
aWZmc19odG1sX2ZpbGVuYW1lLCBodG1sKQogCiAgICAgZGVmIGNvcHlfZmlsZShzZWxmLCBzcmNf
ZmlsZXBhdGgpOgotICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAg
ZnMgPSBzZWxmLl9maWxlc3lzdGVtCiAgICAgICAgIGFzc2VydCBmcy5leGlzdHMoc3JjX2ZpbGVw
YXRoKSwgJ3NyY19maWxlcGF0aDogJXMnICUgc3JjX2ZpbGVwYXRoCiAgICAgICAgIGRzdF9maWxl
cGF0aCA9IGZzLmpvaW4oc2VsZi5fcm9vdF9vdXRwdXRfZGlyLCBzZWxmLl9wb3J0LnJlbGF0aXZl
X3Rlc3RfZmlsZW5hbWUoc3JjX2ZpbGVwYXRoKSkKICAgICAgICAgc2VsZi5fbWFrZV9vdXRwdXRf
ZGlyZWN0b3J5KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZS5weQppbmRleCBlMjYyYTlkMmQxZTkxYjcwNjk1NDg4ZjdmNzc3ZjQwMjdmMTg1ZWVk
Li4zZmEzMmU3ZTRhYWEyZDU3ZjA1YmEyYWY3MWRhZjdkNjhhYjk1NmU1IDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC0yODcsOSAr
Mjg3LDYgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWN0dWFsX2ZpbGVuYW1lKQogICAgICAgICByZXR1cm4gJycuam9pbihkaWZmKQog
Ci0gICAgZGVmIGlzX2NyYXNoX3JlcG9ydGVyKHNlbGYsIHByb2Nlc3NfbmFtZSk6Ci0gICAgICAg
IHJldHVybiBGYWxzZQotCiAgICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhzZWxmLCBwcm9jZXNzX25h
bWUsIHByb2Nlc3NfcGlkKToKICAgICAgICAgIyBTdWJjbGFzc2VzIHNob3VsZCBjaGVjayBmb3Ig
bGVha3MgaW4gdGhlIHJ1bm5pbmcgcHJvY2VzcwogICAgICAgICAjIGFuZCBwcmludCBhbnkgbmVj
ZXNzYXJ5IHdhcm5pbmdzIGlmIGxlYWtzIGFyZSBmb3VuZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IDYzZTRiMGQw
NDU2M2M1N2VkMjY0ZDA5MTAxOGFjZjYyYjg4MTc3MmMuLjE0ZTc0YzMwZjY0YjdmMGRlNjY3ODg2
OGYxMjViODIwZGYxMzBhZDcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNTkwLDE2ICs1OTAsMTYgQEAgY2xhc3Mg
Q2hyb21pdW1Ecml2ZXIoRHJpdmVyKToKICAgICAgICAgICAgICAgICB0ZXh0ID0gTm9uZQogCiAg
ICAgICAgIGVycm9yID0gJycuam9pbihlcnJvcikKLSAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25h
bWUgPSBOb25lCiAgICAgICAgICMgQ3VycmVudGx5IHRoZSBzdGFja3RyYWNlIGlzIGluIHRoZSB0
ZXh0IG91dHB1dCwgbm90IGVycm9yLCBzbyBhcHBlbmQgdGhlIHR3byB0b2dldGhlciBzbwogICAg
ICAgICAjIHRoYXQgd2UgY2FuIHNlZSBzdGFjayBpbiB0aGUgb3V0cHV0LiBTZWUgaHR0cDovL3dl
YmtpdC5vcmcvYi82NjgwNgogICAgICAgICAjIEZJWE1FOiBXZSByZWFsbHkgc2hvdWxkIHByb3Bl
cmx5IGhhbmRsZSB0aGUgc3RkZXJyIG91dHB1dCBzZXBhcmF0ZWx5LgorICAgICAgICBjcmFzaF9s
b2cgPSAnJwogICAgICAgICBpZiBjcmFzaDoKICAgICAgICAgICAgIGVycm9yID0gZXJyb3IgKyBz
dHIodGV4dCkKLSAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5fcG9ydC5k
cml2ZXJfbmFtZSgpCisgICAgICAgICAgICBjcmFzaF9sb2cgPSBlcnJvcgogCiAgICAgICAgIHJl
dHVybiBEcml2ZXJPdXRwdXQodGV4dCwgb3V0cHV0X2ltYWdlLCBhY3R1YWxfY2hlY2tzdW0sIGF1
ZGlvPWF1ZGlvX2J5dGVzLAotICAgICAgICAgICAgY3Jhc2g9Y3Jhc2gsIGNyYXNoZWRfcHJvY2Vz
c19uYW1lPWNyYXNoZWRfcHJvY2Vzc19uYW1lLCB0ZXN0X3RpbWU9cnVuX3RpbWUsIHRpbWVvdXQ9
dGltZW91dCwgZXJyb3I9ZXJyb3IpCisgICAgICAgICAgICBjcmFzaD1jcmFzaCwgY3Jhc2hfbG9n
PWNyYXNoX2xvZywgdGVzdF90aW1lPXJ1bl90aW1lLCB0aW1lb3V0PXRpbWVvdXQsIGVycm9yPWVy
cm9yKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToK
ICAgICAgICAgaWYgbm90IHNlbGYuX3Byb2M6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQppbmRl
eCAzOGY3NzdiZmJjNTYzMWE3ZTE1MTdiNzhhMGI4ZmJlOWFhNDY4NjVkLi5jNjlhNTk0NGEwMTAy
YWNmNWY3ZjU0NTQ0ZTEwMTY1Y2E0NmJmMGQ2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkK
QEAgLTkxLDcgKzkxLDcgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5kcml2ZXIuX3Byb2Muc3Rkb3V0LnJlYWRsaW5lID0gbW9ja19y
ZWFkbGluZQogICAgICAgICBzZWxmLl9hc3NlcnRfd3JpdGVfY29tbWFuZF9hbmRfcmVhZF9saW5l
KGV4cGVjdGVkX2NyYXNoPVRydWUpCiAKLSAgICBkZWYgdGVzdF9jcmFzaGVkX3Byb2Nlc3NfbmFt
ZShzZWxmKToKKyAgICBkZWYgdGVzdF9jcmFzaF9sb2coc2VsZik6CiAgICAgICAgIHNlbGYuZHJp
dmVyLl9wcm9jID0gTW9jaygpCiAKICAgICAgICAgIyBTaW11bGF0ZSBhIGNyYXNoIGJ5IGhhdmlu
ZyBzdGRvdXQgY2xvc2UgdW5leHBlY3RlZGx5LgpAQCAtMTAxLDcgKzEwMSw3IEBAIGNsYXNzIENo
cm9taXVtRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgc2VsZi5kcml2
ZXIudGVzdF90b191cmkgPSBsYW1iZGEgdGVzdDogJ21vY2t0ZXN0dXJpJwogICAgICAgICBkcml2
ZXJfb3V0cHV0ID0gc2VsZi5kcml2ZXIucnVuX3Rlc3QoRHJpdmVySW5wdXQodGVzdF9uYW1lPSdz
b21lL3Rlc3QuaHRtbCcsIHRpbWVvdXQ9MSwgaW1hZ2VfaGFzaD1Ob25lLCBpc19yZWZ0ZXN0PUZh
bHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRyaXZlci5fcG9ydC5kcml2ZXJf
bmFtZSgpLCBkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vzc19uYW1lKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGRyaXZlcl9vdXRwdXQuY3Jhc2hfbG9nLCAnY3Jhc2ggbG9nJykKIAogICAg
IGRlZiB0ZXN0X3N0b3Aoc2VsZik6CiAgICAgICAgIHNlbGYucGlkID0gTm9uZQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQppbmRleCBm
YTZlODFiMmU2M2FiOTNlMWZhMDc0MGU4OGM0MTU5ZTEyNzYwMWJhLi5hMTI1NmY0MjlkZTUwOGJl
NzM1N2ZkYzBkMjU2YmM2NTcwODNjMWQ0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQpAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBE
cml2ZXJPdXRwdXQob2JqZWN0KToKICAgICBzdHJpcF9wYXR0ZXJucy5hcHBlbmQoKHJlLmNvbXBp
bGUoJ3Njcm9sbEhlaWdodCBbMC05XSsnKSwgJ3Njcm9sbEhlaWdodCcpKQogCiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBpbWFnZV9oYXNoLCBhdWRpbywgY3Jhc2g9RmFsc2Us
Ci0gICAgICAgICAgICB0ZXN0X3RpbWU9MCwgdGltZW91dD1GYWxzZSwgZXJyb3I9JycsIGNyYXNo
ZWRfcHJvY2Vzc19uYW1lPU5vbmUpOgorICAgICAgICAgICAgdGVzdF90aW1lPTAsIHRpbWVvdXQ9
RmFsc2UsIGVycm9yPScnLCBjcmFzaF9sb2c9Tm9uZSk6CiAgICAgICAgICMgRklYTUU6IEFyZ3Mg
Y291bGQgYmUgcmVuYW1lZCB0byBiZXR0ZXIgY2xhcmlmeSB3aGF0IHRoZXkgZG8uCiAgICAgICAg
IHNlbGYudGV4dCA9IHRleHQKICAgICAgICAgc2VsZi5pbWFnZSA9IGltYWdlICAjIE1heSBiZSBl
bXB0eS1zdHJpbmcgaWYgdGhlIHRlc3QgY3Jhc2hlcy4KQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3Mg
RHJpdmVyT3V0cHV0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuaW1hZ2VfZGlmZiA9IE5vbmUgICMg
aW1hZ2VfZGlmZiBnZXRzIGZpbGxlZCBpbiBhZnRlciBjb25zdHJ1Y3Rpb24uCiAgICAgICAgIHNl
bGYuYXVkaW8gPSBhdWRpbyAgIyBCaW5hcnkgZm9ybWF0IGlzIHBvcnQtZGVwZW5kZW50LgogICAg
ICAgICBzZWxmLmNyYXNoID0gY3Jhc2gKLSAgICAgICAgc2VsZi5jcmFzaGVkX3Byb2Nlc3NfbmFt
ZSA9IGNyYXNoZWRfcHJvY2Vzc19uYW1lCisgICAgICAgIHNlbGYuY3Jhc2hfbG9nID0gY3Jhc2hf
bG9nCiAgICAgICAgIHNlbGYudGVzdF90aW1lID0gdGVzdF90aW1lCiAgICAgICAgIHNlbGYudGlt
ZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5lcnJvciA9IGVycm9yICAjIHN0ZGVyciBvdXRw
dXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bWFjLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkK
aW5kZXggNWFhOTgyNmQzMDk3MDc3NjVmMmFjZTA0OTg4YTlkZmM2OTc1NTg2ZS4uMDgxZDAxNTYy
ZjZhMGMzZDYzZWY1Nzc2MTI4NGRkNTkzZGZjYjUzNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAgLTk1LDEwICs5NSw2IEBAIGNsYXNz
IE1hY1BvcnQoQXBwbGVQb3J0KToKICAgICBkZWYgaXNfbGlvbihzZWxmKToKICAgICAgICAgcmV0
dXJuIHNlbGYuX3ZlcnNpb24gPT0gImxpb24iCiAKLSAgICAjIEJlbG9uZ3Mgb24gYSBQbGF0Zm9y
bSBvYmplY3QuCi0gICAgZGVmIGlzX2NyYXNoX3JlcG9ydGVyKHNlbGYsIHByb2Nlc3NfbmFtZSk6
Ci0gICAgICAgIHJldHVybiByZS5zZWFyY2gocidSZXBvcnRDcmFzaCcsIHByb2Nlc3NfbmFtZSkK
LQogICAgIGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgaWYgc2Vs
Zi5pc19zbm93bGVvcGFyZCgpOgogICAgICAgICAgICAgX2xvZy53YXJuKCJDYW5ub3QgcnVuIHRl
c3RzIGluIHBhcmFsbGVsIG9uIFNub3cgTGVvcGFyZCBkdWUgdG8gcmRhcjovL3Byb2JsZW0vMTA2
MjE1MjUuIikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CmluZGV4IDZjNDhmZWY2NGIwMTMwYTQ4OGMzZTgz
NjUzNWM3NzZkYzRlYzRhNjYuLjUxM2I4MjRlMjQzYmU1NTk3MzZmZWNjOWM4YjljZjVjZjE5NjNl
NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
c2VydmVyX3Byb2Nlc3MucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBTZXJ2ZXJQ
cm9jZXNzOgogICAgICAgICBzZWxmLl9wcm9jID0gTm9uZQogICAgICAgICBzZWxmLl9vdXRwdXQg
PSBzdHIoKSAgIyBieXRlc2FycmF5KCkgb25jZSB3ZSByZXF1aXJlIFB5dGhvbiAyLjYKICAgICAg
ICAgc2VsZi5fZXJyb3IgPSBzdHIoKSAgIyBieXRlc2FycmF5KCkgb25jZSB3ZSByZXF1aXJlIFB5
dGhvbiAyLjYKLSAgICAgICAgc2VsZi5zZXRfY3Jhc2hlZChGYWxzZSkKKyAgICAgICAgc2VsZi5f
Y3Jhc2hlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYudGltZWRfb3V0ID0gRmFsc2UKIAogICAgIGRl
ZiBwcm9jZXNzX25hbWUoc2VsZik6CkBAIC05NCwyMiArOTQsMTcgQEAgY2xhc3MgU2VydmVyUHJv
Y2VzczoKICAgICAgICAgZmwgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGTCkKICAgICAg
ICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsIHwgb3MuT19OT05CTE9DSykKIAot
ICAgIGRlZiBoYW5kbGVfaW50ZXJydXB0KHNlbGYpOgorICAgIGRlZiBfaGFuZGxlX3Bvc3NpYmxl
X2ludGVycnVwdChzZWxmKToKICAgICAgICAgIiIiVGhpcyByb3V0aW5lIGNoZWNrcyB0byBzZWUg
aWYgdGhlIHByb2Nlc3MgY3Jhc2hlZCBvciBleGl0ZWQKICAgICAgICAgYmVjYXVzZSBvZiBhIGtl
eWJvYXJkIGludGVycnVwdCBhbmQgcmFpc2VzIEtleWJvYXJkSW50ZXJydXB0CiAgICAgICAgIGFj
Y29yZGluZ2x5LiIiIgotICAgICAgICBpZiBzZWxmLmNyYXNoZWQ6Ci0gICAgICAgICAgICAjIFRo
aXMgaXMgaGV4IGNvZGUgMHhjMDAwMDAxZCwgd2hpY2ggaXMgdXNlZCBmb3IgYWJydXB0Ci0gICAg
ICAgICAgICAjIHRlcm1pbmF0aW9uLiBUaGlzIGhhcHBlbnMgaWYgd2UgaGl0IGN0cmwrYyBmcm9t
IHRoZSBwcm9tcHQKLSAgICAgICAgICAgICMgYW5kIHdlIGhhcHBlbiB0byBiZSB3YWl0aW5nIG9u
IHRoZSBEdW1wUmVuZGVyVHJlZS4KLSAgICAgICAgICAgICMgc2RveW9uOiBOb3Qgc3VyZSBmb3Ig
d2hpY2ggT1MgYW5kIGluIHdoYXQgY2lyY3Vtc3RhbmNlcyB0aGUKLSAgICAgICAgICAgICMgYWJv
dmUgY29kZSBpcyB2YWxpZC4gV2hhdCB3b3JrcyBmb3IgbWUgdW5kZXIgTGludXggdG8gZGV0ZWN0
Ci0gICAgICAgICAgICAjIGN0cmwrYyBpcyBmb3IgdGhlIHN1YnByb2Nlc3MgcmV0dXJuY29kZSB0
byBiZSBuZWdhdGl2ZQotICAgICAgICAgICAgIyBTSUdJTlQuIEFuZCB0aGF0IGFncmVlcyB3aXRo
IHRoZSBzdWJwcm9jZXNzIGRvY3VtZW50YXRpb24uCi0gICAgICAgICAgICBpZiAoLTEwNzM3NDE1
MTAgPT0gc2VsZi5fcHJvYy5yZXR1cm5jb2RlIG9yCi0gICAgICAgICAgICAgICAgLSBzaWduYWwu
U0lHSU5UID09IHNlbGYuX3Byb2MucmV0dXJuY29kZSk6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
S2V5Ym9hcmRJbnRlcnJ1cHQKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIEZJWE1FOiBM
aW51eCBhbmQgTWFjIHNldCB0aGUgcmV0dXJuY29kZSB0byAtc2lnbmFsLlNJR0lOVCBpZiBhCisg
ICAgICAgICMgc3VicHJvY2VzcyBpcyBraWxsZWQgd2l0aCBhIGN0cmxeQy4gIFByZXZpb3VzIGNv
bW1lbnRzIGluIHRoaXMKKyAgICAgICAgIyByb3V0aW5lIHNhaWQgdGhhdCBzdXBwb3NlZGx5IFdp
bmRvd3MgcmV0dXJucyAweGMwMDAwMDFkLCBidXQgdGhhdCdzIG5vdCB3aGF0CisgICAgICAgICMg
LTEwNzM3NDE1MTAgZXZhbHVhdGVzIHRvLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHJpZ2h0IHZhbHVl
IGlzCisgICAgICAgICMgZm9yIHdpbjMyIGFuZCBjeWd3aW4gaGVyZSAuLi4KKyAgICAgICAgaWYg
c2VsZi5fcHJvY19yZXR1cm5jb2RlIGluICgtMTA3Mzc0MTUxMCwgLXNpZ25hbC5TSUdJTlQpOgor
ICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKIAogICAgIGRlZiBwb2xsKHNlbGYp
OgogICAgICAgICAiIiJDaGVjayB0byBzZWUgaWYgdGhlIHVuZGVybHlpbmcgcHJvY2VzcyBpcyBy
dW5uaW5nOyByZXR1cm5zIE5vbmUKQEAgLTEyNiw5ICsxMjEsMTAgQEAgY2xhc3MgU2VydmVyUHJv
Y2VzczoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fcHJvYy5zdGRpbi53cml0ZShi
eXRlcykKICAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6CisgICAgICAgICAgICBwaWQgPSBzZWxm
Ll9wcm9jLnBpZAogICAgICAgICAgICAgc2VsZi5zdG9wKCkKICAgICAgICAgICAgICMgc3RvcCgp
IGNhbGxzIF9yZXNldCgpLCBzbyB3ZSBoYXZlIHRvIHNldCBjcmFzaGVkIHRvIFRydWUgYWZ0ZXIg
Y2FsbGluZyBzdG9wKCkuCi0gICAgICAgICAgICBzZWxmLnNldF9jcmFzaGVkKFRydWUpCisgICAg
ICAgICAgICBzZWxmLl9jcmFzaGVkID0gVHJ1ZQogCiAgICAgZGVmIF9wb3Bfc3Rkb3V0X2xpbmVf
aWZfcmVhZHkoc2VsZik6CiAgICAgICAgIGluZGV4X2FmdGVyX25ld2xpbmUgPSBzZWxmLl9vdXRw
dXQuZmluZCgnXG4nKSArIDEKQEAgLTE3OCwxMSArMTc0LDYgQEAgY2xhc3MgU2VydmVyUHJvY2Vz
czoKIAogICAgICAgICByZXR1cm4gc2VsZi5fcmVhZChkZWFkbGluZSwgcmV0cmlldmVfYnl0ZXNf
ZnJvbV9zdGRvdXRfYnVmZmVyKQogCi0gICAgZGVmIF9jaGVja19mb3JfY3Jhc2goc2VsZiwgd2Fp
dF9mb3JfY3Jhc2hfcmVwb3J0ZXI9VHJ1ZSk6Ci0gICAgICAgIGlmIHNlbGYucG9sbCgpICE9IE5v
bmU6Ci0gICAgICAgICAgICBzZWxmLnNldF9jcmFzaGVkKFRydWUsIHdhaXRfZm9yX2NyYXNoX3Jl
cG9ydGVyKQotICAgICAgICAgICAgc2VsZi5oYW5kbGVfaW50ZXJydXB0KCkKLQogICAgIGRlZiBf
bG9nKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICAjIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrLCBi
dXQgd2UgZmlyc3QgbG9nIGEgYmxhbmsgbGluZSB0byBhdm9pZAogICAgICAgICAjIG1lc3Npbmcg
dXAgdGhlIG1hc3RlciBwcm9jZXNzJ3Mgb3V0cHV0LgpAQCAtMjA2LDEwICsxOTcsNiBAQCBjbGFz
cyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICAgICAgc2VsZi5fbG9nKCdVbmFibGUgdG8gc2FtcGxl
IHByb2Nlc3MuJykKIAogICAgIGRlZiBfaGFuZGxlX3RpbWVvdXQoc2VsZik6Ci0gICAgICAgIHNl
bGYuX2V4ZWN1dGl2ZS53YWl0X25ld2VzdChzZWxmLl9wb3J0LmlzX2NyYXNoX3JlcG9ydGVyKQot
ICAgICAgICBzZWxmLl9jaGVja19mb3JfY3Jhc2god2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI9RmFs
c2UpCi0gICAgICAgIGlmIHNlbGYuY3Jhc2hlZDoKLSAgICAgICAgICAgIHJldHVybgogICAgICAg
ICBzZWxmLnRpbWVkX291dCA9IFRydWUKICAgICAgICAgc2VsZi5fc2FtcGxlKCkKIApAQCAtMjM4
LDIwICsyMjUsMjIgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgICAgICMgRklYTUU6
IFdoeSBkbyB3ZSBpZ25vcmUgYWxsIElPRXJyb3JzIGhlcmU/CiAgICAgICAgICAgICBwYXNzCiAK
LSAgICBkZWYgX2NoZWNrX2Zvcl9hYm9ydChzZWxmLCBkZWFkbGluZSk6Ci0gICAgICAgIHNlbGYu
X2NoZWNrX2Zvcl9jcmFzaCgpCi0KLSAgICAgICAgaWYgdGltZS50aW1lKCkgPiBkZWFkbGluZToK
LSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV90aW1lb3V0KCkKLQotICAgICAgICByZXR1cm4gc2Vs
Zi5jcmFzaGVkIG9yIHNlbGYudGltZWRfb3V0CisgICAgZGVmIGhhc19jcmFzaGVkKHNlbGYpOgor
ICAgICAgICBpZiBub3Qgc2VsZi5fY3Jhc2hlZCBhbmQgc2VsZi5wb2xsKCk6CisgICAgICAgICAg
ICBzZWxmLl9jcmFzaGVkID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5faGFuZGxlX3Bvc3NpYmxl
X2ludGVycnVwdCgpCisgICAgICAgIHJldHVybiBzZWxmLl9jcmFzaGVkCiAKICAgICAjIFRoaXMg
cmVhZCBmdW5jdGlvbiBpcyBhIGJpdCBvZGRseS1kZXNpZ25lZCwgYXMgaXQgcG9sbHMgYm90aCBz
dGRvdXQgYW5kIHN0ZGVyciwgeWV0CiAgICAgIyBvbmx5IHJlYWRzL3JldHVybnMgZnJvbSBvbmUg
b2YgdGhlbSAoYnVmZmVyaW5nIGJvdGggaW4gbG9jYWwgc2VsZi5fb3V0cHV0L3NlbGYuX2Vycm9y
KS4KICAgICAjIEl0IG1pZ2h0IGJlIGNsZWFuZXIgdG8gcGFzcyBpbiB0aGUgZmlsZSBkZXNjcmlw
dG9yIHRvIHBvbGwgaW5zdGVhZC4KICAgICBkZWYgX3JlYWQoc2VsZiwgZGVhZGxpbmUsIGZldGNo
X2J5dGVzX2Zyb21fYnVmZmVyc19jYWxsYmFjayk6CiAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAg
ICAgICAgICBpZiBzZWxmLl9jaGVja19mb3JfYWJvcnQoZGVhZGxpbmUpOgorICAgICAgICAgICAg
aWYgc2VsZi5oYXNfY3Jhc2hlZCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAg
ICAgICAgICAgIGlmIHRpbWUudGltZSgpID4gZGVhZGxpbmU6CisgICAgICAgICAgICAgICAgc2Vs
Zi5faGFuZGxlX3RpbWVvdXQoKQogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAg
ICAgICAgIGJ5dGVzID0gZmV0Y2hfYnl0ZXNfZnJvbV9idWZmZXJzX2NhbGxiYWNrKCkKQEAgLTI5
Miw5ICsyODEsMyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICAgICAgICAgIHNlbGYu
X2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCiAgICAgICAgICAgICAgICAg
X2xvZy53YXJuaW5nKCdraWxsZWQnKQogICAgICAgICBzZWxmLl9yZXNldCgpCi0KLSAgICBkZWYg
c2V0X2NyYXNoZWQoc2VsZiwgY3Jhc2hlZCwgd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI9VHJ1ZSk6
Ci0gICAgICAgIHNlbGYuY3Jhc2hlZCA9IGNyYXNoZWQKLSAgICAgICAgaWYgbm90IHNlbGYuY3Jh
c2hlZCBvciBub3Qgd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI6Ci0gICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgc2VsZi5fZXhlY3V0aXZlLndhaXRfbmV3ZXN0KHNlbGYuX3BvcnQuaXNfY3Jhc2hf
cmVwb3J0ZXIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5weQppbmRleCBjYWU2
YjAyYzU5NDM2MWZhNDY4NDA0MDI0ZTI5NjhjMDFlOWQ1MDk0Li5mMmJjOTk2ODY1MTRlM2M0NjEz
MzkxYTk2MTM5ZjE3ODRiZTAwYjY5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3NfdW5pdHRl
c3QucHkKQEAgLTUwLDkgKzUwLDYgQEAgY2xhc3MgVHJpdmlhbE1vY2tQb3J0KG9iamVjdCk6CiAg
ICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhzZWxmLCBwcm9jZXNzX25hbWUsIHByb2Nlc3NfcGlkKToK
ICAgICAgICAgcGFzcwogCi0gICAgZGVmIGlzX2NyYXNoX3JlcG9ydGVyKHNlbGYsIHByb2Nlc3Nf
bmFtZSk6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCiAKIGNsYXNzIE1vY2tGaWxlKG9iamVjdCk6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcl9wcm9jZXNzKToKQEAgLTkxLDcgKzg4LDcg
QEAgY2xhc3MgVGVzdFNlcnZlclByb2Nlc3ModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0
ZXN0X2Jyb2tlbl9waXBlKHNlbGYpOgogICAgICAgICBzZXJ2ZXJfcHJvY2VzcyA9IEZha2VTZXJ2
ZXJQcm9jZXNzKHBvcnRfb2JqPVRyaXZpYWxNb2NrUG9ydCgpLCBuYW1lPSJ0ZXN0IiwgY21kPVsi
dGVzdCJdKQogICAgICAgICBzZXJ2ZXJfcHJvY2Vzcy53cml0ZSgic2hvdWxkIGJyZWFrIikKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlcl9wcm9jZXNzLmNyYXNoZWQpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShzZXJ2ZXJfcHJvY2Vzcy5oYXNfY3Jhc2hlZCgpKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhzZXJ2ZXJfcHJvY2Vzcy5fcHJvYywgTm9uZSkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoc2VydmVyX3Byb2Nlc3MuYnJva2VuX3BpcGVzLCBbc2VydmVyX3Byb2Nlc3Mu
c3RkaW5dKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3Rlc3QucHkKaW5kZXggMjE2MzcyMzA1MmJkMDQxYmNjM2NhODcxY2Q4YmEzOGE3NTFiYTQ4YS4u
MmY4MGJmM2E5ZGY1NTNiYmVlYjE0YzMyOWQ0OTIwMWVhMzAyOTJhOCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtNTE4LDE0ICs1
MTgsMTQgQEAgY2xhc3MgVGVzdERyaXZlcihEcml2ZXIpOgogCiAgICAgICAgIGlmIHRlc3QuYWN0
dWFsX2F1ZGlvOgogICAgICAgICAgICAgYXVkaW8gPSBiYXNlNjQuYjY0ZGVjb2RlKHRlc3QuYWN0
dWFsX2F1ZGlvKQotICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKKyAgICAgICAg
Y3Jhc2hfbG9nID0gJycKICAgICAgICAgaWYgdGVzdC5jcmFzaDoKICAgICAgICAgICAgIGNyYXNo
ZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpCiAgICAgICAgIGVsaWYg
dGVzdC53ZWJfcHJvY2Vzc19jcmFzaDoKLSAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1l
ID0gJ1dlYlByb2Nlc3MnCisgICAgICAgICAgICBjcmFzaF9sb2cgPSAnV2ViUHJvY2VzcycKICAg
ICAgICAgcmV0dXJuIERyaXZlck91dHB1dChhY3R1YWxfdGV4dCwgdGVzdC5hY3R1YWxfaW1hZ2Us
CiAgICAgICAgICAgICB0ZXN0LmFjdHVhbF9jaGVja3N1bSwgYXVkaW8sIGNyYXNoPXRlc3QuY3Jh
c2ggb3IgdGVzdC53ZWJfcHJvY2Vzc19jcmFzaCwKLSAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vz
c19uYW1lPWNyYXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAgICAgICAgY3Jhc2hfbG9nPWNyYXNo
X2xvZywKICAgICAgICAgICAgIHRlc3RfdGltZT10aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsIHRp
bWVvdXQ9dGVzdC50aW1lb3V0LCBlcnJvcj10ZXN0LmVycm9yKQogCiAgICAgZGVmIHN0YXJ0KHNl
bGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggNmU0YTE2YmRhNDcwZjlk
ZGUyNzUyMTBiYmZlMjk0NTRmY2Y2YWM1OC4uYzI2NzcyZTEyZTRhNTRjMDU3NTRlZTNlYmEyOWIx
M2JhNjBhMDM3MSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93ZWJraXQucHkKQEAgLTQxLDYgKzQxLDcgQEAgaW1wb3J0IHRpbWUKIAogZnJvbSB3
ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5uZXQuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uY3Jhc2hsb2dzIGltcG9ydCBDcmFzaExvZ3MKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5lbnZpcm9ubWVudCBpbXBvcnQgRW52aXJvbm1lbnQKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGltcG9ydCBjeWdwYXRoCkBAIC0xOTQsNyArMTk1LDcg
QEAgY2xhc3MgV2ViS2l0UG9ydChQb3J0KToKIAogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAg
ICAgICAgb3V0cHV0ID0gc3AucmVhZF9zdGRvdXRfbGluZShkZWFkbGluZSkKLSAgICAgICAgICAg
IGlmIHNwLnRpbWVkX291dCBvciBzcC5jcmFzaGVkIG9yIG5vdCBvdXRwdXQ6CisgICAgICAgICAg
ICBpZiBzcC50aW1lZF9vdXQgb3Igc3AuaGFzX2NyYXNoZWQoKSBvciBub3Qgb3V0cHV0OgogICAg
ICAgICAgICAgICAgIGJyZWFrCiAKICAgICAgICAgICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKCdk
aWZmJyk6ICAjIFRoaXMgaXMgdGhlIGxhc3QgbGluZSBJbWFnZURpZmYgcHJpbnRzLgpAQCAtMjA5
LDcgKzIxMCw3IEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6CiAKICAgICAgICAgaWYgc3AudGlt
ZWRfb3V0OgogICAgICAgICAgICAgX2xvZy5lcnJvcigiSW1hZ2VEaWZmIHRpbWVkIG91dCIpCi0g
ICAgICAgIGlmIHNwLmNyYXNoZWQ6CisgICAgICAgIGlmIHNwLmhhc19jcmFzaGVkKCk6CiAgICAg
ICAgICAgICBfbG9nLmVycm9yKCJJbWFnZURpZmYgY3Jhc2hlZCIpCiAgICAgICAgICMgRklYTUU6
IFRoZXJlIGlzIG5vIG5lZWQgdG8gc2h1dCBkb3duIHRoZSBJbWFnZURpZmYgc2VydmVyIGFmdGVy
IGV2ZXJ5IGRpZmYuCiAgICAgICAgIHNwLnN0b3AoKQpAQCAtNDg5LDMxICs0OTAsMTIgQEAgY2xh
c3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgZGVmIGhhc19jcmFzaGVkKHNlbGYpOgogICAg
ICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5wb2xsKCkgaXMgbm90
IE5vbmUKLQotICAgIGRlZiBfY2hlY2tfZm9yX2RyaXZlcl9jcmFzaChzZWxmLCBlcnJvcl9saW5l
KToKLSAgICAgICAgaWYgZXJyb3JfbGluZSA9PSAiI0NSQVNIRURcbiI6Ci0gICAgICAgICAgICAj
IFRoaXMgaXMgdXNlZCBvbiBXaW5kb3dzIHRvIHJlcG9ydCB0aGF0IHRoZSBwcm9jZXNzIGhhcyBj
cmFzaGVkCi0gICAgICAgICAgICAjIFNlZSBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC82NTUzNy4KLSAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnNldF9jcmFzaGVkKFRy
dWUpCi0gICAgICAgIGVsaWYgZXJyb3JfbGluZSA9PSAiI0NSQVNIRUQgLSBXZWJQcm9jZXNzXG4i
OgotICAgICAgICAgICAgIyBXZWJLaXRUZXN0UnVubmVyIHVzZXMgdGhpcyB0byByZXBvcnQgdGhh
dCB0aGUgV2ViUHJvY2VzcyBzdWJwcm9jZXNzIGNyYXNoZWQuCi0gICAgICAgICAgICBzZWxmLl9z
dWJwcm9jZXNzX2NyYXNoZWQoIldlYlByb2Nlc3MiKQotICAgICAgICByZXR1cm4gc2VsZi5fZGV0
ZWN0ZWRfY3Jhc2goKQotCi0gICAgZGVmIF9kZXRlY3RlZF9jcmFzaChzZWxmKToKLSAgICAgICAg
IyBXZSBjYW4ndCBqdXN0IGNoZWNrIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQgYmVjYXVz
ZSBXZWJLaXRUZXN0UnVubmVyCi0gICAgICAgICMgY2FuIHJlcG9ydCBzdWJwcm9jZXNzIGNyYXNo
ZXMgYXQgYW55IHRpbWUgYnkgcHJpbnRpbmcKLSAgICAgICAgIyAiI0NSQVNIRUQgLSBXZWJQcm9j
ZXNzIiwgd2Ugd2FudCB0byBjb3VudCB0aG9zZSBhcyBjcmFzaGVzIGFzIHdlbGwuCi0gICAgICAg
IHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkIG9yIHNlbGYuX2NyYXNoZWRfc3Vi
cHJvY2Vzc19uYW1lCi0KLSAgICBkZWYgX3N1YnByb2Nlc3NfY3Jhc2hlZChzZWxmLCBzdWJwcm9j
ZXNzX25hbWUpOgotICAgICAgICBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9IHN1YnBy
b2Nlc3NfbmFtZQotCi0gICAgZGVmIF9jcmFzaGVkX3Byb2Nlc3NfbmFtZShzZWxmKToKLSAgICAg
ICAgaWYgbm90IHNlbGYuX2RldGVjdGVkX2NyYXNoKCk6Ci0gICAgICAgICAgICByZXR1cm4gTm9u
ZQotICAgICAgICByZXR1cm4gc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgb3Igc2VsZi5f
c2VydmVyX3Byb2Nlc3MucHJvY2Vzc19uYW1lKCkKKyAgICAgICAgaWYgc2VsZi5fY3Jhc2hlZF9z
dWJwcm9jZXNzX25hbWU6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5oYXNfY3Jhc2hlZCgpOgorICAgICAgICAgICAgc2VsZi5fY3Jhc2hl
ZF9zdWJwcm9jZXNzX25hbWUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5uYW1lKCkKKyAgICAgICAg
ICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19waWQgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5w
aWQoKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBfY29tbWFuZF9mcm9tX2Ry
aXZlcl9pbnB1dChzZWxmLCBkcml2ZXJfaW5wdXQpOgogICAgICAgICBpZiBzZWxmLmlzX2h0dHBf
dGVzdChkcml2ZXJfaW5wdXQudGVzdF9uYW1lKToKQEAgLTU1Myw2ICs1MzUsOCBAQCBjbGFzcyBX
ZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIGlu
dChkcml2ZXJfaW5wdXQudGltZW91dCkgLyAxMDAwLjAKIAogICAgICAgICBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy53cml0ZShjb21tYW5kKQorICAgICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5o
YXNfY3Jhc2hlZCgpOgorICAgICAgICAgICAgc2VsZi5fd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXIo
KQogICAgICAgICB0ZXh0LCBhdWRpbyA9IHNlbGYuX3JlYWRfZmlyc3RfYmxvY2soZGVhZGxpbmUp
ICAjIEZpcnN0IGJsb2NrIGlzIGVpdGhlciB0ZXh0IG9yIGF1ZGlvCiAgICAgICAgIGltYWdlLCBh
Y3R1YWxfaW1hZ2VfaGFzaCA9IHNlbGYuX3JlYWRfb3B0aW9uYWxfaW1hZ2VfYmxvY2soZGVhZGxp
bmUpICAjIFRoZSBzZWNvbmQgKG9wdGlvbmFsKSBibG9jayBpcyBpbWFnZSBkYXRhLgogCkBAIC01
NjIsMTAgKzU0NiwxNSBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAgICAgIyBG
SVhNRTogV2UgbWF5IG5lZWQgdG8gYWxzbyByZWFkIHN0ZGVyciB1bnRpbCB0aGUgcHJvY2VzcyBk
aWVzPwogICAgICAgICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vz
cy5wb3BfYWxsX2J1ZmZlcmVkX3N0ZGVycigpCiAKKyAgICAgICAgY3Jhc2hfbG9nID0gTm9uZQor
ICAgICAgICBpZiBzZWxmLmhhc19jcmFzaGVkKCk6CisgICAgICAgICAgICBjcmFzaF9sb2dzID0g
Q3Jhc2hMb2dzKHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0pCisgICAgICAgICAgICBjcmFzaF9sb2cg
PSBjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xvZyhzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFt
ZSwgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX3BpZCkKKwogICAgICAgICByZXR1cm4gRHJpdmVy
T3V0cHV0KHRleHQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwgYXVkaW8sCi0gICAgICAgICAg
ICBjcmFzaD1zZWxmLl9kZXRlY3RlZF9jcmFzaCgpLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSBz
dGFydF90aW1lLAorICAgICAgICAgICAgY3Jhc2g9c2VsZi5oYXNfY3Jhc2hlZCgpLCB0ZXN0X3Rp
bWU9dGltZS50aW1lKCkgLSBzdGFydF90aW1lLAogICAgICAgICAgICAgdGltZW91dD1zZWxmLl9z
ZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsIGVycm9yPXNlbGYuZXJyb3JfZnJvbV90ZXN0LAotICAg
ICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUo
KSkKKyAgICAgICAgICAgIGNyYXNoX2xvZz1jcmFzaF9sb2cpCiAKICAgICBkZWYgX3JlYWRfaGVh
ZGVyKHNlbGYsIGJsb2NrLCBsaW5lLCBoZWFkZXJfdGV4dCwgaGVhZGVyX2F0dHIsIGhlYWRlcl9m
aWx0ZXI9Tm9uZSk6CiAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChoZWFkZXJfdGV4dCkgYW5k
IGdldGF0dHIoYmxvY2ssIGhlYWRlcl9hdHRyKSBpcyBOb25lOgpAQCAtNjA4LDcgKzU5Nyw3IEBA
IGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgICBvdXRfbGluZSwgZXJyX2xpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2Vp
dGhlcl9zdGRvdXRfb3Jfc3RkZXJyX2xpbmUoZGVhZGxpbmUpCiAKLSAgICAgICAgICAgIGlmIHNl
bGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCBvciBzZWxmLl9kZXRlY3RlZF9jcmFzaCgpOgor
ICAgICAgICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0IG9yIHNlbGYuaGFz
X2NyYXNoZWQoKToKICAgICAgICAgICAgICAgICBicmVhawogCiAgICAgICAgICAgICBpZiBvdXRf
bGluZToKQEAgLTYyOSw4ICs2MTgsMTcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAg
ICAgICAgICAgICAgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5y
ZWFkX3N0ZG91dChkZWFkbGluZSwgYmxvY2suX2NvbnRlbnRfbGVuZ3RoKQogCiAgICAgICAgICAg
ICBpZiBlcnJfbGluZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9jaGVja19mb3JfZHJpdmVy
X2NyYXNoKGVycl9saW5lKToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAg
ICAgICBpZiBlcnJfbGluZSA9PSAiI0NSQVNIRURcbiI6CisgICAgICAgICAgICAgICAgICAgICMg
VGhpcyBpcyB1c2VkIG9uIFdpbmRvd3MgdG8gcmVwb3J0IHRoYXQgdGhlIHByb2Nlc3MgaGFzIGNy
YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgIyBTZWUgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvNjU1MzcuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJv
Y2Vzc19uYW1lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MubmFtZSgpCisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19waWQgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5w
aWQoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl93YWl0X2Zvcl9jcmFzaF9yZXBvcnRlcigp
CisgICAgICAgICAgICAgICAgZWxpZiBlcnJfbGluZSA9PSAiI0NSQVNIRUQgLSBXZWJQcm9jZXNz
XG4iOgorICAgICAgICAgICAgICAgICAgICAjIFdlYktpdFRlc3RSdW5uZXIgdXNlcyB0aGlzIHRv
IHJlcG9ydCB0aGF0IHRoZSBXZWJQcm9jZXNzIHN1YnByb2Nlc3MgY3Jhc2hlZC4KKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgPSAnV2ViUHJvY2VzcycK
KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX3BpZCA9IE5vbmUg
ICMgRklYTUUgLSBnZXQgdGhlIHBpZCBzbyB3ZSBjYW4gZmluZCB0aGUgcmlnaHQgbG9nLgorICAg
ICAgICAgICAgICAgICAgICBzZWxmLl93YWl0X2Zvcl9jcmFzaF9yZXBvcnRlcigpCiAgICAgICAg
ICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZXJyX2xpbmUKIAogICAgICAgICBibG9j
ay5kZWNvZGVfY29udGVudCgpCkBAIC02NDUsNiArNjQzLDE3IEBAIGNsYXNzIFdlYktpdERyaXZl
cihEcml2ZXIpOgogICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3RvcCgpCiAgICAg
ICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IE5vbmUKIAorICAgIGRlZiBfd2FpdF9mb3Jf
Y3Jhc2hfcmVwb3J0ZXIoc2VsZik6CisgICAgICAgICMgRklYTUU6IFdoZW4gZG8gd2UgYWN0dWFs
bHkgbmVlZCB0byB3YWl0PyBPbiB0aGUgbWFjIChhdCBsZWFzdCBvbiBTTCksCisgICAgICAgICMg
aXQgYXBwZWFycyB0aGF0IGluIHRoZSBub3JtYWwgY2FzZSB3ZSBkZXRlY3QgY3Jhc2hlcyBhZnRl
ciBibG9ja2luZyBpbiBhIHNlbGVjdCgpLAorICAgICAgICAjIGFuZCB0aGUgc2VsZWN0KCkgYmxv
Y2tzIHVudGlsIFJlcG9ydENyYXNoIGlzIGRvbmUuIEl0J3MgYWxzbyBwb3NzaWJsZSB0aGF0Cisg
ICAgICAgICMgd2UnbGwgZGV0ZWN0IGEgY3Jhc2ggd2hlbiB3cml0ZSgpaW5nIGFuZCBJJ20gbm90
IHN1cmUgd2hhdCBSZXBvcnRDcmFzaCBkb2VzCisgICAgICAgICMgdGhlcmUgKG5lZWQgdG8gdGVz
dCEpLiBBbHNvIG5lZWQgdG8gdGVzdCBvdGhlciB2ZXJzaW9ucyBvZiBNYWMgT1MgZm9yCisgICAg
ICAgICMgc2ltaWxhciBiZWhhdmlvcjsgZG8gb3RoZXIgcGxhdGZvcm1zIGV2ZW4gaGF2ZSBhIGNy
YXNoIHJlcG9ydGVyIGVxdWl2YWxlbnQ/CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFy
d2luJzoKKyAgICAgICAgICAgICMgc2VsZi53YWl0X25ld2VzdChsYW1iZGEgcHJvY2Vzc19uYW1l
OiByZS5zZWFyY2gocidSZXBvcnRDcmFzaCcsIHByb2Nlc3NfbmFtZSkpCisgICAgICAgICAgICBw
YXNzCisKIAogY2xhc3MgQ29udGVudEJsb2NrKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQppbmRleCA2ZGM4NDU0NDEzNzFiNmRlNzhhNGFjZTcw
NzBjODJhZGNlOWY5ODRkLi43OTNhNGZkYzVmMTY5ZTg3NmY0YzkxODJhZTkxYmMxNTU1NmY2OTQ0
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dl
YmtpdF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQpAQCAtMjQwLDggKzI0MCwxMSBAQCBjbGFzcyBXZWJL
aXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiBjbGFzcyBNb2NrU2VydmVy
UHJvY2VzcyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lcz1Ob25lKToKICAg
ICAgICAgc2VsZi50aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBzZWxmLmNyYXNoZWQgPSBGYWxz
ZQogICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMgb3IgW10KKyAgICAgICAgc2VsZi5jcmFzaGVk
ID0gRmFsc2UKKworICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl
bGYuY3Jhc2hlZAogCiAgICAgZGVmIHJlYWRfc3Rkb3V0X2xpbmUoc2VsZiwgZGVhZGxpbmUpOgog
ICAgICAgICByZXR1cm4gc2VsZi5saW5lcy5wb3AoMCkgKyAiXG4iCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132394</attachid>
            <date>2012-03-16 15:21:46 -0700</date>
            <delta_ts>2012-03-16 20:02:39 -0700</delta_ts>
            <desc>more testing</desc>
            <filename>bug-71380-20120316152145.patch</filename>
            <type>text/plain</type>
            <size>43513</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzUwMjlkNzZhNzhhMzcwMDNlMmM3MThhOTVlZDg5NTFh
YWQwOTAyYy4uOTFlN2M0ZTEwM2ZkODFkZjFiOGEwZDIzZWJmOGI5NTlmM2ExZGEwZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0
IEBACisyMDEyLTAzLTE1ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIE5SV1QgaW5jb3JyZWN0bHkgYXNzb2NpYXRlcyBjcmFzaCBsb2dzIHdpdGggdGVzdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBh
IHdvcmstaW4tcHJvZ3Jlc3MgcGF0Y2ggdG8gY2xlYW4gdXAgaG93IHdlIGFyZSBoYW5kbGluZwor
ICAgICAgICBDcmFzaExvZ3MuIFNvIGZhciBpdCBoYXMgb25seSBiZWVuIHRlc3RlZCB3LyBBcHBs
ZSBNYWMgRFJUIG9uIFNub3dMZW9wYXJkCisgICAgICAgIHJ1bm5pbmcgb25lIERSVCBhdCBhIHRp
bWUuCisKKyAgICAgICAgUHJpb3IgdG8gdGhpcyBwYXRjaCBJIHdhcyBvbmx5IGdldHRpbmcgdGhl
IGZpcnN0IGxpbmUgb2YgdGhlCisgICAgICAgIGNyYXNoIGxvZywgYW5kIHRoZSBjb2RlIHdhcyBo
YXJkIHRvIGZvbGxvdy4KKworICAgICAgICBCYXNpYyBpZGVhcyBpbiB0aGlzIHBhdGNoOgorICAg
ICAgICAxKSBTaW1wbGlmeSB0aGUgY29kZSB0aGF0IGFjdHVhbGx5IGZldGNoZXMgdGhlIGNyYXNo
IGxvZy4KKyAgICAgICAgICAgV2UgaGFkIHNvbWUgb3B0aW1pemF0aW9ucyB0aGF0IGF0dGVtcHRl
ZCB0byBiZSBzbWFydCBhbmQgb25seQorICAgICAgICAgICByZWFkIHRoZSBmaXJzdCBsaW5lIG9m
IGVhY2ggbG9nIGZpbGUgd2UgZm91bmQsIGJ1dCB0aG9zZQorICAgICAgICAgICBvcHRpbWl6YXRp
b25zIHdlcmUgYWN0dWFsbHkgYnVnZ3kgYW5kIEkgZG91YnQgaXQgc2F2ZWQgdXMgYW55CisgICAg
ICAgICAgIHRpbWUgKGFuZCBJJ20gbm90IHN1cmUgd2UgcmVhbGx5IGV2ZW4gY2FyZSBnaXZlbiBo
b3cgc2xvdworICAgICAgICAgICBjcmFzaCByZXBvcnRpbmcgaXMpLgorICAgICAgICAyKSBTZXJ2
ZXJQcm9jZXNzIG5vIGxvbmdlciBoYXMgYW55dGhpbmcgdG8gZG8gd2l0aCBjcmFzaAorICAgICAg
ICByZXBvcnRpbmc7IGl0J3MgYW4gb3J0aG9nb25hbCBjb25jZXB0LCBhbmQgaXQgbWFkZSBmb2xs
b3dpbmcgdGhlCisgICAgICAgIGNvZGUgZGlmZmljdWx0LiBOb3cgYWxsIG9mIHRoZSBsb2dpYyBv
ZiB3aGljaCBwcm9jZXNzZXMgdG8gd2FpdAorICAgICAgICBmb3IgYW5kIHdoZW4gYXJlIGNvbnRh
aW5lZCBzb2xlbHkgaW4gV2ViS2l0RHJpdmVyLiBFdmVudHVhbGx5IHdlCisgICAgICAgIG1pZ2h0
IG5lZWQgcGxhdGZvcm0tc3BlY2lmaWMgc3ViY2xhc3NlcyBvZiBXZWJLaXREcml2ZXIgdG8gZ2V0
CisgICAgICAgIHRoZSBjb3JyZWN0IGJlaGF2aW9yLgorICAgICAgICAzKSBXZWJLaXREcml2ZXIo
KSBzaG91bGQgaGFuZCB0aGUgc3RhY2sgdHJhY2UgLyBjcmFzaCBsb2cgYmFjayB0bworICAgICAg
ICB0aGUgY2FsbGluZyBjb2RlLCB3aGljaCBjYW4gdGhlbiB0cmVhdCBpdCBnZW5lcmljYWxseSBh
bmQgcG9ydGFibHkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBuZWVkcyBtb3JlIHRlc3Rpbmcgb2Yg
Ym90aCBXZWJLaXRUZXN0UnVubmVyIGFuZAorICAgICAgICBkaWZmZXJlbnQgb3MvdmVyc2lvbiBj
b21iaW5hdGlvbnMsIGJ1dCBpdCdzIGEgc3RhcnQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5OiBDbGVhbiB1cCByZWFkaW5nIHRoZSBsb2dz
LgorICAgICAgICAoQ3Jhc2hMb2dzLmZpbmRfbmV3ZXN0X2xvZyk6CisgICAgICAgIChDcmFzaExv
Z3MuX2ZpbmRfbmV3ZXN0X2xvZ19kYXJ3aW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weTogSnVzdAorICAg
ICAgICAgIGdldCB0aGUgY3Jhc2ggbG9nIGZyb20gdGhlIGRyaXZlciBvdXRwdXQuCisgICAgICAg
ICh3cml0ZV90ZXN0X3Jlc3VsdCk6CisgICAgICAgIChUZXN0UmVzdWx0V3JpdGVyLndyaXRlX2Ny
YXNoX2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5OiBSZW1vdmUgaXNfY3Jhc2hfcmVwb3J0ZXIoKS4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weTogUmVtb3ZlIGlzX2NyYXNoX3JlcG9ydGVy
KCkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJf
cHJvY2Vzcy5weTogTG90cyBvZiBjbGVhbiB1cCBvZiBob3cgY3Jhc2hlcyBhcmUgaGFuZGxlZC4K
KyAgICAgICAgKFNlcnZlclByb2Nlc3MuX3Jlc2V0KToKKyAgICAgICAgKFNlcnZlclByb2Nlc3Mu
X2hhbmRsZV9wb3NzaWJsZV9pbnRlcnJ1cHQpOgorICAgICAgICAoU2VydmVyUHJvY2Vzcy53cml0
ZSk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLnJlYWRfc3Rkb3V0KToKKyAgICAgICAgKFNlcnZl
clByb2Nlc3MuaGFzX2NyYXNoZWQpOiBBZGQgYSBuZXcgaGFzX2NyYXNoZWQoKSByb3V0aW5lIHRo
YXQgbWF5IGFjdHVhbGx5IGRvIHdvcmsKKyAgICAgICAgICB0byBjaGVjayBmb3IgY3Jhc2hlcyB0
byByZXBsYWNlIHRoZSAnY3Jhc2hlZCcgcHJvcGVydHkuCisgICAgICAgIChTZXJ2ZXJQcm9jZXNz
Ll9yZWFkKToKKyAgICAgICAgKFNlcnZlclByb2Nlc3Muc3RvcCk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5weTog
UmVtb3ZlIGlzX2NyYXNoX3JlcG9ydGVyKCkuCisgICAgICAgIChUcml2aWFsTW9ja1BvcnQuY2hl
Y2tfZm9yX2xlYWtzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dlYmtpdC5weTogTG90cyBvZiBjbGVhbiB1cCBvZiBob3cgY3Jhc2hlcyBhcmUgaGFuZGxl
ZC4oKQorICAgICAgICAoV2ViS2l0UG9ydC5fcmVhZF9pbWFnZV9kaWZmKToKKyAgICAgICAgKFdl
YktpdERyaXZlci5oYXNfY3Jhc2hlZCk6CisgICAgICAgIChXZWJLaXREcml2ZXIucnVuX3Rlc3Qp
OgorICAgICAgICAoV2ViS2l0RHJpdmVyLl9yZWFkX2Jsb2NrKToKKyAgICAgICAgKFdlYktpdERy
aXZlci5fd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXIpOgorCiAyMDEyLTAzLTE1ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVGhlIGNvbW1pdC1xdWV1ZSBjYW4gaGFu
ZyB3aGVuIHRoZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgc3R5bGUgY2hlY2sgZmFpbHMgZHVyaW5n
IGNvbW1pdApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2NyYXNobG9ncy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFz
aGxvZ3MucHkKaW5kZXggYTZiNjU3NWY2MDQxMzExM2NhNjFmMWY3OTRhMzM2ZWU5Mjg5YTY5MC4u
MTFlMDAyZWUyYjczZjUyZTBiYmRhYWZjZDVjYTY3MGYxZWUzNzk3NyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5CkBAIC0zOCw2ICsz
OCw3IEBAIGNsYXNzIENyYXNoTG9ncyhvYmplY3QpOgogICAgIGRlZiBmaW5kX25ld2VzdF9sb2co
c2VsZiwgcHJvY2Vzc19uYW1lLCBwaWQ9Tm9uZSk6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9
PSAiZGFyd2luIjoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maW5kX25ld2VzdF9sb2dfZGFy
d2luKHByb2Nlc3NfbmFtZSwgcGlkKQorICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIF9s
b2dfZGlyZWN0b3J5X2RhcndpbihzZWxmKToKICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IHNlbGYu
X2ZpbGVzeXN0ZW0uZXhwYW5kdXNlcigifiIpCkBAIC01NCwyMyArNTUsMTcgQEAgY2xhc3MgQ3Jh
c2hMb2dzKG9iamVjdCk6CiAKICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IHNlbGYuX2xvZ19kaXJl
Y3RvcnlfZGFyd2luKCkKICAgICAgICAgbG9ncyA9IHNlbGYuX2ZpbGVzeXN0ZW0uZmlsZXNfdW5k
ZXIobG9nX2RpcmVjdG9yeSwgZmlsZV9maWx0ZXI9aXNfY3Jhc2hfbG9nKQotICAgICAgICBpZiBu
b3QgbG9nczoKLSAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGZpcnN0X2xpbmVfcmVn
ZXggPSByZS5jb21waWxlKHInXlByb2Nlc3M6XHMrKD9QPHByb2Nlc3NfbmFtZT4uKikgXFsoP1A8
cGlkPlxkKylcXSQnKQorICAgICAgICBlcnJvcnMgPSAnJwogICAgICAgICBmb3IgcGF0aCBpbiBy
ZXZlcnNlZChzb3J0ZWQobG9ncykpOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IHdpdGggc2VsZi5fZmlsZXN5c3RlbS5vcGVuX3RleHRfZmlsZV9mb3JfcmVhZGluZyhwYXRoKSBh
cyBmOgotICAgICAgICAgICAgICAgICAgICBmaXJzdF9saW5lID0gZi5yZWFkbGluZSgpCisgICAg
ICAgICAgICAgICAgZiA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUocGF0aCkKKyAg
ICAgICAgICAgICAgICBtYXRjaCA9IGZpcnN0X2xpbmVfcmVnZXgubWF0Y2goZlswOmYuZmluZCgn
XG4nKV0pCisgICAgICAgICAgICAgICAgaWYgbWF0Y2ggYW5kIG1hdGNoLmdyb3VwKCdwcm9jZXNz
X25hbWUnKSA9PSBwcm9jZXNzX25hbWUgYW5kIChwaWQgaXMgTm9uZSBvciBpbnQobWF0Y2guZ3Jv
dXAoJ3BpZCcpKSA9PSBwaWQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JzICsg
ZgorICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6CisgICAgICAgICAgICAgICAgIyBUaGVy
ZSdzIGEgY2hhbmNlIHRoYXQgdGhlIGZpbGUgd2UganVzdCBmYWlsZWQgdG8gcmVhZCBpcyB0aGUg
b25lIHdlIHdhbnQsCisgICAgICAgICAgICAgICAgIyBzbyB3ZSByZWNvcmQgdGhlIGVycm9yIGlu
IHRoZSAiY3Jhc2ggbG9nIiBhbmQga2VlcCBsb29raW5nLgorICAgICAgICAgICAgICAgIGVycm9y
cyArPSAiRVJST1I6IEZhaWxlZCB0byByZWFkICclcyc6ICVzXG4iICUgKHBhdGgsIHN0cihlKSkK
IAotICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGZpcnN0X2xpbmVfcmVnZXgubWF0Y2goZmly
c3RfbGluZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoOgotICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2guZ3JvdXAo
J3Byb2Nlc3NfbmFtZScpICE9IHByb2Nlc3NfbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGlmIHBpZCBpcyBub3QgTm9uZSBhbmQgaW50
KG1hdGNoLmdyb3VwKCdwaWQnKSkgIT0gcGlkOgotICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKLQotICAgICAgICAgICAgICAgICAgICBmLnNlZWsoMCwgb3MuU0VFS19TRVQpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQotICAgICAgICAgICAgZXhjZXB0IElPRXJy
b3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0dXJuIGVycm9ycyBvciBO
b25lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jh
c2hsb2dzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2NyYXNobG9nc191bml0dGVzdC5weQppbmRleCBhYjFhNmMyYWQyZjRjODQ4OTNhN2NlNWIwZTFj
NDI1MDU3MmE3MGY4Li5iMTIxNWExNTQ3ZmZlYzAxMGI0MmM4M2U1MzViMGE5MTBlMGRiNTk5IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dz
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9j
cmFzaGxvZ3NfdW5pdHRlc3QucHkKQEAgLTgzLDYgKzgzLDcgQEAgY2xhc3MgQ3Jhc2hMb2dzVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIG5ld2VyX21vY2tfY3Jhc2hfcmVwb3J0ID0g
bWFrZV9tb2NrX2NyYXNoX3JlcG9ydF9kYXJ3aW4oJ0R1bXBSZW5kZXJUcmVlJywgMjg1MjkpCiAg
ICAgICAgIG90aGVyX3Byb2Nlc3NfbW9ja19jcmFzaF9yZXBvcnQgPSBtYWtlX21vY2tfY3Jhc2hf
cmVwb3J0X2RhcndpbignRm9vUHJvY2VzcycsIDI4NTI3KQogICAgICAgICBtaXNmb3JtYXR0ZWRf
bW9ja19jcmFzaF9yZXBvcnQgPSAnSnVuayB0aGF0IHNob3VsZCBub3QgYXBwZWFyIGluIGEgY3Jh
c2ggcmVwb3J0JyArIG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luKCdEdW1wUmVuZGVyVHJl
ZScsIDI4NTI2KVsyMDA6XQorICAgICAgICBlcnJvcnMgPSAiRVJST1I6IEZhaWxlZCB0byByZWFk
ICcvVXNlcnMvbW9jay9MaWJyYXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRlclRy
ZWVfMjAxMS0wNi0xMy0xNTA3MjFfcXVhZHplbi5jcmFzaCc6IFtFcnJubyAyXSAvVXNlcnMvbW9j
ay9MaWJyYXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0x
My0xNTA3MjFfcXVhZHplbi5jcmFzaDogJ05vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknXG4iCiAg
ICAgICAgIGZpbGVzID0ge30KICAgICAgICAgZmlsZXNbJy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9n
cy9EaWFnbm9zdGljUmVwb3J0cy9EdW1wUmVuZGVyVHJlZV8yMDExLTA2LTEzLTE1MDcxOF9xdWFk
emVuLmNyYXNoJ10gPSBvbGRlcl9tb2NrX2NyYXNoX3JlcG9ydAogICAgICAgICBmaWxlc1snL1Vz
ZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL0R1bXBSZW5kZXJUcmVlXzIw
MTEtMDYtMTMtMTUwNzE5X3F1YWR6ZW4uY3Jhc2gnXSA9IG1vY2tfY3Jhc2hfcmVwb3J0CkBAIC05
MywxMCArOTQsMTAgQEAgY2xhc3MgQ3Jhc2hMb2dzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShmaWxlcykKICAgICAgICAgY3Jhc2hf
bG9ncyA9IENyYXNoTG9ncyhmaWxlc3lzdGVtKQogICAgICAgICBsb2cgPSBjcmFzaF9sb2dzLmZp
bmRfbmV3ZXN0X2xvZygiRHVtcFJlbmRlclRyZWUiKQotICAgICAgICBzZWxmLmFzc2VydExpbmVz
RXF1YWwobG9nLCBuZXdlcl9tb2NrX2NyYXNoX3JlcG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRM
aW5lc0VxdWFsKGxvZywgZXJyb3JzICsgbmV3ZXJfbW9ja19jcmFzaF9yZXBvcnQpCiAgICAgICAg
IGxvZyA9IGNyYXNoX2xvZ3MuZmluZF9uZXdlc3RfbG9nKCJEdW1wUmVuZGVyVHJlZSIsIDI4NTI5
KQotICAgICAgICBzZWxmLmFzc2VydExpbmVzRXF1YWwobG9nLCBuZXdlcl9tb2NrX2NyYXNoX3Jl
cG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRMaW5lc0VxdWFsKGxvZywgZXJyb3JzICsgbmV3ZXJf
bW9ja19jcmFzaF9yZXBvcnQpCiAgICAgICAgIGxvZyA9IGNyYXNoX2xvZ3MuZmluZF9uZXdlc3Rf
bG9nKCJEdW1wUmVuZGVyVHJlZSIsIDI4NTMwKQotICAgICAgICBzZWxmLmFzc2VydExpbmVzRXF1
YWwobG9nLCBtb2NrX2NyYXNoX3JlcG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRMaW5lc0VxdWFs
KGxvZywgZXJyb3JzICsgbW9ja19jcmFzaF9yZXBvcnQpCiAgICAgICAgIGxvZyA9IGNyYXNoX2xv
Z3MuZmluZF9uZXdlc3RfbG9nKCJEdW1wUmVuZGVyVHJlZSIsIDI4NTMxKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxvZywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2csIGVy
cm9ycykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRleCA2Mzc1
ODIwY2QzOWMzYTAwMzJjYzc2M2QyMDA4ZWEwYjg2ZTJhZDkxLi45ODFlNjU4OTBkOWUxNjgxZjYy
NTMwNzA4YjRhYzM0M2QyOTlmOTMxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3Rf
cnVubmVyLnB5CkBAIC0xOTcsNyArMTk3LDcgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAg
ICAgICAgICAgIHRlc3RuYW1lID0gc2VsZi5fdGVzdF9uYW1lCiAKICAgICAgICAgaWYgZHJpdmVy
X291dHB1dC5jcmFzaDoKLSAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVz
LkZhaWx1cmVDcmFzaChib29sKHJlZmVyZW5jZV9maWxlbmFtZSkpKQorICAgICAgICAgICAgZmFp
bHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKGRyaXZlcl9vdXRwdXQuY3Jh
c2hlZF9zdWJwcm9jZXNzX25hbWUsIGJvb2wocmVmZXJlbmNlX2ZpbGVuYW1lKSkpCiAgICAgICAg
ICAgICBpZiBkcml2ZXJfb3V0cHV0LmVycm9yOgogICAgICAgICAgICAgICAgIF9sb2cuZGVidWco
IiVzICVzIGNyYXNoZWQsIHN0YWNrIHRyYWNlOiIgJSAoc2VsZi5fd29ya2VyX25hbWUsIHRlc3Ru
YW1lKSkKICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93
cml0ZXIucHkKaW5kZXggYTQwYzA5MGI1ODA4ZGFlOGY3OTVlYzU5YzM5Y2RlY2RkOTMyMjc2ZS4u
NDRmZjIxNjgxNWM0YmQ0Y2JiNWU4NWU5YzEzMDA3MGM0MGFhNmVhMyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRf
d3JpdGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weQpAQCAtMjksNyArMjksNiBAQAogCiBpbXBvcnQg
bG9nZ2luZwogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hsb2dzIGltcG9ydCBD
cmFzaExvZ3MKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9m
YWlsdXJlcwogCiAKQEAgLTQwLDcgKzM5LDggQEAgZGVmIHdyaXRlX3Rlc3RfcmVzdWx0KHBvcnQs
IHRlc3RfbmFtZSwgZHJpdmVyX291dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZF9kcml2ZXJfb3V0cHV0LCBmYWlsdXJlcyk6CiAgICAgIiIiV3JpdGUgdGhlIHRlc3QgcmVzdWx0
IHRvIHRoZSByZXN1bHQgb3V0cHV0IGRpcmVjdG9yeS4iIiIKICAgICByb290X291dHB1dF9kaXIg
PSBwb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCkKLSAgICB3cml0ZXIgPSBUZXN0UmVzdWx0V3JpdGVy
KHBvcnQsIHJvb3Rfb3V0cHV0X2RpciwgdGVzdF9uYW1lKQorICAgICMgRklYTUU6IHBhc3MgaW4g
dGhlIGZpbGVzeXN0ZW0sIGRvbid0IGdldCBpdCBmcm9tIHRoZSBwb3J0LgorICAgIHdyaXRlciA9
IFRlc3RSZXN1bHRXcml0ZXIocG9ydC5fZmlsZXN5c3RlbSwgcG9ydCwgcm9vdF9vdXRwdXRfZGly
LCB0ZXN0X25hbWUpCiAgICAgaWYgZHJpdmVyX291dHB1dC5lcnJvcjoKICAgICAgICAgd3JpdGVy
LndyaXRlX3N0ZGVycihkcml2ZXJfb3V0cHV0LmVycm9yKQogCkBAIC02Myw3ICs2Myw3IEBAIGRl
ZiB3cml0ZV90ZXN0X3Jlc3VsdChwb3J0LCB0ZXN0X25hbWUsIGRyaXZlcl9vdXRwdXQsCiAgICAg
ICAgICAgICB3cml0ZXIud3JpdGVfYXVkaW9fZmlsZXMoZHJpdmVyX291dHB1dC5hdWRpbywgZXhw
ZWN0ZWRfZHJpdmVyX291dHB1dC5hdWRpbykKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZhaWx1
cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKToKICAgICAgICAgICAgIGNyYXNoZWRfZHJp
dmVyX291dHB1dCA9IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQgaWYgZmFpbHVyZS5pc19yZWZ0ZXN0
IGVsc2UgZHJpdmVyX291dHB1dAotICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NyYXNoX3JlcG9y
dChjcmFzaGVkX2RyaXZlcl9vdXRwdXQuY3Jhc2hlZF9wcm9jZXNzX25hbWUsIGNyYXNoZWRfZHJp
dmVyX291dHB1dC5lcnJvcikKKyAgICAgICAgICAgIHdyaXRlci53cml0ZV9jcmFzaF9sb2coY3Jh
c2hlZF9kcml2ZXJfb3V0cHV0LmNyYXNoX2xvZykKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZh
aWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRjaCk6CiAgICAgICAgICAg
ICB3cml0ZXIud3JpdGVfaW1hZ2VfZmlsZXMoZHJpdmVyX291dHB1dC5pbWFnZSwgZXhwZWN0ZWRf
ZHJpdmVyX291dHB1dC5pbWFnZSkKICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgd29yayBzaG91
bGQgYmUgZG9uZSBlYXJsaWVyIGluIHRoZSBwaXBlbGluZSAoZS5nLiwgd2hlbiB3ZSBjb21wYXJl
IGltYWdlcyBmb3Igbm9uLXJlZiB0ZXN0cykuCkBAIC05NiwxNCArOTYsMTUgQEAgY2xhc3MgVGVz
dFJlc3VsdFdyaXRlcihvYmplY3QpOgogICAgIEZJTEVOQU1FX1NVRkZJWF9JTUFHRV9ESUZGID0g
Ii1kaWZmLnBuZyIKICAgICBGSUxFTkFNRV9TVUZGSVhfSU1BR0VfRElGRlNfSFRNTCA9ICItZGlm
ZnMuaHRtbCIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCByb290X291dHB1dF9kaXIs
IHRlc3RfbmFtZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVzeXN0ZW0sIHBvcnQsIHJv
b3Rfb3V0cHV0X2RpciwgdGVzdF9uYW1lKToKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGZp
bGVzeXN0ZW0KICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5fcm9vdF9v
dXRwdXRfZGlyID0gcm9vdF9vdXRwdXRfZGlyCiAgICAgICAgIHNlbGYuX3Rlc3RfbmFtZSA9IHRl
c3RfbmFtZQogCiAgICAgZGVmIF9tYWtlX291dHB1dF9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAg
ICIiIkNyZWF0ZXMgdGhlIG91dHB1dCBkaXJlY3RvcnkgKGlmIG5lZWRlZCkgZm9yIGEgZ2l2ZW4g
dGVzdCBmaWxlbmFtZS4iIiIKLSAgICAgICAgZnMgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisg
ICAgICAgIGZzID0gc2VsZi5fZmlsZXN5c3RlbQogICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBm
cy5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0X2Rpciwgc2VsZi5fdGVzdF9uYW1lKQogICAgICAgICBm
cy5tYXliZV9tYWtlX2RpcmVjdG9yeShmcy5kaXJuYW1lKG91dHB1dF9maWxlbmFtZSkpCiAKQEAg
LTExOSwxMiArMTIwLDEyIEBAIGNsYXNzIFRlc3RSZXN1bHRXcml0ZXIob2JqZWN0KToKICAgICAg
ICAgUmV0dXJuOgogICAgICAgICAgIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBvdXRwdXQgZmls
ZW5hbWUKICAgICAgICAgIiIiCi0gICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQor
ICAgICAgICBmcyA9IHNlbGYuX2ZpbGVzeXN0ZW0KICAgICAgICAgb3V0cHV0X2ZpbGVuYW1lID0g
ZnMuam9pbihzZWxmLl9yb290X291dHB1dF9kaXIsIHNlbGYuX3Rlc3RfbmFtZSkKICAgICAgICAg
cmV0dXJuIGZzLnNwbGl0ZXh0KG91dHB1dF9maWxlbmFtZSlbMF0gKyBtb2RpZmllcgogCiAgICAg
ZGVmIF9vdXRwdXRfdGVzdG5hbWUoc2VsZiwgbW9kaWZpZXIpOgotICAgICAgICBmcyA9IHNlbGYu
X3BvcnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgZnMgPSBzZWxmLl9maWxlc3lzdGVtCiAgICAgICAg
IHJldHVybiBmcy5zcGxpdGV4dChmcy5iYXNlbmFtZShzZWxmLl90ZXN0X25hbWUpKVswXSArIG1v
ZGlmaWVyCiAKICAgICBkZWYgd3JpdGVfb3V0cHV0X2ZpbGVzKHNlbGYsIGZpbGVfdHlwZSwgb3V0
cHV0LCBleHBlY3RlZCk6CkBAIC0xNDQsMjggKzE0NSwyNCBAQCBjbGFzcyBUZXN0UmVzdWx0V3Jp
dGVyKG9iamVjdCk6CiAgICAgICAgIGFjdHVhbF9maWxlbmFtZSA9IHNlbGYub3V0cHV0X2ZpbGVu
YW1lKHNlbGYuRklMRU5BTUVfU1VGRklYX0FDVFVBTCArIGZpbGVfdHlwZSkKICAgICAgICAgZXhw
ZWN0ZWRfZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxlbmFtZShzZWxmLkZJTEVOQU1FX1NVRkZJ
WF9FWFBFQ1RFRCArIGZpbGVfdHlwZSkKIAotICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVz
eXN0ZW0KKyAgICAgICAgZnMgPSBzZWxmLl9maWxlc3lzdGVtCiAgICAgICAgIGlmIG91dHB1dCBp
cyBub3QgTm9uZToKICAgICAgICAgICAgIGZzLndyaXRlX2JpbmFyeV9maWxlKGFjdHVhbF9maWxl
bmFtZSwgb3V0cHV0KQogICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKICAgICAgICAg
ICAgIGZzLndyaXRlX2JpbmFyeV9maWxlKGV4cGVjdGVkX2ZpbGVuYW1lLCBleHBlY3RlZCkKIAog
ICAgIGRlZiB3cml0ZV9zdGRlcnIoc2VsZiwgZXJyb3IpOgotICAgICAgICBmcyA9IHNlbGYuX3Bv
cnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgZnMgPSBzZWxmLl9maWxlc3lzdGVtCiAgICAgICAgIGZp
bGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoc2VsZi5GSUxFTkFNRV9TVUZGSVhfU1RERVJS
ICsgIi50eHQiKQogICAgICAgICBmcy5tYXliZV9tYWtlX2RpcmVjdG9yeShmcy5kaXJuYW1lKGZp
bGVuYW1lKSkKICAgICAgICAgZnMud3JpdGVfYmluYXJ5X2ZpbGUoZmlsZW5hbWUsIGVycm9yKQog
Ci0gICAgZGVmIHdyaXRlX2NyYXNoX3JlcG9ydChzZWxmLCBjcmFzaGVkX3Byb2Nlc3NfbmFtZSwg
ZXJyb3IpOgotICAgICAgICBmcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KKyAgICBkZWYgd3Jp
dGVfY3Jhc2hfbG9nKHNlbGYsIGNyYXNoX2xvZyk6CisgICAgICAgIGZzID0gc2VsZi5fZmlsZXN5
c3RlbQogICAgICAgICBmaWxlbmFtZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHNlbGYuRklMRU5B
TUVfU1VGRklYX0NSQVNIX0xPRyArICIudHh0IikKICAgICAgICAgZnMubWF5YmVfbWFrZV9kaXJl
Y3RvcnkoZnMuZGlybmFtZShmaWxlbmFtZSkpCi0gICAgICAgICMgRklYTUU6IFdlIHNob3VsZG4n
dCBiZSBncmFiYmluZyBwcml2YXRlIG1lbWJlcnMgb2YgcG9ydC4KLSAgICAgICAgY3Jhc2hfbG9n
cyA9IENyYXNoTG9ncyhmcykKLSAgICAgICAgbG9nID0gY3Jhc2hfbG9ncy5maW5kX25ld2VzdF9s
b2coY3Jhc2hlZF9wcm9jZXNzX25hbWUpCi0gICAgICAgICMgQ3Jhc2hMb2dzIGRvZXNuJ3Qgc3Vw
cG9ydCBldmVyeSBwbGF0Zm9ybSwgc28gd2UgZmFsbCBiYWNrIHRvCi0gICAgICAgICMgaW5jbHVk
aW5nIHRoZSBzdGRlcnIgb3V0cHV0LCB3aGljaCBpcyBhZG1pdHRlZGx5IHNvbWV3aGF0IHJlZHVu
ZGFudC4KLSAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVuYW1lLCBsb2cgaWYgbG9nIGVs
c2UgZXJyb3IpCisgICAgICAgIGlmIGNyYXNoX2xvZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
IGZzLndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwgY3Jhc2hfbG9nKQogCiAgICAgZGVmIHdyaXRl
X3RleHRfZmlsZXMoc2VsZiwgYWN0dWFsX3RleHQsIGV4cGVjdGVkX3RleHQpOgogICAgICAgICBz
ZWxmLndyaXRlX291dHB1dF9maWxlcygiLnR4dCIsIGFjdHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0
KQpAQCAtMjA1LDcgKzIwMiw3IEBAIGNsYXNzIFRlc3RSZXN1bHRXcml0ZXIob2JqZWN0KToKIAog
ICAgIGRlZiB3cml0ZV9pbWFnZV9kaWZmX2ZpbGVzKHNlbGYsIGltYWdlX2RpZmYpOgogICAgICAg
ICBkaWZmX2ZpbGVuYW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoc2VsZi5GSUxFTkFNRV9TVUZG
SVhfSU1BR0VfRElGRikKLSAgICAgICAgZnMgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisgICAg
ICAgIGZzID0gc2VsZi5fZmlsZXN5c3RlbQogICAgICAgICBmcy53cml0ZV9iaW5hcnlfZmlsZShk
aWZmX2ZpbGVuYW1lLCBpbWFnZV9kaWZmKQogCiAgICAgICAgIGRpZmZzX2h0bWxfZmlsZW5hbWUg
PSBzZWxmLm91dHB1dF9maWxlbmFtZShzZWxmLkZJTEVOQU1FX1NVRkZJWF9JTUFHRV9ESUZGU19I
VE1MKQpAQCAtMjYyLDExICsyNTksMTAgQEAgRGlmZmVyZW5jZSBiZXR3ZWVuIGltYWdlczogPGEg
aHJlZj0iJShkaWZmX2ZpbGVuYW1lKXMiPmRpZmY8L2E+PGJyPgogICAgICAgICAgICAgJ2RpZmZf
ZmlsZW5hbWUnOiBzZWxmLl9vdXRwdXRfdGVzdG5hbWUoc2VsZi5GSUxFTkFNRV9TVUZGSVhfSU1B
R0VfRElGRiksCiAgICAgICAgICAgICAncHJlZml4Jzogc2VsZi5fb3V0cHV0X3Rlc3RuYW1lKCcn
KSwKICAgICAgICAgfQotICAgICAgICAjIEZJWE1FOiBUaGlzIHNlZW1zIGxpa2UgYSB0ZXh0IGZp
bGUsIG5vdCBhIGJpbmFyeSBmaWxlLgotICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLndy
aXRlX2JpbmFyeV9maWxlKGRpZmZzX2h0bWxfZmlsZW5hbWUsIGh0bWwpCisgICAgICAgIHNlbGYu
X2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGRpZmZzX2h0bWxfZmlsZW5hbWUsIGh0bWwpCiAK
ICAgICBkZWYgY29weV9maWxlKHNlbGYsIHNyY19maWxlcGF0aCk6Ci0gICAgICAgIGZzID0gc2Vs
Zi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBmcyA9IHNlbGYuX2ZpbGVzeXN0ZW0KICAgICAg
ICAgYXNzZXJ0IGZzLmV4aXN0cyhzcmNfZmlsZXBhdGgpLCAnc3JjX2ZpbGVwYXRoOiAlcycgJSBz
cmNfZmlsZXBhdGgKICAgICAgICAgZHN0X2ZpbGVwYXRoID0gZnMuam9pbihzZWxmLl9yb290X291
dHB1dF9kaXIsIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShzcmNfZmlsZXBhdGgp
KQogICAgICAgICBzZWxmLl9tYWtlX291dHB1dF9kaXJlY3RvcnkoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25z
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhw
ZWN0YXRpb25zLnB5CmluZGV4IGYzZWU2YjUzNGM1NWU4ZmIxMGQ1ZDQzMTQwNDdkZDI3MjEzOGEx
OWUuLmU0MzAyOWQzMzliYTg1OWVlODk3N2VjYjZlYjYxZGQzMjhhYjE1ZmMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0
aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMv
dGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTY1Nyw4ICs2NTcsNyBAQCBjbGFzcyBUZXN0RXhwZWN0
YXRpb25zKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNQUdFX1BM
VVNfVEVYVDogKCdpbWFnZSBhbmQgdGV4dCBtaXNtYXRjaCcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbWFnZSBhbmQgdGV4dCBtaXNtYXRjaCcp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVURJTzogKCdhdWRpbyBtaXNtYXRj
aCcsICdhdWRpbyBtaXNtYXRjaCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
UkFTSDogKCdEdW1wUmVuZGVyVHJlZSBjcmFzaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0R1bXBSZW5kZXJUcmVlIGNyYXNoZXMnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1JBU0g6ICgnY3Jhc2gnLCAnY3Jhc2hlcycpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUSU1FT1VUOiAoJ3Rlc3QgdGltZWQgb3V0JywgJ3Rlc3Rz
IHRpbWVkIG91dCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSVNTSU5HOiAo
J25vIGV4cGVjdGVkIHJlc3VsdCBmb3VuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnbm8gZXhwZWN0ZWQgcmVzdWx0cyBmb3VuZCcpfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZmFpbHVyZXMu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9mYWls
dXJlcy5weQppbmRleCBmMmYyNDZlMzBhOWU4YzYzNTc0YjE5YTZkNzg4YzY5NTI2ZWM4ZTkwLi44
NjZhMzBhYWU1NzAxMDhhZGVmOWExZDIzYjcyNTdhMDExZGI3MDMwIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9mYWlsdXJlcy5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9mYWls
dXJlcy5weQpAQCAtODUsOCArODUsNyBAQCBjbGFzcyBUZXN0RmFpbHVyZShvYmplY3QpOgogICAg
ICAgICAiIiJDcmVhdGVzIGEgVGVzdEZhaWx1cmUgb2JqZWN0IGZyb20gdGhlIHNwZWNpZmllZCBz
dHJpbmcuIiIiCiAgICAgICAgIHJldHVybiBjUGlja2xlLmxvYWRzKHMpCiAKLSAgICBAc3RhdGlj
bWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKKyAgICBkZWYgbWVzc2FnZShzZWxmKToKICAgICAg
ICAgIiIiUmV0dXJucyBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBmYWlsdXJlIGluIG1vcmUgZGV0
YWlsLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKQEAgLTExMyw4ICsx
MTIsNyBAQCBjbGFzcyBGYWlsdXJlVGltZW91dChUZXN0RmFpbHVyZSk6CiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGlzX3JlZnRlc3Q9RmFsc2UpOgogICAgICAgICBzZWxmLmlzX3JlZnRlc3QgPSBp
c19yZWZ0ZXN0CiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKKyAgICBk
ZWYgbWVzc2FnZShzZWxmKToKICAgICAgICAgcmV0dXJuICJUZXN0IHRpbWVkIG91dCIKIAogICAg
IGRlZiBkcml2ZXJfbmVlZHNfcmVzdGFydChzZWxmKToKQEAgLTEyMiwxNCArMTIwLDEzIEBAIGNs
YXNzIEZhaWx1cmVUaW1lb3V0KFRlc3RGYWlsdXJlKToKIAogCiBjbGFzcyBGYWlsdXJlQ3Jhc2go
VGVzdEZhaWx1cmUpOgotICAgICIiIkR1bXBSZW5kZXJUcmVlIGNyYXNoZWQuIiIiCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGlzX3JlZnRlc3Q9RmFsc2UpOgorICAgICIiIkR1bXBSZW5kZXJUcmVl
L1dlYktpdFRlc3RSdW5uZXIgY3Jhc2hlZC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJv
Y2Vzc19uYW1lPSc/PycsIGlzX3JlZnRlc3Q9RmFsc2UpOgorICAgICAgICBzZWxmLnByb2Nlc3Nf
bmFtZSA9IHByb2Nlc3NfbmFtZQogICAgICAgICBzZWxmLmlzX3JlZnRlc3QgPSBpc19yZWZ0ZXN0
CiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKLSAgICAgICAgIyBGSVhN
RTogVGhpcyBpcyB3cm9uZyBmb3IgV2ViS2l0MiAod2hpY2ggdXNlcyBXZWJLaXRUZXN0UnVubmVy
KS4KLSAgICAgICAgcmV0dXJuICJEdW1wUmVuZGVyVHJlZSBjcmFzaGVkIgorICAgIGRlZiBtZXNz
YWdlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5wcm9jZXNzX25hbWUgKyAiIGNyYXNoZWQi
CiAKICAgICBkZWYgZHJpdmVyX25lZWRzX3Jlc3RhcnQoc2VsZik6CiAgICAgICAgIHJldHVybiBU
cnVlCkBAIC0xMzgsMzIgKzEzNSwyOCBAQCBjbGFzcyBGYWlsdXJlQ3Jhc2goVGVzdEZhaWx1cmUp
OgogY2xhc3MgRmFpbHVyZU1pc3NpbmdSZXN1bHQoVGVzdEZhaWx1cmUpOgogICAgICIiIkV4cGVj
dGVkIHJlc3VsdCB3YXMgbWlzc2luZy4iIiIKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYg
bWVzc2FnZSgpOgorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgogICAgICAgICByZXR1cm4gIk5vIGV4
cGVjdGVkIHJlc3VsdHMgZm91bmQiCiAKIAogY2xhc3MgRmFpbHVyZVRleHRNaXNtYXRjaChUZXN0
RmFpbHVyZSk6CiAgICAgIiIiVGV4dCBkaWZmIG91dHB1dCBmYWlsZWQuIiIiCiAKLSAgICBAc3Rh
dGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKKyAgICBkZWYgbWVzc2FnZShzZWxmKToKICAg
ICAgICAgcmV0dXJuICJUZXh0IGRpZmYgbWlzbWF0Y2giCiAKIAogY2xhc3MgRmFpbHVyZU1pc3Np
bmdJbWFnZUhhc2goVGVzdEZhaWx1cmUpOgogICAgICIiIkFjdHVhbCByZXN1bHQgaGFzaCB3YXMg
bWlzc2luZy4iIiIKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbWVzc2FnZSgpOgorICAg
IGRlZiBtZXNzYWdlKHNlbGYpOgogICAgICAgICByZXR1cm4gIk5vIGV4cGVjdGVkIGltYWdlIGhh
c2ggZm91bmQiCiAKIAogY2xhc3MgRmFpbHVyZU1pc3NpbmdJbWFnZShUZXN0RmFpbHVyZSk6CiAg
ICAgIiIiQWN0dWFsIHJlc3VsdCBpbWFnZSB3YXMgbWlzc2luZy4iIiIKIAotICAgIEBzdGF0aWNt
ZXRob2QKLSAgICBkZWYgbWVzc2FnZSgpOgorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgogICAgICAg
ICByZXR1cm4gIk5vIGV4cGVjdGVkIGltYWdlIGZvdW5kIgogCiAKQEAgLTE3MiwxNiArMTY1LDE0
IEBAIGNsYXNzIEZhaWx1cmVJbWFnZUhhc2hNaXNtYXRjaChUZXN0RmFpbHVyZSk6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGRpZmZfcGVyY2VudD0wKToKICAgICAgICAgc2VsZi5kaWZmX3BlcmNl
bnQgPSBkaWZmX3BlcmNlbnQKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbWVzc2FnZSgp
OgorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgogICAgICAgICByZXR1cm4gIkltYWdlIG1pc21hdGNo
IgogCiAKIGNsYXNzIEZhaWx1cmVJbWFnZUhhc2hJbmNvcnJlY3QoVGVzdEZhaWx1cmUpOgogICAg
ICIiIkFjdHVhbCByZXN1bHQgaGFzaCBpcyBpbmNvcnJlY3QuIiIiCiAKLSAgICBAc3RhdGljbWV0
aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKKyAgICBkZWYgbWVzc2FnZShzZWxmKToKICAgICAgICAg
cmV0dXJuICJJbWFnZXMgbWF0Y2gsIGV4cGVjdGVkIGltYWdlIGhhc2ggaW5jb3JyZWN0LiAiCiAK
IApAQCAtMTkxLDggKzE4Miw3IEBAIGNsYXNzIEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2goVGVzdEZh
aWx1cmUpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWZlcmVuY2VfZmlsZW5hbWU9Tm9uZSk6
CiAgICAgICAgIHNlbGYucmVmZXJlbmNlX2ZpbGVuYW1lID0gcmVmZXJlbmNlX2ZpbGVuYW1lCiAK
LSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKKyAgICBkZWYgbWVzc2FnZShz
ZWxmKToKICAgICAgICAgcmV0dXJuICJNaXNtYXRjaCB3aXRoIHJlZmVyZW5jZSIKIAogCkBAIC0y
MDIsOCArMTkyLDcgQEAgY2xhc3MgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyKFRl
c3RGYWlsdXJlKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcmVmZXJlbmNlX2ZpbGVuYW1lPU5v
bmUpOgogICAgICAgICBzZWxmLnJlZmVyZW5jZV9maWxlbmFtZSA9IHJlZmVyZW5jZV9maWxlbmFt
ZQogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBtZXNzYWdlKCk6CisgICAgZGVmIG1lc3Nh
Z2Uoc2VsZik6CiAgICAgICAgIHJldHVybiAiTWlzbWF0Y2ggd2l0aCB0aGUgcmVmZXJlbmNlIGRp
ZCBub3Qgb2NjdXIiCiAKIApAQCAtMjEzLDI0ICsyMDIsMjEgQEAgY2xhc3MgRmFpbHVyZVJlZnRl
c3ROb0ltYWdlc0dlbmVyYXRlZChUZXN0RmFpbHVyZSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHJlZmVyZW5jZV9maWxlbmFtZT1Ob25lKToKICAgICAgICAgc2VsZi5yZWZlcmVuY2VfZmlsZW5h
bWUgPSByZWZlcmVuY2VfZmlsZW5hbWUKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbWVz
c2FnZSgpOgorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgogICAgICAgICByZXR1cm4gIlJlZnRlc3Qg
ZGlkbid0IGdlbmVyYXRlIHBpeGVsIHJlc3VsdHMuIgogCiAKIGNsYXNzIEZhaWx1cmVNaXNzaW5n
QXVkaW8oVGVzdEZhaWx1cmUpOgogICAgICIiIkFjdHVhbCByZXN1bHQgaW1hZ2Ugd2FzIG1pc3Np
bmcuIiIiCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKKyAgICBkZWYg
bWVzc2FnZShzZWxmKToKICAgICAgICAgcmV0dXJuICJObyBleHBlY3RlZCBhdWRpbyBmb3VuZCIK
IAogCiBjbGFzcyBGYWlsdXJlQXVkaW9NaXNtYXRjaChUZXN0RmFpbHVyZSk6CiAgICAgIiIiQXVk
aW8gZmlsZXMgZGlkbid0IG1hdGNoLiIiIgogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBt
ZXNzYWdlKCk6CisgICAgZGVmIG1lc3NhZ2Uoc2VsZik6CiAgICAgICAgIHJldHVybiAiQXVkaW8g
bWlzbWF0Y2giCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlLnB5CmluZGV4IGUyNjJhOWQyZDFlOTFiNzA2OTU0ODhmN2Y3NzdmNDAyN2YxODVl
ZWQuLjNmYTMyZTdlNGFhYTJkNTdmMDViYTJhZjcxZGFmN2Q2OGFiOTU2ZTUgMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTI4Nyw5
ICsyODcsNiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY3R1YWxfZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiAnJy5qb2luKGRpZmYp
CiAKLSAgICBkZWYgaXNfY3Jhc2hfcmVwb3J0ZXIoc2VsZiwgcHJvY2Vzc19uYW1lKToKLSAgICAg
ICAgcmV0dXJuIEZhbHNlCi0KICAgICBkZWYgY2hlY2tfZm9yX2xlYWtzKHNlbGYsIHByb2Nlc3Nf
bmFtZSwgcHJvY2Vzc19waWQpOgogICAgICAgICAjIFN1YmNsYXNzZXMgc2hvdWxkIGNoZWNrIGZv
ciBsZWFrcyBpbiB0aGUgcnVubmluZyBwcm9jZXNzCiAgICAgICAgICMgYW5kIHByaW50IGFueSBu
ZWNlc3Nhcnkgd2FybmluZ3MgaWYgbGVha3MgYXJlIGZvdW5kLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggNjNlNGIw
ZDA0NTYzYzU3ZWQyNjRkMDkxMDE4YWNmNjJiODgxNzcyYy4uM2IwZmQyNWQ1OTk0ZTkzYzZlOTk4
NmExNDA5M2ZkZDBjYmViOTU2YyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC01OTAsMTYgKzU5MCwxNyBAQCBjbGFz
cyBDaHJvbWl1bURyaXZlcihEcml2ZXIpOgogICAgICAgICAgICAgICAgIHRleHQgPSBOb25lCiAK
ICAgICAgICAgZXJyb3IgPSAnJy5qb2luKGVycm9yKQotICAgICAgICBjcmFzaGVkX3Byb2Nlc3Nf
bmFtZSA9IE5vbmUKICAgICAgICAgIyBDdXJyZW50bHkgdGhlIHN0YWNrdHJhY2UgaXMgaW4gdGhl
IHRleHQgb3V0cHV0LCBub3QgZXJyb3IsIHNvIGFwcGVuZCB0aGUgdHdvIHRvZ2V0aGVyIHNvCiAg
ICAgICAgICMgdGhhdCB3ZSBjYW4gc2VlIHN0YWNrIGluIHRoZSBvdXRwdXQuIFNlZSBodHRwOi8v
d2Via2l0Lm9yZy9iLzY2ODA2CiAgICAgICAgICMgRklYTUU6IFdlIHJlYWxseSBzaG91bGQgcHJv
cGVybHkgaGFuZGxlIHRoZSBzdGRlcnIgb3V0cHV0IHNlcGFyYXRlbHkuCisgICAgICAgIGNyYXNo
X2xvZyA9ICcnCiAgICAgICAgIGlmIGNyYXNoOgotICAgICAgICAgICAgZXJyb3IgPSBlcnJvciAr
IHN0cih0ZXh0KQotICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBzZWxmLl9wb3J0
LmRyaXZlcl9uYW1lKCkKKyAgICAgICAgICAgIGNyYXNoX2xvZyA9IGVycm9yCisgICAgICAgICAg
ICBpZiB0ZXh0OgorICAgICAgICAgICAgICAgIGNyYXNoX2xvZyA9IGVycm9yICsgdGV4dAogCiAg
ICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQodGV4dCwgb3V0cHV0X2ltYWdlLCBhY3R1YWxfY2hl
Y2tzdW0sIGF1ZGlvPWF1ZGlvX2J5dGVzLAotICAgICAgICAgICAgY3Jhc2g9Y3Jhc2gsIGNyYXNo
ZWRfcHJvY2Vzc19uYW1lPWNyYXNoZWRfcHJvY2Vzc19uYW1lLCB0ZXN0X3RpbWU9cnVuX3RpbWUs
IHRpbWVvdXQ9dGltZW91dCwgZXJyb3I9ZXJyb3IpCisgICAgICAgICAgICBjcmFzaD1jcmFzaCwg
Y3Jhc2hfbG9nPWNyYXNoX2xvZywgdGVzdF90aW1lPXJ1bl90aW1lLCB0aW1lb3V0PXRpbWVvdXQs
IGVycm9yPWVycm9yKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVz
dF9hcmdzKToKICAgICAgICAgaWYgbm90IHNlbGYuX3Byb2M6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVz
dC5weQppbmRleCAzOGY3NzdiZmJjNTYzMWE3ZTE1MTdiNzhhMGI4ZmJlOWFhNDY4NjVkLi4zYWNl
YTZhY2JlNTA1YTE1Nzg4MGVhNmZlMzc2ODcxNmVkNWVkYTUyIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5p
dHRlc3QucHkKQEAgLTkxLDcgKzkxLDcgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXJUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5kcml2ZXIuX3Byb2Muc3Rkb3V0LnJlYWRsaW5l
ID0gbW9ja19yZWFkbGluZQogICAgICAgICBzZWxmLl9hc3NlcnRfd3JpdGVfY29tbWFuZF9hbmRf
cmVhZF9saW5lKGV4cGVjdGVkX2NyYXNoPVRydWUpCiAKLSAgICBkZWYgdGVzdF9jcmFzaGVkX3By
b2Nlc3NfbmFtZShzZWxmKToKKyAgICBkZWYgdGVzdF9jcmFzaF9sb2coc2VsZik6CiAgICAgICAg
IHNlbGYuZHJpdmVyLl9wcm9jID0gTW9jaygpCiAKICAgICAgICAgIyBTaW11bGF0ZSBhIGNyYXNo
IGJ5IGhhdmluZyBzdGRvdXQgY2xvc2UgdW5leHBlY3RlZGx5LgpAQCAtMTAxLDcgKzEwMSw3IEBA
IGNsYXNzIENocm9taXVtRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAg
c2VsZi5kcml2ZXIudGVzdF90b191cmkgPSBsYW1iZGEgdGVzdDogJ21vY2t0ZXN0dXJpJwogICAg
ICAgICBkcml2ZXJfb3V0cHV0ID0gc2VsZi5kcml2ZXIucnVuX3Rlc3QoRHJpdmVySW5wdXQodGVz
dF9uYW1lPSdzb21lL3Rlc3QuaHRtbCcsIHRpbWVvdXQ9MSwgaW1hZ2VfaGFzaD1Ob25lLCBpc19y
ZWZ0ZXN0PUZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRyaXZlci5fcG9y
dC5kcml2ZXJfbmFtZSgpLCBkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vzc19uYW1lKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGRyaXZlcl9vdXRwdXQuY3Jhc2hfbG9nLCAnJykKIAogICAg
IGRlZiB0ZXN0X3N0b3Aoc2VsZik6CiAgICAgICAgIHNlbGYucGlkID0gTm9uZQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQppbmRleCBm
YTZlODFiMmU2M2FiOTNlMWZhMDc0MGU4OGM0MTU5ZTEyNzYwMWJhLi4zNTM0OGRlOGE3ZmE2MjM5
YzdmM2UzMzNjZTMyNTliYzRlMTc0ZmNiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQpAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBE
cml2ZXJPdXRwdXQob2JqZWN0KToKICAgICBzdHJpcF9wYXR0ZXJucy5hcHBlbmQoKHJlLmNvbXBp
bGUoJ3Njcm9sbEhlaWdodCBbMC05XSsnKSwgJ3Njcm9sbEhlaWdodCcpKQogCiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBpbWFnZV9oYXNoLCBhdWRpbywgY3Jhc2g9RmFsc2Us
Ci0gICAgICAgICAgICB0ZXN0X3RpbWU9MCwgdGltZW91dD1GYWxzZSwgZXJyb3I9JycsIGNyYXNo
ZWRfcHJvY2Vzc19uYW1lPU5vbmUpOgorICAgICAgICAgICAgdGVzdF90aW1lPTAsIHRpbWVvdXQ9
RmFsc2UsIGVycm9yPScnLCBjcmFzaGVkX3N1YnByb2Nlc3NfbmFtZT0nPz8nLCBjcmFzaF9sb2c9
Tm9uZSk6CiAgICAgICAgICMgRklYTUU6IEFyZ3MgY291bGQgYmUgcmVuYW1lZCB0byBiZXR0ZXIg
Y2xhcmlmeSB3aGF0IHRoZXkgZG8uCiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQKICAgICAgICAg
c2VsZi5pbWFnZSA9IGltYWdlICAjIE1heSBiZSBlbXB0eS1zdHJpbmcgaWYgdGhlIHRlc3QgY3Jh
c2hlcy4KQEAgLTcyLDcgKzcyLDggQEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9iamVjdCk6CiAgICAg
ICAgIHNlbGYuaW1hZ2VfZGlmZiA9IE5vbmUgICMgaW1hZ2VfZGlmZiBnZXRzIGZpbGxlZCBpbiBh
ZnRlciBjb25zdHJ1Y3Rpb24uCiAgICAgICAgIHNlbGYuYXVkaW8gPSBhdWRpbyAgIyBCaW5hcnkg
Zm9ybWF0IGlzIHBvcnQtZGVwZW5kZW50LgogICAgICAgICBzZWxmLmNyYXNoID0gY3Jhc2gKLSAg
ICAgICAgc2VsZi5jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IGNyYXNoZWRfcHJvY2Vzc19uYW1lCisg
ICAgICAgIHNlbGYuY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgPSBjcmFzaGVkX3N1YnByb2Nlc3Nf
bmFtZQorICAgICAgICBzZWxmLmNyYXNoX2xvZyA9IGNyYXNoX2xvZwogICAgICAgICBzZWxmLnRl
c3RfdGltZSA9IHRlc3RfdGltZQogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAg
ICAgIHNlbGYuZXJyb3IgPSBlcnJvciAgIyBzdGRlcnIgb3V0cHV0CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CmluZGV4IDVhYTk4MjZkMzA5NzA3
NzY1ZjJhY2UwNDk4OGE5ZGZjNjk3NTU4NmUuLjIwZDk0N2JiODQzY2M4MTE4MWU4ODlhOGQyYmFj
MThlZTdlMTIzMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvbWFjLnB5CkBAIC0yOCw3ICsyOCw5IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQg
cmUKK2ltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3Mg
aW1wb3J0IENyYXNoTG9ncwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5hcHBsZSBp
bXBvcnQgQXBwbGVQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmxlYWtkZXRl
Y3RvciBpbXBvcnQgTGVha0RldGVjdG9yCiAKQEAgLTk1LDEwICs5Nyw2IEBAIGNsYXNzIE1hY1Bv
cnQoQXBwbGVQb3J0KToKICAgICBkZWYgaXNfbGlvbihzZWxmKToKICAgICAgICAgcmV0dXJuIHNl
bGYuX3ZlcnNpb24gPT0gImxpb24iCiAKLSAgICAjIEJlbG9uZ3Mgb24gYSBQbGF0Zm9ybSBvYmpl
Y3QuCi0gICAgZGVmIGlzX2NyYXNoX3JlcG9ydGVyKHNlbGYsIHByb2Nlc3NfbmFtZSk6Ci0gICAg
ICAgIHJldHVybiByZS5zZWFyY2gocidSZXBvcnRDcmFzaCcsIHByb2Nlc3NfbmFtZSkKLQogICAg
IGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5pc19z
bm93bGVvcGFyZCgpOgogICAgICAgICAgICAgX2xvZy53YXJuKCJDYW5ub3QgcnVuIHRlc3RzIGlu
IHBhcmFsbGVsIG9uIFNub3cgTGVvcGFyZCBkdWUgdG8gcmRhcjovL3Byb2JsZW0vMTA2MjE1MjUu
IikKQEAgLTE1OCwzICsxNTYsMzUgQEAgY2xhc3MgTWFjUG9ydChBcHBsZVBvcnQpOgogCiAgICAg
ZGVmIHJlbGVhc2VfaHR0cF9sb2NrKHNlbGYpOgogICAgICAgICBwYXNzCisKKyAgICBkZWYgX3dh
aXRfZm9yX2NyYXNoX3JlcG9ydGVyKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBXaGVuIGRvIHdl
IGFjdHVhbGx5IG5lZWQgdG8gd2FpdD8gT24gU25vdyBMZW9wYXJkLAorICAgICAgICAjIGl0IGFw
cGVhcnMgdGhhdCBpbiB0aGUgbm9ybWFsIGNhc2Ugd2UgZGV0ZWN0IGNyYXNoZXMgYWZ0ZXIgYmxv
Y2tpbmcgaW4gYSBzZWxlY3QoKSwKKyAgICAgICAgIyBhbmQgdGhlIHNlbGVjdCgpIGJsb2NrcyB1
bnRpbCBSZXBvcnRDcmFzaCBpcyBkb25lLCBidXQgdW5kZXIgbG9hZCBpdCBjYW4gYmUgc2xvd2Vy
LgorICAgICAgICAjIEl0J3MgYWxzbyBwb3NzaWJsZSB0aGF0CisgICAgICAgICMgd2UnbGwgZGV0
ZWN0IGEgY3Jhc2ggd2hlbiB3cml0ZSgpaW5nIGFuZCBJJ20gbm90IHN1cmUgd2hhdCBSZXBvcnRD
cmFzaCBkb2VzCisgICAgICAgICMgdGhlcmUgKG5lZWQgdG8gdGVzdCEpLiBBbHNvIG5lZWQgdG8g
dGVzdCBvdGhlciB2ZXJzaW9ucyBvZiBNYWMgT1MuCisgICAgICAgICMgc2VsZi53YWl0X25ld2Vz
dChsYW1iZGEgcHJvY2Vzc19uYW1lOiByZS5zZWFyY2gocidSZXBvcnRDcmFzaCcsIHByb2Nlc3Nf
bmFtZSkpCisgICAgICAgIHBhc3MKKworICAgIGRlZiBfZ2V0X2NyYXNoX2xvZyhzZWxmLCBuYW1l
LCBwaWQsIHN0ZG91dCwgc3RkZXJyKToKKyAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG8gc2xvdy1z
cGluIGhlcmUgYW5kIHdhaXQsIHNpbmNlIGl0IGFwcGVhcnMgdGhlIHRpbWUKKyAgICAgICAgIyBS
ZXBvcnRDcmFzaCB0YWtlcyB0byBhY3R1YWxseSB3cml0ZSBhbmQgZmx1c2ggdGhlIGZpbGUgdmFy
aWVzIHdoZW4gdGhlcmUgYXJlCisgICAgICAgICMgbG90cyBvZiBzaW11bHRhbmVvdXMgY3Jhc2hl
cyBnb2luZyBvbi4KKyAgICAgICAgIyBfbG9nLmRlYnVnKCdsb29raW5nIGZvciBjcmFzaCBsb2cg
Zm9yICVzOiVkJyAlICAobmFtZSwgcGlkKSkKKyAgICAgICAgY3Jhc2hfbG9nID0gJycKKyAgICAg
ICAgY3Jhc2hfbG9ncyA9IENyYXNoTG9ncyhzZWxmLl9maWxlc3lzdGVtKQorICAgICAgICBzdGFy
dCA9IHRpbWUudGltZSgpCisgICAgICAgIG5vdyA9IHN0YXJ0CisgICAgICAgIENSQVNIX0xPR19X
QUlUX1RJTUVPVVRfU0VDUyA9IDUgKiBpbnQoc2VsZi5nZXRfb3B0aW9uKCdjaGlsZF9wcm9jZXNz
ZXMnKSkKKyAgICAgICAgd2hpbGUgbm90IGNyYXNoX2xvZyBhbmQgbm93IDwgc3RhcnQgKyBDUkFT
SF9MT0dfV0FJVF9USU1FT1VUX1NFQ1M6CisgICAgICAgICAgICBjcmFzaF9sb2cgPSBjcmFzaF9s
b2dzLmZpbmRfbmV3ZXN0X2xvZyhuYW1lLCBwaWQpCisgICAgICAgICAgICBpZiBub3QgY3Jhc2hf
bG9nIG9yIG5vdCBbbGluZSBmb3IgbGluZSBpbiBjcmFzaF9sb2cuc3BsaXRsaW5lcygpIGlmIG5v
dCBsaW5lLnN0YXJ0c3dpdGgoJ0VSUk9SJyldOgorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAo
MC4xKQorICAgICAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgICNpZiBub3cg
IT0gc3RhcnQ6CisgICAgICAgICMgICAgX2xvZy5kZWJ1Zygnd2FpdGVkICUuMWYgc2Vjb25kcyBm
b3IgY3Jhc2ggbG9nJyAlIChub3cgLSBzdGFydCwpKQorICAgICAgICBpZiBub3QgY3Jhc2hfbG9n
OgorICAgICAgICAgICAgY3Jhc2hfbG9nID0gJ25vIGNyYXNoIGxvZyBmb3VuZCBmb3IgJXM6JWQn
ICUgKG5hbWUsIHBpZCkKKyAgICAgICAgICAgIF9sb2cud2FybmluZyhjcmFzaF9sb2cpCisgICAg
ICAgIHJldHVybiBjcmFzaF9sb2cKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CmluZGV4IDZjNDhmZWY2NGIw
MTMwYTQ4OGMzZTgzNjUzNWM3NzZkYzRlYzRhNjYuLjY4OWZhN2YzMDAwZjk2NWMxM2RiMDFmNzJm
ZTIzZjhmYjE2YTAxYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQpAQCAtNzAsNyArNzAsNyBAQCBj
bGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICBzZWxmLl9wcm9jID0gTm9uZQogICAgICAgICBz
ZWxmLl9vdXRwdXQgPSBzdHIoKSAgIyBieXRlc2FycmF5KCkgb25jZSB3ZSByZXF1aXJlIFB5dGhv
biAyLjYKICAgICAgICAgc2VsZi5fZXJyb3IgPSBzdHIoKSAgIyBieXRlc2FycmF5KCkgb25jZSB3
ZSByZXF1aXJlIFB5dGhvbiAyLjYKLSAgICAgICAgc2VsZi5zZXRfY3Jhc2hlZChGYWxzZSkKKyAg
ICAgICAgc2VsZi5fY3Jhc2hlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYudGltZWRfb3V0ID0gRmFs
c2UKIAogICAgIGRlZiBwcm9jZXNzX25hbWUoc2VsZik6CkBAIC05NCwyMiArOTQsMTcgQEAgY2xh
c3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgZmwgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9H
RVRGTCkKICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsIHwgb3MuT19O
T05CTE9DSykKIAotICAgIGRlZiBoYW5kbGVfaW50ZXJydXB0KHNlbGYpOgorICAgIGRlZiBfaGFu
ZGxlX3Bvc3NpYmxlX2ludGVycnVwdChzZWxmKToKICAgICAgICAgIiIiVGhpcyByb3V0aW5lIGNo
ZWNrcyB0byBzZWUgaWYgdGhlIHByb2Nlc3MgY3Jhc2hlZCBvciBleGl0ZWQKICAgICAgICAgYmVj
YXVzZSBvZiBhIGtleWJvYXJkIGludGVycnVwdCBhbmQgcmFpc2VzIEtleWJvYXJkSW50ZXJydXB0
CiAgICAgICAgIGFjY29yZGluZ2x5LiIiIgotICAgICAgICBpZiBzZWxmLmNyYXNoZWQ6Ci0gICAg
ICAgICAgICAjIFRoaXMgaXMgaGV4IGNvZGUgMHhjMDAwMDAxZCwgd2hpY2ggaXMgdXNlZCBmb3Ig
YWJydXB0Ci0gICAgICAgICAgICAjIHRlcm1pbmF0aW9uLiBUaGlzIGhhcHBlbnMgaWYgd2UgaGl0
IGN0cmwrYyBmcm9tIHRoZSBwcm9tcHQKLSAgICAgICAgICAgICMgYW5kIHdlIGhhcHBlbiB0byBi
ZSB3YWl0aW5nIG9uIHRoZSBEdW1wUmVuZGVyVHJlZS4KLSAgICAgICAgICAgICMgc2RveW9uOiBO
b3Qgc3VyZSBmb3Igd2hpY2ggT1MgYW5kIGluIHdoYXQgY2lyY3Vtc3RhbmNlcyB0aGUKLSAgICAg
ICAgICAgICMgYWJvdmUgY29kZSBpcyB2YWxpZC4gV2hhdCB3b3JrcyBmb3IgbWUgdW5kZXIgTGlu
dXggdG8gZGV0ZWN0Ci0gICAgICAgICAgICAjIGN0cmwrYyBpcyBmb3IgdGhlIHN1YnByb2Nlc3Mg
cmV0dXJuY29kZSB0byBiZSBuZWdhdGl2ZQotICAgICAgICAgICAgIyBTSUdJTlQuIEFuZCB0aGF0
IGFncmVlcyB3aXRoIHRoZSBzdWJwcm9jZXNzIGRvY3VtZW50YXRpb24uCi0gICAgICAgICAgICBp
ZiAoLTEwNzM3NDE1MTAgPT0gc2VsZi5fcHJvYy5yZXR1cm5jb2RlIG9yCi0gICAgICAgICAgICAg
ICAgLSBzaWduYWwuU0lHSU5UID09IHNlbGYuX3Byb2MucmV0dXJuY29kZSk6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKLSAgICAgICAgICAgIHJldHVybgorICAgICAg
ICAjIEZJWE1FOiBMaW51eCBhbmQgTWFjIHNldCB0aGUgcmV0dXJuY29kZSB0byAtc2lnbmFsLlNJ
R0lOVCBpZiBhCisgICAgICAgICMgc3VicHJvY2VzcyBpcyBraWxsZWQgd2l0aCBhIGN0cmxeQy4g
IFByZXZpb3VzIGNvbW1lbnRzIGluIHRoaXMKKyAgICAgICAgIyByb3V0aW5lIHNhaWQgdGhhdCBz
dXBwb3NlZGx5IFdpbmRvd3MgcmV0dXJucyAweGMwMDAwMDFkLCBidXQgdGhhdCdzIG5vdCB3aGF0
CisgICAgICAgICMgLTEwNzM3NDE1MTAgZXZhbHVhdGVzIHRvLiBGaWd1cmUgb3V0IHdoYXQgdGhl
IHJpZ2h0IHZhbHVlIGlzCisgICAgICAgICMgZm9yIHdpbjMyIGFuZCBjeWd3aW4gaGVyZSAuLi4K
KyAgICAgICAgaWYgc2VsZi5fcHJvYy5yZXR1cm5jb2RlIGluICgtMTA3Mzc0MTUxMCwgLXNpZ25h
bC5TSUdJTlQpOgorICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKIAogICAgIGRl
ZiBwb2xsKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0byBzZWUgaWYgdGhlIHVuZGVybHlpbmcg
cHJvY2VzcyBpcyBydW5uaW5nOyByZXR1cm5zIE5vbmUKQEAgLTEyNiw5ICsxMjEsMTAgQEAgY2xh
c3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fcHJvYy5z
dGRpbi53cml0ZShieXRlcykKICAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6CisgICAgICAgICAg
ICBwaWQgPSBzZWxmLl9wcm9jLnBpZAogICAgICAgICAgICAgc2VsZi5zdG9wKCkKICAgICAgICAg
ICAgICMgc3RvcCgpIGNhbGxzIF9yZXNldCgpLCBzbyB3ZSBoYXZlIHRvIHNldCBjcmFzaGVkIHRv
IFRydWUgYWZ0ZXIgY2FsbGluZyBzdG9wKCkuCi0gICAgICAgICAgICBzZWxmLnNldF9jcmFzaGVk
KFRydWUpCisgICAgICAgICAgICBzZWxmLl9jcmFzaGVkID0gVHJ1ZQogCiAgICAgZGVmIF9wb3Bf
c3Rkb3V0X2xpbmVfaWZfcmVhZHkoc2VsZik6CiAgICAgICAgIGluZGV4X2FmdGVyX25ld2xpbmUg
PSBzZWxmLl9vdXRwdXQuZmluZCgnXG4nKSArIDEKQEAgLTE3OCwxMSArMTc0LDYgQEAgY2xhc3Mg
U2VydmVyUHJvY2VzczoKIAogICAgICAgICByZXR1cm4gc2VsZi5fcmVhZChkZWFkbGluZSwgcmV0
cmlldmVfYnl0ZXNfZnJvbV9zdGRvdXRfYnVmZmVyKQogCi0gICAgZGVmIF9jaGVja19mb3JfY3Jh
c2goc2VsZiwgd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI9VHJ1ZSk6Ci0gICAgICAgIGlmIHNlbGYu
cG9sbCgpICE9IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNldF9jcmFzaGVkKFRydWUsIHdhaXRf
Zm9yX2NyYXNoX3JlcG9ydGVyKQotICAgICAgICAgICAgc2VsZi5oYW5kbGVfaW50ZXJydXB0KCkK
LQogICAgIGRlZiBfbG9nKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICAjIFRoaXMgaXMgYSBiaXQg
b2YgYSBoYWNrLCBidXQgd2UgZmlyc3QgbG9nIGEgYmxhbmsgbGluZSB0byBhdm9pZAogICAgICAg
ICAjIG1lc3NpbmcgdXAgdGhlIG1hc3RlciBwcm9jZXNzJ3Mgb3V0cHV0LgpAQCAtMjA2LDEwICsx
OTcsNiBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICAgICAgc2VsZi5fbG9nKCdVbmFi
bGUgdG8gc2FtcGxlIHByb2Nlc3MuJykKIAogICAgIGRlZiBfaGFuZGxlX3RpbWVvdXQoc2VsZik6
Ci0gICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS53YWl0X25ld2VzdChzZWxmLl9wb3J0LmlzX2NyYXNo
X3JlcG9ydGVyKQotICAgICAgICBzZWxmLl9jaGVja19mb3JfY3Jhc2god2FpdF9mb3JfY3Jhc2hf
cmVwb3J0ZXI9RmFsc2UpCi0gICAgICAgIGlmIHNlbGYuY3Jhc2hlZDoKLSAgICAgICAgICAgIHJl
dHVybgogICAgICAgICBzZWxmLnRpbWVkX291dCA9IFRydWUKICAgICAgICAgc2VsZi5fc2FtcGxl
KCkKIApAQCAtMjM4LDIwICsyMjUsMjIgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAg
ICAgICMgRklYTUU6IFdoeSBkbyB3ZSBpZ25vcmUgYWxsIElPRXJyb3JzIGhlcmU/CiAgICAgICAg
ICAgICBwYXNzCiAKLSAgICBkZWYgX2NoZWNrX2Zvcl9hYm9ydChzZWxmLCBkZWFkbGluZSk6Ci0g
ICAgICAgIHNlbGYuX2NoZWNrX2Zvcl9jcmFzaCgpCi0KLSAgICAgICAgaWYgdGltZS50aW1lKCkg
PiBkZWFkbGluZToKLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV90aW1lb3V0KCkKLQotICAgICAg
ICByZXR1cm4gc2VsZi5jcmFzaGVkIG9yIHNlbGYudGltZWRfb3V0CisgICAgZGVmIGhhc19jcmFz
aGVkKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fY3Jhc2hlZCBhbmQgc2VsZi5wb2xsKCk6
CisgICAgICAgICAgICBzZWxmLl9jcmFzaGVkID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5faGFu
ZGxlX3Bvc3NpYmxlX2ludGVycnVwdCgpCisgICAgICAgIHJldHVybiBzZWxmLl9jcmFzaGVkCiAK
ICAgICAjIFRoaXMgcmVhZCBmdW5jdGlvbiBpcyBhIGJpdCBvZGRseS1kZXNpZ25lZCwgYXMgaXQg
cG9sbHMgYm90aCBzdGRvdXQgYW5kIHN0ZGVyciwgeWV0CiAgICAgIyBvbmx5IHJlYWRzL3JldHVy
bnMgZnJvbSBvbmUgb2YgdGhlbSAoYnVmZmVyaW5nIGJvdGggaW4gbG9jYWwgc2VsZi5fb3V0cHV0
L3NlbGYuX2Vycm9yKS4KICAgICAjIEl0IG1pZ2h0IGJlIGNsZWFuZXIgdG8gcGFzcyBpbiB0aGUg
ZmlsZSBkZXNjcmlwdG9yIHRvIHBvbGwgaW5zdGVhZC4KICAgICBkZWYgX3JlYWQoc2VsZiwgZGVh
ZGxpbmUsIGZldGNoX2J5dGVzX2Zyb21fYnVmZmVyc19jYWxsYmFjayk6CiAgICAgICAgIHdoaWxl
IFRydWU6Ci0gICAgICAgICAgICBpZiBzZWxmLl9jaGVja19mb3JfYWJvcnQoZGVhZGxpbmUpOgor
ICAgICAgICAgICAgaWYgc2VsZi5oYXNfY3Jhc2hlZCgpOgorICAgICAgICAgICAgICAgIHJldHVy
biBOb25lCisKKyAgICAgICAgICAgIGlmIHRpbWUudGltZSgpID4gZGVhZGxpbmU6CisgICAgICAg
ICAgICAgICAgc2VsZi5faGFuZGxlX3RpbWVvdXQoKQogICAgICAgICAgICAgICAgIHJldHVybiBO
b25lCiAKICAgICAgICAgICAgIGJ5dGVzID0gZmV0Y2hfYnl0ZXNfZnJvbV9idWZmZXJzX2NhbGxi
YWNrKCkKQEAgLTI5Miw5ICsyODEsMyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICAg
ICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCiAgICAg
ICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdraWxsZWQnKQogICAgICAgICBzZWxmLl9yZXNldCgp
Ci0KLSAgICBkZWYgc2V0X2NyYXNoZWQoc2VsZiwgY3Jhc2hlZCwgd2FpdF9mb3JfY3Jhc2hfcmVw
b3J0ZXI9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuY3Jhc2hlZCA9IGNyYXNoZWQKLSAgICAgICAgaWYg
bm90IHNlbGYuY3Jhc2hlZCBvciBub3Qgd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI6Ci0gICAgICAg
ICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5fZXhlY3V0aXZlLndhaXRfbmV3ZXN0KHNlbGYuX3Bv
cnQuaXNfY3Jhc2hfcmVwb3J0ZXIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5w
eQppbmRleCBjYWU2YjAyYzU5NDM2MWZhNDY4NDA0MDI0ZTI5NjhjMDFlOWQ1MDk0Li5mMmJjOTk2
ODY1MTRlM2M0NjEzMzkxYTk2MTM5ZjE3ODRiZTAwYjY5IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3By
b2Nlc3NfdW5pdHRlc3QucHkKQEAgLTUwLDkgKzUwLDYgQEAgY2xhc3MgVHJpdmlhbE1vY2tQb3J0
KG9iamVjdCk6CiAgICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhzZWxmLCBwcm9jZXNzX25hbWUsIHBy
b2Nlc3NfcGlkKToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIGlzX2NyYXNoX3JlcG9ydGVyKHNl
bGYsIHByb2Nlc3NfbmFtZSk6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCiAKIGNsYXNzIE1vY2tG
aWxlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcl9wcm9jZXNzKToKQEAg
LTkxLDcgKzg4LDcgQEAgY2xhc3MgVGVzdFNlcnZlclByb2Nlc3ModW5pdHRlc3QuVGVzdENhc2Up
OgogICAgIGRlZiB0ZXN0X2Jyb2tlbl9waXBlKHNlbGYpOgogICAgICAgICBzZXJ2ZXJfcHJvY2Vz
cyA9IEZha2VTZXJ2ZXJQcm9jZXNzKHBvcnRfb2JqPVRyaXZpYWxNb2NrUG9ydCgpLCBuYW1lPSJ0
ZXN0IiwgY21kPVsidGVzdCJdKQogICAgICAgICBzZXJ2ZXJfcHJvY2Vzcy53cml0ZSgic2hvdWxk
IGJyZWFrIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlcl9wcm9jZXNzLmNyYXNoZWQp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXJfcHJvY2Vzcy5oYXNfY3Jhc2hlZCgpKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZXJ2ZXJfcHJvY2Vzcy5fcHJvYywgTm9uZSkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VydmVyX3Byb2Nlc3MuYnJva2VuX3BpcGVzLCBbc2Vy
dmVyX3Byb2Nlc3Muc3RkaW5dKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggMjE2MzcyMzA1MmJkMDQxYmNjM2NhODcxY2Q4YmEz
OGE3NTFiYTQ4YS4uYzdkYjliMTY2MjM1ZDY4NWUwZGIzN2ZlNzZkMTUwNjk4YTUyNzVhNSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpA
QCAtMzUsNiArMzUsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBQ
b3J0LCBEcml2ZXIsIERyaXZlck91dHB1dAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dC5iYXNlIGltcG9ydCBWaXJ0dWFsVGVzdFN1aXRlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVT
eXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxvZ3MgaW1wb3J0IENyYXNo
TG9ncwogCiAKICMgVGhpcyBzZXRzIGJhc2ljIGV4cGVjdGF0aW9ucyBmb3IgYSB0ZXN0LiBFYWNo
IGluZGl2aWR1YWwgZXhwZWN0YXRpb24KQEAgLTUxOCwxNCArNTE5LDIwIEBAIGNsYXNzIFRlc3RE
cml2ZXIoRHJpdmVyKToKIAogICAgICAgICBpZiB0ZXN0LmFjdHVhbF9hdWRpbzoKICAgICAgICAg
ICAgIGF1ZGlvID0gYmFzZTY0LmI2NGRlY29kZSh0ZXN0LmFjdHVhbF9hdWRpbykKLSAgICAgICAg
Y3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBOb25lCisgICAgICAgIGNyYXNoZWRfc3VicHJvY2Vzc19u
YW1lID0gTm9uZQogICAgICAgICBpZiB0ZXN0LmNyYXNoOgotICAgICAgICAgICAgY3Jhc2hlZF9w
cm9jZXNzX25hbWUgPSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkKKyAgICAgICAgICAgIGNyYXNo
ZWRfc3VicHJvY2Vzc19uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFtZSgpCiAgICAgICAgIGVs
aWYgdGVzdC53ZWJfcHJvY2Vzc19jcmFzaDoKLSAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19u
YW1lID0gJ1dlYlByb2Nlc3MnCisgICAgICAgICAgICBjcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9
ICdXZWJQcm9jZXNzJworCisgICAgICAgIGNyYXNoX2xvZyA9ICcnCisgICAgICAgIGlmIGNyYXNo
ZWRfc3VicHJvY2Vzc19uYW1lOgorICAgICAgICAgICAgY3Jhc2hfbG9ncyA9IENyYXNoTG9ncyhz
ZWxmLl9wb3J0Ll9maWxlc3lzdGVtKQorICAgICAgICAgICAgY3Jhc2hfbG9nID0gY3Jhc2hfbG9n
cy5maW5kX25ld2VzdF9sb2coY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUsIE5vbmUpIG9yICcnCisK
ICAgICAgICAgcmV0dXJuIERyaXZlck91dHB1dChhY3R1YWxfdGV4dCwgdGVzdC5hY3R1YWxfaW1h
Z2UsCiAgICAgICAgICAgICB0ZXN0LmFjdHVhbF9jaGVja3N1bSwgYXVkaW8sIGNyYXNoPXRlc3Qu
Y3Jhc2ggb3IgdGVzdC53ZWJfcHJvY2Vzc19jcmFzaCwKLSAgICAgICAgICAgIGNyYXNoZWRfcHJv
Y2Vzc19uYW1lPWNyYXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAgICAgICAgY3Jhc2hfbG9nPWNy
YXNoX2xvZywKICAgICAgICAgICAgIHRlc3RfdGltZT10aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUs
IHRpbWVvdXQ9dGVzdC50aW1lb3V0LCBlcnJvcj10ZXN0LmVycm9yKQogCiAgICAgZGVmIHN0YXJ0
KHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggNmU0YTE2YmRhNDcw
ZjlkZGUyNzUyMTBiYmZlMjk0NTRmY2Y2YWM1OC4uYTNlMTYyOWE1MDJiZjU4NzJkMTFkZWIxNmFm
N2NmMDEzMTMzMDRjOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHkKQEAgLTE5NCw3ICsxOTQsNyBAQCBjbGFzcyBXZWJLaXRQb3J0
KFBvcnQpOgogCiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBvdXRwdXQgPSBzcC5y
ZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKQotICAgICAgICAgICAgaWYgc3AudGltZWRfb3V0IG9y
IHNwLmNyYXNoZWQgb3Igbm90IG91dHB1dDoKKyAgICAgICAgICAgIGlmIHNwLnRpbWVkX291dCBv
ciBzcC5oYXNfY3Jhc2hlZCgpIG9yIG5vdCBvdXRwdXQ6CiAgICAgICAgICAgICAgICAgYnJlYWsK
IAogICAgICAgICAgICAgaWYgb3V0cHV0LnN0YXJ0c3dpdGgoJ2RpZmYnKTogICMgVGhpcyBpcyB0
aGUgbGFzdCBsaW5lIEltYWdlRGlmZiBwcmludHMuCkBAIC0yMDksNyArMjA5LDcgQEAgY2xhc3Mg
V2ViS2l0UG9ydChQb3J0KToKIAogICAgICAgICBpZiBzcC50aW1lZF9vdXQ6CiAgICAgICAgICAg
ICBfbG9nLmVycm9yKCJJbWFnZURpZmYgdGltZWQgb3V0IikKLSAgICAgICAgaWYgc3AuY3Jhc2hl
ZDoKKyAgICAgICAgaWYgc3AuaGFzX2NyYXNoZWQoKToKICAgICAgICAgICAgIF9sb2cuZXJyb3Io
IkltYWdlRGlmZiBjcmFzaGVkIikKICAgICAgICAgIyBGSVhNRTogVGhlcmUgaXMgbm8gbmVlZCB0
byBzaHV0IGRvd24gdGhlIEltYWdlRGlmZiBzZXJ2ZXIgYWZ0ZXIgZXZlcnkgZGlmZi4KICAgICAg
ICAgc3Auc3RvcCgpCkBAIC00MjYsNiArNDI2LDE4IEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6
CiAgICAgICAgIGNvbmZpZ19maWxlX25hbWUgPSBzZWxmLl9hcGFjaGVfY29uZmlnX2ZpbGVfbmFt
ZV9mb3JfcGxhdGZvcm0oc3lzLnBsYXRmb3JtKQogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywgY29uZmln
X2ZpbGVfbmFtZSkKIAorICAgIGRlZiBfd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXIoc2VsZik6Cisg
ICAgICAgIHBhc3MKKworICAgIGRlZiBfZ2V0X2NyYXNoX2xvZyhzZWxmLCBuYW1lLCBwaWQsIHN0
ZG91dCwgc3RkZXJyKToKKyAgICAgICAgbG9nID0gJ2NyYXNoIGxvZyBmb3IgJXMgKHBpZCAlZClc
biVzXG4lc1xuJyAlICgKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBwaWQsCisgICAg
ICAgICAgICAnXG4nLmpvaW4oJ1NURE9VVDogJyArIGxpbmUgZm9yIGxpbmUgaW4gc3Rkb3V0LnNw
bGl0bGluZXMoKSkgb3IgJzxlbXB0eT4nLAorICAgICAgICAgICAgJ1xuJy5qb2luKCdTVERFUlI6
ICcgKyBsaW5lIGZvciBsaW5lIGluIHN0ZGVyci5zcGxpdGxpbmVzKCkpIG9yICc8ZW1wdHk+JykK
KyAgICAgICAgcmV0dXJuIGxvZworCisKIAogY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAg
ICAgIiIiV2ViS2l0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEdW1wUmVuZGVyVHJlZS9XZWJLaXRU
ZXN0UnVubmVyIGludGVyZmFjZS4iIiIKQEAgLTQ4OSwzMSArNTAxLDEyIEBAIGNsYXNzIFdlYktp
dERyaXZlcihEcml2ZXIpOgogICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToKICAgICAgICAgaWYg
c2VsZi5fc2VydmVyX3Byb2Nlc3MgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQot
ICAgICAgICByZXR1cm4gc2VsZi5fc2VydmVyX3Byb2Nlc3MucG9sbCgpIGlzIG5vdCBOb25lCi0K
LSAgICBkZWYgX2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2goc2VsZiwgZXJyb3JfbGluZSk6Ci0gICAg
ICAgIGlmIGVycm9yX2xpbmUgPT0gIiNDUkFTSEVEXG4iOgotICAgICAgICAgICAgIyBUaGlzIGlz
IHVzZWQgb24gV2luZG93cyB0byByZXBvcnQgdGhhdCB0aGUgcHJvY2VzcyBoYXMgY3Jhc2hlZAot
ICAgICAgICAgICAgIyBTZWUgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjU1Mzcu
Ci0gICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zZXRfY3Jhc2hlZChUcnVlKQotICAg
ICAgICBlbGlmIGVycm9yX2xpbmUgPT0gIiNDUkFTSEVEIC0gV2ViUHJvY2Vzc1xuIjoKLSAgICAg
ICAgICAgICMgV2ViS2l0VGVzdFJ1bm5lciB1c2VzIHRoaXMgdG8gcmVwb3J0IHRoYXQgdGhlIFdl
YlByb2Nlc3Mgc3VicHJvY2VzcyBjcmFzaGVkLgotICAgICAgICAgICAgc2VsZi5fc3VicHJvY2Vz
c19jcmFzaGVkKCJXZWJQcm9jZXNzIikKLSAgICAgICAgcmV0dXJuIHNlbGYuX2RldGVjdGVkX2Ny
YXNoKCkKLQotICAgIGRlZiBfZGV0ZWN0ZWRfY3Jhc2goc2VsZik6Ci0gICAgICAgICMgV2UgY2Fu
J3QganVzdCBjaGVjayBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkIGJlY2F1c2UgV2ViS2l0
VGVzdFJ1bm5lcgotICAgICAgICAjIGNhbiByZXBvcnQgc3VicHJvY2VzcyBjcmFzaGVzIGF0IGFu
eSB0aW1lIGJ5IHByaW50aW5nCi0gICAgICAgICMgIiNDUkFTSEVEIC0gV2ViUHJvY2VzcyIsIHdl
IHdhbnQgdG8gY291bnQgdGhvc2UgYXMgY3Jhc2hlcyBhcyB3ZWxsLgotICAgICAgICByZXR1cm4g
c2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZCBvciBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3Nf
bmFtZQotCi0gICAgZGVmIF9zdWJwcm9jZXNzX2NyYXNoZWQoc2VsZiwgc3VicHJvY2Vzc19uYW1l
KToKLSAgICAgICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgPSBzdWJwcm9jZXNzX25h
bWUKLQotICAgIGRlZiBfY3Jhc2hlZF9wcm9jZXNzX25hbWUoc2VsZik6Ci0gICAgICAgIGlmIG5v
dCBzZWxmLl9kZXRlY3RlZF9jcmFzaCgpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lIG9yIHNlbGYuX3NlcnZlcl9w
cm9jZXNzLnByb2Nlc3NfbmFtZSgpCisgICAgICAgIGlmIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vz
c19uYW1lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5fc2VydmVy
X3Byb2Nlc3MuaGFzX2NyYXNoZWQoKToKKyAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJv
Y2Vzc19uYW1lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MubmFtZSgpCisgICAgICAgICAgICBzZWxm
Ll9jcmFzaGVkX3N1YnByb2Nlc3NfcGlkID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucGlkKCkKKyAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgX2NvbW1hbmRfZnJvbV9kcml2ZXJfaW5w
dXQoc2VsZiwgZHJpdmVyX2lucHV0KToKICAgICAgICAgaWYgc2VsZi5pc19odHRwX3Rlc3QoZHJp
dmVyX2lucHV0LnRlc3RfbmFtZSk6CkBAIC01NTMsNiArNTQ2LDggQEAgY2xhc3MgV2ViS2l0RHJp
dmVyKERyaXZlcik6CiAgICAgICAgIGRlYWRsaW5lID0gdGltZS50aW1lKCkgKyBpbnQoZHJpdmVy
X2lucHV0LnRpbWVvdXQpIC8gMTAwMC4wCiAKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mu
d3JpdGUoY29tbWFuZCkKKyAgICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MuaGFzX2NyYXNo
ZWQoKToKKyAgICAgICAgICAgIHNlbGYuX3BvcnQuX3dhaXRfZm9yX2NyYXNoX3JlcG9ydGVyKCkK
ICAgICAgICAgdGV4dCwgYXVkaW8gPSBzZWxmLl9yZWFkX2ZpcnN0X2Jsb2NrKGRlYWRsaW5lKSAg
IyBGaXJzdCBibG9jayBpcyBlaXRoZXIgdGV4dCBvciBhdWRpbwogICAgICAgICBpbWFnZSwgYWN0
dWFsX2ltYWdlX2hhc2ggPSBzZWxmLl9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKGRlYWRsaW5l
KSAgIyBUaGUgc2Vjb25kIChvcHRpb25hbCkgYmxvY2sgaXMgaW1hZ2UgZGF0YS4KIApAQCAtNTYy
LDEwICs1NTcsMTUgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAgICMgRklY
TUU6IFdlIG1heSBuZWVkIHRvIGFsc28gcmVhZCBzdGRlcnIgdW50aWwgdGhlIHByb2Nlc3MgZGll
cz8KICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gc2VsZi5fc2VydmVyX3Byb2Nlc3Mu
cG9wX2FsbF9idWZmZXJlZF9zdGRlcnIoKQogCisgICAgICAgIGNyYXNoX2xvZyA9ICcnCisgICAg
ICAgIGlmIHNlbGYuaGFzX2NyYXNoZWQoKToKKyAgICAgICAgICAgIGNyYXNoX2xvZyA9IHNlbGYu
X3BvcnQuX2dldF9jcmFzaF9sb2coc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUsIHNlbGYu
X2NyYXNoZWRfc3VicHJvY2Vzc19waWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRleHQsIHNlbGYuZXJyb3JfZnJvbV90ZXN0KQorCiAgICAgICAg
IHJldHVybiBEcml2ZXJPdXRwdXQodGV4dCwgaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoLCBhdWRp
bywKLSAgICAgICAgICAgIGNyYXNoPXNlbGYuX2RldGVjdGVkX2NyYXNoKCksIHRlc3RfdGltZT10
aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCisgICAgICAgICAgICBjcmFzaD1zZWxmLmhhc19jcmFz
aGVkKCksIHRlc3RfdGltZT10aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUsCiAgICAgICAgICAgICB0
aW1lb3V0PXNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCwgZXJyb3I9c2VsZi5lcnJvcl9m
cm9tX3Rlc3QsCi0gICAgICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1zZWxmLl9jcmFzaGVk
X3Byb2Nlc3NfbmFtZSgpKQorICAgICAgICAgICAgY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWU9c2Vs
Zi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUsIGNyYXNoX2xvZz1jcmFzaF9sb2cpCiAKICAgICBk
ZWYgX3JlYWRfaGVhZGVyKHNlbGYsIGJsb2NrLCBsaW5lLCBoZWFkZXJfdGV4dCwgaGVhZGVyX2F0
dHIsIGhlYWRlcl9maWx0ZXI9Tm9uZSk6CiAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChoZWFk
ZXJfdGV4dCkgYW5kIGdldGF0dHIoYmxvY2ssIGhlYWRlcl9hdHRyKSBpcyBOb25lOgpAQCAtNjA4
LDcgKzYwOCw3IEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgICBvdXRfbGluZSwgZXJyX2xpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJv
Y2Vzcy5yZWFkX2VpdGhlcl9zdGRvdXRfb3Jfc3RkZXJyX2xpbmUoZGVhZGxpbmUpCiAKLSAgICAg
ICAgICAgIGlmIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCBvciBzZWxmLl9kZXRlY3Rl
ZF9jcmFzaCgpOgorICAgICAgICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0
IG9yIHNlbGYuaGFzX2NyYXNoZWQoKToKICAgICAgICAgICAgICAgICBicmVhawogCiAgICAgICAg
ICAgICBpZiBvdXRfbGluZToKQEAgLTYyOSw4ICs2MjksMTcgQEAgY2xhc3MgV2ViS2l0RHJpdmVy
KERyaXZlcik6CiAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBzZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSwgYmxvY2suX2NvbnRlbnRfbGVuZ3RoKQog
CiAgICAgICAgICAgICBpZiBlcnJfbGluZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9jaGVj
a19mb3JfZHJpdmVyX2NyYXNoKGVycl9saW5lKToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICAgICAgICBpZiBlcnJfbGluZSA9PSAiI0NSQVNIRURcbiI6CisgICAgICAgICAg
ICAgICAgICAgICMgVGhpcyBpcyB1c2VkIG9uIFdpbmRvd3MgdG8gcmVwb3J0IHRoYXQgdGhlIHBy
b2Nlc3MgaGFzIGNyYXNoZWQKKyAgICAgICAgICAgICAgICAgICAgIyBTZWUgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjU1MzcuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Ny
YXNoZWRfc3VicHJvY2Vzc19uYW1lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MubmFtZSgpCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19waWQgPSBzZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy5waWQoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0Ll93YWl0X2Zv
cl9jcmFzaF9yZXBvcnRlcigpCisgICAgICAgICAgICAgICAgZWxpZiBlcnJfbGluZS5zdGFydHN3
aXRoKCIjQ1JBU0hFRCAtIFdlYlByb2Nlc3MiKToKKyAgICAgICAgICAgICAgICAgICAgIyBXZWJL
aXRUZXN0UnVubmVyIHVzZXMgdGhpcyB0byByZXBvcnQgdGhhdCB0aGUgV2ViUHJvY2VzcyBzdWJw
cm9jZXNzIGNyYXNoZWQuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJv
Y2Vzc19uYW1lID0gJ1dlYlByb2Nlc3MnCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyYXNo
ZWRfc3VicHJvY2Vzc19waWQgPSBOb25lICAjIEZJWE1FIC0gZ2V0IHRoZSBwaWQgc28gd2UgY2Fu
IGZpbmQgdGhlIHJpZ2h0IGxvZy4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5fd2Fp
dF9mb3JfY3Jhc2hfcmVwb3J0ZXIoKQogICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90
ZXN0ICs9IGVycl9saW5lCiAKICAgICAgICAgYmxvY2suZGVjb2RlX2NvbnRlbnQoKQpAQCAtNjQ1
LDcgKzY1NCw2IEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICAgICAgc2Vs
Zi5fc2VydmVyX3Byb2Nlc3Muc3RvcCgpCiAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vz
cyA9IE5vbmUKIAotCiBjbGFzcyBDb250ZW50QmxvY2sob2JqZWN0KToKICAgICBkZWYgX19pbml0
X18oc2VsZik6CiAgICAgICAgIHNlbGYuY29udGVudF90eXBlID0gTm9uZQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0
dGVzdC5weQppbmRleCA2ZGM4NDU0NDEzNzFiNmRlNzhhNGFjZTcwNzBjODJhZGNlOWY5ODRkLi43
OTNhNGZkYzVmMTY5ZTg3NmY0YzkxODJhZTkxYmMxNTU1NmY2OTQ0IDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0
dGVzdC5weQpAQCAtMjQwLDggKzI0MCwxMSBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rl
c3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiBjbGFzcyBNb2NrU2VydmVyUHJvY2VzcyhvYmplY3QpOgog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lcz1Ob25lKToKICAgICAgICAgc2VsZi50aW1lZF9v
dXQgPSBGYWxzZQotICAgICAgICBzZWxmLmNyYXNoZWQgPSBGYWxzZQogICAgICAgICBzZWxmLmxp
bmVzID0gbGluZXMgb3IgW10KKyAgICAgICAgc2VsZi5jcmFzaGVkID0gRmFsc2UKKworICAgIGRl
ZiBoYXNfY3Jhc2hlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY3Jhc2hlZAogCiAgICAg
ZGVmIHJlYWRfc3Rkb3V0X2xpbmUoc2VsZiwgZGVhZGxpbmUpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5saW5lcy5wb3AoMCkgKyAiXG4iCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132438</attachid>
            <date>2012-03-16 20:02:56 -0700</date>
            <delta_ts>2012-03-19 16:36:36 -0700</delta_ts>
            <desc>Roll-up patch</desc>
            <filename>bug-71380-20120316200252.patch</filename>
            <type>text/plain</type>
            <size>50248</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDk1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjA4ODJlMzJhMTM0NGZkYzZjZmM5YjEyMmQyNDJiOTgy
YzQ3YzlhMy4uMmE0ODM4YjMzMTA3Njk5NmQzMDEyN2JjNjQ1MjkwNzY1ZDc3YzI2MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEx
NSBAQAorMjAxMi0wMy0xNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBOUldUIGluY29ycmVjdGx5IGFzc29jaWF0ZXMgY3Jhc2ggbG9ncyB3aXRoIHRlc3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM4MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2ljIGlk
ZWFzIGluIHRoaXMgcGF0Y2g6CisgICAgICAgIDEpIE1vZGlmeSBXZWJLaXRUZXN0UnVubmVyIG9u
IHRoZSBtYWMgdG8gbG9nIHRoZSBQSUQgb2YgdGhlCisgICAgICAgICAgIFdlYlByb2Nlc3MgdGhh
dCBjcmFzaGVkLgorICAgICAgICAyKSBBZGQgYSBuZXcgX2dldF9jcmFzaF9sb2coKSBvdmVycmlk
YWJsZSBtZXRob2Qgb24gdGhlIFBvcnQKKyAgICAgICAgICAgb2JqZWN0IHRvIGN1c3RvbWl6ZSBo
b3cgd2UgZmV0Y2ggY3Jhc2ggbG9ncyBwZXIgcG9ydC4KKyAgICAgICAgICAgTWFjIHdpbGwgbm93
IHNsb3ctc3BpbiB3aXRoIGEgdGltZW91dCB3YWl0aW5nIGZvciB0aGUgY3Jhc2ggbG9nLCByYXRo
ZXIKKyAgICAgICAgICAgdGhhbiB3YWl0aW5nIGZvciB0aGUgUmVwb3J0Q3Jhc2ggcHJvY2VzcyB0
byBleGl0IChpdCBhcHBlYXJzCisgICAgICAgICAgIHRoYXQgdGhlIG1hYyB3aWxsIG1hbmFnZSBt
dWx0aXBsZSBjcmFzaGVzIHdpdGggYSBzaW5nbGUKKyAgICAgICAgICAgUmVwb3J0Q3Jhc2ggcHJv
Y2VzcywgdGhlIHByb2Nlc3Mgd2FpdHMgYXJvdW5kIGxvbmdlciB0aGFuCisgICAgICAgICAgIG5l
Y2Vzc2FyeSwgcHJlc3VtYWJseSB0byBhdm9pZCB0aHJhc2hpbmcgaWYgcHJvY2Vzc2VzIGFyZQor
ICAgICAgICAgICByZXBlYXRlZGx5IGNyYXNoaW5nKS4KKyAgICAgICAgMykgU2VydmVyUHJvY2Vz
cyBubyBsb25nZXIgaGFzIGFueXRoaW5nIHRvIGRvIHdpdGggY3Jhc2gKKyAgICAgICAgICAgcmVw
b3J0aW5nLgorICAgICAgICA0KSBTaW1wbGlmeSB0aGUgY29kZSB0aGF0IGFjdHVhbGx5IGZldGNo
ZXMgdGhlIGNyYXNoIGxvZyBpbiBjcmFzaGxvZ3MucHkuCisgICAgICAgICAgIFdlIGhhZCBzb21l
IG9wdGltaXphdGlvbnMgdGhhdCBhdHRlbXB0ZWQgdG8gYmUgc21hcnQgYW5kIG9ubHkKKyAgICAg
ICAgICAgcmVhZCB0aGUgZmlyc3QgbGluZSBvZiBlYWNoIGxvZyBmaWxlIHdlIGZvdW5kLCBidXQg
dGhvc2UKKyAgICAgICAgICAgb3B0aW1pemF0aW9ucyB3ZXJlIGFjdHVhbGx5IGJ1Z2d5IGFuZCBJ
IGRvdWJ0IGl0IHNhdmVkIHVzIGFueQorICAgICAgICAgICB0aW1lIChhbmQgSSdtIG5vdCBzdXJl
IHdlIHJlYWxseSBldmVuIGNhcmUgZ2l2ZW4gaG93IHNsb3cKKyAgICAgICAgICAgY3Jhc2ggcmVw
b3J0aW5nIGlzKS4KKyAgICAgICAgNSkgRHJpdmVyT3V0cHV0IHNob3VsZCBjb250YWluIHRoZSBj
cmFzaCBsb2cgYW5kIG90aGVyIGluZm8sCisgICAgICAgICAgIHdoaWNoIGlzIGNyZWF0ZWQgaW4g
YSBwb3J0LXNwZWNpZmljIG1hbm5lciBidXQgY2FuIHRoZW4gYmUKKyAgICAgICAgICAgdHJlYXRl
ZCBnZW5lcmljYWxseS4KKyAgICAgICAgNikgTW9kaWZ5IHRoZSBUZXN0RmFpbHVyZSBvYmplY3Rz
IHRvIGNvbnRhaW4gaW5zdGFuY2UgZGF0YSAtCisgICAgICAgICAgIGxvbmcgb3ZlcmR1ZSEgVGhp
cyBhbGxvd3MgdXMgdG8ga25vdyB0aGUgbmFtZSBhbmQgcGlkIG9mIGNyYXNoLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weTogcG9pbnQgIzQK
KyAgICAgICAgKENyYXNoTG9ncy5maW5kX25ld2VzdF9sb2cpOgorICAgICAgICAoQ3Jhc2hMb2dz
Ll9maW5kX25ld2VzdF9sb2dfZGFyd2luKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vY3Jhc2hsb2dzX3VuaXR0ZXN0LnB5OiBwb2ludCAjNAorICAgICAgICAoQ3Jh
c2hMb2dzVGVzdC50ZXN0X2ZpbmRfbG9nX2Rhcndpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5OiBwb2lu
dCAjNQorICAgICAgICAoU2luZ2xlVGVzdFJ1bm5lci5faGFuZGxlX2Vycm9yKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93
cml0ZXIucHk6IHBvaW50ICM1LCBjbGVhbiB1cAorICAgICAgICAod3JpdGVfdGVzdF9yZXN1bHQp
OgorICAgICAgICAoVGVzdFJlc3VsdFdyaXRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0UmVz
dWx0V3JpdGVyLl9tYWtlX291dHB1dF9kaXJlY3RvcnkpOgorICAgICAgICAoVGVzdFJlc3VsdFdy
aXRlci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoVGVzdFJlc3VsdFdyaXRlci5fb3V0cHV0
X3Rlc3RuYW1lKToKKyAgICAgICAgKFRlc3RSZXN1bHRXcml0ZXIud3JpdGVfb3V0cHV0X2ZpbGVz
KToKKyAgICAgICAgKFRlc3RSZXN1bHRXcml0ZXIud3JpdGVfc3RkZXJyKToKKyAgICAgICAgKFRl
c3RSZXN1bHRXcml0ZXIud3JpdGVfY3Jhc2hfbG9nKToKKyAgICAgICAgKFRlc3RSZXN1bHRXcml0
ZXIud3JpdGVfaW1hZ2VfZGlmZl9maWxlcyk6CisgICAgICAgIChjb3B5X2ZpbGUpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9u
cy5weTogY2xlYW4gdXAKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnMpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5OiBwb2lu
dCA1LCA2CisgICAgICAgIChUZXN0RmFpbHVyZS5tZXNzYWdlKToKKyAgICAgICAgKEZhaWx1cmVU
aW1lb3V0Lm1lc3NhZ2UpOgorICAgICAgICAoRmFpbHVyZUNyYXNoKToKKyAgICAgICAgKEZhaWx1
cmVDcmFzaC5fX2luaXRfXyk6CisgICAgICAgIChGYWlsdXJlQ3Jhc2gubWVzc2FnZSk6CisgICAg
ICAgIChGYWlsdXJlTWlzc2luZ1Jlc3VsdC5tZXNzYWdlKToKKyAgICAgICAgKEZhaWx1cmVUZXh0
TWlzbWF0Y2gubWVzc2FnZSk6CisgICAgICAgIChGYWlsdXJlTWlzc2luZ0ltYWdlSGFzaC5tZXNz
YWdlKToKKyAgICAgICAgKEZhaWx1cmVNaXNzaW5nSW1hZ2UubWVzc2FnZSk6CisgICAgICAgIChG
YWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2gubWVzc2FnZSk6CisgICAgICAgIChGYWlsdXJlSW1hZ2VI
YXNoSW5jb3JyZWN0Lm1lc3NhZ2UpOgorICAgICAgICAoRmFpbHVyZVJlZnRlc3RNaXNtYXRjaC5t
ZXNzYWdlKToKKyAgICAgICAgKEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1ci5tZXNz
YWdlKToKKyAgICAgICAgKEZhaWx1cmVSZWZ0ZXN0Tm9JbWFnZXNHZW5lcmF0ZWQubWVzc2FnZSk6
CisgICAgICAgIChGYWlsdXJlTWlzc2luZ0F1ZGlvLm1lc3NhZ2UpOgorICAgICAgICAoRmFpbHVy
ZUF1ZGlvTWlzbWF0Y2gubWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9iYXNlLnB5OiBwb2ludCAyCisgICAgICAgIChQb3J0LmRpZmZfdGV4dCk6
CisgICAgICAgIChQb3J0Ll9nZXRfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OiBwb2ludCAyLCA1CisgICAgICAgIChD
aHJvbWl1bURyaXZlci5ydW5fdGVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weTogcG9pbnQgMiwgNQorICAgICAgICAo
Q2hyb21pdW1Ecml2ZXJUZXN0LnRlc3RfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weTogcG9pbnQgNQorICAgICAgICAoRHJp
dmVyT3V0cHV0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L21hYy5weTogcG9pbnQgMgorICAgICAgICAoTWFjUG9ydC5fZ2V0X2NyYXNoX2xv
Zyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJf
cHJvY2Vzcy5weTogcG9pbnQgMworICAgICAgICAoU2VydmVyUHJvY2Vzcy5fcmVzZXQpOgorICAg
ICAgICAoU2VydmVyUHJvY2Vzcy5faGFuZGxlX3Bvc3NpYmxlX2ludGVycnVwdCk6CisgICAgICAg
IChTZXJ2ZXJQcm9jZXNzLndyaXRlKToKKyAgICAgICAgKFNlcnZlclByb2Nlc3MucmVhZF9zdGRv
dXQpOgorICAgICAgICAoU2VydmVyUHJvY2Vzcy5oYXNfY3Jhc2hlZCk6CisgICAgICAgIChTZXJ2
ZXJQcm9jZXNzLl9yZWFkKToKKyAgICAgICAgKFNlcnZlclByb2Nlc3Muc3RvcCk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0
dGVzdC5weTogcG9pbnQgMworICAgICAgICAoVHJpdmlhbE1vY2tQb3J0LmNoZWNrX2Zvcl9sZWFr
cyk6CisgICAgICAgIChUZXN0U2VydmVyUHJvY2Vzcy50ZXN0X2Jyb2tlbl9waXBlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6IHBvaW50IDUK
KyAgICAgICAgKFRlc3REcml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OiBwb2ludCA1CisgICAgICAgIChXZWJLaXRQ
b3J0Ll9yZWFkX2ltYWdlX2RpZmYpOgorICAgICAgICAoV2ViS2l0RHJpdmVyLl9faW5pdF9fKToK
KyAgICAgICAgKFdlYktpdERyaXZlci5fc3RhcnQpOgorICAgICAgICAoV2ViS2l0RHJpdmVyLmhh
c19jcmFzaGVkKToKKyAgICAgICAgKFdlYktpdERyaXZlci5ydW5fdGVzdCk6CisgICAgICAgIChX
ZWJLaXREcml2ZXIuX3JlYWRfYmxvY2spOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5OiBwb2ludCA1CisgICAgICAgIChNb2Nr
U2VydmVyUHJvY2Vzcy5fX2luaXRfXyk6CisgICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcyk6Cisg
ICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5oYXNfY3Jhc2hlZCk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6IHBvaW50IDEKKyAgICAgICAgKFdUUjo6ZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0
ZU90aGVyUGFnZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cnVuVGVzdCk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpwcm9jZXNzRGlkQ3Jhc2gpOgorCiAyMDEyLTAzLTE2ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgYSBsYW5kLWZyb20tdXJs
IGNvbW1hbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9jcmFzaGxvZ3MucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jh
c2hsb2dzLnB5CmluZGV4IGE2YjY1NzVmNjA0MTMxMTNjYTYxZjFmNzk0YTMzNmVlOTI4OWE2OTAu
LjExZTAwMmVlMmI3M2Y1MmUwYmJkYWFmY2Q1Y2E2NzBmMWVlMzc5NzcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQpAQCAtMzgsNiAr
MzgsNyBAQCBjbGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKICAgICBkZWYgZmluZF9uZXdlc3RfbG9n
KHNlbGYsIHByb2Nlc3NfbmFtZSwgcGlkPU5vbmUpOgogICAgICAgICBpZiBzeXMucGxhdGZvcm0g
PT0gImRhcndpbiI6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZmluZF9uZXdlc3RfbG9nX2Rh
cndpbihwcm9jZXNzX25hbWUsIHBpZCkKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBf
bG9nX2RpcmVjdG9yeV9kYXJ3aW4oc2VsZik6CiAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxm
Ll9maWxlc3lzdGVtLmV4cGFuZHVzZXIoIn4iKQpAQCAtNTQsMjMgKzU1LDE3IEBAIGNsYXNzIENy
YXNoTG9ncyhvYmplY3QpOgogCiAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9sb2dfZGly
ZWN0b3J5X2RhcndpbigpCiAgICAgICAgIGxvZ3MgPSBzZWxmLl9maWxlc3lzdGVtLmZpbGVzX3Vu
ZGVyKGxvZ19kaXJlY3RvcnksIGZpbGVfZmlsdGVyPWlzX2NyYXNoX2xvZykKLSAgICAgICAgaWYg
bm90IGxvZ3M6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBmaXJzdF9saW5lX3Jl
Z2V4ID0gcmUuY29tcGlsZShyJ15Qcm9jZXNzOlxzKyg/UDxwcm9jZXNzX25hbWU+LiopIFxbKD9Q
PHBpZD5cZCspXF0kJykKKyAgICAgICAgZXJyb3JzID0gJycKICAgICAgICAgZm9yIHBhdGggaW4g
cmV2ZXJzZWQoc29ydGVkKGxvZ3MpKToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICB3aXRoIHNlbGYuX2ZpbGVzeXN0ZW0ub3Blbl90ZXh0X2ZpbGVfZm9yX3JlYWRpbmcocGF0aCkg
YXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RfbGluZSA9IGYucmVhZGxpbmUoKQorICAg
ICAgICAgICAgICAgIGYgPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHBhdGgpCisg
ICAgICAgICAgICAgICAgbWF0Y2ggPSBmaXJzdF9saW5lX3JlZ2V4Lm1hdGNoKGZbMDpmLmZpbmQo
J1xuJyldKQorICAgICAgICAgICAgICAgIGlmIG1hdGNoIGFuZCBtYXRjaC5ncm91cCgncHJvY2Vz
c19uYW1lJykgPT0gcHJvY2Vzc19uYW1lIGFuZCAocGlkIGlzIE5vbmUgb3IgaW50KG1hdGNoLmdy
b3VwKCdwaWQnKSkgPT0gcGlkKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9ycyAr
IGYKKyAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorICAgICAgICAgICAgICAgICMgVGhl
cmUncyBhIGNoYW5jZSB0aGF0IHRoZSBmaWxlIHdlIGp1c3QgZmFpbGVkIHRvIHJlYWQgaXMgdGhl
IG9uZSB3ZSB3YW50LAorICAgICAgICAgICAgICAgICMgc28gd2UgcmVjb3JkIHRoZSBlcnJvciBp
biB0aGUgImNyYXNoIGxvZyIgYW5kIGtlZXAgbG9va2luZy4KKyAgICAgICAgICAgICAgICBlcnJv
cnMgKz0gIkVSUk9SOiBGYWlsZWQgdG8gcmVhZCAnJXMnOiAlc1xuIiAlIChwYXRoLCBzdHIoZSkp
CiAKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmaXJzdF9saW5lX3JlZ2V4Lm1hdGNoKGZp
cnN0X2xpbmUpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoLmdyb3Vw
KCdwcm9jZXNzX25hbWUnKSAhPSBwcm9jZXNzX25hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBpZiBwaWQgaXMgbm90IE5vbmUgYW5kIGlu
dChtYXRjaC5ncm91cCgncGlkJykpICE9IHBpZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0KLSAgICAgICAgICAgICAgICAgICAgZi5zZWVrKDAsIG9zLlNFRUtfU0VUKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vy
cm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHJldHVybiBlcnJvcnMgb3Ig
Tm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Ny
YXNobG9nc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9jcmFzaGxvZ3NfdW5pdHRlc3QucHkKaW5kZXggYWIxYTZjMmFkMmY0Yzg0ODkzYTdjZTViMGUx
YzQyNTA1NzJhNzBmOC4uYjEyMTVhMTU0N2ZmZWMwMTBiNDJjODNlNTM1YjBhOTEwZTBkYjU5OSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9n
c191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
Y3Jhc2hsb2dzX3VuaXR0ZXN0LnB5CkBAIC04Myw2ICs4Myw3IEBAIGNsYXNzIENyYXNoTG9nc1Rl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBuZXdlcl9tb2NrX2NyYXNoX3JlcG9ydCA9
IG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luKCdEdW1wUmVuZGVyVHJlZScsIDI4NTI5KQog
ICAgICAgICBvdGhlcl9wcm9jZXNzX21vY2tfY3Jhc2hfcmVwb3J0ID0gbWFrZV9tb2NrX2NyYXNo
X3JlcG9ydF9kYXJ3aW4oJ0Zvb1Byb2Nlc3MnLCAyODUyNykKICAgICAgICAgbWlzZm9ybWF0dGVk
X21vY2tfY3Jhc2hfcmVwb3J0ID0gJ0p1bmsgdGhhdCBzaG91bGQgbm90IGFwcGVhciBpbiBhIGNy
YXNoIHJlcG9ydCcgKyBtYWtlX21vY2tfY3Jhc2hfcmVwb3J0X2RhcndpbignRHVtcFJlbmRlclRy
ZWUnLCAyODUyNilbMjAwOl0KKyAgICAgICAgZXJyb3JzID0gIkVSUk9SOiBGYWlsZWQgdG8gcmVh
ZCAnL1VzZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL0R1bXBSZW5kZXJU
cmVlXzIwMTEtMDYtMTMtMTUwNzIxX3F1YWR6ZW4uY3Jhc2gnOiBbRXJybm8gMl0gL1VzZXJzL21v
Y2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL0R1bXBSZW5kZXJUcmVlXzIwMTEtMDYt
MTMtMTUwNzIxX3F1YWR6ZW4uY3Jhc2g6ICdObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5J1xuIgog
ICAgICAgICBmaWxlcyA9IHt9CiAgICAgICAgIGZpbGVzWycvVXNlcnMvbW9jay9MaWJyYXJ5L0xv
Z3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3MThfcXVh
ZHplbi5jcmFzaCddID0gb2xkZXJfbW9ja19jcmFzaF9yZXBvcnQKICAgICAgICAgZmlsZXNbJy9V
c2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9EdW1wUmVuZGVyVHJlZV8y
MDExLTA2LTEzLTE1MDcxOV9xdWFkemVuLmNyYXNoJ10gPSBtb2NrX2NyYXNoX3JlcG9ydApAQCAt
OTMsMTAgKzk0LDEwIEBAIGNsYXNzIENyYXNoTG9nc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBmaWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCiAgICAgICAgIGNyYXNo
X2xvZ3MgPSBDcmFzaExvZ3MoZmlsZXN5c3RlbSkKICAgICAgICAgbG9nID0gY3Jhc2hfbG9ncy5m
aW5kX25ld2VzdF9sb2coIkR1bXBSZW5kZXJUcmVlIikKLSAgICAgICAgc2VsZi5hc3NlcnRMaW5l
c0VxdWFsKGxvZywgbmV3ZXJfbW9ja19jcmFzaF9yZXBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0
TGluZXNFcXVhbChsb2csIGVycm9ycyArIG5ld2VyX21vY2tfY3Jhc2hfcmVwb3J0KQogICAgICAg
ICBsb2cgPSBjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xvZygiRHVtcFJlbmRlclRyZWUiLCAyODUy
OSkKLSAgICAgICAgc2VsZi5hc3NlcnRMaW5lc0VxdWFsKGxvZywgbmV3ZXJfbW9ja19jcmFzaF9y
ZXBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0TGluZXNFcXVhbChsb2csIGVycm9ycyArIG5ld2Vy
X21vY2tfY3Jhc2hfcmVwb3J0KQogICAgICAgICBsb2cgPSBjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0
X2xvZygiRHVtcFJlbmRlclRyZWUiLCAyODUzMCkKLSAgICAgICAgc2VsZi5hc3NlcnRMaW5lc0Vx
dWFsKGxvZywgbW9ja19jcmFzaF9yZXBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0TGluZXNFcXVh
bChsb2csIGVycm9ycyArIG1vY2tfY3Jhc2hfcmVwb3J0KQogICAgICAgICBsb2cgPSBjcmFzaF9s
b2dzLmZpbmRfbmV3ZXN0X2xvZygiRHVtcFJlbmRlclRyZWUiLCAyODUzMSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsb2csIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nLCBl
cnJvcnMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKaW5kZXggNjM3
NTgyMGNkMzljM2EwMDMyY2M3NjNkMjAwOGVhMGI4NmUyYWQ5MS4uMGY3YjZhNDQ3YWQzYjQ1Y2Q0
MWNkZGIzNjBmZDc1ZjY2OWE5OWY3NiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0
X3J1bm5lci5weQpAQCAtMTk3LDcgKzE5Nyw5IEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAg
ICAgICAgICAgICB0ZXN0bmFtZSA9IHNlbGYuX3Rlc3RfbmFtZQogCiAgICAgICAgIGlmIGRyaXZl
cl9vdXRwdXQuY3Jhc2g6Ci0gICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJl
cy5GYWlsdXJlQ3Jhc2goYm9vbChyZWZlcmVuY2VfZmlsZW5hbWUpKSkKKyAgICAgICAgICAgIGZh
aWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVDcmFzaChkcml2ZXJfb3V0cHV0LmNy
YXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRyaXZlcl9vdXRwdXQuY3Jhc2hlZF9waWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbChyZWZlcmVu
Y2VfZmlsZW5hbWUpKSkKICAgICAgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQuZXJyb3I6CiAgICAg
ICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgJXMgY3Jhc2hlZCwgc3RhY2sgdHJhY2U6IiAlIChz
ZWxmLl93b3JrZXJfbmFtZSwgdGVzdG5hbWUpKQogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3Rf
cmVzdWx0X3dyaXRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weQppbmRleCBhNDBjMDkwYjU4MDhkYWU4Zjc5
NWVjNTljMzljZGVjZGQ5MzIyNzZlLi40NGZmMjE2ODE1YzRiZDRjYmI1ZTg1ZTljMTMwMDcwYzQw
YWE2ZWEzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CkBAIC0y
OSw3ICsyOSw2IEBACiAKIGltcG9ydCBsb2dnaW5nCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5jcmFzaGxvZ3MgaW1wb3J0IENyYXNoTG9ncwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiAKIApAQCAtNDAsNyArMzksOCBAQCBkZWYg
d3JpdGVfdGVzdF9yZXN1bHQocG9ydCwgdGVzdF9uYW1lLCBkcml2ZXJfb3V0cHV0LAogICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQsIGZhaWx1cmVzKToKICAgICAi
IiJXcml0ZSB0aGUgdGVzdCByZXN1bHQgdG8gdGhlIHJlc3VsdCBvdXRwdXQgZGlyZWN0b3J5LiIi
IgogICAgIHJvb3Rfb3V0cHV0X2RpciA9IHBvcnQucmVzdWx0c19kaXJlY3RvcnkoKQotICAgIHdy
aXRlciA9IFRlc3RSZXN1bHRXcml0ZXIocG9ydCwgcm9vdF9vdXRwdXRfZGlyLCB0ZXN0X25hbWUp
CisgICAgIyBGSVhNRTogcGFzcyBpbiB0aGUgZmlsZXN5c3RlbSwgZG9uJ3QgZ2V0IGl0IGZyb20g
dGhlIHBvcnQuCisgICAgd3JpdGVyID0gVGVzdFJlc3VsdFdyaXRlcihwb3J0Ll9maWxlc3lzdGVt
LCBwb3J0LCByb290X291dHB1dF9kaXIsIHRlc3RfbmFtZSkKICAgICBpZiBkcml2ZXJfb3V0cHV0
LmVycm9yOgogICAgICAgICB3cml0ZXIud3JpdGVfc3RkZXJyKGRyaXZlcl9vdXRwdXQuZXJyb3Ip
CiAKQEAgLTYzLDcgKzYzLDcgQEAgZGVmIHdyaXRlX3Rlc3RfcmVzdWx0KHBvcnQsIHRlc3RfbmFt
ZSwgZHJpdmVyX291dHB1dCwKICAgICAgICAgICAgIHdyaXRlci53cml0ZV9hdWRpb19maWxlcyhk
cml2ZXJfb3V0cHV0LmF1ZGlvLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmF1ZGlvKQogICAgICAg
ICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2gpOgog
ICAgICAgICAgICAgY3Jhc2hlZF9kcml2ZXJfb3V0cHV0ID0gZXhwZWN0ZWRfZHJpdmVyX291dHB1
dCBpZiBmYWlsdXJlLmlzX3JlZnRlc3QgZWxzZSBkcml2ZXJfb3V0cHV0Ci0gICAgICAgICAgICB3
cml0ZXIud3JpdGVfY3Jhc2hfcmVwb3J0KGNyYXNoZWRfZHJpdmVyX291dHB1dC5jcmFzaGVkX3By
b2Nlc3NfbmFtZSwgY3Jhc2hlZF9kcml2ZXJfb3V0cHV0LmVycm9yKQorICAgICAgICAgICAgd3Jp
dGVyLndyaXRlX2NyYXNoX2xvZyhjcmFzaGVkX2RyaXZlcl9vdXRwdXQuY3Jhc2hfbG9nKQogICAg
ICAgICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVz
dE1pc21hdGNoKToKICAgICAgICAgICAgIHdyaXRlci53cml0ZV9pbWFnZV9maWxlcyhkcml2ZXJf
b3V0cHV0LmltYWdlLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmltYWdlKQogICAgICAgICAgICAg
IyBGSVhNRTogVGhpcyB3b3JrIHNob3VsZCBiZSBkb25lIGVhcmxpZXIgaW4gdGhlIHBpcGVsaW5l
IChlLmcuLCB3aGVuIHdlIGNvbXBhcmUgaW1hZ2VzIGZvciBub24tcmVmIHRlc3RzKS4KQEAgLTk2
LDE0ICs5NiwxNSBAQCBjbGFzcyBUZXN0UmVzdWx0V3JpdGVyKG9iamVjdCk6CiAgICAgRklMRU5B
TUVfU1VGRklYX0lNQUdFX0RJRkYgPSAiLWRpZmYucG5nIgogICAgIEZJTEVOQU1FX1NVRkZJWF9J
TUFHRV9ESUZGU19IVE1MID0gIi1kaWZmcy5odG1sIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBvcnQsIHJvb3Rfb3V0cHV0X2RpciwgdGVzdF9uYW1lKToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZmlsZXN5c3RlbSwgcG9ydCwgcm9vdF9vdXRwdXRfZGlyLCB0ZXN0X25hbWUpOgorICAgICAg
ICBzZWxmLl9maWxlc3lzdGVtID0gZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl9wb3J0ID0gcG9y
dAogICAgICAgICBzZWxmLl9yb290X291dHB1dF9kaXIgPSByb290X291dHB1dF9kaXIKICAgICAg
ICAgc2VsZi5fdGVzdF9uYW1lID0gdGVzdF9uYW1lCiAKICAgICBkZWYgX21ha2Vfb3V0cHV0X2Rp
cmVjdG9yeShzZWxmKToKICAgICAgICAgIiIiQ3JlYXRlcyB0aGUgb3V0cHV0IGRpcmVjdG9yeSAo
aWYgbmVlZGVkKSBmb3IgYSBnaXZlbiB0ZXN0IGZpbGVuYW1lLiIiIgotICAgICAgICBmcyA9IHNl
bGYuX3BvcnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgZnMgPSBzZWxmLl9maWxlc3lzdGVtCiAgICAg
ICAgIG91dHB1dF9maWxlbmFtZSA9IGZzLmpvaW4oc2VsZi5fcm9vdF9vdXRwdXRfZGlyLCBzZWxm
Ll90ZXN0X25hbWUpCiAgICAgICAgIGZzLm1heWJlX21ha2VfZGlyZWN0b3J5KGZzLmRpcm5hbWUo
b3V0cHV0X2ZpbGVuYW1lKSkKIApAQCAtMTE5LDEyICsxMjAsMTIgQEAgY2xhc3MgVGVzdFJlc3Vs
dFdyaXRlcihvYmplY3QpOgogICAgICAgICBSZXR1cm46CiAgICAgICAgICAgVGhlIGFic29sdXRl
IHBhdGggdG8gdGhlIG91dHB1dCBmaWxlbmFtZQogICAgICAgICAiIiIKLSAgICAgICAgZnMgPSBz
ZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIGZzID0gc2VsZi5fZmlsZXN5c3RlbQogICAg
ICAgICBvdXRwdXRfZmlsZW5hbWUgPSBmcy5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0X2Rpciwgc2Vs
Zi5fdGVzdF9uYW1lKQogICAgICAgICByZXR1cm4gZnMuc3BsaXRleHQob3V0cHV0X2ZpbGVuYW1l
KVswXSArIG1vZGlmaWVyCiAKICAgICBkZWYgX291dHB1dF90ZXN0bmFtZShzZWxmLCBtb2RpZmll
cik6Ci0gICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBmcyA9IHNl
bGYuX2ZpbGVzeXN0ZW0KICAgICAgICAgcmV0dXJuIGZzLnNwbGl0ZXh0KGZzLmJhc2VuYW1lKHNl
bGYuX3Rlc3RfbmFtZSkpWzBdICsgbW9kaWZpZXIKIAogICAgIGRlZiB3cml0ZV9vdXRwdXRfZmls
ZXMoc2VsZiwgZmlsZV90eXBlLCBvdXRwdXQsIGV4cGVjdGVkKToKQEAgLTE0NCwyOCArMTQ1LDI0
IEBAIGNsYXNzIFRlc3RSZXN1bHRXcml0ZXIob2JqZWN0KToKICAgICAgICAgYWN0dWFsX2ZpbGVu
YW1lID0gc2VsZi5vdXRwdXRfZmlsZW5hbWUoc2VsZi5GSUxFTkFNRV9TVUZGSVhfQUNUVUFMICsg
ZmlsZV90eXBlKQogICAgICAgICBleHBlY3RlZF9maWxlbmFtZSA9IHNlbGYub3V0cHV0X2ZpbGVu
YW1lKHNlbGYuRklMRU5BTUVfU1VGRklYX0VYUEVDVEVEICsgZmlsZV90eXBlKQogCi0gICAgICAg
IGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBmcyA9IHNlbGYuX2ZpbGVzeXN0
ZW0KICAgICAgICAgaWYgb3V0cHV0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZnMud3JpdGVf
YmluYXJ5X2ZpbGUoYWN0dWFsX2ZpbGVuYW1lLCBvdXRwdXQpCiAgICAgICAgIGlmIGV4cGVjdGVk
IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZnMud3JpdGVfYmluYXJ5X2ZpbGUoZXhwZWN0ZWRf
ZmlsZW5hbWUsIGV4cGVjdGVkKQogCiAgICAgZGVmIHdyaXRlX3N0ZGVycihzZWxmLCBlcnJvcik6
Ci0gICAgICAgIGZzID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbQorICAgICAgICBmcyA9IHNlbGYu
X2ZpbGVzeXN0ZW0KICAgICAgICAgZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxlbmFtZShzZWxm
LkZJTEVOQU1FX1NVRkZJWF9TVERFUlIgKyAiLnR4dCIpCiAgICAgICAgIGZzLm1heWJlX21ha2Vf
ZGlyZWN0b3J5KGZzLmRpcm5hbWUoZmlsZW5hbWUpKQogICAgICAgICBmcy53cml0ZV9iaW5hcnlf
ZmlsZShmaWxlbmFtZSwgZXJyb3IpCiAKLSAgICBkZWYgd3JpdGVfY3Jhc2hfcmVwb3J0KHNlbGYs
IGNyYXNoZWRfcHJvY2Vzc19uYW1lLCBlcnJvcik6Ci0gICAgICAgIGZzID0gc2VsZi5fcG9ydC5f
ZmlsZXN5c3RlbQorICAgIGRlZiB3cml0ZV9jcmFzaF9sb2coc2VsZiwgY3Jhc2hfbG9nKToKKyAg
ICAgICAgZnMgPSBzZWxmLl9maWxlc3lzdGVtCiAgICAgICAgIGZpbGVuYW1lID0gc2VsZi5vdXRw
dXRfZmlsZW5hbWUoc2VsZi5GSUxFTkFNRV9TVUZGSVhfQ1JBU0hfTE9HICsgIi50eHQiKQogICAg
ICAgICBmcy5tYXliZV9tYWtlX2RpcmVjdG9yeShmcy5kaXJuYW1lKGZpbGVuYW1lKSkKLSAgICAg
ICAgIyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGdyYWJiaW5nIHByaXZhdGUgbWVtYmVycyBvZiBw
b3J0LgotICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKGZzKQotICAgICAgICBsb2cgPSBj
cmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xvZyhjcmFzaGVkX3Byb2Nlc3NfbmFtZSkKLSAgICAgICAg
IyBDcmFzaExvZ3MgZG9lc24ndCBzdXBwb3J0IGV2ZXJ5IHBsYXRmb3JtLCBzbyB3ZSBmYWxsIGJh
Y2sgdG8KLSAgICAgICAgIyBpbmNsdWRpbmcgdGhlIHN0ZGVyciBvdXRwdXQsIHdoaWNoIGlzIGFk
bWl0dGVkbHkgc29tZXdoYXQgcmVkdW5kYW50LgotICAgICAgICBmcy53cml0ZV90ZXh0X2ZpbGUo
ZmlsZW5hbWUsIGxvZyBpZiBsb2cgZWxzZSBlcnJvcikKKyAgICAgICAgaWYgY3Jhc2hfbG9nIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVuYW1lLCBjcmFz
aF9sb2cpCiAKICAgICBkZWYgd3JpdGVfdGV4dF9maWxlcyhzZWxmLCBhY3R1YWxfdGV4dCwgZXhw
ZWN0ZWRfdGV4dCk6CiAgICAgICAgIHNlbGYud3JpdGVfb3V0cHV0X2ZpbGVzKCIudHh0IiwgYWN0
dWFsX3RleHQsIGV4cGVjdGVkX3RleHQpCkBAIC0yMDUsNyArMjAyLDcgQEAgY2xhc3MgVGVzdFJl
c3VsdFdyaXRlcihvYmplY3QpOgogCiAgICAgZGVmIHdyaXRlX2ltYWdlX2RpZmZfZmlsZXMoc2Vs
ZiwgaW1hZ2VfZGlmZik6CiAgICAgICAgIGRpZmZfZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxl
bmFtZShzZWxmLkZJTEVOQU1FX1NVRkZJWF9JTUFHRV9ESUZGKQotICAgICAgICBmcyA9IHNlbGYu
X3BvcnQuX2ZpbGVzeXN0ZW0KKyAgICAgICAgZnMgPSBzZWxmLl9maWxlc3lzdGVtCiAgICAgICAg
IGZzLndyaXRlX2JpbmFyeV9maWxlKGRpZmZfZmlsZW5hbWUsIGltYWdlX2RpZmYpCiAKICAgICAg
ICAgZGlmZnNfaHRtbF9maWxlbmFtZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHNlbGYuRklMRU5B
TUVfU1VGRklYX0lNQUdFX0RJRkZTX0hUTUwpCkBAIC0yNjIsMTEgKzI1OSwxMCBAQCBEaWZmZXJl
bmNlIGJldHdlZW4gaW1hZ2VzOiA8YSBocmVmPSIlKGRpZmZfZmlsZW5hbWUpcyI+ZGlmZjwvYT48
YnI+CiAgICAgICAgICAgICAnZGlmZl9maWxlbmFtZSc6IHNlbGYuX291dHB1dF90ZXN0bmFtZShz
ZWxmLkZJTEVOQU1FX1NVRkZJWF9JTUFHRV9ESUZGKSwKICAgICAgICAgICAgICdwcmVmaXgnOiBz
ZWxmLl9vdXRwdXRfdGVzdG5hbWUoJycpLAogICAgICAgICB9Ci0gICAgICAgICMgRklYTUU6IFRo
aXMgc2VlbXMgbGlrZSBhIHRleHQgZmlsZSwgbm90IGEgYmluYXJ5IGZpbGUuCi0gICAgICAgIHNl
bGYuX3BvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfYmluYXJ5X2ZpbGUoZGlmZnNfaHRtbF9maWxlbmFt
ZSwgaHRtbCkKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoZGlmZnNf
aHRtbF9maWxlbmFtZSwgaHRtbCkKIAogICAgIGRlZiBjb3B5X2ZpbGUoc2VsZiwgc3JjX2ZpbGVw
YXRoKToKLSAgICAgICAgZnMgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIGZzID0g
c2VsZi5fZmlsZXN5c3RlbQogICAgICAgICBhc3NlcnQgZnMuZXhpc3RzKHNyY19maWxlcGF0aCks
ICdzcmNfZmlsZXBhdGg6ICVzJyAlIHNyY19maWxlcGF0aAogICAgICAgICBkc3RfZmlsZXBhdGgg
PSBmcy5qb2luKHNlbGYuX3Jvb3Rfb3V0cHV0X2Rpciwgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0
X2ZpbGVuYW1lKHNyY19maWxlcGF0aCkpCiAgICAgICAgIHNlbGYuX21ha2Vfb3V0cHV0X2RpcmVj
dG9yeSgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9t
b2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggZTY5YjUyMTVlMzdjYTI3
Yjk4MzE4ZGZlYWQ2MjUyOTQ3YWMxMDEwMy4uYTk1YWRiN2QzODEwNWNiZWZjOWQ5ZjUwNmQwYmYw
ODUyNzE2ZjQ4MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtNjU5LDggKzY1
OSw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnMob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSU1BR0VfUExVU19URVhUOiAoJ2ltYWdlIGFuZCB0ZXh0IG1pc21hdGNo
JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lt
YWdlIGFuZCB0ZXh0IG1pc21hdGNoJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFVRElPOiAoJ2F1ZGlvIG1pc21hdGNoJywgJ2F1ZGlvIG1pc21hdGNoJyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENSQVNIOiAoJ0R1bXBSZW5kZXJUcmVlIGNyYXNoJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRHVtcFJlbmRlclRyZWUgY3Jh
c2hlcycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUkFTSDogKCdjcmFzaCcs
ICdjcmFzaGVzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVPVVQ6ICgn
dGVzdCB0aW1lZCBvdXQnLCAndGVzdHMgdGltZWQgb3V0JyksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1JU1NJTkc6ICgnbm8gZXhwZWN0ZWQgcmVzdWx0IGZvdW5kJywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdubyBleHBlY3RlZCByZXN1bHRz
IGZvdW5kJyl9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9mYWlsdXJlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5CmluZGV4IGYyZjI0NmUzMGE5ZThjNjM1NzRi
MTlhNmQ3ODhjNjk1MjZlYzhlOTAuLjIwMjY3MzI1YTdmM2QwYzNlYzA1YzRhMDE0YzFiYjE2Zjdj
YWJhZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21v
ZGVscy90ZXN0X2ZhaWx1cmVzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5CkBAIC04NSw4ICs4NSw3IEBAIGNsYXNzIFRl
c3RGYWlsdXJlKG9iamVjdCk6CiAgICAgICAgICIiIkNyZWF0ZXMgYSBUZXN0RmFpbHVyZSBvYmpl
Y3QgZnJvbSB0aGUgc3BlY2lmaWVkIHN0cmluZy4iIiIKICAgICAgICAgcmV0dXJuIGNQaWNrbGUu
bG9hZHMocykKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbWVzc2FnZSgpOgorICAgIGRl
ZiBtZXNzYWdlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc3RyaW5nIGRlc2NyaWJpbmcg
dGhlIGZhaWx1cmUgaW4gbW9yZSBkZXRhaWwuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IKIApAQCAtMTEzLDggKzExMiw3IEBAIGNsYXNzIEZhaWx1cmVUaW1lb3V0KFRlc3RG
YWlsdXJlKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgaXNfcmVmdGVzdD1GYWxzZSk6CiAgICAg
ICAgIHNlbGYuaXNfcmVmdGVzdCA9IGlzX3JlZnRlc3QKIAotICAgIEBzdGF0aWNtZXRob2QKLSAg
ICBkZWYgbWVzc2FnZSgpOgorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgogICAgICAgICByZXR1cm4g
IlRlc3QgdGltZWQgb3V0IgogCiAgICAgZGVmIGRyaXZlcl9uZWVkc19yZXN0YXJ0KHNlbGYpOgpA
QCAtMTIyLDE0ICsxMjAsMTYgQEAgY2xhc3MgRmFpbHVyZVRpbWVvdXQoVGVzdEZhaWx1cmUpOgog
CiAKIGNsYXNzIEZhaWx1cmVDcmFzaChUZXN0RmFpbHVyZSk6Ci0gICAgIiIiRHVtcFJlbmRlclRy
ZWUgY3Jhc2hlZC4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaXNfcmVmdGVzdD1GYWxzZSk6
CisgICAgIiIiRHVtcFJlbmRlclRyZWUvV2ViS2l0VGVzdFJ1bm5lciBjcmFzaGVkLiIiIgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBwcm9jZXNzX25hbWU9Jz8/JywgcGlkPU5vbmUsIGlzX3JlZnRl
c3Q9RmFsc2UpOgorICAgICAgICBzZWxmLnByb2Nlc3NfbmFtZSA9IHByb2Nlc3NfbmFtZQorICAg
ICAgICBzZWxmLnBpZCA9IHBpZAogICAgICAgICBzZWxmLmlzX3JlZnRlc3QgPSBpc19yZWZ0ZXN0
CiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKLSAgICAgICAgIyBGSVhN
RTogVGhpcyBpcyB3cm9uZyBmb3IgV2ViS2l0MiAod2hpY2ggdXNlcyBXZWJLaXRUZXN0UnVubmVy
KS4KLSAgICAgICAgcmV0dXJuICJEdW1wUmVuZGVyVHJlZSBjcmFzaGVkIgorICAgIGRlZiBtZXNz
YWdlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnBpZDoKKyAgICAgICAgICAgIHJldHVybiAiJXMg
KHBpZCAlZCkgY3Jhc2hlZCIgJSAoc2VsZi5wcm9jZXNzX25hbWUsIHNlbGYucGlkKQorICAgICAg
ICByZXR1cm4gc2VsZi5wcm9jZXNzX25hbWUgKyAiIGNyYXNoZWQiCiAKICAgICBkZWYgZHJpdmVy
X25lZWRzX3Jlc3RhcnQoc2VsZik6CiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0xMzgsMzIgKzEz
OCwyOCBAQCBjbGFzcyBGYWlsdXJlQ3Jhc2goVGVzdEZhaWx1cmUpOgogY2xhc3MgRmFpbHVyZU1p
c3NpbmdSZXN1bHQoVGVzdEZhaWx1cmUpOgogICAgICIiIkV4cGVjdGVkIHJlc3VsdCB3YXMgbWlz
c2luZy4iIiIKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbWVzc2FnZSgpOgorICAgIGRl
ZiBtZXNzYWdlKHNlbGYpOgogICAgICAgICByZXR1cm4gIk5vIGV4cGVjdGVkIHJlc3VsdHMgZm91
bmQiCiAKIAogY2xhc3MgRmFpbHVyZVRleHRNaXNtYXRjaChUZXN0RmFpbHVyZSk6CiAgICAgIiIi
VGV4dCBkaWZmIG91dHB1dCBmYWlsZWQuIiIiCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVm
IG1lc3NhZ2UoKToKKyAgICBkZWYgbWVzc2FnZShzZWxmKToKICAgICAgICAgcmV0dXJuICJUZXh0
IGRpZmYgbWlzbWF0Y2giCiAKIAogY2xhc3MgRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2goVGVzdEZh
aWx1cmUpOgogICAgICIiIkFjdHVhbCByZXN1bHQgaGFzaCB3YXMgbWlzc2luZy4iIiIKIAotICAg
IEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbWVzc2FnZSgpOgorICAgIGRlZiBtZXNzYWdlKHNlbGYp
OgogICAgICAgICByZXR1cm4gIk5vIGV4cGVjdGVkIGltYWdlIGhhc2ggZm91bmQiCiAKIAogY2xh
c3MgRmFpbHVyZU1pc3NpbmdJbWFnZShUZXN0RmFpbHVyZSk6CiAgICAgIiIiQWN0dWFsIHJlc3Vs
dCBpbWFnZSB3YXMgbWlzc2luZy4iIiIKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbWVz
c2FnZSgpOgorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgogICAgICAgICByZXR1cm4gIk5vIGV4cGVj
dGVkIGltYWdlIGZvdW5kIgogCiAKQEAgLTE3MiwxNiArMTY4LDE0IEBAIGNsYXNzIEZhaWx1cmVJ
bWFnZUhhc2hNaXNtYXRjaChUZXN0RmFpbHVyZSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRp
ZmZfcGVyY2VudD0wKToKICAgICAgICAgc2VsZi5kaWZmX3BlcmNlbnQgPSBkaWZmX3BlcmNlbnQK
IAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbWVzc2FnZSgpOgorICAgIGRlZiBtZXNzYWdl
KHNlbGYpOgogICAgICAgICByZXR1cm4gIkltYWdlIG1pc21hdGNoIgogCiAKIGNsYXNzIEZhaWx1
cmVJbWFnZUhhc2hJbmNvcnJlY3QoVGVzdEZhaWx1cmUpOgogICAgICIiIkFjdHVhbCByZXN1bHQg
aGFzaCBpcyBpbmNvcnJlY3QuIiIiCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG1lc3Nh
Z2UoKToKKyAgICBkZWYgbWVzc2FnZShzZWxmKToKICAgICAgICAgcmV0dXJuICJJbWFnZXMgbWF0
Y2gsIGV4cGVjdGVkIGltYWdlIGhhc2ggaW5jb3JyZWN0LiAiCiAKIApAQCAtMTkxLDggKzE4NSw3
IEBAIGNsYXNzIEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2goVGVzdEZhaWx1cmUpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCByZWZlcmVuY2VfZmlsZW5hbWU9Tm9uZSk6CiAgICAgICAgIHNlbGYucmVm
ZXJlbmNlX2ZpbGVuYW1lID0gcmVmZXJlbmNlX2ZpbGVuYW1lCiAKLSAgICBAc3RhdGljbWV0aG9k
Ci0gICAgZGVmIG1lc3NhZ2UoKToKKyAgICBkZWYgbWVzc2FnZShzZWxmKToKICAgICAgICAgcmV0
dXJuICJNaXNtYXRjaCB3aXRoIHJlZmVyZW5jZSIKIAogCkBAIC0yMDIsOCArMTk1LDcgQEAgY2xh
c3MgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyKFRlc3RGYWlsdXJlKToKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVmZXJlbmNlX2ZpbGVuYW1lPU5vbmUpOgogICAgICAgICBzZWxm
LnJlZmVyZW5jZV9maWxlbmFtZSA9IHJlZmVyZW5jZV9maWxlbmFtZQogCi0gICAgQHN0YXRpY21l
dGhvZAotICAgIGRlZiBtZXNzYWdlKCk6CisgICAgZGVmIG1lc3NhZ2Uoc2VsZik6CiAgICAgICAg
IHJldHVybiAiTWlzbWF0Y2ggd2l0aCB0aGUgcmVmZXJlbmNlIGRpZCBub3Qgb2NjdXIiCiAKIApA
QCAtMjEzLDI0ICsyMDUsMjEgQEAgY2xhc3MgRmFpbHVyZVJlZnRlc3ROb0ltYWdlc0dlbmVyYXRl
ZChUZXN0RmFpbHVyZSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlZmVyZW5jZV9maWxlbmFt
ZT1Ob25lKToKICAgICAgICAgc2VsZi5yZWZlcmVuY2VfZmlsZW5hbWUgPSByZWZlcmVuY2VfZmls
ZW5hbWUKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbWVzc2FnZSgpOgorICAgIGRlZiBt
ZXNzYWdlKHNlbGYpOgogICAgICAgICByZXR1cm4gIlJlZnRlc3QgZGlkbid0IGdlbmVyYXRlIHBp
eGVsIHJlc3VsdHMuIgogCiAKIGNsYXNzIEZhaWx1cmVNaXNzaW5nQXVkaW8oVGVzdEZhaWx1cmUp
OgogICAgICIiIkFjdHVhbCByZXN1bHQgaW1hZ2Ugd2FzIG1pc3NpbmcuIiIiCiAKLSAgICBAc3Rh
dGljbWV0aG9kCi0gICAgZGVmIG1lc3NhZ2UoKToKKyAgICBkZWYgbWVzc2FnZShzZWxmKToKICAg
ICAgICAgcmV0dXJuICJObyBleHBlY3RlZCBhdWRpbyBmb3VuZCIKIAogCiBjbGFzcyBGYWlsdXJl
QXVkaW9NaXNtYXRjaChUZXN0RmFpbHVyZSk6CiAgICAgIiIiQXVkaW8gZmlsZXMgZGlkbid0IG1h
dGNoLiIiIgogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBtZXNzYWdlKCk6CisgICAgZGVm
IG1lc3NhZ2Uoc2VsZik6CiAgICAgICAgIHJldHVybiAiQXVkaW8gbWlzbWF0Y2giCiAKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4
IGUyNjJhOWQyZDFlOTFiNzA2OTU0ODhmN2Y3NzdmNDAyN2YxODVlZWQuLmZjMWM4NmM2NWNkZTdi
MzRkYzdmMTAxZjBhOGRkYmViMGVjYzBiZDUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTI4Nyw5ICsyODcsNiBAQCBjbGFzcyBQ
b3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxf
ZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiAnJy5qb2luKGRpZmYpCiAKLSAgICBkZWYgaXNfY3Jh
c2hfcmVwb3J0ZXIoc2VsZiwgcHJvY2Vzc19uYW1lKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0K
ICAgICBkZWYgY2hlY2tfZm9yX2xlYWtzKHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQp
OgogICAgICAgICAjIFN1YmNsYXNzZXMgc2hvdWxkIGNoZWNrIGZvciBsZWFrcyBpbiB0aGUgcnVu
bmluZyBwcm9jZXNzCiAgICAgICAgICMgYW5kIHByaW50IGFueSBuZWNlc3Nhcnkgd2FybmluZ3Mg
aWYgbGVha3MgYXJlIGZvdW5kLgpAQCAtMTA1MSw2ICsxMDQ4LDE1IEBAIGNsYXNzIFBvcnQob2Jq
ZWN0KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgcG9ydCdzIGRyaXZlciBpbXBsZW1lbnRhdGlv
bi4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5fZHJpdmVyX2Ns
YXNzJykKIAorICAgIGRlZiBfZ2V0X2NyYXNoX2xvZyhzZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwg
c3RkZXJyKToKKyAgICAgICAgIyBGSVhNRTogRG9lcyBpdCBtYWtlIHNlbnNlIHRvIHB1c2ggdGhp
cyBsb2dpYyBpbnRvIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hsb2dzID8KKyAgICAgICAg
bG9nID0gJ2NyYXNoIGxvZyBmb3IgJXMgKHBpZCAlZClcbiVzXG4lc1xuJyAlICgKKyAgICAgICAg
ICAgIG5hbWUgb3IgJz8/JywKKyAgICAgICAgICAgIHBpZCBvciAnPHVua25vd24+JywKKyAgICAg
ICAgICAgICdcbicuam9pbignU1RET1VUOiAnICsgbGluZSBmb3IgbGluZSBpbiBzdGRvdXQuc3Bs
aXRsaW5lcygpKSBpZiBzdGRvdXQgZWxzZSAnPGVtcHR5PicsCisgICAgICAgICAgICAnXG4nLmpv
aW4oJ1NUREVSUjogJyArIGxpbmUgZm9yIGxpbmUgaW4gc3RkZXJyLnNwbGl0bGluZXMoKSkgaWYg
c3RkZXJyIGVsc2UgJzxlbXB0eT4nKQorICAgICAgICByZXR1cm4gbG9nCisKICAgICBkZWYgdmly
dHVhbF90ZXN0X3N1aXRlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIFtdCiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4
IDJmNDI2NDg0NWFmYWUwMjc4OWU0NThmYWI4MTcyZjAzNGZjYTc0NjYuLjNkNmU3ZTkyMjhkODhj
NGQ2NzI2MTIzNmM2OTIxM2JmZGZmYzgxMTkgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNTkyLDE2ICs1OTIsMjMg
QEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoRHJpdmVyKToKICAgICAgICAgICAgICAgICB0ZXh0ID0g
Tm9uZQogCiAgICAgICAgIGVycm9yID0gJycuam9pbihlcnJvcikKLSAgICAgICAgY3Jhc2hlZF9w
cm9jZXNzX25hbWUgPSBOb25lCiAgICAgICAgICMgQ3VycmVudGx5IHRoZSBzdGFja3RyYWNlIGlz
IGluIHRoZSB0ZXh0IG91dHB1dCwgbm90IGVycm9yLCBzbyBhcHBlbmQgdGhlIHR3byB0b2dldGhl
ciBzbwogICAgICAgICAjIHRoYXQgd2UgY2FuIHNlZSBzdGFjayBpbiB0aGUgb3V0cHV0LiBTZWUg
aHR0cDovL3dlYmtpdC5vcmcvYi82NjgwNgogICAgICAgICAjIEZJWE1FOiBXZSByZWFsbHkgc2hv
dWxkIHByb3Blcmx5IGhhbmRsZSB0aGUgc3RkZXJyIG91dHB1dCBzZXBhcmF0ZWx5LgorICAgICAg
ICBjcmFzaF9sb2cgPSAnJworICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKKyAg
ICAgICAgY3Jhc2hlZF9waWQgPSBOb25lCiAgICAgICAgIGlmIGNyYXNoOgotICAgICAgICAgICAg
ZXJyb3IgPSBlcnJvciArIHN0cih0ZXh0KQogICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25h
bWUgPSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkKKyAgICAgICAgICAgIGlmIHNlbGYuX3Byb2M6
CisgICAgICAgICAgICAgICAgY3Jhc2hlZF9waWQgPSBzZWxmLl9wcm9jLnBpZAorICAgICAgICAg
ICAgY3Jhc2hfbG9nID0gc2VsZi5fcG9ydC5fZ2V0X2NyYXNoX2xvZyhjcmFzaGVkX3Byb2Nlc3Nf
bmFtZSwgY3Jhc2hlZF9waWQsIHRleHQsIGVycm9yKQorICAgICAgICAgICAgaWYgdGV4dDoKKyAg
ICAgICAgICAgICAgICBlcnJvciA9IGVycm9yICsgdGV4dAogCiAgICAgICAgIHJldHVybiBEcml2
ZXJPdXRwdXQodGV4dCwgb3V0cHV0X2ltYWdlLCBhY3R1YWxfY2hlY2tzdW0sIGF1ZGlvPWF1ZGlv
X2J5dGVzLAotICAgICAgICAgICAgY3Jhc2g9Y3Jhc2gsIGNyYXNoZWRfcHJvY2Vzc19uYW1lPWNy
YXNoZWRfcHJvY2Vzc19uYW1lLCB0ZXN0X3RpbWU9cnVuX3RpbWUsIHRpbWVvdXQ9dGltZW91dCwg
ZXJyb3I9ZXJyb3IpCisgICAgICAgICAgICBjcmFzaD1jcmFzaCwgY3Jhc2hlZF9wcm9jZXNzX25h
bWU9Y3Jhc2hlZF9wcm9jZXNzX25hbWUsIGNyYXNoZWRfcGlkPWNyYXNoZWRfcGlkLCBjcmFzaF9s
b2c9Y3Jhc2hfbG9nLAorICAgICAgICAgICAgdGVzdF90aW1lPXJ1bl90aW1lLCB0aW1lb3V0PXRp
bWVvdXQsIGVycm9yPWVycm9yKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHBpeGVsX3Rlc3RzLCBw
ZXJfdGVzdF9hcmdzKToKICAgICAgICAgaWYgbm90IHNlbGYuX3Byb2M6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91
bml0dGVzdC5weQppbmRleCBkM2QzMTFjNDg3NjViOTczNzVhNGQ5YjcwYWE0YjMyMzhhNTNiNTA0
Li4wYzQxOWQ3YzZjZDMzZmYwMDYyMzE3MzdmYzBlZGYyNjU4N2I3ZTlmIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fdW5pdHRlc3QucHkKQEAgLTkxLDE3ICs5MSwyMyBAQCBjbGFzcyBDaHJvbWl1bURyaXZlclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmRyaXZlci5fcHJvYy5zdGRvdXQu
cmVhZGxpbmUgPSBtb2NrX3JlYWRsaW5lCiAgICAgICAgIHNlbGYuX2Fzc2VydF93cml0ZV9jb21t
YW5kX2FuZF9yZWFkX2xpbmUoZXhwZWN0ZWRfY3Jhc2g9VHJ1ZSkKIAotICAgIGRlZiB0ZXN0X2Ny
YXNoZWRfcHJvY2Vzc19uYW1lKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NyYXNoX2xvZyhzZWxmKToK
ICAgICAgICAgc2VsZi5kcml2ZXIuX3Byb2MgPSBNb2NrKCkKIAogICAgICAgICAjIFNpbXVsYXRl
IGEgY3Jhc2ggYnkgaGF2aW5nIHN0ZG91dCBjbG9zZSB1bmV4cGVjdGVkbHkuCiAgICAgICAgIGRl
ZiBtb2NrX3JlYWRsaW5lKCk6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCiAgICAgICAgIHNl
bGYuZHJpdmVyLl9wcm9jLnN0ZG91dC5yZWFkbGluZSA9IG1vY2tfcmVhZGxpbmUKKyAgICAgICAg
c2VsZi5kcml2ZXIuX3Byb2MucGlkID0gMTIzNAogCiAgICAgICAgIHNlbGYuZHJpdmVyLnRlc3Rf
dG9fdXJpID0gbGFtYmRhIHRlc3Q6ICdtb2NrdGVzdHVyaScKKyAgICAgICAgc2VsZi5kcml2ZXIu
X3BvcnQuZHJpdmVyX25hbWUgPSBsYW1iZGE6ICdtb2NrZHJpdmVyJworICAgICAgICBzZWxmLmRy
aXZlci5fcG9ydC5fZ2V0X2NyYXNoX2xvZyA9IGxhbWJkYSBuYW1lLCBwaWQsIG91dCwgZXJyOiAn
bW9ja2NyYXNobG9nJwogICAgICAgICBkcml2ZXJfb3V0cHV0ID0gc2VsZi5kcml2ZXIucnVuX3Rl
c3QoRHJpdmVySW5wdXQodGVzdF9uYW1lPSdzb21lL3Rlc3QuaHRtbCcsIHRpbWVvdXQ9MSwgaW1h
Z2VfaGFzaD1Ob25lLCBpc19yZWZ0ZXN0PUZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLmRyaXZlci5fcG9ydC5kcml2ZXJfbmFtZSgpLCBkcml2ZXJfb3V0cHV0LmNyYXNoZWRf
cHJvY2Vzc19uYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZHJpdmVyX291dHB1dC5jcmFz
aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2ZXJfb3V0cHV0LmNyYXNoZWRfcHJvY2Vz
c19uYW1lLCAnbW9ja2RyaXZlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJpdmVyX291
dHB1dC5jcmFzaGVkX3BpZCwgMTIzNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2ZXJf
b3V0cHV0LmNyYXNoX2xvZywgJ21vY2tjcmFzaGxvZycpCiAKICAgICBkZWYgdGVzdF9zdG9wKHNl
bGYpOgogICAgICAgICBzZWxmLnBpZCA9IE5vbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkKaW5kZXggZmE2ZTgxYjJlNjNhYjkzZTFm
YTA3NDBlODhjNDE1OWUxMjc2MDFiYS4uZTFkOGE0YmRjNTljZDMyM2NlZDhiODc2ZGY4YTY0ZmYz
NzhiNzQ0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9kcml2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9kcml2ZXIucHkKQEAgLTY0LDcgKzY0LDggQEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9iamVj
dCk6CiAgICAgc3RyaXBfcGF0dGVybnMuYXBwZW5kKChyZS5jb21waWxlKCdzY3JvbGxIZWlnaHQg
WzAtOV0rJyksICdzY3JvbGxIZWlnaHQnKSkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0
LCBpbWFnZSwgaW1hZ2VfaGFzaCwgYXVkaW8sIGNyYXNoPUZhbHNlLAotICAgICAgICAgICAgdGVz
dF90aW1lPTAsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnLCBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1O
b25lKToKKyAgICAgICAgICAgIHRlc3RfdGltZT0wLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJywg
Y3Jhc2hlZF9wcm9jZXNzX25hbWU9Jz8/JywKKyAgICAgICAgICAgIGNyYXNoZWRfcGlkPU5vbmUs
IGNyYXNoX2xvZz1Ob25lKToKICAgICAgICAgIyBGSVhNRTogQXJncyBjb3VsZCBiZSByZW5hbWVk
IHRvIGJldHRlciBjbGFyaWZ5IHdoYXQgdGhleSBkby4KICAgICAgICAgc2VsZi50ZXh0ID0gdGV4
dAogICAgICAgICBzZWxmLmltYWdlID0gaW1hZ2UgICMgTWF5IGJlIGVtcHR5LXN0cmluZyBpZiB0
aGUgdGVzdCBjcmFzaGVzLgpAQCAtNzMsNiArNzQsOCBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5hdWRpbyA9IGF1ZGlvICAjIEJpbmFyeSBmb3JtYXQgaXMgcG9y
dC1kZXBlbmRlbnQuCiAgICAgICAgIHNlbGYuY3Jhc2ggPSBjcmFzaAogICAgICAgICBzZWxmLmNy
YXNoZWRfcHJvY2Vzc19uYW1lID0gY3Jhc2hlZF9wcm9jZXNzX25hbWUKKyAgICAgICAgc2VsZi5j
cmFzaGVkX3BpZCA9IGNyYXNoZWRfcGlkCisgICAgICAgIHNlbGYuY3Jhc2hfbG9nID0gY3Jhc2hf
bG9nCiAgICAgICAgIHNlbGYudGVzdF90aW1lID0gdGVzdF90aW1lCiAgICAgICAgIHNlbGYudGlt
ZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5lcnJvciA9IGVycm9yICAjIHN0ZGVyciBvdXRw
dXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bWFjLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkK
aW5kZXggNWFhOTgyNmQzMDk3MDc3NjVmMmFjZTA0OTg4YTlkZmM2OTc1NTg2ZS4uYTVhNjM1MWRj
ZDU4NDMzMmQ2ZTViYzczOWJlNTllYTFlNWRjOTBkMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAgLTI4LDcgKzI4LDkgQEAKIAogaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCByZQoraW1wb3J0IHRpbWUKIAorZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmNyYXNobG9ncyBpbXBvcnQgQ3Jhc2hMb2dzCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5wb3J0LmFwcGxlIGltcG9ydCBBcHBsZVBvcnQKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLnBvcnQubGVha2RldGVjdG9yIGltcG9ydCBMZWFrRGV0ZWN0b3IKIApAQCAtOTUsMTAg
Kzk3LDYgQEAgY2xhc3MgTWFjUG9ydChBcHBsZVBvcnQpOgogICAgIGRlZiBpc19saW9uKHNlbGYp
OgogICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbiA9PSAibGlvbiIKIAotICAgICMgQmVsb25n
cyBvbiBhIFBsYXRmb3JtIG9iamVjdC4KLSAgICBkZWYgaXNfY3Jhc2hfcmVwb3J0ZXIoc2VsZiwg
cHJvY2Vzc19uYW1lKToKLSAgICAgICAgcmV0dXJuIHJlLnNlYXJjaChyJ1JlcG9ydENyYXNoJywg
cHJvY2Vzc19uYW1lKQotCiAgICAgZGVmIGRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgog
ICAgICAgICBpZiBzZWxmLmlzX3Nub3dsZW9wYXJkKCk6CiAgICAgICAgICAgICBfbG9nLndhcm4o
IkNhbm5vdCBydW4gdGVzdHMgaW4gcGFyYWxsZWwgb24gU25vdyBMZW9wYXJkIGR1ZSB0byByZGFy
Oi8vcHJvYmxlbS8xMDYyMTUyNS4iKQpAQCAtMTU4LDMgKzE1NiwyMyBAQCBjbGFzcyBNYWNQb3J0
KEFwcGxlUG9ydCk6CiAKICAgICBkZWYgcmVsZWFzZV9odHRwX2xvY2soc2VsZik6CiAgICAgICAg
IHBhc3MKKworICAgIGRlZiBfZ2V0X2NyYXNoX2xvZyhzZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwg
c3RkZXJyKToKKyAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG8gc2xvdy1zcGluIGhlcmUgYW5kIHdh
aXQsIHNpbmNlIGl0IGFwcGVhcnMgdGhlIHRpbWUKKyAgICAgICAgIyBSZXBvcnRDcmFzaCB0YWtl
cyB0byBhY3R1YWxseSB3cml0ZSBhbmQgZmx1c2ggdGhlIGZpbGUgdmFyaWVzIHdoZW4gdGhlcmUg
YXJlCisgICAgICAgICMgbG90cyBvZiBzaW11bHRhbmVvdXMgY3Jhc2hlcyBnb2luZyBvbi4KKyAg
ICAgICAgIyBGSVhNRTogU2hvdWxkIG1vc3Qgb2YgdGhpcyBiZSBtb3ZlZCBpbnRvIENyYXNoTG9n
cygpPworICAgICAgICBjcmFzaF9sb2cgPSAnJworICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hM
b2dzKHNlbGYuX2ZpbGVzeXN0ZW0pCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAg
ICAgbm93ID0gc3RhcnQKKyAgICAgICAgQ1JBU0hfTE9HX1dBSVRfVElNRU9VVF9TRUNTID0gNSAq
IGludChzZWxmLmdldF9vcHRpb24oJ2NoaWxkX3Byb2Nlc3NlcycpKQorICAgICAgICB3aGlsZSBu
b3QgY3Jhc2hfbG9nIGFuZCBub3cgPCBzdGFydCArIENSQVNIX0xPR19XQUlUX1RJTUVPVVRfU0VD
UzoKKyAgICAgICAgICAgIGNyYXNoX2xvZyA9IGNyYXNoX2xvZ3MuZmluZF9uZXdlc3RfbG9nKG5h
bWUsIHBpZCkKKyAgICAgICAgICAgIGlmIG5vdCBjcmFzaF9sb2cgb3Igbm90IFtsaW5lIGZvciBs
aW5lIGluIGNyYXNoX2xvZy5zcGxpdGxpbmVzKCkgaWYgbm90IGxpbmUuc3RhcnRzd2l0aCgnRVJS
T1InKV06CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCisgICAgICAgICAgICAgICAg
bm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgaWYgbm90IGNyYXNoX2xvZzoKKyAgICAgICAgICAg
IGNyYXNoX2xvZyA9ICdubyBjcmFzaCBsb2cgZm91bmQgZm9yICVzOiVkJyAlIChuYW1lLCBwaWQp
CisgICAgICAgICAgICBfbG9nLndhcm5pbmcoY3Jhc2hfbG9nKQorICAgICAgICByZXR1cm4gY3Jh
c2hfbG9nCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3NlcnZlcl9wcm9jZXNzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQppbmRleCA2YzQ4ZmVmNjRiMDEzMGE0ODhjM2U4MzY1
MzVjNzc2ZGM0ZWM0YTY2Li42ODlmYTdmMzAwMGY5NjVjMTNkYjAxZjcyZmUyM2Y4ZmIxNmEwMWM4
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Nl
cnZlcl9wcm9jZXNzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgU2VydmVyUHJv
Y2VzczoKICAgICAgICAgc2VsZi5fcHJvYyA9IE5vbmUKICAgICAgICAgc2VsZi5fb3V0cHV0ID0g
c3RyKCkgICMgYnl0ZXNhcnJheSgpIG9uY2Ugd2UgcmVxdWlyZSBQeXRob24gMi42CiAgICAgICAg
IHNlbGYuX2Vycm9yID0gc3RyKCkgICMgYnl0ZXNhcnJheSgpIG9uY2Ugd2UgcmVxdWlyZSBQeXRo
b24gMi42Ci0gICAgICAgIHNlbGYuc2V0X2NyYXNoZWQoRmFsc2UpCisgICAgICAgIHNlbGYuX2Ny
YXNoZWQgPSBGYWxzZQogICAgICAgICBzZWxmLnRpbWVkX291dCA9IEZhbHNlCiAKICAgICBkZWYg
cHJvY2Vzc19uYW1lKHNlbGYpOgpAQCAtOTQsMjIgKzk0LDE3IEBAIGNsYXNzIFNlcnZlclByb2Nl
c3M6CiAgICAgICAgIGZsID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkwpCiAgICAgICAg
IGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX1NFVEZMLCBmbCB8IG9zLk9fTk9OQkxPQ0spCiAKLSAg
ICBkZWYgaGFuZGxlX2ludGVycnVwdChzZWxmKToKKyAgICBkZWYgX2hhbmRsZV9wb3NzaWJsZV9p
bnRlcnJ1cHQoc2VsZik6CiAgICAgICAgICIiIlRoaXMgcm91dGluZSBjaGVja3MgdG8gc2VlIGlm
IHRoZSBwcm9jZXNzIGNyYXNoZWQgb3IgZXhpdGVkCiAgICAgICAgIGJlY2F1c2Ugb2YgYSBrZXli
b2FyZCBpbnRlcnJ1cHQgYW5kIHJhaXNlcyBLZXlib2FyZEludGVycnVwdAogICAgICAgICBhY2Nv
cmRpbmdseS4iIiIKLSAgICAgICAgaWYgc2VsZi5jcmFzaGVkOgotICAgICAgICAgICAgIyBUaGlz
IGlzIGhleCBjb2RlIDB4YzAwMDAwMWQsIHdoaWNoIGlzIHVzZWQgZm9yIGFicnVwdAotICAgICAg
ICAgICAgIyB0ZXJtaW5hdGlvbi4gVGhpcyBoYXBwZW5zIGlmIHdlIGhpdCBjdHJsK2MgZnJvbSB0
aGUgcHJvbXB0Ci0gICAgICAgICAgICAjIGFuZCB3ZSBoYXBwZW4gdG8gYmUgd2FpdGluZyBvbiB0
aGUgRHVtcFJlbmRlclRyZWUuCi0gICAgICAgICAgICAjIHNkb3lvbjogTm90IHN1cmUgZm9yIHdo
aWNoIE9TIGFuZCBpbiB3aGF0IGNpcmN1bXN0YW5jZXMgdGhlCi0gICAgICAgICAgICAjIGFib3Zl
IGNvZGUgaXMgdmFsaWQuIFdoYXQgd29ya3MgZm9yIG1lIHVuZGVyIExpbnV4IHRvIGRldGVjdAot
ICAgICAgICAgICAgIyBjdHJsK2MgaXMgZm9yIHRoZSBzdWJwcm9jZXNzIHJldHVybmNvZGUgdG8g
YmUgbmVnYXRpdmUKLSAgICAgICAgICAgICMgU0lHSU5ULiBBbmQgdGhhdCBhZ3JlZXMgd2l0aCB0
aGUgc3VicHJvY2VzcyBkb2N1bWVudGF0aW9uLgotICAgICAgICAgICAgaWYgKC0xMDczNzQxNTEw
ID09IHNlbGYuX3Byb2MucmV0dXJuY29kZSBvcgotICAgICAgICAgICAgICAgIC0gc2lnbmFsLlNJ
R0lOVCA9PSBzZWxmLl9wcm9jLnJldHVybmNvZGUpOgotICAgICAgICAgICAgICAgIHJhaXNlIEtl
eWJvYXJkSW50ZXJydXB0Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIyBGSVhNRTogTGlu
dXggYW5kIE1hYyBzZXQgdGhlIHJldHVybmNvZGUgdG8gLXNpZ25hbC5TSUdJTlQgaWYgYQorICAg
ICAgICAjIHN1YnByb2Nlc3MgaXMga2lsbGVkIHdpdGggYSBjdHJsXkMuICBQcmV2aW91cyBjb21t
ZW50cyBpbiB0aGlzCisgICAgICAgICMgcm91dGluZSBzYWlkIHRoYXQgc3VwcG9zZWRseSBXaW5k
b3dzIHJldHVybnMgMHhjMDAwMDAxZCwgYnV0IHRoYXQncyBub3Qgd2hhdAorICAgICAgICAjIC0x
MDczNzQxNTEwIGV2YWx1YXRlcyB0by4gRmlndXJlIG91dCB3aGF0IHRoZSByaWdodCB2YWx1ZSBp
cworICAgICAgICAjIGZvciB3aW4zMiBhbmQgY3lnd2luIGhlcmUgLi4uCisgICAgICAgIGlmIHNl
bGYuX3Byb2MucmV0dXJuY29kZSBpbiAoLTEwNzM3NDE1MTAsIC1zaWduYWwuU0lHSU5UKToKKyAg
ICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0CiAKICAgICBkZWYgcG9sbChzZWxmKToK
ICAgICAgICAgIiIiQ2hlY2sgdG8gc2VlIGlmIHRoZSB1bmRlcmx5aW5nIHByb2Nlc3MgaXMgcnVu
bmluZzsgcmV0dXJucyBOb25lCkBAIC0xMjYsOSArMTIxLDEwIEBAIGNsYXNzIFNlcnZlclByb2Nl
c3M6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3Byb2Muc3RkaW4ud3JpdGUoYnl0
ZXMpCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorICAgICAgICAgICAgcGlkID0gc2VsZi5f
cHJvYy5waWQKICAgICAgICAgICAgIHNlbGYuc3RvcCgpCiAgICAgICAgICAgICAjIHN0b3AoKSBj
YWxscyBfcmVzZXQoKSwgc28gd2UgaGF2ZSB0byBzZXQgY3Jhc2hlZCB0byBUcnVlIGFmdGVyIGNh
bGxpbmcgc3RvcCgpLgotICAgICAgICAgICAgc2VsZi5zZXRfY3Jhc2hlZChUcnVlKQorICAgICAg
ICAgICAgc2VsZi5fY3Jhc2hlZCA9IFRydWUKIAogICAgIGRlZiBfcG9wX3N0ZG91dF9saW5lX2lm
X3JlYWR5KHNlbGYpOgogICAgICAgICBpbmRleF9hZnRlcl9uZXdsaW5lID0gc2VsZi5fb3V0cHV0
LmZpbmQoJ1xuJykgKyAxCkBAIC0xNzgsMTEgKzE3NCw2IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6
CiAKICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWQoZGVhZGxpbmUsIHJldHJpZXZlX2J5dGVzX2Zy
b21fc3Rkb3V0X2J1ZmZlcikKIAotICAgIGRlZiBfY2hlY2tfZm9yX2NyYXNoKHNlbGYsIHdhaXRf
Zm9yX2NyYXNoX3JlcG9ydGVyPVRydWUpOgotICAgICAgICBpZiBzZWxmLnBvbGwoKSAhPSBOb25l
OgotICAgICAgICAgICAgc2VsZi5zZXRfY3Jhc2hlZChUcnVlLCB3YWl0X2Zvcl9jcmFzaF9yZXBv
cnRlcikKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlX2ludGVycnVwdCgpCi0KICAgICBkZWYgX2xv
ZyhzZWxmLCBtZXNzYWdlKToKICAgICAgICAgIyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjaywgYnV0
IHdlIGZpcnN0IGxvZyBhIGJsYW5rIGxpbmUgdG8gYXZvaWQKICAgICAgICAgIyBtZXNzaW5nIHVw
IHRoZSBtYXN0ZXIgcHJvY2VzcydzIG91dHB1dC4KQEAgLTIwNiwxMCArMTk3LDYgQEAgY2xhc3Mg
U2VydmVyUHJvY2VzczoKICAgICAgICAgICAgIHNlbGYuX2xvZygnVW5hYmxlIHRvIHNhbXBsZSBw
cm9jZXNzLicpCiAKICAgICBkZWYgX2hhbmRsZV90aW1lb3V0KHNlbGYpOgotICAgICAgICBzZWxm
Ll9leGVjdXRpdmUud2FpdF9uZXdlc3Qoc2VsZi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcikKLSAg
ICAgICAgc2VsZi5fY2hlY2tfZm9yX2NyYXNoKHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyPUZhbHNl
KQotICAgICAgICBpZiBzZWxmLmNyYXNoZWQ6Ci0gICAgICAgICAgICByZXR1cm4KICAgICAgICAg
c2VsZi50aW1lZF9vdXQgPSBUcnVlCiAgICAgICAgIHNlbGYuX3NhbXBsZSgpCiAKQEAgLTIzOCwy
MCArMjI1LDIyIEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgICAgICAgICAjIEZJWE1FOiBX
aHkgZG8gd2UgaWdub3JlIGFsbCBJT0Vycm9ycyBoZXJlPwogICAgICAgICAgICAgcGFzcwogCi0g
ICAgZGVmIF9jaGVja19mb3JfYWJvcnQoc2VsZiwgZGVhZGxpbmUpOgotICAgICAgICBzZWxmLl9j
aGVja19mb3JfY3Jhc2goKQotCi0gICAgICAgIGlmIHRpbWUudGltZSgpID4gZGVhZGxpbmU6Ci0g
ICAgICAgICAgICBzZWxmLl9oYW5kbGVfdGltZW91dCgpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYu
Y3Jhc2hlZCBvciBzZWxmLnRpbWVkX291dAorICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToKKyAg
ICAgICAgaWYgbm90IHNlbGYuX2NyYXNoZWQgYW5kIHNlbGYucG9sbCgpOgorICAgICAgICAgICAg
c2VsZi5fY3Jhc2hlZCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9wb3NzaWJsZV9p
bnRlcnJ1cHQoKQorICAgICAgICByZXR1cm4gc2VsZi5fY3Jhc2hlZAogCiAgICAgIyBUaGlzIHJl
YWQgZnVuY3Rpb24gaXMgYSBiaXQgb2RkbHktZGVzaWduZWQsIGFzIGl0IHBvbGxzIGJvdGggc3Rk
b3V0IGFuZCBzdGRlcnIsIHlldAogICAgICMgb25seSByZWFkcy9yZXR1cm5zIGZyb20gb25lIG9m
IHRoZW0gKGJ1ZmZlcmluZyBib3RoIGluIGxvY2FsIHNlbGYuX291dHB1dC9zZWxmLl9lcnJvciku
CiAgICAgIyBJdCBtaWdodCBiZSBjbGVhbmVyIHRvIHBhc3MgaW4gdGhlIGZpbGUgZGVzY3JpcHRv
ciB0byBwb2xsIGluc3RlYWQuCiAgICAgZGVmIF9yZWFkKHNlbGYsIGRlYWRsaW5lLCBmZXRjaF9i
eXRlc19mcm9tX2J1ZmZlcnNfY2FsbGJhY2spOgogICAgICAgICB3aGlsZSBUcnVlOgotICAgICAg
ICAgICAgaWYgc2VsZi5fY2hlY2tfZm9yX2Fib3J0KGRlYWRsaW5lKToKKyAgICAgICAgICAgIGlm
IHNlbGYuaGFzX2NyYXNoZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAg
ICAgICAgICBpZiB0aW1lLnRpbWUoKSA+IGRlYWRsaW5lOgorICAgICAgICAgICAgICAgIHNlbGYu
X2hhbmRsZV90aW1lb3V0KCkKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAg
ICAgICBieXRlcyA9IGZldGNoX2J5dGVzX2Zyb21fYnVmZmVyc19jYWxsYmFjaygpCkBAIC0yOTIs
OSArMjgxLDMgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgICAgICAgICBzZWxmLl9l
eGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlkKQogICAgICAgICAgICAgICAgIF9s
b2cud2FybmluZygna2lsbGVkJykKICAgICAgICAgc2VsZi5fcmVzZXQoKQotCi0gICAgZGVmIHNl
dF9jcmFzaGVkKHNlbGYsIGNyYXNoZWQsIHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyPVRydWUpOgot
ICAgICAgICBzZWxmLmNyYXNoZWQgPSBjcmFzaGVkCi0gICAgICAgIGlmIG5vdCBzZWxmLmNyYXNo
ZWQgb3Igbm90IHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyOgotICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS53YWl0X25ld2VzdChzZWxmLl9wb3J0LmlzX2NyYXNoX3Jl
cG9ydGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3NfdW5pdHRlc3QucHkKaW5kZXggY2FlNmIw
MmM1OTQzNjFmYTQ2ODQwNDAyNGUyOTY4YzAxZTlkNTA5NC4uZjJiYzk5Njg2NTE0ZTNjNDYxMzM5
MWE5NjEzOWYxNzg0YmUwMGI2OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0
LnB5CkBAIC01MCw5ICs1MCw2IEBAIGNsYXNzIFRyaXZpYWxNb2NrUG9ydChvYmplY3QpOgogICAg
IGRlZiBjaGVja19mb3JfbGVha3Moc2VsZiwgcHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCk6CiAg
ICAgICAgIHBhc3MKIAotICAgIGRlZiBpc19jcmFzaF9yZXBvcnRlcihzZWxmLCBwcm9jZXNzX25h
bWUpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQogCiBjbGFzcyBNb2NrRmlsZShvYmplY3QpOgog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXJfcHJvY2Vzcyk6CkBAIC05MSw3ICs4OCw3IEBA
IGNsYXNzIFRlc3RTZXJ2ZXJQcm9jZXNzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVz
dF9icm9rZW5fcGlwZShzZWxmKToKICAgICAgICAgc2VydmVyX3Byb2Nlc3MgPSBGYWtlU2VydmVy
UHJvY2Vzcyhwb3J0X29iaj1Ucml2aWFsTW9ja1BvcnQoKSwgbmFtZT0idGVzdCIsIGNtZD1bInRl
c3QiXSkKICAgICAgICAgc2VydmVyX3Byb2Nlc3Mud3JpdGUoInNob3VsZCBicmVhayIpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoc2VydmVyX3Byb2Nlc3MuaGFzX2NyYXNoZWQoKSkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoc2VydmVyX3Byb2Nlc3MuX3Byb2MsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHNlcnZlcl9wcm9jZXNzLmJyb2tlbl9waXBlcywgW3NlcnZlcl9wcm9jZXNzLnN0
ZGluXSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90
ZXN0LnB5CmluZGV4IDIxNjM3MjMwNTJiZDA0MWJjYzNjYTg3MWNkOGJhMzhhNzUxYmE0OGEuLmYw
OGM1NzQyNDM1ZWI4YzhlOGEzOTA4MTc0MGE4NWMwNmI5MTcwNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTM1LDYgKzM1LDcg
QEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgUG9ydCwgRHJpdmVyLCBE
cml2ZXJPdXRwdXQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuYmFzZSBpbXBvcnQg
VmlydHVhbFRlc3RTdWl0ZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3Rf
Y29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hsb2dzIGltcG9ydCBDcmFzaExvZ3MKIAogCiAjIFRo
aXMgc2V0cyBiYXNpYyBleHBlY3RhdGlvbnMgZm9yIGEgdGVzdC4gRWFjaCBpbmRpdmlkdWFsIGV4
cGVjdGF0aW9uCkBAIC01MTksMTMgKzUyMCwyMiBAQCBjbGFzcyBUZXN0RHJpdmVyKERyaXZlcik6
CiAgICAgICAgIGlmIHRlc3QuYWN0dWFsX2F1ZGlvOgogICAgICAgICAgICAgYXVkaW8gPSBiYXNl
NjQuYjY0ZGVjb2RlKHRlc3QuYWN0dWFsX2F1ZGlvKQogICAgICAgICBjcmFzaGVkX3Byb2Nlc3Nf
bmFtZSA9IE5vbmUKKyAgICAgICAgY3Jhc2hlZF9waWQgPSBOb25lCiAgICAgICAgIGlmIHRlc3Qu
Y3Jhc2g6CiAgICAgICAgICAgICBjcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IHNlbGYuX3BvcnQuZHJp
dmVyX25hbWUoKQorICAgICAgICAgICAgY3Jhc2hlZF9waWQgPSAxCiAgICAgICAgIGVsaWYgdGVz
dC53ZWJfcHJvY2Vzc19jcmFzaDoKICAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lID0g
J1dlYlByb2Nlc3MnCi0gICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQoYWN0dWFsX3RleHQsIHRl
c3QuYWN0dWFsX2ltYWdlLAotICAgICAgICAgICAgdGVzdC5hY3R1YWxfY2hlY2tzdW0sIGF1ZGlv
LCBjcmFzaD10ZXN0LmNyYXNoIG9yIHRlc3Qud2ViX3Byb2Nlc3NfY3Jhc2gsCi0gICAgICAgICAg
ICBjcmFzaGVkX3Byb2Nlc3NfbmFtZT1jcmFzaGVkX3Byb2Nlc3NfbmFtZSwKKyAgICAgICAgICAg
IGNyYXNoZWRfcGlkID0gMgorCisgICAgICAgIGNyYXNoX2xvZyA9ICcnCisgICAgICAgIGlmIGNy
YXNoZWRfcHJvY2Vzc19uYW1lOgorICAgICAgICAgICAgY3Jhc2hfbG9ncyA9IENyYXNoTG9ncyhz
ZWxmLl9wb3J0Ll9maWxlc3lzdGVtKQorICAgICAgICAgICAgY3Jhc2hfbG9nID0gY3Jhc2hfbG9n
cy5maW5kX25ld2VzdF9sb2coY3Jhc2hlZF9wcm9jZXNzX25hbWUsIE5vbmUpIG9yICcnCisKKyAg
ICAgICAgcmV0dXJuIERyaXZlck91dHB1dChhY3R1YWxfdGV4dCwgdGVzdC5hY3R1YWxfaW1hZ2Us
IHRlc3QuYWN0dWFsX2NoZWNrc3VtLCBhdWRpbywKKyAgICAgICAgICAgIGNyYXNoPXRlc3QuY3Jh
c2ggb3IgdGVzdC53ZWJfcHJvY2Vzc19jcmFzaCwgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Y3Jhc2hl
ZF9wcm9jZXNzX25hbWUsCisgICAgICAgICAgICBjcmFzaGVkX3BpZD1jcmFzaGVkX3BpZCwgY3Jh
c2hfbG9nPWNyYXNoX2xvZywKICAgICAgICAgICAgIHRlc3RfdGltZT10aW1lLnRpbWUoKSAtIHN0
YXJ0X3RpbWUsIHRpbWVvdXQ9dGVzdC50aW1lb3V0LCBlcnJvcj10ZXN0LmVycm9yKQogCiAgICAg
ZGVmIHN0YXJ0KHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggNmU0
YTE2YmRhNDcwZjlkZGUyNzUyMTBiYmZlMjk0NTRmY2Y2YWM1OC4uZjg3YTg0MTAzMmNkMjNhMTc5
NDNiNjdjNWQ3ZTgxMDZiNWVmZmNiNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKQEAgLTE5NCw3ICsxOTQsNyBAQCBjbGFzcyBX
ZWJLaXRQb3J0KFBvcnQpOgogCiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBvdXRw
dXQgPSBzcC5yZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKQotICAgICAgICAgICAgaWYgc3AudGlt
ZWRfb3V0IG9yIHNwLmNyYXNoZWQgb3Igbm90IG91dHB1dDoKKyAgICAgICAgICAgIGlmIHNwLnRp
bWVkX291dCBvciBzcC5oYXNfY3Jhc2hlZCgpIG9yIG5vdCBvdXRwdXQ6CiAgICAgICAgICAgICAg
ICAgYnJlYWsKIAogICAgICAgICAgICAgaWYgb3V0cHV0LnN0YXJ0c3dpdGgoJ2RpZmYnKTogICMg
VGhpcyBpcyB0aGUgbGFzdCBsaW5lIEltYWdlRGlmZiBwcmludHMuCkBAIC0yMDksNyArMjA5LDcg
QEAgY2xhc3MgV2ViS2l0UG9ydChQb3J0KToKIAogICAgICAgICBpZiBzcC50aW1lZF9vdXQ6CiAg
ICAgICAgICAgICBfbG9nLmVycm9yKCJJbWFnZURpZmYgdGltZWQgb3V0IikKLSAgICAgICAgaWYg
c3AuY3Jhc2hlZDoKKyAgICAgICAgaWYgc3AuaGFzX2NyYXNoZWQoKToKICAgICAgICAgICAgIF9s
b2cuZXJyb3IoIkltYWdlRGlmZiBjcmFzaGVkIikKICAgICAgICAgIyBGSVhNRTogVGhlcmUgaXMg
bm8gbmVlZCB0byBzaHV0IGRvd24gdGhlIEltYWdlRGlmZiBzZXJ2ZXIgYWZ0ZXIgZXZlcnkgZGlm
Zi4KICAgICAgICAgc3Auc3RvcCgpCkBAIC00MzcsNyArNDM3LDcgQEAgY2xhc3MgV2ViS2l0RHJp
dmVyKERyaXZlcik6CiAgICAgICAgICMgIiNDUkFTSEVEIC0gUFJPQ0VTU05BTUUiLiAgU2luY2Ug
dGhvc2UgY2FuIGhhcHBlbiBhdCBhbnkgdGltZQogICAgICAgICAjIGFuZCBTZXJ2ZXJQcm9jZXNz
IHdvbid0IGJlIGF3YXJlIG9mIHRoZW0gKHNpbmNlIHRoZSBhY3R1YWwgdG9vbAogICAgICAgICAj
IGRpZG4ndCBjcmFzaCwganVzdCBhIHN1YnByb2Nlc3MpIHdlIHJlY29yZCB0aGUgY3Jhc2hlZCBz
dWJwcm9jZXNzIG5hbWUgaGVyZS4KLSAgICAgICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25h
bWUgPSBOb25lCisgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQogCiAg
ICAgICAgICMgc3RkZXJyIHJlYWRpbmcgaXMgc2NvcGVkIG9uIGEgcGVyLXRlc3QgKG5vdCBwZXIt
YmxvY2spIGJhc2lzLCBzbyB3ZSBzdG9yZSB0aGUgYWNjdW11bGF0ZWQKICAgICAgICAgIyBzdGRl
cnIgb3V0cHV0LCBhcyB3ZWxsIGFzIGlmIHdlJ3ZlIHNlZW4gI0VPRiBvbiB0aGlzIGRyaXZlciBp
bnN0YW5jZS4KQEAgLTQ4MywzNyArNDgzLDE5IEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIp
OgogICAgICAgICAjIEZJWE1FOiBXZSdyZSBhc3N1bWluZyB0aGF0IFdlYktpdFRlc3RSdW5uZXIg
Y2hlY2tzIHRoaXMgRHVtcFJlbmRlclRyZWUtbmFtZWQgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAg
ICAgICAgIGVudmlyb25tZW50WydEVU1QUkVOREVSVFJFRV9URU1QJ10gPSBzdHIoc2VsZi5fZHJp
dmVyX3RlbXBkaXIpCiAgICAgICAgIGVudmlyb25tZW50WydMT0NBTF9SRVNPVVJDRV9ST09UJ10g
PSBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKQotICAgICAgICBzZWxmLl9jcmFzaGVkX3N1
YnByb2Nlc3NfbmFtZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUg
PSBOb25lCisgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gTm9uZQogICAgICAgICBzZWxmLl9z
ZXJ2ZXJfcHJvY2VzcyA9IHNlcnZlcl9wcm9jZXNzLlNlcnZlclByb2Nlc3Moc2VsZi5fcG9ydCwg
c2VydmVyX25hbWUsIHNlbGYuY21kX2xpbmUocGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpLCBl
bnZpcm9ubWVudCkKIAogICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToKICAgICAgICAgaWYgc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAg
ICAgICByZXR1cm4gc2VsZi5fc2VydmVyX3Byb2Nlc3MucG9sbCgpIGlzIG5vdCBOb25lCi0KLSAg
ICBkZWYgX2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2goc2VsZiwgZXJyb3JfbGluZSk6Ci0gICAgICAg
IGlmIGVycm9yX2xpbmUgPT0gIiNDUkFTSEVEXG4iOgotICAgICAgICAgICAgIyBUaGlzIGlzIHVz
ZWQgb24gV2luZG93cyB0byByZXBvcnQgdGhhdCB0aGUgcHJvY2VzcyBoYXMgY3Jhc2hlZAotICAg
ICAgICAgICAgIyBTZWUgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjU1MzcuCi0g
ICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zZXRfY3Jhc2hlZChUcnVlKQotICAgICAg
ICBlbGlmIGVycm9yX2xpbmUgPT0gIiNDUkFTSEVEIC0gV2ViUHJvY2Vzc1xuIjoKLSAgICAgICAg
ICAgICMgV2ViS2l0VGVzdFJ1bm5lciB1c2VzIHRoaXMgdG8gcmVwb3J0IHRoYXQgdGhlIFdlYlBy
b2Nlc3Mgc3VicHJvY2VzcyBjcmFzaGVkLgotICAgICAgICAgICAgc2VsZi5fc3VicHJvY2Vzc19j
cmFzaGVkKCJXZWJQcm9jZXNzIikKLSAgICAgICAgcmV0dXJuIHNlbGYuX2RldGVjdGVkX2NyYXNo
KCkKLQotICAgIGRlZiBfZGV0ZWN0ZWRfY3Jhc2goc2VsZik6Ci0gICAgICAgICMgV2UgY2FuJ3Qg
anVzdCBjaGVjayBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkIGJlY2F1c2UgV2ViS2l0VGVz
dFJ1bm5lcgotICAgICAgICAjIGNhbiByZXBvcnQgc3VicHJvY2VzcyBjcmFzaGVzIGF0IGFueSB0
aW1lIGJ5IHByaW50aW5nCi0gICAgICAgICMgIiNDUkFTSEVEIC0gV2ViUHJvY2VzcyIsIHdlIHdh
bnQgdG8gY291bnQgdGhvc2UgYXMgY3Jhc2hlcyBhcyB3ZWxsLgotICAgICAgICByZXR1cm4gc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZCBvciBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFt
ZQotCi0gICAgZGVmIF9zdWJwcm9jZXNzX2NyYXNoZWQoc2VsZiwgc3VicHJvY2Vzc19uYW1lKToK
LSAgICAgICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgPSBzdWJwcm9jZXNzX25hbWUK
LQotICAgIGRlZiBfY3Jhc2hlZF9wcm9jZXNzX25hbWUoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBz
ZWxmLl9kZXRlY3RlZF9jcmFzaCgpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAg
cmV0dXJuIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lIG9yIHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnByb2Nlc3NfbmFtZSgpCisgICAgICAgIGlmIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1l
OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nl
c3MuaGFzX2NyYXNoZWQoKToKKyAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1l
ID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MubmFtZSgpCisgICAgICAgICAgICBzZWxmLl9jcmFzaGVk
X3BpZCA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnBpZCgpCisgICAgICAgICAgICByZXR1cm4gVHJ1
ZQogCiAgICAgZGVmIF9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KHNlbGYsIGRyaXZlcl9pbnB1
dCk6CiAgICAgICAgIGlmIHNlbGYuaXNfaHR0cF90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUp
OgpAQCAtNTYyLDEwICs1NDQsMTUgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAg
ICAgICMgRklYTUU6IFdlIG1heSBuZWVkIHRvIGFsc28gcmVhZCBzdGRlcnIgdW50aWwgdGhlIHBy
b2Nlc3MgZGllcz8KICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gc2VsZi5fc2VydmVy
X3Byb2Nlc3MucG9wX2FsbF9idWZmZXJlZF9zdGRlcnIoKQogCisgICAgICAgIGNyYXNoX2xvZyA9
ICcnCisgICAgICAgIGlmIHNlbGYuaGFzX2NyYXNoZWQoKToKKyAgICAgICAgICAgIGNyYXNoX2xv
ZyA9IHNlbGYuX3BvcnQuX2dldF9jcmFzaF9sb2coc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUs
IHNlbGYuX2NyYXNoZWRfcGlkLCB0ZXh0LCBzZWxmLmVycm9yX2Zyb21fdGVzdCkKKwogICAgICAg
ICByZXR1cm4gRHJpdmVyT3V0cHV0KHRleHQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwgYXVk
aW8sCi0gICAgICAgICAgICBjcmFzaD1zZWxmLl9kZXRlY3RlZF9jcmFzaCgpLCB0ZXN0X3RpbWU9
dGltZS50aW1lKCkgLSBzdGFydF90aW1lLAorICAgICAgICAgICAgY3Jhc2g9c2VsZi5oYXNfY3Jh
c2hlZCgpLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSBzdGFydF90aW1lLAogICAgICAgICAgICAg
dGltZW91dD1zZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQsIGVycm9yPXNlbGYuZXJyb3Jf
ZnJvbV90ZXN0LAotICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jhc2hl
ZF9wcm9jZXNzX25hbWUoKSkKKyAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lPXNlbGYu
X2NyYXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAgICAgICAgY3Jhc2hlZF9waWQ9c2VsZi5fY3Jh
c2hlZF9waWQsIGNyYXNoX2xvZz1jcmFzaF9sb2cpCiAKICAgICBkZWYgX3JlYWRfaGVhZGVyKHNl
bGYsIGJsb2NrLCBsaW5lLCBoZWFkZXJfdGV4dCwgaGVhZGVyX2F0dHIsIGhlYWRlcl9maWx0ZXI9
Tm9uZSk6CiAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChoZWFkZXJfdGV4dCkgYW5kIGdldGF0
dHIoYmxvY2ssIGhlYWRlcl9hdHRyKSBpcyBOb25lOgpAQCAtNjA4LDcgKzU5NSw3IEBAIGNsYXNz
IFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICBvdXRfbGluZSwgZXJyX2xpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2VpdGhlcl9z
dGRvdXRfb3Jfc3RkZXJyX2xpbmUoZGVhZGxpbmUpCiAKLSAgICAgICAgICAgIGlmIHNlbGYuX3Nl
cnZlcl9wcm9jZXNzLnRpbWVkX291dCBvciBzZWxmLl9kZXRlY3RlZF9jcmFzaCgpOgorICAgICAg
ICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0IG9yIHNlbGYuaGFzX2NyYXNo
ZWQoKToKICAgICAgICAgICAgICAgICBicmVhawogCiAgICAgICAgICAgICBpZiBvdXRfbGluZToK
QEAgLTYyOSw4ICs2MTYsMTkgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAg
ICAgICAgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0
ZG91dChkZWFkbGluZSwgYmxvY2suX2NvbnRlbnRfbGVuZ3RoKQogCiAgICAgICAgICAgICBpZiBl
cnJfbGluZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9jaGVja19mb3JfZHJpdmVyX2NyYXNo
KGVycl9saW5lKToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBp
ZiBlcnJfbGluZSA9PSAiI0NSQVNIRURcbiI6CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBp
cyB1c2VkIG9uIFdpbmRvd3MgdG8gcmVwb3J0IHRoYXQgdGhlIHByb2Nlc3MgaGFzIGNyYXNoZWQK
KyAgICAgICAgICAgICAgICAgICAgIyBTZWUgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvNjU1MzcuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1l
ID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MubmFtZSgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2NyYXNoZWRfcGlkID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucGlkKCkKKyAgICAgICAgICAgICAg
ICBlbGlmIGVycl9saW5lLnN0YXJ0c3dpdGgoIiNDUkFTSEVEIC0gV2ViUHJvY2VzcyIpOgorICAg
ICAgICAgICAgICAgICAgICAjIFdlYktpdFRlc3RSdW5uZXIgdXNlcyB0aGlzIHRvIHJlcG9ydCB0
aGF0IHRoZSBXZWJQcm9jZXNzIHN1YnByb2Nlc3MgY3Jhc2hlZC4KKyAgICAgICAgICAgICAgICAg
ICAgcGlkID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goJ3BpZCAoXGQr
KScsIGVycl9saW5lKQorICAgICAgICAgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcGlkID0gaW50KG0uZ3JvdXAoMSkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gJ1dlYlByb2Nlc3MnCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2NyYXNoZWRfcGlkID0gcGlkCiAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9t
X3Rlc3QgKz0gZXJyX2xpbmUKIAogICAgICAgICBibG9jay5kZWNvZGVfY29udGVudCgpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
a2l0X3VuaXR0ZXN0LnB5CmluZGV4IDZkYzg0NTQ0MTM3MWI2ZGU3OGE0YWNlNzA3MGM4MmFkY2U5
Zjk4NGQuLjc5M2E0ZmRjNWYxNjllODc2ZjRjOTE4MmFlOTFiYzE1NTU2ZjY5NDQgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
a2l0X3VuaXR0ZXN0LnB5CkBAIC0yNDAsOCArMjQwLDExIEBAIGNsYXNzIFdlYktpdFBvcnRUZXN0
KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKIGNsYXNzIE1vY2tTZXJ2ZXJQcm9jZXNzKG9i
amVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzPU5vbmUpOgogICAgICAgICBzZWxm
LnRpbWVkX291dCA9IEZhbHNlCi0gICAgICAgIHNlbGYuY3Jhc2hlZCA9IEZhbHNlCiAgICAgICAg
IHNlbGYubGluZXMgPSBsaW5lcyBvciBbXQorICAgICAgICBzZWxmLmNyYXNoZWQgPSBGYWxzZQor
CisgICAgZGVmIGhhc19jcmFzaGVkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jcmFzaGVk
CiAKICAgICBkZWYgcmVhZF9zdGRvdXRfbGluZShzZWxmLCBkZWFkbGluZSk6CiAgICAgICAgIHJl
dHVybiBzZWxmLmxpbmVzLnBvcCgwKSArICJcbiIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggZmY5YjBiN2QzMjIwMjFjY2VhZjk3NjkyYzUyMzgyZTA4ZjE0
MDM4ZS4uNzBkNGNiYzNmMjdiN2M5ZmM0YTk3M2NiNWUxZjdjM2I1NGUzMjllZiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTM2LDggKzM2LDEzIEBACiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxjc3RkaW8+CisjaW5jbHVkZSA8c2lnbmFsLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNs
dWRlICIuLi8uLi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZh
dGVNYWMuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkgfHwg
UExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkV2ZW50U2VuZGVyUHJveHkuaCIKICNlbmRpZgpAQCAt
MTI1LDcgKzEzMCw3IEBAIHN0YXRpYyBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGCiAKIHN0YXRpYyB1bnNpZ25l
ZCBsb25nIGxvbmcgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwg
V0tTZWN1cml0eU9yaWdpblJlZiwgV0tTdHJpbmdSZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBs
b25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25l
ZCBsb25nIGxvbmcsIGNvbnN0IHZvaWQqKQogewotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBs
b25nIGxvbmcgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OyAgICAKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsK
ICAgICByZXR1cm4gZGVmYXVsdFF1b3RhOwogfQogCkBAIC0xNzMsNyArMTc4LDcgQEAgV0tQYWdl
UmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoV0tQYWdlUmVmIG9sZFBhZ2UsIFdL
VVJMUmVxdWVzdFJlZiwgV0sKICAgICAgICAgMCwgLy8gdGFrZUZvY3VzCiAgICAgICAgIGZvY3Vz
LAogICAgICAgICB1bmZvY3VzLAotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnQgICAg
ICAgIAorICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnQKICAgICAgICAgMCwgLy8gcnVu
SmF2YVNjcmlwdENvbmZpcm0KICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAogICAg
ICAgICAwLCAvLyBzZXRTdGF0dXNUZXh0CkBAIC0zMzcsNyArMzQyLDcgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgICAg
ICAwLCAvLyB0YWtlRm9jdXMKICAgICAgICAgMCwgLy8gZm9jdXMKICAgICAgICAgMCwgLy8gdW5m
b2N1cwotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnQgICAgICAgIAorICAgICAgICAw
LCAvLyBydW5KYXZhU2NyaXB0QWxlcnQKICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZp
cm0KICAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAogICAgICAgICAwLCAvLyBzZXRT
dGF0dXNUZXh0CkBAIC00MDQsNyArNDA5LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgICAgICAwLCAvLyBkaWRDaGFu
Z2VCYWNrRm9yd2FyZExpc3QKICAgICAgICAgMCwgLy8gc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW0KICAgICAgICAgMCwgLy8gZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKLSAgICAg
ICAgMCwgLy8gZGlkRGV0ZWN0WFNTRm9yRnJhbWUgCisgICAgICAgIDAsIC8vIGRpZERldGVjdFhT
U0ZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dAogICAgICAgICAwLCAvLyB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICB9OwpAQCAt
NDE0LDcgKzQxOSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2Ms
IGNvbnN0IGNoYXIqIGFyZ3ZbXSkKIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0Nv
bnNpc3RlbnRWYWx1ZXMoKQogewogICAgIG1fc3RhdGUgPSBSZXNldHRpbmc7Ci0gICAgCisKICAg
ICBtX2JlZm9yZVVubG9hZFJldHVyblZhbHVlID0gdHJ1ZTsKIAogICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIlJlc2V0IikpOwpAQCAtNDg5LDggKzQ5NCwxMyBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKCkKIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6
cnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0KQogewotICAgIGlmICghcmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcygpKSB7CisgICAgIGlmICghcmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcygp
KSB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBpbnQgcGlkID0gV0tQYWdlR2V0UHJvY2Vz
c0lkZW50aWZpZXIobV9tYWluV2ViVmlldy0+cGFnZSgpKTsKKyAgICAgICAgZnByaW50ZihzdGRl
cnIsICIjQ1JBU0hFRCAtIFdlYlByb2Nlc3MgKHBpZCAlZClcbiIsIHBpZCk7CisjZWxzZQogICAg
ICAgICBmcHV0cygiI0NSQVNIRUQgLSBXZWJQcm9jZXNzXG4iLCBzdGRlcnIpOworI2VuZGlmCiAg
ICAgICAgIGZmbHVzaChzdGRlcnIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
NTA4LDcgKzUxOCw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJ1blRlc3QoY29uc3QgY2hhciog
dGVzdCkKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gYWRvcHRQdHIobmV3IFRlc3RJbnZvY2F0
aW9uKHBhdGhPclVSTCkpOwogICAgIG1fY3VycmVudEludm9jYXRpb24tPnNldFNraXBQaXhlbFRl
c3RPcHRpb24obV9za2lwUGl4ZWxUZXN0T3B0aW9uKTsKICAgICBpZiAobV9kdW1wUGl4ZWxzKQot
ICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5zZXRJc1BpeGVsVGVzdChleHBlY3RlZFBpeGVs
SGFzaCk7ICAgIAorICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5zZXRJc1BpeGVsVGVzdChl
eHBlY3RlZFBpeGVsSGFzaCk7CiAKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5pbnZva2UoKTsK
ICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLmNsZWFyKCk7CkBAIC04MDAsNyArODEwLDEyIEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OnByb2Nlc3NEaWRDcmFzaCgpCiAgICAgLy8gVGhpcyBmdW5jdGlv
biBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHdoZW4gY3Jhc2ggbG9ncyBhcmUgYmVpbmcg
c2F2ZWQgb24gV2luZG93cywgc28KICAgICAvLyBlbnN1cmUgd2Ugb25seSBwcmludCB0aGUgY3Jh
c2hlZCBtZXNzYWdlIG9uY2UuCiAgICAgaWYgKCFtX2RpZFByaW50V2ViUHJvY2Vzc0NyYXNoZWRN
ZXNzYWdlKSB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBpbnQgcGlkID0gV0tQYWdlR2V0
UHJvY2Vzc0lkZW50aWZpZXIobV9tYWluV2ViVmlldy0+cGFnZSgpKTsKKyAgICAgICAgZnByaW50
ZihzdGRlcnIsICIjQ1JBU0hFRCAtIFdlYlByb2Nlc3MgKHBpZCAlZClcbiIsIHBpZCk7CisjZWxz
ZQogICAgICAgICBmcHV0cygiI0NSQVNIRUQgLSBXZWJQcm9jZXNzXG4iLCBzdGRlcnIpOworI2Vu
ZGlmCiAgICAgICAgIGZmbHVzaChzdGRlcnIpOwogICAgICAgICBtX2RpZFByaW50V2ViUHJvY2Vz
c0NyYXNoZWRNZXNzYWdlID0gdHJ1ZTsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>