<?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>90126</bug_id>
          
          <creation_ts>2012-06-27 19:20:22 -0700</creation_ts>
          <short_desc>nrwt: clean up how arguments are passed to workers</short_desc>
          <delta_ts>2012-06-28 19:37:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89725</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>659097</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-27 19:20:22 -0700</bug_when>
    <thetext>nrwt: clean up how arguments are passed to workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659100</commentid>
    <comment_count>1</comment_count>
      <attachid>149854</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-27 19:26:42 -0700</bug_when>
    <thetext>Created attachment 149854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659101</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-27 19:27:43 -0700</bug_when>
    <thetext>this patch is probably one of the more subtle of the whole refactoring. let me know if it needs more explanation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659724</commentid>
    <comment_count>3</comment_count>
      <attachid>149854</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-28 12:58:59 -0700</bug_when>
    <thetext>Comment on attachment 149854
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:97
&gt; +        worker_factory: factory method for creatin objects that implement the AbstractWorker interface.

typo: creatin

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:114
&gt; +    &quot;&quot;&quot;Raised when we receive an unexpected/unknown exception from a worker.&quot;&quot;&quot;

Don&apos;t think this comment adds value.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:332
&gt; +        host = self._host

Do you need this local variable?

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:354
&gt; +        host = None
&gt; +        if self._can_pickle_host():
&gt; +            host = self._host

This seems odd to me. Should we just error out if the host can&apos;t be pickled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659760</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-28 13:35:29 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 149854 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149854&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:97
&gt; &gt; +        worker_factory: factory method for creatin objects that implement the AbstractWorker interface.
&gt; 
&gt; typo: creatin
&gt; 

Will fix.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:114
&gt; &gt; +    &quot;&quot;&quot;Raised when we receive an unexpected/unknown exception from a worker.&quot;&quot;&quot;
&gt; 
&gt; Don&apos;t think this comment adds value.
&gt;

Will delete.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:332
&gt; &gt; +        host = self._host
&gt; 
&gt; Do you need this local variable?
&gt; 

Not in this case, will remove.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:354
&gt; &gt; +        host = None
&gt; &gt; +        if self._can_pickle_host():
&gt; &gt; +            host = self._host
&gt; 
&gt; This seems odd to me. Should we just error out if the host can&apos;t be pickled?

It is a bit odd :)

It&apos;s not a requirement that the host be picklable (and in normal operation, I don&apos;t expect it to be). The only reason we want to send the host to the worker at all is so in the test scenario it can know to use a mock host get the same test port configuration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659768</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-28 13:38:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:354
&gt; &gt; &gt; +        host = None
&gt; &gt; &gt; +        if self._can_pickle_host():
&gt; &gt; &gt; +            host = self._host
&gt; &gt; 
&gt; &gt; This seems odd to me. Should we just error out if the host can&apos;t be pickled?
&gt; 
&gt; It is a bit odd :)
&gt; 
&gt; It&apos;s not a requirement that the host be picklable (and in normal operation, I don&apos;t expect it to be). The only reason we want to send the host to the worker at all is so in the test scenario it can know to use a mock host get the same test port configuration.

Oh, also, in a later patch I merge InlineManager and MultiProcessManager, and so we need to pass the actual host to the worker (in process) so that it can get the overridden host.port_factory.get() method that allows us to share a port between the test code in run_webkit_tests_integrationtest.

Note that requiring the code to be able to share the port is a bug 78168 and fixing that will simplify this slightly, but we&apos;ll still need some way to know to use a MockHost in the worker process and using this approach means that we don&apos;t have to actually import MockHost in the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660071</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-28 19:37:17 -0700</bug_when>
    <thetext>Committed r121509: &lt;http://trac.webkit.org/changeset/121509&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149854</attachid>
            <date>2012-06-27 19:26:42 -0700</date>
            <delta_ts>2012-06-28 14:26:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90126-20120627192641.patch</filename>
            <type>text/plain</type>
            <size>32406</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzkyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTZkYWM5ZmQ4OGZmMTRlOGRmZjk5NmFkOGI4YjBmMDc1
YTlmMDJhMi4uYmNhZjA1NmIzZGVhYzExOTA1MjdiNmNkZGUzNjNjYzQ5OGVkZGIyMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc4
IEBACiAyMDEyLTA2LTI3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Q6IGNsZWFuIHVwIGhvdyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB3b3JrZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDEyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB3YXkg
YXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gd29ya2VycyBoYXMgYmVlbiBjcnVmdHkuIEl0CisgICAg
ICAgIHR1cm5zIG91dCBpdCBjYW4gYmUgYSBsb3QgY2xlYW5lciB2aWEgdHdvIHRoaW5nczoKKyAg
ICAgICAgMSkgdXNpbmcgYSBmYWN0b3J5IG1ldGhvZCBpbnN0ZWFkIG9mIGluc3RhbnRpYXRpbmcg
b2JqZWN0cworICAgICAgICBkaXJlY3RseSBpbiBtYW5hZ2VyX3dvcmtlcl9icm9rZXIgcmVtb3Zl
cyB0aGUgbmVlZCBmb3IgcGFzc2luZworICAgICAgICAnd29ya2VyIGFyZ3VtZW50cycgdG8gdGhl
IGJyb2tlci4KKyAgICAgICAgMikgaXQgdHVybnMgb3V0IHRoYXQgc2luY2UgbW9jayBob3N0cyBh
bmQgdGVzdCBwb3J0cyBhcmUgcHVyZWx5CisgICAgICAgIGluLW1lbW9yeSBjb25zdHJ1Y3Rpb25z
LCB0aGV5IGNhbiBiZSBwaWNrbGVkIGFuZCBwYXNzZWQgdG8gY2hpbGQKKyAgICAgICAgd29ya2Vy
cywgbWVhbmluZyB0aGF0IHRoZSB3b3JrZXIgbm8gbG9uZ2VyIG5lZWRzIGhhY2t5IGNvZGUgdG8K
KyAgICAgICAgcGFzcyB0aGUgcG9ydCBpbiBhIHNwZWNpYWwgY2FzZSBvciB0byBndWVzcyB3aGF0
IHRvIGRvIGlmIHdlCisgICAgICAgIGRvbid0IGhhdmUgYSBob3N0IC0gYWxsIG9mIHRoZSB0ZXN0
LXNwZWNpZmljIGxvZ2ljIGNhbiBtb3ZlIHRvCisgICAgICAgIHRoZSB0ZXN0IGZpbGUsIHdoZXJl
IHdlIGNhbiBzdHViIG91dCB0aGUgbW9jayBob3N0J3MKKyAgICAgICAgcG9ydF9mYWN0b3J5IHRv
IHJldHVybiB0aGUgc2FtZSBhbHJlYWR5LWNyZWF0ZWQgcG9ydCB3aGVuIGl0CisgICAgICAgIG5l
ZWRzIHRvIGJlIHNoYXJlZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIG1vdmVzIFdvcmtl
ckV4Y2VwdGlvbiB0byBtYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKKyAgICAgICAgd2hlcmUgaXQg
YmVsb25ncywgYW5kIHJlbW92ZXMgc2V2ZXJhbCB1c2VsZXNzIHRlc3RzIHRoYXQgd2VyZQorICAg
ICAgICBqdXN0IGEgbWFpbnRlbmFuY2UgYnVyZGVuIChhbmQgd291bGQndmUgbmVlZGVkIHJld3Jp
dGluZyB3aGVuIHdlCisgICAgICAgIGNoYW5nZSB0aGUgcmVzdCBvZiB0aGUgYnJva2VyIGltcGxl
bWVudGF0aW9uKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLl9ydW5fdGVzdHMud29ya2Vy
X2ZhY3RvcnkpOgorICAgICAgICAoTWFuYWdlci5fcnVuX3Rlc3RzKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9r
ZXIucHk6CisgICAgICAgIChnZXQpOgorICAgICAgICAoV29ya2VyRXhjZXB0aW9uKToKKyAgICAg
ICAgKEFic3RyYWN0V29ya2VyLl9faW5pdF9fKToKKyAgICAgICAgKF9NYW5hZ2VyQ29ubmVjdGlv
bi5fX2luaXRfXyk6CisgICAgICAgIChfTWFuYWdlckNvbm5lY3Rpb24uc3RhcnRfd29ya2VyKToK
KyAgICAgICAgKF9JbmxpbmVNYW5hZ2VyLl9faW5pdF9fKToKKyAgICAgICAgKF9JbmxpbmVNYW5h
Z2VyLnN0YXJ0X3dvcmtlcik6CisgICAgICAgIChfTXVsdGlQcm9jZXNzTWFuYWdlci5fY2FuX3Bp
Y2tsZV9ob3N0KToKKyAgICAgICAgKF9NdWx0aVByb2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKF9N
dWx0aVByb2Nlc3NNYW5hZ2VyLnN0YXJ0X3dvcmtlcik6CisgICAgICAgIChfV29ya2VyQ29ubmVj
dGlvbi5fX2luaXRfXyk6CisgICAgICAgIChfSW5saW5lV29ya2VyQ29ubmVjdGlvbi5fX2luaXRf
Xyk6CisgICAgICAgIChfSW5saW5lV29ya2VyQ29ubmVjdGlvbi5qb2luKToKKyAgICAgICAgKF9J
bmxpbmVXb3JrZXJDb25uZWN0aW9uLnJ1bik6CisgICAgICAgIChfUHJvY2Vzcy5ydW4pOgorICAg
ICAgICAoX011bHRpUHJvY2Vzc1dvcmtlckNvbm5lY3Rpb24uX19pbml0X18pOgorICAgICAgICAo
X011bHRpUHJvY2Vzc1dvcmtlckNvbm5lY3Rpb24uc3RhcnQpOgorICAgICAgICAoX011bHRpUHJv
Y2Vzc1dvcmtlckNvbm5lY3Rpb24pOgorICAgICAgICAoX011bHRpUHJvY2Vzc1dvcmtlckNvbm5l
Y3Rpb24ucnVuKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChfVGVz
dFdvcmtlci5fX2luaXRfXyk6CisgICAgICAgIChfVGVzdFdvcmtlci5ydW4pOgorICAgICAgICAo
X1Rlc3RzTWl4aW4udGVzdF9uYW1lKToKKyAgICAgICAgKF9UZXN0c01peGluLnRlc3RfY2FuY2Vs
KToKKyAgICAgICAgKF9UZXN0c01peGluLnRlc3RfZG9uZSk6CisgICAgICAgIChfVGVzdHNNaXhp
bi50ZXN0X3Vua25vd25fbWVzc2FnZSk6CisgICAgICAgIChJbmxpbmVCcm9rZXJUZXN0cy5zZXRV
cCk6CisgICAgICAgIChNdWx0aVByb2Nlc3NCcm9rZXJUZXN0cy5zZXRVcCk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5OgorICAg
ICAgICAoV29ya2VyLl9faW5pdF9fKToKKyAgICAgICAgKFdvcmtlci5ydW4pOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlcl91bml0dGVz
dC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weToKKyAgICAgICAgKHBhc3NpbmdfcnVu
KToKKyAgICAgICAgKGxvZ2dpbmdfcnVuKToKKyAgICAgICAgKHJ1bl9hbmRfY2FwdHVyZSk6Cisg
ICAgICAgIChNYWluVGVzdC50ZXN0X2NoaWxkX3Byb2Nlc3Nlc18yKToKKyAgICAgICAgKE1haW5U
ZXN0LnRlc3RfY2hpbGRfcHJvY2Vzc2VzX21pbik6CisgICAgICAgIChNYWluVGVzdC50ZXN0X2V4
Y2VwdGlvbl9yYWlzZWQpOgorICAgICAgICAoTWFpblRlc3QudGVzdF9rZXlib2FyZF9pbnRlcnJ1
cHQpOgorICAgICAgICAoTWFpblRlc3QudGVzdF9yZXRyeWluZ19hbmRfZmxha3lfdGVzdHMpOgor
ICAgICAgICAoTWFpblRlc3QudGVzdF9ydW5fb3JkZXJfX2lubGluZSk6CisKKzIwMTItMDYtMjcg
IERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgbnJ3dDogZG9u
J3QgdHJ5IHRvIGNhdGNoIHdvcmtlciBleGNlcHRpb25zIGluIHJ1bl93ZWJraXRfdGVzdHMuX19t
YWluX18KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkw
MTI1CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IGY1MjYxMzU1ZjQ3YjUyNTYxZTYwYjBkY2Qx
MTM4MjAzMGYxMzM5NjkuLmYyZmVkM2Y0YTYxM2NhMTBjY2EzOGNkN2JlOTE4NzMwMGZjN2U2Y2Mg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbWFuYWdlci5weQpAQCAtMjY2LDkgKzI2Niw3IEBAIGNsYXNzIFRlc3RSdW5J
bnRlcnJ1cHRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgICAgICByZXR1cm4gc2VsZi5fX2Ns
YXNzX18sIChzZWxmLnJlYXNvbiwpCiAKIAotY2xhc3MgV29ya2VyRXhjZXB0aW9uKEV4Y2VwdGlv
bik6Ci0gICAgIiIiUmFpc2VkIHdoZW4gd2UgcmVjZWl2ZSBhbiB1bmV4cGVjdGVkL3Vua25vd24g
ZXhjZXB0aW9uIGZyb20gYSB3b3JrZXIuIiIiCi0gICAgcGFzcworV29ya2VyRXhjZXB0aW9uID0g
bWFuYWdlcl93b3JrZXJfYnJva2VyLldvcmtlckV4Y2VwdGlvbgogCiAKIGNsYXNzIFRlc3RTaGFy
ZChvYmplY3QpOgpAQCAtNzcxLDI1ICs3NjksMTcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgog
ICAgICAgICBudW1fd29ya2VycyA9IG1pbihudW1fd29ya2VycywgbGVuKGFsbF9zaGFyZHMpKQog
ICAgICAgICBzZWxmLl9sb2dfbnVtX3dvcmtlcnMobnVtX3dvcmtlcnMsIGxlbihhbGxfc2hhcmRz
KSwgbGVuKGxvY2tlZF9zaGFyZHMpKQogCi0gICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbiA9IG1h
bmFnZXJfd29ya2VyX2Jyb2tlci5nZXQobnVtX3dvcmtlcnMsIHNlbGYsIHdvcmtlci5Xb3JrZXIp
CisgICAgICAgIGRlZiB3b3JrZXJfZmFjdG9yeSh3b3JrZXJfY29ubmVjdGlvbiwgd29ya2VyX251
bWJlcik6CisgICAgICAgICAgICByZXR1cm4gd29ya2VyLldvcmtlcih3b3JrZXJfY29ubmVjdGlv
biwgd29ya2VyX251bWJlciwgc2VsZi5yZXN1bHRzX2RpcmVjdG9yeSgpLCBzZWxmLl9vcHRpb25z
KQorCisgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5n
ZXQobnVtX3dvcmtlcnMsIHNlbGYsIHdvcmtlcl9mYWN0b3J5LCBzZWxmLl9wb3J0Lmhvc3QpCiAK
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgogICAgICAgICAgICAgcmV0dXJuIChr
ZXlib2FyZF9pbnRlcnJ1cHRlZCwgaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLCBzZWxmLl9n
cm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5w
cmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicgJSBncmFtbWFyLnBsdXJhbGl6ZSgnd29ya2Vy
JywgbnVtX3dvcmtlcnMpKQogICAgICAgICBmb3Igd29ya2VyX251bWJlciBpbiB4cmFuZ2UobnVt
X3dvcmtlcnMpOgotICAgICAgICAgICAgd29ya2VyX2FyZ3VtZW50cyA9IHdvcmtlci5Xb3JrZXJB
cmd1bWVudHMod29ya2VyX251bWJlciwgc2VsZi5yZXN1bHRzX2RpcmVjdG9yeSgpLCBzZWxmLl9v
cHRpb25zKQotICAgICAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX2Nvbm5lY3Rp
b24uc3RhcnRfd29ya2VyKHdvcmtlcl9hcmd1bWVudHMpCi0gICAgICAgICAgICBpZiBudW1fd29y
a2VycyA9PSAxOgotICAgICAgICAgICAgICAgICMgRklYTUU6IFdlIG5lZWQgdG8gYmUgYWJsZSB0
byBzaGFyZSBhIHBvcnQgd2l0aCB0aGUgd29yayBzbwotICAgICAgICAgICAgICAgICMgdGhhdCBz
b21lIG9mIHRoZSB0ZXN0cyBjYW4gcXVlcnkgc3RhdGUgb24gdGhlIHBvcnQ7IGlkZWFsbHkKLSAg
ICAgICAgICAgICAgICAjIHdlJ2QgcmV3cml0ZSB0aGUgdGVzdHMgc28gdGhhdCB0aGlzIHdhc24n
dCBuZWNlc3NhcnkuCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgTm90ZSB0
aGF0IHRoaXMgb25seSB3b3JrcyBiZWNhdXNlIGluIHRoZSBpbmxpbmUgY2FzZQotICAgICAgICAg
ICAgICAgICMgdGhlIHdvcmtlciBoYXNuJ3QgcmVhbGx5IHN0YXJ0ZWQgeWV0IGFuZCB3b24ndCBz
dGFydAotICAgICAgICAgICAgICAgICMgcnVubmluZyB1bnRpbCB3ZSBjYWxsIHJ1bl9tZXNzYWdl
X2xvb3AoKSwgYmVsb3cuCi0gICAgICAgICAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24uc2V0X2lu
bGluZV9hcmd1bWVudHMoc2VsZi5fcG9ydCkKLQorICAgICAgICAgICAgd29ya2VyX2Nvbm5lY3Rp
b24gPSBtYW5hZ2VyX2Nvbm5lY3Rpb24uc3RhcnRfd29ya2VyKHdvcmtlcl9udW1iZXIpCiAgICAg
ICAgICAgICB3b3JrZXJfc3RhdGUgPSBfV29ya2VyU3RhdGUod29ya2VyX251bWJlciwgd29ya2Vy
X2Nvbm5lY3Rpb24pCiAgICAgICAgICAgICBzZWxmLl93b3JrZXJfc3RhdGVzW3dvcmtlcl9jb25u
ZWN0aW9uLm5hbWUoKV0gPSB3b3JrZXJfc3RhdGUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2Vy
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlcl93b3JrZXJfYnJva2VyLnB5CmluZGV4IDcwNDdkOTM5YzQxYjFmYmE5MTI2YjcxMjRkZjJk
NDI2ZmRjZTdmNzQuLjkyODFmN2RiY2RiNTA1ZWVmZGE2NTIyYTY1MDBiYjE5NGYxN2U2YTkgMTAw
NzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKQEAgLTg3LDE1
ICs4NywxNSBAQCBNQU5BR0VSX1RPUElDID0gJ21hbmFnZXJzJwogQU5ZX1dPUktFUl9UT1BJQyA9
ICd3b3JrZXJzJwogCiAKLWRlZiBnZXQobWF4X3dvcmtlcnMsIGNsaWVudCwgd29ya2VyX2NsYXNz
KToKK2RlZiBnZXQobWF4X3dvcmtlcnMsIGNsaWVudCwgd29ya2VyX2ZhY3RvcnksIGhvc3Q9Tm9u
ZSk6CiAgICAgIiIiUmV0dXJuIGEgY29ubmVjdGlvbiB0byBhIG1hbmFnZXIvd29ya2VyIG1lc3Nh
Z2VfYnJva2VyCiAKICAgICBBcmdzOgogICAgICAgICBtYXhfd29ya2VycyAtIG1heCAjIG9mIHdv
cmtlcnMgdG8gcnVuIGNvbmN1cnJlbnRseS4KICAgICAgICAgY2xpZW50IC0gQnJva2VyQ2xpZW50
IGltcGxlbWVudGF0aW9uIHRvIGRpc3BhdGNoCiAgICAgICAgICAgICByZXBsaWVzIHRvLgotICAg
ICAgICB3b3JrZXJfY2xhc3MgLSB0eXBlIG9mIHdvcmtlcnMgdG8gY3JlYXRlLiBUaGlzIGNsYXNz
IHNob3VsZCBvdmVycmlkZQotICAgICAgICAgICAgdGhlIG1ldGhvZHMgaW4gQWJzdHJhY3RXb3Jr
ZXIuCisgICAgICAgIHdvcmtlcl9mYWN0b3J5OiBmYWN0b3J5IG1ldGhvZCBmb3IgY3JlYXRpbiBv
YmplY3RzIHRoYXQgaW1wbGVtZW50IHRoZSBBYnN0cmFjdFdvcmtlciBpbnRlcmZhY2UuCisgICAg
ICAgIGhvc3Q6IG9wdGlvbmFsIHBpY2tsYWJsZSBob3N0IG9iamVjdCB0aGF0IGNhbiBiZSBwYXNz
ZWQgdG8gd29ya2VycyBmb3IgdGVzdGluZy4KICAgICBSZXR1cm5zOgogICAgICAgICBBIGhhbmRs
ZSB0byBhbiBvYmplY3QgdGhhdCB3aWxsIHRhbGsgdG8gYSBtZXNzYWdlIGJyb2tlciBjb25maWd1
cmVkCiAgICAgICAgIGZvciB0aGUgbm9ybWFsIG1hbmFnZXIvd29ya2VyIGNvbW11bmljYXRpb24u
IiIiCkBAIC0xMDcsNyArMTA3LDEyIEBAIGRlZiBnZXQobWF4X3dvcmtlcnMsIGNsaWVudCwgd29y
a2VyX2NsYXNzKToKICAgICAgICAgbWFuYWdlcl9jbGFzcyA9IF9NdWx0aVByb2Nlc3NNYW5hZ2Vy
CiAKICAgICBicm9rZXIgPSBfQnJva2VyKHF1ZXVlX2NsYXNzKQotICAgIHJldHVybiBtYW5hZ2Vy
X2NsYXNzKGJyb2tlciwgY2xpZW50LCB3b3JrZXJfY2xhc3MpCisgICAgcmV0dXJuIG1hbmFnZXJf
Y2xhc3MoYnJva2VyLCBjbGllbnQsIHdvcmtlcl9mYWN0b3J5LCBob3N0KQorCisKK2NsYXNzIFdv
cmtlckV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIlJhaXNlZCB3aGVuIHdlIHJlY2VpdmUg
YW4gdW5leHBlY3RlZC91bmtub3duIGV4Y2VwdGlvbiBmcm9tIGEgd29ya2VyLiIiIgorICAgIHBh
c3MKIAogCiBjbGFzcyBCcm9rZXJDbGllbnQob2JqZWN0KToKQEAgLTI1NSw3ICsyNjAsNyBAQCBj
bGFzcyBfQnJva2VyQ29ubmVjdGlvbihvYmplY3QpOgogCiAKIGNsYXNzIEFic3RyYWN0V29ya2Vy
KEJyb2tlckNsaWVudCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0aW9u
LCB3b3JrZXJfYXJndW1lbnRzPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3b3JrZXJf
Y29ubmVjdGlvbiwgd29ya2VyX251bWJlcik6CiAgICAgICAgICIiIlRoZSBjb25zdHJ1Y3RvciBz
aG91bGQgYmUgdXNlZCB0byBkbyBhbnkgc2ltcGxlIGluaXRpYWxpemF0aW9uCiAgICAgICAgIG5l
Y2Vzc2FyeSwgYnV0IHNob3VsZCBub3QgZG8gYW55dGhpbmcgdGhhdCBjcmVhdGVzIGRhdGEgc3Ry
dWN0dXJlcwogICAgICAgICB0aGF0IGNhbm5vdCBiZSBQaWNrbGVkIG9yIHNlbnQgYWNyb3NzIHBy
b2Nlc3NlcyAobGlrZSBvcGVuaW5nCkBAIC0yNjUsMTAgKzI3MCwxMSBAQCBjbGFzcyBBYnN0cmFj
dFdvcmtlcihCcm9rZXJDbGllbnQpOgogICAgICAgICBBcmdzOgogICAgICAgICAgICAgd29ya2Vy
X2Nvbm5lY3Rpb24gLSBoYW5kbGUgdG8gdGhlIF9Ccm9rZXJDb25uZWN0aW9uIG9iamVjdCBjcmVh
dGluZwogICAgICAgICAgICAgICAgIHRoZSB3b3JrZXIgYW5kIHRoYXQgY2FuIGJlIHVzZWQgZm9y
IG1lc3NhZ2luZy4KLSAgICAgICAgICAgIHdvcmtlcl9hcmd1bWVudHMgLSAob3B0aW9uYWwsIFBp
Y2tsYWJsZSkgb2JqZWN0IHBhc3NlZCB0byB0aGUgd29ya2VyIGZyb20gdGhlIG1hbmFnZXIiIiIK
KyAgICAgICAgICAgIHdvcmtlcl9udW1iZXIgLSB0aGUgbnVtYmVyL2luZGV4IG9mIHRoZSBjdXJy
ZW50IHdvcmtlci4iIiIKICAgICAgICAgQnJva2VyQ2xpZW50Ll9faW5pdF9fKHNlbGYpCiAgICAg
ICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uID0gd29ya2VyX2Nvbm5lY3Rpb24KLSAgICAgICAg
c2VsZi5fbmFtZSA9ICd3b3JrZXInCisgICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3Jr
ZXJfbnVtYmVyCisgICAgICAgIHNlbGYuX25hbWUgPSAnd29ya2VyLyVkJyAlIHdvcmtlcl9udW1i
ZXIKICAgICAgICAgc2VsZi5fZG9uZSA9IEZhbHNlCiAgICAgICAgIHNlbGYuX2NhbmNlbGVkID0g
RmFsc2UKIApAQCAtMzA4LDQyICszMTQsMjUgQEAgY2xhc3MgQWJzdHJhY3RXb3JrZXIoQnJva2Vy
Q2xpZW50KToKIAogCiBjbGFzcyBfTWFuYWdlckNvbm5lY3Rpb24oX0Jyb2tlckNvbm5lY3Rpb24p
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIGNsaWVudCwgd29ya2VyX2NsYXNzKToK
LSAgICAgICAgIiIiQmFzZSBpbml0aWFsaXphdGlvbiBmb3IgYWxsIE1hbmFnZXIgb2JqZWN0cy4K
LQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgYnJva2VyOiBoYW5kbGUgdG8gdGhlIG1lc3Nh
Z2VfYnJva2VyIG9iamVjdAotICAgICAgICAgICAgY2xpZW50OiBjYWxsYmFjayBvYmplY3QgKHRo
ZSBjYWxsZXIpCi0gICAgICAgICAgICB3b3JrZXJfY2xhc3M6IGNsYXNzIG9iamVjdCB0byB1c2Ug
dG8gY3JlYXRlIHdvcmtlcnMuCi0gICAgICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBi
cm9rZXIsIGNsaWVudCwgd29ya2VyX2ZhY3RvcnksIGhvc3QpOgogICAgICAgICBfQnJva2VyQ29u
bmVjdGlvbi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIGNsaWVudCwgTUFOQUdFUl9UT1BJQywgQU5Z
X1dPUktFUl9UT1BJQykKLSAgICAgICAgc2VsZi5fd29ya2VyX2NsYXNzID0gd29ya2VyX2NsYXNz
Ci0KLSAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9hcmd1bWVudHM9Tm9uZSk6Ci0g
ICAgICAgICIiIlN0YXJ0cyBhIG5ldyB3b3JrZXIuCisgICAgICAgIHNlbGYuX3dvcmtlcl9mYWN0
b3J5ID0gd29ya2VyX2ZhY3RvcnkKKyAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKIAotICAgICAg
ICBBcmdzOgotICAgICAgICAgICAgd29ya2VyX2FyZ3VtZW50cyAtIGFuIG9wdGlvbmFsIFBpY2ts
YWJsZSBvYmplY3QgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIHdvcmtlciBjb25zdHJ1Y3RvcgotICAg
ICAgICAiIiIKKyAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIpOgogICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKIAogY2xhc3MgX0lubGluZU1hbmFnZXIo
X01hbmFnZXJDb25uZWN0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBjbGll
bnQsIHdvcmtlcl9jbGFzcyk6Ci0gICAgICAgIF9NYW5hZ2VyQ29ubmVjdGlvbi5fX2luaXRfXyhz
ZWxmLCBicm9rZXIsIGNsaWVudCwgd29ya2VyX2NsYXNzKQorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBicm9rZXIsIGNsaWVudCwgd29ya2VyX2ZhY3RvcnksIGhvc3QpOgorICAgICAgICBfTWFuYWdl
ckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCBjbGllbnQsIHdvcmtlcl9mYWN0b3J5
LCBob3N0KQogICAgICAgICBzZWxmLl9pbmxpbmVfd29ya2VyID0gTm9uZQogCi0gICAgZGVmIHN0
YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfYXJndW1lbnRzPU5vbmUpOgotICAgICAgICBzZWxmLl9p
bmxpbmVfd29ya2VyID0gX0lubGluZVdvcmtlckNvbm5lY3Rpb24oc2VsZi5fYnJva2VyLAotICAg
ICAgICAgICAgc2VsZi5fY2xpZW50LCBzZWxmLl93b3JrZXJfY2xhc3MsIHdvcmtlcl9hcmd1bWVu
dHMpCisgICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyKToKKyAgICAgICAg
aG9zdCA9IHNlbGYuX2hvc3QKKyAgICAgICAgc2VsZi5faW5saW5lX3dvcmtlciA9IF9JbmxpbmVX
b3JrZXJDb25uZWN0aW9uKGhvc3QsIHNlbGYuX2Jyb2tlciwgc2VsZi5fY2xpZW50LCBzZWxmLl93
b3JrZXJfZmFjdG9yeSwgd29ya2VyX251bWJlcikKICAgICAgICAgcmV0dXJuIHNlbGYuX2lubGlu
ZV93b3JrZXIKIAotICAgIGRlZiBzZXRfaW5saW5lX2FyZ3VtZW50cyhzZWxmLCBhcmd1bWVudHM9
Tm9uZSk6Ci0gICAgICAgICMgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIG9ubHkgZXhpc3RzIGhlcmUs
IGFuZCBub3Qgb24gYWxsCi0gICAgICAgICMgTWFuYWdlckNvbm5lY3Rpb25zOyBjYWxsaW5nIHRo
aXMgbWV0aG9kIG9uIGEgTXVsdGlQcm9jZXNzTWFuYWdlcgotICAgICAgICAjIHdpbGwgZGVsaWJl
cmF0ZWx5IHJlc3VsdCBpbiBhIHJ1bnRpbWUgZXJyb3IuCi0gICAgICAgIHNlbGYuX2lubGluZV93
b3JrZXIuc2V0X2lubGluZV9hcmd1bWVudHMoYXJndW1lbnRzKQotCiAgICAgZGVmIHJ1bl9tZXNz
YWdlX2xvb3Aoc2VsZiwgZGVsYXlfc2Vjcz1Ob25lKToKICAgICAgICAgIyBOb3RlIHRoYXQgZGVs
YXlfc2VjcyBpcyBpZ25vcmVkIGluIHRoaXMgY2FzZSBzaW5jZSB3ZSBjYW4ndCBlYXNpbHkKICAg
ICAgICAgIyBpbXBsZW1lbnQgaXQuCkBAIC0zNTIsMTYgKzM0MSwyNiBAQCBjbGFzcyBfSW5saW5l
TWFuYWdlcihfTWFuYWdlckNvbm5lY3Rpb24pOgogCiAKIGNsYXNzIF9NdWx0aVByb2Nlc3NNYW5h
Z2VyKF9NYW5hZ2VyQ29ubmVjdGlvbik6Ci0gICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3b3Jr
ZXJfYXJndW1lbnRzPU5vbmUpOgotICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiA9IF9NdWx0aVBy
b2Nlc3NXb3JrZXJDb25uZWN0aW9uKHNlbGYuX2Jyb2tlciwKLSAgICAgICAgICAgIHNlbGYuX3dv
cmtlcl9jbGFzcywgd29ya2VyX2FyZ3VtZW50cykKKyAgICBkZWYgX2Nhbl9waWNrbGVfaG9zdChz
ZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY1BpY2tsZS5kdW1wcyhzZWxmLl9ob3N0
KQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3b3Jr
ZXJfbnVtYmVyKToKKyAgICAgICAgaG9zdCA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fY2FuX3Bp
Y2tsZV9ob3N0KCk6CisgICAgICAgICAgICBob3N0ID0gc2VsZi5faG9zdAorICAgICAgICB3b3Jr
ZXJfY29ubmVjdGlvbiA9IF9NdWx0aVByb2Nlc3NXb3JrZXJDb25uZWN0aW9uKGhvc3QsIHNlbGYu
X2Jyb2tlciwgc2VsZi5fd29ya2VyX2ZhY3RvcnksIHdvcmtlcl9udW1iZXIpCiAgICAgICAgIHdv
cmtlcl9jb25uZWN0aW9uLnN0YXJ0KCkKICAgICAgICAgcmV0dXJuIHdvcmtlcl9jb25uZWN0aW9u
CiAKIAogY2xhc3MgX1dvcmtlckNvbm5lY3Rpb24oX0Jyb2tlckNvbm5lY3Rpb24pOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX2FyZ3VtZW50cz1O
b25lKToKLSAgICAgICAgc2VsZi5fY2xpZW50ID0gd29ya2VyX2NsYXNzKHNlbGYsIHdvcmtlcl9h
cmd1bWVudHMpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIGJyb2tlciwgd29ya2VyX2Zh
Y3RvcnksIHdvcmtlcl9udW1iZXIpOgorICAgICAgICBzZWxmLl9jbGllbnQgPSB3b3JrZXJfZmFj
dG9yeShzZWxmLCB3b3JrZXJfbnVtYmVyKQorICAgICAgICBzZWxmLl9ob3N0ID0gaG9zdAogICAg
ICAgICBfQnJva2VyQ29ubmVjdGlvbi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIHNlbGYuX2NsaWVu
dCwgQU5ZX1dPUktFUl9UT1BJQywgTUFOQUdFUl9UT1BJQykKIAogICAgIGRlZiBuYW1lKHNlbGYp
OgpAQCAtMzgxLDggKzM4MCw4IEBAIGNsYXNzIF9Xb3JrZXJDb25uZWN0aW9uKF9Ccm9rZXJDb25u
ZWN0aW9uKToKIAogCiBjbGFzcyBfSW5saW5lV29ya2VyQ29ubmVjdGlvbihfV29ya2VyQ29ubmVj
dGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwgbWFuYWdlcl9jbGllbnQsIHdv
cmtlcl9jbGFzcywgd29ya2VyX2FyZ3VtZW50cyk6Ci0gICAgICAgIF9Xb3JrZXJDb25uZWN0aW9u
Ll9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfYXJndW1lbnRzKQor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBicm9rZXIsIG1hbmFnZXJfY2xpZW50LCB3b3Jr
ZXJfZmFjdG9yeSwgd29ya2VyX251bWJlcik6CisgICAgICAgIF9Xb3JrZXJDb25uZWN0aW9uLl9f
aW5pdF9fKHNlbGYsIGhvc3QsIGJyb2tlciwgd29ya2VyX2ZhY3RvcnksIHdvcmtlcl9udW1iZXIp
CiAgICAgICAgIHNlbGYuX2FsaXZlID0gRmFsc2UKICAgICAgICAgc2VsZi5fbWFuYWdlcl9jbGll
bnQgPSBtYW5hZ2VyX2NsaWVudAogCkBAIC0zOTUsMTMgKzM5NCwxMCBAQCBjbGFzcyBfSW5saW5l
V29ya2VyQ29ubmVjdGlvbihfV29ya2VyQ29ubmVjdGlvbik6CiAgICAgZGVmIGpvaW4oc2VsZiwg
dGltZW91dCk6CiAgICAgICAgIGFzc2VydCBub3Qgc2VsZi5fYWxpdmUKIAotICAgIGRlZiBzZXRf
aW5saW5lX2FyZ3VtZW50cyhzZWxmLCBhcmd1bWVudHMpOgotICAgICAgICBzZWxmLl9jbGllbnQu
c2V0X2lubGluZV9hcmd1bWVudHMoYXJndW1lbnRzKQotCiAgICAgZGVmIHJ1bihzZWxmKToKICAg
ICAgICAgc2VsZi5fYWxpdmUgPSBUcnVlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYu
X2NsaWVudC5ydW4oKQorICAgICAgICAgICAgc2VsZi5fY2xpZW50LnJ1bihzZWxmLl9ob3N0LCBz
ZXRfdXBfbG9nZ2luZz1GYWxzZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYu
X2FsaXZlID0gRmFsc2UKIApAQCAtNDIyLDEyICs0MTgsMTIgQEAgY2xhc3MgX1Byb2Nlc3MobXVs
dGlwcm9jZXNzaW5nLlByb2Nlc3MpOgogICAgICAgICBzZWxmLl9jbGllbnQgPSBjbGllbnQKIAog
ICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHNlbGYuX2NsaWVudC5ydW4oKQorICAgICAgICBz
ZWxmLl93b3JrZXJfY29ubmVjdGlvbi5ydW4oKQogCiAKIGNsYXNzIF9NdWx0aVByb2Nlc3NXb3Jr
ZXJDb25uZWN0aW9uKF9Xb3JrZXJDb25uZWN0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
YnJva2VyLCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9hcmd1bWVudHMpOgotICAgICAgICBfV29ya2Vy
Q29ubmVjdGlvbi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX2Fy
Z3VtZW50cykKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgYnJva2VyLCB3b3JrZXJfZmFj
dG9yeSwgd29ya2VyX251bWJlcik6CisgICAgICAgIF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9f
KHNlbGYsIGhvc3QsIGJyb2tlciwgd29ya2VyX2ZhY3RvcnksIHdvcmtlcl9udW1iZXIpCiAgICAg
ICAgIHNlbGYuX3Byb2MgPSBfUHJvY2VzcyhzZWxmLCBzZWxmLl9jbGllbnQpCiAKICAgICBkZWYg
Y2FuY2VsKHNlbGYpOgpAQCAtNDQxLDMgKzQzNyw3IEBAIGNsYXNzIF9NdWx0aVByb2Nlc3NXb3Jr
ZXJDb25uZWN0aW9uKF9Xb3JrZXJDb25uZWN0aW9uKToKIAogICAgIGRlZiBzdGFydChzZWxmKToK
ICAgICAgICAgc2VsZi5fcHJvYy5zdGFydCgpCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAg
ICAjIEZJWE1FOiBzZXRfdXBfbG9nZ2luZyBzaG91bGRuJ3QgYmUgbmVlZGVkLgorICAgICAgICBz
ZWxmLl9jbGllbnQucnVuKHNlbGYuX2hvc3QsIHNldF91cF9sb2dnaW5nPVRydWUpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkK
aW5kZXggMDQ2NDI1NjY0NGZmZmU0NDkzNGVhYmIxM2RkMTlkZjEwMzZiNzVjMC4uNmZkYTE3MTcw
ZjVmMTllNTIwZGYxODkyOTU1YjJhYzMxN2MxYjU3MSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2Vy
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQpAQCAtNDQsOCArNDQs
NyBAQCBzdGFydGluZ19xdWV1ZSA9IE5vbmUKIHN0b3BwaW5nX3F1ZXVlID0gTm9uZQogCiAKLVdP
UktFUl9OQU1FID0gJ1Rlc3RXb3JrZXInCi0KK1dPUktFUl9OQU1FID0gJ3dvcmtlci8xJwogCiBk
ZWYgbWFrZV9icm9rZXIobWFuYWdlciwgbWF4X3dvcmtlcnMsIHN0YXJ0X3F1ZXVlPU5vbmUsIHN0
b3BfcXVldWU9Tm9uZSk6CiAgICAgZ2xvYmFsIHN0YXJ0aW5nX3F1ZXVlCkBAIC01NiwxNiArNTUs
MTIgQEAgZGVmIG1ha2VfYnJva2VyKG1hbmFnZXIsIG1heF93b3JrZXJzLCBzdGFydF9xdWV1ZT1O
b25lLCBzdG9wX3F1ZXVlPU5vbmUpOgogCiAKIGNsYXNzIF9UZXN0V29ya2VyKG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtl
cl9jb25uZWN0aW9uLCB3b3JrZXJfYXJndW1lbnRzPU5vbmUpOgotICAgICAgICBzdXBlcihfVGVz
dFdvcmtlciwgc2VsZikuX19pbml0X18od29ya2VyX2Nvbm5lY3Rpb24pCi0gICAgICAgIHNlbGYu
X25hbWUgPSBXT1JLRVJfTkFNRQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3b3JrZXJfY29ubmVj
dGlvbiwgd29ya2VyX251bWJlcj0xKToKKyAgICAgICAgc3VwZXIoX1Rlc3RXb3JrZXIsIHNlbGYp
Ll9faW5pdF9fKHdvcmtlcl9jb25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyKQogICAgICAgICBzZWxm
Ll90aGluZ190b19ncmVldCA9ICdldmVyeWJvZHknCiAgICAgICAgIHNlbGYuX3N0YXJ0aW5nX3F1
ZXVlID0gc3RhcnRpbmdfcXVldWUKICAgICAgICAgc2VsZi5fc3RvcHBpbmdfcXVldWUgPSBzdG9w
cGluZ19xdWV1ZQogCi0gICAgZGVmIHNldF9pbmxpbmVfYXJndW1lbnRzKHNlbGYsIHRoaW5nX3Rv
X2dyZWV0KToKLSAgICAgICAgc2VsZi5fdGhpbmdfdG9fZ3JlZXQgPSB0aGluZ190b19ncmVldAot
CiAgICAgZGVmIGhhbmRsZV9zdG9wKHNlbGYsIHNyYyk6CiAgICAgICAgIHNlbGYuc3RvcF9oYW5k
bGluZ19tZXNzYWdlcygpCiAKQEAgLTc0LDcgKzY5LDcgQEAgY2xhc3MgX1Rlc3RXb3JrZXIobWFu
YWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICAgICAgYXNzZXJ0IGFfc3Ry
ID09ICJoZWxsbywgd29ybGQiCiAgICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uLnBvc3Rf
bWVzc2FnZSgndGVzdCcsIDIsICdoaSwgJyArIHNlbGYuX3RoaW5nX3RvX2dyZWV0KQogCi0gICAg
ZGVmIHJ1bihzZWxmKToKKyAgICBkZWYgcnVuKHNlbGYsIGhvc3QsIHNldF91cF9sb2dnaW5nKToK
ICAgICAgICAgaWYgc2VsZi5fc3RhcnRpbmdfcXVldWU6CiAgICAgICAgICAgICBzZWxmLl9zdGFy
dGluZ19xdWV1ZS5wdXQoJycpCiAKQEAgLTEzMSw3ICsxMjYsNyBAQCBjbGFzcyBfVGVzdHNNaXhp
bihvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfbmFtZShzZWxmKToKICAgICAgICAgc2VsZi5tYWtl
X2Jyb2tlcigpCi0gICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFydF93b3JrZXIoKQor
ICAgICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDEpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHdvcmtlci5uYW1lKCksIFdPUktFUl9OQU1FKQogICAgICAgICB3b3Jr
ZXIuY2FuY2VsKCkKICAgICAgICAgd29ya2VyLmpvaW4oMC4xKQpAQCAtMTQwLDcgKzEzNSw3IEBA
IGNsYXNzIF9UZXN0c01peGluKG9iamVjdCk6CiAKICAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6
CiAgICAgICAgIHNlbGYubWFrZV9icm9rZXIoKQotICAgICAgICB3b3JrZXIgPSBzZWxmLl9icm9r
ZXIuc3RhcnRfd29ya2VyKCkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dv
cmtlcigxKQogICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCd0ZXN0JywgMSwgJ2hl
bGxvLCB3b3JsZCcpCiAgICAgICAgIHdvcmtlci5jYW5jZWwoKQogICAgICAgICB3b3JrZXIuam9p
bigwLjEpCkBAIC0xNDksNyArMTQ0LDcgQEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKIAog
ICAgIGRlZiB0ZXN0X2RvbmUoc2VsZik6CiAgICAgICAgIHNlbGYubWFrZV9icm9rZXIoKQotICAg
ICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKCkKKyAgICAgICAgd29ya2Vy
ID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dvcmtlcigxKQogICAgICAgICBzZWxmLl9icm9rZXIucG9z
dF9tZXNzYWdlKCd0ZXN0JywgMSwgJ2hlbGxvLCB3b3JsZCcpCiAgICAgICAgIHNlbGYuX2Jyb2tl
ci5wb3N0X21lc3NhZ2UoJ3N0b3AnKQogICAgICAgICBzZWxmLl9icm9rZXIucnVuX21lc3NhZ2Vf
bG9vcCgpCkBAIC0xNjIsNyArMTU3LDcgQEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKIAog
ICAgIGRlZiB0ZXN0X3Vua25vd25fbWVzc2FnZShzZWxmKToKICAgICAgICAgc2VsZi5tYWtlX2Jy
b2tlcigpCi0gICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFydF93b3JrZXIoKQorICAg
ICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDEpCiAgICAgICAgIHNlbGYu
X2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3Vua25vd24nKQogICAgICAgICB0cnk6CiAgICAgICAgICAg
ICBzZWxmLl9icm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCkBAIC0xODEsMTUgKzE3Niw2IEBAIGNs
YXNzIElubGluZUJyb2tlclRlc3RzKF9UZXN0c01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIF9UZXN0c01peGluLnNldFVwKHNlbGYpCiAgICAgICAgIHNlbGYuX21heF93b3JrZXJz
ID0gMQogCi0gICAgZGVmIHRlc3RfaW5saW5lX2FyZ3VtZW50cyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5tYWtlX2Jyb2tlcigpCi0gICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFydF93b3Jr
ZXIoKQotICAgICAgICB3b3JrZXIuc2V0X2lubGluZV9hcmd1bWVudHMoJ21lJykKLSAgICAgICAg
c2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgndGVzdCcsIDEsICdoZWxsbywgd29ybGQnKQotICAg
ICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCdzdG9wJykKLSAgICAgICAgc2VsZi5fYnJv
a2VyLnJ1bl9tZXNzYWdlX2xvb3AoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9h
X3N0ciwgJ2hpLCBtZScpCi0KIAogIyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0NTIwLgogaWYgc3lzLnBsYXRmb3JtIG5vdCBpbiAoJ2N5Z3dpbicsICd3
aW4zMicpOgpAQCAtMjAwLDM1ICsxODYsNiBAQCBpZiBzeXMucGxhdGZvcm0gbm90IGluICgnY3ln
d2luJywgJ3dpbjMyJyk6CiAgICAgICAgICAgICBzZWxmLl9tYXhfd29ya2VycyA9IDIKIAogCi1j
bGFzcyBJbnRlcmZhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRoZXNlIHRlc3Rz
IG1vc3RseSBleGlzdCB0byBwYWNpZnkgY292ZXJhZ2UuCi0KLSAgICAjIEZJWE1FOiBUaGVyZSBt
dXN0IGJlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzIGFuZCBhbHNvIHZlcmlmeQotICAgICMgdGhh
dCBjbGFzc2VzIGRvIGltcGxlbWVudCBldmVyeSBhYnN0cmFjdCBtZXRob2QgaW4gYW4gaW50ZXJm
YWNlLgotICAgIGRlZiB0ZXN0X2Jyb2tlcmNsaWVudF9pc19hYnN0cmFjdChzZWxmKToKLSAgICAg
ICAgIyBUZXN0IHRoYXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFu
ZCBoYXZlIHRoZQotICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCi0gICAgICAgIG9iaiA9
IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5Ccm9rZXJDbGllbnQoKQotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouaXNfZG9uZSkKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLm5hbWUpCi0KLSAgICBkZWYgdGVz
dF9tYW5hZ2VyY29ubmVjdGlvbl9pc19hYnN0cmFjdChzZWxmKToKLSAgICAgICAgIyBUZXN0IHRo
YXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFuZCBoYXZlIHRoZQot
ICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCi0gICAgICAgIGJyb2tlciA9IG1ha2VfYnJv
a2VyKHNlbGYsIDEpCi0gICAgICAgIG9iaiA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5fTWFuYWdl
ckNvbm5lY3Rpb24oYnJva2VyLl9icm9rZXIsIHNlbGYsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5zdGFydF93b3JrZXIpCi0KLSAgICBk
ZWYgdGVzdF93b3JrZXJjb25uZWN0aW9uX2lzX2Fic3RyYWN0KHNlbGYpOgotICAgICAgICAjIFRl
c3QgdGhhdCBhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kcyBhcmUgYWJzdHJhY3QgYW5kIGhhdmUg
dGhlCi0gICAgICAgICMgc2lnbmF0dXJlIHdlIGV4cGVjdC4KLSAgICAgICAgYnJva2VyID0gbWFr
ZV9icm9rZXIoc2VsZiwgMSkKLSAgICAgICAgb2JqID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLl9X
b3JrZXJDb25uZWN0aW9uKGJyb2tlci5fYnJva2VyLCBfVGVzdFdvcmtlciwgTm9uZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLmNhbmNlbCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLmlzX2FsaXZl
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouam9p
biwgTm9uZSkKLQotCiBjbGFzcyBNZXNzYWdlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ZGVmIHRlc3RfX25vX2JvZHkoc2VsZik6CiAgICAgICAgIG1zZyA9IG1hbmFnZXJfd29ya2VyX2Jy
b2tlci5fTWVzc2FnZSgnc3JjJywgJ3RvcGljX25hbWUnLCAnbWVzc2FnZV9uYW1lJywgTm9uZSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL3dvcmtlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL3dvcmtlci5weQppbmRleCA1ZTUyMmNiMWJkOThkYTNiNmRhNWM2MGViODVlYWMxOGI0
ZGRmZDEyLi5hODYxMWE4NzJlNTI3MDUzMDc0MTM0MDllZTk5ZTBlY2JlODdmNWMwIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3Jr
ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvd29ya2VyLnB5CkBAIC00NSwyMCArNDUsMTEgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMudmlld3MgaW1wb3J0IG1ldGVyZWRfc3RyZWFtCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
X19uYW1lX18pCiAKIAotY2xhc3MgV29ya2VyQXJndW1lbnRzKG9iamVjdCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKToK
LSAgICAgICAgc2VsZi53b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgotICAgICAgICBzZWxm
LnJlc3VsdHNfZGlyZWN0b3J5ID0gcmVzdWx0c19kaXJlY3RvcnkKLSAgICAgICAgc2VsZi5vcHRp
b25zID0gb3B0aW9ucwotCi0KIGNsYXNzIFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIuQWJz
dHJhY3RXb3JrZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3b3JrZXJfY29ubmVjdGlvbiwg
d29ya2VyX2FyZ3VtZW50cyk6Ci0gICAgICAgIHN1cGVyKFdvcmtlciwgc2VsZikuX19pbml0X18o
d29ya2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9hcmd1bWVudHMpCi0gICAgICAgIHNlbGYuX3dvcmtl
cl9udW1iZXIgPSB3b3JrZXJfYXJndW1lbnRzLndvcmtlcl9udW1iZXIKLSAgICAgICAgc2VsZi5f
bmFtZSA9ICd3b3JrZXIvJWQnICUgc2VsZi5fd29ya2VyX251bWJlcgotICAgICAgICBzZWxmLl9y
ZXN1bHRzX2RpcmVjdG9yeSA9IHdvcmtlcl9hcmd1bWVudHMucmVzdWx0c19kaXJlY3RvcnkKLSAg
ICAgICAgc2VsZi5fb3B0aW9ucyA9IHdvcmtlcl9hcmd1bWVudHMub3B0aW9ucworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB3b3JrZXJfY29ubmVjdGlvbiwgd29ya2VyX251bWJlciwgcmVzdWx0c19k
aXJlY3RvcnksIG9wdGlvbnMpOgorICAgICAgICBzdXBlcihXb3JrZXIsIHNlbGYpLl9faW5pdF9f
KHdvcmtlcl9jb25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyKQorICAgICAgICBzZWxmLl9yZXN1bHRz
X2RpcmVjdG9yeSA9IHJlc3VsdHNfZGlyZWN0b3J5CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBv
cHRpb25zCiAgICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCiAgICAgICAgIHNlbGYuX2JhdGNoX3Np
emUgPSBOb25lCiAgICAgICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gTm9uZQpAQCAtMTAwLDI0ICs5
MSwxNiBAQCBjbGFzcyBXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2Vy
KToKICAgICAgICAgc2VsZi5fbG9nX2hhbmRsZXIgPSBfV29ya2VyTG9nSGFuZGxlcihzZWxmKQog
ICAgICAgICBzZWxmLl9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLl9sb2dfaGFuZGxlcikKIAotICAg
IGRlZiBfc2V0X3VwX2hvc3RfYW5kX3BvcnQoc2VsZik6Ci0gICAgICAgIG9wdGlvbnMgPSBzZWxm
Ll9vcHRpb25zCi0gICAgICAgIGlmIG9wdGlvbnMucGxhdGZvcm0gYW5kICd0ZXN0JyBpbiBvcHRp
b25zLnBsYXRmb3JtOgotICAgICAgICAgICAgIyBJdCBpcyBsYW1lIHRvIGltcG9ydCBtb2NrcyBp
bnRvIHJlYWwgY29kZSwgYnV0IHRoaXMgYWxsb3dzIHVzIHRvIHVzZSB0aGUgdGVzdCBwb3J0IGlu
IG11bHRpLXByb2Nlc3MgdGVzdHMgYXMgd2VsbC4KLSAgICAgICAgICAgIGZyb20gd2Via2l0cHku
Y29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKLSAgICAgICAgICAgIGhvc3QgPSBNb2Nr
SG9zdCgpCi0gICAgICAgIGVsc2U6CisgICAgZGVmIHJ1bihzZWxmLCBob3N0LCBzZXRfdXBfbG9n
Z2luZyk6CisgICAgICAgIGlmIG5vdCBob3N0OgogICAgICAgICAgICAgaG9zdCA9IEhvc3QoKQot
ICAgICAgICBzZWxmLl9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KG9wdGlvbnMucGxhdGZv
cm0sIG9wdGlvbnMpCiAKLSAgICBkZWYgc2V0X2lubGluZV9hcmd1bWVudHMoc2VsZiwgcG9ydCk6
Ci0gICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0Ci0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAg
ICBpZiBub3Qgc2VsZi5fcG9ydDoKLSAgICAgICAgICAgICMgV2UgYXJlIHJ1bm5pbmcgaW4gYSBj
aGlsZCBwcm9jZXNzIGFuZCBuZWVkIHRvIGluaXRpYWxpemUgdGhpbmdzLgorICAgICAgICAjIEZJ
WE1FOiB0aGlzIHNob3VsZCBtb3ZlIGludG8gbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5LgorICAg
ICAgICBpZiBzZXRfdXBfbG9nZ2luZzoKICAgICAgICAgICAgIHNlbGYuX3NldF91cF9sb2dnaW5n
KCkKLSAgICAgICAgICAgIHNlbGYuX3NldF91cF9ob3N0X2FuZF9wb3J0KCkKKworICAgICAgICBv
cHRpb25zID0gc2VsZi5fb3B0aW9ucworICAgICAgICBzZWxmLl9wb3J0ID0gaG9zdC5wb3J0X2Zh
Y3RvcnkuZ2V0KG9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnMpCiAKICAgICAgICAgc2VsZi5zYWZl
X2luaXQoKQogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXJfdW5pdHRlc3QucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYjRlN2E1YmI1YWU2ODc0NzFjYmEzMjAw
YTA4YjMxYjU4YjEzNmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29y
a2VyX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotIyBDb3B5cmln
aHQgKGMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5j
b250cm9sbGVycy53b3JrZXIgaW1wb3J0IFdvcmtlciwgV29ya2VyQXJndW1lbnRzCi1mcm9tIHdl
YmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCi0KLQotY2xhc3MgRmFrZUNv
bm5lY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxmKToKLSAgICAg
ICAgcGFzcwotCi0gICAgZGVmIHBvc3RfbWVzc2FnZShzZWxmLCBtZXNzYWdlX25hbWUsICptZXNz
YWdlX2FyZ3MpOgotICAgICAgICBwYXNzCi0KLQotY2xhc3MgV29ya2VyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZGVmYXVsdF9wbGF0Zm9ybV9pbl93b3JrZXIoc2VsZik6
Ci0gICAgICAgICMgVGhpcyBjaGVja3MgdGhhdCB3ZSBnb3QgYSBwb3J0IGFuZCBkaWRuJ3QgcmFp
c2UgYW4gZXhjZXB0aW9uCi0gICAgICAgICMgaWYgd2UgZGlkbid0IHNwZWNpZnkgYSBwb3J0IHdp
dGggdGhlIC0tcGxhdGZvcm0gZmxhZy4KLSAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24gPSBGYWtl
Q29ubmVjdGlvbigpCi0gICAgICAgIHdvcmtlciA9IFdvcmtlcih3b3JrZXJfY29ubmVjdGlvbiwg
V29ya2VyQXJndW1lbnRzKDEsICcvdG1wJywgTW9ja09wdGlvbnMocGxhdGZvcm09Tm9uZSwgcHJp
bnRfb3B0aW9ucz1Ob25lLCB2ZXJib3NlPUZhbHNlLCBiYXRjaF9zaXplPTApKSkKLSAgICAgICAg
d29ya2VyLl9zZXRfdXBfaG9zdF9hbmRfcG9ydCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1
YWxzKHdvcmtlci5fcG9ydCwgTm9uZSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgot
ICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9u
dGVzdC5weQppbmRleCBlMDY0NjhkZGE2NmFhNmUzMTViYTM3YzU4ZDJhNzk4ZjQ1MGJmZjdmLi4y
OGUxYTE0NTEwYmRkNDhiNWI3NzRkOWY3ZDc1YWNjMGMwZTY3YTA2IDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0
aW9udGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQpAQCAtNTAsNyArNTAsNyBAQCBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiAKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBv
cnQgcnVuX3dlYmtpdF90ZXN0cwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxl
cnMubWFuYWdlciBpbXBvcnQgV29ya2VyRXhjZXB0aW9uCitmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5jb250cm9sbGVycy5tYW5hZ2VyX3dvcmtlcl9icm9rZXIgaW1wb3J0IFdvcmtlckV4Y2Vw
dGlvbgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgUG9ydAogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydCwgVGVzdERyaXZl
cgogZnJvbSB3ZWJraXRweS50ZXN0LnNraXAgaW1wb3J0IHNraXBfaWYKQEAgLTgyLDE4ICs4Miwy
MiBAQCBkZWYgcGFyc2VfYXJncyhleHRyYV9hcmdzPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNl
LCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgbmV3XwogICAgIHJldHVybiBydW5fd2Via2l0X3Rlc3Rz
LnBhcnNlX2FyZ3MoYXJncykKIAogCi1kZWYgcGFzc2luZ19ydW4oZXh0cmFfYXJncz1Ob25lLCBw
b3J0X29iaj1Ob25lLCByZWNvcmRfcmVzdWx0cz1GYWxzZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2Us
IGhvc3Q9Tm9uZSk6CitkZWYgcGFzc2luZ19ydW4oZXh0cmFfYXJncz1Ob25lLCBwb3J0X29iaj1O
b25lLCByZWNvcmRfcmVzdWx0cz1GYWxzZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2UsIGhvc3Q9Tm9u
ZSwgc2hhcmVkX3BvcnQ9VHJ1ZSk6CiAgICAgb3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBwYXJzZV9h
cmdzKGV4dHJhX2FyZ3MsIHJlY29yZF9yZXN1bHRzLCB0ZXN0c19pbmNsdWRlZCkKICAgICBpZiBu
b3QgcG9ydF9vYmo6CiAgICAgICAgIGhvc3QgPSBob3N0IG9yIE1vY2tIb3N0KCkKICAgICAgICAg
cG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lPW9wdGlvbnMucGxhdGZv
cm0sIG9wdGlvbnM9b3B0aW9ucykKKworICAgIGlmIHNoYXJlZF9wb3J0OgorICAgICAgICBwb3J0
X29iai5ob3N0LnBvcnRfZmFjdG9yeS5nZXQgPSBsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBwb3J0
X29iagorCiAgICAgYnVpbGRib3Rfb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQogICAgIHJl
Z3VsYXJfb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQogICAgIHJlcyA9IHJ1bl93ZWJraXRf
dGVzdHMucnVuKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncywgYnVpbGRib3Rfb3V0cHV0
PWJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQ9cmVndWxhcl9vdXRwdXQpCiAgICAgcmV0
dXJuIHJlcyA9PSAwIGFuZCBub3QgcmVndWxhcl9vdXRwdXQuZ2V0dmFsdWUoKSBhbmQgbm90IGJ1
aWxkYm90X291dHB1dC5nZXR2YWx1ZSgpCiAKIAotZGVmIGxvZ2dpbmdfcnVuKGV4dHJhX2FyZ3M9
Tm9uZSwgcG9ydF9vYmo9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2UsIHRlc3RzX2luY2x1ZGVk
PUZhbHNlLCBob3N0PU5vbmUsIG5ld19yZXN1bHRzPUZhbHNlKToKK2RlZiBsb2dnaW5nX3J1bihl
eHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLCB0ZXN0
c19pbmNsdWRlZD1GYWxzZSwgaG9zdD1Ob25lLCBuZXdfcmVzdWx0cz1GYWxzZSwgc2hhcmVkX3Bv
cnQ9VHJ1ZSk6CiAgICAgb3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBwYXJzZV9hcmdzKGV4dHJhX2Fy
Z3M9ZXh0cmFfYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVj
b3JkX3Jlc3VsdHM9cmVjb3JkX3Jlc3VsdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPXRlc3RzX2luY2x1ZGVkLApAQCAtMTAyLDExICsxMDYs
MTMgQEAgZGVmIGxvZ2dpbmdfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgcG9ydF9vYmo9Tm9uZSwgcmVj
b3JkX3Jlc3VsdHM9RmFsc2UsIHRlc3RzX2luY2wKICAgICBpZiBub3QgcG9ydF9vYmo6CiAgICAg
ICAgIHBvcnRfb2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZT1vcHRpb25zLnBs
YXRmb3JtLCBvcHRpb25zPW9wdGlvbnMpCiAKLSAgICByZXMsIGJ1aWxkYm90X291dHB1dCwgcmVn
dWxhcl9vdXRwdXQgPSBydW5fYW5kX2NhcHR1cmUocG9ydF9vYmosIG9wdGlvbnMsIHBhcnNlZF9h
cmdzKQorICAgIHJlcywgYnVpbGRib3Rfb3V0cHV0LCByZWd1bGFyX291dHB1dCA9IHJ1bl9hbmRf
Y2FwdHVyZShwb3J0X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3MsIHNoYXJlZF9wb3J0KQogICAg
IHJldHVybiAocmVzLCBidWlsZGJvdF9vdXRwdXQsIHJlZ3VsYXJfb3V0cHV0LCBob3N0LnVzZXIp
CiAKIAotZGVmIHJ1bl9hbmRfY2FwdHVyZShwb3J0X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3Mp
OgorZGVmIHJ1bl9hbmRfY2FwdHVyZShwb3J0X29iaiwgb3B0aW9ucywgcGFyc2VkX2FyZ3MsIHNo
YXJlZF9wb3J0PVRydWUpOgorICAgIGlmIHNoYXJlZF9wb3J0OgorICAgICAgICBwb3J0X29iai5o
b3N0LnBvcnRfZmFjdG9yeS5nZXQgPSBsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBwb3J0X29iagog
ICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRDYXB0dXJlKCkKICAgICB0cnk6CiAgICAgICAg
IG9jLmNhcHR1cmVfb3V0cHV0KCkKQEAgLTMwMywxNCArMzA5LDE0IEBAIGNsYXNzIE1haW5UZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1UZXN0aW5nTWl4aW4pOgogICAgIGRlZiB0ZXN0X2No
aWxkX3Byb2Nlc3Nlc18yKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnNob3VsZF90ZXN0X3Byb2Nl
c3NlczoKICAgICAgICAgICAgIF8sIF8sIHJlZ3VsYXJfb3V0cHV0LCBfID0gbG9nZ2luZ19ydW4o
Ci0gICAgICAgICAgICAgICAgWyctLXByaW50JywgJ2NvbmZpZycsICctLWNoaWxkLXByb2Nlc3Nl
cycsICcyJ10pCisgICAgICAgICAgICAgICAgWyctLXByaW50JywgJ2NvbmZpZycsICctLWNoaWxk
LXByb2Nlc3NlcycsICcyJ10sIHNoYXJlZF9wb3J0PUZhbHNlKQogICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGFueShbJ1J1bm5pbmcgMiAnIGluIGxpbmUgZm9yIGxpbmUgaW4gcmVndWxhcl9v
dXRwdXQuYnVmbGlzdF0pKQogCiAgICAgZGVmIHRlc3RfY2hpbGRfcHJvY2Vzc2VzX21pbihzZWxm
KToKICAgICAgICAgaWYgc2VsZi5zaG91bGRfdGVzdF9wcm9jZXNzZXM6CiAgICAgICAgICAgICBf
LCBfLCByZWd1bGFyX291dHB1dCwgXyA9IGxvZ2dpbmdfcnVuKAogICAgICAgICAgICAgICAgIFsn
LS1wcmludCcsICdjb25maWcnLCAnLS1jaGlsZC1wcm9jZXNzZXMnLCAnMicsICdwYXNzZXMnXSwK
LSAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlKQorICAgICAgICAgICAgICAgIHRl
c3RzX2luY2x1ZGVkPVRydWUsIHNoYXJlZF9wb3J0PUZhbHNlKQogICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGFueShbJ1J1bm5pbmcgMSAnIGluIGxpbmUgZm9yIGxpbmUgaW4gcmVndWxhcl9v
dXRwdXQuYnVmbGlzdF0pKQogCiAgICAgZGVmIHRlc3RfZHJ5cnVuKHNlbGYpOgpAQCAtMzM1LDcg
KzM0MSw3IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1UZXN0aW5n
TWl4aW4pOgogCiAgICAgICAgIGlmIHNlbGYuc2hvdWxkX3Rlc3RfcHJvY2Vzc2VzOgogICAgICAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoV29ya2VyRXhjZXB0aW9uLCBsb2dnaW5nX3J1biwKLSAg
ICAgICAgICAgICAgICBbJy0tY2hpbGQtcHJvY2Vzc2VzJywgJzInLCAnLS1mb3JjZScsICdmYWls
dXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCcsICdwYXNzZXMvdGV4dC5odG1sJ10sIHRlc3Rz
X2luY2x1ZGVkPVRydWUpCisgICAgICAgICAgICAgICAgWyctLWNoaWxkLXByb2Nlc3NlcycsICcy
JywgJy0tZm9yY2UnLCAnZmFpbHVyZXMvZXhwZWN0ZWQvZXhjZXB0aW9uLmh0bWwnLCAncGFzc2Vz
L3RleHQuaHRtbCddLCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBzaGFyZWRfcG9ydD1GYWxzZSkKIAog
ICAgIGRlZiB0ZXN0X2Z1bGxfcmVzdWx0c19odG1sKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiB2
ZXJpZnkgaHRtbD8KQEAgLTM2NSw3ICszNzEsNyBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSwgU3RyZWFtVGVzdGluZ01peGluKToKIAogICAgICAgICBpZiBzZWxmLnNob3VsZF90
ZXN0X3Byb2Nlc3NlczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleWJvYXJkSW50
ZXJydXB0LCBsb2dnaW5nX3J1biwKLSAgICAgICAgICAgICAgICBbJ2ZhaWx1cmVzL2V4cGVjdGVk
L2tleWJvYXJkLmh0bWwnLCAncGFzc2VzL3RleHQuaHRtbCcsICctLWNoaWxkLXByb2Nlc3Nlcycs
ICcyJywgJy0tZm9yY2UnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKKyAgICAgICAgICAgICAgICBb
J2ZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwnLCAncGFzc2VzL3RleHQuaHRtbCcsICct
LWNoaWxkLXByb2Nlc3NlcycsICcyJywgJy0tZm9yY2UnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwg
c2hhcmVkX3BvcnQ9RmFsc2UpCiAKICAgICBkZWYgdGVzdF9ub190ZXN0c19mb3VuZChzZWxmKToK
ICAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKFsncmVzb3VyY2VzJ10s
IHRlc3RzX2luY2x1ZGVkPVRydWUpCkBAIC03NTUsNiArNzYxLDcgQEAgY2xhc3MgTWFpblRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVRlc3RpbmdNaXhpbik6CiAKICAgICAgICAgIyBOb3cg
d2UgdGVzdCB0aGF0IC0tY2xvYmJlci1vbGQtcmVzdWx0cyBkb2VzIHJlbW92ZSB0aGUgb2xkIGVu
dHJpZXMgYW5kIHRoZSBvbGQgcmV0cmllcywKICAgICAgICAgIyBhbmQgdGhhdCB3ZSBkb24ndCBy
ZXRyeSBhZ2Fpbi4KKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgcmVzLCBvdXQs
IGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsnLS1uby1yZXRyeS1mYWlsdXJlcycsICctLWNsb2JiZXIt
b2xkLXJlc3VsdHMnLCAnZmFpbHVyZXMvZmxha3knXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgaG9z
dD1ob3N0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXMsIDEpCiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgnQ2xvYmJlcmluZyBvbGQgcmVzdWx0cycgaW4gZXJyLmdldHZhbHVlKCkpCkBA
IC03NjQsMjIgKzc3MSwxNiBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3Ry
ZWFtVGVzdGluZ01peGluKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvc3QuZmlsZXN5c3Rl
bS5leGlzdHMoJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYWlsdXJlcy9mbGFreS90ZXh0LWFj
dHVhbC50eHQnKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShob3N0LmZpbGVzeXN0ZW0uZXhp
c3RzKCdyZXRyaWVzJykpCiAKLQotICAgICMgVGhlc2UgbmV4dCB0ZXN0cyB0ZXN0IHRoYXQgd2Ug
cnVuIHRoZSB0ZXN0cyBpbiBhc2NlbmRpbmcgYWxwaGFiZXRpY2FsCi0gICAgIyBvcmRlciBwZXIg
ZGlyZWN0b3J5LiBIVFRQIHRlc3RzIGFyZSBzaGFyZGVkIHNlcGFyYXRlbHkgZnJvbSBvdGhlciB0
ZXN0cywKLSAgICAjIHNvIHdlIGhhdmUgdG8gdGVzdCBib3RoLgotICAgIGRlZiBhc3NlcnRfcnVu
X29yZGVyKHNlbGYsIGNoaWxkX3Byb2Nlc3Nlcz0nMScpOgotICAgICAgICB0ZXN0c19ydW4gPSBn
ZXRfdGVzdHNfcnVuKFsnLS1jaGlsZC1wcm9jZXNzZXMnLCBjaGlsZF9wcm9jZXNzZXMsICdwYXNz
ZXMnXSwKLSAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1U
cnVlKQorICAgIGRlZiB0ZXN0X3J1bl9vcmRlcl9faW5saW5lKHNlbGYpOgorICAgICAgICAjIFRo
ZXNlIG5leHQgdGVzdHMgdGVzdCB0aGF0IHdlIHJ1biB0aGUgdGVzdHMgaW4gYXNjZW5kaW5nIGFs
cGhhYmV0aWNhbAorICAgICAgICAjIG9yZGVyIHBlciBkaXJlY3RvcnkuIEhUVFAgdGVzdHMgYXJl
IHNoYXJkZWQgc2VwYXJhdGVseSBmcm9tIG90aGVyIHRlc3RzLAorICAgICAgICAjIHNvIHdlIGhh
dmUgdG8gdGVzdCBib3RoLgorICAgICAgICB0ZXN0c19ydW4gPSBnZXRfdGVzdHNfcnVuKFsncGFz
c2VzJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZsYXR0ZW5fYmF0Y2hlcz1UcnVlKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyh0ZXN0c19ydW4sIHNvcnRlZCh0ZXN0c19ydW4pKQogCi0gICAg
ICAgIHRlc3RzX3J1biA9IGdldF90ZXN0c19ydW4oWyctLWNoaWxkLXByb2Nlc3NlcycsIGNoaWxk
X3Byb2Nlc3NlcywgJ2h0dHAvdGVzdHMvcGFzc2VzJ10sCi0gICAgICAgICAgICB0ZXN0c19pbmNs
dWRlZD1UcnVlLCBmbGF0dGVuX2JhdGNoZXM9VHJ1ZSkKKyAgICAgICAgdGVzdHNfcnVuID0gZ2V0
X3Rlc3RzX3J1bihbJ2h0dHAvdGVzdHMvcGFzc2VzJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIGZs
YXR0ZW5fYmF0Y2hlcz1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh0ZXN0c19ydW4s
IHNvcnRlZCh0ZXN0c19ydW4pKQogCi0gICAgZGVmIHRlc3RfcnVuX29yZGVyX19pbmxpbmUoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X3J1bl9vcmRlcigpCi0KICAgICBkZWYgdGVzdF90b2xl
cmFuY2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIEltYWdlRGlmZlRlc3RQb3J0KFRlc3RQb3J0KToK
ICAgICAgICAgICAgIGRlZiBkaWZmX2ltYWdlKHNlbGYsIGV4cGVjdGVkX2NvbnRlbnRzLCBhY3R1
YWxfY29udGVudHMsIHRvbGVyYW5jZT1Ob25lKToK
</data>
<flag name="review"
          id="157965"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>