<?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>22718</bug_id>
          
          <creation_ts>2008-12-07 03:13:26 -0800</creation_ts>
          <short_desc>Implement WindowTimers interface in Workers</short_desc>
          <delta_ts>2009-02-03 02:33:31 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>22755</dependson>
    
    <dependson>23207</dependson>
    
    <dependson>23223</dependson>
    
    <dependson>23312</dependson>
    
    <dependson>23373</dependson>
    
    <dependson>23374</dependson>
    
    <dependson>23488</dependson>
    
    <dependson>23560</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Dmitry Titov">dimich</assigned_to>
          <cc>dimich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>101723</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-07 03:13:26 -0800</bug_when>
    <thetext>We need to make timers function in Workers.

[NoInterfaceObject] interface WindowTimers {
  // timers
  long setTimeout(in TimeoutHandler handler, in long timeout);
  long setTimeout(in TimeoutHandler handler, in long timeout, arguments...);
  long setTimeout(in DOMString code, in long timeout);
  long setTimeout(in DOMString code, in long timeout, in DOMString language);
  void clearTimeout(in long handle);
  long setInterval(in TimeoutHandler handler, in long timeout);
  long setInterval(in TimeoutHandler handler, in long timeout, arguments...);
  long setInterval(in DOMString code, in long timeout);
  long setInterval(in DOMString code, in long timeout, in DOMString language);
  void clearInterval(in long handle);
};

interface TimeoutHandler {
  void handleEvent([Variadic] in any args);
};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101735</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-07 03:57:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/6425804&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101798</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2008-12-08 00:49:27 -0800</bug_when>
    <thetext>*** Bug 22328 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105122</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-10 13:39:10 -0800</bug_when>
    <thetext>Adding timers to Workers (setTimeout,setInterval,clearTimeout,clearInterval) happened to be a big enough work to split it into multiple patches. So I keep this bug as a &quot;root&quot; and make small patches in separate bugs that refer to this one for context.

Here is a rough plan of this work. The main changes are related to sharing timer functionality between Document/DOMWindow and a new WorkerContext, making TimerBase to be threading-aware and changing Worker thread&apos;s run loop to support timers.

More detailed list (likely to change somewhat as a result of reviews and feedback of others):

1. Move timer-related code from JSDOMWindowBase where it currently lives into a new DOMTimer object, abstract JS engine - related parts into ScheduledAction class. This will allow to use timer functionality from both DOMWindow and WorkerContext.

2. Create a new RunLoop class to encapsulate the worker thread&apos;s run loop which has to deal with message queue and timers. This includes changes to WTF::MessageQueue (to add timedWait), TimeBase (to make it able to work on worker threads too) and other threading-related changes.

3. Expose timer functions on WorkerContext/JSWorkerContext.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108073</commentid>
    <comment_count>4</comment_count>
      <attachid>27273</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-02-02 18:49:44 -0800</bug_when>
    <thetext>Created attachment 27273
Proposed patch

Final patch - enables JS API, adds a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108074</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-02-02 19:00:21 -0800</bug_when>
    <thetext>This patch depends on a relatively simple patch in bug 23560 for timers to actually fire. But otherwise it doesn&apos;t depend on it so it can be reviewed separately. If patch for the bug 23560 will be further modified, it won&apos;t affect this one.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108099</commentid>
    <comment_count>6</comment_count>
      <attachid>27273</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-03 01:48:18 -0800</bug_when>
    <thetext>Comment on attachment 27273
Proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108104</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-03 02:33:31 -0800</bug_when>
    <thetext>Committed revision 40534.

Nice test case!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27273</attachid>
            <date>2009-02-02 18:49:44 -0800</date>
            <delta_ts>2009-02-03 01:48:18 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>timeouts.txt</filename>
            <type>text/plain</type>
            <size>15569</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3Yzk4MmZjLi4xNjgzNDg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDIt
MDIgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNzE4CisgICAgICAgIEltcGxlbWVudCBXaW5kb3dUaW1lcnMgaW50
ZXJmYWNlIGluIFdvcmtlcnMuCisKKyAgICAgICAgRmlyc3QgbGF5b3V0IHRlc3QgZm9yIHRpbWVv
dXRzIGluIGEgV29ya2VyLgorCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItdGltZW91dC5qczogQWRkZWQuCisgICAgICAgIChjaGVja0NvbXBsZXRpb24pOgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy93b3JrZXItdGltZW91dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItdGltZW91dC5odG1sOiBBZGRlZC4KKwogMjAwOS0w
MS0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVz
b3VyY2VzL3dvcmtlci10aW1lb3V0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291
cmNlcy93b3JrZXItdGltZW91dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4zYWJjNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jl
c291cmNlcy93b3JrZXItdGltZW91dC5qcwpAQCAtMCwwICsxLDMxIEBACitwb3N0TWVzc2FnZSgi
VGVzdCBzdGFydGVkLiIpOworCisvLyBBZnRlciBhbGwgdGhlIGV4cGVjdGVkIHRpbWVvdXRzIGZp
cmUsIHNpZ25hbCB0aGUgbWFpbiBwYWdlIHRoZSB0ZXN0IGlzIGNvbXBsZXRlLgordmFyIGV4cGVj
dGVkRmlyaW5nQ291bnQgPSA1OworZnVuY3Rpb24gY2hlY2tDb21wbGV0aW9uKCkKK3sKKyAgICBp
ZiAoLS1leHBlY3RlZEZpcmluZ0NvdW50ID09IDApCisgICAgICAgIHBvc3RNZXNzYWdlKCJET05F
Iik7Cit9CisKKy8vIEV4ZWN1dGUgc2NyaXB0IGluIGEgc3RyaW5nLgorc2V0VGltZW91dCgncG9z
dE1lc3NhZ2UoIlBBU1M6IHRpbWVvdXQgMSIpOyBjaGVja0NvbXBsZXRpb24oKScsIDIwKTsKKwor
Ly8gRXhlY3V0ZSBhIGZ1bmN0aW9uLiAKKy8vIE5vdGUgaXQgaGFzIHRoZSBzYW1lIHRpbWVvdXQg
dmFsdWUgYXMgcHJldmlvdXMgdGltZW91dCwgYnV0IHNob3VsZCBiZSBmaXJlZCByZWxpYWJseQor
Ly8gYWZ0ZXIgaXQgYmVjYXVzZSB0aGUgdGltZXIgaGVhcCBtYWludGFpbnMgdGhlIHF1ZXVlaW5n
IG9yZGVyIGFzIHdlbGwgYXMgZmlyaW5nIHRpbWUuCitzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJQQVNTOiB0aW1lb3V0IDIiKTsKKyAgICAgICAg
ICAgICAgIGNoZWNrQ29tcGxldGlvbigpOworICAgICAgICAgICB9LCAyMCk7CisKKy8vIENsZWFy
IGEgdGltZW91dCBiZWZvcmUgaXQgZmlyZXMuCit2YXIgc2luZ2xlU2hvdCA9IHNldFRpbWVvdXQo
J3Bvc3RNZXNzYWdlKCJGQUlMOiB0aGlzIHRpbWVyIHNob3VsZCBiZSByZW1vdmVkIGJlZm9yZSBm
aXJpbmciKScsIDApOworY2xlYXJUaW1lb3V0KHNpbmdsZVNob3QpOworCisvLyBDbGVhciBpbnRl
cnZhbCBhZnRlciBpdCBmaXJlcy4KK3ZhciBpbnRlcnZhbFRpbWVyID0gc2V0SW50ZXJ2YWwoJ3Bv
c3RNZXNzYWdlKCJQQVNTOiBpbnRlcnZhbCAzIik7IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxUaW1l
cik7IGNoZWNrQ29tcGxldGlvbigpOycsIDIwKTsKKworLy8gU2V0IHJlcGVhdGVkIGludGVydmFs
LiBJdCB3aWxsIHRlcm1pbmF0ZSB0aGUgdGVzdCBhZnRlciAyIGl0ZXJhdGlvbnMuCitzZXRJbnRl
cnZhbCgncG9zdE1lc3NhZ2UoIlBBU1M6IHJlcGVhdGVkIGludGVydmFsIik7IGNoZWNrQ29tcGxl
dGlvbigpOycsIDMwKTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dv
cmtlci10aW1lb3V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3Jr
ZXItdGltZW91dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYjIzMDU1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93
b3JrZXItdGltZW91dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBUaW1lb3V0
cyAoc2V0VGltZW91dCwgc2V0SW50ZXJ2YWwsIGNsZWFyVGltZW91dCwgY2xlYXJJbnRlcnZhbCku
CisKK1Rlc3Qgc3RhcnRlZC4KK1BBU1M6IHRpbWVvdXQgMQorUEFTUzogdGltZW91dCAyCitQQVNT
OiBpbnRlcnZhbCAzCitQQVNTOiByZXBlYXRlZCBpbnRlcnZhbAorUEFTUzogcmVwZWF0ZWQgaW50
ZXJ2YWwKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtl
ci10aW1lb3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXRpbWVvdXQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2E1YzBmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci10aW1lb3V0Lmh0bWwK
QEAgLTAsMCArMSwyNCBAQAorPGJvZHk+Cis8cD5UZXN0IFRpbWVvdXRzIChzZXRUaW1lb3V0LCBz
ZXRJbnRlcnZhbCwgY2xlYXJUaW1lb3V0LCBjbGVhckludGVydmFsKS48L3A+Cis8ZGl2IGlkPXJl
c3VsdD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJy
PiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworfQorCit2YXIgd29ya2VyID0gbmV3IFdvcmtlcigncmVzb3VyY2VzL3dv
cmtlci10aW1lb3V0LmpzJyk7CisKK3dvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsK
KyAgICBsb2coZXZ0LmRhdGEpOworICAgIGlmIChldnQuZGF0YSA9PSAiRE9ORSIgJiYgd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY5ZDJiNS4uMmI5ZTg0
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0OCBAQAorMjAwOS0wMi0wMiAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MTgKKyAgICAgICAg
SW1wbGVtZW50IFdpbmRvd1RpbWVycyBpbnRlcmZhY2UgaW4gV29ya2Vycy4KKworICAgICAgICBU
aGlzIHBhdGNoIG1vdmVzIHRpbWVvdXRJRCBmcm9tIERvY3VtZW50IHRvIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQKKyAgICAgICAgYW5kIGV4cG9zZXMgSlMgbWV0aG9kcyBzZXRUaW1lb3V0L3NldElu
dGVydmFsL2NsZWFyVGltZW91dC9jbGVhckludGVydmFsIGluc2lkZSBvZiBhIFdvcmtlci4KKyAg
ICAgICAgQWxzbyBhZGRlZCBhIHRlc3QgZm9yIHRob3NlIG1ldGhvZHMuCisKKyAgICAgICAgVGVz
dDogZmFzdC93b3JrZXJzL3dvcmtlci10aW1lb3V0Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRUaW1l
b3V0T3JJbnRlcnZhbCk6CisgICAgICAgIENyZWF0ZXMgU2NoZWR1bGVkQWN0aW9uIGFuZCBjYWxs
cyBXb3JrZXJDb250ZXh0OjppbnN0YWxsVGltZW91dCB0byBhY3R1YWxseSBhZGQgYSB0aW1lci4K
KworICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0OjpzZXRUaW1lb3V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6Y2xlYXJUaW1lb3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyQ29udGV4dDo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrZXJDb250ZXh0OjpjbGVhckludGVydmFsKToKKyAgICAgICAgQWRkZWQgbWV0aG9kcyBl
eHBvc2VkIHRvIEpTLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjphZGRUaW1lb3V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlbW92ZVRpbWVvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZmluZFRpbWVvdXQp
OgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIFRoZSB0
aW1lcklEIG1hcCBtb3ZlcyBmcm9tIERvY3VtZW50IHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
CisgICAgICAgIHRvIGJlIGF2YWlsYWJsZSB0byBEb2N1bWVudCBhbmQgdG8gV29ya2VyQ29udGV4
dC4KKworICAgICAgICAqIGRvbS9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckNvbnRleHQ6Omluc3RhbGxUaW1lb3V0KTogQWRkcyBhIERPTVRpbWVvdXQuCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpyZW1vdmVUaW1lb3V0KTogUmVtb3ZlcyBhIERP
TVRpbWVvdXQuCisgICAgICAgICogZG9tL1dvcmtlckNvbnRleHQuaDoKKworICAgICAgICAqIHBh
Z2UvRE9NVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OkRPTVRpbWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjp+RE9NVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVGltZXI6OnJlbW92ZUJ5SWQpOgorICAgICAgICBDb2RlIGNoYW5nZSBoZXJlIHJlZmxl
Y3RzIG1vdmUgb2YgdGltZW91dElEIG1hcCB0byB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dC4K
KyAgICAgICAgU29tZSBjaGVja3MgYW5kIGNhc3RzIGFyZSBubyBsb25nZXIgbmVlZGVkLgorCiAy
MDA5LTAyLTAxICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDNhNmRjYTAuLmMzZWY5YzEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRl
eHQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTkzLDYgKzk0LDQyIEBAIEpTVmFsdWVQ
dHIgSlNXb3JrZXJDb250ZXh0OjpyZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAorc3RhdGljIEpT
VmFsdWVQdHIgc2V0VGltZW91dE9ySW50ZXJ2YWwoRXhlY1N0YXRlKiBleGVjLCBXb3JrZXJDb250
ZXh0KiB3b3JrZXJDb250ZXh0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBib29sIHNpbmdsZVNob3Qp
Cit7CisgICAgSlNWYWx1ZVB0ciB2ID0gYXJncy5hdChleGVjLCAwKTsKKyAgICBpbnQgZGVsYXkg
PSBhcmdzLmF0KGV4ZWMsIDEpLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKHYuaXNTdHJpbmcoKSkK
KyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHdvcmtlckNvbnRleHQtPmluc3RhbGxUaW1l
b3V0KG5ldyBTY2hlZHVsZWRBY3Rpb24oYXNTdHJpbmcodiktPnZhbHVlKCkpLCBkZWxheSwgc2lu
Z2xlU2hvdCkpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIGlmICh2LmdldENhbGxEYXRh
KGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIEFyZ0xpc3QgYXJnc1RhaWw7CisgICAgYXJncy5nZXRTbGljZSgyLCBhcmdzVGFpbCk7
CisgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHdvcmtlckNvbnRleHQtPmluc3RhbGxUaW1lb3V0
KG5ldyBTY2hlZHVsZWRBY3Rpb24oZXhlYywgdiwgYXJnc1RhaWwpLCBkZWxheSwgc2luZ2xlU2hv
dCkpOworfQorCitKU1ZhbHVlUHRyIEpTV29ya2VyQ29udGV4dDo6c2V0VGltZW91dChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIHNldFRpbWVvdXRP
ckludGVydmFsKGV4ZWMsIGltcGwoKSwgYXJncywgdHJ1ZSk7Cit9CisKK0pTVmFsdWVQdHIgSlNX
b3JrZXJDb250ZXh0OjpjbGVhclRpbWVvdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0
JiBhcmdzKQoreworICAgIGltcGwoKS0+cmVtb3ZlVGltZW91dChhcmdzLmF0KGV4ZWMsIDApLnRv
SW50MzIoZXhlYykpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlUHRy
IEpTV29ya2VyQ29udGV4dDo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdM
aXN0JiBhcmdzKQoreworICAgIHJldHVybiBzZXRUaW1lb3V0T3JJbnRlcnZhbChleGVjLCBpbXBs
KCksIGFyZ3MsIGZhbHNlKTsKK30KKworSlNWYWx1ZVB0ciBKU1dvcmtlckNvbnRleHQ6OmNsZWFy
SW50ZXJ2YWwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlt
cGwoKS0+cmVtb3ZlVGltZW91dChhcmdzLmF0KGV4ZWMsIDApLnRvSW50MzIoZXhlYykpOworICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwNWFmNjk2Li5jNjQ1Yzg3IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC00MzA5LDIyICs0MzA5LDYgQEAgdm9pZCBEb2N1bWVudDo6cGFyc2VETlNQ
cmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJiBkbnNQcmVmZXRjaENvbnRyb2wpCiAg
ICAgbV9oYXZlRXhwbGljaXRseURpc2FibGVkRE5TUHJlZmV0Y2ggPSB0cnVlOwogfQogCi12b2lk
IERvY3VtZW50OjphZGRUaW1lb3V0KGludCB0aW1lb3V0SWQsIERPTVRpbWVyKiB0aW1lcikKLXsK
LSAgICBBU1NFUlQoIW1fdGltZW91dHMuY29udGFpbnModGltZW91dElkKSk7Ci0gICAgbV90aW1l
b3V0cy5zZXQodGltZW91dElkLCB0aW1lcik7Ci19Ci0KLXZvaWQgRG9jdW1lbnQ6OnJlbW92ZVRp
bWVvdXQoaW50IHRpbWVvdXRJZCkKLXsKLSAgICBtX3RpbWVvdXRzLnJlbW92ZSh0aW1lb3V0SWQp
OwotfQotCi1ET01UaW1lciogRG9jdW1lbnQ6OmZpbmRUaW1lb3V0KGludCB0aW1lb3V0SWQpCi17
Ci0gICAgcmV0dXJuIG1fdGltZW91dHMuZ2V0KHRpbWVvdXRJZCk7Ci19Ci0KIHZvaWQgRG9jdW1l
bnQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewogICAgIGlmIChET01XaW5kb3cqIHdp
bmRvdyA9IGRvbVdpbmRvdygpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTFiMDQ5ZC4uOGMxYWNmMCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC02Myw3ICs2Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBEYXRhYmFzZTsK
ICAgICBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKICAgICBjbGFzcyBET01TZWxlY3Rpb247Ci0g
ICAgY2xhc3MgRE9NVGltZXI7CiAgICAgY2xhc3MgRE9NV2luZG93OwogICAgIGNsYXNzIERhdGFi
YXNlVGhyZWFkOwogICAgIGNsYXNzIERvY0xvYWRlcjsKQEAgLTc5OSwxMCArNzk4LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3Qo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmlu
Zyk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NSZWZQdHI8VGFzaz4pOyAvLyBFeGVj
dXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCi0gICAg
dm9pZCBhZGRUaW1lb3V0KGludCB0aW1lb3V0SWQsIERPTVRpbWVyKik7Ci0gICAgdm9pZCByZW1v
dmVUaW1lb3V0KGludCB0aW1lb3V0SWQpOwotICAgIERPTVRpbWVyKiBmaW5kVGltZW91dChpbnQg
dGltZW91dElkKTsKLSAgICAKIHByb3RlY3RlZDoKICAgICBEb2N1bWVudChGcmFtZSosIGJvb2wg
aXNYSFRNTCk7CiAKQEAgLTExMzMsOCArMTEyOCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lu
TG93QmFuZHdpZHRoRGlzcGxheTsKICNlbmRpZgogCi0gICAgdHlwZWRlZiBIYXNoTWFwPGludCwg
RE9NVGltZXIqPiBUaW1lb3V0c01hcDsKLSAgICBUaW1lb3V0c01hcCBtX3RpbWVvdXRzOwogfTsK
IAogaW5saW5lIGJvb2wgRG9jdW1lbnQ6Omhhc0VsZW1lbnRXaXRoSWQoQXRvbWljU3RyaW5nSW1w
bCogaWQpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDFk
MWFhZWMuLmM1MTg3MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBA
IC0xNzUsNiArMTc1LDIyIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VjdXJp
dHlPcmlnaW4oUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpCiAgICAgbV9zZWN1cml0
eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luOwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OmFkZFRpbWVvdXQoaW50IHRpbWVvdXRJZCwgRE9NVGltZXIqIHRpbWVyKQoreworICAgIEFT
U0VSVCghbV90aW1lb3V0cy5jb250YWlucyh0aW1lb3V0SWQpKTsKKyAgICBtX3RpbWVvdXRzLnNl
dCh0aW1lb3V0SWQsIHRpbWVyKTsKK30KKwordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpy
ZW1vdmVUaW1lb3V0KGludCB0aW1lb3V0SWQpCit7CisgICAgbV90aW1lb3V0cy5yZW1vdmUodGlt
ZW91dElkKTsKK30KKworRE9NVGltZXIqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZpbmRUaW1l
b3V0KGludCB0aW1lb3V0SWQpCit7CisgICAgcmV0dXJuIG1fdGltZW91dHMuZ2V0KHRpbWVvdXRJ
ZCk7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6On5UYXNrKCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCA2ZjA5ZTFhLi42ZGRjODAwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBBY3RpdmVET01PYmplY3Q7CisgICAgY2xhc3MgRE9N
VGltZXI7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiAgICAgY2xhc3MgU2NyaXB0U3RyaW5nOwpAQCAtOTQsNiArOTUsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzUmVmUHRyPFRhc2s+
KSA9IDA7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9u
b3VzbHkuCiAKKyAgICAgICAgdm9pZCBhZGRUaW1lb3V0KGludCB0aW1lb3V0SWQsIERPTVRpbWVy
Kik7CisgICAgICAgIHZvaWQgcmVtb3ZlVGltZW91dChpbnQgdGltZW91dElkKTsKKyAgICAgICAg
RE9NVGltZXIqIGZpbmRUaW1lb3V0KGludCB0aW1lb3V0SWQpOworCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICAvLyBFeHBsaWNpdGx5IG92ZXJyaWRlIHRoZSBzZWN1cml0eSBvcmlnaW4gZm9yIHRo
aXMgc2NyaXB0IGNvbnRleHQuCiAgICAgICAgIC8vIE5vdGU6IEl0IGlzIGRhbmdlcm91cyB0byBj
aGFuZ2UgdGhlIHNlY3VyaXR5IG9yaWdpbiBvZiBhIHNjcmlwdCBjb250ZXh0CkBAIC0xMTAsNiAr
MTE1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEhhc2hNYXA8QWN0aXZlRE9N
T2JqZWN0Kiwgdm9pZCo+IG1fYWN0aXZlRE9NT2JqZWN0czsKIAorICAgICAgICBIYXNoTWFwPGlu
dCwgRE9NVGltZXIqPiBtX3RpbWVvdXRzOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWZTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPSAwOwogICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCmluZGV4
IGZlNDY0M2UuLjkyZWEwODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCisjaW5jbHVkZSAiRE9NVGltZXIuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCkBAIC0yMTgsNiArMjE5
LDE2IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6cG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1Jl
ZlB0cjxUYXNrPiB0YXNrKQogICAgIHRocmVhZCgpLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0VGFz
a1RvUGFyZW50Q29udGV4dCh0YXNrKTsKIH0KIAoraW50IFdvcmtlckNvbnRleHQ6Omluc3RhbGxU
aW1lb3V0KFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVT
aG90KQoreworICAgIHJldHVybiBET01UaW1lcjo6aW5zdGFsbChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGFjdGlvbiwgdGltZW91dCwgc2luZ2xlU2hvdCk7Cit9CisKK3ZvaWQgV29ya2VyQ29u
dGV4dDo6cmVtb3ZlVGltZW91dChpbnQgdGltZW91dElkKQoreworICAgIERPTVRpbWVyOjpyZW1v
dmVCeUlkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGltZW91dElkKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0
LmgKaW5kZXggMmU0NDNkOS4uMDc5OTMwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2Vy
Q29udGV4dC5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaApAQCAtNDEsNiArNDEs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBTY2hlZHVsZWRBY3Rpb247
CiAgICAgY2xhc3MgV29ya2VyTG9jYXRpb247CiAgICAgY2xhc3MgV29ya2VyTmF2aWdhdG9yOwog
ICAgIGNsYXNzIFdvcmtlclRocmVhZDsKQEAgLTgwLDYgKzgxLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soUGFzc1JlZlB0cjxUYXNrPik7IC8v
IEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCiAg
ICAgICAgIHZvaWQgcG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxUYXNrPik7IC8v
IEV4ZWN1dGVzIHRoZSB0YXNrIGluIHRoZSBwYXJlbnQncyBjb250ZXh0IChhbmQgdGhyZWFkKSBh
c3luY2hyb25vdXNseS4KIAorICAgICAgICBpbnQgaW5zdGFsbFRpbWVvdXQoU2NoZWR1bGVkQWN0
aW9uKiwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CisgICAgICAgIHZvaWQgcmVtb3Zl
VGltZW91dChpbnQgdGltZW91dElkKTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
LCBib29sIHVzZUNhcHR1cmUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vV29ya2VyQ29udGV4dC5pZGwgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmlkbAppbmRl
eCA2ZTcyMjNjLi5lMWZmZjUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0
LmlkbAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmlkbApAQCAtNDcsNiArNDcsMTUg
QEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBhdHRyaWJ1dGUgTWVzc2FnZUV2ZW50Q29uc3Ry
dWN0b3IgTWVzc2FnZUV2ZW50OwogICAgICAgICBhdHRyaWJ1dGUgV29ya2VyTG9jYXRpb25Db25z
dHJ1Y3RvciBXb3JrZXJMb2NhdGlvbjsKIAorICAgICAgICAvLyBUaW1lcnMKKyAgICAgICAgW0N1
c3RvbV0gbG9uZyBzZXRUaW1lb3V0KGluIFRpbWVvdXRIYW5kbGVyIGhhbmRsZXIsIGluIGxvbmcg
dGltZW91dCk7CisgICAgICAgIC8vIFtDdXN0b21dIGxvbmcgc2V0VGltZW91dChpbiBET01TdHJp
bmcgY29kZSwgaW4gbG9uZyB0aW1lb3V0KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBjbGVhclRp
bWVvdXQoaW4gbG9uZyBoYW5kbGUpOworCisgICAgICAgIFtDdXN0b21dIGxvbmcgc2V0SW50ZXJ2
YWwoaW4gVGltZW91dEhhbmRsZXIgaGFuZGxlciwgaW4gbG9uZyB0aW1lb3V0KTsKKyAgICAgICAg
Ly8gW0N1c3RvbV0gbG9uZyBzZXRJbnRlcnZhbChpbiBET01TdHJpbmcgY29kZSwgaW4gbG9uZyB0
aW1lb3V0KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBjbGVhckludGVydmFsKGluIGxvbmcgaGFu
ZGxlKTsKKwogICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICAgICAgW0N1c3Rv
bV0gdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5jcHAKaW5kZXggOTExZGE3MS4uNDc2OGNiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0RPTVRpbWVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC0yNyw3ICsy
Nyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKIAotI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBA
IC01OCwxMCArNTcsNyBAQCBET01UaW1lcjo6RE9NVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgU2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24sIGludAogICAgIAogICAgIG1fbmVz
dGluZ0xldmVsID0gdGltZXJOZXN0aW5nTGV2ZWwgKyAxOwogCi0gICAgLy8gRklYTUU6IE1vdmUg
dGhlIHRpbWVvdXQgbWFwIGFuZCBBUEkgdG8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0byBiZSBh
YmxlCi0gICAgLy8gdG8gY3JlYXRlIHRpbWVvdXRzIGZyb20gV29ya2Vycy4KLSAgICBBU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNE
b2N1bWVudCgpKTsKLSAgICBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSktPmFkZFRpbWVvdXQobV90aW1lb3V0SWQsIHRoaXMpOworICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+YWRkVGltZW91dChtX3RpbWVvdXRJZCwgdGhpcyk7CiAKICAgICBkb3Vi
bGUgaW50ZXJ2YWxNaWxsaXNlY29uZHMgPSBtYXgob25lTWlsbGlzZWNvbmQsIHRpbWVvdXQgKiBv
bmVNaWxsaXNlY29uZCk7CiAKQEAgLTc5LDggKzc1LDcgQEAgRE9NVGltZXI6OkRPTVRpbWVyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uLCBp
bnQKIERPTVRpbWVyOjp+RE9NVGltZXIoKQogewogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpIHsKLSAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1
bWVudCgpKTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpLT5yZW1vdmVUaW1lb3V0KG1fdGltZW91dElkKTsKKyAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5yZW1vdmVUaW1lb3V0KG1fdGltZW91dElkKTsKICAgICB9CiB9CiAg
ICAgCkBAIC0xMDAsOCArOTUsNyBAQCB2b2lkIERPTVRpbWVyOjpyZW1vdmVCeUlkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCB0aW1lb3V0SWQpCiAgICAgLy8gcmVzcGVjdGl2
ZWx5CiAgICAgaWYgKHRpbWVvdXRJZCA8PSAwKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJU
KGNvbnRleHQgJiYgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBkZWxldGUgc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZmluZFRpbWVvdXQodGltZW91dElkKTsKKyAgICBkZWxl
dGUgY29udGV4dC0+ZmluZFRpbWVvdXQodGltZW91dElkKTsKIH0KIAogdm9pZCBET01UaW1lcjo6
ZmlyZWQoKQo=
</data>
<flag name="review"
          id="13146"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>