<?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>237303</bug_id>
          
          <creation_ts>2022-02-28 19:04:59 -0800</creation_ts>
          <short_desc>Fix Speedometer&apos;s setTimeout throttling issue</short_desc>
          <delta_ts>2022-03-01 11:38:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jbedard</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1846877</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-28 19:04:59 -0800</bug_when>
    <thetext>Fix Speedometer&apos;s setTimeout throttling issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846879</commentid>
    <comment_count>1</comment_count>
      <attachid>453463</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-28 19:09:37 -0800</bug_when>
    <thetext>Created attachment 453463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846880</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-28 19:09:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/89444976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846883</commentid>
    <comment_count>3</comment_count>
      <attachid>453463</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-28 19:14:38 -0800</bug_when>
    <thetext>Comment on attachment 453463
Patch

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

&gt; PerformanceTests/Speedometer/resources/benchmark-runner.js:149
&gt; +        window.requestAnimationFrame(function () {

Is this part of the change really needed? This part would impact the score and it is therefore unfortunate. I would have hoped that the outer requestAnimationFrame would have been enough to avoid reaching the max nesting limit and cause throttling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846886</commentid>
    <comment_count>4</comment_count>
      <attachid>453463</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-28 19:20:05 -0800</bug_when>
    <thetext>Comment on attachment 453463
Patch

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

&gt;&gt; PerformanceTests/Speedometer/resources/benchmark-runner.js:149
&gt;&gt; +        window.requestAnimationFrame(function () {
&gt; 
&gt; Is this part of the change really needed? This part would impact the score and it is therefore unfortunate. I would have hoped that the outer requestAnimationFrame would have been enough to avoid reaching the max nesting limit and cause throttling.

This is necessary to reset nesting level, and
1. This affects on the score, but just because we reset nesting level, and that&apos;s the intent of this change.
2. window.requestAnimationFrame itself is not included in the measurement since it is done outside of measurement (see sync-time duration and async-time duration. this call is not included).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846887</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-28 19:20:41 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #4)
&gt; Comment on attachment 453463 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=453463&amp;action=review
&gt; 
&gt; &gt;&gt; PerformanceTests/Speedometer/resources/benchmark-runner.js:149
&gt; &gt;&gt; +        window.requestAnimationFrame(function () {
&gt; &gt; 
&gt; &gt; Is this part of the change really needed? This part would impact the score and it is therefore unfortunate. I would have hoped that the outer requestAnimationFrame would have been enough to avoid reaching the max nesting limit and cause throttling.
&gt; 
&gt; This is necessary to reset nesting level, and
&gt; 1. This affects on the score, but just because we reset nesting level, and
&gt; that&apos;s the intent of this change.
&gt; 2. window.requestAnimationFrame itself is not included in the measurement
&gt; since it is done outside of measurement (see sync-time duration and
&gt; async-time duration. this call is not included).

sync-time region and async-time region</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846888</commentid>
    <comment_count>6</comment_count>
      <attachid>453463</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-28 19:21:23 -0800</bug_when>
    <thetext>Comment on attachment 453463
Patch

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

&gt; PerformanceTests/Speedometer/resources/benchmark-runner.js:146
&gt;          var endTime = now();

async test&apos;s measurement is finished at this point. So, window.requestAnimationFrame is unrelated to the measurement except for reseting the nesting level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847077</commentid>
    <comment_count>7</comment_count>
      <attachid>453463</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-01 10:07:56 -0800</bug_when>
    <thetext>Comment on attachment 453463
Patch

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

r=me

I think Yusuke resolved Chris&apos;s comment; please correct me if not.

&gt; PerformanceTests/Speedometer/resources/benchmark-runner.js:57
&gt; +        if (element) {
&gt; +            window.requestAnimationFrame(function () {
&gt; +                return promise.resolve(element);
&gt; +            });
&gt; +            return;
&gt; +        }

The change to _runTest (below) ensures that each test ends with zero timer nesting level.

I think the purpose of this change is to ensure that each test also begins with zero timer nesting level?

Seems like a reasonable solution. But I&apos;m curious, to help with my own mental model: Did you discover a specific case where just one of these changes or the other alone was insufficient?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847078</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-01 10:08:49 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #7)
&gt; Comment on attachment 453463 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=453463&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; I think Yusuke resolved Chris&apos;s comment; please correct me if not.

Yes. All good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847111</commentid>
    <comment_count>9</comment_count>
      <attachid>453463</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-01 11:21:07 -0800</bug_when>
    <thetext>Comment on attachment 453463
Patch

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

Thanks!

&gt;&gt; PerformanceTests/Speedometer/resources/benchmark-runner.js:57
&gt;&gt; +        }
&gt; 
&gt; The change to _runTest (below) ensures that each test ends with zero timer nesting level.
&gt; 
&gt; I think the purpose of this change is to ensure that each test also begins with zero timer nesting level?
&gt; 
&gt; Seems like a reasonable solution. But I&apos;m curious, to help with my own mental model: Did you discover a specific case where just one of these changes or the other alone was insufficient?

I think waitForElement can be used because it is not inside _runTest (this is helper function waitForElement), so even if it is not used (I think currently it is always used), this change can ensure that setTimeout of this function will not affect the following test suite&apos;s run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847120</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-01 11:38:40 -0800</bug_when>
    <thetext>Committed r290664 (247936@trunk): &lt;https://commits.webkit.org/247936@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453463</attachid>
            <date>2022-02-28 19:09:37 -0800</date>
            <delta_ts>2022-03-01 10:07:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237303-20220228190936.patch</filename>
            <type>text/plain</type>
            <size>11988</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjEyCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMzMDY0MjZjMTQ1
N2ZjNmY1NjMyNDVlNzZiNjk0NzhhMTVjNjM5ZTEuLmUzMWRmMDM2YTFkZDRmMDBjMDFkNjM5Y2Rm
OGM2NzhlYjkyMjNhMzkgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDIt
MjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggU3Bl
ZWRvbWV0ZXIncyBzZXRUaW1lb3V0IHRocm90dGxpbmcgaXNzdWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzMwMworICAgICAgICByZGFyOi8vODk0
NDQ5NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
cGVlZG9tZXRlciBpcyBkcml2aW5nIGVhY2ggdGVzdCB2aWEgc2V0VGltZW91dC4gQmVjYXVzZSB3
ZSBhcmUgdXNpbmcgc2V0VGltZW91dCB0bworICAgICAgICBtZWFzdXJlIGFzeW5jIHRpbWUgaW4g
ZWFjaCBzdWJ0ZXN0IG9mIFNwZWVkb21ldGVyLCBvdXIgbWVhc3VyZW1lbnQgaW5jbHVkZWQgNG1z
CisgICAgICAgIHRocm90dGxlIGludHJvZHVjZWQgZHVlIHRvIG5lc3RlZCBzZXRUaW1lb3V0LiBU
aGlzIGlzIGhhcHBlbmluZyBpbiB0aGUgdGVzdAorICAgICAgICBoYXJuZXNzIChub3QgdGVzdCBp
dHNlbGYpLCBhbmQgdGhlIGludGVudGlvbiBvZiB0aGlzIHRlc3QgaGFybmVzcyBpcyBub3QgbWVh
c3VyaW5nCisgICAgICAgIHRoZSB0aHJvdHRsZSB0aW1lLiBJbiB0aGlzIHBhdGNoLCB3ZSBmaXgg
dGhpcyBuZXN0aW5nIGxldmVsIHByb3BhZ2F0aW9uIGJ5IGluc2VydGluZworICAgICAgICB3aW5k
b3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZvciBlYWNoIHRlc3QgcnVuIGFuZCBCZW5jaG1hcmtS
dW5uZXIucHJvdG90eXBlLndhaXRGb3JFbGVtZW50CisgICAgICAgIHNvIHRoYXQgd2UgY2FuIHJl
c2V0IG5lc3RpbmcgbGV2ZWwgY291bnQgb2Ygc2V0VGltZW91dCwgd2hpY2ggcHJldmVudHMgdGhl
IHJlbmRlcmluZworICAgICAgICBlbmdpbmUgdG8gaW5zZXJ0IDRtcyB0aHJvdHRsZS4KKworICAg
ICAgICBTaW5jZSB0aGlzIGFmZmVjdHMgb24gdGhlIHNjb3JlIG9mIGFzeW5jIG1lYXN1cmVtZW50
LCB3ZSBidW1wIHRoZSB2ZXJzaW9uIG51bWJlciBmcm9tIDIuMCB0byAyLjEKKworICAgICAgICAq
IFNwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWw6CisgICAgICAgICogU3BlZWRvbWV0
ZXIvaW5kZXguaHRtbDoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvYmVuY2htYXJr
LXJ1bm5lci5qczoKKyAgICAgICAgKHJlc29sdmVJZlJlYWR5KToKKyAgICAgICAgKEJlbmNobWFy
a1J1bm5lci5wcm90b3R5cGUud2FpdEZvckVsZW1lbnQpOgorICAgICAgICAoQmVuY2htYXJrUnVu
bmVyLnByb3RvdHlwZS5fcnVuVGVzdCk6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvUkVBRE1FLm1kOgorICAgICAg
ICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyanMvcmVhZG1lLm1kOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9uZS9yZWFkbWUubWQ6CisgICAgICAgICog
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVy
anMvUkVBRE1FLm1kOgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9wcmVhY3QvUkVBRE1FLm1kOgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9S
RUFETUUubWQ6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0
ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L1JFQURNRS5tZDoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMtY2xpL1JFQURNRS5t
ZDoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL1JFQURNRS5tZDoKKyAgICAgICAgKiBTcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9SRUFETUUubWQ6Cisg
ICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy92
YW5pbGxhanMvcmVhZG1lLm1kOgorCiAyMDIyLTAyLTE4ICBSb2JlcnQgSmVubmVyICA8SmVubmVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI5MDE0OS4KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVSdW5uZXIu
aHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvSW50ZXJhY3RpdmVSdW5uZXIuaHRt
bAppbmRleCAzZTZmMDc4NDA1ZjY3NzJjNTY1ODI0ODBhOWJhMWQyOTgxYTllNGVhLi45Y2JmYWEy
ODg5OTNlOTNjM2M2YmE2OGNlOTM5YTZhYjY1ZGJkZGI4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL0ludGVyYWN0aXZlUnVubmVyLmh0bWwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9JbnRlcmFjdGl2ZVJ1bm5lci5odG1sCkBAIC0xLDcgKzEsNyBA
QAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotPHRpdGxlPlNwZWVkb21ldGVyIDIu
MCBJbnRlcmFjdGl2ZSBSdW5uZXI8L3RpdGxlPgorPHRpdGxlPlNwZWVkb21ldGVyIDIuMSBJbnRl
cmFjdGl2ZSBSdW5uZXI8L3RpdGxlPgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9iZW5jaG1hcmst
cnVubmVyLmpzIiBkZWZlcj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdHMu
anMiIGRlZmVyPjwvc2NyaXB0PgogPHN0eWxlPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9p
bmRleC5odG1sCmluZGV4IDQ4NmViNjM0ODcwNjdkOTMzODYxNmMwN2I1MWE1NTkwZDRkOGY1YjQu
LjIzOTY3MWVjM2I3ZGI1N2VhNDE2MmNiMWJmYTI3NGY0YWZhMDVhNjQgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvaW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL2luZGV4Lmh0bWwKQEAgLTIsNyArMiw3IEBACiA8aHRtbD4KIDxoZWFk
PgogICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KLSAgICA8dGl0bGU+U3BlZWRvbWV0ZXIgMi4wPC90aXRsZT4KKyAg
ICA8dGl0bGU+U3BlZWRvbWV0ZXIgMi4xPC90aXRsZT4KICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy9tYWluLmNzcyI+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9tYWluLmpzIiBkZWZlcj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Jl
bmNobWFyay1ydW5uZXIuanMiIGRlZmVyPjwvc2NyaXB0PgpAQCAtNjAsNyArNjAsNyBAQCA8aDE+
RGV0YWlsZWQgUmVzdWx0czwvaDE+CiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9
ImFib3V0Ij4KLSAgICAgICAgPGgxPkFib3V0IFNwZWVkb21ldGVyIDIuMDwvaDE+CisgICAgICAg
IDxoMT5BYm91dCBTcGVlZG9tZXRlciAyLjE8L2gxPgogCiAgICAgICAgIDxwPlNwZWVkb21ldGVy
IHRlc3RzIGEgYnJvd3NlcidzIFdlYiBhcHAgcmVzcG9uc2l2ZW5lc3MgYnkgdGltaW5nIHNpbXVs
YXRlZCB1c2VyIGludGVyYWN0aW9ucy48L3A+CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMgYi9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCmluZGV4IDQ3
Y2VkZmMwOWE0YzVlNzIxNjZlMzg4OWJiNjVlNjI4NjE2ZmI2NjYuLjc1MTk5MmI0ZjE5MGJiZmQ2
OWU1NGU1ZDVlNzQ5ODk4MzY1YTc2MTIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwpAQCAtNDksOCAr
NDksMTIgQEAgZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyKHN1aXRlcywgY2xpZW50KSB7CiAKICAg
ICBmdW5jdGlvbiByZXNvbHZlSWZSZWFkeSgpIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBjb250
ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7Ci0gICAgICAgIGlmIChlbGVtZW50
KQotICAgICAgICAgICAgcmV0dXJuIHByb21pc2UucmVzb2x2ZShlbGVtZW50KTsKKyAgICAgICAg
aWYgKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlc29sdmUoZWxl
bWVudCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
ICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmVJZlJlYWR5LCA1MCk7CiAgICAgfQogCkBAIC0xNDIs
NyArMTQ2LDkgQEAgZWxzZSBpZiAobiA9PSAxKQogICAgICAgICB2YXIgZW5kVGltZSA9IG5vdygp
OwogICAgICAgICBzZWxmLl9mcmFtZS5jb250ZW50V2luZG93Ll91bnVzZWRIZWlnaHRWYWx1ZSA9
IGhlaWdodDsgLy8gUHJldmVudCBkZWFkIGNvZGUgZWxpbWluYXRpb24uCiAgICAgICAgIHNlbGYu
X3dyaXRlTWFyayhzdWl0ZS5uYW1lICsgJy4nICsgdGVzdC5uYW1lICsgJy1hc3luYy1lbmQnKTsK
LSAgICAgICAgY2FsbGJhY2soc3luY1RpbWUsIGVuZFRpbWUgLSBzdGFydFRpbWUsIGhlaWdodCk7
CisgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgY2FsbGJhY2soc3luY1RpbWUsIGVuZFRpbWUgLSBzdGFydFRpbWUsIGhlaWdodCk7
CisgICAgICAgIH0pOwogICAgIH0sIDApOwogfQogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9h
bmd1bGFyL1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvUkVBRE1FLm1kCmluZGV4IDk5
MzRkYjNmYjUzNDA2ZTJkYjU0ZGVmNjZkZjcxZWZiYmE0M2E1YTkuLmFjOGI5ZjhlYzQwMTI0NjVk
MTIwNzI4ZTNlN2E2ZWY4ZjcwM2M3NzUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIv
UkVBRE1FLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2FuZ3VsYXIvUkVBRE1FLm1kCkBAIC0xLDQgKzEs
NCBAQAotIyBTcGVlZG9tZXRlciAyLjA6IEFuZ3VsYXIgNCBUb2RvTVZDIGV4YW1wbGUKKyMgU3Bl
ZWRvbWV0ZXIgMi4xOiBBbmd1bGFyIDQgVG9kb01WQyBleGFtcGxlCiAKICMjIFRlc3QgbG9jYWxs
eQogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvcmVhZG1lLm1kIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvYW5ndWxhcmpzL3JlYWRtZS5tZAppbmRleCBiNjBjYWI4NjA5ZDQ5YWEyNjE5NDBmMzA1
Y2Y4Zjc0OWU3OTFhNmVlLi45NzdjYTQ4OTY1YjFhOTkwNjNhZWQ1ZDg3Y2E4MmU3YWMyY2FmNDRk
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9hbmd1bGFyanMvcmVhZG1lLm1kCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL2FuZ3VsYXJqcy9yZWFkbWUubWQKQEAgLTEsNCArMSw0IEBACi0jIFNwZWVkb21ldGVy
IDIuMDogQW5ndWxhciAxLjYuNSBUb2RvTVZDIGV4YW1wbGUKKyMgU3BlZWRvbWV0ZXIgMi4xOiBB
bmd1bGFyIDEuNi41IFRvZG9NVkMgZXhhbXBsZQogCiAjIyBUZXN0IGxvY2FsbHkKIApkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvYmFja2JvbmUvcmVhZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvYmFja2Jv
bmUvcmVhZG1lLm1kCmluZGV4IGM5YmRkZmNiMzQ5OWZiNDc2OGM4ODljYTdmZjdmY2Q4OWZjNThi
OTguLjBhNGMwMGJjZDNhZjQ4Mzg4MWFmMGE5OGEyZWEyNWJiODUwMjQzNWIgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL2JhY2tib25lL3JlYWRtZS5tZAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9iYWNrYm9u
ZS9yZWFkbWUubWQKQEAgLTEsNCArMSw0IEBACi0jIFNwZWVkb21ldGVyIDIuMDogQmFja2JvbmUu
anMgVG9kb01WQyBleGFtcGxlCisjIFNwZWVkb21ldGVyIDIuMTogQmFja2JvbmUuanMgVG9kb01W
QyBleGFtcGxlCiAKICMjIFRlc3QgbG9jYWxseQogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9l
bWJlcmpzL1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvUkVBRE1FLm1kCmluZGV4IGI4
NjM0ODg4MmE4MzAwYWY2ZjkyYWZlNDNiZTJlNDc4YzBkZDJhMmIuLmE1NjkwY2IzMGVlNmZkMTZm
YTYzODliNTA1Y2RhMjI3OWE0YjQ2OWMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMv
UkVBRE1FLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL2VtYmVyanMvUkVBRE1FLm1kCkBAIC0xLDQgKzEs
NCBAQAotIyBTcGVlZG9tZXRlciAyLjA6IEVtYmVyLmpzIFRvZG9NVkMgZXhhbXBsZQorIyBTcGVl
ZG9tZXRlciAyLjE6IEVtYmVyLmpzIFRvZG9NVkMgZXhhbXBsZQogCiAjIyBUZXN0IGxvY2FsbHkK
IApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L1JFQURNRS5tZCBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3ByZWFjdC9SRUFETUUubWQKaW5kZXggNDBhNzU4YTg2ZThhMjM1YmIxNDNhNTA1YjZkZTYzZDhj
ZDllZjI0MC4uMDY0ZDE3MWYwYWExNmFmNDcwNmUzMDRjYTY4MzA5OTUxYmQwYmMzZCAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNo
aXRlY3R1cmUtZXhhbXBsZXMvcHJlYWN0L1JFQURNRS5tZAorKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9wcmVh
Y3QvUkVBRE1FLm1kCkBAIC0xLDQgKzEsNCBAQAotIyBTcGVlZG9tZXRlciAyLjA6IFByZWFjdCBU
b2RvTVZDIGV4YW1wbGUKKyMgU3BlZWRvbWV0ZXIgMi4xOiBQcmVhY3QgVG9kb01WQyBleGFtcGxl
CiAKICMjIFRlc3QgbG9jYWxseQogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1
eC9SRUFETUUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9SRUFETUUubWQKaW5kZXggY2U3
YjhmZDE1ODA0NTMxMDFkNWYwNzlmNGFmZjA4MDA3YjRkMTFjMy4uZWNlMjQwZmViMzZiZWVkNmRl
NjQ4NDI2ZTcxZDcwNDA1MzgzYTI3NyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVk
dXgvUkVBRE1FLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L1JFQURNRS5tZApAQCAt
MSw0ICsxLDQgQEAKLSMgU3BlZWRvbWV0ZXIgMi4wOiBSZWFjdCBSZWR1eCBUb2RvTVZDIGV4YW1w
bGUKKyMgU3BlZWRvbWV0ZXIgMi4xOiBSZWFjdCBSZWR1eCBUb2RvTVZDIGV4YW1wbGUKIAogIyMg
VGVzdCBsb2NhbGx5CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L1JFQURNRS5tZCBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0L1JFQURNRS5tZAppbmRleCBiYzE0NGUyNjgwNjQ2OGQxYjczZThk
NzIyMzM4ZWZkNTliYWFkYjhlLi5lNTk1NzlkNWI3Njk2ZDBkZDQxODczNTM2ODNjNDExY2Y3ZWIx
ZDEzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9SRUFETUUubWQKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3QvUkVBRE1FLm1kCkBAIC0xLDQgKzEsNCBAQAotIyBTcGVlZG9tZXRlciAyLjA6
IFJlYWN0IFRvZG9NVkMgZXhhbXBsZQorIyBTcGVlZG9tZXRlciAyLjE6IFJlYWN0IFRvZG9NVkMg
ZXhhbXBsZQogCiAjIyBUZXN0IGxvY2FsbHkKIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVl
anMtY2xpL1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Z1ZWpzLWNsaS9SRUFETUUubWQKaW5kZXgg
YTAyNzlmNGYzZjVlMTNhOTgxNGExMmYzZDYyOTI4ZjFjYzc4OTMzNC4uNGIwNDA5NTBmZjljYmVj
ZjA0MzIzMmQzZjg3ZjIzZjY4ZWQ3ZDllNiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvdnVlanMt
Y2xpL1JFQURNRS5tZAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy92dWVqcy1jbGkvUkVBRE1FLm1kCkBAIC0x
LDQgKzEsNCBAQAotIyBTcGVlZG9tZXRlciAyLjA6IFZ1ZS5qcyBUb2RvTVZDIGV4YW1wbGUKKyMg
U3BlZWRvbWV0ZXIgMi4xOiBWdWUuanMgVG9kb01WQyBleGFtcGxlCiAKICMjIFRlc3QgbG9jYWxs
eQogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svUkVBRE1FLm1kIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL1JFQURNRS5tZAppbmRleCAzMDZlZTA3N2M0Zjlj
ZjJlN2I3MmQ0YmJmZTkyYWFmMzgyMjZmNjEwLi5mNGUxMzczOGUyMmJhMWNkNTBjOWI3NTdlZjhk
ZTk5YzAyNDYwOTE5IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svUkVB
RE1FLm1kCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9SRUFETUUubWQKQEAgLTEs
NCArMSw0IEBACi0jIFNwZWVkb21ldGVyIDIuMDogRVMyMDE1ICsgQmFiZWwgKyBXZWJwYWNrIFRv
ZG9NVkMgZXhhbXBsZQorIyBTcGVlZG9tZXRlciAyLjE6IEVTMjAxNSArIEJhYmVsICsgV2VicGFj
ayBUb2RvTVZDIGV4YW1wbGUKIAogIyMgVGVzdCBsb2NhbGx5CiAKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUvUkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9SRUFETUUubWQKaW5kZXggZTk2NTU4
ODdjNzRlMTg5NWIzNmY1N2YyYTIyMzI0Yjk5NjlhMjZjMy4uMjEzNGI0NjI0ZmU4Y2IzZDgyNDky
Nzc4MDJjNmQ1N2RhMDBmOTJhMyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS9SRUFETUUubWQK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL2VzMjAxNS9SRUFETUUubWQKQEAgLTEsNCArMSw0IEBACi0jIFNwZWVkb21l
dGVyIDIuMDogRVMyMDE1IFRvZG9NVkMgZXhhbXBsZQorIyBTcGVlZG9tZXRlciAyLjE6IEVTMjAx
NSBUb2RvTVZDIGV4YW1wbGUKIAogIyMgVGVzdCBsb2NhbGx5CiAKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy92YW5pbGxhanMvcmVhZG1lLm1kIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9yZWFkbWUubWQKaW5kZXgg
ODVlOWEyM2VlMTc3MzE3ODcwNzdhYzA2MzM5MzZlMGZiOWY1NTkzMS4uNWQ4OWY2MTdlZWJlMjE0
ZGNjZTAwM2YxOGFlMTI4Nzc3NjNiNDY0MCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9y
ZWFkbWUubWQKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL3ZhbmlsbGFqcy9yZWFkbWUubWQKQEAgLTEsNCArMSw0IEBA
Ci0jIFNwZWVkb21ldGVyIDIuMDogVmFuaWxsYSBKYXZhU2NyaXB0IFRvZG9NVkMgZXhhbXBsZQor
IyBTcGVlZG9tZXRlciAyLjE6IFZhbmlsbGEgSmF2YVNjcmlwdCBUb2RvTVZDIGV4YW1wbGUKIAog
IyMgVGVzdCBsb2NhbGx5CiAK
</data>
<flag name="review"
          id="480845"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>