<?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>192975</bug_id>
          
          <creation_ts>2018-12-20 23:19:38 -0800</creation_ts>
          <short_desc>ThreadTimers should not store a raw pointer in its heap</short_desc>
          <delta_ts>2019-02-02 17:32:23 -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>WebCore Misc.</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1490292</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-12-20 23:19:38 -0800</bug_when>
    <thetext>Make ThreadTimers&apos; timer heap use WeakPtr instead of a raw pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490293</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-20 23:20:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/46893946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490295</commentid>
    <comment_count>2</comment_count>
      <attachid>357931</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-12-20 23:22:48 -0800</bug_when>
    <thetext>Created attachment 357931
WIP

This replaces ThreadTimer&apos;s timer heap by WeakPtr but this still causes a null pointer crash in TimerHeapLessThanFunction::compare when WeakPtr is cleared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490296</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-20 23:25:01 -0800</bug_when>
    <thetext>Attachment 357931 did not pass style-queue:


ERROR: Source/WebCore/platform/Timer.cpp:61:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Timer.cpp:188:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/Timer.cpp:188:  The parameter name &quot;b&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490493</commentid>
    <comment_count>4</comment_count>
      <attachid>357980</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-12-21 14:39:47 -0800</bug_when>
    <thetext>Created attachment 357980
WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490497</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-21 14:42:59 -0800</bug_when>
    <thetext>Attachment 357980 did not pass style-queue:


ERROR: Source/WebCore/platform/Timer.cpp:95:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Timer.h:37:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490590</commentid>
    <comment_count>6</comment_count>
      <attachid>358010</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-12-21 18:53:39 -0800</bug_when>
    <thetext>Created attachment 358010
WIP3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490591</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-21 18:55:09 -0800</bug_when>
    <thetext>Attachment 358010 did not pass style-queue:


ERROR: Source/WebCore/platform/Timer.cpp:76:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Timer.cpp:430:  Use &apos;WTF::Optional&lt;&gt;&apos; instead of &apos;std::optional&lt;&gt;&apos;.  [runtime/wtf_optional] [4]
ERROR: Source/WebCore/platform/Timer.cpp:445:  Use &apos;WTF::Optional&lt;&gt;&apos; instead of &apos;std::optional&lt;&gt;&apos;.  [runtime/wtf_optional] [4]
ERROR: Source/WebCore/platform/Timer.h:37:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490758</commentid>
    <comment_count>8</comment_count>
      <attachid>358055</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-12-24 23:17:34 -0800</bug_when>
    <thetext>Created attachment 358055
Adds the hardening</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490785</commentid>
    <comment_count>9</comment_count>
      <attachid>358055</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-12-25 09:59:36 -0800</bug_when>
    <thetext>Comment on attachment 358055
Adds the hardening

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

&gt; Source/WebCore/platform/Timer.cpp:85
&gt; +    RefPtr&lt;ThreadTimerHeapItem&gt;* m_pointer;

What is the point of using a RefPtr?

&gt; Source/WebCore/platform/Timer.cpp:107
&gt; +    RefPtr&lt;ThreadTimerHeapItem&gt;&amp; m_reference;

What is the point of using a RefPtr?

&gt; Source/WebCore/platform/Timer.cpp:138
&gt; +    RefPtr&lt;ThreadTimerHeapItem&gt; timerA = a.copyRef();

Why the ref’ing? here and the line below? Where are these deref’ed()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493002</commentid>
    <comment_count>10</comment_count>
      <attachid>358055</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-01-09 11:09:04 -0800</bug_when>
    <thetext>Comment on attachment 358055
Adds the hardening

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

&gt;&gt; Source/WebCore/platform/Timer.cpp:85
&gt;&gt; +    RefPtr&lt;ThreadTimerHeapItem&gt;* m_pointer;
&gt; 
&gt; What is the point of using a RefPtr?

To match the type of the heap, which is now Vector&lt;RefPtr&lt;ThreadTimerHeapItem&gt;&gt;.

&gt;&gt; Source/WebCore/platform/Timer.cpp:107
&gt;&gt; +    RefPtr&lt;ThreadTimerHeapItem&gt;&amp; m_reference;
&gt; 
&gt; What is the point of using a RefPtr?

Ditto.

&gt;&gt; Source/WebCore/platform/Timer.cpp:138
&gt;&gt; +    RefPtr&lt;ThreadTimerHeapItem&gt; timerA = a.copyRef();
&gt; 
&gt; Why the ref’ing? here and the line below? Where are these deref’ed()?

I guess we could use std::exchange here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493044</commentid>
    <comment_count>11</comment_count>
      <attachid>358055</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-01-09 13:07:18 -0800</bug_when>
    <thetext>Comment on attachment 358055
Adds the hardening

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

r=me

Kinda of a bummer that it&apos;s still pretty complicated, but seems to give us the robustness we want.

&gt; Source/WebCore/platform/ThreadTimers.cpp:82
&gt; +    if (m_firingTimers) {
&gt; +        m_pendingSharedTimerFireTime = MonotonicTime { };
&gt; +        m_sharedTimer-&gt;stop();
&gt; +    }

We can just move this down below the null timer removal, and keep the old shared behavior.

&gt; Source/WebCore/platform/ThreadTimers.cpp:84
&gt; +    RefPtr&lt;ThreadTimerHeapItem&gt; firstItemWithValidTimer;

We don&apos;t need this out of band state. We can just use m_timerHeap.first().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493172</commentid>
    <comment_count>12</comment_count>
      <attachid>358766</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-01-09 17:09:16 -0800</bug_when>
    <thetext>Created attachment 358766
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493173</commentid>
    <comment_count>13</comment_count>
      <attachid>358766</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-01-09 17:09:25 -0800</bug_when>
    <thetext>Comment on attachment 358766
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493183</commentid>
    <comment_count>14</comment_count>
      <attachid>358771</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-01-09 17:28:28 -0800</bug_when>
    <thetext>Created attachment 358771
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493184</commentid>
    <comment_count>15</comment_count>
      <attachid>358771</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-01-09 17:28:42 -0800</bug_when>
    <thetext>Comment on attachment 358771
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493186</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-09 17:30:58 -0800</bug_when>
    <thetext>Attachment 358771 did not pass style-queue:


ERROR: Source/WebCore/platform/Timer.cpp:110:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493195</commentid>
    <comment_count>17</comment_count>
      <attachid>358771</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-09 18:27:53 -0800</bug_when>
    <thetext>Comment on attachment 358771
Patch for landing

Clearing flags on attachment: 358771

Committed r239814: &lt;https://trac.webkit.org/changeset/239814&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493196</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-09 18:27:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493197</commentid>
    <comment_count>19</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-01-09 18:33:20 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #10)
&gt; Comment on attachment 358055 [details]
&gt; Adds the hardening
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=358055&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/Timer.cpp:85
&gt; &gt;&gt; +    RefPtr&lt;ThreadTimerHeapItem&gt;* m_pointer;
&gt; &gt; 
&gt; &gt; What is the point of using a RefPtr?
&gt; 
&gt; To match the type of the heap, which is now
&gt; Vector&lt;RefPtr&lt;ThreadTimerHeapItem&gt;&gt;.
&gt; 

This seems silly, but maybe I missed something. If it makes you feel warm and fuzzy then it has a purpose :/

&gt; &gt;&gt; Source/WebCore/platform/Timer.cpp:107
&gt; &gt;&gt; +    RefPtr&lt;ThreadTimerHeapItem&gt;&amp; m_reference;
&gt; &gt; 
&gt; &gt; What is the point of using a RefPtr?
&gt; 
&gt; Ditto.
&gt; 

Similarly, silly, but maybe I missed something. If it makes you feel warm and fuzzy then it has a purpose. :/

&gt; &gt;&gt; Source/WebCore/platform/Timer.cpp:138
&gt; &gt;&gt; +    RefPtr&lt;ThreadTimerHeapItem&gt; timerA = a.copyRef();
&gt; &gt; 
&gt; &gt; Why the ref’ing? here and the line below? Where are these deref’ed()?
&gt; 
&gt; I guess we could use std::exchange here.


You didn’t answer either question :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493203</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-01-09 19:10:44 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #19)
&gt; (In reply to Ryosuke Niwa from comment #10)
&gt; &gt; Comment on attachment 358055 [details]
&gt; &gt; Adds the hardening
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=358055&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/platform/Timer.cpp:85
&gt; &gt; &gt;&gt; +    RefPtr&lt;ThreadTimerHeapItem&gt;* m_pointer;
&gt; &gt; &gt; 
&gt; &gt; &gt; What is the point of using a RefPtr?
&gt; &gt; 
&gt; &gt; To match the type of the heap, which is now
&gt; &gt; Vector&lt;RefPtr&lt;ThreadTimerHeapItem&gt;&gt;.
&gt; &gt; 
&gt; 
&gt; This seems silly, but maybe I missed something. If it makes you feel warm
&gt; and fuzzy then it has a purpose :/

Why?TimerHeapPointer and TimerHeapReference are pointer &amp; reference types used to define a std::iterator for push_heap / pop_heap:

std::iterator&lt;std::random_access_iterator_tag, RefPtr&lt;ThreadTimerHeapItem&gt;, ptrdiff_t, TimerHeapPointer, TimerHeapReference&gt;

What is the point of avoid using RefPtr&lt;ThreadTimerHeapItem&gt; in this case? What we have is, NOT, RefPtr&lt;ThreadTimerHeapItem&gt; but rather a pointer and a reference to RefPtr&lt;ThreadTimerHeapItem&gt;. We have these two classes in std::iterator in order to override assignment operators to update the heap index in each ThreadTimerHeapItem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501528</commentid>
    <comment_count>21</comment_count>
      <attachid>358771</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-02-02 14:31:42 -0800</bug_when>
    <thetext>Comment on attachment 358771
Patch for landing

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

&gt; Source/WebCore/platform/Timer.h:99
&gt; +    bool m_wasDeleted { false };

Sadly this change increased padding of all classes that use timers:

+992 &lt; 56&gt;         WebCore::Timer m_layoutTimer
+992 &lt; 48&gt;             WebCore::TimerBase WebCore::TimerBase
+992 &lt;  8&gt;                __vtbl_ptr_type * _vptr
+1000 &lt;  8&gt;                 WTF::MonotonicTime m_unalignedNextFireTime
+1000 &lt;  8&gt;                   double m_value
+1008 &lt;  8&gt;                 WTF::Seconds m_repeatInterval
+1008 &lt;  8&gt;                   double m_value
+1016 &lt;  1&gt;               bool m_wasDeleted
+1017 &lt;  7&gt;               &lt;PADDING: 7 bytes&gt;

This effectively reverted r234581.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501554</commentid>
    <comment_count>22</comment_count>
      <attachid>358771</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-02 17:32:23 -0800</bug_when>
    <thetext>Comment on attachment 358771
Patch for landing

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

&gt;&gt; Source/WebCore/platform/Timer.h:99
&gt;&gt; +    bool m_wasDeleted { false };
&gt; 
&gt; Sadly this change increased padding of all classes that use timers:
&gt; 
&gt; +992 &lt; 56&gt;         WebCore::Timer m_layoutTimer
&gt; +992 &lt; 48&gt;             WebCore::TimerBase WebCore::TimerBase
&gt; +992 &lt;  8&gt;                __vtbl_ptr_type * _vptr
&gt; +1000 &lt;  8&gt;                 WTF::MonotonicTime m_unalignedNextFireTime
&gt; +1000 &lt;  8&gt;                   double m_value
&gt; +1008 &lt;  8&gt;                 WTF::Seconds m_repeatInterval
&gt; +1008 &lt;  8&gt;                   double m_value
&gt; +1016 &lt;  1&gt;               bool m_wasDeleted
&gt; +1017 &lt;  7&gt;               &lt;PADDING: 7 bytes&gt;
&gt; 
&gt; This effectively reverted r234581.

On the other hand, I removed one word by removing m_heapIndex, m_wasDeleted, and m_heapInsertionOrder
so TimerBase should actually be smaller now?

Having said that, we might be able to delete m_wasDeleted if we&apos;ve categorically fixed timer related crashes,
which I&apos;m hoping to get a proof of soon from the crash tracer.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357931</attachid>
            <date>2018-12-20 23:22:48 -0800</date>
            <delta_ts>2018-12-24 23:17:28 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wip192975.patch</filename>
            <type>text/plain</type>
            <size>14492</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcAkocmV2aXNpb24g
MjM5NDAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA0LDggKzEwNCwxNiBAQAogICAgIE1vbm90b25pY1RpbWUgZmlyZVRp
bWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBNb25vdG9uaWNUaW1lIHRpbWVUb1F1aXQg
PSBmaXJlVGltZSArIG1heER1cmF0aW9uT2ZGaXJpbmdUaW1lcnM7CiAKLSAgICB3aGlsZSAoIW1f
dGltZXJIZWFwLmlzRW1wdHkoKSAmJiBtX3RpbWVySGVhcC5maXJzdCgpLT5tX25leHRGaXJlVGlt
ZSA8PSBmaXJlVGltZSkgewotICAgICAgICBUaW1lckJhc2UqIHRpbWVyID0gbV90aW1lckhlYXAu
Zmlyc3QoKTsKKyAgICB3aGlsZSAoIW1fdGltZXJIZWFwLmlzRW1wdHkoKSkgeworICAgICAgICBX
ZWFrUHRyPFRpbWVyQmFzZT4gdGltZXIgPSBtX3RpbWVySGVhcC5maXJzdCgpOworICAgICAgICBp
ZiAoIXRpbWVyKSB7CisgICAgICAgICAgICBUaW1lckJhc2U6OmhlYXBQb3BOdWxsTWluKG1fdGlt
ZXJIZWFwKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHRpbWVyLT5tX25leHRGaXJlVGltZSA+IGZpcmVUaW1lKQorICAgICAgICAgICAgYnJlYWs7CisK
ICAgICAgICAgdGltZXItPm1fbmV4dEZpcmVUaW1lID0gTW9ub3RvbmljVGltZSB7IH07CiAgICAg
ICAgIHRpbWVyLT5tX3VuYWxpZ25lZE5leHRGaXJlVGltZSA9IE1vbm90b25pY1RpbWUgeyB9Owog
ICAgICAgICB0aW1lci0+aGVhcERlbGV0ZU1pbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhyZWFkVGltZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhyZWFkVGltZXJzLmgJKHJldmlzaW9uIDIzOTQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZFRpbWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywzMiArMzMsMzIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU2hhcmVkVGltZXI7Ci0gICAgY2xh
c3MgVGltZXJCYXNlOworY2xhc3MgU2hhcmVkVGltZXI7CitjbGFzcyBUaW1lckJhc2U7CiAKLSAg
ICAvLyBBIGNvbGxlY3Rpb24gb2YgdGltZXJzIHBlciB0aHJlYWQuIEtlcHQgaW4gVGhyZWFkR2xv
YmFsRGF0YS4KLSAgICBjbGFzcyBUaHJlYWRUaW1lcnMgewotICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShUaHJlYWRUaW1lcnMpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIFRocmVhZFRpbWVycygpOworLy8gQSBjb2xsZWN0aW9uIG9mIHRpbWVycyBw
ZXIgdGhyZWFkLiBLZXB0IGluIFRocmVhZEdsb2JhbERhdGEuCitjbGFzcyBUaHJlYWRUaW1lcnMg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZFRpbWVycyk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIFRocmVhZFRpbWVycygpOwogCi0gICAgICAgIC8vIE9u
IGEgdGhyZWFkIGRpZmZlcmVudCB0aGVuIG1haW4sIHdlIHNob3VsZCBzZXQgdGhlIHRocmVhZCdz
IGluc3RhbmNlIG9mIHRoZSBTaGFyZWRUaW1lci4KLSAgICAgICAgdm9pZCBzZXRTaGFyZWRUaW1l
cihTaGFyZWRUaW1lciopOworICAgIC8vIE9uIGEgdGhyZWFkIGRpZmZlcmVudCB0aGVuIG1haW4s
IHdlIHNob3VsZCBzZXQgdGhlIHRocmVhZCdzIGluc3RhbmNlIG9mIHRoZSBTaGFyZWRUaW1lci4K
KyAgICB2b2lkIHNldFNoYXJlZFRpbWVyKFNoYXJlZFRpbWVyKik7CiAKLSAgICAgICAgVmVjdG9y
PFRpbWVyQmFzZSo+JiB0aW1lckhlYXAoKSB7IHJldHVybiBtX3RpbWVySGVhcDsgfQorICAgIFZl
Y3RvcjxXZWFrUHRyPFRpbWVyQmFzZT4+JiB0aW1lckhlYXAoKSB7IHJldHVybiBtX3RpbWVySGVh
cDsgfQogCi0gICAgICAgIHZvaWQgdXBkYXRlU2hhcmVkVGltZXIoKTsKLSAgICAgICAgdm9pZCBm
aXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKKyAgICB2b2lkIHVwZGF0ZVNoYXJlZFRpbWVy
KCk7CisgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIAotICAgIHByaXZh
dGU6Ci0gICAgICAgIHZvaWQgc2hhcmVkVGltZXJGaXJlZEludGVybmFsKCk7Ci0gICAgICAgIHZv
aWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wSW50ZXJuYWwoKTsKK3ByaXZhdGU6CisgICAg
dm9pZCBzaGFyZWRUaW1lckZpcmVkSW50ZXJuYWwoKTsKKyAgICB2b2lkIGZpcmVUaW1lcnNJbk5l
c3RlZEV2ZW50TG9vcEludGVybmFsKCk7CiAKLSAgICAgICAgVmVjdG9yPFRpbWVyQmFzZSo+IG1f
dGltZXJIZWFwOwotICAgICAgICBTaGFyZWRUaW1lciogbV9zaGFyZWRUaW1lciB7IG51bGxwdHIg
fTsgLy8gRXh0ZXJuYWwgb2JqZWN0LCBjYW4gYmUgYSBydW4gbG9vcCBvbiBhIHdvcmtlciB0aHJl
YWQuIE5vcm1hbGx5IHNldC9yZXNldCBieSB3b3JrZXIgdGhyZWFkLgotICAgICAgICBib29sIG1f
ZmlyaW5nVGltZXJzIHsgZmFsc2UgfTsgLy8gUmVlbnRyYW5jeSBndWFyZC4KLSAgICAgICAgTW9u
b3RvbmljVGltZSBtX3BlbmRpbmdTaGFyZWRUaW1lckZpcmVUaW1lOwotICAgIH07CisgICAgVmVj
dG9yPFdlYWtQdHI8VGltZXJCYXNlPj4gbV90aW1lckhlYXA7CisgICAgU2hhcmVkVGltZXIqIG1f
c2hhcmVkVGltZXIgeyBudWxscHRyIH07IC8vIEV4dGVybmFsIG9iamVjdCwgY2FuIGJlIGEgcnVu
IGxvb3Agb24gYSB3b3JrZXIgdGhyZWFkLiBOb3JtYWxseSBzZXQvcmVzZXQgYnkgd29ya2VyIHRo
cmVhZC4KKyAgICBib29sIG1fZmlyaW5nVGltZXJzIHsgZmFsc2UgfTsgLy8gUmVlbnRyYW5jeSBn
dWFyZC4KKyAgICBNb25vdG9uaWNUaW1lIG1fcGVuZGluZ1NoYXJlZFRpbWVyRmlyZVRpbWU7Cit9
OwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAJKHJldmlzaW9uIDIzOTQw
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNyArNTAsNyBAQAogLy8gVGhlbiB3ZSBzZXQgYSBzaW5nbGUgc2hhcmVkIHN5c3RlbSB0
aW1lciB0byBmaXJlIGF0IHRoYXQgdGltZS4KIC8vCiAvLyBXaGVuIGEgdGltZXIncyAibmV4dCBm
aXJlIHRpbWUiIGNoYW5nZXMsIHdlIG5lZWQgdG8gbW92ZSBpdCBhcm91bmQgaW4gdGhlIHByaW9y
aXR5IHF1ZXVlLgotc3RhdGljIFZlY3RvcjxUaW1lckJhc2UqPiYgdGhyZWFkR2xvYmFsVGltZXJI
ZWFwKCkKK3N0YXRpYyBWZWN0b3I8V2Vha1B0cjxUaW1lckJhc2U+PiYgdGhyZWFkR2xvYmFsVGlt
ZXJIZWFwKCkKIHsKICAgICByZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygp
LnRpbWVySGVhcCgpOwogfQpAQCAtNTgsNTIgKzU4LDY4IEBACiAKIGNsYXNzIFRpbWVySGVhcFBv
aW50ZXIgewogcHVibGljOgotICAgIFRpbWVySGVhcFBvaW50ZXIoVGltZXJCYXNlKiogcG9pbnRl
cikgOiBtX3BvaW50ZXIocG9pbnRlcikgeyB9CisgICAgVGltZXJIZWFwUG9pbnRlcihXZWFrUHRy
PFRpbWVyQmFzZT4qIHBvaW50ZXIpIDogbV9wb2ludGVyKHBvaW50ZXIpIHsgfQogICAgIFRpbWVy
SGVhcFJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdDsKLSAgICBUaW1lckJhc2UqIG9wZXJhdG9y
LT4oKSBjb25zdCB7IHJldHVybiAqbV9wb2ludGVyOyB9CisgICAgV2Vha1B0cjxUaW1lckJhc2U+
JiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gKm1fcG9pbnRlcjsgfQogcHJpdmF0ZToKLSAg
ICBUaW1lckJhc2UqKiBtX3BvaW50ZXI7CisgICAgV2Vha1B0cjxUaW1lckJhc2U+KiBtX3BvaW50
ZXI7CiB9OwogCiBjbGFzcyBUaW1lckhlYXBSZWZlcmVuY2UgewogcHVibGljOgotICAgIFRpbWVy
SGVhcFJlZmVyZW5jZShUaW1lckJhc2UqJiByZWZlcmVuY2UpIDogbV9yZWZlcmVuY2UocmVmZXJl
bmNlKSB7IH0KLSAgICBvcGVyYXRvciBUaW1lckJhc2UqKCkgY29uc3QgeyByZXR1cm4gbV9yZWZl
cmVuY2U7IH0KKyAgICBUaW1lckhlYXBSZWZlcmVuY2UoV2Vha1B0cjxUaW1lckJhc2U+JiByZWZl
cmVuY2UpCisgICAgICAgIDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKQorICAgIHsgfQorCisgICAg
VGltZXJIZWFwUmVmZXJlbmNlKGNvbnN0IFRpbWVySGVhcFJlZmVyZW5jZSYgb3RoZXIpCisgICAg
ICAgIDogbV9yZWZlcmVuY2Uob3RoZXIubV9yZWZlcmVuY2UpCisgICAgeyB9CisKKyAgICBvcGVy
YXRvciBXZWFrUHRyPFRpbWVyQmFzZT4mKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2U7IH0K
ICAgICBUaW1lckhlYXBQb2ludGVyIG9wZXJhdG9yJigpIGNvbnN0IHsgcmV0dXJuICZtX3JlZmVy
ZW5jZTsgfQotICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9KFRpbWVyQmFzZSopOwot
ICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9KFRpbWVySGVhcFJlZmVyZW5jZSk7Cisg
ICAgVGltZXJIZWFwUmVmZXJlbmNlJiBvcGVyYXRvcj0oVGltZXJIZWFwUmVmZXJlbmNlJiYpOwor
ICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9KFdlYWtQdHI8VGltZXJCYXNlPiYmKTsK
KworICAgIHZvaWQgdXBkYXRlSGVhcEluZGV4KCk7CisKIHByaXZhdGU6Ci0gICAgVGltZXJCYXNl
KiYgbV9yZWZlcmVuY2U7CisgICAgV2Vha1B0cjxUaW1lckJhc2U+JiBtX3JlZmVyZW5jZTsKIH07
CiAKIGlubGluZSBUaW1lckhlYXBSZWZlcmVuY2UgVGltZXJIZWFwUG9pbnRlcjo6b3BlcmF0b3Iq
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKm1fcG9pbnRlcjsKKyAgICByZXR1cm4gVGltZXJIZWFw
UmVmZXJlbmNlIHsgKm1fcG9pbnRlciB9OwogfQogCi1pbmxpbmUgVGltZXJIZWFwUmVmZXJlbmNl
JiBUaW1lckhlYXBSZWZlcmVuY2U6Om9wZXJhdG9yPShUaW1lckJhc2UqIHRpbWVyKQoraW5saW5l
IFRpbWVySGVhcFJlZmVyZW5jZSYgVGltZXJIZWFwUmVmZXJlbmNlOjpvcGVyYXRvcj0oVGltZXJI
ZWFwUmVmZXJlbmNlJiYgb3RoZXIpCiB7Ci0gICAgbV9yZWZlcmVuY2UgPSB0aW1lcjsKLSAgICBW
ZWN0b3I8VGltZXJCYXNlKj4mIGhlYXAgPSB0aW1lci0+dGltZXJIZWFwKCk7Ci0gICAgaWYgKCZt
X3JlZmVyZW5jZSA+PSBoZWFwLmRhdGEoKSAmJiAmbV9yZWZlcmVuY2UgPCBoZWFwLmRhdGEoKSAr
IGhlYXAuc2l6ZSgpKQotICAgICAgICB0aW1lci0+bV9oZWFwSW5kZXggPSAmbV9yZWZlcmVuY2Ug
LSBoZWFwLmRhdGEoKTsKKyAgICBtX3JlZmVyZW5jZSA9IFdURk1vdmUob3RoZXIubV9yZWZlcmVu
Y2UpOworICAgIHVwZGF0ZUhlYXBJbmRleCgpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotaW5s
aW5lIFRpbWVySGVhcFJlZmVyZW5jZSYgVGltZXJIZWFwUmVmZXJlbmNlOjpvcGVyYXRvcj0oVGlt
ZXJIZWFwUmVmZXJlbmNlIGIpCitpbmxpbmUgVGltZXJIZWFwUmVmZXJlbmNlJiBUaW1lckhlYXBS
ZWZlcmVuY2U6Om9wZXJhdG9yPShXZWFrUHRyPFRpbWVyQmFzZT4mJiB0aW1lcikKIHsKLSAgICBU
aW1lckJhc2UqIHRpbWVyID0gYjsKLSAgICByZXR1cm4gKnRoaXMgPSB0aW1lcjsKKyAgICBtX3Jl
ZmVyZW5jZSA9IFdURk1vdmUodGltZXIpOworICAgIHVwZGF0ZUhlYXBJbmRleCgpOworICAgIHJl
dHVybiAqdGhpczsKIH0KIAoraW5saW5lIHZvaWQgVGltZXJIZWFwUmVmZXJlbmNlOjp1cGRhdGVI
ZWFwSW5kZXgoKQoreworICAgIFZlY3RvcjxXZWFrUHRyPFRpbWVyQmFzZT4+JiBoZWFwID0gbV9y
ZWZlcmVuY2UtPnRpbWVySGVhcCgpOworICAgIGlmICgmbV9yZWZlcmVuY2UgPj0gaGVhcC5kYXRh
KCkgJiYgJm1fcmVmZXJlbmNlIDwgaGVhcC5kYXRhKCkgKyBoZWFwLnNpemUoKSkKKyAgICAgICAg
bV9yZWZlcmVuY2UtPm1faGVhcEluZGV4ID0gJm1fcmVmZXJlbmNlIC0gaGVhcC5kYXRhKCk7Cit9
CisKIGlubGluZSB2b2lkIHN3YXAoVGltZXJIZWFwUmVmZXJlbmNlIGEsIFRpbWVySGVhcFJlZmVy
ZW5jZSBiKQogewotICAgIFRpbWVyQmFzZSogdGltZXJBID0gYTsKLSAgICBUaW1lckJhc2UqIHRp
bWVyQiA9IGI7CisgICAgV2Vha1B0cjxUaW1lckJhc2U+IHRpbWVyQSA9IGE7CisgICAgV2Vha1B0
cjxUaW1lckJhc2U+IHRpbWVyQiA9IGI7CiAKICAgICAvLyBJbnZva2UgdGhlIGFzc2lnbm1lbnQg
b3BlcmF0b3IsIHNpbmNlIHRoYXQgdGFrZXMgY2FyZSBvZiB1cGRhdGluZyBtX2hlYXBJbmRleC4K
LSAgICBhID0gdGltZXJCOwotICAgIGIgPSB0aW1lckE7CisgICAgYSA9IFdURk1vdmUodGltZXJC
KTsKKyAgICBiID0gV1RGTW92ZSh0aW1lckEpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tCkBA
IC0xMTAsOSArMTI2LDkgQEAKIAogLy8gQ2xhc3MgdG8gcmVwcmVzZW50IGl0ZXJhdG9ycyBpbiB0
aGUgaGVhcCB3aGVuIGNhbGxpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaGVhcCBhbGdvcml0aG1z
LgogLy8gVXNlcyBhIGN1c3RvbSBwb2ludGVyIGFuZCByZWZlcmVuY2UgdHlwZSB0aGF0IHVwZGF0
ZSBpbmRpY2VzIGZvciBwb2ludGVycyBpbiB0aGUgaGVhcC4KLWNsYXNzIFRpbWVySGVhcEl0ZXJh
dG9yIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZywgVGltZXJCYXNlKiwgcHRyZGlmZl90LCBUaW1lckhlYXBQb2ludGVyLCBUaW1lckhlYXBSZWZl
cmVuY2U+IHsKK2NsYXNzIFRpbWVySGVhcEl0ZXJhdG9yIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8
c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywgV2Vha1B0cjxUaW1lckJhc2U+LCBwdHJk
aWZmX3QsIFRpbWVySGVhcFBvaW50ZXIsIFRpbWVySGVhcFJlZmVyZW5jZT4gewogcHVibGljOgot
ICAgIGV4cGxpY2l0IFRpbWVySGVhcEl0ZXJhdG9yKFRpbWVyQmFzZSoqIHBvaW50ZXIpIDogbV9w
b2ludGVyKHBvaW50ZXIpIHsgY2hlY2tDb25zaXN0ZW5jeSgpOyB9CisgICAgZXhwbGljaXQgVGlt
ZXJIZWFwSXRlcmF0b3IoV2Vha1B0cjxUaW1lckJhc2U+KiBwb2ludGVyKSA6IG1fcG9pbnRlcihw
b2ludGVyKSB7IGNoZWNrQ29uc2lzdGVuY3koKTsgfQogCiAgICAgVGltZXJIZWFwSXRlcmF0b3Im
IG9wZXJhdG9yKysoKSB7IGNoZWNrQ29uc2lzdGVuY3koKTsgKyttX3BvaW50ZXI7IGNoZWNrQ29u
c2lzdGVuY3koKTsgcmV0dXJuICp0aGlzOyB9CiAgICAgVGltZXJIZWFwSXRlcmF0b3Igb3BlcmF0
b3IrKyhpbnQpIHsgY2hlY2tDb25zaXN0ZW5jeSgxKTsgcmV0dXJuIFRpbWVySGVhcEl0ZXJhdG9y
KG1fcG9pbnRlcisrKTsgfQpAQCAtMTI1LDcgKzE0MSw3IEBACiAKICAgICBUaW1lckhlYXBSZWZl
cmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gVGltZXJIZWFwUmVmZXJlbmNlKCptX3Bv
aW50ZXIpOyB9CiAgICAgVGltZXJIZWFwUmVmZXJlbmNlIG9wZXJhdG9yW10ocHRyZGlmZl90IGkp
IGNvbnN0IHsgcmV0dXJuIFRpbWVySGVhcFJlZmVyZW5jZShtX3BvaW50ZXJbaV0pOyB9Ci0gICAg
VGltZXJCYXNlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gKm1fcG9pbnRlcjsgfQorICAg
IFdlYWtQdHI8VGltZXJCYXNlPiYgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICptX3BvaW50
ZXI7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3kocHRyZGlmZl90IG9m
ZnNldCA9IDApIGNvbnN0CkBAIC0xNDksNyArMTY1LDcgQEAKICAgICBmcmllbmQgVGltZXJIZWFw
SXRlcmF0b3Igb3BlcmF0b3ItKFRpbWVySGVhcEl0ZXJhdG9yLCBzaXplX3QpOwogICAgIGZyaWVu
ZCBwdHJkaWZmX3Qgb3BlcmF0b3ItKFRpbWVySGVhcEl0ZXJhdG9yLCBUaW1lckhlYXBJdGVyYXRv
cik7CiAKLSAgICBUaW1lckJhc2UqKiBtX3BvaW50ZXI7CisgICAgV2Vha1B0cjxUaW1lckJhc2U+
KiBtX3BvaW50ZXI7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFRpbWVySGVhcEl0ZXJh
dG9yIGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIpIHsgcmV0dXJuIGEubV9wb2ludGVyID09IGIubV9w
b2ludGVyOyB9CkBAIC0xNjksMjAgKzE4NSwyNyBAQAogCiBjbGFzcyBUaW1lckhlYXBMZXNzVGhh
bkZ1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNl
KiwgY29uc3QgVGltZXJCYXNlKikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25z
dCBUaW1lckJhc2UqIGEsIGNvbnN0IFRpbWVyQmFzZSogYik7CisKKyAgICBib29sIG9wZXJhdG9y
KCkoY29uc3QgV2Vha1B0cjxUaW1lckJhc2U+IGEsIGNvbnN0IFdlYWtQdHI8VGltZXJCYXNlPiBi
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmUoYS5nZXQoKSwgYi5nZXQoKSk7
CisgICAgfQogfTsKIAotaW5saW5lIGJvb2wgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbjo6b3Bl
cmF0b3IoKShjb25zdCBUaW1lckJhc2UqIGEsIGNvbnN0IFRpbWVyQmFzZSogYikgY29uc3QKK2lu
bGluZSBib29sIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb246OmNvbXBhcmUoY29uc3QgVGltZXJC
YXNlKiBhLCBjb25zdCBUaW1lckJhc2UqIGIpCiB7Ci0gICAgLy8gVGhlIGNvbXBhcmlzb25zIGJl
bG93IGFyZSAiYmFja3dhcmRzIiBiZWNhdXNlIHRoZSBoZWFwIHB1dHMgdGhlIGxhcmdlc3QgCisg
ICAgQVNTRVJUKCFhLT5tX3dhc0RlbGV0ZWQpOworICAgIEFTU0VSVCghYi0+bV93YXNEZWxldGVk
KTsKKyAgICAvLyBUaGUgY29tcGFyaXNvbnMgYmVsb3cgYXJlICJiYWNrd2FyZHMiIGJlY2F1c2Ug
dGhlIGhlYXAgcHV0cyB0aGUgbGFyZ2VzdAogICAgIC8vIGVsZW1lbnQgZmlyc3QgYW5kIHdlIHdh
bnQgdGhlIGxvd2VzdCB0aW1lIHRvIGJlIHRoZSBmaXJzdCBvbmUgaW4gdGhlIGhlYXAuCiAgICAg
TW9ub3RvbmljVGltZSBhRmlyZVRpbWUgPSBhLT5tX25leHRGaXJlVGltZTsKICAgICBNb25vdG9u
aWNUaW1lIGJGaXJlVGltZSA9IGItPm1fbmV4dEZpcmVUaW1lOwogICAgIGlmIChiRmlyZVRpbWUg
IT0gYUZpcmVUaW1lKQogICAgICAgICByZXR1cm4gYkZpcmVUaW1lIDwgYUZpcmVUaW1lOwotICAg
IAotICAgIC8vIFdlIG5lZWQgdG8gbG9vayBhdCB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgaW5zZXJ0
aW9uIG9yZGVycyBpbnN0ZWFkIG9mIGNvbXBhcmluZyB0aGUgdHdvIAotICAgIC8vIG91dHJpZ2h0
IGluIGNhc2Ugb2Ygb3ZlcmZsb3cuIAorCisgICAgLy8gV2UgbmVlZCB0byBsb29rIGF0IHRoZSBk
aWZmZXJlbmNlIG9mIHRoZSBpbnNlcnRpb24gb3JkZXJzIGluc3RlYWQgb2YgY29tcGFyaW5nIHRo
ZSB0d28KKyAgICAvLyBvdXRyaWdodCBpbiBjYXNlIG9mIG92ZXJmbG93LgogICAgIHVuc2lnbmVk
IGRpZmZlcmVuY2UgPSBhLT5tX2hlYXBJbnNlcnRpb25PcmRlciAtIGItPm1faGVhcEluc2VydGlv
bk9yZGVyOwogICAgIHJldHVybiBkaWZmZXJlbmNlIDwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpIC8gMjsKIH0KQEAgLTI1MSw2ICsyNzQsMTIgQEAKICAgICBBU1NFUlQobV9o
ZWFwSW5kZXggPj0gMCk7CiAgICAgQVNTRVJUKG1faGVhcEluZGV4IDwgc3RhdGljX2Nhc3Q8aW50
Pih0aW1lckhlYXAoKS5zaXplKCkpKTsKICAgICBBU1NFUlQodGltZXJIZWFwKClbbV9oZWFwSW5k
ZXhdID09IHRoaXMpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBBU1NFUlQodGltZXJIZWFw
KCkuc2l6ZSgpIDwgSU5UX01BWCk7CisgICAgaW50IHNpemUgPSB0aW1lckhlYXAoKS5zaXplKCk7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgICAgIEFTU0VSVCh0aW1l
ckhlYXAoKVtpXS0+bV9oZWFwSW5kZXggPT0gaSk7CisjZW5kaWYKIH0KIAogaW5saW5lIHZvaWQg
VGltZXJCYXNlOjpjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKQEAgLTI2NSw3ICsyOTQsNyBAQAog
ewogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxib29sPihtX25leHRGaXJlVGltZSkpOwogICAgIGNo
ZWNrSGVhcEluZGV4KCk7Ci0gICAgVGltZXJCYXNlKiogaGVhcERhdGEgPSB0aW1lckhlYXAoKS5k
YXRhKCk7CisgICAgV2Vha1B0cjxUaW1lckJhc2U+KiBoZWFwRGF0YSA9IHRpbWVySGVhcCgpLmRh
dGEoKTsKICAgICBwdXNoX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEpLCBUaW1lckhl
YXBJdGVyYXRvcihoZWFwRGF0YSArIG1faGVhcEluZGV4ICsgMSksIFRpbWVySGVhcExlc3NUaGFu
RnVuY3Rpb24oKSk7CiAgICAgY2hlY2tIZWFwSW5kZXgoKTsKIH0KQEAgLTI5Niw3ICszMjUsNyBA
QAogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwSW5zZXJ0KCkKIHsKICAgICBBU1NFUlQoIWlu
SGVhcCgpKTsKLSAgICB0aW1lckhlYXAoKS5hcHBlbmQodGhpcyk7CisgICAgdGltZXJIZWFwKCku
YXBwZW5kKG1ha2VXZWFrUHRyKHRoaXMpKTsKICAgICBtX2hlYXBJbmRleCA9IHRpbWVySGVhcCgp
LnNpemUoKSAtIDE7CiAgICAgaGVhcERlY3JlYXNlS2V5KCk7CiB9CkBAIC0zMTUsMjggKzM0NCwz
MyBAQAogewogICAgIEFTU0VSVCh0aGlzID09IHRpbWVySGVhcCgpLmZpcnN0KCkpOwogICAgIGNo
ZWNrSGVhcEluZGV4KCk7Ci0gICAgVmVjdG9yPFRpbWVyQmFzZSo+JiBoZWFwID0gdGltZXJIZWFw
KCk7Ci0gICAgVGltZXJCYXNlKiogaGVhcERhdGEgPSBoZWFwLmRhdGEoKTsKKyAgICBhdXRvJiBo
ZWFwID0gdGltZXJIZWFwKCk7CisgICAgYXV0byogaGVhcERhdGEgPSBoZWFwLmRhdGEoKTsKICAg
ICBwb3BfaGVhcChUaW1lckhlYXBJdGVyYXRvcihoZWFwRGF0YSksIFRpbWVySGVhcEl0ZXJhdG9y
KGhlYXBEYXRhICsgaGVhcC5zaXplKCkpLCBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uKCkpOwog
ICAgIGNoZWNrSGVhcEluZGV4KCk7CiAgICAgQVNTRVJUKHRoaXMgPT0gdGltZXJIZWFwKCkubGFz
dCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHBhcmVudEhlYXBQcm9wZXJ0eUhvbGRzKGNv
bnN0IFRpbWVyQmFzZSogY3VycmVudCwgY29uc3QgVmVjdG9yPFRpbWVyQmFzZSo+JiBoZWFwLCB1
bnNpZ25lZCBjdXJyZW50SW5kZXgpCit2b2lkIFRpbWVyQmFzZTo6aGVhcFBvcE51bGxNaW4oVmVj
dG9yPFdlYWtQdHI8VGltZXJCYXNlPj4mIGhlYXApCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWhl
YXAuZmlyc3QoKSk7CisgICAgYXV0byogaGVhcERhdGEgPSBoZWFwLmRhdGEoKTsKKyAgICBwb3Bf
aGVhcChUaW1lckhlYXBJdGVyYXRvcihoZWFwRGF0YSksIFRpbWVySGVhcEl0ZXJhdG9yKGhlYXBE
YXRhICsgaGVhcC5zaXplKCkpLCBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uKCkpOworfQorCitz
dGF0aWMgaW5saW5lIGJvb2wgcGFyZW50SGVhcFByb3BlcnR5SG9sZHMoY29uc3QgVGltZXJCYXNl
KiBjdXJyZW50LCBjb25zdCBWZWN0b3I8V2Vha1B0cjxUaW1lckJhc2U+PiYgaGVhcCwgdW5zaWdu
ZWQgY3VycmVudEluZGV4KQorewogICAgIGlmICghY3VycmVudEluZGV4KQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB1bnNpZ25lZCBwYXJlbnRJbmRleCA9IChjdXJyZW50SW5kZXggLSAxKSAv
IDI7Ci0gICAgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbiBjb21wYXJlSGVhcFBvc2l0aW9uOwot
ICAgIHJldHVybiBjb21wYXJlSGVhcFBvc2l0aW9uKGN1cnJlbnQsIGhlYXBbcGFyZW50SW5kZXhd
KTsKKyAgICByZXR1cm4gVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbjo6Y29tcGFyZShjdXJyZW50
LCBoZWFwW3BhcmVudEluZGV4XS5nZXQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjaGls
ZEhlYXBQcm9wZXJ0eUhvbGRzKGNvbnN0IFRpbWVyQmFzZSogY3VycmVudCwgY29uc3QgVmVjdG9y
PFRpbWVyQmFzZSo+JiBoZWFwLCB1bnNpZ25lZCBjaGlsZEluZGV4KQorc3RhdGljIGlubGluZSBi
b29sIGNoaWxkSGVhcFByb3BlcnR5SG9sZHMoY29uc3QgVGltZXJCYXNlKiBjdXJyZW50LCBjb25z
dCBWZWN0b3I8V2Vha1B0cjxUaW1lckJhc2U+PiYgaGVhcCwgdW5zaWduZWQgY2hpbGRJbmRleCkK
IHsKICAgICBpZiAoY2hpbGRJbmRleCA+PSBoZWFwLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbiBjb21wYXJlSGVhcFBvc2l0aW9uOwot
ICAgIHJldHVybiBjb21wYXJlSGVhcFBvc2l0aW9uKGhlYXBbY2hpbGRJbmRleF0sIGN1cnJlbnQp
OworICAgIHJldHVybiBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uOjpjb21wYXJlKGhlYXBbY2hp
bGRJbmRleF0uZ2V0KCksIGN1cnJlbnQpOwogfQogCiBib29sIFRpbWVyQmFzZTo6aGFzVmFsaWRI
ZWFwUG9zaXRpb24oKSBjb25zdApAQCAtMzQ3LDcgKzM4MSw3IEBACiAgICAgLy8gQ2hlY2sgaWYg
dGhlIGhlYXAgcHJvcGVydHkgc3RpbGwgaG9sZHMgd2l0aCB0aGUgbmV3IGZpcmUgdGltZS4gSWYg
aXQgZG9lcyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLgogICAgIC8vIFRoaXMgYXNzdW1l
cyB0aGF0IHRoZSBTVEwgaGVhcCBpcyBhIHN0YW5kYXJkIGJpbmFyeSBoZWFwLiBJbiBhbiB1bmxp
a2VseSBldmVudCBpdCBpcyBub3QsIHRoZSBhc3NlcnRpb25zCiAgICAgLy8gaW4gdXBkYXRlSGVh
cElmTmVlZGVkKCkgd2lsbCBnZXQgaGl0LgotICAgIGNvbnN0IFZlY3RvcjxUaW1lckJhc2UqPiYg
aGVhcCA9IHRpbWVySGVhcCgpOworICAgIGNvbnN0IGF1dG8mIGhlYXAgPSB0aW1lckhlYXAoKTsK
ICAgICBpZiAoIXBhcmVudEhlYXBQcm9wZXJ0eUhvbGRzKHRoaXMsIGhlYXAsIG1faGVhcEluZGV4
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgxID0gMiAq
IG1faGVhcEluZGV4ICsgMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkocmV2aXNpb24g
MjM5NDAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJXZWJDb3Jl
VGhyZWFkLmgiCkBAIC00NCw3ICs0NSw3IEBACiAKIGNsYXNzIFRpbWVySGVhcEVsZW1lbnQ7CiAK
LWNsYXNzIFRpbWVyQmFzZSB7CitjbGFzcyBUaW1lckJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8VGltZXJCYXNlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGltZXJCYXNlKTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTkyLDggKzkzLDkgQEAKICAg
ICB2b2lkIGhlYXBJbnNlcnQoKTsKICAgICB2b2lkIGhlYXBQb3AoKTsKICAgICB2b2lkIGhlYXBQ
b3BNaW4oKTsKKyAgICBzdGF0aWMgdm9pZCBoZWFwUG9wTnVsbE1pbihWZWN0b3I8V2Vha1B0cjxU
aW1lckJhc2U+PiYpOwogCi0gICAgVmVjdG9yPFRpbWVyQmFzZSo+JiB0aW1lckhlYXAoKSBjb25z
dCB7IEFTU0VSVChtX2NhY2hlZFRocmVhZEdsb2JhbFRpbWVySGVhcCk7IHJldHVybiAqbV9jYWNo
ZWRUaHJlYWRHbG9iYWxUaW1lckhlYXA7IH0KKyAgICBWZWN0b3I8V2Vha1B0cjxUaW1lckJhc2U+
PiYgdGltZXJIZWFwKCkgY29uc3QgeyBBU1NFUlQobV9jYWNoZWRUaHJlYWRHbG9iYWxUaW1lckhl
YXApOyByZXR1cm4gKm1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwOyB9CiAKICAgICBNb25v
dG9uaWNUaW1lIG1fbmV4dEZpcmVUaW1lOyAvLyAwIGlmIGluYWN0aXZlCiAgICAgTW9ub3Rvbmlj
VGltZSBtX3VuYWxpZ25lZE5leHRGaXJlVGltZTsgLy8gbV9uZXh0RmlyZVRpbWUgbm90IGNvbnNp
ZGVyaW5nIGFsaWdubWVudCBpbnRlcnZhbApAQCAtMTAxLDcgKzEwMyw3IEBACiAgICAgc2lnbmVk
IGludCBtX2hlYXBJbmRleCA6IDMxOyAvLyAtMSBpZiBub3QgaW4gaGVhcAogICAgIGJvb2wgbV93
YXNEZWxldGVkIDogMTsKICAgICB1bnNpZ25lZCBtX2hlYXBJbnNlcnRpb25PcmRlcjsgLy8gVXNl
ZCB0byBrZWVwIG9yZGVyIGFtb25nIGVxdWFsLWZpcmUtdGltZSB0aW1lcnMKLSAgICBWZWN0b3I8
VGltZXJCYXNlKj4qIG1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwIHsgbnVsbHB0ciB9Owor
ICAgIFZlY3RvcjxXZWFrUHRyPFRpbWVyQmFzZT4+KiBtX2NhY2hlZFRocmVhZEdsb2JhbFRpbWVy
SGVhcCB7IG51bGxwdHIgfTsKIAogICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhyZWFkOjpj
dXJyZW50KCkgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357980</attachid>
            <date>2018-12-21 14:39:47 -0800</date>
            <delta_ts>2018-12-24 23:17:29 -0800</delta_ts>
            <desc>WIP2</desc>
            <filename>wip192975b.patch</filename>
            <type>text/plain</type>
            <size>21870</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIzOTQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDUyLDcgKzQ1Miw3IEBACiAJ
CTE1OTc0MURCMUI3RDE0MDEwMDIwMUM5MiAvKiBKU01lZGlhRGV2aWNlSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTU3Q0MyNjIxQjdDMUNBNDAw
RDhEMDc1IC8qIEpTTWVkaWFEZXZpY2VJbmZvLmggKi87IH07CiAJCTE1Qzc3MDhEMTAwRDNDNkIw
MDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNUM3NzA4QTEwMEQzQzZBMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE1
Qzc3MDkzMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1Qzc3MDkxMTAwRDNDQTgwMDVCQTI2
NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCAqLzsgfTsKLQkJMTg1QkNGMjkwRjMyNzlDRTAwMEVBMjYy
IC8qIFRocmVhZFRpbWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovOyB9
OworCQkxODVCQ0YyOTBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODVCQ0YyNzBGMzI3OUNFMDAw
RUEyNjIgLyogVGhyZWFkVGltZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMTg4NjA0QjQwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODg2MDRCMjBG
MkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxOEY4MzFCODBGRDQ4Qzc4MDBEOEM1NkIgLyogV29ya2Vy
TG9hZGVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE4RjgzMUI3MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2FkZXJQcm94eS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE5MjEzMjc1MTFD
MEU2QkIwMDQ1NjIzOCAvKiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTkyMTMyNzIxMUMwRTZCQjAwNDU2
MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggKi87IH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAJKHJldmlzaW9uIDIzOTQwMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc1LDEyICs3NSwyOCBAQAogewogICAgIGlmICghbV9zaGFyZWRUaW1lcikKICAgICAgICAgcmV0
dXJuOwotICAgICAgICAKLSAgICBpZiAobV9maXJpbmdUaW1lcnMgfHwgbV90aW1lckhlYXAuaXNF
bXB0eSgpKSB7CisgICAgCisgICAgaWYgKG1fZmlyaW5nVGltZXJzKSB7CiAgICAgICAgIG1fcGVu
ZGluZ1NoYXJlZFRpbWVyRmlyZVRpbWUgPSBNb25vdG9uaWNUaW1lIHsgfTsKICAgICAgICAgbV9z
aGFyZWRUaW1lci0+c3RvcCgpOworICAgIH0KKworICAgIFdlYWtQdHI8VGltZXJCYXNlPiBmaXJz
dFRpbWVyOworICAgIHdoaWxlICghbV90aW1lckhlYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1
dG8mIGl0ZW0gPSBtX3RpbWVySGVhcC5maXJzdCgpOworICAgICAgICBpZiAoaXRlbS50aW1lcikg
eworICAgICAgICAgICAgZmlyc3RUaW1lciA9IGl0ZW0udGltZXI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBUaW1lckJhc2U6OmhlYXBEZWxldGVOdWxsTWluKG1fdGlt
ZXJIZWFwKTsKKyAgICB9CisgICAgQVNTRVJUKGZpcnN0VGltZXIgfHwgbV90aW1lckhlYXAuaXNF
bXB0eSgpKTsKKworICAgIGlmIChtX3RpbWVySGVhcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9w
ZW5kaW5nU2hhcmVkVGltZXJGaXJlVGltZSA9IE1vbm90b25pY1RpbWUgeyB9OworICAgICAgICBt
X3NoYXJlZFRpbWVyLT5zdG9wKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgTW9ub3RvbmljVGlt
ZSBuZXh0RmlyZVRpbWUgPSBtX3RpbWVySGVhcC5maXJzdCgpLT5tX25leHRGaXJlVGltZTsKKyAg
ICAgICAgTW9ub3RvbmljVGltZSBuZXh0RmlyZVRpbWUgPSBmaXJzdFRpbWVyLT5tX25leHRGaXJl
VGltZTsKICAgICAgICAgTW9ub3RvbmljVGltZSBjdXJyZW50TW9ub3RvbmljVGltZSA9IE1vbm90
b25pY1RpbWU6Om5vdygpOwogICAgICAgICBpZiAobV9wZW5kaW5nU2hhcmVkVGltZXJGaXJlVGlt
ZSkgewogICAgICAgICAgICAgLy8gTm8gbmVlZCB0byByZXN0YXJ0IHRoZSB0aW1lciBpZiBib3Ro
IHRoZSBwZW5kaW5nIGZpcmUgdGltZSBhbmQgdGhlIG5ldyBmaXJlIHRpbWUgYXJlIGluIHRoZSBw
YXN0LgpAQCAtMTA0LDEwICsxMjAsMjAgQEAKICAgICBNb25vdG9uaWNUaW1lIGZpcmVUaW1lID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgTW9ub3RvbmljVGltZSB0aW1lVG9RdWl0ID0gZmly
ZVRpbWUgKyBtYXhEdXJhdGlvbk9mRmlyaW5nVGltZXJzOwogCi0gICAgd2hpbGUgKCFtX3RpbWVy
SGVhcC5pc0VtcHR5KCkgJiYgbV90aW1lckhlYXAuZmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUgPD0g
ZmlyZVRpbWUpIHsKLSAgICAgICAgVGltZXJCYXNlKiB0aW1lciA9IG1fdGltZXJIZWFwLmZpcnN0
KCk7CisgICAgd2hpbGUgKCFtX3RpbWVySGVhcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byYg
aXRlbSA9IG1fdGltZXJIZWFwLmZpcnN0KCk7CisgICAgICAgIGF1dG8qIHRpbWVyID0gaXRlbS50
aW1lci5nZXQoKTsKKyAgICAgICAgaWYgKCF0aW1lcikgeworICAgICAgICAgICAgVGltZXJCYXNl
OjpoZWFwRGVsZXRlTnVsbE1pbihtX3RpbWVySGVhcCk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICh0aW1lci0+bV9uZXh0RmlyZVRpbWUgPiBmaXJlVGlt
ZSkKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIHRpbWVyLT5tX25leHRGaXJlVGltZSA9
IE1vbm90b25pY1RpbWUgeyB9OwogICAgICAgICB0aW1lci0+bV91bmFsaWduZWROZXh0RmlyZVRp
bWUgPSBNb25vdG9uaWNUaW1lIHsgfTsKKyAgICAgICAgbV90aW1lckhlYXBbdGltZXItPm1faGVh
cEluZGV4XS50aW1lID0gTW9ub3RvbmljVGltZSB7IH07CiAgICAgICAgIHRpbWVyLT5oZWFwRGVs
ZXRlTWluKCk7CiAKICAgICAgICAgU2Vjb25kcyBpbnRlcnZhbCA9IHRpbWVyLT5yZXBlYXRJbnRl
cnZhbCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmgJKHJldmlz
aW9uIDIzOTQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMywzMyArMzMsNTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0gICAgY2xhc3MgU2hhcmVkVGltZXI7Ci0gICAgY2xhc3MgVGltZXJCYXNlOworY2xhc3MgU2hh
cmVkVGltZXI7CitjbGFzcyBUaW1lckJhc2U7CiAKLSAgICAvLyBBIGNvbGxlY3Rpb24gb2YgdGlt
ZXJzIHBlciB0aHJlYWQuIEtlcHQgaW4gVGhyZWFkR2xvYmFsRGF0YS4KLSAgICBjbGFzcyBUaHJl
YWRUaW1lcnMgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRUaW1lcnMpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFRocmVhZFRpbWVy
cygpOworc3RydWN0IFRocmVhZFRpbWVySGVhcEl0ZW0geworICAgIFRocmVhZFRpbWVySGVhcEl0
ZW0oVGltZXJCYXNlJiwgTW9ub3RvbmljVGltZSwgdW5zaWduZWQpOwogCi0gICAgICAgIC8vIE9u
IGEgdGhyZWFkIGRpZmZlcmVudCB0aGVuIG1haW4sIHdlIHNob3VsZCBzZXQgdGhlIHRocmVhZCdz
IGluc3RhbmNlIG9mIHRoZSBTaGFyZWRUaW1lci4KLSAgICAgICAgdm9pZCBzZXRTaGFyZWRUaW1l
cihTaGFyZWRUaW1lciopOworICAgIFRocmVhZFRpbWVySGVhcEl0ZW0oY29uc3QgVGhyZWFkVGlt
ZXJIZWFwSXRlbSYpOworICAgIFRocmVhZFRpbWVySGVhcEl0ZW0oVGhyZWFkVGltZXJIZWFwSXRl
bSYmKTsKIAotICAgICAgICBWZWN0b3I8VGltZXJCYXNlKj4mIHRpbWVySGVhcCgpIHsgcmV0dXJu
IG1fdGltZXJIZWFwOyB9CisgICAgVGhyZWFkVGltZXJIZWFwSXRlbSYgb3BlcmF0b3I9KGNvbnN0
IFRocmVhZFRpbWVySGVhcEl0ZW0mKTsKKyAgICBUaHJlYWRUaW1lckhlYXBJdGVtJiBvcGVyYXRv
cj0oVGhyZWFkVGltZXJIZWFwSXRlbSYmKTsKIAotICAgICAgICB2b2lkIHVwZGF0ZVNoYXJlZFRp
bWVyKCk7Ci0gICAgICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFRocmVhZFRpbWVySGVhcEl0ZW0mKSBjb25zdDsKIAotICAg
IHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc2hhcmVkVGltZXJGaXJlZEludGVybmFsKCk7Ci0gICAg
ICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wSW50ZXJuYWwoKTsKKyAgICBXZWFr
UHRyPFRpbWVyQmFzZT4gdGltZXI7CisgICAgTW9ub3RvbmljVGltZSB0aW1lOworICAgIHVuc2ln
bmVkIGluc2VydGlvbk9yZGVyIHsgMCB9OworfTsKIAotICAgICAgICBWZWN0b3I8VGltZXJCYXNl
Kj4gbV90aW1lckhlYXA7Ci0gICAgICAgIFNoYXJlZFRpbWVyKiBtX3NoYXJlZFRpbWVyIHsgbnVs
bHB0ciB9OyAvLyBFeHRlcm5hbCBvYmplY3QsIGNhbiBiZSBhIHJ1biBsb29wIG9uIGEgd29ya2Vy
IHRocmVhZC4gTm9ybWFsbHkgc2V0L3Jlc2V0IGJ5IHdvcmtlciB0aHJlYWQuCi0gICAgICAgIGJv
b2wgbV9maXJpbmdUaW1lcnMgeyBmYWxzZSB9OyAvLyBSZWVudHJhbmN5IGd1YXJkLgotICAgICAg
ICBNb25vdG9uaWNUaW1lIG1fcGVuZGluZ1NoYXJlZFRpbWVyRmlyZVRpbWU7Ci0gICAgfTsKK3R5
cGVkZWYgVmVjdG9yPFRocmVhZFRpbWVySGVhcEl0ZW0+IFRocmVhZFRpbWVySGVhcDsKKyAgICAK
Ky8vIEEgY29sbGVjdGlvbiBvZiB0aW1lcnMgcGVyIHRocmVhZC4gS2VwdCBpbiBUaHJlYWRHbG9i
YWxEYXRhLgorY2xhc3MgVGhyZWFkVGltZXJzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShU
aHJlYWRUaW1lcnMpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBUaHJl
YWRUaW1lcnMoKTsKIAorICAgIC8vIE9uIGEgdGhyZWFkIGRpZmZlcmVudCB0aGVuIG1haW4sIHdl
IHNob3VsZCBzZXQgdGhlIHRocmVhZCdzIGluc3RhbmNlIG9mIHRoZSBTaGFyZWRUaW1lci4KKyAg
ICB2b2lkIHNldFNoYXJlZFRpbWVyKFNoYXJlZFRpbWVyKik7CisKKyAgICBUaHJlYWRUaW1lckhl
YXAmIHRpbWVySGVhcCgpIHsgcmV0dXJuIG1fdGltZXJIZWFwOyB9CisKKyAgICB2b2lkIHVwZGF0
ZVNoYXJlZFRpbWVyKCk7CisgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIHNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpOworICAgIHZv
aWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wSW50ZXJuYWwoKTsKKworICAgIFRocmVhZFRp
bWVySGVhcCBtX3RpbWVySGVhcDsKKyAgICBTaGFyZWRUaW1lciogbV9zaGFyZWRUaW1lciB7IG51
bGxwdHIgfTsgLy8gRXh0ZXJuYWwgb2JqZWN0LCBjYW4gYmUgYSBydW4gbG9vcCBvbiBhIHdvcmtl
ciB0aHJlYWQuIE5vcm1hbGx5IHNldC9yZXNldCBieSB3b3JrZXIgdGhyZWFkLgorICAgIGJvb2wg
bV9maXJpbmdUaW1lcnMgeyBmYWxzZSB9OyAvLyBSZWVudHJhbmN5IGd1YXJkLgorICAgIE1vbm90
b25pY1RpbWUgbV9wZW5kaW5nU2hhcmVkVGltZXJGaXJlVGltZTsKK307CisKIH0KIAogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCShyZXZpc2lvbiAyMzk0MDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEy
ICs0NSw0NiBAQAogCiBjbGFzcyBUaW1lckhlYXBSZWZlcmVuY2U7CiAKK2lubGluZSBUaHJlYWRU
aW1lckhlYXBJdGVtOjpUaHJlYWRUaW1lckhlYXBJdGVtKFRpbWVyQmFzZSYgdGltZXIsIE1vbm90
b25pY1RpbWUgdGltZSwgdW5zaWduZWQgaW5zZXJ0aW9uT3JkZXIpCisgICAgOiB0aW1lcihtYWtl
V2Vha1B0cih0aW1lcikpCisgICAgLCB0aW1lKHRpbWUpCisgICAgLCBpbnNlcnRpb25PcmRlcihp
bnNlcnRpb25PcmRlcikKK3sgfQorCitpbmxpbmUgVGhyZWFkVGltZXJIZWFwSXRlbTo6VGhyZWFk
VGltZXJIZWFwSXRlbShjb25zdCBUaHJlYWRUaW1lckhlYXBJdGVtJikgPSBkZWZhdWx0OworaW5s
aW5lIFRocmVhZFRpbWVySGVhcEl0ZW06OlRocmVhZFRpbWVySGVhcEl0ZW0oVGhyZWFkVGltZXJI
ZWFwSXRlbSYmKSA9IGRlZmF1bHQ7CisKK2lubGluZSBUaHJlYWRUaW1lckhlYXBJdGVtJiBUaHJl
YWRUaW1lckhlYXBJdGVtOjpvcGVyYXRvcj0oY29uc3QgVGhyZWFkVGltZXJIZWFwSXRlbSYgb3Ro
ZXIpCit7CisgICAgdGltZXIgPSBvdGhlci50aW1lcjsKKyAgICB0aW1lID0gb3RoZXIudGltZTsK
KyAgICBpbnNlcnRpb25PcmRlciA9IG90aGVyLmluc2VydGlvbk9yZGVyOworICAgIHJldHVybiAq
dGhpczsKK30KKworaW5saW5lIFRocmVhZFRpbWVySGVhcEl0ZW0mIFRocmVhZFRpbWVySGVhcEl0
ZW06Om9wZXJhdG9yPShUaHJlYWRUaW1lckhlYXBJdGVtJiYgb3RoZXIpCit7CisgICAgdGltZXIg
PSBXVEZNb3ZlKG90aGVyLnRpbWVyKTsKKyAgICB0aW1lID0gb3RoZXIudGltZTsKKyAgICBpbnNl
cnRpb25PcmRlciA9IG90aGVyLmluc2VydGlvbk9yZGVyOworCisgICAgb3RoZXIudGltZSA9IE1v
bm90b25pY1RpbWUgeyB9OworICAgIG90aGVyLmluc2VydGlvbk9yZGVyID0gMDsKKyAgICByZXR1
cm4gKnRoaXM7Cit9CisKK2lubGluZSBib29sIFRocmVhZFRpbWVySGVhcEl0ZW06Om9wZXJhdG9y
PT0oY29uc3QgVGhyZWFkVGltZXJIZWFwSXRlbSYgb3RoZXIpIGNvbnN0Cit7CisgICAgQVNTRVJU
KCh0aW1lciA9PSBvdGhlci50aW1lcikgPT0gKHRpbWUgPT0gb3RoZXIudGltZSAmJiBpbnNlcnRp
b25PcmRlciA9PSBvdGhlci5pbnNlcnRpb25PcmRlcikpOworICAgIHJldHVybiB0aW1lciA9PSBv
dGhlci50aW1lcjsKK30KKwogLy8gVGltZXJzIGFyZSBzdG9yZWQgaW4gYSBoZWFwIGRhdGEgc3Ry
dWN0dXJlLCB1c2VkIHRvIGltcGxlbWVudCBhIHByaW9yaXR5IHF1ZXVlLgogLy8gVGhpcyBhbGxv
d3MgdXMgdG8gZWZmaWNpZW50bHkgZGV0ZXJtaW5lIHdoaWNoIHRpbWVyIG5lZWRzIHRvIGZpcmUg
dGhlIHNvb25lc3QuCiAvLyBUaGVuIHdlIHNldCBhIHNpbmdsZSBzaGFyZWQgc3lzdGVtIHRpbWVy
IHRvIGZpcmUgYXQgdGhhdCB0aW1lLgogLy8KIC8vIFdoZW4gYSB0aW1lcidzICJuZXh0IGZpcmUg
dGltZSIgY2hhbmdlcywgd2UgbmVlZCB0byBtb3ZlIGl0IGFyb3VuZCBpbiB0aGUgcHJpb3JpdHkg
cXVldWUuCi1zdGF0aWMgVmVjdG9yPFRpbWVyQmFzZSo+JiB0aHJlYWRHbG9iYWxUaW1lckhlYXAo
KQorc3RhdGljIFRocmVhZFRpbWVySGVhcCYgdGhyZWFkR2xvYmFsVGltZXJIZWFwKCkKIHsKICAg
ICByZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnRpbWVySGVhcCgpOwog
fQpAQCAtNTgsNTIgKzkyLDczIEBACiAKIGNsYXNzIFRpbWVySGVhcFBvaW50ZXIgewogcHVibGlj
OgotICAgIFRpbWVySGVhcFBvaW50ZXIoVGltZXJCYXNlKiogcG9pbnRlcikgOiBtX3BvaW50ZXIo
cG9pbnRlcikgeyB9CisgICAgVGltZXJIZWFwUG9pbnRlcihUaHJlYWRUaW1lckhlYXBJdGVtKiBw
b2ludGVyKSA6IG1fcG9pbnRlcihwb2ludGVyKSB7IH0KICAgICBUaW1lckhlYXBSZWZlcmVuY2Ug
b3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgVGltZXJCYXNlKiBvcGVyYXRvci0+KCkgY29uc3QgeyBy
ZXR1cm4gKm1fcG9pbnRlcjsgfQorICAgIFRocmVhZFRpbWVySGVhcEl0ZW0mIG9wZXJhdG9yLT4o
KSBjb25zdCB7IHJldHVybiAqbV9wb2ludGVyOyB9CiBwcml2YXRlOgotICAgIFRpbWVyQmFzZSoq
IG1fcG9pbnRlcjsKKyAgICBUaHJlYWRUaW1lckhlYXBJdGVtKiBtX3BvaW50ZXI7CiB9OwogCiBj
bGFzcyBUaW1lckhlYXBSZWZlcmVuY2UgewogcHVibGljOgotICAgIFRpbWVySGVhcFJlZmVyZW5j
ZShUaW1lckJhc2UqJiByZWZlcmVuY2UpIDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKSB7IH0KLSAg
ICBvcGVyYXRvciBUaW1lckJhc2UqKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2U7IH0KKyAg
ICBUaW1lckhlYXBSZWZlcmVuY2UoVGhyZWFkVGltZXJIZWFwSXRlbSYgcmVmZXJlbmNlKQorICAg
ICAgICA6IG1fcmVmZXJlbmNlKHJlZmVyZW5jZSkKKyAgICB7IH0KKworICAgIFRpbWVySGVhcFJl
ZmVyZW5jZShjb25zdCBUaW1lckhlYXBSZWZlcmVuY2UmIG90aGVyKQorICAgICAgICA6IG1fcmVm
ZXJlbmNlKG90aGVyLm1fcmVmZXJlbmNlKQorICAgIHsgfQorCisgICAgb3BlcmF0b3IgVGhyZWFk
VGltZXJIZWFwSXRlbSYoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZTsgfQogICAgIFRpbWVy
SGVhcFBvaW50ZXIgb3BlcmF0b3ImKCkgY29uc3QgeyByZXR1cm4gJm1fcmVmZXJlbmNlOyB9Ci0g
ICAgVGltZXJIZWFwUmVmZXJlbmNlJiBvcGVyYXRvcj0oVGltZXJCYXNlKik7Ci0gICAgVGltZXJI
ZWFwUmVmZXJlbmNlJiBvcGVyYXRvcj0oVGltZXJIZWFwUmVmZXJlbmNlKTsKKyAgICBUaW1lckhl
YXBSZWZlcmVuY2UmIG9wZXJhdG9yPShUaW1lckhlYXBSZWZlcmVuY2UmJik7CisgICAgVGltZXJI
ZWFwUmVmZXJlbmNlJiBvcGVyYXRvcj0oVGhyZWFkVGltZXJIZWFwSXRlbSYmKTsKKworICAgIHZv
aWQgdXBkYXRlSGVhcEluZGV4KCk7CisKIHByaXZhdGU6Ci0gICAgVGltZXJCYXNlKiYgbV9yZWZl
cmVuY2U7CisgICAgVGhyZWFkVGltZXJIZWFwSXRlbSYgbV9yZWZlcmVuY2U7CiB9OwogCiBpbmxp
bmUgVGltZXJIZWFwUmVmZXJlbmNlIFRpbWVySGVhcFBvaW50ZXI6Om9wZXJhdG9yKigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICptX3BvaW50ZXI7CisgICAgcmV0dXJuIFRpbWVySGVhcFJlZmVyZW5j
ZSB7ICptX3BvaW50ZXIgfTsKIH0KIAotaW5saW5lIFRpbWVySGVhcFJlZmVyZW5jZSYgVGltZXJI
ZWFwUmVmZXJlbmNlOjpvcGVyYXRvcj0oVGltZXJCYXNlKiB0aW1lcikKK2lubGluZSBUaW1lckhl
YXBSZWZlcmVuY2UmIFRpbWVySGVhcFJlZmVyZW5jZTo6b3BlcmF0b3I9KFRpbWVySGVhcFJlZmVy
ZW5jZSYmIG90aGVyKQogewotICAgIG1fcmVmZXJlbmNlID0gdGltZXI7Ci0gICAgVmVjdG9yPFRp
bWVyQmFzZSo+JiBoZWFwID0gdGltZXItPnRpbWVySGVhcCgpOwotICAgIGlmICgmbV9yZWZlcmVu
Y2UgPj0gaGVhcC5kYXRhKCkgJiYgJm1fcmVmZXJlbmNlIDwgaGVhcC5kYXRhKCkgKyBoZWFwLnNp
emUoKSkKLSAgICAgICAgdGltZXItPm1faGVhcEluZGV4ID0gJm1fcmVmZXJlbmNlIC0gaGVhcC5k
YXRhKCk7CisgICAgbV9yZWZlcmVuY2UgPSBXVEZNb3ZlKG90aGVyLm1fcmVmZXJlbmNlKTsKKyAg
ICB1cGRhdGVIZWFwSW5kZXgoKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWlubGluZSBUaW1l
ckhlYXBSZWZlcmVuY2UmIFRpbWVySGVhcFJlZmVyZW5jZTo6b3BlcmF0b3I9KFRpbWVySGVhcFJl
ZmVyZW5jZSBiKQoraW5saW5lIFRpbWVySGVhcFJlZmVyZW5jZSYgVGltZXJIZWFwUmVmZXJlbmNl
OjpvcGVyYXRvcj0oVGhyZWFkVGltZXJIZWFwSXRlbSYmIHRpbWVyKQogewotICAgIFRpbWVyQmFz
ZSogdGltZXIgPSBiOwotICAgIHJldHVybiAqdGhpcyA9IHRpbWVyOworICAgIG1fcmVmZXJlbmNl
ID0gV1RGTW92ZSh0aW1lcik7CisgICAgdXBkYXRlSGVhcEluZGV4KCk7CisgICAgcmV0dXJuICp0
aGlzOwogfQogCitpbmxpbmUgdm9pZCBUaW1lckhlYXBSZWZlcmVuY2U6OnVwZGF0ZUhlYXBJbmRl
eCgpCit7CisgICAgYXV0byB0aW1lcldlYWtQdHIgPSBtX3JlZmVyZW5jZS50aW1lcjsKKyAgICBp
ZiAoIXRpbWVyV2Vha1B0cikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgdGltZXIgPSAq
dGltZXJXZWFrUHRyOworICAgIGF1dG8mIGhlYXAgPSB0aW1lci50aW1lckhlYXAoKTsKKyAgICBp
ZiAoJm1fcmVmZXJlbmNlID49IGhlYXAuZGF0YSgpICYmICZtX3JlZmVyZW5jZSA8IGhlYXAuZGF0
YSgpICsgaGVhcC5zaXplKCkpCisgICAgICAgIHRpbWVyLm1faGVhcEluZGV4ID0gJm1fcmVmZXJl
bmNlIC0gaGVhcC5kYXRhKCk7Cit9CisKIGlubGluZSB2b2lkIHN3YXAoVGltZXJIZWFwUmVmZXJl
bmNlIGEsIFRpbWVySGVhcFJlZmVyZW5jZSBiKQogewotICAgIFRpbWVyQmFzZSogdGltZXJBID0g
YTsKLSAgICBUaW1lckJhc2UqIHRpbWVyQiA9IGI7CisgICAgVGhyZWFkVGltZXJIZWFwSXRlbSB0
aW1lckEgPSBhOworICAgIFRocmVhZFRpbWVySGVhcEl0ZW0gdGltZXJCID0gYjsKIAogICAgIC8v
IEludm9rZSB0aGUgYXNzaWdubWVudCBvcGVyYXRvciwgc2luY2UgdGhhdCB0YWtlcyBjYXJlIG9m
IHVwZGF0aW5nIG1faGVhcEluZGV4LgotICAgIGEgPSB0aW1lckI7Ci0gICAgYiA9IHRpbWVyQTsK
KyAgICBhID0gV1RGTW92ZSh0aW1lckIpOworICAgIGIgPSBXVEZNb3ZlKHRpbWVyQSk7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTExMCw5ICsxNjUsOSBAQAogCiAvLyBDbGFzcyB0byBy
ZXByZXNlbnQgaXRlcmF0b3JzIGluIHRoZSBoZWFwIHdoZW4gY2FsbGluZyB0aGUgc3RhbmRhcmQg
bGlicmFyeSBoZWFwIGFsZ29yaXRobXMuCiAvLyBVc2VzIGEgY3VzdG9tIHBvaW50ZXIgYW5kIHJl
ZmVyZW5jZSB0eXBlIHRoYXQgdXBkYXRlIGluZGljZXMgZm9yIHBvaW50ZXJzIGluIHRoZSBoZWFw
LgotY2xhc3MgVGltZXJIZWFwSXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OnJh
bmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBUaW1lckJhc2UqLCBwdHJkaWZmX3QsIFRpbWVySGVh
cFBvaW50ZXIsIFRpbWVySGVhcFJlZmVyZW5jZT4geworY2xhc3MgVGltZXJIZWFwSXRlcmF0b3Ig
OiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBU
aHJlYWRUaW1lckhlYXBJdGVtLCBwdHJkaWZmX3QsIFRpbWVySGVhcFBvaW50ZXIsIFRpbWVySGVh
cFJlZmVyZW5jZT4gewogcHVibGljOgotICAgIGV4cGxpY2l0IFRpbWVySGVhcEl0ZXJhdG9yKFRp
bWVyQmFzZSoqIHBvaW50ZXIpIDogbV9wb2ludGVyKHBvaW50ZXIpIHsgY2hlY2tDb25zaXN0ZW5j
eSgpOyB9CisgICAgZXhwbGljaXQgVGltZXJIZWFwSXRlcmF0b3IoVGhyZWFkVGltZXJIZWFwSXRl
bSogcG9pbnRlcikgOiBtX3BvaW50ZXIocG9pbnRlcikgeyBjaGVja0NvbnNpc3RlbmN5KCk7IH0K
IAogICAgIFRpbWVySGVhcEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyBjaGVja0NvbnNpc3RlbmN5
KCk7ICsrbV9wb2ludGVyOyBjaGVja0NvbnNpc3RlbmN5KCk7IHJldHVybiAqdGhpczsgfQogICAg
IFRpbWVySGVhcEl0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7IGNoZWNrQ29uc2lzdGVuY3koMSk7
IHJldHVybiBUaW1lckhlYXBJdGVyYXRvcihtX3BvaW50ZXIrKyk7IH0KQEAgLTEyNSw3ICsxODAs
NyBAQAogCiAgICAgVGltZXJIZWFwUmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJu
IFRpbWVySGVhcFJlZmVyZW5jZSgqbV9wb2ludGVyKTsgfQogICAgIFRpbWVySGVhcFJlZmVyZW5j
ZSBvcGVyYXRvcltdKHB0cmRpZmZfdCBpKSBjb25zdCB7IHJldHVybiBUaW1lckhlYXBSZWZlcmVu
Y2UobV9wb2ludGVyW2ldKTsgfQotICAgIFRpbWVyQmFzZSogb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuICptX3BvaW50ZXI7IH0KKyAgICBUaHJlYWRUaW1lckhlYXBJdGVtJiBvcGVyYXRvci0+
KCkgY29uc3QgeyByZXR1cm4gKm1fcG9pbnRlcjsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY2hl
Y2tDb25zaXN0ZW5jeShwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkgY29uc3QKQEAgLTE0OSw3ICsyMDQs
NyBAQAogICAgIGZyaWVuZCBUaW1lckhlYXBJdGVyYXRvciBvcGVyYXRvci0oVGltZXJIZWFwSXRl
cmF0b3IsIHNpemVfdCk7CiAgICAgZnJpZW5kIHB0cmRpZmZfdCBvcGVyYXRvci0oVGltZXJIZWFw
SXRlcmF0b3IsIFRpbWVySGVhcEl0ZXJhdG9yKTsKIAotICAgIFRpbWVyQmFzZSoqIG1fcG9pbnRl
cjsKKyAgICBUaHJlYWRUaW1lckhlYXBJdGVtKiBtX3BvaW50ZXI7CiB9OwogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIpIHsg
cmV0dXJuIGEubV9wb2ludGVyID09IGIubV9wb2ludGVyOyB9CkBAIC0xNjksMjQgKzIyNCwzOSBA
QAogCiBjbGFzcyBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBib29s
IG9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNlKiwgY29uc3QgVGltZXJCYXNlKikgY29uc3Q7Cisg
ICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBUaW1lckJhc2UmIGEsIGNvbnN0IFRocmVhZFRp
bWVySGVhcEl0ZW0mIGIpCisgICAgeworICAgICAgICBBU1NFUlQoIWIudGltZXIgfHwgKGIudGlt
ZSA9PSBiLnRpbWVyLT5tX25leHRGaXJlVGltZSAmJiBiLmluc2VydGlvbk9yZGVyID09IGIudGlt
ZXItPm1faGVhcEluc2VydGlvbk9yZGVyKSk7CisgICAgICAgIHJldHVybiBjb21wYXJlKGEubV9u
ZXh0RmlyZVRpbWUsIGEubV9oZWFwSW5zZXJ0aW9uT3JkZXIsIGIudGltZSwgYi5pbnNlcnRpb25P
cmRlcik7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBUaHJlYWRUaW1l
ckhlYXBJdGVtJiBhLCBjb25zdCBUaW1lckJhc2UmIGIpCisgICAgeworICAgICAgICBBU1NFUlQo
IWEudGltZXIgfHwgKGEudGltZSA9PSBhLnRpbWVyLT5tX25leHRGaXJlVGltZSAmJiBhLmluc2Vy
dGlvbk9yZGVyID09IGEudGltZXItPm1faGVhcEluc2VydGlvbk9yZGVyKSk7CisgICAgICAgIHJl
dHVybiBjb21wYXJlKGEudGltZSwgYS5pbnNlcnRpb25PcmRlciwgYi5tX25leHRGaXJlVGltZSwg
Yi5tX2hlYXBJbnNlcnRpb25PcmRlcik7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcigpKGNv
bnN0IFRocmVhZFRpbWVySGVhcEl0ZW0mIGEsIGNvbnN0IFRocmVhZFRpbWVySGVhcEl0ZW0mIGIp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoIWEudGltZXIgfHwgKGEudGltZSA9PSBhLnRp
bWVyLT5tX25leHRGaXJlVGltZSAmJiBhLmluc2VydGlvbk9yZGVyID09IGEudGltZXItPm1faGVh
cEluc2VydGlvbk9yZGVyKSk7CisgICAgICAgIEFTU0VSVCghYi50aW1lciB8fCAoYi50aW1lID09
IGIudGltZXItPm1fbmV4dEZpcmVUaW1lICYmIGIuaW5zZXJ0aW9uT3JkZXIgPT0gYi50aW1lci0+
bV9oZWFwSW5zZXJ0aW9uT3JkZXIpKTsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmUoYS50aW1lLCBh
Lmluc2VydGlvbk9yZGVyLCBiLnRpbWUsIGIuaW5zZXJ0aW9uT3JkZXIpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlKE1vbm90b25pY1RpbWUgYVRpbWUsIHVuc2ln
bmVkIGFPcmRlciwgTW9ub3RvbmljVGltZSBiVGltZSwgdW5zaWduZWQgYk9yZGVyKQorICAgIHsK
KyAgICAgICAgLy8gVGhlIGNvbXBhcmlzb25zIGJlbG93IGFyZSAiYmFja3dhcmRzIiBiZWNhdXNl
IHRoZSBoZWFwIHB1dHMgdGhlIGxhcmdlc3QKKyAgICAgICAgLy8gZWxlbWVudCBmaXJzdCBhbmQg
d2Ugd2FudCB0aGUgbG93ZXN0IHRpbWUgdG8gYmUgdGhlIGZpcnN0IG9uZSBpbiB0aGUgaGVhcC4K
KyAgICAgICAgaWYgKGJUaW1lICE9IGFUaW1lKQorICAgICAgICAgICAgcmV0dXJuIGJUaW1lIDwg
YVRpbWU7CisgICAgICAgIC8vIFdlIG5lZWQgdG8gbG9vayBhdCB0aGUgZGlmZmVyZW5jZSBvZiB0
aGUgaW5zZXJ0aW9uIG9yZGVycyBpbnN0ZWFkIG9mIGNvbXBhcmluZyB0aGUgdHdvCisgICAgICAg
IC8vIG91dHJpZ2h0IGluIGNhc2Ugb2Ygb3ZlcmZsb3cuCisgICAgICAgIHVuc2lnbmVkIGRpZmZl
cmVuY2UgPSBhT3JkZXIgLSBiT3JkZXI7CisgICAgICAgIHJldHVybiBkaWZmZXJlbmNlIDwgc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC8gMjsKKyAgICB9CiB9OwogCi1pbmxp
bmUgYm9vbCBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uOjpvcGVyYXRvcigpKGNvbnN0IFRpbWVy
QmFzZSogYSwgY29uc3QgVGltZXJCYXNlKiBiKSBjb25zdAotewotICAgIC8vIFRoZSBjb21wYXJp
c29ucyBiZWxvdyBhcmUgImJhY2t3YXJkcyIgYmVjYXVzZSB0aGUgaGVhcCBwdXRzIHRoZSBsYXJn
ZXN0IAotICAgIC8vIGVsZW1lbnQgZmlyc3QgYW5kIHdlIHdhbnQgdGhlIGxvd2VzdCB0aW1lIHRv
IGJlIHRoZSBmaXJzdCBvbmUgaW4gdGhlIGhlYXAuCi0gICAgTW9ub3RvbmljVGltZSBhRmlyZVRp
bWUgPSBhLT5tX25leHRGaXJlVGltZTsKLSAgICBNb25vdG9uaWNUaW1lIGJGaXJlVGltZSA9IGIt
Pm1fbmV4dEZpcmVUaW1lOwotICAgIGlmIChiRmlyZVRpbWUgIT0gYUZpcmVUaW1lKQotICAgICAg
ICByZXR1cm4gYkZpcmVUaW1lIDwgYUZpcmVUaW1lOwotICAgIAotICAgIC8vIFdlIG5lZWQgdG8g
bG9vayBhdCB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgaW5zZXJ0aW9uIG9yZGVycyBpbnN0ZWFkIG9m
IGNvbXBhcmluZyB0aGUgdHdvIAotICAgIC8vIG91dHJpZ2h0IGluIGNhc2Ugb2Ygb3ZlcmZsb3cu
IAotICAgIHVuc2lnbmVkIGRpZmZlcmVuY2UgPSBhLT5tX2hlYXBJbnNlcnRpb25PcmRlciAtIGIt
Pm1faGVhcEluc2VydGlvbk9yZGVyOwotICAgIHJldHVybiBkaWZmZXJlbmNlIDwgc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC8gMjsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0t
LQogCiBzdGF0aWMgYm9vbCBzaG91bGRTdXBwcmVzc1RocmVhZFNhZmV0eUNoZWNrKCkKQEAgLTI1
MCw3ICszMjAsMTUgQEAKICAgICBBU1NFUlQoIXRpbWVySGVhcCgpLmlzRW1wdHkoKSk7CiAgICAg
QVNTRVJUKG1faGVhcEluZGV4ID49IDApOwogICAgIEFTU0VSVChtX2hlYXBJbmRleCA8IHN0YXRp
Y19jYXN0PGludD4odGltZXJIZWFwKCkuc2l6ZSgpKSk7Ci0gICAgQVNTRVJUKHRpbWVySGVhcCgp
W21faGVhcEluZGV4XSA9PSB0aGlzKTsKKyAgICBBU1NFUlQodGltZXJIZWFwKClbbV9oZWFwSW5k
ZXhdLnRpbWVyID09IHRoaXMpOworICAgIEFTU0VSVCh0aW1lckhlYXAoKVttX2hlYXBJbmRleF0u
dGltZSA9PSBtX25leHRGaXJlVGltZSk7CisgICAgQVNTRVJUKHRpbWVySGVhcCgpW21faGVhcElu
ZGV4XS5pbnNlcnRpb25PcmRlciA9PSBtX2hlYXBJbnNlcnRpb25PcmRlcik7CisjaWYgIUFTU0VS
VF9ESVNBQkxFRAorICAgIEFTU0VSVCh0aW1lckhlYXAoKS5zaXplKCkgPCBJTlRfTUFYKTsKKyAg
ICBpbnQgc2l6ZSA9IHRpbWVySGVhcCgpLnNpemUoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IHNpemU7IGkrKykKKyAgICAgICAgQVNTRVJUKHRpbWVySGVhcCgpW2ldLnRpbWVyLT5tX2hlYXBJ
bmRleCA9PSBpKTsKKyNlbmRpZgogfQogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmNoZWNrQ29u
c2lzdGVuY3koKSBjb25zdApAQCAtMjY1LDcgKzM0Myw3IEBACiB7CiAgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PGJvb2w+KG1fbmV4dEZpcmVUaW1lKSk7CiAgICAgY2hlY2tIZWFwSW5kZXgoKTsKLSAg
ICBUaW1lckJhc2UqKiBoZWFwRGF0YSA9IHRpbWVySGVhcCgpLmRhdGEoKTsKKyAgICBhdXRvKiBo
ZWFwRGF0YSA9IHRpbWVySGVhcCgpLmRhdGEoKTsKICAgICBwdXNoX2hlYXAoVGltZXJIZWFwSXRl
cmF0b3IoaGVhcERhdGEpLCBUaW1lckhlYXBJdGVyYXRvcihoZWFwRGF0YSArIG1faGVhcEluZGV4
ICsgMSksIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb24oKSk7CiAgICAgY2hlY2tIZWFwSW5kZXgo
KTsKIH0KQEAgLTI5Niw3ICszNzQsNyBAQAogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwSW5z
ZXJ0KCkKIHsKICAgICBBU1NFUlQoIWluSGVhcCgpKTsKLSAgICB0aW1lckhlYXAoKS5hcHBlbmQo
dGhpcyk7CisgICAgdGltZXJIZWFwKCkuYXBwZW5kKFRocmVhZFRpbWVySGVhcEl0ZW0geyAqdGhp
cywgbV9uZXh0RmlyZVRpbWUsIG1faGVhcEluc2VydGlvbk9yZGVyIH0pOwogICAgIG1faGVhcElu
ZGV4ID0gdGltZXJIZWFwKCkuc2l6ZSgpIC0gMTsKICAgICBoZWFwRGVjcmVhc2VLZXkoKTsKIH0K
QEAgLTMwNiwzNyArMzg0LDQ0IEBACiAgICAgLy8gVGVtcG9yYXJpbHkgZm9yY2UgdGhpcyB0aW1l
ciB0byBoYXZlIHRoZSBtaW5pbXVtIGtleSBzbyB3ZSBjYW4gcG9wIGl0LgogICAgIE1vbm90b25p
Y1RpbWUgZmlyZVRpbWUgPSBtX25leHRGaXJlVGltZTsKICAgICBtX25leHRGaXJlVGltZSA9IC1N
b25vdG9uaWNUaW1lOjppbmZpbml0eSgpOworICAgIHRpbWVySGVhcCgpW21faGVhcEluZGV4XS50
aW1lID0gbV9uZXh0RmlyZVRpbWU7CiAgICAgaGVhcERlY3JlYXNlS2V5KCk7CiAgICAgaGVhcFBv
cE1pbigpOwogICAgIG1fbmV4dEZpcmVUaW1lID0gZmlyZVRpbWU7CisgICAgdGltZXJIZWFwKClb
bV9oZWFwSW5kZXhdLnRpbWUgPSBmaXJlVGltZTsKIH0KIAogdm9pZCBUaW1lckJhc2U6OmhlYXBQ
b3BNaW4oKQogewotICAgIEFTU0VSVCh0aGlzID09IHRpbWVySGVhcCgpLmZpcnN0KCkpOworICAg
IEFTU0VSVCh0aGlzID09IHRpbWVySGVhcCgpLmZpcnN0KCkudGltZXIpOwogICAgIGNoZWNrSGVh
cEluZGV4KCk7Ci0gICAgVmVjdG9yPFRpbWVyQmFzZSo+JiBoZWFwID0gdGltZXJIZWFwKCk7Ci0g
ICAgVGltZXJCYXNlKiogaGVhcERhdGEgPSBoZWFwLmRhdGEoKTsKKyAgICBhdXRvJiBoZWFwID0g
dGltZXJIZWFwKCk7CisgICAgYXV0byogaGVhcERhdGEgPSBoZWFwLmRhdGEoKTsKICAgICBwb3Bf
aGVhcChUaW1lckhlYXBJdGVyYXRvcihoZWFwRGF0YSksIFRpbWVySGVhcEl0ZXJhdG9yKGhlYXBE
YXRhICsgaGVhcC5zaXplKCkpLCBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uKCkpOwogICAgIGNo
ZWNrSGVhcEluZGV4KCk7Ci0gICAgQVNTRVJUKHRoaXMgPT0gdGltZXJIZWFwKCkubGFzdCgpKTsK
KyAgICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAoKS5sYXN0KCkudGltZXIpOwogfQogCi1zdGF0
aWMgaW5saW5lIGJvb2wgcGFyZW50SGVhcFByb3BlcnR5SG9sZHMoY29uc3QgVGltZXJCYXNlKiBj
dXJyZW50LCBjb25zdCBWZWN0b3I8VGltZXJCYXNlKj4mIGhlYXAsIHVuc2lnbmVkIGN1cnJlbnRJ
bmRleCkKK3ZvaWQgVGltZXJCYXNlOjpoZWFwRGVsZXRlTnVsbE1pbihUaHJlYWRUaW1lckhlYXAm
IGhlYXApCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWhlYXAuZmlyc3QoKS50aW1lcik7CisgICAg
YXV0byogaGVhcERhdGEgPSBoZWFwLmRhdGEoKTsKKyAgICBwb3BfaGVhcChUaW1lckhlYXBJdGVy
YXRvcihoZWFwRGF0YSksIFRpbWVySGVhcEl0ZXJhdG9yKGhlYXBEYXRhICsgaGVhcC5zaXplKCkp
LCBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uKCkpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
cGFyZW50SGVhcFByb3BlcnR5SG9sZHMoY29uc3QgVGltZXJCYXNlKiBjdXJyZW50LCBjb25zdCBU
aHJlYWRUaW1lckhlYXAmIGhlYXAsIHVuc2lnbmVkIGN1cnJlbnRJbmRleCkKK3sKICAgICBpZiAo
IWN1cnJlbnRJbmRleCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgdW5zaWduZWQgcGFyZW50
SW5kZXggPSAoY3VycmVudEluZGV4IC0gMSkgLyAyOwotICAgIFRpbWVySGVhcExlc3NUaGFuRnVu
Y3Rpb24gY29tcGFyZUhlYXBQb3NpdGlvbjsKLSAgICByZXR1cm4gY29tcGFyZUhlYXBQb3NpdGlv
bihjdXJyZW50LCBoZWFwW3BhcmVudEluZGV4XSk7CisgICAgcmV0dXJuIFRpbWVySGVhcExlc3NU
aGFuRnVuY3Rpb246OmNvbXBhcmUoKmN1cnJlbnQsIGhlYXBbcGFyZW50SW5kZXhdKTsKIH0KIAot
c3RhdGljIGlubGluZSBib29sIGNoaWxkSGVhcFByb3BlcnR5SG9sZHMoY29uc3QgVGltZXJCYXNl
KiBjdXJyZW50LCBjb25zdCBWZWN0b3I8VGltZXJCYXNlKj4mIGhlYXAsIHVuc2lnbmVkIGNoaWxk
SW5kZXgpCitzdGF0aWMgaW5saW5lIGJvb2wgY2hpbGRIZWFwUHJvcGVydHlIb2xkcyhjb25zdCBU
aW1lckJhc2UqIGN1cnJlbnQsIGNvbnN0IFRocmVhZFRpbWVySGVhcCYgaGVhcCwgdW5zaWduZWQg
Y2hpbGRJbmRleCkKIHsKICAgICBpZiAoY2hpbGRJbmRleCA+PSBoZWFwLnNpemUoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbiBjb21wYXJlSGVh
cFBvc2l0aW9uOwotICAgIHJldHVybiBjb21wYXJlSGVhcFBvc2l0aW9uKGhlYXBbY2hpbGRJbmRl
eF0sIGN1cnJlbnQpOworICAgIHJldHVybiBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uOjpjb21w
YXJlKGhlYXBbY2hpbGRJbmRleF0sICpjdXJyZW50KTsKIH0KIAogYm9vbCBUaW1lckJhc2U6Omhh
c1ZhbGlkSGVhcFBvc2l0aW9uKCkgY29uc3QKQEAgLTM0Nyw3ICs0MzIsNyBAQAogICAgIC8vIENo
ZWNrIGlmIHRoZSBoZWFwIHByb3BlcnR5IHN0aWxsIGhvbGRzIHdpdGggdGhlIG5ldyBmaXJlIHRp
bWUuIElmIGl0IGRvZXMgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZy4KICAgICAvLyBUaGlz
IGFzc3VtZXMgdGhhdCB0aGUgU1RMIGhlYXAgaXMgYSBzdGFuZGFyZCBiaW5hcnkgaGVhcC4gSW4g
YW4gdW5saWtlbHkgZXZlbnQgaXQgaXMgbm90LCB0aGUgYXNzZXJ0aW9ucwogICAgIC8vIGluIHVw
ZGF0ZUhlYXBJZk5lZWRlZCgpIHdpbGwgZ2V0IGhpdC4KLSAgICBjb25zdCBWZWN0b3I8VGltZXJC
YXNlKj4mIGhlYXAgPSB0aW1lckhlYXAoKTsKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gdGltZXJI
ZWFwKCk7CiAgICAgaWYgKCFwYXJlbnRIZWFwUHJvcGVydHlIb2xkcyh0aGlzLCBoZWFwLCBtX2hl
YXBJbmRleCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB1bnNpZ25lZCBjaGlsZEluZGV4
MSA9IDIgKiBtX2hlYXBJbmRleCArIDE7CkBAIC0zNTcsMTEgKzQ0MiwxOCBAQAogCiB2b2lkIFRp
bWVyQmFzZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUgb2xkVGltZSkKIHsKKyAg
ICBpZiAob2xkVGltZSkgeworICAgICAgICBhdXRvJiBpdGVtID0gdGltZXJIZWFwKClbbV9oZWFw
SW5kZXhdOworICAgICAgICBpdGVtLnRpbWUgPSBtX25leHRGaXJlVGltZTsKKyAgICAgICAgaXRl
bS5pbnNlcnRpb25PcmRlciA9IG1faGVhcEluc2VydGlvbk9yZGVyOworICAgIH0KKwogICAgIGlm
IChtX25leHRGaXJlVGltZSAmJiBoYXNWYWxpZEhlYXBQb3NpdGlvbigpKQogICAgICAgICByZXR1
cm47CiAjaWZuZGVmIE5ERUJVRwogICAgIGludCBvbGRIZWFwSW5kZXggPSBtX2hlYXBJbmRleDsK
ICNlbmRpZgorCiAgICAgaWYgKCFvbGRUaW1lKQogICAgICAgICBoZWFwSW5zZXJ0KCk7CiAgICAg
ZWxzZSBpZiAoIW1fbmV4dEZpcmVUaW1lKQpAQCAtMzcwLDYgKzQ2Miw3IEBACiAgICAgICAgIGhl
YXBEZWNyZWFzZUtleSgpOwogICAgIGVsc2UKICAgICAgICAgaGVhcEluY3JlYXNlS2V5KCk7CisK
ICAgICBBU1NFUlQobV9oZWFwSW5kZXggIT0gb2xkSGVhcEluZGV4KTsKICAgICBBU1NFUlQoIWlu
SGVhcCgpIHx8IGhhc1ZhbGlkSGVhcFBvc2l0aW9uKCkpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaW1lci5oCShyZXZpc2lvbiAyMzk0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSAiVGhyZWFkVGltZXJzLmgi
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIK
QEAgLTQwLDExICs0Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gVGltZSBpbnRl
cnZhbHMgYXJlIGFsbCBpbiBzZWNvbmRzLgotCi1jbGFzcyBUaW1lckhlYXBFbGVtZW50OwotCi1j
bGFzcyBUaW1lckJhc2UgeworY2xhc3MgVGltZXJCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PFRpbWVyQmFzZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbWVyQmFzZSk7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC05Miw4ICs5MCw5IEBACiAgICAg
dm9pZCBoZWFwSW5zZXJ0KCk7CiAgICAgdm9pZCBoZWFwUG9wKCk7CiAgICAgdm9pZCBoZWFwUG9w
TWluKCk7CisgICAgc3RhdGljIHZvaWQgaGVhcERlbGV0ZU51bGxNaW4oVGhyZWFkVGltZXJIZWFw
Jik7CiAKLSAgICBWZWN0b3I8VGltZXJCYXNlKj4mIHRpbWVySGVhcCgpIGNvbnN0IHsgQVNTRVJU
KG1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwKTsgcmV0dXJuICptX2NhY2hlZFRocmVhZEds
b2JhbFRpbWVySGVhcDsgfQorICAgIFRocmVhZFRpbWVySGVhcCYgdGltZXJIZWFwKCkgY29uc3Qg
eyBBU1NFUlQobV9jYWNoZWRUaHJlYWRHbG9iYWxUaW1lckhlYXApOyByZXR1cm4gKm1fY2FjaGVk
VGhyZWFkR2xvYmFsVGltZXJIZWFwOyB9CiAKICAgICBNb25vdG9uaWNUaW1lIG1fbmV4dEZpcmVU
aW1lOyAvLyAwIGlmIGluYWN0aXZlCiAgICAgTW9ub3RvbmljVGltZSBtX3VuYWxpZ25lZE5leHRG
aXJlVGltZTsgLy8gbV9uZXh0RmlyZVRpbWUgbm90IGNvbnNpZGVyaW5nIGFsaWdubWVudCBpbnRl
cnZhbApAQCAtMTAxLDcgKzEwMCw3IEBACiAgICAgc2lnbmVkIGludCBtX2hlYXBJbmRleCA6IDMx
OyAvLyAtMSBpZiBub3QgaW4gaGVhcAogICAgIGJvb2wgbV93YXNEZWxldGVkIDogMTsKICAgICB1
bnNpZ25lZCBtX2hlYXBJbnNlcnRpb25PcmRlcjsgLy8gVXNlZCB0byBrZWVwIG9yZGVyIGFtb25n
IGVxdWFsLWZpcmUtdGltZSB0aW1lcnMKLSAgICBWZWN0b3I8VGltZXJCYXNlKj4qIG1fY2FjaGVk
VGhyZWFkR2xvYmFsVGltZXJIZWFwIHsgbnVsbHB0ciB9OworICAgIFRocmVhZFRpbWVySGVhcCog
bV9jYWNoZWRUaHJlYWRHbG9iYWxUaW1lckhlYXAgeyBudWxscHRyIH07CiAKICAgICBSZWY8VGhy
ZWFkPiBtX3RocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358010</attachid>
            <date>2018-12-21 18:53:39 -0800</date>
            <delta_ts>2018-12-24 23:17:31 -0800</delta_ts>
            <desc>WIP3</desc>
            <filename>wip192975c.patch</filename>
            <type>text/plain</type>
            <size>28485</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIzOTQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDUyLDcgKzQ1Miw3IEBACiAJ
CTE1OTc0MURCMUI3RDE0MDEwMDIwMUM5MiAvKiBKU01lZGlhRGV2aWNlSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTU3Q0MyNjIxQjdDMUNBNDAw
RDhEMDc1IC8qIEpTTWVkaWFEZXZpY2VJbmZvLmggKi87IH07CiAJCTE1Qzc3MDhEMTAwRDNDNkIw
MDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNUM3NzA4QTEwMEQzQzZBMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE1
Qzc3MDkzMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1Qzc3MDkxMTAwRDNDQTgwMDVCQTI2
NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCAqLzsgfTsKLQkJMTg1QkNGMjkwRjMyNzlDRTAwMEVBMjYy
IC8qIFRocmVhZFRpbWVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovOyB9
OworCQkxODVCQ0YyOTBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODVCQ0YyNzBGMzI3OUNFMDAw
RUEyNjIgLyogVGhyZWFkVGltZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMTg4NjA0QjQwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODg2MDRCMjBG
MkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxOEY4MzFCODBGRDQ4Qzc4MDBEOEM1NkIgLyogV29ya2Vy
TG9hZGVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE4RjgzMUI3MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2FkZXJQcm94eS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE5MjEzMjc1MTFD
MEU2QkIwMDQ1NjIzOCAvKiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTkyMTMyNzIxMUMwRTZCQjAwNDU2
MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggKi87IH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAJKHJldmlzaW9uIDIzOTQwMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc1LDEyICs3NSwyOCBAQAogewogICAgIGlmICghbV9zaGFyZWRUaW1lcikKICAgICAgICAgcmV0
dXJuOwotICAgICAgICAKLSAgICBpZiAobV9maXJpbmdUaW1lcnMgfHwgbV90aW1lckhlYXAuaXNF
bXB0eSgpKSB7CisgICAgCisgICAgaWYgKG1fZmlyaW5nVGltZXJzKSB7CiAgICAgICAgIG1fcGVu
ZGluZ1NoYXJlZFRpbWVyRmlyZVRpbWUgPSBNb25vdG9uaWNUaW1lIHsgfTsKICAgICAgICAgbV9z
aGFyZWRUaW1lci0+c3RvcCgpOworICAgIH0KKworICAgIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJ
dGVtPiBmaXJzdEl0ZW1XaXRoVmFsaWRUaW1lcjsKKyAgICB3aGlsZSAoIW1fdGltZXJIZWFwLmlz
RW1wdHkoKSkgeworICAgICAgICBhdXRvJiBpdGVtID0gbV90aW1lckhlYXAuZmlyc3QoKTsKKyAg
ICAgICAgaWYgKGl0ZW0tPmhhc1RpbWVyKCkpIHsKKyAgICAgICAgICAgIGZpcnN0SXRlbVdpdGhW
YWxpZFRpbWVyID0gaXRlbTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IFRpbWVyQmFzZTo6aGVhcERlbGV0ZU51bGxNaW4obV90aW1lckhlYXApOworICAgIH0KKyAgICBB
U1NFUlQoZmlyc3RJdGVtV2l0aFZhbGlkVGltZXIgfHwgbV90aW1lckhlYXAuaXNFbXB0eSgpKTsK
KworICAgIGlmIChtX3RpbWVySGVhcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9wZW5kaW5nU2hh
cmVkVGltZXJGaXJlVGltZSA9IE1vbm90b25pY1RpbWUgeyB9OworICAgICAgICBtX3NoYXJlZFRp
bWVyLT5zdG9wKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgTW9ub3RvbmljVGltZSBuZXh0Rmly
ZVRpbWUgPSBtX3RpbWVySGVhcC5maXJzdCgpLT5tX25leHRGaXJlVGltZTsKKyAgICAgICAgTW9u
b3RvbmljVGltZSBuZXh0RmlyZVRpbWUgPSBmaXJzdEl0ZW1XaXRoVmFsaWRUaW1lci0+dGltZTsK
ICAgICAgICAgTW9ub3RvbmljVGltZSBjdXJyZW50TW9ub3RvbmljVGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwogICAgICAgICBpZiAobV9wZW5kaW5nU2hhcmVkVGltZXJGaXJlVGltZSkgewog
ICAgICAgICAgICAgLy8gTm8gbmVlZCB0byByZXN0YXJ0IHRoZSB0aW1lciBpZiBib3RoIHRoZSBw
ZW5kaW5nIGZpcmUgdGltZSBhbmQgdGhlIG5ldyBmaXJlIHRpbWUgYXJlIGluIHRoZSBwYXN0LgpA
QCAtMTA0LDE3ICsxMjAsMjIgQEAKICAgICBNb25vdG9uaWNUaW1lIGZpcmVUaW1lID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7CiAgICAgTW9ub3RvbmljVGltZSB0aW1lVG9RdWl0ID0gZmlyZVRpbWUg
KyBtYXhEdXJhdGlvbk9mRmlyaW5nVGltZXJzOwogCi0gICAgd2hpbGUgKCFtX3RpbWVySGVhcC5p
c0VtcHR5KCkgJiYgbV90aW1lckhlYXAuZmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUgPD0gZmlyZVRp
bWUpIHsKLSAgICAgICAgVGltZXJCYXNlKiB0aW1lciA9IG1fdGltZXJIZWFwLmZpcnN0KCk7Ci0g
ICAgICAgIHRpbWVyLT5tX25leHRGaXJlVGltZSA9IE1vbm90b25pY1RpbWUgeyB9OwotICAgICAg
ICB0aW1lci0+bV91bmFsaWduZWROZXh0RmlyZVRpbWUgPSBNb25vdG9uaWNUaW1lIHsgfTsKLSAg
ICAgICAgdGltZXItPmhlYXBEZWxldGVNaW4oKTsKKyAgICB3aGlsZSAoIW1fdGltZXJIZWFwLmlz
RW1wdHkoKSkgeworICAgICAgICBSZWY8VGhyZWFkVGltZXJIZWFwSXRlbT4gaXRlbSA9ICptX3Rp
bWVySGVhcC5maXJzdCgpOworICAgICAgICBpZiAoIWl0ZW0tPmhhc1RpbWVyKCkpIHsKKyAgICAg
ICAgICAgIFRpbWVyQmFzZTo6aGVhcERlbGV0ZU51bGxNaW4obV90aW1lckhlYXApOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KIAotICAgICAgICBTZWNvbmRzIGludGVydmFsID0g
dGltZXItPnJlcGVhdEludGVydmFsKCk7Ci0gICAgICAgIHRpbWVyLT5zZXROZXh0RmlyZVRpbWUo
aW50ZXJ2YWwgPyBmaXJlVGltZSArIGludGVydmFsIDogTW9ub3RvbmljVGltZSB7IH0pOworICAg
ICAgICBpZiAoaXRlbS0+dGltZSA+IGZpcmVUaW1lKQorICAgICAgICAgICAgYnJlYWs7CiAKKyAg
ICAgICAgYXV0byYgdGltZXIgPSBpdGVtLT50aW1lcigpOworICAgICAgICBTZWNvbmRzIGludGVy
dmFsID0gdGltZXIucmVwZWF0SW50ZXJ2YWwoKTsKKyAgICAgICAgdGltZXIuc2V0TmV4dEZpcmVU
aW1lKGludGVydmFsID8gZmlyZVRpbWUgKyBpbnRlcnZhbCA6IE1vbm90b25pY1RpbWUgeyB9KTsK
KwogICAgICAgICAvLyBPbmNlIHRoZSB0aW1lciBoYXMgYmVlbiBmaXJlZCwgaXQgbWF5IGJlIGRl
bGV0ZWQsIHNvIGRvIG5vdGhpbmcgZWxzZSB3aXRoIGl0IGFmdGVyIHRoaXMgcG9pbnQuCi0gICAg
ICAgIHRpbWVyLT5maXJlZCgpOworICAgICAgICBpdGVtLT50aW1lcigpLmZpcmVkKCk7CiAKICAg
ICAgICAgLy8gQ2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlIHRpbWVyIGFza2VkIHRpbWVycyB0byBm
aXJlIGluIGEgbmVzdGVkIGV2ZW50IGxvb3AsIG9yIHdlIGFyZSBvdmVyIHRpbWUgbGltaXQuCiAg
ICAgICAgIGlmICghbV9maXJpbmdUaW1lcnMgfHwgdGltZVRvUXVpdCA8IE1vbm90b25pY1RpbWU6
Om5vdygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmgJKHJldmlz
aW9uIDIzOTQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwzNyArMjksOTMgQEAKIAogI2luY2x1ZGUgPHd0Zi9Nb25vdG9u
aWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotICAgIGNsYXNzIFNoYXJlZFRpbWVyOwotICAgIGNsYXNzIFRpbWVyQmFzZTsKK2NsYXNz
IFNoYXJlZFRpbWVyOworY2xhc3MgVGhyZWFkVGltZXJzOworY2xhc3MgVGltZXJCYXNlOwogCi0g
ICAgLy8gQSBjb2xsZWN0aW9uIG9mIHRpbWVycyBwZXIgdGhyZWFkLiBLZXB0IGluIFRocmVhZEds
b2JhbERhdGEuCi0gICAgY2xhc3MgVGhyZWFkVGltZXJzIHsKLSAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoVGhyZWFkVGltZXJzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVi
bGljOgotICAgICAgICBUaHJlYWRUaW1lcnMoKTsKK3N0cnVjdCBUaHJlYWRUaW1lckhlYXBJdGVt
OwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+PiBUaHJlYWRUaW1l
ckhlYXA7CiAKLSAgICAgICAgLy8gT24gYSB0aHJlYWQgZGlmZmVyZW50IHRoZW4gbWFpbiwgd2Ug
c2hvdWxkIHNldCB0aGUgdGhyZWFkJ3MgaW5zdGFuY2Ugb2YgdGhlIFNoYXJlZFRpbWVyLgotICAg
ICAgICB2b2lkIHNldFNoYXJlZFRpbWVyKFNoYXJlZFRpbWVyKik7CitzdHJ1Y3QgVGhyZWFkVGlt
ZXJIZWFwSXRlbSA6IFJlZkNvdW50ZWQ8VGhyZWFkVGltZXJIZWFwSXRlbT4geworICAgIHN0YXRp
YyBSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4gY3JlYXRlKFRpbWVyQmFzZSYsIE1vbm90b25p
Y1RpbWUsIHVuc2lnbmVkKTsKIAotICAgICAgICBWZWN0b3I8VGltZXJCYXNlKj4mIHRpbWVySGVh
cCgpIHsgcmV0dXJuIG1fdGltZXJIZWFwOyB9CisgICAgYm9vbCBoYXNUaW1lcigpIGNvbnN0IHsg
cmV0dXJuIG1fdGltZXI7IH0KKyAgICBUaW1lckJhc2UmIHRpbWVyKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX3RpbWVyKTsKKyAgICAgICAgcmV0dXJuICptX3RpbWVyOworICAgIH0KIAotICAg
ICAgICB2b2lkIHVwZGF0ZVNoYXJlZFRpbWVyKCk7Ci0gICAgICAgIHZvaWQgZmlyZVRpbWVyc0lu
TmVzdGVkRXZlbnRMb29wKCk7CisgICAgdm9pZCBjbGVhclRpbWVyKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghaXNJbkhlYXAoKSk7CisgICAgICAgIG1fdGltZXIgPSBudWxscHRyOworICAgIH0K
IAotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc2hhcmVkVGltZXJGaXJlZEludGVybmFsKCk7
Ci0gICAgICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wSW50ZXJuYWwoKTsKKyAg
ICBUaHJlYWRUaW1lckhlYXAmIHRpbWVySGVhcCgpIGNvbnN0OwogCi0gICAgICAgIFZlY3RvcjxU
aW1lckJhc2UqPiBtX3RpbWVySGVhcDsKLSAgICAgICAgU2hhcmVkVGltZXIqIG1fc2hhcmVkVGlt
ZXIgeyBudWxscHRyIH07IC8vIEV4dGVybmFsIG9iamVjdCwgY2FuIGJlIGEgcnVuIGxvb3Agb24g
YSB3b3JrZXIgdGhyZWFkLiBOb3JtYWxseSBzZXQvcmVzZXQgYnkgd29ya2VyIHRocmVhZC4KLSAg
ICAgICAgYm9vbCBtX2ZpcmluZ1RpbWVycyB7IGZhbHNlIH07IC8vIFJlZW50cmFuY3kgZ3VhcmQu
Ci0gICAgICAgIE1vbm90b25pY1RpbWUgbV9wZW5kaW5nU2hhcmVkVGltZXJGaXJlVGltZTsKLSAg
ICB9OworICAgIGlubGluZSB1bnNpZ25lZCBoZWFwSW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1faGVhcEluZGV4ICE9IGludmFsaWRIZWFwSW5kZXgpOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faGVhcEluZGV4KTsKKyAgICB9CisgICAgaW5saW5l
IGJvb2wgaXNJbkhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXBJbmRleCAhPSBpbnZhbGlkSGVh
cEluZGV4OyB9CisgICAgaW5saW5lIGJvb2wgaXNGaXJzdEluSGVhcCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2hlYXBJbmRleDsgfQogCisgICAgdm9pZCBzZXRIZWFwSW5kZXgodW5zaWduZWQgbmV3SW5k
ZXgpCisgICAgeworICAgICAgICBBU1NFUlQobmV3SW5kZXggIT0gaW52YWxpZEhlYXBJbmRleCk7
CisgICAgICAgIG1faGVhcEluZGV4ID0gbmV3SW5kZXg7CisgICAgfQorICAgIHZvaWQgc2V0Tm90
SW5IZWFwKCkgeyBtX2hlYXBJbmRleCA9IGludmFsaWRIZWFwSW5kZXg7IH0KKworICAgIE1vbm90
b25pY1RpbWUgdGltZTsKKyAgICB1bnNpZ25lZCBpbnNlcnRpb25PcmRlciB7IDAgfTsKKworcHJp
dmF0ZToKKyAgICBUaHJlYWRUaW1lcnMmIG1fdGhyZWFkVGltZXJzOworICAgIFRpbWVyQmFzZSog
bV90aW1lciB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBtX2hlYXBJbmRleCB7IGludmFsaWRI
ZWFwSW5kZXggfTsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnZhbGlkSGVhcEluZGV4
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC0xKTsKKworICAgIFRocmVhZFRpbWVySGVhcEl0ZW0o
VGltZXJCYXNlJiwgTW9ub3RvbmljVGltZSwgdW5zaWduZWQpOworfTsKKyAgICAKKy8vIEEgY29s
bGVjdGlvbiBvZiB0aW1lcnMgcGVyIHRocmVhZC4gS2VwdCBpbiBUaHJlYWRHbG9iYWxEYXRhLgor
Y2xhc3MgVGhyZWFkVGltZXJzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRUaW1l
cnMpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBUaHJlYWRUaW1lcnMo
KTsKKworICAgIC8vIE9uIGEgdGhyZWFkIGRpZmZlcmVudCB0aGVuIG1haW4sIHdlIHNob3VsZCBz
ZXQgdGhlIHRocmVhZCdzIGluc3RhbmNlIG9mIHRoZSBTaGFyZWRUaW1lci4KKyAgICB2b2lkIHNl
dFNoYXJlZFRpbWVyKFNoYXJlZFRpbWVyKik7CisKKyAgICBUaHJlYWRUaW1lckhlYXAmIHRpbWVy
SGVhcCgpIHsgcmV0dXJuIG1fdGltZXJIZWFwOyB9CisKKyAgICB2b2lkIHVwZGF0ZVNoYXJlZFRp
bWVyKCk7CisgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKKworcHJpdmF0
ZToKKyAgICB2b2lkIHNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpOworICAgIHZvaWQgZmlyZVRp
bWVyc0luTmVzdGVkRXZlbnRMb29wSW50ZXJuYWwoKTsKKworICAgIFRocmVhZFRpbWVySGVhcCBt
X3RpbWVySGVhcDsKKyAgICBTaGFyZWRUaW1lciogbV9zaGFyZWRUaW1lciB7IG51bGxwdHIgfTsg
Ly8gRXh0ZXJuYWwgb2JqZWN0LCBjYW4gYmUgYSBydW4gbG9vcCBvbiBhIHdvcmtlciB0aHJlYWQu
IE5vcm1hbGx5IHNldC9yZXNldCBieSB3b3JrZXIgdGhyZWFkLgorICAgIGJvb2wgbV9maXJpbmdU
aW1lcnMgeyBmYWxzZSB9OyAvLyBSZWVudHJhbmN5IGd1YXJkLgorICAgIE1vbm90b25pY1RpbWUg
bV9wZW5kaW5nU2hhcmVkVGltZXJGaXJlVGltZTsKK307CisKK2lubGluZSBUaHJlYWRUaW1lckhl
YXAmIFRocmVhZFRpbWVySGVhcEl0ZW06OnRpbWVySGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdGhyZWFkVGltZXJzLnRpbWVySGVhcCgpOwogfQogCit9CisKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RpbWVyLmNwcAkocmV2aXNpb24gMjM5NDAxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2MCArNTAsOTIgQEAK
IC8vIFRoZW4gd2Ugc2V0IGEgc2luZ2xlIHNoYXJlZCBzeXN0ZW0gdGltZXIgdG8gZmlyZSBhdCB0
aGF0IHRpbWUuCiAvLwogLy8gV2hlbiBhIHRpbWVyJ3MgIm5leHQgZmlyZSB0aW1lIiBjaGFuZ2Vz
LCB3ZSBuZWVkIHRvIG1vdmUgaXQgYXJvdW5kIGluIHRoZSBwcmlvcml0eSBxdWV1ZS4KLXN0YXRp
YyBWZWN0b3I8VGltZXJCYXNlKj4mIHRocmVhZEdsb2JhbFRpbWVySGVhcCgpCitzdGF0aWMgVGhy
ZWFkVGltZXJIZWFwJiB0aHJlYWRHbG9iYWxUaW1lckhlYXAoKQogewogICAgIHJldHVybiB0aHJl
YWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkudGltZXJIZWFwKCk7CiB9CisKK2lubGluZSBU
aHJlYWRUaW1lckhlYXBJdGVtOjpUaHJlYWRUaW1lckhlYXBJdGVtKFRpbWVyQmFzZSYgdGltZXIs
IE1vbm90b25pY1RpbWUgdGltZSwgdW5zaWduZWQgaW5zZXJ0aW9uT3JkZXIpCisgICAgOiB0aW1l
KHRpbWUpCisgICAgLCBpbnNlcnRpb25PcmRlcihpbnNlcnRpb25PcmRlcikKKyAgICAsIG1fdGhy
ZWFkVGltZXJzKHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKSkKKyAgICAsIG1fdGlt
ZXIoJnRpbWVyKQoreworICAgIEFTU0VSVChtX3RpbWVyKTsKK30KKyAgICAKK2lubGluZSBSZWZQ
dHI8VGhyZWFkVGltZXJIZWFwSXRlbT4gVGhyZWFkVGltZXJIZWFwSXRlbTo6Y3JlYXRlKFRpbWVy
QmFzZSYgdGltZXIsIE1vbm90b25pY1RpbWUgdGltZSwgdW5zaWduZWQgaW5zZXJ0aW9uT3JkZXIp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGhyZWFkVGltZXJIZWFwSXRlbSB7IHRpbWVy
LCB0aW1lLCBpbnNlcnRpb25PcmRlciB9KTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLQogCiBj
bGFzcyBUaW1lckhlYXBQb2ludGVyIHsKIHB1YmxpYzoKLSAgICBUaW1lckhlYXBQb2ludGVyKFRp
bWVyQmFzZSoqIHBvaW50ZXIpIDogbV9wb2ludGVyKHBvaW50ZXIpIHsgfQorICAgIFRpbWVySGVh
cFBvaW50ZXIoUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+KiBwb2ludGVyKSA6IG1fcG9pbnRl
cihwb2ludGVyKSB7IH0KICAgICBUaW1lckhlYXBSZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3Q7
Ci0gICAgVGltZXJCYXNlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gKm1fcG9pbnRlcjsg
fQorICAgIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPiYgb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuICptX3BvaW50ZXI7IH0KIHByaXZhdGU6Ci0gICAgVGltZXJCYXNlKiogbV9wb2ludGVy
OworICAgIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPiogbV9wb2ludGVyOwogfTsKIAogY2xh
c3MgVGltZXJIZWFwUmVmZXJlbmNlIHsKIHB1YmxpYzoKLSAgICBUaW1lckhlYXBSZWZlcmVuY2Uo
VGltZXJCYXNlKiYgcmVmZXJlbmNlKSA6IG1fcmVmZXJlbmNlKHJlZmVyZW5jZSkgeyB9Ci0gICAg
b3BlcmF0b3IgVGltZXJCYXNlKigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlOyB9CisgICAg
VGltZXJIZWFwUmVmZXJlbmNlKFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPiYgcmVmZXJlbmNl
KQorICAgICAgICA6IG1fcmVmZXJlbmNlKHJlZmVyZW5jZSkKKyAgICB7IH0KKworICAgIFRpbWVy
SGVhcFJlZmVyZW5jZShjb25zdCBUaW1lckhlYXBSZWZlcmVuY2UmIG90aGVyKQorICAgICAgICA6
IG1fcmVmZXJlbmNlKG90aGVyLm1fcmVmZXJlbmNlKQorICAgIHsgfQorCisgICAgUmVmUHRyPFRo
cmVhZFRpbWVySGVhcEl0ZW0+IGNvcHlSZWYoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZS5j
b3B5UmVmKCk7IH0KKyAgICBvcGVyYXRvciBSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2U7IH0KICAgICBUaW1lckhlYXBQb2ludGVyIG9wZXJh
dG9yJigpIGNvbnN0IHsgcmV0dXJuICZtX3JlZmVyZW5jZTsgfQotICAgIFRpbWVySGVhcFJlZmVy
ZW5jZSYgb3BlcmF0b3I9KFRpbWVyQmFzZSopOwotICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3Bl
cmF0b3I9KFRpbWVySGVhcFJlZmVyZW5jZSk7CisgICAgVGltZXJIZWFwUmVmZXJlbmNlJiBvcGVy
YXRvcj0oVGltZXJIZWFwUmVmZXJlbmNlJiYpOworICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3Bl
cmF0b3I9KFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPiYmKTsKKworICAgIHZvaWQgdXBkYXRl
SGVhcEluZGV4KCk7CisKIHByaXZhdGU6Ci0gICAgVGltZXJCYXNlKiYgbV9yZWZlcmVuY2U7Cisg
ICAgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+JiBtX3JlZmVyZW5jZTsKIH07CiAKIGlubGlu
ZSBUaW1lckhlYXBSZWZlcmVuY2UgVGltZXJIZWFwUG9pbnRlcjo6b3BlcmF0b3IqKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gKm1fcG9pbnRlcjsKKyAgICByZXR1cm4gVGltZXJIZWFwUmVmZXJlbmNl
IHsgKm1fcG9pbnRlciB9OwogfQogCi1pbmxpbmUgVGltZXJIZWFwUmVmZXJlbmNlJiBUaW1lckhl
YXBSZWZlcmVuY2U6Om9wZXJhdG9yPShUaW1lckJhc2UqIHRpbWVyKQoraW5saW5lIFRpbWVySGVh
cFJlZmVyZW5jZSYgVGltZXJIZWFwUmVmZXJlbmNlOjpvcGVyYXRvcj0oVGltZXJIZWFwUmVmZXJl
bmNlJiYgb3RoZXIpCiB7Ci0gICAgbV9yZWZlcmVuY2UgPSB0aW1lcjsKLSAgICBWZWN0b3I8VGlt
ZXJCYXNlKj4mIGhlYXAgPSB0aW1lci0+dGltZXJIZWFwKCk7Ci0gICAgaWYgKCZtX3JlZmVyZW5j
ZSA+PSBoZWFwLmRhdGEoKSAmJiAmbV9yZWZlcmVuY2UgPCBoZWFwLmRhdGEoKSArIGhlYXAuc2l6
ZSgpKQotICAgICAgICB0aW1lci0+bV9oZWFwSW5kZXggPSAmbV9yZWZlcmVuY2UgLSBoZWFwLmRh
dGEoKTsKKyAgICBtX3JlZmVyZW5jZSA9IFdURk1vdmUob3RoZXIubV9yZWZlcmVuY2UpOworICAg
IHVwZGF0ZUhlYXBJbmRleCgpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotaW5saW5lIFRpbWVy
SGVhcFJlZmVyZW5jZSYgVGltZXJIZWFwUmVmZXJlbmNlOjpvcGVyYXRvcj0oVGltZXJIZWFwUmVm
ZXJlbmNlIGIpCitpbmxpbmUgVGltZXJIZWFwUmVmZXJlbmNlJiBUaW1lckhlYXBSZWZlcmVuY2U6
Om9wZXJhdG9yPShSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mJiBpdGVtKQogewotICAgIFRp
bWVyQmFzZSogdGltZXIgPSBiOwotICAgIHJldHVybiAqdGhpcyA9IHRpbWVyOworICAgIG1fcmVm
ZXJlbmNlID0gV1RGTW92ZShpdGVtKTsKKyAgICB1cGRhdGVIZWFwSW5kZXgoKTsKKyAgICByZXR1
cm4gKnRoaXM7CiB9CiAKK2lubGluZSB2b2lkIFRpbWVySGVhcFJlZmVyZW5jZTo6dXBkYXRlSGVh
cEluZGV4KCkKK3sKKyAgICBhdXRvJiBoZWFwID0gbV9yZWZlcmVuY2UtPnRpbWVySGVhcCgpOwor
ICAgIGlmICgmbV9yZWZlcmVuY2UgPj0gaGVhcC5kYXRhKCkgJiYgJm1fcmVmZXJlbmNlIDwgaGVh
cC5kYXRhKCkgKyBoZWFwLnNpemUoKSkKKyAgICAgICAgbV9yZWZlcmVuY2UtPnNldEhlYXBJbmRl
eCgmbV9yZWZlcmVuY2UgLSBoZWFwLmRhdGEoKSk7Cit9CisKIGlubGluZSB2b2lkIHN3YXAoVGlt
ZXJIZWFwUmVmZXJlbmNlIGEsIFRpbWVySGVhcFJlZmVyZW5jZSBiKQogewotICAgIFRpbWVyQmFz
ZSogdGltZXJBID0gYTsKLSAgICBUaW1lckJhc2UqIHRpbWVyQiA9IGI7CisgICAgUmVmUHRyPFRo
cmVhZFRpbWVySGVhcEl0ZW0+IHRpbWVyQSA9IGEuY29weVJlZigpOworICAgIFJlZlB0cjxUaHJl
YWRUaW1lckhlYXBJdGVtPiB0aW1lckIgPSBiLmNvcHlSZWYoKTsKIAogICAgIC8vIEludm9rZSB0
aGUgYXNzaWdubWVudCBvcGVyYXRvciwgc2luY2UgdGhhdCB0YWtlcyBjYXJlIG9mIHVwZGF0aW5n
IG1faGVhcEluZGV4LgotICAgIGEgPSB0aW1lckI7Ci0gICAgYiA9IHRpbWVyQTsKKyAgICBhID0g
V1RGTW92ZSh0aW1lckIpOworICAgIGIgPSBXVEZNb3ZlKHRpbWVyQSk7CiB9CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0KQEAgLTExMCw5ICsxNDIsOSBAQAogCiAvLyBDbGFzcyB0byByZXByZXNlbnQg
aXRlcmF0b3JzIGluIHRoZSBoZWFwIHdoZW4gY2FsbGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSBo
ZWFwIGFsZ29yaXRobXMuCiAvLyBVc2VzIGEgY3VzdG9tIHBvaW50ZXIgYW5kIHJlZmVyZW5jZSB0
eXBlIHRoYXQgdXBkYXRlIGluZGljZXMgZm9yIHBvaW50ZXJzIGluIHRoZSBoZWFwLgotY2xhc3Mg
VGltZXJIZWFwSXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nl
c3NfaXRlcmF0b3JfdGFnLCBUaW1lckJhc2UqLCBwdHJkaWZmX3QsIFRpbWVySGVhcFBvaW50ZXIs
IFRpbWVySGVhcFJlZmVyZW5jZT4geworY2xhc3MgVGltZXJIZWFwSXRlcmF0b3IgOiBwdWJsaWMg
c3RkOjppdGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBSZWZQdHI8VGhy
ZWFkVGltZXJIZWFwSXRlbT4sIHB0cmRpZmZfdCwgVGltZXJIZWFwUG9pbnRlciwgVGltZXJIZWFw
UmVmZXJlbmNlPiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVGltZXJIZWFwSXRlcmF0b3IoVGlt
ZXJCYXNlKiogcG9pbnRlcikgOiBtX3BvaW50ZXIocG9pbnRlcikgeyBjaGVja0NvbnNpc3RlbmN5
KCk7IH0KKyAgICBleHBsaWNpdCBUaW1lckhlYXBJdGVyYXRvcihSZWZQdHI8VGhyZWFkVGltZXJI
ZWFwSXRlbT4qIHBvaW50ZXIpIDogbV9wb2ludGVyKHBvaW50ZXIpIHsgY2hlY2tDb25zaXN0ZW5j
eSgpOyB9CiAKICAgICBUaW1lckhlYXBJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgY2hlY2tDb25z
aXN0ZW5jeSgpOyArK21fcG9pbnRlcjsgY2hlY2tDb25zaXN0ZW5jeSgpOyByZXR1cm4gKnRoaXM7
IH0KICAgICBUaW1lckhlYXBJdGVyYXRvciBvcGVyYXRvcisrKGludCkgeyBjaGVja0NvbnNpc3Rl
bmN5KDEpOyByZXR1cm4gVGltZXJIZWFwSXRlcmF0b3IobV9wb2ludGVyKyspOyB9CkBAIC0xMjUs
NyArMTU3LDcgQEAKIAogICAgIFRpbWVySGVhcFJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7
IHJldHVybiBUaW1lckhlYXBSZWZlcmVuY2UoKm1fcG9pbnRlcik7IH0KICAgICBUaW1lckhlYXBS
ZWZlcmVuY2Ugb3BlcmF0b3JbXShwdHJkaWZmX3QgaSkgY29uc3QgeyByZXR1cm4gVGltZXJIZWFw
UmVmZXJlbmNlKG1fcG9pbnRlcltpXSk7IH0KLSAgICBUaW1lckJhc2UqIG9wZXJhdG9yLT4oKSBj
b25zdCB7IHJldHVybiAqbV9wb2ludGVyOyB9CisgICAgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0
ZW0+JiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gKm1fcG9pbnRlcjsgfQogCiBwcml2YXRl
OgogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkgY29uc3QK
QEAgLTE0OSw3ICsxODEsNyBAQAogICAgIGZyaWVuZCBUaW1lckhlYXBJdGVyYXRvciBvcGVyYXRv
ci0oVGltZXJIZWFwSXRlcmF0b3IsIHNpemVfdCk7CiAgICAgZnJpZW5kIHB0cmRpZmZfdCBvcGVy
YXRvci0oVGltZXJIZWFwSXRlcmF0b3IsIFRpbWVySGVhcEl0ZXJhdG9yKTsKIAotICAgIFRpbWVy
QmFzZSoqIG1fcG9pbnRlcjsKKyAgICBSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4qIG1fcG9p
bnRlcjsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oVGltZXJIZWFwSXRlcmF0b3IgYSwg
VGltZXJIZWFwSXRlcmF0b3IgYikgeyByZXR1cm4gYS5tX3BvaW50ZXIgPT0gYi5tX3BvaW50ZXI7
IH0KQEAgLTE2OSwyNCArMjAxLDM1IEBACiAKIGNsYXNzIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rp
b24gewogcHVibGljOgotICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUaW1lckJhc2UqLCBjb25z
dCBUaW1lckJhc2UqKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IFRpbWVy
QmFzZSYgYSwgY29uc3QgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+JiBiKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGNvbXBhcmUoYS5tX2hlYXBJdGVtLT50aW1lLCBhLm1faGVhcEl0ZW0tPmlu
c2VydGlvbk9yZGVyLCBiLT50aW1lLCBiLT5pbnNlcnRpb25PcmRlcik7CisgICAgfQorCisgICAg
c3RhdGljIGJvb2wgY29tcGFyZShjb25zdCBSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mIGEs
IGNvbnN0IFRpbWVyQmFzZSYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wYXJlKGEtPnRp
bWUsIGEtPmluc2VydGlvbk9yZGVyLCBiLm1faGVhcEl0ZW0tPnRpbWUsIGIubV9oZWFwSXRlbS0+
aW5zZXJ0aW9uT3JkZXIpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBSZWZQ
dHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mIGEsIGNvbnN0IFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJ
dGVtPiYgYikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wYXJlKGEtPnRpbWUsIGEt
Pmluc2VydGlvbk9yZGVyLCBiLT50aW1lLCBiLT5pbnNlcnRpb25PcmRlcik7CisgICAgfQorCitw
cml2YXRlOgorICAgIHN0YXRpYyBib29sIGNvbXBhcmUoTW9ub3RvbmljVGltZSBhVGltZSwgdW5z
aWduZWQgYU9yZGVyLCBNb25vdG9uaWNUaW1lIGJUaW1lLCB1bnNpZ25lZCBiT3JkZXIpCisgICAg
eworICAgICAgICAvLyBUaGUgY29tcGFyaXNvbnMgYmVsb3cgYXJlICJiYWNrd2FyZHMiIGJlY2F1
c2UgdGhlIGhlYXAgcHV0cyB0aGUgbGFyZ2VzdAorICAgICAgICAvLyBlbGVtZW50IGZpcnN0IGFu
ZCB3ZSB3YW50IHRoZSBsb3dlc3QgdGltZSB0byBiZSB0aGUgZmlyc3Qgb25lIGluIHRoZSBoZWFw
LgorICAgICAgICBpZiAoYlRpbWUgIT0gYVRpbWUpCisgICAgICAgICAgICByZXR1cm4gYlRpbWUg
PCBhVGltZTsKKyAgICAgICAgLy8gV2UgbmVlZCB0byBsb29rIGF0IHRoZSBkaWZmZXJlbmNlIG9m
IHRoZSBpbnNlcnRpb24gb3JkZXJzIGluc3RlYWQgb2YgY29tcGFyaW5nIHRoZSB0d28KKyAgICAg
ICAgLy8gb3V0cmlnaHQgaW4gY2FzZSBvZiBvdmVyZmxvdy4KKyAgICAgICAgdW5zaWduZWQgZGlm
ZmVyZW5jZSA9IGFPcmRlciAtIGJPcmRlcjsKKyAgICAgICAgcmV0dXJuIGRpZmZlcmVuY2UgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLyAyOworICAgIH0KIH07CiAKLWlu
bGluZSBib29sIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb246Om9wZXJhdG9yKCkoY29uc3QgVGlt
ZXJCYXNlKiBhLCBjb25zdCBUaW1lckJhc2UqIGIpIGNvbnN0Ci17Ci0gICAgLy8gVGhlIGNvbXBh
cmlzb25zIGJlbG93IGFyZSAiYmFja3dhcmRzIiBiZWNhdXNlIHRoZSBoZWFwIHB1dHMgdGhlIGxh
cmdlc3QgCi0gICAgLy8gZWxlbWVudCBmaXJzdCBhbmQgd2Ugd2FudCB0aGUgbG93ZXN0IHRpbWUg
dG8gYmUgdGhlIGZpcnN0IG9uZSBpbiB0aGUgaGVhcC4KLSAgICBNb25vdG9uaWNUaW1lIGFGaXJl
VGltZSA9IGEtPm1fbmV4dEZpcmVUaW1lOwotICAgIE1vbm90b25pY1RpbWUgYkZpcmVUaW1lID0g
Yi0+bV9uZXh0RmlyZVRpbWU7Ci0gICAgaWYgKGJGaXJlVGltZSAhPSBhRmlyZVRpbWUpCi0gICAg
ICAgIHJldHVybiBiRmlyZVRpbWUgPCBhRmlyZVRpbWU7Ci0gICAgCi0gICAgLy8gV2UgbmVlZCB0
byBsb29rIGF0IHRoZSBkaWZmZXJlbmNlIG9mIHRoZSBpbnNlcnRpb24gb3JkZXJzIGluc3RlYWQg
b2YgY29tcGFyaW5nIHRoZSB0d28gCi0gICAgLy8gb3V0cmlnaHQgaW4gY2FzZSBvZiBvdmVyZmxv
dy4gCi0gICAgdW5zaWduZWQgZGlmZmVyZW5jZSA9IGEtPm1faGVhcEluc2VydGlvbk9yZGVyIC0g
Yi0+bV9oZWFwSW5zZXJ0aW9uT3JkZXI7Ci0gICAgcmV0dXJuIGRpZmZlcmVuY2UgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLyAyOwotfQotCiAvLyAtLS0tLS0tLS0tLS0t
LS0tCiAKIHN0YXRpYyBib29sIHNob3VsZFN1cHByZXNzVGhyZWFkU2FmZXR5Q2hlY2soKQpAQCAt
MjAxLDggKzI0NCw3IEBACiB9CiAKIFRpbWVyQmFzZTo6VGltZXJCYXNlKCkKLSAgICA6IG1faGVh
cEluZGV4KC0xKQotICAgICwgbV93YXNEZWxldGVkKGZhbHNlKQorICAgIDogbV93YXNEZWxldGVk
KGZhbHNlKQogewogfQogCkBAIC0yMTIsNiArMjU0LDEwIEBACiAgICAgUkVMRUFTRV9BU1NFUlQo
Y2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKG1fdGhyZWFkLmdldCgpKSB8fCBzaG91
bGRTdXBwcmVzc1RocmVhZFNhZmV0eUNoZWNrKCkpOwogICAgIHN0b3AoKTsKICAgICBBU1NFUlQo
IWluSGVhcCgpKTsKKyAgICBpZiAobV9oZWFwSXRlbSkgeworICAgICAgICBtX2hlYXBJdGVtLT5j
bGVhclRpbWVyKCk7CisgICAgICAgIG1faGVhcEl0ZW0gPSBudWxscHRyOworICAgIH0KICAgICBt
X3dhc0RlbGV0ZWQgPSB0cnVlOwogfQogCkBAIC0yMzAsNyArMjc2LDcgQEAKICAgICBtX3JlcGVh
dEludGVydmFsID0gMF9zOwogICAgIHNldE5leHRGaXJlVGltZShNb25vdG9uaWNUaW1lIHsgfSk7
CiAKLSAgICBBU1NFUlQoIXN0YXRpY19jYXN0PGJvb2w+KG1fbmV4dEZpcmVUaW1lKSk7CisgICAg
QVNTRVJUKCFzdGF0aWNfY2FzdDxib29sPihuZXh0RmlyZVRpbWUoKSkpOwogICAgIEFTU0VSVCht
X3JlcGVhdEludGVydmFsID09IDBfcyk7CiAgICAgQVNTRVJUKCFpbkhlYXAoKSk7CiB9CkBAIC0y
MzgsMjUgKzI4NCwzMyBAQAogU2Vjb25kcyBUaW1lckJhc2U6Om5leHRGaXJlSW50ZXJ2YWwoKSBj
b25zdAogewogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQobV9oZWFwSXRlbSk7
CiAgICAgTW9ub3RvbmljVGltZSBjdXJyZW50ID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAg
aWYgKG1fbmV4dEZpcmVUaW1lIDwgY3VycmVudCkKKyAgICBhdXRvIGZpcmVUaW1lID0gbmV4dEZp
cmVUaW1lKCk7CisgICAgaWYgKGZpcmVUaW1lIDwgY3VycmVudCkKICAgICAgICAgcmV0dXJuIDBf
czsKLSAgICByZXR1cm4gbV9uZXh0RmlyZVRpbWUgLSBjdXJyZW50OworICAgIHJldHVybiBmaXJl
VGltZSAtIGN1cnJlbnQ7CiB9CiAKIGlubGluZSB2b2lkIFRpbWVyQmFzZTo6Y2hlY2tIZWFwSW5k
ZXgoKSBjb25zdAogewotICAgIEFTU0VSVCh0aW1lckhlYXAoKSA9PSB0aHJlYWRHbG9iYWxUaW1l
ckhlYXAoKSk7Ci0gICAgQVNTRVJUKCF0aW1lckhlYXAoKS5pc0VtcHR5KCkpOwotICAgIEFTU0VS
VChtX2hlYXBJbmRleCA+PSAwKTsKLSAgICBBU1NFUlQobV9oZWFwSW5kZXggPCBzdGF0aWNfY2Fz
dDxpbnQ+KHRpbWVySGVhcCgpLnNpemUoKSkpOwotICAgIEFTU0VSVCh0aW1lckhlYXAoKVttX2hl
YXBJbmRleF0gPT0gdGhpcyk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIEFTU0VSVChtX2hl
YXBJdGVtKTsKKyAgICBhdXRvJiBoZWFwID0gbV9oZWFwSXRlbS0+dGltZXJIZWFwKCk7CisgICAg
QVNTRVJUKCZoZWFwID09ICZ0aHJlYWRHbG9iYWxUaW1lckhlYXAoKSk7CisgICAgQVNTRVJUKCFo
ZWFwLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1faGVhcEl0ZW0tPmlzSW5IZWFwKCkpOworICAg
IEFTU0VSVChtX2hlYXBJdGVtLT5oZWFwSW5kZXgoKSA8IG1faGVhcEl0ZW0tPnRpbWVySGVhcCgp
LnNpemUoKSk7CisgICAgQVNTRVJUKGhlYXBbbV9oZWFwSXRlbS0+aGVhcEluZGV4KCldID09IG1f
aGVhcEl0ZW0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBoZWFwLnNpemUoKTsg
aSA8IHNpemU7IGkrKykKKyAgICAgICAgQVNTRVJUKGhlYXBbaV0tPmhlYXBJbmRleCgpID09IGkp
OworI2VuZGlmCiB9CiAKIGlubGluZSB2b2lkIFRpbWVyQmFzZTo6Y2hlY2tDb25zaXN0ZW5jeSgp
IGNvbnN0CiB7CiAgICAgLy8gVGltZXJzIHNob3VsZCBiZSBpbiB0aGUgaGVhcCBpZiBhbmQgb25s
eSBpZiB0aGV5IGhhdmUgYSBub24temVybyBuZXh0IGZpcmUgdGltZS4KLSAgICBBU1NFUlQoaW5I
ZWFwKCkgPT0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0RmlyZVRpbWUpKTsKKyAgICBBU1NFUlQo
aW5IZWFwKCkgPT0gc3RhdGljX2Nhc3Q8Ym9vbD4obmV4dEZpcmVUaW1lKCkpKTsKICAgICBpZiAo
aW5IZWFwKCkpCiAgICAgICAgIGNoZWNrSGVhcEluZGV4KCk7CiB9CkBAIC0yNjMsMzIgKzMxNywz
MyBAQAogCiB2b2lkIFRpbWVyQmFzZTo6aGVhcERlY3JlYXNlS2V5KCkKIHsKLSAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0RmlyZVRpbWUpKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8Ym9vbD4obmV4dEZpcmVUaW1lKCkpKTsKKyAgICBBU1NFUlQobV9oZWFwSXRlbSk7CiAgICAg
Y2hlY2tIZWFwSW5kZXgoKTsKLSAgICBUaW1lckJhc2UqKiBoZWFwRGF0YSA9IHRpbWVySGVhcCgp
LmRhdGEoKTsKLSAgICBwdXNoX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEpLCBUaW1l
ckhlYXBJdGVyYXRvcihoZWFwRGF0YSArIG1faGVhcEluZGV4ICsgMSksIFRpbWVySGVhcExlc3NU
aGFuRnVuY3Rpb24oKSk7CisgICAgYXV0byogaGVhcERhdGEgPSBtX2hlYXBJdGVtLT50aW1lckhl
YXAoKS5kYXRhKCk7CisgICAgcHVzaF9oZWFwKFRpbWVySGVhcEl0ZXJhdG9yKGhlYXBEYXRhKSwg
VGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEgKyBtX2hlYXBJdGVtLT5oZWFwSW5kZXgoKSArIDEp
LCBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uKCkpOwogICAgIGNoZWNrSGVhcEluZGV4KCk7CiB9
CiAKIGlubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcERlbGV0ZSgpCiB7Ci0gICAgQVNTRVJUKCFz
dGF0aWNfY2FzdDxib29sPihtX25leHRGaXJlVGltZSkpOworICAgIEFTU0VSVCghc3RhdGljX2Nh
c3Q8Ym9vbD4obmV4dEZpcmVUaW1lKCkpKTsKICAgICBoZWFwUG9wKCk7Ci0gICAgdGltZXJIZWFw
KCkucmVtb3ZlTGFzdCgpOwotICAgIG1faGVhcEluZGV4ID0gLTE7CisgICAgbV9oZWFwSXRlbS0+
dGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOworICAgIG1faGVhcEl0ZW0tPnNldE5vdEluSGVhcCgp
OwogfQogCiB2b2lkIFRpbWVyQmFzZTo6aGVhcERlbGV0ZU1pbigpCiB7Ci0gICAgQVNTRVJUKCFz
dGF0aWNfY2FzdDxib29sPihtX25leHRGaXJlVGltZSkpOworICAgIEFTU0VSVCghc3RhdGljX2Nh
c3Q8Ym9vbD4obmV4dEZpcmVUaW1lKCkpKTsKICAgICBoZWFwUG9wTWluKCk7Ci0gICAgdGltZXJI
ZWFwKCkucmVtb3ZlTGFzdCgpOwotICAgIG1faGVhcEluZGV4ID0gLTE7CisgICAgbV9oZWFwSXRl
bS0+dGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOworICAgIG1faGVhcEl0ZW0tPnNldE5vdEluSGVh
cCgpOwogfQogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmhlYXBJbmNyZWFzZUtleSgpCiB7Ci0g
ICAgQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KG1fbmV4dEZpcmVUaW1lKSk7CisgICAgQVNTRVJU
KHN0YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGltZSgpKSk7CiAgICAgaGVhcFBvcCgpOwogICAg
IGhlYXBEZWNyZWFzZUtleSgpOwogfQpAQCAtMjk2LDYxICszNTEsNzEgQEAKIGlubGluZSB2b2lk
IFRpbWVyQmFzZTo6aGVhcEluc2VydCgpCiB7CiAgICAgQVNTRVJUKCFpbkhlYXAoKSk7Ci0gICAg
dGltZXJIZWFwKCkuYXBwZW5kKHRoaXMpOwotICAgIG1faGVhcEluZGV4ID0gdGltZXJIZWFwKCku
c2l6ZSgpIC0gMTsKKyAgICBBU1NFUlQobV9oZWFwSXRlbSk7CisgICAgYXV0byYgaGVhcCA9IG1f
aGVhcEl0ZW0tPnRpbWVySGVhcCgpOworICAgIGhlYXAuYXBwZW5kKG1faGVhcEl0ZW0uY29weVJl
ZigpKTsKKyAgICBtX2hlYXBJdGVtLT5zZXRIZWFwSW5kZXgoaGVhcC5zaXplKCkgLSAxKTsKICAg
ICBoZWFwRGVjcmVhc2VLZXkoKTsKIH0KIAogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwUG9w
KCkKIHsKKyAgICBBU1NFUlQobV9oZWFwSXRlbSk7CiAgICAgLy8gVGVtcG9yYXJpbHkgZm9yY2Ug
dGhpcyB0aW1lciB0byBoYXZlIHRoZSBtaW5pbXVtIGtleSBzbyB3ZSBjYW4gcG9wIGl0LgotICAg
IE1vbm90b25pY1RpbWUgZmlyZVRpbWUgPSBtX25leHRGaXJlVGltZTsKLSAgICBtX25leHRGaXJl
VGltZSA9IC1Nb25vdG9uaWNUaW1lOjppbmZpbml0eSgpOworICAgIE1vbm90b25pY1RpbWUgZmly
ZVRpbWUgPSBtX2hlYXBJdGVtLT50aW1lOworICAgIG1faGVhcEl0ZW0tPnRpbWUgPSAtTW9ub3Rv
bmljVGltZTo6aW5maW5pdHkoKTsKICAgICBoZWFwRGVjcmVhc2VLZXkoKTsKICAgICBoZWFwUG9w
TWluKCk7Ci0gICAgbV9uZXh0RmlyZVRpbWUgPSBmaXJlVGltZTsKKyAgICBtX2hlYXBJdGVtLT50
aW1lID0gZmlyZVRpbWU7CiB9CiAKIHZvaWQgVGltZXJCYXNlOjpoZWFwUG9wTWluKCkKIHsKLSAg
ICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAoKS5maXJzdCgpKTsKKyAgICBBU1NFUlQobV9oZWFw
SXRlbSA9PSBtX2hlYXBJdGVtLT50aW1lckhlYXAoKS5maXJzdCgpKTsKICAgICBjaGVja0hlYXBJ
bmRleCgpOwotICAgIFZlY3RvcjxUaW1lckJhc2UqPiYgaGVhcCA9IHRpbWVySGVhcCgpOwotICAg
IFRpbWVyQmFzZSoqIGhlYXBEYXRhID0gaGVhcC5kYXRhKCk7CisgICAgYXV0byYgaGVhcCA9IG1f
aGVhcEl0ZW0tPnRpbWVySGVhcCgpOworICAgIGF1dG8qIGhlYXBEYXRhID0gaGVhcC5kYXRhKCk7
CiAgICAgcG9wX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEpLCBUaW1lckhlYXBJdGVy
YXRvcihoZWFwRGF0YSArIGhlYXAuc2l6ZSgpKSwgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbigp
KTsKICAgICBjaGVja0hlYXBJbmRleCgpOwotICAgIEFTU0VSVCh0aGlzID09IHRpbWVySGVhcCgp
Lmxhc3QoKSk7CisgICAgQVNTRVJUKG1faGVhcEl0ZW0gPT0gbV9oZWFwSXRlbS0+dGltZXJIZWFw
KCkubGFzdCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHBhcmVudEhlYXBQcm9wZXJ0eUhv
bGRzKGNvbnN0IFRpbWVyQmFzZSogY3VycmVudCwgY29uc3QgVmVjdG9yPFRpbWVyQmFzZSo+JiBo
ZWFwLCB1bnNpZ25lZCBjdXJyZW50SW5kZXgpCit2b2lkIFRpbWVyQmFzZTo6aGVhcERlbGV0ZU51
bGxNaW4oVGhyZWFkVGltZXJIZWFwJiBoZWFwKQogeworICAgIFJFTEVBU0VfQVNTRVJUKCFoZWFw
LmZpcnN0KCktPmhhc1RpbWVyKCkpOworICAgIGF1dG8qIGhlYXBEYXRhID0gaGVhcC5kYXRhKCk7
CisgICAgcG9wX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEpLCBUaW1lckhlYXBJdGVy
YXRvcihoZWFwRGF0YSArIGhlYXAuc2l6ZSgpKSwgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbigp
KTsKK30KKworc3RhdGljIGlubGluZSBib29sIHBhcmVudEhlYXBQcm9wZXJ0eUhvbGRzKGNvbnN0
IFRpbWVyQmFzZSogY3VycmVudCwgY29uc3QgVGhyZWFkVGltZXJIZWFwJiBoZWFwLCB1bnNpZ25l
ZCBjdXJyZW50SW5kZXgpCit7CiAgICAgaWYgKCFjdXJyZW50SW5kZXgpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIHVuc2lnbmVkIHBhcmVudEluZGV4ID0gKGN1cnJlbnRJbmRleCAtIDEpIC8g
MjsKLSAgICBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uIGNvbXBhcmVIZWFwUG9zaXRpb247Ci0g
ICAgcmV0dXJuIGNvbXBhcmVIZWFwUG9zaXRpb24oY3VycmVudCwgaGVhcFtwYXJlbnRJbmRleF0p
OworICAgIHJldHVybiBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uOjpjb21wYXJlKCpjdXJyZW50
LCBoZWFwW3BhcmVudEluZGV4XSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjaGlsZEhlYXBQ
cm9wZXJ0eUhvbGRzKGNvbnN0IFRpbWVyQmFzZSogY3VycmVudCwgY29uc3QgVmVjdG9yPFRpbWVy
QmFzZSo+JiBoZWFwLCB1bnNpZ25lZCBjaGlsZEluZGV4KQorc3RhdGljIGlubGluZSBib29sIGNo
aWxkSGVhcFByb3BlcnR5SG9sZHMoY29uc3QgVGltZXJCYXNlKiBjdXJyZW50LCBjb25zdCBUaHJl
YWRUaW1lckhlYXAmIGhlYXAsIHVuc2lnbmVkIGNoaWxkSW5kZXgpCiB7CiAgICAgaWYgKGNoaWxk
SW5kZXggPj0gaGVhcC5zaXplKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIFRpbWVySGVh
cExlc3NUaGFuRnVuY3Rpb24gY29tcGFyZUhlYXBQb3NpdGlvbjsKLSAgICByZXR1cm4gY29tcGFy
ZUhlYXBQb3NpdGlvbihoZWFwW2NoaWxkSW5kZXhdLCBjdXJyZW50KTsKKyAgICByZXR1cm4gVGlt
ZXJIZWFwTGVzc1RoYW5GdW5jdGlvbjo6Y29tcGFyZShoZWFwW2NoaWxkSW5kZXhdLCAqY3VycmVu
dCk7CiB9CiAKIGJvb2wgVGltZXJCYXNlOjpoYXNWYWxpZEhlYXBQb3NpdGlvbigpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKG1fbmV4dEZpcmVUaW1lKTsKKyAgICBBU1NFUlQobmV4dEZpcmVUaW1lKCkp
OworICAgIEFTU0VSVChtX2hlYXBJdGVtKTsKICAgICBpZiAoIWluSGVhcCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGhlYXAgcHJvcGVydHkgc3RpbGwgaG9s
ZHMgd2l0aCB0aGUgbmV3IGZpcmUgdGltZS4gSWYgaXQgZG9lcyB3ZSBkb24ndCBuZWVkIHRvIGRv
IGFueXRoaW5nLgogICAgIC8vIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBTVEwgaGVhcCBpcyBhIHN0
YW5kYXJkIGJpbmFyeSBoZWFwLiBJbiBhbiB1bmxpa2VseSBldmVudCBpdCBpcyBub3QsIHRoZSBh
c3NlcnRpb25zCiAgICAgLy8gaW4gdXBkYXRlSGVhcElmTmVlZGVkKCkgd2lsbCBnZXQgaGl0Lgot
ICAgIGNvbnN0IFZlY3RvcjxUaW1lckJhc2UqPiYgaGVhcCA9IHRpbWVySGVhcCgpOwotICAgIGlm
ICghcGFyZW50SGVhcFByb3BlcnR5SG9sZHModGhpcywgaGVhcCwgbV9oZWFwSW5kZXgpKQorICAg
IGNvbnN0IGF1dG8mIGhlYXAgPSBtX2hlYXBJdGVtLT50aW1lckhlYXAoKTsKKyAgICB1bnNpZ25l
ZCBoZWFwSW5kZXggPSBtX2hlYXBJdGVtLT5oZWFwSW5kZXgoKTsKKyAgICBpZiAoIXBhcmVudEhl
YXBQcm9wZXJ0eUhvbGRzKHRoaXMsIGhlYXAsIGhlYXBJbmRleCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB1bnNpZ25lZCBjaGlsZEluZGV4MSA9IDIgKiBtX2hlYXBJbmRleCArIDE7Cisg
ICAgdW5zaWduZWQgY2hpbGRJbmRleDEgPSAyICogaGVhcEluZGV4ICsgMTsKICAgICB1bnNpZ25l
ZCBjaGlsZEluZGV4MiA9IGNoaWxkSW5kZXgxICsgMTsKICAgICByZXR1cm4gY2hpbGRIZWFwUHJv
cGVydHlIb2xkcyh0aGlzLCBoZWFwLCBjaGlsZEluZGV4MSkgJiYgY2hpbGRIZWFwUHJvcGVydHlI
b2xkcyh0aGlzLCBoZWFwLCBjaGlsZEluZGV4Mik7CiB9CkBAIC0zNTcsMjAgKzQyMiwzMiBAQAog
CiB2b2lkIFRpbWVyQmFzZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUgb2xkVGlt
ZSkKIHsKLSAgICBpZiAobV9uZXh0RmlyZVRpbWUgJiYgaGFzVmFsaWRIZWFwUG9zaXRpb24oKSkK
KyAgICBhdXRvIGZpcmVUaW1lID0gbmV4dEZpcmVUaW1lKCk7CisgICAgaWYgKGZpcmVUaW1lICYm
IGhhc1ZhbGlkSGVhcFBvc2l0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgaW50IG9sZEhlYXBJbmRleCA9IG1faGVhcEluZGV4OworCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG9sZEhlYXBJbmRleDsKKyAgICBpZiAo
bV9oZWFwSXRlbS0+aXNJbkhlYXAoKSkKKyAgICAgICAgb2xkSGVhcEluZGV4ID0gbV9oZWFwSXRl
bS0+aGVhcEluZGV4KCk7CiAjZW5kaWYKKwogICAgIGlmICghb2xkVGltZSkKICAgICAgICAgaGVh
cEluc2VydCgpOwotICAgIGVsc2UgaWYgKCFtX25leHRGaXJlVGltZSkKKyAgICBlbHNlIGlmICgh
ZmlyZVRpbWUpCiAgICAgICAgIGhlYXBEZWxldGUoKTsKLSAgICBlbHNlIGlmIChtX25leHRGaXJl
VGltZSA8IG9sZFRpbWUpCisgICAgZWxzZSBpZiAoZmlyZVRpbWUgPCBvbGRUaW1lKQogICAgICAg
ICBoZWFwRGVjcmVhc2VLZXkoKTsKICAgICBlbHNlCiAgICAgICAgIGhlYXBJbmNyZWFzZUtleSgp
OwotICAgIEFTU0VSVChtX2hlYXBJbmRleCAhPSBvbGRIZWFwSW5kZXgpOworCisjaWYgIUFTU0VS
VF9ESVNBQkxFRAorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5ld0hlYXBJbmRleDsKKyAg
ICBpZiAobV9oZWFwSXRlbS0+aXNJbkhlYXAoKSkKKyAgICAgICAgbmV3SGVhcEluZGV4ID0gbV9o
ZWFwSXRlbS0+aGVhcEluZGV4KCk7CisgICAgQVNTRVJUKG5ld0hlYXBJbmRleCAhPSBvbGRIZWFw
SW5kZXgpOworI2VuZGlmCisKICAgICBBU1NFUlQoIWluSGVhcCgpIHx8IGhhc1ZhbGlkSGVhcFBv
c2l0aW9uKCkpOwogfQogCkBAIC0zODQsMTEgKzQ2MSwxMSBAQAogICAgICAgICBtX3VuYWxpZ25l
ZE5leHRGaXJlVGltZSA9IG5ld1RpbWU7CiAKICAgICAvLyBBY2Nlc3NpbmcgdGhyZWFkIGdsb2Jh
bCBkYXRhIGlzIHNsb3cuIENhY2hlIHRoZSBoZWFwIHBvaW50ZXIuCi0gICAgaWYgKCFtX2NhY2hl
ZFRocmVhZEdsb2JhbFRpbWVySGVhcCkKLSAgICAgICAgbV9jYWNoZWRUaHJlYWRHbG9iYWxUaW1l
ckhlYXAgPSAmdGhyZWFkR2xvYmFsVGltZXJIZWFwKCk7CisvLyAgICBpZiAoIW1fY2FjaGVkVGhy
ZWFkR2xvYmFsVGltZXJIZWFwKQorLy8gICAgICAgIG1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJI
ZWFwID0gJnRocmVhZEdsb2JhbFRpbWVySGVhcCgpOwogCiAgICAgLy8gS2VlcCBoZWFwIHZhbGlk
IHdoaWxlIGNoYW5naW5nIHRoZSBuZXh0LWZpcmUgdGltZS4KLSAgICBNb25vdG9uaWNUaW1lIG9s
ZFRpbWUgPSBtX25leHRGaXJlVGltZTsKKyAgICBNb25vdG9uaWNUaW1lIG9sZFRpbWUgPSBuZXh0
RmlyZVRpbWUoKTsKICAgICAvLyBEb24ndCByZWFsaWduIHplcm8tZGVsYXkgdGltZXJzLgogICAg
IGlmIChuZXdUaW1lKSB7CiAgICAgICAgIGlmIChhdXRvIG5ld0FsaWduZWRUaW1lID0gYWxpZ25l
ZEZpcmVUaW1lKG5ld1RpbWUpKQpAQCAtMzk2LDE2ICs0NzMsMjAgQEAKICAgICB9CiAKICAgICBp
ZiAob2xkVGltZSAhPSBuZXdUaW1lKSB7Ci0gICAgICAgIG1fbmV4dEZpcmVUaW1lID0gbmV3VGlt
ZTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhcnQgb2YgVGhyZWFkVGltZXJz
LCBvciBhbm90aGVyIHBlci10aHJlYWQgc3RydWN0dXJlLgogICAgICAgICBzdGF0aWMgc3RkOjph
dG9taWM8dW5zaWduZWQ+IGN1cnJlbnRIZWFwSW5zZXJ0aW9uT3JkZXI7Ci0gICAgICAgIG1faGVh
cEluc2VydGlvbk9yZGVyID0gY3VycmVudEhlYXBJbnNlcnRpb25PcmRlcisrOworICAgICAgICBh
dXRvIG5ld09yZGVyID0gY3VycmVudEhlYXBJbnNlcnRpb25PcmRlcisrOwogCi0gICAgICAgIGJv
b2wgd2FzRmlyc3RUaW1lckluSGVhcCA9IG1faGVhcEluZGV4ID09IDA7CisgICAgICAgIGlmICgh
bV9oZWFwSXRlbSkKKyAgICAgICAgICAgIG1faGVhcEl0ZW0gPSBUaHJlYWRUaW1lckhlYXBJdGVt
OjpjcmVhdGUoKnRoaXMsIG5ld1RpbWUsIDApOworICAgICAgICBtX2hlYXBJdGVtLT50aW1lID0g
bmV3VGltZTsKKyAgICAgICAgbV9oZWFwSXRlbS0+aW5zZXJ0aW9uT3JkZXIgPSBuZXdPcmRlcjsK
IAorICAgICAgICBib29sIHdhc0ZpcnN0VGltZXJJbkhlYXAgPSBtX2hlYXBJdGVtLT5pc0ZpcnN0
SW5IZWFwKCk7CisKICAgICAgICAgdXBkYXRlSGVhcElmTmVlZGVkKG9sZFRpbWUpOwogCi0gICAg
ICAgIGJvb2wgaXNGaXJzdFRpbWVySW5IZWFwID0gbV9oZWFwSW5kZXggPT0gMDsKKyAgICAgICAg
Ym9vbCBpc0ZpcnN0VGltZXJJbkhlYXAgPSBtX2hlYXBJdGVtLT5pc0ZpcnN0SW5IZWFwKCk7CiAK
ICAgICAgICAgaWYgKHdhc0ZpcnN0VGltZXJJbkhlYXAgfHwgaXNGaXJzdFRpbWVySW5IZWFwKQog
ICAgICAgICAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnVwZGF0ZVNoYXJl
ZFRpbWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgJKHJldmlzaW9uIDIzOTQwMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDggQEAKICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKyNpbmNsdWRlICJUaHJlYWRUaW1lcnMuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgpAQCAtNDAsMTAgKzQyLDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyBUaW1lIGludGVydmFscyBhcmUgYWxsIGluIHNlY29uZHMuCi0K
LWNsYXNzIFRpbWVySGVhcEVsZW1lbnQ7Ci0KIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVGltZXJCYXNlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTYzLDcgKzYxLDcgQEAKICAgICBTZWNvbmRzIG5leHRVbmFsaWduZWRGaXJlSW50ZXJ2YWwo
KSBjb25zdDsKICAgICBTZWNvbmRzIHJlcGVhdEludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXBlYXRJbnRlcnZhbDsgfQogCi0gICAgdm9pZCBhdWdtZW50RmlyZUludGVydmFsKFNlY29uZHMg
ZGVsdGEpIHsgc2V0TmV4dEZpcmVUaW1lKG1fbmV4dEZpcmVUaW1lICsgZGVsdGEpOyB9CisgICAg
dm9pZCBhdWdtZW50RmlyZUludGVydmFsKFNlY29uZHMgZGVsdGEpIHsgc2V0TmV4dEZpcmVUaW1l
KG1faGVhcEl0ZW0tPnRpbWUgKyBkZWx0YSk7IH0KICAgICB2b2lkIGF1Z21lbnRSZXBlYXRJbnRl
cnZhbChTZWNvbmRzIGRlbHRhKSB7IGF1Z21lbnRGaXJlSW50ZXJ2YWwoZGVsdGEpOyBtX3JlcGVh
dEludGVydmFsICs9IGRlbHRhOyB9CiAKICAgICB2b2lkIGRpZENoYW5nZUFsaWdubWVudEludGVy
dmFsKCk7CkBAIC04MCw3ICs3OCw3IEBACiAKICAgICB2b2lkIHNldE5leHRGaXJlVGltZShNb25v
dG9uaWNUaW1lKTsKIAotICAgIGJvb2wgaW5IZWFwKCkgY29uc3QgeyByZXR1cm4gbV9oZWFwSW5k
ZXggIT0gLTE7IH0KKyAgICBib29sIGluSGVhcCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhcEl0ZW0g
JiYgbV9oZWFwSXRlbS0+aXNJbkhlYXAoKTsgfQogCiAgICAgYm9vbCBoYXNWYWxpZEhlYXBQb3Np
dGlvbigpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUg
b2xkVGltZSk7CkBAIC05MiwxNyArOTAsMTUgQEAKICAgICB2b2lkIGhlYXBJbnNlcnQoKTsKICAg
ICB2b2lkIGhlYXBQb3AoKTsKICAgICB2b2lkIGhlYXBQb3BNaW4oKTsKKyAgICBzdGF0aWMgdm9p
ZCBoZWFwRGVsZXRlTnVsbE1pbihUaHJlYWRUaW1lckhlYXAmKTsKIAotICAgIFZlY3RvcjxUaW1l
ckJhc2UqPiYgdGltZXJIZWFwKCkgY29uc3QgeyBBU1NFUlQobV9jYWNoZWRUaHJlYWRHbG9iYWxU
aW1lckhlYXApOyByZXR1cm4gKm1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwOyB9CisgICAg
TW9ub3RvbmljVGltZSBuZXh0RmlyZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2hlYXBJdGVtID8g
bV9oZWFwSXRlbS0+dGltZSA6IE1vbm90b25pY1RpbWUgeyB9OyB9CiAKLSAgICBNb25vdG9uaWNU
aW1lIG1fbmV4dEZpcmVUaW1lOyAvLyAwIGlmIGluYWN0aXZlCiAgICAgTW9ub3RvbmljVGltZSBt
X3VuYWxpZ25lZE5leHRGaXJlVGltZTsgLy8gbV9uZXh0RmlyZVRpbWUgbm90IGNvbnNpZGVyaW5n
IGFsaWdubWVudCBpbnRlcnZhbAogICAgIFNlY29uZHMgbV9yZXBlYXRJbnRlcnZhbDsgLy8gMCBp
ZiBub3QgcmVwZWF0aW5nCi0gICAgc2lnbmVkIGludCBtX2hlYXBJbmRleCA6IDMxOyAvLyAtMSBp
ZiBub3QgaW4gaGVhcAotICAgIGJvb2wgbV93YXNEZWxldGVkIDogMTsKLSAgICB1bnNpZ25lZCBt
X2hlYXBJbnNlcnRpb25PcmRlcjsgLy8gVXNlZCB0byBrZWVwIG9yZGVyIGFtb25nIGVxdWFsLWZp
cmUtdGltZSB0aW1lcnMKLSAgICBWZWN0b3I8VGltZXJCYXNlKj4qIG1fY2FjaGVkVGhyZWFkR2xv
YmFsVGltZXJIZWFwIHsgbnVsbHB0ciB9OworICAgIGJvb2wgbV93YXNEZWxldGVkIHsgZmFsc2Ug
fTsKIAorICAgIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPiBtX2hlYXBJdGVtOwogICAgIFJl
ZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKIAogICAgIGZyaWVuZCBj
bGFzcyBUaHJlYWRUaW1lcnM7CkBAIC0xNDIsNyArMTM4LDcgQEAKICNlbHNlCiAgICAgQVNTRVJU
KFdlYlRocmVhZElzQ3VycmVudCgpIHx8IHB0aHJlYWRfbWFpbl9ucCgpIHx8IG1fdGhyZWFkLnB0
cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0RmlyZVRpbWUpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxib29sPihuZXh0RmlyZVRpbWUoKSk7CiB9CiAKIGNsYXNzIERlZmVy
cmFibGVPbmVTaG90VGltZXIgOiBwcm90ZWN0ZWQgVGltZXJCYXNlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358055</attachid>
            <date>2018-12-24 23:17:34 -0800</date>
            <delta_ts>2019-01-09 17:09:14 -0800</delta_ts>
            <desc>Adds the hardening</desc>
            <filename>bug-192975-20181224231733.patch</filename>
            <type>text/plain</type>
            <size>36191</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzOTU0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBAQAorMjAxOC0xMi0yNCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRUaW1lcnMgc2hvdWxk
IG5vdCBzdG9yZSBhIHJhdyBwb2ludGVyIGluIGl0cyBoZWFwCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5NzUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQ2ODkzOTQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJpZ2h0IG5vdywgVGhyZWFkVGltZXJzJ3MgaGVhcCBkYXRhIHN0cnVjdHVyZSBzdG9y
ZXMgYSByYXcgcG9pbnRlciB0byBUaW1lckJhc2UuIEluIG9yZGVyIHRvIGhhcmRlbiB0aGUgdGlt
ZXIgY29kZSwKKyAgICAgICAgdGhpcyBwYXRjaCByZXBsYWNlcyBpdCB3aXRoIFRocmVhZFRpbWVy
SGVhcEl0ZW0sIGEgbmV3bHkgaW50cm9kdWNlZCBzdHJ1Y3QsIHdoaWNoIGVmZmVjdGl2ZWx5IGFj
a3MgbGlrZQorICAgICAgICBXZWFrUmVmZXJlbmNlPFRpbWVyQmFzZSo+IGFzIHRoZSB0aW1lciBo
ZWFwIGFuZCBUaW1lckJhc2UgYm90aCBzdG9yZSBSZWZQdHIgdG8gaXQsIGFuZCBUaW1lckJhc2Un
cyBkZXN0cnVjdG9yIGNsZWFycworICAgICAgICB0aGUgcmF3IHBvaW50ZXIgYmFjayB0byBUaW1l
ckJhc2UqLgorCisgICAgICAgIFRoaXMgYXBwcm9hY2ggd2FzIHRha2VuIGluc3RlYWQgb2YgYW4g
b3V0LXJpZ2h0IGFkb3B0YXRpb24gb2YgV2Vha1B0ciBzaW5jZSB0aGUgaGVhcCBkYXRhIHN0cnVj
dHVyZSByZXF1aXJlcyBlYWNoIG5vZGUKKyAgICAgICAgaW4gdGhlIGhlYXAgdG8gaGF2ZSBhIGZp
eGVkICJwcmlvcml0eSIgeWV0IFdlYWtQdHIgd2l0aCBubyB2YWxpZCBwb2ludGVyIGJhY2sgdG8g
VGltZXJCYXNlIHdvdWxkIGVmZmVjdGl2ZWx5IGxvc2UgaXRzCisgICAgICAgICJwcmlvcml0eSIg
dGhlcmVieSBjb3JydXB0aW5nIHRoZSBoZWFwIGRhdGEgc3RydWN0dXJlLiBUaGF0IGlzLCBlYWNo
IGl0ZW0gaW4gdGhlIGhlYXAgbXVzdCByZW1lbWJlciBpdHMgZmlyZSB0aW1lIGFuZAorICAgICAg
ICBpbnNlcnRpb24gb3JkZXIgZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIFRpbWVyQmFzZSBoYWQg
Z29uZSBhd2F5ICh0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4gYnV0IHRoZSB3aG9sZSBwb2ludCBv
ZiB0aGlzCisgICAgICAgIGhhcmRlbmluZyBpcyB0byBtYWtlIGl0IHdvcmsgZXZlbiBpbiB0aGUg
cHJlY2Vuc2Ugb2Ygc3VjaCBhIGJ1ZykuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG1vdmVz
IHRoZSBoZWFwIGluZGV4IGluIFRpbWVyQmFzZSB0byBUaHJlYWRUaW1lckhlYXBJdGVtLCBhbmQg
cmVwbGFjZXMgdGhlIHBvaW50ZXIgdG8gdGhlIGhlYXAgdmVjdG9yCisgICAgICAgIGluIFRpbWVy
QmFzZSBieSBhIHJlZmVyZW5jZSB0byBUaHJlYWRUaW1lcnMgaW4gVGhyZWFkVGltZXJIZWFwSXRl
bS4gTm90ZSB0aGF0IFRocmVhZFRpbWVycyBpcyBhIHBlci10aHJlYWQgc2luZ2xldG9uLgorCisg
ICAgICAgIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGhhcmRlbmluZyB3YXMgdGVzdGVkIGJ5IGNv
bW1lbnRpbmcgb3V0IHRoZSBjYWxsIHRvIHN0b3AoKSBhbmQgIWlzSW5IZWFwKCkgYXNzZXJ0aW9u
IGluCisgICAgICAgIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpIGFzIHdlbGwgYXMgdGhlICFpc0lu
SGVhcCgpIGFzc2VydGlvbiBpbiBUaHJlYWRUaW1lckhlYXBJdGVtOjpjbGVhclRpbWVyKCkgYW5k
IG9ic2VydmluZyB0aGF0CisgICAgICAgIGxheW91dCB0ZXN0cyBydW4gc3VjY2Vzc2Z1bGx5IHdp
dGhvdXQgaGl0dGluZyBhbnkgZGVidWcgYXNzZXJ0aW9ucy4KKworICAgICAgICBObyBuZXcgdGVz
dHMgc2luY2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9ic2VydmFibGUgYmVoYXZpb3IgZGlmZmVyZW5j
ZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRXhwb3J0
IFRocmVhZFRpbWVycy5oIGFzIGEgcHJpdmF0ZSBoZWFkZXIgc2luY2UgaXQncyBub3cgaW5jbHVk
ZWQgaW4gVGltZXIuaAorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnVwZGF0ZVNoYXJlZFRpbWVyKTogRGVsZXRlIFRo
cmVhZFRpbWVySGVhcEl0ZW0ncyB3aXRoIG51bGxwdHIgVGltZXJCYXNlKiAoVGltZXJCYXNlIGhh
ZAorICAgICAgICBhbHJlYWR5IGJlZW4gZGVsZXRlZCkuIFRoaXMgc2hvdWxkIG9ubHkgaGFwcGVu
IHdoZW4gVGltZXJCYXNlJ3MgZGVzdHJ1Y3RvciBmYWlsZWQgdG8gcmVtb3ZlIGl0c2VsZiBmcm9t
IHRoZSB0aW1lciBoZWFwLAorICAgICAgICB3aGljaCBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzaGFyZWRUaW1lckZpcmVkSW50ZXJuYWwpOiBE
aXR0by4gQWxzbyByZW1vdmVkIHRoZSByZWR1bmRhbnQgY29kZSB3aGljaCBoYWQgcmVtb3ZlZCB0
aGUgdGltZXIKKyAgICAgICAgZnJvbSB0aGUgaGVhcCBzaW5jZSBzZXROZXh0RmlyZVRpbWUgZG9l
cyB0aGUgcmVtb3ZhbCBhbHJlYWR5LgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5o
OiBPdXRkZW50ZWQgdGhlIHdob2xlIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1l
cnM6OnRpbWVySGVhcCk6IFdlIHVzZSBWZWN0b3I8UmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+
PiBpbnN0ZWFkIG9mIFZlY3RvcjxSZWY8fj4+IHNpbmNlIFJlZjx+PgorICAgICAgICBkb2Vzbid0
IGhhdmUgYSBjb3B5IGNvbnN0cnVjdG9yIHdoaWNoIGlzIHVzZWQgYnkgc3RkOjpwdXNoX2hlYXAu
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtOjpoYXNUaW1lciBjb25zdCk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJIZWFwSXRlbTo6c2V0Tm90SW5IZWFwKTogQWRk
ZWQuIFRocmVhZFRpbWVySGVhcEl0ZW0gdXNlcyB1bnNpZ25lZCAtMSBhcyB0aGUgc2luZ2xlIHZh
bHVlIHdoaWNoCisgICAgICAgIHNpZ25pZmllcyB0aGUgaXRlbSBub3QgYmVpbmcgaW4gdGhlIGhl
YXAgaW5zdGVhZCBvZiBhbGwgbmVnYXRpdmUgdmFsdWVzIGFzIGluIHRoZSBvbGQgY29kZSBpbiBU
aW1lckJhc2UuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtOjppc0luSGVh
cCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJIZWFwSXRlbTo6
aXNGaXJzdEluSGVhcCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGlt
ZXJIZWFwSXRlbTo6dGltZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVy
SGVhcEl0ZW06OmNsZWFyVGltZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRp
bWVySGVhcEl0ZW06OmhlYXBJbmRleCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkVGltZXJIZWFwSXRlbTo6c2V0SGVhcEluZGV4KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtOjp0aW1lckhlYXAgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0aHJlYWRHbG9iYWxU
aW1lckhlYXApOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBvbmx5IHVzZWQgaW4gYXNzZXJ0aW9ucy4K
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVySGVhcEl0ZW06OlRocmVhZFRpbWVySGVhcEl0
ZW0pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVySGVhcEl0ZW06OmNyZWF0
ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwUG9pbnRlcjo6VGltZXJIZWFw
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckhlYXBQb2ludGVyOjpvcGVyYXRvci0+
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcFJlZmVyZW5jZTo6VGltZXJIZWFw
UmVmZXJlbmNlKTogQWRkZWQgYSBjb3B5IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6
VGltZXJIZWFwUmVmZXJlbmNlOjpjb3B5UmVmIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUaW1lckhlYXBSZWZlcmVuY2U6Om9wZXJhdG9yIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJ
dGVtPiYgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwUG9pbnRlcjo6b3BlcmF0
b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcFJlZmVyZW5jZTo6b3BlcmF0
b3I9KTogVXNlIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4KKyAgICAgICAgKFdlYkNvcmU6OlRp
bWVySGVhcFJlZmVyZW5jZTo6dXBkYXRlSGVhcEluZGV4KTogRXh0cmFjdGVkIHRvIHNoYXJlIGNv
ZGUgYmV0d2VlbiB0d28gdmVyaW9ucyBvZiBvcGVyYXRvcj0uCisgICAgICAgIChXZWJDb3JlOjpz
d2FwKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcEl0ZXJhdG9yOjpUaW1lckhlYXBJdGVy
YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckhlYXBJdGVyYXRvcjo6b3BlcmF0b3ItPiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uOjpjb21w
YXJlKTogQWRkZWQgdmFyaWFudHMgd2hpY2ggdGFrZSBSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRl
bT4uCisgICAgICAgIChXZWJDb3JlOjpUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uOjpvcGVyYXRv
cigpIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6Q2xlYXIgdGhlIHJhdyBwb2lu
dGVyIGluIFRocmVhZFRpbWVySGVhcEl0ZW0uCisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpuZXh0RmlyZUludGVydmFsIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6Y2hlY2tIZWFwSW5kZXggY29uc3Qp
OiBBZGRlZCB0aGUgY29uc2lzdGVuY3kgY2hlY2sgZm9yIG90aGVyIGl0ZW1zIGluIHRoZSBoZWFw
LgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpjaGVja0NvbnNpc3RlbmN5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6aGVhcERlY3JlYXNlS2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbWVyQmFzZTo6aGVhcERlbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1l
ckJhc2U6OmhlYXBEZWxldGVNaW4pOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoZWFw
SW5jcmVhc2VLZXkpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoZWFwSW5zZXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6aGVhcFBvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpUaW1lckJhc2U6OmhlYXBQb3BNaW4pOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpo
ZWFwRGVsZXRlTnVsbE1pbik6IEFkZGVkLiBVc2VkIHRvIGRlbGV0ZSBUaHJlYWRUaW1lckhlYXBJ
dGVtIHdoaWNoIG5vIGxvbmdlciBoYXMgYSB2YWxpZCBUaW1lckJhc2UuCisgICAgICAgIChXZWJD
b3JlOjpwYXJlbnRIZWFwUHJvcGVydHlIb2xkcyk6CisgICAgICAgIChXZWJDb3JlOjpjaGlsZEhl
YXBQcm9wZXJ0eUhvbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6aGFzVmFsaWRI
ZWFwUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjp1cGRhdGVI
ZWFwSWZOZWVkZWQpOiBUd2Vha2VkIHRoZSBoZWFwIGluZGV4IGFzc2VydGlvbiBhcyBoZWFwSW5k
ZXgoKSBpdHNlbGYgd291bGQgYXNzZXJ0IHdoZW4gY2FsbGVkCisgICAgICAgIG9uIGFuIGl0ZW0g
d2l0aCBhbiBpbnZhbGlkICgtMSkgaGVhcCBpbmRleC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVy
QmFzZTo6c2V0TmV4dEZpcmVUaW1lKTogQ3JlYXRlIFRocmVhZFRpbWVySGVhcEl0ZW0uIE5vdGUg
bV9oZWFwSXRlbSBpcyBuZXZlciBjbGVhcmVkIHVudGlsIHRoaXMgVGltZXJCYXNlCisgICAgICAg
IGlzIGRlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaW1lckhlYXBSZWZlcmVuY2U6Om9wZXJh
dG9yIFRpbWVyQmFzZSogY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2UpOiBSZXBsYWNlZCBtX25leHRGaXJlVGlt
ZSwgbV9oZWFwSW5kZXgsIG1faGVhcEluc2VydGlvbk9yZGVyLCBhbmQgbV9jYWNoZWRUaHJlYWRH
bG9iYWxUaW1lckhlYXAKKyAgICAgICAgYnkgbV9oZWFwSXRlbSwgUmVmUHRyIHRvIGFuIFRocmVh
ZFRpbWVySGVhcEl0ZW0uCisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmF1Z21lbnRGaXJl
SW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjppbkhlYXAgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpuZXh0RmlyZVRpbWUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VGltZXJCYXNlOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpUaW1lckJhc2U6OiBjb25zdCk6IERlbGV0ZWQuCisKIDIwMTgtMTItMjQgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIFNjcm9sbGluZ05v
ZGVUeXBlIHRvIGFuIGVudW0gY2xhc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzOTU0OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDUyLDcgKzQ1Miw3IEBACiAJCTE1OTc0MURCMUI3RDE0MDEwMDIwMUM5MiAvKiBKU01l
ZGlhRGV2aWNlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTU3Q0MyNjIxQjdDMUNBNDAwRDhEMDc1IC8qIEpTTWVkaWFEZXZpY2VJbmZvLmggKi87
IH07CiAJCTE1Qzc3MDhEMTAwRDNDNkIwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNUM3NzA4QTEwMEQzQzZB
MDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTE1Qzc3MDkzMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlk
aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE1Qzc3MDkxMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuaCAqLzsgfTsKLQkJ
MTg1QkNGMjkwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTg1QkNGMjcwRjMyNzlDRTAwMEVBMjYy
IC8qIFRocmVhZFRpbWVycy5oICovOyB9OworCQkxODVCQ0YyOTBGMzI3OUNFMDAwRUEyNjIgLyog
VGhyZWFkVGltZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxODVCQ0YyNzBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTg4NjA0QjQwRjJFNjU0
QTAwMEI2NDQzIC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxODg2MDRCMjBGMkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxOEY4MzFCODBG
RDQ4Qzc4MDBEOEM1NkIgLyogV29ya2VyTG9hZGVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4RjgzMUI3MEZENDhDNzgwMEQ4QzU2QiAvKiBX
b3JrZXJMb2FkZXJQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE5MjEzMjc1MTFDMEU2QkIwMDQ1NjIzOCAvKiBTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTkyMTMyNzIxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LmggKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAJ
KHJldmlzaW9uIDIzOTU0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDEyICs3NSwyOSBAQCB2b2lkIFRocmVhZFRpbWVy
czo6dXBkYXRlU2hhcmVkVGltZXIoKQogewogICAgIGlmICghbV9zaGFyZWRUaW1lcikKICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKLSAgICBpZiAobV9maXJpbmdUaW1lcnMgfHwgbV90aW1lckhl
YXAuaXNFbXB0eSgpKSB7CisgICAgCisgICAgaWYgKG1fZmlyaW5nVGltZXJzKSB7CisgICAgICAg
IG1fcGVuZGluZ1NoYXJlZFRpbWVyRmlyZVRpbWUgPSBNb25vdG9uaWNUaW1lIHsgfTsKKyAgICAg
ICAgbV9zaGFyZWRUaW1lci0+c3RvcCgpOworICAgIH0KKworICAgIFJlZlB0cjxUaHJlYWRUaW1l
ckhlYXBJdGVtPiBmaXJzdEl0ZW1XaXRoVmFsaWRUaW1lcjsKKyAgICB3aGlsZSAoIW1fdGltZXJI
ZWFwLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvJiBpdGVtID0gbV90aW1lckhlYXAuZmlyc3Qo
KTsKKyAgICAgICAgQVNTRVJUKGl0ZW0tPmhhc1RpbWVyKCkpOworICAgICAgICBpZiAoaXRlbS0+
aGFzVGltZXIoKSkgeworICAgICAgICAgICAgZmlyc3RJdGVtV2l0aFZhbGlkVGltZXIgPSBpdGVt
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgVGltZXJCYXNlOjpoZWFw
RGVsZXRlTnVsbE1pbihtX3RpbWVySGVhcCk7CisgICAgfQorICAgIEFTU0VSVChmaXJzdEl0ZW1X
aXRoVmFsaWRUaW1lciB8fCBtX3RpbWVySGVhcC5pc0VtcHR5KCkpOworCisgICAgaWYgKG1fdGlt
ZXJIZWFwLmlzRW1wdHkoKSkgewogICAgICAgICBtX3BlbmRpbmdTaGFyZWRUaW1lckZpcmVUaW1l
ID0gTW9ub3RvbmljVGltZSB7IH07CiAgICAgICAgIG1fc2hhcmVkVGltZXItPnN0b3AoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBNb25vdG9uaWNUaW1lIG5leHRGaXJlVGltZSA9IG1fdGltZXJI
ZWFwLmZpcnN0KCktPm1fbmV4dEZpcmVUaW1lOworICAgICAgICBNb25vdG9uaWNUaW1lIG5leHRG
aXJlVGltZSA9IGZpcnN0SXRlbVdpdGhWYWxpZFRpbWVyLT50aW1lOwogICAgICAgICBNb25vdG9u
aWNUaW1lIGN1cnJlbnRNb25vdG9uaWNUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAg
ICAgIGlmIChtX3BlbmRpbmdTaGFyZWRUaW1lckZpcmVUaW1lKSB7CiAgICAgICAgICAgICAvLyBO
byBuZWVkIHRvIHJlc3RhcnQgdGhlIHRpbWVyIGlmIGJvdGggdGhlIHBlbmRpbmcgZmlyZSB0aW1l
IGFuZCB0aGUgbmV3IGZpcmUgdGltZSBhcmUgaW4gdGhlIHBhc3QuCkBAIC0xMDQsMTcgKzEyMSwy
MyBAQCB2b2lkIFRocmVhZFRpbWVyczo6c2hhcmVkVGltZXJGaXJlZEludGVyCiAgICAgTW9ub3Rv
bmljVGltZSBmaXJlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIE1vbm90b25pY1Rp
bWUgdGltZVRvUXVpdCA9IGZpcmVUaW1lICsgbWF4RHVyYXRpb25PZkZpcmluZ1RpbWVyczsKIAot
ICAgIHdoaWxlICghbV90aW1lckhlYXAuaXNFbXB0eSgpICYmIG1fdGltZXJIZWFwLmZpcnN0KCkt
Pm1fbmV4dEZpcmVUaW1lIDw9IGZpcmVUaW1lKSB7Ci0gICAgICAgIFRpbWVyQmFzZSogdGltZXIg
PSBtX3RpbWVySGVhcC5maXJzdCgpOwotICAgICAgICB0aW1lci0+bV9uZXh0RmlyZVRpbWUgPSBN
b25vdG9uaWNUaW1lIHsgfTsKLSAgICAgICAgdGltZXItPm1fdW5hbGlnbmVkTmV4dEZpcmVUaW1l
ID0gTW9ub3RvbmljVGltZSB7IH07Ci0gICAgICAgIHRpbWVyLT5oZWFwRGVsZXRlTWluKCk7Cisg
ICAgd2hpbGUgKCFtX3RpbWVySGVhcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmPFRocmVhZFRp
bWVySGVhcEl0ZW0+IGl0ZW0gPSAqbV90aW1lckhlYXAuZmlyc3QoKTsKKyAgICAgICAgQVNTRVJU
KGl0ZW0tPmhhc1RpbWVyKCkpOworICAgICAgICBpZiAoIWl0ZW0tPmhhc1RpbWVyKCkpIHsKKyAg
ICAgICAgICAgIFRpbWVyQmFzZTo6aGVhcERlbGV0ZU51bGxNaW4obV90aW1lckhlYXApOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXRlbS0+dGltZSA+
IGZpcmVUaW1lKQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgU2Vjb25kcyBpbnRlcnZh
bCA9IHRpbWVyLT5yZXBlYXRJbnRlcnZhbCgpOwotICAgICAgICB0aW1lci0+c2V0TmV4dEZpcmVU
aW1lKGludGVydmFsID8gZmlyZVRpbWUgKyBpbnRlcnZhbCA6IE1vbm90b25pY1RpbWUgeyB9KTsK
KyAgICAgICAgYXV0byYgdGltZXIgPSBpdGVtLT50aW1lcigpOworICAgICAgICBTZWNvbmRzIGlu
dGVydmFsID0gdGltZXIucmVwZWF0SW50ZXJ2YWwoKTsKKyAgICAgICAgdGltZXIuc2V0TmV4dEZp
cmVUaW1lKGludGVydmFsID8gZmlyZVRpbWUgKyBpbnRlcnZhbCA6IE1vbm90b25pY1RpbWUgeyB9
KTsKIAogICAgICAgICAvLyBPbmNlIHRoZSB0aW1lciBoYXMgYmVlbiBmaXJlZCwgaXQgbWF5IGJl
IGRlbGV0ZWQsIHNvIGRvIG5vdGhpbmcgZWxzZSB3aXRoIGl0IGFmdGVyIHRoaXMgcG9pbnQuCi0g
ICAgICAgIHRpbWVyLT5maXJlZCgpOworICAgICAgICBpdGVtLT50aW1lcigpLmZpcmVkKCk7CiAK
ICAgICAgICAgLy8gQ2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlIHRpbWVyIGFza2VkIHRpbWVycyB0
byBmaXJlIGluIGEgbmVzdGVkIGV2ZW50IGxvb3AsIG9yIHdlIGFyZSBvdmVyIHRpbWUgbGltaXQu
CiAgICAgICAgIGlmICghbV9maXJpbmdUaW1lcnMgfHwgdGltZVRvUXVpdCA8IE1vbm90b25pY1Rp
bWU6Om5vdygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmgJKHJl
dmlzaW9uIDIzOTU0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwzNiArMjksMTAwIEBACiAKICNpbmNsdWRlIDx3dGYvTW9u
b3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFz
cyBTaGFyZWRUaW1lcjsKLSAgICBjbGFzcyBUaW1lckJhc2U7CitjbGFzcyBTaGFyZWRUaW1lcjsK
K2NsYXNzIFRocmVhZFRpbWVyczsKK2NsYXNzIFRpbWVyQmFzZTsKKworc3RydWN0IFRocmVhZFRp
bWVySGVhcEl0ZW07Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4+
IFRocmVhZFRpbWVySGVhcDsKKyAgICAKKy8vIEEgY29sbGVjdGlvbiBvZiB0aW1lcnMgcGVyIHRo
cmVhZC4gS2VwdCBpbiBUaHJlYWRHbG9iYWxEYXRhLgorY2xhc3MgVGhyZWFkVGltZXJzIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRUaW1lcnMpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBUaHJlYWRUaW1lcnMoKTsKKworICAgIC8vIE9uIGEgdGhyZWFk
IGRpZmZlcmVudCB0aGVuIG1haW4sIHdlIHNob3VsZCBzZXQgdGhlIHRocmVhZCdzIGluc3RhbmNl
IG9mIHRoZSBTaGFyZWRUaW1lci4KKyAgICB2b2lkIHNldFNoYXJlZFRpbWVyKFNoYXJlZFRpbWVy
Kik7CisKKyAgICBUaHJlYWRUaW1lckhlYXAmIHRpbWVySGVhcCgpIHsgcmV0dXJuIG1fdGltZXJI
ZWFwOyB9CisKKyAgICB2b2lkIHVwZGF0ZVNoYXJlZFRpbWVyKCk7CisgICAgdm9pZCBmaXJlVGlt
ZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHNoYXJlZFRpbWVy
RmlyZWRJbnRlcm5hbCgpOworICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wSW50
ZXJuYWwoKTsKKworICAgIFRocmVhZFRpbWVySGVhcCBtX3RpbWVySGVhcDsKKyAgICBTaGFyZWRU
aW1lciogbV9zaGFyZWRUaW1lciB7IG51bGxwdHIgfTsgLy8gRXh0ZXJuYWwgb2JqZWN0LCBjYW4g
YmUgYSBydW4gbG9vcCBvbiBhIHdvcmtlciB0aHJlYWQuIE5vcm1hbGx5IHNldC9yZXNldCBieSB3
b3JrZXIgdGhyZWFkLgorICAgIGJvb2wgbV9maXJpbmdUaW1lcnMgeyBmYWxzZSB9OyAvLyBSZWVu
dHJhbmN5IGd1YXJkLgorICAgIE1vbm90b25pY1RpbWUgbV9wZW5kaW5nU2hhcmVkVGltZXJGaXJl
VGltZTsKK307CisKK3N0cnVjdCBUaHJlYWRUaW1lckhlYXBJdGVtIDogVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8VGhyZWFkVGltZXJIZWFwSXRlbT4geworICAgIHN0YXRpYyBSZWZQdHI8VGhyZWFkVGlt
ZXJIZWFwSXRlbT4gY3JlYXRlKFRpbWVyQmFzZSYsIE1vbm90b25pY1RpbWUsIHVuc2lnbmVkKTsK
KworICAgIGJvb2wgaGFzVGltZXIoKSBjb25zdCB7IHJldHVybiBtX3RpbWVyOyB9CisgICAgVGlt
ZXJCYXNlJiB0aW1lcigpOworICAgIHZvaWQgY2xlYXJUaW1lcigpOworCisgICAgVGhyZWFkVGlt
ZXJIZWFwJiB0aW1lckhlYXAoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGhlYXBJbmRleCgpIGNv
bnN0OworICAgIHZvaWQgc2V0SGVhcEluZGV4KHVuc2lnbmVkIG5ld0luZGV4KTsKKyAgICB2b2lk
IHNldE5vdEluSGVhcCgpIHsgbV9oZWFwSW5kZXggPSBpbnZhbGlkSGVhcEluZGV4OyB9CisKKyAg
ICBib29sIGlzSW5IZWFwKCkgY29uc3QgeyByZXR1cm4gbV9oZWFwSW5kZXggIT0gaW52YWxpZEhl
YXBJbmRleDsgfQorICAgIGJvb2wgaXNGaXJzdEluSGVhcCgpIGNvbnN0IHsgcmV0dXJuICFtX2hl
YXBJbmRleDsgfQorCisgICAgTW9ub3RvbmljVGltZSB0aW1lOworICAgIHVuc2lnbmVkIGluc2Vy
dGlvbk9yZGVyIHsgMCB9OworCitwcml2YXRlOgorICAgIFRocmVhZFRpbWVycyYgbV90aHJlYWRU
aW1lcnM7CisgICAgVGltZXJCYXNlKiBtX3RpbWVyIHsgbnVsbHB0ciB9OworICAgIHVuc2lnbmVk
IG1faGVhcEluZGV4IHsgaW52YWxpZEhlYXBJbmRleCB9OworCisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGludmFsaWRIZWFwSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLTEpOworCisg
ICAgVGhyZWFkVGltZXJIZWFwSXRlbShUaW1lckJhc2UmLCBNb25vdG9uaWNUaW1lLCB1bnNpZ25l
ZCk7Cit9OworCitpbmxpbmUgVGltZXJCYXNlJiBUaHJlYWRUaW1lckhlYXBJdGVtOjp0aW1lcigp
Cit7CisgICAgQVNTRVJUKG1fdGltZXIpOworICAgIHJldHVybiAqbV90aW1lcjsKK30KKworaW5s
aW5lIHZvaWQgVGhyZWFkVGltZXJIZWFwSXRlbTo6Y2xlYXJUaW1lcigpCit7CisgICAgQVNTRVJU
KCFpc0luSGVhcCgpKTsKKyAgICBtX3RpbWVyID0gbnVsbHB0cjsKK30KKworaW5saW5lIHVuc2ln
bmVkIFRocmVhZFRpbWVySGVhcEl0ZW06OmhlYXBJbmRleCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1faGVhcEluZGV4ICE9IGludmFsaWRIZWFwSW5kZXgpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9oZWFwSW5kZXgpOworfQorCitpbmxpbmUgdm9pZCBUaHJlYWRUaW1lckhl
YXBJdGVtOjpzZXRIZWFwSW5kZXgodW5zaWduZWQgbmV3SW5kZXgpCit7CisgICAgQVNTRVJUKG5l
d0luZGV4ICE9IGludmFsaWRIZWFwSW5kZXgpOworICAgIG1faGVhcEluZGV4ID0gbmV3SW5kZXg7
Cit9CiAKLSAgICAvLyBBIGNvbGxlY3Rpb24gb2YgdGltZXJzIHBlciB0aHJlYWQuIEtlcHQgaW4g
VGhyZWFkR2xvYmFsRGF0YS4KLSAgICBjbGFzcyBUaHJlYWRUaW1lcnMgewotICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUaHJlYWRUaW1lcnMpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIFRocmVhZFRpbWVycygpOwotCi0gICAgICAgIC8vIE9uIGEg
dGhyZWFkIGRpZmZlcmVudCB0aGVuIG1haW4sIHdlIHNob3VsZCBzZXQgdGhlIHRocmVhZCdzIGlu
c3RhbmNlIG9mIHRoZSBTaGFyZWRUaW1lci4KLSAgICAgICAgdm9pZCBzZXRTaGFyZWRUaW1lcihT
aGFyZWRUaW1lciopOwotCi0gICAgICAgIFZlY3RvcjxUaW1lckJhc2UqPiYgdGltZXJIZWFwKCkg
eyByZXR1cm4gbV90aW1lckhlYXA7IH0KLQotICAgICAgICB2b2lkIHVwZGF0ZVNoYXJlZFRpbWVy
KCk7Ci0gICAgICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICB2b2lkIHNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpOwotICAgICAg
ICB2b2lkIGZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcEludGVybmFsKCk7Ci0KLSAgICAgICAg
VmVjdG9yPFRpbWVyQmFzZSo+IG1fdGltZXJIZWFwOwotICAgICAgICBTaGFyZWRUaW1lciogbV9z
aGFyZWRUaW1lciB7IG51bGxwdHIgfTsgLy8gRXh0ZXJuYWwgb2JqZWN0LCBjYW4gYmUgYSBydW4g
bG9vcCBvbiBhIHdvcmtlciB0aHJlYWQuIE5vcm1hbGx5IHNldC9yZXNldCBieSB3b3JrZXIgdGhy
ZWFkLgotICAgICAgICBib29sIG1fZmlyaW5nVGltZXJzIHsgZmFsc2UgfTsgLy8gUmVlbnRyYW5j
eSBndWFyZC4KLSAgICAgICAgTW9ub3RvbmljVGltZSBtX3BlbmRpbmdTaGFyZWRUaW1lckZpcmVU
aW1lOwotICAgIH07CitpbmxpbmUgVGhyZWFkVGltZXJIZWFwJiBUaHJlYWRUaW1lckhlYXBJdGVt
Ojp0aW1lckhlYXAoKSBjb25zdAoreworICAgIHJldHVybiBtX3RocmVhZFRpbWVycy50aW1lckhl
YXAoKTsKK30KIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCShyZXZpc2lv
biAyMzk1NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDY5ICs1MCwxMDYgQEAgY2xhc3MgVGltZXJIZWFwUmVmZXJlbmNlOwogLy8g
VGhlbiB3ZSBzZXQgYSBzaW5nbGUgc2hhcmVkIHN5c3RlbSB0aW1lciB0byBmaXJlIGF0IHRoYXQg
dGltZS4KIC8vCiAvLyBXaGVuIGEgdGltZXIncyAibmV4dCBmaXJlIHRpbWUiIGNoYW5nZXMsIHdl
IG5lZWQgdG8gbW92ZSBpdCBhcm91bmQgaW4gdGhlIHByaW9yaXR5IHF1ZXVlLgotc3RhdGljIFZl
Y3RvcjxUaW1lckJhc2UqPiYgdGhyZWFkR2xvYmFsVGltZXJIZWFwKCkKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECitzdGF0aWMgVGhyZWFkVGltZXJIZWFwJiB0aHJlYWRHbG9iYWxUaW1lckhlYXAoKQog
ewogICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkudGltZXJIZWFw
KCk7CiB9CisjZW5kaWYKKworaW5saW5lIFRocmVhZFRpbWVySGVhcEl0ZW06OlRocmVhZFRpbWVy
SGVhcEl0ZW0oVGltZXJCYXNlJiB0aW1lciwgTW9ub3RvbmljVGltZSB0aW1lLCB1bnNpZ25lZCBp
bnNlcnRpb25PcmRlcikKKyAgICA6IHRpbWUodGltZSkKKyAgICAsIGluc2VydGlvbk9yZGVyKGlu
c2VydGlvbk9yZGVyKQorICAgICwgbV90aHJlYWRUaW1lcnModGhyZWFkR2xvYmFsRGF0YSgpLnRo
cmVhZFRpbWVycygpKQorICAgICwgbV90aW1lcigmdGltZXIpCit7CisgICAgQVNTRVJUKG1fdGlt
ZXIpOworfQorICAgIAoraW5saW5lIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPiBUaHJlYWRU
aW1lckhlYXBJdGVtOjpjcmVhdGUoVGltZXJCYXNlJiB0aW1lciwgTW9ub3RvbmljVGltZSB0aW1l
LCB1bnNpZ25lZCBpbnNlcnRpb25PcmRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
aHJlYWRUaW1lckhlYXBJdGVtIHsgdGltZXIsIHRpbWUsIGluc2VydGlvbk9yZGVyIH0pOworfQor
CiAvLyAtLS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNzIFRpbWVySGVhcFBvaW50ZXIgewogcHVibGlj
OgotICAgIFRpbWVySGVhcFBvaW50ZXIoVGltZXJCYXNlKiogcG9pbnRlcikgOiBtX3BvaW50ZXIo
cG9pbnRlcikgeyB9CisgICAgVGltZXJIZWFwUG9pbnRlcihSZWZQdHI8VGhyZWFkVGltZXJIZWFw
SXRlbT4qIHBvaW50ZXIpCisgICAgICAgIDogbV9wb2ludGVyKHBvaW50ZXIpCisgICAgeyB9CisK
ICAgICBUaW1lckhlYXBSZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAgVGltZXJCYXNl
KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gKm1fcG9pbnRlcjsgfQorICAgIFJlZlB0cjxU
aHJlYWRUaW1lckhlYXBJdGVtPiYgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICptX3BvaW50
ZXI7IH0KIHByaXZhdGU6Ci0gICAgVGltZXJCYXNlKiogbV9wb2ludGVyOworICAgIFJlZlB0cjxU
aHJlYWRUaW1lckhlYXBJdGVtPiogbV9wb2ludGVyOwogfTsKIAogY2xhc3MgVGltZXJIZWFwUmVm
ZXJlbmNlIHsKIHB1YmxpYzoKLSAgICBUaW1lckhlYXBSZWZlcmVuY2UoVGltZXJCYXNlKiYgcmVm
ZXJlbmNlKSA6IG1fcmVmZXJlbmNlKHJlZmVyZW5jZSkgeyB9Ci0gICAgb3BlcmF0b3IgVGltZXJC
YXNlKigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlOyB9CisgICAgVGltZXJIZWFwUmVmZXJl
bmNlKFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPiYgcmVmZXJlbmNlKQorICAgICAgICA6IG1f
cmVmZXJlbmNlKHJlZmVyZW5jZSkKKyAgICB7IH0KKworICAgIFRpbWVySGVhcFJlZmVyZW5jZShj
b25zdCBUaW1lckhlYXBSZWZlcmVuY2UmIG90aGVyKQorICAgICAgICA6IG1fcmVmZXJlbmNlKG90
aGVyLm1fcmVmZXJlbmNlKQorICAgIHsgfQorCisgICAgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0
ZW0+IGNvcHlSZWYoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZS5jb3B5UmVmKCk7IH0KKyAg
ICBvcGVyYXRvciBSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mKCkgY29uc3QgeyByZXR1cm4g
bV9yZWZlcmVuY2U7IH0KICAgICBUaW1lckhlYXBQb2ludGVyIG9wZXJhdG9yJigpIGNvbnN0IHsg
cmV0dXJuICZtX3JlZmVyZW5jZTsgfQotICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9
KFRpbWVyQmFzZSopOwotICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9KFRpbWVySGVh
cFJlZmVyZW5jZSk7CisgICAgVGltZXJIZWFwUmVmZXJlbmNlJiBvcGVyYXRvcj0oVGltZXJIZWFw
UmVmZXJlbmNlJiYpOworICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9KFJlZlB0cjxU
aHJlYWRUaW1lckhlYXBJdGVtPiYmKTsKKworICAgIHZvaWQgdXBkYXRlSGVhcEluZGV4KCk7CisK
IHByaXZhdGU6Ci0gICAgVGltZXJCYXNlKiYgbV9yZWZlcmVuY2U7CisgICAgUmVmUHRyPFRocmVh
ZFRpbWVySGVhcEl0ZW0+JiBtX3JlZmVyZW5jZTsKIH07CiAKIGlubGluZSBUaW1lckhlYXBSZWZl
cmVuY2UgVGltZXJIZWFwUG9pbnRlcjo6b3BlcmF0b3IqKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
Km1fcG9pbnRlcjsKKyAgICByZXR1cm4gVGltZXJIZWFwUmVmZXJlbmNlIHsgKm1fcG9pbnRlciB9
OwogfQogCi1pbmxpbmUgVGltZXJIZWFwUmVmZXJlbmNlJiBUaW1lckhlYXBSZWZlcmVuY2U6Om9w
ZXJhdG9yPShUaW1lckJhc2UqIHRpbWVyKQoraW5saW5lIFRpbWVySGVhcFJlZmVyZW5jZSYgVGlt
ZXJIZWFwUmVmZXJlbmNlOjpvcGVyYXRvcj0oVGltZXJIZWFwUmVmZXJlbmNlJiYgb3RoZXIpCiB7
Ci0gICAgbV9yZWZlcmVuY2UgPSB0aW1lcjsKLSAgICBWZWN0b3I8VGltZXJCYXNlKj4mIGhlYXAg
PSB0aW1lci0+dGltZXJIZWFwKCk7Ci0gICAgaWYgKCZtX3JlZmVyZW5jZSA+PSBoZWFwLmRhdGEo
KSAmJiAmbV9yZWZlcmVuY2UgPCBoZWFwLmRhdGEoKSArIGhlYXAuc2l6ZSgpKQotICAgICAgICB0
aW1lci0+bV9oZWFwSW5kZXggPSAmbV9yZWZlcmVuY2UgLSBoZWFwLmRhdGEoKTsKKyAgICBtX3Jl
ZmVyZW5jZSA9IFdURk1vdmUob3RoZXIubV9yZWZlcmVuY2UpOworICAgIHVwZGF0ZUhlYXBJbmRl
eCgpOworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIFRpbWVySGVhcFJlZmVyZW5jZSYg
VGltZXJIZWFwUmVmZXJlbmNlOjpvcGVyYXRvcj0oUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+
JiYgaXRlbSkKK3sKKyAgICBtX3JlZmVyZW5jZSA9IFdURk1vdmUoaXRlbSk7CisgICAgdXBkYXRl
SGVhcEluZGV4KCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1pbmxpbmUgVGltZXJIZWFwUmVm
ZXJlbmNlJiBUaW1lckhlYXBSZWZlcmVuY2U6Om9wZXJhdG9yPShUaW1lckhlYXBSZWZlcmVuY2Ug
YikKK2lubGluZSB2b2lkIFRpbWVySGVhcFJlZmVyZW5jZTo6dXBkYXRlSGVhcEluZGV4KCkKIHsK
LSAgICBUaW1lckJhc2UqIHRpbWVyID0gYjsKLSAgICByZXR1cm4gKnRoaXMgPSB0aW1lcjsKKyAg
ICBhdXRvJiBoZWFwID0gbV9yZWZlcmVuY2UtPnRpbWVySGVhcCgpOworICAgIGlmICgmbV9yZWZl
cmVuY2UgPj0gaGVhcC5kYXRhKCkgJiYgJm1fcmVmZXJlbmNlIDwgaGVhcC5kYXRhKCkgKyBoZWFw
LnNpemUoKSkKKyAgICAgICAgbV9yZWZlcmVuY2UtPnNldEhlYXBJbmRleCgmbV9yZWZlcmVuY2Ug
LSBoZWFwLmRhdGEoKSk7CiB9CiAKIGlubGluZSB2b2lkIHN3YXAoVGltZXJIZWFwUmVmZXJlbmNl
IGEsIFRpbWVySGVhcFJlZmVyZW5jZSBiKQogewotICAgIFRpbWVyQmFzZSogdGltZXJBID0gYTsK
LSAgICBUaW1lckJhc2UqIHRpbWVyQiA9IGI7CisgICAgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0
ZW0+IHRpbWVyQSA9IGEuY29weVJlZigpOworICAgIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVt
PiB0aW1lckIgPSBiLmNvcHlSZWYoKTsKIAogICAgIC8vIEludm9rZSB0aGUgYXNzaWdubWVudCBv
cGVyYXRvciwgc2luY2UgdGhhdCB0YWtlcyBjYXJlIG9mIHVwZGF0aW5nIG1faGVhcEluZGV4Lgot
ICAgIGEgPSB0aW1lckI7Ci0gICAgYiA9IHRpbWVyQTsKKyAgICBhID0gV1RGTW92ZSh0aW1lckIp
OworICAgIGIgPSBXVEZNb3ZlKHRpbWVyQSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0KIAog
Ly8gQ2xhc3MgdG8gcmVwcmVzZW50IGl0ZXJhdG9ycyBpbiB0aGUgaGVhcCB3aGVuIGNhbGxpbmcg
dGhlIHN0YW5kYXJkIGxpYnJhcnkgaGVhcCBhbGdvcml0aG1zLgogLy8gVXNlcyBhIGN1c3RvbSBw
b2ludGVyIGFuZCByZWZlcmVuY2UgdHlwZSB0aGF0IHVwZGF0ZSBpbmRpY2VzIGZvciBwb2ludGVy
cyBpbiB0aGUgaGVhcC4KLWNsYXNzIFRpbWVySGVhcEl0ZXJhdG9yIDogcHVibGljIHN0ZDo6aXRl
cmF0b3I8c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywgVGltZXJCYXNlKiwgcHRyZGlm
Zl90LCBUaW1lckhlYXBQb2ludGVyLCBUaW1lckhlYXBSZWZlcmVuY2U+IHsKK2NsYXNzIFRpbWVy
SGVhcEl0ZXJhdG9yIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpyYW5kb21fYWNjZXNzX2l0
ZXJhdG9yX3RhZywgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+LCBwdHJkaWZmX3QsIFRpbWVy
SGVhcFBvaW50ZXIsIFRpbWVySGVhcFJlZmVyZW5jZT4gewogcHVibGljOgotICAgIGV4cGxpY2l0
IFRpbWVySGVhcEl0ZXJhdG9yKFRpbWVyQmFzZSoqIHBvaW50ZXIpIDogbV9wb2ludGVyKHBvaW50
ZXIpIHsgY2hlY2tDb25zaXN0ZW5jeSgpOyB9CisgICAgZXhwbGljaXQgVGltZXJIZWFwSXRlcmF0
b3IoUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+KiBwb2ludGVyKSA6IG1fcG9pbnRlcihwb2lu
dGVyKSB7IGNoZWNrQ29uc2lzdGVuY3koKTsgfQogCiAgICAgVGltZXJIZWFwSXRlcmF0b3ImIG9w
ZXJhdG9yKysoKSB7IGNoZWNrQ29uc2lzdGVuY3koKTsgKyttX3BvaW50ZXI7IGNoZWNrQ29uc2lz
dGVuY3koKTsgcmV0dXJuICp0aGlzOyB9CiAgICAgVGltZXJIZWFwSXRlcmF0b3Igb3BlcmF0b3Ir
KyhpbnQpIHsgY2hlY2tDb25zaXN0ZW5jeSgxKTsgcmV0dXJuIFRpbWVySGVhcEl0ZXJhdG9yKG1f
cG9pbnRlcisrKTsgfQpAQCAtMTI1LDcgKzE2Miw3IEBAIHB1YmxpYzoKIAogICAgIFRpbWVySGVh
cFJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBUaW1lckhlYXBSZWZlcmVuY2Uo
Km1fcG9pbnRlcik7IH0KICAgICBUaW1lckhlYXBSZWZlcmVuY2Ugb3BlcmF0b3JbXShwdHJkaWZm
X3QgaSkgY29uc3QgeyByZXR1cm4gVGltZXJIZWFwUmVmZXJlbmNlKG1fcG9pbnRlcltpXSk7IH0K
LSAgICBUaW1lckJhc2UqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAqbV9wb2ludGVyOyB9
CisgICAgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+JiBvcGVyYXRvci0+KCkgY29uc3QgeyBy
ZXR1cm4gKm1fcG9pbnRlcjsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5j
eShwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkgY29uc3QKQEAgLTE0OSw3ICsxODYsNyBAQCBwcml2YXRl
OgogICAgIGZyaWVuZCBUaW1lckhlYXBJdGVyYXRvciBvcGVyYXRvci0oVGltZXJIZWFwSXRlcmF0
b3IsIHNpemVfdCk7CiAgICAgZnJpZW5kIHB0cmRpZmZfdCBvcGVyYXRvci0oVGltZXJIZWFwSXRl
cmF0b3IsIFRpbWVySGVhcEl0ZXJhdG9yKTsKIAotICAgIFRpbWVyQmFzZSoqIG1fcG9pbnRlcjsK
KyAgICBSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4qIG1fcG9pbnRlcjsKIH07CiAKIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oVGltZXJIZWFwSXRlcmF0b3IgYSwgVGltZXJIZWFwSXRlcmF0b3Ig
YikgeyByZXR1cm4gYS5tX3BvaW50ZXIgPT0gYi5tX3BvaW50ZXI7IH0KQEAgLTE2OSwyMyArMjA2
LDM0IEBAIGlubGluZSBwdHJkaWZmX3Qgb3BlcmF0b3ItKFRpbWVySGVhcEl0ZXIKIAogY2xhc3Mg
VGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgYm9vbCBvcGVyYXRvcigp
KGNvbnN0IFRpbWVyQmFzZSosIGNvbnN0IFRpbWVyQmFzZSopIGNvbnN0OwotfTsKKyAgICBzdGF0
aWMgYm9vbCBjb21wYXJlKGNvbnN0IFRpbWVyQmFzZSYgYSwgY29uc3QgUmVmUHRyPFRocmVhZFRp
bWVySGVhcEl0ZW0+JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmUoYS5tX2hlYXBJ
dGVtLT50aW1lLCBhLm1faGVhcEl0ZW0tPmluc2VydGlvbk9yZGVyLCBiLT50aW1lLCBiLT5pbnNl
cnRpb25PcmRlcik7CisgICAgfQogCi1pbmxpbmUgYm9vbCBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0
aW9uOjpvcGVyYXRvcigpKGNvbnN0IFRpbWVyQmFzZSogYSwgY29uc3QgVGltZXJCYXNlKiBiKSBj
b25zdAotewotICAgIC8vIFRoZSBjb21wYXJpc29ucyBiZWxvdyBhcmUgImJhY2t3YXJkcyIgYmVj
YXVzZSB0aGUgaGVhcCBwdXRzIHRoZSBsYXJnZXN0IAotICAgIC8vIGVsZW1lbnQgZmlyc3QgYW5k
IHdlIHdhbnQgdGhlIGxvd2VzdCB0aW1lIHRvIGJlIHRoZSBmaXJzdCBvbmUgaW4gdGhlIGhlYXAu
Ci0gICAgTW9ub3RvbmljVGltZSBhRmlyZVRpbWUgPSBhLT5tX25leHRGaXJlVGltZTsKLSAgICBN
b25vdG9uaWNUaW1lIGJGaXJlVGltZSA9IGItPm1fbmV4dEZpcmVUaW1lOwotICAgIGlmIChiRmly
ZVRpbWUgIT0gYUZpcmVUaW1lKQotICAgICAgICByZXR1cm4gYkZpcmVUaW1lIDwgYUZpcmVUaW1l
OwotICAgIAotICAgIC8vIFdlIG5lZWQgdG8gbG9vayBhdCB0aGUgZGlmZmVyZW5jZSBvZiB0aGUg
aW5zZXJ0aW9uIG9yZGVycyBpbnN0ZWFkIG9mIGNvbXBhcmluZyB0aGUgdHdvIAotICAgIC8vIG91
dHJpZ2h0IGluIGNhc2Ugb2Ygb3ZlcmZsb3cuIAotICAgIHVuc2lnbmVkIGRpZmZlcmVuY2UgPSBh
LT5tX2hlYXBJbnNlcnRpb25PcmRlciAtIGItPm1faGVhcEluc2VydGlvbk9yZGVyOwotICAgIHJl
dHVybiBkaWZmZXJlbmNlIDwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC8g
MjsKLX0KKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IFJlZlB0cjxUaHJlYWRUaW1lckhl
YXBJdGVtPiYgYSwgY29uc3QgVGltZXJCYXNlJiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNv
bXBhcmUoYS0+dGltZSwgYS0+aW5zZXJ0aW9uT3JkZXIsIGIubV9oZWFwSXRlbS0+dGltZSwgYi5t
X2hlYXBJdGVtLT5pbnNlcnRpb25PcmRlcik7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcigp
KGNvbnN0IFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPiYgYSwgY29uc3QgUmVmUHRyPFRocmVh
ZFRpbWVySGVhcEl0ZW0+JiBiKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmUo
YS0+dGltZSwgYS0+aW5zZXJ0aW9uT3JkZXIsIGItPnRpbWUsIGItPmluc2VydGlvbk9yZGVyKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgY29tcGFyZShNb25vdG9uaWNUaW1l
IGFUaW1lLCB1bnNpZ25lZCBhT3JkZXIsIE1vbm90b25pY1RpbWUgYlRpbWUsIHVuc2lnbmVkIGJP
cmRlcikKKyAgICB7CisgICAgICAgIC8vIFRoZSBjb21wYXJpc29ucyBiZWxvdyBhcmUgImJhY2t3
YXJkcyIgYmVjYXVzZSB0aGUgaGVhcCBwdXRzIHRoZSBsYXJnZXN0CisgICAgICAgIC8vIGVsZW1l
bnQgZmlyc3QgYW5kIHdlIHdhbnQgdGhlIGxvd2VzdCB0aW1lIHRvIGJlIHRoZSBmaXJzdCBvbmUg
aW4gdGhlIGhlYXAuCisgICAgICAgIGlmIChiVGltZSAhPSBhVGltZSkKKyAgICAgICAgICAgIHJl
dHVybiBiVGltZSA8IGFUaW1lOworICAgICAgICAvLyBXZSBuZWVkIHRvIGxvb2sgYXQgdGhlIGRp
ZmZlcmVuY2Ugb2YgdGhlIGluc2VydGlvbiBvcmRlcnMgaW5zdGVhZCBvZiBjb21wYXJpbmcgdGhl
IHR3bworICAgICAgICAvLyBvdXRyaWdodCBpbiBjYXNlIG9mIG92ZXJmbG93LgorICAgICAgICB1
bnNpZ25lZCBkaWZmZXJlbmNlID0gYU9yZGVyIC0gYk9yZGVyOworICAgICAgICByZXR1cm4gZGlm
ZmVyZW5jZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDI7CisgICAg
fQorfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yMDEsOCArMjQ5LDcgQEAgc3RhdGlj
IGJvb2wgc2hvdWxkU3VwcHJlc3NUaHJlYWRTYWZldHlDaAogfQogCiBUaW1lckJhc2U6OlRpbWVy
QmFzZSgpCi0gICAgOiBtX2hlYXBJbmRleCgtMSkKLSAgICAsIG1fd2FzRGVsZXRlZChmYWxzZSkK
KyAgICA6IG1fd2FzRGVsZXRlZChmYWxzZSkKIHsKIH0KIApAQCAtMjEyLDYgKzI1OSwxMCBAQCBU
aW1lckJhc2U6On5UaW1lckJhc2UoKQogICAgIFJFTEVBU0VfQVNTRVJUKGNhbkFjY2Vzc1RocmVh
ZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZC5nZXQoKSkgfHwgc2hvdWxkU3VwcHJlc3NUaHJl
YWRTYWZldHlDaGVjaygpKTsKICAgICBzdG9wKCk7CiAgICAgQVNTRVJUKCFpbkhlYXAoKSk7Cisg
ICAgaWYgKG1faGVhcEl0ZW0pIHsKKyAgICAgICAgbV9oZWFwSXRlbS0+Y2xlYXJUaW1lcigpOwor
ICAgICAgICBtX2hlYXBJdGVtID0gbnVsbHB0cjsKKyAgICB9CiAgICAgbV93YXNEZWxldGVkID0g
dHJ1ZTsKIH0KIApAQCAtMjMwLDcgKzI4MSw3IEBAIHZvaWQgVGltZXJCYXNlOjpzdG9wKCkKICAg
ICBtX3JlcGVhdEludGVydmFsID0gMF9zOwogICAgIHNldE5leHRGaXJlVGltZShNb25vdG9uaWNU
aW1lIHsgfSk7CiAKLSAgICBBU1NFUlQoIXN0YXRpY19jYXN0PGJvb2w+KG1fbmV4dEZpcmVUaW1l
KSk7CisgICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxib29sPihuZXh0RmlyZVRpbWUoKSkpOwogICAg
IEFTU0VSVChtX3JlcGVhdEludGVydmFsID09IDBfcyk7CiAgICAgQVNTRVJUKCFpbkhlYXAoKSk7
CiB9CkBAIC0yMzgsNTcgKzI4OSw2NiBAQCB2b2lkIFRpbWVyQmFzZTo6c3RvcCgpCiBTZWNvbmRz
IFRpbWVyQmFzZTo6bmV4dEZpcmVJbnRlcnZhbCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzQWN0
aXZlKCkpOworICAgIEFTU0VSVChtX2hlYXBJdGVtKTsKICAgICBNb25vdG9uaWNUaW1lIGN1cnJl
bnQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBpZiAobV9uZXh0RmlyZVRpbWUgPCBjdXJy
ZW50KQorICAgIGF1dG8gZmlyZVRpbWUgPSBuZXh0RmlyZVRpbWUoKTsKKyAgICBpZiAoZmlyZVRp
bWUgPCBjdXJyZW50KQogICAgICAgICByZXR1cm4gMF9zOwotICAgIHJldHVybiBtX25leHRGaXJl
VGltZSAtIGN1cnJlbnQ7CisgICAgcmV0dXJuIGZpcmVUaW1lIC0gY3VycmVudDsKIH0KIAogaW5s
aW5lIHZvaWQgVGltZXJCYXNlOjpjaGVja0hlYXBJbmRleCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KHRpbWVySGVhcCgpID09IHRocmVhZEdsb2JhbFRpbWVySGVhcCgpKTsKLSAgICBBU1NFUlQoIXRp
bWVySGVhcCgpLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKG1faGVhcEluZGV4ID49IDApOwotICAg
IEFTU0VSVChtX2hlYXBJbmRleCA8IHN0YXRpY19jYXN0PGludD4odGltZXJIZWFwKCkuc2l6ZSgp
KSk7Ci0gICAgQVNTRVJUKHRpbWVySGVhcCgpW21faGVhcEluZGV4XSA9PSB0aGlzKTsKKyNpZiAh
QVNTRVJUX0RJU0FCTEVECisgICAgQVNTRVJUKG1faGVhcEl0ZW0pOworICAgIGF1dG8mIGhlYXAg
PSBtX2hlYXBJdGVtLT50aW1lckhlYXAoKTsKKyAgICBBU1NFUlQoJmhlYXAgPT0gJnRocmVhZEds
b2JhbFRpbWVySGVhcCgpKTsKKyAgICBBU1NFUlQoIWhlYXAuaXNFbXB0eSgpKTsKKyAgICBBU1NF
UlQobV9oZWFwSXRlbS0+aXNJbkhlYXAoKSk7CisgICAgQVNTRVJUKG1faGVhcEl0ZW0tPmhlYXBJ
bmRleCgpIDwgbV9oZWFwSXRlbS0+dGltZXJIZWFwKCkuc2l6ZSgpKTsKKyAgICBBU1NFUlQoaGVh
cFttX2hlYXBJdGVtLT5oZWFwSW5kZXgoKV0gPT0gbV9oZWFwSXRlbSk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMCwgc2l6ZSA9IGhlYXAuc2l6ZSgpOyBpIDwgc2l6ZTsgaSsrKQorICAgICAgICBB
U1NFUlQoaGVhcFtpXS0+aGVhcEluZGV4KCkgPT0gaSk7CisjZW5kaWYKIH0KIAogaW5saW5lIHZv
aWQgVGltZXJCYXNlOjpjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKIHsKICAgICAvLyBUaW1lcnMg
c2hvdWxkIGJlIGluIHRoZSBoZWFwIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSBhIG5vbi16ZXJv
IG5leHQgZmlyZSB0aW1lLgotICAgIEFTU0VSVChpbkhlYXAoKSA9PSBzdGF0aWNfY2FzdDxib29s
PihtX25leHRGaXJlVGltZSkpOworICAgIEFTU0VSVChpbkhlYXAoKSA9PSBzdGF0aWNfY2FzdDxi
b29sPihuZXh0RmlyZVRpbWUoKSkpOwogICAgIGlmIChpbkhlYXAoKSkKICAgICAgICAgY2hlY2tI
ZWFwSW5kZXgoKTsKIH0KIAogdm9pZCBUaW1lckJhc2U6OmhlYXBEZWNyZWFzZUtleSgpCiB7Ci0g
ICAgQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KG1fbmV4dEZpcmVUaW1lKSk7CisgICAgQVNTRVJU
KHN0YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGltZSgpKSk7CisgICAgQVNTRVJUKG1faGVhcEl0
ZW0pOwogICAgIGNoZWNrSGVhcEluZGV4KCk7Ci0gICAgVGltZXJCYXNlKiogaGVhcERhdGEgPSB0
aW1lckhlYXAoKS5kYXRhKCk7Ci0gICAgcHVzaF9oZWFwKFRpbWVySGVhcEl0ZXJhdG9yKGhlYXBE
YXRhKSwgVGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEgKyBtX2hlYXBJbmRleCArIDEpLCBUaW1l
ckhlYXBMZXNzVGhhbkZ1bmN0aW9uKCkpOworICAgIGF1dG8qIGhlYXBEYXRhID0gbV9oZWFwSXRl
bS0+dGltZXJIZWFwKCkuZGF0YSgpOworICAgIHB1c2hfaGVhcChUaW1lckhlYXBJdGVyYXRvciho
ZWFwRGF0YSksIFRpbWVySGVhcEl0ZXJhdG9yKGhlYXBEYXRhICsgbV9oZWFwSXRlbS0+aGVhcElu
ZGV4KCkgKyAxKSwgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbigpKTsKICAgICBjaGVja0hlYXBJ
bmRleCgpOwogfQogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmhlYXBEZWxldGUoKQogewotICAg
IEFTU0VSVCghc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0RmlyZVRpbWUpKTsKKyAgICBBU1NFUlQo
IXN0YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGltZSgpKSk7CiAgICAgaGVhcFBvcCgpOwotICAg
IHRpbWVySGVhcCgpLnJlbW92ZUxhc3QoKTsKLSAgICBtX2hlYXBJbmRleCA9IC0xOworICAgIG1f
aGVhcEl0ZW0tPnRpbWVySGVhcCgpLnJlbW92ZUxhc3QoKTsKKyAgICBtX2hlYXBJdGVtLT5zZXRO
b3RJbkhlYXAoKTsKIH0KIAogdm9pZCBUaW1lckJhc2U6OmhlYXBEZWxldGVNaW4oKQogewotICAg
IEFTU0VSVCghc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0RmlyZVRpbWUpKTsKKyAgICBBU1NFUlQo
IXN0YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGltZSgpKSk7CiAgICAgaGVhcFBvcE1pbigpOwot
ICAgIHRpbWVySGVhcCgpLnJlbW92ZUxhc3QoKTsKLSAgICBtX2hlYXBJbmRleCA9IC0xOworICAg
IG1faGVhcEl0ZW0tPnRpbWVySGVhcCgpLnJlbW92ZUxhc3QoKTsKKyAgICBtX2hlYXBJdGVtLT5z
ZXROb3RJbkhlYXAoKTsKIH0KIAogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwSW5jcmVhc2VL
ZXkoKQogewotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxib29sPihtX25leHRGaXJlVGltZSkpOwor
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxib29sPihuZXh0RmlyZVRpbWUoKSkpOwogICAgIGhlYXBQ
b3AoKTsKICAgICBoZWFwRGVjcmVhc2VLZXkoKTsKIH0KQEAgLTI5Niw4MSArMzU2LDEwNSBAQCBp
bmxpbmUgdm9pZCBUaW1lckJhc2U6OmhlYXBJbmNyZWFzZUtleSgpCiBpbmxpbmUgdm9pZCBUaW1l
ckJhc2U6OmhlYXBJbnNlcnQoKQogewogICAgIEFTU0VSVCghaW5IZWFwKCkpOwotICAgIHRpbWVy
SGVhcCgpLmFwcGVuZCh0aGlzKTsKLSAgICBtX2hlYXBJbmRleCA9IHRpbWVySGVhcCgpLnNpemUo
KSAtIDE7CisgICAgQVNTRVJUKG1faGVhcEl0ZW0pOworICAgIGF1dG8mIGhlYXAgPSBtX2hlYXBJ
dGVtLT50aW1lckhlYXAoKTsKKyAgICBoZWFwLmFwcGVuZChtX2hlYXBJdGVtLmNvcHlSZWYoKSk7
CisgICAgbV9oZWFwSXRlbS0+c2V0SGVhcEluZGV4KGhlYXAuc2l6ZSgpIC0gMSk7CiAgICAgaGVh
cERlY3JlYXNlS2V5KCk7CiB9CiAKIGlubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcFBvcCgpCiB7
CisgICAgQVNTRVJUKG1faGVhcEl0ZW0pOwogICAgIC8vIFRlbXBvcmFyaWx5IGZvcmNlIHRoaXMg
dGltZXIgdG8gaGF2ZSB0aGUgbWluaW11bSBrZXkgc28gd2UgY2FuIHBvcCBpdC4KLSAgICBNb25v
dG9uaWNUaW1lIGZpcmVUaW1lID0gbV9uZXh0RmlyZVRpbWU7Ci0gICAgbV9uZXh0RmlyZVRpbWUg
PSAtTW9ub3RvbmljVGltZTo6aW5maW5pdHkoKTsKKyAgICBNb25vdG9uaWNUaW1lIGZpcmVUaW1l
ID0gbV9oZWFwSXRlbS0+dGltZTsKKyAgICBtX2hlYXBJdGVtLT50aW1lID0gLU1vbm90b25pY1Rp
bWU6OmluZmluaXR5KCk7CiAgICAgaGVhcERlY3JlYXNlS2V5KCk7CiAgICAgaGVhcFBvcE1pbigp
OwotICAgIG1fbmV4dEZpcmVUaW1lID0gZmlyZVRpbWU7CisgICAgbV9oZWFwSXRlbS0+dGltZSA9
IGZpcmVUaW1lOwogfQogCiB2b2lkIFRpbWVyQmFzZTo6aGVhcFBvcE1pbigpCiB7Ci0gICAgQVNT
RVJUKHRoaXMgPT0gdGltZXJIZWFwKCkuZmlyc3QoKSk7CisgICAgQVNTRVJUKG1faGVhcEl0ZW0g
PT0gbV9oZWFwSXRlbS0+dGltZXJIZWFwKCkuZmlyc3QoKSk7CiAgICAgY2hlY2tIZWFwSW5kZXgo
KTsKLSAgICBWZWN0b3I8VGltZXJCYXNlKj4mIGhlYXAgPSB0aW1lckhlYXAoKTsKLSAgICBUaW1l
ckJhc2UqKiBoZWFwRGF0YSA9IGhlYXAuZGF0YSgpOworICAgIGF1dG8mIGhlYXAgPSBtX2hlYXBJ
dGVtLT50aW1lckhlYXAoKTsKKyAgICBhdXRvKiBoZWFwRGF0YSA9IGhlYXAuZGF0YSgpOwogICAg
IHBvcF9oZWFwKFRpbWVySGVhcEl0ZXJhdG9yKGhlYXBEYXRhKSwgVGltZXJIZWFwSXRlcmF0b3Io
aGVhcERhdGEgKyBoZWFwLnNpemUoKSksIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb24oKSk7CiAg
ICAgY2hlY2tIZWFwSW5kZXgoKTsKLSAgICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAoKS5sYXN0
KCkpOworICAgIEFTU0VSVChtX2hlYXBJdGVtID09IG1faGVhcEl0ZW0tPnRpbWVySGVhcCgpLmxh
c3QoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBwYXJlbnRIZWFwUHJvcGVydHlIb2xkcyhj
b25zdCBUaW1lckJhc2UqIGN1cnJlbnQsIGNvbnN0IFZlY3RvcjxUaW1lckJhc2UqPiYgaGVhcCwg
dW5zaWduZWQgY3VycmVudEluZGV4KQordm9pZCBUaW1lckJhc2U6OmhlYXBEZWxldGVOdWxsTWlu
KFRocmVhZFRpbWVySGVhcCYgaGVhcCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghaGVhcC5maXJz
dCgpLT5oYXNUaW1lcigpKTsKKyAgICBoZWFwLmZpcnN0KCktPnRpbWUgPSAtTW9ub3RvbmljVGlt
ZTo6aW5maW5pdHkoKTsKKyAgICBhdXRvKiBoZWFwRGF0YSA9IGhlYXAuZGF0YSgpOworICAgIHBv
cF9oZWFwKFRpbWVySGVhcEl0ZXJhdG9yKGhlYXBEYXRhKSwgVGltZXJIZWFwSXRlcmF0b3IoaGVh
cERhdGEgKyBoZWFwLnNpemUoKSksIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb24oKSk7CisgICAg
aGVhcC5yZW1vdmVMYXN0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXJlbnRIZWFwUHJv
cGVydHlIb2xkcyhjb25zdCBUaW1lckJhc2UqIGN1cnJlbnQsIGNvbnN0IFRocmVhZFRpbWVySGVh
cCYgaGVhcCwgdW5zaWduZWQgY3VycmVudEluZGV4KQogewogICAgIGlmICghY3VycmVudEluZGV4
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB1bnNpZ25lZCBwYXJlbnRJbmRleCA9IChjdXJy
ZW50SW5kZXggLSAxKSAvIDI7Ci0gICAgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbiBjb21wYXJl
SGVhcFBvc2l0aW9uOwotICAgIHJldHVybiBjb21wYXJlSGVhcFBvc2l0aW9uKGN1cnJlbnQsIGhl
YXBbcGFyZW50SW5kZXhdKTsKKyAgICByZXR1cm4gVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbjo6
Y29tcGFyZSgqY3VycmVudCwgaGVhcFtwYXJlbnRJbmRleF0pOwogfQogCi1zdGF0aWMgaW5saW5l
IGJvb2wgY2hpbGRIZWFwUHJvcGVydHlIb2xkcyhjb25zdCBUaW1lckJhc2UqIGN1cnJlbnQsIGNv
bnN0IFZlY3RvcjxUaW1lckJhc2UqPiYgaGVhcCwgdW5zaWduZWQgY2hpbGRJbmRleCkKK3N0YXRp
YyBpbmxpbmUgYm9vbCBjaGlsZEhlYXBQcm9wZXJ0eUhvbGRzKGNvbnN0IFRpbWVyQmFzZSogY3Vy
cmVudCwgY29uc3QgVGhyZWFkVGltZXJIZWFwJiBoZWFwLCB1bnNpZ25lZCBjaGlsZEluZGV4KQog
ewogICAgIGlmIChjaGlsZEluZGV4ID49IGhlYXAuc2l6ZSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uIGNvbXBhcmVIZWFwUG9zaXRpb247Ci0g
ICAgcmV0dXJuIGNvbXBhcmVIZWFwUG9zaXRpb24oaGVhcFtjaGlsZEluZGV4XSwgY3VycmVudCk7
CisgICAgcmV0dXJuIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb246OmNvbXBhcmUoaGVhcFtjaGls
ZEluZGV4XSwgKmN1cnJlbnQpOwogfQogCiBib29sIFRpbWVyQmFzZTo6aGFzVmFsaWRIZWFwUG9z
aXRpb24oKSBjb25zdAogewotICAgIEFTU0VSVChtX25leHRGaXJlVGltZSk7CisgICAgQVNTRVJU
KG5leHRGaXJlVGltZSgpKTsKKyAgICBBU1NFUlQobV9oZWFwSXRlbSk7CiAgICAgaWYgKCFpbkhl
YXAoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIENoZWNrIGlmIHRoZSBoZWFwIHBy
b3BlcnR5IHN0aWxsIGhvbGRzIHdpdGggdGhlIG5ldyBmaXJlIHRpbWUuIElmIGl0IGRvZXMgd2Ug
ZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZy4KICAgICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUg
U1RMIGhlYXAgaXMgYSBzdGFuZGFyZCBiaW5hcnkgaGVhcC4gSW4gYW4gdW5saWtlbHkgZXZlbnQg
aXQgaXMgbm90LCB0aGUgYXNzZXJ0aW9ucwogICAgIC8vIGluIHVwZGF0ZUhlYXBJZk5lZWRlZCgp
IHdpbGwgZ2V0IGhpdC4KLSAgICBjb25zdCBWZWN0b3I8VGltZXJCYXNlKj4mIGhlYXAgPSB0aW1l
ckhlYXAoKTsKLSAgICBpZiAoIXBhcmVudEhlYXBQcm9wZXJ0eUhvbGRzKHRoaXMsIGhlYXAsIG1f
aGVhcEluZGV4KSkKKyAgICBjb25zdCBhdXRvJiBoZWFwID0gbV9oZWFwSXRlbS0+dGltZXJIZWFw
KCk7CisgICAgdW5zaWduZWQgaGVhcEluZGV4ID0gbV9oZWFwSXRlbS0+aGVhcEluZGV4KCk7Cisg
ICAgaWYgKCFwYXJlbnRIZWFwUHJvcGVydHlIb2xkcyh0aGlzLCBoZWFwLCBoZWFwSW5kZXgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgY2hpbGRJbmRleDEgPSAyICogbV9o
ZWFwSW5kZXggKyAxOworICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgxID0gMiAqIGhlYXBJbmRleCAr
IDE7CiAgICAgdW5zaWduZWQgY2hpbGRJbmRleDIgPSBjaGlsZEluZGV4MSArIDE7CiAgICAgcmV0
dXJuIGNoaWxkSGVhcFByb3BlcnR5SG9sZHModGhpcywgaGVhcCwgY2hpbGRJbmRleDEpICYmIGNo
aWxkSGVhcFByb3BlcnR5SG9sZHModGhpcywgaGVhcCwgY2hpbGRJbmRleDIpOwogfQogCiB2b2lk
IFRpbWVyQmFzZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUgb2xkVGltZSkKIHsK
LSAgICBpZiAobV9uZXh0RmlyZVRpbWUgJiYgaGFzVmFsaWRIZWFwUG9zaXRpb24oKSkKKyAgICBh
dXRvIGZpcmVUaW1lID0gbmV4dEZpcmVUaW1lKCk7CisgICAgaWYgKGZpcmVUaW1lICYmIGhhc1Zh
bGlkSGVhcFBvc2l0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSNpZm5kZWYgTkRFQlVHCi0gICAg
aW50IG9sZEhlYXBJbmRleCA9IG1faGVhcEluZGV4OworCisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
ICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBvbGRIZWFwSW5kZXg7CisgICAgaWYgKG1faGVhcEl0ZW0t
PmlzSW5IZWFwKCkpCisgICAgICAgIG9sZEhlYXBJbmRleCA9IG1faGVhcEl0ZW0tPmhlYXBJbmRl
eCgpOwogI2VuZGlmCisKICAgICBpZiAoIW9sZFRpbWUpCiAgICAgICAgIGhlYXBJbnNlcnQoKTsK
LSAgICBlbHNlIGlmICghbV9uZXh0RmlyZVRpbWUpCisgICAgZWxzZSBpZiAoIWZpcmVUaW1lKQog
ICAgICAgICBoZWFwRGVsZXRlKCk7Ci0gICAgZWxzZSBpZiAobV9uZXh0RmlyZVRpbWUgPCBvbGRU
aW1lKQorICAgIGVsc2UgaWYgKGZpcmVUaW1lIDwgb2xkVGltZSkKICAgICAgICAgaGVhcERlY3Jl
YXNlS2V5KCk7CiAgICAgZWxzZQogICAgICAgICBoZWFwSW5jcmVhc2VLZXkoKTsKLSAgICBBU1NF
UlQobV9oZWFwSW5kZXggIT0gb2xkSGVhcEluZGV4KTsKKworI2lmICFBU1NFUlRfRElTQUJMRUQK
KyAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV3SGVhcEluZGV4OworICAgIGlmIChtX2hlYXBJdGVt
LT5pc0luSGVhcCgpKQorICAgICAgICBuZXdIZWFwSW5kZXggPSBtX2hlYXBJdGVtLT5oZWFwSW5k
ZXgoKTsKKyAgICBBU1NFUlQobmV3SGVhcEluZGV4ICE9IG9sZEhlYXBJbmRleCk7CisjZW5kaWYK
KwogICAgIEFTU0VSVCghaW5IZWFwKCkgfHwgaGFzVmFsaWRIZWFwUG9zaXRpb24oKSk7CiB9CiAK
QEAgLTM4MywxMiArNDY3LDggQEAgdm9pZCBUaW1lckJhc2U6OnNldE5leHRGaXJlVGltZShNb25v
dG9uaQogICAgIGlmIChtX3VuYWxpZ25lZE5leHRGaXJlVGltZSAhPSBuZXdUaW1lKQogICAgICAg
ICBtX3VuYWxpZ25lZE5leHRGaXJlVGltZSA9IG5ld1RpbWU7CiAKLSAgICAvLyBBY2Nlc3Npbmcg
dGhyZWFkIGdsb2JhbCBkYXRhIGlzIHNsb3cuIENhY2hlIHRoZSBoZWFwIHBvaW50ZXIuCi0gICAg
aWYgKCFtX2NhY2hlZFRocmVhZEdsb2JhbFRpbWVySGVhcCkKLSAgICAgICAgbV9jYWNoZWRUaHJl
YWRHbG9iYWxUaW1lckhlYXAgPSAmdGhyZWFkR2xvYmFsVGltZXJIZWFwKCk7Ci0KICAgICAvLyBL
ZWVwIGhlYXAgdmFsaWQgd2hpbGUgY2hhbmdpbmcgdGhlIG5leHQtZmlyZSB0aW1lLgotICAgIE1v
bm90b25pY1RpbWUgb2xkVGltZSA9IG1fbmV4dEZpcmVUaW1lOworICAgIE1vbm90b25pY1RpbWUg
b2xkVGltZSA9IG5leHRGaXJlVGltZSgpOwogICAgIC8vIERvbid0IHJlYWxpZ24gemVyby1kZWxh
eSB0aW1lcnMuCiAgICAgaWYgKG5ld1RpbWUpIHsKICAgICAgICAgaWYgKGF1dG8gbmV3QWxpZ25l
ZFRpbWUgPSBhbGlnbmVkRmlyZVRpbWUobmV3VGltZSkpCkBAIC0zOTYsMTYgKzQ3NiwyMCBAQCB2
b2lkIFRpbWVyQmFzZTo6c2V0TmV4dEZpcmVUaW1lKE1vbm90b25pCiAgICAgfQogCiAgICAgaWYg
KG9sZFRpbWUgIT0gbmV3VGltZSkgewotICAgICAgICBtX25leHRGaXJlVGltZSA9IG5ld1RpbWU7
CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXJ0IG9mIFRocmVhZFRpbWVycywg
b3IgYW5vdGhlciBwZXItdGhyZWFkIHN0cnVjdHVyZS4KICAgICAgICAgc3RhdGljIHN0ZDo6YXRv
bWljPHVuc2lnbmVkPiBjdXJyZW50SGVhcEluc2VydGlvbk9yZGVyOwotICAgICAgICBtX2hlYXBJ
bnNlcnRpb25PcmRlciA9IGN1cnJlbnRIZWFwSW5zZXJ0aW9uT3JkZXIrKzsKKyAgICAgICAgYXV0
byBuZXdPcmRlciA9IGN1cnJlbnRIZWFwSW5zZXJ0aW9uT3JkZXIrKzsKKworICAgICAgICBpZiAo
IW1faGVhcEl0ZW0pCisgICAgICAgICAgICBtX2hlYXBJdGVtID0gVGhyZWFkVGltZXJIZWFwSXRl
bTo6Y3JlYXRlKCp0aGlzLCBuZXdUaW1lLCAwKTsKKyAgICAgICAgbV9oZWFwSXRlbS0+dGltZSA9
IG5ld1RpbWU7CisgICAgICAgIG1faGVhcEl0ZW0tPmluc2VydGlvbk9yZGVyID0gbmV3T3JkZXI7
CiAKLSAgICAgICAgYm9vbCB3YXNGaXJzdFRpbWVySW5IZWFwID0gbV9oZWFwSW5kZXggPT0gMDsK
KyAgICAgICAgYm9vbCB3YXNGaXJzdFRpbWVySW5IZWFwID0gbV9oZWFwSXRlbS0+aXNGaXJzdElu
SGVhcCgpOwogCiAgICAgICAgIHVwZGF0ZUhlYXBJZk5lZWRlZChvbGRUaW1lKTsKIAotICAgICAg
ICBib29sIGlzRmlyc3RUaW1lckluSGVhcCA9IG1faGVhcEluZGV4ID09IDA7CisgICAgICAgIGJv
b2wgaXNGaXJzdFRpbWVySW5IZWFwID0gbV9oZWFwSXRlbS0+aXNGaXJzdEluSGVhcCgpOwogCiAg
ICAgICAgIGlmICh3YXNGaXJzdFRpbWVySW5IZWFwIHx8IGlzRmlyc3RUaW1lckluSGVhcCkKICAg
ICAgICAgICAgIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS51cGRhdGVTaGFyZWRU
aW1lcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCShyZXZpc2lvbiAyMzk1NDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVGhyZWFkVGltZXJzLmgiCiAj
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDx3dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9T
ZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCkBAIC00MCwxMCArNDIsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRpbWUgaW50ZXJ2YWxzIGFyZSBhbGwgaW4gc2Vjb25kcy4K
LQotY2xhc3MgVGltZXJIZWFwRWxlbWVudDsKLQogY2xhc3MgVGltZXJCYXNlIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUaW1lckJhc2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNjMsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgU2Vjb25kcyBuZXh0VW5hbGlnbmVkRmly
ZUludGVydmFsKCkgY29uc3Q7CiAgICAgU2Vjb25kcyByZXBlYXRJbnRlcnZhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVwZWF0SW50ZXJ2YWw7IH0KIAotICAgIHZvaWQgYXVnbWVudEZpcmVJbnRlcnZh
bChTZWNvbmRzIGRlbHRhKSB7IHNldE5leHRGaXJlVGltZShtX25leHRGaXJlVGltZSArIGRlbHRh
KTsgfQorICAgIHZvaWQgYXVnbWVudEZpcmVJbnRlcnZhbChTZWNvbmRzIGRlbHRhKSB7IHNldE5l
eHRGaXJlVGltZShtX2hlYXBJdGVtLT50aW1lICsgZGVsdGEpOyB9CiAgICAgdm9pZCBhdWdtZW50
UmVwZWF0SW50ZXJ2YWwoU2Vjb25kcyBkZWx0YSkgeyBhdWdtZW50RmlyZUludGVydmFsKGRlbHRh
KTsgbV9yZXBlYXRJbnRlcnZhbCArPSBkZWx0YTsgfQogCiAgICAgdm9pZCBkaWRDaGFuZ2VBbGln
bm1lbnRJbnRlcnZhbCgpOwpAQCAtODAsNyArNzgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
ZXROZXh0RmlyZVRpbWUoTW9ub3RvbmljVGltZSk7CiAKLSAgICBib29sIGluSGVhcCgpIGNvbnN0
IHsgcmV0dXJuIG1faGVhcEluZGV4ICE9IC0xOyB9CisgICAgYm9vbCBpbkhlYXAoKSBjb25zdCB7
IHJldHVybiBtX2hlYXBJdGVtICYmIG1faGVhcEl0ZW0tPmlzSW5IZWFwKCk7IH0KIAogICAgIGJv
b2wgaGFzVmFsaWRIZWFwUG9zaXRpb24oKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUhlYXBJZk5l
ZWRlZChNb25vdG9uaWNUaW1lIG9sZFRpbWUpOwpAQCAtOTIsMTcgKzkwLDE1IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBoZWFwSW5zZXJ0KCk7CiAgICAgdm9pZCBoZWFwUG9wKCk7CiAgICAgdm9pZCBo
ZWFwUG9wTWluKCk7CisgICAgc3RhdGljIHZvaWQgaGVhcERlbGV0ZU51bGxNaW4oVGhyZWFkVGlt
ZXJIZWFwJik7CiAKLSAgICBWZWN0b3I8VGltZXJCYXNlKj4mIHRpbWVySGVhcCgpIGNvbnN0IHsg
QVNTRVJUKG1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwKTsgcmV0dXJuICptX2NhY2hlZFRo
cmVhZEdsb2JhbFRpbWVySGVhcDsgfQorICAgIE1vbm90b25pY1RpbWUgbmV4dEZpcmVUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9oZWFwSXRlbSA/IG1faGVhcEl0ZW0tPnRpbWUgOiBNb25vdG9uaWNU
aW1lIHsgfTsgfQogCi0gICAgTW9ub3RvbmljVGltZSBtX25leHRGaXJlVGltZTsgLy8gMCBpZiBp
bmFjdGl2ZQogICAgIE1vbm90b25pY1RpbWUgbV91bmFsaWduZWROZXh0RmlyZVRpbWU7IC8vIG1f
bmV4dEZpcmVUaW1lIG5vdCBjb25zaWRlcmluZyBhbGlnbm1lbnQgaW50ZXJ2YWwKICAgICBTZWNv
bmRzIG1fcmVwZWF0SW50ZXJ2YWw7IC8vIDAgaWYgbm90IHJlcGVhdGluZwotICAgIHNpZ25lZCBp
bnQgbV9oZWFwSW5kZXggOiAzMTsgLy8gLTEgaWYgbm90IGluIGhlYXAKLSAgICBib29sIG1fd2Fz
RGVsZXRlZCA6IDE7Ci0gICAgdW5zaWduZWQgbV9oZWFwSW5zZXJ0aW9uT3JkZXI7IC8vIFVzZWQg
dG8ga2VlcCBvcmRlciBhbW9uZyBlcXVhbC1maXJlLXRpbWUgdGltZXJzCi0gICAgVmVjdG9yPFRp
bWVyQmFzZSo+KiBtX2NhY2hlZFRocmVhZEdsb2JhbFRpbWVySGVhcCB7IG51bGxwdHIgfTsKKyAg
ICBib29sIG1fd2FzRGVsZXRlZCB7IGZhbHNlIH07CiAKKyAgICBSZWZQdHI8VGhyZWFkVGltZXJI
ZWFwSXRlbT4gbV9oZWFwSXRlbTsKICAgICBSZWY8VGhyZWFkPiBtX3RocmVhZCB7IFRocmVhZDo6
Y3VycmVudCgpIH07CiAKICAgICBmcmllbmQgY2xhc3MgVGhyZWFkVGltZXJzOwpAQCAtMTQyLDcg
KzEzOCw3IEBAIGlubGluZSBib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAogI2Vsc2UK
ICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgcHRocmVhZF9tYWluX25wKCkgfHwg
bV90aHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX25leHRGaXJlVGlt
ZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGltZSgpKTsKIH0KIAog
Y2xhc3MgRGVmZXJyYWJsZU9uZVNob3RUaW1lciA6IHByb3RlY3RlZCBUaW1lckJhc2Ugewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358766</attachid>
            <date>2019-01-09 17:09:16 -0800</date>
            <delta_ts>2019-01-09 17:28:26 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192975-20190109170915.patch</filename>
            <type>text/plain</type>
            <size>38271</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzOTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxOS0wMS0wOSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRUaW1lcnMgc2hvdWxk
IG5vdCBzdG9yZSBhIHJhdyBwb2ludGVyIGluIGl0cyBoZWFwCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5NzUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQ2ODkzOTQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisg
ICAgICAgIFJpZ2h0IG5vdywgVGhyZWFkVGltZXJzJ3MgaGVhcCBkYXRhIHN0cnVjdHVyZSBzdG9y
ZXMgYSByYXcgcG9pbnRlciB0byBUaW1lckJhc2UuIEluIG9yZGVyIHRvIGhhcmRlbiB0aGUgdGlt
ZXIgY29kZSwKKyAgICAgICAgdGhpcyBwYXRjaCByZXBsYWNlcyBpdCB3aXRoIFRocmVhZFRpbWVy
SGVhcEl0ZW0sIGEgbmV3bHkgaW50cm9kdWNlZCBzdHJ1Y3QsIHdoaWNoIGVmZmVjdGl2ZWx5IGFj
a3MgbGlrZQorICAgICAgICBXZWFrUmVmZXJlbmNlPFRpbWVyQmFzZSo+IGFzIHRoZSB0aW1lciBo
ZWFwIGFuZCBUaW1lckJhc2UgYm90aCBzdG9yZSBSZWZQdHIgdG8gaXQsIGFuZCBUaW1lckJhc2Un
cyBkZXN0cnVjdG9yIGNsZWFycworICAgICAgICB0aGUgcmF3IHBvaW50ZXIgYmFjayB0byBUaW1l
ckJhc2UqLgorCisgICAgICAgIFRoaXMgYXBwcm9hY2ggd2FzIHRha2VuIGluc3RlYWQgb2YgYW4g
b3V0LXJpZ2h0IGFkb3B0YXRpb24gb2YgV2Vha1B0ciBzaW5jZSB0aGUgaGVhcCBkYXRhIHN0cnVj
dHVyZSByZXF1aXJlcyBlYWNoIG5vZGUKKyAgICAgICAgaW4gdGhlIGhlYXAgdG8gaGF2ZSBhIGZp
eGVkICJwcmlvcml0eSIgeWV0IFdlYWtQdHIgd2l0aCBubyB2YWxpZCBwb2ludGVyIGJhY2sgdG8g
VGltZXJCYXNlIHdvdWxkIGVmZmVjdGl2ZWx5IGxvc2UgaXRzCisgICAgICAgICJwcmlvcml0eSIg
dGhlcmVieSBjb3JydXB0aW5nIHRoZSBoZWFwIGRhdGEgc3RydWN0dXJlLiBUaGF0IGlzLCBlYWNo
IGl0ZW0gaW4gdGhlIGhlYXAgbXVzdCByZW1lbWJlciBpdHMgZmlyZSB0aW1lIGFuZAorICAgICAg
ICBpbnNlcnRpb24gb3JkZXIgZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIFRpbWVyQmFzZSBoYWQg
Z29uZSBhd2F5ICh0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4gYnV0IHRoZSB3aG9sZSBwb2ludCBv
ZiB0aGlzCisgICAgICAgIGhhcmRlbmluZyBpcyB0byBtYWtlIGl0IHdvcmsgZXZlbiBpbiB0aGUg
cHJlY2Vuc2Ugb2Ygc3VjaCBhIGJ1ZykuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG1vdmVz
IHRoZSBoZWFwIGluZGV4IGluIFRpbWVyQmFzZSB0byBUaHJlYWRUaW1lckhlYXBJdGVtLCBhbmQg
cmVwbGFjZXMgdGhlIHBvaW50ZXIgdG8gdGhlIGhlYXAgdmVjdG9yCisgICAgICAgIGluIFRpbWVy
QmFzZSBieSBhIHJlZmVyZW5jZSB0byBUaHJlYWRUaW1lcnMgaW4gVGhyZWFkVGltZXJIZWFwSXRl
bS4gTm90ZSB0aGF0IFRocmVhZFRpbWVycyBpcyBhIHBlci10aHJlYWQgc2luZ2xldG9uLgorCisg
ICAgICAgIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGhhcmRlbmluZyB3YXMgdGVzdGVkIGJ5IGNv
bW1lbnRpbmcgb3V0IHRoZSBjYWxsIHRvIHN0b3AoKSBhbmQgIWlzSW5IZWFwKCkgYXNzZXJ0aW9u
IGluCisgICAgICAgIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpIGFzIHdlbGwgYXMgdGhlICFpc0lu
SGVhcCgpIGFzc2VydGlvbiBpbiBUaHJlYWRUaW1lckhlYXBJdGVtOjpjbGVhclRpbWVyKCkgYW5k
IG9ic2VydmluZyB0aGF0CisgICAgICAgIGxheW91dCB0ZXN0cyBydW4gc3VjY2Vzc2Z1bGx5IHdp
dGhvdXQgaGl0dGluZyBhbnkgZGVidWcgYXNzZXJ0aW9ucy4KKworICAgICAgICBObyBuZXcgdGVz
dHMgc2luY2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9ic2VydmFibGUgYmVoYXZpb3IgZGlmZmVyZW5j
ZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRXhwb3J0
IFRocmVhZFRpbWVycy5oIGFzIGEgcHJpdmF0ZSBoZWFkZXIgc2luY2UgaXQncyBub3cgaW5jbHVk
ZWQgaW4gVGltZXIuaAorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnVwZGF0ZVNoYXJlZFRpbWVyKTogRGVsZXRlIFRo
cmVhZFRpbWVySGVhcEl0ZW0ncyB3aXRoIG51bGxwdHIgVGltZXJCYXNlKiAoVGltZXJCYXNlIGhh
ZAorICAgICAgICBhbHJlYWR5IGJlZW4gZGVsZXRlZCkuIFRoaXMgc2hvdWxkIG9ubHkgaGFwcGVu
IHdoZW4gVGltZXJCYXNlJ3MgZGVzdHJ1Y3RvciBmYWlsZWQgdG8gcmVtb3ZlIGl0c2VsZiBmcm9t
IHRoZSB0aW1lciBoZWFwLAorICAgICAgICB3aGljaCBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzaGFyZWRUaW1lckZpcmVkSW50ZXJuYWwpOiBE
aXR0by4gQWxzbyByZW1vdmVkIHRoZSByZWR1bmRhbnQgY29kZSB3aGljaCBoYWQgcmVtb3ZlZCB0
aGUgdGltZXIKKyAgICAgICAgZnJvbSB0aGUgaGVhcCBzaW5jZSBzZXROZXh0RmlyZVRpbWUgZG9l
cyB0aGUgcmVtb3ZhbCBhbHJlYWR5LgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5o
OiBPdXRkZW50ZWQgdGhlIHdob2xlIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1l
cnM6OnRpbWVySGVhcCk6IFdlIHVzZSBWZWN0b3I8UmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+
PiBpbnN0ZWFkIG9mIFZlY3RvcjxSZWY8fj4+IHNpbmNlIFJlZjx+PgorICAgICAgICBkb2Vzbid0
IGhhdmUgYSBjb3B5IGNvbnN0cnVjdG9yIHdoaWNoIGlzIHVzZWQgYnkgc3RkOjpwdXNoX2hlYXAu
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtOjpoYXNUaW1lciBjb25zdCk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJIZWFwSXRlbTo6c2V0Tm90SW5IZWFwKTogQWRk
ZWQuIFRocmVhZFRpbWVySGVhcEl0ZW0gdXNlcyB1bnNpZ25lZCAtMSBhcyB0aGUgc2luZ2xlIHZh
bHVlIHdoaWNoCisgICAgICAgIHNpZ25pZmllcyB0aGUgaXRlbSBub3QgYmVpbmcgaW4gdGhlIGhl
YXAgaW5zdGVhZCBvZiBhbGwgbmVnYXRpdmUgdmFsdWVzIGFzIGluIHRoZSBvbGQgY29kZSBpbiBU
aW1lckJhc2UuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtOjppc0luSGVh
cCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJIZWFwSXRlbTo6
aXNGaXJzdEluSGVhcCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGlt
ZXJIZWFwSXRlbTo6dGltZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVy
SGVhcEl0ZW06OmNsZWFyVGltZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRp
bWVySGVhcEl0ZW06OmhlYXBJbmRleCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkVGltZXJIZWFwSXRlbTo6c2V0SGVhcEluZGV4KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtOjp0aW1lckhlYXAgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0aHJlYWRHbG9iYWxU
aW1lckhlYXApOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBvbmx5IHVzZWQgaW4gYXNzZXJ0aW9ucy4K
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVySGVhcEl0ZW06OlRocmVhZFRpbWVySGVhcEl0
ZW0pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVySGVhcEl0ZW06OmNyZWF0
ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwUG9pbnRlcjo6VGltZXJIZWFw
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckhlYXBQb2ludGVyOjpvcGVyYXRvci0+
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcFJlZmVyZW5jZTo6VGltZXJIZWFw
UmVmZXJlbmNlKTogQWRkZWQgYSBjb3B5IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6
VGltZXJIZWFwUmVmZXJlbmNlOjpjb3B5UmVmIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUaW1lckhlYXBSZWZlcmVuY2U6Om9wZXJhdG9yIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJ
dGVtPiYgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwUG9pbnRlcjo6b3BlcmF0
b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcFJlZmVyZW5jZTo6b3BlcmF0
b3I9KTogVXNlIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4KKyAgICAgICAgKFdlYkNvcmU6OlRp
bWVySGVhcFJlZmVyZW5jZTo6c3dhcFdpdGgpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFw
UmVmZXJlbmNlOjp1cGRhdGVIZWFwSW5kZXgpOiBFeHRyYWN0ZWQgdG8gc2hhcmUgY29kZSBiZXR3
ZWVuIHR3byB2ZXJpb25zIG9mIG9wZXJhdG9yPS4KKyAgICAgICAgKFdlYkNvcmU6OnN3YXApOgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwSXRlcmF0b3I6OlRpbWVySGVhcEl0ZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcEl0ZXJhdG9yOjpvcGVyYXRvci0+IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb246OmNvbXBhcmUpOiBB
ZGRlZCB2YXJpYW50cyB3aGljaCB0YWtlIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPi4KKyAg
ICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb246Om9wZXJhdG9yKCkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VGltZXJCYXNlOjp+VGltZXJCYXNlKTpDbGVhciB0aGUgcmF3IHBvaW50ZXIgaW4g
VGhyZWFkVGltZXJIZWFwSXRlbS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6c3RvcCk6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6Om5leHRGaXJlSW50ZXJ2YWwgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpjaGVja0hlYXBJbmRleCBjb25zdCk6IEFkZGVk
IHRoZSBjb25zaXN0ZW5jeSBjaGVjayBmb3Igb3RoZXIgaXRlbXMgaW4gdGhlIGhlYXAuCisgICAg
ICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoZWFwRGVjcmVhc2VLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6VGltZXJCYXNlOjpoZWFwRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6
aGVhcERlbGV0ZU1pbik6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBJbmNyZWFz
ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBJbnNlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoZWFwUG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVy
QmFzZTo6aGVhcFBvcE1pbik6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBEZWxl
dGVOdWxsTWluKTogQWRkZWQuIFVzZWQgdG8gZGVsZXRlIFRocmVhZFRpbWVySGVhcEl0ZW0gd2hp
Y2ggbm8gbG9uZ2VyIGhhcyBhIHZhbGlkIFRpbWVyQmFzZS4KKyAgICAgICAgKFdlYkNvcmU6OnBh
cmVudEhlYXBQcm9wZXJ0eUhvbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkSGVhcFByb3Bl
cnR5SG9sZHMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoYXNWYWxpZEhlYXBQb3Np
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OnVwZGF0ZUhlYXBJZk5l
ZWRlZCk6IFR3ZWFrZWQgdGhlIGhlYXAgaW5kZXggYXNzZXJ0aW9uIGFzIGhlYXBJbmRleCgpIGl0
c2VsZiB3b3VsZCBhc3NlcnQgd2hlbiBjYWxsZWQKKyAgICAgICAgb24gYW4gaXRlbSB3aXRoIGFu
IGludmFsaWQgKC0xKSBoZWFwIGluZGV4LgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpz
ZXROZXh0RmlyZVRpbWUpOiBDcmVhdGUgVGhyZWFkVGltZXJIZWFwSXRlbS4gTm90ZSBtX2hlYXBJ
dGVtIGlzIG5ldmVyIGNsZWFyZWQgdW50aWwgdGhpcyBUaW1lckJhc2UKKyAgICAgICAgaXMgZGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcFJlZmVyZW5jZTo6b3BlcmF0b3IgVGlt
ZXJCYXNlKiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZSk6IFJlcGxhY2VkIG1fbmV4dEZpcmVUaW1lLCBtX2hl
YXBJbmRleCwgbV9oZWFwSW5zZXJ0aW9uT3JkZXIsIGFuZCBtX2NhY2hlZFRocmVhZEdsb2JhbFRp
bWVySGVhcAorICAgICAgICBieSBtX2hlYXBJdGVtLCBSZWZQdHIgdG8gYW4gVGhyZWFkVGltZXJI
ZWFwSXRlbS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6YXVnbWVudEZpcmVJbnRlcnZh
bCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmluSGVhcCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpUaW1lckJhc2U6Om5leHRGaXJlVGltZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpUaW1lckJhc2U6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVy
QmFzZTo6IGNvbnN0KTogRGVsZXRlZC4KKwogMjAxOS0wMS0wOSAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtEYXRhbGlzdF0gQ3Jhc2ggd2hlbiBpbnB1dCB3aXRo
IGRhdGFsaXN0IGlzIGR5bmFtaWNhbGx5IGFkZGVkLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM5Nzg5KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NTIsNyArNDUyLDcgQEAKIAkJMTU5NzQxREIxQjdEMTQwMTAwMjAxQzky
IC8qIEpTTWVkaWFEZXZpY2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNTdDQzI2MjFCN0MxQ0E0MDBEOEQwNzUgLyogSlNNZWRpYURldmljZUlu
Zm8uaCAqLzsgfTsKIAkJMTVDNzcwOEQxMDBEM0M2QjAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1Qzc3MDhB
MTAwRDNDNkEwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTVDNzcwOTMxMDBEM0NBODAwNUJBMjY3IC8q
IEpTVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTVDNzcwOTExMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5oICov
OyB9OwotCQkxODVCQ0YyOTBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODVCQ0YyNzBGMzI3OUNF
MDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggKi87IH07CisJCTE4NUJDRjI5MEYzMjc5Q0UwMDBF
QTI2MiAvKiBUaHJlYWRUaW1lcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE4NUJDRjI3MEYzMjc5Q0UwMDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxODg2MDRC
NDBGMkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4ODYwNEIyMEYyRTY1NEEwMDBCNjQ0MyAvKiBET01UaW1l
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE4
RjgzMUI4MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2FkZXJQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThGODMxQjcwRkQ0OEM3ODAwRDhD
NTZCIC8qIFdvcmtlckxvYWRlclByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTkyMTMyNzUxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxOTIxMzI3MjExQzBFNkJCMDA0NTYyMzggLyogU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRp
bWVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGlt
ZXJzLmNwcAkocmV2aXNpb24gMjM5Nzg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkVGltZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTIgKzc1LDE4IEBAIHZvaWQgVGhy
ZWFkVGltZXJzOjp1cGRhdGVTaGFyZWRUaW1lcigpCiB7CiAgICAgaWYgKCFtX3NoYXJlZFRpbWVy
KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCisgICAgd2hpbGUgKCFtX3RpbWVySGVhcC5p
c0VtcHR5KCkgJiYgIW1fdGltZXJIZWFwLmZpcnN0KCktPmhhc1RpbWVyKCkpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFRpbWVyQmFzZTo6aGVhcERlbGV0ZU51bGxN
aW4obV90aW1lckhlYXApOworICAgIH0KKyAgICBBU1NFUlQobV90aW1lckhlYXAuaXNFbXB0eSgp
IHx8IG1fdGltZXJIZWFwLmZpcnN0KCktPmhhc1RpbWVyKCkpOworCiAgICAgaWYgKG1fZmlyaW5n
VGltZXJzIHx8IG1fdGltZXJIZWFwLmlzRW1wdHkoKSkgewogICAgICAgICBtX3BlbmRpbmdTaGFy
ZWRUaW1lckZpcmVUaW1lID0gTW9ub3RvbmljVGltZSB7IH07CiAgICAgICAgIG1fc2hhcmVkVGlt
ZXItPnN0b3AoKTsKICAgICB9IGVsc2UgewotICAgICAgICBNb25vdG9uaWNUaW1lIG5leHRGaXJl
VGltZSA9IG1fdGltZXJIZWFwLmZpcnN0KCktPm1fbmV4dEZpcmVUaW1lOworICAgICAgICBNb25v
dG9uaWNUaW1lIG5leHRGaXJlVGltZSA9IG1fdGltZXJIZWFwLmZpcnN0KCktPnRpbWU7CiAgICAg
ICAgIE1vbm90b25pY1RpbWUgY3VycmVudE1vbm90b25pY1RpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKICAgICAgICAgaWYgKG1fcGVuZGluZ1NoYXJlZFRpbWVyRmlyZVRpbWUpIHsKICAgICAg
ICAgICAgIC8vIE5vIG5lZWQgdG8gcmVzdGFydCB0aGUgdGltZXIgaWYgYm90aCB0aGUgcGVuZGlu
ZyBmaXJlIHRpbWUgYW5kIHRoZSBuZXcgZmlyZSB0aW1lIGFyZSBpbiB0aGUgcGFzdC4KQEAgLTEw
NCwxNyArMTEwLDIzIEBAIHZvaWQgVGhyZWFkVGltZXJzOjpzaGFyZWRUaW1lckZpcmVkSW50ZXIK
ICAgICBNb25vdG9uaWNUaW1lIGZpcmVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAg
TW9ub3RvbmljVGltZSB0aW1lVG9RdWl0ID0gZmlyZVRpbWUgKyBtYXhEdXJhdGlvbk9mRmlyaW5n
VGltZXJzOwogCi0gICAgd2hpbGUgKCFtX3RpbWVySGVhcC5pc0VtcHR5KCkgJiYgbV90aW1lckhl
YXAuZmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUgPD0gZmlyZVRpbWUpIHsKLSAgICAgICAgVGltZXJC
YXNlKiB0aW1lciA9IG1fdGltZXJIZWFwLmZpcnN0KCk7Ci0gICAgICAgIHRpbWVyLT5tX25leHRG
aXJlVGltZSA9IE1vbm90b25pY1RpbWUgeyB9OwotICAgICAgICB0aW1lci0+bV91bmFsaWduZWRO
ZXh0RmlyZVRpbWUgPSBNb25vdG9uaWNUaW1lIHsgfTsKLSAgICAgICAgdGltZXItPmhlYXBEZWxl
dGVNaW4oKTsKKyAgICB3aGlsZSAoIW1fdGltZXJIZWFwLmlzRW1wdHkoKSkgeworICAgICAgICBS
ZWY8VGhyZWFkVGltZXJIZWFwSXRlbT4gaXRlbSA9ICptX3RpbWVySGVhcC5maXJzdCgpOworICAg
ICAgICBBU1NFUlQoaXRlbS0+aGFzVGltZXIoKSk7CisgICAgICAgIGlmICghaXRlbS0+aGFzVGlt
ZXIoKSkgeworICAgICAgICAgICAgVGltZXJCYXNlOjpoZWFwRGVsZXRlTnVsbE1pbihtX3RpbWVy
SGVhcCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChp
dGVtLT50aW1lID4gZmlyZVRpbWUpCisgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBTZWNv
bmRzIGludGVydmFsID0gdGltZXItPnJlcGVhdEludGVydmFsKCk7Ci0gICAgICAgIHRpbWVyLT5z
ZXROZXh0RmlyZVRpbWUoaW50ZXJ2YWwgPyBmaXJlVGltZSArIGludGVydmFsIDogTW9ub3Rvbmlj
VGltZSB7IH0pOworICAgICAgICBhdXRvJiB0aW1lciA9IGl0ZW0tPnRpbWVyKCk7CisgICAgICAg
IFNlY29uZHMgaW50ZXJ2YWwgPSB0aW1lci5yZXBlYXRJbnRlcnZhbCgpOworICAgICAgICB0aW1l
ci5zZXROZXh0RmlyZVRpbWUoaW50ZXJ2YWwgPyBmaXJlVGltZSArIGludGVydmFsIDogTW9ub3Rv
bmljVGltZSB7IH0pOwogCiAgICAgICAgIC8vIE9uY2UgdGhlIHRpbWVyIGhhcyBiZWVuIGZpcmVk
LCBpdCBtYXkgYmUgZGVsZXRlZCwgc28gZG8gbm90aGluZyBlbHNlIHdpdGggaXQgYWZ0ZXIgdGhp
cyBwb2ludC4KLSAgICAgICAgdGltZXItPmZpcmVkKCk7CisgICAgICAgIGl0ZW0tPnRpbWVyKCku
ZmlyZWQoKTsKIAogICAgICAgICAvLyBDYXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUgdGltZXIgYXNr
ZWQgdGltZXJzIHRvIGZpcmUgaW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgb3Igd2UgYXJlIG92ZXIg
dGltZSBsaW1pdC4KICAgICAgICAgaWYgKCFtX2ZpcmluZ1RpbWVycyB8fCB0aW1lVG9RdWl0IDwg
TW9ub3RvbmljVGltZTo6bm93KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRUaW1lcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRU
aW1lcnMuaAkocmV2aXNpb24gMjM5Nzg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkVGltZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDM2ICsyOSwxMDAgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIGNsYXNzIFNoYXJlZFRpbWVyOwotICAgIGNsYXNzIFRpbWVyQmFzZTsKK2NsYXNzIFNo
YXJlZFRpbWVyOworY2xhc3MgVGhyZWFkVGltZXJzOworY2xhc3MgVGltZXJCYXNlOworCitzdHJ1
Y3QgVGhyZWFkVGltZXJIZWFwSXRlbTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxUaHJlYWRUaW1l
ckhlYXBJdGVtPj4gVGhyZWFkVGltZXJIZWFwOworICAgIAorLy8gQSBjb2xsZWN0aW9uIG9mIHRp
bWVycyBwZXIgdGhyZWFkLiBLZXB0IGluIFRocmVhZEdsb2JhbERhdGEuCitjbGFzcyBUaHJlYWRU
aW1lcnMgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZFRpbWVycyk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFRocmVhZFRpbWVycygpOworCisgICAgLy8g
T24gYSB0aHJlYWQgZGlmZmVyZW50IHRoZW4gbWFpbiwgd2Ugc2hvdWxkIHNldCB0aGUgdGhyZWFk
J3MgaW5zdGFuY2Ugb2YgdGhlIFNoYXJlZFRpbWVyLgorICAgIHZvaWQgc2V0U2hhcmVkVGltZXIo
U2hhcmVkVGltZXIqKTsKKworICAgIFRocmVhZFRpbWVySGVhcCYgdGltZXJIZWFwKCkgeyByZXR1
cm4gbV90aW1lckhlYXA7IH0KKworICAgIHZvaWQgdXBkYXRlU2hhcmVkVGltZXIoKTsKKyAgICB2
b2lkIGZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOworCitwcml2YXRlOgorICAgIHZvaWQg
c2hhcmVkVGltZXJGaXJlZEludGVybmFsKCk7CisgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRF
dmVudExvb3BJbnRlcm5hbCgpOworCisgICAgVGhyZWFkVGltZXJIZWFwIG1fdGltZXJIZWFwOwor
ICAgIFNoYXJlZFRpbWVyKiBtX3NoYXJlZFRpbWVyIHsgbnVsbHB0ciB9OyAvLyBFeHRlcm5hbCBv
YmplY3QsIGNhbiBiZSBhIHJ1biBsb29wIG9uIGEgd29ya2VyIHRocmVhZC4gTm9ybWFsbHkgc2V0
L3Jlc2V0IGJ5IHdvcmtlciB0aHJlYWQuCisgICAgYm9vbCBtX2ZpcmluZ1RpbWVycyB7IGZhbHNl
IH07IC8vIFJlZW50cmFuY3kgZ3VhcmQuCisgICAgTW9ub3RvbmljVGltZSBtX3BlbmRpbmdTaGFy
ZWRUaW1lckZpcmVUaW1lOworfTsKKworc3RydWN0IFRocmVhZFRpbWVySGVhcEl0ZW0gOiBUaHJl
YWRTYWZlUmVmQ291bnRlZDxUaHJlYWRUaW1lckhlYXBJdGVtPiB7CisgICAgc3RhdGljIFJlZlB0
cjxUaHJlYWRUaW1lckhlYXBJdGVtPiBjcmVhdGUoVGltZXJCYXNlJiwgTW9ub3RvbmljVGltZSwg
dW5zaWduZWQpOworCisgICAgYm9vbCBoYXNUaW1lcigpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXI7
IH0KKyAgICBUaW1lckJhc2UmIHRpbWVyKCk7CisgICAgdm9pZCBjbGVhclRpbWVyKCk7CisKKyAg
ICBUaHJlYWRUaW1lckhlYXAmIHRpbWVySGVhcCgpIGNvbnN0OworCisgICAgdW5zaWduZWQgaGVh
cEluZGV4KCkgY29uc3Q7CisgICAgdm9pZCBzZXRIZWFwSW5kZXgodW5zaWduZWQgbmV3SW5kZXgp
OworICAgIHZvaWQgc2V0Tm90SW5IZWFwKCkgeyBtX2hlYXBJbmRleCA9IGludmFsaWRIZWFwSW5k
ZXg7IH0KKworICAgIGJvb2wgaXNJbkhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXBJbmRleCAh
PSBpbnZhbGlkSGVhcEluZGV4OyB9CisgICAgYm9vbCBpc0ZpcnN0SW5IZWFwKCkgY29uc3QgeyBy
ZXR1cm4gIW1faGVhcEluZGV4OyB9CisKKyAgICBNb25vdG9uaWNUaW1lIHRpbWU7CisgICAgdW5z
aWduZWQgaW5zZXJ0aW9uT3JkZXIgeyAwIH07CisKK3ByaXZhdGU6CisgICAgVGhyZWFkVGltZXJz
JiBtX3RocmVhZFRpbWVyczsKKyAgICBUaW1lckJhc2UqIG1fdGltZXIgeyBudWxscHRyIH07Cisg
ICAgdW5zaWduZWQgbV9oZWFwSW5kZXggeyBpbnZhbGlkSGVhcEluZGV4IH07CisKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZEhlYXBJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PigtMSk7CisKKyAgICBUaHJlYWRUaW1lckhlYXBJdGVtKFRpbWVyQmFzZSYsIE1vbm90b25pY1Rp
bWUsIHVuc2lnbmVkKTsKK307CisKK2lubGluZSBUaW1lckJhc2UmIFRocmVhZFRpbWVySGVhcEl0
ZW06OnRpbWVyKCkKK3sKKyAgICBBU1NFUlQobV90aW1lcik7CisgICAgcmV0dXJuICptX3RpbWVy
OworfQorCitpbmxpbmUgdm9pZCBUaHJlYWRUaW1lckhlYXBJdGVtOjpjbGVhclRpbWVyKCkKK3sK
KyAgICBBU1NFUlQoIWlzSW5IZWFwKCkpOworICAgIG1fdGltZXIgPSBudWxscHRyOworfQorCitp
bmxpbmUgdW5zaWduZWQgVGhyZWFkVGltZXJIZWFwSXRlbTo6aGVhcEluZGV4KCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV9oZWFwSW5kZXggIT0gaW52YWxpZEhlYXBJbmRleCk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hlYXBJbmRleCk7Cit9CisKK2lubGluZSB2b2lkIFRo
cmVhZFRpbWVySGVhcEl0ZW06OnNldEhlYXBJbmRleCh1bnNpZ25lZCBuZXdJbmRleCkKK3sKKyAg
ICBBU1NFUlQobmV3SW5kZXggIT0gaW52YWxpZEhlYXBJbmRleCk7CisgICAgbV9oZWFwSW5kZXgg
PSBuZXdJbmRleDsKK30KIAotICAgIC8vIEEgY29sbGVjdGlvbiBvZiB0aW1lcnMgcGVyIHRocmVh
ZC4gS2VwdCBpbiBUaHJlYWRHbG9iYWxEYXRhLgotICAgIGNsYXNzIFRocmVhZFRpbWVycyB7Ci0g
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZFRpbWVycyk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgVGhyZWFkVGltZXJzKCk7Ci0KLSAgICAg
ICAgLy8gT24gYSB0aHJlYWQgZGlmZmVyZW50IHRoZW4gbWFpbiwgd2Ugc2hvdWxkIHNldCB0aGUg
dGhyZWFkJ3MgaW5zdGFuY2Ugb2YgdGhlIFNoYXJlZFRpbWVyLgotICAgICAgICB2b2lkIHNldFNo
YXJlZFRpbWVyKFNoYXJlZFRpbWVyKik7Ci0KLSAgICAgICAgVmVjdG9yPFRpbWVyQmFzZSo+JiB0
aW1lckhlYXAoKSB7IHJldHVybiBtX3RpbWVySGVhcDsgfQotCi0gICAgICAgIHZvaWQgdXBkYXRl
U2hhcmVkVGltZXIoKTsKLSAgICAgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3Ao
KTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc2hhcmVkVGltZXJGaXJlZEludGVybmFs
KCk7Ci0gICAgICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wSW50ZXJuYWwoKTsK
LQotICAgICAgICBWZWN0b3I8VGltZXJCYXNlKj4gbV90aW1lckhlYXA7Ci0gICAgICAgIFNoYXJl
ZFRpbWVyKiBtX3NoYXJlZFRpbWVyIHsgbnVsbHB0ciB9OyAvLyBFeHRlcm5hbCBvYmplY3QsIGNh
biBiZSBhIHJ1biBsb29wIG9uIGEgd29ya2VyIHRocmVhZC4gTm9ybWFsbHkgc2V0L3Jlc2V0IGJ5
IHdvcmtlciB0aHJlYWQuCi0gICAgICAgIGJvb2wgbV9maXJpbmdUaW1lcnMgeyBmYWxzZSB9OyAv
LyBSZWVudHJhbmN5IGd1YXJkLgotICAgICAgICBNb25vdG9uaWNUaW1lIG1fcGVuZGluZ1NoYXJl
ZFRpbWVyRmlyZVRpbWU7Ci0gICAgfTsKK2lubGluZSBUaHJlYWRUaW1lckhlYXAmIFRocmVhZFRp
bWVySGVhcEl0ZW06OnRpbWVySGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGhyZWFkVGlt
ZXJzLnRpbWVySGVhcCgpOworfQogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5j
cHAJKHJldmlzaW9uIDIzOTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTAsNjkgKzUwLDExMSBAQCBjbGFzcyBUaW1lckhlYXBSZWZl
cmVuY2U7CiAvLyBUaGVuIHdlIHNldCBhIHNpbmdsZSBzaGFyZWQgc3lzdGVtIHRpbWVyIHRvIGZp
cmUgYXQgdGhhdCB0aW1lLgogLy8KIC8vIFdoZW4gYSB0aW1lcidzICJuZXh0IGZpcmUgdGltZSIg
Y2hhbmdlcywgd2UgbmVlZCB0byBtb3ZlIGl0IGFyb3VuZCBpbiB0aGUgcHJpb3JpdHkgcXVldWUu
Ci1zdGF0aWMgVmVjdG9yPFRpbWVyQmFzZSo+JiB0aHJlYWRHbG9iYWxUaW1lckhlYXAoKQorI2lm
ICFBU1NFUlRfRElTQUJMRUQKK3N0YXRpYyBUaHJlYWRUaW1lckhlYXAmIHRocmVhZEdsb2JhbFRp
bWVySGVhcCgpCiB7CiAgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMo
KS50aW1lckhlYXAoKTsKIH0KKyNlbmRpZgorCitpbmxpbmUgVGhyZWFkVGltZXJIZWFwSXRlbTo6
VGhyZWFkVGltZXJIZWFwSXRlbShUaW1lckJhc2UmIHRpbWVyLCBNb25vdG9uaWNUaW1lIHRpbWUs
IHVuc2lnbmVkIGluc2VydGlvbk9yZGVyKQorICAgIDogdGltZSh0aW1lKQorICAgICwgaW5zZXJ0
aW9uT3JkZXIoaW5zZXJ0aW9uT3JkZXIpCisgICAgLCBtX3RocmVhZFRpbWVycyh0aHJlYWRHbG9i
YWxEYXRhKCkudGhyZWFkVGltZXJzKCkpCisgICAgLCBtX3RpbWVyKCZ0aW1lcikKK3sKKyAgICBB
U1NFUlQobV90aW1lcik7Cit9CisgICAgCitpbmxpbmUgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0
ZW0+IFRocmVhZFRpbWVySGVhcEl0ZW06OmNyZWF0ZShUaW1lckJhc2UmIHRpbWVyLCBNb25vdG9u
aWNUaW1lIHRpbWUsIHVuc2lnbmVkIGluc2VydGlvbk9yZGVyKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRocmVhZFRpbWVySGVhcEl0ZW0geyB0aW1lciwgdGltZSwgaW5zZXJ0aW9uT3Jk
ZXIgfSk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgVGltZXJIZWFwUG9pbnRl
ciB7CiBwdWJsaWM6Ci0gICAgVGltZXJIZWFwUG9pbnRlcihUaW1lckJhc2UqKiBwb2ludGVyKSA6
IG1fcG9pbnRlcihwb2ludGVyKSB7IH0KKyAgICBUaW1lckhlYXBQb2ludGVyKFJlZlB0cjxUaHJl
YWRUaW1lckhlYXBJdGVtPiogcG9pbnRlcikKKyAgICAgICAgOiBtX3BvaW50ZXIocG9pbnRlcikK
KyAgICB7IH0KKwogICAgIFRpbWVySGVhcFJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdDsKLSAg
ICBUaW1lckJhc2UqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAqbV9wb2ludGVyOyB9Cisg
ICAgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+JiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gKm1fcG9pbnRlcjsgfQogcHJpdmF0ZToKLSAgICBUaW1lckJhc2UqKiBtX3BvaW50ZXI7Cisg
ICAgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+KiBtX3BvaW50ZXI7CiB9OwogCiBjbGFzcyBU
aW1lckhlYXBSZWZlcmVuY2UgewogcHVibGljOgotICAgIFRpbWVySGVhcFJlZmVyZW5jZShUaW1l
ckJhc2UqJiByZWZlcmVuY2UpIDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKSB7IH0KLSAgICBvcGVy
YXRvciBUaW1lckJhc2UqKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2U7IH0KKyAgICBUaW1l
ckhlYXBSZWZlcmVuY2UoUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+JiByZWZlcmVuY2UpCisg
ICAgICAgIDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKQorICAgIHsgfQorCisgICAgVGltZXJIZWFw
UmVmZXJlbmNlKGNvbnN0IFRpbWVySGVhcFJlZmVyZW5jZSYgb3RoZXIpCisgICAgICAgIDogbV9y
ZWZlcmVuY2Uob3RoZXIubV9yZWZlcmVuY2UpCisgICAgeyB9CisKKyAgICBvcGVyYXRvciBSZWZQ
dHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2U7IH0K
ICAgICBUaW1lckhlYXBQb2ludGVyIG9wZXJhdG9yJigpIGNvbnN0IHsgcmV0dXJuICZtX3JlZmVy
ZW5jZTsgfQotICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9KFRpbWVyQmFzZSopOwot
ICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9KFRpbWVySGVhcFJlZmVyZW5jZSk7Cisg
ICAgVGltZXJIZWFwUmVmZXJlbmNlJiBvcGVyYXRvcj0oVGltZXJIZWFwUmVmZXJlbmNlJiYpOwor
ICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9KFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJ
dGVtPiYmKTsKKworICAgIHZvaWQgc3dhcChUaW1lckhlYXBSZWZlcmVuY2UmIG90aGVyKTsKKwor
ICAgIHZvaWQgdXBkYXRlSGVhcEluZGV4KCk7CisKIHByaXZhdGU6Ci0gICAgVGltZXJCYXNlKiYg
bV9yZWZlcmVuY2U7CisgICAgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+JiBtX3JlZmVyZW5j
ZTsKKworICAgIGZyaWVuZCB2b2lkIHN3YXAoVGltZXJIZWFwUmVmZXJlbmNlIGEsIFRpbWVySGVh
cFJlZmVyZW5jZSBiKTsKIH07CiAKIGlubGluZSBUaW1lckhlYXBSZWZlcmVuY2UgVGltZXJIZWFw
UG9pbnRlcjo6b3BlcmF0b3IqKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKm1fcG9pbnRlcjsKKyAg
ICByZXR1cm4gVGltZXJIZWFwUmVmZXJlbmNlIHsgKm1fcG9pbnRlciB9OwogfQogCi1pbmxpbmUg
VGltZXJIZWFwUmVmZXJlbmNlJiBUaW1lckhlYXBSZWZlcmVuY2U6Om9wZXJhdG9yPShUaW1lckJh
c2UqIHRpbWVyKQoraW5saW5lIFRpbWVySGVhcFJlZmVyZW5jZSYgVGltZXJIZWFwUmVmZXJlbmNl
OjpvcGVyYXRvcj0oVGltZXJIZWFwUmVmZXJlbmNlJiYgb3RoZXIpCiB7Ci0gICAgbV9yZWZlcmVu
Y2UgPSB0aW1lcjsKLSAgICBWZWN0b3I8VGltZXJCYXNlKj4mIGhlYXAgPSB0aW1lci0+dGltZXJI
ZWFwKCk7Ci0gICAgaWYgKCZtX3JlZmVyZW5jZSA+PSBoZWFwLmRhdGEoKSAmJiAmbV9yZWZlcmVu
Y2UgPCBoZWFwLmRhdGEoKSArIGhlYXAuc2l6ZSgpKQotICAgICAgICB0aW1lci0+bV9oZWFwSW5k
ZXggPSAmbV9yZWZlcmVuY2UgLSBoZWFwLmRhdGEoKTsKKyAgICBtX3JlZmVyZW5jZSA9IFdURk1v
dmUob3RoZXIubV9yZWZlcmVuY2UpOworICAgIHVwZGF0ZUhlYXBJbmRleCgpOwogICAgIHJldHVy
biAqdGhpczsKIH0KIAotaW5saW5lIFRpbWVySGVhcFJlZmVyZW5jZSYgVGltZXJIZWFwUmVmZXJl
bmNlOjpvcGVyYXRvcj0oVGltZXJIZWFwUmVmZXJlbmNlIGIpCitpbmxpbmUgVGltZXJIZWFwUmVm
ZXJlbmNlJiBUaW1lckhlYXBSZWZlcmVuY2U6Om9wZXJhdG9yPShSZWZQdHI8VGhyZWFkVGltZXJI
ZWFwSXRlbT4mJiBpdGVtKQogewotICAgIFRpbWVyQmFzZSogdGltZXIgPSBiOwotICAgIHJldHVy
biAqdGhpcyA9IHRpbWVyOworICAgIG1fcmVmZXJlbmNlID0gV1RGTW92ZShpdGVtKTsKKyAgICB1
cGRhdGVIZWFwSW5kZXgoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWlubGluZSB2b2lkIHN3
YXAoVGltZXJIZWFwUmVmZXJlbmNlIGEsIFRpbWVySGVhcFJlZmVyZW5jZSBiKQoraW5saW5lIHZv
aWQgVGltZXJIZWFwUmVmZXJlbmNlOjpzd2FwKFRpbWVySGVhcFJlZmVyZW5jZSYgb3RoZXIpCiB7
Ci0gICAgVGltZXJCYXNlKiB0aW1lckEgPSBhOwotICAgIFRpbWVyQmFzZSogdGltZXJCID0gYjsK
KyAgICBtX3JlZmVyZW5jZS5zd2FwKG90aGVyLm1fcmVmZXJlbmNlKTsKKyAgICB1cGRhdGVIZWFw
SW5kZXgoKTsKKyAgICBvdGhlci51cGRhdGVIZWFwSW5kZXgoKTsKK30KIAotICAgIC8vIEludm9r
ZSB0aGUgYXNzaWdubWVudCBvcGVyYXRvciwgc2luY2UgdGhhdCB0YWtlcyBjYXJlIG9mIHVwZGF0
aW5nIG1faGVhcEluZGV4LgotICAgIGEgPSB0aW1lckI7Ci0gICAgYiA9IHRpbWVyQTsKK2lubGlu
ZSB2b2lkIFRpbWVySGVhcFJlZmVyZW5jZTo6dXBkYXRlSGVhcEluZGV4KCkKK3sKKyAgICBhdXRv
JiBoZWFwID0gbV9yZWZlcmVuY2UtPnRpbWVySGVhcCgpOworICAgIGlmICgmbV9yZWZlcmVuY2Ug
Pj0gaGVhcC5kYXRhKCkgJiYgJm1fcmVmZXJlbmNlIDwgaGVhcC5kYXRhKCkgKyBoZWFwLnNpemUo
KSkKKyAgICAgICAgbV9yZWZlcmVuY2UtPnNldEhlYXBJbmRleCgmbV9yZWZlcmVuY2UgLSBoZWFw
LmRhdGEoKSk7Cit9CisKK2lubGluZSB2b2lkIHN3YXAoVGltZXJIZWFwUmVmZXJlbmNlIGEsIFRp
bWVySGVhcFJlZmVyZW5jZSBiKQoreworICAgIGEuc3dhcChiKTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLQogCiAvLyBDbGFzcyB0byByZXByZXNlbnQgaXRlcmF0b3JzIGluIHRoZSBoZWFwIHdo
ZW4gY2FsbGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSBoZWFwIGFsZ29yaXRobXMuCiAvLyBVc2Vz
IGEgY3VzdG9tIHBvaW50ZXIgYW5kIHJlZmVyZW5jZSB0eXBlIHRoYXQgdXBkYXRlIGluZGljZXMg
Zm9yIHBvaW50ZXJzIGluIHRoZSBoZWFwLgotY2xhc3MgVGltZXJIZWFwSXRlcmF0b3IgOiBwdWJs
aWMgc3RkOjppdGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBUaW1lckJh
c2UqLCBwdHJkaWZmX3QsIFRpbWVySGVhcFBvaW50ZXIsIFRpbWVySGVhcFJlZmVyZW5jZT4gewor
Y2xhc3MgVGltZXJIZWFwSXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OnJhbmRv
bV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4sIHB0cmRp
ZmZfdCwgVGltZXJIZWFwUG9pbnRlciwgVGltZXJIZWFwUmVmZXJlbmNlPiB7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgVGltZXJIZWFwSXRlcmF0b3IoVGltZXJCYXNlKiogcG9pbnRlcikgOiBtX3Bv
aW50ZXIocG9pbnRlcikgeyBjaGVja0NvbnNpc3RlbmN5KCk7IH0KKyAgICBleHBsaWNpdCBUaW1l
ckhlYXBJdGVyYXRvcihSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4qIHBvaW50ZXIpIDogbV9w
b2ludGVyKHBvaW50ZXIpIHsgY2hlY2tDb25zaXN0ZW5jeSgpOyB9CiAKICAgICBUaW1lckhlYXBJ
dGVyYXRvciYgb3BlcmF0b3IrKygpIHsgY2hlY2tDb25zaXN0ZW5jeSgpOyArK21fcG9pbnRlcjsg
Y2hlY2tDb25zaXN0ZW5jeSgpOyByZXR1cm4gKnRoaXM7IH0KICAgICBUaW1lckhlYXBJdGVyYXRv
ciBvcGVyYXRvcisrKGludCkgeyBjaGVja0NvbnNpc3RlbmN5KDEpOyByZXR1cm4gVGltZXJIZWFw
SXRlcmF0b3IobV9wb2ludGVyKyspOyB9CkBAIC0xMjUsNyArMTY3LDcgQEAgcHVibGljOgogCiAg
ICAgVGltZXJIZWFwUmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIFRpbWVySGVh
cFJlZmVyZW5jZSgqbV9wb2ludGVyKTsgfQogICAgIFRpbWVySGVhcFJlZmVyZW5jZSBvcGVyYXRv
cltdKHB0cmRpZmZfdCBpKSBjb25zdCB7IHJldHVybiBUaW1lckhlYXBSZWZlcmVuY2UobV9wb2lu
dGVyW2ldKTsgfQotICAgIFRpbWVyQmFzZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICpt
X3BvaW50ZXI7IH0KKyAgICBSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mIG9wZXJhdG9yLT4o
KSBjb25zdCB7IHJldHVybiAqbV9wb2ludGVyOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjaGVj
a0NvbnNpc3RlbmN5KHB0cmRpZmZfdCBvZmZzZXQgPSAwKSBjb25zdApAQCAtMTQ5LDcgKzE5MSw3
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIFRpbWVySGVhcEl0ZXJhdG9yIG9wZXJhdG9yLShUaW1l
ckhlYXBJdGVyYXRvciwgc2l6ZV90KTsKICAgICBmcmllbmQgcHRyZGlmZl90IG9wZXJhdG9yLShU
aW1lckhlYXBJdGVyYXRvciwgVGltZXJIZWFwSXRlcmF0b3IpOwogCi0gICAgVGltZXJCYXNlKiog
bV9wb2ludGVyOworICAgIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPiogbV9wb2ludGVyOwog
fTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUaW1lckhlYXBJdGVyYXRvciBhLCBUaW1lckhl
YXBJdGVyYXRvciBiKSB7IHJldHVybiBhLm1fcG9pbnRlciA9PSBiLm1fcG9pbnRlcjsgfQpAQCAt
MTY5LDIzICsyMTEsMzQgQEAgaW5saW5lIHB0cmRpZmZfdCBvcGVyYXRvci0oVGltZXJIZWFwSXRl
cgogCiBjbGFzcyBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBib29s
IG9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNlKiwgY29uc3QgVGltZXJCYXNlKikgY29uc3Q7Ci19
OworICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgVGltZXJCYXNlJiBhLCBjb25zdCBSZWZQ
dHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gY29tcGFy
ZShhLm1faGVhcEl0ZW0tPnRpbWUsIGEubV9oZWFwSXRlbS0+aW5zZXJ0aW9uT3JkZXIsIGItPnRp
bWUsIGItPmluc2VydGlvbk9yZGVyKTsKKyAgICB9CiAKLWlubGluZSBib29sIFRpbWVySGVhcExl
c3NUaGFuRnVuY3Rpb246Om9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNlKiBhLCBjb25zdCBUaW1l
ckJhc2UqIGIpIGNvbnN0Ci17Ci0gICAgLy8gVGhlIGNvbXBhcmlzb25zIGJlbG93IGFyZSAiYmFj
a3dhcmRzIiBiZWNhdXNlIHRoZSBoZWFwIHB1dHMgdGhlIGxhcmdlc3QgCi0gICAgLy8gZWxlbWVu
dCBmaXJzdCBhbmQgd2Ugd2FudCB0aGUgbG93ZXN0IHRpbWUgdG8gYmUgdGhlIGZpcnN0IG9uZSBp
biB0aGUgaGVhcC4KLSAgICBNb25vdG9uaWNUaW1lIGFGaXJlVGltZSA9IGEtPm1fbmV4dEZpcmVU
aW1lOwotICAgIE1vbm90b25pY1RpbWUgYkZpcmVUaW1lID0gYi0+bV9uZXh0RmlyZVRpbWU7Ci0g
ICAgaWYgKGJGaXJlVGltZSAhPSBhRmlyZVRpbWUpCi0gICAgICAgIHJldHVybiBiRmlyZVRpbWUg
PCBhRmlyZVRpbWU7Ci0gICAgCi0gICAgLy8gV2UgbmVlZCB0byBsb29rIGF0IHRoZSBkaWZmZXJl
bmNlIG9mIHRoZSBpbnNlcnRpb24gb3JkZXJzIGluc3RlYWQgb2YgY29tcGFyaW5nIHRoZSB0d28g
Ci0gICAgLy8gb3V0cmlnaHQgaW4gY2FzZSBvZiBvdmVyZmxvdy4gCi0gICAgdW5zaWduZWQgZGlm
ZmVyZW5jZSA9IGEtPm1faGVhcEluc2VydGlvbk9yZGVyIC0gYi0+bV9oZWFwSW5zZXJ0aW9uT3Jk
ZXI7Ci0gICAgcmV0dXJuIGRpZmZlcmVuY2UgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkgLyAyOwotfQorICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgUmVmUHRyPFRo
cmVhZFRpbWVySGVhcEl0ZW0+JiBhLCBjb25zdCBUaW1lckJhc2UmIGIpCisgICAgeworICAgICAg
ICByZXR1cm4gY29tcGFyZShhLT50aW1lLCBhLT5pbnNlcnRpb25PcmRlciwgYi5tX2hlYXBJdGVt
LT50aW1lLCBiLm1faGVhcEl0ZW0tPmluc2VydGlvbk9yZGVyKTsKKyAgICB9CisKKyAgICBib29s
IG9wZXJhdG9yKCkoY29uc3QgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+JiBhLCBjb25zdCBS
ZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mIGIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gY29tcGFyZShhLT50aW1lLCBhLT5pbnNlcnRpb25PcmRlciwgYi0+dGltZSwgYi0+aW5zZXJ0
aW9uT3JkZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlKE1v
bm90b25pY1RpbWUgYVRpbWUsIHVuc2lnbmVkIGFPcmRlciwgTW9ub3RvbmljVGltZSBiVGltZSwg
dW5zaWduZWQgYk9yZGVyKQorICAgIHsKKyAgICAgICAgLy8gVGhlIGNvbXBhcmlzb25zIGJlbG93
IGFyZSAiYmFja3dhcmRzIiBiZWNhdXNlIHRoZSBoZWFwIHB1dHMgdGhlIGxhcmdlc3QKKyAgICAg
ICAgLy8gZWxlbWVudCBmaXJzdCBhbmQgd2Ugd2FudCB0aGUgbG93ZXN0IHRpbWUgdG8gYmUgdGhl
IGZpcnN0IG9uZSBpbiB0aGUgaGVhcC4KKyAgICAgICAgaWYgKGJUaW1lICE9IGFUaW1lKQorICAg
ICAgICAgICAgcmV0dXJuIGJUaW1lIDwgYVRpbWU7CisgICAgICAgIC8vIFdlIG5lZWQgdG8gbG9v
ayBhdCB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgaW5zZXJ0aW9uIG9yZGVycyBpbnN0ZWFkIG9mIGNv
bXBhcmluZyB0aGUgdHdvCisgICAgICAgIC8vIG91dHJpZ2h0IGluIGNhc2Ugb2Ygb3ZlcmZsb3cu
CisgICAgICAgIHVuc2lnbmVkIGRpZmZlcmVuY2UgPSBhT3JkZXIgLSBiT3JkZXI7CisgICAgICAg
IHJldHVybiBkaWZmZXJlbmNlIDwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
IC8gMjsKKyAgICB9Cit9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTIwMSw4ICsyNTQs
NyBAQCBzdGF0aWMgYm9vbCBzaG91bGRTdXBwcmVzc1RocmVhZFNhZmV0eUNoCiB9CiAKIFRpbWVy
QmFzZTo6VGltZXJCYXNlKCkKLSAgICA6IG1faGVhcEluZGV4KC0xKQotICAgICwgbV93YXNEZWxl
dGVkKGZhbHNlKQorICAgIDogbV93YXNEZWxldGVkKGZhbHNlKQogewogfQogCkBAIC0yMTIsNiAr
MjY0LDEwIEBAIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiAgICAgUkVMRUFTRV9BU1NFUlQoY2Fu
QWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKG1fdGhyZWFkLmdldCgpKSB8fCBzaG91bGRT
dXBwcmVzc1RocmVhZFNhZmV0eUNoZWNrKCkpOwogICAgIHN0b3AoKTsKICAgICBBU1NFUlQoIWlu
SGVhcCgpKTsKKyAgICBpZiAobV9oZWFwSXRlbSkgeworICAgICAgICBtX2hlYXBJdGVtLT5jbGVh
clRpbWVyKCk7CisgICAgICAgIG1faGVhcEl0ZW0gPSBudWxscHRyOworICAgIH0KICAgICBtX3dh
c0RlbGV0ZWQgPSB0cnVlOwogfQogCkBAIC0yMzAsNyArMjg2LDcgQEAgdm9pZCBUaW1lckJhc2U6
OnN0b3AoKQogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSAwX3M7CiAgICAgc2V0TmV4dEZpcmVUaW1l
KE1vbm90b25pY1RpbWUgeyB9KTsKIAotICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Ym9vbD4obV9u
ZXh0RmlyZVRpbWUpKTsKKyAgICBBU1NFUlQoIXN0YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGlt
ZSgpKSk7CiAgICAgQVNTRVJUKG1fcmVwZWF0SW50ZXJ2YWwgPT0gMF9zKTsKICAgICBBU1NFUlQo
IWluSGVhcCgpKTsKIH0KQEAgLTIzOCw1NyArMjk0LDY2IEBAIHZvaWQgVGltZXJCYXNlOjpzdG9w
KCkKIFNlY29uZHMgVGltZXJCYXNlOjpuZXh0RmlyZUludGVydmFsKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoaXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKG1faGVhcEl0ZW0pOwogICAgIE1vbm90b25p
Y1RpbWUgY3VycmVudCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIGlmIChtX25leHRGaXJl
VGltZSA8IGN1cnJlbnQpCisgICAgYXV0byBmaXJlVGltZSA9IG5leHRGaXJlVGltZSgpOworICAg
IGlmIChmaXJlVGltZSA8IGN1cnJlbnQpCiAgICAgICAgIHJldHVybiAwX3M7Ci0gICAgcmV0dXJu
IG1fbmV4dEZpcmVUaW1lIC0gY3VycmVudDsKKyAgICByZXR1cm4gZmlyZVRpbWUgLSBjdXJyZW50
OwogfQogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmNoZWNrSGVhcEluZGV4KCkgY29uc3QKIHsK
LSAgICBBU1NFUlQodGltZXJIZWFwKCkgPT0gdGhyZWFkR2xvYmFsVGltZXJIZWFwKCkpOwotICAg
IEFTU0VSVCghdGltZXJIZWFwKCkuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobV9oZWFwSW5kZXgg
Pj0gMCk7Ci0gICAgQVNTRVJUKG1faGVhcEluZGV4IDwgc3RhdGljX2Nhc3Q8aW50Pih0aW1lckhl
YXAoKS5zaXplKCkpKTsKLSAgICBBU1NFUlQodGltZXJIZWFwKClbbV9oZWFwSW5kZXhdID09IHRo
aXMpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBBU1NFUlQobV9oZWFwSXRlbSk7CisgICAg
YXV0byYgaGVhcCA9IG1faGVhcEl0ZW0tPnRpbWVySGVhcCgpOworICAgIEFTU0VSVCgmaGVhcCA9
PSAmdGhyZWFkR2xvYmFsVGltZXJIZWFwKCkpOworICAgIEFTU0VSVCghaGVhcC5pc0VtcHR5KCkp
OworICAgIEFTU0VSVChtX2hlYXBJdGVtLT5pc0luSGVhcCgpKTsKKyAgICBBU1NFUlQobV9oZWFw
SXRlbS0+aGVhcEluZGV4KCkgPCBtX2hlYXBJdGVtLT50aW1lckhlYXAoKS5zaXplKCkpOworICAg
IEFTU0VSVChoZWFwW21faGVhcEl0ZW0tPmhlYXBJbmRleCgpXSA9PSBtX2hlYXBJdGVtKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gaGVhcC5zaXplKCk7IGkgPCBzaXplOyBpKysp
CisgICAgICAgIEFTU0VSVChoZWFwW2ldLT5oZWFwSW5kZXgoKSA9PSBpKTsKKyNlbmRpZgogfQog
CiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAg
IC8vIFRpbWVycyBzaG91bGQgYmUgaW4gdGhlIGhlYXAgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZl
IGEgbm9uLXplcm8gbmV4dCBmaXJlIHRpbWUuCi0gICAgQVNTRVJUKGluSGVhcCgpID09IHN0YXRp
Y19jYXN0PGJvb2w+KG1fbmV4dEZpcmVUaW1lKSk7CisgICAgQVNTRVJUKGluSGVhcCgpID09IHN0
YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGltZSgpKSk7CiAgICAgaWYgKGluSGVhcCgpKQogICAg
ICAgICBjaGVja0hlYXBJbmRleCgpOwogfQogCiB2b2lkIFRpbWVyQmFzZTo6aGVhcERlY3JlYXNl
S2V5KCkKIHsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0RmlyZVRpbWUpKTsK
KyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8Ym9vbD4obmV4dEZpcmVUaW1lKCkpKTsKKyAgICBBU1NF
UlQobV9oZWFwSXRlbSk7CiAgICAgY2hlY2tIZWFwSW5kZXgoKTsKLSAgICBUaW1lckJhc2UqKiBo
ZWFwRGF0YSA9IHRpbWVySGVhcCgpLmRhdGEoKTsKLSAgICBwdXNoX2hlYXAoVGltZXJIZWFwSXRl
cmF0b3IoaGVhcERhdGEpLCBUaW1lckhlYXBJdGVyYXRvcihoZWFwRGF0YSArIG1faGVhcEluZGV4
ICsgMSksIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb24oKSk7CisgICAgYXV0byogaGVhcERhdGEg
PSBtX2hlYXBJdGVtLT50aW1lckhlYXAoKS5kYXRhKCk7CisgICAgcHVzaF9oZWFwKFRpbWVySGVh
cEl0ZXJhdG9yKGhlYXBEYXRhKSwgVGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEgKyBtX2hlYXBJ
dGVtLT5oZWFwSW5kZXgoKSArIDEpLCBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uKCkpOwogICAg
IGNoZWNrSGVhcEluZGV4KCk7CiB9CiAKIGlubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcERlbGV0
ZSgpCiB7Ci0gICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxib29sPihtX25leHRGaXJlVGltZSkpOwor
ICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Ym9vbD4obmV4dEZpcmVUaW1lKCkpKTsKICAgICBoZWFw
UG9wKCk7Ci0gICAgdGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOwotICAgIG1faGVhcEluZGV4ID0g
LTE7CisgICAgbV9oZWFwSXRlbS0+dGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOworICAgIG1faGVh
cEl0ZW0tPnNldE5vdEluSGVhcCgpOwogfQogCiB2b2lkIFRpbWVyQmFzZTo6aGVhcERlbGV0ZU1p
bigpCiB7Ci0gICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxib29sPihtX25leHRGaXJlVGltZSkpOwor
ICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Ym9vbD4obmV4dEZpcmVUaW1lKCkpKTsKICAgICBoZWFw
UG9wTWluKCk7Ci0gICAgdGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOwotICAgIG1faGVhcEluZGV4
ID0gLTE7CisgICAgbV9oZWFwSXRlbS0+dGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOworICAgIG1f
aGVhcEl0ZW0tPnNldE5vdEluSGVhcCgpOwogfQogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6Omhl
YXBJbmNyZWFzZUtleSgpCiB7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KG1fbmV4dEZp
cmVUaW1lKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGltZSgpKSk7
CiAgICAgaGVhcFBvcCgpOwogICAgIGhlYXBEZWNyZWFzZUtleSgpOwogfQpAQCAtMjk2LDgxICsz
NjEsMTA1IEBAIGlubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcEluY3JlYXNlS2V5KCkKIGlubGlu
ZSB2b2lkIFRpbWVyQmFzZTo6aGVhcEluc2VydCgpCiB7CiAgICAgQVNTRVJUKCFpbkhlYXAoKSk7
Ci0gICAgdGltZXJIZWFwKCkuYXBwZW5kKHRoaXMpOwotICAgIG1faGVhcEluZGV4ID0gdGltZXJI
ZWFwKCkuc2l6ZSgpIC0gMTsKKyAgICBBU1NFUlQobV9oZWFwSXRlbSk7CisgICAgYXV0byYgaGVh
cCA9IG1faGVhcEl0ZW0tPnRpbWVySGVhcCgpOworICAgIGhlYXAuYXBwZW5kKG1faGVhcEl0ZW0u
Y29weVJlZigpKTsKKyAgICBtX2hlYXBJdGVtLT5zZXRIZWFwSW5kZXgoaGVhcC5zaXplKCkgLSAx
KTsKICAgICBoZWFwRGVjcmVhc2VLZXkoKTsKIH0KIAogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpo
ZWFwUG9wKCkKIHsKKyAgICBBU1NFUlQobV9oZWFwSXRlbSk7CiAgICAgLy8gVGVtcG9yYXJpbHkg
Zm9yY2UgdGhpcyB0aW1lciB0byBoYXZlIHRoZSBtaW5pbXVtIGtleSBzbyB3ZSBjYW4gcG9wIGl0
LgotICAgIE1vbm90b25pY1RpbWUgZmlyZVRpbWUgPSBtX25leHRGaXJlVGltZTsKLSAgICBtX25l
eHRGaXJlVGltZSA9IC1Nb25vdG9uaWNUaW1lOjppbmZpbml0eSgpOworICAgIE1vbm90b25pY1Rp
bWUgZmlyZVRpbWUgPSBtX2hlYXBJdGVtLT50aW1lOworICAgIG1faGVhcEl0ZW0tPnRpbWUgPSAt
TW9ub3RvbmljVGltZTo6aW5maW5pdHkoKTsKICAgICBoZWFwRGVjcmVhc2VLZXkoKTsKICAgICBo
ZWFwUG9wTWluKCk7Ci0gICAgbV9uZXh0RmlyZVRpbWUgPSBmaXJlVGltZTsKKyAgICBtX2hlYXBJ
dGVtLT50aW1lID0gZmlyZVRpbWU7CiB9CiAKIHZvaWQgVGltZXJCYXNlOjpoZWFwUG9wTWluKCkK
IHsKLSAgICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAoKS5maXJzdCgpKTsKKyAgICBBU1NFUlQo
bV9oZWFwSXRlbSA9PSBtX2hlYXBJdGVtLT50aW1lckhlYXAoKS5maXJzdCgpKTsKICAgICBjaGVj
a0hlYXBJbmRleCgpOwotICAgIFZlY3RvcjxUaW1lckJhc2UqPiYgaGVhcCA9IHRpbWVySGVhcCgp
OwotICAgIFRpbWVyQmFzZSoqIGhlYXBEYXRhID0gaGVhcC5kYXRhKCk7CisgICAgYXV0byYgaGVh
cCA9IG1faGVhcEl0ZW0tPnRpbWVySGVhcCgpOworICAgIGF1dG8qIGhlYXBEYXRhID0gaGVhcC5k
YXRhKCk7CiAgICAgcG9wX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEpLCBUaW1lckhl
YXBJdGVyYXRvcihoZWFwRGF0YSArIGhlYXAuc2l6ZSgpKSwgVGltZXJIZWFwTGVzc1RoYW5GdW5j
dGlvbigpKTsKICAgICBjaGVja0hlYXBJbmRleCgpOwotICAgIEFTU0VSVCh0aGlzID09IHRpbWVy
SGVhcCgpLmxhc3QoKSk7CisgICAgQVNTRVJUKG1faGVhcEl0ZW0gPT0gbV9oZWFwSXRlbS0+dGlt
ZXJIZWFwKCkubGFzdCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHBhcmVudEhlYXBQcm9w
ZXJ0eUhvbGRzKGNvbnN0IFRpbWVyQmFzZSogY3VycmVudCwgY29uc3QgVmVjdG9yPFRpbWVyQmFz
ZSo+JiBoZWFwLCB1bnNpZ25lZCBjdXJyZW50SW5kZXgpCit2b2lkIFRpbWVyQmFzZTo6aGVhcERl
bGV0ZU51bGxNaW4oVGhyZWFkVGltZXJIZWFwJiBoZWFwKQoreworICAgIFJFTEVBU0VfQVNTRVJU
KCFoZWFwLmZpcnN0KCktPmhhc1RpbWVyKCkpOworICAgIGhlYXAuZmlyc3QoKS0+dGltZSA9IC1N
b25vdG9uaWNUaW1lOjppbmZpbml0eSgpOworICAgIGF1dG8qIGhlYXBEYXRhID0gaGVhcC5kYXRh
KCk7CisgICAgcG9wX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEpLCBUaW1lckhlYXBJ
dGVyYXRvcihoZWFwRGF0YSArIGhlYXAuc2l6ZSgpKSwgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlv
bigpKTsKKyAgICBoZWFwLnJlbW92ZUxhc3QoKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHBh
cmVudEhlYXBQcm9wZXJ0eUhvbGRzKGNvbnN0IFRpbWVyQmFzZSogY3VycmVudCwgY29uc3QgVGhy
ZWFkVGltZXJIZWFwJiBoZWFwLCB1bnNpZ25lZCBjdXJyZW50SW5kZXgpCiB7CiAgICAgaWYgKCFj
dXJyZW50SW5kZXgpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHVuc2lnbmVkIHBhcmVudElu
ZGV4ID0gKGN1cnJlbnRJbmRleCAtIDEpIC8gMjsKLSAgICBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0
aW9uIGNvbXBhcmVIZWFwUG9zaXRpb247Ci0gICAgcmV0dXJuIGNvbXBhcmVIZWFwUG9zaXRpb24o
Y3VycmVudCwgaGVhcFtwYXJlbnRJbmRleF0pOworICAgIHJldHVybiBUaW1lckhlYXBMZXNzVGhh
bkZ1bmN0aW9uOjpjb21wYXJlKCpjdXJyZW50LCBoZWFwW3BhcmVudEluZGV4XSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgYm9vbCBjaGlsZEhlYXBQcm9wZXJ0eUhvbGRzKGNvbnN0IFRpbWVyQmFzZSog
Y3VycmVudCwgY29uc3QgVmVjdG9yPFRpbWVyQmFzZSo+JiBoZWFwLCB1bnNpZ25lZCBjaGlsZElu
ZGV4KQorc3RhdGljIGlubGluZSBib29sIGNoaWxkSGVhcFByb3BlcnR5SG9sZHMoY29uc3QgVGlt
ZXJCYXNlKiBjdXJyZW50LCBjb25zdCBUaHJlYWRUaW1lckhlYXAmIGhlYXAsIHVuc2lnbmVkIGNo
aWxkSW5kZXgpCiB7CiAgICAgaWYgKGNoaWxkSW5kZXggPj0gaGVhcC5zaXplKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb24gY29tcGFyZUhlYXBQ
b3NpdGlvbjsKLSAgICByZXR1cm4gY29tcGFyZUhlYXBQb3NpdGlvbihoZWFwW2NoaWxkSW5kZXhd
LCBjdXJyZW50KTsKKyAgICByZXR1cm4gVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbjo6Y29tcGFy
ZShoZWFwW2NoaWxkSW5kZXhdLCAqY3VycmVudCk7CiB9CiAKIGJvb2wgVGltZXJCYXNlOjpoYXNW
YWxpZEhlYXBQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbmV4dEZpcmVUaW1lKTsK
KyAgICBBU1NFUlQobmV4dEZpcmVUaW1lKCkpOworICAgIEFTU0VSVChtX2hlYXBJdGVtKTsKICAg
ICBpZiAoIWluSGVhcCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gQ2hlY2sgaWYg
dGhlIGhlYXAgcHJvcGVydHkgc3RpbGwgaG9sZHMgd2l0aCB0aGUgbmV3IGZpcmUgdGltZS4gSWYg
aXQgZG9lcyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLgogICAgIC8vIFRoaXMgYXNzdW1l
cyB0aGF0IHRoZSBTVEwgaGVhcCBpcyBhIHN0YW5kYXJkIGJpbmFyeSBoZWFwLiBJbiBhbiB1bmxp
a2VseSBldmVudCBpdCBpcyBub3QsIHRoZSBhc3NlcnRpb25zCiAgICAgLy8gaW4gdXBkYXRlSGVh
cElmTmVlZGVkKCkgd2lsbCBnZXQgaGl0LgotICAgIGNvbnN0IFZlY3RvcjxUaW1lckJhc2UqPiYg
aGVhcCA9IHRpbWVySGVhcCgpOwotICAgIGlmICghcGFyZW50SGVhcFByb3BlcnR5SG9sZHModGhp
cywgaGVhcCwgbV9oZWFwSW5kZXgpKQorICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBtX2hlYXBJdGVt
LT50aW1lckhlYXAoKTsKKyAgICB1bnNpZ25lZCBoZWFwSW5kZXggPSBtX2hlYXBJdGVtLT5oZWFw
SW5kZXgoKTsKKyAgICBpZiAoIXBhcmVudEhlYXBQcm9wZXJ0eUhvbGRzKHRoaXMsIGhlYXAsIGhl
YXBJbmRleCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBjaGlsZEluZGV4
MSA9IDIgKiBtX2hlYXBJbmRleCArIDE7CisgICAgdW5zaWduZWQgY2hpbGRJbmRleDEgPSAyICog
aGVhcEluZGV4ICsgMTsKICAgICB1bnNpZ25lZCBjaGlsZEluZGV4MiA9IGNoaWxkSW5kZXgxICsg
MTsKICAgICByZXR1cm4gY2hpbGRIZWFwUHJvcGVydHlIb2xkcyh0aGlzLCBoZWFwLCBjaGlsZElu
ZGV4MSkgJiYgY2hpbGRIZWFwUHJvcGVydHlIb2xkcyh0aGlzLCBoZWFwLCBjaGlsZEluZGV4Mik7
CiB9CiAKIHZvaWQgVGltZXJCYXNlOjp1cGRhdGVIZWFwSWZOZWVkZWQoTW9ub3RvbmljVGltZSBv
bGRUaW1lKQogewotICAgIGlmIChtX25leHRGaXJlVGltZSAmJiBoYXNWYWxpZEhlYXBQb3NpdGlv
bigpKQorICAgIGF1dG8gZmlyZVRpbWUgPSBuZXh0RmlyZVRpbWUoKTsKKyAgICBpZiAoZmlyZVRp
bWUgJiYgaGFzVmFsaWRIZWFwUG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotI2lmbmRlZiBO
REVCVUcKLSAgICBpbnQgb2xkSGVhcEluZGV4ID0gbV9oZWFwSW5kZXg7CisKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG9sZEhlYXBJbmRleDsKKyAgICBpZiAo
bV9oZWFwSXRlbS0+aXNJbkhlYXAoKSkKKyAgICAgICAgb2xkSGVhcEluZGV4ID0gbV9oZWFwSXRl
bS0+aGVhcEluZGV4KCk7CiAjZW5kaWYKKwogICAgIGlmICghb2xkVGltZSkKICAgICAgICAgaGVh
cEluc2VydCgpOwotICAgIGVsc2UgaWYgKCFtX25leHRGaXJlVGltZSkKKyAgICBlbHNlIGlmICgh
ZmlyZVRpbWUpCiAgICAgICAgIGhlYXBEZWxldGUoKTsKLSAgICBlbHNlIGlmIChtX25leHRGaXJl
VGltZSA8IG9sZFRpbWUpCisgICAgZWxzZSBpZiAoZmlyZVRpbWUgPCBvbGRUaW1lKQogICAgICAg
ICBoZWFwRGVjcmVhc2VLZXkoKTsKICAgICBlbHNlCiAgICAgICAgIGhlYXBJbmNyZWFzZUtleSgp
OwotICAgIEFTU0VSVChtX2hlYXBJbmRleCAhPSBvbGRIZWFwSW5kZXgpOworCisjaWYgIUFTU0VS
VF9ESVNBQkxFRAorICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXdIZWFwSW5kZXg7CisgICAgaWYg
KG1faGVhcEl0ZW0tPmlzSW5IZWFwKCkpCisgICAgICAgIG5ld0hlYXBJbmRleCA9IG1faGVhcEl0
ZW0tPmhlYXBJbmRleCgpOworICAgIEFTU0VSVChuZXdIZWFwSW5kZXggIT0gb2xkSGVhcEluZGV4
KTsKKyNlbmRpZgorCiAgICAgQVNTRVJUKCFpbkhlYXAoKSB8fCBoYXNWYWxpZEhlYXBQb3NpdGlv
bigpKTsKIH0KIApAQCAtMzgzLDEyICs0NzIsOCBAQCB2b2lkIFRpbWVyQmFzZTo6c2V0TmV4dEZp
cmVUaW1lKE1vbm90b25pCiAgICAgaWYgKG1fdW5hbGlnbmVkTmV4dEZpcmVUaW1lICE9IG5ld1Rp
bWUpCiAgICAgICAgIG1fdW5hbGlnbmVkTmV4dEZpcmVUaW1lID0gbmV3VGltZTsKIAotICAgIC8v
IEFjY2Vzc2luZyB0aHJlYWQgZ2xvYmFsIGRhdGEgaXMgc2xvdy4gQ2FjaGUgdGhlIGhlYXAgcG9p
bnRlci4KLSAgICBpZiAoIW1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwKQotICAgICAgICBt
X2NhY2hlZFRocmVhZEdsb2JhbFRpbWVySGVhcCA9ICZ0aHJlYWRHbG9iYWxUaW1lckhlYXAoKTsK
LQogICAgIC8vIEtlZXAgaGVhcCB2YWxpZCB3aGlsZSBjaGFuZ2luZyB0aGUgbmV4dC1maXJlIHRp
bWUuCi0gICAgTW9ub3RvbmljVGltZSBvbGRUaW1lID0gbV9uZXh0RmlyZVRpbWU7CisgICAgTW9u
b3RvbmljVGltZSBvbGRUaW1lID0gbmV4dEZpcmVUaW1lKCk7CiAgICAgLy8gRG9uJ3QgcmVhbGln
biB6ZXJvLWRlbGF5IHRpbWVycy4KICAgICBpZiAobmV3VGltZSkgewogICAgICAgICBpZiAoYXV0
byBuZXdBbGlnbmVkVGltZSA9IGFsaWduZWRGaXJlVGltZShuZXdUaW1lKSkKQEAgLTM5NiwxNiAr
NDgxLDIwIEBAIHZvaWQgVGltZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUoTW9ub3RvbmkKICAgICB9
CiAKICAgICBpZiAob2xkVGltZSAhPSBuZXdUaW1lKSB7Ci0gICAgICAgIG1fbmV4dEZpcmVUaW1l
ID0gbmV3VGltZTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhcnQgb2YgVGhy
ZWFkVGltZXJzLCBvciBhbm90aGVyIHBlci10aHJlYWQgc3RydWN0dXJlLgogICAgICAgICBzdGF0
aWMgc3RkOjphdG9taWM8dW5zaWduZWQ+IGN1cnJlbnRIZWFwSW5zZXJ0aW9uT3JkZXI7Ci0gICAg
ICAgIG1faGVhcEluc2VydGlvbk9yZGVyID0gY3VycmVudEhlYXBJbnNlcnRpb25PcmRlcisrOwor
ICAgICAgICBhdXRvIG5ld09yZGVyID0gY3VycmVudEhlYXBJbnNlcnRpb25PcmRlcisrOworCisg
ICAgICAgIGlmICghbV9oZWFwSXRlbSkKKyAgICAgICAgICAgIG1faGVhcEl0ZW0gPSBUaHJlYWRU
aW1lckhlYXBJdGVtOjpjcmVhdGUoKnRoaXMsIG5ld1RpbWUsIDApOworICAgICAgICBtX2hlYXBJ
dGVtLT50aW1lID0gbmV3VGltZTsKKyAgICAgICAgbV9oZWFwSXRlbS0+aW5zZXJ0aW9uT3JkZXIg
PSBuZXdPcmRlcjsKIAotICAgICAgICBib29sIHdhc0ZpcnN0VGltZXJJbkhlYXAgPSBtX2hlYXBJ
bmRleCA9PSAwOworICAgICAgICBib29sIHdhc0ZpcnN0VGltZXJJbkhlYXAgPSBtX2hlYXBJdGVt
LT5pc0ZpcnN0SW5IZWFwKCk7CiAKICAgICAgICAgdXBkYXRlSGVhcElmTmVlZGVkKG9sZFRpbWUp
OwogCi0gICAgICAgIGJvb2wgaXNGaXJzdFRpbWVySW5IZWFwID0gbV9oZWFwSW5kZXggPT0gMDsK
KyAgICAgICAgYm9vbCBpc0ZpcnN0VGltZXJJbkhlYXAgPSBtX2hlYXBJdGVtLT5pc0ZpcnN0SW5I
ZWFwKCk7CiAKICAgICAgICAgaWYgKHdhc0ZpcnN0VGltZXJJbkhlYXAgfHwgaXNGaXJzdFRpbWVy
SW5IZWFwKQogICAgICAgICAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnVw
ZGF0ZVNoYXJlZFRpbWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgJKHJldmlzaW9u
IDIzOTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJUaHJlYWRU
aW1lcnMuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CkBAIC0zMyw2ICszNCw3IEBACiAjaW5j
bHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKQEAgLTQwLDEwICs0Miw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gVGltZSBpbnRlcnZhbHMgYXJlIGFsbCBp
biBzZWNvbmRzLgotCi1jbGFzcyBUaW1lckhlYXBFbGVtZW50OwotCiBjbGFzcyBUaW1lckJhc2Ug
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbWVyQmFzZSk7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC02Myw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTZWNvbmRzIG5leHRV
bmFsaWduZWRGaXJlSW50ZXJ2YWwoKSBjb25zdDsKICAgICBTZWNvbmRzIHJlcGVhdEludGVydmFs
KCkgY29uc3QgeyByZXR1cm4gbV9yZXBlYXRJbnRlcnZhbDsgfQogCi0gICAgdm9pZCBhdWdtZW50
RmlyZUludGVydmFsKFNlY29uZHMgZGVsdGEpIHsgc2V0TmV4dEZpcmVUaW1lKG1fbmV4dEZpcmVU
aW1lICsgZGVsdGEpOyB9CisgICAgdm9pZCBhdWdtZW50RmlyZUludGVydmFsKFNlY29uZHMgZGVs
dGEpIHsgc2V0TmV4dEZpcmVUaW1lKG1faGVhcEl0ZW0tPnRpbWUgKyBkZWx0YSk7IH0KICAgICB2
b2lkIGF1Z21lbnRSZXBlYXRJbnRlcnZhbChTZWNvbmRzIGRlbHRhKSB7IGF1Z21lbnRGaXJlSW50
ZXJ2YWwoZGVsdGEpOyBtX3JlcGVhdEludGVydmFsICs9IGRlbHRhOyB9CiAKICAgICB2b2lkIGRp
ZENoYW5nZUFsaWdubWVudEludGVydmFsKCk7CkBAIC04MCw3ICs3OCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHNldE5leHRGaXJlVGltZShNb25vdG9uaWNUaW1lKTsKIAotICAgIGJvb2wgaW5I
ZWFwKCkgY29uc3QgeyByZXR1cm4gbV9oZWFwSW5kZXggIT0gLTE7IH0KKyAgICBib29sIGluSGVh
cCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhcEl0ZW0gJiYgbV9oZWFwSXRlbS0+aXNJbkhlYXAoKTsg
fQogCiAgICAgYm9vbCBoYXNWYWxpZEhlYXBQb3NpdGlvbigpIGNvbnN0OwogICAgIHZvaWQgdXBk
YXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUgb2xkVGltZSk7CkBAIC05MiwxNyArOTAsMTUg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGhlYXBJbnNlcnQoKTsKICAgICB2b2lkIGhlYXBQb3AoKTsK
ICAgICB2b2lkIGhlYXBQb3BNaW4oKTsKKyAgICBzdGF0aWMgdm9pZCBoZWFwRGVsZXRlTnVsbE1p
bihUaHJlYWRUaW1lckhlYXAmKTsKIAotICAgIFZlY3RvcjxUaW1lckJhc2UqPiYgdGltZXJIZWFw
KCkgY29uc3QgeyBBU1NFUlQobV9jYWNoZWRUaHJlYWRHbG9iYWxUaW1lckhlYXApOyByZXR1cm4g
Km1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwOyB9CisgICAgTW9ub3RvbmljVGltZSBuZXh0
RmlyZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2hlYXBJdGVtID8gbV9oZWFwSXRlbS0+dGltZSA6
IE1vbm90b25pY1RpbWUgeyB9OyB9CiAKLSAgICBNb25vdG9uaWNUaW1lIG1fbmV4dEZpcmVUaW1l
OyAvLyAwIGlmIGluYWN0aXZlCiAgICAgTW9ub3RvbmljVGltZSBtX3VuYWxpZ25lZE5leHRGaXJl
VGltZTsgLy8gbV9uZXh0RmlyZVRpbWUgbm90IGNvbnNpZGVyaW5nIGFsaWdubWVudCBpbnRlcnZh
bAogICAgIFNlY29uZHMgbV9yZXBlYXRJbnRlcnZhbDsgLy8gMCBpZiBub3QgcmVwZWF0aW5nCi0g
ICAgc2lnbmVkIGludCBtX2hlYXBJbmRleCA6IDMxOyAvLyAtMSBpZiBub3QgaW4gaGVhcAotICAg
IGJvb2wgbV93YXNEZWxldGVkIDogMTsKLSAgICB1bnNpZ25lZCBtX2hlYXBJbnNlcnRpb25PcmRl
cjsgLy8gVXNlZCB0byBrZWVwIG9yZGVyIGFtb25nIGVxdWFsLWZpcmUtdGltZSB0aW1lcnMKLSAg
ICBWZWN0b3I8VGltZXJCYXNlKj4qIG1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwIHsgbnVs
bHB0ciB9OworICAgIGJvb2wgbV93YXNEZWxldGVkIHsgZmFsc2UgfTsKIAorICAgIFJlZlB0cjxU
aHJlYWRUaW1lckhlYXBJdGVtPiBtX2hlYXBJdGVtOwogICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFk
IHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBUaHJlYWRUaW1lcnM7
CkBAIC0xNDIsNyArMTM4LDcgQEAgaW5saW5lIGJvb2wgVGltZXJCYXNlOjppc0FjdGl2ZSgpIGNv
bnN0CiAjZWxzZQogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCBwdGhyZWFkX21h
aW5fbnAoKSB8fCBtX3RocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1f
bmV4dEZpcmVUaW1lKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obmV4dEZpcmVUaW1l
KCkpOwogfQogCiBjbGFzcyBEZWZlcnJhYmxlT25lU2hvdFRpbWVyIDogcHJvdGVjdGVkIFRpbWVy
QmFzZSB7CkluZGV4OiBXZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9B
bGwgU291cmNlLnhjc2NoZW1lCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC54Y3dvcmtzcGFjZS94Y3No
YXJlZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWUJKHJldmlzaW9uIDIzOTc4OSkK
KysrIFdlYktpdC54Y3dvcmtzcGFjZS94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2Uu
eGNzY2hlbWUJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxMCArMTQ0LDEwIEBACiAgICAgICA8TWFj
cm9FeHBhbnNpb24+CiAgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCiAgICAgICAgICAgICBC
dWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCi0gICAgICAgICAgICBCbHVlcHJpbnRJZGVu
dGlmaWVyID0gIjhEMTEwNzI2MDQ4NkNFQjgwMEU0NzA5MCIKLSAgICAgICAgICAgIEJ1aWxkYWJs
ZU5hbWUgPSAiTWluaUJyb3dzZXIuYXBwIgotICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJN
aW5pQnJvd3NlciIKLSAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVy
OlRvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2VyLnhjb2RlcHJvaiI+CisgICAgICAgICAgICBC
bHVlcHJpbnRJZGVudGlmaWVyID0gIjkzNDA5OTRBMDg1NDBDQUUwMDdGM0JDOCIKKyAgICAgICAg
ICAgIEJ1aWxkYWJsZU5hbWUgPSAiRHVtcFJlbmRlclRyZWUiCisgICAgICAgICAgICBCbHVlcHJp
bnROYW1lID0gIkR1bXBSZW5kZXJUcmVlIgorICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5l
ciA9ICJjb250YWluZXI6VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qIj4KICAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgogICAgICAgPC9NYWNyb0V4cGFu
c2lvbj4KICAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4KQEAgLTE2NywxMiArMTY3LDI1IEBACiAg
ICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCI+CiAgICAgICAgICA8QnVpbGRhYmxl
UmVmZXJlbmNlCiAgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCi0g
ICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjhEMTEwNzI2MDQ4NkNFQjgwMEU0NzA5
MCIKLSAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiTWluaUJyb3dzZXIuYXBwIgotICAgICAg
ICAgICAgQmx1ZXByaW50TmFtZSA9ICJNaW5pQnJvd3NlciIKLSAgICAgICAgICAgIFJlZmVyZW5j
ZWRDb250YWluZXIgPSAiY29udGFpbmVyOlRvb2xzL01pbmlCcm93c2VyL01pbmlCcm93c2VyLnhj
b2RlcHJvaiI+CisgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjkzNDA5OTRBMDg1
NDBDQUUwMDdGM0JDOCIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiRHVtcFJlbmRlclRy
ZWUiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIkR1bXBSZW5kZXJUcmVlIgorICAgICAg
ICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6VG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qIj4KICAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJl
bmNlPgogICAgICAgPC9CdWlsZGFibGVQcm9kdWN0UnVubmFibGU+CisgICAgICA8Q29tbWFuZExp
bmVBcmd1bWVudHM+CisgICAgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudAorICAgICAgICAgICAg
YXJndW1lbnQgPSAiLi4vLi4vTGF5b3V0VGVzdHMvZmFzdC9kb20vQXR0ci9hY2Nlc3MtYWZ0ZXIt
ZWxlbWVudC1kZXN0cnVjdGlvbi5odG1sIgorICAgICAgICAgICAgaXNFbmFibGVkID0gIllFUyI+
CisgICAgICAgICA8L0NvbW1hbmRMaW5lQXJndW1lbnQ+CisgICAgICA8L0NvbW1hbmRMaW5lQXJn
dW1lbnRzPgorICAgICAgPEVudmlyb25tZW50VmFyaWFibGVzPgorICAgICAgICAgPEVudmlyb25t
ZW50VmFyaWFibGUKKyAgICAgICAgICAgIGtleSA9ICJPU19BQ1RJVklUWV9NT0RFIgorICAgICAg
ICAgICAgdmFsdWUgPSAiZGlzYWJsZSIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZRVMiPgor
ICAgICAgICAgPC9FbnZpcm9ubWVudFZhcmlhYmxlPgorICAgICAgPC9FbnZpcm9ubWVudFZhcmlh
Ymxlcz4KICAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4KICAgICAgIDwvQWRkaXRpb25hbE9wdGlv
bnM+CiAgICA8L0xhdW5jaEFjdGlvbj4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358771</attachid>
            <date>2019-01-09 17:28:28 -0800</date>
            <delta_ts>2019-01-09 18:27:53 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192975-20190109172827.patch</filename>
            <type>text/plain</type>
            <size>36031</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzOTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAxOS0wMS0wOSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBUaHJlYWRUaW1lcnMgc2hvdWxk
IG5vdCBzdG9yZSBhIHJhdyBwb2ludGVyIGluIGl0cyBoZWFwCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI5NzUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQ2ODkzOTQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisg
ICAgICAgIFJpZ2h0IG5vdywgVGhyZWFkVGltZXJzJ3MgaGVhcCBkYXRhIHN0cnVjdHVyZSBzdG9y
ZXMgYSByYXcgcG9pbnRlciB0byBUaW1lckJhc2UuIEluIG9yZGVyIHRvIGhhcmRlbiB0aGUgdGlt
ZXIgY29kZSwKKyAgICAgICAgdGhpcyBwYXRjaCByZXBsYWNlcyBpdCB3aXRoIFRocmVhZFRpbWVy
SGVhcEl0ZW0sIGEgbmV3bHkgaW50cm9kdWNlZCBzdHJ1Y3QsIHdoaWNoIGVmZmVjdGl2ZWx5IGFj
a3MgbGlrZQorICAgICAgICBXZWFrUmVmZXJlbmNlPFRpbWVyQmFzZSo+IGFzIHRoZSB0aW1lciBo
ZWFwIGFuZCBUaW1lckJhc2UgYm90aCBzdG9yZSBSZWZQdHIgdG8gaXQsIGFuZCBUaW1lckJhc2Un
cyBkZXN0cnVjdG9yIGNsZWFycworICAgICAgICB0aGUgcmF3IHBvaW50ZXIgYmFjayB0byBUaW1l
ckJhc2UqLgorCisgICAgICAgIFRoaXMgYXBwcm9hY2ggd2FzIHRha2VuIGluc3RlYWQgb2YgYW4g
b3V0LXJpZ2h0IGFkb3B0YXRpb24gb2YgV2Vha1B0ciBzaW5jZSB0aGUgaGVhcCBkYXRhIHN0cnVj
dHVyZSByZXF1aXJlcyBlYWNoIG5vZGUKKyAgICAgICAgaW4gdGhlIGhlYXAgdG8gaGF2ZSBhIGZp
eGVkICJwcmlvcml0eSIgeWV0IFdlYWtQdHIgd2l0aCBubyB2YWxpZCBwb2ludGVyIGJhY2sgdG8g
VGltZXJCYXNlIHdvdWxkIGVmZmVjdGl2ZWx5IGxvc2UgaXRzCisgICAgICAgICJwcmlvcml0eSIg
dGhlcmVieSBjb3JydXB0aW5nIHRoZSBoZWFwIGRhdGEgc3RydWN0dXJlLiBUaGF0IGlzLCBlYWNo
IGl0ZW0gaW4gdGhlIGhlYXAgbXVzdCByZW1lbWJlciBpdHMgZmlyZSB0aW1lIGFuZAorICAgICAg
ICBpbnNlcnRpb24gb3JkZXIgZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIFRpbWVyQmFzZSBoYWQg
Z29uZSBhd2F5ICh0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4gYnV0IHRoZSB3aG9sZSBwb2ludCBv
ZiB0aGlzCisgICAgICAgIGhhcmRlbmluZyBpcyB0byBtYWtlIGl0IHdvcmsgZXZlbiBpbiB0aGUg
cHJlY2Vuc2Ugb2Ygc3VjaCBhIGJ1ZykuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG1vdmVz
IHRoZSBoZWFwIGluZGV4IGluIFRpbWVyQmFzZSB0byBUaHJlYWRUaW1lckhlYXBJdGVtLCBhbmQg
cmVwbGFjZXMgdGhlIHBvaW50ZXIgdG8gdGhlIGhlYXAgdmVjdG9yCisgICAgICAgIGluIFRpbWVy
QmFzZSBieSBhIHJlZmVyZW5jZSB0byBUaHJlYWRUaW1lcnMgaW4gVGhyZWFkVGltZXJIZWFwSXRl
bS4gTm90ZSB0aGF0IFRocmVhZFRpbWVycyBpcyBhIHBlci10aHJlYWQgc2luZ2xldG9uLgorCisg
ICAgICAgIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGhhcmRlbmluZyB3YXMgdGVzdGVkIGJ5IGNv
bW1lbnRpbmcgb3V0IHRoZSBjYWxsIHRvIHN0b3AoKSBhbmQgIWlzSW5IZWFwKCkgYXNzZXJ0aW9u
IGluCisgICAgICAgIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpIGFzIHdlbGwgYXMgdGhlICFpc0lu
SGVhcCgpIGFzc2VydGlvbiBpbiBUaHJlYWRUaW1lckhlYXBJdGVtOjpjbGVhclRpbWVyKCkgYW5k
IG9ic2VydmluZyB0aGF0CisgICAgICAgIGxheW91dCB0ZXN0cyBydW4gc3VjY2Vzc2Z1bGx5IHdp
dGhvdXQgaGl0dGluZyBhbnkgZGVidWcgYXNzZXJ0aW9ucy4KKworICAgICAgICBObyBuZXcgdGVz
dHMgc2luY2UgdGhlcmUgc2hvdWxkIGJlIG5vIG9ic2VydmFibGUgYmVoYXZpb3IgZGlmZmVyZW5j
ZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRXhwb3J0
IFRocmVhZFRpbWVycy5oIGFzIGEgcHJpdmF0ZSBoZWFkZXIgc2luY2UgaXQncyBub3cgaW5jbHVk
ZWQgaW4gVGltZXIuaAorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnVwZGF0ZVNoYXJlZFRpbWVyKTogRGVsZXRlIFRo
cmVhZFRpbWVySGVhcEl0ZW0ncyB3aXRoIG51bGxwdHIgVGltZXJCYXNlKiAoVGltZXJCYXNlIGhh
ZAorICAgICAgICBhbHJlYWR5IGJlZW4gZGVsZXRlZCkuIFRoaXMgc2hvdWxkIG9ubHkgaGFwcGVu
IHdoZW4gVGltZXJCYXNlJ3MgZGVzdHJ1Y3RvciBmYWlsZWQgdG8gcmVtb3ZlIGl0c2VsZiBmcm9t
IHRoZSB0aW1lciBoZWFwLAorICAgICAgICB3aGljaCBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzaGFyZWRUaW1lckZpcmVkSW50ZXJuYWwpOiBE
aXR0by4gQWxzbyByZW1vdmVkIHRoZSByZWR1bmRhbnQgY29kZSB3aGljaCBoYWQgcmVtb3ZlZCB0
aGUgdGltZXIKKyAgICAgICAgZnJvbSB0aGUgaGVhcCBzaW5jZSBzZXROZXh0RmlyZVRpbWUgZG9l
cyB0aGUgcmVtb3ZhbCBhbHJlYWR5LgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5o
OiBPdXRkZW50ZWQgdGhlIHdob2xlIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1l
cnM6OnRpbWVySGVhcCk6IFdlIHVzZSBWZWN0b3I8UmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+
PiBpbnN0ZWFkIG9mIFZlY3RvcjxSZWY8fj4+IHNpbmNlIFJlZjx+PgorICAgICAgICBkb2Vzbid0
IGhhdmUgYSBjb3B5IGNvbnN0cnVjdG9yIHdoaWNoIGlzIHVzZWQgYnkgc3RkOjpwdXNoX2hlYXAu
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtOjpoYXNUaW1lciBjb25zdCk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJIZWFwSXRlbTo6c2V0Tm90SW5IZWFwKTogQWRk
ZWQuIFRocmVhZFRpbWVySGVhcEl0ZW0gdXNlcyB1bnNpZ25lZCAtMSBhcyB0aGUgc2luZ2xlIHZh
bHVlIHdoaWNoCisgICAgICAgIHNpZ25pZmllcyB0aGUgaXRlbSBub3QgYmVpbmcgaW4gdGhlIGhl
YXAgaW5zdGVhZCBvZiBhbGwgbmVnYXRpdmUgdmFsdWVzIGFzIGluIHRoZSBvbGQgY29kZSBpbiBU
aW1lckJhc2UuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtOjppc0luSGVh
cCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJIZWFwSXRlbTo6
aXNGaXJzdEluSGVhcCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGlt
ZXJIZWFwSXRlbTo6dGltZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVy
SGVhcEl0ZW06OmNsZWFyVGltZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRp
bWVySGVhcEl0ZW06OmhlYXBJbmRleCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkVGltZXJIZWFwSXRlbTo6c2V0SGVhcEluZGV4KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lckhlYXBJdGVtOjp0aW1lckhlYXAgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0aHJlYWRHbG9iYWxU
aW1lckhlYXApOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBvbmx5IHVzZWQgaW4gYXNzZXJ0aW9ucy4K
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVySGVhcEl0ZW06OlRocmVhZFRpbWVySGVhcEl0
ZW0pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFRpbWVySGVhcEl0ZW06OmNyZWF0
ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwUG9pbnRlcjo6VGltZXJIZWFw
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckhlYXBQb2ludGVyOjpvcGVyYXRvci0+
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcFJlZmVyZW5jZTo6VGltZXJIZWFw
UmVmZXJlbmNlKTogQWRkZWQgYSBjb3B5IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6
VGltZXJIZWFwUmVmZXJlbmNlOjpjb3B5UmVmIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpUaW1lckhlYXBSZWZlcmVuY2U6Om9wZXJhdG9yIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJ
dGVtPiYgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwUG9pbnRlcjo6b3BlcmF0
b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcFJlZmVyZW5jZTo6b3BlcmF0
b3I9KTogVXNlIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4KKyAgICAgICAgKFdlYkNvcmU6OlRp
bWVySGVhcFJlZmVyZW5jZTo6c3dhcFdpdGgpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFw
UmVmZXJlbmNlOjp1cGRhdGVIZWFwSW5kZXgpOiBFeHRyYWN0ZWQgdG8gc2hhcmUgY29kZSBiZXR3
ZWVuIHR3byB2ZXJpb25zIG9mIG9wZXJhdG9yPS4KKyAgICAgICAgKFdlYkNvcmU6OnN3YXApOgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJIZWFwSXRlcmF0b3I6OlRpbWVySGVhcEl0ZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcEl0ZXJhdG9yOjpvcGVyYXRvci0+IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb246OmNvbXBhcmUpOiBB
ZGRlZCB2YXJpYW50cyB3aGljaCB0YWtlIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPi4KKyAg
ICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb246Om9wZXJhdG9yKCkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VGltZXJCYXNlOjp+VGltZXJCYXNlKTpDbGVhciB0aGUgcmF3IHBvaW50ZXIgaW4g
VGhyZWFkVGltZXJIZWFwSXRlbS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6c3RvcCk6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6Om5leHRGaXJlSW50ZXJ2YWwgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpjaGVja0hlYXBJbmRleCBjb25zdCk6IEFkZGVk
IHRoZSBjb25zaXN0ZW5jeSBjaGVjayBmb3Igb3RoZXIgaXRlbXMgaW4gdGhlIGhlYXAuCisgICAg
ICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoZWFwRGVjcmVhc2VLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6VGltZXJCYXNlOjpoZWFwRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6
aGVhcERlbGV0ZU1pbik6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBJbmNyZWFz
ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBJbnNlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoZWFwUG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVy
QmFzZTo6aGVhcFBvcE1pbik6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmhlYXBEZWxl
dGVOdWxsTWluKTogQWRkZWQuIFVzZWQgdG8gZGVsZXRlIFRocmVhZFRpbWVySGVhcEl0ZW0gd2hp
Y2ggbm8gbG9uZ2VyIGhhcyBhIHZhbGlkIFRpbWVyQmFzZS4KKyAgICAgICAgKFdlYkNvcmU6OnBh
cmVudEhlYXBQcm9wZXJ0eUhvbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkSGVhcFByb3Bl
cnR5SG9sZHMpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpoYXNWYWxpZEhlYXBQb3Np
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OnVwZGF0ZUhlYXBJZk5l
ZWRlZCk6IFR3ZWFrZWQgdGhlIGhlYXAgaW5kZXggYXNzZXJ0aW9uIGFzIGhlYXBJbmRleCgpIGl0
c2VsZiB3b3VsZCBhc3NlcnQgd2hlbiBjYWxsZWQKKyAgICAgICAgb24gYW4gaXRlbSB3aXRoIGFu
IGludmFsaWQgKC0xKSBoZWFwIGluZGV4LgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpz
ZXROZXh0RmlyZVRpbWUpOiBDcmVhdGUgVGhyZWFkVGltZXJIZWFwSXRlbS4gTm90ZSBtX2hlYXBJ
dGVtIGlzIG5ldmVyIGNsZWFyZWQgdW50aWwgdGhpcyBUaW1lckJhc2UKKyAgICAgICAgaXMgZGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVySGVhcFJlZmVyZW5jZTo6b3BlcmF0b3IgVGlt
ZXJCYXNlKiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZSk6IFJlcGxhY2VkIG1fbmV4dEZpcmVUaW1lLCBtX2hl
YXBJbmRleCwgbV9oZWFwSW5zZXJ0aW9uT3JkZXIsIGFuZCBtX2NhY2hlZFRocmVhZEdsb2JhbFRp
bWVySGVhcAorICAgICAgICBieSBtX2hlYXBJdGVtLCBSZWZQdHIgdG8gYW4gVGhyZWFkVGltZXJI
ZWFwSXRlbS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6YXVnbWVudEZpcmVJbnRlcnZh
bCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmluSGVhcCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpUaW1lckJhc2U6Om5leHRGaXJlVGltZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpUaW1lckJhc2U6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVy
QmFzZTo6IGNvbnN0KTogRGVsZXRlZC4KKwogMjAxOS0wMS0wOSAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtEYXRhbGlzdF0gQ3Jhc2ggd2hlbiBpbnB1dCB3aXRo
IGRhdGFsaXN0IGlzIGR5bmFtaWNhbGx5IGFkZGVkLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM5Nzg5KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NTIsNyArNDUyLDcgQEAKIAkJMTU5NzQxREIxQjdEMTQwMTAwMjAxQzky
IC8qIEpTTWVkaWFEZXZpY2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNTdDQzI2MjFCN0MxQ0E0MDBEOEQwNzUgLyogSlNNZWRpYURldmljZUlu
Zm8uaCAqLzsgfTsKIAkJMTVDNzcwOEQxMDBEM0M2QjAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1Qzc3MDhB
MTAwRDNDNkEwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTVDNzcwOTMxMDBEM0NBODAwNUJBMjY3IC8q
IEpTVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTVDNzcwOTExMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5oICov
OyB9OwotCQkxODVCQ0YyOTBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODVCQ0YyNzBGMzI3OUNF
MDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmggKi87IH07CisJCTE4NUJDRjI5MEYzMjc5Q0UwMDBF
QTI2MiAvKiBUaHJlYWRUaW1lcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE4NUJDRjI3MEYzMjc5Q0UwMDBFQTI2MiAvKiBUaHJlYWRUaW1lcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxODg2MDRC
NDBGMkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4ODYwNEIyMEYyRTY1NEEwMDBCNjQ0MyAvKiBET01UaW1l
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE4
RjgzMUI4MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2FkZXJQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThGODMxQjcwRkQ0OEM3ODAwRDhD
NTZCIC8qIFdvcmtlckxvYWRlclByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTkyMTMyNzUxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxOTIxMzI3MjExQzBFNkJCMDA0NTYyMzggLyogU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRp
bWVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGlt
ZXJzLmNwcAkocmV2aXNpb24gMjM5Nzg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkVGltZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTIgKzc1LDE4IEBAIHZvaWQgVGhy
ZWFkVGltZXJzOjp1cGRhdGVTaGFyZWRUaW1lcigpCiB7CiAgICAgaWYgKCFtX3NoYXJlZFRpbWVy
KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCisgICAgd2hpbGUgKCFtX3RpbWVySGVhcC5p
c0VtcHR5KCkgJiYgIW1fdGltZXJIZWFwLmZpcnN0KCktPmhhc1RpbWVyKCkpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFRpbWVyQmFzZTo6aGVhcERlbGV0ZU51bGxN
aW4obV90aW1lckhlYXApOworICAgIH0KKyAgICBBU1NFUlQobV90aW1lckhlYXAuaXNFbXB0eSgp
IHx8IG1fdGltZXJIZWFwLmZpcnN0KCktPmhhc1RpbWVyKCkpOworCiAgICAgaWYgKG1fZmlyaW5n
VGltZXJzIHx8IG1fdGltZXJIZWFwLmlzRW1wdHkoKSkgewogICAgICAgICBtX3BlbmRpbmdTaGFy
ZWRUaW1lckZpcmVUaW1lID0gTW9ub3RvbmljVGltZSB7IH07CiAgICAgICAgIG1fc2hhcmVkVGlt
ZXItPnN0b3AoKTsKICAgICB9IGVsc2UgewotICAgICAgICBNb25vdG9uaWNUaW1lIG5leHRGaXJl
VGltZSA9IG1fdGltZXJIZWFwLmZpcnN0KCktPm1fbmV4dEZpcmVUaW1lOworICAgICAgICBNb25v
dG9uaWNUaW1lIG5leHRGaXJlVGltZSA9IG1fdGltZXJIZWFwLmZpcnN0KCktPnRpbWU7CiAgICAg
ICAgIE1vbm90b25pY1RpbWUgY3VycmVudE1vbm90b25pY1RpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKICAgICAgICAgaWYgKG1fcGVuZGluZ1NoYXJlZFRpbWVyRmlyZVRpbWUpIHsKICAgICAg
ICAgICAgIC8vIE5vIG5lZWQgdG8gcmVzdGFydCB0aGUgdGltZXIgaWYgYm90aCB0aGUgcGVuZGlu
ZyBmaXJlIHRpbWUgYW5kIHRoZSBuZXcgZmlyZSB0aW1lIGFyZSBpbiB0aGUgcGFzdC4KQEAgLTEw
NCwxNyArMTEwLDIzIEBAIHZvaWQgVGhyZWFkVGltZXJzOjpzaGFyZWRUaW1lckZpcmVkSW50ZXIK
ICAgICBNb25vdG9uaWNUaW1lIGZpcmVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAg
TW9ub3RvbmljVGltZSB0aW1lVG9RdWl0ID0gZmlyZVRpbWUgKyBtYXhEdXJhdGlvbk9mRmlyaW5n
VGltZXJzOwogCi0gICAgd2hpbGUgKCFtX3RpbWVySGVhcC5pc0VtcHR5KCkgJiYgbV90aW1lckhl
YXAuZmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUgPD0gZmlyZVRpbWUpIHsKLSAgICAgICAgVGltZXJC
YXNlKiB0aW1lciA9IG1fdGltZXJIZWFwLmZpcnN0KCk7Ci0gICAgICAgIHRpbWVyLT5tX25leHRG
aXJlVGltZSA9IE1vbm90b25pY1RpbWUgeyB9OwotICAgICAgICB0aW1lci0+bV91bmFsaWduZWRO
ZXh0RmlyZVRpbWUgPSBNb25vdG9uaWNUaW1lIHsgfTsKLSAgICAgICAgdGltZXItPmhlYXBEZWxl
dGVNaW4oKTsKKyAgICB3aGlsZSAoIW1fdGltZXJIZWFwLmlzRW1wdHkoKSkgeworICAgICAgICBS
ZWY8VGhyZWFkVGltZXJIZWFwSXRlbT4gaXRlbSA9ICptX3RpbWVySGVhcC5maXJzdCgpOworICAg
ICAgICBBU1NFUlQoaXRlbS0+aGFzVGltZXIoKSk7CisgICAgICAgIGlmICghaXRlbS0+aGFzVGlt
ZXIoKSkgeworICAgICAgICAgICAgVGltZXJCYXNlOjpoZWFwRGVsZXRlTnVsbE1pbihtX3RpbWVy
SGVhcCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChp
dGVtLT50aW1lID4gZmlyZVRpbWUpCisgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBTZWNv
bmRzIGludGVydmFsID0gdGltZXItPnJlcGVhdEludGVydmFsKCk7Ci0gICAgICAgIHRpbWVyLT5z
ZXROZXh0RmlyZVRpbWUoaW50ZXJ2YWwgPyBmaXJlVGltZSArIGludGVydmFsIDogTW9ub3Rvbmlj
VGltZSB7IH0pOworICAgICAgICBhdXRvJiB0aW1lciA9IGl0ZW0tPnRpbWVyKCk7CisgICAgICAg
IFNlY29uZHMgaW50ZXJ2YWwgPSB0aW1lci5yZXBlYXRJbnRlcnZhbCgpOworICAgICAgICB0aW1l
ci5zZXROZXh0RmlyZVRpbWUoaW50ZXJ2YWwgPyBmaXJlVGltZSArIGludGVydmFsIDogTW9ub3Rv
bmljVGltZSB7IH0pOwogCiAgICAgICAgIC8vIE9uY2UgdGhlIHRpbWVyIGhhcyBiZWVuIGZpcmVk
LCBpdCBtYXkgYmUgZGVsZXRlZCwgc28gZG8gbm90aGluZyBlbHNlIHdpdGggaXQgYWZ0ZXIgdGhp
cyBwb2ludC4KLSAgICAgICAgdGltZXItPmZpcmVkKCk7CisgICAgICAgIGl0ZW0tPnRpbWVyKCku
ZmlyZWQoKTsKIAogICAgICAgICAvLyBDYXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUgdGltZXIgYXNr
ZWQgdGltZXJzIHRvIGZpcmUgaW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgb3Igd2UgYXJlIG92ZXIg
dGltZSBsaW1pdC4KICAgICAgICAgaWYgKCFtX2ZpcmluZ1RpbWVycyB8fCB0aW1lVG9RdWl0IDwg
TW9ub3RvbmljVGltZTo6bm93KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRUaW1lcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRU
aW1lcnMuaAkocmV2aXNpb24gMjM5Nzg5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkVGltZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDM2ICsyOSwxMDAgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIGNsYXNzIFNoYXJlZFRpbWVyOwotICAgIGNsYXNzIFRpbWVyQmFzZTsKK2NsYXNzIFNo
YXJlZFRpbWVyOworY2xhc3MgVGhyZWFkVGltZXJzOworY2xhc3MgVGltZXJCYXNlOworCitzdHJ1
Y3QgVGhyZWFkVGltZXJIZWFwSXRlbTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxUaHJlYWRUaW1l
ckhlYXBJdGVtPj4gVGhyZWFkVGltZXJIZWFwOworICAgIAorLy8gQSBjb2xsZWN0aW9uIG9mIHRp
bWVycyBwZXIgdGhyZWFkLiBLZXB0IGluIFRocmVhZEdsb2JhbERhdGEuCitjbGFzcyBUaHJlYWRU
aW1lcnMgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZFRpbWVycyk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFRocmVhZFRpbWVycygpOworCisgICAgLy8g
T24gYSB0aHJlYWQgZGlmZmVyZW50IHRoZW4gbWFpbiwgd2Ugc2hvdWxkIHNldCB0aGUgdGhyZWFk
J3MgaW5zdGFuY2Ugb2YgdGhlIFNoYXJlZFRpbWVyLgorICAgIHZvaWQgc2V0U2hhcmVkVGltZXIo
U2hhcmVkVGltZXIqKTsKKworICAgIFRocmVhZFRpbWVySGVhcCYgdGltZXJIZWFwKCkgeyByZXR1
cm4gbV90aW1lckhlYXA7IH0KKworICAgIHZvaWQgdXBkYXRlU2hhcmVkVGltZXIoKTsKKyAgICB2
b2lkIGZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOworCitwcml2YXRlOgorICAgIHZvaWQg
c2hhcmVkVGltZXJGaXJlZEludGVybmFsKCk7CisgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRF
dmVudExvb3BJbnRlcm5hbCgpOworCisgICAgVGhyZWFkVGltZXJIZWFwIG1fdGltZXJIZWFwOwor
ICAgIFNoYXJlZFRpbWVyKiBtX3NoYXJlZFRpbWVyIHsgbnVsbHB0ciB9OyAvLyBFeHRlcm5hbCBv
YmplY3QsIGNhbiBiZSBhIHJ1biBsb29wIG9uIGEgd29ya2VyIHRocmVhZC4gTm9ybWFsbHkgc2V0
L3Jlc2V0IGJ5IHdvcmtlciB0aHJlYWQuCisgICAgYm9vbCBtX2ZpcmluZ1RpbWVycyB7IGZhbHNl
IH07IC8vIFJlZW50cmFuY3kgZ3VhcmQuCisgICAgTW9ub3RvbmljVGltZSBtX3BlbmRpbmdTaGFy
ZWRUaW1lckZpcmVUaW1lOworfTsKKworc3RydWN0IFRocmVhZFRpbWVySGVhcEl0ZW0gOiBUaHJl
YWRTYWZlUmVmQ291bnRlZDxUaHJlYWRUaW1lckhlYXBJdGVtPiB7CisgICAgc3RhdGljIFJlZlB0
cjxUaHJlYWRUaW1lckhlYXBJdGVtPiBjcmVhdGUoVGltZXJCYXNlJiwgTW9ub3RvbmljVGltZSwg
dW5zaWduZWQpOworCisgICAgYm9vbCBoYXNUaW1lcigpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXI7
IH0KKyAgICBUaW1lckJhc2UmIHRpbWVyKCk7CisgICAgdm9pZCBjbGVhclRpbWVyKCk7CisKKyAg
ICBUaHJlYWRUaW1lckhlYXAmIHRpbWVySGVhcCgpIGNvbnN0OworCisgICAgdW5zaWduZWQgaGVh
cEluZGV4KCkgY29uc3Q7CisgICAgdm9pZCBzZXRIZWFwSW5kZXgodW5zaWduZWQgbmV3SW5kZXgp
OworICAgIHZvaWQgc2V0Tm90SW5IZWFwKCkgeyBtX2hlYXBJbmRleCA9IGludmFsaWRIZWFwSW5k
ZXg7IH0KKworICAgIGJvb2wgaXNJbkhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXBJbmRleCAh
PSBpbnZhbGlkSGVhcEluZGV4OyB9CisgICAgYm9vbCBpc0ZpcnN0SW5IZWFwKCkgY29uc3QgeyBy
ZXR1cm4gIW1faGVhcEluZGV4OyB9CisKKyAgICBNb25vdG9uaWNUaW1lIHRpbWU7CisgICAgdW5z
aWduZWQgaW5zZXJ0aW9uT3JkZXIgeyAwIH07CisKK3ByaXZhdGU6CisgICAgVGhyZWFkVGltZXJz
JiBtX3RocmVhZFRpbWVyczsKKyAgICBUaW1lckJhc2UqIG1fdGltZXIgeyBudWxscHRyIH07Cisg
ICAgdW5zaWduZWQgbV9oZWFwSW5kZXggeyBpbnZhbGlkSGVhcEluZGV4IH07CisKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZEhlYXBJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PigtMSk7CisKKyAgICBUaHJlYWRUaW1lckhlYXBJdGVtKFRpbWVyQmFzZSYsIE1vbm90b25pY1Rp
bWUsIHVuc2lnbmVkKTsKK307CisKK2lubGluZSBUaW1lckJhc2UmIFRocmVhZFRpbWVySGVhcEl0
ZW06OnRpbWVyKCkKK3sKKyAgICBBU1NFUlQobV90aW1lcik7CisgICAgcmV0dXJuICptX3RpbWVy
OworfQorCitpbmxpbmUgdm9pZCBUaHJlYWRUaW1lckhlYXBJdGVtOjpjbGVhclRpbWVyKCkKK3sK
KyAgICBBU1NFUlQoIWlzSW5IZWFwKCkpOworICAgIG1fdGltZXIgPSBudWxscHRyOworfQorCitp
bmxpbmUgdW5zaWduZWQgVGhyZWFkVGltZXJIZWFwSXRlbTo6aGVhcEluZGV4KCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV9oZWFwSW5kZXggIT0gaW52YWxpZEhlYXBJbmRleCk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2hlYXBJbmRleCk7Cit9CisKK2lubGluZSB2b2lkIFRo
cmVhZFRpbWVySGVhcEl0ZW06OnNldEhlYXBJbmRleCh1bnNpZ25lZCBuZXdJbmRleCkKK3sKKyAg
ICBBU1NFUlQobmV3SW5kZXggIT0gaW52YWxpZEhlYXBJbmRleCk7CisgICAgbV9oZWFwSW5kZXgg
PSBuZXdJbmRleDsKK30KIAotICAgIC8vIEEgY29sbGVjdGlvbiBvZiB0aW1lcnMgcGVyIHRocmVh
ZC4gS2VwdCBpbiBUaHJlYWRHbG9iYWxEYXRhLgotICAgIGNsYXNzIFRocmVhZFRpbWVycyB7Ci0g
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZFRpbWVycyk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgVGhyZWFkVGltZXJzKCk7Ci0KLSAgICAg
ICAgLy8gT24gYSB0aHJlYWQgZGlmZmVyZW50IHRoZW4gbWFpbiwgd2Ugc2hvdWxkIHNldCB0aGUg
dGhyZWFkJ3MgaW5zdGFuY2Ugb2YgdGhlIFNoYXJlZFRpbWVyLgotICAgICAgICB2b2lkIHNldFNo
YXJlZFRpbWVyKFNoYXJlZFRpbWVyKik7Ci0KLSAgICAgICAgVmVjdG9yPFRpbWVyQmFzZSo+JiB0
aW1lckhlYXAoKSB7IHJldHVybiBtX3RpbWVySGVhcDsgfQotCi0gICAgICAgIHZvaWQgdXBkYXRl
U2hhcmVkVGltZXIoKTsKLSAgICAgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3Ao
KTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc2hhcmVkVGltZXJGaXJlZEludGVybmFs
KCk7Ci0gICAgICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wSW50ZXJuYWwoKTsK
LQotICAgICAgICBWZWN0b3I8VGltZXJCYXNlKj4gbV90aW1lckhlYXA7Ci0gICAgICAgIFNoYXJl
ZFRpbWVyKiBtX3NoYXJlZFRpbWVyIHsgbnVsbHB0ciB9OyAvLyBFeHRlcm5hbCBvYmplY3QsIGNh
biBiZSBhIHJ1biBsb29wIG9uIGEgd29ya2VyIHRocmVhZC4gTm9ybWFsbHkgc2V0L3Jlc2V0IGJ5
IHdvcmtlciB0aHJlYWQuCi0gICAgICAgIGJvb2wgbV9maXJpbmdUaW1lcnMgeyBmYWxzZSB9OyAv
LyBSZWVudHJhbmN5IGd1YXJkLgotICAgICAgICBNb25vdG9uaWNUaW1lIG1fcGVuZGluZ1NoYXJl
ZFRpbWVyRmlyZVRpbWU7Ci0gICAgfTsKK2lubGluZSBUaHJlYWRUaW1lckhlYXAmIFRocmVhZFRp
bWVySGVhcEl0ZW06OnRpbWVySGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGhyZWFkVGlt
ZXJzLnRpbWVySGVhcCgpOworfQogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5j
cHAJKHJldmlzaW9uIDIzOTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTAsNjkgKzUwLDExMSBAQCBjbGFzcyBUaW1lckhlYXBSZWZl
cmVuY2U7CiAvLyBUaGVuIHdlIHNldCBhIHNpbmdsZSBzaGFyZWQgc3lzdGVtIHRpbWVyIHRvIGZp
cmUgYXQgdGhhdCB0aW1lLgogLy8KIC8vIFdoZW4gYSB0aW1lcidzICJuZXh0IGZpcmUgdGltZSIg
Y2hhbmdlcywgd2UgbmVlZCB0byBtb3ZlIGl0IGFyb3VuZCBpbiB0aGUgcHJpb3JpdHkgcXVldWUu
Ci1zdGF0aWMgVmVjdG9yPFRpbWVyQmFzZSo+JiB0aHJlYWRHbG9iYWxUaW1lckhlYXAoKQorI2lm
ICFBU1NFUlRfRElTQUJMRUQKK3N0YXRpYyBUaHJlYWRUaW1lckhlYXAmIHRocmVhZEdsb2JhbFRp
bWVySGVhcCgpCiB7CiAgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMo
KS50aW1lckhlYXAoKTsKIH0KKyNlbmRpZgorCitpbmxpbmUgVGhyZWFkVGltZXJIZWFwSXRlbTo6
VGhyZWFkVGltZXJIZWFwSXRlbShUaW1lckJhc2UmIHRpbWVyLCBNb25vdG9uaWNUaW1lIHRpbWUs
IHVuc2lnbmVkIGluc2VydGlvbk9yZGVyKQorICAgIDogdGltZSh0aW1lKQorICAgICwgaW5zZXJ0
aW9uT3JkZXIoaW5zZXJ0aW9uT3JkZXIpCisgICAgLCBtX3RocmVhZFRpbWVycyh0aHJlYWRHbG9i
YWxEYXRhKCkudGhyZWFkVGltZXJzKCkpCisgICAgLCBtX3RpbWVyKCZ0aW1lcikKK3sKKyAgICBB
U1NFUlQobV90aW1lcik7Cit9CisgICAgCitpbmxpbmUgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0
ZW0+IFRocmVhZFRpbWVySGVhcEl0ZW06OmNyZWF0ZShUaW1lckJhc2UmIHRpbWVyLCBNb25vdG9u
aWNUaW1lIHRpbWUsIHVuc2lnbmVkIGluc2VydGlvbk9yZGVyKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRocmVhZFRpbWVySGVhcEl0ZW0geyB0aW1lciwgdGltZSwgaW5zZXJ0aW9uT3Jk
ZXIgfSk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgVGltZXJIZWFwUG9pbnRl
ciB7CiBwdWJsaWM6Ci0gICAgVGltZXJIZWFwUG9pbnRlcihUaW1lckJhc2UqKiBwb2ludGVyKSA6
IG1fcG9pbnRlcihwb2ludGVyKSB7IH0KKyAgICBUaW1lckhlYXBQb2ludGVyKFJlZlB0cjxUaHJl
YWRUaW1lckhlYXBJdGVtPiogcG9pbnRlcikKKyAgICAgICAgOiBtX3BvaW50ZXIocG9pbnRlcikK
KyAgICB7IH0KKwogICAgIFRpbWVySGVhcFJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdDsKLSAg
ICBUaW1lckJhc2UqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAqbV9wb2ludGVyOyB9Cisg
ICAgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+JiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gKm1fcG9pbnRlcjsgfQogcHJpdmF0ZToKLSAgICBUaW1lckJhc2UqKiBtX3BvaW50ZXI7Cisg
ICAgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+KiBtX3BvaW50ZXI7CiB9OwogCiBjbGFzcyBU
aW1lckhlYXBSZWZlcmVuY2UgewogcHVibGljOgotICAgIFRpbWVySGVhcFJlZmVyZW5jZShUaW1l
ckJhc2UqJiByZWZlcmVuY2UpIDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKSB7IH0KLSAgICBvcGVy
YXRvciBUaW1lckJhc2UqKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2U7IH0KKyAgICBUaW1l
ckhlYXBSZWZlcmVuY2UoUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+JiByZWZlcmVuY2UpCisg
ICAgICAgIDogbV9yZWZlcmVuY2UocmVmZXJlbmNlKQorICAgIHsgfQorCisgICAgVGltZXJIZWFw
UmVmZXJlbmNlKGNvbnN0IFRpbWVySGVhcFJlZmVyZW5jZSYgb3RoZXIpCisgICAgICAgIDogbV9y
ZWZlcmVuY2Uob3RoZXIubV9yZWZlcmVuY2UpCisgICAgeyB9CisKKyAgICBvcGVyYXRvciBSZWZQ
dHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2U7IH0K
ICAgICBUaW1lckhlYXBQb2ludGVyIG9wZXJhdG9yJigpIGNvbnN0IHsgcmV0dXJuICZtX3JlZmVy
ZW5jZTsgfQotICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9KFRpbWVyQmFzZSopOwot
ICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9KFRpbWVySGVhcFJlZmVyZW5jZSk7Cisg
ICAgVGltZXJIZWFwUmVmZXJlbmNlJiBvcGVyYXRvcj0oVGltZXJIZWFwUmVmZXJlbmNlJiYpOwor
ICAgIFRpbWVySGVhcFJlZmVyZW5jZSYgb3BlcmF0b3I9KFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJ
dGVtPiYmKTsKKworICAgIHZvaWQgc3dhcChUaW1lckhlYXBSZWZlcmVuY2UmIG90aGVyKTsKKwor
ICAgIHZvaWQgdXBkYXRlSGVhcEluZGV4KCk7CisKIHByaXZhdGU6Ci0gICAgVGltZXJCYXNlKiYg
bV9yZWZlcmVuY2U7CisgICAgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+JiBtX3JlZmVyZW5j
ZTsKKworICAgIGZyaWVuZCB2b2lkIHN3YXAoVGltZXJIZWFwUmVmZXJlbmNlIGEsIFRpbWVySGVh
cFJlZmVyZW5jZSBiKTsKIH07CiAKIGlubGluZSBUaW1lckhlYXBSZWZlcmVuY2UgVGltZXJIZWFw
UG9pbnRlcjo6b3BlcmF0b3IqKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKm1fcG9pbnRlcjsKKyAg
ICByZXR1cm4gVGltZXJIZWFwUmVmZXJlbmNlIHsgKm1fcG9pbnRlciB9OwogfQogCi1pbmxpbmUg
VGltZXJIZWFwUmVmZXJlbmNlJiBUaW1lckhlYXBSZWZlcmVuY2U6Om9wZXJhdG9yPShUaW1lckJh
c2UqIHRpbWVyKQoraW5saW5lIFRpbWVySGVhcFJlZmVyZW5jZSYgVGltZXJIZWFwUmVmZXJlbmNl
OjpvcGVyYXRvcj0oVGltZXJIZWFwUmVmZXJlbmNlJiYgb3RoZXIpCiB7Ci0gICAgbV9yZWZlcmVu
Y2UgPSB0aW1lcjsKLSAgICBWZWN0b3I8VGltZXJCYXNlKj4mIGhlYXAgPSB0aW1lci0+dGltZXJI
ZWFwKCk7Ci0gICAgaWYgKCZtX3JlZmVyZW5jZSA+PSBoZWFwLmRhdGEoKSAmJiAmbV9yZWZlcmVu
Y2UgPCBoZWFwLmRhdGEoKSArIGhlYXAuc2l6ZSgpKQotICAgICAgICB0aW1lci0+bV9oZWFwSW5k
ZXggPSAmbV9yZWZlcmVuY2UgLSBoZWFwLmRhdGEoKTsKKyAgICBtX3JlZmVyZW5jZSA9IFdURk1v
dmUob3RoZXIubV9yZWZlcmVuY2UpOworICAgIHVwZGF0ZUhlYXBJbmRleCgpOwogICAgIHJldHVy
biAqdGhpczsKIH0KIAotaW5saW5lIFRpbWVySGVhcFJlZmVyZW5jZSYgVGltZXJIZWFwUmVmZXJl
bmNlOjpvcGVyYXRvcj0oVGltZXJIZWFwUmVmZXJlbmNlIGIpCitpbmxpbmUgVGltZXJIZWFwUmVm
ZXJlbmNlJiBUaW1lckhlYXBSZWZlcmVuY2U6Om9wZXJhdG9yPShSZWZQdHI8VGhyZWFkVGltZXJI
ZWFwSXRlbT4mJiBpdGVtKQogewotICAgIFRpbWVyQmFzZSogdGltZXIgPSBiOwotICAgIHJldHVy
biAqdGhpcyA9IHRpbWVyOworICAgIG1fcmVmZXJlbmNlID0gV1RGTW92ZShpdGVtKTsKKyAgICB1
cGRhdGVIZWFwSW5kZXgoKTsKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWlubGluZSB2b2lkIHN3
YXAoVGltZXJIZWFwUmVmZXJlbmNlIGEsIFRpbWVySGVhcFJlZmVyZW5jZSBiKQoraW5saW5lIHZv
aWQgVGltZXJIZWFwUmVmZXJlbmNlOjpzd2FwKFRpbWVySGVhcFJlZmVyZW5jZSYgb3RoZXIpCiB7
Ci0gICAgVGltZXJCYXNlKiB0aW1lckEgPSBhOwotICAgIFRpbWVyQmFzZSogdGltZXJCID0gYjsK
KyAgICBtX3JlZmVyZW5jZS5zd2FwKG90aGVyLm1fcmVmZXJlbmNlKTsKKyAgICB1cGRhdGVIZWFw
SW5kZXgoKTsKKyAgICBvdGhlci51cGRhdGVIZWFwSW5kZXgoKTsKK30KIAotICAgIC8vIEludm9r
ZSB0aGUgYXNzaWdubWVudCBvcGVyYXRvciwgc2luY2UgdGhhdCB0YWtlcyBjYXJlIG9mIHVwZGF0
aW5nIG1faGVhcEluZGV4LgotICAgIGEgPSB0aW1lckI7Ci0gICAgYiA9IHRpbWVyQTsKK2lubGlu
ZSB2b2lkIFRpbWVySGVhcFJlZmVyZW5jZTo6dXBkYXRlSGVhcEluZGV4KCkKK3sKKyAgICBhdXRv
JiBoZWFwID0gbV9yZWZlcmVuY2UtPnRpbWVySGVhcCgpOworICAgIGlmICgmbV9yZWZlcmVuY2Ug
Pj0gaGVhcC5kYXRhKCkgJiYgJm1fcmVmZXJlbmNlIDwgaGVhcC5kYXRhKCkgKyBoZWFwLnNpemUo
KSkKKyAgICAgICAgbV9yZWZlcmVuY2UtPnNldEhlYXBJbmRleCgmbV9yZWZlcmVuY2UgLSBoZWFw
LmRhdGEoKSk7Cit9CisKK2lubGluZSB2b2lkIHN3YXAoVGltZXJIZWFwUmVmZXJlbmNlIGEsIFRp
bWVySGVhcFJlZmVyZW5jZSBiKQoreworICAgIGEuc3dhcChiKTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLQogCiAvLyBDbGFzcyB0byByZXByZXNlbnQgaXRlcmF0b3JzIGluIHRoZSBoZWFwIHdo
ZW4gY2FsbGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSBoZWFwIGFsZ29yaXRobXMuCiAvLyBVc2Vz
IGEgY3VzdG9tIHBvaW50ZXIgYW5kIHJlZmVyZW5jZSB0eXBlIHRoYXQgdXBkYXRlIGluZGljZXMg
Zm9yIHBvaW50ZXJzIGluIHRoZSBoZWFwLgotY2xhc3MgVGltZXJIZWFwSXRlcmF0b3IgOiBwdWJs
aWMgc3RkOjppdGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBUaW1lckJh
c2UqLCBwdHJkaWZmX3QsIFRpbWVySGVhcFBvaW50ZXIsIFRpbWVySGVhcFJlZmVyZW5jZT4gewor
Y2xhc3MgVGltZXJIZWFwSXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OnJhbmRv
bV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4sIHB0cmRp
ZmZfdCwgVGltZXJIZWFwUG9pbnRlciwgVGltZXJIZWFwUmVmZXJlbmNlPiB7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgVGltZXJIZWFwSXRlcmF0b3IoVGltZXJCYXNlKiogcG9pbnRlcikgOiBtX3Bv
aW50ZXIocG9pbnRlcikgeyBjaGVja0NvbnNpc3RlbmN5KCk7IH0KKyAgICBleHBsaWNpdCBUaW1l
ckhlYXBJdGVyYXRvcihSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4qIHBvaW50ZXIpIDogbV9w
b2ludGVyKHBvaW50ZXIpIHsgY2hlY2tDb25zaXN0ZW5jeSgpOyB9CiAKICAgICBUaW1lckhlYXBJ
dGVyYXRvciYgb3BlcmF0b3IrKygpIHsgY2hlY2tDb25zaXN0ZW5jeSgpOyArK21fcG9pbnRlcjsg
Y2hlY2tDb25zaXN0ZW5jeSgpOyByZXR1cm4gKnRoaXM7IH0KICAgICBUaW1lckhlYXBJdGVyYXRv
ciBvcGVyYXRvcisrKGludCkgeyBjaGVja0NvbnNpc3RlbmN5KDEpOyByZXR1cm4gVGltZXJIZWFw
SXRlcmF0b3IobV9wb2ludGVyKyspOyB9CkBAIC0xMjUsNyArMTY3LDcgQEAgcHVibGljOgogCiAg
ICAgVGltZXJIZWFwUmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIFRpbWVySGVh
cFJlZmVyZW5jZSgqbV9wb2ludGVyKTsgfQogICAgIFRpbWVySGVhcFJlZmVyZW5jZSBvcGVyYXRv
cltdKHB0cmRpZmZfdCBpKSBjb25zdCB7IHJldHVybiBUaW1lckhlYXBSZWZlcmVuY2UobV9wb2lu
dGVyW2ldKTsgfQotICAgIFRpbWVyQmFzZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICpt
X3BvaW50ZXI7IH0KKyAgICBSZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mIG9wZXJhdG9yLT4o
KSBjb25zdCB7IHJldHVybiAqbV9wb2ludGVyOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjaGVj
a0NvbnNpc3RlbmN5KHB0cmRpZmZfdCBvZmZzZXQgPSAwKSBjb25zdApAQCAtMTQ5LDcgKzE5MSw3
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIFRpbWVySGVhcEl0ZXJhdG9yIG9wZXJhdG9yLShUaW1l
ckhlYXBJdGVyYXRvciwgc2l6ZV90KTsKICAgICBmcmllbmQgcHRyZGlmZl90IG9wZXJhdG9yLShU
aW1lckhlYXBJdGVyYXRvciwgVGltZXJIZWFwSXRlcmF0b3IpOwogCi0gICAgVGltZXJCYXNlKiog
bV9wb2ludGVyOworICAgIFJlZlB0cjxUaHJlYWRUaW1lckhlYXBJdGVtPiogbV9wb2ludGVyOwog
fTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUaW1lckhlYXBJdGVyYXRvciBhLCBUaW1lckhl
YXBJdGVyYXRvciBiKSB7IHJldHVybiBhLm1fcG9pbnRlciA9PSBiLm1fcG9pbnRlcjsgfQpAQCAt
MTY5LDIzICsyMTEsMzQgQEAgaW5saW5lIHB0cmRpZmZfdCBvcGVyYXRvci0oVGltZXJIZWFwSXRl
cgogCiBjbGFzcyBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBib29s
IG9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNlKiwgY29uc3QgVGltZXJCYXNlKikgY29uc3Q7Ci19
OworICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgVGltZXJCYXNlJiBhLCBjb25zdCBSZWZQ
dHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gY29tcGFy
ZShhLm1faGVhcEl0ZW0tPnRpbWUsIGEubV9oZWFwSXRlbS0+aW5zZXJ0aW9uT3JkZXIsIGItPnRp
bWUsIGItPmluc2VydGlvbk9yZGVyKTsKKyAgICB9CiAKLWlubGluZSBib29sIFRpbWVySGVhcExl
c3NUaGFuRnVuY3Rpb246Om9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNlKiBhLCBjb25zdCBUaW1l
ckJhc2UqIGIpIGNvbnN0Ci17Ci0gICAgLy8gVGhlIGNvbXBhcmlzb25zIGJlbG93IGFyZSAiYmFj
a3dhcmRzIiBiZWNhdXNlIHRoZSBoZWFwIHB1dHMgdGhlIGxhcmdlc3QgCi0gICAgLy8gZWxlbWVu
dCBmaXJzdCBhbmQgd2Ugd2FudCB0aGUgbG93ZXN0IHRpbWUgdG8gYmUgdGhlIGZpcnN0IG9uZSBp
biB0aGUgaGVhcC4KLSAgICBNb25vdG9uaWNUaW1lIGFGaXJlVGltZSA9IGEtPm1fbmV4dEZpcmVU
aW1lOwotICAgIE1vbm90b25pY1RpbWUgYkZpcmVUaW1lID0gYi0+bV9uZXh0RmlyZVRpbWU7Ci0g
ICAgaWYgKGJGaXJlVGltZSAhPSBhRmlyZVRpbWUpCi0gICAgICAgIHJldHVybiBiRmlyZVRpbWUg
PCBhRmlyZVRpbWU7Ci0gICAgCi0gICAgLy8gV2UgbmVlZCB0byBsb29rIGF0IHRoZSBkaWZmZXJl
bmNlIG9mIHRoZSBpbnNlcnRpb24gb3JkZXJzIGluc3RlYWQgb2YgY29tcGFyaW5nIHRoZSB0d28g
Ci0gICAgLy8gb3V0cmlnaHQgaW4gY2FzZSBvZiBvdmVyZmxvdy4gCi0gICAgdW5zaWduZWQgZGlm
ZmVyZW5jZSA9IGEtPm1faGVhcEluc2VydGlvbk9yZGVyIC0gYi0+bV9oZWFwSW5zZXJ0aW9uT3Jk
ZXI7Ci0gICAgcmV0dXJuIGRpZmZlcmVuY2UgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkgLyAyOwotfQorICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgUmVmUHRyPFRo
cmVhZFRpbWVySGVhcEl0ZW0+JiBhLCBjb25zdCBUaW1lckJhc2UmIGIpCisgICAgeworICAgICAg
ICByZXR1cm4gY29tcGFyZShhLT50aW1lLCBhLT5pbnNlcnRpb25PcmRlciwgYi5tX2hlYXBJdGVt
LT50aW1lLCBiLm1faGVhcEl0ZW0tPmluc2VydGlvbk9yZGVyKTsKKyAgICB9CisKKyAgICBib29s
IG9wZXJhdG9yKCkoY29uc3QgUmVmUHRyPFRocmVhZFRpbWVySGVhcEl0ZW0+JiBhLCBjb25zdCBS
ZWZQdHI8VGhyZWFkVGltZXJIZWFwSXRlbT4mIGIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gY29tcGFyZShhLT50aW1lLCBhLT5pbnNlcnRpb25PcmRlciwgYi0+dGltZSwgYi0+aW5zZXJ0
aW9uT3JkZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlKE1v
bm90b25pY1RpbWUgYVRpbWUsIHVuc2lnbmVkIGFPcmRlciwgTW9ub3RvbmljVGltZSBiVGltZSwg
dW5zaWduZWQgYk9yZGVyKQorICAgIHsKKyAgICAgICAgLy8gVGhlIGNvbXBhcmlzb25zIGJlbG93
IGFyZSAiYmFja3dhcmRzIiBiZWNhdXNlIHRoZSBoZWFwIHB1dHMgdGhlIGxhcmdlc3QKKyAgICAg
ICAgLy8gZWxlbWVudCBmaXJzdCBhbmQgd2Ugd2FudCB0aGUgbG93ZXN0IHRpbWUgdG8gYmUgdGhl
IGZpcnN0IG9uZSBpbiB0aGUgaGVhcC4KKyAgICAgICAgaWYgKGJUaW1lICE9IGFUaW1lKQorICAg
ICAgICAgICAgcmV0dXJuIGJUaW1lIDwgYVRpbWU7CisgICAgICAgIC8vIFdlIG5lZWQgdG8gbG9v
ayBhdCB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgaW5zZXJ0aW9uIG9yZGVycyBpbnN0ZWFkIG9mIGNv
bXBhcmluZyB0aGUgdHdvCisgICAgICAgIC8vIG91dHJpZ2h0IGluIGNhc2Ugb2Ygb3ZlcmZsb3cu
CisgICAgICAgIHVuc2lnbmVkIGRpZmZlcmVuY2UgPSBhT3JkZXIgLSBiT3JkZXI7CisgICAgICAg
IHJldHVybiBkaWZmZXJlbmNlIDwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
IC8gMjsKKyAgICB9Cit9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTIwMSw4ICsyNTQs
NyBAQCBzdGF0aWMgYm9vbCBzaG91bGRTdXBwcmVzc1RocmVhZFNhZmV0eUNoCiB9CiAKIFRpbWVy
QmFzZTo6VGltZXJCYXNlKCkKLSAgICA6IG1faGVhcEluZGV4KC0xKQotICAgICwgbV93YXNEZWxl
dGVkKGZhbHNlKQorICAgIDogbV93YXNEZWxldGVkKGZhbHNlKQogewogfQogCkBAIC0yMTIsNiAr
MjY0LDEwIEBAIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiAgICAgUkVMRUFTRV9BU1NFUlQoY2Fu
QWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKG1fdGhyZWFkLmdldCgpKSB8fCBzaG91bGRT
dXBwcmVzc1RocmVhZFNhZmV0eUNoZWNrKCkpOwogICAgIHN0b3AoKTsKICAgICBBU1NFUlQoIWlu
SGVhcCgpKTsKKyAgICBpZiAobV9oZWFwSXRlbSkgeworICAgICAgICBtX2hlYXBJdGVtLT5jbGVh
clRpbWVyKCk7CisgICAgICAgIG1faGVhcEl0ZW0gPSBudWxscHRyOworICAgIH0KICAgICBtX3dh
c0RlbGV0ZWQgPSB0cnVlOwogfQogCkBAIC0yMzAsNyArMjg2LDcgQEAgdm9pZCBUaW1lckJhc2U6
OnN0b3AoKQogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSAwX3M7CiAgICAgc2V0TmV4dEZpcmVUaW1l
KE1vbm90b25pY1RpbWUgeyB9KTsKIAotICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Ym9vbD4obV9u
ZXh0RmlyZVRpbWUpKTsKKyAgICBBU1NFUlQoIXN0YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGlt
ZSgpKSk7CiAgICAgQVNTRVJUKG1fcmVwZWF0SW50ZXJ2YWwgPT0gMF9zKTsKICAgICBBU1NFUlQo
IWluSGVhcCgpKTsKIH0KQEAgLTIzOCw1NyArMjk0LDY2IEBAIHZvaWQgVGltZXJCYXNlOjpzdG9w
KCkKIFNlY29uZHMgVGltZXJCYXNlOjpuZXh0RmlyZUludGVydmFsKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoaXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKG1faGVhcEl0ZW0pOwogICAgIE1vbm90b25p
Y1RpbWUgY3VycmVudCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIGlmIChtX25leHRGaXJl
VGltZSA8IGN1cnJlbnQpCisgICAgYXV0byBmaXJlVGltZSA9IG5leHRGaXJlVGltZSgpOworICAg
IGlmIChmaXJlVGltZSA8IGN1cnJlbnQpCiAgICAgICAgIHJldHVybiAwX3M7Ci0gICAgcmV0dXJu
IG1fbmV4dEZpcmVUaW1lIC0gY3VycmVudDsKKyAgICByZXR1cm4gZmlyZVRpbWUgLSBjdXJyZW50
OwogfQogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmNoZWNrSGVhcEluZGV4KCkgY29uc3QKIHsK
LSAgICBBU1NFUlQodGltZXJIZWFwKCkgPT0gdGhyZWFkR2xvYmFsVGltZXJIZWFwKCkpOwotICAg
IEFTU0VSVCghdGltZXJIZWFwKCkuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobV9oZWFwSW5kZXgg
Pj0gMCk7Ci0gICAgQVNTRVJUKG1faGVhcEluZGV4IDwgc3RhdGljX2Nhc3Q8aW50Pih0aW1lckhl
YXAoKS5zaXplKCkpKTsKLSAgICBBU1NFUlQodGltZXJIZWFwKClbbV9oZWFwSW5kZXhdID09IHRo
aXMpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBBU1NFUlQobV9oZWFwSXRlbSk7CisgICAg
YXV0byYgaGVhcCA9IG1faGVhcEl0ZW0tPnRpbWVySGVhcCgpOworICAgIEFTU0VSVCgmaGVhcCA9
PSAmdGhyZWFkR2xvYmFsVGltZXJIZWFwKCkpOworICAgIEFTU0VSVCghaGVhcC5pc0VtcHR5KCkp
OworICAgIEFTU0VSVChtX2hlYXBJdGVtLT5pc0luSGVhcCgpKTsKKyAgICBBU1NFUlQobV9oZWFw
SXRlbS0+aGVhcEluZGV4KCkgPCBtX2hlYXBJdGVtLT50aW1lckhlYXAoKS5zaXplKCkpOworICAg
IEFTU0VSVChoZWFwW21faGVhcEl0ZW0tPmhlYXBJbmRleCgpXSA9PSBtX2hlYXBJdGVtKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gaGVhcC5zaXplKCk7IGkgPCBzaXplOyBpKysp
CisgICAgICAgIEFTU0VSVChoZWFwW2ldLT5oZWFwSW5kZXgoKSA9PSBpKTsKKyNlbmRpZgogfQog
CiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAg
IC8vIFRpbWVycyBzaG91bGQgYmUgaW4gdGhlIGhlYXAgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZl
IGEgbm9uLXplcm8gbmV4dCBmaXJlIHRpbWUuCi0gICAgQVNTRVJUKGluSGVhcCgpID09IHN0YXRp
Y19jYXN0PGJvb2w+KG1fbmV4dEZpcmVUaW1lKSk7CisgICAgQVNTRVJUKGluSGVhcCgpID09IHN0
YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGltZSgpKSk7CiAgICAgaWYgKGluSGVhcCgpKQogICAg
ICAgICBjaGVja0hlYXBJbmRleCgpOwogfQogCiB2b2lkIFRpbWVyQmFzZTo6aGVhcERlY3JlYXNl
S2V5KCkKIHsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0RmlyZVRpbWUpKTsK
KyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8Ym9vbD4obmV4dEZpcmVUaW1lKCkpKTsKKyAgICBBU1NF
UlQobV9oZWFwSXRlbSk7CiAgICAgY2hlY2tIZWFwSW5kZXgoKTsKLSAgICBUaW1lckJhc2UqKiBo
ZWFwRGF0YSA9IHRpbWVySGVhcCgpLmRhdGEoKTsKLSAgICBwdXNoX2hlYXAoVGltZXJIZWFwSXRl
cmF0b3IoaGVhcERhdGEpLCBUaW1lckhlYXBJdGVyYXRvcihoZWFwRGF0YSArIG1faGVhcEluZGV4
ICsgMSksIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb24oKSk7CisgICAgYXV0byogaGVhcERhdGEg
PSBtX2hlYXBJdGVtLT50aW1lckhlYXAoKS5kYXRhKCk7CisgICAgcHVzaF9oZWFwKFRpbWVySGVh
cEl0ZXJhdG9yKGhlYXBEYXRhKSwgVGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEgKyBtX2hlYXBJ
dGVtLT5oZWFwSW5kZXgoKSArIDEpLCBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uKCkpOwogICAg
IGNoZWNrSGVhcEluZGV4KCk7CiB9CiAKIGlubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcERlbGV0
ZSgpCiB7Ci0gICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxib29sPihtX25leHRGaXJlVGltZSkpOwor
ICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Ym9vbD4obmV4dEZpcmVUaW1lKCkpKTsKICAgICBoZWFw
UG9wKCk7Ci0gICAgdGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOwotICAgIG1faGVhcEluZGV4ID0g
LTE7CisgICAgbV9oZWFwSXRlbS0+dGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOworICAgIG1faGVh
cEl0ZW0tPnNldE5vdEluSGVhcCgpOwogfQogCiB2b2lkIFRpbWVyQmFzZTo6aGVhcERlbGV0ZU1p
bigpCiB7Ci0gICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxib29sPihtX25leHRGaXJlVGltZSkpOwor
ICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Ym9vbD4obmV4dEZpcmVUaW1lKCkpKTsKICAgICBoZWFw
UG9wTWluKCk7Ci0gICAgdGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOwotICAgIG1faGVhcEluZGV4
ID0gLTE7CisgICAgbV9oZWFwSXRlbS0+dGltZXJIZWFwKCkucmVtb3ZlTGFzdCgpOworICAgIG1f
aGVhcEl0ZW0tPnNldE5vdEluSGVhcCgpOwogfQogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6Omhl
YXBJbmNyZWFzZUtleSgpCiB7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KG1fbmV4dEZp
cmVUaW1lKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGltZSgpKSk7
CiAgICAgaGVhcFBvcCgpOwogICAgIGhlYXBEZWNyZWFzZUtleSgpOwogfQpAQCAtMjk2LDgxICsz
NjEsMTA1IEBAIGlubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcEluY3JlYXNlS2V5KCkKIGlubGlu
ZSB2b2lkIFRpbWVyQmFzZTo6aGVhcEluc2VydCgpCiB7CiAgICAgQVNTRVJUKCFpbkhlYXAoKSk7
Ci0gICAgdGltZXJIZWFwKCkuYXBwZW5kKHRoaXMpOwotICAgIG1faGVhcEluZGV4ID0gdGltZXJI
ZWFwKCkuc2l6ZSgpIC0gMTsKKyAgICBBU1NFUlQobV9oZWFwSXRlbSk7CisgICAgYXV0byYgaGVh
cCA9IG1faGVhcEl0ZW0tPnRpbWVySGVhcCgpOworICAgIGhlYXAuYXBwZW5kKG1faGVhcEl0ZW0u
Y29weVJlZigpKTsKKyAgICBtX2hlYXBJdGVtLT5zZXRIZWFwSW5kZXgoaGVhcC5zaXplKCkgLSAx
KTsKICAgICBoZWFwRGVjcmVhc2VLZXkoKTsKIH0KIAogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpo
ZWFwUG9wKCkKIHsKKyAgICBBU1NFUlQobV9oZWFwSXRlbSk7CiAgICAgLy8gVGVtcG9yYXJpbHkg
Zm9yY2UgdGhpcyB0aW1lciB0byBoYXZlIHRoZSBtaW5pbXVtIGtleSBzbyB3ZSBjYW4gcG9wIGl0
LgotICAgIE1vbm90b25pY1RpbWUgZmlyZVRpbWUgPSBtX25leHRGaXJlVGltZTsKLSAgICBtX25l
eHRGaXJlVGltZSA9IC1Nb25vdG9uaWNUaW1lOjppbmZpbml0eSgpOworICAgIE1vbm90b25pY1Rp
bWUgZmlyZVRpbWUgPSBtX2hlYXBJdGVtLT50aW1lOworICAgIG1faGVhcEl0ZW0tPnRpbWUgPSAt
TW9ub3RvbmljVGltZTo6aW5maW5pdHkoKTsKICAgICBoZWFwRGVjcmVhc2VLZXkoKTsKICAgICBo
ZWFwUG9wTWluKCk7Ci0gICAgbV9uZXh0RmlyZVRpbWUgPSBmaXJlVGltZTsKKyAgICBtX2hlYXBJ
dGVtLT50aW1lID0gZmlyZVRpbWU7CiB9CiAKIHZvaWQgVGltZXJCYXNlOjpoZWFwUG9wTWluKCkK
IHsKLSAgICBBU1NFUlQodGhpcyA9PSB0aW1lckhlYXAoKS5maXJzdCgpKTsKKyAgICBBU1NFUlQo
bV9oZWFwSXRlbSA9PSBtX2hlYXBJdGVtLT50aW1lckhlYXAoKS5maXJzdCgpKTsKICAgICBjaGVj
a0hlYXBJbmRleCgpOwotICAgIFZlY3RvcjxUaW1lckJhc2UqPiYgaGVhcCA9IHRpbWVySGVhcCgp
OwotICAgIFRpbWVyQmFzZSoqIGhlYXBEYXRhID0gaGVhcC5kYXRhKCk7CisgICAgYXV0byYgaGVh
cCA9IG1faGVhcEl0ZW0tPnRpbWVySGVhcCgpOworICAgIGF1dG8qIGhlYXBEYXRhID0gaGVhcC5k
YXRhKCk7CiAgICAgcG9wX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEpLCBUaW1lckhl
YXBJdGVyYXRvcihoZWFwRGF0YSArIGhlYXAuc2l6ZSgpKSwgVGltZXJIZWFwTGVzc1RoYW5GdW5j
dGlvbigpKTsKICAgICBjaGVja0hlYXBJbmRleCgpOwotICAgIEFTU0VSVCh0aGlzID09IHRpbWVy
SGVhcCgpLmxhc3QoKSk7CisgICAgQVNTRVJUKG1faGVhcEl0ZW0gPT0gbV9oZWFwSXRlbS0+dGlt
ZXJIZWFwKCkubGFzdCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHBhcmVudEhlYXBQcm9w
ZXJ0eUhvbGRzKGNvbnN0IFRpbWVyQmFzZSogY3VycmVudCwgY29uc3QgVmVjdG9yPFRpbWVyQmFz
ZSo+JiBoZWFwLCB1bnNpZ25lZCBjdXJyZW50SW5kZXgpCit2b2lkIFRpbWVyQmFzZTo6aGVhcERl
bGV0ZU51bGxNaW4oVGhyZWFkVGltZXJIZWFwJiBoZWFwKQoreworICAgIFJFTEVBU0VfQVNTRVJU
KCFoZWFwLmZpcnN0KCktPmhhc1RpbWVyKCkpOworICAgIGhlYXAuZmlyc3QoKS0+dGltZSA9IC1N
b25vdG9uaWNUaW1lOjppbmZpbml0eSgpOworICAgIGF1dG8qIGhlYXBEYXRhID0gaGVhcC5kYXRh
KCk7CisgICAgcG9wX2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoaGVhcERhdGEpLCBUaW1lckhlYXBJ
dGVyYXRvcihoZWFwRGF0YSArIGhlYXAuc2l6ZSgpKSwgVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlv
bigpKTsKKyAgICBoZWFwLnJlbW92ZUxhc3QoKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHBh
cmVudEhlYXBQcm9wZXJ0eUhvbGRzKGNvbnN0IFRpbWVyQmFzZSogY3VycmVudCwgY29uc3QgVGhy
ZWFkVGltZXJIZWFwJiBoZWFwLCB1bnNpZ25lZCBjdXJyZW50SW5kZXgpCiB7CiAgICAgaWYgKCFj
dXJyZW50SW5kZXgpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHVuc2lnbmVkIHBhcmVudElu
ZGV4ID0gKGN1cnJlbnRJbmRleCAtIDEpIC8gMjsKLSAgICBUaW1lckhlYXBMZXNzVGhhbkZ1bmN0
aW9uIGNvbXBhcmVIZWFwUG9zaXRpb247Ci0gICAgcmV0dXJuIGNvbXBhcmVIZWFwUG9zaXRpb24o
Y3VycmVudCwgaGVhcFtwYXJlbnRJbmRleF0pOworICAgIHJldHVybiBUaW1lckhlYXBMZXNzVGhh
bkZ1bmN0aW9uOjpjb21wYXJlKCpjdXJyZW50LCBoZWFwW3BhcmVudEluZGV4XSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgYm9vbCBjaGlsZEhlYXBQcm9wZXJ0eUhvbGRzKGNvbnN0IFRpbWVyQmFzZSog
Y3VycmVudCwgY29uc3QgVmVjdG9yPFRpbWVyQmFzZSo+JiBoZWFwLCB1bnNpZ25lZCBjaGlsZElu
ZGV4KQorc3RhdGljIGlubGluZSBib29sIGNoaWxkSGVhcFByb3BlcnR5SG9sZHMoY29uc3QgVGlt
ZXJCYXNlKiBjdXJyZW50LCBjb25zdCBUaHJlYWRUaW1lckhlYXAmIGhlYXAsIHVuc2lnbmVkIGNo
aWxkSW5kZXgpCiB7CiAgICAgaWYgKGNoaWxkSW5kZXggPj0gaGVhcC5zaXplKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb24gY29tcGFyZUhlYXBQ
b3NpdGlvbjsKLSAgICByZXR1cm4gY29tcGFyZUhlYXBQb3NpdGlvbihoZWFwW2NoaWxkSW5kZXhd
LCBjdXJyZW50KTsKKyAgICByZXR1cm4gVGltZXJIZWFwTGVzc1RoYW5GdW5jdGlvbjo6Y29tcGFy
ZShoZWFwW2NoaWxkSW5kZXhdLCAqY3VycmVudCk7CiB9CiAKIGJvb2wgVGltZXJCYXNlOjpoYXNW
YWxpZEhlYXBQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbmV4dEZpcmVUaW1lKTsK
KyAgICBBU1NFUlQobmV4dEZpcmVUaW1lKCkpOworICAgIEFTU0VSVChtX2hlYXBJdGVtKTsKICAg
ICBpZiAoIWluSGVhcCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gQ2hlY2sgaWYg
dGhlIGhlYXAgcHJvcGVydHkgc3RpbGwgaG9sZHMgd2l0aCB0aGUgbmV3IGZpcmUgdGltZS4gSWYg
aXQgZG9lcyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLgogICAgIC8vIFRoaXMgYXNzdW1l
cyB0aGF0IHRoZSBTVEwgaGVhcCBpcyBhIHN0YW5kYXJkIGJpbmFyeSBoZWFwLiBJbiBhbiB1bmxp
a2VseSBldmVudCBpdCBpcyBub3QsIHRoZSBhc3NlcnRpb25zCiAgICAgLy8gaW4gdXBkYXRlSGVh
cElmTmVlZGVkKCkgd2lsbCBnZXQgaGl0LgotICAgIGNvbnN0IFZlY3RvcjxUaW1lckJhc2UqPiYg
aGVhcCA9IHRpbWVySGVhcCgpOwotICAgIGlmICghcGFyZW50SGVhcFByb3BlcnR5SG9sZHModGhp
cywgaGVhcCwgbV9oZWFwSW5kZXgpKQorICAgIGNvbnN0IGF1dG8mIGhlYXAgPSBtX2hlYXBJdGVt
LT50aW1lckhlYXAoKTsKKyAgICB1bnNpZ25lZCBoZWFwSW5kZXggPSBtX2hlYXBJdGVtLT5oZWFw
SW5kZXgoKTsKKyAgICBpZiAoIXBhcmVudEhlYXBQcm9wZXJ0eUhvbGRzKHRoaXMsIGhlYXAsIGhl
YXBJbmRleCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBjaGlsZEluZGV4
MSA9IDIgKiBtX2hlYXBJbmRleCArIDE7CisgICAgdW5zaWduZWQgY2hpbGRJbmRleDEgPSAyICog
aGVhcEluZGV4ICsgMTsKICAgICB1bnNpZ25lZCBjaGlsZEluZGV4MiA9IGNoaWxkSW5kZXgxICsg
MTsKICAgICByZXR1cm4gY2hpbGRIZWFwUHJvcGVydHlIb2xkcyh0aGlzLCBoZWFwLCBjaGlsZElu
ZGV4MSkgJiYgY2hpbGRIZWFwUHJvcGVydHlIb2xkcyh0aGlzLCBoZWFwLCBjaGlsZEluZGV4Mik7
CiB9CiAKIHZvaWQgVGltZXJCYXNlOjp1cGRhdGVIZWFwSWZOZWVkZWQoTW9ub3RvbmljVGltZSBv
bGRUaW1lKQogewotICAgIGlmIChtX25leHRGaXJlVGltZSAmJiBoYXNWYWxpZEhlYXBQb3NpdGlv
bigpKQorICAgIGF1dG8gZmlyZVRpbWUgPSBuZXh0RmlyZVRpbWUoKTsKKyAgICBpZiAoZmlyZVRp
bWUgJiYgaGFzVmFsaWRIZWFwUG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotI2lmbmRlZiBO
REVCVUcKLSAgICBpbnQgb2xkSGVhcEluZGV4ID0gbV9oZWFwSW5kZXg7CisKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG9sZEhlYXBJbmRleDsKKyAgICBpZiAo
bV9oZWFwSXRlbS0+aXNJbkhlYXAoKSkKKyAgICAgICAgb2xkSGVhcEluZGV4ID0gbV9oZWFwSXRl
bS0+aGVhcEluZGV4KCk7CiAjZW5kaWYKKwogICAgIGlmICghb2xkVGltZSkKICAgICAgICAgaGVh
cEluc2VydCgpOwotICAgIGVsc2UgaWYgKCFtX25leHRGaXJlVGltZSkKKyAgICBlbHNlIGlmICgh
ZmlyZVRpbWUpCiAgICAgICAgIGhlYXBEZWxldGUoKTsKLSAgICBlbHNlIGlmIChtX25leHRGaXJl
VGltZSA8IG9sZFRpbWUpCisgICAgZWxzZSBpZiAoZmlyZVRpbWUgPCBvbGRUaW1lKQogICAgICAg
ICBoZWFwRGVjcmVhc2VLZXkoKTsKICAgICBlbHNlCiAgICAgICAgIGhlYXBJbmNyZWFzZUtleSgp
OwotICAgIEFTU0VSVChtX2hlYXBJbmRleCAhPSBvbGRIZWFwSW5kZXgpOworCisjaWYgIUFTU0VS
VF9ESVNBQkxFRAorICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXdIZWFwSW5kZXg7CisgICAgaWYg
KG1faGVhcEl0ZW0tPmlzSW5IZWFwKCkpCisgICAgICAgIG5ld0hlYXBJbmRleCA9IG1faGVhcEl0
ZW0tPmhlYXBJbmRleCgpOworICAgIEFTU0VSVChuZXdIZWFwSW5kZXggIT0gb2xkSGVhcEluZGV4
KTsKKyNlbmRpZgorCiAgICAgQVNTRVJUKCFpbkhlYXAoKSB8fCBoYXNWYWxpZEhlYXBQb3NpdGlv
bigpKTsKIH0KIApAQCAtMzgzLDEyICs0NzIsOCBAQCB2b2lkIFRpbWVyQmFzZTo6c2V0TmV4dEZp
cmVUaW1lKE1vbm90b25pCiAgICAgaWYgKG1fdW5hbGlnbmVkTmV4dEZpcmVUaW1lICE9IG5ld1Rp
bWUpCiAgICAgICAgIG1fdW5hbGlnbmVkTmV4dEZpcmVUaW1lID0gbmV3VGltZTsKIAotICAgIC8v
IEFjY2Vzc2luZyB0aHJlYWQgZ2xvYmFsIGRhdGEgaXMgc2xvdy4gQ2FjaGUgdGhlIGhlYXAgcG9p
bnRlci4KLSAgICBpZiAoIW1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwKQotICAgICAgICBt
X2NhY2hlZFRocmVhZEdsb2JhbFRpbWVySGVhcCA9ICZ0aHJlYWRHbG9iYWxUaW1lckhlYXAoKTsK
LQogICAgIC8vIEtlZXAgaGVhcCB2YWxpZCB3aGlsZSBjaGFuZ2luZyB0aGUgbmV4dC1maXJlIHRp
bWUuCi0gICAgTW9ub3RvbmljVGltZSBvbGRUaW1lID0gbV9uZXh0RmlyZVRpbWU7CisgICAgTW9u
b3RvbmljVGltZSBvbGRUaW1lID0gbmV4dEZpcmVUaW1lKCk7CiAgICAgLy8gRG9uJ3QgcmVhbGln
biB6ZXJvLWRlbGF5IHRpbWVycy4KICAgICBpZiAobmV3VGltZSkgewogICAgICAgICBpZiAoYXV0
byBuZXdBbGlnbmVkVGltZSA9IGFsaWduZWRGaXJlVGltZShuZXdUaW1lKSkKQEAgLTM5NiwxNiAr
NDgxLDIwIEBAIHZvaWQgVGltZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUoTW9ub3RvbmkKICAgICB9
CiAKICAgICBpZiAob2xkVGltZSAhPSBuZXdUaW1lKSB7Ci0gICAgICAgIG1fbmV4dEZpcmVUaW1l
ID0gbmV3VGltZTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhcnQgb2YgVGhy
ZWFkVGltZXJzLCBvciBhbm90aGVyIHBlci10aHJlYWQgc3RydWN0dXJlLgogICAgICAgICBzdGF0
aWMgc3RkOjphdG9taWM8dW5zaWduZWQ+IGN1cnJlbnRIZWFwSW5zZXJ0aW9uT3JkZXI7Ci0gICAg
ICAgIG1faGVhcEluc2VydGlvbk9yZGVyID0gY3VycmVudEhlYXBJbnNlcnRpb25PcmRlcisrOwor
ICAgICAgICBhdXRvIG5ld09yZGVyID0gY3VycmVudEhlYXBJbnNlcnRpb25PcmRlcisrOworCisg
ICAgICAgIGlmICghbV9oZWFwSXRlbSkKKyAgICAgICAgICAgIG1faGVhcEl0ZW0gPSBUaHJlYWRU
aW1lckhlYXBJdGVtOjpjcmVhdGUoKnRoaXMsIG5ld1RpbWUsIDApOworICAgICAgICBtX2hlYXBJ
dGVtLT50aW1lID0gbmV3VGltZTsKKyAgICAgICAgbV9oZWFwSXRlbS0+aW5zZXJ0aW9uT3JkZXIg
PSBuZXdPcmRlcjsKIAotICAgICAgICBib29sIHdhc0ZpcnN0VGltZXJJbkhlYXAgPSBtX2hlYXBJ
bmRleCA9PSAwOworICAgICAgICBib29sIHdhc0ZpcnN0VGltZXJJbkhlYXAgPSBtX2hlYXBJdGVt
LT5pc0ZpcnN0SW5IZWFwKCk7CiAKICAgICAgICAgdXBkYXRlSGVhcElmTmVlZGVkKG9sZFRpbWUp
OwogCi0gICAgICAgIGJvb2wgaXNGaXJzdFRpbWVySW5IZWFwID0gbV9oZWFwSW5kZXggPT0gMDsK
KyAgICAgICAgYm9vbCBpc0ZpcnN0VGltZXJJbkhlYXAgPSBtX2hlYXBJdGVtLT5pc0ZpcnN0SW5I
ZWFwKCk7CiAKICAgICAgICAgaWYgKHdhc0ZpcnN0VGltZXJJbkhlYXAgfHwgaXNGaXJzdFRpbWVy
SW5IZWFwKQogICAgICAgICAgICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnVw
ZGF0ZVNoYXJlZFRpbWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgJKHJldmlzaW9u
IDIzOTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJUaHJlYWRU
aW1lcnMuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CkBAIC0zMyw2ICszNCw3IEBACiAjaW5j
bHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKQEAgLTQwLDEwICs0Miw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gVGltZSBpbnRlcnZhbHMgYXJlIGFsbCBp
biBzZWNvbmRzLgotCi1jbGFzcyBUaW1lckhlYXBFbGVtZW50OwotCiBjbGFzcyBUaW1lckJhc2Ug
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbWVyQmFzZSk7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC02Myw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTZWNvbmRzIG5leHRV
bmFsaWduZWRGaXJlSW50ZXJ2YWwoKSBjb25zdDsKICAgICBTZWNvbmRzIHJlcGVhdEludGVydmFs
KCkgY29uc3QgeyByZXR1cm4gbV9yZXBlYXRJbnRlcnZhbDsgfQogCi0gICAgdm9pZCBhdWdtZW50
RmlyZUludGVydmFsKFNlY29uZHMgZGVsdGEpIHsgc2V0TmV4dEZpcmVUaW1lKG1fbmV4dEZpcmVU
aW1lICsgZGVsdGEpOyB9CisgICAgdm9pZCBhdWdtZW50RmlyZUludGVydmFsKFNlY29uZHMgZGVs
dGEpIHsgc2V0TmV4dEZpcmVUaW1lKG1faGVhcEl0ZW0tPnRpbWUgKyBkZWx0YSk7IH0KICAgICB2
b2lkIGF1Z21lbnRSZXBlYXRJbnRlcnZhbChTZWNvbmRzIGRlbHRhKSB7IGF1Z21lbnRGaXJlSW50
ZXJ2YWwoZGVsdGEpOyBtX3JlcGVhdEludGVydmFsICs9IGRlbHRhOyB9CiAKICAgICB2b2lkIGRp
ZENoYW5nZUFsaWdubWVudEludGVydmFsKCk7CkBAIC04MCw3ICs3OCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHNldE5leHRGaXJlVGltZShNb25vdG9uaWNUaW1lKTsKIAotICAgIGJvb2wgaW5I
ZWFwKCkgY29uc3QgeyByZXR1cm4gbV9oZWFwSW5kZXggIT0gLTE7IH0KKyAgICBib29sIGluSGVh
cCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhcEl0ZW0gJiYgbV9oZWFwSXRlbS0+aXNJbkhlYXAoKTsg
fQogCiAgICAgYm9vbCBoYXNWYWxpZEhlYXBQb3NpdGlvbigpIGNvbnN0OwogICAgIHZvaWQgdXBk
YXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUgb2xkVGltZSk7CkBAIC05MiwxNyArOTAsMTUg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGhlYXBJbnNlcnQoKTsKICAgICB2b2lkIGhlYXBQb3AoKTsK
ICAgICB2b2lkIGhlYXBQb3BNaW4oKTsKKyAgICBzdGF0aWMgdm9pZCBoZWFwRGVsZXRlTnVsbE1p
bihUaHJlYWRUaW1lckhlYXAmKTsKIAotICAgIFZlY3RvcjxUaW1lckJhc2UqPiYgdGltZXJIZWFw
KCkgY29uc3QgeyBBU1NFUlQobV9jYWNoZWRUaHJlYWRHbG9iYWxUaW1lckhlYXApOyByZXR1cm4g
Km1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwOyB9CisgICAgTW9ub3RvbmljVGltZSBuZXh0
RmlyZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2hlYXBJdGVtID8gbV9oZWFwSXRlbS0+dGltZSA6
IE1vbm90b25pY1RpbWUgeyB9OyB9CiAKLSAgICBNb25vdG9uaWNUaW1lIG1fbmV4dEZpcmVUaW1l
OyAvLyAwIGlmIGluYWN0aXZlCiAgICAgTW9ub3RvbmljVGltZSBtX3VuYWxpZ25lZE5leHRGaXJl
VGltZTsgLy8gbV9uZXh0RmlyZVRpbWUgbm90IGNvbnNpZGVyaW5nIGFsaWdubWVudCBpbnRlcnZh
bAogICAgIFNlY29uZHMgbV9yZXBlYXRJbnRlcnZhbDsgLy8gMCBpZiBub3QgcmVwZWF0aW5nCi0g
ICAgc2lnbmVkIGludCBtX2hlYXBJbmRleCA6IDMxOyAvLyAtMSBpZiBub3QgaW4gaGVhcAotICAg
IGJvb2wgbV93YXNEZWxldGVkIDogMTsKLSAgICB1bnNpZ25lZCBtX2hlYXBJbnNlcnRpb25PcmRl
cjsgLy8gVXNlZCB0byBrZWVwIG9yZGVyIGFtb25nIGVxdWFsLWZpcmUtdGltZSB0aW1lcnMKLSAg
ICBWZWN0b3I8VGltZXJCYXNlKj4qIG1fY2FjaGVkVGhyZWFkR2xvYmFsVGltZXJIZWFwIHsgbnVs
bHB0ciB9OworICAgIGJvb2wgbV93YXNEZWxldGVkIHsgZmFsc2UgfTsKIAorICAgIFJlZlB0cjxU
aHJlYWRUaW1lckhlYXBJdGVtPiBtX2hlYXBJdGVtOwogICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFk
IHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBUaHJlYWRUaW1lcnM7
CkBAIC0xNDIsNyArMTM4LDcgQEAgaW5saW5lIGJvb2wgVGltZXJCYXNlOjppc0FjdGl2ZSgpIGNv
bnN0CiAjZWxzZQogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCBwdGhyZWFkX21h
aW5fbnAoKSB8fCBtX3RocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlm
IC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1f
bmV4dEZpcmVUaW1lKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obmV4dEZpcmVUaW1l
KCkpOwogfQogCiBjbGFzcyBEZWZlcnJhYmxlT25lU2hvdFRpbWVyIDogcHJvdGVjdGVkIFRpbWVy
QmFzZSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>