<?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>208654</bug_id>
          
          <creation_ts>2020-03-05 10:39:29 -0800</creation_ts>
          <short_desc>When using the scrolling thread, push ScrollingNodeIDs onto PlatformCALayers</short_desc>
          <delta_ts>2020-03-05 14:59:13 -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>Scrolling</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>pdr</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1626185</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-05 10:39:29 -0800</bug_when>
    <thetext>When using the scrolling thread, push ScrollingNodeIDs onto PlatformCALayers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626189</commentid>
    <comment_count>1</comment_count>
      <attachid>392597</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-05 10:43:19 -0800</bug_when>
    <thetext>Created attachment 392597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626190</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-05 10:43:57 -0800</bug_when>
    <thetext>&lt;rdar://problem/60090331&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626216</commentid>
    <comment_count>3</comment_count>
      <attachid>392597</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-05 11:09:24 -0800</bug_when>
    <thetext>Comment on attachment 392597
Patch

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

Still r+ to keep things moving.

&gt; Source/WebCore/ChangeLog:12
&gt; +        We only need one ScrollingNodeID per platform layer, since a given platform layer only
&gt; +        ever has one scrolling role.

I don&apos;t think this is true. Specifically a single layer can meaningfully have both ViewportConstrained and Positioning roles and the scrolling tree code deals with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626218</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-03-05 11:13:49 -0800</bug_when>
    <thetext>We create a ScrollingTreePositionedNode with a ScrollingTreeFixedNode as its child in this case, both pointing to the same layer.

See this code in ScrollingTreeFixedNode::applyLayerPositions() dealing with it:

            if (is&lt;ScrollingTreePositionedNode&gt;(*ancestor)) {
                auto&amp; positioningAncestor = downcast&lt;ScrollingTreePositionedNode&gt;(*ancestor);
                // See if sticky node already handled this positioning node.
                // FIXME: Include positioning node information to sticky/fixed node to avoid these tests.
                if (lastStickyNode &amp;&amp; lastStickyNode-&gt;layer() == positioningAncestor.layer())
                    continue;
                if (positioningAncestor.layer() != m_layer)
                    overflowScrollDelta -= positioningAncestor.scrollDeltaSinceLastCommit();
                continue;
            }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626303</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-05 14:38:04 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #4)
&gt; We create a ScrollingTreePositionedNode with a ScrollingTreeFixedNode as its
&gt; child in this case, both pointing to the same layer.
&gt; 
&gt; See this code in ScrollingTreeFixedNode::applyLayerPositions() dealing with
&gt; it:
&gt; 
&gt;             if (is&lt;ScrollingTreePositionedNode&gt;(*ancestor)) {
&gt;                 auto&amp; positioningAncestor =
&gt; downcast&lt;ScrollingTreePositionedNode&gt;(*ancestor);
&gt;                 // See if sticky node already handled this positioning node.
&gt;                 // FIXME: Include positioning node information to
&gt; sticky/fixed node to avoid these tests.
&gt;                 if (lastStickyNode &amp;&amp; lastStickyNode-&gt;layer() ==
&gt; positioningAncestor.layer())
&gt;                     continue;
&gt;                 if (positioningAncestor.layer() != m_layer)
&gt;                     overflowScrollDelta -=
&gt; positioningAncestor.scrollDeltaSinceLastCommit();
&gt;                 continue;
&gt;             }

True, but for the purposes of overflow scroll hit-testing I don&apos;t care about fixed and positioned nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626315</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-05 14:59:13 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/257949/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392597</attachid>
            <date>2020-03-05 10:43:19 -0800</date>
            <delta_ts>2020-03-05 11:09:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208654-20200305104319.patch</filename>
            <type>text/plain</type>
            <size>20120</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI2MTg3Nzc5Y2JjZDg0
ODFkZTUxYTczZWY2Zjk5ZTc3YmIwZDNlYy4uNDc1NGNiODBhN2RlN2E3ZTVlOWIxZGM5YjMyNzIz
NWFkMWYzY2ZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTAzLTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdoZW4gdXNpbmcg
dGhlIHNjcm9sbGluZyB0aHJlYWQsIHB1c2ggU2Nyb2xsaW5nTm9kZUlEcyBvbnRvIFBsYXRmb3Jt
Q0FMYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwODY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBzY3JvbGxpbmcgdGhyZWFkIG9uIG1hY09TIHdpbGwgbmVlZCB0byBiZSBhYmxlIHRvIGFz
c29jaWF0ZSBsYXllcnMgd2l0aCBzY3JvbGxpbmcgbm9kZXMsCisgICAgICAgIHNvIHB1c2ggYSBT
Y3JvbGxpbmdOb2RlSUQgZG93biB0aHJvdWdoIEdyYXBoaWNzTGF5ZXIgdG8gUGxhdGZvcm1DQUxh
eWVyQ29jb2EuCisgICAgICAgIAorICAgICAgICBXZSBvbmx5IG5lZWQgb25lIFNjcm9sbGluZ05v
ZGVJRCBwZXIgcGxhdGZvcm0gbGF5ZXIsIHNpbmNlIGEgZ2l2ZW4gcGxhdGZvcm0gbGF5ZXIgb25s
eQorICAgICAgICBldmVyIGhhcyBvbmUgc2Nyb2xsaW5nIHJvbGUuCisKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWU6OnNjcm9sbGluZ1RyZWVBc1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6ZHVt
cFByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNjcm9sbGluZ05vZGVJ
RCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRTY3JvbGxpbmdO
b2RlSUQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldFNjcm9sbGluZ05vZGVJ
RCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNvbW1pdExheWVyQ2hhbmdl
c0JlZm9yZVN1YmxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVw
ZGF0ZVNjcm9sbGluZ05vZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FM
YXllci5oOiBzZXRFdmVudFJlZ2lvbigpIGRvZXNuJ3QgbmVlZCB0byBiZSBwdXJlIHZpcnR1YWwu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRF
dmVudFJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6ZXZl
bnRSZWdpb25Db250YWluc1BvaW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OmRldGFjaEZyb21TY3JvbGxpbmdDb29yZGluYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckJhY2tpbmc6OnNldFNjcm9sbGluZ05vZGVJREZvclJvbGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6ZW5zdXJlUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6YXR0YWNoU2Nyb2xsaW5nTm9kZSk6IEZvciBzdWJmcmFtZSBzY3JvbGxpbmcsIHRo
ZSBjbGlwTGF5ZXIKKyAgICAgICAgaXMgdGhlIGxheWVyIHRoYXQgZ2V0cyBhc3NvY2lhdGVkIHdp
dGggYSBzY3JvbGxpbmcgbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlU2Nyb2xsaW5nTm9kZUZvclNjcm9sbGluZ1Byb3h5Um9sZSk6CisKIDIwMjAt
MDMtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2hhbmdlIFNjcm9sbGluZ1RyZWVNYWMuY3BwIHRvIGEgLm1tIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggOGRhNzJjZGNhOTkx
OWFlMTAxNDU4ZDE1ODY5MDY4NzZlZWNmN2YzZC4uMTVhNDAyZmExOTg2NjE5ODRlMGZjMTE3ODVh
Mjg0ZWJjYjRjNDE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZS5jcHAKQEAgLTQ4MiwxNCArNDgyLDM4IEBAIFN0cmluZyBTY3JvbGxpbmdUcmVl
OjpzY3JvbGxpbmdUcmVlQXNUZXh0KFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJl
aGF2CiAgICAgICAgICAgICBtX3Jvb3ROb2RlLT5kdW1wKHRzLCBiZWhhdmlvciB8IFNjcm9sbGlu
Z1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5jbHVkZUxheWVyUG9zaXRpb25zKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNU
ZXh0QmVoYXZpb3JJbmNsdWRlTm9kZUlEcyAmJiAhbV9vdmVyZmxvd1JlbGF0ZWROb2Rlc01hcC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgc2NvcGUodHMp
OwotICAgICAgICAgICAgdHMgPDwgIm92ZXJmbG93IHJlbGF0ZWQgbm9kZXMiOwotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3Bl
KHRzKTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGl0IDogbV9vdmVyZmxvd1JlbGF0ZWRO
b2Rlc01hcCkKLSAgICAgICAgICAgICAgICAgICAgdHMgPDwgIlxuIiA8PCBpbmRlbnQgPDwgaXQu
a2V5IDw8ICIgLT4gIiA8PCBpdC52YWx1ZTsKKyAgICAgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTm9kZUlEcykgeworICAgICAgICAgICAg
aWYgKCFtX292ZXJmbG93UmVsYXRlZE5vZGVzTWFwLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgc2NvcGUodHMpOworICAgICAgICAgICAgICAgIHRz
IDw8ICJvdmVyZmxvdyByZWxhdGVkIG5vZGVzIjsKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBpdCA6IG1fb3ZlcmZsb3dSZWxhdGVkTm9kZXNN
YXApCisgICAgICAgICAgICAgICAgICAgICAgICB0cyA8PCAiXG4iIDw8IGluZGVudCA8PCBpdC5r
ZXkgPDwgIiAtPiAiIDw8IGl0LnZhbHVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQorICAgICAgICAgICAgaWYgKCFtX2Fj
dGl2ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2Rlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAg
ICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIHNjb3BlKHRzKTsKKyAgICAgICAgICAgICAgICB0cyA8
PCAib3ZlcmZsb3cgc2Nyb2xsIHByb3h5IG5vZGVzIjsKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsK
KyAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogbV9hY3RpdmVPdmVyZmxvd1Nj
cm9sbFByb3h5Tm9kZXMpCisgICAgICAgICAgICAgICAgICAgICAgICB0cyA8PCAiXG4iIDw8IGlu
ZGVudCA8PCBub2RlLT5zY3JvbGxpbmdOb2RlSUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9hY3RpdmVQb3NpdGlvbmVkTm9kZXMuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBzY29wZSh0
cyk7CisgICAgICAgICAgICAgICAgdHMgPDwgImFjdGl2ZSBwb3NpdGlvbmVkIG5vZGVzIjsKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNj
b3BlIGluZGVudFNjb3BlKHRzKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBub2RlIDogbV9hY3RpdmVQb3NpdGlvbmVkTm9kZXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICB0cyA8PCAiXG4iIDw8IGluZGVudCA8PCBub2RlLT5zY3JvbGxpbmdOb2RlSUQoKTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKFNDUk9MTElOR19U
SFJFQUQpCiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRzLnJlbGVhc2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5k
ZXggZDRlYTUwZGU3N2UxOTI0Y2E0ODI2NWIxNTgzMDc5ZWM5NzFmOTYyNi4uZTkxMzA2N2I0NGQy
ZDE2YmY0ZGNmOTRiMzIzZDhkZmRjZWUyNGQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTEwMDQsNiArMTAwNCwxMSBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXI6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBMYXll
clRyZWVBc1RleHRCZWhhdmlvciBiZWhhdgogICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIihldmVu
dCByZWdpb24iIDw8IG1fZXZlbnRSZWdpb247CiAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiKVxu
IjsKICAgICB9CisgICAgCisjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCisgICAgaWYgKG1f
c2Nyb2xsaW5nTm9kZUlEKQorICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIihzY3JvbGxpbmcgbm9k
ZSAiIDw8IG1fc2Nyb2xsaW5nTm9kZUlEIDw8ICIpXG4iOworI2VuZGlmCiAKICAgICBpZiAoYmVo
YXZpb3IgJiBMYXllclRyZWVBc1RleHRJbmNsdWRlUGFpbnRpbmdQaGFzZXMgJiYgcGFpbnRpbmdQ
aGFzZSgpKQogICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIihwYWludGluZ1BoYXNlcyAiIDw8IHBh
aW50aW5nUGhhc2UoKSA8PCAiKVxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCBiOGQ0OWZkNGE1ODRiMjNhOGZkY2ZlNGJkNmFj
ODZmZmJmYzA4NDNmLi5mMGFkZWFlNjQzYjIwM2M0NWUzMzQ0MDRkOGRjNGEyOWM5MDNlNjE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUg
IlJlZ2lvbi5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCisjaW5jbHVkZSAiU2Nyb2xs
VHlwZXMuaCIKICNpbmNsdWRlICJUaW1pbmdGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlRyYW5zZm9y
bU9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgpAQCAtMzIzLDYgKzMyNCwxMSBA
QCBwdWJsaWM6CiAgICAgU2Nyb2xsT2Zmc2V0IHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsT2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgU2Nyb2xs
T2Zmc2V0JiwgU2hvdWxkU2V0TmVlZHNEaXNwbGF5ID0gU2V0TmVlZHNEaXNwbGF5KTsKIAorI2lm
IEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQorICAgIFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpbmdO
b2RlSUQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ05vZGVJRDsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRTY3JvbGxpbmdOb2RlSUQoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkgeyBtX3Njcm9s
bGluZ05vZGVJRCA9IG5vZGVJRDsgfQorI2VuZGlmCisKICAgICAvLyBUaGUgcG9zaXRpb24gb2Yg
dGhlIGxheWVyICh0aGUgbG9jYXRpb24gb2YgaXRzIHRvcC1sZWZ0IGNvcm5lciBpbiBpdHMgcGFy
ZW50KQogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbjsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50
JiBwKSB7IG1fYXBwcm94aW1hdGVQb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsgbV9wb3NpdGlvbiA9
IHA7IH0KQEAgLTY4Myw2ICs2ODksMTAgQEAgcHJvdGVjdGVkOgogICAgIAogICAgIEZpbHRlck9w
ZXJhdGlvbnMgbV9maWx0ZXJzOwogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZHJvcEZpbHRl
cnM7CisgICAgCisjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCisgICAgU2Nyb2xsaW5nTm9k
ZUlEIG1fc2Nyb2xsaW5nTm9kZUlEIHsgMCB9OworI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0NP
TVBPU0lUSU5HKQogICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFs
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcAppbmRleCAwYWRhN2ZlZmU3N2YxOTNkODc0NmFjOTQwNWM1Y2Y0MmEw
ZGJmZGM0Li41YTg3MDlmNmI5MGQ4ZTgwNTg0MjMxMTAyNDVmNWYwYTQ3YWY2NTAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKQEAgLTEwMDIsNiArMTAwMiwxNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
RXZlbnRSZWdpb24oRXZlbnRSZWdpb24mJiBldmVudFJlZ2lvbikKICAgICBub3RlTGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQoRXZlbnRSZWdpb25DaGFuZ2VkLCBtX2lzQ29tbWl0dGluZ0NoYW5nZXMgPyBE
b250U2NoZWR1bGVGbHVzaCA6IFNjaGVkdWxlRmx1c2gpOwogfQogCisjaWYgRU5BQkxFKFNDUk9M
TElOR19USFJFQUQpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0U2Nyb2xsaW5nTm9kZUlEKFNj
cm9sbGluZ05vZGVJRCBub2RlSUQpCit7CisgICAgaWYgKG5vZGVJRCA9PSBtX3Njcm9sbGluZ05v
ZGVJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2Nyb2xsaW5n
Tm9kZUlEKG5vZGVJRCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFNjcm9sbGluZ05v
ZGVDaGFuZ2VkKTsKK30KKyNlbmRpZgorCiBib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2hvdWxkUmVw
YWludE9uU2l6ZUNoYW5nZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRyYXdzQ29udGVudCgpICYm
ICF0aWxlZEJhY2tpbmcoKTsKQEAgLTE4ODYsNiArMTg5NywxMSBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKENvbW1pdFN0YXRlJiBjb21t
aXRTdGF0ZQogICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIEV2ZW50UmVnaW9uQ2hhbmdl
ZCkKICAgICAgICAgdXBkYXRlRXZlbnRSZWdpb24oKTsKIAorI2lmIEVOQUJMRShTQ1JPTExJTkdf
VEhSRUFEKQorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFNjcm9sbGluZ05vZGVDaGFu
Z2VkKQorICAgICAgICB1cGRhdGVTY3JvbGxpbmdOb2RlKCk7CisjZW5kaWYKKwogICAgIGlmICht
X3VuY29tbWl0dGVkQ2hhbmdlcyAmIE1hc2tMYXllckNoYW5nZWQpIHsKICAgICAgICAgdXBkYXRl
TWFza0xheWVyKCk7CiAgICAgICAgIC8vIElmIHRoZSBtYXNrIGxheWVyIGJlY29tZXMgdGlsZWQg
aXQgY2FuIHNldCB0aGlzIGZsYWcgYWdhaW4uIENsZWFyIHRoZSBmbGFnIHNvIHRoYXQKQEAgLTI3
NDIsNiArMjc1OCwxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlRXZlbnRSZWdpb24o
KQogICAgIG1fbGF5ZXItPnNldEV2ZW50UmVnaW9uKGV2ZW50UmVnaW9uKCkpOwogfQogCisjaWYg
RU5BQkxFKFNDUk9MTElOR19USFJFQUQpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU2Ny
b2xsaW5nTm9kZSgpCit7CisgICAgbV9sYXllci0+c2V0U2Nyb2xsaW5nTm9kZUlEKHNjcm9sbGlu
Z05vZGVJRCgpKTsKK30KKyNlbmRpZgorCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTWFz
a0xheWVyKCkKIHsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIG1hc2tDQUxheWVyID0gbV9tYXNrTGF5
ZXIgPyBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KCptX21hc2tMYXllcikucHJpbWFyeUxheWVy
KCkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCAwM2Q1ZTJjYjhmMGMyNzYyODRlOTNlYjcyZTRl
NjJhOTBlMjY2NTZiLi43MjQzNDVlYWRiODEyZjVhYjk2YWE2MTkyNGYzMzY3NmRiZTk0NTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaApAQCAtMTI2LDYgKzEyNiw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNoYXBlTGF5ZXJXaW5kUnVsZShXaW5kUnVsZSkgb3ZlcnJpZGU7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEV2ZW50UmVnaW9uKEV2ZW50UmVnaW9uJiYpIG92ZXJyaWRl
OworI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0U2Nyb2xsaW5nTm9kZUlEKFNjcm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7CisjZW5kaWYKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoTW9ub3RvbmljVGltZSkg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVBbmltYXRpb25zKCkgb3Zl
cnJpZGU7CkBAIC00MTYsNiArNDE5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUNvbnRl
bnRzUmVjdHMoKTsKICAgICB2b2lkIHVwZGF0ZU1hc2tzVG9Cb3VuZHNSZWN0KCk7CiAgICAgdm9p
ZCB1cGRhdGVFdmVudFJlZ2lvbigpOworI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQorICAg
IHZvaWQgdXBkYXRlU2Nyb2xsaW5nTm9kZSgpOworI2VuZGlmCiAgICAgdm9pZCB1cGRhdGVNYXNr
TGF5ZXIoKTsKICAgICB2b2lkIHVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKTsKIApAQCAtNTM2LDYg
KzU0Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIFVzZXJJbnRlcmFjdGlvbkVuYWJsZWRDaGFuZ2Vk
ICAgICAgICAgICA9IDFMTFUgPDwgMzgsCiAgICAgICAgIE5lZWRzQ29tcHV0ZVZpc2libGVBbmRD
b3ZlcmFnZVJlY3QgICAgICA9IDFMTFUgPDwgMzksCiAgICAgICAgIEV2ZW50UmVnaW9uQ2hhbmdl
ZCAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgNDAsCisjaWYgRU5BQkxFKFNDUk9MTElO
R19USFJFQUQpCisgICAgICAgIFNjcm9sbGluZ05vZGVDaGFuZ2VkICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgNDEsCisjZW5kaWYKICAgICB9OwogICAgIHR5cGVkZWYgdWludDY0X3QgTGF5
ZXJDaGFuZ2VGbGFnczsKICAgICB2b2lkIGFkZFVuY29tbWl0dGVkQ2hhbmdlcyhMYXllckNoYW5n
ZUZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNGMzZDlkNDhhNDIyNDVkNWViNWUxZWM5MDNhOTBlZWQ0
MTEyNDQ0NS4uNzQxYTVmNmE2ZGM5NzYzNjI4ZjNjNDU4Mjc5Nzk0Y2Q0OWVhMjg0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgKQEAgLTIzNSw4ICsyMzUsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2luZFJ1bGUg
c2hhcGVXaW5kUnVsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hhcGVXaW5k
UnVsZShXaW5kUnVsZSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEV2ZW50UmVnaW9uKGNv
bnN0IEV2ZW50UmVnaW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRFdmVudFJlZ2lvbihj
b25zdCBFdmVudFJlZ2lvbiYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBldmVudFJlZ2lvbkNvbnRh
aW5zUG9pbnQoSW50UG9pbnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCisjaWYgRU5B
QkxFKFNDUk9MTElOR19USFJFQUQpCisgICAgdmlydHVhbCBTY3JvbGxpbmdOb2RlSUQgc2Nyb2xs
aW5nTm9kZUlEKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRTY3Jv
bGxpbmdOb2RlSUQoU2Nyb2xsaW5nTm9kZUlEKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCBH
cmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlIGN1c3RvbUFwcGVhcmFuY2UoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1c3RvbUFwcGVhcmFuY2UoR3JhcGhpY3NMYXll
cjo6Q3VzdG9tQXBwZWFyYW5jZSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2Eu
aAppbmRleCBkZDFlYjQ2Nzk0MmUwYmIwNjllYWY3OTZmNzcxY2IwOTMyZmNjOWNjLi44MWUwMjJm
MWJhMTA5YjgzMTA5NzBhNjc1M2EwM2Y2OTA0OTYyZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLmgKQEAgLTE2OCw3ICsxNjgsMTMgQEAgcHVibGljOgogICAgIEdyYXBoaWNzTGF5
ZXI6OkN1c3RvbUFwcGVhcmFuY2UgY3VzdG9tQXBwZWFyYW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fY3VzdG9tQXBwZWFyYW5jZTsgfQogICAgIHZvaWQgdXBkYXRlQ3VzdG9tQXBwZWFy
YW5jZShHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgc2V0RXZlbnRSZWdpb24oY29uc3QgRXZlbnRSZWdpb24mKSBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIHNldEV2ZW50UmVnaW9uKGNvbnN0IEV2ZW50UmVnaW9uJikgb3ZlcnJpZGU7CisgICAgYm9v
bCBldmVudFJlZ2lvbkNvbnRhaW5zUG9pbnQoSW50UG9pbnQpIGNvbnN0IG92ZXJyaWRlOworCisj
aWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCisgICAgU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGlu
Z05vZGVJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Nyb2xsaW5nTm9kZUlEOyB9Cisg
ICAgdm9pZCBzZXRTY3JvbGxpbmdOb2RlSUQoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkgb3ZlcnJp
ZGUgeyBtX3Njcm9sbGluZ05vZGVJRCA9IG5vZGVJRDsgfQorI2VuZGlmCiAKICAgICBHcmFwaGlj
c0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCgpIGNvbnN0IG92ZXJyaWRlOwog
CkBAIC0yMDAsNiArMjA2LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtQ0FMYXllckxpc3Q+IG1fY3VzdG9tU3VibGF5ZXJzOwogICAgIEdyYXBoaWNzTGF5ZXI6OkN1
c3RvbUFwcGVhcmFuY2UgbV9jdXN0b21BcHBlYXJhbmNlIHsgR3JhcGhpY3NMYXllcjo6Q3VzdG9t
QXBwZWFyYW5jZTo6Tm9uZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFJvdW5kZWRSZWN0
PiBtX3NoYXBlUm91bmRlZFJlY3Q7CisjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCisgICAg
U2Nyb2xsaW5nTm9kZUlEIG1fc2Nyb2xsaW5nTm9kZUlEIHsgMCB9OworI2VuZGlmCisgICAgRXZl
bnRSZWdpb24gbV9ldmVudFJlZ2lvbjsKICAgICBib29sIG1fd2FudHNEZWVwQ29sb3JCYWNraW5n
U3RvcmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1N1YnBpeGVsQW50aWFsaWFzZWRU
ZXh0IHsgZmFsc2UgfTsKICAgICBib29sIG1fYmFja2luZ1N0b3JlQXR0YWNoZWQgeyB0cnVlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDFhZmQ0ODhhMzczODA4MWQ4
MzYxYzI0ZWI1NTBjNTVkOGUyYTQ5MjguLmE0Y2Q5OTFlYjRlNTdhZWE3MmUwOWUyZDcyYzZjNWU3
ZDcyYTg3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC0xMDMyLDYg
KzEwMzIsMTYgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6dXBkYXRlQ3VzdG9tQXBwZWFy
YW5jZShHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmMKICNlbmRpZgogfQogCit2b2lkIFBs
YXRmb3JtQ0FMYXllckNvY29hOjpzZXRFdmVudFJlZ2lvbihjb25zdCBFdmVudFJlZ2lvbiYgZXZl
bnRSZWdpb24pCit7CisgICAgbV9ldmVudFJlZ2lvbiA9IGV2ZW50UmVnaW9uOworfQorCitib29s
IFBsYXRmb3JtQ0FMYXllckNvY29hOjpldmVudFJlZ2lvbkNvbnRhaW5zUG9pbnQoSW50UG9pbnQg
cG9pbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXZlbnRSZWdpb24uY29udGFpbnMocG9pbnQp
OworfQorCiBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBQbGF0Zm9ybUNBTGF5ZXJDb2Nv
YTo6ZW1iZWRkZWRWaWV3SUQoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5oCmluZGV4IDk5YmMwY2VkMDBhN2Y2Y2I1MzIyMTJmOGZiMjJm
MjRhYzI4NDBiMGUuLmVhYjU3N2Y1Nzc4MmRkMjhlYTg3NmZjYzg3MDNlNzQ2NmRhMDY4MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKQEAgLTE1Nyw4ICsxNTcsNiBAQCBwdWJsaWM6CiAgICAg
R3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9jdXN0b21BcHBlYXJhbmNlOyB9CiAgICAgdm9pZCB1cGRhdGVD
dXN0b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgY3VzdG9tQXBw
ZWFyYW5jZSkgb3ZlcnJpZGUgeyBtX2N1c3RvbUFwcGVhcmFuY2UgPSBjdXN0b21BcHBlYXJhbmNl
OyB9CiAKLSAgICB2b2lkIHNldEV2ZW50UmVnaW9uKGNvbnN0IEV2ZW50UmVnaW9uJikgb3ZlcnJp
ZGUgeyB9Ci0KICAgICBHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJ
RCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKaW5kZXggOWUyNjhhNGY0ZDliNWJjYTNhYzhlOGE1ZGFhMjdkZmRiMWI2Mjg2ZS4uNGIz
ZGE4ODE5MzdkYzBlOWRkZTM5ZDA1Nzk0MDc5ZDE5ZTFhMTI3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTIwNDIsNiArMjA0Miwx
MSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6ZGV0YWNoRnJvbVNjcm9sbGluZ0Nvb3JkaW5h
dG9yKE9wdGlvblNldDxTY3JvbGxDb29yZGluYQogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29t
cG9zaXRpbmcsIHN0cmVhbSA8PCAiRGV0YWNoaW5nIFNjcm9sbGluZyBub2RlICIgPDwgbV9zY3Jv
bGxpbmdOb2RlSUQpOwogICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+dW5wYXJlbnRDaGls
ZHJlbkFuZERlc3Ryb3lOb2RlKG1fc2Nyb2xsaW5nTm9kZUlEKTsKICAgICAgICAgbV9zY3JvbGxp
bmdOb2RlSUQgPSAwOworICAgICAgICAKKyNpZiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKKyAg
ICAgICAgaWYgKG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIpCisgICAgICAgICAgICBtX3Njcm9sbENv
bnRhaW5lckxheWVyLT5zZXRTY3JvbGxpbmdOb2RlSUQoMCk7CisjZW5kaWYKICAgICB9CiAKICAg
ICBpZiAocm9sZXMuY29udGFpbnMoU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6U2Nyb2xsaW5nUHJv
eHkpICYmIG1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKSB7CkBAIC0yMDY1LDYgKzIwNzAsMzggQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmRldGFjaEZyb21TY3JvbGxpbmdDb29yZGluYXRvcihP
cHRpb25TZXQ8U2Nyb2xsQ29vcmRpbmEKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbXBvc2l0
aW5nLCBzdHJlYW0gPDwgIkRldGFjaGluZyBQb3NpdGlvbmVkIG5vZGUgIiA8PCBtX3Bvc2l0aW9u
aW5nTm9kZUlEKTsKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnVucGFyZW50Q2hpbGRy
ZW5BbmREZXN0cm95Tm9kZShtX3Bvc2l0aW9uaW5nTm9kZUlEKTsKICAgICAgICAgbV9wb3NpdGlv
bmluZ05vZGVJRCA9IDA7CisjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCisgICAgICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0U2Nyb2xsaW5nTm9kZUlEKDApOworI2VuZGlmCisgICAgfQorfQor
Cit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0U2Nyb2xsaW5nTm9kZUlERm9yUm9sZShTY3Jv
bGxpbmdOb2RlSUQgbm9kZUlELCBTY3JvbGxDb29yZGluYXRpb25Sb2xlIHJvbGUpCit7CisgICAg
c3dpdGNoIChyb2xlKSB7CisgICAgY2FzZSBTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpTY3JvbGxp
bmc6CisgICAgICAgIG1fc2Nyb2xsaW5nTm9kZUlEID0gbm9kZUlEOworI2lmIEVOQUJMRShTQ1JP
TExJTkdfVEhSRUFEKQorICAgICAgICBpZiAobV9zY3JvbGxDb250YWluZXJMYXllcikKKyAgICAg
ICAgICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPnNldFNjcm9sbGluZ05vZGVJRChtX3Njcm9s
bGluZ05vZGVJRCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTY3JvbGxDb29y
ZGluYXRpb25Sb2xlOjpTY3JvbGxpbmdQcm94eToKKyAgICAgICAgLy8gVGhlc2Ugbm9kZUlEcyBh
cmUgc3RvcmVkIGluIG1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrLgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTY3JvbGxDb29yZGluYXRpb25S
b2xlOjpGcmFtZUhvc3Rpbmc6CisgICAgICAgIG1fZnJhbWVIb3N0aW5nTm9kZUlEID0gbm9kZUlE
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlZpZXdw
b3J0Q29uc3RyYWluZWQ6CisgICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZE5vZGVJRCA9IG5v
ZGVJRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpQ
b3NpdGlvbmluZzoKKyAgICAgICAgbV9wb3NpdGlvbmluZ05vZGVJRCA9IG5vZGVJRDsKKyNpZiBF
TkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRTY3Jv
bGxpbmdOb2RlSUQobV9wb3NpdGlvbmluZ05vZGVJRCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmgKaW5kZXggMGZiYjY2YTNmMmFmZjg1MjMwM2YzNzcwZWJmYjA0NGVkNTM1MGQ3Mi4uOGYz
MDZmMjUxMjY5NjU2ZDY4Y2IzZmQ0YjgxNzk0MWYzYjk1NDEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMTQ4LDI3ICsxNDgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHZvaWQgc2V0U2Nyb2xsaW5n
Tm9kZUlERm9yUm9sZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBTY3JvbGxDb29yZGluYXRpb25S
b2xlIHJvbGUpCi0gICAgewotICAgICAgICBzd2l0Y2ggKHJvbGUpIHsKLSAgICAgICAgY2FzZSBT
Y3JvbGxDb29yZGluYXRpb25Sb2xlOjpTY3JvbGxpbmc6Ci0gICAgICAgICAgICBtX3Njcm9sbGlu
Z05vZGVJRCA9IG5vZGVJRDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNjcm9s
bENvb3JkaW5hdGlvblJvbGU6OlNjcm9sbGluZ1Byb3h5OgotICAgICAgICAgICAgLy8gVGhlc2Ug
bm9kZUlEcyBhcmUgc3RvcmVkIGluIG1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrLgotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpGcmFtZUhvc3Rpbmc6Ci0gICAgICAgICAgICBtX2Zy
YW1lSG9zdGluZ05vZGVJRCA9IG5vZGVJRDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlZpZXdwb3J0Q29uc3RyYWluZWQ6Ci0gICAgICAg
ICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQgPSBub2RlSUQ7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpQb3NpdGlvbmluZzoK
LSAgICAgICAgICAgIG1fcG9zaXRpb25pbmdOb2RlSUQgPSBub2RlSUQ7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICB2b2lkIHNldFNjcm9sbGluZ05vZGVJREZvclJv
bGUoU2Nyb2xsaW5nTm9kZUlELCBTY3JvbGxDb29yZGluYXRpb25Sb2xlKTsKIAogICAgIFNjcm9s
bGluZ05vZGVJRCBzY3JvbGxpbmdOb2RlSURGb3JDaGlsZHJlbigpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4
IDYzNGZkNjBhMTcwNjA2M2E0MzA5NGQ0MDE4YTQ1NmQ4MTZiZTk4NzYuLjJlYTU4ZGQwMmZjMWQy
ODhmMjQ1MmRlZTBlMTA2OWQ2YTQyMGMzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0zODczLDcgKzM4NzMsNyBAQCB2
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5zdXJlUm9vdExheWVyKCkKICAgICAgICAgICAg
IG1fb3ZlcmZsb3dDb250cm9sc0hvc3RMYXllci0+c2V0TmFtZSgib3ZlcmZsb3cgY29udHJvbHMg
aG9zdCIpOwogCiAgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9IEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcywgR3JhcGhpY3NMYXll
cjo6VHlwZTo6U2Nyb2xsZWRDb250ZW50cyk7Ci0gICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVu
dHNMYXllci0+c2V0TmFtZSgic2Nyb2xsZWQgY29udGVudHMiKTsKKyAgICAgICAgICAgIG1fc2Ny
b2xsZWRDb250ZW50c0xheWVyLT5zZXROYW1lKCJmcmFtZSBzY3JvbGxlZCBjb250ZW50cyIpOwog
ICAgICAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPnNldEFuY2hvclBvaW50KHsgfSk7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNDIyMSw2ICs0MjIxLDEyIEBAIFNjcm9s
bGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmF0dGFjaFNjcm9sbGluZ05vZGUoUmVu
ZGVyTGF5ZXImIGxheWVyLCBTCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIGJhY2tpbmct
PnNldFNjcm9sbGluZ05vZGVJREZvclJvbGUobm9kZUlELCByb2xlKTsKKworI2lmIEVOQUJMRShT
Q1JPTExJTkdfVEhSRUFEKQorICAgIGlmIChub2RlVHlwZSA9PSBTY3JvbGxpbmdOb2RlVHlwZTo6
U3ViZnJhbWUpCisgICAgICAgIG1fY2xpcExheWVyLT5zZXRTY3JvbGxpbmdOb2RlSUQobm9kZUlE
KTsKKyNlbmRpZgorCiAgICAgbV9zY3JvbGxpbmdOb2RlVG9MYXllck1hcC5hZGQobm9kZUlELCBt
YWtlV2Vha1B0cihsYXllcikpOwogCiAgICAgcmV0dXJuIG5vZGVJRDsKQEAgLTQ1MjgsNiArNDUz
NCwxMCBAQCBTY3JvbGxpbmdOb2RlSUQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3Jv
bGxpbmdOb2RlRm9yU2Nyb2xsaW5nUHJveHlSb2xlKAogICAgICAgICAgICAgcmV0dXJuIHRyZWVT
dGF0ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKTsKICAgICAgICAgfQogICAgICAgICBlbnRyeS5v
dmVyZmxvd1Njcm9sbFByb3h5Tm9kZUlEID0gbm9kZUlEOworI2lmIEVOQUJMRShTQ1JPTExJTkdf
VEhSRUFEKQorICAgICAgICBpZiAoZW50cnkuY2xpcHBpbmdMYXllcikKKyAgICAgICAgICAgIGVu
dHJ5LmNsaXBwaW5nTGF5ZXItPnNldFNjcm9sbGluZ05vZGVJRChub2RlSUQpOworI2VuZGlmCiAK
ICAgICAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyKQog
ICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMoZW50cnkub3Zl
cmZsb3dTY3JvbGxQcm94eU5vZGVJRCwgeyBlbnRyeS5jbGlwcGluZ0xheWVyLmdldCgpIH0pOwo=
</data>
<flag name="review"
          id="408000"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>