<?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>191013</bug_id>
          
          <creation_ts>2018-10-28 07:30:15 -0700</creation_ts>
          <short_desc>[Web Animations] Implement the update animations and send events procedure</short_desc>
          <delta_ts>2018-10-30 08:00:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</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="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1472817</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-10-28 07:30:15 -0700</bug_when>
    <thetext>We should implement the &quot;update and send events&quot; procedure as specced at https://drafts.csswg.org/web-animations-1/#update-animations-and-send-events. We currently have something working but that&apos;s not quite correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472818</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-28 07:30:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/45620495&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472822</commentid>
    <comment_count>2</comment_count>
      <attachid>353258</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-10-28 08:37:39 -0700</bug_when>
    <thetext>Created attachment 353258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472992</commentid>
    <comment_count>3</comment_count>
      <attachid>353258</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-10-29 12:32:02 -0700</bug_when>
    <thetext>Comment on attachment 353258
Patch

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

&gt; Source/WebCore/ChangeLog:45
&gt; +        While we implemented the various parts of what the Web Animations specification refers to as the &quot;update animations and send events&quot;
&gt; +        procedure, we did not implement it as one function and in the correct order, specifically updating animations and sending events in
&gt; +        two separate tasks. We now have a single method on DocumentTimeline which runs as the DisplayRefreshMonitor fires to update each
&gt; +        &quot;relevant&quot; animation with the current time, perform a microtask checkpoint and dispatch events.
&gt; +
&gt; +        Implementing this procedure allowed us to make several enhancements:
&gt; +
&gt; +        1. We introduce the concept of a &quot;relevant&quot; animation, which is essentially an animation that is either pending or playing. All animations
&gt; +        in a different state is no longer owned by the DocumentTimeline and can thus be destroyed if the developer doesn&apos;t hold references in JS.
&gt; +        Maintaining such a list guarantees that we&apos;re only updating animations that would have changed state since the last time the &quot;update animations
&gt; +        and send events&quot; procedure was run. Note that DeclarativeAnimation instances are also considered to be relevant if they have queued DOM events
&gt; +        to dispatch as they could otherwise be destroyed before they can fully dispatch them.
&gt; +
&gt; +        2. We no longer conflate the timing model and effects. Until now the way we would update animations was to go through all elements for which
&gt; +        we had a registered animation, invalidate their style and finally forcing a style update on the document. We had a separate data structure where
&gt; +        we help animations without targets so we update these as well in a separate pass, in order to make sure that promises and events would fire for
&gt; +        them as expected. We now let the &quot;update animations and send events&quot; procedure update the timing of all relevant animations and let individual
&gt; +        animation effects invalidate their style as needed, the document style invalidation happening naturally without DocumentTimeline forcing it. 
&gt; +
&gt; +        3. We use a single step to schedule the update of animations, which is to register for a display refresh monitor update provided a &quot;relevant&quot;
&gt; +        animation is known since the previous update. Until now we first had an &quot;timing model invalidation&quot; task scheduled upon any change of an animation&apos;s
&gt; +        timing model, which would then create a timer to the earliest moment any listed animation would require an update, finally registering a display
&gt; +        refresh monitor update, which used at least GenericTaskQueue&lt;Timer&gt; and potentially two, whereas we use none right now.
&gt; +
&gt; +        4. We allow for a display refresh monitor update to be canceled should the number of &quot;relevant&quot; animations since the last update goes back to 0.
&gt; +
&gt; +        To facilitate all of this, we have changed the m_animations ListHashSet to contain only the &quot;relevant&quot; animations, and no longer every animation created
&gt; +        that has this DocumentTimeline set as their &quot;timeline&quot; property. To keep this list current, every single change that changes a given animation&apos;s timing
&gt; +        ends up calling AnimationTimeline::animationTimingDidChange() passing the animation as the sole parameter and adding this animation to m_animations. We
&gt; +        immediately schedule a display refresh monitor update if one wasn&apos;t already scheduled. Then, when running the &quot;update animations and send events&quot;
&gt; +        procedure, we call a new WebAnimation::tick() method on each of those animations, which updates this animation&apos;s effect and relevance, using the newly
&gt; +        computed relevance to identify whether this animation should be kept in the m_animations ListHashSet.
&gt; +
&gt; +        This is only the first step towards a more efficient update and ownership model of animations by the document timeline since animations created as CSS
&gt; +        Animations and CSS Transitions are committed through CSS have dedicated data structures that are not updated in this particular patch, but this will be
&gt; +        addressed in a followup to keep this already significant patch smaller. Another issue that will be addressed later is the ability to not schedule display
&gt; +        refresh monitor udpates when only accelerated animations are running.

If the ChangeLog is so huge, I&apos;m sure you could have found a way to split this patch up :)

Nit: &quot;in a different state is&quot; -&gt; &quot;in a different state are&quot;

&gt; Source/WebCore/animation/AnimationTimeline.cpp:67
&gt; +void AnimationTimeline::removeAnimation(WebAnimation* animation)

Since you never check for null, why doesn&apos;t this method take an Animation&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473211</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-10-30 02:30:13 -0700</bug_when>
    <thetext>Committed r237587: &lt;https://trac.webkit.org/changeset/237587&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473218</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-10-30 04:28:02 -0700</bug_when>
    <thetext>This patch broke the GTK port, see for instance:

https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r237587%20(8641)/animations/3d/matrix-transform-type-animation-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473223</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-10-30 04:54:01 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #5)
&gt; This patch broke the GTK port, see for instance:
&gt; 
&gt; https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/
&gt; r237587%20(8641)/animations/3d/matrix-transform-type-animation-crash-log.txt

It&apos;s an issue in our graphics stack, we don&apos;t prevent a double-entry in layerFlushTimer() when we should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473252</commentid>
    <comment_count>7</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-10-30 08:00:56 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #6)
&gt; (In reply to Philippe Normand from comment #5)
&gt; &gt; This patch broke the GTK port, see for instance:
&gt; &gt; 
&gt; &gt; https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/
&gt; &gt; r237587%20(8641)/animations/3d/matrix-transform-type-animation-crash-log.txt
&gt; 
&gt; It&apos;s an issue in our graphics stack, we don&apos;t prevent a double-entry in
&gt; layerFlushTimer() when we should.

Resolved in bug #191066. Sorry for the noise.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353258</attachid>
            <date>2018-10-28 08:37:39 -0700</date>
            <delta_ts>2018-10-29 12:32:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191013-20181028163737.patch</filename>
            <type>text/plain</type>
            <size>88891</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI4NjYyYjIyNGVmNGE1
YzU4YmYzYWFlZDJiMjkwNjViY2IwZTg2OS4uYTg2N2ZmODllZDRkNmI1NDFkZjY3OWUzMjlhMjQy
NmE0YWI4ZjczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NSBAQAorMjAxOC0xMC0yOCAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgQW5pbWF0aW9u
c10gSW1wbGVtZW50IHRoZSB1cGRhdGUgYW5pbWF0aW9ucyBhbmQgc2VuZCBldmVudHMgcHJvY2Vk
dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEw
MTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1NjIwNDk1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoaWxlIHdlIGltcGxlbWVudGVkIHRoZSB2
YXJpb3VzIHBhcnRzIG9mIHdoYXQgdGhlIFdlYiBBbmltYXRpb25zIHNwZWNpZmljYXRpb24gcmVm
ZXJzIHRvIGFzIHRoZSAidXBkYXRlIGFuaW1hdGlvbnMgYW5kIHNlbmQgZXZlbnRzIgorICAgICAg
ICBwcm9jZWR1cmUsIHdlIGRpZCBub3QgaW1wbGVtZW50IGl0IGFzIG9uZSBmdW5jdGlvbiBhbmQg
aW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHNwZWNpZmljYWxseSB1cGRhdGluZyBhbmltYXRpb25zIGFu
ZCBzZW5kaW5nIGV2ZW50cyBpbgorICAgICAgICB0d28gc2VwYXJhdGUgdGFza3MuIFdlIG5vdyBo
YXZlIGEgc2luZ2xlIG1ldGhvZCBvbiBEb2N1bWVudFRpbWVsaW5lIHdoaWNoIHJ1bnMgYXMgdGhl
IERpc3BsYXlSZWZyZXNoTW9uaXRvciBmaXJlcyB0byB1cGRhdGUgZWFjaAorICAgICAgICAicmVs
ZXZhbnQiIGFuaW1hdGlvbiB3aXRoIHRoZSBjdXJyZW50IHRpbWUsIHBlcmZvcm0gYSBtaWNyb3Rh
c2sgY2hlY2twb2ludCBhbmQgZGlzcGF0Y2ggZXZlbnRzLgorCisgICAgICAgIEltcGxlbWVudGlu
ZyB0aGlzIHByb2NlZHVyZSBhbGxvd2VkIHVzIHRvIG1ha2Ugc2V2ZXJhbCBlbmhhbmNlbWVudHM6
CisKKyAgICAgICAgMS4gV2UgaW50cm9kdWNlIHRoZSBjb25jZXB0IG9mIGEgInJlbGV2YW50IiBh
bmltYXRpb24sIHdoaWNoIGlzIGVzc2VudGlhbGx5IGFuIGFuaW1hdGlvbiB0aGF0IGlzIGVpdGhl
ciBwZW5kaW5nIG9yIHBsYXlpbmcuIEFsbCBhbmltYXRpb25zCisgICAgICAgIGluIGEgZGlmZmVy
ZW50IHN0YXRlIGlzIG5vIGxvbmdlciBvd25lZCBieSB0aGUgRG9jdW1lbnRUaW1lbGluZSBhbmQg
Y2FuIHRodXMgYmUgZGVzdHJveWVkIGlmIHRoZSBkZXZlbG9wZXIgZG9lc24ndCBob2xkIHJlZmVy
ZW5jZXMgaW4gSlMuCisgICAgICAgIE1haW50YWluaW5nIHN1Y2ggYSBsaXN0IGd1YXJhbnRlZXMg
dGhhdCB3ZSdyZSBvbmx5IHVwZGF0aW5nIGFuaW1hdGlvbnMgdGhhdCB3b3VsZCBoYXZlIGNoYW5n
ZWQgc3RhdGUgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgInVwZGF0ZSBhbmltYXRpb25zCisgICAg
ICAgIGFuZCBzZW5kIGV2ZW50cyIgcHJvY2VkdXJlIHdhcyBydW4uIE5vdGUgdGhhdCBEZWNsYXJh
dGl2ZUFuaW1hdGlvbiBpbnN0YW5jZXMgYXJlIGFsc28gY29uc2lkZXJlZCB0byBiZSByZWxldmFu
dCBpZiB0aGV5IGhhdmUgcXVldWVkIERPTSBldmVudHMKKyAgICAgICAgdG8gZGlzcGF0Y2ggYXMg
dGhleSBjb3VsZCBvdGhlcndpc2UgYmUgZGVzdHJveWVkIGJlZm9yZSB0aGV5IGNhbiBmdWxseSBk
aXNwYXRjaCB0aGVtLgorCisgICAgICAgIDIuIFdlIG5vIGxvbmdlciBjb25mbGF0ZSB0aGUgdGlt
aW5nIG1vZGVsIGFuZCBlZmZlY3RzLiBVbnRpbCBub3cgdGhlIHdheSB3ZSB3b3VsZCB1cGRhdGUg
YW5pbWF0aW9ucyB3YXMgdG8gZ28gdGhyb3VnaCBhbGwgZWxlbWVudHMgZm9yIHdoaWNoCisgICAg
ICAgIHdlIGhhZCBhIHJlZ2lzdGVyZWQgYW5pbWF0aW9uLCBpbnZhbGlkYXRlIHRoZWlyIHN0eWxl
IGFuZCBmaW5hbGx5IGZvcmNpbmcgYSBzdHlsZSB1cGRhdGUgb24gdGhlIGRvY3VtZW50LiBXZSBo
YWQgYSBzZXBhcmF0ZSBkYXRhIHN0cnVjdHVyZSB3aGVyZQorICAgICAgICB3ZSBoZWxwIGFuaW1h
dGlvbnMgd2l0aG91dCB0YXJnZXRzIHNvIHdlIHVwZGF0ZSB0aGVzZSBhcyB3ZWxsIGluIGEgc2Vw
YXJhdGUgcGFzcywgaW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQgcHJvbWlzZXMgYW5kIGV2ZW50
cyB3b3VsZCBmaXJlIGZvcgorICAgICAgICB0aGVtIGFzIGV4cGVjdGVkLiBXZSBub3cgbGV0IHRo
ZSAidXBkYXRlIGFuaW1hdGlvbnMgYW5kIHNlbmQgZXZlbnRzIiBwcm9jZWR1cmUgdXBkYXRlIHRo
ZSB0aW1pbmcgb2YgYWxsIHJlbGV2YW50IGFuaW1hdGlvbnMgYW5kIGxldCBpbmRpdmlkdWFsCisg
ICAgICAgIGFuaW1hdGlvbiBlZmZlY3RzIGludmFsaWRhdGUgdGhlaXIgc3R5bGUgYXMgbmVlZGVk
LCB0aGUgZG9jdW1lbnQgc3R5bGUgaW52YWxpZGF0aW9uIGhhcHBlbmluZyBuYXR1cmFsbHkgd2l0
aG91dCBEb2N1bWVudFRpbWVsaW5lIGZvcmNpbmcgaXQuIAorCisgICAgICAgIDMuIFdlIHVzZSBh
IHNpbmdsZSBzdGVwIHRvIHNjaGVkdWxlIHRoZSB1cGRhdGUgb2YgYW5pbWF0aW9ucywgd2hpY2gg
aXMgdG8gcmVnaXN0ZXIgZm9yIGEgZGlzcGxheSByZWZyZXNoIG1vbml0b3IgdXBkYXRlIHByb3Zp
ZGVkIGEgInJlbGV2YW50IgorICAgICAgICBhbmltYXRpb24gaXMga25vd24gc2luY2UgdGhlIHBy
ZXZpb3VzIHVwZGF0ZS4gVW50aWwgbm93IHdlIGZpcnN0IGhhZCBhbiAidGltaW5nIG1vZGVsIGlu
dmFsaWRhdGlvbiIgdGFzayBzY2hlZHVsZWQgdXBvbiBhbnkgY2hhbmdlIG9mIGFuIGFuaW1hdGlv
bidzCisgICAgICAgIHRpbWluZyBtb2RlbCwgd2hpY2ggd291bGQgdGhlbiBjcmVhdGUgYSB0aW1l
ciB0byB0aGUgZWFybGllc3QgbW9tZW50IGFueSBsaXN0ZWQgYW5pbWF0aW9uIHdvdWxkIHJlcXVp
cmUgYW4gdXBkYXRlLCBmaW5hbGx5IHJlZ2lzdGVyaW5nIGEgZGlzcGxheQorICAgICAgICByZWZy
ZXNoIG1vbml0b3IgdXBkYXRlLCB3aGljaCB1c2VkIGF0IGxlYXN0IEdlbmVyaWNUYXNrUXVldWU8
VGltZXI+IGFuZCBwb3RlbnRpYWxseSB0d28sIHdoZXJlYXMgd2UgdXNlIG5vbmUgcmlnaHQgbm93
LgorCisgICAgICAgIDQuIFdlIGFsbG93IGZvciBhIGRpc3BsYXkgcmVmcmVzaCBtb25pdG9yIHVw
ZGF0ZSB0byBiZSBjYW5jZWxlZCBzaG91bGQgdGhlIG51bWJlciBvZiAicmVsZXZhbnQiIGFuaW1h
dGlvbnMgc2luY2UgdGhlIGxhc3QgdXBkYXRlIGdvZXMgYmFjayB0byAwLgorCisgICAgICAgIFRv
IGZhY2lsaXRhdGUgYWxsIG9mIHRoaXMsIHdlIGhhdmUgY2hhbmdlZCB0aGUgbV9hbmltYXRpb25z
IExpc3RIYXNoU2V0IHRvIGNvbnRhaW4gb25seSB0aGUgInJlbGV2YW50IiBhbmltYXRpb25zLCBh
bmQgbm8gbG9uZ2VyIGV2ZXJ5IGFuaW1hdGlvbiBjcmVhdGVkCisgICAgICAgIHRoYXQgaGFzIHRo
aXMgRG9jdW1lbnRUaW1lbGluZSBzZXQgYXMgdGhlaXIgInRpbWVsaW5lIiBwcm9wZXJ0eS4gVG8g
a2VlcCB0aGlzIGxpc3QgY3VycmVudCwgZXZlcnkgc2luZ2xlIGNoYW5nZSB0aGF0IGNoYW5nZXMg
YSBnaXZlbiBhbmltYXRpb24ncyB0aW1pbmcKKyAgICAgICAgZW5kcyB1cCBjYWxsaW5nIEFuaW1h
dGlvblRpbWVsaW5lOjphbmltYXRpb25UaW1pbmdEaWRDaGFuZ2UoKSBwYXNzaW5nIHRoZSBhbmlt
YXRpb24gYXMgdGhlIHNvbGUgcGFyYW1ldGVyIGFuZCBhZGRpbmcgdGhpcyBhbmltYXRpb24gdG8g
bV9hbmltYXRpb25zLiBXZQorICAgICAgICBpbW1lZGlhdGVseSBzY2hlZHVsZSBhIGRpc3BsYXkg
cmVmcmVzaCBtb25pdG9yIHVwZGF0ZSBpZiBvbmUgd2Fzbid0IGFscmVhZHkgc2NoZWR1bGVkLiBU
aGVuLCB3aGVuIHJ1bm5pbmcgdGhlICJ1cGRhdGUgYW5pbWF0aW9ucyBhbmQgc2VuZCBldmVudHMi
CisgICAgICAgIHByb2NlZHVyZSwgd2UgY2FsbCBhIG5ldyBXZWJBbmltYXRpb246OnRpY2soKSBt
ZXRob2Qgb24gZWFjaCBvZiB0aG9zZSBhbmltYXRpb25zLCB3aGljaCB1cGRhdGVzIHRoaXMgYW5p
bWF0aW9uJ3MgZWZmZWN0IGFuZCByZWxldmFuY2UsIHVzaW5nIHRoZSBuZXdseQorICAgICAgICBj
b21wdXRlZCByZWxldmFuY2UgdG8gaWRlbnRpZnkgd2hldGhlciB0aGlzIGFuaW1hdGlvbiBzaG91
bGQgYmUga2VwdCBpbiB0aGUgbV9hbmltYXRpb25zIExpc3RIYXNoU2V0LgorCisgICAgICAgIFRo
aXMgaXMgb25seSB0aGUgZmlyc3Qgc3RlcCB0b3dhcmRzIGEgbW9yZSBlZmZpY2llbnQgdXBkYXRl
IGFuZCBvd25lcnNoaXAgbW9kZWwgb2YgYW5pbWF0aW9ucyBieSB0aGUgZG9jdW1lbnQgdGltZWxp
bmUgc2luY2UgYW5pbWF0aW9ucyBjcmVhdGVkIGFzIENTUworICAgICAgICBBbmltYXRpb25zIGFu
ZCBDU1MgVHJhbnNpdGlvbnMgYXJlIGNvbW1pdHRlZCB0aHJvdWdoIENTUyBoYXZlIGRlZGljYXRl
ZCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgbm90IHVwZGF0ZWQgaW4gdGhpcyBwYXJ0aWN1bGFy
IHBhdGNoLCBidXQgdGhpcyB3aWxsIGJlCisgICAgICAgIGFkZHJlc3NlZCBpbiBhIGZvbGxvd3Vw
IHRvIGtlZXAgdGhpcyBhbHJlYWR5IHNpZ25pZmljYW50IHBhdGNoIHNtYWxsZXIuIEFub3RoZXIg
aXNzdWUgdGhhdCB3aWxsIGJlIGFkZHJlc3NlZCBsYXRlciBpcyB0aGUgYWJpbGl0eSB0byBub3Qg
c2NoZWR1bGUgZGlzcGxheQorICAgICAgICByZWZyZXNoIG1vbml0b3IgdWRwYXRlcyB3aGVuIG9u
bHkgYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBhcmUgcnVubmluZy4KKworICAgICAgICAqIGFuaW1h
dGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25U
aW1lbGluZTo6YW5pbWF0aW9uVGltaW5nRGlkQ2hhbmdlKTogQ2FsbGVkIGJ5IGFuaW1hdGlvbnMg
d2hlbiBhbnkgYXNwZWN0IG9mIHRoZWlyIHRpbWluZyBtb2RlbCBjaGFuZ2VzLiBUaGUgcHJvdmlk
ZWQgYW5pbWF0aW9uIGlzIHRoZW4KKyAgICAgICAgYWRkZWQgdG8gdGhlIG1fYW5pbWF0aW9ucyBs
aXN0IHVubGVzcyBpdHMgdGltZWxpbmUgaXMgbm8gbG9uZ2VyIHRoaXMgdGltZWxpbmUuCisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6cmVtb3ZlQW5pbWF0aW9uKTogUmVtb3Zl
IHRoZSBwcm92aWRlZCBhbmltYXRpb24gZnJvbSBtX2FuaW1hdGlvbnMgYW5kIHJlbW92ZSBhbnkg
YW5pbWF0aW9uIHJlZ2lzdGVyZWQgb24gdGhlIGVsZW1lbnQtc3BlY2lmaWMKKyAgICAgICAgYW5p
bWF0aW9uIGxpc3RzIGlmIHRoaXMgYW5pbWF0aW9uIGhhcyBhbiBlZmZlY3Qgd2l0aCBhIHRhcmdl
dC4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNBZGRl
ZFRvRWxlbWVudCk6IFdlIG5vIGxvbmdlciBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZSBtX2FuaW1h
dGlvbnNXaXRob3V0VGFyZ2V0IGRhdGEgc3RydWN0dXJlIHNpbmNlIHdlIHJlbW92ZWQgaXQuCisg
ICAgICAgIChXZWJDb3JlOjpyZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCk6IEZpeCBhIGJ1ZyB3
aGVyZSB3ZSB3b3VsZCByZW1vdmUgYW55IENTU1RyYW5zaXRpb24gaW4gdGhlIHByb3ZpZGVkIG1h
cCB0aGF0IGhhZCBhIG1hdGNoaW5nIHRyYW5zaXRpb24tcHJvcGVydHkgaW5zdGVhZAorICAgICAg
ICBvZiBjaGVja2luZyB0aGUgQ1NTVHJhbnNpdGlvbiByZWdpc3RlcmVkIGZvciB0aGlzIHRyYW5z
aXRpb24tcHJvcGVydHkgd2FzIGluZGVlZCB0aGUgcHJvdmlkZWQgQ1NTVHJhbnNpdGlvbi4gVGhl
IG90aGVyIGNvZGUgY2hhbmdlcyBpbiB0aGlzIHBhdGNoIG1hZGUgdGhpcworICAgICAgICBjb2Rl
IG5vdyBjYXVzZSByZWdyZXNzaW9ucyBpbiB0aGUgV2ViIFBsYXRmb3JtIFRlc3RzLgorICAgICAg
ICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxl
bWVudCk6IFN0b3AgdXBkYXRpbmcgbV9hbmltYXRpb25zV2l0aG91dFRhcmdldCBzaW5jZSBpdCBu
byBsb25nZXIgZXhpc3RzLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmVs
ZW1lbnRXYXNSZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1
cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudCk6IEZpeCBhIHNtYWxsIGVycm9yIHRoYXQgY2F1
c2VkIGEgcmVncmVzc2lvbiBpbiB0aGUgV2ViIFBsYXRmb3JtIFRlc3RzIHdoZXJlIHdlIGNvdWxk
IGF0dGVtcHQgdG8KKyAgICAgICAgY2FsbCBzZXRCYWNraW5nQW5pbWF0aW9uKCkgb24gYSBudWxs
cHRyIGluc3RlYWQgb2YgYSB2YWxpZCBDU1NBbmltYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25UaW1lbGluZTo6Y2FuY2VsT3JSZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6YWRkQW5pbWF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjpoYXNFbGVtZW50QW5pbWF0aW9ucyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjplbGVtZW50VG9Bbmlt
YXRpb25zTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5l
OjplbGVtZW50VG9DU1NBbmltYXRpb25zTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvblRpbWVsaW5lOjplbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcCk6IERlbGV0ZWQu
CisgICAgICAgICogYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVHJhbnNpdGlvbjo6Y2FuQmVMaXN0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGFuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0RlY2xhcmF0
aXZlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9u
Ojp0aWNrKTogQ2FsbCB0aGUgc3VwZXJjbGFzcydzIG1ldGhvZCBhbmQgcXVldWUgYW55IG5lY2Vz
c2FyeSBET00gZXZlbnRzIHJlZmxlY3RpbmcgdGhlIHRpbWluZyBtb2RlbCBjaGFuZ2VzLgorICAg
ICAgICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246Om5lZWRzVGljayBjb25zdCk6IENh
bGwgdGhlIHN1cGVyY2xhc3MncyBtZXRob2QgYW5kIHJldHVybiB0cnVlIGFsc28gaWYgd2UgaGF2
ZSBwZW5kaW5nIGV2ZW50cyBzaW5jZSBvdGhlcndpc2UgdGhpcyBhbmltYXRpb24KKyAgICAgICAg
Y291bGQgYmUgcmVtb3ZlZCBmcm9tIG1fYW5pbWF0aW9ucyBvbiBpdHMgQW5pbWF0aW9uVGltZWxp
bmUgYW5kIHBvdGVudGlhbGx5IGRlc3Ryb3llZCBiZWZvcmUgdGhlIEdlbmVyaWNFdmVudFF1ZXVl
IGhhZCBhIGNoYW5jZSB0byBkaXNwYXRjaCBhbGwgZXZlbnRzLgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OnN0YXJ0VGltZSBjb25zdCk6IFdlIHJlbW92ZWQgdGhlIGN1
c3RvbSBiaW5kaW5nIGZvciB0aGlzIElETCBwcm9wZXJ0eSBhbmQgcmVuYW1lZCB0aGUgbWV0aG9k
IGZyb20gYmluZGluZ3NTdGFydFRpbWUgdG8gc3RhcnRUaW1lLgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OnNldFN0YXJ0VGltZSk6IFdlIHJlbW92ZWQgdGhlIGN1c3Rv
bSBiaW5kaW5nIGZvciB0aGlzIElETCBwcm9wZXJ0eSBhbmQgcmVuYW1lZCB0aGUgbWV0aG9kIGZy
b20gc2V0QmluZGluZ3NTdGFydFRpbWUgdG8gc2V0U3RhcnRUaW1lLgorICAgICAgICAoV2ViQ29y
ZTo6RGVjbGFyYXRpdmVBbmltYXRpb246OmJpbmRpbmdzU3RhcnRUaW1lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjpzZXRCaW5kaW5nc1N0
YXJ0VGltZSk6IERlbGV0ZWQuCisgICAgICAgICogYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0
aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50QW5pbWF0aW9uU2NoZWR1bGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50QW5pbWF0aW9uU2NoZWR1bGVyOjp1bnNjaGVk
dWxlV2ViQW5pbWF0aW9uc1Jlc29sdXRpb24pOiBBZGQgYSBtZXRob2QgdG8gbWFyayB0aGF0IHdl
IG5vIGxvbmdlciBuZWVkIGEgZGlzcGxheSByZWZyZXNoIG1vbml0b3IgdXBkYXRlIGZvciB0aGlz
CisgICAgICAgIGRvY3VtZW50J3MgYW5pbWF0aW9uIHRpbWVsaW5lLiBUaGlzIGlzIGNhbGxlZCB3
aGVuIG1fYW5pbWF0aW9ucyBiZWNvbWVzIGVtcHR5LgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1
bWVudEFuaW1hdGlvblNjaGVkdWxlci5oOgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRp
bWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OkRvY3VtZW50
VGltZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6ZGV0YWNoRnJv
bURvY3VtZW50KTogU3RvcCBjbGVhcmluZyB0d28gdGFzayBxdWV1ZXMgYW5kIGEgdGltZXIgdGhh
dCBubyBsb25nZXIgZXhpc3QgYW5kIGluc3RlYWQgb25seSBjbGVhciB0aGUgdGFzayBxdWV1ZSB0
byBjbGVhcgorICAgICAgICB0aGUgY2FjaGVkIGN1cnJlbnQgdGltZSwgd2hpY2ggd2UgcXVldWUg
YW55IHRpbWUgd2UgZ2VuZXJhdGUgYSBuZXcgb25lIChzZWUgRG9jdW1lbnRUaW1lbGluZTo6Y3Vy
cmVudFRpbWUpLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6Z2V0QW5pbWF0
aW9ucyBjb25zdCk6IFVzZSBpc1JlbGV2YW50KCkgaW5zdGVhZCBvZiBjYW5CZUxpc3RlZCgpLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6dXBkYXRlVGhyb3R0bGluZ1N0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnN1c3BlbmRBbmltYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnJlc3VtZUFuaW1hdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6bnVtYmVyT2ZBY3RpdmVBbmlt
YXRpb25zRm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVs
aW5lOjpjdXJyZW50VGltZSk6IFF1ZXVlIGEgdGFzayBpbiB0aGUgbmV3IG1fY3VycmVudFRpbWVD
bGVhcmluZ1Rhc2tRdWV1ZSB0YXNrIHF1ZXVlIHRvIGNsZWFyIHRoZSBjdXJyZW50IHRpbWUgdGhh
dCB3ZSd2ZSBnZW5lcmF0ZWQgYW5kIGNhY2hlZAorICAgICAgICBpbiB0aGUgbmV4dCBydW4gbG9v
cCAocHJvdmlkZWQgYWxsIHBlbmRpbmcgSlMgZXhlY3V0aW9uIGhhcyBhbHNvIGNvbXBsZXRlZCku
IAorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6bWF5YmVDbGVhckNhY2hlZEN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxl
QW5pbWF0aW9uUmVzb2x1dGlvbklmTmVlZGVkKTogU2NoZWR1bGUgYSBkaXNwbGF5IHJlZnJlc2gg
bW9uaXRvciB1cGRhdGUgaWYgd2UgYXJlIG5vdCBzdXNwZW5kZWQgYW5kIGhhdmUgInJlbGV2YW50
IiBhbmltYXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0
aW9uVGltaW5nRGlkQ2hhbmdlKTogQ2FsbCBzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb25JZk5l
ZWRlZCgpIGFmdGVyIGNhbGxpbmcgdGhlIHN1cGVyY2xhc3MncyBpbXBsZW1lbnRhdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnJlbW92ZUFuaW1hdGlvbik6IENhbGwg
dW5zY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKSBpZiB0aGUgbGlzdCBvZiAicmVsZXZhbnQi
IGFuaW1hdGlvbnMgaXMgbm93IGVtcHR5LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1l
bGluZTo6dW5zY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24pOiBVbnNjaGVkdWxlIGEgcGVuZGlu
ZyBkaXNwbGF5IHJlZnJlc2ggbW9uaXRvciB1cGRhdGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRpbWVsaW5lOjphbmltYXRpb25SZXNvbHV0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjp1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyk6
IEltcGxlbWVudCB0aGUgInVwZGF0ZSBhbmltYXRpb25zIGFuZCBzZW5kIGV2ZW50cyIgcHJvY2Vk
dXJlIGFzIHNwZWNpZmllZCBieSB0aGUgV2ViIEFuaW1hdGlvbnMgc3BlYy4KKyAgICAgICAgRHVy
aW5nIHRoaXMgcHJvY2VkdXJlLCB3ZSBjYWxsIHRpY2soKSBvbiBhbGwgYW5pbWF0aW9ucyBsaXN0
ZWQgaW4gbV9hbmltYXRpb25zIGFuZCBjcmVhdGUgYSBsaXN0IG9mIGFuaW1hdGlvbnMgdG8gcmVt
b3ZlIGZyb20gdGhhdCBsaXN0IGlmIHRoaXMgYW5pbWF0aW9uIGlzIG5vCisgICAgICAgIGxvbmdl
ciByZWxldmFudCBmb2xsb3dpbmcgdGhlIGNhbGwgdG8gdGljaygpLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRUaW1lbGluZTo6ZW5xdWV1ZUFuaW1hdGlvblBsYXliYWNrRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6dGltaW5nTW9kZWxEaWRDaGFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6c2NoZWR1bGVJbnZh
bGlkYXRpb25UYXNrSWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaW1lbGluZTo6cGVyZm9ybUludmFsaWRhdGlvblRhc2spOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6dXBkYXRlQW5pbWF0aW9uU2NoZWR1bGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0aW9uU2NoZWR1
bGVUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxp
bmU6OnVwZGF0ZUFuaW1hdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFy
ZUFuaW1hdGlvblBsYXliYWNrRXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGltZWxpbmU6OnBlcmZvcm1FdmVudERpc3BhdGNoVGFzayk6IERlbGV0ZWQuCisgICAg
ICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaDoKKyAgICAgICAgKiBhbmltYXRpb24v
V2ViQW5pbWF0aW9uLmNwcDogVGhlIG1ham9yaXR5IG9mIHRoZSBjaGFuZ2VzIHRvIHRoaXMgY2xh
c3MgaXMgdGhhdCB3ZSBjYWxsIHRoZSBuZXcgdGltaW5nRGlkQ2hhbmdlKCkgbWV0aG9kIHdoZW4g
YW55IGNvZGUgdGhhdCBtb2RpZmllcyB0aGUgdGltaW5nIG1vZGVsCisgICAgICAgIGlzIHJ1bi4g
V2UgYWxzbyByZW1vdmUgbWV0aG9kcyB0byBzZXQgdGhlIHBlbmRpbmcgcGxheSBhbmQgcGF1c2Ug
dGFza3MgYXMgd2VsbCBhcyB0aGUgYW5pbWF0aW9uJ3Mgc3RhcnQgdGltZSBhbmQgaG9sZCB0aW1l
IHNpbmNlIGFueSB0aW1lIHdlJ3JlIGNoYW5naW5nIHRoZXNlIGluc3RhbmNlCisgICAgICAgIHZh
cmlhYmxlcywgd2UgbGF0ZXIgYWxyZWFkeSBoYXZlIGEgY2FsbCB0byB1cGRhdGUgdGhlIHRpbWlu
ZyBtb2RlbCBhbmQgd2Ugd2VyZSBkb2luZyBtb3JlIHdvcmsgdGhhbiBuZWVkZWQuIEFzIGEgcmVz
dWx0IHdlIG5vIGxvbmdlciBuZWVkIGFuIGludGVybmFsIG1ldGhvZCB0byBzZXQgdGhlCisgICAg
ICAgIHN0YXJ0IHRpbWUgYW5kIGNhbiBzdG9wIHJlcXVpcmluZyBhIGN1c3RvbSBJREwgYmluZGlu
ZyBmb3IgdGhlICJzdGFydFRpbWUiIHByb3BlcnR5LgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5p
bWF0aW9uOjplZmZlY3RUaW1pbmdQcm9wZXJ0aWVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkFuaW1hdGlvbjo6c2V0RWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1h
dGlvbjo6c2V0RWZmZWN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9u
OjpzZXRUaW1lbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnNldFRpbWVs
aW5lSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpzdGFydFRpbWUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpzZXRTdGFydFRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpzaWxlbnRseVNldEN1cnJlbnRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6c2V0Q3VycmVudFRpbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpzZXRQbGF5YmFja1JhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQW5pbWF0aW9uOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0
aW9uOjpyZXNldFBlbmRpbmdUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246
OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnRpbWluZ0RpZENoYW5n
ZSk6IE5ldyBtZXRob2QgY2FsbGVkIGFueSB0aW1lIGEgdGltaW5nIHByb3BlcnR5IGNoYW5nZWQg
d2hlcmUgd2UgcnVuIHRoZSAidXBkYXRlIHRoZSBmaW5pc2hlZCBzdGF0ZSIgcHJvY2VkdXJlIGFu
ZCBub3RpZnkgdGhlCisgICAgICAgIGFuaW1hdGlvbidzIHRpbWVsaW5lIHRoYXQgaXRzIHRpbWlu
ZyBjaGFuZ2VkIHNvIHRoYXQgaXQgY2FuIGJlIGNvbnNpZGVyZWQgdGhlIG5leHQgdGltZSB0aGUg
InVwZGF0ZSBhbmltYXRpb25zIGFuZCBzZW5kIGV2ZW50cyIgcHJvY2VkdXJlIHJ1bnMuCisgICAg
ICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OmludmFsaWRhdGVFZmZlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQW5pbWF0aW9uOjp1cGRhdGVGaW5pc2hlZFN0YXRlKTogVXBkYXRlIHRoZSBh
bmltYXRpb24ncyByZWxldmFuY2UgYWZ0ZXIgcnVubmluZyB0aGUgcHJvY2VkdXJlIGFzIHNwZWNp
ZmllZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6cGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJBbmltYXRpb246OnJ1blBlbmRpbmdQbGF5VGFzayk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJBbmltYXRpb246OnBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlv
bjo6cnVuUGVuZGluZ1BhdXNlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246
Om5lZWRzVGljayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnRpY2sp
OiBOZXcgbWV0aG9kIGNhbGxlZCBkdXJpbmcgdGhlICJ1cGRhdGUgYW5pbWF0aW9ucyBhbmQgc2Vu
ZCBldmVudHMiIHByb2NlZHVyZSB3aGVyZSB3ZSBydW4gdGhlICJ1cGRhdGUgdGhlIGZpbmlzaGVk
IHN0YXRlIiBwcm9jZWR1cmUgYW5kIHJ1bgorICAgICAgICB0aGUgcGVuZGluZyBwbGF5IGFuZCBw
YXVzZSB0YXNrcy4KKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6cmVzb2x2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnVwZGF0ZVJlbGV2YW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJBbmltYXRpb246OmNvbXB1dGVSZWxldmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQW5pbWF0aW9uOjp0aW1pbmdNb2RlbERpZENoYW5nZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnNldEhvbGRUaW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6YmluZGluZ3NTdGFydFRpbWUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpzZXRCaW5kaW5nc1N0YXJ0VGlt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnNldFRpbWVUb1J1
blBlbmRpbmdQbGF5VGFzayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRp
b246OnNldFRpbWVUb1J1blBlbmRpbmdQYXVzZVRhc2spOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQW5pbWF0aW9uOjp1cGRhdGVQZW5kaW5nVGFza3MpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjp0aW1lVG9OZXh0UmVxdWlyZWRUaWNrIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6cnVuUGVuZGluZ1Rhc2tz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6Y2FuQmVMaXN0ZWQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6aXNSZWxldmFudCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJBbmltYXRpb246Omhhc1BlbmRpbmdQbGF5VGFzayBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OmlzRWZmZWN0SW52YWxpZGF0aW9uU3VzcGVuZGVk
KToKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmlkbDoKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBbmltYXRpb25zKTog
VXNlIGlzUmVsZXZhbnQoKSBpbnN0ZWFkIG9mIGNhbkJlTGlzdGVkKCkuCisKIDIwMTgtMTAtMjcg
IEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1h
dGlvbnNdIFJlbW92ZSBXZWJBbmltYXRpb246OmRlc2NyaXB0aW9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IDE5YzEwMDE1ZTdjYWUw
ZWUwZGJhMWI4OTdjZjhlODg2NjM1OGI4NWMuLjg4ZjI4YTk5YmI4NjE3YzhhMDY0ZmYwYmMyNDFh
YTU2NzFhODNlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25UaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRp
bWVsaW5lLmNwcApAQCAtNTUsMTggKzU1LDIzIEBAIEFuaW1hdGlvblRpbWVsaW5lOjp+QW5pbWF0
aW9uVGltZWxpbmUoKQogewogfQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5lOjphZGRBbmltYXRp
b24oUmVmPFdlYkFuaW1hdGlvbj4mJiBhbmltYXRpb24pCit2b2lkIEFuaW1hdGlvblRpbWVsaW5l
OjphbmltYXRpb25UaW1pbmdEaWRDaGFuZ2UoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24pCiB7Ci0g
ICAgbV9hbmltYXRpb25zV2l0aG91dFRhcmdldC5hZGQoYW5pbWF0aW9uLnB0cigpKTsKLSAgICBt
X2FuaW1hdGlvbnMuYWRkKFdURk1vdmUoYW5pbWF0aW9uKSk7Ci0gICAgdGltaW5nTW9kZWxEaWRD
aGFuZ2UoKTsKKyAgICBpZiAobV9hbmltYXRpb25zLmFkZCgmYW5pbWF0aW9uKSkgeworICAgICAg
ICBhdXRvKiB0aW1lbGluZSA9IGFuaW1hdGlvbi50aW1lbGluZSgpOworICAgICAgICBpZiAodGlt
ZWxpbmUgJiYgdGltZWxpbmUgIT0gdGhpcykKKyAgICAgICAgICAgIHRpbWVsaW5lLT5yZW1vdmVB
bmltYXRpb24oJmFuaW1hdGlvbik7CisgICAgfQogfQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5l
OjpyZW1vdmVBbmltYXRpb24oUmVmPFdlYkFuaW1hdGlvbj4mJiBhbmltYXRpb24pCit2b2lkIEFu
aW1hdGlvblRpbWVsaW5lOjpyZW1vdmVBbmltYXRpb24oV2ViQW5pbWF0aW9uKiBhbmltYXRpb24p
CiB7Ci0gICAgbV9hbmltYXRpb25zV2l0aG91dFRhcmdldC5yZW1vdmUoYW5pbWF0aW9uLnB0cigp
KTsKLSAgICBtX2FuaW1hdGlvbnMucmVtb3ZlKFdURk1vdmUoYW5pbWF0aW9uKSk7Ci0gICAgdGlt
aW5nTW9kZWxEaWRDaGFuZ2UoKTsKKyAgICBBU1NFUlQoIWFuaW1hdGlvbi0+dGltZWxpbmUoKSB8
fCBhbmltYXRpb24tPnRpbWVsaW5lKCkgPT0gdGhpcyk7CisgICAgbV9hbmltYXRpb25zLnJlbW92
ZShhbmltYXRpb24pOworICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdFJlYWRPbmx5PihhbmltYXRp
b24tPmVmZmVjdCgpKSkgeworICAgICAgICBpZiAoYXV0byogdGFyZ2V0ID0gZG93bmNhc3Q8S2V5
ZnJhbWVFZmZlY3RSZWFkT25seT4oYW5pbWF0aW9uLT5lZmZlY3QoKSktPnRhcmdldCgpKQorICAg
ICAgICAgICAgYW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KCphbmltYXRpb24sICp0YXJn
ZXQpOworICAgIH0KIH0KIAogc3RkOjpvcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvblRpbWVsaW5l
OjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkKQEAgLTg4LDggKzkzLDYgQEAgSGFzaE1hcDxFbGVtZW50
KiwgTGlzdEhhc2hTZXQ8UmVmUHRyPFdlYkFuaW1hdGlvbj4+PiYgQW5pbWF0aW9uVGltZWxpbmU6
OnJlbGV2YW4KIAogdm9pZCBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzQWRkZWRUb0Vs
ZW1lbnQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAg
bV9hbmltYXRpb25zV2l0aG91dFRhcmdldC5yZW1vdmUoJmFuaW1hdGlvbik7Ci0KICAgICByZWxl
dmFudE1hcEZvckFuaW1hdGlvbihhbmltYXRpb24pLmVuc3VyZSgmZWxlbWVudCwgW10gewogICAg
ICAgICByZXR1cm4gTGlzdEhhc2hTZXQ8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IHsgfTsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWUuYWRkKCZhbmltYXRpb24pOwpAQCAtMTAyLDcgKzEwNSwxMyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAoQ1NTVHJhbnNpdGlv
biYgdHJhbnNpdGlvbiwgRWxlbWVudAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRv
JiBjc3NUcmFuc2l0aW9uc0J5UHJvcGVydHkgPSBpdGVyYXRvci0+dmFsdWU7Ci0gICAgY3NzVHJh
bnNpdGlvbnNCeVByb3BlcnR5LnJlbW92ZSh0cmFuc2l0aW9uLnByb3BlcnR5KCkpOworCisgICAg
YXV0byB0cmFuc2l0aW9uSXRlcmF0b3IgPSBjc3NUcmFuc2l0aW9uc0J5UHJvcGVydHkuZmluZCh0
cmFuc2l0aW9uLnByb3BlcnR5KCkpOworICAgIGlmICh0cmFuc2l0aW9uSXRlcmF0b3IgPT0gY3Nz
VHJhbnNpdGlvbnNCeVByb3BlcnR5LmVuZCgpIHx8IHRyYW5zaXRpb25JdGVyYXRvci0+dmFsdWUg
IT0gJnRyYW5zaXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNzc1RyYW5zaXRp
b25zQnlQcm9wZXJ0eS5yZW1vdmUodHJhbnNpdGlvbkl0ZXJhdG9yKTsKKwogICAgIGlmIChjc3NU
cmFuc2l0aW9uc0J5UHJvcGVydHkuaXNFbXB0eSgpKQogICAgICAgICBtYXAucmVtb3ZlKCZlbGVt
ZW50KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMCw5ICsxMTksNiBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAoQ1NTVHJhbnNpdGlvbiYgdHJhbnNpdGlv
biwgRWxlbWVudAogCiB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNSZW1vdmVk
RnJvbUVsZW1lbnQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIEVsZW1lbnQmIGVsZW1lbnQpCiB7
Ci0gICAgLy8gVGhpcyBhbmltYXRpb24gZG9lc24ndCBoYXZlIGEgdGFyZ2V0IGZvciBub3cuCi0g
ICAgbV9hbmltYXRpb25zV2l0aG91dFRhcmdldC5hZGQoJmFuaW1hdGlvbik7Ci0KICAgICAvLyBG
aXJzdCwgd2UgY2xlYXIgdGhpcyBhbmltYXRpb24gZnJvbSBvbmUgb2YgdGhlIG1fZWxlbWVudFRv
Q1NTQW5pbWF0aW9uc01hcCwgbV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcCwKICAgICAvLyBt
X2VsZW1lbnRUb0FuaW1hdGlvbnNNYXAgb3IgbV9lbGVtZW50VG9Db21wbGV0ZWRDU1NUcmFuc2l0
aW9uQnlDU1NQcm9wZXJ0eUlEIG1hcCwgd2hpY2hldmVyIGlzIHJlbGV2YW50IHRvCiAgICAgLy8g
dGhpcyB0eXBlIG9mIGFuaW1hdGlvbi4KQEAgLTE4MCw3ICsxODYsNyBAQCB2b2lkIEFuaW1hdGlv
blRpbWVsaW5lOjplbGVtZW50V2FzUmVtb3ZlZChFbGVtZW50JiBlbGVtZW50KQogewogICAgIGZv
ciAoYXV0byYgYW5pbWF0aW9uIDogYW5pbWF0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCkpIHsKICAg
ICAgICAgYW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KCphbmltYXRpb24sIGVsZW1lbnQp
OwotICAgICAgICByZW1vdmVBbmltYXRpb24oKmFuaW1hdGlvbik7CisgICAgICAgIHJlbW92ZUFu
aW1hdGlvbihhbmltYXRpb24uZ2V0KCkpOwogICAgICAgICBhbmltYXRpb24tPmNhbmNlbChXZWJB
bmltYXRpb246OlNpbGVudGx5OjpZZXMpOwogICAgIH0KIH0KQEAgLTI1NCw3ICsyNjAsOCBAQCB2
b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBSZQogICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGZvdW5kIHRo
ZSBuYW1lIG9mIHRoaXMgYW5pbWF0aW9uIGluIG91ciBsaXN0IG9mIHByZXZpb3VzIGFuaW1hdGlv
bnMsIHRoaXMgbWVhbnMgd2UndmUgYWxyZWFkeQogICAgICAgICAgICAgICAgIC8vIGNyZWF0ZWQg
YSBDU1NBbmltYXRpb24gb2JqZWN0IGZvciBpdCBhbmQgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGlz
IENTU0FuaW1hdGlvbiBpcyBiYWNrZWQgYnkgdGhlIGN1cnJlbnQKICAgICAgICAgICAgICAgICAv
LyBhbmltYXRpb24gb2JqZWN0IGZvciB0aGlzIGFuaW1hdGlvbiBuYW1lLgotICAgICAgICAgICAg
ICAgIGNzc0FuaW1hdGlvbnNCeU5hbWUuZ2V0KG5hbWUpLT5zZXRCYWNraW5nQW5pbWF0aW9uKGN1
cnJlbnRBbmltYXRpb24pOworICAgICAgICAgICAgICAgIGlmIChhdXRvIGNzc0FuaW1hdGlvbiA9
IGNzc0FuaW1hdGlvbnNCeU5hbWUuZ2V0KG5hbWUpKQorICAgICAgICAgICAgICAgICAgICBjc3NB
bmltYXRpb24tPnNldEJhY2tpbmdBbmltYXRpb24oY3VycmVudEFuaW1hdGlvbik7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKHNob3VsZENvbnNpZGVyQW5pbWF0aW9uKGVsZW1lbnQsIGN1cnJlbnRB
bmltYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIGFyZSBkZWFsaW5n
IHdpdGggYSBuZXcgYW5pbWF0aW9uIG5hbWUgYW5kIG11c3QgY3JlYXRlIGEgQ1NTQW5pbWF0aW9u
IGZvciBpdC4KICAgICAgICAgICAgICAgICBjc3NBbmltYXRpb25zQnlOYW1lLnNldChuYW1lLCBD
U1NBbmltYXRpb246OmNyZWF0ZShlbGVtZW50LCBjdXJyZW50QW5pbWF0aW9uLCBjdXJyZW50U3R5
bGUsIGFmdGVyQ2hhbmdlU3R5bGUpKTsKQEAgLTQ2OSw3ICs0NzYsNyBAQCB2b2lkIEFuaW1hdGlv
blRpbWVsaW5lOjpjYW5jZWxPclJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uKFJlZlB0cjxEZWNs
YXJhdGl2ZUFuaQogICAgIEFTU0VSVChhbmltYXRpb24pOwogICAgIGFuaW1hdGlvbi0+Y2FuY2Vs
KCk7CiAgICAgYW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KCphbmltYXRpb24sIGFuaW1h
dGlvbi0+dGFyZ2V0KCkpOwotICAgIHJlbW92ZUFuaW1hdGlvbihhbmltYXRpb24ucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgcmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbi5nZXQoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9BbmltYXRpb25UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlv
blRpbWVsaW5lLmgKaW5kZXggM2M3ZjQwZGE1ZDM4ZDA1MWZiZTM4NzFhNDc1ZGNhY2NiMWM0ZmY3
Ni4uNjQ2N2E5MWQ0M2VkZTI3ZTAyZDcwZTM3MGM1OGFhM2RlNWZmNzc5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKQEAgLTQ3LDggKzQ3LDEwIEBA
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBBbmltYXRpb25UaW1lbGluZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEFuaW1hdGlvblRpbWVsaW5lPiB7CiBwdWJsaWM6CiAgICAgYm9vbCBpc0RvY3VtZW50VGlt
ZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBEb2N1bWVudFRpbWVsaW5lQ2xh
c3M7IH0KLSAgICB2b2lkIGFkZEFuaW1hdGlvbihSZWY8V2ViQW5pbWF0aW9uPiYmKTsKLSAgICB2
b2lkIHJlbW92ZUFuaW1hdGlvbihSZWY8V2ViQW5pbWF0aW9uPiYmKTsKKworICAgIHZpcnR1YWwg
dm9pZCBhbmltYXRpb25UaW1pbmdEaWRDaGFuZ2UoV2ViQW5pbWF0aW9uJik7CisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUFuaW1hdGlvbihXZWJBbmltYXRpb24qKTsKKwogICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBiaW5kaW5nc0N1cnJlbnRUaW1lKCk7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbV9jdXJyZW50VGltZTsgfQogCkBA
IC03NywxMiArNzksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBleHBsaWNpdCBBbmltYXRpb25UaW1l
bGluZShDbGFzc1R5cGUpOwogCi0gICAgYm9vbCBoYXNFbGVtZW50QW5pbWF0aW9ucygpIGNvbnN0
IHsgcmV0dXJuICFtX2VsZW1lbnRUb0FuaW1hdGlvbnNNYXAuaXNFbXB0eSgpIHx8ICFtX2VsZW1l
bnRUb0NTU0FuaW1hdGlvbnNNYXAuaXNFbXB0eSgpIHx8ICFtX2VsZW1lbnRUb0NTU1RyYW5zaXRp
b25zTWFwLmlzRW1wdHkoKTsgfQotCi0gICAgY29uc3QgTGlzdEhhc2hTZXQ8V2ViQW5pbWF0aW9u
Kj4mIGFuaW1hdGlvbnNXaXRob3V0VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25z
V2l0aG91dFRhcmdldDsgfQotICAgIGNvbnN0IEhhc2hNYXA8RWxlbWVudCosIExpc3RIYXNoU2V0
PFJlZlB0cjxXZWJBbmltYXRpb24+Pj4mIGVsZW1lbnRUb0FuaW1hdGlvbnNNYXAoKSB7IHJldHVy
biBtX2VsZW1lbnRUb0FuaW1hdGlvbnNNYXA7IH0KLSAgICBjb25zdCBIYXNoTWFwPEVsZW1lbnQq
LCBMaXN0SGFzaFNldDxSZWZQdHI8V2ViQW5pbWF0aW9uPj4+JiBlbGVtZW50VG9DU1NBbmltYXRp
b25zTWFwKCkgeyByZXR1cm4gbV9lbGVtZW50VG9DU1NBbmltYXRpb25zTWFwOyB9Ci0gICAgY29u
c3QgSGFzaE1hcDxFbGVtZW50KiwgTGlzdEhhc2hTZXQ8UmVmUHRyPFdlYkFuaW1hdGlvbj4+PiYg
ZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNNYXAoKSB7IHJldHVybiBtX2VsZW1lbnRUb0NTU1RyYW5z
aXRpb25zTWFwOyB9CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IG1fYW5p
bWF0aW9uczsKIAogcHJpdmF0ZToKICAgICBIYXNoTWFwPEVsZW1lbnQqLCBMaXN0SGFzaFNldDxS
ZWZQdHI8V2ViQW5pbWF0aW9uPj4+JiByZWxldmFudE1hcEZvckFuaW1hdGlvbihXZWJBbmltYXRp
b24mKTsKQEAgLTk0LDkgKzkxLDYgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPEVsZW1lbnQqLCBM
aXN0SGFzaFNldDxSZWZQdHI8V2ViQW5pbWF0aW9uPj4+IG1fZWxlbWVudFRvQW5pbWF0aW9uc01h
cDsKICAgICBIYXNoTWFwPEVsZW1lbnQqLCBMaXN0SGFzaFNldDxSZWZQdHI8V2ViQW5pbWF0aW9u
Pj4+IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcDsKICAgICBIYXNoTWFwPEVsZW1lbnQqLCBM
aXN0SGFzaFNldDxSZWZQdHI8V2ViQW5pbWF0aW9uPj4+IG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlv
bnNNYXA7Ci0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IG1fYW5pbWF0aW9u
czsKLQotICAgIExpc3RIYXNoU2V0PFdlYkFuaW1hdGlvbio+IG1fYW5pbWF0aW9uc1dpdGhvdXRU
YXJnZXQ7CiAgICAgSGFzaE1hcDxFbGVtZW50KiwgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxDU1NB
bmltYXRpb24+Pj4gbV9lbGVtZW50VG9DU1NBbmltYXRpb25CeU5hbWU7CiAgICAgSGFzaE1hcDxF
bGVtZW50KiwgSGFzaE1hcDxDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVHJhbnNpdGlvbj4+PiBt
X2VsZW1lbnRUb1J1bm5pbmdDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlEOwogICAgIEhhc2hN
YXA8RWxlbWVudCosIEhhc2hNYXA8Q1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1RyYW5zaXRpb24+
Pj4gbV9lbGVtZW50VG9Db21wbGV0ZWRDU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwCmluZGV4IGFjZGZhMGNlODYy
NjIwNGFiZDVhY2E0ZDUxY2UyODZjOWMzMjAzMDAuLmQwYjdkMjMxY2Q5MTA5ODJkNDViNzhiZDdm
YTU0YjNmZTZmNTU1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NU
cmFuc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlv
bi5jcHAKQEAgLTc0LDE1ICs3NCw0IEBAIHZvaWQgQ1NTVHJhbnNpdGlvbjo6c2V0VGltaW5nUHJv
cGVydGllcyhTZWNvbmRzIGRlbGF5LCBTZWNvbmRzIGR1cmF0aW9uKQogICAgIHVuc3VzcGVuZEVm
ZmVjdEludmFsaWRhdGlvbigpOwogfQogCi1ib29sIENTU1RyYW5zaXRpb246OmNhbkJlTGlzdGVk
KCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byogdHJhbnNpdGlvbkVmZmVjdCA9IGVmZmVjdCgpKSB7
Ci0gICAgICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdFJlYWRPbmx5Pih0cmFuc2l0aW9uRWZmZWN0
KSkgewotICAgICAgICAgICAgaWYgKCFkb3duY2FzdDxLZXlmcmFtZUVmZmVjdFJlYWRPbmx5Pihl
ZmZlY3QoKSktPmhhc0JsZW5kaW5nS2V5ZnJhbWVzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBXZWJBbmltYXRpb246OmNhbkJl
TGlzdGVkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5oCmluZGV4IDNiOTcyOWIyNGM4ZTA2YjZlY2I4NmExZWFhNGQ1
NjE2YjA2M2ZjMzIuLmRkNzhhN2ZjMWY5ZTg2NTU4NWRlNDdhY2ZhZjI1NGRlNmM4OGY0YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaApAQCAtNDksNyArNDksNiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuICptX3JldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZTsgfQog
ICAgIGRvdWJsZSByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yOyB9CiAKLSAgICBib29sIGNhbkJlTGlzdGVkKCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJikgZmluYWw7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmNwcAppbmRleCA1MmM5ZWFmYzMxZjgxZWI2NDk4OWZkMDRjMDMxNWNhMmUxZGIwMDFmLi5mZTBk
MjQ1YjE3ZjEyN2ExZmZjYTZlODQwMzEyMGQ5ZGI0NWE0ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTQ5LDYgKzQ5LDE3
IEBAIERlY2xhcmF0aXZlQW5pbWF0aW9uOjp+RGVjbGFyYXRpdmVBbmltYXRpb24oKQogewogfQog
Cit2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjp0aWNrKCkKK3sKKyAgICBXZWJBbmltYXRpb246
OnRpY2soKTsKKyAgICBpbnZhbGlkYXRlRE9NRXZlbnRzKCk7Cit9CisKK2Jvb2wgRGVjbGFyYXRp
dmVBbmltYXRpb246Om5lZWRzVGljaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkFuaW1hdGlv
bjo6bmVlZHNUaWNrKCkgfHwgbV9ldmVudFF1ZXVlLmhhc1BlbmRpbmdFdmVudHMoKTsKK30KKwog
dm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6cmVtb3ZlKCkKIHsKICAgICBtX2V2ZW50UXVldWUu
Y2xvc2UoKTsKQEAgLTg0LDE2ICs5NSwxNiBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpz
eW5jUHJvcGVydGllc1dpdGhCYWNraW5nQW5pbWF0aW9uKCkKIHsKIH0KIAotc3RkOjpvcHRpb25h
bDxkb3VibGU+IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpiaW5kaW5nc1N0YXJ0VGltZSgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gRGVjbGFyYXRpdmVBbmltYXRpb246OnN0YXJ0VGltZSgp
IGNvbnN0CiB7CiAgICAgZmx1c2hQZW5kaW5nU3R5bGVDaGFuZ2VzKCk7Ci0gICAgcmV0dXJuIFdl
YkFuaW1hdGlvbjo6YmluZGluZ3NTdGFydFRpbWUoKTsKKyAgICByZXR1cm4gV2ViQW5pbWF0aW9u
OjpzdGFydFRpbWUoKTsKIH0KIAotdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6c2V0QmluZGlu
Z3NTdGFydFRpbWUoc3RkOjpvcHRpb25hbDxkb3VibGU+IHN0YXJ0VGltZSkKK3ZvaWQgRGVjbGFy
YXRpdmVBbmltYXRpb246OnNldFN0YXJ0VGltZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3RhcnRU
aW1lKQogewogICAgIGZsdXNoUGVuZGluZ1N0eWxlQ2hhbmdlcygpOwotICAgIHJldHVybiBXZWJB
bmltYXRpb246OnNldEJpbmRpbmdzU3RhcnRUaW1lKHN0YXJ0VGltZSk7CisgICAgcmV0dXJuIFdl
YkFuaW1hdGlvbjo6c2V0U3RhcnRUaW1lKHN0YXJ0VGltZSk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCmlu
ZGV4IDE1NDAzODk0YzYxMmQ3YzhlYTVhNzViZmIzYTY4NjdjNmY0ODJkNzIuLmE3Mjg0NThhMzc3
NTNmMzE4M2UwZDEzYjRlNWNmZDRiODllNWRiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCkBAIC00NSwxMCArNDUsOSBAQCBwdWJsaWM6
CiAgICAgRWxlbWVudCYgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KICAgICBj
b25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2JhY2tp
bmdBbmltYXRpb247IH0KICAgICB2b2lkIHNldEJhY2tpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0
aW9uJik7Ci0gICAgdm9pZCBpbnZhbGlkYXRlRE9NRXZlbnRzKFNlY29uZHMgZWxhcHNlZFRpbWUg
PSAwX3MpOwogCi0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJpbmRpbmdzU3RhcnRUaW1lKCkg
Y29uc3QgZmluYWw7Ci0gICAgdm9pZCBzZXRCaW5kaW5nc1N0YXJ0VGltZShzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4pIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzdGFydFRpbWUoKSBj
b25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFN0YXJ0VGltZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4p
IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiaW5kaW5nc0N1cnJlbnRUaW1lKCkg
Y29uc3QgZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QmluZGluZ3NDdXJyZW50VGlt
ZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwogICAgIFdlYkFuaW1hdGlvbjo6UGxheVN0
YXRlIGJpbmRpbmdzUGxheVN0YXRlKCkgY29uc3QgZmluYWw7CkBAIC02MSwxMSArNjAsMTUgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0VGltZWxpbmUoUmVmUHRyPEFuaW1hdGlvblRpbWVsaW5lPiYm
KSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCisgICAgYm9vbCBuZWVkc1RpY2so
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHRpY2soKSBvdmVycmlkZTsKKwogcHJvdGVjdGVk
OgogICAgIERlY2xhcmF0aXZlQW5pbWF0aW9uKEVsZW1lbnQmLCBjb25zdCBBbmltYXRpb24mKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24oKTsKKyAgICB2b2lk
IGludmFsaWRhdGVET01FdmVudHMoU2Vjb25kcyBlbGFwc2VkVGltZSA9IDBfcyk7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdTdHlsZUNoYW5nZXMoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudEFuaW1hdGlvblNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRBbmltYXRpb25TY2hlZHVsZXIu
Y3BwCmluZGV4IDRmN2RkMDM4ZWZkYmU5MWI3NTY1MjM3NmIyZjQ3OGIyOTFlYjg3MmIuLmFkYTMz
MGE2N2NkNGMzZGRhOGIyMzVjMTc4MWM3NDA2MDkxYzgyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudEFuaW1hdGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50QW5pbWF0aW9uU2NoZWR1bGVyLmNwcApAQCAt
NjQsNiArNjQsMTQgQEAgYm9vbCBEb2N1bWVudEFuaW1hdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVX
ZWJBbmltYXRpb25zUmVzb2x1dGlvbigpCiAgICAgcmV0dXJuIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY2hlZHVsZUFuaW1hdGlvbigqdGhpcyk7CiB9CiAK
K3ZvaWQgRG9jdW1lbnRBbmltYXRpb25TY2hlZHVsZXI6OnVuc2NoZWR1bGVXZWJBbmltYXRpb25z
UmVzb2x1dGlvbigpCit7CisgICAgbV9zY2hlZHVsZWRXZWJBbmltYXRpb25zUmVzb2x1dGlvbiA9
IGZhbHNlOworCisgICAgaWYgKCFtX3NjaGVkdWxlZFNjcmlwdGVkQW5pbWF0aW9uUmVzb2x1dGlv
bikKKyAgICAgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LnVucmVnaXN0ZXJDbGllbnQoKnRoaXMpOworfQorCiBib29sIERvY3VtZW50QW5pbWF0aW9uU2No
ZWR1bGVyOjpzY2hlZHVsZVNjcmlwdGVkQW5pbWF0aW9uUmVzb2x1dGlvbigpCiB7CiAgICAgbV9z
Y2hlZHVsZWRTY3JpcHRlZEFuaW1hdGlvblJlc29sdXRpb24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50QW5pbWF0aW9uU2NoZWR1bGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRBbmltYXRpb25TY2hlZHVsZXIuaAppbmRl
eCAyNThhNjkyN2VhNGJmNzg2YWVlZThjOTljMWY0Y2IxMGI3ZTliNjRiLi45OGU4OGM1MWJkYWRk
OWQ2ZGIwYTMxMmQwYTI3NjdiMThjNTdjODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRG9jdW1lbnRBbmltYXRpb25TY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRG9jdW1lbnRBbmltYXRpb25TY2hlZHVsZXIuaApAQCAtNDgsNiArNDgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5
SUQpOwogCiAgICAgYm9vbCBzY2hlZHVsZVdlYkFuaW1hdGlvbnNSZXNvbHV0aW9uKCk7CisgICAg
dm9pZCB1bnNjaGVkdWxlV2ViQW5pbWF0aW9uc1Jlc29sdXRpb24oKTsKICAgICBib29sIHNjaGVk
dWxlU2NyaXB0ZWRBbmltYXRpb25SZXNvbHV0aW9uKCk7CiAKICAgICBTZWNvbmRzIGxhc3RUaW1l
c3RhbXAoKSB7IHJldHVybiBtX2xhc3RUaW1lc3RhbXA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAppbmRleCA1YmYxMGJhZWZlNjg1MGQxZTdmZTRj
YzlhZTA1MzVjM2EzMzI4MWU3Li5hZTlkMTFkMGQxMGZhZDFmNzJhOGQ4N2RlYmZiYjQ1YWVhYjA1
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3Bw
CkBAIC01OCw3ICs1OCw2IEBAIERvY3VtZW50VGltZWxpbmU6OkRvY3VtZW50VGltZWxpbmUoRG9j
dW1lbnQmIGRvY3VtZW50LCBTZWNvbmRzIG9yaWdpblRpbWUpCiAgICAgOiBBbmltYXRpb25UaW1l
bGluZShEb2N1bWVudFRpbWVsaW5lQ2xhc3MpCiAgICAgLCBtX2RvY3VtZW50KCZkb2N1bWVudCkK
ICAgICAsIG1fb3JpZ2luVGltZShvcmlnaW5UaW1lKQotICAgICwgbV9hbmltYXRpb25TY2hlZHVs
ZVRpbWVyKCp0aGlzLCAmRG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0aW9uU2NoZWR1bGVUaW1lckZp
cmVkKQogI2lmICFVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQog
ICAgICwgbV9hbmltYXRpb25SZXNvbHV0aW9uVGltZXIoKnRoaXMsICZEb2N1bWVudFRpbWVsaW5l
OjphbmltYXRpb25SZXNvbHV0aW9uVGltZXJGaXJlZCkKICNlbmRpZgpAQCAtNzEsMTIgKzcwLDEw
IEBAIERvY3VtZW50VGltZWxpbmU6On5Eb2N1bWVudFRpbWVsaW5lKCkgPSBkZWZhdWx0OwogCiB2
b2lkIERvY3VtZW50VGltZWxpbmU6OmRldGFjaEZyb21Eb2N1bWVudCgpCiB7Ci0gICAgbV9pbnZh
bGlkYXRpb25UYXNrUXVldWUuY2xvc2UoKTsKLSAgICBtX2V2ZW50RGlzcGF0Y2hUYXNrUXVldWUu
Y2xvc2UoKTsKLSAgICBtX2FuaW1hdGlvblNjaGVkdWxlVGltZXIuc3RvcCgpOworICAgIG1fY3Vy
cmVudFRpbWVDbGVhcmluZ1Rhc2tRdWV1ZS5jbG9zZSgpOwogICAgIG1fZWxlbWVudHNXaXRoUnVu
bmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucy5jbGVhcigpOwogCi0gICAgYXV0byYgYW5pbWF0aW9u
c1RvUmVtb3ZlID0gYW5pbWF0aW9ucygpOworICAgIGF1dG8mIGFuaW1hdGlvbnNUb1JlbW92ZSA9
IG1fYW5pbWF0aW9uczsKICAgICB3aGlsZSAoIWFuaW1hdGlvbnNUb1JlbW92ZS5pc0VtcHR5KCkp
CiAgICAgICAgIGFuaW1hdGlvbnNUb1JlbW92ZS5maXJzdCgpLT5yZW1vdmUoKTsKIApAQCAtODks
OCArODYsOCBAQCBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IERvY3VtZW50VGltZWxpbmU6
OmdldEFuaW1hdGlvbnMoKSBjb25zdAogCiAgICAgLy8gRklYTUU6IEZpbHRlciBhbmQgb3JkZXIg
dGhlIGxpc3QgYXMgc3BlY2lmaWVkICh3ZWJraXQub3JnL2IvMTc5NTM1KS4KICAgICBWZWN0b3I8
UmVmUHRyPFdlYkFuaW1hdGlvbj4+IGFuaW1hdGlvbnM7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBh
bmltYXRpb24gOiB0aGlzLT5hbmltYXRpb25zKCkpIHsKLSAgICAgICAgaWYgKGFuaW1hdGlvbi0+
Y2FuQmVMaXN0ZWQoKSAmJiBpczxLZXlmcmFtZUVmZmVjdFJlYWRPbmx5PihhbmltYXRpb24tPmVm
ZmVjdCgpKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgYW5pbWF0aW9uIDogbV9hbmltYXRpb25z
KSB7CisgICAgICAgIGlmIChhbmltYXRpb24tPmlzUmVsZXZhbnQoKSAmJiBpczxLZXlmcmFtZUVm
ZmVjdFJlYWRPbmx5PihhbmltYXRpb24tPmVmZmVjdCgpKSkgewogICAgICAgICAgICAgaWYgKGF1
dG8qIHRhcmdldCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0UmVhZE9ubHk+KGFuaW1hdGlvbi0+
ZWZmZWN0KCkpLT50YXJnZXQoKSkgewogICAgICAgICAgICAgICAgIGlmICh0YXJnZXQtPmlzRGVz
Y2VuZGFudE9mKCptX2RvY3VtZW50KSkKICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5h
cHBlbmQoYW5pbWF0aW9uKTsKQEAgLTEwMiw4ICs5OSw3IEBAIFZlY3RvcjxSZWZQdHI8V2ViQW5p
bWF0aW9uPj4gRG9jdW1lbnRUaW1lbGluZTo6Z2V0QW5pbWF0aW9ucygpIGNvbnN0CiAKIHZvaWQg
RG9jdW1lbnRUaW1lbGluZTo6dXBkYXRlVGhyb3R0bGluZ1N0YXRlKCkKIHsKLSAgICBtX25lZWRz
VXBkYXRlQW5pbWF0aW9uU2NoZWR1bGUgPSBmYWxzZTsKLSAgICB0aW1pbmdNb2RlbERpZENoYW5n
ZSgpOworICAgIHNjaGVkdWxlQW5pbWF0aW9uUmVzb2x1dGlvbklmTmVlZGVkKCk7CiB9CiAKIFNl
Y29uZHMgRG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0aW9uSW50ZXJ2YWwoKSBjb25zdApAQCAtMTE4
LDE2ICsxMTQsMTQgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzdXNwZW5kQW5pbWF0aW9ucygp
CiAgICAgaWYgKGFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9pbnZhbGlkYXRpb25UYXNrUXVldWUuY2FuY2VsQWxsVGFza3MoKTsKLSAgICBpZiAobV9h
bmltYXRpb25TY2hlZHVsZVRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fYW5pbWF0aW9uU2No
ZWR1bGVUaW1lci5zdG9wKCk7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGFuaW1hdGlvbiA6IGFu
aW1hdGlvbnMoKSkKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGFuaW1hdGlvbiA6IG1fYW5pbWF0aW9u
cykKICAgICAgICAgYW5pbWF0aW9uLT5zZXRTdXNwZW5kZWQodHJ1ZSk7CiAKICAgICBtX2lzU3Vz
cGVuZGVkID0gdHJ1ZTsKIAogICAgIGFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucygp
OworCisgICAgdW5zY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKTsKIH0KIAogdm9pZCBEb2N1
bWVudFRpbWVsaW5lOjpyZXN1bWVBbmltYXRpb25zKCkKQEAgLTEzNywxMSArMTMxLDEwIEBAIHZv
aWQgRG9jdW1lbnRUaW1lbGluZTo6cmVzdW1lQW5pbWF0aW9ucygpCiAKICAgICBtX2lzU3VzcGVu
ZGVkID0gZmFsc2U7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGFuaW1hdGlvbiA6IGFuaW1hdGlv
bnMoKSkKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGFuaW1hdGlvbiA6IG1fYW5pbWF0aW9ucykKICAg
ICAgICAgYW5pbWF0aW9uLT5zZXRTdXNwZW5kZWQoZmFsc2UpOwogCi0gICAgbV9uZWVkc1VwZGF0
ZUFuaW1hdGlvblNjaGVkdWxlID0gZmFsc2U7Ci0gICAgdGltaW5nTW9kZWxEaWRDaGFuZ2UoKTsK
KyAgICBzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb25JZk5lZWRlZCgpOwogfQogCiBib29sIERv
Y3VtZW50VGltZWxpbmU6OmFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKQpAQCAtMTUyLDcgKzE0NSw3
IEBAIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0aW9uc0FyZVN1c3BlbmRlZCgpCiB1bnNp
Z25lZCBEb2N1bWVudFRpbWVsaW5lOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNGb3JUZXN0aW5n
KCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgZm9yIChjb25zdCBhdXRv
JiBhbmltYXRpb24gOiBhbmltYXRpb25zKCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGFuaW1h
dGlvbiA6IG1fYW5pbWF0aW9ucykgewogICAgICAgICBpZiAoIWFuaW1hdGlvbi0+aXNTdXNwZW5k
ZWQoKSkKICAgICAgICAgICAgICsrY291bnQ7CiAgICAgfQpAQCAtMTk2LDggKzE4OSw5IEBAIHN0
ZDo6b3B0aW9uYWw8U2Vjb25kcz4gRG9jdW1lbnRUaW1lbGluZTo6Y3VycmVudFRpbWUoKQogICAg
ICAgICAvLyBXZSB3YW50IHRvIGJlIHN1cmUgdG8ga2VlcCB0aGlzIHRpbWUgY2FjaGVkIHVudGls
IHdlJ3ZlIGJvdGggZmluaXNoZWQgcnVubmluZyBKUyBhbmQgZmluaXNoZWQgdXBkYXRpbmcKICAg
ICAgICAgLy8gYW5pbWF0aW9ucywgc28gd2Ugc2NoZWR1bGUgdGhlIGludmFsaWRhdGlvbiB0YXNr
IGFuZCByZWdpc3RlciBhIHdoZW5JZGxlIGNhbGxiYWNrIG9uIHRoZSBWTSwgd2hpY2ggd2lsbAog
ICAgICAgICAvLyBmaXJlIHN5bmNyb25vdXNseSBpZiBubyBKUyBpcyBydW5uaW5nLgotICAgICAg
ICBzY2hlZHVsZUludmFsaWRhdGlvblRhc2tJZk5lZWRlZCgpOwogICAgICAgICBtX3dhaXRpbmdP
blZNSWRsZSA9IHRydWU7CisgICAgICAgIGlmICghbV9jdXJyZW50VGltZUNsZWFyaW5nVGFza1F1
ZXVlLmhhc1BlbmRpbmdUYXNrcygpKQorICAgICAgICAgICAgbV9jdXJyZW50VGltZUNsZWFyaW5n
VGFza1F1ZXVlLmVucXVldWVUYXNrKHN0ZDo6YmluZCgmRG9jdW1lbnRUaW1lbGluZTo6bWF5YmVD
bGVhckNhY2hlZEN1cnJlbnRUaW1lLCB0aGlzKSk7CiAgICAgICAgIG1fZG9jdW1lbnQtPnZtKCku
d2hlbklkbGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpXSgpIHsKICAg
ICAgICAgICAgIG1fd2FpdGluZ09uVk1JZGxlID0gZmFsc2U7CiAgICAgICAgICAgICBtYXliZUNs
ZWFyQ2FjaGVkQ3VycmVudFRpbWUoKTsKQEAgLTIwNiw4NCArMjAwLDM0IEBAIHN0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gRG9jdW1lbnRUaW1lbGluZTo6Y3VycmVudFRpbWUoKQogICAgIHJldHVybiBt
X2NhY2hlZEN1cnJlbnRUaW1lLnZhbHVlKCkgLSBtX29yaWdpblRpbWU7CiB9CiAKLXZvaWQgRG9j
dW1lbnRUaW1lbGluZTo6dGltaW5nTW9kZWxEaWRDaGFuZ2UoKQotewotICAgIGlmIChtX25lZWRz
VXBkYXRlQW5pbWF0aW9uU2NoZWR1bGUgfHwgbV9pc1N1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9uZWVkc1VwZGF0ZUFuaW1hdGlvblNjaGVkdWxlID0gdHJ1ZTsKLQotICAgIC8v
IFdlIGtub3cgdGhhdCB3ZSB3aWxsIHJlc29sdmUgYW5pbWF0aW9ucyBhZ2Fpbiwgc28gd2UgY2Fu
IGNhbmNlbCB0aGUgdGltZXIgcmlnaHQgYXdheS4KLSAgICBpZiAobV9hbmltYXRpb25TY2hlZHVs
ZVRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fYW5pbWF0aW9uU2NoZWR1bGVUaW1lci5zdG9w
KCk7Ci0KLSAgICBzY2hlZHVsZUludmFsaWRhdGlvblRhc2tJZk5lZWRlZCgpOwotfQotCi12b2lk
IERvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxlSW52YWxpZGF0aW9uVGFza0lmTmVlZGVkKCkKLXsK
LSAgICBpZiAobV9pbnZhbGlkYXRpb25UYXNrUXVldWUuaGFzUGVuZGluZ1Rhc2tzKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1faW52YWxpZGF0aW9uVGFza1F1ZXVlLmVucXVldWVUYXNrKHN0
ZDo6YmluZCgmRG9jdW1lbnRUaW1lbGluZTo6cGVyZm9ybUludmFsaWRhdGlvblRhc2ssIHRoaXMp
KTsKLX0KLQotdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpwZXJmb3JtSW52YWxpZGF0aW9uVGFzaygp
Ci17Ci0gICAgLy8gTm93IHRoYXQgdGhlIHRpbWluZyBtb2RlbCBoYXMgY2hhbmdlZCB3ZSBjYW4g
c2VlIGlmIHRoZXJlIGFyZSBET00gZXZlbnRzIHRvIGRpc3BhdGNoIGZvciBkZWNsYXJhdGl2ZSBh
bmltYXRpb25zLgotICAgIGlmICghbV9pc1N1c3BlbmRlZCkgewotICAgICAgICBmb3IgKGF1dG8m
IGFuaW1hdGlvbiA6IGFuaW1hdGlvbnMoKSkgewotICAgICAgICAgICAgaWYgKGlzPERlY2xhcmF0
aXZlQW5pbWF0aW9uPihhbmltYXRpb24pKQotICAgICAgICAgICAgICAgIGRvd25jYXN0PERlY2xh
cmF0aXZlQW5pbWF0aW9uPigqYW5pbWF0aW9uKS5pbnZhbGlkYXRlRE9NRXZlbnRzKCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBhcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnMoKTsK
LQotICAgIHVwZGF0ZUFuaW1hdGlvblNjaGVkdWxlKCk7Ci0gICAgbWF5YmVDbGVhckNhY2hlZEN1
cnJlbnRUaW1lKCk7Ci19Ci0KIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6bWF5YmVDbGVhckNhY2hl
ZEN1cnJlbnRUaW1lKCkKIHsKICAgICAvLyBXZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBvbmx5IGNs
ZWFyIHRoZSBjYWNoZWQgY3VycmVudCB0aW1lIGlmIHdlJ3JlIG5vdCBjdXJyZW50bHkgcnVubmlu
ZwogICAgIC8vIEpTIG9yIHdhaXRpbmcgb24gYWxsIGN1cnJlbnQgYW5pbWF0aW9uIHVwZGF0aW5n
IGNvZGUgdG8gaGF2ZSBjb21wbGV0ZWQuIFRoaXMgaXMgc28gdGhhdAogICAgIC8vIHdlJ3JlIGd1
YXJhbnRlZWQgdG8gaGF2ZSBhIGNvbnNpc3RlbnQgY3VycmVudCB0aW1lIHJlcG9ydGVkIGZvciBh
bGwgd29yayBoYXBwZW5pbmcgaW4gYSBnaXZlbgogICAgIC8vIEpTIGZyYW1lIG9yIHRocm91Z2hv
dXQgdXBkYXRpbmcgYW5pbWF0aW9ucyBpbiBXZWJDb3JlLgotICAgIGlmICghbV93YWl0aW5nT25W
TUlkbGUgJiYgIW1faW52YWxpZGF0aW9uVGFza1F1ZXVlLmhhc1BlbmRpbmdUYXNrcygpKQorICAg
IGlmICghbV93YWl0aW5nT25WTUlkbGUgJiYgIW1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2tRdWV1
ZS5oYXNQZW5kaW5nVGFza3MoKSkKICAgICAgICAgbV9jYWNoZWRDdXJyZW50VGltZSA9IHN0ZDo6
bnVsbG9wdDsKIH0KIAotdm9pZCBEb2N1bWVudFRpbWVsaW5lOjp1cGRhdGVBbmltYXRpb25TY2hl
ZHVsZSgpCit2b2lkIERvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxlQW5pbWF0aW9uUmVzb2x1dGlv
bklmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fbmVlZHNVcGRhdGVBbmltYXRpb25TY2hlZHVsZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9uZWVkc1VwZGF0ZUFuaW1hdGlvblNjaGVkdWxlID0g
ZmFsc2U7Ci0KLSAgICBpZiAoIW1fYWNjZWxlcmF0ZWRBbmltYXRpb25zUGVuZGluZ1J1bm5pbmdT
dGF0ZUNoYW5nZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIW1faXNTdXNwZW5kZWQgJiYgIW1fYW5p
bWF0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uUmVzb2x1dGlvbigp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgU2Vjb25kcyBzY2hlZHVsZURlbGF5ID0g
U2Vjb25kczo6aW5maW5pdHkoKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgYW5pbWF0aW9uIDog
YW5pbWF0aW9ucygpKSB7Ci0gICAgICAgIGF1dG8gYW5pbWF0aW9uVGltZVRvTmV4dFJlcXVpcmVk
VGljayA9IGFuaW1hdGlvbi0+dGltZVRvTmV4dFJlcXVpcmVkVGljaygpOwotICAgICAgICBpZiAo
YW5pbWF0aW9uVGltZVRvTmV4dFJlcXVpcmVkVGljayA8IGFuaW1hdGlvbkludGVydmFsKCkpIHsK
LSAgICAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uUmVzb2x1dGlvbigpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHNjaGVkdWxlRGVsYXkgPSBzdGQ6Om1pbihzY2hl
ZHVsZURlbGF5LCBhbmltYXRpb25UaW1lVG9OZXh0UmVxdWlyZWRUaWNrKTsKLSAgICB9Cit9CiAK
LSAgICBpZiAoc2NoZWR1bGVEZWxheSA8IFNlY29uZHM6OmluZmluaXR5KCkpCi0gICAgICAgIG1f
YW5pbWF0aW9uU2NoZWR1bGVUaW1lci5zdGFydE9uZVNob3Qoc2NoZWR1bGVEZWxheSk7Cit2b2lk
IERvY3VtZW50VGltZWxpbmU6OmFuaW1hdGlvblRpbWluZ0RpZENoYW5nZShXZWJBbmltYXRpb24m
IGFuaW1hdGlvbikKK3sKKyAgICBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uVGltaW5nRGlk
Q2hhbmdlKGFuaW1hdGlvbik7CisgICAgc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uSWZOZWVk
ZWQoKTsKIH0KIAotdm9pZCBEb2N1bWVudFRpbWVsaW5lOjphbmltYXRpb25TY2hlZHVsZVRpbWVy
RmlyZWQoKQordm9pZCBEb2N1bWVudFRpbWVsaW5lOjpyZW1vdmVBbmltYXRpb24oV2ViQW5pbWF0
aW9uKiBhbmltYXRpb24pCiB7Ci0gICAgc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKCk7Cisg
ICAgQW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUFuaW1hdGlvbihhbmltYXRpb24pOworCisgICAg
aWYgKG1fYW5pbWF0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgIHVuc2NoZWR1bGVBbmltYXRpb25S
ZXNvbHV0aW9uKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6c2NoZWR1bGVBbmltYXRp
b25SZXNvbHV0aW9uKCkKQEAgLTI5Nyw0NCArMjQxLDgxIEBAIHZvaWQgRG9jdW1lbnRUaW1lbGlu
ZTo6c2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKCkKICNlbmRpZgogfQogCit2b2lkIERvY3Vt
ZW50VGltZWxpbmU6OnVuc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKCkKK3sKKyNpZiBVU0Uo
UkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIG1fZG9jdW1lbnQt
PmFuaW1hdGlvblNjaGVkdWxlcigpLnVuc2NoZWR1bGVXZWJBbmltYXRpb25zUmVzb2x1dGlvbigp
OworI2Vsc2UKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byB1c2UgdGhlIHNhbWUgbG9naWMgYXMg
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyIGhlcmUsCisgICAgLy8gd2hpY2ggd2lsbCBiZSBh
ZGRyZXNzZWQgYnkgdGhlIHJlZmFjdG9yIHRyYWNrZWQgYnkgd2Via2l0Lm9yZy9iLzE3OTI5My4K
KyAgICBtX2FuaW1hdGlvblJlc29sdXRpb25UaW1lci5zdG9wKCk7CisjZW5kaWYKK30KKwogI2lm
IFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiB2b2lkIERvY3Vt
ZW50VGltZWxpbmU6OmRvY3VtZW50QW5pbWF0aW9uU2NoZWR1bGVyRGlkRmlyZSgpCiAjZWxzZQog
dm9pZCBEb2N1bWVudFRpbWVsaW5lOjphbmltYXRpb25SZXNvbHV0aW9uVGltZXJGaXJlZCgpCiAj
ZW5kaWYKIHsKLSAgICB1cGRhdGVBbmltYXRpb25zKCk7CisgICAgdXBkYXRlQW5pbWF0aW9uc0Fu
ZFNlbmRFdmVudHMoKTsKIH0KIAotdm9pZCBEb2N1bWVudFRpbWVsaW5lOjp1cGRhdGVBbmltYXRp
b25zKCkKK3ZvaWQgRG9jdW1lbnRUaW1lbGluZTo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVu
dHMoKQogewogICAgIG1fbnVtYmVyT2ZBbmltYXRpb25UaW1lbGluZUludmFsaWRhdGlvbnNGb3JU
ZXN0aW5nKys7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGFuaW1hdGlvbiA6IGFuaW1hdGlvbnMo
KSkKLSAgICAgICAgYW5pbWF0aW9uLT5ydW5QZW5kaW5nVGFza3MoKTsKKyAgICAvLyBodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMvI3VwZGF0ZS1hbmltYXRpb25zLWFuZC1z
ZW5kLWV2ZW50cwogCi0gICAgLy8gUGVyZm9ybSBhIG1pY3JvdGFzayBjaGVja3BvaW50IHN1Y2gg
dGhhdCBhbGwgcHJvbWlzZXMgdGhhdCBtYXkgaGF2ZSByZXNvbHZlZCB3aGlsZQotICAgIC8vIHJ1
bm5pbmcgcGVuZGluZyB0YXNrcyBjYW4gZmlyZSByaWdodCBhd2F5LgotICAgIE1pY3JvdGFza1F1
ZXVlOjptYWluVGhyZWFkUXVldWUoKS5wZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCgpOworICAg
IC8vIDEuIFVwZGF0ZSB0aGUgY3VycmVudCB0aW1lIG9mIGFsbCB0aW1lbGluZXMgYXNzb2NpYXRl
ZCB3aXRoIGRvYyBwYXNzaW5nIG5vdyBhcyB0aGUgdGltZXN0YW1wLgorCisgICAgVmVjdG9yPFJl
ZlB0cjxXZWJBbmltYXRpb24+PiBhbmltYXRpb25zVG9SZW1vdmU7CisKKyAgICBmb3IgKGF1dG8m
IGFuaW1hdGlvbiA6IG1fYW5pbWF0aW9ucykgeworICAgICAgICBpZiAoYW5pbWF0aW9uLT50aW1l
bGluZSgpICE9IHRoaXMpIHsKKyAgICAgICAgICAgIEFTU0VSVCghYW5pbWF0aW9uLT50aW1lbGlu
ZSgpKTsKKyAgICAgICAgICAgIGFuaW1hdGlvbnNUb1JlbW92ZS5hcHBlbmQoYW5pbWF0aW9uKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhpcyB3aWxs
IG5vdGlmeSB0aGUgYW5pbWF0aW9uIHRoYXQgdGltaW5nIGhhcyBjaGFuZ2VkIGFuZCB3aWxsIGNh
bGwgYXV0b21hdGljYWxseQorICAgICAgICAvLyBzY2hlZHVsZSBpbnZhbGlkYXRpb24gaWYgcmVx
dWlyZWQgZm9yIHRoaXMgYW5pbWF0aW9uLgorICAgICAgICBhbmltYXRpb24tPnRpY2soKTsKIAot
ICAgIC8vIExldCdzIGZpcnN0IHJlc29sdmUgYW55IGFuaW1hdGlvbiB0aGF0IGRvZXMgbm90IGhh
dmUgYSB0YXJnZXQuCi0gICAgZm9yIChhdXRvKiBhbmltYXRpb24gOiBhbmltYXRpb25zV2l0aG91
dFRhcmdldCgpKQotICAgICAgICBhbmltYXRpb24tPnJlc29sdmUoKTsKLQotICAgIC8vIEZvciB0
aGUgcmVzdCBvZiB0aGUgYW5pbWF0aW9ucywgd2Ugd2lsbCByZXNvbHZlIHRoZW0gdmlhIFRyZWVS
ZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKCkKLSAgICAvLyBieSBpbnZhbGlk
YXRpbmcgdGhlaXIgdGFyZ2V0IGVsZW1lbnQncyBzdHlsZS4KLSAgICBpZiAobV9kb2N1bWVudCAm
JiBoYXNFbGVtZW50QW5pbWF0aW9ucygpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxl
bWVudFRvQW5pbWF0aW9uc01hcEl0ZW0gOiBlbGVtZW50VG9BbmltYXRpb25zTWFwKCkpCi0gICAg
ICAgICAgICBlbGVtZW50VG9BbmltYXRpb25zTWFwSXRlbS5rZXktPmludmFsaWRhdGVTdHlsZUFu
ZExheWVyQ29tcG9zaXRpb24oKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50VG9D
U1NBbmltYXRpb25zTWFwSXRlbSA6IGVsZW1lbnRUb0NTU0FuaW1hdGlvbnNNYXAoKSkKLSAgICAg
ICAgICAgIGVsZW1lbnRUb0NTU0FuaW1hdGlvbnNNYXBJdGVtLmtleS0+aW52YWxpZGF0ZVN0eWxl
QW5kTGF5ZXJDb21wb3NpdGlvbigpOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnRU
b0NTU1RyYW5zaXRpb25zTWFwSXRlbSA6IGVsZW1lbnRUb0NTU1RyYW5zaXRpb25zTWFwKCkpCi0g
ICAgICAgICAgICBlbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcEl0ZW0ua2V5LT5pbnZhbGlkYXRl
U3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnVwZGF0ZVN0
eWxlSWZOZWVkZWQoKTsKKyAgICAgICAgaWYgKCFhbmltYXRpb24tPmlzUmVsZXZhbnQoKSAmJiAh
YW5pbWF0aW9uLT5uZWVkc1RpY2soKSkKKyAgICAgICAgICAgIGFuaW1hdGlvbnNUb1JlbW92ZS5h
cHBlbmQoYW5pbWF0aW9uKTsKICAgICB9CiAKLSAgICAvLyBUaW1lIGhhcyBhZHZhbmNlZCwgdGhl
IHRpbWluZyBtb2RlbCByZXF1aXJlcyBpbnZhbGlkYXRpb24gbm93LgotICAgIHRpbWluZ01vZGVs
RGlkQ2hhbmdlKCk7CisgICAgLy8gMi4gUGVyZm9ybSBhIG1pY3JvdGFzayBjaGVja3BvaW50Lgor
ICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5wZXJmb3JtTWljcm90YXNrQ2hl
Y2twb2ludCgpOworCisgICAgLy8gMy4gTGV0IGV2ZW50cyB0byBkaXNwYXRjaCBiZSBhIGNvcHkg
b2YgZG9jJ3MgcGVuZGluZyBhbmltYXRpb24gZXZlbnQgcXVldWUuCisgICAgLy8gNC4gQ2xlYXIg
ZG9jJ3MgcGVuZGluZyBhbmltYXRpb24gZXZlbnQgcXVldWUuCisgICAgYXV0byBwZW5kaW5nQW5p
bWF0aW9uRXZlbnRzID0gV1RGTW92ZShtX3BlbmRpbmdBbmltYXRpb25FdmVudHMpOworCisgICAg
Ly8gNS4gUGVyZm9ybSBhIHN0YWJsZSBzb3J0IG9mIHRoZSBhbmltYXRpb24gZXZlbnRzIGluIGV2
ZW50cyB0byBkaXNwYXRjaCBhcyBmb2xsb3dzLgorICAgIHN0ZDo6c3RhYmxlX3NvcnQocGVuZGlu
Z0FuaW1hdGlvbkV2ZW50cy5iZWdpbigpLCBwZW5kaW5nQW5pbWF0aW9uRXZlbnRzLmVuZCgpLCBb
XSAoY29uc3QgUmVmPEFuaW1hdGlvblBsYXliYWNrRXZlbnQ+JiBsaHMsIGNvbnN0IFJlZjxBbmlt
YXRpb25QbGF5YmFja0V2ZW50PiYgcmhzKSB7CisgICAgICAgIC8vIDEuIFNvcnQgdGhlIGV2ZW50
cyBieSB0aGVpciBzY2hlZHVsZWQgZXZlbnQgdGltZSBzdWNoIHRoYXQgZXZlbnRzIHRoYXQgd2Vy
ZSBzY2hlZHVsZWQgdG8gb2NjdXIgZWFybGllciwgc29ydCBiZWZvcmUgZXZlbnRzIHNjaGVkdWxl
ZCB0byBvY2N1ciBsYXRlcgorICAgICAgICAvLyBhbmQgZXZlbnRzIHdob3NlIHNjaGVkdWxlZCBl
dmVudCB0aW1lIGlzIHVucmVzb2x2ZWQgc29ydCBiZWZvcmUgZXZlbnRzIHdpdGggYSByZXNvbHZl
ZCBzY2hlZHVsZWQgZXZlbnQgdGltZS4KKyAgICAgICAgLy8gMi4gV2l0aGluIGV2ZW50cyB3aXRo
IGVxdWFsIHNjaGVkdWxlZCBldmVudCB0aW1lcywgc29ydCBieSB0aGVpciBjb21wb3NpdGUgb3Jk
ZXIuIEZJWE1FOiBXZSBkb24ndCBkbyB0aGlzLgorICAgICAgICBpZiAobGhzLT50aW1lbGluZVRp
bWUoKSAmJiAhcmhzLT50aW1lbGluZVRpbWUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKCFsaHMtPnRpbWVsaW5lVGltZSgpICYmIHJocy0+dGltZWxpbmVUaW1lKCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCFsaHMtPnRpbWVsaW5lVGlt
ZSgpICYmICFyaHMtPnRpbWVsaW5lVGltZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBsaHMtPnRpbWVsaW5lVGltZSgpLnZhbHVlKCkgPCByaHMtPnRpbWVsaW5l
VGltZSgpLnZhbHVlKCk7CisgICAgfSk7CisKKyAgICAvLyA2LiBEaXNwYXRjaCBlYWNoIG9mIHRo
ZSBldmVudHMgaW4gZXZlbnRzIHRvIGRpc3BhdGNoIGF0IHRoZWlyIGNvcnJlc3BvbmRpbmcgdGFy
Z2V0IHVzaW5nIHRoZSBvcmRlciBlc3RhYmxpc2hlZCBpbiB0aGUgcHJldmlvdXMgc3RlcC4KKyAg
ICBmb3IgKGF1dG8mIHBlbmRpbmdFdmVudCA6IHBlbmRpbmdBbmltYXRpb25FdmVudHMpCisgICAg
ICAgIHBlbmRpbmdFdmVudC0+dGFyZ2V0KCktPmRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50KTsK
KworICAgIC8vIFRoaXMgd2lsbCBjYW5jZWwgYW55IHNjaGVkdWxlZCBpbnZhbGlkYXRpb24gaWYg
d2UgZW5kIHVwIHJlbW92aW5nIGFsbCBhbmltYXRpb25zLgorICAgIGZvciAoYXV0byYgYW5pbWF0
aW9uIDogYW5pbWF0aW9uc1RvUmVtb3ZlKQorICAgICAgICByZW1vdmVBbmltYXRpb24oYW5pbWF0
aW9uLmdldCgpKTsKKworICAgIGFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucygpOwog
fQogCiBib29sIERvY3VtZW50VGltZWxpbmU6OmNvbXB1dGVFeHRlbnRPZkFuaW1hdGlvbihSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgTGF5b3V0UmVjdCYgYm91bmRzKSBjb25zdApAQCAtNTAzLDM0
ICs0ODQsNiBAQCBib29sIERvY3VtZW50VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yRWxl
bWVudEFyZUFsbEFjY2VsZXJhdGVkKEVsZW1lbnQmIGVsZQogdm9pZCBEb2N1bWVudFRpbWVsaW5l
OjplbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChBbmltYXRpb25QbGF5YmFja0V2ZW50JiBl
dmVudCkKIHsKICAgICBtX3BlbmRpbmdBbmltYXRpb25FdmVudHMuYXBwZW5kKGV2ZW50KTsKLQot
ICAgIGlmICghbV9ldmVudERpc3BhdGNoVGFza1F1ZXVlLmhhc1BlbmRpbmdUYXNrcygpKQotICAg
ICAgICBtX2V2ZW50RGlzcGF0Y2hUYXNrUXVldWUuZW5xdWV1ZVRhc2soc3RkOjpiaW5kKCZEb2N1
bWVudFRpbWVsaW5lOjpwZXJmb3JtRXZlbnREaXNwYXRjaFRhc2ssIHRoaXMpKTsKLX0KLQotc3Rh
dGljIGlubGluZSBib29sIGNvbXBhcmVBbmltYXRpb25QbGF5YmFja0V2ZW50cyhjb25zdCBSZWY8
V2ViQ29yZTo6QW5pbWF0aW9uUGxheWJhY2tFdmVudD4mIGxocywgY29uc3QgUmVmPFdlYkNvcmU6
OkFuaW1hdGlvblBsYXliYWNrRXZlbnQ+JiByaHMpCi17Ci0gICAgLy8gU29ydCB0aGUgZXZlbnRz
IGJ5IHRoZWlyIHNjaGVkdWxlZCBldmVudCB0aW1lIHN1Y2ggdGhhdCBldmVudHMgdGhhdCB3ZXJl
IHNjaGVkdWxlZCB0byBvY2N1ciBlYXJsaWVyLCBzb3J0IGJlZm9yZSBldmVudHMgc2NoZWR1bGVk
IHRvIG9jY3VyIGxhdGVyCi0gICAgLy8gYW5kIGV2ZW50cyB3aG9zZSBzY2hlZHVsZWQgZXZlbnQg
dGltZSBpcyB1bnJlc29sdmVkIHNvcnQgYmVmb3JlIGV2ZW50cyB3aXRoIGEgcmVzb2x2ZWQgc2No
ZWR1bGVkIGV2ZW50IHRpbWUuCi0gICAgaWYgKGxocy0+dGltZWxpbmVUaW1lKCkgJiYgIXJocy0+
dGltZWxpbmVUaW1lKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWxocy0+dGlt
ZWxpbmVUaW1lKCkgJiYgcmhzLT50aW1lbGluZVRpbWUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKCFsaHMtPnRpbWVsaW5lVGltZSgpICYmICFyaHMtPnRpbWVsaW5lVGltZSgpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbGhzLT50aW1lbGluZVRpbWUoKS52YWx1
ZSgpIDwgcmhzLT50aW1lbGluZVRpbWUoKS52YWx1ZSgpOwotfQotCi12b2lkIERvY3VtZW50VGlt
ZWxpbmU6OnBlcmZvcm1FdmVudERpc3BhdGNoVGFzaygpCi17Ci0gICAgaWYgKG1fcGVuZGluZ0Fu
aW1hdGlvbkV2ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcGVu
ZGluZ0FuaW1hdGlvbkV2ZW50cyA9IFdURk1vdmUobV9wZW5kaW5nQW5pbWF0aW9uRXZlbnRzKTsK
LQotICAgIHN0ZDo6c3RhYmxlX3NvcnQocGVuZGluZ0FuaW1hdGlvbkV2ZW50cy5iZWdpbigpLCBw
ZW5kaW5nQW5pbWF0aW9uRXZlbnRzLmVuZCgpLCBjb21wYXJlQW5pbWF0aW9uUGxheWJhY2tFdmVu
dHMpOwotICAgIGZvciAoYXV0byYgcGVuZGluZ0V2ZW50IDogcGVuZGluZ0FuaW1hdGlvbkV2ZW50
cykKLSAgICAgICAgcGVuZGluZ0V2ZW50LT50YXJnZXQoKS0+ZGlzcGF0Y2hFdmVudChwZW5kaW5n
RXZlbnQpOwogfQogCiBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4gRG9jdW1lbnRU
aW1lbGluZTo6YWNjZWxlcmF0ZWRBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKaW5k
ZXggMTkzYWRhZmEzNWZkMjI1YWU3M2E5ZjM1ZTgxNmVlNDBjMzRjMDAxMi4uZmFjYTkxNTFhOGM0
ODA3MzlhY2YxNzVmMzVjYjVkNDFmYWUwZGQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vRG9jdW1lbnRUaW1lbGluZS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIHN0
ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
dGltaW5nTW9kZWxEaWRDaGFuZ2UoKSBvdmVycmlkZTsKLQorICAgIHZvaWQgYW5pbWF0aW9uVGlt
aW5nRGlkQ2hhbmdlKFdlYkFuaW1hdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQW5p
bWF0aW9uKFdlYkFuaW1hdGlvbiopIG92ZXJyaWRlOwogICAgIHZvaWQgYW5pbWF0aW9uV2FzQWRk
ZWRUb0VsZW1lbnQoV2ViQW5pbWF0aW9uJiwgRWxlbWVudCYpIGZpbmFsOwogICAgIHZvaWQgYW5p
bWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KFdlYkFuaW1hdGlvbiYsIEVsZW1lbnQmKSBmaW5h
bDsKIApAQCAtODUsMTIgKzg1LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRG9jdW1lbnRU
aW1lbGluZShEb2N1bWVudCYsIFNlY29uZHMpOwogCisgICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlv
blJlc29sdXRpb25JZk5lZWRlZCgpOwogICAgIHZvaWQgc2NoZWR1bGVJbnZhbGlkYXRpb25UYXNr
SWZOZWVkZWQoKTsKICAgICB2b2lkIHBlcmZvcm1JbnZhbGlkYXRpb25UYXNrKCk7Ci0gICAgdm9p
ZCB1cGRhdGVBbmltYXRpb25TY2hlZHVsZSgpOwogICAgIHZvaWQgYW5pbWF0aW9uU2NoZWR1bGVU
aW1lckZpcmVkKCk7CiAgICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKTsKLSAg
ICB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoKTsKKyAgICB2b2lkIHVuc2NoZWR1bGVBbmltYXRpb25S
ZXNvbHV0aW9uKCk7CisgICAgdm9pZCB1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpOwog
ICAgIHZvaWQgcGVyZm9ybUV2ZW50RGlzcGF0Y2hUYXNrKCk7CiAgICAgdm9pZCBtYXliZUNsZWFy
Q2FjaGVkQ3VycmVudFRpbWUoKTsKICAgICB2b2lkIHVwZGF0ZUxpc3RPZkVsZW1lbnRzV2l0aFJ1
bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmKTsKQEAgLTEwMCwx
MCArMTAxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV93YWl0aW5nT25WTUlkbGUgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gbV9jYWNoZWRDdXJyZW50VGltZTsKLSAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVy
PiBtX2ludmFsaWRhdGlvblRhc2tRdWV1ZTsKLSAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBt
X2V2ZW50RGlzcGF0Y2hUYXNrUXVldWU7Ci0gICAgYm9vbCBtX25lZWRzVXBkYXRlQW5pbWF0aW9u
U2NoZWR1bGUgeyBmYWxzZSB9OwotICAgIFRpbWVyIG1fYW5pbWF0aW9uU2NoZWR1bGVUaW1lcjsK
KyAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrUXVl
dWU7CiAgICAgSGFzaFNldDxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gbV9hY2NlbGVyYXRlZEFuaW1h
dGlvbnNQZW5kaW5nUnVubmluZ1N0YXRlQ2hhbmdlOwogICAgIFZlY3RvcjxSZWY8QW5pbWF0aW9u
UGxheWJhY2tFdmVudD4+IG1fcGVuZGluZ0FuaW1hdGlvbkV2ZW50czsKICAgICB1bnNpZ25lZCBt
X251bWJlck9mQW5pbWF0aW9uVGltZWxpbmVJbnZhbGlkYXRpb25zRm9yVGVzdGluZyB7IDAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKaW5kZXggN2MyYTJjMGE1
NDllY2YwNjc5MWE5ZGE1ZmU2MjBkOWQzMGJhMzQ4ZC4uNGZmNTAxYzY2YzhjNDk5YjU5ZWVlMWE2
MWEzZGQwYWI1ZmI1MDQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dl
YkFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlv
bi5jcHAKQEAgLTkyLDE2ICs5Miw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjp1bnN1c3BlbmRFZmZl
Y3RJbnZhbGlkYXRpb24oKQogCiB2b2lkIFdlYkFuaW1hdGlvbjo6ZWZmZWN0VGltaW5nUHJvcGVy
dGllc0RpZENoYW5nZSgpCiB7Ci0gICAgdXBkYXRlRmluaXNoZWRTdGF0ZShEaWRTZWVrOjpObywg
U3luY2hyb25vdXNseU5vdGlmeTo6WWVzKTsKLSAgICB0aW1pbmdNb2RlbERpZENoYW5nZSgpOwot
fQotCi12b2lkIFdlYkFuaW1hdGlvbjo6dGltaW5nTW9kZWxEaWRDaGFuZ2UoKQotewotICAgIGlm
ICghaXNFZmZlY3RJbnZhbGlkYXRpb25TdXNwZW5kZWQoKSAmJiBtX2VmZmVjdCkKLSAgICAgICAg
bV9lZmZlY3QtPmludmFsaWRhdGUoKTsKLSAgICBpZiAobV90aW1lbGluZSkKLSAgICAgICAgbV90
aW1lbGluZS0+dGltaW5nTW9kZWxEaWRDaGFuZ2UoKTsKKyAgICB0aW1pbmdEaWRDaGFuZ2UoRGlk
U2Vlazo6Tm8sIFN5bmNocm9ub3VzbHlOb3RpZnk6Olllcyk7CiB9CiAKIHZvaWQgV2ViQW5pbWF0
aW9uOjpzZXRFZmZlY3QoUmVmUHRyPEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5PiYmIG5ld0VmZmVj
dCkKQEAgLTEyMiwxMSArMTEzLDExIEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRFZmZlY3QoUmVm
UHRyPEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5PiYmIG5ld0VmZmVjdCkKIAogICAgIC8vIDQuIElm
IGFuaW1hdGlvbiBoYXMgYSBwZW5kaW5nIHBhdXNlIHRhc2ssIHJlc2NoZWR1bGUgdGhhdCB0YXNr
IHRvIHJ1biBhcyBzb29uIGFzIGFuaW1hdGlvbiBpcyByZWFkeS4KICAgICBpZiAoaGFzUGVuZGlu
Z1BhdXNlVGFzaygpKQotICAgICAgICBzZXRUaW1lVG9SdW5QZW5kaW5nUGF1c2VUYXNrKFRpbWVU
b1J1blBlbmRpbmdUYXNrOjpXaGVuUmVhZHkpOworICAgICAgICBtX3RpbWVUb1J1blBlbmRpbmdQ
YXVzZVRhc2sgPSBUaW1lVG9SdW5QZW5kaW5nVGFzazo6V2hlblJlYWR5OwogCiAgICAgLy8gNS4g
SWYgYW5pbWF0aW9uIGhhcyBhIHBlbmRpbmcgcGxheSB0YXNrLCByZXNjaGVkdWxlIHRoYXQgdGFz
ayB0byBydW4gYXMgc29vbiBhcyBhbmltYXRpb24gaXMgcmVhZHkgdG8gcGxheSBuZXcgZWZmZWN0
LgogICAgIGlmIChoYXNQZW5kaW5nUGxheVRhc2soKSkKLSAgICAgICAgc2V0VGltZVRvUnVuUGVu
ZGluZ1BsYXlUYXNrKFRpbWVUb1J1blBlbmRpbmdUYXNrOjpXaGVuUmVhZHkpOworICAgICAgICBt
X3RpbWVUb1J1blBlbmRpbmdQbGF5VGFzayA9IFRpbWVUb1J1blBlbmRpbmdUYXNrOjpXaGVuUmVh
ZHk7CiAKICAgICAvLyA2LiBJZiBuZXcgZWZmZWN0IGlzIG5vdCBudWxsIGFuZCBpZiBuZXcgZWZm
ZWN0IGlzIHRoZSB0YXJnZXQgZWZmZWN0IG9mIGFub3RoZXIgYW5pbWF0aW9uLCBwcmV2aW91cyBh
bmltYXRpb24sIHJ1biB0aGUKICAgICAvLyBwcm9jZWR1cmUgdG8gc2V0IHRoZSB0YXJnZXQgZWZm
ZWN0IG9mIGFuIGFuaW1hdGlvbiAodGhpcyBwcm9jZWR1cmUpIG9uIHByZXZpb3VzIGFuaW1hdGlv
biBwYXNzaW5nIG51bGwgYXMgbmV3IGVmZmVjdC4KQEAgLTEzOCwxNSArMTI5LDE3IEBAIHZvaWQg
V2ViQW5pbWF0aW9uOjpzZXRFZmZlY3QoUmVmUHRyPEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5PiYm
IG5ld0VmZmVjdCkKICAgICAvLyB3aGlsZSB0aGUgZWZmZWN0IHdhcyBzZXQgdmlhIHRoZSBBUEks
IHRoZSBlbGVtZW50IHN0aWxsIGhhcyBhIHRyYW5zaXRpb24gb3IgYW5pbWF0aW9uIHNldCB1cCBh
bmQgd2UgbXVzdAogICAgIC8vIG5vdCBicmVhayB0aGUgdGltZWxpbmUtdG8tYW5pbWF0aW9uIHJl
bGF0aW9uc2hpcC4KIAorICAgIGludmFsaWRhdGVFZmZlY3QoKTsKKwogICAgIC8vIFRoaXMgb2Jq
ZWN0IGNvdWxkIGJlIGRlbGV0ZWQgYWZ0ZXIgY2xlYXJpbmcgdGhlIGVmZmVjdCByZWxhdGlvbnNo
aXAuCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAgICAgc2V0RWZm
ZWN0SW50ZXJuYWwoV1RGTW92ZShuZXdFZmZlY3QpLCBpc0RlY2xhcmF0aXZlQW5pbWF0aW9uKCkp
OwogCiAgICAgLy8gOC4gUnVuIHRoZSBwcm9jZWR1cmUgdG8gdXBkYXRlIGFuIGFuaW1hdGlvbuKA
mXMgZmluaXNoZWQgc3RhdGUgZm9yIGFuaW1hdGlvbiB3aXRoIHRoZSBkaWQgc2VlayBmbGFnIHNl
dCB0byBmYWxzZSwKICAgICAvLyBhbmQgdGhlIHN5bmNocm9ub3VzbHkgbm90aWZ5IGZsYWcgc2V0
IHRvIGZhbHNlLgotICAgIHVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlkU2Vlazo6Tm8sIFN5bmNocm9u
b3VzbHlOb3RpZnk6Ok5vKTsKKyAgICB0aW1pbmdEaWRDaGFuZ2UoRGlkU2Vlazo6Tm8sIFN5bmNo
cm9ub3VzbHlOb3RpZnk6Ok5vKTsKIAotICAgIHRpbWluZ01vZGVsRGlkQ2hhbmdlKCk7CisgICAg
aW52YWxpZGF0ZUVmZmVjdCgpOwogfQogCiB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0RWZmZWN0SW50
ZXJuYWwoUmVmUHRyPEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5PiYmIG5ld0VmZmVjdCwgYm9vbCBk
b05vdFJlbW92ZUZyb21UaW1lbGluZSkKQEAgLTE2OSw2ICsxNjIsNyBAQCB2b2lkIFdlYkFuaW1h
dGlvbjo6c2V0RWZmZWN0SW50ZXJuYWwoUmVmUHRyPEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5PiYm
IG5ld0VmZmVjdAogICAgICAgICBvbGRFZmZlY3QtPnNldEFuaW1hdGlvbihudWxscHRyKTsKICAg
ICAgICAgaWYgKCFkb05vdFJlbW92ZUZyb21UaW1lbGluZSAmJiBtX3RpbWVsaW5lICYmIHByZXZp
b3VzVGFyZ2V0ICYmIHByZXZpb3VzVGFyZ2V0ICE9IG5ld1RhcmdldCkKICAgICAgICAgICAgIG1f
dGltZWxpbmUtPmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVudCgqdGhpcywgKnByZXZpb3Vz
VGFyZ2V0KTsKKyAgICAgICAgdXBkYXRlUmVsZXZhbmNlKCk7CiAgICAgfQogCiAgICAgaWYgKG1f
ZWZmZWN0KSB7CkBAIC0xODksNyArMTgzLDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldFRpbWVs
aW5lKFJlZlB0cjxBbmltYXRpb25UaW1lbGluZT4mJiB0aW1lbGluZSkKIAogICAgIC8vIDQuIElm
IHRoZSBhbmltYXRpb24gc3RhcnQgdGltZSBvZiBhbmltYXRpb24gaXMgcmVzb2x2ZWQsIG1ha2Ug
YW5pbWF0aW9u4oCZcyBob2xkIHRpbWUgdW5yZXNvbHZlZC4KICAgICBpZiAobV9zdGFydFRpbWUp
Ci0gICAgICAgIHNldEhvbGRUaW1lKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIG1faG9sZFRpbWUg
PSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3RSZWFkT25seT4obV9l
ZmZlY3QpKSB7CiAgICAgICAgIGF1dG8qIGtleWZyYW1lRWZmZWN0ID0gZG93bmNhc3Q8S2V5ZnJh
bWVFZmZlY3RSZWFkT25seT4obV9lZmZlY3QuZ2V0KCkpOwpAQCAtMjExLDExICsyMDUsMTEgQEAg
dm9pZCBXZWJBbmltYXRpb246OnNldFRpbWVsaW5lKFJlZlB0cjxBbmltYXRpb25UaW1lbGluZT4m
JiB0aW1lbGluZSkKIAogICAgIHNldFN1c3BlbmRlZChpczxEb2N1bWVudFRpbWVsaW5lPihtX3Rp
bWVsaW5lKSAmJiBkb3duY2FzdDxEb2N1bWVudFRpbWVsaW5lPigqbV90aW1lbGluZSkuYW5pbWF0
aW9uc0FyZVN1c3BlbmRlZCgpKTsKIAotICAgIHVwZGF0ZVBlbmRpbmdUYXNrcygpOwotCiAgICAg
Ly8gNS4gUnVuIHRoZSBwcm9jZWR1cmUgdG8gdXBkYXRlIGFuIGFuaW1hdGlvbuKAmXMgZmluaXNo
ZWQgc3RhdGUgZm9yIGFuaW1hdGlvbiB3aXRoIHRoZSBkaWQgc2VlayBmbGFnIHNldCB0byBmYWxz
ZSwKICAgICAvLyBhbmQgdGhlIHN5bmNocm9ub3VzbHkgbm90aWZ5IGZsYWcgc2V0IHRvIGZhbHNl
LgotICAgIHVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlkU2Vlazo6Tm8sIFN5bmNocm9ub3VzbHlOb3Rp
Znk6Ok5vKTsKKyAgICB0aW1pbmdEaWRDaGFuZ2UoRGlkU2Vlazo6Tm8sIFN5bmNocm9ub3VzbHlO
b3RpZnk6Ok5vKTsKKworICAgIGludmFsaWRhdGVFZmZlY3QoKTsKIH0KIAogdm9pZCBXZWJBbmlt
YXRpb246OnNldFRpbWVsaW5lSW50ZXJuYWwoUmVmUHRyPEFuaW1hdGlvblRpbWVsaW5lPiYmIHRp
bWVsaW5lKQpAQCAtMjI0LDEyICsyMTgsOSBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0VGltZWxp
bmVJbnRlcm5hbChSZWZQdHI8QW5pbWF0aW9uVGltZWxpbmU+JiYgdGltZWxpbmUpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX3RpbWVsaW5lKQotICAgICAgICBtX3RpbWVsaW5lLT5yZW1v
dmVBbmltYXRpb24oKnRoaXMpOworICAgICAgICBtX3RpbWVsaW5lLT5yZW1vdmVBbmltYXRpb24o
dGhpcyk7CiAKICAgICBtX3RpbWVsaW5lID0gV1RGTW92ZSh0aW1lbGluZSk7Ci0KLSAgICBpZiAo
bV90aW1lbGluZSkKLSAgICAgICAgbV90aW1lbGluZS0+YWRkQW5pbWF0aW9uKCp0aGlzKTsKIH0K
IAogdm9pZCBXZWJBbmltYXRpb246OmVmZmVjdFRhcmdldERpZENoYW5nZShFbGVtZW50KiBwcmV2
aW91c1RhcmdldCwgRWxlbWVudCogbmV3VGFyZ2V0KQpAQCAtMjQ0LDIzICsyMzUsMTQgQEAgdm9p
ZCBXZWJBbmltYXRpb246OmVmZmVjdFRhcmdldERpZENoYW5nZShFbGVtZW50KiBwcmV2aW91c1Rh
cmdldCwgRWxlbWVudCogbmV3VGEKICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRk
ZWRUb0VsZW1lbnQoKnRoaXMsICpuZXdUYXJnZXQpOwogfQogCi12b2lkIFdlYkFuaW1hdGlvbjo6
c2V0SG9sZFRpbWUoc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBob2xkVGltZSkKLXsKLSAgICBpZiAo
bV9ob2xkVGltZSA9PSBob2xkVGltZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9ob2xkVGlt
ZSA9IGhvbGRUaW1lOwotICAgIHRpbWluZ01vZGVsRGlkQ2hhbmdlKCk7Ci19Ci0KLXN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBXZWJBbmltYXRpb246OmJpbmRpbmdzU3RhcnRUaW1lKCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBXZWJBbmltYXRpb246OnN0YXJ0VGltZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3N0YXJ0VGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUobV9zdGFydFRpbWUudmFsdWUoKSk7
CiB9CiAKLXZvaWQgV2ViQW5pbWF0aW9uOjpzZXRCaW5kaW5nc1N0YXJ0VGltZShzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gc3RhcnRUaW1lKQordm9pZCBXZWJBbmltYXRpb246OnNldFN0YXJ0VGltZShz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3RhcnRUaW1lKQogewogICAgIC8vIDMuNC42IFRoZSBwcm9j
ZWR1cmUgdG8gc2V0IHRoZSBzdGFydCB0aW1lIG9mIGFuaW1hdGlvbiwgYW5pbWF0aW9uLCB0byBu
ZXcgc3RhcnQgdGltZSwgaXMgYXMgZm9sbG93czoKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvd2ViLWFuaW1hdGlvbnMvI3NldHRpbmctdGhlLXN0YXJ0LXRpbWUtb2YtYW4tYW5pbWF0
aW9uCkBAIC0yNzgsNTEgKzI2MCwzNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0QmluZGluZ3NT
dGFydFRpbWUoc3RkOjpvcHRpb25hbDxkb3VibGU+IHN0YXJ0VGltZSkKIAogICAgIC8vIDIuIElm
IHRpbWVsaW5lIHRpbWUgaXMgdW5yZXNvbHZlZCBhbmQgbmV3IHN0YXJ0IHRpbWUgaXMgcmVzb2x2
ZWQsIG1ha2UgYW5pbWF0aW9uJ3MgaG9sZCB0aW1lIHVucmVzb2x2ZWQuCiAgICAgaWYgKCF0aW1l
bGluZVRpbWUgJiYgbmV3U3RhcnRUaW1lKQotICAgICAgICBzZXRIb2xkVGltZShzdGQ6Om51bGxv
cHQpOworICAgICAgICBtX2hvbGRUaW1lID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMy4gTGV0
IHByZXZpb3VzIGN1cnJlbnQgdGltZSBiZSBhbmltYXRpb24ncyBjdXJyZW50IHRpbWUuCiAgICAg
YXV0byBwcmV2aW91c0N1cnJlbnRUaW1lID0gY3VycmVudFRpbWUoKTsKIAogICAgIC8vIDQuIFNl
dCBhbmltYXRpb24ncyBzdGFydCB0aW1lIHRvIG5ldyBzdGFydCB0aW1lLgotICAgIHNldFN0YXJ0
VGltZShuZXdTdGFydFRpbWUpOworICAgIG1fc3RhcnRUaW1lID0gbmV3U3RhcnRUaW1lOwogCiAg
ICAgLy8gNS4gVXBkYXRlIGFuaW1hdGlvbidzIGhvbGQgdGltZSBiYXNlZCBvbiB0aGUgZmlyc3Qg
bWF0Y2hpbmcgY29uZGl0aW9uIGZyb20gdGhlIGZvbGxvd2luZywKICAgICBpZiAobmV3U3RhcnRU
aW1lKSB7CiAgICAgICAgIC8vIElmIG5ldyBzdGFydCB0aW1lIGlzIHJlc29sdmVkLAogICAgICAg
ICAvLyBJZiBhbmltYXRpb27igJlzIHBsYXliYWNrIHJhdGUgaXMgbm90IHplcm8sIG1ha2UgYW5p
bWF0aW9u4oCZcyBob2xkIHRpbWUgdW5yZXNvbHZlZC4KICAgICAgICAgaWYgKG1fcGxheWJhY2tS
YXRlKQotICAgICAgICAgICAgc2V0SG9sZFRpbWUoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAg
IG1faG9sZFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gT3Ro
ZXJ3aXNlIChuZXcgc3RhcnQgdGltZSBpcyB1bnJlc29sdmVkKSwKICAgICAgICAgLy8gU2V0IGFu
aW1hdGlvbidzIGhvbGQgdGltZSB0byBwcmV2aW91cyBjdXJyZW50IHRpbWUgZXZlbiBpZiBwcmV2
aW91cyBjdXJyZW50IHRpbWUgaXMgdW5yZXNvbHZlZC4KLSAgICAgICAgc2V0SG9sZFRpbWUocHJl
dmlvdXNDdXJyZW50VGltZSk7CisgICAgICAgIG1faG9sZFRpbWUgPSBwcmV2aW91c0N1cnJlbnRU
aW1lOwogICAgIH0KIAogICAgIC8vIDYuIElmIGFuaW1hdGlvbiBoYXMgYSBwZW5kaW5nIHBsYXkg
dGFzayBvciBhIHBlbmRpbmcgcGF1c2UgdGFzaywgY2FuY2VsIHRoYXQgdGFzayBhbmQgcmVzb2x2
ZSBhbmltYXRpb24ncyBjdXJyZW50IHJlYWR5IHByb21pc2Ugd2l0aCBhbmltYXRpb24uCiAgICAg
aWYgKHBlbmRpbmcoKSkgewotICAgICAgICBzZXRUaW1lVG9SdW5QZW5kaW5nUGF1c2VUYXNrKFRp
bWVUb1J1blBlbmRpbmdUYXNrOjpOb3RTY2hlZHVsZWQpOwotICAgICAgICBzZXRUaW1lVG9SdW5Q
ZW5kaW5nUGxheVRhc2soVGltZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxlZCk7CisgICAg
ICAgIG1fdGltZVRvUnVuUGVuZGluZ1BhdXNlVGFzayA9IFRpbWVUb1J1blBlbmRpbmdUYXNrOjpO
b3RTY2hlZHVsZWQ7CisgICAgICAgIG1fdGltZVRvUnVuUGVuZGluZ1BsYXlUYXNrID0gVGltZVRv
UnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxlZDsKICAgICAgICAgbV9yZWFkeVByb21pc2UtPnJl
c29sdmUoKnRoaXMpOwogICAgIH0KIAogICAgIC8vIDcuIFJ1biB0aGUgcHJvY2VkdXJlIHRvIHVw
ZGF0ZSBhbiBhbmltYXRpb27igJlzIGZpbmlzaGVkIHN0YXRlIGZvciBhbmltYXRpb24gd2l0aCB0
aGUgZGlkIHNlZWsgZmxhZyBzZXQgdG8gdHJ1ZSwgYW5kIHRoZSBzeW5jaHJvbm91c2x5IG5vdGlm
eSBmbGFnIHNldCB0byBmYWxzZS4KLSAgICB1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWs6Olll
cywgU3luY2hyb25vdXNseU5vdGlmeTo6Tm8pOworICAgIHRpbWluZ0RpZENoYW5nZShEaWRTZWVr
OjpZZXMsIFN5bmNocm9ub3VzbHlOb3RpZnk6Ok5vKTsKIAotICAgIHRpbWluZ01vZGVsRGlkQ2hh
bmdlKCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gV2ViQW5pbWF0aW9uOjpzdGFydFRp
bWUoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0YXJ0VGltZTsKLX0KLQotdm9pZCBXZWJBbmlt
YXRpb246OnNldFN0YXJ0VGltZShzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG5ld1N0YXJ0VGltZSkK
LXsKLSAgICBpZiAobV9zdGFydFRpbWUgPT0gbmV3U3RhcnRUaW1lKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3N0YXJ0VGltZSA9IG5ld1N0YXJ0VGltZTsKLSAgICB0aW1pbmdNb2RlbERpZENo
YW5nZSgpOworICAgIGludmFsaWRhdGVFZmZlY3QoKTsKIH0KIAogc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IFdlYkFuaW1hdGlvbjo6YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CkBAIC0zOTIsMTMg
KzM2MCwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OnNpbGVudGx5U2V0Q3Vy
cmVudFRpbWUoc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzZQogICAgIC8vIE90aGVyd2lzZSwgc2V0
IGFuaW1hdGlvbidzIHN0YXJ0IHRpbWUgdG8gdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRpbWVs
aW5lIHRpbWUgLSAoc2VlayB0aW1lIC8gcGxheWJhY2sgcmF0ZSkKICAgICAvLyB3aGVyZSB0aW1l
bGluZSB0aW1lIGlzIHRoZSBjdXJyZW50IHRpbWUgdmFsdWUgb2YgdGltZWxpbmUgYXNzb2NpYXRl
ZCB3aXRoIGFuaW1hdGlvbi4KICAgICBpZiAobV9ob2xkVGltZSB8fCAhbV9zdGFydFRpbWUgfHwg
IW1fdGltZWxpbmUgfHwgIW1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgfHwgIW1fcGxheWJhY2tS
YXRlKQotICAgICAgICBzZXRIb2xkVGltZShzZWVrVGltZSk7CisgICAgICAgIG1faG9sZFRpbWUg
PSBzZWVrVGltZTsKICAgICBlbHNlCi0gICAgICAgIHNldFN0YXJ0VGltZShtX3RpbWVsaW5lLT5j
dXJyZW50VGltZSgpLnZhbHVlKCkgLSAoc2Vla1RpbWUudmFsdWUoKSAvIG1fcGxheWJhY2tSYXRl
KSk7CisgICAgICAgIG1fc3RhcnRUaW1lID0gbV90aW1lbGluZS0+Y3VycmVudFRpbWUoKS52YWx1
ZSgpIC0gKHNlZWtUaW1lLnZhbHVlKCkgLyBtX3BsYXliYWNrUmF0ZSk7CiAKICAgICAvLyAzLiBJ
ZiBhbmltYXRpb24gaGFzIG5vIGFzc29jaWF0ZWQgdGltZWxpbmUgb3IgdGhlIGFzc29jaWF0ZWQg
dGltZWxpbmUgaXMgaW5hY3RpdmUsIG1ha2UgYW5pbWF0aW9uJ3Mgc3RhcnQgdGltZSB1bnJlc29s
dmVkLgogICAgIGlmICghbV90aW1lbGluZSB8fCAhbV90aW1lbGluZS0+Y3VycmVudFRpbWUoKSkK
LSAgICAgICAgc2V0U3RhcnRUaW1lKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIG1fc3RhcnRUaW1l
ID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gNC4gTWFrZSBhbmltYXRpb24ncyBwcmV2aW91cyBj
dXJyZW50IHRpbWUgdW5yZXNvbHZlZC4KICAgICBtX3ByZXZpb3VzQ3VycmVudFRpbWUgPSBzdGQ6
Om51bGxvcHQ7CkBAIC00MTksMjEgKzM4NywyMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmlt
YXRpb246OnNldEN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbWUpCiAg
ICAgLy8gMi4gSWYgYW5pbWF0aW9uIGhhcyBhIHBlbmRpbmcgcGF1c2UgdGFzaywgc3luY2hyb25v
dXNseSBjb21wbGV0ZSB0aGUgcGF1c2Ugb3BlcmF0aW9uIGJ5IHBlcmZvcm1pbmcgdGhlIGZvbGxv
d2luZyBzdGVwczoKICAgICBpZiAoaGFzUGVuZGluZ1BhdXNlVGFzaygpKSB7CiAgICAgICAgIC8v
IDEuIFNldCBhbmltYXRpb24ncyBob2xkIHRpbWUgdG8gc2VlayB0aW1lLgotICAgICAgICBzZXRI
b2xkVGltZShzZWVrVGltZSk7CisgICAgICAgIG1faG9sZFRpbWUgPSBzZWVrVGltZTsKICAgICAg
ICAgLy8gMi4gTWFrZSBhbmltYXRpb24ncyBzdGFydCB0aW1lIHVucmVzb2x2ZWQuCi0gICAgICAg
IHNldFN0YXJ0VGltZShzdGQ6Om51bGxvcHQpOworICAgICAgICBtX3N0YXJ0VGltZSA9IHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgLy8gMy4gQ2FuY2VsIHRoZSBwZW5kaW5nIHBhdXNlIHRhc2suCi0g
ICAgICAgIHNldFRpbWVUb1J1blBlbmRpbmdQYXVzZVRhc2soVGltZVRvUnVuUGVuZGluZ1Rhc2s6
Ok5vdFNjaGVkdWxlZCk7CisgICAgICAgIG1fdGltZVRvUnVuUGVuZGluZ1BhdXNlVGFzayA9IFRp
bWVUb1J1blBlbmRpbmdUYXNrOjpOb3RTY2hlZHVsZWQ7CiAgICAgICAgIC8vIDQuIFJlc29sdmUg
YW5pbWF0aW9uJ3MgY3VycmVudCByZWFkeSBwcm9taXNlIHdpdGggYW5pbWF0aW9uLgogICAgICAg
ICBtX3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7CiAgICAgfQogCiAgICAgLy8gMy4gUnVu
IHRoZSBwcm9jZWR1cmUgdG8gdXBkYXRlIGFuIGFuaW1hdGlvbidzIGZpbmlzaGVkIHN0YXRlIGZv
ciBhbmltYXRpb24gd2l0aCB0aGUgZGlkIHNlZWsgZmxhZyBzZXQgdG8gdHJ1ZSwgYW5kIHRoZSBz
eW5jaHJvbm91c2x5IG5vdGlmeSBmbGFnIHNldCB0byBmYWxzZS4KLSAgICB1cGRhdGVGaW5pc2hl
ZFN0YXRlKERpZFNlZWs6OlllcywgU3luY2hyb25vdXNseU5vdGlmeTo6Tm8pOworICAgIHRpbWlu
Z0RpZENoYW5nZShEaWRTZWVrOjpZZXMsIFN5bmNocm9ub3VzbHlOb3RpZnk6Ok5vKTsKIAogICAg
IGlmIChtX2VmZmVjdCkKICAgICAgICAgbV9lZmZlY3QtPmFuaW1hdGlvbkRpZFNlZWsoKTsKIAor
ICAgIGludmFsaWRhdGVFZmZlY3QoKTsKKwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTQ2Niw2
ICs0MzYsOCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0UGxheWJhY2tSYXRlKGRvdWJsZSBuZXdQ
bGF5YmFja1JhdGUsIFNpbGVudGx5IHNpbGVudGx5KQogICAgICAgICBzaWxlbnRseVNldEN1cnJl
bnRUaW1lKHByZXZpb3VzVGltZSk7CiAgICAgZWxzZQogICAgICAgICBzZXRDdXJyZW50VGltZShw
cmV2aW91c1RpbWUpOworCisgICAgaW52YWxpZGF0ZUVmZmVjdCgpOwogfQogCiBhdXRvIFdlYkFu
aW1hdGlvbjo6cGxheVN0YXRlKCkgY29uc3QgLT4gUGxheVN0YXRlCkBAIC01MTAsNiArNDgyLDcg
QEAgU2Vjb25kcyBXZWJBbmltYXRpb246OmVmZmVjdEVuZFRpbWUoKSBjb25zdAogdm9pZCBXZWJB
bmltYXRpb246OmNhbmNlbCgpCiB7CiAgICAgY2FuY2VsKFNpbGVudGx5OjpObyk7CisgICAgaW52
YWxpZGF0ZUVmZmVjdCgpOwogfQogCiB2b2lkIFdlYkFuaW1hdGlvbjo6Y2FuY2VsKFNpbGVudGx5
IHNpbGVudGx5KQpAQCAtNTQ5LDEwICs1MjIsMTQgQEAgdm9pZCBXZWJBbmltYXRpb246OmNhbmNl
bChTaWxlbnRseSBzaWxlbnRseSkKICAgICB9CiAKICAgICAvLyAyLiBNYWtlIGFuaW1hdGlvbidz
IGhvbGQgdGltZSB1bnJlc29sdmVkLgotICAgIHNldEhvbGRUaW1lKHN0ZDo6bnVsbG9wdCk7Cisg
ICAgbV9ob2xkVGltZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDMuIE1ha2UgYW5pbWF0aW9u
J3Mgc3RhcnQgdGltZSB1bnJlc29sdmVkLgotICAgIHNldFN0YXJ0VGltZShzdGQ6Om51bGxvcHQp
OworICAgIG1fc3RhcnRUaW1lID0gc3RkOjpudWxsb3B0OworCisgICAgdGltaW5nRGlkQ2hhbmdl
KERpZFNlZWs6Ok5vLCBTeW5jaHJvbm91c2x5Tm90aWZ5OjpObyk7CisKKyAgICBpbnZhbGlkYXRl
RWZmZWN0KCk7CiB9CiAKIHZvaWQgV2ViQW5pbWF0aW9uOjplbnF1ZXVlQW5pbWF0aW9uUGxheWJh
Y2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4g
Y3VycmVudFRpbWUsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKQpAQCAtNTg2
LDExICs1NjMsMTEgQEAgdm9pZCBXZWJBbmltYXRpb246OnJlc2V0UGVuZGluZ1Rhc2tzKFNpbGVu
dGx5IHNpbGVudGx5KQogCiAgICAgLy8gMi4gSWYgYW5pbWF0aW9uIGhhcyBhIHBlbmRpbmcgcGxh
eSB0YXNrLCBjYW5jZWwgdGhhdCB0YXNrLgogICAgIGlmIChoYXNQZW5kaW5nUGxheVRhc2soKSkK
LSAgICAgICAgc2V0VGltZVRvUnVuUGVuZGluZ1BsYXlUYXNrKFRpbWVUb1J1blBlbmRpbmdUYXNr
OjpOb3RTY2hlZHVsZWQpOworICAgICAgICBtX3RpbWVUb1J1blBlbmRpbmdQbGF5VGFzayA9IFRp
bWVUb1J1blBlbmRpbmdUYXNrOjpOb3RTY2hlZHVsZWQ7CiAKICAgICAvLyAzLiBJZiBhbmltYXRp
b24gaGFzIGEgcGVuZGluZyBwYXVzZSB0YXNrLCBjYW5jZWwgdGhhdCB0YXNrLgogICAgIGlmICho
YXNQZW5kaW5nUGF1c2VUYXNrKCkpCi0gICAgICAgIHNldFRpbWVUb1J1blBlbmRpbmdQYXVzZVRh
c2soVGltZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxlZCk7CisgICAgICAgIG1fdGltZVRv
UnVuUGVuZGluZ1BhdXNlVGFzayA9IFRpbWVUb1J1blBlbmRpbmdUYXNrOjpOb3RTY2hlZHVsZWQ7
CiAKICAgICAvLyA0LiBSZWplY3QgYW5pbWF0aW9uJ3MgY3VycmVudCByZWFkeSBwcm9taXNlIHdp
dGggYSBET01FeGNlcHRpb24gbmFtZWQgIkFib3J0RXJyb3IiLgogICAgIGlmIChzaWxlbnRseSA9
PSBTaWxlbnRseTo6Tm8pCkBAIC02MjMsMzAgKzYwMCw0NSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBX
ZWJBbmltYXRpb246OmZpbmlzaCgpCiAgICAgLy8gNC4gSWYgYW5pbWF0aW9uJ3Mgc3RhcnQgdGlt
ZSBpcyB1bnJlc29sdmVkIGFuZCBhbmltYXRpb24gaGFzIGFuIGFzc29jaWF0ZWQgYWN0aXZlIHRp
bWVsaW5lLCBsZXQgdGhlIHN0YXJ0IHRpbWUgYmUgdGhlIHJlc3VsdCBvZgogICAgIC8vICAgIGV2
YWx1YXRpbmcgdGltZWxpbmUgdGltZSAtIChsaW1pdCAvIHBsYXliYWNrIHJhdGUpIHdoZXJlIHRp
bWVsaW5lIHRpbWUgaXMgdGhlIGN1cnJlbnQgdGltZSB2YWx1ZSBvZiB0aGUgYXNzb2NpYXRlZCB0
aW1lbGluZS4KICAgICBpZiAoIW1fc3RhcnRUaW1lICYmIG1fdGltZWxpbmUgJiYgbV90aW1lbGlu
ZS0+Y3VycmVudFRpbWUoKSkKLSAgICAgICAgc2V0U3RhcnRUaW1lKG1fdGltZWxpbmUtPmN1cnJl
bnRUaW1lKCkudmFsdWUoKSAtIChsaW1pdCAvIG1fcGxheWJhY2tSYXRlKSk7CisgICAgICAgIG1f
c3RhcnRUaW1lID0gbV90aW1lbGluZS0+Y3VycmVudFRpbWUoKS52YWx1ZSgpIC0gKGxpbWl0IC8g
bV9wbGF5YmFja1JhdGUpOwogCiAgICAgLy8gNS4gSWYgdGhlcmUgaXMgYSBwZW5kaW5nIHBhdXNl
IHRhc2sgYW5kIHN0YXJ0IHRpbWUgaXMgcmVzb2x2ZWQsCiAgICAgaWYgKGhhc1BlbmRpbmdQYXVz
ZVRhc2soKSAmJiBtX3N0YXJ0VGltZSkgewogICAgICAgICAvLyAxLiBMZXQgdGhlIGhvbGQgdGlt
ZSBiZSB1bnJlc29sdmVkLgotICAgICAgICBzZXRIb2xkVGltZShzdGQ6Om51bGxvcHQpOworICAg
ICAgICBtX2hvbGRUaW1lID0gc3RkOjpudWxsb3B0OwogICAgICAgICAvLyAyLiBDYW5jZWwgdGhl
IHBlbmRpbmcgcGF1c2UgdGFzay4KLSAgICAgICAgc2V0VGltZVRvUnVuUGVuZGluZ1BhdXNlVGFz
ayhUaW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2NoZWR1bGVkKTsKKyAgICAgICAgbV90aW1lVG9S
dW5QZW5kaW5nUGF1c2VUYXNrID0gVGltZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxlZDsK
ICAgICAgICAgLy8gMy4gUmVzb2x2ZSB0aGUgY3VycmVudCByZWFkeSBwcm9taXNlIG9mIGFuaW1h
dGlvbiB3aXRoIGFuaW1hdGlvbi4KICAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRo
aXMpOwogICAgIH0KIAogICAgIC8vIDYuIElmIHRoZXJlIGlzIGEgcGVuZGluZyBwbGF5IHRhc2sg
YW5kIHN0YXJ0IHRpbWUgaXMgcmVzb2x2ZWQsIGNhbmNlbCB0aGF0IHRhc2sgYW5kIHJlc29sdmUg
dGhlIGN1cnJlbnQgcmVhZHkgcHJvbWlzZSBvZiBhbmltYXRpb24gd2l0aCBhbmltYXRpb24uCiAg
ICAgaWYgKGhhc1BlbmRpbmdQbGF5VGFzaygpICYmIG1fc3RhcnRUaW1lKSB7Ci0gICAgICAgIHNl
dFRpbWVUb1J1blBlbmRpbmdQbGF5VGFzayhUaW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2NoZWR1
bGVkKTsKKyAgICAgICAgbV90aW1lVG9SdW5QZW5kaW5nUGxheVRhc2sgPSBUaW1lVG9SdW5QZW5k
aW5nVGFzazo6Tm90U2NoZWR1bGVkOwogICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgq
dGhpcyk7CiAgICAgfQogCiAgICAgLy8gNy4gUnVuIHRoZSBwcm9jZWR1cmUgdG8gdXBkYXRlIGFu
IGFuaW1hdGlvbidzIGZpbmlzaGVkIHN0YXRlIGFuaW1hdGlvbiB3aXRoIHRoZSBkaWQgc2VlayBm
bGFnIHNldCB0byB0cnVlLCBhbmQgdGhlIHN5bmNocm9ub3VzbHkgbm90aWZ5IGZsYWcgc2V0IHRv
IHRydWUuCi0gICAgdXBkYXRlRmluaXNoZWRTdGF0ZShEaWRTZWVrOjpZZXMsIFN5bmNocm9ub3Vz
bHlOb3RpZnk6Olllcyk7CisgICAgdGltaW5nRGlkQ2hhbmdlKERpZFNlZWs6OlllcywgU3luY2hy
b25vdXNseU5vdGlmeTo6WWVzKTsKKworICAgIGludmFsaWRhdGVFZmZlY3QoKTsKIAogICAgIHJl
dHVybiB7IH07CiB9CiAKK3ZvaWQgV2ViQW5pbWF0aW9uOjp0aW1pbmdEaWRDaGFuZ2UoRGlkU2Vl
ayBkaWRTZWVrLCBTeW5jaHJvbm91c2x5Tm90aWZ5IHN5bmNocm9ub3VzbHlOb3RpZnkpCit7Cisg
ICAgdXBkYXRlRmluaXNoZWRTdGF0ZShkaWRTZWVrLCBzeW5jaHJvbm91c2x5Tm90aWZ5KTsKKyAg
ICBpZiAobV90aW1lbGluZSkKKyAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uVGltaW5nRGlk
Q2hhbmdlKCp0aGlzKTsKK307CisKK3ZvaWQgV2ViQW5pbWF0aW9uOjppbnZhbGlkYXRlRWZmZWN0
KCkKK3sKKyAgICBpZiAoIWlzRWZmZWN0SW52YWxpZGF0aW9uU3VzcGVuZGVkKCkgJiYgbV9lZmZl
Y3QpCisgICAgICAgIG1fZWZmZWN0LT5pbnZhbGlkYXRlKCk7Cit9CisKIHZvaWQgV2ViQW5pbWF0
aW9uOjp1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWsgZGlkU2VlaywgU3luY2hyb25vdXNseU5v
dGlmeSBzeW5jaHJvbm91c2x5Tm90aWZ5KQogewogICAgIC8vIDMuNC4xNC4gVXBkYXRpbmcgdGhl
IGZpbmlzaGVkIHN0YXRlCkBAIC02NjcsMzEgKzY1OSwzMSBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6
dXBkYXRlRmluaXNoZWRTdGF0ZShEaWRTZWVrIGRpZFNlZWssIFN5bmNocm9ub3VzbHlOb3RpZnkg
c3luYwogICAgICAgICAgICAgLy8gSWYgYW5pbWF0aW9uIHBsYXliYWNrIHJhdGUgPiAwIGFuZCB1
bmNvbnN0cmFpbmVkIGN1cnJlbnQgdGltZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGFy
Z2V0IGVmZmVjdCBlbmQsCiAgICAgICAgICAgICAvLyBJZiBkaWQgc2VlayBpcyB0cnVlLCBsZXQg
dGhlIGhvbGQgdGltZSBiZSB0aGUgdmFsdWUgb2YgdW5jb25zdHJhaW5lZCBjdXJyZW50IHRpbWUu
CiAgICAgICAgICAgICBpZiAoZGlkU2VlayA9PSBEaWRTZWVrOjpZZXMpCi0gICAgICAgICAgICAg
ICAgc2V0SG9sZFRpbWUodW5jb25zdHJhaW5lZEN1cnJlbnRUaW1lKTsKKyAgICAgICAgICAgICAg
ICBtX2hvbGRUaW1lID0gdW5jb25zdHJhaW5lZEN1cnJlbnRUaW1lOwogICAgICAgICAgICAgLy8g
SWYgZGlkIHNlZWsgaXMgZmFsc2UsIGxldCB0aGUgaG9sZCB0aW1lIGJlIHRoZSBtYXhpbXVtIHZh
bHVlIG9mIHByZXZpb3VzIGN1cnJlbnQgdGltZSBhbmQgdGFyZ2V0IGVmZmVjdCBlbmQuIElmIHRo
ZSBwcmV2aW91cyBjdXJyZW50IHRpbWUgaXMgdW5yZXNvbHZlZCwgbGV0IHRoZSBob2xkIHRpbWUg
YmUgdGFyZ2V0IGVmZmVjdCBlbmQuCiAgICAgICAgICAgICBlbHNlIGlmICghbV9wcmV2aW91c0N1
cnJlbnRUaW1lKQotICAgICAgICAgICAgICAgIHNldEhvbGRUaW1lKGVuZFRpbWUpOworICAgICAg
ICAgICAgICAgIG1faG9sZFRpbWUgPSBlbmRUaW1lOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHNldEhvbGRUaW1lKHN0ZDo6bWF4KG1fcHJldmlvdXNDdXJyZW50VGltZS52YWx1
ZSgpLCBlbmRUaW1lKSk7CisgICAgICAgICAgICAgICAgbV9ob2xkVGltZSA9IHN0ZDo6bWF4KG1f
cHJldmlvdXNDdXJyZW50VGltZS52YWx1ZSgpLCBlbmRUaW1lKTsKICAgICAgICAgfSBlbHNlIGlm
IChtX3BsYXliYWNrUmF0ZSA8IDAgJiYgdW5jb25zdHJhaW5lZEN1cnJlbnRUaW1lIDw9IDBfcykg
ewogICAgICAgICAgICAgLy8gSWYgYW5pbWF0aW9uIHBsYXliYWNrIHJhdGUgPCAwIGFuZCB1bmNv
bnN0cmFpbmVkIGN1cnJlbnQgdGltZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMCwKICAgICAg
ICAgICAgIC8vIElmIGRpZCBzZWVrIGlzIHRydWUsIGxldCB0aGUgaG9sZCB0aW1lIGJlIHRoZSB2
YWx1ZSBvZiB1bmNvbnN0cmFpbmVkIGN1cnJlbnQgdGltZS4KICAgICAgICAgICAgIGlmIChkaWRT
ZWVrID09IERpZFNlZWs6OlllcykKLSAgICAgICAgICAgICAgICBzZXRIb2xkVGltZSh1bmNvbnN0
cmFpbmVkQ3VycmVudFRpbWUpOworICAgICAgICAgICAgICAgIG1faG9sZFRpbWUgPSB1bmNvbnN0
cmFpbmVkQ3VycmVudFRpbWU7CiAgICAgICAgICAgICAvLyBJZiBkaWQgc2VlayBpcyBmYWxzZSwg
bGV0IHRoZSBob2xkIHRpbWUgYmUgdGhlIG1pbmltdW0gdmFsdWUgb2YgcHJldmlvdXMgY3VycmVu
dCB0aW1lIGFuZCB6ZXJvLiBJZiB0aGUgcHJldmlvdXMgY3VycmVudCB0aW1lIGlzIHVucmVzb2x2
ZWQsIGxldCB0aGUgaG9sZCB0aW1lIGJlIHplcm8uCiAgICAgICAgICAgICBlbHNlIGlmICghbV9w
cmV2aW91c0N1cnJlbnRUaW1lKQotICAgICAgICAgICAgICAgIHNldEhvbGRUaW1lKDBfcyk7Cisg
ICAgICAgICAgICAgICAgbV9ob2xkVGltZSA9IDBfczsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBzZXRIb2xkVGltZShzdGQ6Om1pbihtX3ByZXZpb3VzQ3VycmVudFRpbWUudmFs
dWUoKSwgMF9zKSk7CisgICAgICAgICAgICAgICAgbV9ob2xkVGltZSA9IHN0ZDo6bWluKG1fcHJl
dmlvdXNDdXJyZW50VGltZS52YWx1ZSgpLCAwX3MpOwogICAgICAgICB9IGVsc2UgaWYgKG1fcGxh
eWJhY2tSYXRlICYmIG1fdGltZWxpbmUgJiYgbV90aW1lbGluZS0+Y3VycmVudFRpbWUoKSkgewog
ICAgICAgICAgICAgLy8gSWYgYW5pbWF0aW9uIHBsYXliYWNrIHJhdGUg4omgIDAsIGFuZCBhbmlt
YXRpb24gaXMgYXNzb2NpYXRlZCB3aXRoIGFuIGFjdGl2ZSB0aW1lbGluZSwKICAgICAgICAgICAg
IC8vIFBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAgICAgICAgIC8vIDEuIElmIGRp
ZCBzZWVrIGlzIHRydWUgYW5kIHRoZSBob2xkIHRpbWUgaXMgcmVzb2x2ZWQsIGxldCBhbmltYXRp
b24ncyBzdGFydCB0aW1lIGJlIGVxdWFsIHRvIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aW1l
bGluZSB0aW1lIC0gKGhvbGQgdGltZSAvIHBsYXliYWNrIHJhdGUpCiAgICAgICAgICAgICAvLyAg
ICB3aGVyZSB0aW1lbGluZSB0aW1lIGlzIHRoZSBjdXJyZW50IHRpbWUgdmFsdWUgb2YgdGltZWxp
bmUgYXNzb2NpYXRlZCB3aXRoIGFuaW1hdGlvbi4KICAgICAgICAgICAgIGlmIChkaWRTZWVrID09
IERpZFNlZWs6OlllcyAmJiBtX2hvbGRUaW1lKQotICAgICAgICAgICAgICAgIHNldFN0YXJ0VGlt
ZShtX3RpbWVsaW5lLT5jdXJyZW50VGltZSgpLnZhbHVlKCkgLSAobV9ob2xkVGltZS52YWx1ZSgp
IC8gbV9wbGF5YmFja1JhdGUpKTsKKyAgICAgICAgICAgICAgICBtX3N0YXJ0VGltZSA9IG1fdGlt
ZWxpbmUtPmN1cnJlbnRUaW1lKCkudmFsdWUoKSAtIChtX2hvbGRUaW1lLnZhbHVlKCkgLyBtX3Bs
YXliYWNrUmF0ZSk7CiAgICAgICAgICAgICAvLyAyLiBMZXQgdGhlIGhvbGQgdGltZSBiZSB1bnJl
c29sdmVkLgotICAgICAgICAgICAgc2V0SG9sZFRpbWUoc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgIG1faG9sZFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcy
MCw2ICs3MTIsOCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRTdGF0ZShEaWRT
ZWVrIGRpZFNlZWssIFN5bmNocm9ub3VzbHlOb3RpZnkgc3luYwogICAgIC8vIGZpbmlzaGVkIHBy
b21pc2UgdG8gYSBuZXcgKHBlbmRpbmcpIFByb21pc2Ugb2JqZWN0LgogICAgIGlmICghY3VycmVu
dEZpbmlzaGVkU3RhdGUgJiYgbV9maW5pc2hlZFByb21pc2UtPmlzRnVsZmlsbGVkKCkpCiAgICAg
ICAgIG1fZmluaXNoZWRQcm9taXNlID0gbWFrZVVuaXF1ZVJlZjxGaW5pc2hlZFByb21pc2U+KCp0
aGlzLCAmV2ViQW5pbWF0aW9uOjpmaW5pc2hlZFByb21pc2VSZXNvbHZlKTsKKworICAgIHVwZGF0
ZVJlbGV2YW5jZSgpOwogfQogCiB2b2lkIFdlYkFuaW1hdGlvbjo6c2NoZWR1bGVNaWNyb3Rhc2tJ
Zk5lZWRlZCgpCkBAIC03OTQsNyArNzg4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0
aW9uOjpwbGF5KEF1dG9SZXdpbmQgYXV0b1Jld2luZCkKICAgICAgICAgLy8gICAgIC0gY3VycmVu
dCB0aW1lIDwgemVybywgb3IKICAgICAgICAgLy8gICAgIC0gY3VycmVudCB0aW1lIOKJpSB0YXJn
ZXQgZWZmZWN0IGVuZCwKICAgICAgICAgLy8gU2V0IGFuaW1hdGlvbidzIGhvbGQgdGltZSB0byB6
ZXJvLgotICAgICAgICBzZXRIb2xkVGltZSgwX3MpOworICAgICAgICBtX2hvbGRUaW1lID0gMF9z
OwogICAgIH0gZWxzZSBpZiAobV9wbGF5YmFja1JhdGUgPCAwICYmIGF1dG9SZXdpbmQgPT0gQXV0
b1Jld2luZDo6WWVzICYmICghbG9jYWxUaW1lIHx8IGxvY2FsVGltZS52YWx1ZSgpIDw9IDBfcyB8
fCBsb2NhbFRpbWUudmFsdWUoKSA+IGVuZFRpbWUpKSB7CiAgICAgICAgIC8vIElmIGFuaW1hdGlv
biBwbGF5YmFjayByYXRlIDwgMCwgdGhlIGF1dG8tcmV3aW5kIGZsYWcgaXMgdHJ1ZSBhbmQgZWl0
aGVyIGFuaW1hdGlvbidzOgogICAgICAgICAvLyAgICAgLSBjdXJyZW50IHRpbWUgaXMgdW5yZXNv
bHZlZCwgb3IKQEAgLTgwMywxOCArNzk3LDE4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1h
dGlvbjo6cGxheShBdXRvUmV3aW5kIGF1dG9SZXdpbmQpCiAgICAgICAgIC8vIElmIHRhcmdldCBl
ZmZlY3QgZW5kIGlzIHBvc2l0aXZlIGluZmluaXR5LCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJv
ciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgICAgIGlmIChlbmRUaW1lID09IFNlY29uZHM6
OmluZmluaXR5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKLSAgICAgICAgc2V0SG9sZFRpbWUoZW5kVGltZSk7CisgICAgICAgIG1faG9sZFRp
bWUgPSBlbmRUaW1lOwogICAgIH0gZWxzZSBpZiAoIW1fcGxheWJhY2tSYXRlICYmICFsb2NhbFRp
bWUpIHsKICAgICAgICAgLy8gSWYgYW5pbWF0aW9uIHBsYXliYWNrIHJhdGUgPSAwIGFuZCBhbmlt
YXRpb24ncyBjdXJyZW50IHRpbWUgaXMgdW5yZXNvbHZlZCwKICAgICAgICAgLy8gU2V0IGFuaW1h
dGlvbidzIGhvbGQgdGltZSB0byB6ZXJvLgotICAgICAgICBzZXRIb2xkVGltZSgwX3MpOworICAg
ICAgICBtX2hvbGRUaW1lID0gMF9zOwogICAgIH0KIAogICAgIC8vIDQuIElmIGFuaW1hdGlvbiBo
YXMgYSBwZW5kaW5nIHBsYXkgdGFzayBvciBhIHBlbmRpbmcgcGF1c2UgdGFzaywKICAgICBpZiAo
cGVuZGluZygpKSB7CiAgICAgICAgIC8vIDEuIENhbmNlbCB0aGF0IHRhc2suCi0gICAgICAgIHNl
dFRpbWVUb1J1blBlbmRpbmdQYXVzZVRhc2soVGltZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVk
dWxlZCk7Ci0gICAgICAgIHNldFRpbWVUb1J1blBlbmRpbmdQbGF5VGFzayhUaW1lVG9SdW5QZW5k
aW5nVGFzazo6Tm90U2NoZWR1bGVkKTsKKyAgICAgICAgbV90aW1lVG9SdW5QZW5kaW5nUGF1c2VU
YXNrID0gVGltZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxlZDsKKyAgICAgICAgbV90aW1l
VG9SdW5QZW5kaW5nUGxheVRhc2sgPSBUaW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2NoZWR1bGVk
OwogICAgICAgICAvLyAyLiBTZXQgaGFzIHBlbmRpbmcgcmVhZHkgcHJvbWlzZSB0byB0cnVlLgog
ICAgICAgICBoYXNQZW5kaW5nUmVhZHlQcm9taXNlID0gdHJ1ZTsKICAgICB9CkBAIC04MjUsMjgg
KzgxOSwyMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OnBsYXkoQXV0b1Jld2lu
ZCBhdXRvUmV3aW5kKQogCiAgICAgLy8gNi4gSWYgYW5pbWF0aW9uJ3MgaG9sZCB0aW1lIGlzIHJl
c29sdmVkLCBsZXQgaXRzIHN0YXJ0IHRpbWUgYmUgdW5yZXNvbHZlZC4KICAgICBpZiAobV9ob2xk
VGltZSkKLSAgICAgICAgc2V0U3RhcnRUaW1lKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIG1fc3Rh
cnRUaW1lID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gNy4gSWYgaGFzIHBlbmRpbmcgcmVhZHkg
cHJvbWlzZSBpcyBmYWxzZSwgbGV0IGFuaW1hdGlvbidzIGN1cnJlbnQgcmVhZHkgcHJvbWlzZSBi
ZSBhIG5ldyAocGVuZGluZykgUHJvbWlzZSBvYmplY3QuCiAgICAgaWYgKCFoYXNQZW5kaW5nUmVh
ZHlQcm9taXNlKQogICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWVSZWY8UmVhZHlQ
cm9taXNlPigqdGhpcywgJldlYkFuaW1hdGlvbjo6cmVhZHlQcm9taXNlUmVzb2x2ZSk7CiAKICAg
ICAvLyA4LiBTY2hlZHVsZSBhIHRhc2sgdG8gcnVuIGFzIHNvb24gYXMgYW5pbWF0aW9uIGlzIHJl
YWR5LgotICAgIHNldFRpbWVUb1J1blBlbmRpbmdQbGF5VGFzayhUaW1lVG9SdW5QZW5kaW5nVGFz
azo6V2hlblJlYWR5KTsKKyAgICBtX3RpbWVUb1J1blBlbmRpbmdQbGF5VGFzayA9IFRpbWVUb1J1
blBlbmRpbmdUYXNrOjpXaGVuUmVhZHk7CiAKICAgICAvLyA5LiBSdW4gdGhlIHByb2NlZHVyZSB0
byB1cGRhdGUgYW4gYW5pbWF0aW9uJ3MgZmluaXNoZWQgc3RhdGUgZm9yIGFuaW1hdGlvbiB3aXRo
IHRoZSBkaWQgc2VlayBmbGFnIHNldCB0byBmYWxzZSwgYW5kIHRoZSBzeW5jaHJvbm91c2x5IG5v
dGlmeSBmbGFnIHNldCB0byBmYWxzZS4KLSAgICB1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWs6
Ok5vLCBTeW5jaHJvbm91c2x5Tm90aWZ5OjpObyk7Ci0KLSAgICByZXR1cm4geyB9OwotfQorICAg
IHRpbWluZ0RpZENoYW5nZShEaWRTZWVrOjpObywgU3luY2hyb25vdXNseU5vdGlmeTo6Tm8pOwog
Ci12b2lkIFdlYkFuaW1hdGlvbjo6c2V0VGltZVRvUnVuUGVuZGluZ1BsYXlUYXNrKFRpbWVUb1J1
blBlbmRpbmdUYXNrIHRpbWVUb1J1blBlbmRpbmdUYXNrKQotewotICAgIGlmIChtX3RpbWVUb1J1
blBlbmRpbmdQbGF5VGFzayA9PSB0aW1lVG9SdW5QZW5kaW5nVGFzaykKLSAgICAgICAgcmV0dXJu
OworICAgIGludmFsaWRhdGVFZmZlY3QoKTsKIAotICAgIG1fdGltZVRvUnVuUGVuZGluZ1BsYXlU
YXNrID0gdGltZVRvUnVuUGVuZGluZ1Rhc2s7Ci0gICAgdXBkYXRlUGVuZGluZ1Rhc2tzKCk7Cisg
ICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBXZWJBbmltYXRpb246OnJ1blBlbmRpbmdQbGF5VGFz
aygpCkBAIC04NzUsOSArODYyLDkgQEAgdm9pZCBXZWJBbmltYXRpb246OnJ1blBlbmRpbmdQbGF5
VGFzaygpCiAgICAgICAgICAgICBuZXdTdGFydFRpbWUgLT0gbV9ob2xkVGltZS52YWx1ZSgpIC8g
bV9wbGF5YmFja1JhdGU7CiAgICAgICAgIC8vIDIuIElmIGFuaW1hdGlvbidzIHBsYXliYWNrIHJh
dGUgaXMgbm90IDAsIG1ha2UgYW5pbWF0aW9uJ3MgaG9sZCB0aW1lIHVucmVzb2x2ZWQuCiAgICAg
ICAgIGlmIChtX3BsYXliYWNrUmF0ZSkKLSAgICAgICAgICAgIHNldEhvbGRUaW1lKHN0ZDo6bnVs
bG9wdCk7CisgICAgICAgICAgICBtX2hvbGRUaW1lID0gc3RkOjpudWxsb3B0OwogICAgICAgICAv
LyAzLiBTZXQgdGhlIGFuaW1hdGlvbiBzdGFydCB0aW1lIG9mIGFuaW1hdGlvbiB0byBuZXcgc3Rh
cnQgdGltZS4KLSAgICAgICAgc2V0U3RhcnRUaW1lKG5ld1N0YXJ0VGltZSk7CisgICAgICAgIG1f
c3RhcnRUaW1lID0gbmV3U3RhcnRUaW1lOwogICAgIH0KIAogICAgIC8vIDQuIFJlc29sdmUgYW5p
bWF0aW9uJ3MgY3VycmVudCByZWFkeSBwcm9taXNlIHdpdGggYW5pbWF0aW9uLgpAQCAtODg1LDcg
Kzg3Miw5IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGxheVRhc2soKQogICAgICAg
ICBtX3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7CiAKICAgICAvLyA1LiBSdW4gdGhlIHBy
b2NlZHVyZSB0byB1cGRhdGUgYW4gYW5pbWF0aW9uJ3MgZmluaXNoZWQgc3RhdGUgZm9yIGFuaW1h
dGlvbiB3aXRoIHRoZSBkaWQgc2VlayBmbGFnIHNldCB0byBmYWxzZSwgYW5kIHRoZSBzeW5jaHJv
bm91c2x5IG5vdGlmeSBmbGFnIHNldCB0byBmYWxzZS4KLSAgICB1cGRhdGVGaW5pc2hlZFN0YXRl
KERpZFNlZWs6Ok5vLCBTeW5jaHJvbm91c2x5Tm90aWZ5OjpObyk7CisgICAgdGltaW5nRGlkQ2hh
bmdlKERpZFNlZWs6Ok5vLCBTeW5jaHJvbm91c2x5Tm90aWZ5OjpObyk7CisKKyAgICBpbnZhbGlk
YXRlRWZmZWN0KCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6cGF1c2Uo
KQpAQCAtOTA3LDEzICs4OTYsMTMgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpw
YXVzZSgpCiAgICAgaWYgKCFsb2NhbFRpbWUpIHsKICAgICAgICAgaWYgKG1fcGxheWJhY2tSYXRl
ID49IDApIHsKICAgICAgICAgICAgIC8vIElmIGFuaW1hdGlvbidzIHBsYXliYWNrIHJhdGUgaXMg
4omlIDAsIGxldCBhbmltYXRpb24ncyBob2xkIHRpbWUgYmUgemVyby4KLSAgICAgICAgICAgIHNl
dEhvbGRUaW1lKDBfcyk7CisgICAgICAgICAgICBtX2hvbGRUaW1lID0gMF9zOwogICAgICAgICB9
IGVsc2UgaWYgKGVmZmVjdEVuZFRpbWUoKSA9PSBTZWNvbmRzOjppbmZpbml0eSgpKSB7CiAgICAg
ICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHRhcmdldCBlZmZlY3QgZW5kIGZvciBhbmltYXRpb24g
aXMgcG9zaXRpdmUgaW5maW5pdHksIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9y
dCB0aGVzZSBzdGVwcy4KICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBs
ZXQgYW5pbWF0aW9uJ3MgaG9sZCB0aW1lIGJlIHRhcmdldCBlZmZlY3QgZW5kLgotICAgICAgICAg
ICAgc2V0SG9sZFRpbWUoZWZmZWN0RW5kVGltZSgpKTsKKyAgICAgICAgICAgIG1faG9sZFRpbWUg
PSBlZmZlY3RFbmRUaW1lKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTkyMiw3ICs5MTEsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OnBhdXNlKCkKIAogICAgIC8vIDUuIElm
IGFuaW1hdGlvbiBoYXMgYSBwZW5kaW5nIHBsYXkgdGFzaywgY2FuY2VsIHRoYXQgdGFzayBhbmQg
bGV0IGhhcyBwZW5kaW5nIHJlYWR5IHByb21pc2UgYmUgdHJ1ZS4KICAgICBpZiAoaGFzUGVuZGlu
Z1BsYXlUYXNrKCkpIHsKLSAgICAgICAgc2V0VGltZVRvUnVuUGVuZGluZ1BsYXlUYXNrKFRpbWVU
b1J1blBlbmRpbmdUYXNrOjpOb3RTY2hlZHVsZWQpOworICAgICAgICBtX3RpbWVUb1J1blBlbmRp
bmdQbGF5VGFzayA9IFRpbWVUb1J1blBlbmRpbmdUYXNrOjpOb3RTY2hlZHVsZWQ7CiAgICAgICAg
IGhhc1BlbmRpbmdSZWFkeVByb21pc2UgPSB0cnVlOwogICAgIH0KIApAQCAtOTMyLDEwICs5MjEs
MTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpwYXVzZSgpCiAKICAgICAvLyA3
LiBTY2hlZHVsZSBhIHRhc2sgdG8gYmUgZXhlY3V0ZWQgYXQgdGhlIGZpcnN0IHBvc3NpYmxlIG1v
bWVudCBhZnRlciB0aGUgdXNlciBhZ2VudCBoYXMgcGVyZm9ybWVkIGFueSBwcm9jZXNzaW5nIG5l
Y2Vzc2FyeQogICAgIC8vICAgIHRvIHN1c3BlbmQgdGhlIHBsYXliYWNrIG9mIGFuaW1hdGlvbidz
IHRhcmdldCBlZmZlY3QsIGlmIGFueS4KLSAgICBzZXRUaW1lVG9SdW5QZW5kaW5nUGF1c2VUYXNr
KFRpbWVUb1J1blBlbmRpbmdUYXNrOjpBU0FQKTsKKyAgICBtX3RpbWVUb1J1blBlbmRpbmdQYXVz
ZVRhc2sgPSBUaW1lVG9SdW5QZW5kaW5nVGFzazo6QVNBUDsKIAogICAgIC8vIDguIFJ1biB0aGUg
cHJvY2VkdXJlIHRvIHVwZGF0ZSBhbiBhbmltYXRpb24ncyBmaW5pc2hlZCBzdGF0ZSBmb3IgYW5p
bWF0aW9uIHdpdGggdGhlIGRpZCBzZWVrIGZsYWcgc2V0IHRvIGZhbHNlLCBhbmQgdGhlIHN5bmNo
cm9ub3VzbHkgbm90aWZ5IGZsYWcgc2V0IHRvIGZhbHNlLgotICAgIHVwZGF0ZUZpbmlzaGVkU3Rh
dGUoRGlkU2Vlazo6Tm8sIFN5bmNocm9ub3VzbHlOb3RpZnk6Ok5vKTsKKyAgICB0aW1pbmdEaWRD
aGFuZ2UoRGlkU2Vlazo6Tm8sIFN5bmNocm9ub3VzbHlOb3RpZnk6Ok5vKTsKKworICAgIGludmFs
aWRhdGVFZmZlY3QoKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC05NzIsMTUgKzk2Myw2IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6cmV2ZXJzZSgpCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotdm9pZCBXZWJBbmltYXRpb246OnNldFRpbWVUb1J1blBlbmRpbmdQYXVzZVRhc2so
VGltZVRvUnVuUGVuZGluZ1Rhc2sgdGltZVRvUnVuUGVuZGluZ1Rhc2spCi17Ci0gICAgaWYgKG1f
dGltZVRvUnVuUGVuZGluZ1BhdXNlVGFzayA9PSB0aW1lVG9SdW5QZW5kaW5nVGFzaykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV90aW1lVG9SdW5QZW5kaW5nUGF1c2VUYXNrID0gdGltZVRvUnVu
UGVuZGluZ1Rhc2s7Ci0gICAgdXBkYXRlUGVuZGluZ1Rhc2tzKCk7Ci19Ci0KIHZvaWQgV2ViQW5p
bWF0aW9uOjpydW5QZW5kaW5nUGF1c2VUYXNrKCkKIHsKICAgICAvLyAzLjQuMTEuIFBhdXNpbmcg
YW4gYW5pbWF0aW9uLCBzdGVwIDcuCkBAIC0xMDAyLDExICs5ODQsMTEgQEAgdm9pZCBXZWJBbmlt
YXRpb246OnJ1blBlbmRpbmdQYXVzZVRhc2soKQogICAgICAgICAvLyBTdWJzZXF1ZW50bHksIHRo
ZSByZXN1bHRpbmcgcmVhZHlUaW1lIHZhbHVlIGNhbiBiZSBudWxsLiBVbmlmeSBiZWhhdmlvciBi
ZXR3ZWVuIEMrKzE3IGFuZAogICAgICAgICAvLyBDKysxNCBidWlsZHMgKHRoZSBsYXR0ZXIgdXNp
bmcgV1RGJ3Mgc3RkOjpvcHRpb25hbCkgYW5kIGF2b2lkIG51bGwgc3RkOjpvcHRpb25hbCBkZXJl
ZmVyZW5jaW5nCiAgICAgICAgIC8vIGJ5IGRlZmF1bHRpbmcgdG8gYSBTZWNvbmRzKDApIHZhbHVl
LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjE4OS4KLSAg
ICAgICAgc2V0SG9sZFRpbWUoKHJlYWR5VGltZS52YWx1ZV9vcigwX3MpIC0gYW5pbWF0aW9uU3Rh
cnRUaW1lLnZhbHVlKCkpICogbV9wbGF5YmFja1JhdGUpOworICAgICAgICBtX2hvbGRUaW1lID0g
KHJlYWR5VGltZS52YWx1ZV9vcigwX3MpIC0gYW5pbWF0aW9uU3RhcnRUaW1lLnZhbHVlKCkpICog
bV9wbGF5YmFja1JhdGU7CiAgICAgfQogCiAgICAgLy8gMy4gTWFrZSBhbmltYXRpb24ncyBzdGFy
dCB0aW1lIHVucmVzb2x2ZWQuCi0gICAgc2V0U3RhcnRUaW1lKHN0ZDo6bnVsbG9wdCk7CisgICAg
bV9zdGFydFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyA0LiBSZXNvbHZlIGFuaW1hdGlv
bidzIGN1cnJlbnQgcmVhZHkgcHJvbWlzZSB3aXRoIGFuaW1hdGlvbi4KICAgICBpZiAoIW1fcmVh
ZHlQcm9taXNlLT5pc0Z1bGZpbGxlZCgpKQpAQCAtMTAxNCw2MiArOTk2LDMyIEBAIHZvaWQgV2Vi
QW5pbWF0aW9uOjpydW5QZW5kaW5nUGF1c2VUYXNrKCkKIAogICAgIC8vIDUuIFJ1biB0aGUgcHJv
Y2VkdXJlIHRvIHVwZGF0ZSBhbiBhbmltYXRpb24ncyBmaW5pc2hlZCBzdGF0ZSBmb3IgYW5pbWF0
aW9uIHdpdGggdGhlIGRpZCBzZWVrIGZsYWcgc2V0IHRvIGZhbHNlLCBhbmQgdGhlCiAgICAgLy8g
ICAgc3luY2hyb25vdXNseSBub3RpZnkgZmxhZyBzZXQgdG8gZmFsc2UuCi0gICAgdXBkYXRlRmlu
aXNoZWRTdGF0ZShEaWRTZWVrOjpObywgU3luY2hyb25vdXNseU5vdGlmeTo6Tm8pOwotfQorICAg
IHRpbWluZ0RpZENoYW5nZShEaWRTZWVrOjpObywgU3luY2hyb25vdXNseU5vdGlmeTo6Tm8pOwog
Ci12b2lkIFdlYkFuaW1hdGlvbjo6dXBkYXRlUGVuZGluZ1Rhc2tzKCkKLXsKLSAgICB0aW1pbmdN
b2RlbERpZENoYW5nZSgpOworICAgIGludmFsaWRhdGVFZmZlY3QoKTsKIH0KIAotU2Vjb25kcyBX
ZWJBbmltYXRpb246OnRpbWVUb05leHRSZXF1aXJlZFRpY2soKSBjb25zdAorYm9vbCBXZWJBbmlt
YXRpb246Om5lZWRzVGljaygpIGNvbnN0CiB7Ci0gICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHRp
bWVsaW5lLCBhbiBlZmZlY3QsIGEgc3RhcnQgdGltZSBvciBhIHBsYXliYWNrIHJhdGUgb3RoZXIg
dGhhbiAwLAotICAgIC8vIHRoZXJlIGlzIG5vIHZhbHVlIHRvIGFwcGx5IHNvIHdlIGRvbid0IG5l
ZWQgdG8gc2NoZWR1bGUgaW52YWxpZGF0aW9uLgotICAgIGlmICghbV90aW1lbGluZSB8fCAhbV9l
ZmZlY3QgfHwgIW1fcGxheWJhY2tSYXRlKQotICAgICAgICByZXR1cm4gU2Vjb25kczo6aW5maW5p
dHkoKTsKLQotICAgIGlmIChwZW5kaW5nKCkpCi0gICAgICAgIHJldHVybiAwX3M7Ci0KLSAgICBp
ZiAoIW1fc3RhcnRUaW1lKQotICAgICAgICByZXR1cm4gU2Vjb25kczo6aW5maW5pdHkoKTsKLQot
ICAgIC8vIElmIHdlJ3JlIGluIG9yIGV4cGVjdGVkIHRvIGJlIGluIHRoZSBydW5uaW5nIHN0YXRl
LCB3ZSBuZWVkIHRvIHNjaGVkdWxlIGludmFsaWRhdGlvbiBhcyBzb29uIGFzIHBvc3NpYmxlLgot
ICAgIGlmIChoYXNQZW5kaW5nUGxheVRhc2soKSB8fCBwbGF5U3RhdGUoKSA9PSBQbGF5U3RhdGU6
OlJ1bm5pbmcpCi0gICAgICAgIHJldHVybiAwX3M7Ci0KLSAgICBpZiAoYXV0byBhbmltYXRpb25D
dXJyZW50VGltZSA9IGN1cnJlbnRUaW1lKCkpIHsKLSAgICAgICAgLy8gSWYgb3VyIGN1cnJlbnQg
dGltZSBpcyBuZWdhdGl2ZSwgd2UgbmVlZCB0byBiZSBzY2hlZHVsZWQgdG8gYmUgcmVzb2x2ZWQg
YXQgdGhlIGludmVyc2UKLSAgICAgICAgLy8gb2Ygb3VyIGN1cnJlbnQgdGltZSwgdW5sZXNzIHdl
IGZpbGwgYmFja3dhcmRzLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gaW52YWxpZGF0ZSBhcwot
ICAgICAgICAvLyBzb29uIGFzIHBvc3NpYmxlLgotICAgICAgICBhdXRvIGxvY2FsVGltZSA9IGFu
aW1hdGlvbkN1cnJlbnRUaW1lLnZhbHVlKCk7Ci0gICAgICAgIGlmIChsb2NhbFRpbWUgPCAwX3Mp
Ci0gICAgICAgICAgICByZXR1cm4gLWxvY2FsVGltZTsKLSAgICB9Ci0KLSAgICAvLyBJbiBhbnkg
b3RoZXIgY2FzZSwgd2UncmUgaWRsZSBvciBhbHJlYWR5IG91dHNpZGUgb3VyIGFjdGl2ZSBkdXJh
dGlvbiBhbmQgaGF2ZSBubyBuZWVkCi0gICAgLy8gdG8gc2NoZWR1bGUgYW4gaW52YWxpZGF0aW9u
LgotICAgIHJldHVybiBTZWNvbmRzOjppbmZpbml0eSgpOworICAgIHJldHVybiBwZW5kaW5nKCkg
fHwgcGxheVN0YXRlKCkgPT0gUGxheVN0YXRlOjpSdW5uaW5nOwogfQogCi12b2lkIFdlYkFuaW1h
dGlvbjo6cnVuUGVuZGluZ1Rhc2tzKCkKK3ZvaWQgV2ViQW5pbWF0aW9uOjp0aWNrKCkKIHsKKyAg
ICB1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWs6Ok5vLCBTeW5jaHJvbm91c2x5Tm90aWZ5OjpZ
ZXMpOworCisgICAgLy8gUnVuIHBlbmRpbmcgdGFza3MsIGlmIGFueS4KICAgICBpZiAoaGFzUGVu
ZGluZ1BhdXNlVGFzaygpKQogICAgICAgICBydW5QZW5kaW5nUGF1c2VUYXNrKCk7Ci0KICAgICBp
ZiAoaGFzUGVuZGluZ1BsYXlUYXNrKCkpCiAgICAgICAgIHJ1blBlbmRpbmdQbGF5VGFzaygpOwot
fQogCi12b2lkIFdlYkFuaW1hdGlvbjo6cmVzb2x2ZSgpCi17Ci0gICAgdXBkYXRlRmluaXNoZWRT
dGF0ZShEaWRTZWVrOjpObywgU3luY2hyb25vdXNseU5vdGlmeTo6WWVzKTsKKyAgICBpbnZhbGlk
YXRlRWZmZWN0KCk7CiB9CiAKIHZvaWQgV2ViQW5pbWF0aW9uOjpyZXNvbHZlKFJlbmRlclN0eWxl
JiB0YXJnZXRTdHlsZSkKIHsKLSAgICByZXNvbHZlKCk7CisgICAgdGltaW5nRGlkQ2hhbmdlKERp
ZFNlZWs6Ok5vLCBTeW5jaHJvbm91c2x5Tm90aWZ5OjpZZXMpOwogICAgIGlmIChtX2VmZmVjdCkK
ICAgICAgICAgbV9lZmZlY3QtPmFwcGx5KHRhcmdldFN0eWxlKTsKIH0KQEAgLTExMjMsNyArMTA3
NSwxMiBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c3RvcCgpCiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0
ZW5lcnMoKTsKIH0KIAotYm9vbCBXZWJBbmltYXRpb246OmNhbkJlTGlzdGVkKCkgY29uc3QKK3Zv
aWQgV2ViQW5pbWF0aW9uOjp1cGRhdGVSZWxldmFuY2UoKQoreworICAgIG1faXNSZWxldmFudCA9
IGNvbXB1dGVSZWxldmFuY2UoKTsKK30KKworYm9vbCBXZWJBbmltYXRpb246OmNvbXB1dGVSZWxl
dmFuY2UoKQogewogICAgIC8vIFRvIGJlIGxpc3RlZCBpbiBnZXRBbmltYXRpb25zKCkgYW4gYW5p
bWF0aW9uIG5lZWRzIGEgdGFyZ2V0IGVmZmVjdCB3aGljaCBpcyBjdXJyZW50IG9yIGluIGVmZmVj
dC4KICAgICBpZiAoIW1fZWZmZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL1dlYkFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlv
bi5oCmluZGV4IGMyYjNiNDJhNGE0ZWVhNjJiMmNhNDY5MTFiYWUzOGYwZWU3ZWE0NTguLmE0Mjc2
YzYxYWEyMzMxOWQ2Mjc1YzJlOTFhMDgyYzVkNDIwMjcxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vV2ViQW5pbWF0aW9uLmgKQEAgLTU3LDggKzU3LDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc0NTU0FuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzQ1NTVHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuQmVMaXN0ZWQoKSBjb25zdDsKLQogICAgIGNvbnN0IFN0cmluZyYg
aWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgdm9pZCBzZXRJZChjb25zdCBTdHJpbmcm
IGlkKSB7IG1faWQgPSBpZDsgfQogCkBAIC02Nyw5ICs2NSw2IEBAIHB1YmxpYzoKICAgICBBbmlt
YXRpb25UaW1lbGluZSogdGltZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5lLmdldCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFRpbWVsaW5lKFJlZlB0cjxBbmltYXRpb25UaW1lbGlu
ZT4mJik7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0U3RhcnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOwotCiAgICAgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldEN1cnJlbnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOwogCkBAIC05NSw4
ICs5MCw4IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwYXVzZSgpOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHJldmVyc2UoKTsKIAotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGJpbmRpbmdzU3RhcnRUaW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJp
bmRpbmdzU3RhcnRUaW1lKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPik7CisgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gc3RhcnRUaW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNl
dFN0YXJ0VGltZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pOwogICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGJpbmRpbmdzQ3VycmVudFRpbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldEJpbmRpbmdzQ3VycmVudFRpbWUoc3RkOjpvcHRpb25hbDxkb3Vi
bGU+KTsKICAgICB2aXJ0dWFsIFBsYXlTdGF0ZSBiaW5kaW5nc1BsYXlTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIHBsYXlTdGF0ZSgpOyB9CkBAIC0xMDYsMTUgKzEwMSwxNCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5nc1BsYXkoKSB7IHJldHVybiBwbGF5KCk7
IH0KICAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGJpbmRpbmdzUGF1c2UoKSB7IHJldHVy
biBwYXVzZSgpOyB9CiAKLSAgICBTZWNvbmRzIHRpbWVUb05leHRSZXF1aXJlZFRpY2soKSBjb25z
dDsKLSAgICB2b2lkIHJlc29sdmUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgbmVlZHNUaWNrKCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIHRpY2soKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShS
ZW5kZXJTdHlsZSYpOwotICAgIHZvaWQgcnVuUGVuZGluZ1Rhc2tzKCk7CiAgICAgdm9pZCBlZmZl
Y3RUYXJnZXREaWRDaGFuZ2UoRWxlbWVudCogcHJldmlvdXNUYXJnZXQsIEVsZW1lbnQqIG5ld1Rh
cmdldCk7CiAgICAgdm9pZCBhY2NlbGVyYXRlZFN0YXRlRGlkQ2hhbmdlKCk7CiAgICAgdm9pZCBh
cHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMoKTsKIAotICAgIHZvaWQgdGltaW5nTW9kZWxE
aWRDaGFuZ2UoKTsKKyAgICBib29sIGlzUmVsZXZhbnQoKSBjb25zdCB7IHJldHVybiBtX2lzUmVs
ZXZhbnQ7IH0KICAgICB2b2lkIGVmZmVjdFRpbWluZ1Byb3BlcnRpZXNEaWRDaGFuZ2UoKTsKICAg
ICB2b2lkIHN1c3BlbmRFZmZlY3RJbnZhbGlkYXRpb24oKTsKICAgICB2b2lkIHVuc3VzcGVuZEVm
ZmVjdEludmFsaWRhdGlvbigpOwpAQCAtMTI4LDcgKzEyMiw2IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBXZWJBbmltYXRpb24oRG9jdW1lbnQmKTsKIAotICAgIGJvb2wgaXNF
ZmZlY3RJbnZhbGlkYXRpb25TdXNwZW5kZWQoKSB7IHJldHVybiBtX3N1c3BlbmRDb3VudDsgfQog
ICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAtMTM4LDI4ICsxMzEsMjkg
QEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEF1dG9SZXdpbmQgeyBZZXMsIE5vIH07CiAgICAg
ZW51bSBjbGFzcyBUaW1lVG9SdW5QZW5kaW5nVGFzayB7IE5vdFNjaGVkdWxlZCwgQVNBUCwgV2hl
blJlYWR5IH07CiAKKyAgICB2b2lkIHRpbWluZ0RpZENoYW5nZShEaWRTZWVrLCBTeW5jaHJvbm91
c2x5Tm90aWZ5KTsKICAgICB2b2lkIHVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlkU2VlaywgU3luY2hy
b25vdXNseU5vdGlmeSk7CiAgICAgdm9pZCBlbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+LCBzdGQ6Om9wdGlvbmFs
PFNlY29uZHM+KTsKICAgICBTZWNvbmRzIGVmZmVjdEVuZFRpbWUoKSBjb25zdDsKICAgICBXZWJB
bmltYXRpb24mIHJlYWR5UHJvbWlzZVJlc29sdmUoKTsKICAgICBXZWJBbmltYXRpb24mIGZpbmlz
aGVkUHJvbWlzZVJlc29sdmUoKTsKLSAgICB2b2lkIHNldEhvbGRUaW1lKHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4pOwogICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoUmVzcGVj
dEhvbGRUaW1lKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzaWxlbnRseVNldEN1cnJl
bnRUaW1lKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4pOwogICAgIHZvaWQgZmluaXNoTm90aWZpY2F0
aW9uU3RlcHMoKTsKICAgICB2b2lkIHNjaGVkdWxlTWljcm90YXNrSWZOZWVkZWQoKTsKICAgICB2
b2lkIHBlcmZvcm1NaWNyb3Rhc2soKTsKLSAgICB2b2lkIHNldFRpbWVUb1J1blBlbmRpbmdQYXVz
ZVRhc2soVGltZVRvUnVuUGVuZGluZ1Rhc2spOwotICAgIHZvaWQgc2V0VGltZVRvUnVuUGVuZGlu
Z1BsYXlUYXNrKFRpbWVUb1J1blBlbmRpbmdUYXNrKTsKICAgICBib29sIGhhc1BlbmRpbmdQYXVz
ZVRhc2soKSBjb25zdCB7IHJldHVybiBtX3RpbWVUb1J1blBlbmRpbmdQYXVzZVRhc2sgIT0gVGlt
ZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxlZDsgfQogICAgIGJvb2wgaGFzUGVuZGluZ1Bs
YXlUYXNrKCkgY29uc3QgeyByZXR1cm4gbV90aW1lVG9SdW5QZW5kaW5nUGxheVRhc2sgIT0gVGlt
ZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxlZDsgfQotICAgIHZvaWQgdXBkYXRlUGVuZGlu
Z1Rhc2tzKCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxheShBdXRvUmV3aW5kKTsKICAgICB2
b2lkIHJ1blBlbmRpbmdQYXVzZVRhc2soKTsKICAgICB2b2lkIHJ1blBlbmRpbmdQbGF5VGFzaygp
OwogICAgIHZvaWQgcmVzZXRQZW5kaW5nVGFza3MoU2lsZW50bHkgPSBTaWxlbnRseTo6Tm8pOwog
ICAgIHZvaWQgc2V0RWZmZWN0SW50ZXJuYWwoUmVmUHRyPEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5
PiYmLCBib29sID0gZmFsc2UpOwogICAgIHZvaWQgc2V0VGltZWxpbmVJbnRlcm5hbChSZWZQdHI8
QW5pbWF0aW9uVGltZWxpbmU+JiYpOworICAgIGJvb2wgaXNFZmZlY3RJbnZhbGlkYXRpb25TdXNw
ZW5kZWQoKSB7IHJldHVybiBtX3N1c3BlbmRDb3VudDsgfQorICAgIGJvb2wgY29tcHV0ZVJlbGV2
YW5jZSgpOworICAgIHZvaWQgdXBkYXRlUmVsZXZhbmNlKCk7CisgICAgdm9pZCBpbnZhbGlkYXRl
RWZmZWN0KCk7CiAKICAgICBTdHJpbmcgbV9pZDsKICAgICBSZWZQdHI8QW5pbWF0aW9uRWZmZWN0
UmVhZE9ubHk+IG1fZWZmZWN0OwpAQCAtMTczLDYgKzE2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZmluaXNoTm90aWZpY2F0aW9u
U3RlcHNNaWNyb3Rhc2tQZW5kaW5nOwogICAgIGJvb2wgbV9zY2hlZHVsZWRNaWNyb3Rhc2s7Cisg
ICAgYm9vbCBtX2lzUmVsZXZhbnQ7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFk
eVByb21pc2U7CiAgICAgVW5pcXVlUmVmPEZpbmlzaGVkUHJvbWlzZT4gbV9maW5pc2hlZFByb21p
c2U7CiAgICAgVGltZVRvUnVuUGVuZGluZ1Rhc2sgbV90aW1lVG9SdW5QZW5kaW5nUGxheVRhc2sg
eyBUaW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2NoZWR1bGVkIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9XZWJBbmltYXRpb24uaWRsCmluZGV4IGI4NDU0MTc4MDYxYmFmODVjZjY4YzZjNjhh
MmYzMmYwMTQyNjY3NGUuLjdiYTBjZmM4MjUyZGIxMTRmOTczNTNhY2NkYWIxYjgyZjY3MjhjODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaWRsCkBAIC00MCw3ICs0
MCw3IEBAIGVudW0gQW5pbWF0aW9uUGxheVN0YXRlIHsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGlkOwogICAgIGF0dHJpYnV0ZSBBbmltYXRpb25FZmZlY3RSZWFkT25seT8gZWZmZWN0OwogICAg
IGF0dHJpYnV0ZSBBbmltYXRpb25UaW1lbGluZT8gdGltZWxpbmU7Ci0gICAgW0ltcGxlbWVudGVk
QXM9YmluZGluZ3NTdGFydFRpbWVdIGF0dHJpYnV0ZSBkb3VibGU/IHN0YXJ0VGltZTsKKyAgICBh
dHRyaWJ1dGUgZG91YmxlPyBzdGFydFRpbWU7CiAgICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBs
ZW1lbnRlZEFzPWJpbmRpbmdzQ3VycmVudFRpbWVdIGF0dHJpYnV0ZSBkb3VibGU/IGN1cnJlbnRU
aW1lOwogICAgIGF0dHJpYnV0ZSBkb3VibGUgcGxheWJhY2tSYXRlOwogICAgIFtJbXBsZW1lbnRl
ZEFzPWJpbmRpbmdzUGxheVN0YXRlXSByZWFkb25seSBhdHRyaWJ1dGUgQW5pbWF0aW9uUGxheVN0
YXRlIHBsYXlTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBkMmQ1ODM2NTU0NmQ0Y2Fl
YWFlOTVhY2M5ZjE2N2JmZWViMzRmZWUzLi5hNGJiODlmNDNjNTk4NGY1MDVmN2E1NWM0OWE3MGMy
Mzg3MTEwOTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00MDMxLDcgKzQwMzEsNyBAQCBW
ZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IEVsZW1lbnQ6OmdldEFuaW1hdGlvbnMoKQogICAg
IFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gYW5pbWF0aW9uczsKICAgICBpZiAoYXV0byB0
aW1lbGluZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdUaW1lbGluZSgpKSB7CiAgICAgICAgIGZvciAo
YXV0byYgYW5pbWF0aW9uIDogdGltZWxpbmUtPmFuaW1hdGlvbnNGb3JFbGVtZW50KCp0aGlzLCBB
bmltYXRpb25UaW1lbGluZTo6T3JkZXJpbmc6OlNvcnRlZCkpIHsKLSAgICAgICAgICAgIGlmIChh
bmltYXRpb24tPmNhbkJlTGlzdGVkKCkpCisgICAgICAgICAgICBpZiAoYW5pbWF0aW9uLT5pc1Jl
bGV2YW50KCkpCiAgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQoYW5pbWF0aW9uKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMjVhYWU0YjU1YzZkZDcyMWJmNmVmMDRkZmM0Y2Fh
NTYxZGU1MjNiLi43NTM2NTE5ZjU2MWQ5OWVlNWJiYWJkMWI4M2E3ZmU0MTU2YjQ5YTEwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMTAtMjggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIEltcGxlbWVudCB0aGUgdXBkYXRl
IGFuaW1hdGlvbnMgYW5kIHNlbmQgZXZlbnRzIHByb2NlZHVyZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDEzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NTYyMDQ5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTZXZlcmFsIHRlc3RzIHRoYXQgYnJva2Ugd2hlbiB0dXJuaW5nIFdlYiBBbmltYXRp
b25zIENTUyBJbnRlZ3JhdGlvbiBvbiBieSBkZWZhdWx0IGFyZSBub3cgcGFzc2luZy4gSW4gdGhl
IGNhc2Ugb2Ygb25lIHRlc3QsIHdlIGhhZCB0byBlbnN1cmUKKyAgICAgICAgdGhhdCB0aGUgZmlu
YWwgYW5pbWF0aW9uIGZyYW1lIGhhZCBiZWVuIGNvbW1pdHRlZCBiZWZvcmUgdGVybWluYXRpbmcg
dGhlIHRlc3Qgb3IgdGhlcmUgd291bGQgYmUgYSB0aW55IGltYWdlIHJlZmVyZW5jZSBpc3N1ZS4K
KworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9sYXllcnMvbm8t
Y2xpcHBpbmctb3ZlcmZsb3ctaGlkZGVuLWFkZGVkLWFmdGVyLXRyYW5zZm9ybS5odG1sOgorCiAy
MDE4LTEwLTI3ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBmaXggY29udGVudCBhZGRlZCBieSBhIHN0cmF5IEN0cmwrVgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZwppbmRleCA3ZGNhYmViYzE1YmVjMDVm
ZDI2ODNiNGNjODIyOGFlMDgxN2VjNDgyLi4zNzc4ZmNkZDEyY2JiMThiZmZmMmM3MzA5NTUzYmYw
ZmMxZmE1ZTE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE4LTEwLTI4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+
CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25zXSBJbXBsZW1lbnQgdGhlIHVwZGF0ZSBhbmltYXRp
b25zIGFuZCBzZW5kIGV2ZW50cyBwcm9jZWR1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTAxMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU2
MjA0OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UHJvZ3Jlc3Npb24gaW4gYSBjb3VwbGUgb2YgZ2V0QW5pbWF0aW9ucygpIHRlc3RzIGZvciBDU1Mg
QW5pbWF0aW9ucy4KKworICAgICAgICAqIGNzcy1hbmltYXRpb25zL3Rlc3RfZG9jdW1lbnQtZ2V0
LWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0OgorCiAyMDE4LTEwLTI2ICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBSZWJhc2Ugc29t
ZSBmbGFreSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggM2YwYWMwOTU2
ZTAxYzYyMzM0MmIyNGVkY2NmZTQ2NTdjMjk0YzhkMS4uYjE4OWRjOTBlZjM2NWM4MGQzNDFjNzY2
ZGVlOThmOTNiYjhkYjJkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTgtMTAtMjggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIEltcGxlbWVudCB0aGUgdXBkYXRlIGFuaW1hdGlv
bnMgYW5kIHNlbmQgZXZlbnRzIHByb2NlZHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTYy
MDQ5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
cm9ncmVzc2lvbnMgaW4gYSBjb3VwbGUgb2YgV2ViIEFuaW1hdGlvbnMgV2ViIFBsYXRmb3JtIFRl
c3RzLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL3RpbWlu
Zy1tb2RlbC9hbmltYXRpb25zL2N1cnJlbnQtdGltZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL3RpbWluZy1tb2RlbC9hbmltYXRpb25z
L3VwZGF0aW5nLXRoZS1maW5pc2hlZC1zdGF0ZS1leHBlY3RlZC50eHQ6CisKIDIwMTgtMTAtMjYg
IEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1h
dGlvbnNdIFJlYmFzZSBzb21lIGZsYWt5IHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5MjFl
OGE3ZWVhOGRmZGU5MjY0YWI4NWU0NjQwOWMwMzFhNzM0MDk5Li5hZGNkYjJmNGY2ZjhkNTU2YmZh
OTA0ZDQ5ODYwM2RhNDcxYzczMTIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI5MDAsMTMgKzI5
MDAsOCBAQCB3ZWJraXQub3JnL2IvMTkwMDMyIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL21p
c21hdGNoZWQtdHJhbnNmb3JtLXRyYW5zaXRpb24tbwogd2Via2l0Lm9yZy9iLzE5MDAzMiBjb21w
b3NpdGluZy9sYXllci1jcmVhdGlvbi9zY2FsZS1yb3RhdGlvbi10cmFuc2l0aW9uLW92ZXJsYXAu
aHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE5MDAzMiBjb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi90cmFuc2xhdGUtc2NhbGUtdHJhbnNpdGlvbi1vdmVybGFwLmh0bWwgWyBGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8xOTAwMzIgY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vdHJhbnNs
YXRlLXRyYW5zaXRpb24tb3ZlcmxhcC5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTkw
MDMyIGNvbXBvc2l0aW5nL3Zpc2libGUtcmVjdC9hbmltYXRlZC1mcm9tLW5vbmUuaHRtbCBbIEZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzE5MDAzMiBmYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9u
LXJlc3VtaW5nLXdoZW4tdmlzaWJsZS13aXRoLXN0eWxlLWNoYW5nZTIuaHRtbCBbIEZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzE5MDAzMiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbG9naWNhbC9hbmltYXRpb24tMDAzLnRlbnRhdGl2ZS5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTkwMDMyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1zY29waW5nL2tleWZyYW1lcy0wMDEuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE5
MDAzMiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL2FuaW1h
dGlvbi1tb2RlbC9rZXlmcmFtZS1lZmZlY3RzL2VmZmVjdC12YWx1ZS1jb250ZXh0Lmh0bWwgWyBG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xOTAwMzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0FuaW1hdGFibGUvYW5pbWF0ZS5odG1sIFsg
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTkwMDMyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2FuaW1hdGlvbnMvY3VycmVudC10aW1l
Lmh0bWwgWyBGYWlsdXJlIF0KIAogIyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgTWVkaWFSZWNv
cmRlciBkYXRhYXZhaWxhYmxlIGV2ZW50IHRvIHN1cHBvcnQgdGhlc2UgdGVzdGNhc2VzCiBmYXN0
L21lZGlhY2FwdHVyZWZyb21lbGVtZW50L0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbS1pbWFnZWJp
dG1hcHJlbmRlcmluZ2NvbnRleHQuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9sYXllcnMvbm8tY2xpcHBpbmctb3ZlcmZsb3ctaGlkZGVuLWFkZGVkLWFmdGVyLXRy
YW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvbm8tY2xpcHBpbmctb3ZlcmZs
b3ctaGlkZGVuLWFkZGVkLWFmdGVyLXRyYW5zZm9ybS5odG1sCmluZGV4IDM5M2E3Njg5MDFjMGVk
YTk1Njc0NmVkMmYxYWM5ZWRmOGQ2ZjVkOTguLjhiZTAyMTk2NzJiN2RlMjJmYmE2YTgzZmUwMTNi
MWVhMzQwZTZjMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL25vLWNsaXBw
aW5nLW92ZXJmbG93LWhpZGRlbi1hZGRlZC1hZnRlci10cmFuc2Zvcm0uaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2xheWVycy9uby1jbGlwcGluZy1vdmVyZmxvdy1oaWRkZW4tYWRkZWQtYWZ0
ZXItdHJhbnNmb3JtLmh0bWwKQEAgLTMyLDcgKzMyLDcgQEAgZGl2IHsKIDxzY3JpcHQ+CiAgICAg
ZnVuY3Rpb24gdHJhbnNpdGlvbkZpbmlzaGVkKCkgewogICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
ICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gd2luZG93LnRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpKTsKICAgICB9CiAKICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9k
b2N1bWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfZG9jdW1lbnQtZ2V0LWFuaW1hdGlvbnMtZXhw
ZWN0ZWQudHh0CmluZGV4IGRhMTUwZTJjNzNkMTU0YmIxNWU3MzYwMmM4NjBlZDljNTRhMDdiZmUu
LmM5ZDhhYmM5NDdkMGMzYzRkZjY3ZTkyZTM1ODQ4ZTk1MTRjZTk0ZGIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9kb2N1bWVudC1n
ZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2RvY3VtZW50LWdldC1hbmltYXRpb25zLWV4cGVjdGVk
LnR4dApAQCAtNCw4ICs0LDggQEAgUEFTUyBnZXRBbmltYXRpb25zIGZvciBDU1MgQW5pbWF0aW9u
cwogUEFTUyBPcmRlciBvZiBDU1MgQW5pbWF0aW9ucyAtIHdpdGhpbiBhbiBlbGVtZW50IAogRkFJ
TCBPcmRlciBvZiBDU1MgQW5pbWF0aW9ucyAtIGFjcm9zcyBlbGVtZW50cyBhc3NlcnRfZXF1YWxz
OiBPcmRlciBvZiBzZWNvbmQgYW5pbWF0aW9uIHJldHVybmVkIGFmdGVyIHRyZWUgc3VyZ2VyeSBl
eHBlY3RlZCBFbGVtZW50IG5vZGUgPGRpdiBzdHlsZT0iYW5pbWF0aW9uOiBhbmltTGVmdCAxMDBz
Ij48L2Rpdj4gYnV0IGdvdCBFbGVtZW50IG5vZGUgPGRpdiBzdHlsZT0iYW5pbWF0aW9uOiBhbmlt
TGVmdCAxMDBzIj48L2Rpdj4KIFBBU1MgT3JkZXIgb2YgQ1NTIEFuaW1hdGlvbnMgLSBhY3Jvc3Mg
YW5kIHdpdGhpbiBlbGVtZW50cyAKLUZBSUwgT3JkZXIgb2YgQ1NTIEFuaW1hdGlvbnMgLSBtYXJr
dXAtYm91bmQgdnMgZnJlZSBhbmltYXRpb25zIGFzc2VydF9lcXVhbHM6IGdldEFuaW1hdGlvbnMg
cmV0dXJucyBtYXJrdXAtYm91bmQgYW5kIGZyZWUgYW5pbWF0aW9ucyBleHBlY3RlZCAyIGJ1dCBn
b3QgMQotRkFJTCBPcmRlciBvZiBDU1MgQW5pbWF0aW9ucyAtIGZyZWUgYW5pbWF0aW9ucyBhc3Nl
cnRfZXF1YWxzOiBnZXRBbmltYXRpb25zIHJldHVybnMgZnJlZSBhbmltYXRpb25zIGV4cGVjdGVk
IDIgYnV0IGdvdCAwCitQQVNTIE9yZGVyIG9mIENTUyBBbmltYXRpb25zIC0gbWFya3VwLWJvdW5k
IHZzIGZyZWUgYW5pbWF0aW9ucyAKK1BBU1MgT3JkZXIgb2YgQ1NTIEFuaW1hdGlvbnMgLSBmcmVl
IGFuaW1hdGlvbnMgCiBGQUlMIE9yZGVyIG9mIENTUyBBbmltYXRpb25zIGFuZCBDU1MgVHJhbnNp
dGlvbnMgYXNzZXJ0X2VxdWFsczogVHJhbnNpdGlvbiBjb21lcyBmaXJzdCBleHBlY3RlZCAiW29i
amVjdCBDU1NUcmFuc2l0aW9uXSIgYnV0IGdvdCAiW29iamVjdCBDU1NBbmltYXRpb25dIgogUEFT
UyBGaW5pc2hlZCBidXQgZmlsbGluZyBDU1MgQW5pbWF0aW9ucyBhcmUgcmV0dXJuZWQgCiBQQVNT
IEZpbmlzaGVkIGJ1dCBub3QgZmlsbGluZyBDU1MgQW5pbWF0aW9ucyBhcmUgbm90IHJldHVybmVk
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWItYW5pbWF0aW9ucy90aW1pbmctbW9kZWwvYW5pbWF0aW9ucy9jdXJyZW50LXRpbWUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWItYW5pbWF0aW9ucy90aW1pbmctbW9kZWwvYW5pbWF0aW9ucy9jdXJyZW50LXRpbWUtZXhwZWN0
ZWQudHh0CmluZGV4IDExMjQ5ZTc5OTk0ZTU0NTNmN2Y3ZjBmODUwMTJiODdhOThmODQ1YjguLmQ0
MWE4MmU1NzUyMjM2ZThjYzI3Mjg3NjIzOTJlOWYyOTBhYzc5NTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlvbnMvdGlt
aW5nLW1vZGVsL2FuaW1hdGlvbnMvY3VycmVudC10aW1lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL3Rp
bWluZy1tb2RlbC9hbmltYXRpb25zL2N1cnJlbnQtdGltZS1leHBlY3RlZC50eHQKQEAgLTEsOSAr
MSw3IEBACiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCiBQQVNT
IFRoZSBjdXJyZW50IHRpbWUgcmV0dXJucyB0aGUgaG9sZCB0aW1lIHdoZW4gc2V0IAogUEFTUyBU
aGUgY3VycmVudCB0aW1lIGlzIHVucmVzb2x2ZWQgd2hlbiB0aGVyZSBpcyBubyBhc3NvY2lhdGVk
IHRpbWVsaW5lIChhbmQgbm8gaG9sZCB0aW1lIGlzIHNldCkgCiBQQVNTIFRoZSBjdXJyZW50IHRp
bWUgaXMgdW5yZXNvbHZlZCB3aGVuIHRoZSBzdGFydCB0aW1lIGlzIHVucmVzb2x2ZWQgKGFuZCBu
byBob2xkIHRpbWUgaXMgc2V0KSAKIFBBU1MgVGhlIGN1cnJlbnQgdGltZSBpcyBjYWxjdWxhdGVk
IGZyb20gdGhlIHRpbWVsaW5lIHRpbWUsIHN0YXJ0IHRpbWUgYW5kIHBsYXliYWNrIHJhdGUgCi1U
SU1FT1VUIFRoZSBjdXJyZW50IHRpbWUgZG9lcyBub3QgcHJvZ3Jlc3MgaWYgcGxheWJhY2sgcmF0
ZSBpcyAwIFRlc3QgdGltZWQgb3V0CitQQVNTIFRoZSBjdXJyZW50IHRpbWUgZG9lcyBub3QgcHJv
Z3Jlc3MgaWYgcGxheWJhY2sgcmF0ZSBpcyAwIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL3RpbWluZy1tb2Rl
bC9hbmltYXRpb25zL3VwZGF0aW5nLXRoZS1maW5pc2hlZC1zdGF0ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25z
L3RpbWluZy1tb2RlbC9hbmltYXRpb25zL3VwZGF0aW5nLXRoZS1maW5pc2hlZC1zdGF0ZS1leHBl
Y3RlZC50eHQKaW5kZXggYmUxNzc1ODc2ZThmMjM5ZTA0MmI0YmJhOWI5NzE5NTA5MzhmY2Y1ZS4u
ZWZjZDNiNDFmMWRjM2EyNTdkYTBkYmU5YTgyMjY0MGE5MDZiZTUzZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy90
aW1pbmctbW9kZWwvYW5pbWF0aW9ucy91cGRhdGluZy10aGUtZmluaXNoZWQtc3RhdGUtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2FuaW1hdGlvbnMvdXBkYXRpbmctdGhlLWZpbmlz
aGVkLXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMTAsMTkgKzEwLDE5IEBAIFBBU1MgVXBkYXRpbmcg
dGhlIGZpbmlzaGVkIHN0YXRlIHdoZW4gc2Vla2luZyBhIHJldmVyc2VkIGFuaW1hdGlvbiBleGFj
dGx5IHRvIHplCiBQQVNTIFVwZGF0aW5nIHRoZSBmaW5pc2hlZCBzdGF0ZSB3aGVuIHBsYXlpbmcg
YmVmb3JlIGVuZCAKIFBBU1MgVXBkYXRpbmcgdGhlIGZpbmlzaGVkIHN0YXRlIHdoZW4gc2Vla2lu
ZyBiZWZvcmUgZW5kIAogUEFTUyBVcGRhdGluZyB0aGUgZmluaXNoZWQgc3RhdGUgd2hlbiBzZWVr
aW5nIGEgcmV2ZXJzZWQgYW5pbWF0aW9uIGJlZm9yZSBlbmQgCi1USU1FT1VUIFVwZGF0aW5nIHRo
ZSBmaW5pc2hlZCBzdGF0ZSB3aGVuIHBsYXliYWNrIHJhdGUgaXMgemVybyBhbmQgdGhlIGN1cnJl
bnQgdGltZSBpcyBsZXNzIHRoYW4gemVybyBUZXN0IHRpbWVkIG91dAotTk9UUlVOIFVwZGF0aW5n
IHRoZSBmaW5pc2hlZCBzdGF0ZSB3aGVuIHBsYXliYWNrIHJhdGUgaXMgemVybyBhbmQgdGhlIGN1
cnJlbnQgdGltZSBpcyBsZXNzIHRoYW4gZW5kIAotTk9UUlVOIFVwZGF0aW5nIHRoZSBmaW5pc2hl
ZCBzdGF0ZSB3aGVuIHBsYXliYWNrIHJhdGUgaXMgemVybyBhbmQgdGhlIGN1cnJlbnQgdGltZSBp
cyBncmVhdGVyIHRoYW4gZW5kIAotTk9UUlVOIFVwZGF0aW5nIHRoZSBmaW5pc2hlZCBzdGF0ZSB3
aGVuIGN1cnJlbnQgdGltZSBpcyB1bnJlc29sdmVkIAorUEFTUyBVcGRhdGluZyB0aGUgZmluaXNo
ZWQgc3RhdGUgd2hlbiBwbGF5YmFjayByYXRlIGlzIHplcm8gYW5kIHRoZSBjdXJyZW50IHRpbWUg
aXMgbGVzcyB0aGFuIHplcm8gCitQQVNTIFVwZGF0aW5nIHRoZSBmaW5pc2hlZCBzdGF0ZSB3aGVu
IHBsYXliYWNrIHJhdGUgaXMgemVybyBhbmQgdGhlIGN1cnJlbnQgdGltZSBpcyBsZXNzIHRoYW4g
ZW5kIAorUEFTUyBVcGRhdGluZyB0aGUgZmluaXNoZWQgc3RhdGUgd2hlbiBwbGF5YmFjayByYXRl
IGlzIHplcm8gYW5kIHRoZSBjdXJyZW50IHRpbWUgaXMgZ3JlYXRlciB0aGFuIGVuZCAKK1BBU1Mg
VXBkYXRpbmcgdGhlIGZpbmlzaGVkIHN0YXRlIHdoZW4gY3VycmVudCB0aW1lIGlzIHVucmVzb2x2
ZWQgCiBQQVNTIFVwZGF0aW5nIHRoZSBmaW5pc2hlZCBzdGF0ZSB3aGVuIHRoZXJlIGlzIGEgcGVu
ZGluZyB0YXNrIAotTk9UUlVOIFVwZGF0aW5nIHRoZSBmaW5pc2hlZCBzdGF0ZSB3aGVuIHN0YXJ0
IHRpbWUgaXMgdW5yZXNvbHZlZCBhbmQgZGlkIHNlZWsgPSBmYWxzZSAKK1BBU1MgVXBkYXRpbmcg
dGhlIGZpbmlzaGVkIHN0YXRlIHdoZW4gc3RhcnQgdGltZSBpcyB1bnJlc29sdmVkIGFuZCBkaWQg
c2VlayA9IGZhbHNlIAogUEFTUyBVcGRhdGluZyB0aGUgZmluaXNoZWQgc3RhdGUgd2hlbiBzdGFy
dCB0aW1lIGlzIHVucmVzb2x2ZWQgYW5kIGRpZCBzZWVrID0gdHJ1ZSAKLU5PVFJVTiBGaW5pc2gg
bm90aWZpY2F0aW9uIHN0ZXBzIGRvbid0IHJ1biB3aGVuIHRoZSBhbmltYXRpb24gc2Vla3MgdG8g
ZmluaXNoIGFuZCB0aGVuIHNlZWtzIGJhY2sgYWdhaW4gCi1OT1RSVU4gRmluaXNoIG5vdGlmaWNh
dGlvbiBzdGVwcyBydW4gd2hlbiB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcyBub3JtYWxseSAKLU5P
VFJVTiBGaW5pc2ggbm90aWZpY2F0aW9uIHN0ZXBzIHJ1biB3aGVuIHRoZSBhbmltYXRpb24gc2Vl
a3MgcGFzdCBmaW5pc2ggCi1OT1RSVU4gRmluaXNoIG5vdGlmaWNhdGlvbiBzdGVwcyBydW4gd2hl
biB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcyB3aXRoIC5maW5pc2goKSwgZXZlbiBpZiB3ZSB0aGVu
IHNlZWsgYXdheSAKLU5PVFJVTiBBbmltYXRpb24gZmluaXNoZWQgcHJvbWlzZSBpcyByZXBsYWNl
ZCBhZnRlciBzZWVraW5nIGJhY2sgdG8gc3RhcnQgCi1OT1RSVU4gQW5pbWF0aW9uIGZpbmlzaGVk
IHByb21pc2UgaXMgcmVwbGFjZWQgYWZ0ZXIgcmVwbGF5aW5nIGZyb20gc3RhcnQgCi1QQVNTIEFu
aW1hdGlvbiBmaW5pc2ggZXZlbnQgaXMgZmlyZWQgYWdhaW4gYWZ0ZXIgc2Vla2luZyBiYWNrIHRv
IHN0YXJ0IAotUEFTUyBBbmltYXRpb24gZmluaXNoIGV2ZW50IGlzIGZpcmVkIGFnYWluIGFmdGVy
IHJlcGxheWluZyBmcm9tIHN0YXJ0IAorUEFTUyBGaW5pc2ggbm90aWZpY2F0aW9uIHN0ZXBzIGRv
bid0IHJ1biB3aGVuIHRoZSBhbmltYXRpb24gc2Vla3MgdG8gZmluaXNoIGFuZCB0aGVuIHNlZWtz
IGJhY2sgYWdhaW4gCitQQVNTIEZpbmlzaCBub3RpZmljYXRpb24gc3RlcHMgcnVuIHdoZW4gdGhl
IGFuaW1hdGlvbiBjb21wbGV0ZXMgbm9ybWFsbHkgCitQQVNTIEZpbmlzaCBub3RpZmljYXRpb24g
c3RlcHMgcnVuIHdoZW4gdGhlIGFuaW1hdGlvbiBzZWVrcyBwYXN0IGZpbmlzaCAKK1BBU1MgRmlu
aXNoIG5vdGlmaWNhdGlvbiBzdGVwcyBydW4gd2hlbiB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcyB3
aXRoIC5maW5pc2goKSwgZXZlbiBpZiB3ZSB0aGVuIHNlZWsgYXdheSAKK1BBU1MgQW5pbWF0aW9u
IGZpbmlzaGVkIHByb21pc2UgaXMgcmVwbGFjZWQgYWZ0ZXIgc2Vla2luZyBiYWNrIHRvIHN0YXJ0
IAorUEFTUyBBbmltYXRpb24gZmluaXNoZWQgcHJvbWlzZSBpcyByZXBsYWNlZCBhZnRlciByZXBs
YXlpbmcgZnJvbSBzdGFydCAKK1RJTUVPVVQgQW5pbWF0aW9uIGZpbmlzaCBldmVudCBpcyBmaXJl
ZCBhZ2FpbiBhZnRlciBzZWVraW5nIGJhY2sgdG8gc3RhcnQgVGVzdCB0aW1lZCBvdXQKK1RJTUVP
VVQgQW5pbWF0aW9uIGZpbmlzaCBldmVudCBpcyBmaXJlZCBhZ2FpbiBhZnRlciByZXBsYXlpbmcg
ZnJvbSBzdGFydCBUZXN0IHRpbWVkIG91dAogCg==
</data>
<flag name="review"
          id="370480"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>