<?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>179973</bug_id>
          
          <creation_ts>2017-11-23 05:56:22 -0800</creation_ts>
          <short_desc>[Web Animations] Perform accelerated animations when possible</short_desc>
          <delta_ts>2017-11-24 01:45:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=179974</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=122912</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=179975</see_also>
          <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>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1374397</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-23 05:56:22 -0800</bug_when>
    <thetext>Certain layer properties (opacity, transform, filter, etc.) can be animated using hardware compositing when using CSS Animations, but not currently with Web Animations. It should be possible to use the same approach used for CSS Animations with Web Animations and have the same performance gains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374398</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-23 05:56:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/34953922&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374412</commentid>
    <comment_count>2</comment_count>
      <attachid>327498</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-23 07:16:02 -0800</bug_when>
    <thetext>Created attachment 327498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374456</commentid>
    <comment_count>3</comment_count>
      <attachid>327498</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-11-23 11:20:54 -0800</bug_when>
    <thetext>Comment on attachment 327498
Patch

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

I know you&apos;re unsure about the term &quot;hardware compositing&quot; vs &quot;accelerated&quot;. I think more people are familiar with the term accelerated, or maybe just &quot;composited&quot;.

&gt; Source/WebCore/animation/DocumentTimeline.cpp:170
&gt; +        animation-&gt;toggleHardwareCompositing();

I don&apos;t like the name &quot;toggle&quot;, because it&apos;s not clear what is actually happening. Is this turning it on or off? Or does it depend on the animation?

&gt; Source/WebCore/animation/DocumentTimeline.cpp:182
&gt; +bool DocumentTimeline::elementRunningAnimationsAreAllHardwareComposited(Element&amp; element)

This is also a weird name. It&apos;s asking if the Element has only hardware composited animations. Maybe elementUsingHardwareCompositingForAnimations?

&gt; Source/WebCore/animation/KeyframeEffect.cpp:150
&gt; +    if (m_startedHardwareCompositedAnimation &amp;&amp; localTime &gt;= timing()-&gt;duration()) {

I wonder if relativeTime is a better name than localTime. I had to think a bit to work out what localTime &gt;= duration meant (because it makes no sense to compare a general time to a duration).

&gt; Source/WebCore/animation/KeyframeEffect.cpp:184
&gt; +    if (needsToStartWithHardwareCompositing)
&gt; +        animation()-&gt;hardwareCompositingActiveStateDidChange();

I assume you have to call this after you flip the Z index? Otherwise it makes more sense to go up where you set needsToStartWithHardwareCompositing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374460</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-23 11:46:19 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #3)
&gt; Comment on attachment 327498 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=327498&amp;action=review
&gt; 
&gt; I know you&apos;re unsure about the term &quot;hardware compositing&quot; vs &quot;accelerated&quot;.
&gt; I think more people are familiar with the term accelerated, or maybe just
&gt; &quot;composited&quot;.

I definitely don&apos;t want to use &quot;composited&quot; because of the notion of &quot;effect composition&quot; in Web Animations (https://w3c.github.io/web-animations/#effect-composition). I think accelerated is the way to go. I&apos;ll rename everything to use that term instead.

&gt; &gt; Source/WebCore/animation/DocumentTimeline.cpp:170
&gt; &gt; +        animation-&gt;toggleHardwareCompositing();
&gt; 
&gt; I don&apos;t like the name &quot;toggle&quot;, because it&apos;s not clear what is actually
&gt; happening. Is this turning it on or off? Or does it depend on the animation?

It turns it on if it&apos;s off, and off if it&apos;s on, hence the use of &quot;toggle&quot;. Specifically, it starts the accelerated animation if it&apos;s not running yet, and it ends it if it&apos;s already running.

&gt; &gt; Source/WebCore/animation/DocumentTimeline.cpp:182
&gt; &gt; +bool DocumentTimeline::elementRunningAnimationsAreAllHardwareComposited(Element&amp; element)
&gt; 
&gt; This is also a weird name. It&apos;s asking if the Element has only hardware
&gt; composited animations. Maybe elementUsingHardwareCompositingForAnimations?

I think areAllRunningAnimationsForElementAccelerated()?

&gt; &gt; Source/WebCore/animation/KeyframeEffect.cpp:150
&gt; &gt; +    if (m_startedHardwareCompositedAnimation &amp;&amp; localTime &gt;= timing()-&gt;duration()) {
&gt; 
&gt; I wonder if relativeTime is a better name than localTime. I had to think a
&gt; bit to work out what localTime &gt;= duration meant (because it makes no sense
&gt; to compare a general time to a duration).

The term &quot;local time&quot; comes from the spec (https://w3c.github.io/web-animations/#local-time-section).

&gt; &gt; Source/WebCore/animation/KeyframeEffect.cpp:184
&gt; &gt; +    if (needsToStartWithHardwareCompositing)
&gt; &gt; +        animation()-&gt;hardwareCompositingActiveStateDidChange();
&gt; 
&gt; I assume you have to call this after you flip the Z index? Otherwise it
&gt; makes more sense to go up where you set needsToStartWithHardwareCompositing.

Actually, we don&apos;t. This code was there because the needsToStartWithHardwareCompositing was the return value for a previous iteration of this patch. Now we no longer use a return value, I can set it earlier as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374532</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-24 01:45:37 -0800</bug_when>
    <thetext>Committed r225128: &lt;https://trac.webkit.org/changeset/225128&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327498</attachid>
            <date>2017-11-23 07:16:02 -0800</date>
            <delta_ts>2017-11-23 11:20:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179973-20171123161601.patch</filename>
            <type>text/plain</type>
            <size>23370</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ5NjIyYzY3MTE1NDE4
NjI2NzNhYmE2MDQzNWM3YTZkNmUzNjhhNy4uNzJiOWExMGY4ODQ2YzAzMWUzOGI0MDVjMGMxZWRj
ZDY4ZTljMjAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE3LTExLTIzICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBQZXJmb3JtIGhhcmR3YXJlLWNvbXBvc2l0ZWQgYW5pbWF0aW9ucyB3aGVuIHBvc3NpYmxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5NzMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0OTUzOTIyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gd2UncmUgZW50ZXJpbmcgYW5kIGxlYXZpbmcg
dGhlIGFjdGl2ZSBkdXJhdGlvbiBvZiBhbiBhbmltYXRpb24gZWZmZWN0LCB3ZSBub3cgY2hlY2sK
KyAgICAgICAgd2hldGhlciB0aGUgYW5pbWF0aW9uIGNhbiBiZSBwZXJmb3JtZWQgd2l0aCBoYXJk
d2FyZSBjb21wb3NpdGluZywgdXNpbmcgdGhlIGV4aXN0aW5nCisgICAgICAgIENTU1Byb3BlcnR5
QW5pbWF0aW9uOjphbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZCgpIHV0aWxpdHksIGFu
ZCBzdGFydCBhbmQgc3RvcAorICAgICAgICBhbmltYXRpb25zIHVzaW5nIHRoZSBzdGFydEFuaW1h
dGlvbigpIGFuZCBhbmltYXRpb25GaW5pc2hlZCgpIGZ1bmN0aW9ucyBvbiBSZW5kZXJCb3hNb2Rl
bE9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIG9ubHkgYSBmaXJzdCBzdGVwIHRvd2Fy
ZHMgZnVsbCBzdXBwb3J0IGZvciBoYXJkd2FyZS1jb21wb3NpdGVkIGFuaW1hdGlvbnMsCisgICAg
ICAgIHRoZXJlIGFyZSB0d28ga25vd24gaXNzdWVzIGF0IHRoZSBtb21lbnQuIEJlY2F1c2Ugd2Un
cmUgbm90IGJsZW5kaW5nIHRoZSBzdHlsZXMgdG8gcGVyZm9ybQorICAgICAgICB0aGUgYW5pbWF0
aW9uLCBnZXRDb21wdXRlZFN0eWxlKCkgd2lsbCBub3QgcmV0dXJuIHRoZSBhbmltYXRlZCB2YWx1
ZSAod2Via2l0Lm9yZy9iLzE3OTk3NCkuCisgICAgICAgIEFkZGl0aW9uYWxseSwgaWYgb3RoZXIg
YW5pbWF0aW9ucyBoYXBwZW4gdG8gcnVuIGxhdGVyIGR1cmluZyB0aGUgYWN0aXZlIHN0YXRlIG9m
IGFuIGFuaW1hdGlvbgorICAgICAgICB0aGF0IGNhbiBydW4gaGFyZHdhcmUtY29tcG9zaXRlZCwg
d2Ugd2lsbCBub3QgZmFsbCBiYWNrIHRvIHNvZnR3YXJlLW9ubHkgYW5pbWF0aW9uIGZvciB0aGlz
CisgICAgICAgIGVsZW1lbnQgYW5kIHRoZXNlIGFuaW1hdGlvbnMgd2lsbCBhcHBlYXIgbm90IHRv
IHJ1biAod2Via2l0Lm9yZy9iLzE3OTk3NSkuIFRoZXNlIHdpbGwgYmUKKyAgICAgICAgYWRkcmVz
c2VkIGluIGZvbGxvdy11cCBwYXRjaGVzLgorCisgICAgICAgIFRlc3RzOiB3ZWJhbmltYXRpb25z
L2xlZnQtYW5kLW9wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy5odG1sCisg
ICAgICAgICAgICAgICB3ZWJhbmltYXRpb25zL29wYWNpdHktYW5pbWF0aW9uLW5vLWxvbmdlci1j
b21wb3NpdGVkLXVwb24tY29tcGxldGlvbi5odG1sCisgICAgICAgICAgICAgICB3ZWJhbmltYXRp
b25zL29wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1jb21wb3NpdGluZy5odG1sCisgICAgICAgICAg
ICAgICB3ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFjaXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15
aWVsZHMtbm8tY29tcG9zaXRpbmcuaHRtbAorCisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50
VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6dXBkYXRl
QW5pbWF0aW9ucyk6IENoZWNrIGluIHRoZSBtYXAgb2YgcGVuZGluZyBoYXJkd2FyZSBhbmltYXRp
b25zCisgICAgICAgIHRvIHNlZSBpZiBhbnkgYW5pbWF0aW9uIHJlcXVpcmVzIHRvZ2dsaW5nIHRo
ZWlyIGFjdGl2ZSBzdGF0ZSBhZnRlciB0aGVpciBzdHlsZXMgaGF2ZSBiZWVuIGludmFsaWRhdGVk
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0aW9uSGFyZHdhcmVD
b21wb3NpdGluZ0FjdGl2ZVN0YXRlRGlkQ2hhbmdlKTogTmV3IGZ1bmN0aW9uIHRvCisgICAgICAg
IGxldCBhbmltYXRpb25zIGluZGljYXRlIHRoYXQgdGhleSBuZWVkIHRvIGhhdmUgdGhlaXIgaGFy
ZHdhcmUtY29tcG9zaXRlZCBiYWNraW5nIHRvZ2dsZWQgYWZ0ZXIKKyAgICAgICAgc3R5bGUgaW52
YWxpZGF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
VGltZWxpbmU6OmVsZW1lbnRSdW5uaW5nQW5pbWF0aW9uc0FyZUFsbEhhcmR3YXJlQ29tcG9zaXRl
ZCk6IFRoaXMgZnVuY3Rpb24gaXMgdXNlZAorICAgICAgICBpbiBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24oKSB0byBpZGVudGlmeSB3aGV0aGVy
IGFuIGVsZW1lbnQgcmVxdWlyZXMKKyAgICAgICAgaGFyZHdhcmUgY29tcG9zaXRlZCBkdWUgdG8g
cnVubmluZyBhbmltYXRpb25zLiBXZSBjaGVjayBhbGwgcnVubmluZyBhbmltYXRpb25zIGZvciB0
aGUgcHJvdmlkZWQgZWxlbWVudAorICAgICAgICB0byBzZWUgaWYgdGhleSBjYW4gYWxsIGJlIHJ1
bm5pbmcgaW4gaGFyZHdhcmUgYW5kIHJldHVybiB0cnVlIGluIHRoaXMgc2l0dWF0aW9uIG9ubHku
CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaDoKKyAgICAgICAgKiBhbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZl
Y3Q6OmFwcGx5QXRMb2NhbFRpbWUpOiBJZGVudGlmeSBpZiB3ZSdyZSBjcm9zc2luZyBpbnRvIG9y
IG91dCBvZiB0aGUgYWN0aXZlIHN0YXRlCisgICAgICAgIGZvciBhbiBhbmltYXRpb24gYW5kIGNo
ZWNrIGlmIGl0IHdpbGwgYmUgb3IgaGFzIGJlZW4gcnVubmluZyB3aXRoIGhhcmR3YXJlIGNvbXBv
c2l0aW5nIHN1Y2ggdGhhdCB3ZSBjYW4KKyAgICAgICAgbm90aWZ5IHRoZSBEb2N1bWVudFRpbWVs
aW5lLCB0aHJvdWdoIHRoZSBhc3NvY2lhdGVkIGFuaW1hdGlvbiwgdGhhdCB0aGUgaGFyZHdhcmUt
Y29tcG9zaXRlZCBiYWNraW5nIHdpbGwKKyAgICAgICAgbmVlZCB0byBiZSB0b2dnbGVkIGFmdGVy
IHN0eWxlIGludmFsaWRhdGlvbiBoYXMgYmVlbiBjb21wbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUVmZmVjdDo6c2hvdWxkUnVuV2l0aEhhcmR3YXJlQ29tcG9zaXRpbmcpOiBDaGVj
ayB0aGF0IGFsbCBwcm9wZXJ0aWVzIGZvciB0aGlzIGFuaW1hdGlvbgorICAgICAgICBlZmZlY3Qg
Y2FuIGJlIGFjY2VsZXJhdGVkIGFjY29yZGluZyB0byBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YW5p
bWF0aW9uT2ZQcm9wZXJ0eUlzQWNjZWxlcmF0ZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OktleWZy
YW1lRWZmZWN0Ojp0b2dnbGVIYXJkd2FyZUNvbXBvc2l0aW5nKTogU3RhcnQgb3Igc3RvcCB0aGUg
YXNzb2NpYXRlZCBoYXJkd2FyZS1jb21wb3NpdGVkCisgICAgICAgIGFuaW1hdGlvbiB0aHJvdWdo
IHRoZSBhc3NvY2lhdGVkIGVsZW1lbnQncyBSZW5kZXJCb3hNb2RlbE9iamVjdCByZW5kZXJlci4K
KyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaDoKKyAgICAgICAgKiBhbmltYXRp
b24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6aGFy
ZHdhcmVDb21wb3NpdGluZ0FjdGl2ZVN0YXRlRGlkQ2hhbmdlKTogQ2FsbGVkIGZyb20gQW5pbWF0
aW9uRWZmZWN0OjphcHBseUF0TG9jYWxUaW1lKCksCisgICAgICAgIHdlIGZvcndhcmQgdG8gdGhl
IERvY3VtZW50VGltZWxpbmUgdGhlIGluZm9ybWF0aW9uIHRoYXQgdGhlIGFuaW1hdGlvbiB3aWxs
IGNyb3NzIGFuIGFjdGl2ZSBzdGF0ZSBib3VuZGFyeSB3aGlsZQorICAgICAgICBhbGxvd2luZyB0
byBiZSBiYWNrZWQgYnkgaGFyZHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJBbmltYXRpb246OnRvZ2dsZUhhcmR3YXJlQ29tcG9zaXRpbmcpOiBGb3J3YXJkIHRvIHRoZSBh
c3NvY2lhdGVkIEtleWZyYW1lRWZmZWN0IHRoYXQgaGFyZHdhcmUtY29tcG9zaXRlZAorICAgICAg
ICBhbmltYXRpb24gYmFja2luZyBzaG91bGQgYmUgdG9nZ2xlZC4KKyAgICAgICAgKiBhbmltYXRp
b24vV2ViQW5pbWF0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24gY29uc3QpOiBDaGVjayB2aWEgdGhlIHJlbmRlcmVy
J3MgZWxlbWVudCdzCisgICAgICAgIERvY3VtZW50VGltZWxpbmUgdGhhdCBhbGwgcnVubmluZyBh
bmltYXRpb25zIGZvciB0aGlzIHBhcnRpY3VsYXIgZWxlbWVudCBhcmUgaGFyZHdhcmUtY29tcG9z
aXRlZCB0byBlbnN1cmUgdGhhdAorICAgICAgICB0aGUgZWxlbWVudCB3aWxsIGJlIGhhcmR3YXJl
LWNvbXBvc2l0ZWQuCisKIDIwMTctMTEtMjIgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIEFkb3B0IEtleWZyYW1lTGlzdCBpbiBL
ZXlmcmFtZUVmZmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3Vt
ZW50VGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxp
bmUuY3BwCmluZGV4IGIwZmQ2ZDdkZGE2YTgxZmEwOTVkZGRmMjViOWQ0MzZjZTkyYjBhNGUuLjE0
NTFlYTM1Nzk2NDA5ZjQ2ZWExZmMzY2M1ODU0MzRhMDFjMjU1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJLZXlm
cmFtZUVmZmVjdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKIAogc3RhdGljIGNvbnN0IFNlY29uZHMg
YW5pbWF0aW9uSW50ZXJ2YWwgeyAxNV9tcyB9OwpAQCAtMTY1LDEwICsxNjYsMzIgQEAgdm9pZCBE
b2N1bWVudFRpbWVsaW5lOjp1cGRhdGVBbmltYXRpb25zKCkKICAgICAgICAgbV9kb2N1bWVudC0+
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIH0KIAorICAgIGZvciAoYXV0byBhbmltYXRpb24g
OiBtX2hhcmR3YXJlQ29tcG9zaXRlZEFuaW1hdGlvbnNQZW5kaW5nQWN0aXZlU3RhdGVDaGFuZ2Up
CisgICAgICAgIGFuaW1hdGlvbi0+dG9nZ2xlSGFyZHdhcmVDb21wb3NpdGluZygpOworICAgIG1f
aGFyZHdhcmVDb21wb3NpdGVkQW5pbWF0aW9uc1BlbmRpbmdBY3RpdmVTdGF0ZUNoYW5nZS5jbGVh
cigpOworCiAgICAgLy8gVGltZSBoYXMgYWR2YW5jZWQsIHRoZSB0aW1pbmcgbW9kZWwgcmVxdWly
ZXMgaW52YWxpZGF0aW9uIG5vdy4KICAgICBhbmltYXRpb25UaW1pbmdNb2RlbERpZENoYW5nZSgp
OwogfQogCit2b2lkIERvY3VtZW50VGltZWxpbmU6OmFuaW1hdGlvbkhhcmR3YXJlQ29tcG9zaXRp
bmdBY3RpdmVTdGF0ZURpZENoYW5nZShXZWJBbmltYXRpb24mIGFuaW1hdGlvbikKK3sKKyAgICBt
X2hhcmR3YXJlQ29tcG9zaXRlZEFuaW1hdGlvbnNQZW5kaW5nQWN0aXZlU3RhdGVDaGFuZ2UuYWRk
KCZhbmltYXRpb24pOworfQorCitib29sIERvY3VtZW50VGltZWxpbmU6OmVsZW1lbnRSdW5uaW5n
QW5pbWF0aW9uc0FyZUFsbEhhcmR3YXJlQ29tcG9zaXRlZChFbGVtZW50JiBlbGVtZW50KQorewor
ICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgbGV0IGFuaW1hdGlvbnMgcnVuIHVzaW5nIGhhcmR3YXJl
IGNvbXBvc2l0aW5nIGV2ZW4gaWYgbGF0ZXIgaW4gdGhlIGFjdGl2ZQorICAgIC8vIHNwYW4gb2Yg
dGhlIGN1cnJlbnQgYW5pbWF0aW9ucyBhIG5ldyBhbmltYXRpb24gc2hvdWxkIHJlcXVpcmUgaGFy
ZHdhcmUgY29tcG9zaXRpbmcgdG8gYmUKKyAgICAvLyBkaXNhYmxlZCAod2Via2l0Lm9yZy9iLzE3
OTk3NCkuCisgICAgYXV0byBhbmltYXRpb25zID0gYW5pbWF0aW9uc0ZvckVsZW1lbnQoZWxlbWVu
dCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBhbmltYXRpb24gOiBhbmltYXRpb25zKSB7CisgICAg
ICAgIGlmIChhbmltYXRpb24tPmVmZmVjdCgpICYmIGFuaW1hdGlvbi0+ZWZmZWN0KCktPmlzS2V5
ZnJhbWVFZmZlY3QoKSAmJiAhZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGFuaW1hdGlvbi0+ZWZm
ZWN0KCkpLT5pc1J1bm5pbmdXaXRoSGFyZHdhcmVDb21wb3NpdGluZygpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gIWFuaW1hdGlvbnMuaXNFbXB0eSgpOwor
fQorCiB2b2lkIERvY3VtZW50VGltZWxpbmU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
X0RJU1BMQVlfTU9OSVRPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9E
b2N1bWVudFRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1l
bGluZS5oCmluZGV4IDMwMDYwZjYzNDk0MDBiOGI5N2I0MWMyZTIzZDJiZWRkYTkyMzEyNjMuLjBm
Y2M2M2UwOWJjM2YwY2UyYzllNDhkZWUxZjliNGI5YWI3NWU0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhbmltYXRpb25UaW1pbmdNb2RlbERpZENoYW5nZSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKIAorICAgIHZv
aWQgYW5pbWF0aW9uSGFyZHdhcmVDb21wb3NpdGluZ0FjdGl2ZVN0YXRlRGlkQ2hhbmdlKFdlYkFu
aW1hdGlvbiYpOworICAgIGJvb2wgZWxlbWVudFJ1bm5pbmdBbmltYXRpb25zQXJlQWxsSGFyZHdh
cmVDb21wb3NpdGVkKEVsZW1lbnQmKTsKICAgICB2b2lkIGRldGFjaEZyb21Eb2N1bWVudCgpOwog
CiBwcml2YXRlOgpAQCAtNzAsNiArNzIsNyBAQCBwcml2YXRlOgogICAgIEdlbmVyaWNUYXNrUXVl
dWU8VGltZXI+IG1faW52YWxpZGF0aW9uVGFza1F1ZXVlOwogICAgIGJvb2wgbV9uZWVkc1VwZGF0
ZUFuaW1hdGlvblNjaGVkdWxlIHsgZmFsc2UgfTsKICAgICBUaW1lciBtX2FuaW1hdGlvblNjaGVk
dWxlVGltZXI7CisgICAgSGFzaFNldDxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gbV9oYXJkd2FyZUNv
bXBvc2l0ZWRBbmltYXRpb25zUGVuZGluZ0FjdGl2ZVN0YXRlQ2hhbmdlOwogCiAjaWYgVVNFKFJF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAgICAvLyBPdmVycmlkZSBm
b3IgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0tleWZyYW1lRWZmZWN0LmNwcAppbmRleCBmMjg5MjhmMjAzNzIyN2U1OTI0ODJmNTdlNGJhM2Yx
MjFkZGZjOTgzLi5kMTgzNTFhNmEyYTZhOGNmMDNkNWQwNTM5YjgyNjNkYTAzODRlMzI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdC5oIgog
CisjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlBbmltYXRpb24u
aCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKQEAgLTE0
Niw2ICsxNDcsMTEgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHlBdExvY2FsVGltZShTZWNv
bmRzIGxvY2FsVGltZSwgUmVuZGVyU3R5bGUmIHRhcmdldFN0eWwKICAgICBpZiAoIW1fdGFyZ2V0
KQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9zdGFydGVkSGFyZHdhcmVDb21wb3NpdGVk
QW5pbWF0aW9uICYmIGxvY2FsVGltZSA+PSB0aW1pbmcoKS0+ZHVyYXRpb24oKSkgeworICAgICAg
ICBtX3N0YXJ0ZWRIYXJkd2FyZUNvbXBvc2l0ZWRBbmltYXRpb24gPSBmYWxzZTsKKyAgICAgICAg
YW5pbWF0aW9uKCktPmhhcmR3YXJlQ29tcG9zaXRpbmdBY3RpdmVTdGF0ZURpZENoYW5nZSgpOwor
ICAgIH0KKwogICAgIC8vIEZJWE1FOiBBc3N1bWUgYW5pbWF0aW9ucyBvbmx5IGFwcGx5IGluIHRo
ZSByYW5nZSBbMCwgZHVyYXRpb25bCiAgICAgLy8gdW50aWwgd2Ugc3VwcG9ydCBmaWxsIG1vZGVz
LCBkZWxheXMgYW5kIGl0ZXJhdGlvbnMuCiAgICAgaWYgKGxvY2FsVGltZSA8IDBfcyB8fCBsb2Nh
bFRpbWUgPj0gdGltaW5nKCktPmR1cmF0aW9uKCkpCkBAIC0xNTQsMTYgKzE2MCw1NSBAQCB2b2lk
IEtleWZyYW1lRWZmZWN0OjphcHBseUF0TG9jYWxUaW1lKFNlY29uZHMgbG9jYWxUaW1lLCBSZW5k
ZXJTdHlsZSYgdGFyZ2V0U3R5bAogICAgIGlmICghdGltaW5nKCktPmR1cmF0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGZsb2F0IHByb2dyZXNzID0gbG9jYWxUaW1lIC8gdGltaW5nKCkt
PmR1cmF0aW9uKCk7CisgICAgYm9vbCBuZWVkc1RvU3RhcnRXaXRoSGFyZHdhcmVDb21wb3NpdGlu
ZyA9IGZhbHNlOwogCi0gICAgZm9yIChhdXRvIGNzc1Byb3BlcnR5SWQgOiBtX2tleWZyYW1lcy5w
cm9wZXJ0aWVzKCkpCi0gICAgICAgIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZFByb3BlcnRp
ZXModGhpcywgY3NzUHJvcGVydHlJZCwgJnRhcmdldFN0eWxlLCBtX2tleWZyYW1lc1swXS5zdHls
ZSgpLCBtX2tleWZyYW1lc1sxXS5zdHlsZSgpLCBwcm9ncmVzcyk7CisgICAgaWYgKCFtX3N0YXJ0
ZWQgJiYgIW1fc3RhcnRlZEhhcmR3YXJlQ29tcG9zaXRlZEFuaW1hdGlvbikgeworICAgICAgICBu
ZWVkc1RvU3RhcnRXaXRoSGFyZHdhcmVDb21wb3NpdGluZyA9IHNob3VsZFJ1bldpdGhIYXJkd2Fy
ZUNvbXBvc2l0aW5nKCk7CisgICAgICAgIG1fc3RhcnRlZEhhcmR3YXJlQ29tcG9zaXRlZEFuaW1h
dGlvbiA9IG5lZWRzVG9TdGFydFdpdGhIYXJkd2FyZUNvbXBvc2l0aW5nOworICAgIH0KKyAgICBt
X3N0YXJ0ZWQgPSB0cnVlOworCisgICAgaWYgKCFuZWVkc1RvU3RhcnRXaXRoSGFyZHdhcmVDb21w
b3NpdGluZyAmJiAhbV9zdGFydGVkSGFyZHdhcmVDb21wb3NpdGVkQW5pbWF0aW9uKSB7CisgICAg
ICAgIGZsb2F0IHByb2dyZXNzID0gbG9jYWxUaW1lIC8gdGltaW5nKCktPmR1cmF0aW9uKCk7Cisg
ICAgICAgIGZvciAoYXV0byBjc3NQcm9wZXJ0eUlkIDogbV9rZXlmcmFtZXMucHJvcGVydGllcygp
KQorICAgICAgICAgICAgQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kUHJvcGVydGllcyh0aGlz
LCBjc3NQcm9wZXJ0eUlkLCAmdGFyZ2V0U3R5bGUsIG1fa2V5ZnJhbWVzWzBdLnN0eWxlKCksIG1f
a2V5ZnJhbWVzWzFdLnN0eWxlKCksIHByb2dyZXNzKTsKKyAgICB9CiAKICAgICAvLyBodHRwczov
L3czYy5naXRodWIuaW8vd2ViLWFuaW1hdGlvbnMvI3NpZGUtZWZmZWN0cy1zZWN0aW9uCiAgICAg
Ly8gRm9yIGV2ZXJ5IHByb3BlcnR5IHRhcmdldGVkIGJ5IGF0IGxlYXN0IG9uZSBhbmltYXRpb24g
ZWZmZWN0IHRoYXQgaXMgY3VycmVudCBvciBpbiBlZmZlY3QsIHRoZSB1c2VyIGFnZW50CiAgICAg
Ly8gbXVzdCBhY3QgYXMgaWYgdGhlIHdpbGwtY2hhbmdlIHByb3BlcnR5IChbY3NzLXdpbGwtY2hh
bmdlLTFdKSBvbiB0aGUgdGFyZ2V0IGVsZW1lbnQgaW5jbHVkZXMgdGhlIHByb3BlcnR5LgogICAg
IGlmIChtX3RyaWdnZXJzU3RhY2tpbmdDb250ZXh0ICYmIHRhcmdldFN0eWxlLmhhc0F1dG9aSW5k
ZXgoKSkKICAgICAgICAgdGFyZ2V0U3R5bGUuc2V0WkluZGV4KDApOworCisgICAgaWYgKG5lZWRz
VG9TdGFydFdpdGhIYXJkd2FyZUNvbXBvc2l0aW5nKQorICAgICAgICBhbmltYXRpb24oKS0+aGFy
ZHdhcmVDb21wb3NpdGluZ0FjdGl2ZVN0YXRlRGlkQ2hhbmdlKCk7Cit9CisKK2Jvb2wgS2V5ZnJh
bWVFZmZlY3Q6OnNob3VsZFJ1bldpdGhIYXJkd2FyZUNvbXBvc2l0aW5nKCkKK3sKKyAgICBmb3Ig
KGF1dG8gY3NzUHJvcGVydHlJZCA6IG1fa2V5ZnJhbWVzLnByb3BlcnRpZXMoKSkgeworICAgICAg
ICBpZiAoIUNTU1Byb3BlcnR5QW5pbWF0aW9uOjphbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVy
YXRlZChjc3NQcm9wZXJ0eUlkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnRvZ2dsZUhhcmR3YXJl
Q29tcG9zaXRpbmcoKQoreworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsK
KyAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNDb21wb3NpdGVkKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8qIGNvbXBvc2l0ZWRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRl
ckJveE1vZGVsT2JqZWN0PihyZW5kZXJlcik7CisgICAgaWYgKG1fc3RhcnRlZEhhcmR3YXJlQ29t
cG9zaXRlZEFuaW1hdGlvbikgeworICAgICAgICBhdXRvIGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6
Y3JlYXRlKCk7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24odGltaW5nKCktPmR1cmF0
aW9uKCkudmFsdWUoKSk7CisgICAgICAgIGNvbXBvc2l0ZWRSZW5kZXJlci0+c3RhcnRBbmltYXRp
b24oMCwgYW5pbWF0aW9uLnB0cigpLCBtX2tleWZyYW1lcyk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgY29tcG9zaXRlZFJlbmRlcmVyLT5hbmltYXRpb25GaW5pc2hlZChtX2tleWZyYW1lcy5hbmlt
YXRpb25OYW1lKCkpOworICAgICAgICBpZiAoIW1fdGFyZ2V0LT5kb2N1bWVudCgpLnJlbmRlclRy
ZWVCZWluZ0Rlc3Ryb3llZCgpKQorICAgICAgICAgICAgbV90YXJnZXQtPmludmFsaWRhdGVTdHls
ZUFuZExheWVyQ29tcG9zaXRpb24oKTsKKyAgICB9CiB9CiAKIFJlbmRlckVsZW1lbnQqIEtleWZy
YW1lRWZmZWN0OjpyZW5kZXJlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlm
cmFtZUVmZmVjdC5oCmluZGV4IGJiNDlkZmU4MGRlMWZkODM5NWE4NGU4NjY0NDA4ODQ5NjgyY2Fm
NjEuLmY2YzAyMTg2ZTg5YWMxNTliYjEzMDI1ZjMxM2Q3ZWZmODdiOWIyYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCkBAIC00NCw2ICs0NCw4IEBAIHB1Ymxp
YzoKICAgICBFbGVtZW50KiB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsg
fQogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEtleWZyYW1lcyhKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiYpOwogICAgIHZvaWQgYXBwbHlBdExvY2FsVGltZShT
ZWNvbmRzLCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdG9nZ2xlSGFyZHdhcmVD
b21wb3NpdGluZygpOworICAgIGJvb2wgaXNSdW5uaW5nV2l0aEhhcmR3YXJlQ29tcG9zaXRpbmco
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0ZWRIYXJkd2FyZUNvbXBvc2l0ZWRBbmltYXRpb247IH0K
IAogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29u
c3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNTgsMTAg
KzYwLDEzIEBAIHByaXZhdGU6CiAgICAgS2V5ZnJhbWVFZmZlY3QoRWxlbWVudCopOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHByb2Nlc3NLZXlmcmFtZXMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlN0
cm9uZzxKU0M6OkpTT2JqZWN0PiYmKTsKICAgICB2b2lkIGNvbXB1dGVTdGFja2luZ0NvbnRleHRJ
bXBhY3QoKTsKKyAgICBib29sIHNob3VsZFJ1bldpdGhIYXJkd2FyZUNvbXBvc2l0aW5nKCk7CiAK
ICAgICBSZWZQdHI8RWxlbWVudD4gbV90YXJnZXQ7CiAgICAgS2V5ZnJhbWVMaXN0IG1fa2V5ZnJh
bWVzOwogICAgIGJvb2wgbV90cmlnZ2Vyc1N0YWNraW5nQ29udGV4dCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3N0YXJ0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zdGFydGVkSGFyZHdhcmVDb21w
b3NpdGVkQW5pbWF0aW9uIHsgZmFsc2UgfTsKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCA1NGUyOTM0MzdiM2M5MDJlNWQ2MTIxNGEyMTNkZGQ4
Njc4NDg5NjJkLi5kNDcxNzg0MGFkYjJlOGEwM2E1YWRlM2E4Y2JhMjZmNzA0YmY3NThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMjQzLDYgKzI0Mywx
OCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6cmVzb2x2ZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUp
CiAgICAgICAgIG1fZWZmZWN0LT5hcHBseUF0TG9jYWxUaW1lKGN1cnJlbnRUaW1lKCkudmFsdWUo
KSwgdGFyZ2V0U3R5bGUpOwogfQogCit2b2lkIFdlYkFuaW1hdGlvbjo6aGFyZHdhcmVDb21wb3Np
dGluZ0FjdGl2ZVN0YXRlRGlkQ2hhbmdlKCkKK3sKKyAgICBpZiAobV90aW1lbGluZSAmJiBtX3Rp
bWVsaW5lLT5pc0RvY3VtZW50VGltZWxpbmUoKSkKKyAgICAgICAgZG93bmNhc3Q8RG9jdW1lbnRU
aW1lbGluZT4oKm1fdGltZWxpbmUpLmFuaW1hdGlvbkhhcmR3YXJlQ29tcG9zaXRpbmdBY3RpdmVT
dGF0ZURpZENoYW5nZSgqdGhpcyk7Cit9CisKK3ZvaWQgV2ViQW5pbWF0aW9uOjp0b2dnbGVIYXJk
d2FyZUNvbXBvc2l0aW5nKCkKK3sKKyAgICBpZiAobV9lZmZlY3QgJiYgbV9lZmZlY3QtPmlzS2V5
ZnJhbWVFZmZlY3QoKSkKKyAgICAgICAgZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KCptX2VmZmVj
dCkudG9nZ2xlSGFyZHdhcmVDb21wb3NpdGluZygpOworfQorCiBTdHJpbmcgV2ViQW5pbWF0aW9u
OjpkZXNjcmlwdGlvbigpCiB7CiAgICAgcmV0dXJuICJBbmltYXRpb24iOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCmluZGV4IDBlYjIzNmY1NmNiYjAyMjRjODY0NzllNTRl
Zjg1NjY1MWQwNWIwM2QuLjExYjJiNWNhOTg2NTExZDg0NzFhY2FiMjA3YzczZDUxZDBhMGVmOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKQEAgLTY1LDYgKzY1LDgg
QEAgcHVibGljOgogCiAgICAgU2Vjb25kcyB0aW1lVG9OZXh0UmVxdWlyZWRUaWNrKFNlY29uZHMp
IGNvbnN0OwogICAgIHZvaWQgcmVzb2x2ZShSZW5kZXJTdHlsZSYpOworICAgIHZvaWQgaGFyZHdh
cmVDb21wb3NpdGluZ0FjdGl2ZVN0YXRlRGlkQ2hhbmdlKCk7CisgICAgdm9pZCB0b2dnbGVIYXJk
d2FyZUNvbXBvc2l0aW5nKCk7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRl
eCA1ZGQwMDY1OTNmZTEwNzQ2ZmRkYTZlNmFiNjZkYjAxNmQxOWY5MzMzLi5kMjA1ZTJjNDE4YmQ4
ODJjOTNmYjRjMTYxYjAwMTc4NTBjMjdiNmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNp
bmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudFRpbWVsaW5lLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFw
aGljc0xheWVyLmgiCkBAIC0yNDcwLDYgKzI0NzEsMTMgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9i
amUKICAgICBpZiAoIShtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgJiBDaHJvbWVDbGllbnQ6OkFuaW1h
dGlvblRyaWdnZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoYXV0byogZWxl
bWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkgeworICAgICAgICBpZiAoYXV0byogdGltZWxpbmUg
PSBlbGVtZW50LT5kb2N1bWVudCgpLmV4aXN0aW5nVGltZWxpbmUoKSkgeworICAgICAgICAgICAg
aWYgKHRpbWVsaW5lLT5lbGVtZW50UnVubmluZ0FuaW1hdGlvbnNBcmVBbGxIYXJkd2FyZUNvbXBv
c2l0ZWQoKmVsZW1lbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgfQorCiAgICAgY29uc3QgQW5pbWF0aW9uQmFzZTo6UnVubmluZ1N0YXRlIGFjdGl2ZUFu
aW1hdGlvblN0YXRlID0gQW5pbWF0aW9uQmFzZTo6UnVubmluZyB8IEFuaW1hdGlvbkJhc2U6OlBh
dXNlZDsKICAgICBhdXRvJiBhbmltQ29udHJvbGxlciA9IHJlbmRlcmVyLmFuaW1hdGlvbigpOwog
ICAgIHJldHVybiAoYW5pbUNvbnRyb2xsZXIuaXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlcihy
ZW5kZXJlciwgQ1NTUHJvcGVydHlPcGFjaXR5LCBhY3RpdmVBbmltYXRpb25TdGF0ZSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAwNThmMTUxMzJhYmZjZDIxYWYxYWI3MjRhMTIxZWQxZWVhYWFmZDZiLi5kOGE3MWM4Y2JjY2Q2
NTJhMjA2ZmRhYTIxMzUxZDk4NWUyZWM2Zjg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTct
MTEtMjMgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2Vi
IEFuaW1hdGlvbnNdIFBlcmZvcm0gaGFyZHdhcmUtY29tcG9zaXRlZCBhbmltYXRpb25zIHdoZW4g
cG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3OTk3MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQ5NTM5MjI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc2VyaWVzIG9mIHRlc3Rz
IHRvIGNoZWNrIHRoYXQgd2UgdXNlIGhhcmR3YXJlLWNvbXBvc2l0aW5nIGZvciBhbmltYXRpb25z
IHdoZW4gcG9zc2libGUuCisgICAgICAgIFNwZWNpZmljYWxseSwgd2UgY2hlY2sgdGhhdDoKKyAg
ICAgICAgCisgICAgICAgIDEuIFNwZWNpZnlpbmcgYm90aCBhY2NlbGVyYXRlZCBhbmQgbm9uLWFj
Y2VsZXJhdGVkIHByb3BlcnRpZXMgZm9yIGEgc2luZ2xlIGFuaW1hdGlvbiBkb2VzICpub3QqCisg
ICAgICAgIHlpZWxkIGhhcmR3YXJlIGNvbXBvc2l0aW5nIChsZWZ0LWFuZC1vcGFjaXR5LWFuaW1h
dGlvbi15aWVsZHMtbm8tY29tcG9zaXRpbmcuaHRtbCkuCisKKyAgICAgICAgMi4gU3BlY2lmeWlu
ZyBib3RoIGFjY2VsZXJhdGVkIGFuZCBub24tYWNjZWxlcmF0ZWQgcHJvcGVydGllcyB2aWEgbXVs
dGlwbGUgYW5pbWF0aW9ucyBkb2VzICpub3QqCisgICAgICAgIHlpZWxkIGhhcmR3YXJlIGNvbXBv
c2l0aW5nICh3aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1hbmltYXRpb24teWllbGRzLW5vLWNv
bXBvc2l0aW5nLmh0bWwpLgorCisgICAgICAgIDMuIFNwZWNpZnlpbmcgb25seSBhY2NlbGVyYXRl
ZCBwcm9wZXJ0aWVzICpkb2VzKiB5aWVsZCBoYXJkd2FyZSBjb21wb3NpdGluZworICAgICAgICAo
b3BhY2l0eS1hbmltYXRpb24teWllbGRzLWNvbXBvc2l0aW5nLmh0bWwpLgorCisgICAgICAgIDQu
IEhhcmR3YXJlLWNvbXBvc2l0ZWQgYW5pbWF0aW9ucyBubyBsb25nZXIgZW5mb3JjZSBoYXJkd2Fy
ZSBjb21wb3NpdGluZyBhZnRlciB0aGVpciBjb21wbGV0aW9uCisgICAgICAgIChvcGFjaXR5LWFu
aW1hdGlvbi1uby1sb25nZXItY29tcG9zaXRlZC11cG9uLWNvbXBsZXRpb24uaHRtbCkuCisKKyAg
ICAgICAgKiB3ZWJhbmltYXRpb25zL2xlZnQtYW5kLW9wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1u
by1jb21wb3NpdGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmFuaW1hdGlv
bnMvbGVmdC1hbmQtb3BhY2l0eS1hbmltYXRpb24teWllbGRzLW5vLWNvbXBvc2l0aW5nLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYmFuaW1hdGlvbnMvb3BhY2l0eS1hbmltYXRpb24tbm8tbG9u
Z2VyLWNvbXBvc2l0ZWQtdXBvbi1jb21wbGV0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogd2ViYW5pbWF0aW9ucy9vcGFjaXR5LWFuaW1hdGlvbi1uby1sb25nZXItY29tcG9zaXRl
ZC11cG9uLWNvbXBsZXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViYW5pbWF0aW9ucy9v
cGFjaXR5LWFuaW1hdGlvbi15aWVsZHMtY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB3ZWJhbmltYXRpb25zL29wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1jb21wb3Np
dGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFj
aXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15aWVsZHMtbm8tY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFjaXR5LXNlcGFy
YXRlLWFuaW1hdGlvbi15aWVsZHMtbm8tY29tcG9zaXRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTct
MTEtMjIgIE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEVuYWJs
ZSByZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS1kaXNhYmxlZC5odG1sLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9sZWZ0LWFuZC1vcGFjaXR5LWFuaW1hdGlvbi15aWVsZHMt
bm8tY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9s
ZWZ0LWFuZC1vcGFjaXR5LWFuaW1hdGlvbi15aWVsZHMtbm8tY29tcG9zaXRpbmctZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2xlZnQtYW5kLW9w
YWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2xlZnQtYW5k
LW9wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViYW5pbWF0aW9ucy9sZWZ0LWFuZC1vcGFjaXR5LWFuaW1hdGlvbi15aWVsZHMtbm8tY29t
cG9zaXRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWU3MTEwNzAxNjM5MzM3NDI3ZjU2MWY5NTA0ZmQ3
MGYyZmQxZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9s
ZWZ0LWFuZC1vcGFjaXR5LWFuaW1hdGlvbi15aWVsZHMtbm8tY29tcG9zaXRpbmcuaHRtbApAQCAt
MCwwICsxLDE1IEBACis8cHJlIGlkPSJyZXN1bHRzIj48L3ByZT4KKzxkaXYgaWQ9InRhcmdldCIg
c3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmxh
Y2s7Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK2NvbnN0IGFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb24o
bmV3IEtleWZyYW1lRWZmZWN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSwgWwor
ICAgIHsgbGVmdDogMCwgb3BhY2l0eTogMSB9LAorICAgIHsgbGVmdDogIjEwMHB4Iiwgb3BhY2l0
eTogMCB9CitdKSk7CithbmltYXRpb24uc3RhcnRUaW1lID0gMDsKK2FuaW1hdGlvbi5lZmZlY3Qu
dGltaW5nLmR1cmF0aW9uID0gMTAwMDsKKwordGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Citkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXll
clRyZWVBc1RleHQoZG9jdW1lbnQpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmFuaW1hdGlvbnMvb3BhY2l0eS1hbmltYXRpb24tbm8tbG9uZ2VyLWNvbXBvc2l0ZWQt
dXBvbi1jb21wbGV0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMv
b3BhY2l0eS1hbmltYXRpb24tbm8tbG9uZ2VyLWNvbXBvc2l0ZWQtdXBvbi1jb21wbGV0aW9uLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRl
ZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9vcGFj
aXR5LWFuaW1hdGlvbi1uby1sb25nZXItY29tcG9zaXRlZC11cG9uLWNvbXBsZXRpb24tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0
aW9ucy9vcGFjaXR5LWFuaW1hdGlvbi1uby1sb25nZXItY29tcG9zaXRlZC11cG9uLWNvbXBsZXRp
b24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvb3BhY2l0eS1hbmltYXRpb24tbm8t
bG9uZ2VyLWNvbXBvc2l0ZWQtdXBvbi1jb21wbGV0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTEyNmYz
MzczOThlOWIzYmM2MTI0N2U3MmJiMGE4YzBiY2IzMjIyYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvb3BhY2l0eS1hbmltYXRpb24tbm8tbG9uZ2VyLWNvbXBv
c2l0ZWQtdXBvbi1jb21wbGV0aW9uLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPHByZSBpZD0icmVz
dWx0cyI+PC9wcmU+Cis8ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdo
dDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyI+PC9kaXY+Cis8c2NyaXB0PgorCitj
b25zdCBhbmltYXRpb24gPSBuZXcgQW5pbWF0aW9uKG5ldyBLZXlmcmFtZUVmZmVjdChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIFsKKyAgICB7IG9wYWNpdHk6IDEgfSwKKyAgICB7
IG9wYWNpdHk6IDAgfQorXSkpOworYW5pbWF0aW9uLnN0YXJ0VGltZSA9IDA7CithbmltYXRpb24u
ZWZmZWN0LnRpbWluZy5kdXJhdGlvbiA9IDEwMDsKKwordGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Cit0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworc2V0VGltZW91dCgoKSA9PiB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5pbm5lclRleHQgPSBpbnRlcm5hbHMu
bGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
K30sIGFuaW1hdGlvbi5lZmZlY3QudGltaW5nLmR1cmF0aW9uICsgNTAwKTsKKworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL29wYWNpdHktYW5pbWF0aW9u
LXlpZWxkcy1jb21wb3NpdGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRp
b25zL29wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1jb21wb3NpdGluZy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmZjNmQwMDQ3MjVjZTgyMDQzODZmZDkwZmI5YmVhYWRlYjI2YjUyMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvb3BhY2l0eS1hbmltYXRpb24t
eWllbGRzLWNvbXBvc2l0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACisoR3JhcGhp
Y3NMYXllcgorICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQor
ICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2
MDAuMDApCisgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgIChjaGlsZHJlbiAxCisgICAg
ICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgOC4wMCkKKyAgICAg
ICAgICAoYm91bmRzIDEwMC4wMCAxMDAuMDApCisgICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEp
CisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViYW5pbWF0aW9ucy9vcGFjaXR5LWFuaW1hdGlvbi15aWVsZHMtY29tcG9zaXRpbmcu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvb3BhY2l0eS1hbmltYXRpb24teWllbGRz
LWNvbXBvc2l0aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTkzMmM4N2Y0ZmNhOTY2OTI1OGJlODM2ZjBk
MWNmODE1NTNjMjEwMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlv
bnMvb3BhY2l0eS1hbmltYXRpb24teWllbGRzLWNvbXBvc2l0aW5nLmh0bWwKQEAgLTAsMCArMSwx
NSBAQAorPHByZSBpZD0icmVzdWx0cyI+PC9wcmU+Cis8ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSJ3
aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyI+PC9k
aXY+Cis8c2NyaXB0PgorCitjb25zdCBhbmltYXRpb24gPSBuZXcgQW5pbWF0aW9uKG5ldyBLZXlm
cmFtZUVmZmVjdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIFsKKyAgICB7IG9w
YWNpdHk6IDEgfSwKKyAgICB7IG9wYWNpdHk6IDAgfQorXSkpOworYW5pbWF0aW9uLnN0YXJ0VGlt
ZSA9IDA7CithbmltYXRpb24uZWZmZWN0LnRpbWluZy5kdXJhdGlvbiA9IDEwMDA7CisKK3Rlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5p
bm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFj
aXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15aWVsZHMtbm8tY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1h
bmltYXRpb24teWllbGRzLW5vLWNvbXBvc2l0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1h
bmltYXRpb24teWllbGRzLW5vLWNvbXBvc2l0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBA
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvd2lkdGgtYW5kLW9wYWNp
dHktc2VwYXJhdGUtYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1hbmltYXRpb24t
eWllbGRzLW5vLWNvbXBvc2l0aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JiNGQ3YzlhMDI5ZDg1Yjdj
ZmIzMDQ2ZGY4YzQ1NjIwMjgxZGUxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmFuaW1hdGlvbnMvd2lkdGgtYW5kLW9wYWNpdHktc2VwYXJhdGUtYW5pbWF0aW9uLXlpZWxkcy1u
by1jb21wb3NpdGluZy5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzxwcmUgaWQ9InJlc3VsdHMiPjwv
cHJlPgorPGRpdiBpZD0idGFyZ2V0IiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsiPjwvZGl2PgorPHNjcmlwdD4KKworY29uc3Qgb3Bh
Y2l0eUFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb24obmV3IEtleWZyYW1lRWZmZWN0KGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSwgWworICAgIHsgb3BhY2l0eTogMSB9LAorICAgIHsg
b3BhY2l0eTogMCB9CitdKSk7CitvcGFjaXR5QW5pbWF0aW9uLnN0YXJ0VGltZSA9IDA7CitvcGFj
aXR5QW5pbWF0aW9uLmVmZmVjdC50aW1pbmcuZHVyYXRpb24gPSAxMDAwOworCitjb25zdCB3aWR0
aEFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb24obmV3IEtleWZyYW1lRWZmZWN0KGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSwgWworICAgIHsgd2lkdGg6ICIxMDBweCIgfSwKKyAgICB7
IHdpZHRoOiAiMjAwcHgiIH0KK10pKTsKK3dpZHRoQW5pbWF0aW9uLnN0YXJ0VGltZSA9IDA7Cit3
aWR0aEFuaW1hdGlvbi5lZmZlY3QudGltaW5nLmR1cmF0aW9uID0gMTAwMDsKKwordGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmlubmVy
VGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworCis8L3NjcmlwdD4K
</data>
<flag name="review"
          id="346720"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>