<?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>93690</bug_id>
          
          <creation_ts>2012-08-09 23:31:38 -0700</creation_ts>
          <short_desc>run-perf-tests should upload memory statistics to perf-o-matic</short_desc>
          <delta_ts>2012-08-10 15:20:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>90858</dependson>
          <blocked>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>arv</cc>
    
    <cc>dpranke</cc>
    
    <cc>haraken</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>692247</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-09 23:31:38 -0700</bug_when>
    <thetext>run-perf-tests should upload memory statistics to perf-o-matic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692257</commentid>
    <comment_count>1</comment_count>
      <attachid>157645</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-09 23:43:29 -0700</bug_when>
    <thetext>Created attachment 157645
Adds the feature</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692438</commentid>
    <comment_count>2</comment_count>
      <attachid>157645</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-08-10 04:20:11 -0700</bug_when>
    <thetext>Comment on attachment 157645
Adds the feature

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

The patch looks okay to me, 2 comments:

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:171
&gt; +        _log.info(&apos;RESULT %s= %s %s&apos; % (test_name.replace(&apos;:&apos;, &apos;: &apos;).replace(&apos;/&apos;, &apos;: &apos;), results[&apos;avg&apos;], unit))

I would use re.sub(&quot;[:/]&quot;, &quot;: &quot;, test_name) or re.compile [:/] + re.sub
instead of test_name.replace(&apos;:&apos;, &apos;: &apos;).replace(&apos;/&apos;, &apos;: &apos;)

&gt; Tools/ChangeLog:12
&gt; +        some helps in PerfTest.parse_output per arv&apos;s comments.

arv&apos;s?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692659</commentid>
    <comment_count>3</comment_count>
      <attachid>157645</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-10 10:32:54 -0700</bug_when>
    <thetext>Comment on attachment 157645
Adds the feature

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

&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:171
&gt;&gt; +        _log.info(&apos;RESULT %s= %s %s&apos; % (test_name.replace(&apos;:&apos;, &apos;: &apos;).replace(&apos;/&apos;, &apos;: &apos;), results[&apos;avg&apos;], unit))
&gt; 
&gt; I would use re.sub(&quot;[:/]&quot;, &quot;: &quot;, test_name) or re.compile [:/] + re.sub
&gt; instead of test_name.replace(&apos;:&apos;, &apos;: &apos;).replace(&apos;/&apos;, &apos;: &apos;)

I think the regular expression is actually slower.

&gt;&gt; Tools/ChangeLog:12
&gt;&gt; +        some helps in PerfTest.parse_output per arv&apos;s comments.
&gt; 
&gt; arv&apos;s?

arv@chromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692880</commentid>
    <comment_count>4</comment_count>
      <attachid>157645</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-08-10 14:28:17 -0700</bug_when>
    <thetext>Comment on attachment 157645
Adds the feature

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

looks reasonable. As a general warning, I start to get leery these days when we have to write code that does a lot of free-text parsing like this. Is the text primarily meant to be human-readable, or is it just going from bots to dashboards? If the latter, would it make sense to switch to JSON or something more easily parsed and structured?

Or, if it is used both ways, does it make sense to start with json and then pretty-print it only when necessary?

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:102
&gt; +                help=&quot;Path to generate a JSON file at; may contain previous results if it already exists.&quot;),

This means that we append or merge the new results into the existing results?

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:104
&gt; +                help=&quot;Only used on bots. Path to a JSON file to be merged into the JSON file when --output-json-path is present.&quot;),

Do we need both mechanisms for this?

&gt;&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:171
&gt;&gt;&gt; +        _log.info(&apos;RESULT %s= %s %s&apos; % (test_name.replace(&apos;:&apos;, &apos;: &apos;).replace(&apos;/&apos;, &apos;: &apos;), results[&apos;avg&apos;], unit))
&gt;&gt; 
&gt;&gt; I would use re.sub(&quot;[:/]&quot;, &quot;: &quot;, test_name) or re.compile [:/] + re.sub
&gt;&gt; instead of test_name.replace(&apos;:&apos;, &apos;: &apos;).replace(&apos;/&apos;, &apos;: &apos;)
&gt; 
&gt; I think the regular expression is actually slower.

I can&apos;t imagine speed is an issue here; I would be more concerned with clarity. I think the re.sub() is slightly clearer, but only slightly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692887</commentid>
    <comment_count>5</comment_count>
      <attachid>157645</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-10 14:45:21 -0700</bug_when>
    <thetext>Comment on attachment 157645
Adds the feature

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

&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:102
&gt;&gt; +                help=&quot;Path to generate a JSON file at; may contain previous results if it already exists.&quot;),
&gt; 
&gt; This means that we append or merge the new results into the existing results?

Yes.

&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:104
&gt;&gt; +                help=&quot;Only used on bots. Path to a JSON file to be merged into the JSON file when --output-json-path is present.&quot;),
&gt; 
&gt; Do we need both mechanisms for this?

Not really. We can do a follow up to get rid of it but that&apos;ll require a build bot change so I&apos;ll do that in a separate patch at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692895</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-10 14:48:50 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 157645 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157645&amp;action=review
&gt; 
&gt; looks reasonable. As a general warning, I start to get leery these days when we have to write code that does a lot of free-text parsing like this. Is the text primarily meant to be human-readable, or is it just going from bots to dashboards? If the latter, would it make sense to switch to JSON or something more easily parsed and structured?

It&apos;s meant to be human readable. The results are uploaded to perf-o-matic as a JSON file. The code in webkitpy is mainly about parsing the DRT result and then converting it to a JSON entry and re-formatting it for stdout. Historically, this was done to be compatible with Chromium perf bots (inherited from loislo&apos;s original inspector perf. test framework). However, given that we&apos;re not intending to deploy this on Chromium perf bots in the foreseeable future maybe we can yank that and do something simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692909</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-10 15:18:03 -0700</bug_when>
    <thetext>Committed r125332: &lt;http://trac.webkit.org/changeset/125332&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692910</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-08-10 15:20:38 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 157645 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157645&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:104
&gt; &gt;&gt; +                help=&quot;Only used on bots. Path to a JSON file to be merged into the JSON file when --output-json-path is present.&quot;),
&gt; &gt; 
&gt; &gt; Do we need both mechanisms for this?
&gt; 
&gt; Not really. We can do a follow up to get rid of it but that&apos;ll require a build bot change so I&apos;ll do that in a separate patch at least.

I take it back. It needs to be separate because on bots, we can&apos;t keep merging new results and it&apos;s hard to distinguish which part of the output needs to be merged to new entry once it got merged.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157645</attachid>
            <date>2012-08-09 23:43:29 -0700</date>
            <delta_ts>2012-08-10 14:45:21 -0700</delta_ts>
            <desc>Adds the feature</desc>
            <filename>fix93690</filename>
            <type>text/plain</type>
            <size>18406</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3Rz
cnVubmVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAx
MjUyNDIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0
ZXN0c3J1bm5lcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSwzMSBA
QAogbWluIDEwODAgbXMKIG1heCAxMTIwIG1zCiAiIiIKKyAgICAgICAgICAgIGVsaWYgZHJpdmVy
X2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgnbWVtb3J5LXRlc3QuaHRtbCcpOgorICAgICAgICAg
ICAgICAgIHRleHQgPSAiIiJSdW5uaW5nIDIwIHRpbWVzCitJZ25vcmluZyB3YXJtLXVwIHJ1biAo
MTExNSkKKworVGltZToKK2F2ZyAxMTAwIG1zCittZWRpYW4gMTEwMSBtcworc3RkZXYgMTEgbXMK
K21pbiAxMDgwIG1zCittYXggMTEyMCBtcworCitKUyBIZWFwOgorYXZnIDgzMjAwMCBieXRlcwor
bWVkaWFuIDgyOTAwMCBieXRlcworc3RkZXYgMTUwMDAgYnl0ZXMKK21pbiA4MTEwMDAgYnl0ZXMK
K21heCA4NDgwMDAgYnl0ZXMKKworRmFzdE1hbGxvYzoKK2F2ZyA1MzIwMDAgYnl0ZXMKK21lZGlh
biA1MjkwMDAgYnl0ZXMKK3N0ZGV2IDEzMDAwIGJ5dGVzCittaW4gNTExMDAwIGJ5dGVzCittYXgg
NTQ4MDAwIGJ5dGVzCisiIiIKICAgICAgICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQodGV4dCwg
JycsICcnLCAnJywgY3Jhc2g9Y3Jhc2gsIHRpbWVvdXQ9dGltZW91dCkKIAogICAgICAgICBkZWYg
c3RhcnQoc2VsZik6CkBAIC0xMjIsNiArMTQ3LDkgQEAKICAgICAgICAgcnVubmVyLl9ob3N0LmZp
bGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkocnVubmVyLl9iYXNlX3BhdGgsICdpbnNwZWN0
b3InKQogICAgICAgICBydW5uZXIuX2hvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9y
eShydW5uZXIuX2Jhc2VfcGF0aCwgJ0JpbmRpbmdzJykKICAgICAgICAgcnVubmVyLl9ob3N0LmZp
bGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkocnVubmVyLl9iYXNlX3BhdGgsICdQYXJzZXIn
KQorCisgICAgICAgIGZpbGVzeXN0ZW0gPSBydW5uZXIuX2hvc3QuZmlsZXN5c3RlbQorICAgICAg
ICBydW5uZXIubG9hZF9vdXRwdXRfanNvbiA9IGxhbWJkYToganNvbi5sb2FkcyhmaWxlc3lzdGVt
LnJlYWRfdGV4dF9maWxlKHJ1bm5lci5fb3V0cHV0X2pzb25fcGF0aCgpKSkKICAgICAgICAgcmV0
dXJuIHJ1bm5lciwgdGVzdF9wb3J0CiAKICAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgdGVzdF9uYW1l
KToKQEAgLTIyNyw2ICsyNTUsMzMgQEAKICAgICAgICAgJ21lZGlhbj0gMTEwMS4wIG1zLCBzdGRl
dj0gMTEuMCBtcywgbWluPSAxMDgwLjAgbXMsIG1heD0gMTEyMC4wIG1zJywKICAgICAgICAgJycs
ICcnXSkpCiAKKyAgICBkZWYgdGVzdF9ydW5fbWVtb3J5X3Rlc3Qoc2VsZik6CisgICAgICAgIHJ1
bm5lciwgcG9ydCA9IHNlbGYuY3JlYXRlX3J1bm5lcl9hbmRfc2V0dXBfcmVzdWx0c190ZW1wbGF0
ZSgpCisgICAgICAgIHJ1bm5lci5fdGltZXN0YW1wID0gMTIzNDU2Nzg5CisgICAgICAgIHBvcnQu
aG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShydW5uZXIuX2Jhc2VfcGF0aCArICcvUGFy
c2VyL21lbW9yeS10ZXN0Lmh0bWwnLCAnc29tZSBjb250ZW50JykKKworICAgICAgICBvdXRwdXQg
PSBPdXRwdXRDYXB0dXJlKCkKKyAgICAgICAgb3V0cHV0LmNhcHR1cmVfb3V0cHV0KCkKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRfY291bnQgPSBydW5uZXIucnVu
KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyLCBsb2cgPSBv
dXRwdXQucmVzdG9yZV9vdXRwdXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuZXhwZWN0
ZWRfcmVzdWx0X2NvdW50LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZywgJ1xuJy5q
b2luKFsKKyAgICAgICAgICAgICdSdW5uaW5nIDEgdGVzdHMnLAorICAgICAgICAgICAgJ1J1bm5p
bmcgUGFyc2VyL21lbW9yeS10ZXN0Lmh0bWwgKDEgb2YgMSknLAorICAgICAgICAgICAgJ1JFU1VM
VCBQYXJzZXI6IG1lbW9yeS10ZXN0PSAxMTAwLjAgbXMnLAorICAgICAgICAgICAgJ21lZGlhbj0g
MTEwMS4wIG1zLCBzdGRldj0gMTEuMCBtcywgbWluPSAxMDgwLjAgbXMsIG1heD0gMTEyMC4wIG1z
JywKKyAgICAgICAgICAgICdSRVNVTFQgUGFyc2VyOiBtZW1vcnktdGVzdDogSlNIZWFwPSA4MzIw
MDAuMCBieXRlcycsCisgICAgICAgICAgICAnbWVkaWFuPSA4MjkwMDAuMCBieXRlcywgc3RkZXY9
IDE1MDAwLjAgYnl0ZXMsIG1pbj0gODExMDAwLjAgYnl0ZXMsIG1heD0gODQ4MDAwLjAgYnl0ZXMn
LAorICAgICAgICAgICAgJ1JFU1VMVCBQYXJzZXI6IG1lbW9yeS10ZXN0OiBGYXN0TWFsbG9jPSA1
MzIwMDAuMCBieXRlcycsCisgICAgICAgICAgICAnbWVkaWFuPSA1MjkwMDAuMCBieXRlcywgc3Rk
ZXY9IDEzMDAwLjAgYnl0ZXMsIG1pbj0gNTExMDAwLjAgYnl0ZXMsIG1heD0gNTQ4MDAwLjAgYnl0
ZXMnLAorICAgICAgICAgICAgJycsICcnXSkpCisgICAgICAgIHJlc3VsdHMgPSBydW5uZXIubG9h
ZF9vdXRwdXRfanNvbigpWzBdWydyZXN1bHRzJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXN1bHRzWydQYXJzZXIvbWVtb3J5LXRlc3QnXSwgeydtaW4nOiAxMDgwLjAsICdtYXgnOiAxMTIw
LjAsICdtZWRpYW4nOiAxMTAxLjAsICdzdGRldic6IDExLjAsICdhdmcnOiAxMTAwLjAsICd1bml0
JzogJ21zJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0c1snUGFyc2VyL21lbW9y
eS10ZXN0OkpTSGVhcCddLCB7J21pbic6IDgxMTAwMC4wLCAnbWF4JzogODQ4MDAwLjAsICdtZWRp
YW4nOiA4MjkwMDAuMCwgJ3N0ZGV2JzogMTUwMDAuMCwgJ2F2Zyc6IDgzMjAwMC4wLCAndW5pdCc6
ICdieXRlcyd9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHNbJ1BhcnNlci9tZW1v
cnktdGVzdDpGYXN0TWFsbG9jJ10sIHsnbWluJzogNTExMDAwLjAsICdtYXgnOiA1NDgwMDAuMCwg
J21lZGlhbic6IDUyOTAwMC4wLCAnc3RkZXYnOiAxMzAwMC4wLCAnYXZnJzogNTMyMDAwLjAsICd1
bml0JzogJ2J5dGVzJ30pCisKICAgICBkZWYgX3Rlc3RfcnVuX3dpdGhfanNvbl9vdXRwdXQoc2Vs
ZiwgcnVubmVyLCBmaWxlc3lzdGVtLCB1cGxvYWRfc3VjZWVkcz1UcnVlLCBleHBlY3RlZF9leGl0
X2NvZGU9MCk6CiAgICAgICAgIGZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHJ1bm5lci5fYmFz
ZV9wYXRoICsgJy9pbnNwZWN0b3IvcGFzcy5odG1sJywgJ3NvbWUgY29udGVudCcpCiAgICAgICAg
IGZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHJ1bm5lci5fYmFzZV9wYXRoICsgJy9CaW5kaW5n
cy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1sJywgJ3NvbWUgY29udGVudCcpCkBAIC0yNjIsMjQg
KzMxNywyNSBAQAogCiAgICAgICAgIHJldHVybiB1cGxvYWRlZFswXQogCisgICAgX2V2ZW50X3Rh
cmdldF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cyA9IHsKKyAgICAgICAgIkJpbmRpbmdz
L2V2ZW50LXRhcmdldC13cmFwcGVyIjogeyJtYXgiOiAxNTEwLCAiYXZnIjogMTQ4OS4wNSwgIm1l
ZGlhbiI6IDE0ODcsICJtaW4iOiAxNDcxLCAic3RkZXYiOiAxNC40NiwgInVuaXQiOiAibXMifSwK
KyAgICAgICAgImluc3BlY3Rvci9wYXNzLmh0bWw6Z3JvdXBfbmFtZTp0ZXN0X25hbWUiOiA0Mn0K
KwogICAgIGRlZiB0ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHNlbGYpOgogICAgICAgICBydW5u
ZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoYXJncz1bJy0tb3V0cHV0LWpzb24tcGF0aD0v
bW9jay1jaGVja291dC9vdXRwdXQuanNvbicsCiAgICAgICAgICAgICAnLS10ZXN0LXJlc3VsdHMt
c2VydmVyPXNvbWUuaG9zdCddKQogICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0
cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoanNvbi5sb2Fkcyhwb3J0Lmhvc3QuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL21vY2st
Y2hlY2tvdXQvb3V0cHV0Lmpzb24nKSksIHsKLSAgICAgICAgICAgICJ0aW1lc3RhbXAiOiAxMjM0
NTY3ODksICJyZXN1bHRzIjoKLSAgICAgICAgICAgIHsiQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdy
YXBwZXIiOiB7Im1heCI6IDE1MTAsICJhdmciOiAxNDg5LjA1LCAibWVkaWFuIjogMTQ4NywgIm1p
biI6IDE0NzEsICJzdGRldiI6IDE0LjQ2LCAidW5pdCI6ICJtcyJ9LAotICAgICAgICAgICAgImlu
c3BlY3Rvci9wYXNzLmh0bWw6Z3JvdXBfbmFtZTp0ZXN0X25hbWUiOiA0Mn0sCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocnVubmVyLmxvYWRfb3V0cHV0X2pzb24oKSwgeworICAgICAgICAgICAg
InRpbWVzdGFtcCI6IDEyMzQ1Njc4OSwgInJlc3VsdHMiOiBzZWxmLl9ldmVudF90YXJnZXRfd3Jh
cHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCiAgICAgICAgICAgICAid2Via2l0LXJldmlzaW9u
IjogIjU2NzgiLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayJ9KQogCiAgICAgZGVmIHRlc3RfcnVu
X3dpdGhfZGVzY3JpcHRpb24oc2VsZik6CiAgICAgICAgIHJ1bm5lciwgcG9ydCA9IHNlbGYuY3Jl
YXRlX3J1bm5lcihhcmdzPVsnLS1vdXRwdXQtanNvbi1wYXRoPS9tb2NrLWNoZWNrb3V0L291dHB1
dC5qc29uJywKICAgICAgICAgICAgICctLXRlc3QtcmVzdWx0cy1zZXJ2ZXI9c29tZS5ob3N0Jywg
Jy0tZGVzY3JpcHRpb24nLCAnc29tZSBkZXNjcmlwdGlvbiddKQogICAgICAgICBzZWxmLl90ZXN0
X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0LmZpbGVzeXN0ZW0pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoanNvbi5sb2Fkcyhwb3J0Lmhvc3QuZmlsZXN5c3RlbS5yZWFk
X3RleHRfZmlsZSgnL21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nKSksIHsKLSAgICAgICAgICAg
ICJ0aW1lc3RhbXAiOiAxMjM0NTY3ODksICJkZXNjcmlwdGlvbiI6ICJzb21lIGRlc2NyaXB0aW9u
IiwgInJlc3VsdHMiOgotICAgICAgICAgICAgeyJCaW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBl
ciI6IHsibWF4IjogMTUxMCwgImF2ZyI6IDE0ODkuMDUsICJtZWRpYW4iOiAxNDg3LCAibWluIjog
MTQ3MSwgInN0ZGV2IjogMTQuNDYsICJ1bml0IjogIm1zIn0sCi0gICAgICAgICAgICAiaW5zcGVj
dG9yL3Bhc3MuaHRtbDpncm91cF9uYW1lOnRlc3RfbmFtZSI6IDQyfSwKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChydW5uZXIubG9hZF9vdXRwdXRfanNvbigpLCB7CisgICAgICAgICAgICAidGlt
ZXN0YW1wIjogMTIzNDU2Nzg5LCAiZGVzY3JpcHRpb24iOiAic29tZSBkZXNjcmlwdGlvbiIsCisg
ICAgICAgICAgICAicmVzdWx0cyI6IHNlbGYuX2V2ZW50X3RhcmdldF93cmFwcGVyX2FuZF9pbnNw
ZWN0b3JfcmVzdWx0cywKICAgICAgICAgICAgICJ3ZWJraXQtcmV2aXNpb24iOiAiNTY3OCIsICJi
cmFuY2giOiAid2Via2l0LXRydW5rIn0pCiAKICAgICBkZWYgY3JlYXRlX3J1bm5lcl9hbmRfc2V0
dXBfcmVzdWx0c190ZW1wbGF0ZShzZWxmLCBhcmdzPVtdKToKQEAgLTMwOSw5ICszNjUsNyBAQAog
ICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5ob3N0
LmZpbGVzeXN0ZW0pCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqc29uLmxvYWRzKHBvcnQu
aG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKG91dHB1dF9qc29uX3BhdGgpKSwgW3sKLSAg
ICAgICAgICAgICJ0aW1lc3RhbXAiOiAxMjM0NTY3ODksICJyZXN1bHRzIjoKLSAgICAgICAgICAg
IHsiQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIiOiB7Im1heCI6IDE1MTAsICJhdmciOiAx
NDg5LjA1LCAibWVkaWFuIjogMTQ4NywgIm1pbiI6IDE0NzEsICJzdGRldiI6IDE0LjQ2LCAidW5p
dCI6ICJtcyJ9LAotICAgICAgICAgICAgImluc3BlY3Rvci9wYXNzLmh0bWw6Z3JvdXBfbmFtZTp0
ZXN0X25hbWUiOiA0Mn0sCisgICAgICAgICAgICAidGltZXN0YW1wIjogMTIzNDU2Nzg5LCAicmVz
dWx0cyI6IHNlbGYuX2V2ZW50X3RhcmdldF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cywK
ICAgICAgICAgICAgICJ3ZWJraXQtcmV2aXNpb24iOiAiNTY3OCIsICJicmFuY2giOiAid2Via2l0
LXRydW5rIn1dKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlc3lzdGVtLmlzZmlsZShv
dXRwdXRfanNvbl9wYXRoKSkKQEAgLTMyNCw5ICszNzgsOCBAQAogICAgICAgICBmaWxlc3lzdGVt
ID0gcG9ydC5ob3N0LmZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5fdGVzdF9ydW5fd2l0aF9qc29u
X291dHB1dChydW5uZXIsIGZpbGVzeXN0ZW0pCiAKLSAgICAgICAgZXhwZWN0ZWRfZW50cnkgPSB7
InRpbWVzdGFtcCI6IDEyMzQ1Njc4OSwgInJlc3VsdHMiOiB7IkJpbmRpbmdzL2V2ZW50LXRhcmdl
dC13cmFwcGVyIjoKLSAgICAgICAgICAgIHsibWF4IjogMTUxMCwgImF2ZyI6IDE0ODkuMDUsICJt
ZWRpYW4iOiAxNDg3LCAibWluIjogMTQ3MSwgInN0ZGV2IjogMTQuNDYsICJ1bml0IjogIm1zIn0s
Ci0gICAgICAgICAgICAiaW5zcGVjdG9yL3Bhc3MuaHRtbDpncm91cF9uYW1lOnRlc3RfbmFtZSI6
IDQyfSwgIndlYmtpdC1yZXZpc2lvbiI6ICI1Njc4IiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsi
fQorICAgICAgICBleHBlY3RlZF9lbnRyeSA9IHsidGltZXN0YW1wIjogMTIzNDU2Nzg5LCAicmVz
dWx0cyI6IHNlbGYuX2V2ZW50X3RhcmdldF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cywK
KyAgICAgICAgICAgICJ3ZWJraXQtcmV2aXNpb24iOiAiNTY3OCIsICJicmFuY2giOiAid2Via2l0
LXRydW5rIn0KIAogICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCiAgICAgICAgIGpzb25fb3V0
cHV0ID0gcG9ydC5ob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoJy9tb2NrLWNoZWNrb3V0
L291dHB1dC5qc29uJykKQEAgLTM3MSwxMiArNDI0LDkgQEAKICAgICAgICAgICAgICctLXNvdXJj
ZS1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvc291cmNlLmpzb24nLCAnLS10ZXN0LXJlc3VsdHMt
c2VydmVyPXNvbWUuaG9zdCddKQogICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS53cml0ZV90
ZXh0X2ZpbGUoJy9tb2NrLWNoZWNrb3V0L3NvdXJjZS5qc29uJywgJ3sia2V5IjogInZhbHVlIn0n
KQogICAgICAgICBzZWxmLl90ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KHJ1bm5lciwgcG9ydC5o
b3N0LmZpbGVzeXN0ZW0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoanNvbi5sb2Fkcyhwb3J0
Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1snL21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nXSksIHsK
LSAgICAgICAgICAgICJ0aW1lc3RhbXAiOiAxMjM0NTY3ODksICJyZXN1bHRzIjoKLSAgICAgICAg
ICAgIHsiQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIiOiB7Im1heCI6IDE1MTAsICJhdmci
OiAxNDg5LjA1LCAibWVkaWFuIjogMTQ4NywgIm1pbiI6IDE0NzEsICJzdGRldiI6IDE0LjQ2LCAi
dW5pdCI6ICJtcyJ9LAotICAgICAgICAgICAgImluc3BlY3Rvci9wYXNzLmh0bWw6Z3JvdXBfbmFt
ZTp0ZXN0X25hbWUiOiA0Mn0sCi0gICAgICAgICAgICAid2Via2l0LXJldmlzaW9uIjogIjU2Nzgi
LCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsCi0gICAgICAgICAgICAia2V5IjogInZhbHVlIn0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVubmVyLmxvYWRfb3V0cHV0X2pzb24oKSwgewor
ICAgICAgICAgICAgInRpbWVzdGFtcCI6IDEyMzQ1Njc4OSwgInJlc3VsdHMiOiBzZWxmLl9ldmVu
dF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCisgICAgICAgICAgICAid2Vi
a2l0LXJldmlzaW9uIjogIjU2NzgiLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJrZXkiOiAi
dmFsdWUifSkKIAogICAgIGRlZiB0ZXN0X3J1bl93aXRoX2JhZF9qc29uX3NvdXJjZShzZWxmKToK
ICAgICAgICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyKGFyZ3M9WyctLW91dHB1
dC1qc29uLXBhdGg9L21vY2stY2hlY2tvdXQvb3V0cHV0Lmpzb24nLApAQCAtMzkyLDEwICs0NDIs
OCBAQAogICAgICAgICAgICAgJy0tdGVzdC1yZXN1bHRzLXNlcnZlcj1zb21lLmhvc3QnXSkKICAg
ICAgICAgcG9ydC5yZXBvc2l0b3J5X3BhdGhzID0gbGFtYmRhOiBbKCd3ZWJraXQnLCAnL21vY2st
Y2hlY2tvdXQnKSwgKCdzb21lJywgJy9tb2NrLWNoZWNrb3V0L3NvbWUnKV0KICAgICAgICAgc2Vs
Zi5fdGVzdF9ydW5fd2l0aF9qc29uX291dHB1dChydW5uZXIsIHBvcnQuaG9zdC5maWxlc3lzdGVt
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpzb24ubG9hZHMocG9ydC5ob3N0LmZpbGVzeXN0
ZW0uZmlsZXNbJy9tb2NrLWNoZWNrb3V0L291dHB1dC5qc29uJ10pLCB7Ci0gICAgICAgICAgICAi
dGltZXN0YW1wIjogMTIzNDU2Nzg5LCAicmVzdWx0cyI6Ci0gICAgICAgICAgICB7IkJpbmRpbmdz
L2V2ZW50LXRhcmdldC13cmFwcGVyIjogeyJtYXgiOiAxNTEwLCAiYXZnIjogMTQ4OS4wNSwgIm1l
ZGlhbiI6IDE0ODcsICJtaW4iOiAxNDcxLCAic3RkZXYiOiAxNC40NiwgInVuaXQiOiAibXMifSwK
LSAgICAgICAgICAgICJpbnNwZWN0b3IvcGFzcy5odG1sOmdyb3VwX25hbWU6dGVzdF9uYW1lIjog
NDIuMH0sCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVubmVyLmxvYWRfb3V0cHV0X2pzb24o
KSwgeworICAgICAgICAgICAgInRpbWVzdGFtcCI6IDEyMzQ1Njc4OSwgInJlc3VsdHMiOiBzZWxm
Ll9ldmVudF90YXJnZXRfd3JhcHBlcl9hbmRfaW5zcGVjdG9yX3Jlc3VsdHMsCiAgICAgICAgICAg
ICAid2Via2l0LXJldmlzaW9uIjogIjU2NzgiLCAic29tZS1yZXZpc2lvbiI6ICI1Njc4IiwgImJy
YW5jaCI6ICJ3ZWJraXQtdHJ1bmsifSkKIAogICAgIGRlZiB0ZXN0X3J1bl93aXRoX3VwbG9hZF9q
c29uKHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0
cy9wZXJmdGVzdHNydW5uZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkJKHJldmlzaW9uIDEyNTI0MikK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVu
bmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05OSw5ICs5OSw5IEBACiAgICAgICAgICAgICBvcHRw
YXJzZS5tYWtlX29wdGlvbigiLS1uby1yZXN1bHRzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRl
c3Q9ImdlbmVyYXRlX3Jlc3VsdHMiLCBkZWZhdWx0PVRydWUsCiAgICAgICAgICAgICAgICAgaGVs
cD0iRG8gbm8gZ2VuZXJhdGUgcmVzdWx0cyBKU09OIGFuZCByZXN1bHRzIHBhZ2UuIiksCiAgICAg
ICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1vdXRwdXQtanNvbi1wYXRoIiwKLSAgICAg
ICAgICAgICAgICBoZWxwPSJGaWxlbmFtZSBvZiB0aGUgSlNPTiBmaWxlIHRoYXQgc3VtbWFyaWVz
IHRoZSByZXN1bHRzLiIpLAorICAgICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gZ2VuZXJhdGUg
YSBKU09OIGZpbGUgYXQ7IG1heSBjb250YWluIHByZXZpb3VzIHJlc3VsdHMgaWYgaXQgYWxyZWFk
eSBleGlzdHMuIiksCiAgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1zb3VyY2Ut
anNvbi1wYXRoIiwKLSAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGEgSlNPTiBmaWxlIHRv
IGJlIG1lcmdlZCBpbnRvIHRoZSBKU09OIGZpbGUgd2hlbiAtLW91dHB1dC1qc29uLXBhdGggaXMg
cHJlc2VudC4iKSwKKyAgICAgICAgICAgICAgICBoZWxwPSJPbmx5IHVzZWQgb24gYm90cy4gUGF0
aCB0byBhIEpTT04gZmlsZSB0byBiZSBtZXJnZWQgaW50byB0aGUgSlNPTiBmaWxlIHdoZW4gLS1v
dXRwdXQtanNvbi1wYXRoIGlzIHByZXNlbnQuIiksCiAgICAgICAgICAgICBvcHRwYXJzZS5tYWtl
X29wdGlvbigiLS1kZXNjcmlwdGlvbiIsCiAgICAgICAgICAgICAgICAgaGVscD0iQWRkIGEgZGVz
Y3JpcHRpb24gdG8gdGhlIG91dHB1dCBKU09OIGZpbGUgaWYgb25lIGlzIGdlbmVyYXRlZCIpLAog
ICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tbm8tc2hvdy1yZXN1bHRzIiwgYWN0
aW9uPSJzdG9yZV9mYWxzZSIsIGRlZmF1bHQ9VHJ1ZSwgZGVzdD0ic2hvd19yZXN1bHRzIiwKQEAg
LTE2OCwxMiArMTY4LDE1IEBACiAKICAgICAgICAgcmV0dXJuIHVuZXhwZWN0ZWQKIAorICAgIGRl
ZiBfb3V0cHV0X2pzb25fcGF0aChzZWxmKToKKyAgICAgICAgb3V0cHV0X2pzb25fcGF0aCA9IHNl
bGYuX29wdGlvbnMub3V0cHV0X2pzb25fcGF0aAorICAgICAgICBpZiBvdXRwdXRfanNvbl9wYXRo
OgorICAgICAgICAgICAgcmV0dXJuIG91dHB1dF9qc29uX3BhdGgKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2hvc3QuZmlsZXN5c3RlbS5qb2luKHNlbGYuX3BvcnQucGVyZl9yZXN1bHRzX2RpcmVjdG9y
eSgpLCBzZWxmLl9ERUZBVUxUX0pTT05fRklMRU5BTUUpCisKICAgICBkZWYgX2dlbmVyYXRlX2Fu
ZF9zaG93X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCi0g
ICAgICAgIG91dHB1dF9qc29uX3BhdGggPSBvcHRpb25zLm91dHB1dF9qc29uX3BhdGgKLSAgICAg
ICAgaWYgbm90IG91dHB1dF9qc29uX3BhdGg6Ci0gICAgICAgICAgICBvdXRwdXRfanNvbl9wYXRo
ID0gc2VsZi5faG9zdC5maWxlc3lzdGVtLmpvaW4oc2VsZi5fcG9ydC5wZXJmX3Jlc3VsdHNfZGly
ZWN0b3J5KCksIHNlbGYuX0RFRkFVTFRfSlNPTl9GSUxFTkFNRSkKLQorICAgICAgICBvdXRwdXRf
anNvbl9wYXRoID0gc2VsZi5fb3V0cHV0X2pzb25fcGF0aCgpCiAgICAgICAgIG91dHB1dCA9IHNl
bGYuX2dlbmVyYXRlX3Jlc3VsdHNfZGljdChzZWxmLl90aW1lc3RhbXAsIG9wdGlvbnMuZGVzY3Jp
cHRpb24sIG9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnMuYnVpbGRlcl9uYW1lLCBvcHRpb25zLmJ1
aWxkX251bWJlcikKIAogICAgICAgICBpZiBvcHRpb25zLnNvdXJjZV9qc29uX3BhdGg6CkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3QucHkJKHJldmlzaW9uIDEyNTI0MikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVy
Zm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTExMSw1OCArMTEx
LDY0IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNl
CiAKKyAgICBfZGVzY3JpcHRpb25fcmVnZXggPSByZS5jb21waWxlKHInXkRlc2NyaXB0aW9uOiAo
P1A8ZGVzY3JpcHRpb24+LiopJCcsIHJlLklHTk9SRUNBU0UpCisgICAgX3Jlc3VsdF9jbGFzc2Vz
ID0gWydUaW1lJywgJ0pTIEhlYXAnLCAnRmFzdE1hbGxvYyddCisgICAgX3Jlc3VsdF9jbGFzc19y
ZWdleCA9IHJlLmNvbXBpbGUocideKD9QPHJlc3VsdGNsYXNzPicgKyByJ3wnLmpvaW4oX3Jlc3Vs
dF9jbGFzc2VzKSArICcpOicpCiAgICAgX3N0YXRpc3RpY3Nfa2V5cyA9IFsnYXZnJywgJ21lZGlh
bicsICdzdGRldicsICdtaW4nLCAnbWF4JywgJ3VuaXQnXQotICAgIF9yZXN1bHRfY2xhc3NlcyA9
IFsnVGltZTonLCAnSlMgSGVhcDonLCAnRmFzdE1hbGxvYzonXQorICAgIF9zY29yZV9yZWdleCA9
IHJlLmNvbXBpbGUocideKD9QPGtleT4nICsgcid8Jy5qb2luKF9zdGF0aXN0aWNzX2tleXMpICsg
cicpXHMrKD9QPHZhbHVlPlswLTlcLl0rKVxzKig/UDx1bml0Pi4qKScpCiAKICAgICBkZWYgcGFy
c2Vfb3V0cHV0KHNlbGYsIG91dHB1dCk6Ci0gICAgICAgIGdvdF9hX3Jlc3VsdCA9IEZhbHNlCiAg
ICAgICAgIHRlc3RfZmFpbGVkID0gRmFsc2UKLSAgICAgICAgcmVzdWx0cyA9IGRpY3QoWyhuYW1l
LCBkaWN0KCkpIGZvciBuYW1lIGluIHNlbGYuX3Jlc3VsdF9jbGFzc2VzXSkKLSAgICAgICAgc2Nv
cmVfcmVnZXggPSByZS5jb21waWxlKHInXig/UDxrZXk+JyArIHInfCcuam9pbihzZWxmLl9zdGF0
aXN0aWNzX2tleXMpICsgcicpXHMrKD9QPHZhbHVlPlswLTlcLl0rKVxzKig/UDx1bml0Pi4qKScp
Ci0gICAgICAgIGRlc2NyaXB0aW9uX3JlZ2V4ID0gcmUuY29tcGlsZShyJ15EZXNjcmlwdGlvbjog
KD9QPGRlc2NyaXB0aW9uPi4qKSQnLCByZS5JR05PUkVDQVNFKQorICAgICAgICByZXN1bHRzID0g
e30KKyAgICAgICAgb3JkZXJlZF9yZXN1bHRzX2tleXMgPSBbXQorICAgICAgICB0ZXN0X25hbWUg
PSByZS5zdWIocidcLlx3KyQnLCAnJywgc2VsZi5fdGVzdF9uYW1lKQogICAgICAgICBkZXNjcmlw
dGlvbl9zdHJpbmcgPSAiIgotICAgICAgICByZXN1bHRfY2xhc3NfcmVnZXggPSByZS5jb21waWxl
KHInXig/UDxyZXN1bHRjbGFzcz4nICsgcid8Jy5qb2luKHNlbGYuX3Jlc3VsdF9jbGFzc2VzKSAr
ICcpJykKLQogICAgICAgICByZXN1bHRfY2xhc3MgPSAiIgogICAgICAgICBmb3IgbGluZSBpbiBy
ZS5zcGxpdCgnXG4nLCBvdXRwdXQudGV4dCk6Ci0gICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRl
c2NyaXB0aW9uX3JlZ2V4Lm1hdGNoKGxpbmUpCisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IHNl
bGYuX2Rlc2NyaXB0aW9uX3JlZ2V4Lm1hdGNoKGxpbmUpCiAgICAgICAgICAgICBpZiBkZXNjcmlw
dGlvbjoKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbl9zdHJpbmcgPSBkZXNjcmlwdGlvbi5n
cm91cCgnZGVzY3JpcHRpb24nKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAg
ICAgIHJlc3VsdF9jbGFzc19tYXRjaCA9IHJlc3VsdF9jbGFzc19yZWdleC5tYXRjaChsaW5lKQor
ICAgICAgICAgICAgcmVzdWx0X2NsYXNzX21hdGNoID0gc2VsZi5fcmVzdWx0X2NsYXNzX3JlZ2V4
Lm1hdGNoKGxpbmUpCiAgICAgICAgICAgICBpZiByZXN1bHRfY2xhc3NfbWF0Y2g6CiAgICAgICAg
ICAgICAgICAgcmVzdWx0X2NsYXNzID0gcmVzdWx0X2NsYXNzX21hdGNoLmdyb3VwKCdyZXN1bHRj
bGFzcycpCiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgc2NvcmUgPSBz
Y29yZV9yZWdleC5tYXRjaChsaW5lKQorICAgICAgICAgICAgc2NvcmUgPSBzZWxmLl9zY29yZV9y
ZWdleC5tYXRjaChsaW5lKQogICAgICAgICAgICAgaWYgc2NvcmU6CiAgICAgICAgICAgICAgICAg
a2V5ID0gc2NvcmUuZ3JvdXAoJ2tleScpCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBmbG9hdChz
Y29yZS5ncm91cCgndmFsdWUnKSkKICAgICAgICAgICAgICAgICB1bml0ID0gc2NvcmUuZ3JvdXAo
J3VuaXQnKQotICAgICAgICAgICAgICAgIHJlc3VsdHNbcmVzdWx0X2NsYXNzXVsndW5pdCddID0g
dW5pdAotICAgICAgICAgICAgICAgIHJlc3VsdHNbcmVzdWx0X2NsYXNzXVtrZXldID0gdmFsdWUK
KyAgICAgICAgICAgICAgICBuYW1lID0gdGVzdF9uYW1lCisgICAgICAgICAgICAgICAgaWYgcmVz
dWx0X2NsYXNzICE9ICdUaW1lJzoKKyAgICAgICAgICAgICAgICAgICAgbmFtZSArPSAnOicgKyBy
ZXN1bHRfY2xhc3MucmVwbGFjZSgnICcsICcnKQorICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90
IGluIG9yZGVyZWRfcmVzdWx0c19rZXlzOgorICAgICAgICAgICAgICAgICAgICBvcmRlcmVkX3Jl
c3VsdHNfa2V5cy5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgICAgICByZXN1bHRzLnNldGRlZmF1
bHQobmFtZSwge30pCisgICAgICAgICAgICAgICAgcmVzdWx0c1tuYW1lXVsndW5pdCddID0gdW5p
dAorICAgICAgICAgICAgICAgIHJlc3VsdHNbbmFtZV1ba2V5XSA9IHZhbHVlCiAgICAgICAgICAg
ICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Nob3VsZF9pZ25vcmVf
bGluZV9pbl9wYXJzZXJfdGVzdF9yZXN1bHQobGluZSk6CiAgICAgICAgICAgICAgICAgdGVzdF9m
YWlsZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihsaW5lKQogCi0gICAgICAg
IGlmIHRlc3RfZmFpbGVkIG9yIHNldChzZWxmLl9zdGF0aXN0aWNzX2tleXMpICE9IHNldChyZXN1
bHRzW3NlbGYuX3Jlc3VsdF9jbGFzc2VzWzBdXS5rZXlzKCkpOgorICAgICAgICBpZiB0ZXN0X2Zh
aWxlZCBvciBzZXQoc2VsZi5fc3RhdGlzdGljc19rZXlzKSAhPSBzZXQocmVzdWx0c1t0ZXN0X25h
bWVdLmtleXMoKSk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgICAgIHRlc3RfbmFt
ZSA9IHJlLnN1YihyJ1wuXHcrJCcsICcnLCBzZWxmLl90ZXN0X25hbWUpCi0gICAgICAgIHNlbGYu
b3V0cHV0X3N0YXRpc3RpY3ModGVzdF9uYW1lLCByZXN1bHRzW3NlbGYuX3Jlc3VsdF9jbGFzc2Vz
WzBdXSwgZGVzY3JpcHRpb25fc3RyaW5nKQotICAgICAgICBpZiByZXN1bHRzW3NlbGYuX3Jlc3Vs
dF9jbGFzc2VzWzFdXSBhbmQgcmVzdWx0c1tzZWxmLl9yZXN1bHRfY2xhc3Nlc1syXV06Ci0gICAg
ICAgICAgICBzZWxmLm91dHB1dF9zdGF0aXN0aWNzKHRlc3RfbmFtZSArICIvSlNIZWFwIiwgcmVz
dWx0c1tzZWxmLl9yZXN1bHRfY2xhc3Nlc1sxXV0pCi0gICAgICAgICAgICBzZWxmLm91dHB1dF9z
dGF0aXN0aWNzKHRlc3RfbmFtZSArICIvRmFzdE1hbGxvYyIsIHJlc3VsdHNbc2VsZi5fcmVzdWx0
X2NsYXNzZXNbMl1dKQotICAgICAgICByZXR1cm4ge3Rlc3RfbmFtZTogcmVzdWx0c1snVGltZTon
XX0KKyAgICAgICAgZm9yIHJlc3VsdF9uYW1lIGluIG9yZGVyZWRfcmVzdWx0c19rZXlzOgorICAg
ICAgICAgICAgaWYgcmVzdWx0X25hbWUgPT0gdGVzdF9uYW1lOgorICAgICAgICAgICAgICAgIHNl
bGYub3V0cHV0X3N0YXRpc3RpY3MocmVzdWx0X25hbWUsIHJlc3VsdHNbcmVzdWx0X25hbWVdLCBk
ZXNjcmlwdGlvbl9zdHJpbmcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNl
bGYub3V0cHV0X3N0YXRpc3RpY3MocmVzdWx0X25hbWUsIHJlc3VsdHNbcmVzdWx0X25hbWVdKQor
ICAgICAgICByZXR1cm4gcmVzdWx0cwogCiAgICAgZGVmIG91dHB1dF9zdGF0aXN0aWNzKHNlbGYs
IHRlc3RfbmFtZSwgcmVzdWx0cywgZGVzY3JpcHRpb25fc3RyaW5nPU5vbmUpOgogICAgICAgICB1
bml0ID0gcmVzdWx0c1sndW5pdCddCiAgICAgICAgIGlmIGRlc2NyaXB0aW9uX3N0cmluZzoKICAg
ICAgICAgICAgIF9sb2cuaW5mbygnREVTQ1JJUFRJT046ICVzJyAlIGRlc2NyaXB0aW9uX3N0cmlu
ZykKLSAgICAgICAgX2xvZy5pbmZvKCdSRVNVTFQgJXM9ICVzICVzJyAlICh0ZXN0X25hbWUucmVw
bGFjZSgnLycsICc6ICcpLCByZXN1bHRzWydhdmcnXSwgdW5pdCkpCisgICAgICAgIF9sb2cuaW5m
bygnUkVTVUxUICVzPSAlcyAlcycgJSAodGVzdF9uYW1lLnJlcGxhY2UoJzonLCAnOiAnKS5yZXBs
YWNlKCcvJywgJzogJyksIHJlc3VsdHNbJ2F2ZyddLCB1bml0KSkKICAgICAgICAgX2xvZy5pbmZv
KCcsICcuam9pbihbJyVzPSAlcyAlcycgJSAoa2V5LCByZXN1bHRzW2tleV0sIHVuaXQpIGZvciBr
ZXkgaW4gc2VsZi5fc3RhdGlzdGljc19rZXlzWzE6NV1dKSkKIAogCkBAIC0xNzQsNyArMTgwLDYg
QEAKIAogICAgIGRlZiBwYXJzZV9vdXRwdXQoc2VsZiwgb3V0cHV0KToKICAgICAgICAgdGVzdF9m
YWlsZWQgPSBGYWxzZQotICAgICAgICBnb3RfYV9yZXN1bHQgPSBGYWxzZQogICAgICAgICByZXN1
bHRzID0ge30KICAgICAgICAgZm9yIGxpbmUgaW4gcmUuc3BsaXQoJ1xuJywgb3V0cHV0LnRleHQp
OgogICAgICAgICAgICAgcmVzdWx0TGluZSA9IENocm9taXVtU3R5bGVQZXJmVGVzdC5fY2hyb21p
dW1fc3R5bGVfcmVzdWx0X3JlZ2V4Lm1hdGNoKGxpbmUpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjUyNTMpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBAQAorMjAxMi0wOC0wOSAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBydW4tcGVyZi10ZXN0
cyBzaG91bGQgdXBsb2FkIG1lbW9yeSBzdGF0aXN0aWNzIHRvIHBlcmYtby1tYXRpYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGxvYWQgSlMgSGVhcCBh
bmQgRmFzdE1hbGxvYyByZXN1bHRzIGZvciBhIHRlc3QgWC9ZIGFzOiBYL1k6SlNIZWFwIGFuZCBY
L1k6RmFzdE1hbGxvYy4KKyAgICAgICAgTm90ZSAiSlMgSGVhcCIgaXMgY29udmVydGVkIHRvIHRo
ZSBDYW1lbENhc2UgSlNIZWFwLgorCisgICAgICAgIEFsc28gZGlkIHNvbWUgcmVmYWN0b3Jpbmcg
aW4gUGVyZlRlc3QucGFyc2Vfb3V0cHV0IGFuZCBQZXJmVGVzdFJ1bm5lclRlc3QgYW5kIHVwZGF0
ZWQKKyAgICAgICAgc29tZSBoZWxwcyBpbiBQZXJmVGVzdC5wYXJzZV9vdXRwdXQgcGVyIGFydidz
IGNvbW1lbnRzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0
cy9wZXJmdGVzdC5weToKKyAgICAgICAgKFBlcmZUZXN0KToKKyAgICAgICAgKFBlcmZUZXN0LnBh
cnNlX291dHB1dCk6IEluY2x1ZGUgSlNIZWFwIGFuZCBGYXN0TWFsbG9jIHN0YXRpc3RpY3MgaW4g
cmVzdWx0cyBhcyB3ZWxsIGFzIG9mIFRpbWUuCisgICAgICAgIEFsc28gcmVmYWN0b3JlZCBpdCB0
byBhdm9pZCBoYXJkLWNvZGluZyBpbmRpY2VzIGluIF9yZXN1bHRfY2xhc3NlcyBhbmQgbW92ZWQg
Y29tcGxpZWQgcmVndWxhcgorICAgICAgICBleHJlc3Npb25zIG91dCBvZiB0aGUgZnVuY3Rpb24g
dG8gYXZvaWQgcmUtY29tcGlsaW5nIHRoZW0gZXZlcnkgdGltZSB0aGUgbWV0aG9kIHJ1bnMuCisg
ICAgICAgIChQZXJmVGVzdC5vdXRwdXRfc3RhdGlzdGljcyk6IENvbnZlcnQgJzonIHRvICc6ICcg
YXMgd2VsbCBhcyAnLycuCisgICAgICAgIChDaHJvbWl1bVN0eWxlUGVyZlRlc3QucGFyc2Vfb3V0
cHV0KTogUmVtb3ZlZCBhbiB1bnVzZWQgdmFyaWFibGUuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHk6CisgICAgICAgIChQZXJm
VGVzdHNSdW5uZXIuX3BhcnNlX2FyZ3MpOiBVcGxvYWRlZCBzb21lIGhlbHBzIHBlciBhcnYncyBm
ZWVkYmFjay4KKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fb3V0cHV0X2pzb25fcGF0aCk6IEV4
dHJhY3RlZCBmcm9tIF9nZW5lcmF0ZV9hbmRfc2hvd19yZXN1bHRzIHRvIGJlIHVzZWQgaW4KKyAg
ICAgICAgUGVyZlRlc3RSdW5uZXJUZXN0LmNyZWF0ZV9ydW5uZXIuCisgICAgICAgIChQZXJmVGVz
dHNSdW5uZXIuX2dlbmVyYXRlX2FuZF9zaG93X3Jlc3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAoY3JlYXRlX3J1bm5lcik6IEV4dHJhY3RlZCBydW5uZXIubG9hZF9vdXRwdXRfanNv
biBmcm9tIHZhcmlvdXMgdGVzdHMuCisgICAgICAgICh0ZXN0X3J1bl9tZW1vcnlfdGVzdCk6IEFk
ZGVkLgorICAgICAgICAoUGVyZlRlc3RSdW5uZXIpOiBFeHRyYWN0ZWQgX2V2ZW50X3RhcmdldF93
cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cyBmcm9tIHZhcmlvdXMgdGVzdHMuCisgICAgICAg
ICh0ZXN0X3J1bl93aXRoX2pzb25fb3V0cHV0KToKKyAgICAgICAgKHRlc3RfcnVuX3dpdGhfZGVz
Y3JpcHRpb24pOgorICAgICAgICAodGVzdF9ydW5fZ2VuZXJhdGVzX2pzb25fYnlfZGVmYXVsdCk6
CisgICAgICAgICh0ZXN0X3J1bl9nZW5lcmF0ZXNfYW5kX3Nob3dfcmVzdWx0c19wYWdlKToKKyAg
ICAgICAgKHRlc3RfcnVuX3dpdGhfanNvbl9zb3VyY2UpOgorICAgICAgICAodGVzdF9ydW5fd2l0
aF9tdWx0aXBsZV9yZXBvc2l0b3JpZXMpOgorCiAyMDEyLTA4LTA5ICBYaWFuemh1IFdhbmcgIDx3
YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtLUFuZHJvaWRdIFNr
aXAgbGF5b3V0IHRlc3RzIGRpcmVjdG9yaWVzIHRoYXQgYXJlIG5vdCBhcHBsaWNhYmxlCg==
</data>
<flag name="review"
          id="167595"
          type_id="1"
          status="+"
          setter="dpranke"
    />
          </attachment>
      

    </bug>

</bugzilla>