<?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>171060</bug_id>
          
          <creation_ts>2017-04-20 09:41:43 -0700</creation_ts>
          <short_desc>REGRESSION (r215469): [ios-simulator-wk2] LayoutTest compositing/animation/animation-backing.html is a flaky failure</short_desc>
          <delta_ts>2017-04-25 12:20:23 -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="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1299139</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-04-20 09:41:43 -0700</bug_when>
    <thetext>[ios-simulator] LayoutTest compositing/animation/animation-backing.html is a flaky failure

https://build.webkit.org/results/Apple%20iOS%2010%20Simulator%20Release%20WK2%20(Tests)/r215557%20(805)/results.html

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=compositing%2Fanimation%2Fanimation-backing.html

--- /Volumes/Data/slave/ios-simulator-10-release-tests-wk2/build/layout-test-results/compositing/animation/animation-backing-expected.txt
+++ /Volumes/Data/slave/ios-simulator-10-release-tests-wk2/build/layout-test-results/compositing/animation/animation-backing-actual.txt
@@ -1 +1 @@
-Saw layer flushes during animation: PASS
+No layer flushes during animation: FAIL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299141</commentid>
    <comment_count>1</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-04-20 09:44:51 -0700</bug_when>
    <thetext>It looks like this regressed with &quot;Enable optimized layer flushes on iOS&quot; https://trac.webkit.org/changeset/215469/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299276</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-20 13:43:38 -0700</bug_when>
    <thetext>I&apos;ll take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299586</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-04-21 03:56:26 -0700</bug_when>
    <thetext>The flush needs to travers tiled layers under animating layers, because we have to recompute the coverage rect as the animation runs.

After your changes, how do we ensure the recomputation of coverage rects on all layers with scrolling etc, which is used to drop backing store outside the viewport, and compute the right tiling for tiled layers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299606</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-21 05:50:54 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; The flush needs to travers tiled layers under animating layers, because we
&gt; have to recompute the coverage rect as the animation runs.
&gt; 
&gt; After your changes, how do we ensure the recomputation of coverage rects on
&gt; all layers with scrolling etc, which is used to drop backing store outside
&gt; the viewport, and compute the right tiling for tiled layers?

We traverse all descendants if coverage rect changes. For scrolling we take care to invalidate the scrolling layers so coverage gets recomputed. I assume we are missing or misoptimizing some invalidation with animations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299607</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-21 05:59:35 -0700</bug_when>
    <thetext>We can probably just invalidate all layers with accelerated animations in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299694</commentid>
    <comment_count>6</comment_count>
      <attachid>307750</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-21 10:53:18 -0700</bug_when>
    <thetext>Created attachment 307750
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299870</commentid>
    <comment_count>7</comment_count>
      <attachid>307750</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-04-21 14:04:55 -0700</bug_when>
    <thetext>Comment on attachment 307750
patch

I don&apos;t think you need all this. We already have CommitState.ancestorHasTransformAnimation, why can&apos;t you key off of that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299937</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-21 15:21:52 -0700</bug_when>
    <thetext>Possibly. What I need is answer to &quot;Does this layer have any descendants with accelerated transform animations?&quot; Do we have this somewhere already? 

Cleary I could just traverse the entire layer tree but that is much slower than what the patch does (just traverses the active animations).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300078</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-04-21 19:49:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/31771174&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300169</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-04-22 02:17:10 -0700</bug_when>
    <thetext>Should be easy to add &quot;descendant has accelerated transform animation&quot; as a post-traversal bit set. I would prefer to keep this code in GraphicsLayerCA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300174</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-22 02:26:33 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #10)
&gt; Should be easy to add &quot;descendant has accelerated transform animation&quot; as a
&gt; post-traversal bit set. I would prefer to keep this code in GraphicsLayerCA.

Yeah, should be doable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300471</commentid>
    <comment_count>12</comment_count>
      <attachid>307968</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-24 06:00:49 -0700</bug_when>
    <thetext>Created attachment 307968
patch

GraphicsLayerCA only (almost) patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301032</commentid>
    <comment_count>13</comment_count>
      <attachid>307968</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-04-25 08:46:35 -0700</bug_when>
    <thetext>Comment on attachment 307968
patch

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

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:961
&gt; +    bool hasAcceleratedTransformAnimation = renderer().animation().isRunningAcceleratedAnimationOnRenderer(renderer(), CSSPropertyTransform, AnimationBase::Running | AnimationBase::Paused);
&gt; +    m_graphicsLayer-&gt;setHasAcceleratedTransformAnimation(hasAcceleratedTransformAnimation);
&gt; +    if (!hasAcceleratedTransformAnimation)

I don&apos;t think you need to set this from outside of GraphicsLayer(CA). GraphicsLayerCA::isRunningTransformAnimation() knows this, and GraphicsLayerCA::updateAnimations() can set or clear the state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301117</commentid>
    <comment_count>14</comment_count>
      <attachid>308117</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-04-25 11:02:53 -0700</bug_when>
    <thetext>Created attachment 308117
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301152</commentid>
    <comment_count>15</comment_count>
      <attachid>308117</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-25 12:20:21 -0700</bug_when>
    <thetext>Comment on attachment 308117
patch

Clearing flags on attachment: 308117

Committed r215750: &lt;http://trac.webkit.org/changeset/215750&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301153</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-25 12:20:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307750</attachid>
            <date>2017-04-21 10:53:18 -0700</date>
            <delta_ts>2017-04-24 06:00:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>accelerated-animation-layer-invalidation.patch</filename>
            <type>text/plain</type>
            <size>11453</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTYxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA0LTIxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjE1NDY5
KTogW2lvcy1zaW11bGF0b3Itd2syXSBMYXlvdXRUZXN0IGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9h
bmltYXRpb24tYmFja2luZy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMDYwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBt
YXkgY2hhbmdlIGxheWVyIGdlb21ldHJ5IHdpdGhvdSBHcmFwaGljc0xheWVyIHVwZGF0ZXMuIFdl
IG5lZWQgdG8gaW52YWxpZGF0ZQorICAgICAgICBsYXllcnMgd2l0aCBzdWNoIGFuaW1hdGlvbnMg
ZXhwbGljaXRseSBzbyB0aGVpciBjb3ZlcmFnZSByZWN0cyBhbmQgdGlsaW5nIGlzIHVwZGF0ZWQu
CisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpyZW5kZXJl
cnNXaXRoQWNjZWxlcmF0ZWRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0FuaW1h
dGlvbkNvbnRyb2xsZXI6OnJlbmRlcmVyc1dpdGhBY2NlbGVyYXRlZEFuaW1hdGlvbnMpOgorCisg
ICAgICAgICAgICBBZGQgYSB3YXkgdG8gZ2V0IHRoZSBjdXJyZW50IGFjY2VsZXJhdGVkIGFuaW1h
dGlvbnMuCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVy
Lmg6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZh
dGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXROZWVkc0NvbXB1dGVWaXNpYmxlQW5kQ292
ZXJhZ2VSZWN0KToKKworICAgICAgICAgICAgRXhwb3NlIGNvdmVyYWdlIHJlY3QgaW52YWxpZGF0
aW9uIGJpdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnN5bmNQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldEFwcHJveGltYXRlUG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzeW5jQm91bmRzT3JpZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0TmVlZHNDb21wdXRlVmlz
aWJsZUFuZENvdmVyYWdlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZsdXNoUGVu
ZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmludmFsaWRhdGVDb3ZlcmFnZVJlY3RzRm9yQWNjZWxlcmF0ZWRBbmltYXRpb25zQmVmb3Jl
Rmx1c2gpOgorCisgICAgICAgICAgICBCZWZvcmUgZmx1c2gsIGludmFsaWRhdGUgY292ZXJhZ2Ug
cmVjdCBmb3IgYW55IGFjY2VsZXJhdGVkIHRyYW5zZm9ybSBhbmltYXRpb25zIGluIHByb2dyZXNz
LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDE3
LTA0LTIxICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAg
ICBbY21ha2VdIFdURiB0YXJnZXQgc2hvdWxkIG5vdCBoYXZlIHd0ZiBhbmQgc3ViZGlyZWN0cmll
cyBpbiBwdWJsaWMgaW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gMjE1
NTExKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTYgQEAgYm9vbCBDU1NBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6aXNSdQogICAgIHJldHVybiBhbmltYXRpb24uaXNBbmlt
YXRpbmdQcm9wZXJ0eShwcm9wZXJ0eSwgdHJ1ZSwgcnVubmluZ1N0YXRlKTsKIH0KIAorVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4+IENTU0FuaW1h
dGlvbkNvbnRyb2xsZXJQcml2YXRlOjpyZW5kZXJlcnNXaXRoQWNjZWxlcmF0ZWRBbmltYXRpb25z
KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCit7CisgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIGFu
aW1hdGlvbiA6IG1fY29tcG9zaXRlQW5pbWF0aW9ucykgeworICAgICAgICBpZiAoYW5pbWF0aW9u
LnZhbHVlLT5pc0FuaW1hdGluZ1Byb3BlcnR5KHByb3BlcnR5LCAvKmFjY2VsZXJhdGVkT25seSov
IHRydWUsIEFuaW1hdGlvbkJhc2U6OlJ1bm5pbmcpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqYW5pbWF0aW9uLmtleSkpOworICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlOjp1cGRhdGVUaHJvdHRsaW5nU3RhdGUoKQogewogICAgIHVwZGF0ZUFuaW1hdGlvblRp
bWVyKCk7CkBAIC03MTUsNiArNzI1LDExIEBAIGJvb2wgQ1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6
aXNSdW5uaW5nQWMKICAgICByZXR1cm4gcmVuZGVyZXIuaXNDU1NBbmltYXRpbmcoKSAmJiBtX2Rh
dGEtPmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihyZW5kZXJlciwgcHJv
cGVydHksIHJ1bm5pbmdTdGF0ZSk7CiB9CiAKK1ZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+PiBDU1NBbmltYXRpb25Db250cm9sbGVyOjpyZW5kZXJl
cnNXaXRoQWNjZWxlcmF0ZWRBbmltYXRpb25zKENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCit7Cisg
ICAgcmV0dXJuIG1fZGF0YS0+cmVuZGVyZXJzV2l0aEFjY2VsZXJhdGVkQW5pbWF0aW9ucyhwcm9w
ZXJ0eSk7Cit9CisKIGJvb2wgQ1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6aXNTdXNwZW5kZWQoKSBj
b25zdAogewogICAgIHJldHVybiBtX2RhdGEtPmlzU3VzcGVuZGVkKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxl
ci5oCShyZXZpc2lvbiAyMTU1MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
U1NBbmltYXRpb25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAg
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgTGF5b3V0UmVjdDsKIGNsYXNzIFJl
bmRlckVsZW1lbnQ7CitjbGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVy
U3R5bGU7CiAKIGNsYXNzIENTU0FuaW1hdGlvbkNvbnRyb2xsZXIgewpAQCAtNjcsNiArNjgsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVs
ZW1lbnQmLCBDU1NQcm9wZXJ0eUlELCBBbmltYXRpb25CYXNlOjpSdW5uaW5nU3RhdGUpIGNvbnN0
OwogICAgIGJvb2wgaXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyKFJlbmRl
ckVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlELCBBbmltYXRpb25CYXNlOjpSdW5uaW5nU3RhdGUpIGNv
bnN0OwogCisgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdD4+IHJlbmRlcmVyc1dpdGhBY2NlbGVyYXRlZEFuaW1hdGlvbnMoQ1NTUHJvcGVydHlJ
RCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzU3VzcGVuZGVkKCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucygpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZS5oCShyZXZpc2lvbiAyMTU1MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
U1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbXBvc2l0ZUFuaW1hdGlvbjsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7CitjbGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0
OwogCiBlbnVtIFNldENoYW5nZWQgeyBEb05vdENhbGxTZXRDaGFuZ2VkLCBDYWxsU2V0Q2hhbmdl
ZCB9OwogCkBAIC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzUnVubmluZ0FuaW1h
dGlvbk9uUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYsIENTU1Byb3BlcnR5SUQsIEFuaW1hdGlvbkJh
c2U6OlJ1bm5pbmdTdGF0ZSkgY29uc3Q7CiAgICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVyYXRlZEFu
aW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYsIENTU1Byb3BlcnR5SUQsIEFuaW1hdGlv
bkJhc2U6OlJ1bm5pbmdTdGF0ZSkgY29uc3Q7CiAKKyAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxSZW5kZXJMYXllck1vZGVsT2JqZWN0Pj4gcmVuZGVyZXJzV2l0aEFjY2VsZXJhdGVk
QW5pbWF0aW9ucyhDU1NQcm9wZXJ0eUlEKTsKKwogICAgIGJvb2wgcGF1c2VBbmltYXRpb25BdFRp
bWUoUmVuZGVyRWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgZG91YmxlIHQpOwog
ICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lKFJlbmRlckVsZW1lbnQqLCBjb25zdCBTdHJp
bmcmIHByb3BlcnR5LCBkb3VibGUgdCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmlt
YXRpb25zKERvY3VtZW50KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAyMTU1MTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzMiw2ICs1MzIsOCBAQCBwdWJsaWM6CiAgICAgLy8gZm9yIGV4YW1wbGUgdG8gYWxs
b2NhdGUgbmV3IHRpbGVzLgogICAgIHZpcnR1YWwgYm9vbCB2aXNpYmxlUmVjdENoYW5nZVJlcXVp
cmVzRmx1c2goY29uc3QgRmxvYXRSZWN0JiAvKiBjbGlwUmVjdCAqLykgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0NvbXB1dGVWaXNpYmxlQW5kQ292
ZXJhZ2VSZWN0KCkgeyB9CisKICAgICAvLyBSZXR1cm4gYSBzdHJpbmcgd2l0aCBhIGh1bWFuIHJl
YWRhYmxlIGZvcm0gb2YgdGhlIGxheWVyIHRyZWUsIElmIGRlYnVnIGlzIHRydWUKICAgICAvLyBw
b2ludGVycyBmb3IgdGhlIGxheWVycyBhbmQgdGltaW5nIGRhdGEgd2lsbCBiZSBpbmNsdWRlZCBp
biB0aGUgcmV0dXJuZWQgc3RyaW5nLgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYXllclRy
ZWVBc1RleHQoTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IgPSBMYXllclRyZWVBc1RleHRCZWhhdmlv
ck5vcm1hbCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDIxNTUxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4OCw3ICs1ODgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c3luY1Bvc2l0aW9uKGNvbnN0CiAKICAgICBHcmFwaGljc0xheWVyOjpzeW5jUG9zaXRpb24ocG9p
bnQpOwogICAgIC8vIEVuc3VyZSBmdXR1cmUgZmx1c2hlcyB3aWxsIHJlY29tcHV0ZSB0aGUgY292
ZXJhZ2UgcmVjdCBhbmQgdXBkYXRlIHRpbGluZy4KLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQoTmVlZHNDb21wdXRlVmlzaWJsZUFuZENvdmVyYWdlUmVjdCwgRG9udFNjaGVkdWxlRmx1c2gp
OworICAgIHNldE5lZWRzQ29tcHV0ZVZpc2libGVBbmRDb3ZlcmFnZVJlY3QoKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldEFwcHJveGltYXRlUG9zaXRpb24oY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQpCkBAIC01OTgsNyArNTk4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFw
cHJveGltYXRlUG9zaQogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0QXBwcm94aW1hdGVQb3NpdGlv
bihwb2ludCk7CiAgICAgLy8gRW5zdXJlIGZ1dHVyZSBmbHVzaGVzIHdpbGwgcmVjb21wdXRlIHRo
ZSBjb3ZlcmFnZSByZWN0IGFuZCB1cGRhdGUgdGlsaW5nLgotICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZChOZWVkc0NvbXB1dGVWaXNpYmxlQW5kQ292ZXJhZ2VSZWN0LCBEb250U2NoZWR1bGVG
bHVzaCk7CisgICAgc2V0TmVlZHNDb21wdXRlVmlzaWJsZUFuZENvdmVyYWdlUmVjdCgpOwogfQog
CiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNE
JiBwb2ludCkKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3luY0Jv
dW5kc09yaWdpbihjCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnN5bmNC
b3VuZHNPcmlnaW4ob3JpZ2luKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTmVlZHND
b21wdXRlVmlzaWJsZUFuZENvdmVyYWdlUmVjdCwgRG9udFNjaGVkdWxlRmx1c2gpOworICAgIHNl
dE5lZWRzQ29tcHV0ZVZpc2libGVBbmRDb3ZlcmFnZVJlY3QoKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKQEAg
LTE0MTAsNiArMTQxMCwxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENv
dmVyCiAgICAgfQogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TmVlZHNDb21wdXRlVmlz
aWJsZUFuZENvdmVyYWdlUmVjdCgpCit7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE5l
ZWRzQ29tcHV0ZVZpc2libGVBbmRDb3ZlcmFnZVJlY3QsIERvbnRTY2hlZHVsZUZsdXNoKTsKK30K
KwogLy8gcm9vdFJlbGF0aXZlVHJhbnNmb3JtRm9yU2NhbGluZyBpcyBhIHRyYW5zZm9ybSBmcm9t
IHRoZSByb290LCBidXQgZm9yIGxheWVycyB3aXRoIHRyYW5zZm9ybSBhbmltYXRpb25zLCBpdCBj
aGVycnktcGlja2VkIHRoZSBzdGF0ZSBvZiB0aGUKIC8vIGFuaW1hdGlvbiB0aGF0IGNvbnRyaWJ1
dGVzIG1heGltYWxseSB0byB0aGUgc2NhbGUgKG9uIGV2ZXJ5IGxheWVyIHdpdGggYW5pbWF0aW9u
cyBkb3duIHRoZSBoaWVyYXJjaHkpLgogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNv
bW1pdENoYW5nZXMoY29uc3QgQ29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlLCBjb25zdCBUcmFuc2Zv
cm1TdGF0ZSYgc3RhdGUsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgRmxvYXRQb2ludCYg
cG9zaXRpb25SZWxhdGl2ZVRvQmFzZSwgYm9vbCBhZmZlY3RlZEJ5UGFnZVNjYWxlKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmgJKHJldmlzaW9uIDIxNTUxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNyArMzEw
LDkgQEAgcHJpdmF0ZToKICAgICBjb25zdCBGbG9hdFJlY3QmIGNvdmVyYWdlUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fY292ZXJhZ2VSZWN0OyB9CiAKICAgICB2b2lkIHNldFZpc2libGVBbmRDb3Zl
cmFnZVJlY3RzKGNvbnN0IFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzJiwgYm9vbCBpc1ZpZXdwb3J0
Q29uc3RyYWluZWQpOwotICAgIAorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROZWVkc0Nv
bXB1dGVWaXNpYmxlQW5kQ292ZXJhZ2VSZWN0KCkgb3ZlcnJpZGU7CisKICAgICBzdGF0aWMgRmxv
YXRSZWN0IGFkanVzdFRpbGVkTGF5ZXJWaXNpYmxlUmVjdChUaWxlZEJhY2tpbmcqLCBjb25zdCBG
bG9hdFJlY3QmIG9sZFZpc2libGVSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG5ld1Zpc2libGVSZWN0
LCBjb25zdCBGbG9hdFNpemUmIG9sZFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgbmV3U2l6ZSk7CiAK
ICAgICBib29sIHJlY3Vyc2l2ZVZpc2libGVSZWN0Q2hhbmdlUmVxdWlyZXNGbHVzaChjb25zdCBU
cmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9uIDIxNTUxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MzEsNiArNDMxLDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZs
dXNoUGVuZGluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaW52YWxpZGF0ZUNvdmVy
YWdlUmVjdHNGb3JBY2NlbGVyYXRlZEFuaW1hdGlvbnNCZWZvcmVGbHVzaCgpOworCiAgICAgRnJh
bWVWaWV3JiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCk7CiAgICAgQW5pbWF0
aW9uVXBkYXRlQmxvY2sgYW5pbWF0aW9uVXBkYXRlQmxvY2soJmZyYW1lVmlldy5mcmFtZSgpLmFu
aW1hdGlvbigpKTsKIApAQCAtNDcxLDYgKzQ3MywxNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6Zmx1c2hQZW5kaW5nCiAgICAgc3RhcnRMYXllckZsdXNoVGltZXJJZk5lZWRlZCgpOwog
fQogCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6aW52YWxpZGF0ZUNvdmVyYWdlUmVjdHNG
b3JBY2NlbGVyYXRlZEFuaW1hdGlvbnNCZWZvcmVGbHVzaCgpCit7CisgICAgLy8gQWNjZWxhcmF0
ZWQgdHJhbmZvcm1zIG11dGF0ZSBsYXllciBnZW9tZXRyeSB3aXRob3V0IEdyYXBoaWNzTGF5ZXIg
a25vd2luZyBhYm91dCBpdC4gRW5zdXJlIHdlIHJlY29tcHV0ZSBjb3ZlcmFnZSBkdXJpbmcgZmx1
c2guCisgICAgYXV0byYgYW5pbWF0aW9uQ29udHJvbGxlciA9IG1fcmVuZGVyVmlldy5mcmFtZVZp
ZXcoKS5mcmFtZSgpLmFuaW1hdGlvbigpOworICAgIGF1dG8gcmVuZGVyZXJzV2l0aEFjY2VsZXJh
dGVkVHJhbnNmb3JtQW5pbWF0aW9ucyA9IGFuaW1hdGlvbkNvbnRyb2xsZXIucmVuZGVyZXJzV2l0
aEFjY2VsZXJhdGVkQW5pbWF0aW9ucyhDU1NQcm9wZXJ0eVRyYW5zZm9ybSk7CisgICAgZm9yIChh
dXRvJiByZW5kZXJlciA6IHJlbmRlcmVyc1dpdGhBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlv
bnMpIHsKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tpbmcgPSByZW5kZXJlci5nZXQoKS5sYXllcigp
LT5iYWNraW5nKCkpCisgICAgICAgICAgICBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnNldE5l
ZWRzQ29tcHV0ZVZpc2libGVBbmRDb3ZlcmFnZVJlY3QoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxDb29yZGluYXRlZExheWVyc0FmdGVyRmx1
c2hJbmNsdWRpbmdTdWJmcmFtZXMoKQogewogICAgIHVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5
ZXJzQWZ0ZXJGbHVzaCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuaAkocmV2aXNpb24gMjE1NTExKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MDgsNiArNDA4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUlGcmFtZXNPZkNvbXBvc2l0
aW5nQ2hhbmdlKCk7CiAKICAgICBib29sIGlzRmx1c2hpbmdMYXllcnMoKSBjb25zdCB7IHJldHVy
biBtX2ZsdXNoaW5nTGF5ZXJzOyB9CisgICAgdm9pZCBpbnZhbGlkYXRlQ292ZXJhZ2VSZWN0c0Zv
ckFjY2VsZXJhdGVkQW5pbWF0aW9uc0JlZm9yZUZsdXNoKCk7CiAgICAgdm9pZCB1cGRhdGVTY3Jv
bGxDb29yZGluYXRlZExheWVyc0FmdGVyRmx1c2hJbmNsdWRpbmdTdWJmcmFtZXMoKTsKICAgICB2
b2lkIHVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXJzQWZ0ZXJGbHVzaCgpOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307968</attachid>
            <date>2017-04-24 06:00:49 -0700</date>
            <delta_ts>2017-04-25 11:02:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>accelerated-animation-layer-invalidation-3.patch</filename>
            <type>text/plain</type>
            <size>9854</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA0LTI0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjE1NDY5
KTogW2lvcy1zaW11bGF0b3Itd2syXSBMYXlvdXRUZXN0IGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9h
bmltYXRpb24tYmFja2luZy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMDYwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zMTc3MTE3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBY2NlbGVyYXRlZCB0cmFuc2Zvcm0gYW5pbWF0aW9ucyBtb3ZlIHVuZGVybHlp
bmcgbGF5ZXJzIHdpdGhvdXQgaW52YWxpZGF0aW5nIEdyYXBoaWNzTGF5ZXJzLgorICAgICAgICBU
byB1cGRhdGUgdGlsZSBjb3ZlcmFnZSB3ZSBuZWVkIHRvIGNvbW1pdCBzdWNoIHN1YnRyZWVzIGV2
ZW4gaWYgdGhlcmUgYXJlIG5vdCBvdGhlciBjaGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6c2V0SGFzQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OkdyYXBoaWNzTGF5ZXJDQSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6Om5lZWRzQ29tbWl0KToKKworICAgICAgICAgICAgQ29tbWl0IHN1YnRyZWVz
IHdpdGggYWNjZWxlcmF0ZWQgdHJhbnNmb3JtIGFuaW1hdGlvbnMuCisgICAgICAgICAgICBGYWN0
b3IgaW50byBhIGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOgorCisgICAgICAgICAgICBUcmFjayBpZiBkZXNjZW5k
YW50cyBoYWQgYW55IGFjY2VsZXJhdGVkIHRyYW5zZm9ybSBhbmltYXRpb25zLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ0E6Omhhc0FjY2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9uKToK
KworICAgICAgICAgICAgSW52YWxpZGF0ZSB0aGUgY292ZXJhZ2Ugd2hlbiB0aGUgc3RhdHVzIGNo
YW5nZXMuIFRoZSBmdXR1cmUgY29tbWl0IHdpbGwgdXBkYXRlCisgICAgICAgICAgICB0aGUgZGVj
ZW5kYW50IGJpdHMuCisKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6aGFzRGVz
Y2VuZGFudHNXaXRoQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRIYXNEZXNjZW5kYW50c1dpdGhBY2NlbGVyYXRlZFRy
YW5zZm9ybUFuaW1hdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdlb21l
dHJ5KToKKworICAgICAgICAgICAgVGVsbCBHcmFwaGljc0xheWVyIHRoYXQgaXQgaGFzIGFuIGFj
Y2VsZXJhdGVkIHRyYW5zZm9ybSBhbmltYXRpb24uCisKIDIwMTctMDQtMjMgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIyMTU2NTcgYW5kIHIyMTU2NzYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAyMTU1MTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0Myw2ICs1NDMsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCBib29sIGlzVHJhY2tpbmdEaXNwbGF5TGlzdFJlcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNUcmFja2luZ0Rpc3BsYXlMaXN0UmVwbGF5OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBTdHJpbmcgcmVwbGF5RGlzcGxheUxpc3RBc1RleHQoRGlzcGxheUxpc3Q6OkFzVGV4dEZsYWdz
KSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogCisgICAgdmlydHVhbCB2b2lkIHNldEhhc0Fj
Y2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9uKGJvb2wpIHsgfQorCiAgICAgLy8gUmV0dXJuIGFu
IGVzdGltYXRlIG9mIHRoZSBiYWNraW5nIHN0b3JlIG1lbW9yeSBjb3N0IChpbiBieXRlcykuIE1h
eSBiZSBpbmNvcnJlY3QgZm9yIHRpbGVkIGxheWVycy4KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpIGNvbnN0OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAJKHJldmlzaW9uIDIxNTUxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MCwx
MSArMzkwLDYgQEAgc3RhdGljIExheWVyRGlzcGxheUxpc3RIYXNoTWFwJiBsYXllckRpcwogCiBH
cmFwaGljc0xheWVyQ0E6OkdyYXBoaWNzTGF5ZXJDQShUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NM
YXllckNsaWVudCYgY2xpZW50KQogICAgIDogR3JhcGhpY3NMYXllcihsYXllclR5cGUsIGNsaWVu
dCkKLSAgICAsIG1fbmVlZHNGdWxsUmVwYWludChmYWxzZSkKLSAgICAsIG1fdXNpbmdCYWNrZHJv
cExheWVyVHlwZShmYWxzZSkKLSAgICAsIG1faXNWaWV3cG9ydENvbnN0cmFpbmVkKGZhbHNlKQot
ICAgICwgbV9pbnRlcnNlY3RzQ292ZXJhZ2VSZWN0KGZhbHNlKQotICAgICwgbV9oYXNFdmVyUGFp
bnRlZChmYWxzZSkKIHsKIH0KIApAQCAtMTQxMCwxMSArMTQwNSwyOCBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyCiAgICAgfQogfQogCitib29sIEdyYXBoaWNzTGF5
ZXJDQTo6bmVlZHNDb21taXQoY29uc3QgQ29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlKQoreworICAg
IGlmIChjb21taXRTdGF0ZS5hbmNlc3RvckhhZENoYW5nZXMpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcykKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKGhhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcygpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAvLyBBY2NlbGVyYXRlZCB0cmFuc2Zvcm1zIG1vdmUgdGhlIHVuZGVy
bHlpbmcgbGF5ZXJzIHdpdGhvdXQgR3JhcGhpY3NMYXllcnMgZ2V0dGluZyBpbnZhbGlkYXRlZC4K
KyAgICBpZiAoaGFzQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24oKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKGhhc0Rlc2NlbmRhbnRzV2l0aEFjY2VsZXJhdGVkVHJhbnNmb3Jt
QW5pbWF0aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiAvLyByb290UmVsYXRpdmVUcmFuc2Zvcm1Gb3JTY2FsaW5nIGlzIGEgdHJhbnNmb3JtIGZy
b20gdGhlIHJvb3QsIGJ1dCBmb3IgbGF5ZXJzIHdpdGggdHJhbnNmb3JtIGFuaW1hdGlvbnMsIGl0
IGNoZXJyeS1waWNrZWQgdGhlIHN0YXRlIG9mIHRoZQogLy8gYW5pbWF0aW9uIHRoYXQgY29udHJp
YnV0ZXMgbWF4aW1hbGx5IHRvIHRoZSBzY2FsZSAob24gZXZlcnkgbGF5ZXIgd2l0aCBhbmltYXRp
b25zIGRvd24gdGhlIGhpZXJhcmNoeSkuCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZl
Q29tbWl0Q2hhbmdlcyhjb25zdCBDb21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYW5z
Zm9ybVN0YXRlJiBzdGF0ZSwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBGbG9hdFBvaW50
JiBwb3NpdGlvblJlbGF0aXZlVG9CYXNlLCBib29sIGFmZmVjdGVkQnlQYWdlU2NhbGUpCiB7Ci0g
ICAgaWYgKCFjb21taXRTdGF0ZS5hbmNlc3RvckhhZENoYW5nZXMgJiYgIW1fdW5jb21taXR0ZWRD
aGFuZ2VzICYmICFoYXNEZXNjZW5kYW50c1dpdGhVbmNvbW1pdHRlZENoYW5nZXMoKSkKKyAgICBp
ZiAoIW5lZWRzQ29tbWl0KGNvbW1pdFN0YXRlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHJh
bnNmb3JtU3RhdGUgbG9jYWxTdGF0ZSA9IHN0YXRlOwpAQCAtMTQ4NywxMCArMTQ5OSwxNSBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhCiAKICAgICBjb25zdCBWZWN0
b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExheWVycyA9IGNoaWxkcmVuKCk7CiAgICAgc2l6ZV90
IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgpOworCisgICAgYm9vbCBoYXNEZXNjZW5k
YW50c1dpdGhBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbiA9IGZhbHNlOwogICAgIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewogICAgICAgICBHcmFw
aGljc0xheWVyQ0EmIGN1cnJlbnRDaGlsZCA9IGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4oKmNo
aWxkTGF5ZXJzW2ldKTsKICAgICAgICAgY3VycmVudENoaWxkLnJlY3Vyc2l2ZUNvbW1pdENoYW5n
ZXMoY2hpbGRDb21taXRTdGF0ZSwgbG9jYWxTdGF0ZSwgcGFnZVNjYWxlRmFjdG9yLCBiYXNlUmVs
YXRpdmVQb3NpdGlvbiwgYWZmZWN0ZWRCeVBhZ2VTY2FsZSk7CisKKyAgICAgICAgaWYgKGN1cnJl
bnRDaGlsZC5oYXNBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbigpIHx8IGN1cnJlbnRDaGls
ZC5oYXNEZXNjZW5kYW50c1dpdGhBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbigpKQorICAg
ICAgICAgICAgaGFzRGVzY2VuZGFudHNXaXRoQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24g
PSB0cnVlOwogICAgIH0KIAogICAgIGlmIChHcmFwaGljc0xheWVyQ0EqIHJlcGxpY2FMYXllciA9
IGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4obV9yZXBsaWNhTGF5ZXIpKQpAQCAtMTUwMCw2ICsx
NTE3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYQogICAgICAg
ICBtYXNrTGF5ZXItPmNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKGNoaWxkQ29tbWl0
U3RhdGUpOwogCiAgICAgc2V0SGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0ZWRDaGFuZ2VzKGZh
bHNlKTsKKyAgICBzZXRIYXNEZXNjZW5kYW50c1dpdGhBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1h
dGlvbihoYXNEZXNjZW5kYW50c1dpdGhBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbik7CiAK
ICAgICBib29sIGhhZERpcnR5UmVjdHMgPSBtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIERpcnR5UmVj
dHNDaGFuZ2VkOwogICAgIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKGNoaWxkQ29t
bWl0U3RhdGUpOwpAQCAtNDA4MCw2ICs0MDk4LDE0IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXRIYXNEZXNjZW5kYW50c1cKICAgICBtX2hhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hh
bmdlcyA9IHZhbHVlOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0SGFzQWNjZWxlcmF0
ZWRUcmFuc2Zvcm1BbmltYXRpb24oYm9vbCBoYXNBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlv
bikKK3sKKyAgICBpZiAobV9oYXNBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbiA9PSBoYXNB
Y2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1faGFz
QWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24gPSBoYXNBY2NlbGVyYXRlZFRyYW5zZm9ybUFu
aW1hdGlvbjsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTmVlZHNDb21wdXRlVmlzaWJs
ZUFuZENvdmVyYWdlUmVjdCwgRG9udFNjaGVkdWxlRmx1c2gpOworfQorCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKExheWVyQ2hhbmdlRmxhZ3MgZmxhZ3Ms
IFNjaGVkdWxlRmx1c2hPck5vdCBzY2hlZHVsZUZsdXNoKQogewogICAgIGJvb2wgaGFkVW5jb21t
aXR0ZWRDaGFuZ2VzID0gISFtX3VuY29tbWl0dGVkQ2hhbmdlczsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCShy
ZXZpc2lvbiAyMTU1MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgYm9vbCBhbmNlc3Rvckhhc1RyYW5zZm9ybUFuaW1hdGlvbiB7IGZhbHNlIH07
CiAgICAgICAgIGJvb2wgYW5jZXN0b3JJc1ZpZXdwb3J0Q29uc3RyYWluZWQgeyBmYWxzZSB9Owog
ICAgIH07CisgICAgYm9vbCBuZWVkc0NvbW1pdChjb25zdCBDb21taXRTdGF0ZSYpOwogICAgIHZv
aWQgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhjb25zdCBDb21taXRTdGF0ZSYsIGNvbnN0IFRyYW5z
Zm9ybVN0YXRlJiwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yID0gMSwgY29uc3QgRmxvYXRQb2ludCYg
cG9zaXRpb25SZWxhdGl2ZVRvQmFzZSA9IEZsb2F0UG9pbnQoKSwgYm9vbCBhZmZlY3RlZEJ5UGFn
ZVNjYWxlID0gZmFsc2UpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmbHVzaENvbXBvc2l0
aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CkBAIC01MDksNiArNTEwLDExIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBub3RlU3VibGF5ZXJzQ2hhbmdlZChTY2hlZHVsZUZsdXNoT3JO
b3QgPSBTY2hlZHVsZUZsdXNoKTsKICAgICB2b2lkIG5vdGVDaGFuZ2VzRm9yU2NhbGVTZW5zaXRp
dmVQcm9wZXJ0aWVzKCk7CiAKKyAgICBib29sIGhhc0FjY2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbjsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SGFzQWNjZWxlcmF0ZWRUcmFuc2Zvcm1Bbmlt
YXRpb24oYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNEZXNjZW5kYW50c1dpdGhBY2NlbGVy
YXRlZFRyYW5zZm9ybUFuaW1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVzY2VuZGFudHNX
aXRoQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb247IH0KKyAgICB2b2lkIHNldEhhc0Rlc2Nl
bmRhbnRzV2l0aEFjY2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9uKGJvb2wgYikgeyBtX2hhc0Rl
c2NlbmRhbnRzV2l0aEFjY2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9uID0gYjsgfQorCiAgICAg
dm9pZCBwcm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMoU2NoZWR1bGVGbHVzaE9yTm90ID0g
U2NoZWR1bGVGbHVzaCk7CiAKICAgICB2b2lkIHJlcGFpbnRMYXllckRpcnR5UmVjdHMoKTsKQEAg
LTU0MSwxMSArNTQ3LDEzIEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fY292ZXJhZ2VSZWN0
OyAvLyBBcmVhIGZvciB3aGljaCB3ZSBzaG91bGQgbWFpbnRhaW4gYmFja2luZyBzdG9yZSwgaW4g
dGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhpcyBsYXllci4KICAgICAKICAgICBDb250ZW50c0xh
eWVyUHVycG9zZSBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlIHsgTm9Db250ZW50c0xheWVyIH07Ci0g
ICAgYm9vbCBtX25lZWRzRnVsbFJlcGFpbnQgOiAxOwotICAgIGJvb2wgbV91c2luZ0JhY2tkcm9w
TGF5ZXJUeXBlIDogMTsKLSAgICBib29sIG1faXNWaWV3cG9ydENvbnN0cmFpbmVkIDogMTsKLSAg
ICBib29sIG1faW50ZXJzZWN0c0NvdmVyYWdlUmVjdCA6IDE7Ci0gICAgYm9vbCBtX2hhc0V2ZXJQ
YWludGVkIDogMTsKKyAgICBib29sIG1fbmVlZHNGdWxsUmVwYWludCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3VzaW5nQmFja2Ryb3BMYXllclR5cGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1Zp
ZXdwb3J0Q29uc3RyYWluZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pbnRlcnNlY3RzQ292ZXJh
Z2VSZWN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRXZlclBhaW50ZWQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9oYXNBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbiB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2hhc0Rlc2NlbmRhbnRzV2l0aEFjY2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9u
IHsgZmFsc2UgfTsKIAogICAgIENvbG9yIG1fY29udGVudHNTb2xpZENvbG9yOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2
aXNpb24gMjE1NTExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1Niw3ICs5NTYsOSBAQCB2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6dXBkYXRlR2VvbWV0cnkoCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
ID0gcmVuZGVyZXIoKS5zdHlsZSgpOwogICAgIC8vIFNldCB0cmFuc2Zvcm0gcHJvcGVydHksIGlm
IGl0IGlzIG5vdCBhbmltYXRpbmcuIFdlIGhhdmUgdG8gZG8gdGhpcyBoZXJlIGJlY2F1c2UgdGhl
IHRyYW5zZm9ybQogICAgIC8vIGlzIGFmZmVjdGVkIGJ5IHRoZSBsYXllciBkaW1lbnNpb25zLgot
ICAgIGlmICghcmVuZGVyZXIoKS5hbmltYXRpb24oKS5pc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1h
dGlvbk9uUmVuZGVyZXIocmVuZGVyZXIoKSwgQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIEFuaW1hdGlv
bkJhc2U6OlJ1bm5pbmcgfCBBbmltYXRpb25CYXNlOjpQYXVzZWQpKQorICAgIGJvb2wgaGFzQWNj
ZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24gPSByZW5kZXJlcigpLmFuaW1hdGlvbigpLmlzUnVu
bmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihyZW5kZXJlcigpLCBDU1NQcm9wZXJ0
eVRyYW5zZm9ybSwgQW5pbWF0aW9uQmFzZTo6UnVubmluZyB8IEFuaW1hdGlvbkJhc2U6OlBhdXNl
ZCk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRIYXNBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1h
dGlvbihoYXNBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbik7CisgICAgaWYgKCFoYXNBY2Nl
bGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbikKICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKHN0eWxl
KTsKIAogICAgIC8vIFNldCBvcGFjaXR5LCBpZiBpdCBpcyBub3QgYW5pbWF0aW5nLgo=
</data>
<flag name="review"
          id="329163"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308117</attachid>
            <date>2017-04-25 11:02:53 -0700</date>
            <delta_ts>2017-04-25 12:20:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>accelerated-animation-layer-invalidation-5.patch</filename>
            <type>text/plain</type>
            <size>6609</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTc0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA0LTI1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjE1NDY5
KTogW2lvcy1zaW11bGF0b3Itd2syXSBMYXlvdXRUZXN0IGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9h
bmltYXRpb24tYmFja2luZy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMDYwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zMTc3MTE3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBY2NlbGVyYXRlZCB0cmFuc2Zvcm0gYW5pbWF0aW9ucyBtb3ZlIHVuZGVybHlp
bmcgbGF5ZXJzIHdpdGhvdXQgaW52YWxpZGF0aW5nIEdyYXBoaWNzTGF5ZXJzLgorICAgICAgICBU
byB1cGRhdGUgdGlsZSBjb3ZlcmFnZSB3ZSBuZWVkIHRvIGNvbW1pdCBzdWNoIHN1YnRyZWVzIGV2
ZW4gaWYgdGhlcmUgYXJlIG5vdCBvdGhlciBjaGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6R3JhcGhpY3NMYXllckNBKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6bmVlZHNDb21taXQpOgorCisgICAgICAgICAgICBDb21taXQgc3VidHJlZXMgd2l0
aCBhY2NlbGVyYXRlZCB0cmFuc2Zvcm0gYW5pbWF0aW9ucy4KKyAgICAgICAgICAgIEZhY3RvciBp
bnRvIGEgZnVuY3Rpb24uCisKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVj
dXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisKKyAgICAgICAgICAgIFRyYWNrIGlmIGRlc2NlbmRhbnRz
IGhhZCBhbnkgYWNjZWxlcmF0ZWQgdHJhbnNmb3JtIGFuaW1hdGlvbnMgYWZ0ZXIgY29tbWl0Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6Omhhc0Rlc2NlbmRhbnRzV2l0aFJ1bm5pbmdU
cmFuc2Zvcm1BbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0SGFzRGVzY2VuZGFudHNXaXRoUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbnMpOgorCiAyMDE3
LTA0LTI1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
c291cmNlIExvYWQgU3RhdGlzdGljczogQ2xlYXIgbmV0d29yayBwcm9jZXNzIGNhY2hlIHdoZW4g
Y2xlYXJpbmcgc3RvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkocmV2aXNpb24gMjE1NTExKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzkwLDExICszOTAsNiBAQCBzdGF0aWMgTGF5ZXJEaXNwbGF5TGlz
dEhhc2hNYXAmIGxheWVyRGlzCiAKIEdyYXBoaWNzTGF5ZXJDQTo6R3JhcGhpY3NMYXllckNBKFR5
cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBHcmFwaGlj
c0xheWVyKGxheWVyVHlwZSwgY2xpZW50KQotICAgICwgbV9uZWVkc0Z1bGxSZXBhaW50KGZhbHNl
KQotICAgICwgbV91c2luZ0JhY2tkcm9wTGF5ZXJUeXBlKGZhbHNlKQotICAgICwgbV9pc1ZpZXdw
b3J0Q29uc3RyYWluZWQoZmFsc2UpCi0gICAgLCBtX2ludGVyc2VjdHNDb3ZlcmFnZVJlY3QoZmFs
c2UpCi0gICAgLCBtX2hhc0V2ZXJQYWludGVkKGZhbHNlKQogewogfQogCkBAIC0xNDEwLDExICsx
NDA1LDI4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRWaXNpYmxlQW5kQ292ZXIKICAgICB9
CiB9CiAKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpuZWVkc0NvbW1pdChjb25zdCBDb21taXRTdGF0
ZSYgY29tbWl0U3RhdGUpCit7CisgICAgaWYgKGNvbW1pdFN0YXRlLmFuY2VzdG9ySGFkQ2hhbmdl
cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaGFzRGVzY2VuZGFudHNXaXRoVW5jb21taXR0
ZWRDaGFuZ2VzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8vIEFjY2VsZXJhdGVkIHRy
YW5zZm9ybXMgbW92ZSB0aGUgdW5kZXJseWluZyBsYXllcnMgd2l0aG91dCBHcmFwaGljc0xheWVy
cyBnZXR0aW5nIGludmFsaWRhdGVkLgorICAgIGlmIChpc1J1bm5pbmdUcmFuc2Zvcm1BbmltYXRp
b24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGhhc0Rlc2NlbmRhbnRzV2l0aFJ1
bm5pbmdUcmFuc2Zvcm1BbmltYXRpb25zKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiAvLyByb290UmVsYXRpdmVUcmFuc2Zvcm1Gb3JTY2FsaW5nIGlz
IGEgdHJhbnNmb3JtIGZyb20gdGhlIHJvb3QsIGJ1dCBmb3IgbGF5ZXJzIHdpdGggdHJhbnNmb3Jt
IGFuaW1hdGlvbnMsIGl0IGNoZXJyeS1waWNrZWQgdGhlIHN0YXRlIG9mIHRoZQogLy8gYW5pbWF0
aW9uIHRoYXQgY29udHJpYnV0ZXMgbWF4aW1hbGx5IHRvIHRoZSBzY2FsZSAob24gZXZlcnkgbGF5
ZXIgd2l0aCBhbmltYXRpb25zIGRvd24gdGhlIGhpZXJhcmNoeSkuCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhjb25zdCBDb21taXRTdGF0ZSYgY29tbWl0U3Rh
dGUsIGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBzdGF0ZSwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBj
b25zdCBGbG9hdFBvaW50JiBwb3NpdGlvblJlbGF0aXZlVG9CYXNlLCBib29sIGFmZmVjdGVkQnlQ
YWdlU2NhbGUpCiB7Ci0gICAgaWYgKCFjb21taXRTdGF0ZS5hbmNlc3RvckhhZENoYW5nZXMgJiYg
IW1fdW5jb21taXR0ZWRDaGFuZ2VzICYmICFoYXNEZXNjZW5kYW50c1dpdGhVbmNvbW1pdHRlZENo
YW5nZXMoKSkKKyAgICBpZiAoIW5lZWRzQ29tbWl0KGNvbW1pdFN0YXRlKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgVHJhbnNmb3JtU3RhdGUgbG9jYWxTdGF0ZSA9IHN0YXRlOwpAQCAtMTQ4Nywx
MCArMTQ5OSwxNSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhCiAK
ICAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExheWVycyA9IGNoaWxkcmVu
KCk7CiAgICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgpOworCisgICAg
Ym9vbCBoYXNEZXNjZW5kYW50c1dpdGhSdW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9ucyA9IGZhbHNl
OwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewog
ICAgICAgICBHcmFwaGljc0xheWVyQ0EmIGN1cnJlbnRDaGlsZCA9IGRvd25jYXN0PEdyYXBoaWNz
TGF5ZXJDQT4oKmNoaWxkTGF5ZXJzW2ldKTsKICAgICAgICAgY3VycmVudENoaWxkLnJlY3Vyc2l2
ZUNvbW1pdENoYW5nZXMoY2hpbGRDb21taXRTdGF0ZSwgbG9jYWxTdGF0ZSwgcGFnZVNjYWxlRmFj
dG9yLCBiYXNlUmVsYXRpdmVQb3NpdGlvbiwgYWZmZWN0ZWRCeVBhZ2VTY2FsZSk7CisKKyAgICAg
ICAgaWYgKGN1cnJlbnRDaGlsZC5pc1J1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb24oKSB8fCBjdXJy
ZW50Q2hpbGQuaGFzRGVzY2VuZGFudHNXaXRoUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbnMoKSkK
KyAgICAgICAgICAgIGhhc0Rlc2NlbmRhbnRzV2l0aFJ1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb25z
ID0gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoR3JhcGhpY3NMYXllckNBKiByZXBsaWNhTGF5ZXIg
PSBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KG1fcmVwbGljYUxheWVyKSkKQEAgLTE1MDAsNiAr
MTUxNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGEKICAgICAg
ICAgbWFza0xheWVyLT5jb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycyhjaGlsZENvbW1p
dFN0YXRlKTsKIAogICAgIHNldEhhc0Rlc2NlbmRhbnRzV2l0aFVuY29tbWl0dGVkQ2hhbmdlcyhm
YWxzZSk7CisgICAgc2V0SGFzRGVzY2VuZGFudHNXaXRoUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlv
bnMoaGFzRGVzY2VuZGFudHNXaXRoUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbnMpOwogCiAgICAg
Ym9vbCBoYWREaXJ0eVJlY3RzID0gbV91bmNvbW1pdHRlZENoYW5nZXMgJiBEaXJ0eVJlY3RzQ2hh
bmdlZDsKICAgICBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycyhjaGlsZENvbW1pdFN0
YXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5oCShyZXZpc2lvbiAyMTU1MTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpA
QCAtMTU5LDYgKzE1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBhbmNlc3Rvckhhc1RyYW5z
Zm9ybUFuaW1hdGlvbiB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgYW5jZXN0b3JJc1ZpZXdwb3J0
Q29uc3RyYWluZWQgeyBmYWxzZSB9OwogICAgIH07CisgICAgYm9vbCBuZWVkc0NvbW1pdChjb25z
dCBDb21taXRTdGF0ZSYpOwogICAgIHZvaWQgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhjb25zdCBD
b21taXRTdGF0ZSYsIGNvbnN0IFRyYW5zZm9ybVN0YXRlJiwgZmxvYXQgcGFnZVNjYWxlRmFjdG9y
ID0gMSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb25SZWxhdGl2ZVRvQmFzZSA9IEZsb2F0UG9p
bnQoKSwgYm9vbCBhZmZlY3RlZEJ5UGFnZVNjYWxlID0gZmFsc2UpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7CkBAIC01MDksNiArNTEwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGVTdWJsYXllcnND
aGFuZ2VkKFNjaGVkdWxlRmx1c2hPck5vdCA9IFNjaGVkdWxlRmx1c2gpOwogICAgIHZvaWQgbm90
ZUNoYW5nZXNGb3JTY2FsZVNlbnNpdGl2ZVByb3BlcnRpZXMoKTsKIAorICAgIGJvb2wgaGFzRGVz
Y2VuZGFudHNXaXRoUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X2hhc0Rlc2NlbmRhbnRzV2l0aFJ1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb25zOyB9CisgICAgdm9p
ZCBzZXRIYXNEZXNjZW5kYW50c1dpdGhSdW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9ucyhib29sIGIp
IHsgbV9oYXNEZXNjZW5kYW50c1dpdGhSdW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9ucyA9IGI7IH0K
KwogICAgIHZvaWQgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKFNjaGVkdWxlRmx1c2hP
ck5vdCA9IFNjaGVkdWxlRmx1c2gpOwogCiAgICAgdm9pZCByZXBhaW50TGF5ZXJEaXJ0eVJlY3Rz
KCk7CkBAIC01NDEsMTEgKzU0NSwxMiBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2NvdmVy
YWdlUmVjdDsgLy8gQXJlYSBmb3Igd2hpY2ggd2Ugc2hvdWxkIG1haW50YWluIGJhY2tpbmcgc3Rv
cmUsIGluIHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHRoaXMgbGF5ZXIuCiAgICAgCiAgICAgQ29u
dGVudHNMYXllclB1cnBvc2UgbV9jb250ZW50c0xheWVyUHVycG9zZSB7IE5vQ29udGVudHNMYXll
ciB9OwotICAgIGJvb2wgbV9uZWVkc0Z1bGxSZXBhaW50IDogMTsKLSAgICBib29sIG1fdXNpbmdC
YWNrZHJvcExheWVyVHlwZSA6IDE7Ci0gICAgYm9vbCBtX2lzVmlld3BvcnRDb25zdHJhaW5lZCA6
IDE7Ci0gICAgYm9vbCBtX2ludGVyc2VjdHNDb3ZlcmFnZVJlY3QgOiAxOwotICAgIGJvb2wgbV9o
YXNFdmVyUGFpbnRlZCA6IDE7CisgICAgYm9vbCBtX25lZWRzRnVsbFJlcGFpbnQgeyBmYWxzZSB9
OworICAgIGJvb2wgbV91c2luZ0JhY2tkcm9wTGF5ZXJUeXBlIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faXNWaWV3cG9ydENvbnN0cmFpbmVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faW50ZXJzZWN0
c0NvdmVyYWdlUmVjdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V2ZXJQYWludGVkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faGFzRGVzY2VuZGFudHNXaXRoUnVubmluZ1RyYW5zZm9ybUFuaW1h
dGlvbnMgeyBmYWxzZSB9OwogCiAgICAgQ29sb3IgbV9jb250ZW50c1NvbGlkQ29sb3I7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>