<?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>54072</bug_id>
          
          <creation_ts>2011-02-08 23:58:26 -0800</creation_ts>
          <short_desc>nrwt multiprocessing: add code to handle interrupts and wedged threads</short_desc>
          <delta_ts>2011-02-14 14:13:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>54071</dependson>
          <blocked>49566</blocked>
    
    <blocked>54074</blocked>
    
    <blocked>54082</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>348020</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-08 23:58:26 -0800</bug_when>
    <thetext>nrwt multiprocessing: add code to handle interrupts and wedged threads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348029</commentid>
    <comment_count>1</comment_count>
      <attachid>81761</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-09 00:06:28 -0800</bug_when>
    <thetext>Created attachment 81761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348037</commentid>
    <comment_count>2</comment_count>
      <attachid>81763</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-09 00:24:30 -0800</bug_when>
    <thetext>Created attachment 81763
fix missing variable assignment in _check_if_done()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349896</commentid>
    <comment_count>3</comment_count>
      <attachid>81763</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-02-11 11:58:01 -0800</bug_when>
    <thetext>Comment on attachment 81763
fix missing variable assignment in _check_if_done()

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:267
&gt; +        return self._alive

Maybe I&apos;m missing something, but I&apos;m not seeing _alive being set in either this patch, the patch for bug 54071 (which this depends on), or the currently checked in code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349933</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-11 12:45:08 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 81763 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81763&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:267
&gt; &gt; +        return self._alive
&gt; 
&gt; Maybe I&apos;m missing something, but I&apos;m not seeing _alive being set in either this patch, the patch for bug 54071 (which this depends on), or the currently checked in code.

Alive shows up in the patch on bug 54070 (which 54071 depends on). Sorry, a pipeline of patches can be confusing ...

-- Dirk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350105</commentid>
    <comment_count>5</comment_count>
      <attachid>82199</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-11 15:39:28 -0800</bug_when>
    <thetext>Created attachment 82199
merge in changes from 54070, 54071, update w/ feedback from mihai, tony</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350191</commentid>
    <comment_count>6</comment_count>
      <attachid>82218</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-11 18:04:49 -0800</bug_when>
    <thetext>Created attachment 82218
merge in more changes from 54070, 54071</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350755</commentid>
    <comment_count>7</comment_count>
      <attachid>82218</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-14 10:38:18 -0800</bug_when>
    <thetext>Comment on attachment 82218
merge in more changes from 54070, 54071

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:279
&gt; +    def is_alive(self):
&gt; +        # FIXME: We can remove this once everyone is on 2.6.
&gt; +        return self.isAlive()

is_alive = isAlive (probably with the comment).

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:328
&gt; +            _Multiprocessing_Process.is_alive(self)

multiprocessing.Process.is_alive

My earlier thought was if _Process/_MultiProcessWorkerConnection is the same as _Thread/_ThreadedWorkerConnection on python 2.5, maybe we shouldn&apos;t even declare this object in python 2.5 (i.e., put the whole class definition behind an if multiprocessing).  That would avoid some of these branches in the object itself.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:192
&gt; +        oc.restore_output()

Should this be part of the try/finally?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/worker.py:87
&gt; +                # FIXME: Figure out how to send a message with a traceback.

I see, the traceback can&apos;t be pickled?  Maybe we should just send back the stringified traceback?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350870</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-14 14:00:38 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 82218 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82218&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:279
&gt; &gt; +    def is_alive(self):
&gt; &gt; +        # FIXME: We can remove this once everyone is on 2.6.
&gt; &gt; +        return self.isAlive()
&gt; 
&gt; is_alive = isAlive (probably with the comment).
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:328
&gt; &gt; +            _Multiprocessing_Process.is_alive(self)
&gt; 
&gt; multiprocessing.Process.is_alive
&gt; 
&gt; My earlier thought was if _Process/_MultiProcessWorkerConnection is the same as _Thread/_ThreadedWorkerConnection on python 2.5, maybe we shouldn&apos;t even declare this object in python 2.5 (i.e., put the whole class definition behind an if multiprocessing).  That would avoid some of these branches in the object itself.
&gt; 

I guess for some reason I was thinking that declaring a top-level name conditionally was a bad idea, but now I can&apos;t see any real downside, and it does make the code somewhat cleaner. Will do.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:192
&gt; &gt; +        oc.restore_output()
&gt; 
&gt; Should this be part of the try/finally?
&gt;

Done.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/worker.py:87
&gt; &gt; +                # FIXME: Figure out how to send a message with a traceback.
&gt; 
&gt; I see, the traceback can&apos;t be pickled?  Maybe we should just send back the stringified traceback?

Correct. Directly calling str() on the traceback is useless (it just prints out the object handle), and so the FIXME is to do something like log the error to a dummy handler and then send the array of strings, if that does turn out to be useful. I&apos;m not convinced it&apos;s worth the effort over just logging the traceback here and sending the exception w/o the traceback. Hence the fixme ... to poke into it some more at some later date when I have time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350872</commentid>
    <comment_count>9</comment_count>
      <attachid>82359</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-14 14:09:37 -0800</bug_when>
    <thetext>Created attachment 82359
upload w/ more feedback from tony - remove the _Multiprocessing_Process hack completely, just make the class conditionally defined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350875</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-14 14:13:24 -0800</bug_when>
    <thetext>Committed r78506: &lt;http://trac.webkit.org/changeset/78506&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81761</attachid>
            <date>2011-02-09 00:06:28 -0800</date>
            <delta_ts>2011-02-09 00:24:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54072-20110209000626.patch</filename>
            <type>text/plain</type>
            <size>14913</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgwMTAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ODc0MjFiOGI0NzU4YjQ2ZjIzYzczNmI4YTYzY2MzNzhh
N2NkMWZjLi5kNTAwMzU0NzA5OGI2OWZiM2RmYWFmNTYzMWI5OGRlNWMwMmQzNTQyIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjMg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBucnd0
IG11bHRpcHJvY2Vzc2luZzogYWRkIGNvZGUgdG8gaGFuZGxlIGludGVycnVwdHMgYW5kIHdlZGdl
ZAorICAgICAgICB0aHJlYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQwNzIKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgQWRk
cyB0aGUgY2FuY2VsKCksIGlzX2FsaXZlKCksIGpvaW4oKSwgYW5kIGxvZ193ZWRnZWRfd29ya2Vy
KCkKKyAgICAgICAgbWV0aG9kcyB0byB0aGUgV29ya2VyQ29ubmVjdGlvbiBjbGFzcworCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyMi5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS93b3JrZXIucHk6Cisg
ICAgICAgIEFkZHMgdGhlIGNhbmNlbCgpIG1ldGhvZCB0byB0aGUgV29ya2VyIGNsYXNzCisKKzIw
MTEtMDItMDggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgdXBkYXRlIHRoZSBOUldUIG11
bHRpcHJvY2Vzc2luZyBjb2RlIHRvIHNwYXduIG11bHRpcGxlIHdvcmtlcnMKICAgICAgICAgaW5z
dGVhZCBvZiBqdXN0IHVzaW5nIG9uZS4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlcl93b3JrZXJfYnJva2VyLnB5CmluZGV4IGFiNzAzYjNiNjZhMDVlNWZiNjRmOWMwNzA4ZjBi
Nzk2MTQzOTE3NjYuLmJiOGM3NWM3NTBjNzg3Y2MyMWIxMTczZDQ2YjY1ZThhNzMxNTMzYzAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAg
LTU1LDYgKzU1LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgIF9NdWx0aXByb2Nlc3Npbmdf
UHJvY2VzcyA9IHRocmVhZGluZy5UaHJlYWQKIAogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IHN0YWNrX3V0aWxzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQg
cG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1l
c3NhZ2VfYnJva2VyMgogCkBAIC0yMjgsNiArMjI5LDE4IEBAIGNsYXNzIF9Xb3JrZXJDb25uZWN0
aW9uKG1lc3NhZ2VfYnJva2VyMi5Ccm9rZXJDb25uZWN0aW9uKToKICAgICBkZWYgeWllbGRfdG9f
YnJva2VyKHNlbGYpOgogICAgICAgICBwYXNzCiAKKyAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgaXNfYWxpdmUoc2VsZik6
CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIGRlZiBqb2luKHNlbGYs
IHRpbWVvdXQpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYg
bG9nX3dlZGdlZF93b3JrZXIoc2VsZiwgdGVzdF9uYW1lKToKKyAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcgorCiAKIGNsYXNzIF9JbmxpbmVXb3JrZXIoX1dvcmtlckNvbm5lY3Rpb24p
OgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQsIG1hbmFnZXJfY2xpZW50KToK
QEAgLTI0Nyw2ICsyNjAsMTggQEAgY2xhc3MgX0lubGluZVdvcmtlcihfV29ya2VyQ29ubmVjdGlv
bik6CiAgICAgZGVmIHlpZWxkX3RvX2Jyb2tlcihzZWxmKToKICAgICAgICAgc2VsZi5fYnJva2Vy
LnJ1bl9hbGxfcGVuZGluZyhNQU5BR0VSX1RPUElDLCBzZWxmLl9tYW5hZ2VyX2NsaWVudCkKIAor
ICAgIGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgIHNlbGYuX2NsaWVudC5jYW5jZWwoKQorCisg
ICAgZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYWxpdmUKKworICAg
IGRlZiBqb2luKHNlbGYsIHRpbWVvdXQpOgorICAgICAgICBhc3NlcnQgbm90IHNlbGYuaXNfYWxp
dmUoKQorCisgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHRlc3RfbmFtZSk6CisgICAg
ICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJfSW5saW5lV29ya2VyLmxvZ193ZWRnZWRfd29ya2Vy
KCkgY2FsbGVkIikKKwogCiBjbGFzcyBfVGhyZWFkZWRXb3JrZXIodGhyZWFkaW5nLlRocmVhZCwg
X1dvcmtlckNvbm5lY3Rpb24pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQp
OgpAQCAtMjYwLDYgKzI4NSwxNyBAQCBjbGFzcyBfVGhyZWFkZWRXb3JrZXIodGhyZWFkaW5nLlRo
cmVhZCwgX1dvcmtlckNvbm5lY3Rpb24pOgogICAgICAgICAgICAgc2VsZi5pZGVudCA9IHRocmVh
ZC5nZXRfaWRlbnQoKQogICAgICAgICBzZWxmLl9jbGllbnQucnVuKHNlbGYuX3BvcnQpCiAKKyAg
ICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICBzZWxmLl9jbGllbnQuY2FuY2VsKCkKKworICAg
IGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgIyBGSVhNRTogV2UgY2FuIHJlbW92ZSB0aGlz
IG9uY2UgZXZlcnlvbmUgaXMgb24gMi42LgorICAgICAgICBzZWxmLmlzQWxpdmUoKQorCisgICAg
ZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgIHN0YWNrX3V0
aWxzLmxvZ190aHJlYWRfc3RhdGUoX2xvZy5lcnJvciwgc2VsZi5uYW1lLCBzZWxmLmlkZW50LAor
ICAgICAgICAgICAgIiBpcyB3ZWRnZWQgb24gdGVzdCAlcyIgJSB0ZXN0X25hbWUpCisKIAogY2xh
c3MgX011bHRpUHJvY2Vzc1dvcmtlcihfTXVsdGlwcm9jZXNzaW5nX1Byb2Nlc3MsIF9Xb3JrZXJD
b25uZWN0aW9uKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBwbGF0Zm9ybV9uYW1l
LCBvcHRpb25zKToKQEAgLTI3NCwzICszMTAsMTAgQEAgY2xhc3MgX011bHRpUHJvY2Vzc1dvcmtl
cihfTXVsdGlwcm9jZXNzaW5nX1Byb2Nlc3MsIF9Xb3JrZXJDb25uZWN0aW9uKToKICAgICAgICAg
bG9nZ2luZy5iYXNpY0NvbmZpZygpCiAgICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQoc2VsZi5f
cGxhdGZvcm1fbmFtZSwgc2VsZi5fb3B0aW9ucykKICAgICAgICAgc2VsZi5fY2xpZW50LnJ1bihw
b3J0X29iaikKKworICAgIGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgIHNlbGYudGVybWluYXRl
KCkKKworICAgIGRlZiBsb2dfd2VkZ2VkX3dvcmtlcihzZWxmLCB0ZXN0X25hbWUpOgorICAgICAg
ICBfbG9nLmVycm9yKCIlcyAocGlkICVkKSBpcyB3ZWRnZWQgb24gdGVzdCAlcyIgJQorICAgICAg
ICAgICAgICAgICAgIChzZWxmLm5hbWUsIHNlbGYucGlkLCB0ZXN0X25hbWUpKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0
LnB5CmluZGV4IDZkNDg2M2IzNDg0NjM1ZGU1NjAzZDIzOGYwMzIxMDE0ZjYwMjI0ODUuLmI0Njhk
ZDFkMWYwZWVlNjdjYTU3NDg3ZGZjNDVkZDgyMjRlOTRkOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2Vy
X2Jyb2tlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKQEAg
LTUwLDEwICs1MCwxNCBAQCBjbGFzcyBUZXN0V29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5B
YnN0cmFjdFdvcmtlcik6CiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAg
IHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVtYmVyCiAgICAgICAgIHNlbGYuX25hbWUg
PSAnVGVzdFdvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVyCisgICAgICAgIHNlbGYuX2NhbmNlbGVk
ID0gRmFsc2UKICAgICAgICAgc2VsZi5fc3RvcHBlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3N0
YXJ0aW5nX3F1ZXVlID0ga3dhcmdzLmdldCgnc3RhcnRpbmdfcXVldWUnKQogICAgICAgICBzZWxm
Ll9zdG9wcGluZ19xdWV1ZSA9IGt3YXJncy5nZXQoJ3N0b3BwaW5nX3F1ZXVlJykKIAorICAgIGRl
ZiBjYW5jZWwoc2VsZik6CisgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQorCiAgICAgZGVm
IGhhbmRsZV9zdG9wKHNlbGYsIHNyYyk6CiAgICAgICAgIHNlbGYuX3N0b3BwZWQgPSBUcnVlCiAK
QEAgLTYzLDcgKzY3LDcgQEAgY2xhc3MgVGVzdFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIu
QWJzdHJhY3RXb3JrZXIpOgogICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCd0ZXN0
JywgMiwgJ2hpLCBldmVyeWJvZHknKQogCiAgICAgZGVmIGlzX2RvbmUoc2VsZik6Ci0gICAgICAg
IHJldHVybiBzZWxmLl9zdG9wcGVkCisgICAgICAgIHJldHVybiBzZWxmLl9zdG9wcGVkIG9yIHNl
bGYuX2NhbmNlbGVkCiAKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYu
X25hbWUKQEAgLTE1OCw2ICsxNjIsMTYgQEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKICAg
ICAjCiAgICAgIyBBY3R1YWwgdW5pdCB0ZXN0cwogICAgICMKKyAgICBkZWYgdGVzdF9jYW5jZWwo
c2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl93b3JrZXJfbW9kZWw6CisgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgc2VsZi5tYWtlX2Jyb2tlcigpCisgICAgICAgIHdvcmtlciA9IHNlbGYu
X2Jyb2tlci5zdGFydF93b3JrZXIoMCkKKyAgICAgICAgd29ya2VyLmNhbmNlbCgpCisgICAgICAg
IHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3Rlc3QnLCAxLCAnaGVsbG8sIHdvcmxkJykKKyAg
ICAgICAgd29ya2VyLmpvaW4oMC41KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHdvcmtlci5p
c19hbGl2ZSgpKQorCiAgICAgZGVmIHRlc3RfZG9uZShzZWxmKToKICAgICAgICAgaWYgbm90IHNl
bGYuX3dvcmtlcl9tb2RlbDoKICAgICAgICAgICAgIHJldHVybgpAQCAtMTY2LDEwICsxODAsMzIg
QEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3Rf
bWVzc2FnZSgndGVzdCcsIDEsICdoZWxsbywgd29ybGQnKQogICAgICAgICBzZWxmLl9icm9rZXIu
cG9zdF9tZXNzYWdlKCdzdG9wJykKICAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xv
b3AoKQorICAgICAgICB3b3JrZXIuam9pbigwLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
d29ya2VyLmlzX2FsaXZlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlzX2RvbmUo
KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9hbl9pbnQsIDIpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5fYV9zdHIsICdoaSwgZXZlcnlib2R5JykKIAorICAgIGRlZiB0
ZXN0X2xvZ193ZWRnZWRfd29ya2VyKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fd29ya2Vy
X21vZGVsOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHN0YXJ0aW5nX3F1ZXVlID0gc2Vs
Zi5xdWV1ZSgpCisgICAgICAgIHN0b3BwaW5nX3F1ZXVlID0gc2VsZi5xdWV1ZSgpCisgICAgICAg
IHNlbGYubWFrZV9icm9rZXIoKQorICAgICAgICBvYyA9IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2Fw
dHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgd29ya2VyID0gc2Vs
Zi5fYnJva2VyLnN0YXJ0X3dvcmtlcigwLAorICAgICAgICAgICAgc3RhcnRpbmdfcXVldWU9c3Rh
cnRpbmdfcXVldWUsIHN0b3BwaW5nX3F1ZXVlPXN0b3BwaW5nX3F1ZXVlKQorICAgICAgICBzdGFy
dGluZ19xdWV1ZS5nZXQoKQorICAgICAgICB3b3JrZXIubG9nX3dlZGdlZF93b3JrZXIoJ3Rlc3Rf
bmFtZScpCisgICAgICAgIHN0b3BwaW5nX3F1ZXVlLnB1dCgnJykKKyAgICAgICAgc2VsZi5fYnJv
a2VyLnBvc3RfbWVzc2FnZSgnc3RvcCcpCisgICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fbWVzc2Fn
ZV9sb29wKCkKKyAgICAgICAgd29ya2VyLmpvaW4oMC41KQorICAgICAgICBvYy5yZXN0b3JlX291
dHB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uod29ya2VyLmlzX2FsaXZlKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlzX2RvbmUoKSkKKwogICAgIGRlZiB0ZXN0X3Vua25v
d25fbWVzc2FnZShzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX3dvcmtlcl9tb2RlbDoKICAg
ICAgICAgICAgIHJldHVybgpAQCAtMTc3LDggKzIxMywxMCBAQCBjbGFzcyBfVGVzdHNNaXhpbihv
YmplY3QpOgogICAgICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDApCiAg
ICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3Vua25vd24nKQogICAgICAgICBzZWxm
Ll9icm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCisgICAgICAgIHdvcmtlci5qb2luKDAuNSkKIAog
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pc19kb25lKCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2Uod29ya2VyLmlzX2FsaXZlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNl
bGYuX2V4Y2VwdGlvblswXSwgVmFsdWVFcnJvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
c2VsZi5fZXhjZXB0aW9uWzFdLAogICAgICAgICAgICAgIlRlc3RXb3JrZXIvMDogcmVjZWl2ZWQg
bWVzc2FnZSAndW5rbm93bicgaXQgY291bGRuJ3QgaGFuZGxlIikKQEAgLTE4OSw2ICsyMjcsMTEg
QEAgY2xhc3MgSW5saW5lQnJva2VyVGVzdHMoX1Rlc3RzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgX1Rlc3RzTWl4aW4uc2V0VXAoc2VsZikKICAgICAgICAgc2VsZi5fd29ya2Vy
X21vZGVsID0gJ2lubGluZScKIAorICAgIGRlZiB0ZXN0X2xvZ193ZWRnZWRfd29ya2VyKHNlbGYp
OgorICAgICAgICBzZWxmLm1ha2VfYnJva2VyKCkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJv
a2VyLnN0YXJ0X3dvcmtlcigwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25F
cnJvciwgd29ya2VyLmxvZ193ZWRnZWRfd29ya2VyLCBOb25lKQorCiAKIGNsYXNzIE11bHRpUHJv
Y2Vzc0Jyb2tlclRlc3RzKF9UZXN0c01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVm
IHNldFVwKHNlbGYpOgpAQCAtMjM4LDYgKzI4MSwxMCBAQCBjbGFzcyBJbnRlcmZhY2VUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgb2JqID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLl9X
b3JrZXJDb25uZWN0aW9uKGJyb2tlci5fYnJva2VyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouc3RhcnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5ydW4pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5jYW5jZWwpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5pc19hbGl2ZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLmpvaW4sIE5vbmUpCisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5sb2dfd2VkZ2VkX3dv
cmtlciwgTm9uZSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9y
dW5uZXIyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9ydW5uZXIyLnB5CmluZGV4IDU2MmNmYWVmYzA1YmJiN2MxNmUwZThhZjZkODA2
MzJiMTNhNWM1NzAuLjk3ZjUzY2ZhMTQ1ODlmZjVmZGY2MDdlNzM5MzM3ZTMzOGNjZjIxYzggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfcnVubmVyMi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lcjIucHkKQEAgLTUyLDYgKzUyLDkgQEAgY2xh
c3MgX1dvcmtlclN0YXRlKG9iamVjdCk6CiAgICAgICAgIHNlbGYud29ya2VyID0gd29ya2VyCiAg
ICAgICAgIHNlbGYubnVtYmVyID0gbnVtYmVyCiAgICAgICAgIHNlbGYuZG9uZSA9IEZhbHNlCisg
ICAgICAgIHNlbGYuY3VycmVudF90ZXN0X25hbWUgPSBOb25lCisgICAgICAgIHNlbGYubmV4dF90
aW1lb3V0ID0gTm9uZQorICAgICAgICBzZWxmLndlZGdlZCA9IEZhbHNlCiAKICAgICBkZWYgX19y
ZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAiX1dvcmtlclN0YXRlKCIgKyBzdHIoc2VsZi5f
X2RpY3RfXykgKyAiKSIKQEAgLTExOCwxMyArMTIxLDI5IEBAIGNsYXNzIFRlc3RSdW5uZXIyKHRl
c3RfcnVubmVyLlRlc3RSdW5uZXIpOgogCiAgICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkID0g
RmFsc2UKICAgICAgICAgaW50ZXJydXB0ZWQgPSBGYWxzZQotICAgICAgICBpZiBub3Qgc2VsZi5f
b3B0aW9ucy5kcnlfcnVuOgotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX2NoZWNrX2lmX2Rv
bmUoKToKLSAgICAgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9v
cChkZWxheV9zZWNzPTEuMCkKLQotICAgICAgICAgICAgIyBGSVhNRTogY2hlY2sgdGhhdCBhbGwg
dGhlIHdvcmtlcnMgYXJlIGVpdGhlciB3ZWRnZWQgb3IgZGVhZC4KLQotICAgICAgICAjIEZJWE1F
OiBoYW5kbGUgZXhjZXB0aW9ucywgaW50ZXJydXB0cy4KKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKKyAgICAgICAgICAgICAgICB3aGlsZSBu
b3Qgc2VsZi5fY2hlY2tfaWZfZG9uZSgpOgorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyX2Nv
bm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9vcChkZWxheV9zZWNzPTEuMCkKKworICAgICAgICAgICAg
ICAgICMgTWFrZSBzdXJlIGFsbCBvZiB0aGUgd29ya2VycyBoYXZlIHNodXQgZG93biAoaWYgcG9z
c2libGUpLgorICAgICAgICAgICAgICAgIGZvciB3IGluIHNlbGYuX3dvcmtlcnMudmFsdWVzKCk6
CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB3LndlZGdlZCBhbmQgdy53b3JrZXIuaXNfYWxp
dmUoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHcud29ya2VyLmpvaW4oMC41KQorICAgICAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCB3Lndvcmtlci5pc19hbGl2ZSgpCisgICAgICAg
IGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIF9sb2cuaW5mbygiSW50ZXJy
dXB0ZWQsIGV4aXRpbmciKQorICAgICAgICAgICAgZm9yIHcgaW4gc2VsZi5fd29ya2Vycy52YWx1
ZXMoKToKKyAgICAgICAgICAgICAgICB3Lndvcmtlci5jYW5jZWwoKQorICAgICAgICAgICAga2V5
Ym9hcmRfaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCB0ZXN0X3J1bm5lci5UZXN0
UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24sIGU6CisgICAgICAgICAgICBfbG9nLmluZm8oZS5yZWFz
b24pCisgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24uY2FuY2VsX3dvcmtlcnMoKQorICAg
ICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAg
ICMgVW5leHBlY3RlZCBleGNlcHRpb247IGRvbid0IHRyeSB0byBjbGVhbiB1cCB3b3JrZXJzLgor
ICAgICAgICAgICAgX2xvZy5pbmZvKCJFeGNlcHRpb24gcmFpc2VkLCBleGl0aW5nIikKKyAgICAg
ICAgICAgIHJhaXNlCiAKICAgICAgICAgIyBGSVhNRTogaW1wbGVtZW50IHN0YXRzLgogCkBAIC0x
MzUsMTkgKzE1NCwzNSBAQCBjbGFzcyBUZXN0UnVubmVyMih0ZXN0X3J1bm5lci5UZXN0UnVubmVy
KToKIAogICAgIGRlZiBfY2hlY2tfaWZfZG9uZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0
cnVlIGlmZiBhbGwgdGhlIHdvcmtlcnMgaGF2ZSBlaXRoZXIgY29tcGxldGVkIG9yIHdlZGdlZC4i
IiIKLSAgICAgICAgIyBGSVhNRTogaW1wbGVtZW50IHRvIGNoZWNrIGZvciB3ZWRnZWQgd29ya2Vy
cy4KICAgICAgICAgZG9uZSA9IFRydWUKICAgICAgICAgZm9yIHcgaW4gc2VsZi5fd29ya2Vycy52
YWx1ZXMoKToKLSAgICAgICAgICAgIGlmIG5vdCB3LmRvbmU6Ci0gICAgICAgICAgICAgICAgZG9u
ZSA9IEZhbHNlCisgICAgICAgICAgICBpZiBub3Qgdy5kb25lIGFuZCBub3Qgdy53ZWRnZWQ6Cisg
ICAgICAgICAgICAgICAgbmV4dF90aW1lb3V0ID0gdy5uZXh0X3RpbWVvdXQKKyAgICAgICAgICAg
ICAgICBXRURHRV9QQURESU5HID0gNDAuMAorICAgICAgICAgICAgICAgIGlmIG5leHRfdGltZW91
dCBhbmQgdCA+IG5leHRfdGltZW91dCArIFdFREdFX1BBRERJTkc6CisgICAgICAgICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAgICAgICAgICAgIHcud29ya2VyLmxvZ193ZWRn
ZWRfd29ya2VyKHcuY3VycmVudF90ZXN0X25hbWUpCisgICAgICAgICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJycpCisgICAgICAgICAgICAgICAgICAgIHcud2VkZ2VkID0gVHJ1ZQorICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBGYWxzZQorCisgICAgICAg
IGlmIGRvbmU6CisgICAgICAgICAgICBpZiBhbnkoW3cud2VkZ2VkIGZvciB3IGluIHNlbGYuX3dv
cmtlcnMudmFsdWVzKCldKToKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3IoJ1JlbWFpbmluZyB3b3JrZXJzIGFyZSB3ZWRnZWQsIGJhaWxp
bmcgb3V0LicpCisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnTm8gd2VkZ2VkIHRocmVhZHMnKQogCiAg
ICAgICAgICMgRklYTUU6IGlzIHRoZSBmb2xsb3dpbmcgbGluZSBzYWZlPwogICAgICAgICAjIHNl
bGYuX2RvbmUgPSBkb25lCiAgICAgICAgIHJldHVybiBkb25lCiAKICAgICBkZWYgaGFuZGxlX3N0
YXJ0ZWRfdGVzdChzZWxmLCBzcmMsIHRlc3RfaW5mbywgaGFuZ190aW1lb3V0KToKLSAgICAgICAg
IyBGSVhNRTogaW1wbGVtZW50Ci0gICAgICAgIHBhc3MKKyAgICAgICAgdyA9IHNlbGYuX3dvcmtl
cnNbc3JjXQorICAgICAgICB3LmN1cnJlbnRfdGVzdF9uYW1lID0gc2VsZi5fcG9ydC5yZWxhdGl2
ZV90ZXN0X2ZpbGVuYW1lKHRlc3RfaW5mby5maWxlbmFtZSkKKyAgICAgICAgdy5uZXh0X3RpbWVv
dXQgPSB0aW1lLnRpbWUoKSArIGhhbmdfdGltZW91dAogCiAgICAgZGVmIGhhbmRsZV9kb25lKHNl
bGYsIHNyYyk6CiAgICAgICAgIHcgPSBzZWxmLl93b3JrZXJzW3NyY10KQEAgLTE2MSw2ICsxOTYs
MTUgQEAgY2xhc3MgVGVzdFJ1bm5lcjIodGVzdF9ydW5uZXIuVGVzdFJ1bm5lcik6CiAgICAgICAg
IHBhc3MKIAogICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfdGVzdChzZWxmLCBzcmMsIHJlc3VsdCwg
ZWxhcHNlZF90aW1lKToKKyAgICAgICAgdyA9IHNlbGYuX3dvcmtlcnNbc3JjXQorICAgICAgICB3
Lm5leHRfdGltZW91dCA9IE5vbmUKKyAgICAgICAgdy5jdXJyZW50X3Rlc3RfbmFtZSA9IE5vbmUK
KworICAgICAgICBpZiB3LndlZGdlZDoKKyAgICAgICAgICAgICMgSG1tLiBUaGlzIHNob3VsZG4n
dCBoYXBwZW4gaWYgd2UgaGF2ZSBvdXIgdGltZW91dHMKKyAgICAgICAgICAgICMgdHVuZWQgcHJv
cGVybHkuCisgICAgICAgICAgICBfbG9nLmVycm9yKCIlcyB1bndlZGdlZCIsIHcubmFtZSkKKwog
ICAgICAgICBzZWxmLl91cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3VsdChzZWxmLl9jdXJyZW50X3Jl
c3VsdF9zdW1tYXJ5LCByZXN1bHQpCiAKICAgICAgICAgIyBGSVhNRTogdXBkYXRlIHN0YXRzLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2Uvd29ya2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2Uvd29ya2VyLnB5CmluZGV4IDQ3ZDRmYmRiYmUwOGNlN2RlZTEzNzUwM2I3NGZi
NjgxYzc3OGU0YTUuLmMxN2UxNmY3ODcxOWI1MDA2YzAzMWZjMDJjYmVjMDc5MGJkZTRiOGQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3dvcmtlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS93b3JrZXIucHkKQEAgLTQ4LDEzICs0OCwxOCBAQCBjbGFzcyBXb3JrZXIo
bWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICAgICAgc2VsZi5fb3B0
aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fbmFtZSA9ICd3b3JrZXIvJWQnICUgd29ya2Vy
X251bWJlcgogICAgICAgICBzZWxmLl9kb25lID0gRmFsc2UKKyAgICAgICAgc2VsZi5fY2FuY2Vs
ZWQgPSBGYWxzZQogICAgICAgICBzZWxmLl9wb3J0ID0gTm9uZQogCiAgICAgZGVmIF9kZWZlcnJl
ZF9pbml0KHNlbGYsIHBvcnQpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogCisgICAgZGVm
IGNhbmNlbChzZWxmKToKKyAgICAgICAgIiIiQXR0ZW1wdCB0byBhYm9ydCBwcm9jZXNzaW5nIChi
ZXN0IGVmZm9ydCkuIiIiCisgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQorCiAgICAgZGVm
IGlzX2RvbmUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9kb25lCisgICAgICAgIHJldHVy
biBzZWxmLl9kb25lIG9yIHNlbGYuX2NhbmNlbGVkCiAKICAgICBkZWYgbmFtZShzZWxmKToKICAg
ICAgICAgcmV0dXJuIHNlbGYuX25hbWUKQEAgLTYyLDExICs2NywyNyBAQCBjbGFzcyBXb3JrZXIo
bWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICBkZWYgcnVuKHNlbGYs
IHBvcnQpOgogICAgICAgICBzZWxmLl9kZWZlcnJlZF9pbml0KHBvcnQpCiAKKyAgICAgICAgZXhj
ZXB0aW9uX21zZyA9ICIiCiAgICAgICAgIF9sb2cuZGVidWcoIiVzIHN0YXJ0aW5nIiAlIHNlbGYu
X25hbWUpCiAKLSAgICAgICAgIyBGSVhNRTogbmVlZCB0byBhZGQgaW4gZXJyb3IgaGFuZGxpbmcs
IGJldHRlciBsb2dnaW5nLgotICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5ydW5fbWVz
c2FnZV9sb29wKCkKLSAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdl
KCdkb25lJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rp
b24ucnVuX21lc3NhZ2VfbG9vcCgpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19kb25lKCk6
CisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIiVzOiByYW4gb3V0IG9mIG1l
c3NhZ2VzIGluIHdvcmtlciBxdWV1ZS4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJSBzZWxmLl9uYW1lKQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Cisg
ICAgICAgICAgICBleGNlcHRpb25fbXNnID0gIiwgaW50ZXJydXB0ZWQiCisgICAgICAgIGV4Y2Vw
dDoKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiLCBleGNlcHRpb24gcmFpc2VkIgorICAg
ICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgZG9uZSVzIiAlIChzZWxm
Ll9uYW1lLCBleGNlcHRpb25fbXNnKSkKKyAgICAgICAgICAgIGlmIGV4Y2VwdGlvbl9tc2c6Cisg
ICAgICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAg
IHN0YWNrX3V0aWxzLmxvZ190cmFjZWJhY2soX2xvZy5lcnJvciwgZXhjX2luZm9bMl0pCisgICAg
ICAgICAgICAgICAgIyBGSVhNRTogRmlndXJlIG91dCBob3cgdG8gc2VuZCBhIG1lc3NhZ2Ugd2l0
aCBhIHRyYWNlYmFjay4KKyAgICAgICAgICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5w
b3N0X21lc3NhZ2UoJ2V4Y2VwdGlvbicsCisgICAgICAgICAgICAgICAgICAgIChleGNfaW5mb1sw
XSwgZXhjX2luZm9bMV0sIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rp
b24ucG9zdF9tZXNzYWdlKCdkb25lJykKIAogICAgIGRlZiBoYW5kbGVfdGVzdF9saXN0KHNlbGYs
IHNyYywgbGlzdF9uYW1lLCB0ZXN0X2xpc3QpOgogICAgICAgICAjIEZJWE1FOiBjaGVjayB0byBz
ZWUgaWYgd2UgbmVlZCB0byBnZXQgdGhlIGh0dHAgbG9jay4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81763</attachid>
            <date>2011-02-09 00:24:30 -0800</date>
            <delta_ts>2011-02-11 15:39:26 -0800</delta_ts>
            <desc>fix missing variable assignment in _check_if_done()</desc>
            <filename>bug-54072-20110209002428.patch</filename>
            <type>text/plain</type>
            <size>14938</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgwMTAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ODc0MjFiOGI0NzU4YjQ2ZjIzYzczNmI4YTYzY2MzNzhh
N2NkMWZjLi5kNTAwMzU0NzA5OGI2OWZiM2RmYWFmNTYzMWI5OGRlNWMwMmQzNTQyIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjMg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBucnd0
IG11bHRpcHJvY2Vzc2luZzogYWRkIGNvZGUgdG8gaGFuZGxlIGludGVycnVwdHMgYW5kIHdlZGdl
ZAorICAgICAgICB0aHJlYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQwNzIKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgQWRk
cyB0aGUgY2FuY2VsKCksIGlzX2FsaXZlKCksIGpvaW4oKSwgYW5kIGxvZ193ZWRnZWRfd29ya2Vy
KCkKKyAgICAgICAgbWV0aG9kcyB0byB0aGUgV29ya2VyQ29ubmVjdGlvbiBjbGFzcworCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyMi5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS93b3JrZXIucHk6Cisg
ICAgICAgIEFkZHMgdGhlIGNhbmNlbCgpIG1ldGhvZCB0byB0aGUgV29ya2VyIGNsYXNzCisKKzIw
MTEtMDItMDggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgdXBkYXRlIHRoZSBOUldUIG11
bHRpcHJvY2Vzc2luZyBjb2RlIHRvIHNwYXduIG11bHRpcGxlIHdvcmtlcnMKICAgICAgICAgaW5z
dGVhZCBvZiBqdXN0IHVzaW5nIG9uZS4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlcl93b3JrZXJfYnJva2VyLnB5CmluZGV4IGFiNzAzYjNiNjZhMDVlNWZiNjRmOWMwNzA4ZjBi
Nzk2MTQzOTE3NjYuLmJiOGM3NWM3NTBjNzg3Y2MyMWIxMTczZDQ2YjY1ZThhNzMxNTMzYzAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAg
LTU1LDYgKzU1LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgIF9NdWx0aXByb2Nlc3Npbmdf
UHJvY2VzcyA9IHRocmVhZGluZy5UaHJlYWQKIAogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IHN0YWNrX3V0aWxzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQg
cG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1l
c3NhZ2VfYnJva2VyMgogCkBAIC0yMjgsNiArMjI5LDE4IEBAIGNsYXNzIF9Xb3JrZXJDb25uZWN0
aW9uKG1lc3NhZ2VfYnJva2VyMi5Ccm9rZXJDb25uZWN0aW9uKToKICAgICBkZWYgeWllbGRfdG9f
YnJva2VyKHNlbGYpOgogICAgICAgICBwYXNzCiAKKyAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgaXNfYWxpdmUoc2VsZik6
CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIGRlZiBqb2luKHNlbGYs
IHRpbWVvdXQpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYg
bG9nX3dlZGdlZF93b3JrZXIoc2VsZiwgdGVzdF9uYW1lKToKKyAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcgorCiAKIGNsYXNzIF9JbmxpbmVXb3JrZXIoX1dvcmtlckNvbm5lY3Rpb24p
OgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQsIG1hbmFnZXJfY2xpZW50KToK
QEAgLTI0Nyw2ICsyNjAsMTggQEAgY2xhc3MgX0lubGluZVdvcmtlcihfV29ya2VyQ29ubmVjdGlv
bik6CiAgICAgZGVmIHlpZWxkX3RvX2Jyb2tlcihzZWxmKToKICAgICAgICAgc2VsZi5fYnJva2Vy
LnJ1bl9hbGxfcGVuZGluZyhNQU5BR0VSX1RPUElDLCBzZWxmLl9tYW5hZ2VyX2NsaWVudCkKIAor
ICAgIGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgIHNlbGYuX2NsaWVudC5jYW5jZWwoKQorCisg
ICAgZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYWxpdmUKKworICAg
IGRlZiBqb2luKHNlbGYsIHRpbWVvdXQpOgorICAgICAgICBhc3NlcnQgbm90IHNlbGYuaXNfYWxp
dmUoKQorCisgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHRlc3RfbmFtZSk6CisgICAg
ICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJfSW5saW5lV29ya2VyLmxvZ193ZWRnZWRfd29ya2Vy
KCkgY2FsbGVkIikKKwogCiBjbGFzcyBfVGhyZWFkZWRXb3JrZXIodGhyZWFkaW5nLlRocmVhZCwg
X1dvcmtlckNvbm5lY3Rpb24pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQp
OgpAQCAtMjYwLDYgKzI4NSwxNyBAQCBjbGFzcyBfVGhyZWFkZWRXb3JrZXIodGhyZWFkaW5nLlRo
cmVhZCwgX1dvcmtlckNvbm5lY3Rpb24pOgogICAgICAgICAgICAgc2VsZi5pZGVudCA9IHRocmVh
ZC5nZXRfaWRlbnQoKQogICAgICAgICBzZWxmLl9jbGllbnQucnVuKHNlbGYuX3BvcnQpCiAKKyAg
ICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICBzZWxmLl9jbGllbnQuY2FuY2VsKCkKKworICAg
IGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgIyBGSVhNRTogV2UgY2FuIHJlbW92ZSB0aGlz
IG9uY2UgZXZlcnlvbmUgaXMgb24gMi42LgorICAgICAgICBzZWxmLmlzQWxpdmUoKQorCisgICAg
ZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgIHN0YWNrX3V0
aWxzLmxvZ190aHJlYWRfc3RhdGUoX2xvZy5lcnJvciwgc2VsZi5uYW1lLCBzZWxmLmlkZW50LAor
ICAgICAgICAgICAgIiBpcyB3ZWRnZWQgb24gdGVzdCAlcyIgJSB0ZXN0X25hbWUpCisKIAogY2xh
c3MgX011bHRpUHJvY2Vzc1dvcmtlcihfTXVsdGlwcm9jZXNzaW5nX1Byb2Nlc3MsIF9Xb3JrZXJD
b25uZWN0aW9uKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBwbGF0Zm9ybV9uYW1l
LCBvcHRpb25zKToKQEAgLTI3NCwzICszMTAsMTAgQEAgY2xhc3MgX011bHRpUHJvY2Vzc1dvcmtl
cihfTXVsdGlwcm9jZXNzaW5nX1Byb2Nlc3MsIF9Xb3JrZXJDb25uZWN0aW9uKToKICAgICAgICAg
bG9nZ2luZy5iYXNpY0NvbmZpZygpCiAgICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQoc2VsZi5f
cGxhdGZvcm1fbmFtZSwgc2VsZi5fb3B0aW9ucykKICAgICAgICAgc2VsZi5fY2xpZW50LnJ1bihw
b3J0X29iaikKKworICAgIGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgIHNlbGYudGVybWluYXRl
KCkKKworICAgIGRlZiBsb2dfd2VkZ2VkX3dvcmtlcihzZWxmLCB0ZXN0X25hbWUpOgorICAgICAg
ICBfbG9nLmVycm9yKCIlcyAocGlkICVkKSBpcyB3ZWRnZWQgb24gdGVzdCAlcyIgJQorICAgICAg
ICAgICAgICAgICAgIChzZWxmLm5hbWUsIHNlbGYucGlkLCB0ZXN0X25hbWUpKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0
LnB5CmluZGV4IDZkNDg2M2IzNDg0NjM1ZGU1NjAzZDIzOGYwMzIxMDE0ZjYwMjI0ODUuLmI0Njhk
ZDFkMWYwZWVlNjdjYTU3NDg3ZGZjNDVkZDgyMjRlOTRkOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2Vy
X2Jyb2tlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKQEAg
LTUwLDEwICs1MCwxNCBAQCBjbGFzcyBUZXN0V29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5B
YnN0cmFjdFdvcmtlcik6CiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAg
IHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVtYmVyCiAgICAgICAgIHNlbGYuX25hbWUg
PSAnVGVzdFdvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVyCisgICAgICAgIHNlbGYuX2NhbmNlbGVk
ID0gRmFsc2UKICAgICAgICAgc2VsZi5fc3RvcHBlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3N0
YXJ0aW5nX3F1ZXVlID0ga3dhcmdzLmdldCgnc3RhcnRpbmdfcXVldWUnKQogICAgICAgICBzZWxm
Ll9zdG9wcGluZ19xdWV1ZSA9IGt3YXJncy5nZXQoJ3N0b3BwaW5nX3F1ZXVlJykKIAorICAgIGRl
ZiBjYW5jZWwoc2VsZik6CisgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQorCiAgICAgZGVm
IGhhbmRsZV9zdG9wKHNlbGYsIHNyYyk6CiAgICAgICAgIHNlbGYuX3N0b3BwZWQgPSBUcnVlCiAK
QEAgLTYzLDcgKzY3LDcgQEAgY2xhc3MgVGVzdFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIu
QWJzdHJhY3RXb3JrZXIpOgogICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCd0ZXN0
JywgMiwgJ2hpLCBldmVyeWJvZHknKQogCiAgICAgZGVmIGlzX2RvbmUoc2VsZik6Ci0gICAgICAg
IHJldHVybiBzZWxmLl9zdG9wcGVkCisgICAgICAgIHJldHVybiBzZWxmLl9zdG9wcGVkIG9yIHNl
bGYuX2NhbmNlbGVkCiAKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYu
X25hbWUKQEAgLTE1OCw2ICsxNjIsMTYgQEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKICAg
ICAjCiAgICAgIyBBY3R1YWwgdW5pdCB0ZXN0cwogICAgICMKKyAgICBkZWYgdGVzdF9jYW5jZWwo
c2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl93b3JrZXJfbW9kZWw6CisgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgc2VsZi5tYWtlX2Jyb2tlcigpCisgICAgICAgIHdvcmtlciA9IHNlbGYu
X2Jyb2tlci5zdGFydF93b3JrZXIoMCkKKyAgICAgICAgd29ya2VyLmNhbmNlbCgpCisgICAgICAg
IHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3Rlc3QnLCAxLCAnaGVsbG8sIHdvcmxkJykKKyAg
ICAgICAgd29ya2VyLmpvaW4oMC41KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHdvcmtlci5p
c19hbGl2ZSgpKQorCiAgICAgZGVmIHRlc3RfZG9uZShzZWxmKToKICAgICAgICAgaWYgbm90IHNl
bGYuX3dvcmtlcl9tb2RlbDoKICAgICAgICAgICAgIHJldHVybgpAQCAtMTY2LDEwICsxODAsMzIg
QEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3Rf
bWVzc2FnZSgndGVzdCcsIDEsICdoZWxsbywgd29ybGQnKQogICAgICAgICBzZWxmLl9icm9rZXIu
cG9zdF9tZXNzYWdlKCdzdG9wJykKICAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xv
b3AoKQorICAgICAgICB3b3JrZXIuam9pbigwLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
d29ya2VyLmlzX2FsaXZlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlzX2RvbmUo
KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9hbl9pbnQsIDIpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5fYV9zdHIsICdoaSwgZXZlcnlib2R5JykKIAorICAgIGRlZiB0
ZXN0X2xvZ193ZWRnZWRfd29ya2VyKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fd29ya2Vy
X21vZGVsOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHN0YXJ0aW5nX3F1ZXVlID0gc2Vs
Zi5xdWV1ZSgpCisgICAgICAgIHN0b3BwaW5nX3F1ZXVlID0gc2VsZi5xdWV1ZSgpCisgICAgICAg
IHNlbGYubWFrZV9icm9rZXIoKQorICAgICAgICBvYyA9IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2Fw
dHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgd29ya2VyID0gc2Vs
Zi5fYnJva2VyLnN0YXJ0X3dvcmtlcigwLAorICAgICAgICAgICAgc3RhcnRpbmdfcXVldWU9c3Rh
cnRpbmdfcXVldWUsIHN0b3BwaW5nX3F1ZXVlPXN0b3BwaW5nX3F1ZXVlKQorICAgICAgICBzdGFy
dGluZ19xdWV1ZS5nZXQoKQorICAgICAgICB3b3JrZXIubG9nX3dlZGdlZF93b3JrZXIoJ3Rlc3Rf
bmFtZScpCisgICAgICAgIHN0b3BwaW5nX3F1ZXVlLnB1dCgnJykKKyAgICAgICAgc2VsZi5fYnJv
a2VyLnBvc3RfbWVzc2FnZSgnc3RvcCcpCisgICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fbWVzc2Fn
ZV9sb29wKCkKKyAgICAgICAgd29ya2VyLmpvaW4oMC41KQorICAgICAgICBvYy5yZXN0b3JlX291
dHB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uod29ya2VyLmlzX2FsaXZlKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlzX2RvbmUoKSkKKwogICAgIGRlZiB0ZXN0X3Vua25v
d25fbWVzc2FnZShzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX3dvcmtlcl9tb2RlbDoKICAg
ICAgICAgICAgIHJldHVybgpAQCAtMTc3LDggKzIxMywxMCBAQCBjbGFzcyBfVGVzdHNNaXhpbihv
YmplY3QpOgogICAgICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDApCiAg
ICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3Vua25vd24nKQogICAgICAgICBzZWxm
Ll9icm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCisgICAgICAgIHdvcmtlci5qb2luKDAuNSkKIAog
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pc19kb25lKCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2Uod29ya2VyLmlzX2FsaXZlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNl
bGYuX2V4Y2VwdGlvblswXSwgVmFsdWVFcnJvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
c2VsZi5fZXhjZXB0aW9uWzFdLAogICAgICAgICAgICAgIlRlc3RXb3JrZXIvMDogcmVjZWl2ZWQg
bWVzc2FnZSAndW5rbm93bicgaXQgY291bGRuJ3QgaGFuZGxlIikKQEAgLTE4OSw2ICsyMjcsMTEg
QEAgY2xhc3MgSW5saW5lQnJva2VyVGVzdHMoX1Rlc3RzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgX1Rlc3RzTWl4aW4uc2V0VXAoc2VsZikKICAgICAgICAgc2VsZi5fd29ya2Vy
X21vZGVsID0gJ2lubGluZScKIAorICAgIGRlZiB0ZXN0X2xvZ193ZWRnZWRfd29ya2VyKHNlbGYp
OgorICAgICAgICBzZWxmLm1ha2VfYnJva2VyKCkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJv
a2VyLnN0YXJ0X3dvcmtlcigwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25F
cnJvciwgd29ya2VyLmxvZ193ZWRnZWRfd29ya2VyLCBOb25lKQorCiAKIGNsYXNzIE11bHRpUHJv
Y2Vzc0Jyb2tlclRlc3RzKF9UZXN0c01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVm
IHNldFVwKHNlbGYpOgpAQCAtMjM4LDYgKzI4MSwxMCBAQCBjbGFzcyBJbnRlcmZhY2VUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgb2JqID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLl9X
b3JrZXJDb25uZWN0aW9uKGJyb2tlci5fYnJva2VyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouc3RhcnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5ydW4pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5jYW5jZWwpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5pc19hbGl2ZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLmpvaW4sIE5vbmUpCisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5sb2dfd2VkZ2VkX3dv
cmtlciwgTm9uZSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9y
dW5uZXIyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9ydW5uZXIyLnB5CmluZGV4IDlhY2U4YzY3YThlMTlkZGY0MjgxOGE2MmJjNTg0
NjM5MmZlNzRmMTIuLjk2M2RiOTIwNDBiYmY1YWQ1ZGQ3ZDA1NzE4YjlhZDczOWFkY2YyODkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfcnVubmVyMi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lcjIucHkKQEAgLTUyLDYgKzUyLDkgQEAgY2xh
c3MgX1dvcmtlclN0YXRlKG9iamVjdCk6CiAgICAgICAgIHNlbGYud29ya2VyID0gd29ya2VyCiAg
ICAgICAgIHNlbGYubnVtYmVyID0gbnVtYmVyCiAgICAgICAgIHNlbGYuZG9uZSA9IEZhbHNlCisg
ICAgICAgIHNlbGYuY3VycmVudF90ZXN0X25hbWUgPSBOb25lCisgICAgICAgIHNlbGYubmV4dF90
aW1lb3V0ID0gTm9uZQorICAgICAgICBzZWxmLndlZGdlZCA9IEZhbHNlCiAKICAgICBkZWYgX19y
ZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAiX1dvcmtlclN0YXRlKCIgKyBzdHIoc2VsZi5f
X2RpY3RfXykgKyAiKSIKQEAgLTEyMCwxMyArMTIzLDI5IEBAIGNsYXNzIFRlc3RSdW5uZXIyKHRl
c3RfcnVubmVyLlRlc3RSdW5uZXIpOgogCiAgICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkID0g
RmFsc2UKICAgICAgICAgaW50ZXJydXB0ZWQgPSBGYWxzZQotICAgICAgICBpZiBub3Qgc2VsZi5f
b3B0aW9ucy5kcnlfcnVuOgotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX2NoZWNrX2lmX2Rv
bmUoKToKLSAgICAgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9v
cChkZWxheV9zZWNzPTEuMCkKLQotICAgICAgICAgICAgIyBGSVhNRTogY2hlY2sgdGhhdCBhbGwg
dGhlIHdvcmtlcnMgYXJlIGVpdGhlciB3ZWRnZWQgb3IgZGVhZC4KLQotICAgICAgICAjIEZJWE1F
OiBoYW5kbGUgZXhjZXB0aW9ucywgaW50ZXJydXB0cy4KKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKKyAgICAgICAgICAgICAgICB3aGlsZSBu
b3Qgc2VsZi5fY2hlY2tfaWZfZG9uZSgpOgorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyX2Nv
bm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9vcChkZWxheV9zZWNzPTEuMCkKKworICAgICAgICAgICAg
ICAgICMgTWFrZSBzdXJlIGFsbCBvZiB0aGUgd29ya2VycyBoYXZlIHNodXQgZG93biAoaWYgcG9z
c2libGUpLgorICAgICAgICAgICAgICAgIGZvciB3IGluIHNlbGYuX3dvcmtlcnMudmFsdWVzKCk6
CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB3LndlZGdlZCBhbmQgdy53b3JrZXIuaXNfYWxp
dmUoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHcud29ya2VyLmpvaW4oMC41KQorICAgICAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCB3Lndvcmtlci5pc19hbGl2ZSgpCisgICAgICAg
IGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIF9sb2cuaW5mbygiSW50ZXJy
dXB0ZWQsIGV4aXRpbmciKQorICAgICAgICAgICAgZm9yIHcgaW4gc2VsZi5fd29ya2Vycy52YWx1
ZXMoKToKKyAgICAgICAgICAgICAgICB3Lndvcmtlci5jYW5jZWwoKQorICAgICAgICAgICAga2V5
Ym9hcmRfaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCB0ZXN0X3J1bm5lci5UZXN0
UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24sIGU6CisgICAgICAgICAgICBfbG9nLmluZm8oZS5yZWFz
b24pCisgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24uY2FuY2VsX3dvcmtlcnMoKQorICAg
ICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAg
ICMgVW5leHBlY3RlZCBleGNlcHRpb247IGRvbid0IHRyeSB0byBjbGVhbiB1cCB3b3JrZXJzLgor
ICAgICAgICAgICAgX2xvZy5pbmZvKCJFeGNlcHRpb24gcmFpc2VkLCBleGl0aW5nIikKKyAgICAg
ICAgICAgIHJhaXNlCiAKICAgICAgICAgIyBGSVhNRTogaW1wbGVtZW50IHN0YXRzLgogCkBAIC0x
MzcsMTkgKzE1NiwzNiBAQCBjbGFzcyBUZXN0UnVubmVyMih0ZXN0X3J1bm5lci5UZXN0UnVubmVy
KToKIAogICAgIGRlZiBfY2hlY2tfaWZfZG9uZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0
cnVlIGlmZiBhbGwgdGhlIHdvcmtlcnMgaGF2ZSBlaXRoZXIgY29tcGxldGVkIG9yIHdlZGdlZC4i
IiIKLSAgICAgICAgIyBGSVhNRTogaW1wbGVtZW50IHRvIGNoZWNrIGZvciB3ZWRnZWQgd29ya2Vy
cy4KICAgICAgICAgZG9uZSA9IFRydWUKKyAgICAgICAgdCA9IHRpbWUudGltZSgpCiAgICAgICAg
IGZvciB3IGluIHNlbGYuX3dvcmtlcnMudmFsdWVzKCk6Ci0gICAgICAgICAgICBpZiBub3Qgdy5k
b25lOgotICAgICAgICAgICAgICAgIGRvbmUgPSBGYWxzZQorICAgICAgICAgICAgaWYgbm90IHcu
ZG9uZSBhbmQgbm90IHcud2VkZ2VkOgorICAgICAgICAgICAgICAgIG5leHRfdGltZW91dCA9IHcu
bmV4dF90aW1lb3V0CisgICAgICAgICAgICAgICAgV0VER0VfUEFERElORyA9IDQwLjAKKyAgICAg
ICAgICAgICAgICBpZiBuZXh0X3RpbWVvdXQgYW5kIHQgPiBuZXh0X3RpbWVvdXQgKyBXRURHRV9Q
QURESU5HOgorICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICAgICAg
ICAgICAgICB3Lndvcmtlci5sb2dfd2VkZ2VkX3dvcmtlcih3LmN1cnJlbnRfdGVzdF9uYW1lKQor
ICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICAgICAgICAgICAgICB3
LndlZGdlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICBkb25lID0gRmFsc2UKKworICAgICAgICBpZiBkb25lOgorICAgICAgICAgICAgaWYgYW55KFt3
LndlZGdlZCBmb3IgdyBpbiBzZWxmLl93b3JrZXJzLnZhbHVlcygpXSk6CisgICAgICAgICAgICAg
ICAgX2xvZy5lcnJvcignJykKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdSZW1haW5pbmcg
d29ya2VycyBhcmUgd2VkZ2VkLCBiYWlsaW5nIG91dC4nKQorICAgICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoJycpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9sb2cuZGVidWco
J05vIHdlZGdlZCB0aHJlYWRzJykKIAogICAgICAgICAjIEZJWE1FOiBpcyB0aGUgZm9sbG93aW5n
IGxpbmUgc2FmZT8KICAgICAgICAgIyBzZWxmLl9kb25lID0gZG9uZQogICAgICAgICByZXR1cm4g
ZG9uZQogCiAgICAgZGVmIGhhbmRsZV9zdGFydGVkX3Rlc3Qoc2VsZiwgc3JjLCB0ZXN0X2luZm8s
IGhhbmdfdGltZW91dCk6Ci0gICAgICAgICMgRklYTUU6IGltcGxlbWVudAotICAgICAgICBwYXNz
CisgICAgICAgIHcgPSBzZWxmLl93b3JrZXJzW3NyY10KKyAgICAgICAgdy5jdXJyZW50X3Rlc3Rf
bmFtZSA9IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0X2luZm8uZmlsZW5h
bWUpCisgICAgICAgIHcubmV4dF90aW1lb3V0ID0gdGltZS50aW1lKCkgKyBoYW5nX3RpbWVvdXQK
IAogICAgIGRlZiBoYW5kbGVfZG9uZShzZWxmLCBzcmMpOgogICAgICAgICB3ID0gc2VsZi5fd29y
a2Vyc1tzcmNdCkBAIC0xNjMsNiArMTk5LDE1IEBAIGNsYXNzIFRlc3RSdW5uZXIyKHRlc3RfcnVu
bmVyLlRlc3RSdW5uZXIpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYgaGFuZGxlX2ZpbmlzaGVk
X3Rlc3Qoc2VsZiwgc3JjLCByZXN1bHQsIGVsYXBzZWRfdGltZSk6CisgICAgICAgIHcgPSBzZWxm
Ll93b3JrZXJzW3NyY10KKyAgICAgICAgdy5uZXh0X3RpbWVvdXQgPSBOb25lCisgICAgICAgIHcu
Y3VycmVudF90ZXN0X25hbWUgPSBOb25lCisKKyAgICAgICAgaWYgdy53ZWRnZWQ6CisgICAgICAg
ICAgICAjIEhtbS4gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGlmIHdlIGhhdmUgb3VyIHRpbWVvdXRz
CisgICAgICAgICAgICAjIHR1bmVkIHByb3Blcmx5LgorICAgICAgICAgICAgX2xvZy5lcnJvcigi
JXMgdW53ZWRnZWQiLCB3Lm5hbWUpCisKICAgICAgICAgc2VsZi5fdXBkYXRlX3N1bW1hcnlfd2l0
aF9yZXN1bHQoc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFyeSwgcmVzdWx0KQogCiAgICAgICAg
ICMgRklYTUU6IHVwZGF0ZSBzdGF0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3dvcmtlci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3dvcmtlci5weQppbmRleCA0N2Q0
ZmJkYmJlMDhjZTdkZWUxMzc1MDNiNzRmYjY4MWM3NzhlNGE1Li5jMTdlMTZmNzg3MTliNTAwNmMw
MzFmYzAyY2JlYzA3OTBiZGU0YjhkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS93b3JrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvd29ya2VyLnB5CkBAIC00OCwx
MyArNDgsMTggQEAgY2xhc3MgV29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdv
cmtlcik6CiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX25h
bWUgPSAnd29ya2VyLyVkJyAlIHdvcmtlcl9udW1iZXIKICAgICAgICAgc2VsZi5fZG9uZSA9IEZh
bHNlCisgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gRmFsc2UKICAgICAgICAgc2VsZi5fcG9ydCA9
IE5vbmUKIAogICAgIGRlZiBfZGVmZXJyZWRfaW5pdChzZWxmLCBwb3J0KToKICAgICAgICAgc2Vs
Zi5fcG9ydCA9IHBvcnQKIAorICAgIGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgICIiIkF0dGVt
cHQgdG8gYWJvcnQgcHJvY2Vzc2luZyAoYmVzdCBlZmZvcnQpLiIiIgorICAgICAgICBzZWxmLl9j
YW5jZWxlZCA9IFRydWUKKwogICAgIGRlZiBpc19kb25lKHNlbGYpOgotICAgICAgICByZXR1cm4g
c2VsZi5fZG9uZQorICAgICAgICByZXR1cm4gc2VsZi5fZG9uZSBvciBzZWxmLl9jYW5jZWxlZAog
CiAgICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCkBAIC02Miwx
MSArNjcsMjcgQEAgY2xhc3MgV29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdv
cmtlcik6CiAgICAgZGVmIHJ1bihzZWxmLCBwb3J0KToKICAgICAgICAgc2VsZi5fZGVmZXJyZWRf
aW5pdChwb3J0KQogCisgICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiIgogICAgICAgICBfbG9nLmRl
YnVnKCIlcyBzdGFydGluZyIgJSBzZWxmLl9uYW1lKQogCi0gICAgICAgICMgRklYTUU6IG5lZWQg
dG8gYWRkIGluIGVycm9yIGhhbmRsaW5nLCBiZXR0ZXIgbG9nZ2luZy4KLSAgICAgICAgc2VsZi5f
d29ya2VyX2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9vcCgpCi0gICAgICAgIHNlbGYuX3dvcmtl
cl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgnZG9uZScpCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoKQorICAgICAgICAg
ICAgaWYgbm90IHNlbGYuaXNfZG9uZSgpOgorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlv
bkVycm9yKCIlczogcmFuIG91dCBvZiBtZXNzYWdlcyBpbiB3b3JrZXIgcXVldWUuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgc2VsZi5fbmFtZSkKKyAgICAgICAgZXhj
ZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgZXhjZXB0aW9uX21zZyA9ICIsIGlu
dGVycnVwdGVkIgorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBleGNlcHRpb25fbXNnID0g
IiwgZXhjZXB0aW9uIHJhaXNlZCIKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIF9sb2cu
ZGVidWcoIiVzIGRvbmUlcyIgJSAoc2VsZi5fbmFtZSwgZXhjZXB0aW9uX21zZykpCisgICAgICAg
ICAgICBpZiBleGNlcHRpb25fbXNnOgorICAgICAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4
Y19pbmZvKCkKKyAgICAgICAgICAgICAgICBzdGFja191dGlscy5sb2dfdHJhY2ViYWNrKF9sb2cu
ZXJyb3IsIGV4Y19pbmZvWzJdKQorICAgICAgICAgICAgICAgICMgRklYTUU6IEZpZ3VyZSBvdXQg
aG93IHRvIHNlbmQgYSBtZXNzYWdlIHdpdGggYSB0cmFjZWJhY2suCisgICAgICAgICAgICAgICAg
c2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdleGNlcHRpb24nLAorICAgICAg
ICAgICAgICAgICAgICAoZXhjX2luZm9bMF0sIGV4Y19pbmZvWzFdLCBOb25lKSkKKyAgICAgICAg
ICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgnZG9uZScpCiAKICAgICBk
ZWYgaGFuZGxlX3Rlc3RfbGlzdChzZWxmLCBzcmMsIGxpc3RfbmFtZSwgdGVzdF9saXN0KToKICAg
ICAgICAgIyBGSVhNRTogY2hlY2sgdG8gc2VlIGlmIHdlIG5lZWQgdG8gZ2V0IHRoZSBodHRwIGxv
Y2suCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82199</attachid>
            <date>2011-02-11 15:39:28 -0800</date>
            <delta_ts>2011-02-11 18:04:46 -0800</delta_ts>
            <desc>merge in changes from 54070, 54071, update w/ feedback from mihai, tony</desc>
            <filename>bug-54072-20110211153927.patch</filename>
            <type>text/plain</type>
            <size>19665</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgzMDIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNWJlODFmOTRkZDc0ZTc3NzI0ZDVkNjkzZTRjMTk4NDk4
MjEyMWQ4Li5iMjgwYzBjNDMwZWE1M2Q0ZTFkZDhiMjEwYTJkYzhmYTMxMjU0OTA0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjMg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBucnd0
IG11bHRpcHJvY2Vzc2luZzogYWRkIGNvZGUgdG8gaGFuZGxlIGludGVycnVwdHMgYW5kIHdlZGdl
ZAorICAgICAgICB0aHJlYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQwNzIKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgQWRk
cyB0aGUgY2FuY2VsKCksIGlzX2FsaXZlKCksIGpvaW4oKSwgYW5kIGxvZ193ZWRnZWRfd29ya2Vy
KCkKKyAgICAgICAgbWV0aG9kcyB0byB0aGUgV29ya2VyQ29ubmVjdGlvbiBjbGFzcworCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyMi5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS93b3JrZXIucHk6Cisg
ICAgICAgIEFkZHMgdGhlIGNhbmNlbCgpIG1ldGhvZCB0byB0aGUgV29ya2VyIGNsYXNzCisKKzIw
MTEtMDItMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgdXBkYXRlIHRoZSBOUldUIG11
bHRpcHJvY2Vzc2luZyBjb2RlIHRvIHNwYXduIG11bHRpcGxlIHdvcmtlcnMKICAgICAgICAgaW5z
dGVhZCBvZiBqdXN0IHVzaW5nIG9uZS4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlcl93b3JrZXJfYnJva2VyLnB5CmluZGV4IDFiZjZmNjczZjQwMmNjN2NiZjc5NTdmNGUyZTY3
YTI5ZmJlMjY0MDQuLjU1N2JiYjViY2YxZWM0MWE2YTVmNmUxNDllMDIzYzA1Mjc0NzBlNjkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAg
LTYzLDYgKzYzLDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgIF9NdWx0aXByb2Nlc3Npbmdf
UHJvY2VzcyA9IHRocmVhZGluZy5UaHJlYWQKIAogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IHN0YWNrX3V0aWxzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQg
cG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1l
c3NhZ2VfYnJva2VyMgogCkBAIC0yMTksNiArMjIwLDE1IEBAIGNsYXNzIF9Xb3JrZXJDb25uZWN0
aW9uKG1lc3NhZ2VfYnJva2VyMi5Ccm9rZXJDb25uZWN0aW9uKToKICAgICAgICAgbWVzc2FnZV9i
cm9rZXIyLkJyb2tlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCBzZWxmLl9jbGll
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFO
WV9XT1JLRVJfVE9QSUMsIE1BTkFHRVJfVE9QSUMpCiAKKyAgICBkZWYgY2FuY2VsKHNlbGYpOgor
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgaXNfYWxpdmUoc2Vs
Zik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIGRlZiBqb2luKHNl
bGYsIHRpbWVvdXQpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKICAgICBk
ZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIApAQCAt
MjMyLDExICsyNDIsMjYgQEAgY2xhc3MgX1dvcmtlckNvbm5lY3Rpb24obWVzc2FnZV9icm9rZXIy
LkJyb2tlckNvbm5lY3Rpb24pOgogY2xhc3MgX0lubGluZVdvcmtlckNvbm5lY3Rpb24oX1dvcmtl
ckNvbm5lY3Rpb24pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQsIG1hbmFn
ZXJfY2xpZW50LCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIpOgogICAgICAgICBfV29ya2Vy
Q29ubmVjdGlvbi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX251
bWJlciwgcG9ydC5fb3B0aW9ucykKKyAgICAgICAgc2VsZi5fYWxpdmUgPSBGYWxzZQogICAgICAg
ICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxmLl9tYW5hZ2VyX2NsaWVudCA9IG1hbmFn
ZXJfY2xpZW50CiAKKyAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICBzZWxmLl9jbGllbnQu
Y2FuY2VsKCkKKworICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2FsaXZlCisKKyAgICBkZWYgam9pbihzZWxmLCB0aW1lb3V0KToKKyAgICAgICAgYXNzZXJ0IG5v
dCBzZWxmLl9hbGl2ZQorCisgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHRlc3RfbmFt
ZSk6CisgICAgICAgIGFzc2VydCBGYWxzZSwgIl9JbmxpbmVXb3JrZXJDb25uZWN0aW9uLmxvZ193
ZWRnZWRfd29ya2VyKCkgY2FsbGVkIgorCiAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgc2Vs
Zi5fYWxpdmUgPSBUcnVlCiAgICAgICAgIHNlbGYuX2NsaWVudC5ydW4oc2VsZi5fcG9ydCkKKyAg
ICAgICAgc2VsZi5fYWxpdmUgPSBGYWxzZQogCiAgICAgZGVmIHlpZWxkX3RvX2Jyb2tlcihzZWxm
KToKICAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9hbGxfcGVuZGluZyhNQU5BR0VSX1RPUElDLCBz
ZWxmLl9tYW5hZ2VyX2NsaWVudCkKQEAgLTI0OCw2ICsyNzMsMTYgQEAgY2xhc3MgX1RocmVhZGVk
V29ya2VyQ29ubmVjdGlvbih0aHJlYWRpbmcuVGhyZWFkLCBfV29ya2VyQ29ubmVjdGlvbik6CiAg
ICAgICAgIF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2Ns
YXNzLCB3b3JrZXJfbnVtYmVyLCBwb3J0Ll9vcHRpb25zKQogICAgICAgICBzZWxmLl9wb3J0ID0g
cG9ydAogCisgICAgZGVmIGNhbmNlbChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NsaWVu
dC5jYW5jZWwoKQorCisgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBX
ZSBjYW4gcmVtb3ZlIHRoaXMgb25jZSBldmVyeW9uZSBpcyBvbiAyLjYuCisgICAgICAgIHJldHVy
biBzZWxmLmlzQWxpdmUoKQorCisgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHRlc3Rf
bmFtZSk6CisgICAgICAgIHN0YWNrX3V0aWxzLmxvZ190aHJlYWRfc3RhdGUoX2xvZy5lcnJvciwg
c2VsZi5fY2xpZW50Lm5hbWUoKSwgc2VsZi5pZGVudCwgIiBpcyB3ZWRnZWQgb24gdGVzdCAlcyIg
JSB0ZXN0X25hbWUpCisKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBXZSBj
YW4gcmVtb3ZlIHRoaXMgb25jZSBldmVyeW9uZSBpcyBvbiAyLjYuCiAgICAgICAgIGlmIG5vdCBo
YXNhdHRyKHNlbGYsICdpZGVudCcpOgpAQCAtMjYyLDYgKzI5NywxMiBAQCBjbGFzcyBfTXVsdGlQ
cm9jZXNzV29ya2VyQ29ubmVjdGlvbihfTXVsdGlwcm9jZXNzaW5nX1Byb2Nlc3MsIF9Xb3JrZXJD
b25uZWN0aW9uKQogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxm
Ll9wbGF0Zm9ybV9uYW1lID0gcGxhdGZvcm1fbmFtZQogCisgICAgZGVmIGNhbmNlbChzZWxmKToK
KyAgICAgICAgc2VsZi50ZXJtaW5hdGUoKQorCisgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNl
bGYsIHRlc3RfbmFtZSk6CisgICAgICAgIF9sb2cuZXJyb3IoIiVzIChwaWQgJWQpIGlzIHdlZGdl
ZCBvbiB0ZXN0ICVzIiAlIChzZWxmLm5hbWUsIHNlbGYucGlkLCB0ZXN0X25hbWUpKQorCiAgICAg
ZGVmIHJ1bihzZWxmKToKICAgICAgICAgIyBSZS1jb25maWd1cmUgdGhlIGxvZ2dlci4KICAgICAg
ICAgIyBGSVhNRTogZmlndXJlIG91dCBob3cgdG8gZ2V0IGEgaGFuZGxlIHRvIHRoZSByaWdodCBz
dHJlYW0uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtl
cl9icm9rZXJfdW5pdHRlc3QucHkKaW5kZXggMTEwNDAyYjMyNTcyMDY0MGFmY2NhYWVlODg4MTA1
NGYyNGVmODgwYy4uMGY2MzNmZjJmZWI4NjE1ZTMwNDJiZmRkZTU5MzdkYjBmMzNlY2JmNiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tl
cl91bml0dGVzdC5weQpAQCAtNDQsMzggKzQ0LDQ3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBtYW5hZ2VyX3dvcmtlcl9icm9rZXIKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBtZXNzYWdlX2Jyb2tlcjIK
IAogCi1jbGFzcyBUZXN0V29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtl
cik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlcl9jb25uZWN0aW9uLCB3b3JrZXJfbnVt
YmVyLCBvcHRpb25zKToKLSAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24gPSBicm9rZXJf
Y29ubmVjdGlvbgotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxm
Ll93b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgotICAgICAgICBzZWxmLl9uYW1lID0gJ1Rl
c3RXb3JrZXIvJWQnICUgd29ya2VyX251bWJlcgotICAgICAgICBzZWxmLl9zdG9wcGVkID0gRmFs
c2UKLQotICAgIGRlZiBoYW5kbGVfc3RvcChzZWxmLCBzcmMpOgotICAgICAgICBzZWxmLl9zdG9w
cGVkID0gVHJ1ZQotCi0gICAgZGVmIGhhbmRsZV90ZXN0KHNlbGYsIHNyYywgYW5faW50LCBhX3N0
cik6Ci0gICAgICAgIGFzc2VydCBhbl9pbnQgPT0gMQotICAgICAgICBhc3NlcnQgYV9zdHIgPT0g
ImhlbGxvLCB3b3JsZCIKLSAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNz
YWdlKCd0ZXN0JywgMiwgJ2hpLCBldmVyeWJvZHknKQotCi0gICAgZGVmIGlzX2RvbmUoc2VsZik6
Ci0gICAgICAgIHJldHVybiBzZWxmLl9zdG9wcGVkCi0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX25hbWUKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAg
cGFzcwotCi0gICAgZGVmIHJ1bihzZWxmLCBwb3J0KToKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9vcCgpCi0gICAgICAgICAg
ICBzZWxmLl9icm9rZXJfY29ubmVjdGlvbi55aWVsZF90b19icm9rZXIoKQotICAgICAgICAgICAg
c2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdkb25lJykKLSAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHNlbGYuX2Jyb2tlcl9jb25uZWN0aW9uLnBv
c3RfbWVzc2FnZSgnZXhjZXB0aW9uJywgKHR5cGUoZSksIHN0cihlKSwgTm9uZSkpCitkZWYgd29y
a2VyX21ha2VyKHN0YXJ0aW5nX3F1ZXVlPU5vbmUsIHN0b3BwaW5nX3F1ZXVlPU5vbmUpOgorICAg
IGNsYXNzIF9UZXN0V29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6
CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXJfY29ubmVjdGlvbiwgd29ya2VyX251
bWJlciwgb3B0aW9ucyk6CisgICAgICAgICAgICBzZWxmLl9icm9rZXJfY29ubmVjdGlvbiA9IGJy
b2tlcl9jb25uZWN0aW9uCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAg
ICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKKyAgICAgICAgICAg
IHNlbGYuX25hbWUgPSAnVGVzdFdvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVyCisgICAgICAgICAg
ICBzZWxmLl9zdG9wcGVkID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gRmFs
c2UKKyAgICAgICAgICAgIHNlbGYuX3N0YXJ0aW5nX3F1ZXVlID0gc3RhcnRpbmdfcXVldWUKKyAg
ICAgICAgICAgIHNlbGYuX3N0b3BwaW5nX3F1ZXVlID0gc3RvcHBpbmdfcXVldWUKKworICAgICAg
ICBkZWYgaGFuZGxlX3N0b3Aoc2VsZiwgc3JjKToKKyAgICAgICAgICAgIHNlbGYuX3N0b3BwZWQg
PSBUcnVlCisKKyAgICAgICAgZGVmIGhhbmRsZV90ZXN0KHNlbGYsIHNyYywgYW5faW50LCBhX3N0
cik6CisgICAgICAgICAgICBhc3NlcnQgYW5faW50ID09IDEKKyAgICAgICAgICAgIGFzc2VydCBh
X3N0ciA9PSAiaGVsbG8sIHdvcmxkIgorICAgICAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rp
b24ucG9zdF9tZXNzYWdlKCd0ZXN0JywgMiwgJ2hpLCBldmVyeWJvZHknKQorCisgICAgICAgIGRl
ZiBpc19kb25lKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0b3BwZWQgb3Igc2Vs
Zi5fY2FuY2VsZWQKKworICAgICAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgICAgIHJldHVy
biBzZWxmLl9uYW1lCisKKyAgICAgICAgZGVmIGNhbmNlbChzZWxmKToKKyAgICAgICAgICAgIHNl
bGYuX2NhbmNlbGVkID0gVHJ1ZQorCisgICAgICAgIGRlZiBydW4oc2VsZiwgcG9ydCk6CisgICAg
ICAgICAgICBpZiBzZWxmLl9zdGFydGluZ19xdWV1ZToKKyAgICAgICAgICAgICAgICBzZWxmLl9z
dGFydGluZ19xdWV1ZS5wdXQoJycpCisgICAgICAgICAgICBpZiBzZWxmLl9zdG9wcGluZ19xdWV1
ZToKKyAgICAgICAgICAgICAgICBzZWxmLl9zdG9wcGluZ19xdWV1ZS5nZXQoKQorICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2Jyb2tlcl9jb25uZWN0aW9uLnJ1bl9tZXNz
YWdlX2xvb3AoKQorICAgICAgICAgICAgICAgIHNlbGYuX2Jyb2tlcl9jb25uZWN0aW9uLnlpZWxk
X3RvX2Jyb2tlcigpCisgICAgICAgICAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24ucG9z
dF9tZXNzYWdlKCdkb25lJykKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAg
ICAgICAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdleGNlcHRp
b24nLCAodHlwZShlKSwgc3RyKGUpLCBOb25lKSkKKyAgICByZXR1cm4gX1Rlc3RXb3JrZXIKIAog
CiBkZWYgZ2V0X29wdGlvbnMod29ya2VyX21vZGVsKToKQEAgLTg1LDEwICs5NCwxMCBAQCBkZWYg
Z2V0X29wdGlvbnMod29ya2VyX21vZGVsKToKICAgICByZXR1cm4gb3B0aW9ucwogCiAKLWRlZiBt
YWtlX2Jyb2tlcihtYW5hZ2VyLCB3b3JrZXJfbW9kZWwpOgorZGVmIG1ha2VfYnJva2VyKG1hbmFn
ZXIsIHdvcmtlcl9tb2RlbCwgc3RhcnRpbmdfcXVldWU9Tm9uZSwgc3RvcHBpbmdfcXVldWU9Tm9u
ZSk6CiAgICAgb3B0aW9ucyA9IGdldF9vcHRpb25zKHdvcmtlcl9tb2RlbCkKICAgICByZXR1cm4g
bWFuYWdlcl93b3JrZXJfYnJva2VyLmdldChwb3J0LmdldCgidGVzdCIpLCBvcHRpb25zLCBtYW5h
Z2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RXb3JrZXIpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyX21ha2VyKHN0YXJ0aW5n
X3F1ZXVlLCBzdG9wcGluZ19xdWV1ZSkpCiAKIAogY2xhc3MgRnVuY3Rpb25UZXN0cyh1bml0dGVz
dC5UZXN0Q2FzZSk6CkBAIC0xMTIsMTggKzEyMSwxMiBAQCBjbGFzcyBfVGVzdHNNaXhpbihvYmpl
Y3QpOgogICAgICIiIk1peGluIGNsYXNzIHRoYXQgaW1wbGVtZW50cyBhIHNlcmllcyBvZiB0ZXN0
cyB0byBlbmZvcmNlIHRoZQogICAgIGNvbnRyYWN0IGFsbCBpbXBsZW1lbnRhdGlvbnMgbXVzdCBm
b2xsb3cuIiIiCiAKLSAgICAjCi0gICAgIyBNZXRob2RzIHRvIGltcGxlbWVudCB0aGUgTWFuYWdl
ciBzaWRlIG9mIHRoZSBDbGllbnRJbnRlcmZhY2UKLSAgICAjCiAgICAgZGVmIG5hbWUoc2VsZik6
CiAgICAgICAgIHJldHVybiAnVGVzdGVyJwogCiAgICAgZGVmIGlzX2RvbmUoc2VsZik6CiAgICAg
ICAgIHJldHVybiBzZWxmLl9kb25lCiAKLSAgICAjCi0gICAgIyBIYW5kbGVycyBmb3IgdGhlIG1l
c3NhZ2VzIHRoZSBUZXN0V29ya2VyIG1heSBzZW5kLgotICAgICMKICAgICBkZWYgaGFuZGxlX2Rv
bmUoc2VsZiwgc3JjKToKICAgICAgICAgc2VsZi5fZG9uZSA9IFRydWUKIApAQCAtMTM1LDkgKzEz
OCw2IEBAIGNsYXNzIF9UZXN0c01peGluKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2V4Y2VwdGlv
biA9IGV4Y19pbmZvCiAgICAgICAgIHNlbGYuX2RvbmUgPSBUcnVlCiAKLSAgICAjCi0gICAgIyBU
ZXN0aW5nIGhlbHBlciBtZXRob2RzCi0gICAgIwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAg
ICAgc2VsZi5fYW5faW50ID0gTm9uZQogICAgICAgICBzZWxmLl9hX3N0ciA9IE5vbmUKQEAgLTE0
NiwxMiArMTQ2LDIwIEBAIGNsYXNzIF9UZXN0c01peGluKG9iamVjdCk6CiAgICAgICAgIHNlbGYu
X2V4Y2VwdGlvbiA9IE5vbmUKICAgICAgICAgc2VsZi5fd29ya2VyX21vZGVsID0gTm9uZQogCi0g
ICAgZGVmIG1ha2VfYnJva2VyKHNlbGYpOgotICAgICAgICBzZWxmLl9icm9rZXIgPSBtYWtlX2Jy
b2tlcihzZWxmLCBzZWxmLl93b3JrZXJfbW9kZWwpCisgICAgZGVmIG1ha2VfYnJva2VyKHNlbGYs
IHN0YXJ0aW5nX3F1ZXVlPU5vbmUsIHN0b3BwaW5nX3F1ZXVlPU5vbmUpOgorICAgICAgICBzZWxm
Ll9icm9rZXIgPSBtYWtlX2Jyb2tlcihzZWxmLCBzZWxmLl93b3JrZXJfbW9kZWwsIHN0YXJ0aW5n
X3F1ZXVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcGluZ19xdWV1
ZSkKKworICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX3dv
cmtlcl9tb2RlbDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLm1ha2VfYnJva2Vy
KCkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dvcmtlcigwKQorICAgICAg
ICB3b3JrZXIuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgndGVz
dCcsIDEsICdoZWxsbywgd29ybGQnKQorICAgICAgICB3b3JrZXIuam9pbigwLjUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2Uod29ya2VyLmlzX2FsaXZlKCkpCiAKLSAgICAjCi0gICAgIyBBY3R1
YWwgdW5pdCB0ZXN0cwotICAgICMKICAgICBkZWYgdGVzdF9kb25lKHNlbGYpOgogICAgICAgICBp
ZiBub3Qgc2VsZi5fd29ya2VyX21vZGVsOgogICAgICAgICAgICAgcmV0dXJuCkBAIC0xNjAsMTAg
KzE2OCwzMSBAQCBjbGFzcyBfVGVzdHNNaXhpbihvYmplY3QpOgogICAgICAgICBzZWxmLl9icm9r
ZXIucG9zdF9tZXNzYWdlKCd0ZXN0JywgMSwgJ2hlbGxvLCB3b3JsZCcpCiAgICAgICAgIHNlbGYu
X2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3N0b3AnKQogICAgICAgICBzZWxmLl9icm9rZXIucnVuX21l
c3NhZ2VfbG9vcCgpCisgICAgICAgIHdvcmtlci5qb2luKDAuNSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZSh3b3JrZXIuaXNfYWxpdmUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYu
aXNfZG9uZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2FuX2ludCwgMikKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9hX3N0ciwgJ2hpLCBldmVyeWJvZHknKQogCisg
ICAgZGVmIHRlc3RfbG9nX3dlZGdlZF93b3JrZXIoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxm
Ll93b3JrZXJfbW9kZWw6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc3RhcnRpbmdfcXVl
dWUgPSBzZWxmLnF1ZXVlKCkKKyAgICAgICAgc3RvcHBpbmdfcXVldWUgPSBzZWxmLnF1ZXVlKCkK
KyAgICAgICAgc2VsZi5tYWtlX2Jyb2tlcihzdGFydGluZ19xdWV1ZSwgc3RvcHBpbmdfcXVldWUp
CisgICAgICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRDYXB0dXJlKCkKKyAgICAgICAgb2Mu
Y2FwdHVyZV9vdXRwdXQoKQorICAgICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29y
a2VyKDApCisgICAgICAgIHN0YXJ0aW5nX3F1ZXVlLmdldCgpCisgICAgICAgIHdvcmtlci5sb2df
d2VkZ2VkX3dvcmtlcigndGVzdF9uYW1lJykKKyAgICAgICAgc3RvcHBpbmdfcXVldWUucHV0KCcn
KQorICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCdzdG9wJykKKyAgICAgICAgc2Vs
Zi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xvb3AoKQorICAgICAgICB3b3JrZXIuam9pbigwLjUpCisg
ICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3b3Jr
ZXIuaXNfYWxpdmUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXNfZG9uZSgpKQor
CiAgICAgZGVmIHRlc3RfdW5rbm93bl9tZXNzYWdlKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2Vs
Zi5fd29ya2VyX21vZGVsOgogICAgICAgICAgICAgcmV0dXJuCkBAIC0xNzEsOCArMjAwLDEwIEBA
IGNsYXNzIF9UZXN0c01peGluKG9iamVjdCk6CiAgICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tl
ci5zdGFydF93b3JrZXIoMCkKICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgndW5r
bm93bicpCiAgICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fbWVzc2FnZV9sb29wKCkKKyAgICAgICAg
d29ya2VyLmpvaW4oMC41KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlzX2RvbmUo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3b3JrZXIuaXNfYWxpdmUoKSkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fZXhjZXB0aW9uWzBdLCBWYWx1ZUVycm9yKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9leGNlcHRpb25bMV0sCiAgICAgICAgICAgICAiVGVz
dFdvcmtlci8wOiByZWNlaXZlZCBtZXNzYWdlICd1bmtub3duJyBpdCBjb3VsZG4ndCBoYW5kbGUi
KQpAQCAtMTgzLDYgKzIxNCwxMSBAQCBjbGFzcyBJbmxpbmVCcm9rZXJUZXN0cyhfVGVzdHNNaXhp
biwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBfVGVzdHNNaXhpbi5zZXRVcChzZWxmKQog
ICAgICAgICBzZWxmLl93b3JrZXJfbW9kZWwgPSAnaW5saW5lJwogCisgICAgZGVmIHRlc3RfbG9n
X3dlZGdlZF93b3JrZXIoc2VsZik6CisgICAgICAgIHNlbGYubWFrZV9icm9rZXIoKQorICAgICAg
ICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDApCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCB3b3JrZXIubG9nX3dlZGdlZF93b3JrZXIsIE5vbmUp
CisKIAogY2xhc3MgTXVsdGlQcm9jZXNzQnJva2VyVGVzdHMoX1Rlc3RzTWl4aW4sIHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0yMDEsNiArMjM3LDggQEAgY2xh
c3MgVGhyZWFkZWRCcm9rZXJUZXN0cyhfVGVzdHNNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBfVGVzdHNNaXhpbi5zZXRVcChzZWxmKQogICAgICAgICBzZWxmLl93b3JrZXJfbW9k
ZWwgPSAndGhyZWFkcycKIAorICAgIGRlZiBxdWV1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFF1
ZXVlLlF1ZXVlKCkKIAogY2xhc3MgRnVuY3Rpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIHRlc3RfcnVudGltZV9vcHRpb25zKHNlbGYpOgpAQCAtMjI2LDcgKzI2NCwxMCBAQCBj
bGFzcyBJbnRlcmZhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBUZXN0IHRo
YXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFuZCBoYXZlIHRoZQog
ICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCiAgICAgICAgIGJyb2tlciA9IG1ha2VfYnJv
a2VyKHNlbGYsICdpbmxpbmUnKQotICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIu
X1dvcmtlckNvbm5lY3Rpb24oYnJva2VyLl9icm9rZXIsIFRlc3RXb3JrZXIsIDAsIE5vbmUpCisg
ICAgICAgIG9iaiA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5fV29ya2VyQ29ubmVjdGlvbihicm9r
ZXIuX2Jyb2tlciwgd29ya2VyX21ha2VyKCksIDAsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5jYW5jZWwpCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5pc19hbGl2ZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLmpvaW4sIE5vbmUpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5zdGFydCkKICAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLnJ1bikKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9ydW5uZXIyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIyLnB5CmluZGV4IGFjMmRlMTc1NjM5NjNlNTVk
NjFlMzMyODU1MmNlZjlhZWQyYjY5NDUuLjY0ZjJhYzdkNjFhM2IyZDZlM2QxNTgzZDI2MGQ3ODRh
ZmU0ZWE0N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyMi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lcjIucHkKQEAgLTUyLDYg
KzUyLDkgQEAgY2xhc3MgX1dvcmtlclN0YXRlKG9iamVjdCk6CiAgICAgICAgIHNlbGYud29ya2Vy
ID0gd29ya2VyCiAgICAgICAgIHNlbGYubnVtYmVyID0gbnVtYmVyCiAgICAgICAgIHNlbGYuZG9u
ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuY3VycmVudF90ZXN0X25hbWUgPSBOb25lCisgICAgICAg
IHNlbGYubmV4dF90aW1lb3V0ID0gTm9uZQorICAgICAgICBzZWxmLndlZGdlZCA9IEZhbHNlCiAK
ICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAiX1dvcmtlclN0YXRlKCIg
KyBzdHIoc2VsZi5fX2RpY3RfXykgKyAiKSIKQEAgLTcyLDggKzc1LDE5IEBAIGNsYXNzIFRlc3RS
dW5uZXIyKHRlc3RfcnVubmVyLlRlc3RSdW5uZXIpOgogICAgICAgICByZXR1cm4gd29ya2VycyBh
bmQgYWxsKHNlbGYuX3dvcmtlcl9pc19kb25lKHdvcmtlcikgZm9yIHdvcmtlciBpbiB3b3JrZXJz
KQogCiAgICAgZGVmIF93b3JrZXJfaXNfZG9uZShzZWxmLCB3b3JrZXIpOgotICAgICAgICAjIEZJ
WE1FOiBjaGVjayBpZiB0aGUgd29ya2VyIGlzIHdlZGdlZC4KLSAgICAgICAgcmV0dXJuIHdvcmtl
ci5kb25lCisgICAgICAgIHQgPSB0aW1lLnRpbWUoKQorICAgICAgICBpZiB3b3JrZXIuZG9uZSBv
ciB3b3JrZXIud2VkZ2VkOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBuZXh0
X3RpbWVvdXQgPSB3b3JrZXIubmV4dF90aW1lb3V0CisgICAgICAgIFdFREdFX1BBRERJTkcgPSA0
MC4wCisgICAgICAgIGlmIG5leHRfdGltZW91dCBhbmQgdCA+IG5leHRfdGltZW91dCArIFdFREdF
X1BBRERJTkc6CisgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICAgICAgd29ya2Vy
Lndvcmtlci5sb2dfd2VkZ2VkX3dvcmtlcih3b3JrZXIuY3VycmVudF90ZXN0X25hbWUpCisgICAg
ICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICAgICAgd29ya2VyLndlZGdlZCA9IFRydWUK
KyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVm
IG5hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiAnVGVzdFJ1bm5lcjInCkBAIC0xMzEsMTIgKzE0
NSwzOSBAQCBjbGFzcyBUZXN0UnVubmVyMih0ZXN0X3J1bm5lci5UZXN0UnVubmVyKToKIAogICAg
ICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IEZhbHNlCiAgICAgICAgIGludGVycnVwdGVkID0g
RmFsc2UKLSAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKLSAgICAgICAgICAg
IHdoaWxlIG5vdCBzZWxmLmlzX2RvbmUoKToKLSAgICAgICAgICAgICAgICAjIFdlIGxvb3Agd2l0
aCBhIHRpbWVvdXQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBkZXRlY3Qgd2VkZ2VkIHRocmVhZHMu
Ci0gICAgICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoZGVs
YXlfc2Vjcz0xLjApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRp
b25zLmRyeV9ydW46CisgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuaXNfZG9uZSgpOgor
ICAgICAgICAgICAgICAgICAgICAjIFdlIGxvb3Agd2l0aCBhIHRpbWVvdXQgaW4gb3JkZXIgdG8g
YmUgYWJsZSB0byBkZXRlY3Qgd2VkZ2VkIHRocmVhZHMuCisgICAgICAgICAgICAgICAgICAgIG1h
bmFnZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKGRlbGF5X3NlY3M9MS4wKQorCisgICAg
ICAgICAgICAgICAgaWYgYW55KHdvcmtlci53ZWRnZWQgZm9yIHdvcmtlciBpbiBzZWxmLl93b3Jr
ZXJzLnZhbHVlcygpKToKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKKyAgICAg
ICAgICAgICAgICAgICAgX2xvZy5lcnJvcignUmVtYWluaW5nIHdvcmtlcnMgYXJlIHdlZGdlZCwg
YmFpbGluZyBvdXQuJykKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignJykKKyAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCdObyB3ZWRn
ZWQgdGhyZWFkcycpCisKKyAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSBhbGwgb2YgdGhlIHdv
cmtlcnMgaGF2ZSBzaHV0IGRvd24gKGlmIHBvc3NpYmxlKS4KKyAgICAgICAgICAgICAgICBmb3Ig
d29ya2VyX29iaiBpbiBzZWxmLl93b3JrZXJzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgICAg
ICBpZiBub3Qgd29ya2VyX29iai53ZWRnZWQgYW5kIHdvcmtlcl9vYmoud29ya2VyLmlzX2FsaXZl
KCk6CisgICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJfb2JqLndvcmtlci5qb2luKDAuNSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBub3Qgd29ya2VyX29iai53b3JrZXIuaXNf
YWxpdmUoKQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICBf
bG9nLmluZm8oIkludGVycnVwdGVkLCBleGl0aW5nIikKKyAgICAgICAgICAgIGZvciB3b3JrZXJf
b2JqIGluIHNlbGYuX3dvcmtlcnMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgd29ya2VyX29i
ai53b3JrZXIuY2FuY2VsKCkKKyAgICAgICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkID0gVHJ1
ZQorICAgICAgICBleGNlcHQgdGVzdF9ydW5uZXIuVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9u
LCBlOgorICAgICAgICAgICAgX2xvZy5pbmZvKGUucmVhc29uKQorICAgICAgICAgICAgZm9yIHdv
cmtlcl9vYmogaW4gc2VsZi5fd29ya2Vycy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICB3b3Jr
ZXJfb2JqLndvcmtlci5jYW5jZWwoKQorICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCisg
ICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgVW5leHBlY3RlZCBleGNlcHRpb247IGRvbid0
IHRyeSB0byBjbGVhbiB1cCB3b3JrZXJzLgorICAgICAgICAgICAgX2xvZy5pbmZvKCJFeGNlcHRp
b24gcmFpc2VkLCBleGl0aW5nIikKKyAgICAgICAgICAgIHJhaXNlCiAKLSAgICAgICAgIyBGSVhN
RTogaGFuZGxlIGV4Y2VwdGlvbnMsIGludGVycnVwdHMuCiAKICAgICAgICAgIyBGSVhNRTogaW1w
bGVtZW50IHN0YXRzLgogCkBAIC0xNDcsOCArMTg4LDkgQEAgY2xhc3MgVGVzdFJ1bm5lcjIodGVz
dF9ydW5uZXIuVGVzdFJ1bm5lcik6CiAgICAgICAgICAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHMs
IHNlbGYuX2FsbF9yZXN1bHRzKQogCiAgICAgZGVmIGhhbmRsZV9zdGFydGVkX3Rlc3Qoc2VsZiwg
c291cmNlLCB0ZXN0X2luZm8sIGhhbmdfdGltZW91dCk6Ci0gICAgICAgICMgRklYTUU6IGltcGxl
bWVudAotICAgICAgICBwYXNzCisgICAgICAgIHdvcmtlciA9IHNlbGYuX3dvcmtlcnNbc291cmNl
XQorICAgICAgICB3b3JrZXIuY3VycmVudF90ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZl
X3Rlc3RfZmlsZW5hbWUodGVzdF9pbmZvLmZpbGVuYW1lKQorICAgICAgICB3b3JrZXIubmV4dF90
aW1lb3V0ID0gdGltZS50aW1lKCkgKyBoYW5nX3RpbWVvdXQKIAogICAgIGRlZiBoYW5kbGVfZG9u
ZShzZWxmLCBzb3VyY2UpOgogICAgICAgICB3b3JrZXIgPSBzZWxmLl93b3JrZXJzW3NvdXJjZV0K
QEAgLTE2Miw2ICsyMDQsMTQgQEAgY2xhc3MgVGVzdFJ1bm5lcjIodGVzdF9ydW5uZXIuVGVzdFJ1
bm5lcik6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfdGVzdChzZWxm
LCBzb3VyY2UsIHJlc3VsdCwgZWxhcHNlZF90aW1lKToKKyAgICAgICAgd29ya2VyID0gc2VsZi5f
d29ya2Vyc1tzb3VyY2VdCisgICAgICAgIHdvcmtlci5uZXh0X3RpbWVvdXQgPSBOb25lCisgICAg
ICAgIHdvcmtlci5jdXJyZW50X3Rlc3RfbmFtZSA9IE5vbmUKKworICAgICAgICBpZiB3b3JrZXIu
d2VkZ2VkOgorICAgICAgICAgICAgIyBUaGlzIHNob3VsZG4ndCBoYXBwZW4gaWYgd2UgaGF2ZSBv
dXIgdGltZW91dHMgdHVuZWQgcHJvcGVybHkuCisgICAgICAgICAgICBfbG9nLmVycm9yKCIlcyB1
bndlZGdlZCIsIHcubmFtZSkKKwogICAgICAgICBzZWxmLl91cGRhdGVfc3VtbWFyeV93aXRoX3Jl
c3VsdChzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1tYXJ5LCByZXN1bHQpCiAKICAgICAgICAgIyBG
SVhNRTogdXBkYXRlIHN0YXRzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvd29ya2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvd29ya2VyLnB5CmluZGV4IDQ3ZDRmYmRi
YmUwOGNlN2RlZTEzNzUwM2I3NGZiNjgxYzc3OGU0YTUuLmMxN2UxNmY3ODcxOWI1MDA2YzAzMWZj
MDJjYmVjMDc5MGJkZTRiOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3dvcmtlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS93b3JrZXIucHkKQEAgLTQ4LDEzICs0
OCwxOCBAQCBjbGFzcyBXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2Vy
KToKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fbmFtZSA9
ICd3b3JrZXIvJWQnICUgd29ya2VyX251bWJlcgogICAgICAgICBzZWxmLl9kb25lID0gRmFsc2UK
KyAgICAgICAgc2VsZi5fY2FuY2VsZWQgPSBGYWxzZQogICAgICAgICBzZWxmLl9wb3J0ID0gTm9u
ZQogCiAgICAgZGVmIF9kZWZlcnJlZF9pbml0KHNlbGYsIHBvcnQpOgogICAgICAgICBzZWxmLl9w
b3J0ID0gcG9ydAogCisgICAgZGVmIGNhbmNlbChzZWxmKToKKyAgICAgICAgIiIiQXR0ZW1wdCB0
byBhYm9ydCBwcm9jZXNzaW5nIChiZXN0IGVmZm9ydCkuIiIiCisgICAgICAgIHNlbGYuX2NhbmNl
bGVkID0gVHJ1ZQorCiAgICAgZGVmIGlzX2RvbmUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
Ll9kb25lCisgICAgICAgIHJldHVybiBzZWxmLl9kb25lIG9yIHNlbGYuX2NhbmNlbGVkCiAKICAg
ICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKQEAgLTYyLDExICs2
NywyNyBAQCBjbGFzcyBXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2Vy
KToKICAgICBkZWYgcnVuKHNlbGYsIHBvcnQpOgogICAgICAgICBzZWxmLl9kZWZlcnJlZF9pbml0
KHBvcnQpCiAKKyAgICAgICAgZXhjZXB0aW9uX21zZyA9ICIiCiAgICAgICAgIF9sb2cuZGVidWco
IiVzIHN0YXJ0aW5nIiAlIHNlbGYuX25hbWUpCiAKLSAgICAgICAgIyBGSVhNRTogbmVlZCB0byBh
ZGQgaW4gZXJyb3IgaGFuZGxpbmcsIGJldHRlciBsb2dnaW5nLgotICAgICAgICBzZWxmLl93b3Jr
ZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKCkKLSAgICAgICAgc2VsZi5fd29ya2VyX2Nv
bm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdkb25lJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
c2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9vcCgpCisgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5pc19kb25lKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJy
b3IoIiVzOiByYW4gb3V0IG9mIG1lc3NhZ2VzIGluIHdvcmtlciBxdWV1ZS4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBzZWxmLl9uYW1lKQorICAgICAgICBleGNlcHQg
S2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICBleGNlcHRpb25fbXNnID0gIiwgaW50ZXJy
dXB0ZWQiCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiLCBl
eGNlcHRpb24gcmFpc2VkIgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX2xvZy5kZWJ1
ZygiJXMgZG9uZSVzIiAlIChzZWxmLl9uYW1lLCBleGNlcHRpb25fbXNnKSkKKyAgICAgICAgICAg
IGlmIGV4Y2VwdGlvbl9tc2c6CisgICAgICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2lu
Zm8oKQorICAgICAgICAgICAgICAgIHN0YWNrX3V0aWxzLmxvZ190cmFjZWJhY2soX2xvZy5lcnJv
ciwgZXhjX2luZm9bMl0pCisgICAgICAgICAgICAgICAgIyBGSVhNRTogRmlndXJlIG91dCBob3cg
dG8gc2VuZCBhIG1lc3NhZ2Ugd2l0aCBhIHRyYWNlYmFjay4KKyAgICAgICAgICAgICAgICBzZWxm
Ll93b3JrZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ2V4Y2VwdGlvbicsCisgICAgICAgICAg
ICAgICAgICAgIChleGNfaW5mb1swXSwgZXhjX2luZm9bMV0sIE5vbmUpKQorICAgICAgICAgICAg
c2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdkb25lJykKIAogICAgIGRlZiBo
YW5kbGVfdGVzdF9saXN0KHNlbGYsIHNyYywgbGlzdF9uYW1lLCB0ZXN0X2xpc3QpOgogICAgICAg
ICAjIEZJWE1FOiBjaGVjayB0byBzZWUgaWYgd2UgbmVlZCB0byBnZXQgdGhlIGh0dHAgbG9jay4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82218</attachid>
            <date>2011-02-11 18:04:49 -0800</date>
            <delta_ts>2011-02-14 14:09:34 -0800</delta_ts>
            <desc>merge in more changes from 54070, 54071</desc>
            <filename>bug-54072-20110211180447.patch</filename>
            <type>text/plain</type>
            <size>21459</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgzMDIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNWJlODFmOTRkZDc0ZTc3NzI0ZDVkNjkzZTRjMTk4NDk4
MjEyMWQ4Li5iMjgwYzBjNDMwZWE1M2Q0ZTFkZDhiMjEwYTJkYzhmYTMxMjU0OTA0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjMg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBucnd0
IG11bHRpcHJvY2Vzc2luZzogYWRkIGNvZGUgdG8gaGFuZGxlIGludGVycnVwdHMgYW5kIHdlZGdl
ZAorICAgICAgICB0aHJlYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQwNzIKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgQWRk
cyB0aGUgY2FuY2VsKCksIGlzX2FsaXZlKCksIGpvaW4oKSwgYW5kIGxvZ193ZWRnZWRfd29ya2Vy
KCkKKyAgICAgICAgbWV0aG9kcyB0byB0aGUgV29ya2VyQ29ubmVjdGlvbiBjbGFzcworCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyMi5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS93b3JrZXIucHk6Cisg
ICAgICAgIEFkZHMgdGhlIGNhbmNlbCgpIG1ldGhvZCB0byB0aGUgV29ya2VyIGNsYXNzCisKKzIw
MTEtMDItMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgdXBkYXRlIHRoZSBOUldUIG11
bHRpcHJvY2Vzc2luZyBjb2RlIHRvIHNwYXduIG11bHRpcGxlIHdvcmtlcnMKICAgICAgICAgaW5z
dGVhZCBvZiBqdXN0IHVzaW5nIG9uZS4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlcl93b3JrZXJfYnJva2VyLnB5CmluZGV4IGEwZjI1MmNmY2QwYTQ3NzQ0OWYyYjY2MTVjMTcy
YjA3Yjg2YTQ1ZWIuLjIzOTdmZGNhOTI5MDAxZGJkNzVkNDJlZjlhYWQ0ODU0NDE0MzkwMDEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAg
LTYzLDYgKzYzLDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgIF9NdWx0aXByb2Nlc3Npbmdf
UHJvY2VzcyA9IHRocmVhZGluZy5UaHJlYWQKIAogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IHN0YWNrX3V0aWxzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQg
cG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1l
c3NhZ2VfYnJva2VyMgogCkBAIC0yMTksNiArMjIwLDE4IEBAIGNsYXNzIF9Xb3JrZXJDb25uZWN0
aW9uKG1lc3NhZ2VfYnJva2VyMi5Ccm9rZXJDb25uZWN0aW9uKToKICAgICAgICAgbWVzc2FnZV9i
cm9rZXIyLkJyb2tlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCBzZWxmLl9jbGll
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFO
WV9XT1JLRVJfVE9QSUMsIE1BTkFHRVJfVE9QSUMpCiAKKyAgICBkZWYgY2FuY2VsKHNlbGYpOgor
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgaXNfYWxpdmUoc2Vs
Zik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIGRlZiBqb2luKHNl
bGYsIHRpbWVvdXQpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBk
ZWYgbG9nX3dlZGdlZF93b3JrZXIoc2VsZiwgdGVzdF9uYW1lKToKKyAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcgorCiAgICAgZGVmIHlpZWxkX3RvX2Jyb2tlcihzZWxmKToKICAgICAg
ICAgcGFzcwogCkBAIC0yMjYsMTEgKzIzOSwyNiBAQCBjbGFzcyBfV29ya2VyQ29ubmVjdGlvbiht
ZXNzYWdlX2Jyb2tlcjIuQnJva2VyQ29ubmVjdGlvbik6CiBjbGFzcyBfSW5saW5lV29ya2VyQ29u
bmVjdGlvbihfV29ya2VyQ29ubmVjdGlvbik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tl
ciwgcG9ydCwgbWFuYWdlcl9jbGllbnQsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlcik6CiAg
ICAgICAgIF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2Ns
YXNzLCB3b3JrZXJfbnVtYmVyLCBwb3J0Ll9vcHRpb25zKQorICAgICAgICBzZWxmLl9hbGl2ZSA9
IEZhbHNlCiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX21hbmFnZXJf
Y2xpZW50ID0gbWFuYWdlcl9jbGllbnQKIAorICAgIGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAg
IHNlbGYuX2NsaWVudC5jYW5jZWwoKQorCisgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fYWxpdmUKKworICAgIGRlZiBqb2luKHNlbGYsIHRpbWVvdXQpOgorICAg
ICAgICBhc3NlcnQgbm90IHNlbGYuX2FsaXZlCisKKyAgICBkZWYgbG9nX3dlZGdlZF93b3JrZXIo
c2VsZiwgdGVzdF9uYW1lKToKKyAgICAgICAgYXNzZXJ0IEZhbHNlLCAiX0lubGluZVdvcmtlckNv
bm5lY3Rpb24ubG9nX3dlZGdlZF93b3JrZXIoKSBjYWxsZWQiCisKICAgICBkZWYgcnVuKHNlbGYp
OgorICAgICAgICBzZWxmLl9hbGl2ZSA9IFRydWUKICAgICAgICAgc2VsZi5fY2xpZW50LnJ1bihz
ZWxmLl9wb3J0KQorICAgICAgICBzZWxmLl9hbGl2ZSA9IEZhbHNlCiAKICAgICBkZWYgeWllbGRf
dG9fYnJva2VyKHNlbGYpOgogICAgICAgICBzZWxmLl9icm9rZXIucnVuX2FsbF9wZW5kaW5nKE1B
TkFHRVJfVE9QSUMsIHNlbGYuX21hbmFnZXJfY2xpZW50KQpAQCAtMjQzLDYgKzI3MSwxNiBAQCBj
bGFzcyBfVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9y
dAogICAgICAgICBzZWxmLl9jbGllbnQgPSBjbGllbnQKIAorICAgIGRlZiBjYW5jZWwoc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLl9jbGllbnQuY2FuY2VsKCkKKworICAgIGRlZiBpc19hbGl2
ZShzZWxmKToKKyAgICAgICAgIyBGSVhNRTogV2UgY2FuIHJlbW92ZSB0aGlzIG9uY2UgZXZlcnlv
bmUgaXMgb24gMi42LgorICAgICAgICByZXR1cm4gc2VsZi5pc0FsaXZlKCkKKworICAgIGRlZiBs
b2dfd2VkZ2VkX3dvcmtlcihzZWxmLCB0ZXN0X25hbWUpOgorICAgICAgICBzdGFja191dGlscy5s
b2dfdGhyZWFkX3N0YXRlKF9sb2cuZXJyb3IsIHNlbGYuX2NsaWVudC5uYW1lKCksIHNlbGYuaWRl
bnQsICIgaXMgd2VkZ2VkIG9uIHRlc3QgJXMiICUgdGVzdF9uYW1lKQorCiAgICAgZGVmIHJ1bihz
ZWxmKToKICAgICAgICAgIyBGSVhNRTogV2UgY2FuIHJlbW92ZSB0aGlzIG9uY2UgZXZlcnlvbmUg
aXMgb24gMi42LgogICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnaWRlbnQnKToKQEAgLTI1
NSw2ICsyOTMsMTggQEAgY2xhc3MgX1RocmVhZGVkV29ya2VyQ29ubmVjdGlvbihfV29ya2VyQ29u
bmVjdGlvbik6CiAgICAgICAgIF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tl
ciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCBwb3J0Ll9vcHRpb25zKQogICAgICAgICBz
ZWxmLl90aHJlYWQgPSBfVGhyZWFkKHNlbGYsIHBvcnQsIHNlbGYuX2NsaWVudCkKIAorICAgIGRl
ZiBjYW5jZWwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl90aHJlYWQuY2FuY2VsKCkKKwor
ICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RocmVhZC5pc19h
bGl2ZSgpCisKKyAgICBkZWYgam9pbihzZWxmLCB0aW1lb3V0KToKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3RocmVhZC5qb2luKHRpbWVvdXQpCisKKyAgICBkZWYgbG9nX3dlZGdlZF93b3JrZXIoc2Vs
ZiwgdGVzdF9uYW1lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RocmVhZC5sb2dfd2VkZ2VkX3dv
cmtlcih0ZXN0X25hbWUpCisKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIHNlbGYuX3Ro
cmVhZC5zdGFydCgpCiAKQEAgLTI2Nyw2ICszMTcsMjEgQEAgY2xhc3MgX1Byb2Nlc3MoX011bHRp
cHJvY2Vzc2luZ19Qcm9jZXNzKToKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAg
ICAgICAgc2VsZi5fY2xpZW50ID0gY2xpZW50CiAKKyAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAg
ICAgICBpZiBtdWx0aXByb2Nlc3Npbmc6CisgICAgICAgICAgICBzZWxmLnRlcm1pbmF0ZSgpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9jbGllbnQuY2FuY2VsKCkKKworICAgIGRl
ZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgaWYgbXVsdGlwcm9jZXNzaW5nOgorICAgICAgICAg
ICAgX011bHRpcHJvY2Vzc2luZ19Qcm9jZXNzLmlzX2FsaXZlKHNlbGYpCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5pc0FsaXZlKCkKKworICAgIGRlZiBsb2dfd2VkZ2Vk
X3dvcmtlcihzZWxmLCB0ZXN0X25hbWUpOgorICAgICAgICBfbG9nLmVycm9yKCIlcyAocGlkICVk
KSBpcyB3ZWRnZWQgb24gdGVzdCAlcyIgJSAoc2VsZi5uYW1lLCBzZWxmLnBpZCwgdGVzdF9uYW1l
KSkKKwogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoKQog
ICAgICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KHNlbGYuX3BsYXRmb3JtX25hbWUsIHNlbGYuX29w
dGlvbnMpCkBAIC0yNzgsNSArMzQzLDE3IEBAIGNsYXNzIF9NdWx0aVByb2Nlc3NXb3JrZXJDb25u
ZWN0aW9uKF9Xb3JrZXJDb25uZWN0aW9uKToKICAgICAgICAgX1dvcmtlckNvbm5lY3Rpb24uX19p
bml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIG9wdGlvbnMp
CiAgICAgICAgIHNlbGYuX3Byb2MgPSBfUHJvY2VzcyhzZWxmLCBwbGF0Zm9ybV9uYW1lLCBvcHRp
b25zLCBzZWxmLl9jbGllbnQpCiAKKyAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi5fcHJvYy5jYW5jZWwoKQorCisgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fcHJvYy5pc19hbGl2ZSgpCisKKyAgICBkZWYgam9pbihzZWxmLCB0aW1l
b3V0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2Muam9pbih0aW1lb3V0KQorCisgICAgZGVm
IGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxm
Ll9wcm9jLmxvZ193ZWRnZWRfd29ya2VyKHRlc3RfbmFtZSkKKwogICAgIGRlZiBzdGFydChzZWxm
KToKICAgICAgICAgc2VsZi5fcHJvYy5zdGFydCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9r
ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKaW5kZXggZmZiZTA4
MTA1NjdhY2RiZTA1MDk5ODc4MmZiZjc5OTBiYzRmMDEzZi4uN2NkYzI0MmNhZTk1NTAxMGFiYjUy
MTcwYjhjNDBjOTgwZTliMzJiNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQpAQCAtNDQsMzggKzQ0LDQ3IEBA
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBtYW5hZ2Vy
X3dvcmtlcl9icm9rZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdl
IGltcG9ydCBtZXNzYWdlX2Jyb2tlcjIKIAogCi1jbGFzcyBUZXN0V29ya2VyKG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tl
cl9jb25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyLCBvcHRpb25zKToKLSAgICAgICAgc2VsZi5fYnJv
a2VyX2Nvbm5lY3Rpb24gPSBicm9rZXJfY29ubmVjdGlvbgotICAgICAgICBzZWxmLl9vcHRpb25z
ID0gb3B0aW9ucwotICAgICAgICBzZWxmLl93b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgot
ICAgICAgICBzZWxmLl9uYW1lID0gJ1Rlc3RXb3JrZXIvJWQnICUgd29ya2VyX251bWJlcgotICAg
ICAgICBzZWxmLl9zdG9wcGVkID0gRmFsc2UKLQotICAgIGRlZiBoYW5kbGVfc3RvcChzZWxmLCBz
cmMpOgotICAgICAgICBzZWxmLl9zdG9wcGVkID0gVHJ1ZQotCi0gICAgZGVmIGhhbmRsZV90ZXN0
KHNlbGYsIHNyYywgYW5faW50LCBhX3N0cik6Ci0gICAgICAgIGFzc2VydCBhbl9pbnQgPT0gMQot
ICAgICAgICBhc3NlcnQgYV9zdHIgPT0gImhlbGxvLCB3b3JsZCIKLSAgICAgICAgc2VsZi5fYnJv
a2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCd0ZXN0JywgMiwgJ2hpLCBldmVyeWJvZHknKQot
Ci0gICAgZGVmIGlzX2RvbmUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zdG9wcGVkCi0K
LSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKLQotICAgIGRl
ZiBzdGFydChzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHJ1bihzZWxmLCBwb3J0KToK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24ucnVuX21l
c3NhZ2VfbG9vcCgpCi0gICAgICAgICAgICBzZWxmLl9icm9rZXJfY29ubmVjdGlvbi55aWVsZF90
b19icm9rZXIoKQotICAgICAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNz
YWdlKCdkb25lJykKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHNl
bGYuX2Jyb2tlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgnZXhjZXB0aW9uJywgKHR5cGUoZSks
IHN0cihlKSwgTm9uZSkpCitkZWYgd29ya2VyX21ha2VyKHN0YXJ0aW5nX3F1ZXVlPU5vbmUsIHN0
b3BwaW5nX3F1ZXVlPU5vbmUpOgorICAgIGNsYXNzIF9UZXN0V29ya2VyKG1hbmFnZXJfd29ya2Vy
X2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9r
ZXJfY29ubmVjdGlvbiwgd29ya2VyX251bWJlciwgb3B0aW9ucyk6CisgICAgICAgICAgICBzZWxm
Ll9icm9rZXJfY29ubmVjdGlvbiA9IGJyb2tlcl9jb25uZWN0aW9uCisgICAgICAgICAgICBzZWxm
Ll9vcHRpb25zID0gb3B0aW9ucworICAgICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdv
cmtlcl9udW1iZXIKKyAgICAgICAgICAgIHNlbGYuX25hbWUgPSAnVGVzdFdvcmtlci8lZCcgJSB3
b3JrZXJfbnVtYmVyCisgICAgICAgICAgICBzZWxmLl9zdG9wcGVkID0gRmFsc2UKKyAgICAgICAg
ICAgIHNlbGYuX2NhbmNlbGVkID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuX3N0YXJ0aW5nX3F1
ZXVlID0gc3RhcnRpbmdfcXVldWUKKyAgICAgICAgICAgIHNlbGYuX3N0b3BwaW5nX3F1ZXVlID0g
c3RvcHBpbmdfcXVldWUKKworICAgICAgICBkZWYgaGFuZGxlX3N0b3Aoc2VsZiwgc3JjKToKKyAg
ICAgICAgICAgIHNlbGYuX3N0b3BwZWQgPSBUcnVlCisKKyAgICAgICAgZGVmIGhhbmRsZV90ZXN0
KHNlbGYsIHNyYywgYW5faW50LCBhX3N0cik6CisgICAgICAgICAgICBhc3NlcnQgYW5faW50ID09
IDEKKyAgICAgICAgICAgIGFzc2VydCBhX3N0ciA9PSAiaGVsbG8sIHdvcmxkIgorICAgICAgICAg
ICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCd0ZXN0JywgMiwgJ2hpLCBl
dmVyeWJvZHknKQorCisgICAgICAgIGRlZiBpc19kb25lKHNlbGYpOgorICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX3N0b3BwZWQgb3Igc2VsZi5fY2FuY2VsZWQKKworICAgICAgICBkZWYgbmFtZShz
ZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCisKKyAgICAgICAgZGVmIGNhbmNl
bChzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQorCisgICAgICAgIGRl
ZiBydW4oc2VsZiwgcG9ydCk6CisgICAgICAgICAgICBpZiBzZWxmLl9zdGFydGluZ19xdWV1ZToK
KyAgICAgICAgICAgICAgICBzZWxmLl9zdGFydGluZ19xdWV1ZS5wdXQoJycpCisgICAgICAgICAg
ICBpZiBzZWxmLl9zdG9wcGluZ19xdWV1ZToKKyAgICAgICAgICAgICAgICBzZWxmLl9zdG9wcGlu
Z19xdWV1ZS5nZXQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2Jy
b2tlcl9jb25uZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoKQorICAgICAgICAgICAgICAgIHNlbGYu
X2Jyb2tlcl9jb25uZWN0aW9uLnlpZWxkX3RvX2Jyb2tlcigpCisgICAgICAgICAgICAgICAgc2Vs
Zi5fYnJva2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdkb25lJykKKyAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgICAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rp
b24ucG9zdF9tZXNzYWdlKCdleGNlcHRpb24nLCAodHlwZShlKSwgc3RyKGUpLCBOb25lKSkKKyAg
ICByZXR1cm4gX1Rlc3RXb3JrZXIKIAogCiBkZWYgZ2V0X29wdGlvbnMod29ya2VyX21vZGVsKToK
QEAgLTg1LDEwICs5NCwxMCBAQCBkZWYgZ2V0X29wdGlvbnMod29ya2VyX21vZGVsKToKICAgICBy
ZXR1cm4gb3B0aW9ucwogCiAKLWRlZiBtYWtlX2Jyb2tlcihtYW5hZ2VyLCB3b3JrZXJfbW9kZWwp
OgorZGVmIG1ha2VfYnJva2VyKG1hbmFnZXIsIHdvcmtlcl9tb2RlbCwgc3RhcnRpbmdfcXVldWU9
Tm9uZSwgc3RvcHBpbmdfcXVldWU9Tm9uZSk6CiAgICAgb3B0aW9ucyA9IGdldF9vcHRpb25zKHdv
cmtlcl9tb2RlbCkKICAgICByZXR1cm4gbWFuYWdlcl93b3JrZXJfYnJva2VyLmdldChwb3J0Lmdl
dCgidGVzdCIpLCBvcHRpb25zLCBtYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRlc3RXb3JrZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd29ya2VyX21ha2VyKHN0YXJ0aW5nX3F1ZXVlLCBzdG9wcGluZ19xdWV1ZSkpCiAKIAogY2xh
c3MgRnVuY3Rpb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMTIsMTggKzEyMSwxMiBA
QCBjbGFzcyBfVGVzdHNNaXhpbihvYmplY3QpOgogICAgICIiIk1peGluIGNsYXNzIHRoYXQgaW1w
bGVtZW50cyBhIHNlcmllcyBvZiB0ZXN0cyB0byBlbmZvcmNlIHRoZQogICAgIGNvbnRyYWN0IGFs
bCBpbXBsZW1lbnRhdGlvbnMgbXVzdCBmb2xsb3cuIiIiCiAKLSAgICAjCi0gICAgIyBNZXRob2Rz
IHRvIGltcGxlbWVudCB0aGUgTWFuYWdlciBzaWRlIG9mIHRoZSBDbGllbnRJbnRlcmZhY2UKLSAg
ICAjCiAgICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiAnVGVzdGVyJwogCiAgICAg
ZGVmIGlzX2RvbmUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9kb25lCiAKLSAgICAjCi0g
ICAgIyBIYW5kbGVycyBmb3IgdGhlIG1lc3NhZ2VzIHRoZSBUZXN0V29ya2VyIG1heSBzZW5kLgot
ICAgICMKICAgICBkZWYgaGFuZGxlX2RvbmUoc2VsZiwgc3JjKToKICAgICAgICAgc2VsZi5fZG9u
ZSA9IFRydWUKIApAQCAtMTM1LDkgKzEzOCw2IEBAIGNsYXNzIF9UZXN0c01peGluKG9iamVjdCk6
CiAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IGV4Y19pbmZvCiAgICAgICAgIHNlbGYuX2RvbmUg
PSBUcnVlCiAKLSAgICAjCi0gICAgIyBUZXN0aW5nIGhlbHBlciBtZXRob2RzCi0gICAgIwogICAg
IGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5fYW5faW50ID0gTm9uZQogICAgICAgICBz
ZWxmLl9hX3N0ciA9IE5vbmUKQEAgLTE0NiwxMiArMTQ2LDIwIEBAIGNsYXNzIF9UZXN0c01peGlu
KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IE5vbmUKICAgICAgICAgc2VsZi5f
d29ya2VyX21vZGVsID0gTm9uZQogCi0gICAgZGVmIG1ha2VfYnJva2VyKHNlbGYpOgotICAgICAg
ICBzZWxmLl9icm9rZXIgPSBtYWtlX2Jyb2tlcihzZWxmLCBzZWxmLl93b3JrZXJfbW9kZWwpCisg
ICAgZGVmIG1ha2VfYnJva2VyKHNlbGYsIHN0YXJ0aW5nX3F1ZXVlPU5vbmUsIHN0b3BwaW5nX3F1
ZXVlPU5vbmUpOgorICAgICAgICBzZWxmLl9icm9rZXIgPSBtYWtlX2Jyb2tlcihzZWxmLCBzZWxm
Ll93b3JrZXJfbW9kZWwsIHN0YXJ0aW5nX3F1ZXVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdG9wcGluZ19xdWV1ZSkKKworICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToK
KyAgICAgICAgaWYgbm90IHNlbGYuX3dvcmtlcl9tb2RlbDoKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICBzZWxmLm1ha2VfYnJva2VyKCkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJva2Vy
LnN0YXJ0X3dvcmtlcigwKQorICAgICAgICB3b3JrZXIuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5f
YnJva2VyLnBvc3RfbWVzc2FnZSgndGVzdCcsIDEsICdoZWxsbywgd29ybGQnKQorICAgICAgICB3
b3JrZXIuam9pbigwLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uod29ya2VyLmlzX2FsaXZl
KCkpCiAKLSAgICAjCi0gICAgIyBBY3R1YWwgdW5pdCB0ZXN0cwotICAgICMKICAgICBkZWYgdGVz
dF9kb25lKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5fd29ya2VyX21vZGVsOgogICAgICAg
ICAgICAgcmV0dXJuCkBAIC0xNjAsMTAgKzE2OCwzMSBAQCBjbGFzcyBfVGVzdHNNaXhpbihvYmpl
Y3QpOgogICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCd0ZXN0JywgMSwgJ2hlbGxv
LCB3b3JsZCcpCiAgICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3N0b3AnKQogICAg
ICAgICBzZWxmLl9icm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCisgICAgICAgIHdvcmtlci5qb2lu
KDAuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3b3JrZXIuaXNfYWxpdmUoKSkKICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXNfZG9uZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYuX2FuX2ludCwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9hX3N0
ciwgJ2hpLCBldmVyeWJvZHknKQogCisgICAgZGVmIHRlc3RfbG9nX3dlZGdlZF93b3JrZXIoc2Vs
Zik6CisgICAgICAgIGlmIG5vdCBzZWxmLl93b3JrZXJfbW9kZWw6CisgICAgICAgICAgICByZXR1
cm4KKyAgICAgICAgc3RhcnRpbmdfcXVldWUgPSBzZWxmLnF1ZXVlKCkKKyAgICAgICAgc3RvcHBp
bmdfcXVldWUgPSBzZWxmLnF1ZXVlKCkKKyAgICAgICAgc2VsZi5tYWtlX2Jyb2tlcihzdGFydGlu
Z19xdWV1ZSwgc3RvcHBpbmdfcXVldWUpCisgICAgICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRw
dXRDYXB0dXJlKCkKKyAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQorICAgICAgICB3b3JrZXIg
PSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDApCisgICAgICAgIHN0YXJ0aW5nX3F1ZXVlLmdl
dCgpCisgICAgICAgIHdvcmtlci5sb2dfd2VkZ2VkX3dvcmtlcigndGVzdF9uYW1lJykKKyAgICAg
ICAgc3RvcHBpbmdfcXVldWUucHV0KCcnKQorICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNz
YWdlKCdzdG9wJykKKyAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xvb3AoKQorICAg
ICAgICB3b3JrZXIuam9pbigwLjUpCisgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZSh3b3JrZXIuaXNfYWxpdmUoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHNlbGYuaXNfZG9uZSgpKQorCiAgICAgZGVmIHRlc3RfdW5rbm93bl9tZXNzYWdlKHNl
bGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5fd29ya2VyX21vZGVsOgogICAgICAgICAgICAgcmV0
dXJuCkBAIC0xNzEsOCArMjAwLDEwIEBAIGNsYXNzIF9UZXN0c01peGluKG9iamVjdCk6CiAgICAg
ICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFydF93b3JrZXIoMCkKICAgICAgICAgc2VsZi5f
YnJva2VyLnBvc3RfbWVzc2FnZSgndW5rbm93bicpCiAgICAgICAgIHNlbGYuX2Jyb2tlci5ydW5f
bWVzc2FnZV9sb29wKCkKKyAgICAgICAgd29ya2VyLmpvaW4oMC41KQogCiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShzZWxmLmlzX2RvbmUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3b3Jr
ZXIuaXNfYWxpdmUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fZXhjZXB0aW9u
WzBdLCBWYWx1ZUVycm9yKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9leGNlcHRp
b25bMV0sCiAgICAgICAgICAgICAiVGVzdFdvcmtlci8wOiByZWNlaXZlZCBtZXNzYWdlICd1bmtu
b3duJyBpdCBjb3VsZG4ndCBoYW5kbGUiKQpAQCAtMTgzLDYgKzIxNCwxMSBAQCBjbGFzcyBJbmxp
bmVCcm9rZXJUZXN0cyhfVGVzdHNNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBf
VGVzdHNNaXhpbi5zZXRVcChzZWxmKQogICAgICAgICBzZWxmLl93b3JrZXJfbW9kZWwgPSAnaW5s
aW5lJwogCisgICAgZGVmIHRlc3RfbG9nX3dlZGdlZF93b3JrZXIoc2VsZik6CisgICAgICAgIHNl
bGYubWFrZV9icm9rZXIoKQorICAgICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29y
a2VyKDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCB3b3JrZXIu
bG9nX3dlZGdlZF93b3JrZXIsIE5vbmUpCisKIAogY2xhc3MgTXVsdGlQcm9jZXNzQnJva2VyVGVz
dHMoX1Rlc3RzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6
CkBAIC0yMDEsNiArMjM3LDggQEAgY2xhc3MgVGhyZWFkZWRCcm9rZXJUZXN0cyhfVGVzdHNNaXhp
biwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBfVGVzdHNNaXhpbi5zZXRVcChzZWxmKQog
ICAgICAgICBzZWxmLl93b3JrZXJfbW9kZWwgPSAndGhyZWFkcycKIAorICAgIGRlZiBxdWV1ZShz
ZWxmKToKKyAgICAgICAgcmV0dXJuIFF1ZXVlLlF1ZXVlKCkKIAogY2xhc3MgRnVuY3Rpb25zVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcnVudGltZV9vcHRpb25zKHNlbGYp
OgpAQCAtMjIyLDYgKzI2MCwxNiBAQCBjbGFzcyBJbnRlcmZhY2VUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgb2JqID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLl9NYW5hZ2VyQ29ubmVj
dGlvbihicm9rZXIuX2Jyb2tlciwgTm9uZSwgc2VsZiwgTm9uZSkKICAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLnN0YXJ0X3dvcmtlciwgMCkKIAorICAg
IGRlZiB0ZXN0X3dvcmtlcmNvbm5lY3Rpb25faXNfYWJzdHJhY3Qoc2VsZik6CisgICAgICAgICMg
VGVzdCB0aGF0IGFsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2RzIGFyZSBhYnN0cmFjdCBhbmQgaGF2
ZSB0aGUKKyAgICAgICAgIyBzaWduYXR1cmUgd2UgZXhwZWN0LgorICAgICAgICBicm9rZXIgPSBt
YWtlX2Jyb2tlcihzZWxmLCAnaW5saW5lJykKKyAgICAgICAgb2JqID0gbWFuYWdlcl93b3JrZXJf
YnJva2VyLl9Xb3JrZXJDb25uZWN0aW9uKGJyb2tlci5fYnJva2VyLCB3b3JrZXJfbWFrZXIoKSwg
MCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwg
b2JqLmNhbmNlbCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJv
ciwgb2JqLmlzX2FsaXZlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRl
ZEVycm9yLCBvYmouam9pbiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1w
bGVtZW50ZWRFcnJvciwgb2JqLmxvZ193ZWRnZWRfd29ya2VyLCBOb25lKQorCiAKIGlmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5l
cjIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X3J1bm5lcjIucHkKaW5kZXggNTg3MTEwNWM5ZThiMjQwYWFhN2U1Zjg2MjFmMDk1NGVk
MWM4OTE0Mi4uNTZjZjE5OWY0NThlODgwNzZlMDZhOTY0MDRhNTY4YTZhMzM4N2Y1MCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
dGVzdF9ydW5uZXIyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyMi5weQpAQCAtNTIsNiArNTIsOSBAQCBjbGFzcyBf
V29ya2VyU3RhdGUob2JqZWN0KToKICAgICAgICAgc2VsZi53b3JrZXJfY29ubmVjdGlvbiA9IHdv
cmtlcl9jb25uZWN0aW9uCiAgICAgICAgIHNlbGYubnVtYmVyID0gbnVtYmVyCiAgICAgICAgIHNl
bGYuZG9uZSA9IEZhbHNlCisgICAgICAgIHNlbGYuY3VycmVudF90ZXN0X25hbWUgPSBOb25lCisg
ICAgICAgIHNlbGYubmV4dF90aW1lb3V0ID0gTm9uZQorICAgICAgICBzZWxmLndlZGdlZCA9IEZh
bHNlCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAiX1dvcmtlclN0
YXRlKCIgKyBzdHIoc2VsZi5fX2RpY3RfXykgKyAiKSIKQEAgLTcyLDggKzc1LDE5IEBAIGNsYXNz
IFRlc3RSdW5uZXIyKHRlc3RfcnVubmVyLlRlc3RSdW5uZXIpOgogICAgICAgICByZXR1cm4gd29y
a2VyX3N0YXRlcyBhbmQgYWxsKHNlbGYuX3dvcmtlcl9pc19kb25lKHdvcmtlcl9zdGF0ZSkgZm9y
IHdvcmtlcl9zdGF0ZSBpbiB3b3JrZXJfc3RhdGVzKQogCiAgICAgZGVmIF93b3JrZXJfaXNfZG9u
ZShzZWxmLCB3b3JrZXJfc3RhdGUpOgotICAgICAgICAjIEZJWE1FOiBjaGVjayBpZiB0aGUgd29y
a2VyIGlzIHdlZGdlZC4KLSAgICAgICAgcmV0dXJuIHdvcmtlcl9zdGF0ZS5kb25lCisgICAgICAg
IHQgPSB0aW1lLnRpbWUoKQorICAgICAgICBpZiB3b3JrZXJfc3RhdGUuZG9uZSBvciB3b3JrZXJf
c3RhdGUud2VkZ2VkOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBuZXh0X3Rp
bWVvdXQgPSB3b3JrZXJfc3RhdGUubmV4dF90aW1lb3V0CisgICAgICAgIFdFREdFX1BBRERJTkcg
PSA0MC4wCisgICAgICAgIGlmIG5leHRfdGltZW91dCBhbmQgdCA+IG5leHRfdGltZW91dCArIFdF
REdFX1BBRERJTkc6CisgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICAgICAgd29y
a2VyX3N0YXRlLndvcmtlcl9jb25uZWN0aW9uLmxvZ193ZWRnZWRfd29ya2VyKHdvcmtlcl9zdGF0
ZS5jdXJyZW50X3Rlc3RfbmFtZSkKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAg
ICAgICB3b3JrZXJfc3RhdGUud2VkZ2VkID0gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIFRydWUK
KyAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0
dXJuICdUZXN0UnVubmVyMicKQEAgLTEzMSwxMiArMTQ1LDM4IEBAIGNsYXNzIFRlc3RSdW5uZXIy
KHRlc3RfcnVubmVyLlRlc3RSdW5uZXIpOgogCiAgICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVk
ID0gRmFsc2UKICAgICAgICAgaW50ZXJydXB0ZWQgPSBGYWxzZQotICAgICAgICBpZiBub3Qgc2Vs
Zi5fb3B0aW9ucy5kcnlfcnVuOgotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuaXNfZG9uZSgp
OgotICAgICAgICAgICAgICAgICMgV2UgbG9vcCB3aXRoIGEgdGltZW91dCBpbiBvcmRlciB0byBi
ZSBhYmxlIHRvIGRldGVjdCB3ZWRnZWQgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBtYW5hZ2Vy
X2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9vcChkZWxheV9zZWNzPTEuMCkKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKKyAgICAgICAgICAg
ICAgICB3aGlsZSBub3Qgc2VsZi5pc19kb25lKCk6CisgICAgICAgICAgICAgICAgICAgICMgV2Ug
bG9vcCB3aXRoIGEgdGltZW91dCBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGRldGVjdCB3ZWRnZWQg
dGhyZWFkcy4KKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uLnJ1bl9tZXNz
YWdlX2xvb3AoZGVsYXlfc2Vjcz0xLjApCisKKyAgICAgICAgICAgICAgICBpZiBhbnkod29ya2Vy
X3N0YXRlLndlZGdlZCBmb3Igd29ya2VyX3N0YXRlIGluIHNlbGYuX3dvcmtlcl9zdGF0ZXMudmFs
dWVzKCkpOgorICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICAgICAg
ICAgICAgICBfbG9nLmVycm9yKCdSZW1haW5pbmcgd29ya2VycyBhcmUgd2VkZ2VkLCBiYWlsaW5n
IG91dC4nKQorICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoJ05vIHdlZGdlZCB0aHJl
YWRzJykKKworICAgICAgICAgICAgICAgICMgTWFrZSBzdXJlIGFsbCBvZiB0aGUgd29ya2VycyBo
YXZlIHNodXQgZG93biAoaWYgcG9zc2libGUpLgorICAgICAgICAgICAgICAgIGZvciB3b3JrZXJf
c3RhdGUgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICAg
ICAgaWYgbm90IHdvcmtlcl9zdGF0ZS53ZWRnZWQgYW5kIHdvcmtlcl9zdGF0ZS53b3JrZXJfY29u
bmVjdGlvbi5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyX3N0YXRl
Lndvcmtlcl9jb25uZWN0aW9uLmpvaW4oMC41KQorICAgICAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0IG5vdCB3b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uaXNfYWxpdmUoKQorCisgICAg
ICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIF9sb2cuaW5mbygiSW50
ZXJydXB0ZWQsIGV4aXRpbmciKQorICAgICAgICAgICAgc2VsZi5fY2FuY2VsX3dvcmtlcnMoKQor
ICAgICAgICAgICAga2V5Ym9hcmRfaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCB0
ZXN0X3J1bm5lci5UZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24sIGU6CisgICAgICAgICAgICBf
bG9nLmluZm8oZS5yZWFzb24pCisgICAgICAgICAgICBzZWxmLl9jYW5jZWxfd29ya2VycygpCisg
ICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAg
ICAgIyBVbmV4cGVjdGVkIGV4Y2VwdGlvbjsgZG9uJ3QgdHJ5IHRvIGNsZWFuIHVwIHdvcmtlcnMu
CisgICAgICAgICAgICBfbG9nLmluZm8oIkV4Y2VwdGlvbiByYWlzZWQsIGV4aXRpbmciKQorICAg
ICAgICAgICAgcmFpc2UKIAotICAgICAgICAjIEZJWE1FOiBoYW5kbGUgZXhjZXB0aW9ucywgaW50
ZXJydXB0cy4KIAogICAgICAgICAjIEZJWE1FOiBpbXBsZW1lbnQgc3RhdHMuCiAKQEAgLTE0Niw5
ICsxODYsMTQgQEAgY2xhc3MgVGVzdFJ1bm5lcjIodGVzdF9ydW5uZXIuVGVzdFJ1bm5lcik6CiAg
ICAgICAgIHJldHVybiAoa2V5Ym9hcmRfaW50ZXJydXB0ZWQsIGludGVycnVwdGVkLCB0aHJlYWRf
dGltaW5ncywKICAgICAgICAgICAgICAgICBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jl
c3VsdHMpCiAKKyAgICBkZWYgY2FuY2VsX3dvcmtlcnMoc2VsZik6CisgICAgICAgIGZvciB3b3Jr
ZXJfc3RhdGUgaW4gc2VsZi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKToKKyAgICAgICAgICAgIHdv
cmtlcl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5jYW5jZWwoKQorCiAgICAgZGVmIGhhbmRsZV9z
dGFydGVkX3Rlc3Qoc2VsZiwgc291cmNlLCB0ZXN0X2luZm8sIGhhbmdfdGltZW91dCk6Ci0gICAg
ICAgICMgRklYTUU6IGltcGxlbWVudAotICAgICAgICBwYXNzCisgICAgICAgIHdvcmtlcl9zdGF0
ZSA9IHNlbGYuX3dvcmtlcl9zdGF0ZXNbc291cmNlXQorICAgICAgICB3b3JrZXJfc3RhdGUuY3Vy
cmVudF90ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdF9p
bmZvLmZpbGVuYW1lKQorICAgICAgICB3b3JrZXJfc3RhdGUubmV4dF90aW1lb3V0ID0gdGltZS50
aW1lKCkgKyBoYW5nX3RpbWVvdXQKIAogICAgIGRlZiBoYW5kbGVfZG9uZShzZWxmLCBzb3VyY2Up
OgogICAgICAgICB3b3JrZXJfc3RhdGUgPSBzZWxmLl93b3JrZXJfc3RhdGVzW3NvdXJjZV0KQEAg
LTE2Miw2ICsyMDcsMTQgQEAgY2xhc3MgVGVzdFJ1bm5lcjIodGVzdF9ydW5uZXIuVGVzdFJ1bm5l
cik6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBoYW5kbGVfZmluaXNoZWRfdGVzdChzZWxmLCBz
b3VyY2UsIHJlc3VsdCwgZWxhcHNlZF90aW1lKToKKyAgICAgICAgd29ya2VyX3N0YXRlID0gc2Vs
Zi5fd29ya2VyX3N0YXRlc1tzb3VyY2VdCisgICAgICAgIHdvcmtlcl9zdGF0ZS5uZXh0X3RpbWVv
dXQgPSBOb25lCisgICAgICAgIHdvcmtlcl9zdGF0ZS5jdXJyZW50X3Rlc3RfbmFtZSA9IE5vbmUK
KworICAgICAgICBpZiB3b3JrZXJfc3RhdGUud2VkZ2VkOgorICAgICAgICAgICAgIyBUaGlzIHNo
b3VsZG4ndCBoYXBwZW4gaWYgd2UgaGF2ZSBvdXIgdGltZW91dHMgdHVuZWQgcHJvcGVybHkuCisg
ICAgICAgICAgICBfbG9nLmVycm9yKCIlcyB1bndlZGdlZCIsIHcubmFtZSkKKwogICAgICAgICBz
ZWxmLl91cGRhdGVfc3VtbWFyeV93aXRoX3Jlc3VsdChzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1t
YXJ5LCByZXN1bHQpCiAKICAgICAgICAgIyBGSVhNRTogdXBkYXRlIHN0YXRzLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uvd29y
a2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2Uvd29ya2VyLnB5CmluZGV4IDQ3ZDRmYmRiYmUwOGNlN2RlZTEzNzUwM2I3NGZiNjgxYzc3OGU0
YTUuLmMxN2UxNmY3ODcxOWI1MDA2YzAzMWZjMDJjYmVjMDc5MGJkZTRiOGQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3dvcmtl
ci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS93b3JrZXIucHkKQEAgLTQ4LDEzICs0OCwxOCBAQCBjbGFzcyBXb3JrZXIobWFuYWdlcl93
b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9w
dGlvbnMKICAgICAgICAgc2VsZi5fbmFtZSA9ICd3b3JrZXIvJWQnICUgd29ya2VyX251bWJlcgog
ICAgICAgICBzZWxmLl9kb25lID0gRmFsc2UKKyAgICAgICAgc2VsZi5fY2FuY2VsZWQgPSBGYWxz
ZQogICAgICAgICBzZWxmLl9wb3J0ID0gTm9uZQogCiAgICAgZGVmIF9kZWZlcnJlZF9pbml0KHNl
bGYsIHBvcnQpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogCisgICAgZGVmIGNhbmNlbChz
ZWxmKToKKyAgICAgICAgIiIiQXR0ZW1wdCB0byBhYm9ydCBwcm9jZXNzaW5nIChiZXN0IGVmZm9y
dCkuIiIiCisgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQorCiAgICAgZGVmIGlzX2RvbmUo
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9kb25lCisgICAgICAgIHJldHVybiBzZWxmLl9k
b25lIG9yIHNlbGYuX2NhbmNlbGVkCiAKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0
dXJuIHNlbGYuX25hbWUKQEAgLTYyLDExICs2NywyNyBAQCBjbGFzcyBXb3JrZXIobWFuYWdlcl93
b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICBkZWYgcnVuKHNlbGYsIHBvcnQpOgog
ICAgICAgICBzZWxmLl9kZWZlcnJlZF9pbml0KHBvcnQpCiAKKyAgICAgICAgZXhjZXB0aW9uX21z
ZyA9ICIiCiAgICAgICAgIF9sb2cuZGVidWcoIiVzIHN0YXJ0aW5nIiAlIHNlbGYuX25hbWUpCiAK
LSAgICAgICAgIyBGSVhNRTogbmVlZCB0byBhZGQgaW4gZXJyb3IgaGFuZGxpbmcsIGJldHRlciBs
b2dnaW5nLgotICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29w
KCkKLSAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdkb25lJykK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucnVuX21l
c3NhZ2VfbG9vcCgpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19kb25lKCk6CisgICAgICAg
ICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIiVzOiByYW4gb3V0IG9mIG1lc3NhZ2VzIGlu
IHdvcmtlciBxdWV1ZS4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBz
ZWxmLl9uYW1lKQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAg
ICBleGNlcHRpb25fbXNnID0gIiwgaW50ZXJydXB0ZWQiCisgICAgICAgIGV4Y2VwdDoKKyAgICAg
ICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiLCBleGNlcHRpb24gcmFpc2VkIgorICAgICAgICBmaW5h
bGx5OgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgZG9uZSVzIiAlIChzZWxmLl9uYW1lLCBl
eGNlcHRpb25fbXNnKSkKKyAgICAgICAgICAgIGlmIGV4Y2VwdGlvbl9tc2c6CisgICAgICAgICAg
ICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgIHN0YWNrX3V0
aWxzLmxvZ190cmFjZWJhY2soX2xvZy5lcnJvciwgZXhjX2luZm9bMl0pCisgICAgICAgICAgICAg
ICAgIyBGSVhNRTogRmlndXJlIG91dCBob3cgdG8gc2VuZCBhIG1lc3NhZ2Ugd2l0aCBhIHRyYWNl
YmFjay4KKyAgICAgICAgICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5wb3N0X21lc3Nh
Z2UoJ2V4Y2VwdGlvbicsCisgICAgICAgICAgICAgICAgICAgIChleGNfaW5mb1swXSwgZXhjX2lu
Zm9bMV0sIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucG9zdF9t
ZXNzYWdlKCdkb25lJykKIAogICAgIGRlZiBoYW5kbGVfdGVzdF9saXN0KHNlbGYsIHNyYywgbGlz
dF9uYW1lLCB0ZXN0X2xpc3QpOgogICAgICAgICAjIEZJWE1FOiBjaGVjayB0byBzZWUgaWYgd2Ug
bmVlZCB0byBnZXQgdGhlIGh0dHAgbG9jay4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82359</attachid>
            <date>2011-02-14 14:09:37 -0800</date>
            <delta_ts>2011-02-14 14:11:01 -0800</delta_ts>
            <desc>upload w/ more feedback from tony - remove the _Multiprocessing_Process hack completely, just make the class conditionally defined</desc>
            <filename>bug-54072-20110214140936.patch</filename>
            <type>text/plain</type>
            <size>22775</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgzMDIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNWJlODFmOTRkZDc0ZTc3NzI0ZDVkNjkzZTRjMTk4NDk4
MjEyMWQ4Li5iMjgwYzBjNDMwZWE1M2Q0ZTFkZDhiMjEwYTJkYzhmYTMxMjU0OTA0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjMg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBucnd0
IG11bHRpcHJvY2Vzc2luZzogYWRkIGNvZGUgdG8gaGFuZGxlIGludGVycnVwdHMgYW5kIHdlZGdl
ZAorICAgICAgICB0aHJlYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQwNzIKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAgQWRk
cyB0aGUgY2FuY2VsKCksIGlzX2FsaXZlKCksIGpvaW4oKSwgYW5kIGxvZ193ZWRnZWRfd29ya2Vy
KCkKKyAgICAgICAgbWV0aG9kcyB0byB0aGUgV29ya2VyQ29ubmVjdGlvbiBjbGFzcworCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
cl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyMi5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS93b3JrZXIucHk6Cisg
ICAgICAgIEFkZHMgdGhlIGNhbmNlbCgpIG1ldGhvZCB0byB0aGUgV29ya2VyIGNsYXNzCisKKzIw
MTEtMDItMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgdXBkYXRlIHRoZSBOUldUIG11
bHRpcHJvY2Vzc2luZyBjb2RlIHRvIHNwYXduIG11bHRpcGxlIHdvcmtlcnMKICAgICAgICAgaW5z
dGVhZCBvZiBqdXN0IHVzaW5nIG9uZS4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlcl93b3JrZXJfYnJva2VyLnB5CmluZGV4IGEwZjI1MmNmY2QwYTQ3NzQ0OWYyYjY2MTVjMTcy
YjA3Yjg2YTQ1ZWIuLjQ4ODZjMzA0MTFhMGFmMjI0YjY3NWU1ZGMyNzZlOGFiN2M0N2FhOGMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAg
LTUyLDE3ICs1MiwxMyBAQCBpbXBvcnQgdGltZQogCiAKICMgSGFuZGxlIFB5dGhvbiA8IDIuNiB3
aGVyZSBtdWx0aXByb2Nlc3NpbmcgaXNuJ3QgYXZhaWxhYmxlLgotIwotIyBfTXVsdGlwcm9jZXNz
aW5nX1Byb2Nlc3MgaXMgbmVlZGVkIHNvIHRoYXQgX011bHRpUHJvY2Vzc1dvcmtlcgotIyBjYW4g
YmUgZGVmaW5lZCB3aXRoIG9yIHdpdGhvdXQgbXVsdGlwcm9jZXNzaW5nLgogdHJ5OgogICAgIGlt
cG9ydCBtdWx0aXByb2Nlc3NpbmcKLSAgICBfTXVsdGlwcm9jZXNzaW5nX1Byb2Nlc3MgPSBtdWx0
aXByb2Nlc3NpbmcuUHJvY2VzcwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIG11bHRpcHJvY2Vz
c2luZyA9IE5vbmUKLSAgICBfTXVsdGlwcm9jZXNzaW5nX1Byb2Nlc3MgPSB0aHJlYWRpbmcuVGhy
ZWFkCiAKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBzdGFja191dGlscwog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHBvcnQKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBtZXNzYWdlX2Jyb2tlcjIKIApAQCAtMjE5
LDYgKzIxNSwxOCBAQCBjbGFzcyBfV29ya2VyQ29ubmVjdGlvbihtZXNzYWdlX2Jyb2tlcjIuQnJv
a2VyQ29ubmVjdGlvbik6CiAgICAgICAgIG1lc3NhZ2VfYnJva2VyMi5Ccm9rZXJDb25uZWN0aW9u
Ll9faW5pdF9fKHNlbGYsIGJyb2tlciwgc2VsZi5fY2xpZW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTllfV09SS0VSX1RPUElDLCBNQU5BR0VS
X1RPUElDKQogCisgICAgZGVmIGNhbmNlbChzZWxmKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcgorCisgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgam9pbihzZWxmLCB0aW1lb3V0KToKKyAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNl
bGYsIHRlc3RfbmFtZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKwogICAg
IGRlZiB5aWVsZF90b19icm9rZXIoc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMjI2LDExICsy
MzQsMjYgQEAgY2xhc3MgX1dvcmtlckNvbm5lY3Rpb24obWVzc2FnZV9icm9rZXIyLkJyb2tlckNv
bm5lY3Rpb24pOgogY2xhc3MgX0lubGluZVdvcmtlckNvbm5lY3Rpb24oX1dvcmtlckNvbm5lY3Rp
b24pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQsIG1hbmFnZXJfY2xpZW50
LCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIpOgogICAgICAgICBfV29ya2VyQ29ubmVjdGlv
bi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwgcG9y
dC5fb3B0aW9ucykKKyAgICAgICAgc2VsZi5fYWxpdmUgPSBGYWxzZQogICAgICAgICBzZWxmLl9w
b3J0ID0gcG9ydAogICAgICAgICBzZWxmLl9tYW5hZ2VyX2NsaWVudCA9IG1hbmFnZXJfY2xpZW50
CiAKKyAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICBzZWxmLl9jbGllbnQuY2FuY2VsKCkK
KworICAgIGRlZiBpc19hbGl2ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FsaXZlCisK
KyAgICBkZWYgam9pbihzZWxmLCB0aW1lb3V0KToKKyAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9h
bGl2ZQorCisgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHRlc3RfbmFtZSk6CisgICAg
ICAgIGFzc2VydCBGYWxzZSwgIl9JbmxpbmVXb3JrZXJDb25uZWN0aW9uLmxvZ193ZWRnZWRfd29y
a2VyKCkgY2FsbGVkIgorCiAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgc2VsZi5fYWxpdmUg
PSBUcnVlCiAgICAgICAgIHNlbGYuX2NsaWVudC5ydW4oc2VsZi5fcG9ydCkKKyAgICAgICAgc2Vs
Zi5fYWxpdmUgPSBGYWxzZQogCiAgICAgZGVmIHlpZWxkX3RvX2Jyb2tlcihzZWxmKToKICAgICAg
ICAgc2VsZi5fYnJva2VyLnJ1bl9hbGxfcGVuZGluZyhNQU5BR0VSX1RPUElDLCBzZWxmLl9tYW5h
Z2VyX2NsaWVudCkKQEAgLTI0Myw2ICsyNjYsMTIgQEAgY2xhc3MgX1RocmVhZCh0aHJlYWRpbmcu
VGhyZWFkKToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5fY2xpZW50
ID0gY2xpZW50CiAKKyAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5f
Y2xpZW50LmNhbmNlbCgpCisKKyAgICBkZWYgbG9nX3dlZGdlZF93b3JrZXIoc2VsZiwgdGVzdF9u
YW1lKToKKyAgICAgICAgc3RhY2tfdXRpbHMubG9nX3RocmVhZF9zdGF0ZShfbG9nLmVycm9yLCBz
ZWxmLl9jbGllbnQubmFtZSgpLCBzZWxmLmlkZW50LCAiIGlzIHdlZGdlZCBvbiB0ZXN0ICVzIiAl
IHRlc3RfbmFtZSkKKwogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgICMgRklYTUU6IFdlIGNh
biByZW1vdmUgdGhpcyBvbmNlIGV2ZXJ5b25lIGlzIG9uIDIuNi4KICAgICAgICAgaWYgbm90IGhh
c2F0dHIoc2VsZiwgJ2lkZW50Jyk6CkBAIC0yNTUsMjIgKzI4NCw0MCBAQCBjbGFzcyBfVGhyZWFk
ZWRXb3JrZXJDb25uZWN0aW9uKF9Xb3JrZXJDb25uZWN0aW9uKToKICAgICAgICAgX1dvcmtlckNv
bm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1i
ZXIsIHBvcnQuX29wdGlvbnMpCiAgICAgICAgIHNlbGYuX3RocmVhZCA9IF9UaHJlYWQoc2VsZiwg
cG9ydCwgc2VsZi5fY2xpZW50KQogCisgICAgZGVmIGNhbmNlbChzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3RocmVhZC5jYW5jZWwoKQorCisgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgorICAg
ICAgICAjIEZJWE1FOiBDaGFuZ2UgdGhpcyB0byBpc19hbGl2ZSBvbmNlIGV2ZXJ5b25lIGlzIG9u
IDIuNi4KKyAgICAgICAgcmV0dXJuIHNlbGYuX3RocmVhZC5pc0FsaXZlKCkKKworICAgIGRlZiBq
b2luKHNlbGYsIHRpbWVvdXQpOgorICAgICAgICByZXR1cm4gc2VsZi5fdGhyZWFkLmpvaW4odGlt
ZW91dCkKKworICAgIGRlZiBsb2dfd2VkZ2VkX3dvcmtlcihzZWxmLCB0ZXN0X25hbWUpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fdGhyZWFkLmxvZ193ZWRnZWRfd29ya2VyKHRlc3RfbmFtZSkKKwog
ICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAgc2VsZi5fdGhyZWFkLnN0YXJ0KCkKIAogCi1j
bGFzcyBfUHJvY2VzcyhfTXVsdGlwcm9jZXNzaW5nX1Byb2Nlc3MpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB3b3JrZXJfY29ubmVjdGlvbiwgcGxhdGZvcm1fbmFtZSwgb3B0aW9ucywgY2xpZW50
KToKLSAgICAgICAgX011bHRpcHJvY2Vzc2luZ19Qcm9jZXNzLl9faW5pdF9fKHNlbGYpCi0gICAg
ICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uID0gd29ya2VyX2Nvbm5lY3Rpb24KLSAgICAgICAg
c2VsZi5fcGxhdGZvcm1fbmFtZSA9IHBsYXRmb3JtX25hbWUKLSAgICAgICAgc2VsZi5fb3B0aW9u
cyA9IG9wdGlvbnMKLSAgICAgICAgc2VsZi5fY2xpZW50ID0gY2xpZW50CitpZiBtdWx0aXByb2Nl
c3Npbmc6CiAKLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmln
KCkKLSAgICAgICAgcG9ydF9vYmogPSBwb3J0LmdldChzZWxmLl9wbGF0Zm9ybV9uYW1lLCBzZWxm
Ll9vcHRpb25zKQotICAgICAgICBzZWxmLl9jbGllbnQucnVuKHBvcnRfb2JqKQorICAgIGNsYXNz
IF9Qcm9jZXNzKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKKyAgICAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHdvcmtlcl9jb25uZWN0aW9uLCBwbGF0Zm9ybV9uYW1lLCBvcHRpb25zLCBjbGllbnQp
OgorICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX19pbml0X18oc2VsZikKKyAg
ICAgICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uID0gd29ya2VyX2Nvbm5lY3Rpb24KKyAg
ICAgICAgICAgIHNlbGYuX3BsYXRmb3JtX25hbWUgPSBwbGF0Zm9ybV9uYW1lCisgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAgICAgICAgc2VsZi5fY2xpZW50ID0gY2xp
ZW50CisKKyAgICAgICAgZGVmIGxvZ193ZWRnZWRfd29ya2VyKHNlbGYsIHRlc3RfbmFtZSk6Cisg
ICAgICAgICAgICBfbG9nLmVycm9yKCIlcyAocGlkICVkKSBpcyB3ZWRnZWQgb24gdGVzdCAlcyIg
JSAoc2VsZi5uYW1lLCBzZWxmLnBpZCwgdGVzdF9uYW1lKSkKKworICAgICAgICBkZWYgcnVuKHNl
bGYpOgorICAgICAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygpCisgICAgICAgICAgICBwb3J0
X29iaiA9IHBvcnQuZ2V0KHNlbGYuX3BsYXRmb3JtX25hbWUsIHNlbGYuX29wdGlvbnMpCisgICAg
ICAgICAgICBzZWxmLl9jbGllbnQucnVuKHBvcnRfb2JqKQogCiAKIGNsYXNzIF9NdWx0aVByb2Nl
c3NXb3JrZXJDb25uZWN0aW9uKF9Xb3JrZXJDb25uZWN0aW9uKToKQEAgLTI3OCw1ICszMjUsMTcg
QEAgY2xhc3MgX011bHRpUHJvY2Vzc1dvcmtlckNvbm5lY3Rpb24oX1dvcmtlckNvbm5lY3Rpb24p
OgogICAgICAgICBfV29ya2VyQ29ubmVjdGlvbi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIHdvcmtl
cl9jbGFzcywgd29ya2VyX251bWJlciwgb3B0aW9ucykKICAgICAgICAgc2VsZi5fcHJvYyA9IF9Q
cm9jZXNzKHNlbGYsIHBsYXRmb3JtX25hbWUsIG9wdGlvbnMsIHNlbGYuX2NsaWVudCkKIAorICAg
IGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9wcm9jLnRlcm1pbmF0ZSgp
CisKKyAgICBkZWYgaXNfYWxpdmUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9wcm9jLmlz
X2FsaXZlKCkKKworICAgIGRlZiBqb2luKHNlbGYsIHRpbWVvdXQpOgorICAgICAgICByZXR1cm4g
c2VsZi5fcHJvYy5qb2luKHRpbWVvdXQpCisKKyAgICBkZWYgbG9nX3dlZGdlZF93b3JrZXIoc2Vs
ZiwgdGVzdF9uYW1lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2MubG9nX3dlZGdlZF93b3Jr
ZXIodGVzdF9uYW1lKQorCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAgICBzZWxmLl9wcm9j
LnN0YXJ0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfd29y
a2VyX2Jyb2tlcl91bml0dGVzdC5weQppbmRleCBmZmJlMDgxMDU2N2FjZGJlMDUwOTk4NzgyZmJm
Nzk5MGJjNGYwMTNmLi40YmFmNDcyOGY1NjFjY2M1MjU5MGVlODJmN2ZlNTE2ZDExYjkyMzMyIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl93b3JrZXJfYnJv
a2VyX3VuaXR0ZXN0LnB5CkBAIC00NCwzOCArNDQsNDcgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1hbmFnZXJfd29ya2VyX2Jyb2tlcgogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1lc3NhZ2VfYnJva2Vy
MgogCiAKLWNsYXNzIFRlc3RXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29y
a2VyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9u
dW1iZXIsIG9wdGlvbnMpOgotICAgICAgICBzZWxmLl9icm9rZXJfY29ubmVjdGlvbiA9IGJyb2tl
cl9jb25uZWN0aW9uCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNl
bGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVtYmVyCi0gICAgICAgIHNlbGYuX25hbWUgPSAn
VGVzdFdvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVyCi0gICAgICAgIHNlbGYuX3N0b3BwZWQgPSBG
YWxzZQotCi0gICAgZGVmIGhhbmRsZV9zdG9wKHNlbGYsIHNyYyk6Ci0gICAgICAgIHNlbGYuX3N0
b3BwZWQgPSBUcnVlCi0KLSAgICBkZWYgaGFuZGxlX3Rlc3Qoc2VsZiwgc3JjLCBhbl9pbnQsIGFf
c3RyKToKLSAgICAgICAgYXNzZXJ0IGFuX2ludCA9PSAxCi0gICAgICAgIGFzc2VydCBhX3N0ciA9
PSAiaGVsbG8sIHdvcmxkIgotICAgICAgICBzZWxmLl9icm9rZXJfY29ubmVjdGlvbi5wb3N0X21l
c3NhZ2UoJ3Rlc3QnLCAyLCAnaGksIGV2ZXJ5Ym9keScpCi0KLSAgICBkZWYgaXNfZG9uZShzZWxm
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3N0b3BwZWQKLQotICAgIGRlZiBuYW1lKHNlbGYpOgot
ICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAg
ICBwYXNzCi0KLSAgICBkZWYgcnVuKHNlbGYsIHBvcnQpOgotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBzZWxmLl9icm9rZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKCkKLSAgICAgICAg
ICAgIHNlbGYuX2Jyb2tlcl9jb25uZWN0aW9uLnlpZWxkX3RvX2Jyb2tlcigpCi0gICAgICAgICAg
ICBzZWxmLl9icm9rZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ2RvbmUnKQotICAgICAgICBl
eGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24u
cG9zdF9tZXNzYWdlKCdleGNlcHRpb24nLCAodHlwZShlKSwgc3RyKGUpLCBOb25lKSkKK2RlZiB3
b3JrZXJfbWFrZXIoc3RhcnRpbmdfcXVldWU9Tm9uZSwgc3RvcHBpbmdfcXVldWU9Tm9uZSk6Cisg
ICAgY2xhc3MgX1Rlc3RXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2Vy
KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlcl9jb25uZWN0aW9uLCB3b3JrZXJf
bnVtYmVyLCBvcHRpb25zKToKKyAgICAgICAgICAgIHNlbGYuX2Jyb2tlcl9jb25uZWN0aW9uID0g
YnJva2VyX2Nvbm5lY3Rpb24KKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisg
ICAgICAgICAgICBzZWxmLl93b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgorICAgICAgICAg
ICAgc2VsZi5fbmFtZSA9ICdUZXN0V29ya2VyLyVkJyAlIHdvcmtlcl9udW1iZXIKKyAgICAgICAg
ICAgIHNlbGYuX3N0b3BwZWQgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5fY2FuY2VsZWQgPSBG
YWxzZQorICAgICAgICAgICAgc2VsZi5fc3RhcnRpbmdfcXVldWUgPSBzdGFydGluZ19xdWV1ZQor
ICAgICAgICAgICAgc2VsZi5fc3RvcHBpbmdfcXVldWUgPSBzdG9wcGluZ19xdWV1ZQorCisgICAg
ICAgIGRlZiBoYW5kbGVfc3RvcChzZWxmLCBzcmMpOgorICAgICAgICAgICAgc2VsZi5fc3RvcHBl
ZCA9IFRydWUKKworICAgICAgICBkZWYgaGFuZGxlX3Rlc3Qoc2VsZiwgc3JjLCBhbl9pbnQsIGFf
c3RyKToKKyAgICAgICAgICAgIGFzc2VydCBhbl9pbnQgPT0gMQorICAgICAgICAgICAgYXNzZXJ0
IGFfc3RyID09ICJoZWxsbywgd29ybGQiCisgICAgICAgICAgICBzZWxmLl9icm9rZXJfY29ubmVj
dGlvbi5wb3N0X21lc3NhZ2UoJ3Rlc3QnLCAyLCAnaGksIGV2ZXJ5Ym9keScpCisKKyAgICAgICAg
ZGVmIGlzX2RvbmUoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RvcHBlZCBvciBz
ZWxmLl9jYW5jZWxlZAorCisgICAgICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX25hbWUKKworICAgICAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICAgICAg
c2VsZi5fY2FuY2VsZWQgPSBUcnVlCisKKyAgICAgICAgZGVmIHJ1bihzZWxmLCBwb3J0KToKKyAg
ICAgICAgICAgIGlmIHNlbGYuX3N0YXJ0aW5nX3F1ZXVlOgorICAgICAgICAgICAgICAgIHNlbGYu
X3N0YXJ0aW5nX3F1ZXVlLnB1dCgnJykKKyAgICAgICAgICAgIGlmIHNlbGYuX3N0b3BwaW5nX3F1
ZXVlOgorICAgICAgICAgICAgICAgIHNlbGYuX3N0b3BwaW5nX3F1ZXVlLmdldCgpCisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24ucnVuX21l
c3NhZ2VfbG9vcCgpCisgICAgICAgICAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24ueWll
bGRfdG9fYnJva2VyKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9icm9rZXJfY29ubmVjdGlvbi5w
b3N0X21lc3NhZ2UoJ2RvbmUnKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAg
ICAgICAgICAgICAgICBzZWxmLl9icm9rZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ2V4Y2Vw
dGlvbicsICh0eXBlKGUpLCBzdHIoZSksIE5vbmUpKQorICAgIHJldHVybiBfVGVzdFdvcmtlcgog
CiAKIGRlZiBnZXRfb3B0aW9ucyh3b3JrZXJfbW9kZWwpOgpAQCAtODUsMTAgKzk0LDEwIEBAIGRl
ZiBnZXRfb3B0aW9ucyh3b3JrZXJfbW9kZWwpOgogICAgIHJldHVybiBvcHRpb25zCiAKIAotZGVm
IG1ha2VfYnJva2VyKG1hbmFnZXIsIHdvcmtlcl9tb2RlbCk6CitkZWYgbWFrZV9icm9rZXIobWFu
YWdlciwgd29ya2VyX21vZGVsLCBzdGFydGluZ19xdWV1ZT1Ob25lLCBzdG9wcGluZ19xdWV1ZT1O
b25lKToKICAgICBvcHRpb25zID0gZ2V0X29wdGlvbnMod29ya2VyX21vZGVsKQogICAgIHJldHVy
biBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuZ2V0KHBvcnQuZ2V0KCJ0ZXN0IiksIG9wdGlvbnMsIG1h
bmFnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFdvcmtlcikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJfbWFrZXIoc3RhcnRp
bmdfcXVldWUsIHN0b3BwaW5nX3F1ZXVlKSkKIAogCiBjbGFzcyBGdW5jdGlvblRlc3RzKHVuaXR0
ZXN0LlRlc3RDYXNlKToKQEAgLTExMiwxOCArMTIxLDEyIEBAIGNsYXNzIF9UZXN0c01peGluKG9i
amVjdCk6CiAgICAgIiIiTWl4aW4gY2xhc3MgdGhhdCBpbXBsZW1lbnRzIGEgc2VyaWVzIG9mIHRl
c3RzIHRvIGVuZm9yY2UgdGhlCiAgICAgY29udHJhY3QgYWxsIGltcGxlbWVudGF0aW9ucyBtdXN0
IGZvbGxvdy4iIiIKIAotICAgICMKLSAgICAjIE1ldGhvZHMgdG8gaW1wbGVtZW50IHRoZSBNYW5h
Z2VyIHNpZGUgb2YgdGhlIENsaWVudEludGVyZmFjZQotICAgICMKICAgICBkZWYgbmFtZShzZWxm
KToKICAgICAgICAgcmV0dXJuICdUZXN0ZXInCiAKICAgICBkZWYgaXNfZG9uZShzZWxmKToKICAg
ICAgICAgcmV0dXJuIHNlbGYuX2RvbmUKIAotICAgICMKLSAgICAjIEhhbmRsZXJzIGZvciB0aGUg
bWVzc2FnZXMgdGhlIFRlc3RXb3JrZXIgbWF5IHNlbmQuCi0gICAgIwogICAgIGRlZiBoYW5kbGVf
ZG9uZShzZWxmLCBzcmMpOgogICAgICAgICBzZWxmLl9kb25lID0gVHJ1ZQogCkBAIC0xMzUsOSAr
MTM4LDYgQEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKICAgICAgICAgc2VsZi5fZXhjZXB0
aW9uID0gZXhjX2luZm8KICAgICAgICAgc2VsZi5fZG9uZSA9IFRydWUKIAotICAgICMKLSAgICAj
IFRlc3RpbmcgaGVscGVyIG1ldGhvZHMKLSAgICAjCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAg
ICAgICBzZWxmLl9hbl9pbnQgPSBOb25lCiAgICAgICAgIHNlbGYuX2Ffc3RyID0gTm9uZQpAQCAt
MTQ2LDMzICsxNDYsNTggQEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKICAgICAgICAgc2Vs
Zi5fZXhjZXB0aW9uID0gTm9uZQogICAgICAgICBzZWxmLl93b3JrZXJfbW9kZWwgPSBOb25lCiAK
LSAgICBkZWYgbWFrZV9icm9rZXIoc2VsZik6Ci0gICAgICAgIHNlbGYuX2Jyb2tlciA9IG1ha2Vf
YnJva2VyKHNlbGYsIHNlbGYuX3dvcmtlcl9tb2RlbCkKKyAgICBkZWYgbWFrZV9icm9rZXIoc2Vs
Ziwgc3RhcnRpbmdfcXVldWU9Tm9uZSwgc3RvcHBpbmdfcXVldWU9Tm9uZSk6CisgICAgICAgIHNl
bGYuX2Jyb2tlciA9IG1ha2VfYnJva2VyKHNlbGYsIHNlbGYuX3dvcmtlcl9tb2RlbCwgc3RhcnRp
bmdfcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BwaW5nX3F1
ZXVlKQorCisgICAgZGVmIHRlc3RfY2FuY2VsKHNlbGYpOgorICAgICAgICBzZWxmLm1ha2VfYnJv
a2VyKCkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dvcmtlcigwKQorICAg
ICAgICB3b3JrZXIuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgn
dGVzdCcsIDEsICdoZWxsbywgd29ybGQnKQorICAgICAgICB3b3JrZXIuam9pbigwLjUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uod29ya2VyLmlzX2FsaXZlKCkpCiAKLSAgICAjCi0gICAgIyBB
Y3R1YWwgdW5pdCB0ZXN0cwotICAgICMKICAgICBkZWYgdGVzdF9kb25lKHNlbGYpOgotICAgICAg
ICBpZiBub3Qgc2VsZi5fd29ya2VyX21vZGVsOgotICAgICAgICAgICAgcmV0dXJuCiAgICAgICAg
IHNlbGYubWFrZV9icm9rZXIoKQogICAgICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRf
d29ya2VyKDApCiAgICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3Rlc3QnLCAxLCAn
aGVsbG8sIHdvcmxkJykKICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgnc3RvcCcp
CiAgICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fbWVzc2FnZV9sb29wKCkKKyAgICAgICAgd29ya2Vy
LmpvaW4oMC41KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHdvcmtlci5pc19hbGl2ZSgpKQog
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pc19kb25lKCkpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5fYW5faW50LCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu
X2Ffc3RyLCAnaGksIGV2ZXJ5Ym9keScpCiAKKyAgICBkZWYgdGVzdF9sb2dfd2VkZ2VkX3dvcmtl
cihzZWxmKToKKyAgICAgICAgc3RhcnRpbmdfcXVldWUgPSBzZWxmLnF1ZXVlKCkKKyAgICAgICAg
c3RvcHBpbmdfcXVldWUgPSBzZWxmLnF1ZXVlKCkKKyAgICAgICAgc2VsZi5tYWtlX2Jyb2tlcihz
dGFydGluZ19xdWV1ZSwgc3RvcHBpbmdfcXVldWUpCisgICAgICAgIG9jID0gb3V0cHV0Y2FwdHVy
ZS5PdXRwdXRDYXB0dXJlKCkKKyAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQorICAgICAgICB0
cnk6CisgICAgICAgICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDApCisg
ICAgICAgICAgICBzdGFydGluZ19xdWV1ZS5nZXQoKQorICAgICAgICAgICAgd29ya2VyLmxvZ193
ZWRnZWRfd29ya2VyKCd0ZXN0X25hbWUnKQorICAgICAgICAgICAgc3RvcHBpbmdfcXVldWUucHV0
KCcnKQorICAgICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgnc3RvcCcpCisgICAg
ICAgICAgICBzZWxmLl9icm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCisgICAgICAgICAgICB3b3Jr
ZXIuam9pbigwLjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHdvcmtlci5pc19hbGl2
ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXNfZG9uZSgpKQorICAgICAg
ICBmaW5hbGx5OgorICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQorCiAgICAgZGVmIHRl
c3RfdW5rbm93bl9tZXNzYWdlKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5fd29ya2VyX21v
ZGVsOgotICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYubWFrZV9icm9rZXIoKQogICAg
ICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDApCiAgICAgICAgIHNlbGYu
X2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3Vua25vd24nKQogICAgICAgICBzZWxmLl9icm9rZXIucnVu
X21lc3NhZ2VfbG9vcCgpCisgICAgICAgIHdvcmtlci5qb2luKDAuNSkKIAogICAgICAgICBzZWxm
LmFzc2VydFRydWUoc2VsZi5pc19kb25lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uod29y
a2VyLmlzX2FsaXZlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX2V4Y2VwdGlv
blswXSwgVmFsdWVFcnJvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fZXhjZXB0
aW9uWzFdLAogICAgICAgICAgICAgIlRlc3RXb3JrZXIvMDogcmVjZWl2ZWQgbWVzc2FnZSAndW5r
bm93bicgaXQgY291bGRuJ3QgaGFuZGxlIikKQEAgLTE4MywxNyArMjA4LDIxIEBAIGNsYXNzIElu
bGluZUJyb2tlclRlc3RzKF9UZXN0c01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IF9UZXN0c01peGluLnNldFVwKHNlbGYpCiAgICAgICAgIHNlbGYuX3dvcmtlcl9tb2RlbCA9ICdp
bmxpbmUnCiAKKyAgICBkZWYgdGVzdF9sb2dfd2VkZ2VkX3dvcmtlcihzZWxmKToKKyAgICAgICAg
c2VsZi5tYWtlX2Jyb2tlcigpCisgICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFydF93
b3JrZXIoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHdvcmtl
ci5sb2dfd2VkZ2VkX3dvcmtlciwgTm9uZSkKIAotY2xhc3MgTXVsdGlQcm9jZXNzQnJva2VyVGVz
dHMoX1Rlc3RzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6
Ci0gICAgICAgIF9UZXN0c01peGluLnNldFVwKHNlbGYpCi0gICAgICAgIGlmIG11bHRpcHJvY2Vz
c2luZzoKKworaWYgbXVsdGlwcm9jZXNzaW5nOgorCisgICAgY2xhc3MgTXVsdGlQcm9jZXNzQnJv
a2VyVGVzdHMoX1Rlc3RzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgZGVmIHNl
dFVwKHNlbGYpOgorICAgICAgICAgICAgX1Rlc3RzTWl4aW4uc2V0VXAoc2VsZikKICAgICAgICAg
ICAgIHNlbGYuX3dvcmtlcl9tb2RlbCA9ICdwcm9jZXNzZXMnCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLl93b3JrZXJfbW9kZWwgPSBOb25lCiAKLSAgICBkZWYgcXVldWUoc2VsZik6
Ci0gICAgICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKQorICAgICAgICBkZWYgcXVl
dWUoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gbXVsdGlwcm9jZXNzaW5nLlF1ZXVlKCkKIAog
CiBjbGFzcyBUaHJlYWRlZEJyb2tlclRlc3RzKF9UZXN0c01peGluLCB1bml0dGVzdC5UZXN0Q2Fz
ZSk6CkBAIC0yMDEsNiArMjMwLDkgQEAgY2xhc3MgVGhyZWFkZWRCcm9rZXJUZXN0cyhfVGVzdHNN
aXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBfVGVzdHNNaXhpbi5zZXRVcChzZWxm
KQogICAgICAgICBzZWxmLl93b3JrZXJfbW9kZWwgPSAndGhyZWFkcycKIAorICAgIGRlZiBxdWV1
ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFF1ZXVlLlF1ZXVlKCkKKwogCiBjbGFzcyBGdW5jdGlv
bnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9ydW50aW1lX29wdGlvbnMo
c2VsZik6CkBAIC0yMjIsNiArMjU0LDE2IEBAIGNsYXNzIEludGVyZmFjZVRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX01hbmFnZXJD
b25uZWN0aW9uKGJyb2tlci5fYnJva2VyLCBOb25lLCBzZWxmLCBOb25lKQogICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouc3RhcnRfd29ya2VyLCAwKQog
CisgICAgZGVmIHRlc3Rfd29ya2VyY29ubmVjdGlvbl9pc19hYnN0cmFjdChzZWxmKToKKyAgICAg
ICAgIyBUZXN0IHRoYXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFu
ZCBoYXZlIHRoZQorICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCisgICAgICAgIGJyb2tl
ciA9IG1ha2VfYnJva2VyKHNlbGYsICdpbmxpbmUnKQorICAgICAgICBvYmogPSBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIuX1dvcmtlckNvbm5lY3Rpb24oYnJva2VyLl9icm9rZXIsIHdvcmtlcl9tYWtl
cigpLCAwLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVy
cm9yLCBvYmouY2FuY2VsKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRl
ZEVycm9yLCBvYmouaXNfYWxpdmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxl
bWVudGVkRXJyb3IsIG9iai5qb2luLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhO
b3RJbXBsZW1lbnRlZEVycm9yLCBvYmoubG9nX3dlZGdlZF93b3JrZXIsIE5vbmUpCisKIAogaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rf
cnVubmVyMi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfcnVubmVyMi5weQppbmRleCA1ODcxMTA1YzllOGIyNDBhYWE3ZTVmODYyMWYw
OTU0ZWQxYzg5MTQyLi41NmNmMTk5ZjQ1OGU4ODA3NmUwNmE5NjQwNGE1NjhhNmEzMzg3ZjUwIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X3J1bm5lcjIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIyLnB5CkBAIC01Miw2ICs1Miw5IEBAIGNs
YXNzIF9Xb3JrZXJTdGF0ZShvYmplY3QpOgogICAgICAgICBzZWxmLndvcmtlcl9jb25uZWN0aW9u
ID0gd29ya2VyX2Nvbm5lY3Rpb24KICAgICAgICAgc2VsZi5udW1iZXIgPSBudW1iZXIKICAgICAg
ICAgc2VsZi5kb25lID0gRmFsc2UKKyAgICAgICAgc2VsZi5jdXJyZW50X3Rlc3RfbmFtZSA9IE5v
bmUKKyAgICAgICAgc2VsZi5uZXh0X3RpbWVvdXQgPSBOb25lCisgICAgICAgIHNlbGYud2VkZ2Vk
ID0gRmFsc2UKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICJfV29y
a2VyU3RhdGUoIiArIHN0cihzZWxmLl9fZGljdF9fKSArICIpIgpAQCAtNzIsOCArNzUsMTkgQEAg
Y2xhc3MgVGVzdFJ1bm5lcjIodGVzdF9ydW5uZXIuVGVzdFJ1bm5lcik6CiAgICAgICAgIHJldHVy
biB3b3JrZXJfc3RhdGVzIGFuZCBhbGwoc2VsZi5fd29ya2VyX2lzX2RvbmUod29ya2VyX3N0YXRl
KSBmb3Igd29ya2VyX3N0YXRlIGluIHdvcmtlcl9zdGF0ZXMpCiAKICAgICBkZWYgX3dvcmtlcl9p
c19kb25lKHNlbGYsIHdvcmtlcl9zdGF0ZSk6Ci0gICAgICAgICMgRklYTUU6IGNoZWNrIGlmIHRo
ZSB3b3JrZXIgaXMgd2VkZ2VkLgotICAgICAgICByZXR1cm4gd29ya2VyX3N0YXRlLmRvbmUKKyAg
ICAgICAgdCA9IHRpbWUudGltZSgpCisgICAgICAgIGlmIHdvcmtlcl9zdGF0ZS5kb25lIG9yIHdv
cmtlcl9zdGF0ZS53ZWRnZWQ6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIG5l
eHRfdGltZW91dCA9IHdvcmtlcl9zdGF0ZS5uZXh0X3RpbWVvdXQKKyAgICAgICAgV0VER0VfUEFE
RElORyA9IDQwLjAKKyAgICAgICAgaWYgbmV4dF90aW1lb3V0IGFuZCB0ID4gbmV4dF90aW1lb3V0
ICsgV0VER0VfUEFERElORzoKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAg
ICB3b3JrZXJfc3RhdGUud29ya2VyX2Nvbm5lY3Rpb24ubG9nX3dlZGdlZF93b3JrZXIod29ya2Vy
X3N0YXRlLmN1cnJlbnRfdGVzdF9uYW1lKQorICAgICAgICAgICAgX2xvZy5lcnJvcignJykKKyAg
ICAgICAgICAgIHdvcmtlcl9zdGF0ZS53ZWRnZWQgPSBUcnVlCisgICAgICAgICAgICByZXR1cm4g
VHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAg
ICByZXR1cm4gJ1Rlc3RSdW5uZXIyJwpAQCAtMTMxLDEyICsxNDUsMzggQEAgY2xhc3MgVGVzdFJ1
bm5lcjIodGVzdF9ydW5uZXIuVGVzdFJ1bm5lcik6CiAKICAgICAgICAga2V5Ym9hcmRfaW50ZXJy
dXB0ZWQgPSBGYWxzZQogICAgICAgICBpbnRlcnJ1cHRlZCA9IEZhbHNlCi0gICAgICAgIGlmIG5v
dCBzZWxmLl9vcHRpb25zLmRyeV9ydW46Ci0gICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5pc19k
b25lKCk6Ci0gICAgICAgICAgICAgICAgIyBXZSBsb29wIHdpdGggYSB0aW1lb3V0IGluIG9yZGVy
IHRvIGJlIGFibGUgdG8gZGV0ZWN0IHdlZGdlZCB0aHJlYWRzLgotICAgICAgICAgICAgICAgIG1h
bmFnZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKGRlbGF5X3NlY3M9MS4wKQorICAgICAg
ICB0cnk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgorICAgICAg
ICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLmlzX2RvbmUoKToKKyAgICAgICAgICAgICAgICAgICAg
IyBXZSBsb29wIHdpdGggYSB0aW1lb3V0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gZGV0ZWN0IHdl
ZGdlZCB0aHJlYWRzLgorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24ucnVu
X21lc3NhZ2VfbG9vcChkZWxheV9zZWNzPTEuMCkKKworICAgICAgICAgICAgICAgIGlmIGFueSh3
b3JrZXJfc3RhdGUud2VkZ2VkIGZvciB3b3JrZXJfc3RhdGUgaW4gc2VsZi5fd29ya2VyX3N0YXRl
cy52YWx1ZXMoKSk6CisgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1JlbWFpbmluZyB3b3JrZXJzIGFyZSB3ZWRnZWQsIGJh
aWxpbmcgb3V0LicpCisgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygnTm8gd2VkZ2Vk
IHRocmVhZHMnKQorCisgICAgICAgICAgICAgICAgIyBNYWtlIHN1cmUgYWxsIG9mIHRoZSB3b3Jr
ZXJzIGhhdmUgc2h1dCBkb3duIChpZiBwb3NzaWJsZSkuCisgICAgICAgICAgICAgICAgZm9yIHdv
cmtlcl9zdGF0ZSBpbiBzZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVlcygpOgorICAgICAgICAgICAg
ICAgICAgICBpZiBub3Qgd29ya2VyX3N0YXRlLndlZGdlZCBhbmQgd29ya2VyX3N0YXRlLndvcmtl
cl9jb25uZWN0aW9uLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJf
c3RhdGUud29ya2VyX2Nvbm5lY3Rpb24uam9pbigwLjUpCisgICAgICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQgbm90IHdvcmtlcl9zdGF0ZS53b3JrZXJfY29ubmVjdGlvbi5pc19hbGl2ZSgpCisK
KyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgX2xvZy5pbmZv
KCJJbnRlcnJ1cHRlZCwgZXhpdGluZyIpCisgICAgICAgICAgICBzZWxmLl9jYW5jZWxfd29ya2Vy
cygpCisgICAgICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgZXhj
ZXB0IHRlc3RfcnVubmVyLlRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiwgZToKKyAgICAgICAg
ICAgIF9sb2cuaW5mbyhlLnJlYXNvbikKKyAgICAgICAgICAgIHNlbGYuX2NhbmNlbF93b3JrZXJz
KCkKKyAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQorICAgICAgICBleGNlcHQ6CisgICAg
ICAgICAgICAjIFVuZXhwZWN0ZWQgZXhjZXB0aW9uOyBkb24ndCB0cnkgdG8gY2xlYW4gdXAgd29y
a2Vycy4KKyAgICAgICAgICAgIF9sb2cuaW5mbygiRXhjZXB0aW9uIHJhaXNlZCwgZXhpdGluZyIp
CisgICAgICAgICAgICByYWlzZQogCi0gICAgICAgICMgRklYTUU6IGhhbmRsZSBleGNlcHRpb25z
LCBpbnRlcnJ1cHRzLgogCiAgICAgICAgICMgRklYTUU6IGltcGxlbWVudCBzdGF0cy4KIApAQCAt
MTQ2LDkgKzE4NiwxNCBAQCBjbGFzcyBUZXN0UnVubmVyMih0ZXN0X3J1bm5lci5UZXN0UnVubmVy
KToKICAgICAgICAgcmV0dXJuIChrZXlib2FyZF9pbnRlcnJ1cHRlZCwgaW50ZXJydXB0ZWQsIHRo
cmVhZF90aW1pbmdzLAogICAgICAgICAgICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzLCBzZWxmLl9h
bGxfcmVzdWx0cykKIAorICAgIGRlZiBjYW5jZWxfd29ya2VycyhzZWxmKToKKyAgICAgICAgZm9y
IHdvcmtlcl9zdGF0ZSBpbiBzZWxmLl93b3JrZXJfc3RhdGVzLnZhbHVlcygpOgorICAgICAgICAg
ICAgd29ya2VyX3N0YXRlLndvcmtlcl9jb25uZWN0aW9uLmNhbmNlbCgpCisKICAgICBkZWYgaGFu
ZGxlX3N0YXJ0ZWRfdGVzdChzZWxmLCBzb3VyY2UsIHRlc3RfaW5mbywgaGFuZ190aW1lb3V0KToK
LSAgICAgICAgIyBGSVhNRTogaW1wbGVtZW50Ci0gICAgICAgIHBhc3MKKyAgICAgICAgd29ya2Vy
X3N0YXRlID0gc2VsZi5fd29ya2VyX3N0YXRlc1tzb3VyY2VdCisgICAgICAgIHdvcmtlcl9zdGF0
ZS5jdXJyZW50X3Rlc3RfbmFtZSA9IHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0
ZXN0X2luZm8uZmlsZW5hbWUpCisgICAgICAgIHdvcmtlcl9zdGF0ZS5uZXh0X3RpbWVvdXQgPSB0
aW1lLnRpbWUoKSArIGhhbmdfdGltZW91dAogCiAgICAgZGVmIGhhbmRsZV9kb25lKHNlbGYsIHNv
dXJjZSk6CiAgICAgICAgIHdvcmtlcl9zdGF0ZSA9IHNlbGYuX3dvcmtlcl9zdGF0ZXNbc291cmNl
XQpAQCAtMTYyLDYgKzIwNywxNCBAQCBjbGFzcyBUZXN0UnVubmVyMih0ZXN0X3J1bm5lci5UZXN0
UnVubmVyKToKICAgICAgICAgcGFzcwogCiAgICAgZGVmIGhhbmRsZV9maW5pc2hlZF90ZXN0KHNl
bGYsIHNvdXJjZSwgcmVzdWx0LCBlbGFwc2VkX3RpbWUpOgorICAgICAgICB3b3JrZXJfc3RhdGUg
PSBzZWxmLl93b3JrZXJfc3RhdGVzW3NvdXJjZV0KKyAgICAgICAgd29ya2VyX3N0YXRlLm5leHRf
dGltZW91dCA9IE5vbmUKKyAgICAgICAgd29ya2VyX3N0YXRlLmN1cnJlbnRfdGVzdF9uYW1lID0g
Tm9uZQorCisgICAgICAgIGlmIHdvcmtlcl9zdGF0ZS53ZWRnZWQ6CisgICAgICAgICAgICAjIFRo
aXMgc2hvdWxkbid0IGhhcHBlbiBpZiB3ZSBoYXZlIG91ciB0aW1lb3V0cyB0dW5lZCBwcm9wZXJs
eS4KKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIiVzIHVud2VkZ2VkIiwgdy5uYW1lKQorCiAgICAg
ICAgIHNlbGYuX3VwZGF0ZV9zdW1tYXJ5X3dpdGhfcmVzdWx0KHNlbGYuX2N1cnJlbnRfcmVzdWx0
X3N1bW1hcnksIHJlc3VsdCkKIAogICAgICAgICAjIEZJWE1FOiB1cGRhdGUgc3RhdHMuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS93b3JrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS93b3JrZXIucHkKaW5kZXggNDdkNGZiZGJiZTA4Y2U3ZGVlMTM3NTAzYjc0ZmI2ODFj
Nzc4ZTRhNS4uYzE3ZTE2Zjc4NzE5YjUwMDZjMDMxZmMwMmNiZWMwNzkwYmRlNGI4ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
d29ya2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3dvcmtlci5weQpAQCAtNDgsMTMgKzQ4LDE4IEBAIGNsYXNzIFdvcmtlcihtYW5h
Z2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RXb3JrZXIpOgogICAgICAgICBzZWxmLl9vcHRpb25z
ID0gb3B0aW9ucwogICAgICAgICBzZWxmLl9uYW1lID0gJ3dvcmtlci8lZCcgJSB3b3JrZXJfbnVt
YmVyCiAgICAgICAgIHNlbGYuX2RvbmUgPSBGYWxzZQorICAgICAgICBzZWxmLl9jYW5jZWxlZCA9
IEZhbHNlCiAgICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCiAKICAgICBkZWYgX2RlZmVycmVkX2lu
aXQoc2VsZiwgcG9ydCk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAKKyAgICBkZWYgY2Fu
Y2VsKHNlbGYpOgorICAgICAgICAiIiJBdHRlbXB0IHRvIGFib3J0IHByb2Nlc3NpbmcgKGJlc3Qg
ZWZmb3J0KS4iIiIKKyAgICAgICAgc2VsZi5fY2FuY2VsZWQgPSBUcnVlCisKICAgICBkZWYgaXNf
ZG9uZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2RvbmUKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2RvbmUgb3Igc2VsZi5fY2FuY2VsZWQKIAogICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAg
ICByZXR1cm4gc2VsZi5fbmFtZQpAQCAtNjIsMTEgKzY3LDI3IEBAIGNsYXNzIFdvcmtlcihtYW5h
Z2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RXb3JrZXIpOgogICAgIGRlZiBydW4oc2VsZiwgcG9y
dCk6CiAgICAgICAgIHNlbGYuX2RlZmVycmVkX2luaXQocG9ydCkKIAorICAgICAgICBleGNlcHRp
b25fbXNnID0gIiIKICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgc3RhcnRpbmciICUgc2VsZi5fbmFt
ZSkKIAotICAgICAgICAjIEZJWE1FOiBuZWVkIHRvIGFkZCBpbiBlcnJvciBoYW5kbGluZywgYmV0
dGVyIGxvZ2dpbmcuCi0gICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uLnJ1bl9tZXNzYWdl
X2xvb3AoKQotICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ2Rv
bmUnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5y
dW5fbWVzc2FnZV9sb29wKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2RvbmUoKToKKyAg
ICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiJXM6IHJhbiBvdXQgb2YgbWVzc2Fn
ZXMgaW4gd29ya2VyIHF1ZXVlLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAlIHNlbGYuX25hbWUpCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAg
ICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiLCBpbnRlcnJ1cHRlZCIKKyAgICAgICAgZXhjZXB0Ogor
ICAgICAgICAgICAgZXhjZXB0aW9uX21zZyA9ICIsIGV4Y2VwdGlvbiByYWlzZWQiCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCIlcyBkb25lJXMiICUgKHNlbGYuX25h
bWUsIGV4Y2VwdGlvbl9tc2cpKQorICAgICAgICAgICAgaWYgZXhjZXB0aW9uX21zZzoKKyAgICAg
ICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICAgICAgc3Rh
Y2tfdXRpbHMubG9nX3RyYWNlYmFjayhfbG9nLmVycm9yLCBleGNfaW5mb1syXSkKKyAgICAgICAg
ICAgICAgICAjIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0byBzZW5kIGEgbWVzc2FnZSB3aXRoIGEg
dHJhY2ViYWNrLgorICAgICAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uLnBvc3Rf
bWVzc2FnZSgnZXhjZXB0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgKGV4Y19pbmZvWzBdLCBl
eGNfaW5mb1sxXSwgTm9uZSkpCisgICAgICAgICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5w
b3N0X21lc3NhZ2UoJ2RvbmUnKQogCiAgICAgZGVmIGhhbmRsZV90ZXN0X2xpc3Qoc2VsZiwgc3Jj
LCBsaXN0X25hbWUsIHRlc3RfbGlzdCk6CiAgICAgICAgICMgRklYTUU6IGNoZWNrIHRvIHNlZSBp
ZiB3ZSBuZWVkIHRvIGdldCB0aGUgaHR0cCBsb2NrLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>