<?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>59239</bug_id>
          
          <creation_ts>2011-04-22 14:51:21 -0700</creation_ts>
          <short_desc>move times into their own json file</short_desc>
          <delta_ts>2011-04-27 14:04:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>391094</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-22 14:51:21 -0700</bug_when>
    <thetext>move times into their own json file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391103</commentid>
    <comment_count>1</comment_count>
      <attachid>90770</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-22 14:55:37 -0700</bug_when>
    <thetext>Created attachment 90770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391110</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-22 14:59:19 -0700</bug_when>
    <thetext>@abarth: you should be aware that ojan is changing the API for creating LayoutTestResults.  You already need to make the ports aware of what sort of results they&apos;re parsing from, but now you&apos;ll need to call a separate method too (which is probably for the better).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391120</commentid>
    <comment_count>3</comment_count>
      <attachid>90770</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-22 15:07:31 -0700</bug_when>
    <thetext>Comment on attachment 90770
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:202
&gt; +            current_map = trie
&gt; +            for i, part in enumerate(parts):
&gt; +                if i == (len(parts) - 1):
&gt; +                    current_map[part] = int(1000 * test_result.test_run_time)
&gt; +                    break

I&apos;m confused by this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391126</commentid>
    <comment_count>4</comment_count>
      <attachid>90770</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-22 15:12:58 -0700</bug_when>
    <thetext>Comment on attachment 90770
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:202
&gt;&gt; +                    break
&gt; 
&gt; I&apos;m confused by this function.

It breaks a filename into chunks by directory and puts the test time as a value in the lowest part. So, it&apos;s basically just heirarchical.

foo/bar/baz.html: 1ms
foo/bar/baz1.html: 3ms

becomes
foo: {
    bar: {
        baz.html: 1,
        baz1.html: 3
    }
}

So, for foo/bar/baz.html we walk from foo, to bar, then to baz.html inserting dicts as appropriate. When we hit the last item in the list (baz.html), we know we&apos;re at a leaf and we insert the time instead of inserting a new dict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392916</commentid>
    <comment_count>5</comment_count>
      <attachid>90770</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-26 16:01:44 -0700</bug_when>
    <thetext>Comment on attachment 90770
Patch

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

LGTM with the following comments.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:78
&gt; +        self.filename = name

There is a convention I&apos;ve tried to follow in other parts of the code where &quot;name&quot; refers to the test name (using unix-style forward directory separators) and &quot;path&quot; refers to the full/absolute path using host dir separators. Realizing that this wasn&apos;t what the code was doing before, it might be nice if we followed it here. Then again, given that the test name is broken up by path when it&apos;s stored, it seems less critical to me.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:208
&gt; +

I think this particular function needs some unit tests. Pesonally, I&apos;d make it a standalone function and not a classmethod as well. I&apos;d be tempted to add a docstring with your explanation, too.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:220
&gt; +        write_json(self._fs, times, file_path)

Maybe you should add the generate_times_ms_file() function now, update the code you can, and then provide a wrapper for compatibility that can be simply deleted later?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393091</commentid>
    <comment_count>6</comment_count>
      <attachid>90770</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-26 16:56:45 -0700</bug_when>
    <thetext>Comment on attachment 90770
Patch

r+ing on Dirk&apos;s behalf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393644</commentid>
    <comment_count>7</comment_count>
      <attachid>90770</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-27 10:29:03 -0700</bug_when>
    <thetext>Comment on attachment 90770
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:78

&gt; 
&gt; There is a convention I&apos;ve tried to follow in other parts of the code where &quot;name&quot; refers to the test name (using unix-style forward directory separators) and &quot;path&quot; refers to the full/absolute path using host dir separators. Realizing that this wasn&apos;t what the code was doing before, it might be nice if we followed it here. Then again, given that the test name is broken up by path when it&apos;s stored, it seems less critical to me.

I was just making the names match the names in test_results.TestResult so that test_timings_trie could take either one. I&apos;m loath to change the other TestResult class due to the number of places I&apos;d have to modify. I&apos;ll put in a FIXME in both for now?

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:208
&gt;&gt; +
&gt; 
&gt; I think this particular function needs some unit tests. Pesonally, I&apos;d make it a standalone function and not a classmethod as well. I&apos;d be tempted to add a docstring with your explanation, too.

Yeah. You&apos;re very right. Will do.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:220
&gt;&gt; +        write_json(self._fs, times, file_path)
&gt; 
&gt; Maybe you should add the generate_times_ms_file() function now, update the code you can, and then provide a wrapper for compatibility that can be simply deleted later?

Totally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393706</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-27 12:19:33 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; There is a convention I&apos;ve tried to follow in other parts of the code where &quot;name&quot; refers to the test name (using unix-style forward directory separators) and &quot;path&quot; refers to the full/absolute path using host dir separators. Realizing that this wasn&apos;t what the code was doing before, it might be nice if we followed it here. Then again, given that the test name is broken up by path when it&apos;s stored, it seems less critical to me.
&gt; 
&gt; I was just making the names match the names in test_results.TestResult so that test_timings_trie could take either one. I&apos;m loath to change the other TestResult class due to the number of places I&apos;d have to modify. I&apos;ll put in a FIXME in both for now?
&gt;

Ah. Matching the names in TestResult is definitely more important. Do as you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393792</commentid>
    <comment_count>9</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-27 14:04:35 -0700</bug_when>
    <thetext>Committed r85087: &lt;http://trac.webkit.org/changeset/85087&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90770</attachid>
            <date>2011-04-22 14:55:37 -0700</date>
            <delta_ts>2011-04-27 10:29:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59239-20110422145535.patch</filename>
            <type>text/plain</type>
            <size>16356</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ2NDAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3OTZkMDk5MmJhNWFjOTFiOGY3NDA4Y2EyN2ViMjc3N2Zm
NGIzNmY2Li5hYTgxNTJmYTg2NGFiZDA0OThhNjRkMzAyM2ZmMGFhMzczNWVhMzEzIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTEtMDQtMjIgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBtb3ZlIHRpbWVzIGludG8g
dGhlaXIgb3duIGpzb24gZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTkyMzkKKworICAgICAgICBUaGUgdGVzdCBydW50aW1lcyBhcmUgdGhlIG9u
bHkgY2FzZSB3aGVyZSB3ZSBuZWVkIGFuIGVudHJ5IGZvcgorICAgICAgICBldmVyeSB0ZXN0IHRo
YXQgd2FzIHJ1biwgaW5jbHVkaW5nIHBhc3NpbmcgdGVzdHMuIE1vdmUgdGhlbSBpbnRvCisgICAg
ICAgIHRoZWlyIG93biBqc29uIGZpbGUgc28gd2UgY2FuIHBydW5lIHRoZSBvdGhlciBqc29uIGZp
bGVzIHRvIG9ubHkKKyAgICAgICAgaW5jbHVkZSBmYWlsaW5nIHRlc3RzLgorCisgICAgICAgIFVz
ZSBhIHRyaWUtbGlrZSBkYXRhIHN0cnVjdHVyZSB0byBob2xkIHRoZSB0ZXN0cyB0byBhdm9pZCBp
bmNsdWRpbmcKKyAgICAgICAgZnVsbCB0ZXN0IHBhdGhzLiBUaGlzIGN1dHMgNTIlIG9mIHRoZSBm
aWxlc2l6ZS4gVGhlIGVuZCByZXN1bHQgaXMgfjcwMGsKKyAgICAgICAgcHJlLWd6aXAuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHk6
CisgICAgICAgIHJlc3VsdHNfZnJvbV9zdHJpbmcgZG9lc24ndCBzZWVtIHRvIGV2ZXIgYWNjZXB0
IGpzb24gYXJndW1lbnRzIHlldC4KKyAgICAgICAgU2luY2UgdGhpcyB3b3VsZCByZXF1aXJlIGEg
c2Vjb25kIGFyZ3VtZW50IGFueXdheXMsIEkganVzdCBtYWRlIGl0CisgICAgICAgIGEgbmV3IHJl
c3VsdHNfZnJvbV9qc29uLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9y
ZXN1bHRzanNvbnBhcnNlci5weToKKyAgICAgICAgTm93IHJlY3JlYXRlIHRoZSByZXN1bHRzIGZy
b20gZnVsbF9yZXN1bHRzLmpzb24gYW5kIHRpbWVzX21zLmpzb24uCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25f
cmVzdWx0c19nZW5lcmF0b3IucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9t
YW5hZ2VyLnB5OgorCiAyMDExLTA0LTIyICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMu
cHkKaW5kZXggNGE1ZWE0MjBjODQzN2FkNzA1M2RlZWRlMDA2NmYzOTUyODNlNzdiMi4uYmUzYTgx
YzE4YzcyNjYyZmIzMTNmZjhjNDUxYTk2NzdjMTg2Nzk1NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQpAQCAtMTMx
LDExICsxMzEsMTYgQEAgY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHMob2JqZWN0KToKICAgICBkZWYg
cmVzdWx0c19mcm9tX3N0cmluZyhjbHMsIHN0cmluZyk6CiAgICAgICAgIGlmIG5vdCBzdHJpbmc6
CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAjIEZvciBub3cgd2UgdHJ5IHRvIHBh
cnNlIGZpcnN0IGFzIGpzb24sIHRoZW4gYXMgcmVzdWx0cy5odG1sCi0gICAgICAgICMgZXZlbnR1
YWxseSB3ZSB3aWxsIHJlbW92ZSB0aGUgaHRtbCBmYWxsYmFjayBzdXBwb3J0LgotICAgICAgICB0
ZXN0X3Jlc3VsdHMgPSBSZXN1bHRzSlNPTlBhcnNlci5wYXJzZV9yZXN1bHRzX2pzb24oc3RyaW5n
KQorICAgICAgICB0ZXN0X3Jlc3VsdHMgPSBPUldUUmVzdWx0c0hUTUxQYXJzZXIucGFyc2VfcmVz
dWx0c19odG1sKHN0cmluZykKICAgICAgICAgaWYgbm90IHRlc3RfcmVzdWx0czoKLSAgICAgICAg
ICAgIHRlc3RfcmVzdWx0cyA9IE9SV1RSZXN1bHRzSFRNTFBhcnNlci5wYXJzZV9yZXN1bHRzX2h0
bWwoc3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIGNscyh0
ZXN0X3Jlc3VsdHMpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcmVzdWx0c19mcm9tX2pz
b24oY2xzLCByZXN1bHRzX2pzb24sIHRpbWVzX2pzb24pOgorICAgICAgICBpZiBub3Qgc3RyaW5n
OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgdGVzdF9yZXN1bHRzID0gUmVzdWx0
c0pTT05QYXJzZXIucGFyc2VfcmVzdWx0c19qc29uKHJlc3VsdHNfanNvbiwgdGltZXNfanNvbikK
ICAgICAgICAgaWYgbm90IHRlc3RfcmVzdWx0czoKICAgICAgICAgICAgIHJldHVybiBOb25lCiAg
ICAgICAgIHJldHVybiBjbHModGVzdF9yZXN1bHRzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyLnB5CmluZGV4IDczM2IzYWU4
ZjViMDYzODExODk1YmMxOTJiOWU4ODhkMjFiOTM2ODYuLmUxZjA4OTVlOTRmM2M0NmJmZTEyZjhi
ZjdiZmM0MjVmMzk1MmY2ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9yZXN1bHRzanNvbnBhcnNlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvcmVzdWx0c2pzb25wYXJzZXIucHkKQEAgLTMzLDYgKzMzLDkgQEAgZXhjZXB0
IEltcG9ydEVycm9yOgogICAgICMgcHl0aG9uIDIuNSBjb21wYXRpYmlsaXR5CiAgICAgaW1wb3J0
IHdlYmtpdHB5LnRoaXJkcGFydHkuc2ltcGxlanNvbiBhcyBqc29uCiAKK2ltcG9ydCBvcworaW1w
b3J0IHR5cGVzCisKICMgRklYTUU6IGNvbW1vbiBzaG91bGQgbmV2ZXIgaW1wb3J0IGZyb20gbmV3
LXJ1bi13ZWJraXQtdGVzdHMsIG9uZSBvZiB0aGVzZSBmaWxlcyBuZWVkcyB0byBtb3ZlLgogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0
c19nZW5lcmF0b3IsIHRlc3RfZXhwZWN0YXRpb25zLCB0ZXN0X3Jlc3VsdHMsIHRlc3RfZmFpbHVy
ZXMKIApAQCAtNDEsMTIgKzQ0LDEzIEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91
dF9wYWNrYWdlIGltcG9ydCBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLCB0ZXN0X2V4CiAjIEV2ZW50
dWFsbHkgdGhlIC5qc29uIHNob3VsZCBqdXN0IHNlcmlhbGl6ZSB0aGUgVGVzdEZhaWx1cmUgb2Jq
ZWN0cwogIyBkaXJlY3RseSBhbmQgd2Ugd29uJ3QgbmVlZCB0aGlzLgogY2xhc3MgSlNPTlRlc3RS
ZXN1bHQob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9uYW1lLCByZXN1bHRf
ZGljdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfbmFtZSwgcmVzdWx0X2RpY3QsIHRp
bWVfbXMpOgogICAgICAgICBzZWxmLl90ZXN0X25hbWUgPSB0ZXN0X25hbWUKICAgICAgICAgc2Vs
Zi5fcmVzdWx0X2RpY3QgPSByZXN1bHRfZGljdAorICAgICAgICBzZWxmLl90aW1lX21zID0gdGlt
ZV9tcwogCiAgICAgZGVmIHRlc3RfcnVudGltZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X3Jlc3VsdF9kaWN0LmdldCgndGltZV9tcycpCisgICAgICAgIHJldHVybiBzZWxmLl90aW1lX21z
CiAKICAgICBkZWYgZGlkX3Bhc3Moc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9hY3R1YWxf
YXNfZXhwZWN0YXRpb24oKSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTCkBAIC05MSwxNCArOTUs
MzEgQEAgY2xhc3MgUmVzdWx0c0pTT05QYXJzZXIob2JqZWN0KToKICAgICBUaGlzIHdpbGwgbm90
IHBhcnNlIHRoZSBvbGQgcmVzdWx0cy5qc29uIGZvcm1hdC4iIiIKIAogICAgIEBjbGFzc21ldGhv
ZAotICAgIGRlZiBwYXJzZV9yZXN1bHRzX2pzb24oY2xzLCBqc29uX3N0cmluZyk6CisgICAgZGVm
IHBhcnNlX3Jlc3VsdHNfanNvbihjbHMsIGpzb25fc3RyaW5nLCB0aW1lc19qc29uX3N0cmluZyk6
CiAgICAgICAgIGlmIG5vdCBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLmhhc19qc29uX3dyYXBwZXIo
anNvbl9zdHJpbmcpOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBjb250ZW50
X3N0cmluZyA9IGpzb25fcmVzdWx0c19nZW5lcmF0b3Iuc3RyaXBfanNvbl93cmFwcGVyKGpzb25f
c3RyaW5nKQogICAgICAgICBqc29uX2RpY3QgPSBqc29uLmxvYWRzKGNvbnRlbnRfc3RyaW5nKQog
Ci0gICAgICAgIGpzb25fcmVzdWx0cyA9IFtKU09OVGVzdFJlc3VsdCh0ZXN0X25hbWUsIHJlc3Vs
dHNfZGljdCkgZm9yIHRlc3RfbmFtZSwgcmVzdWx0c19kaWN0IGluIGpzb25fZGljdFsndGVzdHMn
XS5pdGVtcygpXQorICAgICAgICB0aW1lc19jb250ZW50X3N0cmluZyA9IGpzb25fcmVzdWx0c19n
ZW5lcmF0b3Iuc3RyaXBfanNvbl93cmFwcGVyKHRpbWVzX2pzb25fc3RyaW5nKQorICAgICAgICB0
aW1lc19qc29uX2RpY3QgPSBqc29uLmxvYWRzKHRpbWVzX2NvbnRlbnRfc3RyaW5nKQorCisgICAg
ICAgIGRlZiBnZXRfdGltZSh0ZXN0X25hbWUpOgorICAgICAgICAgICAgcGFydHMgPSB0ZXN0X25h
bWUuc3BsaXQob3Muc2VwKQorICAgICAgICAgICAgY3VycmVudF9ub2RlID0gdGltZXNfanNvbl9k
aWN0CisKKyAgICAgICAgICAgIGZvciBwYXJ0IGluIHBhcnRzOgorICAgICAgICAgICAgICAgIGlm
IHBhcnQgbm90IGluIGN1cnJlbnRfbm9kZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAK
KyAgICAgICAgICAgICAgICBjdXJyZW50X25vZGUgPSBjdXJyZW50X25vZGVbcGFydF0KKyAgICAg
ICAgICAgICAgICBpZiBpc2luc3RhbmNlKGN1cnJlbnRfbm9kZSwgdHlwZXMuSW50VHlwZSk6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50X25vZGUKKworICAgICAgICAgICAgbG9n
KCJJbnZhbGlkIHRpbWUgZm9yIHRlc3Q6ICVzIiArIHRlc3RfbmFtZSkKKyAgICAgICAgICAgIHJl
dHVybiAwCisKKyAgICAgICAganNvbl9yZXN1bHRzID0gW0pTT05UZXN0UmVzdWx0KHRlc3RfbmFt
ZSwgcmVzdWx0c19kaWN0LCBnZXRfdGltZSh0ZXN0X25hbWUpKSBmb3IgdGVzdF9uYW1lLCByZXN1
bHRzX2RpY3QgaW4ganNvbl9kaWN0Wyd0ZXN0cyddLml0ZW1zKCldCiAgICAgICAgICMgRklYTUU6
IFdoYXQncyB0aGUgc2hvcnQgc2V4eSBweXRob24gd2F5IHRvIGZpbHRlciBOb25lPwogICAgICAg
ICAjIEkgd291bGQgdXNlIFtmb28uYmFyKCkgZm9yIGZvbyBpbiBmb29zIGlmIGZvby5iYXIoKV0g
YnV0IGJhcigpIGlzIGV4cGVuc2l2ZS4KICAgICAgICAgbm9uX3Bhc3NpbmdfcmVzdWx0cyA9IFty
ZXN1bHQudGVzdF9yZXN1bHQoKSBmb3IgcmVzdWx0IGluIGpzb25fcmVzdWx0cyBpZiBub3QgcmVz
dWx0LmRpZF9wYXNzKCldCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvcmVzdWx0c2pzb25wYXJzZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvcmVzdWx0c2pzb25wYXJzZXJfdW5pdHRlc3QucHkKaW5kZXggOTk1YTc1
NmQ1NTI4ZmY0YzlmYmI3NmU2YTYwOWNiYThhZDYyNGQ4OC4uMWFhNDMxNjc4OWZmMDM1ZmY0YmI4
ZTdjZmI1YTAxYWVlOGU4ZTRhYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L3Jlc3VsdHNqc29ucGFyc2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9yZXN1bHRzanNvbnBhcnNlcl91bml0dGVzdC5weQpAQCAt
MzksMTUgKzM5LDEyIEBAIGNsYXNzIFJlc3VsdHNKU09OUGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgInRlc3RzIjogewogICAgICAgICAiZmFzdFwvZG9tXC9wcm90b3R5cGUtaW5o
ZXJpdGFuY2UuaHRtbCI6IHsKICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAg
ICAgICAgICJ0aW1lX21zIjogMjI1LAotICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIiwKLSAg
ICAgICAgICAgICJoYXNfc3RkZXJyIjogZmFsc2UKKyAgICAgICAgICAgICJhY3R1YWwiOiAiVEVY
VCIKICAgICAgICAgfSwKICAgICAgICAgInN2Z1wvZHluYW1pYy11cGRhdGVzXC9TVkdGRURyb3BT
aGFkb3dFbGVtZW50LWRvbS1zdGREZXZpYXRpb24tYXR0ci5odG1sIjogewogICAgICAgICAgICAg
ImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgInRpbWVfbXMiOiAxMTAsCiAgICAgICAg
ICAgICAiYWN0dWFsIjogIklNQUdFIiwKLSAgICAgICAgICAgICJoYXNfc3RkZXJyIjogZmFsc2UK
KyAgICAgICAgICAgICJoYXNfc3RkZXJyIjogdHJ1ZQogICAgICAgICB9CiAgICAgfSwKICAgICAi
c2tpcHBlZCI6IDQ1MCwKQEAgLTYyLDEwICs1OSwyMyBAQCBjbGFzcyBSZXN1bHRzSlNPTlBhcnNl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICJoYXNfd2RpZmYiOiBmYWxzZQogfSk7IiIi
CiAKKyAgICBfZXhhbXBsZV90aW1lc19tc19qc29uID0gIiIiQUREX1JFU1VMVFMoeworICAgICJm
YXN0IjogeworICAgICAgICAiZG9tIjogeworICAgICAgICAgICAgInByb3RvdHlwZS1pbmhlcml0
YW5jZS5odG1sIjogMjI1CisgICAgICAgIH0KKyAgICB9LAorICAgICJzdmciOiB7CisgICAgICAg
ICJkeW5hbWljLXVwZGF0ZXMiOiB7CisgICAgICAgICAgICAiU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dC1kb20tc3RkRGV2aWF0aW9uLWF0dHIuaHRtbCI6IDExMAorICAgICAgICB9CisgICAgfQorfSk7
IiIiCisKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKICAgICAgICAgZXhwZWN0ZWRfcmVzdWx0
cyA9IFsKICAgICAgICAgICAgIHRlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KCJzdmcvZHluYW1pYy11
cGRhdGVzL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQtZG9tLXN0ZERldmlhdGlvbi1hdHRyLmh0bWwi
LCBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2goKV0sIDExMCksCiAgICAg
ICAgICAgICB0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCgiZmFzdC9kb20vcHJvdG90eXBlLWluaGVy
aXRhbmNlLmh0bWwiLCBbdGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21hdGNoKCldLCAyMjUp
LAogICAgICAgICBdCi0gICAgICAgIHJlc3VsdHMgPSBSZXN1bHRzSlNPTlBhcnNlci5wYXJzZV9y
ZXN1bHRzX2pzb24oc2VsZi5fZXhhbXBsZV91bmV4cGVjdGVkX3Jlc3VsdHNfanNvbikKKyAgICAg
ICAgcmVzdWx0cyA9IFJlc3VsdHNKU09OUGFyc2VyLnBhcnNlX3Jlc3VsdHNfanNvbihzZWxmLl9l
eGFtcGxlX3VuZXhwZWN0ZWRfcmVzdWx0c19qc29uLCBzZWxmLl9leGFtcGxlX3RpbWVzX21zX2pz
b24pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfcmVzdWx0cywgcmVzdWx0cykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3IucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLnB5Cmlu
ZGV4IDRjZTNmMWRjZTc3NzRlOGE1ZjVhMzNhMzYyYmY5YWRmNjdmZTI4MzYuLjM1NjJmNWRhZDNh
MWY3M2FiOGNiMzY3NGYwZWRkODg0NTZiNTk1NTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0
b3IucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvci5weQpAQCAtMjcsNiArMjcsNyBAQAogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2Vzcwog
aW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKQEAgLTc0LDkgKzc1LDkgQEAgY2xhc3MgVGVzdFJlc3Vs
dChvYmplY3QpOgogICAgIChOT05FLCBGQUlMUywgRkxBS1ksIERJU0FCTEVEKSA9IHJhbmdlKDQp
CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZmFpbGVkPUZhbHNlLCBlbGFwc2VkX3Rp
bWU9MCk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5maWxlbmFtZSA9
IG5hbWUKICAgICAgICAgc2VsZi5mYWlsZWQgPSBmYWlsZWQKLSAgICAgICAgc2VsZi50aW1lID0g
ZWxhcHNlZF90aW1lCisgICAgICAgIHNlbGYudGVzdF9ydW5fdGltZSA9IGVsYXBzZWRfdGltZQog
CiAgICAgICAgIHRlc3RfbmFtZSA9IG5hbWUKICAgICAgICAgdHJ5OgpAQCAtMTMxLDcgKzEzMiw3
IEBAIGNsYXNzIEpTT05SZXN1bHRzR2VuZXJhdG9yQmFzZShvYmplY3QpOgogICAgIEFMTF9GSVhB
QkxFX0NPVU5UID0gImFsbEZpeGFibGVDb3VudCIKIAogICAgIFJFU1VMVFNfRklMRU5BTUUgPSAi
cmVzdWx0cy5qc29uIgotICAgIEZVTExfUkVTVUxUU19GSUxFTkFNRSA9ICJmdWxsX3Jlc3VsdHMu
anNvbiIKKyAgICBUSU1FU19NU19GSUxFTkFNRSA9ICJ0aW1lc19tcy5qc29uIgogICAgIElOQ1JF
TUVOVEFMX1JFU1VMVFNfRklMRU5BTUUgPSAiaW5jcmVtZW50YWxfcmVzdWx0cy5qc29uIgogCiAg
ICAgVVJMX0ZPUl9URVNUX0xJU1RfSlNPTiA9IFwKQEAgLTE4OCw2ICsxODksMjMgQEAgY2xhc3Mg
SlNPTlJlc3VsdHNHZW5lcmF0b3JCYXNlKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5fYXJjaGl2
ZWRfcmVzdWx0cyA9IE5vbmUKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZXN0X3RpbWlu
Z3NfdHJpZShjbHMsIHBvcnQsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKToKKyAgICAgICAgdHJp
ZSA9IHt9CisgICAgICAgIGZvciB0ZXN0X3Jlc3VsdCBpbiBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
czoKKyAgICAgICAgICAgIHRlc3QgPSBwb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdF9y
ZXN1bHQuZmlsZW5hbWUpCisgICAgICAgICAgICBwYXJ0cyA9IHRlc3Quc3BsaXQob3Muc2VwKQor
ICAgICAgICAgICAgY3VycmVudF9tYXAgPSB0cmllCisgICAgICAgICAgICBmb3IgaSwgcGFydCBp
biBlbnVtZXJhdGUocGFydHMpOgorICAgICAgICAgICAgICAgIGlmIGkgPT0gKGxlbihwYXJ0cykg
LSAxKToKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudF9tYXBbcGFydF0gPSBpbnQoMTAwMCAq
IHRlc3RfcmVzdWx0LnRlc3RfcnVuX3RpbWUpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisK
KyAgICAgICAgICAgICAgICBpZiBwYXJ0IG5vdCBpbiBjdXJyZW50X21hcDoKKyAgICAgICAgICAg
ICAgICAgICAgY3VycmVudF9tYXBbcGFydF0gPSB7fQorICAgICAgICAgICAgICAgIGN1cnJlbnRf
bWFwID0gY3VycmVudF9tYXBbcGFydF0KKyAgICAgICAgcmV0dXJuIHRyaWUKKwogICAgIGRlZiBn
ZW5lcmF0ZV9qc29uX291dHB1dChzZWxmKToKICAgICAgICAganNvbiA9IHNlbGYuZ2V0X2pzb24o
KQogICAgICAgICBpZiBqc29uOgpAQCAtMTk1LDIyICsyMTMsMTEgQEAgY2xhc3MgSlNPTlJlc3Vs
dHNHZW5lcmF0b3JCYXNlKG9iamVjdCk6CiAgICAgICAgICAgICB3cml0ZV9qc29uKHNlbGYuX2Zz
LCBqc29uLCBmaWxlX3BhdGgpCiAKICAgICBkZWYgZ2VuZXJhdGVfZnVsbF9yZXN1bHRzX2ZpbGUo
c2VsZik6Ci0gICAgICAgICMgVXNlIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyB0aGUgY29tcGFjdGVk
IHZlcnNpb24gb2YgVGVzdFJ1bm5lci5zdW1tYXJpemVfcmVzdWx0cy4KLSAgICAgICAgIyBGb3Ig
bm93IHdlIG9ubHkgaW5jbHVkZSB0aGUgdGltZXMgYXMgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHRy
ZWVtYXBzIGFuZAotICAgICAgICAjIGV4cGVjdGVkL2FjdHVhbCBkb24ndCBtYWtlIHNlbnNlIGZv
ciBndGVzdHMuCi0gICAgICAgIHJlc3VsdHMgPSB7fQotICAgICAgICByZXN1bHRzWyd2ZXJzaW9u
J10gPSAxCi0KLSAgICAgICAgdGVzdHMgPSB7fQotCi0gICAgICAgIGZvciB0ZXN0IGluIHNlbGYu
X3Rlc3RfcmVzdWx0c19tYXA6Ci0gICAgICAgICAgICB0aW1lX3NlY29uZHMgPSBzZWxmLl90ZXN0
X3Jlc3VsdHNfbWFwW3Rlc3RdLnRpbWUKLSAgICAgICAgICAgIHRlc3RzW3Rlc3RdID0ge30KLSAg
ICAgICAgICAgIHRlc3RzW3Rlc3RdWyd0aW1lX21zJ10gPSBpbnQoMTAwMCAqIHRpbWVfc2Vjb25k
cykKLQotICAgICAgICByZXN1bHRzWyd0ZXN0cyddID0gdGVzdHMKLSAgICAgICAgZmlsZV9wYXRo
ID0gc2VsZi5fZnMuam9pbihzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgc2VsZi5GVUxMX1JFU1VM
VFNfRklMRU5BTUUpCi0gICAgICAgIHdyaXRlX2pzb24oc2VsZi5fZnMsIHJlc3VsdHMsIGZpbGVf
cGF0aCkKKyAgICAgICAgIyBGSVhNRTogcmVuYW1lIHRvIGdlbmVyYXRlX3RpbWVzX21zX2ZpbGUu
IFRoaXMgbmVlZHMgdG8gYmUgY29vcmRpbmF0ZWQgd2l0aAorICAgICAgICAjIGNoYW5naW5nIHRo
ZSBjYWxscyB0byB0aGlzIG9uIHRoZSBjaHJvbWl1bSBidWlsZCBzbGF2ZXMuCisgICAgICAgIHRp
bWVzID0gc2VsZi50ZXN0X3RpbWluZ3NfdHJpZShzZWxmLl9wb3J0LCBzZWxmLl90ZXN0X3Jlc3Vs
dHNfbWFwLnZhbHVlcygpKQorICAgICAgICBmaWxlX3BhdGggPSBzZWxmLl9mcy5qb2luKHNlbGYu
X3Jlc3VsdHNfZGlyZWN0b3J5LCBzZWxmLlRJTUVTX01TX0ZJTEVOQU1FKQorICAgICAgICB3cml0
ZV9qc29uKHNlbGYuX2ZzLCB0aW1lcywgZmlsZV9wYXRoKQogCiAgICAgZGVmIGdldF9qc29uKHNl
bGYpOgogICAgICAgICAiIiJHZXRzIHRoZSByZXN1bHRzIGZvciB0aGUgcmVzdWx0cy5qc29uIGZp
bGUuIiIiCkBAIC0yOTEsMTIgKzI5OCwxMiBAQCBjbGFzcyBKU09OUmVzdWx0c0dlbmVyYXRvckJh
c2Uob2JqZWN0KToKICAgICAgICAgZm9yIHRoZSBnaXZlbiB0ZXN0X25hbWUuIiIiCiAgICAgICAg
IGlmIHRlc3RfbmFtZSBpbiBzZWxmLl90ZXN0X3Jlc3VsdHNfbWFwOgogICAgICAgICAgICAgIyBG
bG9vciBmb3Igbm93IHRvIGdldCB0aW1lIGluIHNlY29uZHMuCi0gICAgICAgICAgICByZXR1cm4g
aW50KHNlbGYuX3Rlc3RfcmVzdWx0c19tYXBbdGVzdF9uYW1lXS50aW1lKQorICAgICAgICAgICAg
cmV0dXJuIGludChzZWxmLl90ZXN0X3Jlc3VsdHNfbWFwW3Rlc3RfbmFtZV0udGVzdF9ydW5fdGlt
ZSkKICAgICAgICAgcmV0dXJuIDAKIAogICAgIGRlZiBfZ2V0X2ZhaWxlZF90ZXN0X25hbWVzKHNl
bGYpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc2V0IG9mIGZhaWxlZCB0ZXN0IG5hbWVzLiIiIgot
ICAgICAgICByZXR1cm4gc2V0KFtyLm5hbWUgZm9yIHIgaW4gc2VsZi5fdGVzdF9yZXN1bHRzIGlm
IHIuZmFpbGVkXSkKKyAgICAgICAgcmV0dXJuIHNldChbci5maWxlbmFtZSBmb3IgciBpbiBzZWxm
Ll90ZXN0X3Jlc3VsdHMgaWYgci5mYWlsZWRdKQogCiAgICAgZGVmIF9nZXRfbW9kaWZpZXJfY2hh
cihzZWxmLCB0ZXN0X25hbWUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc2luZ2xlIGNoYXIgKGUu
Zy4gU0tJUF9SRVNVTFQsIEZBSUxfUkVTVUxULApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRv
cl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3JfdW5pdHRlc3QucHkKaW5kZXggOWQ3ODZk
OWZkNjc2Zjk5NjY3ZjE3NjIwNTgxZmFmNTYzMzRlODliYi4uZTA0Zjc4YTY5NmYyYzE5ZTlmMDcz
Y2QwNGE4NTU3NmMwOGMyODljMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVz
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yX3VuaXR0ZXN0LnB5CkBAIC04NCw2ICs4NCw3IEBA
IGNsYXNzIEpTT05HZW5lcmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAg
ICAgICBlbGFwc2VkX3RpbWU9dGVzdF90aW1pbmdzW3Rlc3RdKQogCiAgICAgICAgIHBvcnQgPSBN
b2NrKCkKKyAgICAgICAgcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lID0gbGFtYmRhIGZpbGVu
YW1lOiBmaWxlbmFtZQogICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gZmlsZXN5c3RlbV9tb2Nr
Lk1vY2tGaWxlU3lzdGVtKCkKICAgICAgICAgZ2VuZXJhdG9yID0ganNvbl9yZXN1bHRzX2dlbmVy
YXRvci5KU09OUmVzdWx0c0dlbmVyYXRvckJhc2UocG9ydCwKICAgICAgICAgICAgIHNlbGYuYnVp
bGRlcl9uYW1lLCBzZWxmLmJ1aWxkX25hbWUsIHNlbGYuYnVpbGRfbnVtYmVyLApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL21hbmFnZXIucHkKaW5kZXggYmQ1MTJmMjQ4MWRlZWM2YTAwMmQyYWFhN2I4MGZjMDc4M2Ix
ZTBkYi4uZjZmODEyNThiZGJiNTc3NjVjNWJkNTJlODA4MTBhMmI0ZjdhYjI4MiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS9tYW5hZ2VyLnB5CkBAIC04NSwxOCArODUsMTYgQEAgZGVmIHN1bW1hcml6ZV9yZXN1
bHRzKHBvcnRfb2JqLCBleHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1tYXJ5
LCB0ZXMKICAgICBSZXR1cm5zOgogICAgICAgICBBIGRpY3Rpb25hcnkgY29udGFpbmluZyBhIHN1
bW1hcnkgb2YgdGhlIHVuZXhwZWN0ZWQgcmVzdWx0cyBmcm9tIHRoZQogICAgICAgICBydW4sIHdp
dGggdGhlIGZvbGxvd2luZyBmaWVsZHM6Ci0gICAgICAgICd2ZXJzaW9uJzogYSB2ZXJzaW9uIGlu
ZGljYXRvciAoMSBpbiB0aGlzIHZlcnNpb24pCisgICAgICAgICd2ZXJzaW9uJzogYSB2ZXJzaW9u
IGluZGljYXRvcgogICAgICAgICAnZml4YWJsZSc6ICMgb2YgZml4YWJsZSB0ZXN0cyAoTk9XIC0g
UEFTUykKICAgICAgICAgJ3NraXBwZWQnOiAjIG9mIHNraXBwZWQgdGVzdHMgKE5PVyAmIFNLSVBQ
RUQpCiAgICAgICAgICdudW1fcmVncmVzc2lvbnMnOiAjIG9mIG5vbi1mbGFreSBmYWlsdXJlcwog
ICAgICAgICAnbnVtX2ZsYWt5JzogIyBvZiBmbGFreSBmYWlsdXJlcwogICAgICAgICAnbnVtX3Bh
c3Nlcyc6ICMgb2YgdW5leHBlY3RlZCBwYXNzZXMKLSAgICAgICAgJ3Rlc3RzJzogYSBkaWN0IG9m
IHRlc3RzIC0+IHsnZXhwZWN0ZWQnOiAnLi4uJywgJ2FjdHVhbCc6ICcuLi4nLCAndGltZV9tcyc6
IC4uLn0KKyAgICAgICAgJ3Rlc3RzJzogYSBkaWN0IG9mIHRlc3RzIC0+IHsnZXhwZWN0ZWQnOiAn
Li4uJywgJ2FjdHVhbCc6ICcuLi4nfQogICAgICIiIgogICAgIHJlc3VsdHMgPSB7fQotICAgIHJl
c3VsdHNbJ3ZlcnNpb24nXSA9IDEKLQotICAgIHRlc3RfdGltaW5nc19tYXAgPSBkaWN0KCh0ZXN0
X3Jlc3VsdC5maWxlbmFtZSwgdGVzdF9yZXN1bHQudGVzdF9ydW5fdGltZSkgZm9yIHRlc3RfcmVz
dWx0IGluIHRlc3RfdGltaW5ncykKKyAgICByZXN1bHRzWyd2ZXJzaW9uJ10gPSAyCiAKICAgICB0
YmUgPSByZXN1bHRfc3VtbWFyeS50ZXN0c19ieV9leHBlY3RhdGlvbgogICAgIHRidCA9IHJlc3Vs
dF9zdW1tYXJ5LnRlc3RzX2J5X3RpbWVsaW5lCkBAIC0xMjcsNiArMTI1LDcgQEAgZGVmIHN1bW1h
cml6ZV9yZXN1bHRzKHBvcnRfb2JqLCBleHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRy
eV9zdW1tYXJ5LCB0ZXMKICAgICAgICAgcmVzdWx0X3R5cGUgPSByZXN1bHQudHlwZQogICAgICAg
ICBhY3R1YWwgPSBba2V5d29yZHNbcmVzdWx0X3R5cGVdXQogCisgICAgICAgICMgRklYTUU6IG9u
bHkgaW5jbHVkZSBwYXNzaW5nIHRlc3RzIHRoYXQgaGF2ZSBzdGRlcnIgb3V0cHV0LgogICAgICAg
ICBpZiByZXN1bHRfdHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTOgogICAgICAgICAgICAg
bnVtX3Bhc3NlcyArPSAxCiAgICAgICAgIGVsaWYgcmVzdWx0X3R5cGUgPT0gdGVzdF9leHBlY3Rh
dGlvbnMuQ1JBU0g6CkBAIC0xNDgsNyArMTQ3LDggQEAgZGVmIHN1bW1hcml6ZV9yZXN1bHRzKHBv
cnRfb2JqLCBleHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1tYXJ5LCB0ZXMK
ICAgICAgICAgdGVzdHNbdGVzdF1bJ2FjdHVhbCddID0gIiAiLmpvaW4oYWN0dWFsKQogICAgICAg
ICAjIEZJWE1FOiBTZXQgdGhpcyBjb3JyZWN0bHkgb25jZSBodHRwczovL3dlYmtpdC5vcmcvYi8z
NzczOSBpcyBmaXhlZAogICAgICAgICAjIGFuZCBvbmx5IHNldCBpdCBpZiB0aGVyZSBhY3R1YWxs
eSBpcyBzdGRlcnIgZGF0YS4KLSAgICAgICAgdGVzdHNbdGVzdF1bJ2hhc19zdGRlcnInXSA9IEZh
bHNlCisgICAgICAgIGlmIEZhbHNlOgorICAgICAgICAgICAgdGVzdHNbdGVzdF1bJ2hhc19zdGRl
cnInXSA9IFRydWUKIAogICAgICAgICBmYWlsdXJlX3R5cGVzID0gW3R5cGUoZikgZm9yIGYgaW4g
cmVzdWx0LmZhaWx1cmVzXQogICAgICAgICBpZiB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5n
QXVkaW8gaW4gZmFpbHVyZV90eXBlczoKQEAgLTE3MCwxMCArMTcwLDYgQEAgZGVmIHN1bW1hcml6
ZV9yZXN1bHRzKHBvcnRfb2JqLCBleHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9z
dW1tYXJ5LCB0ZXMKICAgICAgICAgaWYgdGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdl
IGluIGZhaWx1cmVfdHlwZXMgb3IgdGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlSGFz
aCBpbiBmYWlsdXJlX3R5cGVzOgogICAgICAgICAgICAgdGVzdHNbdGVzdF1bJ2lzX21pc3Npbmdf
aW1hZ2UnXSA9IFRydWUKIAotICAgICAgICBpZiBmaWxlbmFtZSBpbiB0ZXN0X3RpbWluZ3NfbWFw
OgotICAgICAgICAgICAgdGltZV9zZWNvbmRzID0gdGVzdF90aW1pbmdzX21hcFtmaWxlbmFtZV0K
LSAgICAgICAgICAgIHRlc3RzW3Rlc3RdWyd0aW1lX21zJ10gPSBpbnQoMTAwMCAqIHRpbWVfc2Vj
b25kcykKLQogICAgIHJlc3VsdHNbJ3Rlc3RzJ10gPSB0ZXN0cwogICAgIHJlc3VsdHNbJ251bV9w
YXNzZXMnXSA9IG51bV9wYXNzZXMKICAgICByZXN1bHRzWydudW1fZmxha3knXSA9IG51bV9mbGFr
eQpAQCAtOTA5LDYgKzkwNSwxMCBAQCBjbGFzcyBNYW5hZ2VyOgogICAgICAgICAiIiIKICAgICAg
ICAgX2xvZy5kZWJ1ZygiV3JpdGluZyBKU09OIGZpbGVzIGluICVzLiIgJSBzZWxmLl9yZXN1bHRz
X2RpcmVjdG9yeSkKIAorICAgICAgICB0aW1lc190cmllID0ganNvbl9sYXlvdXRfcmVzdWx0c19n
ZW5lcmF0b3IuSlNPTkxheW91dFJlc3VsdHNHZW5lcmF0b3IudGVzdF90aW1pbmdzX3RyaWUoc2Vs
Zi5fcG9ydCwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpCisgICAgICAgIHRpbWVzX2pzb25fcGF0
aCA9IHNlbGYuX2ZzLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksICJ0aW1lc19tcy5qc29u
IikKKyAgICAgICAganNvbl9yZXN1bHRzX2dlbmVyYXRvci53cml0ZV9qc29uKHNlbGYuX2ZzLCB0
aW1lc190cmllLCB0aW1lc19qc29uX3BhdGgpCisKICAgICAgICAgdW5leHBlY3RlZF9qc29uX3Bh
dGggPSBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAidW5leHBlY3RlZF9y
ZXN1bHRzLmpzb24iKQogICAgICAgICBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLndyaXRlX2pzb24o
c2VsZi5fZnMsIHVuZXhwZWN0ZWRfcmVzdWx0cywgdW5leHBlY3RlZF9qc29uX3BhdGgpCiAK
</data>
<flag name="review"
          id="83540"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>