<?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>193753</bug_id>
          
          <creation_ts>2019-01-23 18:35:53 -0800</creation_ts>
          <short_desc>Add &quot;frame hosting&quot; nodes to the scrolling tree</short_desc>
          <delta_ts>2019-01-24 13:50:03 -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>Layout and Rendering</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>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1497685</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-23 18:35:53 -0800</bug_when>
    <thetext>Add &quot;frame hosting&quot; nodes to the scrolling tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497686</commentid>
    <comment_count>1</comment_count>
      <attachid>359982</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-23 18:39:44 -0800</bug_when>
    <thetext>Created attachment 359982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497687</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-23 18:42:05 -0800</bug_when>
    <thetext>Attachment 359982 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497690</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-23 18:45:40 -0800</bug_when>
    <thetext>We may need to give these FrameHosting nodes some geometry (representing the offsets of the RenderIFrame from their scrolling node ancestor), so that the ScrollingTreeFrameScrollingNode&apos;s geometry doesn&apos;t need to account for offsets which belong to a different document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497784</commentid>
    <comment_count>4</comment_count>
      <attachid>359982</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-01-24 04:15:01 -0800</bug_when>
    <thetext>Comment on attachment 359982
Patch

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

&gt; Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.cpp:94
&gt;      case ScrollingNodeType::Subframe:
&gt;          return ScrollingTreeFrameScrollingNodeIOS::create(*this, nodeType, nodeID);
&gt; +    case ScrollingNodeType::FrameHosting:
&gt; +        return ScrollingTreeFrameHostingNode::create(*this, nodeID);

Is this code (web process side scrolling tree on iOS) actually ever used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497808</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-24 07:56:07 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #4)
&gt; Comment on attachment 359982 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=359982&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ios/ScrollingTreeIOS.cpp:94
&gt; &gt;      case ScrollingNodeType::Subframe:
&gt; &gt;          return ScrollingTreeFrameScrollingNodeIOS::create(*this, nodeType, nodeID);
&gt; &gt; +    case ScrollingNodeType::FrameHosting:
&gt; &gt; +        return ScrollingTreeFrameHostingNode::create(*this, nodeID);
&gt; 
&gt; Is this code (web process side scrolling tree on iOS) actually ever used?

No. I was hoping to use is for iOS WK1 (UIWebView) but that never happened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497810</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-24 08:11:25 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/240435/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497811</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-24 08:12:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/47516161&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497816</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-01-24 08:31:12 -0800</bug_when>
    <thetext>&gt; No. I was hoping to use is for iOS WK1 (UIWebView) but that never happened.

Let&apos;s remove it then to reduce general confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497936</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-24 13:50:03 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #8)
&gt; &gt; No. I was hoping to use is for iOS WK1 (UIWebView) but that never happened.
&gt; 
&gt; Let&apos;s remove it then to reduce general confusion.

I tried, and found that RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS inherits from WebCore/ScrollingTreeFrameScrollingNodeIOS so fixing this is a bit more involved.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359982</attachid>
            <date>2019-01-23 18:39:44 -0800</date>
            <delta_ts>2019-01-24 04:15:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193753-20190123183943.patch</filename>
            <type>text/plain</type>
            <size>48023</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM3ZmIzZWM4NDIwOGM4
MGFjNGZlMTRmNjY2ZTkzMzFiZDlhZjcwMy4uYmJmODk3MzJjODVjOTg0MGQyOTc4N2E1MjI2OGRj
Yzc3MWExMzg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTAxLTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCAiZnJhbWUg
aG9zdGluZyIgbm9kZXMgdG8gdGhlIHNjcm9sbGluZyB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM3NTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlOjpTY3JvbGxpbmdTdGF0ZUZyYW1l
SG9zdGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3Rp
bmdOb2RlOjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lSG9z
dGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUuaDogQWRkZWQuCisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZU5vZGU6OmlzRnJhbWVIb3N0aW5nTm9kZSBjb25zdCk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlVHJlZTo6Y3JlYXRlTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGU6OlNjcm9sbGluZ1RyZWVGcmFtZUhv
c3RpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdO
b2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlOjpkdW1w
UHJvcGVydGllcyBjb25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZUZyYW1lSG9zdGluZ05vZGUuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZU5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlOjpp
c0ZyYW1lSG9zdGluZ05vZGUgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9T
Y3JvbGxpbmdUcmVlSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJT1M6
OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZU1hYy5jcHA6CisgICAgICAgIChTY3JvbGxpbmdUcmVlTWFjOjpjcmVhdGVT
Y3JvbGxpbmdUcmVlTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6On5SZW5kZXJMYXll
ckJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpkZXRhY2hG
cm9tU2Nyb2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
b2xsQ29vcmRpbmF0aW9uUm9sZUZvck5vZGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6ZGV0YWNoU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcldpdGhSb2xlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV0YWNoU2Nyb2xsQ29v
cmRpbmF0ZWRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaDoKKwogMjAxOS0wMS0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21wb3NpdGluZyB1cGRhdGVzIG5lZWQgdG8g
cmVwYXJlbnQgc2Nyb2xsaW5nIHRyZWUgbm9kZXMgd2l0aCBhIGNoYW5nZWQgYW5jZXN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggYjVkOTNhNmI4ZWE4ZDliMjA1ZWIwYTg1MDc2ODdkNTNhMDZlYWUxMi4uMzMwMzU0
ZDZiYzYyY2FmMDFmNDE2ZGM5ZWRhMmNlY2M3ZWIwZTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MyBAQAorMjAxOS0wMS0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
KworICAgICAgICBDcmVhdGUgImZyYW1lIGhvc3RpbmciIG5vZGVzIGZvciB0aGUgc2Nyb2xsaW5n
IHRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
Mzc1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdo
ZW4gdGhlIHNjcm9sbGluZyB0cmVlIGNyb3NzZXMgZnJhbWUgYm91bmRhcmllcywgbXV0YXRpb25z
IGluIHRoZSBwYXJlbnQgZnJhbWUgY3VycmVudGx5CisgICAgICAgIHJlcXVpcmUgdGhlIGlmcmFt
ZSdzIHNjcm9sbGluZyBub2RlIHRvIGdldCByZXBhcmVudGVkIGluIGEgbmV3IGFuY2VzdG9yLCB3
aGljaCByZXF1aXJlcworICAgICAgICBhIGxheWVyIHRyZWUgd2FsayBvZiB0aGUgcGFyZW50IGZy
YW1lLiBUaGlzIGlzIGVycm9yLXByb25lLCBhbmQgbm90IHZlcnkgZnV0dXJlLXByb29mLgorCisg
ICAgICAgIEZpeCB0aGlzIGJ5IGludHJvZHVjaW5nICJmcmFtZSBob3N0aW5nIiBzY3JvbGxpbmcg
dHJlZSBub2Rlcy4gVGhlc2UgYXJlIG1vc3RseSBpbmVydAorICAgICAgICBub2RlcyB0aGF0IGFy
ZSBvd25lZCBieSB0aGUgUmVuZGVySUZyYW1lJ3MgbGF5ZXIgYmFja2luZyBpbiB0aGUgcGFyZW50
IGZyYW1lLCBhbmQgZXhpc3QKKyAgICAgICAgdG8gcHJvdmlkZSBhIGNvbnNpc3RlbnQgcGFyZW50
IG5vZGUgZm9yIHRoZSBzdWJmcmFtZSdzIHNjcm9sbGluZyBub2RlLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyB0aGUgbm9kZSB0eXBlcywgYnV0IGRvZXMgbm90IGluc3RhbnRpYXRlIHRoZW0g
eWV0LgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xs
aW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlPjo6ZW5jb2RlKToKKyAgICAgICAgKEFyZ3VtZW50Q29k
ZXI8U2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlPjo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YktpdDo6ZW5jb2RlTm9kZUFuZERlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktp
dDo6ZHVtcCk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyk6CisgICAgICAgICog
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nVHJlZTo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk6OmNvbm5lY3RTdGF0ZU5vZGVMYXllcnMpOgorCiAyMDE5LTAxLTIz
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgU3dpdGNoIHJl
bWFpbmluZyBDb3JlTWVkaWEgc29mdC1saW5raW5nIGluIFdlYktpdCBvdmVyIHRvIENvcmVNZWRp
YVNvZnRMaW5rLntjcHAsaH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZDJhZGIwZTU0MDlmMTg5OTljNDg3
NmMzZGQ5MjBiZjlkMzgwNWU1Zi4uYjI2ZDc1YTkwMTFmMTg1MGFiZGRhNTZlNzcyMTVhMzgyMTkx
ODlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE1NzUsNiArMTU3NSw3IEBAIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbExhdGNoaW5nU3RhdGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJh
aW50cy5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuY3BwCitwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
Tm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlLmNwcApAQCAtMTU4Myw2ICsxNTg0LDcgQEAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTdGlja3lOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZS5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2Rl
LmNwcAogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAK
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYWI0ZGY1MDRlMjY0MzNj
ZGUwZDFjMTQ0ZDQ2YjUzYzVjYTllOTI4Li4xMGMyNTk1NThjNmQwMTcwN2VlODVkZGQzNjRiYzJi
N2ViOGE0OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNTgsNiArMzU4LDggQEAKIAkJMEZDRjMzMkYwRjJCOUEyNTAwNEI2
Nzk1IC8qIFdlYkxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkNGMzMyQjBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkQzMDgwRjExN0NGN0U3
MDBBNzkxRjcgLyogUmVuZGVyRnJhbWVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQzMDgwRDExN0NGN0U3MDBBNzkxRjcgLyogUmVuZGVyRnJh
bWVCYXNlLmggKi87IH07CiAJCTBGRDMwOEQ2MTE3RDE2ODUwMEE3OTFGNyAvKiBSZW5kZXJJRnJh
bWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDMw
OEQ0MTE3RDE2ODQwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCAqLzsgfTsKKwkJMEZENDFFNjgy
MUY4MEMwRTAwMEMwMDZEIC8qIFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ0MUU2NjIxRjgwMjgy
MDAwQzAwNkQgLyogU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkQ0MUU2OTIxRjgwRDE0MDAw
QzAwNkQgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ0MUU2NTIxRjgwMjYxMDAwQzAwNkQg
LyogU2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZENzIzODIwRUM4QkQ5MzAwQ0E1REQ3IC8q
IEZsb2F0UXVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZENzIzODAwRUM4QkQ5MzAwQ0E1REQ3IC8qIEZsb2F0UXVhZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGREE3QzE3MTg4MzIyRUIwMEM5
NTRCNSAvKiBKU1RvdWNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkRBN0MxMTE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaC5oICovOyB9OwogCQkw
RkRBN0MxOTE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaEV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRBN0MxMzE4ODMyMkVCMDBDOTU0QjUg
LyogSlNUb3VjaEV2ZW50LmggKi87IH07CkBAIC01Nzk2LDYgKzU3OTgsMTAgQEAKIAkJMEZEMzA4
MEQxMTdDRjdFNzAwQTc5MUY3IC8qIFJlbmRlckZyYW1lQmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJGcmFtZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZEMzA4RDMxMTdEMTY4NDAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJRnJhbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQzMDhENDExN0QxNjg0MDBBNzkxRjcgLyogUmVu
ZGVySUZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcklGcmFt
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ0MUU2MzIxRjgwMjYwMDAwQzAw
NkQgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGRDQxRTY1MjFGODAyNjEwMDBDMDA2RCAvKiBTY3JvbGxpbmdTdGF0ZUZy
YW1lSG9zdGluZ05vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3Rp
bmdOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDQxRTY2MjFGODAyODIw
MDBDMDA2RCAvKiBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkQ0MUU2NzIxRjgwMjgyMDAwQzAwNkQgLyogU2Nyb2xsaW5nVHJlZUZyYW1lSG9z
dGluZ05vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGlu
Z05vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ3MjM4MDBFQzhCRDkz
MDBDQTVERDcgLyogRmxvYXRRdWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZsb2F0UXVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ3MjM4MTBFQzhC
RDkzMDBDQTVERDcgLyogRmxvYXRRdWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZsb2F0UXVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
REE3QzEwMTg4MzIyRUIwMEM5NTRCNSAvKiBKU1RvdWNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTVG91Y2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTY4OTIsNiArMTY4OTgsOCBAQAogCQkJCTUxQzYxQjA5MURFNTM2RTcwMDhBMjEyRCAv
KiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCAqLywKIAkJCQk5M0MzOEJGQzE2NDQ3M0M3
MDAwOTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuY3BwICovLAogCQkJCTkzQzM4QkZE
MTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oICovLAorCQkJCTBG
RDQxRTYzMjFGODAyNjAwMDBDMDA2RCAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUu
Y3BwICovLAorCQkJCTBGRDQxRTY1MjFGODAyNjEwMDBDMDA2RCAvKiBTY3JvbGxpbmdTdGF0ZUZy
YW1lSG9zdGluZ05vZGUuaCAqLywKIAkJCQkwRkVBM0U3QTE5MUIyRkM1MDAwRjFCNTUgLyogU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwICovLAogCQkJCTBGRUEzRTc5MTkxQjJG
QzUwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oICovLAogCQkJ
CTkzMUNCRDA2MTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZU5vZGUuY3BwICovLApA
QCAtMTY5MDgsNiArMTY5MTYsOCBAQAogCQkJCTFBRjYyRjIxMTREQUZFNzkwMDQxNTU2QyAvKiBT
Y3JvbGxpbmdUaHJlYWQuaCAqLywKIAkJCQkxQUFBRERBMTE0REI0MDlGMDBBRjY0QjMgLyogU2Ny
b2xsaW5nVHJlZS5jcHAgKi8sCiAJCQkJMUFBQUREQTIxNERCNDA5RjAwQUY2NEIzIC8qIFNjcm9s
bGluZ1RyZWUuaCAqLywKKwkJCQkwRkQ0MUU2NzIxRjgwMjgyMDAwQzAwNkQgLyogU2Nyb2xsaW5n
VHJlZUZyYW1lSG9zdGluZ05vZGUuY3BwICovLAorCQkJCTBGRDQxRTY2MjFGODAyODIwMDBDMDA2
RCAvKiBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5oICovLAogCQkJCTBGRUEzRTg1MTkx
QjNCRDcwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcCAqLywK
IAkJCQkwRkVBM0U4NjE5MUIzQkQ3MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZS5oICovLAogCQkJCTFBQUFEREUxMTREQzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdU
cmVlTm9kZS5jcHAgKi8sCkBAIC0zMTM5Miw2ICszMTQwMiw3IEBACiAJCQkJNTFDNjFCMEIxREU1
MzZFNzAwOEEyMTJEIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE3REVFRTgxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhCRkYxNjQ0NzNDNzAwMDkxRUIy
IC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkQ0MUU2
OTIxRjgwRDE0MDAwQzAwNkQgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVBM0U3QjE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUNCRDBEMTYxQTQ0
RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUEzRTg0MTkxQjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTQwMSw2ICszMTQxMiw3IEBACiAJCQkJMUFGNjJG
MjYxNERBRkVBMTAwNDE1NTZDIC8qIFNjcm9sbGluZ1RocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBQUREQTQxNERCNDA5RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzQzM4QzAzMTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWRO
b2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkQ0MUU2ODIxRjgwQzBFMDAwQzAwNkQgLyogU2Ny
b2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEzRTg4
MTkxQjNCRDcwMDBGMUI1NSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkM0RTQxMTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDNEE0MTUxNjI5
REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDkwOGMyMjE0OWNhMTNhMTM4ODExMjI1MWJiM2Jl
YmQ0OWQ3NzhlMTkuLmM0ZmFlZGQzZThmNTQ4NWIzMDBiZjQzZDNhYTZmMWVhYjkzMDE1NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAKQEAgLTQzMSw2ICs0MzEsOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSkKICAgICBjYXNlIFNjcm9s
bGluZ05vZGVUeXBlOjpTdWJmcmFtZToKICAgICAgICAgdHMgPDwgInN1YmZyYW1lLXNjcm9sbGlu
ZyI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OkZyYW1lSG9z
dGluZzoKKyAgICAgICAgdHMgPDwgImZyYW1lLWhvc3RpbmciOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxvdzoKICAgICAgICAgdHMgPDwgIm92ZXJm
bG93LXNjcm9sbGluZyI7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggZjdhMWM1NmUzNmE3
N2Q5M2MxOGJmOWI2OTA2ZGM5NjQ0YjQ4ZTI1Yy4uYWM5NzZlM2JjYTIyNmFiNWI3NTBlYjYwMGIw
Nzc1OGM2MDk2MWIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC01Nyw2ICs1Nyw3IEBAIHR5cGVkZWYgdWludDY0
X3QgU2Nyb2xsaW5nTm9kZUlEOwogZW51bSBjbGFzcyBTY3JvbGxpbmdOb2RlVHlwZSA6IHVpbnQ4
X3QgewogICAgIE1haW5GcmFtZSwKICAgICBTdWJmcmFtZSwKKyAgICBGcmFtZUhvc3RpbmcsCiAg
ICAgT3ZlcmZsb3csCiAgICAgRml4ZWQsCiAgICAgU3RpY2t5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3Rp
bmdOb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2ViZDMwYjkwZWE1ZDUyNjRjMWQ2YjkzNTU4YzBjYmQ3
NzUzZTMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlRnJh
bWVIb3N0aW5nTm9kZS5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgfHwgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVUcmVlLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1JlZjxTY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGU+IFNjcm9sbGluZ1N0YXRlRnJhbWVI
b3N0aW5nTm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBTY3JvbGxp
bmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1N0
YXRlRnJhbWVIb3N0aW5nTm9kZShzdGF0ZVRyZWUsIG5vZGVJRCkpOworfQorCitTY3JvbGxpbmdT
dGF0ZUZyYW1lSG9zdGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZShTY3Jv
bGxpbmdTdGF0ZVRyZWUmIHN0YXRlVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAgICA6
IFNjcm9sbGluZ1N0YXRlTm9kZShTY3JvbGxpbmdOb2RlVHlwZTo6RnJhbWVIb3N0aW5nLCBzdGF0
ZVRyZWUsIG5vZGVJRCkKK3sKKyAgICBBU1NFUlQoaXNGcmFtZUhvc3RpbmdOb2RlKCkpOworfQor
CitTY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0
aW5nTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUmIHN0YXRlTm9kZSwg
U2Nyb2xsaW5nU3RhdGVUcmVlJiBhZG9wdGl2ZVRyZWUpCisgICAgOiBTY3JvbGxpbmdTdGF0ZU5v
ZGUoc3RhdGVOb2RlLCBhZG9wdGl2ZVRyZWUpCit7Cit9CisKK1Njcm9sbGluZ1N0YXRlRnJhbWVI
b3N0aW5nTm9kZTo6flNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZSgpID0gZGVmYXVsdDsK
KworUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4gU2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2Rl
OjpjbG9uZShTY3JvbGxpbmdTdGF0ZVRyZWUmIGFkb3B0aXZlVHJlZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUoKnRoaXMsIGFkb3B0
aXZlVHJlZSkpOworfQorCit2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZTo6ZHVt
cFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2
aW9yIGJlaGF2aW9yKSBjb25zdAoreworICAgIHRzIDw8ICJGcmFtZSBob3N0aW5nIG5vZGUiOwor
ICAgIFNjcm9sbGluZ1N0YXRlTm9kZTo6ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9M
TElORykgfHwgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05v
ZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xYWZlM2U2Nzc0MDVmODI2YjM3MjRjMWFkNjhmYTExOTJjMWQ1YmZj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgfHwgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdO
b2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsYmFyOworCitjbGFz
cyBTY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5n
U3RhdGVOb2RlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNjcm9s
bGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZT4gY3JlYXRlKFNjcm9sbGluZ1N0YXRlVHJlZSYsIFNj
cm9sbGluZ05vZGVJRCk7CisgICAgUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4gY2xvbmUoU2Nyb2xs
aW5nU3RhdGVUcmVlJikgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdTdGF0ZUZy
YW1lSG9zdGluZ05vZGUoKTsKKworICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3Ry
ZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOwor
Citwcml2YXRlOgorICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZShTY3JvbGxpbmdT
dGF0ZVRyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0
aW5nTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUmLCBTY3JvbGxpbmdT
dGF0ZVRyZWUmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19TQ1JPTExJTkdfU1RBVEVfTk9ERShTY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGlu
Z05vZGUsIGlzRnJhbWVIb3N0aW5nTm9kZSgpKQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykgfHwgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAppbmRleCBhNWEyNjVjYTQ1
MTQ3MDE5MjM3ZjhlNTZmZWUwODcyZWZlODhjNzVlLi5jMjg4NzJmMWZjMmUwNjBiNzA3YjE1MDlh
OWI0NWRlMmJkNGQ2YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZU5vZGUuaApAQCAtMjAwLDYgKzIwMCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzU3RpY2t5Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZVR5cGUgPT0gU2Nyb2xsaW5n
Tm9kZVR5cGU6OlN0aWNreTsgfQogICAgIGJvb2wgaXNTY3JvbGxpbmdOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gaXNGcmFtZVNjcm9sbGluZ05vZGUoKSB8fCBpc092ZXJmbG93U2Nyb2xsaW5nTm9kZSgp
OyB9CiAgICAgYm9vbCBpc0ZyYW1lU2Nyb2xsaW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZVR5cGUgPT0gU2Nyb2xsaW5nTm9kZVR5cGU6Ok1haW5GcmFtZSB8fCBtX25vZGVUeXBlID09IFNj
cm9sbGluZ05vZGVUeXBlOjpTdWJmcmFtZTsgfQorICAgIGJvb2wgaXNGcmFtZUhvc3RpbmdOb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlVHlwZSA9PSBTY3JvbGxpbmdOb2RlVHlwZTo6RnJhbWVI
b3N0aW5nOyB9CiAgICAgYm9vbCBpc092ZXJmbG93U2Nyb2xsaW5nTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbm9kZVR5cGUgPT0gU2Nyb2xsaW5nTm9kZVR5cGU6Ok92ZXJmbG93OyB9CiAKICAgICB2
aXJ0dWFsIFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+IGNsb25lKFNjcm9sbGluZ1N0YXRlVHJlZSYg
YWRvcHRpdmVUcmVlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAppbmRleCBiMmJkMjY2ZWJiYTlhY2Y4NTNiYWUxZmRk
NTQxNzBlZGJlYjY5NmViLi5iMWEyNmI5Y2U5MGUzODNhZDIxYzMxNmYwMDRhOTdmZGFiMTdmYjE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlVHJlZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVP
dmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVN0aWNreU5v
ZGUuaCIKQEAgLTcxLDYgKzcyLDggQEAgUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4gU2Nyb2xsaW5n
U3RhdGVUcmVlOjpjcmVhdGVOb2RlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXAKICAgICBjYXNl
IFNjcm9sbGluZ05vZGVUeXBlOjpNYWluRnJhbWU6CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlw
ZTo6U3ViZnJhbWU6CiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlVHlwZSwgbm9kZUlEKTsKKyAgICBjYXNlIFNjcm9sbGlu
Z05vZGVUeXBlOjpGcmFtZUhvc3Rpbmc6CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdTdGF0ZUZy
YW1lSG9zdGluZ05vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAgICBjYXNlIFNjcm9sbGlu
Z05vZGVUeXBlOjpPdmVyZmxvdzoKICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgY2FzZSBTY3JvbGxp
bmdOb2RlVHlwZTo6Rml4ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzQ3MThlNTJjZTkxNzEzNDY1ZWMyZjRjNTAwZGM2ODA3MzU1ZjdiMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZUhv
c3RpbmdOb2RlLmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlLmgiCisKKyNp
ZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UmVmPFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlPiBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0
aW5nTm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05v
ZGVJRCBub2RlSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZUZy
YW1lSG9zdGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Cit9CisKK1Njcm9sbGluZ1Ry
ZWVGcmFtZUhvc3RpbmdOb2RlOjpTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZShTY3JvbGxp
bmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQorICAgIDogU2Ny
b2xsaW5nVHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGU6OkZyYW1lSG9z
dGluZywgbm9kZUlEKQoreworICAgIEFTU0VSVChpc0ZyYW1lSG9zdGluZ05vZGUoKSk7Cit9CisK
K1Njcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlOjp+U2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGlu
Z05vZGUoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGU6
OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikKK3sK
KyAgICAvLyBOb3RoaW5nIHRvIGRvLgorfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZUhvc3Rp
bmdOb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1Ry
ZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwg
Y29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit7CisgICAgaWYgKCFtX2NoaWxkcmVu
KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4p
CisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWRO
b2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxhdGl2ZURlbHRhKTsKK30KKwordm9pZCBTY3Jv
bGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMs
IFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAoreworICAg
IHRzIDw8ICJmcmFtZSBob3N0aW5nIG5vZGUiOworICAgIFNjcm9sbGluZ1RyZWVOb2RlOjpkdW1w
UHJvcGVydGllcyh0cywgYmVoYXZpb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2Rl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmFjOGI1YzkyZWUyYmVkMDFmZmQ3YTAxODViMjViYzZhMTRjYjY4NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVGcmFtZUhvc3RpbmdOb2RlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xs
aW5nVHJlZTsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUgOiBwdWJsaWMg
U2Nyb2xsaW5nVHJlZU5vZGUgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8U2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGU+IGNyZWF0ZShTY3JvbGxpbmdUcmVlJiwg
U2Nyb2xsaW5nTm9kZUlEKTsKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5n
Tm9kZSgpOworCitwcml2YXRlOgorICAgIFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlKFNj
cm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworCisgICAgdm9pZCBjb21taXRTdGF0ZUJl
Zm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIGZpbmFsOworICAgIHZvaWQg
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZs
b2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKSBmaW5hbDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVlQXNU
ZXh0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1NDUk9MTElOR19OT0RFKFNjcm9sbGluZ1RyZWVG
cmFtZUhvc3RpbmdOb2RlLCBpc0ZyYW1lSG9zdGluZ05vZGUoKSkKKworI2VuZGlmIC8vIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZU5vZGUuaAppbmRleCBiZjdmNjFhMzYxYjkzYjQ3ZGZlNDM0ZTA1ZjkzMjg4
Y2NmNTkwYmI2Li4yZjQ0MTVhYzg4NTI2NjljNzMwZDI4YTY1NzUxMTMxZTViYTJjOTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgK
QEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTdGlja3lOb2RlKCkgY29uc3Qg
eyByZXR1cm4gbm9kZVR5cGUoKSA9PSBTY3JvbGxpbmdOb2RlVHlwZTo6U3RpY2t5OyB9CiAgICAg
Ym9vbCBpc1Njcm9sbGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBpc0ZyYW1lU2Nyb2xsaW5nTm9k
ZSgpIHx8IGlzT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKCk7IH0KICAgICBib29sIGlzRnJhbWVTY3Jv
bGxpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gbm9kZVR5cGUoKSA9PSBTY3JvbGxpbmdOb2RlVHlw
ZTo6TWFpbkZyYW1lIHx8IG5vZGVUeXBlKCkgPT0gU2Nyb2xsaW5nTm9kZVR5cGU6OlN1YmZyYW1l
OyB9CisgICAgYm9vbCBpc0ZyYW1lSG9zdGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBub2RlVHlw
ZSgpID09IFNjcm9sbGluZ05vZGVUeXBlOjpGcmFtZUhvc3Rpbmc7IH0KICAgICBib29sIGlzT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gbm9kZVR5cGUoKSA9PSBTY3JvbGxp
bmdOb2RlVHlwZTo6T3ZlcmZsb3c7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRTdGF0ZUJl
Zm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmNwcApp
bmRleCA5MDg2MWFlZDUwYWE3ZDJjNjJmYjU3MDk1ZTRlN2I3Y2RmOTdhNjIxLi5hYzllODYxMTk3
NDM4ZDdkYzFhM2NjNzBiODNiNGU3NGVjZGQzMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xs
aW5nVGhyZWFkLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIgorI2luY2x1
ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2Rl
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCIKQEAgLTg5LDYgKzkw
LDggQEAgUmVmPFNjcm9sbGluZ1RyZWVOb2RlPiBTY3JvbGxpbmdUcmVlSU9TOjpjcmVhdGVTY3Jv
bGxpbmdUcmVlTm9kZShTY3JvbGxpbmdOb2RlVHkKICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBl
OjpNYWluRnJhbWU6CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6U3ViZnJhbWU6CiAgICAg
ICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpjcmVhdGUoKnRo
aXMsIG5vZGVUeXBlLCBub2RlSUQpOworICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OkZyYW1l
SG9zdGluZzoKKyAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlOjpj
cmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6T3ZlcmZs
b3c6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFj
LmNwcAppbmRleCA2MDEwZTNhMGYzZDRhMDNhM2Y0NzIxZWZhNjVkMzQ1ZThhZjZiY2RhLi5iNmNh
OTQ4Mzg4ODk4OTVkODljYTdkN2Y0ZWU4YzQ1YzUyNGUwZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMuY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU1hYy5oIgogCiAjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZUhv
c3RpbmdOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1h
Yy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaCIK
ICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgpAQCAtNTEsNiArNTIsOCBAQCBS
ZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVNYWM6OmNyZWF0ZVNjcm9sbGluZ1Ry
ZWVOb2RlKFNjcm9sbGluZ05vZGVUeQogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6Ok1haW5G
cmFtZToKICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpTdWJmcmFtZToKICAgICAgICAgcmV0
dXJuIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmNyZWF0ZSgqdGhpcywgbm9k
ZVR5cGUsIG5vZGVJRCk7CisgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6RnJhbWVIb3N0aW5n
OgorICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGU6OmNyZWF0ZSgq
dGhpcywgbm9kZUlEKTsKICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxvdzoKICAg
ICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OmNyZWF0
ZSgqdGhpcywgbm9kZUlEKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDljZjhjNjg2NTYwY2Y2NDk3ZWFj
MjUxNjFjZjAzZTVhMWEyY2NiZjQuLjM5NjQwZTdlYTBkYjZkYmJjYzQxYjM3YTE3ZWRkNmU3ZDYw
Y2FlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgUmVuZGVyTGF5ZXJCYWNraW5nOjp+UmVuZGVyTGF5
ZXJCYWNraW5nKCkKICAgICB1cGRhdGVCYWNrZ3JvdW5kTGF5ZXIoZmFsc2UpOwogICAgIHVwZGF0
ZU1hc2tpbmdMYXllcihmYWxzZSwgZmFsc2UpOwogICAgIHVwZGF0ZVNjcm9sbGluZ0xheWVycyhm
YWxzZSk7Ci0gICAgZGV0YWNoRnJvbVNjcm9sbGluZ0Nvb3JkaW5hdG9yKHsgU2Nyb2xsQ29vcmRp
bmF0aW9uUm9sZTo6U2Nyb2xsaW5nLCBTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpWaWV3cG9ydENv
bnN0cmFpbmVkIH0pOworICAgIGRldGFjaEZyb21TY3JvbGxpbmdDb29yZGluYXRvcih7IFNjcm9s
bENvb3JkaW5hdGlvblJvbGU6OlNjcm9sbGluZywgU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6Vmll
d3BvcnRDb25zdHJhaW5lZCwgU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6RnJhbWVIb3N0aW5nIH0p
OwogICAgIGRlc3Ryb3lHcmFwaGljc0xheWVycygpOwogfQogCkBAIC0xNzc2LDEzICsxNzc2LDE5
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpkZXRhY2hGcm9tU2Nyb2xsaW5nQ29vcmRpbmF0
b3IoT3B0aW9uU2V0PFNjcm9sbENvb3JkaW5hCiAgICAgaWYgKCFzY3JvbGxpbmdDb29yZGluYXRv
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKChyb2xlcy5jb250YWlucyhTY3JvbGxDb29y
ZGluYXRpb25Sb2xlOjpTY3JvbGxpbmcpKSAmJiBtX3Njcm9sbGluZ05vZGVJRCkgeworICAgIGlm
IChyb2xlcy5jb250YWlucyhTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpTY3JvbGxpbmcpICYmIG1f
c2Nyb2xsaW5nTm9kZUlEKSB7CiAgICAgICAgIExPRyhDb21wb3NpdGluZywgIkRldGFjaGluZyBT
Y3JvbGxpbmcgbm9kZSAlIiBQUkl1NjQsIG1fc2Nyb2xsaW5nTm9kZUlEKTsKICAgICAgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPmRldGFjaEZyb21TdGF0ZVRyZWUobV9zY3JvbGxpbmdOb2RlSUQp
OwogICAgICAgICBtX3Njcm9sbGluZ05vZGVJRCA9IDA7CiAgICAgfQotICAgIAotICAgIGlmICgo
cm9sZXMuY29udGFpbnMoU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6Vmlld3BvcnRDb25zdHJhaW5l
ZCkpICYmIG1fdmlld3BvcnRDb25zdHJhaW5lZE5vZGVJRCkgeworCisgICAgaWYgKHJvbGVzLmNv
bnRhaW5zKFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlNjcm9sbGluZykgJiYgbV9mcmFtZUhvc3Rp
bmdOb2RlSUQpIHsKKyAgICAgICAgTE9HKENvbXBvc2l0aW5nLCAiRGV0YWNoaW5nIEZyYW1lSG9z
dGluZyBub2RlICUiIFBSSXU2NCwgbV9mcmFtZUhvc3RpbmdOb2RlSUQpOworICAgICAgICBzY3Jv
bGxpbmdDb29yZGluYXRvci0+ZGV0YWNoRnJvbVN0YXRlVHJlZShtX2ZyYW1lSG9zdGluZ05vZGVJ
RCk7CisgICAgICAgIG1fZnJhbWVIb3N0aW5nTm9kZUlEID0gMDsKKyAgICB9CisKKyAgICBpZiAo
cm9sZXMuY29udGFpbnMoU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6Vmlld3BvcnRDb25zdHJhaW5l
ZCkgJiYgbV92aWV3cG9ydENvbnN0cmFpbmVkTm9kZUlEKSB7CiAgICAgICAgIExPRyhDb21wb3Np
dGluZywgIkRldGFjaGluZyBWaWV3cG9ydENvbnN0cmFpbmVkIG5vZGUgJSIgUFJJdTY0LCBtX3Zp
ZXdwb3J0Q29uc3RyYWluZWROb2RlSUQpOwogICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+
ZGV0YWNoRnJvbVN0YXRlVHJlZShtX3ZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQpOwogICAgICAg
ICBtX3ZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQgPSAwOwpAQCAtMzA4MSw2ICszMDg3LDggQEAg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyTGF5ZXJC
YWNraW5nJiBiYWNraW5nKQogICAgICAgICB0cyA8PCAiIHZpZXdwb3J0IGNvbnN0cmFpbmVkIHNj
cm9sbGluZyBub2RlICIgPDwgbm9kZUlEOwogICAgIGlmIChhdXRvIG5vZGVJRCA9IGJhY2tpbmcu
c2Nyb2xsaW5nTm9kZUlERm9yUm9sZShTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpTY3JvbGxpbmcp
KQogICAgICAgICB0cyA8PCAiIHNjcm9sbGluZyBub2RlICIgPDwgbm9kZUlEOworICAgIGlmIChh
dXRvIG5vZGVJRCA9IGJhY2tpbmcuc2Nyb2xsaW5nTm9kZUlERm9yUm9sZShTY3JvbGxDb29yZGlu
YXRpb25Sb2xlOjpGcmFtZUhvc3RpbmcpKQorICAgICAgICB0cyA8PCAiIGZyYW1lIGhvc3Rpbmcg
bm9kZSAiIDw8IG5vZGVJRDsKICAgICByZXR1cm4gdHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRleCA0YjAzMDFkMzg2ODNmZDY5ZTVj
ZTUwNDk1YTM0YjAxYTUxZGYwODgyLi5mN2M4OWQ2YTQxNDNmN2Y3NzE0ZWZjNjY2NDNmMzRmYjli
NmJjY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oCkBAIC0xMTIsNiArMTEyLDggQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKHJvbGUpIHsK
ICAgICAgICAgY2FzZSBTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpTY3JvbGxpbmc6CiAgICAgICAg
ICAgICByZXR1cm4gbV9zY3JvbGxpbmdOb2RlSUQ7CisgICAgICAgIGNhc2UgU2Nyb2xsQ29vcmRp
bmF0aW9uUm9sZTo6RnJhbWVIb3N0aW5nOgorICAgICAgICAgICAgcmV0dXJuIG1fZnJhbWVIb3N0
aW5nTm9kZUlEOwogICAgICAgICBjYXNlIFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlZpZXdwb3J0
Q29uc3RyYWluZWQ6CiAgICAgICAgICAgICByZXR1cm4gbV92aWV3cG9ydENvbnN0cmFpbmVkTm9k
ZUlEOwogICAgICAgICB9CkBAIC0xMjQsNiArMTI2LDkgQEAgcHVibGljOgogICAgICAgICBjYXNl
IFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlNjcm9sbGluZzoKICAgICAgICAgICAgIG1fc2Nyb2xs
aW5nTm9kZUlEID0gbm9kZUlEOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2Ny
b2xsQ29vcmRpbmF0aW9uUm9sZTo6RnJhbWVIb3N0aW5nOgorICAgICAgICAgICAgbV9mcmFtZUhv
c3RpbmdOb2RlSUQgPSBub2RlSUQ7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBT
Y3JvbGxDb29yZGluYXRpb25Sb2xlOjpWaWV3cG9ydENvbnN0cmFpbmVkOgogICAgICAgICAgICAg
bV92aWV3cG9ydENvbnN0cmFpbmVkTm9kZUlEID0gbm9kZUlEOwogICAgICAgICAgICAgc2V0SXNT
Y3JvbGxDb29yZGluYXRlZFdpdGhWaWV3cG9ydENvbnN0cmFpbmVkUm9sZShub2RlSUQpOwpAQCAt
MTMxLDcgKzEzNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgU2Ny
b2xsaW5nTm9kZUlEIHNjcm9sbGluZ05vZGVJREZvckNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxpbmdOb2RlSUQgPyBtX3Njcm9sbGluZ05vZGVJRCA6IG1fdmlld3BvcnRDb25zdHJh
aW5lZE5vZGVJRDsgfQorICAgIFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpbmdOb2RlSURGb3JDaGls
ZHJlbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mcmFtZUhvc3RpbmdOb2RlSUQg
PyBtX2ZyYW1lSG9zdGluZ05vZGVJRCA6IChtX3Njcm9sbGluZ05vZGVJRCA/IG1fc2Nyb2xsaW5n
Tm9kZUlEIDogbV92aWV3cG9ydENvbnN0cmFpbmVkTm9kZUlEKTsKKyAgICB9CiAKICAgICB2b2lk
IHNldElzU2Nyb2xsQ29vcmRpbmF0ZWRXaXRoVmlld3BvcnRDb25zdHJhaW5lZFJvbGUoYm9vbCk7
CiAKQEAgLTM3OCw2ICszODYsNyBAQCBwcml2YXRlOgogCiAgICAgU2Nyb2xsaW5nTm9kZUlEIG1f
dmlld3BvcnRDb25zdHJhaW5lZE5vZGVJRCB7IDAgfTsKICAgICBTY3JvbGxpbmdOb2RlSUQgbV9z
Y3JvbGxpbmdOb2RlSUQgeyAwIH07CisgICAgU2Nyb2xsaW5nTm9kZUlEIG1fZnJhbWVIb3N0aW5n
Tm9kZUlEIHsgMCB9OwogCiAgICAgYm9vbCBtX2FydGlmaWNpYWxseUluZmxhdGVkQm91bmRzIHsg
ZmFsc2UgfTsgLy8gYm91bmRzIGhhZCB0byBiZSBtYWRlIG5vbi16ZXJvIHRvIG1ha2UgdHJhbnNm
b3JtLW9yaWdpbiB3b3JrCiAgICAgYm9vbCBtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xheWVyIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggOWE3ODNkYzE2YzQ1MWIzYmQzZDQwMDM0OTU2NTA3MmQwZjgxYzhk
NS4uOTZjYmU0NjlkMTExMzA0NTkyYWIxZTM3MTUyMjFmNjJlMmM5OTg4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTM3
OTksNiArMzc5OSw4IEBAIHN0YXRpYyBpbmxpbmUgU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZSBzY3Jv
bGxDb29yZGluYXRpb25Sb2xlRm9yTm9kZVR5cGUoU2Nyb2xsaW5nCiAgICAgY2FzZSBTY3JvbGxp
bmdOb2RlVHlwZTo6U3ViZnJhbWU6CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6T3ZlcmZs
b3c6CiAgICAgICAgIHJldHVybiBTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpTY3JvbGxpbmc7Cisg
ICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6RnJhbWVIb3N0aW5nOgorICAgICAgICByZXR1cm4g
U2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6RnJhbWVIb3N0aW5nOwogICAgIGNhc2UgU2Nyb2xsaW5n
Tm9kZVR5cGU6OkZpeGVkOgogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreToKICAg
ICAgICAgcmV0dXJuIFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlZpZXdwb3J0Q29uc3RyYWluZWQ7
CkBAIC0zODMxLDYgKzM4MzMsMjIgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6YXR0YWNoU2Nyb2xsaW5nTm9kZShSZW5kZXJMYXllciYgbGF5ZXIsIFMKICAgICByZXR1
cm4gbm9kZUlEOwogfQogCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV0YWNoU2Nyb2xs
Q29vcmRpbmF0ZWRMYXllcldpdGhSb2xlKFJlbmRlckxheWVyJiBsYXllciwgU2Nyb2xsaW5nQ29v
cmRpbmF0b3ImIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLCBTY3JvbGxDb29yZGluYXRpb25Sb2xlIHJv
bGUpCit7CisgICAgYXV0byBub2RlSUQgPSBsYXllci5iYWNraW5nKCktPnNjcm9sbGluZ05vZGVJ
REZvclJvbGUocm9sZSk7CisgICAgaWYgKCFub2RlSUQpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gY2hpbGROb2RlcyA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLmNoaWxkcmVuT2ZOb2RlKG5v
ZGVJRCk7CisgICAgZm9yIChhdXRvIGNoaWxkTm9kZUlEIDogY2hpbGROb2RlcykgeworICAgICAg
ICAvLyBGSVhNRTogVGhlIGNoaWxkIG1pZ2h0IGJlIGluIGEgY2hpbGQgZnJhbWUuIE5lZWQgdG8g
ZG8gc29tZXRoaW5nIHRoYXQgY3Jvc3NlcyBmcmFtZSBib3VuZGFyaWVzLgorICAgICAgICBpZiAo
YXV0byogbGF5ZXIgPSBtX3Njcm9sbGluZ05vZGVUb0xheWVyTWFwLmdldChjaGlsZE5vZGVJRCkp
CisgICAgICAgICAgICBsYXllci0+c2V0TmVlZHNTY3JvbGxpbmdUcmVlVXBkYXRlKCk7CisgICAg
fQorCisgICAgbV9zY3JvbGxpbmdOb2RlVG9MYXllck1hcC5yZW1vdmUobm9kZUlEKTsKK30KKwog
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRldGFjaFNjcm9sbENvb3JkaW5hdGVkTGF5ZXIo
UmVuZGVyTGF5ZXImIGxheWVyLCBPcHRpb25TZXQ8U2Nyb2xsQ29vcmRpbmF0aW9uUm9sZT4gcm9s
ZXMpCiB7CiAgICAgYXV0byogYmFja2luZyA9IGxheWVyLmJhY2tpbmcoKTsKQEAgLTM4MzksMjgg
KzM4NTcsMTQgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRldGFjaFNjcm9sbENvb3Jk
aW5hdGVkTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyLCBPcHQKIAogICAgIGF1dG8qIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKIAotICAgIGF1dG8g
ZGlydHlEZXNjZW5kYW50U2Nyb2xsaW5nTGF5ZXJzID0gWyZdIChTY3JvbGxpbmdOb2RlSUQgbm9k
ZUlEKSB7Ci0gICAgICAgIGF1dG8gY2hpbGROb2RlcyA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5j
aGlsZHJlbk9mTm9kZShub2RlSUQpOwotICAgICAgICBmb3IgKGF1dG8gY2hpbGROb2RlSUQgOiBj
aGlsZE5vZGVzKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhlIGNoaWxkIG1pZ2h0IGJlIGlu
IGEgY2hpbGQgZnJhbWUuIE5lZWQgdG8gZG8gc29tZXRoaW5nIHRoYXQgY3Jvc3NlcyBmcmFtZSBi
b3VuZGFyaWVzLgotICAgICAgICAgICAgaWYgKGF1dG8qIGxheWVyID0gbV9zY3JvbGxpbmdOb2Rl
VG9MYXllck1hcC5nZXQoY2hpbGROb2RlSUQpKQotICAgICAgICAgICAgICAgIGxheWVyLT5zZXRO
ZWVkc1Njcm9sbGluZ1RyZWVVcGRhdGUoKTsKLSAgICAgICAgfQotICAgIH07CisgICAgaWYgKHJv
bGVzLmNvbnRhaW5zKFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlNjcm9sbGluZykpCisgICAgICAg
IGRldGFjaFNjcm9sbENvb3JkaW5hdGVkTGF5ZXJXaXRoUm9sZShsYXllciwgKnNjcm9sbGluZ0Nv
b3JkaW5hdG9yLCBTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpTY3JvbGxpbmcpOwogCi0gICAgaWYg
KHJvbGVzLmNvbnRhaW5zKFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlNjcm9sbGluZykpIHsKLSAg
ICAgICAgaWYgKFNjcm9sbGluZ05vZGVJRCBub2RlSUQgPSBiYWNraW5nLT5zY3JvbGxpbmdOb2Rl
SURGb3JSb2xlKFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlNjcm9sbGluZykpIHsKLSAgICAgICAg
ICAgIGRpcnR5RGVzY2VuZGFudFNjcm9sbGluZ0xheWVycyhub2RlSUQpOwotICAgICAgICAgICAg
bV9zY3JvbGxpbmdOb2RlVG9MYXllck1hcC5yZW1vdmUobm9kZUlEKTsKLSAgICAgICAgfQotICAg
IH0KKyAgICBpZiAocm9sZXMuY29udGFpbnMoU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6RnJhbWVI
b3N0aW5nKSkKKyAgICAgICAgZGV0YWNoU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcldpdGhSb2xlKGxh
eWVyLCAqc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OkZyYW1l
SG9zdGluZyk7CiAKLSAgICBpZiAocm9sZXMuY29udGFpbnMoU2Nyb2xsQ29vcmRpbmF0aW9uUm9s
ZTo6Vmlld3BvcnRDb25zdHJhaW5lZCkpIHsKLSAgICAgICAgaWYgKFNjcm9sbGluZ05vZGVJRCBu
b2RlSUQgPSBiYWNraW5nLT5zY3JvbGxpbmdOb2RlSURGb3JSb2xlKFNjcm9sbENvb3JkaW5hdGlv
blJvbGU6OlZpZXdwb3J0Q29uc3RyYWluZWQpKSB7Ci0gICAgICAgICAgICBkaXJ0eURlc2NlbmRh
bnRTY3JvbGxpbmdMYXllcnMobm9kZUlEKTsKLSAgICAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZVRv
TGF5ZXJNYXAucmVtb3ZlKG5vZGVJRCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKHJvbGVz
LmNvbnRhaW5zKFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlZpZXdwb3J0Q29uc3RyYWluZWQpKQor
ICAgICAgICBkZXRhY2hTY3JvbGxDb29yZGluYXRlZExheWVyV2l0aFJvbGUobGF5ZXIsICpzY3Jv
bGxpbmdDb29yZGluYXRvciwgU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6Vmlld3BvcnRDb25zdHJh
aW5lZCk7CiAKICAgICBiYWNraW5nLT5kZXRhY2hGcm9tU2Nyb2xsaW5nQ29vcmRpbmF0b3Iocm9s
ZXMpOwogfQpAQCAtMzk0OCw2ICszOTUyLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyLCBPcHQKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6
Ok1haW5GcmFtZToKICAgICAgICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN1YmZyYW1l
OgorICAgICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6RnJhbWVIb3N0aW5nOgogICAg
ICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6T3ZlcmZsb3c6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zOTk3LDYgKzQwMDIsMTggQEAgdm9pZCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXIoUmVuZGVyTGF5
ZXImIGxheWVyLCBPcHQKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBkZXRhY2hTY3Jv
bGxDb29yZGluYXRlZExheWVyKGxheWVyLCBTY3JvbGxDb29yZGluYXRpb25Sb2xlOjpTY3JvbGxp
bmcpOworCisgICAgaWYgKHJvbGVzLmNvbnRhaW5zKFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OkZy
YW1lSG9zdGluZykpIHsKKyAgICAgICAgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCA9IGF0dGFjaFNj
cm9sbGluZ05vZGUobGF5ZXIsIFNjcm9sbGluZ05vZGVUeXBlOjpGcmFtZUhvc3RpbmcsIHBhcmVu
dE5vZGVJRCk7CisgICAgICAgIGlmICghbm9kZUlEKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpMYXllcikKKyAg
ICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgYmFj
a2luZy0+Z3JhcGhpY3NMYXllcigpKTsKKworICAgICAgICBMT0coQ29tcG9zaXRpbmcsICJSZWdp
c3RlcmluZyBTY3JvbGxpbmcgc2Nyb2xsaW5nIG5vZGUgJSIgUFJJdTY0ICIgKGxheWVyICUiIFBS
SXU2NCAiKSBhcyBjaGlsZCBvZiAlIiBQUkl1NjQsIG5vZGVJRCwgYmFja2luZy0+Z3JhcGhpY3NM
YXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpLCBwYXJlbnROb2RlSUQpOworICAgIH0gZWxzZQorICAg
ICAgICBkZXRhY2hTY3JvbGxDb29yZGluYXRlZExheWVyKGxheWVyLCBTY3JvbGxDb29yZGluYXRp
b25Sb2xlOjpGcmFtZUhvc3RpbmcpOwogfQogCiBTY3JvbGxhYmxlQXJlYSogUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpzY3JvbGxhYmxlQXJlYUZvclNjcm9sbExheWVySUQoU2Nyb2xsaW5nTm9kZUlE
IG5vZGVJRCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaAppbmRleCBkNzNmZTFiOWE5OGMwOGU1ZDYzMTNlY2E2YWZlNzdlNzM2ODg3
MTRhLi5iZDFiZGI1ZjAwZDUzODEzNzMzZDQ1ZDUxYmY2ZTBkMmI0OGE1YjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC04NSw3
ICs4NSw4IEBAIGVudW0gY2xhc3MgQ29tcG9zaXRpbmdSZWFzb24gewogCiBlbnVtIGNsYXNzIFNj
cm9sbENvb3JkaW5hdGlvblJvbGUgewogICAgIFZpZXdwb3J0Q29uc3RyYWluZWQgPSAxIDw8IDAs
Ci0gICAgU2Nyb2xsaW5nICAgICAgICAgICA9IDEgPDwgMQorICAgIFNjcm9sbGluZyAgICAgICAg
ICAgPSAxIDw8IDEsCisgICAgRnJhbWVIb3N0aW5nICAgICAgICA9IDEgPDwgMiwKIH07CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNDc5LDYgKzQ4MCw3IEBAIHByaXZhdGU6CiAgICAg
U2Nyb2xsaW5nTm9kZUlEIGF0dGFjaFNjcm9sbGluZ05vZGUoUmVuZGVyTGF5ZXImLCBTY3JvbGxp
bmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIHBhcmVudE5vZGVJRCk7CiAgICAgdm9pZCB1cGRh
dGVTY3JvbGxDb29yZGluYXRlZExheWVyKFJlbmRlckxheWVyJiwgT3B0aW9uU2V0PFNjcm9sbENv
b3JkaW5hdGlvblJvbGU+LCBPcHRpb25TZXQ8U2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzPik7CiAg
ICAgdm9pZCBkZXRhY2hTY3JvbGxDb29yZGluYXRlZExheWVyKFJlbmRlckxheWVyJiwgT3B0aW9u
U2V0PFNjcm9sbENvb3JkaW5hdGlvblJvbGU+KTsKKyAgICB2b2lkIGRldGFjaFNjcm9sbENvb3Jk
aW5hdGVkTGF5ZXJXaXRoUm9sZShSZW5kZXJMYXllciYsIFNjcm9sbGluZ0Nvb3JkaW5hdG9yJiwg
U2Nyb2xsQ29vcmRpbmF0aW9uUm9sZSk7CiAgICAgdm9pZCByZWF0dGFjaFN1YmZyYW1lU2Nyb2xs
TGF5ZXJzKCk7CiAgICAgCiAgICAgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgY29t
cHV0ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50cyhSZW5kZXJMYXllciYpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4
IDQwNGE2MDBhZTAxODE4YzE1MDI2NDI4ZTQ3MmQ5MzU3ZjA0ZjFjNTguLmU5NWNhNWJhNTMzN2Qw
MzkyODQxYTExMTNiODZlMDY0YTE5YmQ5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmg+CkBAIC01MiwxNyArNTMsMjIg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZSYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJik7CiB9OwotICAgIAorCit0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZT4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgU2Nyb2xsaW5nU3RhdGVGcmFtZUhv
c3RpbmdOb2RlJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBTY3JvbGxpbmdT
dGF0ZUZyYW1lSG9zdGluZ05vZGUmKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
Jik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZSYpOwogfTsKLSAgICAKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGlu
Z05vZGUmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFNjcm9sbGluZ1N0YXRl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlJik7CiB9OwotICAgIAorCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlPiB7CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYpOwogICAgIHN0
YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUmKTsKQEAg
LTE3Miw2ICsxNzgsMTEgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGMKICAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuaG9y
aXpvbnRhbFNjcm9sbGJhckxheWVyKCkpOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xs
aW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZSYgbm9kZSkKK3sKKyAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSY+KG5vZGUpOworfQorCiB2b2lk
IEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGlu
Z05vZGUmIG5vZGUpCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxjb25zdCBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUmPihub2RlKTsKQEAgLTI5Miw2ICszMDMsMTQgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBTY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUmIG5vZGUpCit7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzdGF0aWNfY2FzdDxTY3JvbGxpbmdTdGF0ZU5vZGUmPihub2RlKSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIEFyZ3Vt
ZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUmIG5vZGUp
CiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aWNfY2FzdDxTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUmPihub2RlKSkpCkBAIC0zNTcsNiArMzc2LDkgQEAgc3RhdGljIHZvaWQgZW5j
b2RlTm9kZUFuZERlc2NlbmRhbnRzKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xs
aW5nU3RhdGUKICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpTdWJmcmFtZToKICAgICAgICAg
ZW5jb2RlciA8PCBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc3Rh
dGVOb2RlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6RnJh
bWVIb3N0aW5nOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJh
bWVIb3N0aW5nTm9kZT4oc3RhdGVOb2RlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTY3Jv
bGxpbmdOb2RlVHlwZTo6T3ZlcmZsb3c6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8U2Ny
b2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtNDQzLDYgKzQ2NSwxMCBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
VHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlPigqbmV3Tm9kZSkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpGcmFtZUhvc3Rpbmc6
CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRvd25jYXN0PFNjcm9sbGluZ1N0YXRl
RnJhbWVIb3N0aW5nTm9kZT4oKm5ld05vZGUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6
T3ZlcmZsb3c6CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRvd25jYXN0PFNjcm9s
bGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPigqbmV3Tm9kZSkpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTU4Niw2ICs2MTIsOSBAQCBzdGF0aWMgdm9pZCBkdW1wKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIG5vZGUsIGJvb2wgY2hhbmdl
ZFBybwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN1YmZyYW1lOgogICAgICAgICBkdW1w
KHRzLCBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSksIGNo
YW5nZWRQcm9wZXJ0aWVzT25seSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Nyb2xsaW5n
Tm9kZVR5cGU6OkZyYW1lSG9zdGluZzoKKyAgICAgICAgZHVtcCh0cywgZG93bmNhc3Q8U2Nyb2xs
aW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlPihub2RlKSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6T3ZlcmZsb3c6CiAg
ICAgICAgIGR1bXAodHMsIGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlPihub2RlKSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggYTM2
N2UxNWYwMDUzNmY4Y2I1Yzg1MDkwN2FiNDNhN2MzMTY2NzMwYS4uYTk1OWM5M2JjNzU5ZDFjOTg2
NjhjODFkYWRhMDFlMjY3ZjM1YjliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5LmNwcApAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQgUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyhTY3JvbGxpbmdT
dGF0ZVRyZWUmCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNjcm9sbGVk
Q29udGVudHNMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoc2Nyb2xsaW5nU3RhdGVOb2Rl
LnNjcm9sbGVkQ29udGVudHNMYXllcigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQorICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpGcmFtZUhvc3Rpbmc6CiAgICAgICAg
IGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OkZpeGVkOgogICAgICAgICBjYXNlIFNjcm9sbGluZ05v
ZGVUeXBlOjpTdGlja3k6CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdU
cmVlLmNwcAppbmRleCA2MmEzODZkY2Q5MjFkM2JkYjU0ZDIxNjdjNjc2NWJlYmFmOThjMDhiLi4y
NmQ5NzA5MzBhYjQ2YjdmMmU5NWI2MjY3MjE4MzhmYWRjMmM2ZjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVHJlZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ1RyZWUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJU
cmVlSG9zdC5oIgogI2luY2x1ZGUgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
QEAgLTEyMCw2ICsxMjEsOCBAQCBSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFJlbW90ZVNjcm9sbGlu
Z1RyZWU6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vZAogI2Vsc2UKICAgICAg
ICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OmNyZWF0
ZSgqdGhpcywgbm9kZVR5cGUsIG5vZGVJRCk7CiAjZW5kaWYKKyAgICBjYXNlIFNjcm9sbGluZ05v
ZGVUeXBlOjpGcmFtZUhvc3Rpbmc6CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRnJhbWVI
b3N0aW5nTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAgIGNhc2UgU2Nyb2xsaW5nTm9k
ZVR5cGU6Ok92ZXJmbG93OgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIHJldHVy
biBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpjcmVhdGUoKnRoaXMsIG5v
ZGVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHlJT1MubW0KaW5kZXggOWE0NTY3MTA0MTM4ODA0Y2UxODU0YTM2ODkwOWYwMTI3ZDE5
ZjEyOS4uNWRjMDExZjFlZDFmN2I0ZDg2MjRhMGIzNGU4YjNhMjJkZjcwYzgzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5t
bQpAQCAtODcsNiArODcsOCBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6
OmNvbm5lY3RTdGF0ZU5vZGVMYXllcnMoU2Nyb2xsaW5nU3RhdGVUcmVlJgogICAgICAgICAgICAg
aWYgKGN1cnJOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3Jv
bGxMYXllcikpCiAgICAgICAgICAgICAgICAgY3Vyck5vZGUtPnNldExheWVyKGxheWVyVHJlZUhv
c3QubGF5ZXJGb3JJRChjdXJyTm9kZS0+bGF5ZXIoKSkpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OkZyYW1lSG9zdGluZzoKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfQogfQo=
</data>
<flag name="review"
          id="376714"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>