<?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>76680</bug_id>
          
          <creation_ts>2012-01-19 18:07:40 -0800</creation_ts>
          <short_desc>run-perf-tests should support --test-results-server option</short_desc>
          <delta_ts>2012-01-20 14:40:45 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>10266</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>539206</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-19 18:07:40 -0800</bug_when>
    <thetext>I&apos;ve considered doing this using curl but hard-coding the exact URL, format, etc... into master.cfg seemed inflexible and fragile at best. So I&apos;m adding --upload-json option to run-perf-test instead just like run-webkit-tests supports --test-results-server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539226</commentid>
    <comment_count>1</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-19 18:42:13 -0800</bug_when>
    <thetext>If they do the same thing, it seems like the options should probably have the same name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539243</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-19 19:09:23 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; If they do the same thing, it seems like the options should probably have the same name?

I guess we can do that though webkit-perf is not exactly &quot;test result server&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539246</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-19 19:27:29 -0800</bug_when>
    <thetext>Feel free to change the name in run-webkit-tests to something better instead; I have no preference here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539254</commentid>
    <comment_count>4</comment_count>
      <attachid>123244</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-19 19:46:06 -0800</bug_when>
    <thetext>Created attachment 123244
adds the option</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539263</commentid>
    <comment_count>5</comment_count>
      <attachid>123244</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-19 20:30:36 -0800</bug_when>
    <thetext>Comment on attachment 123244
adds the option

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

&gt; Tools/Scripts/webkitpy/common/net/file_uploader.py:92
&gt; +        self._uplad_data(content_type, filesystem.read_text_file(filename))

typo: &quot;uplad_data&quot;.

&gt; Tools/Scripts/webkitpy/common/net/file_uploader.py:98
&gt; +            file_objs.append((&apos;file&apos;, filename, filesystem.read_text_file(filename)))

The previous code was opened as binary. Was that a bug? Seems like it probably was since we&apos;re uploading json data ...

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:324
&gt; +        # Set uploading timeout in case appengine server is having problem.

Nit: &quot;having problems&quot;

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:118
&gt; +            self._printer.write(&quot;Build not up to date for %s&quot; % self._port._path_to_driver())

why are you changing the _log calls to self._printer calls? If the printer was initialized properly, the log messages should show up there anyway, and you&apos;re losing the different log levels this way.

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:138
&gt; +                return -2

Is there significance to these values? Should you be logging messages or something?

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:157
&gt;              except:

I realize you didn&apos;t change this, but bare exception catches are usually a bad idea. Please make this more specific while you&apos;re in here.

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:172
&gt; +        except Exception, error:

same comment, except you did write this one :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539265</commentid>
    <comment_count>6</comment_count>
      <attachid>123244</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-19 20:53:32 -0800</bug_when>
    <thetext>Comment on attachment 123244
adds the option

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

&gt;&gt; Tools/Scripts/webkitpy/common/net/file_uploader.py:92
&gt;&gt; +        self._uplad_data(content_type, filesystem.read_text_file(filename))
&gt; 
&gt; typo: &quot;uplad_data&quot;.

Fixed.

&gt;&gt; Tools/Scripts/webkitpy/common/net/file_uploader.py:98
&gt;&gt; +            file_objs.append((&apos;file&apos;, filename, filesystem.read_text_file(filename)))
&gt; 
&gt; The previous code was opened as binary. Was that a bug? Seems like it probably was since we&apos;re uploading json data ...

Yeah, it was probably a bug.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:324
&gt;&gt; +        # Set uploading timeout in case appengine server is having problem.
&gt; 
&gt; Nit: &quot;having problems&quot;

Fixed.

&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:118
&gt;&gt; +            self._printer.write(&quot;Build not up to date for %s&quot; % self._port._path_to_driver())
&gt; 
&gt; why are you changing the _log calls to self._printer calls? If the printer was initialized properly, the log messages should show up there anyway, and you&apos;re losing the different log levels this way.

The use of _log was an error. I never intended to use _log anywhere in the code.

&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:138
&gt;&gt; +                return -2
&gt; 
&gt; Is there significance to these values? Should you be logging messages or something?

No, I just want to make the debugging easier when failures happen on a bot. _generate_json and _upload_json should each log some error when they return False.

&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:157
&gt;&gt;              except:
&gt; 
&gt; I realize you didn&apos;t change this, but bare exception catches are usually a bad idea. Please make this more specific while you&apos;re in here.

Sure, fixed.

&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:172
&gt;&gt; +        except Exception, error:
&gt; 
&gt; same comment, except you did write this one :).

I don&apos;t think I can make this one more specific. We need to catch any error here in order to avoid blowing up inside _upload_json. It&apos;s also too verbose to list all exceptions urllib, socket, etc... may throw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539266</commentid>
    <comment_count>7</comment_count>
      <attachid>123249</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-19 20:55:45 -0800</bug_when>
    <thetext>Created attachment 123249
Fixed per Dirk&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539343</commentid>
    <comment_count>8</comment_count>
      <attachid>123249</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-20 01:26:28 -0800</bug_when>
    <thetext>Comment on attachment 123249
Fixed per Dirk&apos;s comment

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:51
&gt; +    _default_branch = &apos;WebKit trunk&apos;

I&apos;m going to change this to webkit-trunk per corresponding AppEngine change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539723</commentid>
    <comment_count>9</comment_count>
      <attachid>123249</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-20 12:51:13 -0800</bug_when>
    <thetext>Comment on attachment 123249
Fixed per Dirk&apos;s comment

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

&gt; Tools/Scripts/webkitpy/common/net/file_uploader.py:86
&gt;  class FileUploader(object):

Were there no file_uploader unit tests to update?  If not, please add some before landing.

&gt; Tools/Scripts/webkitpy/common/net/file_uploader.py:92
&gt; +    def upload_single_file(self, filesystem, content_type, filename):
&gt; +        self._upload_data(content_type, filesystem.read_text_file(filename))

upload_single_file -&gt; upload_single_text_file ?

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:138
&gt; +                return -2

These numbers should probably be named constants.  Even better: just log the problem rather than using error codes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539726</commentid>
    <comment_count>10</comment_count>
      <attachid>123249</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-20 12:55:31 -0800</bug_when>
    <thetext>Comment on attachment 123249
Fixed per Dirk&apos;s comment

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

&gt;&gt; Tools/Scripts/webkitpy/common/net/file_uploader.py:86
&gt;&gt;  class FileUploader(object):
&gt; 
&gt; Were there no file_uploader unit tests to update?  If not, please add some before landing.

Unfortunately, it&apos;s hard to unit-test these functions because we can&apos;t really stub/mock urllib2/socket/NetworkTransaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539727</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-20 12:57:27 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 123249 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123249&amp;action=review
&gt;
&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:138
&gt; &gt; +                return -2
&gt; 
&gt; These numbers should probably be named constants.  Even better: just log the problem rather than using error codes.

Calles emit a error message so we should be able to see them in the console.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539761</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-20 13:43:00 -0800</bug_when>
    <thetext>&gt; &gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:118
&gt; &gt;&gt; +            self._printer.write(&quot;Build not up to date for %s&quot; % self._port._path_to_driver())
&gt; &gt; 
&gt; &gt; why are you changing the _log calls to self._printer calls? If the printer was initialized properly, the log messages should show up there anyway, and you&apos;re losing the different log levels this way.
&gt; 
&gt; The use of _log was an error. I never intended to use _log anywhere in the code.
&gt; 

Generally, we use _log to print things in python code. Further, the printer class is a confusing, obscure class that probably shouldn&apos;t be public and should only be used when you need to print things that aren&apos;t a line-at-a-time.

Please change these back to _log statements unless there&apos;s some other reason you really need access to the printer directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539782</commentid>
    <comment_count>13</comment_count>
      <attachid>123249</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-20 14:11:54 -0800</bug_when>
    <thetext>Comment on attachment 123249
Fixed per Dirk&apos;s comment

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

&gt;&gt; Tools/Scripts/webkitpy/common/net/file_uploader.py:92
&gt;&gt; +        self._upload_data(content_type, filesystem.read_text_file(filename))
&gt; 
&gt; upload_single_file -&gt; upload_single_text_file ?

Done.

&gt;&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:138
&gt;&gt;&gt; +                return -2
&gt;&gt; 
&gt;&gt; These numbers should probably be named constants.  Even better: just log the problem rather than using error codes.
&gt; 
&gt; Calles emit a error message so we should be able to see them in the console.

I&apos;ve changed calls to printer.write by log.error in the callees and replaced these by _EXIT_CODE_* constants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539786</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-20 14:17:38 -0800</bug_when>
    <thetext>Committed r105543: &lt;http://trac.webkit.org/changeset/105543&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539801</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-20 14:40:45 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; I&apos;ve changed calls to printer.write by log.error in the callees and replaced these by _EXIT_CODE_* constants.

Looks great. Thank you!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123244</attachid>
            <date>2012-01-19 19:46:06 -0800</date>
            <delta_ts>2012-01-19 20:55:41 -0800</delta_ts>
            <desc>adds the option</desc>
            <filename>bug-76680-20120119194605.patch</filename>
            <type>text/plain</type>
            <size>18483</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwNTQ3NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM5IEBACisyMDEyLTAxLTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIHJ1bi1wZXJmLXRlc3RzIHNob3VsZCBzdXBwb3J0IC0tdGVzdC1yZXN1bHRzLXNl
cnZlciBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2NjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIC0tdGVzdC1yZXN1bHRzLXNlcnZlciwgLS1idWlsZGVyLW5hbWUsIGFuZCAtLWJ1aWxk
LW51bWJlciBvcHRpb25zIHRvIHJ1bi1wZXJmLXRlc3RzCisgICAgICAgIHRvIGJlIHVzZWQgYnkg
cGVyZiBib3RzLiBBbHNvIHJlZmFjdG9yIGZpbGVfdXBsb2FkZXIgYXMgbmVlZGVkLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2ZpbGVfdXBsb2FkZXIucHk6CisgICAg
ICAgIChGaWxlVXBsb2FkZXIuX19pbml0X18pOgorICAgICAgICAoRmlsZVVwbG9hZGVyLnVwbG9h
ZF9zaW5nbGVfZmlsZSk6CisgICAgICAgIChGaWxlVXBsb2FkZXIudXBsb2FkX2FzX211bHRpcGFy
dF9mb3JtX2RhdGEpOgorICAgICAgICAoRmlsZVVwbG9hZGVyKToKKyAgICAgICAgKEZpbGVVcGxv
YWRlci5fdXBsYWRfZGF0YSk6CisgICAgICAgIChGaWxlVXBsb2FkZXIuX3VwbGFkX2RhdGEuY2Fs
bGJhY2spOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3IucHk6CisgICAgICAgIChKU09OUmVzdWx0c0dl
bmVyYXRvckJhc2UudXBsb2FkX2pzb25fZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5OgorICAgICAgICAoUGVyZlRl
c3RzUnVubmVyKToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fcGFyc2VfYXJncyk6CisgICAg
ICAgIChQZXJmVGVzdHNSdW5uZXIucnVuKToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fZ2Vu
ZXJhdGVfanNvbik6CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX3VwbG9hZF9qc29uKToKKyAg
ICAgICAgKFBlcmZUZXN0c1J1bm5lci5fcnVuX3Rlc3RzX3NldCk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHk6
CisgICAgICAgIChjcmVhdGVfcnVubmVyKToKKyAgICAgICAgKHRlc3RfcnVuX3dpdGhfdXBsb2Fk
X2pzb24pOgorICAgICAgICAodGVzdF9ydW5fd2l0aF91cGxvYWRfanNvbi5tb2NrX3VwbG9hZF9q
c29uKToKKyAgICAgICAgKHRlc3RfdXBsb2FkX2pzb24pOgorICAgICAgICAodGVzdF91cGxvYWRf
anNvbi5Nb2NrRmlsZVVwbG9hZGVyKToKKyAgICAgICAgKHRlc3RfdXBsb2FkX2pzb24uTW9ja0Zp
bGVVcGxvYWRlci5fX2luaXRfXyk6CisgICAgICAgICh0ZXN0X3VwbG9hZF9qc29uLk1vY2tGaWxl
VXBsb2FkZXIudXBsb2FkX3NpbmdsZV9maWxlKToKKyAgICAgICAgKHRlc3RfcGFyc2VfYXJncyk6
CisKIDIwMTItMDEtMTkgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguIFdyb25nIHZhcmlhYmxlIGJlaW5nIHVzZWQg
YXMgdGhlIGN3ZCBmb3IgZ2l0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvZmlsZV91cGxvYWRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvZmlsZV91cGxvYWRlci5weQkocmV2aXNpb24gMTA1NDQxKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2ZpbGVfdXBsb2FkZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTg0LDMxICs4NCwzMiBAQCBkZWYgX2VuY29kZV9tdWx0aXBhcnRfZm9ybV9kYXRhKGZp
ZWxkcywgCiAKIAogY2xhc3MgRmlsZVVwbG9hZGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHVybCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgdGltZW91dF9zZWNvbmRz
KToKICAgICAgICAgc2VsZi5fdXJsID0gdXJsCisgICAgICAgIHNlbGYuX3RpbWVvdXRfc2Vjb25k
cyA9IHRpbWVvdXRfc2Vjb25kcwogCi0gICAgZGVmIF91cGxvYWRfZmlsZXMoc2VsZiwgYXR0cnMs
IGZpbGVfb2Jqcyk6Ci0gICAgICAgICMgRklYTUU6IFdlIHNob3VsZCB1c2UgdGhlIHNhbWUgdmFy
aWFibGUgbmFtZXMgZm9yIHRoZSBmb3JtYWwgYW5kIGFjdHVhbCBwYXJhbWV0ZXJzLgotICAgICAg
ICBjb250ZW50X3R5cGUsIGRhdGEgPSBfZW5jb2RlX211bHRpcGFydF9mb3JtX2RhdGEoYXR0cnMs
IGZpbGVfb2JqcykKLSAgICAgICAgaGVhZGVycyA9IHsKLSAgICAgICAgICAgICJDb250ZW50LVR5
cGUiOiBjb250ZW50X3R5cGUsCi0gICAgICAgIH0KLSAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxk
IHRhbGsgdG8gdGhlIG5ldHdvcmsgdmlhIGEgSG9zdCBvYmplY3QuCi0gICAgICAgIHJlcXVlc3Qg
PSB1cmxsaWIyLlJlcXVlc3Qoc2VsZi5fdXJsLCBkYXRhLCBoZWFkZXJzKQotICAgICAgICB1cmxs
aWIyLnVybG9wZW4ocmVxdWVzdCkKKyAgICBkZWYgdXBsb2FkX3NpbmdsZV9maWxlKHNlbGYsIGZp
bGVzeXN0ZW0sIGNvbnRlbnRfdHlwZSwgZmlsZW5hbWUpOgorICAgICAgICBzZWxmLl91cGxhZF9k
YXRhKGNvbnRlbnRfdHlwZSwgZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShmaWxlbmFtZSkpCiAK
LSAgICBkZWYgdXBsb2FkKHNlbGYsIHBhcmFtcywgZmlsZXMsIHRpbWVvdXRfc2Vjb25kcyk6Cisg
ICAgZGVmIHVwbG9hZF9hc19tdWx0aXBhcnRfZm9ybV9kYXRhKHNlbGYsIGZpbGVzeXN0ZW0sIGZp
bGVzLCBwYXJhbXMsIHRpbWVvdXRfc2Vjb25kcyk6CiAgICAgICAgIGZpbGVfb2JqcyA9IFtdCiAg
ICAgICAgIGZvciBmaWxlbmFtZSwgcGF0aCBpbiBmaWxlczoKICAgICAgICAgICAgICMgRklYTUU6
IFdlIHNob3VsZCB0YWxrIHRvIHRoZSBmaWxlc3l0ZW0gdmlhIGEgSG9zdCBvYmplY3QuCi0gICAg
ICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICJyYiIpIGFzIGZpbGU6Ci0gICAgICAgICAg
ICAgICAgZmlsZV9vYmpzLmFwcGVuZCgoJ2ZpbGUnLCBmaWxlbmFtZSwgZmlsZS5yZWFkKCkpKQor
ICAgICAgICAgICAgZmlsZV9vYmpzLmFwcGVuZCgoJ2ZpbGUnLCBmaWxlbmFtZSwgZmlsZXN5c3Rl
bS5yZWFkX3RleHRfZmlsZShmaWxlbmFtZSkpKQorCisgICAgICAgICMgRklYTUU6IFdlIHNob3Vs
ZCB1c2UgdGhlIHNhbWUgdmFyaWFibGUgbmFtZXMgZm9yIHRoZSBmb3JtYWwgYW5kIGFjdHVhbCBw
YXJhbWV0ZXJzLgorICAgICAgICBjb250ZW50X3R5cGUsIGRhdGEgPSBfZW5jb2RlX211bHRpcGFy
dF9mb3JtX2RhdGEoYXR0cnMsIGZpbGVfb2JqcykKKyAgICAgICAgc2VsZi5fbG9hZF9kYXRhKGNv
bnRlbnRfdHlwZSwgZGF0YSkKKworICAgIGRlZiBfdXBsYWRfZGF0YShzZWxmLCBjb250ZW50X3R5
cGUsIGRhdGEpOgorICAgICAgICBkZWYgY2FsbGJhY2soKToKKyAgICAgICAgICAgIHJlcXVlc3Qg
PSB1cmxsaWIyLlJlcXVlc3Qoc2VsZi5fdXJsLCBkYXRhLCB7IkNvbnRlbnQtVHlwZSI6IGNvbnRl
bnRfdHlwZX0pCisgICAgICAgICAgICB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCkKIAogICAgICAg
ICBvcmlnX3RpbWVvdXQgPSBzb2NrZXQuZ2V0ZGVmYXVsdHRpbWVvdXQoKQogICAgICAgICB0cnk6
CiAgICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGRuJ3QgbXV0YXRlIGdsb2JhbCBzdGF0aWMg
c3RhdGUuCi0gICAgICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQodGltZW91dF9zZWNv
bmRzKQotICAgICAgICAgICAgTmV0d29ya1RyYW5zYWN0aW9uKHRpbWVvdXRfc2Vjb25kcz10aW1l
b3V0X3NlY29uZHMpLnJ1bigKLSAgICAgICAgICAgICAgICBsYW1iZGE6IHNlbGYuX3VwbG9hZF9m
aWxlcyhwYXJhbXMsIGZpbGVfb2JqcykpCisgICAgICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRp
bWVvdXQoc2VsZi5fdGltZW91dF9zZWNvbmRzKQorICAgICAgICAgICAgTmV0d29ya1RyYW5zYWN0
aW9uKHRpbWVvdXRfc2Vjb25kcz1zZWxmLl90aW1lb3V0X3NlY29uZHMpLnJ1bihjYWxsYmFjaykK
ICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNvY2tldC5zZXRkZWZhdWx0dGltZW91dChv
cmlnX3RpbWVvdXQpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVz
dWx0c19nZW5lcmF0b3IucHkJKHJldmlzaW9uIDEwNTQ0MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3Iu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTMyMSwxMSArMzIxLDExIEBAIGNsYXNzIEpTT05SZXN1bHRz
R2VuZXJhdG9yQmFzZShvYmplY3QpOgogICAgICAgICAgICAgZm9yIGZpbGUgaW4ganNvbl9maWxl
c10KIAogICAgICAgICB1cmwgPSAiaHR0cDovLyVzL3Rlc3RmaWxlL3VwbG9hZCIgJSBzZWxmLl90
ZXN0X3Jlc3VsdHNfc2VydmVyCi0gICAgICAgIHVwbG9hZGVyID0gRmlsZVVwbG9hZGVyKHVybCkK
KyAgICAgICAgIyBTZXQgdXBsb2FkaW5nIHRpbWVvdXQgaW4gY2FzZSBhcHBlbmdpbmUgc2VydmVy
IGlzIGhhdmluZyBwcm9ibGVtLgorICAgICAgICAjIDEyMCBzZWNvbmRzIGFyZSBtb3JlIHRoYW4g
ZW5vdWdoIHRvIHVwbG9hZCB0ZXN0IHJlc3VsdHMuCisgICAgICAgIHVwbG9hZGVyID0gRmlsZVVw
bG9hZGVyKHVybCwgMTIwKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFNldCB1cGxvYWRp
bmcgdGltZW91dCBpbiBjYXNlIGFwcGVuZ2luZSBzZXJ2ZXIgaXMgaGF2aW5nIHByb2JsZW0uCi0g
ICAgICAgICAgICAjIDEyMCBzZWNvbmRzIGFyZSBtb3JlIHRoYW4gZW5vdWdoIHRvIHVwbG9hZCB0
ZXN0IHJlc3VsdHMuCi0gICAgICAgICAgICB1cGxvYWRlci51cGxvYWQoYXR0cnMsIGZpbGVzLCAx
MjApCisgICAgICAgICAgICB1cGxvYWRlci51cGxvYWRfYXNfbXVsdGlwYXJ0X2Zvcm1fZGF0YShz
ZWxmLl9maWxlc3lzdGVtLCBmaWxlcywgYXR0cnMpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24s
IGVycjoKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIlVwbG9hZCBmYWlsZWQ6ICVzIiAlIGVycikK
ICAgICAgICAgICAgIHJldHVybgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3Jt
YW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkJKHJldmlzaW9u
IDEwNTQ0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3RzcnVubmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIGltcG9ydCB0
aW1lCiAKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBmaW5kX2ZpbGVzCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuZmls
ZV91cGxvYWRlciBpbXBvcnQgRmlsZVVwbG9hZGVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0LmRyaXZlciBpbXBvcnQgRHJpdmVySW5wdXQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnZpZXdzIGltcG9ydCBwcmludGluZwogCkBAIC00Nyw2ICs0OCw3IEBAIF9sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcihfX25hbWVfXykKIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgog
ICAgIF9wZXJmX3Rlc3RzX2Jhc2VfZGlyID0gJ1BlcmZvcm1hbmNlVGVzdHMnCiAgICAgX3Rlc3Rf
ZGlyZWN0b3JpZXNfZm9yX2Nocm9taXVtX3N0eWxlX3Rlc3RzID0gWydpbnNwZWN0b3InXQorICAg
IF9kZWZhdWx0X2JyYW5jaCA9ICdXZWJLaXQgdHJ1bmsnCiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwgYnVpbGRib3Rfb3V0cHV0PXN5cy5zdGRvdXQs
IGFyZ3M9Tm9uZSwgcG9ydD1Ob25lKToKICAgICAgICAgc2VsZi5fYnVpbGRib3Rfb3V0cHV0ID0g
YnVpbGRib3Rfb3V0cHV0CkBAIC03MCwyMSArNzIsMjcgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVy
KG9iamVjdCk6CiAKICAgICAgICAgcGVyZl9vcHRpb25fbGlzdCA9IFsKICAgICAgICAgICAgIG9w
dHBhcnNlLm1ha2Vfb3B0aW9uKCctLWRlYnVnJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0
PSdEZWJ1ZycsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVscD0nU2V0IHRoZSBjb25maWd1cmF0aW9uIHRvIERlYnVnJyksCisgICAgICAg
ICAgICAgICAgaGVscD0nU2V0IHRoZSBjb25maWd1cmF0aW9uIHRvIERlYnVnJyksCiAgICAgICAg
ICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbignLS1yZWxlYXNlJywgYWN0aW9uPSdzdG9yZV9jb25z
dCcsIGNvbnN0PSdSZWxlYXNlJywgZGVzdD0iY29uZmlndXJhdGlvbiIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gUmVsZWFz
ZScpLAorICAgICAgICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0byBSZWxl
YXNlJyksCiAgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1wbGF0Zm9ybSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTcGVjaWZ5IHBvcnQvcGxhdGZv
cm0gYmVpbmcgdGVzdGVkIChpLmUuIGNocm9taXVtLW1hYykiKSwKKyAgICAgICAgICAgICAgICBo
ZWxwPSJTcGVjaWZ5IHBvcnQvcGxhdGZvcm0gYmVpbmcgdGVzdGVkIChpLmUuIGNocm9taXVtLW1h
YykiKSwKKyAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWJ1aWxkZXItbmFtZSIs
CisgICAgICAgICAgICAgICAgaGVscD0oIlRoZSBuYW1lIG9mIHRoZSBidWlsZGVyIHNob3duIG9u
IHRoZSB3YXRlcmZhbGwgcnVubmluZyB0aGlzIHNjcmlwdCBlLmcuIGdvb2dsZS1tYWMtMi4iKSks
CisgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1idWlsZC1udW1iZXIiLAorICAg
ICAgICAgICAgICAgIGhlbHA9KCJUaGUgYnVpbGQgbnVtYmVyIG9mIHRoZSBidWlsZGVyIHJ1bm5p
bmcgdGhpcyBzY3JpcHQuIikpLAogICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0t
YnVpbGQiLCBkZXN0PSJidWlsZCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9VHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iQ2hlY2sgdG8gZW5zdXJlIHRo
ZSBEdW1wUmVuZGVyVHJlZSBidWlsZCBpcyB1cC10by1kYXRlIChkZWZhdWx0KS4iKSwKKyAgICAg
ICAgICAgICAgICBoZWxwPSJDaGVjayB0byBlbnN1cmUgdGhlIER1bXBSZW5kZXJUcmVlIGJ1aWxk
IGlzIHVwLXRvLWRhdGUgKGRlZmF1bHQpLiIpLAogICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9v
cHRpb24oIi0tYnVpbGQtZGlyZWN0b3J5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9IlBhdGggdG8gdGhlIGRpcmVjdG9yeSB1bmRlciB3aGljaCBidWlsZCBmaWxlcyBh
cmUga2VwdCAoc2hvdWxkIG5vdCBpbmNsdWRlIGNvbmZpZ3VyYXRpb24pIiksCisgICAgICAgICAg
ICAgICAgaGVscD0iUGF0aCB0byB0aGUgZGlyZWN0b3J5IHVuZGVyIHdoaWNoIGJ1aWxkIGZpbGVz
IGFyZSBrZXB0IChzaG91bGQgbm90IGluY2x1ZGUgY29uZmlndXJhdGlvbikiKSwKICAgICAgICAg
ICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXRpbWUtb3V0LW1zIiwgZGVmYXVsdD02MDAgKiAx
MDAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iU2V0IHRoZSB0aW1l
b3V0IGZvciBlYWNoIHRlc3QiKSwKKyAgICAgICAgICAgICAgICBoZWxwPSJTZXQgdGhlIHRpbWVv
dXQgZm9yIGVhY2ggdGVzdCIpLAogICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0t
b3V0cHV0LWpzb24tcGF0aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSJGaWxlbmFtZSBvZiB0aGUgSlNPTiBmaWxlIHRoYXQgc3VtbWFyaWVzIHRoZSByZXN1bHRzIiks
CisgICAgICAgICAgICAgICAgaGVscD0iRmlsZW5hbWUgb2YgdGhlIEpTT04gZmlsZSB0aGF0IHN1
bW1hcmllcyB0aGUgcmVzdWx0cyIpLAogICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24o
Ii0tc291cmNlLWpzb24tcGF0aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSJQYXRoIHRvIGEgSlNPTiBmaWxlIHRvIGJlIG1lcmdlZCBpbnRvIHRoZSBKU09OIGZpbGUg
d2hlbiAtLW91dHB1dC1qc29uLXBhdGggaXMgc3BlY2lmaWVkIiksCisgICAgICAgICAgICAgICAg
aGVscD0iUGF0aCB0byBhIEpTT04gZmlsZSB0byBiZSBtZXJnZWQgaW50byB0aGUgSlNPTiBmaWxl
IHdoZW4gLS1vdXRwdXQtanNvbi1wYXRoIGlzIHByZXNlbnQiKSwKKyAgICAgICAgICAgIG9wdHBh
cnNlLm1ha2Vfb3B0aW9uKCItLXRlc3QtcmVzdWx0cy1zZXJ2ZXIiLAorICAgICAgICAgICAgICAg
IGhlbHA9IlVwbG9hZCB0aGUgZ2VuZXJhdGVkIEpTT04gZmlsZSB0byB0aGUgc3BlY2lmaWVkIHNl
cnZlciB3aGVuIC0tb3V0cHV0LWpzb24tcGF0aCBpcyBwcmVzZW50IiksCiAgICAgICAgICAgICBd
CiAKICAgICAgICAgb3B0aW9uX2xpc3QgPSAocGVyZl9vcHRpb25fbGlzdCArIHByaW50X29wdGlv
bnMpCkBAIC0xMDcsNyArMTE1LDcgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAg
ICAgICAgICAgICByZXR1cm4gMAogCiAgICAgICAgIGlmIG5vdCBzZWxmLl9wb3J0LmNoZWNrX2J1
aWxkKG5lZWRzX2h0dHA9RmFsc2UpOgotICAgICAgICAgICAgX2xvZy5lcnJvcigiQnVpbGQgbm90
IHVwIHRvIGRhdGUgZm9yICVzIiAlIHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCkpCisgICAg
ICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCJCdWlsZCBub3QgdXAgdG8gZGF0ZSBmb3IgJXMi
ICUgc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSkKICAgICAgICAgICAgIHJldHVybiAtMQog
CiAgICAgICAgICMgV2Ugd3JhcCBhbnkgcGFydHMgb2YgdGhlIHJ1biB0aGF0IGFyZSBzbG93IG9y
IGxpa2VseSB0byByYWlzZSBleGNlcHRpb25zCkBAIC0xMTksMzYgKzEyNyw1NSBAQCBjbGFzcyBQ
ZXJmVGVzdHNSdW5uZXIob2JqZWN0KToKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNl
bGYuX3ByaW50ZXIuY2xlYW51cCgpCiAKLSAgICAgICAgaWYgbm90IHNlbGYuX2dlbmVyYXRlX2pz
b25faWZfc3BlY2lmaWVkKHNlbGYuX3RpbWVzdGFtcCkgYW5kIG5vdCB1bmV4cGVjdGVkOgotICAg
ICAgICAgICAgcmV0dXJuIC0yCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCisgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMub3V0cHV0X2pzb25fcGF0aDoKKyAgICAgICAgICAgICMgRklY
TUU6IEFkZCAtLWJyYW5jaCBvciBhdXRvLWRldGVjdCB0aGUgYnJhbmNoIHdlJ3JlIGluCisgICAg
ICAgICAgICB0ZXN0X3Jlc3VsdHNfc2VydmVyID0gb3B0aW9ucy50ZXN0X3Jlc3VsdHNfc2VydmVy
CisgICAgICAgICAgICBicmFuY2ggPSBzZWxmLl9kZWZhdWx0X2JyYW5jaCBpZiB0ZXN0X3Jlc3Vs
dHNfc2VydmVyIGVsc2UgTm9uZQorICAgICAgICAgICAgYnVpbGRfbnVtYmVyID0gaW50KG9wdGlv
bnMuYnVpbGRfbnVtYmVyKSBpZiBvcHRpb25zLmJ1aWxkX251bWJlciBlbHNlIE5vbmUKKyAgICAg
ICAgICAgIGlmIG5vdCBzZWxmLl9nZW5lcmF0ZV9qc29uKHNlbGYuX3RpbWVzdGFtcCwgb3B0aW9u
cy5vdXRwdXRfanNvbl9wYXRoLCBvcHRpb25zLnNvdXJjZV9qc29uX3BhdGgsCisgICAgICAgICAg
ICAgICAgYnJhbmNoLCBvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zLmJ1aWxkZXJfbmFtZSwgYnVp
bGRfbnVtYmVyKSBhbmQgbm90IHVuZXhwZWN0ZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0y
CisgICAgICAgICAgICBpZiB0ZXN0X3Jlc3VsdHNfc2VydmVyIGFuZCBub3Qgc2VsZi5fdXBsb2Fk
X2pzb24odGVzdF9yZXN1bHRzX3NlcnZlciwgb3B0aW9ucy5vdXRwdXRfanNvbl9wYXRoKToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gLTMKIAogICAgICAgICByZXR1cm4gdW5leHBlY3RlZAogCi0g
ICAgZGVmIF9nZW5lcmF0ZV9qc29uX2lmX3NwZWNpZmllZChzZWxmLCB0aW1lc3RhbXApOgotICAg
ICAgICBvdXRwdXRfanNvbl9wYXRoID0gc2VsZi5fb3B0aW9ucy5vdXRwdXRfanNvbl9wYXRoCi0g
ICAgICAgIGlmIG5vdCBvdXRwdXRfanNvbl9wYXRoOgotICAgICAgICAgICAgcmV0dXJuIFRydWUK
LQorICAgIGRlZiBfZ2VuZXJhdGVfanNvbihzZWxmLCB0aW1lc3RhbXAsIG91dHB1dF9qc29uX3Bh
dGgsIHNvdXJjZV9qc29uX3BhdGgsIGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXJfbmFtZSwgYnVp
bGRfbnVtYmVyKToKICAgICAgICAgcmV2aXNpb24gPSBzZWxmLl9ob3N0LnNjbSgpLmhlYWRfc3Zu
X3JldmlzaW9uKCkKICAgICAgICAgY29udGVudHMgPSB7J3RpbWVzdGFtcCc6IGludCh0aW1lc3Rh
bXApLCAncmV2aXNpb24nOiByZXZpc2lvbiwgJ3Jlc3VsdHMnOiBzZWxmLl9yZXN1bHRzfQogCisg
ICAgICAgIGZvciBrZXksIHZhbHVlIGluIHsnYnJhbmNoJzogYnJhbmNoLCAncGxhdGZvcm0nOiBw
bGF0Zm9ybSwgJ2J1aWxkZXItbmFtZSc6IGJ1aWxkZXJfbmFtZSwgJ2J1aWxkLW51bWJlcic6IGJ1
aWxkX251bWJlcn0uaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAg
ICAgIGNvbnRlbnRzW2tleV0gPSB2YWx1ZQorCiAgICAgICAgIGZpbGVzeXN0ZW0gPSBzZWxmLl9o
b3N0LmZpbGVzeXN0ZW0KLSAgICAgICAgc291cmNlX2pzb25fcGF0aCA9IHNlbGYuX29wdGlvbnMu
c291cmNlX2pzb25fcGF0aAogICAgICAgICBpZiBzb3VyY2VfanNvbl9wYXRoOgogICAgICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgICAgIHNvdXJjZV9qc29uX2ZpbGUgPSBmaWxlc3lzdGVtLm9w
ZW5fdGV4dF9maWxlX2Zvcl9yZWFkaW5nKHNvdXJjZV9qc29uX3BhdGgpCiAgICAgICAgICAgICAg
ICAgc291cmNlX2pzb24gPSBqc29uLmxvYWQoc291cmNlX2pzb25fZmlsZSkKICAgICAgICAgICAg
IGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCJGYWlsZWQgdG8gcGFyc2UgJXMi
ICUgc291cmNlX2pzb25fcGF0aCkKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRl
KCJGYWlsZWQgdG8gcGFyc2UgJXMiICUgc291cmNlX2pzb25fcGF0aCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNvdXJjZV9qc29u
LCBkaWN0KToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCJUaGUgc291cmNlIEpTT04gd2Fz
IG5vdCBhIGRpY3Rpb25hcnkiKQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUo
IlRoZSBzb3VyY2UgSlNPTiB3YXMgbm90IGEgZGljdGlvbmFyeSIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBjb250ZW50cyA9IGRpY3Qoc291cmNlX2pzb24uaXRl
bXMoKSArIGNvbnRlbnRzLml0ZW1zKCkpCiAKICAgICAgICAgZmlsZXN5c3RlbS53cml0ZV90ZXh0
X2ZpbGUob3V0cHV0X2pzb25fcGF0aCwganNvbi5kdW1wcyhjb250ZW50cykpCiAgICAgICAgIHJl
dHVybiBUcnVlCiAKKyAgICBkZWYgX3VwbG9hZF9qc29uKHNlbGYsIHRlc3RfcmVzdWx0c19zZXJ2
ZXIsIGpzb25fcGF0aCwgZmlsZV91cGxvYWRlcj1GaWxlVXBsb2FkZXIpOgorICAgICAgICB1cGxv
YWRlciA9IGZpbGVfdXBsb2FkZXIoImh0dHA6Ly8lcy9hcGkvdGVzdC9yZXBvcnQiICUgdGVzdF9y
ZXN1bHRzX3NlcnZlciwgMTIwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB1cGxvYWRlci51
cGxvYWRfc2luZ2xlX2ZpbGUoc2VsZi5faG9zdC5maWxlc3lzdGVtLCAnYXBwbGljYXRpb24vanNv
bicsIGpzb25fcGF0aCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXJyb3I6CisgICAgICAg
ICAgICBzZWxmLl9wcmludGVyLndyaXRlKCJGYWlsZWQgdG8gdXBsb2FkIEpTT04gZmlsZSBpbiAx
MjBzOiAlcyIgJSBlcnJvcikKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHNl
bGYuX3ByaW50ZXIud3JpdGUoIkpTT04gZmlsZSB1cGxvYWRlZC4iKQorICAgICAgICByZXR1cm4g
VHJ1ZQorCiAgICAgZGVmIF9wcmludF9zdGF0dXMoc2VsZiwgdGVzdHMsIGV4cGVjdGVkLCB1bmV4
cGVjdGVkKToKICAgICAgICAgaWYgbGVuKHRlc3RzKSA9PSBleHBlY3RlZCArIHVuZXhwZWN0ZWQ6
CiAgICAgICAgICAgICBzdGF0dXMgPSAiUmFuICVkIHRlc3RzIiAlIGxlbih0ZXN0cykKQEAgLTE2
Nyw3ICsxOTQsNyBAQCBjbGFzcyBQZXJmVGVzdHNSdW5uZXIob2JqZWN0KToKIAogICAgICAgICBm
b3IgdGVzdCBpbiB0ZXN0czoKICAgICAgICAgICAgIGlmIGRyaXZlcl9uZWVkX3Jlc3RhcnQ6Ci0g
ICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMga2lsbGluZyBkcml2ZXIiICUgdGVzdCkKKyAg
ICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCIlcyBraWxsaW5nIGRyaXZlciIgJSB0
ZXN0KQogICAgICAgICAgICAgICAgIGRyaXZlci5zdG9wKCkKICAgICAgICAgICAgICAgICBkcml2
ZXIgPSBOb25lCiAgICAgICAgICAgICBpZiBub3QgZHJpdmVyOgpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9w
ZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDEwNTQ0MykKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsOSArMTAyLDkgQEAgbWF4IDExMjAKICAgICAgICAg
ZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgICAgICAiIiJkbyBub3RoaW5nIiIiCiAKLSAgICBkZWYg
Y3JlYXRlX3J1bm5lcihzZWxmLCBidWlsZGJvdF9vdXRwdXQ9Tm9uZSwgYXJncz1bXSk6CisgICAg
ZGVmIGNyZWF0ZV9ydW5uZXIoc2VsZiwgYnVpbGRib3Rfb3V0cHV0PU5vbmUsIGFyZ3M9W10sIHJl
Z3VsYXJfb3V0cHV0PU5vbmUpOgogICAgICAgICBidWlsZGJvdF9vdXRwdXQgPSBidWlsZGJvdF9v
dXRwdXQgb3IgYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKLSAgICAgICAgcmVndWxhcl9vdXRw
dXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQorICAgICAgICByZWd1bGFyX291dHB1dCA9
IHJlZ3VsYXJfb3V0cHV0IG9yIGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCiAKICAgICAgICAg
b3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBQZXJmVGVzdHNSdW5uZXIuX3BhcnNlX2FyZ3MoYXJncykK
ICAgICAgICAgdGVzdF9wb3J0ID0gVGVzdFBvcnQoaG9zdD1Nb2NrSG9zdCgpLCBvcHRpb25zPW9w
dGlvbnMpCkBAIC0yMTIsNiArMjEyLDYzIEBAIG1heCAxMTIwCiAgICAgICAgICAgICAicmV2aXNp
b24iOiAxMjM0LAogICAgICAgICAgICAgImtleSI6ICJ2YWx1ZSJ9KQogCisgICAgZGVmIHRlc3Rf
cnVuX3dpdGhfdXBsb2FkX2pzb24oc2VsZik6CisgICAgICAgIHJ1bm5lciA9IHNlbGYuY3JlYXRl
X3J1bm5lcihhcmdzPVsnLS1vdXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1dC5q
c29uJywKKyAgICAgICAgICAgICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXInLCAnc29tZS5ob3N0Jywg
Jy0tcGxhdGZvcm0nLCAncGxhdGZvcm0xJywgJy0tYnVpbGRlci1uYW1lJywgJ2J1aWxkZXIxJywg
Jy0tYnVpbGQtbnVtYmVyJywgJzEyMyddKQorICAgICAgICB1cGxvYWRfanNvbl9pc19jYWxsZWQg
PSBbRmFsc2VdCisgICAgICAgIHVwbG9hZF9qc29uX3JldHVybnNfdHJ1ZSA9IFRydWUKKworICAg
ICAgICBkZWYgbW9ja191cGxvYWRfanNvbihob3N0bmFtZSwganNvbl9wYXRoKToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9zdG5hbWUsICdzb21lLmhvc3QnKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChqc29uX3BhdGgsICcvbW9jay1jaGVja291dC9vdXRwdXQuanNvbicp
CisgICAgICAgICAgICB1cGxvYWRfanNvbl9pc19jYWxsZWRbMF0gPSBUcnVlCisgICAgICAgICAg
ICByZXR1cm4gdXBsb2FkX2pzb25fcmV0dXJuc190cnVlCisKKyAgICAgICAgcnVubmVyLl91cGxv
YWRfanNvbiA9IG1vY2tfdXBsb2FkX2pzb24KKyAgICAgICAgcnVubmVyLl9ob3N0LmZpbGVzeXN0
ZW0uZmlsZXNbJy9tb2NrLWNoZWNrb3V0L3NvdXJjZS5qc29uJ10gPSAneyJrZXkiOiAidmFsdWUi
fScKKyAgICAgICAgcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbcnVubmVyLl9iYXNlX3Bh
dGggKyAnL2luc3BlY3Rvci9wYXNzLmh0bWwnXSA9IFRydWUKKyAgICAgICAgcnVubmVyLl9ob3N0
LmZpbGVzeXN0ZW0uZmlsZXNbcnVubmVyLl9iYXNlX3BhdGggKyAnL0JpbmRpbmdzL2V2ZW50LXRh
cmdldC13cmFwcGVyLmh0bWwnXSA9IFRydWUKKyAgICAgICAgcnVubmVyLl90aW1lc3RhbXAgPSAx
MjM0NTY3ODkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIucnVuKCksIDApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodXBsb2FkX2pzb25faXNfY2FsbGVkWzBdLCBUcnVlKQorICAg
ICAgICBnZW5lcmF0ZWRfanNvbiA9IGpzb24ubG9hZHMocnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0u
ZmlsZXNbJy9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZ2VuZXJhdGVkX2pzb25bJ3BsYXRmb3JtJ10sICdwbGF0Zm9ybTEnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGdlbmVyYXRlZF9qc29uWydidWlsZGVyLW5hbWUnXSwgJ2J1aWxkZXIx
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW5lcmF0ZWRfanNvblsnYnVpbGQtbnVtYmVy
J10sIDEyMykKKyAgICAgICAgdXBsb2FkX2pzb25fcmV0dXJuc190cnVlID0gRmFsc2UKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIucnVuKCksIC0zKQorCisgICAgZGVmIHRlc3RfdXBs
b2FkX2pzb24oc2VsZik6CisgICAgICAgIHJlZ3VsYXJfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFy
cmF5U3RyZWFtKCkKKyAgICAgICAgcnVubmVyID0gc2VsZi5jcmVhdGVfcnVubmVyKGJ1aWxkYm90
X291dHB1dD1yZWd1bGFyX291dHB1dCkKKyAgICAgICAgcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0u
ZmlsZXNbJy9tb2NrLWNoZWNrb3V0L3NvbWUuanNvbiddID0gJ3NvbWUgY29udGVudCcKKworICAg
ICAgICBjYWxsZWQgPSBbXQorICAgICAgICB1cGxvYWRfc2luZ2xlX2ZpbGVfdGhyb3dzID0gRmFs
c2UKKworICAgICAgICBjbGFzcyBNb2NrRmlsZVVwbG9hZGVyOgorICAgICAgICAgICAgZGVmIF9f
aW5pdF9fKG1vY2ssIHVybCwgdGltZW91dCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh1cmwsICdodHRwOi8vc29tZS5ob3N0L2FwaS90ZXN0L3JlcG9ydCcpCisgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UodGltZW91dCwgaW50KSBhbmQgdGltZW91
dCkKKyAgICAgICAgICAgICAgICBjYWxsZWQuYXBwZW5kKCdGaWxlVXBsb2FkZXInKQorCisgICAg
ICAgICAgICBkZWYgdXBsb2FkX3NpbmdsZV9maWxlKG1vY2ssIGZpbGVzeXN0ZW0sIGNvbnRlbnRf
dHlwZSwgZmlsZW5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXN5
c3RlbSwgcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb250ZW50X3R5cGUsICdhcHBsaWNhdGlvbi9qc29uJykKKyAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGZpbGVuYW1lLCAnc29tZS5qc29uJykKKyAgICAgICAgICAgICAg
ICBjYWxsZWQuYXBwZW5kKCd1cGxvYWRfc2luZ2xlX2ZpbGUnKQorICAgICAgICAgICAgICAgIGlm
IHVwbG9hZF9zaW5nbGVfZmlsZV90aHJvd3M6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlICJT
b21lIGV4Y2VwdGlvbiIKKworICAgICAgICBydW5uZXIuX3VwbG9hZF9qc29uKCdzb21lLmhvc3Qn
LCAnc29tZS5qc29uJywgTW9ja0ZpbGVVcGxvYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjYWxsZWQsIFsnRmlsZVVwbG9hZGVyJywgJ3VwbG9hZF9zaW5nbGVfZmlsZSddKQorCisgICAg
ICAgICMgVGhyb3dpbmcgYW4gZXhjZXB0aW9uIHVwbG9hZF9zaW5nbGVfZmlsZSBzaG91bGRuJ3Qg
YmxvdyB1cCBfdXBsb2FkX2pzb24KKyAgICAgICAgY2FsbGVkID0gW10KKyAgICAgICAgdXBsb2Fk
X3NpbmdsZV9maWxlX3Rocm93cyA9IFRydWUKKyAgICAgICAgcnVubmVyLl91cGxvYWRfanNvbign
c29tZS5ob3N0JywgJ3NvbWUuanNvbicsIE1vY2tGaWxlVXBsb2FkZXIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY2FsbGVkLCBbJ0ZpbGVVcGxvYWRlcicsICd1cGxvYWRfc2luZ2xlX2ZpbGUn
XSkKKwogICAgIGRlZiB0ZXN0X2NvbGxlY3RfdGVzdHMoc2VsZik6CiAgICAgICAgIHJ1bm5lciA9
IHNlbGYuY3JlYXRlX3J1bm5lcigpCiAgICAgICAgIGZpbGVuYW1lID0gcnVubmVyLl9ob3N0LmZp
bGVzeXN0ZW0uam9pbihydW5uZXIuX2Jhc2VfcGF0aCwgJ2luc3BlY3RvcicsICdhX2ZpbGUuaHRt
bCcpCkBAIC0yNDIsMjAgKzI5OSwyNiBAQCBtYXggMTEyMAogICAgICAgICAgICAgICAgICctLXZl
cmJvc2UnLAogICAgICAgICAgICAgICAgICctLWJ1aWxkLWRpcmVjdG9yeT1mb2xkZXI0MicsCiAg
ICAgICAgICAgICAgICAgJy0tcGxhdGZvcm09cGxhdGZvcm00MicsCisgICAgICAgICAgICAgICAg
Jy0tYnVpbGRlci1uYW1lJywgJ3dlYmtpdC1tYWMtMScsCisgICAgICAgICAgICAgICAgJy0tYnVp
bGQtbnVtYmVyPTU2JywKICAgICAgICAgICAgICAgICAnLS10aW1lLW91dC1tcz00MicsCiAgICAg
ICAgICAgICAgICAgJy0tb3V0cHV0LWpzb24tcGF0aD1hL291dHB1dC5qc29uJywKICAgICAgICAg
ICAgICAgICAnLS1zb3VyY2UtanNvbi1wYXRoPWEvc291cmNlLmpzb24nLAorICAgICAgICAgICAg
ICAgICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXI9c29tZWhvc3QnLAogICAgICAgICAgICAgICAgICct
LWRlYnVnJywgJ2FuX2FyZyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuYnVp
bGQsIFRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy52ZXJib3NlLCBUcnVl
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuaGVscF9wcmludGluZywgTm9uZSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmJ1aWxkX2RpcmVjdG9yeSwgJ2ZvbGRl
cjQyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLnBsYXRmb3JtLCAncGxhdGZv
cm00MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5idWlsZGVyX25hbWUsICd3
ZWJraXQtbWFjLTEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMuYnVpbGRfbnVt
YmVyLCAnNTYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMudGltZV9vdXRfbXMs
ICc0MicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9ucy5jb25maWd1cmF0aW9uLCAn
RGVidWcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMucHJpbnRfb3B0aW9ucywg
Tm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLm91dHB1dF9qc29uX3BhdGgs
ICdhL291dHB1dC5qc29uJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLnNvdXJj
ZV9qc29uX3BhdGgsICdhL3NvdXJjZS5qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChv
cHRpb25zLnRlc3RfcmVzdWx0c19zZXJ2ZXIsICdzb21laG9zdCcpCiAKIAogaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123249</attachid>
            <date>2012-01-19 20:55:45 -0800</date>
            <delta_ts>2012-01-20 14:11:54 -0800</delta_ts>
            <desc>Fixed per Dirk&apos;s comment</desc>
            <filename>bug-76680-20120119205544.patch</filename>
            <type>text/plain</type>
            <size>18846</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwNTQ3NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM5IEBACisyMDEyLTAxLTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIHJ1bi1wZXJmLXRlc3RzIHNob3VsZCBzdXBwb3J0IC0tdGVzdC1yZXN1bHRzLXNl
cnZlciBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2NjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIC0tdGVzdC1yZXN1bHRzLXNlcnZlciwgLS1idWlsZGVyLW5hbWUsIGFuZCAtLWJ1aWxk
LW51bWJlciBvcHRpb25zIHRvIHJ1bi1wZXJmLXRlc3RzCisgICAgICAgIHRvIGJlIHVzZWQgYnkg
cGVyZiBib3RzLiBBbHNvIHJlZmFjdG9yIGZpbGVfdXBsb2FkZXIgYXMgbmVlZGVkLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2ZpbGVfdXBsb2FkZXIucHk6CisgICAg
ICAgIChGaWxlVXBsb2FkZXIuX19pbml0X18pOgorICAgICAgICAoRmlsZVVwbG9hZGVyLnVwbG9h
ZF9zaW5nbGVfZmlsZSk6CisgICAgICAgIChGaWxlVXBsb2FkZXIudXBsb2FkX2FzX211bHRpcGFy
dF9mb3JtX2RhdGEpOgorICAgICAgICAoRmlsZVVwbG9hZGVyKToKKyAgICAgICAgKEZpbGVVcGxv
YWRlci5fdXBsb2FkX2RhdGEpOgorICAgICAgICAoRmlsZVVwbG9hZGVyLl91cGxvYWRfZGF0YS5j
YWxsYmFjayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvci5weToKKyAgICAgICAgKEpTT05SZXN1bHRz
R2VuZXJhdG9yQmFzZS51cGxvYWRfanNvbl9maWxlcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHk6CisgICAgICAgIChQZXJm
VGVzdHNSdW5uZXIpOgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl9wYXJzZV9hcmdzKToKKyAg
ICAgICAgKFBlcmZUZXN0c1J1bm5lci5ydW4pOgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl9n
ZW5lcmF0ZV9qc29uKToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fdXBsb2FkX2pzb24pOgor
ICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl9ydW5fdGVzdHNfc2V0KToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5w
eToKKyAgICAgICAgKGNyZWF0ZV9ydW5uZXIpOgorICAgICAgICAodGVzdF9ydW5fd2l0aF91cGxv
YWRfanNvbik6CisgICAgICAgICh0ZXN0X3J1bl93aXRoX3VwbG9hZF9qc29uLm1vY2tfdXBsb2Fk
X2pzb24pOgorICAgICAgICAodGVzdF91cGxvYWRfanNvbik6CisgICAgICAgICh0ZXN0X3VwbG9h
ZF9qc29uLk1vY2tGaWxlVXBsb2FkZXIpOgorICAgICAgICAodGVzdF91cGxvYWRfanNvbi5Nb2Nr
RmlsZVVwbG9hZGVyLl9faW5pdF9fKToKKyAgICAgICAgKHRlc3RfdXBsb2FkX2pzb24uTW9ja0Zp
bGVVcGxvYWRlci51cGxvYWRfc2luZ2xlX2ZpbGUpOgorICAgICAgICAodGVzdF9wYXJzZV9hcmdz
KToKKwogMjAxMi0wMS0xOSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4gV3JvbmcgdmFyaWFibGUgYmVpbmcgdXNl
ZCBhcyB0aGUgY3dkIGZvciBnaXQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9maWxlX3VwbG9hZGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9maWxlX3VwbG9hZGVyLnB5CShyZXZpc2lvbiAxMDU0NDEpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvZmlsZV91cGxvYWRlci5weQkod29ya2luZyBj
b3B5KQpAQCAtODQsMzEgKzg0LDMyIEBAIGRlZiBfZW5jb2RlX211bHRpcGFydF9mb3JtX2RhdGEo
ZmllbGRzLCAKIAogCiBjbGFzcyBGaWxlVXBsb2FkZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgdXJsKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCB0aW1lb3V0X3NlY29u
ZHMpOgogICAgICAgICBzZWxmLl91cmwgPSB1cmwKKyAgICAgICAgc2VsZi5fdGltZW91dF9zZWNv
bmRzID0gdGltZW91dF9zZWNvbmRzCiAKLSAgICBkZWYgX3VwbG9hZF9maWxlcyhzZWxmLCBhdHRy
cywgZmlsZV9vYmpzKToKLSAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHVzZSB0aGUgc2FtZSB2
YXJpYWJsZSBuYW1lcyBmb3IgdGhlIGZvcm1hbCBhbmQgYWN0dWFsIHBhcmFtZXRlcnMuCi0gICAg
ICAgIGNvbnRlbnRfdHlwZSwgZGF0YSA9IF9lbmNvZGVfbXVsdGlwYXJ0X2Zvcm1fZGF0YShhdHRy
cywgZmlsZV9vYmpzKQotICAgICAgICBoZWFkZXJzID0gewotICAgICAgICAgICAgIkNvbnRlbnQt
VHlwZSI6IGNvbnRlbnRfdHlwZSwKLSAgICAgICAgfQotICAgICAgICAjIEZJWE1FOiBXZSBzaG91
bGQgdGFsayB0byB0aGUgbmV0d29yayB2aWEgYSBIb3N0IG9iamVjdC4KLSAgICAgICAgcmVxdWVz
dCA9IHVybGxpYjIuUmVxdWVzdChzZWxmLl91cmwsIGRhdGEsIGhlYWRlcnMpCi0gICAgICAgIHVy
bGxpYjIudXJsb3BlbihyZXF1ZXN0KQorICAgIGRlZiB1cGxvYWRfc2luZ2xlX2ZpbGUoc2VsZiwg
ZmlsZXN5c3RlbSwgY29udGVudF90eXBlLCBmaWxlbmFtZSk6CisgICAgICAgIHNlbGYuX3VwbG9h
ZF9kYXRhKGNvbnRlbnRfdHlwZSwgZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShmaWxlbmFtZSkp
CiAKLSAgICBkZWYgdXBsb2FkKHNlbGYsIHBhcmFtcywgZmlsZXMsIHRpbWVvdXRfc2Vjb25kcyk6
CisgICAgZGVmIHVwbG9hZF9hc19tdWx0aXBhcnRfZm9ybV9kYXRhKHNlbGYsIGZpbGVzeXN0ZW0s
IGZpbGVzLCBwYXJhbXMsIHRpbWVvdXRfc2Vjb25kcyk6CiAgICAgICAgIGZpbGVfb2JqcyA9IFtd
CiAgICAgICAgIGZvciBmaWxlbmFtZSwgcGF0aCBpbiBmaWxlczoKICAgICAgICAgICAgICMgRklY
TUU6IFdlIHNob3VsZCB0YWxrIHRvIHRoZSBmaWxlc3l0ZW0gdmlhIGEgSG9zdCBvYmplY3QuCi0g
ICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICJyYiIpIGFzIGZpbGU6Ci0gICAgICAg
ICAgICAgICAgZmlsZV9vYmpzLmFwcGVuZCgoJ2ZpbGUnLCBmaWxlbmFtZSwgZmlsZS5yZWFkKCkp
KQorICAgICAgICAgICAgZmlsZV9vYmpzLmFwcGVuZCgoJ2ZpbGUnLCBmaWxlbmFtZSwgZmlsZXN5
c3RlbS5yZWFkX3RleHRfZmlsZShmaWxlbmFtZSkpKQorCisgICAgICAgICMgRklYTUU6IFdlIHNo
b3VsZCB1c2UgdGhlIHNhbWUgdmFyaWFibGUgbmFtZXMgZm9yIHRoZSBmb3JtYWwgYW5kIGFjdHVh
bCBwYXJhbWV0ZXJzLgorICAgICAgICBjb250ZW50X3R5cGUsIGRhdGEgPSBfZW5jb2RlX211bHRp
cGFydF9mb3JtX2RhdGEoYXR0cnMsIGZpbGVfb2JqcykKKyAgICAgICAgc2VsZi5fdXBsb2FkX2Rh
dGEoY29udGVudF90eXBlLCBkYXRhKQorCisgICAgZGVmIF91cGxvYWRfZGF0YShzZWxmLCBjb250
ZW50X3R5cGUsIGRhdGEpOgorICAgICAgICBkZWYgY2FsbGJhY2soKToKKyAgICAgICAgICAgIHJl
cXVlc3QgPSB1cmxsaWIyLlJlcXVlc3Qoc2VsZi5fdXJsLCBkYXRhLCB7IkNvbnRlbnQtVHlwZSI6
IGNvbnRlbnRfdHlwZX0pCisgICAgICAgICAgICB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCkKIAog
ICAgICAgICBvcmlnX3RpbWVvdXQgPSBzb2NrZXQuZ2V0ZGVmYXVsdHRpbWVvdXQoKQogICAgICAg
ICB0cnk6CiAgICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGRuJ3QgbXV0YXRlIGdsb2JhbCBz
dGF0aWMgc3RhdGUuCi0gICAgICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQodGltZW91
dF9zZWNvbmRzKQotICAgICAgICAgICAgTmV0d29ya1RyYW5zYWN0aW9uKHRpbWVvdXRfc2Vjb25k
cz10aW1lb3V0X3NlY29uZHMpLnJ1bigKLSAgICAgICAgICAgICAgICBsYW1iZGE6IHNlbGYuX3Vw
bG9hZF9maWxlcyhwYXJhbXMsIGZpbGVfb2JqcykpCisgICAgICAgICAgICBzb2NrZXQuc2V0ZGVm
YXVsdHRpbWVvdXQoc2VsZi5fdGltZW91dF9zZWNvbmRzKQorICAgICAgICAgICAgTmV0d29ya1Ry
YW5zYWN0aW9uKHRpbWVvdXRfc2Vjb25kcz1zZWxmLl90aW1lb3V0X3NlY29uZHMpLnJ1bihjYWxs
YmFjaykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNvY2tldC5zZXRkZWZhdWx0dGlt
ZW91dChvcmlnX3RpbWVvdXQpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pz
b25fcmVzdWx0c19nZW5lcmF0b3IucHkJKHJldmlzaW9uIDEwNTQ0MSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5l
cmF0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyMSwxMSArMzIxLDExIEBAIGNsYXNzIEpTT05S
ZXN1bHRzR2VuZXJhdG9yQmFzZShvYmplY3QpOgogICAgICAgICAgICAgZm9yIGZpbGUgaW4ganNv
bl9maWxlc10KIAogICAgICAgICB1cmwgPSAiaHR0cDovLyVzL3Rlc3RmaWxlL3VwbG9hZCIgJSBz
ZWxmLl90ZXN0X3Jlc3VsdHNfc2VydmVyCi0gICAgICAgIHVwbG9hZGVyID0gRmlsZVVwbG9hZGVy
KHVybCkKKyAgICAgICAgIyBTZXQgdXBsb2FkaW5nIHRpbWVvdXQgaW4gY2FzZSBhcHBlbmdpbmUg
c2VydmVyIGlzIGhhdmluZyBwcm9ibGVtcy4KKyAgICAgICAgIyAxMjAgc2Vjb25kcyBhcmUgbW9y
ZSB0aGFuIGVub3VnaCB0byB1cGxvYWQgdGVzdCByZXN1bHRzLgorICAgICAgICB1cGxvYWRlciA9
IEZpbGVVcGxvYWRlcih1cmwsIDEyMCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBTZXQg
dXBsb2FkaW5nIHRpbWVvdXQgaW4gY2FzZSBhcHBlbmdpbmUgc2VydmVyIGlzIGhhdmluZyBwcm9i
bGVtLgotICAgICAgICAgICAgIyAxMjAgc2Vjb25kcyBhcmUgbW9yZSB0aGFuIGVub3VnaCB0byB1
cGxvYWQgdGVzdCByZXN1bHRzLgotICAgICAgICAgICAgdXBsb2FkZXIudXBsb2FkKGF0dHJzLCBm
aWxlcywgMTIwKQorICAgICAgICAgICAgdXBsb2FkZXIudXBsb2FkX2FzX211bHRpcGFydF9mb3Jt
X2RhdGEoc2VsZi5fZmlsZXN5c3RlbSwgZmlsZXMsIGF0dHJzKQogICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uLCBlcnI6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJVcGxvYWQgZmFpbGVkOiAlcyIg
JSBlcnIpCiAgICAgICAgICAgICByZXR1cm4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CShy
ZXZpc2lvbiAxMDU0NDMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rl
c3RzL3BlcmZ0ZXN0c3J1bm5lci5weQkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBp
bXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgZmluZF9maWxlcwogZnJv
bSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24u
bmV0LmZpbGVfdXBsb2FkZXIgaW1wb3J0IEZpbGVVcGxvYWRlcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZlcklucHV0CiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKIApAQCAtNDcsNiArNDgsNyBAQCBfbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiBjbGFzcyBQZXJmVGVzdHNSdW5uZXIob2Jq
ZWN0KToKICAgICBfcGVyZl90ZXN0c19iYXNlX2RpciA9ICdQZXJmb3JtYW5jZVRlc3RzJwogICAg
IF90ZXN0X2RpcmVjdG9yaWVzX2Zvcl9jaHJvbWl1bV9zdHlsZV90ZXN0cyA9IFsnaW5zcGVjdG9y
J10KKyAgICBfZGVmYXVsdF9icmFuY2ggPSAnV2ViS2l0IHRydW5rJwogCiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHJlZ3VsYXJfb3V0cHV0PXN5cy5zdGRlcnIsIGJ1aWxkYm90X291dHB1dD1zeXMu
c3Rkb3V0LCBhcmdzPU5vbmUsIHBvcnQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuX2J1aWxkYm90X291
dHB1dCA9IGJ1aWxkYm90X291dHB1dApAQCAtNzAsMjEgKzcyLDI3IEBAIGNsYXNzIFBlcmZUZXN0
c1J1bm5lcihvYmplY3QpOgogCiAgICAgICAgIHBlcmZfb3B0aW9uX2xpc3QgPSBbCiAgICAgICAg
ICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbignLS1kZWJ1ZycsIGFjdGlvbj0nc3RvcmVfY29uc3Qn
LCBjb25zdD0nRGVidWcnLCBkZXN0PSJjb25maWd1cmF0aW9uIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0byBEZWJ1ZycpLAor
ICAgICAgICAgICAgICAgIGhlbHA9J1NldCB0aGUgY29uZmlndXJhdGlvbiB0byBEZWJ1ZycpLAog
ICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tcmVsZWFzZScsIGFjdGlvbj0nc3Rv
cmVfY29uc3QnLCBjb25zdD0nUmVsZWFzZScsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU2V0IHRoZSBjb25maWd1cmF0aW9uIHRv
IFJlbGVhc2UnKSwKKyAgICAgICAgICAgICAgICBoZWxwPSdTZXQgdGhlIGNvbmZpZ3VyYXRpb24g
dG8gUmVsZWFzZScpLAogICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tcGxhdGZv
cm0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iU3BlY2lmeSBwb3J0
L3BsYXRmb3JtIGJlaW5nIHRlc3RlZCAoaS5lLiBjaHJvbWl1bS1tYWMpIiksCisgICAgICAgICAg
ICAgICAgaGVscD0iU3BlY2lmeSBwb3J0L3BsYXRmb3JtIGJlaW5nIHRlc3RlZCAoaS5lLiBjaHJv
bWl1bS1tYWMpIiksCisgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1idWlsZGVy
LW5hbWUiLAorICAgICAgICAgICAgICAgIGhlbHA9KCJUaGUgbmFtZSBvZiB0aGUgYnVpbGRlciBz
aG93biBvbiB0aGUgd2F0ZXJmYWxsIHJ1bm5pbmcgdGhpcyBzY3JpcHQgZS5nLiBnb29nbGUtbWFj
LTIuIikpLAorICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tYnVpbGQtbnVtYmVy
IiwKKyAgICAgICAgICAgICAgICBoZWxwPSgiVGhlIGJ1aWxkIG51bWJlciBvZiB0aGUgYnVpbGRl
ciBydW5uaW5nIHRoaXMgc2NyaXB0LiIpKSwKICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0
aW9uKCItLWJ1aWxkIiwgZGVzdD0iYnVpbGQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0
PVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkNoZWNrIHRvIGVu
c3VyZSB0aGUgRHVtcFJlbmRlclRyZWUgYnVpbGQgaXMgdXAtdG8tZGF0ZSAoZGVmYXVsdCkuIiks
CisgICAgICAgICAgICAgICAgaGVscD0iQ2hlY2sgdG8gZW5zdXJlIHRoZSBEdW1wUmVuZGVyVHJl
ZSBidWlsZCBpcyB1cC10by1kYXRlIChkZWZhdWx0KS4iKSwKICAgICAgICAgICAgIG9wdHBhcnNl
Lm1ha2Vfb3B0aW9uKCItLWJ1aWxkLWRpcmVjdG9yeSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSJQYXRoIHRvIHRoZSBkaXJlY3RvcnkgdW5kZXIgd2hpY2ggYnVpbGQg
ZmlsZXMgYXJlIGtlcHQgKHNob3VsZCBub3QgaW5jbHVkZSBjb25maWd1cmF0aW9uKSIpLAorICAg
ICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gdGhlIGRpcmVjdG9yeSB1bmRlciB3aGljaCBidWls
ZCBmaWxlcyBhcmUga2VwdCAoc2hvdWxkIG5vdCBpbmNsdWRlIGNvbmZpZ3VyYXRpb24pIiksCiAg
ICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS10aW1lLW91dC1tcyIsIGRlZmF1bHQ9
NjAwICogMTAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlNldCB0
aGUgdGltZW91dCBmb3IgZWFjaCB0ZXN0IiksCisgICAgICAgICAgICAgICAgaGVscD0iU2V0IHRo
ZSB0aW1lb3V0IGZvciBlYWNoIHRlc3QiKSwKICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0
aW9uKCItLW91dHB1dC1qc29uLXBhdGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iRmlsZW5hbWUgb2YgdGhlIEpTT04gZmlsZSB0aGF0IHN1bW1hcmllcyB0aGUgcmVz
dWx0cyIpLAorICAgICAgICAgICAgICAgIGhlbHA9IkZpbGVuYW1lIG9mIHRoZSBKU09OIGZpbGUg
dGhhdCBzdW1tYXJpZXMgdGhlIHJlc3VsdHMiKSwKICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vf
b3B0aW9uKCItLXNvdXJjZS1qc29uLXBhdGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0iUGF0aCB0byBhIEpTT04gZmlsZSB0byBiZSBtZXJnZWQgaW50byB0aGUgSlNP
TiBmaWxlIHdoZW4gLS1vdXRwdXQtanNvbi1wYXRoIGlzIHNwZWNpZmllZCIpLAorICAgICAgICAg
ICAgICAgIGhlbHA9IlBhdGggdG8gYSBKU09OIGZpbGUgdG8gYmUgbWVyZ2VkIGludG8gdGhlIEpT
T04gZmlsZSB3aGVuIC0tb3V0cHV0LWpzb24tcGF0aCBpcyBwcmVzZW50IiksCisgICAgICAgICAg
ICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS10ZXN0LXJlc3VsdHMtc2VydmVyIiwKKyAgICAgICAg
ICAgICAgICBoZWxwPSJVcGxvYWQgdGhlIGdlbmVyYXRlZCBKU09OIGZpbGUgdG8gdGhlIHNwZWNp
ZmllZCBzZXJ2ZXIgd2hlbiAtLW91dHB1dC1qc29uLXBhdGggaXMgcHJlc2VudCIpLAogICAgICAg
ICAgICAgXQogCiAgICAgICAgIG9wdGlvbl9saXN0ID0gKHBlcmZfb3B0aW9uX2xpc3QgKyBwcmlu
dF9vcHRpb25zKQpAQCAtMTA3LDcgKzExNSw3IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmpl
Y3QpOgogICAgICAgICAgICAgcmV0dXJuIDAKIAogICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5j
aGVja19idWlsZChuZWVkc19odHRwPUZhbHNlKToKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkJ1
aWxkIG5vdCB1cCB0byBkYXRlIGZvciAlcyIgJSBzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigp
KQorICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgiQnVpbGQgbm90IHVwIHRvIGRhdGUg
Zm9yICVzIiAlIHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCkpCiAgICAgICAgICAgICByZXR1
cm4gLTEKIAogICAgICAgICAjIFdlIHdyYXAgYW55IHBhcnRzIG9mIHRoZSBydW4gdGhhdCBhcmUg
c2xvdyBvciBsaWtlbHkgdG8gcmFpc2UgZXhjZXB0aW9ucwpAQCAtMTE5LDM2ICsxMjcsNTggQEAg
Y2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAg
ICAgICBzZWxmLl9wcmludGVyLmNsZWFudXAoKQogCi0gICAgICAgIGlmIG5vdCBzZWxmLl9nZW5l
cmF0ZV9qc29uX2lmX3NwZWNpZmllZChzZWxmLl90aW1lc3RhbXApIGFuZCBub3QgdW5leHBlY3Rl
ZDoKLSAgICAgICAgICAgIHJldHVybiAtMgorICAgICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9u
cworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm91dHB1dF9qc29uX3BhdGg6CisgICAgICAgICAg
ICAjIEZJWE1FOiBBZGQgLS1icmFuY2ggb3IgYXV0by1kZXRlY3QgdGhlIGJyYW5jaCB3ZSdyZSBp
bgorICAgICAgICAgICAgdGVzdF9yZXN1bHRzX3NlcnZlciA9IG9wdGlvbnMudGVzdF9yZXN1bHRz
X3NlcnZlcgorICAgICAgICAgICAgYnJhbmNoID0gc2VsZi5fZGVmYXVsdF9icmFuY2ggaWYgdGVz
dF9yZXN1bHRzX3NlcnZlciBlbHNlIE5vbmUKKyAgICAgICAgICAgIGJ1aWxkX251bWJlciA9IGlu
dChvcHRpb25zLmJ1aWxkX251bWJlcikgaWYgb3B0aW9ucy5idWlsZF9udW1iZXIgZWxzZSBOb25l
CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZ2VuZXJhdGVfanNvbihzZWxmLl90aW1lc3RhbXAs
IG9wdGlvbnMub3V0cHV0X2pzb25fcGF0aCwgb3B0aW9ucy5zb3VyY2VfanNvbl9wYXRoLAorICAg
ICAgICAgICAgICAgIGJyYW5jaCwgb3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucy5idWlsZGVyX25h
bWUsIGJ1aWxkX251bWJlcikgYW5kIG5vdCB1bmV4cGVjdGVkOgorICAgICAgICAgICAgICAgIHJl
dHVybiAtMgorICAgICAgICAgICAgaWYgdGVzdF9yZXN1bHRzX3NlcnZlciBhbmQgbm90IHNlbGYu
X3VwbG9hZF9qc29uKHRlc3RfcmVzdWx0c19zZXJ2ZXIsIG9wdGlvbnMub3V0cHV0X2pzb25fcGF0
aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0zCiAKICAgICAgICAgcmV0dXJuIHVuZXhwZWN0
ZWQKIAotICAgIGRlZiBfZ2VuZXJhdGVfanNvbl9pZl9zcGVjaWZpZWQoc2VsZiwgdGltZXN0YW1w
KToKLSAgICAgICAgb3V0cHV0X2pzb25fcGF0aCA9IHNlbGYuX29wdGlvbnMub3V0cHV0X2pzb25f
cGF0aAotICAgICAgICBpZiBub3Qgb3V0cHV0X2pzb25fcGF0aDoKLSAgICAgICAgICAgIHJldHVy
biBUcnVlCi0KKyAgICBkZWYgX2dlbmVyYXRlX2pzb24oc2VsZiwgdGltZXN0YW1wLCBvdXRwdXRf
anNvbl9wYXRoLCBzb3VyY2VfanNvbl9wYXRoLCBicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyX25h
bWUsIGJ1aWxkX251bWJlcik6CiAgICAgICAgIHJldmlzaW9uID0gc2VsZi5faG9zdC5zY20oKS5o
ZWFkX3N2bl9yZXZpc2lvbigpCiAgICAgICAgIGNvbnRlbnRzID0geyd0aW1lc3RhbXAnOiBpbnQo
dGltZXN0YW1wKSwgJ3JldmlzaW9uJzogcmV2aXNpb24sICdyZXN1bHRzJzogc2VsZi5fcmVzdWx0
c30KIAorICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiB7J2JyYW5jaCc6IGJyYW5jaCwgJ3BsYXRm
b3JtJzogcGxhdGZvcm0sICdidWlsZGVyLW5hbWUnOiBidWlsZGVyX25hbWUsICdidWlsZC1udW1i
ZXInOiBidWlsZF9udW1iZXJ9Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiB2YWx1ZToKKyAgICAg
ICAgICAgICAgICBjb250ZW50c1trZXldID0gdmFsdWUKKwogICAgICAgICBmaWxlc3lzdGVtID0g
c2VsZi5faG9zdC5maWxlc3lzdGVtCi0gICAgICAgIHNvdXJjZV9qc29uX3BhdGggPSBzZWxmLl9v
cHRpb25zLnNvdXJjZV9qc29uX3BhdGgKICAgICAgICAgaWYgc291cmNlX2pzb25fcGF0aDoKICAg
ICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzb3VyY2VfanNvbl9maWxlID0gZmlsZXN5
c3RlbS5vcGVuX3RleHRfZmlsZV9mb3JfcmVhZGluZyhzb3VyY2VfanNvbl9wYXRoKQogICAgICAg
ICAgICAgICAgIHNvdXJjZV9qc29uID0ganNvbi5sb2FkKHNvdXJjZV9qc29uX2ZpbGUpCi0gICAg
ICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcigiRmFpbGVkIHRvIHBh
cnNlICVzIiAlIHNvdXJjZV9qc29uX3BhdGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzb3VyY2VfanNvbiwgZGljdCk6Ci0gICAg
ICAgICAgICAgICAgX2xvZy5lcnJvcigiVGhlIHNvdXJjZSBKU09OIHdhcyBub3QgYSBkaWN0aW9u
YXJ5IikKKyAgICAgICAgICAgICAgICBjb250ZW50cyA9IGRpY3Qoc291cmNlX2pzb24uaXRlbXMo
KSArIGNvbnRlbnRzLml0ZW1zKCkpCisgICAgICAgICAgICAgICAgc3VjY2VlZGVkID0gVHJ1ZQor
ICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IsIGVycm9yOgorICAgICAgICAgICAgICAgIHNlbGYu
X3ByaW50ZXIud3JpdGUoIkZhaWxlZCB0byByZWFkICVzOiAlcyIgJSAoc291cmNlX2pzb25fcGF0
aCwgZXJyb3IpKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGVycm9yOgorICAgICAg
ICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIkZhaWxlZCB0byBwYXJzZSAlczogJXMiICUg
KHNvdXJjZV9qc29uX3BhdGgsIGVycm9yKSkKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3Is
IGVycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIkZhaWxlZCB0byBt
ZXJnZSBKU09OIGZpbGVzOiAlcyIgJSBlcnJvcikKKyAgICAgICAgICAgIGlmIG5vdCBzdWNjZWVk
ZWQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBjb250ZW50cyA9
IGRpY3Qoc291cmNlX2pzb24uaXRlbXMoKSArIGNvbnRlbnRzLml0ZW1zKCkpCiAKICAgICAgICAg
ZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUob3V0cHV0X2pzb25fcGF0aCwganNvbi5kdW1wcyhj
b250ZW50cykpCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyAgICBkZWYgX3VwbG9hZF9qc29uKHNl
bGYsIHRlc3RfcmVzdWx0c19zZXJ2ZXIsIGpzb25fcGF0aCwgZmlsZV91cGxvYWRlcj1GaWxlVXBs
b2FkZXIpOgorICAgICAgICB1cGxvYWRlciA9IGZpbGVfdXBsb2FkZXIoImh0dHA6Ly8lcy9hcGkv
dGVzdC9yZXBvcnQiICUgdGVzdF9yZXN1bHRzX3NlcnZlciwgMTIwKQorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICB1cGxvYWRlci51cGxvYWRfc2luZ2xlX2ZpbGUoc2VsZi5faG9zdC5maWxlc3lz
dGVtLCAnYXBwbGljYXRpb24vanNvbicsIGpzb25fcGF0aCkKKyAgICAgICAgZXhjZXB0IEV4Y2Vw
dGlvbiwgZXJyb3I6CisgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCJGYWlsZWQgdG8g
dXBsb2FkIEpTT04gZmlsZSBpbiAxMjBzOiAlcyIgJSBlcnJvcikKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIkpTT04gZmlsZSB1cGxvYWRl
ZC4iKQorICAgICAgICByZXR1cm4gVHJ1ZQorCiAgICAgZGVmIF9wcmludF9zdGF0dXMoc2VsZiwg
dGVzdHMsIGV4cGVjdGVkLCB1bmV4cGVjdGVkKToKICAgICAgICAgaWYgbGVuKHRlc3RzKSA9PSBl
eHBlY3RlZCArIHVuZXhwZWN0ZWQ6CiAgICAgICAgICAgICBzdGF0dXMgPSAiUmFuICVkIHRlc3Rz
IiAlIGxlbih0ZXN0cykKQEAgLTE2Nyw3ICsxOTcsNyBAQCBjbGFzcyBQZXJmVGVzdHNSdW5uZXIo
b2JqZWN0KToKIAogICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKICAgICAgICAgICAgIGlmIGRy
aXZlcl9uZWVkX3Jlc3RhcnQ6Ci0gICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMga2lsbGlu
ZyBkcml2ZXIiICUgdGVzdCkKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCIl
cyBraWxsaW5nIGRyaXZlciIgJSB0ZXN0KQogICAgICAgICAgICAgICAgIGRyaXZlci5zdG9wKCkK
ICAgICAgICAgICAgICAgICBkcml2ZXIgPSBOb25lCiAgICAgICAgICAgICBpZiBub3QgZHJpdmVy
OgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVz
dHNydW5uZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDEwNTQ0MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsOSArMTAyLDkg
QEAgbWF4IDExMjAKICAgICAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgICAgICAiIiJkbyBu
b3RoaW5nIiIiCiAKLSAgICBkZWYgY3JlYXRlX3J1bm5lcihzZWxmLCBidWlsZGJvdF9vdXRwdXQ9
Tm9uZSwgYXJncz1bXSk6CisgICAgZGVmIGNyZWF0ZV9ydW5uZXIoc2VsZiwgYnVpbGRib3Rfb3V0
cHV0PU5vbmUsIGFyZ3M9W10sIHJlZ3VsYXJfb3V0cHV0PU5vbmUpOgogICAgICAgICBidWlsZGJv
dF9vdXRwdXQgPSBidWlsZGJvdF9vdXRwdXQgb3IgYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkK
LSAgICAgICAgcmVndWxhcl9vdXRwdXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQorICAg
ICAgICByZWd1bGFyX291dHB1dCA9IHJlZ3VsYXJfb3V0cHV0IG9yIGFycmF5X3N0cmVhbS5BcnJh
eVN0cmVhbSgpCiAKICAgICAgICAgb3B0aW9ucywgcGFyc2VkX2FyZ3MgPSBQZXJmVGVzdHNSdW5u
ZXIuX3BhcnNlX2FyZ3MoYXJncykKICAgICAgICAgdGVzdF9wb3J0ID0gVGVzdFBvcnQoaG9zdD1N
b2NrSG9zdCgpLCBvcHRpb25zPW9wdGlvbnMpCkBAIC0yMTIsNiArMjEyLDYzIEBAIG1heCAxMTIw
CiAgICAgICAgICAgICAicmV2aXNpb24iOiAxMjM0LAogICAgICAgICAgICAgImtleSI6ICJ2YWx1
ZSJ9KQogCisgICAgZGVmIHRlc3RfcnVuX3dpdGhfdXBsb2FkX2pzb24oc2VsZik6CisgICAgICAg
IHJ1bm5lciA9IHNlbGYuY3JlYXRlX3J1bm5lcihhcmdzPVsnLS1vdXRwdXQtanNvbi1wYXRoPS9t
b2NrLWNoZWNrb3V0L291dHB1dC5qc29uJywKKyAgICAgICAgICAgICctLXRlc3QtcmVzdWx0cy1z
ZXJ2ZXInLCAnc29tZS5ob3N0JywgJy0tcGxhdGZvcm0nLCAncGxhdGZvcm0xJywgJy0tYnVpbGRl
ci1uYW1lJywgJ2J1aWxkZXIxJywgJy0tYnVpbGQtbnVtYmVyJywgJzEyMyddKQorICAgICAgICB1
cGxvYWRfanNvbl9pc19jYWxsZWQgPSBbRmFsc2VdCisgICAgICAgIHVwbG9hZF9qc29uX3JldHVy
bnNfdHJ1ZSA9IFRydWUKKworICAgICAgICBkZWYgbW9ja191cGxvYWRfanNvbihob3N0bmFtZSwg
anNvbl9wYXRoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9zdG5hbWUsICdzb21l
Lmhvc3QnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqc29uX3BhdGgsICcvbW9jay1j
aGVja291dC9vdXRwdXQuanNvbicpCisgICAgICAgICAgICB1cGxvYWRfanNvbl9pc19jYWxsZWRb
MF0gPSBUcnVlCisgICAgICAgICAgICByZXR1cm4gdXBsb2FkX2pzb25fcmV0dXJuc190cnVlCisK
KyAgICAgICAgcnVubmVyLl91cGxvYWRfanNvbiA9IG1vY2tfdXBsb2FkX2pzb24KKyAgICAgICAg
cnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWNoZWNrb3V0L3NvdXJjZS5qc29u
J10gPSAneyJrZXkiOiAidmFsdWUifScKKyAgICAgICAgcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0u
ZmlsZXNbcnVubmVyLl9iYXNlX3BhdGggKyAnL2luc3BlY3Rvci9wYXNzLmh0bWwnXSA9IFRydWUK
KyAgICAgICAgcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbcnVubmVyLl9iYXNlX3BhdGgg
KyAnL0JpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVyLmh0bWwnXSA9IFRydWUKKyAgICAgICAg
cnVubmVyLl90aW1lc3RhbXAgPSAxMjM0NTY3ODkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
dW5uZXIucnVuKCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXBsb2FkX2pzb25faXNf
Y2FsbGVkWzBdLCBUcnVlKQorICAgICAgICBnZW5lcmF0ZWRfanNvbiA9IGpzb24ubG9hZHMocnVu
bmVyLl9ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJ10p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuZXJhdGVkX2pzb25bJ3BsYXRmb3JtJ10sICdw
bGF0Zm9ybTEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbmVyYXRlZF9qc29uWydidWls
ZGVyLW5hbWUnXSwgJ2J1aWxkZXIxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW5lcmF0
ZWRfanNvblsnYnVpbGQtbnVtYmVyJ10sIDEyMykKKyAgICAgICAgdXBsb2FkX2pzb25fcmV0dXJu
c190cnVlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIucnVuKCksIC0z
KQorCisgICAgZGVmIHRlc3RfdXBsb2FkX2pzb24oc2VsZik6CisgICAgICAgIHJlZ3VsYXJfb3V0
cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKKyAgICAgICAgcnVubmVyID0gc2VsZi5j
cmVhdGVfcnVubmVyKGJ1aWxkYm90X291dHB1dD1yZWd1bGFyX291dHB1dCkKKyAgICAgICAgcnVu
bmVyLl9ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWNoZWNrb3V0L3NvbWUuanNvbiddID0g
J3NvbWUgY29udGVudCcKKworICAgICAgICBjYWxsZWQgPSBbXQorICAgICAgICB1cGxvYWRfc2lu
Z2xlX2ZpbGVfdGhyb3dzID0gRmFsc2UKKworICAgICAgICBjbGFzcyBNb2NrRmlsZVVwbG9hZGVy
OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKG1vY2ssIHVybCwgdGltZW91dCk6CisgICAgICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1cmwsICdodHRwOi8vc29tZS5ob3N0L2FwaS90ZXN0
L3JlcG9ydCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UodGlt
ZW91dCwgaW50KSBhbmQgdGltZW91dCkKKyAgICAgICAgICAgICAgICBjYWxsZWQuYXBwZW5kKCdG
aWxlVXBsb2FkZXInKQorCisgICAgICAgICAgICBkZWYgdXBsb2FkX3NpbmdsZV9maWxlKG1vY2ss
IGZpbGVzeXN0ZW0sIGNvbnRlbnRfdHlwZSwgZmlsZW5hbWUpOgorICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZmlsZXN5c3RlbSwgcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0pCisgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZW50X3R5cGUsICdhcHBsaWNhdGlvbi9q
c29uJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVuYW1lLCAnc29tZS5q
c29uJykKKyAgICAgICAgICAgICAgICBjYWxsZWQuYXBwZW5kKCd1cGxvYWRfc2luZ2xlX2ZpbGUn
KQorICAgICAgICAgICAgICAgIGlmIHVwbG9hZF9zaW5nbGVfZmlsZV90aHJvd3M6CisgICAgICAg
ICAgICAgICAgICAgIHJhaXNlICJTb21lIGV4Y2VwdGlvbiIKKworICAgICAgICBydW5uZXIuX3Vw
bG9hZF9qc29uKCdzb21lLmhvc3QnLCAnc29tZS5qc29uJywgTW9ja0ZpbGVVcGxvYWRlcikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsZWQsIFsnRmlsZVVwbG9hZGVyJywgJ3VwbG9hZF9z
aW5nbGVfZmlsZSddKQorCisgICAgICAgICMgVGhyb3dpbmcgYW4gZXhjZXB0aW9uIHVwbG9hZF9z
aW5nbGVfZmlsZSBzaG91bGRuJ3QgYmxvdyB1cCBfdXBsb2FkX2pzb24KKyAgICAgICAgY2FsbGVk
ID0gW10KKyAgICAgICAgdXBsb2FkX3NpbmdsZV9maWxlX3Rocm93cyA9IFRydWUKKyAgICAgICAg
cnVubmVyLl91cGxvYWRfanNvbignc29tZS5ob3N0JywgJ3NvbWUuanNvbicsIE1vY2tGaWxlVXBs
b2FkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbGVkLCBbJ0ZpbGVVcGxvYWRlcics
ICd1cGxvYWRfc2luZ2xlX2ZpbGUnXSkKKwogICAgIGRlZiB0ZXN0X2NvbGxlY3RfdGVzdHMoc2Vs
Zik6CiAgICAgICAgIHJ1bm5lciA9IHNlbGYuY3JlYXRlX3J1bm5lcigpCiAgICAgICAgIGZpbGVu
YW1lID0gcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0uam9pbihydW5uZXIuX2Jhc2VfcGF0aCwgJ2lu
c3BlY3RvcicsICdhX2ZpbGUuaHRtbCcpCkBAIC0yNDIsMjAgKzI5OSwyNiBAQCBtYXggMTEyMAog
ICAgICAgICAgICAgICAgICctLXZlcmJvc2UnLAogICAgICAgICAgICAgICAgICctLWJ1aWxkLWRp
cmVjdG9yeT1mb2xkZXI0MicsCiAgICAgICAgICAgICAgICAgJy0tcGxhdGZvcm09cGxhdGZvcm00
MicsCisgICAgICAgICAgICAgICAgJy0tYnVpbGRlci1uYW1lJywgJ3dlYmtpdC1tYWMtMScsCisg
ICAgICAgICAgICAgICAgJy0tYnVpbGQtbnVtYmVyPTU2JywKICAgICAgICAgICAgICAgICAnLS10
aW1lLW91dC1tcz00MicsCiAgICAgICAgICAgICAgICAgJy0tb3V0cHV0LWpzb24tcGF0aD1hL291
dHB1dC5qc29uJywKICAgICAgICAgICAgICAgICAnLS1zb3VyY2UtanNvbi1wYXRoPWEvc291cmNl
Lmpzb24nLAorICAgICAgICAgICAgICAgICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXI9c29tZWhvc3Qn
LAogICAgICAgICAgICAgICAgICctLWRlYnVnJywgJ2FuX2FyZyddKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG9wdGlvbnMuYnVpbGQsIFRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
b3B0aW9ucy52ZXJib3NlLCBUcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbnMu
aGVscF9wcmludGluZywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLmJ1
aWxkX2RpcmVjdG9yeSwgJ2ZvbGRlcjQyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRp
b25zLnBsYXRmb3JtLCAncGxhdGZvcm00MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0
aW9ucy5idWlsZGVyX25hbWUsICd3ZWJraXQtbWFjLTEnKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG9wdGlvbnMuYnVpbGRfbnVtYmVyLCAnNTYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KG9wdGlvbnMudGltZV9vdXRfbXMsICc0MicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0
aW9ucy5jb25maWd1cmF0aW9uLCAnRGVidWcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9w
dGlvbnMucHJpbnRfb3B0aW9ucywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRp
b25zLm91dHB1dF9qc29uX3BhdGgsICdhL291dHB1dC5qc29uJykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChvcHRpb25zLnNvdXJjZV9qc29uX3BhdGgsICdhL3NvdXJjZS5qc29uJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb25zLnRlc3RfcmVzdWx0c19zZXJ2ZXIsICdzb21laG9z
dCcpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
</data>
<flag name="review"
          id="124270"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="124402"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>